@tanstack/solid-router 1.121.20 → 1.121.24

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 (345) hide show
  1. package/dist/cjs/Asset.cjs +93 -0
  2. package/dist/cjs/Asset.cjs.map +1 -0
  3. package/dist/cjs/Asset.d.cts +3 -0
  4. package/dist/cjs/CatchBoundary.cjs +92 -0
  5. package/dist/cjs/CatchBoundary.cjs.map +1 -0
  6. package/dist/cjs/CatchBoundary.d.cts +11 -0
  7. package/dist/cjs/ClientOnly.cjs +36 -0
  8. package/dist/cjs/ClientOnly.cjs.map +1 -0
  9. package/dist/cjs/ClientOnly.d.cts +49 -0
  10. package/dist/cjs/HeadContent.cjs +146 -0
  11. package/dist/cjs/HeadContent.cjs.map +1 -0
  12. package/dist/cjs/HeadContent.d.cts +8 -0
  13. package/dist/cjs/Match.cjs +359 -0
  14. package/dist/cjs/Match.cjs.map +1 -0
  15. package/dist/cjs/Match.d.cts +8 -0
  16. package/dist/cjs/Matches.cjs +152 -0
  17. package/dist/cjs/Matches.cjs.map +1 -0
  18. package/dist/cjs/Matches.d.cts +24 -0
  19. package/dist/cjs/RouterProvider.cjs +45 -0
  20. package/dist/cjs/RouterProvider.cjs.map +1 -0
  21. package/dist/cjs/RouterProvider.d.cts +10 -0
  22. package/dist/cjs/SafeFragment.cjs +8 -0
  23. package/dist/cjs/SafeFragment.cjs.map +1 -0
  24. package/dist/cjs/SafeFragment.d.cts +1 -0
  25. package/dist/cjs/ScriptOnce.cjs +23 -0
  26. package/dist/cjs/ScriptOnce.cjs.map +1 -0
  27. package/dist/cjs/ScriptOnce.d.cts +5 -0
  28. package/dist/cjs/Scripts.cjs +48 -0
  29. package/dist/cjs/Scripts.cjs.map +1 -0
  30. package/dist/cjs/Scripts.d.cts +1 -0
  31. package/dist/cjs/ScrollRestoration.cjs +37 -0
  32. package/dist/cjs/ScrollRestoration.cjs.map +1 -0
  33. package/dist/cjs/ScrollRestoration.d.cts +14 -0
  34. package/dist/cjs/Transitioner.cjs +124 -0
  35. package/dist/cjs/Transitioner.cjs.map +1 -0
  36. package/dist/cjs/Transitioner.d.cts +1 -0
  37. package/dist/cjs/awaited.cjs +49 -0
  38. package/dist/cjs/awaited.cjs.map +1 -0
  39. package/dist/cjs/awaited.d.cts +11 -0
  40. package/dist/cjs/fileRoute.cjs +103 -0
  41. package/dist/cjs/fileRoute.cjs.map +1 -0
  42. package/dist/cjs/fileRoute.d.cts +54 -0
  43. package/dist/cjs/history.d.cts +8 -0
  44. package/dist/cjs/index.cjs +289 -0
  45. package/dist/cjs/index.cjs.map +1 -0
  46. package/dist/cjs/index.d.cts +52 -0
  47. package/dist/cjs/lazyRouteComponent.cjs +73 -0
  48. package/dist/cjs/lazyRouteComponent.cjs.map +1 -0
  49. package/dist/cjs/lazyRouteComponent.d.cts +2 -0
  50. package/dist/cjs/link.cjs +287 -0
  51. package/dist/cjs/link.cjs.map +1 -0
  52. package/dist/cjs/link.d.cts +44 -0
  53. package/dist/cjs/matchContext.cjs +25 -0
  54. package/dist/cjs/matchContext.cjs.map +1 -0
  55. package/dist/cjs/matchContext.d.cts +3 -0
  56. package/dist/cjs/not-found.cjs +42 -0
  57. package/dist/cjs/not-found.cjs.map +1 -0
  58. package/dist/cjs/not-found.d.cts +8 -0
  59. package/dist/cjs/renderRouteNotFound.cjs +23 -0
  60. package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
  61. package/dist/cjs/renderRouteNotFound.d.cts +2 -0
  62. package/dist/cjs/route.cjs +236 -0
  63. package/dist/cjs/route.cjs.map +1 -0
  64. package/dist/cjs/route.d.cts +95 -0
  65. package/dist/cjs/router.cjs +22 -0
  66. package/dist/cjs/router.cjs.map +1 -0
  67. package/dist/cjs/router.d.cts +69 -0
  68. package/dist/cjs/routerContext.cjs +33 -0
  69. package/dist/cjs/routerContext.cjs.map +1 -0
  70. package/dist/cjs/routerContext.d.cts +8 -0
  71. package/dist/cjs/scroll-restoration.cjs +23 -0
  72. package/dist/cjs/scroll-restoration.cjs.map +1 -0
  73. package/dist/cjs/scroll-restoration.d.cts +1 -0
  74. package/dist/cjs/typePrimitives.d.cts +10 -0
  75. package/dist/cjs/useBlocker.cjs +171 -0
  76. package/dist/cjs/useBlocker.cjs.map +1 -0
  77. package/dist/cjs/useBlocker.d.cts +67 -0
  78. package/dist/cjs/useCanGoBack.cjs +8 -0
  79. package/dist/cjs/useCanGoBack.cjs.map +1 -0
  80. package/dist/cjs/useCanGoBack.d.cts +1 -0
  81. package/dist/cjs/useLoaderData.cjs +14 -0
  82. package/dist/cjs/useLoaderData.cjs.map +1 -0
  83. package/dist/cjs/useLoaderData.d.cts +8 -0
  84. package/dist/cjs/useLoaderDeps.cjs +17 -0
  85. package/dist/cjs/useLoaderDeps.cjs.map +1 -0
  86. package/dist/cjs/useLoaderDeps.d.cts +7 -0
  87. package/dist/cjs/useLocation.cjs +10 -0
  88. package/dist/cjs/useLocation.cjs.map +1 -0
  89. package/dist/cjs/useLocation.d.cts +7 -0
  90. package/dist/cjs/useMatch.cjs +39 -0
  91. package/dist/cjs/useMatch.cjs.map +1 -0
  92. package/dist/cjs/useMatch.d.cts +10 -0
  93. package/dist/cjs/useNavigate.cjs +46 -0
  94. package/dist/cjs/useNavigate.cjs.map +1 -0
  95. package/dist/cjs/useNavigate.d.cts +5 -0
  96. package/dist/cjs/useParams.cjs +15 -0
  97. package/dist/cjs/useParams.cjs.map +1 -0
  98. package/dist/cjs/useParams.d.cts +9 -0
  99. package/dist/cjs/useRouteContext.cjs +11 -0
  100. package/dist/cjs/useRouteContext.cjs.map +1 -0
  101. package/dist/cjs/useRouteContext.d.cts +4 -0
  102. package/dist/cjs/useRouter.cjs +29 -0
  103. package/dist/cjs/useRouter.cjs.map +1 -0
  104. package/dist/cjs/useRouter.d.cts +4 -0
  105. package/dist/cjs/useRouterState.cjs +16 -0
  106. package/dist/cjs/useRouterState.cjs.map +1 -0
  107. package/dist/cjs/useRouterState.d.cts +8 -0
  108. package/dist/cjs/useSearch.cjs +15 -0
  109. package/dist/cjs/useSearch.cjs.map +1 -0
  110. package/dist/cjs/useSearch.d.cts +9 -0
  111. package/dist/cjs/utils.cjs +58 -0
  112. package/dist/cjs/utils.cjs.map +1 -0
  113. package/dist/cjs/utils.d.cts +34 -0
  114. package/dist/esm/Asset.d.ts +3 -0
  115. package/dist/esm/Asset.js +93 -0
  116. package/dist/esm/Asset.js.map +1 -0
  117. package/dist/esm/CatchBoundary.d.ts +11 -0
  118. package/dist/esm/CatchBoundary.js +75 -0
  119. package/dist/esm/CatchBoundary.js.map +1 -0
  120. package/dist/esm/ClientOnly.d.ts +49 -0
  121. package/dist/esm/ClientOnly.js +19 -0
  122. package/dist/esm/ClientOnly.js.map +1 -0
  123. package/dist/esm/HeadContent.d.ts +8 -0
  124. package/dist/esm/HeadContent.js +129 -0
  125. package/dist/esm/HeadContent.js.map +1 -0
  126. package/dist/esm/Match.d.ts +8 -0
  127. package/dist/esm/Match.js +342 -0
  128. package/dist/esm/Match.js.map +1 -0
  129. package/dist/esm/Matches.d.ts +24 -0
  130. package/dist/esm/Matches.js +135 -0
  131. package/dist/esm/Matches.js.map +1 -0
  132. package/dist/esm/RouterProvider.d.ts +10 -0
  133. package/dist/esm/RouterProvider.js +45 -0
  134. package/dist/esm/RouterProvider.js.map +1 -0
  135. package/dist/esm/SafeFragment.d.ts +1 -0
  136. package/dist/esm/SafeFragment.js +8 -0
  137. package/dist/esm/SafeFragment.js.map +1 -0
  138. package/dist/esm/ScriptOnce.d.ts +5 -0
  139. package/dist/esm/ScriptOnce.js +23 -0
  140. package/dist/esm/ScriptOnce.js.map +1 -0
  141. package/dist/esm/Scripts.d.ts +1 -0
  142. package/dist/esm/Scripts.js +48 -0
  143. package/dist/esm/Scripts.js.map +1 -0
  144. package/dist/esm/ScrollRestoration.d.ts +14 -0
  145. package/dist/esm/ScrollRestoration.js +37 -0
  146. package/dist/esm/ScrollRestoration.js.map +1 -0
  147. package/dist/esm/Transitioner.d.ts +1 -0
  148. package/dist/esm/Transitioner.js +107 -0
  149. package/dist/esm/Transitioner.js.map +1 -0
  150. package/dist/esm/awaited.d.ts +11 -0
  151. package/dist/esm/awaited.js +32 -0
  152. package/dist/esm/awaited.js.map +1 -0
  153. package/dist/esm/fileRoute.d.ts +54 -0
  154. package/dist/esm/fileRoute.js +103 -0
  155. package/dist/esm/fileRoute.js.map +1 -0
  156. package/dist/esm/history.d.ts +8 -0
  157. package/dist/esm/index.d.ts +52 -0
  158. package/dist/esm/index.js +151 -0
  159. package/dist/esm/index.js.map +1 -0
  160. package/dist/esm/lazyRouteComponent.d.ts +2 -0
  161. package/dist/esm/lazyRouteComponent.js +73 -0
  162. package/dist/esm/lazyRouteComponent.js.map +1 -0
  163. package/dist/esm/link.d.ts +44 -0
  164. package/dist/esm/link.js +270 -0
  165. package/dist/esm/link.js.map +1 -0
  166. package/dist/esm/matchContext.d.ts +3 -0
  167. package/dist/esm/matchContext.js +8 -0
  168. package/dist/esm/matchContext.js.map +1 -0
  169. package/dist/esm/not-found.d.ts +8 -0
  170. package/dist/esm/not-found.js +42 -0
  171. package/dist/esm/not-found.js.map +1 -0
  172. package/dist/esm/renderRouteNotFound.d.ts +2 -0
  173. package/dist/esm/renderRouteNotFound.js +23 -0
  174. package/dist/esm/renderRouteNotFound.js.map +1 -0
  175. package/dist/esm/route.d.ts +95 -0
  176. package/dist/esm/route.js +236 -0
  177. package/dist/esm/route.js.map +1 -0
  178. package/dist/esm/router.d.ts +69 -0
  179. package/dist/esm/router.js +22 -0
  180. package/dist/esm/router.js.map +1 -0
  181. package/dist/esm/routerContext.d.ts +8 -0
  182. package/dist/esm/routerContext.js +16 -0
  183. package/dist/esm/routerContext.js.map +1 -0
  184. package/dist/esm/scroll-restoration.d.ts +1 -0
  185. package/dist/esm/scroll-restoration.js +23 -0
  186. package/dist/esm/scroll-restoration.js.map +1 -0
  187. package/dist/esm/typePrimitives.d.ts +10 -0
  188. package/dist/esm/useBlocker.d.ts +67 -0
  189. package/dist/esm/useBlocker.js +154 -0
  190. package/dist/esm/useBlocker.js.map +1 -0
  191. package/dist/esm/useCanGoBack.d.ts +1 -0
  192. package/dist/esm/useCanGoBack.js +8 -0
  193. package/dist/esm/useCanGoBack.js.map +1 -0
  194. package/dist/esm/useLoaderData.d.ts +8 -0
  195. package/dist/esm/useLoaderData.js +14 -0
  196. package/dist/esm/useLoaderData.js.map +1 -0
  197. package/dist/esm/useLoaderDeps.d.ts +7 -0
  198. package/dist/esm/useLoaderDeps.js +17 -0
  199. package/dist/esm/useLoaderDeps.js.map +1 -0
  200. package/dist/esm/useLocation.d.ts +7 -0
  201. package/dist/esm/useLocation.js +10 -0
  202. package/dist/esm/useLocation.js.map +1 -0
  203. package/dist/esm/useMatch.d.ts +10 -0
  204. package/dist/esm/useMatch.js +22 -0
  205. package/dist/esm/useMatch.js.map +1 -0
  206. package/dist/esm/useNavigate.d.ts +5 -0
  207. package/dist/esm/useNavigate.js +29 -0
  208. package/dist/esm/useNavigate.js.map +1 -0
  209. package/dist/esm/useParams.d.ts +9 -0
  210. package/dist/esm/useParams.js +15 -0
  211. package/dist/esm/useParams.js.map +1 -0
  212. package/dist/esm/useRouteContext.d.ts +4 -0
  213. package/dist/esm/useRouteContext.js +11 -0
  214. package/dist/esm/useRouteContext.js.map +1 -0
  215. package/dist/esm/useRouter.d.ts +4 -0
  216. package/dist/esm/useRouter.js +12 -0
  217. package/dist/esm/useRouter.js.map +1 -0
  218. package/dist/esm/useRouterState.d.ts +8 -0
  219. package/dist/esm/useRouterState.js +16 -0
  220. package/dist/esm/useRouterState.js.map +1 -0
  221. package/dist/esm/useSearch.d.ts +9 -0
  222. package/dist/esm/useSearch.js +15 -0
  223. package/dist/esm/useSearch.js.map +1 -0
  224. package/dist/esm/utils.d.ts +34 -0
  225. package/dist/esm/utils.js +41 -0
  226. package/dist/esm/utils.js.map +1 -0
  227. package/dist/source/Asset.d.ts +3 -0
  228. package/dist/source/Asset.jsx +61 -0
  229. package/dist/source/Asset.jsx.map +1 -0
  230. package/dist/source/CatchBoundary.d.ts +11 -0
  231. package/dist/source/CatchBoundary.jsx +43 -0
  232. package/dist/source/CatchBoundary.jsx.map +1 -0
  233. package/dist/source/ClientOnly.d.ts +49 -0
  234. package/dist/source/ClientOnly.jsx +51 -0
  235. package/dist/source/ClientOnly.jsx.map +1 -0
  236. package/dist/source/HeadContent.d.ts +8 -0
  237. package/dist/source/HeadContent.jsx +143 -0
  238. package/dist/source/HeadContent.jsx.map +1 -0
  239. package/dist/source/Match.d.ts +8 -0
  240. package/dist/source/Match.jsx +261 -0
  241. package/dist/source/Match.jsx.map +1 -0
  242. package/dist/source/Matches.d.ts +24 -0
  243. package/dist/source/Matches.jsx +104 -0
  244. package/dist/source/Matches.jsx.map +1 -0
  245. package/dist/source/RouterProvider.d.ts +10 -0
  246. package/dist/source/RouterProvider.jsx +27 -0
  247. package/dist/source/RouterProvider.jsx.map +1 -0
  248. package/dist/source/SafeFragment.d.ts +1 -0
  249. package/dist/source/SafeFragment.jsx +4 -0
  250. package/dist/source/SafeFragment.jsx.map +1 -0
  251. package/dist/source/ScriptOnce.d.ts +5 -0
  252. package/dist/source/ScriptOnce.jsx +17 -0
  253. package/dist/source/ScriptOnce.jsx.map +1 -0
  254. package/dist/source/Scripts.d.ts +1 -0
  255. package/dist/source/Scripts.jsx +49 -0
  256. package/dist/source/Scripts.jsx.map +1 -0
  257. package/dist/source/ScrollRestoration.d.ts +14 -0
  258. package/dist/source/ScrollRestoration.jsx +37 -0
  259. package/dist/source/ScrollRestoration.jsx.map +1 -0
  260. package/dist/source/Transitioner.d.ts +1 -0
  261. package/dist/source/Transitioner.jsx +102 -0
  262. package/dist/source/Transitioner.jsx.map +1 -0
  263. package/dist/source/awaited.d.ts +11 -0
  264. package/dist/source/awaited.jsx +19 -0
  265. package/dist/source/awaited.jsx.map +1 -0
  266. package/dist/source/fileRoute.d.ts +54 -0
  267. package/dist/source/fileRoute.js +98 -0
  268. package/dist/source/fileRoute.js.map +1 -0
  269. package/dist/source/history.d.ts +8 -0
  270. package/dist/source/history.js +2 -0
  271. package/dist/source/history.js.map +1 -0
  272. package/dist/source/index.d.ts +52 -0
  273. package/dist/source/index.jsx +43 -0
  274. package/dist/source/index.jsx.map +1 -0
  275. package/dist/source/lazyRouteComponent.d.ts +2 -0
  276. package/dist/source/lazyRouteComponent.jsx +83 -0
  277. package/dist/source/lazyRouteComponent.jsx.map +1 -0
  278. package/dist/source/link.d.ts +44 -0
  279. package/dist/source/link.jsx +338 -0
  280. package/dist/source/link.jsx.map +1 -0
  281. package/dist/source/matchContext.d.ts +3 -0
  282. package/dist/source/matchContext.jsx +5 -0
  283. package/dist/source/matchContext.jsx.map +1 -0
  284. package/dist/source/not-found.d.ts +8 -0
  285. package/dist/source/not-found.jsx +30 -0
  286. package/dist/source/not-found.jsx.map +1 -0
  287. package/dist/source/renderRouteNotFound.d.ts +2 -0
  288. package/dist/source/renderRouteNotFound.jsx +15 -0
  289. package/dist/source/renderRouteNotFound.jsx.map +1 -0
  290. package/dist/source/route.d.ts +96 -0
  291. package/dist/source/route.jsx +179 -0
  292. package/dist/source/route.jsx.map +1 -0
  293. package/dist/source/router.d.ts +70 -0
  294. package/dist/source/router.js +21 -0
  295. package/dist/source/router.js.map +1 -0
  296. package/dist/source/routerContext.d.ts +8 -0
  297. package/dist/source/routerContext.jsx +13 -0
  298. package/dist/source/routerContext.jsx.map +1 -0
  299. package/dist/source/scroll-restoration.d.ts +1 -0
  300. package/dist/source/scroll-restoration.jsx +16 -0
  301. package/dist/source/scroll-restoration.jsx.map +1 -0
  302. package/dist/source/typePrimitives.d.ts +10 -0
  303. package/dist/source/typePrimitives.js +2 -0
  304. package/dist/source/typePrimitives.js.map +1 -0
  305. package/dist/source/useBlocker.d.ts +67 -0
  306. package/dist/source/useBlocker.jsx +153 -0
  307. package/dist/source/useBlocker.jsx.map +1 -0
  308. package/dist/source/useCanGoBack.d.ts +1 -0
  309. package/dist/source/useCanGoBack.js +5 -0
  310. package/dist/source/useCanGoBack.js.map +1 -0
  311. package/dist/source/useLoaderData.d.ts +8 -0
  312. package/dist/source/useLoaderData.jsx +11 -0
  313. package/dist/source/useLoaderData.jsx.map +1 -0
  314. package/dist/source/useLoaderDeps.d.ts +7 -0
  315. package/dist/source/useLoaderDeps.jsx +11 -0
  316. package/dist/source/useLoaderDeps.jsx.map +1 -0
  317. package/dist/source/useLocation.d.ts +7 -0
  318. package/dist/source/useLocation.jsx +7 -0
  319. package/dist/source/useLocation.jsx.map +1 -0
  320. package/dist/source/useMatch.d.ts +10 -0
  321. package/dist/source/useMatch.jsx +19 -0
  322. package/dist/source/useMatch.jsx.map +1 -0
  323. package/dist/source/useNavigate.d.ts +5 -0
  324. package/dist/source/useNavigate.jsx +18 -0
  325. package/dist/source/useNavigate.jsx.map +1 -0
  326. package/dist/source/useParams.d.ts +9 -0
  327. package/dist/source/useParams.jsx +12 -0
  328. package/dist/source/useParams.jsx.map +1 -0
  329. package/dist/source/useRouteContext.d.ts +4 -0
  330. package/dist/source/useRouteContext.js +8 -0
  331. package/dist/source/useRouteContext.js.map +1 -0
  332. package/dist/source/useRouter.d.ts +4 -0
  333. package/dist/source/useRouter.jsx +9 -0
  334. package/dist/source/useRouter.jsx.map +1 -0
  335. package/dist/source/useRouterState.d.ts +8 -0
  336. package/dist/source/useRouterState.jsx +14 -0
  337. package/dist/source/useRouterState.jsx.map +1 -0
  338. package/dist/source/useSearch.d.ts +9 -0
  339. package/dist/source/useSearch.jsx +12 -0
  340. package/dist/source/useSearch.jsx.map +1 -0
  341. package/dist/source/utils.d.ts +34 -0
  342. package/dist/source/utils.js +59 -0
  343. package/dist/source/utils.js.map +1 -0
  344. package/package.json +3 -3
  345. package/src/Asset.tsx +76 -7
