@tanstack/react-router 0.0.1-beta.165 → 0.0.1-beta.167
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.
- package/build/cjs/deferred.js +45 -0
- package/build/cjs/deferred.js.map +1 -0
- package/build/cjs/index.js +15 -6
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +39 -8
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +114 -76
- package/build/types/index.d.ts +52 -4
- package/build/umd/index.development.js +100 -21
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +3 -3
- package/src/deferred.tsx +40 -0
- package/src/index.tsx +118 -11
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tanstack/react-router/src/index.tsx
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) TanStack
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
+
|
|
15
|
+
var routerCore = require('@tanstack/router-core');
|
|
16
|
+
var index = require('./index.js');
|
|
17
|
+
|
|
18
|
+
function useDeferred({
|
|
19
|
+
promise
|
|
20
|
+
}) {
|
|
21
|
+
const router = index.useRouter();
|
|
22
|
+
let state = promise.__deferredState;
|
|
23
|
+
const key = `__TSR__DEFERRED__${state.uid}`;
|
|
24
|
+
if (routerCore.isDehydratedDeferred(promise)) {
|
|
25
|
+
state = router.hydrateData(key);
|
|
26
|
+
promise = Promise.resolve(state.data);
|
|
27
|
+
promise.__deferredState = state;
|
|
28
|
+
}
|
|
29
|
+
if (state.status === 'pending') {
|
|
30
|
+
throw promise;
|
|
31
|
+
}
|
|
32
|
+
if (state.status === 'error') {
|
|
33
|
+
throw state.error;
|
|
34
|
+
}
|
|
35
|
+
router.dehydrateData(key, state);
|
|
36
|
+
return [state.data];
|
|
37
|
+
}
|
|
38
|
+
function Deferred(props) {
|
|
39
|
+
const awaited = useDeferred(props);
|
|
40
|
+
return props.children(...awaited);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
exports.Deferred = Deferred;
|
|
44
|
+
exports.useDeferred = useDeferred;
|
|
45
|
+
//# sourceMappingURL=deferred.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred.js","sources":["../../src/deferred.tsx"],"sourcesContent":["import { DeferredPromise, isDehydratedDeferred } from '@tanstack/router-core'\nimport { useRouter } from '.'\n\nexport type DeferredOptions<T> = {\n promise: DeferredPromise<T>\n}\n\nexport function useDeferred<T>({ promise }: DeferredOptions<T>): [T] {\n const router = useRouter()\n\n let state = promise.__deferredState\n const key = `__TSR__DEFERRED__${state.uid}`\n\n if (isDehydratedDeferred(promise)) {\n state = router.hydrateData(key)!\n promise = Promise.resolve(state.data) as DeferredPromise<any>\n promise.__deferredState = state\n }\n\n if (state.status === 'pending') {\n throw promise\n }\n\n if (state.status === 'error') {\n throw state.error\n }\n\n router.dehydrateData(key, state)\n\n return [state.data]\n}\n\nexport function Deferred<T>(\n props: DeferredOptions<T> & {\n children: (result: T) => JSX.Element\n },\n) {\n const awaited = useDeferred(props)\n return props.children(...awaited)\n}\n"],"names":["useDeferred","promise","router","useRouter","state","__deferredState","key","uid","isDehydratedDeferred","hydrateData","Promise","resolve","data","status","error","dehydrateData","Deferred","props","awaited","children"],"mappings":";;;;;;;;;;;;;;;;;AAOO,SAASA,WAAWA,CAAI;AAAEC,EAAAA,OAAAA;AAA4B,CAAC,EAAO;AACnE,EAAA,MAAMC,MAAM,GAAGC,eAAS,EAAE,CAAA;AAE1B,EAAA,IAAIC,KAAK,GAAGH,OAAO,CAACI,eAAe,CAAA;AACnC,EAAA,MAAMC,GAAG,GAAI,CAAA,iBAAA,EAAmBF,KAAK,CAACG,GAAI,CAAC,CAAA,CAAA;AAE3C,EAAA,IAAIC,+BAAoB,CAACP,OAAO,CAAC,EAAE;AACjCG,IAAAA,KAAK,GAAGF,MAAM,CAACO,WAAW,CAACH,GAAG,CAAE,CAAA;IAChCL,OAAO,GAAGS,OAAO,CAACC,OAAO,CAACP,KAAK,CAACQ,IAAI,CAAyB,CAAA;IAC7DX,OAAO,CAACI,eAAe,GAAGD,KAAK,CAAA;AACjC,GAAA;AAEA,EAAA,IAAIA,KAAK,CAACS,MAAM,KAAK,SAAS,EAAE;AAC9B,IAAA,MAAMZ,OAAO,CAAA;AACf,GAAA;AAEA,EAAA,IAAIG,KAAK,CAACS,MAAM,KAAK,OAAO,EAAE;IAC5B,MAAMT,KAAK,CAACU,KAAK,CAAA;AACnB,GAAA;AAEAZ,EAAAA,MAAM,CAACa,aAAa,CAACT,GAAG,EAAEF,KAAK,CAAC,CAAA;AAEhC,EAAA,OAAO,CAACA,KAAK,CAACQ,IAAI,CAAC,CAAA;AACrB,CAAA;AAEO,SAASI,QAAQA,CACtBC,KAEC,EACD;AACA,EAAA,MAAMC,OAAO,GAAGlB,WAAW,CAACiB,KAAK,CAAC,CAAA;AAClC,EAAA,OAAOA,KAAK,CAACE,QAAQ,CAAC,GAAGD,OAAO,CAAC,CAAA;AACnC;;;;;"}
|
package/build/cjs/index.js
CHANGED
|
@@ -19,6 +19,7 @@ var invariant = require('tiny-invariant');
|
|
|
19
19
|
var warning = require('tiny-warning');
|
|
20
20
|
var routerCore = require('@tanstack/router-core');
|
|
21
21
|
var scrollRestoration = require('./scroll-restoration.js');
|
|
22
|
+
var deferred = require('./deferred.js');
|
|
22
23
|
|
|
23
24
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
24
25
|
|
|
@@ -238,11 +239,9 @@ function RouterProvider({
|
|
|
238
239
|
return unsub;
|
|
239
240
|
}, [router]);
|
|
240
241
|
const Wrap = router.options.Wrap || React__namespace.Fragment;
|
|
241
|
-
return /*#__PURE__*/React__namespace.createElement(React__namespace.
|
|
242
|
-
fallback: null
|
|
243
|
-
}, /*#__PURE__*/React__namespace.createElement(Wrap, null, /*#__PURE__*/React__namespace.createElement(routerContext.Provider, {
|
|
242
|
+
return /*#__PURE__*/React__namespace.createElement(Wrap, null, /*#__PURE__*/React__namespace.createElement(routerContext.Provider, {
|
|
244
243
|
value: router
|
|
245
|
-
}, /*#__PURE__*/React__namespace.createElement(Matches, null)))
|
|
244
|
+
}, /*#__PURE__*/React__namespace.createElement(Matches, null)));
|
|
246
245
|
}
|
|
247
246
|
function Matches() {
|
|
248
247
|
const router = useRouter();
|
|
@@ -262,6 +261,7 @@ function Matches() {
|
|
|
262
261
|
value: [undefined, ...matchIds]
|
|
263
262
|
}, /*#__PURE__*/React__namespace.createElement(CatchBoundary, {
|
|
264
263
|
errorComponent: ErrorComponent,
|
|
264
|
+
route: router.getRoute(routerCore.rootRouteId),
|
|
265
265
|
onCatch: () => {
|
|
266
266
|
warning__default["default"](false, `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`);
|
|
267
267
|
}
|
|
@@ -395,7 +395,6 @@ function Match({
|
|
|
395
395
|
value: matchIds
|
|
396
396
|
}, /*#__PURE__*/React__namespace.createElement(ResolvedSuspenseBoundary, {
|
|
397
397
|
fallback: /*#__PURE__*/React__namespace.createElement(PendingComponent, {
|
|
398
|
-
useLoader: route.useLoader,
|
|
399
398
|
useMatch: route.useMatch,
|
|
400
399
|
useContext: route.useContext,
|
|
401
400
|
useRouteContext: route.useRouteContext,
|
|
@@ -405,6 +404,7 @@ function Match({
|
|
|
405
404
|
}, /*#__PURE__*/React__namespace.createElement(ResolvedCatchBoundary, {
|
|
406
405
|
key: route.id,
|
|
407
406
|
errorComponent: errorComponent,
|
|
407
|
+
route: route,
|
|
408
408
|
onCatch: () => {
|
|
409
409
|
warning__default["default"](false, `Error in route match: ${matchId}`);
|
|
410
410
|
}
|
|
@@ -521,7 +521,14 @@ function CatchBoundaryInner(props) {
|
|
|
521
521
|
// props.reset()
|
|
522
522
|
}, [props.errorState.error]);
|
|
523
523
|
if (props.errorState.error && activeErrorState.error) {
|
|
524
|
-
return /*#__PURE__*/React__namespace.createElement(errorComponent,
|
|
524
|
+
return /*#__PURE__*/React__namespace.createElement(errorComponent, {
|
|
525
|
+
...activeErrorState,
|
|
526
|
+
useMatch: props.route.useMatch,
|
|
527
|
+
useContext: props.route.useContext,
|
|
528
|
+
useRouteContext: props.route.useRouteContext,
|
|
529
|
+
useSearch: props.route.useSearch,
|
|
530
|
+
useParams: props.route.useParams
|
|
531
|
+
});
|
|
525
532
|
}
|
|
526
533
|
return props.children;
|
|
527
534
|
}
|
|
@@ -615,6 +622,8 @@ Object.defineProperty(exports, 'useStore', {
|
|
|
615
622
|
});
|
|
616
623
|
exports.ScrollRestoration = scrollRestoration.ScrollRestoration;
|
|
617
624
|
exports.useScrollRestoration = scrollRestoration.useScrollRestoration;
|
|
625
|
+
exports.Deferred = deferred.Deferred;
|
|
626
|
+
exports.useDeferred = deferred.useDeferred;
|
|
618
627
|
exports.Block = Block;
|
|
619
628
|
exports.ErrorComponent = ErrorComponent;
|
|
620
629
|
exports.Link = Link;
|
package/build/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport { NoInfer, useStore } from '@tanstack/react-store'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n functionalUpdate,\n last,\n pick,\n MatchRouteOptions,\n RegisteredRouter,\n RouterOptions,\n Router,\n RouteMatch,\n RouteByPath,\n AnyRoute,\n AnyRouteProps,\n LinkOptions,\n ToOptions,\n ResolveRelativePath,\n NavigateOptions,\n ResolveFullPath,\n ResolveId,\n AnySearchSchema,\n ParsePathParams,\n MergeParamsFromParent,\n RouteContext,\n AnyContext,\n UseLoaderResult,\n ResolveFullSearchSchema,\n Route,\n RouteConstraints,\n RoutePaths,\n RoutesById,\n RouteIds,\n RouteById,\n ParseRoute,\n AllParams,\n} from '@tanstack/router-core'\n\n//\n\nexport * from '@tanstack/router-core'\nexport * from './scroll-restoration'\n\nexport { useStore }\n\ndeclare module '@tanstack/router-core' {\n interface RegisterRouteComponent<TProps extends Record<string, any>> {\n RouteComponent: RouteComponent<TProps>\n }\n\n interface RegisterRouteErrorComponent<TProps extends Record<string, any>> {\n RouteErrorComponent: RouteComponent<TProps>\n }\n\n // Extend the Route class to have some React-Specific methods\n interface Route<\n TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n TPath extends RouteConstraints['TPath'] = '/',\n TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n TParentRoute,\n TPath\n >,\n TCustomId extends RouteConstraints['TCustomId'] = string,\n TId extends RouteConstraints['TId'] = ResolveId<\n TParentRoute,\n TCustomId,\n TPath\n >,\n TLoader = unknown,\n TSearchSchema extends RouteConstraints['TSearchSchema'] = {},\n TFullSearchSchema extends RouteConstraints['TFullSearchSchema'] = ResolveFullSearchSchema<\n TParentRoute,\n TSearchSchema\n >,\n TParams extends RouteConstraints['TParams'] = Record<\n ParsePathParams<TPath>,\n string\n >,\n TAllParams extends RouteConstraints['TAllParams'] = MergeParamsFromParent<\n TParentRoute['types']['allParams'],\n TParams\n >,\n TParentContext extends RouteConstraints['TParentContext'] = TParentRoute['types']['routeContext'],\n TAllParentContext extends RouteConstraints['TAllParentContext'] = TParentRoute['types']['context'],\n TRouteContext extends RouteConstraints['TRouteContext'] = RouteContext,\n TAllContext extends RouteConstraints['TAllContext'] = MergeParamsFromParent<\n TParentRoute['types']['context'],\n TRouteContext\n >,\n TRouterContext extends RouteConstraints['TRouterContext'] = AnyContext,\n TChildren extends RouteConstraints['TChildren'] = unknown,\n TRouteTree extends RouteConstraints['TRouteTree'] = AnyRoute,\n > {\n useMatch: <TStrict extends boolean = true, TSelected = TAllContext>(opts?: {\n strict?: TStrict\n select?: (search: TAllContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useLoader: <TStrict extends boolean = true, TSelected = TLoader>(opts?: {\n strict?: TStrict\n select?: (search: TLoader) => TSelected\n }) => TStrict extends true\n ? UseLoaderResult<TSelected>\n : UseLoaderResult<TSelected> | undefined\n useContext: <\n TStrict extends boolean = true,\n TSelected = TAllContext,\n >(opts?: {\n strict?: TStrict\n select?: (search: TAllContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useRouteContext: <\n TStrict extends boolean = true,\n TSelected = TRouteContext,\n >(opts?: {\n strict?: TStrict\n select?: (search: TRouteContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useSearch: <\n TStrict extends boolean = true,\n TSelected = TFullSearchSchema,\n >(opts?: {\n strict?: TStrict\n select?: (search: TFullSearchSchema) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useParams: <TStrict extends boolean = true, TSelected = TAllParams>(opts?: {\n strict?: TStrict\n select?: (search: TAllParams) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n }\n}\n\nRoute.__onInit = (route) => {\n Object.assign(route, {\n useMatch: (opts = {}) => {\n return useMatch({ ...opts, from: route.id }) as any\n },\n useLoader: (opts = {}) => {\n return useLoader({ ...opts, from: route.id }) as any\n },\n useContext: (opts: any = {}) => {\n return useMatch({\n ...opts,\n from: route.id,\n select: (d: any) => opts?.select?.(d.context) ?? d.context,\n } as any)\n },\n useRouteContext: (opts: any = {}) => {\n return useMatch({\n ...opts,\n from: route.id,\n select: (d: any) => opts?.select?.(d.routeContext) ?? d.routeContext,\n } as any)\n },\n useSearch: (opts = {}) => {\n return useSearch({ ...opts, from: route.id } as any)\n },\n useParams: (opts = {}) => {\n return useParams({ ...opts, from: route.id } as any)\n },\n })\n}\n\n//\n\ntype ReactNode = any\n\nexport type SyncRouteComponent<TProps> =\n | ((props: TProps) => ReactNode)\n | React.LazyExoticComponent<(props: TProps) => ReactNode>\n\nexport type AsyncRouteComponent<TProps> = SyncRouteComponent<TProps> & {\n preload?: () => Promise<void>\n}\n\nexport type RouteErrorComponent = AsyncRouteComponent<RouteErrorComponentProps>\n\nexport type RouteErrorComponentProps = {\n error: Error\n info: { componentStack: string }\n}\n\nexport type AnyRouteComponent = RouteComponent<AnyRouteProps>\n\nexport type RouteComponent<TProps> = AsyncRouteComponent<TProps>\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any>\n\n const load = () => {\n if (!loadPromise) {\n loadPromise = importer()\n }\n\n return loadPromise\n }\n\n const lazyComp = React.lazy(async () => {\n const moduleExports = await load()\n const comp = moduleExports[exportName ?? 'default']\n return {\n default: comp,\n }\n })\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n\nexport type LinkPropsOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = LinkOptions<RegisteredRouter['routeTree'], TFrom, TTo> & {\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 // If set to `true`, the link's underlying navigate() call will be wrapped in a `React.startTransition` call. Defaults to `true`.\n startTransition?: boolean\n}\n\nexport type MakeUseMatchRouteOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = ToOptions<RegisteredRouter['routeTree'], TFrom, TTo> & MatchRouteOptions\n\nexport type MakeMatchRouteOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = ToOptions<RegisteredRouter['routeTree'], TFrom, TTo> &\n MatchRouteOptions & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n RegisteredRouter['routeTree'],\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n }\n\nexport type MakeLinkPropsOptions<\n TFrom extends string = '/',\n TTo extends string = '',\n> = LinkPropsOptions<TFrom, TTo> & React.AnchorHTMLAttributes<HTMLAnchorElement>\n\nexport type MakeLinkOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = LinkPropsOptions<TFrom, TTo> &\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 PromptProps = {\n message: string\n condition?: boolean | any\n children?: ReactNode\n}\n\n//\n\nexport function useLinkProps<\n TFrom extends string = '/',\n TTo extends string = '',\n>(\n options: MakeLinkPropsOptions<TFrom, TTo>,\n): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n const router = useRouter()\n\n const {\n // custom props\n type,\n children,\n target,\n activeProps = () => ({ className: 'active' }),\n inactiveProps = () => ({}),\n activeOptions,\n disabled,\n // fromCurrent,\n hash,\n search,\n params,\n to = '.',\n preload,\n preloadDelay,\n replace,\n // element props\n style,\n className,\n onClick,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n ...rest\n } = options\n\n const linkInfo = router.buildLink(options as any)\n\n if (linkInfo.type === 'external') {\n const { href } = linkInfo\n return { href }\n }\n\n const {\n handleClick,\n handleFocus,\n handleEnter,\n handleLeave,\n handleTouchStart,\n isActive,\n next,\n } = linkInfo\n\n const handleReactClick = (e: Event) => {\n if (options.startTransition ?? true) {\n ;(React.startTransition || ((d) => d))(() => {\n handleClick(e)\n })\n }\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n if (e.persist) e.persist()\n handlers.filter(Boolean).forEach((handler) => {\n if (e.defaultPrevented) return\n handler!(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> = isActive\n ? functionalUpdate(activeProps as any, {}) ?? {}\n : {}\n\n // Get the inactive props\n const resolvedInactiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? {} : functionalUpdate(inactiveProps, {}) ?? {}\n\n return {\n ...resolvedActiveProps,\n ...resolvedInactiveProps,\n ...rest,\n href: disabled ? undefined : next.href,\n onClick: composeHandlers([onClick, handleReactClick]),\n onFocus: composeHandlers([onFocus, handleFocus]),\n onMouseEnter: composeHandlers([onMouseEnter, handleEnter]),\n onMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n onTouchStart: composeHandlers([onTouchStart, handleTouchStart]),\n target,\n style: {\n ...style,\n ...resolvedActiveProps.style,\n ...resolvedInactiveProps.style,\n },\n className:\n [\n className,\n resolvedActiveProps.className,\n resolvedInactiveProps.className,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n ...(disabled\n ? {\n role: 'link',\n 'aria-disabled': true,\n }\n : undefined),\n ['data-status']: isActive ? 'active' : undefined,\n }\n}\n\nexport interface LinkComponent<TProps extends Record<string, any> = {}> {\n <\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n >(\n props: MakeLinkOptions<TFrom, TTo> &\n TProps &\n React.RefAttributes<HTMLAnchorElement>,\n ): ReactNode\n}\n\nexport const Link: LinkComponent = React.forwardRef((props: any, ref) => {\n const linkProps = useLinkProps(props)\n\n return (\n <a\n {...{\n ref: ref as any,\n ...linkProps,\n children:\n typeof props.children === 'function'\n ? props.children({\n isActive: (linkProps as any)['data-status'] === 'active',\n })\n : props.children,\n }}\n />\n )\n}) as any\n\nexport function Navigate<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n>(props: NavigateOptions<RegisteredRouter['routeTree'], TFrom, TTo>): null {\n const router = useRouter()\n\n React.useLayoutEffect(() => {\n router.navigate(props as any)\n }, [])\n\n return null\n}\n\nexport const matchIdsContext = React.createContext<string[]>(null!)\nexport const routerContext = React.createContext<RegisteredRouter>(null!)\n\nexport type RouterProps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {\n router: Router<TRouteTree>\n context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>\n}\n\nexport function useRouterState<TSelected = RegisteredRouter['state']>(opts?: {\n select: (state: RegisteredRouter['state']) => TSelected\n}): TSelected {\n const router = useRouter()\n return useStore(router.__store, opts?.select)\n}\n\nexport function RouterProvider<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router, ...rest }: RouterProps<TRouteTree, TDehydrated>) {\n router.update(rest)\n\n React.useEffect(() => {\n let unsub\n\n React.startTransition(() => {\n unsub = router.mount()\n })\n\n return unsub\n }, [router])\n\n const Wrap = router.options.Wrap || React.Fragment\n\n return (\n <React.Suspense fallback={null}>\n <Wrap>\n <routerContext.Provider value={router as any}>\n <Matches />\n </routerContext.Provider>\n </Wrap>\n </React.Suspense>\n )\n}\n\nfunction Matches() {\n const router = useRouter()\n\n const matchIds = useRouterState({\n select: (state) => {\n const hasPendingComponent = state.pendingMatches.some((d) => {\n const route = router.getRoute(d.routeId as any)\n return !!route?.options.pendingComponent\n })\n\n if (hasPendingComponent) {\n return state.pendingMatchIds\n }\n\n return state.matchIds\n },\n })\n\n return (\n <matchIdsContext.Provider value={[undefined!, ...matchIds]}>\n <CatchBoundary\n errorComponent={ErrorComponent}\n onCatch={() => {\n warning(\n false,\n `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`,\n )\n }}\n >\n <Outlet />\n </CatchBoundary>\n </matchIdsContext.Provider>\n )\n}\n\nexport function useRouter(): RegisteredRouter {\n const value = React.useContext(routerContext)\n warning(value, 'useRouter must be used inside a <Router> component!')\n return value\n}\n\nexport function useMatches<T = RouteMatch[]>(opts?: {\n select?: (matches: RouteMatch[]) => T\n}): T {\n const matchIds = React.useContext(matchIdsContext)\n\n return useRouterState({\n select: (state) => {\n const matches = state.matches.slice(\n state.matches.findIndex((d) => d.id === matchIds[0]),\n )\n return (opts?.select?.(matches) ?? matches) as T\n },\n })\n}\n\nexport function useMatch<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TRouteMatchState = RouteMatch<\n RegisteredRouter['routeTree'],\n RouteById<RegisteredRouter['routeTree'], TFrom>\n >,\n TSelected = TRouteMatchState,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (match: TRouteMatchState) => TSelected\n}): TStrict extends true ? TRouteMatchState : TRouteMatchState | undefined {\n const router = useRouter()\n const nearestMatchId = React.useContext(matchIdsContext)[0]!\n const nearestMatchRouteId = router.getRouteMatch(nearestMatchId)?.routeId\n\n const matchRouteId = useRouterState({\n select: (state) => {\n const matches = state.matches\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatchId)\n\n return match!.routeId\n },\n })\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatchRouteId == matchRouteId,\n `useMatch(\"${\n matchRouteId as string\n }\") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch(\"${\n matchRouteId as string\n }\", { strict: false })' or 'useRoute(\"${\n matchRouteId as string\n }\")' instead?`,\n )\n }\n\n const match = useRouterState({\n select: (state) => {\n const matches = state.matches\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatchId)\n\n invariant(\n match,\n `Could not find ${\n opts?.from\n ? `an active match from \"${opts.from}\"`\n : 'a nearest match!'\n }`,\n )\n\n return (opts?.select?.(match as any) ?? match) as TSelected\n },\n })\n\n return match as any\n}\n\nexport type RouteFromIdOrRoute<T> = T extends ParseRoute<\n RegisteredRouter['routeTree']\n>\n ? T\n : T extends RouteIds<RegisteredRouter['routeTree']>\n ? RoutesById<RegisteredRouter['routeTree']>[T]\n : T extends string\n ? RouteIds<RegisteredRouter['routeTree']>\n : never\n\nexport function useLoader<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TLoader = RouteById<RegisteredRouter['routeTree'], TFrom>['types']['loader'],\n TSelected = TLoader,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TLoader) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) =>\n (opts?.select?.(match.loaderData as TLoader) ??\n match.loaderData) as TSelected,\n })\n}\n\nexport function useRouterContext<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TContext = RouteById<\n RegisteredRouter['routeTree'],\n TFrom\n >['types']['context'],\n TSelected = TContext,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TContext) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) =>\n (opts?.select?.(match.context as TContext) ?? match.context) as TSelected,\n })\n}\n\nexport function useRouteContext<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TRouteContext = RouteById<\n RegisteredRouter['routeTree'],\n TFrom\n >['types']['routeContext'],\n TSelected = TRouteContext,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TRouteContext) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) =>\n (opts?.select?.(match.routeContext as TRouteContext) ??\n match.routeContext) as TSelected,\n })\n}\n\nexport function useSearch<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TSearch = RouteById<\n RegisteredRouter['routeTree'],\n TFrom\n >['types']['fullSearchSchema'],\n TSelected = TSearch,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TSearch) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) => {\n return (opts?.select?.(match.search as TSearch) ??\n match.search) as TSelected\n },\n })\n}\n\nexport function useParams<\n TFrom extends RouteIds<RegisteredRouter['routeTree']> = '/',\n TDefaultSelected = AllParams<RegisteredRouter['routeTree']> &\n RouteById<RegisteredRouter['routeTree'], TFrom>['types']['allParams'],\n TSelected = TDefaultSelected,\n>(opts?: {\n from: TFrom\n select?: (search: TDefaultSelected) => TSelected\n}): TSelected {\n return useRouterState({\n select: (state: any) => {\n const params = (last(state.matches) as any)?.params\n return (opts?.select?.(params) ?? params) as TSelected\n },\n })\n}\n\nexport function useNavigate<\n TDefaultFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n>(defaultOpts?: { from?: TDefaultFrom }) {\n const router = useRouter()\n return React.useCallback(\n <\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = TDefaultFrom,\n TTo extends string = '',\n >(\n opts?: NavigateOptions<RegisteredRouter['routeTree'], TFrom, TTo>,\n ) => {\n return router.navigate({ ...defaultOpts, ...(opts as any) })\n },\n [],\n )\n}\n\nexport function useMatchRoute() {\n const router = useRouter()\n\n return React.useCallback(\n <TFrom extends string = '/', TTo extends string = ''>(\n opts: MakeUseMatchRouteOptions<TFrom, TTo>,\n ) => {\n const { pending, caseSensitive, ...rest } = opts\n\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n },\n [],\n )\n}\n\nexport function MatchRoute<TFrom extends string = '/', TTo extends string = ''>(\n props: MakeMatchRouteOptions<TFrom, TTo>,\n): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props)\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return !!params ? props.children : null\n}\n\nexport function Outlet() {\n const matchIds = React.useContext(matchIdsContext).slice(1)\n\n if (!matchIds[0]) {\n return null\n }\n\n return <Match matchIds={matchIds} />\n}\n\nconst defaultPending = () => null\n\nfunction Match({ matchIds }: { matchIds: string[] }) {\n const router = useRouter()\n const matchId = matchIds[0]!\n const routeId = router.getRouteMatch(matchId)!.routeId\n const route = router.getRoute(routeId)\n\n const PendingComponent = (route.options.pendingComponent ??\n router.options.defaultPendingComponent ??\n defaultPending) as any\n\n const errorComponent =\n route.options.errorComponent ??\n router.options.defaultErrorComponent ??\n ErrorComponent\n\n const ResolvedSuspenseBoundary =\n route.options.wrapInSuspense ?? !route.isRoot\n ? React.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = !!errorComponent ? CatchBoundary : SafeFragment\n\n return (\n <matchIdsContext.Provider value={matchIds}>\n <ResolvedSuspenseBoundary\n fallback={React.createElement(PendingComponent, {\n useLoader: route.useLoader,\n useMatch: route.useMatch,\n useContext: route.useContext,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })}\n >\n <ResolvedCatchBoundary\n key={route.id}\n errorComponent={errorComponent}\n onCatch={() => {\n warning(false, `Error in route match: ${matchId}`)\n }}\n >\n <MatchInner matchId={matchId} PendingComponent={PendingComponent} />\n </ResolvedCatchBoundary>\n </ResolvedSuspenseBoundary>\n </matchIdsContext.Provider>\n )\n}\n\nfunction MatchInner({\n matchId,\n PendingComponent,\n}: {\n matchId: string\n PendingComponent: any\n}): any {\n const router = useRouter()\n\n const match = useRouterState({\n select: (d) => {\n const match = d.matchesById[matchId]\n return pick(match!, ['status', 'loadPromise', 'routeId', 'error'])\n },\n })\n\n const route = router.getRoute(match.routeId)\n\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'pending') {\n return React.createElement(PendingComponent, {\n useLoader: route.useLoader,\n useMatch: route.useMatch,\n useContext: route.useContext,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n }\n\n if (match.status === 'success') {\n let comp = route.options.component ?? router.options.defaultComponent\n\n if (comp) {\n return React.createElement(comp, {\n useLoader: route.useLoader,\n useMatch: route.useMatch,\n useContext: route.useContext as any,\n useRouteContext: route.useRouteContext as any,\n useSearch: route.useSearch,\n useParams: route.useParams as any,\n })\n }\n\n return <Outlet />\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n}\n\nfunction SafeFragment(props: any) {\n return <>{props.children}</>\n}\n\nexport function useInjectHtml() {\n const router = useRouter()\n\n return React.useCallback(\n (html: string | (() => Promise<string> | string)) => {\n router.injectHtml(html)\n },\n [],\n )\n}\n\nexport function useDehydrate() {\n const router = useRouter()\n\n return React.useCallback(function dehydrate<T>(\n key: any,\n data: T | (() => Promise<T> | T),\n ) {\n return router.dehydrateData(key, data)\n },\n [])\n}\n\nexport function useHydrate() {\n const router = useRouter()\n\n return function hydrate<T = unknown>(key: any) {\n return router.hydrateData(key) as T\n }\n}\n\n// This is the messiest thing ever... I'm either seriously tired (likely) or\n// there has to be a better way to reset error boundaries when the\n// router's location key changes.\n\nclass CatchBoundary extends React.Component<{\n children: any\n errorComponent: any\n onCatch: (error: any, info: any) => void\n}> {\n state = {\n error: false,\n info: undefined,\n }\n componentDidCatch(error: any, info: any) {\n this.props.onCatch(error, info)\n this.setState({\n error,\n info,\n })\n }\n render() {\n return (\n <CatchBoundaryInner\n {...this.props}\n errorState={this.state}\n reset={() => this.setState({})}\n />\n )\n }\n}\n\nfunction CatchBoundaryInner(props: {\n children: any\n errorComponent: any\n errorState: { error: unknown; info: any }\n reset: () => void\n}) {\n const locationKey = useRouterState({\n select: (d) => d.resolvedLocation.key,\n })\n\n const [activeErrorState, setActiveErrorState] = React.useState(\n props.errorState,\n )\n const errorComponent = props.errorComponent ?? ErrorComponent\n const prevKeyRef = React.useRef('' as any)\n\n React.useEffect(() => {\n if (activeErrorState) {\n if (locationKey !== prevKeyRef.current) {\n setActiveErrorState({} as any)\n }\n }\n\n prevKeyRef.current = locationKey\n }, [activeErrorState, locationKey])\n\n React.useEffect(() => {\n if (props.errorState.error) {\n setActiveErrorState(props.errorState)\n }\n // props.reset()\n }, [props.errorState.error])\n\n if (props.errorState.error && activeErrorState.error) {\n return React.createElement(errorComponent, activeErrorState)\n }\n\n return props.children\n}\n\nexport function ErrorComponent({ error }: { error: any }) {\n const [show, setShow] = React.useState(process.env.NODE_ENV !== 'production')\n\n return (\n <div style={{ padding: '.5rem', maxWidth: '100%' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '.5rem' }}>\n <strong style={{ fontSize: '1rem' }}>Something went wrong!</strong>\n <button\n style={{\n appearance: 'none',\n fontSize: '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n }}\n onClick={() => setShow((d) => !d)}\n >\n {show ? 'Hide Error' : 'Show Error'}\n </button>\n </div>\n <div style={{ height: '.25rem' }} />\n {show ? (\n <div>\n <pre\n style={{\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n }}\n >\n {error.message ? <code>{error.message}</code> : null}\n </pre>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport function useBlocker(\n message: string,\n condition: boolean | any = true,\n): void {\n const router = useRouter()\n\n React.useEffect(() => {\n if (!condition) return\n\n let unblock = router.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 function shallow<T>(objA: T, objB: T) {\n if (Object.is(objA, objB)) {\n return true\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false\n }\n\n const keysA = Object.keys(objA)\n if (keysA.length !== Object.keys(objB).length) {\n return false\n }\n\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])\n ) {\n return false\n }\n }\n return true\n}\n"],"names":["Route","__onInit","route","Object","assign","useMatch","opts","from","id","useLoader","useContext","select","d","context","useRouteContext","routeContext","useSearch","useParams","lazyRouteComponent","importer","exportName","loadPromise","load","lazyComp","React","lazy","moduleExports","comp","default","preload","useLinkProps","options","router","useRouter","type","children","target","activeProps","className","inactiveProps","activeOptions","disabled","hash","search","params","to","preloadDelay","replace","style","onClick","onFocus","onMouseEnter","onMouseLeave","onTouchStart","rest","linkInfo","buildLink","href","handleClick","handleFocus","handleEnter","handleLeave","handleTouchStart","isActive","next","handleReactClick","e","startTransition","composeHandlers","handlers","persist","filter","Boolean","forEach","handler","defaultPrevented","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","undefined","join","role","Link","forwardRef","props","ref","linkProps","createElement","_extends","Navigate","useLayoutEffect","navigate","matchIdsContext","createContext","routerContext","useRouterState","useStore","__store","RouterProvider","update","useEffect","unsub","mount","Wrap","Fragment","Suspense","fallback","Provider","value","Matches","matchIds","state","hasPendingComponent","pendingMatches","some","getRoute","routeId","pendingComponent","pendingMatchIds","CatchBoundary","errorComponent","ErrorComponent","onCatch","warning","Outlet","useMatches","matches","slice","findIndex","nearestMatchId","nearestMatchRouteId","getRouteMatch","matchRouteId","match","find","strict","invariant","loaderData","useRouterContext","last","useNavigate","defaultOpts","useCallback","useMatchRoute","pending","caseSensitive","matchRoute","MatchRoute","Match","defaultPending","matchId","PendingComponent","defaultPendingComponent","defaultErrorComponent","ResolvedSuspenseBoundary","wrapInSuspense","isRoot","SafeFragment","ResolvedCatchBoundary","key","MatchInner","matchesById","pick","status","error","component","defaultComponent","useInjectHtml","html","injectHtml","useDehydrate","dehydrate","data","dehydrateData","useHydrate","hydrate","hydrateData","Component","info","componentDidCatch","setState","render","CatchBoundaryInner","errorState","reset","locationKey","resolvedLocation","activeErrorState","setActiveErrorState","useState","prevKeyRef","useRef","current","show","setShow","process","env","NODE_ENV","padding","maxWidth","display","alignItems","gap","fontSize","appearance","border","fontWeight","borderRadius","height","color","overflow","message","useBlocker","condition","unblock","history","block","retry","cancel","window","confirm","Block","shallow","objA","objB","is","keysA","keys","length","i","prototype","hasOwnProperty","call"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport { NoInfer, useStore } from '@tanstack/react-store'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport {\n functionalUpdate,\n last,\n pick,\n MatchRouteOptions,\n RegisteredRouter,\n RouterOptions,\n Router,\n RouteMatch,\n RouteByPath,\n AnyRoute,\n AnyRouteProps,\n LinkOptions,\n ToOptions,\n ResolveRelativePath,\n NavigateOptions,\n ResolveFullPath,\n ResolveId,\n AnySearchSchema,\n ParsePathParams,\n MergeParamsFromParent,\n RouteContext,\n AnyContext,\n UseLoaderResult,\n ResolveFullSearchSchema,\n Route,\n RouteConstraints,\n RoutePaths,\n RoutesById,\n RouteIds,\n RouteById,\n ParseRoute,\n AllParams,\n rootRouteId,\n AnyPathParams,\n} from '@tanstack/router-core'\n\n//\n\nexport * from '@tanstack/router-core'\nexport * from './scroll-restoration'\nexport * from './deferred'\n\nexport { useStore }\n\ndeclare module '@tanstack/router-core' {\n interface RegisterRouteComponent<TProps> {\n RouteComponent: RouteComponent<TProps>\n }\n\n interface RegisterRouteErrorComponent<TProps> {\n RouteErrorComponent: RouteComponent<TProps>\n }\n\n // Extend the Route class to have some React-Specific methods\n interface Route<\n TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n TPath extends RouteConstraints['TPath'] = '/',\n TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n TParentRoute,\n TPath\n >,\n TCustomId extends RouteConstraints['TCustomId'] = string,\n TId extends RouteConstraints['TId'] = ResolveId<\n TParentRoute,\n TCustomId,\n TPath\n >,\n TLoader = unknown,\n TSearchSchema extends RouteConstraints['TSearchSchema'] = {},\n TFullSearchSchema extends RouteConstraints['TFullSearchSchema'] = ResolveFullSearchSchema<\n TParentRoute,\n TSearchSchema\n >,\n TParams extends RouteConstraints['TParams'] = Record<\n ParsePathParams<TPath>,\n string\n >,\n TAllParams extends RouteConstraints['TAllParams'] = MergeParamsFromParent<\n TParentRoute['types']['allParams'],\n TParams\n >,\n TParentContext extends RouteConstraints['TParentContext'] = TParentRoute['types']['routeContext'],\n TAllParentContext extends RouteConstraints['TAllParentContext'] = TParentRoute['types']['context'],\n TRouteContext extends RouteConstraints['TRouteContext'] = RouteContext,\n TAllContext extends RouteConstraints['TAllContext'] = MergeParamsFromParent<\n TParentRoute['types']['context'],\n TRouteContext\n >,\n TRouterContext extends RouteConstraints['TRouterContext'] = AnyContext,\n TChildren extends RouteConstraints['TChildren'] = unknown,\n TRouteTree extends RouteConstraints['TRouteTree'] = AnyRoute,\n > {\n useMatch: <TStrict extends boolean = true, TSelected = TAllContext>(opts?: {\n strict?: TStrict\n select?: (search: TAllContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useLoader: <TStrict extends boolean = true, TSelected = TLoader>(opts?: {\n strict?: TStrict\n select?: (search: TLoader) => TSelected\n }) => TStrict extends true\n ? UseLoaderResult<TSelected>\n : UseLoaderResult<TSelected> | undefined\n useContext: <\n TStrict extends boolean = true,\n TSelected = TAllContext,\n >(opts?: {\n strict?: TStrict\n select?: (search: TAllContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useRouteContext: <\n TStrict extends boolean = true,\n TSelected = TRouteContext,\n >(opts?: {\n strict?: TStrict\n select?: (search: TRouteContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useSearch: <\n TStrict extends boolean = true,\n TSelected = TFullSearchSchema,\n >(opts?: {\n strict?: TStrict\n select?: (search: TFullSearchSchema) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useParams: <TStrict extends boolean = true, TSelected = TAllParams>(opts?: {\n strict?: TStrict\n select?: (search: TAllParams) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n }\n\n interface RegisterRouteProps<\n TLoader = unknown,\n TFullSearchSchema extends AnySearchSchema = AnySearchSchema,\n TAllParams extends AnyPathParams = AnyPathParams,\n TRouteContext extends AnyContext = AnyContext,\n TAllContext extends AnyContext = AnyContext,\n > {\n RouteProps: RouteProps<\n TLoader,\n TFullSearchSchema,\n TAllParams,\n TRouteContext,\n TAllContext\n >\n }\n\n interface RegisterPendingRouteProps<\n TFullSearchSchema extends AnySearchSchema = AnySearchSchema,\n TAllParams extends AnyPathParams = AnyPathParams,\n TRouteContext extends AnyContext = AnyContext,\n TAllContext extends AnyContext = AnyContext,\n > {\n PendingRouteProps: Omit<\n RouteProps<\n unknown,\n TFullSearchSchema,\n TAllParams,\n TRouteContext,\n TAllContext\n >,\n 'useLoader'\n >\n }\n\n interface RegisterErrorRouteProps<\n TFullSearchSchema extends AnySearchSchema = AnySearchSchema,\n TAllParams extends AnyPathParams = AnyPathParams,\n TRouteContext extends AnyContext = AnyContext,\n TAllContext extends AnyContext = AnyContext,\n > {\n ErrorRouteProps: {\n error: unknown\n info: { componentStack: string }\n } & Omit<\n RouteProps<\n unknown,\n TFullSearchSchema,\n TAllParams,\n TRouteContext,\n TAllContext\n >,\n 'useLoader'\n >\n }\n}\n\nexport type RouteProps<\n TLoader = unknown,\n TFullSearchSchema extends AnySearchSchema = AnySearchSchema,\n TAllParams extends AnyPathParams = AnyPathParams,\n TRouteContext extends AnyContext = AnyContext,\n TAllContext extends AnyContext = AnyContext,\n> = {\n useLoader: <TStrict extends boolean = true, TSelected = TLoader>(opts?: {\n strict?: TStrict\n select?: (search: TLoader) => TSelected\n }) => TStrict extends true\n ? UseLoaderResult<TSelected>\n : UseLoaderResult<TSelected> | undefined\n useMatch: <TStrict extends boolean = true, TSelected = TAllContext>(opts?: {\n strict?: TStrict\n select?: (search: TAllContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useContext: <TStrict extends boolean = true, TSelected = TAllContext>(opts?: {\n strict?: TStrict\n select?: (search: TAllContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useRouteContext: <\n TStrict extends boolean = true,\n TSelected = TRouteContext,\n >(opts?: {\n strict?: TStrict\n select?: (search: TRouteContext) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useSearch: <\n TStrict extends boolean = true,\n TSelected = TFullSearchSchema,\n >(opts?: {\n strict?: TStrict\n select?: (search: TFullSearchSchema) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n useParams: <TStrict extends boolean = true, TSelected = TAllParams>(opts?: {\n strict?: TStrict\n select?: (search: TAllParams) => TSelected\n }) => TStrict extends true ? TSelected : TSelected | undefined\n}\n\nRoute.__onInit = (route) => {\n Object.assign(route, {\n useMatch: (opts = {}) => {\n return useMatch({ ...opts, from: route.id }) as any\n },\n useLoader: (opts = {}) => {\n return useLoader({ ...opts, from: route.id }) as any\n },\n useContext: (opts: any = {}) => {\n return useMatch({\n ...opts,\n from: route.id,\n select: (d: any) => opts?.select?.(d.context) ?? d.context,\n } as any)\n },\n useRouteContext: (opts: any = {}) => {\n return useMatch({\n ...opts,\n from: route.id,\n select: (d: any) => opts?.select?.(d.routeContext) ?? d.routeContext,\n } as any)\n },\n useSearch: (opts = {}) => {\n return useSearch({ ...opts, from: route.id } as any)\n },\n useParams: (opts = {}) => {\n return useParams({ ...opts, from: route.id } as any)\n },\n })\n}\n\n//\n\ntype ReactNode = any\n\nexport type SyncRouteComponent<TProps> =\n | ((props: TProps) => ReactNode)\n | React.LazyExoticComponent<(props: TProps) => ReactNode>\n\nexport type AsyncRouteComponent<TProps> = SyncRouteComponent<TProps> & {\n preload?: () => Promise<void>\n}\n\nexport type RouteErrorComponent = AsyncRouteComponent<RouteErrorComponentProps>\n\nexport type RouteErrorComponentProps = {\n error: Error\n info: { componentStack: string }\n}\n\nexport type AnyRouteComponent = RouteComponent<AnyRouteProps>\n\nexport type RouteComponent<TProps> = AsyncRouteComponent<TProps>\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any>\n\n const load = () => {\n if (!loadPromise) {\n loadPromise = importer()\n }\n\n return loadPromise\n }\n\n const lazyComp = React.lazy(async () => {\n const moduleExports = await load()\n const comp = moduleExports[exportName ?? 'default']\n return {\n default: comp,\n }\n })\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n\nexport type LinkPropsOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = LinkOptions<RegisteredRouter['routeTree'], TFrom, TTo> & {\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 // If set to `true`, the link's underlying navigate() call will be wrapped in a `React.startTransition` call. Defaults to `true`.\n startTransition?: boolean\n}\n\nexport type MakeUseMatchRouteOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = ToOptions<RegisteredRouter['routeTree'], TFrom, TTo> & MatchRouteOptions\n\nexport type MakeMatchRouteOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = ToOptions<RegisteredRouter['routeTree'], TFrom, TTo> &\n MatchRouteOptions & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n RegisteredRouter['routeTree'],\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n }\n\nexport type MakeLinkPropsOptions<\n TFrom extends string = '/',\n TTo extends string = '',\n> = LinkPropsOptions<TFrom, TTo> & React.AnchorHTMLAttributes<HTMLAnchorElement>\n\nexport type MakeLinkOptions<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n> = LinkPropsOptions<TFrom, TTo> &\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 PromptProps = {\n message: string\n condition?: boolean | any\n children?: ReactNode\n}\n\n//\n\nexport function useLinkProps<\n TFrom extends string = '/',\n TTo extends string = '',\n>(\n options: MakeLinkPropsOptions<TFrom, TTo>,\n): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n const router = useRouter()\n\n const {\n // custom props\n type,\n children,\n target,\n activeProps = () => ({ className: 'active' }),\n inactiveProps = () => ({}),\n activeOptions,\n disabled,\n // fromCurrent,\n hash,\n search,\n params,\n to = '.',\n preload,\n preloadDelay,\n replace,\n // element props\n style,\n className,\n onClick,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n ...rest\n } = options\n\n const linkInfo = router.buildLink(options as any)\n\n if (linkInfo.type === 'external') {\n const { href } = linkInfo\n return { href }\n }\n\n const {\n handleClick,\n handleFocus,\n handleEnter,\n handleLeave,\n handleTouchStart,\n isActive,\n next,\n } = linkInfo\n\n const handleReactClick = (e: Event) => {\n if (options.startTransition ?? true) {\n ;(React.startTransition || ((d) => d))(() => {\n handleClick(e)\n })\n }\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n if (e.persist) e.persist()\n handlers.filter(Boolean).forEach((handler) => {\n if (e.defaultPrevented) return\n handler!(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> = isActive\n ? functionalUpdate(activeProps as any, {}) ?? {}\n : {}\n\n // Get the inactive props\n const resolvedInactiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? {} : functionalUpdate(inactiveProps, {}) ?? {}\n\n return {\n ...resolvedActiveProps,\n ...resolvedInactiveProps,\n ...rest,\n href: disabled ? undefined : next.href,\n onClick: composeHandlers([onClick, handleReactClick]),\n onFocus: composeHandlers([onFocus, handleFocus]),\n onMouseEnter: composeHandlers([onMouseEnter, handleEnter]),\n onMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n onTouchStart: composeHandlers([onTouchStart, handleTouchStart]),\n target,\n style: {\n ...style,\n ...resolvedActiveProps.style,\n ...resolvedInactiveProps.style,\n },\n className:\n [\n className,\n resolvedActiveProps.className,\n resolvedInactiveProps.className,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n ...(disabled\n ? {\n role: 'link',\n 'aria-disabled': true,\n }\n : undefined),\n ['data-status']: isActive ? 'active' : undefined,\n }\n}\n\nexport interface LinkComponent<TProps extends Record<string, any> = {}> {\n <\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n >(\n props: MakeLinkOptions<TFrom, TTo> &\n TProps &\n React.RefAttributes<HTMLAnchorElement>,\n ): ReactNode\n}\n\nexport const Link: LinkComponent = React.forwardRef((props: any, ref) => {\n const linkProps = useLinkProps(props)\n\n return (\n <a\n {...{\n ref: ref as any,\n ...linkProps,\n children:\n typeof props.children === 'function'\n ? props.children({\n isActive: (linkProps as any)['data-status'] === 'active',\n })\n : props.children,\n }}\n />\n )\n}) as any\n\nexport function Navigate<\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n TTo extends string = '',\n>(props: NavigateOptions<RegisteredRouter['routeTree'], TFrom, TTo>): null {\n const router = useRouter()\n\n React.useLayoutEffect(() => {\n router.navigate(props as any)\n }, [])\n\n return null\n}\n\nexport const matchIdsContext = React.createContext<string[]>(null!)\nexport const routerContext = React.createContext<RegisteredRouter>(null!)\n\nexport type RouterProps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> & {\n router: Router<TRouteTree>\n context?: Partial<RouterOptions<TRouteTree, TDehydrated>['context']>\n}\n\nexport function useRouterState<TSelected = RegisteredRouter['state']>(opts?: {\n select: (state: RegisteredRouter['state']) => TSelected\n}): TSelected {\n const router = useRouter()\n return useStore(router.__store, opts?.select)\n}\n\nexport function RouterProvider<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router, ...rest }: RouterProps<TRouteTree, TDehydrated>) {\n router.update(rest)\n\n React.useEffect(() => {\n let unsub\n\n React.startTransition(() => {\n unsub = router.mount()\n })\n\n return unsub\n }, [router])\n\n const Wrap = router.options.Wrap || React.Fragment\n\n return (\n <Wrap>\n <routerContext.Provider value={router as any}>\n <Matches />\n </routerContext.Provider>\n </Wrap>\n )\n}\n\nfunction Matches() {\n const router = useRouter()\n\n const matchIds = useRouterState({\n select: (state) => {\n const hasPendingComponent = state.pendingMatches.some((d) => {\n const route = router.getRoute(d.routeId as any)\n return !!route?.options.pendingComponent\n })\n\n if (hasPendingComponent) {\n return state.pendingMatchIds\n }\n\n return state.matchIds\n },\n })\n\n return (\n <matchIdsContext.Provider value={[undefined!, ...matchIds]}>\n <CatchBoundary\n errorComponent={ErrorComponent}\n route={router.getRoute(rootRouteId)}\n onCatch={() => {\n warning(\n false,\n `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`,\n )\n }}\n >\n <Outlet />\n </CatchBoundary>\n </matchIdsContext.Provider>\n )\n}\n\nexport function useRouter(): RegisteredRouter {\n const value = React.useContext(routerContext)\n warning(value, 'useRouter must be used inside a <Router> component!')\n return value\n}\n\nexport function useMatches<T = RouteMatch[]>(opts?: {\n select?: (matches: RouteMatch[]) => T\n}): T {\n const matchIds = React.useContext(matchIdsContext)\n\n return useRouterState({\n select: (state) => {\n const matches = state.matches.slice(\n state.matches.findIndex((d) => d.id === matchIds[0]),\n )\n return (opts?.select?.(matches) ?? matches) as T\n },\n })\n}\n\nexport function useMatch<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TRouteMatchState = RouteMatch<\n RegisteredRouter['routeTree'],\n RouteById<RegisteredRouter['routeTree'], TFrom>\n >,\n TSelected = TRouteMatchState,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (match: TRouteMatchState) => TSelected\n}): TStrict extends true ? TRouteMatchState : TRouteMatchState | undefined {\n const router = useRouter()\n const nearestMatchId = React.useContext(matchIdsContext)[0]!\n const nearestMatchRouteId = router.getRouteMatch(nearestMatchId)?.routeId\n\n const matchRouteId = useRouterState({\n select: (state) => {\n const matches = state.matches\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatchId)\n\n return match!.routeId\n },\n })\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatchRouteId == matchRouteId,\n `useMatch(\"${\n matchRouteId as string\n }\") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch(\"${\n matchRouteId as string\n }\", { strict: false })' or 'useRoute(\"${\n matchRouteId as string\n }\")' instead?`,\n )\n }\n\n const match = useRouterState({\n select: (state) => {\n const matches = state.matches\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatchId)\n\n invariant(\n match,\n `Could not find ${\n opts?.from\n ? `an active match from \"${opts.from}\"`\n : 'a nearest match!'\n }`,\n )\n\n return (opts?.select?.(match as any) ?? match) as TSelected\n },\n })\n\n return match as any\n}\n\nexport type RouteFromIdOrRoute<T> = T extends ParseRoute<\n RegisteredRouter['routeTree']\n>\n ? T\n : T extends RouteIds<RegisteredRouter['routeTree']>\n ? RoutesById<RegisteredRouter['routeTree']>[T]\n : T extends string\n ? RouteIds<RegisteredRouter['routeTree']>\n : never\n\nexport function useLoader<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TLoader = RouteById<RegisteredRouter['routeTree'], TFrom>['types']['loader'],\n TSelected = TLoader,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TLoader) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) =>\n (opts?.select?.(match.loaderData as TLoader) ??\n match.loaderData) as TSelected,\n })\n}\n\nexport function useRouterContext<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TContext = RouteById<\n RegisteredRouter['routeTree'],\n TFrom\n >['types']['context'],\n TSelected = TContext,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TContext) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) =>\n (opts?.select?.(match.context as TContext) ?? match.context) as TSelected,\n })\n}\n\nexport function useRouteContext<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TRouteContext = RouteById<\n RegisteredRouter['routeTree'],\n TFrom\n >['types']['routeContext'],\n TSelected = TRouteContext,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TRouteContext) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) =>\n (opts?.select?.(match.routeContext as TRouteContext) ??\n match.routeContext) as TSelected,\n })\n}\n\nexport function useSearch<\n TFrom extends RouteIds<RegisteredRouter['routeTree']>,\n TStrict extends boolean = true,\n TSearch = RouteById<\n RegisteredRouter['routeTree'],\n TFrom\n >['types']['fullSearchSchema'],\n TSelected = TSearch,\n>(opts?: {\n from: TFrom\n strict?: TStrict\n select?: (search: TSearch) => TSelected\n}): TStrict extends true ? TSelected : TSelected | undefined {\n return useMatch({\n ...(opts as any),\n select: (match: RouteMatch) => {\n return (opts?.select?.(match.search as TSearch) ??\n match.search) as TSelected\n },\n })\n}\n\nexport function useParams<\n TFrom extends RouteIds<RegisteredRouter['routeTree']> = '/',\n TDefaultSelected = AllParams<RegisteredRouter['routeTree']> &\n RouteById<RegisteredRouter['routeTree'], TFrom>['types']['allParams'],\n TSelected = TDefaultSelected,\n>(opts?: {\n from: TFrom\n select?: (search: TDefaultSelected) => TSelected\n}): TSelected {\n return useRouterState({\n select: (state: any) => {\n const params = (last(state.matches) as any)?.params\n return (opts?.select?.(params) ?? params) as TSelected\n },\n })\n}\n\nexport function useNavigate<\n TDefaultFrom extends RoutePaths<RegisteredRouter['routeTree']> = '/',\n>(defaultOpts?: { from?: TDefaultFrom }) {\n const router = useRouter()\n return React.useCallback(\n <\n TFrom extends RoutePaths<RegisteredRouter['routeTree']> = TDefaultFrom,\n TTo extends string = '',\n >(\n opts?: NavigateOptions<RegisteredRouter['routeTree'], TFrom, TTo>,\n ) => {\n return router.navigate({ ...defaultOpts, ...(opts as any) })\n },\n [],\n )\n}\n\nexport function useMatchRoute() {\n const router = useRouter()\n\n return React.useCallback(\n <TFrom extends string = '/', TTo extends string = ''>(\n opts: MakeUseMatchRouteOptions<TFrom, TTo>,\n ) => {\n const { pending, caseSensitive, ...rest } = opts\n\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n },\n [],\n )\n}\n\nexport function MatchRoute<TFrom extends string = '/', TTo extends string = ''>(\n props: MakeMatchRouteOptions<TFrom, TTo>,\n): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props)\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return !!params ? props.children : null\n}\n\nexport function Outlet() {\n const matchIds = React.useContext(matchIdsContext).slice(1)\n\n if (!matchIds[0]) {\n return null\n }\n\n return <Match matchIds={matchIds} />\n}\n\nconst defaultPending = () => null\n\nfunction Match({ matchIds }: { matchIds: string[] }) {\n const router = useRouter()\n const matchId = matchIds[0]!\n const routeId = router.getRouteMatch(matchId)!.routeId\n const route = router.getRoute(routeId)\n\n const PendingComponent = (route.options.pendingComponent ??\n router.options.defaultPendingComponent ??\n defaultPending) as any\n\n const errorComponent =\n route.options.errorComponent ??\n router.options.defaultErrorComponent ??\n ErrorComponent\n\n const ResolvedSuspenseBoundary =\n route.options.wrapInSuspense ?? !route.isRoot\n ? React.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = !!errorComponent ? CatchBoundary : SafeFragment\n\n return (\n <matchIdsContext.Provider value={matchIds}>\n <ResolvedSuspenseBoundary\n fallback={React.createElement(PendingComponent, {\n useMatch: route.useMatch,\n useContext: route.useContext,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })}\n >\n <ResolvedCatchBoundary\n key={route.id}\n errorComponent={errorComponent}\n route={route}\n onCatch={() => {\n warning(false, `Error in route match: ${matchId}`)\n }}\n >\n <MatchInner matchId={matchId} PendingComponent={PendingComponent} />\n </ResolvedCatchBoundary>\n </ResolvedSuspenseBoundary>\n </matchIdsContext.Provider>\n )\n}\n\nfunction MatchInner({\n matchId,\n PendingComponent,\n}: {\n matchId: string\n PendingComponent: any\n}): any {\n const router = useRouter()\n\n const match = useRouterState({\n select: (d) => {\n const match = d.matchesById[matchId]\n return pick(match!, ['status', 'loadPromise', 'routeId', 'error'])\n },\n })\n\n const route = router.getRoute(match.routeId)\n\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'pending') {\n return React.createElement(PendingComponent, {\n useLoader: route.useLoader,\n useMatch: route.useMatch,\n useContext: route.useContext,\n useRouteContext: route.useRouteContext,\n useSearch: route.useSearch,\n useParams: route.useParams,\n })\n }\n\n if (match.status === 'success') {\n let comp = route.options.component ?? router.options.defaultComponent\n\n if (comp) {\n return React.createElement(comp, {\n useLoader: route.useLoader,\n useMatch: route.useMatch,\n useContext: route.useContext as any,\n useRouteContext: route.useRouteContext as any,\n useSearch: route.useSearch,\n useParams: route.useParams as any,\n })\n }\n\n return <Outlet />\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n}\n\nfunction SafeFragment(props: any) {\n return <>{props.children}</>\n}\n\nexport function useInjectHtml() {\n const router = useRouter()\n\n return React.useCallback(\n (html: string | (() => Promise<string> | string)) => {\n router.injectHtml(html)\n },\n [],\n )\n}\n\nexport function useDehydrate() {\n const router = useRouter()\n\n return React.useCallback(function dehydrate<T>(\n key: any,\n data: T | (() => Promise<T> | T),\n ) {\n return router.dehydrateData(key, data)\n },\n [])\n}\n\nexport function useHydrate() {\n const router = useRouter()\n\n return function hydrate<T = unknown>(key: any) {\n return router.hydrateData(key) as T\n }\n}\n\n// This is the messiest thing ever... I'm either seriously tired (likely) or\n// there has to be a better way to reset error boundaries when the\n// router's location key changes.\n\nclass CatchBoundary extends React.Component<{\n children: any\n errorComponent: any\n route: AnyRoute\n onCatch: (error: any, info: any) => void\n}> {\n state = {\n error: false,\n info: undefined,\n }\n componentDidCatch(error: any, info: any) {\n this.props.onCatch(error, info)\n this.setState({\n error,\n info,\n })\n }\n render() {\n return (\n <CatchBoundaryInner\n {...this.props}\n errorState={this.state}\n reset={() => this.setState({})}\n />\n )\n }\n}\n\nfunction CatchBoundaryInner(props: {\n children: any\n errorComponent: any\n route: AnyRoute\n errorState: { error: unknown; info: any }\n reset: () => void\n}) {\n const locationKey = useRouterState({\n select: (d) => d.resolvedLocation.key,\n })\n\n const [activeErrorState, setActiveErrorState] = React.useState(\n props.errorState,\n )\n const errorComponent = props.errorComponent ?? ErrorComponent\n const prevKeyRef = React.useRef('' as any)\n\n React.useEffect(() => {\n if (activeErrorState) {\n if (locationKey !== prevKeyRef.current) {\n setActiveErrorState({} as any)\n }\n }\n\n prevKeyRef.current = locationKey\n }, [activeErrorState, locationKey])\n\n React.useEffect(() => {\n if (props.errorState.error) {\n setActiveErrorState(props.errorState)\n }\n // props.reset()\n }, [props.errorState.error])\n\n if (props.errorState.error && activeErrorState.error) {\n return React.createElement(errorComponent, {\n ...activeErrorState,\n useMatch: props.route.useMatch,\n useContext: props.route.useContext,\n useRouteContext: props.route.useRouteContext,\n useSearch: props.route.useSearch,\n useParams: props.route.useParams,\n })\n }\n\n return props.children\n}\n\nexport function ErrorComponent({ error }: { error: any }) {\n const [show, setShow] = React.useState(process.env.NODE_ENV !== 'production')\n\n return (\n <div style={{ padding: '.5rem', maxWidth: '100%' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '.5rem' }}>\n <strong style={{ fontSize: '1rem' }}>Something went wrong!</strong>\n <button\n style={{\n appearance: 'none',\n fontSize: '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n }}\n onClick={() => setShow((d) => !d)}\n >\n {show ? 'Hide Error' : 'Show Error'}\n </button>\n </div>\n <div style={{ height: '.25rem' }} />\n {show ? (\n <div>\n <pre\n style={{\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n }}\n >\n {error.message ? <code>{error.message}</code> : null}\n </pre>\n </div>\n ) : null}\n </div>\n )\n}\n\nexport function useBlocker(\n message: string,\n condition: boolean | any = true,\n): void {\n const router = useRouter()\n\n React.useEffect(() => {\n if (!condition) return\n\n let unblock = router.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 function shallow<T>(objA: T, objB: T) {\n if (Object.is(objA, objB)) {\n return true\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false\n }\n\n const keysA = Object.keys(objA)\n if (keysA.length !== Object.keys(objB).length) {\n return false\n }\n\n for (let i = 0; i < keysA.length; i++) {\n if (\n !Object.prototype.hasOwnProperty.call(objB, keysA[i] as string) ||\n !Object.is(objA[keysA[i] as keyof T], objB[keysA[i] as keyof T])\n ) {\n return false\n }\n }\n return true\n}\n"],"names":["Route","__onInit","route","Object","assign","useMatch","opts","from","id","useLoader","useContext","select","d","context","useRouteContext","routeContext","useSearch","useParams","lazyRouteComponent","importer","exportName","loadPromise","load","lazyComp","React","lazy","moduleExports","comp","default","preload","useLinkProps","options","router","useRouter","type","children","target","activeProps","className","inactiveProps","activeOptions","disabled","hash","search","params","to","preloadDelay","replace","style","onClick","onFocus","onMouseEnter","onMouseLeave","onTouchStart","rest","linkInfo","buildLink","href","handleClick","handleFocus","handleEnter","handleLeave","handleTouchStart","isActive","next","handleReactClick","e","startTransition","composeHandlers","handlers","persist","filter","Boolean","forEach","handler","defaultPrevented","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","undefined","join","role","Link","forwardRef","props","ref","linkProps","createElement","_extends","Navigate","useLayoutEffect","navigate","matchIdsContext","createContext","routerContext","useRouterState","useStore","__store","RouterProvider","update","useEffect","unsub","mount","Wrap","Fragment","Provider","value","Matches","matchIds","state","hasPendingComponent","pendingMatches","some","getRoute","routeId","pendingComponent","pendingMatchIds","CatchBoundary","errorComponent","ErrorComponent","rootRouteId","onCatch","warning","Outlet","useMatches","matches","slice","findIndex","nearestMatchId","nearestMatchRouteId","getRouteMatch","matchRouteId","match","find","strict","invariant","loaderData","useRouterContext","last","useNavigate","defaultOpts","useCallback","useMatchRoute","pending","caseSensitive","matchRoute","MatchRoute","Match","defaultPending","matchId","PendingComponent","defaultPendingComponent","defaultErrorComponent","ResolvedSuspenseBoundary","wrapInSuspense","isRoot","Suspense","SafeFragment","ResolvedCatchBoundary","fallback","key","MatchInner","matchesById","pick","status","error","component","defaultComponent","useInjectHtml","html","injectHtml","useDehydrate","dehydrate","data","dehydrateData","useHydrate","hydrate","hydrateData","Component","info","componentDidCatch","setState","render","CatchBoundaryInner","errorState","reset","locationKey","resolvedLocation","activeErrorState","setActiveErrorState","useState","prevKeyRef","useRef","current","show","setShow","process","env","NODE_ENV","padding","maxWidth","display","alignItems","gap","fontSize","appearance","border","fontWeight","borderRadius","height","color","overflow","message","useBlocker","condition","unblock","history","block","retry","cancel","window","confirm","Block","shallow","objA","objB","is","keysA","keys","length","i","prototype","hasOwnProperty","call"],"mappings":"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"}
|
package/build/esm/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import { useStore } from '@tanstack/react-store';
|
|
|
13
13
|
export { useStore } from '@tanstack/react-store';
|
|
14
14
|
import invariant from 'tiny-invariant';
|
|
15
15
|
import warning from 'tiny-warning';
|
|
16
|
-
import { watchScrollPositions, restoreScrollPositions, Route, functionalUpdate, last, pick } from '@tanstack/router-core';
|
|
16
|
+
import { watchScrollPositions, restoreScrollPositions, isDehydratedDeferred, Route, functionalUpdate, rootRouteId, last, pick } from '@tanstack/router-core';
|
|
17
17
|
export * from '@tanstack/router-core';
|
|
18
18
|
|
|
19
19
|
function _extends() {
|
|
@@ -46,6 +46,31 @@ function ScrollRestoration(props) {
|
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
function useDeferred({
|
|
50
|
+
promise
|
|
51
|
+
}) {
|
|
52
|
+
const router = useRouter();
|
|
53
|
+
let state = promise.__deferredState;
|
|
54
|
+
const key = `__TSR__DEFERRED__${state.uid}`;
|
|
55
|
+
if (isDehydratedDeferred(promise)) {
|
|
56
|
+
state = router.hydrateData(key);
|
|
57
|
+
promise = Promise.resolve(state.data);
|
|
58
|
+
promise.__deferredState = state;
|
|
59
|
+
}
|
|
60
|
+
if (state.status === 'pending') {
|
|
61
|
+
throw promise;
|
|
62
|
+
}
|
|
63
|
+
if (state.status === 'error') {
|
|
64
|
+
throw state.error;
|
|
65
|
+
}
|
|
66
|
+
router.dehydrateData(key, state);
|
|
67
|
+
return [state.data];
|
|
68
|
+
}
|
|
69
|
+
function Deferred(props) {
|
|
70
|
+
const awaited = useDeferred(props);
|
|
71
|
+
return props.children(...awaited);
|
|
72
|
+
}
|
|
73
|
+
|
|
49
74
|
Route.__onInit = route => {
|
|
50
75
|
Object.assign(route, {
|
|
51
76
|
useMatch: (opts = {}) => {
|
|
@@ -240,11 +265,9 @@ function RouterProvider({
|
|
|
240
265
|
return unsub;
|
|
241
266
|
}, [router]);
|
|
242
267
|
const Wrap = router.options.Wrap || React.Fragment;
|
|
243
|
-
return /*#__PURE__*/React.createElement(React.
|
|
244
|
-
fallback: null
|
|
245
|
-
}, /*#__PURE__*/React.createElement(Wrap, null, /*#__PURE__*/React.createElement(routerContext.Provider, {
|
|
268
|
+
return /*#__PURE__*/React.createElement(Wrap, null, /*#__PURE__*/React.createElement(routerContext.Provider, {
|
|
246
269
|
value: router
|
|
247
|
-
}, /*#__PURE__*/React.createElement(Matches, null)))
|
|
270
|
+
}, /*#__PURE__*/React.createElement(Matches, null)));
|
|
248
271
|
}
|
|
249
272
|
function Matches() {
|
|
250
273
|
const router = useRouter();
|
|
@@ -264,6 +287,7 @@ function Matches() {
|
|
|
264
287
|
value: [undefined, ...matchIds]
|
|
265
288
|
}, /*#__PURE__*/React.createElement(CatchBoundary, {
|
|
266
289
|
errorComponent: ErrorComponent,
|
|
290
|
+
route: router.getRoute(rootRouteId),
|
|
267
291
|
onCatch: () => {
|
|
268
292
|
warning(false, `Error in router! Consider setting an 'errorComponent' in your RootRoute! 👍`);
|
|
269
293
|
}
|
|
@@ -397,7 +421,6 @@ function Match({
|
|
|
397
421
|
value: matchIds
|
|
398
422
|
}, /*#__PURE__*/React.createElement(ResolvedSuspenseBoundary, {
|
|
399
423
|
fallback: /*#__PURE__*/React.createElement(PendingComponent, {
|
|
400
|
-
useLoader: route.useLoader,
|
|
401
424
|
useMatch: route.useMatch,
|
|
402
425
|
useContext: route.useContext,
|
|
403
426
|
useRouteContext: route.useRouteContext,
|
|
@@ -407,6 +430,7 @@ function Match({
|
|
|
407
430
|
}, /*#__PURE__*/React.createElement(ResolvedCatchBoundary, {
|
|
408
431
|
key: route.id,
|
|
409
432
|
errorComponent: errorComponent,
|
|
433
|
+
route: route,
|
|
410
434
|
onCatch: () => {
|
|
411
435
|
warning(false, `Error in route match: ${matchId}`);
|
|
412
436
|
}
|
|
@@ -523,7 +547,14 @@ function CatchBoundaryInner(props) {
|
|
|
523
547
|
// props.reset()
|
|
524
548
|
}, [props.errorState.error]);
|
|
525
549
|
if (props.errorState.error && activeErrorState.error) {
|
|
526
|
-
return /*#__PURE__*/React.createElement(errorComponent,
|
|
550
|
+
return /*#__PURE__*/React.createElement(errorComponent, {
|
|
551
|
+
...activeErrorState,
|
|
552
|
+
useMatch: props.route.useMatch,
|
|
553
|
+
useContext: props.route.useContext,
|
|
554
|
+
useRouteContext: props.route.useRouteContext,
|
|
555
|
+
useSearch: props.route.useSearch,
|
|
556
|
+
useParams: props.route.useParams
|
|
557
|
+
});
|
|
527
558
|
}
|
|
528
559
|
return props.children;
|
|
529
560
|
}
|
|
@@ -611,5 +642,5 @@ function shallow(objA, objB) {
|
|
|
611
642
|
return true;
|
|
612
643
|
}
|
|
613
644
|
|
|
614
|
-
export { Block, ErrorComponent, Link, MatchRoute, Navigate, Outlet, RouterProvider, ScrollRestoration, lazyRouteComponent, matchIdsContext, routerContext, shallow, useBlocker, useDehydrate, useHydrate, useInjectHtml, useLinkProps, useLoader, useMatch, useMatchRoute, useMatches, useNavigate, useParams, useRouteContext, useRouter, useRouterContext, useRouterState, useScrollRestoration, useSearch };
|
|
645
|
+
export { Block, Deferred, ErrorComponent, Link, MatchRoute, Navigate, Outlet, RouterProvider, ScrollRestoration, lazyRouteComponent, matchIdsContext, routerContext, shallow, useBlocker, useDeferred, useDehydrate, useHydrate, useInjectHtml, useLinkProps, useLoader, useMatch, useMatchRoute, useMatches, useNavigate, useParams, useRouteContext, useRouter, useRouterContext, useRouterState, useScrollRestoration, useSearch };
|
|
615
646
|
//# sourceMappingURL=index.js.map
|