@tanstack/solid-router 1.167.4 → 1.168.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/dist/cjs/Match.cjs +244 -223
  2. package/dist/cjs/Match.cjs.map +1 -1
  3. package/dist/cjs/Match.d.cts +1 -3
  4. package/dist/cjs/Matches.cjs +32 -31
  5. package/dist/cjs/Matches.cjs.map +1 -1
  6. package/dist/cjs/Scripts.cjs +10 -8
  7. package/dist/cjs/Scripts.cjs.map +1 -1
  8. package/dist/cjs/Scripts.d.cts +2 -1
  9. package/dist/cjs/Transitioner.cjs +26 -26
  10. package/dist/cjs/Transitioner.cjs.map +1 -1
  11. package/dist/cjs/headContentUtils.cjs +15 -15
  12. package/dist/cjs/headContentUtils.cjs.map +1 -1
  13. package/dist/cjs/index.cjs +1 -1
  14. package/dist/cjs/index.dev.cjs +1 -1
  15. package/dist/cjs/link.cjs +119 -84
  16. package/dist/cjs/link.cjs.map +1 -1
  17. package/dist/cjs/matchContext.cjs +7 -5
  18. package/dist/cjs/matchContext.cjs.map +1 -1
  19. package/dist/cjs/matchContext.d.cts +8 -2
  20. package/dist/cjs/not-found.cjs +8 -4
  21. package/dist/cjs/not-found.cjs.map +1 -1
  22. package/dist/cjs/not-found.d.cts +1 -1
  23. package/dist/cjs/router.cjs +2 -1
  24. package/dist/cjs/router.cjs.map +1 -1
  25. package/dist/cjs/routerStores.cjs +67 -0
  26. package/dist/cjs/routerStores.cjs.map +1 -0
  27. package/dist/cjs/routerStores.d.cts +10 -0
  28. package/dist/cjs/ssr/RouterClient.cjs +1 -1
  29. package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
  30. package/dist/cjs/ssr/renderRouterToStream.cjs +1 -1
  31. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
  32. package/dist/cjs/ssr/renderRouterToString.cjs +2 -2
  33. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
  34. package/dist/cjs/ssr/renderRouterToString.d.cts +1 -1
  35. package/dist/cjs/useCanGoBack.cjs +6 -2
  36. package/dist/cjs/useCanGoBack.cjs.map +1 -1
  37. package/dist/cjs/useCanGoBack.d.cts +2 -1
  38. package/dist/cjs/useLoaderDeps.cjs +2 -3
  39. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  40. package/dist/cjs/useLocation.cjs +13 -2
  41. package/dist/cjs/useLocation.cjs.map +1 -1
  42. package/dist/cjs/useMatch.cjs +17 -15
  43. package/dist/cjs/useMatch.cjs.map +1 -1
  44. package/dist/cjs/useParams.cjs +1 -1
  45. package/dist/cjs/useParams.cjs.map +1 -1
  46. package/dist/cjs/useRouterState.cjs +12 -19
  47. package/dist/cjs/useRouterState.cjs.map +1 -1
  48. package/dist/cjs/useSearch.cjs +2 -1
  49. package/dist/cjs/useSearch.cjs.map +1 -1
  50. package/dist/cjs/utils.cjs +0 -14
  51. package/dist/cjs/utils.cjs.map +1 -1
  52. package/dist/cjs/utils.d.cts +0 -4
  53. package/dist/esm/Match.d.ts +1 -3
  54. package/dist/esm/Match.js +245 -224
  55. package/dist/esm/Match.js.map +1 -1
  56. package/dist/esm/Matches.js +34 -33
  57. package/dist/esm/Matches.js.map +1 -1
  58. package/dist/esm/Scripts.d.ts +2 -1
  59. package/dist/esm/Scripts.js +8 -7
  60. package/dist/esm/Scripts.js.map +1 -1
  61. package/dist/esm/Transitioner.js +26 -26
  62. package/dist/esm/Transitioner.js.map +1 -1
  63. package/dist/esm/headContentUtils.js +15 -15
  64. package/dist/esm/headContentUtils.js.map +1 -1
  65. package/dist/esm/index.dev.js +1 -1
  66. package/dist/esm/index.js +1 -1
  67. package/dist/esm/link.js +120 -85
  68. package/dist/esm/link.js.map +1 -1
  69. package/dist/esm/matchContext.d.ts +8 -2
  70. package/dist/esm/matchContext.js +7 -4
  71. package/dist/esm/matchContext.js.map +1 -1
  72. package/dist/esm/not-found.d.ts +1 -1
  73. package/dist/esm/not-found.js +6 -3
  74. package/dist/esm/not-found.js.map +1 -1
  75. package/dist/esm/router.js +2 -1
  76. package/dist/esm/router.js.map +1 -1
  77. package/dist/esm/routerStores.d.ts +10 -0
  78. package/dist/esm/routerStores.js +65 -0
  79. package/dist/esm/routerStores.js.map +1 -0
  80. package/dist/esm/ssr/RouterClient.js +1 -1
  81. package/dist/esm/ssr/RouterClient.js.map +1 -1
  82. package/dist/esm/ssr/renderRouterToStream.js +1 -1
  83. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  84. package/dist/esm/ssr/renderRouterToString.d.ts +1 -1
  85. package/dist/esm/ssr/renderRouterToString.js +2 -2
  86. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  87. package/dist/esm/useCanGoBack.d.ts +2 -1
  88. package/dist/esm/useCanGoBack.js +4 -2
  89. package/dist/esm/useCanGoBack.js.map +1 -1
  90. package/dist/esm/useLoaderDeps.js +2 -3
  91. package/dist/esm/useLoaderDeps.js.map +1 -1
  92. package/dist/esm/useLocation.js +11 -2
  93. package/dist/esm/useLocation.js.map +1 -1
  94. package/dist/esm/useMatch.js +18 -16
  95. package/dist/esm/useMatch.js.map +1 -1
  96. package/dist/esm/useParams.js +1 -1
  97. package/dist/esm/useParams.js.map +1 -1
  98. package/dist/esm/useRouterState.js +10 -18
  99. package/dist/esm/useRouterState.js.map +1 -1
  100. package/dist/esm/useSearch.js +2 -1
  101. package/dist/esm/useSearch.js.map +1 -1
  102. package/dist/esm/utils.d.ts +0 -4
  103. package/dist/esm/utils.js +1 -14
  104. package/dist/esm/utils.js.map +1 -1
  105. package/dist/source/Match.d.ts +1 -3
  106. package/dist/source/Match.jsx +246 -237
  107. package/dist/source/Match.jsx.map +1 -1
  108. package/dist/source/Matches.jsx +42 -44
  109. package/dist/source/Matches.jsx.map +1 -1
  110. package/dist/source/Scripts.d.ts +2 -1
  111. package/dist/source/Scripts.jsx +31 -36
  112. package/dist/source/Scripts.jsx.map +1 -1
  113. package/dist/source/Transitioner.jsx +26 -31
  114. package/dist/source/Transitioner.jsx.map +1 -1
  115. package/dist/source/headContentUtils.jsx +64 -72
  116. package/dist/source/headContentUtils.jsx.map +1 -1
  117. package/dist/source/link.jsx +136 -107
  118. package/dist/source/link.jsx.map +1 -1
  119. package/dist/source/matchContext.d.ts +8 -2
  120. package/dist/source/matchContext.jsx +7 -3
  121. package/dist/source/matchContext.jsx.map +1 -1
  122. package/dist/source/not-found.d.ts +1 -1
  123. package/dist/source/not-found.jsx +6 -5
  124. package/dist/source/not-found.jsx.map +1 -1
  125. package/dist/source/router.js +2 -1
  126. package/dist/source/router.js.map +1 -1
  127. package/dist/source/routerStores.d.ts +10 -0
  128. package/dist/source/routerStores.js +71 -0
  129. package/dist/source/routerStores.js.map +1 -0
  130. package/dist/source/ssr/RouterClient.jsx +1 -1
  131. package/dist/source/ssr/RouterClient.jsx.map +1 -1
  132. package/dist/source/ssr/renderRouterToStream.jsx +1 -1
  133. package/dist/source/ssr/renderRouterToStream.jsx.map +1 -1
  134. package/dist/source/ssr/renderRouterToString.d.ts +1 -1
  135. package/dist/source/ssr/renderRouterToString.jsx +2 -2
  136. package/dist/source/ssr/renderRouterToString.jsx.map +1 -1
  137. package/dist/source/useCanGoBack.d.ts +2 -1
  138. package/dist/source/useCanGoBack.js +4 -2
  139. package/dist/source/useCanGoBack.js.map +1 -1
  140. package/dist/source/useLoaderDeps.jsx +2 -3
  141. package/dist/source/useLoaderDeps.jsx.map +1 -1
  142. package/dist/source/useLocation.jsx +13 -3
  143. package/dist/source/useLocation.jsx.map +1 -1
  144. package/dist/source/useMatch.jsx +30 -27
  145. package/dist/source/useMatch.jsx.map +1 -1
  146. package/dist/source/useParams.jsx +1 -1
  147. package/dist/source/useParams.jsx.map +1 -1
  148. package/dist/source/useRouterState.jsx +12 -33
  149. package/dist/source/useRouterState.jsx.map +1 -1
  150. package/dist/source/useSearch.jsx +2 -1
  151. package/dist/source/useSearch.jsx.map +1 -1
  152. package/dist/source/utils.d.ts +0 -4
  153. package/dist/source/utils.js +0 -13
  154. package/dist/source/utils.js.map +1 -1
  155. package/package.json +2 -3
  156. package/skills/solid-router/SKILL.md +2 -0
  157. package/src/Match.tsx +351 -304
  158. package/src/Matches.tsx +49 -52
  159. package/src/Scripts.tsx +40 -41
  160. package/src/Transitioner.tsx +67 -66
  161. package/src/headContentUtils.tsx +89 -91
  162. package/src/link.tsx +179 -141
  163. package/src/matchContext.tsx +16 -7
  164. package/src/not-found.tsx +6 -6
  165. package/src/router.ts +2 -1
  166. package/src/routerStores.ts +107 -0
  167. package/src/ssr/RouterClient.tsx +1 -1
  168. package/src/ssr/renderRouterToStream.tsx +1 -1
  169. package/src/ssr/renderRouterToString.tsx +2 -2
  170. package/src/useCanGoBack.ts +6 -2
  171. package/src/useLoaderDeps.tsx +2 -3
  172. package/src/useLocation.tsx +18 -5
  173. package/src/useMatch.tsx +36 -43
  174. package/src/useParams.tsx +2 -3
  175. package/src/useRouterState.tsx +17 -41
  176. package/src/useSearch.tsx +2 -1
  177. package/src/utils.ts +0 -20
