UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

45 lines 1.75 kB
import * as Solid from 'solid-js'; import { _getAssetMatches, replaceEqualDeep } from '@tanstack/router-core'; import { isServer } from '@tanstack/router-core/isServer'; import { Asset } from './Asset'; import { useRouter } from './useRouter'; export const Scripts = () => { const router = useRouter(); const nonce = router.options.ssr?.nonce; const scripts = Solid.createMemo((previous) => { const matches = _getAssetMatches(router.stores.matches.get()); const next = []; const assets = []; const manifest = router.ssr?.manifest; for (const match of matches) { for (const script of match.scripts ?? []) { if (!script) { continue; } const { children, ...attrs } = script; next.push({ tag: 'script', attrs: { ...attrs, nonce }, children: children, }); } for (const asset of manifest?.routes[match.routeId]?.scripts ?? []) { assets.push({ tag: 'script', attrs: { ...asset.attrs, nonce }, children: asset.children, }); } } next.push(...assets); return previous ? replaceEqualDeep(previous, next) : next; }); const serverBufferedScript = (isServer ?? router.isServer) && router.serverSsr ? router.serverSsr.takeBufferedScripts() : undefined; return (<> {serverBufferedScript && <Asset {...serverBufferedScript}/>} <Solid.For each={scripts()}>{(asset) => <Asset {...asset}/>}</Solid.For> </>); }; //# sourceMappingURL=Scripts.jsx.map