@tanstack/solid-router 1.133.28 → 1.133.31
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/cjs/link.cjs +18 -10
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/esm/link.js +18 -10
- package/dist/esm/link.js.map +1 -1
- package/dist/source/link.jsx +14 -6
- package/dist/source/link.jsx.map +1 -1
- package/package.json +3 -3
- package/src/link.tsx +14 -6
package/dist/cjs/link.cjs
CHANGED
|
@@ -149,7 +149,7 @@ function useLinkProps(options) {
|
|
|
149
149
|
});
|
|
150
150
|
if (externalLink()) {
|
|
151
151
|
return Solid__namespace.mergeProps(propsSafeToSpread, {
|
|
152
|
-
ref,
|
|
152
|
+
ref: refs.mergeRefs(setRef, _options().ref),
|
|
153
153
|
href: externalLink()
|
|
154
154
|
}, Solid__namespace.splitProps(local, ["target", "disabled", "style", "class", "onClick", "onFocus", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver", "onTouchStart"])[0]);
|
|
155
155
|
}
|
|
@@ -183,7 +183,7 @@ function useLinkProps(options) {
|
|
|
183
183
|
const handleTouchStart = handleFocus;
|
|
184
184
|
const handleEnter = (e) => {
|
|
185
185
|
if (local.disabled) return;
|
|
186
|
-
const eventTarget = e.
|
|
186
|
+
const eventTarget = e.currentTarget || {};
|
|
187
187
|
if (preload()) {
|
|
188
188
|
if (eventTarget.preloadTimeout) {
|
|
189
189
|
return;
|
|
@@ -196,7 +196,7 @@ function useLinkProps(options) {
|
|
|
196
196
|
};
|
|
197
197
|
const handleLeave = (e) => {
|
|
198
198
|
if (local.disabled) return;
|
|
199
|
-
const eventTarget = e.
|
|
199
|
+
const eventTarget = e.currentTarget || {};
|
|
200
200
|
if (eventTarget.preloadTimeout) {
|
|
201
201
|
clearTimeout(eventTarget.preloadTimeout);
|
|
202
202
|
eventTarget.preloadTimeout = null;
|
|
@@ -240,12 +240,18 @@ function useLinkProps(options) {
|
|
|
240
240
|
onTouchStart: composeEventHandlers([local.onTouchStart, handleTouchStart]),
|
|
241
241
|
disabled: !!local.disabled,
|
|
242
242
|
target: local.target,
|
|
243
|
-
...
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
},
|
|
243
|
+
...(() => {
|
|
244
|
+
const s = resolvedStyle();
|
|
245
|
+
return Object.keys(s).length ? {
|
|
246
|
+
style: s
|
|
247
|
+
} : {};
|
|
248
|
+
})(),
|
|
249
|
+
...(() => {
|
|
250
|
+
const c = resolvedClassName();
|
|
251
|
+
return c ? {
|
|
252
|
+
class: c
|
|
253
|
+
} : {};
|
|
254
|
+
})(),
|
|
249
255
|
...local.disabled && {
|
|
250
256
|
role: "link",
|
|
251
257
|
"aria-disabled": true
|
|
@@ -275,7 +281,9 @@ const Link = (props) => {
|
|
|
275
281
|
get isActive() {
|
|
276
282
|
return linkProps["data-status"] === "active";
|
|
277
283
|
},
|
|
278
|
-
isTransitioning
|
|
284
|
+
get isTransitioning() {
|
|
285
|
+
return linkProps["data-transitioning"] === "transitioning";
|
|
286
|
+
}
|
|
279
287
|
});
|
|
280
288
|
}
|
|
281
289
|
return ch;
|
package/dist/cjs/link.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.cjs","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport type {\n AnyRouter,\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\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): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\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 ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'unsafeRelative',\n ])\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n const from = options.from\n\n const _options = () => {\n return {\n ...options,\n from,\n }\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(_options() as any)\n })\n\n const hrefOption = Solid.createMemo(() => {\n if (_options().disabled) {\n return undefined\n }\n let href\n const maskedLocation = next().maskedLocation\n if (maskedLocation) {\n href = maskedLocation.url\n } else {\n href = next().url\n }\n let external = false\n if (router.origin) {\n if (href.startsWith(router.origin)) {\n href = router.history.createHref(href.replace(router.origin, ''))\n } else {\n external = true\n }\n }\n return { href, external }\n })\n\n const externalLink = Solid.createMemo(() => {\n const _href = hrefOption()\n if (_href?.external) {\n return _href.href\n }\n try {\n new URL(_options().to as any)\n return _options().to\n } catch {}\n return undefined\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument || externalLink()) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (externalLink()) return false\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().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()?.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 (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(_options() 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, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (externalLink()) {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n href: externalLink(),\n },\n Solid.splitProps(local, [\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n // Check actual element's target attribute as fallback\n const elementTarget = (e.currentTarget as HTMLAnchorElement).target\n const effectiveTarget =\n local.target !== undefined ? local.target : elementTarget\n\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n router.navigate({\n ..._options(),\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n })\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: hrefOption()?.href,\n ref: mergeRefs(setRef, _options().ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(Object.keys(resolvedStyle).length && { style: resolvedStyle }),\n ...(resolvedClassName() && { class: resolvedClassName() }),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\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 Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\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 LinkComponentSolidProps<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 | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\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> = LinkComponentSolidProps<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) => Solid.JSX.Element\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 ): Solid.JSX.Element\n}\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...props} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props) => {\n const [local, rest] = Solid.splitProps(\n props as typeof props & { _asChild: any },\n ['_asChild', 'children'],\n )\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type'],\n )\n\n const children = Solid.createMemo(() => {\n const ch = local.children\n if (typeof ch === 'function') {\n return ch({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n isTransitioning: false,\n })\n }\n\n return ch satisfies Solid.JSX.Element\n })\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children()}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","currentSearch","useRouterState","select","s","location","searchStr","from","_options","next","createMemo","buildLocation","hrefOption","disabled","undefined","href","maskedLocation","url","external","origin","startsWith","history","createHref","replace","externalLink","_href","URL","to","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","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","createEffect","handleClick","e","elementTarget","currentTarget","target","effectiveTarget","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","mergeRefs","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","ch","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link.cjs","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport type {\n AnyRouter,\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\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): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\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 ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'unsafeRelative',\n ])\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n const from = options.from\n\n const _options = () => {\n return {\n ...options,\n from,\n }\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(_options() as any)\n })\n\n const hrefOption = Solid.createMemo(() => {\n if (_options().disabled) {\n return undefined\n }\n let href\n const maskedLocation = next().maskedLocation\n if (maskedLocation) {\n href = maskedLocation.url\n } else {\n href = next().url\n }\n let external = false\n if (router.origin) {\n if (href.startsWith(router.origin)) {\n href = router.history.createHref(href.replace(router.origin, ''))\n } else {\n external = true\n }\n }\n return { href, external }\n })\n\n const externalLink = Solid.createMemo(() => {\n const _href = hrefOption()\n if (_href?.external) {\n return _href.href\n }\n try {\n new URL(_options().to as any)\n return _options().to\n } catch {}\n return undefined\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument || externalLink()) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (externalLink()) return false\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().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()?.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 (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(_options() 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, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (externalLink()) {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref: mergeRefs(setRef, _options().ref),\n href: externalLink(),\n },\n Solid.splitProps(local, [\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n // Check actual element's target attribute as fallback\n const elementTarget = (e.currentTarget as HTMLAnchorElement).target\n const effectiveTarget =\n local.target !== undefined ? local.target : elementTarget\n\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n router.navigate({\n ..._options(),\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n })\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: hrefOption()?.href,\n ref: mergeRefs(setRef, _options().ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(() => {\n const s = resolvedStyle()\n return Object.keys(s).length ? { style: s } : {}\n })(),\n ...(() => {\n const c = resolvedClassName()\n return c ? { class: c } : {}\n })(),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\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 Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\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 LinkComponentSolidProps<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 | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\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> = LinkComponentSolidProps<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) => Solid.JSX.Element\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 ): Solid.JSX.Element\n}\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...props} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props) => {\n const [local, rest] = Solid.splitProps(\n props as typeof props & { _asChild: any },\n ['_asChild', 'children'],\n )\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type'],\n )\n\n const children = Solid.createMemo(() => {\n const ch = local.children\n if (typeof ch === 'function') {\n return ch({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n get isTransitioning() {\n return (linkProps as any)['data-transitioning'] === 'transitioning'\n },\n })\n }\n\n return ch satisfies Solid.JSX.Element\n })\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children()}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","currentSearch","useRouterState","select","s","location","searchStr","from","_options","next","createMemo","buildLocation","hrefOption","disabled","undefined","href","maskedLocation","url","external","origin","startsWith","history","createHref","replace","externalLink","_href","URL","to","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","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","createEffect","mergeRefs","handleClick","e","elementTarget","currentTarget","target","effectiveTarget","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","c","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","ch","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
|
package/dist/esm/link.js
CHANGED
|
@@ -130,7 +130,7 @@ function useLinkProps(options) {
|
|
|
130
130
|
});
|
|
131
131
|
if (externalLink()) {
|
|
132
132
|
return Solid.mergeProps(propsSafeToSpread, {
|
|
133
|
-
ref,
|
|
133
|
+
ref: mergeRefs(setRef, _options().ref),
|
|
134
134
|
href: externalLink()
|
|
135
135
|
}, Solid.splitProps(local, ["target", "disabled", "style", "class", "onClick", "onFocus", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver", "onTouchStart"])[0]);
|
|
136
136
|
}
|
|
@@ -164,7 +164,7 @@ function useLinkProps(options) {
|
|
|
164
164
|
const handleTouchStart = handleFocus;
|
|
165
165
|
const handleEnter = (e) => {
|
|
166
166
|
if (local.disabled) return;
|
|
167
|
-
const eventTarget = e.
|
|
167
|
+
const eventTarget = e.currentTarget || {};
|
|
168
168
|
if (preload()) {
|
|
169
169
|
if (eventTarget.preloadTimeout) {
|
|
170
170
|
return;
|
|
@@ -177,7 +177,7 @@ function useLinkProps(options) {
|
|
|
177
177
|
};
|
|
178
178
|
const handleLeave = (e) => {
|
|
179
179
|
if (local.disabled) return;
|
|
180
|
-
const eventTarget = e.
|
|
180
|
+
const eventTarget = e.currentTarget || {};
|
|
181
181
|
if (eventTarget.preloadTimeout) {
|
|
182
182
|
clearTimeout(eventTarget.preloadTimeout);
|
|
183
183
|
eventTarget.preloadTimeout = null;
|
|
@@ -221,12 +221,18 @@ function useLinkProps(options) {
|
|
|
221
221
|
onTouchStart: composeEventHandlers([local.onTouchStart, handleTouchStart]),
|
|
222
222
|
disabled: !!local.disabled,
|
|
223
223
|
target: local.target,
|
|
224
|
-
...
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
},
|
|
224
|
+
...(() => {
|
|
225
|
+
const s = resolvedStyle();
|
|
226
|
+
return Object.keys(s).length ? {
|
|
227
|
+
style: s
|
|
228
|
+
} : {};
|
|
229
|
+
})(),
|
|
230
|
+
...(() => {
|
|
231
|
+
const c = resolvedClassName();
|
|
232
|
+
return c ? {
|
|
233
|
+
class: c
|
|
234
|
+
} : {};
|
|
235
|
+
})(),
|
|
230
236
|
...local.disabled && {
|
|
231
237
|
role: "link",
|
|
232
238
|
"aria-disabled": true
|
|
@@ -256,7 +262,9 @@ const Link = (props) => {
|
|
|
256
262
|
get isActive() {
|
|
257
263
|
return linkProps["data-status"] === "active";
|
|
258
264
|
},
|
|
259
|
-
isTransitioning
|
|
265
|
+
get isTransitioning() {
|
|
266
|
+
return linkProps["data-transitioning"] === "transitioning";
|
|
267
|
+
}
|
|
260
268
|
});
|
|
261
269
|
}
|
|
262
270
|
return ch;
|
package/dist/esm/link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport type {\n AnyRouter,\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\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): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\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 ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'unsafeRelative',\n ])\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n const from = options.from\n\n const _options = () => {\n return {\n ...options,\n from,\n }\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(_options() as any)\n })\n\n const hrefOption = Solid.createMemo(() => {\n if (_options().disabled) {\n return undefined\n }\n let href\n const maskedLocation = next().maskedLocation\n if (maskedLocation) {\n href = maskedLocation.url\n } else {\n href = next().url\n }\n let external = false\n if (router.origin) {\n if (href.startsWith(router.origin)) {\n href = router.history.createHref(href.replace(router.origin, ''))\n } else {\n external = true\n }\n }\n return { href, external }\n })\n\n const externalLink = Solid.createMemo(() => {\n const _href = hrefOption()\n if (_href?.external) {\n return _href.href\n }\n try {\n new URL(_options().to as any)\n return _options().to\n } catch {}\n return undefined\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument || externalLink()) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (externalLink()) return false\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().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()?.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 (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(_options() 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, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (externalLink()) {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n href: externalLink(),\n },\n Solid.splitProps(local, [\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n // Check actual element's target attribute as fallback\n const elementTarget = (e.currentTarget as HTMLAnchorElement).target\n const effectiveTarget =\n local.target !== undefined ? local.target : elementTarget\n\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n router.navigate({\n ..._options(),\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n })\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: hrefOption()?.href,\n ref: mergeRefs(setRef, _options().ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(Object.keys(resolvedStyle).length && { style: resolvedStyle }),\n ...(resolvedClassName() && { class: resolvedClassName() }),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\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 Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\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 LinkComponentSolidProps<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 | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\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> = LinkComponentSolidProps<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) => Solid.JSX.Element\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 ): Solid.JSX.Element\n}\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...props} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props) => {\n const [local, rest] = Solid.splitProps(\n props as typeof props & { _asChild: any },\n ['_asChild', 'children'],\n )\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type'],\n )\n\n const children = Solid.createMemo(() => {\n const ch = local.children\n if (typeof ch === 'function') {\n return ch({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n isTransitioning: false,\n })\n }\n\n return ch satisfies Solid.JSX.Element\n })\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children()}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","currentSearch","useRouterState","select","s","location","searchStr","from","_options","next","createMemo","buildLocation","hrefOption","disabled","undefined","href","maskedLocation","url","external","origin","startsWith","history","createHref","replace","externalLink","_href","URL","to","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","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","createEffect","handleClick","e","elementTarget","currentTarget","target","effectiveTarget","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","mergeRefs","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","ch","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":";;;;;;;AA8BO,SAASA,aAOdC,SAC2B;AAC3B,QAAMC,SAASC,UAAAA;AACf,QAAM,CAACC,iBAAiBC,kBAAkB,IAAIC,MAAMC,aAAa,KAAK;AACtE,MAAIC,mBAAmB;AAEvB,QAAM,CAACC,OAAOC,IAAI,IAAIJ,MAAMK,WAC1BL,MAAMM,WACJ;AAAA,IACEC,aAAaA,OAAO;AAAA,MAAEC,OAAO;AAAA,IAAA;AAAA,IAC7BC,eAAeA,OAAO,CAAA;AAAA,EAAC,GAEzBd,OACF,GACA,CACE,eACA,iBACA,iBACA,MACA,WACA,gBACA,sBACA,WACA,mBACA,eACA,kBACA,UACA,YACA,SACA,SACA,WACA,WACA,gBACA,gBACA,eACA,cACA,gBACA,eAAe,CAEnB;AA8BA,QAAM,CAACe,GAAGC,iBAAiB,IAAIX,MAAMK,WAAWD,MAAM,CACpD,UACA,UACA,QACA,SACA,QACA,kBACA,gBAAgB,CACjB;AAED,QAAMQ,gBAAgBC,eAAe;AAAA,IACnCC,QAASC,CAAAA,MAAMA,EAAEC,SAASC;AAAAA,EAAAA,CAC3B;AAED,QAAMC,OAAOvB,QAAQuB;AAErB,QAAMC,WAAWA,MAAM;AACrB,WAAO;AAAA,MACL,GAAGxB;AAAAA,MACHuB;AAAAA,IAAAA;AAAAA,EAEJ;AAEA,QAAME,OAAOpB,MAAMqB,WAAW,MAAM;AAClCT,kBAAAA;AACA,WAAOhB,OAAO0B,cAAcH,UAAiB;AAAA,EAC/C,CAAC;AAED,QAAMI,aAAavB,MAAMqB,WAAW,MAAM;AACxC,QAAIF,SAAAA,EAAWK,UAAU;AACvB,aAAOC;AAAAA,IACT;AACA,QAAIC;AACJ,UAAMC,iBAAiBP,OAAOO;AAC9B,QAAIA,gBAAgB;AAClBD,aAAOC,eAAeC;AAAAA,IACxB,OAAO;AACLF,aAAON,OAAOQ;AAAAA,IAChB;AACA,QAAIC,WAAW;AACf,QAAIjC,OAAOkC,QAAQ;AACjB,UAAIJ,KAAKK,WAAWnC,OAAOkC,MAAM,GAAG;AAClCJ,eAAO9B,OAAOoC,QAAQC,WAAWP,KAAKQ,QAAQtC,OAAOkC,QAAQ,EAAE,CAAC;AAAA,MAClE,OAAO;AACLD,mBAAW;AAAA,MACb;AAAA,IACF;AACA,WAAO;AAAA,MAAEH;AAAAA,MAAMG;AAAAA,IAAAA;AAAAA,EACjB,CAAC;AAED,QAAMM,eAAenC,MAAMqB,WAAW,MAAM;AAC1C,UAAMe,QAAQb,WAAAA;AACd,QAAIa,OAAOP,UAAU;AACnB,aAAOO,MAAMV;AAAAA,IACf;AACA,QAAI;AACF,UAAIW,IAAIlB,SAAAA,EAAWmB,EAAS;AAC5B,aAAOnB,WAAWmB;AAAAA,IACpB,QAAQ;AAAA,IAAC;AACT,WAAOb;AAAAA,EACT,CAAC;AAED,QAAMc,UAAUvC,MAAMqB,WAAW,MAAM;AACrC,QAAIF,SAAAA,EAAWqB,kBAAkBL,gBAAgB;AAC/C,aAAO;AAAA,IACT;AACA,WAAOhC,MAAMoC,WAAW3C,OAAOD,QAAQ8C;AAAAA,EACzC,CAAC;AACD,QAAMC,eAAeA,MACnBvC,MAAMuC,gBAAgB9C,OAAOD,QAAQgD,uBAAuB;AAE9D,QAAMC,WAAW/B,eAAe;AAAA,IAC9BC,QAASC,CAAAA,MAAM;AACb,UAAIoB,aAAAA,EAAgB,QAAO;AAC3B,UAAIhC,MAAM0C,eAAeC,OAAO;AAC9B,cAAMC,YAAYC,cAChBjC,EAAEC,SAASiC,UACX7B,OAAO6B,UACPrD,OAAOsD,QACT;AACA,YAAI,CAACH,WAAW;AACd,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,cAAMI,mBAAmBC,oBACvBrC,EAAEC,SAASiC,UACXrD,OAAOsD,QACT,EAAEG,MAAM,GAAG;AACX,cAAMC,gBAAgBF,oBACpBhC,QAAQ6B,UACRrD,OAAOsD,QACT,GAAGG,MAAM,GAAG;AAEZ,cAAME,mBAAmBD,eAAeE,MACtC,CAACC,GAAGC,MAAMD,MAAMN,iBAAiBO,CAAC,CACpC;AACA,YAAI,CAACH,kBAAkB;AACrB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAIpD,MAAM0C,eAAec,iBAAiB,MAAM;AAC9C,cAAMC,aAAaC,UAAU9C,EAAEC,SAAS8C,QAAQ1C,KAAAA,EAAO0C,QAAQ;AAAA,UAC7DC,SAAS,CAAC5D,MAAM0C,eAAeC;AAAAA,UAC/BkB,iBAAiB,CAAC7D,MAAM0C,eAAeoB;AAAAA,QAAAA,CACxC;AACD,YAAI,CAACL,YAAY;AACf,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAIzD,MAAM0C,eAAeqB,aAAa;AACpC,eAAOnD,EAAEC,SAASmD,SAAS/C,KAAAA,EAAO+C;AAAAA,MACpC;AACA,aAAO;AAAA,IACT;AAAA,EAAA,CACD;AAED,QAAMC,YAAYA,MAChBxE,OAAOyE,aAAalD,UAAiB,EAAEmD,MAAM,CAACC,QAAa;AACzDC,YAAQC,KAAKF,GAAG;AAChBC,YAAQC,KAAKC,cAAc;AAAA,EAC7B,CAAC;AAEH,QAAMC,4BAA4BA,CAChCC,UACG;AACH,QAAIA,OAAOC,gBAAgB;AACzBT,gBAAAA;AAAAA,IACF;AAAA,EACF;AAEA,QAAM,CAACU,KAAKC,MAAM,IAAI/E,MAAMC,aAA6B,IAAI;AAE7D+E,0BACEF,KACAH,2BACA;AAAA,IAAEM,YAAY;AAAA,EAAA,GACd;AAAA,IAAEzD,UAAU,CAAC,CAACrB,MAAMqB,YAAY,EAAEe,cAAc;AAAA,EAAA,CAClD;AAEAvC,QAAMkF,aAAa,MAAM;AACvB,QAAIhF,kBAAkB;AACpB;AAAA,IACF;AACA,QAAI,CAACC,MAAMqB,YAAYe,QAAAA,MAAc,UAAU;AAC7C6B,gBAAAA;AACAlE,yBAAmB;AAAA,IACrB;AAAA,EACF,CAAC;AAED,MAAIiC,gBAAgB;AAClB,WAAOnC,MAAMM,WACXK,mBACA;AAAA,MACEmE;AAAAA,MACApD,MAAMS,aAAAA;AAAAA,IAAa,GAErBnC,MAAMK,WAAWF,OAAO,CACtB,UACA,YACA,SACA,SACA,WACA,WACA,gBACA,gBACA,cACA,eACA,cAAc,CACf,EAAE,CAAC,CACN;AAAA,EACF;AAGA,QAAMgF,cAAcA,CAACC,MAAkB;AAErC,UAAMC,gBAAiBD,EAAEE,cAAoCC;AAC7D,UAAMC,kBACJrF,MAAMoF,WAAW9D,SAAYtB,MAAMoF,SAASF;AAE9C,QACE,CAAClF,MAAMqB,YACP,CAACiE,YAAYL,CAAC,KACd,CAACA,EAAEM,qBACF,CAACF,mBAAmBA,oBAAoB,YACzCJ,EAAEO,WAAW,GACb;AACAP,QAAEQ,eAAAA;AAEF7F,yBAAmB,IAAI;AAEvB,YAAM8F,QAAQjG,OAAOkG,UAAU,cAAc,MAAM;AACjDD,cAAAA;AACA9F,2BAAmB,KAAK;AAAA,MAC1B,CAAC;AAIDH,aAAOmG,SAAS;AAAA,QACd,GAAG5E,SAAAA;AAAAA,QACHe,SAAS/B,MAAM+B;AAAAA,QACf8D,aAAa7F,MAAM6F;AAAAA,QACnBC,oBAAoB9F,MAAM8F;AAAAA,QAC1BC,iBAAiB/F,MAAM+F;AAAAA,QACvBC,gBAAgBhG,MAAMgG;AAAAA,QACtBC,eAAejG,MAAMiG;AAAAA,MAAAA,CACtB;AAAA,IACH;AAAA,EACF;AAGA,QAAMC,cAAcA,CAAC3F,OAAkB;AACrC,QAAIP,MAAMqB,SAAU;AACpB,QAAIe,WAAW;AACb6B,gBAAAA;AAAAA,IACF;AAAA,EACF;AAEA,QAAMkC,mBAAmBD;AAEzB,QAAME,cAAcA,CAACnB,MAAkB;AACrC,QAAIjF,MAAMqB,SAAU;AACpB,UAAMgF,cAAepB,EAAEG,UAAU,CAAA;AAEjC,QAAIhD,WAAW;AACb,UAAIiE,YAAYC,gBAAgB;AAC9B;AAAA,MACF;AAEAD,kBAAYC,iBAAiBC,WAAW,MAAM;AAC5CF,oBAAYC,iBAAiB;AAC7BrC,kBAAAA;AAAAA,MACF,GAAG1B,cAAc;AAAA,IACnB;AAAA,EACF;AAEA,QAAMiE,cAAcA,CAACvB,MAAkB;AACrC,QAAIjF,MAAMqB,SAAU;AACpB,UAAMgF,cAAepB,EAAEG,UAAU,CAAA;AAEjC,QAAIiB,YAAYC,gBAAgB;AAC9BG,mBAAaJ,YAAYC,cAAc;AACvCD,kBAAYC,iBAAiB;AAAA,IAC/B;AAAA,EACF;AAGA,WAASI,YACPC,OACAC,SACA;AACA,QAAIA,SAAS;AACX,UAAI,OAAOA,YAAY,YAAY;AACjCA,gBAAQD,KAAK;AAAA,MACf,OAAO;AACLC,gBAAQ,CAAC,EAAEA,QAAQ,CAAC,GAAGD,KAAK;AAAA,MAC9B;AAAA,IACF;AAEA,WAAOA,MAAMpB;AAAAA,EACf;AAEA,WAASsB,qBACPC,UACA;AACA,WAAO,CAACH,UAAe;AACrB,iBAAWC,WAAWE,UAAU;AAC9BJ,oBAAYC,OAAOC,OAAO;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AAGA,QAAMG,sBAEFA,MACFtE,SAAAA,IAAcuE,iBAAiBhH,MAAMI,aAAoB,CAAA,CAAE,KAAK,CAAA,IAAM,CAAA;AAGxE,QAAM6G,wBAGoCA,MACxCxE,aAAa,CAAA,IAAKuE,iBAAiBhH,MAAMM,eAAe,EAAE;AAE5D,QAAM4G,oBAAoBA,MACxB,CAAClH,MAAMK,OAAO0G,sBAAsB1G,OAAO4G,sBAAAA,EAAwB5G,KAAK,EACrE8G,OAAOC,OAAO,EACdC,KAAK,GAAG;AAEb,QAAMC,gBAAgBA,OAAO;AAAA,IAC3B,GAAGtH,MAAMuH;AAAAA,IACT,GAAGR,sBAAsBQ;AAAAA,IACzB,GAAGN,wBAAwBM;AAAAA,EAAAA;AAG7B,SAAO1H,MAAMM,WACXK,mBACAuG,qBACAE,uBACA,MAAM;AACJ,WAAO;AAAA,MACL1F,MAAMH,cAAcG;AAAAA,MACpBoD,KAAK6C,UAAU5C,QAAQ5D,SAAAA,EAAW2D,GAAG;AAAA,MACrC8C,SAASZ,qBAAqB,CAAC7G,MAAMyH,SAASzC,WAAW,CAAC;AAAA,MAC1D0C,SAASb,qBAAqB,CAAC7G,MAAM0H,SAASxB,WAAW,CAAC;AAAA,MAC1DyB,cAAcd,qBAAqB,CAAC7G,MAAM2H,cAAcvB,WAAW,CAAC;AAAA,MACpEwB,aAAaf,qBAAqB,CAAC7G,MAAM4H,aAAaxB,WAAW,CAAC;AAAA,MAClEyB,cAAchB,qBAAqB,CAAC7G,MAAM6H,cAAcrB,WAAW,CAAC;AAAA,MACpEsB,YAAYjB,qBAAqB,CAAC7G,MAAM8H,YAAYtB,WAAW,CAAC;AAAA,MAChEuB,cAAclB,qBAAqB,CACjC7G,MAAM+H,cACN5B,gBAAgB,CACjB;AAAA,MACD9E,UAAU,CAAC,CAACrB,MAAMqB;AAAAA,MAClB+D,QAAQpF,MAAMoF;AAAAA,MACd,GAAI4C,OAAOC,KAAKX,aAAa,EAAEY,UAAU;AAAA,QAAEX,OAAOD;AAAAA,MAAAA;AAAAA,MAClD,GAAIJ,uBAAuB;AAAA,QAAE7G,OAAO6G,kBAAAA;AAAAA,MAAkB;AAAA,MACtD,GAAIlH,MAAMqB,YAAY;AAAA,QACpB8G,MAAM;AAAA,QACN,iBAAiB;AAAA,MAAA;AAAA,MAEnB,GAAI1F,cAAc;AAAA,QAAE,eAAe;AAAA,QAAU,gBAAgB;AAAA,MAAA;AAAA,MAC7D,GAAI9C,qBAAqB;AAAA,QAAE,sBAAsB;AAAA,MAAA;AAAA,IAAgB;AAAA,EAErE,CACF;AACF;AAoHO,SAASyI,WACdC,MACsB;AACtB,SAAQC,CAAAA,UAAKC,gBAAMC,MAAIC,WAAKH,OAAK;AAAA,IAAEI,UAAUL;AAAAA,EAAAA,CAAI,CAAA;AACnD;AAEO,MAAMG,OAA4BF,CAAAA,UAAU;AACjD,QAAM,CAACtI,OAAOC,IAAI,IAAIJ,MAAMK,WAC1BoI,OACA,CAAC,YAAY,UAAU,CACzB;AAEA,QAAM,CAAC/H,GAAGoI,SAAS,IAAI9I,MAAMK,WAC3BX,aAAaU,IAAsB,GACnC,CAAC,MAAM,CACT;AAEA,QAAM2I,WAAW/I,MAAMqB,WAAW,MAAM;AACtC,UAAM2H,KAAK7I,MAAM4I;AACjB,QAAI,OAAOC,OAAO,YAAY;AAC5B,aAAOA,GAAG;AAAA,QACR,IAAIpG,WAAW;AACb,iBAAQkG,UAAkB,aAAa,MAAM;AAAA,QAC/C;AAAA,QACAhJ,iBAAiB;AAAA,MAAA,CAClB;AAAA,IACH;AAEA,WAAOkJ;AAAAA,EACT,CAAC;AAED,SAAAN,gBACGO,SAAOL,WAAA;AAAA,IAAA,IAACM,YAAS;AAAA,aAAE/I,MAAM0I,WAAW1I,MAAM0I,WAAW;AAAA,IAAG;AAAA,EAAA,GAAMC,WAAS;AAAA,IAAA,IAAAC,WAAA;AAAA,aACrEA,SAAAA;AAAAA,IAAU;AAAA,EAAA,CAAA,CAAA;AAGjB;AAEA,SAAStD,YAAYL,GAAe;AAClC,SAAO,CAAC,EAAEA,EAAE+D,WAAW/D,EAAEgE,UAAUhE,EAAEiE,WAAWjE,EAAEkE;AACpD;AAkBO,MAAMC,cAAmC5J,CAAAA,YAAY;AAC1D,SAAOA;AACT;"}
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport type {\n AnyRouter,\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\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): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\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 ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'unsafeRelative',\n ])\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n const from = options.from\n\n const _options = () => {\n return {\n ...options,\n from,\n }\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(_options() as any)\n })\n\n const hrefOption = Solid.createMemo(() => {\n if (_options().disabled) {\n return undefined\n }\n let href\n const maskedLocation = next().maskedLocation\n if (maskedLocation) {\n href = maskedLocation.url\n } else {\n href = next().url\n }\n let external = false\n if (router.origin) {\n if (href.startsWith(router.origin)) {\n href = router.history.createHref(href.replace(router.origin, ''))\n } else {\n external = true\n }\n }\n return { href, external }\n })\n\n const externalLink = Solid.createMemo(() => {\n const _href = hrefOption()\n if (_href?.external) {\n return _href.href\n }\n try {\n new URL(_options().to as any)\n return _options().to\n } catch {}\n return undefined\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument || externalLink()) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (externalLink()) return false\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().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()?.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 (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(_options() 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, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (externalLink()) {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref: mergeRefs(setRef, _options().ref),\n href: externalLink(),\n },\n Solid.splitProps(local, [\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n // Check actual element's target attribute as fallback\n const elementTarget = (e.currentTarget as HTMLAnchorElement).target\n const effectiveTarget =\n local.target !== undefined ? local.target : elementTarget\n\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n router.navigate({\n ..._options(),\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n })\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: hrefOption()?.href,\n ref: mergeRefs(setRef, _options().ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(() => {\n const s = resolvedStyle()\n return Object.keys(s).length ? { style: s } : {}\n })(),\n ...(() => {\n const c = resolvedClassName()\n return c ? { class: c } : {}\n })(),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\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 Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\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 LinkComponentSolidProps<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 | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\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> = LinkComponentSolidProps<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) => Solid.JSX.Element\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 ): Solid.JSX.Element\n}\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...props} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props) => {\n const [local, rest] = Solid.splitProps(\n props as typeof props & { _asChild: any },\n ['_asChild', 'children'],\n )\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type'],\n )\n\n const children = Solid.createMemo(() => {\n const ch = local.children\n if (typeof ch === 'function') {\n return ch({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n get isTransitioning() {\n return (linkProps as any)['data-transitioning'] === 'transitioning'\n },\n })\n }\n\n return ch satisfies Solid.JSX.Element\n })\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children()}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","currentSearch","useRouterState","select","s","location","searchStr","from","_options","next","createMemo","buildLocation","hrefOption","disabled","undefined","href","maskedLocation","url","external","origin","startsWith","history","createHref","replace","externalLink","_href","URL","to","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","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","createEffect","mergeRefs","handleClick","e","elementTarget","currentTarget","target","effectiveTarget","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","c","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","ch","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
|
package/dist/source/link.jsx
CHANGED
|
@@ -184,7 +184,7 @@ export function useLinkProps(options) {
|
|
|
184
184
|
});
|
|
185
185
|
if (externalLink()) {
|
|
186
186
|
return Solid.mergeProps(propsSafeToSpread, {
|
|
187
|
-
ref,
|
|
187
|
+
ref: mergeRefs(setRef, _options().ref),
|
|
188
188
|
href: externalLink(),
|
|
189
189
|
}, Solid.splitProps(local, [
|
|
190
190
|
'target',
|
|
@@ -241,7 +241,7 @@ export function useLinkProps(options) {
|
|
|
241
241
|
const handleEnter = (e) => {
|
|
242
242
|
if (local.disabled)
|
|
243
243
|
return;
|
|
244
|
-
const eventTarget = (e.
|
|
244
|
+
const eventTarget = (e.currentTarget || {});
|
|
245
245
|
if (preload()) {
|
|
246
246
|
if (eventTarget.preloadTimeout) {
|
|
247
247
|
return;
|
|
@@ -255,7 +255,7 @@ export function useLinkProps(options) {
|
|
|
255
255
|
const handleLeave = (e) => {
|
|
256
256
|
if (local.disabled)
|
|
257
257
|
return;
|
|
258
|
-
const eventTarget = (e.
|
|
258
|
+
const eventTarget = (e.currentTarget || {});
|
|
259
259
|
if (eventTarget.preloadTimeout) {
|
|
260
260
|
clearTimeout(eventTarget.preloadTimeout);
|
|
261
261
|
eventTarget.preloadTimeout = null;
|
|
@@ -308,8 +308,14 @@ export function useLinkProps(options) {
|
|
|
308
308
|
]),
|
|
309
309
|
disabled: !!local.disabled,
|
|
310
310
|
target: local.target,
|
|
311
|
-
...(
|
|
312
|
-
|
|
311
|
+
...(() => {
|
|
312
|
+
const s = resolvedStyle();
|
|
313
|
+
return Object.keys(s).length ? { style: s } : {};
|
|
314
|
+
})(),
|
|
315
|
+
...(() => {
|
|
316
|
+
const c = resolvedClassName();
|
|
317
|
+
return c ? { class: c } : {};
|
|
318
|
+
})(),
|
|
313
319
|
...(local.disabled && {
|
|
314
320
|
role: 'link',
|
|
315
321
|
'aria-disabled': true,
|
|
@@ -332,7 +338,9 @@ export const Link = (props) => {
|
|
|
332
338
|
get isActive() {
|
|
333
339
|
return linkProps['data-status'] === 'active';
|
|
334
340
|
},
|
|
335
|
-
isTransitioning
|
|
341
|
+
get isTransitioning() {
|
|
342
|
+
return linkProps['data-transitioning'] === 'transitioning';
|
|
343
|
+
},
|
|
336
344
|
});
|
|
337
345
|
}
|
|
338
346
|
return ch;
|
package/dist/source/link.jsx.map
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EACL,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAejD,MAAM,UAAU,YAAY,CAO1B,OAAqE;IAErE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACvE,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CACpC,KAAK,CAAC,UAAU,CACd;QACE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACxC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1B,EACD,OAAO,CACR,EACD;QACE,aAAa;QACb,eAAe;QACf,eAAe;QACf,IAAI;QACJ,SAAS;QACT,cAAc;QACd,oBAAoB;QACpB,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,gBAAgB;QAChB,QAAQ;QACR,UAAU;QACV,OAAO;QACP,OAAO;QACP,SAAS;QACT,SAAS;QACT,cAAc;QACd,cAAc;QACd,aAAa;QACb,YAAY;QACZ,cAAc;QACd,eAAe;KAChB,CACF,CAAA;IAED,UAAU;IACV,oBAAoB;IACpB,+CAA+C;IAC/C,gCAAgC;IAChC,mBAAmB;IACnB,QAAQ;IACR,0BAA0B;IAC1B,oCAAoC;IACpC,wBAAwB;IACxB,aAAa;IACb,qBAAqB;IACrB,iBAAiB;IACjB,oBAAoB;IACpB,qBAAqB;IACrB,cAAc;IACd,YAAY;IACZ,cAAc;IACd,WAAW;IACX,WAAW;IACX,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,YAAY;IACZ,cAAc;IAEd,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;QACpD,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,OAAO;QACP,MAAM;QACN,gBAAgB;QAChB,gBAAgB;KACjB,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,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAEzB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO;YACL,GAAG,OAAO;YACV,IAAI;SACL,CAAA;IACH,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACjC,aAAa,EAAE,CAAA;QACf,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAS,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACvC,IAAI,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,IAAI,CAAA;QACR,MAAM,cAAc,GAAG,IAAI,EAAE,CAAC,cAAc,CAAA;QAC5C,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,GAAG,cAAc,CAAC,GAAG,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,CAAA;QACnB,CAAC;QACD,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;YACnE,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;QAC1B,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,IAAI,CAAA;QACnB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAS,CAAC,CAAA;YAC7B,OAAO,QAAQ,EAAE,CAAC,EAAE,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACpC,IAAI,QAAQ,EAAE,CAAC,cAAc,IAAI,YAAY,EAAE,EAAE,CAAC;YAChD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAA;IACvD,CAAC,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAA;IAE/D,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,YAAY,EAAE;gBAAE,OAAO,KAAK,CAAA;YAChC,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,aAAa,CAC7B,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,IAAI,EAAE,CAAC,QAAQ,EACf,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,EAAE,EAAE,QAAQ,EAChB,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,KAAK,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE;oBAC7D,OAAO,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK;oBACpC,eAAe,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB;iBACzD,CAAC,CAAA;gBACF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;gBACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YACxC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QACxD,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,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAiB,IAAI,CAAC,CAAA;IAE9D,uBAAuB,CACrB,GAAG,EACH,yBAAyB,EACzB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,EAAE,CAC9D,CAAA;IAED,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;QACtB,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC9C,SAAS,EAAE,CAAA;YACX,gBAAgB,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB;YACE,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;YACtC,IAAI,EAAE,YAAY,EAAE;SACrB,EACD,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YACtB,QAAQ;YACR,UAAU;YACV,OAAO;YACP,OAAO;YACP,SAAS;YACT,SAAS;YACT,cAAc;YACd,cAAc;YACd,YAAY;YACZ,aAAa;YACb,cAAc;SACf,CAAC,CAAC,CAAC,CAAC,CACC,CAAA;IACV,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,sDAAsD;QACtD,MAAM,aAAa,GAAI,CAAC,CAAC,aAAmC,CAAC,MAAM,CAAA;QACnE,MAAM,eAAe,GACnB,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAA;QAE3D,IACE,CAAC,KAAK,CAAC,QAAQ;YACf,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,CAAC,CAAC,cAAc,EAAE,CAAA;YAElB,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAExB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE;gBAChD,KAAK,EAAE,CAAA;gBACP,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,yBAAyB;YACzB,iHAAiH;YACjH,MAAM,CAAC,QAAQ,CAAC;gBACd,GAAG,QAAQ,EAAE;gBACb,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAA;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,IAAI,OAAO,EAAE,EAAE,CAAC;YACd,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAA;IAEpC,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAA6B,CAAA;QAEvE,IAAI,OAAO,EAAE,EAAE,CAAC;YACd,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,OAAM;YACR,CAAC;YAED,WAAW,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3C,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;gBACjC,SAAS,EAAE,CAAA;YACb,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAA6B,CAAA;QAEvE,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,mDAAmD;IACnD,SAAS,WAAW,CAClB,KAAqD,EACrD,OAA2D;QAE3D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,gBAAgB,CAAA;IAC/B,CAAC;IAED,SAAS,oBAAoB,CAC3B,QAAgE;QAEhE,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,mBAAmB,GAErB,GAAG,EAAE,CACP,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE1E,yBAAyB;IACzB,MAAM,qBAAqB,GAGe,GAAG,EAAE,CAC7C,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAE7D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAC7B,CAAC,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC,KAAK,CAAC;SACtE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;IAEd,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC;QAC3B,GAAG,KAAK,CAAC,KAAK;QACd,GAAG,mBAAmB,EAAE,CAAC,KAAK;QAC9B,GAAG,qBAAqB,EAAE,CAAC,KAAK;KACjC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,GAAG,EAAE;QACH,OAAO;YACL,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI;YACxB,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;YACtC,OAAO,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,OAAO,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,YAAY,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACrE,WAAW,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACnE,YAAY,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACrE,UAAU,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACjE,YAAY,EAAE,oBAAoB,CAAC;gBACjC,KAAK,CAAC,YAAY;gBAClB,gBAAgB;aACjB,CAAC;YACF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,CAAC,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,aAAa,EAAE,CAAA;gBACzB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAClD,CAAC,CAAC,EAAE;YACJ,GAAG,CAAC,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,iBAAiB,EAAE,CAAA;gBAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC9B,CAAC,CAAC,EAAE;YACJ,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI;gBACpB,IAAI,EAAE,MAAM;gBACZ,eAAe,EAAE,IAAI;aACtB,CAAC;YACF,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YACtE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAC;SACpE,CAAA;IACH,CAAC,CACK,CAAA;AACV,CAAC;AAoHD,MAAM,UAAU,UAAU,CACxB,IAA0E;IAE1E,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAG,CAAA;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAuB,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CACpC,KAAyC,EACzC,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAA;IAED,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CACrC,YAAY,CAAC,IAAsB,CAAC,EACpC,CAAC,MAAM,CAAC,CACT,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACrC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA;QACzB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;gBACR,IAAI,QAAQ;oBACV,OAAQ,SAAiB,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAA;gBACvD,CAAC;gBACD,IAAI,eAAe;oBACjB,OAAQ,SAAiB,CAAC,oBAAoB,CAAC,KAAK,eAAe,CAAA;gBACrE,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,EAA8B,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CACvE;MAAA,CAAC,QAAQ,EAAE,CACb;IAAA,EAAE,OAAO,CAAC,CACX,CAAA;AACH,CAAC,CAAA;AAED,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/solid-router",
|
|
3
|
-
"version": "1.133.
|
|
3
|
+
"version": "1.133.31",
|
|
4
4
|
"description": "Modern and scalable routing for Solid applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"isbot": "^5.1.22",
|
|
89
89
|
"tiny-invariant": "^1.3.3",
|
|
90
90
|
"tiny-warning": "^1.0.3",
|
|
91
|
-
"@tanstack/
|
|
92
|
-
"@tanstack/
|
|
91
|
+
"@tanstack/history": "1.133.28",
|
|
92
|
+
"@tanstack/router-core": "1.133.28"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@solidjs/testing-library": "^0.8.10",
|
package/src/link.tsx
CHANGED
|
@@ -259,7 +259,7 @@ export function useLinkProps<
|
|
|
259
259
|
return Solid.mergeProps(
|
|
260
260
|
propsSafeToSpread,
|
|
261
261
|
{
|
|
262
|
-
ref,
|
|
262
|
+
ref: mergeRefs(setRef, _options().ref),
|
|
263
263
|
href: externalLink(),
|
|
264
264
|
},
|
|
265
265
|
Solid.splitProps(local, [
|
|
@@ -327,7 +327,7 @@ export function useLinkProps<
|
|
|
327
327
|
|
|
328
328
|
const handleEnter = (e: MouseEvent) => {
|
|
329
329
|
if (local.disabled) return
|
|
330
|
-
const eventTarget = (e.
|
|
330
|
+
const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement
|
|
331
331
|
|
|
332
332
|
if (preload()) {
|
|
333
333
|
if (eventTarget.preloadTimeout) {
|
|
@@ -343,7 +343,7 @@ export function useLinkProps<
|
|
|
343
343
|
|
|
344
344
|
const handleLeave = (e: MouseEvent) => {
|
|
345
345
|
if (local.disabled) return
|
|
346
|
-
const eventTarget = (e.
|
|
346
|
+
const eventTarget = (e.currentTarget || {}) as LinkCurrentTargetElement
|
|
347
347
|
|
|
348
348
|
if (eventTarget.preloadTimeout) {
|
|
349
349
|
clearTimeout(eventTarget.preloadTimeout)
|
|
@@ -421,8 +421,14 @@ export function useLinkProps<
|
|
|
421
421
|
]),
|
|
422
422
|
disabled: !!local.disabled,
|
|
423
423
|
target: local.target,
|
|
424
|
-
...(
|
|
425
|
-
|
|
424
|
+
...(() => {
|
|
425
|
+
const s = resolvedStyle()
|
|
426
|
+
return Object.keys(s).length ? { style: s } : {}
|
|
427
|
+
})(),
|
|
428
|
+
...(() => {
|
|
429
|
+
const c = resolvedClassName()
|
|
430
|
+
return c ? { class: c } : {}
|
|
431
|
+
})(),
|
|
426
432
|
...(local.disabled && {
|
|
427
433
|
role: 'link',
|
|
428
434
|
'aria-disabled': true,
|
|
@@ -572,7 +578,9 @@ export const Link: LinkComponent<'a'> = (props) => {
|
|
|
572
578
|
get isActive() {
|
|
573
579
|
return (linkProps as any)['data-status'] === 'active'
|
|
574
580
|
},
|
|
575
|
-
isTransitioning
|
|
581
|
+
get isTransitioning() {
|
|
582
|
+
return (linkProps as any)['data-transitioning'] === 'transitioning'
|
|
583
|
+
},
|
|
576
584
|
})
|
|
577
585
|
}
|
|
578
586
|
|