@tanstack/solid-router 1.167.4 → 1.168.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/dist/cjs/Match.cjs +244 -223
  2. package/dist/cjs/Match.cjs.map +1 -1
  3. package/dist/cjs/Match.d.cts +1 -3
  4. package/dist/cjs/Matches.cjs +32 -31
  5. package/dist/cjs/Matches.cjs.map +1 -1
  6. package/dist/cjs/Scripts.cjs +10 -8
  7. package/dist/cjs/Scripts.cjs.map +1 -1
  8. package/dist/cjs/Scripts.d.cts +2 -1
  9. package/dist/cjs/Transitioner.cjs +26 -26
  10. package/dist/cjs/Transitioner.cjs.map +1 -1
  11. package/dist/cjs/headContentUtils.cjs +15 -15
  12. package/dist/cjs/headContentUtils.cjs.map +1 -1
  13. package/dist/cjs/index.cjs +1 -1
  14. package/dist/cjs/index.dev.cjs +1 -1
  15. package/dist/cjs/link.cjs +119 -84
  16. package/dist/cjs/link.cjs.map +1 -1
  17. package/dist/cjs/matchContext.cjs +7 -5
  18. package/dist/cjs/matchContext.cjs.map +1 -1
  19. package/dist/cjs/matchContext.d.cts +8 -2
  20. package/dist/cjs/not-found.cjs +8 -4
  21. package/dist/cjs/not-found.cjs.map +1 -1
  22. package/dist/cjs/not-found.d.cts +1 -1
  23. package/dist/cjs/router.cjs +2 -1
  24. package/dist/cjs/router.cjs.map +1 -1
  25. package/dist/cjs/routerStores.cjs +67 -0
  26. package/dist/cjs/routerStores.cjs.map +1 -0
  27. package/dist/cjs/routerStores.d.cts +10 -0
  28. package/dist/cjs/ssr/RouterClient.cjs +1 -1
  29. package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
  30. package/dist/cjs/ssr/renderRouterToStream.cjs +1 -1
  31. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
  32. package/dist/cjs/ssr/renderRouterToString.cjs +2 -2
  33. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
  34. package/dist/cjs/ssr/renderRouterToString.d.cts +1 -1
  35. package/dist/cjs/useCanGoBack.cjs +6 -2
  36. package/dist/cjs/useCanGoBack.cjs.map +1 -1
  37. package/dist/cjs/useCanGoBack.d.cts +2 -1
  38. package/dist/cjs/useLoaderDeps.cjs +2 -3
  39. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  40. package/dist/cjs/useLocation.cjs +13 -2
  41. package/dist/cjs/useLocation.cjs.map +1 -1
  42. package/dist/cjs/useMatch.cjs +17 -15
  43. package/dist/cjs/useMatch.cjs.map +1 -1
  44. package/dist/cjs/useParams.cjs +1 -1
  45. package/dist/cjs/useParams.cjs.map +1 -1
  46. package/dist/cjs/useRouterState.cjs +12 -19
  47. package/dist/cjs/useRouterState.cjs.map +1 -1
  48. package/dist/cjs/useSearch.cjs +2 -1
  49. package/dist/cjs/useSearch.cjs.map +1 -1
  50. package/dist/cjs/utils.cjs +0 -14
  51. package/dist/cjs/utils.cjs.map +1 -1
  52. package/dist/cjs/utils.d.cts +0 -4
  53. package/dist/esm/Match.d.ts +1 -3
  54. package/dist/esm/Match.js +245 -224
  55. package/dist/esm/Match.js.map +1 -1
  56. package/dist/esm/Matches.js +34 -33
  57. package/dist/esm/Matches.js.map +1 -1
  58. package/dist/esm/Scripts.d.ts +2 -1
  59. package/dist/esm/Scripts.js +8 -7
  60. package/dist/esm/Scripts.js.map +1 -1
  61. package/dist/esm/Transitioner.js +26 -26
  62. package/dist/esm/Transitioner.js.map +1 -1
  63. package/dist/esm/headContentUtils.js +15 -15
  64. package/dist/esm/headContentUtils.js.map +1 -1
  65. package/dist/esm/index.dev.js +1 -1
  66. package/dist/esm/index.js +1 -1
  67. package/dist/esm/link.js +120 -85
  68. package/dist/esm/link.js.map +1 -1
  69. package/dist/esm/matchContext.d.ts +8 -2
  70. package/dist/esm/matchContext.js +7 -4
  71. package/dist/esm/matchContext.js.map +1 -1
  72. package/dist/esm/not-found.d.ts +1 -1
  73. package/dist/esm/not-found.js +6 -3
  74. package/dist/esm/not-found.js.map +1 -1
  75. package/dist/esm/router.js +2 -1
  76. package/dist/esm/router.js.map +1 -1
  77. package/dist/esm/routerStores.d.ts +10 -0
  78. package/dist/esm/routerStores.js +65 -0
  79. package/dist/esm/routerStores.js.map +1 -0
  80. package/dist/esm/ssr/RouterClient.js +1 -1
  81. package/dist/esm/ssr/RouterClient.js.map +1 -1
  82. package/dist/esm/ssr/renderRouterToStream.js +1 -1
  83. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  84. package/dist/esm/ssr/renderRouterToString.d.ts +1 -1
  85. package/dist/esm/ssr/renderRouterToString.js +2 -2
  86. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  87. package/dist/esm/useCanGoBack.d.ts +2 -1
  88. package/dist/esm/useCanGoBack.js +4 -2
  89. package/dist/esm/useCanGoBack.js.map +1 -1
  90. package/dist/esm/useLoaderDeps.js +2 -3
  91. package/dist/esm/useLoaderDeps.js.map +1 -1
  92. package/dist/esm/useLocation.js +11 -2
  93. package/dist/esm/useLocation.js.map +1 -1
  94. package/dist/esm/useMatch.js +18 -16
  95. package/dist/esm/useMatch.js.map +1 -1
  96. package/dist/esm/useParams.js +1 -1
  97. package/dist/esm/useParams.js.map +1 -1
  98. package/dist/esm/useRouterState.js +10 -18
  99. package/dist/esm/useRouterState.js.map +1 -1
  100. package/dist/esm/useSearch.js +2 -1
  101. package/dist/esm/useSearch.js.map +1 -1
  102. package/dist/esm/utils.d.ts +0 -4
  103. package/dist/esm/utils.js +1 -14
  104. package/dist/esm/utils.js.map +1 -1
  105. package/dist/source/Match.d.ts +1 -3
  106. package/dist/source/Match.jsx +246 -237
  107. package/dist/source/Match.jsx.map +1 -1
  108. package/dist/source/Matches.jsx +42 -44
  109. package/dist/source/Matches.jsx.map +1 -1
  110. package/dist/source/Scripts.d.ts +2 -1
  111. package/dist/source/Scripts.jsx +31 -36
  112. package/dist/source/Scripts.jsx.map +1 -1
  113. package/dist/source/Transitioner.jsx +26 -31
  114. package/dist/source/Transitioner.jsx.map +1 -1
  115. package/dist/source/headContentUtils.jsx +64 -72
  116. package/dist/source/headContentUtils.jsx.map +1 -1
  117. package/dist/source/link.jsx +136 -107
  118. package/dist/source/link.jsx.map +1 -1
  119. package/dist/source/matchContext.d.ts +8 -2
  120. package/dist/source/matchContext.jsx +7 -3
  121. package/dist/source/matchContext.jsx.map +1 -1
  122. package/dist/source/not-found.d.ts +1 -1
  123. package/dist/source/not-found.jsx +6 -5
  124. package/dist/source/not-found.jsx.map +1 -1
  125. package/dist/source/router.js +2 -1
  126. package/dist/source/router.js.map +1 -1
  127. package/dist/source/routerStores.d.ts +10 -0
  128. package/dist/source/routerStores.js +71 -0
  129. package/dist/source/routerStores.js.map +1 -0
  130. package/dist/source/ssr/RouterClient.jsx +1 -1
  131. package/dist/source/ssr/RouterClient.jsx.map +1 -1
  132. package/dist/source/ssr/renderRouterToStream.jsx +1 -1
  133. package/dist/source/ssr/renderRouterToStream.jsx.map +1 -1
  134. package/dist/source/ssr/renderRouterToString.d.ts +1 -1
  135. package/dist/source/ssr/renderRouterToString.jsx +2 -2
  136. package/dist/source/ssr/renderRouterToString.jsx.map +1 -1
  137. package/dist/source/useCanGoBack.d.ts +2 -1
  138. package/dist/source/useCanGoBack.js +4 -2
  139. package/dist/source/useCanGoBack.js.map +1 -1
  140. package/dist/source/useLoaderDeps.jsx +2 -3
  141. package/dist/source/useLoaderDeps.jsx.map +1 -1
  142. package/dist/source/useLocation.jsx +13 -3
  143. package/dist/source/useLocation.jsx.map +1 -1
  144. package/dist/source/useMatch.jsx +30 -27
  145. package/dist/source/useMatch.jsx.map +1 -1
  146. package/dist/source/useParams.jsx +1 -1
  147. package/dist/source/useParams.jsx.map +1 -1
  148. package/dist/source/useRouterState.jsx +12 -33
  149. package/dist/source/useRouterState.jsx.map +1 -1
  150. package/dist/source/useSearch.jsx +2 -1
  151. package/dist/source/useSearch.jsx.map +1 -1
  152. package/dist/source/utils.d.ts +0 -4
  153. package/dist/source/utils.js +0 -13
  154. package/dist/source/utils.js.map +1 -1
  155. package/package.json +2 -3
  156. package/skills/solid-router/SKILL.md +2 -0
  157. package/src/Match.tsx +351 -304
  158. package/src/Matches.tsx +49 -52
  159. package/src/Scripts.tsx +40 -41
  160. package/src/Transitioner.tsx +67 -66
  161. package/src/headContentUtils.tsx +89 -91
  162. package/src/link.tsx +179 -141
  163. package/src/matchContext.tsx +16 -7
  164. package/src/not-found.tsx +6 -6
  165. package/src/router.ts +2 -1
  166. package/src/routerStores.ts +107 -0
  167. package/src/ssr/RouterClient.tsx +1 -1
  168. package/src/ssr/renderRouterToStream.tsx +1 -1
  169. package/src/ssr/renderRouterToString.tsx +2 -2
  170. package/src/useCanGoBack.ts +6 -2
  171. package/src/useLoaderDeps.tsx +2 -3
  172. package/src/useLocation.tsx +18 -5
  173. package/src/useMatch.tsx +36 -43
  174. package/src/useParams.tsx +2 -3
  175. package/src/useRouterState.tsx +17 -41
  176. package/src/useSearch.tsx +2 -1
  177. package/src/utils.ts +0 -20
