@pyreon/head 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/context.ts","../src/provider.tsx","../src/ssr.ts","../src/dom.ts","../src/use-head.ts"],"sourcesContent":["import { createContext } from \"@pyreon/core\"\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface HeadTag {\n /** HTML tag name */\n tag: \"title\" | \"meta\" | \"link\" | \"script\" | \"style\" | \"base\" | \"noscript\"\n /**\n * Deduplication key. Tags with the same key replace each other;\n * innermost component (last added) wins.\n * Example: all components setting the page title use key \"title\".\n */\n key?: string\n /** HTML attributes for the tag */\n props?: Record<string, string>\n /** Text content — for <title>, <script>, <style>, <noscript> */\n children?: string\n}\n\nexport interface UseHeadInput {\n title?: string\n /**\n * Title template — use `%s` as a placeholder for the page title.\n * Applied to the resolved title after deduplication.\n * @example useHead({ titleTemplate: \"%s | My App\" })\n */\n titleTemplate?: string | ((title: string) => string)\n meta?: Record<string, string>[]\n link?: Record<string, string>[]\n script?: ({ src?: string; children?: string } & Record<string, string | undefined>)[]\n style?: ({ children: string } & Record<string, string | undefined>)[]\n noscript?: { children: string }[]\n /** Convenience: emits a <script type=\"application/ld+json\"> tag with JSON.stringify'd content */\n jsonLd?: Record<string, unknown> | Record<string, unknown>[]\n base?: Record<string, string>\n /** Attributes to set on the <html> element (e.g. { lang: \"en\", dir: \"ltr\" }) */\n htmlAttrs?: Record<string, string>\n /** Attributes to set on the <body> element (e.g. { class: \"dark\" }) */\n bodyAttrs?: Record<string, string>\n}\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\nexport interface HeadEntry {\n tags: HeadTag[]\n titleTemplate?: string | ((title: string) => string) | undefined\n htmlAttrs?: Record<string, string> | undefined\n bodyAttrs?: Record<string, string> | undefined\n}\n\nexport interface HeadContextValue {\n add(id: symbol, entry: HeadEntry): void\n remove(id: symbol): void\n /** Returns deduplicated tags — last-added entry wins per key */\n resolve(): HeadTag[]\n /** Returns the merged titleTemplate (last-added wins) */\n resolveTitleTemplate(): (string | ((title: string) => string)) | undefined\n /** Returns merged htmlAttrs (later entries override earlier) */\n resolveHtmlAttrs(): Record<string, string>\n /** Returns merged bodyAttrs (later entries override earlier) */\n resolveBodyAttrs(): Record<string, string>\n}\n\nexport function createHeadContext(): HeadContextValue {\n const map = new Map<symbol, HeadEntry>()\n return {\n add(id, entry) {\n map.set(id, entry)\n },\n remove(id) {\n map.delete(id)\n },\n resolve() {\n const keyed = new Map<string, HeadTag>()\n const unkeyed: HeadTag[] = []\n for (const entry of map.values()) {\n for (const tag of entry.tags) {\n if (tag.key) keyed.set(tag.key, tag)\n else unkeyed.push(tag)\n }\n }\n return [...keyed.values(), ...unkeyed]\n },\n resolveTitleTemplate() {\n let template: (string | ((title: string) => string)) | undefined\n for (const entry of map.values()) {\n if (entry.titleTemplate !== undefined) template = entry.titleTemplate\n }\n return template\n },\n resolveHtmlAttrs() {\n const attrs: Record<string, string> = {}\n for (const entry of map.values()) {\n if (entry.htmlAttrs) Object.assign(attrs, entry.htmlAttrs)\n }\n return attrs\n },\n resolveBodyAttrs() {\n const attrs: Record<string, string> = {}\n for (const entry of map.values()) {\n if (entry.bodyAttrs) Object.assign(attrs, entry.bodyAttrs)\n }\n return attrs\n },\n }\n}\n\nexport const HeadContext = createContext<HeadContextValue | null>(null)\n","import type { ComponentFn, Props, VNodeChild } from \"@pyreon/core\"\nimport { onUnmount, popContext, pushContext } from \"@pyreon/core\"\nimport type { HeadContextValue } from \"./context\"\nimport { createHeadContext, HeadContext } from \"./context\"\n\nexport interface HeadProviderProps extends Props {\n context?: HeadContextValue | undefined\n children?: VNodeChild\n}\n\n/**\n * Provides a HeadContextValue to all descendant components.\n * Wrap your app root with this to enable useHead() throughout the tree.\n *\n * If no `context` prop is passed, a new HeadContext is created automatically.\n *\n * @example\n * // Auto-create context:\n * <HeadProvider><App /></HeadProvider>\n *\n * // Explicit context (e.g. for SSR):\n * const headCtx = createHeadContext()\n * mount(h(HeadProvider, { context: headCtx }, h(App, null)), root)\n */\nexport const HeadProvider: ComponentFn<HeadProviderProps> = (props) => {\n const ctx = props.context ?? createHeadContext()\n // Push context frame synchronously (before children mount) so all descendants\n // can read HeadContext via useContext(). Pop on unmount for correct cleanup.\n const frame = new Map([[HeadContext.id, ctx]])\n pushContext(frame)\n onUnmount(() => popContext())\n\n const ch = props.children\n return (typeof ch === \"function\" ? (ch as () => VNodeChild)() : ch) as ReturnType<ComponentFn>\n}\n","import type { ComponentFn, VNode } from \"@pyreon/core\"\nimport { h, pushContext } from \"@pyreon/core\"\nimport { renderToString } from \"@pyreon/runtime-server\"\nimport type { HeadTag } from \"./context\"\nimport { createHeadContext, HeadContext } from \"./context\"\n\nconst VOID_TAGS = new Set([\"meta\", \"link\", \"base\"])\n\n/**\n * Render a Pyreon app to an HTML fragment + a serialized <head> string.\n *\n * The returned `head` string can be injected directly into your HTML template:\n *\n * @example\n * const { html, head } = await renderWithHead(h(App, null))\n * const page = `<!DOCTYPE html>\n * <html>\n * <head>\n * <meta charset=\"UTF-8\" />\n * ${head}\n * </head>\n * <body><div id=\"app\">${html}</div></body>\n * </html>`\n */\nexport interface RenderWithHeadResult {\n html: string\n head: string\n /** Attributes to set on the <html> element */\n htmlAttrs: Record<string, string>\n /** Attributes to set on the <body> element */\n bodyAttrs: Record<string, string>\n}\n\nexport async function renderWithHead(app: VNode): Promise<RenderWithHeadResult> {\n const ctx = createHeadContext()\n\n // HeadInjector runs inside renderToString's ALS scope, so pushContext reaches\n // the per-request context stack rather than the module-level fallback stack.\n function HeadInjector(): VNode {\n pushContext(new Map([[HeadContext.id, ctx]]))\n return app\n }\n\n const html = await renderToString(h(HeadInjector as ComponentFn, null))\n const titleTemplate = ctx.resolveTitleTemplate()\n const head = ctx\n .resolve()\n .map((tag) => serializeTag(tag, titleTemplate))\n .join(\"\\n \")\n return {\n html,\n head,\n htmlAttrs: ctx.resolveHtmlAttrs(),\n bodyAttrs: ctx.resolveBodyAttrs(),\n }\n}\n\nfunction serializeTag(tag: HeadTag, titleTemplate?: string | ((title: string) => string)): string {\n if (tag.tag === \"title\") {\n const raw = tag.children || \"\"\n const title = titleTemplate\n ? typeof titleTemplate === \"function\"\n ? titleTemplate(raw)\n : titleTemplate.replace(/%s/g, raw)\n : raw\n return `<title>${esc(title)}</title>`\n }\n const props = tag.props as Record<string, string> | undefined\n const attrs = props\n ? Object.entries(props)\n .map(([k, v]) => `${k}=\"${esc(v)}\"`)\n .join(\" \")\n : \"\"\n const open = attrs ? `<${tag.tag} ${attrs}` : `<${tag.tag}`\n if (VOID_TAGS.has(tag.tag)) return `${open} />`\n const content = tag.children || \"\"\n // Escape sequences that could break out of script/style/noscript blocks:\n // 1. Closing tags like </script> — use Unicode escape in the slash\n // 2. HTML comment openers <!-- that could confuse parsers\n const body = content.replace(/<\\/(script|style|noscript)/gi, \"<\\\\/$1\").replace(/<!--/g, \"<\\\\!--\")\n return `${open}>${body}</${tag.tag}>`\n}\n\nfunction esc(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n}\n","import type { HeadContextValue } from \"./context\"\n\nconst ATTR = \"data-pyreon-head\"\n\n/**\n * Sync the resolved head tags to the real DOM <head>.\n * Uses incremental diffing: matches existing elements by key, patches attributes\n * in-place, adds new elements, and removes stale ones.\n * Also syncs htmlAttrs, bodyAttrs, and applies titleTemplate.\n * No-op on the server (typeof document === \"undefined\").\n */\nfunction patchExistingTag(\n found: Element,\n tag: { props: Record<string, unknown>; children: string },\n kept: Set<Element>,\n): void {\n kept.add(found)\n patchAttrs(found, tag.props as Record<string, string>)\n const content = String(tag.children)\n if (found.textContent !== content) found.textContent = content\n}\n\nfunction createNewTag(tag: {\n tag: string\n props: Record<string, unknown>\n children: string\n key: unknown\n}): void {\n const el = document.createElement(tag.tag)\n el.setAttribute(ATTR, tag.key as string)\n for (const [k, v] of Object.entries(tag.props as Record<string, string>)) {\n el.setAttribute(k, v)\n }\n if (tag.children) el.textContent = tag.children\n document.head.appendChild(el)\n}\n\nexport function syncDom(ctx: HeadContextValue): void {\n if (typeof document === \"undefined\") return\n\n const tags = ctx.resolve()\n const titleTemplate = ctx.resolveTitleTemplate()\n const existing = document.head.querySelectorAll(`[${ATTR}]`)\n const byKey = new Map<string, Element>()\n for (const el of existing) {\n byKey.set(el.getAttribute(ATTR) as string, el)\n }\n\n const kept = new Set<Element>()\n\n for (const tag of tags) {\n if (tag.tag === \"title\") {\n document.title = applyTitleTemplate(String(tag.children), titleTemplate)\n continue\n }\n\n const key = tag.key as string\n const found = byKey.get(key)\n\n if (found && found.tagName.toLowerCase() === tag.tag) {\n patchExistingTag(found, tag as { props: Record<string, unknown>; children: string }, kept)\n } else {\n createNewTag(\n tag as { tag: string; props: Record<string, unknown>; children: string; key: unknown },\n )\n }\n }\n\n for (const el of existing) {\n if (!kept.has(el)) el.remove()\n }\n\n syncElementAttrs(document.documentElement, ctx.resolveHtmlAttrs())\n syncElementAttrs(document.body, ctx.resolveBodyAttrs())\n}\n\n/** Patch an element's attributes to match the desired props. */\nfunction patchAttrs(el: Element, props: Record<string, string>): void {\n for (let i = el.attributes.length - 1; i >= 0; i--) {\n const attr = el.attributes[i]\n if (!attr || attr.name === ATTR) continue\n if (!(attr.name in props)) el.removeAttribute(attr.name)\n }\n for (const [k, v] of Object.entries(props)) {\n if (el.getAttribute(k) !== v) el.setAttribute(k, v)\n }\n}\n\nfunction applyTitleTemplate(\n title: string,\n template: string | ((t: string) => string) | undefined,\n): string {\n if (!template) return title\n if (typeof template === \"function\") return template(title)\n return template.replace(/%s/g, title)\n}\n\n/** Sync pyreon-managed attributes on <html> or <body>. */\nfunction syncElementAttrs(el: Element, attrs: Record<string, string>): void {\n // Remove previously managed attrs that are no longer present\n const managed = el.getAttribute(`${ATTR}-attrs`)\n if (managed) {\n for (const name of managed.split(\",\")) {\n if (name && !(name in attrs)) el.removeAttribute(name)\n }\n }\n const keys: string[] = []\n for (const [k, v] of Object.entries(attrs)) {\n keys.push(k)\n if (el.getAttribute(k) !== v) el.setAttribute(k, v)\n }\n if (keys.length > 0) {\n el.setAttribute(`${ATTR}-attrs`, keys.join(\",\"))\n } else if (managed) {\n el.removeAttribute(`${ATTR}-attrs`)\n }\n}\n","import { onMount, onUnmount, useContext } from \"@pyreon/core\"\nimport { effect } from \"@pyreon/reactivity\"\nimport type { HeadEntry, HeadTag, UseHeadInput } from \"./context\"\nimport { HeadContext } from \"./context\"\nimport { syncDom } from \"./dom\"\n\nfunction buildEntry(o: UseHeadInput): HeadEntry {\n const tags: HeadTag[] = []\n if (o.title != null) tags.push({ tag: \"title\", key: \"title\", children: o.title })\n o.meta?.forEach((m, i) => {\n tags.push({\n tag: \"meta\",\n key: m.name ?? m.property ?? `meta-${i}`,\n props: m,\n })\n })\n o.link?.forEach((l, i) => {\n tags.push({\n tag: \"link\",\n key: l.href ? `link-${l.rel || \"\"}-${l.href}` : l.rel ? `link-${l.rel}` : `link-${i}`,\n props: l,\n })\n })\n o.script?.forEach((s, i) => {\n const { children, ...rest } = s\n tags.push({\n tag: \"script\",\n key: s.src ?? `script-${i}`,\n props: rest as Record<string, string>,\n ...(children != null ? { children } : {}),\n })\n })\n o.style?.forEach((s, i) => {\n const { children, ...rest } = s\n tags.push({\n tag: \"style\",\n key: `style-${i}`,\n props: rest as Record<string, string>,\n children,\n })\n })\n o.noscript?.forEach((ns, i) => {\n tags.push({ tag: \"noscript\", key: `noscript-${i}`, children: ns.children })\n })\n if (o.jsonLd) {\n tags.push({\n tag: \"script\",\n key: \"jsonld\",\n props: { type: \"application/ld+json\" },\n children: JSON.stringify(o.jsonLd),\n })\n }\n if (o.base) tags.push({ tag: \"base\", key: \"base\", props: o.base })\n return {\n tags,\n titleTemplate: o.titleTemplate,\n htmlAttrs: o.htmlAttrs,\n bodyAttrs: o.bodyAttrs,\n }\n}\n\n/**\n * Register head tags (title, meta, link, script, style, noscript, base, jsonLd)\n * for the current component.\n *\n * Accepts a static object or a reactive getter:\n * useHead({ title: \"My Page\", meta: [{ name: \"description\", content: \"...\" }] })\n * useHead(() => ({ title: `${count()} items` })) // updates when signal changes\n *\n * Tags are deduplicated by key — innermost component wins.\n * Requires a <HeadProvider> (CSR) or renderWithHead() (SSR) ancestor.\n */\nexport function useHead(input: UseHeadInput | (() => UseHeadInput)): void {\n const ctx = useContext(HeadContext)\n if (!ctx) return // no HeadProvider — silently no-op\n\n const id = Symbol()\n\n if (typeof input === \"function\") {\n if (typeof document !== \"undefined\") {\n // CSR: reactive — re-register whenever signals change\n effect(() => {\n ctx.add(id, buildEntry(input()))\n syncDom(ctx)\n })\n } else {\n // SSR: evaluate once synchronously (no effects on server)\n ctx.add(id, buildEntry(input()))\n }\n } else {\n ctx.add(id, buildEntry(input))\n // onMount is a no-op in SSR; syncDom has its own typeof document guard\n onMount(() => {\n syncDom(ctx)\n return undefined\n })\n }\n\n onUnmount(() => {\n ctx.remove(id)\n // syncDom has its own typeof document guard — no need to check here\n syncDom(ctx)\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/context.ts","../src/provider.tsx","../src/ssr.ts","../src/dom.ts","../src/use-head.ts"],"sourcesContent":["import { createContext } from \"@pyreon/core\"\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface HeadTag {\n /** HTML tag name */\n tag: \"title\" | \"meta\" | \"link\" | \"script\" | \"style\" | \"base\" | \"noscript\"\n /**\n * Deduplication key. Tags with the same key replace each other;\n * innermost component (last added) wins.\n * Example: all components setting the page title use key \"title\".\n */\n key?: string\n /** HTML attributes for the tag */\n props?: Record<string, string>\n /** Text content — for <title>, <script>, <style>, <noscript> */\n children?: string\n}\n\nexport interface UseHeadInput {\n title?: string\n /**\n * Title template — use `%s` as a placeholder for the page title.\n * Applied to the resolved title after deduplication.\n * @example useHead({ titleTemplate: \"%s | My App\" })\n */\n titleTemplate?: string | ((title: string) => string)\n meta?: Record<string, string>[]\n link?: Record<string, string>[]\n script?: ({ src?: string; children?: string } & Record<string, string | undefined>)[]\n style?: ({ children: string } & Record<string, string | undefined>)[]\n noscript?: { children: string }[]\n /** Convenience: emits a <script type=\"application/ld+json\"> tag with JSON.stringify'd content */\n jsonLd?: Record<string, unknown> | Record<string, unknown>[]\n base?: Record<string, string>\n /** Attributes to set on the <html> element (e.g. { lang: \"en\", dir: \"ltr\" }) */\n htmlAttrs?: Record<string, string>\n /** Attributes to set on the <body> element (e.g. { class: \"dark\" }) */\n bodyAttrs?: Record<string, string>\n}\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\nexport interface HeadEntry {\n tags: HeadTag[]\n titleTemplate?: string | ((title: string) => string) | undefined\n htmlAttrs?: Record<string, string> | undefined\n bodyAttrs?: Record<string, string> | undefined\n}\n\nexport interface HeadContextValue {\n add(id: symbol, entry: HeadEntry): void\n remove(id: symbol): void\n /** Returns deduplicated tags — last-added entry wins per key */\n resolve(): HeadTag[]\n /** Returns the merged titleTemplate (last-added wins) */\n resolveTitleTemplate(): (string | ((title: string) => string)) | undefined\n /** Returns merged htmlAttrs (later entries override earlier) */\n resolveHtmlAttrs(): Record<string, string>\n /** Returns merged bodyAttrs (later entries override earlier) */\n resolveBodyAttrs(): Record<string, string>\n}\n\nexport function createHeadContext(): HeadContextValue {\n const map = new Map<symbol, HeadEntry>()\n return {\n add(id, entry) {\n map.set(id, entry)\n },\n remove(id) {\n map.delete(id)\n },\n resolve() {\n const keyed = new Map<string, HeadTag>()\n const unkeyed: HeadTag[] = []\n for (const entry of map.values()) {\n for (const tag of entry.tags) {\n if (tag.key) keyed.set(tag.key, tag)\n else unkeyed.push(tag)\n }\n }\n return [...keyed.values(), ...unkeyed]\n },\n resolveTitleTemplate() {\n let template: (string | ((title: string) => string)) | undefined\n for (const entry of map.values()) {\n if (entry.titleTemplate !== undefined) template = entry.titleTemplate\n }\n return template\n },\n resolveHtmlAttrs() {\n const attrs: Record<string, string> = {}\n for (const entry of map.values()) {\n if (entry.htmlAttrs) Object.assign(attrs, entry.htmlAttrs)\n }\n return attrs\n },\n resolveBodyAttrs() {\n const attrs: Record<string, string> = {}\n for (const entry of map.values()) {\n if (entry.bodyAttrs) Object.assign(attrs, entry.bodyAttrs)\n }\n return attrs\n },\n }\n}\n\nexport const HeadContext = createContext<HeadContextValue | null>(null)\n","import type { ComponentFn, Props, VNodeChild } from \"@pyreon/core\"\nimport { onUnmount, popContext, pushContext } from \"@pyreon/core\"\nimport type { HeadContextValue } from \"./context\"\nimport { createHeadContext, HeadContext } from \"./context\"\n\nexport interface HeadProviderProps extends Props {\n context?: HeadContextValue | undefined\n children?: VNodeChild\n}\n\n/**\n * Provides a HeadContextValue to all descendant components.\n * Wrap your app root with this to enable useHead() throughout the tree.\n *\n * If no `context` prop is passed, a new HeadContext is created automatically.\n *\n * @example\n * // Auto-create context:\n * <HeadProvider><App /></HeadProvider>\n *\n * // Explicit context (e.g. for SSR):\n * const headCtx = createHeadContext()\n * mount(h(HeadProvider, { context: headCtx }, h(App, null)), root)\n */\nexport const HeadProvider: ComponentFn<HeadProviderProps> = (props) => {\n const ctx = props.context ?? createHeadContext()\n // Push context frame synchronously (before children mount) so all descendants\n // can read HeadContext via useContext(). Pop on unmount for correct cleanup.\n const frame = new Map([[HeadContext.id, ctx]])\n pushContext(frame)\n onUnmount(() => popContext())\n\n const ch = props.children\n return (typeof ch === \"function\" ? (ch as () => VNodeChild)() : ch) as ReturnType<ComponentFn>\n}\n","import type { ComponentFn, VNode } from \"@pyreon/core\"\nimport { h, pushContext } from \"@pyreon/core\"\nimport { renderToString } from \"@pyreon/runtime-server\"\nimport type { HeadTag } from \"./context\"\nimport { createHeadContext, HeadContext } from \"./context\"\n\nconst VOID_TAGS = new Set([\"meta\", \"link\", \"base\"])\n\n/**\n * Render a Pyreon app to an HTML fragment + a serialized <head> string.\n *\n * The returned `head` string can be injected directly into your HTML template:\n *\n * @example\n * const { html, head } = await renderWithHead(h(App, null))\n * const page = `<!DOCTYPE html>\n * <html>\n * <head>\n * <meta charset=\"UTF-8\" />\n * ${head}\n * </head>\n * <body><div id=\"app\">${html}</div></body>\n * </html>`\n */\nexport interface RenderWithHeadResult {\n html: string\n head: string\n /** Attributes to set on the <html> element */\n htmlAttrs: Record<string, string>\n /** Attributes to set on the <body> element */\n bodyAttrs: Record<string, string>\n}\n\nexport async function renderWithHead(app: VNode): Promise<RenderWithHeadResult> {\n const ctx = createHeadContext()\n\n // HeadInjector runs inside renderToString's ALS scope, so pushContext reaches\n // the per-request context stack rather than the module-level fallback stack.\n function HeadInjector(): VNode {\n pushContext(new Map([[HeadContext.id, ctx]]))\n return app\n }\n\n const html = await renderToString(h(HeadInjector as ComponentFn, null))\n const titleTemplate = ctx.resolveTitleTemplate()\n const head = ctx\n .resolve()\n .map((tag) => serializeTag(tag, titleTemplate))\n .join(\"\\n \")\n return {\n html,\n head,\n htmlAttrs: ctx.resolveHtmlAttrs(),\n bodyAttrs: ctx.resolveBodyAttrs(),\n }\n}\n\nfunction serializeTag(tag: HeadTag, titleTemplate?: string | ((title: string) => string)): string {\n if (tag.tag === \"title\") {\n const raw = tag.children || \"\"\n const title = titleTemplate\n ? typeof titleTemplate === \"function\"\n ? titleTemplate(raw)\n : titleTemplate.replace(/%s/g, raw)\n : raw\n return `<title>${esc(title)}</title>`\n }\n const props = tag.props as Record<string, string> | undefined\n const attrs = props\n ? Object.entries(props)\n .map(([k, v]) => `${k}=\"${esc(v)}\"`)\n .join(\" \")\n : \"\"\n const open = attrs ? `<${tag.tag} ${attrs}` : `<${tag.tag}`\n if (VOID_TAGS.has(tag.tag)) return `${open} />`\n const content = tag.children || \"\"\n // Escape sequences that could break out of script/style/noscript blocks:\n // 1. Closing tags like </script> — use Unicode escape in the slash\n // 2. HTML comment openers <!-- that could confuse parsers\n const body = content.replace(/<\\/(script|style|noscript)/gi, \"<\\\\/$1\").replace(/<!--/g, \"<\\\\!--\")\n return `${open}>${body}</${tag.tag}>`\n}\n\nfunction esc(s: string): string {\n return s\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n}\n","import type { HeadContextValue } from \"./context\"\n\nconst ATTR = \"data-pyreon-head\"\n\n/**\n * Sync the resolved head tags to the real DOM <head>.\n * Uses incremental diffing: matches existing elements by key, patches attributes\n * in-place, adds new elements, and removes stale ones.\n * Also syncs htmlAttrs, bodyAttrs, and applies titleTemplate.\n * No-op on the server (typeof document === \"undefined\").\n */\nfunction patchExistingTag(\n found: Element,\n tag: { props: Record<string, unknown>; children: string },\n kept: Set<Element>,\n): void {\n kept.add(found)\n patchAttrs(found, tag.props as Record<string, string>)\n const content = String(tag.children)\n if (found.textContent !== content) found.textContent = content\n}\n\nfunction createNewTag(tag: {\n tag: string\n props: Record<string, unknown>\n children: string\n key: unknown\n}): void {\n const el = document.createElement(tag.tag)\n el.setAttribute(ATTR, tag.key as string)\n for (const [k, v] of Object.entries(tag.props as Record<string, string>)) {\n el.setAttribute(k, v)\n }\n if (tag.children) el.textContent = tag.children\n document.head.appendChild(el)\n}\n\nexport function syncDom(ctx: HeadContextValue): void {\n if (typeof document === \"undefined\") return\n\n const tags = ctx.resolve()\n const titleTemplate = ctx.resolveTitleTemplate()\n const existing = document.head.querySelectorAll(`[${ATTR}]`)\n const byKey = new Map<string, Element>()\n for (const el of existing) {\n byKey.set(el.getAttribute(ATTR) as string, el)\n }\n\n const kept = new Set<Element>()\n\n for (const tag of tags) {\n if (tag.tag === \"title\") {\n document.title = applyTitleTemplate(String(tag.children), titleTemplate)\n continue\n }\n\n const key = tag.key as string\n const found = byKey.get(key)\n\n if (found && found.tagName.toLowerCase() === tag.tag) {\n patchExistingTag(found, tag as { props: Record<string, unknown>; children: string }, kept)\n } else {\n createNewTag(\n tag as { tag: string; props: Record<string, unknown>; children: string; key: unknown },\n )\n }\n }\n\n for (const el of existing) {\n if (!kept.has(el)) el.remove()\n }\n\n syncElementAttrs(document.documentElement, ctx.resolveHtmlAttrs())\n syncElementAttrs(document.body, ctx.resolveBodyAttrs())\n}\n\n/** Patch an element's attributes to match the desired props. */\nfunction patchAttrs(el: Element, props: Record<string, string>): void {\n for (let i = el.attributes.length - 1; i >= 0; i--) {\n const attr = el.attributes[i]\n if (!attr || attr.name === ATTR) continue\n if (!(attr.name in props)) el.removeAttribute(attr.name)\n }\n for (const [k, v] of Object.entries(props)) {\n if (el.getAttribute(k) !== v) el.setAttribute(k, v)\n }\n}\n\nfunction applyTitleTemplate(\n title: string,\n template: string | ((t: string) => string) | undefined,\n): string {\n if (!template) return title\n if (typeof template === \"function\") return template(title)\n return template.replace(/%s/g, title)\n}\n\n/** Sync pyreon-managed attributes on <html> or <body>. */\nfunction syncElementAttrs(el: Element, attrs: Record<string, string>): void {\n // Remove previously managed attrs that are no longer present\n const managed = el.getAttribute(`${ATTR}-attrs`)\n if (managed) {\n for (const name of managed.split(\",\")) {\n if (name && !(name in attrs)) el.removeAttribute(name)\n }\n }\n const keys: string[] = []\n for (const [k, v] of Object.entries(attrs)) {\n keys.push(k)\n if (el.getAttribute(k) !== v) el.setAttribute(k, v)\n }\n if (keys.length > 0) {\n el.setAttribute(`${ATTR}-attrs`, keys.join(\",\"))\n } else if (managed) {\n el.removeAttribute(`${ATTR}-attrs`)\n }\n}\n","import { onMount, onUnmount, useContext } from \"@pyreon/core\"\nimport { effect } from \"@pyreon/reactivity\"\nimport type { HeadEntry, HeadTag, UseHeadInput } from \"./context\"\nimport { HeadContext } from \"./context\"\nimport { syncDom } from \"./dom\"\n\nfunction buildEntry(o: UseHeadInput): HeadEntry {\n const tags: HeadTag[] = []\n if (o.title != null) tags.push({ tag: \"title\", key: \"title\", children: o.title })\n o.meta?.forEach((m, i) => {\n tags.push({\n tag: \"meta\",\n key: m.name ?? m.property ?? `meta-${i}`,\n props: m,\n })\n })\n o.link?.forEach((l, i) => {\n tags.push({\n tag: \"link\",\n key: l.href ? `link-${l.rel || \"\"}-${l.href}` : l.rel ? `link-${l.rel}` : `link-${i}`,\n props: l,\n })\n })\n o.script?.forEach((s, i) => {\n const { children, ...rest } = s\n tags.push({\n tag: \"script\",\n key: s.src ?? `script-${i}`,\n props: rest as Record<string, string>,\n ...(children != null ? { children } : {}),\n })\n })\n o.style?.forEach((s, i) => {\n const { children, ...rest } = s\n tags.push({\n tag: \"style\",\n key: `style-${i}`,\n props: rest as Record<string, string>,\n children,\n })\n })\n o.noscript?.forEach((ns, i) => {\n tags.push({ tag: \"noscript\", key: `noscript-${i}`, children: ns.children })\n })\n if (o.jsonLd) {\n tags.push({\n tag: \"script\",\n key: \"jsonld\",\n props: { type: \"application/ld+json\" },\n children: JSON.stringify(o.jsonLd),\n })\n }\n if (o.base) tags.push({ tag: \"base\", key: \"base\", props: o.base })\n return {\n tags,\n titleTemplate: o.titleTemplate,\n htmlAttrs: o.htmlAttrs,\n bodyAttrs: o.bodyAttrs,\n }\n}\n\n/**\n * Register head tags (title, meta, link, script, style, noscript, base, jsonLd)\n * for the current component.\n *\n * Accepts a static object or a reactive getter:\n * useHead({ title: \"My Page\", meta: [{ name: \"description\", content: \"...\" }] })\n * useHead(() => ({ title: `${count()} items` })) // updates when signal changes\n *\n * Tags are deduplicated by key — innermost component wins.\n * Requires a <HeadProvider> (CSR) or renderWithHead() (SSR) ancestor.\n */\nexport function useHead(input: UseHeadInput | (() => UseHeadInput)): void {\n const ctx = useContext(HeadContext)\n if (!ctx) return // no HeadProvider — silently no-op\n\n const id = Symbol()\n\n if (typeof input === \"function\") {\n if (typeof document !== \"undefined\") {\n // CSR: reactive — re-register whenever signals change\n effect(() => {\n ctx.add(id, buildEntry(input()))\n syncDom(ctx)\n })\n } else {\n // SSR: evaluate once synchronously (no effects on server)\n ctx.add(id, buildEntry(input()))\n }\n } else {\n ctx.add(id, buildEntry(input))\n onMount(() => {\n syncDom(ctx)\n return undefined\n })\n }\n\n onUnmount(() => {\n ctx.remove(id)\n syncDom(ctx)\n })\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/context.ts","../../src/provider.tsx","../../src/ssr.ts","../../src/dom.ts","../../src/use-head.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/context.ts","../../src/provider.tsx","../../src/ssr.ts","../../src/dom.ts","../../src/use-head.ts"],"mappings":";;;;;AA+DA,SAAgB,iBAAA,CAAA,EAAsC;EACpD,MAAM,GAAA,GAAA,eAAM,IAAI,GAAA,CAAA,CAAwB;EACxC,OAAO;IACL,GAAA,CAAI,EAAA,EAAI,KAAA,EAAO;MACb,GAAA,CAAI,GAAA,CAAI,EAAA,EAAI,KAAA,CAAM;;IAEpB,MAAA,CAAO,EAAA,EAAI;MACT,GAAA,CAAI,MAAA,CAAO,EAAA,CAAG;;IAEhB,OAAA,CAAA,EAAU;MACR,MAAM,KAAA,GAAA,eAAQ,IAAI,GAAA,CAAA,CAAsB;MACxC,MAAM,OAAA,GAAqB,EAAE;MAC7B,KAAK,MAAM,KAAA,IAAS,GAAA,CAAI,MAAA,CAAA,CAAQ,EAC9B,KAAK,MAAM,GAAA,IAAO,KAAA,CAAM,IAAA,EACtB,IAAI,GAAA,CAAI,GAAA,EAAK,KAAA,CAAM,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,GAAA,CAAI,CAAA,KAC/B,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI;MAG1B,OAAO,CAAC,GAAG,KAAA,CAAM,MAAA,CAAA,CAAQ,EAAE,GAAG,OAAA,CAAQ;;IAExC,oBAAA,CAAA,EAAuB;MACrB,IAAI,QAAA;MACJ,KAAK,MAAM,KAAA,IAAS,GAAA,CAAI,MAAA,CAAA,CAAQ,EAC9B,IAAI,KAAA,CAAM,aAAA,KAAkB,KAAA,CAAA,EAAW,QAAA,GAAW,KAAA,CAAM,aAAA;MAE1D,OAAO,QAAA;;IAET,gBAAA,CAAA,EAAmB;MACjB,MAAM,KAAA,GAAgC,CAAA,CAAE;MACxC,KAAK,MAAM,KAAA,IAAS,GAAA,CAAI,MAAA,CAAA,CAAQ,EAC9B,IAAI,KAAA,CAAM,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,KAAA,CAAM,SAAA,CAAU;MAE5D,OAAO,KAAA;;IAET,gBAAA,CAAA,EAAmB;MACjB,MAAM,KAAA,GAAgC,CAAA,CAAE;MACxC,KAAK,MAAM,KAAA,IAAS,GAAA,CAAI,MAAA,CAAA,CAAQ,EAC9B,IAAI,KAAA,CAAM,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,KAAA,CAAM,SAAA,CAAU;MAE5D,OAAO,KAAA;;GAEV;;AEvEH,eAAsB,cAAA,CAAe,GAAA,EAA2C;EAC9E,MAAM,GAAA,GAAM,iBAAA,CAAA,CAAmB;EAI/B,SAAS,YAAA,CAAA,EAAsB;IAC7B,WAAA,CAAY,IAAI,GAAA,CAAI,CAAC,CAAC,WAAA,CAAY,EAAA,EAAI,GAAA,CAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,GAAA;;EAGT,MAAM,IAAA,GAAO,MAAM,cAAA,CAAe,CAAA,CAAE,YAAA,EAA6B,IAAA,CAAK,CAAC;EACvE,MAAM,aAAA,GAAgB,GAAA,CAAI,oBAAA,CAAA,CAAsB;EAKhD,OAAO;IACL,IAAA;IACA,IAAA,EANW,GAAA,CACV,OAAA,CAAA,CAAS,CACT,GAAA,CAAK,GAAA,IAAQ,YAAA,CAAa,GAAA,EAAK,aAAA,CAAc,CAAC,CAC9C,IAAA,CAAK,MAAA,CAAO;IAIb,SAAA,EAAW,GAAA,CAAI,gBAAA,CAAA,CAAkB;IACjC,SAAA,EAAW,GAAA,CAAI,gBAAA,CAAA;GAChB;;AAGH,SAAS,YAAA,CAAa,GAAA,EAAc,aAAA,EAA8D;EAChG,IAAI,GAAA,CAAI,GAAA,KAAQ,OAAA,EAAS;IACvB,MAAM,GAAA,GAAM,GAAA,CAAI,QAAA,IAAY,EAAA;IAM5B,OAAO,UAAU,GAAA,CALH,aAAA,GACV,OAAO,aAAA,KAAkB,UAAA,GACvB,aAAA,CAAc,GAAA,CAAI,GAClB,aAAA,CAAc,OAAA,CAAQ,KAAA,EAAO,GAAA,CAAI,GACnC,GAAA,CACuB,UAAC;;EAE9B,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA;EAClB,MAAM,KAAA,GAAQ,KAAA,GACV,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,CAClB,GAAA,CAAA,CAAK,CAAC,CAAA,EAAG,CAAA,CAAA,KAAO,GAAG,CAAA,KAAM,GAAA,CAAI,CAAA,CAAE,GAAC,CAAG,CACnC,IAAA,CAAK,GAAA,CAAI,GACZ,EAAA;EACJ,MAAM,IAAA,GAAO,KAAA,GAAQ,IAAI,GAAA,CAAI,GAAA,IAAO,KAAA,EAAA,GAAU,IAAI,GAAA,CAAI,GAAA,EAAA;EACtD,IAAI,SAAA,CAAU,GAAA,CAAI,GAAA,CAAI,GAAA,CAAI,EAAE,OAAO,GAAG,IAAA,KAAK;EAM3C,OAAO,GAAG,IAAA,IAAK,CALC,GAAA,CAAI,QAAA,IAAY,EAAA,EAIX,OAAA,CAAQ,8BAAA,EAAgC,QAAA,CAAS,CAAC,OAAA,CAAQ,OAAA,EAAS,QAAA,CAAS,KACtE,GAAA,CAAI,GAAA,GAAI;;AAGrC,SAAS,GAAA,CAAI,CAAA,EAAmB;EAC9B,OAAO,CAAA,CACJ,OAAA,CAAQ,IAAA,EAAM,OAAA,CAAQ,CACtB,OAAA,CAAQ,IAAA,EAAM,MAAA,CAAO,CACrB,OAAA,CAAQ,IAAA,EAAM,MAAA,CAAO,CACrB,OAAA,CAAQ,IAAA,EAAM,QAAA,CAAS;;;;;;;;;;;;;AC7E5B,SAAS,gBAAA,CACP,KAAA,EACA,GAAA,EACA,IAAA,EACM;EACN,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM;EACf,UAAA,CAAW,KAAA,EAAO,GAAA,CAAI,KAAA,CAAgC;EACtD,MAAM,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,QAAA,CAAS;EACpC,IAAI,KAAA,CAAM,WAAA,KAAgB,OAAA,EAAS,KAAA,CAAM,WAAA,GAAc,OAAA;;AAGzD,SAAS,YAAA,CAAa,GAAA,EAKb;EACP,MAAM,EAAA,GAAK,QAAA,CAAS,aAAA,CAAc,GAAA,CAAI,GAAA,CAAI;EAC1C,EAAA,CAAG,YAAA,CAAa,IAAA,EAAM,GAAA,CAAI,GAAA,CAAc;EACxC,KAAK,MAAM,CAAC,CAAA,EAAG,CAAA,CAAA,IAAM,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAgC,EACtE,EAAA,CAAG,YAAA,CAAa,CAAA,EAAG,CAAA,CAAE;EAEvB,IAAI,GAAA,CAAI,QAAA,EAAU,EAAA,CAAG,WAAA,GAAc,GAAA,CAAI,QAAA;EACvC,QAAA,CAAS,IAAA,CAAK,WAAA,CAAY,EAAA,CAAG;;AAG/B,SAAgB,OAAA,CAAQ,GAAA,EAA6B;EACnD,IAAI,OAAO,QAAA,KAAa,WAAA,EAAa;EAErC,MAAM,IAAA,GAAO,GAAA,CAAI,OAAA,CAAA,CAAS;EAC1B,MAAM,aAAA,GAAgB,GAAA,CAAI,oBAAA,CAAA,CAAsB;EAChD,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,gBAAA,CAAiB,IAAI,IAAA,GAAK,CAAG;EAC5D,MAAM,KAAA,GAAA,eAAQ,IAAI,GAAA,CAAA,CAAsB;EACxC,KAAK,MAAM,EAAA,IAAM,QAAA,EACf,KAAA,CAAM,GAAA,CAAI,EAAA,CAAG,YAAA,CAAa,IAAA,CAAK,EAAY,EAAA,CAAG;EAGhD,MAAM,IAAA,GAAA,eAAO,IAAI,GAAA,CAAA,CAAc;EAE/B,KAAK,MAAM,GAAA,IAAO,IAAA,EAAM;IACtB,IAAI,GAAA,CAAI,GAAA,KAAQ,OAAA,EAAS;MACvB,QAAA,CAAS,KAAA,GAAQ,kBAAA,CAAmB,MAAA,CAAO,GAAA,CAAI,QAAA,CAAS,EAAE,aAAA,CAAc;MACxE;;IAGF,MAAM,GAAA,GAAM,GAAA,CAAI,GAAA;IAChB,MAAM,KAAA,GAAQ,KAAA,CAAM,GAAA,CAAI,GAAA,CAAI;IAE5B,IAAI,KAAA,IAAS,KAAA,CAAM,OAAA,CAAQ,WAAA,CAAA,CAAa,KAAK,GAAA,CAAI,GAAA,EAC/C,gBAAA,CAAiB,KAAA,EAAO,GAAA,EAA6D,IAAA,CAAK,CAAA,KAE1F,YAAA,CACE,GAAA,CACD;;EAIL,KAAK,MAAM,EAAA,IAAM,QAAA,EACf,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,EAAA,CAAG,EAAE,EAAA,CAAG,MAAA,CAAA,CAAQ;EAGhC,gBAAA,CAAiB,QAAA,CAAS,eAAA,EAAiB,GAAA,CAAI,gBAAA,CAAA,CAAkB,CAAC;EAClE,gBAAA,CAAiB,QAAA,CAAS,IAAA,EAAM,GAAA,CAAI,gBAAA,CAAA,CAAkB,CAAC;;;AAIzD,SAAS,UAAA,CAAW,EAAA,EAAa,KAAA,EAAqC;EACpE,KAAK,IAAI,CAAA,GAAI,EAAA,CAAG,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,CAAA,EAAG,CAAA,EAAA,EAAK;IAClD,MAAM,IAAA,GAAO,EAAA,CAAG,UAAA,CAAW,CAAA,CAAA;IAC3B,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,IAAA,EAAM;IACjC,IAAI,EAAE,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAA,EAAQ,EAAA,CAAG,eAAA,CAAgB,IAAA,CAAK,IAAA,CAAK;;EAE1D,KAAK,MAAM,CAAC,CAAA,EAAG,CAAA,CAAA,IAAM,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,EACxC,IAAI,EAAA,CAAG,YAAA,CAAa,CAAA,CAAE,KAAK,CAAA,EAAG,EAAA,CAAG,YAAA,CAAa,CAAA,EAAG,CAAA,CAAE;;AAIvD,SAAS,kBAAA,CACP,KAAA,EACA,QAAA,EACQ;EACR,IAAI,CAAC,QAAA,EAAU,OAAO,KAAA;EACtB,IAAI,OAAO,QAAA,KAAa,UAAA,EAAY,OAAO,QAAA,CAAS,KAAA,CAAM;EAC1D,OAAO,QAAA,CAAS,OAAA,CAAQ,KAAA,EAAO,KAAA,CAAM;;;AAIvC,SAAS,gBAAA,CAAiB,EAAA,EAAa,KAAA,EAAqC;EAE1E,MAAM,OAAA,GAAU,EAAA,CAAG,YAAA,CAAa,GAAG,IAAA,QAAK,CAAQ;EAChD,IAAI,OAAA,EACF;SAAK,MAAM,IAAA,IAAQ,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,EACnC,IAAI,IAAA,IAAQ,EAAE,IAAA,IAAQ,KAAA,CAAA,EAAQ,EAAA,CAAG,eAAA,CAAgB,IAAA,CAAK;;EAG1D,MAAM,IAAA,GAAiB,EAAE;EACzB,KAAK,MAAM,CAAC,CAAA,EAAG,CAAA,CAAA,IAAM,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,EAAE;IAC1C,IAAA,CAAK,IAAA,CAAK,CAAA,CAAE;IACZ,IAAI,EAAA,CAAG,YAAA,CAAa,CAAA,CAAE,KAAK,CAAA,EAAG,EAAA,CAAG,YAAA,CAAa,CAAA,EAAG,CAAA,CAAE;;EAErD,IAAI,IAAA,CAAK,MAAA,GAAS,CAAA,EAChB,EAAA,CAAG,YAAA,CAAa,GAAG,IAAA,QAAK,EAAS,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,SACvC,OAAA,EACT,EAAA,CAAG,eAAA,CAAgB,GAAG,IAAA,QAAK,CAAQ;;;;;AC5GvC,SAAS,UAAA,CAAW,CAAA,EAA4B;EAC9C,MAAM,IAAA,GAAkB,EAAE;EAC1B,IAAI,CAAA,CAAE,KAAA,IAAS,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK;IAAE,GAAA,EAAK,OAAA;IAAS,GAAA,EAAK,OAAA;IAAS,QAAA,EAAU,CAAA,CAAE;GAAO,CAAC;EACjF,CAAA,CAAE,IAAA,EAAM,OAAA,CAAA,CAAS,CAAA,EAAG,CAAA,KAAM;IACxB,IAAA,CAAK,IAAA,CAAK;MACR,GAAA,EAAK,MAAA;MACL,GAAA,EAAK,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE,QAAA,IAAY,QAAQ,CAAA,EAAA;MACrC,KAAA,EAAO;KACR,CAAC;IACF;EACF,CAAA,CAAE,IAAA,EAAM,OAAA,CAAA,CAAS,CAAA,EAAG,CAAA,KAAM;IACxB,IAAA,CAAK,IAAA,CAAK;MACR,GAAA,EAAK,MAAA;MACL,GAAA,EAAK,CAAA,CAAE,IAAA,GAAO,QAAQ,CAAA,CAAE,GAAA,IAAO,EAAA,IAAM,CAAA,CAAE,IAAA,EAAA,GAAS,CAAA,CAAE,GAAA,GAAM,QAAQ,CAAA,CAAE,GAAA,EAAA,GAAQ,QAAQ,CAAA,EAAA;MAClF,KAAA,EAAO;KACR,CAAC;IACF;EACF,CAAA,CAAE,MAAA,EAAQ,OAAA,CAAA,CAAS,CAAA,EAAG,CAAA,KAAM;IAC1B,MAAM;MAAE,QAAA;MAAU,GAAG;IAAA,CAAA,GAAS,CAAA;IAC9B,IAAA,CAAK,IAAA,CAAK;MACR,GAAA,EAAK,QAAA;MACL,GAAA,EAAK,CAAA,CAAE,GAAA,IAAO,UAAU,CAAA,EAAA;MACxB,KAAA,EAAO,IAAA;MACP,IAAI,QAAA,IAAY,IAAA,GAAO;QAAE;MAAA,CAAU,GAAG,CAAA,CAAE;KACzC,CAAC;IACF;EACF,CAAA,CAAE,KAAA,EAAO,OAAA,CAAA,CAAS,CAAA,EAAG,CAAA,KAAM;IACzB,MAAM;MAAE,QAAA;MAAU,GAAG;IAAA,CAAA,GAAS,CAAA;IAC9B,IAAA,CAAK,IAAA,CAAK;MACR,GAAA,EAAK,OAAA;MACL,GAAA,EAAK,SAAS,CAAA,EAAA;MACd,KAAA,EAAO,IAAA;MACP;KACD,CAAC;IACF;EACF,CAAA,CAAE,QAAA,EAAU,OAAA,CAAA,CAAS,EAAA,EAAI,CAAA,KAAM;IAC7B,IAAA,CAAK,IAAA,CAAK;MAAE,GAAA,EAAK,UAAA;MAAY,GAAA,EAAK,YAAY,CAAA,EAAA;MAAK,QAAA,EAAU,EAAA,CAAG;KAAU,CAAC;IAC3E;EACF,IAAI,CAAA,CAAE,MAAA,EACJ,IAAA,CAAK,IAAA,CAAK;IACR,GAAA,EAAK,QAAA;IACL,GAAA,EAAK,QAAA;IACL,KAAA,EAAO;MAAE,IAAA,EAAM;IAAA,CAAuB;IACtC,QAAA,EAAU,IAAA,CAAK,SAAA,CAAU,CAAA,CAAE,MAAA;GAC5B,CAAC;EAEJ,IAAI,CAAA,CAAE,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK;IAAE,GAAA,EAAK,MAAA;IAAQ,GAAA,EAAK,MAAA;IAAQ,KAAA,EAAO,CAAA,CAAE;GAAM,CAAC;EAClE,OAAO;IACL,IAAA;IACA,aAAA,EAAe,CAAA,CAAE,aAAA;IACjB,SAAA,EAAW,CAAA,CAAE,SAAA;IACb,SAAA,EAAW,CAAA,CAAE;GACd;;;;;;;;;;;;;AAcH,SAAgB,OAAA,CAAQ,KAAA,EAAkD;EACxE,MAAM,GAAA,GAAM,UAAA,CAAW,WAAA,CAAY;EACnC,IAAI,CAAC,GAAA,EAAK;EAEV,MAAM,EAAA,GAAK,MAAA,CAAA,CAAQ;EAEnB,IAAI,OAAO,KAAA,KAAU,UAAA;IACnB,IAAI,OAAO,QAAA,KAAa,WAAA,EAEtB,MAAA,CAAA,MAAa;MACX,GAAA,CAAI,GAAA,CAAI,EAAA,EAAI,UAAA,CAAW,KAAA,CAAA,CAAO,CAAC,CAAC;MAChC,OAAA,CAAQ,GAAA,CAAI;MACZ,CAAA,KAGF,GAAA,CAAI,GAAA,CAAI,EAAA,EAAI,UAAA,CAAW,KAAA,CAAA,CAAO,CAAC,CAAC;EAAA,OAE7B;IACL,GAAA,CAAI,GAAA,CAAI,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,CAAC;IAC9B,OAAA,CAAA,MAAc;MACZ,OAAA,CAAQ,GAAA,CAAI;MAEZ;;EAGJ,SAAA,CAAA,MAAgB;IACd,GAAA,CAAI,MAAA,CAAO,EAAA,CAAG;IACd,OAAA,CAAQ,GAAA,CAAI;IACZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyreon/head",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "Head tag management for Pyreon — works in SSR and CSR",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -54,13 +54,13 @@
54
54
  "prepublishOnly": "bun run build"
