@tanstack/vue-router 1.140.1 → 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.
Files changed (150) hide show
  1. package/dist/esm/Asset.js +122 -8
  2. package/dist/esm/Asset.js.map +1 -1
  3. package/dist/esm/Body.d.ts +4 -0
  4. package/dist/esm/Body.js +26 -0
  5. package/dist/esm/Body.js.map +1 -0
  6. package/dist/esm/CatchBoundary.d.ts +1 -1
  7. package/dist/esm/CatchBoundary.js +8 -8
  8. package/dist/esm/CatchBoundary.js.map +1 -1
  9. package/dist/esm/Html.d.ts +4 -0
  10. package/dist/esm/Html.js +63 -0
  11. package/dist/esm/Html.js.map +1 -0
  12. package/dist/esm/Match.js +87 -49
  13. package/dist/esm/Match.js.map +1 -1
  14. package/dist/esm/Matches.js +3 -2
  15. package/dist/esm/Matches.js.map +1 -1
  16. package/dist/esm/RouterProvider.js +3 -0
  17. package/dist/esm/RouterProvider.js.map +1 -1
  18. package/dist/esm/ScriptOnce.d.ts +12 -5
  19. package/dist/esm/ScriptOnce.js +35 -15
  20. package/dist/esm/ScriptOnce.js.map +1 -1
  21. package/dist/esm/Scripts.d.ts +2 -1
  22. package/dist/esm/Scripts.js +101 -35
  23. package/dist/esm/Scripts.js.map +1 -1
  24. package/dist/esm/Transitioner.d.ts +16 -0
  25. package/dist/esm/Transitioner.js +136 -133
  26. package/dist/esm/Transitioner.js.map +1 -1
  27. package/dist/esm/awaited.d.ts +20 -5
  28. package/dist/esm/awaited.js +17 -20
  29. package/dist/esm/awaited.js.map +1 -1
  30. package/dist/esm/index.d.ts +2 -0
  31. package/dist/esm/index.js +4 -0
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/lazyRouteComponent.js +2 -2
  34. package/dist/esm/lazyRouteComponent.js.map +1 -1
  35. package/dist/esm/link.js +27 -35
  36. package/dist/esm/link.js.map +1 -1
  37. package/dist/esm/scroll-restoration.d.ts +8 -1
  38. package/dist/esm/scroll-restoration.js +44 -12
  39. package/dist/esm/scroll-restoration.js.map +1 -1
  40. package/dist/esm/ssr/RouterClient.d.ts +15 -0
  41. package/dist/esm/ssr/RouterClient.js +46 -0
  42. package/dist/esm/ssr/RouterClient.js.map +1 -0
  43. package/dist/esm/ssr/RouterServer.d.ts +15 -0
  44. package/dist/esm/ssr/RouterServer.js +37 -0
  45. package/dist/esm/ssr/RouterServer.js.map +1 -0
  46. package/dist/esm/ssr/client.d.ts +1 -0
  47. package/dist/esm/ssr/client.js +5 -0
  48. package/dist/esm/ssr/client.js.map +1 -0
  49. package/dist/esm/ssr/defaultRenderHandler.d.ts +1 -0
  50. package/dist/esm/ssr/defaultRenderHandler.js +15 -0
  51. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -0
  52. package/dist/esm/ssr/defaultStreamHandler.d.ts +1 -0
  53. package/dist/esm/ssr/defaultStreamHandler.js +17 -0
  54. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -0
  55. package/dist/esm/ssr/renderRouterToStream.d.ts +8 -0
  56. package/dist/esm/ssr/renderRouterToStream.js +70 -0
  57. package/dist/esm/ssr/renderRouterToStream.js.map +1 -0
  58. package/dist/esm/ssr/renderRouterToString.d.ts +7 -0
  59. package/dist/esm/ssr/renderRouterToString.js +33 -0
  60. package/dist/esm/ssr/renderRouterToString.js.map +1 -0
  61. package/dist/esm/ssr/server.d.ts +6 -0
  62. package/dist/esm/ssr/server.js +14 -0
  63. package/dist/esm/ssr/server.js.map +1 -0
  64. package/dist/source/Asset.jsx +119 -7
  65. package/dist/source/Asset.jsx.map +1 -1
  66. package/dist/source/Body.d.ts +4 -0
  67. package/dist/source/Body.jsx +15 -0
  68. package/dist/source/Body.jsx.map +1 -0
  69. package/dist/source/CatchBoundary.d.ts +1 -1
  70. package/dist/source/CatchBoundary.jsx +10 -23
  71. package/dist/source/CatchBoundary.jsx.map +1 -1
  72. package/dist/source/Html.d.ts +4 -0
  73. package/dist/source/Html.jsx +56 -0
  74. package/dist/source/Html.jsx.map +1 -0
  75. package/dist/source/Match.jsx +119 -54
  76. package/dist/source/Match.jsx.map +1 -1
  77. package/dist/source/Matches.jsx +15 -3
  78. package/dist/source/Matches.jsx.map +1 -1
  79. package/dist/source/RouterProvider.jsx +5 -0
  80. package/dist/source/RouterProvider.jsx.map +1 -1
  81. package/dist/source/ScriptOnce.d.ts +12 -5
  82. package/dist/source/ScriptOnce.jsx +27 -16
  83. package/dist/source/ScriptOnce.jsx.map +1 -1
  84. package/dist/source/Scripts.d.ts +2 -1
  85. package/dist/source/Scripts.jsx +100 -42
  86. package/dist/source/Scripts.jsx.map +1 -1
  87. package/dist/source/Transitioner.d.ts +16 -0
  88. package/dist/source/Transitioner.jsx +180 -160
  89. package/dist/source/Transitioner.jsx.map +1 -1
  90. package/dist/source/awaited.d.ts +20 -5
  91. package/dist/source/awaited.jsx +18 -25
  92. package/dist/source/awaited.jsx.map +1 -1
  93. package/dist/source/index.d.ts +2 -0
  94. package/dist/source/index.jsx +2 -0
  95. package/dist/source/index.jsx.map +1 -1
  96. package/dist/source/lazyRouteComponent.jsx +4 -2
  97. package/dist/source/lazyRouteComponent.jsx.map +1 -1
  98. package/dist/source/link.jsx +37 -51
  99. package/dist/source/link.jsx.map +1 -1
  100. package/dist/source/scroll-restoration.d.ts +8 -1
  101. package/dist/source/scroll-restoration.jsx +55 -12
  102. package/dist/source/scroll-restoration.jsx.map +1 -1
  103. package/dist/source/ssr/RouterClient.d.ts +15 -0
  104. package/dist/source/ssr/RouterClient.jsx +48 -0
  105. package/dist/source/ssr/RouterClient.jsx.map +1 -0
  106. package/dist/source/ssr/RouterServer.d.ts +15 -0
  107. package/dist/source/ssr/RouterServer.jsx +40 -0
  108. package/dist/source/ssr/RouterServer.jsx.map +1 -0
  109. package/dist/source/ssr/client.d.ts +1 -0
  110. package/dist/source/ssr/client.js +2 -0
  111. package/dist/source/ssr/client.js.map +1 -0
  112. package/dist/source/ssr/defaultRenderHandler.d.ts +1 -0
  113. package/dist/source/ssr/defaultRenderHandler.jsx +9 -0
  114. package/dist/source/ssr/defaultRenderHandler.jsx.map +1 -0
  115. package/dist/source/ssr/defaultStreamHandler.d.ts +1 -0
  116. package/dist/source/ssr/defaultStreamHandler.jsx +10 -0
  117. package/dist/source/ssr/defaultStreamHandler.jsx.map +1 -0
  118. package/dist/source/ssr/renderRouterToStream.d.ts +8 -0
  119. package/dist/source/ssr/renderRouterToStream.jsx +55 -0
  120. package/dist/source/ssr/renderRouterToStream.jsx.map +1 -0
  121. package/dist/source/ssr/renderRouterToString.d.ts +7 -0
  122. package/dist/source/ssr/renderRouterToString.jsx +26 -0
  123. package/dist/source/ssr/renderRouterToString.jsx.map +1 -0
  124. package/dist/source/ssr/server.d.ts +6 -0
  125. package/dist/source/ssr/server.js +7 -0
  126. package/dist/source/ssr/server.js.map +1 -0
  127. package/package.json +16 -3
  128. package/src/Asset.tsx +157 -7
  129. package/src/Body.tsx +26 -0
  130. package/src/CatchBoundary.tsx +11 -25
  131. package/src/Html.tsx +65 -0
  132. package/src/Match.tsx +135 -58
  133. package/src/Matches.tsx +16 -4
  134. package/src/RouterProvider.tsx +6 -0
  135. package/src/ScriptOnce.tsx +43 -28
  136. package/src/Scripts.tsx +121 -56
  137. package/src/Transitioner.tsx +197 -176
  138. package/src/awaited.tsx +17 -28
  139. package/src/index.tsx +2 -0
  140. package/src/lazyRouteComponent.tsx +4 -2
  141. package/src/link.tsx +42 -47
  142. package/src/scroll-restoration.tsx +69 -21
  143. package/src/ssr/RouterClient.tsx +58 -0
  144. package/src/ssr/RouterServer.tsx +51 -0
  145. package/src/ssr/client.ts +1 -0
  146. package/src/ssr/defaultRenderHandler.tsx +12 -0
  147. package/src/ssr/defaultStreamHandler.tsx +13 -0
  148. package/src/ssr/renderRouterToStream.tsx +85 -0
  149. package/src/ssr/renderRouterToString.tsx +37 -0
  150. package/src/ssr/server.ts +6 -0
