@tanstack/vue-router 1.141.1 → 1.141.4

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/README.md CHANGED
@@ -1,19 +1,19 @@
1
1
  <img src="https://static.scarf.sh/a.png?x-pxid=d988eb79-b0fc-4a2b-8514-6a1ab932d188" />
2
2
 
3
- # TanStack Solid Router
3
+ # TanStack Vue Router
4
4
 
5
5
  ![TanStack Router Header](https://github.com/tanstack/router/raw/main/media/header.png)
6
6
 
7
- 🤖 Type-safe router w/ built-in caching & URL state management for Solid!
7
+ 🤖 Type-safe router w/ built-in caching & URL state management for Vue!
8
8
 
9
9
  <a href="https://twitter.com/intent/tweet?button_hashtag=TanStack" target="\_parent">
10
10
  <img alt="#TanStack" src="https://img.shields.io/twitter/url?color=%2308a0e9&label=%23TanStack&style=social&url=https%3A%2F%2Ftwitter.com%2Fintent%2Ftweet%3Fbutton_hashtag%3DTanStack">
11
11
  </a><a href="https://discord.com/invite/WrRKjPJ" target="\_parent">
12
12
  <img alt="" src="https://img.shields.io/badge/Discord-TanStack-%235865F2" />
13
- </a><a href="https://npmjs.com/package/@tanstack/solid-router" target="\_parent">
13
+ </a><a href="https://npmjs.com/package/@tanstack/vue-router" target="\_parent">
14
14
  <img alt="" src="https://img.shields.io/npm/dm/@tanstack/router.svg" />
15
- </a><a href="https://bundlephobia.com/result?p=@tanstack/solid-router" target="\_parent">
16
- <img alt="" src="https://badgen.net/bundlephobia/minzip/@tanstack/solid-router" />
15
+ </a><a href="https://bundlephobia.com/result?p=@tanstack/vue-router" target="\_parent">
16
+ <img alt="" src="https://badgen.net/bundlephobia/minzip/@tanstack/vue-router" />
17
17
  </a><a href="#badge">
18
18
  <img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg">
19
19
  </a><a href="https://github.com/tanstack/router/discussions">
@@ -1,11 +1,12 @@
1
1
  import { ErrorRouteComponent } from './route.js';
2
2
  import * as Vue from 'vue';
3
- export declare function CatchBoundary(props: {
3
+ type CatchBoundaryProps = {
4
4
  getResetKey: () => number | string;
5
5
  children: Vue.VNode;
6
6
  errorComponent?: ErrorRouteComponent | Vue.Component;
7
7
  onCatch?: (error: Error) => void;
8
- }): Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
8
+ };
9
+ export declare function CatchBoundary(props: CatchBoundaryProps): Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
9
10
  [key: string]: any;
10
11
  }>;
11
12
  export declare const ErrorComponent: Vue.DefineComponent<Vue.ExtractPropTypes<{
@@ -17,3 +18,4 @@ export declare const ErrorComponent: Vue.DefineComponent<Vue.ExtractPropTypes<{
17
18
  error: ObjectConstructor;
18
19
  reset: FunctionConstructor;
19
20
  }>> & Readonly<{}>, {}, {}, {}, {}, string, Vue.ComponentProvideOptions, true, {}, any>;
21
+ export {};
@@ -43,38 +43,39 @@ const VueErrorBoundary = Vue.defineComponent({
43
43
  };
44
44
  }
45
45
  });
