@tanstack/react-router 1.20.1 → 1.20.3-alpha.1
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/README.md +31 -0
- package/dist/cjs/Asset.cjs +41 -0
- package/dist/cjs/Asset.cjs.map +1 -0
- package/dist/cjs/Asset.d.cts +2 -0
- package/dist/cjs/CatchBoundary.cjs +16 -12
- package/dist/cjs/CatchBoundary.cjs.map +1 -1
- package/dist/cjs/CatchBoundary.d.cts +8 -32
- package/dist/cjs/ClientOnly.cjs +20 -0
- package/dist/cjs/ClientOnly.cjs.map +1 -0
- package/dist/cjs/ClientOnly.d.cts +29 -0
- package/dist/cjs/HeadContent.cjs +155 -0
- package/dist/cjs/HeadContent.cjs.map +1 -0
- package/dist/cjs/HeadContent.d.cts +7 -0
- package/dist/cjs/Match.cjs +252 -0
- package/dist/cjs/Match.cjs.map +1 -0
- package/dist/cjs/Match.d.cts +8 -0
- package/dist/cjs/Matches.cjs +39 -287
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Matches.d.cts +23 -83
- package/dist/cjs/RouterProvider.cjs +17 -140
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/RouterProvider.d.cts +8 -27
- package/dist/cjs/SafeFragment.cjs +8 -0
- package/dist/cjs/SafeFragment.cjs.map +1 -0
- package/dist/cjs/SafeFragment.d.cts +1 -0
- package/dist/cjs/ScriptOnce.cjs +28 -0
- package/dist/cjs/ScriptOnce.cjs.map +1 -0
- package/dist/cjs/ScriptOnce.d.cts +5 -0
- package/dist/cjs/Scripts.cjs +51 -0
- package/dist/cjs/Scripts.cjs.map +1 -0
- package/dist/cjs/Scripts.d.cts +1 -0
- package/dist/cjs/ScrollRestoration.cjs +39 -0
- package/dist/cjs/ScrollRestoration.cjs.map +1 -0
- package/dist/cjs/ScrollRestoration.d.cts +14 -0
- package/dist/cjs/Transitioner.cjs +115 -0
- package/dist/cjs/Transitioner.cjs.map +1 -0
- package/dist/cjs/Transitioner.d.cts +1 -0
- package/dist/cjs/awaited.cjs +12 -65
- package/dist/cjs/awaited.cjs.map +1 -1
- package/dist/cjs/awaited.d.cts +4 -4
- package/dist/cjs/fileRoute.cjs +41 -15
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/fileRoute.d.cts +33 -108
- package/dist/cjs/history.d.cts +1 -0
- package/dist/cjs/index.cjs +216 -73
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +52 -29
- package/dist/cjs/lazyRouteComponent.cjs +40 -29
- package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
- package/dist/cjs/lazyRouteComponent.d.cts +1 -1
- package/dist/cjs/link.cjs +212 -106
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +41 -86
- package/dist/cjs/matchContext.cjs +27 -0
- package/dist/cjs/matchContext.cjs.map +1 -0
- package/dist/cjs/matchContext.d.cts +3 -0
- package/dist/cjs/not-found.cjs +9 -15
- package/dist/cjs/not-found.cjs.map +1 -1
- package/dist/cjs/not-found.d.cts +5 -22
- package/dist/cjs/renderRouteNotFound.cjs +22 -0
- package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
- package/dist/cjs/renderRouteNotFound.d.cts +2 -0
- package/dist/cjs/route.cjs +110 -79
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +64 -361
- package/dist/cjs/router.cjs +12 -1237
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +69 -237
- package/dist/cjs/routerContext.cjs +1 -1
- package/dist/cjs/routerContext.cjs.map +1 -1
- package/dist/cjs/routerContext.d.cts +7 -2
- package/dist/cjs/scroll-restoration.cjs +16 -177
- package/dist/cjs/scroll-restoration.cjs.map +1 -1
- package/dist/cjs/scroll-restoration.d.cts +1 -18
- package/dist/cjs/serializer.d.cts +6 -0
- package/dist/cjs/structuralSharing.d.cts +8 -0
- package/dist/cjs/typePrimitives.d.cts +16 -0
- package/dist/cjs/useBlocker.cjs +138 -9
- package/dist/cjs/useBlocker.cjs.map +1 -1
- package/dist/cjs/useBlocker.d.cts +64 -7
- package/dist/cjs/useCanGoBack.cjs +8 -0
- package/dist/cjs/useCanGoBack.cjs.map +1 -0
- package/dist/cjs/useCanGoBack.d.cts +1 -0
- package/dist/cjs/useLoaderData.cjs +15 -0
- package/dist/cjs/useLoaderData.cjs.map +1 -0
- package/dist/cjs/useLoaderData.d.cts +8 -0
- package/dist/cjs/useLoaderDeps.cjs +14 -0
- package/dist/cjs/useLoaderDeps.cjs.map +1 -0
- package/dist/cjs/useLoaderDeps.d.cts +8 -0
- package/dist/cjs/useLocation.cjs +10 -0
- package/dist/cjs/useLocation.cjs.map +1 -0
- package/dist/cjs/useLocation.d.cts +7 -0
- package/dist/cjs/useMatch.cjs +47 -0
- package/dist/cjs/useMatch.cjs.map +1 -0
- package/dist/cjs/useMatch.d.cts +10 -0
- package/dist/cjs/useNavigate.cjs +18 -19
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/cjs/useNavigate.d.cts +4 -8
- package/dist/cjs/useParams.cjs +8 -8
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/cjs/useParams.d.cts +9 -8
- package/dist/cjs/useRouteContext.cjs +3 -3
- package/dist/cjs/useRouteContext.cjs.map +1 -1
- package/dist/cjs/useRouteContext.d.cts +3 -7
- package/dist/cjs/useRouter.cjs.map +1 -1
- package/dist/cjs/useRouter.d.cts +3 -4
- package/dist/cjs/useRouterState.cjs +18 -1
- package/dist/cjs/useRouterState.cjs.map +1 -1
- package/dist/cjs/useRouterState.d.cts +8 -6
- package/dist/cjs/useSearch.cjs +7 -4
- package/dist/cjs/useSearch.cjs.map +1 -1
- package/dist/cjs/useSearch.d.cts +9 -7
- package/dist/cjs/utils.cjs +40 -122
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +46 -50
- package/dist/esm/Asset.d.ts +2 -0
- package/dist/esm/Asset.js +41 -0
- package/dist/esm/Asset.js.map +1 -0
- package/dist/esm/CatchBoundary.d.ts +8 -32
- package/dist/esm/CatchBoundary.js +16 -12
- package/dist/esm/CatchBoundary.js.map +1 -1
- package/dist/esm/ClientOnly.d.ts +29 -0
- package/dist/esm/ClientOnly.js +20 -0
- package/dist/esm/ClientOnly.js.map +1 -0
- package/dist/esm/HeadContent.d.ts +7 -0
- package/dist/esm/HeadContent.js +139 -0
- package/dist/esm/HeadContent.js.map +1 -0
- package/dist/esm/Match.d.ts +8 -0
- package/dist/esm/Match.js +235 -0
- package/dist/esm/Match.js.map +1 -0
- package/dist/esm/Matches.d.ts +23 -83
- package/dist/esm/Matches.js +36 -284
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.d.ts +8 -27
- package/dist/esm/RouterProvider.js +20 -126
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/SafeFragment.d.ts +1 -0
- package/dist/esm/SafeFragment.js +8 -0
- package/dist/esm/SafeFragment.js.map +1 -0
- package/dist/esm/ScriptOnce.d.ts +5 -0
- package/dist/esm/ScriptOnce.js +28 -0
- package/dist/esm/ScriptOnce.js.map +1 -0
- package/dist/esm/Scripts.d.ts +1 -0
- package/dist/esm/Scripts.js +51 -0
- package/dist/esm/Scripts.js.map +1 -0
- package/dist/esm/ScrollRestoration.d.ts +14 -0
- package/dist/esm/ScrollRestoration.js +39 -0
- package/dist/esm/ScrollRestoration.js.map +1 -0
- package/dist/esm/Transitioner.d.ts +1 -0
- package/dist/esm/Transitioner.js +98 -0
- package/dist/esm/Transitioner.js.map +1 -0
- package/dist/esm/awaited.d.ts +4 -4
- package/dist/esm/awaited.js +12 -65
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/fileRoute.d.ts +33 -108
- package/dist/esm/fileRoute.js +38 -12
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/history.d.ts +1 -0
- package/dist/esm/index.d.ts +52 -29
- package/dist/esm/index.js +41 -29
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lazyRouteComponent.d.ts +1 -1
- package/dist/esm/lazyRouteComponent.js +40 -29
- package/dist/esm/lazyRouteComponent.js.map +1 -1
- package/dist/esm/link.d.ts +41 -86
- package/dist/esm/link.js +212 -106
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/matchContext.d.ts +3 -0
- package/dist/esm/matchContext.js +10 -0
- package/dist/esm/matchContext.js.map +1 -0
- package/dist/esm/not-found.d.ts +5 -22
- package/dist/esm/not-found.js +9 -15
- package/dist/esm/not-found.js.map +1 -1
- package/dist/esm/renderRouteNotFound.d.ts +2 -0
- package/dist/esm/renderRouteNotFound.js +22 -0
- package/dist/esm/renderRouteNotFound.js.map +1 -0
- package/dist/esm/route.d.ts +64 -361
- package/dist/esm/route.js +103 -72
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.d.ts +69 -237
- package/dist/esm/router.js +13 -1238
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/routerContext.d.ts +7 -2
- package/dist/esm/routerContext.js +1 -1
- package/dist/esm/routerContext.js.map +1 -1
- package/dist/esm/scroll-restoration.d.ts +1 -18
- package/dist/esm/scroll-restoration.js +17 -161
- package/dist/esm/scroll-restoration.js.map +1 -1
- package/dist/esm/serializer.d.ts +6 -0
- package/dist/esm/structuralSharing.d.ts +8 -0
- package/dist/esm/typePrimitives.d.ts +16 -0
- package/dist/esm/useBlocker.d.ts +64 -7
- package/dist/esm/useBlocker.js +138 -9
- package/dist/esm/useBlocker.js.map +1 -1
- package/dist/esm/useCanGoBack.d.ts +1 -0
- package/dist/esm/useCanGoBack.js +8 -0
- package/dist/esm/useCanGoBack.js.map +1 -0
- package/dist/esm/useLoaderData.d.ts +8 -0
- package/dist/esm/useLoaderData.js +15 -0
- package/dist/esm/useLoaderData.js.map +1 -0
- package/dist/esm/useLoaderDeps.d.ts +8 -0
- package/dist/esm/useLoaderDeps.js +14 -0
- package/dist/esm/useLoaderDeps.js.map +1 -0
- package/dist/esm/useLocation.d.ts +7 -0
- package/dist/esm/useLocation.js +10 -0
- package/dist/esm/useLocation.js.map +1 -0
- package/dist/esm/useMatch.d.ts +10 -0
- package/dist/esm/useMatch.js +30 -0
- package/dist/esm/useMatch.js.map +1 -0
- package/dist/esm/useNavigate.d.ts +4 -8
- package/dist/esm/useNavigate.js +18 -19
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useParams.d.ts +9 -8
- package/dist/esm/useParams.js +8 -8
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/useRouteContext.d.ts +3 -7
- package/dist/esm/useRouteContext.js +2 -2
- package/dist/esm/useRouteContext.js.map +1 -1
- package/dist/esm/useRouter.d.ts +3 -4
- package/dist/esm/useRouter.js.map +1 -1
- package/dist/esm/useRouterState.d.ts +8 -6
- package/dist/esm/useRouterState.js +18 -1
- package/dist/esm/useRouterState.js.map +1 -1
- package/dist/esm/useSearch.d.ts +9 -7
- package/dist/esm/useSearch.js +6 -3
- package/dist/esm/useSearch.js.map +1 -1
- package/dist/esm/utils.d.ts +46 -50
- package/dist/esm/utils.js +41 -123
- package/dist/esm/utils.js.map +1 -1
- package/package.json +30 -31
- package/src/Asset.tsx +40 -0
- package/src/CatchBoundary.tsx +35 -19
- package/src/ClientOnly.tsx +68 -0
- package/src/HeadContent.tsx +174 -0
- package/src/Match.tsx +330 -0
- package/src/Matches.tsx +149 -558
- package/src/RouterProvider.tsx +58 -212
- package/src/SafeFragment.tsx +5 -0
- package/src/ScriptOnce.tsx +32 -0
- package/src/Scripts.tsx +65 -0
- package/src/ScrollRestoration.tsx +69 -0
- package/src/Transitioner.tsx +130 -0
- package/src/awaited.tsx +16 -87
- package/src/fileRoute.ts +145 -248
- package/src/history.ts +2 -1
- package/src/index.tsx +368 -30
- package/src/lazyRouteComponent.tsx +68 -54
- package/src/link.tsx +397 -522
- package/src/matchContext.tsx +8 -0
- package/src/not-found.tsx +13 -34
- package/src/renderRouteNotFound.tsx +27 -0
- package/src/route.tsx +572 -0
- package/src/router.ts +99 -2067
- package/src/routerContext.tsx +8 -2
- package/src/scroll-restoration.tsx +23 -224
- package/src/serializer.ts +7 -0
- package/src/structuralSharing.ts +47 -0
- package/src/typePrimitives.ts +84 -0
- package/src/useBlocker.tsx +297 -15
- package/src/useCanGoBack.ts +5 -0
- package/src/useLoaderData.tsx +80 -0
- package/src/useLoaderDeps.tsx +58 -0
- package/src/useLocation.tsx +41 -0
- package/src/useMatch.tsx +119 -0
- package/src/useNavigate.tsx +41 -61
- package/src/useParams.tsx +88 -23
- package/src/useRouteContext.ts +24 -18
- package/src/useRouter.tsx +4 -5
- package/src/useRouterState.tsx +52 -10
- package/src/useSearch.tsx +87 -24
- package/src/utils.ts +97 -312
- package/dist/cjs/createServerFn.cjs +0 -40
- package/dist/cjs/createServerFn.cjs.map +0 -1
- package/dist/cjs/createServerFn.d.cts +0 -44
- package/dist/cjs/defer.cjs +0 -30
- package/dist/cjs/defer.cjs.map +0 -1
- package/dist/cjs/defer.d.cts +0 -25
- package/dist/cjs/location.d.cts +0 -12
- package/dist/cjs/path.cjs +0 -213
- package/dist/cjs/path.cjs.map +0 -1
- package/dist/cjs/path.d.cts +0 -24
- package/dist/cjs/qss.cjs +0 -45
- package/dist/cjs/qss.cjs.map +0 -1
- package/dist/cjs/qss.d.cts +0 -2
- package/dist/cjs/redirects.cjs +0 -16
- package/dist/cjs/redirects.cjs.map +0 -1
- package/dist/cjs/redirects.d.cts +0 -18
- package/dist/cjs/routeInfo.d.cts +0 -31
- package/dist/cjs/searchParams.cjs +0 -63
- package/dist/cjs/searchParams.cjs.map +0 -1
- package/dist/cjs/searchParams.d.cts +0 -7
- package/dist/esm/createServerFn.d.ts +0 -44
- package/dist/esm/createServerFn.js +0 -40
- package/dist/esm/createServerFn.js.map +0 -1
- package/dist/esm/defer.d.ts +0 -25
- package/dist/esm/defer.js +0 -30
- package/dist/esm/defer.js.map +0 -1
- package/dist/esm/location.d.ts +0 -12
- package/dist/esm/path.d.ts +0 -24
- package/dist/esm/path.js +0 -213
- package/dist/esm/path.js.map +0 -1
- package/dist/esm/qss.d.ts +0 -2
- package/dist/esm/qss.js +0 -45
- package/dist/esm/qss.js.map +0 -1
- package/dist/esm/redirects.d.ts +0 -18
- package/dist/esm/redirects.js +0 -16
- package/dist/esm/redirects.js.map +0 -1
- package/dist/esm/routeInfo.d.ts +0 -31
- package/dist/esm/searchParams.d.ts +0 -7
- package/dist/esm/searchParams.js +0 -63
- package/dist/esm/searchParams.js.map +0 -1
- package/src/createServerFn.ts +0 -107
- package/src/defer.ts +0 -70
- package/src/location.ts +0 -13
- package/src/path.ts +0 -280
- package/src/qss.ts +0 -53
- package/src/redirects.ts +0 -56
- package/src/route.ts +0 -1356
- package/src/routeInfo.ts +0 -63
- package/src/searchParams.ts +0 -79
package/dist/cjs/Matches.cjs
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const React = require("react");
|
|
5
|
-
const invariant = require("tiny-invariant");
|
|
6
5
|
const warning = require("tiny-warning");
|
|
7
6
|
const CatchBoundary = require("./CatchBoundary.cjs");
|
|
8
7
|
const useRouterState = require("./useRouterState.cjs");
|
|
9
8
|
const useRouter = require("./useRouter.cjs");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
9
|
+
const Transitioner = require("./Transitioner.cjs");
|
|
10
|
+
const matchContext = require("./matchContext.cjs");
|
|
11
|
+
const Match = require("./Match.cjs");
|
|
12
|
+
const SafeFragment = require("./SafeFragment.cjs");
|
|
13
13
|
function _interopNamespaceDefault(e) {
|
|
14
14
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
15
15
|
if (e) {
|
|
@@ -27,235 +27,62 @@ function _interopNamespaceDefault(e) {
|
|
|
27
27
|
return Object.freeze(n);
|
|
28
28
|
}
|
|
29
29
|
const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
|
|
30
|
-
const matchContext = React__namespace.createContext(void 0);
|
|
31
30
|
function Matches() {
|
|
32
31
|
const router = useRouter.useRouter();
|
|
32
|
+
const pendingElement = router.options.defaultPendingComponent ? /* @__PURE__ */ jsxRuntime.jsx(router.options.defaultPendingComponent, {}) : null;
|
|
33
|
+
const ResolvedSuspense = router.isServer || typeof document !== "undefined" && router.clientSsr ? SafeFragment.SafeFragment : React__namespace.Suspense;
|
|
34
|
+
const inner = /* @__PURE__ */ jsxRuntime.jsxs(ResolvedSuspense, { fallback: pendingElement, children: [
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsx(Transitioner.Transitioner, {}),
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx(MatchesInner, {})
|
|
37
|
+
] });
|
|
38
|
+
return router.options.InnerWrap ? /* @__PURE__ */ jsxRuntime.jsx(router.options.InnerWrap, { children: inner }) : inner;
|
|
39
|
+
}
|
|
40
|
+
function MatchesInner() {
|
|
33
41
|
const matchId = useRouterState.useRouterState({
|
|
34
42
|
select: (s) => {
|
|
35
43
|
var _a;
|
|
36
|
-
return (_a =
|
|
44
|
+
return (_a = s.matches[0]) == null ? void 0 : _a.id;
|
|
37
45
|
}
|
|
38
46
|
});
|
|
39
|
-
|
|
47
|
+
const resetKey = useRouterState.useRouterState({
|
|
48
|
+
select: (s) => s.loadedAt
|
|
49
|
+
});
|
|
50
|
+
return /* @__PURE__ */ jsxRuntime.jsx(matchContext.matchContext.Provider, { value: matchId, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
40
51
|
CatchBoundary.CatchBoundary,
|
|
41
52
|
{
|
|
42
|
-
getResetKey: () =>
|
|
43
|
-
var _a;
|
|
44
|
-
return (_a = router.state.resolvedLocation.state) == null ? void 0 : _a.key;
|
|
45
|
-
},
|
|
53
|
+
getResetKey: () => resetKey,
|
|
46
54
|
errorComponent: CatchBoundary.ErrorComponent,
|
|
47
55
|
onCatch: (error) => {
|
|
48
56
|
warning(
|
|
49
57
|
false,
|
|
50
|
-
`The following error wasn't caught by any route!
|
|
58
|
+
`The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`
|
|
51
59
|
);
|
|
52
|
-
|
|
60
|
+
warning(false, error.message || error.toString());
|
|
53
61
|
},
|
|
54
|
-
children: matchId ? /* @__PURE__ */ jsxRuntime.jsx(Match, { matchId }) : null
|
|
62
|
+
children: matchId ? /* @__PURE__ */ jsxRuntime.jsx(Match.Match, { matchId }) : null
|
|
55
63
|
}
|
|
56
64
|
) });
|
|
57
65
|
}
|
|
58
|
-
function
|
|
59
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children });
|
|
60
|
-
}
|
|
61
|
-
function Match({ matchId }) {
|
|
62
|
-
var _a, _b, _c, _d;
|
|
63
|
-
const router = useRouter.useRouter();
|
|
64
|
-
const routeId = useRouterState.useRouterState({
|
|
65
|
-
select: (s) => {
|
|
66
|
-
var _a2;
|
|
67
|
-
return (_a2 = getRenderedMatches(s).find((d) => d.id === matchId)) == null ? void 0 : _a2.routeId;
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
invariant(
|
|
71
|
-
routeId,
|
|
72
|
-
`Could not find routeId for matchId "${matchId}". Please file an issue!`
|
|
73
|
-
);
|
|
74
|
-
const route = router.routesById[routeId];
|
|
75
|
-
const PendingComponent = route.options.pendingComponent ?? router.options.defaultPendingComponent;
|
|
76
|
-
const pendingElement = PendingComponent ? /* @__PURE__ */ jsxRuntime.jsx(PendingComponent, {}) : null;
|
|
77
|
-
const routeErrorComponent = route.options.errorComponent ?? router.options.defaultErrorComponent ?? CatchBoundary.ErrorComponent;
|
|
78
|
-
const routeNotFoundComponent = route.isRoot ? (
|
|
79
|
-
// If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component
|
|
80
|
-
route.options.notFoundComponent ?? ((_a = router.options.notFoundRoute) == null ? void 0 : _a.options.component)
|
|
81
|
-
) : route.options.notFoundComponent;
|
|
82
|
-
const ResolvedSuspenseBoundary = route.options.wrapInSuspense ?? PendingComponent ?? ((_b = route.options.component) == null ? void 0 : _b.preload) ?? ((_c = route.options.pendingComponent) == null ? void 0 : _c.preload) ?? ((_d = route.options.errorComponent) == null ? void 0 : _d.preload) ? React__namespace.Suspense : SafeFragment;
|
|
83
|
-
const ResolvedCatchBoundary = routeErrorComponent ? CatchBoundary.CatchBoundary : SafeFragment;
|
|
84
|
-
const ResolvedNotFoundBoundary = routeNotFoundComponent ? notFound.CatchNotFound : SafeFragment;
|
|
85
|
-
return /* @__PURE__ */ jsxRuntime.jsx(matchContext.Provider, { value: matchId, children: /* @__PURE__ */ jsxRuntime.jsx(ResolvedSuspenseBoundary, { fallback: pendingElement, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
-
ResolvedCatchBoundary,
|
|
87
|
-
{
|
|
88
|
-
getResetKey: () => {
|
|
89
|
-
var _a2;
|
|
90
|
-
return (_a2 = router.state.resolvedLocation.state) == null ? void 0 : _a2.key;
|
|
91
|
-
},
|
|
92
|
-
errorComponent: routeErrorComponent,
|
|
93
|
-
onCatch: (error) => {
|
|
94
|
-
if (notFound.isNotFound(error))
|
|
95
|
-
throw error;
|
|
96
|
-
warning(false, `Error in route match: ${matchId}`);
|
|
97
|
-
console.error(error);
|
|
98
|
-
},
|
|
99
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
-
ResolvedNotFoundBoundary,
|
|
101
|
-
{
|
|
102
|
-
fallback: (error) => {
|
|
103
|
-
if (!routeNotFoundComponent || error.routeId && error.routeId !== routeId || !error.routeId && !route.isRoot)
|
|
104
|
-
throw error;
|
|
105
|
-
return React__namespace.createElement(routeNotFoundComponent, error);
|
|
106
|
-
},
|
|
107
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(MatchInner, { matchId, pendingElement })
|
|
108
|
-
}
|
|
109
|
-
)
|
|
110
|
-
}
|
|
111
|
-
) }) });
|
|
112
|
-
}
|
|
113
|
-
function MatchInner({
|
|
114
|
-
matchId,
|
|
115
|
-
pendingElement
|
|
116
|
-
}) {
|
|
117
|
-
var _a, _b;
|
|
118
|
-
const router = useRouter.useRouter();
|
|
119
|
-
const routeId = useRouterState.useRouterState({
|
|
120
|
-
select: (s) => {
|
|
121
|
-
var _a2;
|
|
122
|
-
return (_a2 = getRenderedMatches(s).find((d) => d.id === matchId)) == null ? void 0 : _a2.routeId;
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
const route = router.routesById[routeId];
|
|
126
|
-
const match = useRouterState.useRouterState({
|
|
127
|
-
select: (s) => utils.pick(getRenderedMatches(s).find((d) => d.id === matchId), [
|
|
128
|
-
"status",
|
|
129
|
-
"error",
|
|
130
|
-
"showPending",
|
|
131
|
-
"loadPromise"
|
|
132
|
-
])
|
|
133
|
-
});
|
|
134
|
-
const RouteErrorComponent = (route.options.errorComponent ?? router.options.defaultErrorComponent) || CatchBoundary.ErrorComponent;
|
|
135
|
-
if (match.status === "notFound") {
|
|
136
|
-
let error;
|
|
137
|
-
if (isServerSideError(match.error)) {
|
|
138
|
-
const deserializeError = ((_a = router.options.errorSerializer) == null ? void 0 : _a.deserialize) ?? defaultDeserializeError;
|
|
139
|
-
error = deserializeError(match.error.data);
|
|
140
|
-
} else {
|
|
141
|
-
error = match.error;
|
|
142
|
-
}
|
|
143
|
-
invariant(notFound.isNotFound(error), "Expected a notFound error");
|
|
144
|
-
return renderRouteNotFound(router, route, error);
|
|
145
|
-
}
|
|
146
|
-
if (match.status === "redirected") {
|
|
147
|
-
invariant(redirects.isRedirect(match.error), "Expected a redirect error");
|
|
148
|
-
warning(
|
|
149
|
-
false,
|
|
150
|
-
"Tried to render a redirected route match! This is a weird circumstance, please file an issue!"
|
|
151
|
-
);
|
|
152
|
-
return null;
|
|
153
|
-
}
|
|
154
|
-
if (match.status === "error") {
|
|
155
|
-
if (utils.isServer) {
|
|
156
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
157
|
-
RouteErrorComponent,
|
|
158
|
-
{
|
|
159
|
-
error: match.error,
|
|
160
|
-
info: {
|
|
161
|
-
componentStack: ""
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
if (isServerSideError(match.error)) {
|
|
167
|
-
const deserializeError = ((_b = router.options.errorSerializer) == null ? void 0 : _b.deserialize) ?? defaultDeserializeError;
|
|
168
|
-
throw deserializeError(match.error.data);
|
|
169
|
-
} else {
|
|
170
|
-
throw match.error;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (match.status === "pending") {
|
|
174
|
-
if (match.showPending) {
|
|
175
|
-
return pendingElement;
|
|
176
|
-
}
|
|
177
|
-
throw match.loadPromise;
|
|
178
|
-
}
|
|
179
|
-
if (match.status === "success") {
|
|
180
|
-
let Comp = route.options.component ?? router.options.defaultComponent;
|
|
181
|
-
if (Comp) {
|
|
182
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Comp, {});
|
|
183
|
-
}
|
|
184
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Outlet, {});
|
|
185
|
-
}
|
|
186
|
-
invariant(
|
|
187
|
-
false,
|
|
188
|
-
"Idle routeMatch status encountered during rendering! You should never see this. File an issue!"
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
const Outlet = React__namespace.memo(function Outlet2() {
|
|
66
|
+
function useMatchRoute() {
|
|
192
67
|
const router = useRouter.useRouter();
|
|
193
|
-
|
|
194
|
-
const routeId = useRouterState.useRouterState({
|
|
68
|
+
useRouterState.useRouterState({
|
|
195
69
|
select: (s) => {
|
|
196
70
|
var _a;
|
|
197
|
-
return (_a =
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const route = router.routesById[routeId];
|
|
201
|
-
const { parentGlobalNotFound } = useRouterState.useRouterState({
|
|
202
|
-
select: (s) => {
|
|
203
|
-
const matches = getRenderedMatches(s);
|
|
204
|
-
const parentMatch = matches.find((d) => d.id === matchId);
|
|
205
|
-
invariant(
|
|
206
|
-
parentMatch,
|
|
207
|
-
`Could not find parent match for matchId "${matchId}"`
|
|
208
|
-
);
|
|
209
|
-
return {
|
|
210
|
-
parentGlobalNotFound: parentMatch.globalNotFound
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
const childMatchId = useRouterState.useRouterState({
|
|
215
|
-
select: (s) => {
|
|
216
|
-
var _a;
|
|
217
|
-
const matches = getRenderedMatches(s);
|
|
218
|
-
const index = matches.findIndex((d) => d.id === matchId);
|
|
219
|
-
return (_a = matches[index + 1]) == null ? void 0 : _a.id;
|
|
220
|
-
}
|
|
71
|
+
return [s.location.href, (_a = s.resolvedLocation) == null ? void 0 : _a.href, s.status];
|
|
72
|
+
},
|
|
73
|
+
structuralSharing: true
|
|
221
74
|
});
|
|
222
|
-
if (parentGlobalNotFound) {
|
|
223
|
-
return renderRouteNotFound(router, route, void 0);
|
|
224
|
-
}
|
|
225
|
-
if (!childMatchId) {
|
|
226
|
-
return null;
|
|
227
|
-
}
|
|
228
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Match, { matchId: childMatchId });
|
|
229
|
-
});
|
|
230
|
-
function renderRouteNotFound(router, route, data) {
|
|
231
|
-
if (!route.options.notFoundComponent) {
|
|
232
|
-
if (router.options.defaultNotFoundComponent) {
|
|
233
|
-
return /* @__PURE__ */ jsxRuntime.jsx(router.options.defaultNotFoundComponent, { data });
|
|
234
|
-
}
|
|
235
|
-
if (process.env.NODE_ENV === "development") {
|
|
236
|
-
warning(
|
|
237
|
-
route.options.notFoundComponent,
|
|
238
|
-
`A notFoundError was encountered on the route with ID "${route.id}", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<div>Not Found<div>)`
|
|
239
|
-
);
|
|
240
|
-
}
|
|
241
|
-
return /* @__PURE__ */ jsxRuntime.jsx(notFound.DefaultGlobalNotFound, {});
|
|
242
|
-
}
|
|
243
|
-
return /* @__PURE__ */ jsxRuntime.jsx(route.options.notFoundComponent, { data });
|
|
244
|
-
}
|
|
245
|
-
function useMatchRoute() {
|
|
246
|
-
useRouterState.useRouterState({ select: (s) => [s.location, s.resolvedLocation] });
|
|
247
|
-
const { matchRoute } = useRouter.useRouter();
|
|
248
75
|
return React__namespace.useCallback(
|
|
249
76
|
(opts) => {
|
|
250
77
|
const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;
|
|
251
|
-
return matchRoute(rest, {
|
|
78
|
+
return router.matchRoute(rest, {
|
|
252
79
|
pending,
|
|
253
80
|
caseSensitive,
|
|
254
81
|
fuzzy,
|
|
255
82
|
includeSearch
|
|
256
83
|
});
|
|
257
84
|
},
|
|
258
|
-
[]
|
|
85
|
+
[router]
|
|
259
86
|
);
|
|
260
87
|
}
|
|
261
88
|
function MatchRoute(props) {
|
|
@@ -264,54 +91,19 @@ function MatchRoute(props) {
|
|
|
264
91
|
if (typeof props.children === "function") {
|
|
265
92
|
return props.children(params);
|
|
266
93
|
}
|
|
267
|
-
return
|
|
268
|
-
}
|
|
269
|
-
function getRenderedMatches(state) {
|
|
270
|
-
var _a;
|
|
271
|
-
return ((_a = state.pendingMatches) == null ? void 0 : _a.some((d) => d.showPending)) ? state.pendingMatches : state.matches;
|
|
272
|
-
}
|
|
273
|
-
function useMatch(opts) {
|
|
274
|
-
var _a;
|
|
275
|
-
const router = useRouter.useRouter();
|
|
276
|
-
const nearestMatchId = React__namespace.useContext(matchContext);
|
|
277
|
-
const nearestMatchRouteId = (_a = getRenderedMatches(router.state).find(
|
|
278
|
-
(d) => d.id === nearestMatchId
|
|
279
|
-
)) == null ? void 0 : _a.routeId;
|
|
280
|
-
const matchRouteId = (() => {
|
|
281
|
-
const matches = getRenderedMatches(router.state);
|
|
282
|
-
const match = (opts == null ? void 0 : opts.from) ? matches.find((d) => d.routeId === (opts == null ? void 0 : opts.from)) : matches.find((d) => d.id === nearestMatchId);
|
|
283
|
-
return match.routeId;
|
|
284
|
-
})();
|
|
285
|
-
if ((opts == null ? void 0 : opts.strict) ?? true) {
|
|
286
|
-
invariant(
|
|
287
|
-
nearestMatchRouteId == matchRouteId,
|
|
288
|
-
`useMatch("${matchRouteId}") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch("${matchRouteId}", { strict: false })' or 'useRoute("${matchRouteId}")' instead?`
|
|
289
|
-
);
|
|
290
|
-
}
|
|
291
|
-
const matchSelection = useRouterState.useRouterState({
|
|
292
|
-
select: (state) => {
|
|
293
|
-
const match = getRenderedMatches(state).find(
|
|
294
|
-
(d) => (opts == null ? void 0 : opts.from) ? (opts == null ? void 0 : opts.from) === d.routeId : d.id === nearestMatchId
|
|
295
|
-
);
|
|
296
|
-
invariant(
|
|
297
|
-
match,
|
|
298
|
-
`Could not find ${(opts == null ? void 0 : opts.from) ? `an active match from "${opts.from}"` : "a nearest match!"}`
|
|
299
|
-
);
|
|
300
|
-
return (opts == null ? void 0 : opts.select) ? opts.select(match) : match;
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
|
-
return matchSelection;
|
|
94
|
+
return params ? props.children : null;
|
|
304
95
|
}
|
|
305
96
|
function useMatches(opts) {
|
|
306
97
|
return useRouterState.useRouterState({
|
|
307
98
|
select: (state) => {
|
|
308
|
-
const matches =
|
|
99
|
+
const matches = state.matches;
|
|
309
100
|
return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;
|
|
310
|
-
}
|
|
101
|
+
},
|
|
102
|
+
structuralSharing: opts == null ? void 0 : opts.structuralSharing
|
|
311
103
|
});
|
|
312
104
|
}
|
|
313
105
|
function useParentMatches(opts) {
|
|
314
|
-
const contextMatchId = React__namespace.useContext(matchContext);
|
|
106
|
+
const contextMatchId = React__namespace.useContext(matchContext.matchContext);
|
|
315
107
|
return useMatches({
|
|
316
108
|
select: (matches) => {
|
|
317
109
|
matches = matches.slice(
|
|
@@ -319,65 +111,25 @@ function useParentMatches(opts) {
|
|
|
319
111
|
matches.findIndex((d) => d.id === contextMatchId)
|
|
320
112
|
);
|
|
321
113
|
return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;
|
|
322
|
-
}
|
|
114
|
+
},
|
|
115
|
+
structuralSharing: opts == null ? void 0 : opts.structuralSharing
|
|
323
116
|
});
|
|
324
117
|
}
|
|
325
118
|
function useChildMatches(opts) {
|
|
326
|
-
const contextMatchId = React__namespace.useContext(matchContext);
|
|
119
|
+
const contextMatchId = React__namespace.useContext(matchContext.matchContext);
|
|
327
120
|
return useMatches({
|
|
328
121
|
select: (matches) => {
|
|
329
122
|
matches = matches.slice(
|
|
330
123
|
matches.findIndex((d) => d.id === contextMatchId) + 1
|
|
331
124
|
);
|
|
332
125
|
return (opts == null ? void 0 : opts.select) ? opts.select(matches) : matches;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
}
|
|
336
|
-
function useLoaderDeps(opts) {
|
|
337
|
-
return useMatch({
|
|
338
|
-
...opts,
|
|
339
|
-
select: (s) => {
|
|
340
|
-
return typeof opts.select === "function" ? opts.select(s == null ? void 0 : s.loaderDeps) : s == null ? void 0 : s.loaderDeps;
|
|
341
|
-
}
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
function useLoaderData(opts) {
|
|
345
|
-
return useMatch({
|
|
346
|
-
...opts,
|
|
347
|
-
select: (s) => {
|
|
348
|
-
return typeof opts.select === "function" ? opts.select(s == null ? void 0 : s.loaderData) : s == null ? void 0 : s.loaderData;
|
|
349
|
-
}
|
|
126
|
+
},
|
|
127
|
+
structuralSharing: opts == null ? void 0 : opts.structuralSharing
|
|
350
128
|
});
|
|
351
129
|
}
|
|
352
|
-
function isServerSideError(error) {
|
|
353
|
-
if (!(typeof error === "object" && error && "data" in error))
|
|
354
|
-
return false;
|
|
355
|
-
if (!("__isServerError" in error && error.__isServerError))
|
|
356
|
-
return false;
|
|
357
|
-
if (!(typeof error.data === "object" && error.data))
|
|
358
|
-
return false;
|
|
359
|
-
return error.__isServerError === true;
|
|
360
|
-
}
|
|
361
|
-
function defaultDeserializeError(serializedData) {
|
|
362
|
-
if ("name" in serializedData && "message" in serializedData) {
|
|
363
|
-
const error = new Error(serializedData.message);
|
|
364
|
-
error.name = serializedData.name;
|
|
365
|
-
return error;
|
|
366
|
-
}
|
|
367
|
-
return serializedData.data;
|
|
368
|
-
}
|
|
369
|
-
exports.Match = Match;
|
|
370
130
|
exports.MatchRoute = MatchRoute;
|
|
371
131
|
exports.Matches = Matches;
|
|
372
|
-
exports.Outlet = Outlet;
|
|
373
|
-
exports.defaultDeserializeError = defaultDeserializeError;
|
|
374
|
-
exports.getRenderedMatches = getRenderedMatches;
|
|
375
|
-
exports.isServerSideError = isServerSideError;
|
|
376
|
-
exports.matchContext = matchContext;
|
|
377
132
|
exports.useChildMatches = useChildMatches;
|
|
378
|
-
exports.useLoaderData = useLoaderData;
|
|
379
|
-
exports.useLoaderDeps = useLoaderDeps;
|
|
380
|
-
exports.useMatch = useMatch;
|
|
381
133
|
exports.useMatchRoute = useMatchRoute;
|
|
382
134
|
exports.useMatches = useMatches;
|
|
383
135
|
exports.useParentMatches = useParentMatches;
|
package/dist/cjs/Matches.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matches.cjs","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as React from 'react'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { ResolveRelativePath, ToOptions } from './link'\nimport {\n AnyRoute,\n ReactNode,\n RootSearchSchema,\n StaticDataRouteOption,\n} from './route'\nimport {\n AllParams,\n FullSearchSchema,\n ParseRoute,\n RouteById,\n RouteByPath,\n RouteIds,\n RoutePaths,\n} from './routeInfo'\nimport { AnyRouter, RegisteredRouter, RouterState } from './router'\nimport {\n DeepPartial,\n Expand,\n NoInfer,\n StrictOrFrom,\n isServer,\n pick,\n} from './utils'\nimport { CatchNotFound, DefaultGlobalNotFound, isNotFound } from './not-found'\nimport { isRedirect } from './redirects'\n\nexport const matchContext = React.createContext<string | undefined>(undefined)\n\nexport interface RouteMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],\n TReturnIntersection extends boolean = false,\n> {\n id: string\n routeId: TRouteId\n pathname: string\n params: TReturnIntersection extends false\n ? RouteById<TRouteTree, TRouteId>['types']['allParams']\n : Expand<Partial<AllParams<TRouteTree>>>\n status: 'pending' | 'success' | 'error' | 'redirected' | 'notFound'\n isFetching: boolean\n showPending: boolean\n error: unknown\n paramsError: unknown\n searchError: unknown\n updatedAt: number\n loadPromise?: Promise<void>\n loaderData?: RouteById<TRouteTree, TRouteId>['types']['loaderData']\n routeContext: RouteById<TRouteTree, TRouteId>['types']['routeContext']\n context: RouteById<TRouteTree, TRouteId>['types']['allContext']\n search: TReturnIntersection extends false\n ? Exclude<\n RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema'],\n RootSearchSchema\n >\n : Expand<\n Partial<Omit<FullSearchSchema<TRouteTree>, keyof RootSearchSchema>>\n >\n fetchCount: number\n abortController: AbortController\n cause: 'preload' | 'enter' | 'stay'\n loaderDeps: RouteById<TRouteTree, TRouteId>['types']['loaderDeps']\n preload: boolean\n invalid: boolean\n pendingPromise?: Promise<void>\n meta?: JSX.IntrinsicElements['meta'][]\n links?: JSX.IntrinsicElements['link'][]\n scripts?: JSX.IntrinsicElements['script'][]\n headers?: Record<string, string>\n globalNotFound?: boolean\n staticData: StaticDataRouteOption\n}\n\nexport type AnyRouteMatch = RouteMatch<any, any>\n\nexport function Matches() {\n const router = useRouter()\n const matchId = useRouterState({\n select: (s) => {\n return getRenderedMatches(s)[0]?.id\n },\n })\n\n return (\n <matchContext.Provider value={matchId}>\n <CatchBoundary\n getResetKey={() => router.state.resolvedLocation.state?.key!}\n errorComponent={ErrorComponent}\n onCatch={(error) => {\n warning(\n false,\n `The following error wasn't caught by any route! 👇 At the very least, consider setting an 'errorComponent' in your RootRoute!`,\n )\n console.error(error)\n }}\n >\n {matchId ? <Match matchId={matchId} /> : null}\n </CatchBoundary>\n </matchContext.Provider>\n )\n}\n\nfunction SafeFragment(props: any) {\n return <>{props.children}</>\n}\n\nexport function Match({ matchId }: { matchId: string }) {\n const router = useRouter()\n const routeId = useRouterState({\n select: (s) =>\n getRenderedMatches(s).find((d) => d.id === matchId)?.routeId as string,\n })\n\n invariant(\n routeId,\n `Could not find routeId for matchId \"${matchId}\". Please file an issue!`,\n )\n\n const route = router.routesById[routeId]!\n\n const PendingComponent = (route.options.pendingComponent ??\n router.options.defaultPendingComponent) as any\n\n const pendingElement = PendingComponent ? <PendingComponent /> : null\n\n const routeErrorComponent =\n route.options.errorComponent ??\n router.options.defaultErrorComponent ??\n ErrorComponent\n\n const routeNotFoundComponent = route.isRoot\n ? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component\n route.options.notFoundComponent ??\n router.options.notFoundRoute?.options.component\n : route.options.notFoundComponent\n\n const ResolvedSuspenseBoundary =\n route.options.wrapInSuspense ??\n PendingComponent ??\n route.options.component?.preload ??\n route.options.pendingComponent?.preload ??\n (route.options.errorComponent as any)?.preload\n ? React.Suspense\n : SafeFragment\n\n const ResolvedCatchBoundary = routeErrorComponent\n ? CatchBoundary\n : SafeFragment\n\n const ResolvedNotFoundBoundary = routeNotFoundComponent\n ? CatchNotFound\n : SafeFragment\n\n return (\n <matchContext.Provider value={matchId}>\n <ResolvedSuspenseBoundary fallback={pendingElement}>\n <ResolvedCatchBoundary\n getResetKey={() => router.state.resolvedLocation.state?.key!}\n errorComponent={routeErrorComponent}\n onCatch={(error) => {\n // Forward not found errors (we don't want to show the error component for these)\n if (isNotFound(error)) throw error\n warning(false, `Error in route match: ${matchId}`)\n console.error(error)\n }}\n >\n <ResolvedNotFoundBoundary\n fallback={(error) => {\n // If the current not found handler doesn't exist or it has a\n // route ID which doesn't match the current route, rethrow the error\n if (\n !routeNotFoundComponent ||\n (error.routeId && error.routeId !== routeId) ||\n (!error.routeId && !route.isRoot)\n )\n throw error\n\n return React.createElement(routeNotFoundComponent, error as any)\n }}\n >\n <MatchInner matchId={matchId!} pendingElement={pendingElement} />\n </ResolvedNotFoundBoundary>\n </ResolvedCatchBoundary>\n </ResolvedSuspenseBoundary>\n </matchContext.Provider>\n )\n}\n\nfunction MatchInner({\n matchId,\n pendingElement,\n}: {\n matchId: string\n pendingElement: any\n}): any {\n const router = useRouter()\n const routeId = useRouterState({\n select: (s) =>\n getRenderedMatches(s).find((d) => d.id === matchId)?.routeId as string,\n })\n\n const route = router.routesById[routeId]!\n\n const match = useRouterState({\n select: (s) =>\n pick(getRenderedMatches(s).find((d) => d.id === matchId)!, [\n 'status',\n 'error',\n 'showPending',\n 'loadPromise',\n ]),\n })\n\n const RouteErrorComponent =\n (route.options.errorComponent ?? router.options.defaultErrorComponent) ||\n ErrorComponent\n\n if (match.status === 'notFound') {\n let error: unknown\n if (isServerSideError(match.error)) {\n const deserializeError =\n router.options.errorSerializer?.deserialize ?? defaultDeserializeError\n\n error = deserializeError(match.error.data)\n } else {\n error = match.error\n }\n\n invariant(isNotFound(error), 'Expected a notFound error')\n\n return renderRouteNotFound(router, route, error)\n }\n\n if (match.status === 'redirected') {\n // Redirects should be handled by the router transition. If we happen to\n // encounter a redirect here, it's a bug. Let's warn, but render nothing.\n invariant(isRedirect(match.error), 'Expected a redirect error')\n\n warning(\n false,\n 'Tried to render a redirected route match! This is a weird circumstance, please file an issue!',\n )\n\n return null\n }\n\n if (match.status === 'error') {\n // If we're on the server, we need to use React's new and super\n // wonky api for throwing errors from a server side render inside\n // of a suspense boundary. This is the only way to get\n // renderToPipeableStream to not hang indefinitely.\n // We'll serialize the error and rethrow it on the client.\n if (isServer) {\n return (\n <RouteErrorComponent\n error={match.error}\n info={{\n componentStack: '',\n }}\n />\n )\n }\n\n if (isServerSideError(match.error)) {\n const deserializeError =\n router.options.errorSerializer?.deserialize ?? defaultDeserializeError\n throw deserializeError(match.error.data)\n } else {\n throw match.error\n }\n }\n\n if (match.status === 'pending') {\n if (match.showPending) {\n return pendingElement\n }\n throw match.loadPromise\n }\n\n if (match.status === 'success') {\n let Comp = route.options.component ?? router.options.defaultComponent\n\n if (Comp) {\n return <Comp />\n }\n\n return <Outlet />\n }\n\n invariant(\n false,\n 'Idle routeMatch status encountered during rendering! You should never see this. File an issue!',\n )\n}\n\nexport const Outlet = React.memo(function Outlet() {\n const router = useRouter()\n const matchId = React.useContext(matchContext)\n const routeId = useRouterState({\n select: (s) =>\n getRenderedMatches(s).find((d) => d.id === matchId)?.routeId as string,\n })\n\n const route = router.routesById[routeId]!\n\n const { parentGlobalNotFound } = useRouterState({\n select: (s) => {\n const matches = getRenderedMatches(s)\n const parentMatch = matches.find((d) => d.id === matchId)\n invariant(\n parentMatch,\n `Could not find parent match for matchId \"${matchId}\"`,\n )\n return {\n parentGlobalNotFound: parentMatch.globalNotFound,\n }\n },\n })\n\n const childMatchId = useRouterState({\n select: (s) => {\n const matches = getRenderedMatches(s)\n const index = matches.findIndex((d) => d.id === matchId)\n return matches[index + 1]?.id\n },\n })\n\n if (parentGlobalNotFound) {\n return renderRouteNotFound(router, route, undefined)\n }\n\n if (!childMatchId) {\n return null\n }\n\n return <Match matchId={childMatchId} />\n})\n\nfunction renderRouteNotFound(router: AnyRouter, route: AnyRoute, data: any) {\n if (!route.options.notFoundComponent) {\n if (router.options.defaultNotFoundComponent) {\n return <router.options.defaultNotFoundComponent data={data} />\n }\n\n if (process.env.NODE_ENV === 'development') {\n warning(\n route.options.notFoundComponent,\n `A notFoundError was encountered on the route with ID \"${route.id}\", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<div>Not Found<div>)`,\n )\n }\n\n return <DefaultGlobalNotFound />\n }\n\n return <route.options.notFoundComponent data={data} />\n}\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n fuzzy?: boolean\n}\n\nexport type UseMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n Options extends ToOptions<\n TRouteTree,\n TFrom,\n TTo,\n TMaskFrom,\n TMaskTo\n > = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n RelaxedOptions = Omit<Options, 'search' | 'params'> &\n DeepPartial<Pick<Options, 'search' | 'params'>>,\n> = RelaxedOptions & MatchRouteOptions\n\nexport function useMatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>() {\n useRouterState({ select: (s) => [s.location, s.resolvedLocation] })\n const { matchRoute } = useRouter()\n\n return React.useCallback(\n <\n TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n >(\n opts: UseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): false | RouteById<TRouteTree, TResolved>['types']['allParams'] => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts\n\n return matchRoute(rest as any, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch,\n })\n },\n [],\n )\n}\n\nexport type MakeMatchRouteOptions<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n> = UseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n TRouteTree,\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n}\n\nexport function MatchRoute<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouteTree> = TFrom,\n TMaskTo extends string = '',\n>(\n props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>,\n): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any)\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return !!params ? props.children : null\n}\n\nexport function getRenderedMatches<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n>(state: RouterState<TRouteTree>) {\n return state.pendingMatches?.some((d) => d.showPending)\n ? state.pendingMatches\n : state.matches\n}\n\nexport function useMatch<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TReturnIntersection extends boolean = false,\n TRouteMatchState = RouteMatch<TRouteTree, TFrom, TReturnIntersection>,\n TSelected = TRouteMatchState,\n>(\n opts: StrictOrFrom<TFrom, TReturnIntersection> & {\n select?: (match: TRouteMatchState) => TSelected\n },\n): TSelected {\n const router = useRouter()\n const nearestMatchId = React.useContext(matchContext)\n\n const nearestMatchRouteId = getRenderedMatches(router.state).find(\n (d) => d.id === nearestMatchId,\n )?.routeId\n\n const matchRouteId = (() => {\n const matches = getRenderedMatches(router.state)\n const match = opts?.from\n ? matches.find((d) => d.routeId === opts?.from)\n : matches.find((d) => d.id === nearestMatchId)\n return match!.routeId\n })()\n\n if (opts?.strict ?? true) {\n invariant(\n nearestMatchRouteId == matchRouteId,\n `useMatch(\"${\n matchRouteId as string\n }\") is being called in a component that is meant to render the '${nearestMatchRouteId}' route. Did you mean to 'useMatch(\"${\n matchRouteId as string\n }\", { strict: false })' or 'useRoute(\"${\n matchRouteId as string\n }\")' instead?`,\n )\n }\n\n const matchSelection = useRouterState({\n select: (state) => {\n const match = getRenderedMatches(state).find((d) =>\n opts?.from ? opts?.from === d.routeId : d.id === nearestMatchId,\n )\n\n invariant(\n match,\n `Could not find ${\n opts?.from\n ? `an active match from \"${opts.from}\"`\n : 'a nearest match!'\n }`,\n )\n\n return opts?.select ? opts.select(match as any) : match\n },\n })\n\n return matchSelection as any\n}\n\nexport function useMatches<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],\n TReturnIntersection extends boolean = false,\n TRouteMatch = RouteMatch<TRouteTree, TRouteId, TReturnIntersection>,\n T = TRouteMatch[],\n>(opts?: {\n select?: (matches: TRouteMatch[]) => T\n experimental_returnIntersection?: TReturnIntersection\n}): T {\n return useRouterState({\n select: (state) => {\n const matches = getRenderedMatches(state)\n return opts?.select\n ? opts.select(matches as TRouteMatch[])\n : (matches as T)\n },\n })\n}\n\nexport function useParentMatches<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],\n TReturnIntersection extends boolean = false,\n TRouteMatch = RouteMatch<TRouteTree, TRouteId, TReturnIntersection>,\n T = TRouteMatch[],\n>(opts?: {\n select?: (matches: TRouteMatch[]) => T\n experimental_returnIntersection?: TReturnIntersection\n}): T {\n const contextMatchId = React.useContext(matchContext)\n\n return useMatches({\n select: (matches) => {\n matches = matches.slice(\n 0,\n matches.findIndex((d) => d.id === contextMatchId),\n )\n return opts?.select\n ? opts.select(matches as TRouteMatch[])\n : (matches as T)\n },\n })\n}\n\nexport function useChildMatches<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'],\n TReturnIntersection extends boolean = false,\n TRouteMatch = RouteMatch<TRouteTree, TRouteId, TReturnIntersection>,\n T = TRouteMatch[],\n>(opts?: {\n select?: (matches: TRouteMatch[]) => T\n experimental_returnIntersection?: TReturnIntersection\n}): T {\n const contextMatchId = React.useContext(matchContext)\n\n return useMatches({\n select: (matches) => {\n matches = matches.slice(\n matches.findIndex((d) => d.id === contextMatchId) + 1,\n )\n return opts?.select\n ? opts.select(matches as TRouteMatch[])\n : (matches as T)\n },\n })\n}\n\nexport function useLoaderDeps<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = Required<TRouteMatch>['loaderDeps'],\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TSelected {\n return useMatch({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s?.loaderDeps)\n : s?.loaderDeps\n },\n })\n}\n\nexport function useLoaderData<\n TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],\n TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>,\n TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<\n TRouteTree,\n TFrom\n >,\n TSelected = Required<TRouteMatch>['loaderData'],\n>(\n opts: StrictOrFrom<TFrom> & {\n select?: (match: TRouteMatch) => TSelected\n },\n): TSelected {\n return useMatch({\n ...opts,\n select: (s) => {\n return typeof opts.select === 'function'\n ? opts.select(s?.loaderData)\n : s?.loaderData\n },\n })\n}\n\nexport function isServerSideError(error: unknown): error is {\n __isServerError: true\n data: Record<string, any>\n} {\n if (!(typeof error === 'object' && error && 'data' in error)) return false\n if (!('__isServerError' in error && error.__isServerError)) return false\n if (!(typeof error.data === 'object' && error.data)) return false\n\n return error.__isServerError === true\n}\n\nexport function defaultDeserializeError(serializedData: Record<string, any>) {\n if ('name' in serializedData && 'message' in serializedData) {\n const error = new Error(serializedData.message)\n error.name = serializedData.name\n return error\n }\n\n return serializedData.data\n}\n"],"names":["React","useRouter","useRouterState","jsx","CatchBoundary","ErrorComponent","Fragment","_a","CatchNotFound","isNotFound","pick","isRedirect","isServer","Outlet","DefaultGlobalNotFound"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Matches.cjs","sources":["../../src/Matches.tsx"],"sourcesContent":["import * as React from 'react'\nimport warning from 'tiny-warning'\nimport { CatchBoundary, ErrorComponent } from './CatchBoundary'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { Transitioner } from './Transitioner'\nimport { matchContext } from './matchContext'\nimport { Match } from './Match'\nimport { SafeFragment } from './SafeFragment'\nimport type {\n StructuralSharingOption,\n ValidateSelected,\n} from './structuralSharing'\nimport type { ReactNode } from './route'\nimport type {\n AnyRouter,\n DeepPartial,\n MakeOptionalPathParams,\n MakeOptionalSearchParams,\n MakeRouteMatchUnion,\n MaskOptions,\n MatchRouteOptions,\n NoInfer,\n RegisteredRouter,\n ResolveRelativePath,\n ResolveRoute,\n RouteByPath,\n RouterState,\n ToSubOptionsProps,\n} from '@tanstack/router-core'\n\ndeclare module '@tanstack/router-core' {\n export interface RouteMatchExtensions {\n meta?: Array<React.JSX.IntrinsicElements['meta'] | undefined>\n links?: Array<React.JSX.IntrinsicElements['link'] | undefined>\n scripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>\n headScripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>\n }\n}\n\nexport function Matches() {\n const router = useRouter()\n\n const pendingElement = router.options.defaultPendingComponent ? (\n <router.options.defaultPendingComponent />\n ) : null\n\n // Do not render a root Suspense during SSR or hydrating from SSR\n const ResolvedSuspense =\n router.isServer || (typeof document !== 'undefined' && router.clientSsr)\n ? SafeFragment\n : React.Suspense\n\n const inner = (\n <ResolvedSuspense fallback={pendingElement}>\n <Transitioner />\n <MatchesInner />\n </ResolvedSuspense>\n )\n\n return router.options.InnerWrap ? (\n <router.options.InnerWrap>{inner}</router.options.InnerWrap>\n ) : (\n inner\n )\n}\n\nfunction MatchesInner() {\n const matchId = useRouterState({\n select: (s) => {\n return s.matches[0]?.id\n },\n })\n\n const resetKey = useRouterState({\n select: (s) => s.loadedAt,\n })\n\n return (\n <matchContext.Provider value={matchId}>\n <CatchBoundary\n getResetKey={() => resetKey}\n errorComponent={ErrorComponent}\n onCatch={(error) => {\n warning(\n false,\n `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`,\n )\n warning(false, error.message || error.toString())\n }}\n >\n {matchId ? <Match matchId={matchId} /> : null}\n </CatchBoundary>\n </matchContext.Provider>\n )\n}\n\nexport type UseMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = ToSubOptionsProps<TRouter, TFrom, TTo> &\n DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> &\n DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> &\n MaskOptions<TRouter, TMaskFrom, TMaskTo> &\n MatchRouteOptions\n\nexport function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>() {\n const router = useRouter()\n\n useRouterState({\n select: (s) => [s.location.href, s.resolvedLocation?.href, s.status],\n structuralSharing: true as any,\n })\n\n return React.useCallback(\n <\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 >(\n opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): false | ResolveRoute<TRouter, TFrom, TTo>['types']['allParams'] => {\n const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts\n\n return router.matchRoute(rest as any, {\n pending,\n caseSensitive,\n fuzzy,\n includeSearch,\n })\n },\n [router],\n )\n}\n\nexport type MakeMatchRouteOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = undefined,\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '',\n> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | ((\n params?: RouteByPath<\n TRouter['routeTree'],\n ResolveRelativePath<TFrom, NoInfer<TTo>>\n >['types']['allParams'],\n ) => ReactNode)\n | React.ReactNode\n}\n\nexport function MatchRoute<\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: MakeMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): any {\n const matchRoute = useMatchRoute()\n const params = matchRoute(props as any) as boolean\n\n if (typeof props.children === 'function') {\n return (props.children as any)(params)\n }\n\n return params ? props.children : null\n}\n\nexport interface UseMatchesBaseOptions<\n TRouter extends AnyRouter,\n TSelected,\n TStructuralSharing,\n> {\n select?: (\n matches: Array<MakeRouteMatchUnion<TRouter>>,\n ) => ValidateSelected<TRouter, TSelected, TStructuralSharing>\n}\n\nexport type UseMatchesResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected\n\nexport function useMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected, TStructuralSharing> &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n): UseMatchesResult<TRouter, TSelected> {\n return useRouterState({\n select: (state: RouterState<TRouter['routeTree']>) => {\n const matches = state.matches\n return opts?.select\n ? opts.select(matches as Array<MakeRouteMatchUnion<TRouter>>)\n : matches\n },\n structuralSharing: opts?.structuralSharing,\n } as any) as UseMatchesResult<TRouter, TSelected>\n}\n\nexport function useParentMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected, TStructuralSharing> &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n): UseMatchesResult<TRouter, TSelected> {\n const contextMatchId = React.useContext(matchContext)\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n 0,\n matches.findIndex((d) => d.id === contextMatchId),\n )\n return opts?.select ? opts.select(matches) : matches\n },\n structuralSharing: opts?.structuralSharing,\n } as any)\n}\n\nexport function useChildMatches<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n TStructuralSharing extends boolean = boolean,\n>(\n opts?: UseMatchesBaseOptions<TRouter, TSelected, TStructuralSharing> &\n StructuralSharingOption<TRouter, TSelected, TStructuralSharing>,\n): UseMatchesResult<TRouter, TSelected> {\n const contextMatchId = React.useContext(matchContext)\n\n return useMatches({\n select: (matches: Array<MakeRouteMatchUnion<TRouter>>) => {\n matches = matches.slice(\n matches.findIndex((d) => d.id === contextMatchId) + 1,\n )\n return opts?.select ? opts.select(matches) : matches\n },\n structuralSharing: opts?.structuralSharing,\n } as any)\n}\n"],"names":["useRouter","SafeFragment","React","jsxs","jsx","Transitioner","useRouterState","matchContext","CatchBoundary","ErrorComponent","Match"],"mappings":"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"}
|
package/dist/cjs/Matches.d.cts
CHANGED
|
@@ -1,86 +1,26 @@
|
|
|
1
|
+
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.cjs';
|
|
2
|
+
import { ReactNode } from './route.cjs';
|
|
3
|
+
import { AnyRouter, DeepPartial, MakeOptionalPathParams, MakeOptionalSearchParams, MakeRouteMatchUnion, MaskOptions, MatchRouteOptions, NoInfer, RegisteredRouter, ResolveRelativePath, ResolveRoute, RouteByPath, ToSubOptionsProps } from '@tanstack/router-core';
|
|
1
4
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
id: string;
|
|
10
|
-
routeId: TRouteId;
|
|
11
|
-
pathname: string;
|
|
12
|
-
params: TReturnIntersection extends false ? RouteById<TRouteTree, TRouteId>['types']['allParams'] : Expand<Partial<AllParams<TRouteTree>>>;
|
|
13
|
-
status: 'pending' | 'success' | 'error' | 'redirected' | 'notFound';
|
|
14
|
-
isFetching: boolean;
|
|
15
|
-
showPending: boolean;
|
|
16
|
-
error: unknown;
|
|
17
|
-
paramsError: unknown;
|
|
18
|
-
searchError: unknown;
|
|
19
|
-
updatedAt: number;
|
|
20
|
-
loadPromise?: Promise<void>;
|
|
21
|
-
loaderData?: RouteById<TRouteTree, TRouteId>['types']['loaderData'];
|
|
22
|
-
routeContext: RouteById<TRouteTree, TRouteId>['types']['routeContext'];
|
|
23
|
-
context: RouteById<TRouteTree, TRouteId>['types']['allContext'];
|
|
24
|
-
search: TReturnIntersection extends false ? Exclude<RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema'], RootSearchSchema> : Expand<Partial<Omit<FullSearchSchema<TRouteTree>, keyof RootSearchSchema>>>;
|
|
25
|
-
fetchCount: number;
|
|
26
|
-
abortController: AbortController;
|
|
27
|
-
cause: 'preload' | 'enter' | 'stay';
|
|
28
|
-
loaderDeps: RouteById<TRouteTree, TRouteId>['types']['loaderDeps'];
|
|
29
|
-
preload: boolean;
|
|
30
|
-
invalid: boolean;
|
|
31
|
-
pendingPromise?: Promise<void>;
|
|
32
|
-
meta?: JSX.IntrinsicElements['meta'][];
|
|
33
|
-
links?: JSX.IntrinsicElements['link'][];
|
|
34
|
-
scripts?: JSX.IntrinsicElements['script'][];
|
|
35
|
-
headers?: Record<string, string>;
|
|
36
|
-
globalNotFound?: boolean;
|
|
37
|
-
staticData: StaticDataRouteOption;
|
|
5
|
+
declare module '@tanstack/router-core' {
|
|
6
|
+
interface RouteMatchExtensions {
|
|
7
|
+
meta?: Array<React.JSX.IntrinsicElements['meta'] | undefined>;
|
|
8
|
+
links?: Array<React.JSX.IntrinsicElements['link'] | undefined>;
|
|
9
|
+
scripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>;
|
|
10
|
+
headScripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>;
|
|
11
|
+
}
|
|
38
12
|
}
|
|
39
|
-
export
|
|
40
|
-
export
|
|
41
|
-
export declare function
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
export declare const Outlet: React.NamedExoticComponent<object>;
|
|
45
|
-
export interface MatchRouteOptions {
|
|
46
|
-
pending?: boolean;
|
|
47
|
-
caseSensitive?: boolean;
|
|
48
|
-
includeSearch?: boolean;
|
|
49
|
-
fuzzy?: boolean;
|
|
50
|
-
}
|
|
51
|
-
export type UseMatchRouteOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = '', Options extends ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> = ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>, RelaxedOptions = Omit<Options, 'search' | 'params'> & DeepPartial<Pick<Options, 'search' | 'params'>>> = RelaxedOptions & MatchRouteOptions;
|
|
52
|
-
export declare function useMatchRoute<TRouteTree extends AnyRoute = RegisteredRouter['routeTree']>(): <TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>, TTo extends string = "", TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = "", TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>>(opts: UseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo, ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>, Omit<ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>, "search" | "params"> & {
|
|
53
|
-
search?: DeepPartial<ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>["search"]> | undefined;
|
|
54
|
-
params?: DeepPartial<ToOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>["params"]> | undefined;
|
|
55
|
-
}>) => false | RouteById<TRouteTree, TResolved>["types"]["allParams"];
|
|
56
|
-
export type MakeMatchRouteOptions<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = ''> = UseMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
57
|
-
children?: ((params?: RouteByPath<TRouteTree, ResolveRelativePath<TFrom, NoInfer<TTo>>>['types']['allParams']) => ReactNode) | React.ReactNode;
|
|
58
|
-
};
|
|
59
|
-
export declare function MatchRoute<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RoutePaths<TRouteTree> = RoutePaths<TRouteTree>, TTo extends string = '', TMaskFrom extends RoutePaths<TRouteTree> = TFrom, TMaskTo extends string = ''>(props: MakeMatchRouteOptions<TRouteTree, TFrom, TTo, TMaskFrom, TMaskTo>): any;
|
|
60
|
-
export declare function getRenderedMatches<TRouteTree extends AnyRoute = RegisteredRouter['routeTree']>(state: RouterState<TRouteTree>): RouteMatch<TRouteTree, ParseRoute<TRouteTree, TRouteTree>["id"], false>[];
|
|
61
|
-
export declare function useMatch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TReturnIntersection extends boolean = false, TRouteMatchState = RouteMatch<TRouteTree, TFrom, TReturnIntersection>, TSelected = TRouteMatchState>(opts: StrictOrFrom<TFrom, TReturnIntersection> & {
|
|
62
|
-
select?: (match: TRouteMatchState) => TSelected;
|
|
63
|
-
}): TSelected;
|
|
64
|
-
export declare function useMatches<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'], TReturnIntersection extends boolean = false, TRouteMatch = RouteMatch<TRouteTree, TRouteId, TReturnIntersection>, T = TRouteMatch[]>(opts?: {
|
|
65
|
-
select?: (matches: TRouteMatch[]) => T;
|
|
66
|
-
experimental_returnIntersection?: TReturnIntersection;
|
|
67
|
-
}): T;
|
|
68
|
-
export declare function useParentMatches<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'], TReturnIntersection extends boolean = false, TRouteMatch = RouteMatch<TRouteTree, TRouteId, TReturnIntersection>, T = TRouteMatch[]>(opts?: {
|
|
69
|
-
select?: (matches: TRouteMatch[]) => T;
|
|
70
|
-
experimental_returnIntersection?: TReturnIntersection;
|
|
71
|
-
}): T;
|
|
72
|
-
export declare function useChildMatches<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TRouteId extends RouteIds<TRouteTree> = ParseRoute<TRouteTree>['id'], TReturnIntersection extends boolean = false, TRouteMatch = RouteMatch<TRouteTree, TRouteId, TReturnIntersection>, T = TRouteMatch[]>(opts?: {
|
|
73
|
-
select?: (matches: TRouteMatch[]) => T;
|
|
74
|
-
experimental_returnIntersection?: TReturnIntersection;
|
|
75
|
-
}): T;
|
|
76
|
-
export declare function useLoaderDeps<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<TRouteTree, TFrom>, TSelected = Required<TRouteMatch>['loaderDeps']>(opts: StrictOrFrom<TFrom> & {
|
|
77
|
-
select?: (match: TRouteMatch) => TSelected;
|
|
78
|
-
}): TSelected;
|
|
79
|
-
export declare function useLoaderData<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TFrom extends RouteIds<TRouteTree> = RouteIds<TRouteTree>, TRouteMatch extends RouteMatch<TRouteTree, TFrom> = RouteMatch<TRouteTree, TFrom>, TSelected = Required<TRouteMatch>['loaderData']>(opts: StrictOrFrom<TFrom> & {
|
|
80
|
-
select?: (match: TRouteMatch) => TSelected;
|
|
81
|
-
}): TSelected;
|
|
82
|
-
export declare function isServerSideError(error: unknown): error is {
|
|
83
|
-
__isServerError: true;
|
|
84
|
-
data: Record<string, any>;
|
|
13
|
+
export declare function Matches(): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export type UseMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = ToSubOptionsProps<TRouter, TFrom, TTo> & DeepPartial<MakeOptionalSearchParams<TRouter, TFrom, TTo>> & DeepPartial<MakeOptionalPathParams<TRouter, TFrom, TTo>> & MaskOptions<TRouter, TMaskFrom, TMaskTo> & MatchRouteOptions;
|
|
15
|
+
export declare function useMatchRoute<TRouter extends AnyRouter = RegisteredRouter>(): <const TFrom extends string = string, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = "">(opts: UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => false | ResolveRoute<TRouter, TFrom, TTo>["types"]["allParams"];
|
|
16
|
+
export type MakeMatchRouteOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = undefined, TMaskFrom extends string = TFrom, TMaskTo extends string = ''> = UseMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & {
|
|
17
|
+
children?: ((params?: RouteByPath<TRouter['routeTree'], ResolveRelativePath<TFrom, NoInfer<TTo>>>['types']['allParams']) => ReactNode) | React.ReactNode;
|
|
85
18
|
};
|
|
86
|
-
export declare function
|
|
19
|
+
export declare function MatchRoute<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: MakeMatchRouteOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): any;
|
|
20
|
+
export interface UseMatchesBaseOptions<TRouter extends AnyRouter, TSelected, TStructuralSharing> {
|
|
21
|
+
select?: (matches: Array<MakeRouteMatchUnion<TRouter>>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
22
|
+
}
|
|
23
|
+
export type UseMatchesResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected;
|
|
24
|
+
export declare function useMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseMatchesBaseOptions<TRouter, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>): UseMatchesResult<TRouter, TSelected>;
|
|
25
|
+
export declare function useParentMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseMatchesBaseOptions<TRouter, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>): UseMatchesResult<TRouter, TSelected>;
|
|
26
|
+
export declare function useChildMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseMatchesBaseOptions<TRouter, TSelected, TStructuralSharing> & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>): UseMatchesResult<TRouter, TSelected>;
|