@tanstack/solid-router 1.121.0-alpha.22 → 1.121.0-alpha.28

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 (265) hide show
  1. package/dist/cjs/Asset.cjs +65 -21
  2. package/dist/cjs/Asset.cjs.map +1 -1
  3. package/dist/cjs/Asset.d.cts +2 -1
  4. package/dist/cjs/CatchBoundary.cjs +14 -15
  5. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  6. package/dist/cjs/ClientOnly.cjs +12 -14
  7. package/dist/cjs/ClientOnly.cjs.map +1 -1
  8. package/dist/cjs/ClientOnly.d.cts +0 -20
  9. package/dist/cjs/HeadContent.cjs +28 -23
  10. package/dist/cjs/HeadContent.cjs.map +1 -1
  11. package/dist/cjs/Match.cjs +167 -141
  12. package/dist/cjs/Match.cjs.map +1 -1
  13. package/dist/cjs/Matches.cjs +26 -24
  14. package/dist/cjs/Matches.cjs.map +1 -1
  15. package/dist/cjs/Matches.d.cts +1 -0
  16. package/dist/cjs/RouterProvider.cjs +5 -5
  17. package/dist/cjs/RouterProvider.cjs.map +1 -1
  18. package/dist/cjs/SafeFragment.cjs +2 -2
  19. package/dist/cjs/SafeFragment.cjs.map +1 -1
  20. package/dist/cjs/ScriptOnce.cjs +4 -9
  21. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  22. package/dist/cjs/ScriptOnce.d.cts +1 -1
  23. package/dist/cjs/Scripts.cjs +9 -13
  24. package/dist/cjs/Scripts.cjs.map +1 -1
  25. package/dist/cjs/ScrollRestoration.cjs +3 -4
  26. package/dist/cjs/ScrollRestoration.cjs.map +1 -1
  27. package/dist/cjs/Transitioner.cjs +9 -8
  28. package/dist/cjs/Transitioner.cjs.map +1 -1
  29. package/dist/cjs/awaited.cjs +2 -2
  30. package/dist/cjs/awaited.cjs.map +1 -1
  31. package/dist/cjs/fileRoute.cjs +5 -5
  32. package/dist/cjs/fileRoute.cjs.map +1 -1
  33. package/dist/cjs/index.cjs +0 -12
  34. package/dist/cjs/index.cjs.map +1 -1
  35. package/dist/cjs/index.d.cts +3 -6
  36. package/dist/cjs/lazyRouteComponent.cjs +6 -26
  37. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  38. package/dist/cjs/lazyRouteComponent.d.cts +1 -1
  39. package/dist/cjs/link.cjs +37 -31
  40. package/dist/cjs/link.cjs.map +1 -1
  41. package/dist/cjs/not-found.cjs +5 -7
  42. package/dist/cjs/not-found.cjs.map +1 -1
  43. package/dist/cjs/renderRouteNotFound.cjs +4 -4
  44. package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
  45. package/dist/cjs/route.cjs +16 -16
  46. package/dist/cjs/route.cjs.map +1 -1
  47. package/dist/cjs/route.d.cts +14 -5
  48. package/dist/cjs/router.cjs.map +1 -1
  49. package/dist/cjs/routerContext.cjs.map +1 -1
  50. package/dist/cjs/scroll-restoration.cjs +12 -6
  51. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  52. package/dist/cjs/ssr/RouterClient.cjs +45 -0
  53. package/dist/cjs/ssr/RouterClient.cjs.map +1 -0
  54. package/dist/cjs/ssr/RouterClient.d.cts +4 -0
  55. package/dist/cjs/ssr/RouterServer.cjs +56 -0
  56. package/dist/cjs/ssr/RouterServer.cjs.map +1 -0
  57. package/dist/cjs/ssr/RouterServer.d.cts +5 -0
  58. package/dist/cjs/ssr/client.cjs +5 -0
  59. package/dist/cjs/ssr/client.cjs.map +1 -0
  60. package/dist/cjs/ssr/client.d.cts +1 -0
  61. package/dist/cjs/ssr/defaultRenderHandler.cjs +18 -0
  62. package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -0
  63. package/dist/cjs/ssr/defaultRenderHandler.d.cts +1 -0
  64. package/dist/cjs/ssr/defaultStreamHandler.cjs +20 -0
  65. package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -0
  66. package/dist/cjs/ssr/defaultStreamHandler.d.cts +1 -0
  67. package/dist/cjs/ssr/renderRouterToStream.cjs +45 -0
  68. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -0
  69. package/dist/cjs/ssr/renderRouterToStream.d.cts +8 -0
  70. package/dist/cjs/ssr/renderRouterToString.cjs +43 -0
  71. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -0
  72. package/dist/cjs/ssr/renderRouterToString.d.cts +7 -0
  73. package/dist/cjs/ssr/server.cjs +20 -0
  74. package/dist/cjs/ssr/server.cjs.map +1 -0
  75. package/dist/cjs/ssr/server.d.cts +6 -0
  76. package/dist/cjs/useBlocker.cjs +41 -35
  77. package/dist/cjs/useBlocker.cjs.map +1 -1
  78. package/dist/cjs/useCanGoBack.cjs.map +1 -1
  79. package/dist/cjs/useLoaderData.cjs.map +1 -1
  80. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  81. package/dist/cjs/useLocation.cjs +1 -1
  82. package/dist/cjs/useLocation.cjs.map +1 -1
  83. package/dist/cjs/useMatch.cjs.map +1 -1
  84. package/dist/cjs/useNavigate.cjs +9 -3
  85. package/dist/cjs/useNavigate.cjs.map +1 -1
  86. package/dist/cjs/useParams.cjs.map +1 -1
  87. package/dist/cjs/useRouter.cjs +1 -1
  88. package/dist/cjs/useRouter.cjs.map +1 -1
  89. package/dist/cjs/useRouterState.cjs +3 -3
  90. package/dist/cjs/useRouterState.cjs.map +1 -1
  91. package/dist/cjs/useSearch.cjs.map +1 -1
  92. package/dist/cjs/utils.cjs +1 -1
  93. package/dist/cjs/utils.cjs.map +1 -1
  94. package/dist/esm/Asset.d.ts +2 -1
  95. package/dist/esm/Asset.js +60 -16
  96. package/dist/esm/Asset.js.map +1 -1
  97. package/dist/esm/CatchBoundary.js +1 -2
  98. package/dist/esm/CatchBoundary.js.map +1 -1
  99. package/dist/esm/ClientOnly.d.ts +0 -20
  100. package/dist/esm/ClientOnly.js +11 -13
  101. package/dist/esm/ClientOnly.js.map +1 -1
  102. package/dist/esm/HeadContent.js +23 -18
  103. package/dist/esm/HeadContent.js.map +1 -1
  104. package/dist/esm/Match.js +148 -122
  105. package/dist/esm/Match.js.map +1 -1
  106. package/dist/esm/Matches.d.ts +1 -0
  107. package/dist/esm/Matches.js +18 -16
  108. package/dist/esm/Matches.js.map +1 -1
  109. package/dist/esm/RouterProvider.js.map +1 -1
  110. package/dist/esm/SafeFragment.js.map +1 -1
  111. package/dist/esm/ScriptOnce.d.ts +1 -1
  112. package/dist/esm/ScriptOnce.js +2 -7
  113. package/dist/esm/ScriptOnce.js.map +1 -1
  114. package/dist/esm/Scripts.js +7 -11
  115. package/dist/esm/Scripts.js.map +1 -1
  116. package/dist/esm/ScrollRestoration.js +3 -4
  117. package/dist/esm/ScrollRestoration.js.map +1 -1
  118. package/dist/esm/Transitioner.js +9 -8
  119. package/dist/esm/Transitioner.js.map +1 -1
  120. package/dist/esm/awaited.js.map +1 -1
  121. package/dist/esm/fileRoute.js +5 -5
  122. package/dist/esm/fileRoute.js.map +1 -1
  123. package/dist/esm/index.d.ts +3 -6
  124. package/dist/esm/index.js +2 -8
  125. package/dist/esm/index.js.map +1 -1
  126. package/dist/esm/lazyRouteComponent.d.ts +1 -1
  127. package/dist/esm/lazyRouteComponent.js +2 -22
  128. package/dist/esm/lazyRouteComponent.js.map +1 -1
  129. package/dist/esm/link.js +34 -28
  130. package/dist/esm/link.js.map +1 -1
  131. package/dist/esm/not-found.js +2 -4
  132. package/dist/esm/not-found.js.map +1 -1
  133. package/dist/esm/renderRouteNotFound.js.map +1 -1
  134. package/dist/esm/route.d.ts +14 -5
  135. package/dist/esm/route.js +12 -12
  136. package/dist/esm/route.js.map +1 -1
  137. package/dist/esm/router.js.map +1 -1
  138. package/dist/esm/routerContext.js.map +1 -1
  139. package/dist/esm/scroll-restoration.js +10 -4
  140. package/dist/esm/scroll-restoration.js.map +1 -1
  141. package/dist/esm/ssr/RouterClient.d.ts +4 -0
  142. package/dist/esm/ssr/RouterClient.js +45 -0
  143. package/dist/esm/ssr/RouterClient.js.map +1 -0
  144. package/dist/esm/ssr/RouterServer.d.ts +5 -0
  145. package/dist/esm/ssr/RouterServer.js +56 -0
  146. package/dist/esm/ssr/RouterServer.js.map +1 -0
  147. package/dist/esm/ssr/client.d.ts +1 -0
  148. package/dist/esm/ssr/client.js +5 -0
  149. package/dist/esm/ssr/client.js.map +1 -0
  150. package/dist/esm/ssr/defaultRenderHandler.d.ts +1 -0
  151. package/dist/esm/ssr/defaultRenderHandler.js +18 -0
  152. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -0
  153. package/dist/esm/ssr/defaultStreamHandler.d.ts +1 -0
  154. package/dist/esm/ssr/defaultStreamHandler.js +20 -0
  155. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -0
  156. package/dist/esm/ssr/renderRouterToStream.d.ts +8 -0
  157. package/dist/esm/ssr/renderRouterToStream.js +28 -0
  158. package/dist/esm/ssr/renderRouterToStream.js.map +1 -0
  159. package/dist/esm/ssr/renderRouterToString.d.ts +7 -0
  160. package/dist/esm/ssr/renderRouterToString.js +26 -0
  161. package/dist/esm/ssr/renderRouterToString.js.map +1 -0
  162. package/dist/esm/ssr/server.d.ts +6 -0
  163. package/dist/esm/ssr/server.js +14 -0
  164. package/dist/esm/ssr/server.js.map +1 -0
  165. package/dist/esm/useBlocker.js +41 -35
  166. package/dist/esm/useBlocker.js.map +1 -1
  167. package/dist/esm/useCanGoBack.js.map +1 -1
  168. package/dist/esm/useLoaderData.js.map +1 -1
  169. package/dist/esm/useLoaderDeps.js.map +1 -1
  170. package/dist/esm/useLocation.js +1 -1
  171. package/dist/esm/useLocation.js.map +1 -1
  172. package/dist/esm/useMatch.js.map +1 -1
  173. package/dist/esm/useNavigate.js +9 -3
  174. package/dist/esm/useNavigate.js.map +1 -1
  175. package/dist/esm/useParams.js.map +1 -1
  176. package/dist/esm/useRouter.js +1 -1
  177. package/dist/esm/useRouter.js.map +1 -1
  178. package/dist/esm/useRouterState.js +3 -3
  179. package/dist/esm/useRouterState.js.map +1 -1
  180. package/dist/esm/useSearch.js.map +1 -1
  181. package/dist/esm/utils.js +1 -1
  182. package/dist/esm/utils.js.map +1 -1
  183. package/dist/source/Asset.d.ts +2 -1
  184. package/dist/source/Asset.jsx +45 -7
  185. package/dist/source/Asset.jsx.map +1 -1
  186. package/dist/source/ClientOnly.d.ts +0 -20
  187. package/dist/source/ClientOnly.jsx +3 -29
  188. package/dist/source/ClientOnly.jsx.map +1 -1
  189. package/dist/source/HeadContent.jsx +13 -0
  190. package/dist/source/HeadContent.jsx.map +1 -1
  191. package/dist/source/Match.jsx +74 -61
  192. package/dist/source/Match.jsx.map +1 -1
  193. package/dist/source/Matches.d.ts +1 -0
  194. package/dist/source/Matches.jsx +14 -11
  195. package/dist/source/Matches.jsx.map +1 -1
  196. package/dist/source/ScriptOnce.d.ts +1 -1
  197. package/dist/source/ScriptOnce.jsx +2 -12
  198. package/dist/source/ScriptOnce.jsx.map +1 -1
  199. package/dist/source/Transitioner.jsx +8 -8
  200. package/dist/source/Transitioner.jsx.map +1 -1
  201. package/dist/source/index.d.ts +3 -6
  202. package/dist/source/index.jsx +1 -4
  203. package/dist/source/index.jsx.map +1 -1
  204. package/dist/source/lazyRouteComponent.d.ts +1 -1
  205. package/dist/source/lazyRouteComponent.jsx +7 -21
  206. package/dist/source/lazyRouteComponent.jsx.map +1 -1
  207. package/dist/source/link.jsx +22 -17
  208. package/dist/source/link.jsx.map +1 -1
  209. package/dist/source/not-found.jsx.map +1 -1
  210. package/dist/source/route.d.ts +14 -5
  211. package/dist/source/route.jsx.map +1 -1
  212. package/dist/source/scroll-restoration.jsx +9 -2
  213. package/dist/source/scroll-restoration.jsx.map +1 -1
  214. package/dist/source/ssr/RouterClient.d.ts +4 -0
  215. package/dist/source/ssr/RouterClient.jsx +28 -0
  216. package/dist/source/ssr/RouterClient.jsx.map +1 -0
  217. package/dist/source/ssr/RouterServer.d.ts +5 -0
  218. package/dist/source/ssr/RouterServer.jsx +38 -0
  219. package/dist/source/ssr/RouterServer.jsx.map +1 -0
  220. package/dist/source/ssr/client.d.ts +1 -0
  221. package/dist/source/ssr/client.js +2 -0
  222. package/dist/source/ssr/client.js.map +1 -0
  223. package/dist/source/ssr/defaultRenderHandler.d.ts +1 -0
  224. package/dist/source/ssr/defaultRenderHandler.jsx +9 -0
  225. package/dist/source/ssr/defaultRenderHandler.jsx.map +1 -0
  226. package/dist/source/ssr/defaultStreamHandler.d.ts +1 -0
  227. package/dist/source/ssr/defaultStreamHandler.jsx +10 -0
  228. package/dist/source/ssr/defaultStreamHandler.jsx.map +1 -0
  229. package/dist/source/ssr/renderRouterToStream.d.ts +8 -0
  230. package/dist/source/ssr/renderRouterToStream.jsx +17 -0
  231. package/dist/source/ssr/renderRouterToStream.jsx.map +1 -0
  232. package/dist/source/ssr/renderRouterToString.d.ts +7 -0
  233. package/dist/source/ssr/renderRouterToString.jsx +20 -0
  234. package/dist/source/ssr/renderRouterToString.jsx.map +1 -0
  235. package/dist/source/ssr/server.d.ts +6 -0
  236. package/dist/source/ssr/server.js +7 -0
  237. package/dist/source/ssr/server.js.map +1 -0
  238. package/dist/source/useBlocker.jsx +44 -27
  239. package/dist/source/useBlocker.jsx.map +1 -1
  240. package/dist/source/useNavigate.jsx +12 -2
  241. package/dist/source/useNavigate.jsx.map +1 -1
  242. package/package.json +34 -7
  243. package/src/Asset.tsx +76 -7
  244. package/src/ClientOnly.tsx +5 -32
  245. package/src/HeadContent.tsx +17 -0
  246. package/src/Match.tsx +103 -81
  247. package/src/Matches.tsx +28 -19
  248. package/src/ScriptOnce.tsx +1 -13
  249. package/src/Transitioner.tsx +7 -7
  250. package/src/index.tsx +1 -18
  251. package/src/lazyRouteComponent.tsx +6 -26
  252. package/src/link.tsx +29 -21
  253. package/src/not-found.tsx +1 -1
  254. package/src/route.tsx +16 -5
  255. package/src/scroll-restoration.tsx +10 -3
  256. package/src/ssr/RouterClient.tsx +43 -0
  257. package/src/ssr/RouterServer.tsx +60 -0
  258. package/src/ssr/client.ts +1 -0
  259. package/src/ssr/defaultRenderHandler.tsx +12 -0
  260. package/src/ssr/defaultStreamHandler.tsx +13 -0
  261. package/src/ssr/renderRouterToStream.tsx +36 -0
  262. package/src/ssr/renderRouterToString.tsx +31 -0
  263. package/src/ssr/server.ts +6 -0
  264. package/src/useBlocker.tsx +48 -32
  265. package/src/useNavigate.tsx +14 -2
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const web = require("solid-js/web");
4
- const Solid = require("solid-js");
3
+ const Solid = require("solid-js/web");
4
+ const Solid$1 = require("solid-js");
5
5
  const invariant = require("tiny-invariant");
