@tanstack/react-router 0.0.1-beta.233 → 0.0.1-beta.234

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.
@@ -75,20 +75,20 @@ function RouterProviderInner({
75
75
  router.state = state;
76
76
  router.startReactTransition = startReactTransition;
77
77
  const tryLoad = () => {
78
- if (state.location !== router.latestLocation) {
79
- startReactTransition(() => {
80
- try {
81
- router.load();
82
- } catch (err) {
83
- console.error(err);
84
- }
85
- });
86
- }
78
+ startReactTransition(() => {
79
+ try {
80
+ router.load();
81
+ } catch (err) {
82
+ console.error(err);
83
+ }
84
+ });
87
85
  };
88
86
  utils.useLayoutEffect(() => {
89
87
  const unsub = router.history.subscribe(() => {
90
88
  router.latestLocation = router.parseLocation(router.latestLocation);
91
- tryLoad();
89
+ if (state.location !== router.latestLocation) {
90
+ tryLoad();
91
+ }
92
92
  });
93
93
  const nextLocation = router.buildLocation({
94
94
  search: true,
@@ -1 +1 @@
1
- {"version":3,"file":"RouterProvider.js","sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import * as React from 'react'\nimport warning from 'tiny-warning'\nimport { Matches } from './Matches'\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptions,\n ResolveRelativePath,\n ToOptions,\n} 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, PickAsRequired, 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 BuildLinkFn<TRouteTree extends AnyRoute> = <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n>(\n dest: LinkOptions<TRouteTree, TFrom, TTo>,\n) => LinkInfo\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: BuildNextOptions,\n) => ParsedLocation\n\nexport type InjectedHtmlEntry = string | (() => Promise<string> | string)\n\nexport const routerContext = React.createContext<Router<any>>(null!)\n\nif (typeof document !== 'undefined') {\n window.__TSR_ROUTER_CONTEXT__ = routerContext as any\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 inner = <RouterProviderInner<TRouteTree, TDehydrated> router={router} />\n\n if (router.options.Wrap) {\n return <router.options.Wrap>{inner}</router.options.Wrap>\n }\n\n return inner\n}\n\nfunction RouterProviderInner<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router }: RouterProps<TRouteTree, TDehydrated>) {\n const [preState, setState] = React.useState(() => router.state)\n const [isTransitioning, startReactTransition] = React.useTransition()\n const isAnyTransitioning =\n isTransitioning || preState.matches.some((d) => d.status === 'pending')\n\n const state = React.useMemo<RouterState<TRouteTree>>(\n () => ({\n ...preState,\n status: isAnyTransitioning ? 'pending' : 'idle',\n location: isTransitioning ? router.latestLocation : preState.location,\n pendingMatches: router.pendingMatches,\n }),\n [preState, isTransitioning],\n )\n\n router.setState = setState\n router.state = state\n router.startReactTransition = startReactTransition\n\n const tryLoad = () => {\n if (state.location !== router.latestLocation) {\n startReactTransition(() => {\n try {\n router.load()\n } catch (err) {\n console.error(err)\n }\n })\n }\n }\n\n useLayoutEffect(() => {\n const unsub = router.history.subscribe(() => {\n router.latestLocation = router.parseLocation(router.latestLocation)\n tryLoad()\n })\n\n const nextLocation = router.buildLocation({\n search: true,\n params: true,\n hash: true,\n state: true,\n })\n\n if (state.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 (!isTransitioning && state.resolvedLocation !== state.location) {\n router.emit({\n type: 'onResolved',\n fromLocation: state.resolvedLocation,\n toLocation: state.location,\n pathChanged: state.location!.href !== state.resolvedLocation?.href,\n })\n router.pendingMatches = []\n\n setState((s) => ({\n ...s,\n resolvedLocation: s.location,\n }))\n }\n })\n\n useLayoutEffect(() => {\n if (!window.__TSR_DEHYDRATED__) {\n tryLoad()\n }\n }, [])\n\n return (\n <routerContext.Provider value={router}>\n <Matches />\n </routerContext.Provider>\n )\n}\n\nexport function getRouteMatch<TRouteTree extends AnyRoute>(\n state: RouterState<TRouteTree>,\n id: string,\n): undefined | RouteMatch<TRouteTree> {\n return [...state.pendingMatches, ...state.matches].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 { state } = useRouter()\n // return useStore(router.__store, opts?.select as any)\n return opts?.select ? opts.select(state) : (state 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","inner","createElement","RouterProviderInner","Wrap","preState","setState","useState","state","isTransitioning","startReactTransition","useTransition","isAnyTransitioning","matches","some","d","status","useMemo","location","latestLocation","pendingMatches","tryLoad","load","err","console","error","useLayoutEffect","unsub","history","subscribe","parseLocation","nextLocation","buildLocation","search","params","hash","href","commitLocation","replace","resolvedLocation","emit","type","fromLocation","toLocation","pathChanged","s","__TSR_DEHYDRATED__","Provider","value","Matches","getRouteMatch","id","find","useRouterState","opts","useRouter","select","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 { Matches } from './Matches'\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptions,\n ResolveRelativePath,\n ToOptions,\n} 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, PickAsRequired, 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 BuildLinkFn<TRouteTree extends AnyRoute> = <\n TFrom extends RoutePaths<TRouteTree> = '/',\n TTo extends string = '',\n>(\n dest: LinkOptions<TRouteTree, TFrom, TTo>,\n) => LinkInfo\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: BuildNextOptions,\n) => ParsedLocation\n\nexport type InjectedHtmlEntry = string | (() => Promise<string> | string)\n\nexport const routerContext = React.createContext<Router<any>>(null!)\n\nif (typeof document !== 'undefined') {\n window.__TSR_ROUTER_CONTEXT__ = routerContext as any\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 inner = <RouterProviderInner<TRouteTree, TDehydrated> router={router} />\n\n if (router.options.Wrap) {\n return <router.options.Wrap>{inner}</router.options.Wrap>\n }\n\n return inner\n}\n\nfunction RouterProviderInner<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router }: RouterProps<TRouteTree, TDehydrated>) {\n const [preState, setState] = React.useState(() => router.state)\n const [isTransitioning, startReactTransition] = React.useTransition()\n const isAnyTransitioning =\n isTransitioning || preState.matches.some((d) => d.status === 'pending')\n\n const state = React.useMemo<RouterState<TRouteTree>>(\n () => ({\n ...preState,\n status: isAnyTransitioning ? 'pending' : 'idle',\n location: isTransitioning ? router.latestLocation : preState.location,\n pendingMatches: router.pendingMatches,\n }),\n [preState, isTransitioning],\n )\n\n router.setState = setState\n router.state = state\n router.startReactTransition = startReactTransition\n\n const tryLoad = () => {\n startReactTransition(() => {\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 (state.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 (state.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 (!isTransitioning && state.resolvedLocation !== state.location) {\n router.emit({\n type: 'onResolved',\n fromLocation: state.resolvedLocation,\n toLocation: state.location,\n pathChanged: state.location!.href !== state.resolvedLocation?.href,\n })\n router.pendingMatches = []\n\n setState((s) => ({\n ...s,\n resolvedLocation: s.location,\n }))\n }\n })\n\n useLayoutEffect(() => {\n if (!window.__TSR_DEHYDRATED__) {\n tryLoad()\n }\n }, [])\n\n return (\n <routerContext.Provider value={router}>\n <Matches />\n </routerContext.Provider>\n )\n}\n\nexport function getRouteMatch<TRouteTree extends AnyRoute>(\n state: RouterState<TRouteTree>,\n id: string,\n): undefined | RouteMatch<TRouteTree> {\n return [...state.pendingMatches, ...state.matches].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 { state } = useRouter()\n // return useStore(router.__store, opts?.select as any)\n return opts?.select ? opts.select(state) : (state 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","inner","createElement","RouterProviderInner","Wrap","preState","setState","useState","state","isTransitioning","startReactTransition","useTransition","isAnyTransitioning","matches","some","d","status","useMemo","location","latestLocation","pendingMatches","tryLoad","load","err","console","error","useLayoutEffect","unsub","history","subscribe","parseLocation","nextLocation","buildLocation","search","params","hash","href","commitLocation","replace","resolvedLocation","emit","type","fromLocation","toLocation","pathChanged","s","__TSR_DEHYDRATED__","Provider","value","Matches","getRouteMatch","id","find","useRouterState","opts","useRouter","select","resolvedContext","useContext","warning"],"mappings":"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"}
@@ -834,20 +834,20 @@ function RouterProviderInner({
834
834
  router.state = state;
835
835
  router.startReactTransition = startReactTransition;
836
836
  const tryLoad = () => {
837
- if (state.location !== router.latestLocation) {
838
- startReactTransition(() => {
839
- try {
840
- router.load();
841
- } catch (err) {
842
- console.error(err);
843
- }
844
- });
845
- }
837
+ startReactTransition(() => {
838
+ try {
839
+ router.load();
840
+ } catch (err) {
841
+ console.error(err);
842
+ }
843
+ });
846
844
  };
847
845
  useLayoutEffect$1(() => {
848
846
  const unsub = router.history.subscribe(() => {
849
847
  router.latestLocation = router.parseLocation(router.latestLocation);
850
- tryLoad();
848
+ if (state.location !== router.latestLocation) {
849
+ tryLoad();
850
+ }
851
851
  });
852
852
  const nextLocation = router.buildLocation({
853
853
  search: true,