@tanstack/solid-router 1.132.0-alpha.4 → 1.132.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/Asset.cjs +30 -1
- package/dist/cjs/Asset.cjs.map +1 -1
- package/dist/cjs/Matches.cjs +22 -18
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/RouterProvider.cjs +9 -9
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/ScriptOnce.cjs +12 -2
- package/dist/cjs/ScriptOnce.cjs.map +1 -1
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/fileRoute.d.cts +3 -3
- package/dist/cjs/index.cjs +8 -4
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +4 -2
- package/dist/cjs/link.cjs +51 -32
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +11 -11
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +2 -2
- package/dist/cjs/ssr/renderRouterToString.cjs +1 -0
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
- package/dist/cjs/useBlocker.cjs +1 -1
- package/dist/cjs/useBlocker.cjs.map +1 -1
- package/dist/cjs/useNavigate.cjs +3 -11
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/cjs/useParams.cjs +3 -2
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/esm/Asset.js +30 -1
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/Matches.js +16 -12
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.js +9 -9
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/ScriptOnce.js +13 -3
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/fileRoute.d.ts +3 -3
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +3 -2
- package/dist/esm/link.js +51 -32
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/route.d.ts +11 -11
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.d.ts +2 -2
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/ssr/renderRouterToString.js +1 -0
- package/dist/esm/ssr/renderRouterToString.js.map +1 -1
- package/dist/esm/useBlocker.js +1 -1
- package/dist/esm/useBlocker.js.map +1 -1
- package/dist/esm/useNavigate.js +3 -11
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useParams.js +3 -2
- package/dist/esm/useParams.js.map +1 -1
- package/dist/source/Asset.jsx +33 -1
- package/dist/source/Asset.jsx.map +1 -1
- package/dist/source/Matches.jsx +11 -7
- package/dist/source/Matches.jsx.map +1 -1
- package/dist/source/RouterProvider.jsx +7 -7
- package/dist/source/RouterProvider.jsx.map +1 -1
- package/dist/source/ScriptOnce.jsx +4 -2
- package/dist/source/ScriptOnce.jsx.map +1 -1
- package/dist/source/fileRoute.d.ts +3 -3
- package/dist/source/fileRoute.js.map +1 -1
- package/dist/source/index.d.ts +4 -2
- package/dist/source/index.jsx +2 -1
- package/dist/source/index.jsx.map +1 -1
- package/dist/source/link.jsx +52 -42
- package/dist/source/link.jsx.map +1 -1
- package/dist/source/route.d.ts +11 -11
- package/dist/source/route.jsx.map +1 -1
- package/dist/source/router.d.ts +2 -2
- package/dist/source/router.js.map +1 -1
- package/dist/source/ssr/renderRouterToString.jsx +1 -0
- package/dist/source/ssr/renderRouterToString.jsx.map +1 -1
- package/dist/source/useBlocker.jsx +1 -1
- package/dist/source/useBlocker.jsx.map +1 -1
- package/dist/source/useNavigate.jsx +3 -10
- package/dist/source/useNavigate.jsx.map +1 -1
- package/dist/source/useParams.jsx +3 -2
- package/dist/source/useParams.jsx.map +1 -1
- package/package.json +3 -3
- package/src/Asset.tsx +47 -1
- package/src/Matches.tsx +18 -16
- package/src/RouterProvider.tsx +9 -10
- package/src/ScriptOnce.tsx +5 -2
- package/src/fileRoute.ts +17 -2
- package/src/index.tsx +7 -4
- package/src/link.tsx +52 -46
- package/src/route.tsx +101 -17
- package/src/router.ts +2 -5
- package/src/ssr/renderRouterToString.tsx +1 -0
- package/src/useBlocker.tsx +1 -1
- package/src/useNavigate.tsx +3 -12
- package/src/useParams.tsx +6 -4
|
@@ -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,11 @@
|
|
|
1
1
|
import * as Solid from 'solid-js';
|
|
2
2
|
import { useRouter } from './useRouter';
|
|
3
|
-
import { useMatch } from './useMatch';
|
|
4
3
|
export function useNavigate(_defaultOpts) {
|
|
5
|
-
const
|
|
6
|
-
const matchIndex = useMatch({
|
|
7
|
-
strict: false,
|
|
8
|
-
select: (match) => match.index,
|
|
9
|
-
});
|
|
4
|
+
const router = useRouter();
|
|
10
5
|
return ((options) => {
|
|
11
|
-
return navigate({
|
|
6
|
+
return router.navigate({
|
|
12
7
|
...options,
|
|
13
|
-
from: options.from ??
|
|
14
|
-
_defaultOpts?.from ??
|
|
15
|
-
state.matches[matchIndex()].fullPath,
|
|
8
|
+
from: options.from ?? _defaultOpts?.from,
|
|
16
9
|
});
|
|
17
10
|
});
|
|
18
11
|
}
|
|
@@ -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;
|
|
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;AASvC,MAAM,UAAU,WAAW,CAGzB,YAED;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CAAC,CAAC,OAAwB,EAAE,EAAE;QACnC,OAAO,MAAM,CAAC,QAAQ,CAAC;YACrB,GAAG,OAAO;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI;SACzC,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"}
|
|
@@ -2,10 +2,11 @@ import { useMatch } from './useMatch';
|
|
|
2
2
|
export function useParams(opts) {
|
|
3
3
|
return useMatch({
|
|
4
4
|
from: opts.from,
|
|
5
|
-
strict: opts.strict,
|
|
6
5
|
shouldThrow: opts.shouldThrow,
|
|
6
|
+
strict: opts.strict,
|
|
7
7
|
select: (match) => {
|
|
8
|
-
|
|
8
|
+
const params = opts.strict === false ? match.params : match._strictParams;
|
|
9
|
+
return opts.select ? opts.select(params) : params;
|
|
9
10
|
},
|
|
10
11
|
});
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useParams.jsx","sourceRoot":"","sources":["../../src/useParams.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AA6CrC,MAAM,UAAU,SAAS,CAOvB,IAMC;IAID,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAK;QAChB,
|
|
1
|
+
{"version":3,"file":"useParams.jsx","sourceRoot":"","sources":["../../src/useParams.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AA6CrC,MAAM,UAAU,SAAS,CAOvB,IAMC;IAID,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAK;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAA;YAEzE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACnD,CAAC;KACF,CAAkB,CAAA;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/solid-router",
|
|
3
|
-
"version": "1.132.0
|
|
3
|
+
"version": "1.132.0",
|
|
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/
|
|
92
|
-
"@tanstack/
|
|
91
|
+
"@tanstack/router-core": "1.132.0",
|
|
92
|
+
"@tanstack/history": "1.132.0"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@solidjs/testing-library": "^0.8.10",
|
package/src/Asset.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Meta, Style, Title } from '@solidjs/meta'
|
|
2
2
|
import { onCleanup, onMount } from 'solid-js'
|
|
3
|
+
import { useRouter } from './useRouter'
|
|
3
4
|
import type { RouterManagedTag } from '@tanstack/router-core'
|
|
4
5
|
import type { JSX } from 'solid-js'
|
|
5
6
|
|
|
@@ -36,8 +37,26 @@ function Script({
|
|
|
36
37
|
attrs?: ScriptAttrs
|
|
37
38
|
children?: string
|
|
38
39
|
}): JSX.Element | null {
|
|
40
|
+
const router = useRouter()
|
|
41
|
+
|
|
39
42
|
onMount(() => {
|
|
40
43
|
if (attrs?.src) {
|
|
44
|
+
const normSrc = (() => {
|
|
45
|
+
try {
|
|
46
|
+
const base = document.baseURI || window.location.href
|
|
47
|
+
return new URL(attrs.src, base).href
|
|
48
|
+
} catch {
|
|
49
|
+
return attrs.src
|
|
50
|
+
}
|
|
51
|
+
})()
|
|
52
|
+
const existingScript = Array.from(
|
|
53
|
+
document.querySelectorAll('script[src]'),
|
|
54
|
+
).find((el) => (el as HTMLScriptElement).src === normSrc)
|
|
55
|
+
|
|
56
|
+
if (existingScript) {
|
|
57
|
+
return
|
|
58
|
+
}
|
|
59
|
+
|
|
41
60
|
const script = document.createElement('script')
|
|
42
61
|
|
|
43
62
|
for (const [key, value] of Object.entries(attrs)) {
|
|
@@ -56,7 +75,30 @@ function Script({
|
|
|
56
75
|
script.parentNode.removeChild(script)
|
|
57
76
|
}
|
|
58
77
|
})
|
|
59
|
-
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (typeof children === 'string') {
|
|
81
|
+
const typeAttr =
|
|
82
|
+
typeof attrs?.type === 'string' ? attrs.type : 'text/javascript'
|
|
83
|
+
const nonceAttr =
|
|
84
|
+
typeof attrs?.nonce === 'string' ? attrs.nonce : undefined
|
|
85
|
+
const existingScript = Array.from(
|
|
86
|
+
document.querySelectorAll('script:not([src])'),
|
|
87
|
+
).find((el) => {
|
|
88
|
+
if (!(el instanceof HTMLScriptElement)) return false
|
|
89
|
+
const sType = el.getAttribute('type') ?? 'text/javascript'
|
|
90
|
+
const sNonce = el.getAttribute('nonce') ?? undefined
|
|
91
|
+
return (
|
|
92
|
+
el.textContent === children &&
|
|
93
|
+
sType === typeAttr &&
|
|
94
|
+
sNonce === nonceAttr
|
|
95
|
+
)
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
if (existingScript) {
|
|
99
|
+
return
|
|
100
|
+
}
|
|
101
|
+
|
|
60
102
|
const script = document.createElement('script')
|
|
61
103
|
script.textContent = children
|
|
62
104
|
|
|
@@ -81,6 +123,10 @@ function Script({
|
|
|
81
123
|
}
|
|
82
124
|
})
|
|
83
125
|
|
|
126
|
+
if (router && !router.isServer) {
|
|
127
|
+
return null
|
|
128
|
+
}
|
|
129
|
+
|
|
84
130
|
if (attrs?.src && typeof attrs.src === 'string') {
|
|
85
131
|
return <script {...attrs} />
|
|
86
132
|
}
|
package/src/Matches.tsx
CHANGED
|
@@ -38,27 +38,27 @@ declare module '@tanstack/router-core' {
|
|
|
38
38
|
export function Matches() {
|
|
39
39
|
const router = useRouter()
|
|
40
40
|
|
|
41
|
-
const pendingElement = router.options.defaultPendingComponent ? (
|
|
42
|
-
<router.options.defaultPendingComponent />
|
|
43
|
-
) : null
|
|
44
|
-
|
|
45
41
|
// Do not render a root Suspense during SSR or hydrating from SSR
|
|
46
42
|
const ResolvedSuspense =
|
|
47
43
|
router.isServer || (typeof document !== 'undefined' && router.ssr)
|
|
48
44
|
? SafeFragment
|
|
49
45
|
: Solid.Suspense
|
|
50
46
|
|
|
51
|
-
const
|
|
52
|
-
<ResolvedSuspense fallback={pendingElement}>
|
|
53
|
-
{!router.isServer && <Transitioner />}
|
|
54
|
-
<MatchesInner />
|
|
55
|
-
</ResolvedSuspense>
|
|
56
|
-
)
|
|
47
|
+
const OptionalWrapper = router.options.InnerWrap || SafeFragment
|
|
57
48
|
|
|
58
|
-
return
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
return (
|
|
50
|
+
<OptionalWrapper>
|
|
51
|
+
<ResolvedSuspense
|
|
52
|
+
fallback={
|
|
53
|
+
router.options.defaultPendingComponent ? (
|
|
54
|
+
<router.options.defaultPendingComponent />
|
|
55
|
+
) : null
|
|
56
|
+
}
|
|
57
|
+
>
|
|
58
|
+
{!router.isServer && <Transitioner />}
|
|
59
|
+
<MatchesInner />
|
|
60
|
+
</ResolvedSuspense>
|
|
61
|
+
</OptionalWrapper>
|
|
62
62
|
)
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -74,8 +74,10 @@ function MatchesInner() {
|
|
|
74
74
|
select: (s) => s.loadedAt,
|
|
75
75
|
})
|
|
76
76
|
|
|
77
|
-
const matchComponent = () =>
|
|
78
|
-
|
|
77
|
+
const matchComponent = () => {
|
|
78
|
+
const id = matchId()
|
|
79
|
+
return id ? <Match matchId={id} /> : null
|
|
80
|
+
}
|
|
79
81
|
|
|
80
82
|
return (
|
|
81
83
|
<matchContext.Provider value={matchId}>
|
package/src/RouterProvider.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Matches } from './Matches'
|
|
2
2
|
import { getRouterContext } from './routerContext'
|
|
3
|
+
import { SafeFragment } from './SafeFragment'
|
|
3
4
|
import type * as Solid from 'solid-js'
|
|
4
5
|
import type {
|
|
5
6
|
AnyRouter,
|
|
@@ -29,17 +30,15 @@ export function RouterContextProvider<
|
|
|
29
30
|
|
|
30
31
|
const routerContext = getRouterContext()
|
|
31
32
|
|
|
32
|
-
const
|
|
33
|
-
<routerContext.Provider value={router as AnyRouter}>
|
|
34
|
-
{children()}
|
|
35
|
-
</routerContext.Provider>
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
if (router.options.Wrap) {
|
|
39
|
-
return <router.options.Wrap>{provider}</router.options.Wrap>
|
|
40
|
-
}
|
|
33
|
+
const OptionalWrapper = router.options.Wrap || SafeFragment
|
|
41
34
|
|
|
42
|
-
return
|
|
35
|
+
return (
|
|
36
|
+
<OptionalWrapper>
|
|
37
|
+
<routerContext.Provider value={router as AnyRouter}>
|
|
38
|
+
{children()}
|
|
39
|
+
</routerContext.Provider>
|
|
40
|
+
</OptionalWrapper>
|
|
41
|
+
)
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
export function RouterProvider<
|
package/src/ScriptOnce.tsx
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { useRouter } from './useRouter'
|
|
2
|
+
|
|
1
3
|
export function ScriptOnce({
|
|
2
4
|
children,
|
|
3
5
|
}: {
|
|
@@ -5,12 +7,13 @@ export function ScriptOnce({
|
|
|
5
7
|
log?: boolean
|
|
6
8
|
sync?: boolean
|
|
7
9
|
}) {
|
|
8
|
-
|
|
10
|
+
const router = useRouter()
|
|
11
|
+
if (!router.isServer) {
|
|
9
12
|
return null
|
|
10
13
|
}
|
|
11
|
-
|
|
12
14
|
return (
|
|
13
15
|
<script
|
|
16
|
+
nonce={router.options.ssr?.nonce}
|
|
14
17
|
class="$tsr"
|
|
15
18
|
innerHTML={[children].filter(Boolean).join('\n') + ';$_TSR.c()'}
|
|
16
19
|
/>
|
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 = Register,
|
|
79
81
|
TSearchValidator = undefined,
|
|
80
82
|
TParams = ResolveParams<TPath>,
|
|
81
83
|
TRouteContextFn = AnyContext,
|
|
@@ -83,8 +85,12 @@ export class FileRoute<
|
|
|
83
85
|
TLoaderDeps extends Record<string, any> = {},
|
|
84
86
|
TLoaderFn = undefined,
|
|
85
87
|
TChildren = unknown,
|
|
88
|
+
TSSR = unknown,
|
|
89
|
+
TMiddlewares = unknown,
|
|
90
|
+
THandlers = undefined,
|
|
86
91
|
>(
|
|
87
92
|
options?: FileBaseRouteOptions<
|
|
93
|
+
TRegister,
|
|
88
94
|
TParentRoute,
|
|
89
95
|
TId,
|
|
90
96
|
TPath,
|
|
@@ -94,7 +100,11 @@ export class FileRoute<
|
|
|
94
100
|
TLoaderFn,
|
|
95
101
|
AnyContext,
|
|
96
102
|
TRouteContextFn,
|
|
97
|
-
TBeforeLoadFn
|
|
103
|
+
TBeforeLoadFn,
|
|
104
|
+
AnyContext,
|
|
105
|
+
TSSR,
|
|
106
|
+
TMiddlewares,
|
|
107
|
+
THandlers
|
|
98
108
|
> &
|
|
99
109
|
UpdatableRouteOptions<
|
|
100
110
|
TParentRoute,
|
|
@@ -109,6 +119,7 @@ export class FileRoute<
|
|
|
109
119
|
TBeforeLoadFn
|
|
110
120
|
>,
|
|
111
121
|
): Route<
|
|
122
|
+
TRegister,
|
|
112
123
|
TParentRoute,
|
|
113
124
|
TPath,
|
|
114
125
|
TFullPath,
|
|
@@ -122,7 +133,10 @@ export class FileRoute<
|
|
|
122
133
|
TLoaderDeps,
|
|
123
134
|
TLoaderFn,
|
|
124
135
|
TChildren,
|
|
125
|
-
unknown
|
|
136
|
+
unknown,
|
|
137
|
+
TSSR,
|
|
138
|
+
TMiddlewares,
|
|
139
|
+
THandlers
|
|
126
140
|
> => {
|
|
127
141
|
warning(
|
|
128
142
|
this.silent,
|
|
@@ -148,6 +162,7 @@ export function FileRouteLoader<
|
|
|
148
162
|
loaderFn: Constrain<
|
|
149
163
|
TLoaderFn,
|
|
150
164
|
RouteLoaderFn<
|
|
165
|
+
Register,
|
|
151
166
|
TRoute['parentRoute'],
|
|
152
167
|
TRoute['types']['id'],
|
|
153
168
|
TRoute['types']['params'],
|
package/src/index.tsx
CHANGED
|
@@ -11,7 +11,6 @@ export {
|
|
|
11
11
|
parsePathname,
|
|
12
12
|
interpolatePath,
|
|
13
13
|
matchPathname,
|
|
14
|
-
removeBasepath,
|
|
15
14
|
matchByPath,
|
|
16
15
|
rootRouteId,
|
|
17
16
|
defaultSerializeError,
|
|
@@ -164,7 +163,6 @@ export type {
|
|
|
164
163
|
AnyRouteMatch,
|
|
165
164
|
RouteContextFn,
|
|
166
165
|
RouteContextOptions,
|
|
167
|
-
BeforeLoadFn,
|
|
168
166
|
BeforeLoadContextOptions,
|
|
169
167
|
ContextOptions,
|
|
170
168
|
RootRouteOptions,
|
|
@@ -190,8 +188,8 @@ export type {
|
|
|
190
188
|
InjectedHtmlEntry,
|
|
191
189
|
CreateFileRoute,
|
|
192
190
|
CreateLazyFileRoute,
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
AnySerializationAdapter,
|
|
192
|
+
SerializationAdapter,
|
|
195
193
|
} from '@tanstack/router-core'
|
|
196
194
|
|
|
197
195
|
export {
|
|
@@ -354,3 +352,8 @@ export { ScriptOnce } from './ScriptOnce'
|
|
|
354
352
|
export { Asset } from './Asset'
|
|
355
353
|
export { HeadContent, useTags } from './HeadContent'
|
|
356
354
|
export { Scripts } from './Scripts'
|
|
355
|
+
export { rewriteBasepath, composeRewrites } from '@tanstack/router-core'
|
|
356
|
+
export type {
|
|
357
|
+
LocationRewrite,
|
|
358
|
+
LocationRewriteFunction,
|
|
359
|
+
} from '@tanstack/router-core'
|
package/src/link.tsx
CHANGED
|
@@ -15,7 +15,6 @@ import { useRouter } from './useRouter'
|
|
|
15
15
|
|
|
16
16
|
import { useIntersectionObserver } from './utils'
|
|
17
17
|
|
|
18
|
-
import { useMatch } from './useMatch'
|
|
19
18
|
import type {
|
|
20
19
|
AnyRouter,
|
|
21
20
|
Constrain,
|
|
@@ -115,43 +114,60 @@ export function useLinkProps<
|
|
|
115
114
|
'unsafeRelative',
|
|
116
115
|
])
|
|
117
116
|
|
|
118
|
-
// If this link simply reloads the current route,
|
|
119
|
-
// make sure it has a new key so it will trigger a data refresh
|
|
120
|
-
|
|
121
|
-
// If this `to` is a valid external URL, return
|
|
122
|
-
// null for LinkUtils
|
|
123
|
-
|
|
124
|
-
const type: Solid.Accessor<'internal' | 'external'> = () => {
|
|
125
|
-
try {
|
|
126
|
-
new URL(`${local.to}`)
|
|
127
|
-
return 'external'
|
|
128
|
-
} catch {}
|
|
129
|
-
return 'internal'
|
|
130
|
-
}
|
|
131
|
-
|
|
132
117
|
const currentSearch = useRouterState({
|
|
133
118
|
select: (s) => s.location.searchStr,
|
|
134
119
|
})
|
|
135
120
|
|
|
136
|
-
|
|
137
|
-
// so relative routing works as expected
|
|
138
|
-
const from = useMatch({
|
|
139
|
-
strict: false,
|
|
140
|
-
select: (match) => options.from ?? match.fullPath,
|
|
141
|
-
})
|
|
121
|
+
const from = options.from
|
|
142
122
|
|
|
143
|
-
const _options = () =>
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
123
|
+
const _options = () => {
|
|
124
|
+
return {
|
|
125
|
+
...options,
|
|
126
|
+
from,
|
|
127
|
+
}
|
|
128
|
+
}
|
|
147
129
|
|
|
148
130
|
const next = Solid.createMemo(() => {
|
|
149
131
|
currentSearch()
|
|
150
132
|
return router.buildLocation(_options() as any)
|
|
151
133
|
})
|
|
152
134
|
|
|
135
|
+
const hrefOption = Solid.createMemo(() => {
|
|
136
|
+
if (_options().disabled) {
|
|
137
|
+
return undefined
|
|
138
|
+
}
|
|
139
|
+
let href
|
|
140
|
+
const maskedLocation = next().maskedLocation
|
|
141
|
+
if (maskedLocation) {
|
|
142
|
+
href = maskedLocation.url
|
|
143
|
+
} else {
|
|
144
|
+
href = next().url
|
|
145
|
+
}
|
|
146
|
+
let external = false
|
|
147
|
+
if (router.origin) {
|
|
148
|
+
if (href.startsWith(router.origin)) {
|
|
149
|
+
href = href.replace(router.origin, '')
|
|
150
|
+
} else {
|
|
151
|
+
external = true
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return { href, external }
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
const externalLink = Solid.createMemo(() => {
|
|
158
|
+
const _href = hrefOption()
|
|
159
|
+
if (_href?.external) {
|
|
160
|
+
return _href.href
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
new URL(_options().to as any)
|
|
164
|
+
return _options().to
|
|
165
|
+
} catch {}
|
|
166
|
+
return undefined
|
|
167
|
+
})
|
|
168
|
+
|
|
153
169
|
const preload = Solid.createMemo(() => {
|
|
154
|
-
if (_options().reloadDocument) {
|
|
170
|
+
if (_options().reloadDocument || externalLink()) {
|
|
155
171
|
return false
|
|
156
172
|
}
|
|
157
173
|
return local.preload ?? router.options.defaultPreload
|
|
@@ -161,6 +177,7 @@ export function useLinkProps<
|
|
|
161
177
|
|
|
162
178
|
const isActive = useRouterState({
|
|
163
179
|
select: (s) => {
|
|
180
|
+
if (externalLink()) return false
|
|
164
181
|
if (local.activeOptions?.exact) {
|
|
165
182
|
const testExact = exactPathTest(
|
|
166
183
|
s.location.pathname,
|
|
@@ -238,17 +255,12 @@ export function useLinkProps<
|
|
|
238
255
|
}
|
|
239
256
|
})
|
|
240
257
|
|
|
241
|
-
if (
|
|
258
|
+
if (externalLink()) {
|
|
242
259
|
return Solid.mergeProps(
|
|
243
260
|
propsSafeToSpread,
|
|
244
261
|
{
|
|
245
262
|
ref,
|
|
246
|
-
|
|
247
|
-
return type()
|
|
248
|
-
},
|
|
249
|
-
get href() {
|
|
250
|
-
return local.to
|
|
251
|
-
},
|
|
263
|
+
href: externalLink,
|
|
252
264
|
},
|
|
253
265
|
Solid.splitProps(local, [
|
|
254
266
|
'target',
|
|
@@ -268,11 +280,16 @@ export function useLinkProps<
|
|
|
268
280
|
|
|
269
281
|
// The click handler
|
|
270
282
|
const handleClick = (e: MouseEvent) => {
|
|
283
|
+
// Check actual element's target attribute as fallback
|
|
284
|
+
const elementTarget = (e.currentTarget as HTMLAnchorElement).target
|
|
285
|
+
const effectiveTarget =
|
|
286
|
+
local.target !== undefined ? local.target : elementTarget
|
|
287
|
+
|
|
271
288
|
if (
|
|
272
289
|
!local.disabled &&
|
|
273
290
|
!isCtrlEvent(e) &&
|
|
274
291
|
!e.defaultPrevented &&
|
|
275
|
-
(!
|
|
292
|
+
(!effectiveTarget || effectiveTarget === '_self') &&
|
|
276
293
|
e.button === 0
|
|
277
294
|
) {
|
|
278
295
|
e.preventDefault()
|
|
@@ -384,24 +401,13 @@ export function useLinkProps<
|
|
|
384
401
|
...resolvedInactiveProps().style,
|
|
385
402
|
})
|
|
386
403
|
|
|
387
|
-
const href = Solid.createMemo(() => {
|
|
388
|
-
const nextLocation = next()
|
|
389
|
-
const maskedLocation = nextLocation?.maskedLocation
|
|
390
|
-
|
|
391
|
-
return _options().disabled
|
|
392
|
-
? undefined
|
|
393
|
-
: maskedLocation
|
|
394
|
-
? router.history.createHref(maskedLocation.href)
|
|
395
|
-
: router.history.createHref(nextLocation?.href)
|
|
396
|
-
})
|
|
397
|
-
|
|
398
404
|
return Solid.mergeProps(
|
|
399
405
|
propsSafeToSpread,
|
|
400
406
|
resolvedActiveProps,
|
|
401
407
|
resolvedInactiveProps,
|
|
402
408
|
() => {
|
|
403
409
|
return {
|
|
404
|
-
href:
|
|
410
|
+
href: hrefOption()?.href,
|
|
405
411
|
ref: mergeRefs(setRef, _options().ref),
|
|
406
412
|
onClick: composeEventHandlers([local.onClick, handleClick]),
|
|
407
413
|
onFocus: composeEventHandlers([local.onFocus, handleFocus]),
|