@tanstack/react-router
Version:
Modern and scalable routing for React applications
44 lines (43 loc) • 1.99 kB
JavaScript
const require_useRouter = require("./useRouter.cjs");
const require_Asset = require("./Asset.cjs");
let _tanstack_router_core = require("@tanstack/router-core");
let react = require("react");
let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer");
let react_jsx_runtime = require("react/jsx-runtime");
let _tanstack_react_store = require("@tanstack/react-store");
//#region src/Scripts.tsx
var routeScriptAttrs = { suppressHydrationWarning: true };
/**
* Render body script tags collected from route matches and SSR manifests.
* During streaming SSR, `<Scripts>` marks where late hydration scripts may
* begin to be inserted.
*/
var Scripts = () => {
const router = require_useRouter.useRouter();
const nonce = router.options.ssr?.nonce;
const getParts = (matches) => {
const parts = (0, _tanstack_router_core.getSsrBodyScriptParts)(matches, router.ssr?.manifest, nonce, routeScriptAttrs);
for (const script of parts[1]) if (typeof script.attrs?.src === "string") {
const scriptWithHoist = script;
scriptWithHoist.preventScriptHoist = true;
}
return parts;
};
const getScripts = (matches) => {
return (0, _tanstack_router_core.composeSsrBodyScripts)(getParts(matches));
};
if (_tanstack_router_core_isServer.isServer ?? router.isServer) {
const activeMatches = router.stores.matches.get();
return renderScripts((0, _tanstack_router_core.composeSsrBodyScripts)(getParts(activeMatches), router.serverSsr?.takeInitialHydrationScriptTags()));
}
return renderScripts((0, _tanstack_react_store.useSelector)(router.stores.matches, getScripts, { compare: _tanstack_router_core.deepEqual }));
};
function renderScripts(scripts) {
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: scripts.map((asset, i) => /* @__PURE__ */ (0, react.createElement)(require_Asset.Asset, {
...asset,
key: `tsr-scripts-${asset.tag}-${i}`
})) });
}
//#endregion
exports.Scripts = Scripts;
//# sourceMappingURL=Scripts.cjs.map