@tanstack/vue-router 1.162.8 → 1.163.2
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 +16 -14
- package/dist/esm/link.js.map +1 -1
- package/dist/source/link.jsx +17 -20
- package/dist/source/link.jsx.map +1 -1
- package/package.json +2 -2
- package/src/link.tsx +24 -23
package/dist/esm/link.js
CHANGED
|
@@ -4,6 +4,7 @@ import { useRouterState } from "./useRouterState.js";
|
|
|
4
4
|
import { useRouter } from "./useRouter.js";
|
|
5
5
|
import { useIntersectionObserver } from "./utils.js";
|
|
6
6
|
import { useMatches } from "./Matches.js";
|
|
7
|
+
const timeoutMap = /* @__PURE__ */ new WeakMap();
|
|
7
8
|
function useLinkProps(options) {
|
|
8
9
|
const router = useRouter();
|
|
9
10
|
const isTransitioning = Vue.ref(false);
|
|
@@ -184,28 +185,29 @@ function useLinkProps(options) {
|
|
|
184
185
|
}
|
|
185
186
|
};
|
|
186
187
|
const enqueueIntentPreload = (e) => {
|
|
187
|
-
if (options.disabled ||
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
if (options.disabled || preload.value !== "intent") return;
|
|
189
|
+
if (!preloadDelay.value) {
|
|
190
|
+
doPreload();
|
|
190
191
|
return;
|
|
191
192
|
}
|
|
192
|
-
eventTarget
|
|
193
|
-
|
|
193
|
+
const eventTarget = e.currentTarget || e.target;
|
|
194
|
+
if (!eventTarget || timeoutMap.has(eventTarget)) return;
|
|
195
|
+
timeoutMap.set(eventTarget, setTimeout(() => {
|
|
196
|
+
timeoutMap.delete(eventTarget);
|
|
194
197
|
doPreload();
|
|
195
|
-
}, preloadDelay.value);
|
|
198
|
+
}, preloadDelay.value));
|
|
196
199
|
};
|
|
197
200
|
const handleTouchStart = (_) => {
|
|
198
|
-
if (options.disabled) return;
|
|
199
|
-
|
|
200
|
-
doPreload();
|
|
201
|
-
}
|
|
201
|
+
if (options.disabled || preload.value !== "intent") return;
|
|
202
|
+
doPreload();
|
|
202
203
|
};
|
|
203
204
|
const handleLeave = (e) => {
|
|
204
205
|
if (options.disabled) return;
|
|
205
|
-
const eventTarget = e.currentTarget || e.target
|
|
206
|
-
if (eventTarget
|
|
207
|
-
|
|
208
|
-
|
|
206
|
+
const eventTarget = e.currentTarget || e.target;
|
|
207
|
+
if (eventTarget) {
|
|
208
|
+
const id = timeoutMap.get(eventTarget);
|
|
209
|
+
clearTimeout(id);
|
|
210
|
+
timeoutMap.delete(eventTarget);
|
|
209
211
|
}
|
|
210
212
|
};
|
|
211
213
|
function composeEventHandlers(handlers) {
|
package/dist/esm/link.js.map
CHANGED
|
@@ -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 '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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"}
|
|
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 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\nconst timeoutMap = new WeakMap<EventTarget, ReturnType<typeof setTimeout>>()\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 !== 'intent') return\n\n if (!preloadDelay.value) {\n doPreload()\n return\n }\n\n const eventTarget = e.currentTarget || e.target\n\n if (!eventTarget || timeoutMap.has(eventTarget)) return\n\n timeoutMap.set(\n eventTarget,\n setTimeout(() => {\n timeoutMap.delete(eventTarget)\n doPreload()\n }, preloadDelay.value),\n )\n }\n\n const handleTouchStart = (_: TouchEvent) => {\n if (options.disabled || preload.value !== 'intent') return\n doPreload()\n }\n\n const handleLeave = (e: MouseEvent | FocusEvent) => {\n if (options.disabled) return\n const eventTarget = e.currentTarget || e.target\n\n if (eventTarget) {\n const id = timeoutMap.get(eventTarget)\n clearTimeout(id)\n timeoutMap.delete(eventTarget)\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":["timeoutMap","WeakMap","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","has","set","setTimeout","delete","handleTouchStart","_","handleLeave","id","get","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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"}
|
package/dist/source/link.jsx
CHANGED
|
@@ -4,6 +4,7 @@ import { useRouterState } from './useRouterState';
|
|
|
4
4
|
import { useRouter } from './useRouter';
|
|
5
5
|
import { useIntersectionObserver } from './utils';
|
|
6
6
|
import { useMatches } from './Matches';
|
|
7
|
+
const timeoutMap = new WeakMap();
|
|
7
8
|
export function useLinkProps(options) {
|
|
8
9
|
const router = useRouter();
|
|
9
10
|
const isTransitioning = Vue.ref(false);
|
|
@@ -235,37 +236,33 @@ export function useLinkProps(options) {
|
|
|
235
236
|
}
|
|
236
237
|
};
|
|
237
238
|
const enqueueIntentPreload = (e) => {
|
|
238
|
-
if (options.disabled ||
|
|
239
|
+
if (options.disabled || preload.value !== 'intent')
|
|
239
240
|
return;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
e.target ||
|
|
243
|
-
{});
|
|
244
|
-
if (eventTarget.preloadTimeout) {
|
|
241
|
+
if (!preloadDelay.value) {
|
|
242
|
+
doPreload();
|
|
245
243
|
return;
|
|
246
244
|
}
|
|
247
|
-
eventTarget
|
|
248
|
-
|
|
245
|
+
const eventTarget = e.currentTarget || e.target;
|
|
246
|
+
if (!eventTarget || timeoutMap.has(eventTarget))
|
|
247
|
+
return;
|
|
248
|
+
timeoutMap.set(eventTarget, setTimeout(() => {
|
|
249
|
+
timeoutMap.delete(eventTarget);
|
|
249
250
|
doPreload();
|
|
250
|
-
}, preloadDelay.value);
|
|
251
|
+
}, preloadDelay.value));
|
|
251
252
|
};
|
|
252
253
|
const handleTouchStart = (_) => {
|
|
253
|
-
if (options.disabled)
|
|
254
|
+
if (options.disabled || preload.value !== 'intent')
|
|
254
255
|
return;
|
|
255
|
-
|
|
256
|
-
doPreload();
|
|
257
|
-
}
|
|
256
|
+
doPreload();
|
|
258
257
|
};
|
|
259
258
|
const handleLeave = (e) => {
|
|
260
259
|
if (options.disabled)
|
|
261
260
|
return;
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
clearTimeout(eventTarget.preloadTimeout);
|
|
268
|
-
eventTarget.preloadTimeout = null;
|
|
261
|
+
const eventTarget = e.currentTarget || e.target;
|
|
262
|
+
if (eventTarget) {
|
|
263
|
+
const id = timeoutMap.get(eventTarget);
|
|
264
|
+
clearTimeout(id);
|
|
265
|
+
timeoutMap.delete(eventTarget);
|
|
269
266
|
}
|
|
270
267
|
};
|
|
271
268
|
// Helper to compose event handlers - with explicit return type and better type handling
|
package/dist/source/link.jsx.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EACL,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAoDtC,MAAM,UAAU,YAAY,CAO1B,OAAqE;IAErE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACtC,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,6CAA6C;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;QAC3E,OAAO,EAAE,CAAA;IACX,CAAC;IAED,gDAAgD;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;YACxB,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,CAAA;QACnB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,cAAc,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;KACpC,CAAC,CAAA;IAEF,gGAAgG;IAChG,MAAM,IAAI,GAAG,UAAU,CAAC;QACtB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ;KAC3E,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,GAAG,OAAO;QACV,IAAI,EAAE,IAAI,CAAC,KAAK;KACjB,CAAC,CAAC,CAAA;IAEH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7B,kDAAkD;QAClD,aAAa,CAAC,KAAK,CAAA;QACnB,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAClC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAC/B,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CACtE,CAAA;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;YAC3C,IAAI,aAAa,EAAE,KAAK,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,aAAa,CAC7B,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,MAAM,CAAC,QAAQ,CAChB,CAAA;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,MAAM,CAAC,QAAQ,CAChB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACZ,MAAM,aAAa,GAAG,mBAAmB,CACvC,IAAI,CAAC,KAAK,EAAE,QAAQ,EACpB,MAAM,CAAC,QAAQ,CAChB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEb,MAAM,gBAAgB,GAAG,aAAa,EAAE,KAAK,CAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CACpC,CAAA;gBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,aAAa,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACjE,OAAO,EAAE,CAAC,aAAa,EAAE,KAAK;oBAC9B,eAAe,EAAE,CAAC,aAAa,EAAE,iBAAiB;iBACnD,CAAC,CAAA;gBACF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,aAAa,EAAE,WAAW,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;YAC5C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC5D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEJ,MAAM,yBAAyB,GAAG,CAChC,KAA4C,EAC5C,EAAE;QACF,IAAI,KAAK,EAAE,cAAc,EAAE,CAAC;YAC1B,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAiB,IAAI,CAAC,CAAA;IAEzC,uBAAuB,CACrB,GAAG,EACH,yBAAyB,EACzB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE,CAC1E,CAAA;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpD,SAAS,EAAE,CAAA;YACX,gBAAgB,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,uCAAuC;IACvC,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,MAAM,MAAM,GAAwB,EAAE,CAAA;QACtC,MAAM,YAAY,GAAG,OAA6C,CAAA;QAClE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IACE,CAAC;gBACC,aAAa;gBACb,eAAe;gBACf,eAAe;gBACf,IAAI;gBACJ,SAAS;gBACT,cAAc;gBACd,oBAAoB;gBACpB,SAAS;gBACT,iBAAiB;gBACjB,aAAa;gBACb,gBAAgB;gBAChB,UAAU;gBACV,QAAQ;gBACR,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,SAAS;gBACT,QAAQ;gBACR,SAAS;gBACT,cAAc;gBACd,cAAc;gBACd,aAAa;gBACb,YAAY;gBACZ,cAAc;gBACd,eAAe;gBACf,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,gBAAgB;gBAChB,UAAU;gBACV,MAAM;gBACN,iBAAiB;aAClB,CAAC,QAAQ,CAAC,GAAG,CAAC,EACf,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC9B,2DAA2D;QAC3D,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAY,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;YACrE,CAAC;YACD,kDAAkD;YAClD,MAAM,SAAS,GAA4B;gBACzC,GAAG,oBAAoB,EAAE;gBACzB,GAAG;gBACH,oDAAoD;gBACpD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAA;YAED,0BAA0B;YAC1B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBACjC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;gBACvB,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,wCAAwC;QACxC,MAAM,aAAa,GAA4B;YAC7C,GAAG,oBAAoB,EAAE;YACzB,GAAG;YACH,IAAI,EAAE,OAAO,CAAC,EAAE;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAA;QAED,0BAA0B;QAC1B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAe,EAAQ,EAAE;QAC5C,sDAAsD;QACtD,MAAM,aAAa,GACjB,CAAC,CAAC,aACH,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;QACzB,MAAM,eAAe,GACnB,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAA;QAE/D,IACE,CAAC,OAAO,CAAC,QAAQ;YACjB,CAAC,WAAW,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,CAAC,gBAAgB;YACnB,CAAC,CAAC,eAAe,IAAI,eAAe,KAAK,OAAO,CAAC;YACjD,CAAC,CAAC,MAAM,KAAK,CAAC,EACd,CAAC;YACD,uEAAuE;YACvE,IAAI,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAClC,OAAM;YACR,CAAC;YAED,CAAC,CAAC,cAAc,EAAE,CAAA;YAElB,eAAe,CAAC,KAAK,GAAG,IAAI,CAAA;YAE5B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE;gBAChD,KAAK,EAAE,CAAA;gBACP,eAAe,CAAC,KAAK,GAAG,KAAK,CAAA;YAC/B,CAAC,CAAC,CAAA;YAEF,yBAAyB;YACzB,MAAM,CAAC,QAAQ,CAAC;gBACd,GAAG,QAAQ,CAAC,KAAK;gBACjB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,CAAC,CAA0B,EAAE,EAAE;QAC1D,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,OAAM;QAC9C,4FAA4F;QAC5F,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,aAAa;YAClC,CAAC,CAAC,MAAM;YACR,EAAE,CAA6B,CAAA;QAEjC,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,OAAM;QACR,CAAC;QAED,WAAW,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3C,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;YACjC,SAAS,EAAE,CAAA;QACb,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAa,EAAE,EAAE;QACzC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAM;QAC5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAA0B,EAAE,EAAE;QACjD,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAM;QAC5B,4FAA4F;QAC5F,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,aAAa;YAClC,CAAC,CAAC,MAAM;YACR,EAAE,CAA6B,CAAA;QAEjC,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;YACxC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;QACnC,CAAC;IACH,CAAC,CAAA;IAED,wFAAwF;IACxF,SAAS,oBAAoB,CAC3B,QAA4C;QAE5C,OAAO,CAAC,KAAQ,EAAE,EAAE;YAClB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,CAAA;gBAChB,CAAC;YACH,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,mBAAmB,GAAG,GAAG,CAAC,QAAQ,CAAc,GAAG,EAAE;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;YAC1B,CAAC,CAAC,OAAO,WAAW,KAAK,UAAU;gBACjC,CAAC,CAAC,WAAW,EAAE;gBACf,CAAC,CAAC,WAAW;YACf,CAAC,CAAC,EAAE,CAAA;QAEN,OAAO,KAAK,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,CAAc,GAAG,EAAE;QAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,aAAa,KAAK,UAAU;gBACnC,CAAC,CAAC,aAAa,EAAE;gBACjB,CAAC,CAAC,aAAa,CAAA;QAEnB,OAAO,KAAK,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG;YACd,OAAO,CAAC,KAAK;YACb,mBAAmB,CAAC,KAAK,EAAE,KAAK;YAChC,qBAAqB,CAAC,KAAK,EAAE,KAAK;SACnC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACjB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QACtC,MAAM,MAAM,GAAoC,EAAE,CAAA;QAElD,gCAAgC;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1D,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,QAAQ,GAAG,YAAY,EAAE,cAAc,IAAI,YAAY,CAAA;QAE7D,4DAA4D;QAC5D,gEAAgE;QAChE,0CAA0C;QAC1C,uDAAuD;QACvD,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU,CAAA;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAA;QAEjC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAA;QACnC,IAAI,QAAQ;YAAE,OAAO,UAAU,CAAA;QAE/B,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,iEAAiE;IACjE,MAAM,mBAAmB,GAAG;QAC1B,OAAO,EAAE,oBAAoB,CAAe;YAC1C,OAAO,CAAC,OAAO;YACf,WAAW;SACZ,CAAQ;QACT,MAAM,EAAE,oBAAoB,CAAa;YACvC,OAAO,CAAC,MAAM;YACd,WAAW;SACZ,CAAQ;QACT,OAAO,EAAE,oBAAoB,CAAa;YACxC,OAAO,CAAC,OAAO;YACf,oBAAoB;SACrB,CAAQ;QACT,YAAY,EAAE,oBAAoB,CAAa;YAC7C,OAAO,CAAC,YAAY;YACpB,oBAAoB;SACrB,CAAQ;QACT,WAAW,EAAE,oBAAoB,CAAa;YAC5C,OAAO,CAAC,WAAW;YACnB,oBAAoB;SACrB,CAAQ;QACT,YAAY,EAAE,oBAAoB,CAAa;YAC7C,OAAO,CAAC,YAAY;YACpB,WAAW;SACZ,CAAQ;QACT,UAAU,EAAE,oBAAoB,CAAa;YAC3C,OAAO,CAAC,UAAU;YAClB,WAAW;SACZ,CAAQ;QACT,YAAY,EAAE,oBAAoB,CAAa;YAC7C,OAAO,CAAC,YAAY;YACpB,gBAAgB;SACjB,CAAQ;KACV,CAAA;IAED,gEAAgE;IAChE,4EAA4E;IAC5E,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAqB,GAAG,EAAE;QAC1D,MAAM,MAAM,GAA4B;YACtC,GAAG,oBAAoB,EAAE;YACzB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,GAAG;YACH,GAAG,mBAAmB;YACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAA;QAED,uBAAuB;QACvB,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAA;QACpC,CAAC;QAED,uBAAuB;QACvB,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAA;QACxC,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAA;YACpB,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;QAChC,CAAC;QAED,oBAAoB;QACpB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAA;YAChC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;QACjC,CAAC;QAED,2BAA2B;QAC3B,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,oBAAoB,CAAC,GAAG,eAAe,CAAA;QAChD,CAAC;QAED,kFAAkF;QAClF,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAA;QACzC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAA;QAE7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,GAAI,OAAe,CAAC,GAAG,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,GAAI,SAAiB,CAAC,GAAG,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,gEAAgE;IAChE,OAAO,aAA8C,CAAA;AACvD,CAAC;AAuHD,MAAM,UAAU,UAAU,CACxB,IAAkE;IAElE,OAAO,GAAG,CAAC,eAAe,CAAC;QACzB,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,KAAK;QACnB,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YACvB,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAe,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;QAC1E,CAAC;KACF,CAAQ,CAAA;AACX,CAAC;AAED,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC;IACnC,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,UAAU;QACV,IAAI;QACJ,SAAS;QACT,cAAc;QACd,aAAa;QACb,eAAe;QACf,eAAe;QACf,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,OAAO;QACP,MAAM;QACN,gBAAgB;QAChB,UAAU;QACV,iBAAiB;QACjB,gBAAgB;QAChB,aAAa;QACb,iBAAiB;QACjB,oBAAoB;QACpB,SAAS;QACT,eAAe;QACf,QAAQ;KACT;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,oEAAoE;QACpE,gEAAgE;QAChE,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;QACvC,MAAM,iBAAiB,GAAG,YAAY,CACpC,QAAe,CACkC,CAAA;QAEnD,OAAO,GAAG,EAAE;YACV,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAA;YAEvC,2DAA2D;YAC3D,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAA;YAEzC,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAA;YACtD,MAAM,eAAe,GACnB,SAAS,CAAC,oBAAoB,CAAC,KAAK,eAAe,CAAA;YAErD,4DAA4D;YAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO;gBAC/B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;oBACZ,QAAQ;oBACR,eAAe;iBAChB,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAA;YAEN,8DAA8D;YAC9D,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,0CAA0C;gBAC1C,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;gBACrC,OAAO,YAAY,CAAC,KAAK,CAAA;gBACzB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;YAClE,CAAC;YAED,yEAAyE;YACzE,yDAAyD;YACzD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC,CAAC,CACV,SAAS,EACT,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EACvC,WAAW,CACZ,CAAA;YACH,CAAC;YAED,+CAA+C;YAC/C,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;QACjD,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,QAEA,CAAA;AAEpB,SAAS,WAAW,CAAC,CAAa;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAkBD,MAAM,CAAC,MAAM,WAAW,GAAuB,CAAC,OAAO,EAAE,EAAE;IACzD,OAAO,OAAc,CAAA;AACvB,CAAC,CAAA"}
|
|
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.
|
|
3
|
+
"version": "1.163.2",
|
|
4
4
|
"description": "Modern and scalable routing for Vue applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"tiny-invariant": "^1.3.3",
|
|
65
65
|
"tiny-warning": "^1.0.3",
|
|
66
66
|
"@tanstack/history": "1.161.4",
|
|
67
|
-
"@tanstack/router-core": "1.
|
|
67
|
+
"@tanstack/router-core": "1.163.2"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@testing-library/jest-dom": "^6.6.3",
|
package/src/link.tsx
CHANGED
|
@@ -15,7 +15,6 @@ import { useMatches } from './Matches'
|
|
|
15
15
|
import type {
|
|
16
16
|
AnyRouter,
|
|
17
17
|
Constrain,
|
|
18
|
-
LinkCurrentTargetElement,
|
|
19
18
|
LinkOptions,
|
|
20
19
|
RegisteredRouter,
|
|
21
20
|
RoutePaths,
|
|
@@ -28,6 +27,8 @@ import type {
|
|
|
28
27
|
|
|
29
28
|
type EventHandler<TEvent = Event> = (e: TEvent) => void
|
|
30
29
|
|
|
30
|
+
const timeoutMap = new WeakMap<EventTarget, ReturnType<typeof setTimeout>>()
|
|
31
|
+
|
|
31
32
|
type DataAttributes = {
|
|
32
33
|
[K in `data-${string}`]?: unknown
|
|
33
34
|
}
|
|
@@ -359,39 +360,39 @@ export function useLinkProps<
|
|
|
359
360
|
}
|
|
360
361
|
|
|
361
362
|
const enqueueIntentPreload = (e: MouseEvent | FocusEvent) => {
|
|
362
|
-
if (options.disabled ||
|
|
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
|
|
363
|
+
if (options.disabled || preload.value !== 'intent') return
|
|
367
364
|
|
|
368
|
-
if (
|
|
365
|
+
if (!preloadDelay.value) {
|
|
366
|
+
doPreload()
|
|
369
367
|
return
|
|
370
368
|
}
|
|
371
369
|
|
|
372
|
-
eventTarget
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
370
|
+
const eventTarget = e.currentTarget || e.target
|
|
371
|
+
|
|
372
|
+
if (!eventTarget || timeoutMap.has(eventTarget)) return
|
|
373
|
+
|
|
374
|
+
timeoutMap.set(
|
|
375
|
+
eventTarget,
|
|
376
|
+
setTimeout(() => {
|
|
377
|
+
timeoutMap.delete(eventTarget)
|
|
378
|
+
doPreload()
|
|
379
|
+
}, preloadDelay.value),
|
|
380
|
+
)
|
|
376
381
|
}
|
|
377
382
|
|
|
378
383
|
const handleTouchStart = (_: TouchEvent) => {
|
|
379
|
-
if (options.disabled) return
|
|
380
|
-
|
|
381
|
-
doPreload()
|
|
382
|
-
}
|
|
384
|
+
if (options.disabled || preload.value !== 'intent') return
|
|
385
|
+
doPreload()
|
|
383
386
|
}
|
|
384
387
|
|
|
385
388
|
const handleLeave = (e: MouseEvent | FocusEvent) => {
|
|
386
389
|
if (options.disabled) return
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
clearTimeout(eventTarget.preloadTimeout)
|
|
394
|
-
eventTarget.preloadTimeout = null
|
|
390
|
+
const eventTarget = e.currentTarget || e.target
|
|
391
|
+
|
|
392
|
+
if (eventTarget) {
|
|
393
|
+
const id = timeoutMap.get(eventTarget)
|
|
394
|
+
clearTimeout(id)
|
|
395
|
+
timeoutMap.delete(eventTarget)
|
|
395
396
|
}
|
|
396
397
|
}
|
|
397
398
|
|