@tanstack/solid-router 1.132.0-alpha.0 → 1.132.0-alpha.12
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/HeadContent.cjs +9 -6
- package/dist/cjs/HeadContent.cjs.map +1 -1
- package/dist/cjs/Match.cjs +30 -27
- package/dist/cjs/Match.cjs.map +1 -1
- package/dist/cjs/ScriptOnce.cjs +2 -2
- package/dist/cjs/ScriptOnce.cjs.map +1 -1
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/fileRoute.d.cts +2 -2
- package/dist/cjs/index.cjs +2 -10
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/link.cjs +13 -9
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +12 -12
- package/dist/cjs/router.cjs +1 -1
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/scroll-restoration.cjs +11 -3
- package/dist/cjs/scroll-restoration.cjs.map +1 -1
- package/dist/cjs/useActiveLocation.cjs +40 -0
- package/dist/cjs/useActiveLocation.cjs.map +1 -0
- package/dist/cjs/useActiveLocation.d.cts +8 -0
- package/dist/cjs/useBlocker.cjs +1 -1
- package/dist/cjs/useBlocker.cjs.map +1 -1
- package/dist/cjs/useNavigate.cjs +9 -10
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/esm/HeadContent.js +9 -6
- package/dist/esm/HeadContent.js.map +1 -1
- package/dist/esm/Match.js +31 -28
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/ScriptOnce.js +2 -2
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/fileRoute.d.ts +2 -2
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -4
- package/dist/esm/link.js +13 -9
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/route.d.ts +12 -12
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.js +1 -1
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/scroll-restoration.js +11 -3
- package/dist/esm/scroll-restoration.js.map +1 -1
- package/dist/esm/useActiveLocation.d.ts +8 -0
- package/dist/esm/useActiveLocation.js +40 -0
- package/dist/esm/useActiveLocation.js.map +1 -0
- package/dist/esm/useBlocker.js +1 -1
- package/dist/esm/useBlocker.js.map +1 -1
- package/dist/esm/useNavigate.js +9 -10
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/source/HeadContent.jsx +9 -7
- package/dist/source/HeadContent.jsx.map +1 -1
- package/dist/source/Match.jsx +33 -34
- package/dist/source/Match.jsx.map +1 -1
- package/dist/source/ScriptOnce.jsx +1 -1
- package/dist/source/ScriptOnce.jsx.map +1 -1
- package/dist/source/fileRoute.d.ts +2 -2
- package/dist/source/fileRoute.js.map +1 -1
- package/dist/source/index.d.ts +2 -2
- package/dist/source/index.jsx +1 -1
- package/dist/source/index.jsx.map +1 -1
- package/dist/source/link.jsx +10 -11
- package/dist/source/link.jsx.map +1 -1
- package/dist/source/route.d.ts +12 -12
- package/dist/source/route.jsx.map +1 -1
- package/dist/source/router.js +1 -1
- package/dist/source/router.js.map +1 -1
- package/dist/source/scroll-restoration.jsx +11 -3
- package/dist/source/scroll-restoration.jsx.map +1 -1
- package/dist/source/useActiveLocation.d.ts +8 -0
- package/dist/source/useActiveLocation.js +33 -0
- package/dist/source/useActiveLocation.js.map +1 -0
- package/dist/source/useBlocker.jsx +1 -1
- package/dist/source/useBlocker.jsx.map +1 -1
- package/dist/source/useNavigate.jsx +7 -10
- package/dist/source/useNavigate.jsx.map +1 -1
- package/package.json +3 -3
- package/src/HeadContent.tsx +9 -6
- package/src/Match.tsx +35 -37
- package/src/ScriptOnce.tsx +2 -2
- package/src/fileRoute.ts +10 -2
- package/src/index.tsx +3 -3
- package/src/link.tsx +11 -11
- package/src/route.tsx +76 -18
- package/src/router.ts +1 -1
- package/src/scroll-restoration.tsx +11 -4
- package/src/useActiveLocation.ts +61 -0
- package/src/useBlocker.tsx +1 -1
- package/src/useNavigate.tsx +10 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-restoration.jsx","sourceRoot":"","sources":["../../src/scroll-restoration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,
|
|
1
|
+
{"version":3,"file":"scroll-restoration.jsx","sourceRoot":"","sources":["../../src/scroll-restoration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACrD,QAAQ,EAAE,MAAM,CAAC,cAAc;SAChC,CAAC,CAAA;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,CAAC,uBAAuB,IAAI,8BAA8B,CAAA;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAC7C,MAAM,WAAW,GACf,OAAO,KAAK,8BAA8B,CAAC,MAAM,CAAC,cAAc,CAAC;QAC/D,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,oBAAoB,GAAwC;QAChE,UAAU;QACV,uBAAuB,EAAE,IAAI;KAC9B,CAAA;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,oBAAoB,CAAC,GAAG,GAAG,WAAW,CAAA;IACxC,CAAC;IAED,OAAO,CACL,CAAC,UAAU,CACT,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,EACnF,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Accessor } from 'solid-js';
|
|
2
|
+
import type { ParsedLocation } from '@tanstack/router-core';
|
|
3
|
+
export type UseLocationResult = {
|
|
4
|
+
activeLocation: Accessor<ParsedLocation>;
|
|
5
|
+
getFromPath: (from?: string) => Accessor<string>;
|
|
6
|
+
setActiveLocation: (location?: ParsedLocation) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare function useActiveLocation(location?: ParsedLocation): UseLocationResult;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { last } from '@tanstack/router-core';
|
|
2
|
+
import { createEffect, createMemo, createSignal } from 'solid-js';
|
|
3
|
+
import { useMatch } from './useMatch';
|
|
4
|
+
import { useRouter } from './useRouter';
|
|
5
|
+
import { useRouterState } from './useRouterState';
|
|
6
|
+
export function useActiveLocation(location) {
|
|
7
|
+
const router = useRouter();
|
|
8
|
+
// we are not using a variable here for router state location since we need to only calculate that if the location is not passed in. It can result in unnecessary history actions if we do that.
|
|
9
|
+
const [activeLocation, setActiveLocation] = createSignal(location ?? useRouterState({ select: (s) => s.location })());
|
|
10
|
+
const [customActiveLocation, setCustomActiveLocation] = createSignal(location);
|
|
11
|
+
createEffect(() => {
|
|
12
|
+
setActiveLocation(customActiveLocation() ?? useRouterState({ select: (s) => s.location })());
|
|
13
|
+
});
|
|
14
|
+
const matchIndex = useMatch({
|
|
15
|
+
strict: false,
|
|
16
|
+
select: (match) => match.index,
|
|
17
|
+
});
|
|
18
|
+
const getFromPath = (from) => createMemo(() => {
|
|
19
|
+
const activeLocationMatches = router.matchRoutes(customActiveLocation() ?? activeLocation(), {
|
|
20
|
+
_buildLocation: false,
|
|
21
|
+
});
|
|
22
|
+
const activeLocationMatch = last(activeLocationMatches);
|
|
23
|
+
return (from ??
|
|
24
|
+
activeLocationMatch?.fullPath ??
|
|
25
|
+
router.state.matches[matchIndex()].fullPath);
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
activeLocation,
|
|
29
|
+
getFromPath,
|
|
30
|
+
setActiveLocation: setCustomActiveLocation,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=useActiveLocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useActiveLocation.js","sourceRoot":"","sources":["../../src/useActiveLocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAUjD,MAAM,UAAU,iBAAiB,CAC/B,QAAyB;IAEzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,gMAAgM;IAChM,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,YAAY,CACtD,QAAQ,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAC5D,CAAA;IACD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,YAAY,CAElE,QAAQ,CAAC,CAAA;IAEX,YAAY,CAAC,GAAG,EAAE;QAChB,iBAAiB,CACf,oBAAoB,EAAE,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAC1E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC;QAC1B,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;KAC/B,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,CAAC,IAAa,EAAE,EAAE,CACpC,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,qBAAqB,GAAG,MAAM,CAAC,WAAW,CAC9C,oBAAoB,EAAE,IAAI,cAAc,EAAE,EAC1C;YACE,cAAc,EAAE,KAAK;SACtB,CACF,CAAA;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAEvD,OAAO,CACL,IAAI;YACJ,mBAAmB,EAAE,QAAQ;YAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAE,CAAC,QAAQ,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,cAAc;QACd,WAAW;QACX,iBAAiB,EAAE,uBAAuB;KAC3C,CAAA;AACH,CAAC"}
|
|
@@ -60,7 +60,7 @@ export function useBlocker(opts, condition) {
|
|
|
60
60
|
Solid.createEffect(() => {
|
|
61
61
|
const blockerFnComposed = async (blockerFnArgs) => {
|
|
62
62
|
function getLocation(location) {
|
|
63
|
-
const parsedLocation = router.parseLocation(
|
|
63
|
+
const parsedLocation = router.parseLocation(location);
|
|
64
64
|
const matchedRoutes = router.getMatchedRoutes(parsedLocation.pathname, undefined);
|
|
65
65
|
if (matchedRoutes.foundRoute === undefined) {
|
|
66
66
|
throw new Error(`No route found for location ${location.href}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBlocker.jsx","sourceRoot":"","sources":["../../src/useBlocker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAmFvC,SAAS,mBAAmB,CAC1B,IAA2D,EAC3D,SAAyB;IAEzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;YACzB,YAAY,EAAE,KAAK;SACpB,CAAA;IACH,CAAC;IAED,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;QAE9C,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;YAClC,IAAI,WAAW;gBAAE,OAAO,MAAM,IAAI,EAAE,CAAA;YACpC,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,OAAO;YACL,aAAa,EAAE,gBAAgB;YAC/B,kBAAkB,EAAE,WAAW;YAC/B,YAAY,EAAE,KAAK;SACpB,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAA;IAE3E,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAClC,IAAI,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClD,OAAO,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QAC/B,CAAC;QACD,OAAO,WAAW,EAAE,CAAA;IACtB,CAAC,CAAA;IAED,OAAO;QACL,IAAI,aAAa;YACf,OAAO,gBAAgB,CAAA;QACzB,CAAC;QACD,IAAI,kBAAkB;YACpB,OAAO,WAAW,EAAE,CAAA;QACtB,CAAC;QACD,IAAI,YAAY;YACd,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAA;QACrC,CAAC;KACF,CAAA;AACH,CAAC;AAwBD,MAAM,UAAU,UAAU,CACxB,IAA2D,EAC3D,SAAyB;IAEzB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B;QACE,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK;KACpB,EACD,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CACrC,CAAA;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,YAAY,CAAkB;QAClE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAA;IAEF,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;QACtB,MAAM,iBAAiB,GAAG,KAAK,EAAE,aAA4B,EAAE,EAAE;YAC/D,SAAS,WAAW,CAClB,QAAyB;gBAEzB,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"useBlocker.jsx","sourceRoot":"","sources":["../../src/useBlocker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import * as Solid from 'solid-js';
|
|
2
2
|
import { useRouter } from './useRouter';
|
|
3
|
-
import {
|
|
3
|
+
import { useActiveLocation } from './useActiveLocation';
|
|
4
4
|
export function useNavigate(_defaultOpts) {
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
strict: false,
|
|
8
|
-
select: (match) => match.index,
|
|
9
|
-
});
|
|
5
|
+
const router = useRouter();
|
|
6
|
+
const { getFromPath, setActiveLocation } = useActiveLocation(router.latestLocation);
|
|
10
7
|
return ((options) => {
|
|
11
|
-
|
|
8
|
+
setActiveLocation(router.latestLocation);
|
|
9
|
+
const from = getFromPath(options.from ?? _defaultOpts?.from);
|
|
10
|
+
return router.navigate({
|
|
12
11
|
...options,
|
|
13
|
-
from:
|
|
14
|
-
_defaultOpts?.from ??
|
|
15
|
-
state.matches[matchIndex()].fullPath,
|
|
12
|
+
from: from(),
|
|
16
13
|
});
|
|
17
14
|
});
|
|
18
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigate.jsx","sourceRoot":"","sources":["../../src/useNavigate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useNavigate.jsx","sourceRoot":"","sources":["../../src/useNavigate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AASvD,MAAM,UAAU,WAAW,CAGzB,YAED;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAC1D,MAAM,CAAC,cAAc,CACtB,CAAA;IAED,OAAO,CAAC,CAAC,OAAwB,EAAE,EAAE;QACnC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,CAAC,CAAA;QAE5D,OAAO,MAAM,CAAC,QAAQ,CAAC;YACrB,GAAG,OAAO;YACV,IAAI,EAAE,IAAI,EAAE;SACb,CAAC,CAAA;IACJ,CAAC,CAAoC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAMtB,KAA+D;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC;YACP,GAAG,KAAK;SACT,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/solid-router",
|
|
3
|
-
"version": "1.132.0-alpha.
|
|
3
|
+
"version": "1.132.0-alpha.12",
|
|
4
4
|
"description": "Modern and scalable routing for Solid applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"isbot": "^5.1.22",
|
|
89
89
|
"tiny-invariant": "^1.3.3",
|
|
90
90
|
"tiny-warning": "^1.0.3",
|
|
91
|
-
"@tanstack/history": "1.132.0-alpha.
|
|
92
|
-
"@tanstack/router-core": "1.132.0-alpha.
|
|
91
|
+
"@tanstack/history": "1.132.0-alpha.1",
|
|
92
|
+
"@tanstack/router-core": "1.132.0-alpha.12"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@solidjs/testing-library": "^0.8.10",
|
package/src/HeadContent.tsx
CHANGED
|
@@ -18,9 +18,12 @@ export const useTags = () => {
|
|
|
18
18
|
const resultMeta: Array<RouterManagedTag> = []
|
|
19
19
|
const metaByAttribute: Record<string, true> = {}
|
|
20
20
|
let title: RouterManagedTag | undefined
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const routeMetasArray = routeMeta()
|
|
22
|
+
for (let i = routeMetasArray.length - 1; i >= 0; i--) {
|
|
23
|
+
const metas = routeMetasArray[i]!
|
|
24
|
+
for (let j = metas.length - 1; j >= 0; j--) {
|
|
25
|
+
const m = metas[j]
|
|
26
|
+
if (!m) continue
|
|
24
27
|
|
|
25
28
|
if (m.title) {
|
|
26
29
|
if (!title) {
|
|
@@ -33,7 +36,7 @@ export const useTags = () => {
|
|
|
33
36
|
const attribute = m.name ?? m.property
|
|
34
37
|
if (attribute) {
|
|
35
38
|
if (metaByAttribute[attribute]) {
|
|
36
|
-
|
|
39
|
+
continue
|
|
37
40
|
} else {
|
|
38
41
|
metaByAttribute[attribute] = true
|
|
39
42
|
}
|
|
@@ -46,8 +49,8 @@ export const useTags = () => {
|
|
|
46
49
|
},
|
|
47
50
|
})
|
|
48
51
|
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
51
54
|
|
|
52
55
|
if (title) {
|
|
53
56
|
resultMeta.push(title)
|
package/src/Match.tsx
CHANGED
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
getLocationChangeInfo,
|
|
7
7
|
isNotFound,
|
|
8
8
|
isRedirect,
|
|
9
|
-
pick,
|
|
10
9
|
rootRouteId,
|
|
11
10
|
} from '@tanstack/router-core'
|
|
12
11
|
import { Dynamic } from 'solid-js/web'
|
|
@@ -30,7 +29,11 @@ export const Match = (props: { matchId: string }) => {
|
|
|
30
29
|
match,
|
|
31
30
|
`Could not find match for matchId "${props.matchId}". Please file an issue!`,
|
|
32
31
|
)
|
|
33
|
-
return
|
|
32
|
+
return {
|
|
33
|
+
routeId: match.routeId,
|
|
34
|
+
ssr: match.ssr,
|
|
35
|
+
_displayPending: match._displayPending,
|
|
36
|
+
}
|
|
34
37
|
},
|
|
35
38
|
})
|
|
36
39
|
|
|
@@ -182,8 +185,7 @@ export const MatchInner = (props: { matchId: string }): any => {
|
|
|
182
185
|
|
|
183
186
|
const matchState = useRouterState({
|
|
184
187
|
select: (s) => {
|
|
185
|
-
const
|
|
186
|
-
const match = s.matches[matchIndex]!
|
|
188
|
+
const match = s.matches.find((d) => d.id === props.matchId)!
|
|
187
189
|
const routeId = match.routeId as string
|
|
188
190
|
|
|
189
191
|
const remountFn =
|
|
@@ -200,13 +202,13 @@ export const MatchInner = (props: { matchId: string }): any => {
|
|
|
200
202
|
return {
|
|
201
203
|
key,
|
|
202
204
|
routeId,
|
|
203
|
-
match:
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
205
|
+
match: {
|
|
206
|
+
id: match.id,
|
|
207
|
+
status: match.status,
|
|
208
|
+
error: match.error,
|
|
209
|
+
_forcePending: match._forcePending,
|
|
210
|
+
_displayPending: match._displayPending,
|
|
211
|
+
},
|
|
210
212
|
}
|
|
211
213
|
},
|
|
212
214
|
})
|
|
@@ -218,8 +220,9 @@ export const MatchInner = (props: { matchId: string }): any => {
|
|
|
218
220
|
const out = () => {
|
|
219
221
|
const Comp = route().options.component ?? router.options.defaultComponent
|
|
220
222
|
if (Comp) {
|
|
223
|
+
const key = matchState().key ?? matchState().match.id
|
|
221
224
|
return (
|
|
222
|
-
<Solid.Show when={
|
|
225
|
+
<Solid.Show when={key} keyed>
|
|
223
226
|
<Comp />
|
|
224
227
|
</Solid.Show>
|
|
225
228
|
)
|
|
@@ -232,7 +235,8 @@ export const MatchInner = (props: { matchId: string }): any => {
|
|
|
232
235
|
<Solid.Match when={match()._displayPending}>
|
|
233
236
|
{(_) => {
|
|
234
237
|
const [displayPendingResult] = Solid.createResource(
|
|
235
|
-
() =>
|
|
238
|
+
() =>
|
|
239
|
+
router.getMatch(match().id)?._nonReactive.displayPendingPromise,
|
|
236
240
|
)
|
|
237
241
|
|
|
238
242
|
return <>{displayPendingResult()}</>
|
|
@@ -241,7 +245,7 @@ export const MatchInner = (props: { matchId: string }): any => {
|
|
|
241
245
|
<Solid.Match when={match()._forcePending}>
|
|
242
246
|
{(_) => {
|
|
243
247
|
const [minPendingResult] = Solid.createResource(
|
|
244
|
-
() => router.getMatch(match().id)?.minPendingPromise,
|
|
248
|
+
() => router.getMatch(match().id)?._nonReactive.minPendingPromise,
|
|
245
249
|
)
|
|
246
250
|
|
|
247
251
|
return <>{minPendingResult()}</>
|
|
@@ -252,33 +256,27 @@ export const MatchInner = (props: { matchId: string }): any => {
|
|
|
252
256
|
const pendingMinMs =
|
|
253
257
|
route().options.pendingMinMs ?? router.options.defaultPendingMinMs
|
|
254
258
|
|
|
255
|
-
if (pendingMinMs
|
|
256
|
-
|
|
257
|
-
if (!
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
// We've handled the minPendingPromise, so we can delete it
|
|
271
|
-
router.updateMatch(match().id, (prev) => ({
|
|
272
|
-
...prev,
|
|
273
|
-
minPendingPromise: undefined,
|
|
274
|
-
}))
|
|
275
|
-
}, pendingMinMs)
|
|
259
|
+
if (pendingMinMs) {
|
|
260
|
+
const routerMatch = router.getMatch(match().id)
|
|
261
|
+
if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {
|
|
262
|
+
// Create a promise that will resolve after the minPendingMs
|
|
263
|
+
if (!router.isServer) {
|
|
264
|
+
const minPendingPromise = createControlledPromise<void>()
|
|
265
|
+
|
|
266
|
+
routerMatch._nonReactive.minPendingPromise = minPendingPromise
|
|
267
|
+
|
|
268
|
+
setTimeout(() => {
|
|
269
|
+
minPendingPromise.resolve()
|
|
270
|
+
// We've handled the minPendingPromise, so we can delete it
|
|
271
|
+
routerMatch._nonReactive.minPendingPromise = undefined
|
|
272
|
+
}, pendingMinMs)
|
|
273
|
+
}
|
|
276
274
|
}
|
|
277
275
|
}
|
|
278
276
|
|
|
279
277
|
const [loaderResult] = Solid.createResource(async () => {
|
|
280
278
|
await new Promise((r) => setTimeout(r, 0))
|
|
281
|
-
return router.getMatch(match().id)?.loadPromise
|
|
279
|
+
return router.getMatch(match().id)?._nonReactive.loadPromise
|
|
282
280
|
})
|
|
283
281
|
|
|
284
282
|
return <>{loaderResult()}</>
|
|
@@ -297,7 +295,7 @@ export const MatchInner = (props: { matchId: string }): any => {
|
|
|
297
295
|
|
|
298
296
|
const [loaderResult] = Solid.createResource(async () => {
|
|
299
297
|
await new Promise((r) => setTimeout(r, 0))
|
|
300
|
-
return router.getMatch(match().id)?.loadPromise
|
|
298
|
+
return router.getMatch(match().id)?._nonReactive.loadPromise
|
|
301
299
|
})
|
|
302
300
|
|
|
303
301
|
return <>{loaderResult()}</>
|
package/src/ScriptOnce.tsx
CHANGED
package/src/fileRoute.ts
CHANGED
|
@@ -20,6 +20,7 @@ import type {
|
|
|
20
20
|
FileBaseRouteOptions,
|
|
21
21
|
FileRoutesByPath,
|
|
22
22
|
LazyRouteOptions,
|
|
23
|
+
Register,
|
|
23
24
|
RegisteredRouter,
|
|
24
25
|
ResolveParams,
|
|
25
26
|
Route,
|
|
@@ -76,6 +77,7 @@ export class FileRoute<
|
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
createRoute = <
|
|
80
|
+
TRegister extends Register = Register,
|
|
79
81
|
TSearchValidator = undefined,
|
|
80
82
|
TParams = ResolveParams<TPath>,
|
|
81
83
|
TRouteContextFn = AnyContext,
|
|
@@ -83,8 +85,10 @@ export class FileRoute<
|
|
|
83
85
|
TLoaderDeps extends Record<string, any> = {},
|
|
84
86
|
TLoaderFn = undefined,
|
|
85
87
|
TChildren = unknown,
|
|
88
|
+
TSSR = unknown,
|
|
86
89
|
>(
|
|
87
90
|
options?: FileBaseRouteOptions<
|
|
91
|
+
TRegister,
|
|
88
92
|
TParentRoute,
|
|
89
93
|
TId,
|
|
90
94
|
TPath,
|
|
@@ -94,7 +98,9 @@ export class FileRoute<
|
|
|
94
98
|
TLoaderFn,
|
|
95
99
|
AnyContext,
|
|
96
100
|
TRouteContextFn,
|
|
97
|
-
TBeforeLoadFn
|
|
101
|
+
TBeforeLoadFn,
|
|
102
|
+
AnyContext,
|
|
103
|
+
TSSR
|
|
98
104
|
> &
|
|
99
105
|
UpdatableRouteOptions<
|
|
100
106
|
TParentRoute,
|
|
@@ -109,6 +115,7 @@ export class FileRoute<
|
|
|
109
115
|
TBeforeLoadFn
|
|
110
116
|
>,
|
|
111
117
|
): Route<
|
|
118
|
+
TRegister,
|
|
112
119
|
TParentRoute,
|
|
113
120
|
TPath,
|
|
114
121
|
TFullPath,
|
|
@@ -122,7 +129,8 @@ export class FileRoute<
|
|
|
122
129
|
TLoaderDeps,
|
|
123
130
|
TLoaderFn,
|
|
124
131
|
TChildren,
|
|
125
|
-
unknown
|
|
132
|
+
unknown,
|
|
133
|
+
TSSR
|
|
126
134
|
> => {
|
|
127
135
|
warning(
|
|
128
136
|
this.silent,
|
package/src/index.tsx
CHANGED
|
@@ -13,15 +13,12 @@ export {
|
|
|
13
13
|
matchPathname,
|
|
14
14
|
removeBasepath,
|
|
15
15
|
matchByPath,
|
|
16
|
-
encode,
|
|
17
|
-
decode,
|
|
18
16
|
rootRouteId,
|
|
19
17
|
defaultSerializeError,
|
|
20
18
|
defaultParseSearch,
|
|
21
19
|
defaultStringifySearch,
|
|
22
20
|
parseSearchWith,
|
|
23
21
|
stringifySearchWith,
|
|
24
|
-
pick,
|
|
25
22
|
functionalUpdate,
|
|
26
23
|
replaceEqualDeep,
|
|
27
24
|
isPlainObject,
|
|
@@ -30,6 +27,7 @@ export {
|
|
|
30
27
|
createControlledPromise,
|
|
31
28
|
retainSearchParams,
|
|
32
29
|
stripSearchParams,
|
|
30
|
+
createSerializationAdapter,
|
|
33
31
|
} from '@tanstack/router-core'
|
|
34
32
|
|
|
35
33
|
export type {
|
|
@@ -192,6 +190,8 @@ export type {
|
|
|
192
190
|
InjectedHtmlEntry,
|
|
193
191
|
CreateFileRoute,
|
|
194
192
|
CreateLazyFileRoute,
|
|
193
|
+
AnySerializationAdapter,
|
|
194
|
+
SerializationAdapter,
|
|
195
195
|
} from '@tanstack/router-core'
|
|
196
196
|
|
|
197
197
|
export {
|
package/src/link.tsx
CHANGED
|
@@ -15,7 +15,7 @@ import { useRouter } from './useRouter'
|
|
|
15
15
|
|
|
16
16
|
import { useIntersectionObserver } from './utils'
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { useActiveLocation } from './useActiveLocation'
|
|
19
19
|
import type {
|
|
20
20
|
AnyRouter,
|
|
21
21
|
Constrain,
|
|
@@ -133,20 +133,20 @@ export function useLinkProps<
|
|
|
133
133
|
select: (s) => s.location.searchStr,
|
|
134
134
|
})
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
// so relative routing works as expected
|
|
138
|
-
const from = useMatch({
|
|
139
|
-
strict: false,
|
|
140
|
-
select: (match) => options.from ?? match.fullPath,
|
|
141
|
-
})
|
|
136
|
+
const { getFromPath, activeLocation } = useActiveLocation()
|
|
142
137
|
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
138
|
+
const from = getFromPath(options.from)
|
|
139
|
+
|
|
140
|
+
const _options = () => {
|
|
141
|
+
return {
|
|
142
|
+
...options,
|
|
143
|
+
from: from(),
|
|
144
|
+
}
|
|
145
|
+
}
|
|
147
146
|
|
|
148
147
|
const next = Solid.createMemo(() => {
|
|
149
148
|
currentSearch()
|
|
149
|
+
activeLocation()
|
|
150
150
|
return router.buildLocation(_options() as any)
|
|
151
151
|
})
|
|
152
152
|
|