@tanstack/react-router 1.34.3 → 1.34.6
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/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Matches.d.cts +5 -8
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/RouterProvider.d.cts +3 -1
- package/dist/cjs/Transitioner.cjs +1 -0
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/fileRoute.d.cts +2 -2
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +11 -11
- package/dist/cjs/routeInfo.d.cts +6 -13
- package/dist/cjs/router.cjs +16 -8
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +8 -2
- package/dist/cjs/useLoaderData.cjs.map +1 -1
- package/dist/cjs/useLoaderData.d.cts +3 -2
- package/dist/cjs/useMatch.cjs.map +1 -1
- package/dist/cjs/useMatch.d.cts +3 -2
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/cjs/useParams.d.cts +4 -3
- package/dist/cjs/useRouteContext.cjs.map +1 -1
- package/dist/cjs/useRouteContext.d.cts +5 -4
- package/dist/cjs/useSearch.cjs.map +1 -1
- package/dist/cjs/useSearch.d.cts +3 -2
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +12 -9
- package/dist/esm/Matches.d.ts +5 -8
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.d.ts +3 -1
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/Transitioner.js +1 -0
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/fileRoute.d.ts +2 -2
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/route.d.ts +11 -11
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/routeInfo.d.ts +6 -13
- package/dist/esm/router.d.ts +8 -2
- package/dist/esm/router.js +16 -8
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/useLoaderData.d.ts +3 -2
- package/dist/esm/useLoaderData.js.map +1 -1
- package/dist/esm/useMatch.d.ts +3 -2
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/useParams.d.ts +4 -3
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/useRouteContext.d.ts +5 -4
- package/dist/esm/useRouteContext.js.map +1 -1
- package/dist/esm/useSearch.d.ts +3 -2
- package/dist/esm/useSearch.js.map +1 -1
- package/dist/esm/utils.d.ts +12 -9
- package/dist/esm/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/Matches.tsx +21 -27
- package/src/RouterProvider.tsx +3 -1
- package/src/Transitioner.tsx +1 -6
- package/src/fileRoute.ts +1 -1
- package/src/route.ts +13 -17
- package/src/routeInfo.ts +17 -23
- package/src/router.ts +26 -12
- package/src/useLoaderData.tsx +18 -9
- package/src/useMatch.tsx +12 -7
- package/src/useParams.tsx +14 -10
- package/src/useRouteContext.ts +16 -6
- package/src/useSearch.tsx +15 -10
- package/src/utils.ts +40 -18
package/src/useMatch.tsx
CHANGED
|
@@ -8,17 +8,22 @@ import type { MakeRouteMatch } from './Matches'
|
|
|
8
8
|
import type { RouteIds } from './routeInfo'
|
|
9
9
|
import type { StrictOrFrom } from './utils'
|
|
10
10
|
|
|
11
|
+
export type UseMatchOptions<
|
|
12
|
+
TFrom,
|
|
13
|
+
TStrict extends boolean,
|
|
14
|
+
TRouteMatch,
|
|
15
|
+
TSelected,
|
|
16
|
+
> = StrictOrFrom<TFrom, TStrict> & {
|
|
17
|
+
select?: (match: TRouteMatch) => TSelected
|
|
18
|
+
}
|
|
19
|
+
|
|
11
20
|
export function useMatch<
|
|
12
21
|
TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
|
|
13
22
|
TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,
|
|
14
|
-
|
|
15
|
-
TRouteMatch = MakeRouteMatch<TRouteTree, TFrom,
|
|
23
|
+
TStrict extends boolean = true,
|
|
24
|
+
TRouteMatch = MakeRouteMatch<TRouteTree, TFrom, TStrict>,
|
|
16
25
|
TSelected = TRouteMatch,
|
|
17
|
-
>(
|
|
18
|
-
opts: StrictOrFrom<TFrom, TReturnIntersection> & {
|
|
19
|
-
select?: (match: TRouteMatch) => TSelected
|
|
20
|
-
},
|
|
21
|
-
): TSelected {
|
|
26
|
+
>(opts: UseMatchOptions<TFrom, TStrict, TRouteMatch, TSelected>): TSelected {
|
|
22
27
|
const nearestMatchId = React.useContext(matchContext)
|
|
23
28
|
|
|
24
29
|
const matchSelection = useRouterState({
|
package/src/useParams.tsx
CHANGED
|
@@ -2,22 +2,26 @@ import { useMatch } from './useMatch'
|
|
|
2
2
|
import type { AnyRoute } from './route'
|
|
3
3
|
import type { AllParams, RouteById, RouteIds } from './routeInfo'
|
|
4
4
|
import type { RegisteredRouter } from './router'
|
|
5
|
-
import type { Expand } from './utils'
|
|
6
5
|
import type { StrictOrFrom } from './utils'
|
|
7
6
|
|
|
7
|
+
export type UseParamsOptions<
|
|
8
|
+
TFrom,
|
|
9
|
+
TStrict extends boolean,
|
|
10
|
+
TParams,
|
|
11
|
+
TSelected,
|
|
12
|
+
> = StrictOrFrom<TFrom, TStrict> & {
|
|
13
|
+
select?: (params: TParams) => TSelected
|
|
14
|
+
}
|
|
15
|
+
|
|
8
16
|
export function useParams<
|
|
9
17
|
TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
|
|
10
18
|
TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,
|
|
11
|
-
|
|
12
|
-
TParams =
|
|
13
|
-
?
|
|
14
|
-
:
|
|
19
|
+
TStrict extends boolean = true,
|
|
20
|
+
TParams = TStrict extends false
|
|
21
|
+
? AllParams<TRouteTree>
|
|
22
|
+
: RouteById<TRouteTree, TFrom>['types']['allParams'],
|
|
15
23
|
TSelected = TParams,
|
|
16
|
-
>(
|
|
17
|
-
opts: StrictOrFrom<TFrom, TReturnIntersection> & {
|
|
18
|
-
select?: (params: TParams) => TSelected
|
|
19
|
-
},
|
|
20
|
-
): TSelected {
|
|
24
|
+
>(opts: UseParamsOptions<TFrom, TStrict, TParams, TSelected>): TSelected {
|
|
21
25
|
return useMatch({
|
|
22
26
|
...opts,
|
|
23
27
|
select: (match) => {
|
package/src/useRouteContext.ts
CHANGED
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
import { useMatch } from './useMatch'
|
|
2
2
|
import type { MakeRouteMatch } from './Matches'
|
|
3
3
|
import type { AnyRoute } from './route'
|
|
4
|
-
import type { RouteById, RouteIds } from './routeInfo'
|
|
4
|
+
import type { AllContext, RouteById, RouteIds } from './routeInfo'
|
|
5
5
|
import type { RegisteredRouter } from './router'
|
|
6
|
-
import type { StrictOrFrom } from './utils'
|
|
6
|
+
import type { Expand, StrictOrFrom } from './utils'
|
|
7
|
+
|
|
8
|
+
export type UseRouteContextOptions<
|
|
9
|
+
TFrom,
|
|
10
|
+
TStrict extends boolean,
|
|
11
|
+
TRouteContext,
|
|
12
|
+
TSelected,
|
|
13
|
+
> = StrictOrFrom<TFrom, TStrict> & {
|
|
14
|
+
select?: (search: TRouteContext) => TSelected
|
|
15
|
+
}
|
|
7
16
|
|
|
8
17
|
export function useRouteContext<
|
|
9
18
|
TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
|
|
10
19
|
TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,
|
|
11
|
-
|
|
20
|
+
TStrict extends boolean = true,
|
|
21
|
+
TRouteContext = TStrict extends false
|
|
22
|
+
? AllContext<TRouteTree>
|
|
23
|
+
: Expand<RouteById<TRouteTree, TFrom>['types']['allContext']>,
|
|
12
24
|
TSelected = TRouteContext,
|
|
13
25
|
>(
|
|
14
|
-
opts:
|
|
15
|
-
select?: (search: TRouteContext) => TSelected
|
|
16
|
-
},
|
|
26
|
+
opts: UseRouteContextOptions<TFrom, TStrict, TRouteContext, TSelected>,
|
|
17
27
|
): TSelected {
|
|
18
28
|
return useMatch({
|
|
19
29
|
...(opts as any),
|
package/src/useSearch.tsx
CHANGED
|
@@ -5,22 +5,27 @@ import type { RegisteredRouter } from './router'
|
|
|
5
5
|
import type { MakeRouteMatch } from './Matches'
|
|
6
6
|
import type { StrictOrFrom } from './utils'
|
|
7
7
|
|
|
8
|
+
export type UseSearchOptions<
|
|
9
|
+
TFrom,
|
|
10
|
+
TStrict extends boolean,
|
|
11
|
+
TSearch,
|
|
12
|
+
TSelected,
|
|
13
|
+
> = StrictOrFrom<TFrom, TStrict> & {
|
|
14
|
+
select?: (search: TSearch) => TSelected
|
|
15
|
+
}
|
|
16
|
+
|
|
8
17
|
export function useSearch<
|
|
9
18
|
TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
|
|
10
19
|
TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,
|
|
11
|
-
|
|
12
|
-
TSearch =
|
|
13
|
-
?
|
|
20
|
+
TStrict extends boolean = true,
|
|
21
|
+
TSearch = TStrict extends false
|
|
22
|
+
? FullSearchSchema<TRouteTree>
|
|
23
|
+
: Exclude<
|
|
14
24
|
RouteById<TRouteTree, TFrom>['types']['fullSearchSchema'],
|
|
15
25
|
RootSearchSchema
|
|
16
|
-
|
|
17
|
-
: Partial<Omit<FullSearchSchema<TRouteTree>, keyof RootSearchSchema>>,
|
|
26
|
+
>,
|
|
18
27
|
TSelected = TSearch,
|
|
19
|
-
>(
|
|
20
|
-
opts: StrictOrFrom<TFrom, TReturnIntersection> & {
|
|
21
|
-
select?: (search: TSearch) => TSelected
|
|
22
|
-
},
|
|
23
|
-
): TSelected {
|
|
28
|
+
>(opts: UseSearchOptions<TFrom, TStrict, TSearch, TSelected>): TSelected {
|
|
24
29
|
return useMatch({
|
|
25
30
|
...opts,
|
|
26
31
|
select: (match: MakeRouteMatch<TRouteTree, TFrom>) => {
|
package/src/utils.ts
CHANGED
|
@@ -69,18 +69,38 @@ export type NonNullableUpdater<TPrevious, TResult = TPrevious> =
|
|
|
69
69
|
| TResult
|
|
70
70
|
| ((prev: TPrevious) => TResult)
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
export type MergeUnionObjects<TUnion> = TUnion extends MergeUnionPrimitive
|
|
73
|
+
? never
|
|
74
|
+
: TUnion
|
|
75
|
+
|
|
76
|
+
export type MergeUnionObject<TUnion> =
|
|
77
|
+
MergeUnionObjects<TUnion> extends infer TObj
|
|
78
|
+
? {
|
|
79
|
+
[TKey in TObj extends any ? keyof TObj : never]?: TObj extends any
|
|
80
|
+
? TKey extends keyof TObj
|
|
81
|
+
? TObj[TKey]
|
|
82
|
+
: never
|
|
83
|
+
: never
|
|
84
|
+
}
|
|
78
85
|
: never
|
|
79
|
-
export type UnionToTuple<T, TLast = LastInUnion<T>> = [T] extends [never]
|
|
80
|
-
? []
|
|
81
|
-
: [...UnionToTuple<Exclude<T, TLast>>, TLast]
|
|
82
86
|
|
|
83
|
-
|
|
87
|
+
export type MergeUnionPrimitive =
|
|
88
|
+
| ReadonlyArray<any>
|
|
89
|
+
| number
|
|
90
|
+
| string
|
|
91
|
+
| bigint
|
|
92
|
+
| boolean
|
|
93
|
+
| symbol
|
|
94
|
+
|
|
95
|
+
export type MergeUnionPrimitives<TUnion> = TUnion extends MergeUnionPrimitive
|
|
96
|
+
? TUnion
|
|
97
|
+
: TUnion extends object
|
|
98
|
+
? never
|
|
99
|
+
: TUnion
|
|
100
|
+
|
|
101
|
+
export type MergeUnion<TUnion> =
|
|
102
|
+
| MergeUnionPrimitives<TUnion>
|
|
103
|
+
| MergeUnionObject<MergeUnionObjects<TUnion>>
|
|
84
104
|
|
|
85
105
|
export function last<T>(arr: Array<T>) {
|
|
86
106
|
return arr[arr.length - 1]
|
|
@@ -268,15 +288,17 @@ export type StringLiteral<T> = T extends string
|
|
|
268
288
|
: T
|
|
269
289
|
: never
|
|
270
290
|
|
|
271
|
-
export type StrictOrFrom<
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
| {
|
|
291
|
+
export type StrictOrFrom<
|
|
292
|
+
TFrom,
|
|
293
|
+
TStrict extends boolean = true,
|
|
294
|
+
> = TStrict extends false
|
|
295
|
+
? {
|
|
277
296
|
from?: never
|
|
278
|
-
strict:
|
|
279
|
-
|
|
297
|
+
strict: TStrict
|
|
298
|
+
}
|
|
299
|
+
: {
|
|
300
|
+
from: StringLiteral<TFrom> | TFrom
|
|
301
|
+
strict?: TStrict
|
|
280
302
|
}
|
|
281
303
|
|
|
282
304
|
export const useLayoutEffect =
|