"use client"; import { useHydrated } from "./ClientOnly.js"; import { useRouter } from "./useRouter.js"; import * as React$1 from "react"; import { isServer } from "@tanstack/router-core/isServer"; import { jsx } from "react/jsx-runtime"; //#region src/Asset.tsx var INLINE_CSS_HYDRATION_ATTR = "data-tsr-inline-css"; var noopScriptHandler = () => {}; function setScriptAttrs(script, attrs) { if (!attrs) return; for (const [key, value] of Object.entries(attrs)) if (key !== "suppressHydrationWarning" && value !== void 0 && value !== false) script.setAttribute(key, typeof value === "boolean" ? "" : String(value)); } function Asset(asset) { const { attrs, children, nonce, preventScriptHoist } = asset; switch (asset.tag) { case "title": return /* @__PURE__ */ jsx("title", { ...attrs, suppressHydrationWarning: true, children }); case "meta": return /* @__PURE__ */ jsx("meta", { ...attrs, suppressHydrationWarning: true }); case "link": return /* @__PURE__ */ jsx("link", { ...attrs, precedence: attrs?.precedence ?? (attrs?.rel === "stylesheet" ? "default" : void 0), nonce, suppressHydrationWarning: true }); case "style": if (asset.inlineCss && (process.env.TSS_INLINE_CSS_ENABLED === "true" || process.env.TSS_INLINE_CSS_ENABLED === void 0 && isServer)) return /* @__PURE__ */ jsx(InlineCssStyle, { attrs, nonce, children }); return /* @__PURE__ */ jsx("style", { ...attrs, dangerouslySetInnerHTML: { __html: children }, nonce }); case "script": return /* @__PURE__ */ jsx(Script, { attrs, preventScriptHoist, children }); default: return null; } } function InlineCssStyle({ attrs, children, nonce }) { const isInlineCssPlaceholder = children === void 0; const [hydratedInlineCss] = React$1.useState(() => { if (!isInlineCssPlaceholder || typeof document === "undefined") return; return document.querySelector(`style[${INLINE_CSS_HYDRATION_ATTR}]`)?.textContent ?? void 0; }); const html = isInlineCssPlaceholder ? hydratedInlineCss ?? "" : children ?? ""; return /* @__PURE__ */ jsx("style", { ...attrs, [INLINE_CSS_HYDRATION_ATTR]: "", dangerouslySetInnerHTML: { __html: html }, nonce, suppressHydrationWarning: true }); } function Script({ attrs, children, preventScriptHoist }) { const router = useRouter(); const hydrated = useHydrated(); const dataScript = typeof attrs?.type === "string" && attrs.type !== "" && attrs.type !== "text/javascript" && attrs.type !== "module"; if (process.env.NODE_ENV !== "production" && attrs?.src && typeof children === "string" && children.trim().length) console.warn("[TanStack Router]