@@ -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
- export const Scripts = () => {
5
- const router = useRouter();
6
- const assetScripts = useRouterState({
7
- select: (state) => {
8
- const assetScripts = [];
9
- const manifest = router.ssr?.manifest;
10
- if (!manifest) {
11
- return [];
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
- state.matches
14
- .map((match) => router.looseRoutesById[match.routeId])
15
- .forEach((route) => manifest.routes[route.id]?.assets
16
- ?.filter((d) => d.tag === 'script')
17
- .forEach((asset) => {
18
- assetScripts.push({
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: asset.attrs,
21
- children: asset.children,
74
+ attrs: {
75
+ nonce,
76
+ class: '$tsr',
77
+ id: '$tsr-stream-barrier',
78
+ 'data-allow-mismatch': true,
79
+ },
80
+ children: '',
22
81
  });
23
- }));
24
- return assetScripts;
25
- },
26
- });
27
- const scripts = useRouterState({
28
- select: (state) => ({
29
- scripts: state.matches
30
- .map((match) => match.scripts)
31
- .flat(1)
32
- .filter(Boolean).map(({ children, ...script }) => ({
33
- tag: 'script',
34
- attrs: {
35
- ...script,
36
- },
37
- children,
38
- })),
39
- }),
40
- });
41
- const allScripts = [
42
- ...scripts.value.scripts,
43
- ...assetScripts.value,
44
- ];
45
- return (<>
46
- {allScripts.map((asset, i) => (<Asset {...asset} key={i}/>))}
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;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,YAAY,GAAG,cAAc,CAAC;QAClC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,YAAY,GAA4B,EAAE,CAAA;YAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAA;YAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,EAAE,CAAA;YACX,CAAC;YAED,KAAK,CAAC,OAAO;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;iBACtD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM;gBAC/B,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;iBAClC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,YAAY,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBAClB,CAAC,CAAA;YACX,CAAC,CAAC,CACL,CAAA;YAEH,OAAO,YAAY,CAAA;QACrB,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,cAAc,CAAC;QAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClB,OAAO,EACL,KAAK,CAAC,OAAO;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC;iBAC9B,IAAI,CAAC,CAAC,CAAC;iBACP,MAAM,CAAC,OAAO,CAClB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE;oBACL,GAAG,MAAM;iBACV;gBACD,QAAQ;aACT,CAAC,CAAC;SACJ,CAAC;KACH,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;QACxB,GAAG,YAAY,CAAC,KAAK;KACK,CAAA;IAE5B,OAAO,CACL,EACE;MAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAG,CAC7B,CAAC,CACJ;IAAA,GAAG,CACJ,CAAA;AACH,CAAC,CAAA"}
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
- export const Transitioner = Vue.defineComponent({
7
- name: 'Transitioner',
8
- setup() {
9
- const router = useRouter();
10
- let mountLoadForRouter = { router, mounted: false };
11
- if (router.isServer) {
12
- return () => null;
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
- const isLoading = useRouterState({
15
- select: ({ isLoading }) => isLoading,
16
- });
17
- // Track if we're in a transition - using a ref to track async transitions
18
- const isTransitioning = Vue.ref(false);
19
- // Track pending state changes
20
- const hasPendingMatches = useRouterState({
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
- await router.load();
55
+ isTransitioning.value = false;
56
+ router.__store.setState((s) => ({ ...s, isTransitioning: false }));
113
57
  }
114
- catch (err) {
115
- console.error(err);
58
+ catch {
59
+ // Ignore errors if component is unmounted
116
60
  }
117
- };
118
- tryLoad();
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
- // Setup watchers for emitting events
121
- // All watchers check isMounted to prevent updates after unmount
122
- Vue.watch(() => isLoading.value, (newValue) => {
123
- if (!isMounted.value)
124
- return;
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
- if (previousIsLoading.value.previous && !newValue) {
127
- router.emit({
128
- type: 'onLoad',
129
- ...getLocationChangeInfo(router.state),
130
- });
131
- }
122
+ await router.load();
132
123
  }
133
- catch {
134
- // Ignore errors if component is unmounted
124
+ catch (err) {
125
+ console.error(err);
135
126
  }
136
- });
137
- Vue.watch(isPagePending, (newValue) => {
138
- if (!isMounted.value)
139
- return;
140
- try {
141
- // emit onBeforeRouteMount
142
- if (previousIsPagePending.value.previous && !newValue) {
143
- router.emit({
144
- type: 'onBeforeRouteMount',
145
- ...getLocationChangeInfo(router.state),
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
- catch {
150
- // Ignore errors if component is unmounted
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
- Vue.watch(isAnyPending, (newValue) => {
154
- if (!isMounted.value)
155
- return;
156
- try {
157
- // The router was pending and now it's not
158
- if (previousIsAnyPending.value.previous && !newValue) {
159
- const changeInfo = getLocationChangeInfo(router.state);
160
- router.emit({
161
- type: 'onResolved',
162
- ...changeInfo,
163
- });
164
- router.__store.setState((s) => ({
165
- ...s,
166
- status: 'idle',
167
- resolvedLocation: s.location,
168
- }));
169
- if (changeInfo.hrefChanged) {
170
- handleHashScroll(router);
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
- catch {
175
- // Ignore errors if component is unmounted
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":"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"}
1
+ {"version":3,"file":"Transitioner.jsx","sourceRoot":"","sources":["../../src/Transitioner.tsx"],"names":[],"mappings":"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"}
@@ -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 function Await<T>(props: AwaitOptions<T> & {
8
- fallback?: Vue.VNode;
9
- children: (result: T) => Vue.VNode;
10
- }): () => Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
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
- }> | undefined;
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>;