46
- function CatchBoundary(props) {
47
- const CatchBoundaryWrapper = Vue.defineComponent({
48
- name: "CatchBoundaryWrapper",
49
- inheritAttrs: false,
50
- setup() {
51
- const resetKey = Vue.computed(() => props.getResetKey());
52
- return () => {
53
- return Vue.h(VueErrorBoundary, {
54
- resetKey: resetKey.value,
55
- onError: props.onCatch
56
- }, {
57
- default: () => props.children,
58
- fallback: ({
59
- error,
60
- reset
61
- }) => {
62
- if (props.errorComponent) {
63
- return Vue.h(props.errorComponent, {
64
- error,
65
- reset
66
- });
67
- }
68
- return Vue.h(ErrorComponent, {
46
+ const CatchBoundaryWrapper = Vue.defineComponent({
47
+ name: "CatchBoundary",
48
+ inheritAttrs: false,
49
+ props: ["getResetKey", "children", "errorComponent", "onCatch"],
50
+ setup(props) {
51
+ const resetKey = Vue.computed(() => props.getResetKey());
52
+ return () => {
53
+ return Vue.h(VueErrorBoundary, {
54
+ resetKey: resetKey.value,
55
+ onError: props.onCatch
56
+ }, {
57
+ default: () => props.children,
58
+ fallback: ({
59
+ error,
60
+ reset
61
+ }) => {
62
+ if (props.errorComponent) {
63
+ return Vue.h(props.errorComponent, {
69
64
  error,
70
65
  reset
71
66
  });
72
67
  }
73
- });
74
- };
75
- }
76
- });
77
- return Vue.h(CatchBoundaryWrapper);
68
+ return Vue.h(ErrorComponent, {
69
+ error,
70
+ reset
71
+ });
72
+ }
73
+ });
74
+ };
75
+ }
76
+ });
77
+ function CatchBoundary(props) {
78
+ return Vue.h(CatchBoundaryWrapper, props);
78
79
  }
79
80
  const ErrorComponent = Vue.defineComponent({
80
81
  name: "ErrorComponent",
@@ -1 +1 @@
1
- {"version":3,"file":"CatchBoundary.js","sources":["../../src/CatchBoundary.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport type { ErrorRouteComponent } from './route'\n\ninterface ErrorComponentProps {\n error: Error\n reset: () => void\n}\n\nconst VueErrorBoundary = Vue.defineComponent({\n name: 'VueErrorBoundary',\n props: {\n onError: Function,\n resetKey: [String, Number],\n },\n emits: ['catch'],\n setup(props, { slots }) {\n const error = Vue.ref<Error | null>(null)\n const resetFn = Vue.ref<(() => void) | null>(null)\n\n const reset = () => {\n error.value = null\n }\n\n Vue.watch(\n () => props.resetKey,\n (newKey, oldKey) => {\n if (newKey !== oldKey && error.value) {\n reset()\n }\n },\n )\n\n Vue.onErrorCaptured((err: Error) => {\n if (\n err instanceof Promise ||\n (err && typeof (err as any).then === 'function')\n ) {\n return false\n }\n\n error.value = err\n resetFn.value = reset\n\n if (props.onError) {\n props.onError(err)\n }\n\n return false\n })\n\n return () => {\n if (error.value && slots.fallback) {\n const fallbackContent = slots.fallback({\n error: error.value,\n reset,\n })\n return Array.isArray(fallbackContent) && fallbackContent.length === 1\n ? fallbackContent[0]\n : fallbackContent\n }\n\n const defaultContent = slots.default && slots.default()\n return Array.isArray(defaultContent) && defaultContent.length === 1\n ? defaultContent[0]\n : defaultContent\n }\n },\n})\n\nexport function CatchBoundary(props: {\n getResetKey: () => number | string\n children: Vue.VNode\n errorComponent?: ErrorRouteComponent | Vue.Component\n onCatch?: (error: Error) => void\n}) {\n const CatchBoundaryWrapper = Vue.defineComponent({\n name: 'CatchBoundaryWrapper',\n inheritAttrs: false,\n setup() {\n const resetKey = Vue.computed(() => props.getResetKey())\n\n return () => {\n return Vue.h(\n VueErrorBoundary,\n {\n resetKey: resetKey.value,\n onError: props.onCatch,\n },\n {\n default: () => props.children,\n fallback: ({ error, reset }: ErrorComponentProps) => {\n if (props.errorComponent) {\n return Vue.h(props.errorComponent, { error, reset })\n }\n return Vue.h(ErrorComponent, { error, reset })\n },\n },\n )\n }\n },\n })\n\n return Vue.h(CatchBoundaryWrapper)\n}\n\nexport const ErrorComponent = Vue.defineComponent({\n name: 'ErrorComponent',\n props: {\n error: Object,\n reset: Function,\n },\n setup(props) {\n const show = Vue.ref(process.env.NODE_ENV !== 'production')\n\n const toggleShow = () => {\n show.value = !show.value\n }\n\n return () =>\n Vue.h('div', { style: { padding: '.5rem', maxWidth: '100%' } }, [\n Vue.h(\n 'div',\n { style: { display: 'flex', alignItems: 'center', gap: '.5rem' } },\n [\n Vue.h(\n 'strong',\n { style: { fontSize: '1rem' } },\n 'Something went wrong!',\n ),\n Vue.h(\n 'button',\n {\n style: {\n appearance: 'none',\n fontSize: '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n },\n onClick: toggleShow,\n },\n show.value ? 'Hide Error' : 'Show Error',\n ),\n ],\n ),\n Vue.h('div', { style: { height: '.25rem' } }),\n show.value\n ? Vue.h('div', {}, [\n Vue.h(\n 'pre',\n {\n style: {\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n },\n },\n [\n props.error?.message\n ? Vue.h('code', {}, props.error.message)\n : null,\n ],\n ),\n ])\n : null,\n ])\n },\n})\n"],"names":["VueErrorBoundary","Vue","defineComponent","name","props","onError","Function","resetKey","String","Number","emits","setup","slots","error","ref","resetFn","reset","value","watch","newKey","oldKey","onErrorCaptured","err","Promise","then","fallback","fallbackContent","Array","isArray","length","defaultContent","default","CatchBoundary","CatchBoundaryWrapper","inheritAttrs","computed","getResetKey","h","onCatch","children","errorComponent","ErrorComponent","Object","show","process","env","NODE_ENV","toggleShow","style","padding","maxWidth","display","alignItems","gap","fontSize","appearance","border","fontWeight","borderRadius","onClick","height","color","overflow","message"],"mappings":"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"}
1
+ {"version":3,"file":"CatchBoundary.js","sources":["../../src/CatchBoundary.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport type { ErrorRouteComponent } from './route'\n\ninterface ErrorComponentProps {\n error: Error\n reset: () => void\n}\n\ntype CatchBoundaryProps = {\n getResetKey: () => number | string\n children: Vue.VNode\n errorComponent?: ErrorRouteComponent | Vue.Component\n onCatch?: (error: Error) => void\n}\n\nconst VueErrorBoundary = Vue.defineComponent({\n name: 'VueErrorBoundary',\n props: {\n onError: Function,\n resetKey: [String, Number],\n },\n emits: ['catch'],\n setup(props, { slots }) {\n const error = Vue.ref<Error | null>(null)\n const resetFn = Vue.ref<(() => void) | null>(null)\n\n const reset = () => {\n error.value = null\n }\n\n Vue.watch(\n () => props.resetKey,\n (newKey, oldKey) => {\n if (newKey !== oldKey && error.value) {\n reset()\n }\n },\n )\n\n Vue.onErrorCaptured((err: Error) => {\n if (\n err instanceof Promise ||\n (err && typeof (err as any).then === 'function')\n ) {\n return false\n }\n\n error.value = err\n resetFn.value = reset\n\n if (props.onError) {\n props.onError(err)\n }\n\n return false\n })\n\n return () => {\n if (error.value && slots.fallback) {\n const fallbackContent = slots.fallback({\n error: error.value,\n reset,\n })\n return Array.isArray(fallbackContent) && fallbackContent.length === 1\n ? fallbackContent[0]\n : fallbackContent\n }\n\n const defaultContent = slots.default && slots.default()\n return Array.isArray(defaultContent) && defaultContent.length === 1\n ? defaultContent[0]\n : defaultContent\n }\n },\n})\n\nconst CatchBoundaryWrapper = Vue.defineComponent({\n name: 'CatchBoundary',\n inheritAttrs: false,\n props: ['getResetKey', 'children', 'errorComponent', 'onCatch'] as any,\n setup(props: CatchBoundaryProps) {\n const resetKey = Vue.computed(() => props.getResetKey())\n\n return () => {\n return Vue.h(\n VueErrorBoundary,\n {\n resetKey: resetKey.value,\n onError: props.onCatch,\n },\n {\n default: () => props.children,\n fallback: ({ error, reset }: ErrorComponentProps) => {\n if (props.errorComponent) {\n return Vue.h(props.errorComponent, { error, reset })\n }\n return Vue.h(ErrorComponent, { error, reset })\n },\n },\n )\n }\n },\n})\n\nexport function CatchBoundary(props: CatchBoundaryProps) {\n return Vue.h(CatchBoundaryWrapper, props as any)\n}\n\nexport const ErrorComponent = Vue.defineComponent({\n name: 'ErrorComponent',\n props: {\n error: Object,\n reset: Function,\n },\n setup(props) {\n const show = Vue.ref(process.env.NODE_ENV !== 'production')\n\n const toggleShow = () => {\n show.value = !show.value\n }\n\n return () =>\n Vue.h('div', { style: { padding: '.5rem', maxWidth: '100%' } }, [\n Vue.h(\n 'div',\n { style: { display: 'flex', alignItems: 'center', gap: '.5rem' } },\n [\n Vue.h(\n 'strong',\n { style: { fontSize: '1rem' } },\n 'Something went wrong!',\n ),\n Vue.h(\n 'button',\n {\n style: {\n appearance: 'none',\n fontSize: '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n fontWeight: 'bold',\n borderRadius: '.25rem',\n },\n onClick: toggleShow,\n },\n show.value ? 'Hide Error' : 'Show Error',\n ),\n ],\n ),\n Vue.h('div', { style: { height: '.25rem' } }),\n show.value\n ? Vue.h('div', {}, [\n Vue.h(\n 'pre',\n {\n style: {\n fontSize: '.7em',\n border: '1px solid red',\n borderRadius: '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n },\n },\n [\n props.error?.message\n ? Vue.h('code', {}, props.error.message)\n : null,\n ],\n ),\n ])\n : null,\n ])\n },\n})\n"],"names":["VueErrorBoundary","Vue","defineComponent","name","props","onError","Function","resetKey","String","Number","emits","setup","slots","error","ref","resetFn","reset","value","watch","newKey","oldKey","onErrorCaptured","err","Promise","then","fallback","fallbackContent","Array","isArray","length","defaultContent","default","CatchBoundaryWrapper","inheritAttrs","computed","getResetKey","h","onCatch","children","errorComponent","ErrorComponent","CatchBoundary","Object","show","process","env","NODE_ENV","toggleShow","style","padding","maxWidth","display","alignItems","gap","fontSize","appearance","border","fontWeight","borderRadius","onClick","height","color","overflow","message"],"mappings":"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"}
@@ -14,8 +14,7 @@ const ScriptOnce = Vue.defineComponent({
14
14
  if (router.isServer) {
15
15
  return () => createVNode("script", {
16
16
  "nonce": router.options.ssr?.nonce,
17
- "class": "$tsr",
18
- "innerHTML": props.children
17
+ "innerHTML": props.children + ";document.currentScript.remove()"
19
18
  }, null);
20
19
  }
21
20
  const mounted = Vue.ref(false);
@@ -28,7 +27,6 @@ const ScriptOnce = Vue.defineComponent({
28
27
  }
29
28
  return createVNode("script", {
30
29
  "nonce": router.options.ssr?.nonce,
31
- "class": "$tsr",
32
30
  "data-allow-mismatch": true,
33
31
  "innerHTML": ""
34
32
  }, null);
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptOnce.js","sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { useRouter } from './useRouter'\n\nexport const ScriptOnce = Vue.defineComponent({\n name: 'ScriptOnce',\n props: {\n children: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (router.isServer) {\n return () => (\n <script\n nonce={router.options.ssr?.nonce}\n class=\"$tsr\"\n innerHTML={props.children}\n />\n )\n }\n\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n if (mounted.value) {\n return null\n }\n\n return (\n <script\n nonce={router.options.ssr?.nonce}\n class=\"$tsr\"\n data-allow-mismatch\n innerHTML=\"\"\n />\n )\n }\n },\n})\n"],"names":["ScriptOnce","Vue","defineComponent","name","props","children","type","String","required","setup","router","useRouter","isServer","_createVNode","options","ssr","nonce","mounted","ref","onMounted","value"],"mappings":";;;MAGaA,aAAaC,IAAIC,gBAAgB;AAAA,EAC5CC,MAAM;AAAA,EACNC,OAAO;AAAA,IACLC,UAAU;AAAA,MACRC,MAAMC;AAAAA,MACNC,UAAU;AAAA,IACZ;AAAA;EAEFC,MAAML,OAAO;AACX,UAAMM,SAASC,UAAS;AAExB,QAAID,OAAOE,UAAU;AACnB,aAAO,MAAAC,YAAA,UAAA;AAAA,QAAA,SAEIH,OAAOI,QAAQC,KAAKC;AAAAA,QAAK,SAAA;AAAA,QAAA,aAErBZ,MAAMC;AAAAA,SAAQ,IAAA;AAAA,IAG/B;AAEA,UAAMY,UAAUhB,IAAIiB,IAAI,KAAK;AAC7BjB,QAAIkB,UAAU,MAAM;AAClBF,cAAQG,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,MAAM;AACX,UAAIH,QAAQG,OAAO;AACjB,eAAO;AAAA,MACT;AAEA,aAAAP,YAAA,UAAA;AAAA,QAAA,SAEWH,OAAOI,QAAQC,KAAKC;AAAAA,QAAK,SAAA;AAAA,QAAA,uBAAA;AAAA,QAAA,aAAA;AAAA,MAAA,GAAA,IAAA;AAAA,IAMtC;AAAA,EACF;AACF,CAAC;"}
1
+ {"version":3,"file":"ScriptOnce.js","sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { useRouter } from './useRouter'\n\nexport const ScriptOnce = Vue.defineComponent({\n name: 'ScriptOnce',\n props: {\n children: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (router.isServer) {\n return () => (\n <script\n nonce={router.options.ssr?.nonce}\n innerHTML={props.children + ';document.currentScript.remove()'}\n />\n )\n }\n\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n if (mounted.value) {\n return null\n }\n\n return (\n <script\n nonce={router.options.ssr?.nonce}\n data-allow-mismatch\n innerHTML=\"\"\n />\n )\n }\n },\n})\n"],"names":["ScriptOnce","Vue","defineComponent","name","props","children","type","String","required","setup","router","useRouter","isServer","_createVNode","options","ssr","nonce","mounted","ref","onMounted","value"],"mappings":";;;MAGaA,aAAaC,IAAIC,gBAAgB;AAAA,EAC5CC,MAAM;AAAA,EACNC,OAAO;AAAA,IACLC,UAAU;AAAA,MACRC,MAAMC;AAAAA,MACNC,UAAU;AAAA,IACZ;AAAA;EAEFC,MAAML,OAAO;AACX,UAAMM,SAASC,UAAS;AAExB,QAAID,OAAOE,UAAU;AACnB,aAAO,MAAAC,YAAA,UAAA;AAAA,QAAA,SAEIH,OAAOI,QAAQC,KAAKC;AAAAA,QAAK,aACrBZ,MAAMC,WAAW;AAAA,SAAkC,IAAA;AAAA,IAGpE;AAEA,UAAMY,UAAUhB,IAAIiB,IAAI,KAAK;AAC7BjB,QAAIkB,UAAU,MAAM;AAClBF,cAAQG,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,MAAM;AACX,UAAIH,QAAQG,OAAO;AACjB,eAAO;AAAA,MACT;AAEA,aAAAP,YAAA,UAAA;AAAA,QAAA,SAEWH,OAAOI,QAAQC,KAAKC;AAAAA,QAAK,uBAAA;AAAA,QAAA,aAAA;AAAA,MAAA,GAAA,IAAA;AAAA,IAKtC;AAAA,EACF;AACF,CAAC;"}
@@ -3,7 +3,6 @@ import { createVNode, Fragment, mergeProps } from "vue";
3
3
  import { Asset } from "./Asset.js";
4
4
  import { useRouterState } from "./useRouterState.js";
5
5
  import { useRouter } from "./useRouter.js";
6
- const VUE_DEFER_SCRIPT = "self.$_TSR_DEFER=true";
7
6
  const Scripts = Vue.defineComponent({
8
7
  name: "Scripts",
9
8
  setup() {
@@ -51,13 +50,6 @@ const Scripts = Vue.defineComponent({
51
50
  return () => {
52
51
  const allScripts = [];
53
52
  if (router.serverSsr) {
54
- allScripts.push({
55
- tag: "script",
56
- attrs: {
57
- nonce
58
- },
59
- children: VUE_DEFER_SCRIPT
60
- });
61
53
  const serverBufferedScript = router.serverSsr.takeBufferedScripts();
62
54
  if (serverBufferedScript) {
63
55
  allScripts.push(serverBufferedScript);
@@ -75,7 +67,6 @@ const Scripts = Vue.defineComponent({
75
67
  tag: "script",
76
68
  attrs: {
77
69
  nonce,
78
- class: "$tsr",
79
70
  id: "$tsr-stream-barrier",
80
71
  "data-allow-mismatch": true
81
72
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Scripts.js","sources":["../../src/Scripts.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\n// Script that sets the defer flag for Vue - must run BEFORE TSR bootstrap script\n// This prevents $_TSR.c() from removing scripts until Vue hydration is complete\nconst VUE_DEFER_SCRIPT = 'self.$_TSR_DEFER=true'\n\nexport const Scripts = Vue.defineComponent({\n name: 'Scripts',\n setup() {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n\n const assetScripts = useRouterState({\n select: (state) => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as RouterManagedTag)\n }),\n )\n\n return assetScripts\n },\n })\n\n const scripts = useRouterState({\n select: (state) => ({\n scripts: (\n state.matches\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script' as const,\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n }),\n })\n\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n const allScripts: Array<RouterManagedTag> = []\n\n if (router.serverSsr) {\n allScripts.push({\n tag: 'script',\n attrs: { nonce },\n children: VUE_DEFER_SCRIPT,\n } as RouterManagedTag)\n\n const serverBufferedScript = router.serverSsr.takeBufferedScripts()\n if (serverBufferedScript) {\n allScripts.push(serverBufferedScript)\n }\n } else if (router.ssr && !mounted.value) {\n allScripts.push({\n tag: 'script',\n attrs: { nonce, 'data-allow-mismatch': true },\n children: '',\n } as RouterManagedTag)\n\n allScripts.push({\n tag: 'script',\n attrs: {\n nonce,\n class: '$tsr',\n id: '$tsr-stream-barrier',\n 'data-allow-mismatch': true,\n },\n children: '',\n } as RouterManagedTag)\n\n for (const asset of assetScripts.value) {\n allScripts.push({\n tag: 'script',\n attrs: {\n ...asset.attrs,\n 'data-allow-mismatch': true,\n },\n children: '',\n } as RouterManagedTag)\n }\n }\n\n for (const script of scripts.value.scripts) {\n allScripts.push(script as RouterManagedTag)\n }\n\n if (mounted.value || router.serverSsr) {\n for (const asset of assetScripts.value) {\n allScripts.push(asset)\n }\n }\n\n return (\n <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} key={`tsr-scripts-${asset.tag}-${i}`} />\n ))}\n </>\n )\n }\n },\n})\n"],"names":["VUE_DEFER_SCRIPT","Scripts","Vue","defineComponent","name","setup","router","useRouter","nonce","options","ssr","assetScripts","useRouterState","select","state","manifest","matches","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","mounted","ref","onMounted","value","allScripts","serverSsr","serverBufferedScript","takeBufferedScripts","class","_createVNode","_Fragment","i","Asset","_mergeProps"],"mappings":"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"}
1
+ {"version":3,"file":"Scripts.js","sources":["../../src/Scripts.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = Vue.defineComponent({\n name: 'Scripts',\n setup() {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n\n const assetScripts = useRouterState({\n select: (state) => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as RouterManagedTag)\n }),\n )\n\n return assetScripts\n },\n })\n\n const scripts = useRouterState({\n select: (state) => ({\n scripts: (\n state.matches\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script' as const,\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n }),\n })\n\n const mounted = Vue.ref(false)\n Vue.onMounted(() => {\n mounted.value = true\n })\n\n return () => {\n const allScripts: Array<RouterManagedTag> = []\n\n if (router.serverSsr) {\n const serverBufferedScript = router.serverSsr.takeBufferedScripts()\n if (serverBufferedScript) {\n allScripts.push(serverBufferedScript)\n }\n } else if (router.ssr && !mounted.value) {\n allScripts.push({\n tag: 'script',\n attrs: { nonce, 'data-allow-mismatch': true },\n children: '',\n } as RouterManagedTag)\n\n allScripts.push({\n tag: 'script',\n attrs: {\n nonce,\n id: '$tsr-stream-barrier',\n 'data-allow-mismatch': true,\n },\n children: '',\n } as RouterManagedTag)\n\n for (const asset of assetScripts.value) {\n allScripts.push({\n tag: 'script',\n attrs: {\n ...asset.attrs,\n 'data-allow-mismatch': true,\n },\n children: '',\n } as RouterManagedTag)\n }\n }\n\n for (const script of scripts.value.scripts) {\n allScripts.push(script as RouterManagedTag)\n }\n\n if (mounted.value || router.serverSsr) {\n for (const asset of assetScripts.value) {\n allScripts.push(asset)\n }\n }\n\n return (\n <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} key={`tsr-scripts-${asset.tag}-${i}`} />\n ))}\n </>\n )\n }\n },\n})\n"],"names":["Scripts","Vue","defineComponent","name","setup","router","useRouter","nonce","options","ssr","assetScripts","useRouterState","select","state","manifest","matches","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","mounted","ref","onMounted","value","allScripts","serverSsr","serverBufferedScript","takeBufferedScripts","_createVNode","_Fragment","i","Asset","_mergeProps"],"mappings":"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"}
@@ -50,8 +50,13 @@ function useTransitionerSetup() {
50
50
  fn();
51
51
  endTransition();
52
52
  };
53
+ const originalStartViewTransition = router.__tsrOriginalStartViewTransition ?? router.startViewTransition;
54
+ router.__tsrOriginalStartViewTransition = originalStartViewTransition;
53
55
  router.startViewTransition = (fn) => {
54
- fn();
56
+ return originalStartViewTransition?.(async () => {
57
+ await fn();
58
+ await Vue.nextTick();
59
+ });
55
60
  };
56
61
  let unsubscribe;
57
62
  Vue.onMounted(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Vue from 'vue'\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\n// Track mount state per router to avoid double-loading\nlet mountLoadForRouter = { router: null as any, mounted: false }\n\n/**\n * Composable that sets up router transition logic.\n * This is called from MatchesContent to set up:\n * - router.startTransition\n * - router.startViewTransition\n * - History subscription\n * - Router event watchers\n *\n * Must be called during component setup phase.\n */\nexport function useTransitionerSetup() {\n const router = useRouter()\n\n // Skip on server - no transitions needed\n if (router.isServer) {\n return\n }\n\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n // Track if we're in a transition - using a ref to track async transitions\n const isTransitioning = Vue.ref(false)\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.value)\n\n const isAnyPending = Vue.computed(\n () => isLoading.value || isTransitioning.value || hasPendingMatches.value,\n )\n const previousIsAnyPending = usePrevious(() => isAnyPending.value)\n\n const isPagePending = Vue.computed(\n () => isLoading.value || hasPendingMatches.value,\n )\n const previousIsPagePending = usePrevious(() => isPagePending.value)\n\n // Implement startTransition similar to React/Solid\n // Vue doesn't have a native useTransition like React 18, so we simulate it\n // We also update the router state's isTransitioning flag so useMatch can check it\n router.startTransition = (fn: () => void | Promise<void>) => {\n isTransitioning.value = true\n // Also update the router state so useMatch knows we're transitioning\n try {\n router.__store.setState((s) => ({ ...s, isTransitioning: true }))\n } catch {\n // Ignore errors if component is unmounted\n }\n\n // Helper to end the transition\n const endTransition = () => {\n // Use nextTick to ensure Vue has processed all reactive updates\n Vue.nextTick(() => {\n try {\n isTransitioning.value = false\n router.__store.setState((s) => ({ ...s, isTransitioning: false }))\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n }\n\n // Execute the function synchronously\n // The function internally may call startViewTransition which schedules async work\n // via document.startViewTransition, but we don't need to wait for it here\n // because Vue's reactivity will trigger re-renders when state changes\n fn()\n\n // End the transition on next tick to allow Vue to process reactive updates\n endTransition()\n }\n\n // For Vue, we need to completely override startViewTransition because Vue's\n // async rendering doesn't work well with the View Transitions API's requirement\n // for synchronous DOM updates. The browser expects the DOM to be updated\n // when the callback promise resolves, but Vue updates asynchronously.\n //\n // Our approach: Skip the actual view transition animation but still update state.\n // This ensures navigation works correctly even without the visual transition.\n // In the future, we could explore using viewTransition.captured like vue-view-transitions does.\n router.startViewTransition = (fn: () => Promise<void>) => {\n // Just run the callback directly without wrapping in document.startViewTransition\n // This ensures the state updates happen and Vue can render them normally\n fn()\n }\n\n // Subscribe to location changes\n // and try to load the new location\n let unsubscribe: (() => void) | undefined\n\n Vue.onMounted(() => {\n unsubscribe = 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\n // Track if component is mounted to prevent updates after unmount\n const isMounted = Vue.ref(false)\n\n Vue.onMounted(() => {\n isMounted.value = true\n })\n\n Vue.onUnmounted(() => {\n isMounted.value = false\n if (unsubscribe) {\n unsubscribe()\n }\n })\n\n // Try to load the initial location\n Vue.onMounted(() => {\n if (\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 // Setup watchers for emitting events\n // All watchers check isMounted to prevent updates after unmount\n Vue.watch(\n () => isLoading.value,\n (newValue) => {\n if (!isMounted.value) return\n try {\n if (previousIsLoading.value.previous && !newValue) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n },\n )\n\n Vue.watch(isPagePending, (newValue) => {\n if (!isMounted.value) return\n try {\n // emit onBeforeRouteMount\n if (previousIsPagePending.value.previous && !newValue) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n\n Vue.watch(isAnyPending, (newValue) => {\n if (!isMounted.value) return\n try {\n // The router was pending and now it's not\n if (previousIsAnyPending.value.previous && !newValue) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n}\n\n/**\n * @deprecated Use useTransitionerSetup() composable instead.\n * This component is kept for backwards compatibility but the setup logic\n * has been moved to useTransitionerSetup() for better SSR hydration.\n */\nexport const Transitioner = Vue.defineComponent({\n name: 'Transitioner',\n setup() {\n useTransitionerSetup()\n return () => null\n },\n})\n"],"names":["mountLoadForRouter","router","mounted","useTransitionerSetup","useRouter","isServer","isLoading","useRouterState","select","isTransitioning","Vue","ref","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","value","isAnyPending","computed","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","__store","setState","endTransition","nextTick","startViewTransition","unsubscribe","onMounted","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","href","commitLocation","replace","isMounted","onUnmounted","window","ssr","tryLoad","err","console","error","watch","newValue","previous","emit","type","getLocationChangeInfo","changeInfo","resolvedLocation","location","hrefChanged","handleHashScroll","defineComponent","name","setup"],"mappings":"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"}
1
+ {"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Vue from 'vue'\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\n// Track mount state per router to avoid double-loading\nlet mountLoadForRouter = { router: null as any, mounted: false }\n\n/**\n * Composable that sets up router transition logic.\n * This is called from MatchesContent to set up:\n * - router.startTransition\n * - router.startViewTransition\n * - History subscription\n * - Router event watchers\n *\n * Must be called during component setup phase.\n */\nexport function useTransitionerSetup() {\n const router = useRouter()\n\n // Skip on server - no transitions needed\n if (router.isServer) {\n return\n }\n\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n // Track if we're in a transition - using a ref to track async transitions\n const isTransitioning = Vue.ref(false)\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.value)\n\n const isAnyPending = Vue.computed(\n () => isLoading.value || isTransitioning.value || hasPendingMatches.value,\n )\n const previousIsAnyPending = usePrevious(() => isAnyPending.value)\n\n const isPagePending = Vue.computed(\n () => isLoading.value || hasPendingMatches.value,\n )\n const previousIsPagePending = usePrevious(() => isPagePending.value)\n\n // Implement startTransition similar to React/Solid\n // Vue doesn't have a native useTransition like React 18, so we simulate it\n // We also update the router state's isTransitioning flag so useMatch can check it\n router.startTransition = (fn: () => void | Promise<void>) => {\n isTransitioning.value = true\n // Also update the router state so useMatch knows we're transitioning\n try {\n router.__store.setState((s) => ({ ...s, isTransitioning: true }))\n } catch {\n // Ignore errors if component is unmounted\n }\n\n // Helper to end the transition\n const endTransition = () => {\n // Use nextTick to ensure Vue has processed all reactive updates\n Vue.nextTick(() => {\n try {\n isTransitioning.value = false\n router.__store.setState((s) => ({ ...s, isTransitioning: false }))\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n }\n\n // Execute the function synchronously\n // The function internally may call startViewTransition which schedules async work\n // via document.startViewTransition, but we don't need to wait for it here\n // because Vue's reactivity will trigger re-renders when state changes\n fn()\n\n // End the transition on next tick to allow Vue to process reactive updates\n endTransition()\n }\n\n // Vue updates DOM asynchronously (next tick). The View Transitions API expects the\n // update callback promise to resolve only after the DOM has been updated.\n // Wrap the router-core implementation to await a Vue flush before resolving.\n const originalStartViewTransition:\n | undefined\n | ((fn: () => Promise<void>) => void) =\n (router as any).__tsrOriginalStartViewTransition ??\n router.startViewTransition\n\n ;(router as any).__tsrOriginalStartViewTransition =\n originalStartViewTransition\n\n router.startViewTransition = (fn: () => Promise<void>) => {\n return originalStartViewTransition?.(async () => {\n await fn()\n await Vue.nextTick()\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n let unsubscribe: (() => void) | undefined\n\n Vue.onMounted(() => {\n unsubscribe = 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\n // Track if component is mounted to prevent updates after unmount\n const isMounted = Vue.ref(false)\n\n Vue.onMounted(() => {\n isMounted.value = true\n })\n\n Vue.onUnmounted(() => {\n isMounted.value = false\n if (unsubscribe) {\n unsubscribe()\n }\n })\n\n // Try to load the initial location\n Vue.onMounted(() => {\n if (\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 // Setup watchers for emitting events\n // All watchers check isMounted to prevent updates after unmount\n Vue.watch(\n () => isLoading.value,\n (newValue) => {\n if (!isMounted.value) return\n try {\n if (previousIsLoading.value.previous && !newValue) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n },\n )\n\n Vue.watch(isPagePending, (newValue) => {\n if (!isMounted.value) return\n try {\n // emit onBeforeRouteMount\n if (previousIsPagePending.value.previous && !newValue) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n\n Vue.watch(isAnyPending, (newValue) => {\n if (!isMounted.value) return\n try {\n // The router was pending and now it's not\n if (previousIsAnyPending.value.previous && !newValue) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n } catch {\n // Ignore errors if component is unmounted\n }\n })\n}\n\n/**\n * @deprecated Use useTransitionerSetup() composable instead.\n * This component is kept for backwards compatibility but the setup logic\n * has been moved to useTransitionerSetup() for better SSR hydration.\n */\nexport const Transitioner = Vue.defineComponent({\n name: 'Transitioner',\n setup() {\n useTransitionerSetup()\n return () => null\n },\n})\n"],"names":["mountLoadForRouter","router","mounted","useTransitionerSetup","useRouter","isServer","isLoading","useRouterState","select","isTransitioning","Vue","ref","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","value","isAnyPending","computed","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","__store","setState","endTransition","nextTick","originalStartViewTransition","__tsrOriginalStartViewTransition","startViewTransition","unsubscribe","onMounted","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","href","commitLocation","replace","isMounted","onUnmounted","window","ssr","tryLoad","err","console","error","watch","newValue","previous","emit","type","getLocationChangeInfo","changeInfo","resolvedLocation","location","hrefChanged","handleHashScroll","defineComponent","name","setup"],"mappings":"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"}
package/dist/esm/link.js CHANGED
@@ -238,9 +238,9 @@ function useLinkProps(options) {
238
238
  const maskedLocation = nextLocation?.maskedLocation;
239
239
  let hrefValue;
240
240
  if (maskedLocation) {
241
- hrefValue = maskedLocation.url;
241
+ hrefValue = maskedLocation.url.href;
242
242
  } else {
243
- hrefValue = nextLocation?.url;
243
+ hrefValue = nextLocation?.url.href;
244
244
  }
245
245
  if (router.origin && hrefValue?.startsWith(router.origin)) {
246
246
  hrefValue = router.history.createHref(hrefValue.replace(router.origin, ""));
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sources":["../../src/link.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n deepEqual,\n exactPathTest,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\n\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { useIntersectionObserver } from './utils'\nimport { useMatches } from './Matches'\n\nimport type {\n AnyRouter,\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\n// Type definitions to replace missing Vue JSX types\ntype EventHandler<TEvent = Event> = (e: TEvent) => void\ninterface HTMLAttributes {\n class?: string\n style?: Record<string, string | number>\n onClick?: EventHandler<MouseEvent>\n onFocus?: EventHandler<FocusEvent>\n // Vue 3's h() function expects lowercase event names after 'on' prefix\n onMouseenter?: EventHandler<MouseEvent>\n onMouseleave?: EventHandler<MouseEvent>\n onMouseover?: EventHandler<MouseEvent>\n onMouseout?: EventHandler<MouseEvent>\n onTouchstart?: EventHandler<TouchEvent>\n // Also accept the camelCase versions for external API compatibility\n onMouseEnter?: EventHandler<MouseEvent>\n onMouseLeave?: EventHandler<MouseEvent>\n onMouseOver?: EventHandler<MouseEvent>\n onMouseOut?: EventHandler<MouseEvent>\n onTouchStart?: EventHandler<TouchEvent>\n [key: string]: any\n}\n\ninterface StyledProps {\n class?: string\n style?: Record<string, string | number>\n [key: string]: any\n}\n\nexport function useLinkProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(\n options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): HTMLAttributes {\n const router = useRouter()\n const isTransitioning = Vue.ref(false)\n let hasRenderFetched = false\n\n // Ensure router is defined before proceeding\n if (!router) {\n console.warn('useRouter must be used inside a <RouterProvider> component!')\n return {}\n }\n\n // Determine if the link is external or internal\n const type = Vue.computed(() => {\n try {\n new URL(`${options.to}`)\n return 'external'\n } catch {\n return 'internal'\n }\n })\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n // when `from` is not supplied, use the leaf route of the current matches as the `from` location\n const from = useMatches({\n select: (matches) => options.from ?? matches[matches.length - 1]?.fullPath,\n })\n\n const _options = Vue.computed(() => ({\n ...options,\n from: from.value,\n }))\n\n const next = Vue.computed(() => {\n // Depend on search to rebuild when search changes\n currentSearch.value\n return router.buildLocation(_options.value as any)\n })\n\n const preload = Vue.computed(() => {\n if (_options.value.reloadDocument) {\n return false\n }\n return options.preload ?? router.options.defaultPreload\n })\n\n const preloadDelay = Vue.computed(\n () => options.preloadDelay ?? router.options.defaultPreloadDelay ?? 0,\n )\n\n const isActive = useRouterState({\n select: (s) => {\n const activeOptions = options.activeOptions\n if (activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next.value.pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPathSplit = removeTrailingSlash(\n s.location.pathname,\n router.basepath,\n ).split('/')\n const nextPathSplit = removeTrailingSlash(\n next.value?.pathname,\n router.basepath,\n )?.split('/')\n\n const pathIsFuzzyEqual = nextPathSplit?.every(\n (d, i) => d === currentPathSplit[i],\n )\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next.value.search, {\n partial: !activeOptions?.exact,\n ignoreUndefined: !activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (activeOptions?.includeHash) {\n return s.location.hash === next.value.hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(_options.value as any).catch((err: any) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n\n const preloadViewportIoCallback = (\n entry: IntersectionObserverEntry | undefined,\n ) => {\n if (entry?.isIntersecting) {\n doPreload()\n }\n }\n\n const ref = Vue.ref<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: () => !!options.disabled || !(preload.value === 'viewport') },\n )\n\n Vue.effect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!options.disabled && preload.value === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n // Create safe props that can be spread\n const getPropsSafeToSpread = () => {\n const result: Record<string, any> = {}\n for (const key in options) {\n if (\n ![\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n '_asChild',\n 'from',\n 'additionalProps',\n ].includes(key)\n ) {\n result[key] = options[key]\n }\n }\n return result\n }\n\n if (type.value === 'external') {\n // External links just have simple props\n const externalProps: HTMLAttributes = {\n ...getPropsSafeToSpread(),\n ref,\n href: options.to,\n target: options.target,\n disabled: options.disabled,\n style: options.style,\n class: options.class,\n onClick: options.onClick,\n onFocus: options.onFocus,\n onMouseEnter: options.onMouseEnter,\n onMouseLeave: options.onMouseLeave,\n onMouseOver: options.onMouseOver,\n onMouseOut: options.onMouseOut,\n onTouchStart: options.onTouchStart,\n }\n\n // Remove undefined values\n Object.keys(externalProps).forEach((key) => {\n if (externalProps[key] === undefined) {\n delete externalProps[key]\n }\n })\n\n return externalProps\n }\n\n // The click handler\n const handleClick = (e: MouseEvent): void => {\n // Check actual element's target attribute as fallback\n const elementTarget = (\n e.currentTarget as HTMLAnchorElement | SVGAElement\n )?.getAttribute('target')\n const effectiveTarget =\n options.target !== undefined ? options.target : elementTarget\n\n if (\n !options.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n // Don't prevent default or handle navigation if reloadDocument is true\n if (_options.value.reloadDocument) {\n return\n }\n\n e.preventDefault()\n\n isTransitioning.value = true\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n isTransitioning.value = false\n })\n\n // All is well? Navigate!\n router.navigate({\n ..._options.value,\n replace: options.replace,\n resetScroll: options.resetScroll,\n hashScrollIntoView: options.hashScrollIntoView,\n startTransition: options.startTransition,\n viewTransition: options.viewTransition,\n ignoreBlocker: options.ignoreBlocker,\n } as any)\n }\n }\n\n // The focus handler\n const handleFocus = (_: FocusEvent) => {\n if (options.disabled) return\n if (preload.value) {\n doPreload()\n }\n }\n\n const handleTouchStart = (_: TouchEvent) => {\n if (options.disabled) return\n if (preload.value) {\n doPreload()\n }\n }\n\n const handleEnter = (e: MouseEvent) => {\n if (options.disabled) return\n // Use currentTarget (the element with the handler) instead of target (which may be a child)\n const eventTarget = (e.currentTarget ||\n e.target ||\n {}) as LinkCurrentTargetElement\n\n if (preload.value) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay.value)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (options.disabled) return\n // Use currentTarget (the element with the handler) instead of target (which may be a child)\n const eventTarget = (e.currentTarget ||\n e.target ||\n {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n // Helper to compose event handlers - with explicit return type and better type handling\n function composeEventHandlers<T extends Event>(\n handlers: Array<EventHandler<T> | undefined>,\n ): (e: T) => void {\n return (event: T) => {\n for (const handler of handlers) {\n if (handler) {\n handler(event)\n }\n }\n }\n }\n\n // Get the active and inactive props\n const resolvedActiveProps = Vue.computed<StyledProps>(() => {\n const activeProps = options.activeProps || (() => ({ class: 'active' }))\n const props = isActive.value\n ? typeof activeProps === 'function'\n ? activeProps()\n : activeProps\n : {}\n\n return props || { class: undefined, style: undefined }\n })\n\n const resolvedInactiveProps = Vue.computed<StyledProps>(() => {\n const inactiveProps = options.inactiveProps || (() => ({}))\n const props = isActive.value\n ? {}\n : typeof inactiveProps === 'function'\n ? inactiveProps()\n : inactiveProps\n\n return props || { class: undefined, style: undefined }\n })\n\n const resolvedClassName = Vue.computed(() => {\n const classes = [\n options.class,\n resolvedActiveProps.value?.class,\n resolvedInactiveProps.value?.class,\n ].filter(Boolean)\n return classes.length ? classes.join(' ') : undefined\n })\n\n const resolvedStyle = Vue.computed(() => {\n const result: Record<string, string | number> = {}\n\n // Merge styles from all sources\n if (options.style) {\n Object.assign(result, options.style)\n }\n\n if (resolvedActiveProps.value?.style) {\n Object.assign(result, resolvedActiveProps.value.style)\n }\n\n if (resolvedInactiveProps.value?.style) {\n Object.assign(result, resolvedInactiveProps.value.style)\n }\n\n return Object.keys(result).length > 0 ? result : undefined\n })\n\n const href = Vue.computed(() => {\n if (options.disabled) {\n return undefined\n }\n const nextLocation = next.value\n const maskedLocation = nextLocation?.maskedLocation\n\n let hrefValue: string\n if (maskedLocation) {\n hrefValue = maskedLocation.url\n } else {\n hrefValue = nextLocation?.url\n }\n\n // Handle origin stripping like Solid does\n if (router.origin && hrefValue?.startsWith(router.origin)) {\n hrefValue = router.history.createHref(\n hrefValue.replace(router.origin, ''),\n )\n }\n\n return hrefValue\n })\n\n // Create static event handlers that don't change between renders\n const staticEventHandlers = {\n onClick: composeEventHandlers<MouseEvent>([\n options.onClick,\n handleClick,\n ]) as any,\n onFocus: composeEventHandlers<FocusEvent>([\n options.onFocus,\n handleFocus,\n ]) as any,\n onMouseenter: composeEventHandlers<MouseEvent>([\n options.onMouseEnter,\n handleEnter,\n ]) as any,\n onMouseover: composeEventHandlers<MouseEvent>([\n options.onMouseOver,\n handleEnter,\n ]) as any,\n onMouseleave: composeEventHandlers<MouseEvent>([\n options.onMouseLeave,\n handleLeave,\n ]) as any,\n onMouseout: composeEventHandlers<MouseEvent>([\n options.onMouseOut,\n handleLeave,\n ]) as any,\n onTouchstart: composeEventHandlers<TouchEvent>([\n options.onTouchStart,\n handleTouchStart,\n ]) as any,\n }\n\n // Compute all props synchronously to avoid hydration mismatches\n // Using Vue.computed ensures props are calculated at render time, not after\n const computedProps = Vue.computed<HTMLAttributes>(() => {\n const result: HTMLAttributes = {\n ...getPropsSafeToSpread(),\n href: href.value,\n ref,\n ...staticEventHandlers,\n disabled: !!options.disabled,\n target: options.target,\n }\n\n // Add style if present\n if (resolvedStyle.value) {\n result.style = resolvedStyle.value\n }\n\n // Add class if present\n if (resolvedClassName.value) {\n result.class = resolvedClassName.value\n }\n\n // Add disabled props\n if (options.disabled) {\n result.role = 'link'\n result['aria-disabled'] = true\n }\n\n // Add active status\n if (isActive.value) {\n result['data-status'] = 'active'\n result['aria-current'] = 'page'\n }\n\n // Add transitioning status\n if (isTransitioning.value) {\n result['data-transitioning'] = 'transitioning'\n }\n\n // Merge active/inactive props (excluding class and style which are handled above)\n const activeP = resolvedActiveProps.value\n const inactiveP = resolvedInactiveProps.value\n\n for (const key of Object.keys(activeP)) {\n if (key !== 'class' && key !== 'style') {\n result[key] = activeP[key]\n }\n }\n for (const key of Object.keys(inactiveP)) {\n if (key !== 'class' && key !== 'style') {\n result[key] = inactiveP[key]\n }\n }\n\n return result\n })\n\n // Return the computed ref itself - callers should access .value\n return computedProps as unknown as HTMLAttributes\n}\n\n// Type definitions\nexport type UseLinkPropsOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n HTMLAttributes\n\nexport type ActiveLinkOptions<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n ActiveLinkOptionProps<TComp>\n\ntype ActiveLinkProps<TComp> = Partial<\n HTMLAttributes & {\n [key: `data-${string}`]: unknown\n }\n>\n\nexport interface ActiveLinkOptionProps<TComp = 'a'> {\n /**\n * A function that returns additional props for the `active` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n activeProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n /**\n * A function that returns additional props for the `inactive` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n inactiveProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n}\n\nexport type LinkProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n LinkPropsChildren\n\nexport interface LinkPropsChildren {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | Vue.VNode\n | ((state: { isActive: boolean; isTransitioning: boolean }) => Vue.VNode)\n}\n\ntype LinkComponentVueProps<TComp> = TComp extends keyof HTMLElementTagNameMap\n ? Omit<HTMLAttributes, keyof CreateLinkProps>\n : TComp extends Vue.Component\n ? Record<string, any>\n : Record<string, any>\n\nexport type LinkComponentProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkComponentVueProps<TComp> &\n LinkProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type CreateLinkProps = LinkProps<\n any,\n any,\n string,\n string,\n string,\n string\n>\n\nexport type LinkComponent<TComp> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Vue.VNode\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Vue.VNode>,\n): LinkComponent<TComp> {\n return Vue.defineComponent({\n name: 'CreatedLink',\n inheritAttrs: false,\n setup(_, { attrs, slots }) {\n return () => Vue.h(Link, { ...attrs, _asChild: Comp }, slots)\n },\n }) as any\n}\n\nconst LinkImpl = Vue.defineComponent({\n name: 'Link',\n inheritAttrs: false,\n props: [\n '_asChild',\n 'to',\n 'preload',\n 'preloadDelay',\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'from',\n 'search',\n 'params',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'disabled',\n 'additionalProps',\n 'viewTransition',\n 'resetScroll',\n 'startTransition',\n 'hashScrollIntoView',\n 'replace',\n 'ignoreBlocker',\n 'target',\n ],\n setup(props, { attrs, slots }) {\n // Call useLinkProps ONCE during setup with combined props and attrs\n // The returned object is a computed ref that updates reactively\n const allProps = { ...props, ...attrs }\n const linkPropsComputed = useLinkProps(\n allProps as any,\n ) as unknown as Vue.ComputedRef<HTMLAttributes>\n\n return () => {\n const Component = props._asChild || 'a'\n\n // Access the computed value to get fresh props each render\n const linkProps = linkPropsComputed.value\n\n const isActive = linkProps['data-status'] === 'active'\n const isTransitioning =\n linkProps['data-transitioning'] === 'transitioning'\n\n // Create the slot content or empty array if no default slot\n const slotContent = slots.default\n ? slots.default({\n isActive,\n isTransitioning,\n })\n : []\n\n // Special handling for SVG links - wrap an <a> inside the SVG\n if (Component === 'svg') {\n // Create props without class for svg link\n const svgLinkProps = { ...linkProps }\n delete (svgLinkProps as any).class\n return Vue.h('svg', {}, [Vue.h('a', svgLinkProps, slotContent)])\n }\n\n // For custom functional components (non-string), pass children as a prop\n // since they may expect children as a prop like in Solid\n if (typeof Component !== 'string') {\n return Vue.h(\n Component,\n { ...linkProps, children: slotContent },\n slotContent,\n )\n }\n\n // Return the component with props and children\n return Vue.h(Component, linkProps, slotContent)\n }\n },\n})\n\n/**\n * Link component with proper TypeScript generics support\n */\nexport const Link = LinkImpl as unknown as {\n <\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n >(\n props: LinkComponentProps<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): Vue.VNode\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","Vue","ref","hasRenderFetched","console","warn","type","computed","URL","to","currentSearch","useRouterState","select","s","location","searchStr","from","useMatches","matches","length","fullPath","_options","value","next","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","pathname","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","useIntersectionObserver","rootMargin","disabled","effect","getPropsSafeToSpread","result","key","includes","externalProps","href","target","style","class","onClick","onFocus","onMouseEnter","onMouseLeave","onMouseOver","onMouseOut","onTouchStart","Object","keys","forEach","undefined","handleClick","e","elementTarget","currentTarget","getAttribute","effectiveTarget","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","_","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","composeEventHandlers","handlers","event","handler","resolvedActiveProps","activeProps","props","resolvedInactiveProps","inactiveProps","resolvedClassName","classes","filter","Boolean","join","resolvedStyle","assign","nextLocation","maskedLocation","hrefValue","url","origin","startsWith","history","createHref","staticEventHandlers","onMouseenter","onMouseover","onMouseleave","onMouseout","onTouchstart","computedProps","role","activeP","inactiveP","createLink","Comp","defineComponent","name","inheritAttrs","setup","attrs","slots","h","Link","_asChild","LinkImpl","allProps","linkPropsComputed","Component","linkProps","slotContent","default","svgLinkProps","children","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sources":["../../src/link.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n deepEqual,\n exactPathTest,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\n\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport { useIntersectionObserver } from './utils'\nimport { useMatches } from './Matches'\n\nimport type {\n AnyRouter,\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\n// Type definitions to replace missing Vue JSX types\ntype EventHandler<TEvent = Event> = (e: TEvent) => void\ninterface HTMLAttributes {\n class?: string\n style?: Record<string, string | number>\n onClick?: EventHandler<MouseEvent>\n onFocus?: EventHandler<FocusEvent>\n // Vue 3's h() function expects lowercase event names after 'on' prefix\n onMouseenter?: EventHandler<MouseEvent>\n onMouseleave?: EventHandler<MouseEvent>\n onMouseover?: EventHandler<MouseEvent>\n onMouseout?: EventHandler<MouseEvent>\n onTouchstart?: EventHandler<TouchEvent>\n // Also accept the camelCase versions for external API compatibility\n onMouseEnter?: EventHandler<MouseEvent>\n onMouseLeave?: EventHandler<MouseEvent>\n onMouseOver?: EventHandler<MouseEvent>\n onMouseOut?: EventHandler<MouseEvent>\n onTouchStart?: EventHandler<TouchEvent>\n [key: string]: any\n}\n\ninterface StyledProps {\n class?: string\n style?: Record<string, string | number>\n [key: string]: any\n}\n\nexport function useLinkProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(\n options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): HTMLAttributes {\n const router = useRouter()\n const isTransitioning = Vue.ref(false)\n let hasRenderFetched = false\n\n // Ensure router is defined before proceeding\n if (!router) {\n console.warn('useRouter must be used inside a <RouterProvider> component!')\n return {}\n }\n\n // Determine if the link is external or internal\n const type = Vue.computed(() => {\n try {\n new URL(`${options.to}`)\n return 'external'\n } catch {\n return 'internal'\n }\n })\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n // when `from` is not supplied, use the leaf route of the current matches as the `from` location\n const from = useMatches({\n select: (matches) => options.from ?? matches[matches.length - 1]?.fullPath,\n })\n\n const _options = Vue.computed(() => ({\n ...options,\n from: from.value,\n }))\n\n const next = Vue.computed(() => {\n // Depend on search to rebuild when search changes\n currentSearch.value\n return router.buildLocation(_options.value as any)\n })\n\n const preload = Vue.computed(() => {\n if (_options.value.reloadDocument) {\n return false\n }\n return options.preload ?? router.options.defaultPreload\n })\n\n const preloadDelay = Vue.computed(\n () => options.preloadDelay ?? router.options.defaultPreloadDelay ?? 0,\n )\n\n const isActive = useRouterState({\n select: (s) => {\n const activeOptions = options.activeOptions\n if (activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next.value.pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPathSplit = removeTrailingSlash(\n s.location.pathname,\n router.basepath,\n ).split('/')\n const nextPathSplit = removeTrailingSlash(\n next.value?.pathname,\n router.basepath,\n )?.split('/')\n\n const pathIsFuzzyEqual = nextPathSplit?.every(\n (d, i) => d === currentPathSplit[i],\n )\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next.value.search, {\n partial: !activeOptions?.exact,\n ignoreUndefined: !activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (activeOptions?.includeHash) {\n return s.location.hash === next.value.hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(_options.value as any).catch((err: any) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n\n const preloadViewportIoCallback = (\n entry: IntersectionObserverEntry | undefined,\n ) => {\n if (entry?.isIntersecting) {\n doPreload()\n }\n }\n\n const ref = Vue.ref<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: () => !!options.disabled || !(preload.value === 'viewport') },\n )\n\n Vue.effect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!options.disabled && preload.value === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n // Create safe props that can be spread\n const getPropsSafeToSpread = () => {\n const result: Record<string, any> = {}\n for (const key in options) {\n if (\n ![\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n '_asChild',\n 'from',\n 'additionalProps',\n ].includes(key)\n ) {\n result[key] = options[key]\n }\n }\n return result\n }\n\n if (type.value === 'external') {\n // External links just have simple props\n const externalProps: HTMLAttributes = {\n ...getPropsSafeToSpread(),\n ref,\n href: options.to,\n target: options.target,\n disabled: options.disabled,\n style: options.style,\n class: options.class,\n onClick: options.onClick,\n onFocus: options.onFocus,\n onMouseEnter: options.onMouseEnter,\n onMouseLeave: options.onMouseLeave,\n onMouseOver: options.onMouseOver,\n onMouseOut: options.onMouseOut,\n onTouchStart: options.onTouchStart,\n }\n\n // Remove undefined values\n Object.keys(externalProps).forEach((key) => {\n if (externalProps[key] === undefined) {\n delete externalProps[key]\n }\n })\n\n return externalProps\n }\n\n // The click handler\n const handleClick = (e: MouseEvent): void => {\n // Check actual element's target attribute as fallback\n const elementTarget = (\n e.currentTarget as HTMLAnchorElement | SVGAElement\n )?.getAttribute('target')\n const effectiveTarget =\n options.target !== undefined ? options.target : elementTarget\n\n if (\n !options.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n // Don't prevent default or handle navigation if reloadDocument is true\n if (_options.value.reloadDocument) {\n return\n }\n\n e.preventDefault()\n\n isTransitioning.value = true\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n isTransitioning.value = false\n })\n\n // All is well? Navigate!\n router.navigate({\n ..._options.value,\n replace: options.replace,\n resetScroll: options.resetScroll,\n hashScrollIntoView: options.hashScrollIntoView,\n startTransition: options.startTransition,\n viewTransition: options.viewTransition,\n ignoreBlocker: options.ignoreBlocker,\n } as any)\n }\n }\n\n // The focus handler\n const handleFocus = (_: FocusEvent) => {\n if (options.disabled) return\n if (preload.value) {\n doPreload()\n }\n }\n\n const handleTouchStart = (_: TouchEvent) => {\n if (options.disabled) return\n if (preload.value) {\n doPreload()\n }\n }\n\n const handleEnter = (e: MouseEvent) => {\n if (options.disabled) return\n // Use currentTarget (the element with the handler) instead of target (which may be a child)\n const eventTarget = (e.currentTarget ||\n e.target ||\n {}) as LinkCurrentTargetElement\n\n if (preload.value) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay.value)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (options.disabled) return\n // Use currentTarget (the element with the handler) instead of target (which may be a child)\n const eventTarget = (e.currentTarget ||\n e.target ||\n {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n // Helper to compose event handlers - with explicit return type and better type handling\n function composeEventHandlers<T extends Event>(\n handlers: Array<EventHandler<T> | undefined>,\n ): (e: T) => void {\n return (event: T) => {\n for (const handler of handlers) {\n if (handler) {\n handler(event)\n }\n }\n }\n }\n\n // Get the active and inactive props\n const resolvedActiveProps = Vue.computed<StyledProps>(() => {\n const activeProps = options.activeProps || (() => ({ class: 'active' }))\n const props = isActive.value\n ? typeof activeProps === 'function'\n ? activeProps()\n : activeProps\n : {}\n\n return props || { class: undefined, style: undefined }\n })\n\n const resolvedInactiveProps = Vue.computed<StyledProps>(() => {\n const inactiveProps = options.inactiveProps || (() => ({}))\n const props = isActive.value\n ? {}\n : typeof inactiveProps === 'function'\n ? inactiveProps()\n : inactiveProps\n\n return props || { class: undefined, style: undefined }\n })\n\n const resolvedClassName = Vue.computed(() => {\n const classes = [\n options.class,\n resolvedActiveProps.value?.class,\n resolvedInactiveProps.value?.class,\n ].filter(Boolean)\n return classes.length ? classes.join(' ') : undefined\n })\n\n const resolvedStyle = Vue.computed(() => {\n const result: Record<string, string | number> = {}\n\n // Merge styles from all sources\n if (options.style) {\n Object.assign(result, options.style)\n }\n\n if (resolvedActiveProps.value?.style) {\n Object.assign(result, resolvedActiveProps.value.style)\n }\n\n if (resolvedInactiveProps.value?.style) {\n Object.assign(result, resolvedInactiveProps.value.style)\n }\n\n return Object.keys(result).length > 0 ? result : undefined\n })\n\n const href = Vue.computed(() => {\n if (options.disabled) {\n return undefined\n }\n const nextLocation = next.value\n const maskedLocation = nextLocation?.maskedLocation\n\n let hrefValue: string\n if (maskedLocation) {\n hrefValue = maskedLocation.url.href\n } else {\n hrefValue = nextLocation?.url.href\n }\n\n // Handle origin stripping like Solid does\n if (router.origin && hrefValue?.startsWith(router.origin)) {\n hrefValue = router.history.createHref(\n hrefValue.replace(router.origin, ''),\n )\n }\n\n return hrefValue\n })\n\n // Create static event handlers that don't change between renders\n const staticEventHandlers = {\n onClick: composeEventHandlers<MouseEvent>([\n options.onClick,\n handleClick,\n ]) as any,\n onFocus: composeEventHandlers<FocusEvent>([\n options.onFocus,\n handleFocus,\n ]) as any,\n onMouseenter: composeEventHandlers<MouseEvent>([\n options.onMouseEnter,\n handleEnter,\n ]) as any,\n onMouseover: composeEventHandlers<MouseEvent>([\n options.onMouseOver,\n handleEnter,\n ]) as any,\n onMouseleave: composeEventHandlers<MouseEvent>([\n options.onMouseLeave,\n handleLeave,\n ]) as any,\n onMouseout: composeEventHandlers<MouseEvent>([\n options.onMouseOut,\n handleLeave,\n ]) as any,\n onTouchstart: composeEventHandlers<TouchEvent>([\n options.onTouchStart,\n handleTouchStart,\n ]) as any,\n }\n\n // Compute all props synchronously to avoid hydration mismatches\n // Using Vue.computed ensures props are calculated at render time, not after\n const computedProps = Vue.computed<HTMLAttributes>(() => {\n const result: HTMLAttributes = {\n ...getPropsSafeToSpread(),\n href: href.value,\n ref,\n ...staticEventHandlers,\n disabled: !!options.disabled,\n target: options.target,\n }\n\n // Add style if present\n if (resolvedStyle.value) {\n result.style = resolvedStyle.value\n }\n\n // Add class if present\n if (resolvedClassName.value) {\n result.class = resolvedClassName.value\n }\n\n // Add disabled props\n if (options.disabled) {\n result.role = 'link'\n result['aria-disabled'] = true\n }\n\n // Add active status\n if (isActive.value) {\n result['data-status'] = 'active'\n result['aria-current'] = 'page'\n }\n\n // Add transitioning status\n if (isTransitioning.value) {\n result['data-transitioning'] = 'transitioning'\n }\n\n // Merge active/inactive props (excluding class and style which are handled above)\n const activeP = resolvedActiveProps.value\n const inactiveP = resolvedInactiveProps.value\n\n for (const key of Object.keys(activeP)) {\n if (key !== 'class' && key !== 'style') {\n result[key] = activeP[key]\n }\n }\n for (const key of Object.keys(inactiveP)) {\n if (key !== 'class' && key !== 'style') {\n result[key] = inactiveP[key]\n }\n }\n\n return result\n })\n\n // Return the computed ref itself - callers should access .value\n return computedProps as unknown as HTMLAttributes\n}\n\n// Type definitions\nexport type UseLinkPropsOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n HTMLAttributes\n\nexport type ActiveLinkOptions<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n ActiveLinkOptionProps<TComp>\n\ntype ActiveLinkProps<TComp> = Partial<\n HTMLAttributes & {\n [key: `data-${string}`]: unknown\n }\n>\n\nexport interface ActiveLinkOptionProps<TComp = 'a'> {\n /**\n * A function that returns additional props for the `active` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n activeProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n /**\n * A function that returns additional props for the `inactive` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n inactiveProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n}\n\nexport type LinkProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n LinkPropsChildren\n\nexport interface LinkPropsChildren {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | Vue.VNode\n | ((state: { isActive: boolean; isTransitioning: boolean }) => Vue.VNode)\n}\n\ntype LinkComponentVueProps<TComp> = TComp extends keyof HTMLElementTagNameMap\n ? Omit<HTMLAttributes, keyof CreateLinkProps>\n : TComp extends Vue.Component\n ? Record<string, any>\n : Record<string, any>\n\nexport type LinkComponentProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkComponentVueProps<TComp> &\n LinkProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type CreateLinkProps = LinkProps<\n any,\n any,\n string,\n string,\n string,\n string\n>\n\nexport type LinkComponent<TComp> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Vue.VNode\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Vue.VNode>,\n): LinkComponent<TComp> {\n return Vue.defineComponent({\n name: 'CreatedLink',\n inheritAttrs: false,\n setup(_, { attrs, slots }) {\n return () => Vue.h(Link, { ...attrs, _asChild: Comp }, slots)\n },\n }) as any\n}\n\nconst LinkImpl = Vue.defineComponent({\n name: 'Link',\n inheritAttrs: false,\n props: [\n '_asChild',\n 'to',\n 'preload',\n 'preloadDelay',\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'from',\n 'search',\n 'params',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'disabled',\n 'additionalProps',\n 'viewTransition',\n 'resetScroll',\n 'startTransition',\n 'hashScrollIntoView',\n 'replace',\n 'ignoreBlocker',\n 'target',\n ],\n setup(props, { attrs, slots }) {\n // Call useLinkProps ONCE during setup with combined props and attrs\n // The returned object is a computed ref that updates reactively\n const allProps = { ...props, ...attrs }\n const linkPropsComputed = useLinkProps(\n allProps as any,\n ) as unknown as Vue.ComputedRef<HTMLAttributes>\n\n return () => {\n const Component = props._asChild || 'a'\n\n // Access the computed value to get fresh props each render\n const linkProps = linkPropsComputed.value\n\n const isActive = linkProps['data-status'] === 'active'\n const isTransitioning =\n linkProps['data-transitioning'] === 'transitioning'\n\n // Create the slot content or empty array if no default slot\n const slotContent = slots.default\n ? slots.default({\n isActive,\n isTransitioning,\n })\n : []\n\n // Special handling for SVG links - wrap an <a> inside the SVG\n if (Component === 'svg') {\n // Create props without class for svg link\n const svgLinkProps = { ...linkProps }\n delete (svgLinkProps as any).class\n return Vue.h('svg', {}, [Vue.h('a', svgLinkProps, slotContent)])\n }\n\n // For custom functional components (non-string), pass children as a prop\n // since they may expect children as a prop like in Solid\n if (typeof Component !== 'string') {\n return Vue.h(\n Component,\n { ...linkProps, children: slotContent },\n slotContent,\n )\n }\n\n // Return the component with props and children\n return Vue.h(Component, linkProps, slotContent)\n }\n },\n})\n\n/**\n * Link component with proper TypeScript generics support\n */\nexport const Link = LinkImpl as unknown as {\n <\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n >(\n props: LinkComponentProps<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n ): Vue.VNode\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","Vue","ref","hasRenderFetched","console","warn","type","computed","URL","to","currentSearch","useRouterState","select","s","location","searchStr","from","useMatches","matches","length","fullPath","_options","value","next","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","pathname","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","useIntersectionObserver","rootMargin","disabled","effect","getPropsSafeToSpread","result","key","includes","externalProps","href","target","style","class","onClick","onFocus","onMouseEnter","onMouseLeave","onMouseOver","onMouseOut","onTouchStart","Object","keys","forEach","undefined","handleClick","e","elementTarget","currentTarget","getAttribute","effectiveTarget","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","_","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","composeEventHandlers","handlers","event","handler","resolvedActiveProps","activeProps","props","resolvedInactiveProps","inactiveProps","resolvedClassName","classes","filter","Boolean","join","resolvedStyle","assign","nextLocation","maskedLocation","hrefValue","url","origin","startsWith","history","createHref","staticEventHandlers","onMouseenter","onMouseover","onMouseleave","onMouseout","onTouchstart","computedProps","role","activeP","inactiveP","createLink","Comp","defineComponent","name","inheritAttrs","setup","attrs","slots","h","Link","_asChild","LinkImpl","allProps","linkPropsComputed","Component","linkProps","slotContent","default","svgLinkProps","children","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import * as Vue from 'vue';
2
2
  import type { ErrorRouteComponent } from './route';
3
- export declare function CatchBoundary(props: {
3
+ type CatchBoundaryProps = {
4
4
  getResetKey: () => number | string;
5
5
  children: Vue.VNode;
6
6
  errorComponent?: ErrorRouteComponent | Vue.Component;
7
7
  onCatch?: (error: Error) => void;
8
- }): Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
8
+ };
9
+ export declare function CatchBoundary(props: CatchBoundaryProps): Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
9
10
  [key: string]: any;
10
11
  }>;
11
12
  export declare const ErrorComponent: Vue.DefineComponent<Vue.ExtractPropTypes<{
@@ -17,3 +18,4 @@ export declare const ErrorComponent: Vue.DefineComponent<Vue.ExtractPropTypes<{
17
18
  error: ObjectConstructor;
18
19
  reset: FunctionConstructor;
19
20
  }>> & Readonly<{}>, {}, {}, {}, {}, string, Vue.ComponentProvideOptions, true, {}, any>;
21
+ export {};
@@ -46,29 +46,30 @@ const VueErrorBoundary = Vue.defineComponent({
46
46
  };
47
47
  },
48
48
  });
49
+ const CatchBoundaryWrapper = Vue.defineComponent({
50
+ name: 'CatchBoundary',
51
+ inheritAttrs: false,
52
+ props: ['getResetKey', 'children', 'errorComponent', 'onCatch'],
53
+ setup(props) {
54
+ const resetKey = Vue.computed(() => props.getResetKey());
55
+ return () => {
56
+ return Vue.h(VueErrorBoundary, {
57
+ resetKey: resetKey.value,
58
+ onError: props.onCatch,
59
+ }, {
60
+ default: () => props.children,
61
+ fallback: ({ error, reset }) => {
62
+ if (props.errorComponent) {
63
+ return Vue.h(props.errorComponent, { error, reset });
64
+ }
65
+ return Vue.h(ErrorComponent, { error, reset });
66
+ },
67
+ });
68
+ };
69
+ },
70
+ });
49
71
  export function CatchBoundary(props) {
50
- const CatchBoundaryWrapper = Vue.defineComponent({
51
- name: 'CatchBoundaryWrapper',
52
- inheritAttrs: false,
53
- setup() {
54
- const resetKey = Vue.computed(() => props.getResetKey());
55
- return () => {
56
- return Vue.h(VueErrorBoundary, {
57
- resetKey: resetKey.value,
58
- onError: props.onCatch,
59
- }, {
60
- default: () => props.children,
61
- fallback: ({ error, reset }) => {
62
- if (props.errorComponent) {
63
- return Vue.h(props.errorComponent, { error, reset });
64
- }
65
- return Vue.h(ErrorComponent, { error, reset });
66
- },
67
- });
68
- };
69
- },
70
- });
71
- return Vue.h(CatchBoundaryWrapper);
72
+ return Vue.h(CatchBoundaryWrapper, props);
72
73
  }
73
74
  export const ErrorComponent = Vue.defineComponent({
74
75
  name: 'ErrorComponent',
@@ -1 +1 @@
1
- {"version":3,"file":"CatchBoundary.jsx","sourceRoot":"","sources":["../../src/CatchBoundary.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CatchBoundary.jsx","sourceRoot":"","sources":["../../src/CatchBoundary.tsx"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export const ScriptOnce = Vue.defineComponent({
11
11
  setup(props) {
12
12
  const router = useRouter();
13
13
  if (router.isServer) {
14
- return () => (<script nonce={router.options.ssr?.nonce} class="$tsr" innerHTML={props.children}/>);
14
+ return () => (<script nonce={router.options.ssr?.nonce} innerHTML={props.children + ';document.currentScript.remove()'}/>);
15
15
  }
16
16
  const mounted = Vue.ref(false);
17
17
  Vue.onMounted(() => {
@@ -21,7 +21,7 @@ export const ScriptOnce = Vue.defineComponent({
21
21
  if (mounted.value) {
22
22
  return null;
23
23
  }
24
- return (<script nonce={router.options.ssr?.nonce} class="$tsr" data-allow-mismatch innerHTML=""/>);
24
+ return (<script nonce={router.options.ssr?.nonce} data-allow-mismatch innerHTML=""/>);
25
25
  };
26
26
  },
27
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptOnce.jsx","sourceRoot":"","sources":["../../src/ScriptOnce.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,GAAG,EAAE,CAAC,CACX,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CACjC,KAAK,CAAC,MAAM,CACZ,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC1B,CACH,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,CACL,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CACjC,KAAK,CAAC,MAAM,CACZ,mBAAmB,CACnB,SAAS,CAAC,EAAE,EACZ,CACH,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"ScriptOnce.jsx","sourceRoot":"","sources":["../../src/ScriptOnce.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAE1B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,GAAG,EAAE,CAAC,CACX,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CACjC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,kCAAkC,CAAC,EAC/D,CACH,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,CACL,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CACjC,mBAAmB,CACnB,SAAS,CAAC,EAAE,EACZ,CACH,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -2,9 +2,6 @@ import * as Vue from 'vue';
2
2
  import { Asset } from './Asset';
3
3
  import { useRouterState } from './useRouterState';
4
4
  import { useRouter } from './useRouter';
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
5
  export const Scripts = Vue.defineComponent({
9
6
  name: 'Scripts',
10
7
  setup() {
@@ -53,11 +50,6 @@ export const Scripts = Vue.defineComponent({
53
50
  return () => {
54
51
  const allScripts = [];
55
52
  if (router.serverSsr) {
56
- allScripts.push({
57
- tag: 'script',
58
- attrs: { nonce },
59
- children: VUE_DEFER_SCRIPT,
60
- });
61
53
  const serverBufferedScript = router.serverSsr.takeBufferedScripts();
62
54
  if (serverBufferedScript) {
63
55
  allScripts.push(serverBufferedScript);
@@ -73,7 +65,6 @@ export const Scripts = Vue.defineComponent({
73
65
  tag: 'script',
74
66
  attrs: {
75
67
  nonce,
76
- class: '$tsr',
77
68
  id: '$tsr-stream-barrier',
78
69
  'data-allow-mismatch': true,
79
70
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,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,iFAAiF;AACjF,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,uBAAuB,CAAA;AAEhD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC;IACzC,IAAI,EAAE,SAAS;IACf,KAAK;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAA;QAEvC,MAAM,YAAY,GAAG,cAAc,CAAC;YAClC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,YAAY,GAA4B,EAAE,CAAA;gBAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAA;gBAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,KAAK,CAAC,OAAO;qBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;qBACtD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM;oBAC/B,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;qBAClC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACjB,YAAY,CAAC,IAAI,CAAC;wBAChB,GAAG,EAAE,QAAQ;wBACb,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE;wBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;qBACL,CAAC,CAAA;gBACxB,CAAC,CAAC,CACL,CAAA;gBAEH,OAAO,YAAY,CAAA;YACrB,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,cAAc,CAAC;YAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAClB,OAAO,EACL,KAAK,CAAC,OAAO;qBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC;qBAC9B,IAAI,CAAC,CAAC,CAAC;qBACP,MAAM,CAAC,OAAO,CAClB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;oBAClC,GAAG,EAAE,QAAiB;oBACtB,KAAK,EAAE;wBACL,GAAG,MAAM;wBACT,KAAK;qBACN;oBACD,QAAQ;iBACT,CAAC,CAAC;aACJ,CAAC;SACH,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,MAAM,UAAU,GAA4B,EAAE,CAAA;YAE9C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,UAAU,CAAC,IAAI,CAAC;oBACd,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,EAAE,KAAK,EAAE;oBAChB,QAAQ,EAAE,gBAAgB;iBACP,CAAC,CAAA;gBAEtB,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAA;gBACnE,IAAI,oBAAoB,EAAE,CAAC;oBACzB,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxC,UAAU,CAAC,IAAI,CAAC;oBACd,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE;oBAC7C,QAAQ,EAAE,EAAE;iBACO,CAAC,CAAA;gBAEtB,UAAU,CAAC,IAAI,CAAC;oBACd,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE;wBACL,KAAK;wBACL,KAAK,EAAE,MAAM;wBACb,EAAE,EAAE,qBAAqB;wBACzB,qBAAqB,EAAE,IAAI;qBAC5B;oBACD,QAAQ,EAAE,EAAE;iBACO,CAAC,CAAA;gBAEtB,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;oBACvC,UAAU,CAAC,IAAI,CAAC;wBACd,GAAG,EAAE,QAAQ;wBACb,KAAK,EAAE;4BACL,GAAG,KAAK,CAAC,KAAK;4BACd,qBAAqB,EAAE,IAAI;yBAC5B;wBACD,QAAQ,EAAE,EAAE;qBACO,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC3C,UAAU,CAAC,IAAI,CAAC,MAA0B,CAAC,CAAA;YAC7C,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtC,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;oBACvC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;YAED,OAAO,CACL,EACE;UAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAG,CAC3D,CAAC,CACJ;QAAA,GAAG,CACJ,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"Scripts.jsx","sourceRoot":"","sources":["../../src/Scripts.tsx"],"names":[],"mappings":"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"}
@@ -68,18 +68,18 @@ export function useTransitionerSetup() {
68
68
  // End the transition on next tick to allow Vue to process reactive updates
69
69
  endTransition();
70
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.
71
+ // Vue updates DOM asynchronously (next tick). The View Transitions API expects the
72
+ // update callback promise to resolve only after the DOM has been updated.
73
+ // Wrap the router-core implementation to await a Vue flush before resolving.
74
+ const originalStartViewTransition = router.__tsrOriginalStartViewTransition ??
75
+ router.startViewTransition;
76
+ router.__tsrOriginalStartViewTransition =
77
+ originalStartViewTransition;
79
78
  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();
79
+ return originalStartViewTransition?.(async () => {
80
+ await fn();
81
+ await Vue.nextTick();
82
+ });
83
83
  };
84
84
  // Subscribe to location changes
85
85
  // and try to load the new location
@@ -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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"}
@@ -303,10 +303,10 @@ export function useLinkProps(options) {
303
303
  const maskedLocation = nextLocation?.maskedLocation;
304
304
  let hrefValue;
305
305
  if (maskedLocation) {
306
- hrefValue = maskedLocation.url;
306
+ hrefValue = maskedLocation.url.href;
307
307
  }
308
308
  else {
309
- hrefValue = nextLocation?.url;
309
+ hrefValue = nextLocation?.url.href;
310
310
  }
311
311
  // Handle origin stripping like Solid does
312
312
  if (router.origin && hrefValue?.startsWith(router.origin)) {
@@ -1 +1 @@
1
- {"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/vue-router",
3
- "version": "1.141.1",
3
+ "version": "1.141.4",
4
4
  "description": "Modern and scalable routing for Vue applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -62,7 +62,7 @@
62
62
  "tiny-invariant": "^1.3.3",
63
63
  "tiny-warning": "^1.0.3",
64
64
  "@tanstack/history": "1.141.0",
65
- "@tanstack/router-core": "1.141.1"
65
+ "@tanstack/router-core": "1.141.4"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@testing-library/jest-dom": "^6.6.3",
@@ -6,6 +6,13 @@ interface ErrorComponentProps {
6
6
  reset: () => void
7
7
  }
8
8
 
9
+ type CatchBoundaryProps = {
10
+ getResetKey: () => number | string
11
+ children: Vue.VNode
12
+ errorComponent?: ErrorRouteComponent | Vue.Component
13
+ onCatch?: (error: Error) => void
14
+ }
15
+
9
16
  const VueErrorBoundary = Vue.defineComponent({
10
17
  name: 'VueErrorBoundary',
11
18
  props: {
@@ -67,40 +74,36 @@ const VueErrorBoundary = Vue.defineComponent({
67
74
  },
68
75
  })
69
76
 
70
- export function CatchBoundary(props: {
71
- getResetKey: () => number | string
72
- children: Vue.VNode
73
- errorComponent?: ErrorRouteComponent | Vue.Component
74
- onCatch?: (error: Error) => void
75
- }) {
76
- const CatchBoundaryWrapper = Vue.defineComponent({
77
- name: 'CatchBoundaryWrapper',
78
- inheritAttrs: false,
79
- setup() {
80
- const resetKey = Vue.computed(() => props.getResetKey())
81
-
82
- return () => {
83
- return Vue.h(
84
- VueErrorBoundary,
85
- {
86
- resetKey: resetKey.value,
87
- onError: props.onCatch,
88
- },
89
- {
90
- default: () => props.children,
91
- fallback: ({ error, reset }: ErrorComponentProps) => {
92
- if (props.errorComponent) {
93
- return Vue.h(props.errorComponent, { error, reset })
94
- }
95
- return Vue.h(ErrorComponent, { error, reset })
96
- },
77
+ const CatchBoundaryWrapper = Vue.defineComponent({
78
+ name: 'CatchBoundary',
79
+ inheritAttrs: false,
80
+ props: ['getResetKey', 'children', 'errorComponent', 'onCatch'] as any,
81
+ setup(props: CatchBoundaryProps) {
82
+ const resetKey = Vue.computed(() => props.getResetKey())
83
+
84
+ return () => {
85
+ return Vue.h(
86
+ VueErrorBoundary,
87
+ {
88
+ resetKey: resetKey.value,
89
+ onError: props.onCatch,
90
+ },
91
+ {
92
+ default: () => props.children,
93
+ fallback: ({ error, reset }: ErrorComponentProps) => {
94
+ if (props.errorComponent) {
95
+ return Vue.h(props.errorComponent, { error, reset })
96
+ }
97
+ return Vue.h(ErrorComponent, { error, reset })
97
98
  },
98
- )
99
- }
100
- },
101
- })
99
+ },
100
+ )
101
+ }
102
+ },
103
+ })
102
104
 
103
- return Vue.h(CatchBoundaryWrapper)
105
+ export function CatchBoundary(props: CatchBoundaryProps) {
106
+ return Vue.h(CatchBoundaryWrapper, props as any)
104
107
  }
105
108
 
106
109
  export const ErrorComponent = Vue.defineComponent({
@@ -16,8 +16,7 @@ export const ScriptOnce = Vue.defineComponent({
16
16
  return () => (
17
17
  <script
18
18
  nonce={router.options.ssr?.nonce}
19
- class="$tsr"
20
- innerHTML={props.children}
19
+ innerHTML={props.children + ';document.currentScript.remove()'}
21
20
  />
22
21
  )
23
22
  }
@@ -35,7 +34,6 @@ export const ScriptOnce = Vue.defineComponent({
35
34
  return (
36
35
  <script
37
36
  nonce={router.options.ssr?.nonce}
38
- class="$tsr"
39
37
  data-allow-mismatch
40
38
  innerHTML=""
41
39
  />
package/src/Scripts.tsx CHANGED
@@ -4,10 +4,6 @@ import { useRouterState } from './useRouterState'
4
4
  import { useRouter } from './useRouter'
5
5
  import type { RouterManagedTag } from '@tanstack/router-core'
6
6
 
7
- // Script that sets the defer flag for Vue - must run BEFORE TSR bootstrap script
8
- // This prevents $_TSR.c() from removing scripts until Vue hydration is complete
9
- const VUE_DEFER_SCRIPT = 'self.$_TSR_DEFER=true'
10
-
11
7
  export const Scripts = Vue.defineComponent({
12
8
  name: 'Scripts',
13
9
  setup() {
@@ -68,12 +64,6 @@ export const Scripts = Vue.defineComponent({
68
64
  const allScripts: Array<RouterManagedTag> = []
69
65
 
70
66
  if (router.serverSsr) {
71
- allScripts.push({
72
- tag: 'script',
73
- attrs: { nonce },
74
- children: VUE_DEFER_SCRIPT,
75
- } as RouterManagedTag)
76
-
77
67
  const serverBufferedScript = router.serverSsr.takeBufferedScripts()
78
68
  if (serverBufferedScript) {
79
69
  allScripts.push(serverBufferedScript)
@@ -89,7 +79,6 @@ export const Scripts = Vue.defineComponent({
89
79
  tag: 'script',
90
80
  attrs: {
91
81
  nonce,
92
- class: '$tsr',
93
82
  id: '$tsr-stream-barrier',
94
83
  'data-allow-mismatch': true,
95
84
  },
@@ -88,18 +88,23 @@ export function useTransitionerSetup() {
88
88
  endTransition()
89
89
  }
90
90
 
91
- // For Vue, we need to completely override startViewTransition because Vue's
92
- // async rendering doesn't work well with the View Transitions API's requirement
93
- // for synchronous DOM updates. The browser expects the DOM to be updated
94
- // when the callback promise resolves, but Vue updates asynchronously.
95
- //
96
- // Our approach: Skip the actual view transition animation but still update state.
97
- // This ensures navigation works correctly even without the visual transition.
98
- // In the future, we could explore using viewTransition.captured like vue-view-transitions does.
91
+ // Vue updates DOM asynchronously (next tick). The View Transitions API expects the
92
+ // update callback promise to resolve only after the DOM has been updated.
93
+ // Wrap the router-core implementation to await a Vue flush before resolving.
94
+ const originalStartViewTransition:
95
+ | undefined
96
+ | ((fn: () => Promise<void>) => void) =
97
+ (router as any).__tsrOriginalStartViewTransition ??
98
+ router.startViewTransition
99
+
100
+ ;(router as any).__tsrOriginalStartViewTransition =
101
+ originalStartViewTransition
102
+
99
103
  router.startViewTransition = (fn: () => Promise<void>) => {
100
- // Just run the callback directly without wrapping in document.startViewTransition
101
- // This ensures the state updates happen and Vue can render them normally
102
- fn()
104
+ return originalStartViewTransition?.(async () => {
105
+ await fn()
106
+ await Vue.nextTick()
107
+ })
103
108
  }
104
109
 
105
110
  // Subscribe to location changes
package/src/link.tsx CHANGED
@@ -431,9 +431,9 @@ export function useLinkProps<
431
431
 
432
432
  let hrefValue: string
433
433
  if (maskedLocation) {
434
- hrefValue = maskedLocation.url
434
+ hrefValue = maskedLocation.url.href
435
435
  } else {
436
- hrefValue = nextLocation?.url
436
+ hrefValue = nextLocation?.url.href
437
437
  }
438
438
 
439
439
  // Handle origin stripping like Solid does