@tanstack/react-router 1.121.16 → 1.121.17
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/package.json +2 -2
- package/dist/cjs/Asset.cjs +0 -41
- package/dist/cjs/Asset.cjs.map +0 -1
- package/dist/cjs/Asset.d.cts +0 -2
- package/dist/cjs/CatchBoundary.cjs +0 -114
- package/dist/cjs/CatchBoundary.cjs.map +0 -1
- package/dist/cjs/CatchBoundary.d.cts +0 -12
- package/dist/cjs/ClientOnly.cjs +0 -20
- package/dist/cjs/ClientOnly.cjs.map +0 -1
- package/dist/cjs/ClientOnly.d.cts +0 -29
- package/dist/cjs/HeadContent.cjs +0 -155
- package/dist/cjs/HeadContent.cjs.map +0 -1
- package/dist/cjs/HeadContent.d.cts +0 -7
- package/dist/cjs/Match.cjs +0 -257
- package/dist/cjs/Match.cjs.map +0 -1
- package/dist/cjs/Match.d.cts +0 -8
- package/dist/cjs/Matches.cjs +0 -136
- package/dist/cjs/Matches.cjs.map +0 -1
- package/dist/cjs/Matches.d.cts +0 -26
- package/dist/cjs/RouterProvider.cjs +0 -33
- package/dist/cjs/RouterProvider.cjs.map +0 -1
- package/dist/cjs/RouterProvider.d.cts +0 -10
- package/dist/cjs/SafeFragment.cjs +0 -8
- package/dist/cjs/SafeFragment.cjs.map +0 -1
- package/dist/cjs/SafeFragment.d.cts +0 -1
- package/dist/cjs/ScriptOnce.cjs +0 -28
- package/dist/cjs/ScriptOnce.cjs.map +0 -1
- package/dist/cjs/ScriptOnce.d.cts +0 -5
- package/dist/cjs/Scripts.cjs +0 -51
- package/dist/cjs/Scripts.cjs.map +0 -1
- package/dist/cjs/Scripts.d.cts +0 -1
- package/dist/cjs/ScrollRestoration.cjs +0 -39
- package/dist/cjs/ScrollRestoration.cjs.map +0 -1
- package/dist/cjs/ScrollRestoration.d.cts +0 -14
- package/dist/cjs/Transitioner.cjs +0 -115
- package/dist/cjs/Transitioner.cjs.map +0 -1
- package/dist/cjs/Transitioner.d.cts +0 -1
- package/dist/cjs/awaited.cjs +0 -48
- package/dist/cjs/awaited.cjs.map +0 -1
- package/dist/cjs/awaited.d.cts +0 -10
- package/dist/cjs/fileRoute.cjs +0 -107
- package/dist/cjs/fileRoute.cjs.map +0 -1
- package/dist/cjs/fileRoute.d.cts +0 -54
- package/dist/cjs/history.d.cts +0 -8
- package/dist/cjs/index.cjs +0 -289
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/index.d.cts +0 -55
- package/dist/cjs/lazyRouteComponent.cjs +0 -78
- package/dist/cjs/lazyRouteComponent.cjs.map +0 -1
- package/dist/cjs/lazyRouteComponent.d.cts +0 -2
- package/dist/cjs/link.cjs +0 -324
- package/dist/cjs/link.cjs.map +0 -1
- package/dist/cjs/link.d.cts +0 -48
- package/dist/cjs/matchContext.cjs +0 -27
- package/dist/cjs/matchContext.cjs.map +0 -1
- package/dist/cjs/matchContext.d.cts +0 -3
- package/dist/cjs/not-found.cjs +0 -40
- package/dist/cjs/not-found.cjs.map +0 -1
- package/dist/cjs/not-found.d.cts +0 -9
- package/dist/cjs/renderRouteNotFound.cjs +0 -22
- package/dist/cjs/renderRouteNotFound.cjs.map +0 -1
- package/dist/cjs/renderRouteNotFound.d.cts +0 -2
- package/dist/cjs/route.cjs +0 -205
- package/dist/cjs/route.cjs.map +0 -1
- package/dist/cjs/route.d.cts +0 -95
- package/dist/cjs/router.cjs +0 -22
- package/dist/cjs/router.cjs.map +0 -1
- package/dist/cjs/router.d.cts +0 -72
- package/dist/cjs/routerContext.cjs +0 -33
- package/dist/cjs/routerContext.cjs.map +0 -1
- package/dist/cjs/routerContext.d.cts +0 -8
- package/dist/cjs/scroll-restoration.cjs +0 -24
- package/dist/cjs/scroll-restoration.cjs.map +0 -1
- package/dist/cjs/scroll-restoration.d.cts +0 -1
- package/dist/cjs/serializer.d.cts +0 -6
- package/dist/cjs/structuralSharing.d.cts +0 -8
- package/dist/cjs/typePrimitives.d.cts +0 -16
- package/dist/cjs/useBlocker.cjs +0 -165
- package/dist/cjs/useBlocker.cjs.map +0 -1
- package/dist/cjs/useBlocker.d.cts +0 -66
- package/dist/cjs/useCanGoBack.cjs +0 -8
- package/dist/cjs/useCanGoBack.cjs.map +0 -1
- package/dist/cjs/useCanGoBack.d.cts +0 -1
- package/dist/cjs/useLoaderData.cjs +0 -15
- package/dist/cjs/useLoaderData.cjs.map +0 -1
- package/dist/cjs/useLoaderData.d.cts +0 -8
- package/dist/cjs/useLoaderDeps.cjs +0 -14
- package/dist/cjs/useLoaderDeps.cjs.map +0 -1
- package/dist/cjs/useLoaderDeps.d.cts +0 -8
- package/dist/cjs/useLocation.cjs +0 -10
- package/dist/cjs/useLocation.cjs.map +0 -1
- package/dist/cjs/useLocation.d.cts +0 -7
- package/dist/cjs/useMatch.cjs +0 -47
- package/dist/cjs/useMatch.cjs.map +0 -1
- package/dist/cjs/useMatch.d.cts +0 -10
- package/dist/cjs/useNavigate.cjs +0 -55
- package/dist/cjs/useNavigate.cjs.map +0 -1
- package/dist/cjs/useNavigate.d.cts +0 -5
- package/dist/cjs/useParams.cjs +0 -16
- package/dist/cjs/useParams.cjs.map +0 -1
- package/dist/cjs/useParams.d.cts +0 -9
- package/dist/cjs/useRouteContext.cjs +0 -11
- package/dist/cjs/useRouteContext.cjs.map +0 -1
- package/dist/cjs/useRouteContext.d.cts +0 -3
- package/dist/cjs/useRouter.cjs +0 -32
- package/dist/cjs/useRouter.cjs.map +0 -1
- package/dist/cjs/useRouter.d.cts +0 -4
- package/dist/cjs/useRouterState.cjs +0 -29
- package/dist/cjs/useRouterState.cjs.map +0 -1
- package/dist/cjs/useRouterState.d.cts +0 -8
- package/dist/cjs/useSearch.cjs +0 -16
- package/dist/cjs/useSearch.cjs.map +0 -1
- package/dist/cjs/useSearch.d.cts +0 -9
- package/dist/cjs/utils.cjs +0 -72
- package/dist/cjs/utils.cjs.map +0 -1
- package/dist/cjs/utils.d.cts +0 -49
- package/dist/esm/Asset.d.ts +0 -2
- package/dist/esm/Asset.js +0 -41
- package/dist/esm/Asset.js.map +0 -1
- package/dist/esm/CatchBoundary.d.ts +0 -12
- package/dist/esm/CatchBoundary.js +0 -97
- package/dist/esm/CatchBoundary.js.map +0 -1
- package/dist/esm/ClientOnly.d.ts +0 -29
- package/dist/esm/ClientOnly.js +0 -20
- package/dist/esm/ClientOnly.js.map +0 -1
- package/dist/esm/HeadContent.d.ts +0 -7
- package/dist/esm/HeadContent.js +0 -139
- package/dist/esm/HeadContent.js.map +0 -1
- package/dist/esm/Match.d.ts +0 -8
- package/dist/esm/Match.js +0 -240
- package/dist/esm/Match.js.map +0 -1
- package/dist/esm/Matches.d.ts +0 -26
- package/dist/esm/Matches.js +0 -119
- package/dist/esm/Matches.js.map +0 -1
- package/dist/esm/RouterProvider.d.ts +0 -10
- package/dist/esm/RouterProvider.js +0 -33
- package/dist/esm/RouterProvider.js.map +0 -1
- package/dist/esm/SafeFragment.d.ts +0 -1
- package/dist/esm/SafeFragment.js +0 -8
- package/dist/esm/SafeFragment.js.map +0 -1
- package/dist/esm/ScriptOnce.d.ts +0 -5
- package/dist/esm/ScriptOnce.js +0 -28
- package/dist/esm/ScriptOnce.js.map +0 -1
- package/dist/esm/Scripts.d.ts +0 -1
- package/dist/esm/Scripts.js +0 -51
- package/dist/esm/Scripts.js.map +0 -1
- package/dist/esm/ScrollRestoration.d.ts +0 -14
- package/dist/esm/ScrollRestoration.js +0 -39
- package/dist/esm/ScrollRestoration.js.map +0 -1
- package/dist/esm/Transitioner.d.ts +0 -1
- package/dist/esm/Transitioner.js +0 -98
- package/dist/esm/Transitioner.js.map +0 -1
- package/dist/esm/awaited.d.ts +0 -10
- package/dist/esm/awaited.js +0 -31
- package/dist/esm/awaited.js.map +0 -1
- package/dist/esm/fileRoute.d.ts +0 -54
- package/dist/esm/fileRoute.js +0 -107
- package/dist/esm/fileRoute.js.map +0 -1
- package/dist/esm/history.d.ts +0 -8
- package/dist/esm/index.d.ts +0 -55
- package/dist/esm/index.js +0 -151
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lazyRouteComponent.d.ts +0 -2
- package/dist/esm/lazyRouteComponent.js +0 -61
- package/dist/esm/lazyRouteComponent.js.map +0 -1
- package/dist/esm/link.d.ts +0 -48
- package/dist/esm/link.js +0 -307
- package/dist/esm/link.js.map +0 -1
- package/dist/esm/matchContext.d.ts +0 -3
- package/dist/esm/matchContext.js +0 -10
- package/dist/esm/matchContext.js.map +0 -1
- package/dist/esm/not-found.d.ts +0 -9
- package/dist/esm/not-found.js +0 -40
- package/dist/esm/not-found.js.map +0 -1
- package/dist/esm/renderRouteNotFound.d.ts +0 -2
- package/dist/esm/renderRouteNotFound.js +0 -22
- package/dist/esm/renderRouteNotFound.js.map +0 -1
- package/dist/esm/route.d.ts +0 -95
- package/dist/esm/route.js +0 -205
- package/dist/esm/route.js.map +0 -1
- package/dist/esm/router.d.ts +0 -72
- package/dist/esm/router.js +0 -22
- package/dist/esm/router.js.map +0 -1
- package/dist/esm/routerContext.d.ts +0 -8
- package/dist/esm/routerContext.js +0 -16
- package/dist/esm/routerContext.js.map +0 -1
- package/dist/esm/scroll-restoration.d.ts +0 -1
- package/dist/esm/scroll-restoration.js +0 -24
- package/dist/esm/scroll-restoration.js.map +0 -1
- package/dist/esm/serializer.d.ts +0 -6
- package/dist/esm/structuralSharing.d.ts +0 -8
- package/dist/esm/typePrimitives.d.ts +0 -16
- package/dist/esm/useBlocker.d.ts +0 -66
- package/dist/esm/useBlocker.js +0 -148
- package/dist/esm/useBlocker.js.map +0 -1
- package/dist/esm/useCanGoBack.d.ts +0 -1
- package/dist/esm/useCanGoBack.js +0 -8
- package/dist/esm/useCanGoBack.js.map +0 -1
- package/dist/esm/useLoaderData.d.ts +0 -8
- package/dist/esm/useLoaderData.js +0 -15
- package/dist/esm/useLoaderData.js.map +0 -1
- package/dist/esm/useLoaderDeps.d.ts +0 -8
- package/dist/esm/useLoaderDeps.js +0 -14
- package/dist/esm/useLoaderDeps.js.map +0 -1
- package/dist/esm/useLocation.d.ts +0 -7
- package/dist/esm/useLocation.js +0 -10
- package/dist/esm/useLocation.js.map +0 -1
- package/dist/esm/useMatch.d.ts +0 -10
- package/dist/esm/useMatch.js +0 -30
- package/dist/esm/useMatch.js.map +0 -1
- package/dist/esm/useNavigate.d.ts +0 -5
- package/dist/esm/useNavigate.js +0 -38
- package/dist/esm/useNavigate.js.map +0 -1
- package/dist/esm/useParams.d.ts +0 -9
- package/dist/esm/useParams.js +0 -16
- package/dist/esm/useParams.js.map +0 -1
- package/dist/esm/useRouteContext.d.ts +0 -3
- package/dist/esm/useRouteContext.js +0 -11
- package/dist/esm/useRouteContext.js.map +0 -1
- package/dist/esm/useRouter.d.ts +0 -4
- package/dist/esm/useRouter.js +0 -15
- package/dist/esm/useRouter.js.map +0 -1
- package/dist/esm/useRouterState.d.ts +0 -8
- package/dist/esm/useRouterState.js +0 -29
- package/dist/esm/useRouterState.js.map +0 -1
- package/dist/esm/useSearch.d.ts +0 -9
- package/dist/esm/useSearch.js +0 -16
- package/dist/esm/useSearch.js.map +0 -1
- package/dist/esm/utils.d.ts +0 -49
- package/dist/esm/utils.js +0 -55
- package/dist/esm/utils.js.map +0 -1
- package/dist/llms/index.d.ts +0 -3
- package/dist/llms/index.js +0 -35
- package/dist/llms/rules/api.d.ts +0 -2
- package/dist/llms/rules/api.js +0 -4241
- package/dist/llms/rules/guide.d.ts +0 -2
- package/dist/llms/rules/guide.js +0 -6225
- package/dist/llms/rules/routing.d.ts +0 -2
- package/dist/llms/rules/routing.js +0 -1946
- package/dist/llms/rules/setup-and-architecture.d.ts +0 -2
- package/dist/llms/rules/setup-and-architecture.js +0 -932
package/dist/esm/useBlocker.js
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useRouter } from "./useRouter.js";
|
|
3
|
-
function _resolveBlockerOpts(opts, condition) {
|
|
4
|
-
if (opts === void 0) {
|
|
5
|
-
return {
|
|
6
|
-
shouldBlockFn: () => true,
|
|
7
|
-
withResolver: false
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
if ("shouldBlockFn" in opts) {
|
|
11
|
-
return opts;
|
|
12
|
-
}
|
|
13
|
-
if (typeof opts === "function") {
|
|
14
|
-
const shouldBlock2 = Boolean(condition ?? true);
|
|
15
|
-
const _customBlockerFn2 = async () => {
|
|
16
|
-
if (shouldBlock2) return await opts();
|
|
17
|
-
return false;
|
|
18
|
-
};
|
|
19
|
-
return {
|
|
20
|
-
shouldBlockFn: _customBlockerFn2,
|
|
21
|
-
enableBeforeUnload: shouldBlock2,
|
|
22
|
-
withResolver: false
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
const shouldBlock = Boolean(opts.condition ?? true);
|
|
26
|
-
const fn = opts.blockerFn;
|
|
27
|
-
const _customBlockerFn = async () => {
|
|
28
|
-
if (shouldBlock && fn !== void 0) {
|
|
29
|
-
return await fn();
|
|
30
|
-
}
|
|
31
|
-
return shouldBlock;
|
|
32
|
-
};
|
|
33
|
-
return {
|
|
34
|
-
shouldBlockFn: _customBlockerFn,
|
|
35
|
-
enableBeforeUnload: shouldBlock,
|
|
36
|
-
withResolver: fn === void 0
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function useBlocker(opts, condition) {
|
|
40
|
-
const {
|
|
41
|
-
shouldBlockFn,
|
|
42
|
-
enableBeforeUnload = true,
|
|
43
|
-
disabled = false,
|
|
44
|
-
withResolver = false
|
|
45
|
-
} = _resolveBlockerOpts(opts, condition);
|
|
46
|
-
const router = useRouter();
|
|
47
|
-
const { history } = router;
|
|
48
|
-
const [resolver, setResolver] = React.useState({
|
|
49
|
-
status: "idle",
|
|
50
|
-
current: void 0,
|
|
51
|
-
next: void 0,
|
|
52
|
-
action: void 0,
|
|
53
|
-
proceed: void 0,
|
|
54
|
-
reset: void 0
|
|
55
|
-
});
|
|
56
|
-
React.useEffect(() => {
|
|
57
|
-
const blockerFnComposed = async (blockerFnArgs) => {
|
|
58
|
-
function getLocation(location) {
|
|
59
|
-
const parsedLocation = router.parseLocation(void 0, location);
|
|
60
|
-
const matchedRoutes = router.getMatchedRoutes(
|
|
61
|
-
parsedLocation.pathname,
|
|
62
|
-
void 0
|
|
63
|
-
);
|
|
64
|
-
if (matchedRoutes.foundRoute === void 0) {
|
|
65
|
-
throw new Error(`No route found for location ${location.href}`);
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
routeId: matchedRoutes.foundRoute.id,
|
|
69
|
-
fullPath: matchedRoutes.foundRoute.fullPath,
|
|
70
|
-
pathname: parsedLocation.pathname,
|
|
71
|
-
params: matchedRoutes.routeParams,
|
|
72
|
-
search: parsedLocation.search
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
const current = getLocation(blockerFnArgs.currentLocation);
|
|
76
|
-
const next = getLocation(blockerFnArgs.nextLocation);
|
|
77
|
-
const shouldBlock = await shouldBlockFn({
|
|
78
|
-
action: blockerFnArgs.action,
|
|
79
|
-
current,
|
|
80
|
-
next
|
|
81
|
-
});
|
|
82
|
-
if (!withResolver) {
|
|
83
|
-
return shouldBlock;
|
|
84
|
-
}
|
|
85
|
-
if (!shouldBlock) {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
const promise = new Promise((resolve) => {
|
|
89
|
-
setResolver({
|
|
90
|
-
status: "blocked",
|
|
91
|
-
current,
|
|
92
|
-
next,
|
|
93
|
-
action: blockerFnArgs.action,
|
|
94
|
-
proceed: () => resolve(false),
|
|
95
|
-
reset: () => resolve(true)
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
const canNavigateAsync = await promise;
|
|
99
|
-
setResolver({
|
|
100
|
-
status: "idle",
|
|
101
|
-
current: void 0,
|
|
102
|
-
next: void 0,
|
|
103
|
-
action: void 0,
|
|
104
|
-
proceed: void 0,
|
|
105
|
-
reset: void 0
|
|
106
|
-
});
|
|
107
|
-
return canNavigateAsync;
|
|
108
|
-
};
|
|
109
|
-
return disabled ? void 0 : history.block({ blockerFn: blockerFnComposed, enableBeforeUnload });
|
|
110
|
-
}, [
|
|
111
|
-
shouldBlockFn,
|
|
112
|
-
enableBeforeUnload,
|
|
113
|
-
disabled,
|
|
114
|
-
withResolver,
|
|
115
|
-
history,
|
|
116
|
-
router
|
|
117
|
-
]);
|
|
118
|
-
return resolver;
|
|
119
|
-
}
|
|
120
|
-
const _resolvePromptBlockerArgs = (props) => {
|
|
121
|
-
if ("shouldBlockFn" in props) {
|
|
122
|
-
return { ...props };
|
|
123
|
-
}
|
|
124
|
-
const shouldBlock = Boolean(props.condition ?? true);
|
|
125
|
-
const fn = props.blockerFn;
|
|
126
|
-
const _customBlockerFn = async () => {
|
|
127
|
-
if (shouldBlock && fn !== void 0) {
|
|
128
|
-
return await fn();
|
|
129
|
-
}
|
|
130
|
-
return shouldBlock;
|
|
131
|
-
};
|
|
132
|
-
return {
|
|
133
|
-
shouldBlockFn: _customBlockerFn,
|
|
134
|
-
enableBeforeUnload: shouldBlock,
|
|
135
|
-
withResolver: fn === void 0
|
|
136
|
-
};
|
|
137
|
-
};
|
|
138
|
-
function Block(opts) {
|
|
139
|
-
const { children, ...rest } = opts;
|
|
140
|
-
const args = _resolvePromptBlockerArgs(rest);
|
|
141
|
-
const resolver = useBlocker(args);
|
|
142
|
-
return children ? typeof children === "function" ? children(resolver) : children : null;
|
|
143
|
-
}
|
|
144
|
-
export {
|
|
145
|
-
Block,
|
|
146
|
-
useBlocker
|
|
147
|
-
};
|
|
148
|
-
//# sourceMappingURL=useBlocker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useBlocker.js","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport type {\n BlockerFnArgs,\n HistoryAction,\n HistoryLocation,\n} from '@tanstack/history'\nimport type {\n AnyRoute,\n AnyRouter,\n ParseRoute,\n RegisteredRouter,\n} from '@tanstack/router-core'\n\ninterface ShouldBlockFnLocation<\n out TRouteId,\n out TFullPath,\n out TAllParams,\n out TFullSearchSchema,\n> {\n routeId: TRouteId\n fullPath: TFullPath\n pathname: string\n params: TAllParams\n search: TFullSearchSchema\n}\n\ntype AnyShouldBlockFnLocation = ShouldBlockFnLocation<any, any, any, any>\ntype MakeShouldBlockFnLocationUnion<\n TRouter extends AnyRouter = RegisteredRouter,\n TRoute extends AnyRoute = ParseRoute<TRouter['routeTree']>,\n> = TRoute extends any\n ? ShouldBlockFnLocation<\n TRoute['id'],\n TRoute['fullPath'],\n TRoute['types']['allParams'],\n TRoute['types']['fullSearchSchema']\n >\n : never\n\ntype BlockerResolver<TRouter extends AnyRouter = RegisteredRouter> =\n | {\n status: 'blocked'\n current: MakeShouldBlockFnLocationUnion<TRouter>\n next: MakeShouldBlockFnLocationUnion<TRouter>\n action: HistoryAction\n proceed: () => void\n reset: () => void\n }\n | {\n status: 'idle'\n current: undefined\n next: undefined\n action: undefined\n proceed: undefined\n reset: undefined\n }\n\ntype ShouldBlockFnArgs<TRouter extends AnyRouter = RegisteredRouter> = {\n current: MakeShouldBlockFnLocationUnion<TRouter>\n next: MakeShouldBlockFnLocationUnion<TRouter>\n action: HistoryAction\n}\n\nexport type ShouldBlockFn<TRouter extends AnyRouter = RegisteredRouter> = (\n args: ShouldBlockFnArgs<TRouter>,\n) => boolean | Promise<boolean>\nexport type UseBlockerOpts<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n> = {\n shouldBlockFn: ShouldBlockFn<TRouter>\n enableBeforeUnload?: boolean | (() => boolean)\n disabled?: boolean\n withResolver?: TWithResolver\n}\n\ntype LegacyBlockerFn = () => Promise<any> | any\ntype LegacyBlockerOpts = {\n blockerFn?: LegacyBlockerFn\n condition?: boolean | any\n}\n\nfunction _resolveBlockerOpts(\n opts?: UseBlockerOpts | LegacyBlockerOpts | LegacyBlockerFn,\n condition?: boolean | any,\n): UseBlockerOpts {\n if (opts === undefined) {\n return {\n shouldBlockFn: () => true,\n withResolver: false,\n }\n }\n\n if ('shouldBlockFn' in opts) {\n return opts\n }\n\n if (typeof opts === 'function') {\n const shouldBlock = Boolean(condition ?? true)\n\n const _customBlockerFn = async () => {\n if (shouldBlock) return await opts()\n return false\n }\n\n return {\n shouldBlockFn: _customBlockerFn,\n enableBeforeUnload: shouldBlock,\n withResolver: false,\n }\n }\n\n const shouldBlock = Boolean(opts.condition ?? true)\n const fn = opts.blockerFn\n\n const _customBlockerFn = async () => {\n if (shouldBlock && fn !== undefined) {\n return await fn()\n }\n return shouldBlock\n }\n\n return {\n shouldBlockFn: _customBlockerFn,\n enableBeforeUnload: shouldBlock,\n withResolver: fn === undefined,\n }\n}\n\nexport function useBlocker<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = false,\n>(\n opts: UseBlockerOpts<TRouter, TWithResolver>,\n): TWithResolver extends true ? BlockerResolver<TRouter> : void\n\n/**\n * @deprecated Use the shouldBlockFn property instead\n */\nexport function useBlocker(blockerFnOrOpts?: LegacyBlockerOpts): BlockerResolver\n\n/**\n * @deprecated Use the UseBlockerOpts object syntax instead\n */\nexport function useBlocker(\n blockerFn?: LegacyBlockerFn,\n condition?: boolean | any,\n): BlockerResolver\n\nexport function useBlocker(\n opts?: UseBlockerOpts | LegacyBlockerOpts | LegacyBlockerFn,\n condition?: boolean | any,\n): BlockerResolver | void {\n const {\n shouldBlockFn,\n enableBeforeUnload = true,\n disabled = false,\n withResolver = false,\n } = _resolveBlockerOpts(opts, condition)\n\n const router = useRouter()\n const { history } = router\n\n const [resolver, setResolver] = React.useState<BlockerResolver>({\n status: 'idle',\n current: undefined,\n next: undefined,\n action: undefined,\n proceed: undefined,\n reset: undefined,\n })\n\n React.useEffect(() => {\n const blockerFnComposed = async (blockerFnArgs: BlockerFnArgs) => {\n function getLocation(\n location: HistoryLocation,\n ): AnyShouldBlockFnLocation {\n const parsedLocation = router.parseLocation(undefined, location)\n const matchedRoutes = router.getMatchedRoutes(\n parsedLocation.pathname,\n undefined,\n )\n if (matchedRoutes.foundRoute === undefined) {\n throw new Error(`No route found for location ${location.href}`)\n }\n return {\n routeId: matchedRoutes.foundRoute.id,\n fullPath: matchedRoutes.foundRoute.fullPath,\n pathname: parsedLocation.pathname,\n params: matchedRoutes.routeParams,\n search: parsedLocation.search,\n }\n }\n\n const current = getLocation(blockerFnArgs.currentLocation)\n const next = getLocation(blockerFnArgs.nextLocation)\n\n const shouldBlock = await shouldBlockFn({\n action: blockerFnArgs.action,\n current,\n next,\n })\n if (!withResolver) {\n return shouldBlock\n }\n\n if (!shouldBlock) {\n return false\n }\n\n const promise = new Promise<boolean>((resolve) => {\n setResolver({\n status: 'blocked',\n current,\n next,\n action: blockerFnArgs.action,\n proceed: () => resolve(false),\n reset: () => resolve(true),\n })\n })\n\n const canNavigateAsync = await promise\n setResolver({\n status: 'idle',\n current: undefined,\n next: undefined,\n action: undefined,\n proceed: undefined,\n reset: undefined,\n })\n\n return canNavigateAsync\n }\n\n return disabled\n ? undefined\n : history.block({ blockerFn: blockerFnComposed, enableBeforeUnload })\n }, [\n shouldBlockFn,\n enableBeforeUnload,\n disabled,\n withResolver,\n history,\n router,\n ])\n\n return resolver\n}\n\nconst _resolvePromptBlockerArgs = (\n props: PromptProps | LegacyPromptProps,\n): UseBlockerOpts => {\n if ('shouldBlockFn' in props) {\n return { ...props }\n }\n\n const shouldBlock = Boolean(props.condition ?? true)\n const fn = props.blockerFn\n\n const _customBlockerFn = async () => {\n if (shouldBlock && fn !== undefined) {\n return await fn()\n }\n return shouldBlock\n }\n\n return {\n shouldBlockFn: _customBlockerFn,\n enableBeforeUnload: shouldBlock,\n withResolver: fn === undefined,\n }\n}\n\nexport function Block<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n>(opts: PromptProps<TRouter, TWithResolver>): React.ReactNode\n\n/**\n * @deprecated Use the UseBlockerOpts property instead\n */\nexport function Block(opts: LegacyPromptProps): React.ReactNode\n\nexport function Block(opts: PromptProps | LegacyPromptProps): React.ReactNode {\n const { children, ...rest } = opts\n const args = _resolvePromptBlockerArgs(rest)\n\n const resolver = useBlocker(args)\n return children\n ? typeof children === 'function'\n ? children(resolver as any)\n : children\n : null\n}\n\ntype LegacyPromptProps = {\n blockerFn?: LegacyBlockerFn\n condition?: boolean | any\n children?: React.ReactNode | ((params: BlockerResolver) => React.ReactNode)\n}\n\ntype PromptProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n TParams = TWithResolver extends true ? BlockerResolver<TRouter> : void,\n> = UseBlockerOpts<TRouter, TWithResolver> & {\n children?: React.ReactNode | ((params: TParams) => React.ReactNode)\n}\n"],"names":["shouldBlock","_customBlockerFn"],"mappings":";;AAmFA,SAAS,oBACP,MACA,WACgB;AAChB,MAAI,SAAS,QAAW;AACf,WAAA;AAAA,MACL,eAAe,MAAM;AAAA,MACrB,cAAc;AAAA,IAChB;AAAA,EAAA;AAGF,MAAI,mBAAmB,MAAM;AACpB,WAAA;AAAA,EAAA;AAGL,MAAA,OAAO,SAAS,YAAY;AACxBA,UAAAA,eAAc,QAAQ,aAAa,IAAI;AAE7C,UAAMC,oBAAmB,YAAY;AAC/BD,UAAAA,aAAoB,QAAA,MAAM,KAAK;AAC5B,aAAA;AAAA,IACT;AAEO,WAAA;AAAA,MACL,eAAeC;AAAAA,MACf,oBAAoBD;AAAAA,MACpB,cAAc;AAAA,IAChB;AAAA,EAAA;AAGF,QAAM,cAAc,QAAQ,KAAK,aAAa,IAAI;AAClD,QAAM,KAAK,KAAK;AAEhB,QAAM,mBAAmB,YAAY;AAC/B,QAAA,eAAe,OAAO,QAAW;AACnC,aAAO,MAAM,GAAG;AAAA,IAAA;AAEX,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,eAAe;AAAA,IACf,oBAAoB;AAAA,IACpB,cAAc,OAAO;AAAA,EACvB;AACF;AAsBgB,SAAA,WACd,MACA,WACwB;AAClB,QAAA;AAAA,IACJ;AAAA,IACA,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,eAAe;AAAA,EAAA,IACb,oBAAoB,MAAM,SAAS;AAEvC,QAAM,SAAS,UAAU;AACnB,QAAA,EAAE,YAAY;AAEpB,QAAM,CAAC,UAAU,WAAW,IAAI,MAAM,SAA0B;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,EAAA,CACR;AAED,QAAM,UAAU,MAAM;AACd,UAAA,oBAAoB,OAAO,kBAAiC;AAChE,eAAS,YACP,UAC0B;AAC1B,cAAM,iBAAiB,OAAO,cAAc,QAAW,QAAQ;AAC/D,cAAM,gBAAgB,OAAO;AAAA,UAC3B,eAAe;AAAA,UACf;AAAA,QACF;AACI,YAAA,cAAc,eAAe,QAAW;AAC1C,gBAAM,IAAI,MAAM,+BAA+B,SAAS,IAAI,EAAE;AAAA,QAAA;AAEzD,eAAA;AAAA,UACL,SAAS,cAAc,WAAW;AAAA,UAClC,UAAU,cAAc,WAAW;AAAA,UACnC,UAAU,eAAe;AAAA,UACzB,QAAQ,cAAc;AAAA,UACtB,QAAQ,eAAe;AAAA,QACzB;AAAA,MAAA;AAGI,YAAA,UAAU,YAAY,cAAc,eAAe;AACnD,YAAA,OAAO,YAAY,cAAc,YAAY;AAE7C,YAAA,cAAc,MAAM,cAAc;AAAA,QACtC,QAAQ,cAAc;AAAA,QACtB;AAAA,QACA;AAAA,MAAA,CACD;AACD,UAAI,CAAC,cAAc;AACV,eAAA;AAAA,MAAA;AAGT,UAAI,CAAC,aAAa;AACT,eAAA;AAAA,MAAA;AAGT,YAAM,UAAU,IAAI,QAAiB,CAAC,YAAY;AACpC,oBAAA;AAAA,UACV,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,QAAQ,cAAc;AAAA,UACtB,SAAS,MAAM,QAAQ,KAAK;AAAA,UAC5B,OAAO,MAAM,QAAQ,IAAI;AAAA,QAAA,CAC1B;AAAA,MAAA,CACF;AAED,YAAM,mBAAmB,MAAM;AACnB,kBAAA;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,MAAA,CACR;AAEM,aAAA;AAAA,IACT;AAEO,WAAA,WACH,SACA,QAAQ,MAAM,EAAE,WAAW,mBAAmB,oBAAoB;AAAA,EAAA,GACrE;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAEM,SAAA;AACT;AAEA,MAAM,4BAA4B,CAChC,UACmB;AACnB,MAAI,mBAAmB,OAAO;AACrB,WAAA,EAAE,GAAG,MAAM;AAAA,EAAA;AAGpB,QAAM,cAAc,QAAQ,MAAM,aAAa,IAAI;AACnD,QAAM,KAAK,MAAM;AAEjB,QAAM,mBAAmB,YAAY;AAC/B,QAAA,eAAe,OAAO,QAAW;AACnC,aAAO,MAAM,GAAG;AAAA,IAAA;AAEX,WAAA;AAAA,EACT;AAEO,SAAA;AAAA,IACL,eAAe;AAAA,IACf,oBAAoB;AAAA,IACpB,cAAc,OAAO;AAAA,EACvB;AACF;AAYO,SAAS,MAAM,MAAwD;AAC5E,QAAM,EAAE,UAAU,GAAG,KAAA,IAAS;AACxB,QAAA,OAAO,0BAA0B,IAAI;AAErC,QAAA,WAAW,WAAW,IAAI;AAChC,SAAO,WACH,OAAO,aAAa,aAClB,SAAS,QAAe,IACxB,WACF;AACN;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useCanGoBack(): boolean;
|
package/dist/esm/useCanGoBack.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCanGoBack.js","sources":["../../src/useCanGoBack.ts"],"sourcesContent":["import { useRouterState } from './useRouterState'\n\nexport function useCanGoBack() {\n return useRouterState({ select: (s) => s.location.state.__TSR_index !== 0 })\n}\n"],"names":[],"mappings":";AAEO,SAAS,eAAe;AACtB,SAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,gBAAgB,GAAG;AAC7E;"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
2
|
-
import { AnyRouter, RegisteredRouter, ResolveUseLoaderData, StrictOrFrom, UseLoaderDataResult } from '@tanstack/router-core';
|
|
3
|
-
export interface UseLoaderDataBaseOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TSelected, TStructuralSharing> {
|
|
4
|
-
select?: (match: ResolveUseLoaderData<TRouter, TFrom, TStrict>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
5
|
-
}
|
|
6
|
-
export type UseLoaderDataOptions<TRouter extends AnyRouter, TFrom extends string | undefined, TStrict extends boolean, TSelected, TStructuralSharing> = StrictOrFrom<TRouter, TFrom, TStrict> & UseLoaderDataBaseOptions<TRouter, TFrom, TStrict, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>;
|
|
7
|
-
export type UseLoaderDataRoute<out TId> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseLoaderDataBaseOptions<TRouter, TId, true, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>) => UseLoaderDataResult<TRouter, TId, true, TSelected>;
|
|
8
|
-
export declare function useLoaderData<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts: UseLoaderDataOptions<TRouter, TFrom, TStrict, TSelected, TStructuralSharing>): UseLoaderDataResult<TRouter, TFrom, TStrict, TSelected>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { useMatch } from "./useMatch.js";
|
|
2
|
-
function useLoaderData(opts) {
|
|
3
|
-
return useMatch({
|
|
4
|
-
from: opts.from,
|
|
5
|
-
strict: opts.strict,
|
|
6
|
-
structuralSharing: opts.structuralSharing,
|
|
7
|
-
select: (s) => {
|
|
8
|
-
return opts.select ? opts.select(s.loaderData) : s.loaderData;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
export {
|
|
13
|
-
useLoaderData
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=useLoaderData.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLoaderData.js","sources":["../../src/useLoaderData.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseLoaderData,\n StrictOrFrom,\n UseLoaderDataResult,\n} from '@tanstack/router-core'\n\nexport interface UseLoaderDataBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TSelected,\n TStructuralSharing,\n> {\n select?: (\n match: ResolveUseLoaderData<TRouter, TFrom, TStrict>,\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n}\n\nexport type UseLoaderDataOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TStrict extends boolean,\n TSelected,\n TStructuralSharing,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n UseLoaderDataBaseOptions<\n TRouter,\n TFrom,\n TStrict,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>\n\nexport type UseLoaderDataRoute<out TId> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseLoaderDataBaseOptions<\n TRouter,\n TId,\n true,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n) => UseLoaderDataResult<TRouter, TId, true, TSelected>\n\nexport function useLoaderData<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts: UseLoaderDataOptions<\n TRouter,\n TFrom,\n TStrict,\n TSelected,\n TStructuralSharing\n >,\n): UseLoaderDataResult<TRouter, TFrom, TStrict, TSelected> {\n return useMatch({\n from: opts.from!,\n strict: opts.strict,\n structuralSharing: opts.structuralSharing,\n select: (s: any) => {\n return opts.select ? opts.select(s.loaderData) : s.loaderData\n },\n } as any) as UseLoaderDataResult<TRouter, TFrom, TStrict, TSelected>\n}\n"],"names":[],"mappings":";AAwDO,SAAS,cAOd,MAOyD;AACzD,SAAO,SAAS;AAAA,IACd,MAAM,KAAK;AAAA,IACX,QAAQ,KAAK;AAAA,IACb,mBAAmB,KAAK;AAAA,IACxB,QAAQ,CAAC,MAAW;AAClB,aAAO,KAAK,SAAS,KAAK,OAAO,EAAE,UAAU,IAAI,EAAE;AAAA,IAAA;AAAA,EACrD,CACM;AACV;"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
2
|
-
import { AnyRouter, RegisteredRouter, ResolveUseLoaderDeps, StrictOrFrom, UseLoaderDepsResult } from '@tanstack/router-core';
|
|
3
|
-
export interface UseLoaderDepsBaseOptions<TRouter extends AnyRouter, TFrom, TSelected, TStructuralSharing> {
|
|
4
|
-
select?: (deps: ResolveUseLoaderDeps<TRouter, TFrom>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
5
|
-
}
|
|
6
|
-
export type UseLoaderDepsOptions<TRouter extends AnyRouter, TFrom extends string | undefined, TSelected, TStructuralSharing> = StrictOrFrom<TRouter, TFrom> & UseLoaderDepsBaseOptions<TRouter, TFrom, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>;
|
|
7
|
-
export type UseLoaderDepsRoute<out TId> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseLoaderDepsBaseOptions<TRouter, TId, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, false>) => UseLoaderDepsResult<TRouter, TId, TSelected>;
|
|
8
|
-
export declare function useLoaderDeps<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts: UseLoaderDepsOptions<TRouter, TFrom, TSelected, TStructuralSharing>): UseLoaderDepsResult<TRouter, TFrom, TSelected>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { useMatch } from "./useMatch.js";
|
|
2
|
-
function useLoaderDeps(opts) {
|
|
3
|
-
const { select, ...rest } = opts;
|
|
4
|
-
return useMatch({
|
|
5
|
-
...rest,
|
|
6
|
-
select: (s) => {
|
|
7
|
-
return select ? select(s.loaderDeps) : s.loaderDeps;
|
|
8
|
-
}
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
export {
|
|
12
|
-
useLoaderDeps
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=useLoaderDeps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLoaderDeps.js","sources":["../../src/useLoaderDeps.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseLoaderDeps,\n StrictOrFrom,\n UseLoaderDepsResult,\n} from '@tanstack/router-core'\n\nexport interface UseLoaderDepsBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TSelected,\n TStructuralSharing,\n> {\n select?: (\n deps: ResolveUseLoaderDeps<TRouter, TFrom>,\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n}\n\nexport type UseLoaderDepsOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TSelected,\n TStructuralSharing,\n> = StrictOrFrom<TRouter, TFrom> &\n UseLoaderDepsBaseOptions<TRouter, TFrom, TSelected, TStructuralSharing> &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>\n\nexport type UseLoaderDepsRoute<out TId> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseLoaderDepsBaseOptions<TRouter, TId, TSelected, TStructuralSharing> &\n StructuralSharingOption<TRouter, TSelected, false>,\n) => UseLoaderDepsResult<TRouter, TId, TSelected>\n\nexport function useLoaderDeps<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts: UseLoaderDepsOptions<TRouter, TFrom, TSelected, TStructuralSharing>,\n): UseLoaderDepsResult<TRouter, TFrom, TSelected> {\n const { select, ...rest } = opts\n return useMatch({\n ...rest,\n select: (s) => {\n return select ? select(s.loaderDeps) : s.loaderDeps\n },\n }) as UseLoaderDepsResult<TRouter, TFrom, TSelected>\n}\n"],"names":[],"mappings":";AA0CO,SAAS,cAMd,MACgD;AAChD,QAAM,EAAE,QAAQ,GAAG,KAAA,IAAS;AAC5B,SAAO,SAAS;AAAA,IACd,GAAG;AAAA,IACH,QAAQ,CAAC,MAAM;AACb,aAAO,SAAS,OAAO,EAAE,UAAU,IAAI,EAAE;AAAA,IAAA;AAAA,EAC3C,CACD;AACH;"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
2
|
-
import { AnyRouter, RegisteredRouter, RouterState } from '@tanstack/router-core';
|
|
3
|
-
export interface UseLocationBaseOptions<TRouter extends AnyRouter, TSelected, TStructuralSharing extends boolean = boolean> {
|
|
4
|
-
select?: (state: RouterState<TRouter['routeTree']>['location']) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
5
|
-
}
|
|
6
|
-
export type UseLocationResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? RouterState<TRouter['routeTree']>['location'] : TSelected;
|
|
7
|
-
export declare function useLocation<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseLocationBaseOptions<TRouter, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>): UseLocationResult<TRouter, TSelected>;
|
package/dist/esm/useLocation.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { useRouterState } from "./useRouterState.js";
|
|
2
|
-
function useLocation(opts) {
|
|
3
|
-
return useRouterState({
|
|
4
|
-
select: (state) => (opts == null ? void 0 : opts.select) ? opts.select(state.location) : state.location
|
|
5
|
-
});
|
|
6
|
-
}
|
|
7
|
-
export {
|
|
8
|
-
useLocation
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=useLocation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLocation.js","sources":["../../src/useLocation.tsx"],"sourcesContent":["import { useRouterState } from './useRouterState'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\nimport type {\n AnyRouter,\n RegisteredRouter,\n RouterState,\n} from '@tanstack/router-core'\n\nexport interface UseLocationBaseOptions<\n TRouter extends AnyRouter,\n TSelected,\n TStructuralSharing extends boolean = boolean,\n> {\n select?: (\n state: RouterState<TRouter['routeTree']>['location'],\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n}\n\nexport type UseLocationResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected\n ? RouterState<TRouter['routeTree']>['location']\n : TSelected\n\nexport function useLocation<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseLocationBaseOptions<TRouter, TSelected, TStructuralSharing> &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n): UseLocationResult<TRouter, TSelected> {\n return useRouterState({\n select: (state: any) =>\n opts?.select ? opts.select(state.location) : state.location,\n } as any) as UseLocationResult<TRouter, TSelected>\n}\n"],"names":[],"mappings":";AA4BO,SAAS,YAKd,MAEuC;AACvC,SAAO,eAAe;AAAA,IACpB,QAAQ,CAAC,WACP,6BAAM,UAAS,KAAK,OAAO,MAAM,QAAQ,IAAI,MAAM;AAAA,EAAA,CAC/C;AACV;"}
|
package/dist/esm/useMatch.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
2
|
-
import { AnyRouter, MakeRouteMatch, MakeRouteMatchUnion, RegisteredRouter, StrictOrFrom, ThrowConstraint, ThrowOrOptional } from '@tanstack/router-core';
|
|
3
|
-
export interface UseMatchBaseOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected, TStructuralSharing extends boolean> {
|
|
4
|
-
select?: (match: MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
5
|
-
shouldThrow?: TThrow;
|
|
6
|
-
}
|
|
7
|
-
export type UseMatchRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseMatchBaseOptions<TRouter, TFrom, true, true, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>) => UseMatchResult<TRouter, TFrom, true, TSelected>;
|
|
8
|
-
export type UseMatchOptions<TRouter extends AnyRouter, TFrom extends string | undefined, TStrict extends boolean, TThrow extends boolean, TSelected, TStructuralSharing extends boolean> = StrictOrFrom<TRouter, TFrom, TStrict> & UseMatchBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>;
|
|
9
|
-
export type UseMatchResult<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TSelected> = unknown extends TSelected ? TStrict extends true ? MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict> : MakeRouteMatchUnion<TRouter> : TSelected;
|
|
10
|
-
export declare function useMatch<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TThrow extends boolean = true, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts: UseMatchOptions<TRouter, TFrom, TStrict, ThrowConstraint<TStrict, TThrow>, TSelected, TStructuralSharing>): ThrowOrOptional<UseMatchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>;
|
package/dist/esm/useMatch.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import invariant from "tiny-invariant";
|
|
3
|
-
import { useRouterState } from "./useRouterState.js";
|
|
4
|
-
import { dummyMatchContext, matchContext } from "./matchContext.js";
|
|
5
|
-
function useMatch(opts) {
|
|
6
|
-
const nearestMatchId = React.useContext(
|
|
7
|
-
opts.from ? dummyMatchContext : matchContext
|
|
8
|
-
);
|
|
9
|
-
const matchSelection = useRouterState({
|
|
10
|
-
select: (state) => {
|
|
11
|
-
const match = state.matches.find(
|
|
12
|
-
(d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId
|
|
13
|
-
);
|
|
14
|
-
invariant(
|
|
15
|
-
!((opts.shouldThrow ?? true) && !match),
|
|
16
|
-
`Could not find ${opts.from ? `an active match from "${opts.from}"` : "a nearest match!"}`
|
|
17
|
-
);
|
|
18
|
-
if (match === void 0) {
|
|
19
|
-
return void 0;
|
|
20
|
-
}
|
|
21
|
-
return opts.select ? opts.select(match) : match;
|
|
22
|
-
},
|
|
23
|
-
structuralSharing: opts.structuralSharing
|
|
24
|
-
});
|
|
25
|
-
return matchSelection;
|
|
26
|
-
}
|
|
27
|
-
export {
|
|
28
|
-
useMatch
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=useMatch.js.map
|
package/dist/esm/useMatch.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMatch.js","sources":["../../src/useMatch.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport { useRouterState } from './useRouterState'\nimport { dummyMatchContext, matchContext } from './matchContext'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\nimport type {\n AnyRouter,\n MakeRouteMatch,\n MakeRouteMatchUnion,\n RegisteredRouter,\n StrictOrFrom,\n ThrowConstraint,\n ThrowOrOptional,\n} from '@tanstack/router-core'\n\nexport interface UseMatchBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TThrow extends boolean,\n TSelected,\n TStructuralSharing extends boolean,\n> {\n select?: (\n match: MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict>,\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n shouldThrow?: TThrow\n}\n\nexport type UseMatchRoute<out TFrom> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseMatchBaseOptions<\n TRouter,\n TFrom,\n true,\n true,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n) => UseMatchResult<TRouter, TFrom, true, TSelected>\n\nexport type UseMatchOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TStrict extends boolean,\n TThrow extends boolean,\n TSelected,\n TStructuralSharing extends boolean,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n UseMatchBaseOptions<\n TRouter,\n TFrom,\n TStrict,\n TThrow,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>\n\nexport type UseMatchResult<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TSelected,\n> = unknown extends TSelected\n ? TStrict extends true\n ? MakeRouteMatch<TRouter['routeTree'], TFrom, TStrict>\n : MakeRouteMatchUnion<TRouter>\n : TSelected\n\nexport function useMatch<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TThrow extends boolean = true,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts: UseMatchOptions<\n TRouter,\n TFrom,\n TStrict,\n ThrowConstraint<TStrict, TThrow>,\n TSelected,\n TStructuralSharing\n >,\n): ThrowOrOptional<UseMatchResult<TRouter, TFrom, TStrict, TSelected>, TThrow> {\n const nearestMatchId = React.useContext(\n opts.from ? dummyMatchContext : matchContext,\n )\n\n const matchSelection = useRouterState({\n select: (state: any) => {\n const match = state.matches.find((d: any) =>\n opts.from ? opts.from === d.routeId : d.id === nearestMatchId,\n )\n invariant(\n !((opts.shouldThrow ?? true) && !match),\n `Could not find ${opts.from ? `an active match from \"${opts.from}\"` : 'a nearest match!'}`,\n )\n\n if (match === undefined) {\n return undefined\n }\n\n return opts.select ? opts.select(match) : match\n },\n structuralSharing: opts.structuralSharing,\n } as any)\n\n return matchSelection as any\n}\n"],"names":[],"mappings":";;;;AA6EO,SAAS,SAQd,MAQ6E;AAC7E,QAAM,iBAAiB,MAAM;AAAA,IAC3B,KAAK,OAAO,oBAAoB;AAAA,EAClC;AAEA,QAAM,iBAAiB,eAAe;AAAA,IACpC,QAAQ,CAAC,UAAe;AAChB,YAAA,QAAQ,MAAM,QAAQ;AAAA,QAAK,CAAC,MAChC,KAAK,OAAO,KAAK,SAAS,EAAE,UAAU,EAAE,OAAO;AAAA,MACjD;AACA;AAAA,QACE,GAAG,KAAK,eAAe,SAAS,CAAC;AAAA,QACjC,kBAAkB,KAAK,OAAO,yBAAyB,KAAK,IAAI,MAAM,kBAAkB;AAAA,MAC1F;AAEA,UAAI,UAAU,QAAW;AAChB,eAAA;AAAA,MAAA;AAGT,aAAO,KAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AAAA,IAC5C;AAAA,IACA,mBAAmB,KAAK;AAAA,EAAA,CAClB;AAED,SAAA;AACT;"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { AnyRouter, FromPathOption, NavigateOptions, RegisteredRouter, UseNavigateResult } from '@tanstack/router-core';
|
|
2
|
-
export declare function useNavigate<TRouter extends AnyRouter = RegisteredRouter, TDefaultFrom extends string = string>(_defaultOpts?: {
|
|
3
|
-
from?: FromPathOption<TRouter, TDefaultFrom>;
|
|
4
|
-
}): UseNavigateResult<TDefaultFrom>;
|
|
5
|
-
export declare function Navigate<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null;
|
package/dist/esm/useNavigate.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useRouter } from "./useRouter.js";
|
|
3
|
-
import { useMatch } from "./useMatch.js";
|
|
4
|
-
function useNavigate(_defaultOpts) {
|
|
5
|
-
const { navigate, state } = useRouter();
|
|
6
|
-
const matchIndex = useMatch({
|
|
7
|
-
strict: false,
|
|
8
|
-
select: (match) => match.index
|
|
9
|
-
});
|
|
10
|
-
return React.useCallback(
|
|
11
|
-
(options) => {
|
|
12
|
-
const from = options.from ?? (_defaultOpts == null ? void 0 : _defaultOpts.from) ?? state.matches[matchIndex].fullPath;
|
|
13
|
-
return navigate({
|
|
14
|
-
...options,
|
|
15
|
-
from
|
|
16
|
-
});
|
|
17
|
-
},
|
|
18
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
19
|
-
[_defaultOpts == null ? void 0 : _defaultOpts.from, navigate]
|
|
20
|
-
);
|
|
21
|
-
}
|
|
22
|
-
function Navigate(props) {
|
|
23
|
-
const router = useRouter();
|
|
24
|
-
const navigate = useNavigate();
|
|
25
|
-
const previousPropsRef = React.useRef(null);
|
|
26
|
-
React.useEffect(() => {
|
|
27
|
-
if (previousPropsRef.current !== props) {
|
|
28
|
-
navigate(props);
|
|
29
|
-
previousPropsRef.current = props;
|
|
30
|
-
}
|
|
31
|
-
}, [router, props, navigate]);
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
export {
|
|
35
|
-
Navigate,
|
|
36
|
-
useNavigate
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=useNavigate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigate.js","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport { useMatch } from './useMatch'\nimport type {\n AnyRouter,\n FromPathOption,\n NavigateOptions,\n RegisteredRouter,\n UseNavigateResult,\n} from '@tanstack/router-core'\n\nexport function useNavigate<\n TRouter extends AnyRouter = RegisteredRouter,\n TDefaultFrom extends string = string,\n>(_defaultOpts?: {\n from?: FromPathOption<TRouter, TDefaultFrom>\n}): UseNavigateResult<TDefaultFrom> {\n const { navigate, state } = useRouter()\n\n // Just get the index of the current match to avoid rerenders\n // as much as possible\n const matchIndex = useMatch({\n strict: false,\n select: (match) => match.index,\n })\n\n return React.useCallback(\n (options: NavigateOptions) => {\n const from =\n options.from ??\n _defaultOpts?.from ??\n state.matches[matchIndex]!.fullPath\n\n return navigate({\n ...options,\n from,\n })\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [_defaultOpts?.from, navigate],\n ) as UseNavigateResult<TDefaultFrom>\n}\n\nexport function Navigate<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const router = useRouter()\n const navigate = useNavigate()\n\n const previousPropsRef = React.useRef<NavigateOptions<\n TRouter,\n TFrom,\n TTo,\n TMaskFrom,\n TMaskTo\n > | null>(null)\n React.useEffect(() => {\n if (previousPropsRef.current !== props) {\n navigate(props)\n previousPropsRef.current = props\n }\n }, [router, props, navigate])\n return null\n}\n"],"names":[],"mappings":";;;AAWO,SAAS,YAGd,cAEkC;AAClC,QAAM,EAAE,UAAU,MAAM,IAAI,UAAU;AAItC,QAAM,aAAa,SAAS;AAAA,IAC1B,QAAQ;AAAA,IACR,QAAQ,CAAC,UAAU,MAAM;AAAA,EAAA,CAC1B;AAED,SAAO,MAAM;AAAA,IACX,CAAC,YAA6B;AACtB,YAAA,OACJ,QAAQ,SACR,6CAAc,SACd,MAAM,QAAQ,UAAU,EAAG;AAE7B,aAAO,SAAS;AAAA,QACd,GAAG;AAAA,QACH;AAAA,MAAA,CACD;AAAA,IACH;AAAA;AAAA,IAEA,CAAC,6CAAc,MAAM,QAAQ;AAAA,EAC/B;AACF;AAEO,SAAS,SAMd,OAAuE;AACvE,QAAM,SAAS,UAAU;AACzB,QAAM,WAAW,YAAY;AAEvB,QAAA,mBAAmB,MAAM,OAMrB,IAAI;AACd,QAAM,UAAU,MAAM;AAChB,QAAA,iBAAiB,YAAY,OAAO;AACtC,eAAS,KAAK;AACd,uBAAiB,UAAU;AAAA,IAAA;AAAA,EAE5B,GAAA,CAAC,QAAQ,OAAO,QAAQ,CAAC;AACrB,SAAA;AACT;"}
|
package/dist/esm/useParams.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
2
|
-
import { AnyRouter, RegisteredRouter, ResolveUseParams, StrictOrFrom, ThrowConstraint, ThrowOrOptional, UseParamsResult } from '@tanstack/router-core';
|
|
3
|
-
export interface UseParamsBaseOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected, TStructuralSharing> {
|
|
4
|
-
select?: (params: ResolveUseParams<TRouter, TFrom, TStrict>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
5
|
-
shouldThrow?: TThrow;
|
|
6
|
-
}
|
|
7
|
-
export type UseParamsOptions<TRouter extends AnyRouter, TFrom extends string | undefined, TStrict extends boolean, TThrow extends boolean, TSelected, TStructuralSharing> = StrictOrFrom<TRouter, TFrom, TStrict> & UseParamsBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>;
|
|
8
|
-
export type UseParamsRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseParamsBaseOptions<TRouter, TFrom, true, true, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>) => UseParamsResult<TRouter, TFrom, true, TSelected>;
|
|
9
|
-
export declare function useParams<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TThrow extends boolean = true, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts: UseParamsOptions<TRouter, TFrom, TStrict, ThrowConstraint<TStrict, TThrow>, TSelected, TStructuralSharing>): ThrowOrOptional<UseParamsResult<TRouter, TFrom, TStrict, TSelected>, TThrow>;
|
package/dist/esm/useParams.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { useMatch } from "./useMatch.js";
|
|
2
|
-
function useParams(opts) {
|
|
3
|
-
return useMatch({
|
|
4
|
-
from: opts.from,
|
|
5
|
-
strict: opts.strict,
|
|
6
|
-
shouldThrow: opts.shouldThrow,
|
|
7
|
-
structuralSharing: opts.structuralSharing,
|
|
8
|
-
select: (match) => {
|
|
9
|
-
return opts.select ? opts.select(match.params) : match.params;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
useParams
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=useParams.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useParams.js","sources":["../../src/useParams.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseParams,\n StrictOrFrom,\n ThrowConstraint,\n ThrowOrOptional,\n UseParamsResult,\n} from '@tanstack/router-core'\n\nexport interface UseParamsBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TThrow extends boolean,\n TSelected,\n TStructuralSharing,\n> {\n select?: (\n params: ResolveUseParams<TRouter, TFrom, TStrict>,\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n shouldThrow?: TThrow\n}\n\nexport type UseParamsOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TStrict extends boolean,\n TThrow extends boolean,\n TSelected,\n TStructuralSharing,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n UseParamsBaseOptions<\n TRouter,\n TFrom,\n TStrict,\n TThrow,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>\n\nexport type UseParamsRoute<out TFrom> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseParamsBaseOptions<\n TRouter,\n TFrom,\n /* TStrict */ true,\n /* TThrow */ true,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n) => UseParamsResult<TRouter, TFrom, true, TSelected>\n\nexport function useParams<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TThrow extends boolean = true,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts: UseParamsOptions<\n TRouter,\n TFrom,\n TStrict,\n ThrowConstraint<TStrict, TThrow>,\n TSelected,\n TStructuralSharing\n >,\n): ThrowOrOptional<\n UseParamsResult<TRouter, TFrom, TStrict, TSelected>,\n TThrow\n> {\n return useMatch({\n from: opts.from!,\n strict: opts.strict,\n shouldThrow: opts.shouldThrow,\n structuralSharing: opts.structuralSharing,\n select: (match: any) => {\n return opts.select ? opts.select(match.params) : match.params\n },\n }) as any\n}\n"],"names":[],"mappings":";AA+DO,SAAS,UAQd,MAWA;AACA,SAAO,SAAS;AAAA,IACd,MAAM,KAAK;AAAA,IACX,QAAQ,KAAK;AAAA,IACb,aAAa,KAAK;AAAA,IAClB,mBAAmB,KAAK;AAAA,IACxB,QAAQ,CAAC,UAAe;AACtB,aAAO,KAAK,SAAS,KAAK,OAAO,MAAM,MAAM,IAAI,MAAM;AAAA,IAAA;AAAA,EACzD,CACD;AACH;"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { AnyRouter, RegisteredRouter, UseRouteContextBaseOptions, UseRouteContextOptions, UseRouteContextResult } from '@tanstack/router-core';
|
|
2
|
-
export type UseRouteContextRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseRouteContextBaseOptions<TRouter, TFrom, true, TSelected>) => UseRouteContextResult<TRouter, TFrom, true, TSelected>;
|
|
3
|
-
export declare function useRouteContext<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TSelected = unknown>(opts: UseRouteContextOptions<TRouter, TFrom, TStrict, TSelected>): UseRouteContextResult<TRouter, TFrom, TStrict, TSelected>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { useMatch } from "./useMatch.js";
|
|
2
|
-
function useRouteContext(opts) {
|
|
3
|
-
return useMatch({
|
|
4
|
-
...opts,
|
|
5
|
-
select: (match) => opts.select ? opts.select(match.context) : match.context
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
useRouteContext
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=useRouteContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRouteContext.js","sources":["../../src/useRouteContext.ts"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type {\n AnyRouter,\n RegisteredRouter,\n UseRouteContextBaseOptions,\n UseRouteContextOptions,\n UseRouteContextResult,\n} from '@tanstack/router-core'\n\nexport type UseRouteContextRoute<out TFrom> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseRouteContextBaseOptions<TRouter, TFrom, true, TSelected>,\n) => UseRouteContextResult<TRouter, TFrom, true, TSelected>\n\nexport function useRouteContext<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TSelected = unknown,\n>(\n opts: UseRouteContextOptions<TRouter, TFrom, TStrict, TSelected>,\n): UseRouteContextResult<TRouter, TFrom, TStrict, TSelected> {\n return useMatch({\n ...(opts as any),\n select: (match) =>\n opts.select ? opts.select(match.context) : match.context,\n }) as UseRouteContextResult<TRouter, TFrom, TStrict, TSelected>\n}\n"],"names":[],"mappings":";AAgBO,SAAS,gBAMd,MAC2D;AAC3D,SAAO,SAAS;AAAA,IACd,GAAI;AAAA,IACJ,QAAQ,CAAC,UACP,KAAK,SAAS,KAAK,OAAO,MAAM,OAAO,IAAI,MAAM;AAAA,EAAA,CACpD;AACH;"}
|
package/dist/esm/useRouter.d.ts
DELETED
package/dist/esm/useRouter.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import warning from "tiny-warning";
|
|
3
|
-
import { getRouterContext } from "./routerContext.js";
|
|
4
|
-
function useRouter(opts) {
|
|
5
|
-
const value = React.useContext(getRouterContext());
|
|
6
|
-
warning(
|
|
7
|
-
!(((opts == null ? void 0 : opts.warn) ?? true) && !value),
|
|
8
|
-
"useRouter must be used inside a <RouterProvider> component!"
|
|
9
|
-
);
|
|
10
|
-
return value;
|
|
11
|
-
}
|
|
12
|
-
export {
|
|
13
|
-
useRouter
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=useRouter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRouter.js","sources":["../../src/useRouter.tsx"],"sourcesContent":["import * as React from 'react'\nimport warning from 'tiny-warning'\nimport { getRouterContext } from './routerContext'\nimport type { AnyRouter, RegisteredRouter } from '@tanstack/router-core'\n\nexport function useRouter<TRouter extends AnyRouter = RegisteredRouter>(opts?: {\n warn?: boolean\n}): TRouter {\n const value = React.useContext(getRouterContext())\n warning(\n !((opts?.warn ?? true) && !value),\n 'useRouter must be used inside a <RouterProvider> component!',\n )\n return value as any\n}\n"],"names":[],"mappings":";;;AAKO,SAAS,UAAwD,MAE5D;AACV,QAAM,QAAQ,MAAM,WAAW,iBAAA,CAAkB;AACjD;AAAA,IACE,IAAG,6BAAM,SAAQ,SAAS,CAAC;AAAA,IAC3B;AAAA,EACF;AACO,SAAA;AACT;"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { AnyRouter, RegisteredRouter, RouterState } from '@tanstack/router-core';
|
|
2
|
-
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
3
|
-
export type UseRouterStateOptions<TRouter extends AnyRouter, TSelected, TStructuralSharing> = {
|
|
4
|
-
router?: TRouter;
|
|
5
|
-
select?: (state: RouterState<TRouter['routeTree']>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
6
|
-
} & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>;
|
|
7
|
-
export type UseRouterStateResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected;
|
|
8
|
-
export declare function useRouterState<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseRouterStateOptions<TRouter, TSelected, TStructuralSharing>): UseRouterStateResult<TRouter, TSelected>;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { useStore } from "@tanstack/react-store";
|
|
2
|
-
import { useRef } from "react";
|
|
3
|
-
import { replaceEqualDeep } from "@tanstack/router-core";
|
|
4
|
-
import { useRouter } from "./useRouter.js";
|
|
5
|
-
function useRouterState(opts) {
|
|
6
|
-
const contextRouter = useRouter({
|
|
7
|
-
warn: (opts == null ? void 0 : opts.router) === void 0
|
|
8
|
-
});
|
|
9
|
-
const router = (opts == null ? void 0 : opts.router) || contextRouter;
|
|
10
|
-
const previousResult = useRef(void 0);
|
|
11
|
-
return useStore(router.__store, (state) => {
|
|
12
|
-
if (opts == null ? void 0 : opts.select) {
|
|
13
|
-
if (opts.structuralSharing ?? router.options.defaultStructuralSharing) {
|
|
14
|
-
const newSlice = replaceEqualDeep(
|
|
15
|
-
previousResult.current,
|
|
16
|
-
opts.select(state)
|
|
17
|
-
);
|
|
18
|
-
previousResult.current = newSlice;
|
|
19
|
-
return newSlice;
|
|
20
|
-
}
|
|
21
|
-
return opts.select(state);
|
|
22
|
-
}
|
|
23
|
-
return state;
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
export {
|
|
27
|
-
useRouterState
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=useRouterState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRouterState.js","sources":["../../src/useRouterState.tsx"],"sourcesContent":["import { useStore } from '@tanstack/react-store'\nimport { useRef } from 'react'\nimport { replaceEqualDeep } from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport type {\n AnyRouter,\n RegisteredRouter,\n RouterState,\n} from '@tanstack/router-core'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\n\nexport type UseRouterStateOptions<\n TRouter extends AnyRouter,\n TSelected,\n TStructuralSharing,\n> = {\n router?: TRouter\n select?: (\n state: RouterState<TRouter['routeTree']>,\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n} & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>\n\nexport type UseRouterStateResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected\n\nexport function useRouterState<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseRouterStateOptions<TRouter, TSelected, TStructuralSharing>,\n): UseRouterStateResult<TRouter, TSelected> {\n const contextRouter = useRouter<TRouter>({\n warn: opts?.router === undefined,\n })\n const router = opts?.router || contextRouter\n const previousResult =\n useRef<ValidateSelected<TRouter, TSelected, TStructuralSharing>>(undefined)\n\n return useStore(router.__store, (state) => {\n if (opts?.select) {\n if (opts.structuralSharing ?? router.options.defaultStructuralSharing) {\n const newSlice = replaceEqualDeep(\n previousResult.current,\n opts.select(state),\n )\n previousResult.current = newSlice\n return newSlice\n }\n return opts.select(state)\n }\n return state\n }) as UseRouterStateResult<TRouter, TSelected>\n}\n"],"names":[],"mappings":";;;;AA8BO,SAAS,eAKd,MAC0C;AAC1C,QAAM,gBAAgB,UAAmB;AAAA,IACvC,OAAM,6BAAM,YAAW;AAAA,EAAA,CACxB;AACK,QAAA,UAAS,6BAAM,WAAU;AACzB,QAAA,iBACJ,OAAiE,MAAS;AAE5E,SAAO,SAAS,OAAO,SAAS,CAAC,UAAU;AACzC,QAAI,6BAAM,QAAQ;AAChB,UAAI,KAAK,qBAAqB,OAAO,QAAQ,0BAA0B;AACrE,cAAM,WAAW;AAAA,UACf,eAAe;AAAA,UACf,KAAK,OAAO,KAAK;AAAA,QACnB;AACA,uBAAe,UAAU;AAClB,eAAA;AAAA,MAAA;AAEF,aAAA,KAAK,OAAO,KAAK;AAAA,IAAA;AAEnB,WAAA;AAAA,EAAA,CACR;AACH;"}
|
package/dist/esm/useSearch.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
2
|
-
import { AnyRouter, RegisteredRouter, ResolveUseSearch, StrictOrFrom, ThrowConstraint, ThrowOrOptional, UseSearchResult } from '@tanstack/router-core';
|
|
3
|
-
export interface UseSearchBaseOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected, TStructuralSharing> {
|
|
4
|
-
select?: (state: ResolveUseSearch<TRouter, TFrom, TStrict>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
5
|
-
shouldThrow?: TThrow;
|
|
6
|
-
}
|
|
7
|
-
export type UseSearchOptions<TRouter extends AnyRouter, TFrom, TStrict extends boolean, TThrow extends boolean, TSelected, TStructuralSharing> = StrictOrFrom<TRouter, TFrom, TStrict> & UseSearchBaseOptions<TRouter, TFrom, TStrict, TThrow, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>;
|
|
8
|
-
export type UseSearchRoute<out TFrom> = <TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseSearchBaseOptions<TRouter, TFrom, true, true, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>) => UseSearchResult<TRouter, TFrom, true, TSelected>;
|
|
9
|
-
export declare function useSearch<TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string | undefined = undefined, TStrict extends boolean = true, TThrow extends boolean = true, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts: UseSearchOptions<TRouter, TFrom, TStrict, ThrowConstraint<TStrict, TThrow>, TSelected, TStructuralSharing>): ThrowOrOptional<UseSearchResult<TRouter, TFrom, TStrict, TSelected>, TThrow>;
|
package/dist/esm/useSearch.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { useMatch } from "./useMatch.js";
|
|
2
|
-
function useSearch(opts) {
|
|
3
|
-
return useMatch({
|
|
4
|
-
from: opts.from,
|
|
5
|
-
strict: opts.strict,
|
|
6
|
-
shouldThrow: opts.shouldThrow,
|
|
7
|
-
structuralSharing: opts.structuralSharing,
|
|
8
|
-
select: (match) => {
|
|
9
|
-
return opts.select ? opts.select(match.search) : match.search;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
useSearch
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=useSearch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSearch.js","sources":["../../src/useSearch.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseSearch,\n StrictOrFrom,\n ThrowConstraint,\n ThrowOrOptional,\n UseSearchResult,\n} from '@tanstack/router-core'\n\nexport interface UseSearchBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TThrow extends boolean,\n TSelected,\n TStructuralSharing,\n> {\n select?: (\n state: ResolveUseSearch<TRouter, TFrom, TStrict>,\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n shouldThrow?: TThrow\n}\n\nexport type UseSearchOptions<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TThrow extends boolean,\n TSelected,\n TStructuralSharing,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n UseSearchBaseOptions<\n TRouter,\n TFrom,\n TStrict,\n TThrow,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>\n\nexport type UseSearchRoute<out TFrom> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseSearchBaseOptions<\n TRouter,\n TFrom,\n /* TStrict */ true,\n /* TThrow */ true,\n TSelected,\n TStructuralSharing\n > &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n) => UseSearchResult<TRouter, TFrom, true, TSelected>\n\nexport function useSearch<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TThrow extends boolean = true,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts: UseSearchOptions<\n TRouter,\n TFrom,\n TStrict,\n ThrowConstraint<TStrict, TThrow>,\n TSelected,\n TStructuralSharing\n >,\n): ThrowOrOptional<\n UseSearchResult<TRouter, TFrom, TStrict, TSelected>,\n TThrow\n> {\n return useMatch({\n from: opts.from!,\n strict: opts.strict,\n shouldThrow: opts.shouldThrow,\n structuralSharing: opts.structuralSharing,\n select: (match: any) => {\n return opts.select ? opts.select(match.search) : match.search\n },\n }) as any\n}\n"],"names":[],"mappings":";AA+DO,SAAS,UAQd,MAWA;AACA,SAAO,SAAS;AAAA,IACd,MAAM,KAAK;AAAA,IACX,QAAQ,KAAK;AAAA,IACb,aAAa,KAAK;AAAA,IAClB,mBAAmB,KAAK;AAAA,IACxB,QAAQ,CAAC,UAAe;AACtB,aAAO,KAAK,SAAS,KAAK,OAAO,MAAM,MAAM,IAAI,MAAM;AAAA,IAAA;AAAA,EACzD,CACD;AACH;"}
|
package/dist/esm/utils.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
export declare function useStableCallback<T extends (...args: Array<any>) => any>(fn: T): T;
|
|
3
|
-
export declare const useLayoutEffect: typeof React.useEffect;
|
|
4
|
-
/**
|
|
5
|
-
* Taken from https://www.developerway.com/posts/implementing-advanced-use-previous-hook#part3
|
|
6
|
-
*/
|
|
7
|
-
export declare function usePrevious<T>(value: T): T | null;
|
|
8
|
-
/**
|
|
9
|
-
* React hook to wrap `IntersectionObserver`.
|
|
10
|
-
*
|
|
11
|
-
* This hook will create an `IntersectionObserver` and observe the ref passed to it.
|
|
12
|
-
*
|
|
13
|
-
* When the intersection changes, the callback will be called with the `IntersectionObserverEntry`.
|
|
14
|
-
*
|
|
15
|
-
* @param ref - The ref to observe
|
|
16
|
-
* @param intersectionObserverOptions - The options to pass to the IntersectionObserver
|
|
17
|
-
* @param options - The options to pass to the hook
|
|
18
|
-
* @param callback - The callback to call when the intersection changes
|
|
19
|
-
* @returns The IntersectionObserver instance
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* const MyComponent = () => {
|
|
23
|
-
* const ref = React.useRef<HTMLDivElement>(null)
|
|
24
|
-
* useIntersectionObserver(
|
|
25
|
-
* ref,
|
|
26
|
-
* (entry) => { doSomething(entry) },
|
|
27
|
-
* { rootMargin: '10px' },
|
|
28
|
-
* { disabled: false }
|
|
29
|
-
* )
|
|
30
|
-
* return <div ref={ref} />
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export declare function useIntersectionObserver<T extends Element>(ref: React.RefObject<T | null>, callback: (entry: IntersectionObserverEntry | undefined) => void, intersectionObserverOptions?: IntersectionObserverInit, options?: {
|
|
34
|
-
disabled?: boolean;
|
|
35
|
-
}): IntersectionObserver | null;
|
|
36
|
-
/**
|
|
37
|
-
* React hook to take a `React.ForwardedRef` and returns a `ref` that can be used on a DOM element.
|
|
38
|
-
*
|
|
39
|
-
* @param ref - The forwarded ref
|
|
40
|
-
* @returns The inner ref returned by `useRef`
|
|
41
|
-
* @example
|
|
42
|
-
* ```tsx
|
|
43
|
-
* const MyComponent = React.forwardRef((props, ref) => {
|
|
44
|
-
* const innerRef = useForwardedRef(ref)
|
|
45
|
-
* return <div ref={innerRef} />
|
|
46
|
-
* })
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export declare function useForwardedRef<T>(ref?: React.ForwardedRef<T>): React.RefObject<T | null>;
|