@tanstack/solid-router 1.111.3 → 1.111.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/source/Asset.d.ts +2 -0
- package/dist/source/Asset.jsx +22 -0
- package/dist/source/Asset.jsx.map +1 -0
- package/dist/source/CatchBoundary.d.ts +11 -0
- package/dist/source/CatchBoundary.jsx +43 -0
- package/dist/source/CatchBoundary.jsx.map +1 -0
- package/dist/source/HeadContent.d.ts +8 -0
- package/dist/source/HeadContent.jsx +125 -0
- package/dist/source/HeadContent.jsx.map +1 -0
- package/dist/source/Match.d.ts +8 -0
- package/dist/source/Match.jsx +256 -0
- package/dist/source/Match.jsx.map +1 -0
- package/dist/source/Matches.d.ts +67 -0
- package/dist/source/Matches.jsx +103 -0
- package/dist/source/Matches.jsx.map +1 -0
- package/dist/source/RouterProvider.d.ts +10 -0
- package/dist/source/RouterProvider.jsx +27 -0
- package/dist/source/RouterProvider.jsx.map +1 -0
- package/dist/source/SafeFragment.d.ts +1 -0
- package/dist/source/SafeFragment.jsx +4 -0
- package/dist/source/SafeFragment.jsx.map +1 -0
- package/dist/source/ScriptOnce.d.ts +5 -0
- package/dist/source/ScriptOnce.jsx +17 -0
- package/dist/source/ScriptOnce.jsx.map +1 -0
- package/dist/source/Scripts.d.ts +1 -0
- package/dist/source/Scripts.jsx +49 -0
- package/dist/source/Scripts.jsx.map +1 -0
- package/dist/source/ScrollRestoration.d.ts +15 -0
- package/dist/source/ScrollRestoration.jsx +36 -0
- package/dist/source/ScrollRestoration.jsx.map +1 -0
- package/dist/source/Transitioner.d.ts +1 -0
- package/dist/source/Transitioner.jsx +112 -0
- package/dist/source/Transitioner.jsx.map +1 -0
- package/dist/source/awaited.d.ts +11 -0
- package/dist/source/awaited.jsx +24 -0
- package/dist/source/awaited.jsx.map +1 -0
- package/dist/source/fileRoute.d.ts +46 -0
- package/dist/source/fileRoute.js +85 -0
- package/dist/source/fileRoute.js.map +1 -0
- package/dist/source/history.d.ts +8 -0
- package/dist/source/history.js +2 -0
- package/dist/source/history.js.map +1 -0
- package/dist/source/index.d.ts +52 -0
- package/dist/source/index.jsx +41 -0
- package/dist/source/index.jsx.map +1 -0
- package/dist/source/lazyRouteComponent.d.ts +7 -0
- package/dist/source/lazyRouteComponent.jsx +82 -0
- package/dist/source/lazyRouteComponent.jsx.map +1 -0
- package/dist/source/link.d.ts +41 -0
- package/dist/source/link.jsx +339 -0
- package/dist/source/link.jsx.map +1 -0
- package/dist/source/matchContext.d.ts +3 -0
- package/dist/source/matchContext.jsx +5 -0
- package/dist/source/matchContext.jsx.map +1 -0
- package/dist/source/not-found.d.ts +27 -0
- package/dist/source/not-found.jsx +39 -0
- package/dist/source/not-found.jsx.map +1 -0
- package/dist/source/redirects.d.ts +19 -0
- package/dist/source/redirects.js +25 -0
- package/dist/source/redirects.js.map +1 -0
- package/dist/source/renderRouteNotFound.d.ts +3 -0
- package/dist/source/renderRouteNotFound.jsx +15 -0
- package/dist/source/renderRouteNotFound.jsx.map +1 -0
- package/dist/source/route.d.ts +257 -0
- package/dist/source/route.js +240 -0
- package/dist/source/route.js.map +1 -0
- package/dist/source/router.d.ts +550 -0
- package/dist/source/router.js +1802 -0
- package/dist/source/router.js.map +1 -0
- package/dist/source/routerContext.d.ts +8 -0
- package/dist/source/routerContext.jsx +13 -0
- package/dist/source/routerContext.jsx.map +1 -0
- package/dist/source/scroll-restoration.d.ts +29 -0
- package/dist/source/scroll-restoration.jsx +244 -0
- package/dist/source/scroll-restoration.jsx.map +1 -0
- package/dist/source/typePrimitives.d.ts +70 -0
- package/dist/source/typePrimitives.js +2 -0
- package/dist/source/typePrimitives.js.map +1 -0
- package/dist/source/useBlocker.d.ts +68 -0
- package/dist/source/useBlocker.jsx +136 -0
- package/dist/source/useBlocker.jsx.map +1 -0
- package/dist/source/useCanGoBack.d.ts +1 -0
- package/dist/source/useCanGoBack.js +5 -0
- package/dist/source/useCanGoBack.js.map +1 -0
- package/dist/source/useLoaderData.d.ts +12 -0
- package/dist/source/useLoaderData.jsx +11 -0
- package/dist/source/useLoaderData.jsx.map +1 -0
- package/dist/source/useLoaderDeps.d.ts +11 -0
- package/dist/source/useLoaderDeps.jsx +11 -0
- package/dist/source/useLoaderDeps.jsx.map +1 -0
- package/dist/source/useLocation.d.ts +7 -0
- package/dist/source/useLocation.jsx +7 -0
- package/dist/source/useLocation.jsx.map +1 -0
- package/dist/source/useMatch.d.ts +14 -0
- package/dist/source/useMatch.jsx +19 -0
- package/dist/source/useMatch.jsx.map +1 -0
- package/dist/source/useNavigate.d.ts +7 -0
- package/dist/source/useNavigate.jsx +32 -0
- package/dist/source/useNavigate.jsx.map +1 -0
- package/dist/source/useParams.d.ts +14 -0
- package/dist/source/useParams.jsx +12 -0
- package/dist/source/useParams.jsx.map +1 -0
- package/dist/source/useRouteContext.d.ts +12 -0
- package/dist/source/useRouteContext.js +8 -0
- package/dist/source/useRouteContext.js.map +1 -0
- package/dist/source/useRouter.d.ts +4 -0
- package/dist/source/useRouter.jsx +9 -0
- package/dist/source/useRouter.jsx.map +1 -0
- package/dist/source/useRouterState.d.ts +8 -0
- package/dist/source/useRouterState.jsx +14 -0
- package/dist/source/useRouterState.jsx.map +1 -0
- package/dist/source/useSearch.d.ts +14 -0
- package/dist/source/useSearch.jsx +12 -0
- package/dist/source/useSearch.jsx.map +1 -0
- package/dist/source/utils.d.ts +43 -0
- package/dist/source/utils.js +59 -0
- package/dist/source/utils.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function Asset({ tag, attrs, children }) {
|
|
2
|
+
switch (tag) {
|
|
3
|
+
case 'title':
|
|
4
|
+
return <title {...attrs}>{children}</title>;
|
|
5
|
+
case 'meta':
|
|
6
|
+
return <meta {...attrs}/>;
|
|
7
|
+
case 'link':
|
|
8
|
+
return <link {...attrs}/>;
|
|
9
|
+
case 'style':
|
|
10
|
+
return <style {...attrs} innerHTML={children}/>;
|
|
11
|
+
case 'script':
|
|
12
|
+
if (attrs && attrs.src) {
|
|
13
|
+
return <script {...attrs}/>;
|
|
14
|
+
}
|
|
15
|
+
if (typeof children === 'string')
|
|
16
|
+
return <script {...attrs} innerHTML={children}/>;
|
|
17
|
+
return null;
|
|
18
|
+
default:
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=Asset.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"AAEA,MAAM,UAAU,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAC9D,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;QAC7C,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;QAC5B,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;QAC5B,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAA;QAClD,KAAK,QAAQ;YACX,IAAK,KAAa,IAAK,KAAa,CAAC,GAAG,EAAE,CAAC;gBACzC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;YAC9B,CAAC;YACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAA;YACnD,OAAO,IAAI,CAAA;QACb;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import type { ErrorRouteComponent } from './route';
|
|
3
|
+
export declare function CatchBoundary(props: {
|
|
4
|
+
getResetKey: () => number | string;
|
|
5
|
+
children: Solid.JSX.Element;
|
|
6
|
+
errorComponent?: ErrorRouteComponent;
|
|
7
|
+
onCatch?: (error: Error) => void;
|
|
8
|
+
} & Solid.ParentProps): Solid.JSX.Element;
|
|
9
|
+
export declare function ErrorComponent({ error }: {
|
|
10
|
+
error: any;
|
|
11
|
+
}): Solid.JSX.Element;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import { Dynamic } from 'solid-js/web';
|
|
3
|
+
export function CatchBoundary(props) {
|
|
4
|
+
return (<Solid.ErrorBoundary fallback={(error, reset) => {
|
|
5
|
+
props.onCatch?.(error);
|
|
6
|
+
Solid.createEffect(Solid.on([props.getResetKey], () => reset(), { defer: true }));
|
|
7
|
+
return (<Dynamic component={props.errorComponent ?? ErrorComponent} error={error} reset={reset}/>);
|
|
8
|
+
}}>
|
|
9
|
+
{props.children}
|
|
10
|
+
</Solid.ErrorBoundary>);
|
|
11
|
+
}
|
|
12
|
+
export function ErrorComponent({ error }) {
|
|
13
|
+
const [show, setShow] = Solid.createSignal(process.env.NODE_ENV !== 'production');
|
|
14
|
+
return (<div style={{ padding: '.5rem', 'max-width': '100%' }}>
|
|
15
|
+
<div style={{ display: 'flex', 'align-items': 'center', gap: '.5rem' }}>
|
|
16
|
+
<strong style={{ 'font-size': '1rem' }}>Something went wrong!</strong>
|
|
17
|
+
<button style={{
|
|
18
|
+
appearance: 'none',
|
|
19
|
+
'font-size': '.6em',
|
|
20
|
+
border: '1px solid currentColor',
|
|
21
|
+
padding: '.1rem .2rem',
|
|
22
|
+
'font-weight': 'bold',
|
|
23
|
+
'border-radius': '.25rem',
|
|
24
|
+
}} onClick={() => setShow((d) => !d)}>
|
|
25
|
+
{show() ? 'Hide Error' : 'Show Error'}
|
|
26
|
+
</button>
|
|
27
|
+
</div>
|
|
28
|
+
<div style={{ height: '.25rem' }}/>
|
|
29
|
+
{show() ? (<div>
|
|
30
|
+
<pre style={{
|
|
31
|
+
'font-size': '.7em',
|
|
32
|
+
border: '1px solid red',
|
|
33
|
+
'border-radius': '.25rem',
|
|
34
|
+
padding: '.3rem',
|
|
35
|
+
color: 'red',
|
|
36
|
+
overflow: 'auto',
|
|
37
|
+
}}>
|
|
38
|
+
{error.message ? <code>{error.message}</code> : null}
|
|
39
|
+
</pre>
|
|
40
|
+
</div>) : null}
|
|
41
|
+
</div>);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=CatchBoundary.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CatchBoundary.jsx","sourceRoot":"","sources":["../../src/CatchBoundary.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import type { RouterManagedTag } from '@tanstack/router-core';
|
|
3
|
+
export declare const useTags: () => RouterManagedTag[];
|
|
4
|
+
/**
|
|
5
|
+
* @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.
|
|
6
|
+
* It should be rendered in the `<head>` of your document.
|
|
7
|
+
*/
|
|
8
|
+
export declare function HeadContent(): Solid.JSX.Element[];
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import { Asset } from './Asset';
|
|
3
|
+
import { useRouter } from './useRouter';
|
|
4
|
+
import { useRouterState } from './useRouterState';
|
|
5
|
+
export const useTags = () => {
|
|
6
|
+
const router = useRouter();
|
|
7
|
+
const routeMeta = useRouterState({
|
|
8
|
+
select: (state) => {
|
|
9
|
+
return state.matches.map((match) => match.meta).filter(Boolean);
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
const meta = Solid.createMemo(() => {
|
|
13
|
+
const resultMeta = [];
|
|
14
|
+
const metaByAttribute = {};
|
|
15
|
+
let title;
|
|
16
|
+
[...routeMeta()].reverse().forEach((metas) => {
|
|
17
|
+
;
|
|
18
|
+
[...metas].reverse().forEach((m) => {
|
|
19
|
+
if (!m)
|
|
20
|
+
return;
|
|
21
|
+
if (m.title) {
|
|
22
|
+
if (!title) {
|
|
23
|
+
title = {
|
|
24
|
+
tag: 'title',
|
|
25
|
+
children: m.title,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const attribute = m.name ?? m.property;
|
|
31
|
+
if (attribute) {
|
|
32
|
+
if (metaByAttribute[attribute]) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
metaByAttribute[attribute] = true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
resultMeta.push({
|
|
40
|
+
tag: 'meta',
|
|
41
|
+
attrs: {
|
|
42
|
+
...m,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
if (title) {
|
|
49
|
+
resultMeta.push(title);
|
|
50
|
+
}
|
|
51
|
+
resultMeta.reverse();
|
|
52
|
+
return resultMeta;
|
|
53
|
+
}, [routeMeta]);
|
|
54
|
+
const links = useRouterState({
|
|
55
|
+
select: (state) => state.matches
|
|
56
|
+
.map((match) => match.links)
|
|
57
|
+
.filter(Boolean)
|
|
58
|
+
.flat(1)
|
|
59
|
+
.map((link) => ({
|
|
60
|
+
tag: 'link',
|
|
61
|
+
attrs: {
|
|
62
|
+
...link,
|
|
63
|
+
},
|
|
64
|
+
})),
|
|
65
|
+
});
|
|
66
|
+
const preloadMeta = useRouterState({
|
|
67
|
+
select: (state) => {
|
|
68
|
+
const preloadMeta = [];
|
|
69
|
+
state.matches
|
|
70
|
+
.map((match) => router.looseRoutesById[match.routeId])
|
|
71
|
+
.forEach((route) => router.ssr?.manifest?.routes[route.id]?.preloads
|
|
72
|
+
?.filter(Boolean)
|
|
73
|
+
.forEach((preload) => {
|
|
74
|
+
preloadMeta.push({
|
|
75
|
+
tag: 'link',
|
|
76
|
+
attrs: {
|
|
77
|
+
rel: 'modulepreload',
|
|
78
|
+
href: preload,
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}));
|
|
82
|
+
return preloadMeta;
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
const headScripts = useRouterState({
|
|
86
|
+
select: (state) => state.matches
|
|
87
|
+
.map((match) => match.headScripts)
|
|
88
|
+
.flat(1)
|
|
89
|
+
.filter(Boolean).map(({ children, ...script }) => ({
|
|
90
|
+
tag: 'script',
|
|
91
|
+
attrs: {
|
|
92
|
+
...script,
|
|
93
|
+
},
|
|
94
|
+
children,
|
|
95
|
+
})),
|
|
96
|
+
});
|
|
97
|
+
return uniqBy([
|
|
98
|
+
...meta(),
|
|
99
|
+
...preloadMeta(),
|
|
100
|
+
...links(),
|
|
101
|
+
...headScripts(),
|
|
102
|
+
], (d) => {
|
|
103
|
+
return JSON.stringify(d);
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.
|
|
108
|
+
* It should be rendered in the `<head>` of your document.
|
|
109
|
+
*/
|
|
110
|
+
export function HeadContent() {
|
|
111
|
+
const tags = useTags();
|
|
112
|
+
return tags.map((tag) => <Asset {...tag}/>);
|
|
113
|
+
}
|
|
114
|
+
function uniqBy(arr, fn) {
|
|
115
|
+
const seen = new Set();
|
|
116
|
+
return arr.filter((item) => {
|
|
117
|
+
const key = fn(item);
|
|
118
|
+
if (seen.has(key)) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
seen.add(key);
|
|
122
|
+
return true;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=HeadContent.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeadContent.jsx","sourceRoot":"","sources":["../../src/HeadContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import invariant from 'tiny-invariant';
|
|
3
|
+
import warning from 'tiny-warning';
|
|
4
|
+
import { createControlledPromise, getLocationChangeInfo, pick, rootRouteId, } from '@tanstack/router-core';
|
|
5
|
+
import { Dynamic } from 'solid-js/web';
|
|
6
|
+
import { CatchBoundary, ErrorComponent } from './CatchBoundary';
|
|
7
|
+
import { useRouterState } from './useRouterState';
|
|
8
|
+
import { useRouter } from './useRouter';
|
|
9
|
+
import { CatchNotFound, isNotFound } from './not-found';
|
|
10
|
+
import { isRedirect } from './redirects';
|
|
11
|
+
import { matchContext } from './matchContext';
|
|
12
|
+
import { SafeFragment } from './SafeFragment';
|
|
13
|
+
import { renderRouteNotFound } from './renderRouteNotFound';
|
|
14
|
+
import { ScrollRestoration } from './scroll-restoration';
|
|
15
|
+
export const Match = (props) => {
|
|
16
|
+
const router = useRouter();
|
|
17
|
+
const routeId = useRouterState({
|
|
18
|
+
select: (s) => {
|
|
19
|
+
return s.matches.find((d) => d.id === props.matchId)?.routeId;
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
invariant(routeId, `Could not find routeId for matchId "${props.matchId}". Please file an issue!`);
|
|
23
|
+
const route = () => router.routesById[routeId()];
|
|
24
|
+
const PendingComponent = () => route().options.pendingComponent ?? router.options.defaultPendingComponent;
|
|
25
|
+
const routeErrorComponent = () => route().options.errorComponent ?? router.options.defaultErrorComponent;
|
|
26
|
+
const routeOnCatch = () => route().options.onCatch ?? router.options.defaultOnCatch;
|
|
27
|
+
const routeNotFoundComponent = () => route().isRoot
|
|
28
|
+
? // If it's the root route, use the globalNotFound option, with fallback to the notFoundRoute's component
|
|
29
|
+
(route().options.notFoundComponent ??
|
|
30
|
+
router.options.notFoundRoute?.options.component)
|
|
31
|
+
: route().options.notFoundComponent;
|
|
32
|
+
const ResolvedSuspenseBoundary = () =>
|
|
33
|
+
// If we're on the root route, allow forcefully wrapping in suspense
|
|
34
|
+
(!route().isRoot || route().options.wrapInSuspense) &&
|
|
35
|
+
(route().options.wrapInSuspense ??
|
|
36
|
+
PendingComponent() ??
|
|
37
|
+
route().options.errorComponent?.preload)
|
|
38
|
+
? Solid.Suspense
|
|
39
|
+
: SafeFragment;
|
|
40
|
+
const ResolvedCatchBoundary = () => routeErrorComponent() ? CatchBoundary : SafeFragment;
|
|
41
|
+
const ResolvedNotFoundBoundary = () => routeNotFoundComponent() ? CatchNotFound : SafeFragment;
|
|
42
|
+
const resetKey = useRouterState({
|
|
43
|
+
select: (s) => s.loadedAt,
|
|
44
|
+
});
|
|
45
|
+
const parentRouteId = useRouterState({
|
|
46
|
+
select: (s) => {
|
|
47
|
+
const index = s.matches.findIndex((d) => d.id === props.matchId);
|
|
48
|
+
return s.matches[index - 1]?.routeId;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
return (<>
|
|
52
|
+
<matchContext.Provider value={() => props.matchId}>
|
|
53
|
+
<Dynamic component={ResolvedSuspenseBoundary()} fallback={<Dynamic component={PendingComponent()}/>}>
|
|
54
|
+
<Dynamic component={ResolvedCatchBoundary()} getResetKey={() => resetKey()} errorComponent={routeErrorComponent() || ErrorComponent} onCatch={(error) => {
|
|
55
|
+
// Forward not found errors (we don't want to show the error component for these)
|
|
56
|
+
if (isNotFound(error))
|
|
57
|
+
throw error;
|
|
58
|
+
warning(false, `Error in route match: ${props.matchId}`);
|
|
59
|
+
routeOnCatch()?.(error);
|
|
60
|
+
}}>
|
|
61
|
+
<Dynamic component={ResolvedNotFoundBoundary()} fallback={(error) => {
|
|
62
|
+
// If the current not found handler doesn't exist or it has a
|
|
63
|
+
// route ID which doesn't match the current route, rethrow the error
|
|
64
|
+
if (!routeNotFoundComponent() ||
|
|
65
|
+
(error.routeId && error.routeId !== routeId) ||
|
|
66
|
+
(!error.routeId && !route().isRoot))
|
|
67
|
+
throw error;
|
|
68
|
+
return (<Dynamic component={routeNotFoundComponent()} {...error}/>);
|
|
69
|
+
}}>
|
|
70
|
+
<MatchInner matchId={props.matchId}/>
|
|
71
|
+
</Dynamic>
|
|
72
|
+
</Dynamic>
|
|
73
|
+
</Dynamic>
|
|
74
|
+
</matchContext.Provider>
|
|
75
|
+
|
|
76
|
+
{parentRouteId() === rootRouteId ? (<>
|
|
77
|
+
<OnRendered />
|
|
78
|
+
<ScrollRestoration />
|
|
79
|
+
</>) : null}
|
|
80
|
+
</>);
|
|
81
|
+
};
|
|
82
|
+
// On Rendered can't happen above the root layout because it actually
|
|
83
|
+
// renders a dummy dom element to track the rendered state of the app.
|
|
84
|
+
// We render a script tag with a key that changes based on the current
|
|
85
|
+
// location state.key. Also, because it's below the root layout, it
|
|
86
|
+
// allows us to fire onRendered events even after a hydration mismatch
|
|
87
|
+
// error that occurred above the root layout (like bad head/link tags,
|
|
88
|
+
// which is common).
|
|
89
|
+
function OnRendered() {
|
|
90
|
+
const router = useRouter();
|
|
91
|
+
const location = useRouterState({
|
|
92
|
+
select: (s) => {
|
|
93
|
+
return s.resolvedLocation?.state.key;
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
Solid.createEffect(Solid.on([location], () => {
|
|
97
|
+
router.emit({
|
|
98
|
+
type: 'onRendered',
|
|
99
|
+
...getLocationChangeInfo(router.state),
|
|
100
|
+
});
|
|
101
|
+
}));
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
export const MatchInner = (props) => {
|
|
105
|
+
const router = useRouter();
|
|
106
|
+
// { match, key, routeId } =
|
|
107
|
+
const matchState = useRouterState({
|
|
108
|
+
select: (s) => {
|
|
109
|
+
const matchIndex = s.matches.findIndex((d) => d.id === props.matchId);
|
|
110
|
+
const match = s.matches[matchIndex];
|
|
111
|
+
const routeId = match.routeId;
|
|
112
|
+
const remountFn = router.routesById[routeId].options.remountDeps ??
|
|
113
|
+
router.options.defaultRemountDeps;
|
|
114
|
+
const remountDeps = remountFn?.({
|
|
115
|
+
routeId,
|
|
116
|
+
loaderDeps: match.loaderDeps,
|
|
117
|
+
params: match._strictParams,
|
|
118
|
+
search: match._strictSearch,
|
|
119
|
+
});
|
|
120
|
+
const key = remountDeps ? JSON.stringify(remountDeps) : undefined;
|
|
121
|
+
return {
|
|
122
|
+
key,
|
|
123
|
+
routeId,
|
|
124
|
+
match: pick(match, ['id', 'status', 'error']),
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
const route = () => router.routesById[matchState().routeId];
|
|
129
|
+
// function useChangedDiff(value: any) {
|
|
130
|
+
// const ref = Solid.useRef(value)
|
|
131
|
+
// const changed = ref.current !== value
|
|
132
|
+
// if (changed) {
|
|
133
|
+
// console.log(
|
|
134
|
+
// 'Changed:',
|
|
135
|
+
// value,
|
|
136
|
+
// Object.fromEntries(
|
|
137
|
+
// Object.entries(value).filter(
|
|
138
|
+
// ([key, val]) => val !== ref.current[key],
|
|
139
|
+
// ),
|
|
140
|
+
// ),
|
|
141
|
+
// )
|
|
142
|
+
// }
|
|
143
|
+
// ref.current = value
|
|
144
|
+
// }
|
|
145
|
+
// useChangedDiff(match)
|
|
146
|
+
const match = () => matchState().match;
|
|
147
|
+
const out = () => {
|
|
148
|
+
const Comp = route().options.component ?? router.options.defaultComponent;
|
|
149
|
+
if (Comp) {
|
|
150
|
+
return <Comp />;
|
|
151
|
+
}
|
|
152
|
+
return <Outlet />;
|
|
153
|
+
};
|
|
154
|
+
return (<Solid.Switch>
|
|
155
|
+
<Solid.Match when={match().status === 'notFound'}>
|
|
156
|
+
{(_) => {
|
|
157
|
+
invariant(isNotFound(match().error), 'Expected a notFound error');
|
|
158
|
+
return renderRouteNotFound(router, route(), match().error);
|
|
159
|
+
}}
|
|
160
|
+
</Solid.Match>
|
|
161
|
+
<Solid.Match when={match().status === 'redirected'}>
|
|
162
|
+
{(_) => {
|
|
163
|
+
invariant(isRedirect(match().error), 'Expected a redirect error');
|
|
164
|
+
const [loaderResult] = Solid.createResource(async () => {
|
|
165
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
166
|
+
return router.getMatch(match().id)?.loadPromise;
|
|
167
|
+
});
|
|
168
|
+
return <>{loaderResult()}</>;
|
|
169
|
+
}}
|
|
170
|
+
</Solid.Match>
|
|
171
|
+
<Solid.Match when={match().status === 'error'}>
|
|
172
|
+
{(_) => {
|
|
173
|
+
if (router.isServer) {
|
|
174
|
+
const RouteErrorComponent = (route().options.errorComponent ??
|
|
175
|
+
router.options.defaultErrorComponent) ||
|
|
176
|
+
ErrorComponent;
|
|
177
|
+
return (<RouteErrorComponent error={match().error} info={{
|
|
178
|
+
componentStack: '',
|
|
179
|
+
}}/>);
|
|
180
|
+
}
|
|
181
|
+
throw match().error;
|
|
182
|
+
}}
|
|
183
|
+
</Solid.Match>
|
|
184
|
+
<Solid.Match when={match().status === 'pending'}>
|
|
185
|
+
{(_) => {
|
|
186
|
+
const pendingMinMs = route().options.pendingMinMs ?? router.options.defaultPendingMinMs;
|
|
187
|
+
if (pendingMinMs && !router.getMatch(match().id)?.minPendingPromise) {
|
|
188
|
+
// Create a promise that will resolve after the minPendingMs
|
|
189
|
+
if (!router.isServer) {
|
|
190
|
+
const minPendingPromise = createControlledPromise();
|
|
191
|
+
Promise.resolve().then(() => {
|
|
192
|
+
router.updateMatch(match().id, (prev) => ({
|
|
193
|
+
...prev,
|
|
194
|
+
minPendingPromise,
|
|
195
|
+
}));
|
|
196
|
+
});
|
|
197
|
+
setTimeout(() => {
|
|
198
|
+
minPendingPromise.resolve();
|
|
199
|
+
// We've handled the minPendingPromise, so we can delete it
|
|
200
|
+
router.updateMatch(match().id, (prev) => ({
|
|
201
|
+
...prev,
|
|
202
|
+
minPendingPromise: undefined,
|
|
203
|
+
}));
|
|
204
|
+
}, pendingMinMs);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const [loaderResult] = Solid.createResource(async () => {
|
|
208
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
209
|
+
return router.getMatch(match().id)?.loadPromise;
|
|
210
|
+
});
|
|
211
|
+
return <>{loaderResult()}</>;
|
|
212
|
+
}}
|
|
213
|
+
</Solid.Match>
|
|
214
|
+
<Solid.Match when={match().status === 'success'}>{out()}</Solid.Match>
|
|
215
|
+
</Solid.Switch>);
|
|
216
|
+
};
|
|
217
|
+
export const Outlet = () => {
|
|
218
|
+
const router = useRouter();
|
|
219
|
+
const matchId = Solid.useContext(matchContext);
|
|
220
|
+
const routeId = useRouterState({
|
|
221
|
+
select: (s) => s.matches.find((d) => d.id === matchId())?.routeId,
|
|
222
|
+
});
|
|
223
|
+
const route = () => router.routesById[routeId()];
|
|
224
|
+
const parentGlobalNotFound = useRouterState({
|
|
225
|
+
select: (s) => {
|
|
226
|
+
const matches = s.matches;
|
|
227
|
+
const parentMatch = matches.find((d) => d.id === matchId());
|
|
228
|
+
invariant(parentMatch, `Could not find parent match for matchId "${matchId()}"`);
|
|
229
|
+
return parentMatch.globalNotFound;
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
const childMatchId = useRouterState({
|
|
233
|
+
select: (s) => {
|
|
234
|
+
const matches = s.matches;
|
|
235
|
+
const index = matches.findIndex((d) => d.id === matchId());
|
|
236
|
+
const v = matches[index + 1]?.id;
|
|
237
|
+
return v;
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
return (<Solid.Switch>
|
|
241
|
+
<Solid.Match when={parentGlobalNotFound()}>
|
|
242
|
+
{renderRouteNotFound(router, route(), undefined)}
|
|
243
|
+
</Solid.Match>
|
|
244
|
+
<Solid.Match when={childMatchId()}>
|
|
245
|
+
{(matchId) => {
|
|
246
|
+
// const nextMatch = <Match matchId={matchId()} />
|
|
247
|
+
return (<Solid.Show when={matchId() === rootRouteId} fallback={<Match matchId={matchId()}/>}>
|
|
248
|
+
<Solid.Suspense fallback={<Dynamic component={router.options.defaultPendingComponent}/>}>
|
|
249
|
+
<Match matchId={matchId()}/>
|
|
250
|
+
</Solid.Suspense>
|
|
251
|
+
</Solid.Show>);
|
|
252
|
+
}}
|
|
253
|
+
</Solid.Match>
|
|
254
|
+
</Solid.Switch>);
|
|
255
|
+
};
|
|
256
|
+
//# sourceMappingURL=Match.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Match.jsx","sourceRoot":"","sources":["../../src/Match.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
import type { AnyRoute } from './route';
|
|
3
|
+
import type { AllContext, AllLoaderData, AllParams, ControlledPromise, DeepPartial, FullSearchSchema, MakeOptionalPathParams, MakeOptionalSearchParams, MaskOptions, NoInfer, ParseRoute, ResolveRelativePath, ResolveRoute, RouteById, RouteByPath, RouteIds, StaticDataRouteOption, ToSubOptionsProps } from '@tanstack/router-core';
|
|
4
|
+
import type { AnyRouter, RegisteredRouter } from './router';
|
|
5
|
+
export type MakeRouteMatchFromRoute<TRoute extends AnyRoute> = RouteMatch<TRoute['types']['id'], TRoute['types']['fullPath'], TRoute['types']['allParams'], TRoute['types']['fullSearchSchema'], TRoute['types']['loaderData'], TRoute['types']['allContext'], TRoute['types']['loaderDeps']>;
|
|
6
|
+
export interface RouteMatch<out TRouteId, out TFullPath, out TAllParams, out TFullSearchSchema, out TLoaderData, out TAllContext, out TLoaderDeps> {
|
|
7
|
+
id: string;
|
|
8
|
+
routeId: TRouteId;
|
|
9
|
+
fullPath: TFullPath;
|
|
10
|
+
index: number;
|
|
11
|
+
pathname: string;
|
|
12
|
+
params: TAllParams;
|
|
13
|
+
_strictParams: TAllParams;
|
|
14
|
+
status: 'pending' | 'success' | 'error' | 'redirected' | 'notFound';
|
|
15
|
+
isFetching: false | 'beforeLoad' | 'loader';
|
|
16
|
+
error: unknown;
|
|
17
|
+
paramsError: unknown;
|
|
18
|
+
searchError: unknown;
|
|
19
|
+
updatedAt: number;
|
|
20
|
+
loadPromise?: ControlledPromise<void>;
|
|
21
|
+
beforeLoadPromise?: ControlledPromise<void>;
|
|
22
|
+
loaderPromise?: ControlledPromise<void>;
|
|
23
|
+
loaderData?: TLoaderData;
|
|
24
|
+
__routeContext: Record<string, unknown>;
|
|
25
|
+
__beforeLoadContext: Record<string, unknown>;
|
|
26
|
+
context: TAllContext;
|
|
27
|
+
search: TFullSearchSchema;
|
|
28
|
+
_strictSearch: TFullSearchSchema;
|
|
29
|
+
fetchCount: number;
|
|
30
|
+
abortController: AbortController;
|
|
31
|
+
cause: 'preload' | 'enter' | 'stay';
|
|
32
|
+
loaderDeps: TLoaderDeps;
|
|
33
|
+
preload: boolean;
|
|
34
|
+
invalid: boolean;
|
|
35
|
+
meta?: Array<Solid.JSX.IntrinsicElements['meta'] | undefined>;
|
|
36
|
+
links?: Array<Solid.JSX.IntrinsicElements['link'] | undefined>;
|
|
37
|
+
scripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>;
|
|
38
|
+
headScripts?: Array<Solid.JSX.IntrinsicElements['script'] | undefined>;
|
|
39
|
+
headers?: Record<string, string>;
|
|
40
|
+
globalNotFound?: boolean;
|
|
41
|
+
staticData: StaticDataRouteOption;
|
|
42
|
+
minPendingPromise?: ControlledPromise<void>;
|
|
43
|
+
pendingTimeout?: ReturnType<typeof setTimeout>;
|
|
44
|
+
}
|
|
45
|
+
export type MakeRouteMatch<TRouteTree extends AnyRoute = RegisteredRouter['routeTree'], TRouteId = RouteIds<TRouteTree>, TStrict extends boolean = true> = RouteMatch<TRouteId, RouteById<TRouteTree, TRouteId>['types']['fullPath'], TStrict extends false ? AllParams<TRouteTree> : RouteById<TRouteTree, TRouteId>['types']['allParams'], TStrict extends false ? FullSearchSchema<TRouteTree> : RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema'], TStrict extends false ? AllLoaderData<TRouteTree> : RouteById<TRouteTree, TRouteId>['types']['loaderData'], TStrict extends false ? AllContext<TRouteTree> : RouteById<TRouteTree, TRouteId>['types']['allContext'], RouteById<TRouteTree, TRouteId>['types']['loaderDeps']>;
|
|
46
|
+
export type AnyRouteMatch = RouteMatch<any, any, any, any, any, any, any>;
|
|
47
|
+
export declare function Matches(): Solid.JSX.Element;
|
|
48
|
+
export interface MatchRouteOptions {
|
|
49
|
+
pending?: boolean;
|
|
50
|
+
caseSensitive?: boolean;
|
|
51
|
+
includeSearch?: boolean;
|
|
52
|
+
fuzzy?: boolean;
|
|
53
|
+
}
|
|
54
|
+
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;
|
|
55
|
+
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>) => Solid.Accessor<false | ResolveRoute<TRouter, TFrom, TTo>["types"]["allParams"]>;
|
|
56
|
+
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> & {
|
|
57
|
+
children?: ((params?: RouteByPath<TRouter['routeTree'], ResolveRelativePath<TFrom, NoInfer<TTo>>>['types']['allParams']) => Solid.JSX.Element) | Solid.JSX.Element;
|
|
58
|
+
};
|
|
59
|
+
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;
|
|
60
|
+
export type MakeRouteMatchUnion<TRouter extends AnyRouter = RegisteredRouter, TRoute extends AnyRoute = ParseRoute<TRouter['routeTree']>> = TRoute extends any ? RouteMatch<TRoute['id'], TRoute['fullPath'], TRoute['types']['allParams'], TRoute['types']['fullSearchSchema'], TRoute['types']['loaderData'], TRoute['types']['allContext'], TRoute['types']['loaderDeps']> : never;
|
|
61
|
+
export interface UseMatchesBaseOptions<TRouter extends AnyRouter, TSelected> {
|
|
62
|
+
select?: (matches: Array<MakeRouteMatchUnion<TRouter>>) => TSelected;
|
|
63
|
+
}
|
|
64
|
+
export type UseMatchesResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? Array<MakeRouteMatchUnion<TRouter>> : TSelected;
|
|
65
|
+
export declare function useMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseMatchesBaseOptions<TRouter, TSelected>): Solid.Accessor<UseMatchesResult<TRouter, TSelected>>;
|
|
66
|
+
export declare function useParentMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseMatchesBaseOptions<TRouter, TSelected>): Solid.Accessor<UseMatchesResult<TRouter, TSelected>>;
|
|
67
|
+
export declare function useChildMatches<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown>(opts?: UseMatchesBaseOptions<TRouter, TSelected>): Solid.Accessor<UseMatchesResult<TRouter, TSelected>>;
|