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

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 (182) hide show
  1. package/dist/cjs/Asset.cjs +111 -68
  2. package/dist/cjs/Asset.cjs.map +1 -1
  3. package/dist/cjs/CatchBoundary.cjs +15 -15
  4. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  5. package/dist/cjs/ClientOnly.cjs +2 -2
  6. package/dist/cjs/ClientOnly.cjs.map +1 -1
  7. package/dist/cjs/HeadContent.cjs +16 -8
  8. package/dist/cjs/HeadContent.cjs.map +1 -1
  9. package/dist/cjs/HeadContent.dev.cjs +18 -10
  10. package/dist/cjs/HeadContent.dev.cjs.map +1 -1
  11. package/dist/cjs/Match.cjs +125 -81
  12. package/dist/cjs/Match.cjs.map +1 -1
  13. package/dist/cjs/Matches.cjs +23 -16
  14. package/dist/cjs/Matches.cjs.map +1 -1
  15. package/dist/cjs/RouterProvider.cjs +3 -2
  16. package/dist/cjs/RouterProvider.cjs.map +1 -1
  17. package/dist/cjs/SafeFragment.cjs +1 -1
  18. package/dist/cjs/ScriptOnce.cjs +4 -2
  19. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  20. package/dist/cjs/Scripts.cjs +6 -2
  21. package/dist/cjs/Scripts.cjs.map +1 -1
  22. package/dist/cjs/Transitioner.cjs +11 -16
  23. package/dist/cjs/Transitioner.cjs.map +1 -1
  24. package/dist/cjs/awaited.cjs +20 -16
  25. package/dist/cjs/awaited.cjs.map +1 -1
  26. package/dist/cjs/lazyRouteComponent.cjs +3 -3
  27. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  28. package/dist/cjs/link.cjs +40 -22
  29. package/dist/cjs/link.cjs.map +1 -1
  30. package/dist/cjs/not-found.cjs +1 -1
  31. package/dist/cjs/renderRouteNotFound.cjs +1 -1
  32. package/dist/cjs/route.cjs +1 -1
  33. package/dist/cjs/scroll-restoration.cjs +1 -1
  34. package/dist/cjs/ssr/RouterClient.cjs +4 -23
  35. package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
  36. package/dist/cjs/ssr/RouterServer.cjs +4 -47
  37. package/dist/cjs/ssr/RouterServer.cjs.map +1 -1
  38. package/dist/cjs/ssr/RouterServer.d.cts +0 -1
  39. package/dist/cjs/ssr/defaultRenderHandler.cjs +1 -1
  40. package/dist/cjs/ssr/defaultStreamHandler.cjs +1 -1
  41. package/dist/cjs/ssr/renderRouterToStream.cjs +2 -3
  42. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
  43. package/dist/cjs/ssr/renderRouterToString.cjs +2 -2
  44. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
  45. package/dist/cjs/ssr/renderRouterToString.d.cts +1 -1
  46. package/dist/cjs/useBlocker.cjs +9 -5
  47. package/dist/cjs/useBlocker.cjs.map +1 -1
  48. package/dist/cjs/useMatch.cjs +3 -6
  49. package/dist/cjs/useMatch.cjs.map +1 -1
  50. package/dist/cjs/useNavigate.cjs +1 -1
  51. package/dist/cjs/useNavigate.cjs.map +1 -1
  52. package/dist/cjs/useRouterState.cjs +15 -9
  53. package/dist/cjs/useRouterState.cjs.map +1 -1
  54. package/dist/cjs/utils.cjs +2 -4
  55. package/dist/cjs/utils.cjs.map +1 -1
  56. package/dist/cjs/utils.d.cts +1 -0
  57. package/dist/esm/Asset.js +111 -68
  58. package/dist/esm/Asset.js.map +1 -1
  59. package/dist/esm/CatchBoundary.js +15 -15
  60. package/dist/esm/CatchBoundary.js.map +1 -1
  61. package/dist/esm/ClientOnly.js +2 -2
  62. package/dist/esm/ClientOnly.js.map +1 -1
  63. package/dist/esm/HeadContent.dev.js +18 -10
  64. package/dist/esm/HeadContent.dev.js.map +1 -1
  65. package/dist/esm/HeadContent.js +16 -8
  66. package/dist/esm/HeadContent.js.map +1 -1
  67. package/dist/esm/Match.js +89 -45
  68. package/dist/esm/Match.js.map +1 -1
  69. package/dist/esm/Matches.js +23 -16
  70. package/dist/esm/Matches.js.map +1 -1
  71. package/dist/esm/RouterProvider.js +3 -2
  72. package/dist/esm/RouterProvider.js.map +1 -1
  73. package/dist/esm/SafeFragment.js +1 -1
  74. package/dist/esm/ScriptOnce.js +4 -2
  75. package/dist/esm/ScriptOnce.js.map +1 -1
  76. package/dist/esm/Scripts.js +6 -2
  77. package/dist/esm/Scripts.js.map +1 -1
  78. package/dist/esm/Transitioner.js +11 -16
  79. package/dist/esm/Transitioner.js.map +1 -1
  80. package/dist/esm/awaited.js +18 -14
  81. package/dist/esm/awaited.js.map +1 -1
  82. package/dist/esm/lazyRouteComponent.js +3 -3
  83. package/dist/esm/lazyRouteComponent.js.map +1 -1
  84. package/dist/esm/link.js +39 -21
  85. package/dist/esm/link.js.map +1 -1
  86. package/dist/esm/not-found.js +1 -1
  87. package/dist/esm/renderRouteNotFound.js +1 -1
  88. package/dist/esm/route.js +1 -1
  89. package/dist/esm/scroll-restoration.js +1 -1
  90. package/dist/esm/ssr/RouterClient.js +4 -23
  91. package/dist/esm/ssr/RouterClient.js.map +1 -1
  92. package/dist/esm/ssr/RouterServer.d.ts +0 -1
  93. package/dist/esm/ssr/RouterServer.js +5 -48
  94. package/dist/esm/ssr/RouterServer.js.map +1 -1
  95. package/dist/esm/ssr/defaultRenderHandler.js +1 -1
  96. package/dist/esm/ssr/defaultStreamHandler.js +1 -1
  97. package/dist/esm/ssr/renderRouterToStream.js +2 -4
  98. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  99. package/dist/esm/ssr/renderRouterToString.d.ts +1 -1
  100. package/dist/esm/ssr/renderRouterToString.js +2 -2
  101. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  102. package/dist/esm/useBlocker.js +9 -5
  103. package/dist/esm/useBlocker.js.map +1 -1
  104. package/dist/esm/useMatch.js +3 -6
  105. package/dist/esm/useMatch.js.map +1 -1
  106. package/dist/esm/useNavigate.js +1 -1
  107. package/dist/esm/useNavigate.js.map +1 -1
  108. package/dist/esm/useRouterState.js +15 -9
  109. package/dist/esm/useRouterState.js.map +1 -1
  110. package/dist/esm/utils.d.ts +1 -0
  111. package/dist/esm/utils.js +2 -4
  112. package/dist/esm/utils.js.map +1 -1
  113. package/dist/source/Asset.jsx +58 -35
  114. package/dist/source/Asset.jsx.map +1 -1
  115. package/dist/source/CatchBoundary.jsx +9 -5
  116. package/dist/source/CatchBoundary.jsx.map +1 -1
  117. package/dist/source/ClientOnly.jsx +1 -1
  118. package/dist/source/ClientOnly.jsx.map +1 -1
  119. package/dist/source/HeadContent.dev.jsx +8 -6
  120. package/dist/source/HeadContent.dev.jsx.map +1 -1
  121. package/dist/source/HeadContent.jsx +6 -4
  122. package/dist/source/HeadContent.jsx.map +1 -1
  123. package/dist/source/Match.jsx +76 -35
  124. package/dist/source/Match.jsx.map +1 -1
  125. package/dist/source/Matches.jsx +25 -17
  126. package/dist/source/Matches.jsx.map +1 -1
  127. package/dist/source/RouterProvider.jsx +2 -3
  128. package/dist/source/RouterProvider.jsx.map +1 -1
  129. package/dist/source/Scripts.jsx +4 -3
  130. package/dist/source/Scripts.jsx.map +1 -1
  131. package/dist/source/Transitioner.jsx +15 -16
  132. package/dist/source/Transitioner.jsx.map +1 -1
  133. package/dist/source/awaited.jsx +7 -8
  134. package/dist/source/awaited.jsx.map +1 -1
  135. package/dist/source/lazyRouteComponent.jsx +3 -3
  136. package/dist/source/lazyRouteComponent.jsx.map +1 -1
  137. package/dist/source/link.jsx +53 -48
  138. package/dist/source/link.jsx.map +1 -1
  139. package/dist/source/ssr/RouterClient.jsx +1 -13
  140. package/dist/source/ssr/RouterClient.jsx.map +1 -1
  141. package/dist/source/ssr/RouterServer.d.ts +0 -1
  142. package/dist/source/ssr/RouterServer.jsx +1 -34
  143. package/dist/source/ssr/RouterServer.jsx.map +1 -1
  144. package/dist/source/ssr/renderRouterToStream.jsx +2 -6
  145. package/dist/source/ssr/renderRouterToStream.jsx.map +1 -1
  146. package/dist/source/ssr/renderRouterToString.d.ts +1 -1
  147. package/dist/source/ssr/renderRouterToString.jsx +2 -2
  148. package/dist/source/ssr/renderRouterToString.jsx.map +1 -1
  149. package/dist/source/useBlocker.jsx +8 -4
  150. package/dist/source/useBlocker.jsx.map +1 -1
  151. package/dist/source/useMatch.jsx +3 -8
  152. package/dist/source/useMatch.jsx.map +1 -1
  153. package/dist/source/useNavigate.jsx +1 -1
  154. package/dist/source/useNavigate.jsx.map +1 -1
  155. package/dist/source/useRouterState.jsx +23 -10
  156. package/dist/source/useRouterState.jsx.map +1 -1
  157. package/dist/source/utils.d.ts +1 -0
  158. package/dist/source/utils.js +3 -4
  159. package/dist/source/utils.js.map +1 -1
  160. package/package.json +8 -7
  161. package/src/Asset.tsx +123 -95
  162. package/src/CatchBoundary.tsx +9 -7
  163. package/src/ClientOnly.tsx +8 -3
  164. package/src/HeadContent.dev.tsx +16 -11
  165. package/src/HeadContent.tsx +6 -4
  166. package/src/Match.tsx +112 -44
  167. package/src/Matches.tsx +39 -30
  168. package/src/RouterProvider.tsx +7 -4
  169. package/src/Scripts.tsx +4 -3
  170. package/src/Transitioner.tsx +51 -58
  171. package/src/awaited.tsx +11 -12
  172. package/src/lazyRouteComponent.tsx +3 -3
  173. package/src/link.tsx +68 -60
  174. package/src/ssr/RouterClient.tsx +1 -22
  175. package/src/ssr/RouterServer.tsx +1 -53
  176. package/src/ssr/renderRouterToStream.tsx +5 -15
  177. package/src/ssr/renderRouterToString.tsx +2 -2
  178. package/src/useBlocker.tsx +8 -4
  179. package/src/useMatch.tsx +6 -11
  180. package/src/useNavigate.tsx +1 -1
  181. package/src/useRouterState.tsx +34 -22
  182. package/src/utils.ts +5 -4
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const Solid = require("solid-js/web");
4
- const Solid$1 = require("solid-js");
3
+ const Solid$1 = require("@solidjs/web");
4
+ const Solid = 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");
@@ -30,7 +30,8 @@ function _interopNamespaceDefault(e) {
30
30
  n.default = e;
31
31
  return Object.freeze(n);
32
32
  }
