@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
41 lines (40 loc) • 1.8 kB
JavaScript
require("./_virtual/_rolldown/runtime.cjs");
const require_ClientOnly = require("./ClientOnly.cjs");
const require_Asset = require("./Asset.cjs");
const require_headContentUtils = require("./headContentUtils.cjs");
let solid_js_web = require("solid-js/web");
let solid_js = require("solid-js");
let _solidjs_meta = require("@solidjs/meta");
//#region src/HeadContent.dev.tsx
var DEV_STYLES_ATTR = "data-tanstack-router-dev-styles";
/**
* @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.
* When using full document hydration (hydrating from `<html>`), this component should be rendered in the `<body>`
* to ensure it's part of the reactive tree and updates correctly during client-side navigation.
* The component uses portals internally to render content into the `<head>` element.
*
* Development version: filters out dev styles link after hydration and
* includes a fallback cleanup effect for hydration mismatch cases.
*/
function HeadContent() {
const tags = require_headContentUtils.useTags();
const hydrated = require_ClientOnly.useHydrated();
(0, solid_js.createEffect)(() => {
if (hydrated()) document.querySelectorAll(`link[${DEV_STYLES_ATTR}]`).forEach((el) => el.remove());
});
const filteredTags = (0, solid_js.createMemo)(() => {
if (hydrated()) return tags().filter((tag) => !tag.attrs?.[DEV_STYLES_ATTR]);
return tags();
});
return (0, solid_js_web.createComponent)(_solidjs_meta.MetaProvider, { get children() {
return (0, solid_js_web.createComponent)(solid_js.For, {
get each() {
return filteredTags();
},
children: (tag) => (0, solid_js_web.createComponent)(require_Asset.Asset, tag)
});
} });
}
//#endregion
exports.HeadContent = HeadContent;
//# sourceMappingURL=HeadContent.dev.cjs.map