@tanstack/solid-router 1.167.5 → 1.168.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Match.cjs +244 -223
- package/dist/cjs/Match.cjs.map +1 -1
- package/dist/cjs/Match.d.cts +1 -3
- package/dist/cjs/Matches.cjs +32 -31
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Scripts.cjs +10 -8
- package/dist/cjs/Scripts.cjs.map +1 -1
- package/dist/cjs/Scripts.d.cts +2 -1
- package/dist/cjs/Transitioner.cjs +26 -26
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/cjs/headContentUtils.cjs +15 -15
- package/dist/cjs/headContentUtils.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.dev.cjs +1 -1
- package/dist/cjs/link.cjs +119 -84
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/matchContext.cjs +7 -5
- package/dist/cjs/matchContext.cjs.map +1 -1
- package/dist/cjs/matchContext.d.cts +8 -2
- package/dist/cjs/not-found.cjs +8 -4
- package/dist/cjs/not-found.cjs.map +1 -1
- package/dist/cjs/not-found.d.cts +1 -1
- package/dist/cjs/router.cjs +2 -1
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/routerStores.cjs +67 -0
- package/dist/cjs/routerStores.cjs.map +1 -0
- package/dist/cjs/routerStores.d.cts +10 -0
- package/dist/cjs/ssr/RouterClient.cjs +1 -1
- package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToStream.cjs +1 -1
- package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.cjs +2 -2
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.d.cts +1 -1
- package/dist/cjs/useCanGoBack.cjs +6 -2
- package/dist/cjs/useCanGoBack.cjs.map +1 -1
- package/dist/cjs/useCanGoBack.d.cts +2 -1
- package/dist/cjs/useLoaderDeps.cjs +2 -3
- package/dist/cjs/useLoaderDeps.cjs.map +1 -1
- package/dist/cjs/useLocation.cjs +13 -2
- package/dist/cjs/useLocation.cjs.map +1 -1
- package/dist/cjs/useMatch.cjs +17 -15
- package/dist/cjs/useMatch.cjs.map +1 -1
- package/dist/cjs/useParams.cjs +1 -1
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/cjs/useRouterState.cjs +12 -19
- package/dist/cjs/useRouterState.cjs.map +1 -1
- package/dist/cjs/useSearch.cjs +2 -1
- package/dist/cjs/useSearch.cjs.map +1 -1
- package/dist/cjs/utils.cjs +0 -14
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +0 -4
- package/dist/esm/Match.d.ts +1 -3
- package/dist/esm/Match.js +245 -224
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.js +34 -33
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/Scripts.d.ts +2 -1
- package/dist/esm/Scripts.js +8 -7
- package/dist/esm/Scripts.js.map +1 -1
- package/dist/esm/Transitioner.js +26 -26
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/headContentUtils.js +15 -15
- package/dist/esm/headContentUtils.js.map +1 -1
- package/dist/esm/index.dev.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/link.js +120 -85
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/matchContext.d.ts +8 -2
- package/dist/esm/matchContext.js +7 -4
- package/dist/esm/matchContext.js.map +1 -1
- package/dist/esm/not-found.d.ts +1 -1
- package/dist/esm/not-found.js +6 -3
- package/dist/esm/not-found.js.map +1 -1
- package/dist/esm/router.js +2 -1
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/routerStores.d.ts +10 -0
- package/dist/esm/routerStores.js +65 -0
- package/dist/esm/routerStores.js.map +1 -0
- package/dist/esm/ssr/RouterClient.js +1 -1
- package/dist/esm/ssr/RouterClient.js.map +1 -1
- package/dist/esm/ssr/renderRouterToStream.js +1 -1
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
- package/dist/esm/ssr/renderRouterToString.d.ts +1 -1
- package/dist/esm/ssr/renderRouterToString.js +2 -2
- package/dist/esm/ssr/renderRouterToString.js.map +1 -1
- package/dist/esm/useCanGoBack.d.ts +2 -1
- package/dist/esm/useCanGoBack.js +4 -2
- package/dist/esm/useCanGoBack.js.map +1 -1
- package/dist/esm/useLoaderDeps.js +2 -3
- package/dist/esm/useLoaderDeps.js.map +1 -1
- package/dist/esm/useLocation.js +11 -2
- package/dist/esm/useLocation.js.map +1 -1
- package/dist/esm/useMatch.js +18 -16
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/useParams.js +1 -1
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/useRouterState.js +10 -18
- package/dist/esm/useRouterState.js.map +1 -1
- package/dist/esm/useSearch.js +2 -1
- package/dist/esm/useSearch.js.map +1 -1
- package/dist/esm/utils.d.ts +0 -4
- package/dist/esm/utils.js +1 -14
- package/dist/esm/utils.js.map +1 -1
- package/dist/source/Match.d.ts +1 -3
- package/dist/source/Match.jsx +246 -237
- package/dist/source/Match.jsx.map +1 -1
- package/dist/source/Matches.jsx +42 -44
- package/dist/source/Matches.jsx.map +1 -1
- package/dist/source/Scripts.d.ts +2 -1
- package/dist/source/Scripts.jsx +31 -36
- package/dist/source/Scripts.jsx.map +1 -1
- package/dist/source/Transitioner.jsx +26 -31
- package/dist/source/Transitioner.jsx.map +1 -1
- package/dist/source/headContentUtils.jsx +64 -72
- package/dist/source/headContentUtils.jsx.map +1 -1
- package/dist/source/link.jsx +136 -107
- package/dist/source/link.jsx.map +1 -1
- package/dist/source/matchContext.d.ts +8 -2
- package/dist/source/matchContext.jsx +7 -3
- package/dist/source/matchContext.jsx.map +1 -1
- package/dist/source/not-found.d.ts +1 -1
- package/dist/source/not-found.jsx +6 -5
- package/dist/source/not-found.jsx.map +1 -1
- package/dist/source/router.js +2 -1
- package/dist/source/router.js.map +1 -1
- package/dist/source/routerStores.d.ts +10 -0
- package/dist/source/routerStores.js +71 -0
- package/dist/source/routerStores.js.map +1 -0
- package/dist/source/ssr/RouterClient.jsx +1 -1
- package/dist/source/ssr/RouterClient.jsx.map +1 -1
- package/dist/source/ssr/renderRouterToStream.jsx +1 -1
- package/dist/source/ssr/renderRouterToStream.jsx.map +1 -1
- package/dist/source/ssr/renderRouterToString.d.ts +1 -1
- package/dist/source/ssr/renderRouterToString.jsx +2 -2
- package/dist/source/ssr/renderRouterToString.jsx.map +1 -1
- package/dist/source/useCanGoBack.d.ts +2 -1
- package/dist/source/useCanGoBack.js +4 -2
- package/dist/source/useCanGoBack.js.map +1 -1
- package/dist/source/useLoaderDeps.jsx +2 -3
- package/dist/source/useLoaderDeps.jsx.map +1 -1
- package/dist/source/useLocation.jsx +13 -3
- package/dist/source/useLocation.jsx.map +1 -1
- package/dist/source/useMatch.jsx +30 -27
- package/dist/source/useMatch.jsx.map +1 -1
- package/dist/source/useParams.jsx +1 -1
- package/dist/source/useParams.jsx.map +1 -1
- package/dist/source/useRouterState.jsx +12 -33
- package/dist/source/useRouterState.jsx.map +1 -1
- package/dist/source/useSearch.jsx +2 -1
- package/dist/source/useSearch.jsx.map +1 -1
- package/dist/source/utils.d.ts +0 -4
- package/dist/source/utils.js +0 -13
- package/dist/source/utils.js.map +1 -1
- package/package.json +2 -3
- package/skills/solid-router/SKILL.md +2 -0
- package/src/Match.tsx +351 -304
- package/src/Matches.tsx +49 -52
- package/src/Scripts.tsx +40 -41
- package/src/Transitioner.tsx +67 -66
- package/src/headContentUtils.tsx +89 -91
- package/src/link.tsx +179 -141
- package/src/matchContext.tsx +16 -7
- package/src/not-found.tsx +6 -6
- package/src/router.ts +2 -1
- package/src/routerStores.ts +107 -0
- package/src/ssr/RouterClient.tsx +1 -1
- package/src/ssr/renderRouterToStream.tsx +1 -1
- package/src/ssr/renderRouterToString.tsx +2 -2
- package/src/useCanGoBack.ts +6 -2
- package/src/useLoaderDeps.tsx +2 -3
- package/src/useLocation.tsx +18 -5
- package/src/useMatch.tsx +36 -43
- package/src/useParams.tsx +2 -3
- package/src/useRouterState.tsx +17 -41
- package/src/useSearch.tsx +2 -1
- package/src/utils.ts +0 -20
package/dist/source/Matches.jsx
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import * as Solid from 'solid-js';
|
|
2
2
|
import warning from 'tiny-warning';
|
|
3
|
-
import { rootRouteId } from '@tanstack/router-core';
|
|
3
|
+
import { replaceEqualDeep, rootRouteId } from '@tanstack/router-core';
|
|
4
4
|
import { isServer } from '@tanstack/router-core/isServer';
|
|
5
5
|
import { CatchBoundary, ErrorComponent } from './CatchBoundary';
|
|
6
|
-
import { useRouterState } from './useRouterState';
|
|
7
6
|
import { useRouter } from './useRouter';
|
|
8
7
|
import { Transitioner } from './Transitioner';
|
|
9
|
-
import {
|
|
8
|
+
import { nearestMatchContext } from './matchContext';
|
|
10
9
|
import { SafeFragment } from './SafeFragment';
|
|
11
10
|
import { Match } from './Match';
|
|
12
11
|
export function Matches() {
|
|
@@ -28,40 +27,43 @@ export function Matches() {
|
|
|
28
27
|
}
|
|
29
28
|
function MatchesInner() {
|
|
30
29
|
const router = useRouter();
|
|
31
|
-
const matchId =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
const matchId = () => router.stores.firstMatchId.state;
|
|
31
|
+
const routeId = () => (matchId() ? rootRouteId : undefined);
|
|
32
|
+
const match = () => routeId()
|
|
33
|
+
? router.stores.getMatchStoreByRouteId(rootRouteId).state
|
|
34
|
+
: undefined;
|
|
35
|
+
const hasPendingMatch = () => routeId()
|
|
36
|
+
? Boolean(router.stores.pendingRouteIds.state[rootRouteId])
|
|
37
|
+
: false;
|
|
38
|
+
const resetKey = () => router.stores.loadedAt.state;
|
|
39
|
+
const nearestMatch = {
|
|
40
|
+
matchId,
|
|
41
|
+
routeId,
|
|
42
|
+
match,
|
|
43
|
+
hasPending: hasPendingMatch,
|
|
44
|
+
};
|
|
39
45
|
const matchComponent = () => {
|
|
40
46
|
return (<Solid.Show when={matchId()}>
|
|
41
47
|
<Match matchId={matchId()}/>
|
|
42
48
|
</Solid.Show>);
|
|
43
49
|
};
|
|
44
|
-
return (<
|
|
50
|
+
return (<nearestMatchContext.Provider value={nearestMatch}>
|
|
45
51
|
{router.options.disableGlobalCatchBoundary ? (matchComponent()) : (<CatchBoundary getResetKey={() => resetKey()} errorComponent={ErrorComponent} onCatch={process.env.NODE_ENV !== 'production'
|
|
46
52
|
? (error) => {
|
|
47
|
-
warning(false, `The following error wasn't caught by any route! At the very
|
|
48
|
-
t, consider setting an 'errorComponent' in your RootRoute!`);
|
|
53
|
+
warning(false, `The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);
|
|
49
54
|
warning(false, error.message || error.toString());
|
|
50
55
|
}
|
|
51
56
|
: undefined}>
|
|
52
57
|
{matchComponent()}
|
|
53
58
|
</CatchBoundary>)}
|
|
54
|
-
</
|
|
59
|
+
</nearestMatchContext.Provider>);
|
|
55
60
|
}
|
|
56
61
|
export function useMatchRoute() {
|
|
57
62
|
const router = useRouter();
|
|
58
|
-
const status = useRouterState({
|
|
59
|
-
select: (s) => s.status,
|
|
60
|
-
});
|
|
61
63
|
return (opts) => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
return Solid.createMemo(() => {
|
|
65
|
+
const { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;
|
|
66
|
+
router.stores.matchRouteReactivity.state;
|
|
65
67
|
return router.matchRoute(rest, {
|
|
66
68
|
pending,
|
|
67
69
|
caseSensitive,
|
|
@@ -69,37 +71,33 @@ export function useMatchRoute() {
|
|
|
69
71
|
includeSearch,
|
|
70
72
|
});
|
|
71
73
|
});
|
|
72
|
-
return matchRoute;
|
|
73
74
|
};
|
|
74
75
|
}
|
|
75
76
|
export function MatchRoute(props) {
|
|
76
|
-
const
|
|
77
|
-
|
|
77
|
+
const matchRoute = useMatchRoute();
|
|
78
|
+
const params = matchRoute(props);
|
|
79
|
+
const renderedChild = Solid.createMemo(() => {
|
|
80
|
+
const matchedParams = params();
|
|
81
|
+
const child = props.children;
|
|
82
|
+
if (typeof child === 'function') {
|
|
83
|
+
return child(matchedParams);
|
|
84
|
+
}
|
|
85
|
+
return matchedParams ? child : null;
|
|
78
86
|
});
|
|
79
|
-
return
|
|
80
|
-
{(_) => {
|
|
81
|
-
const matchRoute = useMatchRoute();
|
|
82
|
-
const params = matchRoute(props)();
|
|
83
|
-
const child = props.children;
|
|
84
|
-
if (typeof child === 'function') {
|
|
85
|
-
return child(params);
|
|
86
|
-
}
|
|
87
|
-
return params ? child : null;
|
|
88
|
-
}}
|
|
89
|
-
</Solid.Show>);
|
|
87
|
+
return <>{renderedChild()}</>;
|
|
90
88
|
}
|
|
91
89
|
export function useMatches(opts) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
90
|
+
const router = useRouter();
|
|
91
|
+
return Solid.createMemo((prev) => {
|
|
92
|
+
const matches = router.stores.activeMatchesSnapshot.state;
|
|
93
|
+
const res = opts?.select ? opts.select(matches) : matches;
|
|
94
|
+
if (prev === undefined)
|
|
95
|
+
return res;
|
|
96
|
+
return replaceEqualDeep(prev, res);
|
|
99
97
|
});
|
|
100
98
|
}
|
|
101
99
|
export function useParentMatches(opts) {
|
|
102
|
-
const contextMatchId = Solid.useContext(
|
|
100
|
+
const contextMatchId = Solid.useContext(nearestMatchContext).matchId;
|
|
103
101
|
return useMatches({
|
|
104
102
|
select: (matches) => {
|
|
105
103
|
matches = matches.slice(0, matches.findIndex((d) => d.id === contextMatchId()));
|
|
@@ -108,7 +106,7 @@ export function useParentMatches(opts) {
|
|
|
108
106
|
});
|
|
109
107
|
}
|
|
110
108
|
export function useChildMatches(opts) {
|
|
111
|
-
const contextMatchId = Solid.useContext(
|
|
109
|
+
const contextMatchId = Solid.useContext(nearestMatchContext).matchId;
|
|
112
110
|
return useMatches({
|
|
113
111
|
select: (matches) => {
|
|
114
112
|
matches = matches.slice(matches.findIndex((d) => d.id === contextMatchId()) + 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"Matches.jsx","sourceRoot":"","sources":["../../src/Matches.tsx"],"names":[],"mappings":"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"}
|
package/dist/source/Scripts.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
2
|
+
export declare const Scripts: () => Solid.JSX.Element;
|
package/dist/source/Scripts.jsx
CHANGED
|
@@ -1,51 +1,46 @@
|
|
|
1
|
+
import * as Solid from 'solid-js';
|
|
1
2
|
import { Asset } from './Asset';
|
|
2
|
-
import { useRouterState } from './useRouterState';
|
|
3
3
|
import { useRouter } from './useRouter';
|
|
4
4
|
export const Scripts = () => {
|
|
5
5
|
const router = useRouter();
|
|
6
6
|
const nonce = router.options.ssr?.nonce;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
tag: 'script',
|
|
21
|
-
attrs: { ...asset.attrs, nonce },
|
|
22
|
-
children: asset.children,
|
|
23
|
-
});
|
|
24
|
-
}));
|
|
25
|
-
return assetScripts;
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
const scripts = useRouterState({
|
|
29
|
-
select: (state) => ({
|
|
30
|
-
scripts: state.matches
|
|
31
|
-
.map((match) => match.scripts)
|
|
32
|
-
.flat(1)
|
|
33
|
-
.filter(Boolean).map(({ children, ...script }) => ({
|
|
7
|
+
const activeMatches = Solid.createMemo(() => router.stores.activeMatchesSnapshot.state);
|
|
8
|
+
const assetScripts = Solid.createMemo(() => {
|
|
9
|
+
const assetScripts = [];
|
|
10
|
+
const manifest = router.ssr?.manifest;
|
|
11
|
+
if (!manifest) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
activeMatches()
|
|
15
|
+
.map((match) => router.looseRoutesById[match.routeId])
|
|
16
|
+
.forEach((route) => manifest.routes[route.id]?.assets
|
|
17
|
+
?.filter((d) => d.tag === 'script')
|
|
18
|
+
.forEach((asset) => {
|
|
19
|
+
assetScripts.push({
|
|
34
20
|
tag: 'script',
|
|
35
|
-
attrs: {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
})),
|
|
41
|
-
}),
|
|
21
|
+
attrs: { ...asset.attrs, nonce },
|
|
22
|
+
children: asset.children,
|
|
23
|
+
});
|
|
24
|
+
}));
|
|
25
|
+
return assetScripts;
|
|
42
26
|
});
|
|
27
|
+
const scripts = Solid.createMemo(() => activeMatches()
|
|
28
|
+
.map((match) => match.scripts)
|
|
29
|
+
.flat(1)
|
|
30
|
+
.filter(Boolean).map(({ children, ...script }) => ({
|
|
31
|
+
tag: 'script',
|
|
32
|
+
attrs: {
|
|
33
|
+
...script,
|
|
34
|
+
nonce,
|
|
35
|
+
},
|
|
36
|
+
children,
|
|
37
|
+
})));
|
|
43
38
|
let serverBufferedScript = undefined;
|
|
44
39
|
if (router.serverSsr) {
|
|
45
40
|
serverBufferedScript = router.serverSsr.takeBufferedScripts();
|
|
46
41
|
}
|
|
47
42
|
const allScripts = [
|
|
48
|
-
...scripts()
|
|
43
|
+
...scripts(),
|
|
49
44
|
...assetScripts(),
|
|
50
45
|
];
|
|
51
46
|
if (serverBufferedScript) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAA;IACvC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CACpC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAChD,CAAA;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACzC,MAAM,YAAY,GAA4B,EAAE,CAAA;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAA;QAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,CAAA;QACX,CAAC;QAED,aAAa,EAAE;aACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;aACtD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM;YAC/B,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;aAClC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,YAAY,CAAC,IAAI,CAAC;gBAChB,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aAClB,CAAC,CAAA;QACX,CAAC,CAAC,CACL,CAAA;QAEH,OAAO,YAAY,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAElC,aAAa,EAAE;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC;SACP,MAAM,CAAC,OAAO,CAClB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE;YACL,GAAG,MAAM;YACT,KAAK;SACN;QACD,QAAQ;KACT,CAAC,CAAC,CACJ,CAAA;IAED,IAAI,oBAAoB,GAAiC,SAAS,CAAA;IAElE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAA;IAC/D,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO,EAAE;QACZ,GAAG,YAAY,EAAE;KACS,CAAA;IAE5B,IAAI,oBAAoB,EAAE,CAAC;QACzB,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,CACL,EACE;MAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAG,CACrB,CAAC,CACJ;IAAA,GAAG,CACJ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -2,27 +2,18 @@ import * as Solid from 'solid-js';
|
|
|
2
2
|
import { getLocationChangeInfo, handleHashScroll, trimPathRight, } from '@tanstack/router-core';
|
|
3
3
|
import { isServer } from '@tanstack/router-core/isServer';
|
|
4
4
|
import { useRouter } from './useRouter';
|
|
5
|
-
import { useRouterState } from './useRouterState';
|
|
6
|
-
import { usePrevious } from './utils';
|
|
7
5
|
export function Transitioner() {
|
|
8
6
|
const router = useRouter();
|
|
9
7
|
let mountLoadForRouter = { router, mounted: false };
|
|
10
|
-
const isLoading =
|
|
11
|
-
select: ({ isLoading }) => isLoading,
|
|
12
|
-
});
|
|
8
|
+
const isLoading = Solid.createMemo(() => router.stores.isLoading.state);
|
|
13
9
|
if (isServer ?? router.isServer) {
|
|
14
10
|
return null;
|
|
15
11
|
}
|
|
16
12
|
const [isSolidTransitioning, startSolidTransition] = Solid.useTransition();
|
|
17
13
|
// Track pending state changes
|
|
18
|
-
const hasPendingMatches =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const previousIsLoading = usePrevious(isLoading);
|
|
22
|
-
const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
|
|
23
|
-
const previousIsAnyPending = usePrevious(isAnyPending);
|
|
24
|
-
const isPagePending = () => isLoading() || hasPendingMatches();
|
|
25
|
-
const previousIsPagePending = usePrevious(isPagePending);
|
|
14
|
+
const hasPendingMatches = Solid.createMemo(() => router.stores.hasPendingMatches.state);
|
|
15
|
+
const isAnyPending = Solid.createMemo(() => isLoading() || isSolidTransitioning() || hasPendingMatches());
|
|
16
|
+
const isPagePending = Solid.createMemo(() => isLoading() || hasPendingMatches());
|
|
26
17
|
router.startTransition = (fn) => {
|
|
27
18
|
Solid.startTransition(() => {
|
|
28
19
|
startSolidTransition(fn);
|
|
@@ -72,40 +63,44 @@ export function Transitioner() {
|
|
|
72
63
|
tryLoad();
|
|
73
64
|
});
|
|
74
65
|
});
|
|
75
|
-
Solid.createRenderEffect(
|
|
76
|
-
|
|
66
|
+
Solid.createRenderEffect((previousIsLoading = false) => {
|
|
67
|
+
const currentIsLoading = isLoading();
|
|
68
|
+
if (previousIsLoading && !currentIsLoading) {
|
|
77
69
|
router.emit({
|
|
78
70
|
type: 'onLoad',
|
|
79
|
-
...getLocationChangeInfo(router.state),
|
|
71
|
+
...getLocationChangeInfo(router.stores.location.state, router.stores.resolvedLocation.state),
|
|
80
72
|
});
|
|
81
73
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
return currentIsLoading;
|
|
75
|
+
});
|
|
76
|
+
Solid.createComputed((previousIsPagePending = false) => {
|
|
77
|
+
const currentIsPagePending = isPagePending();
|
|
78
|
+
if (previousIsPagePending && !currentIsPagePending) {
|
|
86
79
|
router.emit({
|
|
87
80
|
type: 'onBeforeRouteMount',
|
|
88
|
-
...getLocationChangeInfo(router.state),
|
|
81
|
+
...getLocationChangeInfo(router.stores.location.state, router.stores.resolvedLocation.state),
|
|
89
82
|
});
|
|
90
83
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
84
|
+
return currentIsPagePending;
|
|
85
|
+
});
|
|
86
|
+
Solid.createRenderEffect((previousIsAnyPending = false) => {
|
|
87
|
+
const currentIsAnyPending = isAnyPending();
|
|
88
|
+
if (previousIsAnyPending && !currentIsAnyPending) {
|
|
89
|
+
const changeInfo = getLocationChangeInfo(router.stores.location.state, router.stores.resolvedLocation.state);
|
|
95
90
|
router.emit({
|
|
96
91
|
type: 'onResolved',
|
|
97
92
|
...changeInfo,
|
|
98
93
|
});
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}));
|
|
94
|
+
Solid.batch(() => {
|
|
95
|
+
router.stores.status.setState(() => 'idle');
|
|
96
|
+
router.stores.resolvedLocation.setState(() => router.stores.location.state);
|
|
97
|
+
});
|
|
104
98
|
if (changeInfo.hrefChanged) {
|
|
105
99
|
handleHashScroll(router);
|
|
106
100
|
}
|
|
107
101
|
}
|
|
108
|
-
|
|
102
|
+
return currentIsAnyPending;
|
|
103
|
+
});
|
|
109
104
|
return null;
|
|
110
105
|
}
|
|
111
106
|
//# sourceMappingURL=Transitioner.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as Solid from 'solid-js';
|
|
2
2
|
import { escapeHtml } from '@tanstack/router-core';
|
|
3
3
|
import { useRouter } from './useRouter';
|
|
4
|
-
import { useRouterState } from './useRouterState';
|
|
5
4
|
/**
|
|
6
5
|
* Build the list of head/link/meta/script tags to render for active matches.
|
|
7
6
|
* Used internally by `HeadContent`.
|
|
@@ -9,11 +8,10 @@ import { useRouterState } from './useRouterState';
|
|
|
9
8
|
export const useTags = () => {
|
|
10
9
|
const router = useRouter();
|
|
11
10
|
const nonce = router.options.ssr?.nonce;
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
11
|
+
const activeMatches = Solid.createMemo(() => router.stores.activeMatchesSnapshot.state);
|
|
12
|
+
const routeMeta = Solid.createMemo(() => activeMatches()
|
|
13
|
+
.map((match) => match.meta)
|
|
14
|
+
.filter(Boolean));
|
|
17
15
|
const meta = Solid.createMemo(() => {
|
|
18
16
|
const resultMeta = [];
|
|
19
17
|
const metaByAttribute = {};
|
|
@@ -85,78 +83,72 @@ export const useTags = () => {
|
|
|
85
83
|
resultMeta.reverse();
|
|
86
84
|
return resultMeta;
|
|
87
85
|
});
|
|
88
|
-
const links =
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
.flat(1)
|
|
94
|
-
.map((link) => ({
|
|
95
|
-
tag: 'link',
|
|
96
|
-
attrs: {
|
|
97
|
-
...link,
|
|
98
|
-
nonce,
|
|
99
|
-
},
|
|
100
|
-
}));
|
|
101
|
-
const manifest = router.ssr?.manifest;
|
|
102
|
-
const assets = state.matches
|
|
103
|
-
.map((match) => manifest?.routes[match.routeId]?.assets ?? [])
|
|
104
|
-
.filter(Boolean)
|
|
105
|
-
.flat(1)
|
|
106
|
-
.filter((asset) => asset.tag === 'link')
|
|
107
|
-
.map((asset) => ({
|
|
108
|
-
tag: 'link',
|
|
109
|
-
attrs: { ...asset.attrs, nonce },
|
|
110
|
-
}));
|
|
111
|
-
return [...constructed, ...assets];
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
const preloadLinks = useRouterState({
|
|
115
|
-
select: (state) => {
|
|
116
|
-
const preloadLinks = [];
|
|
117
|
-
state.matches
|
|
118
|
-
.map((match) => router.looseRoutesById[match.routeId])
|
|
119
|
-
.forEach((route) => router.ssr?.manifest?.routes[route.id]?.preloads
|
|
120
|
-
?.filter(Boolean)
|
|
121
|
-
.forEach((preload) => {
|
|
122
|
-
preloadLinks.push({
|
|
123
|
-
tag: 'link',
|
|
124
|
-
attrs: {
|
|
125
|
-
rel: 'modulepreload',
|
|
126
|
-
href: preload,
|
|
127
|
-
nonce,
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
}));
|
|
131
|
-
return preloadLinks;
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
const styles = useRouterState({
|
|
135
|
-
select: (state) => state.matches
|
|
136
|
-
.map((match) => match.styles)
|
|
86
|
+
const links = Solid.createMemo(() => {
|
|
87
|
+
const matches = activeMatches();
|
|
88
|
+
const constructed = matches
|
|
89
|
+
.map((match) => match.links)
|
|
90
|
+
.filter(Boolean)
|
|
137
91
|
.flat(1)
|
|
138
|
-
.
|
|
139
|
-
tag: '
|
|
92
|
+
.map((link) => ({
|
|
93
|
+
tag: 'link',
|
|
140
94
|
attrs: {
|
|
141
|
-
...
|
|
95
|
+
...link,
|
|
142
96
|
nonce,
|
|
143
97
|
},
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
.map((match) => match.headScripts)
|
|
98
|
+
}));
|
|
99
|
+
const manifest = router.ssr?.manifest;
|
|
100
|
+
const assets = matches
|
|
101
|
+
.map((match) => manifest?.routes[match.routeId]?.assets ?? [])
|
|
102
|
+
.filter(Boolean)
|
|
150
103
|
.flat(1)
|
|
151
|
-
.filter(
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
children,
|
|
158
|
-
})),
|
|
104
|
+
.filter((asset) => asset.tag === 'link')
|
|
105
|
+
.map((asset) => ({
|
|
106
|
+
tag: 'link',
|
|
107
|
+
attrs: { ...asset.attrs, nonce },
|
|
108
|
+
}));
|
|
109
|
+
return [...constructed, ...assets];
|
|
159
110
|
});
|
|
111
|
+
const preloadLinks = Solid.createMemo(() => {
|
|
112
|
+
const matches = activeMatches();
|
|
113
|
+
const preloadLinks = [];
|
|
114
|
+
matches
|
|
115
|
+
.map((match) => router.looseRoutesById[match.routeId])
|
|
116
|
+
.forEach((route) => router.ssr?.manifest?.routes[route.id]?.preloads
|
|
117
|
+
?.filter(Boolean)
|
|
118
|
+
.forEach((preload) => {
|
|
119
|
+
preloadLinks.push({
|
|
120
|
+
tag: 'link',
|
|
121
|
+
attrs: {
|
|
122
|
+
rel: 'modulepreload',
|
|
123
|
+
href: preload,
|
|
124
|
+
nonce,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}));
|
|
128
|
+
return preloadLinks;
|
|
129
|
+
});
|
|
130
|
+
const styles = Solid.createMemo(() => activeMatches()
|
|
131
|
+
.map((match) => match.styles)
|
|
132
|
+
.flat(1)
|
|
133
|
+
.filter(Boolean).map(({ children, ...style }) => ({
|
|
134
|
+
tag: 'style',
|
|
135
|
+
attrs: {
|
|
136
|
+
...style,
|
|
137
|
+
nonce,
|
|
138
|
+
},
|
|
139
|
+
children,
|
|
140
|
+
})));
|
|
141
|
+
const headScripts = Solid.createMemo(() => activeMatches()
|
|
142
|
+
.map((match) => match.headScripts)
|
|
143
|
+
.flat(1)
|
|
144
|
+
.filter(Boolean).map(({ children, ...script }) => ({
|
|
145
|
+
tag: 'script',
|
|
146
|
+
attrs: {
|
|
147
|
+
...script,
|
|
148
|
+
nonce,
|
|
149
|
+
},
|
|
150
|
+
children,
|
|
151
|
+
})));
|
|
160
152
|
return () => uniqBy([
|
|
161
153
|
...meta(),
|
|
162
154
|
...preloadLinks(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headContentUtils.jsx","sourceRoot":"","sources":["../../src/headContentUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"headContentUtils.jsx","sourceRoot":"","sources":["../../src/headContentUtils.tsx"],"names":[],"mappings":"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"}
|