@tanstack/vue-router 1.162.6 → 1.162.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/link.js CHANGED
@@ -100,7 +100,7 @@ function useLinkProps(options) {
100
100
  const result = {};
101
101
  const optionRecord = options;
102
102
  for (const key in options) {
103
- if (!["activeProps", "inactiveProps", "activeOptions", "to", "preload", "preloadDelay", "hashScrollIntoView", "replace", "startTransition", "resetScroll", "viewTransition", "children", "target", "disabled", "style", "class", "onClick", "onFocus", "onMouseEnter", "onMouseLeave", "onMouseOver", "onMouseOut", "onTouchStart", "ignoreBlocker", "params", "search", "hash", "state", "mask", "reloadDocument", "_asChild", "from", "additionalProps"].includes(key)) {
103
+ if (!["activeProps", "inactiveProps", "activeOptions", "to", "preload", "preloadDelay", "hashScrollIntoView", "replace", "startTransition", "resetScroll", "viewTransition", "children", "target", "disabled", "style", "class", "onClick", "onBlur", "onFocus", "onMouseEnter", "onMouseLeave", "onMouseOver", "onMouseOut", "onTouchStart", "ignoreBlocker", "params", "search", "hash", "state", "mask", "reloadDocument", "_asChild", "from", "additionalProps"].includes(key)) {
104
104
  result[key] = optionRecord[key];
105
105
  }
106
106
  }
@@ -120,6 +120,7 @@ function useLinkProps(options) {
120
120
  style: options.style,
121
121
  class: options.class,
122
122
  onClick: options.onClick,
123
+ onBlur: options.onBlur,
123
124
  onFocus: options.onFocus,
124
125
  onMouseEnter: options.onMouseEnter,
125
126
  onMouseLeave: options.onMouseLeave,
@@ -143,6 +144,7 @@ function useLinkProps(options) {
143
144
  style: options.style,
144
145
  class: options.class,
145
146
  onClick: options.onClick,
147
+ onBlur: options.onBlur,
146
148
  onFocus: options.onFocus,
147
149
  onMouseEnter: options.onMouseEnter,
148
150
  onMouseLeave: options.onMouseLeave,
@@ -181,11 +183,16 @@ function useLinkProps(options) {
181
183
  });
182
184
  }
183
185
  };
184
- const handleFocus = (_) => {
185
- if (options.disabled) return;
186
- if (preload.value) {
187
- doPreload();
186
+ const enqueueIntentPreload = (e) => {
187
+ if (options.disabled || !preload.value) return;
188
+ const eventTarget = e.currentTarget || e.target || {};
189
+ if (eventTarget.preloadTimeout) {
190
+ return;
188
191
  }
192
+ eventTarget.preloadTimeout = setTimeout(() => {
193
+ eventTarget.preloadTimeout = null;
194
+ doPreload();
195
+ }, preloadDelay.value);
189
196
  };
190
197
  const handleTouchStart = (_) => {
191
198
  if (options.disabled) return;
@@ -193,19 +200,6 @@ function useLinkProps(options) {
193
200
  doPreload();
194
201
  }
195
202
  };
196
- const handleEnter = (e) => {
197
- if (options.disabled) return;
198
- const eventTarget = e.currentTarget || e.target || {};
199
- if (preload.value) {
200
- if (eventTarget.preloadTimeout) {
201
- return;
202
- }
203
- eventTarget.preloadTimeout = setTimeout(() => {
204
- eventTarget.preloadTimeout = null;
205
- doPreload();
206
- }, preloadDelay.value);
207
- }
208
- };
209
203
  const handleLeave = (e) => {
210
204
  if (options.disabled) return;
211
205
  const eventTarget = e.currentTarget || e.target || {};
@@ -272,9 +266,10 @@ function useLinkProps(options) {
272
266
  });
273
267
  const staticEventHandlers = {
274
268
  onClick: composeEventHandlers([options.onClick, handleClick]),
275
- onFocus: composeEventHandlers([options.onFocus, handleFocus]),
276
- onMouseenter: composeEventHandlers([options.onMouseEnter, handleEnter]),
277
- onMouseover: composeEventHandlers([options.onMouseOver, handleEnter]),
269
+ onBlur: composeEventHandlers([options.onBlur, handleLeave]),
270
+ onFocus: composeEventHandlers([options.onFocus, enqueueIntentPreload]),
271
+ onMouseenter: composeEventHandlers([options.onMouseEnter, enqueueIntentPreload]),
272
+ onMouseover: composeEventHandlers([options.onMouseOver, enqueueIntentPreload]),
278
273
  onMouseleave: composeEventHandlers([options.onMouseLeave, handleLeave]),
279
274
  onMouseout: composeEventHandlers([options.onMouseOut, handleLeave]),
280
275
  onTouchstart: composeEventHandlers([options.onTouchStart, handleTouchStart])
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sources":["../../src/link.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n deepEqual,\n exactPathTest,\n isDangerousProtocol,\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 { AnchorHTMLAttributes, ReservedProps } from '@vue/runtime-dom'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\ntype EventHandler<TEvent = Event> = (e: TEvent) => void\n\ntype DataAttributes = {\n [K in `data-${string}`]?: unknown\n}\n\ntype LinkHTMLAttributes = AnchorHTMLAttributes &\n ReservedProps &\n DataAttributes & {\n // Vue's runtime-dom types use lowercase event names.\n // Also accept 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\n // `disabled` is not a valid <a> attribute, but is useful when using `asChild`.\n disabled?: boolean\n }\n\ninterface StyledProps {\n class?: LinkHTMLAttributes['class']\n style?: LinkHTMLAttributes['style']\n [key: string]: unknown\n}\n\ntype PropsOfComponent<TComp> =\n // Functional components\n TComp extends (props: infer P, ...args: Array<unknown>) => any\n ? P\n : // Vue components (defineComponent, class components, etc)\n TComp extends Vue.Component<infer P>\n ? P\n : Record<string, unknown>\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): LinkHTMLAttributes {\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 const optionRecord = options as unknown as Record<string, unknown>\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] = optionRecord[key]\n }\n }\n return result\n }\n\n if (type.value === 'external') {\n // Block dangerous protocols like javascript:, blob:, data:\n if (isDangerousProtocol(options.to as string, router.protocolAllowlist)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Blocked Link with dangerous protocol: ${options.to}`)\n }\n // Return props without href to prevent navigation\n const safeProps: Record<string, unknown> = {\n ...getPropsSafeToSpread(),\n ref,\n // No href attribute - blocks the dangerous protocol\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(safeProps).forEach((key) => {\n if (safeProps[key] === undefined) {\n delete safeProps[key]\n }\n })\n\n return safeProps\n }\n\n // External links just have simple props\n const externalProps: Record<string, unknown> = {\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: PointerEvent): 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 })\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 location = nextLocation?.maskedLocation ?? nextLocation\n\n // Use publicHref - it contains the correct href for display\n // When a rewrite changes the origin, publicHref is the full URL\n // Otherwise it's the origin-stripped path\n // This avoids constructing URL objects in the hot path\n const publicHref = location?.publicHref\n if (!publicHref) return undefined\n\n const external = location?.external\n if (external) return publicHref\n\n return router.history.createHref(publicHref) || '/'\n })\n\n // Create static event handlers that don't change between renders\n const staticEventHandlers = {\n onClick: composeEventHandlers<PointerEvent>([\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<LinkHTMLAttributes>(() => {\n const result: Record<string, unknown> = {\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 as any)[key]\n }\n }\n for (const key of Object.keys(inactiveP)) {\n if (key !== 'class' && key !== 'style') {\n result[key] = (inactiveP as any)[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 LinkHTMLAttributes\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 LinkHTMLAttributes\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 (TComp extends keyof HTMLElementTagNameMap\n ? LinkHTMLAttributes\n : PropsOfComponent<TComp>) & {\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.VNodeChild\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Vue.VNodeChild)\n}\n\ntype LinkComponentVueProps<TComp> = TComp extends keyof HTMLElementTagNameMap\n ? Omit<LinkHTMLAttributes, keyof CreateLinkProps>\n : Omit<PropsOfComponent<TComp>, keyof CreateLinkProps>\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<\n in out TComp,\n in out TDefaultFrom extends string = string,\n> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = TDefaultFrom,\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 interface LinkComponentRoute<\n in out TDefaultFrom extends string = string,\n> {\n defaultFrom: TDefaultFrom;\n <\n TRouter extends AnyRouter = RegisteredRouter,\n const TTo extends string | undefined = undefined,\n const TMaskTo extends string = '',\n >(\n props: LinkComponentProps<\n 'a',\n TRouter,\n this['defaultFrom'],\n TTo,\n this['defaultFrom'],\n TMaskTo\n >,\n ): Vue.VNode\n}\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(LinkImpl as any, { ...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<LinkHTMLAttributes>\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.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 Vue.Component<unknown> &\n Vue.Component<CreateLinkProps> &\n LinkComponent<'a'>\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","optionRecord","key","includes","isDangerousProtocol","protocolAllowlist","process","env","NODE_ENV","safeProps","target","style","class","onClick","onFocus","onMouseEnter","onMouseLeave","onMouseOver","onMouseOut","onTouchStart","Object","keys","forEach","undefined","externalProps","href","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","publicHref","external","history","createHref","staticEventHandlers","onMouseenter","onMouseover","onMouseleave","onMouseout","onTouchstart","computedProps","role","activeP","inactiveP","createLink","Comp","defineComponent","name","inheritAttrs","setup","attrs","slots","h","LinkImpl","_asChild","allProps","linkPropsComputed","Component","linkProps","slotContent","default","svgLinkProps","children","Link","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 isDangerousProtocol,\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 { AnchorHTMLAttributes, ReservedProps } from '@vue/runtime-dom'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\ntype EventHandler<TEvent = Event> = (e: TEvent) => void\n\ntype DataAttributes = {\n [K in `data-${string}`]?: unknown\n}\n\ntype LinkHTMLAttributes = AnchorHTMLAttributes &\n ReservedProps &\n DataAttributes & {\n // Vue's runtime-dom types use lowercase event names.\n // Also accept 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\n // `disabled` is not a valid <a> attribute, but is useful when using `asChild`.\n disabled?: boolean\n }\n\ninterface StyledProps {\n class?: LinkHTMLAttributes['class']\n style?: LinkHTMLAttributes['style']\n [key: string]: unknown\n}\n\ntype PropsOfComponent<TComp> =\n // Functional components\n TComp extends (props: infer P, ...args: Array<unknown>) => any\n ? P\n : // Vue components (defineComponent, class components, etc)\n TComp extends Vue.Component<infer P>\n ? P\n : Record<string, unknown>\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): LinkHTMLAttributes {\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 const optionRecord = options as unknown as Record<string, unknown>\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 'onBlur',\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] = optionRecord[key]\n }\n }\n return result\n }\n\n if (type.value === 'external') {\n // Block dangerous protocols like javascript:, blob:, data:\n if (isDangerousProtocol(options.to as string, router.protocolAllowlist)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Blocked Link with dangerous protocol: ${options.to}`)\n }\n // Return props without href to prevent navigation\n const safeProps: Record<string, unknown> = {\n ...getPropsSafeToSpread(),\n ref,\n // No href attribute - blocks the dangerous protocol\n target: options.target,\n disabled: options.disabled,\n style: options.style,\n class: options.class,\n onClick: options.onClick,\n onBlur: options.onBlur,\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(safeProps).forEach((key) => {\n if (safeProps[key] === undefined) {\n delete safeProps[key]\n }\n })\n\n return safeProps\n }\n\n // External links just have simple props\n const externalProps: Record<string, unknown> = {\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 onBlur: options.onBlur,\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: PointerEvent): 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 })\n }\n }\n\n const enqueueIntentPreload = (e: MouseEvent | FocusEvent) => {\n if (options.disabled || !preload.value) 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 return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay.value)\n }\n\n const handleTouchStart = (_: TouchEvent) => {\n if (options.disabled) return\n if (preload.value) {\n doPreload()\n }\n }\n\n const handleLeave = (e: MouseEvent | FocusEvent) => {\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 location = nextLocation?.maskedLocation ?? nextLocation\n\n // Use publicHref - it contains the correct href for display\n // When a rewrite changes the origin, publicHref is the full URL\n // Otherwise it's the origin-stripped path\n // This avoids constructing URL objects in the hot path\n const publicHref = location?.publicHref\n if (!publicHref) return undefined\n\n const external = location?.external\n if (external) return publicHref\n\n return router.history.createHref(publicHref) || '/'\n })\n\n // Create static event handlers that don't change between renders\n const staticEventHandlers = {\n onClick: composeEventHandlers<PointerEvent>([\n options.onClick,\n handleClick,\n ]) as any,\n onBlur: composeEventHandlers<FocusEvent>([\n options.onBlur,\n handleLeave,\n ]) as any,\n onFocus: composeEventHandlers<FocusEvent>([\n options.onFocus,\n enqueueIntentPreload,\n ]) as any,\n onMouseenter: composeEventHandlers<MouseEvent>([\n options.onMouseEnter,\n enqueueIntentPreload,\n ]) as any,\n onMouseover: composeEventHandlers<MouseEvent>([\n options.onMouseOver,\n enqueueIntentPreload,\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<LinkHTMLAttributes>(() => {\n const result: Record<string, unknown> = {\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 as any)[key]\n }\n }\n for (const key of Object.keys(inactiveP)) {\n if (key !== 'class' && key !== 'style') {\n result[key] = (inactiveP as any)[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 LinkHTMLAttributes\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 LinkHTMLAttributes\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 (TComp extends keyof HTMLElementTagNameMap\n ? LinkHTMLAttributes\n : PropsOfComponent<TComp>) & {\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.VNodeChild\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Vue.VNodeChild)\n}\n\ntype LinkComponentVueProps<TComp> = TComp extends keyof HTMLElementTagNameMap\n ? Omit<LinkHTMLAttributes, keyof CreateLinkProps>\n : Omit<PropsOfComponent<TComp>, keyof CreateLinkProps>\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<\n in out TComp,\n in out TDefaultFrom extends string = string,\n> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = TDefaultFrom,\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 interface LinkComponentRoute<\n in out TDefaultFrom extends string = string,\n> {\n defaultFrom: TDefaultFrom;\n <\n TRouter extends AnyRouter = RegisteredRouter,\n const TTo extends string | undefined = undefined,\n const TMaskTo extends string = '',\n >(\n props: LinkComponentProps<\n 'a',\n TRouter,\n this['defaultFrom'],\n TTo,\n this['defaultFrom'],\n TMaskTo\n >,\n ): Vue.VNode\n}\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(LinkImpl as any, { ...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<LinkHTMLAttributes>\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.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 Vue.Component<unknown> &\n Vue.Component<CreateLinkProps> &\n LinkComponent<'a'>\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","optionRecord","key","includes","isDangerousProtocol","protocolAllowlist","process","env","NODE_ENV","safeProps","target","style","class","onClick","onBlur","onFocus","onMouseEnter","onMouseLeave","onMouseOver","onMouseOut","onTouchStart","Object","keys","forEach","undefined","externalProps","href","handleClick","e","elementTarget","currentTarget","getAttribute","effectiveTarget","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","enqueueIntentPreload","eventTarget","preloadTimeout","setTimeout","handleTouchStart","_","handleLeave","clearTimeout","composeEventHandlers","handlers","event","handler","resolvedActiveProps","activeProps","props","resolvedInactiveProps","inactiveProps","resolvedClassName","classes","filter","Boolean","join","resolvedStyle","assign","nextLocation","maskedLocation","publicHref","external","history","createHref","staticEventHandlers","onMouseenter","onMouseover","onMouseleave","onMouseout","onTouchstart","computedProps","role","activeP","inactiveP","createLink","Comp","defineComponent","name","inheritAttrs","setup","attrs","slots","h","LinkImpl","_asChild","allProps","linkPropsComputed","Component","linkProps","slotContent","default","svgLinkProps","children","Link","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
@@ -121,6 +121,7 @@ export function useLinkProps(options) {
121
121
  'style',
122
122
  'class',
123
123
  'onClick',
124
+ 'onBlur',
124
125
  'onFocus',
125
126
  'onMouseEnter',
126
127
  'onMouseLeave',
@@ -159,6 +160,7 @@ export function useLinkProps(options) {
159
160
  style: options.style,
160
161
  class: options.class,
161
162
  onClick: options.onClick,
163
+ onBlur: options.onBlur,
162
164
  onFocus: options.onFocus,
163
165
  onMouseEnter: options.onMouseEnter,
164
166
  onMouseLeave: options.onMouseLeave,
@@ -184,6 +186,7 @@ export function useLinkProps(options) {
184
186
  style: options.style,
185
187
  class: options.class,
186
188
  onClick: options.onClick,
189
+ onBlur: options.onBlur,
187
190
  onFocus: options.onFocus,
188
191
  onMouseEnter: options.onMouseEnter,
189
192
  onMouseLeave: options.onMouseLeave,
@@ -231,13 +234,20 @@ export function useLinkProps(options) {
231
234
  });
232
235
  }
233
236
  };
234
- // The focus handler
235
- const handleFocus = (_) => {
236
- if (options.disabled)
237
+ const enqueueIntentPreload = (e) => {
238
+ if (options.disabled || !preload.value)
239
+ return;
240
+ // Use currentTarget (the element with the handler) instead of target (which may be a child)
241
+ const eventTarget = (e.currentTarget ||
242
+ e.target ||
243
+ {});
244
+ if (eventTarget.preloadTimeout) {
237
245
  return;
238
- if (preload.value) {
239
- doPreload();
240
246
  }
247
+ eventTarget.preloadTimeout = setTimeout(() => {
248
+ eventTarget.preloadTimeout = null;
249
+ doPreload();
250
+ }, preloadDelay.value);
241
251
  };
242
252
  const handleTouchStart = (_) => {
243
253
  if (options.disabled)
@@ -246,23 +256,6 @@ export function useLinkProps(options) {
246
256
  doPreload();
247
257
  }
248
258
  };
249
- const handleEnter = (e) => {
250
- if (options.disabled)
251
- return;
252
- // Use currentTarget (the element with the handler) instead of target (which may be a child)
253
- const eventTarget = (e.currentTarget ||
254
- e.target ||
255
- {});
256
- if (preload.value) {
257
- if (eventTarget.preloadTimeout) {
258
- return;
259
- }
260
- eventTarget.preloadTimeout = setTimeout(() => {
261
- eventTarget.preloadTimeout = null;
262
- doPreload();
263
- }, preloadDelay.value);
264
- }
265
- };
266
259
  const handleLeave = (e) => {
267
260
  if (options.disabled)
268
261
  return;
@@ -350,17 +343,21 @@ export function useLinkProps(options) {
350
343
  options.onClick,
351
344
  handleClick,
352
345
  ]),
346
+ onBlur: composeEventHandlers([
347
+ options.onBlur,
348
+ handleLeave,
349
+ ]),
353
350
  onFocus: composeEventHandlers([
354
351
  options.onFocus,
355
- handleFocus,
352
+ enqueueIntentPreload,
356
353
  ]),
357
354
  onMouseenter: composeEventHandlers([
358
355
  options.onMouseEnter,
359
- handleEnter,
356
+ enqueueIntentPreload,
360
357
  ]),
361
358
  onMouseover: composeEventHandlers([
362
359
  options.onMouseOver,
363
- handleEnter,
360
+ enqueueIntentPreload,
364
361
  ]),
365
362
  onMouseleave: composeEventHandlers([
366
363
  options.onMouseLeave,
@@ -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.162.6",
3
+ "version": "1.162.8",
4
4
  "description": "Modern and scalable routing for Vue applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
package/src/link.tsx CHANGED
@@ -226,6 +226,7 @@ export function useLinkProps<
226
226
  'style',
227
227
  'class',
228
228
  'onClick',
229
+ 'onBlur',
229
230
  'onFocus',
230
231
  'onMouseEnter',
231
232
  'onMouseLeave',
@@ -266,6 +267,7 @@ export function useLinkProps<
266
267
  style: options.style,
267
268
  class: options.class,
268
269
  onClick: options.onClick,
270
+ onBlur: options.onBlur,
269
271
  onFocus: options.onFocus,
270
272
  onMouseEnter: options.onMouseEnter,
271
273
  onMouseLeave: options.onMouseLeave,
@@ -294,6 +296,7 @@ export function useLinkProps<
294
296
  style: options.style,
295
297
  class: options.class,
296
298
  onClick: options.onClick,
299
+ onBlur: options.onBlur,
297
300
  onFocus: options.onFocus,
298
301
  onMouseEnter: options.onMouseEnter,
299
302
  onMouseLeave: options.onMouseLeave,
@@ -355,41 +358,31 @@ export function useLinkProps<
355
358
  }
356
359
  }
357
360
 
358
- // The focus handler
359
- const handleFocus = (_: FocusEvent) => {
360
- if (options.disabled) return
361
- if (preload.value) {
362
- doPreload()
361
+ const enqueueIntentPreload = (e: MouseEvent | FocusEvent) => {
362
+ if (options.disabled || !preload.value) return
363
+ // Use currentTarget (the element with the handler) instead of target (which may be a child)
364
+ const eventTarget = (e.currentTarget ||
365
+ e.target ||
366
+ {}) as LinkCurrentTargetElement
367
+
368
+ if (eventTarget.preloadTimeout) {
369
+ return
363
370
  }
364
- }
365
371
 
366
- const handleTouchStart = (_: TouchEvent) => {
367
- if (options.disabled) return
368
- if (preload.value) {
372
+ eventTarget.preloadTimeout = setTimeout(() => {
373
+ eventTarget.preloadTimeout = null
369
374
  doPreload()
370
- }
375
+ }, preloadDelay.value)
371
376
  }
372
377
 
373
- const handleEnter = (e: MouseEvent) => {
378
+ const handleTouchStart = (_: TouchEvent) => {
374
379
  if (options.disabled) return
375
- // Use currentTarget (the element with the handler) instead of target (which may be a child)
376
- const eventTarget = (e.currentTarget ||
377
- e.target ||
378
- {}) as LinkCurrentTargetElement
379
-
380
380
  if (preload.value) {
381
- if (eventTarget.preloadTimeout) {
382
- return
383
- }
384
-
385
- eventTarget.preloadTimeout = setTimeout(() => {
386
- eventTarget.preloadTimeout = null
387
- doPreload()
388
- }, preloadDelay.value)
381
+ doPreload()
389
382
  }
390
383
  }
391
384
 
392
- const handleLeave = (e: MouseEvent) => {
385
+ const handleLeave = (e: MouseEvent | FocusEvent) => {
393
386
  if (options.disabled) return
394
387
  // Use currentTarget (the element with the handler) instead of target (which may be a child)
395
388
  const eventTarget = (e.currentTarget ||
@@ -492,17 +485,21 @@ export function useLinkProps<
492
485
  options.onClick,
493
486
  handleClick,
494
487
  ]) as any,
488
+ onBlur: composeEventHandlers<FocusEvent>([
489
+ options.onBlur,
490
+ handleLeave,
491
+ ]) as any,
495
492
  onFocus: composeEventHandlers<FocusEvent>([
496
493
  options.onFocus,
497
- handleFocus,
494
+ enqueueIntentPreload,
498
495
  ]) as any,
499
496
  onMouseenter: composeEventHandlers<MouseEvent>([
500
497
  options.onMouseEnter,
501
- handleEnter,
498
+ enqueueIntentPreload,
502
499
  ]) as any,
503
500
  onMouseover: composeEventHandlers<MouseEvent>([
504
501
  options.onMouseOver,
505
- handleEnter,
502
+ enqueueIntentPreload,
506
503
  ]) as any,
507
504
  onMouseleave: composeEventHandlers<MouseEvent>([
508
505
  options.onMouseLeave,