@tanstack/react-router 0.0.1-beta.28 → 0.0.1-beta.29
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/_virtual/_rollupPluginBabelHelpers.js +0 -5
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/build/cjs/{react-router/src/index.js → index.js} +63 -124
- package/build/cjs/index.js.map +1 -0
- package/build/esm/index.js +76 -2601
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +59 -49
- package/build/stats-react.json +115 -33
- package/build/types/index.d.ts +10 -19
- package/build/umd/index.development.js +204 -389
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +2 -2
- package/build/umd/index.production.js.map +1 -1
- package/package.json +3 -3
- package/src/index.tsx +60 -50
- package/build/cjs/react-router/src/index.js.map +0 -1
- package/build/cjs/router-core/build/esm/index.js +0 -2530
- package/build/cjs/router-core/build/esm/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/react-router",
|
|
3
3
|
"author": "Tanner Linsley",
|
|
4
|
-
"version": "0.0.1-beta.
|
|
4
|
+
"version": "0.0.1-beta.29",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "tanstack/router",
|
|
7
7
|
"homepage": "https://tanstack.com/router/",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"url": "https://github.com/sponsors/tannerlinsley"
|
|
25
25
|
},
|
|
26
26
|
"module": "build/esm/index.js",
|
|
27
|
-
"main": "build/cjs/
|
|
27
|
+
"main": "build/cjs/index.js",
|
|
28
28
|
"browser": "build/umd/index.production.js",
|
|
29
29
|
"types": "build/types/index.d.ts",
|
|
30
30
|
"engines": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@babel/runtime": "^7.16.7",
|
|
44
|
-
"@tanstack/router-core": "0.0.1-beta.
|
|
44
|
+
"@tanstack/router-core": "0.0.1-beta.29",
|
|
45
45
|
"use-sync-external-store": "^1.2.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
package/src/index.tsx
CHANGED
|
@@ -7,7 +7,8 @@ import {
|
|
|
7
7
|
CheckId,
|
|
8
8
|
rootRouteId,
|
|
9
9
|
Route,
|
|
10
|
-
|
|
10
|
+
RegisteredAllRouteInfo,
|
|
11
|
+
RegisteredRouter,
|
|
11
12
|
RouterState,
|
|
12
13
|
ToIdOption,
|
|
13
14
|
} from '@tanstack/router-core'
|
|
@@ -34,26 +35,9 @@ import {
|
|
|
34
35
|
invariant,
|
|
35
36
|
Router,
|
|
36
37
|
} from '@tanstack/router-core'
|
|
37
|
-
import { restElement } from '@babel/types'
|
|
38
38
|
|
|
39
39
|
export * from '@tanstack/router-core'
|
|
40
40
|
|
|
41
|
-
export interface RegisterRouter {
|
|
42
|
-
// router: Router
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export type RegisteredRouter = RegisterRouter extends {
|
|
46
|
-
router: Router<infer TRouteConfig, infer TAllRouteInfo>
|
|
47
|
-
}
|
|
48
|
-
? Router<TRouteConfig, TAllRouteInfo>
|
|
49
|
-
: Router
|
|
50
|
-
|
|
51
|
-
export type RegisteredAllRouteInfo = RegisterRouter extends {
|
|
52
|
-
router: Router<infer TRouteConfig, infer TAllRouteInfo>
|
|
53
|
-
}
|
|
54
|
-
? TAllRouteInfo
|
|
55
|
-
: AnyAllRouteInfo
|
|
56
|
-
|
|
57
41
|
export type SyncRouteComponent<TProps = {}> = (
|
|
58
42
|
props: TProps,
|
|
59
43
|
) => JSX.Element | React.ReactNode
|
|
@@ -154,8 +138,8 @@ declare module '@tanstack/router-core' {
|
|
|
154
138
|
}>
|
|
155
139
|
}
|
|
156
140
|
|
|
157
|
-
interface RouterOptions<TRouteConfig
|
|
158
|
-
|
|
141
|
+
interface RouterOptions<TRouteConfig, TRouterContext> {
|
|
142
|
+
// ssrFooter?: () => JSX.Element | React.ReactNode
|
|
159
143
|
}
|
|
160
144
|
|
|
161
145
|
interface Router<
|
|
@@ -234,13 +218,15 @@ export function Link<TTo extends string = '.'>(
|
|
|
234
218
|
return <router.Link {...(props as any)} />
|
|
235
219
|
}
|
|
236
220
|
|
|
237
|
-
|
|
221
|
+
type MatchesContextValue = RouteMatch[]
|
|
222
|
+
|
|
223
|
+
export const matchesContext = React.createContext<MatchesContextValue>(null!)
|
|
238
224
|
export const routerContext = React.createContext<{ router: RegisteredRouter }>(
|
|
239
225
|
null!,
|
|
240
226
|
)
|
|
241
227
|
|
|
242
228
|
export type MatchesProviderProps = {
|
|
243
|
-
value:
|
|
229
|
+
value: MatchesContextValue
|
|
244
230
|
children: React.ReactNode
|
|
245
231
|
}
|
|
246
232
|
|
|
@@ -248,7 +234,7 @@ export function MatchesProvider(props: MatchesProviderProps) {
|
|
|
248
234
|
return <matchesContext.Provider {...props} />
|
|
249
235
|
}
|
|
250
236
|
|
|
251
|
-
const useRouterSubscription = (router: Router<any, any>) => {
|
|
237
|
+
const useRouterSubscription = (router: Router<any, any, any>) => {
|
|
252
238
|
useSyncExternalStore(
|
|
253
239
|
(cb) => router.subscribe(() => cb()),
|
|
254
240
|
() => router.state,
|
|
@@ -258,10 +244,14 @@ const useRouterSubscription = (router: Router<any, any>) => {
|
|
|
258
244
|
|
|
259
245
|
export function createReactRouter<
|
|
260
246
|
TRouteConfig extends AnyRouteConfig = RouteConfig,
|
|
261
|
-
|
|
247
|
+
TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,
|
|
248
|
+
TRouterContext = unknown,
|
|
249
|
+
>(
|
|
250
|
+
opts: RouterOptions<TRouteConfig, TRouterContext>,
|
|
251
|
+
): Router<TRouteConfig, TAllRouteInfo, TRouterContext> {
|
|
262
252
|
const makeRouteExt = (
|
|
263
253
|
route: AnyRoute,
|
|
264
|
-
router: Router<any, any>,
|
|
254
|
+
router: Router<any, any, any>,
|
|
265
255
|
): Pick<AnyRoute, 'useRoute' | 'linkProps' | 'Link' | 'MatchRoute'> => {
|
|
266
256
|
return {
|
|
267
257
|
useRoute: (subRouteId = '.' as any) => {
|
|
@@ -327,8 +317,11 @@ export function createReactRouter<
|
|
|
327
317
|
} = linkInfo
|
|
328
318
|
|
|
329
319
|
const reactHandleClick = (e: Event) => {
|
|
330
|
-
if (React.startTransition)
|
|
331
|
-
|
|
320
|
+
if (React.startTransition)
|
|
321
|
+
// This is a hack for react < 18
|
|
322
|
+
React.startTransition(() => {
|
|
323
|
+
handleClick(e)
|
|
324
|
+
})
|
|
332
325
|
else handleClick(e)
|
|
333
326
|
}
|
|
334
327
|
|
|
@@ -423,7 +416,7 @@ export function createReactRouter<
|
|
|
423
416
|
const coreRouter = createRouter<TRouteConfig>({
|
|
424
417
|
...opts,
|
|
425
418
|
createRouter: (router) => {
|
|
426
|
-
const routerExt: Pick<Router<any, any>, 'useMatch' | 'useState'> = {
|
|
419
|
+
const routerExt: Pick<Router<any, any, any>, 'useMatch' | 'useState'> = {
|
|
427
420
|
useState: () => {
|
|
428
421
|
useRouterSubscription(router)
|
|
429
422
|
return router.state
|
|
@@ -436,7 +429,7 @@ export function createReactRouter<
|
|
|
436
429
|
`"${rootRouteId}" cannot be used with useMatch! Did you mean to useRoute("${rootRouteId}")?`,
|
|
437
430
|
)
|
|
438
431
|
|
|
439
|
-
const
|
|
432
|
+
const nearestMatch = useNearestMatch()
|
|
440
433
|
const match = router.state.matches.find((d) => d.routeId === routeId)
|
|
441
434
|
|
|
442
435
|
if (opts?.strict ?? true) {
|
|
@@ -446,11 +439,11 @@ export function createReactRouter<
|
|
|
446
439
|
)
|
|
447
440
|
|
|
448
441
|
invariant(
|
|
449
|
-
|
|
442
|
+
nearestMatch.routeId == match?.routeId,
|
|
450
443
|
`useMatch("${
|
|
451
444
|
match?.routeId as string
|
|
452
445
|
}") is being called in a component that is meant to render the '${
|
|
453
|
-
|
|
446
|
+
nearestMatch.routeId
|
|
454
447
|
}' route. Did you mean to 'useMatch("${
|
|
455
448
|
match?.routeId as string
|
|
456
449
|
}", { strict: false })' or 'useRoute("${
|
|
@@ -488,36 +481,34 @@ export function createReactRouter<
|
|
|
488
481
|
export type RouterProps<
|
|
489
482
|
TRouteConfig extends AnyRouteConfig = RouteConfig,
|
|
490
483
|
TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
children?: React.ReactNode
|
|
484
|
+
TRouterContext = unknown,
|
|
485
|
+
> = RouterOptions<TRouteConfig, TRouterContext> & {
|
|
486
|
+
router: Router<TRouteConfig, TAllRouteInfo, TRouterContext>
|
|
495
487
|
}
|
|
496
488
|
|
|
497
489
|
export function RouterProvider<
|
|
498
490
|
TRouteConfig extends AnyRouteConfig = RouteConfig,
|
|
499
491
|
TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,
|
|
500
|
-
|
|
492
|
+
TRouterContext = unknown,
|
|
493
|
+
>({
|
|
494
|
+
router,
|
|
495
|
+
...rest
|
|
496
|
+
}: RouterProps<TRouteConfig, TAllRouteInfo, TRouterContext>) {
|
|
501
497
|
router.update(rest)
|
|
502
498
|
|
|
503
|
-
const defaultRouterContext = React.useRef({})
|
|
504
|
-
|
|
505
|
-
const userContext =
|
|
506
|
-
router.options.useContext?.() ?? defaultRouterContext.current
|
|
507
|
-
|
|
508
|
-
router.context = userContext
|
|
509
|
-
|
|
510
499
|
useRouterSubscription(router)
|
|
511
500
|
React.useEffect(() => {
|
|
512
501
|
return router.mount()
|
|
513
502
|
}, [router])
|
|
514
503
|
|
|
515
504
|
return (
|
|
516
|
-
|
|
517
|
-
<
|
|
518
|
-
{
|
|
519
|
-
|
|
520
|
-
|
|
505
|
+
<>
|
|
506
|
+
<routerContext.Provider value={{ router: router as any }}>
|
|
507
|
+
<MatchesProvider value={[undefined!, ...router.state.matches]}>
|
|
508
|
+
<Outlet />
|
|
509
|
+
</MatchesProvider>
|
|
510
|
+
</routerContext.Provider>
|
|
511
|
+
</>
|
|
521
512
|
)
|
|
522
513
|
}
|
|
523
514
|
|
|
@@ -559,7 +550,7 @@ export function useNearestMatch(): RouteMatch<
|
|
|
559
550
|
RegisteredAllRouteInfo,
|
|
560
551
|
RouteInfo
|
|
561
552
|
> {
|
|
562
|
-
const runtimeMatch = useMatches()
|
|
553
|
+
const runtimeMatch = useMatches()[0]
|
|
563
554
|
|
|
564
555
|
invariant(runtimeMatch, `Could not find a nearest match!`)
|
|
565
556
|
|
|
@@ -616,7 +607,11 @@ export function Outlet() {
|
|
|
616
607
|
return (
|
|
617
608
|
<MatchesProvider value={matches}>
|
|
618
609
|
<React.Suspense fallback={<PendingComponent />}>
|
|
619
|
-
<CatchBoundary
|
|
610
|
+
<CatchBoundary
|
|
611
|
+
key={match.routeId}
|
|
612
|
+
errorComponent={errorComponent}
|
|
613
|
+
match={match as any}
|
|
614
|
+
>
|
|
620
615
|
{
|
|
621
616
|
((): React.ReactNode => {
|
|
622
617
|
if (match.status === 'error') {
|
|
@@ -635,6 +630,19 @@ export function Outlet() {
|
|
|
635
630
|
}
|
|
636
631
|
</CatchBoundary>
|
|
637
632
|
</React.Suspense>
|
|
633
|
+
{/* Provide a suffix suspense boundary to make sure the router is
|
|
634
|
+
ready to be dehydrated on the server */}
|
|
635
|
+
{/* {router.options.ssrFooter && match.matchId === rootRouteId ? (
|
|
636
|
+
<React.Suspense fallback={null}>
|
|
637
|
+
{(() => {
|
|
638
|
+
if (router.state.pending) {
|
|
639
|
+
throw router.navigationPromise
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
return router.options.ssrFooter()
|
|
643
|
+
})()}
|
|
644
|
+
</React.Suspense>
|
|
645
|
+
) : null} */}
|
|
638
646
|
</MatchesProvider>
|
|
639
647
|
)
|
|
640
648
|
}
|
|
@@ -642,6 +650,7 @@ export function Outlet() {
|
|
|
642
650
|
class CatchBoundary extends React.Component<{
|
|
643
651
|
children: any
|
|
644
652
|
errorComponent: any
|
|
653
|
+
match: RouteMatch
|
|
645
654
|
}> {
|
|
646
655
|
state = {
|
|
647
656
|
error: false,
|
|
@@ -649,6 +658,7 @@ class CatchBoundary extends React.Component<{
|
|
|
649
658
|
}
|
|
650
659
|
|
|
651
660
|
componentDidCatch(error: any, info: any) {
|
|
661
|
+
console.error(`Error in route match: ${this.props.match.matchId}`)
|
|
652
662
|
console.error(error)
|
|
653
663
|
|
|
654
664
|
this.setState({
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\n\nimport {\n AnyRoute,\n CheckId,\n rootRouteId,\n Route,\n RouterContext,\n RouterState,\n ToIdOption,\n} from '@tanstack/router-core'\nimport {\n warning,\n RouterOptions,\n RouteMatch,\n MatchRouteOptions,\n RouteConfig,\n AnyRouteConfig,\n AnyAllRouteInfo,\n DefaultAllRouteInfo,\n functionalUpdate,\n createRouter,\n AnyRouteInfo,\n AllRouteInfo,\n RouteInfo,\n ValidFromPath,\n LinkOptions,\n RouteInfoByPath,\n ResolveRelativePath,\n NoInfer,\n ToOptions,\n invariant,\n Router,\n} from '@tanstack/router-core'\nimport { restElement } from '@babel/types'\n\nexport * from '@tanstack/router-core'\n\nexport interface RegisterRouter {\n // router: Router\n}\n\nexport type RegisteredRouter = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo>\n}\n ? Router<TRouteConfig, TAllRouteInfo>\n : Router\n\nexport type RegisteredAllRouteInfo = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo>\n}\n ? TAllRouteInfo\n : AnyAllRouteInfo\n\nexport type SyncRouteComponent<TProps = {}> = (\n props: TProps,\n) => JSX.Element | React.ReactNode\n\nexport type RouteComponent<TProps = {}> = SyncRouteComponent<TProps> & {\n preload?: () => Promise<SyncRouteComponent<TProps>>\n}\n\nexport function lazy(\n importer: () => Promise<{ default: SyncRouteComponent }>,\n): RouteComponent {\n const lazyComp = React.lazy(importer as any)\n let promise: Promise<SyncRouteComponent>\n let resolvedComp: SyncRouteComponent\n\n const forwardedComp = React.forwardRef((props, ref) => {\n const resolvedCompRef = React.useRef(resolvedComp || lazyComp)\n return React.createElement(\n resolvedCompRef.current as any,\n { ...(ref ? { ref } : {}), ...props } as any,\n )\n })\n\n const finalComp = forwardedComp as unknown as RouteComponent\n\n finalComp.preload = () => {\n if (!promise) {\n promise = importer().then((module) => {\n resolvedComp = module.default\n return resolvedComp\n })\n }\n\n return promise\n }\n\n return finalComp\n}\n\ntype LinkPropsOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo>,\n TTo extends string,\n> = LinkOptions<TAllRouteInfo, 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}\n\ntype MakeMatchRouteOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo>,\n TTo extends string,\n> = ToOptions<TAllRouteInfo, 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 | React.ReactNode\n | ((\n params: RouteInfoByPath<\n TAllRouteInfo,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['allParams'],\n ) => React.ReactNode)\n }\n\ntype MakeLinkPropsOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo>,\n TTo extends string,\n> = LinkPropsOptions<TAllRouteInfo, TFrom, TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n\ntype MakeLinkOptions<\n TAllRouteInfo extends AnyAllRouteInfo,\n TFrom extends ValidFromPath<TAllRouteInfo>,\n TTo extends string,\n> = LinkPropsOptions<TAllRouteInfo, TFrom, TTo> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\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\ndeclare module '@tanstack/router-core' {\n interface FrameworkGenerics {\n Component: RouteComponent\n ErrorComponent: RouteComponent<{\n error: unknown\n info: { componentStack: string }\n }>\n }\n\n interface RouterOptions<TRouteConfig extends AnyRouteConfig> {\n useContext?: () => RouterContext\n }\n\n interface Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n > {\n useState: () => RouterState\n useRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n routeId: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n useNearestMatch: () => RouteMatch<TAllRouteInfo, RouteInfo>\n useMatch: <\n TId extends keyof TAllRouteInfo['routeInfoById'],\n TStrict extends boolean = true,\n >(\n routeId: TId,\n opts?: { strict?: TStrict },\n ) => TStrict extends true\n ? RouteMatch<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n :\n | RouteMatch<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n | undefined\n linkProps: <TTo extends string = '.'>(\n props: MakeLinkPropsOptions<TAllRouteInfo, '/', TTo>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: MakeLinkOptions<TAllRouteInfo, '/', TTo>,\n ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: MakeMatchRouteOptions<TAllRouteInfo, '/', TTo>,\n ) => JSX.Element\n }\n\n interface Route<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n > {\n useRoute: <\n TTo extends string = '.',\n TResolved extends string = ResolveRelativePath<\n TRouteInfo['id'],\n NoInfer<TTo>\n >,\n >(\n routeId: CheckId<\n TAllRouteInfo,\n TResolved,\n ToIdOption<TAllRouteInfo, TRouteInfo['id'], TTo>\n >,\n opts?: { strict?: boolean },\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TResolved]>\n linkProps: <TTo extends string = '.'>(\n props: MakeLinkPropsOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n ) => React.AnchorHTMLAttributes<HTMLAnchorElement>\n Link: <TTo extends string = '.'>(\n props: MakeLinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n ) => JSX.Element\n MatchRoute: <TTo extends string = '.'>(\n props: MakeMatchRouteOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n ) => JSX.Element\n }\n}\n\nexport type PromptProps = {\n message: string\n when?: boolean | any\n children?: React.ReactNode\n}\n\n//\n\nexport function Link<TTo extends string = '.'>(\n props: MakeLinkOptions<RegisteredAllRouteInfo, '/', TTo>,\n): JSX.Element {\n const router = useRouter()\n return <router.Link {...(props as any)} />\n}\n\nexport const matchesContext = React.createContext<RouteMatch[]>(null!)\nexport const routerContext = React.createContext<{ router: RegisteredRouter }>(\n null!,\n)\n\nexport type MatchesProviderProps = {\n value: RouteMatch[]\n children: React.ReactNode\n}\n\nexport function MatchesProvider(props: MatchesProviderProps) {\n return <matchesContext.Provider {...props} />\n}\n\nconst useRouterSubscription = (router: Router<any, any>) => {\n useSyncExternalStore(\n (cb) => router.subscribe(() => cb()),\n () => router.state,\n () => router.state,\n )\n}\n\nexport function createReactRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n>(opts: RouterOptions<TRouteConfig>): Router<TRouteConfig> {\n const makeRouteExt = (\n route: AnyRoute,\n router: Router<any, any>,\n ): Pick<AnyRoute, 'useRoute' | 'linkProps' | 'Link' | 'MatchRoute'> => {\n return {\n useRoute: (subRouteId = '.' as any) => {\n const resolvedRouteId = router.resolvePath(\n route.routeId,\n subRouteId as string,\n )\n const resolvedRoute = router.getRoute(resolvedRouteId)\n useRouterSubscription(router)\n invariant(\n resolvedRoute,\n `Could not find a route for route \"${\n resolvedRouteId as string\n }\"! Did you forget to add it to your route config?`,\n )\n return resolvedRoute\n },\n linkProps: (options) => {\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 preloadMaxAge,\n replace,\n // element props\n style,\n className,\n onClick,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n onTouchStart,\n onTouchEnd,\n ...rest\n } = options\n\n const linkInfo = route.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 isActive,\n next,\n } = linkInfo\n\n const reactHandleClick = (e: Event) => {\n if (React.startTransition) // This is a hack for react < 18\n React.startTransition(() => {handleClick(e)})\n else handleClick(e)\n }\n\n const composeHandlers =\n (handlers: (undefined | ((e: any) => void))[]) =>\n (e: React.SyntheticEvent) => {\n e.persist()\n handlers.forEach((handler) => {\n if (handler) handler(e)\n })\n }\n\n // Get the active props\n const resolvedActiveProps: React.HTMLAttributes<HTMLAnchorElement> =\n isActive ? functionalUpdate(activeProps, {}) ?? {} : {}\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([reactHandleClick, onClick]),\n onFocus: composeHandlers([handleFocus, onFocus]),\n onMouseEnter: composeHandlers([handleEnter, onMouseEnter]),\n onMouseLeave: composeHandlers([handleLeave, onMouseLeave]),\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 Link: React.forwardRef((props: any, ref) => {\n const linkProps = route.linkProps(props)\n\n useRouterSubscription(router)\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 MatchRoute: (opts) => {\n const { pending, caseSensitive, children, ...rest } = opts\n\n const params = route.matchRoute(rest as any, {\n pending,\n caseSensitive,\n })\n\n if (!params) {\n return null\n }\n\n return typeof opts.children === 'function'\n ? opts.children(params as any)\n : (opts.children as any)\n },\n }\n }\n\n const coreRouter = createRouter<TRouteConfig>({\n ...opts,\n createRouter: (router) => {\n const routerExt: Pick<Router<any, any>, 'useMatch' | 'useState'> = {\n useState: () => {\n useRouterSubscription(router)\n return router.state\n },\n useMatch: (routeId, opts) => {\n useRouterSubscription(router)\n\n invariant(\n routeId !== rootRouteId,\n `\"${rootRouteId}\" cannot be used with useMatch! Did you mean to useRoute(\"${rootRouteId}\")?`,\n )\n\n const runtimeMatch = useMatches()?.[0]!\n const match = router.state.matches.find((d) => d.routeId === routeId)\n\n if (opts?.strict ?? true) {\n invariant(\n match,\n `Could not find an active match for \"${routeId as string}\"!`,\n )\n\n invariant(\n runtimeMatch.routeId == match?.routeId,\n `useMatch(\"${\n match?.routeId as string\n }\") is being called in a component that is meant to render the '${\n runtimeMatch.routeId\n }' route. Did you mean to 'useMatch(\"${\n match?.routeId as string\n }\", { strict: false })' or 'useRoute(\"${\n match?.routeId as string\n }\")' instead?`,\n )\n }\n\n return match as any\n },\n }\n\n const routeExt = makeRouteExt(router.getRoute(rootRouteId), router)\n\n Object.assign(router, routerExt, routeExt)\n },\n createRoute: ({ router, route }) => {\n const routeExt = makeRouteExt(route, router)\n\n Object.assign(route, routeExt)\n },\n loadComponent: async (component) => {\n if (component.preload && typeof document !== 'undefined') {\n component.preload()\n // return await component.preload()\n }\n\n return component as any\n },\n })\n\n return coreRouter as any\n}\n\nexport type RouterProps<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n> = RouterOptions<TRouteConfig> & {\n router: Router<TRouteConfig, TAllRouteInfo>\n // Children will default to `<Outlet />` if not provided\n children?: React.ReactNode\n}\n\nexport function RouterProvider<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n>({ children, router, ...rest }: RouterProps<TRouteConfig, TAllRouteInfo>) {\n router.update(rest)\n\n const defaultRouterContext = React.useRef({})\n\n const userContext =\n router.options.useContext?.() ?? defaultRouterContext.current\n\n router.context = userContext\n\n useRouterSubscription(router)\n React.useEffect(() => {\n return router.mount()\n }, [router])\n\n return (\n <routerContext.Provider value={{ router: router as any }}>\n <MatchesProvider value={router.state.matches}>\n {children ?? <Outlet />}\n </MatchesProvider>\n </routerContext.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\n useRouterSubscription(value.router)\n\n return value.router\n}\n\nexport function useMatches(): RouteMatch[] {\n return React.useContext(matchesContext)\n}\n\nexport function useMatch<\n TId extends keyof RegisteredAllRouteInfo['routeInfoById'],\n TStrict extends boolean = true,\n>(\n routeId: TId,\n opts?: { strict?: TStrict },\n): TStrict extends true\n ? RouteMatch<\n RegisteredAllRouteInfo,\n RegisteredAllRouteInfo['routeInfoById'][TId]\n >\n :\n | RouteMatch<\n RegisteredAllRouteInfo,\n RegisteredAllRouteInfo['routeInfoById'][TId]\n >\n | undefined {\n const router = useRouter()\n return router.useMatch(routeId as any, opts) as any\n}\n\nexport function useNearestMatch(): RouteMatch<\n RegisteredAllRouteInfo,\n RouteInfo\n> {\n const runtimeMatch = useMatches()?.[0]!\n\n invariant(runtimeMatch, `Could not find a nearest match!`)\n\n return runtimeMatch as any\n}\n\nexport function useRoute<\n TId extends keyof RegisteredAllRouteInfo['routeInfoById'],\n>(\n routeId: TId,\n): Route<RegisteredAllRouteInfo, RegisteredAllRouteInfo['routeInfoById'][TId]> {\n const router = useRouter()\n return router.useRoute(routeId as any) as any\n}\n\nexport function useSearch<\n TId extends keyof RegisteredAllRouteInfo['routeInfoById'] = keyof RegisteredAllRouteInfo['routeInfoById'],\n>(_routeId?: TId): RegisteredAllRouteInfo['fullSearchSchema'] {\n return useRouter().state.location.search\n}\n\nexport function linkProps<TTo extends string = '.'>(\n props: MakeLinkPropsOptions<RegisteredAllRouteInfo, '/', TTo>,\n): React.AnchorHTMLAttributes<HTMLAnchorElement> {\n const router = useRouter()\n return router.linkProps(props as any)\n}\n\nexport function MatchRoute<TTo extends string = '.'>(\n props: MakeMatchRouteOptions<RegisteredAllRouteInfo, '/', TTo>,\n): JSX.Element {\n const router = useRouter()\n return React.createElement(router.MatchRoute, props as any)\n}\n\nexport function Outlet() {\n const router = useRouter()\n const matches = useMatches().slice(1)\n const match = matches[0]\n\n const defaultPending = React.useCallback(() => null, [])\n\n if (!match) {\n return null\n }\n\n const PendingComponent = (match.__.pendingComponent ??\n router.options.defaultPendingComponent ??\n defaultPending) as any\n\n const errorComponent =\n match.__.errorComponent ?? router.options.defaultErrorComponent\n\n return (\n <MatchesProvider value={matches}>\n <React.Suspense fallback={<PendingComponent />}>\n <CatchBoundary errorComponent={errorComponent} key={match.routeId}>\n {\n ((): React.ReactNode => {\n if (match.status === 'error') {\n throw match.error\n }\n\n if (match.status === 'success') {\n return React.createElement(\n (match.__.component as any) ??\n router.options.defaultComponent ??\n Outlet,\n )\n }\n throw match.__.loadPromise\n })() as JSX.Element\n }\n </CatchBoundary>\n </React.Suspense>\n </MatchesProvider>\n )\n}\n\nclass CatchBoundary extends React.Component<{\n children: any\n errorComponent: any\n}> {\n state = {\n error: false,\n info: undefined,\n }\n\n componentDidCatch(error: any, info: any) {\n console.error(error)\n\n this.setState({\n error,\n info,\n })\n }\n\n render() {\n return (\n <CatchBoundaryInner\n {...this.props}\n errorState={this.state}\n reset={() => this.setState({})}\n />\n )\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.\nfunction CatchBoundaryInner(props: {\n children: any\n errorComponent: any\n errorState: { error: unknown; info: any }\n reset: () => void\n}) {\n const [activeErrorState, setActiveErrorState] = React.useState(\n props.errorState,\n )\n const router = useRouter()\n const errorComponent = props.errorComponent ?? DefaultErrorBoundary\n\n React.useEffect(() => {\n if (activeErrorState) {\n let prevKey = router.state.location.key\n return router.subscribe(() => {\n if (router.state.location.key !== prevKey) {\n prevKey = router.state.location.key\n setActiveErrorState({} as any)\n }\n })\n }\n\n return\n }, [activeErrorState])\n\n React.useEffect(() => {\n if (props.errorState.error) {\n setActiveErrorState(props.errorState)\n }\n props.reset()\n }, [props.errorState.error])\n\n if (activeErrorState.error) {\n return React.createElement(errorComponent, activeErrorState)\n }\n\n return props.children\n}\n\nexport function DefaultErrorBoundary({ error }: { error: any }) {\n return (\n <div style={{ padding: '.5rem', maxWidth: '100%' }}>\n <strong style={{ fontSize: '1.2rem' }}>Something went wrong!</strong>\n <div style={{ height: '.5rem' }} />\n <div>\n <pre>\n {error.message ? (\n <code\n style={{\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.5rem',\n color: 'red',\n }}\n >\n {error.message}\n </code>\n ) : null}\n </pre>\n </div>\n </div>\n )\n}\n\nexport function usePrompt(message: string, when: boolean | any): void {\n const router = useRouter()\n\n React.useEffect(() => {\n if (!when) return\n\n let unblock = router.history.block((transition) => {\n if (window.confirm(message)) {\n unblock()\n transition.retry()\n } else {\n router.location.pathname = window.location.pathname\n }\n })\n\n return unblock\n }, [when, location, message])\n}\n\nexport function Prompt({ message, when, children }: PromptProps) {\n usePrompt(message, when ?? true)\n return (children ?? null) as React.ReactNode\n}\n"],"names":["lazy","importer","lazyComp","React","promise","resolvedComp","forwardedComp","forwardRef","props","ref","resolvedCompRef","useRef","createElement","current","finalComp","preload","then","module","default","Link","router","useRouter","matchesContext","createContext","routerContext","MatchesProvider","useRouterSubscription","useSyncExternalStore","cb","subscribe","state","createReactRouter","opts","makeRouteExt","route","useRoute","subRouteId","resolvedRouteId","resolvePath","routeId","resolvedRoute","getRoute","invariant","linkProps","options","target","activeProps","className","inactiveProps","disabled","style","onClick","onFocus","onMouseEnter","onMouseLeave","rest","linkInfo","buildLink","type","href","handleClick","handleFocus","handleEnter","handleLeave","isActive","next","reactHandleClick","e","startTransition","composeHandlers","handlers","persist","forEach","handler","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","_extends","undefined","filter","Boolean","join","role","children","MatchRoute","pending","caseSensitive","params","matchRoute","coreRouter","createRouter","routerExt","useState","useMatch","rootRouteId","runtimeMatch","useMatches","match","matches","find","d","strict","routeExt","Object","assign","createRoute","loadComponent","component","document","RouterProvider","_objectWithoutPropertiesLoose","update","defaultRouterContext","userContext","useContext","context","useEffect","mount","value","warning","useNearestMatch","useSearch","_routeId","location","search","Outlet","slice","defaultPending","useCallback","PendingComponent","__","pendingComponent","defaultPendingComponent","errorComponent","defaultErrorComponent","status","error","defaultComponent","loadPromise","CatchBoundary","Component","info","componentDidCatch","console","setState","render","CatchBoundaryInner","activeErrorState","setActiveErrorState","errorState","DefaultErrorBoundary","prevKey","key","reset","padding","maxWidth","fontSize","height","message","border","borderRadius","color","usePrompt","when","unblock","history","block","transition","window","confirm","retry","pathname","Prompt"],"mappings":"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"}
|