@tanstack/solid-router 2.0.0-beta.16 → 2.0.0-beta.17
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/Asset.cjs.map +1 -1
- package/dist/cjs/Asset.d.cts +1 -1
- package/dist/cjs/CatchBoundary.cjs.map +1 -1
- package/dist/cjs/CatchBoundary.d.cts +4 -3
- package/dist/cjs/ClientOnly.cjs.map +1 -1
- package/dist/cjs/ClientOnly.d.cts +4 -3
- package/dist/cjs/HeadContent.d.cts +1 -1
- package/dist/cjs/HeadContent.dev.d.cts +1 -1
- package/dist/cjs/Match.d.cts +2 -3
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Matches.d.cts +8 -7
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/RouterProvider.d.cts +4 -4
- package/dist/cjs/SafeFragment.d.cts +1 -1
- package/dist/cjs/ScriptOnce.d.cts +1 -1
- package/dist/cjs/Scripts.d.cts +1 -2
- package/dist/cjs/awaited.d.cts +1 -2
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +10 -10
- package/dist/cjs/not-found.cjs.map +1 -1
- package/dist/cjs/not-found.d.cts +5 -5
- package/dist/cjs/renderRouteNotFound.d.cts +1 -1
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +5 -5
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +1 -1
- package/dist/cjs/scroll-restoration.d.cts +1 -1
- package/dist/cjs/ssr/RouterClient.d.cts +1 -1
- package/dist/cjs/ssr/RouterServer.d.cts +1 -1
- package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToStream.d.cts +2 -2
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.d.cts +2 -2
- package/dist/esm/Asset.d.ts +1 -1
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/CatchBoundary.d.ts +4 -3
- package/dist/esm/CatchBoundary.js.map +1 -1
- package/dist/esm/ClientOnly.d.ts +4 -3
- package/dist/esm/ClientOnly.js.map +1 -1
- package/dist/esm/HeadContent.d.ts +1 -1
- package/dist/esm/HeadContent.dev.d.ts +1 -1
- package/dist/esm/Match.d.ts +2 -3
- package/dist/esm/Matches.d.ts +8 -7
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.d.ts +4 -4
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/SafeFragment.d.ts +1 -1
- package/dist/esm/ScriptOnce.d.ts +1 -1
- package/dist/esm/Scripts.d.ts +1 -2
- package/dist/esm/awaited.d.ts +1 -2
- package/dist/esm/link.d.ts +10 -10
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/not-found.d.ts +5 -5
- package/dist/esm/not-found.js.map +1 -1
- package/dist/esm/renderRouteNotFound.d.ts +1 -1
- package/dist/esm/route.d.ts +5 -5
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.d.ts +1 -1
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/scroll-restoration.d.ts +1 -1
- package/dist/esm/ssr/RouterClient.d.ts +1 -1
- package/dist/esm/ssr/RouterServer.d.ts +1 -1
- package/dist/esm/ssr/renderRouterToStream.d.ts +2 -2
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
- package/dist/esm/ssr/renderRouterToString.d.ts +2 -2
- package/dist/esm/ssr/renderRouterToString.js.map +1 -1
- package/dist/source/Asset.d.ts +1 -1
- package/dist/source/CatchBoundary.d.ts +4 -3
- package/dist/source/CatchBoundary.jsx.map +1 -1
- package/dist/source/ClientOnly.d.ts +4 -3
- package/dist/source/ClientOnly.jsx.map +1 -1
- package/dist/source/HeadContent.d.ts +1 -1
- package/dist/source/HeadContent.dev.d.ts +1 -1
- package/dist/source/Match.d.ts +2 -3
- package/dist/source/Matches.d.ts +8 -7
- package/dist/source/Matches.jsx.map +1 -1
- package/dist/source/RouterProvider.d.ts +4 -4
- package/dist/source/RouterProvider.jsx.map +1 -1
- package/dist/source/SafeFragment.d.ts +1 -1
- package/dist/source/ScriptOnce.d.ts +1 -1
- package/dist/source/Scripts.d.ts +1 -2
- package/dist/source/awaited.d.ts +1 -2
- package/dist/source/link.d.ts +10 -10
- package/dist/source/link.jsx.map +1 -1
- package/dist/source/not-found.d.ts +5 -5
- package/dist/source/not-found.jsx.map +1 -1
- package/dist/source/renderRouteNotFound.d.ts +1 -1
- package/dist/source/route.d.ts +5 -5
- package/dist/source/route.jsx.map +1 -1
- package/dist/source/router.d.ts +1 -1
- package/dist/source/scroll-restoration.d.ts +1 -1
- package/dist/source/ssr/RouterClient.d.ts +1 -1
- package/dist/source/ssr/RouterServer.d.ts +1 -1
- package/dist/source/ssr/renderRouterToStream.d.ts +2 -2
- package/dist/source/ssr/renderRouterToString.d.ts +2 -2
- package/package.json +8 -8
- package/src/Asset.tsx +1 -1
- package/src/CatchBoundary.tsx +2 -1
- package/src/ClientOnly.tsx +3 -2
- package/src/Matches.tsx +8 -7
- package/src/RouterProvider.tsx +2 -1
- package/src/link.tsx +16 -20
- package/src/not-found.tsx +3 -2
- package/src/route.tsx +3 -7
- package/src/router.ts +1 -1
- package/src/ssr/renderRouterToStream.tsx +2 -2
- package/src/ssr/renderRouterToString.tsx +2 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AnyRouter, RegisteredRouter, RouterOptions } from '@tanstack/router-core';
|
|
2
|
-
import
|
|
2
|
+
import { JSX } from '@solidjs/web';
|
|
3
3
|
export declare function RouterContextProvider<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>>({ router, children, ...rest }: RouterProps<TRouter, TDehydrated> & {
|
|
4
|
-
children: () =>
|
|
5
|
-
}):
|
|
6
|
-
export declare function RouterProvider<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>>({ router, ...rest }: RouterProps<TRouter, TDehydrated>):
|
|
4
|
+
children: () => JSX.Element;
|
|
5
|
+
}): JSX.Element;
|
|
6
|
+
export declare function RouterProvider<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>>({ router, ...rest }: RouterProps<TRouter, TDehydrated>): JSX.Element;
|
|
7
7
|
export type RouterProps<TRouter extends AnyRouter = RegisteredRouter, TDehydrated extends Record<string, any> = Record<string, any>> = Omit<RouterOptions<TRouter['routeTree'], NonNullable<TRouter['options']['trailingSlash']>, false, TRouter['history'], TDehydrated>, 'context'> & {
|
|
8
8
|
router: TRouter;
|
|
9
9
|
context?: Partial<RouterOptions<TRouter['routeTree'], NonNullable<TRouter['options']['trailingSlash']>, false, TRouter['history'], TDehydrated>['context']>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterProvider.js","names":["Solid","routerContext","SafeFragment","Matches","AnyRouter","RegisteredRouter","RouterOptions","RouterContext","Component","value","children","RouterContextProvider","Record","router","rest","RouterProps","TRouter","TDehydrated","
|
|
1
|
+
{"version":3,"file":"RouterProvider.js","names":["Solid","routerContext","SafeFragment","Matches","AnyRouter","RegisteredRouter","RouterOptions","JSX","RouterContext","Component","value","children","RouterContextProvider","Record","router","rest","RouterProps","TRouter","TDehydrated","Element","Object","keys","length","runWithOwner","update","options","context","OptionalWrapper","Wrap","_$createComponent","RouterProvider","_$mergeProps","Omit","NonNullable","Partial"],"sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { routerContext } from './routerContext'\nimport { SafeFragment } from './SafeFragment'\nimport { Matches } from './Matches'\nimport type {\n AnyRouter,\n RegisteredRouter,\n RouterOptions,\n} from '@tanstack/router-core'\nimport type { JSX } from '@solidjs/web'\n\nconst RouterContext = routerContext as unknown as Solid.Component<{\n value: any\n children: any\n}>\n\nexport function RouterContextProvider<\n TRouter extends AnyRouter = RegisteredRouter,\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({\n router,\n children,\n ...rest\n}: RouterProps<TRouter, TDehydrated> & {\n children: () => JSX.Element\n}) {\n if (Object.keys(rest).length > 0) {\n Solid.runWithOwner(null, () => {\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest.context,\n },\n } as any)\n })\n }\n\n const OptionalWrapper = router.options.Wrap || SafeFragment\n\n return (\n <OptionalWrapper>\n <RouterContext value={router as AnyRouter}>{children()}</RouterContext>\n </OptionalWrapper>\n )\n}\n\nexport function RouterProvider<\n TRouter extends AnyRouter = RegisteredRouter,\n TDehydrated extends Record<string, any> = Record<string, any>,\n>({ router, ...rest }: RouterProps<TRouter, TDehydrated>) {\n return (\n <RouterContextProvider router={router} {...rest}>\n {() => <Matches />}\n </RouterContextProvider>\n )\n}\n\nexport type RouterProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> = Omit<\n RouterOptions<\n TRouter['routeTree'],\n NonNullable<TRouter['options']['trailingSlash']>,\n false,\n TRouter['history'],\n TDehydrated\n >,\n 'context'\n> & {\n router: TRouter\n context?: Partial<\n RouterOptions<\n TRouter['routeTree'],\n NonNullable<TRouter['options']['trailingSlash']>,\n false,\n TRouter['history'],\n TDehydrated\n >['context']\n >\n}\n"],"mappings":";;;;;;AAWA,IAAMQ,gBAAgBP;AAKtB,SAAgBW,sBAGd,EACAE,QACAH,UACA,GAAGI,QAGF;AACD,KAAIK,OAAOC,KAAKN,KAAK,CAACO,SAAS,EAC7BtB,OAAMuB,aAAa,YAAY;AAC7BT,SAAOU,OAAO;GACZ,GAAGV,OAAOW;GACV,GAAGV;GACHW,SAAS;IACP,GAAGZ,OAAOW,QAAQC;IAClB,GAAGX,KAAKW;IACV;GACD,CAAQ;GACT;AAKJ,QAAAG,gBAFwBf,OAAOW,QAAQG,QAAQ1B,cAG7B,EAAA,IAAAS,WAAA;AAAA,SAAAkB,gBACbrB,eAAa;GAACE,OAAOI;GAAmB,IAAAH,WAAA;AAAA,WAAGA,UAAU;;GAAA,CAAA;IAAA,CAAA;;AAK5D,SAAgBmB,eAGd,EAAEhB,QAAQ,GAAGC,QAA2C;AACxD,QAAAc,gBACGjB,uBAAqBmB,WAAA,EAASjB,QAAM,EAAMC,MAAI,EAAAJ,gBAC5CkB,gBAAO1B,SAAO,EAAA,CAAA,EAAG,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function SafeFragment(props: any): import("solid-js").JSX.Element;
|
|
1
|
+
export declare function SafeFragment(props: any): import("solid-js/web").JSX.Element;
|
package/dist/esm/ScriptOnce.d.ts
CHANGED
package/dist/esm/Scripts.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const Scripts: () => Solid.JSX.Element;
|
|
1
|
+
export declare const Scripts: () => import("solid-js/web").JSX.Element;
|
package/dist/esm/awaited.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { DeferredPromise } from '@tanstack/router-core';
|
|
2
2
|
import { SolidNode } from './route.js';
|
|
3
|
-
import * as Solid from 'solid-js';
|
|
4
3
|
export type AwaitOptions<T> = {
|
|
5
4
|
promise: Promise<T>;
|
|
6
5
|
};
|
|
@@ -8,4 +7,4 @@ export declare function useAwaited<T>({ promise: _promise, }: AwaitOptions<T>):
|
|
|
8
7
|
export declare function Await<T>(props: AwaitOptions<T> & {
|
|
9
8
|
fallback?: SolidNode;
|
|
10
9
|
children: (result: T) => SolidNode;
|
|
11
|
-
}):
|
|
10
|
+
}): import("solid-js/web").JSX.Element;
|
package/dist/esm/link.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AnyRouter, Constrain, LinkOptions, RegisteredRouter, RoutePaths } from '@tanstack/router-core';
|
|
2
2
|
import { ValidateLinkOptions, ValidateLinkOptionsArray } from './typePrimitives.js';
|
|
3
|
-
import
|
|
4
|
-
export declare function useLinkProps<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = ''>(options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>):
|
|
5
|
-
export type UseLinkPropsOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TTo extends string | undefined = '.', TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = '.'> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & Omit<
|
|
6
|
-
style?:
|
|
3
|
+
import { ComponentProps, JSX, ValidComponent } from '@solidjs/web';
|
|
4
|
+
export declare function useLinkProps<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TTo extends string = '', TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = ''>(options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): ComponentProps<'a'>;
|
|
5
|
+
export type UseLinkPropsOptions<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> | string = string, TTo extends string | undefined = '.', TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom, TMaskTo extends string = '.'> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & Omit<ComponentProps<'a'>, 'style'> & {
|
|
6
|
+
style?: JSX.CSSProperties;
|
|
7
7
|
};
|
|
8
8
|
export type ActiveLinkOptions<TComp = 'a', TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, TMaskTo extends string = '.'> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & ActiveLinkOptionProps<TComp>;
|
|
9
9
|
type ActiveLinkProps<TComp> = Partial<LinkComponentSolidProps<TComp> & {
|
|
@@ -23,20 +23,20 @@ export interface ActiveLinkOptionProps<TComp = 'a'> {
|
|
|
23
23
|
}
|
|
24
24
|
export type LinkProps<TComp = 'a', TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, TMaskTo extends string = '.'> = ActiveLinkOptions<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo> & LinkPropsChildren;
|
|
25
25
|
export interface LinkPropsChildren {
|
|
26
|
-
children?:
|
|
26
|
+
children?: JSX.Element | ((state: {
|
|
27
27
|
isActive: boolean;
|
|
28
28
|
isTransitioning: boolean;
|
|
29
|
-
}) =>
|
|
29
|
+
}) => JSX.Element);
|
|
30
30
|
}
|
|
31
|
-
type LinkComponentSolidProps<TComp> = TComp extends
|
|
31
|
+
type LinkComponentSolidProps<TComp> = TComp extends ValidComponent ? Omit<ComponentProps<TComp>, keyof CreateLinkProps> : never;
|
|
32
32
|
export type LinkComponentProps<TComp = 'a', TRouter extends AnyRouter = RegisteredRouter, TFrom extends string = string, TTo extends string | undefined = '.', TMaskFrom extends string = TFrom, TMaskTo extends string = '.'> = LinkComponentSolidProps<TComp> & LinkProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>;
|
|
33
33
|
export type CreateLinkProps = LinkProps<any, any, string, string, string, string>;
|
|
34
|
-
export type LinkComponent<in out TComp, in out TDefaultFrom extends string = string> = <TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string = TDefaultFrom, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) =>
|
|
34
|
+
export type LinkComponent<in out TComp, in out TDefaultFrom extends string = string> = <TRouter extends AnyRouter = RegisteredRouter, const TFrom extends string = TDefaultFrom, const TTo extends string | undefined = undefined, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>) => JSX.Element;
|
|
35
35
|
export interface LinkComponentRoute<in out TDefaultFrom extends string = string> {
|
|
36
36
|
defaultFrom: TDefaultFrom;
|
|
37
|
-
<TRouter extends AnyRouter = RegisteredRouter, const TTo extends string | undefined = undefined, const TMaskTo extends string = ''>(props: LinkComponentProps<'a', TRouter, this['defaultFrom'], TTo, this['defaultFrom'], TMaskTo>):
|
|
37
|
+
<TRouter extends AnyRouter = RegisteredRouter, const TTo extends string | undefined = undefined, const TMaskTo extends string = ''>(props: LinkComponentProps<'a', TRouter, this['defaultFrom'], TTo, this['defaultFrom'], TMaskTo>): JSX.Element;
|
|
38
38
|
}
|
|
39
|
-
export declare function createLink<const TComp>(Comp: Constrain<TComp, any, (props: CreateLinkProps) =>
|
|
39
|
+
export declare function createLink<const TComp>(Comp: Constrain<TComp, any, (props: CreateLinkProps) => JSX.Element>): LinkComponent<TComp>;
|
|
40
40
|
export declare const Link: LinkComponent<'a'>;
|
|
41
41
|
export type LinkOptionsFnOptions<TOptions, TComp, TRouter extends AnyRouter = RegisteredRouter> = TOptions extends ReadonlyArray<any> ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp> : ValidateLinkOptions<TRouter, TOptions, string, TComp>;
|
|
42
42
|
export type LinkOptionsFn<TComp> = <const TOptions, TRouter extends AnyRouter = RegisteredRouter>(options: LinkOptionsFnOptions<TOptions, TComp, TRouter>) => TOptions;
|
package/dist/esm/link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","names":["Solid","deepEqual","exactPathTest","functionalUpdate","isDangerousProtocol","preloadWarning","removeTrailingSlash","isServer","Dynamic","useRouter","useIntersectionObserver","useHydrated","AnyRouter","Constrain","LinkOptions","RegisteredRouter","RoutePaths","ValidateLinkOptions","ValidateLinkOptionsArray","mergeRefs","refs","Array","el","T","ref","splitProps","Record","props","keys","ReadonlyArray","TKey","Pick","Omit","_local","_rest","omit","timeoutMap","WeakMap","EventTarget","ReturnType","setTimeout","useLinkProps","TRouter","TFrom","options","UseLinkPropsOptions","TTo","TMaskFrom","TMaskTo","ComponentProps","router","isTransitioning","setIsTransitioning","createSignal","shouldHydrateHash","ssr","hasHydrated","hasRenderFetched","local","rest","merge","activeProps","STATIC_ACTIVE_PROPS_GET","inactiveProps","STATIC_INACTIVE_PROPS_GET","_","propsSafeToSpread","currentLocation","createMemo","stores","location","state","equals","prev","next","href","_options","_fromLocation","untrack","buildLocation","hrefOption","disabled","undefined","maskedLocation","publicHref","external","history","createHref","externalLink","_href","protocolAllowlist","process","env","NODE_ENV","console","warn","to","safeInternal","isSafeInternal","indexOf","URL","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","current","nextLocation","exact","testExact","pathname","basepath","currentPath","nextPath","pathIsFuzzyEqual","startsWith","length","includeSearch","searchTest","search","partial","ignoreUndefined","explicitUndefined","includeHash","currentHash","hash","doPreload","preloadRoute","_builtLocation","catch","err","preloadViewportIoCallback","entry","IntersectionObserverEntry","isIntersecting","setRefSignal","Element","setRef","runWithOwner","rootMargin","createEffect","preloadValue","externalHref","handleClick","e","MouseEvent","elementTarget","currentTarget","HTMLAnchorElement","SVGAElement","getAttribute","effectiveTarget","target","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","enqueueIntentPreload","FocusEvent","eventTarget","has","set","delete","handleTouchStart","TouchEvent","handleLeave","id","get","clearTimeout","simpleStyling","class","style","onClick","createComposedHandler","onBlur","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","ResolvedLinkStateProps","JSX","CSSProperties","resolvedProps","active","base","STATIC_DISABLED_PROPS","STATIC_TRANSITIONING_ATTRIBUTES","STATIC_DEFAULT_ACTIVE_ATTRIBUTES","EMPTY_OBJECT","className","filter","Boolean","join","Object","STATIC_ACTIVE_ATTRIBUTES","STATIC_ACTIVE_PROPS","role","callHandler","Event","event","TEvent","handler","EventHandlerUnion","getHandler","fallback","ActiveLinkOptions","ActiveLinkOptionProps","TComp","ActiveLinkProps","Partial","LinkComponentSolidProps","key","LinkProps","LinkPropsChildren","children","ValidComponent","CreateLinkProps","LinkComponentProps","LinkComponent","TDefaultFrom","LinkComponentRoute","defaultFrom","createLink","Comp","_$createComponent","Link","_$mergeProps","_asChild","linkProps","resolvedChildren","ch","Function","svgLinkProps","_el$","_tmpl$","_el$2","firstChild","_$spread","_$insert","_el$3","_tmpl$2","component","metaKey","altKey","ctrlKey","shiftKey","zero","charCodeAt","LinkOptionsFnOptions","TOptions","LinkOptionsFn","linkOptions"],"sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n isDangerousProtocol,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\n\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Dynamic } from '@solidjs/web'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport { useHydrated } from './ClientOnly'\nimport type {\n AnyRouter,\n Constrain,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\nfunction mergeRefs<T>(\n ...refs: Array<((el: T) => void) | undefined>\n): (el: T) => void {\n return (el: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(el)\n }\n }\n }\n}\n\nfunction splitProps<T extends Record<string, any>, TKey extends keyof T>(\n props: T,\n keys: ReadonlyArray<TKey>,\n): [Pick<T, TKey>, Omit<T, TKey>] {\n const _local = {} as Pick<T, TKey>\n const _rest = {} as Omit<T, TKey>\n\n // A safe way to polyfill splitProps if native getter copy is too complex\n // is just to return [props, Solid.omit(props, keys)] but it modifies typing.\n // Actually, Solid.omit exists!\n // Note: Solid.omit uses rest params (...keys), so we must spread the array.\n return [props as any, Solid.omit(props, ...(keys as any)) as any]\n}\nconst timeoutMap = new WeakMap<EventTarget, ReturnType<typeof setTimeout>>()\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 const shouldHydrateHash = !isServer && !!router.options.ssr\n const hasHydrated = useHydrated()\n\n let hasRenderFetched = false\n\n const [local, rest] = splitProps(\n Solid.merge(\n {\n activeProps: STATIC_ACTIVE_PROPS_GET,\n inactiveProps: STATIC_INACTIVE_PROPS_GET,\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 'onBlur',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n ],\n )\n\n const [_, propsSafeToSpread] = splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'unsafeRelative',\n ] as any)\n\n const currentLocation = Solid.createMemo(() => router.stores.location.state, {\n equals: (prev, next) => prev?.href === next?.href,\n })\n\n const _options = () => options\n\n const next = Solid.createMemo(() => {\n // Rebuild when inherited search/hash or the current route context changes.\n const _fromLocation = currentLocation()\n const options = { _fromLocation, ..._options() } as any\n // untrack because router-core will also access stores, which are signals in solid\n return Solid.untrack(() => router.buildLocation(options))\n })\n\n const hrefOption = Solid.createMemo(() => {\n if (_options().disabled) return undefined\n // Use publicHref - it contains the correct href for display\n // When a rewrite changes the origin, publicHref is the full URL\n // Otherwise it's the origin-stripped path\n // This avoids constructing URL objects in the hot path\n const location = next().maskedLocation ?? next()\n const publicHref = location.publicHref\n const external = location.external\n\n if (external) {\n return { href: publicHref, external: true }\n }\n\n return {\n href: router.history.createHref(publicHref) || '/',\n external: false,\n }\n })\n\n const externalLink = Solid.createMemo(() => {\n const _href = hrefOption()\n if (_href?.external) {\n // Block dangerous protocols for external links\n if (isDangerousProtocol(_href.href, router.protocolAllowlist)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Blocked Link with dangerous protocol: ${_href.href}`)\n }\n return undefined\n }\n return _href.href\n }\n const to = _options().to\n const safeInternal = isSafeInternal(to)\n if (safeInternal) return undefined\n if (typeof to !== 'string' || to.indexOf(':') === -1) return undefined\n try {\n new URL(to as any)\n // Block dangerous protocols like javascript:, blob:, data:\n if (isDangerousProtocol(to, router.protocolAllowlist)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Blocked Link with dangerous protocol: ${to}`)\n }\n return undefined\n }\n return to\n } catch {}\n return undefined\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument || externalLink()) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = Solid.createMemo(() => {\n if (externalLink()) return false\n const activeOptions = local.activeOptions\n const current = currentLocation()\n const nextLocation = next()\n\n if (activeOptions?.exact) {\n const testExact = exactPathTest(\n current.pathname,\n nextLocation.pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPath = removeTrailingSlash(current.pathname, router.basepath)\n const nextPath = removeTrailingSlash(\n nextLocation.pathname,\n router.basepath,\n )\n\n const pathIsFuzzyEqual =\n currentPath.startsWith(nextPath) &&\n (currentPath.length === nextPath.length ||\n currentPath[nextPath.length] === '/')\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(current.search, nextLocation.search, {\n partial: !activeOptions?.exact,\n ignoreUndefined: !activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (activeOptions?.includeHash) {\n const currentHash =\n shouldHydrateHash && !hasHydrated() ? '' : current.hash\n return currentHash === nextLocation.hash\n }\n return true\n })\n\n const doPreload = () =>\n router\n .preloadRoute({ ..._options(), _builtLocation: next() } as any)\n .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, setRefSignal] = Solid.createSignal<Element | null>(null)\n\n const setRef = (el: Element | null) => {\n Solid.runWithOwner(null, () => {\n setRefSignal(el)\n })\n }\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(Solid.untrack(preload) === 'viewport') },\n )\n\n Solid.createEffect(preload, (preloadValue) => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preloadValue === 'render') {\n Solid.untrack(() => doPreload())\n hasRenderFetched = true\n }\n })\n\n if (Solid.untrack(externalLink)) {\n const externalHref = Solid.untrack(externalLink)\n return Solid.merge(\n propsSafeToSpread,\n {\n // ref: mergeRefs(setRef, _options().ref),\n href: externalHref,\n },\n splitProps(local, [\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onBlur',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n // Check actual element's target attribute as fallback\n const elementTarget = (\n e.currentTarget as HTMLAnchorElement | SVGAElement\n ).getAttribute('target')\n const effectiveTarget =\n local.target !== undefined ? local.target : elementTarget\n\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n Solid.runWithOwner(null, () => {\n setIsTransitioning(true)\n })\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n Solid.runWithOwner(null, () => {\n setIsTransitioning(false)\n })\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 const enqueueIntentPreload = (e: MouseEvent | FocusEvent) => {\n if (local.disabled || preload() !== 'intent') return\n\n if (!preloadDelay()) {\n doPreload()\n return\n }\n\n const eventTarget = e.currentTarget || e.target\n\n if (!eventTarget || timeoutMap.has(eventTarget)) return\n\n timeoutMap.set(\n eventTarget,\n setTimeout(() => {\n timeoutMap.delete(eventTarget)\n doPreload()\n }, preloadDelay()),\n )\n }\n\n const handleTouchStart = (_: TouchEvent) => {\n if (local.disabled || preload() !== 'intent') return\n doPreload()\n }\n\n const handleLeave = (e: MouseEvent | FocusEvent) => {\n if (local.disabled) return\n const eventTarget = e.currentTarget || e.target\n\n if (eventTarget) {\n const id = timeoutMap.get(eventTarget)\n clearTimeout(id)\n timeoutMap.delete(eventTarget)\n }\n }\n\n const simpleStyling = Solid.createMemo(\n () =>\n local.activeProps === STATIC_ACTIVE_PROPS_GET &&\n local.inactiveProps === STATIC_INACTIVE_PROPS_GET &&\n local.class === undefined &&\n local.style === undefined,\n )\n\n const onClick = createComposedHandler(() => local.onClick, handleClick)\n const onBlur = createComposedHandler(() => local.onBlur, handleLeave)\n const onFocus = createComposedHandler(\n () => local.onFocus,\n enqueueIntentPreload,\n )\n const onMouseEnter = createComposedHandler(\n () => local.onMouseEnter,\n enqueueIntentPreload,\n )\n const onMouseOver = createComposedHandler(\n () => local.onMouseOver,\n enqueueIntentPreload,\n )\n const onMouseLeave = createComposedHandler(\n () => local.onMouseLeave,\n handleLeave,\n )\n const onMouseOut = createComposedHandler(() => local.onMouseOut, handleLeave)\n const onTouchStart = createComposedHandler(\n () => local.onTouchStart,\n handleTouchStart,\n )\n\n type ResolvedLinkStateProps = Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n }\n\n const resolvedProps = Solid.createMemo(() => {\n const active = isActive()\n\n const base = {\n href: hrefOption()?.href,\n ref: mergeRefs(setRef, _options().ref as any),\n onClick,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onMouseOut,\n onTouchStart,\n disabled: !!local.disabled,\n target: local.target,\n ...(local.disabled && STATIC_DISABLED_PROPS),\n ...(isTransitioning() && STATIC_TRANSITIONING_ATTRIBUTES),\n }\n\n if (simpleStyling()) {\n return {\n ...base,\n ...(active && STATIC_DEFAULT_ACTIVE_ATTRIBUTES),\n }\n }\n\n const activeProps: ResolvedLinkStateProps = active\n ? (functionalUpdate(local.activeProps as any, {}) ?? EMPTY_OBJECT)\n : EMPTY_OBJECT\n const inactiveProps: ResolvedLinkStateProps = active\n ? EMPTY_OBJECT\n : functionalUpdate(local.inactiveProps, {})\n const style = {\n ...local.style,\n ...activeProps.style,\n ...inactiveProps.style,\n }\n const className = [local.class, activeProps.class, inactiveProps.class]\n .filter(Boolean)\n .join(' ')\n\n return {\n ...activeProps,\n ...inactiveProps,\n ...base,\n ...(Object.keys(style).length ? { style } : undefined),\n ...(className ? { class: className } : undefined),\n ...(active && STATIC_ACTIVE_ATTRIBUTES),\n } as ResolvedLinkStateProps\n })\n\n return Solid.merge(propsSafeToSpread, resolvedProps) as any\n}\n\nconst STATIC_ACTIVE_PROPS = { class: 'active' }\nconst STATIC_ACTIVE_PROPS_GET = () => STATIC_ACTIVE_PROPS\nconst EMPTY_OBJECT = {}\nconst STATIC_INACTIVE_PROPS_GET = () => EMPTY_OBJECT\nconst STATIC_DEFAULT_ACTIVE_ATTRIBUTES = {\n class: 'active',\n 'data-status': 'active',\n 'aria-current': 'page',\n}\nconst STATIC_DISABLED_PROPS = {\n role: 'link',\n 'aria-disabled': 'true',\n}\nconst STATIC_ACTIVE_ATTRIBUTES = {\n 'data-status': 'active',\n 'aria-current': 'page',\n}\nconst STATIC_TRANSITIONING_ATTRIBUTES = {\n 'data-transitioning': 'transitioning',\n}\n\n/** Call a JSX.EventHandlerUnion with the event. */\nfunction callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent>,\n) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n return event.defaultPrevented\n}\n\nfunction createComposedHandler<T, TEvent extends Event>(\n getHandler: () => Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n fallback: (event: TEvent) => void,\n) {\n return (event: TEvent & { currentTarget: T; target: Element }) => {\n const handler = getHandler()\n if (!handler || !callHandler(event, handler)) fallback(event)\n }\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] = splitProps(props as typeof props & { _asChild: any }, [\n '_asChild',\n 'children',\n ])\n\n const [_, linkProps] = splitProps(useLinkProps(rest as unknown as any), [\n 'type',\n ])\n\n // Resolve children once using Solid.children to avoid\n // re-accessing the children getter (which in Solid 2.0 would\n // re-invoke createComponent each time for JSX children).\n const resolvedChildren = Solid.children(\n () => local.children as Solid.JSX.Element,\n )\n\n const children = () => {\n const ch = resolvedChildren()\n if (typeof ch === 'function') {\n return (ch as Function)({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n get isTransitioning() {\n return (linkProps as any)['data-transitioning'] === 'transitioning'\n },\n })\n }\n\n return ch\n }\n\n if (local._asChild === 'svg') {\n const [_, svgLinkProps] = splitProps(linkProps as any, ['class'])\n return (\n <svg>\n <a {...svgLinkProps}>{children()}</a>\n </svg>\n )\n }\n\n if (!local._asChild) {\n return <a {...linkProps}>{children()}</a>\n }\n\n return (\n <Dynamic component={local._asChild as Solid.ValidComponent} {...linkProps}>\n {children()}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction isSafeInternal(to: unknown) {\n if (typeof to !== 'string') return false\n const zero = to.charCodeAt(0)\n if (zero === 47) return to.charCodeAt(1) !== 47 // '/' but not '//'\n return zero === 46 // '.', '..', './', '../'\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link.js","names":["Solid","deepEqual","exactPathTest","functionalUpdate","isDangerousProtocol","preloadWarning","removeTrailingSlash","isServer","Dynamic","useRouter","useIntersectionObserver","useHydrated","AnyRouter","Constrain","LinkOptions","RegisteredRouter","RoutePaths","ValidateLinkOptions","ValidateLinkOptionsArray","ComponentProps","JSX","ValidComponent","mergeRefs","refs","Array","el","T","ref","splitProps","Record","props","keys","ReadonlyArray","TKey","Pick","Omit","_local","_rest","omit","timeoutMap","WeakMap","EventTarget","ReturnType","setTimeout","useLinkProps","TRouter","TFrom","options","UseLinkPropsOptions","TTo","TMaskFrom","TMaskTo","router","isTransitioning","setIsTransitioning","createSignal","shouldHydrateHash","ssr","hasHydrated","hasRenderFetched","local","rest","merge","activeProps","STATIC_ACTIVE_PROPS_GET","inactiveProps","STATIC_INACTIVE_PROPS_GET","_","propsSafeToSpread","currentLocation","createMemo","stores","location","state","equals","prev","next","href","_options","_fromLocation","untrack","buildLocation","hrefOption","disabled","undefined","maskedLocation","publicHref","external","history","createHref","externalLink","_href","protocolAllowlist","process","env","NODE_ENV","console","warn","to","safeInternal","isSafeInternal","indexOf","URL","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","current","nextLocation","exact","testExact","pathname","basepath","currentPath","nextPath","pathIsFuzzyEqual","startsWith","length","includeSearch","searchTest","search","partial","ignoreUndefined","explicitUndefined","includeHash","currentHash","hash","doPreload","preloadRoute","_builtLocation","catch","err","preloadViewportIoCallback","entry","IntersectionObserverEntry","isIntersecting","setRefSignal","Element","setRef","runWithOwner","rootMargin","createEffect","preloadValue","externalHref","handleClick","e","MouseEvent","elementTarget","currentTarget","HTMLAnchorElement","SVGAElement","getAttribute","effectiveTarget","target","isCtrlEvent","defaultPrevented","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","enqueueIntentPreload","FocusEvent","eventTarget","has","set","delete","handleTouchStart","TouchEvent","handleLeave","id","get","clearTimeout","simpleStyling","class","style","onClick","createComposedHandler","onBlur","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","ResolvedLinkStateProps","CSSProperties","resolvedProps","active","base","STATIC_DISABLED_PROPS","STATIC_TRANSITIONING_ATTRIBUTES","STATIC_DEFAULT_ACTIVE_ATTRIBUTES","EMPTY_OBJECT","className","filter","Boolean","join","Object","STATIC_ACTIVE_ATTRIBUTES","STATIC_ACTIVE_PROPS","role","callHandler","Event","event","TEvent","handler","EventHandlerUnion","getHandler","fallback","ActiveLinkOptions","ActiveLinkOptionProps","TComp","ActiveLinkProps","Partial","LinkComponentSolidProps","key","LinkProps","LinkPropsChildren","children","CreateLinkProps","LinkComponentProps","LinkComponent","TDefaultFrom","LinkComponentRoute","defaultFrom","createLink","Comp","_$createComponent","Link","_$mergeProps","_asChild","linkProps","resolvedChildren","ch","Function","svgLinkProps","_el$","_tmpl$","_el$2","firstChild","_$spread","_$insert","_el$3","_tmpl$2","component","metaKey","altKey","ctrlKey","shiftKey","zero","charCodeAt","LinkOptionsFnOptions","TOptions","LinkOptionsFn","linkOptions"],"sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n isDangerousProtocol,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\n\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Dynamic } from '@solidjs/web'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport { useHydrated } from './ClientOnly'\nimport type {\n AnyRouter,\n Constrain,\n LinkOptions,\n RegisteredRouter,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\nimport type { ComponentProps, JSX, ValidComponent } from '@solidjs/web'\n\nfunction mergeRefs<T>(\n ...refs: Array<((el: T) => void) | undefined>\n): (el: T) => void {\n return (el: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(el)\n }\n }\n }\n}\n\nfunction splitProps<T extends Record<string, any>, TKey extends keyof T>(\n props: T,\n keys: ReadonlyArray<TKey>,\n): [Pick<T, TKey>, Omit<T, TKey>] {\n const _local = {} as Pick<T, TKey>\n const _rest = {} as Omit<T, TKey>\n\n // A safe way to polyfill splitProps if native getter copy is too complex\n // is just to return [props, Solid.omit(props, keys)] but it modifies typing.\n // Actually, Solid.omit exists!\n // Note: Solid.omit uses rest params (...keys), so we must spread the array.\n return [props as any, Solid.omit(props, ...(keys as any)) as any]\n}\nconst timeoutMap = new WeakMap<EventTarget, ReturnType<typeof setTimeout>>()\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): ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n const shouldHydrateHash = !isServer && !!router.options.ssr\n const hasHydrated = useHydrated()\n\n let hasRenderFetched = false\n\n const [local, rest] = splitProps(\n Solid.merge(\n {\n activeProps: STATIC_ACTIVE_PROPS_GET,\n inactiveProps: STATIC_INACTIVE_PROPS_GET,\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 'onBlur',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n ],\n )\n\n const [_, propsSafeToSpread] = splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n 'unsafeRelative',\n ] as any)\n\n const currentLocation = Solid.createMemo(() => router.stores.location.state, {\n equals: (prev, next) => prev?.href === next?.href,\n })\n\n const _options = () => options\n\n const next = Solid.createMemo(() => {\n // Rebuild when inherited search/hash or the current route context changes.\n const _fromLocation = currentLocation()\n const options = { _fromLocation, ..._options() } as any\n // untrack because router-core will also access stores, which are signals in solid\n return Solid.untrack(() => router.buildLocation(options))\n })\n\n const hrefOption = Solid.createMemo(() => {\n if (_options().disabled) return undefined\n // Use publicHref - it contains the correct href for display\n // When a rewrite changes the origin, publicHref is the full URL\n // Otherwise it's the origin-stripped path\n // This avoids constructing URL objects in the hot path\n const location = next().maskedLocation ?? next()\n const publicHref = location.publicHref\n const external = location.external\n\n if (external) {\n return { href: publicHref, external: true }\n }\n\n return {\n href: router.history.createHref(publicHref) || '/',\n external: false,\n }\n })\n\n const externalLink = Solid.createMemo(() => {\n const _href = hrefOption()\n if (_href?.external) {\n // Block dangerous protocols for external links\n if (isDangerousProtocol(_href.href, router.protocolAllowlist)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Blocked Link with dangerous protocol: ${_href.href}`)\n }\n return undefined\n }\n return _href.href\n }\n const to = _options().to\n const safeInternal = isSafeInternal(to)\n if (safeInternal) return undefined\n if (typeof to !== 'string' || to.indexOf(':') === -1) return undefined\n try {\n new URL(to as any)\n // Block dangerous protocols like javascript:, blob:, data:\n if (isDangerousProtocol(to, router.protocolAllowlist)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Blocked Link with dangerous protocol: ${to}`)\n }\n return undefined\n }\n return to\n } catch {}\n return undefined\n })\n\n const preload = Solid.createMemo(() => {\n if (_options().reloadDocument || externalLink()) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = Solid.createMemo(() => {\n if (externalLink()) return false\n const activeOptions = local.activeOptions\n const current = currentLocation()\n const nextLocation = next()\n\n if (activeOptions?.exact) {\n const testExact = exactPathTest(\n current.pathname,\n nextLocation.pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPath = removeTrailingSlash(current.pathname, router.basepath)\n const nextPath = removeTrailingSlash(\n nextLocation.pathname,\n router.basepath,\n )\n\n const pathIsFuzzyEqual =\n currentPath.startsWith(nextPath) &&\n (currentPath.length === nextPath.length ||\n currentPath[nextPath.length] === '/')\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(current.search, nextLocation.search, {\n partial: !activeOptions?.exact,\n ignoreUndefined: !activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (activeOptions?.includeHash) {\n const currentHash =\n shouldHydrateHash && !hasHydrated() ? '' : current.hash\n return currentHash === nextLocation.hash\n }\n return true\n })\n\n const doPreload = () =>\n router\n .preloadRoute({ ..._options(), _builtLocation: next() } as any)\n .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, setRefSignal] = Solid.createSignal<Element | null>(null)\n\n const setRef = (el: Element | null) => {\n Solid.runWithOwner(null, () => {\n setRefSignal(el)\n })\n }\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(Solid.untrack(preload) === 'viewport') },\n )\n\n Solid.createEffect(preload, (preloadValue) => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preloadValue === 'render') {\n Solid.untrack(() => doPreload())\n hasRenderFetched = true\n }\n })\n\n if (Solid.untrack(externalLink)) {\n const externalHref = Solid.untrack(externalLink)\n return Solid.merge(\n propsSafeToSpread,\n {\n // ref: mergeRefs(setRef, _options().ref),\n href: externalHref,\n },\n splitProps(local, [\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onBlur',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n // Check actual element's target attribute as fallback\n const elementTarget = (\n e.currentTarget as HTMLAnchorElement | SVGAElement\n ).getAttribute('target')\n const effectiveTarget =\n local.target !== undefined ? local.target : elementTarget\n\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!effectiveTarget || effectiveTarget === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n Solid.runWithOwner(null, () => {\n setIsTransitioning(true)\n })\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n Solid.runWithOwner(null, () => {\n setIsTransitioning(false)\n })\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 const enqueueIntentPreload = (e: MouseEvent | FocusEvent) => {\n if (local.disabled || preload() !== 'intent') return\n\n if (!preloadDelay()) {\n doPreload()\n return\n }\n\n const eventTarget = e.currentTarget || e.target\n\n if (!eventTarget || timeoutMap.has(eventTarget)) return\n\n timeoutMap.set(\n eventTarget,\n setTimeout(() => {\n timeoutMap.delete(eventTarget)\n doPreload()\n }, preloadDelay()),\n )\n }\n\n const handleTouchStart = (_: TouchEvent) => {\n if (local.disabled || preload() !== 'intent') return\n doPreload()\n }\n\n const handleLeave = (e: MouseEvent | FocusEvent) => {\n if (local.disabled) return\n const eventTarget = e.currentTarget || e.target\n\n if (eventTarget) {\n const id = timeoutMap.get(eventTarget)\n clearTimeout(id)\n timeoutMap.delete(eventTarget)\n }\n }\n\n const simpleStyling = Solid.createMemo(\n () =>\n local.activeProps === STATIC_ACTIVE_PROPS_GET &&\n local.inactiveProps === STATIC_INACTIVE_PROPS_GET &&\n local.class === undefined &&\n local.style === undefined,\n )\n\n const onClick = createComposedHandler(() => local.onClick, handleClick)\n const onBlur = createComposedHandler(() => local.onBlur, handleLeave)\n const onFocus = createComposedHandler(\n () => local.onFocus,\n enqueueIntentPreload,\n )\n const onMouseEnter = createComposedHandler(\n () => local.onMouseEnter,\n enqueueIntentPreload,\n )\n const onMouseOver = createComposedHandler(\n () => local.onMouseOver,\n enqueueIntentPreload,\n )\n const onMouseLeave = createComposedHandler(\n () => local.onMouseLeave,\n handleLeave,\n )\n const onMouseOut = createComposedHandler(() => local.onMouseOut, handleLeave)\n const onTouchStart = createComposedHandler(\n () => local.onTouchStart,\n handleTouchStart,\n )\n\n type ResolvedLinkStateProps = Omit<ComponentProps<'a'>, 'style'> & {\n style?: JSX.CSSProperties\n }\n\n const resolvedProps = Solid.createMemo(() => {\n const active = isActive()\n\n const base = {\n href: hrefOption()?.href,\n ref: mergeRefs(setRef, _options().ref as any),\n onClick,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseOver,\n onMouseLeave,\n onMouseOut,\n onTouchStart,\n disabled: !!local.disabled,\n target: local.target,\n ...(local.disabled && STATIC_DISABLED_PROPS),\n ...(isTransitioning() && STATIC_TRANSITIONING_ATTRIBUTES),\n }\n\n if (simpleStyling()) {\n return {\n ...base,\n ...(active && STATIC_DEFAULT_ACTIVE_ATTRIBUTES),\n }\n }\n\n const activeProps: ResolvedLinkStateProps = active\n ? (functionalUpdate(local.activeProps as any, {}) ?? EMPTY_OBJECT)\n : EMPTY_OBJECT\n const inactiveProps: ResolvedLinkStateProps = active\n ? EMPTY_OBJECT\n : functionalUpdate(local.inactiveProps, {})\n const style = {\n ...local.style,\n ...activeProps.style,\n ...inactiveProps.style,\n }\n const className = [local.class, activeProps.class, inactiveProps.class]\n .filter(Boolean)\n .join(' ')\n\n return {\n ...activeProps,\n ...inactiveProps,\n ...base,\n ...(Object.keys(style).length ? { style } : undefined),\n ...(className ? { class: className } : undefined),\n ...(active && STATIC_ACTIVE_ATTRIBUTES),\n } as ResolvedLinkStateProps\n })\n\n return Solid.merge(propsSafeToSpread, resolvedProps) as any\n}\n\nconst STATIC_ACTIVE_PROPS = { class: 'active' }\nconst STATIC_ACTIVE_PROPS_GET = () => STATIC_ACTIVE_PROPS\nconst EMPTY_OBJECT = {}\nconst STATIC_INACTIVE_PROPS_GET = () => EMPTY_OBJECT\nconst STATIC_DEFAULT_ACTIVE_ATTRIBUTES = {\n class: 'active',\n 'data-status': 'active',\n 'aria-current': 'page',\n}\nconst STATIC_DISABLED_PROPS = {\n role: 'link',\n 'aria-disabled': 'true',\n}\nconst STATIC_ACTIVE_ATTRIBUTES = {\n 'data-status': 'active',\n 'aria-current': 'page',\n}\nconst STATIC_TRANSITIONING_ATTRIBUTES = {\n 'data-transitioning': 'transitioning',\n}\n\n/** Call a JSX.EventHandlerUnion with the event. */\nfunction callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: JSX.EventHandlerUnion<T, TEvent>,\n) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n return event.defaultPrevented\n}\n\nfunction createComposedHandler<T, TEvent extends Event>(\n getHandler: () => JSX.EventHandlerUnion<T, TEvent> | undefined,\n fallback: (event: TEvent) => void,\n) {\n return (event: TEvent & { currentTarget: T; target: Element }) => {\n const handler = getHandler()\n if (!handler || !callHandler(event, handler)) fallback(event)\n }\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<ComponentProps<'a'>, 'style'> & { style?: 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 | JSX.Element\n | ((state: { isActive: boolean; isTransitioning: boolean }) => JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends ValidComponent\n ? Omit<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) => 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 ): JSX.Element\n}\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...props} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props) => {\n const [local, rest] = splitProps(props as typeof props & { _asChild: any }, [\n '_asChild',\n 'children',\n ])\n\n const [_, linkProps] = splitProps(useLinkProps(rest as unknown as any), [\n 'type',\n ])\n\n // Resolve children once using Solid.children to avoid\n // re-accessing the children getter (which in Solid 2.0 would\n // re-invoke createComponent each time for JSX children).\n const resolvedChildren = Solid.children(() => local.children as JSX.Element)\n\n const children = () => {\n const ch = resolvedChildren()\n if (typeof ch === 'function') {\n return (ch as Function)({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n get isTransitioning() {\n return (linkProps as any)['data-transitioning'] === 'transitioning'\n },\n })\n }\n\n return ch\n }\n\n if (local._asChild === 'svg') {\n const [_, svgLinkProps] = splitProps(linkProps as any, ['class'])\n return (\n <svg>\n <a {...svgLinkProps}>{children()}</a>\n </svg>\n )\n }\n\n if (!local._asChild) {\n return <a {...linkProps}>{children()}</a>\n }\n\n return (\n <Dynamic component={local._asChild as ValidComponent} {...linkProps}>\n {children()}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction isSafeInternal(to: unknown) {\n if (typeof to !== 'string') return false\n const zero = to.charCodeAt(0)\n if (zero === 47) return to.charCodeAt(1) !== 47 // '/' but not '//'\n return zero === 46 // '.', '..', './', '../'\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"],"mappings":"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"}
|
package/dist/esm/not-found.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { NotFoundError } from '@tanstack/router-core';
|
|
2
|
-
import
|
|
2
|
+
import { JSX } from '@solidjs/web';
|
|
3
3
|
export declare function getNotFound(error: unknown): (NotFoundError & {
|
|
4
4
|
isNotFound: true;
|
|
5
5
|
}) | undefined;
|
|
6
6
|
export declare function CatchNotFound(props: {
|
|
7
|
-
fallback?: (error: NotFoundError) =>
|
|
7
|
+
fallback?: (error: NotFoundError) => JSX.Element;
|
|
8
8
|
onCatch?: (error: NotFoundError) => void;
|
|
9
|
-
children:
|
|
10
|
-
}):
|
|
11
|
-
export declare function DefaultGlobalNotFound():
|
|
9
|
+
children: JSX.Element;
|
|
10
|
+
}): JSX.Element;
|
|
11
|
+
export declare function DefaultGlobalNotFound(): JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"not-found.js","names":["isNotFound","Solid","CatchBoundary","useRouter","NotFoundError","getNotFound","error","cause","undefined","CatchNotFound","props","fallback","
|
|
1
|
+
{"version":3,"file":"not-found.js","names":["isNotFound","Solid","CatchBoundary","useRouter","NotFoundError","JSX","getNotFound","error","cause","undefined","CatchNotFound","props","fallback","Element","onCatch","children","router","pathname","createMemo","stores","location","state","status","_$createComponent","getResetKey","notFoundError","errorComponent","DefaultGlobalNotFound","_tmpl$"],"sources":["../../src/not-found.tsx"],"sourcesContent":["import { isNotFound } from '@tanstack/router-core'\nimport * as Solid from 'solid-js'\nimport { CatchBoundary } from './CatchBoundary'\nimport { useRouter } from './useRouter'\nimport type { NotFoundError } from '@tanstack/router-core'\nimport type { JSX } from '@solidjs/web'\n\n// Solid wraps non-Error throws in an Error and stores the original thrown value\n// on `cause`, so component-thrown `notFound()` needs one extra unwrapping step.\nexport function getNotFound(\n error: unknown,\n): (NotFoundError & { isNotFound: true }) | undefined {\n if (isNotFound(error)) {\n return error as NotFoundError & { isNotFound: true }\n }\n\n if (isNotFound((error as any)?.cause)) {\n return (error as any).cause as NotFoundError & { isNotFound: true }\n }\n\n return undefined\n}\n\nexport function CatchNotFound(props: {\n fallback?: (error: NotFoundError) => JSX.Element\n onCatch?: (error: NotFoundError) => void\n children: JSX.Element\n}) {\n const router = useRouter()\n // TODO: Some way for the user to programmatically reset the not-found boundary?\n const pathname = Solid.createMemo(() => router.stores.location.state.pathname)\n const status = Solid.createMemo(() => router.stores.status.state)\n\n return (\n <CatchBoundary\n getResetKey={() => `not-found-${pathname()}-${status()}`}\n onCatch={(error) => {\n const notFoundError = getNotFound(error)\n\n if (notFoundError) {\n props.onCatch?.(notFoundError)\n } else {\n throw error\n }\n }}\n errorComponent={({ error }) => {\n const notFoundError = getNotFound(error)\n\n if (notFoundError) {\n return props.fallback?.(notFoundError)\n } else {\n throw error\n }\n }}\n >\n {props.children}\n </CatchBoundary>\n )\n}\n\nexport function DefaultGlobalNotFound() {\n return <p>Not Found</p>\n}\n"],"mappings":";;;;;;;AASA,SAAgBM,YACdC,OACoD;AACpD,KAAIP,WAAWO,MAAM,CACnB,QAAOA;AAGT,KAAIP,WAAYO,OAAeC,MAAM,CACnC,QAAQD,MAAcC;;AAM1B,SAAgBE,cAAcC,OAI3B;CACD,MAAMK,SAASb,WAAW;CAE1B,MAAMc,WAAWhB,MAAMiB,iBAAiBF,OAAOG,OAAOC,SAASC,MAAMJ,SAAS;CAC9E,MAAMK,SAASrB,MAAMiB,iBAAiBF,OAAOG,OAAOG,OAAOD,MAAM;AAEjE,QAAAE,gBACGrB,eAAa;EACZsB,mBAAmB,aAAaP,UAAU,CAAA,GAAIK,QAAQ;EACtDR,UAAUP,UAAU;GAClB,MAAMkB,gBAAgBnB,YAAYC,MAAM;AAExC,OAAIkB,cACFd,OAAMG,UAAUW,cAAc;OAE9B,OAAMlB;;EAGVmB,iBAAiB,EAAEnB,YAAY;GAC7B,MAAMkB,gBAAgBnB,YAAYC,MAAM;AAExC,OAAIkB,cACF,QAAOd,MAAMC,WAAWa,cAAc;OAEtC,OAAMlB;;EAET,IAAAQ,WAAA;AAAA,UAEAJ,MAAMI;;EAAQ,CAAA;;AAKrB,SAAgBY,wBAAwB;AACtC,QAAAC,QAAA"}
|
|
@@ -7,4 +7,4 @@ import { AnyRoute, AnyRouter } from '@tanstack/router-core';
|
|
|
7
7
|
* @param data - Additional data to pass to the not found component
|
|
8
8
|
* @returns The rendered not found component or a default fallback component
|
|
9
9
|
*/
|
|
10
|
-
export declare function renderRouteNotFound(router: AnyRouter, route: AnyRoute, data: any): import("solid-js").JSX.Element;
|
|
10
|
+
export declare function renderRouteNotFound(router: AnyRouter, route: AnyRoute, data: any): import("solid-js/web").JSX.Element;
|
package/dist/esm/route.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { UseParamsRoute } from './useParams.js';
|
|
|
6
6
|
import { UseSearchRoute } from './useSearch.js';
|
|
7
7
|
import { UseRouteContextRoute } from './useRouteContext.js';
|
|
8
8
|
import { LinkComponentRoute } from './link.js';
|
|
9
|
-
import
|
|
9
|
+
import { JSX } from '@solidjs/web';
|
|
10
10
|
declare module '@tanstack/router-core' {
|
|
11
11
|
interface UpdatableRouteOptionsExtensions {
|
|
12
12
|
component?: RouteComponent;
|
|
@@ -15,9 +15,9 @@ declare module '@tanstack/router-core' {
|
|
|
15
15
|
pendingComponent?: RouteComponent;
|
|
16
16
|
}
|
|
17
17
|
interface RootRouteOptionsExtensions {
|
|
18
|
-
shellComponent?: ({ children
|
|
19
|
-
children:
|
|
20
|
-
}) =>
|
|
18
|
+
shellComponent?: ({ children }: {
|
|
19
|
+
children: JSX.Element;
|
|
20
|
+
}) => JSX.Element;
|
|
21
21
|
}
|
|
22
22
|
interface RouteExtensions<in out TId extends string, in out TFullPath extends string> {
|
|
23
23
|
useMatch: UseMatchRoute<TId>;
|
|
@@ -86,7 +86,7 @@ export declare class RootRoute<in out TRegister = Register, in out TSearchValida
|
|
|
86
86
|
export declare function createRouteMask<TRouteTree extends AnyRoute, TFrom extends string, TTo extends string>(opts: {
|
|
87
87
|
routeTree: TRouteTree;
|
|
88
88
|
} & ToMaskOptions<RouterCore<TRouteTree, 'never', false>, TFrom, TTo>): RouteMask<TRouteTree>;
|
|
89
|
-
export type SolidNode =
|
|
89
|
+
export type SolidNode = JSX.Element;
|
|
90
90
|
export interface DefaultRouteTypes<TProps> {
|
|
91
91
|
component: (props: TProps) => any;
|
|
92
92
|
}
|
package/dist/esm/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","names":["BaseRootRoute","BaseRoute","BaseRouteApi","notFound","Link","useLoaderData","useLoaderDeps","useParams","useSearch","useNavigate","useMatch","useRouteContext","useRouter","AnyContext","AnyRoute","AnyRouter","ConstrainLiteral","ErrorComponentProps","NotFoundError","NotFoundRouteProps","Register","RegisteredRouter","ResolveFullPath","ResolveId","ResolveParams","RootRoute","RootRouteCore","RootRouteId","RootRouteOptions","RouteConstraints","Route","RouteCore","RouteIds","RouteMask","RouteOptions","RouteTypesById","RouterCore","ToMaskOptions","UseNavigateResult","UseLoaderDataRoute","UseMatchRoute","UseLoaderDepsRoute","UseParamsRoute","UseSearchRoute","Solid","UseRouteContextRoute","LinkComponentRoute","UpdatableRouteOptionsExtensions","component","RouteComponent","errorComponent","ErrorRouteComponent","notFoundComponent","NotFoundRouteComponent","pendingComponent","RootRouteOptionsExtensions","shellComponent","children","JSX","Element","RouteExtensions","TId","TFullPath","getRouteApi","id","TRouter","RouteApi","constructor","opts","select","from","strict","router","routesById","fullPath","routeId","props","_$createComponent","_$mergeProps","TParentRoute","TPath","TCustomId","Record","TRegister","TSearchValidator","TParams","TRouterContext","TRouteContextFn","TBeforeLoadFn","TLoaderDeps","TLoaderFn","TChildren","TFileRouteTypes","TSSR","TMiddlewares","THandlers","options","_self$","createRoute","AnyRootRoute","createRootRouteWithContext","createRootRoute","rootRouteWithContext","_self$2","createRouteMask","routeTree","TRouteTree","TFrom","TTo","SolidNode","DefaultRouteTypes","TProps","RouteTypes","AsyncRouteComponent","preload","Promise","NotFoundRoute","Omit"],"sources":["../../src/route.tsx"],"sourcesContent":["import {\n BaseRootRoute,\n BaseRoute,\n BaseRouteApi,\n notFound,\n} from '@tanstack/router-core'\nimport { Link } from './link'\nimport { useLoaderData } from './useLoaderData'\nimport { useLoaderDeps } from './useLoaderDeps'\nimport { useParams } from './useParams'\nimport { useSearch } from './useSearch'\nimport { useNavigate } from './useNavigate'\nimport { useMatch } from './useMatch'\nimport { useRouteContext } from './useRouteContext'\nimport { useRouter } from './useRouter'\nimport type {\n AnyContext,\n AnyRoute,\n AnyRouter,\n ConstrainLiteral,\n ErrorComponentProps,\n NotFoundError,\n NotFoundRouteProps,\n Register,\n RegisteredRouter,\n ResolveFullPath,\n ResolveId,\n ResolveParams,\n RootRoute as RootRouteCore,\n RootRouteId,\n RootRouteOptions,\n RouteConstraints,\n Route as RouteCore,\n RouteIds,\n RouteMask,\n RouteOptions,\n RouteTypesById,\n RouterCore,\n ToMaskOptions,\n UseNavigateResult,\n} from '@tanstack/router-core'\nimport type { UseLoaderDataRoute } from './useLoaderData'\nimport type { UseMatchRoute } from './useMatch'\nimport type { UseLoaderDepsRoute } from './useLoaderDeps'\nimport type { UseParamsRoute } from './useParams'\nimport type { UseSearchRoute } from './useSearch'\nimport type * as Solid from 'solid-js'\nimport type { UseRouteContextRoute } from './useRouteContext'\nimport type { LinkComponentRoute } from './link'\n\ndeclare module '@tanstack/router-core' {\n export interface UpdatableRouteOptionsExtensions {\n component?: RouteComponent\n errorComponent?: false | null | undefined | ErrorRouteComponent\n notFoundComponent?: NotFoundRouteComponent\n pendingComponent?: RouteComponent\n }\n\n export interface RootRouteOptionsExtensions {\n shellComponent?: ({\n children,\n }: {\n children: Solid.JSX.Element\n }) => Solid.JSX.Element\n }\n\n export interface RouteExtensions<\n in out TId extends string,\n in out TFullPath extends string,\n > {\n useMatch: UseMatchRoute<TId>\n useRouteContext: UseRouteContextRoute<TId>\n useSearch: UseSearchRoute<TId>\n useParams: UseParamsRoute<TId>\n useLoaderDeps: UseLoaderDepsRoute<TId>\n useLoaderData: UseLoaderDataRoute<TId>\n useNavigate: () => UseNavigateResult<TFullPath>\n Link: LinkComponentRoute<TFullPath>\n }\n}\n\nexport function getRouteApi<\n const TId,\n TRouter extends AnyRouter = RegisteredRouter,\n>(id: ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>) {\n return new RouteApi<TId, TRouter>({ id })\n}\n\nexport class RouteApi<\n TId,\n TRouter extends AnyRouter = RegisteredRouter,\n> extends BaseRouteApi<TId, TRouter> {\n /**\n * @deprecated Use the `getRouteApi` function instead.\n */\n constructor({ id }: { id: TId }) {\n super({ id })\n }\n\n useMatch: UseMatchRoute<TId> = (opts) => {\n return useMatch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useRouteContext: UseRouteContextRoute<TId> = (opts) => {\n return useRouteContext({ ...(opts as any), from: this.id as any }) as any\n }\n\n useSearch: UseSearchRoute<TId> = (opts) => {\n return useSearch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useParams: UseParamsRoute<TId> = (opts) => {\n return useParams({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useLoaderDeps: UseLoaderDepsRoute<TId> = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id, strict: false } as any)\n }\n\n useLoaderData: UseLoaderDataRoute<TId> = (opts) => {\n return useLoaderData({ ...opts, from: this.id, strict: false } as any)\n }\n\n useNavigate = (): UseNavigateResult<\n RouteTypesById<TRouter, TId>['fullPath']\n > => {\n const router = useRouter()\n return useNavigate({ from: router.routesById[this.id as string].fullPath })\n }\n\n notFound = (opts?: NotFoundError) => {\n return notFound({ routeId: this.id as string, ...opts })\n }\n\n Link: LinkComponentRoute<RouteTypesById<TRouter, TId>['fullPath']> = ((\n props,\n ) => {\n const router = useRouter()\n const fullPath = router.routesById[this.id as string].fullPath\n return <Link from={fullPath as never} {...props} />\n }) as LinkComponentRoute<RouteTypesById<TRouter, TId>['fullPath']>\n}\n\nexport class Route<\n in out TRegister = unknown,\n in out TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n in out TPath extends RouteConstraints['TPath'] = '/',\n in out TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n TParentRoute,\n TPath\n >,\n in out TCustomId extends RouteConstraints['TCustomId'] = string,\n in out TId extends RouteConstraints['TId'] = ResolveId<\n TParentRoute,\n TCustomId,\n TPath\n >,\n in out TSearchValidator = undefined,\n in out TParams = ResolveParams<TPath>,\n in out TRouterContext = AnyContext,\n in out TRouteContextFn = AnyContext,\n in out TBeforeLoadFn = AnyContext,\n in out TLoaderDeps extends Record<string, any> = {},\n in out TLoaderFn = undefined,\n in out TChildren = unknown,\n in out TFileRouteTypes = unknown,\n in out TSSR = unknown,\n in out TMiddlewares = unknown,\n in out THandlers = undefined,\n>\n extends BaseRoute<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n TMiddlewares,\n THandlers\n >\n implements\n RouteCore<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n TMiddlewares,\n THandlers\n >\n{\n /**\n * @deprecated Use the `createRoute` function instead.\n */\n constructor(\n options?: RouteOptions<\n TRegister,\n TParentRoute,\n TId,\n TCustomId,\n TFullPath,\n TPath,\n TSearchValidator,\n TParams,\n TLoaderDeps,\n TLoaderFn,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TSSR,\n TMiddlewares,\n THandlers\n >,\n ) {\n super(options)\n }\n\n useMatch: UseMatchRoute<TId> = (opts) => {\n return useMatch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useRouteContext: UseRouteContextRoute<TId> = (opts?) => {\n return useRouteContext({ ...(opts as any), from: this.id }) as any\n }\n\n useSearch: UseSearchRoute<TId> = (opts) => {\n return useSearch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useParams: UseParamsRoute<TId> = (opts) => {\n return useParams({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useLoaderDeps: UseLoaderDepsRoute<TId> = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id } as any)\n }\n\n useLoaderData: UseLoaderDataRoute<TId> = (opts) => {\n return useLoaderData({ ...opts, from: this.id } as any)\n }\n\n useNavigate = (): UseNavigateResult<TFullPath> => {\n return useNavigate({ from: this.fullPath })\n }\n\n Link: LinkComponentRoute<TFullPath> = ((props) => {\n return <Link from={this.fullPath} {...props} />\n }) as LinkComponentRoute<TFullPath>\n}\n\nexport function createRoute<\n TRegister = unknown,\n TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n TPath extends RouteConstraints['TPath'] = '/',\n TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n TParentRoute,\n TPath\n >,\n TCustomId extends RouteConstraints['TCustomId'] = string,\n TId extends RouteConstraints['TId'] = ResolveId<\n TParentRoute,\n TCustomId,\n TPath\n >,\n TSearchValidator = undefined,\n TParams = ResolveParams<TPath>,\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TChildren = unknown,\n TSSR = unknown,\n THandlers = undefined,\n>(\n options: RouteOptions<\n TRegister,\n TParentRoute,\n TId,\n TCustomId,\n TFullPath,\n TPath,\n TSearchValidator,\n TParams,\n TLoaderDeps,\n TLoaderFn,\n AnyContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TSSR,\n THandlers\n >,\n): Route<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n AnyContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n unknown,\n TSSR,\n THandlers\n> {\n return new Route<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n AnyContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n unknown,\n TSSR,\n THandlers\n >(options)\n}\n\nexport type AnyRootRoute = RootRoute<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n>\n\nexport function createRootRouteWithContext<TRouterContext extends {}>() {\n return <\n TRegister = Register,\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TSearchValidator = undefined,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TSSR = unknown,\n THandlers = undefined,\n >(\n options?: RootRouteOptions<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >,\n ) => {\n return createRootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >(options)\n }\n}\n\n/**\n * @deprecated Use the `createRootRouteWithContext` function instead.\n */\nexport const rootRouteWithContext = createRootRouteWithContext\n\nexport class RootRoute<\n in out TRegister = Register,\n in out TSearchValidator = undefined,\n in out TRouterContext = {},\n in out TRouteContextFn = AnyContext,\n in out TBeforeLoadFn = AnyContext,\n in out TLoaderDeps extends Record<string, any> = {},\n in out TLoaderFn = undefined,\n in out TChildren = unknown,\n in out TFileRouteTypes = unknown,\n in out TSSR = unknown,\n in out THandlers = undefined,\n>\n extends BaseRootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n THandlers\n >\n implements\n RootRouteCore<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n THandlers\n >\n{\n /**\n * @deprecated `RootRoute` is now an internal implementation detail. Use `createRootRoute()` instead.\n */\n constructor(\n options?: RootRouteOptions<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >,\n ) {\n super(options)\n }\n\n useMatch: UseMatchRoute<RootRouteId> = (opts) => {\n return useMatch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useRouteContext: UseRouteContextRoute<RootRouteId> = (opts) => {\n return useRouteContext({ ...(opts as any), from: this.id }) as any\n }\n\n useSearch: UseSearchRoute<RootRouteId> = (opts) => {\n return useSearch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useParams: UseParamsRoute<RootRouteId> = (opts) => {\n return useParams({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useLoaderDeps: UseLoaderDepsRoute<RootRouteId> = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id } as any)\n }\n\n useLoaderData: UseLoaderDataRoute<RootRouteId> = (opts) => {\n return useLoaderData({ ...opts, from: this.id } as any)\n }\n\n useNavigate = (): UseNavigateResult<'/'> => {\n return useNavigate({ from: this.fullPath })\n }\n\n Link: LinkComponentRoute<'/'> = ((props) => {\n return <Link from={this.fullPath} {...(props as any)} />\n }) as LinkComponentRoute<'/'>\n}\n\nexport function createRouteMask<\n TRouteTree extends AnyRoute,\n TFrom extends string,\n TTo extends string,\n>(\n opts: {\n routeTree: TRouteTree\n } & ToMaskOptions<RouterCore<TRouteTree, 'never', false>, TFrom, TTo>,\n): RouteMask<TRouteTree> {\n return opts as any\n}\n\nexport type SolidNode = Solid.JSX.Element\n\nexport interface DefaultRouteTypes<TProps> {\n component: (props: TProps) => any\n}\nexport interface RouteTypes<TProps> extends DefaultRouteTypes<TProps> {}\n\nexport type AsyncRouteComponent<TProps> = RouteTypes<TProps>['component'] & {\n preload?: () => Promise<void>\n}\n\nexport type RouteComponent = AsyncRouteComponent<{}>\n\nexport type ErrorRouteComponent = AsyncRouteComponent<ErrorComponentProps>\n\nexport type NotFoundRouteComponent = RouteTypes<NotFoundRouteProps>['component']\n\nexport class NotFoundRoute<\n TRegister,\n TParentRoute extends AnyRootRoute,\n TRouterContext = AnyContext,\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TSearchValidator = undefined,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TChildren = unknown,\n TSSR = unknown,\n THandlers = undefined,\n> extends Route<\n TRegister,\n TParentRoute,\n '/404',\n '/404',\n '404',\n '404',\n TSearchValidator,\n {},\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TSSR,\n THandlers\n> {\n constructor(\n options: Omit<\n RouteOptions<\n TRegister,\n TParentRoute,\n string,\n string,\n string,\n string,\n TSearchValidator,\n {},\n TLoaderDeps,\n TLoaderFn,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TSSR,\n THandlers\n >,\n | 'caseSensitive'\n | 'parseParams'\n | 'stringifyParams'\n | 'path'\n | 'id'\n | 'params'\n >,\n ) {\n super({\n ...(options as any),\n id: '404',\n })\n }\n}\n\nexport function createRootRoute<\n TRegister = Register,\n TSearchValidator = undefined,\n TRouterContext = {},\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TSSR = unknown,\n THandlers = undefined,\n>(\n options?: RootRouteOptions<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >,\n): RootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n unknown,\n unknown,\n TSSR,\n THandlers\n> {\n return new RootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n unknown,\n unknown,\n TSSR,\n THandlers\n >(options)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"route.js","names":["BaseRootRoute","BaseRoute","BaseRouteApi","notFound","Link","useLoaderData","useLoaderDeps","useParams","useSearch","useNavigate","useMatch","useRouteContext","useRouter","AnyContext","AnyRoute","AnyRouter","ConstrainLiteral","ErrorComponentProps","NotFoundError","NotFoundRouteProps","Register","RegisteredRouter","ResolveFullPath","ResolveId","ResolveParams","RootRoute","RootRouteCore","RootRouteId","RootRouteOptions","RouteConstraints","Route","RouteCore","RouteIds","RouteMask","RouteOptions","RouteTypesById","RouterCore","ToMaskOptions","UseNavigateResult","UseLoaderDataRoute","UseMatchRoute","UseLoaderDepsRoute","UseParamsRoute","UseSearchRoute","UseRouteContextRoute","LinkComponentRoute","JSX","UpdatableRouteOptionsExtensions","component","RouteComponent","errorComponent","ErrorRouteComponent","notFoundComponent","NotFoundRouteComponent","pendingComponent","RootRouteOptionsExtensions","shellComponent","children","Element","RouteExtensions","TId","TFullPath","getRouteApi","id","TRouter","RouteApi","constructor","opts","select","from","strict","router","routesById","fullPath","routeId","props","_$createComponent","_$mergeProps","TParentRoute","TPath","TCustomId","Record","TRegister","TSearchValidator","TParams","TRouterContext","TRouteContextFn","TBeforeLoadFn","TLoaderDeps","TLoaderFn","TChildren","TFileRouteTypes","TSSR","TMiddlewares","THandlers","options","_self$","createRoute","AnyRootRoute","createRootRouteWithContext","createRootRoute","rootRouteWithContext","_self$2","createRouteMask","routeTree","TRouteTree","TFrom","TTo","SolidNode","DefaultRouteTypes","TProps","RouteTypes","AsyncRouteComponent","preload","Promise","NotFoundRoute","Omit"],"sources":["../../src/route.tsx"],"sourcesContent":["import {\n BaseRootRoute,\n BaseRoute,\n BaseRouteApi,\n notFound,\n} from '@tanstack/router-core'\nimport { Link } from './link'\nimport { useLoaderData } from './useLoaderData'\nimport { useLoaderDeps } from './useLoaderDeps'\nimport { useParams } from './useParams'\nimport { useSearch } from './useSearch'\nimport { useNavigate } from './useNavigate'\nimport { useMatch } from './useMatch'\nimport { useRouteContext } from './useRouteContext'\nimport { useRouter } from './useRouter'\nimport type {\n AnyContext,\n AnyRoute,\n AnyRouter,\n ConstrainLiteral,\n ErrorComponentProps,\n NotFoundError,\n NotFoundRouteProps,\n Register,\n RegisteredRouter,\n ResolveFullPath,\n ResolveId,\n ResolveParams,\n RootRoute as RootRouteCore,\n RootRouteId,\n RootRouteOptions,\n RouteConstraints,\n Route as RouteCore,\n RouteIds,\n RouteMask,\n RouteOptions,\n RouteTypesById,\n RouterCore,\n ToMaskOptions,\n UseNavigateResult,\n} from '@tanstack/router-core'\nimport type { UseLoaderDataRoute } from './useLoaderData'\nimport type { UseMatchRoute } from './useMatch'\nimport type { UseLoaderDepsRoute } from './useLoaderDeps'\nimport type { UseParamsRoute } from './useParams'\nimport type { UseSearchRoute } from './useSearch'\nimport type { UseRouteContextRoute } from './useRouteContext'\nimport type { LinkComponentRoute } from './link'\nimport type { JSX } from '@solidjs/web'\n\ndeclare module '@tanstack/router-core' {\n export interface UpdatableRouteOptionsExtensions {\n component?: RouteComponent\n errorComponent?: false | null | undefined | ErrorRouteComponent\n notFoundComponent?: NotFoundRouteComponent\n pendingComponent?: RouteComponent\n }\n\n export interface RootRouteOptionsExtensions {\n shellComponent?: ({ children }: { children: JSX.Element }) => JSX.Element\n }\n\n export interface RouteExtensions<\n in out TId extends string,\n in out TFullPath extends string,\n > {\n useMatch: UseMatchRoute<TId>\n useRouteContext: UseRouteContextRoute<TId>\n useSearch: UseSearchRoute<TId>\n useParams: UseParamsRoute<TId>\n useLoaderDeps: UseLoaderDepsRoute<TId>\n useLoaderData: UseLoaderDataRoute<TId>\n useNavigate: () => UseNavigateResult<TFullPath>\n Link: LinkComponentRoute<TFullPath>\n }\n}\n\nexport function getRouteApi<\n const TId,\n TRouter extends AnyRouter = RegisteredRouter,\n>(id: ConstrainLiteral<TId, RouteIds<TRouter['routeTree']>>) {\n return new RouteApi<TId, TRouter>({ id })\n}\n\nexport class RouteApi<\n TId,\n TRouter extends AnyRouter = RegisteredRouter,\n> extends BaseRouteApi<TId, TRouter> {\n /**\n * @deprecated Use the `getRouteApi` function instead.\n */\n constructor({ id }: { id: TId }) {\n super({ id })\n }\n\n useMatch: UseMatchRoute<TId> = (opts) => {\n return useMatch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useRouteContext: UseRouteContextRoute<TId> = (opts) => {\n return useRouteContext({ ...(opts as any), from: this.id as any }) as any\n }\n\n useSearch: UseSearchRoute<TId> = (opts) => {\n return useSearch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useParams: UseParamsRoute<TId> = (opts) => {\n return useParams({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useLoaderDeps: UseLoaderDepsRoute<TId> = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id, strict: false } as any)\n }\n\n useLoaderData: UseLoaderDataRoute<TId> = (opts) => {\n return useLoaderData({ ...opts, from: this.id, strict: false } as any)\n }\n\n useNavigate = (): UseNavigateResult<\n RouteTypesById<TRouter, TId>['fullPath']\n > => {\n const router = useRouter()\n return useNavigate({ from: router.routesById[this.id as string].fullPath })\n }\n\n notFound = (opts?: NotFoundError) => {\n return notFound({ routeId: this.id as string, ...opts })\n }\n\n Link: LinkComponentRoute<RouteTypesById<TRouter, TId>['fullPath']> = ((\n props,\n ) => {\n const router = useRouter()\n const fullPath = router.routesById[this.id as string].fullPath\n return <Link from={fullPath as never} {...props} />\n }) as LinkComponentRoute<RouteTypesById<TRouter, TId>['fullPath']>\n}\n\nexport class Route<\n in out TRegister = unknown,\n in out TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n in out TPath extends RouteConstraints['TPath'] = '/',\n in out TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n TParentRoute,\n TPath\n >,\n in out TCustomId extends RouteConstraints['TCustomId'] = string,\n in out TId extends RouteConstraints['TId'] = ResolveId<\n TParentRoute,\n TCustomId,\n TPath\n >,\n in out TSearchValidator = undefined,\n in out TParams = ResolveParams<TPath>,\n in out TRouterContext = AnyContext,\n in out TRouteContextFn = AnyContext,\n in out TBeforeLoadFn = AnyContext,\n in out TLoaderDeps extends Record<string, any> = {},\n in out TLoaderFn = undefined,\n in out TChildren = unknown,\n in out TFileRouteTypes = unknown,\n in out TSSR = unknown,\n in out TMiddlewares = unknown,\n in out THandlers = undefined,\n>\n extends BaseRoute<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n TMiddlewares,\n THandlers\n >\n implements\n RouteCore<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n TMiddlewares,\n THandlers\n >\n{\n /**\n * @deprecated Use the `createRoute` function instead.\n */\n constructor(\n options?: RouteOptions<\n TRegister,\n TParentRoute,\n TId,\n TCustomId,\n TFullPath,\n TPath,\n TSearchValidator,\n TParams,\n TLoaderDeps,\n TLoaderFn,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TSSR,\n TMiddlewares,\n THandlers\n >,\n ) {\n super(options)\n }\n\n useMatch: UseMatchRoute<TId> = (opts) => {\n return useMatch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useRouteContext: UseRouteContextRoute<TId> = (opts?) => {\n return useRouteContext({ ...(opts as any), from: this.id }) as any\n }\n\n useSearch: UseSearchRoute<TId> = (opts) => {\n return useSearch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useParams: UseParamsRoute<TId> = (opts) => {\n return useParams({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useLoaderDeps: UseLoaderDepsRoute<TId> = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id } as any)\n }\n\n useLoaderData: UseLoaderDataRoute<TId> = (opts) => {\n return useLoaderData({ ...opts, from: this.id } as any)\n }\n\n useNavigate = (): UseNavigateResult<TFullPath> => {\n return useNavigate({ from: this.fullPath })\n }\n\n Link: LinkComponentRoute<TFullPath> = ((props) => {\n return <Link from={this.fullPath} {...props} />\n }) as LinkComponentRoute<TFullPath>\n}\n\nexport function createRoute<\n TRegister = unknown,\n TParentRoute extends RouteConstraints['TParentRoute'] = AnyRoute,\n TPath extends RouteConstraints['TPath'] = '/',\n TFullPath extends RouteConstraints['TFullPath'] = ResolveFullPath<\n TParentRoute,\n TPath\n >,\n TCustomId extends RouteConstraints['TCustomId'] = string,\n TId extends RouteConstraints['TId'] = ResolveId<\n TParentRoute,\n TCustomId,\n TPath\n >,\n TSearchValidator = undefined,\n TParams = ResolveParams<TPath>,\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TChildren = unknown,\n TSSR = unknown,\n THandlers = undefined,\n>(\n options: RouteOptions<\n TRegister,\n TParentRoute,\n TId,\n TCustomId,\n TFullPath,\n TPath,\n TSearchValidator,\n TParams,\n TLoaderDeps,\n TLoaderFn,\n AnyContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TSSR,\n THandlers\n >,\n): Route<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n AnyContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n unknown,\n TSSR,\n THandlers\n> {\n return new Route<\n TRegister,\n TParentRoute,\n TPath,\n TFullPath,\n TCustomId,\n TId,\n TSearchValidator,\n TParams,\n AnyContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n unknown,\n TSSR,\n THandlers\n >(options)\n}\n\nexport type AnyRootRoute = RootRoute<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n>\n\nexport function createRootRouteWithContext<TRouterContext extends {}>() {\n return <\n TRegister = Register,\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TSearchValidator = undefined,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TSSR = unknown,\n THandlers = undefined,\n >(\n options?: RootRouteOptions<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >,\n ) => {\n return createRootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >(options)\n }\n}\n\n/**\n * @deprecated Use the `createRootRouteWithContext` function instead.\n */\nexport const rootRouteWithContext = createRootRouteWithContext\n\nexport class RootRoute<\n in out TRegister = Register,\n in out TSearchValidator = undefined,\n in out TRouterContext = {},\n in out TRouteContextFn = AnyContext,\n in out TBeforeLoadFn = AnyContext,\n in out TLoaderDeps extends Record<string, any> = {},\n in out TLoaderFn = undefined,\n in out TChildren = unknown,\n in out TFileRouteTypes = unknown,\n in out TSSR = unknown,\n in out THandlers = undefined,\n>\n extends BaseRootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n THandlers\n >\n implements\n RootRouteCore<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TFileRouteTypes,\n TSSR,\n THandlers\n >\n{\n /**\n * @deprecated `RootRoute` is now an internal implementation detail. Use `createRootRoute()` instead.\n */\n constructor(\n options?: RootRouteOptions<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >,\n ) {\n super(options)\n }\n\n useMatch: UseMatchRoute<RootRouteId> = (opts) => {\n return useMatch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useRouteContext: UseRouteContextRoute<RootRouteId> = (opts) => {\n return useRouteContext({ ...(opts as any), from: this.id }) as any\n }\n\n useSearch: UseSearchRoute<RootRouteId> = (opts) => {\n return useSearch({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useParams: UseParamsRoute<RootRouteId> = (opts) => {\n return useParams({\n select: opts?.select,\n from: this.id,\n } as any) as any\n }\n\n useLoaderDeps: UseLoaderDepsRoute<RootRouteId> = (opts) => {\n return useLoaderDeps({ ...opts, from: this.id } as any)\n }\n\n useLoaderData: UseLoaderDataRoute<RootRouteId> = (opts) => {\n return useLoaderData({ ...opts, from: this.id } as any)\n }\n\n useNavigate = (): UseNavigateResult<'/'> => {\n return useNavigate({ from: this.fullPath })\n }\n\n Link: LinkComponentRoute<'/'> = ((props) => {\n return <Link from={this.fullPath} {...(props as any)} />\n }) as LinkComponentRoute<'/'>\n}\n\nexport function createRouteMask<\n TRouteTree extends AnyRoute,\n TFrom extends string,\n TTo extends string,\n>(\n opts: {\n routeTree: TRouteTree\n } & ToMaskOptions<RouterCore<TRouteTree, 'never', false>, TFrom, TTo>,\n): RouteMask<TRouteTree> {\n return opts as any\n}\n\nexport type SolidNode = JSX.Element\n\nexport interface DefaultRouteTypes<TProps> {\n component: (props: TProps) => any\n}\nexport interface RouteTypes<TProps> extends DefaultRouteTypes<TProps> {}\n\nexport type AsyncRouteComponent<TProps> = RouteTypes<TProps>['component'] & {\n preload?: () => Promise<void>\n}\n\nexport type RouteComponent = AsyncRouteComponent<{}>\n\nexport type ErrorRouteComponent = AsyncRouteComponent<ErrorComponentProps>\n\nexport type NotFoundRouteComponent = RouteTypes<NotFoundRouteProps>['component']\n\nexport class NotFoundRoute<\n TRegister,\n TParentRoute extends AnyRootRoute,\n TRouterContext = AnyContext,\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TSearchValidator = undefined,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TChildren = unknown,\n TSSR = unknown,\n THandlers = undefined,\n> extends Route<\n TRegister,\n TParentRoute,\n '/404',\n '/404',\n '404',\n '404',\n TSearchValidator,\n {},\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TChildren,\n TSSR,\n THandlers\n> {\n constructor(\n options: Omit<\n RouteOptions<\n TRegister,\n TParentRoute,\n string,\n string,\n string,\n string,\n TSearchValidator,\n {},\n TLoaderDeps,\n TLoaderFn,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TSSR,\n THandlers\n >,\n | 'caseSensitive'\n | 'parseParams'\n | 'stringifyParams'\n | 'path'\n | 'id'\n | 'params'\n >,\n ) {\n super({\n ...(options as any),\n id: '404',\n })\n }\n}\n\nexport function createRootRoute<\n TRegister = Register,\n TSearchValidator = undefined,\n TRouterContext = {},\n TRouteContextFn = AnyContext,\n TBeforeLoadFn = AnyContext,\n TLoaderDeps extends Record<string, any> = {},\n TLoaderFn = undefined,\n TSSR = unknown,\n THandlers = undefined,\n>(\n options?: RootRouteOptions<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n TSSR,\n THandlers\n >,\n): RootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n unknown,\n unknown,\n TSSR,\n THandlers\n> {\n return new RootRoute<\n TRegister,\n TSearchValidator,\n TRouterContext,\n TRouteContextFn,\n TBeforeLoadFn,\n TLoaderDeps,\n TLoaderFn,\n unknown,\n unknown,\n TSSR,\n THandlers\n >(options)\n}\n"],"mappings":"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"}
|
package/dist/esm/router.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RouterCore, AnyRoute, CreateRouterFn, RouterConstructorOptions, TrailingSlashOption } from '@tanstack/router-core';
|
|
2
2
|
import { RouterHistory } from '@tanstack/history';
|
|
3
3
|
import { ErrorRouteComponent, NotFoundRouteComponent, RouteComponent } from './route.js';
|
|
4
|
-
import { JSX } from '
|
|
4
|
+
import { JSX } from '@solidjs/web';
|
|
5
5
|
declare module '@tanstack/router-core' {
|
|
6
6
|
interface RouterOptionsExtensions {
|
|
7
7
|
/**
|
package/dist/esm/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","names":[],"sources":["../../src/router.ts"],"sourcesContent":["import { RouterCore } from '@tanstack/router-core'\nimport { getStoreFactory } from './routerStores'\nimport type { RouterHistory } from '@tanstack/history'\nimport type {\n AnyRoute,\n CreateRouterFn,\n RouterConstructorOptions,\n TrailingSlashOption,\n} from '@tanstack/router-core'\nimport type {\n ErrorRouteComponent,\n NotFoundRouteComponent,\n RouteComponent,\n} from './route'\nimport type { JSX } from '
|
|
1
|
+
{"version":3,"file":"router.js","names":[],"sources":["../../src/router.ts"],"sourcesContent":["import { RouterCore } from '@tanstack/router-core'\nimport { getStoreFactory } from './routerStores'\nimport type { RouterHistory } from '@tanstack/history'\nimport type {\n AnyRoute,\n CreateRouterFn,\n RouterConstructorOptions,\n TrailingSlashOption,\n} from '@tanstack/router-core'\nimport type {\n ErrorRouteComponent,\n NotFoundRouteComponent,\n RouteComponent,\n} from './route'\nimport type { JSX } from '@solidjs/web'\n\ndeclare module '@tanstack/router-core' {\n export interface RouterOptionsExtensions {\n /**\n * The default `component` a route should use if no component is provided.\n *\n * @default Outlet\n * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaultcomponent-property)\n */\n defaultComponent?: RouteComponent\n /**\n * The default `errorComponent` a route should use if no error component is provided.\n *\n * @default ErrorComponent\n * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaulterrorcomponent-property)\n * @link [Guide](https://tanstack.com/router/latest/docs/framework/solid/guide/data-loading#handling-errors-with-routeoptionserrorcomponent)\n */\n defaultErrorComponent?: ErrorRouteComponent\n /**\n * The default `pendingComponent` a route should use if no pending component is provided.\n *\n * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaultpendingcomponent-property)\n * @link [Guide](https://tanstack.com/router/latest/docs/framework/solid/guide/data-loading#showing-a-pending-component)\n */\n defaultPendingComponent?: RouteComponent\n /**\n * The default `notFoundComponent` a route should use if no notFound component is provided.\n *\n * @default NotFound\n * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#defaultnotfoundcomponent-property)\n * @link [Guide](https://tanstack.com/router/latest/docs/framework/solid/guide/not-found-errors#default-router-wide-not-found-handling)\n */\n defaultNotFoundComponent?: NotFoundRouteComponent\n /**\n * A component that will be used to wrap the entire router.\n *\n * This is useful for providing a context to the entire router.\n *\n * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#wrap-property)\n */\n Wrap?: (props: { children: any }) => JSX.Element\n /**\n * A component that will be used to wrap the inner contents of the router.\n *\n * This is useful for providing a context to the inner contents of the router where you also need access to the router context and hooks.\n *\n * @link [API Docs](https://tanstack.com/router/latest/docs/framework/solid/api/router/RouterOptionsType#innerwrap-property)\n */\n InnerWrap?: (props: { children: any }) => JSX.Element\n\n /**\n * The default `onCatch` handler for errors caught by the Router ErrorBoundary\n *\n * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaultoncatch-property)\n * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#handling-errors-with-routeoptionsoncatch)\n */\n defaultOnCatch?: (error: Error) => void\n }\n}\n\nexport const createRouter: CreateRouterFn = (options) => {\n return new Router(options)\n}\n\nexport class Router<\n in out TRouteTree extends AnyRoute,\n in out TTrailingSlashOption extends TrailingSlashOption = 'never',\n in out TDefaultStructuralSharingOption extends boolean = false,\n in out TRouterHistory extends RouterHistory = RouterHistory,\n in out TDehydrated extends Record<string, any> = Record<string, any>,\n> extends RouterCore<\n TRouteTree,\n TTrailingSlashOption,\n TDefaultStructuralSharingOption,\n TRouterHistory,\n TDehydrated\n> {\n constructor(\n options: RouterConstructorOptions<\n TRouteTree,\n TTrailingSlashOption,\n TDefaultStructuralSharingOption,\n TRouterHistory,\n TDehydrated\n >,\n ) {\n super(options, getStoreFactory)\n }\n}\n"],"mappings":";;;AA2EA,IAAa,gBAAgC,YAAY;AACvD,QAAO,IAAI,OAAO,QAAQ;;AAG5B,IAAa,SAAb,cAMU,WAMR;CACA,YACE,SAOA;AACA,QAAM,SAAS,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function ScrollRestoration(): import("solid-js").JSX.Element;
|
|
1
|
+
export declare function ScrollRestoration(): import("solid-js/web").JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { JSXElement } from 'solid-js';
|
|
2
1
|
import { AnyRouter } from '@tanstack/router-core';
|
|
2
|
+
import { JSX } from '@solidjs/web';
|
|
3
3
|
export declare const renderRouterToStream: ({ request, router, responseHeaders, children, }: {
|
|
4
4
|
request: Request;
|
|
5
5
|
router: AnyRouter;
|
|
6
6
|
responseHeaders: Headers;
|
|
7
|
-
children: () =>
|
|
7
|
+
children: () => JSX.Element;
|
|
8
8
|
}) => Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderRouterToStream.js","names":["Solid","isbot","transformReadableStreamWithRouter","makeSsrSerovalPlugin","
|
|
1
|
+
{"version":3,"file":"renderRouterToStream.js","names":["Solid","isbot","transformReadableStreamWithRouter","makeSsrSerovalPlugin","ReadableStream","AnyRouter","JSX","renderRouterToStream","request","router","responseHeaders","children","Request","Headers","Element","writable","readable","TransformStream","serializationAdapters","options","ssr","serovalPlugins","map","adapter","plugin","didRun","stream","renderToStream","nonce","plugins","headers","get","pipeTo","responseStream","Response","status","stores","statusCode","state"],"sources":["../../../src/ssr/renderRouterToStream.tsx"],"sourcesContent":["import * as Solid from '@solidjs/web'\nimport { isbot } from 'isbot'\nimport { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'\nimport { makeSsrSerovalPlugin } from '@tanstack/router-core'\nimport type { ReadableStream } from 'node:stream/web'\nimport type { AnyRouter } from '@tanstack/router-core'\nimport type { JSX } from '@solidjs/web'\n\nexport const renderRouterToStream = async ({\n request,\n router,\n responseHeaders,\n children,\n}: {\n request: Request\n router: AnyRouter\n responseHeaders: Headers\n children: () => JSX.Element\n}) => {\n const { writable, readable } = new TransformStream()\n\n const serializationAdapters =\n (router.options as any)?.serializationAdapters ||\n (router.options.ssr as any)?.serializationAdapters\n const serovalPlugins = serializationAdapters?.map((adapter: any) => {\n const plugin = makeSsrSerovalPlugin(adapter, { didRun: false })\n return plugin\n })\n\n const stream = Solid.renderToStream(() => children, {\n nonce: router.options.ssr?.nonce,\n plugins: serovalPlugins,\n } as any)\n\n if (isbot(request.headers.get('User-Agent'))) {\n await stream\n }\n stream.pipeTo(writable)\n\n const responseStream = transformReadableStreamWithRouter(\n router,\n readable as unknown as ReadableStream,\n )\n return new Response(responseStream as any, {\n status: router.stores.statusCode.state,\n headers: responseHeaders,\n })\n}\n"],"mappings":";;;;;AAQA,IAAaO,uBAAuB,OAAO,EACzCC,SACAC,QACAC,iBACAC,eAMI;CACJ,MAAM,EAAEI,UAAUC,aAAa,IAAIC,iBAAiB;CAKpD,MAAMI,kBAFHZ,OAAOU,SAAiBD,yBACxBT,OAAOU,QAAQC,KAAaF,wBACeI,KAAKC,YAAiB;AAElE,SADepB,qBAAqBoB,SAAS,EAAEE,QAAQ,OAAO,CAAC;GAE/D;CAEF,MAAMC,SAAS1B,MAAM2B,qBAAqBhB,UAAU;EAClDiB,OAAOnB,OAAOU,QAAQC,KAAKQ;EAC3BC,SAASR;EACV,CAAQ;AAET,KAAIpB,MAAMO,QAAQsB,QAAQC,IAAI,aAAa,CAAC,CAC1C,OAAML;AAERA,QAAOM,OAAOjB,SAAS;CAEvB,MAAMkB,iBAAiB/B,kCACrBO,QACAO,SACD;AACD,QAAO,IAAIkB,SAASD,gBAAuB;EACzCE,QAAQ1B,OAAO2B,OAAOC,WAAWC;EACjCR,SAASpB;EACV,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AnyRouter } from '@tanstack/router-core';
|
|
2
|
-
import {
|
|
2
|
+
import { JSX } from '@solidjs/web';
|
|
3
3
|
export declare const renderRouterToString: ({ router, responseHeaders, children, }: {
|
|
4
4
|
router: AnyRouter;
|
|
5
5
|
responseHeaders: Headers;
|
|
6
|
-
children: () =>
|
|
6
|
+
children: () => JSX.Element;
|
|
7
7
|
}) => Response;
|