@@ -1,7 +1,6 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_CatchBoundary = require("./CatchBoundary.cjs");
3
3
  const require_useRouter = require("./useRouter.cjs");
4
- const require_useRouterState = require("./useRouterState.cjs");
5
4
  const require_matchContext = require("./matchContext.cjs");
6
5
  const require_SafeFragment = require("./SafeFragment.cjs");
7
6
  const require_not_found = require("./not-found.cjs");
@@ -19,273 +18,297 @@ tiny_invariant = require_runtime.__toESM(tiny_invariant);
19
18
  //#region src/Match.tsx
20
19
  var Match = (props) => {
21
20
  const router = require_useRouter.useRouter();
22
- const matchState = require_useRouterState.useRouterState({ select: (s) => {
23
- const match = s.matches.find((d) => d.id === props.matchId);
24
- if (!match) return null;
21
+ const match = solid_js.createMemo(() => {
22
+ const id = props.matchId;
23
+ if (!id) return void 0;
24
+ return router.stores.activeMatchStoresById.get(id)?.state;
25
+ });
26
+ const rawMatchState = solid_js.createMemo(() => {
27
+ const currentMatch = match();
28
+ if (!currentMatch) return null;
29
+ const routeId = currentMatch.routeId;
30
+ const parentRouteId = router.routesById[routeId]?.parentRoute?.id;
25
31
  return {
26
- routeId: match.routeId,
27
- ssr: match.ssr,
28
- _displayPending: match._displayPending
32
+ matchId: currentMatch.id,
33
+ routeId,
34
+ ssr: currentMatch.ssr,
35
+ _displayPending: currentMatch._displayPending,
36
+ parentRouteId
29
37
  };
30
- } });
31
- if (!matchState()) return null;
32
- const route = () => router.routesById[matchState().routeId];
33
- const resolvePendingComponent = () => route().options.pendingComponent ?? router.options.defaultPendingComponent;
34
- const routeErrorComponent = () => route().options.errorComponent ?? router.options.defaultErrorComponent;
35
- const routeOnCatch = () => route().options.onCatch ?? router.options.defaultOnCatch;
36
- const routeNotFoundComponent = () => route().isRoot ? route().options.notFoundComponent ?? router.options.notFoundRoute?.options.component : route().options.notFoundComponent;
37
- const resolvedNoSsr = matchState().ssr === false || matchState().ssr === "data-only";
38
- const ResolvedSuspenseBoundary = () => solid_js.Suspense;
39
- const ResolvedCatchBoundary = () => routeErrorComponent() ? require_CatchBoundary.CatchBoundary : require_SafeFragment.SafeFragment;
40
- const ResolvedNotFoundBoundary = () => routeNotFoundComponent() ? require_not_found.CatchNotFound : require_SafeFragment.SafeFragment;
41
- const resetKey = require_useRouterState.useRouterState({ select: (s) => s.loadedAt });
42
- const parentRouteId = require_useRouterState.useRouterState({ select: (s) => {
43
- const index = s.matches.findIndex((d) => d.id === props.matchId);
44
- return s.matches[index - 1]?.routeId;
45
- } });
46
- return (0, solid_js_web.createComponent)(route().isRoot ? route().options.shellComponent ?? require_SafeFragment.SafeFragment : require_SafeFragment.SafeFragment, { get children() {
47
- return [(0, solid_js_web.createComponent)(require_matchContext.matchContext.Provider, {
48
- value: () => props.matchId,
49
- get children() {
50
- return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, {
51
- get component() {
52
- return ResolvedSuspenseBoundary();
53
- },
54
- get fallback() {
55
- return (0, solid_js_web.memo)(() => !!((_tanstack_router_core_isServer.isServer ?? router.isServer) || resolvedNoSsr))() ? void 0 : (0, solid_js_web.createComponent)(solid_js_web.Dynamic, { get component() {
56
- return resolvePendingComponent();
57
- } });
58
- },
38
+ });
39
+ const nearestMatch = {
40
+ matchId: () => rawMatchState()?.matchId,
41
+ routeId: () => rawMatchState()?.routeId,
42
+ match,
43
+ hasPending: solid_js.createMemo(() => {
44
+ const currentRouteId = rawMatchState()?.routeId;
45
+ return currentRouteId ? Boolean(router.stores.pendingRouteIds.state[currentRouteId]) : false;
46
+ })
47
+ };
48
+ return (0, solid_js_web.createComponent)(solid_js.Show, {
49
+ get when() {
50
+ return rawMatchState();
51
+ },
52
+ children: (currentMatchState) => {
53
+ const route = () => router.routesById[currentMatchState().routeId];
54
+ const resolvePendingComponent = () => route().options.pendingComponent ?? router.options.defaultPendingComponent;
55
+ const routeErrorComponent = () => route().options.errorComponent ?? router.options.defaultErrorComponent;
56
+ const routeOnCatch = () => route().options.onCatch ?? router.options.defaultOnCatch;
57
+ const routeNotFoundComponent = () => route().isRoot ? route().options.notFoundComponent ?? router.options.notFoundRoute?.options.component : route().options.notFoundComponent;
58
+ const resolvedNoSsr = currentMatchState().ssr === false || currentMatchState().ssr === "data-only";
59
+ const ResolvedSuspenseBoundary = () => solid_js.Suspense;
60
+ const ResolvedCatchBoundary = () => routeErrorComponent() ? require_CatchBoundary.CatchBoundary : require_SafeFragment.SafeFragment;
61
+ const ResolvedNotFoundBoundary = () => routeNotFoundComponent() ? require_not_found.CatchNotFound : require_SafeFragment.SafeFragment;
62
+ return (0, solid_js_web.createComponent)(route().isRoot ? route().options.shellComponent ?? require_SafeFragment.SafeFragment : require_SafeFragment.SafeFragment, { get children() {
63
+ return [(0, solid_js_web.createComponent)(require_matchContext.nearestMatchContext.Provider, {
64
+ value: nearestMatch,
59
65
  get children() {
60
66
  return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, {
61
67
  get component() {
62
- return ResolvedCatchBoundary();
68
+ return ResolvedSuspenseBoundary();
63
69
  },
64
- getResetKey: () => resetKey(),
65
- get errorComponent() {
66
- return routeErrorComponent() || require_CatchBoundary.ErrorComponent;
67
- },
68
- onCatch: (error) => {
69
- if ((0, _tanstack_router_core.isNotFound)(error)) throw error;
70
- (0, tiny_warning.default)(false, `Error in route match: ${matchState().routeId}`);
71
- routeOnCatch()?.(error);
70
+ get fallback() {
71
+ return (0, solid_js_web.memo)(() => !!((_tanstack_router_core_isServer.isServer ?? router.isServer) && resolvedNoSsr))() ? void 0 : (0, solid_js_web.createComponent)(solid_js_web.Dynamic, { get component() {
72
+ return resolvePendingComponent();
73
+ } });
72
74
  },
73
75
  get children() {
74
76
  return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, {
75
77
  get component() {
76
- return ResolvedNotFoundBoundary();
78
+ return ResolvedCatchBoundary();
79
+ },
80
+ getResetKey: () => router.stores.loadedAt.state,
81
+ get errorComponent() {
82
+ return routeErrorComponent() || require_CatchBoundary.ErrorComponent;
77
83
  },
78
- fallback: (error) => {
79
- if (!routeNotFoundComponent() || error.routeId && error.routeId !== matchState().routeId || !error.routeId && !route().isRoot) throw error;
80
- return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, (0, solid_js_web.mergeProps)({ get component() {
81
- return routeNotFoundComponent();
82
- } }, error));
84
+ onCatch: (error) => {
85
+ if ((0, _tanstack_router_core.isNotFound)(error)) throw error;
86
+ (0, tiny_warning.default)(false, `Error in route match: ${currentMatchState().routeId}`);
87
+ routeOnCatch()?.(error);
83
88
  },
84
89
  get children() {
85
- return (0, solid_js_web.createComponent)(solid_js.Switch, { get children() {
86
- return [(0, solid_js_web.createComponent)(solid_js.Match, {
87
- when: resolvedNoSsr,
88
- get children() {
89
- return (0, solid_js_web.createComponent)(solid_js.Show, {
90
- get when() {
91
- return !(_tanstack_router_core_isServer.isServer ?? router.isServer);
92
- },
93
- get fallback() {
94
- return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, { get component() {
95
- return resolvePendingComponent();
96
- } });
97
- },
90
+ return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, {
91
+ get component() {
92
+ return ResolvedNotFoundBoundary();
93
+ },
94
+ fallback: (error) => {
95
+ if (!routeNotFoundComponent() || error.routeId && error.routeId !== currentMatchState().routeId || !error.routeId && !route().isRoot) throw error;
96
+ return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, (0, solid_js_web.mergeProps)({ get component() {
97
+ return routeNotFoundComponent();
98
+ } }, error));
99
+ },
100
+ get children() {
101
+ return (0, solid_js_web.createComponent)(solid_js.Switch, { get children() {
102
+ return [(0, solid_js_web.createComponent)(solid_js.Match, {
103
+ when: resolvedNoSsr,
98
104
  get children() {
99
- return (0, solid_js_web.createComponent)(MatchInner, { get matchId() {
100
- return props.matchId;
101
- } });
105
+ return (0, solid_js_web.createComponent)(solid_js.Show, {
106
+ get when() {
107
+ return !(_tanstack_router_core_isServer.isServer ?? router.isServer);
108
+ },
109
+ get fallback() {
110
+ return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, { get component() {
111
+ return resolvePendingComponent();
112
+ } });
113
+ },
114
+ get children() {
115
+ return (0, solid_js_web.createComponent)(MatchInner, {});
116
+ }
117
+ });
102
118
  }
103
- });
104
- }
105
- }), (0, solid_js_web.createComponent)(solid_js.Match, {
106
- when: !resolvedNoSsr,
107
- get children() {
108
- return (0, solid_js_web.createComponent)(MatchInner, { get matchId() {
109
- return props.matchId;
110
- } });
111
- }
112
- })];
113
- } });
119
+ }), (0, solid_js_web.createComponent)(solid_js.Match, {
120
+ when: !resolvedNoSsr,
121
+ get children() {
122
+ return (0, solid_js_web.createComponent)(MatchInner, {});
123
+ }
124
+ })];
125
+ } });
126
+ }
127
+ });
114
128
  }
115
129
  });
116
130
  }
117
131
  });
118
132
  }
119
- });
120
- }
121
- }), (0, solid_js_web.memo)(() => (0, solid_js_web.memo)(() => parentRouteId() === _tanstack_router_core.rootRouteId)() ? [(0, solid_js_web.createComponent)(OnRendered, {}), (0, solid_js_web.createComponent)(require_scroll_restoration.ScrollRestoration, {})] : null)];
122
- } });
133
+ }), (0, solid_js_web.memo)(() => (0, solid_js_web.memo)(() => currentMatchState().parentRouteId === _tanstack_router_core.rootRouteId)() ? [(0, solid_js_web.createComponent)(OnRendered, {}), (0, solid_js_web.createComponent)(require_scroll_restoration.ScrollRestoration, {})] : null)];
134
+ } });
135
+ }
136
+ });
123
137
  };
