@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
56 lines (55 loc) • 1.94 kB
JavaScript
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
const require_useRouter = require("./useRouter.cjs");
const require_Asset = require("./Asset.cjs");
let _solidjs_web = require("@solidjs/web");
let solid_js = require("solid-js");
solid_js = require_runtime.__toESM(solid_js);
//#region src/Scripts.tsx
var Scripts = () => {
const router = require_useRouter.useRouter();
const nonce = router.options.ssr?.nonce;
const activeMatches = solid_js.createMemo(() => router.stores.activeMatchesSnapshot.state);
const assetScripts = solid_js.createMemo(() => {
const assetScripts = [];
const manifest = router.ssr?.manifest;
if (!manifest) return [];
activeMatches().map((match) => router.looseRoutesById[match.routeId]).forEach((route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
assetScripts.push({
tag: "script",
attrs: {
...asset.attrs,
nonce
},
children: asset.children
});
}));
return assetScripts;
});
const scripts = solid_js.createMemo(() => activeMatches().map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
tag: "script",
attrs: {
...script,
nonce
},
children
})));
const serverBufferedScript = router.serverSsr ? router.serverSsr.takeBufferedScripts() : void 0;
const allScripts = solid_js.createMemo(() => {
const result = [...scripts(), ...assetScripts()];
if (serverBufferedScript) result.unshift(serverBufferedScript);
return result;
});
return (0, _solidjs_web.createComponent)(_solidjs_web.NoHydration, { get children() {
return (0, _solidjs_web.createComponent)(solid_js.For, {
get each() {
return allScripts();
},
children: (asset) => {
return (0, _solidjs_web.createComponent)(require_Asset.Asset, solid_js.untrack(asset));
}
});
} });
};
//#endregion
exports.Scripts = Scripts;
//# sourceMappingURL=Scripts.cjs.map