@tanstack/react-router 0.0.1-beta.223 → 0.0.1-beta.225

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 (65) hide show
  1. package/build/cjs/CatchBoundary.js +3 -6
  2. package/build/cjs/CatchBoundary.js.map +1 -1
  3. package/build/cjs/Matches.js +8 -15
  4. package/build/cjs/Matches.js.map +1 -1
  5. package/build/cjs/RouterProvider.js +61 -968
  6. package/build/cjs/RouterProvider.js.map +1 -1
  7. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +1 -3
  8. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  9. package/build/cjs/awaited.js +0 -2
  10. package/build/cjs/awaited.js.map +1 -1
  11. package/build/cjs/defer.js +0 -2
  12. package/build/cjs/defer.js.map +1 -1
  13. package/build/cjs/fileRoute.js +0 -2
  14. package/build/cjs/fileRoute.js.map +1 -1
  15. package/build/cjs/index.js +3 -16
  16. package/build/cjs/index.js.map +1 -1
  17. package/build/cjs/lazyRouteComponent.js +3 -6
  18. package/build/cjs/lazyRouteComponent.js.map +1 -1
  19. package/build/cjs/link.js +4 -7
  20. package/build/cjs/link.js.map +1 -1
  21. package/build/cjs/path.js +0 -2
  22. package/build/cjs/path.js.map +1 -1
  23. package/build/cjs/qss.js +0 -2
  24. package/build/cjs/qss.js.map +1 -1
  25. package/build/cjs/redirects.js +0 -2
  26. package/build/cjs/redirects.js.map +1 -1
  27. package/build/cjs/route.js +2 -7
  28. package/build/cjs/route.js.map +1 -1
  29. package/build/cjs/router.js +949 -42
  30. package/build/cjs/router.js.map +1 -1
  31. package/build/cjs/scroll-restoration.js +8 -15
  32. package/build/cjs/scroll-restoration.js.map +1 -1
  33. package/build/cjs/searchParams.js +0 -2
  34. package/build/cjs/searchParams.js.map +1 -1
  35. package/build/cjs/useBlocker.js +3 -6
  36. package/build/cjs/useBlocker.js.map +1 -1
  37. package/build/cjs/useNavigate.js +3 -6
  38. package/build/cjs/useNavigate.js.map +1 -1
  39. package/build/cjs/useParams.js +0 -2
  40. package/build/cjs/useParams.js.map +1 -1
  41. package/build/cjs/useSearch.js +0 -2
  42. package/build/cjs/useSearch.js.map +1 -1
  43. package/build/cjs/utils.js +9 -6
  44. package/build/cjs/utils.js.map +1 -1
  45. package/build/esm/index.js +889 -878
  46. package/build/esm/index.js.map +1 -1
  47. package/build/stats-html.html +3494 -2700
  48. package/build/stats-react.json +374 -368
  49. package/build/types/CatchBoundary.d.ts +2 -2
  50. package/build/types/Matches.d.ts +3 -3
  51. package/build/types/RouterProvider.d.ts +4 -23
  52. package/build/types/awaited.d.ts +1 -0
  53. package/build/types/fileRoute.d.ts +4 -3
  54. package/build/types/route.d.ts +1 -0
  55. package/build/types/router.d.ts +50 -5
  56. package/build/umd/index.development.js +865 -857
  57. package/build/umd/index.development.js.map +1 -1
  58. package/build/umd/index.production.js +2 -2
  59. package/build/umd/index.production.js.map +1 -1
  60. package/package.json +2 -2
  61. package/src/RouterProvider.tsx +57 -1314
  62. package/src/fileRoute.ts +1 -1
  63. package/src/route.ts +23 -0
  64. package/src/router.ts +1320 -45
  65. package/src/scroll-restoration.tsx +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import { RouterHistory } from '@tanstack/history'\n\n//\n\nimport {\n AnySearchSchema,\n AnyRoute,\n AnyContext,\n AnyPathParams,\n RouteMask,\n} from './route'\nimport { FullSearchSchema } from './routeInfo'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport { PickAsRequired, Updater, NonNullableUpdater } from './utils'\nimport {\n ErrorRouteComponent,\n PendingRouteComponent,\n RouteComponent,\n} from './route'\nimport { RouteMatch } from './Matches'\nimport { ParsedLocation } from './location'\nimport { LocationState } from './location'\nimport { SearchSerializer, SearchParser } from './searchParams'\nimport { RouterContext } from './RouterProvider'\n\n//\n\ndeclare global {\n interface Window {\n __TSR_DEHYDRATED__?: HydrationCtx\n __TSR_ROUTER_CONTEXT__?: React.Context<RouterContext<any>>\n }\n}\n\nexport interface Register {\n // router: Router\n}\n\nexport type AnyRouter = Router<AnyRoute, any>\n\nexport type RegisteredRouter = Register extends {\n router: infer TRouter extends AnyRouter\n}\n ? TRouter\n : AnyRouter\n\nexport type HydrationCtx = {\n router: DehydratedRouter\n payload: Record<string, any>\n}\n\nexport type RouterContextOptions<TRouteTree extends AnyRoute> =\n AnyContext extends TRouteTree['types']['routerContext']\n ? {\n context?: TRouteTree['types']['routerContext']\n }\n : {\n context: TRouteTree['types']['routerContext']\n }\n\nexport interface RouterOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> {\n history?: RouterHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n defaultPreload?: false | 'intent'\n defaultPreloadDelay?: number\n defaultComponent?: RouteComponent<AnySearchSchema, AnyPathParams, AnyContext>\n defaultErrorComponent?: ErrorRouteComponent<\n AnySearchSchema,\n AnyPathParams,\n AnyContext\n >\n defaultPendingComponent?: PendingRouteComponent<\n AnySearchSchema,\n AnyPathParams,\n AnyContext\n >\n defaultMaxAge?: number\n defaultGcMaxAge?: number\n defaultPreloadMaxAge?: number\n caseSensitive?: boolean\n routeTree?: TRouteTree\n basepath?: string\n createRoute?: (opts: { route: AnyRoute; router: AnyRouter }) => void\n context?: TRouteTree['types']['routerContext']\n // dehydrate?: () => TDehydrated\n // hydrate?: (dehydrated: TDehydrated) => void\n routeMasks?: RouteMask<TRouteTree>[]\n unmaskOnReload?: boolean\n}\n\nexport interface RouterState<TRouteTree extends AnyRoute = AnyRoute> {\n status: 'pending' | 'idle'\n matches: RouteMatch<TRouteTree>[]\n pendingMatches: RouteMatch<TRouteTree>[]\n location: ParsedLocation<FullSearchSchema<TRouteTree>>\n resolvedLocation: ParsedLocation<FullSearchSchema<TRouteTree>>\n lastUpdated: number\n}\n\nexport type ListenerFn<TEvent extends RouterEvent> = (event: TEvent) => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: true | NonNullableUpdater<LocationState>\n mask?: {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: true | NonNullableUpdater<LocationState>\n unmaskOnReload?: boolean\n }\n from?: string\n}\n\nexport interface DehydratedRouterState {\n dehydratedMatches: DehydratedRouteMatch[]\n}\n\nexport type DehydratedRouteMatch = Pick<\n RouteMatch,\n 'fetchedAt' | 'invalid' | 'id' | 'status' | 'updatedAt'\n>\n\nexport interface DehydratedRouter {\n state: DehydratedRouterState\n}\n\nexport type RouterConstructorOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> &\n RouterContextOptions<TRouteTree>\n\nexport const componentTypes = [\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport type RouterEvents = {\n onBeforeLoad: {\n type: 'onBeforeLoad'\n fromLocation: ParsedLocation\n toLocation: ParsedLocation\n pathChanged: boolean\n }\n onLoad: {\n type: 'onLoad'\n fromLocation: ParsedLocation\n toLocation: ParsedLocation\n pathChanged: boolean\n }\n onResolved: {\n type: 'onResolved'\n fromLocation: ParsedLocation\n toLocation: ParsedLocation\n pathChanged: boolean\n }\n}\n\nexport type RouterEvent = RouterEvents[keyof RouterEvents]\n\nexport type RouterListener<TRouterEvent extends RouterEvent> = {\n eventType: TRouterEvent['type']\n fn: ListenerFn<TRouterEvent>\n}\n\nexport class Router<\n TRouteTree extends AnyRoute = AnyRoute,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> {\n options: PickAsRequired<\n RouterOptions<TRouteTree, TDehydrated>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n routeTree: TRouteTree\n // dehydratedData?: TDehydrated\n // resetNextScroll = false\n // tempLocationKey = `${Math.round(Math.random() * 10000000)}`\n\n constructor(options: RouterConstructorOptions<TRouteTree, TDehydrated>) {\n this.options = {\n defaultPreloadDelay: 50,\n context: undefined!,\n ...options,\n stringifySearch: options?.stringifySearch ?? defaultStringifySearch,\n parseSearch: options?.parseSearch ?? defaultParseSearch,\n }\n\n this.routeTree = this.options.routeTree as TRouteTree\n }\n\n subscribers = new Set<RouterListener<RouterEvent>>()\n\n subscribe = <TType extends keyof RouterEvents>(\n eventType: TType,\n fn: ListenerFn<RouterEvents[TType]>,\n ) => {\n const listener: RouterListener<any> = {\n eventType,\n fn,\n }\n\n this.subscribers.add(listener)\n\n return () => {\n this.subscribers.delete(listener)\n }\n }\n\n emit = (routerEvent: RouterEvent) => {\n this.subscribers.forEach((listener) => {\n if (listener.eventType === routerEvent.type) {\n listener.fn(routerEvent)\n }\n })\n }\n\n // dehydrate = (): DehydratedRouter => {\n // return {\n // state: {\n // dehydratedMatches: state.matches.map((d) =>\n // pick(d, ['fetchedAt', 'invalid', 'id', 'status', 'updatedAt']),\n // ),\n // },\n // }\n // }\n\n // hydrate = async (__do_not_use_server_ctx?: HydrationCtx) => {\n // let _ctx = __do_not_use_server_ctx\n // // Client hydrates from window\n // if (typeof document !== 'undefined') {\n // _ctx = window.__TSR_DEHYDRATED__\n // }\n\n // invariant(\n // _ctx,\n // 'Expected to find a __TSR_DEHYDRATED__ property on window... but we did not. Did you forget to render <DehydrateRouter /> in your app?',\n // )\n\n // const ctx = _ctx\n // this.dehydratedData = ctx.payload as any\n // this.options.hydrate?.(ctx.payload as any)\n // const dehydratedState = ctx.router.state\n\n // let matches = this.matchRoutes(\n // state.location.pathname,\n // state.location.search,\n // ).map((match) => {\n // const dehydratedMatch = dehydratedState.dehydratedMatches.find(\n // (d) => d.id === match.id,\n // )\n\n // invariant(\n // dehydratedMatch,\n // `Could not find a client-side match for dehydrated match with id: ${match.id}!`,\n // )\n\n // if (dehydratedMatch) {\n // return {\n // ...match,\n // ...dehydratedMatch,\n // }\n // }\n // return match\n // })\n\n // this.setState((s) => {\n // return {\n // ...s,\n // matches: dehydratedState.dehydratedMatches as any,\n // }\n // })\n // }\n\n // resolveMatchPromise = (matchId: string, key: string, value: any) => {\n // state.matches\n // .find((d) => d.id === matchId)\n // ?.__promisesByKey[key]?.resolve(value)\n // }\n\n // setRouteMatch = (\n // id: string,\n // pending: boolean,\n // updater: NonNullableUpdater<RouteMatch<TRouteTree>>,\n // ) => {\n // const key = pending ? 'pendingMatches' : 'matches'\n\n // this.setState((prev) => {\n // return {\n // ...prev,\n // [key]: prev[key].map((d) => {\n // if (d.id === id) {\n // return functionalUpdate(updater, d)\n // }\n\n // return d\n // }),\n // }\n // })\n // }\n\n // setPendingRouteMatch = (\n // id: string,\n // updater: NonNullableUpdater<RouteMatch<TRouteTree>>,\n // ) => {\n // this.setRouteMatch(id, true, updater)\n // }\n}\n\n// A function that takes an import() argument which is a function and returns a new function that will\n// proxy arguments from the caller to the imported function, retaining all type\n// information along the way\nexport function lazyFn<\n T extends Record<string, (...args: any[]) => any>,\n TKey extends keyof T = 'default',\n>(fn: () => Promise<T>, key?: TKey) {\n return async (...args: Parameters<T[TKey]>): Promise<ReturnType<T[TKey]>> => {\n const imported = await fn()\n return imported[key || 'default'](...args)\n }\n}\n"],"names":["componentTypes","Router","constructor","options","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","routeTree","subscribers","Set","subscribe","eventType","fn","listener","add","delete","emit","routerEvent","forEach","type","lazyFn","key","args","imported"],"mappings":";;;;;;;;;;;;;;;;AAEA;;AAuBA;;AAoHO,MAAMA,cAAc,GAAG,CAC5B,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EACV;AA8BH,MAAMC,MAAM,CAGjB;AAMA;AACA;AACA;EAEAC,WAAWA,CAACC,OAA0D,EAAE;IACtE,IAAI,CAACA,OAAO,GAAG;AACbC,MAAAA,mBAAmB,EAAE,EAAE;AACvBC,MAAAA,OAAO,EAAEC,SAAU;AACnB,MAAA,GAAGH,OAAO;AACVI,MAAAA,eAAe,EAAEJ,OAAO,EAAEI,eAAe,IAAIC,mCAAsB;AACnEC,MAAAA,WAAW,EAAEN,OAAO,EAAEM,WAAW,IAAIC,+BAAAA;KACtC,CAAA;AAED,IAAA,IAAI,CAACC,SAAS,GAAG,IAAI,CAACR,OAAO,CAACQ,SAAuB,CAAA;AACvD,GAAA;AAEAC,EAAAA,WAAW,GAAG,IAAIC,GAAG,EAA+B,CAAA;AAEpDC,EAAAA,SAAS,GAAGA,CACVC,SAAgB,EAChBC,EAAmC,KAChC;AACH,IAAA,MAAMC,QAA6B,GAAG;MACpCF,SAAS;AACTC,MAAAA,EAAAA;KACD,CAAA;AAED,IAAA,IAAI,CAACJ,WAAW,CAACM,GAAG,CAACD,QAAQ,CAAC,CAAA;AAE9B,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAACL,WAAW,CAACO,MAAM,CAACF,QAAQ,CAAC,CAAA;KAClC,CAAA;GACF,CAAA;EAEDG,IAAI,GAAIC,WAAwB,IAAK;AACnC,IAAA,IAAI,CAACT,WAAW,CAACU,OAAO,CAAEL,QAAQ,IAAK;AACrC,MAAA,IAAIA,QAAQ,CAACF,SAAS,KAAKM,WAAW,CAACE,IAAI,EAAE;AAC3CN,QAAAA,QAAQ,CAACD,EAAE,CAACK,WAAW,CAAC,CAAA;AAC1B,OAAA;AACF,KAAC,CAAC,CAAA;GACH,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACF,CAAA;;AAEA;AACA;AACA;AACO,SAASG,MAAMA,CAGpBR,EAAoB,EAAES,GAAU,EAAE;EAClC,OAAO,OAAO,GAAGC,IAAyB,KAAmC;AAC3E,IAAA,MAAMC,QAAQ,GAAG,MAAMX,EAAE,EAAE,CAAA;IAC3B,OAAOW,QAAQ,CAACF,GAAG,IAAI,SAAS,CAAC,CAAC,GAAGC,IAAI,CAAC,CAAA;GAC3C,CAAA;AACH;;;;;;"}
