@tanstack/solid-router 1.166.7 → 2.0.0-alpha.1
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 +111 -68
- package/dist/cjs/Asset.cjs.map +1 -1
- package/dist/cjs/CatchBoundary.cjs +15 -15
- package/dist/cjs/CatchBoundary.cjs.map +1 -1
- package/dist/cjs/ClientOnly.cjs +2 -2
- package/dist/cjs/ClientOnly.cjs.map +1 -1
- package/dist/cjs/HeadContent.cjs +16 -8
- package/dist/cjs/HeadContent.cjs.map +1 -1
- package/dist/cjs/HeadContent.dev.cjs +18 -10
- package/dist/cjs/HeadContent.dev.cjs.map +1 -1
- package/dist/cjs/Match.cjs +125 -81
- package/dist/cjs/Match.cjs.map +1 -1
- package/dist/cjs/Matches.cjs +23 -16
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/RouterProvider.cjs +3 -2
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/SafeFragment.cjs +1 -1
- package/dist/cjs/ScriptOnce.cjs +4 -2
- package/dist/cjs/ScriptOnce.cjs.map +1 -1
- package/dist/cjs/Scripts.cjs +6 -2
- package/dist/cjs/Scripts.cjs.map +1 -1
- package/dist/cjs/Transitioner.cjs +11 -16
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/cjs/awaited.cjs +20 -16
- package/dist/cjs/awaited.cjs.map +1 -1
- package/dist/cjs/lazyRouteComponent.cjs +3 -3
- package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
- package/dist/cjs/link.cjs +40 -22
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/not-found.cjs +1 -1
- package/dist/cjs/renderRouteNotFound.cjs +1 -1
- package/dist/cjs/route.cjs +1 -1
- package/dist/cjs/scroll-restoration.cjs +1 -1
- package/dist/cjs/ssr/RouterClient.cjs +4 -23
- package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
- package/dist/cjs/ssr/RouterServer.cjs +4 -47
- package/dist/cjs/ssr/RouterServer.cjs.map +1 -1
- package/dist/cjs/ssr/RouterServer.d.cts +0 -1
- package/dist/cjs/ssr/defaultRenderHandler.cjs +1 -1
- package/dist/cjs/ssr/defaultStreamHandler.cjs +1 -1
- package/dist/cjs/ssr/renderRouterToStream.cjs +2 -3
- package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.cjs +2 -2
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.d.cts +1 -1
- package/dist/cjs/useBlocker.cjs +9 -5
- package/dist/cjs/useBlocker.cjs.map +1 -1
- package/dist/cjs/useMatch.cjs +3 -6
- package/dist/cjs/useMatch.cjs.map +1 -1
- package/dist/cjs/useNavigate.cjs +1 -1
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/cjs/useRouterState.cjs +15 -9
- package/dist/cjs/useRouterState.cjs.map +1 -1
- package/dist/cjs/utils.cjs +2 -4
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +1 -0
- package/dist/esm/Asset.js +111 -68
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/CatchBoundary.js +15 -15
- package/dist/esm/CatchBoundary.js.map +1 -1
- package/dist/esm/ClientOnly.js +2 -2
- package/dist/esm/ClientOnly.js.map +1 -1
- package/dist/esm/HeadContent.dev.js +18 -10
- package/dist/esm/HeadContent.dev.js.map +1 -1
- package/dist/esm/HeadContent.js +16 -8
- package/dist/esm/HeadContent.js.map +1 -1
- package/dist/esm/Match.js +89 -45
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.js +23 -16
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.js +3 -2
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/SafeFragment.js +1 -1
- package/dist/esm/ScriptOnce.js +4 -2
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/Scripts.js +6 -2
- package/dist/esm/Scripts.js.map +1 -1
- package/dist/esm/Transitioner.js +11 -16
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/awaited.js +18 -14
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/lazyRouteComponent.js +3 -3
- package/dist/esm/lazyRouteComponent.js.map +1 -1
- package/dist/esm/link.js +39 -21
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/not-found.js +1 -1
- package/dist/esm/renderRouteNotFound.js +1 -1
- package/dist/esm/route.js +1 -1
- package/dist/esm/scroll-restoration.js +1 -1
- package/dist/esm/ssr/RouterClient.js +4 -23
- package/dist/esm/ssr/RouterClient.js.map +1 -1
- package/dist/esm/ssr/RouterServer.d.ts +0 -1
- package/dist/esm/ssr/RouterServer.js +5 -48
- package/dist/esm/ssr/RouterServer.js.map +1 -1
- package/dist/esm/ssr/defaultRenderHandler.js +1 -1
- package/dist/esm/ssr/defaultStreamHandler.js +1 -1
- package/dist/esm/ssr/renderRouterToStream.js +2 -4
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
- package/dist/esm/ssr/renderRouterToString.d.ts +1 -1
- package/dist/esm/ssr/renderRouterToString.js +2 -2
- package/dist/esm/ssr/renderRouterToString.js.map +1 -1
- package/dist/esm/useBlocker.js +9 -5
- package/dist/esm/useBlocker.js.map +1 -1
- package/dist/esm/useMatch.js +3 -6
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/useNavigate.js +1 -1
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useRouterState.js +15 -9
- package/dist/esm/useRouterState.js.map +1 -1
- package/dist/esm/utils.d.ts +1 -0
- package/dist/esm/utils.js +2 -4
- package/dist/esm/utils.js.map +1 -1
- package/dist/source/Asset.jsx +58 -35
- package/dist/source/Asset.jsx.map +1 -1
- package/dist/source/CatchBoundary.jsx +9 -5
- package/dist/source/CatchBoundary.jsx.map +1 -1
- package/dist/source/ClientOnly.jsx +1 -1
- package/dist/source/ClientOnly.jsx.map +1 -1
- package/dist/source/HeadContent.dev.jsx +8 -6
- package/dist/source/HeadContent.dev.jsx.map +1 -1
- package/dist/source/HeadContent.jsx +6 -4
- package/dist/source/HeadContent.jsx.map +1 -1
- package/dist/source/Match.jsx +76 -35
- package/dist/source/Match.jsx.map +1 -1
- package/dist/source/Matches.jsx +25 -17
- package/dist/source/Matches.jsx.map +1 -1
- package/dist/source/RouterProvider.jsx +2 -3
- package/dist/source/RouterProvider.jsx.map +1 -1
- package/dist/source/Scripts.jsx +4 -3
- package/dist/source/Scripts.jsx.map +1 -1
- package/dist/source/Transitioner.jsx +15 -16
- package/dist/source/Transitioner.jsx.map +1 -1
- package/dist/source/awaited.jsx +7 -8
- package/dist/source/awaited.jsx.map +1 -1
- package/dist/source/lazyRouteComponent.jsx +3 -3
- package/dist/source/lazyRouteComponent.jsx.map +1 -1
- package/dist/source/link.jsx +53 -48
- package/dist/source/link.jsx.map +1 -1
- package/dist/source/ssr/RouterClient.jsx +1 -13
- package/dist/source/ssr/RouterClient.jsx.map +1 -1
- package/dist/source/ssr/RouterServer.d.ts +0 -1
- package/dist/source/ssr/RouterServer.jsx +1 -34
- package/dist/source/ssr/RouterServer.jsx.map +1 -1
- package/dist/source/ssr/renderRouterToStream.jsx +2 -6
- package/dist/source/ssr/renderRouterToStream.jsx.map +1 -1
- package/dist/source/ssr/renderRouterToString.d.ts +1 -1
- package/dist/source/ssr/renderRouterToString.jsx +2 -2
- package/dist/source/ssr/renderRouterToString.jsx.map +1 -1
- package/dist/source/useBlocker.jsx +8 -4
- package/dist/source/useBlocker.jsx.map +1 -1
- package/dist/source/useMatch.jsx +3 -8
- package/dist/source/useMatch.jsx.map +1 -1
- package/dist/source/useNavigate.jsx +1 -1
- package/dist/source/useNavigate.jsx.map +1 -1
- package/dist/source/useRouterState.jsx +23 -10
- package/dist/source/useRouterState.jsx.map +1 -1
- package/dist/source/utils.d.ts +1 -0
- package/dist/source/utils.js +3 -4
- package/dist/source/utils.js.map +1 -1
- package/package.json +7 -6
- package/src/Asset.tsx +123 -95
- package/src/CatchBoundary.tsx +9 -7
- package/src/ClientOnly.tsx +8 -3
- package/src/HeadContent.dev.tsx +16 -11
- package/src/HeadContent.tsx +6 -4
- package/src/Match.tsx +112 -44
- package/src/Matches.tsx +39 -30
- package/src/RouterProvider.tsx +7 -4
- package/src/Scripts.tsx +4 -3
- package/src/Transitioner.tsx +51 -58
- package/src/awaited.tsx +11 -12
- package/src/lazyRouteComponent.tsx +3 -3
- package/src/link.tsx +68 -60
- package/src/ssr/RouterClient.tsx +1 -22
- package/src/ssr/RouterServer.tsx +1 -53
- package/src/ssr/renderRouterToStream.tsx +5 -15
- package/src/ssr/renderRouterToString.tsx +2 -2
- package/src/useBlocker.tsx +8 -4
- package/src/useMatch.tsx +6 -11
- package/src/useNavigate.tsx +1 -1
- package/src/useRouterState.tsx +34 -22
- package/src/utils.ts +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterProvider.js","sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import { 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 * as Solid from 'solid-js'\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: () => Solid.JSX.Element\n}) {\n // Allow the router to update options on the router instance\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest.context,\n },\n })\n\n const OptionalWrapper = router.options.Wrap || SafeFragment\n\n return (\n <OptionalWrapper>\n <
|
|
1
|
+
{"version":3,"file":"RouterProvider.js","sources":["../../src/RouterProvider.tsx"],"sourcesContent":["import { 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 * as Solid from 'solid-js'\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: () => Solid.JSX.Element\n}) {\n // Allow the router to update options on the router instance\n router.update({\n ...router.options,\n ...rest,\n context: {\n ...router.options.context,\n ...rest.context,\n },\n } as any)\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"],"names":["RouterContext","routerContext","RouterContextProvider","router","children","rest","update","options","context","OptionalWrapper","Wrap","SafeFragment","_$createComponent","value","RouterProvider","_$mergeProps","Matches"],"mappings":";;;;AAUA,MAAMA,gBAAgBC;AAKf,SAASC,sBAGd;AAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AAGL,GAAG;AAEDF,SAAOG,OAAO;AAAA,IACZ,GAAGH,OAAOI;AAAAA,IACV,GAAGF;AAAAA,IACHG,SAAS;AAAA,MACP,GAAGL,OAAOI,QAAQC;AAAAA,MAClB,GAAGH,KAAKG;AAAAA,IAAAA;AAAAA,EACV,CACM;AAER,QAAMC,kBAAkBN,OAAOI,QAAQG,QAAQC;AAE/C,SAAAC,gBACGH,iBAAe;AAAA,IAAA,IAAAL,WAAA;AAAA,aAAAQ,gBACbZ,eAAa;AAAA,QAACa,OAAOV;AAAAA,QAAmB,IAAAC,WAAA;AAAA,iBAAGA,SAAAA;AAAAA,QAAU;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAG5D;AAEO,SAASU,eAGd;AAAA,EAAEX;AAAAA,EAAQ,GAAGE;AAAwC,GAAG;AACxD,SAAAO,gBACGV,uBAAqBa,WAAA;AAAA,IAACZ;AAAAA,EAAAA,GAAoBE,MAAI;AAAA,IAAAD,UAC5CA,MAAAQ,gBAAOI,SAAO,CAAA,CAAA;AAAA,EAAA,CAAG,CAAA;AAGxB;"}
|
package/dist/esm/SafeFragment.js
CHANGED
package/dist/esm/ScriptOnce.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { template, effect, setAttribute } from "
|
|
1
|
+
import { template, effect, setAttribute } from "@solidjs/web";
|
|
2
2
|
import { isServer } from "@tanstack/router-core/isServer";
|
|
3
3
|
import { useRouter } from "./useRouter.js";
|
|
4
4
|
var _tmpl$ = /* @__PURE__ */ template(`<script class=$tsr>`);
|
|
@@ -12,7 +12,9 @@ function ScriptOnce({
|
|
|
12
12
|
return (() => {
|
|
13
13
|
var _el$ = _tmpl$();
|
|
14
14
|
_el$.innerHTML = children + ";document.currentScript.remove()";
|
|
15
|
-
effect(() =>
|
|
15
|
+
effect(() => router.options.ssr?.nonce, (_v$) => {
|
|
16
|
+
setAttribute(_el$, "nonce", _v$);
|
|
17
|
+
});
|
|
16
18
|
return _el$;
|
|
17
19
|
})();
|
|
18
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScriptOnce.js","sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\n\nexport function ScriptOnce({\n children,\n}: {\n children: string\n log?: boolean\n sync?: boolean\n}) {\n const router = useRouter()\n if (!(isServer ?? router.isServer)) {\n return null\n }\n return (\n <script\n nonce={router.options.ssr?.nonce}\n class=\"$tsr\"\n innerHTML={children + ';document.currentScript.remove()'}\n />\n )\n}\n"],"names":["ScriptOnce","children","router","useRouter","isServer","_el$","_tmpl$","innerHTML","_$effect","
|
|
1
|
+
{"version":3,"file":"ScriptOnce.js","sources":["../../src/ScriptOnce.tsx"],"sourcesContent":["import { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\n\nexport function ScriptOnce({\n children,\n}: {\n children: string\n log?: boolean\n sync?: boolean\n}) {\n const router = useRouter()\n if (!(isServer ?? router.isServer)) {\n return null\n }\n return (\n <script\n nonce={router.options.ssr?.nonce}\n class=\"$tsr\"\n innerHTML={children + ';document.currentScript.remove()'}\n />\n )\n}\n"],"names":["ScriptOnce","children","router","useRouter","isServer","_el$","_tmpl$","innerHTML","_$effect","options","ssr","nonce","_v$","_$setAttribute"],"mappings":";;;;AAGO,SAASA,WAAW;AAAA,EACzBC;AAKF,GAAG;AACD,QAAMC,SAASC,UAAAA;AACf,MAAI,EAAEC,YAAYF,OAAOE,WAAW;AAClC,WAAO;AAAA,EACT;AACA,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA;AAAAD,SAAAE,YAIeN,WAAW;AAAkCO,WAAA,MAFjDN,OAAOO,QAAQC,KAAKC,OAAKC,CAAAA,QAAA;AAAAC,mBAAAR,MAAA,SAAAO,GAAA;AAAA,IAAA,CAAA;AAAA,WAAAP;AAAAA,EAAA,GAAA;AAKtC;"}
|
package/dist/esm/Scripts.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createComponent, NoHydration } from "@solidjs/web";
|
|
2
2
|
import { Asset } from "./Asset.js";
|
|
3
3
|
import { useRouterState } from "./useRouterState.js";
|
|
4
4
|
import { useRouter } from "./useRouter.js";
|
|
@@ -48,7 +48,11 @@ const Scripts = () => {
|
|
|
48
48
|
if (serverBufferedScript) {
|
|
49
49
|
allScripts.unshift(serverBufferedScript);
|
|
50
50
|
}
|
|
51
|
-
return
|
|
51
|
+
return createComponent(NoHydration, {
|
|
52
|
+
get children() {
|
|
53
|
+
return allScripts.map((asset, _i) => createComponent(Asset, asset));
|
|
54
|
+
}
|
|
55
|
+
});
|
|
52
56
|
};
|
|
53
57
|
export {
|
|
54
58
|
Scripts
|
package/dist/esm/Scripts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scripts.js","sources":["../../src/Scripts.tsx"],"sourcesContent":["import { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const assetScripts = useRouterState({\n select: (state) => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as any)\n }),\n )\n\n return assetScripts\n },\n })\n\n const scripts = useRouterState({\n select: (state) => ({\n scripts: (\n state.matches\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script',\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n }),\n })\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [\n ...scripts().scripts,\n ...assetScripts(),\n ] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n
|
|
1
|
+
{"version":3,"file":"Scripts.js","sources":["../../src/Scripts.tsx"],"sourcesContent":["import { NoHydration } from '@solidjs/web'\nimport { Asset } from './Asset'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const assetScripts = useRouterState({\n select: (state) => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as any)\n }),\n )\n\n return assetScripts\n },\n })\n\n const scripts = useRouterState({\n select: (state) => ({\n scripts: (\n state.matches\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script',\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n }),\n })\n\n let serverBufferedScript: RouterManagedTag | undefined = undefined\n\n if (router.serverSsr) {\n serverBufferedScript = router.serverSsr.takeBufferedScripts()\n }\n\n const allScripts = [\n ...scripts().scripts,\n ...assetScripts(),\n ] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n allScripts.unshift(serverBufferedScript)\n }\n\n return (\n <NoHydration>\n {allScripts.map((asset, _i) => (\n <Asset {...asset} />\n ))}\n </NoHydration>\n )\n}\n"],"names":["Scripts","router","useRouter","nonce","options","ssr","assetScripts","useRouterState","select","state","manifest","matches","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","serverBufferedScript","undefined","serverSsr","takeBufferedScripts","allScripts","unshift","_$createComponent","NoHydration","_i","Asset"],"mappings":";;;;AAMO,MAAMA,UAAUA,MAAM;AAC3B,QAAMC,SAASC,UAAAA;AACf,QAAMC,QAAQF,OAAOG,QAAQC,KAAKF;AAClC,QAAMG,eAAeC,eAAe;AAAA,IAClCC,QAASC,CAAAA,UAAU;AACjB,YAAMH,gBAAwC,CAAA;AAC9C,YAAMI,WAAWT,OAAOI,KAAKK;AAE7B,UAAI,CAACA,UAAU;AACb,eAAO,CAAA;AAAA,MACT;AAEAD,YAAME,QACHC,IAAKC,CAAAA,UAAUZ,OAAOa,gBAAgBD,MAAME,OAAO,CAAE,EACrDC,QAASC,CAAAA,UACRP,SAASQ,OAAOD,MAAME,EAAE,GAAGC,QACvBC,OAAQC,CAAAA,MAAMA,EAAEC,QAAQ,QAAQ,EACjCP,QAASQ,CAAAA,UAAU;AAClBlB,sBAAamB,KAAK;AAAA,UAChBF,KAAK;AAAA,UACLG,OAAO;AAAA,YAAE,GAAGF,MAAME;AAAAA,YAAOvB;AAAAA,UAAAA;AAAAA,UACzBwB,UAAUH,MAAMG;AAAAA,QAAAA,CACV;AAAA,MACV,CAAC,CACL;AAEF,aAAOrB;AAAAA,IACT;AAAA,EAAA,CACD;AAED,QAAMsB,UAAUrB,eAAe;AAAA,IAC7BC,QAASC,CAAAA,WAAW;AAAA,MAClBmB,SACEnB,MAAME,QACHC,IAAKC,WAAUA,MAAMe,OAAQ,EAC7BC,KAAK,CAAC,EACNR,OAAOS,OAAO,EACjBlB,IAAI,CAAC;AAAA,QAAEe;AAAAA,QAAU,GAAGI;AAAAA,MAAAA,OAAc;AAAA,QAClCR,KAAK;AAAA,QACLG,OAAO;AAAA,UACL,GAAGK;AAAAA,UACH5B;AAAAA,QAAAA;AAAAA,QAEFwB;AAAAA,MAAAA,EACA;AAAA,IAAA;AAAA,EACJ,CACD;AAED,MAAIK,uBAAqDC;AAEzD,MAAIhC,OAAOiC,WAAW;AACpBF,2BAAuB/B,OAAOiC,UAAUC,oBAAAA;AAAAA,EAC1C;AAEA,QAAMC,aAAa,CACjB,GAAGR,QAAAA,EAAUA,SACb,GAAGtB,cAAc;AAGnB,MAAI0B,sBAAsB;AACxBI,eAAWC,QAAQL,oBAAoB;AAAA,EACzC;AAEA,SAAAM,gBACGC,aAAW;AAAA,IAAA,IAAAZ,WAAA;AAAA,aACTS,WAAWxB,IAAI,CAACY,OAAOgB,OAAEF,gBACvBG,OAAUjB,KAAK,CACjB;AAAA,IAAC;AAAA,EAAA,CAAA;AAGR;"}
|
package/dist/esm/Transitioner.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as Solid from "solid-js";
|
|
2
2
|
import { trimPathRight, getLocationChangeInfo, handleHashScroll } from "@tanstack/router-core";
|
|
3
|
-
import { isServer } from "@tanstack/router-core/isServer";
|
|
4
3
|
import { useRouter } from "./useRouter.js";
|
|
5
4
|
import { useRouterState } from "./useRouterState.js";
|
|
6
5
|
import { usePrevious } from "./utils.js";
|
|
@@ -15,10 +14,7 @@ function Transitioner() {
|
|
|
15
14
|
isLoading: isLoading2
|
|
16
15
|
}) => isLoading2
|
|
17
16
|
});
|
|
18
|
-
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
const [isSolidTransitioning, startSolidTransition] = Solid.useTransition();
|
|
17
|
+
const [isSolidTransitioning] = [() => false];
|
|
22
18
|
const hasPendingMatches = useRouterState({
|
|
23
19
|
select: (s) => s.matches.some((d) => d.status === "pending")
|
|
24
20
|
});
|
|
@@ -28,12 +24,11 @@ function Transitioner() {
|
|
|
28
24
|
const isPagePending = () => isLoading() || hasPendingMatches();
|
|
29
25
|
const previousIsPagePending = usePrevious(isPagePending);
|
|
30
26
|
router.startTransition = (fn) => {
|
|
31
|
-
Solid.
|
|
32
|
-
startSolidTransition(fn);
|
|
33
|
-
});
|
|
27
|
+
Solid.runWithOwner(null, fn);
|
|
34
28
|
};
|
|
35
|
-
Solid.
|
|
29
|
+
Solid.onSettled(() => {
|
|
36
30
|
const unsub = router.history.subscribe(router.load);
|
|
31
|
+
router.updateLatestLocation();
|
|
37
32
|
const nextLocation = router.buildLocation({
|
|
38
33
|
to: router.latestLocation.pathname,
|
|
39
34
|
search: true,
|
|
@@ -52,7 +47,7 @@ function Transitioner() {
|
|
|
52
47
|
unsub();
|
|
53
48
|
});
|
|
54
49
|
});
|
|
55
|
-
Solid.
|
|
50
|
+
Solid.createTrackedEffect(() => {
|
|
56
51
|
Solid.untrack(() => {
|
|
57
52
|
if (
|
|
58
53
|
// if we are hydrating from SSR, loading is triggered in ssr-client
|
|
@@ -74,23 +69,23 @@ function Transitioner() {
|
|
|
74
69
|
tryLoad();
|
|
75
70
|
});
|
|
76
71
|
});
|
|
77
|
-
Solid.
|
|
72
|
+
Solid.createEffect(() => [previousIsLoading(), isLoading()], ([previousIsLoading2, isLoading2]) => {
|
|
78
73
|
if (previousIsLoading2.previous && !isLoading2) {
|
|
79
74
|
router.emit({
|
|
80
75
|
type: "onLoad",
|
|
81
76
|
...getLocationChangeInfo(router.state)
|
|
82
77
|
});
|
|
83
78
|
}
|
|
84
|
-
})
|
|
85
|
-
Solid.
|
|
79
|
+
});
|
|
80
|
+
Solid.createEffect(() => [isPagePending(), previousIsPagePending()], ([isPagePending2, previousIsPagePending2]) => {
|
|
86
81
|
if (previousIsPagePending2.previous && !isPagePending2) {
|
|
87
82
|
router.emit({
|
|
88
83
|
type: "onBeforeRouteMount",
|
|
89
84
|
...getLocationChangeInfo(router.state)
|
|
90
85
|
});
|
|
91
86
|
}
|
|
92
|
-
})
|
|
93
|
-
Solid.
|
|
87
|
+
});
|
|
88
|
+
Solid.createEffect(() => [isAnyPending(), previousIsAnyPending()], ([isAnyPending2, previousIsAnyPending2]) => {
|
|
94
89
|
if (previousIsAnyPending2.previous && !isAnyPending2) {
|
|
95
90
|
const changeInfo = getLocationChangeInfo(router.state);
|
|
96
91
|
router.emit({
|
|
@@ -106,7 +101,7 @@ function Transitioner() {
|
|
|
106
101
|
handleHashScroll(router);
|
|
107
102
|
}
|
|
108
103
|
}
|
|
109
|
-
})
|
|
104
|
+
});
|
|
110
105
|
return null;
|
|
111
106
|
}
|
|
112
107
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport {
|
|
1
|
+
{"version":3,"file":"Transitioner.js","sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport { usePrevious } from './utils'\n\nexport function Transitioner() {\n const router = useRouter()\n let mountLoadForRouter = { router, mounted: false }\n const isLoading = useRouterState({\n select: ({ isLoading }) => isLoading,\n })\n\n const [isSolidTransitioning] = [() => false]\n\n // Track pending state changes\n const hasPendingMatches = useRouterState({\n select: (s) => s.matches.some((d) => d.status === 'pending'),\n })\n\n const previousIsLoading = usePrevious(isLoading)\n\n const isAnyPending = () =>\n isLoading() || isSolidTransitioning() || hasPendingMatches()\n const previousIsAnyPending = usePrevious(isAnyPending)\n\n const isPagePending = () => isLoading() || hasPendingMatches()\n const previousIsPagePending = usePrevious(isPagePending)\n\n router.startTransition = (fn: () => void | Promise<void>) => {\n Solid.runWithOwner(null, fn)\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onSettled(() => {\n const unsub = router.history.subscribe(router.load)\n\n // Refresh latestLocation from the current browser URL before comparing.\n // The URL may have been changed synchronously (e.g. via replaceState) after\n // render() but before this effect ran, so we must not use the stale\n // render-time location here.\n router.updateLatestLocation()\n\n const nextLocation = router.buildLocation({\n to: router.latestLocation.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n\n // Check if the current URL matches the canonical form.\n // Compare publicHref (browser-facing URL) for consistency with\n // the server-side redirect check in router.beforeLoad.\n if (\n trimPathRight(router.latestLocation.publicHref) !==\n trimPathRight(nextLocation.publicHref)\n ) {\n router.commitLocation({ ...nextLocation, replace: true })\n }\n\n Solid.onCleanup(() => {\n unsub()\n })\n })\n\n // Try to load the initial location\n Solid.createTrackedEffect(() => {\n Solid.untrack(() => {\n if (\n // if we are hydrating from SSR, loading is triggered in ssr-client\n (typeof window !== 'undefined' && router.ssr) ||\n (mountLoadForRouter.router === router && mountLoadForRouter.mounted)\n ) {\n return\n }\n mountLoadForRouter = { router, mounted: true }\n const tryLoad = async () => {\n try {\n await router.load()\n } catch (err) {\n console.error(err)\n }\n }\n tryLoad()\n })\n })\n\n Solid.createEffect(\n () => [previousIsLoading(), isLoading()] as const,\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n )\n\n Solid.createEffect(\n () => [isPagePending(), previousIsPagePending()] as const,\n ([isPagePending, previousIsPagePending]) => {\n // emit onBeforeRouteMount\n if (previousIsPagePending.previous && !isPagePending) {\n router.emit({\n type: 'onBeforeRouteMount',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n )\n\n Solid.createEffect(\n () => [isAnyPending(), previousIsAnyPending()] as const,\n ([isAnyPending, previousIsAnyPending]) => {\n if (previousIsAnyPending.previous && !isAnyPending) {\n const changeInfo = getLocationChangeInfo(router.state)\n router.emit({\n type: 'onResolved',\n ...changeInfo,\n })\n\n router.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n }))\n\n if (changeInfo.hrefChanged) {\n handleHashScroll(router)\n }\n }\n },\n )\n\n return null\n}\n"],"names":["Transitioner","router","useRouter","mountLoadForRouter","mounted","isLoading","useRouterState","select","isSolidTransitioning","hasPendingMatches","s","matches","some","d","status","previousIsLoading","usePrevious","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","Solid","runWithOwner","onSettled","unsub","history","subscribe","load","updateLatestLocation","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","trimPathRight","publicHref","commitLocation","replace","onCleanup","createTrackedEffect","untrack","window","ssr","tryLoad","err","console","error","createEffect","previous","emit","type","getLocationChangeInfo","changeInfo","__store","setState","resolvedLocation","location","hrefChanged","handleHashScroll"],"mappings":"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"}
|
package/dist/esm/awaited.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createComponent } from "
|
|
1
|
+
import { createComponent } from "@solidjs/web";
|
|
2
2
|
import * as Solid from "solid-js";
|
|
3
3
|
import { defer, TSR_DEFERRED_PROMISE } from "@tanstack/router-core";
|
|
4
4
|
function useAwaited({
|
|
@@ -13,23 +13,27 @@ function useAwaited({
|
|
|
13
13
|
}
|
|
14
14
|
return [promise[TSR_DEFERRED_PROMISE].data, promise];
|
|
15
15
|
}
|
|
16
|
+
function InnerAwait(props) {
|
|
17
|
+
const [data] = useAwaited({
|
|
18
|
+
promise: props.promise
|
|
19
|
+
});
|
|
20
|
+
return props.children(data);
|
|
21
|
+
}
|
|
16
22
|
function Await(props) {
|
|
17
|
-
|
|
18
|
-
() => defer(props.promise),
|
|
19
|
-
// Simple passthrough - just return the promise for Solid to await
|
|
20
|
-
(p) => p,
|
|
21
|
-
{
|
|
22
|
-
deferStream: true
|
|
23
|
-
}
|
|
24
|
-
);
|
|
25
|
-
return createComponent(Solid.Show, {
|
|
23
|
+
return createComponent(Solid.Loading, {
|
|
26
24
|
get fallback() {
|
|
27
25
|
return props.fallback;
|
|
28
26
|
},
|
|
29
|
-
get
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
get children() {
|
|
28
|
+
return createComponent(InnerAwait, {
|
|
29
|
+
get promise() {
|
|
30
|
+
return props.promise;
|
|
31
|
+
},
|
|
32
|
+
get children() {
|
|
33
|
+
return props.children;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
33
37
|
});
|
|
34
38
|
}
|
|
35
39
|
export {
|
package/dist/esm/awaited.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\
|
|
1
|
+
{"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nfunction InnerAwait<T>(props: {\n promise: Promise<T>\n children: (res: T) => SolidNode\n}) {\n const [data] = useAwaited({ promise: props.promise })\n return props.children(data) as any\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n return (\n <Solid.Loading fallback={props.fallback as any}>\n <InnerAwait promise={props.promise}>{props.children}</InnerAwait>\n </Solid.Loading>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","InnerAwait","props","children","Await","_$createComponent","Solid","Loading","fallback"],"mappings":";;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AAC3C,QAAMD,UAAUE,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,oBAAoB,EAAEC,WAAW,WAAW;AACtD,UAAMJ;AAAAA,EACR;AAEA,MAAIA,QAAQG,oBAAoB,EAAEC,WAAW,SAAS;AACpD,UAAMJ,QAAQG,oBAAoB,EAAEE;AAAAA,EACtC;AAEA,SAAO,CAACL,QAAQG,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEA,SAASO,WAAcC,OAGpB;AACD,QAAM,CAACF,IAAI,IAAIP,WAAW;AAAA,IAAEC,SAASQ,MAAMR;AAAAA,EAAAA,CAAS;AACpD,SAAOQ,MAAMC,SAASH,IAAI;AAC5B;AAEO,SAASI,MACdF,OAIA;AACA,SAAAG,gBACGC,MAAMC,SAAO;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAEN,MAAMM;AAAAA,IAAe;AAAA,IAAA,IAAAL,WAAA;AAAA,aAAAE,gBAC3CJ,YAAU;AAAA,QAAA,IAACP,UAAO;AAAA,iBAAEQ,MAAMR;AAAAA,QAAO;AAAA,QAAA,IAAAS,WAAA;AAAA,iBAAGD,MAAMC;AAAAA,QAAQ;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAGzD;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createComponent, Dynamic, mergeProps } from "
|
|
2
|
-
import { createResource } from "solid-js";
|
|
1
|
+
import { createComponent, Dynamic, mergeProps } from "@solidjs/web";
|
|
3
2
|
import { isModuleNotFoundError } from "@tanstack/router-core";
|
|
3
|
+
import { createMemo } from "solid-js";
|
|
4
4
|
function lazyRouteComponent(importer, exportName) {
|
|
5
5
|
let loadPromise;
|
|
6
6
|
let comp;
|
|
@@ -34,7 +34,7 @@ function lazyRouteComponent(importer, exportName) {
|
|
|
34
34
|
throw error;
|
|
35
35
|
}
|
|
36
36
|
if (!comp) {
|
|
37
|
-
const
|
|
37
|
+
const compResource = createMemo(load, {
|
|
38
38
|
initialValue: comp,
|
|
39
39
|
ssrLoadFrom: "initial"
|
|
40
40
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyRouteComponent.js","sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"lazyRouteComponent.js","sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import { isModuleNotFoundError } from '@tanstack/router-core'\nimport { Dynamic } from '@solidjs/web'\nimport { createMemo } from 'solid-js'\nimport type { AsyncRouteComponent } from './route'\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any> | undefined\n let comp: T[TKey] | T['default']\n let error: any\n\n const load = () => {\n if (!loadPromise) {\n loadPromise = importer()\n .then((res) => {\n loadPromise = undefined\n comp = res[exportName ?? 'default']\n return comp\n })\n .catch((err) => {\n error = err\n })\n }\n\n return loadPromise\n }\n\n const lazyComp = function Lazy(props: any) {\n // Now that we're out of preload and into actual render path,\n // throw the error if it was a module not found error during preload\n if (error) {\n // If the load fails due to module not found, it may mean a new version of\n // the build was deployed and the user's browser is still using an old version.\n // If this happens, the old version in the user's browser would have an outdated\n // URL to the lazy module.\n // In that case, we want to attempt one window refresh to get the latest.\n if (isModuleNotFoundError(error)) {\n // We don't want an error thrown from preload in this case, because\n // there's nothing we want to do about module not found during preload.\n // Record the error, recover the promise with a null return,\n // and we will attempt module not found resolution during the render path.\n\n if (\n error instanceof Error &&\n typeof window !== 'undefined' &&\n typeof sessionStorage !== 'undefined'\n ) {\n // Again, we want to reload one time on module not found error and not enter\n // a reload loop if there is some other issue besides an old deploy.\n // That's why we store our reload attempt in sessionStorage.\n // Use error.message as key because it contains the module path that failed.\n const storageKey = `tanstack_router_reload:${error.message}`\n if (!sessionStorage.getItem(storageKey)) {\n sessionStorage.setItem(storageKey, '1')\n window.location.reload()\n\n // Return empty component while we wait for window to reload\n return {\n default: () => null,\n }\n }\n }\n }\n\n // Otherwise, just throw the error\n throw error\n }\n\n if (!comp) {\n const compResource = createMemo(load, {\n initialValue: comp,\n ssrLoadFrom: 'initial',\n })\n return <Dynamic component={compResource()} {...props} />\n }\n\n return <Dynamic component={comp} {...props} />\n }\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n"],"names":["lazyRouteComponent","importer","exportName","loadPromise","comp","error","load","then","res","undefined","catch","err","lazyComp","Lazy","props","isModuleNotFoundError","Error","window","sessionStorage","storageKey","message","getItem","setItem","location","reload","default","compResource","createMemo","initialValue","ssrLoadFrom","_$createComponent","Dynamic","_$mergeProps","component","preload"],"mappings":";;;AAKO,SAASA,mBAIdC,UACAC,YAGQ;AACR,MAAIC;AACJ,MAAIC;AACJ,MAAIC;AAEJ,QAAMC,OAAOA,MAAM;AACjB,QAAI,CAACH,aAAa;AAChBA,oBAAcF,SAAAA,EACXM,KAAMC,CAAAA,QAAQ;AACbL,sBAAcM;AACdL,eAAOI,IAAIN,cAAc,SAAS;AAClC,eAAOE;AAAAA,MACT,CAAC,EACAM,MAAOC,CAAAA,QAAQ;AACdN,gBAAQM;AAAAA,MACV,CAAC;AAAA,IACL;AAEA,WAAOR;AAAAA,EACT;AAEA,QAAMS,WAAW,SAASC,KAAKC,OAAY;AAGzC,QAAIT,OAAO;AAMT,UAAIU,sBAAsBV,KAAK,GAAG;AAMhC,YACEA,iBAAiBW,SACjB,OAAOC,WAAW,eAClB,OAAOC,mBAAmB,aAC1B;AAKA,gBAAMC,aAAa,0BAA0Bd,MAAMe,OAAO;AAC1D,cAAI,CAACF,eAAeG,QAAQF,UAAU,GAAG;AACvCD,2BAAeI,QAAQH,YAAY,GAAG;AACtCF,mBAAOM,SAASC,OAAAA;AAGhB,mBAAO;AAAA,cACLC,SAASA,MAAM;AAAA,YAAA;AAAA,UAEnB;AAAA,QACF;AAAA,MACF;AAGA,YAAMpB;AAAAA,IACR;AAEA,QAAI,CAACD,MAAM;AACT,YAAMsB,eAAeC,WAAWrB,MAAM;AAAA,QACpCsB,cAAcxB;AAAAA,QACdyB,aAAa;AAAA,MAAA,CACd;AACD,aAAAC,gBAAQC,SAAOC,WAAA;AAAA,QAAA,IAACC,YAAS;AAAA,iBAAEP,aAAAA;AAAAA,QAAc;AAAA,MAAA,GAAMZ,KAAK,CAAA;AAAA,IACtD;AAEA,WAAAgB,gBAAQC,SAAOC,WAAA;AAAA,MAACC,WAAW7B;AAAAA,IAAAA,GAAUU,KAAK,CAAA;AAAA,EAC5C;AAEEF,WAAiBsB,UAAU5B;AAE7B,SAAOM;AACT;"}
|
package/dist/esm/link.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { createComponent, mergeProps, template, spread, insert, Dynamic, memo } from "
|
|
1
|
+
import { createComponent, mergeProps, template, spread, insert, Dynamic, memo } from "@solidjs/web";
|
|
2
2
|
import * as Solid from "solid-js";
|
|
3
|
-
import { mergeRefs } from "@solid-primitives/refs";
|
|
4
3
|
import { isDangerousProtocol, exactPathTest, removeTrailingSlash, deepEqual, functionalUpdate, preloadWarning } from "@tanstack/router-core";
|
|
5
4
|
import { isServer } from "@tanstack/router-core/isServer";
|
|
6
5
|
import { useRouterState } from "./useRouterState.js";
|
|
@@ -8,6 +7,18 @@ import { useRouter } from "./useRouter.js";
|
|
|
8
7
|
import { useIntersectionObserver } from "./utils.js";
|
|
9
8
|
import { useHydrated } from "./ClientOnly.js";
|
|
10
9
|
var _tmpl$ = /* @__PURE__ */ template(`<svg><a>`);
|
|
10
|
+
function mergeRefs(...refs) {
|
|
11
|
+
return (el) => {
|
|
12
|
+
for (const ref of refs) {
|
|
13
|
+
if (typeof ref === "function") {
|
|
14
|
+
ref(el);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function splitProps(props, keys) {
|
|
20
|
+
return [props, Solid.omit(props, ...keys)];
|
|
21
|
+
}
|
|
11
22
|
const timeoutMap = /* @__PURE__ */ new WeakMap();
|
|
12
23
|
function useLinkProps(options) {
|
|
13
24
|
const router = useRouter();
|
|
@@ -15,13 +26,13 @@ function useLinkProps(options) {
|
|
|
15
26
|
const shouldHydrateHash = !isServer && !!router.options.ssr;
|
|
16
27
|
const hasHydrated = useHydrated();
|
|
17
28
|
let hasRenderFetched = false;
|
|
18
|
-
const [local, rest] =
|
|
29
|
+
const [local, rest] = splitProps(Solid.merge({
|
|
19
30
|
activeProps: () => ({
|
|
20
31
|
class: "active"
|
|
21
32
|
}),
|
|
22
33
|
inactiveProps: () => ({})
|
|
23
34
|
}, options), ["activeProps", "inactiveProps", "activeOptions", "to", "preload", "preloadDelay", "hashScrollIntoView", "replace", "startTransition", "resetScroll", "viewTransition", "target", "disabled", "style", "class", "onClick", "onBlur", "onFocus", "onMouseEnter", "onMouseLeave", "onMouseOver", "onMouseOut", "onTouchStart", "ignoreBlocker"]);
|
|
24
|
-
const [_, propsSafeToSpread] =
|
|
35
|
+
const [_, propsSafeToSpread] = splitProps(rest, ["params", "search", "hash", "state", "mask", "reloadDocument", "unsafeRelative"]);
|
|
25
36
|
const currentLocation = useRouterState({
|
|
26
37
|
select: (s) => s.location
|
|
27
38
|
});
|
|
@@ -38,10 +49,11 @@ function useLinkProps(options) {
|
|
|
38
49
|
});
|
|
39
50
|
const from = options.from;
|
|
40
51
|
const _options = () => {
|
|
41
|
-
|
|
52
|
+
const result = {
|
|
42
53
|
...options,
|
|
43
54
|
from
|
|
44
55
|
};
|
|
56
|
+
return result;
|
|
45
57
|
};
|
|
46
58
|
const next = Solid.createMemo(() => {
|
|
47
59
|
buildLocationKey();
|
|
@@ -137,26 +149,31 @@ function useLinkProps(options) {
|
|
|
137
149
|
doPreload();
|
|
138
150
|
}
|
|
139
151
|
};
|
|
140
|
-
const [ref,
|
|
152
|
+
const [ref, setRefSignal] = Solid.createSignal(null);
|
|
153
|
+
const setRef = (el) => {
|
|
154
|
+
Solid.runWithOwner(null, () => {
|
|
155
|
+
setRefSignal(el);
|
|
156
|
+
});
|
|
157
|
+
};
|
|
141
158
|
useIntersectionObserver(ref, preloadViewportIoCallback, {
|
|
142
159
|
rootMargin: "100px"
|
|
143
160
|
}, {
|
|
144
|
-
disabled: !!local.disabled || !(preload
|
|
161
|
+
disabled: !!local.disabled || !(Solid.untrack(preload) === "viewport")
|
|
145
162
|
});
|
|
146
|
-
Solid.createEffect(() => {
|
|
163
|
+
Solid.createEffect(preload, (preloadValue) => {
|
|
147
164
|
if (hasRenderFetched) {
|
|
148
165
|
return;
|
|
149
166
|
}
|
|
150
|
-
if (!local.disabled &&
|
|
167
|
+
if (!local.disabled && preloadValue === "render") {
|
|
151
168
|
doPreload();
|
|
152
169
|
hasRenderFetched = true;
|
|
153
170
|
}
|
|
154
171
|
});
|
|
155
|
-
if (externalLink
|
|
156
|
-
return Solid.
|
|
157
|
-
ref: mergeRefs(setRef, _options().ref),
|
|
172
|
+
if (Solid.untrack(externalLink)) {
|
|
173
|
+
return Solid.merge(propsSafeToSpread, {
|
|
174
|
+
// ref: mergeRefs(setRef, _options().ref),
|
|
158
175
|
href: externalLink()
|
|
159
|
-
},
|
|
176
|
+
}, splitProps(local, ["target", "disabled", "style", "class", "onClick", "onBlur", "onFocus", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver", "onTouchStart"])[0]);
|
|
160
177
|
}
|
|
161
178
|
const handleClick = (e) => {
|
|
162
179
|
const elementTarget = e.currentTarget.getAttribute("target");
|
|
@@ -230,7 +247,7 @@ function useLinkProps(options) {
|
|
|
230
247
|
...resolvedActiveProps().style,
|
|
231
248
|
...resolvedInactiveProps().style
|
|
232
249
|
});
|
|
233
|
-
return Solid.
|
|
250
|
+
return Solid.merge(propsSafeToSpread, resolvedActiveProps, resolvedInactiveProps, () => {
|
|
234
251
|
return {
|
|
235
252
|
href: hrefOption()?.href,
|
|
236
253
|
ref: mergeRefs(setRef, _options().ref),
|
|
@@ -258,7 +275,7 @@ function useLinkProps(options) {
|
|
|
258
275
|
})(),
|
|
259
276
|
...local.disabled && {
|
|
260
277
|
role: "link",
|
|
261
|
-
"aria-disabled": true
|
|
278
|
+
"aria-disabled": "true"
|
|
262
279
|
},
|
|
263
280
|
...isActive() && {
|
|
264
281
|
"data-status": "active",
|
|
@@ -276,10 +293,11 @@ function createLink(Comp) {
|
|
|
276
293
|
}));
|
|
277
294
|
}
|
|
278
295
|
const Link = (props) => {
|
|
279
|
-
const [local, rest] =
|
|
280
|
-
const [_, linkProps] =
|
|
281
|
-
const
|
|
282
|
-
|
|
296
|
+
const [local, rest] = splitProps(props, ["_asChild", "children"]);
|
|
297
|
+
const [_, linkProps] = splitProps(useLinkProps(rest), ["type"]);
|
|
298
|
+
const resolvedChildren = Solid.children(() => local.children);
|
|
299
|
+
const children = () => {
|
|
300
|
+
const ch = resolvedChildren();
|
|
283
301
|
if (typeof ch === "function") {
|
|
284
302
|
return ch({
|
|
285
303
|
get isActive() {
|
|
@@ -291,9 +309,9 @@ const Link = (props) => {
|
|
|
291
309
|
});
|
|
292
310
|
}
|
|
293
311
|
return ch;
|
|
294
|
-
}
|
|
312
|
+
};
|
|
295
313
|
if (local._asChild === "svg") {
|
|
296
|
-
const [_2, svgLinkProps] =
|
|
314
|
+
const [_2, svgLinkProps] = splitProps(linkProps, ["class"]);
|
|
297
315
|
return (() => {
|
|
298
316
|
var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
|
|
299
317
|
spread(_el$2, svgLinkProps, false, true);
|