@tanstack/vue-router 1.140.5 → 1.141.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/esm/Asset.js +122 -8
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/Body.d.ts +4 -0
- package/dist/esm/Body.js +26 -0
- package/dist/esm/Body.js.map +1 -0
- package/dist/esm/CatchBoundary.d.ts +1 -1
- package/dist/esm/CatchBoundary.js +8 -8
- package/dist/esm/CatchBoundary.js.map +1 -1
- package/dist/esm/Html.d.ts +4 -0
- package/dist/esm/Html.js +63 -0
- package/dist/esm/Html.js.map +1 -0
- package/dist/esm/Match.js +87 -49
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.js +3 -2
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.js +3 -0
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/ScriptOnce.d.ts +12 -5
- package/dist/esm/ScriptOnce.js +35 -15
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/Scripts.d.ts +2 -1
- package/dist/esm/Scripts.js +101 -35
- package/dist/esm/Scripts.js.map +1 -1
- package/dist/esm/Transitioner.d.ts +16 -0
- package/dist/esm/Transitioner.js +136 -133
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/awaited.d.ts +20 -5
- package/dist/esm/awaited.js +17 -20
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lazyRouteComponent.js +2 -2
- package/dist/esm/lazyRouteComponent.js.map +1 -1
- package/dist/esm/link.js +27 -35
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/scroll-restoration.d.ts +8 -1
- package/dist/esm/scroll-restoration.js +44 -12
- package/dist/esm/scroll-restoration.js.map +1 -1
- package/dist/esm/ssr/RouterClient.d.ts +15 -0
- package/dist/esm/ssr/RouterClient.js +46 -0
- package/dist/esm/ssr/RouterClient.js.map +1 -0
- package/dist/esm/ssr/RouterServer.d.ts +15 -0
- package/dist/esm/ssr/RouterServer.js +37 -0
- package/dist/esm/ssr/RouterServer.js.map +1 -0
- package/dist/esm/ssr/client.d.ts +1 -0
- package/dist/esm/ssr/client.js +5 -0
- package/dist/esm/ssr/client.js.map +1 -0
- package/dist/esm/ssr/defaultRenderHandler.d.ts +1 -0
- package/dist/esm/ssr/defaultRenderHandler.js +15 -0
- package/dist/esm/ssr/defaultRenderHandler.js.map +1 -0
- package/dist/esm/ssr/defaultStreamHandler.d.ts +1 -0
- package/dist/esm/ssr/defaultStreamHandler.js +17 -0
- package/dist/esm/ssr/defaultStreamHandler.js.map +1 -0
- package/dist/esm/ssr/renderRouterToStream.d.ts +8 -0
- package/dist/esm/ssr/renderRouterToStream.js +70 -0
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -0
- package/dist/esm/ssr/renderRouterToString.d.ts +7 -0
- package/dist/esm/ssr/renderRouterToString.js +33 -0
- package/dist/esm/ssr/renderRouterToString.js.map +1 -0
- package/dist/esm/ssr/server.d.ts +6 -0
- package/dist/esm/ssr/server.js +14 -0
- package/dist/esm/ssr/server.js.map +1 -0
- package/dist/source/Asset.jsx +119 -7
- package/dist/source/Asset.jsx.map +1 -1
- package/dist/source/Body.d.ts +4 -0
- package/dist/source/Body.jsx +15 -0
- package/dist/source/Body.jsx.map +1 -0
- package/dist/source/CatchBoundary.d.ts +1 -1
- package/dist/source/CatchBoundary.jsx +10 -23
- package/dist/source/CatchBoundary.jsx.map +1 -1
- package/dist/source/Html.d.ts +4 -0
- package/dist/source/Html.jsx +56 -0
- package/dist/source/Html.jsx.map +1 -0
- package/dist/source/Match.jsx +119 -54
- package/dist/source/Match.jsx.map +1 -1
- package/dist/source/Matches.jsx +15 -3
- package/dist/source/Matches.jsx.map +1 -1
- package/dist/source/RouterProvider.jsx +5 -0
- package/dist/source/RouterProvider.jsx.map +1 -1
- package/dist/source/ScriptOnce.d.ts +12 -5
- package/dist/source/ScriptOnce.jsx +27 -16
- package/dist/source/ScriptOnce.jsx.map +1 -1
- package/dist/source/Scripts.d.ts +2 -1
- package/dist/source/Scripts.jsx +100 -42
- package/dist/source/Scripts.jsx.map +1 -1
- package/dist/source/Transitioner.d.ts +16 -0
- package/dist/source/Transitioner.jsx +180 -160
- package/dist/source/Transitioner.jsx.map +1 -1
- package/dist/source/awaited.d.ts +20 -5
- package/dist/source/awaited.jsx +18 -25
- package/dist/source/awaited.jsx.map +1 -1
- package/dist/source/index.d.ts +2 -0
- package/dist/source/index.jsx +2 -0
- package/dist/source/index.jsx.map +1 -1
- package/dist/source/lazyRouteComponent.jsx +4 -2
- package/dist/source/lazyRouteComponent.jsx.map +1 -1
- package/dist/source/link.jsx +37 -51
- package/dist/source/link.jsx.map +1 -1
- package/dist/source/scroll-restoration.d.ts +8 -1
- package/dist/source/scroll-restoration.jsx +55 -12
- package/dist/source/scroll-restoration.jsx.map +1 -1
- package/dist/source/ssr/RouterClient.d.ts +15 -0
- package/dist/source/ssr/RouterClient.jsx +48 -0
- package/dist/source/ssr/RouterClient.jsx.map +1 -0
- package/dist/source/ssr/RouterServer.d.ts +15 -0
- package/dist/source/ssr/RouterServer.jsx +40 -0
- package/dist/source/ssr/RouterServer.jsx.map +1 -0
- package/dist/source/ssr/client.d.ts +1 -0
- package/dist/source/ssr/client.js +2 -0
- package/dist/source/ssr/client.js.map +1 -0
- package/dist/source/ssr/defaultRenderHandler.d.ts +1 -0
- package/dist/source/ssr/defaultRenderHandler.jsx +9 -0
- package/dist/source/ssr/defaultRenderHandler.jsx.map +1 -0
- package/dist/source/ssr/defaultStreamHandler.d.ts +1 -0
- package/dist/source/ssr/defaultStreamHandler.jsx +10 -0
- package/dist/source/ssr/defaultStreamHandler.jsx.map +1 -0
- package/dist/source/ssr/renderRouterToStream.d.ts +8 -0
- package/dist/source/ssr/renderRouterToStream.jsx +55 -0
- package/dist/source/ssr/renderRouterToStream.jsx.map +1 -0
- package/dist/source/ssr/renderRouterToString.d.ts +7 -0
- package/dist/source/ssr/renderRouterToString.jsx +26 -0
- package/dist/source/ssr/renderRouterToString.jsx.map +1 -0
- package/dist/source/ssr/server.d.ts +6 -0
- package/dist/source/ssr/server.js +7 -0
- package/dist/source/ssr/server.js.map +1 -0
- package/package.json +16 -3
- package/src/Asset.tsx +157 -7
- package/src/Body.tsx +26 -0
- package/src/CatchBoundary.tsx +11 -25
- package/src/Html.tsx +65 -0
- package/src/Match.tsx +135 -58
- package/src/Matches.tsx +16 -4
- package/src/RouterProvider.tsx +6 -0
- package/src/ScriptOnce.tsx +43 -28
- package/src/Scripts.tsx +121 -56
- package/src/Transitioner.tsx +197 -176
- package/src/awaited.tsx +17 -28
- package/src/index.tsx +2 -0
- package/src/lazyRouteComponent.tsx +4 -2
- package/src/link.tsx +42 -47
- package/src/scroll-restoration.tsx +69 -21
- package/src/ssr/RouterClient.tsx +58 -0
- package/src/ssr/RouterServer.tsx +51 -0
- package/src/ssr/client.ts +1 -0
- package/src/ssr/defaultRenderHandler.tsx +12 -0
- package/src/ssr/defaultStreamHandler.tsx +13 -0
- package/src/ssr/renderRouterToStream.tsx +85 -0
- package/src/ssr/renderRouterToString.tsx +37 -0
- package/src/ssr/server.ts +6 -0
package/dist/source/Scripts.jsx
CHANGED
|
@@ -1,49 +1,107 @@
|
|
|
1
|
+
import * as Vue from 'vue';
|
|
1
2
|
import { Asset } from './Asset';
|
|
2
3
|
import { useRouterState } from './useRouterState';
|
|
3
4
|
import { useRouter } from './useRouter';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
// Script that sets the defer flag for Vue - must run BEFORE TSR bootstrap script
|
|
6
|
+
// This prevents $_TSR.c() from removing scripts until Vue hydration is complete
|
|
7
|
+
const VUE_DEFER_SCRIPT = 'self.$_TSR_DEFER=true';
|
|
8
|
+
export const Scripts = Vue.defineComponent({
|
|
9
|
+
name: 'Scripts',
|
|
10
|
+
setup() {
|
|
11
|
+
const router = useRouter();
|
|
12
|
+
const nonce = router.options.ssr?.nonce;
|
|
13
|
+
const assetScripts = useRouterState({
|
|
14
|
+
select: (state) => {
|
|
15
|
+
const assetScripts = [];
|
|
16
|
+
const manifest = router.ssr?.manifest;
|
|
17
|
+
if (!manifest) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
state.matches
|
|
21
|
+
.map((match) => router.looseRoutesById[match.routeId])
|
|
22
|
+
.forEach((route) => manifest.routes[route.id]?.assets
|
|
23
|
+
?.filter((d) => d.tag === 'script')
|
|
24
|
+
.forEach((asset) => {
|
|
25
|
+
assetScripts.push({
|
|
26
|
+
tag: 'script',
|
|
27
|
+
attrs: { ...asset.attrs, nonce },
|
|
28
|
+
children: asset.children,
|
|
29
|
+
});
|
|
30
|
+
}));
|
|
31
|
+
return assetScripts;
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const scripts = useRouterState({
|
|
35
|
+
select: (state) => ({
|
|
36
|
+
scripts: state.matches
|
|
37
|
+
.map((match) => match.scripts)
|
|
38
|
+
.flat(1)
|
|
39
|
+
.filter(Boolean).map(({ children, ...script }) => ({
|
|
40
|
+
tag: 'script',
|
|
41
|
+
attrs: {
|
|
42
|
+
...script,
|
|
43
|
+
nonce,
|
|
44
|
+
},
|
|
45
|
+
children,
|
|
46
|
+
})),
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
const mounted = Vue.ref(false);
|
|
50
|
+
Vue.onMounted(() => {
|
|
51
|
+
mounted.value = true;
|
|
52
|
+
});
|
|
53
|
+
return () => {
|
|
54
|
+
const allScripts = [];
|
|
55
|
+
if (router.serverSsr) {
|
|
56
|
+
allScripts.push({
|
|
57
|
+
tag: 'script',
|
|
58
|
+
attrs: { nonce },
|
|
59
|
+
children: VUE_DEFER_SCRIPT,
|
|
60
|
+
});
|
|
61
|
+
const serverBufferedScript = router.serverSsr.takeBufferedScripts();
|
|
62
|
+
if (serverBufferedScript) {
|
|
63
|
+
allScripts.push(serverBufferedScript);
|
|
64
|
+
}
|
|
12
65
|
}
|
|
13
|
-
|
|
14
|
-
.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
66
|
+
else if (router.ssr && !mounted.value) {
|
|
67
|
+
allScripts.push({
|
|
68
|
+
tag: 'script',
|
|
69
|
+
attrs: { nonce, 'data-allow-mismatch': true },
|
|
70
|
+
children: '',
|
|
71
|
+
});
|
|
72
|
+
allScripts.push({
|
|
19
73
|
tag: 'script',
|
|
20
|
-
attrs:
|
|
21
|
-
|
|
74
|
+
attrs: {
|
|
75
|
+
nonce,
|
|
76
|
+
class: '$tsr',
|
|
77
|
+
id: '$tsr-stream-barrier',
|
|
78
|
+
'data-allow-mismatch': true,
|
|
79
|
+
},
|
|
80
|
+
children: '',
|
|
22
81
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
};
|
|
82
|
+
for (const asset of assetScripts.value) {
|
|
83
|
+
allScripts.push({
|
|
84
|
+
tag: 'script',
|
|
85
|
+
attrs: {
|
|
86
|
+
...asset.attrs,
|
|
87
|
+
'data-allow-mismatch': true,
|
|
88
|
+
},
|
|
89
|
+
children: '',
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
for (const script of scripts.value.scripts) {
|
|
94
|
+
allScripts.push(script);
|
|
95
|
+
}
|
|
96
|
+
if (mounted.value || router.serverSsr) {
|
|
97
|
+
for (const asset of assetScripts.value) {
|
|
98
|
+
allScripts.push(asset);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return (<>
|
|
102
|
+
{allScripts.map((asset, i) => (<Asset {...asset} key={`tsr-scripts-${asset.tag}-${i}`}/>))}
|
|
103
|
+
</>);
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
});
|
|
49
107
|
//# sourceMappingURL=Scripts.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Composable that sets up router transition logic.
|
|
4
|
+
* This is called from MatchesContent to set up:
|
|
5
|
+
* - router.startTransition
|
|
6
|
+
* - router.startViewTransition
|
|
7
|
+
* - History subscription
|
|
8
|
+
* - Router event watchers
|
|
9
|
+
*
|
|
10
|
+
* Must be called during component setup phase.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useTransitionerSetup(): void;
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use useTransitionerSetup() composable instead.
|
|
15
|
+
* This component is kept for backwards compatibility but the setup logic
|
|
16
|
+
* has been moved to useTransitionerSetup() for better SSR hydration.
|
|
17
|
+
*/
|
|
2
18
|
export declare const Transitioner: Vue.DefineComponent<{}, () => null, {}, {}, {}, Vue.ComponentOptionsMixin, Vue.ComponentOptionsMixin, {}, string, Vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, Vue.ComponentProvideOptions, true, {}, any>;
|
|
@@ -3,178 +3,198 @@ import { getLocationChangeInfo, handleHashScroll, trimPathRight, } from '@tansta
|
|
|
3
3
|
import { useRouter } from './useRouter';
|
|
4
4
|
import { useRouterState } from './useRouterState';
|
|
5
5
|
import { usePrevious } from './utils';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
// Track mount state per router to avoid double-loading
|
|
7
|
+
let mountLoadForRouter = { router: null, mounted: false };
|
|
8
|
+
/**
|
|
9
|
+
* Composable that sets up router transition logic.
|
|
10
|
+
* This is called from MatchesContent to set up:
|
|
11
|
+
* - router.startTransition
|
|
12
|
+
* - router.startViewTransition
|
|
13
|
+
* - History subscription
|
|
14
|
+
* - Router event watchers
|
|
15
|
+
*
|
|
16
|
+
* Must be called during component setup phase.
|
|
17
|
+
*/
|
|
18
|
+
export function useTransitionerSetup() {
|
|
19
|
+
const router = useRouter();
|
|
20
|
+
// Skip on server - no transitions needed
|
|
21
|
+
if (router.isServer) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const isLoading = useRouterState({
|
|
25
|
+
select: ({ isLoading }) => isLoading,
|
|
26
|
+
});
|
|
27
|
+
// Track if we're in a transition - using a ref to track async transitions
|
|
28
|
+
const isTransitioning = Vue.ref(false);
|
|
29
|
+
// Track pending state changes
|
|
30
|
+
const hasPendingMatches = useRouterState({
|
|
31
|
+
select: (s) => s.matches.some((d) => d.status === 'pending'),
|
|
32
|
+
});
|
|
33
|
+
const previousIsLoading = usePrevious(() => isLoading.value);
|
|
34
|
+
const isAnyPending = Vue.computed(() => isLoading.value || isTransitioning.value || hasPendingMatches.value);
|
|
35
|
+
const previousIsAnyPending = usePrevious(() => isAnyPending.value);
|
|
36
|
+
const isPagePending = Vue.computed(() => isLoading.value || hasPendingMatches.value);
|
|
37
|
+
const previousIsPagePending = usePrevious(() => isPagePending.value);
|
|
38
|
+
// Implement startTransition similar to React/Solid
|
|
39
|
+
// Vue doesn't have a native useTransition like React 18, so we simulate it
|
|
40
|
+
// We also update the router state's isTransitioning flag so useMatch can check it
|
|
41
|
+
router.startTransition = (fn) => {
|
|
42
|
+
isTransitioning.value = true;
|
|
43
|
+
// Also update the router state so useMatch knows we're transitioning
|
|
44
|
+
try {
|
|
45
|
+
router.__store.setState((s) => ({ ...s, isTransitioning: true }));
|
|
13
46
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
//
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
select: (s) => s.matches.some((d) => d.status === 'pending'),
|
|
22
|
-
});
|
|
23
|
-
const previousIsLoading = usePrevious(() => isLoading.value);
|
|
24
|
-
const isAnyPending = Vue.computed(() => isLoading.value || isTransitioning.value || hasPendingMatches.value);
|
|
25
|
-
const previousIsAnyPending = usePrevious(() => isAnyPending.value);
|
|
26
|
-
const isPagePending = Vue.computed(() => isLoading.value || hasPendingMatches.value);
|
|
27
|
-
const previousIsPagePending = usePrevious(() => isPagePending.value);
|
|
28
|
-
// Implement startTransition similar to React/Solid
|
|
29
|
-
// Vue doesn't have a native useTransition like React 18, so we simulate it
|
|
30
|
-
// We also update the router state's isTransitioning flag so useMatch can check it
|
|
31
|
-
router.startTransition = (fn) => {
|
|
32
|
-
isTransitioning.value = true;
|
|
33
|
-
// Also update the router state so useMatch knows we're transitioning
|
|
34
|
-
try {
|
|
35
|
-
router.__store.setState((s) => ({ ...s, isTransitioning: true }));
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// Ignore errors if component is unmounted
|
|
39
|
-
}
|
|
40
|
-
// Helper to end the transition
|
|
41
|
-
const endTransition = () => {
|
|
42
|
-
// Use nextTick to ensure Vue has processed all reactive updates
|
|
43
|
-
Vue.nextTick(() => {
|
|
44
|
-
try {
|
|
45
|
-
isTransitioning.value = false;
|
|
46
|
-
router.__store.setState((s) => ({ ...s, isTransitioning: false }));
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
// Ignore errors if component is unmounted
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
// Execute the function synchronously
|
|
54
|
-
// The function internally may call startViewTransition which schedules async work
|
|
55
|
-
// via document.startViewTransition, but we don't need to wait for it here
|
|
56
|
-
// because Vue's reactivity will trigger re-renders when state changes
|
|
57
|
-
fn();
|
|
58
|
-
// End the transition on next tick to allow Vue to process reactive updates
|
|
59
|
-
endTransition();
|
|
60
|
-
};
|
|
61
|
-
// For Vue, we need to completely override startViewTransition because Vue's
|
|
62
|
-
// async rendering doesn't work well with the View Transitions API's requirement
|
|
63
|
-
// for synchronous DOM updates. The browser expects the DOM to be updated
|
|
64
|
-
// when the callback promise resolves, but Vue updates asynchronously.
|
|
65
|
-
//
|
|
66
|
-
// Our approach: Skip the actual view transition animation but still update state.
|
|
67
|
-
// This ensures navigation works correctly even without the visual transition.
|
|
68
|
-
// In the future, we could explore using viewTransition.captured like vue-view-transitions does.
|
|
69
|
-
router.startViewTransition = (fn) => {
|
|
70
|
-
// Just run the callback directly without wrapping in document.startViewTransition
|
|
71
|
-
// This ensures the state updates happen and Vue can render them normally
|
|
72
|
-
fn();
|
|
73
|
-
};
|
|
74
|
-
// Subscribe to location changes
|
|
75
|
-
// and try to load the new location
|
|
76
|
-
let unsubscribe;
|
|
77
|
-
Vue.onMounted(() => {
|
|
78
|
-
unsubscribe = router.history.subscribe(router.load);
|
|
79
|
-
const nextLocation = router.buildLocation({
|
|
80
|
-
to: router.latestLocation.pathname,
|
|
81
|
-
search: true,
|
|
82
|
-
params: true,
|
|
83
|
-
hash: true,
|
|
84
|
-
state: true,
|
|
85
|
-
_includeValidateSearch: true,
|
|
86
|
-
});
|
|
87
|
-
if (trimPathRight(router.latestLocation.href) !==
|
|
88
|
-
trimPathRight(nextLocation.href)) {
|
|
89
|
-
router.commitLocation({ ...nextLocation, replace: true });
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
// Track if component is mounted to prevent updates after unmount
|
|
93
|
-
const isMounted = Vue.ref(false);
|
|
94
|
-
Vue.onMounted(() => {
|
|
95
|
-
isMounted.value = true;
|
|
96
|
-
});
|
|
97
|
-
Vue.onUnmounted(() => {
|
|
98
|
-
isMounted.value = false;
|
|
99
|
-
if (unsubscribe) {
|
|
100
|
-
unsubscribe();
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
// Try to load the initial location
|
|
104
|
-
Vue.onMounted(() => {
|
|
105
|
-
if ((typeof window !== 'undefined' && router.ssr) ||
|
|
106
|
-
(mountLoadForRouter.router === router && mountLoadForRouter.mounted)) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
mountLoadForRouter = { router, mounted: true };
|
|
110
|
-
const tryLoad = async () => {
|
|
47
|
+
catch {
|
|
48
|
+
// Ignore errors if component is unmounted
|
|
49
|
+
}
|
|
50
|
+
// Helper to end the transition
|
|
51
|
+
const endTransition = () => {
|
|
52
|
+
// Use nextTick to ensure Vue has processed all reactive updates
|
|
53
|
+
Vue.nextTick(() => {
|
|
111
54
|
try {
|
|
112
|
-
|
|
55
|
+
isTransitioning.value = false;
|
|
56
|
+
router.__store.setState((s) => ({ ...s, isTransitioning: false }));
|
|
113
57
|
}
|
|
114
|
-
catch
|
|
115
|
-
|
|
58
|
+
catch {
|
|
59
|
+
// Ignore errors if component is unmounted
|
|
116
60
|
}
|
|
117
|
-
};
|
|
118
|
-
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
// Execute the function synchronously
|
|
64
|
+
// The function internally may call startViewTransition which schedules async work
|
|
65
|
+
// via document.startViewTransition, but we don't need to wait for it here
|
|
66
|
+
// because Vue's reactivity will trigger re-renders when state changes
|
|
67
|
+
fn();
|
|
68
|
+
// End the transition on next tick to allow Vue to process reactive updates
|
|
69
|
+
endTransition();
|
|
70
|
+
};
|
|
71
|
+
// For Vue, we need to completely override startViewTransition because Vue's
|
|
72
|
+
// async rendering doesn't work well with the View Transitions API's requirement
|
|
73
|
+
// for synchronous DOM updates. The browser expects the DOM to be updated
|
|
74
|
+
// when the callback promise resolves, but Vue updates asynchronously.
|
|
75
|
+
//
|
|
76
|
+
// Our approach: Skip the actual view transition animation but still update state.
|
|
77
|
+
// This ensures navigation works correctly even without the visual transition.
|
|
78
|
+
// In the future, we could explore using viewTransition.captured like vue-view-transitions does.
|
|
79
|
+
router.startViewTransition = (fn) => {
|
|
80
|
+
// Just run the callback directly without wrapping in document.startViewTransition
|
|
81
|
+
// This ensures the state updates happen and Vue can render them normally
|
|
82
|
+
fn();
|
|
83
|
+
};
|
|
84
|
+
// Subscribe to location changes
|
|
85
|
+
// and try to load the new location
|
|
86
|
+
let unsubscribe;
|
|
87
|
+
Vue.onMounted(() => {
|
|
88
|
+
unsubscribe = router.history.subscribe(router.load);
|
|
89
|
+
const nextLocation = router.buildLocation({
|
|
90
|
+
to: router.latestLocation.pathname,
|
|
91
|
+
search: true,
|
|
92
|
+
params: true,
|
|
93
|
+
hash: true,
|
|
94
|
+
state: true,
|
|
95
|
+
_includeValidateSearch: true,
|
|
119
96
|
});
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
97
|
+
if (trimPathRight(router.latestLocation.href) !==
|
|
98
|
+
trimPathRight(nextLocation.href)) {
|
|
99
|
+
router.commitLocation({ ...nextLocation, replace: true });
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
// Track if component is mounted to prevent updates after unmount
|
|
103
|
+
const isMounted = Vue.ref(false);
|
|
104
|
+
Vue.onMounted(() => {
|
|
105
|
+
isMounted.value = true;
|
|
106
|
+
});
|
|
107
|
+
Vue.onUnmounted(() => {
|
|
108
|
+
isMounted.value = false;
|
|
109
|
+
if (unsubscribe) {
|
|
110
|
+
unsubscribe();
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
// Try to load the initial location
|
|
114
|
+
Vue.onMounted(() => {
|
|
115
|
+
if ((typeof window !== 'undefined' && router.ssr) ||
|
|
116
|
+
(mountLoadForRouter.router === router && mountLoadForRouter.mounted)) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
mountLoadForRouter = { router, mounted: true };
|
|
120
|
+
const tryLoad = async () => {
|
|
125
121
|
try {
|
|
126
|
-
|
|
127
|
-
router.emit({
|
|
128
|
-
type: 'onLoad',
|
|
129
|
-
...getLocationChangeInfo(router.state),
|
|
130
|
-
});
|
|
131
|
-
}
|
|
122
|
+
await router.load();
|
|
132
123
|
}
|
|
133
|
-
catch {
|
|
134
|
-
|
|
124
|
+
catch (err) {
|
|
125
|
+
console.error(err);
|
|
135
126
|
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
127
|
+
};
|
|
128
|
+
tryLoad();
|
|
129
|
+
});
|
|
130
|
+
// Setup watchers for emitting events
|
|
131
|
+
// All watchers check isMounted to prevent updates after unmount
|
|
132
|
+
Vue.watch(() => isLoading.value, (newValue) => {
|
|
133
|
+
if (!isMounted.value)
|
|
134
|
+
return;
|
|
135
|
+
try {
|
|
136
|
+
if (previousIsLoading.value.previous && !newValue) {
|
|
137
|
+
router.emit({
|
|
138
|
+
type: 'onLoad',
|
|
139
|
+
...getLocationChangeInfo(router.state),
|
|
140
|
+
});
|
|
148
141
|
}
|
|
149
|
-
|
|
150
|
-
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Ignore errors if component is unmounted
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
Vue.watch(isPagePending, (newValue) => {
|
|
148
|
+
if (!isMounted.value)
|
|
149
|
+
return;
|
|
150
|
+
try {
|
|
151
|
+
// emit onBeforeRouteMount
|
|
152
|
+
if (previousIsPagePending.value.previous && !newValue) {
|
|
153
|
+
router.emit({
|
|
154
|
+
type: 'onBeforeRouteMount',
|
|
155
|
+
...getLocationChangeInfo(router.state),
|
|
156
|
+
});
|
|
151
157
|
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
if
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Ignore errors if component is unmounted
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
Vue.watch(isAnyPending, (newValue) => {
|
|
164
|
+
if (!isMounted.value)
|
|
165
|
+
return;
|
|
166
|
+
try {
|
|
167
|
+
// The router was pending and now it's not
|
|
168
|
+
if (previousIsAnyPending.value.previous && !newValue) {
|
|
169
|
+
const changeInfo = getLocationChangeInfo(router.state);
|
|
170
|
+
router.emit({
|
|
171
|
+
type: 'onResolved',
|
|
172
|
+
...changeInfo,
|
|
173
|
+
});
|
|
174
|
+
router.__store.setState((s) => ({
|
|
175
|
+
...s,
|
|
176
|
+
status: 'idle',
|
|
177
|
+
resolvedLocation: s.location,
|
|
178
|
+
}));
|
|
179
|
+
if (changeInfo.hrefChanged) {
|
|
180
|
+
handleHashScroll(router);
|
|
172
181
|
}
|
|
173
182
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// Ignore errors if component is unmounted
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* @deprecated Use useTransitionerSetup() composable instead.
|
|
191
|
+
* This component is kept for backwards compatibility but the setup logic
|
|
192
|
+
* has been moved to useTransitionerSetup() for better SSR hydration.
|
|
193
|
+
*/
|
|
194
|
+
export const Transitioner = Vue.defineComponent({
|
|
195
|
+
name: 'Transitioner',
|
|
196
|
+
setup() {
|
|
197
|
+
useTransitionerSetup();
|
|
178
198
|
return () => null;
|
|
179
199
|
},
|
|
180
200
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,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,
|
|
1
|
+
{"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"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"}
|
package/dist/source/awaited.d.ts
CHANGED
|
@@ -4,9 +4,24 @@ export type AwaitOptions<T> = {
|
|
|
4
4
|
promise: Promise<T>;
|
|
5
5
|
};
|
|
6
6
|
export declare function useAwaited<T>({ promise: _promise, }: AwaitOptions<T>): [T, DeferredPromise<T>];
|
|
7
|
-
export declare
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export declare const Await: Vue.DefineComponent<Vue.ExtractPropTypes<{
|
|
8
|
+
promise: {
|
|
9
|
+
type: PromiseConstructor;
|
|
10
|
+
required: true;
|
|
11
|
+
};
|
|
12
|
+
children: {
|
|
13
|
+
type: FunctionConstructor;
|
|
14
|
+
required: true;
|
|
15
|
+
};
|
|
16
|
+
}>, () => Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
|
|
11
17
|
[key: string]: any;
|
|
12
|
-
}
|
|
18
|
+
}>, {}, {}, {}, Vue.ComponentOptionsMixin, Vue.ComponentOptionsMixin, {}, string, Vue.PublicProps, Readonly<Vue.ExtractPropTypes<{
|
|
19
|
+
promise: {
|
|
20
|
+
type: PromiseConstructor;
|
|
21
|
+
required: true;
|
|
22
|
+
};
|
|
23
|
+
children: {
|
|
24
|
+
type: FunctionConstructor;
|
|
25
|
+
required: true;
|
|
26
|
+
};
|
|
27
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, Vue.ComponentProvideOptions, true, {}, any>;
|