@tanstack/solid-router 1.167.0 → 1.167.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Asset.cjs +84 -127
- package/dist/cjs/Asset.cjs.map +1 -1
- package/dist/cjs/CatchBoundary.cjs +50 -68
- package/dist/cjs/CatchBoundary.cjs.map +1 -1
- package/dist/cjs/ClientOnly.cjs +61 -39
- package/dist/cjs/ClientOnly.cjs.map +1 -1
- package/dist/cjs/HeadContent.cjs +25 -19
- package/dist/cjs/HeadContent.cjs.map +1 -1
- package/dist/cjs/HeadContent.dev.cjs +38 -33
- package/dist/cjs/HeadContent.dev.cjs.map +1 -1
- package/dist/cjs/Match.cjs +330 -398
- package/dist/cjs/Match.cjs.map +1 -1
- package/dist/cjs/Matches.cjs +109 -151
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/RouterProvider.cjs +28 -40
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/SafeFragment.cjs +7 -5
- package/dist/cjs/SafeFragment.cjs.map +1 -1
- package/dist/cjs/ScriptOnce.cjs +18 -20
- package/dist/cjs/ScriptOnce.cjs.map +1 -1
- package/dist/cjs/Scripts.cjs +41 -54
- package/dist/cjs/Scripts.cjs.map +1 -1
- package/dist/cjs/ScrollRestoration.cjs +26 -28
- package/dist/cjs/ScrollRestoration.cjs.map +1 -1
- package/dist/cjs/Transitioner.cjs +94 -129
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/awaited.cjs +24 -51
- package/dist/cjs/awaited.cjs.map +1 -1
- package/dist/cjs/fileRoute.cjs +96 -91
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/headContentUtils.cjs +132 -170
- package/dist/cjs/headContentUtils.cjs.map +1 -1
- package/dist/cjs/index.cjs +245 -176
- package/dist/cjs/index.dev.cjs +245 -176
- package/dist/cjs/lazyRouteComponent.cjs +48 -54
- package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
- package/dist/cjs/link.cjs +304 -331
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/matchContext.cjs +9 -23
- package/dist/cjs/matchContext.cjs.map +1 -1
- package/dist/cjs/not-found.cjs +26 -34
- package/dist/cjs/not-found.cjs.map +1 -1
- package/dist/cjs/renderRouteNotFound.cjs +23 -16
- package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
- package/dist/cjs/route.cjs +200 -215
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/router.cjs +18 -16
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/routerContext.cjs +8 -22
- package/dist/cjs/routerContext.cjs.map +1 -1
- package/dist/cjs/scroll-restoration.cjs +25 -35
- package/dist/cjs/scroll-restoration.cjs.map +1 -1
- package/dist/cjs/ssr/RouterClient.cjs +31 -42
- package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
- package/dist/cjs/ssr/RouterServer.cjs +44 -51
- package/dist/cjs/ssr/RouterServer.cjs.map +1 -1
- package/dist/cjs/ssr/client.cjs +2 -4
- package/dist/cjs/ssr/defaultRenderHandler.cjs +12 -16
- package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -1
- package/dist/cjs/ssr/defaultStreamHandler.cjs +13 -18
- package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToStream.cjs +27 -55
- package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
- package/dist/cjs/ssr/renderRouterToString.cjs +33 -57
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
- package/dist/cjs/ssr/server.cjs +18 -18
- package/dist/cjs/useBlocker.cjs +138 -173
- package/dist/cjs/useBlocker.cjs.map +1 -1
- package/dist/cjs/useBlocker.d.cts +8 -5
- package/dist/cjs/useCanGoBack.cjs +6 -5
- package/dist/cjs/useCanGoBack.cjs.map +1 -1
- package/dist/cjs/useLoaderData.cjs +12 -11
- package/dist/cjs/useLoaderData.cjs.map +1 -1
- package/dist/cjs/useLoaderDeps.cjs +12 -14
- package/dist/cjs/useLoaderDeps.cjs.map +1 -1
- package/dist/cjs/useLocation.cjs +6 -7
- package/dist/cjs/useLocation.cjs.map +1 -1
- package/dist/cjs/useMatch.cjs +27 -49
- package/dist/cjs/useMatch.cjs.map +1 -1
- package/dist/cjs/useNavigate.cjs +20 -38
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/cjs/useParams.cjs +14 -13
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/cjs/useRouteContext.cjs +9 -8
- package/dist/cjs/useRouteContext.cjs.map +1 -1
- package/dist/cjs/useRouter.cjs +13 -26
- package/dist/cjs/useRouter.cjs.map +1 -1
- package/dist/cjs/useRouterState.cjs +29 -37
- package/dist/cjs/useRouterState.cjs.map +1 -1
- package/dist/cjs/useSearch.cjs +13 -12
- package/dist/cjs/useSearch.cjs.map +1 -1
- package/dist/cjs/utils.cjs +58 -51
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/esm/Asset.js +82 -126
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/CatchBoundary.js +46 -50
- package/dist/esm/CatchBoundary.js.map +1 -1
- package/dist/esm/ClientOnly.js +58 -22
- package/dist/esm/ClientOnly.js.map +1 -1
- package/dist/esm/HeadContent.dev.js +36 -32
- package/dist/esm/HeadContent.dev.js.map +1 -1
- package/dist/esm/HeadContent.js +23 -18
- package/dist/esm/HeadContent.js.map +1 -1
- package/dist/esm/Match.js +322 -378
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.js +102 -135
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.js +25 -39
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/SafeFragment.js +6 -5
- package/dist/esm/SafeFragment.js.map +1 -1
- package/dist/esm/ScriptOnce.js +16 -19
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/Scripts.js +40 -54
- package/dist/esm/Scripts.js.map +1 -1
- package/dist/esm/ScrollRestoration.js +25 -29
- package/dist/esm/ScrollRestoration.js.map +1 -1
- package/dist/esm/Transitioner.js +90 -110
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/awaited.js +21 -34
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/fileRoute.js +90 -92
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/headContentUtils.js +129 -152
- package/dist/esm/headContentUtils.js.map +1 -1
- package/dist/esm/index.dev.js +15 -115
- package/dist/esm/index.js +17 -116
- package/dist/esm/lazyRouteComponent.js +47 -54
- package/dist/esm/lazyRouteComponent.js.map +1 -1
- package/dist/esm/link.js +299 -314
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/matchContext.js +7 -7
- package/dist/esm/matchContext.js.map +1 -1
- package/dist/esm/not-found.js +23 -33
- package/dist/esm/not-found.js.map +1 -1
- package/dist/esm/renderRouteNotFound.js +20 -15
- package/dist/esm/renderRouteNotFound.js.map +1 -1
- package/dist/esm/route.js +193 -218
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.js +17 -17
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/routerContext.js +6 -5
- package/dist/esm/routerContext.js.map +1 -1
- package/dist/esm/scroll-restoration.js +23 -34
- package/dist/esm/scroll-restoration.js.map +1 -1
- package/dist/esm/ssr/RouterClient.js +29 -41
- package/dist/esm/ssr/RouterClient.js.map +1 -1
- package/dist/esm/ssr/RouterServer.js +40 -48
- package/dist/esm/ssr/RouterServer.js.map +1 -1
- package/dist/esm/ssr/client.js +1 -4
- package/dist/esm/ssr/defaultRenderHandler.js +11 -15
- package/dist/esm/ssr/defaultRenderHandler.js.map +1 -1
- package/dist/esm/ssr/defaultStreamHandler.js +12 -17
- package/dist/esm/ssr/defaultStreamHandler.js.map +1 -1
- package/dist/esm/ssr/renderRouterToStream.js +24 -37
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
- package/dist/esm/ssr/renderRouterToString.js +31 -40
- package/dist/esm/ssr/renderRouterToString.js.map +1 -1
- package/dist/esm/ssr/server.js +3 -10
- package/dist/esm/useBlocker.d.ts +8 -5
- package/dist/esm/useBlocker.js +134 -155
- package/dist/esm/useBlocker.js.map +1 -1
- package/dist/esm/useCanGoBack.js +6 -5
- package/dist/esm/useCanGoBack.js.map +1 -1
- package/dist/esm/useLoaderData.js +12 -11
- package/dist/esm/useLoaderData.js.map +1 -1
- package/dist/esm/useLoaderDeps.js +12 -14
- package/dist/esm/useLoaderDeps.js.map +1 -1
- package/dist/esm/useLocation.js +6 -7
- package/dist/esm/useLocation.js.map +1 -1
- package/dist/esm/useMatch.js +23 -31
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/useNavigate.js +18 -22
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useParams.js +14 -13
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/useRouteContext.js +9 -8
- package/dist/esm/useRouteContext.js.map +1 -1
- package/dist/esm/useRouter.js +9 -8
- package/dist/esm/useRouter.js.map +1 -1
- package/dist/esm/useRouterState.js +28 -37
- package/dist/esm/useRouterState.js.map +1 -1
- package/dist/esm/useSearch.js +13 -12
- package/dist/esm/useSearch.js.map +1 -1
- package/dist/esm/utils.js +56 -35
- package/dist/esm/utils.js.map +1 -1
- package/dist/source/useBlocker.d.ts +8 -5
- package/dist/source/useBlocker.jsx +2 -2
- package/dist/source/useBlocker.jsx.map +1 -1
- package/package.json +3 -3
- package/src/useBlocker.tsx +15 -10
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/index.dev.cjs.map +0 -1
- package/dist/cjs/ssr/client.cjs.map +0 -1
- package/dist/cjs/ssr/server.cjs.map +0 -1
- package/dist/esm/index.dev.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/ssr/client.js.map +0 -1
- package/dist/esm/ssr/server.js.map +0 -1
package/dist/esm/Scripts.js
CHANGED
|
@@ -1,56 +1,42 @@
|
|
|
1
|
-
import { memo, createComponent } from "solid-js/web";
|
|
2
|
-
import { Asset } from "./Asset.js";
|
|
3
|
-
import { useRouterState } from "./useRouterState.js";
|
|
4
1
|
import { useRouter } from "./useRouter.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
})
|
|
42
|
-
});
|
|
43
|
-
let serverBufferedScript = void 0;
|
|
44
|
-
if (router.serverSsr) {
|
|
45
|
-
serverBufferedScript = router.serverSsr.takeBufferedScripts();
|
|
46
|
-
}
|
|
47
|
-
const allScripts = [...scripts().scripts, ...assetScripts()];
|
|
48
|
-
if (serverBufferedScript) {
|
|
49
|
-
allScripts.unshift(serverBufferedScript);
|
|
50
|
-
}
|
|
51
|
-
return memo(() => allScripts.map((asset, i) => createComponent(Asset, asset)));
|
|
52
|
-
};
|
|
53
|
-
export {
|
|
54
|
-
Scripts
|
|
2
|
+
import { useRouterState } from "./useRouterState.js";
|
|
3
|
+
import { Asset } from "./Asset.js";
|
|
4
|
+
import { createComponent, memo } from "solid-js/web";
|
|
5
|
+
//#region src/Scripts.tsx
|
|
6
|
+
var Scripts = () => {
|
|
7
|
+
const router = useRouter();
|
|
8
|
+
const nonce = router.options.ssr?.nonce;
|
|
9
|
+
const assetScripts = useRouterState({ select: (state) => {
|
|
10
|
+
const assetScripts = [];
|
|
11
|
+
const manifest = router.ssr?.manifest;
|
|
12
|
+
if (!manifest) return [];
|
|
13
|
+
state.matches.map((match) => router.looseRoutesById[match.routeId]).forEach((route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
|
|
14
|
+
assetScripts.push({
|
|
15
|
+
tag: "script",
|
|
16
|
+
attrs: {
|
|
17
|
+
...asset.attrs,
|
|
18
|
+
nonce
|
|
19
|
+
},
|
|
20
|
+
children: asset.children
|
|
21
|
+
});
|
|
22
|
+
}));
|
|
23
|
+
return assetScripts;
|
|
24
|
+
} });
|
|
25
|
+
const scripts = useRouterState({ select: (state) => ({ scripts: state.matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
|
|
26
|
+
tag: "script",
|
|
27
|
+
attrs: {
|
|
28
|
+
...script,
|
|
29
|
+
nonce
|
|
30
|
+
},
|
|
31
|
+
children
|
|
32
|
+
})) }) });
|
|
33
|
+
let serverBufferedScript = void 0;
|
|
34
|
+
if (router.serverSsr) serverBufferedScript = router.serverSsr.takeBufferedScripts();
|
|
35
|
+
const allScripts = [...scripts().scripts, ...assetScripts()];
|
|
36
|
+
if (serverBufferedScript) allScripts.unshift(serverBufferedScript);
|
|
37
|
+
return memo(() => allScripts.map((asset, i) => createComponent(Asset, asset)));
|
|
55
38
|
};
|
|
56
|
-
//#
|
|
39
|
+
//#endregion
|
|
40
|
+
export { Scripts };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=Scripts.js.map
|
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 <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} />\n ))}\n </>\n )\n}\n"],"
|
|
1
|
+
{"version":3,"file":"Scripts.js","names":["Asset","useRouterState","useRouter","RouterManagedTag","Scripts","router","nonce","options","ssr","assetScripts","select","state","Array","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","_$memo","i","_$createComponent"],"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 <>\n {allScripts.map((asset, i) => (\n <Asset {...asset} />\n ))}\n </>\n )\n}\n"],"mappings":";;;;;AAKA,IAAaI,gBAAgB;CAC3B,MAAMC,SAASH,WAAW;CAC1B,MAAMI,QAAQD,OAAOE,QAAQC,KAAKF;CAClC,MAAMG,eAAeR,eAAe,EAClCS,SAASC,UAAU;EACjB,MAAMF,eAAwC,EAAE;EAChD,MAAMI,WAAWR,OAAOG,KAAKK;AAE7B,MAAI,CAACA,SACH,QAAO,EAAE;AAGXF,QAAMG,QACHC,KAAKC,UAAUX,OAAOY,gBAAgBD,MAAME,SAAU,CACtDC,SAASC,UACRP,SAASQ,OAAOD,MAAME,KAAKC,QACvBC,QAAQC,MAAMA,EAAEC,QAAQ,SAAS,CAClCP,SAASQ,UAAU;AAClBlB,gBAAamB,KAAK;IAChBF,KAAK;IACLG,OAAO;KAAE,GAAGF,MAAME;KAAOvB;KAAO;IAChCwB,UAAUH,MAAMG;IACjB,CAAQ;IAEf,CAAC;AAEH,SAAOrB;IAEV,CAAC;CAEF,MAAMsB,UAAU9B,eAAe,EAC7BS,SAASC,WAAW,EAClBoB,SACEpB,MAAMG,QACHC,KAAKC,UAAUA,MAAMe,QAAS,CAC9BC,KAAK,EAAE,CACPR,OAAOS,QAAQ,CAClBlB,KAAK,EAAEe,UAAU,GAAGI,cAAc;EAClCR,KAAK;EACLG,OAAO;GACL,GAAGK;GACH5B;GACD;EACDwB;EACD,EAAC,EACH,GACF,CAAC;CAEF,IAAIK,uBAAqDC,KAAAA;AAEzD,KAAI/B,OAAOgC,UACTF,wBAAuB9B,OAAOgC,UAAUC,qBAAqB;CAG/D,MAAMC,aAAa,CACjB,GAAGR,SAAS,CAACA,SACb,GAAGtB,cAAc,CAClB;AAED,KAAI0B,qBACFI,YAAWC,QAAQL,qBAAqB;AAG1C,QAAAM,WAEKF,WAAWxB,KAAKY,OAAOe,MAACC,gBACtB3C,OAAU2B,MACZ,CAAC,CAAA"}
|
|
@@ -1,36 +1,32 @@
|
|
|
1
|
-
import { defaultGetScrollRestorationKey, getCssSelector, scrollRestorationCache, setupScrollRestoration } from "@tanstack/router-core";
|
|
2
1
|
import { useRouter } from "./useRouter.js";
|
|
2
|
+
import { defaultGetScrollRestorationKey, getCssSelector, scrollRestorationCache, setupScrollRestoration } from "@tanstack/router-core";
|
|
3
|
+
//#region src/ScrollRestoration.tsx
|
|
3
4
|
function useScrollRestoration() {
|
|
4
|
-
|
|
5
|
-
setupScrollRestoration(router, true);
|
|
5
|
+
setupScrollRestoration(useRouter(), true);
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated use createRouter's `scrollRestoration` option instead
|
|
9
|
+
*/
|
|
7
10
|
function ScrollRestoration(_props) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
return null;
|
|
11
|
+
useScrollRestoration();
|
|
12
|
+
if (process.env.NODE_ENV === "development") console.warn("The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.");
|
|
13
|
+
return null;
|
|
13
14
|
}
|
|
14
15
|
function useElementScrollRestoration(options) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
const restoreKey = getKey(router.latestLocation);
|
|
29
|
-
const byKey = scrollRestorationCache?.state[restoreKey];
|
|
30
|
-
return byKey?.[elementSelector];
|
|
16
|
+
useScrollRestoration();
|
|
17
|
+
const router = useRouter();
|
|
18
|
+
const getKey = options.getKey || defaultGetScrollRestorationKey;
|
|
19
|
+
let elementSelector = "";
|
|
20
|
+
if (options.id) elementSelector = `[data-scroll-restoration-id="${options.id}"]`;
|
|
21
|
+
else {
|
|
22
|
+
const element = options.getElement?.();
|
|
23
|
+
if (!element) return;
|
|
24
|
+
elementSelector = element instanceof Window ? "window" : getCssSelector(element);
|
|
25
|
+
}
|
|
26
|
+
const restoreKey = getKey(router.latestLocation);
|
|
27
|
+
return (scrollRestorationCache?.state[restoreKey])?.[elementSelector];
|
|
31
28
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//# sourceMappingURL=ScrollRestoration.js.map
|
|
29
|
+
//#endregion
|
|
30
|
+
export { ScrollRestoration, useElementScrollRestoration };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=ScrollRestoration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollRestoration.js","sources":["../../src/ScrollRestoration.tsx"],"sourcesContent":["import {\n defaultGetScrollRestorationKey,\n getCssSelector,\n scrollRestorationCache,\n setupScrollRestoration,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport type {\n ParsedLocation,\n ScrollRestorationEntry,\n ScrollRestorationOptions,\n} from '@tanstack/router-core'\n\nfunction useScrollRestoration() {\n const router = useRouter()\n setupScrollRestoration(router, true)\n}\n\n/**\n * @deprecated use createRouter's `scrollRestoration` option instead\n */\nexport function ScrollRestoration(_props: ScrollRestorationOptions) {\n useScrollRestoration()\n\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n \"The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.\",\n )\n }\n\n return null\n}\n\nexport function useElementScrollRestoration(\n options: (\n | {\n id: string\n getElement?: () => Window | Element | undefined | null\n }\n | {\n id?: string\n getElement: () => Window | Element | undefined | null\n }\n ) & {\n getKey?: (location: ParsedLocation) => string\n },\n): ScrollRestorationEntry | undefined {\n useScrollRestoration()\n\n const router = useRouter()\n const getKey = options.getKey || defaultGetScrollRestorationKey\n\n let elementSelector = ''\n\n if (options.id) {\n elementSelector = `[data-scroll-restoration-id=\"${options.id}\"]`\n } else {\n const element = options.getElement?.()\n if (!element) {\n return\n }\n elementSelector =\n element instanceof Window ? 'window' : getCssSelector(element)\n }\n\n const restoreKey = getKey(router.latestLocation)\n const byKey = scrollRestorationCache?.state[restoreKey]\n return byKey?.[elementSelector]\n}\n"],"
|
|
1
|
+
{"version":3,"file":"ScrollRestoration.js","names":["defaultGetScrollRestorationKey","getCssSelector","scrollRestorationCache","setupScrollRestoration","useRouter","ParsedLocation","ScrollRestorationEntry","ScrollRestorationOptions","useScrollRestoration","router","ScrollRestoration","_props","process","env","NODE_ENV","console","warn","useElementScrollRestoration","options","id","getElement","Window","Element","getKey","location","elementSelector","element","restoreKey","latestLocation","byKey","state"],"sources":["../../src/ScrollRestoration.tsx"],"sourcesContent":["import {\n defaultGetScrollRestorationKey,\n getCssSelector,\n scrollRestorationCache,\n setupScrollRestoration,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport type {\n ParsedLocation,\n ScrollRestorationEntry,\n ScrollRestorationOptions,\n} from '@tanstack/router-core'\n\nfunction useScrollRestoration() {\n const router = useRouter()\n setupScrollRestoration(router, true)\n}\n\n/**\n * @deprecated use createRouter's `scrollRestoration` option instead\n */\nexport function ScrollRestoration(_props: ScrollRestorationOptions) {\n useScrollRestoration()\n\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n \"The ScrollRestoration component is deprecated. Use createRouter's `scrollRestoration` option instead.\",\n )\n }\n\n return null\n}\n\nexport function useElementScrollRestoration(\n options: (\n | {\n id: string\n getElement?: () => Window | Element | undefined | null\n }\n | {\n id?: string\n getElement: () => Window | Element | undefined | null\n }\n ) & {\n getKey?: (location: ParsedLocation) => string\n },\n): ScrollRestorationEntry | undefined {\n useScrollRestoration()\n\n const router = useRouter()\n const getKey = options.getKey || defaultGetScrollRestorationKey\n\n let elementSelector = ''\n\n if (options.id) {\n elementSelector = `[data-scroll-restoration-id=\"${options.id}\"]`\n } else {\n const element = options.getElement?.()\n if (!element) {\n return\n }\n elementSelector =\n element instanceof Window ? 'window' : getCssSelector(element)\n }\n\n const restoreKey = getKey(router.latestLocation)\n const byKey = scrollRestorationCache?.state[restoreKey]\n return byKey?.[elementSelector]\n}\n"],"mappings":";;;AAaA,SAASQ,uBAAuB;AAE9BL,wBADeC,WAAW,EACK,KAAK;;;;;AAMtC,SAAgBM,kBAAkBC,QAAkC;AAClEH,uBAAsB;AAEtB,KAAA,QAAA,IAAA,aAA6B,cAC3BO,SAAQC,KACN,wGACD;AAGH,QAAO;;AAGT,SAAgBC,4BACdC,SAYoC;AACpCV,uBAAsB;CAEtB,MAAMC,SAASL,WAAW;CAC1B,MAAMmB,SAASL,QAAQK,UAAUvB;CAEjC,IAAIyB,kBAAkB;AAEtB,KAAIP,QAAQC,GACVM,mBAAkB,gCAAgCP,QAAQC,GAAE;MACvD;EACL,MAAMO,UAAUR,QAAQE,cAAc;AACtC,MAAI,CAACM,QACH;AAEFD,oBACEC,mBAAmBL,SAAS,WAAWpB,eAAeyB,QAAQ;;CAGlE,MAAMC,aAAaJ,OAAOd,OAAOmB,eAAe;AAEhD,SADc1B,wBAAwB4B,MAAMH,eAC7BF"}
|
package/dist/esm/Transitioner.js
CHANGED
|
@@ -1,115 +1,95 @@
|
|
|
1
|
-
import * as Solid from "solid-js";
|
|
2
|
-
import { trimPathRight, getLocationChangeInfo, handleHashScroll } from "@tanstack/router-core";
|
|
3
|
-
import { isServer } from "@tanstack/router-core/isServer";
|
|
4
1
|
import { useRouter } from "./useRouter.js";
|
|
5
2
|
import { useRouterState } from "./useRouterState.js";
|
|
6
3
|
import { usePrevious } from "./utils.js";
|
|
4
|
+
import { getLocationChangeInfo, handleHashScroll, trimPathRight } from "@tanstack/router-core";
|
|
5
|
+
import * as Solid from "solid-js";
|
|
6
|
+
import { isServer } from "@tanstack/router-core/isServer";
|
|
7
|
+
//#region src/Transitioner.tsx
|
|
7
8
|
function Transitioner() {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}));
|
|
93
|
-
Solid.createRenderEffect(Solid.on([isAnyPending, previousIsAnyPending], ([isAnyPending2, previousIsAnyPending2]) => {
|
|
94
|
-
if (previousIsAnyPending2.previous && !isAnyPending2) {
|
|
95
|
-
const changeInfo = getLocationChangeInfo(router.state);
|
|
96
|
-
router.emit({
|
|
97
|
-
type: "onResolved",
|
|
98
|
-
...changeInfo
|
|
99
|
-
});
|
|
100
|
-
router.__store.setState((s) => ({
|
|
101
|
-
...s,
|
|
102
|
-
status: "idle",
|
|
103
|
-
resolvedLocation: s.location
|
|
104
|
-
}));
|
|
105
|
-
if (changeInfo.hrefChanged) {
|
|
106
|
-
handleHashScroll(router);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}));
|
|
110
|
-
return null;
|
|
9
|
+
const router = useRouter();
|
|
10
|
+
let mountLoadForRouter = {
|
|
11
|
+
router,
|
|
12
|
+
mounted: false
|
|
13
|
+
};
|
|
14
|
+
const isLoading = useRouterState({ select: ({ isLoading }) => isLoading });
|
|
15
|
+
if (isServer ?? router.isServer) return null;
|
|
16
|
+
const [isSolidTransitioning, startSolidTransition] = Solid.useTransition();
|
|
17
|
+
const hasPendingMatches = useRouterState({ select: (s) => s.matches.some((d) => d.status === "pending") });
|
|
18
|
+
const previousIsLoading = usePrevious(isLoading);
|
|
19
|
+
const isAnyPending = () => isLoading() || isSolidTransitioning() || hasPendingMatches();
|
|
20
|
+
const previousIsAnyPending = usePrevious(isAnyPending);
|
|
21
|
+
const isPagePending = () => isLoading() || hasPendingMatches();
|
|
22
|
+
const previousIsPagePending = usePrevious(isPagePending);
|
|
23
|
+
router.startTransition = (fn) => {
|
|
24
|
+
Solid.startTransition(() => {
|
|
25
|
+
startSolidTransition(fn);
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
Solid.onMount(() => {
|
|
29
|
+
const unsub = router.history.subscribe(router.load);
|
|
30
|
+
const nextLocation = router.buildLocation({
|
|
31
|
+
to: router.latestLocation.pathname,
|
|
32
|
+
search: true,
|
|
33
|
+
params: true,
|
|
34
|
+
hash: true,
|
|
35
|
+
state: true,
|
|
36
|
+
_includeValidateSearch: true
|
|
37
|
+
});
|
|
38
|
+
if (trimPathRight(router.latestLocation.publicHref) !== trimPathRight(nextLocation.publicHref)) router.commitLocation({
|
|
39
|
+
...nextLocation,
|
|
40
|
+
replace: true
|
|
41
|
+
});
|
|
42
|
+
Solid.onCleanup(() => {
|
|
43
|
+
unsub();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
Solid.createRenderEffect(() => {
|
|
47
|
+
Solid.untrack(() => {
|
|
48
|
+
if (typeof window !== "undefined" && router.ssr || mountLoadForRouter.router === router && mountLoadForRouter.mounted) return;
|
|
49
|
+
mountLoadForRouter = {
|
|
50
|
+
router,
|
|
51
|
+
mounted: true
|
|
52
|
+
};
|
|
53
|
+
const tryLoad = async () => {
|
|
54
|
+
try {
|
|
55
|
+
await router.load();
|
|
56
|
+
} catch (err) {
|
|
57
|
+
console.error(err);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
tryLoad();
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
Solid.createRenderEffect(Solid.on([previousIsLoading, isLoading], ([previousIsLoading, isLoading]) => {
|
|
64
|
+
if (previousIsLoading.previous && !isLoading) router.emit({
|
|
65
|
+
type: "onLoad",
|
|
66
|
+
...getLocationChangeInfo(router.state)
|
|
67
|
+
});
|
|
68
|
+
}));
|
|
69
|
+
Solid.createComputed(Solid.on([isPagePending, previousIsPagePending], ([isPagePending, previousIsPagePending]) => {
|
|
70
|
+
if (previousIsPagePending.previous && !isPagePending) router.emit({
|
|
71
|
+
type: "onBeforeRouteMount",
|
|
72
|
+
...getLocationChangeInfo(router.state)
|
|
73
|
+
});
|
|
74
|
+
}));
|
|
75
|
+
Solid.createRenderEffect(Solid.on([isAnyPending, previousIsAnyPending], ([isAnyPending, previousIsAnyPending]) => {
|
|
76
|
+
if (previousIsAnyPending.previous && !isAnyPending) {
|
|
77
|
+
const changeInfo = getLocationChangeInfo(router.state);
|
|
78
|
+
router.emit({
|
|
79
|
+
type: "onResolved",
|
|
80
|
+
...changeInfo
|
|
81
|
+
});
|
|
82
|
+
router.__store.setState((s) => ({
|
|
83
|
+
...s,
|
|
84
|
+
status: "idle",
|
|
85
|
+
resolvedLocation: s.location
|
|
86
|
+
}));
|
|
87
|
+
if (changeInfo.hrefChanged) handleHashScroll(router);
|
|
88
|
+
}
|
|
89
|
+
}));
|
|
90
|
+
return null;
|
|
111
91
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
//# sourceMappingURL=Transitioner.js.map
|
|
92
|
+
//#endregion
|
|
93
|
+
export { Transitioner };
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=Transitioner.js.map
|
|
@@ -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 { isServer } from '@tanstack/router-core/isServer'\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 if (isServer ?? router.isServer) {\n return null\n }\n\n const [isSolidTransitioning, startSolidTransition] = Solid.useTransition()\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.startTransition(() => {\n startSolidTransition(fn)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onMount(() => {\n const unsub = router.history.subscribe(router.load)\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.createRenderEffect(() => {\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.createRenderEffect(\n Solid.on(\n [previousIsLoading, isLoading],\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createComputed(\n Solid.on(\n [isPagePending, previousIsPagePending],\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\n Solid.createRenderEffect(\n Solid.on(\n [isAnyPending, previousIsAnyPending],\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\n return null\n}\n"],"
|
|
1
|
+
{"version":3,"file":"Transitioner.js","names":["Solid","getLocationChangeInfo","handleHashScroll","trimPathRight","isServer","useRouter","useRouterState","usePrevious","Transitioner","router","mountLoadForRouter","mounted","isLoading","select","isSolidTransitioning","startSolidTransition","useTransition","hasPendingMatches","s","matches","some","d","status","previousIsLoading","isAnyPending","previousIsAnyPending","isPagePending","previousIsPagePending","startTransition","fn","Promise","onMount","unsub","history","subscribe","load","nextLocation","buildLocation","to","latestLocation","pathname","search","params","hash","state","_includeValidateSearch","publicHref","commitLocation","replace","onCleanup","createRenderEffect","untrack","window","ssr","tryLoad","err","console","error","on","previous","emit","type","createComputed","changeInfo","__store","setState","resolvedLocation","location","hrefChanged"],"sources":["../../src/Transitioner.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport {\n getLocationChangeInfo,\n handleHashScroll,\n trimPathRight,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\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 if (isServer ?? router.isServer) {\n return null\n }\n\n const [isSolidTransitioning, startSolidTransition] = Solid.useTransition()\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.startTransition(() => {\n startSolidTransition(fn)\n })\n }\n\n // Subscribe to location changes\n // and try to load the new location\n Solid.onMount(() => {\n const unsub = router.history.subscribe(router.load)\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.createRenderEffect(() => {\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.createRenderEffect(\n Solid.on(\n [previousIsLoading, isLoading],\n ([previousIsLoading, isLoading]) => {\n if (previousIsLoading.previous && !isLoading) {\n router.emit({\n type: 'onLoad',\n ...getLocationChangeInfo(router.state),\n })\n }\n },\n ),\n )\n\n Solid.createComputed(\n Solid.on(\n [isPagePending, previousIsPagePending],\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\n Solid.createRenderEffect(\n Solid.on(\n [isAnyPending, previousIsAnyPending],\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\n return null\n}\n"],"mappings":";;;;;;;AAWA,SAAgBQ,eAAe;CAC7B,MAAMC,SAASJ,WAAW;CAC1B,IAAIK,qBAAqB;EAAED;EAAQE,SAAS;EAAO;CACnD,MAAMC,YAAYN,eAAe,EAC/BO,SAAS,EAAED,gBAAgBA,WAC5B,CAAC;AAEF,KAAIR,YAAYK,OAAOL,SACrB,QAAO;CAGT,MAAM,CAACU,sBAAsBC,wBAAwBf,MAAMgB,eAAe;CAG1E,MAAMC,oBAAoBX,eAAe,EACvCO,SAASK,MAAMA,EAAEC,QAAQC,MAAMC,MAAMA,EAAEC,WAAW,UAAS,EAC5D,CAAC;CAEF,MAAMC,oBAAoBhB,YAAYK,UAAU;CAEhD,MAAMY,qBACJZ,WAAW,IAAIE,sBAAsB,IAAIG,mBAAmB;CAC9D,MAAMQ,uBAAuBlB,YAAYiB,aAAa;CAEtD,MAAME,sBAAsBd,WAAW,IAAIK,mBAAmB;CAC9D,MAAMU,wBAAwBpB,YAAYmB,cAAc;AAExDjB,QAAOmB,mBAAmBC,OAAmC;AAC3D7B,QAAM4B,sBAAsB;AAC1Bb,wBAAqBc,GAAG;IACxB;;AAKJ7B,OAAM+B,cAAc;EAClB,MAAMC,QAAQvB,OAAOwB,QAAQC,UAAUzB,OAAO0B,KAAK;EAEnD,MAAMC,eAAe3B,OAAO4B,cAAc;GACxCC,IAAI7B,OAAO8B,eAAeC;GAC1BC,QAAQ;GACRC,QAAQ;GACRC,MAAM;GACNC,OAAO;GACPC,wBAAwB;GACzB,CAAC;AAKF,MACE1C,cAAcM,OAAO8B,eAAeO,WAAW,KAC/C3C,cAAciC,aAAaU,WAAW,CAEtCrC,QAAOsC,eAAe;GAAE,GAAGX;GAAcY,SAAS;GAAM,CAAC;AAG3DhD,QAAMiD,gBAAgB;AACpBjB,UAAO;IACP;GACF;AAGFhC,OAAMkD,yBAAyB;AAC7BlD,QAAMmD,cAAc;AAClB,OAEG,OAAOC,WAAW,eAAe3C,OAAO4C,OACxC3C,mBAAmBD,WAAWA,UAAUC,mBAAmBC,QAE5D;AAEFD,wBAAqB;IAAED;IAAQE,SAAS;IAAM;GAC9C,MAAM2C,UAAU,YAAY;AAC1B,QAAI;AACF,WAAM7C,OAAO0B,MAAM;aACZoB,KAAK;AACZC,aAAQC,MAAMF,IAAI;;;AAGtBD,YAAS;IACT;GACF;AAEFtD,OAAMkD,mBACJlD,MAAM0D,GACJ,CAACnC,mBAAmBX,UAAU,GAC7B,CAACW,mBAAmBX,eAAe;AAClC,MAAIW,kBAAkBoC,YAAY,CAAC/C,UACjCH,QAAOmD,KAAK;GACVC,MAAM;GACN,GAAG5D,sBAAsBQ,OAAOmC,MAAK;GACtC,CAAC;GAIV,CAAC;AAED5C,OAAM8D,eACJ9D,MAAM0D,GACJ,CAAChC,eAAeC,sBAAsB,GACrC,CAACD,eAAeC,2BAA2B;AAE1C,MAAIA,sBAAsBgC,YAAY,CAACjC,cACrCjB,QAAOmD,KAAK;GACVC,MAAM;GACN,GAAG5D,sBAAsBQ,OAAOmC,MAAK;GACtC,CAAC;GAIV,CAAC;AAED5C,OAAMkD,mBACJlD,MAAM0D,GACJ,CAAClC,cAAcC,qBAAqB,GACnC,CAACD,cAAcC,0BAA0B;AACxC,MAAIA,qBAAqBkC,YAAY,CAACnC,cAAc;GAClD,MAAMuC,aAAa9D,sBAAsBQ,OAAOmC,MAAM;AACtDnC,UAAOmD,KAAK;IACVC,MAAM;IACN,GAAGE;IACJ,CAAC;AAEFtD,UAAOuD,QAAQC,UAAU/C,OAAO;IAC9B,GAAGA;IACHI,QAAQ;IACR4C,kBAAkBhD,EAAEiD;IACrB,EAAE;AAEH,OAAIJ,WAAWK,YACblE,kBAAiBO,OAAO;;GAKlC,CAAC;AAED,QAAO"}
|
package/dist/esm/awaited.js
CHANGED
|
@@ -1,39 +1,26 @@
|
|
|
1
|
+
import { TSR_DEFERRED_PROMISE, defer } from "@tanstack/router-core";
|
|
1
2
|
import { createComponent } from "solid-js/web";
|
|
2
3
|
import * as Solid from "solid-js";
|
|
3
|
-
|
|
4
|
-
function useAwaited({
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
throw promise;
|
|
10
|
-
}
|
|
11
|
-
if (promise[TSR_DEFERRED_PROMISE].status === "error") {
|
|
12
|
-
throw promise[TSR_DEFERRED_PROMISE].error;
|
|
13
|
-
}
|
|
14
|
-
return [promise[TSR_DEFERRED_PROMISE].data, promise];
|
|
4
|
+
//#region src/awaited.tsx
|
|
5
|
+
function useAwaited({ promise: _promise }) {
|
|
6
|
+
const promise = defer(_promise);
|
|
7
|
+
if (promise[TSR_DEFERRED_PROMISE].status === "pending") throw promise;
|
|
8
|
+
if (promise[TSR_DEFERRED_PROMISE].status === "error") throw promise[TSR_DEFERRED_PROMISE].error;
|
|
9
|
+
return [promise[TSR_DEFERRED_PROMISE].data, promise];
|
|
15
10
|
}
|
|
16
11
|
function Await(props) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return props.fallback;
|
|
28
|
-
},
|
|
29
|
-
get when() {
|
|
30
|
-
return resource();
|
|
31
|
-
},
|
|
32
|
-
children: (data) => props.children(data())
|
|
33
|
-
});
|
|
12
|
+
const [resource] = Solid.createResource(() => defer(props.promise), (p) => p, { deferStream: true });
|
|
13
|
+
return createComponent(Solid.Show, {
|
|
14
|
+
get fallback() {
|
|
15
|
+
return props.fallback;
|
|
16
|
+
},
|
|
17
|
+
get when() {
|
|
18
|
+
return resource();
|
|
19
|
+
},
|
|
20
|
+
children: (data) => props.children(data())
|
|
21
|
+
});
|
|
34
22
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=awaited.js.map
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Await, useAwaited };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=awaited.js.map
|
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\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(\n () => defer(props.promise),\n // Simple passthrough - just return the promise for Solid to await\n (p) => p,\n {\n deferStream: true,\n },\n )\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"
|
|
1
|
+
{"version":3,"file":"awaited.js","names":["Solid","TSR_DEFERRED_PROMISE","defer","DeferredPromise","SolidNode","AwaitOptions","promise","Promise","T","useAwaited","_promise","status","error","data","Await","props","fallback","children","result","resource","createResource","p","deferStream","_$createComponent","Show","when"],"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\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(\n () => defer(props.promise),\n // Simple passthrough - just return the promise for Solid to await\n (p) => p,\n {\n deferStream: true,\n },\n )\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"mappings":";;;;AAUA,SAAgBS,WAAc,EAC5BH,SAASI,YACkC;CAC3C,MAAMJ,UAAUJ,MAAMQ,SAAS;AAE/B,KAAIJ,QAAQL,sBAAsBU,WAAW,UAC3C,OAAML;AAGR,KAAIA,QAAQL,sBAAsBU,WAAW,QAC3C,OAAML,QAAQL,sBAAsBW;AAGtC,QAAO,CAACN,QAAQL,sBAAsBY,MAAMP,QAAQ;;AAGtD,SAAgBQ,MACdC,OAIA;CACA,MAAM,CAACI,YAAYnB,MAAMoB,qBACjBlB,MAAMa,MAAMT,QAAQ,GAEzBe,MAAMA,GACP,EACEC,aAAa,MAEjB,CAAC;AAED,QAAAC,gBACGvB,MAAMwB,MAAI;EAAA,IAACR,WAAQ;AAAA,UAAED,MAAMC;;EAAQ,IAAES,OAAI;AAAA,UAAEN,UAAU;;EAAAF,WAClDJ,SAASE,MAAME,SAASJ,MAAM,CAAA;EAAC,CAAA"}
|