@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
53 lines (52 loc) • 1.98 kB
JavaScript
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
const require_useRouter = require("./useRouter.cjs");
const require_Asset = require("./Asset.cjs");
let solid_js_web = require("solid-js/web");
let solid_js = require("solid-js");
solid_js = require_runtime.__toESM(solid_js, 1);
let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer");
//#region src/Scripts.tsx
var Scripts = () => {
const router = require_useRouter.useRouter();
const nonce = router.options.ssr?.nonce;
const getAssetScripts = (matches) => {
const assetScripts = [];
const manifest = router.ssr?.manifest;
if (!manifest) return [];
for (const match of matches) {
const scripts = manifest.routes[match.routeId]?.scripts;
if (!scripts) continue;
for (const asset of scripts) assetScripts.push({
tag: "script",
attrs: {
...asset.attrs,
nonce
},
children: asset.children
});
}
return assetScripts;
};
const getScripts = (matches) => matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
tag: "script",
attrs: {
...script,
nonce
},
children
}));
const activeMatches = solid_js.createMemo(() => router.stores.matches.get());
const assetScripts = solid_js.createMemo(() => getAssetScripts(activeMatches()));
return renderScripts(router, solid_js.createMemo(() => getScripts(activeMatches()))(), assetScripts());
};
function renderScripts(router, scripts, assetScripts) {
const allScripts = [...scripts, ...assetScripts];
if ((_tanstack_router_core_isServer.isServer ?? router.isServer) && router.serverSsr) {
const serverBufferedScript = router.serverSsr.takeBufferedScripts();
if (serverBufferedScript) allScripts.unshift(serverBufferedScript);
}
return (0, solid_js_web.memo)(() => allScripts.map((asset) => (0, solid_js_web.createComponent)(require_Asset.Asset, asset)));
}
//#endregion
exports.Scripts = Scripts;
//# sourceMappingURL=Scripts.cjs.map