@tanstack/react-router 1.0.0 → 1.0.1

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 (136) hide show
  1. package/build/cjs/RouterProvider.js +3 -1
  2. package/build/cjs/RouterProvider.js.map +1 -1
  3. package/build/esm/index.js +3 -1
  4. package/build/esm/index.js.map +1 -1
  5. package/build/stats-html.html +1 -1
  6. package/build/stats-react.json +361 -361
  7. package/build/types/index.d.ts +24 -932
  8. package/build/umd/index.development.js +3 -1
  9. package/build/umd/index.development.js.map +1 -1
  10. package/build/umd/index.production.js +1 -1
  11. package/build/umd/index.production.js.map +1 -1
  12. package/package.json +2 -2
  13. package/src/RouterProvider.tsx +3 -1
  14. package/build/cjs/_virtual/with-selector.development.js +0 -16
  15. package/build/cjs/_virtual/with-selector.development.js.map +0 -1
  16. package/build/cjs/_virtual/with-selector.js +0 -16
  17. package/build/cjs/_virtual/with-selector.js.map +0 -1
  18. package/build/cjs/_virtual/with-selector.production.min.js +0 -16
  19. package/build/cjs/_virtual/with-selector.production.min.js.map +0 -1
  20. package/build/cjs/build/esm/index.js +0 -79
  21. package/build/cjs/build/esm/index.js.map +0 -1
  22. package/build/cjs/node_modules/.pnpm/@tanstack_react-store@0.2.1_react-dom@18.2.0_react@18.2.0/node_modules/@tanstack/react-store/build/modern/index.js +0 -47
  23. package/build/cjs/node_modules/.pnpm/@tanstack_react-store@0.2.1_react-dom@18.2.0_react@18.2.0/node_modules/@tanstack/react-store/build/modern/index.js.map +0 -1
  24. package/build/cjs/node_modules/.pnpm/@tanstack_store@0.1.3/node_modules/@tanstack/store/build/modern/index.js +0 -70
  25. package/build/cjs/node_modules/.pnpm/@tanstack_store@0.1.3/node_modules/@tanstack/store/build/modern/index.js.map +0 -1
  26. package/build/cjs/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -188
  27. package/build/cjs/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -1
  28. package/build/cjs/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -39
  29. package/build/cjs/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
  30. package/build/cjs/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/shim/with-selector.js +0 -26
  31. package/build/cjs/node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -1
  32. package/build/cjs/packages/react-router/src/CatchBoundary.js +0 -123
  33. package/build/cjs/packages/react-router/src/CatchBoundary.js.map +0 -1
  34. package/build/cjs/packages/react-router/src/Matches.js +0 -235
  35. package/build/cjs/packages/react-router/src/Matches.js.map +0 -1
  36. package/build/cjs/packages/react-router/src/RouterProvider.js +0 -144
  37. package/build/cjs/packages/react-router/src/RouterProvider.js.map +0 -1
  38. package/build/cjs/packages/react-router/src/awaited.js +0 -43
  39. package/build/cjs/packages/react-router/src/awaited.js.map +0 -1
  40. package/build/cjs/packages/react-router/src/defer.js +0 -37
  41. package/build/cjs/packages/react-router/src/defer.js.map +0 -1
  42. package/build/cjs/packages/react-router/src/fileRoute.js +0 -27
  43. package/build/cjs/packages/react-router/src/fileRoute.js.map +0 -1
  44. package/build/cjs/packages/react-router/src/index.js +0 -61
  45. package/build/cjs/packages/react-router/src/index.js.map +0 -1
  46. package/build/cjs/packages/react-router/src/lazyRouteComponent.js +0 -54
  47. package/build/cjs/packages/react-router/src/lazyRouteComponent.js.map +0 -1
  48. package/build/cjs/packages/react-router/src/link.js +0 -148
  49. package/build/cjs/packages/react-router/src/link.js.map +0 -1
  50. package/build/cjs/packages/react-router/src/path.js +0 -209
  51. package/build/cjs/packages/react-router/src/path.js.map +0 -1
  52. package/build/cjs/packages/react-router/src/qss.js +0 -63
  53. package/build/cjs/packages/react-router/src/qss.js.map +0 -1
  54. package/build/cjs/packages/react-router/src/react.js +0 -634
  55. package/build/cjs/packages/react-router/src/react.js.map +0 -1
  56. package/build/cjs/packages/react-router/src/redirects.js +0 -25
  57. package/build/cjs/packages/react-router/src/redirects.js.map +0 -1
  58. package/build/cjs/packages/react-router/src/route.js +0 -134
  59. package/build/cjs/packages/react-router/src/route.js.map +0 -1
  60. package/build/cjs/packages/react-router/src/router.js +0 -1111
  61. package/build/cjs/packages/react-router/src/router.js.map +0 -1
  62. package/build/cjs/packages/react-router/src/scroll-restoration.js +0 -53
  63. package/build/cjs/packages/react-router/src/scroll-restoration.js.map +0 -1
  64. package/build/cjs/packages/react-router/src/searchParams.js +0 -81
  65. package/build/cjs/packages/react-router/src/searchParams.js.map +0 -1
  66. package/build/cjs/packages/react-router/src/useBlocker.js +0 -61
  67. package/build/cjs/packages/react-router/src/useBlocker.js.map +0 -1
  68. package/build/cjs/packages/react-router/src/useNavigate.js +0 -75
  69. package/build/cjs/packages/react-router/src/useNavigate.js.map +0 -1
  70. package/build/cjs/packages/react-router/src/useParams.js +0 -26
  71. package/build/cjs/packages/react-router/src/useParams.js.map +0 -1
  72. package/build/cjs/packages/react-router/src/useSearch.js +0 -25
  73. package/build/cjs/packages/react-router/src/useSearch.js.map +0 -1
  74. package/build/cjs/packages/react-router/src/utils.js +0 -239
  75. package/build/cjs/packages/react-router/src/utils.js.map +0 -1
  76. package/build/cjs/react/CatchBoundary.js +0 -123
  77. package/build/cjs/react/CatchBoundary.js.map +0 -1
  78. package/build/cjs/react/awaited.js +0 -43
  79. package/build/cjs/react/awaited.js.map +0 -1
  80. package/build/cjs/react/defer.js +0 -37
  81. package/build/cjs/react/defer.js.map +0 -1
  82. package/build/cjs/react.js +0 -650
  83. package/build/cjs/react.js.map +0 -1
  84. package/build/cjs/routerConfig.js +0 -209
  85. package/build/cjs/routerConfig.js.map +0 -1
  86. package/build/cjs/src/CatchBoundary.js +0 -126
  87. package/build/cjs/src/CatchBoundary.js.map +0 -1
  88. package/build/cjs/src/Matches.js +0 -235
  89. package/build/cjs/src/Matches.js.map +0 -1
  90. package/build/cjs/src/RouterProvider.js +0 -1051
  91. package/build/cjs/src/RouterProvider.js.map +0 -1
  92. package/build/cjs/src/awaited.js +0 -45
  93. package/build/cjs/src/awaited.js.map +0 -1
  94. package/build/cjs/src/defer.js +0 -39
  95. package/build/cjs/src/defer.js.map +0 -1
  96. package/build/cjs/src/fileRoute.js +0 -29
  97. package/build/cjs/src/fileRoute.js.map +0 -1
  98. package/build/cjs/src/index.js +0 -134
  99. package/build/cjs/src/index.js.map +0 -1
  100. package/build/cjs/src/lazyRouteComponent.js +0 -57
  101. package/build/cjs/src/lazyRouteComponent.js.map +0 -1
  102. package/build/cjs/src/link.js +0 -151
  103. package/build/cjs/src/link.js.map +0 -1
  104. package/build/cjs/src/path.js +0 -211
  105. package/build/cjs/src/path.js.map +0 -1
  106. package/build/cjs/src/qss.js +0 -65
  107. package/build/cjs/src/qss.js.map +0 -1
  108. package/build/cjs/src/redirects.js +0 -27
  109. package/build/cjs/src/redirects.js.map +0 -1
  110. package/build/cjs/src/route.js +0 -139
  111. package/build/cjs/src/route.js.map +0 -1
  112. package/build/cjs/src/router.js +0 -203
  113. package/build/cjs/src/router.js.map +0 -1
  114. package/build/cjs/src/scroll-restoration.js +0 -186
  115. package/build/cjs/src/scroll-restoration.js.map +0 -1
  116. package/build/cjs/src/searchParams.js +0 -83
  117. package/build/cjs/src/searchParams.js.map +0 -1
  118. package/build/cjs/src/useBlocker.js +0 -64
  119. package/build/cjs/src/useBlocker.js.map +0 -1
  120. package/build/cjs/src/useNavigate.js +0 -78
  121. package/build/cjs/src/useNavigate.js.map +0 -1
  122. package/build/cjs/src/useParams.js +0 -28
  123. package/build/cjs/src/useParams.js.map +0 -1
  124. package/build/cjs/src/useSearch.js +0 -27
  125. package/build/cjs/src/useSearch.js.map +0 -1
  126. package/build/cjs/src/utils.js +0 -230
  127. package/build/cjs/src/utils.js.map +0 -1
  128. package/build/cjs/useStore.js +0 -99
  129. package/build/cjs/useStore.js.map +0 -1
  130. package/build/types/RouteMatch.d.ts +0 -23
  131. package/build/types/injectHtml.d.ts +0 -0
  132. package/build/types/react/CatchBoundary.d.ts +0 -33
  133. package/build/types/react/awaited.d.ts +0 -9
  134. package/build/types/react/defer.d.ts +0 -19
  135. package/build/types/react.d.ts +0 -141
  136. package/build/types/useStore.d.ts +0 -12
