@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,261 @@
1
+ import * as Solid from 'solid-js';
2
+ import invariant from 'tiny-invariant';
3
+ import warning from 'tiny-warning';
4
+ import { createControlledPromise, getLocationChangeInfo, isNotFound, isRedirect, pick, rootRouteId, } from '@tanstack/router-core';
5
+ import { Dynamic } from 'solid-js/web';
6
+ import { CatchBoundary, ErrorComponent } from './CatchBoundary';
7
+ import { useRouterState } from './useRouterState';
8
+ import { useRouter } from './useRouter';
9
+ import { CatchNotFound } from './not-found';
10
+ import { matchContext } from './matchContext';
11
+ import { SafeFragment } from './SafeFragment';
12
+ import { renderRouteNotFound } from './renderRouteNotFound';
13
+ import { ScrollRestoration } from './scroll-restoration';
14
+ export const Match = (props) => {
15
+ const router = useRouter();
16
+ const routeId = useRouterState({
17
+ select: (s) => {
18
+ return s.matches.find((d) => d.id === props.matchId)?.routeId;
19
+ },
20
+ });
21
+ invariant(routeId, `Could not find routeId for matchId "${props.matchId}". Please file an issue!`);
22
+ const route = () => router.routesById[routeId()];
23
+ const PendingComponent = () => route().options.pendingComponent ?? router.options.defaultPendingComponent;
24
+ const routeErrorComponent = () => route().options.errorComponent ?? router.options.defaultErrorComponent;
25
+ const routeOnCatch = () => route().options.onCatch ?? router.options.defaultOnCatch;
26
+ const routeNotFoundComponent = () => route().isRoot
27
+ ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component
28
+ (route().options.notFoundComponent ??
29
+ router.options.notFoundRoute?.options.component)
30
+ : route().options.notFoundComponent;
31
+ const ResolvedSuspenseBoundary = () =>
32
+ // If we're on the root route, allow forcefully wrapping in suspense
33
+ (!route().isRoot || route().options.wrapInSuspense) &&
34
+ (route().options.wrapInSuspense ??
35
+ PendingComponent() ??
36
+ route().options.errorComponent?.preload)
37
+ ? Solid.Suspense
38
+ : SafeFragment;
39
+ const ResolvedCatchBoundary = () => routeErrorComponent() ? CatchBoundary : SafeFragment;
40
+ const ResolvedNotFoundBoundary = () => routeNotFoundComponent() ? CatchNotFound : SafeFragment;
41
+ const resetKey = useRouterState({
42
+ select: (s) => s.loadedAt,
43
+ });
44
+ const parentRouteId = useRouterState({
45
+ select: (s) => {
46
+ const index = s.matches.findIndex((d) => d.id === props.matchId);
47
+ return s.matches[index - 1]?.routeId;
48
+ },
49
+ });
50
+ return (<>
51
+ <matchContext.Provider value={() => props.matchId}>
52
+ <Dynamic component={ResolvedSuspenseBoundary()} fallback={<Dynamic component={PendingComponent()}/>}>
53
+ <Dynamic component={ResolvedCatchBoundary()} getResetKey={() => resetKey()} errorComponent={routeErrorComponent() || ErrorComponent} onCatch={(error) => {
54
+ // Forward not found errors (we don't want to show the error component for these)
55
+ if (isNotFound(error))
56
+ throw error;
57
+ warning(false, `Error in route match: ${props.matchId}`);
58
+ routeOnCatch()?.(error);
59
+ }}>
60
+ <Dynamic component={ResolvedNotFoundBoundary()} fallback={(error) => {
61
+ // If the current not found handler doesn't exist or it has a
62
+ // route ID which doesn't match the current route, rethrow the error
63
+ if (!routeNotFoundComponent() ||
64
+ (error.routeId && error.routeId !== routeId) ||
65
+ (!error.routeId && !route().isRoot))
66
+ throw error;
67
+ return (<Dynamic component={routeNotFoundComponent()} {...error}/>);
68
+ }}>
69
+ <MatchInner matchId={props.matchId}/>
70
+ </Dynamic>
71
+ </Dynamic>
72
+ </Dynamic>
73
+ </matchContext.Provider>
74
+
75
+ {parentRouteId() === rootRouteId ? (<>
76
+ <OnRendered />
77
+ <ScrollRestoration />
78
+ </>) : null}
79
+ </>);
80
+ };
81
+ // On Rendered can't happen above the root layout because it actually
82
+ // renders a dummy dom element to track the rendered state of the app.
83
+ // We render a script tag with a key that changes based on the current
84
+ // location state.key. Also, because it's below the root layout, it
85
+ // allows us to fire onRendered events even after a hydration mismatch
86
+ // error that occurred above the root layout (like bad head/link tags,
87
+ // which is common).
88
+ function OnRendered() {
89
+ const router = useRouter();
90
+ const location = useRouterState({
91
+ select: (s) => {
92
+ return s.resolvedLocation?.state.key;
93
+ },
94
+ });
95
+ Solid.createEffect(Solid.on([location], () => {
96
+ router.emit({
97
+ type: 'onRendered',
98
+ ...getLocationChangeInfo(router.state),
99
+ });
100
+ }));
101
+ return null;
102
+ }
103
+ export const MatchInner = (props) => {
104
+ const router = useRouter();
105
+ // { match, key, routeId } =
106
+ const matchState = useRouterState({
107
+ select: (s) => {
108
+ const matchIndex = s.matches.findIndex((d) => d.id === props.matchId);
109
+ const match = s.matches[matchIndex];
110
+ const routeId = match.routeId;
111
+ const remountFn = router.routesById[routeId].options.remountDeps ??
112
+ router.options.defaultRemountDeps;
113
+ const remountDeps = remountFn?.({
114
+ routeId,
115
+ loaderDeps: match.loaderDeps,
116
+ params: match._strictParams,
117
+ search: match._strictSearch,
118
+ });
119
+ const key = remountDeps ? JSON.stringify(remountDeps) : undefined;
120
+ return {
121
+ key,
122
+ routeId,
123
+ match: pick(match, ['id', 'status', 'error']),
124
+ };
125
+ },
126
+ });
127
+ const route = () => router.routesById[matchState().routeId];
128
+ // function useChangedDiff(value: any) {
129
+ // const ref = Solid.useRef(value)
130
+ // const changed = ref.current !== value
131
+ // if (changed) {
132
+ // console.log(
133
+ // 'Changed:',
134
+ // value,
135
+ // Object.fromEntries(
136
+ // Object.entries(value).filter(
137
+ // ([key, val]) => val !== ref.current[key],
138
+ // ),
139
+ // ),
140
+ // )
141
+ // }
142
+ // ref.current = value
143
+ // }
144
+ // useChangedDiff(match)
145
+ const match = () => matchState().match;
146
+ const out = () => {
147
+ const Comp = route().options.component ?? router.options.defaultComponent;
148
+ if (Comp) {
149
+ return <Comp />;
150
+ }
151
+ return <Outlet />;
152
+ };
153
+ return (<Solid.Switch>
154
+ <Solid.Match when={match().status === 'notFound'}>
155
+ {(_) => {
156
+ invariant(isNotFound(match().error), 'Expected a notFound error');
157
+ return renderRouteNotFound(router, route(), match().error);
158
+ }}
159
+ </Solid.Match>
160
+ <Solid.Match when={match().status === 'redirected'}>
161
+ {(_) => {
162
+ invariant(isRedirect(match().error), 'Expected a redirect error');
163
+ const [loaderResult] = Solid.createResource(async () => {
164
+ await new Promise((r) => setTimeout(r, 0));
165
+ return router.getMatch(match().id)?.loadPromise;
166
+ });
167
+ return <>{loaderResult()}</>;
168
+ }}
169
+ </Solid.Match>
170
+ <Solid.Match when={match().status === 'error'}>
171
+ {(_) => {
172
+ if (router.isServer) {
173
+ const RouteErrorComponent = (route().options.errorComponent ??
174
+ router.options.defaultErrorComponent) ||
175
+ ErrorComponent;
176
+ return (<RouteErrorComponent error={match().error} info={{
177
+ componentStack: '',
178
+ }}/>);
179
+ }
180
+ throw match().error;
181
+ }}
182
+ </Solid.Match>
183
+ <Solid.Match when={match().status === 'pending'}>
184
+ {(_) => {
185
+ const pendingMinMs = route().options.pendingMinMs ?? router.options.defaultPendingMinMs;
186
+ if (pendingMinMs && !router.getMatch(match().id)?.minPendingPromise) {
187
+ // Create a promise that will resolve after the minPendingMs
188
+ if (!router.isServer) {
189
+ const minPendingPromise = createControlledPromise();
190
+ Promise.resolve().then(() => {
191
+ router.updateMatch(match().id, (prev) => ({
192
+ ...prev,
193
+ minPendingPromise,
194
+ }));
195
+ });
196
+ setTimeout(() => {
197
+ minPendingPromise.resolve();
198
+ // We've handled the minPendingPromise, so we can delete it
199
+ router.updateMatch(match().id, (prev) => ({
200
+ ...prev,
201
+ minPendingPromise: undefined,
202
+ }));
203
+ }, pendingMinMs);
204
+ }
205
+ }
206
+ const [loaderResult] = Solid.createResource(async () => {
207
+ await new Promise((r) => setTimeout(r, 0));
208
+ return router.getMatch(match().id)?.loadPromise;
209
+ });
210
+ return <>{loaderResult()}</>;
211
+ }}
212
+ </Solid.Match>
213
+ <Solid.Match when={match().status === 'success'}>{out()}</Solid.Match>
214
+ </Solid.Switch>);
215
+ };
216
+ export const Outlet = () => {
217
+ const router = useRouter();
218
+ const matchId = Solid.useContext(matchContext);
219
+ const routeId = useRouterState({
220
+ select: (s) => s.matches.find((d) => d.id === matchId())?.routeId,
221
+ });
222
+ const route = () => router.routesById[routeId()];
223
+ const parentGlobalNotFound = useRouterState({
224
+ select: (s) => {
225
+ const matches = s.matches;
226
+ const parentMatch = matches.find((d) => d.id === matchId());
227
+ invariant(parentMatch, `Could not find parent match for matchId "${matchId()}"`);
228
+ return parentMatch.globalNotFound;
229
+ },
230
+ });
231
+ const childMatchId = useRouterState({
232
+ select: (s) => {
233
+ const matches = s.matches;
234
+ const index = matches.findIndex((d) => d.id === matchId());
235
+ const v = matches[index + 1]?.id;
236
+ return v;
237
+ },
238
+ });
239
+ return (<Solid.Switch>
240
+ <Solid.Match when={router.isShell}>
241
+ <Solid.Suspense fallback={<Dynamic component={router.options.defaultPendingComponent}/>}>
242
+ <ErrorComponent error={new Error('ShellBoundaryError')}/>
243
+ </Solid.Suspense>
244
+ </Solid.Match>
245
+
246
+ <Solid.Match when={parentGlobalNotFound()}>
247
+ {renderRouteNotFound(router, route(), undefined)}
248
+ </Solid.Match>
249
+ <Solid.Match when={childMatchId()}>
250
+ {(matchId) => {
251
+ // const nextMatch = <Match matchId={matchId()} />
252
+ return (<Solid.Show when={matchId() === rootRouteId} fallback={<Match matchId={matchId()}/>}>
253
+ <Solid.Suspense fallback={<Dynamic component={router.options.defaultPendingComponent}/>}>
254
+ <Match matchId={matchId()}/>
255
+ </Solid.Suspense>
256
+ </Solid.Show>);
257
+ }}
258
+ </Solid.Match>
259
+ </Solid.Switch>);
260
+ };
261
+ //# sourceMappingURL=Match.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Match.jsx","sourceRoot":"","sources":["../../src/Match.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import * as Solid from 'solid-js';
2
+ import type { AnyRouter, DeepPartial, Expand, MakeOptionalPathParams, MakeOptionalSearchParams, MakeRouteMatchUnion, MaskOptions, MatchRouteOptions, NoInfer, RegisteredRouter, ResolveRelativePath, ResolveRoute, RouteByPath, ToSubOptionsProps } from '@tanstack/router-core';
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,104 @@
1
+ import * as Solid from 'solid-js';
2
+ import warning from 'tiny-warning';
3
+ import { CatchBoundary, ErrorComponent } from './CatchBoundary';
4
+ import { useRouterState } from './useRouterState';
5
+ import { useRouter } from './useRouter';
6
+ import { Transitioner } from './Transitioner';
7
+ import { matchContext } from './matchContext';
8
+ import { Match } from './Match';
9
+ import { SafeFragment } from './SafeFragment';
10
+ export function Matches() {
11
+ const router = useRouter();
12
+ const pendingElement = router.options.defaultPendingComponent ? (<router.options.defaultPendingComponent />) : null;
13
+ // Do not render a root Suspense during SSR or hydrating from SSR
14
+ const ResolvedSuspense = router.isServer || (typeof document !== 'undefined' && router.clientSsr)
15
+ ? SafeFragment
16
+ : Solid.Suspense;
17
+ const inner = (<ResolvedSuspense fallback={pendingElement}>
18
+ <Transitioner />
19
+ <MatchesInner />
20
+ </ResolvedSuspense>);
21
+ return router.options.InnerWrap ? (<router.options.InnerWrap>{inner}</router.options.InnerWrap>) : (inner);
22
+ }
23
+ function MatchesInner() {
24
+ const matchId = useRouterState({
25
+ select: (s) => {
26
+ return s.matches[0]?.id;
27
+ },
28
+ });
29
+ const resetKey = useRouterState({
30
+ select: (s) => s.loadedAt,
31
+ });
32
+ return (<matchContext.Provider value={matchId}>
33
+ <CatchBoundary getResetKey={() => resetKey()} errorComponent={ErrorComponent} onCatch={(error) => {
34
+ warning(false, `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);
35
+ warning(false, error.message || error.toString());
36
+ }}>
37
+ {matchId() ? <Match matchId={matchId()}/> : null}
38
+ </CatchBoundary>
39
+ </matchContext.Provider>);
40
+ }
41
+ export function useMatchRoute() {
42
+ const router = useRouter();
43
+ const status = useRouterState({
44
+ select: (s) => s.status,
45
+ });
46
+ return (opts) => {
47
+ const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;
48
+ const matchRoute = Solid.createMemo(() => {
49
+ status();
50
+ return router.matchRoute(rest, {
51
+ pending,
52
+ caseSensitive,
53
+ fuzzy,
54
+ includeSearch,
55
+ });
56
+ });
57
+ return matchRoute;
58
+ };
59
+ }
60
+ export function MatchRoute(props) {
61
+ const status = useRouterState({
62
+ select: (s) => s.status,
63
+ });
64
+ return (<Solid.Show when={status()} keyed>
65
+ {(_) => {
66
+ const matchRoute = useMatchRoute();
67
+ const params = matchRoute(props)();
68
+ const child = props.children;
69
+ if (typeof child === 'function') {
70
+ return child(params);
71
+ }
72
+ return params ? child : null;
73
+ }}
74
+ </Solid.Show>);
75
+ }
76
+ export function useMatches(opts) {
77
+ return useRouterState({
78
+ select: (state) => {
79
+ const matches = state.matches;
80
+ return opts?.select
81
+ ? opts.select(matches)
82
+ : matches;
83
+ },
84
+ });
85
+ }
86
+ export function useParentMatches(opts) {
87
+ const contextMatchId = Solid.useContext(matchContext);
88
+ return useMatches({
89
+ select: (matches) => {
90
+ matches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId()));
91
+ return opts?.select ? opts.select(matches) : matches;
92
+ },
93
+ });
94
+ }
95
+ export function useChildMatches(opts) {
96
+ const contextMatchId = Solid.useContext(matchContext);
97
+ return useMatches({
98
+ select: (matches) => {
99
+ matches = matches.slice(matches.findIndex((d) => d.id === contextMatchId()) + 1);
100
+ return opts?.select ? opts.select(matches) : matches;
101
+ },
102
+ });
103
+ }
104
+ //# sourceMappingURL=Matches.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type * as Solid from 'solid-js';
2
+ import type { AnyRouter, RegisteredRouter, RouterOptions } from '@tanstack/router-core';
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,27 @@
1
+ import { Matches } from './Matches';
2
+ import { getRouterContext } from './routerContext';
3
+ export function RouterContextProvider({ router, children, ...rest }) {
4
+ // Allow the router to update options on the router instance
5
+ router.update({
6
+ ...router.options,
7
+ ...rest,
8
+ context: {
9
+ ...router.options.context,
10
+ ...rest.context,
11
+ },
12
+ });
13
+ const routerContext = getRouterContext();
14
+ const provider = (<routerContext.Provider value={router}>
15
+ {children()}
16
+ </routerContext.Provider>);
17
+ if (router.options.Wrap) {
18
+ return <router.options.Wrap>{provider}</router.options.Wrap>;
19
+ }
20
+ return provider;
21
+ }
22
+ export function RouterProvider({ router, ...rest }) {
23
+ return (<RouterContextProvider router={router} {...rest}>
24
+ {() => <Matches />}
25
+ </RouterContextProvider>);
26
+ }
27
+ //# sourceMappingURL=RouterProvider.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterProvider.jsx","sourceRoot":"","sources":["../../src/RouterProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAQlD,MAAM,UAAU,qBAAqB,CAGnC,EACA,MAAM,EACN,QAAQ,EACR,GAAG,IAAI,EAGR;IACC,4DAA4D;IAC5D,MAAM,CAAC,MAAM,CAAC;QACZ,GAAG,MAAM,CAAC,OAAO;QACjB,GAAG,IAAI;QACP,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;YACzB,GAAG,IAAI,CAAC,OAAO;SAChB;KACK,CAAC,CAAA;IAET,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,MAAM,QAAQ,GAAG,CACf,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAmB,CAAC,CACjD;MAAA,CAAC,QAAQ,EAAE,CACb;IAAA,EAAE,aAAa,CAAC,QAAQ,CAAC,CAC1B,CAAA;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAG5B,EAAE,MAAM,EAAE,GAAG,IAAI,EAAqC;IACtD,OAAO,CACL,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAC9C;MAAA,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,AAAD,EAAG,CACpB;IAAA,EAAE,qBAAqB,CAAC,CACzB,CAAA;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function SafeFragment(props: any): import("solid-js").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export function SafeFragment(props) {
2
+ return <>{props.children}</>;
3
+ }
4
+ //# sourceMappingURL=SafeFragment.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeFragment.jsx","sourceRoot":"","sources":["../../src/SafeFragment.tsx"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAU;IACrC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function ScriptOnce({ children, log, }: {
2
+ children: string;
3
+ log?: boolean;
4
+ sync?: boolean;
5
+ }): import("solid-js").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import jsesc from 'jsesc';
2
+ export function ScriptOnce({ children, log, }) {
3
+ if (typeof document !== 'undefined') {
4
+ return null;
5
+ }
6
+ return (<script class="tsr-once" innerHTML={[
7
+ children,
8
+ (log ?? true) && process.env.NODE_ENV === 'development'
9
+ ? `console.info(\`Injected From Server:
10
+ ${jsesc(children.toString(), { quotes: 'backtick' })}\`)`
11
+ : '',
12
+ 'if (typeof __TSR_SSR__ !== "undefined") __TSR_SSR__.cleanScripts()',
13
+ ]
14
+ .filter(Boolean)
15
+ .join('\n')}/>);
16
+ }
17
+ //# sourceMappingURL=ScriptOnce.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptOnce.jsx","sourceRoot":"","sources":["../../src/ScriptOnce.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,GAAG,GAKJ;IACC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,CAAC,MAAM,CACL,KAAK,CAAC,UAAU,CAChB,SAAS,CAAC,CAAC;YACT,QAAQ;YACR,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;gBACrD,CAAC,CAAC;EACV,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,KAAK;gBAC/C,CAAC,CAAC,EAAE;YACN,oEAAoE;SACrE;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC,EACd,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const Scripts: () => import("solid-js").JSX.Element;
@@ -0,0 +1,49 @@
1
+ import { Asset } from './Asset';
2
+ import { useRouterState } from './useRouterState';
3
+ import { useRouter } from './useRouter';
4
+ export const Scripts = () => {
5
+ const router = useRouter();
6
+ const assetScripts = useRouterState({
7
+ select: (state) => {
8
+ const assetScripts = [];
9
+ const manifest = router.ssr?.manifest;
10
+ if (!manifest) {
11
+ return [];
12
+ }
13
+ state.matches
14
+ .map((match) => router.looseRoutesById[match.routeId])
15
+ .forEach((route) => manifest.routes[route.id]?.assets
16
+ ?.filter((d) => d.tag === 'script')
17
+ .forEach((asset) => {
18
+ assetScripts.push({
19
+ tag: 'script',
20
+ attrs: asset.attrs,
21
+ children: asset.children,
22
+ });
23
+ }));
24
+ return assetScripts;
25
+ },
26
+ });
27
+ const scripts = useRouterState({
28
+ select: (state) => ({
29
+ scripts: state.matches
30
+ .map((match) => match.scripts)
31
+ .flat(1)
32
+ .filter(Boolean).map(({ children, ...script }) => ({
33
+ tag: 'script',
34
+ attrs: {
35
+ ...script,
36
+ },
37
+ children,
38
+ })),
39
+ }),
40
+ });
41
+ const allScripts = [
42
+ ...scripts().scripts,
43
+ ...assetScripts(),
44
+ ];
45
+ return (<>
46
+ {allScripts.map((asset, i) => (<Asset {...asset}/>))}
47
+ </>);
48
+ };
49
+ //# sourceMappingURL=Scripts.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,YAAY,GAAG,cAAc,CAAC;QAClC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,YAAY,GAA4B,EAAE,CAAA;YAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAA;YAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,EAAE,CAAA;YACX,CAAC;YAED,KAAK,CAAC,OAAO;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;iBACtD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM;gBAC/B,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;iBAClC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,YAAY,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBAClB,CAAC,CAAA;YACX,CAAC,CAAC,CACL,CAAA;YAEH,OAAO,YAAY,CAAA;QACrB,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,cAAc,CAAC;QAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClB,OAAO,EACL,KAAK,CAAC,OAAO;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC;iBAC9B,IAAI,CAAC,CAAC,CAAC;iBACP,MAAM,CAAC,OAAO,CAClB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE;oBACL,GAAG,MAAM;iBACV;gBACD,QAAQ;aACT,CAAC,CAAC;SACJ,CAAC;KACH,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO,EAAE,CAAC,OAAO;QACpB,GAAG,YAAY,EAAE;KACS,CAAA;IAE5B,OAAO,CACL,EACE;MAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAG,CACrB,CAAC,CACJ;IAAA,GAAG,CACJ,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { ParsedLocation, ScrollRestorationEntry, ScrollRestorationOptions } from '@tanstack/router-core';
2
+ /**
3
+ * @deprecated use createRouter's `scrollRestoration` option instead
4
+ */
5
+ export declare function ScrollRestoration(_props: ScrollRestorationOptions): null;
6
+ export declare function useElementScrollRestoration(options: ({
7
+ id: string;
8
+ getElement?: () => Window | Element | undefined | null;
9
+ } | {
10
+ id?: string;
11
+ getElement: () => Window | Element | undefined | null;
12
+ }) & {
13
+ getKey?: (location: ParsedLocation) => string;
14
+ }): ScrollRestorationEntry | undefined;
@@ -0,0 +1,37 @@
1
+ import { defaultGetScrollRestorationKey, getCssSelector, scrollRestorationCache, setupScrollRestoration, } from '@tanstack/router-core';
2
+ import { useRouter } from './useRouter';
3
+ function useScrollRestoration() {
4
+ const router = useRouter();
5
+ setupScrollRestoration(router, true);
6
+ }
7
+ /**
8
+ * @deprecated use createRouter's `scrollRestoration` option instead
9
+ */
10
+ export function ScrollRestoration(_props) {
11
+ useScrollRestoration();
12
+ if (process.env.NODE_ENV === 'development') {
13
+ console.warn("The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.");
14
+ }
15
+ return null;
16
+ }
17
+ export function useElementScrollRestoration(options) {
18
+ useScrollRestoration();
19
+ const router = useRouter();
20
+ const getKey = options.getKey || defaultGetScrollRestorationKey;
21
+ let elementSelector = '';
22
+ if (options.id) {
23
+ elementSelector = `[data-scroll-restoration-id="${options.id}"]`;
24
+ }
25
+ else {
26
+ const element = options.getElement?.();
27
+ if (!element) {
28
+ return;
29
+ }
30
+ elementSelector =
31
+ element instanceof Window ? 'window' : getCssSelector(element);
32
+ }
33
+ const restoreKey = getKey(router.latestLocation);
34
+ const byKey = scrollRestorationCache?.state[restoreKey];
35
+ return byKey?.[elementSelector];
36
+ }
37
+ //# sourceMappingURL=ScrollRestoration.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollRestoration.jsx","sourceRoot":"","sources":["../../src/ScrollRestoration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAOvC,SAAS,oBAAoB;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAgC;IAChE,oBAAoB,EAAE,CAAA;IAEtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CACV,uGAAuG,CACxG,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAWC;IAED,oBAAoB,EAAE,CAAA;IAEtB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,8BAA8B,CAAA;IAE/D,IAAI,eAAe,GAAG,EAAE,CAAA;IAExB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,eAAe,GAAG,gCAAgC,OAAO,CAAC,EAAE,IAAI,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAA;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QACD,eAAe;YACb,OAAO,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,sBAAsB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IACvD,OAAO,KAAK,EAAE,CAAC,eAAe,CAAC,CAAA;AACjC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function Transitioner(): null;