33
- const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid$1);
33
+ const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid);
34
+ const MatchContext = matchContext.matchContext;
34
35
  const Match = (props) => {
35
36
  const router = useRouter.useRouter();
36
37
  const matchState = useRouterState.useRouterState({
@@ -46,7 +47,7 @@ const Match = (props) => {
46
47
  };
47
48
  }
48
49
  });
49
- if (!matchState()) return null;
50
+ if (!Solid__namespace.untrack(matchState)) return null;
50
51
  const route = () => router.routesById[matchState().routeId];
51
52
  const resolvePendingComponent = () => route().options.pendingComponent ?? router.options.defaultPendingComponent;
52
53
  const routeErrorComponent = () => route().options.errorComponent ?? router.options.defaultErrorComponent;
@@ -55,8 +56,8 @@ const Match = (props) => {
55
56
  // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component
56
57
  route().options.notFoundComponent ?? router.options.notFoundRoute?.options.component
57
58
  ) : route().options.notFoundComponent;
58
- const resolvedNoSsr = matchState().ssr === false || matchState().ssr === "data-only";
59
- const ResolvedSuspenseBoundary = () => Solid__namespace.Suspense;
59
+ const resolvedNoSsr = Solid__namespace.createMemo(() => matchState().ssr === false || matchState().ssr === "data-only");
60
+ const ResolvedSuspenseBoundary = () => resolvedNoSsr() ? SafeFragment.SafeFragment : Solid__namespace.Loading;
60
61
  const ResolvedCatchBoundary = () => routeErrorComponent() ? CatchBoundary.CatchBoundary : SafeFragment.SafeFragment;
