@tanstack/solid-router 2.0.0-alpha.5 → 2.0.0-alpha.7

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