@@ -0,0 +1,342 @@
1
+ import { createComponent, memo, Dynamic, mergeProps } from "solid-js/web";
2
+ import * as Solid from "solid-js";
3
+ import invariant from "tiny-invariant";
4
+ import warning from "tiny-warning";
5
+ import { isNotFound, rootRouteId, pick, isRedirect, createControlledPromise, getLocationChangeInfo } from "@tanstack/router-core";
6
+ import { ErrorComponent, CatchBoundary } from "./CatchBoundary.js";
7
+ import { useRouterState } from "./useRouterState.js";
8
+ import { useRouter } from "./useRouter.js";
9
+ import { CatchNotFound } from "./not-found.js";
10
+ import { matchContext } from "./matchContext.js";
11
+ import { SafeFragment } from "./SafeFragment.js";
12
+ import { renderRouteNotFound } from "./renderRouteNotFound.js";
13
+ import { ScrollRestoration } from "./scroll-restoration.js";
14
+ const Match = (props) => {
15
+ const router = useRouter();
16
+ const routeId = useRouterState({
17
+ select: (s) => {
18
+ var _a;
19
+ return (_a = s.matches.find((d) => d.id === props.matchId)) == null ? void 0 : _a.routeId;
20
+ }
21
+ });
22
+ invariant(routeId, `Could not find routeId for matchId "${props.matchId}". Please file an issue!`);
23
+ const route = () => router.routesById[routeId()];
24
+ const PendingComponent = () => route().options.pendingComponent ?? router.options.defaultPendingComponent;
25
+ const routeErrorComponent = () => route().options.errorComponent ?? router.options.defaultErrorComponent;
26
+ const routeOnCatch = () => route().options.onCatch ?? router.options.defaultOnCatch;
27
+ const routeNotFoundComponent = () => {
28
+ var _a;
29
+ return route().isRoot ? (
30
+ // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component
31
+ route().options.notFoundComponent ?? ((_a = router.options.notFoundRoute) == null ? void 0 : _a.options.component)
32
+ ) : route().options.notFoundComponent;
33
+ };
34
+ const ResolvedSuspenseBoundary = () => {
35
+ var _a;
36
+ return (
37
+ // If we're on the root route, allow forcefully wrapping in suspense
38
+ (!route().isRoot || route().options.wrapInSuspense) && (route().options.wrapInSuspense ?? PendingComponent() ?? ((_a = route().options.errorComponent) == null ? void 0 : _a.preload)) ? Solid.Suspense : SafeFragment
39
+ );
40
+ };
41
+ const ResolvedCatchBoundary = () => routeErrorComponent() ? CatchBoundary : SafeFragment;
42
+ const ResolvedNotFoundBoundary = () => routeNotFoundComponent() ? CatchNotFound : SafeFragment;
43
+ const resetKey = useRouterState({
44
+ select: (s) => s.loadedAt
45
+ });
46
+ const parentRouteId = useRouterState({
47
+ select: (s) => {
48
+ var _a;
49
+ const index = s.matches.findIndex((d) => d.id === props.matchId);
50
+ return (_a = s.matches[index - 1]) == null ? void 0 : _a.routeId;
51
+ }
52
+ });
53
+ return [createComponent(matchContext.Provider, {
54
+ value: () => props.matchId,
55
+ get children() {
56
+ return createComponent(Dynamic, {
57
+ get component() {
58
+ return ResolvedSuspenseBoundary();
59
+ },
60
+ get fallback() {
61
+ return createComponent(Dynamic, {
62
+ get component() {
63
+ return PendingComponent();
64
+ }
65
+ });
66
+ },
67
+ get children() {
68
+ return createComponent(Dynamic, {
69
+ get component() {
70
+ return ResolvedCatchBoundary();
71
+ },
72
+ getResetKey: () => resetKey(),
73
+ get errorComponent() {
74
+ return routeErrorComponent() || ErrorComponent;
75
+ },
76
+ onCatch: (error) => {
77
+ var _a;
78
+ if (isNotFound(error)) throw error;
79
+ warning(false, `Error in route match: ${props.matchId}`);
80
+ (_a = routeOnCatch()) == null ? void 0 : _a(error);
81
+ },
82
+ get children() {
83
+ return createComponent(Dynamic, {
84
+ get component() {
85
+ return ResolvedNotFoundBoundary();
86
+ },
87
+ fallback: (error) => {
88
+ if (!routeNotFoundComponent() || error.routeId && error.routeId !== routeId || !error.routeId && !route().isRoot) throw error;
89
+ return createComponent(Dynamic, mergeProps({
90
+ get component() {
91
+ return routeNotFoundComponent();
92
+ }
93
+ }, error));
94
+ },
95
+ get children() {
96
+ return createComponent(MatchInner, {
97
+ get matchId() {
98
+ return props.matchId;
99
+ }
100
+ });
101
+ }
102
+ });
103
+ }
104
+ });
105
+ }
106
+ });
107
+ }
108
+ }), memo(() => memo(() => parentRouteId() === rootRouteId)() ? [createComponent(OnRendered, {}), createComponent(ScrollRestoration, {})] : null)];
109
+ };
110
+ function OnRendered() {
111
+ const router = useRouter();
112
+ const location = useRouterState({
113
+ select: (s) => {
114
+ var _a;
115
+ return (_a = s.resolvedLocation) == null ? void 0 : _a.state.key;
116
+ }
117
+ });
118
+ Solid.createEffect(Solid.on([location], () => {
119
+ router.emit({
120
+ type: "onRendered",
121
+ ...getLocationChangeInfo(router.state)
122
+ });
123
+ }));
124
+ return null;
125
+ }
126
+ const MatchInner = (props) => {
127
+ const router = useRouter();
128
+ const matchState = useRouterState({
129
+ select: (s) => {
130
+ const matchIndex = s.matches.findIndex((d) => d.id === props.matchId);
131
+ const match2 = s.matches[matchIndex];
132
+ const routeId = match2.routeId;
133
+ const remountFn = router.routesById[routeId].options.remountDeps ?? router.options.defaultRemountDeps;
134
+ const remountDeps = remountFn == null ? void 0 : remountFn({
135
+ routeId,
136
+ loaderDeps: match2.loaderDeps,
137
+ params: match2._strictParams,
138
+ search: match2._strictSearch
139
+ });
140
+ const key = remountDeps ? JSON.stringify(remountDeps) : void 0;
141
+ return {
142
+ key,
143
+ routeId,
144
+ match: pick(match2, ["id", "status", "error"])
145
+ };
146
+ }
147
+ });
148
+ const route = () => router.routesById[matchState().routeId];
149
+ const match = () => matchState().match;
150
+ const out = () => {
151
+ const Comp = route().options.component ?? router.options.defaultComponent;
152
+ if (Comp) {
153
+ return createComponent(Comp, {});
154
+ }
155
+ return createComponent(Outlet, {});
156
+ };
157
+ return createComponent(Solid.Switch, {
158
+ get children() {
159
+ return [createComponent(Solid.Match, {
160
+ get when() {
161
+ return match().status === "notFound";
162
+ },
163
+ children: (_) => {
164
+ invariant(isNotFound(match().error), "Expected a notFound error");
165
+ return renderRouteNotFound(router, route(), match().error);
166
+ }
167
+ }), createComponent(Solid.Match, {
168
+ get when() {
169
+ return match().status === "redirected";
170
+ },
171
+ children: (_) => {
172
+ invariant(isRedirect(match().error), "Expected a redirect error");
173
+ const [loaderResult] = Solid.createResource(async () => {
174
+ var _a;
175
+ await new Promise((r) => setTimeout(r, 0));
176
+ return (_a = router.getMatch(match().id)) == null ? void 0 : _a.loadPromise;
177
+ });
178
+ return memo(loaderResult);
179
+ }
180
+ }), createComponent(Solid.Match, {
181
+ get when() {
182
+ return match().status === "error";
183
+ },
184
+ children: (_) => {
185
+ if (router.isServer) {
186
+ const RouteErrorComponent = (route().options.errorComponent ?? router.options.defaultErrorComponent) || ErrorComponent;
187
+ return createComponent(RouteErrorComponent, {
188
+ get error() {
189
+ return match().error;
190
+ },
191
+ info: {
192
+ componentStack: ""
193
+ }
194
+ });
195
+ }
196
+ throw match().error;
197
+ }
198
+ }), createComponent(Solid.Match, {
199
+ get when() {
200
+ return match().status === "pending";
201
+ },
202
+ children: (_) => {
203
+ var _a;
204
+ const pendingMinMs = route().options.pendingMinMs ?? router.options.defaultPendingMinMs;
205
+ if (pendingMinMs && !((_a = router.getMatch(match().id)) == null ? void 0 : _a.minPendingPromise)) {
206
+ if (!router.isServer) {
207
+ const minPendingPromise = createControlledPromise();
208
+ Promise.resolve().then(() => {
209
+ router.updateMatch(match().id, (prev) => ({
210
+ ...prev,
211
+ minPendingPromise
212
+ }));
213
+ });
214
+ setTimeout(() => {
215
+ minPendingPromise.resolve();
216
+ router.updateMatch(match().id, (prev) => ({
217
+ ...prev,
218
+ minPendingPromise: void 0
219
+ }));
220
+ }, pendingMinMs);
221
+ }
222
+ }
223
+ const [loaderResult] = Solid.createResource(async () => {
224
+ var _a2;
225
+ await new Promise((r) => setTimeout(r, 0));
226
+ return (_a2 = router.getMatch(match().id)) == null ? void 0 : _a2.loadPromise;
227
+ });
228
+ return memo(loaderResult);
229
+ }
230
+ }), createComponent(Solid.Match, {
231
+ get when() {
232
+ return match().status === "success";
233
+ },
234
+ get children() {
235
+ return out();
236
+ }
237
+ })];
238
+ }
239
+ });
240
+ };
241
+ const Outlet = () => {
242
+ const router = useRouter();
243
+ const matchId = Solid.useContext(matchContext);
244
+ const routeId = useRouterState({
245
+ select: (s) => {
246
+ var _a;
247
+ return (_a = s.matches.find((d) => d.id === matchId())) == null ? void 0 : _a.routeId;
248
+ }
249
+ });
250
+ const route = () => router.routesById[routeId()];
251
+ const parentGlobalNotFound = useRouterState({
252
+ select: (s) => {
253
+ const matches = s.matches;
254
+ const parentMatch = matches.find((d) => d.id === matchId());
255
+ invariant(parentMatch, `Could not find parent match for matchId "${matchId()}"`);
256
+ return parentMatch.globalNotFound;
257
+ }
258
+ });
259
+ const childMatchId = useRouterState({
260
+ select: (s) => {
261
+ var _a;
262
+ const matches = s.matches;
263
+ const index = matches.findIndex((d) => d.id === matchId());
264
+ const v = (_a = matches[index + 1]) == null ? void 0 : _a.id;
265
+ return v;
266
+ }
267
+ });
268
+ return createComponent(Solid.Switch, {
269
+ get children() {
270
+ return [createComponent(Solid.Match, {
271
+ get when() {
272
+ return router.isShell;
273
+ },
274
+ get children() {
275
+ return createComponent(Solid.Suspense, {
276
+ get fallback() {
277
+ return createComponent(Dynamic, {
278
+ get component() {
279
+ return router.options.defaultPendingComponent;
280
+ }
281
+ });
282
+ },
283
+ get children() {
284
+ return createComponent(ErrorComponent, {
285
+ error: new Error("ShellBoundaryError")
286
+ });
287
+ }
288
+ });
289
+ }
290
+ }), createComponent(Solid.Match, {
291
+ get when() {
292
+ return parentGlobalNotFound();
293
+ },
294
+ get children() {
295
+ return renderRouteNotFound(router, route(), void 0);
296
+ }
297
+ }), createComponent(Solid.Match, {
298
+ get when() {
299
+ return childMatchId();
300
+ },
301
+ children: (matchId2) => {
302
+ return createComponent(Solid.Show, {
303
+ get when() {
304
+ return matchId2() === rootRouteId;
305
+ },
306
+ get fallback() {
307
+ return createComponent(Match, {
308
+ get matchId() {
309
+ return matchId2();
310
+ }
311
+ });
312
+ },
313
+ get children() {
314
+ return createComponent(Solid.Suspense, {
315
+ get fallback() {
316
+ return createComponent(Dynamic, {
317
+ get component() {
318
+ return router.options.defaultPendingComponent;
319
+ }
320
+ });
321
+ },
322
+ get children() {
323
+ return createComponent(Match, {
324
+ get matchId() {
325
+ return matchId2();
326
+ }
327
+ });
328
+ }
329
+ });
330
+ }
331
+ });
332
+ }
333
+ })];
334
+ }
335
+ });
336
+ };
337
+ export {
338
+ Match,
339
+ MatchInner,
340
+ Outlet
341
+ };
342
+ //# sourceMappingURL=Match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Match.js","sources":["../../src/Match.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n createControlledPromise,\n getLocationChangeInfo,\n isNotFound,\n isRedirect,\n pick,\n rootRouteId,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound } from './not-found'\nimport { matchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { AnyRoute } from '@tanstack/router-core'\n\nexport const Match = (props: { matchId: string }) => {\n const router = useRouter()\n const routeId = useRouterState({\n select: (s) => {\n return s.matches.find((d) => d.id === props.matchId)?.routeId as string\n },\n })\n\n invariant(\n routeId,\n `Could not find routeId for matchId \"${props.matchId}\". Please file an issue!`,\n )\n\n const route: () => AnyRoute = () => router.routesById[routeId()]\n\n const PendingComponent = () =>\n route().options.pendingComponent ?? router.options.defaultPendingComponent\n\n const routeErrorComponent = () =>\n route().options.errorComponent ?? router.options.defaultErrorComponent\n\n const routeOnCatch = () =>\n route().options.onCatch ?? router.options.defaultOnCatch\n\n const routeNotFoundComponent = () =>\n route().isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n (route().options.notFoundComponent ??\n router.options.notFoundRoute?.options.component)\n : route().options.notFoundComponent\n\n const ResolvedSuspenseBoundary = () =>\n // If we're on the root route, allow forcefully wrapping in suspense\n (!route().isRoot || route().options.wrapInSuspense) &&\n (route().options.wrapInSuspense ??\n PendingComponent() ??\n (route().options.errorComponent as any)?.preload)\n ? Solid.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = () =>\n routeErrorComponent() ? CatchBoundary : SafeFragment\n\n const ResolvedNotFoundBoundary = () =>\n routeNotFoundComponent() ? CatchNotFound : SafeFragment\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n const parentRouteId = useRouterState({\n select: (s) => {\n const index = s.matches.findIndex((d) => d.id === props.matchId)\n return s.matches[index - 1]?.routeId as string\n },\n })\n\n return (\n <>\n <matchContext.Provider value={() => props.matchId}>\n <Dynamic\n component={ResolvedSuspenseBoundary()}\n fallback={<Dynamic component={PendingComponent()} />}\n >\n <Dynamic\n component={ResolvedCatchBoundary()}\n getResetKey={() => resetKey()}\n errorComponent={routeErrorComponent() || ErrorComponent}\n onCatch={(error: Error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(false, `Error in route match: ${props.matchId}`)\n routeOnCatch()?.(error)\n }}\n >\n <Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent() ||\n (error.routeId && error.routeId !== routeId) ||\n (!error.routeId && !route().isRoot)\n )\n throw error\n\n return (\n <Dynamic component={routeNotFoundComponent()} {...error} />\n )\n }}\n >\n <MatchInner matchId={props.matchId} />\n </Dynamic>\n </Dynamic>\n </Dynamic>\n </matchContext.Provider>\n\n {parentRouteId() === rootRouteId ? (\n <>\n <OnRendered />\n <ScrollRestoration />\n </>\n ) : null}\n </>\n )\n}\n\n// On Rendered can't happen above the root layout because it actually\n// renders a dummy dom element to track the rendered state of the app.\n// We render a script tag with a key that changes based on the current\n// location state.key. Also, because it's below the root layout, it\n// allows us to fire onRendered events even after a hydration mismatch\n// error that occurred above the root layout (like bad head/link tags,\n// which is common).\nfunction OnRendered() {\n const router = useRouter()\n\n const location = useRouterState({\n select: (s) => {\n return s.resolvedLocation?.state.key\n },\n })\n Solid.createEffect(\n Solid.on([location], () => {\n router.emit({\n type: 'onRendered',\n ...getLocationChangeInfo(router.state),\n })\n }),\n )\n return null\n}\n\nexport const MatchInner = (props: { matchId: string }): any => {\n const router = useRouter()\n\n // { match, key, routeId } =\n const matchState: Solid.Accessor<any> = useRouterState({\n select: (s) => {\n const matchIndex = s.matches.findIndex((d) => d.id === props.matchId)\n const match = s.matches[matchIndex]!\n const routeId = match.routeId as string\n\n const remountFn =\n (router.routesById[routeId] as AnyRoute).options.remountDeps ??\n router.options.defaultRemountDeps\n const remountDeps = remountFn?.({\n routeId,\n loaderDeps: match.loaderDeps,\n params: match._strictParams,\n search: match._strictSearch,\n })\n const key = remountDeps ? JSON.stringify(remountDeps) : undefined\n\n return {\n key,\n routeId,\n match: pick(match, ['id', 'status', 'error']),\n }\n },\n })\n\n const route = () => router.routesById[matchState().routeId]!\n\n // function useChangedDiff(value: any) {\n // const ref = Solid.useRef(value)\n // const changed = ref.current !== value\n // if (changed) {\n // console.log(\n // 'Changed:',\n // value,\n // Object.fromEntries(\n // Object.entries(value).filter(\n // ([key, val]) => val !== ref.current[key],\n // ),\n // ),\n // )\n // }\n // ref.current = value\n // }\n\n // useChangedDiff(match)\n const match = () => matchState().match\n\n const out = () => {\n const Comp = route().options.component ?? router.options.defaultComponent\n if (Comp) {\n return <Comp />\n }\n return <Outlet />\n }\n\n return (\n <Solid.Switch>\n <Solid.Match when={match().status === 'notFound'}>\n {(_) => {\n invariant(isNotFound(match().error), 'Expected a notFound error')\n\n return renderRouteNotFound(router, route(), match().error)\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'redirected'}>\n {(_) => {\n invariant(isRedirect(match().error), 'Expected a redirect error')\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'error'}>\n {(_) => {\n if (router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return (\n <RouteErrorComponent\n error={match().error}\n info={{\n componentStack: '',\n }}\n />\n )\n }\n\n throw match().error\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'pending'}>\n {(_) => {\n const pendingMinMs =\n route().options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n if (pendingMinMs && !router.getMatch(match().id)?.minPendingPromise) {\n // Create a promise that will resolve after the minPendingMs\n if (!router.isServer) {\n const minPendingPromise = createControlledPromise<void>()\n\n Promise.resolve().then(() => {\n router.updateMatch(match().id, (prev) => ({\n ...prev,\n minPendingPromise,\n }))\n })\n\n setTimeout(() => {\n minPendingPromise.resolve()\n\n // We've handled the minPendingPromise, so we can delete it\n router.updateMatch(match().id, (prev) => ({\n ...prev,\n minPendingPromise: undefined,\n }))\n }, pendingMinMs)\n }\n }\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'success'}>{out()}</Solid.Match>\n </Solid.Switch>\n )\n}\n\nexport const Outlet = () => {\n const router = useRouter()\n const matchId = Solid.useContext(matchContext)\n const routeId = useRouterState({\n select: (s) => s.matches.find((d) => d.id === matchId())?.routeId as string,\n })\n\n const route = () => router.routesById[routeId()]!\n\n const parentGlobalNotFound = useRouterState({\n select: (s) => {\n const matches = s.matches\n const parentMatch = matches.find((d) => d.id === matchId())\n invariant(\n parentMatch,\n `Could not find parent match for matchId \"${matchId()}\"`,\n )\n return parentMatch.globalNotFound\n },\n })\n\n const childMatchId = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n const v = matches[index + 1]?.id\n return v\n },\n })\n\n return (\n <Solid.Switch>\n <Solid.Match when={router.isShell}>\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <ErrorComponent error={new Error('ShellBoundaryError')} />\n </Solid.Suspense>\n </Solid.Match>\n\n <Solid.Match when={parentGlobalNotFound()}>\n {renderRouteNotFound(router, route(), undefined)}\n </Solid.Match>\n <Solid.Match when={childMatchId()}>\n {(matchId) => {\n // const nextMatch = <Match matchId={matchId()} />\n\n return (\n <Solid.Show\n when={matchId() === rootRouteId}\n fallback={<Match matchId={matchId()} />}\n >\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <Match matchId={matchId()} />\n </Solid.Suspense>\n </Solid.Show>\n )\n }}\n </Solid.Match>\n </Solid.Switch>\n )\n}\n"],"names":["Match","props","router","useRouter","routeId","useRouterState","select","s","matches","find","d","id","matchId","invariant","route","routesById","PendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","ResolvedSuspenseBoundary","wrapInSuspense","preload","Solid","Suspense","SafeFragment","ResolvedCatchBoundary","CatchBoundary","ResolvedNotFoundBoundary","CatchNotFound","resetKey","loadedAt","parentRouteId","index","findIndex","_$createComponent","matchContext","Provider","value","children","Dynamic","fallback","getResetKey","ErrorComponent","error","isNotFound","warning","_$mergeProps","MatchInner","_$memo","rootRouteId","OnRendered","ScrollRestoration","location","resolvedLocation","state","key","createEffect","on","emit","type","getLocationChangeInfo","matchState","matchIndex","match","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","JSON","stringify","undefined","pick","out","Comp","defaultComponent","Outlet","Switch","when","status","_","renderRouteNotFound","isRedirect","loaderResult","createResource","Promise","r","setTimeout","getMatch","loadPromise","isServer","RouteErrorComponent","info","componentStack","pendingMinMs","defaultPendingMinMs","minPendingPromise","createControlledPromise","resolve","then","updateMatch","prev","useContext","parentGlobalNotFound","parentMatch","globalNotFound","childMatchId","v","isShell","Error","Show"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { AnyRouter, DeepPartial, Expand, MakeOptionalPathParams, MakeOptionalSearchParams, MakeRouteMatchUnion, MaskOptions, MatchRouteOptions, NoInfer, RegisteredRouter, ResolveRelativePath, ResolveRoute, RouteByPath, ToSubOptionsProps } from '@tanstack/router-core';
2
+ import * as Solid from 'solid-js';
3
+ declare module '@tanstack/router-core' {
4
+ interface RouteMatchExtensions {
5
+ meta?: Array<Solid.JSX.IntrinsicElements['meta'] | undefined>;
6
+ links?: Array<Solid.JSX.IntrinsicElements['link'] | undefined>;
7
+ scripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>;
8
+ headScripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>;
9
+ }
10
+ }
11
+ export declare function Matches(): Solid.JSX.Element;
12
+ export type UseMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = ToSubOptionsProps<TRouter, TFrom, TTo> & DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> & DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> & MaskOptions<TRouter, TMaskFrom, TMaskTo> & MatchRouteOptions;
13
+ export declare function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>(): <const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = "">(opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => Solid.Accessor<false | Expand<ResolveRoute<TRouter, TFrom, TTo>["types"]["allParams"]>>;
14
+ export type MakeMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
15
+ children?: ((params?: RouteByPath<TRouter['routeTree'], ResolveRelativePath<TFrom, NoInfer<TTo>>>['types']['allParams']) => Solid.JSX.Element) | Solid.JSX.Element;
16
+ };
17
+ export declare function MatchRoute<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(props: MakeMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): any;
18
+ export interface UseMatchesBaseOptions<TRouter extends AnyRouter, TSelected> {
19
+ select?: (matches: Array<MakeRouteMatchUnion<TRouter>>) => TSelected;
20
+ }
21
+ export type UseMatchesResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected;
22
+ export declare function useMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseMatchesBaseOptions<TRouter, TSelected>): Solid.Accessor<UseMatchesResult<TRouter, TSelected>>;
23
+ export declare function useParentMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseMatchesBaseOptions<TRouter, TSelected>): Solid.Accessor<UseMatchesResult<TRouter, TSelected>>;
24
+ export declare function useChildMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseMatchesBaseOptions<TRouter, TSelected>): Solid.Accessor<UseMatchesResult<TRouter, TSelected>>;
@@ -0,0 +1,135 @@
1
+ import { createComponent, memo } from "solid-js/web";
2
+ import * as Solid from "solid-js";
3
+ import warning from "tiny-warning";
4
+ import { CatchBoundary, ErrorComponent } from "./CatchBoundary.js";
5
+ import { useRouterState } from "./useRouterState.js";
6
+ import { useRouter } from "./useRouter.js";
7
+ import { Transitioner } from "./Transitioner.js";
8
+ import { matchContext } from "./matchContext.js";
9
+ import { Match } from "./Match.js";
10
+ import { SafeFragment } from "./SafeFragment.js";
11
+ function Matches() {
12
+ const router = useRouter();
13
+ const pendingElement = router.options.defaultPendingComponent ? createComponent(router.options.defaultPendingComponent, {}) : null;
14
+ const ResolvedSuspense = router.isServer || typeof document !== "undefined" && router.clientSsr ? SafeFragment : Solid.Suspense;
15
+ const inner = createComponent(ResolvedSuspense, {
16
+ fallback: pendingElement,
17
+ get children() {
18
+ return [createComponent(Transitioner, {}), createComponent(MatchesInner, {})];
19
+ }
20
+ });
21
+ return router.options.InnerWrap ? createComponent(router.options.InnerWrap, {
22
+ children: inner
23
+ }) : inner;
24
+ }
25
+ function MatchesInner() {
26
+ const matchId = useRouterState({
27
+ select: (s) => {
28
+ var _a;
29
+ return (_a = s.matches[0]) == null ? void 0 : _a.id;
30
+ }
31
+ });
32
+ const resetKey = useRouterState({
33
+ select: (s) => s.loadedAt
34
+ });
35
+ return createComponent(matchContext.Provider, {
36
+ value: matchId,
37
+ get children() {
38
+ return createComponent(CatchBoundary, {
39
+ getResetKey: () => resetKey(),
40
+ errorComponent: ErrorComponent,
41
+ onCatch: (error) => {
42
+ warning(false, `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);
43
+ warning(false, error.message || error.toString());
44
+ },
45
+ get children() {
46
+ return memo(() => !!matchId())() ? createComponent(Match, {
47
+ get matchId() {
48
+ return matchId();
49
+ }
50
+ }) : null;
51
+ }
52
+ });
53
+ }
54
+ });
55
+ }
56
+ function useMatchRoute() {
57
+ const router = useRouter();
58
+ const status = useRouterState({
59
+ select: (s) => s.status
60
+ });
61
+ return (opts) => {
62
+ const {
63
+ pending,
64
+ caseSensitive,
65
+ fuzzy,
66
+ includeSearch,
67
+ ...rest
68
+ } = opts;
69
+ const matchRoute = Solid.createMemo(() => {
70
+ status();
71
+ return router.matchRoute(rest, {
72
+ pending,
73
+ caseSensitive,
74
+ fuzzy,
75
+ includeSearch
76
+ });
77
+ });
78
+ return matchRoute;
79
+ };
80
+ }
81
+ function MatchRoute(props) {
82
+ const status = useRouterState({
83
+ select: (s) => s.status
84
+ });
85
+ return createComponent(Solid.Show, {
86
+ get when() {
87
+ return status();
88
+ },
89
+ keyed: true,
90
+ children: (_) => {
91
+ const matchRoute = useMatchRoute();
92
+ const params = matchRoute(props)();
93
+ const child = props.children;
94
+ if (typeof child === "function") {
95
+ return child(params);
96
+ }
97
+ return params ? child : null;
98
+ }
99
+ });
100
+ }
101
+ function useMatches(opts) {
102
+ return useRouterState({
103
+ select: (state) => {
104
+ const matches = state.matches;
105
+ return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;
106
+ }
107
+ });
108
+ }
109
+ function useParentMatches(opts) {
110
+ const contextMatchId = Solid.useContext(matchContext);
111
+ return useMatches({
112
+ select: (matches) => {
113
+ matches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId()));
114
+ return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;
115
+ }
116
+ });
117
+ }
118
+ function useChildMatches(opts) {
119
+ const contextMatchId = Solid.useContext(matchContext);
120
+ return useMatches({
121
+ select: (matches) => {
122
+ matches = matches.slice(matches.findIndex((d) => d.id === contextMatchId()) + 1);
123
+ return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;
124
+ }
125
+ });
126
+ }
127
+ export {
128
+ MatchRoute,
129
+ Matches,
130
+ useChildMatches,
131
+ useMatchRoute,
132
+ useMatches,
133
+ useParentMatches
134
+ };
135
+ //# sourceMappingURL=Matches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matches.js","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport warning from 'tiny-warning'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { Transitioner } from './Transitioner'\nimport { matchContext } from './matchContext'\nimport { Match } from './Match'\nimport { SafeFragment } from './SafeFragment'\nimport type {\n AnyRouter,\n DeepPartial,\n Expand,\n MakeOptionalPathParams,\n MakeOptionalSearchParams,\n MakeRouteMatchUnion,\n MaskOptions,\n MatchRouteOptions,\n NoInfer,\n RegisteredRouter,\n ResolveRelativePath,\n ResolveRoute,\n RouteByPath,\n RouterState,\n ToSubOptionsProps,\n} from '@tanstack/router-core'\n\ndeclare module '@tanstack/router-core' {\n export interface RouteMatchExtensions {\n meta?: Array<Solid.JSX.IntrinsicElements['meta'] | undefined>\n links?: Array<Solid.JSX.IntrinsicElements['link'] | undefined>\n scripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>\n headScripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>\n }\n}\n\nexport function Matches() {\n const router = useRouter()\n\n const pendingElement = router.options.defaultPendingComponent ? (\n <router.options.defaultPendingComponent />\n ) : null\n\n // Do not render a root Suspense during SSR or hydrating from SSR\n const ResolvedSuspense =\n router.isServer || (typeof document !== 'undefined' && router.clientSsr)\n ? SafeFragment\n : Solid.Suspense\n\n const inner = (\n <ResolvedSuspense fallback={pendingElement}>\n <Transitioner />\n <MatchesInner />\n </ResolvedSuspense>\n )\n\n return router.options.InnerWrap ? (\n <router.options.InnerWrap>{inner}</router.options.InnerWrap>\n ) : (\n inner\n )\n}\n\nfunction MatchesInner() {\n const matchId = useRouterState({\n select: (s) => {\n return s.matches[0]?.id\n },\n })\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n return (\n <matchContext.Provider value={matchId}>\n <CatchBoundary\n getResetKey={() => resetKey()}\n errorComponent={ErrorComponent}\n onCatch={(error) => {\n warning(\n false,\n `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`,\n )\n warning(false, error.message || error.toString())\n }}\n >\n {matchId() ? <Match matchId={matchId()!} /> : null}\n </CatchBoundary>\n </matchContext.Provider>\n )\n}\n\nexport type UseMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = ToSubOptionsProps<TRouter, TFrom, TTo> &\n DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> &\n DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> &\n MaskOptions<TRouter, TMaskFrom, TMaskTo> &\n MatchRouteOptions\n\nexport function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>() {\n const router = useRouter()\n\n const status = useRouterState({\n select: (s) => s.status,\n })\n\n return <\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n >(\n opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): Solid.Accessor<\n false | Expand<ResolveRoute<TRouter, TFrom, TTo>['types']['allParams']>\n > => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts\n\n const matchRoute = Solid.createMemo(() => {\n status()\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch,\n })\n })\n\n return matchRoute\n }\n}\n\nexport type MakeMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n TRouter['routeTree'],\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => Solid.JSX.Element)\n | Solid.JSX.Element\n}\n\nexport function MatchRoute<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(props: MakeMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): any {\n const status = useRouterState({\n select: (s) => s.status,\n })\n\n return (\n <Solid.Show when={status()} keyed>\n {(_) => {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any)() as boolean\n const child = props.children\n if (typeof child === 'function') {\n return (child as any)(params)\n }\n\n return params ? child : null\n }}\n </Solid.Show>\n )\n}\n\nexport interface UseMatchesBaseOptions<TRouter extends AnyRouter, TSelected> {\n select?: (matches: Array<MakeRouteMatchUnion<TRouter>>) => TSelected\n}\n\nexport type UseMatchesResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected\n\nexport function useMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Solid.Accessor<UseMatchesResult<TRouter, TSelected>> {\n return useRouterState({\n select: (state: RouterState<TRouter['routeTree']>) => {\n const matches = state.matches\n return opts?.select\n ? opts.select(matches as Array<MakeRouteMatchUnion<TRouter>>)\n : matches\n },\n } as any) as Solid.Accessor<UseMatchesResult<TRouter, TSelected>>\n}\n\nexport function useParentMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Solid.Accessor<UseMatchesResult<TRouter, TSelected>> {\n const contextMatchId = Solid.useContext(matchContext)\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n 0,\n matches.findIndex((d) => d.id === contextMatchId()),\n )\n return opts?.select ? opts.select(matches) : matches\n },\n } as any)\n}\n\nexport function useChildMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected>,\n): Solid.Accessor<UseMatchesResult<TRouter, TSelected>> {\n const contextMatchId = Solid.useContext(matchContext)\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n matches.findIndex((d) => d.id === contextMatchId()) + 1,\n )\n return opts?.select ? opts.select(matches) : matches\n },\n } as any)\n}\n"],"names":["Matches","router","useRouter","pendingElement","options","defaultPendingComponent","_$createComponent","ResolvedSuspense","isServer","document","clientSsr","SafeFragment","Solid","Suspense","inner","fallback","children","Transitioner","MatchesInner","InnerWrap","matchId","useRouterState","select","s","matches","id","resetKey","loadedAt","matchContext","Provider","value","CatchBoundary","getResetKey","errorComponent","ErrorComponent","onCatch","error","warning","message","toString","_$memo","Match","useMatchRoute","status","opts","pending","caseSensitive","fuzzy","includeSearch","rest","matchRoute","createMemo","MatchRoute","props","Show","when","keyed","_","params","child","useMatches","state","useParentMatches","contextMatchId","useContext","slice","findIndex","d","useChildMatches"],"mappings":";;;;;;;;;;AAoCO,SAASA,UAAU;AACxB,QAAMC,SAASC,UAAU;AAEnBC,QAAAA,iBAAiBF,OAAOG,QAAQC,0BAAuBC,gBAC1DL,OAAOG,QAAQC,+BACd;AAGEE,QAAAA,mBACJN,OAAOO,YAAa,OAAOC,aAAa,eAAeR,OAAOS,YAC1DC,eACAC,MAAMC;AAENC,QAAAA,QAAKR,gBACRC,kBAAgB;AAAA,IAACQ,UAAUZ;AAAAA,IAAc,IAAAa,WAAA;AAAA,aAAA,CAAAV,gBACvCW,cAAYX,CAAAA,CAAAA,GAAAA,gBACZY,cAAY,CAAA,CAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAEhB;AAED,SAAOjB,OAAOG,QAAQe,YAASb,gBAC5BL,OAAOG,QAAQe,WAAS;AAAA,IAAAH,UAAEF;AAAAA,EAAK,CAAA,IAEhCA;AAEJ;AAEA,SAASI,eAAe;AACtB,QAAME,UAAUC,eAAe;AAAA,IAC7BC,QAASC,CAAM,MAAA;;AACNA,cAAAA,OAAEC,QAAQ,CAAC,MAAXD,mBAAcE;AAAAA,IAAAA;AAAAA,EACvB,CACD;AAED,QAAMC,WAAWL,eAAe;AAAA,IAC9BC,QAASC,OAAMA,EAAEI;AAAAA,EAAAA,CAClB;AAEDrB,SAAAA,gBACGsB,aAAaC,UAAQ;AAAA,IAACC,OAAOV;AAAAA,IAAO,IAAAJ,WAAA;AAAA,aAAAV,gBAClCyB,eAAa;AAAA,QACZC,aAAaA,MAAMN,SAAS;AAAA,QAC5BO,gBAAgBC;AAAAA,QAChBC,SAAUC,CAAU,UAAA;AAClBC,kBACE,OACA,4HACF;AACAA,kBAAQ,OAAOD,MAAME,WAAWF,MAAMG,UAAU;AAAA,QAClD;AAAA,QAAC,IAAAvB,WAAA;AAEAwB,iBAAAA,aAAApB,QAAS,CAAA,EAAAd,IAAAA,gBAAImC,OAAK;AAAA,YAAA,IAACrB,UAAO;AAAA,qBAAEA,QAAQ;AAAA,YAAA;AAAA,UAAE,CAAA,IAAO;AAAA,QAAA;AAAA,MAAI,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAI1D;AAcO,SAASsB,gBAA8D;AAC5E,QAAMzC,SAASC,UAAU;AAEzB,QAAMyC,SAAStB,eAAe;AAAA,IAC5BC,QAASC,OAAMA,EAAEoB;AAAAA,EAAAA,CAClB;AAED,SAAO,CAMLC,SAGG;AACG,UAAA;AAAA,MAAEC;AAAAA,MAASC;AAAAA,MAAeC;AAAAA,MAAOC;AAAAA,MAAe,GAAGC;AAAAA,IAAAA,IAASL;AAE5DM,UAAAA,aAAatC,MAAMuC,WAAW,MAAM;AACjC,aAAA;AACAlD,aAAAA,OAAOiD,WAAWD,MAAa;AAAA,QACpCJ;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,MAAAA,CACD;AAAA,IAAA,CACF;AAEME,WAAAA;AAAAA,EACT;AACF;AAoBO,SAASE,WAMdC,OAA4E;AAC5E,QAAMV,SAAStB,eAAe;AAAA,IAC5BC,QAASC,OAAMA,EAAEoB;AAAAA,EAAAA,CAClB;AAEDrC,SAAAA,gBACGM,MAAM0C,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEZ,OAAO;AAAA,IAAC;AAAA,IAAEa,OAAK;AAAA,IAAAxC,UAC7ByC,CAAM,MAAA;AACN,YAAMP,aAAaR,cAAc;AAC3BgB,YAAAA,SAASR,WAAWG,KAAY,EAAE;AACxC,YAAMM,QAAQN,MAAMrC;AAChB,UAAA,OAAO2C,UAAU,YAAY;AAC/B,eAAQA,MAAcD,MAAM;AAAA,MAAA;AAG9B,aAAOA,SAASC,QAAQ;AAAA,IAAA;AAAA,EAC1B,CAAC;AAGP;AAWO,SAASC,WAIdhB,MACsD;AACtD,SAAOvB,eAAe;AAAA,IACpBC,QAAQA,CAACuC,UAA6C;AACpD,YAAMrC,UAAUqC,MAAMrC;AACtB,cAAOoB,6BAAMtB,UACTsB,KAAKtB,OAAOE,OAA8C,IAC1DA;AAAAA,IAAAA;AAAAA,EACN,CACM;AACV;AAEO,SAASsC,iBAIdlB,MACsD;AAChDmB,QAAAA,iBAAiBnD,MAAMoD,WAAWpC,YAAY;AAEpD,SAAOgC,WAAW;AAAA,IAChBtC,QAAQA,CAACE,YAAiD;AAC9CA,gBAAAA,QAAQyC,MAChB,GACAzC,QAAQ0C,UAAWC,OAAMA,EAAE1C,OAAOsC,eAAgB,CAAA,CACpD;AACA,cAAOnB,6BAAMtB,UAASsB,KAAKtB,OAAOE,OAAO,IAAIA;AAAAA,IAAAA;AAAAA,EAC/C,CACM;AACV;AAEO,SAAS4C,gBAIdxB,MACsD;AAChDmB,QAAAA,iBAAiBnD,MAAMoD,WAAWpC,YAAY;AAEpD,SAAOgC,WAAW;AAAA,IAChBtC,QAAQA,CAACE,YAAiD;AAC9CA,gBAAAA,QAAQyC,MAChBzC,QAAQ0C,UAAWC,CAAAA,MAAMA,EAAE1C,OAAOsC,eAAgB,CAAA,IAAI,CACxD;AACA,cAAOnB,6BAAMtB,UAASsB,KAAKtB,OAAOE,OAAO,IAAIA;AAAAA,IAAAA;AAAAA,EAC/C,CACM;AACV;"}
@@ -0,0 +1,10 @@
1
+ import { AnyRouter, RegisteredRouter, RouterOptions } from '@tanstack/router-core';
2
+ import type * as Solid from 'solid-js';
3
+ export declare function RouterContextProvider<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>>({ router, children, ...rest }: RouterProps<TRouter, TDehydrated> & {
4
+ children: () => Solid.JSX.Element;
5
+ }): Solid.JSX.Element;
6
+ export declare function RouterProvider<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>>({ router, ...rest }: RouterProps<TRouter, TDehydrated>): Solid.JSX.Element;
7
+ export type RouterProps<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>> = Omit<RouterOptions<TRouter['routeTree'], NonNullable<TRouter['options']['trailingSlash']>, false, TRouter['history'], TDehydrated>, 'context'> & {
8
+ router: TRouter;
9
+ context?: Partial<RouterOptions<TRouter['routeTree'], NonNullable<TRouter['options']['trailingSlash']>, false, TRouter['history'], TDehydrated>['context']>;
10
+ };
@@ -0,0 +1,45 @@
1
+ import { createComponent, mergeProps } from "solid-js/web";
2
+ import { Matches } from "./Matches.js";
3
+ import { getRouterContext } from "./routerContext.js";
4
+ function RouterContextProvider({
5
+ router,
6
+ children,
7
+ ...rest
8
+ }) {
9
+ router.update({
10
+ ...router.options,
11
+ ...rest,
12
+ context: {
13
+ ...router.options.context,
14
+ ...rest.context
15
+ }
16
+ });
17
+ const routerContext = getRouterContext();
18
+ const provider = createComponent(routerContext.Provider, {
19
+ value: router,
20
+ get children() {
21
+ return children();
22
+ }
23
+ });
24
+ if (router.options.Wrap) {
25
+ return createComponent(router.options.Wrap, {
26
+ children: provider
27
+ });
28
+ }
29
+ return provider;
30
+ }
31
+ function RouterProvider({
32
+ router,
33
+ ...rest
34
+ }) {
35
+ return createComponent(RouterContextProvider, mergeProps({
36
+ router
37
+ }, rest, {
38
+ children: () => createComponent(Matches, {})
39
+ }));
40
+ }
41
+ export {
42
+ RouterContextProvider,
43
+ RouterProvider
44
+ };
45
+ //# sourceMappingURL=RouterProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterProvider.js","sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import { Matches } from './Matches'\nimport { getRouterContext } from './routerContext'\nimport type * as Solid from 'solid-js'\nimport type {\n AnyRouter,\n RegisteredRouter,\n RouterOptions,\n} from '@tanstack/router-core'\n\nexport function RouterContextProvider<\n TRouter extends AnyRouter = RegisteredRouter,\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({\n router,\n children,\n ...rest\n}: RouterProps<TRouter, TDehydrated> & {\n children: () => Solid.JSX.Element\n}) {\n // Allow the router to update options on the router instance\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest.context,\n },\n } as any)\n\n const routerContext = getRouterContext()\n\n const provider = (\n <routerContext.Provider value={router as AnyRouter}>\n {children()}\n </routerContext.Provider>\n )\n\n if (router.options.Wrap) {\n return <router.options.Wrap>{provider}</router.options.Wrap>\n }\n\n return provider\n}\n\nexport function RouterProvider<\n TRouter extends AnyRouter = RegisteredRouter,\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router, ...rest }: RouterProps<TRouter, TDehydrated>) {\n return (\n <RouterContextProvider router={router} {...rest}>\n {() => <Matches />}\n </RouterContextProvider>\n )\n}\n\nexport type RouterProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<\n RouterOptions<\n TRouter['routeTree'],\n NonNullable<TRouter['options']['trailingSlash']>,\n false,\n TRouter['history'],\n TDehydrated\n >,\n 'context'\n> & {\n router: TRouter\n context?: Partial<\n RouterOptions<\n TRouter['routeTree'],\n NonNullable<TRouter['options']['trailingSlash']>,\n false,\n TRouter['history'],\n TDehydrated\n >['context']\n >\n}\n"],"names":["RouterContextProvider","router","children","rest","update","options","context","routerContext","getRouterContext","provider","_$createComponent","Provider","value","Wrap","RouterProvider","_$mergeProps","Matches"],"mappings":";;;AASO,SAASA,sBAGd;AAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AAGL,GAAG;AAEDF,SAAOG,OAAO;AAAA,IACZ,GAAGH,OAAOI;AAAAA,IACV,GAAGF;AAAAA,IACHG,SAAS;AAAA,MACP,GAAGL,OAAOI,QAAQC;AAAAA,MAClB,GAAGH,KAAKG;AAAAA,IAAAA;AAAAA,EACV,CACM;AAER,QAAMC,gBAAgBC,iBAAiB;AAEjCC,QAAAA,WAAQC,gBACXH,cAAcI,UAAQ;AAAA,IAACC,OAAOX;AAAAA,IAAmB,IAAAC,WAAA;AAAA,aAC/CA,SAAS;AAAA,IAAA;AAAA,EAAC,CAEd;AAEGD,MAAAA,OAAOI,QAAQQ,MAAM;AACvBH,WAAAA,gBAAQT,OAAOI,QAAQQ,MAAI;AAAA,MAAAX,UAAEO;AAAAA,IAAAA,CAAQ;AAAA,EAAA;AAGhCA,SAAAA;AACT;AAEO,SAASK,eAGd;AAAA,EAAEb;AAAAA,EAAQ,GAAGE;AAAwC,GAAG;AACxDO,SAAAA,gBACGV,uBAAqBe,WAAA;AAAA,IAACd;AAAAA,KAAoBE,MAAI;AAAA,IAAAD,UAC5CA,MAAAQ,gBAAOM,SAAO,CAAA,CAAA;AAAA,EAAA,CAAG,CAAA;AAGxB;"}
@@ -0,0 +1 @@
1
+ export declare function SafeFragment(props: any): import("solid-js").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { memo } from "solid-js/web";
2
+ function SafeFragment(props) {
3
+ return memo(() => props.children);
4
+ }
5
+ export {
6
+ SafeFragment
7
+ };
8
+ //# sourceMappingURL=SafeFragment.js.map