61
62
  const ResolvedNotFoundBoundary = () => routeNotFoundComponent() ? notFound.CatchNotFound : SafeFragment.SafeFragment;
62
63
  const resetKey = useRouterState.useRouterState({
@@ -68,20 +69,23 @@ const Match = (props) => {
68
69
  return s.matches[index - 1]?.routeId;
69
70
  }
70
71
  });
71
- const ShellComponent = route().isRoot ? route().options.shellComponent ?? SafeFragment.SafeFragment : SafeFragment.SafeFragment;
72
- return Solid.createComponent(ShellComponent, {
72
+ const ShellComponent = Solid__namespace.createMemo(() => route().isRoot ? route().options.shellComponent ?? SafeFragment.SafeFragment : SafeFragment.SafeFragment);
73
+ return Solid$1.createComponent(Solid$1.Dynamic, {
74
+ get component() {
75
+ return ShellComponent();
76
+ },
73
77
  get children() {
74
- return [Solid.createComponent(matchContext.matchContext.Provider, {
78
+ return [Solid$1.createComponent(MatchContext, {
75
79
  value: () => props.matchId,
76
80
  get children() {
77
- return Solid.createComponent(Solid.Dynamic, {
81
+ return Solid$1.createComponent(Solid$1.Dynamic, {
78
82
  get component() {
79
83
  return ResolvedSuspenseBoundary();
80
84
  },
81
85
  get fallback() {
82
86
  return (
83
87
  // Don't show fallback on server when using no-ssr mode to avoid hydration mismatch
84
- Solid.memo(() => !!((isServer.isServer ?? router.isServer) || resolvedNoSsr))() ? void 0 : Solid.createComponent(Solid.Dynamic, {
88
+ Solid$1.memo(() => !!((isServer.isServer ?? router.isServer) || resolvedNoSsr()))() ? void 0 : Solid$1.createComponent(Solid$1.Dynamic, {
85
89
  get component() {
86
90
  return resolvePendingComponent();
87
91
  }
@@ -89,7 +93,7 @@ const Match = (props) => {
89
93
  );
90
94
  },
91
95
  get children() {
92
- return Solid.createComponent(Solid.Dynamic, {
96
+ return Solid$1.createComponent(Solid$1.Dynamic, {
93
97
  get component() {
94
98
  return ResolvedCatchBoundary();
95
99
  },
@@ -99,41 +103,43 @@ const Match = (props) => {
99
103
  },
100
104
  onCatch: (error) => {
101
105
  if (routerCore.isNotFound(error)) throw error;
102
- warning(false, `Error in route match: ${matchState().routeId}`);
106
+ warning(false, `Error in route match: ${Solid__namespace.untrack(matchState).routeId}`);
103
107
  routeOnCatch()?.(error);
104
108
  },
105
109
  get children() {
106
- return Solid.createComponent(Solid.Dynamic, {
110
+ return Solid$1.createComponent(Solid$1.Dynamic, {
107
111
  get component() {
108
112
  return ResolvedNotFoundBoundary();
109
113
  },
110
114
  fallback: (error) => {
111
115
  if (!routeNotFoundComponent() || error.routeId && error.routeId !== matchState().routeId || !error.routeId && !route().isRoot) throw error;
112
- return Solid.createComponent(Solid.Dynamic, Solid.mergeProps({
116
+ return Solid$1.createComponent(Solid$1.Dynamic, Solid$1.mergeProps({
113
117
  get component() {
114
118
  return routeNotFoundComponent();
115
119
  }
116
120
  }, error));
117
121
  },
118
122
  get children() {
119
- return Solid.createComponent(Solid__namespace.Switch, {
123
+ return Solid$1.createComponent(Solid__namespace.Switch, {
120
124
  get children() {
121
- return [Solid.createComponent(Solid__namespace.Match, {
122
- when: resolvedNoSsr,
125
+ return [Solid$1.createComponent(Solid__namespace.Match, {
126
+ get when() {
127
+ return resolvedNoSsr();
128
+ },
123
129
  get children() {
124
- return Solid.createComponent(Solid__namespace.Show, {
130
+ return Solid$1.createComponent(Solid__namespace.Show, {
125
131
  get when() {
126
132
  return !(isServer.isServer ?? router.isServer);
127
133
  },
128
134
  get fallback() {
129
- return Solid.createComponent(Solid.Dynamic, {
135
+ return Solid$1.createComponent(Solid$1.Dynamic, {
130
136
  get component() {
131
137
  return resolvePendingComponent();
132
138
  }
133
139
  });
134
140
  },
135
141
  get children() {
136
- return Solid.createComponent(MatchInner, {
142
+ return Solid$1.createComponent(MatchInner, {
137
143
  get matchId() {
138
144
  return props.matchId;
139
145
  }
@@ -141,10 +147,12 @@ const Match = (props) => {
141
147
  }
142
148
  });
143
149
  }
144
- }), Solid.createComponent(Solid__namespace.Match, {
145
- when: !resolvedNoSsr,
150
+ }), Solid$1.createComponent(Solid__namespace.Match, {
151
+ get when() {
152
+ return !resolvedNoSsr();
153
+ },
146
154
  get children() {
147
- return Solid.createComponent(MatchInner, {
155
+ return Solid$1.createComponent(MatchInner, {
148
156
  get matchId() {
149
157
  return props.matchId;
150
158
  }
@@ -160,10 +168,11 @@ const Match = (props) => {
160
168
  }
161
169
  });
162
170
  }
163
- }), Solid.memo(() => Solid.memo(() => parentRouteId() === routerCore.rootRouteId)() ? [Solid.createComponent(OnRendered, {}), Solid.createComponent(scrollRestoration.ScrollRestoration, {})] : null)];
171
+ }), Solid$1.memo(() => Solid$1.memo(() => parentRouteId() === routerCore.rootRouteId)() ? [Solid$1.createComponent(OnRendered, {}), Solid$1.createComponent(scrollRestoration.ScrollRestoration, {})] : null)];
164
172
  }
165
173
  });
166
174
  };
175
+ const lastOnRenderedKey = /* @__PURE__ */ new WeakMap();
167
176
  function OnRendered() {
168
177
  const router = useRouter.useRouter();
169
178
  const location = useRouterState.useRouterState({
@@ -171,12 +180,15 @@ function OnRendered() {
171
180
  return s.resolvedLocation?.state.__TSR_key;
172
181
  }
173
182
  });
174
- Solid__namespace.createEffect(Solid__namespace.on([location], () => {
183
+ Solid__namespace.createEffect(() => [location()], ([location2]) => {
184
+ if (!location2) return;
185
+ if (lastOnRenderedKey.get(router) === location2) return;
186
+ lastOnRenderedKey.set(router, location2);
175
187
  router.emit({
176
188
  type: "onRendered",
177
189
  ...routerCore.getLocationChangeInfo(router.state)
178
190
  });
179
- }));
191
+ });
180
192
  return null;
181
193
  }
182
194
  const MatchInner = (props) => {
@@ -209,50 +221,55 @@ const MatchInner = (props) => {
209
221
  };
210
222
  }
211
223
  });
212
- if (!matchState()) return null;
224
+ if (!Solid__namespace.untrack(matchState)) return null;
213
225
  const route = () => router.routesById[matchState().routeId];
214
226
  const match = () => matchState().match;
215
227
  const componentKey = () => matchState().key ?? matchState().match.id;
216
228
  const out = () => {
217
- const Comp = route().options.component ?? router.options.defaultComponent;
229
+ const currentRoute = Solid__namespace.untrack(route);
230
+ const Comp = currentRoute.options.component ?? router.options.defaultComponent;
218
231
  if (Comp) {
219
- return Solid.createComponent(Comp, {});
232
+ return Solid$1.createComponent(Comp, {});
220
233
  }
221
- return Solid.createComponent(Outlet, {});
234
+ return Solid$1.createComponent(Outlet, {});
222
235
  };
223
- const keyedOut = () => Solid.createComponent(Solid__namespace.Show, {
236
+ const keyedOut = () => Solid$1.createComponent(Solid__namespace.Show, {
224
237
  get when() {
225
238
  return componentKey();
226
239
  },
227
240
  keyed: true,
228
241
  children: (_key) => out()
229
242
  });
230
- return Solid.createComponent(Solid__namespace.Switch, {
243
+ return Solid$1.createComponent(Solid__namespace.Switch, {
231
244
  get children() {
232
- return [Solid.createComponent(Solid__namespace.Match, {
245
+ return [Solid$1.createComponent(Solid__namespace.Match, {
233
246
  get when() {
234
247
  return match()._displayPending;
235
248
  },
236
249
  children: (_) => {
237
- const [displayPendingResult] = Solid__namespace.createResource(() => router.getMatch(match().id)?._nonReactive.displayPendingPromise);
238
- return Solid.memo(displayPendingResult);
250
+ const matchId = Solid__namespace.untrack(() => match().id);
251
+ const displayPendingResult = Solid__namespace.createMemo(() => router.getMatch(matchId)?._nonReactive.displayPendingPromise);
252
+ return Solid$1.memo(displayPendingResult);
239
253
  }
240
- }), Solid.createComponent(Solid__namespace.Match, {
254
+ }), Solid$1.createComponent(Solid__namespace.Match, {
241
255
  get when() {
242
256
  return match()._forcePending;
243
257
  },
244
258
  children: (_) => {
245
- const [minPendingResult] = Solid__namespace.createResource(() => router.getMatch(match().id)?._nonReactive.minPendingPromise);
246
- return Solid.memo(minPendingResult);
259
+ const matchId = Solid__namespace.untrack(() => match().id);
260
+ const minPendingResult = Solid__namespace.createMemo(() => router.getMatch(matchId)?._nonReactive.minPendingPromise);
261
+ return Solid$1.memo(minPendingResult);
247
262
  }
248
- }), Solid.createComponent(Solid__namespace.Match, {
263
+ }), Solid$1.createComponent(Solid__namespace.Match, {
249
264
  get when() {
250
265
  return match().status === "pending";
251
266
  },
252
267
  children: (_) => {
253
- const pendingMinMs = route().options.pendingMinMs ?? router.options.defaultPendingMinMs;
268
+ const currentMatch = Solid__namespace.untrack(match);
269
+ const currentRoute = Solid__namespace.untrack(route);
270
+ const pendingMinMs = currentRoute.options.pendingMinMs ?? router.options.defaultPendingMinMs;
254
271
  if (pendingMinMs) {
255
- const routerMatch = router.getMatch(match().id);
272
+ const routerMatch = router.getMatch(currentMatch.id);
256
273
  if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {
257
274
  if (!(isServer.isServer ?? router.isServer)) {
258
275
  const minPendingPromise = routerCore.createControlledPromise();
@@ -264,49 +281,63 @@ const MatchInner = (props) => {
264
281
  }
265
282
  }
266
283
  }
267
- const [loaderResult] = Solid__namespace.createResource(async () => {
284
+ const loaderResult = Solid__namespace.createMemo(async () => {
268
285
  await new Promise((r) => setTimeout(r, 0));
269
- return router.getMatch(match().id)?._nonReactive.loadPromise;
286
+ return router.getMatch(currentMatch.id)?._nonReactive.loadPromise;
270
287
  });
271
- const FallbackComponent = route().options.pendingComponent ?? router.options.defaultPendingComponent;
272
- return [FallbackComponent && pendingMinMs > 0 ? Solid.createComponent(Solid.Dynamic, {
288
+ const FallbackComponent = currentRoute.options.pendingComponent ?? router.options.defaultPendingComponent;
289
+ return [FallbackComponent && pendingMinMs > 0 ? Solid$1.createComponent(Solid$1.Dynamic, {
273
290
  component: FallbackComponent
274
- }) : null, Solid.memo(loaderResult)];
291
+ }) : null, Solid$1.memo(loaderResult)];
275
292
  }
276
- }), Solid.createComponent(Solid__namespace.Match, {
293
+ }), Solid$1.createComponent(Solid__namespace.Match, {
277
294
  get when() {
278
295
  return match().status === "notFound";
279
296
  },
280
297
  children: (_) => {
281
- invariant(routerCore.isNotFound(match().error), "Expected a notFound error");
282
- return Solid.createComponent(Solid__namespace.Show, {
283
- get when() {
284
- return matchState().routeId;
285
- },
298
+ const currentMatch = Solid__namespace.untrack(match);
299
+ const currentRoute = Solid__namespace.untrack(route);
300
+ const currentRouteId = Solid__namespace.untrack(() => matchState().routeId);
301
+ invariant(routerCore.isNotFound(currentMatch.error), "Expected a notFound error");
302
+ return Solid$1.createComponent(Solid__namespace.Show, {
303
+ when: currentRouteId,
286
304
  keyed: true,
287
- children: (_routeId) => renderRouteNotFound.renderRouteNotFound(router, route(), match().error)
305
+ children: (_routeId) => renderRouteNotFound.renderRouteNotFound(router, currentRoute, currentMatch.error)
288
306
  });
289
307
  }
290
- }), Solid.createComponent(Solid__namespace.Match, {
308
+ }), Solid$1.createComponent(Solid__namespace.Match, {
291
309
  get when() {
292
310
  return match().status === "redirected";
293
311
  },
294
312
  children: (_) => {
295
- invariant(routerCore.isRedirect(match().error), "Expected a redirect error");
296
- const [loaderResult] = Solid__namespace.createResource(async () => {
313
+ const matchId = Solid__namespace.untrack(() => match().id);
314
+ invariant(routerCore.isRedirect(Solid__namespace.untrack(match).error), "Expected a redirect error");
315
+ const loaderResult = Solid__namespace.createMemo(async () => {
297
316
  await new Promise((r) => setTimeout(r, 0));
298
- return router.getMatch(match().id)?._nonReactive.loadPromise;
317
+ return router.getMatch(matchId)?._nonReactive.loadPromise;
299
318
  });
300
- return Solid.memo(loaderResult);
319
+ return Solid$1.memo(loaderResult);
301
320
  }
302
- }), Solid.createComponent(Solid__namespace.Match, {
321
+ }), Solid$1.createComponent(Solid__namespace.Match, {
303
322
  get when() {
304
323
  return match().status === "error";
305
324
  },
306
325
  children: (_) => {
307
- throw match().error;
326
+ if (isServer.isServer ?? router.isServer) {
327
+ const currentMatch = Solid__namespace.untrack(match);
328
+ const RouteErrorComponent = (Solid__namespace.untrack(route).options.errorComponent ?? router.options.defaultErrorComponent) || CatchBoundary.ErrorComponent;
329
+ return Solid$1.createComponent(RouteErrorComponent, {
330
+ get error() {
331
+ return currentMatch.error;
332
+ },
333
+ info: {
334
+ componentStack: ""
335
+ }
336
+ });
337
+ }
338
+ throw Solid__namespace.untrack(match).error;
308
339
  }
309
- }), Solid.createComponent(Solid__namespace.Match, {
340
+ }), Solid$1.createComponent(Solid__namespace.Match, {
310
341
  get when() {
311
342
  return match().status === "success";
312
343
  },
@@ -342,6 +373,13 @@ const Outlet = () => {
342
373
  return v;
343
374
  }
344
375
  });
376
+ const childRouteId = useRouterState.useRouterState({
377
+ select: (s) => {
378
+ const matches = s.matches;
379
+ const index = matches.findIndex((d) => d.id === matchId());
380
+ return matches[index + 1]?.routeId;
381
+ }
382
+ });
345
383
  const childMatchStatus = useRouterState.useRouterState({
346
384
  select: (s) => {
347
385
  const matches = s.matches;
@@ -350,12 +388,12 @@ const Outlet = () => {
350
388
  }
351
389
  });
352
390
  const shouldShowNotFound = () => childMatchStatus() !== "redirected" && parentGlobalNotFound();
353
- return Solid.createComponent(Solid__namespace.Show, {
391
+ return Solid$1.createComponent(Solid__namespace.Show, {
354
392
  get when() {
355
- return Solid.memo(() => !!!shouldShowNotFound())() && childMatchId();
393
+ return Solid$1.memo(() => !!!shouldShowNotFound())() && childMatchId();
356
394
  },
357
395
  get fallback() {
358
- return Solid.createComponent(Solid__namespace.Show, {
396
+ return Solid$1.createComponent(Solid__namespace.Show, {
359
397
  get when() {
360
398
  return shouldShowNotFound();
361
399
  },
@@ -366,33 +404,39 @@ const Outlet = () => {
366
404
  },
367
405
  children: (matchIdAccessor) => {
368
406
  const currentMatchId = Solid__namespace.createMemo(() => matchIdAccessor());
369
- return Solid.createComponent(Solid__namespace.Show, {
407
+ return Solid$1.createComponent(Solid__namespace.Show, {
370
408
  get when() {
371
409
  return routeId() === routerCore.rootRouteId;
372
410
  },
373
411
  get fallback() {
374
- return Solid.createComponent(Match, {
412
+ return Solid$1.createComponent(Match, {
375
413
  get matchId() {
376
414
  return currentMatchId();
377
415
  }
378
416
  });
379
417
  },
380
418
  get children() {
381
- return Solid.createComponent(Solid__namespace.Suspense, {
382
- get fallback() {
383
- return Solid.createComponent(Solid.Dynamic, {
384
- get component() {
385
- return router.options.defaultPendingComponent;
386
- }
387
- });
419
+ return Solid$1.createComponent(Solid__namespace.Show, {
420
+ get when() {
421
+ return childRouteId();
388
422
  },
389
- get children() {
390
- return Solid.createComponent(Match, {
391
- get matchId() {
392
- return currentMatchId();
393
- }
394
- });
395
- }
423
+ keyed: true,
424
+ children: (_routeId) => Solid$1.createComponent(Solid__namespace.Loading, {
425
+ get fallback() {
426
+ return Solid$1.createComponent(Solid$1.Dynamic, {
427
+ get component() {
428
+ return router.options.defaultPendingComponent;
429
+ }
430
+ });
431
+ },
432
+ get children() {
433
+ return Solid$1.createComponent(Match, {
434
+ get matchId() {
435
+ return currentMatchId();
436
+ }
437
+ });
438
+ }
439
+ })
396
440
  });
397
441
  }
398
442
  });
@@ -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 rootRouteId,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\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 // During navigation transitions, matches can be temporarily removed\n // Return null to avoid errors - the component will handle this gracefully\n if (!match) {\n return null\n }\n\n return {\n routeId: match.routeId,\n ssr: match.ssr,\n _displayPending: match._displayPending,\n }\n },\n })\n\n // If match doesn't exist yet, return null (component is being unmounted or not ready)\n if (!matchState()) return null\n\n const route: () => AnyRoute = () => router.routesById[matchState()!.routeId]\n\n const resolvePendingComponent = () =>\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 = () => Solid.Suspense\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={\n // Don't show fallback on server when using no-ssr mode to avoid hydration mismatch\n (isServer ?? router.isServer) || resolvedNoSsr ? undefined : (\n <Dynamic component={resolvePendingComponent()} />\n )\n }\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: ${matchState()!.routeId}`)\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={!(isServer ?? router.isServer)}\n fallback={<Dynamic component={resolvePendingComponent()} />}\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 match = s.matches.find((d) => d.id === props.matchId)\n\n // During navigation transitions, matches can be temporarily removed\n if (!match) {\n return null\n }\n\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: {\n id: match.id,\n status: match.status,\n error: match.error,\n _forcePending: match._forcePending,\n _displayPending: match._displayPending,\n },\n }\n },\n })\n\n if (!matchState()) return null\n\n const route = () => router.routesById[matchState()!.routeId]!\n\n const match = () => matchState()!.match\n\n const componentKey = () => matchState()!.key ?? matchState()!.match.id\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 const keyedOut = () => (\n <Solid.Show when={componentKey()} keyed>\n {(_key) => out()}\n </Solid.Show>\n )\n\n return (\n <Solid.Switch>\n <Solid.Match when={match()._displayPending}>\n {(_) => {\n const [displayPendingResult] = Solid.createResource(\n () =>\n router.getMatch(match().id)?._nonReactive.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)?._nonReactive.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) {\n const routerMatch = router.getMatch(match().id)\n if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {\n // Create a promise that will resolve after the minPendingMs\n if (!(isServer ?? router.isServer)) {\n const minPendingPromise = createControlledPromise<void>()\n\n routerMatch._nonReactive.minPendingPromise = minPendingPromise\n\n setTimeout(() => {\n minPendingPromise.resolve()\n // We've handled the minPendingPromise, so we can delete it\n routerMatch._nonReactive.minPendingPromise = undefined\n }, pendingMinMs)\n }\n }\n }\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?._nonReactive.loadPromise\n })\n\n const FallbackComponent =\n route().options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return (\n <>\n {FallbackComponent && pendingMinMs > 0 ? (\n <Dynamic component={FallbackComponent} />\n ) : null}\n {loaderResult()}\n </>\n )\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'notFound'}>\n {(_) => {\n invariant(isNotFound(match().error), 'Expected a notFound error')\n\n // Use Show with keyed to ensure re-render when routeId changes\n return (\n <Solid.Show when={matchState()!.routeId} keyed>\n {(_routeId) =>\n renderRouteNotFound(router, route(), match().error)\n }\n </Solid.Show>\n )\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)?._nonReactive.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'error'}>\n {(_) => {\n throw match().error\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'success'}>\n {keyedOut()}\n </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\n // During navigation transitions, parent match can be temporarily removed\n // Return false to avoid errors - the component will handle this gracefully\n if (!parentMatch) {\n return false\n }\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 const childMatchStatus = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n return matches[index + 1]?.status\n },\n })\n\n // Only show not-found if we're not in a redirected state\n const shouldShowNotFound = () =>\n childMatchStatus() !== 'redirected' && parentGlobalNotFound()\n\n return (\n <Solid.Show\n when={!shouldShowNotFound() && childMatchId()}\n fallback={\n <Solid.Show when={shouldShowNotFound()}>\n {renderRouteNotFound(router, route(), undefined)}\n </Solid.Show>\n }\n >\n {(matchIdAccessor) => {\n // Use a memo to avoid stale accessor errors while keeping reactivity\n const currentMatchId = Solid.createMemo(() => matchIdAccessor())\n\n return (\n <Solid.Show\n when={routeId() === rootRouteId}\n fallback={<Match matchId={currentMatchId()} />}\n >\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <Match matchId={currentMatchId()} />\n </Solid.Suspense>\n </Solid.Show>\n )\n }}\n </Solid.Show>\n )\n}\n"],"names":["Match","props","router","useRouter","matchState","useRouterState","select","s","match","matches","find","d","id","matchId","routeId","ssr","_displayPending","route","routesById","resolvePendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","resolvedNoSsr","ResolvedSuspenseBoundary","Solid","Suspense","ResolvedCatchBoundary","CatchBoundary","SafeFragment","ResolvedNotFoundBoundary","CatchNotFound","resetKey","loadedAt","parentRouteId","index","findIndex","ShellComponent","shellComponent","_$createComponent","children","matchContext","Provider","value","Dynamic","fallback","_$memo","isServer","undefined","getResetKey","ErrorComponent","error","isNotFound","warning","_$mergeProps","Switch","when","Show","MatchInner","rootRouteId","OnRendered","ScrollRestoration","location","resolvedLocation","state","__TSR_key","createEffect","on","emit","type","getLocationChangeInfo","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","key","JSON","stringify","status","_forcePending","componentKey","out","Comp","defaultComponent","Outlet","keyedOut","keyed","_key","_","displayPendingResult","createResource","getMatch","_nonReactive","displayPendingPromise","minPendingResult","minPendingPromise","pendingMinMs","defaultPendingMinMs","routerMatch","createControlledPromise","setTimeout","resolve","loaderResult","Promise","r","loadPromise","FallbackComponent","invariant","_routeId","renderRouteNotFound","isRedirect","useContext","parentGlobalNotFound","parentMatch","globalNotFound","childMatchId","v","childMatchStatus","shouldShowNotFound","matchIdAccessor","currentMatchId","createMemo"],"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 rootRouteId,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Dynamic } from '@solidjs/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\nconst MatchContext = matchContext as unknown as Solid.Component<{\n value: any\n children?: any\n}>\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 // During navigation transitions, matches can be temporarily removed\n // Return null to avoid errors - the component will handle this gracefully\n if (!match) {\n return null\n }\n\n return {\n routeId: match.routeId,\n ssr: match.ssr,\n _displayPending: match._displayPending,\n }\n },\n })\n\n // If match doesn't exist yet, return null (component is being unmounted or not ready)\n if (!Solid.untrack(matchState)) return null\n\n const route: () => AnyRoute = () => router.routesById[matchState()!.routeId]\n\n const resolvePendingComponent = () =>\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 = Solid.createMemo(\n () => matchState()!.ssr === false || matchState()!.ssr === 'data-only',\n )\n\n const ResolvedSuspenseBoundary = () =>\n resolvedNoSsr() ? SafeFragment : Solid.Loading\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 = Solid.createMemo(() =>\n route().isRoot\n ? ((route().options as RootRouteOptions).shellComponent ?? SafeFragment)\n : SafeFragment,\n )\n\n return (\n <Dynamic component={ShellComponent()}>\n <MatchContext value={() => props.matchId}>\n <Dynamic\n component={ResolvedSuspenseBoundary()}\n fallback={\n // Don't show fallback on server when using no-ssr mode to avoid hydration mismatch\n (isServer ?? router.isServer) || resolvedNoSsr() ? undefined : (\n <Dynamic component={resolvePendingComponent()} />\n )\n }\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(\n false,\n `Error in route match: ${Solid.untrack(matchState)!.routeId}`,\n )\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={!(isServer ?? router.isServer)}\n fallback={<Dynamic component={resolvePendingComponent()} />}\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>\n\n {parentRouteId() === rootRouteId ? (\n <>\n <OnRendered />\n <ScrollRestoration />\n </>\n ) : null}\n </Dynamic>\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).\n//\n// In Solid, createEffect(source, fn) fires on initial mount as well as on\n// reactive changes. OnRendered can also remount when the first child route\n// changes (e.g. navigating from / to /posts). We deduplicate by tracking\n// the last emitted resolvedLocation key per router so each unique resolved\n// location only triggers one onRendered event regardless of remounts.\nconst lastOnRenderedKey = new WeakMap<object, string>()\n\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 () => [location()] as const,\n ([location]) => {\n if (!location) return\n if (lastOnRenderedKey.get(router) === location) return\n lastOnRenderedKey.set(router, 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 match = s.matches.find((d) => d.id === props.matchId)\n\n // During navigation transitions, matches can be temporarily removed\n if (!match) {\n return null\n }\n\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: {\n id: match.id,\n status: match.status,\n error: match.error,\n _forcePending: match._forcePending,\n _displayPending: match._displayPending,\n },\n }\n },\n })\n\n if (!Solid.untrack(matchState)) return null\n\n const route = () => router.routesById[matchState()!.routeId]!\n\n const match = () => matchState()!.match\n\n const componentKey = () => matchState()!.key ?? matchState()!.match.id\n\n const out = () => {\n const currentRoute = Solid.untrack(route)\n const Comp =\n currentRoute.options.component ?? router.options.defaultComponent\n if (Comp) {\n return <Comp />\n }\n return <Outlet />\n }\n\n const keyedOut = () => (\n <Solid.Show when={componentKey()} keyed>\n {(_key) => out()}\n </Solid.Show>\n )\n\n return (\n <Solid.Switch>\n <Solid.Match when={match()._displayPending}>\n {(_) => {\n const matchId = Solid.untrack(() => match().id)\n const displayPendingResult = Solid.createMemo(\n () => router.getMatch(matchId)?._nonReactive.displayPendingPromise,\n )\n\n return <>{displayPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match()._forcePending}>\n {(_) => {\n const matchId = Solid.untrack(() => match().id)\n const minPendingResult = Solid.createMemo(\n () => router.getMatch(matchId)?._nonReactive.minPendingPromise,\n )\n\n return <>{minPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'pending'}>\n {(_) => {\n const currentMatch = Solid.untrack(match)\n const currentRoute = Solid.untrack(route)\n const pendingMinMs =\n currentRoute.options.pendingMinMs ??\n router.options.defaultPendingMinMs\n\n if (pendingMinMs) {\n const routerMatch = router.getMatch(currentMatch.id)\n if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {\n // Create a promise that will resolve after the minPendingMs\n if (!(isServer ?? router.isServer)) {\n const minPendingPromise = createControlledPromise<void>()\n\n routerMatch._nonReactive.minPendingPromise = minPendingPromise\n\n setTimeout(() => {\n minPendingPromise.resolve()\n // We've handled the minPendingPromise, so we can delete it\n routerMatch._nonReactive.minPendingPromise = undefined\n }, pendingMinMs)\n }\n }\n }\n\n const loaderResult = Solid.createMemo(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(currentMatch.id)?._nonReactive.loadPromise\n })\n\n const FallbackComponent =\n currentRoute.options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return (\n <>\n {FallbackComponent && pendingMinMs > 0 ? (\n <Dynamic component={FallbackComponent} />\n ) : null}\n {loaderResult()}\n </>\n )\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'notFound'}>\n {(_) => {\n const currentMatch = Solid.untrack(match)\n const currentRoute = Solid.untrack(route)\n const currentRouteId = Solid.untrack(() => matchState()!.routeId)\n invariant(isNotFound(currentMatch.error), 'Expected a notFound error')\n\n // Use Show with keyed to ensure re-render when routeId changes\n return (\n <Solid.Show when={currentRouteId} keyed>\n {(_routeId) =>\n renderRouteNotFound(router, currentRoute, currentMatch.error)\n }\n </Solid.Show>\n )\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'redirected'}>\n {(_) => {\n const matchId = Solid.untrack(() => match().id)\n invariant(\n isRedirect(Solid.untrack(match).error),\n 'Expected a redirect error',\n )\n\n const loaderResult = Solid.createMemo(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(matchId)?._nonReactive.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'error'}>\n {(_) => {\n if (isServer ?? router.isServer) {\n const currentMatch = Solid.untrack(match)\n const RouteErrorComponent =\n (Solid.untrack(route).options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return (\n <RouteErrorComponent\n error={currentMatch.error}\n info={{\n componentStack: '',\n }}\n />\n )\n }\n\n throw Solid.untrack(match).error\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'success'}>\n {keyedOut()}\n </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\n // During navigation transitions, parent match can be temporarily removed\n // Return false to avoid errors - the component will handle this gracefully\n if (!parentMatch) {\n return false\n }\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 const childRouteId = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n return matches[index + 1]?.routeId\n },\n })\n\n const childMatchStatus = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n return matches[index + 1]?.status\n },\n })\n\n // Only show not-found if we're not in a redirected state\n const shouldShowNotFound = () =>\n childMatchStatus() !== 'redirected' && parentGlobalNotFound()\n\n return (\n <Solid.Show\n when={!shouldShowNotFound() && childMatchId()}\n fallback={\n <Solid.Show when={shouldShowNotFound()}>\n {renderRouteNotFound(router, route(), undefined)}\n </Solid.Show>\n }\n >\n {(matchIdAccessor) => {\n // Use a memo to avoid stale accessor errors while keeping reactivity\n const currentMatchId = Solid.createMemo(() => matchIdAccessor())\n\n return (\n <Solid.Show\n when={routeId() === rootRouteId}\n fallback={<Match matchId={currentMatchId()} />}\n >\n <Solid.Show when={childRouteId()} keyed>\n {(_routeId) => (\n <Solid.Loading\n fallback={\n <Dynamic\n component={router.options.defaultPendingComponent}\n />\n }\n >\n <Match matchId={currentMatchId()} />\n </Solid.Loading>\n )}\n </Solid.Show>\n </Solid.Show>\n )\n }}\n </Solid.Show>\n )\n}\n"],"names":["MatchContext","matchContext","Match","props","router","useRouter","matchState","useRouterState","select","s","match","matches","find","d","id","matchId","routeId","ssr","_displayPending","Solid","untrack","route","routesById","resolvePendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","resolvedNoSsr","createMemo","ResolvedSuspenseBoundary","SafeFragment","Loading","ResolvedCatchBoundary","CatchBoundary","ResolvedNotFoundBoundary","CatchNotFound","resetKey","loadedAt","parentRouteId","index","findIndex","ShellComponent","shellComponent","_$createComponent","Dynamic","children","value","fallback","_$memo","isServer","undefined","getResetKey","ErrorComponent","error","isNotFound","warning","_$mergeProps","Switch","when","Show","MatchInner","rootRouteId","OnRendered","ScrollRestoration","lastOnRenderedKey","WeakMap","location","resolvedLocation","state","__TSR_key","createEffect","get","set","emit","type","getLocationChangeInfo","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","key","JSON","stringify","status","_forcePending","componentKey","out","currentRoute","Comp","defaultComponent","Outlet","keyedOut","keyed","_key","_","displayPendingResult","getMatch","_nonReactive","displayPendingPromise","minPendingResult","minPendingPromise","currentMatch","pendingMinMs","defaultPendingMinMs","routerMatch","createControlledPromise","setTimeout","resolve","loaderResult","Promise","r","loadPromise","FallbackComponent","currentRouteId","invariant","_routeId","renderRouteNotFound","isRedirect","RouteErrorComponent","info","componentStack","useContext","parentGlobalNotFound","parentMatch","globalNotFound","childMatchId","v","childRouteId","childMatchStatus","shouldShowNotFound","matchIdAccessor","currentMatchId"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const Solid$1 = require("solid-js/web");
3
+ const Solid$1 = require("@solidjs/web");
4
4
  const Solid = require("solid-js");
5
5
  const warning = require("tiny-warning");
6
6
  const routerCore = require("@tanstack/router-core");
@@ -29,9 +29,10 @@ function _interopNamespaceDefault(e) {
29
29
  return Object.freeze(n);
30
30
  }
31
31
  const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid);
32
+ const MatchContext = matchContext.matchContext;
32
33
  function Matches() {
33
34
  const router = useRouter.useRouter();
34
- const ResolvedSuspense = (isServer.isServer ?? router.isServer) || typeof document !== "undefined" && router.ssr ? SafeFragment.SafeFragment : Solid__namespace.Suspense;
35
+ const ResolvedSuspense = router.options.disableGlobalCatchBoundary || (isServer.isServer ?? router.isServer) || typeof document !== "undefined" && router.ssr ? SafeFragment.SafeFragment : Solid__namespace.Loading;
35
36
  const rootRoute = () => router.routesById[routerCore.rootRouteId];
36
37
  const PendingComponent = rootRoute().options.pendingComponent ?? router.options.defaultPendingComponent;
37
38
  const OptionalWrapper = router.options.InnerWrap || SafeFragment.SafeFragment;
@@ -58,24 +59,30 @@ function MatchesInner() {
58
59
  const resetKey = useRouterState.useRouterState({
59
60
  select: (s) => s.loadedAt
60
61
  });
61
- const matchComponent = () => {
62
- return Solid$1.createComponent(Solid__namespace.Show, {
63
- get when() {
64
- return matchId();
65
- },
62
+ const matchContent = () => Solid$1.createComponent(Solid__namespace.Show, {
63
+ get when() {
64
+ return matchId();
65
+ },
66
+ get children() {
67
+ return Solid$1.createComponent(Match.Match, {
68
+ get matchId() {
69
+ return matchId();
70
+ }
71
+ });
72
+ }
73
+ });
74
+ if (router.options.disableGlobalCatchBoundary) {
75
+ return Solid$1.createComponent(MatchContext, {
76
+ value: matchId,
66
77
  get children() {
67
- return Solid$1.createComponent(Match.Match, {
68
- get matchId() {
69
- return matchId();
70
- }
71
- });
78
+ return matchContent();
72
79
  }
73
80
  });
74
- };
75
- return Solid$1.createComponent(matchContext.matchContext.Provider, {
81
+ }
82
+ return Solid$1.createComponent(MatchContext, {
76
83
  value: matchId,
77
84
  get children() {
78
- return Solid$1.memo(() => !!router.options.disableGlobalCatchBoundary)() ? matchComponent() : Solid$1.createComponent(CatchBoundary.CatchBoundary, {
85
+ return Solid$1.createComponent(CatchBoundary.CatchBoundary, {
79
86
  getResetKey: () => resetKey(),
80
87
  errorComponent: CatchBoundary.ErrorComponent,
81
88
  get onCatch() {
@@ -86,7 +93,7 @@ function MatchesInner() {
86
93
  } : void 0;
87
94
  },
88
95
  get children() {
89
- return matchComponent();
96
+ return matchContent();
90
97
  }
91
98
  });
92
99
  }