@@ -1 +1 @@
1
- {"version":3,"file":"Match.cjs","names":["Solid","invariant","warning","createControlledPromise","getLocationChangeInfo","isNotFound","isRedirect","rootRouteId","isServer","Dynamic","CatchBoundary","ErrorComponent","useRouterState","useRouter","CatchNotFound","matchContext","SafeFragment","renderRouteNotFound","ScrollRestoration","AnyRoute","RootRouteOptions","Match","props","matchId","router","matchState","select","s","match","matches","find","d","id","routeId","ssr","_displayPending","route","routesById","resolvePendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","resolvedNoSsr","ResolvedSuspenseBoundary","Suspense","ResolvedCatchBoundary","ResolvedNotFoundBoundary","resetKey","loadedAt","parentRouteId","index","findIndex","ShellComponent","shellComponent","_$createComponent","children","Provider","value","fallback","_$memo","undefined","getResetKey","error","Error","_$mergeProps","Switch","when","Show","MatchInner","OnRendered","location","resolvedLocation","state","__TSR_key","createEffect","on","emit","type","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","key","JSON","stringify","status","_forcePending","componentKey","out","Comp","defaultComponent","Outlet","keyedOut","keyed","_key","_","displayPendingResult","createResource","getMatch","_nonReactive","displayPendingPromise","minPendingResult","minPendingPromise","pendingMinMs","defaultPendingMinMs","routerMatch","setTimeout","resolve","loaderResult","Promise","r","loadPromise","FallbackComponent","_routeId","useContext","parentGlobalNotFound","parentMatch","globalNotFound","childMatchId","v","childMatchStatus","shouldShowNotFound","matchIdAccessor","currentMatchId","createMemo"],"sources":["../../src/Match.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n createControlledPromise,\n getLocationChangeInfo,\n isNotFound,\n isRedirect,\n rootRouteId,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Dynamic } from 'solid-js/web'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound } from './not-found'\nimport { matchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { AnyRoute, RootRouteOptions } from '@tanstack/router-core'\n\nexport const Match = (props: { matchId: string }) => {\n const router = useRouter()\n const matchState = useRouterState({\n select: (s) => {\n const match = s.matches.find((d) => d.id === props.matchId)\n\n // During navigation transitions, matches can be temporarily removed\n // Return null to avoid errors - the component will handle this gracefully\n if (!match) {\n return null\n }\n\n return {\n routeId: match.routeId,\n ssr: match.ssr,\n _displayPending: match._displayPending,\n }\n },\n })\n\n // If match doesn't exist yet, return null (component is being unmounted or not ready)\n if (!matchState()) return null\n\n const route: () => AnyRoute = () => router.routesById[matchState()!.routeId]\n\n const resolvePendingComponent = () =>\n route().options.pendingComponent ?? router.options.defaultPendingComponent\n\n const routeErrorComponent = () =>\n route().options.errorComponent ?? router.options.defaultErrorComponent\n\n const routeOnCatch = () =>\n route().options.onCatch ?? router.options.defaultOnCatch\n\n const routeNotFoundComponent = () =>\n route().isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n (route().options.notFoundComponent ??\n router.options.notFoundRoute?.options.component)\n : route().options.notFoundComponent\n\n const resolvedNoSsr =\n matchState()!.ssr === false || matchState()!.ssr === 'data-only'\n\n const ResolvedSuspenseBoundary = () => Solid.Suspense\n\n const ResolvedCatchBoundary = () =>\n routeErrorComponent() ? CatchBoundary : SafeFragment\n\n const ResolvedNotFoundBoundary = () =>\n routeNotFoundComponent() ? CatchNotFound : SafeFragment\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n const parentRouteId = useRouterState({\n select: (s) => {\n const index = s.matches.findIndex((d) => d.id === props.matchId)\n return s.matches[index - 1]?.routeId as string\n },\n })\n\n const ShellComponent = route().isRoot\n ? ((route().options as RootRouteOptions).shellComponent ?? SafeFragment)\n : SafeFragment\n\n return (\n <ShellComponent>\n <matchContext.Provider value={() => props.matchId}>\n <Dynamic\n component={ResolvedSuspenseBoundary()}\n fallback={\n // Don't show fallback on server when using no-ssr mode to avoid hydration mismatch\n (isServer ?? router.isServer) || resolvedNoSsr ? undefined : (\n <Dynamic component={resolvePendingComponent()} />\n )\n }\n >\n <Dynamic\n component={ResolvedCatchBoundary()}\n getResetKey={() => resetKey()}\n errorComponent={routeErrorComponent() || ErrorComponent}\n onCatch={(error: Error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(false, `Error in route match: ${matchState()!.routeId}`)\n routeOnCatch()?.(error)\n }}\n >\n <Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent() ||\n (error.routeId && error.routeId !== matchState()!.routeId) ||\n (!error.routeId && !route().isRoot)\n )\n throw error\n\n return (\n <Dynamic component={routeNotFoundComponent()} {...error} />\n )\n }}\n >\n <Solid.Switch>\n <Solid.Match when={resolvedNoSsr}>\n <Solid.Show\n when={!(isServer ?? router.isServer)}\n fallback={<Dynamic component={resolvePendingComponent()} />}\n >\n <MatchInner matchId={props.matchId} />\n </Solid.Show>\n </Solid.Match>\n <Solid.Match when={!resolvedNoSsr}>\n <MatchInner matchId={props.matchId} />\n </Solid.Match>\n </Solid.Switch>\n </Dynamic>\n </Dynamic>\n </Dynamic>\n </matchContext.Provider>\n\n {parentRouteId() === rootRouteId ? (\n <>\n <OnRendered />\n <ScrollRestoration />\n </>\n ) : null}\n </ShellComponent>\n )\n}\n\n// On Rendered can't happen above the root layout because it actually\n// renders a dummy dom element to track the rendered state of the app.\n// We render a script tag with a key that changes based on the current\n// location state.__TSR_key. Also, because it's below the root layout, it\n// allows us to fire onRendered events even after a hydration mismatch\n// error that occurred above the root layout (like bad head/link tags,\n// which is common).\nfunction OnRendered() {\n const router = useRouter()\n\n const location = useRouterState({\n select: (s) => {\n return s.resolvedLocation?.state.__TSR_key\n },\n })\n Solid.createEffect(\n Solid.on([location], () => {\n router.emit({\n type: 'onRendered',\n ...getLocationChangeInfo(router.state),\n })\n }),\n )\n return null\n}\n\nexport const MatchInner = (props: { matchId: string }): any => {\n const router = useRouter()\n\n const matchState = useRouterState({\n select: (s) => {\n const match = s.matches.find((d) => d.id === props.matchId)\n\n // During navigation transitions, matches can be temporarily removed\n if (!match) {\n return null\n }\n\n const routeId = match.routeId as string\n\n const remountFn =\n (router.routesById[routeId] as AnyRoute).options.remountDeps ??\n router.options.defaultRemountDeps\n const remountDeps = remountFn?.({\n routeId,\n loaderDeps: match.loaderDeps,\n params: match._strictParams,\n search: match._strictSearch,\n })\n const key = remountDeps ? JSON.stringify(remountDeps) : undefined\n\n return {\n key,\n routeId,\n match: {\n id: match.id,\n status: match.status,\n error: match.error,\n _forcePending: match._forcePending,\n _displayPending: match._displayPending,\n },\n }\n },\n })\n\n if (!matchState()) return null\n\n const route = () => router.routesById[matchState()!.routeId]!\n\n const match = () => matchState()!.match\n\n const componentKey = () => matchState()!.key ?? matchState()!.match.id\n\n const out = () => {\n const Comp = route().options.component ?? router.options.defaultComponent\n if (Comp) {\n return <Comp />\n }\n return <Outlet />\n }\n\n const keyedOut = () => (\n <Solid.Show when={componentKey()} keyed>\n {(_key) => out()}\n </Solid.Show>\n )\n\n return (\n <Solid.Switch>\n <Solid.Match when={match()._displayPending}>\n {(_) => {\n const [displayPendingResult] = Solid.createResource(\n () =>\n router.getMatch(match().id)?._nonReactive.displayPendingPromise,\n )\n\n return <>{displayPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match()._forcePending}>\n {(_) => {\n const [minPendingResult] = Solid.createResource(\n () => router.getMatch(match().id)?._nonReactive.minPendingPromise,\n )\n\n return <>{minPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'pending'}>\n {(_) => {\n const pendingMinMs =\n route().options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n if (pendingMinMs) {\n const routerMatch = router.getMatch(match().id)\n if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {\n // Create a promise that will resolve after the minPendingMs\n if (!(isServer ?? router.isServer)) {\n const minPendingPromise = createControlledPromise<void>()\n\n routerMatch._nonReactive.minPendingPromise = minPendingPromise\n\n setTimeout(() => {\n minPendingPromise.resolve()\n // We've handled the minPendingPromise, so we can delete it\n routerMatch._nonReactive.minPendingPromise = undefined\n }, pendingMinMs)\n }\n }\n }\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?._nonReactive.loadPromise\n })\n\n const FallbackComponent =\n route().options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return (\n <>\n {FallbackComponent && pendingMinMs > 0 ? (\n <Dynamic component={FallbackComponent} />\n ) : null}\n {loaderResult()}\n </>\n )\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'notFound'}>\n {(_) => {\n invariant(isNotFound(match().error), 'Expected a notFound error')\n\n // Use Show with keyed to ensure re-render when routeId changes\n return (\n <Solid.Show when={matchState()!.routeId} keyed>\n {(_routeId) =>\n renderRouteNotFound(router, route(), match().error)\n }\n </Solid.Show>\n )\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'redirected'}>\n {(_) => {\n invariant(isRedirect(match().error), 'Expected a redirect error')\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(match().id)?._nonReactive.loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'error'}>\n {(_) => {\n throw match().error\n }}\n </Solid.Match>\n <Solid.Match when={match().status === 'success'}>\n {keyedOut()}\n </Solid.Match>\n </Solid.Switch>\n )\n}\n\nexport const Outlet = () => {\n const router = useRouter()\n const matchId = Solid.useContext(matchContext)\n const routeId = useRouterState({\n select: (s) => s.matches.find((d) => d.id === matchId())?.routeId as string,\n })\n\n const route = () => router.routesById[routeId()]!\n\n const parentGlobalNotFound = useRouterState({\n select: (s) => {\n const matches = s.matches\n const parentMatch = matches.find((d) => d.id === matchId())\n\n // During navigation transitions, parent match can be temporarily removed\n // Return false to avoid errors - the component will handle this gracefully\n if (!parentMatch) {\n return false\n }\n\n return parentMatch.globalNotFound\n },\n })\n\n const childMatchId = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n const v = matches[index + 1]?.id\n return v\n },\n })\n\n const childMatchStatus = useRouterState({\n select: (s) => {\n const matches = s.matches\n const index = matches.findIndex((d) => d.id === matchId())\n return matches[index + 1]?.status\n },\n })\n\n // Only show not-found if we're not in a redirected state\n const shouldShowNotFound = () =>\n childMatchStatus() !== 'redirected' && parentGlobalNotFound()\n\n return (\n <Solid.Show\n when={!shouldShowNotFound() && childMatchId()}\n fallback={\n <Solid.Show when={shouldShowNotFound()}>\n {renderRouteNotFound(router, route(), undefined)}\n </Solid.Show>\n }\n >\n {(matchIdAccessor) => {\n // Use a memo to avoid stale accessor errors while keeping reactivity\n const currentMatchId = Solid.createMemo(() => matchIdAccessor())\n\n return (\n <Solid.Show\n when={routeId() === rootRouteId}\n fallback={<Match matchId={currentMatchId()} />}\n >\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <Match matchId={currentMatchId()} />\n </Solid.Suspense>\n </Solid.Show>\n )\n }}\n </Solid.Show>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,IAAaqB,SAASC,UAA+B;CACnD,MAAME,SAASX,kBAAAA,WAAW;CAC1B,MAAMY,aAAab,uBAAAA,eAAe,EAChCc,SAASC,MAAM;EACb,MAAMC,QAAQD,EAAEE,QAAQC,MAAMC,MAAMA,EAAEC,OAAOV,MAAMC,QAAQ;AAI3D,MAAI,CAACK,MACH,QAAO;AAGT,SAAO;GACLK,SAASL,MAAMK;GACfC,KAAKN,MAAMM;GACXC,iBAAiBP,MAAMO;GACxB;IAEJ,CAAC;AAGF,KAAI,CAACV,YAAY,CAAE,QAAO;CAE1B,MAAMW,cAA8BZ,OAAOa,WAAWZ,YAAY,CAAEQ;CAEpE,MAAMK,gCACJF,OAAO,CAACG,QAAQC,oBAAoBhB,OAAOe,QAAQE;CAErD,MAAMC,4BACJN,OAAO,CAACG,QAAQI,kBAAkBnB,OAAOe,QAAQK;CAEnD,MAAMC,qBACJT,OAAO,CAACG,QAAQO,WAAWtB,OAAOe,QAAQQ;CAE5C,MAAMC,+BACJZ,OAAO,CAACa,SAEHb,OAAO,CAACG,QAAQW,qBACjB1B,OAAOe,QAAQY,eAAeZ,QAAQa,YACtChB,OAAO,CAACG,QAAQW;CAEtB,MAAMG,gBACJ5B,YAAY,CAAES,QAAQ,SAAST,YAAY,CAAES,QAAQ;CAEvD,MAAMoB,iCAAiCtD,SAAMuD;CAE7C,MAAMC,8BACJd,qBAAqB,GAAGhC,sBAAAA,gBAAgBM,qBAAAA;CAE1C,MAAMyC,iCACJT,wBAAwB,GAAGlC,kBAAAA,gBAAgBE,qBAAAA;CAE7C,MAAM0C,WAAW9C,uBAAAA,eAAe,EAC9Bc,SAASC,MAAMA,EAAEgC,UAClB,CAAC;CAEF,MAAMC,gBAAgBhD,uBAAAA,eAAe,EACnCc,SAASC,MAAM;EACb,MAAMkC,QAAQlC,EAAEE,QAAQiC,WAAW/B,MAAMA,EAAEC,OAAOV,MAAMC,QAAQ;AAChE,SAAOI,EAAEE,QAAQgC,QAAQ,IAAI5B;IAEhC,CAAC;AAMF,SAAA,GAAA,aAAA,iBAJuBG,OAAO,CAACa,SACzBb,OAAO,CAACG,QAA6ByB,kBAAkBhD,qBAAAA,eACzDA,qBAAAA,cAGa,EAAA,IAAAkD,WAAA;AAAA,SAAA,EAAA,GAAA,aAAA,iBACZnD,qBAAAA,aAAaoD,UAAQ;GAACC,aAAa9C,MAAMC;GAAO,IAAA2C,WAAA;AAAA,YAAA,GAAA,aAAA,iBAC9CzD,aAAAA,SAAO;KAAA,IACN2C,YAAS;AAAA,aAAEE,0BAA0B;;KAAA,IACrCe,WAAQ;AAAA,cAAA,GAAA,aAAA,YAEN,CAAA,GAAC7D,+BAAAA,YAAYgB,OAAOhB,aAAa6C,eAAa,EAAA,GAAGkB,KAAAA,KAAAA,GAAAA,aAAAA,iBAC9C9D,aAAAA,SAAO,EAAA,IAAC2C,YAAS;AAAA,cAAEd,yBAAyB;SAAA,CAAA;;KAC9C,IAAA4B,WAAA;AAAA,cAAA,GAAA,aAAA,iBAGFzD,aAAAA,SAAO;OAAA,IACN2C,YAAS;AAAA,eAAEI,uBAAuB;;OAClCgB,mBAAmBd,UAAU;OAAA,IAC7Bf,iBAAc;AAAA,eAAED,qBAAqB,IAAI/B,sBAAAA;;OACzCmC,UAAU2B,UAAiB;AAEzB,aAAA,GAAA,sBAAA,YAAeA,MAAM,CAAE,OAAMA;AAC7BvE,SAAAA,GAAAA,aAAAA,SAAQ,OAAO,yBAAyBuB,YAAY,CAAEQ,UAAU;AAChEY,sBAAc,GAAG4B,MAAM;;OACxB,IAAAP,WAAA;AAAA,gBAAA,GAAA,aAAA,iBAEAzD,aAAAA,SAAO;SAAA,IACN2C,YAAS;AAAA,iBAAEK,0BAA0B;;SACrCY,WAAWI,UAAe;AAGxB,cACE,CAACzB,wBAAwB,IACxByB,MAAMxC,WAAWwC,MAAMxC,YAAYR,YAAY,CAAEQ,WACjD,CAACwC,MAAMxC,WAAW,CAACG,OAAO,CAACa,OAE5B,OAAMwB;AAER,kBAAA,GAAA,aAAA,iBACGhE,aAAAA,UAAAA,GAAAA,aAAAA,YAAO,EAAA,IAAC2C,YAAS;AAAA,kBAAEJ,wBAAwB;aAAA,EAAMyB,MAAK,CAAA;;SAE1D,IAAAP,WAAA;AAAA,kBAAA,GAAA,aAAA,iBAEAlE,SAAM4E,QAAM,EAAA,IAAAV,WAAA;AAAA,kBAAA,EAAA,GAAA,aAAA,iBACVlE,SAAMqB,OAAK;YAACwD,MAAMxB;YAAa,IAAAa,WAAA;AAAA,qBAAA,GAAA,aAAA,iBAC7BlE,SAAM8E,MAAI;cAAA,IACTD,OAAI;AAAA,sBAAE,EAAErE,+BAAAA,YAAYgB,OAAOhB;;cAAS,IACpC6D,WAAQ;AAAA,uBAAA,GAAA,aAAA,iBAAG5D,aAAAA,SAAO,EAAA,IAAC2C,YAAS;AAAA,uBAAEd,yBAAyB;kBAAA,CAAA;;cAAA,IAAA4B,WAAA;AAAA,uBAAA,GAAA,aAAA,iBAEtDa,YAAU,EAAA,IAACxD,UAAO;AAAA,uBAAED,MAAMC;kBAAO,CAAA;;cAAA,CAAA;;YAAA,CAAA,GAAA,GAAA,aAAA,iBAGrCvB,SAAMqB,OAAK;YAACwD,MAAM,CAACxB;YAAa,IAAAa,WAAA;AAAA,qBAAA,GAAA,aAAA,iBAC9Ba,YAAU,EAAA,IAACxD,UAAO;AAAA,qBAAED,MAAMC;gBAAO,CAAA;;YAAA,CAAA,CAAA;aAAA,CAAA;;SAAA,CAAA;;OAAA,CAAA;;KAAA,CAAA;;GAAA,CAAA,GAAA,GAAA,aAAA,aAAA,GAAA,aAAA,YAQ7CqC,eAAe,KAAKrD,sBAAAA,YAAW,EAAA,GAAA,EAAA,GAAA,aAAA,iBAE3ByE,YAAU,EAAA,CAAA,GAAA,GAAA,aAAA,iBACV9D,2BAAAA,mBAAiB,EAAA,CAAA,CAAA,GAElB,KAAI,CAAA;IAAA,CAAA;;AAYd,SAAS8D,aAAa;CACpB,MAAMxD,SAASX,kBAAAA,WAAW;CAE1B,MAAMoE,WAAWrE,uBAAAA,eAAe,EAC9Bc,SAASC,MAAM;AACb,SAAOA,EAAEuD,kBAAkBC,MAAMC;IAEpC,CAAC;AACFpF,UAAMqF,aACJrF,SAAMsF,GAAG,CAACL,SAAS,QAAQ;AACzBzD,SAAO+D,KAAK;GACVC,MAAM;GACN,IAAA,GAAA,sBAAA,uBAAyBhE,OAAO2D,MAAK;GACtC,CAAC;GAEN,CAAC;AACD,QAAO;;AAGT,IAAaJ,cAAczD,UAAoC;CAC7D,MAAME,SAASX,kBAAAA,WAAW;CAE1B,MAAMY,aAAab,uBAAAA,eAAe,EAChCc,SAASC,MAAM;EACb,MAAMC,QAAQD,EAAEE,QAAQC,MAAMC,MAAMA,EAAEC,OAAOV,MAAMC,QAAQ;AAG3D,MAAI,CAACK,MACH,QAAO;EAGT,MAAMK,UAAUL,MAAMK;EAKtB,MAAMyD,eAFHlE,OAAOa,WAAWJ,SAAsBM,QAAQmD,eACjDlE,OAAOe,QAAQoD,sBACe;GAC9B1D;GACA2D,YAAYhE,MAAMgE;GAClBC,QAAQjE,MAAMkE;GACdC,QAAQnE,MAAMoE;GACf,CAAC;AAGF,SAAO;GACLC,KAHUP,cAAcQ,KAAKC,UAAUT,YAAY,GAAGnB,KAAAA;GAItDtC;GACAL,OAAO;IACLI,IAAIJ,MAAMI;IACVoE,QAAQxE,MAAMwE;IACd3B,OAAO7C,MAAM6C;IACb4B,eAAezE,MAAMyE;IACrBlE,iBAAiBP,MAAMO;IACzB;GACD;IAEJ,CAAC;AAEF,KAAI,CAACV,YAAY,CAAE,QAAO;CAE1B,MAAMW,cAAcZ,OAAOa,WAAWZ,YAAY,CAAEQ;CAEpD,MAAML,cAAcH,YAAY,CAAEG;CAElC,MAAM0E,qBAAqB7E,YAAY,CAAEwE,OAAOxE,YAAY,CAAEG,MAAMI;CAEpE,MAAMuE,YAAY;EAChB,MAAMC,OAAOpE,OAAO,CAACG,QAAQa,aAAa5B,OAAOe,QAAQkE;AACzD,MAAID,KACF,SAAA,GAAA,aAAA,iBAAQA,MAAI,EAAA,CAAA;AAEd,UAAA,GAAA,aAAA,iBAAQE,QAAM,EAAA,CAAA;;CAGhB,MAAMC,kBAAAA,GAAAA,aAAAA,iBACH3G,SAAM8E,MAAI;EAAA,IAACD,OAAI;AAAA,UAAEyB,cAAc;;EAAEM,OAAK;EAAA1C,WACnC2C,SAASN,KAAI;EAAC,CAEnB;AAED,SAAA,GAAA,aAAA,iBACGvG,SAAM4E,QAAM,EAAA,IAAAV,WAAA;AAAA,SAAA;qCACVlE,SAAMqB,OAAK;IAAA,IAACwD,OAAI;AAAA,YAAEjD,OAAO,CAACO;;IAAe+B,WACtC4C,MAAM;KACN,MAAM,CAACC,wBAAwB/G,SAAMgH,qBAEjCxF,OAAOyF,SAASrF,OAAO,CAACI,GAAG,EAAEkF,aAAaC,sBAC7C;AAED,aAAA,GAAA,aAAA,MAAUJ,qBAAoB;;IAC/B,CAAA;qCAEF/G,SAAMqB,OAAK;IAAA,IAACwD,OAAI;AAAA,YAAEjD,OAAO,CAACyE;;IAAanC,WACpC4C,MAAM;KACN,MAAM,CAACM,oBAAoBpH,SAAMgH,qBACzBxF,OAAOyF,SAASrF,OAAO,CAACI,GAAG,EAAEkF,aAAaG,kBACjD;AAED,aAAA,GAAA,aAAA,MAAUD,iBAAgB;;IAC3B,CAAA;qCAEFpH,SAAMqB,OAAK;IAAA,IAACwD,OAAI;AAAA,YAAEjD,OAAO,CAACwE,WAAW;;IAASlC,WAC3C4C,MAAM;KACN,MAAMQ,eACJlF,OAAO,CAACG,QAAQ+E,gBAAgB9F,OAAOe,QAAQgF;AAEjD,SAAID,cAAc;MAChB,MAAME,cAAchG,OAAOyF,SAASrF,OAAO,CAACI,GAAG;AAC/C,UAAIwF,eAAe,CAACA,YAAYN,aAAaG;WAEvC,EAAE7G,+BAAAA,YAAYgB,OAAOhB,WAAW;QAClC,MAAM6G,qBAAAA,GAAAA,sBAAAA,0BAAmD;AAEzDG,oBAAYN,aAAaG,oBAAoBA;AAE7CI,yBAAiB;AACfJ,2BAAkBK,SAAS;AAE3BF,qBAAYN,aAAaG,oBAAoB9C,KAAAA;WAC5C+C,aAAa;;;;KAKtB,MAAM,CAACK,gBAAgB3H,SAAMgH,eAAe,YAAY;AACtD,YAAM,IAAIY,SAASC,MAAMJ,WAAWI,GAAG,EAAE,CAAC;AAC1C,aAAOrG,OAAOyF,SAASrF,OAAO,CAACI,GAAG,EAAEkF,aAAaY;OACjD;KAEF,MAAMC,oBACJ3F,OAAO,CAACG,QAAQC,oBAChBhB,OAAOe,QAAQE;AAEjB,YAAA,CAEKsF,qBAAqBT,eAAe,KAAA,GAAA,aAAA,iBAClC7G,aAAAA,SAAO,EAAC2C,WAAW2E,mBAAiB,CAAA,GACnC,OAAA,GAAA,aAAA,MACHJ,aAAY,CAAA;;IAGlB,CAAA;qCAEF3H,SAAMqB,OAAK;IAAA,IAACwD,OAAI;AAAA,YAAEjD,OAAO,CAACwE,WAAW;;IAAUlC,WAC5C4C,MAAM;AACN7G,MAAAA,GAAAA,eAAAA,UAAAA,GAAAA,sBAAAA,YAAqB2B,OAAO,CAAC6C,MAAM,EAAE,4BAA4B;AAGjE,aAAA,GAAA,aAAA,iBACGzE,SAAM8E,MAAI;MAAA,IAACD,OAAI;AAAA,cAAEpD,YAAY,CAAEQ;;MAAS2E,OAAK;MAAA1C,WAC1C8D,aACA/G,4BAAAA,oBAAoBO,QAAQY,OAAO,EAAER,OAAO,CAAC6C,MAAK;MAAC,CAAA;;IAI1D,CAAA;qCAEFzE,SAAMqB,OAAK;IAAA,IAACwD,OAAI;AAAA,YAAEjD,OAAO,CAACwE,WAAW;;IAAYlC,WAC9C4C,MAAM;AACN7G,MAAAA,GAAAA,eAAAA,UAAAA,GAAAA,sBAAAA,YAAqB2B,OAAO,CAAC6C,MAAM,EAAE,4BAA4B;KAEjE,MAAM,CAACkD,gBAAgB3H,SAAMgH,eAAe,YAAY;AACtD,YAAM,IAAIY,SAASC,MAAMJ,WAAWI,GAAG,EAAE,CAAC;AAC1C,aAAOrG,OAAOyF,SAASrF,OAAO,CAACI,GAAG,EAAEkF,aAAaY;OACjD;AAEF,aAAA,GAAA,aAAA,MAAUH,aAAY;;IACvB,CAAA;qCAEF3H,SAAMqB,OAAK;IAAA,IAACwD,OAAI;AAAA,YAAEjD,OAAO,CAACwE,WAAW;;IAAOlC,WACzC4C,MAAM;AACN,WAAMlF,OAAO,CAAC6C;;IACf,CAAA;qCAEFzE,SAAMqB,OAAK;IAAA,IAACwD,OAAI;AAAA,YAAEjD,OAAO,CAACwE,WAAW;;IAAS,IAAAlC,WAAA;AAAA,YAC5CyC,UAAU;;IAAA,CAAA;GAAA;IAAA,CAAA;;AAMnB,IAAaD,eAAe;CAC1B,MAAMlF,SAASX,kBAAAA,WAAW;CAC1B,MAAMU,UAAUvB,SAAMiI,WAAWlH,qBAAAA,aAAa;CAC9C,MAAMkB,UAAUrB,uBAAAA,eAAe,EAC7Bc,SAASC,MAAMA,EAAEE,QAAQC,MAAMC,MAAMA,EAAEC,OAAOT,SAAS,CAAC,EAAEU,SAC3D,CAAC;CAEF,MAAMG,cAAcZ,OAAOa,WAAWJ,SAAS;CAE/C,MAAMiG,uBAAuBtH,uBAAAA,eAAe,EAC1Cc,SAASC,MAAM;EAEb,MAAMwG,cADUxG,EAAEE,QACUC,MAAMC,MAAMA,EAAEC,OAAOT,SAAS,CAAC;AAI3D,MAAI,CAAC4G,YACH,QAAO;AAGT,SAAOA,YAAYC;IAEtB,CAAC;CAEF,MAAMC,eAAezH,uBAAAA,eAAe,EAClCc,SAASC,MAAM;EACb,MAAME,UAAUF,EAAEE;AAGlB,SADUA,QADIA,QAAQiC,WAAW/B,MAAMA,EAAEC,OAAOT,SAAS,CAAC,GAChC,IAAIS;IAGjC,CAAC;CAEF,MAAMuG,mBAAmB3H,uBAAAA,eAAe,EACtCc,SAASC,MAAM;EACb,MAAME,UAAUF,EAAEE;AAElB,SAAOA,QADOA,QAAQiC,WAAW/B,MAAMA,EAAEC,OAAOT,SAAS,CAAC,GACnC,IAAI6E;IAE9B,CAAC;CAGF,MAAMoC,2BACJD,kBAAkB,KAAK,gBAAgBL,sBAAsB;AAE/D,SAAA,GAAA,aAAA,iBACGlI,SAAM8E,MAAI;EAAA,IACTD,OAAI;AAAA,WAAA,GAAA,aAAA,YAAE,CAAA,CAAA,CAAC2D,oBAAoB,CAAA,EAAA,IAAIH,cAAc;;EAAA,IAC7ChE,WAAQ;AAAA,WAAA,GAAA,aAAA,iBACLrE,SAAM8E,MAAI;IAAA,IAACD,OAAI;AAAA,YAAE2D,oBAAoB;;IAAA,IAAAtE,WAAA;AAAA,YACnCjD,4BAAAA,oBAAoBO,QAAQY,OAAO,EAAEmC,KAAAA,EAAU;;IAAA,CAAA;;EAAAL,WAIlDuE,oBAAoB;GAEpB,MAAMC,iBAAiB1I,SAAM2I,iBAAiBF,iBAAiB,CAAC;AAEhE,WAAA,GAAA,aAAA,iBACGzI,SAAM8E,MAAI;IAAA,IACTD,OAAI;AAAA,YAAE5C,SAAS,KAAK1B,sBAAAA;;IAAW,IAC/B8D,WAAQ;AAAA,aAAA,GAAA,aAAA,iBAAGhD,OAAK,EAAA,IAACE,UAAO;AAAA,aAAEmH,gBAAgB;QAAA,CAAA;;IAAA,IAAAxE,WAAA;AAAA,aAAA,GAAA,aAAA,iBAEzClE,SAAMuD,UAAQ;MAAA,IACbc,WAAQ;AAAA,eAAA,GAAA,aAAA,iBACL5D,aAAAA,SAAO,EAAA,IAAC2C,YAAS;AAAA,eAAE5B,OAAOe,QAAQE;UAAuB,CAAA;;MAAA,IAAAyB,WAAA;AAAA,eAAA,GAAA,aAAA,iBAG3D7C,OAAK,EAAA,IAACE,UAAO;AAAA,eAAEmH,gBAAgB;UAAA,CAAA;;MAAA,CAAA;;IAAA,CAAA;;EAIvC,CAAA"}
1
+ {"version":3,"file":"Match.cjs","names":["Solid","invariant","warning","createControlledPromise","getLocationChangeInfo","isNotFound","isRedirect","rootRouteId","isServer","Dynamic","CatchBoundary","ErrorComponent","useRouter","CatchNotFound","nearestMatchContext","SafeFragment","renderRouteNotFound","ScrollRestoration","AnyRoute","RootRouteOptions","Match","props","matchId","router","match","createMemo","id","undefined","stores","activeMatchStoresById","get","state","rawMatchState","currentMatch","routeId","parentRouteId","routesById","parentRoute","ssr","_displayPending","hasPendingMatch","currentRouteId","Boolean","pendingRouteIds","nearestMatch","hasPending","_$createComponent","Show","when","children","currentMatchState","route","resolvePendingComponent","options","pendingComponent","defaultPendingComponent","routeErrorComponent","errorComponent","defaultErrorComponent","routeOnCatch","onCatch","defaultOnCatch","routeNotFoundComponent","isRoot","notFoundComponent","notFoundRoute","component","resolvedNoSsr","ResolvedSuspenseBoundary","Suspense","ResolvedCatchBoundary","ResolvedNotFoundBoundary","ShellComponent","shellComponent","Provider","value","fallback","_$memo","getResetKey","loadedAt","error","Error","_$mergeProps","Switch","MatchInner","OnRendered","location","resolvedLocation","__TSR_key","createEffect","on","emit","type","useContext","remountFn","remountDeps","defaultRemountDeps","loaderDeps","params","_strictParams","search","_strictSearch","key","JSON","stringify","status","_forcePending","componentKey","out","Comp","defaultComponent","Outlet","keyedOut","keyed","_key","_","displayPendingResult","createResource","getMatch","_nonReactive","displayPendingPromise","minPendingResult","minPendingPromise","pendingMinMs","defaultPendingMinMs","routerMatch","setTimeout","resolve","loaderResult","Promise","r","loadPromise","FallbackComponent","_routeId","RouteErrorComponent","info","componentStack","nearestParentMatch","parentMatch","parentGlobalNotFound","globalNotFound","childMatchId","childMatchIdByRouteId","childMatchStatus","shouldShowNotFound","resolvedRoute","childMatchIdAccessor","currentMatchId"],"sources":["../../src/Match.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n createControlledPromise,\n getLocationChangeInfo,\n isNotFound,\n isRedirect,\n rootRouteId,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Dynamic } from 'solid-js/web'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouter } from './useRouter'\nimport { CatchNotFound } from './not-found'\nimport { nearestMatchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { renderRouteNotFound } from './renderRouteNotFound'\nimport { ScrollRestoration } from './scroll-restoration'\nimport type { AnyRoute, RootRouteOptions } from '@tanstack/router-core'\n\nexport const Match = (props: { matchId: string }) => {\n const router = useRouter()\n\n const match = Solid.createMemo(() => {\n const id = props.matchId\n if (!id) return undefined\n return router.stores.activeMatchStoresById.get(id)?.state\n })\n\n const rawMatchState = Solid.createMemo(() => {\n const currentMatch = match()\n if (!currentMatch) {\n return null\n }\n\n const routeId = currentMatch.routeId as string\n const parentRouteId = (router.routesById[routeId] as AnyRoute)?.parentRoute\n ?.id\n\n return {\n matchId: currentMatch.id,\n routeId,\n ssr: currentMatch.ssr,\n _displayPending: currentMatch._displayPending,\n parentRouteId: parentRouteId as string | undefined,\n }\n })\n\n const hasPendingMatch = Solid.createMemo(() => {\n const currentRouteId = rawMatchState()?.routeId\n return currentRouteId\n ? Boolean(router.stores.pendingRouteIds.state[currentRouteId])\n : false\n })\n const nearestMatch = {\n matchId: () => rawMatchState()?.matchId,\n routeId: () => rawMatchState()?.routeId,\n match,\n hasPending: hasPendingMatch,\n }\n\n return (\n <Solid.Show when={rawMatchState()}>\n {(currentMatchState) => {\n const route: () => AnyRoute = () =>\n router.routesById[currentMatchState().routeId]\n\n const resolvePendingComponent = () =>\n route().options.pendingComponent ??\n router.options.defaultPendingComponent\n\n const routeErrorComponent = () =>\n route().options.errorComponent ?? router.options.defaultErrorComponent\n\n const routeOnCatch = () =>\n route().options.onCatch ?? router.options.defaultOnCatch\n\n const routeNotFoundComponent = () =>\n route().isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n (route().options.notFoundComponent ??\n router.options.notFoundRoute?.options.component)\n : route().options.notFoundComponent\n\n const resolvedNoSsr =\n currentMatchState().ssr === false ||\n currentMatchState().ssr === 'data-only'\n\n const ResolvedSuspenseBoundary = () => Solid.Suspense\n\n const ResolvedCatchBoundary = () =>\n routeErrorComponent() ? CatchBoundary : SafeFragment\n\n const ResolvedNotFoundBoundary = () =>\n routeNotFoundComponent() ? CatchNotFound : SafeFragment\n\n const ShellComponent = route().isRoot\n ? ((route().options as RootRouteOptions).shellComponent ??\n SafeFragment)\n : SafeFragment\n\n return (\n <ShellComponent>\n <nearestMatchContext.Provider value={nearestMatch}>\n <Dynamic\n component={ResolvedSuspenseBoundary()}\n fallback={\n // Don't show fallback on server when using no-ssr mode to avoid hydration mismatch\n (isServer ?? router.isServer) && resolvedNoSsr ? undefined : (\n <Dynamic component={resolvePendingComponent()} />\n )\n }\n >\n <Dynamic\n component={ResolvedCatchBoundary()}\n getResetKey={() => router.stores.loadedAt.state}\n errorComponent={routeErrorComponent() || ErrorComponent}\n onCatch={(error: Error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(\n false,\n `Error in route match: ${currentMatchState().routeId}`,\n )\n routeOnCatch()?.(error)\n }}\n >\n <Dynamic\n component={ResolvedNotFoundBoundary()}\n fallback={(error: any) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent() ||\n (error.routeId &&\n error.routeId !== currentMatchState().routeId) ||\n (!error.routeId && !route().isRoot)\n )\n throw error\n\n return (\n <Dynamic\n component={routeNotFoundComponent()}\n {...error}\n />\n )\n }}\n >\n <Solid.Switch>\n <Solid.Match when={resolvedNoSsr}>\n <Solid.Show\n when={!(isServer ?? router.isServer)}\n fallback={\n <Dynamic component={resolvePendingComponent()} />\n }\n >\n <MatchInner />\n </Solid.Show>\n </Solid.Match>\n <Solid.Match when={!resolvedNoSsr}>\n <MatchInner />\n </Solid.Match>\n </Solid.Switch>\n </Dynamic>\n </Dynamic>\n </Dynamic>\n </nearestMatchContext.Provider>\n\n {currentMatchState().parentRouteId === rootRouteId ? (\n <>\n <OnRendered />\n <ScrollRestoration />\n </>\n ) : null}\n </ShellComponent>\n )\n }}\n </Solid.Show>\n )\n}\n\n// On Rendered can't happen above the root layout because it actually\n// renders a dummy dom element to track the rendered state of the app.\n// We render a script tag with a key that changes based on the current\n// location state.__TSR_key. Also, because it's below the root layout, it\n// allows us to fire onRendered events even after a hydration mismatch\n// error that occurred above the root layout (like bad head/link tags,\n// which is common).\nfunction OnRendered() {\n const router = useRouter()\n\n const location = Solid.createMemo(\n () => router.stores.resolvedLocation.state?.state.__TSR_key,\n )\n Solid.createEffect(\n Solid.on([location], () => {\n router.emit({\n type: 'onRendered',\n ...getLocationChangeInfo(\n router.stores.location.state,\n router.stores.resolvedLocation.state,\n ),\n })\n }),\n )\n return null\n}\n\nexport const MatchInner = (): any => {\n const router = useRouter()\n const match = Solid.useContext(nearestMatchContext).match\n\n const rawMatchState = Solid.createMemo(() => {\n const currentMatch = match()\n if (!currentMatch) {\n return null\n }\n\n const routeId = currentMatch.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: currentMatch.loaderDeps,\n params: currentMatch._strictParams,\n search: currentMatch._strictSearch,\n })\n const key = remountDeps ? JSON.stringify(remountDeps) : undefined\n\n return {\n key,\n routeId,\n match: {\n id: currentMatch.id,\n status: currentMatch.status,\n error: currentMatch.error,\n _forcePending: currentMatch._forcePending ?? false,\n _displayPending: currentMatch._displayPending ?? false,\n },\n }\n })\n\n return (\n <Solid.Show when={rawMatchState()}>\n {(currentMatchState) => {\n const route = () => router.routesById[currentMatchState().routeId]!\n\n const currentMatch = () => currentMatchState().match\n\n const componentKey = () =>\n currentMatchState().key ?? currentMatchState().match.id\n\n const out = () => {\n const Comp =\n route().options.component ?? router.options.defaultComponent\n if (Comp) {\n return <Comp />\n }\n return <Outlet />\n }\n\n const keyedOut = () => (\n <Solid.Show when={componentKey()} keyed>\n {(_key) => out()}\n </Solid.Show>\n )\n\n return (\n <Solid.Switch>\n <Solid.Match when={currentMatch()._displayPending}>\n {(_) => {\n const [displayPendingResult] = Solid.createResource(\n () =>\n router.getMatch(currentMatch().id)?._nonReactive\n .displayPendingPromise,\n )\n\n return <>{displayPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch()._forcePending}>\n {(_) => {\n const [minPendingResult] = Solid.createResource(\n () =>\n router.getMatch(currentMatch().id)?._nonReactive\n .minPendingPromise,\n )\n\n return <>{minPendingResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'pending'}>\n {(_) => {\n const pendingMinMs =\n route().options.pendingMinMs ??\n router.options.defaultPendingMinMs\n\n if (pendingMinMs) {\n const routerMatch = router.getMatch(currentMatch().id)\n if (\n routerMatch &&\n !routerMatch._nonReactive.minPendingPromise\n ) {\n // Create a promise that will resolve after the minPendingMs\n if (!(isServer ?? router.isServer)) {\n const minPendingPromise = createControlledPromise<void>()\n\n routerMatch._nonReactive.minPendingPromise =\n minPendingPromise\n\n setTimeout(() => {\n minPendingPromise.resolve()\n // We've handled the minPendingPromise, so we can delete it\n routerMatch._nonReactive.minPendingPromise = undefined\n }, pendingMinMs)\n }\n }\n }\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(currentMatch().id)?._nonReactive\n .loadPromise\n })\n\n const FallbackComponent =\n route().options.pendingComponent ??\n router.options.defaultPendingComponent\n\n return (\n <>\n {FallbackComponent && pendingMinMs > 0 ? (\n <Dynamic component={FallbackComponent} />\n ) : null}\n {loaderResult()}\n </>\n )\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'notFound'}>\n {(_) => {\n invariant(\n isNotFound(currentMatch().error),\n 'Expected a notFound error',\n )\n\n // Use Show with keyed to ensure re-render when routeId changes\n return (\n <Solid.Show when={currentMatchState().routeId} keyed>\n {(_routeId) =>\n renderRouteNotFound(router, route(), currentMatch().error)\n }\n </Solid.Show>\n )\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'redirected'}>\n {(_) => {\n invariant(\n isRedirect(currentMatch().error),\n 'Expected a redirect error',\n )\n\n const [loaderResult] = Solid.createResource(async () => {\n await new Promise((r) => setTimeout(r, 0))\n return router.getMatch(currentMatch().id)?._nonReactive\n .loadPromise\n })\n\n return <>{loaderResult()}</>\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'error'}>\n {(_) => {\n if (isServer ?? router.isServer) {\n const RouteErrorComponent =\n (route().options.errorComponent ??\n router.options.defaultErrorComponent) ||\n ErrorComponent\n\n return (\n <RouteErrorComponent\n error={currentMatch().error}\n info={{\n componentStack: '',\n }}\n />\n )\n }\n\n throw currentMatch().error\n }}\n </Solid.Match>\n <Solid.Match when={currentMatch().status === 'success'}>\n {keyedOut()}\n </Solid.Match>\n </Solid.Switch>\n )\n }}\n </Solid.Show>\n )\n}\n\nexport const Outlet = () => {\n const router = useRouter()\n const nearestParentMatch = Solid.useContext(nearestMatchContext)\n const parentMatch = nearestParentMatch.match\n const routeId = nearestParentMatch.routeId\n const route = Solid.createMemo(() =>\n routeId() ? router.routesById[routeId()!] : undefined,\n )\n\n const parentGlobalNotFound = Solid.createMemo(\n () => parentMatch()?.globalNotFound ?? false,\n )\n\n const childMatchId = Solid.createMemo(() => {\n const currentRouteId = routeId()\n return currentRouteId\n ? router.stores.childMatchIdByRouteId.state[currentRouteId]\n : undefined\n })\n\n const childMatchStatus = Solid.createMemo(() => {\n const id = childMatchId()\n if (!id) return undefined\n return router.stores.activeMatchStoresById.get(id)?.state.status\n })\n\n // Only show not-found if we're not in a redirected state\n const shouldShowNotFound = () =>\n childMatchStatus() !== 'redirected' && parentGlobalNotFound()\n\n return (\n <Solid.Show\n when={!shouldShowNotFound() && childMatchId()}\n fallback={\n <Solid.Show when={shouldShowNotFound() && route()}>\n {(resolvedRoute) =>\n renderRouteNotFound(router, resolvedRoute(), undefined)\n }\n </Solid.Show>\n }\n >\n {(childMatchIdAccessor) => {\n const currentMatchId = Solid.createMemo(() => childMatchIdAccessor())\n\n return (\n <Solid.Show\n when={routeId() === rootRouteId}\n fallback={<Match matchId={currentMatchId()} />}\n >\n <Solid.Suspense\n fallback={\n <Dynamic component={router.options.defaultPendingComponent} />\n }\n >\n <Match matchId={currentMatchId()} />\n </Solid.Suspense>\n </Solid.Show>\n )\n }}\n </Solid.Show>\n )\n}\n"],"mappings":"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"}
@@ -2,7 +2,5 @@ import * as Solid from 'solid-js';
2
2
  export declare const Match: (props: {
3
3
  matchId: string;
4
4
  }) => Solid.JSX.Element;
5
- export declare const MatchInner: (props: {
6
- matchId: string;
7
- }) => any;
5
+ export declare const MatchInner: () => any;
8
6
  export declare const Outlet: () => Solid.JSX.Element;
@@ -1,7 +1,6 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_CatchBoundary = require("./CatchBoundary.cjs");
3
3
  const require_useRouter = require("./useRouter.cjs");
4
- const require_useRouterState = require("./useRouterState.cjs");
5
4
  const require_matchContext = require("./matchContext.cjs");
6
5
  const require_Transitioner = require("./Transitioner.cjs");
7
6
  const require_SafeFragment = require("./SafeFragment.cjs");
@@ -32,10 +31,17 @@ function Matches() {
32
31
  }
33
32
  function MatchesInner() {
34
33
  const router = require_useRouter.useRouter();
35
- const matchId = require_useRouterState.useRouterState({ select: (s) => {
36
- return s.matches[0]?.id;
37
- } });
38
- const resetKey = require_useRouterState.useRouterState({ select: (s) => s.loadedAt });
34
+ const matchId = () => router.stores.firstMatchId.state;
35
+ const routeId = () => matchId() ? _tanstack_router_core.rootRouteId : void 0;
36
+ const match = () => routeId() ? router.stores.getMatchStoreByRouteId(_tanstack_router_core.rootRouteId).state : void 0;
37
+ const hasPendingMatch = () => routeId() ? Boolean(router.stores.pendingRouteIds.state[_tanstack_router_core.rootRouteId]) : false;
38
+ const resetKey = () => router.stores.loadedAt.state;
39
+ const nearestMatch = {
40
+ matchId,
41
+ routeId,
42
+ match,
43
+ hasPending: hasPendingMatch
44
+ };
39
45
  const matchComponent = () => {
40
46
  return (0, solid_js_web.createComponent)(solid_js.Show, {
41
47
  get when() {
@@ -48,16 +54,15 @@ function MatchesInner() {
48
54
  }
49
55
  });
50
56
  };
51
- return (0, solid_js_web.createComponent)(require_matchContext.matchContext.Provider, {
52
- value: matchId,
57
+ return (0, solid_js_web.createComponent)(require_matchContext.nearestMatchContext.Provider, {
58
+ value: nearestMatch,
53
59
  get children() {
54
60
  return (0, solid_js_web.memo)(() => !!router.options.disableGlobalCatchBoundary)() ? matchComponent() : (0, solid_js_web.createComponent)(require_CatchBoundary.CatchBoundary, {
55
61
  getResetKey: () => resetKey(),
56
62
  errorComponent: require_CatchBoundary.ErrorComponent,
57
63
  get onCatch() {
58
64
  return process.env.NODE_ENV !== "production" ? (error) => {
59
- (0, tiny_warning.default)(false, `The following error wasn't caught by any route! At the very leas
60
- t, consider setting an 'errorComponent' in your RootRoute!`);
65
+ (0, tiny_warning.default)(false, `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);
61
66
  (0, tiny_warning.default)(false, error.message || error.toString());
62
67
  } : void 0;
63
68
  },
@@ -70,11 +75,10 @@ function MatchesInner() {
70
75
  }
71
76
  function useMatchRoute() {
72
77
  const router = require_useRouter.useRouter();
73
- const status = require_useRouterState.useRouterState({ select: (s) => s.status });
74
78
  return (opts) => {
75
- const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;
76
79
  return solid_js.createMemo(() => {
77
- status();
80
+ const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;
81
+ router.stores.matchRouteReactivity.state;
78
82
  return router.matchRoute(rest, {
79
83
  pending,
80
84
  caseSensitive,
@@ -85,35 +89,32 @@ function useMatchRoute() {
85
89
  };
86
90
  }
87
91
  function MatchRoute(props) {
88
- const status = require_useRouterState.useRouterState({ select: (s) => s.status });
89
- return (0, solid_js_web.createComponent)(solid_js.Show, {
90
- get when() {
91
- return status();
92
- },
93
- keyed: true,
94
- children: (_) => {
95
- const params = useMatchRoute()(props)();
96
- const child = props.children;
97
- if (typeof child === "function") return child(params);
98
- return params ? child : null;
99
- }
100
- });
92
+ const params = useMatchRoute()(props);
93
+ return (0, solid_js_web.memo)(solid_js.createMemo(() => {
94
+ const matchedParams = params();
95
+ const child = props.children;
96
+ if (typeof child === "function") return child(matchedParams);
97
+ return matchedParams ? child : null;
98
+ }));
101
99
  }
102
100
  function useMatches(opts) {
103
- return require_useRouterState.useRouterState({ select: (state) => {
104
- const matches = state.matches;
105
- return opts?.select ? opts.select(matches) : matches;
106
- } });
101
+ const router = require_useRouter.useRouter();
102
+ return solid_js.createMemo((prev) => {
103
+ const matches = router.stores.activeMatchesSnapshot.state;
104
+ const res = opts?.select ? opts.select(matches) : matches;
105
+ if (prev === void 0) return res;
106
+ return (0, _tanstack_router_core.replaceEqualDeep)(prev, res);
107
+ });
107
108
  }
108
109
  function useParentMatches(opts) {
109
- const contextMatchId = solid_js.useContext(require_matchContext.matchContext);
110
+ const contextMatchId = solid_js.useContext(require_matchContext.nearestMatchContext).matchId;
110
111
  return useMatches({ select: (matches) => {
111
112
  matches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId()));
112
113
  return opts?.select ? opts.select(matches) : matches;
113
114
  } });
114
115
  }
115
116
  function useChildMatches(opts) {
116
- const contextMatchId = solid_js.useContext(require_matchContext.matchContext);
117
+ const contextMatchId = solid_js.useContext(require_matchContext.nearestMatchContext).matchId;
117
118
  return useMatches({ select: (matches) => {
118
119
  matches = matches.slice(matches.findIndex((d) => d.id === contextMatchId()) + 1);
119
120
  return opts?.select ? opts.select(matches) : matches;
@@ -1 +1 @@
1
- {"version":3,"file":"Matches.cjs","names":["Solid","warning","rootRouteId","isServer","CatchBoundary","ErrorComponent","useRouterState","useRouter","Transitioner","matchContext","SafeFragment","Match","AnyRoute","AnyRouter","DeepPartial","Expand","MakeOptionalPathParams","MakeOptionalSearchParams","MakeRouteMatchUnion","MaskOptions","MatchRouteOptions","NoInfer","RegisteredRouter","ResolveRelativePath","ResolveRoute","RouteByPath","RouterState","ToSubOptionsProps","RouteMatchExtensions","meta","Array","JSX","IntrinsicElements","links","scripts","styles","headScripts","Matches","router","ResolvedSuspense","document","ssr","Suspense","rootRoute","routesById","PendingComponent","options","pendingComponent","defaultPendingComponent","OptionalWrapper","InnerWrap","_$createComponent","children","fallback","MatchesInner","matchId","select","s","matches","id","resetKey","loadedAt","matchComponent","Show","when","Provider","value","_$memo","disableGlobalCatchBoundary","getResetKey","errorComponent","onCatch","process","env","NODE_ENV","error","message","toString","undefined","UseMatchRouteOptions","TFrom","TRouter","TTo","TMaskFrom","TMaskTo","useMatchRoute","status","opts","Accessor","pending","caseSensitive","fuzzy","includeSearch","rest","matchRoute","createMemo","MakeMatchRouteOptions","params","Element","MatchRoute","props","keyed","_","child","UseMatchesBaseOptions","TSelected","UseMatchesResult","useMatches","state","useParentMatches","contextMatchId","useContext","slice","findIndex","d","useChildMatches"],"sources":["../../src/Matches.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport warning from 'tiny-warning'\nimport { rootRouteId } from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { Transitioner } from './Transitioner'\nimport { matchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { Match } from './Match'\nimport type {\n AnyRoute,\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 styles?: Array<Solid.JSX.IntrinsicElements['style'] | undefined>\n headScripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>\n }\n}\n\nexport function Matches() {\n const router = useRouter()\n\n const ResolvedSuspense =\n (isServer ?? router.isServer) ||\n (typeof document !== 'undefined' && router.ssr)\n ? SafeFragment\n : Solid.Suspense\n\n const rootRoute: () => AnyRoute = () => router.routesById[rootRouteId]\n const PendingComponent =\n rootRoute().options.pendingComponent ??\n router.options.defaultPendingComponent\n\n const OptionalWrapper = router.options.InnerWrap || SafeFragment\n\n return (\n <OptionalWrapper>\n <ResolvedSuspense\n fallback={PendingComponent ? <PendingComponent /> : null}\n >\n <Transitioner />\n <MatchesInner />\n </ResolvedSuspense>\n </OptionalWrapper>\n )\n}\n\nfunction MatchesInner() {\n const router = useRouter()\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 const matchComponent = () => {\n return (\n <Solid.Show when={matchId()}>\n <Match matchId={matchId()!} />\n </Solid.Show>\n )\n }\n\n return (\n <matchContext.Provider value={matchId}>\n {router.options.disableGlobalCatchBoundary ? (\n matchComponent()\n ) : (\n <CatchBoundary\n getResetKey={() => resetKey()}\n errorComponent={ErrorComponent}\n onCatch={\n process.env.NODE_ENV !== 'production'\n ? (error) => {\n warning(\n false,\n `The following error wasn't caught by any route! At the very leas\n t, consider setting an 'errorComponent' in your RootRoute!`,\n )\n warning(false, error.message || error.toString())\n }\n : undefined\n }\n >\n {matchComponent()}\n </CatchBoundary>\n )}\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"],"mappings":"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"}
1
+ {"version":3,"file":"Matches.cjs","names":["Solid","warning","replaceEqualDeep","rootRouteId","isServer","CatchBoundary","ErrorComponent","useRouter","Transitioner","nearestMatchContext","SafeFragment","Match","AnyRoute","AnyRouter","DeepPartial","Expand","MakeOptionalPathParams","MakeOptionalSearchParams","MakeRouteMatchUnion","MaskOptions","MatchRouteOptions","NoInfer","RegisteredRouter","ResolveRelativePath","ResolveRoute","RouteByPath","ToSubOptionsProps","RouteMatchExtensions","meta","Array","JSX","IntrinsicElements","links","scripts","styles","headScripts","Matches","router","ResolvedSuspense","document","ssr","Suspense","rootRoute","routesById","PendingComponent","options","pendingComponent","defaultPendingComponent","OptionalWrapper","InnerWrap","_$createComponent","children","fallback","MatchesInner","matchId","stores","firstMatchId","state","routeId","undefined","match","getMatchStoreByRouteId","hasPendingMatch","Boolean","pendingRouteIds","resetKey","loadedAt","nearestMatch","hasPending","matchComponent","Show","when","Provider","value","_$memo","disableGlobalCatchBoundary","getResetKey","errorComponent","onCatch","process","env","NODE_ENV","error","message","toString","UseMatchRouteOptions","TFrom","TRouter","TTo","TMaskFrom","TMaskTo","useMatchRoute","opts","Accessor","createMemo","pending","caseSensitive","fuzzy","includeSearch","rest","matchRouteReactivity","matchRoute","MakeMatchRouteOptions","params","Element","MatchRoute","props","renderedChild","matchedParams","child","UseMatchesBaseOptions","select","matches","TSelected","UseMatchesResult","useMatches","prev","activeMatchesSnapshot","res","useParentMatches","contextMatchId","useContext","slice","findIndex","d","id","useChildMatches"],"sources":["../../src/Matches.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport warning from 'tiny-warning'\nimport { replaceEqualDeep, rootRouteId } from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouter } from './useRouter'\nimport { Transitioner } from './Transitioner'\nimport { nearestMatchContext } from './matchContext'\nimport { SafeFragment } from './SafeFragment'\nimport { Match } from './Match'\nimport type {\n AnyRoute,\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 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 styles?: Array<Solid.JSX.IntrinsicElements['style'] | undefined>\n headScripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>\n }\n}\n\nexport function Matches() {\n const router = useRouter()\n\n const ResolvedSuspense =\n (isServer ?? router.isServer) ||\n (typeof document !== 'undefined' && router.ssr)\n ? SafeFragment\n : Solid.Suspense\n\n const rootRoute: () => AnyRoute = () => router.routesById[rootRouteId]\n const PendingComponent =\n rootRoute().options.pendingComponent ??\n router.options.defaultPendingComponent\n\n const OptionalWrapper = router.options.InnerWrap || SafeFragment\n\n return (\n <OptionalWrapper>\n <ResolvedSuspense\n fallback={PendingComponent ? <PendingComponent /> : null}\n >\n <Transitioner />\n <MatchesInner />\n </ResolvedSuspense>\n </OptionalWrapper>\n )\n}\n\nfunction MatchesInner() {\n const router = useRouter()\n const matchId = () => router.stores.firstMatchId.state\n const routeId = () => (matchId() ? rootRouteId : undefined)\n const match = () =>\n routeId()\n ? router.stores.getMatchStoreByRouteId(rootRouteId).state\n : undefined\n const hasPendingMatch = () =>\n routeId()\n ? Boolean(router.stores.pendingRouteIds.state[rootRouteId])\n : false\n const resetKey = () => router.stores.loadedAt.state\n const nearestMatch = {\n matchId,\n routeId,\n match,\n hasPending: hasPendingMatch,\n }\n\n const matchComponent = () => {\n return (\n <Solid.Show when={matchId()}>\n <Match matchId={matchId()!} />\n </Solid.Show>\n )\n }\n\n return (\n <nearestMatchContext.Provider value={nearestMatch}>\n {router.options.disableGlobalCatchBoundary ? (\n matchComponent()\n ) : (\n <CatchBoundary\n getResetKey={() => resetKey()}\n errorComponent={ErrorComponent}\n onCatch={\n process.env.NODE_ENV !== 'production'\n ? (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 : undefined\n }\n >\n {matchComponent()}\n </CatchBoundary>\n )}\n </nearestMatchContext.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 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 return Solid.createMemo(() => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts\n\n router.stores.matchRouteReactivity.state\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch,\n })\n })\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 matchRoute = useMatchRoute()\n const params = matchRoute(props as any)\n\n const renderedChild = Solid.createMemo(() => {\n const matchedParams = params()\n const child = props.children\n\n if (typeof child === 'function') {\n return (child as any)(matchedParams)\n }\n\n return matchedParams ? child : null\n })\n\n return <>{renderedChild()}</>\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 const router = useRouter<TRouter>()\n return Solid.createMemo((prev: TSelected | undefined) => {\n const matches = router.stores.activeMatchesSnapshot.state as Array<\n MakeRouteMatchUnion<TRouter>\n >\n const res = opts?.select ? opts.select(matches) : matches\n if (prev === undefined) return res\n return replaceEqualDeep(prev, res) as any\n }) 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(nearestMatchContext).matchId\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(nearestMatchContext).matchId\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"],"mappings":";;;;;;;;;;;;;;;AAsCA,SAAgBoC,UAAU;CACxB,MAAMC,SAAS9B,kBAAAA,WAAW;CAE1B,MAAM+B,oBACHlC,+BAAAA,YAAYiC,OAAOjC,aACnB,OAAOmC,aAAa,eAAeF,OAAOG,MACvC9B,qBAAAA,eACAV,SAAMyC;CAEZ,MAAMC,kBAAkCL,OAAOM,WAAWxC,sBAAAA;CAC1D,MAAMyC,mBACJF,WAAW,CAACG,QAAQC,oBACpBT,OAAOQ,QAAQE;AAIjB,SAAA,GAAA,aAAA,iBAFwBV,OAAOQ,QAAQI,aAAavC,qBAAAA,cAGlC,EAAA,IAAAyC,WAAA;AAAA,UAAA,GAAA,aAAA,iBACbb,kBAAgB;GAAA,IACfc,WAAQ;AAAA,WAAER,oBAAAA,GAAAA,aAAAA,iBAAoBA,kBAAgB,EAAA,CAAA,GAAM;;GAAI,IAAAO,WAAA;AAAA,WAAA,EAAA,GAAA,aAAA,iBAEvD3C,qBAAAA,cAAY,EAAA,CAAA,GAAA,GAAA,aAAA,iBACZ6C,cAAY,EAAA,CAAA,CAAA;;GAAA,CAAA;IAAA,CAAA;;AAMrB,SAASA,eAAe;CACtB,MAAMhB,SAAS9B,kBAAAA,WAAW;CAC1B,MAAM+C,gBAAgBjB,OAAOkB,OAAOC,aAAaC;CACjD,MAAMC,gBAAiBJ,SAAS,GAAGnD,sBAAAA,cAAcwD,KAAAA;CACjD,MAAMC,cACJF,SAAS,GACLrB,OAAOkB,OAAOM,uBAAuB1D,sBAAAA,YAAY,CAACsD,QAClDE,KAAAA;CACN,MAAMG,wBACJJ,SAAS,GACLK,QAAQ1B,OAAOkB,OAAOS,gBAAgBP,MAAMtD,sBAAAA,aAAa,GACzD;CACN,MAAM8D,iBAAiB5B,OAAOkB,OAAOW,SAAST;CAC9C,MAAMU,eAAe;EACnBb;EACAI;EACAE;EACAQ,YAAYN;EACb;CAED,MAAMO,uBAAuB;AAC3B,UAAA,GAAA,aAAA,iBACGrE,SAAMsE,MAAI;GAAA,IAACC,OAAI;AAAA,WAAEjB,SAAS;;GAAA,IAAAH,WAAA;AAAA,YAAA,GAAA,aAAA,iBACxBxC,cAAAA,OAAK,EAAA,IAAC2C,UAAO;AAAA,YAAEA,SAAS;OAAC,CAAA;;GAAA,CAAA;;AAKhC,SAAA,GAAA,aAAA,iBACG7C,qBAAAA,oBAAoB+D,UAAQ;EAACC,OAAON;EAAY,IAAAhB,WAAA;AAAA,WAAA,GAAA,aAAA,YAC9C,CAAA,CAAAd,OAAOQ,QAAQ8B,2BAA0B,EAAA,GACxCN,gBAAgB,IAAA,GAAA,aAAA,iBAEfhE,sBAAAA,eAAa;IACZuE,mBAAmBX,UAAU;IAC7BY,gBAAgBvE,sBAAAA;IAAc,IAC9BwE,UAAO;AAAA,YAAA,QAAA,IAAA,aACoB,gBACpBI,UAAU;AACTjF,OAAAA,GAAAA,aAAAA,SACE,OACA,6HACD;AACDA,OAAAA,GAAAA,aAAAA,SAAQ,OAAOiF,MAAMC,WAAWD,MAAME,UAAU,CAAC;SAEnDzB,KAAAA;;IAAS,IAAAR,WAAA;AAAA,YAGdkB,gBAAgB;;IAAA,CAEpB;;EAAA,CAAA;;AAiBP,SAAgBsB,gBAA8D;CAC5E,MAAMtD,SAAS9B,kBAAAA,WAAW;AAE1B,SAMEqF,SAGG;AACH,SAAO5F,SAAM8F,iBAAiB;GAC5B,MAAM,EAAEC,SAASC,eAAeC,OAAOC,eAAe,GAAGC,SAASP;AAElEvD,UAAOkB,OAAO6C,qBAAqB3C;AACnC,UAAOpB,OAAOgE,WAAWF,MAAa;IACpCJ;IACAC;IACAC;IACAC;IACD,CAAC;IACF;;;AAsBN,SAAgBO,WAMdC,OAA4E;CAE5E,MAAMH,SADaZ,eAAe,CACRe,MAAa;AAavC,SAAA,GAAA,aAAA,MAXsB1G,SAAM8F,iBAAiB;EAC3C,MAAMc,gBAAgBL,QAAQ;EAC9B,MAAMM,QAAQH,MAAMvD;AAEpB,MAAI,OAAO0D,UAAU,WACnB,QAAQA,MAAcD,cAAc;AAGtC,SAAOA,gBAAgBC,QAAQ;GAC/B,CAEqB;;AAYzB,SAAgBM,WAIdvB,MACsD;CACtD,MAAMvD,SAAS9B,kBAAAA,WAAoB;AACnC,QAAOP,SAAM8F,YAAYsB,SAAgC;EACvD,MAAMJ,UAAU3E,OAAOkB,OAAO8D,sBAAsB5D;EAGpD,MAAM6D,MAAM1B,MAAMmB,SAASnB,KAAKmB,OAAOC,QAAQ,GAAGA;AAClD,MAAII,SAASzD,KAAAA,EAAW,QAAO2D;AAC/B,UAAA,GAAA,sBAAA,kBAAwBF,MAAME,IAAI;GAClC;;AAGJ,SAAgBC,iBAId3B,MACsD;CACtD,MAAM4B,iBAAiBxH,SAAMyH,WAAWhH,qBAAAA,oBAAoB,CAAC6C;AAE7D,QAAO6D,WAAW,EAChBJ,SAASC,YAAiD;AACxDA,YAAUA,QAAQU,MAChB,GACAV,QAAQW,WAAWC,MAAMA,EAAEC,OAAOL,gBAAgB,CACpD,CAAC;AACD,SAAO5B,MAAMmB,SAASnB,KAAKmB,OAAOC,QAAQ,GAAGA;IAEhD,CAAQ;;AAGX,SAAgBc,gBAIdlC,MACsD;CACtD,MAAM4B,iBAAiBxH,SAAMyH,WAAWhH,qBAAAA,oBAAoB,CAAC6C;AAE7D,QAAO6D,WAAW,EAChBJ,SAASC,YAAiD;AACxDA,YAAUA,QAAQU,MAChBV,QAAQW,WAAWC,MAAMA,EAAEC,OAAOL,gBAAgB,CAAC,GAAG,EACvD;AACD,SAAO5B,MAAMmB,SAASnB,KAAKmB,OAAOC,QAAQ,GAAGA;IAEhD,CAAQ"}
@@ -1,17 +1,19 @@
1
- require("./_virtual/_rolldown/runtime.cjs");
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_useRouter = require("./useRouter.cjs");
3
- const require_useRouterState = require("./useRouterState.cjs");
4
3
  const require_Asset = require("./Asset.cjs");
5
4
  let solid_js_web = require("solid-js/web");
5
+ let solid_js = require("solid-js");
6
+ solid_js = require_runtime.__toESM(solid_js);
6
7
  //#region src/Scripts.tsx
7
8
  var Scripts = () => {
8
9
  const router = require_useRouter.useRouter();
9
10
  const nonce = router.options.ssr?.nonce;
10
- const assetScripts = require_useRouterState.useRouterState({ select: (state) => {
11
+ const activeMatches = solid_js.createMemo(() => router.stores.activeMatchesSnapshot.state);
12
+ const assetScripts = solid_js.createMemo(() => {
11
13
  const assetScripts = [];
12
14
  const manifest = router.ssr?.manifest;
13
15
  if (!manifest) return [];
14
- state.matches.map((match) => router.looseRoutesById[match.routeId]).forEach((route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
16
+ activeMatches().map((match) => router.looseRoutesById[match.routeId]).forEach((route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
15
17
  assetScripts.push({
16
18
  tag: "script",
17
19
  attrs: {
@@ -22,18 +24,18 @@ var Scripts = () => {
22
24
  });
23
25
  }));
24
26
  return assetScripts;
25
- } });
26
- const scripts = require_useRouterState.useRouterState({ select: (state) => ({ scripts: state.matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
27
+ });
28
+ const scripts = solid_js.createMemo(() => activeMatches().map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
27
29
  tag: "script",
28
30
  attrs: {
29
31
  ...script,
30
32
  nonce
31
33
  },
32
34
  children
33
- })) }) });
35
+ })));
34
36
  let serverBufferedScript = void 0;
35
37
  if (router.serverSsr) serverBufferedScript = router.serverSsr.takeBufferedScripts();
36
- const allScripts = [...scripts().scripts, ...assetScripts()];
38
+ const allScripts = [...scripts(), ...assetScripts()];
37
39
  if (serverBufferedScript) allScripts.unshift(serverBufferedScript);
38
40
  return (0, solid_js_web.memo)(() => allScripts.map((asset, i) => (0, solid_js_web.createComponent)(require_Asset.Asset, asset)));
39
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Scripts.cjs","names":["Asset","useRouterState","useRouter","RouterManagedTag","Scripts","router","nonce","options","ssr","assetScripts","select","state","Array","manifest","matches","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","serverBufferedScript","undefined","serverSsr","takeBufferedScripts","allScripts","unshift","_$memo","i","_$createComponent"],"sources":["../../src/Scripts.tsx"],"sourcesContent":["import { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const assetScripts = useRouterState({\n select: (state) => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as any)\n }),\n )\n\n return assetScripts\n },\n })\n\n const scripts = useRouterState({\n select: (state) => ({\n scripts: (\n state.matches\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script',\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n }),\n })\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [\n ...scripts().scripts,\n ...assetScripts(),\n ] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} />\n ))}\n </>\n )\n}\n"],"mappings":";;;;;;AAKA,IAAaI,gBAAgB;CAC3B,MAAMC,SAASH,kBAAAA,WAAW;CAC1B,MAAMI,QAAQD,OAAOE,QAAQC,KAAKF;CAClC,MAAMG,eAAeR,uBAAAA,eAAe,EAClCS,SAASC,UAAU;EACjB,MAAMF,eAAwC,EAAE;EAChD,MAAMI,WAAWR,OAAOG,KAAKK;AAE7B,MAAI,CAACA,SACH,QAAO,EAAE;AAGXF,QAAMG,QACHC,KAAKC,UAAUX,OAAOY,gBAAgBD,MAAME,SAAU,CACtDC,SAASC,UACRP,SAASQ,OAAOD,MAAME,KAAKC,QACvBC,QAAQC,MAAMA,EAAEC,QAAQ,SAAS,CAClCP,SAASQ,UAAU;AAClBlB,gBAAamB,KAAK;IAChBF,KAAK;IACLG,OAAO;KAAE,GAAGF,MAAME;KAAOvB;KAAO;IAChCwB,UAAUH,MAAMG;IACjB,CAAQ;IAEf,CAAC;AAEH,SAAOrB;IAEV,CAAC;CAEF,MAAMsB,UAAU9B,uBAAAA,eAAe,EAC7BS,SAASC,WAAW,EAClBoB,SACEpB,MAAMG,QACHC,KAAKC,UAAUA,MAAMe,QAAS,CAC9BC,KAAK,EAAE,CACPR,OAAOS,QAAQ,CAClBlB,KAAK,EAAEe,UAAU,GAAGI,cAAc;EAClCR,KAAK;EACLG,OAAO;GACL,GAAGK;GACH5B;GACD;EACDwB;EACD,EAAC,EACH,GACF,CAAC;CAEF,IAAIK,uBAAqDC,KAAAA;AAEzD,KAAI/B,OAAOgC,UACTF,wBAAuB9B,OAAOgC,UAAUC,qBAAqB;CAG/D,MAAMC,aAAa,CACjB,GAAGR,SAAS,CAACA,SACb,GAAGtB,cAAc,CAClB;AAED,KAAI0B,qBACFI,YAAWC,QAAQL,qBAAqB;AAG1C,SAAA,GAAA,aAAA,YAEKI,WAAWxB,KAAKY,OAAOe,OAAAA,GAAAA,aAAAA,iBACrB1C,cAAAA,OAAU2B,MACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"Scripts.cjs","names":["Solid","Asset","useRouter","RouterManagedTag","Scripts","router","nonce","options","ssr","activeMatches","createMemo","stores","activeMatchesSnapshot","state","assetScripts","Array","manifest","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","serverBufferedScript","undefined","serverSsr","takeBufferedScripts","allScripts","unshift","_$memo","i","_$createComponent"],"sources":["../../src/Scripts.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { Asset } from './Asset'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const activeMatches = Solid.createMemo(\n () => router.stores.activeMatchesSnapshot.state,\n )\n const assetScripts = Solid.createMemo(() => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n activeMatches()\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as any)\n }),\n )\n\n return assetScripts\n })\n\n const scripts = Solid.createMemo(() =>\n (\n activeMatches()\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script',\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n )\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [\n ...scripts(),\n ...assetScripts(),\n ] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} />\n ))}\n </>\n )\n}\n"],"mappings":";;;;;;;AAKA,IAAaI,gBAAgB;CAC3B,MAAMC,SAASH,kBAAAA,WAAW;CAC1B,MAAMI,QAAQD,OAAOE,QAAQC,KAAKF;CAClC,MAAMG,gBAAgBT,SAAMU,iBACpBL,OAAOM,OAAOC,sBAAsBC,MAC3C;CACD,MAAMC,eAAed,SAAMU,iBAAiB;EAC1C,MAAMI,eAAwC,EAAE;EAChD,MAAME,WAAWX,OAAOG,KAAKQ;AAE7B,MAAI,CAACA,SACH,QAAO,EAAE;AAGXP,iBAAe,CACZQ,KAAKC,UAAUb,OAAOc,gBAAgBD,MAAME,SAAU,CACtDC,SAASC,UACRN,SAASO,OAAOD,MAAME,KAAKC,QACvBC,QAAQC,MAAMA,EAAEC,QAAQ,SAAS,CAClCP,SAASQ,UAAU;AAClBf,gBAAagB,KAAK;IAChBF,KAAK;IACLG,OAAO;KAAE,GAAGF,MAAME;KAAOzB;KAAO;IAChC0B,UAAUH,MAAMG;IACjB,CAAQ;IAEf,CAAC;AAEH,SAAOlB;GACP;CAEF,MAAMmB,UAAUjC,SAAMU,iBAElBD,eAAe,CACZQ,KAAKC,UAAUA,MAAMe,QAAS,CAC9BC,KAAK,EAAE,CACPR,OAAOS,QAAQ,CAClBlB,KAAK,EAAEe,UAAU,GAAGI,cAAc;EAClCR,KAAK;EACLG,OAAO;GACL,GAAGK;GACH9B;GACD;EACD0B;EACD,EACH,CAAC;CAED,IAAIK,uBAAqDC,KAAAA;AAEzD,KAAIjC,OAAOkC,UACTF,wBAAuBhC,OAAOkC,UAAUC,qBAAqB;CAG/D,MAAMC,aAAa,CACjB,GAAGR,SAAS,EACZ,GAAGnB,cAAc,CAClB;AAED,KAAIuB,qBACFI,YAAWC,QAAQL,qBAAqB;AAG1C,SAAA,GAAA,aAAA,YAEKI,WAAWxB,KAAKY,OAAOe,OAAAA,GAAAA,aAAAA,iBACrB3C,cAAAA,OAAU4B,MACZ,CAAC,CAAA"}
@@ -1 +1,2 @@
1
- export declare const Scripts: () => import("solid-js").JSX.Element;
1
+ import * as Solid from 'solid-js';
2
+ export declare const Scripts: () => Solid.JSX.Element;
@@ -1,7 +1,5 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_useRouter = require("./useRouter.cjs");
3
- const require_useRouterState = require("./useRouterState.cjs");
4
- const require_utils = require("./utils.cjs");
5
3
  let _tanstack_router_core = require("@tanstack/router-core");
6
4
  let solid_js = require("solid-js");
7
5
  solid_js = require_runtime.__toESM(solid_js);
@@ -13,15 +11,12 @@ function Transitioner() {
13
11
  router,
14
12
  mounted: false
15
13
  };
16
- const isLoading = require_useRouterState.useRouterState({ select: ({ isLoading }) => isLoading });
14
+ const isLoading = solid_js.createMemo(() => router.stores.isLoading.state);
17
15
  if (_tanstack_router_core_isServer.isServer ?? router.isServer) return null;
18
16
  const [isSolidTransitioning, startSolidTransition] = solid_js.useTransition();
19
- const hasPendingMatches = require_useRouterState.useRouterState({ select: (s) => s.matches.some((d) => d.status === "pending") });
20
- const previousIsLoading = require_utils.usePrevious(isLoading);
21
- const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
22
- const previousIsAnyPending = require_utils.usePrevious(isAnyPending);
23
- const isPagePending = () => isLoading() || hasPendingMatches();
24
- const previousIsPagePending = require_utils.usePrevious(isPagePending);
17
+ const hasPendingMatches = solid_js.createMemo(() => router.stores.hasPendingMatches.state);
18
+ const isAnyPending = solid_js.createMemo(() => isLoading() || isSolidTransitioning() || hasPendingMatches());
19
+ const isPagePending = solid_js.createMemo(() => isLoading() || hasPendingMatches());
25
20
  router.startTransition = (fn) => {
26
21
  solid_js.startTransition(() => {
27
22
  startSolidTransition(fn);
@@ -62,33 +57,38 @@ function Transitioner() {
62
57
  tryLoad();
63
58
  });
64
59
  });
65
- solid_js.createRenderEffect(solid_js.on([previousIsLoading, isLoading], ([previousIsLoading, isLoading]) => {
66
- if (previousIsLoading.previous && !isLoading) router.emit({
60
+ solid_js.createRenderEffect((previousIsLoading = false) => {
61
+ const currentIsLoading = isLoading();
62
+ if (previousIsLoading && !currentIsLoading) router.emit({
67
63
  type: "onLoad",
68
- ...(0, _tanstack_router_core.getLocationChangeInfo)(router.state)
64
+ ...(0, _tanstack_router_core.getLocationChangeInfo)(router.stores.location.state, router.stores.resolvedLocation.state)
69
65
  });
70
- }));
71
- solid_js.createComputed(solid_js.on([isPagePending, previousIsPagePending], ([isPagePending, previousIsPagePending]) => {
72
- if (previousIsPagePending.previous && !isPagePending) router.emit({
66
+ return currentIsLoading;
67
+ });
68
+ solid_js.createComputed((previousIsPagePending = false) => {
69
+ const currentIsPagePending = isPagePending();
70
+ if (previousIsPagePending && !currentIsPagePending) router.emit({
73
71
  type: "onBeforeRouteMount",
74
- ...(0, _tanstack_router_core.getLocationChangeInfo)(router.state)
72
+ ...(0, _tanstack_router_core.getLocationChangeInfo)(router.stores.location.state, router.stores.resolvedLocation.state)
75
73
  });
76
- }));
77
- solid_js.createRenderEffect(solid_js.on([isAnyPending, previousIsAnyPending], ([isAnyPending, previousIsAnyPending]) => {
78
- if (previousIsAnyPending.previous && !isAnyPending) {
79
- const changeInfo = (0, _tanstack_router_core.getLocationChangeInfo)(router.state);
74
+ return currentIsPagePending;
75
+ });
76
+ solid_js.createRenderEffect((previousIsAnyPending = false) => {
77
+ const currentIsAnyPending = isAnyPending();
78
+ if (previousIsAnyPending && !currentIsAnyPending) {
79
+ const changeInfo = (0, _tanstack_router_core.getLocationChangeInfo)(router.stores.location.state, router.stores.resolvedLocation.state);
80
80
  router.emit({
81
81
  type: "onResolved",
82
82
  ...changeInfo
83
83
  });
84
- router.__store.setState((s) => ({
85
- ...s,
86
- status: "idle",
87
- resolvedLocation: s.location
88
- }));
84
+ solid_js.batch(() => {
85
+ router.stores.status.setState(() => "idle");
86
+ router.stores.resolvedLocation.setState(() => router.stores.location.state);
87
+ });
89
88
  if (changeInfo.hrefChanged) (0, _tanstack_router_core.handleHashScroll)(router);
90
89
  }
91
- }));
90
+ return currentIsAnyPending;
91
+ });
92
92
  return null;
93
93
  }
94
94
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Transitioner.cjs","names":["Solid","getLocationChangeInfo","handleHashScroll","trimPathRight","isServer","useRouter","useRouterState","usePrevious","Transitioner","router","mountLoadForRouter","mounted","isLoading","select","isSolidTransitioning","startSolidTransition","useTransition","hasPendingMatches","s","matches","some","d","status","previousIsLoading","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","Promise","onMount","unsub","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","publicHref","commitLocation","replace","onCleanup","createRenderEffect","untrack","window","ssr","tryLoad","err","console","error","on","previous","emit","type","createComputed","changeInfo","__store","setState","resolvedLocation","location","hrefChanged"],"sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n if (isServer ?? router.isServer) {\n return null\n }\n\n const [isSolidTransitioning, startSolidTransition] = Solid.useTransition()\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = () =>\n isLoading() || isSolidTransitioning() || hasPendingMatches()\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = () => isLoading() || hasPendingMatches()\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void | Promise<void>) => {\n Solid.startTransition(() => {\n startSolidTransition(fn)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onMount(() => {\n const unsub = router.history.subscribe(router.load)\n\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n\n // Check if the current URL matches the canonical form.\n // Compare publicHref (browser-facing URL) for consistency with\n // the server-side redirect check in router.beforeLoad.\n if (\n trimPathRight(router.latestLocation.publicHref) !==\n trimPathRight(nextLocation.publicHref)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n Solid.onCleanup(() => {\n unsub()\n })\n })\n\n // Try to load the initial location\n Solid.createRenderEffect(() => {\n Solid.untrack(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { router, mounted: true }\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n tryLoad()\n })\n })\n\n Solid.createRenderEffect(\n Solid.on(\n [previousIsLoading, isLoading],\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createComputed(\n Solid.on(\n [isPagePending, previousIsPagePending],\n ([isPagePending, previousIsPagePending]) => {\n // emit onBeforeRouteMount\n if (previousIsPagePending.previous && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createRenderEffect(\n Solid.on(\n [isAnyPending, previousIsAnyPending],\n ([isAnyPending, previousIsAnyPending]) => {\n if (previousIsAnyPending.previous && !isAnyPending) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n },\n ),\n )\n\n return null\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Transitioner.cjs","names":["Solid","getLocationChangeInfo","handleHashScroll","trimPathRight","isServer","useRouter","Transitioner","router","mountLoadForRouter","mounted","isLoading","createMemo","stores","state","isSolidTransitioning","startSolidTransition","useTransition","hasPendingMatches","isAnyPending","isPagePending","startTransition","fn","Promise","onMount","unsub","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","_includeValidateSearch","publicHref","commitLocation","replace","onCleanup","createRenderEffect","untrack","window","ssr","tryLoad","err","console","error","previousIsLoading","currentIsLoading","emit","type","location","resolvedLocation","createComputed","previousIsPagePending","currentIsPagePending","previousIsAnyPending","currentIsAnyPending","changeInfo","batch","status","setState","hrefChanged"],"sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = Solid.createMemo(() => router.stores.isLoading.state)\n\n if (isServer ?? router.isServer) {\n return null\n }\n\n const [isSolidTransitioning, startSolidTransition] = Solid.useTransition()\n\n // Track pending state changes\n const hasPendingMatches = Solid.createMemo(\n () => router.stores.hasPendingMatches.state,\n )\n\n const isAnyPending = Solid.createMemo(\n () => isLoading() || isSolidTransitioning() || hasPendingMatches(),\n )\n\n const isPagePending = Solid.createMemo(\n () => isLoading() || hasPendingMatches(),\n )\n\n router.startTransition = (fn: () => void | Promise<void>) => {\n Solid.startTransition(() => {\n startSolidTransition(fn)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onMount(() => {\n const unsub = router.history.subscribe(router.load)\n\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n\n // Check if the current URL matches the canonical form.\n // Compare publicHref (browser-facing URL) for consistency with\n // the server-side redirect check in router.beforeLoad.\n if (\n trimPathRight(router.latestLocation.publicHref) !==\n trimPathRight(nextLocation.publicHref)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n Solid.onCleanup(() => {\n unsub()\n })\n })\n\n // Try to load the initial location\n Solid.createRenderEffect(() => {\n Solid.untrack(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { router, mounted: true }\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n tryLoad()\n })\n })\n\n Solid.createRenderEffect((previousIsLoading = false) => {\n const currentIsLoading = isLoading()\n\n if (previousIsLoading && !currentIsLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(\n router.stores.location.state,\n router.stores.resolvedLocation.state,\n ),\n })\n }\n\n return currentIsLoading\n })\n\n Solid.createComputed((previousIsPagePending = false) => {\n const currentIsPagePending = isPagePending()\n\n if (previousIsPagePending && !currentIsPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(\n router.stores.location.state,\n router.stores.resolvedLocation.state,\n ),\n })\n }\n\n return currentIsPagePending\n })\n\n Solid.createRenderEffect((previousIsAnyPending = false) => {\n const currentIsAnyPending = isAnyPending()\n\n if (previousIsAnyPending && !currentIsAnyPending) {\n const changeInfo = getLocationChangeInfo(\n router.stores.location.state,\n router.stores.resolvedLocation.state,\n )\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n Solid.batch(() => {\n router.stores.status.setState(() => 'idle')\n router.stores.resolvedLocation.setState(\n () => router.stores.location.state,\n )\n })\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n\n return currentIsAnyPending\n })\n\n return null\n}\n"],"mappings":"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"}