6
6
  const warning = require("tiny-warning");
7
7
  const routerCore = require("@tanstack/router-core");
@@ -29,34 +29,29 @@ function _interopNamespaceDefault(e) {
29
29
  n.default = e;
30
30
  return Object.freeze(n);
31
31
  }
32
- const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid);
32
+ const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid$1);
33
33
  const Match = (props) => {
34
34
  const router = useRouter.useRouter();
35
- const routeId = useRouterState.useRouterState({
35
+ const matchState = useRouterState.useRouterState({
36
36
  select: (s) => {
37
- var _a;
38
- return (_a = s.matches.find((d) => d.id === props.matchId)) == null ? void 0 : _a.routeId;
37
+ const match = s.matches.find((d) => d.id === props.matchId);
38
+ invariant(match, `Could not find match for matchId "${props.matchId}". Please file an issue!`);
39
+ return routerCore.pick(match, ["routeId", "ssr", "_displayPending"]);
39
40
  }
40
41
  });
41
- invariant(routeId, `Could not find routeId for matchId "${props.matchId}". Please file an issue!`);
42
- const route = () => router.routesById[routeId()];
42
+ const route = () => router.routesById[matchState().routeId];
43
43
  const PendingComponent = () => route().options.pendingComponent ?? router.options.defaultPendingComponent;
44
44
  const routeErrorComponent = () => route().options.errorComponent ?? router.options.defaultErrorComponent;
45
45
  const routeOnCatch = () => route().options.onCatch ?? router.options.defaultOnCatch;
46
- const routeNotFoundComponent = () => {
47
- var _a;
48
- return route().isRoot ? (
49
- // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component
50
- route().options.notFoundComponent ?? ((_a = router.options.notFoundRoute) == null ? void 0 : _a.options.component)
51
- ) : route().options.notFoundComponent;
52
- };
53
- const ResolvedSuspenseBoundary = () => {
54
- var _a;
55
- return (
56
- // If we're on the root route, allow forcefully wrapping in suspense
57
- (!route().isRoot || route().options.wrapInSuspense) && (route().options.wrapInSuspense ?? PendingComponent() ?? ((_a = route().options.errorComponent) == null ? void 0 : _a.preload)) ? Solid__namespace.Suspense : SafeFragment.SafeFragment
58
- );
59
- };
46
+ const routeNotFoundComponent = () => route().isRoot ? (
47
+ // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component
48
+ route().options.notFoundComponent ?? router.options.notFoundRoute?.options.component
49
+ ) : route().options.notFoundComponent;
50
+ const resolvedNoSsr = matchState().ssr === false || matchState().ssr === "data-only";
51
+ const ResolvedSuspenseBoundary = () => (
52
+ // If we're on the root route, allow forcefully wrapping in suspense
53
+ (!route().isRoot || route().options.wrapInSuspense || resolvedNoSsr || matchState()._displayPending) && (route().options.wrapInSuspense ?? PendingComponent() ?? (route().options.errorComponent?.preload || resolvedNoSsr)) ? Solid__namespace.Suspense : SafeFragment.SafeFragment
54
+ );
60
55
  const ResolvedCatchBoundary = () => routeErrorComponent() ? CatchBoundary.CatchBoundary : SafeFragment.SafeFragment;
61
56
  const ResolvedNotFoundBoundary = () => routeNotFoundComponent() ? notFound.CatchNotFound : SafeFragment.SafeFragment;
62
57
  const resetKey = useRouterState.useRouterState({
@@ -64,57 +59,92 @@ const Match = (props) => {
64
59
  });
65
60
  const parentRouteId = useRouterState.useRouterState({
66
61
  select: (s) => {
67
- var _a;
68
62
  const index = s.matches.findIndex((d) => d.id === props.matchId);
69
- return (_a = s.matches[index - 1]) == null ? void 0 : _a.routeId;
63
+ return s.matches[index - 1]?.routeId;
70
64
  }
71
65
  });
72
- return [web.createComponent(matchContext.matchContext.Provider, {
73
- value: () => props.matchId,
66
+ const ShellComponent = route().isRoot ? route().options.shellComponent ?? SafeFragment.SafeFragment : SafeFragment.SafeFragment;
67
+ return Solid.createComponent(ShellComponent, {
74
68
  get children() {
75
- return web.createComponent(web.Dynamic, {
76
- get component() {
77
- return ResolvedSuspenseBoundary();
78
- },
79
- get fallback() {
80
- return web.createComponent(web.Dynamic, {
81
- get component() {
82
- return PendingComponent();
83
- }
84
- });
85
- },
69
+ return [Solid.createComponent(matchContext.matchContext.Provider, {
70
+ value: () => props.matchId,
86
71
  get children() {
87
- return web.createComponent(web.Dynamic, {
72
+ return Solid.createComponent(Solid.Dynamic, {
88
73
  get component() {
89
- return ResolvedCatchBoundary();
90
- },
91
- getResetKey: () => resetKey(),
92
- get errorComponent() {
93
- return routeErrorComponent() || CatchBoundary.ErrorComponent;
74
+ return ResolvedSuspenseBoundary();
94
75
  },
95
- onCatch: (error) => {
96
- var _a;
97
- if (routerCore.isNotFound(error)) throw error;
98
- warning(false, `Error in route match: ${props.matchId}`);
99
- (_a = routeOnCatch()) == null ? void 0 : _a(error);
76
+ get fallback() {
77
+ return Solid.createComponent(Solid.Dynamic, {
78
+ get component() {
79
+ return PendingComponent();
80
+ }
81
+ });
100
82
  },
101
83
  get children() {
102
- return web.createComponent(web.Dynamic, {
84
+ return Solid.createComponent(Solid.Dynamic, {
103
85
  get component() {
104
- return ResolvedNotFoundBoundary();
86
+ return ResolvedCatchBoundary();
105
87
  },
106
- fallback: (error) => {
107
- if (!routeNotFoundComponent() || error.routeId && error.routeId !== routeId || !error.routeId && !route().isRoot) throw error;
108
- return web.createComponent(web.Dynamic, web.mergeProps({
109
- get component() {
110
- return routeNotFoundComponent();
111
- }
112
- }, error));
88
+ getResetKey: () => resetKey(),
89
+ get errorComponent() {
90
+ return routeErrorComponent() || CatchBoundary.ErrorComponent;
91
+ },
92
+ onCatch: (error) => {
93
+ if (routerCore.isNotFound(error)) throw error;
94
+ warning(false, `Error in route match: ${props.matchId}`);
95
+ routeOnCatch()?.(error);
113
96
  },
114
97
  get children() {
115
- return web.createComponent(MatchInner, {
116
- get matchId() {
117
- return props.matchId;
98
+ return Solid.createComponent(Solid.Dynamic, {
99
+ get component() {
100
+ return ResolvedNotFoundBoundary();
101
+ },
102
+ fallback: (error) => {
103
+ if (!routeNotFoundComponent() || error.routeId && error.routeId !== matchState().routeId || !error.routeId && !route().isRoot) throw error;
104
+ return Solid.createComponent(Solid.Dynamic, Solid.mergeProps({
105
+ get component() {
106
+ return routeNotFoundComponent();
107
+ }
108
+ }, error));
109
+ },
110
+ get children() {
111
+ return Solid.createComponent(Solid__namespace.Switch, {
112
+ get children() {
113
+ return [Solid.createComponent(Solid__namespace.Match, {
114
+ when: resolvedNoSsr,
115
+ get children() {
116
+ return Solid.createComponent(Solid__namespace.Show, {
117
+ get when() {
118
+ return !router.isServer;
119
+ },
120
+ get fallback() {
121
+ return Solid.createComponent(Solid.Dynamic, {
122
+ get component() {
123
+ return PendingComponent();
124
+ }
125
+ });
126
+ },
127
+ get children() {
128
+ return Solid.createComponent(MatchInner, {
129
+ get matchId() {
130
+ return props.matchId;
131
+ }
132
+ });
133
+ }
134
+ });
135
+ }
136
+ }), Solid.createComponent(Solid__namespace.Match, {
137
+ when: !resolvedNoSsr,
138
+ get children() {
139
+ return Solid.createComponent(MatchInner, {
140
+ get matchId() {
141
+ return props.matchId;
142
+ }
143
+ });
144
+ }
145
+ })];
146
+ }
147
+ });
118
148
  }
119
149
  });
120
150
  }
@@ -122,16 +152,15 @@ const Match = (props) => {
122
152
  }
123
153
  });
124
154
  }
125
- });
155
+ }), Solid.memo(() => Solid.memo(() => parentRouteId() === routerCore.rootRouteId)() ? [Solid.createComponent(OnRendered, {}), Solid.createComponent(scrollRestoration.ScrollRestoration, {})] : null)];
126
156
  }
127
- }), web.memo(() => web.memo(() => parentRouteId() === routerCore.rootRouteId)() ? [web.createComponent(OnRendered, {}), web.createComponent(scrollRestoration.ScrollRestoration, {})] : null)];
157
+ });
128
158
  };
129
159
  function OnRendered() {
130
160
  const router = useRouter.useRouter();
131
161
  const location = useRouterState.useRouterState({
132
162
  select: (s) => {
133
- var _a;
134
- return (_a = s.resolvedLocation) == null ? void 0 : _a.state.key;
163
+ return s.resolvedLocation?.state.__TSR_key;
135
164
  }
136
165
  });
137
166
  Solid__namespace.createEffect(Solid__namespace.on([location], () => {
@@ -150,7 +179,7 @@ const MatchInner = (props) => {
150
179
  const match2 = s.matches[matchIndex];
151
180
  const routeId = match2.routeId;
152
181
  const remountFn = router.routesById[routeId].options.remountDeps ?? router.options.defaultRemountDeps;
153
- const remountDeps = remountFn == null ? void 0 : remountFn({
182
+ const remountDeps = remountFn?.({
154
183
  routeId,
155
184
  loaderDeps: match2.loaderDeps,
156
185
  params: match2._strictParams,
@@ -160,7 +189,7 @@ const MatchInner = (props) => {
160
189
  return {
161
190
  key,
162
191
  routeId,
163
- match: routerCore.pick(match2, ["id", "status", "error"])
192
+ match: routerCore.pick(match2, ["id", "status", "error", "_forcePending", "_displayPending"])
164
193
  };
165
194
  }
166
195
  });
@@ -169,59 +198,43 @@ const MatchInner = (props) => {
169
198
  const out = () => {
170
199
  const Comp = route().options.component ?? router.options.defaultComponent;
171
200
  if (Comp) {
172
- return web.createComponent(Comp, {});
201
+ return Solid.createComponent(Solid__namespace.Show, {
202
+ get when() {
203
+ return matchState().match.id;
204
+ },
205
+ keyed: true,
206
+ get children() {
207
+ return Solid.createComponent(Comp, {});
208
+ }
209
+ });
173
210
  }
174
- return web.createComponent(Outlet, {});
211
+ return Solid.createComponent(Outlet, {});
175
212
  };
176
- return web.createComponent(Solid__namespace.Switch, {
213
+ return Solid.createComponent(Solid__namespace.Switch, {
177
214
  get children() {
178
- return [web.createComponent(Solid__namespace.Match, {
215
+ return [Solid.createComponent(Solid__namespace.Match, {
179
216
  get when() {
180
- return match().status === "notFound";
217
+ return match()._displayPending;
181
218
  },
182
219
  children: (_) => {
183
- invariant(routerCore.isNotFound(match().error), "Expected a notFound error");
184
- return renderRouteNotFound.renderRouteNotFound(router, route(), match().error);
220
+ const [displayPendingResult] = Solid__namespace.createResource(() => router.getMatch(match().id)?.displayPendingPromise);
221
+ return Solid.memo(displayPendingResult);
185
222
  }
186
- }), web.createComponent(Solid__namespace.Match, {
223
+ }), Solid.createComponent(Solid__namespace.Match, {
187
224
  get when() {
188
- return match().status === "redirected";
225
+ return match()._forcePending;
189
226
  },
190
227
  children: (_) => {
191
- invariant(routerCore.isRedirect(match().error), "Expected a redirect error");
192
- const [loaderResult] = Solid__namespace.createResource(async () => {
193
- var _a;
194
- await new Promise((r) => setTimeout(r, 0));
195
- return (_a = router.getMatch(match().id)) == null ? void 0 : _a.loadPromise;
196
- });
197
- return web.memo(loaderResult);
228
+ const [minPendingResult] = Solid__namespace.createResource(() => router.getMatch(match().id)?.minPendingPromise);
229
+ return Solid.memo(minPendingResult);
198
230
  }
199
- }), web.createComponent(Solid__namespace.Match, {
200
- get when() {
201
- return match().status === "error";
202
- },
203
- children: (_) => {
204
- if (router.isServer) {
205
- const RouteErrorComponent = (route().options.errorComponent ?? router.options.defaultErrorComponent) || CatchBoundary.ErrorComponent;
206
- return web.createComponent(RouteErrorComponent, {
207
- get error() {
208
- return match().error;
209
- },
210
- info: {
211
- componentStack: ""
212
- }
213
- });
214
- }
215
- throw match().error;
216
- }
217
- }), web.createComponent(Solid__namespace.Match, {
231
+ }), Solid.createComponent(Solid__namespace.Match, {
218
232
  get when() {
219
233
  return match().status === "pending";
220
234
  },
221
235
  children: (_) => {
222
- var _a;
223
236
  const pendingMinMs = route().options.pendingMinMs ?? router.options.defaultPendingMinMs;
224
- if (pendingMinMs && !((_a = router.getMatch(match().id)) == null ? void 0 : _a.minPendingPromise)) {
237
+ if (pendingMinMs && !router.getMatch(match().id)?.minPendingPromise) {
225
238
  if (!router.isServer) {
226
239
  const minPendingPromise = routerCore.createControlledPromise();
227
240
  Promise.resolve().then(() => {
@@ -240,13 +253,50 @@ const MatchInner = (props) => {
240
253
  }
241
254
  }
242
255
  const [loaderResult] = Solid__namespace.createResource(async () => {
243
- var _a2;
244
256
  await new Promise((r) => setTimeout(r, 0));
245
- return (_a2 = router.getMatch(match().id)) == null ? void 0 : _a2.loadPromise;
257
+ return router.getMatch(match().id)?.loadPromise;
246
258
  });
247
- return web.memo(loaderResult);
259
+ return Solid.memo(loaderResult);
248
260
  }
249
- }), web.createComponent(Solid__namespace.Match, {
261
+ }), Solid.createComponent(Solid__namespace.Match, {
262
+ get when() {
263
+ return match().status === "notFound";
264
+ },
265
+ children: (_) => {
266
+ invariant(routerCore.isNotFound(match().error), "Expected a notFound error");
267
+ return renderRouteNotFound.renderRouteNotFound(router, route(), match().error);
268
+ }
269
+ }), Solid.createComponent(Solid__namespace.Match, {
270
+ get when() {
271
+ return match().status === "redirected";
272
+ },
273
+ children: (_) => {
274
+ invariant(routerCore.isRedirect(match().error), "Expected a redirect error");
275
+ const [loaderResult] = Solid__namespace.createResource(async () => {
276
+ await new Promise((r) => setTimeout(r, 0));
277
+ return router.getMatch(match().id)?.loadPromise;
278
+ });
279
+ return Solid.memo(loaderResult);
280
+ }
281
+ }), Solid.createComponent(Solid__namespace.Match, {
282
+ get when() {
283
+ return match().status === "error";
284
+ },
285
+ children: (_) => {
286
+ if (router.isServer) {
287
+ const RouteErrorComponent = (route().options.errorComponent ?? router.options.defaultErrorComponent) || CatchBoundary.ErrorComponent;
288
+ return Solid.createComponent(RouteErrorComponent, {
289
+ get error() {
290
+ return match().error;
291
+ },
292
+ info: {
293
+ componentStack: ""
294
+ }
295
+ });
296
+ }
297
+ throw match().error;
298
+ }
299
+ }), Solid.createComponent(Solid__namespace.Match, {
250
300
  get when() {
251
301
  return match().status === "success";
252
302
  },
@@ -261,10 +311,7 @@ const Outlet = () => {
261
311
  const router = useRouter.useRouter();
262
312
  const matchId = Solid__namespace.useContext(matchContext.matchContext);
263
313
  const routeId = useRouterState.useRouterState({
264
- select: (s) => {
265
- var _a;
266
- return (_a = s.matches.find((d) => d.id === matchId())) == null ? void 0 : _a.routeId;
267
- }
314
+ select: (s) => s.matches.find((d) => d.id === matchId())?.routeId
268
315
  });
269
316
  const route = () => router.routesById[routeId()];
270
317
  const parentGlobalNotFound = useRouterState.useRouterState({
@@ -277,69 +324,48 @@ const Outlet = () => {
277
324
  });
278
325
  const childMatchId = useRouterState.useRouterState({
279
326
  select: (s) => {
280
- var _a;
281
327
  const matches = s.matches;
282
328
  const index = matches.findIndex((d) => d.id === matchId());
283
- const v = (_a = matches[index + 1]) == null ? void 0 : _a.id;
329
+ const v = matches[index + 1]?.id;
284
330
  return v;
285
331
  }
286
332
  });
287
- return web.createComponent(Solid__namespace.Switch, {
333
+ return Solid.createComponent(Solid__namespace.Switch, {
288
334
  get children() {
289
- return [web.createComponent(Solid__namespace.Match, {
290
- get when() {
291
- return router.isShell;
292
- },
293
- get children() {
294
- return web.createComponent(Solid__namespace.Suspense, {
295
- get fallback() {
296
- return web.createComponent(web.Dynamic, {
297
- get component() {
298
- return router.options.defaultPendingComponent;
299
- }
300
- });
301
- },
302
- get children() {
303
- return web.createComponent(CatchBoundary.ErrorComponent, {
304
- error: new Error("ShellBoundaryError")
305
- });
306
- }
307
- });
308
- }
309
- }), web.createComponent(Solid__namespace.Match, {
335
+ return [Solid.createComponent(Solid__namespace.Match, {
310
336
  get when() {
311
337
  return parentGlobalNotFound();
312
338
  },
313
339
  get children() {
314
340
  return renderRouteNotFound.renderRouteNotFound(router, route(), void 0);
315
341
  }
316
- }), web.createComponent(Solid__namespace.Match, {
342
+ }), Solid.createComponent(Solid__namespace.Match, {
317
343
  get when() {
318
344
  return childMatchId();
319
345
  },
320
346
  children: (matchId2) => {
321
- return web.createComponent(Solid__namespace.Show, {
347
+ return Solid.createComponent(Solid__namespace.Show, {
322
348
  get when() {
323
349
  return matchId2() === routerCore.rootRouteId;
324
350
  },
325
351
  get fallback() {
326
- return web.createComponent(Match, {
352
+ return Solid.createComponent(Match, {
327
353
  get matchId() {
328
354
  return matchId2();
329
355
  }
330
356
  });
331
357
  },
332
358
  get children() {
333
- return web.createComponent(Solid__namespace.Suspense, {
359
+ return Solid.createComponent(Solid__namespace.Suspense, {
334
360
  get fallback() {
335
- return web.createComponent(web.Dynamic, {
361
+ return Solid.createComponent(Solid.Dynamic, {
336
362
  get component() {
337
363
  return router.options.defaultPendingComponent;
338
364
  }
339
365
  });
340
366
  },
341
367
  get children() {
342
- return web.createComponent(Match, {
368
+ return Solid.createComponent(Match, {
343
369
  get matchId() {
344
370
  return matchId2();
345
371
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Match.cjs","sources":["../../src/Match.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n createControlledPromise,\n getLocationChangeInfo,\n isNotFound,\n isRedirect,\n pick,\n rootRouteId,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound } from './not-found'\nimport { matchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { AnyRoute } from '@tanstack/router-core'\n\nexport const Match = (props: { matchId: string }) => {\n const router = useRouter()\n const routeId = useRouterState({\n select: (s) => {\n return s.matches.find((d) => d.id === props.matchId)?.routeId as string\n },\n })\n\n invariant(\n routeId,\n `Could not find routeId for matchId \"${props.matchId}\". Please file an issue!`,\n )\n\n const route: () => AnyRoute = () => router.routesById[routeId()]\n\n const PendingComponent = () =>\n route().options.pendingComponent ?? router.options.defaultPendingComponent\n\n const routeErrorComponent = () =>\n route().options.errorComponent ?? router.options.defaultErrorComponent\n\n const routeOnCatch = () =>\n route().options.onCatch ?? router.options.defaultOnCatch\n\n const routeNotFoundComponent = () =>\n route().isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n (route().options.notFoundComponent ??\n router.options.notFoundRoute?.options.component)\n : route().options.notFoundComponent\n\n const ResolvedSuspenseBoundary = () =>\n // If we're on the root route, allow forcefully wrapping in suspense\n (!route().isRoot || route().options.wrapInSuspense) &&\n (route().options.wrapInSuspense ??\n PendingComponent() ??\n (route().options.errorComponent as any)?.preload)\n ? Solid.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = () =>\n routeErrorComponent() ? CatchBoundary : SafeFragment\n\n const ResolvedNotFoundBoundary = () =>\n routeNotFoundComponent() ? CatchNotFound : SafeFragment\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n const parentRouteId = useRouterState({\n select: (s) => {\n const index = s.matches.findIndex((d) => d.id === props.matchId)\n return s.matches[index - 1]?.routeId as string\n },\n })\n\n return (\n <>\n <matchContext.Provider value={() => props.matchId}>\n <Dynamic\n component={ResolvedSuspenseBoundary()}\n fallback={<Dynamic component={PendingComponent()} />}\n >\n <Dynamic\n component={ResolvedCatchBoundary()}\n getResetKey={() => resetKey()}\n errorComponent={routeErrorComponent() || ErrorComponent}\n onCatch={(error: Error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(false, `Error in route match: ${props.matchId}`)\n routeOnCatch()?.(error)\n }}\n >\n <Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent() ||\n (error.routeId && error.routeId !== routeId) ||\n (!error.routeId && !route().isRoot)\n )\n throw error\n\n return (\n <Dynamic component={routeNotFoundComponent()} {...error} />\n )\n }}\n >\n <MatchInner matchId={props.matchId} />\n </Dynamic>\n </Dynamic>\n </Dynamic>\n </matchContext.Provider>\n\n {parentRouteId() === rootRouteId ? (\n <>\n <OnRendered />\n <ScrollRestoration />\n </>\n ) : null}\n </>\n )\n}\n\n// On Rendered can't happen above the root layout because it actually\n// renders a dummy dom element to track the rendered state of the app.\n// We render a script tag with a key that changes based on the current\n// location state.key. Also, because it's below the root layout, it\n// allows us to fire onRendered events even after a hydration mismatch\n// error that occurred above the root layout (like bad head/link tags,\n// which is common).\nfunction OnRendered() {\n const router = useRouter()\n\n const location = useRouterState({\n select: (s) => {\n return s.resolvedLocation?.state.key\n },\n })\n Solid.createEffect(\n Solid.on([location], () => {\n router.emit({\n type: 'onRendered',\n ...getLocationChangeInfo(router.state),\n })\n }),\n )\n return null\n}\n\nexport const MatchInner = (props: { matchId: string }): any => {\n const router = useRouter()\n\n // { match, key, routeId } =\n const matchState: Solid.Accessor<any> = useRouterState({\n select: (s) => {\n const matchIndex = s.matches.findIndex((d) => d.id === props.matchId)\n const match = s.matches[matchIndex]!\n const routeId = match.routeId as string\n\n const remountFn =\n (router.routesById[routeId] as AnyRoute).options.remountDeps ??\n router.options.defaultRemountDeps\n const remountDeps = remountFn?.({\n routeId,\n loaderDeps: match.loaderDeps,\n params: match._strictParams,\n search: match._strictSearch,\n })\n const key = remountDeps ? JSON.stringify(remountDeps) : undefined\n\n return {\n key,\n routeId,\n match: pick(match, ['id', 'status', 'error']),\n }\n },\n })\n\n const route = () => router.routesById[matchState().routeId]!\n\n // function useChangedDiff(value: any) {\n // const ref = Solid.useRef(value)\n // const changed = ref.current !== value\n // if (changed) {\n // console.log(\n // 'Changed:',\n // value,\n // Object.fromEntries(\n // Object.entries(value).filter(\n // ([key, val]) => val !== ref.current[key],\n // ),\n // ),\n // )\n // }\n // ref.current = value\n // }\n\n // useChangedDiff(match)\n const match = () => matchState().match\n\n const out = () => {\n const Comp = route().options.component ?? router.options.defaultComponent\n if (Comp) {\n return <Comp />\n }\n return <Outlet />\n }\n\n return (\n <Solid.Switch>\n <Solid.Match when={match().status === 'notFound'}>\n {(_) => {\n invariant(isNotFound(match().error), 'Expected a notFound error')\n\n return renderRouteNotFound(router, route(), match().error)\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'redirected'}>\n {(_) => {\n invariant(isRedirect(match().error), 'Expected a redirect error')\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'error'}>\n {(_) => {\n if (router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return (\n <RouteErrorComponent\n error={match().error}\n info={{\n componentStack: '',\n }}\n />\n )\n }\n\n throw match().error\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'pending'}>\n {(_) => {\n const pendingMinMs =\n route().options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n if (pendingMinMs && !router.getMatch(match().id)?.minPendingPromise) {\n // Create a promise that will resolve after the minPendingMs\n if (!router.isServer) {\n const minPendingPromise = createControlledPromise<void>()\n\n Promise.resolve().then(() => {\n router.updateMatch(match().id, (prev) => ({\n ...prev,\n minPendingPromise,\n }))\n })\n\n setTimeout(() => {\n minPendingPromise.resolve()\n\n // We've handled the minPendingPromise, so we can delete it\n router.updateMatch(match().id, (prev) => ({\n ...prev,\n minPendingPromise: undefined,\n }))\n }, pendingMinMs)\n }\n }\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'success'}>{out()}</Solid.Match>\n </Solid.Switch>\n )\n}\n\nexport const Outlet = () => {\n const router = useRouter()\n const matchId = Solid.useContext(matchContext)\n const routeId = useRouterState({\n select: (s) => s.matches.find((d) => d.id === matchId())?.routeId as string,\n })\n\n const route = () => router.routesById[routeId()]!\n\n const parentGlobalNotFound = useRouterState({\n select: (s) => {\n const matches = s.matches\n const parentMatch = matches.find((d) => d.id === matchId())\n invariant(\n parentMatch,\n `Could not find parent match for matchId \"${matchId()}\"`,\n )\n return parentMatch.globalNotFound\n },\n })\n\n const childMatchId = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n const v = matches[index + 1]?.id\n return v\n },\n })\n\n return (\n <Solid.Switch>\n <Solid.Match when={router.isShell}>\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <ErrorComponent error={new Error('ShellBoundaryError')} />\n </Solid.Suspense>\n </Solid.Match>\n\n <Solid.Match when={parentGlobalNotFound()}>\n {renderRouteNotFound(router, route(), undefined)}\n </Solid.Match>\n <Solid.Match when={childMatchId()}>\n {(matchId) => {\n // const nextMatch = <Match matchId={matchId()} />\n\n return (\n <Solid.Show\n when={matchId() === rootRouteId}\n fallback={<Match matchId={matchId()} />}\n >\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <Match matchId={matchId()} />\n </Solid.Suspense>\n </Solid.Show>\n )\n }}\n </Solid.Match>\n </Solid.Switch>\n )\n}\n"],"names":["Match","props","router","useRouter","routeId","useRouterState","select","s","matches","find","d","id","matchId","invariant","route","routesById","PendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","ResolvedSuspenseBoundary","wrapInSuspense","preload","Solid","Suspense","SafeFragment","ResolvedCatchBoundary","CatchBoundary","ResolvedNotFoundBoundary","CatchNotFound","resetKey","loadedAt","parentRouteId","index","findIndex","_$createComponent","matchContext","Provider","value","children","Dynamic","fallback","getResetKey","ErrorComponent","error","isNotFound","warning","_$mergeProps","MatchInner","_$memo","rootRouteId","OnRendered","ScrollRestoration","location","resolvedLocation","state","key","createEffect","on","emit","type","getLocationChangeInfo","matchState","matchIndex","match","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","JSON","stringify","undefined","pick","out","Comp","defaultComponent","Outlet","Switch","when","status","_","renderRouteNotFound","isRedirect","loaderResult","createResource","Promise","r","setTimeout","getMatch","loadPromise","isServer","RouteErrorComponent","info","componentStack","pendingMinMs","defaultPendingMinMs","minPendingPromise","createControlledPromise","resolve","then","updateMatch","prev","useContext","parentGlobalNotFound","parentMatch","globalNotFound","childMatchId","v","isShell","Error","Show"],"mappings":"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"}
1
+ {"version":3,"file":"Match.cjs","sources":["../../src/Match.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n createControlledPromise,\n getLocationChangeInfo,\n isNotFound,\n isRedirect,\n pick,\n rootRouteId,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound } from './not-found'\nimport { matchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { AnyRoute, RootRouteOptions } from '@tanstack/router-core'\n\nexport const Match = (props: { matchId: string }) => {\n const router = useRouter()\n const matchState = useRouterState({\n select: (s) => {\n const match = s.matches.find((d) => d.id === props.matchId)\n\n invariant(\n match,\n `Could not find match for matchId \"${props.matchId}\". Please file an issue!`,\n )\n return pick(match, ['routeId', 'ssr', '_displayPending'])\n },\n })\n\n const route: () => AnyRoute = () => router.routesById[matchState().routeId]\n\n const PendingComponent = () =>\n route().options.pendingComponent ?? router.options.defaultPendingComponent\n\n const routeErrorComponent = () =>\n route().options.errorComponent ?? router.options.defaultErrorComponent\n\n const routeOnCatch = () =>\n route().options.onCatch ?? router.options.defaultOnCatch\n\n const routeNotFoundComponent = () =>\n route().isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n (route().options.notFoundComponent ??\n router.options.notFoundRoute?.options.component)\n : route().options.notFoundComponent\n\n const resolvedNoSsr =\n matchState().ssr === false || matchState().ssr === 'data-only'\n\n const ResolvedSuspenseBoundary = () =>\n // If we're on the root route, allow forcefully wrapping in suspense\n (!route().isRoot ||\n route().options.wrapInSuspense ||\n resolvedNoSsr ||\n matchState()._displayPending) &&\n (route().options.wrapInSuspense ??\n PendingComponent() ??\n ((route().options.errorComponent as any)?.preload || resolvedNoSsr))\n ? Solid.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = () =>\n routeErrorComponent() ? CatchBoundary : SafeFragment\n\n const ResolvedNotFoundBoundary = () =>\n routeNotFoundComponent() ? CatchNotFound : SafeFragment\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n const parentRouteId = useRouterState({\n select: (s) => {\n const index = s.matches.findIndex((d) => d.id === props.matchId)\n return s.matches[index - 1]?.routeId as string\n },\n })\n\n const ShellComponent = route().isRoot\n ? ((route().options as RootRouteOptions).shellComponent ?? SafeFragment)\n : SafeFragment\n\n return (\n <ShellComponent>\n <matchContext.Provider value={() => props.matchId}>\n <Dynamic\n component={ResolvedSuspenseBoundary()}\n fallback={<Dynamic component={PendingComponent()} />}\n >\n <Dynamic\n component={ResolvedCatchBoundary()}\n getResetKey={() => resetKey()}\n errorComponent={routeErrorComponent() || ErrorComponent}\n onCatch={(error: Error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(false, `Error in route match: ${props.matchId}`)\n routeOnCatch()?.(error)\n }}\n >\n <Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent() ||\n (error.routeId && error.routeId !== matchState().routeId) ||\n (!error.routeId && !route().isRoot)\n )\n throw error\n\n return (\n <Dynamic component={routeNotFoundComponent()} {...error} />\n )\n }}\n >\n <Solid.Switch>\n <Solid.Match when={resolvedNoSsr}>\n <Solid.Show\n when={!router.isServer}\n fallback={<Dynamic component={PendingComponent()} />}\n >\n <MatchInner matchId={props.matchId} />\n </Solid.Show>\n </Solid.Match>\n <Solid.Match when={!resolvedNoSsr}>\n <MatchInner matchId={props.matchId} />\n </Solid.Match>\n </Solid.Switch>\n </Dynamic>\n </Dynamic>\n </Dynamic>\n </matchContext.Provider>\n\n {parentRouteId() === rootRouteId ? (\n <>\n <OnRendered />\n <ScrollRestoration />\n </>\n ) : null}\n </ShellComponent>\n )\n}\n\n// On Rendered can't happen above the root layout because it actually\n// renders a dummy dom element to track the rendered state of the app.\n// We render a script tag with a key that changes based on the current\n// location state.__TSR_key. Also, because it's below the root layout, it\n// allows us to fire onRendered events even after a hydration mismatch\n// error that occurred above the root layout (like bad head/link tags,\n// which is common).\nfunction OnRendered() {\n const router = useRouter()\n\n const location = useRouterState({\n select: (s) => {\n return s.resolvedLocation?.state.__TSR_key\n },\n })\n Solid.createEffect(\n Solid.on([location], () => {\n router.emit({\n type: 'onRendered',\n ...getLocationChangeInfo(router.state),\n })\n }),\n )\n return null\n}\n\nexport const MatchInner = (props: { matchId: string }): any => {\n const router = useRouter()\n\n const matchState = useRouterState({\n select: (s) => {\n const matchIndex = s.matches.findIndex((d) => d.id === props.matchId)\n const match = s.matches[matchIndex]!\n const routeId = match.routeId as string\n\n const remountFn =\n (router.routesById[routeId] as AnyRoute).options.remountDeps ??\n router.options.defaultRemountDeps\n const remountDeps = remountFn?.({\n routeId,\n loaderDeps: match.loaderDeps,\n params: match._strictParams,\n search: match._strictSearch,\n })\n const key = remountDeps ? JSON.stringify(remountDeps) : undefined\n\n return {\n key,\n routeId,\n match: pick(match, [\n 'id',\n 'status',\n 'error',\n '_forcePending',\n '_displayPending',\n ]),\n }\n },\n })\n\n const route = () => router.routesById[matchState().routeId]!\n\n const match = () => matchState().match\n\n const out = () => {\n const Comp = route().options.component ?? router.options.defaultComponent\n if (Comp) {\n return (\n <Solid.Show when={matchState().match.id} keyed>\n <Comp />\n </Solid.Show>\n )\n }\n return <Outlet />\n }\n\n return (\n <Solid.Switch>\n <Solid.Match when={match()._displayPending}>\n {(_) => {\n const [displayPendingResult] = Solid.createResource(\n () => router.getMatch(match().id)?.displayPendingPromise,\n )\n\n return <>{displayPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match()._forcePending}>\n {(_) => {\n const [minPendingResult] = Solid.createResource(\n () => router.getMatch(match().id)?.minPendingPromise,\n )\n\n return <>{minPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'pending'}>\n {(_) => {\n const pendingMinMs =\n route().options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n if (pendingMinMs && !router.getMatch(match().id)?.minPendingPromise) {\n // Create a promise that will resolve after the minPendingMs\n if (!router.isServer) {\n const minPendingPromise = createControlledPromise<void>()\n\n Promise.resolve().then(() => {\n router.updateMatch(match().id, (prev) => ({\n ...prev,\n minPendingPromise,\n }))\n })\n\n setTimeout(() => {\n minPendingPromise.resolve()\n\n // We've handled the minPendingPromise, so we can delete it\n router.updateMatch(match().id, (prev) => ({\n ...prev,\n minPendingPromise: undefined,\n }))\n }, pendingMinMs)\n }\n }\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'notFound'}>\n {(_) => {\n invariant(isNotFound(match().error), 'Expected a notFound error')\n\n return renderRouteNotFound(router, route(), match().error)\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'redirected'}>\n {(_) => {\n invariant(isRedirect(match().error), 'Expected a redirect error')\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'error'}>\n {(_) => {\n if (router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return (\n <RouteErrorComponent\n error={match().error}\n info={{\n componentStack: '',\n }}\n />\n )\n }\n\n throw match().error\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'success'}>{out()}</Solid.Match>\n </Solid.Switch>\n )\n}\n\nexport const Outlet = () => {\n const router = useRouter()\n const matchId = Solid.useContext(matchContext)\n const routeId = useRouterState({\n select: (s) => s.matches.find((d) => d.id === matchId())?.routeId as string,\n })\n\n const route = () => router.routesById[routeId()]!\n\n const parentGlobalNotFound = useRouterState({\n select: (s) => {\n const matches = s.matches\n const parentMatch = matches.find((d) => d.id === matchId())\n invariant(\n parentMatch,\n `Could not find parent match for matchId \"${matchId()}\"`,\n )\n return parentMatch.globalNotFound\n },\n })\n\n const childMatchId = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n const v = matches[index + 1]?.id\n return v\n },\n })\n\n return (\n <Solid.Switch>\n <Solid.Match when={parentGlobalNotFound()}>\n {renderRouteNotFound(router, route(), undefined)}\n </Solid.Match>\n <Solid.Match when={childMatchId()}>\n {(matchId) => {\n // const nextMatch = <Match matchId={matchId()} />\n\n return (\n <Solid.Show\n when={matchId() === rootRouteId}\n fallback={<Match matchId={matchId()} />}\n >\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <Match matchId={matchId()} />\n </Solid.Suspense>\n </Solid.Show>\n )\n }}\n </Solid.Match>\n </Solid.Switch>\n )\n}\n"],"names":["Match","props","router","useRouter","matchState","useRouterState","select","s","match","matches","find","d","id","matchId","invariant","pick","route","routesById","routeId","PendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","resolvedNoSsr","ssr","ResolvedSuspenseBoundary","wrapInSuspense","_displayPending","preload","Solid","Suspense","SafeFragment","ResolvedCatchBoundary","CatchBoundary","ResolvedNotFoundBoundary","CatchNotFound","resetKey","loadedAt","parentRouteId","index","findIndex","ShellComponent","shellComponent","_$createComponent","children","matchContext","Provider","value","Dynamic","fallback","getResetKey","ErrorComponent","error","isNotFound","warning","_$mergeProps","Switch","when","Show","isServer","MatchInner","_$memo","rootRouteId","OnRendered","ScrollRestoration","location","resolvedLocation","state","__TSR_key","createEffect","on","emit","type","getLocationChangeInfo","matchIndex","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","key","JSON","stringify","undefined","out","Comp","defaultComponent","keyed","Outlet","_","displayPendingResult","createResource","getMatch","displayPendingPromise","_forcePending","minPendingResult","minPendingPromise","status","pendingMinMs","defaultPendingMinMs","createControlledPromise","Promise","resolve","then","updateMatch","prev","setTimeout","loaderResult","r","loadPromise","renderRouteNotFound","isRedirect","RouteErrorComponent","info","componentStack","useContext","parentGlobalNotFound","parentMatch","globalNotFound","childMatchId","v"],"mappings":"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"}