124
138
  function OnRendered() {
125
139
  const router = require_useRouter.useRouter();
126
- const location = require_useRouterState.useRouterState({ select: (s) => {
127
- return s.resolvedLocation?.state.__TSR_key;
128
- } });
140
+ const location = solid_js.createMemo(() => router.stores.resolvedLocation.state?.state.__TSR_key);
129
141
  solid_js.createEffect(solid_js.on([location], () => {
130
142
  router.emit({
131
143
  type: "onRendered",
132
- ...(0, _tanstack_router_core.getLocationChangeInfo)(router.state)
144
+ ...(0, _tanstack_router_core.getLocationChangeInfo)(router.stores.location.state, router.stores.resolvedLocation.state)
133
145
  });
134
146
  }));
135
147
  return null;
136
148
  }
137
- var MatchInner = (props) => {
149
+ var MatchInner = () => {
138
150
  const router = require_useRouter.useRouter();
139
- const matchState = require_useRouterState.useRouterState({ select: (s) => {
140
- const match = s.matches.find((d) => d.id === props.matchId);
141
- if (!match) return null;
142
- const routeId = match.routeId;
151
+ const match = solid_js.useContext(require_matchContext.nearestMatchContext).match;
152
+ const rawMatchState = solid_js.createMemo(() => {
153
+ const currentMatch = match();
154
+ if (!currentMatch) return null;
155
+ const routeId = currentMatch.routeId;
143
156
  const remountDeps = (router.routesById[routeId].options.remountDeps ?? router.options.defaultRemountDeps)?.({
144
157
  routeId,
145
- loaderDeps: match.loaderDeps,
146
- params: match._strictParams,
147
- search: match._strictSearch
158
+ loaderDeps: currentMatch.loaderDeps,
159
+ params: currentMatch._strictParams,
160
+ search: currentMatch._strictSearch
148
161
  });
149
162
  return {
150
163
  key: remountDeps ? JSON.stringify(remountDeps) : void 0,
151
164
  routeId,
152
165
  match: {
153
- id: match.id,
154
- status: match.status,
155
- error: match.error,
156
- _forcePending: match._forcePending,
157
- _displayPending: match._displayPending
166
+ id: currentMatch.id,
167
+ status: currentMatch.status,
168
+ error: currentMatch.error,
169
+ _forcePending: currentMatch._forcePending ?? false,
170
+ _displayPending: currentMatch._displayPending ?? false
158
171
  }
159
172
  };
160
- } });
161
- if (!matchState()) return null;
162
- const route = () => router.routesById[matchState().routeId];
163
- const match = () => matchState().match;
164
- const componentKey = () => matchState().key ?? matchState().match.id;
165
- const out = () => {
166
- const Comp = route().options.component ?? router.options.defaultComponent;
167
- if (Comp) return (0, solid_js_web.createComponent)(Comp, {});
168
- return (0, solid_js_web.createComponent)(Outlet, {});
169
- };
170
- const keyedOut = () => (0, solid_js_web.createComponent)(solid_js.Show, {
173
+ });
174
+ return (0, solid_js_web.createComponent)(solid_js.Show, {
171
175
  get when() {
172
- return componentKey();
176
+ return rawMatchState();
173
177
  },
174
- keyed: true,
175
- children: (_key) => out()
176
- });
177
- return (0, solid_js_web.createComponent)(solid_js.Switch, { get children() {
178
- return [
179
- (0, solid_js_web.createComponent)(solid_js.Match, {
178
+ children: (currentMatchState) => {
179
+ const route = () => router.routesById[currentMatchState().routeId];
180
+ const currentMatch = () => currentMatchState().match;
181
+ const componentKey = () => currentMatchState().key ?? currentMatchState().match.id;
182
+ const out = () => {
183
+ const Comp = route().options.component ?? router.options.defaultComponent;
184
+ if (Comp) return (0, solid_js_web.createComponent)(Comp, {});
185
+ return (0, solid_js_web.createComponent)(Outlet, {});
186
+ };
187
+ const keyedOut = () => (0, solid_js_web.createComponent)(solid_js.Show, {
180
188
  get when() {
181
- return match()._displayPending;
189
+ return componentKey();
182
190
  },
183
- children: (_) => {
184
- const [displayPendingResult] = solid_js.createResource(() => router.getMatch(match().id)?._nonReactive.displayPendingPromise);
185
- return (0, solid_js_web.memo)(displayPendingResult);
186
- }
187
- }),
188
- (0, solid_js_web.createComponent)(solid_js.Match, {
189
- get when() {
190
- return match()._forcePending;
191
- },
192
- children: (_) => {
193
- const [minPendingResult] = solid_js.createResource(() => router.getMatch(match().id)?._nonReactive.minPendingPromise);
194
- return (0, solid_js_web.memo)(minPendingResult);
195
- }
196
- }),
197
- (0, solid_js_web.createComponent)(solid_js.Match, {
198
- get when() {
199
- return match().status === "pending";
200
- },
201
- children: (_) => {
202
- const pendingMinMs = route().options.pendingMinMs ?? router.options.defaultPendingMinMs;
203
- if (pendingMinMs) {
204
- const routerMatch = router.getMatch(match().id);
205
- if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {
206
- if (!(_tanstack_router_core_isServer.isServer ?? router.isServer)) {
207
- const minPendingPromise = (0, _tanstack_router_core.createControlledPromise)();
208
- routerMatch._nonReactive.minPendingPromise = minPendingPromise;
209
- setTimeout(() => {
210
- minPendingPromise.resolve();
211
- routerMatch._nonReactive.minPendingPromise = void 0;
212
- }, pendingMinMs);
191
+ keyed: true,
192
+ children: (_key) => out()
193
+ });
194
+ return (0, solid_js_web.createComponent)(solid_js.Switch, { get children() {
195
+ return [
196
+ (0, solid_js_web.createComponent)(solid_js.Match, {
197
+ get when() {
198
+ return currentMatch()._displayPending;
199
+ },
200
+ children: (_) => {
201
+ const [displayPendingResult] = solid_js.createResource(() => router.getMatch(currentMatch().id)?._nonReactive.displayPendingPromise);
202
+ return (0, solid_js_web.memo)(displayPendingResult);
203
+ }
204
+ }),
205
+ (0, solid_js_web.createComponent)(solid_js.Match, {
206
+ get when() {
207
+ return currentMatch()._forcePending;
208
+ },
209
+ children: (_) => {
210
+ const [minPendingResult] = solid_js.createResource(() => router.getMatch(currentMatch().id)?._nonReactive.minPendingPromise);
211
+ return (0, solid_js_web.memo)(minPendingResult);
212
+ }
213
+ }),
214
+ (0, solid_js_web.createComponent)(solid_js.Match, {
215
+ get when() {
216
+ return currentMatch().status === "pending";
217
+ },
218
+ children: (_) => {
219
+ const pendingMinMs = route().options.pendingMinMs ?? router.options.defaultPendingMinMs;
220
+ if (pendingMinMs) {
221
+ const routerMatch = router.getMatch(currentMatch().id);
222
+ if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {
223
+ if (!(_tanstack_router_core_isServer.isServer ?? router.isServer)) {
224
+ const minPendingPromise = (0, _tanstack_router_core.createControlledPromise)();
225
+ routerMatch._nonReactive.minPendingPromise = minPendingPromise;
226
+ setTimeout(() => {
227
+ minPendingPromise.resolve();
228
+ routerMatch._nonReactive.minPendingPromise = void 0;
229
+ }, pendingMinMs);
230
+ }
231
+ }
213
232
  }
233
+ const [loaderResult] = solid_js.createResource(async () => {
234
+ await new Promise((r) => setTimeout(r, 0));
235
+ return router.getMatch(currentMatch().id)?._nonReactive.loadPromise;
236
+ });
237
+ const FallbackComponent = route().options.pendingComponent ?? router.options.defaultPendingComponent;
238
+ return [FallbackComponent && pendingMinMs > 0 ? (0, solid_js_web.createComponent)(solid_js_web.Dynamic, { component: FallbackComponent }) : null, (0, solid_js_web.memo)(loaderResult)];
214
239
  }
215
- }
216
- const [loaderResult] = solid_js.createResource(async () => {
217
- await new Promise((r) => setTimeout(r, 0));
218
- return router.getMatch(match().id)?._nonReactive.loadPromise;
219
- });
220
- const FallbackComponent = route().options.pendingComponent ?? router.options.defaultPendingComponent;
221
- return [FallbackComponent && pendingMinMs > 0 ? (0, solid_js_web.createComponent)(solid_js_web.Dynamic, { component: FallbackComponent }) : null, (0, solid_js_web.memo)(loaderResult)];
222
- }
223
- }),
224
- (0, solid_js_web.createComponent)(solid_js.Match, {
225
- get when() {
226
- return match().status === "notFound";
227
- },
228
- children: (_) => {
229
- (0, tiny_invariant.default)((0, _tanstack_router_core.isNotFound)(match().error), "Expected a notFound error");
230
- return (0, solid_js_web.createComponent)(solid_js.Show, {
240
+ }),
241
+ (0, solid_js_web.createComponent)(solid_js.Match, {
231
242
  get when() {
232
- return matchState().routeId;
243
+ return currentMatch().status === "notFound";
233
244
  },
234
- keyed: true,
235
- children: (_routeId) => require_renderRouteNotFound.renderRouteNotFound(router, route(), match().error)
236
- });
237
- }
238
- }),
239
- (0, solid_js_web.createComponent)(solid_js.Match, {
240
- get when() {
241
- return match().status === "redirected";
242
- },
243
- children: (_) => {
244
- (0, tiny_invariant.default)((0, _tanstack_router_core.isRedirect)(match().error), "Expected a redirect error");
245
- const [loaderResult] = solid_js.createResource(async () => {
246
- await new Promise((r) => setTimeout(r, 0));
247
- return router.getMatch(match().id)?._nonReactive.loadPromise;
248
- });
249
- return (0, solid_js_web.memo)(loaderResult);
250
- }
251
- }),
252
- (0, solid_js_web.createComponent)(solid_js.Match, {
253
- get when() {
254
- return match().status === "error";
255
- },
256
- children: (_) => {
257
- throw match().error;
258
- }
259
- }),
260
- (0, solid_js_web.createComponent)(solid_js.Match, {
261
- get when() {
262
- return match().status === "success";
263
- },
264
- get children() {
265
- return keyedOut();
266
- }
267
- })
268
- ];
269
- } });
245
+ children: (_) => {
246
+ (0, tiny_invariant.default)((0, _tanstack_router_core.isNotFound)(currentMatch().error), "Expected a notFound error");
247
+ return (0, solid_js_web.createComponent)(solid_js.Show, {
248
+ get when() {
249
+ return currentMatchState().routeId;
250
+ },
251
+ keyed: true,
252
+ children: (_routeId) => require_renderRouteNotFound.renderRouteNotFound(router, route(), currentMatch().error)
253
+ });
254
+ }
255
+ }),
256
+ (0, solid_js_web.createComponent)(solid_js.Match, {
257
+ get when() {
258
+ return currentMatch().status === "redirected";
259
+ },
260
+ children: (_) => {
261
+ (0, tiny_invariant.default)((0, _tanstack_router_core.isRedirect)(currentMatch().error), "Expected a redirect error");
262
+ const [loaderResult] = solid_js.createResource(async () => {
263
+ await new Promise((r) => setTimeout(r, 0));
264
+ return router.getMatch(currentMatch().id)?._nonReactive.loadPromise;
265
+ });
266
+ return (0, solid_js_web.memo)(loaderResult);
267
+ }
268
+ }),
269
+ (0, solid_js_web.createComponent)(solid_js.Match, {
270
+ get when() {
271
+ return currentMatch().status === "error";
272
+ },
273
+ children: (_) => {
274
+ if (_tanstack_router_core_isServer.isServer ?? router.isServer) return (0, solid_js_web.createComponent)((route().options.errorComponent ?? router.options.defaultErrorComponent) || require_CatchBoundary.ErrorComponent, {
275
+ get error() {
276
+ return currentMatch().error;
277
+ },
278
+ info: { componentStack: "" }
279
+ });
280
+ throw currentMatch().error;
281
+ }
282
+ }),
283
+ (0, solid_js_web.createComponent)(solid_js.Match, {
284
+ get when() {
285
+ return currentMatch().status === "success";
286
+ },
287
+ get children() {
288
+ return keyedOut();
289
+ }
290
+ })
291
+ ];
292
+ } });
293
+ }
294
+ });
270
295
  };
271
296
  var Outlet = () => {
272
297
  const router = require_useRouter.useRouter();
273
- const matchId = solid_js.useContext(require_matchContext.matchContext);
274
- const routeId = require_useRouterState.useRouterState({ select: (s) => s.matches.find((d) => d.id === matchId())?.routeId });
275
- const route = () => router.routesById[routeId()];
276
- const parentGlobalNotFound = require_useRouterState.useRouterState({ select: (s) => {
277
- const parentMatch = s.matches.find((d) => d.id === matchId());
278
- if (!parentMatch) return false;
279
- return parentMatch.globalNotFound;
280
- } });
281
- const childMatchId = require_useRouterState.useRouterState({ select: (s) => {
282
- const matches = s.matches;
283
- return matches[matches.findIndex((d) => d.id === matchId()) + 1]?.id;
284
- } });
285
- const childMatchStatus = require_useRouterState.useRouterState({ select: (s) => {
286
- const matches = s.matches;
287
- return matches[matches.findIndex((d) => d.id === matchId()) + 1]?.status;
288
- } });
298
+ const nearestParentMatch = solid_js.useContext(require_matchContext.nearestMatchContext);
299
+ const parentMatch = nearestParentMatch.match;
300
+ const routeId = nearestParentMatch.routeId;
301
+ const route = solid_js.createMemo(() => routeId() ? router.routesById[routeId()] : void 0);
302
+ const parentGlobalNotFound = solid_js.createMemo(() => parentMatch()?.globalNotFound ?? false);
303
+ const childMatchId = solid_js.createMemo(() => {
304
+ const currentRouteId = routeId();
305
+ return currentRouteId ? router.stores.childMatchIdByRouteId.state[currentRouteId] : void 0;
306
+ });
307
+ const childMatchStatus = solid_js.createMemo(() => {
308
+ const id = childMatchId();
309
+ if (!id) return void 0;
310
+ return router.stores.activeMatchStoresById.get(id)?.state.status;
311
+ });
289
312
  const shouldShowNotFound = () => childMatchStatus() !== "redirected" && parentGlobalNotFound();
290
313
  return (0, solid_js_web.createComponent)(solid_js.Show, {
291
314
  get when() {
@@ -294,15 +317,13 @@ var Outlet = () => {
294
317
  get fallback() {
295
318
  return (0, solid_js_web.createComponent)(solid_js.Show, {
296
319
  get when() {
297
- return shouldShowNotFound();
320
+ return (0, solid_js_web.memo)(() => !!shouldShowNotFound())() && route();
298
321
  },
299
- get children() {
300
- return require_renderRouteNotFound.renderRouteNotFound(router, route(), void 0);
301
- }
322
+ children: (resolvedRoute) => require_renderRouteNotFound.renderRouteNotFound(router, resolvedRoute(), void 0)
302
323
  });
303
324
  },
304
- children: (matchIdAccessor) => {
305
- const currentMatchId = solid_js.createMemo(() => matchIdAccessor());
325
+ children: (childMatchIdAccessor) => {
326
+ const currentMatchId = solid_js.createMemo(() => childMatchIdAccessor());
306
327
  return (0, solid_js_web.createComponent)(solid_js.Show, {
307
328
  get when() {
308
329
  return routeId() === _tanstack_router_core.rootRouteId;