1
+ {"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import {\n HistoryLocation,\n HistoryState,\n RouterHistory,\n createBrowserHistory,\n} from '@tanstack/history'\n\n//\n\nimport {\n AnySearchSchema,\n AnyRoute,\n AnyContext,\n AnyPathParams,\n RouteMask,\n Route,\n LoaderFnContext,\n} from './route'\nimport { FullSearchSchema, RoutesById, RoutesByPath } from './routeInfo'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n PickAsRequired,\n Updater,\n NonNullableUpdater,\n replaceEqualDeep,\n deepEqual,\n escapeJSON,\n functionalUpdate,\n last,\n pick,\n} from './utils'\nimport {\n ErrorRouteComponent,\n PendingRouteComponent,\n RouteComponent,\n} from './route'\nimport { AnyRouteMatch, RouteMatch } from './Matches'\nimport { ParsedLocation } from './location'\nimport { LocationState } from './location'\nimport { SearchSerializer, SearchParser } from './searchParams'\nimport {\n BuildLinkFn,\n BuildLocationFn,\n CommitLocationOptions,\n InjectedHtmlEntry,\n LoadFn,\n MatchRouteFn,\n NavigateFn,\n PathParamError,\n SearchParamError,\n getInitialRouterState,\n getRouteMatch,\n} from './RouterProvider'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n parsePathname,\n resolvePath,\n trimPath,\n trimPathRight,\n} from './path'\nimport invariant from 'tiny-invariant'\nimport { isRedirect } from './redirects'\nimport warning from 'tiny-warning'\n\n//\n\ndeclare global {\n interface Window {\n __TSR_DEHYDRATED__?: HydrationCtx\n __TSR_ROUTER_CONTEXT__?: React.Context<Router<any>>\n }\n}\n\nexport interface Register {\n // router: Router\n}\n\nexport type AnyRouter = Router<AnyRoute, any>\n\nexport type RegisteredRouter = Register extends {\n router: infer TRouter extends AnyRouter\n}\n ? TRouter\n : AnyRouter\n\nexport type HydrationCtx = {\n router: DehydratedRouter\n payload: Record<string, any>\n}\n\nexport type RouterContextOptions<TRouteTree extends AnyRoute> =\n AnyContext extends TRouteTree['types']['routerContext']\n ? {\n context?: TRouteTree['types']['routerContext']\n }\n : {\n context: TRouteTree['types']['routerContext']\n }\n\nexport interface RouterOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> {\n history?: RouterHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n defaultPreload?: false | 'intent'\n defaultPreloadDelay?: number\n defaultComponent?: RouteComponent<AnySearchSchema, AnyPathParams, AnyContext>\n defaultErrorComponent?: ErrorRouteComponent<\n AnySearchSchema,\n AnyPathParams,\n AnyContext\n >\n defaultPendingComponent?: PendingRouteComponent<\n AnySearchSchema,\n AnyPathParams,\n AnyContext\n >\n defaultMaxAge?: number\n defaultGcMaxAge?: number\n defaultPreloadMaxAge?: number\n caseSensitive?: boolean\n routeTree?: TRouteTree\n basepath?: string\n createRoute?: (opts: { route: AnyRoute; router: AnyRouter }) => void\n context?: TRouteTree['types']['routerContext']\n // dehydrate?: () => TDehydrated\n // hydrate?: (dehydrated: TDehydrated) => void\n routeMasks?: RouteMask<TRouteTree>[]\n unmaskOnReload?: boolean\n}\n\nexport interface RouterState<TRouteTree extends AnyRoute = AnyRoute> {\n status: 'pending' | 'idle'\n matches: RouteMatch<TRouteTree>[]\n pendingMatches: RouteMatch<TRouteTree>[]\n location: ParsedLocation<FullSearchSchema<TRouteTree>>\n resolvedLocation: ParsedLocation<FullSearchSchema<TRouteTree>>\n lastUpdated: number\n}\n\nexport type ListenerFn<TEvent extends RouterEvent> = (event: TEvent) => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: true | NonNullableUpdater<LocationState>\n mask?: {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: true | NonNullableUpdater<LocationState>\n unmaskOnReload?: boolean\n }\n from?: string\n}\n\nexport interface DehydratedRouterState {\n dehydratedMatches: DehydratedRouteMatch[]\n}\n\nexport type DehydratedRouteMatch = Pick<\n RouteMatch,\n 'fetchedAt' | 'invalid' | 'id' | 'status' | 'updatedAt'\n>\n\nexport interface DehydratedRouter {\n state: DehydratedRouterState\n}\n\nexport type RouterConstructorOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> &\n RouterContextOptions<TRouteTree>\n\nexport const componentTypes = [\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport type RouterEvents = {\n onBeforeLoad: {\n type: 'onBeforeLoad'\n fromLocation: ParsedLocation\n toLocation: ParsedLocation\n pathChanged: boolean\n }\n onLoad: {\n type: 'onLoad'\n fromLocation: ParsedLocation\n toLocation: ParsedLocation\n pathChanged: boolean\n }\n onResolved: {\n type: 'onResolved'\n fromLocation: ParsedLocation\n toLocation: ParsedLocation\n pathChanged: boolean\n }\n}\n\nexport type RouterEvent = RouterEvents[keyof RouterEvents]\n\nexport type RouterListener<TRouterEvent extends RouterEvent> = {\n eventType: TRouterEvent['type']\n fn: ListenerFn<TRouterEvent>\n}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nconst preloadWarning = 'Error preloading route! ☝️'\n\nexport class Router<\n TRouteTree extends AnyRoute = AnyRoute,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> {\n // Option-independent properties\n tempLocationKey: string | undefined = `${Math.round(\n Math.random() * 10000000,\n )}`\n resetNextScroll: boolean = true\n navigateTimeout: NodeJS.Timeout | null = null\n latestLoadPromise: Promise<void> = Promise.resolve()\n subscribers = new Set<RouterListener<RouterEvent>>()\n pendingMatches: AnyRouteMatch[] = []\n injectedHtml: InjectedHtmlEntry[] = []\n dehydratedData?: TDehydrated\n\n // Must build in constructor\n state!: RouterState<TRouteTree>\n options!: PickAsRequired<\n RouterOptions<TRouteTree, TDehydrated>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n history!: RouterHistory\n latestLocation!: ParsedLocation\n basepath!: string\n routeTree!: TRouteTree\n routesById!: RoutesById<TRouteTree>\n routesByPath!: RoutesByPath<TRouteTree>\n flatRoutes!: AnyRoute[]\n\n constructor(options: RouterConstructorOptions<TRouteTree, TDehydrated>) {\n this.updateOptions({\n defaultPreloadDelay: 50,\n context: undefined!,\n ...options,\n stringifySearch: options?.stringifySearch ?? defaultStringifySearch,\n parseSearch: options?.parseSearch ?? defaultParseSearch,\n })\n }\n\n startReactTransition: (fn: () => void) => void = () => {\n warning(\n false,\n 'startReactTransition implementation is missing. If you see this, please file an issue.',\n )\n }\n\n setState: (\n fn: (s: RouterState<TRouteTree>) => RouterState<TRouteTree>,\n ) => void = () => {\n warning(\n false,\n 'setState implementation is missing. If you see this, please file an issue.',\n )\n }\n\n updateOptions = (\n newOptions: PickAsRequired<\n RouterOptions<TRouteTree, TDehydrated>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >,\n ) => {\n const previousOptions = this.options\n this.options = {\n ...this.options,\n ...newOptions,\n }\n\n this.basepath = `/${trimPath(newOptions.basepath ?? '') ?? ''}`\n\n if (\n !this.history ||\n (this.options.history && this.options.history !== this.history)\n ) {\n this.history = this.options.history ?? createBrowserHistory()\n this.latestLocation = this.parseLocation()\n }\n\n if (this.options.routeTree !== this.routeTree) {\n this.routeTree = this.options.routeTree as TRouteTree\n this.buildRouteTree()\n }\n\n if (!this.state) {\n this.state = getInitialRouterState(this.latestLocation)\n }\n }\n\n buildRouteTree = () => {\n this.routesById = {} as RoutesById<TRouteTree>\n this.routesByPath = {} as RoutesByPath<TRouteTree>\n\n const recurseRoutes = (childRoutes: AnyRoute[]) => {\n childRoutes.forEach((childRoute, i) => {\n // if (typeof childRoute === 'function') {\n // childRoute = (childRoute as any)()\n // }\n childRoute.init({ originalIndex: i })\n\n const existingRoute = (this.routesById as any)[childRoute.id]\n\n invariant(\n !existingRoute,\n `Duplicate routes found with id: ${String(childRoute.id)}`,\n )\n ;(this.routesById as any)[childRoute.id] = childRoute\n\n if (!childRoute.isRoot && childRoute.path) {\n const trimmedFullPath = trimPathRight(childRoute.fullPath)\n if (\n !(this.routesByPath as any)[trimmedFullPath] ||\n childRoute.fullPath.endsWith('/')\n ) {\n ;(this.routesByPath as any)[trimmedFullPath] = childRoute\n }\n }\n\n const children = childRoute.children as Route[]\n\n if (children?.length) {\n recurseRoutes(children)\n }\n })\n }\n\n recurseRoutes([this.routeTree])\n\n this.flatRoutes = (Object.values(this.routesByPath) as AnyRoute[])\n .map((d, i) => {\n const trimmed = trimPath(d.fullPath)\n const parsed = parsePathname(trimmed)\n\n while (parsed.length > 1 && parsed[0]?.value === '/') {\n parsed.shift()\n }\n\n const score = parsed.map((d) => {\n if (d.type === 'param') {\n return 0.5\n }\n\n if (d.type === 'wildcard') {\n return 0.25\n }\n\n return 1\n })\n\n return { child: d, trimmed, parsed, index: i, score }\n })\n .sort((a, b) => {\n let isIndex = a.trimmed === '/' ? 1 : b.trimmed === '/' ? -1 : 0\n\n if (isIndex !== 0) return isIndex\n\n const length = Math.min(a.score.length, b.score.length)\n\n // Sort by length of score\n if (a.score.length !== b.score.length) {\n return b.score.length - a.score.length\n }\n\n // Sort by min available score\n for (let i = 0; i < length; i++) {\n if (a.score[i] !== b.score[i]) {\n return b.score[i]! - a.score[i]!\n }\n }\n\n // Sort by min available parsed value\n for (let i = 0; i < length; i++) {\n if (a.parsed[i]!.value !== b.parsed[i]!.value) {\n return a.parsed[i]!.value! > b.parsed[i]!.value! ? 1 : -1\n }\n }\n\n // Sort by length of trimmed full path\n if (a.trimmed !== b.trimmed) {\n return a.trimmed > b.trimmed ? 1 : -1\n }\n\n // Sort by original index\n return a.index - b.index\n })\n .map((d, i) => {\n d.child.rank = i\n return d.child\n })\n }\n\n subscribe = <TType extends keyof RouterEvents>(\n eventType: TType,\n fn: ListenerFn<RouterEvents[TType]>,\n ) => {\n const listener: RouterListener<any> = {\n eventType,\n fn,\n }\n\n this.subscribers.add(listener)\n\n return () => {\n this.subscribers.delete(listener)\n }\n }\n\n emit = (routerEvent: RouterEvent) => {\n this.subscribers.forEach((listener) => {\n if (listener.eventType === routerEvent.type) {\n listener.fn(routerEvent)\n }\n })\n }\n\n checkLatest = (promise: Promise<void>): undefined | Promise<void> => {\n return this.latestLoadPromise !== promise\n ? this.latestLoadPromise\n : undefined\n }\n\n parseLocation = (\n previousLocation?: ParsedLocation,\n ): ParsedLocation<FullSearchSchema<TRouteTree>> => {\n const parse = ({\n pathname,\n search,\n hash,\n state,\n }: HistoryLocation): ParsedLocation<FullSearchSchema<TRouteTree>> => {\n const parsedSearch = this.options.parseSearch(search)\n\n return {\n pathname: pathname,\n searchStr: search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch) as any,\n hash: hash.split('#').reverse()[0] ?? '',\n href: `${pathname}${search}${hash}`,\n state: replaceEqualDeep(previousLocation?.state, state) as HistoryState,\n }\n }\n\n const location = parse(this.history.location)\n\n let { __tempLocation, __tempKey } = location.state\n\n if (__tempLocation && (!__tempKey || __tempKey === this.tempLocationKey)) {\n // Sync up the location keys\n const parsedTempLocation = parse(__tempLocation) as any\n parsedTempLocation.state.key = location.state.key\n\n delete parsedTempLocation.state.__tempLocation\n\n return {\n ...parsedTempLocation,\n maskedLocation: location,\n }\n }\n\n return location\n }\n\n resolvePathWithBase = (from: string, path: string) => {\n return resolvePath(this.basepath!, from, cleanPath(path))\n }\n\n get looseRoutesById() {\n return this.routesById as Record<string, AnyRoute>\n }\n\n matchRoutes = <TRouteTree extends AnyRoute>(\n pathname: string,\n locationSearch: AnySearchSchema,\n opts?: { throwOnError?: boolean; debug?: boolean },\n ): RouteMatch<TRouteTree>[] => {\n let routeParams: AnyPathParams = {}\n\n let foundRoute = this.flatRoutes.find((route) => {\n const matchedParams = matchPathname(\n this.basepath,\n trimPathRight(pathname),\n {\n to: route.fullPath,\n caseSensitive:\n route.options.caseSensitive ?? this.options.caseSensitive,\n fuzzy: false,\n },\n )\n\n if (matchedParams) {\n routeParams = matchedParams\n return true\n }\n\n return false\n })\n\n let routeCursor: AnyRoute =\n foundRoute || (this.routesById as any)['__root__']\n\n let matchedRoutes: AnyRoute[] = [routeCursor]\n // let includingLayouts = true\n while (routeCursor?.parentRoute) {\n routeCursor = routeCursor.parentRoute\n if (routeCursor) matchedRoutes.unshift(routeCursor)\n }\n\n // Existing matches are matches that are already loaded along with\n // pending matches that are still loading\n\n const parseErrors = matchedRoutes.map((route) => {\n let parsedParamsError\n\n if (route.options.parseParams) {\n try {\n const parsedParams = route.options.parseParams(routeParams)\n // Add the parsed params to the accumulated params bag\n Object.assign(routeParams, parsedParams)\n } catch (err: any) {\n parsedParamsError = new PathParamError(err.message, {\n cause: err,\n })\n\n if (opts?.throwOnError) {\n throw parsedParamsError\n }\n\n return parsedParamsError\n }\n }\n\n return\n })\n\n const matches = matchedRoutes.map((route, index) => {\n const interpolatedPath = interpolatePath(route.path, routeParams)\n const matchId = interpolatePath(route.id, routeParams, true)\n\n // Waste not, want not. If we already have a match for this route,\n // reuse it. This is important for layout routes, which might stick\n // around between navigation actions that only change leaf routes.\n const existingMatch = getRouteMatch(this.state, matchId)\n\n const cause = this.state.matches.find((d) => d.id === matchId)\n ? 'stay'\n : 'enter'\n\n if (existingMatch) {\n return { ...existingMatch, cause }\n }\n\n // Create a fresh route match\n const hasLoaders = !!(\n route.options.loader ||\n componentTypes.some((d) => (route.options[d] as any)?.preload)\n )\n\n const routeMatch: AnyRouteMatch = {\n id: matchId,\n routeId: route.id,\n params: routeParams,\n pathname: joinPaths([this.basepath, interpolatedPath]),\n updatedAt: Date.now(),\n routeSearch: {},\n search: {} as any,\n status: hasLoaders ? 'pending' : 'success',\n isFetching: false,\n invalid: false,\n error: undefined,\n paramsError: parseErrors[index],\n searchError: undefined,\n loadPromise: Promise.resolve(),\n context: undefined!,\n abortController: new AbortController(),\n shouldReloadDeps: undefined,\n fetchedAt: 0,\n cause,\n }\n\n return routeMatch\n })\n\n // Take each match and resolve its search params and context\n // This has to happen after the matches are created or found\n // so that we can use the parent match's search params and context\n matches.forEach((match, i): any => {\n const parentMatch = matches[i - 1]\n const route = this.looseRoutesById[match.routeId]!\n\n const searchInfo = (() => {\n // Validate the search params and stabilize them\n const parentSearchInfo = {\n search: parentMatch?.search ?? locationSearch,\n routeSearch: parentMatch?.routeSearch ?? locationSearch,\n }\n\n try {\n const validator =\n typeof route.options.validateSearch === 'object'\n ? route.options.validateSearch.parse\n : route.options.validateSearch\n\n let routeSearch = validator?.(parentSearchInfo.search) ?? {}\n\n let search = {\n ...parentSearchInfo.search,\n ...routeSearch,\n }\n\n routeSearch = replaceEqualDeep(match.routeSearch, routeSearch)\n search = replaceEqualDeep(match.search, search)\n\n return {\n routeSearch,\n search,\n searchDidChange: match.routeSearch !== routeSearch,\n }\n } catch (err: any) {\n match.searchError = new SearchParamError(err.message, {\n cause: err,\n })\n\n if (opts?.throwOnError) {\n throw match.searchError\n }\n\n return parentSearchInfo\n }\n })()\n\n Object.assign(match, searchInfo)\n })\n\n return matches as any\n }\n\n cancelMatch = (id: string) => {\n getRouteMatch(this.state, id)?.abortController?.abort()\n }\n\n cancelMatches = () => {\n this.state.matches.forEach((match) => {\n this.cancelMatch(match.id)\n })\n }\n\n buildLocation: BuildLocationFn<TRouteTree> = (opts) => {\n const build = (\n dest: BuildNextOptions & {\n unmaskOnReload?: boolean\n } = {},\n matches?: AnyRouteMatch[],\n ): ParsedLocation => {\n const from = this.latestLocation\n const fromPathname = dest.from ?? from.pathname\n\n let pathname = this.resolvePathWithBase(fromPathname, `${dest.to ?? ''}`)\n\n const fromMatches = this.matchRoutes(fromPathname, from.search)\n const stayingMatches = matches?.filter((d) =>\n fromMatches?.find((e) => e.routeId === d.routeId),\n )\n\n const prevParams = { ...last(fromMatches)?.params }\n\n let nextParams =\n (dest.params ?? true) === true\n ? prevParams\n : functionalUpdate(dest.params!, prevParams)\n\n if (nextParams) {\n matches\n ?.map((d) => this.looseRoutesById[d.routeId]!.options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n nextParams = { ...nextParams!, ...fn!(nextParams!) }\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n const preSearchFilters =\n stayingMatches\n ?.map(\n (match) =>\n this.looseRoutesById[match.routeId]!.options.preSearchFilters ??\n [],\n )\n .flat()\n .filter(Boolean) ?? []\n\n const postSearchFilters =\n stayingMatches\n ?.map(\n (match) =>\n this.looseRoutesById[match.routeId]!.options.postSearchFilters ??\n [],\n )\n .flat()\n .filter(Boolean) ?? []\n\n // Pre filters first\n const preFilteredSearch = preSearchFilters?.length\n ? preSearchFilters?.reduce(\n (prev, next) => next(prev) as any,\n from.search,\n )\n : from.search\n\n // Then the link/navigate function\n const destSearch =\n dest.search === true\n ? preFilteredSearch // Preserve resolvedFrom true\n : dest.search\n ? functionalUpdate(dest.search, preFilteredSearch) ?? {} // Updater\n : preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = postSearchFilters?.length\n ? postSearchFilters.reduce((prev, next) => next(prev), destSearch)\n : destSearch\n\n const search = replaceEqualDeep(from.search, postFilteredSearch)\n\n const searchStr = this.options.stringifySearch(search)\n\n const hash =\n dest.hash === true\n ? from.hash\n : dest.hash\n ? functionalUpdate(dest.hash!, from.hash)\n : from.hash\n\n const hashStr = hash ? `#${hash}` : ''\n\n let nextState =\n dest.state === true\n ? from.state\n : dest.state\n ? functionalUpdate(dest.state, from.state)\n : from.state\n\n nextState = replaceEqualDeep(from.state, nextState)\n\n return {\n pathname,\n search,\n searchStr,\n state: nextState as any,\n hash,\n href: this.history.createHref(`${pathname}${searchStr}${hashStr}`),\n unmaskOnReload: dest.unmaskOnReload,\n }\n }\n\n const buildWithMatches = (\n dest: BuildNextOptions = {},\n maskedDest?: BuildNextOptions,\n ) => {\n let next = build(dest)\n let maskedNext = maskedDest ? build(maskedDest) : undefined\n\n if (!maskedNext) {\n let params = {}\n\n let foundMask = this.options.routeMasks?.find((d) => {\n const match = matchPathname(this.basepath, next.pathname, {\n to: d.from,\n caseSensitive: false,\n fuzzy: false,\n })\n\n if (match) {\n params = match\n return true\n }\n\n return false\n })\n\n if (foundMask) {\n foundMask = {\n ...foundMask,\n from: interpolatePath(foundMask.from, params) as any,\n }\n maskedDest = foundMask\n maskedNext = build(maskedDest)\n }\n }\n\n const nextMatches = this.matchRoutes(next.pathname, next.search)\n const maskedMatches = maskedNext\n ? this.matchRoutes(maskedNext.pathname, maskedNext.search)\n : undefined\n const maskedFinal = maskedNext\n ? build(maskedDest, maskedMatches)\n : undefined\n\n const final = build(dest, nextMatches)\n\n if (maskedFinal) {\n final.maskedLocation = maskedFinal\n }\n\n return final\n }\n\n if (opts.mask) {\n return buildWithMatches(opts, {\n ...pick(opts, ['from']),\n ...opts.mask,\n })\n }\n\n return buildWithMatches(opts)\n }\n\n commitLocation = async ({\n startTransition,\n ...next\n }: ParsedLocation & CommitLocationOptions) => {\n if (this.navigateTimeout) clearTimeout(this.navigateTimeout)\n\n const isSameUrl = this.latestLocation.href === next.href\n\n // If the next urls are the same and we're not replacing,\n // do nothing\n if (!isSameUrl || !next.replace) {\n let { maskedLocation, ...nextHistory } = next\n\n if (maskedLocation) {\n nextHistory = {\n ...maskedLocation,\n state: {\n ...maskedLocation.state,\n __tempKey: undefined,\n __tempLocation: {\n ...nextHistory,\n search: nextHistory.searchStr,\n state: {\n ...nextHistory.state,\n __tempKey: undefined!,\n __tempLocation: undefined!,\n key: undefined!,\n },\n },\n },\n }\n\n if (\n nextHistory.unmaskOnReload ??\n this.options.unmaskOnReload ??\n false\n ) {\n nextHistory.state.__tempKey = this.tempLocationKey\n }\n }\n\n const apply = () => {\n this.history[next.replace ? 'replace' : 'push'](\n nextHistory.href,\n nextHistory.state,\n )\n }\n\n if (startTransition ?? true) {\n this.startReactTransition(apply)\n } else {\n apply()\n }\n }\n\n this.resetNextScroll = next.resetScroll ?? true\n\n return this.latestLoadPromise\n }\n\n buildAndCommitLocation = ({\n replace,\n resetScroll,\n startTransition,\n ...rest\n }: BuildNextOptions & CommitLocationOptions = {}) => {\n const location = this.buildLocation(rest)\n return this.commitLocation({\n ...location,\n startTransition,\n replace,\n resetScroll,\n })\n }\n\n navigate: NavigateFn<TRouteTree> = ({ from, to = '', ...rest }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n const toString = String(to)\n const fromString = typeof from === 'undefined' ? from : String(from)\n let isExternal\n\n try {\n new URL(`${toString}`)\n isExternal = true\n } catch (e) {}\n\n invariant(\n !isExternal,\n 'Attempting to navigate to external url with this.navigate!',\n )\n\n return this.buildAndCommitLocation({\n ...rest,\n from: fromString,\n to: toString,\n })\n }\n\n loadMatches = async ({\n checkLatest,\n matches,\n preload,\n }: {\n checkLatest: () => Promise<void> | undefined\n matches: AnyRouteMatch[]\n preload?: boolean\n }): Promise<RouteMatch[]> => {\n let latestPromise\n let firstBadMatchIndex: number | undefined\n\n // Check each match middleware to see if the route can be accessed\n try {\n for (let [index, match] of matches.entries()) {\n const parentMatch = matches[index - 1]\n const route = this.looseRoutesById[match.routeId]!\n\n const handleError = (err: any, code: string) => {\n err.routerCode = code\n firstBadMatchIndex = firstBadMatchIndex ?? index\n\n if (isRedirect(err)) {\n throw err\n }\n\n try {\n route.options.onError?.(err)\n } catch (errorHandlerErr) {\n err = errorHandlerErr\n\n if (isRedirect(errorHandlerErr)) {\n throw errorHandlerErr\n }\n }\n\n matches[index] = match = {\n ...match,\n error: err,\n status: 'error',\n updatedAt: Date.now(),\n }\n }\n\n try {\n if (match.paramsError) {\n handleError(match.paramsError, 'PARSE_PARAMS')\n }\n\n if (match.searchError) {\n handleError(match.searchError, 'VALIDATE_SEARCH')\n }\n\n const parentContext =\n parentMatch?.context ?? this.options.context ?? {}\n\n const beforeLoadContext =\n (await route.options.beforeLoad?.({\n search: match.search,\n abortController: match.abortController,\n params: match.params,\n preload: !!preload,\n context: parentContext,\n location: this.state.location,\n // TOOD: just expose state and router, etc\n navigate: (opts) =>\n this.navigate({ ...opts, from: match.pathname } as any),\n buildLocation: this.buildLocation,\n cause: match.cause,\n })) ?? ({} as any)\n\n const context = {\n ...parentContext,\n ...beforeLoadContext,\n }\n\n matches[index] = match = {\n ...match,\n context: replaceEqualDeep(match.context, context),\n }\n } catch (err) {\n handleError(err, 'BEFORE_LOAD')\n break\n }\n }\n } catch (err) {\n if (isRedirect(err)) {\n if (!preload) this.navigate(err as any)\n return matches\n }\n\n throw err\n }\n\n const validResolvedMatches = matches.slice(0, firstBadMatchIndex)\n const matchPromises: Promise<any>[] = []\n\n validResolvedMatches.forEach((match, index) => {\n matchPromises.push(\n (async () => {\n const parentMatchPromise = matchPromises[index - 1]\n const route = this.looseRoutesById[match.routeId]!\n\n const handleIfRedirect = (err: any) => {\n if (isRedirect(err)) {\n if (!preload) {\n this.navigate(err as any)\n }\n return true\n }\n return false\n }\n\n let loadPromise: Promise<void> | undefined\n\n matches[index] = match = {\n ...match,\n fetchedAt: Date.now(),\n invalid: false,\n }\n\n if (match.isFetching) {\n loadPromise = getRouteMatch(this.state, match.id)?.loadPromise\n } else {\n const loaderContext: LoaderFnContext = {\n params: match.params,\n search: match.search,\n preload: !!preload,\n parentMatchPromise,\n abortController: match.abortController,\n context: match.context,\n location: this.state.location,\n navigate: (opts) =>\n this.navigate({ ...opts, from: match.pathname } as any),\n cause: match.cause,\n }\n\n // Default to reloading the route all the time\n let shouldReload = true\n\n let shouldReloadDeps =\n typeof route.options.shouldReload === 'function'\n ? route.options.shouldReload?.(loaderContext)\n : !!(route.options.shouldReload ?? true)\n\n if (match.cause === 'enter') {\n match.shouldReloadDeps = shouldReloadDeps\n } else if (match.cause === 'stay') {\n if (typeof shouldReloadDeps === 'object') {\n // compare the deps to see if they've changed\n shouldReload = !deepEqual(\n shouldReloadDeps,\n match.shouldReloadDeps,\n )\n\n match.shouldReloadDeps = shouldReloadDeps\n } else {\n shouldReload = !!shouldReloadDeps\n }\n }\n\n // If the user doesn't want the route to reload, just\n // resolve with the existing loader data\n\n if (!shouldReload) {\n loadPromise = Promise.resolve(match.loaderData)\n } else {\n // Otherwise, load the route\n matches[index] = match = {\n ...match,\n isFetching: true,\n }\n\n const componentsPromise = Promise.all(\n componentTypes.map(async (type) => {\n const component = route.options[type]\n\n if ((component as any)?.preload) {\n await (component as any).preload()\n }\n }),\n )\n\n const loaderPromise = route.options.loader?.(loaderContext)\n\n loadPromise = Promise.all([\n componentsPromise,\n loaderPromise,\n ]).then((d) => d[1])\n }\n }\n\n matches[index] = match = {\n ...match,\n loadPromise,\n }\n\n if (!preload) {\n this.setState((s) => ({\n ...s,\n matches: s.matches.map((d) => (d.id === match.id ? match : d)),\n }))\n }\n\n try {\n const loaderData = await loadPromise\n if ((latestPromise = checkLatest())) return await latestPromise\n\n matches[index] = match = {\n ...match,\n error: undefined,\n status: 'success',\n isFetching: false,\n updatedAt: Date.now(),\n loaderData,\n loadPromise: undefined,\n }\n } catch (error) {\n if ((latestPromise = checkLatest())) return await latestPromise\n if (handleIfRedirect(error)) return\n\n try {\n route.options.onError?.(error)\n } catch (onErrorError) {\n error = onErrorError\n if (handleIfRedirect(onErrorError)) return\n }\n\n matches[index] = match = {\n ...match,\n error,\n status: 'error',\n isFetching: false,\n updatedAt: Date.now(),\n }\n }\n\n if (!preload) {\n this.setState((s) => ({\n ...s,\n matches: s.matches.map((d) => (d.id === match.id ? match : d)),\n }))\n }\n })(),\n )\n })\n\n await Promise.all(matchPromises)\n return matches\n }\n\n load: LoadFn = async () => {\n const promise = new Promise<void>(async (resolve, reject) => {\n const next = this.latestLocation\n const prevLocation = this.state.resolvedLocation\n const pathDidChange = prevLocation!.href !== next.href\n let latestPromise: Promise<void> | undefined | null\n\n // Cancel any pending matches\n this.cancelMatches()\n\n this.emit({\n type: 'onBeforeLoad',\n fromLocation: prevLocation,\n toLocation: next,\n pathChanged: pathDidChange,\n })\n\n // Match the routes\n let matches: RouteMatch<any, any>[] = this.matchRoutes(\n next.pathname,\n next.search,\n {\n debug: true,\n },\n )\n\n this.pendingMatches = matches\n\n const previousMatches = this.state.matches\n\n // Ingest the new matches\n this.setState((s) => ({\n ...s,\n status: 'pending',\n location: next,\n matches,\n }))\n\n try {\n try {\n // Load the matches\n await this.loadMatches({\n matches,\n checkLatest: () => this.checkLatest(promise),\n })\n } catch (err) {\n // swallow this error, since we'll display the\n // errors on the route components\n }\n\n // Only apply the latest transition\n if ((latestPromise = this.checkLatest(promise))) {\n return latestPromise\n }\n\n const exitingMatchIds = previousMatches.filter(\n (id) => !this.pendingMatches.includes(id),\n )\n const enteringMatchIds = this.pendingMatches.filter(\n (id) => !previousMatches.includes(id),\n )\n const stayingMatchIds = previousMatches.filter((id) =>\n this.pendingMatches.includes(id),\n )\n\n // setState((s) => ({\n // ...s,\n // status: 'idle',\n // resolvedLocation: s.location,\n // }))\n\n //\n ;(\n [\n [exitingMatchIds, 'onLeave'],\n [enteringMatchIds, 'onEnter'],\n [stayingMatchIds, 'onTransition'],\n ] as const\n ).forEach(([matches, hook]) => {\n matches.forEach((match) => {\n this.looseRoutesById[match.routeId]!.options[hook]?.(match)\n })\n })\n\n this.emit({\n type: 'onLoad',\n fromLocation: prevLocation,\n toLocation: next,\n pathChanged: pathDidChange,\n })\n\n resolve()\n } catch (err) {\n // Only apply the latest transition\n if ((latestPromise = this.checkLatest(promise))) {\n return latestPromise\n }\n\n reject(err)\n }\n })\n\n this.latestLoadPromise = promise\n\n return this.latestLoadPromise\n }\n\n preloadRoute = async (\n navigateOpts: BuildNextOptions = this.state.location,\n ) => {\n let next = this.buildLocation(navigateOpts)\n\n let matches = this.matchRoutes(next.pathname, next.search, {\n throwOnError: true,\n })\n\n await this.loadMatches({\n matches,\n preload: true,\n checkLatest: () => undefined,\n })\n\n return [last(matches)!, matches] as const\n }\n\n buildLink: BuildLinkFn<TRouteTree> = (dest) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const {\n to,\n preload: userPreload,\n preloadDelay: userPreloadDelay,\n activeOptions,\n disabled,\n target,\n replace,\n resetScroll,\n startTransition,\n } = dest\n\n try {\n new URL(`${to}`)\n return {\n type: 'external',\n href: to as any,\n }\n } catch (e) {}\n\n const nextOpts = dest\n const next = this.buildLocation(nextOpts as any)\n\n const preload = userPreload ?? this.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? this.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const currentPathSplit = this.latestLocation.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n // Combine the matches based on user this.options\n const pathTest = activeOptions?.exact\n ? this.latestLocation.pathname === next.pathname\n : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash\n ? this.latestLocation.hash === next.hash\n : true\n const searchTest =\n activeOptions?.includeSearch ?? true\n ? deepEqual(this.latestLocation.search, next.search, true)\n : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest && searchTest\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!target || target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n // All is well? Navigate!\n this.commitLocation({ ...next, replace, resetScroll, startTransition })\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n this.preloadRoute(nextOpts as any).catch((err) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n }\n }\n\n const handleTouchStart = (e: TouchEvent) => {\n this.preloadRoute(nextOpts as any).catch((err) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n this.preloadRoute(nextOpts as any).catch((err) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n }, preloadDelay)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (target.preloadTimeout) {\n clearTimeout(target.preloadTimeout)\n target.preloadTimeout = null\n }\n }\n\n return {\n type: 'internal',\n next,\n handleFocus,\n handleClick,\n handleEnter,\n handleLeave,\n handleTouchStart,\n isActive,\n disabled,\n }\n }\n\n matchRoute: MatchRouteFn<TRouteTree> = (location, opts) => {\n location = {\n ...location,\n to: location.to\n ? this.resolvePathWithBase((location.from || '') as string, location.to)\n : undefined,\n } as any\n\n const next = this.buildLocation(location as any)\n\n if (opts?.pending && this.state.status !== 'pending') {\n return false\n }\n\n const baseLocation = opts?.pending\n ? this.latestLocation\n : this.state.resolvedLocation\n\n // const baseLocation = state.resolvedLocation\n\n if (!baseLocation) {\n return false\n }\n\n const match = matchPathname(this.basepath, baseLocation.pathname, {\n ...opts,\n to: next.pathname,\n }) as any\n\n if (!match) {\n return false\n }\n\n if (match && (opts?.includeSearch ?? true)) {\n return deepEqual(baseLocation.search, next.search, true) ? match : false\n }\n\n return match\n }\n\n injectHtml = async (html: string | (() => Promise<string> | string)) => {\n this.injectedHtml.push(html)\n }\n\n dehydrateData = <T>(key: any, getData: T | (() => Promise<T> | T)) => {\n if (typeof document === 'undefined') {\n const strKey = typeof key === 'string' ? key : JSON.stringify(key)\n\n this.injectHtml(async () => {\n const id = `__TSR_DEHYDRATED__${strKey}`\n const data =\n typeof getData === 'function' ? await (getData as any)() : getData\n return `<script id='${id}' suppressHydrationWarning>window[\"__TSR_DEHYDRATED__${escapeJSON(\n strKey,\n )}\"] = ${JSON.stringify(data)}\n ;(() => {\n var el = document.getElementById('${id}')\n el.parentElement.removeChild(el)\n })()\n </script>`\n })\n\n return () => this.hydrateData<T>(key)\n }\n\n return () => undefined\n }\n\n hydrateData = <T extends any = unknown>(key: any) => {\n if (typeof document !== 'undefined') {\n const strKey = typeof key === 'string' ? key : JSON.stringify(key)\n\n return window[`__TSR_DEHYDRATED__${strKey}` as any] as T\n }\n\n return undefined\n }\n\n // dehydrate = (): DehydratedRouter => {\n // return {\n // state: {\n // dehydratedMatches: this.state.matches.map((d) =>\n // pick(d, ['fetchedAt', 'invalid', 'id', 'status', 'updatedAt']),\n // ),\n // },\n // }\n // }\n\n // hydrate = async (__do_not_use_server_ctx?: HydrationCtx) => {\n // let _ctx = __do_not_use_server_ctx\n // // Client hydrates from window\n // if (typeof document !== 'undefined') {\n // _ctx = window.__TSR_DEHYDRATED__\n // }\n\n // invariant(\n // _ctx,\n // 'Expected to find a __TSR_DEHYDRATED__ property on window... but we did not. Did you forget to render <DehydrateRouter /> in your app?',\n // )\n\n // const ctx = _ctx\n // this.dehydratedData = ctx.payload as any\n // this.options.hydrate?.(ctx.payload as any)\n // const dehydratedState = ctx.router.state\n\n // let matches = this.matchRoutes(\n // this.state.location.pathname,\n // this.state.location.search,\n // ).map((match) => {\n // const dehydratedMatch = dehydratedState.dehydratedMatches.find(\n // (d) => d.id === match.id,\n // )\n\n // invariant(\n // dehydratedMatch,\n // `Could not find a client-side match for dehydrated match with id: ${match.id}!`,\n // )\n\n // if (dehydratedMatch) {\n // return {\n // ...match,\n // ...dehydratedMatch,\n // }\n // }\n // return match\n // })\n\n // this.setState((s) => {\n // return {\n // ...s,\n // matches: dehydratedState.dehydratedMatches as any,\n // }\n // })\n // }\n\n // resolveMatchPromise = (matchId: string, key: string, value: any) => {\n // state.matches\n // .find((d) => d.id === matchId)\n // ?.__promisesByKey[key]?.resolve(value)\n // }\n}\n\n// A function that takes an import() argument which is a function and returns a new function that will\n// proxy arguments from the caller to the imported function, retaining all type\n// information along the way\nexport function lazyFn<\n T extends Record<string, (...args: any[]) => any>,\n TKey extends keyof T = 'default',\n>(fn: () => Promise<T>, key?: TKey) {\n return async (...args: Parameters<T[TKey]>): Promise<ReturnType<T[TKey]>> => {\n const imported = await fn()\n return imported[key || 'default'](...args)\n }\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n"],"names":["componentTypes","preloadWarning","Router","tempLocationKey","Math","round","random","resetNextScroll","navigateTimeout","latestLoadPromise","Promise","resolve","subscribers","Set","pendingMatches","injectedHtml","constructor","options","updateOptions","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","startReactTransition","warning","setState","newOptions","basepath","trimPath","history","createBrowserHistory","latestLocation","parseLocation","routeTree","buildRouteTree","state","getInitialRouterState","routesById","routesByPath","recurseRoutes","childRoutes","forEach","childRoute","i","init","originalIndex","existingRoute","id","invariant","String","isRoot","path","trimmedFullPath","trimPathRight","fullPath","endsWith","children","length","flatRoutes","Object","values","map","d","trimmed","parsed","parsePathname","value","shift","score","type","child","index","sort","a","b","isIndex","min","rank","subscribe","eventType","fn","listener","add","delete","emit","routerEvent","checkLatest","promise","previousLocation","parse","pathname","search","hash","parsedSearch","searchStr","replaceEqualDeep","split","reverse","href","location","__tempLocation","__tempKey","parsedTempLocation","key","maskedLocation","resolvePathWithBase","from","resolvePath","cleanPath","looseRoutesById","matchRoutes","locationSearch","opts","routeParams","foundRoute","find","route","matchedParams","matchPathname","to","caseSensitive","fuzzy","routeCursor","matchedRoutes","parentRoute","unshift","parseErrors","parsedParamsError","parseParams","parsedParams","assign","err","PathParamError","message","cause","throwOnError","matches","interpolatedPath","interpolatePath","matchId","existingMatch","getRouteMatch","hasLoaders","loader","some","preload","routeMatch","routeId","params","joinPaths","updatedAt","Date","now","routeSearch","status","isFetching","invalid","error","paramsError","searchError","loadPromise","abortController","AbortController","shouldReloadDeps","fetchedAt","match","parentMatch","searchInfo","parentSearchInfo","validator","validateSearch","searchDidChange","SearchParamError","cancelMatch","abort","cancelMatches","buildLocation","build","dest","fromPathname","fromMatches","stayingMatches","filter","e","prevParams","last","nextParams","functionalUpdate","stringifyParams","Boolean","preSearchFilters","flat","postSearchFilters","preFilteredSearch","reduce","prev","next","destSearch","postFilteredSearch","hashStr","nextState","createHref","unmaskOnReload","buildWithMatches","maskedDest","maskedNext","foundMask","routeMasks","nextMatches","maskedMatches","maskedFinal","final","mask","pick","commitLocation","startTransition","clearTimeout","isSameUrl","replace","nextHistory","apply","resetScroll","buildAndCommitLocation","rest","navigate","toString","fromString","isExternal","URL","loadMatches","latestPromise","firstBadMatchIndex","entries","handleError","code","routerCode","isRedirect","onError","errorHandlerErr","parentContext","beforeLoadContext","beforeLoad","validResolvedMatches","slice","matchPromises","push","parentMatchPromise","handleIfRedirect","loaderContext","shouldReload","deepEqual","loaderData","componentsPromise","all","component","loaderPromise","then","s","onErrorError","load","reject","prevLocation","resolvedLocation","pathDidChange","fromLocation","toLocation","pathChanged","debug","previousMatches","exitingMatchIds","includes","enteringMatchIds","stayingMatchIds","hook","preloadRoute","navigateOpts","buildLink","userPreload","preloadDelay","userPreloadDelay","activeOptions","disabled","target","nextOpts","defaultPreload","currentPathSplit","nextPathSplit","pathIsFuzzyEqual","every","pathTest","exact","hashTest","includeHash","searchTest","includeSearch","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","catch","console","warn","handleTouchStart","handleEnter","preloadTimeout","setTimeout","handleLeave","matchRoute","pending","baseLocation","injectHtml","html","dehydrateData","getData","document","strKey","JSON","stringify","data","escapeJSON","hydrateData","window","lazyFn","args","imported","metaKey","altKey","ctrlKey","shiftKey"],"mappings":"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"}
@@ -10,14 +10,11 @@
10
10
  */