@@ -66,6 +66,7 @@ function RouterProvider({
66
66
  return provider;
67
67
  }
68
68
  function Transitioner() {
69
+ const mountLoadCount = React__namespace.useRef(0);
69
70
  const router = useRouter();
70
71
  const routerState = useRouterState({
71
72
  select: s => utils.pick(s, ['isLoading', 'location', 'resolvedLocation', 'isTransitioning'])
@@ -143,7 +144,8 @@ function Transitioner() {
143
144
  }
144
145
  }, [routerState.isTransitioning, isTransitioning, routerState.isLoading, routerState.resolvedLocation, routerState.location]);
145
146
  utils.useLayoutEffect(() => {
146
- if (!window.__TSR_DEHYDRATED__) {
147
+ if (!window.__TSR_DEHYDRATED__ && !mountLoadCount.current) {
148
+ mountLoadCount.current++;
147
149
  tryLoad();
148
150
  }
149
151
  }, []);
@@ -1 +1 @@
1
- {"version":3,"file":"RouterProvider.js","sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import * as React from 'react'\nimport warning from 'tiny-warning'\nimport { useStore } from '@tanstack/react-store'\nimport { Matches } from './Matches'\nimport { NavigateOptions, ResolveRelativePath, ToOptions } from './link'\nimport { ParsedLocation } from './location'\nimport { AnyRoute } from './route'\nimport { RouteById, RoutePaths } from './routeInfo'\nimport {\n BuildNextOptions,\n RegisteredRouter,\n Router,\n RouterOptions,\n RouterState,\n} from './router'\nimport { NoInfer, pick, useLayoutEffect } from './utils'\nimport { MatchRouteOptions } from './Matches'\nimport { RouteMatch } from './Matches'\n\nexport interface CommitLocationOptions {\n replace?: boolean\n resetScroll?: boolean\n startTransition?: boolean\n}\n\nexport interface MatchLocation {\n to?: string | number | null\n fuzzy?: boolean\n caseSensitive?: boolean\n from?: string\n}\n\nexport type NavigateFn<TRouteTree extends AnyRoute> = <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n>(\n opts: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Promise<void>\n\nexport type MatchRouteFn<TRouteTree extends AnyRoute> = <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TResolved = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n>(\n location: ToOptions<TRouteTree, TFrom, TTo>,\n opts?: MatchRouteOptions,\n) => false | RouteById<TRouteTree, TResolved>['types']['allParams']\n\nexport type BuildLocationFn<TRouteTree extends AnyRoute> = (\n opts: ToOptions<TRouteTree>,\n) => ParsedLocation\n\nexport type InjectedHtmlEntry = string | (() => Promise<string> | string)\n\nexport let routerContext = React.createContext<Router<any>>(null!)\n\nif (typeof document !== 'undefined') {\n if (window.__TSR_ROUTER_CONTEXT__) {\n routerContext = window.__TSR_ROUTER_CONTEXT__\n } else {\n window.__TSR_ROUTER_CONTEXT__ = routerContext as any\n }\n}\n\nexport function RouterProvider<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router, ...rest }: RouterProps<TRouteTree, TDehydrated>) {\n // Allow the router to update options on the router instance\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest?.context,\n },\n } as any)\n\n const matches = router.options.InnerWrap ? (\n <router.options.InnerWrap>\n <Matches />\n </router.options.InnerWrap>\n ) : (\n <Matches />\n )\n\n const provider = (\n <routerContext.Provider value={router}>\n {matches}\n <Transitioner />\n </routerContext.Provider>\n )\n\n if (router.options.Wrap) {\n return <router.options.Wrap>{provider}</router.options.Wrap>\n }\n\n return provider\n}\n\nfunction Transitioner() {\n const router = useRouter()\n const routerState = useRouterState({\n select: (s) =>\n pick(s, ['isLoading', 'location', 'resolvedLocation', 'isTransitioning']),\n })\n\n const [isTransitioning, startReactTransition] = React.useTransition()\n\n router.startReactTransition = startReactTransition\n\n React.useEffect(() => {\n if (isTransitioning) {\n router.__store.setState((s) => ({\n ...s,\n isTransitioning,\n }))\n }\n }, [isTransitioning])\n\n const tryLoad = () => {\n const apply = (cb: () => void) => {\n if (!routerState.isTransitioning) {\n startReactTransition(() => cb())\n } else {\n cb()\n }\n }\n\n apply(() => {\n try {\n router.load()\n } catch (err) {\n console.error(err)\n }\n })\n }\n\n useLayoutEffect(() => {\n const unsub = router.history.subscribe(() => {\n router.latestLocation = router.parseLocation(router.latestLocation)\n if (routerState.location !== router.latestLocation) {\n tryLoad()\n }\n })\n\n const nextLocation = router.buildLocation({\n search: true,\n params: true,\n hash: true,\n state: true,\n })\n\n if (routerState.location.href !== nextLocation.href) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n return () => {\n unsub()\n }\n }, [router.history])\n\n useLayoutEffect(() => {\n if (\n routerState.isTransitioning &&\n !isTransitioning &&\n !routerState.isLoading &&\n routerState.resolvedLocation !== routerState.location\n ) {\n router.emit({\n type: 'onResolved',\n fromLocation: routerState.resolvedLocation,\n toLocation: routerState.location,\n pathChanged:\n routerState.location!.href !== routerState.resolvedLocation?.href,\n })\n\n if ((document as any).querySelector) {\n if (routerState.location.hash !== '') {\n const el = document.getElementById(\n routerState.location.hash,\n ) as HTMLElement | null\n if (el) {\n el.scrollIntoView()\n }\n }\n }\n\n router.__store.setState((s) => ({\n ...s,\n isTransitioning: false,\n resolvedLocation: s.location,\n }))\n }\n }, [\n routerState.isTransitioning,\n isTransitioning,\n routerState.isLoading,\n routerState.resolvedLocation,\n routerState.location,\n ])\n\n useLayoutEffect(() => {\n if (!window.__TSR_DEHYDRATED__) {\n tryLoad()\n }\n }, [])\n\n return null\n}\n\nexport function getRouteMatch<TRouteTree extends AnyRoute>(\n state: RouterState<TRouteTree>,\n id: string,\n): undefined | RouteMatch<TRouteTree> {\n return [\n ...state.cachedMatches,\n ...(state.pendingMatches ?? []),\n ...state.matches,\n ].find((d) => d.id === id)\n}\n\nexport function useRouterState<\n TSelected = RouterState<RegisteredRouter['routeTree']>,\n>(opts?: {\n select: (state: RouterState<RegisteredRouter['routeTree']>) => TSelected\n}): TSelected {\n const router = useRouter()\n return useStore(router.__store, opts?.select as any)\n}\n\nexport type RouterProps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {\n router: Router<TRouteTree>\n context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>\n}\n\nexport function useRouter<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>(): Router<TRouteTree> {\n const resolvedContext =\n typeof document !== 'undefined'\n ? window.__TSR_ROUTER_CONTEXT__ || routerContext\n : routerContext\n const value = React.useContext(resolvedContext)\n warning(value, 'useRouter must be used inside a <RouterProvider> component!')\n return value as any\n}\n"],"names":["routerContext","React","createContext","document","window","__TSR_ROUTER_CONTEXT__","RouterProvider","router","rest","update","options","context","matches","InnerWrap","createElement","Matches","provider","Provider","value","Transitioner","Wrap","useRouter","routerState","useRouterState","select","s","pick","isTransitioning","startReactTransition","useTransition","useEffect","__store","setState","tryLoad","apply","cb","load","err","console","error","useLayoutEffect","unsub","history","subscribe","latestLocation","parseLocation","location","nextLocation","buildLocation","search","params","hash","state","href","commitLocation","replace","isLoading","resolvedLocation","emit","type","fromLocation","toLocation","pathChanged","querySelector","el","getElementById","scrollIntoView","__TSR_DEHYDRATED__","getRouteMatch","id","cachedMatches","pendingMatches","find","d","opts","useStore","resolvedContext","useContext","warning"],"mappings":"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"}
1
+ {"version":3,"file":"RouterProvider.js","sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import * as React from 'react'\nimport warning from 'tiny-warning'\nimport { useStore } from '@tanstack/react-store'\nimport { Matches } from './Matches'\nimport { NavigateOptions, ResolveRelativePath, ToOptions } from './link'\nimport { ParsedLocation } from './location'\nimport { AnyRoute } from './route'\nimport { RouteById, RoutePaths } from './routeInfo'\nimport {\n BuildNextOptions,\n RegisteredRouter,\n Router,\n RouterOptions,\n RouterState,\n} from './router'\nimport { NoInfer, pick, useLayoutEffect } from './utils'\nimport { MatchRouteOptions } from './Matches'\nimport { RouteMatch } from './Matches'\n\nexport interface CommitLocationOptions {\n replace?: boolean\n resetScroll?: boolean\n startTransition?: boolean\n}\n\nexport interface MatchLocation {\n to?: string | number | null\n fuzzy?: boolean\n caseSensitive?: boolean\n from?: string\n}\n\nexport type NavigateFn<TRouteTree extends AnyRoute> = <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n>(\n opts: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Promise<void>\n\nexport type MatchRouteFn<TRouteTree extends AnyRoute> = <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TResolved = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n>(\n location: ToOptions<TRouteTree, TFrom, TTo>,\n opts?: MatchRouteOptions,\n) => false | RouteById<TRouteTree, TResolved>['types']['allParams']\n\nexport type BuildLocationFn<TRouteTree extends AnyRoute> = (\n opts: ToOptions<TRouteTree>,\n) => ParsedLocation\n\nexport type InjectedHtmlEntry = string | (() => Promise<string> | string)\n\nexport let routerContext = React.createContext<Router<any>>(null!)\n\nif (typeof document !== 'undefined') {\n if (window.__TSR_ROUTER_CONTEXT__) {\n routerContext = window.__TSR_ROUTER_CONTEXT__\n } else {\n window.__TSR_ROUTER_CONTEXT__ = routerContext as any\n }\n}\n\nexport function RouterProvider<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router, ...rest }: RouterProps<TRouteTree, TDehydrated>) {\n // Allow the router to update options on the router instance\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest?.context,\n },\n } as any)\n\n const matches = router.options.InnerWrap ? (\n <router.options.InnerWrap>\n <Matches />\n </router.options.InnerWrap>\n ) : (\n <Matches />\n )\n\n const provider = (\n <routerContext.Provider value={router}>\n {matches}\n <Transitioner />\n </routerContext.Provider>\n )\n\n if (router.options.Wrap) {\n return <router.options.Wrap>{provider}</router.options.Wrap>\n }\n\n return provider\n}\n\nfunction Transitioner() {\n const mountLoadCount = React.useRef(0)\n const router = useRouter()\n const routerState = useRouterState({\n select: (s) =>\n pick(s, ['isLoading', 'location', 'resolvedLocation', 'isTransitioning']),\n })\n\n const [isTransitioning, startReactTransition] = React.useTransition()\n\n router.startReactTransition = startReactTransition\n\n React.useEffect(() => {\n if (isTransitioning) {\n router.__store.setState((s) => ({\n ...s,\n isTransitioning,\n }))\n }\n }, [isTransitioning])\n\n const tryLoad = () => {\n const apply = (cb: () => void) => {\n if (!routerState.isTransitioning) {\n startReactTransition(() => cb())\n } else {\n cb()\n }\n }\n\n apply(() => {\n try {\n router.load()\n } catch (err) {\n console.error(err)\n }\n })\n }\n\n useLayoutEffect(() => {\n const unsub = router.history.subscribe(() => {\n router.latestLocation = router.parseLocation(router.latestLocation)\n if (routerState.location !== router.latestLocation) {\n tryLoad()\n }\n })\n\n const nextLocation = router.buildLocation({\n search: true,\n params: true,\n hash: true,\n state: true,\n })\n\n if (routerState.location.href !== nextLocation.href) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n return () => {\n unsub()\n }\n }, [router.history])\n\n useLayoutEffect(() => {\n if (\n routerState.isTransitioning &&\n !isTransitioning &&\n !routerState.isLoading &&\n routerState.resolvedLocation !== routerState.location\n ) {\n router.emit({\n type: 'onResolved',\n fromLocation: routerState.resolvedLocation,\n toLocation: routerState.location,\n pathChanged:\n routerState.location!.href !== routerState.resolvedLocation?.href,\n })\n\n if ((document as any).querySelector) {\n if (routerState.location.hash !== '') {\n const el = document.getElementById(\n routerState.location.hash,\n ) as HTMLElement | null\n if (el) {\n el.scrollIntoView()\n }\n }\n }\n\n router.__store.setState((s) => ({\n ...s,\n isTransitioning: false,\n resolvedLocation: s.location,\n }))\n }\n }, [\n routerState.isTransitioning,\n isTransitioning,\n routerState.isLoading,\n routerState.resolvedLocation,\n routerState.location,\n ])\n\n useLayoutEffect(() => {\n if (!window.__TSR_DEHYDRATED__ && !mountLoadCount.current) {\n mountLoadCount.current++\n tryLoad()\n }\n }, [])\n\n return null\n}\n\nexport function getRouteMatch<TRouteTree extends AnyRoute>(\n state: RouterState<TRouteTree>,\n id: string,\n): undefined | RouteMatch<TRouteTree> {\n return [\n ...state.cachedMatches,\n ...(state.pendingMatches ?? []),\n ...state.matches,\n ].find((d) => d.id === id)\n}\n\nexport function useRouterState<\n TSelected = RouterState<RegisteredRouter['routeTree']>,\n>(opts?: {\n select: (state: RouterState<RegisteredRouter['routeTree']>) => TSelected\n}): TSelected {\n const router = useRouter()\n return useStore(router.__store, opts?.select as any)\n}\n\nexport type RouterProps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {\n router: Router<TRouteTree>\n context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>\n}\n\nexport function useRouter<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>(): Router<TRouteTree> {\n const resolvedContext =\n typeof document !== 'undefined'\n ? window.__TSR_ROUTER_CONTEXT__ || routerContext\n : routerContext\n const value = React.useContext(resolvedContext)\n warning(value, 'useRouter must be used inside a <RouterProvider> component!')\n return value as any\n}\n"],"names":["routerContext","React","createContext","document","window","__TSR_ROUTER_CONTEXT__","RouterProvider","router","rest","update","options","context","matches","InnerWrap","createElement","Matches","provider","Provider","value","Transitioner","Wrap","mountLoadCount","useRef","useRouter","routerState","useRouterState","select","s","pick","isTransitioning","startReactTransition","useTransition","useEffect","__store","setState","tryLoad","apply","cb","load","err","console","error","useLayoutEffect","unsub","history","subscribe","latestLocation","parseLocation","location","nextLocation","buildLocation","search","params","hash","state","href","commitLocation","replace","isLoading","resolvedLocation","emit","type","fromLocation","toLocation","pathChanged","querySelector","el","getElementById","scrollIntoView","__TSR_DEHYDRATED__","current","getRouteMatch","id","cachedMatches","pendingMatches","find","d","opts","useStore","resolvedContext","useContext","warning"],"mappings":"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"}
@@ -517,6 +517,7 @@ function RouterProvider({
517
517
  return provider;
518
518
  }
519
519
  function Transitioner() {
520
+ const mountLoadCount = React.useRef(0);
520
521
  const router = useRouter();
521
522
  const routerState = useRouterState({
522
523
  select: s => pick(s, ['isLoading', 'location', 'resolvedLocation', 'isTransitioning'])
@@ -594,7 +595,8 @@ function Transitioner() {
594
595
  }
595
596
  }, [routerState.isTransitioning, isTransitioning, routerState.isLoading, routerState.resolvedLocation, routerState.location]);
596
597
  useLayoutEffect$1(() => {
597
- if (!window.__TSR_DEHYDRATED__) {
598
+ if (!window.__TSR_DEHYDRATED__ && !mountLoadCount.current) {
599
+ mountLoadCount.current++;
598
600
  tryLoad();
599
601
  }
600
602
  }, []);