@tanstack/react-router 0.0.1-beta.239 → 0.0.1-beta.240

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.
@@ -40,7 +40,7 @@ function Matches() {
40
40
  const router = RouterProvider.useRouter();
41
41
  const routerState = RouterProvider.useRouterState();
42
42
  const matches = routerState.pendingMatches?.some(d => d.showPending) ? routerState.pendingMatches : routerState.matches;
43
- const locationKey = router.latestLocation.state.key;
43
+ const locationKey = routerState.resolvedLocation.state.key;
44
44
  const route$1 = router.routesById[route.rootRouteId];
45
45
  const errorComponent = React__namespace.useCallback(props => {
46
46
  return /*#__PURE__*/React__namespace.createElement(CatchBoundary.ErrorComponent, {
@@ -76,10 +76,8 @@ function Match({
76
76
  const match = matches[0];
77
77
  const routeId = match?.routeId;
78
78
  const route = routesById[routeId];
79
- const router = RouterProvider.useRouter();
80
- const locationKey = router.latestLocation.state?.key;
81
- // const locationKey = useRouterState().location.state?.key
82
-
79
+ RouterProvider.useRouter();
80
+ const locationKey = RouterProvider.useRouterState().resolvedLocation.state?.key;
83
81
  const PendingComponent = route.options.pendingComponent ?? options.defaultPendingComponent;
84
82
  const pendingElement = PendingComponent ? /*#__PURE__*/React__namespace.createElement(PendingComponent, {
85
83
  useMatch: route.useMatch,
@@ -1 +1 @@
1
- {"version":3,"file":"Matches.js","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouter, useRouterState } from './RouterProvider'\nimport { ResolveRelativePath, ToOptions } from './link'\nimport { AnyRoute, ReactNode, rootRouteId } from './route'\nimport {\n FullSearchSchema,\n ParseRoute,\n RouteById,\n RouteByPath,\n RouteIds,\n RoutePaths,\n} from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { NoInfer, StrictOrFrom, pick } from './utils'\n\nexport interface RouteMatch<\n TRouteTree extends AnyRoute = AnyRoute,\n TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],\n> {\n id: string\n routeId: TRouteId\n pathname: string\n params: RouteById<TRouteTree, TRouteId>['types']['allParams']\n status: 'pending' | 'success' | 'error'\n isFetching: boolean\n showPending: boolean\n invalid: boolean\n error: unknown\n paramsError: unknown\n searchError: unknown\n updatedAt: number\n loadPromise?: Promise<void>\n loaderData?: RouteById<TRouteTree, TRouteId>['types']['loaderData']\n __resolveLoadPromise?: () => void\n context: RouteById<TRouteTree, TRouteId>['types']['allContext']\n search: FullSearchSchema<TRouteTree> &\n RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema']\n fetchedAt: number\n shouldReloadDeps: any\n abortController: AbortController\n cause: 'enter' | 'stay'\n}\n\nexport type AnyRouteMatch = RouteMatch<any>\n\nexport function Matches() {\n const router = useRouter()\n const routerState = useRouterState()\n const matches = routerState.pendingMatches?.some((d) => d.showPending)\n ? routerState.pendingMatches\n : routerState.matches\n const locationKey = router.latestLocation.state.key\n const route = router.routesById[rootRouteId]!\n\n const errorComponent = React.useCallback(\n (props: any) => {\n return React.createElement(ErrorComponent, {\n ...props,\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n },\n [route],\n )\n\n return (\n <matchesContext.Provider value={matches}>\n <CatchBoundary\n resetKey={locationKey}\n errorComponent={errorComponent}\n onCatch={() => {\n warning(\n false,\n `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`,\n )\n }}\n >\n {matches.length ? <Match matches={matches} /> : null}\n </CatchBoundary>\n </matchesContext.Provider>\n )\n}\n\nfunction SafeFragment(props: any) {\n return <>{props.children}</>\n}\n\nexport function Match({ matches }: { matches: RouteMatch[] }) {\n const { options, routesById } = useRouter()\n const match = matches[0]!\n const routeId = match?.routeId\n const route = routesById[routeId]!\n const router = useRouter()\n const locationKey = router.latestLocation.state?.key\n // const locationKey = useRouterState().location.state?.key\n\n const PendingComponent = (route.options.pendingComponent ??\n options.defaultPendingComponent) as any\n\n const pendingElement = PendingComponent\n ? React.createElement(PendingComponent, {\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n : undefined\n\n const routeErrorComponent =\n route.options.errorComponent ??\n options.defaultErrorComponent ??\n ErrorComponent\n\n const ResolvedSuspenseBoundary =\n route.options.wrapInSuspense ?? pendingElement\n ? React.Suspense\n : SafeFragment\n\n const errorComponent = routeErrorComponent\n ? React.useCallback(\n (props: any) => {\n return React.createElement(routeErrorComponent, {\n ...props,\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n },\n [route],\n )\n : undefined\n\n const ResolvedCatchBoundary = errorComponent ? CatchBoundary : SafeFragment\n\n return (\n <matchesContext.Provider value={matches}>\n <ResolvedSuspenseBoundary fallback={pendingElement}>\n <ResolvedCatchBoundary\n resetKey={locationKey}\n errorComponent={errorComponent}\n onCatch={() => {\n warning(false, `Error in route match: ${match.id}`)\n }}\n >\n <MatchInner match={match} pendingElement={pendingElement} />\n </ResolvedCatchBoundary>\n </ResolvedSuspenseBoundary>\n </matchesContext.Provider>\n )\n}\nfunction MatchInner({\n match,\n pendingElement,\n}: {\n match: RouteMatch\n pendingElement: any\n}): any {\n const { options, routesById } = useRouter()\n const route = routesById[match.routeId]!\n\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'pending') {\n if (match.showPending) {\n return pendingElement || null\n }\n throw match.loadPromise\n }\n\n if (match.status === 'success') {\n let comp = route.options.component ?? options.defaultComponent\n\n if (comp) {\n return React.createElement(comp, {\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext as any,\n useSearch: route.useSearch,\n useParams: route.useParams as any,\n useLoaderData: route.useLoaderData,\n })\n }\n\n return <Outlet />\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n}\n\nexport function Outlet() {\n const matches = React.useContext(matchesContext).slice(1)\n\n if (!matches[0]) {\n return null\n }\n\n return <Match matches={matches} />\n}\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n fuzzy?: boolean\n}\n\nexport type MakeUseMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<AnyRoute, TFrom, TTo, TMaskFrom, TMaskTo> & MatchRouteOptions\n\nexport function useMatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>() {\n const { matchRoute } = useRouter()\n\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n >(\n opts: MakeUseMatchRouteOptions<\n TRouteTree,\n TFrom,\n TTo,\n TMaskFrom,\n TMaskTo\n >,\n ): false | RouteById<TRouteTree, TResolved>['types']['allParams'] => {\n const { pending, caseSensitive, ...rest } = opts\n\n return matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n },\n [],\n )\n}\n\nexport type MakeMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n MatchRouteOptions & {\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 TRouteTree,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n }\n\nexport function MatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n>(\n props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any)\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return !!params ? props.children : null\n}\n\nexport function useMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteMatchState = RouteMatch<TRouteTree, TFrom>,\n TSelected = TRouteMatchState,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatchState) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n const nearestMatch = React.useContext(matchesContext)[0]!\n const nearestMatchRouteId = nearestMatch?.routeId\n\n const matchRouteId = useRouterState({\n select: (state) => {\n const matches = state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatch.id)\n\n return match!.routeId\n },\n })\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatchRouteId == matchRouteId,\n `useMatch(\"${\n matchRouteId as string\n }\") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch(\"${\n matchRouteId as string\n }\", { strict: false })' or 'useRoute(\"${\n matchRouteId as string\n }\")' instead?`,\n )\n }\n\n const matchSelection = useRouterState({\n select: (state) => {\n const matches = state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatch.id)\n\n invariant(\n match,\n `Could not find ${\n opts?.from\n ? `an active match from \"${opts.from}\"`\n : 'a nearest match!'\n }`,\n )\n\n return opts?.select ? opts.select(match as any) : match\n },\n })\n\n return matchSelection as any\n}\n\nexport const matchesContext = React.createContext<RouteMatch[]>(null!)\n\nexport function useMatches<T = RouteMatch[]>(opts?: {\n select?: (matches: RouteMatch[]) => T\n}): T {\n const contextMatches = React.useContext(matchesContext)\n\n return useRouterState({\n select: (state) => {\n let matches = state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n\n matches = matches.slice(\n matches.findIndex((d) => d.id === contextMatches[0]?.id),\n )\n return opts?.select ? opts.select(matches) : (matches as T)\n },\n })\n}\n\nexport function useLoaderData<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = TRouteMatch['loaderData'],\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n const match = useMatch({ ...opts, select: undefined })!\n\n return typeof opts.select === 'function'\n ? opts.select(match?.loaderData)\n : match?.loaderData\n}\n"],"names":["Matches","router","useRouter","routerState","useRouterState","matches","pendingMatches","some","d","showPending","locationKey","latestLocation","state","key","route","routesById","rootRouteId","errorComponent","React","useCallback","props","createElement","ErrorComponent","useMatch","useRouteContext","useSearch","useParams","matchesContext","Provider","value","CatchBoundary","resetKey","onCatch","warning","length","Match","SafeFragment","Fragment","children","options","match","routeId","PendingComponent","pendingComponent","defaultPendingComponent","pendingElement","undefined","routeErrorComponent","defaultErrorComponent","ResolvedSuspenseBoundary","wrapInSuspense","Suspense","ResolvedCatchBoundary","fallback","id","MatchInner","status","error","loadPromise","comp","component","defaultComponent","useLoaderData","Outlet","invariant","useContext","slice","useMatchRoute","matchRoute","opts","pending","caseSensitive","rest","MatchRoute","params","nearestMatch","nearestMatchRouteId","matchRouteId","select","from","find","strict","matchSelection","createContext","useMatches","contextMatches","findIndex","loaderData"],"mappings":"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"}
1
+ {"version":3,"file":"Matches.js","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouter, useRouterState } from './RouterProvider'\nimport { ResolveRelativePath, ToOptions } from './link'\nimport { AnyRoute, ReactNode, rootRouteId } from './route'\nimport {\n FullSearchSchema,\n ParseRoute,\n RouteById,\n RouteByPath,\n RouteIds,\n RoutePaths,\n} from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { NoInfer, StrictOrFrom, pick } from './utils'\n\nexport interface RouteMatch<\n TRouteTree extends AnyRoute = AnyRoute,\n TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],\n> {\n id: string\n routeId: TRouteId\n pathname: string\n params: RouteById<TRouteTree, TRouteId>['types']['allParams']\n status: 'pending' | 'success' | 'error'\n isFetching: boolean\n showPending: boolean\n invalid: boolean\n error: unknown\n paramsError: unknown\n searchError: unknown\n updatedAt: number\n loadPromise?: Promise<void>\n loaderData?: RouteById<TRouteTree, TRouteId>['types']['loaderData']\n __resolveLoadPromise?: () => void\n context: RouteById<TRouteTree, TRouteId>['types']['allContext']\n search: FullSearchSchema<TRouteTree> &\n RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema']\n fetchedAt: number\n shouldReloadDeps: any\n abortController: AbortController\n cause: 'enter' | 'stay'\n}\n\nexport type AnyRouteMatch = RouteMatch<any>\n\nexport function Matches() {\n const router = useRouter()\n const routerState = useRouterState()\n const matches = routerState.pendingMatches?.some((d) => d.showPending)\n ? routerState.pendingMatches\n : routerState.matches\n const locationKey = routerState.resolvedLocation.state.key\n const route = router.routesById[rootRouteId]!\n\n const errorComponent = React.useCallback(\n (props: any) => {\n return React.createElement(ErrorComponent, {\n ...props,\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n },\n [route],\n )\n\n return (\n <matchesContext.Provider value={matches}>\n <CatchBoundary\n resetKey={locationKey}\n errorComponent={errorComponent}\n onCatch={() => {\n warning(\n false,\n `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`,\n )\n }}\n >\n {matches.length ? <Match matches={matches} /> : null}\n </CatchBoundary>\n </matchesContext.Provider>\n )\n}\n\nfunction SafeFragment(props: any) {\n return <>{props.children}</>\n}\n\nexport function Match({ matches }: { matches: RouteMatch[] }) {\n const { options, routesById } = useRouter()\n const match = matches[0]!\n const routeId = match?.routeId\n const route = routesById[routeId]!\n const router = useRouter()\n const locationKey = useRouterState().resolvedLocation.state?.key\n\n const PendingComponent = (route.options.pendingComponent ??\n options.defaultPendingComponent) as any\n\n const pendingElement = PendingComponent\n ? React.createElement(PendingComponent, {\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n : undefined\n\n const routeErrorComponent =\n route.options.errorComponent ??\n options.defaultErrorComponent ??\n ErrorComponent\n\n const ResolvedSuspenseBoundary =\n route.options.wrapInSuspense ?? pendingElement\n ? React.Suspense\n : SafeFragment\n\n const errorComponent = routeErrorComponent\n ? React.useCallback(\n (props: any) => {\n return React.createElement(routeErrorComponent, {\n ...props,\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n },\n [route],\n )\n : undefined\n\n const ResolvedCatchBoundary = errorComponent ? CatchBoundary : SafeFragment\n\n return (\n <matchesContext.Provider value={matches}>\n <ResolvedSuspenseBoundary fallback={pendingElement}>\n <ResolvedCatchBoundary\n resetKey={locationKey}\n errorComponent={errorComponent}\n onCatch={() => {\n warning(false, `Error in route match: ${match.id}`)\n }}\n >\n <MatchInner match={match} pendingElement={pendingElement} />\n </ResolvedCatchBoundary>\n </ResolvedSuspenseBoundary>\n </matchesContext.Provider>\n )\n}\nfunction MatchInner({\n match,\n pendingElement,\n}: {\n match: RouteMatch\n pendingElement: any\n}): any {\n const { options, routesById } = useRouter()\n const route = routesById[match.routeId]!\n\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'pending') {\n if (match.showPending) {\n return pendingElement || null\n }\n throw match.loadPromise\n }\n\n if (match.status === 'success') {\n let comp = route.options.component ?? options.defaultComponent\n\n if (comp) {\n return React.createElement(comp, {\n useMatch: route.useMatch,\n useRouteContext: route.useRouteContext as any,\n useSearch: route.useSearch,\n useParams: route.useParams as any,\n useLoaderData: route.useLoaderData,\n })\n }\n\n return <Outlet />\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n}\n\nexport function Outlet() {\n const matches = React.useContext(matchesContext).slice(1)\n\n if (!matches[0]) {\n return null\n }\n\n return <Match matches={matches} />\n}\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n fuzzy?: boolean\n}\n\nexport type MakeUseMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<AnyRoute, TFrom, TTo, TMaskFrom, TMaskTo> & MatchRouteOptions\n\nexport function useMatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>() {\n const { matchRoute } = useRouter()\n\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n >(\n opts: MakeUseMatchRouteOptions<\n TRouteTree,\n TFrom,\n TTo,\n TMaskFrom,\n TMaskTo\n >,\n ): false | RouteById<TRouteTree, TResolved>['types']['allParams'] => {\n const { pending, caseSensitive, ...rest } = opts\n\n return matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n },\n [],\n )\n}\n\nexport type MakeMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n MatchRouteOptions & {\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 TRouteTree,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n }\n\nexport function MatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n>(\n props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any)\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return !!params ? props.children : null\n}\n\nexport function useMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteMatchState = RouteMatch<TRouteTree, TFrom>,\n TSelected = TRouteMatchState,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatchState) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n const nearestMatch = React.useContext(matchesContext)[0]!\n const nearestMatchRouteId = nearestMatch?.routeId\n\n const matchRouteId = useRouterState({\n select: (state) => {\n const matches = state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatch.id)\n\n return match!.routeId\n },\n })\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatchRouteId == matchRouteId,\n `useMatch(\"${\n matchRouteId as string\n }\") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch(\"${\n matchRouteId as string\n }\", { strict: false })' or 'useRoute(\"${\n matchRouteId as string\n }\")' instead?`,\n )\n }\n\n const matchSelection = useRouterState({\n select: (state) => {\n const matches = state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatch.id)\n\n invariant(\n match,\n `Could not find ${\n opts?.from\n ? `an active match from \"${opts.from}\"`\n : 'a nearest match!'\n }`,\n )\n\n return opts?.select ? opts.select(match as any) : match\n },\n })\n\n return matchSelection as any\n}\n\nexport const matchesContext = React.createContext<RouteMatch[]>(null!)\n\nexport function useMatches<T = RouteMatch[]>(opts?: {\n select?: (matches: RouteMatch[]) => T\n}): T {\n const contextMatches = React.useContext(matchesContext)\n\n return useRouterState({\n select: (state) => {\n let matches = state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n\n matches = matches.slice(\n matches.findIndex((d) => d.id === contextMatches[0]?.id),\n )\n return opts?.select ? opts.select(matches) : (matches as T)\n },\n })\n}\n\nexport function useLoaderData<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = TRouteMatch['loaderData'],\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n const match = useMatch({ ...opts, select: undefined })!\n\n return typeof opts.select === 'function'\n ? opts.select(match?.loaderData)\n : match?.loaderData\n}\n"],"names":["Matches","router","useRouter","routerState","useRouterState","matches","pendingMatches","some","d","showPending","locationKey","resolvedLocation","state","key","route","routesById","rootRouteId","errorComponent","React","useCallback","props","createElement","ErrorComponent","useMatch","useRouteContext","useSearch","useParams","matchesContext","Provider","value","CatchBoundary","resetKey","onCatch","warning","length","Match","SafeFragment","Fragment","children","options","match","routeId","PendingComponent","pendingComponent","defaultPendingComponent","pendingElement","undefined","routeErrorComponent","defaultErrorComponent","ResolvedSuspenseBoundary","wrapInSuspense","Suspense","ResolvedCatchBoundary","fallback","id","MatchInner","status","error","loadPromise","comp","component","defaultComponent","useLoaderData","Outlet","invariant","useContext","slice","useMatchRoute","matchRoute","opts","pending","caseSensitive","rest","MatchRoute","params","nearestMatch","nearestMatchRouteId","matchRouteId","select","from","find","strict","matchSelection","createContext","useMatches","contextMatches","findIndex","loaderData"],"mappings":"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"}
@@ -612,7 +612,7 @@ function Matches() {
612
612
  const router = useRouter();
613
613
  const routerState = useRouterState();
614
614
  const matches = routerState.pendingMatches?.some(d => d.showPending) ? routerState.pendingMatches : routerState.matches;
615
- const locationKey = router.latestLocation.state.key;
615
+ const locationKey = routerState.resolvedLocation.state.key;
616
616
  const route = router.routesById[rootRouteId];
617
617
  const errorComponent = React.useCallback(props => {
618
618
  return /*#__PURE__*/React.createElement(ErrorComponent, {
@@ -648,10 +648,8 @@ function Match({
648
648
  const match = matches[0];
649
649
  const routeId = match?.routeId;
650
650
  const route = routesById[routeId];
651
- const router = useRouter();
652
- const locationKey = router.latestLocation.state?.key;
653
- // const locationKey = useRouterState().location.state?.key
654
-
651
+ useRouter();
652
+ const locationKey = useRouterState().resolvedLocation.state?.key;
655
653
  const PendingComponent = route.options.pendingComponent ?? options.defaultPendingComponent;
656
654
  const pendingElement = PendingComponent ? /*#__PURE__*/React.createElement(PendingComponent, {
657
655
  useMatch: route.useMatch,