@tanstack/solid-router 1.134.18 → 1.134.20
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/Transitioner.cjs +4 -9
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/esm/Transitioner.js +4 -9
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/source/Transitioner.jsx +4 -10
- package/dist/source/Transitioner.jsx.map +1 -1
- package/package.json +2 -2
- package/src/Transitioner.tsx +4 -9
|
@@ -36,23 +36,18 @@ function Transitioner() {
|
|
|
36
36
|
if (router.isServer) {
|
|
37
37
|
return null;
|
|
38
38
|
}
|
|
39
|
-
const [
|
|
39
|
+
const [isSolidTransitioning, startSolidTransition] = Solid__namespace.useTransition();
|
|
40
40
|
const hasPendingMatches = useRouterState.useRouterState({
|
|
41
41
|
select: (s) => s.matches.some((d) => d.status === "pending")
|
|
42
42
|
});
|
|
43
43
|
const previousIsLoading = utils.usePrevious(isLoading);
|
|
44
|
-
const isAnyPending = () => isLoading() ||
|
|
44
|
+
const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
|
|
45
45
|
const previousIsAnyPending = utils.usePrevious(isAnyPending);
|
|
46
46
|
const isPagePending = () => isLoading() || hasPendingMatches();
|
|
47
47
|
const previousIsPagePending = utils.usePrevious(isPagePending);
|
|
48
48
|
router.startTransition = (fn) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
try {
|
|
52
|
-
await fn();
|
|
53
|
-
} finally {
|
|
54
|
-
setIsTransitioning(false);
|
|
55
|
-
}
|
|
49
|
+
Solid__namespace.startTransition(() => {
|
|
50
|
+
startSolidTransition(fn);
|
|
56
51
|
});
|
|
57
52
|
};
|
|
58
53
|
Solid__namespace.onMount(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transitioner.cjs","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n if (router.isServer) {\n return null\n }\n\n const [
|
|
1
|
+
{"version":3,"file":"Transitioner.cjs","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n if (router.isServer) {\n return null\n }\n\n const [isSolidTransitioning, startSolidTransition] = Solid.useTransition()\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = () =>\n isLoading() || isSolidTransitioning() || hasPendingMatches()\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = () => isLoading() || hasPendingMatches()\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void | Promise<void>) => {\n Solid.startTransition(() => {\n startSolidTransition(fn)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onMount(() => {\n const unsub = router.history.subscribe(router.load)\n\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n\n if (\n trimPathRight(router.latestLocation.href) !==\n trimPathRight(nextLocation.href)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n Solid.onCleanup(() => {\n unsub()\n })\n })\n\n // Try to load the initial location\n Solid.createRenderEffect(() => {\n Solid.untrack(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { router, mounted: true }\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n tryLoad()\n })\n })\n\n Solid.createRenderEffect(\n Solid.on(\n [previousIsLoading, isLoading],\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createComputed(\n Solid.on(\n [isPagePending, previousIsPagePending],\n ([isPagePending, previousIsPagePending]) => {\n // emit onBeforeRouteMount\n if (previousIsPagePending.previous && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createRenderEffect(\n Solid.on(\n [isAnyPending, previousIsAnyPending],\n ([isAnyPending, previousIsAnyPending]) => {\n // The router was pending and now it's not\n if (previousIsAnyPending.previous && !isAnyPending) {\n router.emit({\n type: 'onResolved',\n ...getLocationChangeInfo(router.state),\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n handleHashScroll(router)\n }\n },\n ),\n )\n\n return null\n}\n"],"names":["Transitioner","router","useRouter","mountLoadForRouter","mounted","isLoading","useRouterState","select","isServer","isSolidTransitioning","startSolidTransition","Solid","useTransition","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","onMount","unsub","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","href","commitLocation","replace","onCleanup","createRenderEffect","untrack","window","ssr","tryLoad","err","console","error","on","previous","emit","type","getLocationChangeInfo","createComputed","__store","setState","resolvedLocation","location","handleHashScroll"],"mappings":"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"}
|
package/dist/esm/Transitioner.js
CHANGED
|
@@ -17,23 +17,18 @@ function Transitioner() {
|
|
|
17
17
|
if (router.isServer) {
|
|
18
18
|
return null;
|
|
19
19
|
}
|
|
20
|
-
const [
|
|
20
|
+
const [isSolidTransitioning, startSolidTransition] = Solid.useTransition();
|
|
21
21
|
const hasPendingMatches = useRouterState({
|
|
22
22
|
select: (s) => s.matches.some((d) => d.status === "pending")
|
|
23
23
|
});
|
|
24
24
|
const previousIsLoading = usePrevious(isLoading);
|
|
25
|
-
const isAnyPending = () => isLoading() ||
|
|
25
|
+
const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
|
|
26
26
|
const previousIsAnyPending = usePrevious(isAnyPending);
|
|
27
27
|
const isPagePending = () => isLoading() || hasPendingMatches();
|
|
28
28
|
const previousIsPagePending = usePrevious(isPagePending);
|
|
29
29
|
router.startTransition = (fn) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
await fn();
|
|
34
|
-
} finally {
|
|
35
|
-
setIsTransitioning(false);
|
|
36
|
-
}
|
|
30
|
+
Solid.startTransition(() => {
|
|
31
|
+
startSolidTransition(fn);
|
|
37
32
|
});
|
|
38
33
|
};
|
|
39
34
|
Solid.onMount(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n if (router.isServer) {\n return null\n }\n\n const [
|
|
1
|
+
{"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n if (router.isServer) {\n return null\n }\n\n const [isSolidTransitioning, startSolidTransition] = Solid.useTransition()\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = () =>\n isLoading() || isSolidTransitioning() || hasPendingMatches()\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = () => isLoading() || hasPendingMatches()\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void | Promise<void>) => {\n Solid.startTransition(() => {\n startSolidTransition(fn)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onMount(() => {\n const unsub = router.history.subscribe(router.load)\n\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n\n if (\n trimPathRight(router.latestLocation.href) !==\n trimPathRight(nextLocation.href)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n Solid.onCleanup(() => {\n unsub()\n })\n })\n\n // Try to load the initial location\n Solid.createRenderEffect(() => {\n Solid.untrack(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { router, mounted: true }\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n tryLoad()\n })\n })\n\n Solid.createRenderEffect(\n Solid.on(\n [previousIsLoading, isLoading],\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createComputed(\n Solid.on(\n [isPagePending, previousIsPagePending],\n ([isPagePending, previousIsPagePending]) => {\n // emit onBeforeRouteMount\n if (previousIsPagePending.previous && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createRenderEffect(\n Solid.on(\n [isAnyPending, previousIsAnyPending],\n ([isAnyPending, previousIsAnyPending]) => {\n // The router was pending and now it's not\n if (previousIsAnyPending.previous && !isAnyPending) {\n router.emit({\n type: 'onResolved',\n ...getLocationChangeInfo(router.state),\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n handleHashScroll(router)\n }\n },\n ),\n )\n\n return null\n}\n"],"names":["Transitioner","router","useRouter","mountLoadForRouter","mounted","isLoading","useRouterState","select","isServer","isSolidTransitioning","startSolidTransition","Solid","useTransition","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","onMount","unsub","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","href","commitLocation","replace","onCleanup","createRenderEffect","untrack","window","ssr","tryLoad","err","console","error","on","previous","emit","type","getLocationChangeInfo","createComputed","__store","setState","resolvedLocation","location","handleHashScroll"],"mappings":"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"}
|
|
@@ -12,25 +12,19 @@ export function Transitioner() {
|
|
|
12
12
|
if (router.isServer) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
const [
|
|
15
|
+
const [isSolidTransitioning, startSolidTransition] = Solid.useTransition();
|
|
16
16
|
// Track pending state changes
|
|
17
17
|
const hasPendingMatches = useRouterState({
|
|
18
18
|
select: (s) => s.matches.some((d) => d.status === 'pending'),
|
|
19
19
|
});
|
|
20
20
|
const previousIsLoading = usePrevious(isLoading);
|
|
21
|
-
const isAnyPending = () => isLoading() ||
|
|
21
|
+
const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
|
|
22
22
|
const previousIsAnyPending = usePrevious(isAnyPending);
|
|
23
23
|
const isPagePending = () => isLoading() || hasPendingMatches();
|
|
24
24
|
const previousIsPagePending = usePrevious(isPagePending);
|
|
25
25
|
router.startTransition = (fn) => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
await fn();
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
setIsTransitioning(false);
|
|
33
|
-
}
|
|
26
|
+
Solid.startTransition(() => {
|
|
27
|
+
startSolidTransition(fn);
|
|
34
28
|
});
|
|
35
29
|
};
|
|
36
30
|
// Subscribe to location changes
|
|
@@ -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,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,kBAAkB,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACnD,MAAM,SAAS,GAAG,cAAc,CAAC;QAC/B,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS;KACrC,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/solid-router",
|
|
3
|
-
"version": "1.134.
|
|
3
|
+
"version": "1.134.20",
|
|
4
4
|
"description": "Modern and scalable routing for Solid applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"tiny-invariant": "^1.3.3",
|
|
90
90
|
"tiny-warning": "^1.0.3",
|
|
91
91
|
"@tanstack/history": "1.133.28",
|
|
92
|
-
"@tanstack/router-core": "1.134.
|
|
92
|
+
"@tanstack/router-core": "1.134.20"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@solidjs/testing-library": "^0.8.10",
|
package/src/Transitioner.tsx
CHANGED
|
@@ -19,7 +19,7 @@ export function Transitioner() {
|
|
|
19
19
|
return null
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const [
|
|
22
|
+
const [isSolidTransitioning, startSolidTransition] = Solid.useTransition()
|
|
23
23
|
|
|
24
24
|
// Track pending state changes
|
|
25
25
|
const hasPendingMatches = useRouterState({
|
|
@@ -29,20 +29,15 @@ export function Transitioner() {
|
|
|
29
29
|
const previousIsLoading = usePrevious(isLoading)
|
|
30
30
|
|
|
31
31
|
const isAnyPending = () =>
|
|
32
|
-
isLoading() ||
|
|
32
|
+
isLoading() || isSolidTransitioning() || hasPendingMatches()
|
|
33
33
|
const previousIsAnyPending = usePrevious(isAnyPending)
|
|
34
34
|
|
|
35
35
|
const isPagePending = () => isLoading() || hasPendingMatches()
|
|
36
36
|
const previousIsPagePending = usePrevious(isPagePending)
|
|
37
37
|
|
|
38
38
|
router.startTransition = (fn: () => void | Promise<void>) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
await fn()
|
|
43
|
-
} finally {
|
|
44
|
-
setIsTransitioning(false)
|
|
45
|
-
}
|
|
39
|
+
Solid.startTransition(() => {
|
|
40
|
+
startSolidTransition(fn)
|
|
46
41
|
})
|
|
47
42
|
}
|
|
48
43
|
|