@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
27 lines • 1.19 kB
JSX
import * as Solid from 'solid-js';
import { composeSsrBodyScripts, getSsrBodyScriptParts, replaceEqualDeep, } from '@tanstack/router-core';
import { isServer } from '@tanstack/router-core/isServer';
import { Asset } from './Asset';
import { useRouter } from './useRouter';
/**
* During streaming SSR, `<Scripts>` marks where late hydration scripts may
* begin to be inserted.
*/
export const Scripts = () => {
const router = useRouter();
const nonce = router.options.ssr?.nonce;
const scripts = Solid.createMemo((previous) => {
const next = composeSsrBodyScripts(getSsrBodyScriptParts(router.stores.matches.get(), router.ssr?.manifest, nonce));
return previous ? replaceEqualDeep(previous, next) : next;
});
const initialHydrationScripts = (isServer ?? router.isServer) && router.serverSsr
? router.serverSsr.takeInitialHydrationScriptTags()
: undefined;
const tags = () => initialHydrationScripts
? composeSsrBodyScripts([scripts(), []], initialHydrationScripts)
: scripts();
return (<>
<Solid.For each={tags()}>{(asset) => <Asset {...asset}/>}</Solid.For>
</>);
};
//# sourceMappingURL=Scripts.jsx.map