11
11
  'use strict';
12
12
 
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
13
  var React = require('react');
16
14
  var RouterProvider = require('./RouterProvider.js');
17
15
  var utils = require('./utils.js');
18
16
 
19
- function _interopNamespace(e) {
20
- if (e && e.__esModule) return e;
17
+ function _interopNamespaceDefault(e) {
21
18
  var n = Object.create(null);
22
19
  if (e) {
23
20
  Object.keys(e).forEach(function (k) {
@@ -30,11 +27,11 @@ function _interopNamespace(e) {
30
27
  }
31
28
  });
32
29
  }
33
- n["default"] = e;
30
+ n.default = e;
34
31
  return Object.freeze(n);
35
32
  }
36
33
 
37
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
38
35
 
39
36
  const useLayoutEffect = typeof window !== 'undefined' ? React__namespace.useLayoutEffect : React__namespace.useEffect;
40
37
  const windowKey = 'window';
@@ -44,11 +41,7 @@ let cache;
44
41
  const sessionsStorage = typeof window !== 'undefined' && window.sessionStorage;
45
42
  const defaultGetKey = location => location.state.key;
46
43
  function useScrollRestoration(options) {
47
- const {
48
- state,
49
- subscribe,
50
- resetNextScrollRef
51
- } = RouterProvider.useRouter();
44
+ const router = RouterProvider.useRouter();
52
45
  useLayoutEffect(() => {
53
46
  const getKey = options?.getKey || defaultGetKey;
54
47
  if (sessionsStorage) {
@@ -104,7 +97,7 @@ function useScrollRestoration(options) {
104
97
  if (typeof document !== 'undefined') {
105
98
  document.addEventListener('scroll', onScroll, true);
106
99
  }
107
- const unsubOnBeforeLoad = subscribe('onBeforeLoad', event => {
100
+ const unsubOnBeforeLoad = router.subscribe('onBeforeLoad', event => {
108
101
  if (event.pathChanged) {
109
102
  const restoreKey = getKey(event.fromLocation);
110
103
  for (const elementSelector in cache.state.next) {
@@ -134,12 +127,12 @@ function useScrollRestoration(options) {
134
127
  }
135
128
  }
136
129
  });
137
- const unsubOnResolved = subscribe('onResolved', event => {
130
+ const unsubOnResolved = router.subscribe('onResolved', event => {
138
131
  if (event.pathChanged) {
139
- if (!resetNextScrollRef.current) {
132
+ if (!router.resetNextScroll) {
140
133
  return;
141
134
  }
142
- resetNextScrollRef.current = true;
135
+ router.resetNextScroll = true;
143
136
  const getKey = options?.getKey || defaultGetKey;
144
137
  const restoreKey = getKey(event.toLocation);
145
138
  let windowRestored = false;
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-restoration.js","sources":["../../src/scroll-restoration.tsx"],"sourcesContent":["import * as React from 'react'\n\nconst useLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nimport { ParsedLocation } from './location'\nimport { useRouter } from './RouterProvider'\nimport { NonNullableUpdater, functionalUpdate } from './utils'\n\nconst windowKey = 'window'\nconst delimiter = '___'\n\nlet weakScrolledElements = new WeakSet<any>()\n\ntype CacheValue = Record<string, { scrollX: number; scrollY: number }>\ntype CacheState = {\n cached: CacheValue\n next: CacheValue\n}\n\ntype Cache = {\n state: CacheState\n set: (updater: NonNullableUpdater<CacheState>) => void\n}\n\nlet cache: Cache\n\nconst sessionsStorage = typeof window !== 'undefined' && window.sessionStorage\n\nexport type ScrollRestorationOptions = {\n getKey?: (location: ParsedLocation) => string\n}\n\nconst defaultGetKey = (location: ParsedLocation) => location.state.key!\n\nexport function useScrollRestoration(options?: ScrollRestorationOptions) {\n const { state, subscribe, resetNextScrollRef } = useRouter()\n\n useLayoutEffect(() => {\n const getKey = options?.getKey || defaultGetKey\n\n if (sessionsStorage) {\n if (!cache) {\n cache = (() => {\n const storageKey = 'tsr-scroll-restoration-v2'\n\n const state: CacheState = JSON.parse(\n window.sessionStorage.getItem(storageKey) || 'null',\n ) || { cached: {}, next: {} }\n\n return {\n state,\n set: (updater) => {\n cache.state = functionalUpdate(updater, cache.state)\n window.sessionStorage.setItem(\n storageKey,\n JSON.stringify(cache.state),\n )\n },\n }\n })()\n }\n }\n\n const { history } = window\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual'\n }\n\n const onScroll = (event: Event) => {\n if (weakScrolledElements.has(event.target)) return\n weakScrolledElements.add(event.target)\n\n const elementSelector =\n event.target === document || event.target === window\n ? windowKey\n : getCssSelector(event.target)\n\n if (!cache.state.next[elementSelector]) {\n cache.set((c) => ({\n ...c,\n next: {\n ...c.next,\n [elementSelector]: {\n scrollX: NaN,\n scrollY: NaN,\n },\n },\n }))\n }\n }\n\n const getCssSelector = (el: any): string => {\n let path = [],\n parent\n while ((parent = el.parentNode)) {\n path.unshift(\n `${el.tagName}:nth-child(${\n ([].indexOf as any).call(parent.children, el) + 1\n })`,\n )\n el = parent\n }\n return `${path.join(' > ')}`.toLowerCase()\n }\n\n if (typeof document !== 'undefined') {\n document.addEventListener('scroll', onScroll, true)\n }\n\n const unsubOnBeforeLoad = subscribe('onBeforeLoad', (event) => {\n if (event.pathChanged) {\n const restoreKey = getKey(event.fromLocation)\n for (const elementSelector in cache.state.next) {\n const entry = cache.state.next[elementSelector]!\n if (elementSelector === windowKey) {\n entry.scrollX = window.scrollX || 0\n entry.scrollY = window.scrollY || 0\n } else if (elementSelector) {\n const element = document.querySelector(elementSelector)\n entry.scrollX = element?.scrollLeft || 0\n entry.scrollY = element?.scrollTop || 0\n }\n\n cache.set((c) => {\n const next = { ...c.next }\n delete next[elementSelector]\n\n return {\n ...c,\n next,\n cached: {\n ...c.cached,\n [[restoreKey, elementSelector].join(delimiter)]: entry,\n },\n }\n })\n }\n }\n })\n\n const unsubOnResolved = subscribe('onResolved', (event) => {\n if (event.pathChanged) {\n if (!resetNextScrollRef.current) {\n return\n }\n\n resetNextScrollRef.current = true\n\n const getKey = options?.getKey || defaultGetKey\n\n const restoreKey = getKey(event.toLocation)\n let windowRestored = false\n\n for (const cacheKey in cache.state.cached) {\n const entry = cache.state.cached[cacheKey]!\n const [key, elementSelector] = cacheKey.split(delimiter)\n if (key === restoreKey) {\n if (elementSelector === windowKey) {\n windowRestored = true\n window.scrollTo(entry.scrollX, entry.scrollY)\n } else if (elementSelector) {\n const element = document.querySelector(elementSelector)\n if (element) {\n element.scrollLeft = entry.scrollX\n element.scrollTop = entry.scrollY\n }\n }\n }\n }\n\n if (!windowRestored) {\n window.scrollTo(0, 0)\n }\n\n cache.set((c) => ({ ...c, next: {} }))\n weakScrolledElements = new WeakSet<any>()\n }\n })\n\n return () => {\n document.removeEventListener('scroll', onScroll)\n unsubOnBeforeLoad()\n unsubOnResolved()\n }\n }, [])\n}\n\nexport function ScrollRestoration(props: ScrollRestorationOptions) {\n useScrollRestoration(props)\n return null\n}\n"],"names":["useLayoutEffect","window","React","useEffect","windowKey","delimiter","weakScrolledElements","WeakSet","cache","sessionsStorage","sessionStorage","defaultGetKey","location","state","key","useScrollRestoration","options","subscribe","resetNextScrollRef","useRouter","getKey","storageKey","JSON","parse","getItem","cached","next","set","updater","functionalUpdate","setItem","stringify","history","scrollRestoration","onScroll","event","has","target","add","elementSelector","document","getCssSelector","c","scrollX","NaN","scrollY","el","path","parent","parentNode","unshift","tagName","indexOf","call","children","join","toLowerCase","addEventListener","unsubOnBeforeLoad","pathChanged","restoreKey","fromLocation","entry","element","querySelector","scrollLeft","scrollTop","unsubOnResolved","current","toLocation","windowRestored","cacheKey","split","scrollTo","removeEventListener","ScrollRestoration","props"],"mappings":"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"}
1
+ {"version":3,"file":"scroll-restoration.js","sources":["../../src/scroll-restoration.tsx"],"sourcesContent":["import * as React from 'react'\n\nconst useLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect\n\nimport { ParsedLocation } from './location'\nimport { useRouter } from './RouterProvider'\nimport { NonNullableUpdater, functionalUpdate } from './utils'\n\nconst windowKey = 'window'\nconst delimiter = '___'\n\nlet weakScrolledElements = new WeakSet<any>()\n\ntype CacheValue = Record<string, { scrollX: number; scrollY: number }>\ntype CacheState = {\n cached: CacheValue\n next: CacheValue\n}\n\ntype Cache = {\n state: CacheState\n set: (updater: NonNullableUpdater<CacheState>) => void\n}\n\nlet cache: Cache\n\nconst sessionsStorage = typeof window !== 'undefined' && window.sessionStorage\n\nexport type ScrollRestorationOptions = {\n getKey?: (location: ParsedLocation) => string\n}\n\nconst defaultGetKey = (location: ParsedLocation) => location.state.key!\n\nexport function useScrollRestoration(options?: ScrollRestorationOptions) {\n const router = useRouter()\n\n useLayoutEffect(() => {\n const getKey = options?.getKey || defaultGetKey\n\n if (sessionsStorage) {\n if (!cache) {\n cache = (() => {\n const storageKey = 'tsr-scroll-restoration-v2'\n\n const state: CacheState = JSON.parse(\n window.sessionStorage.getItem(storageKey) || 'null',\n ) || { cached: {}, next: {} }\n\n return {\n state,\n set: (updater) => {\n cache.state = functionalUpdate(updater, cache.state)\n window.sessionStorage.setItem(\n storageKey,\n JSON.stringify(cache.state),\n )\n },\n }\n })()\n }\n }\n\n const { history } = window\n if (history.scrollRestoration) {\n history.scrollRestoration = 'manual'\n }\n\n const onScroll = (event: Event) => {\n if (weakScrolledElements.has(event.target)) return\n weakScrolledElements.add(event.target)\n\n const elementSelector =\n event.target === document || event.target === window\n ? windowKey\n : getCssSelector(event.target)\n\n if (!cache.state.next[elementSelector]) {\n cache.set((c) => ({\n ...c,\n next: {\n ...c.next,\n [elementSelector]: {\n scrollX: NaN,\n scrollY: NaN,\n },\n },\n }))\n }\n }\n\n const getCssSelector = (el: any): string => {\n let path = [],\n parent\n while ((parent = el.parentNode)) {\n path.unshift(\n `${el.tagName}:nth-child(${\n ([].indexOf as any).call(parent.children, el) + 1\n })`,\n )\n el = parent\n }\n return `${path.join(' > ')}`.toLowerCase()\n }\n\n if (typeof document !== 'undefined') {\n document.addEventListener('scroll', onScroll, true)\n }\n\n const unsubOnBeforeLoad = router.subscribe('onBeforeLoad', (event) => {\n if (event.pathChanged) {\n const restoreKey = getKey(event.fromLocation)\n for (const elementSelector in cache.state.next) {\n const entry = cache.state.next[elementSelector]!\n if (elementSelector === windowKey) {\n entry.scrollX = window.scrollX || 0\n entry.scrollY = window.scrollY || 0\n } else if (elementSelector) {\n const element = document.querySelector(elementSelector)\n entry.scrollX = element?.scrollLeft || 0\n entry.scrollY = element?.scrollTop || 0\n }\n\n cache.set((c) => {\n const next = { ...c.next }\n delete next[elementSelector]\n\n return {\n ...c,\n next,\n cached: {\n ...c.cached,\n [[restoreKey, elementSelector].join(delimiter)]: entry,\n },\n }\n })\n }\n }\n })\n\n const unsubOnResolved = router.subscribe('onResolved', (event) => {\n if (event.pathChanged) {\n if (!router.resetNextScroll) {\n return\n }\n\n router.resetNextScroll = true\n\n const getKey = options?.getKey || defaultGetKey\n\n const restoreKey = getKey(event.toLocation)\n let windowRestored = false\n\n for (const cacheKey in cache.state.cached) {\n const entry = cache.state.cached[cacheKey]!\n const [key, elementSelector] = cacheKey.split(delimiter)\n if (key === restoreKey) {\n if (elementSelector === windowKey) {\n windowRestored = true\n window.scrollTo(entry.scrollX, entry.scrollY)\n } else if (elementSelector) {\n const element = document.querySelector(elementSelector)\n if (element) {\n element.scrollLeft = entry.scrollX\n element.scrollTop = entry.scrollY\n }\n }\n }\n }\n\n if (!windowRestored) {\n window.scrollTo(0, 0)\n }\n\n cache.set((c) => ({ ...c, next: {} }))\n weakScrolledElements = new WeakSet<any>()\n }\n })\n\n return () => {\n document.removeEventListener('scroll', onScroll)\n unsubOnBeforeLoad()\n unsubOnResolved()\n }\n }, [])\n}\n\nexport function ScrollRestoration(props: ScrollRestorationOptions) {\n useScrollRestoration(props)\n return null\n}\n"],"names":["useLayoutEffect","window","React","useEffect","windowKey","delimiter","weakScrolledElements","WeakSet","cache","sessionsStorage","sessionStorage","defaultGetKey","location","state","key","useScrollRestoration","options","router","useRouter","getKey","storageKey","JSON","parse","getItem","cached","next","set","updater","functionalUpdate","setItem","stringify","history","scrollRestoration","onScroll","event","has","target","add","elementSelector","document","getCssSelector","c","scrollX","NaN","scrollY","el","path","parent","parentNode","unshift","tagName","indexOf","call","children","join","toLowerCase","addEventListener","unsubOnBeforeLoad","subscribe","pathChanged","restoreKey","fromLocation","entry","element","querySelector","scrollLeft","scrollTop","unsubOnResolved","resetNextScroll","toLocation","windowRestored","cacheKey","split","scrollTo","removeEventListener","ScrollRestoration","props"],"mappings":"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"}
@@ -10,8 +10,6 @@
10
10
  */
11
11
  'use strict';
12
12
 
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
13
  var qss = require('./qss.js');
16
14
 
17
15
  const defaultParseSearch = parseSearchWith(JSON.parse);
@@ -1 +1 @@
1
- {"version":3,"file":"searchParams.js","sources":["../../src/searchParams.ts"],"sourcesContent":["import { decode, encode } from './qss'\nimport { AnySearchSchema } from './route'\n\nexport const defaultParseSearch = parseSearchWith(JSON.parse)\nexport const defaultStringifySearch = stringifySearchWith(\n JSON.stringify,\n JSON.parse,\n)\n\nexport function parseSearchWith(parser: (str: string) => any) {\n return (searchStr: string): AnySearchSchema => {\n if (searchStr.substring(0, 1) === '?') {\n searchStr = searchStr.substring(1)\n }\n\n let query: Record<string, unknown> = decode(searchStr)\n\n // Try to parse any query params that might be json\n for (let key in query) {\n const value = query[key]\n if (typeof value === 'string') {\n try {\n query[key] = parser(value)\n } catch (err) {\n //\n }\n }\n }\n\n return query\n }\n}\n\nexport function stringifySearchWith(\n stringify: (search: any) => string,\n parser?: (str: string) => any,\n) {\n function stringifyValue(val: any) {\n if (typeof val === 'object' && val !== null) {\n try {\n return stringify(val)\n } catch (err) {\n // silent\n }\n } else if (typeof val === 'string' && typeof parser === 'function') {\n try {\n // Check if it's a valid parseable string.\n // If it is, then stringify it again.\n parser(val)\n return stringify(val)\n } catch (err) {\n // silent\n }\n }\n return val\n }\n\n return (search: Record<string, any>) => {\n search = { ...search }\n\n if (search) {\n Object.keys(search).forEach((key) => {\n const val = search[key]\n if (typeof val === 'undefined' || val === undefined) {\n delete search[key]\n } else {\n search[key] = stringifyValue(val)\n }\n })\n }\n\n const searchStr = encode(search as Record<string, string>).toString()\n\n return searchStr ? `?${searchStr}` : ''\n }\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\n"],"names":["defaultParseSearch","parseSearchWith","JSON","parse","defaultStringifySearch","stringifySearchWith","stringify","parser","searchStr","substring","query","decode","key","value","err","stringifyValue","val","search","Object","keys","forEach","undefined","encode","toString"],"mappings":";;;;;;;;;;;;;;;;AAGO,MAAMA,kBAAkB,GAAGC,eAAe,CAACC,IAAI,CAACC,KAAK,EAAC;AAChDC,MAAAA,sBAAsB,GAAGC,mBAAmB,CACvDH,IAAI,CAACI,SAAS,EACdJ,IAAI,CAACC,KACP,EAAC;AAEM,SAASF,eAAeA,CAACM,MAA4B,EAAE;AAC5D,EAAA,OAAQC,SAAiB,IAAsB;IAC7C,IAAIA,SAAS,CAACC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;AACrCD,MAAAA,SAAS,GAAGA,SAAS,CAACC,SAAS,CAAC,CAAC,CAAC,CAAA;AACpC,KAAA;AAEA,IAAA,IAAIC,KAA8B,GAAGC,UAAM,CAACH,SAAS,CAAC,CAAA;;AAEtD;AACA,IAAA,KAAK,IAAII,GAAG,IAAIF,KAAK,EAAE;AACrB,MAAA,MAAMG,KAAK,GAAGH,KAAK,CAACE,GAAG,CAAC,CAAA;AACxB,MAAA,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;QAC7B,IAAI;AACFH,UAAAA,KAAK,CAACE,GAAG,CAAC,GAAGL,MAAM,CAACM,KAAK,CAAC,CAAA;SAC3B,CAAC,OAAOC,GAAG,EAAE;AACZ;AAAA,SAAA;AAEJ,OAAA;AACF,KAAA;AAEA,IAAA,OAAOJ,KAAK,CAAA;GACb,CAAA;AACH,CAAA;AAEO,SAASL,mBAAmBA,CACjCC,SAAkC,EAClCC,MAA6B,EAC7B;EACA,SAASQ,cAAcA,CAACC,GAAQ,EAAE;IAChC,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,EAAE;MAC3C,IAAI;QACF,OAAOV,SAAS,CAACU,GAAG,CAAC,CAAA;OACtB,CAAC,OAAOF,GAAG,EAAE;AACZ;AAAA,OAAA;KAEH,MAAM,IAAI,OAAOE,GAAG,KAAK,QAAQ,IAAI,OAAOT,MAAM,KAAK,UAAU,EAAE;MAClE,IAAI;AACF;AACA;QACAA,MAAM,CAACS,GAAG,CAAC,CAAA;QACX,OAAOV,SAAS,CAACU,GAAG,CAAC,CAAA;OACtB,CAAC,OAAOF,GAAG,EAAE;AACZ;AAAA,OAAA;AAEJ,KAAA;AACA,IAAA,OAAOE,GAAG,CAAA;AACZ,GAAA;AAEA,EAAA,OAAQC,MAA2B,IAAK;AACtCA,IAAAA,MAAM,GAAG;MAAE,GAAGA,MAAAA;KAAQ,CAAA;AAEtB,IAAA,IAAIA,MAAM,EAAE;MACVC,MAAM,CAACC,IAAI,CAACF,MAAM,CAAC,CAACG,OAAO,CAAER,GAAG,IAAK;AACnC,QAAA,MAAMI,GAAG,GAAGC,MAAM,CAACL,GAAG,CAAC,CAAA;QACvB,IAAI,OAAOI,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAKK,SAAS,EAAE;UACnD,OAAOJ,MAAM,CAACL,GAAG,CAAC,CAAA;AACpB,SAAC,MAAM;AACLK,UAAAA,MAAM,CAACL,GAAG,CAAC,GAAGG,cAAc,CAACC,GAAG,CAAC,CAAA;AACnC,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;IAEA,MAAMR,SAAS,GAAGc,UAAM,CAACL,MAAgC,CAAC,CAACM,QAAQ,EAAE,CAAA;AAErE,IAAA,OAAOf,SAAS,GAAI,CAAA,CAAA,EAAGA,SAAU,CAAA,CAAC,GAAG,EAAE,CAAA;GACxC,CAAA;AACH;;;;;;;"}
1
+ {"version":3,"file":"searchParams.js","sources":["../../src/searchParams.ts"],"sourcesContent":["import { decode, encode } from './qss'\nimport { AnySearchSchema } from './route'\n\nexport const defaultParseSearch = parseSearchWith(JSON.parse)\nexport const defaultStringifySearch = stringifySearchWith(\n JSON.stringify,\n JSON.parse,\n)\n\nexport function parseSearchWith(parser: (str: string) => any) {\n return (searchStr: string): AnySearchSchema => {\n if (searchStr.substring(0, 1) === '?') {\n searchStr = searchStr.substring(1)\n }\n\n let query: Record<string, unknown> = decode(searchStr)\n\n // Try to parse any query params that might be json\n for (let key in query) {\n const value = query[key]\n if (typeof value === 'string') {\n try {\n query[key] = parser(value)\n } catch (err) {\n //\n }\n }\n }\n\n return query\n }\n}\n\nexport function stringifySearchWith(\n stringify: (search: any) => string,\n parser?: (str: string) => any,\n) {\n function stringifyValue(val: any) {\n if (typeof val === 'object' && val !== null) {\n try {\n return stringify(val)\n } catch (err) {\n // silent\n }\n } else if (typeof val === 'string' && typeof parser === 'function') {\n try {\n // Check if it's a valid parseable string.\n // If it is, then stringify it again.\n parser(val)\n return stringify(val)\n } catch (err) {\n // silent\n }\n }\n return val\n }\n\n return (search: Record<string, any>) => {\n search = { ...search }\n\n if (search) {\n Object.keys(search).forEach((key) => {\n const val = search[key]\n if (typeof val === 'undefined' || val === undefined) {\n delete search[key]\n } else {\n search[key] = stringifyValue(val)\n }\n })\n }\n\n const searchStr = encode(search as Record<string, string>).toString()\n\n return searchStr ? `?${searchStr}` : ''\n }\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\n"],"names":["defaultParseSearch","parseSearchWith","JSON","parse","defaultStringifySearch","stringifySearchWith","stringify","parser","searchStr","substring","query","decode","key","value","err","stringifyValue","val","search","Object","keys","forEach","undefined","encode","toString"],"mappings":";;;;;;;;;;;;;;AAGO,MAAMA,kBAAkB,GAAGC,eAAe,CAACC,IAAI,CAACC,KAAK,EAAC;AAChDC,MAAAA,sBAAsB,GAAGC,mBAAmB,CACvDH,IAAI,CAACI,SAAS,EACdJ,IAAI,CAACC,KACP,EAAC;AAEM,SAASF,eAAeA,CAACM,MAA4B,EAAE;AAC5D,EAAA,OAAQC,SAAiB,IAAsB;IAC7C,IAAIA,SAAS,CAACC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;AACrCD,MAAAA,SAAS,GAAGA,SAAS,CAACC,SAAS,CAAC,CAAC,CAAC,CAAA;AACpC,KAAA;AAEA,IAAA,IAAIC,KAA8B,GAAGC,UAAM,CAACH,SAAS,CAAC,CAAA;;AAEtD;AACA,IAAA,KAAK,IAAII,GAAG,IAAIF,KAAK,EAAE;AACrB,MAAA,MAAMG,KAAK,GAAGH,KAAK,CAACE,GAAG,CAAC,CAAA;AACxB,MAAA,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;QAC7B,IAAI;AACFH,UAAAA,KAAK,CAACE,GAAG,CAAC,GAAGL,MAAM,CAACM,KAAK,CAAC,CAAA;SAC3B,CAAC,OAAOC,GAAG,EAAE;AACZ;AAAA,SAAA;AAEJ,OAAA;AACF,KAAA;AAEA,IAAA,OAAOJ,KAAK,CAAA;GACb,CAAA;AACH,CAAA;AAEO,SAASL,mBAAmBA,CACjCC,SAAkC,EAClCC,MAA6B,EAC7B;EACA,SAASQ,cAAcA,CAACC,GAAQ,EAAE;IAChC,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,EAAE;MAC3C,IAAI;QACF,OAAOV,SAAS,CAACU,GAAG,CAAC,CAAA;OACtB,CAAC,OAAOF,GAAG,EAAE;AACZ;AAAA,OAAA;KAEH,MAAM,IAAI,OAAOE,GAAG,KAAK,QAAQ,IAAI,OAAOT,MAAM,KAAK,UAAU,EAAE;MAClE,IAAI;AACF;AACA;QACAA,MAAM,CAACS,GAAG,CAAC,CAAA;QACX,OAAOV,SAAS,CAACU,GAAG,CAAC,CAAA;OACtB,CAAC,OAAOF,GAAG,EAAE;AACZ;AAAA,OAAA;AAEJ,KAAA;AACA,IAAA,OAAOE,GAAG,CAAA;AACZ,GAAA;AAEA,EAAA,OAAQC,MAA2B,IAAK;AACtCA,IAAAA,MAAM,GAAG;MAAE,GAAGA,MAAAA;KAAQ,CAAA;AAEtB,IAAA,IAAIA,MAAM,EAAE;MACVC,MAAM,CAACC,IAAI,CAACF,MAAM,CAAC,CAACG,OAAO,CAAER,GAAG,IAAK;AACnC,QAAA,MAAMI,GAAG,GAAGC,MAAM,CAACL,GAAG,CAAC,CAAA;QACvB,IAAI,OAAOI,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAKK,SAAS,EAAE;UACnD,OAAOJ,MAAM,CAACL,GAAG,CAAC,CAAA;AACpB,SAAC,MAAM;AACLK,UAAAA,MAAM,CAACL,GAAG,CAAC,GAAGG,cAAc,CAACC,GAAG,CAAC,CAAA;AACnC,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;IAEA,MAAMR,SAAS,GAAGc,UAAM,CAACL,MAAgC,CAAC,CAACM,QAAQ,EAAE,CAAA;AAErE,IAAA,OAAOf,SAAS,GAAI,CAAA,CAAA,EAAGA,SAAU,CAAA,CAAC,GAAG,EAAE,CAAA;GACxC,CAAA;AACH;;;;;;;"}
@@ -10,13 +10,10 @@
10
10
  */
11
11
  'use strict';
12
12
 
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
13
  var React = require('react');
16
14
  var RouterProvider = require('./RouterProvider.js');
17
15
 
18
- function _interopNamespace(e) {
19
- if (e && e.__esModule) return e;
16
+ function _interopNamespaceDefault(e) {
20
17
  var n = Object.create(null);
21
18
  if (e) {
22
19
  Object.keys(e).forEach(function (k) {
@@ -29,11 +26,11 @@ function _interopNamespace(e) {
29
26
  }
30
27
  });
31
28
  }
32
- n["default"] = e;
29
+ n.default = e;
33
30
  return Object.freeze(n);
34
31
  }
35
32
 
36
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
37
34
 
38
35
  function useBlocker(message, condition = true) {
39
36
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"useBlocker.js","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { ReactNode } from './route'\nimport { useRouter } from './RouterProvider'\n\nexport function useBlocker(\n message: string,\n condition: boolean | any = true,\n): void {\n const { history } = useRouter()\n\n React.useEffect(() => {\n if (!condition) return\n\n let unblock = history.block((retry, cancel) => {\n if (window.confirm(message)) {\n unblock()\n retry()\n }\n })\n\n return unblock\n })\n}\n\nexport function Block({ message, condition, children }: PromptProps) {\n useBlocker(message, condition)\n return (children ?? null) as ReactNode\n}\n\nexport type PromptProps = {\n message: string\n condition?: boolean | any\n children?: ReactNode\n}\n"],"names":["useBlocker","message","condition","history","useRouter","React","useEffect","unblock","block","retry","cancel","window","confirm","Block","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAASA,UAAUA,CACxBC,OAAe,EACfC,SAAwB,GAAG,IAAI,EACzB;EACN,MAAM;AAAEC,IAAAA,OAAAA;GAAS,GAAGC,wBAAS,EAAE,CAAA;EAE/BC,gBAAK,CAACC,SAAS,CAAC,MAAM;IACpB,IAAI,CAACJ,SAAS,EAAE,OAAA;IAEhB,IAAIK,OAAO,GAAGJ,OAAO,CAACK,KAAK,CAAC,CAACC,KAAK,EAAEC,MAAM,KAAK;AAC7C,MAAA,IAAIC,MAAM,CAACC,OAAO,CAACX,OAAO,CAAC,EAAE;AAC3BM,QAAAA,OAAO,EAAE,CAAA;AACTE,QAAAA,KAAK,EAAE,CAAA;AACT,OAAA;AACF,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOF,OAAO,CAAA;AAChB,GAAC,CAAC,CAAA;AACJ,CAAA;AAEO,SAASM,KAAKA,CAAC;EAAEZ,OAAO;EAAEC,SAAS;AAAEY,EAAAA,QAAAA;AAAsB,CAAC,EAAE;AACnEd,EAAAA,UAAU,CAACC,OAAO,EAAEC,SAAS,CAAC,CAAA;EAC9B,OAAQY,QAAQ,IAAI,IAAI,CAAA;AAC1B;;;;;"}
1
+ {"version":3,"file":"useBlocker.js","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { ReactNode } from './route'\nimport { useRouter } from './RouterProvider'\n\nexport function useBlocker(\n message: string,\n condition: boolean | any = true,\n): void {\n const { history } = useRouter()\n\n React.useEffect(() => {\n if (!condition) return\n\n let unblock = history.block((retry, cancel) => {\n if (window.confirm(message)) {\n unblock()\n retry()\n }\n })\n\n return unblock\n })\n}\n\nexport function Block({ message, condition, children }: PromptProps) {\n useBlocker(message, condition)\n return (children ?? null) as ReactNode\n}\n\nexport type PromptProps = {\n message: string\n condition?: boolean | any\n children?: ReactNode\n}\n"],"names":["useBlocker","message","condition","history","useRouter","React","useEffect","unblock","block","retry","cancel","window","confirm","Block","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAASA,UAAUA,CACxBC,OAAe,EACfC,SAAwB,GAAG,IAAI,EACzB;EACN,MAAM;AAAEC,IAAAA,OAAAA;GAAS,GAAGC,wBAAS,EAAE,CAAA;EAE/BC,gBAAK,CAACC,SAAS,CAAC,MAAM;IACpB,IAAI,CAACJ,SAAS,EAAE,OAAA;IAEhB,IAAIK,OAAO,GAAGJ,OAAO,CAACK,KAAK,CAAC,CAACC,KAAK,EAAEC,MAAM,KAAK;AAC7C,MAAA,IAAIC,MAAM,CAACC,OAAO,CAACX,OAAO,CAAC,EAAE;AAC3BM,QAAAA,OAAO,EAAE,CAAA;AACTE,QAAAA,KAAK,EAAE,CAAA;AACT,OAAA;AACF,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOF,OAAO,CAAA;AAChB,GAAC,CAAC,CAAA;AACJ,CAAA;AAEO,SAASM,KAAKA,CAAC;EAAEZ,OAAO;EAAEC,SAAS;AAAEY,EAAAA,QAAAA;AAAsB,CAAC,EAAE;AACnEd,EAAAA,UAAU,CAACC,OAAO,EAAEC,SAAS,CAAC,CAAA;EAC9B,OAAQY,QAAQ,IAAI,IAAI,CAAA;AAC1B;;;;;"}
@@ -10,15 +10,12 @@
10
10
  */
11
11
  'use strict';
12
12
 
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
13
  var React = require('react');
16
14
  var Matches = require('./Matches.js');
17
15
  var RouterProvider = require('./RouterProvider.js');
18
16
  var utils = require('./utils.js');
19
17
 
20
- function _interopNamespace(e) {
21
- if (e && e.__esModule) return e;
18
+ function _interopNamespaceDefault(e) {
22
19
  var n = Object.create(null);
23
20
  if (e) {
24
21
  Object.keys(e).forEach(function (k) {
@@ -31,11 +28,11 @@ function _interopNamespace(e) {
31
28
  }
32
29
  });
33
30
  }
34
- n["default"] = e;
31
+ n.default = e;
35
32
  return Object.freeze(n);
36
33
  }
37
34
 
38
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
35
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
39
36
 
40
37
  function useNavigate(defaultOpts) {
41
38
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigate.js","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useMatch } from './Matches'\nimport { useRouter } from './RouterProvider'\nimport { LinkOptions, NavigateOptions } from './link'\nimport { AnyRoute } from './route'\nimport { RoutePaths } from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { useLayoutEffect } from './utils'\n\nexport function useNavigate<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n>(defaultOpts?: { from?: TDefaultFrom }) {\n const { navigate } = useRouter()\n const match = useMatch({\n strict: false,\n })\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n >(\n opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ) => {\n return navigate({\n from: opts?.to ? match.pathname : undefined,\n ...defaultOpts,\n ...(opts as any),\n })\n },\n [],\n )\n}\n\nexport function typedNavigate<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n>(navigate: (opts: NavigateOptions<any>) => Promise<void>) {\n return navigate as <\n TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n >(\n opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ) => Promise<void>\n} //\n\nexport function Navigate<\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>(props: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const { navigate } = useRouter()\n const match = useMatch({ strict: false })\n\n useLayoutEffect(() => {\n navigate({\n from: props.to ? match.pathname : undefined,\n ...props,\n } as any)\n }, [])\n\n return null\n}\n\nexport type MakeLinkPropsOptions<\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> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n\nexport type MakeLinkOptions<\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> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> & {\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 | React.ReactNode\n | ((state: { isActive: boolean }) => React.ReactNode)\n }\n\nexport type LinkPropsOptions<\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> = LinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // A function that returns additional props for the `active` state of this link. These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated)\n activeProps?:\n | React.AnchorHTMLAttributes<HTMLAnchorElement>\n | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>)\n // A function that returns additional props for the `inactive` state of this link. These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated)\n inactiveProps?:\n | React.AnchorHTMLAttributes<HTMLAnchorElement>\n | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>)\n}\n"],"names":["useNavigate","defaultOpts","navigate","useRouter","match","useMatch","strict","React","useCallback","opts","from","to","pathname","undefined","typedNavigate","Navigate","props","useLayoutEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,SAASA,WAAWA,CAGzBC,WAAqC,EAAE;EACvC,MAAM;AAAEC,IAAAA,QAAAA;GAAU,GAAGC,wBAAS,EAAE,CAAA;EAChC,MAAMC,KAAK,GAAGC,gBAAQ,CAAC;AACrBC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAC,CAAC,CAAA;AACF,EAAA,OAAOC,gBAAK,CAACC,WAAW,CAOpBC,IAAkE,IAC/D;AACH,IAAA,OAAOP,QAAQ,CAAC;MACdQ,IAAI,EAAED,IAAI,EAAEE,EAAE,GAAGP,KAAK,CAACQ,QAAQ,GAAGC,SAAS;AAC3C,MAAA,GAAGZ,WAAW;MACd,GAAIQ,IAAAA;AACN,KAAC,CAAC,CAAA;GACH,EACD,EACF,CAAC,CAAA;AACH,CAAA;AAEO,SAASK,aAAaA,CAG3BZ,QAAuD,EAAE;AACzD,EAAA,OAAOA,QAAQ,CAAA;AAQjB,CAAC;;AAEM,SAASa,QAAQA,CAMtBC,KAAkE,EAAQ;EAC1E,MAAM;AAAEd,IAAAA,QAAAA;GAAU,GAAGC,wBAAS,EAAE,CAAA;EAChC,MAAMC,KAAK,GAAGC,gBAAQ,CAAC;AAAEC,IAAAA,MAAM,EAAE,KAAA;AAAM,GAAC,CAAC,CAAA;AAEzCW,EAAAA,qBAAe,CAAC,MAAM;AACpBf,IAAAA,QAAQ,CAAC;MACPQ,IAAI,EAAEM,KAAK,CAACL,EAAE,GAAGP,KAAK,CAACQ,QAAQ,GAAGC,SAAS;MAC3C,GAAGG,KAAAA;AACL,KAAQ,CAAC,CAAA;GACV,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;"}
1
+ {"version":3,"file":"useNavigate.js","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useMatch } from './Matches'\nimport { useRouter } from './RouterProvider'\nimport { LinkOptions, NavigateOptions } from './link'\nimport { AnyRoute } from './route'\nimport { RoutePaths } from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { useLayoutEffect } from './utils'\n\nexport function useNavigate<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n>(defaultOpts?: { from?: TDefaultFrom }) {\n const { navigate } = useRouter()\n const match = useMatch({\n strict: false,\n })\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n >(\n opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ) => {\n return navigate({\n from: opts?.to ? match.pathname : undefined,\n ...defaultOpts,\n ...(opts as any),\n })\n },\n [],\n )\n}\n\nexport function typedNavigate<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDefaultFrom extends RoutePaths<TRouteTree> = '/',\n>(navigate: (opts: NavigateOptions<any>) => Promise<void>) {\n return navigate as <\n TFrom extends RoutePaths<TRouteTree> = TDefaultFrom,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = '/',\n TMaskTo extends string = '',\n >(\n opts?: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ) => Promise<void>\n} //\n\nexport function Navigate<\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>(props: NavigateOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const { navigate } = useRouter()\n const match = useMatch({ strict: false })\n\n useLayoutEffect(() => {\n navigate({\n from: props.to ? match.pathname : undefined,\n ...props,\n } as any)\n }, [])\n\n return null\n}\n\nexport type MakeLinkPropsOptions<\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> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n\nexport type MakeLinkOptions<\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> = LinkPropsOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> &\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> & {\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 | React.ReactNode\n | ((state: { isActive: boolean }) => React.ReactNode)\n }\n\nexport type LinkPropsOptions<\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> = LinkOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // A function that returns additional props for the `active` state of this link. These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated)\n activeProps?:\n | React.AnchorHTMLAttributes<HTMLAnchorElement>\n | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>)\n // A function that returns additional props for the `inactive` state of this link. These props override other props passed to the link (`style`'s are merged, `className`'s are concatenated)\n inactiveProps?:\n | React.AnchorHTMLAttributes<HTMLAnchorElement>\n | (() => React.AnchorHTMLAttributes<HTMLAnchorElement>)\n}\n"],"names":["useNavigate","defaultOpts","navigate","useRouter","match","useMatch","strict","React","useCallback","opts","from","to","pathname","undefined","typedNavigate","Navigate","props","useLayoutEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,SAASA,WAAWA,CAGzBC,WAAqC,EAAE;EACvC,MAAM;AAAEC,IAAAA,QAAAA;GAAU,GAAGC,wBAAS,EAAE,CAAA;EAChC,MAAMC,KAAK,GAAGC,gBAAQ,CAAC;AACrBC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAC,CAAC,CAAA;AACF,EAAA,OAAOC,gBAAK,CAACC,WAAW,CAOpBC,IAAkE,IAC/D;AACH,IAAA,OAAOP,QAAQ,CAAC;MACdQ,IAAI,EAAED,IAAI,EAAEE,EAAE,GAAGP,KAAK,CAACQ,QAAQ,GAAGC,SAAS;AAC3C,MAAA,GAAGZ,WAAW;MACd,GAAIQ,IAAAA;AACN,KAAC,CAAC,CAAA;GACH,EACD,EACF,CAAC,CAAA;AACH,CAAA;AAEO,SAASK,aAAaA,CAG3BZ,QAAuD,EAAE;AACzD,EAAA,OAAOA,QAAQ,CAAA;AAQjB,CAAC;;AAEM,SAASa,QAAQA,CAMtBC,KAAkE,EAAQ;EAC1E,MAAM;AAAEd,IAAAA,QAAAA;GAAU,GAAGC,wBAAS,EAAE,CAAA;EAChC,MAAMC,KAAK,GAAGC,gBAAQ,CAAC;AAAEC,IAAAA,MAAM,EAAE,KAAA;AAAM,GAAC,CAAC,CAAA;AAEzCW,EAAAA,qBAAe,CAAC,MAAM;AACpBf,IAAAA,QAAQ,CAAC;MACPQ,IAAI,EAAEM,KAAK,CAACL,EAAE,GAAGP,KAAK,CAACQ,QAAQ,GAAGC,SAAS;MAC3C,GAAGG,KAAAA;AACL,KAAQ,CAAC,CAAA;GACV,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;"}
@@ -10,8 +10,6 @@
10
10
  */
11
11
  'use strict';
12
12
 
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
13
  var utils = require('./utils.js');
16
14
  var RouterProvider = require('./RouterProvider.js');
17
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"useParams.js","sources":["../../src/useParams.tsx"],"sourcesContent":["import { AnyRoute } from './route'\nimport { RouteIds, RouteById, AllParams } from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { last } from './utils'\nimport { useRouterState } from './RouterProvider'\nimport { StrictOrFrom } from './utils'\n\nexport function useParams<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TDefaultSelected = AllParams<TRouteTree> &\n RouteById<TRouteTree, TFrom>['types']['allParams'],\n TSelected = TDefaultSelected,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (search: TDefaultSelected) => TSelected\n },\n): TSelected {\n return useRouterState({\n select: (state: any) => {\n const params = (last(state.matches) as any)?.params\n return opts?.select ? opts.select(params) : params\n },\n })\n}\n"],"names":["useParams","opts","useRouterState","select","state","params","last","matches"],"mappings":";;;;;;;;;;;;;;;;;AAOO,SAASA,SAASA,CAOvBC,IAEC,EACU;AACX,EAAA,OAAOC,6BAAc,CAAC;IACpBC,MAAM,EAAGC,KAAU,IAAK;MACtB,MAAMC,MAAM,GAAIC,UAAI,CAACF,KAAK,CAACG,OAAO,CAAC,EAAUF,MAAM,CAAA;MACnD,OAAOJ,IAAI,EAAEE,MAAM,GAAGF,IAAI,CAACE,MAAM,CAACE,MAAM,CAAC,GAAGA,MAAM,CAAA;AACpD,KAAA;AACF,GAAC,CAAC,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"useParams.js","sources":["../../src/useParams.tsx"],"sourcesContent":["import { AnyRoute } from './route'\nimport { RouteIds, RouteById, AllParams } from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { last } from './utils'\nimport { useRouterState } from './RouterProvider'\nimport { StrictOrFrom } from './utils'\n\nexport function useParams<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TDefaultSelected = AllParams<TRouteTree> &\n RouteById<TRouteTree, TFrom>['types']['allParams'],\n TSelected = TDefaultSelected,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (search: TDefaultSelected) => TSelected\n },\n): TSelected {\n return useRouterState({\n select: (state: any) => {\n const params = (last(state.matches) as any)?.params\n return opts?.select ? opts.select(params) : params\n },\n })\n}\n"],"names":["useParams","opts","useRouterState","select","state","params","last","matches"],"mappings":";;;;;;;;;;;;;;;AAOO,SAASA,SAASA,CAOvBC,IAEC,EACU;AACX,EAAA,OAAOC,6BAAc,CAAC;IACpBC,MAAM,EAAGC,KAAU,IAAK;MACtB,MAAMC,MAAM,GAAIC,UAAI,CAACF,KAAK,CAACG,OAAO,CAAC,EAAUF,MAAM,CAAA;MACnD,OAAOJ,IAAI,EAAEE,MAAM,GAAGF,IAAI,CAACE,MAAM,CAACE,MAAM,CAAC,GAAGA,MAAM,CAAA;AACpD,KAAA;AACF,GAAC,CAAC,CAAA;AACJ;;;;"}
@@ -10,8 +10,6 @@
10
10
  */
11
11
  'use strict';
12
12
 
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
13
  var Matches = require('./Matches.js');
16
14
 
17
15
  function useSearch(opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"useSearch.js","sources":["../../src/useSearch.tsx"],"sourcesContent":["import { AnyRoute } from './route'\nimport { RouteIds, RouteById } from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { RouteMatch } from './Matches'\nimport { useMatch } from './Matches'\nimport { StrictOrFrom } from './utils'\n\nexport function useSearch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TSearch = RouteById<TRouteTree, TFrom>['types']['fullSearchSchema'],\n TSelected = TSearch,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (search: TSearch) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) => {\n return opts?.select ? opts.select(match.search as TSearch) : match.search\n },\n })\n}\n"],"names":["useSearch","opts","useMatch","select","match","search"],"mappings":";;;;;;;;;;;;;;;;AAOO,SAASA,SAASA,CAOvBC,IAEC,EACyD;AAC1D,EAAA,OAAOC,gBAAQ,CAAC;AACd,IAAA,GAAID,IAAY;IAChBE,MAAM,EAAGC,KAAiB,IAAK;AAC7B,MAAA,OAAOH,IAAI,EAAEE,MAAM,GAAGF,IAAI,CAACE,MAAM,CAACC,KAAK,CAACC,MAAiB,CAAC,GAAGD,KAAK,CAACC,MAAM,CAAA;AAC3E,KAAA;AACF,GAAC,CAAC,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"useSearch.js","sources":["../../src/useSearch.tsx"],"sourcesContent":["import { AnyRoute } from './route'\nimport { RouteIds, RouteById } from './routeInfo'\nimport { RegisteredRouter } from './router'\nimport { RouteMatch } from './Matches'\nimport { useMatch } from './Matches'\nimport { StrictOrFrom } from './utils'\n\nexport function useSearch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TStrict extends boolean = true,\n TSearch = RouteById<TRouteTree, TFrom>['types']['fullSearchSchema'],\n TSelected = TSearch,\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (search: TSearch) => TSelected\n },\n): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) => {\n return opts?.select ? opts.select(match.search as TSearch) : match.search\n },\n })\n}\n"],"names":["useSearch","opts","useMatch","select","match","search"],"mappings":";;;;;;;;;;;;;;AAOO,SAASA,SAASA,CAOvBC,IAEC,EACyD;AAC1D,EAAA,OAAOC,gBAAQ,CAAC;AACd,IAAA,GAAID,IAAY;IAChBE,MAAM,EAAGC,KAAiB,IAAK;AAC7B,MAAA,OAAOH,IAAI,EAAEE,MAAM,GAAGF,IAAI,CAACE,MAAM,CAACC,KAAK,CAACC,MAAiB,CAAC,GAAGD,KAAK,CAACC,MAAM,CAAA;AAC3E,KAAA;AACF,GAAC,CAAC,CAAA;AACJ;;;;"}