UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

87 lines (86 loc) 3.75 kB
require("./_virtual/_rolldown/runtime.cjs"); const require_useRouter = require("./useRouter.cjs"); let solid_js_web = require("solid-js/web"); let solid_js = require("solid-js"); let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer"); let _solidjs_meta = require("@solidjs/meta"); //#region src/Asset.tsx var _tmpl$ = /* @__PURE__ */ (0, solid_js_web.template)(`<script>`); function Asset({ tag, attrs, children }) { switch (tag) { case "title": return (0, solid_js_web.createComponent)(_solidjs_meta.Title, (0, solid_js_web.mergeProps)(attrs, { children })); case "meta": return (0, solid_js_web.createComponent)(_solidjs_meta.Meta, attrs); case "link": return (0, solid_js_web.createComponent)(_solidjs_meta.Link, attrs); case "style": return (0, solid_js_web.createComponent)(_solidjs_meta.Style, (0, solid_js_web.mergeProps)(attrs, { children })); case "script": return (0, solid_js_web.createComponent)(Script, { attrs, children }); default: return null; } } function Script({ attrs, children }) { const router = require_useRouter.useRouter(); const dataScript = typeof attrs?.type === "string" && attrs.type !== "" && attrs.type !== "text/javascript" && attrs.type !== "module"; (0, solid_js.onMount)(() => { if (dataScript) return; if (attrs?.src) { const normSrc = (() => { try { const base = document.baseURI || window.location.href; return new URL(attrs.src, base).href; } catch { return attrs.src; } })(); if (Array.from(document.querySelectorAll("script[src]")).find((el) => el.src === normSrc)) return; const script = document.createElement("script"); for (const [key, value] of Object.entries(attrs)) if (value !== void 0 && value !== false) script.setAttribute(key, typeof value === "boolean" ? "" : String(value)); document.head.appendChild(script); (0, solid_js.onCleanup)(() => { if (script.parentNode) script.parentNode.removeChild(script); }); } if (typeof children === "string") { const typeAttr = typeof attrs?.type === "string" ? attrs.type : "text/javascript"; const nonceAttr = typeof attrs?.nonce === "string" ? attrs.nonce : void 0; if (Array.from(document.querySelectorAll("script:not([src])")).find((el) => { if (!(el instanceof HTMLScriptElement)) return false; const sType = el.getAttribute("type") ?? "text/javascript"; const sNonce = el.getAttribute("nonce") ?? void 0; return el.textContent === children && sType === typeAttr && sNonce === nonceAttr; })) return; const script = document.createElement("script"); script.textContent = children; if (attrs) { for (const [key, value] of Object.entries(attrs)) if (value !== void 0 && value !== false) script.setAttribute(key, typeof value === "boolean" ? "" : String(value)); } document.head.appendChild(script); (0, solid_js.onCleanup)(() => { if (script.parentNode) script.parentNode.removeChild(script); }); } }); if (!(_tanstack_router_core_isServer.isServer ?? router.isServer)) { if (dataScript && typeof children === "string") return (() => { var _el$ = _tmpl$(); (0, solid_js_web.spread)(_el$, (0, solid_js_web.mergeProps)(attrs, { "innerHTML": children }), false, false); return _el$; })(); return null; } if (attrs?.src && typeof attrs.src === "string") return (() => { var _el$2 = _tmpl$(); (0, solid_js_web.spread)(_el$2, attrs, false, false); return _el$2; })(); if (typeof children === "string") return (() => { var _el$3 = _tmpl$(); (0, solid_js_web.spread)(_el$3, (0, solid_js_web.mergeProps)(attrs, { "innerHTML": children }), false, false); return _el$3; })(); return null; } //#endregion exports.Asset = Asset; //# sourceMappingURL=Asset.cjs.map