@tanstack/react-router
Version:
Modern and scalable routing for React applications
57 lines (56 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const Asset = require("./Asset.cjs");
const useRouterState = require("./useRouterState.cjs");
const useRouter = require("./useRouter.cjs");
const Scripts = () => {
const router = useRouter.useRouter();
const nonce = router.options.ssr?.nonce;
const assetScripts = useRouterState.useRouterState({
select: (state) => {
const assetScripts2 = [];
const manifest = router.ssr?.manifest;
if (!manifest) {
return [];
}
state.matches.map((match) => router.looseRoutesById[match.routeId]).forEach(
(route) => manifest.routes[route.id]?.assets?.filter((d) => d.tag === "script").forEach((asset) => {
assetScripts2.push({
tag: "script",
attrs: { ...asset.attrs, nonce },
children: asset.children
});
})
);
return assetScripts2;
},
structuralSharing: true
});
const { scripts } = useRouterState.useRouterState({
select: (state) => ({
scripts: state.matches.map((match) => match.scripts).flat(1).filter(Boolean).map(({ children, ...script }) => ({
tag: "script",
attrs: {
...script,
suppressHydrationWarning: true,
nonce
},
children
}))
}),
structuralSharing: true
});
let serverBufferedScript = void 0;
if (router.serverSsr) {
serverBufferedScript = router.serverSsr.takeBufferedScripts();
}
const allScripts = [...scripts, ...assetScripts];
if (serverBufferedScript) {
allScripts.unshift(serverBufferedScript);
}
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: allScripts.map((asset, i) => /* @__PURE__ */ React.createElement(Asset.Asset, { ...asset, key: `tsr-scripts-${asset.tag}-${i}` })) });
};
exports.Scripts = Scripts;
//# sourceMappingURL=Scripts.cjs.map