@tanstack/solid-router 1.132.0-alpha.12 → 1.132.0-alpha.13
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 +2 -8
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/useNavigate.cjs +1 -8
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/esm/link.js +2 -8
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/useNavigate.js +1 -8
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/source/link.jsx +2 -5
- package/dist/source/link.jsx.map +1 -1
- package/dist/source/useNavigate.jsx +1 -5
- package/dist/source/useNavigate.jsx.map +1 -1
- package/package.json +1 -1
- package/src/link.tsx +2 -6
- package/src/useNavigate.tsx +1 -9
- package/dist/cjs/useActiveLocation.cjs +0 -40
- package/dist/cjs/useActiveLocation.cjs.map +0 -1
- package/dist/cjs/useActiveLocation.d.cts +0 -8
- package/dist/esm/useActiveLocation.d.ts +0 -8
- package/dist/esm/useActiveLocation.js +0 -40
- package/dist/esm/useActiveLocation.js.map +0 -1
- package/dist/source/useActiveLocation.d.ts +0 -8
- package/dist/source/useActiveLocation.js +0 -33
- package/dist/source/useActiveLocation.js.map +0 -1
- package/src/useActiveLocation.ts +0 -61
package/dist/cjs/link.cjs
CHANGED
|
@@ -7,7 +7,6 @@ const routerCore = require("@tanstack/router-core");
|
|
|
7
7
|
const useRouterState = require("./useRouterState.cjs");
|
|
8
8
|
const useRouter = require("./useRouter.cjs");
|
|
9
9
|
const utils = require("./utils.cjs");
|
|
10
|
-
const useActiveLocation = require("./useActiveLocation.cjs");
|
|
11
10
|
function _interopNamespaceDefault(e) {
|
|
12
11
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
13
12
|
if (e) {
|
|
@@ -47,20 +46,15 @@ function useLinkProps(options) {
|
|
|
47
46
|
const currentSearch = useRouterState.useRouterState({
|
|
48
47
|
select: (s) => s.location.searchStr
|
|
49
48
|
});
|
|
50
|
-
const
|
|
51
|
-
getFromPath,
|
|
52
|
-
activeLocation
|
|
53
|
-
} = useActiveLocation.useActiveLocation();
|
|
54
|
-
const from = getFromPath(options.from);
|
|
49
|
+
const from = options.from;
|
|
55
50
|
const _options = () => {
|
|
56
51
|
return {
|
|
57
52
|
...options,
|
|
58
|
-
from
|
|
53
|
+
from
|
|
59
54
|
};
|
|
60
55
|
};
|
|
61
56
|
const next = Solid__namespace.createMemo(() => {
|
|
62
57
|
currentSearch();
|
|
63
|
-
activeLocation();
|
|
64
58
|
return router.buildLocation(_options());
|
|
65
59
|
});
|
|
66
60
|
const preload = Solid__namespace.createMemo(() => {
|
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 { useActiveLocation } from './useActiveLocation'\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 // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\n }\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n const { getFromPath, activeLocation } = useActiveLocation()\n\n const from = getFromPath(options.from)\n\n const _options = () => {\n return {\n ...options,\n from: from(),\n }\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n activeLocation()\n return router.buildLocation(_options() as any)\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument) {\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 (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 (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\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 if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_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 const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return _options().disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: 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","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","getFromPath","activeLocation","useActiveLocation","from","_options","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","pathname","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","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","nextLocation","maskedLocation","undefined","history","createHref","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 // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\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 preload = Solid.createMemo(() => {\n if (_options().reloadDocument) {\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 (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 (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\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 if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_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 const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return _options().disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: 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","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","from","_options","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","pathname","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","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","nextLocation","maskedLocation","undefined","history","createHref","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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"}
|
package/dist/cjs/useNavigate.cjs
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const Solid = require("solid-js");
|
|
4
4
|
const useRouter = require("./useRouter.cjs");
|
|
5
|
-
const useActiveLocation = require("./useActiveLocation.cjs");
|
|
6
5
|
function _interopNamespaceDefault(e) {
|
|
7
6
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
8
7
|
if (e) {
|
|
@@ -22,16 +21,10 @@ function _interopNamespaceDefault(e) {
|
|
|
22
21
|
const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid);
|
|
23
22
|
function useNavigate(_defaultOpts) {
|
|
24
23
|
const router = useRouter.useRouter();
|
|
25
|
-
const {
|
|
26
|
-
getFromPath,
|
|
27
|
-
setActiveLocation
|
|
28
|
-
} = useActiveLocation.useActiveLocation(router.latestLocation);
|
|
29
24
|
return (options) => {
|
|
30
|
-
setActiveLocation(router.latestLocation);
|
|
31
|
-
const from = getFromPath(options.from ?? _defaultOpts?.from);
|
|
32
25
|
return router.navigate({
|
|
33
26
|
...options,
|
|
34
|
-
from: from
|
|
27
|
+
from: options.from ?? _defaultOpts?.from
|
|
35
28
|
});
|
|
36
29
|
};
|
|
37
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigate.cjs","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { useRouter } from './useRouter'\nimport
|
|
1
|
+
{"version":3,"file":"useNavigate.cjs","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type {\n AnyRouter,\n FromPathOption,\n NavigateOptions,\n RegisteredRouter,\n UseNavigateResult,\n} from '@tanstack/router-core'\n\nexport function useNavigate<\n TRouter extends AnyRouter = RegisteredRouter,\n TDefaultFrom extends string = string,\n>(_defaultOpts?: {\n from?: FromPathOption<TRouter, TDefaultFrom>\n}): UseNavigateResult<TDefaultFrom> {\n const router = useRouter()\n\n return ((options: NavigateOptions) => {\n return router.navigate({\n ...options,\n from: options.from ?? _defaultOpts?.from,\n })\n }) as UseNavigateResult<TDefaultFrom>\n}\n\nexport function Navigate<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const { navigate } = useRouter()\n\n Solid.onMount(() => {\n navigate({\n ...props,\n })\n })\n\n return null\n}\n"],"names":["useNavigate","_defaultOpts","router","useRouter","options","navigate","from","Navigate","props","Solid","onMount"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAUO,SAASA,YAGdC,cAEkC;AAClC,QAAMC,SAASC,UAAAA,UAAAA;AAEf,SAAQ,CAACC,YAA6B;AACpC,WAAOF,OAAOG,SAAS;AAAA,MACrB,GAAGD;AAAAA,MACHE,MAAMF,QAAQE,QAAQL,cAAcK;AAAAA,IAAAA,CACrC;AAAA,EACH;AACF;AAEO,SAASC,SAMdC,OAAuE;AACvE,QAAM;AAAA,IAAEH;AAAAA,EAAAA,IAAaF,oBAAAA;AAErBM,mBAAMC,QAAQ,MAAM;AAClBL,aAAS;AAAA,MACP,GAAGG;AAAAA,IAAAA,CACJ;AAAA,EACH,CAAC;AAED,SAAO;AACT;;;"}
|
package/dist/esm/link.js
CHANGED
|
@@ -5,7 +5,6 @@ import { functionalUpdate, preloadWarning, exactPathTest, removeTrailingSlash, d
|
|
|
5
5
|
import { useRouterState } from "./useRouterState.js";
|
|
6
6
|
import { useRouter } from "./useRouter.js";
|
|
7
7
|
import { useIntersectionObserver } from "./utils.js";
|
|
8
|
-
import { useActiveLocation } from "./useActiveLocation.js";
|
|
9
8
|
function useLinkProps(options) {
|
|
10
9
|
const router = useRouter();
|
|
11
10
|
const [isTransitioning, setIsTransitioning] = Solid.createSignal(false);
|
|
@@ -28,20 +27,15 @@ function useLinkProps(options) {
|
|
|
28
27
|
const currentSearch = useRouterState({
|
|
29
28
|
select: (s) => s.location.searchStr
|
|
30
29
|
});
|
|
31
|
-
const
|
|
32
|
-
getFromPath,
|
|
33
|
-
activeLocation
|
|
34
|
-
} = useActiveLocation();
|
|
35
|
-
const from = getFromPath(options.from);
|
|
30
|
+
const from = options.from;
|
|
36
31
|
const _options = () => {
|
|
37
32
|
return {
|
|
38
33
|
...options,
|
|
39
|
-
from
|
|
34
|
+
from
|
|
40
35
|
};
|
|
41
36
|
};
|
|
42
37
|
const next = Solid.createMemo(() => {
|
|
43
38
|
currentSearch();
|
|
44
|
-
activeLocation();
|
|
45
39
|
return router.buildLocation(_options());
|
|
46
40
|
});
|
|
47
41
|
const preload = Solid.createMemo(() => {
|
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 { useActiveLocation } from './useActiveLocation'\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 // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\n }\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n const { getFromPath, activeLocation } = useActiveLocation()\n\n const from = getFromPath(options.from)\n\n const _options = () => {\n return {\n ...options,\n from: from(),\n }\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n activeLocation()\n return router.buildLocation(_options() as any)\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument) {\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 (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 (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\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 if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_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 const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return _options().disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: 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","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","getFromPath","activeLocation","useActiveLocation","from","_options","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","pathname","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","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","nextLocation","maskedLocation","undefined","history","createHref","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.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 // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\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 preload = Solid.createMemo(() => {\n if (_options().reloadDocument) {\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 (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 (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\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 if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_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 const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return _options().disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: 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","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","from","_options","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","pathname","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","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","nextLocation","maskedLocation","undefined","history","createHref","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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"}
|
package/dist/esm/useNavigate.js
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import * as Solid from "solid-js";
|
|
2
2
|
import { useRouter } from "./useRouter.js";
|
|
3
|
-
import { useActiveLocation } from "./useActiveLocation.js";
|
|
4
3
|
function useNavigate(_defaultOpts) {
|
|
5
4
|
const router = useRouter();
|
|
6
|
-
const {
|
|
7
|
-
getFromPath,
|
|
8
|
-
setActiveLocation
|
|
9
|
-
} = useActiveLocation(router.latestLocation);
|
|
10
5
|
return (options) => {
|
|
11
|
-
setActiveLocation(router.latestLocation);
|
|
12
|
-
const from = getFromPath(options.from ?? _defaultOpts?.from);
|
|
13
6
|
return router.navigate({
|
|
14
7
|
...options,
|
|
15
|
-
from: from
|
|
8
|
+
from: options.from ?? _defaultOpts?.from
|
|
16
9
|
});
|
|
17
10
|
};
|
|
18
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigate.js","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { useRouter } from './useRouter'\nimport
|
|
1
|
+
{"version":3,"file":"useNavigate.js","sources":["../../src/useNavigate.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type {\n AnyRouter,\n FromPathOption,\n NavigateOptions,\n RegisteredRouter,\n UseNavigateResult,\n} from '@tanstack/router-core'\n\nexport function useNavigate<\n TRouter extends AnyRouter = RegisteredRouter,\n TDefaultFrom extends string = string,\n>(_defaultOpts?: {\n from?: FromPathOption<TRouter, TDefaultFrom>\n}): UseNavigateResult<TDefaultFrom> {\n const router = useRouter()\n\n return ((options: NavigateOptions) => {\n return router.navigate({\n ...options,\n from: options.from ?? _defaultOpts?.from,\n })\n }) as UseNavigateResult<TDefaultFrom>\n}\n\nexport function Navigate<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(props: NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): null {\n const { navigate } = useRouter()\n\n Solid.onMount(() => {\n navigate({\n ...props,\n })\n })\n\n return null\n}\n"],"names":["useNavigate","_defaultOpts","router","useRouter","options","navigate","from","Navigate","props","Solid","onMount"],"mappings":";;AAUO,SAASA,YAGdC,cAEkC;AAClC,QAAMC,SAASC,UAAAA;AAEf,SAAQ,CAACC,YAA6B;AACpC,WAAOF,OAAOG,SAAS;AAAA,MACrB,GAAGD;AAAAA,MACHE,MAAMF,QAAQE,QAAQL,cAAcK;AAAAA,IAAAA,CACrC;AAAA,EACH;AACF;AAEO,SAASC,SAMdC,OAAuE;AACvE,QAAM;AAAA,IAAEH;AAAAA,EAAAA,IAAaF,UAAAA;AAErBM,QAAMC,QAAQ,MAAM;AAClBL,aAAS;AAAA,MACP,GAAGG;AAAAA,IAAAA,CACJ;AAAA,EACH,CAAC;AAED,SAAO;AACT;"}
|
package/dist/source/link.jsx
CHANGED
|
@@ -5,7 +5,6 @@ import { Dynamic } from 'solid-js/web';
|
|
|
5
5
|
import { useRouterState } from './useRouterState';
|
|
6
6
|
import { useRouter } from './useRouter';
|
|
7
7
|
import { useIntersectionObserver } from './utils';
|
|
8
|
-
import { useActiveLocation } from './useActiveLocation';
|
|
9
8
|
export function useLinkProps(options) {
|
|
10
9
|
const router = useRouter();
|
|
11
10
|
const [isTransitioning, setIsTransitioning] = Solid.createSignal(false);
|
|
@@ -89,17 +88,15 @@ export function useLinkProps(options) {
|
|
|
89
88
|
const currentSearch = useRouterState({
|
|
90
89
|
select: (s) => s.location.searchStr,
|
|
91
90
|
});
|
|
92
|
-
const
|
|
93
|
-
const from = getFromPath(options.from);
|
|
91
|
+
const from = options.from;
|
|
94
92
|
const _options = () => {
|
|
95
93
|
return {
|
|
96
94
|
...options,
|
|
97
|
-
from
|
|
95
|
+
from,
|
|
98
96
|
};
|
|
99
97
|
};
|
|
100
98
|
const next = Solid.createMemo(() => {
|
|
101
99
|
currentSearch();
|
|
102
|
-
activeLocation();
|
|
103
100
|
return router.buildLocation(_options());
|
|
104
101
|
});
|
|
105
102
|
const preload = Solid.createMemo(() => {
|
package/dist/source/link.jsx.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,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,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAcvD,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,iDAAiD;IACjD,+DAA+D;IAE/D,+CAA+C;IAC/C,qBAAqB;IAErB,MAAM,IAAI,GAA4C,GAAG,EAAE;QACzD,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;YACtB,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,cAAc,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;KACpC,CAAC,CAAA;IAEF,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE,CAAA;IAE3D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO;YACL,GAAG,OAAO;YACV,IAAI,EAAE,IAAI,EAAE;SACb,CAAA;IACH,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACjC,aAAa,EAAE,CAAA;QACf,cAAc,EAAE,CAAA;QAChB,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAS,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACpC,IAAI,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC;YAC9B,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,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,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB;YACE,GAAG;YACH,IAAI,IAAI;gBACN,OAAO,IAAI,EAAE,CAAA;YACf,CAAC;YACD,IAAI,IAAI;gBACN,OAAO,KAAK,CAAC,EAAE,CAAA;YACjB,CAAC;SACF,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,IACE,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,WAAW,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,CAAC,gBAAgB;YACnB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC;YAC3C,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,MAAM,IAAI,EAAE,CAA6B,CAAA;QAEhE,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,MAAM,IAAI,EAAE,CAA6B,CAAA;QAEhE,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,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACjC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAA;QAC3B,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,CAAA;QAEnD,OAAO,QAAQ,EAAE,CAAC,QAAQ;YACxB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc;gBACd,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;gBAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,GAAG,EAAE;QACH,OAAO;YACL,IAAI,EAAE,IAAI,EAAE;YACZ,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,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;YAClE,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC;YAC1D,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,eAAe,EAAE,KAAK;aACvB,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"}
|
|
1
|
+
{"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import * as Solid from 'solid-js';
|
|
2
2
|
import { useRouter } from './useRouter';
|
|
3
|
-
import { useActiveLocation } from './useActiveLocation';
|
|
4
3
|
export function useNavigate(_defaultOpts) {
|
|
5
4
|
const router = useRouter();
|
|
6
|
-
const { getFromPath, setActiveLocation } = useActiveLocation(router.latestLocation);
|
|
7
5
|
return ((options) => {
|
|
8
|
-
setActiveLocation(router.latestLocation);
|
|
9
|
-
const from = getFromPath(options.from ?? _defaultOpts?.from);
|
|
10
6
|
return router.navigate({
|
|
11
7
|
...options,
|
|
12
|
-
from: from
|
|
8
|
+
from: options.from ?? _defaultOpts?.from,
|
|
13
9
|
});
|
|
14
10
|
});
|
|
15
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigate.jsx","sourceRoot":"","sources":["../../src/useNavigate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"useNavigate.jsx","sourceRoot":"","sources":["../../src/useNavigate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AASvC,MAAM,UAAU,WAAW,CAGzB,YAED;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CAAC,CAAC,OAAwB,EAAE,EAAE;QACnC,OAAO,MAAM,CAAC,QAAQ,CAAC;YACrB,GAAG,OAAO;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI;SACzC,CAAC,CAAA;IACJ,CAAC,CAAoC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAMtB,KAA+D;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC;YACP,GAAG,KAAK;SACT,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
package/src/link.tsx
CHANGED
|
@@ -15,7 +15,6 @@ import { useRouter } from './useRouter'
|
|
|
15
15
|
|
|
16
16
|
import { useIntersectionObserver } from './utils'
|
|
17
17
|
|
|
18
|
-
import { useActiveLocation } from './useActiveLocation'
|
|
19
18
|
import type {
|
|
20
19
|
AnyRouter,
|
|
21
20
|
Constrain,
|
|
@@ -133,20 +132,17 @@ export function useLinkProps<
|
|
|
133
132
|
select: (s) => s.location.searchStr,
|
|
134
133
|
})
|
|
135
134
|
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
const from = getFromPath(options.from)
|
|
135
|
+
const from = options.from
|
|
139
136
|
|
|
140
137
|
const _options = () => {
|
|
141
138
|
return {
|
|
142
139
|
...options,
|
|
143
|
-
from
|
|
140
|
+
from,
|
|
144
141
|
}
|
|
145
142
|
}
|
|
146
143
|
|
|
147
144
|
const next = Solid.createMemo(() => {
|
|
148
145
|
currentSearch()
|
|
149
|
-
activeLocation()
|
|
150
146
|
return router.buildLocation(_options() as any)
|
|
151
147
|
})
|
|
152
148
|
|
package/src/useNavigate.tsx
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as Solid from 'solid-js'
|
|
2
2
|
import { useRouter } from './useRouter'
|
|
3
|
-
import { useActiveLocation } from './useActiveLocation'
|
|
4
3
|
import type {
|
|
5
4
|
AnyRouter,
|
|
6
5
|
FromPathOption,
|
|
@@ -17,17 +16,10 @@ export function useNavigate<
|
|
|
17
16
|
}): UseNavigateResult<TDefaultFrom> {
|
|
18
17
|
const router = useRouter()
|
|
19
18
|
|
|
20
|
-
const { getFromPath, setActiveLocation } = useActiveLocation(
|
|
21
|
-
router.latestLocation,
|
|
22
|
-
)
|
|
23
|
-
|
|
24
19
|
return ((options: NavigateOptions) => {
|
|
25
|
-
setActiveLocation(router.latestLocation)
|
|
26
|
-
const from = getFromPath(options.from ?? _defaultOpts?.from)
|
|
27
|
-
|
|
28
20
|
return router.navigate({
|
|
29
21
|
...options,
|
|
30
|
-
from: from
|
|
22
|
+
from: options.from ?? _defaultOpts?.from,
|
|
31
23
|
})
|
|
32
24
|
}) as UseNavigateResult<TDefaultFrom>
|
|
33
25
|
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const routerCore = require("@tanstack/router-core");
|
|
4
|
-
const Solid = require("solid-js");
|
|
5
|
-
const useMatch = require("./useMatch.cjs");
|
|
6
|
-
const useRouter = require("./useRouter.cjs");
|
|
7
|
-
const useRouterState = require("./useRouterState.cjs");
|
|
8
|
-
function useActiveLocation(location) {
|
|
9
|
-
const router = useRouter.useRouter();
|
|
10
|
-
const [activeLocation, setActiveLocation] = Solid.createSignal(
|
|
11
|
-
location ?? useRouterState.useRouterState({ select: (s) => s.location })()
|
|
12
|
-
);
|
|
13
|
-
const [customActiveLocation, setCustomActiveLocation] = Solid.createSignal(location);
|
|
14
|
-
Solid.createEffect(() => {
|
|
15
|
-
setActiveLocation(
|
|
16
|
-
customActiveLocation() ?? useRouterState.useRouterState({ select: (s) => s.location })()
|
|
17
|
-
);
|
|
18
|
-
});
|
|
19
|
-
const matchIndex = useMatch.useMatch({
|
|
20
|
-
strict: false,
|
|
21
|
-
select: (match) => match.index
|
|
22
|
-
});
|
|
23
|
-
const getFromPath = (from) => Solid.createMemo(() => {
|
|
24
|
-
const activeLocationMatches = router.matchRoutes(
|
|
25
|
-
customActiveLocation() ?? activeLocation(),
|
|
26
|
-
{
|
|
27
|
-
_buildLocation: false
|
|
28
|
-
}
|
|
29
|
-
);
|
|
30
|
-
const activeLocationMatch = routerCore.last(activeLocationMatches);
|
|
31
|
-
return from ?? activeLocationMatch?.fullPath ?? router.state.matches[matchIndex()].fullPath;
|
|
32
|
-
});
|
|
33
|
-
return {
|
|
34
|
-
activeLocation,
|
|
35
|
-
getFromPath,
|
|
36
|
-
setActiveLocation: setCustomActiveLocation
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
exports.useActiveLocation = useActiveLocation;
|
|
40
|
-
//# sourceMappingURL=useActiveLocation.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveLocation.cjs","sources":["../../src/useActiveLocation.ts"],"sourcesContent":["import { last } from '@tanstack/router-core'\nimport { createEffect, createMemo, createSignal } from 'solid-js'\nimport { useMatch } from './useMatch'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport type { Accessor } from 'solid-js'\nimport type { ParsedLocation } from '@tanstack/router-core'\n\nexport type UseLocationResult = {\n activeLocation: Accessor<ParsedLocation>\n getFromPath: (from?: string) => Accessor<string>\n setActiveLocation: (location?: ParsedLocation) => void\n}\n\nexport function useActiveLocation(\n location?: ParsedLocation,\n): UseLocationResult {\n const router = useRouter()\n // we are not using a variable here for router state location since we need to only calculate that if the location is not passed in. It can result in unnecessary history actions if we do that.\n const [activeLocation, setActiveLocation] = createSignal<ParsedLocation>(\n location ?? useRouterState({ select: (s) => s.location })(),\n )\n const [customActiveLocation, setCustomActiveLocation] = createSignal<\n ParsedLocation | undefined\n >(location)\n\n createEffect(() => {\n setActiveLocation(\n customActiveLocation() ?? useRouterState({ select: (s) => s.location })(),\n )\n })\n\n const matchIndex = useMatch({\n strict: false,\n select: (match) => match.index,\n })\n\n const getFromPath = (from?: string) =>\n createMemo(() => {\n const activeLocationMatches = router.matchRoutes(\n customActiveLocation() ?? activeLocation(),\n {\n _buildLocation: false,\n },\n )\n\n const activeLocationMatch = last(activeLocationMatches)\n\n return (\n from ??\n activeLocationMatch?.fullPath ??\n router.state.matches[matchIndex()]!.fullPath\n )\n })\n\n return {\n activeLocation,\n getFromPath,\n setActiveLocation: setCustomActiveLocation,\n }\n}\n"],"names":["useRouter","createSignal","useRouterState","createEffect","useMatch","createMemo","last"],"mappings":";;;;;;;AAcO,SAAS,kBACd,UACmB;AACnB,QAAM,SAASA,UAAAA,UAAA;AAEf,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,MAAAA;AAAAA,IAC1C,YAAYC,eAAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAA;AAAA,EAAE;AAE5D,QAAM,CAAC,sBAAsB,uBAAuB,IAAID,MAAAA,aAEtD,QAAQ;AAEVE,QAAAA,aAAa,MAAM;AACjB;AAAA,MACE,qBAAA,KAA0BD,eAAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAA;AAAA,IAAE;AAAA,EAE5E,CAAC;AAED,QAAM,aAAaE,SAAAA,SAAS;AAAA,IAC1B,QAAQ;AAAA,IACR,QAAQ,CAAC,UAAU,MAAM;AAAA,EAAA,CAC1B;AAED,QAAM,cAAc,CAAC,SACnBC,MAAAA,WAAW,MAAM;AACf,UAAM,wBAAwB,OAAO;AAAA,MACnC,qBAAA,KAA0B,eAAA;AAAA,MAC1B;AAAA,QACE,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAGF,UAAM,sBAAsBC,WAAAA,KAAK,qBAAqB;AAEtD,WACE,QACA,qBAAqB,YACrB,OAAO,MAAM,QAAQ,WAAA,CAAY,EAAG;AAAA,EAExC,CAAC;AAEH,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,EAAA;AAEvB;;"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Accessor } from 'solid-js';
|
|
2
|
-
import { ParsedLocation } from '@tanstack/router-core';
|
|
3
|
-
export type UseLocationResult = {
|
|
4
|
-
activeLocation: Accessor<ParsedLocation>;
|
|
5
|
-
getFromPath: (from?: string) => Accessor<string>;
|
|
6
|
-
setActiveLocation: (location?: ParsedLocation) => void;
|
|
7
|
-
};
|
|
8
|
-
export declare function useActiveLocation(location?: ParsedLocation): UseLocationResult;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Accessor } from 'solid-js';
|
|
2
|
-
import { ParsedLocation } from '@tanstack/router-core';
|
|
3
|
-
export type UseLocationResult = {
|
|
4
|
-
activeLocation: Accessor<ParsedLocation>;
|
|
5
|
-
getFromPath: (from?: string) => Accessor<string>;
|
|
6
|
-
setActiveLocation: (location?: ParsedLocation) => void;
|
|
7
|
-
};
|
|
8
|
-
export declare function useActiveLocation(location?: ParsedLocation): UseLocationResult;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { last } from "@tanstack/router-core";
|
|
2
|
-
import { createSignal, createEffect, createMemo } from "solid-js";
|
|
3
|
-
import { useMatch } from "./useMatch.js";
|
|
4
|
-
import { useRouter } from "./useRouter.js";
|
|
5
|
-
import { useRouterState } from "./useRouterState.js";
|
|
6
|
-
function useActiveLocation(location) {
|
|
7
|
-
const router = useRouter();
|
|
8
|
-
const [activeLocation, setActiveLocation] = createSignal(
|
|
9
|
-
location ?? useRouterState({ select: (s) => s.location })()
|
|
10
|
-
);
|
|
11
|
-
const [customActiveLocation, setCustomActiveLocation] = createSignal(location);
|
|
12
|
-
createEffect(() => {
|
|
13
|
-
setActiveLocation(
|
|
14
|
-
customActiveLocation() ?? useRouterState({ select: (s) => s.location })()
|
|
15
|
-
);
|
|
16
|
-
});
|
|
17
|
-
const matchIndex = useMatch({
|
|
18
|
-
strict: false,
|
|
19
|
-
select: (match) => match.index
|
|
20
|
-
});
|
|
21
|
-
const getFromPath = (from) => createMemo(() => {
|
|
22
|
-
const activeLocationMatches = router.matchRoutes(
|
|
23
|
-
customActiveLocation() ?? activeLocation(),
|
|
24
|
-
{
|
|
25
|
-
_buildLocation: false
|
|
26
|
-
}
|
|
27
|
-
);
|
|
28
|
-
const activeLocationMatch = last(activeLocationMatches);
|
|
29
|
-
return from ?? activeLocationMatch?.fullPath ?? router.state.matches[matchIndex()].fullPath;
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
activeLocation,
|
|
33
|
-
getFromPath,
|
|
34
|
-
setActiveLocation: setCustomActiveLocation
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export {
|
|
38
|
-
useActiveLocation
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=useActiveLocation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveLocation.js","sources":["../../src/useActiveLocation.ts"],"sourcesContent":["import { last } from '@tanstack/router-core'\nimport { createEffect, createMemo, createSignal } from 'solid-js'\nimport { useMatch } from './useMatch'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport type { Accessor } from 'solid-js'\nimport type { ParsedLocation } from '@tanstack/router-core'\n\nexport type UseLocationResult = {\n activeLocation: Accessor<ParsedLocation>\n getFromPath: (from?: string) => Accessor<string>\n setActiveLocation: (location?: ParsedLocation) => void\n}\n\nexport function useActiveLocation(\n location?: ParsedLocation,\n): UseLocationResult {\n const router = useRouter()\n // we are not using a variable here for router state location since we need to only calculate that if the location is not passed in. It can result in unnecessary history actions if we do that.\n const [activeLocation, setActiveLocation] = createSignal<ParsedLocation>(\n location ?? useRouterState({ select: (s) => s.location })(),\n )\n const [customActiveLocation, setCustomActiveLocation] = createSignal<\n ParsedLocation | undefined\n >(location)\n\n createEffect(() => {\n setActiveLocation(\n customActiveLocation() ?? useRouterState({ select: (s) => s.location })(),\n )\n })\n\n const matchIndex = useMatch({\n strict: false,\n select: (match) => match.index,\n })\n\n const getFromPath = (from?: string) =>\n createMemo(() => {\n const activeLocationMatches = router.matchRoutes(\n customActiveLocation() ?? activeLocation(),\n {\n _buildLocation: false,\n },\n )\n\n const activeLocationMatch = last(activeLocationMatches)\n\n return (\n from ??\n activeLocationMatch?.fullPath ??\n router.state.matches[matchIndex()]!.fullPath\n )\n })\n\n return {\n activeLocation,\n getFromPath,\n setActiveLocation: setCustomActiveLocation,\n }\n}\n"],"names":[],"mappings":";;;;;AAcO,SAAS,kBACd,UACmB;AACnB,QAAM,SAAS,UAAA;AAEf,QAAM,CAAC,gBAAgB,iBAAiB,IAAI;AAAA,IAC1C,YAAY,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAA;AAAA,EAAE;AAE5D,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,aAEtD,QAAQ;AAEV,eAAa,MAAM;AACjB;AAAA,MACE,qBAAA,KAA0B,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAA;AAAA,IAAE;AAAA,EAE5E,CAAC;AAED,QAAM,aAAa,SAAS;AAAA,IAC1B,QAAQ;AAAA,IACR,QAAQ,CAAC,UAAU,MAAM;AAAA,EAAA,CAC1B;AAED,QAAM,cAAc,CAAC,SACnB,WAAW,MAAM;AACf,UAAM,wBAAwB,OAAO;AAAA,MACnC,qBAAA,KAA0B,eAAA;AAAA,MAC1B;AAAA,QACE,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAGF,UAAM,sBAAsB,KAAK,qBAAqB;AAEtD,WACE,QACA,qBAAqB,YACrB,OAAO,MAAM,QAAQ,WAAA,CAAY,EAAG;AAAA,EAExC,CAAC;AAEH,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,EAAA;AAEvB;"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Accessor } from 'solid-js';
|
|
2
|
-
import type { ParsedLocation } from '@tanstack/router-core';
|
|
3
|
-
export type UseLocationResult = {
|
|
4
|
-
activeLocation: Accessor<ParsedLocation>;
|
|
5
|
-
getFromPath: (from?: string) => Accessor<string>;
|
|
6
|
-
setActiveLocation: (location?: ParsedLocation) => void;
|
|
7
|
-
};
|
|
8
|
-
export declare function useActiveLocation(location?: ParsedLocation): UseLocationResult;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { last } from '@tanstack/router-core';
|
|
2
|
-
import { createEffect, createMemo, createSignal } from 'solid-js';
|
|
3
|
-
import { useMatch } from './useMatch';
|
|
4
|
-
import { useRouter } from './useRouter';
|
|
5
|
-
import { useRouterState } from './useRouterState';
|
|
6
|
-
export function useActiveLocation(location) {
|
|
7
|
-
const router = useRouter();
|
|
8
|
-
// we are not using a variable here for router state location since we need to only calculate that if the location is not passed in. It can result in unnecessary history actions if we do that.
|
|
9
|
-
const [activeLocation, setActiveLocation] = createSignal(location ?? useRouterState({ select: (s) => s.location })());
|
|
10
|
-
const [customActiveLocation, setCustomActiveLocation] = createSignal(location);
|
|
11
|
-
createEffect(() => {
|
|
12
|
-
setActiveLocation(customActiveLocation() ?? useRouterState({ select: (s) => s.location })());
|
|
13
|
-
});
|
|
14
|
-
const matchIndex = useMatch({
|
|
15
|
-
strict: false,
|
|
16
|
-
select: (match) => match.index,
|
|
17
|
-
});
|
|
18
|
-
const getFromPath = (from) => createMemo(() => {
|
|
19
|
-
const activeLocationMatches = router.matchRoutes(customActiveLocation() ?? activeLocation(), {
|
|
20
|
-
_buildLocation: false,
|
|
21
|
-
});
|
|
22
|
-
const activeLocationMatch = last(activeLocationMatches);
|
|
23
|
-
return (from ??
|
|
24
|
-
activeLocationMatch?.fullPath ??
|
|
25
|
-
router.state.matches[matchIndex()].fullPath);
|
|
26
|
-
});
|
|
27
|
-
return {
|
|
28
|
-
activeLocation,
|
|
29
|
-
getFromPath,
|
|
30
|
-
setActiveLocation: setCustomActiveLocation,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=useActiveLocation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveLocation.js","sourceRoot":"","sources":["../../src/useActiveLocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAUjD,MAAM,UAAU,iBAAiB,CAC/B,QAAyB;IAEzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,gMAAgM;IAChM,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,YAAY,CACtD,QAAQ,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAC5D,CAAA;IACD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,YAAY,CAElE,QAAQ,CAAC,CAAA;IAEX,YAAY,CAAC,GAAG,EAAE;QAChB,iBAAiB,CACf,oBAAoB,EAAE,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAC1E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC;QAC1B,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;KAC/B,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,CAAC,IAAa,EAAE,EAAE,CACpC,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,qBAAqB,GAAG,MAAM,CAAC,WAAW,CAC9C,oBAAoB,EAAE,IAAI,cAAc,EAAE,EAC1C;YACE,cAAc,EAAE,KAAK;SACtB,CACF,CAAA;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAEvD,OAAO,CACL,IAAI;YACJ,mBAAmB,EAAE,QAAQ;YAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAE,CAAC,QAAQ,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,cAAc;QACd,WAAW;QACX,iBAAiB,EAAE,uBAAuB;KAC3C,CAAA;AACH,CAAC"}
|
package/src/useActiveLocation.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { last } from '@tanstack/router-core'
|
|
2
|
-
import { createEffect, createMemo, createSignal } from 'solid-js'
|
|
3
|
-
import { useMatch } from './useMatch'
|
|
4
|
-
import { useRouter } from './useRouter'
|
|
5
|
-
import { useRouterState } from './useRouterState'
|
|
6
|
-
import type { Accessor } from 'solid-js'
|
|
7
|
-
import type { ParsedLocation } from '@tanstack/router-core'
|
|
8
|
-
|
|
9
|
-
export type UseLocationResult = {
|
|
10
|
-
activeLocation: Accessor<ParsedLocation>
|
|
11
|
-
getFromPath: (from?: string) => Accessor<string>
|
|
12
|
-
setActiveLocation: (location?: ParsedLocation) => void
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function useActiveLocation(
|
|
16
|
-
location?: ParsedLocation,
|
|
17
|
-
): UseLocationResult {
|
|
18
|
-
const router = useRouter()
|
|
19
|
-
// we are not using a variable here for router state location since we need to only calculate that if the location is not passed in. It can result in unnecessary history actions if we do that.
|
|
20
|
-
const [activeLocation, setActiveLocation] = createSignal<ParsedLocation>(
|
|
21
|
-
location ?? useRouterState({ select: (s) => s.location })(),
|
|
22
|
-
)
|
|
23
|
-
const [customActiveLocation, setCustomActiveLocation] = createSignal<
|
|
24
|
-
ParsedLocation | undefined
|
|
25
|
-
>(location)
|
|
26
|
-
|
|
27
|
-
createEffect(() => {
|
|
28
|
-
setActiveLocation(
|
|
29
|
-
customActiveLocation() ?? useRouterState({ select: (s) => s.location })(),
|
|
30
|
-
)
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
const matchIndex = useMatch({
|
|
34
|
-
strict: false,
|
|
35
|
-
select: (match) => match.index,
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
const getFromPath = (from?: string) =>
|
|
39
|
-
createMemo(() => {
|
|
40
|
-
const activeLocationMatches = router.matchRoutes(
|
|
41
|
-
customActiveLocation() ?? activeLocation(),
|
|
42
|
-
{
|
|
43
|
-
_buildLocation: false,
|
|
44
|
-
},
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
const activeLocationMatch = last(activeLocationMatches)
|
|
48
|
-
|
|
49
|
-
return (
|
|
50
|
-
from ??
|
|
51
|
-
activeLocationMatch?.fullPath ??
|
|
52
|
-
router.state.matches[matchIndex()]!.fullPath
|
|
53
|
-
)
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
activeLocation,
|
|
58
|
-
getFromPath,
|
|
59
|
-
setActiveLocation: setCustomActiveLocation,
|
|
60
|
-
}
|
|
61
|
-
}
|