55
55
  },
56
56
  "dependencies": {
57
- "@pyreon/core": "workspace:*",
58
- "@pyreon/reactivity": "workspace:*",
59
- "@pyreon/runtime-server": "workspace:*"
57
+ "@pyreon/core": "^0.2.1",
58
+ "@pyreon/reactivity": "^0.2.1",
59
+ "@pyreon/runtime-server": "^0.2.1"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@happy-dom/global-registrator": "*",
63
- "@pyreon/runtime-dom": "workspace:*"
63
+ "@pyreon/runtime-dom": "workspace:^"
64
64
  },
65
65
  "publishConfig": {
66
66
  "access": "public"
package/src/use-head.ts CHANGED
@@ -89,7 +89,6 @@ export function useHead(input: UseHeadInput | (() => UseHeadInput)): void {
89
89
  }
90
90
  } else {
91
91
  ctx.add(id, buildEntry(input))
92
- // onMount is a no-op in SSR; syncDom has its own typeof document guard
93
92
  onMount(() => {
94
93
  syncDom(ctx)
95
94
  return undefined
@@ -98,7 +97,6 @@ export function useHead(input: UseHeadInput | (() => UseHeadInput)): void {
98
97
 
99
98
  onUnmount(() => {
100
99
  ctx.remove(id)
101
- // syncDom has its own typeof document guard — no need to check here
102
100
  syncDom(ctx)
103
101
  })
104
102
  }