@pyreon/runtime-dom 0.4.0 → 0.5.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/analysis/index.js.html +1 -1
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/types/index.d.ts +2 -2
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index2.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/hydrate.ts +5 -2
- package/src/mount.ts +5 -2
- package/src/tests/mount.test.ts +31 -0
|
@@ -5386,7 +5386,7 @@ var drawChart = (function (exports) {
|
|
|
5386
5386
|
</script>
|
|
5387
5387
|
<script>
|
|
5388
5388
|
/*<!--*/
|
|
5389
|
-
const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"uid":"
|
|
5389
|
+
const data = {"version":2,"tree":{"name":"root","children":[{"name":"index.js","children":[{"name":"src","children":[{"uid":"bebce038-1","name":"delegate.ts"},{"uid":"bebce038-3","name":"hydration-debug.ts"},{"uid":"bebce038-5","name":"devtools.ts"},{"uid":"bebce038-7","name":"nodes.ts"},{"uid":"bebce038-9","name":"props.ts"},{"uid":"bebce038-11","name":"mount.ts"},{"uid":"bebce038-13","name":"hydrate.ts"},{"uid":"bebce038-15","name":"keep-alive.ts"},{"uid":"bebce038-17","name":"template.ts"},{"uid":"bebce038-19","name":"transition.ts"},{"uid":"bebce038-21","name":"transition-group.ts"},{"uid":"bebce038-23","name":"index.ts"}]}]}],"isRoot":true},"nodeParts":{"bebce038-1":{"renderedLength":1968,"gzipLength":967,"brotliLength":0,"metaUid":"bebce038-0"},"bebce038-3":{"renderedLength":704,"gzipLength":397,"brotliLength":0,"metaUid":"bebce038-2"},"bebce038-5":{"renderedLength":6803,"gzipLength":2095,"brotliLength":0,"metaUid":"bebce038-4"},"bebce038-7":{"renderedLength":16149,"gzipLength":4315,"brotliLength":0,"metaUid":"bebce038-6"},"bebce038-9":{"renderedLength":5779,"gzipLength":2234,"brotliLength":0,"metaUid":"bebce038-8"},"bebce038-11":{"renderedLength":7951,"gzipLength":2338,"brotliLength":0,"metaUid":"bebce038-10"},"bebce038-13":{"renderedLength":7652,"gzipLength":2325,"brotliLength":0,"metaUid":"bebce038-12"},"bebce038-15":{"renderedLength":1447,"gzipLength":692,"brotliLength":0,"metaUid":"bebce038-14"},"bebce038-17":{"renderedLength":4250,"gzipLength":1760,"brotliLength":0,"metaUid":"bebce038-16"},"bebce038-19":{"renderedLength":4007,"gzipLength":1316,"brotliLength":0,"metaUid":"bebce038-18"},"bebce038-21":{"renderedLength":6362,"gzipLength":1937,"brotliLength":0,"metaUid":"bebce038-20"},"bebce038-23":{"renderedLength":811,"gzipLength":491,"brotliLength":0,"metaUid":"bebce038-22"}},"nodeMetas":{"bebce038-0":{"id":"/src/delegate.ts","moduleParts":{"index.js":"bebce038-1"},"imported":[{"uid":"bebce038-24"}],"importedBy":[{"uid":"bebce038-22"},{"uid":"bebce038-12"},{"uid":"bebce038-8"}]},"bebce038-2":{"id":"/src/hydration-debug.ts","moduleParts":{"index.js":"bebce038-3"},"imported":[],"importedBy":[{"uid":"bebce038-22"},{"uid":"bebce038-12"}]},"bebce038-4":{"id":"/src/devtools.ts","moduleParts":{"index.js":"bebce038-5"},"imported":[],"importedBy":[{"uid":"bebce038-22"},{"uid":"bebce038-10"}]},"bebce038-6":{"id":"/src/nodes.ts","moduleParts":{"index.js":"bebce038-7"},"imported":[{"uid":"bebce038-24"}],"importedBy":[{"uid":"bebce038-12"},{"uid":"bebce038-10"}]},"bebce038-8":{"id":"/src/props.ts","moduleParts":{"index.js":"bebce038-9"},"imported":[{"uid":"bebce038-24"},{"uid":"bebce038-0"}],"importedBy":[{"uid":"bebce038-22"},{"uid":"bebce038-12"},{"uid":"bebce038-10"}]},"bebce038-10":{"id":"/src/mount.ts","moduleParts":{"index.js":"bebce038-11"},"imported":[{"uid":"bebce038-25"},{"uid":"bebce038-24"},{"uid":"bebce038-4"},{"uid":"bebce038-6"},{"uid":"bebce038-8"}],"importedBy":[{"uid":"bebce038-22"},{"uid":"bebce038-12"},{"uid":"bebce038-14"},{"uid":"bebce038-20"}]},"bebce038-12":{"id":"/src/hydrate.ts","moduleParts":{"index.js":"bebce038-13"},"imported":[{"uid":"bebce038-25"},{"uid":"bebce038-24"},{"uid":"bebce038-0"},{"uid":"bebce038-2"},{"uid":"bebce038-10"},{"uid":"bebce038-6"},{"uid":"bebce038-8"}],"importedBy":[{"uid":"bebce038-22"}]},"bebce038-14":{"id":"/src/keep-alive.ts","moduleParts":{"index.js":"bebce038-15"},"imported":[{"uid":"bebce038-25"},{"uid":"bebce038-24"},{"uid":"bebce038-10"}],"importedBy":[{"uid":"bebce038-22"}]},"bebce038-16":{"id":"/src/template.ts","moduleParts":{"index.js":"bebce038-17"},"imported":[],"importedBy":[{"uid":"bebce038-22"}]},"bebce038-18":{"id":"/src/transition.ts","moduleParts":{"index.js":"bebce038-19"},"imported":[{"uid":"bebce038-25"},{"uid":"bebce038-24"}],"importedBy":[{"uid":"bebce038-22"}]},"bebce038-20":{"id":"/src/transition-group.ts","moduleParts":{"index.js":"bebce038-21"},"imported":[{"uid":"bebce038-25"},{"uid":"bebce038-24"},{"uid":"bebce038-10"}],"importedBy":[{"uid":"bebce038-22"}]},"bebce038-22":{"id":"/src/index.ts","moduleParts":{"index.js":"bebce038-23"},"imported":[{"uid":"bebce038-0"},{"uid":"bebce038-12"},{"uid":"bebce038-2"},{"uid":"bebce038-14"},{"uid":"bebce038-10"},{"uid":"bebce038-8"},{"uid":"bebce038-16"},{"uid":"bebce038-18"},{"uid":"bebce038-20"},{"uid":"bebce038-4"}],"importedBy":[],"isEntry":true},"bebce038-24":{"id":"@pyreon/reactivity","moduleParts":{},"imported":[],"importedBy":[{"uid":"bebce038-0"},{"uid":"bebce038-12"},{"uid":"bebce038-14"},{"uid":"bebce038-10"},{"uid":"bebce038-8"},{"uid":"bebce038-18"},{"uid":"bebce038-20"},{"uid":"bebce038-6"}]},"bebce038-25":{"id":"@pyreon/core","moduleParts":{},"imported":[],"importedBy":[{"uid":"bebce038-12"},{"uid":"bebce038-14"},{"uid":"bebce038-10"},{"uid":"bebce038-18"},{"uid":"bebce038-20"}]}},"env":{"rollup":"4.23.0"},"options":{"gzip":true,"brotli":false,"sourcemap":false}};
|
|
5390
5390
|
|
|
5391
5391
|
const run = () => {
|
|
5392
5392
|
const width = window.innerWidth;
|
package/lib/index.js
CHANGED
|
@@ -1147,7 +1147,8 @@ function mountElement(vnode, parent, anchor) {
|
|
|
1147
1147
|
_elementDepth--;
|
|
1148
1148
|
parent.insertBefore(el, anchor);
|
|
1149
1149
|
const ref = props.ref;
|
|
1150
|
-
if (ref
|
|
1150
|
+
if (ref) if (typeof ref === "function") ref(el);
|
|
1151
|
+
else ref.current = el;
|
|
1151
1152
|
if (!propCleanup && childCleanup === noop$1 && !ref) {
|
|
1152
1153
|
if (_elementDepth > 0) return noop$1;
|
|
1153
1154
|
return () => {
|
|
@@ -1403,7 +1404,8 @@ function hydrateElement(vnode, domNode, parent, anchor, path = "root") {
|
|
|
1403
1404
|
const [childCleanup] = hydrateChildren(vnode.children, firstChild, el, null, elPath);
|
|
1404
1405
|
cleanups.push(childCleanup);
|
|
1405
1406
|
const ref = vnode.props.ref;
|
|
1406
|
-
if (ref
|
|
1407
|
+
if (ref) if (typeof ref === "function") ref(el);
|
|
1408
|
+
else ref.current = el;
|
|
1407
1409
|
const cleanup = () => {
|
|
1408
1410
|
if (ref && typeof ref === "object") ref.current = null;
|
|
1409
1411
|
for (const c of cleanups) c();
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["__DEV__","__DEV__","__DEV__","noop","__DEV__"],"sources":["../src/delegate.ts","../src/hydration-debug.ts","../src/devtools.ts","../src/nodes.ts","../src/props.ts","../src/mount.ts","../src/hydrate.ts","../src/keep-alive.ts","../src/template.ts","../src/transition.ts","../src/transition-group.ts","../src/index.ts"],"sourcesContent":["/**\n * Event delegation — single listener per event type on the mount container.\n *\n * Instead of calling addEventListener on every element, the compiler emits\n * `el.__click = handler` (expando property). A single delegated listener on the\n * container walks event.target up the DOM tree, checking for expandos.\n *\n * Benefits:\n * - Saves ~2000 addEventListener calls for 1000 rows with 2 handlers each\n * - Reduces memory per row (no per-element listener closure)\n * - Faster initial mount (~0.4-0.8ms savings on 1000-row benchmarks)\n */\n\nimport { batch } from \"@pyreon/reactivity\"\n\n/**\n * Events that are delegated (common bubbling events).\n * Non-bubbling events (focus, blur, mouseenter, mouseleave, load, error, scroll)\n * are NOT delegated — they must use addEventListener.\n */\nexport const DELEGATED_EVENTS = new Set([\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"change\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"pointerdown\",\n \"pointerup\",\n \"pointermove\",\n \"pointerover\",\n \"pointerout\",\n \"touchstart\",\n \"touchend\",\n \"touchmove\",\n \"submit\",\n])\n\n/**\n * Property name used on DOM elements to store delegated event handlers.\n * Format: `__ev_{eventName}` e.g. `__ev_click`, `__ev_input`\n */\nexport function delegatedPropName(eventName: string): string {\n return `__ev_${eventName}`\n}\n\n// Track which containers already have delegation installed\nconst _delegated = new WeakSet<Element>()\n\n/**\n * Install delegation listeners on a container element.\n * Called once from mount(). Idempotent — safe to call multiple times.\n */\nexport function setupDelegation(container: Element): void {\n if (_delegated.has(container)) return\n _delegated.add(container)\n\n for (const eventName of DELEGATED_EVENTS) {\n const prop = delegatedPropName(eventName)\n container.addEventListener(eventName, (e: Event) => {\n let el = e.target as (HTMLElement & Record<string, unknown>) | null\n while (el && el !== container) {\n const handler = el[prop] as EventListener | undefined\n if (handler) {\n batch(() => handler(e))\n // Don't break — allow ancestor handlers too (consistent with addEventListener)\n // But if stopPropagation was called, stop walking\n if (e.cancelBubble) break\n }\n el = el.parentElement as (HTMLElement & Record<string, unknown>) | null\n }\n })\n }\n}\n","/**\n * Hydration mismatch warnings.\n *\n * Enabled automatically in development (NODE_ENV !== \"production\").\n * Can be toggled manually for testing or verbose production debugging.\n *\n * @example\n * import { enableHydrationWarnings } from \"@pyreon/runtime-dom\"\n * enableHydrationWarnings()\n */\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\nlet _enabled = __DEV__\n\nexport function enableHydrationWarnings(): void {\n _enabled = true\n}\n\nexport function disableHydrationWarnings(): void {\n _enabled = false\n}\n\n/**\n * Emit a hydration mismatch warning.\n * @param type - Kind of mismatch\n * @param expected - What the VNode expected\n * @param actual - What the DOM had\n * @param path - Human-readable path in the tree, e.g. \"root > div > span\"\n */\nexport function warnHydrationMismatch(\n _type: \"tag\" | \"text\" | \"missing\",\n _expected: unknown,\n _actual: unknown,\n _path: string,\n): void {\n if (!_enabled) return\n console.warn(\n `[Pyreon] Hydration mismatch (${_type}): expected ${String(_expected)}, got ${String(_actual)} at ${_path}`,\n )\n}\n","/**\n * Pyreon DevTools — exposes a `__PYREON_DEVTOOLS__` global hook for browser devtools extensions\n * and in-app debugging utilities.\n *\n * Installed automatically on first `mount()` call in the browser.\n * No-op on the server (typeof window === \"undefined\").\n *\n * Usage:\n * window.__PYREON_DEVTOOLS__.getComponentTree() // root component entries\n * window.__PYREON_DEVTOOLS__.getAllComponents() // flat list of all live components\n * window.__PYREON_DEVTOOLS__.highlight(\"comp-id\") // outline a component's DOM node\n * window.__PYREON_DEVTOOLS__.onComponentMount(cb) // subscribe to mount events\n * window.__PYREON_DEVTOOLS__.onComponentUnmount(cb)// subscribe to unmount events\n * window.__PYREON_DEVTOOLS__.enableOverlay() // Ctrl+Shift+P: hover to inspect components\n */\n\nexport interface DevtoolsComponentEntry {\n id: string\n name: string\n /** First DOM element produced by this component, if any */\n el: Element | null\n parentId: string | null\n childIds: string[]\n}\n\nexport interface PyreonDevtools {\n readonly version: string\n getComponentTree(): DevtoolsComponentEntry[]\n getAllComponents(): DevtoolsComponentEntry[]\n highlight(id: string): void\n onComponentMount(cb: (entry: DevtoolsComponentEntry) => void): () => void\n onComponentUnmount(cb: (id: string) => void): () => void\n /** Toggle the component inspector overlay (also: Ctrl+Shift+P) */\n enableOverlay(): void\n disableOverlay(): void\n}\n\n// ─── Internal registry ────────────────────────────────────────────────────────\n\nconst _components = new Map<string, DevtoolsComponentEntry>()\nconst _mountListeners: ((entry: DevtoolsComponentEntry) => void)[] = []\nconst _unmountListeners: ((id: string) => void)[] = []\n\nexport function registerComponent(\n id: string,\n name: string,\n el: Element | null,\n parentId: string | null,\n): void {\n const entry: DevtoolsComponentEntry = { id, name, el, parentId, childIds: [] }\n _components.set(id, entry)\n if (parentId) {\n const parent = _components.get(parentId)\n if (parent) parent.childIds.push(id)\n }\n for (const cb of _mountListeners) cb(entry)\n}\n\nexport function unregisterComponent(id: string): void {\n const entry = _components.get(id)\n if (!entry) return\n if (entry.parentId) {\n const parent = _components.get(entry.parentId)\n if (parent) parent.childIds = parent.childIds.filter((c) => c !== id)\n }\n _components.delete(id)\n for (const cb of _unmountListeners) cb(id)\n}\n\n// ─── Component Inspector Overlay ─────────────────────────────────────────────\n\nlet _overlayActive = false\nlet _overlayEl: HTMLDivElement | null = null\nlet _tooltipEl: HTMLDivElement | null = null\nlet _currentHighlight: Element | null = null\n\nfunction findComponentForElement(el: Element): DevtoolsComponentEntry | null {\n // Walk up from the hovered element to find the nearest registered component\n let node: Element | null = el\n while (node) {\n for (const entry of _components.values()) {\n if (entry.el === node) return entry\n }\n node = node.parentElement\n }\n return null\n}\n\nfunction createOverlayElements(): void {\n if (_overlayEl) return\n\n _overlayEl = document.createElement(\"div\")\n _overlayEl.id = \"__pyreon-overlay\"\n _overlayEl.style.cssText =\n \"position:fixed;pointer-events:none;border:2px solid #00b4d8;border-radius:3px;z-index:999999;display:none;transition:all 0.08s ease-out;\"\n\n _tooltipEl = document.createElement(\"div\")\n _tooltipEl.style.cssText =\n \"position:fixed;pointer-events:none;background:#1a1a2e;color:#e0e0e0;font:12px/1.4 ui-monospace,monospace;padding:6px 10px;border-radius:4px;z-index:999999;display:none;box-shadow:0 2px 8px rgba(0,0,0,0.3);max-width:400px;white-space:pre-wrap;\"\n\n document.body.appendChild(_overlayEl)\n document.body.appendChild(_tooltipEl)\n}\n\nfunction positionOverlay(rect: DOMRect): void {\n if (!_overlayEl) return\n _overlayEl.style.display = \"block\"\n _overlayEl.style.top = `${rect.top}px`\n _overlayEl.style.left = `${rect.left}px`\n _overlayEl.style.width = `${rect.width}px`\n _overlayEl.style.height = `${rect.height}px`\n}\n\nfunction positionTooltip(entry: DevtoolsComponentEntry, rect: DOMRect): void {\n if (!_tooltipEl) return\n const childCount = entry.childIds.length\n let info = `<${entry.name}>`\n if (childCount > 0) info += `\\n ${childCount} child component${childCount === 1 ? \"\" : \"s\"}`\n _tooltipEl.textContent = info\n _tooltipEl.style.display = \"block\"\n _tooltipEl.style.top = `${rect.top - 30}px`\n _tooltipEl.style.left = `${rect.left}px`\n if (rect.top < 35) {\n _tooltipEl.style.top = `${rect.bottom + 4}px`\n }\n}\n\nfunction hideOverlayElements(): void {\n if (_overlayEl) _overlayEl.style.display = \"none\"\n if (_tooltipEl) _tooltipEl.style.display = \"none\"\n _currentHighlight = null\n}\n\n/** @internal — exported for testing only */\nexport function onOverlayMouseMove(e: MouseEvent): void {\n const target = document.elementFromPoint(e.clientX, e.clientY)\n if (!target || target === _overlayEl || target === _tooltipEl) return\n\n const entry = findComponentForElement(target)\n if (!entry?.el) {\n hideOverlayElements()\n return\n }\n\n if (entry.el === _currentHighlight) return\n _currentHighlight = entry.el\n\n const rect = entry.el.getBoundingClientRect()\n positionOverlay(rect)\n positionTooltip(entry, rect)\n}\n\n/** @internal — exported for testing only */\nexport function onOverlayClick(e: MouseEvent): void {\n e.preventDefault()\n e.stopPropagation()\n const target = document.elementFromPoint(e.clientX, e.clientY)\n if (!target) return\n const entry = findComponentForElement(target)\n if (entry) {\n console.group(`[Pyreon] <${entry.name}>`)\n console.log(\"element:\", entry.el)\n console.log(\"children:\", entry.childIds.length)\n if (entry.parentId) {\n const parent = _components.get(entry.parentId)\n if (parent) {\n console.log(\"parent:\", `<${parent.name}>`)\n }\n }\n console.groupEnd()\n }\n disableOverlay()\n}\n\nfunction onOverlayKeydown(e: KeyboardEvent): void {\n if (e.key === \"Escape\") {\n disableOverlay()\n }\n}\n\nfunction enableOverlay(): void {\n if (_overlayActive) return\n _overlayActive = true\n createOverlayElements()\n document.addEventListener(\"mousemove\", onOverlayMouseMove, true)\n document.addEventListener(\"click\", onOverlayClick, true)\n document.addEventListener(\"keydown\", onOverlayKeydown, true)\n document.body.style.cursor = \"crosshair\"\n}\n\nfunction disableOverlay(): void {\n if (!_overlayActive) return\n _overlayActive = false\n document.removeEventListener(\"mousemove\", onOverlayMouseMove, true)\n document.removeEventListener(\"click\", onOverlayClick, true)\n document.removeEventListener(\"keydown\", onOverlayKeydown, true)\n document.body.style.cursor = \"\"\n if (_overlayEl) _overlayEl.style.display = \"none\"\n if (_tooltipEl) _tooltipEl.style.display = \"none\"\n _currentHighlight = null\n}\n\n// ─── Installation ─────────────────────────────────────────────────────────────\n\nlet _installed = false\n// Resolved once at module load — avoids per-call typeof branch in coverage\nconst _hasWindow = typeof window !== \"undefined\"\n\nexport function installDevTools(): void {\n if (!_hasWindow || _installed) return\n _installed = true\n\n const devtools: PyreonDevtools = {\n version: \"0.1.0\",\n\n getComponentTree() {\n return Array.from(_components.values()).filter((e) => e.parentId === null)\n },\n\n getAllComponents() {\n return Array.from(_components.values())\n },\n\n highlight(id: string) {\n const entry = _components.get(id)\n if (!entry?.el) return\n const el = entry.el as HTMLElement\n const prev = el.style.outline\n el.style.outline = \"2px solid #00b4d8\"\n setTimeout(() => {\n el.style.outline = prev\n }, 1500)\n },\n\n onComponentMount(cb: (entry: DevtoolsComponentEntry) => void): () => void {\n _mountListeners.push(cb)\n return () => {\n const i = _mountListeners.indexOf(cb)\n if (i >= 0) _mountListeners.splice(i, 1)\n }\n },\n\n onComponentUnmount(cb: (id: string) => void): () => void {\n _unmountListeners.push(cb)\n return () => {\n const i = _unmountListeners.indexOf(cb)\n if (i >= 0) _unmountListeners.splice(i, 1)\n }\n },\n\n enableOverlay,\n disableOverlay,\n }\n\n // Attach to window — compatible with browser devtools extensions\n ;(window as unknown as Record<string, unknown>).__PYREON_DEVTOOLS__ = devtools\n\n // Ctrl+Shift+P toggles the component inspector overlay\n window.addEventListener(\"keydown\", (e) => {\n if (e.ctrlKey && e.shiftKey && e.key === \"P\") {\n e.preventDefault()\n if (_overlayActive) disableOverlay()\n else enableOverlay()\n }\n })\n\n // ── $p console helper ────────────────────────────────────────────────────\n // Type `$p` in the browser console for quick access to Pyreon debug tools.\n const win = window as unknown as Record<string, unknown>\n win.$p = {\n /** List all mounted components */\n components: () => devtools.getAllComponents(),\n /** Component tree (roots only) */\n tree: () => devtools.getComponentTree(),\n /** Highlight a component by id */\n highlight: (id: string) => devtools.highlight(id),\n /** Toggle component inspector overlay */\n inspect: () => {\n if (_overlayActive) disableOverlay()\n else enableOverlay()\n },\n /** Print component count */\n stats: () => {\n const all = devtools.getAllComponents()\n const roots = devtools.getComponentTree()\n console.log(\n `[Pyreon] ${all.length} component${all.length === 1 ? \"\" : \"s\"}, ${roots.length} root${roots.length === 1 ? \"\" : \"s\"}`,\n )\n return { total: all.length, roots: roots.length }\n },\n /** Quick help */\n help: () => {\n console.log(\n \"[Pyreon] $p commands:\\n\" +\n \" $p.components() — list all mounted components\\n\" +\n \" $p.tree() — component tree (roots only)\\n\" +\n \" $p.highlight(id)— outline a component\\n\" +\n \" $p.inspect() — toggle component inspector\\n\" +\n \" $p.stats() — print component count\\n\" +\n \" $p.help() — this message\",\n )\n },\n }\n}\n","import type { VNode, VNodeChild } from \"@pyreon/core\"\n\ntype MountFn = (child: VNodeChild, parent: Node, anchor: Node | null) => Cleanup\n\nimport { effect, runUntracked } from \"@pyreon/reactivity\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\ntype Cleanup = () => void\n\n/**\n * Move all nodes strictly between `start` and `end` into a throwaway\n * DocumentFragment, detaching them from the live DOM in O(n) top-level moves.\n *\n * This is dramatically faster than Range.deleteContents() in JS-based DOMs\n * (happy-dom, jsdom) where deleting connected nodes with deep subtrees is O(n²).\n * In real browsers both approaches are similar, but the fragment approach is\n * never slower and avoids the pathological case.\n *\n * After this call every moved node has isConnected=false, so cleanup functions\n * that guard removeChild with `isConnected !== false` become no-ops.\n */\nfunction clearBetween(start: Node, end: Node): void {\n const frag = document.createDocumentFragment()\n let cur: Node | null = start.nextSibling\n while (cur && cur !== end) {\n const next: Node | null = cur.nextSibling\n frag.appendChild(cur)\n cur = next\n }\n // frag goes out of scope → nodes are GC-eligible\n}\n\n/**\n * Mount a reactive node whose content changes over time.\n *\n * A comment node is used as a stable anchor point in the DOM.\n * On each change: old nodes are removed, new ones inserted before the anchor.\n */\nexport function mountReactive(\n accessor: () => VNodeChild,\n parent: Node,\n anchor: Node | null,\n mount: (child: VNodeChild, p: Node, a: Node | null) => Cleanup,\n): Cleanup {\n const marker = document.createComment(\"pyreon\")\n parent.insertBefore(marker, anchor)\n\n let currentCleanup: Cleanup = () => {\n /* noop */\n }\n let generation = 0\n\n const e = effect(() => {\n const myGen = ++generation\n // Run cleanup outside tracking context — cleanup may write to signals\n // (e.g. onUnmount hooks), and those writes must not accidentally register\n // as dependencies of this effect, which would cause infinite recursion.\n runUntracked(() => currentCleanup())\n currentCleanup = () => {\n /* noop */\n }\n const value = accessor()\n if (__DEV__ && typeof value === \"function\") {\n console.warn(\n \"[Pyreon] Reactive accessor returned a function instead of a value. Did you forget to call the signal?\",\n )\n }\n if (value != null && value !== false) {\n const cleanup = mount(value, parent, marker)\n // Guard: a re-entrant signal update (e.g. ErrorBoundary catching a child\n // throw) may have already re-run this effect and updated currentCleanup.\n // In that case, discard our stale cleanup rather than overwriting the one\n // set by the re-entrant run.\n if (myGen === generation) {\n currentCleanup = cleanup\n } else {\n cleanup()\n }\n }\n })\n\n return () => {\n e.dispose()\n currentCleanup()\n marker.parentNode?.removeChild(marker)\n }\n}\n\n// ─── Keyed list reconciler ────────────────────────────────────────────────────\n\n/**\n * Efficient keyed list reconciler.\n *\n * When a reactive accessor returns VNode[] where every vnode carries a key,\n * this reconciler reuses, moves, and creates DOM nodes surgically instead of\n * tearing down and rebuilding the full list on every signal update.\n */\n\ninterface KeyedEntry {\n /** Comment node placed immediately before this entry's DOM content. */\n anchor: Comment\n cleanup: Cleanup\n}\n\n// WeakSets to identify anchor nodes belonging to list entries.\n// Entries use their first DOM node as anchor (element for simple vnodes, comment fallback for empty).\nconst _keyedAnchors = new WeakSet<Node>()\n\n/** LIS-based reorder state — shared across keyed list instances, grown as needed */\ninterface LisState {\n tails: Int32Array\n tailIdx: Int32Array\n pred: Int32Array\n stay: Uint8Array\n}\n\nfunction growLisArrays(lis: LisState, n: number): LisState {\n if (n <= lis.pred.length) return lis\n return {\n tails: new Int32Array(n + 16),\n tailIdx: new Int32Array(n + 16),\n pred: new Int32Array(n + 16),\n stay: new Uint8Array(n + 16),\n }\n}\n\nfunction computeKeyedLis(\n lis: LisState,\n n: number,\n newKeyOrder: (string | number)[],\n curPos: Map<string | number, number>,\n): number {\n const { tails, tailIdx, pred } = lis\n let lisLen = 0\n for (let i = 0; i < n; i++) {\n const key = newKeyOrder[i]\n if (key === undefined) continue\n const v = curPos.get(key) ?? -1\n if (v < 0) continue\n\n let lo = 0\n let hi = lisLen\n while (lo < hi) {\n const mid = (lo + hi) >> 1\n if ((tails[mid] as number) < v) lo = mid + 1\n else hi = mid\n }\n tails[lo] = v\n tailIdx[lo] = i\n if (lo > 0) pred[i] = tailIdx[lo - 1] as number\n if (lo === lisLen) lisLen++\n }\n return lisLen\n}\n\nfunction markStayingEntries(lis: LisState, lisLen: number): void {\n const { tailIdx, pred, stay } = lis\n let cur: number = lisLen > 0 ? (tailIdx[lisLen - 1] as number) : -1\n while (cur !== -1) {\n stay[cur] = 1\n cur = pred[cur] as number\n }\n}\n\nfunction applyKeyedMoves(\n n: number,\n newKeyOrder: (string | number)[],\n stay: Uint8Array,\n cache: Map<string | number, KeyedEntry>,\n parent: Node,\n tailMarker: Comment,\n): void {\n let cursor: Node = tailMarker\n for (let i = n - 1; i >= 0; i--) {\n const key = newKeyOrder[i]\n if (key === undefined) continue\n const entry = cache.get(key)\n if (!entry) continue\n if (!stay[i]) moveEntryBefore(parent, entry.anchor, cursor)\n cursor = entry.anchor\n }\n}\n\n/** Grow LIS typed arrays if needed, then compute and apply reorder. */\nfunction keyedListReorder(\n lis: LisState,\n n: number,\n newKeyOrder: (string | number)[],\n curPos: Map<string | number, number>,\n cache: Map<string | number, KeyedEntry>,\n parent: Node,\n tailMarker: Comment,\n): LisState {\n const grown = growLisArrays(lis, n)\n grown.pred.fill(-1, 0, n)\n grown.stay.fill(0, 0, n)\n\n const lisLen = computeKeyedLis(grown, n, newKeyOrder, curPos)\n markStayingEntries(grown, lisLen)\n applyKeyedMoves(n, newKeyOrder, grown.stay, cache, parent, tailMarker)\n\n return grown\n}\n\nexport function mountKeyedList(\n accessor: () => VNode[],\n parent: Node,\n listAnchor: Node | null,\n mountVNode: (vnode: VNode, p: Node, a: Node | null) => Cleanup,\n): Cleanup {\n const startMarker = document.createComment(\"\")\n const tailMarker = document.createComment(\"\")\n parent.insertBefore(startMarker, listAnchor)\n parent.insertBefore(tailMarker, listAnchor)\n\n const cache = new Map<string | number, KeyedEntry>()\n const curPos = new Map<string | number, number>()\n let currentKeyOrder: (string | number)[] = []\n\n let lis: LisState = {\n tails: new Int32Array(16),\n tailIdx: new Int32Array(16),\n pred: new Int32Array(16),\n stay: new Uint8Array(16),\n }\n\n const collectKeyOrder = (\n newList: VNode[],\n ): { newKeyOrder: (string | number)[]; newKeySet: Set<string | number> } => {\n const newKeyOrder: (string | number)[] = []\n const newKeySet = new Set<string | number>()\n for (const vnode of newList) {\n const key = vnode.key\n if (key !== null && key !== undefined) {\n newKeyOrder.push(key)\n newKeySet.add(key)\n }\n }\n return { newKeyOrder, newKeySet }\n }\n\n const removeStaleEntries = (newKeySet: Set<string | number>) => {\n for (const [key, entry] of cache) {\n if (newKeySet.has(key)) continue\n entry.cleanup()\n entry.anchor.parentNode?.removeChild(entry.anchor)\n cache.delete(key)\n curPos.delete(key)\n }\n }\n\n const mountNewEntries = (newList: VNode[]) => {\n for (const vnode of newList) {\n const key = vnode.key\n if (key === null || key === undefined) continue\n if (cache.has(key)) continue\n const anchor = document.createComment(\"\")\n _keyedAnchors.add(anchor)\n parent.insertBefore(anchor, tailMarker)\n const cleanup = mountVNode(vnode, parent, tailMarker)\n cache.set(key, { anchor, cleanup })\n }\n }\n\n const e = effect(() => {\n const newList = accessor()\n const n = newList.length\n\n if (n === 0 && cache.size > 0) {\n for (const entry of cache.values()) entry.cleanup()\n cache.clear()\n curPos.clear()\n currentKeyOrder = []\n clearBetween(startMarker, tailMarker)\n return\n }\n\n const { newKeyOrder, newKeySet } = collectKeyOrder(newList)\n removeStaleEntries(newKeySet)\n mountNewEntries(newList)\n\n if (currentKeyOrder.length > 0 && n > 0) {\n lis = keyedListReorder(lis, n, newKeyOrder, curPos, cache, parent, tailMarker)\n }\n\n curPos.clear()\n for (let i = 0; i < newKeyOrder.length; i++) {\n const k = newKeyOrder[i]\n if (k !== undefined) curPos.set(k, i)\n }\n currentKeyOrder = newKeyOrder\n })\n\n return () => {\n e.dispose()\n for (const entry of cache.values()) {\n entry.cleanup()\n entry.anchor.parentNode?.removeChild(entry.anchor)\n }\n cache.clear()\n startMarker.parentNode?.removeChild(startMarker)\n tailMarker.parentNode?.removeChild(tailMarker)\n }\n}\n\n// ─── For — source-aware keyed reconciler ─────────────────────────────────────\n\n/** Maximum number of displaced positions before falling back to full LIS. */\nconst SMALL_K = 8\n\n// WeakSet to identify anchor nodes belonging to mountFor entries.\nconst _forAnchors = new WeakSet<Node>()\n\n// anchor is the first DOM node of the entry (element for normal vnodes, comment fallback for empty).\n// Using the element itself saves 1 createComment + 1 DOM node per entry.\n// pos is merged here (instead of a separate Map) to halve Map operations.\n// cleanup is null when the entry has no teardown work (saves function call overhead on clear).\ninterface ForEntry {\n anchor: Node\n cleanup: Cleanup | null\n pos: number\n}\n\n/** Try small-k reorder; returns true if handled, false if LIS fallback needed. */\nfunction trySmallKReorder(\n n: number,\n newKeys: (string | number)[],\n currentKeys: (string | number)[],\n cache: Map<string | number, ForEntry>,\n liveParent: Node,\n tailMarker: Comment,\n): boolean {\n if (n !== currentKeys.length) return false\n const diffs: number[] = []\n for (let i = 0; i < n; i++) {\n if (newKeys[i] !== currentKeys[i]) {\n diffs.push(i)\n if (diffs.length > SMALL_K) return false\n }\n }\n if (diffs.length > 0) smallKPlace(liveParent, diffs, newKeys, cache, tailMarker)\n for (const i of diffs) {\n const cached = cache.get(newKeys[i] as string | number)\n if (cached) cached.pos = i\n }\n return true\n}\n\nfunction computeForLis(\n lis: LisState,\n n: number,\n newKeys: (string | number)[],\n cache: Map<string | number, ForEntry>,\n): number {\n const { tails, tailIdx, pred } = lis\n let lisLen = 0\n for (let i = 0; i < n; i++) {\n const key = newKeys[i] as string | number\n const v = cache.get(key)?.pos ?? 0\n let lo = 0\n let hi = lisLen\n while (lo < hi) {\n const mid = (lo + hi) >> 1\n if ((tails[mid] as number) < v) lo = mid + 1\n else hi = mid\n }\n tails[lo] = v\n tailIdx[lo] = i\n if (lo > 0) pred[i] = tailIdx[lo - 1] as number\n if (lo === lisLen) lisLen++\n }\n return lisLen\n}\n\nfunction applyForMoves(\n n: number,\n newKeys: (string | number)[],\n stay: Uint8Array,\n cache: Map<string | number, ForEntry>,\n liveParent: Node,\n tailMarker: Comment,\n): void {\n let cursor: Node = tailMarker\n for (let i = n - 1; i >= 0; i--) {\n const entry = cache.get(newKeys[i] as string | number)\n if (!entry) continue\n if (!stay[i]) moveEntryBefore(liveParent, entry.anchor, cursor)\n cursor = entry.anchor\n }\n}\n\n/** LIS-based reorder for mountFor. */\nfunction forLisReorder(\n lis: LisState,\n n: number,\n newKeys: (string | number)[],\n cache: Map<string | number, ForEntry>,\n liveParent: Node,\n tailMarker: Comment,\n): LisState {\n const grown = growLisArrays(lis, n)\n grown.pred.fill(-1, 0, n)\n grown.stay.fill(0, 0, n)\n\n const lisLen = computeForLis(grown, n, newKeys, cache)\n markStayingEntries(grown, lisLen)\n applyForMoves(n, newKeys, grown.stay, cache, liveParent, tailMarker)\n\n for (let i = 0; i < n; i++) {\n const cached = cache.get(newKeys[i] as string | number)\n if (cached) cached.pos = i\n }\n\n return grown\n}\n\n/**\n * Keyed reconciler that works directly on the source item array.\n *\n * Optimizations:\n * - Calls renderItem() only for NEW keys — 0 VNode allocations for reorders\n * - Small-k fast path: if <= SMALL_K positions changed, skips LIS\n * - Fast clear path: moves nodes to DocumentFragment for O(n) bulk detach\n * - Fresh render fast path: skips stale-check and reorder on first render\n */\nexport function mountFor<T>(\n source: () => T[],\n getKey: (item: T) => string | number,\n renderItem: (item: T) => import(\"@pyreon/core\").VNode | import(\"@pyreon/core\").NativeItem,\n parent: Node,\n anchor: Node | null,\n mountChild: MountFn,\n): Cleanup {\n const startMarker = document.createComment(\"\")\n const tailMarker = document.createComment(\"\")\n parent.insertBefore(startMarker, anchor)\n parent.insertBefore(tailMarker, anchor)\n\n let cache = new Map<string | number, ForEntry>()\n let currentKeys: (string | number)[] = []\n let cleanupCount = 0\n let anchorsRegistered = false\n\n let lis: LisState = {\n tails: new Int32Array(16),\n tailIdx: new Int32Array(16),\n pred: new Int32Array(16),\n stay: new Uint8Array(16),\n }\n\n const warnDuplicateKeys = (seen: Set<string | number> | null, key: string | number) => {\n if (!__DEV__ || !seen) return\n if (seen.has(key)) {\n console.warn(`[Pyreon] Duplicate key \"${String(key)}\" in <For> list. Keys must be unique.`)\n }\n seen.add(key)\n }\n\n /** Render item into container, update cache+cleanupCount. No anchor registration. */\n const renderInto = (\n item: T,\n key: string | number,\n pos: number,\n container: Node,\n before: Node | null,\n ) => {\n const result = renderItem(item)\n if ((result as import(\"@pyreon/core\").NativeItem).__isNative) {\n const native = result as import(\"@pyreon/core\").NativeItem\n container.insertBefore(native.el, before)\n cache.set(key, { anchor: native.el, cleanup: native.cleanup, pos })\n if (native.cleanup) cleanupCount++\n return\n }\n const priorLast = before ? before.previousSibling : container.lastChild\n const cl = mountChild(result as import(\"@pyreon/core\").VNode, container, before)\n const firstMounted = priorLast ? priorLast.nextSibling : container.firstChild\n if (!firstMounted || firstMounted === before) {\n const ph = document.createComment(\"\")\n container.insertBefore(ph, before)\n cache.set(key, { anchor: ph, cleanup: cl, pos })\n } else {\n cache.set(key, { anchor: firstMounted, cleanup: cl, pos })\n }\n cleanupCount++\n }\n\n const handleFreshRender = (items: T[], n: number, liveParent: Node) => {\n const frag = document.createDocumentFragment()\n const keys = new Array<string | number>(n)\n const _seenKeys = __DEV__ ? new Set<string | number>() : null\n for (let i = 0; i < n; i++) {\n const item = items[i] as T\n const key = getKey(item)\n warnDuplicateKeys(_seenKeys, key)\n keys[i] = key\n renderInto(item, key, i, frag, null)\n }\n liveParent.insertBefore(frag, tailMarker)\n anchorsRegistered = false\n currentKeys = keys\n }\n\n const collectNewKeys = (items: T[], n: number): (string | number)[] => {\n const newKeys = new Array<string | number>(n)\n const _seenUpdate = __DEV__ ? new Set<string | number>() : null\n for (let i = 0; i < n; i++) {\n newKeys[i] = getKey(items[i] as T)\n warnDuplicateKeys(_seenUpdate, newKeys[i] as string | number)\n }\n return newKeys\n }\n\n const handleReplaceAll = (\n items: T[],\n n: number,\n newKeys: (string | number)[],\n liveParent: Node,\n ) => {\n if (cleanupCount > 0) {\n for (const entry of cache.values()) if (entry.cleanup) entry.cleanup()\n }\n cache = new Map()\n cleanupCount = 0\n\n const parentParent = liveParent.parentNode\n const canSwap =\n parentParent && liveParent.firstChild === startMarker && liveParent.lastChild === tailMarker\n\n const frag = document.createDocumentFragment()\n for (let i = 0; i < n; i++) {\n renderInto(items[i] as T, newKeys[i] as string | number, i, frag, null)\n }\n anchorsRegistered = false\n\n if (canSwap) {\n const fresh = liveParent.cloneNode(false)\n fresh.appendChild(startMarker)\n fresh.appendChild(frag)\n fresh.appendChild(tailMarker)\n parentParent.replaceChild(fresh, liveParent)\n } else {\n clearBetween(startMarker, tailMarker)\n liveParent.insertBefore(frag, tailMarker)\n }\n currentKeys = newKeys\n }\n\n const removeStaleForEntries = (newKeySet: Set<string | number>) => {\n for (const [key, entry] of cache) {\n if (newKeySet.has(key)) continue\n if (entry.cleanup) {\n entry.cleanup()\n cleanupCount--\n }\n entry.anchor.parentNode?.removeChild(entry.anchor)\n cache.delete(key)\n }\n }\n\n const mountNewForEntries = (\n items: T[],\n n: number,\n newKeys: (string | number)[],\n liveParent: Node,\n ) => {\n for (let i = 0; i < n; i++) {\n const key = newKeys[i] as string | number\n if (cache.has(key)) continue\n renderInto(items[i] as T, key, i, liveParent, tailMarker)\n const entry = cache.get(key)\n if (entry) _forAnchors.add(entry.anchor)\n }\n }\n\n const handleFastClear = (liveParent: Node) => {\n if (cache.size === 0) return\n if (cleanupCount > 0) {\n for (const entry of cache.values()) if (entry.cleanup) entry.cleanup()\n }\n const pp = liveParent.parentNode\n if (pp && liveParent.firstChild === startMarker && liveParent.lastChild === tailMarker) {\n const fresh = liveParent.cloneNode(false)\n fresh.appendChild(startMarker)\n fresh.appendChild(tailMarker)\n pp.replaceChild(fresh, liveParent)\n } else {\n clearBetween(startMarker, tailMarker)\n }\n cache = new Map()\n cleanupCount = 0\n currentKeys = []\n }\n\n const hasAnyKeptKey = (n: number, newKeys: (string | number)[]): boolean => {\n for (let i = 0; i < n; i++) {\n if (cache.has(newKeys[i] as string | number)) return true\n }\n return false\n }\n\n const handleIncrementalUpdate = (\n items: T[],\n n: number,\n newKeys: (string | number)[],\n liveParent: Node,\n ) => {\n removeStaleForEntries(new Set<string | number>(newKeys))\n mountNewForEntries(items, n, newKeys, liveParent)\n\n if (!anchorsRegistered) {\n for (const entry of cache.values()) _forAnchors.add(entry.anchor)\n anchorsRegistered = true\n }\n\n if (trySmallKReorder(n, newKeys, currentKeys, cache, liveParent, tailMarker)) {\n currentKeys = newKeys\n return\n }\n\n lis = forLisReorder(lis, n, newKeys, cache, liveParent, tailMarker)\n currentKeys = newKeys\n }\n\n const e = effect(() => {\n const liveParent = startMarker.parentNode\n if (!liveParent) return\n const items = source()\n const n = items.length\n\n if (n === 0) {\n handleFastClear(liveParent)\n return\n }\n\n if (currentKeys.length === 0) {\n handleFreshRender(items, n, liveParent)\n return\n }\n\n const newKeys = collectNewKeys(items, n)\n\n if (!hasAnyKeptKey(n, newKeys)) {\n handleReplaceAll(items, n, newKeys, liveParent)\n return\n }\n\n handleIncrementalUpdate(items, n, newKeys, liveParent)\n })\n\n return () => {\n e.dispose()\n for (const entry of cache.values()) {\n if (cleanupCount > 0 && entry.cleanup) entry.cleanup()\n entry.anchor.parentNode?.removeChild(entry.anchor)\n }\n cache = new Map()\n cleanupCount = 0\n startMarker.parentNode?.removeChild(startMarker)\n tailMarker.parentNode?.removeChild(tailMarker)\n }\n}\n\n/**\n * Small-k reorder: directly place the k displaced entries without LIS.\n */\nfunction smallKPlace(\n parent: Node,\n diffs: number[],\n newKeys: (string | number)[],\n cache: Map<string | number, { anchor: Node; cleanup: Cleanup | null }>,\n tailMarker: Comment,\n): void {\n const diffSet = new Set(diffs)\n let cursor: Node = tailMarker\n let prevDiffIdx = newKeys.length\n\n for (let d = diffs.length - 1; d >= 0; d--) {\n const i = diffs[d] as number\n\n let nextNonDiff = -1\n for (let j = i + 1; j < prevDiffIdx; j++) {\n if (!diffSet.has(j)) {\n nextNonDiff = j\n break\n }\n }\n\n if (nextNonDiff >= 0) {\n const nc = cache.get(newKeys[nextNonDiff] as string | number)?.anchor\n if (nc) cursor = nc\n }\n\n const entry = cache.get(newKeys[i] as string | number)\n if (!entry) {\n prevDiffIdx = i\n continue\n }\n moveEntryBefore(parent, entry.anchor, cursor)\n cursor = entry.anchor\n prevDiffIdx = i\n }\n}\n\n/**\n * Move startNode and all siblings belonging to this entry to just before `before`.\n * Stops at the next entry anchor (identified via WeakSet) or the tail marker.\n *\n * Fast path: if the next sibling is already a boundary (another entry or tail),\n * this entry is a single node — skip the toMove array entirely.\n */\nfunction moveEntryBefore(parent: Node, startNode: Node, before: Node): void {\n const next = startNode.nextSibling\n // Single-node fast path (covers all createTemplate rows — the common case)\n if (\n !next ||\n next === before ||\n (next.parentNode === parent && (_forAnchors.has(next) || _keyedAnchors.has(next)))\n ) {\n parent.insertBefore(startNode, before)\n return\n }\n // Multi-node slow path (fragments, components with multiple root nodes)\n const toMove: Node[] = [startNode]\n let cur: Node | null = next\n while (cur && cur !== before) {\n const nextNode: Node | null = cur.nextSibling\n toMove.push(cur)\n cur = nextNode\n if (\n cur &&\n cur.parentNode === parent &&\n (cur === before || _forAnchors.has(cur) || _keyedAnchors.has(cur))\n )\n break\n }\n for (const node of toMove) {\n parent.insertBefore(node, before)\n }\n}\n","import type { Props } from \"@pyreon/core\"\nimport { batch, renderEffect } from \"@pyreon/reactivity\"\nimport { DELEGATED_EVENTS, delegatedPropName } from \"./delegate\"\n\ntype Cleanup = () => void\n\n/**\n * Directive function signature.\n * Receives the element and an `addCleanup` callback to register teardown logic.\n *\n * @example\n * const nFocus: Directive = (el) => { el.focus() }\n *\n * // With reactive value (via closure):\n * const nTooltip = (text: () => string): Directive => (el, addCleanup) => {\n * const e = effect(() => { el.title = text() })\n * addCleanup(() => e.dispose())\n * }\n *\n * // Usage:\n * h(\"input\", { \"n-focus\": nFocus })\n * h(\"div\", { \"n-tooltip\": nTooltip(() => label()) })\n */\nexport type Directive = (el: HTMLElement, addCleanup: (fn: Cleanup) => void) => void\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\n// ─── Configurable sanitizer ──────────────────────────────────────────────────\n\nexport type SanitizeFn = (html: string) => string\n\nlet _customSanitizer: SanitizeFn | null = null\n\n/**\n * Set a custom HTML sanitizer used by `innerHTML` and `sanitizeHtml()`.\n * Overrides both the Sanitizer API and the built-in fallback.\n *\n * @example\n * // With DOMPurify:\n * import DOMPurify from \"dompurify\"\n * setSanitizer((html) => DOMPurify.sanitize(html))\n *\n * // With sanitize-html:\n * import sanitize from \"sanitize-html\"\n * setSanitizer((html) => sanitize(html))\n *\n * // Reset to built-in:\n * setSanitizer(null)\n */\nexport function setSanitizer(fn: SanitizeFn | null): void {\n _customSanitizer = fn\n}\n\n// Safe HTML tags allowed by the fallback sanitizer (block + inline, no scripts/embeds/forms)\nconst SAFE_TAGS = new Set([\n \"a\",\n \"abbr\",\n \"address\",\n \"article\",\n \"aside\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"blockquote\",\n \"br\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hr\",\n \"i\",\n \"ins\",\n \"kbd\",\n \"li\",\n \"main\",\n \"mark\",\n \"nav\",\n \"ol\",\n \"p\",\n \"pre\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"section\",\n \"small\",\n \"span\",\n \"strong\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"tr\",\n \"u\",\n \"ul\",\n \"var\",\n \"wbr\",\n])\n\n// Attributes that can carry executable code\nconst UNSAFE_ATTR_RE = /^on/i\n\n/**\n * Fallback tag-stripping sanitizer for environments without the Sanitizer API.\n * Removes all tags not in SAFE_TAGS, strips event handler attributes,\n * and blocks javascript:/data: URLs in href/src/action attributes.\n */\nfunction fallbackSanitize(html: string): string {\n const doc = new DOMParser().parseFromString(html, \"text/html\")\n sanitizeNode(doc.body)\n return doc.body.innerHTML\n}\n\n/** Strip unsafe attributes from a single element. */\nfunction stripUnsafeAttrs(el: Element): void {\n const attrs = Array.from(el.attributes)\n for (const attr of attrs) {\n if (UNSAFE_ATTR_RE.test(attr.name)) {\n el.removeAttribute(attr.name)\n } else if (URL_ATTRS.has(attr.name) && UNSAFE_URL_RE.test(attr.value)) {\n el.removeAttribute(attr.name)\n }\n }\n}\n\nfunction sanitizeNode(node: Node): void {\n const children = Array.from(node.childNodes)\n for (const child of children) {\n if (child.nodeType !== 1) continue\n const el = child as Element\n const tag = el.tagName.toLowerCase()\n if (!SAFE_TAGS.has(tag)) {\n const text = document.createTextNode(el.textContent as string)\n node.replaceChild(text, el)\n continue\n }\n stripUnsafeAttrs(el)\n sanitizeNode(el)\n }\n}\n\n/**\n * Sanitize an HTML string using the browser Sanitizer API (Chrome 105+).\n * Falls back to a tag-allowlist sanitizer that strips unsafe elements and attributes.\n */\nexport function sanitizeHtml(html: string): string {\n // User-provided sanitizer takes priority (e.g. DOMPurify)\n if (_customSanitizer) return _customSanitizer(html)\n // DOM-based allowlist sanitizer — DOMParser is available in all browser targets.\n // sanitizeHtml is only called for innerHTML (DOM-only), so SSR fallback is not needed.\n return fallbackSanitize(html)\n}\n\n// Matches onClick, onInput, onMouseEnter, etc.\nconst EVENT_RE = /^on[A-Z]/\n\n/**\n * Apply all props to a DOM element.\n * Returns a single chained cleanup (or null if no props need teardown).\n * Uses for-in instead of Object.keys() to avoid allocating a keys array.\n */\nexport function applyProps(el: Element, props: Props): Cleanup | null {\n let cleanup: Cleanup | null = null\n for (const key in props) {\n if (key === \"key\" || key === \"ref\") continue\n const c = applyProp(el, key, props[key])\n if (c) {\n if (!cleanup) {\n cleanup = c\n } else {\n const prev = cleanup\n cleanup = () => {\n prev()\n c()\n }\n }\n }\n }\n return cleanup\n}\n\n/**\n * Apply a single prop.\n *\n * - `onXxx` → addEventListener\n * - `() => value` (non-event function) → reactive via effect\n * - anything else → static attribute / DOM property\n */\nexport function applyProp(el: Element, key: string, value: unknown): Cleanup | null {\n // Event listener: onClick → \"click\"\n // Delegated events use expando properties (picked up by the container's delegated listener).\n // Non-delegated events use addEventListener directly.\n // Both paths wrap in batch() so multiple signal writes coalesce into one DOM update.\n if (EVENT_RE.test(key)) {\n const eventName = key[2]?.toLowerCase() + key.slice(3)\n const handler = value as EventListener\n\n if (DELEGATED_EVENTS.has(eventName)) {\n const prop = delegatedPropName(eventName)\n ;(el as unknown as Record<string, unknown>)[prop] = (e: Event) => batch(() => handler(e))\n return () => {\n ;(el as unknown as Record<string, unknown>)[prop] = undefined\n }\n }\n\n const batched: EventListener = (e) => batch(() => handler(e))\n el.addEventListener(eventName, batched)\n return () => el.removeEventListener(eventName, batched)\n }\n\n // innerHTML — sanitized via Sanitizer API or fallback allowlist sanitizer\n if (key === \"innerHTML\") {\n if (typeof (el as HTMLElement & { setHTML?: (h: string) => void }).setHTML === \"function\") {\n ;(el as HTMLElement & { setHTML: (h: string) => void }).setHTML(value as string)\n } else {\n ;(el as HTMLElement).innerHTML = sanitizeHtml(value as string)\n }\n return null\n }\n // dangerouslySetInnerHTML — intentionally raw, developer owns sanitization (same as React)\n if (key === \"dangerouslySetInnerHTML\") {\n if (__DEV__) {\n console.warn(\n \"[Pyreon] dangerouslySetInnerHTML bypasses sanitization. Ensure the HTML is trusted.\",\n )\n }\n ;(el as HTMLElement).innerHTML = (value as { __html: string }).__html\n return null\n }\n\n // n-show: toggle display based on a reactive boolean\n if (key === \"n-show\") {\n const dispose = renderEffect(() => {\n const visible = (value as () => boolean)()\n ;(el as HTMLElement).style.display = visible ? \"\" : \"none\"\n })\n return dispose\n }\n\n // Custom directive: n-* keys call the directive function with (el, addCleanup)\n if (key.startsWith(\"n-\")) {\n const directive = value as Directive\n const cleanups: Cleanup[] = []\n directive(el as HTMLElement, (fn) => cleanups.push(fn))\n return cleanups.length > 0\n ? () => {\n for (const fn of cleanups) fn()\n }\n : null\n }\n\n // Reactive prop — function that returns the actual value\n // Uses renderEffect (lighter than effect — no scope registration, no WeakMap)\n // since lifecycle is managed by mountElement's cleanup array.\n if (typeof value === \"function\") {\n const dispose = renderEffect(() => setStaticProp(el, key, (value as () => unknown)()))\n return dispose\n }\n\n setStaticProp(el, key, value)\n return null\n}\n\n// Attributes that carry URLs and must be guarded against javascript:/data: injection.\nconst URL_ATTRS = new Set([\"href\", \"src\", \"action\", \"formaction\", \"poster\", \"cite\", \"data\"])\nconst UNSAFE_URL_RE = /^\\s*(?:javascript|data):/i\n\n/** Apply a style prop (string or object). */\nfunction applyStyleProp(el: HTMLElement, value: unknown): void {\n if (typeof value === \"string\") {\n el.style.cssText = value\n } else if (value != null && typeof value === \"object\") {\n Object.assign(el.style, value)\n }\n}\n\nfunction setStaticProp(el: Element, key: string, value: unknown): void {\n // Block javascript:/data: URI injection in URL-bearing attributes.\n if (URL_ATTRS.has(key) && typeof value === \"string\" && UNSAFE_URL_RE.test(value)) {\n if (__DEV__) {\n console.warn(`[Pyreon] Blocked unsafe URL in \"${key}\" attribute: ${value}`)\n }\n return\n }\n\n if (key === \"class\" || key === \"className\") {\n el.setAttribute(\"class\", value == null ? \"\" : String(value))\n return\n }\n\n if (key === \"style\") {\n applyStyleProp(el as HTMLElement, value)\n return\n }\n\n if (value == null) {\n el.removeAttribute(key)\n return\n }\n\n if (typeof value === \"boolean\") {\n if (value) el.setAttribute(key, \"\")\n else el.removeAttribute(key)\n return\n }\n\n if (key in el) {\n ;(el as unknown as Record<string, unknown>)[key] = value\n return\n }\n\n el.setAttribute(key, String(value))\n}\n","import type {\n ComponentFn,\n ForProps,\n NativeItem,\n PortalProps,\n Ref,\n VNode,\n VNodeChild,\n} from \"@pyreon/core\"\nimport {\n dispatchToErrorBoundary,\n EMPTY_PROPS,\n ForSymbol,\n Fragment,\n PortalSymbol,\n propagateError,\n reportError,\n runWithHooks,\n} from \"@pyreon/core\"\nimport { effectScope, renderEffect, runUntracked, setCurrentScope } from \"@pyreon/reactivity\"\nimport { registerComponent, unregisterComponent } from \"./devtools\"\nimport { mountFor, mountKeyedList, mountReactive } from \"./nodes\"\nimport { applyProps } from \"./props\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\ntype Cleanup = () => void\nconst noop: Cleanup = () => {\n /* noop */\n}\n\n// When > 0, we're mounting children inside an element — child cleanups can skip\n// DOM removal (parent element removal handles it). This avoids allocating a\n// removeChild closure for every nested element that has no reactive work.\nlet _elementDepth = 0\n\n// Stack tracking which component is currently being mounted (depth-first order).\n// Used to infer parent/child relationships for DevTools.\nconst _mountingStack: string[] = []\n\n/**\n * Mount a single child into `parent`, inserting before `anchor` (null = append).\n * Returns a cleanup that removes the node(s) and disposes all reactive effects.\n *\n * This function is the hot path — all child types are handled inline to avoid\n * function call overhead in tight render loops (1000+ calls per list render).\n */\nexport function mountChild(\n child: VNodeChild | VNodeChild[] | (() => VNodeChild | VNodeChild[]),\n parent: Node,\n anchor: Node | null = null,\n): Cleanup {\n // Reactive accessor — function that reads signals\n if (typeof child === \"function\") {\n const sample = runUntracked(() => (child as () => VNodeChild | VNodeChild[])())\n if (isKeyedArray(sample)) {\n const prevDepth = _elementDepth\n _elementDepth = 0\n const cleanup = mountKeyedList(child as () => VNode[], parent, anchor, (v, p, a) =>\n mountChild(v, p, a),\n )\n _elementDepth = prevDepth\n return cleanup\n }\n // Text fast path: reactive string/number/boolean — update text.data in-place\n if (typeof sample === \"string\" || typeof sample === \"number\" || typeof sample === \"boolean\") {\n const text = document.createTextNode(sample == null || sample === false ? \"\" : String(sample))\n parent.insertBefore(text, anchor)\n const dispose = renderEffect(() => {\n const v = (child as () => unknown)()\n text.data = v == null || v === false ? \"\" : String(v as string | number)\n })\n if (_elementDepth > 0) return dispose\n return () => {\n dispose()\n const p = text.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(text)\n }\n }\n const prevDepth = _elementDepth\n _elementDepth = 0\n const cleanup = mountReactive(child as () => VNodeChild, parent, anchor, mountChild)\n _elementDepth = prevDepth\n return cleanup\n }\n\n // Array of children (e.g. from .map())\n if (Array.isArray(child)) return mountChildren(child, parent, anchor)\n\n // Nothing to render\n if (child == null || child === false) return noop\n\n // Primitive — text node (static, no reactive effects to tear down).\n if (typeof child !== \"object\") {\n parent.insertBefore(document.createTextNode(String(child)), anchor)\n return noop\n }\n\n // NativeItem — pre-built DOM element from _tpl() or createTemplate().\n if ((child as unknown as NativeItem).__isNative) {\n const native = child as unknown as NativeItem\n parent.insertBefore(native.el, anchor)\n if (!native.cleanup) {\n if (_elementDepth > 0) return noop\n return () => {\n const p = native.el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(native.el)\n }\n }\n if (_elementDepth > 0) return native.cleanup\n return () => {\n native.cleanup?.()\n const p = native.el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(native.el)\n }\n }\n\n // VNode — element, component, fragment, For, Portal\n const vnode = child as VNode\n\n if (vnode.type === Fragment) return mountChildren(vnode.children, parent, anchor)\n\n if (vnode.type === (ForSymbol as unknown as string)) {\n const { each, by, children } = vnode.props as unknown as ForProps<unknown>\n const prevDepth = _elementDepth\n _elementDepth = 0\n const cleanup = mountFor(each, by, children, parent, anchor, mountChild)\n _elementDepth = prevDepth\n return cleanup\n }\n\n if (vnode.type === (PortalSymbol as unknown as string)) {\n const { target, children } = vnode.props as unknown as PortalProps\n if (__DEV__ && !target) return noop\n return mountChild(children, target, null)\n }\n\n if (typeof vnode.type === \"function\") {\n return mountComponent(vnode as VNode & { type: ComponentFn }, parent, anchor)\n }\n\n return mountElement(vnode, parent, anchor)\n}\n\n// ─── Element ─────────────────────────────────────────────────────────────────\n\nfunction mountElement(vnode: VNode, parent: Node, anchor: Node | null): Cleanup {\n const el = document.createElement(vnode.type as string)\n\n // Skip applyProps entirely when props is the shared empty sentinel (identity check — no allocation)\n const props = vnode.props\n const propCleanup: Cleanup | null = props !== EMPTY_PROPS ? applyProps(el, props) : null\n\n // Mount children inside element context — nested elements can skip DOM removal closures\n _elementDepth++\n const childCleanup = mountChildren(vnode.children, el, null)\n _elementDepth--\n\n parent.insertBefore(el, anchor)\n\n // Populate ref after the element is in the DOM\n const ref = props.ref as Ref<Element> | null | undefined\n if (ref && typeof ref === \"object\") ref.current = el\n\n if (!propCleanup && childCleanup === noop && !ref) {\n if (_elementDepth > 0) return noop\n return () => {\n const p = el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(el)\n }\n }\n\n if (_elementDepth > 0) {\n if (!ref && !propCleanup) return childCleanup\n if (!ref && propCleanup)\n return () => {\n propCleanup()\n childCleanup()\n }\n const refToClean = ref\n return () => {\n if (refToClean && typeof refToClean === \"object\") refToClean.current = null\n if (propCleanup) propCleanup()\n childCleanup()\n }\n }\n\n return () => {\n if (ref && typeof ref === \"object\") ref.current = null\n if (propCleanup) propCleanup()\n childCleanup()\n const p = el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(el)\n }\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nfunction mountComponent(\n vnode: VNode & { type: ComponentFn },\n parent: Node,\n anchor: Node | null,\n): Cleanup {\n const scope = effectScope()\n setCurrentScope(scope)\n\n let hooks: ReturnType<typeof runWithHooks>[\"hooks\"]\n let output: VNode | null\n\n const componentName = (vnode.type.name || \"Anonymous\") as string\n const compId = `${componentName}-${Math.random().toString(36).slice(2, 9)}`\n const parentId = _mountingStack[_mountingStack.length - 1] ?? null\n _mountingStack.push(compId)\n\n // Merge vnode.children into props.children if not already set\n const mergedProps =\n vnode.children.length > 0 && (vnode.props as Record<string, unknown>).children === undefined\n ? {\n ...vnode.props,\n children: vnode.children.length === 1 ? vnode.children[0] : vnode.children,\n }\n : vnode.props\n\n try {\n const result = runWithHooks(vnode.type, mergedProps)\n hooks = result.hooks\n output = result.vnode\n } catch (err) {\n _mountingStack.pop()\n setCurrentScope(null)\n scope.stop()\n reportError({\n component: componentName,\n phase: \"setup\",\n error: err,\n timestamp: Date.now(),\n props: vnode.props as Record<string, unknown>,\n })\n dispatchToErrorBoundary(err)\n return noop\n } finally {\n setCurrentScope(null)\n }\n\n if (__DEV__ && output != null && typeof output === \"object\" && !(\"type\" in output)) {\n console.warn(\n `[Pyreon] Component <${componentName}> returned an invalid value. Components must return a VNode, string, null, or function.`,\n )\n }\n\n for (const fn of hooks.update) {\n scope.addUpdateHook(fn)\n }\n\n let subtreeCleanup: Cleanup = noop\n try {\n subtreeCleanup = output != null ? mountChild(output, parent, anchor) : noop\n } catch (err) {\n _mountingStack.pop()\n scope.stop()\n const handled = propagateError(err, hooks) || dispatchToErrorBoundary(err)\n if (!handled)\n reportError({\n component: componentName,\n phase: \"render\",\n error: err,\n timestamp: Date.now(),\n props: vnode.props as Record<string, unknown>,\n })\n return noop\n }\n\n _mountingStack.pop()\n\n const firstEl = parent instanceof Element ? parent.firstElementChild : null\n registerComponent(compId, componentName, firstEl, parentId)\n\n // Fire onMount hooks inline — effects created inside are tracked by the scope\n const mountCleanups: Cleanup[] = []\n for (const fn of hooks.mount) {\n try {\n let cleanup: (() => void) | undefined\n scope.runInScope(() => {\n cleanup = fn()\n })\n if (cleanup) mountCleanups.push(cleanup)\n } catch (err) {\n console.error(`[Pyreon] Error in onMount hook of <${componentName}>:`, err)\n reportError({ component: componentName, phase: \"mount\", error: err, timestamp: Date.now() })\n }\n }\n\n return () => {\n unregisterComponent(compId)\n scope.stop()\n subtreeCleanup()\n for (const fn of hooks.unmount) {\n try {\n fn()\n } catch (err) {\n console.error(`[Pyreon] Error in onUnmount hook of <${componentName}>:`, err)\n reportError({\n component: componentName,\n phase: \"unmount\",\n error: err,\n timestamp: Date.now(),\n })\n }\n }\n for (const fn of mountCleanups) fn()\n }\n}\n\n// ─── Children ────────────────────────────────────────────────────────────────\n\nfunction mountChildren(children: VNodeChild[], parent: Node, anchor: Node | null): Cleanup {\n if (children.length === 0) return noop\n\n // 1-child fast path\n if (children.length === 1) {\n const c = children[0] as VNodeChild\n if (c !== undefined) {\n if (anchor === null && (typeof c === \"string\" || typeof c === \"number\")) {\n ;(parent as HTMLElement).textContent = String(c)\n return noop\n }\n return mountChild(c, parent, anchor)\n }\n }\n\n // 2-child fast path — avoids .map() allocation (covers <tr><td/><td/></tr>)\n if (children.length === 2) {\n const c0 = children[0] as VNodeChild\n const c1 = children[1] as VNodeChild\n if (c0 !== undefined && c1 !== undefined) {\n const d0 = mountChild(c0, parent, anchor)\n const d1 = mountChild(c1, parent, anchor)\n if (d0 === noop && d1 === noop) return noop\n if (d0 === noop) return d1\n if (d1 === noop) return d0\n return () => {\n d0()\n d1()\n }\n }\n }\n\n const cleanups = children.map((c) => mountChild(c, parent, anchor))\n return () => {\n for (const fn of cleanups) fn()\n }\n}\n\n// ─── Keyed array detection ────────────────────────────────────────────────────\n\n/** Returns true if value is a non-empty array of VNodes that all carry keys. */\nfunction isKeyedArray(value: unknown): value is VNode[] {\n if (!Array.isArray(value) || value.length === 0) return false\n return value.every(\n (v) =>\n v !== null &&\n typeof v === \"object\" &&\n !Array.isArray(v) &&\n (v as VNode).key !== null &&\n (v as VNode).key !== undefined,\n )\n}\n","/**\n * SSR Hydration — \"walk-and-claim\" strategy.\n *\n * The server renders plain HTML (no special markers needed). On the client,\n * hydrateRoot walks the VNode tree in parallel with the live DOM tree and:\n *\n * - Static elements → matched by tag position, props attached (events + reactive effects)\n * - Static text → existing text node reused\n * - Reactive text → existing text node found, reactive effect attached to .data\n * - Reactive blocks → comment marker inserted, mountReactive takes over\n * - Components → component fn called, output VNode matched against DOM subtree\n * - For lists → full remount (can't map keys to DOM without SSR markers)\n * - Fragment → transparent, children matched directly\n * - Portal → always remounts into target\n *\n * Falls back to mountChild() whenever DOM structure doesn't match the VNode.\n */\n\nimport type { ComponentFn, Ref, VNode, VNodeChild } from \"@pyreon/core\"\nimport {\n dispatchToErrorBoundary,\n ForSymbol,\n Fragment,\n PortalSymbol,\n reportError,\n runWithHooks,\n} from \"@pyreon/core\"\nimport { effectScope, renderEffect, runUntracked, setCurrentScope } from \"@pyreon/reactivity\"\nimport { setupDelegation } from \"./delegate\"\nimport { warnHydrationMismatch } from \"./hydration-debug\"\nimport { mountChild } from \"./mount\"\nimport { mountReactive } from \"./nodes\"\nimport { applyProps } from \"./props\"\n\ntype Cleanup = () => void\nconst noop: Cleanup = () => {\n /* noop */\n}\n\n// ─── DOM cursor helpers ───────────────────────────────────────────────────────\n\n/** Skip comment and whitespace-only text nodes, return first \"real\" node */\nfunction firstReal(initialNode: ChildNode | null): ChildNode | null {\n let node = initialNode\n while (node) {\n if (node.nodeType === Node.COMMENT_NODE) {\n node = node.nextSibling\n continue\n }\n if (node.nodeType === Node.TEXT_NODE && isWhitespaceOnly((node as Text).data)) {\n node = node.nextSibling\n continue\n }\n return node\n }\n return null\n}\n\n/** Check if a string is whitespace-only without allocating a trimmed copy. */\nfunction isWhitespaceOnly(s: string): boolean {\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i)\n // space, tab, newline, carriage return, form feed\n if (c !== 32 && c !== 9 && c !== 10 && c !== 13 && c !== 12) return false\n }\n return true\n}\n\n/** Advance past a node, skipping whitespace-only text and comments */\nfunction nextReal(node: ChildNode): ChildNode | null {\n return firstReal(node.nextSibling)\n}\n\n// ─── Core recursive walker ────────────────────────────────────────────────────\n\n/**\n * Hydrate a single VNodeChild against the DOM subtree starting at `domNode`.\n * Returns [cleanup, nextDomSibling].\n */\n/** Insert a comment marker before domNode (or append if domNode is null). */\nfunction insertMarker(parent: Node, domNode: ChildNode | null, text: string): Comment {\n const marker = document.createComment(text)\n if (domNode) {\n parent.insertBefore(marker, domNode)\n } else {\n parent.appendChild(marker)\n }\n return marker\n}\n\n/** Hydrate a reactive accessor (function child). */\nfunction hydrateReactiveChild(\n child: () => VNodeChild,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path: string,\n): [Cleanup, ChildNode | null] {\n const initial = runUntracked(child)\n\n if (initial == null || initial === false) {\n const marker = insertMarker(parent, domNode, \"pyreon\")\n const cleanup = mountReactive(child, parent, marker, mountChild)\n return [cleanup, domNode]\n }\n\n if (typeof initial === \"string\" || typeof initial === \"number\" || typeof initial === \"boolean\") {\n return hydrateReactiveText(\n child as () => string | number | boolean | null | undefined,\n domNode,\n parent,\n anchor,\n path,\n )\n }\n\n const marker = insertMarker(parent, domNode, \"pyreon\")\n const cleanup = mountReactive(child, parent, marker, mountChild)\n const next = domNode ? nextReal(domNode) : null\n return [cleanup, next]\n}\n\n/** Hydrate a reactive text binding against an existing text node. */\nfunction hydrateReactiveText(\n child: () => string | number | boolean | null | undefined,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path: string,\n): [Cleanup, ChildNode | null] {\n if (domNode?.nodeType === Node.TEXT_NODE) {\n const textNode = domNode as Text\n const dispose = renderEffect(() => {\n const v = child()\n textNode.data = v == null ? \"\" : String(v)\n })\n return [dispose, nextReal(domNode)]\n }\n warnHydrationMismatch(\"text\", \"TextNode\", domNode?.nodeType ?? \"null\", `${path} > reactive`)\n const cleanup = mountChild(child, parent, anchor)\n return [cleanup, domNode]\n}\n\n/** Hydrate a VNode (fragment, For, Portal, component, element). */\nfunction hydrateVNode(\n vnode: VNode,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path: string,\n): [Cleanup, ChildNode | null] {\n if (vnode.type === Fragment) {\n return hydrateChildren(vnode.children, domNode, parent, anchor, path)\n }\n\n if (vnode.type === ForSymbol) {\n const marker = insertMarker(parent, domNode, \"pyreon-for\")\n const cleanup = mountChild(vnode, parent, marker)\n return [cleanup, null]\n }\n\n if (vnode.type === PortalSymbol) {\n const cleanup = mountChild(vnode, parent, anchor)\n return [cleanup, domNode]\n }\n\n if (typeof vnode.type === \"function\") {\n return hydrateComponent(vnode, domNode, parent, anchor, path)\n }\n\n if (typeof vnode.type === \"string\") {\n return hydrateElement(vnode, domNode, parent, anchor, path)\n }\n\n return [noop, domNode]\n}\n\nfunction hydrateChild(\n child: VNodeChild | VNodeChild[],\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n if (Array.isArray(child)) {\n const cleanups: Cleanup[] = []\n let cursor = domNode\n for (const c of child) {\n const [cleanup, next] = hydrateChild(c, cursor, parent, anchor, path)\n cleanups.push(cleanup)\n cursor = next\n }\n return [\n () => {\n for (const c of cleanups) c()\n },\n cursor,\n ]\n }\n\n if (child == null || child === false) return [noop, domNode]\n\n if (typeof child === \"function\") {\n return hydrateReactiveChild(child as () => VNodeChild, domNode, parent, anchor, path)\n }\n\n if (typeof child === \"string\" || typeof child === \"number\") {\n if (domNode?.nodeType === Node.TEXT_NODE) {\n return [() => (domNode as Text).remove(), nextReal(domNode)]\n }\n warnHydrationMismatch(\"text\", \"TextNode\", domNode?.nodeType ?? \"null\", `${path} > text`)\n const cleanup = mountChild(child, parent, anchor)\n return [cleanup, domNode]\n }\n\n return hydrateVNode(child as VNode, domNode, parent, anchor, path)\n}\n\n// ─── Element hydration ────────────────────────────────────────────────────────\n\nfunction hydrateElement(\n vnode: VNode,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n const elPath = `${path} > ${vnode.type as string}`\n\n // Check if existing DOM node matches\n if (\n domNode?.nodeType === Node.ELEMENT_NODE &&\n (domNode as Element).tagName.toLowerCase() === vnode.type\n ) {\n const el = domNode as Element\n const cleanups: Cleanup[] = []\n\n // Attach props (events + reactive effects) — don't set static attrs (SSR already did)\n const propCleanup = applyProps(el, vnode.props)\n if (propCleanup) cleanups.push(propCleanup)\n\n // Hydrate children\n const firstChild = firstReal(el.firstChild as ChildNode | null)\n const [childCleanup] = hydrateChildren(vnode.children, firstChild, el, null, elPath)\n cleanups.push(childCleanup)\n\n // Set ref\n const ref = vnode.props.ref as Ref<Element> | undefined\n if (ref && typeof ref === \"object\") ref.current = el\n\n const cleanup = () => {\n if (ref && typeof ref === \"object\") ref.current = null\n for (const c of cleanups) c()\n el.remove()\n }\n\n return [cleanup, nextReal(domNode)]\n }\n\n // Mismatch — fall back to fresh mount\n const actual =\n domNode?.nodeType === Node.ELEMENT_NODE\n ? (domNode as Element).tagName.toLowerCase()\n : (domNode?.nodeType ?? \"null\")\n warnHydrationMismatch(\"tag\", vnode.type, actual, elPath)\n const cleanup = mountChild(vnode, parent, anchor)\n return [cleanup, domNode]\n}\n\n// ─── Children hydration ───────────────────────────────────────────────────────\n\nfunction hydrateChildren(\n children: VNodeChild[],\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n if (children.length === 0) return [noop, domNode]\n\n // Single-child fast path — avoids cleanups array allocation\n if (children.length === 1) {\n return hydrateChild(children[0] as VNodeChild, domNode, parent, anchor, path)\n }\n\n const cleanups: Cleanup[] = []\n let cursor = domNode\n for (const child of children) {\n const [cleanup, next] = hydrateChild(child, cursor, parent, anchor, path)\n cleanups.push(cleanup)\n cursor = next\n }\n return [\n () => {\n for (const c of cleanups) c()\n },\n cursor,\n ]\n}\n\n// ─── Component hydration ──────────────────────────────────────────────────────\n\nfunction hydrateComponent(\n vnode: VNode,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n const scope = effectScope()\n setCurrentScope(scope)\n\n let subtreeCleanup: Cleanup = noop\n const mountCleanups: Cleanup[] = []\n let nextDom: ChildNode | null = domNode\n\n // Function.name is always a string per spec; || handles empty string, avoids uncoverable ?? branch\n const componentName = ((vnode.type as ComponentFn).name || \"Anonymous\") as string\n const mergedProps =\n vnode.children.length > 0 && (vnode.props as Record<string, unknown>).children === undefined\n ? {\n ...vnode.props,\n children: vnode.children.length === 1 ? vnode.children[0] : vnode.children,\n }\n : vnode.props\n\n let result: ReturnType<typeof runWithHooks>\n try {\n result = runWithHooks(vnode.type as ComponentFn, mergedProps)\n } catch (err) {\n setCurrentScope(null)\n scope.stop()\n\n console.error(`[Pyreon] Error hydrating component <${componentName}>:`, err)\n reportError({\n component: componentName,\n phase: \"setup\",\n error: err,\n timestamp: Date.now(),\n props: vnode.props as Record<string, unknown>,\n })\n dispatchToErrorBoundary(err)\n return [noop, domNode]\n }\n setCurrentScope(null)\n\n const { vnode: output, hooks } = result\n\n // Register onUpdate hooks with the scope\n for (const fn of hooks.update) {\n scope.addUpdateHook(fn)\n }\n\n if (output != null) {\n const [childCleanup, next] = hydrateChild(output, domNode, parent, anchor, path)\n subtreeCleanup = childCleanup\n nextDom = next\n }\n\n // Fire onMount hooks; effects created inside are tracked by the scope via runInScope\n for (const fn of hooks.mount) {\n try {\n let c: (() => void) | undefined\n scope.runInScope(() => {\n c = fn()\n })\n if (c) mountCleanups.push(c)\n } catch (err) {\n reportError({ component: componentName, phase: \"mount\", error: err, timestamp: Date.now() })\n }\n }\n\n const cleanup: Cleanup = () => {\n scope.stop()\n subtreeCleanup()\n for (const fn of hooks.unmount) fn()\n for (const fn of mountCleanups) fn()\n }\n\n return [cleanup, nextDom]\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Hydrate a server-rendered container with a Pyreon VNode tree.\n *\n * Reuses existing DOM elements for static structure, attaches event listeners\n * and reactive effects without re-rendering. Falls back to fresh mount for\n * dynamic content (reactive conditionals, For lists).\n *\n * @example\n * // Server:\n * const html = await renderToString(h(App, null))\n *\n * // Client:\n * const unmount = hydrateRoot(document.getElementById(\"app\")!, h(App, null))\n */\nexport function hydrateRoot(container: Element, vnode: VNodeChild): () => void {\n setupDelegation(container)\n const firstChild = firstReal(container.firstChild as ChildNode | null)\n const [cleanup] = hydrateChild(vnode, firstChild, container, null)\n return cleanup\n}\n","import type { Props, VNodeChild } from \"@pyreon/core\"\nimport { createRef, h, onMount } from \"@pyreon/core\"\nimport { effect } from \"@pyreon/reactivity\"\nimport { mountChild } from \"./mount\"\n\nexport interface KeepAliveProps extends Props {\n /**\n * Accessor that returns true when this slot's children should be visible.\n * When false, children are CSS-hidden but remain mounted — effects and\n * signals stay alive.\n * Defaults to true (always visible / always mounted).\n */\n active?: () => boolean\n children?: VNodeChild\n}\n\n/**\n * KeepAlive — mounts its children once and keeps them alive even when hidden.\n *\n * Unlike conditional rendering (which destroys and recreates component state),\n * KeepAlive CSS-hides the children while preserving all reactive state,\n * scroll position, form values, and in-flight async operations.\n *\n * Children are mounted imperatively on first activation and are never unmounted\n * while the KeepAlive itself is mounted.\n *\n * Multi-slot pattern (one KeepAlive per route):\n * @example\n * h(Fragment, null, [\n * h(KeepAlive, { active: () => route() === \"/a\" }, h(RouteA, null)),\n * h(KeepAlive, { active: () => route() === \"/b\" }, h(RouteB, null)),\n * ])\n *\n * With JSX:\n * @example\n * <>\n * <KeepAlive active={() => route() === \"/a\"}><RouteA /></KeepAlive>\n * <KeepAlive active={() => route() === \"/b\"}><RouteB /></KeepAlive>\n * </>\n */\nexport function KeepAlive(props: KeepAliveProps): VNodeChild {\n const containerRef = createRef<HTMLElement>()\n let childCleanup: (() => void) | null = null\n let childMounted = false\n\n onMount(() => {\n const container = containerRef.current as HTMLElement\n\n const e = effect(() => {\n const isActive = props.active?.() ?? true\n\n if (!childMounted) {\n // Mount children into the container div exactly once\n childCleanup = mountChild(props.children ?? null, container, null)\n childMounted = true\n }\n\n // Show/hide without unmounting — state is fully preserved\n container.style.display = isActive ? \"\" : \"none\"\n })\n\n return () => {\n e.dispose()\n childCleanup?.()\n }\n })\n\n // `display: contents` makes the wrapper transparent to layout\n // (children appear as if directly in the parent flow)\n return h(\"div\", { ref: containerRef, style: \"display: contents\" })\n}\n","import type { NativeItem } from \"@pyreon/core\"\n\n/**\n * Creates a row/item factory backed by HTML template cloning.\n *\n * - The HTML string is parsed exactly once via <template>.innerHTML.\n * - Each call to the returned factory clones the root element via\n * cloneNode(true) — ~5-10x faster than createElement + setAttribute.\n * - `bind` receives the cloned element and the item; it should wire up\n * reactive effects and return a cleanup function.\n * - Returns a NativeItem directly (no VNode wrapper) — saves 2 allocations\n * per row vs the old VNode + props-object + children-array approach.\n *\n * @example\n * const rowTemplate = createTemplate<Row>(\n * \"<tr><td></td><td></td></tr>\",\n * (el, row) => {\n * const td1 = el.firstChild as HTMLElement\n * const td2 = td1.nextSibling as HTMLElement\n * td1.textContent = String(row.id)\n * const text = td2.firstChild as Text\n * text.data = row.label()\n * const unsub = row.label.subscribe(() => { text.data = row.label() })\n * return unsub\n * }\n * )\n */\nexport function createTemplate<T>(\n html: string,\n bind: (el: HTMLElement, item: T) => (() => void) | null,\n): (item: T) => NativeItem {\n const tmpl = document.createElement(\"template\")\n tmpl.innerHTML = html\n const proto = tmpl.content.firstElementChild as HTMLElement\n\n return (item: T): NativeItem => {\n const el = proto.cloneNode(true) as HTMLElement\n const cleanup = bind(el, item)\n return { __isNative: true, el, cleanup }\n }\n}\n\n// ─── Direct text binding (bypasses effect system) ────────────────────────────\n\n/**\n * Compiler-emitted direct text binding for single-signal text nodes.\n *\n * When the compiler detects `{signal()}` as the only reactive expression\n * in a text binding, it emits `_bindText(signal, textNode)` instead of\n * `_bind(() => { textNode.data = signal() })`.\n *\n * This bypasses the effect system entirely:\n * - No deps array allocation\n * - No withTracking / setDepsCollector overhead\n * - No `run` closure\n * - Signal.subscribe is used directly (O(1) subscribe + unsubscribe)\n *\n * @param source - A signal (anything with `._v` and `.direct`)\n * @param node - The Text node to update\n */\nexport function _bindText(\n source: { _v: unknown; direct: (fn: () => void) => () => void },\n node: Text,\n): () => void {\n const update = () => {\n const v = source._v\n node.data = v == null || v === false ? \"\" : String(v as string | number)\n }\n update()\n return source.direct(update)\n}\n\n// ─── Direct signal binding (bypasses effect system) ──────────────────────────\n\n/**\n * Compiler-emitted direct binding for single-signal reactive expressions.\n *\n * Like _bindText but for arbitrary DOM updates (attributes, className, style).\n * When the compiler detects that a reactive expression depends on exactly one\n * signal call, it emits `_bindDirect(signal, updater)` instead of\n * `_bind(() => { updater() })`.\n *\n * Uses signal.direct() for zero-overhead registration:\n * - Flat array instead of Set (no hashing)\n * - Index-based disposal (no Set.delete)\n * - No deps array, no withTracking, no run closure\n *\n * @param source - A signal (anything with `._v` and `.direct`)\n * @param updater - Function that reads `source._v` and applies the DOM update\n */\nexport function _bindDirect(\n source: { _v: unknown; direct: (fn: () => void) => () => void },\n updater: (value: unknown) => void,\n): () => void {\n updater(source._v)\n return source.direct(() => updater(source._v))\n}\n\n// ─── Compiler-facing template API ─────────────────────────────────────────────\n\n// Cache parsed <template> elements by HTML string — parse once, clone many.\nconst _tplCache = new Map<string, HTMLTemplateElement>()\n\n/**\n * Compiler-emitted template instantiation.\n *\n * Parses `html` into a <template> element once (cached), then cloneNode(true)\n * for each call. The `bind` function wires up dynamic attributes, text content,\n * and event listeners on the cloned element tree. Returns a NativeItem that\n * mountChild can insert directly — no VNode allocation.\n *\n * This is the runtime half of the compiler's template optimisation. The compiler\n * detects static JSX element trees and emits `_tpl(html, bindFn)` instead of\n * nested `h()` calls. Benefits:\n * - cloneNode(true) is ~5-10x faster than sequential createElement + setAttribute\n * - Zero VNode / props-object / children-array allocations per instance\n * - Static attributes are baked into the HTML string (no runtime prop application)\n *\n * @example\n * // Compiler output for: <div class=\"box\"><span>{text()}</span></div>\n * _tpl('<div class=\"box\"><span></span></div>', (__root) => {\n * const __e0 = __root.children[0];\n * const __d0 = _re(() => { __e0.textContent = text(); });\n * return () => { __d0(); };\n * })\n */\nexport function _tpl(html: string, bind: (el: HTMLElement) => (() => void) | null): NativeItem {\n let tpl = _tplCache.get(html)\n if (!tpl) {\n tpl = document.createElement(\"template\")\n tpl.innerHTML = html\n _tplCache.set(html, tpl)\n }\n const el = tpl.content.firstElementChild?.cloneNode(true) as HTMLElement\n const cleanup = bind(el)\n return { __isNative: true, el, cleanup }\n}\n","import type { Props, VNode, VNodeChild } from \"@pyreon/core\"\nimport { createRef, Fragment, h, onUnmount } from \"@pyreon/core\"\nimport { effect, runUntracked, signal } from \"@pyreon/reactivity\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\nexport interface TransitionProps {\n /**\n * CSS class name prefix.\n * \"fade\" → fade-enter-from, fade-enter-active, fade-enter-to, fade-leave-from, …\n * Default: \"pyreon\"\n */\n name?: string\n /** Reactive boolean controlling whether the child is shown. */\n show: () => boolean\n /**\n * If true, runs the enter transition on the initial mount (instead of\n * appearing immediately). Default: false.\n */\n appear?: boolean\n // Individual class name overrides (override the prefix-based defaults)\n enterFrom?: string\n enterActive?: string\n enterTo?: string\n leaveFrom?: string\n leaveActive?: string\n leaveTo?: string\n // Lifecycle callbacks\n onBeforeEnter?: (el: HTMLElement) => void\n onAfterEnter?: (el: HTMLElement) => void\n onBeforeLeave?: (el: HTMLElement) => void\n onAfterLeave?: (el: HTMLElement) => void\n /**\n * The single child element to animate.\n * Must be a direct DOM element VNode (not a component) for class injection to work.\n */\n children?: VNodeChild\n}\n\n/**\n * Transition — adds CSS enter/leave animation classes to a single child element,\n * controlled by the reactive `show` prop.\n *\n * Class lifecycle:\n * Enter: {name}-enter-from → (next frame) → {name}-enter-active + {name}-enter-to → cleanup\n * Leave: {name}-leave-from → (next frame) → {name}-leave-active + {name}-leave-to → unmount\n *\n * The child element stays in the DOM during the leave animation and is removed only\n * after the CSS transition / animation completes.\n *\n * @example\n * const visible = signal(false)\n *\n * h(Transition, { name: \"fade\", show: () => visible() },\n * h(\"div\", { class: \"modal\" }, \"content\")\n * )\n *\n * // CSS:\n * // .fade-enter-from, .fade-leave-to { opacity: 0; }\n * // .fade-enter-active, .fade-leave-active { transition: opacity 300ms ease; }\n */\nexport function Transition(props: TransitionProps): VNodeChild {\n const n = props.name ?? \"pyreon\"\n const cls = {\n ef: props.enterFrom ?? `${n}-enter-from`,\n ea: props.enterActive ?? `${n}-enter-active`,\n et: props.enterTo ?? `${n}-enter-to`,\n lf: props.leaveFrom ?? `${n}-leave-from`,\n la: props.leaveActive ?? `${n}-leave-active`,\n lt: props.leaveTo ?? `${n}-leave-to`,\n }\n\n // Ref injected into the child element so we can apply/remove classes\n const ref = createRef<HTMLElement>()\n const isMounted = signal(runUntracked<boolean>(props.show))\n\n // Cancel an in-progress leave when re-entering before the animation ends\n let pendingLeaveCancel: (() => void) | null = null\n let initialized = false\n\n const applyEnter = (el: HTMLElement) => {\n pendingLeaveCancel?.()\n pendingLeaveCancel = null\n props.onBeforeEnter?.(el)\n el.classList.remove(cls.lf, cls.la, cls.lt)\n el.classList.add(cls.ef, cls.ea)\n requestAnimationFrame(() => {\n el.classList.remove(cls.ef)\n el.classList.add(cls.et)\n const done = () => {\n // Remove both listeners — only one fires, so clean up the other\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.ea, cls.et)\n props.onAfterEnter?.(el)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const applyLeave = (el: HTMLElement) => {\n props.onBeforeLeave?.(el)\n el.classList.remove(cls.ef, cls.ea, cls.et)\n el.classList.add(cls.lf, cls.la)\n requestAnimationFrame(() => {\n el.classList.remove(cls.lf)\n el.classList.add(cls.lt)\n const done = () => {\n // Remove both listeners — only one fires, so clean up the other\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.la, cls.lt)\n pendingLeaveCancel = null\n isMounted.set(false)\n props.onAfterLeave?.(el)\n }\n pendingLeaveCancel = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.lf, cls.la, cls.lt)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const handleVisibilityChange = (visible: boolean) => {\n if (visible) {\n if (!isMounted.peek()) isMounted.set(true)\n queueMicrotask(() => applyEnter(ref.current as HTMLElement))\n return\n }\n if (!isMounted.peek()) return\n const el = ref.current\n if (!el) {\n isMounted.set(false)\n return\n }\n applyLeave(el)\n }\n\n effect(() => {\n const visible = props.show()\n if (!initialized) {\n initialized = true\n if (visible && props.appear) {\n queueMicrotask(() => applyEnter(ref.current as HTMLElement))\n }\n return\n }\n handleVisibilityChange(visible)\n })\n\n onUnmount(() => {\n pendingLeaveCancel?.()\n pendingLeaveCancel = null\n })\n\n // Return a reactive getter. Each call clones the child VNode with our injected ref\n // so we can read / write classes on the underlying DOM element.\n const rawChild = props.children\n // Return an empty Fragment (not null) when unmounted so mountChild uses\n // mountReactive instead of the null/primitive text-node fast-path, which\n // cannot later be swapped for a VNode when the element enters.\n const emptyFragment = h(Fragment, null)\n return (() => {\n if (!isMounted()) return emptyFragment\n if (!rawChild || typeof rawChild !== \"object\" || Array.isArray(rawChild)) {\n return rawChild ?? null\n }\n const vnode = rawChild as VNode\n // Only inject ref into DOM element children — component children need ref forwarding\n if (typeof vnode.type !== \"string\") {\n if (__DEV__) {\n console.warn(\n \"[Pyreon] Transition child is a component. Wrap it in a DOM element for enter/leave animations to work.\",\n )\n }\n return vnode\n }\n return { ...vnode, props: { ...vnode.props, ref } as Props }\n }) as unknown as VNode\n}\n","import type { Props, VNode, VNodeChild } from \"@pyreon/core\"\nimport { createRef, h, onMount, onUnmount } from \"@pyreon/core\"\nimport { effect, runUntracked, signal } from \"@pyreon/reactivity\"\nimport { mountChild } from \"./mount\"\n\nexport interface TransitionGroupProps<T = unknown> {\n /** Wrapper element tag. Default: \"div\" */\n tag?: string\n /** CSS class prefix. Default: \"pyreon\" */\n name?: string\n /** Animate items on initial mount. Default: false */\n appear?: boolean\n // CSS class overrides\n enterFrom?: string\n enterActive?: string\n enterTo?: string\n leaveFrom?: string\n leaveActive?: string\n leaveTo?: string\n /** Class applied during FLIP move animation. Default: \"{name}-move\" */\n moveClass?: string\n /** Reactive list source */\n items: () => T[]\n /** Stable key extractor */\n keyFn: (item: T, index: number) => string | number\n /**\n * Render a single DOM-element VNode for each item.\n * Must return a VNode whose `type` is a string (e.g. \"div\", \"li\") so\n * the component can inject a ref and read the underlying DOM node.\n */\n render: (item: T, index: number) => VNode\n // Lifecycle callbacks\n onBeforeEnter?: (el: HTMLElement) => void\n onAfterEnter?: (el: HTMLElement) => void\n onBeforeLeave?: (el: HTMLElement) => void\n onAfterLeave?: (el: HTMLElement) => void\n}\n\ntype ItemEntry = {\n key: string | number\n ref: ReturnType<typeof createRef<HTMLElement>>\n cleanup: () => void\n leaving: boolean\n}\n\n/**\n * TransitionGroup — animates a keyed reactive list with CSS enter/leave and\n * FLIP move animations.\n *\n * Class lifecycle:\n * Enter: {name}-enter-from → {name}-enter-active + {name}-enter-to → cleanup\n * Leave: {name}-leave-from → {name}-leave-active + {name}-leave-to → item removed\n * Move: {name}-move (applied when an item shifts position)\n *\n * @example\n * const items = signal([{ id: 1 }, { id: 2 }])\n *\n * h(TransitionGroup, {\n * tag: \"ul\",\n * name: \"list\",\n * items,\n * keyFn: (item) => item.id,\n * render: (item) => h(\"li\", { class: \"item\" }, item.id),\n * })\n *\n * // CSS:\n * // .list-enter-from, .list-leave-to { opacity: 0; transform: translateY(-10px); }\n * // .list-enter-active, .list-leave-active { transition: all 300ms ease; }\n * // .list-move { transition: transform 300ms ease; }\n */\nexport function TransitionGroup<T = unknown>(props: TransitionGroupProps<T>): VNodeChild {\n const tag = props.tag ?? \"div\"\n const n = props.name ?? \"pyreon\"\n const cls = {\n ef: props.enterFrom ?? `${n}-enter-from`,\n ea: props.enterActive ?? `${n}-enter-active`,\n et: props.enterTo ?? `${n}-enter-to`,\n lf: props.leaveFrom ?? `${n}-leave-from`,\n la: props.leaveActive ?? `${n}-leave-active`,\n lt: props.leaveTo ?? `${n}-leave-to`,\n mv: props.moveClass ?? `${n}-move`,\n }\n\n const containerRef = createRef<HTMLElement>()\n const entries = new Map<string | number, ItemEntry>()\n // Gates the effect until the container element is in the DOM\n const ready = signal(false)\n let firstRun = true\n\n const applyEnter = (el: HTMLElement) => {\n props.onBeforeEnter?.(el)\n el.classList.remove(cls.lf, cls.la, cls.lt)\n el.classList.add(cls.ef, cls.ea)\n requestAnimationFrame(() => {\n el.classList.remove(cls.ef)\n el.classList.add(cls.et)\n const done = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.ea, cls.et)\n props.onAfterEnter?.(el)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const applyLeave = (el: HTMLElement, onDone: () => void) => {\n props.onBeforeLeave?.(el)\n el.classList.remove(cls.ef, cls.ea, cls.et)\n el.classList.add(cls.lf, cls.la)\n requestAnimationFrame(() => {\n el.classList.remove(cls.lf)\n el.classList.add(cls.lt)\n const done = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.la, cls.lt)\n props.onAfterLeave?.(el)\n onDone()\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n /** Start leave animation for removed items. */\n const processLeaves = (newKeys: Set<string | number>) => {\n for (const [key, entry] of entries) {\n if (newKeys.has(key) || entry.leaving) continue\n entry.leaving = true\n const el = entry.ref.current\n if (el) {\n applyLeave(el, () => {\n entry.cleanup()\n entries.delete(key)\n })\n } else {\n entry.cleanup()\n entries.delete(key)\n }\n }\n }\n\n /** Mount new items and return the list of newly created entries. */\n const mountNewItems = (items: T[], container: HTMLElement): ItemEntry[] => {\n const newEntries: ItemEntry[] = []\n for (let i = 0; i < items.length; i++) {\n const item = items[i] as T\n const key = props.keyFn(item, i)\n if (entries.has(key)) continue\n const itemRef = createRef<HTMLElement>()\n const rawVNode = runUntracked(() => props.render(item, i))\n const vnode: VNode =\n typeof rawVNode.type === \"string\"\n ? { ...rawVNode, props: { ...rawVNode.props, ref: itemRef } as Props }\n : rawVNode\n const cleanup = mountChild(vnode, container, null)\n const entry: ItemEntry = { key, ref: itemRef, cleanup, leaving: false }\n entries.set(key, entry)\n newEntries.push(entry)\n }\n return newEntries\n }\n\n const startMoveAnimation = (el: HTMLElement) => {\n requestAnimationFrame(() => {\n el.classList.add(cls.mv)\n el.style.transform = \"\"\n el.style.transition = \"\"\n const done = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.mv)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const flipEntry = (entry: ItemEntry, oldPos: DOMRect) => {\n if (!entry.ref.current) return\n const newPos = entry.ref.current.getBoundingClientRect()\n const dx = oldPos.left - newPos.left\n const dy = oldPos.top - newPos.top\n if (Math.abs(dx) < 1 && Math.abs(dy) < 1) return\n const el = entry.ref.current\n el.style.transform = `translate(${dx}px, ${dy}px)`\n el.style.transition = \"none\"\n startMoveAnimation(el)\n }\n\n /** Apply FLIP move animations for items that shifted position. */\n const applyFlipMoves = (oldPositions: Map<string | number, DOMRect>) => {\n requestAnimationFrame(() => {\n for (const [key, entry] of entries) {\n if (entry.leaving) continue\n const oldPos = oldPositions.get(key)\n if (!oldPos) continue\n flipEntry(entry, oldPos)\n }\n })\n }\n\n const recordOldPositions = (): Map<string | number, DOMRect> => {\n const oldPositions = new Map<string | number, DOMRect>()\n for (const [key, entry] of entries) {\n if (!entry.leaving && entry.ref.current) {\n oldPositions.set(key, entry.ref.current.getBoundingClientRect())\n }\n }\n return oldPositions\n }\n\n const reorderEntries = (items: T[], container: HTMLElement) => {\n for (let i = 0; i < items.length; i++) {\n const key = props.keyFn(items[i] as T, i)\n const entry = entries.get(key)\n if (!entry || entry.leaving || !entry.ref.current) continue\n container.appendChild(entry.ref.current)\n }\n }\n\n const animateNewEntries = (newEntries: ItemEntry[]) => {\n for (const entry of newEntries) {\n queueMicrotask(() => {\n if (entry.ref.current) applyEnter(entry.ref.current)\n })\n }\n }\n\n const e = effect(() => {\n if (!ready()) return\n const container = containerRef.current\n if (!container) return\n\n const items = props.items()\n const newKeys = new Set(items.map((item, i) => props.keyFn(item, i)))\n const isFirst = firstRun\n firstRun = false\n\n const oldPositions = recordOldPositions()\n processLeaves(newKeys)\n const newEntries = mountNewItems(items, container)\n reorderEntries(items, container)\n\n if (!isFirst || props.appear) animateNewEntries(newEntries)\n if (!isFirst && oldPositions.size > 0) applyFlipMoves(oldPositions)\n })\n\n // Fire the effect once the container is in the DOM\n onMount(() => {\n ready.set(true)\n return undefined\n })\n\n onUnmount(() => {\n e.dispose()\n for (const entry of entries.values()) entry.cleanup()\n entries.clear()\n })\n\n return h(tag, { ref: containerRef })\n}\n","// @pyreon/runtime-dom — surgical signal-to-DOM renderer (no virtual DOM)\n\nexport { DELEGATED_EVENTS, delegatedPropName, setupDelegation } from \"./delegate\"\nexport type { DevtoolsComponentEntry, PyreonDevtools } from \"./devtools\"\nexport { hydrateRoot } from \"./hydrate\"\nexport { disableHydrationWarnings, enableHydrationWarnings } from \"./hydration-debug\"\nexport type { KeepAliveProps } from \"./keep-alive\"\nexport { KeepAlive } from \"./keep-alive\"\nexport { mountChild } from \"./mount\"\nexport type { Directive, SanitizeFn } from \"./props\"\nexport { applyProp, applyProps, sanitizeHtml, setSanitizer } from \"./props\"\nexport { _bindDirect, _bindText, _tpl, createTemplate } from \"./template\"\nexport type { TransitionProps } from \"./transition\"\nexport { Transition } from \"./transition\"\nexport type { TransitionGroupProps } from \"./transition-group\"\nexport { TransitionGroup } from \"./transition-group\"\n\nimport type { VNodeChild } from \"@pyreon/core\"\nimport { setupDelegation } from \"./delegate\"\nimport { installDevTools } from \"./devtools\"\nimport { mountChild } from \"./mount\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\n/**\n * Mount a VNode tree into a container element.\n * Clears the container first, then mounts the given child.\n * Returns an `unmount` function that removes everything and disposes effects.\n *\n * @example\n * const unmount = mount(h(\"div\", null, \"Hello Pyreon\"), document.getElementById(\"app\")!)\n */\nexport function mount(root: VNodeChild, container: Element): () => void {\n if (__DEV__ && container == null) {\n throw new Error(\n '[pyreon] mount() called with a null/undefined container. Make sure the element exists in the DOM, e.g. document.getElementById(\"app\")',\n )\n }\n installDevTools()\n setupDelegation(container)\n container.innerHTML = \"\"\n return mountChild(root, container, null)\n}\n\n/** Alias for `mount` */\nexport const render = mount\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["__DEV__","__DEV__","__DEV__","noop","__DEV__"],"sources":["../src/delegate.ts","../src/hydration-debug.ts","../src/devtools.ts","../src/nodes.ts","../src/props.ts","../src/mount.ts","../src/hydrate.ts","../src/keep-alive.ts","../src/template.ts","../src/transition.ts","../src/transition-group.ts","../src/index.ts"],"sourcesContent":["/**\n * Event delegation — single listener per event type on the mount container.\n *\n * Instead of calling addEventListener on every element, the compiler emits\n * `el.__click = handler` (expando property). A single delegated listener on the\n * container walks event.target up the DOM tree, checking for expandos.\n *\n * Benefits:\n * - Saves ~2000 addEventListener calls for 1000 rows with 2 handlers each\n * - Reduces memory per row (no per-element listener closure)\n * - Faster initial mount (~0.4-0.8ms savings on 1000-row benchmarks)\n */\n\nimport { batch } from \"@pyreon/reactivity\"\n\n/**\n * Events that are delegated (common bubbling events).\n * Non-bubbling events (focus, blur, mouseenter, mouseleave, load, error, scroll)\n * are NOT delegated — they must use addEventListener.\n */\nexport const DELEGATED_EVENTS = new Set([\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"change\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"pointerdown\",\n \"pointerup\",\n \"pointermove\",\n \"pointerover\",\n \"pointerout\",\n \"touchstart\",\n \"touchend\",\n \"touchmove\",\n \"submit\",\n])\n\n/**\n * Property name used on DOM elements to store delegated event handlers.\n * Format: `__ev_{eventName}` e.g. `__ev_click`, `__ev_input`\n */\nexport function delegatedPropName(eventName: string): string {\n return `__ev_${eventName}`\n}\n\n// Track which containers already have delegation installed\nconst _delegated = new WeakSet<Element>()\n\n/**\n * Install delegation listeners on a container element.\n * Called once from mount(). Idempotent — safe to call multiple times.\n */\nexport function setupDelegation(container: Element): void {\n if (_delegated.has(container)) return\n _delegated.add(container)\n\n for (const eventName of DELEGATED_EVENTS) {\n const prop = delegatedPropName(eventName)\n container.addEventListener(eventName, (e: Event) => {\n let el = e.target as (HTMLElement & Record<string, unknown>) | null\n while (el && el !== container) {\n const handler = el[prop] as EventListener | undefined\n if (handler) {\n batch(() => handler(e))\n // Don't break — allow ancestor handlers too (consistent with addEventListener)\n // But if stopPropagation was called, stop walking\n if (e.cancelBubble) break\n }\n el = el.parentElement as (HTMLElement & Record<string, unknown>) | null\n }\n })\n }\n}\n","/**\n * Hydration mismatch warnings.\n *\n * Enabled automatically in development (NODE_ENV !== \"production\").\n * Can be toggled manually for testing or verbose production debugging.\n *\n * @example\n * import { enableHydrationWarnings } from \"@pyreon/runtime-dom\"\n * enableHydrationWarnings()\n */\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\nlet _enabled = __DEV__\n\nexport function enableHydrationWarnings(): void {\n _enabled = true\n}\n\nexport function disableHydrationWarnings(): void {\n _enabled = false\n}\n\n/**\n * Emit a hydration mismatch warning.\n * @param type - Kind of mismatch\n * @param expected - What the VNode expected\n * @param actual - What the DOM had\n * @param path - Human-readable path in the tree, e.g. \"root > div > span\"\n */\nexport function warnHydrationMismatch(\n _type: \"tag\" | \"text\" | \"missing\",\n _expected: unknown,\n _actual: unknown,\n _path: string,\n): void {\n if (!_enabled) return\n console.warn(\n `[Pyreon] Hydration mismatch (${_type}): expected ${String(_expected)}, got ${String(_actual)} at ${_path}`,\n )\n}\n","/**\n * Pyreon DevTools — exposes a `__PYREON_DEVTOOLS__` global hook for browser devtools extensions\n * and in-app debugging utilities.\n *\n * Installed automatically on first `mount()` call in the browser.\n * No-op on the server (typeof window === \"undefined\").\n *\n * Usage:\n * window.__PYREON_DEVTOOLS__.getComponentTree() // root component entries\n * window.__PYREON_DEVTOOLS__.getAllComponents() // flat list of all live components\n * window.__PYREON_DEVTOOLS__.highlight(\"comp-id\") // outline a component's DOM node\n * window.__PYREON_DEVTOOLS__.onComponentMount(cb) // subscribe to mount events\n * window.__PYREON_DEVTOOLS__.onComponentUnmount(cb)// subscribe to unmount events\n * window.__PYREON_DEVTOOLS__.enableOverlay() // Ctrl+Shift+P: hover to inspect components\n */\n\nexport interface DevtoolsComponentEntry {\n id: string\n name: string\n /** First DOM element produced by this component, if any */\n el: Element | null\n parentId: string | null\n childIds: string[]\n}\n\nexport interface PyreonDevtools {\n readonly version: string\n getComponentTree(): DevtoolsComponentEntry[]\n getAllComponents(): DevtoolsComponentEntry[]\n highlight(id: string): void\n onComponentMount(cb: (entry: DevtoolsComponentEntry) => void): () => void\n onComponentUnmount(cb: (id: string) => void): () => void\n /** Toggle the component inspector overlay (also: Ctrl+Shift+P) */\n enableOverlay(): void\n disableOverlay(): void\n}\n\n// ─── Internal registry ────────────────────────────────────────────────────────\n\nconst _components = new Map<string, DevtoolsComponentEntry>()\nconst _mountListeners: ((entry: DevtoolsComponentEntry) => void)[] = []\nconst _unmountListeners: ((id: string) => void)[] = []\n\nexport function registerComponent(\n id: string,\n name: string,\n el: Element | null,\n parentId: string | null,\n): void {\n const entry: DevtoolsComponentEntry = { id, name, el, parentId, childIds: [] }\n _components.set(id, entry)\n if (parentId) {\n const parent = _components.get(parentId)\n if (parent) parent.childIds.push(id)\n }\n for (const cb of _mountListeners) cb(entry)\n}\n\nexport function unregisterComponent(id: string): void {\n const entry = _components.get(id)\n if (!entry) return\n if (entry.parentId) {\n const parent = _components.get(entry.parentId)\n if (parent) parent.childIds = parent.childIds.filter((c) => c !== id)\n }\n _components.delete(id)\n for (const cb of _unmountListeners) cb(id)\n}\n\n// ─── Component Inspector Overlay ─────────────────────────────────────────────\n\nlet _overlayActive = false\nlet _overlayEl: HTMLDivElement | null = null\nlet _tooltipEl: HTMLDivElement | null = null\nlet _currentHighlight: Element | null = null\n\nfunction findComponentForElement(el: Element): DevtoolsComponentEntry | null {\n // Walk up from the hovered element to find the nearest registered component\n let node: Element | null = el\n while (node) {\n for (const entry of _components.values()) {\n if (entry.el === node) return entry\n }\n node = node.parentElement\n }\n return null\n}\n\nfunction createOverlayElements(): void {\n if (_overlayEl) return\n\n _overlayEl = document.createElement(\"div\")\n _overlayEl.id = \"__pyreon-overlay\"\n _overlayEl.style.cssText =\n \"position:fixed;pointer-events:none;border:2px solid #00b4d8;border-radius:3px;z-index:999999;display:none;transition:all 0.08s ease-out;\"\n\n _tooltipEl = document.createElement(\"div\")\n _tooltipEl.style.cssText =\n \"position:fixed;pointer-events:none;background:#1a1a2e;color:#e0e0e0;font:12px/1.4 ui-monospace,monospace;padding:6px 10px;border-radius:4px;z-index:999999;display:none;box-shadow:0 2px 8px rgba(0,0,0,0.3);max-width:400px;white-space:pre-wrap;\"\n\n document.body.appendChild(_overlayEl)\n document.body.appendChild(_tooltipEl)\n}\n\nfunction positionOverlay(rect: DOMRect): void {\n if (!_overlayEl) return\n _overlayEl.style.display = \"block\"\n _overlayEl.style.top = `${rect.top}px`\n _overlayEl.style.left = `${rect.left}px`\n _overlayEl.style.width = `${rect.width}px`\n _overlayEl.style.height = `${rect.height}px`\n}\n\nfunction positionTooltip(entry: DevtoolsComponentEntry, rect: DOMRect): void {\n if (!_tooltipEl) return\n const childCount = entry.childIds.length\n let info = `<${entry.name}>`\n if (childCount > 0) info += `\\n ${childCount} child component${childCount === 1 ? \"\" : \"s\"}`\n _tooltipEl.textContent = info\n _tooltipEl.style.display = \"block\"\n _tooltipEl.style.top = `${rect.top - 30}px`\n _tooltipEl.style.left = `${rect.left}px`\n if (rect.top < 35) {\n _tooltipEl.style.top = `${rect.bottom + 4}px`\n }\n}\n\nfunction hideOverlayElements(): void {\n if (_overlayEl) _overlayEl.style.display = \"none\"\n if (_tooltipEl) _tooltipEl.style.display = \"none\"\n _currentHighlight = null\n}\n\n/** @internal — exported for testing only */\nexport function onOverlayMouseMove(e: MouseEvent): void {\n const target = document.elementFromPoint(e.clientX, e.clientY)\n if (!target || target === _overlayEl || target === _tooltipEl) return\n\n const entry = findComponentForElement(target)\n if (!entry?.el) {\n hideOverlayElements()\n return\n }\n\n if (entry.el === _currentHighlight) return\n _currentHighlight = entry.el\n\n const rect = entry.el.getBoundingClientRect()\n positionOverlay(rect)\n positionTooltip(entry, rect)\n}\n\n/** @internal — exported for testing only */\nexport function onOverlayClick(e: MouseEvent): void {\n e.preventDefault()\n e.stopPropagation()\n const target = document.elementFromPoint(e.clientX, e.clientY)\n if (!target) return\n const entry = findComponentForElement(target)\n if (entry) {\n console.group(`[Pyreon] <${entry.name}>`)\n console.log(\"element:\", entry.el)\n console.log(\"children:\", entry.childIds.length)\n if (entry.parentId) {\n const parent = _components.get(entry.parentId)\n if (parent) {\n console.log(\"parent:\", `<${parent.name}>`)\n }\n }\n console.groupEnd()\n }\n disableOverlay()\n}\n\nfunction onOverlayKeydown(e: KeyboardEvent): void {\n if (e.key === \"Escape\") {\n disableOverlay()\n }\n}\n\nfunction enableOverlay(): void {\n if (_overlayActive) return\n _overlayActive = true\n createOverlayElements()\n document.addEventListener(\"mousemove\", onOverlayMouseMove, true)\n document.addEventListener(\"click\", onOverlayClick, true)\n document.addEventListener(\"keydown\", onOverlayKeydown, true)\n document.body.style.cursor = \"crosshair\"\n}\n\nfunction disableOverlay(): void {\n if (!_overlayActive) return\n _overlayActive = false\n document.removeEventListener(\"mousemove\", onOverlayMouseMove, true)\n document.removeEventListener(\"click\", onOverlayClick, true)\n document.removeEventListener(\"keydown\", onOverlayKeydown, true)\n document.body.style.cursor = \"\"\n if (_overlayEl) _overlayEl.style.display = \"none\"\n if (_tooltipEl) _tooltipEl.style.display = \"none\"\n _currentHighlight = null\n}\n\n// ─── Installation ─────────────────────────────────────────────────────────────\n\nlet _installed = false\n// Resolved once at module load — avoids per-call typeof branch in coverage\nconst _hasWindow = typeof window !== \"undefined\"\n\nexport function installDevTools(): void {\n if (!_hasWindow || _installed) return\n _installed = true\n\n const devtools: PyreonDevtools = {\n version: \"0.1.0\",\n\n getComponentTree() {\n return Array.from(_components.values()).filter((e) => e.parentId === null)\n },\n\n getAllComponents() {\n return Array.from(_components.values())\n },\n\n highlight(id: string) {\n const entry = _components.get(id)\n if (!entry?.el) return\n const el = entry.el as HTMLElement\n const prev = el.style.outline\n el.style.outline = \"2px solid #00b4d8\"\n setTimeout(() => {\n el.style.outline = prev\n }, 1500)\n },\n\n onComponentMount(cb: (entry: DevtoolsComponentEntry) => void): () => void {\n _mountListeners.push(cb)\n return () => {\n const i = _mountListeners.indexOf(cb)\n if (i >= 0) _mountListeners.splice(i, 1)\n }\n },\n\n onComponentUnmount(cb: (id: string) => void): () => void {\n _unmountListeners.push(cb)\n return () => {\n const i = _unmountListeners.indexOf(cb)\n if (i >= 0) _unmountListeners.splice(i, 1)\n }\n },\n\n enableOverlay,\n disableOverlay,\n }\n\n // Attach to window — compatible with browser devtools extensions\n ;(window as unknown as Record<string, unknown>).__PYREON_DEVTOOLS__ = devtools\n\n // Ctrl+Shift+P toggles the component inspector overlay\n window.addEventListener(\"keydown\", (e) => {\n if (e.ctrlKey && e.shiftKey && e.key === \"P\") {\n e.preventDefault()\n if (_overlayActive) disableOverlay()\n else enableOverlay()\n }\n })\n\n // ── $p console helper ────────────────────────────────────────────────────\n // Type `$p` in the browser console for quick access to Pyreon debug tools.\n const win = window as unknown as Record<string, unknown>\n win.$p = {\n /** List all mounted components */\n components: () => devtools.getAllComponents(),\n /** Component tree (roots only) */\n tree: () => devtools.getComponentTree(),\n /** Highlight a component by id */\n highlight: (id: string) => devtools.highlight(id),\n /** Toggle component inspector overlay */\n inspect: () => {\n if (_overlayActive) disableOverlay()\n else enableOverlay()\n },\n /** Print component count */\n stats: () => {\n const all = devtools.getAllComponents()\n const roots = devtools.getComponentTree()\n console.log(\n `[Pyreon] ${all.length} component${all.length === 1 ? \"\" : \"s\"}, ${roots.length} root${roots.length === 1 ? \"\" : \"s\"}`,\n )\n return { total: all.length, roots: roots.length }\n },\n /** Quick help */\n help: () => {\n console.log(\n \"[Pyreon] $p commands:\\n\" +\n \" $p.components() — list all mounted components\\n\" +\n \" $p.tree() — component tree (roots only)\\n\" +\n \" $p.highlight(id)— outline a component\\n\" +\n \" $p.inspect() — toggle component inspector\\n\" +\n \" $p.stats() — print component count\\n\" +\n \" $p.help() — this message\",\n )\n },\n }\n}\n","import type { VNode, VNodeChild } from \"@pyreon/core\"\n\ntype MountFn = (child: VNodeChild, parent: Node, anchor: Node | null) => Cleanup\n\nimport { effect, runUntracked } from \"@pyreon/reactivity\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\ntype Cleanup = () => void\n\n/**\n * Move all nodes strictly between `start` and `end` into a throwaway\n * DocumentFragment, detaching them from the live DOM in O(n) top-level moves.\n *\n * This is dramatically faster than Range.deleteContents() in JS-based DOMs\n * (happy-dom, jsdom) where deleting connected nodes with deep subtrees is O(n²).\n * In real browsers both approaches are similar, but the fragment approach is\n * never slower and avoids the pathological case.\n *\n * After this call every moved node has isConnected=false, so cleanup functions\n * that guard removeChild with `isConnected !== false` become no-ops.\n */\nfunction clearBetween(start: Node, end: Node): void {\n const frag = document.createDocumentFragment()\n let cur: Node | null = start.nextSibling\n while (cur && cur !== end) {\n const next: Node | null = cur.nextSibling\n frag.appendChild(cur)\n cur = next\n }\n // frag goes out of scope → nodes are GC-eligible\n}\n\n/**\n * Mount a reactive node whose content changes over time.\n *\n * A comment node is used as a stable anchor point in the DOM.\n * On each change: old nodes are removed, new ones inserted before the anchor.\n */\nexport function mountReactive(\n accessor: () => VNodeChild,\n parent: Node,\n anchor: Node | null,\n mount: (child: VNodeChild, p: Node, a: Node | null) => Cleanup,\n): Cleanup {\n const marker = document.createComment(\"pyreon\")\n parent.insertBefore(marker, anchor)\n\n let currentCleanup: Cleanup = () => {\n /* noop */\n }\n let generation = 0\n\n const e = effect(() => {\n const myGen = ++generation\n // Run cleanup outside tracking context — cleanup may write to signals\n // (e.g. onUnmount hooks), and those writes must not accidentally register\n // as dependencies of this effect, which would cause infinite recursion.\n runUntracked(() => currentCleanup())\n currentCleanup = () => {\n /* noop */\n }\n const value = accessor()\n if (__DEV__ && typeof value === \"function\") {\n console.warn(\n \"[Pyreon] Reactive accessor returned a function instead of a value. Did you forget to call the signal?\",\n )\n }\n if (value != null && value !== false) {\n const cleanup = mount(value, parent, marker)\n // Guard: a re-entrant signal update (e.g. ErrorBoundary catching a child\n // throw) may have already re-run this effect and updated currentCleanup.\n // In that case, discard our stale cleanup rather than overwriting the one\n // set by the re-entrant run.\n if (myGen === generation) {\n currentCleanup = cleanup\n } else {\n cleanup()\n }\n }\n })\n\n return () => {\n e.dispose()\n currentCleanup()\n marker.parentNode?.removeChild(marker)\n }\n}\n\n// ─── Keyed list reconciler ────────────────────────────────────────────────────\n\n/**\n * Efficient keyed list reconciler.\n *\n * When a reactive accessor returns VNode[] where every vnode carries a key,\n * this reconciler reuses, moves, and creates DOM nodes surgically instead of\n * tearing down and rebuilding the full list on every signal update.\n */\n\ninterface KeyedEntry {\n /** Comment node placed immediately before this entry's DOM content. */\n anchor: Comment\n cleanup: Cleanup\n}\n\n// WeakSets to identify anchor nodes belonging to list entries.\n// Entries use their first DOM node as anchor (element for simple vnodes, comment fallback for empty).\nconst _keyedAnchors = new WeakSet<Node>()\n\n/** LIS-based reorder state — shared across keyed list instances, grown as needed */\ninterface LisState {\n tails: Int32Array\n tailIdx: Int32Array\n pred: Int32Array\n stay: Uint8Array\n}\n\nfunction growLisArrays(lis: LisState, n: number): LisState {\n if (n <= lis.pred.length) return lis\n return {\n tails: new Int32Array(n + 16),\n tailIdx: new Int32Array(n + 16),\n pred: new Int32Array(n + 16),\n stay: new Uint8Array(n + 16),\n }\n}\n\nfunction computeKeyedLis(\n lis: LisState,\n n: number,\n newKeyOrder: (string | number)[],\n curPos: Map<string | number, number>,\n): number {\n const { tails, tailIdx, pred } = lis\n let lisLen = 0\n for (let i = 0; i < n; i++) {\n const key = newKeyOrder[i]\n if (key === undefined) continue\n const v = curPos.get(key) ?? -1\n if (v < 0) continue\n\n let lo = 0\n let hi = lisLen\n while (lo < hi) {\n const mid = (lo + hi) >> 1\n if ((tails[mid] as number) < v) lo = mid + 1\n else hi = mid\n }\n tails[lo] = v\n tailIdx[lo] = i\n if (lo > 0) pred[i] = tailIdx[lo - 1] as number\n if (lo === lisLen) lisLen++\n }\n return lisLen\n}\n\nfunction markStayingEntries(lis: LisState, lisLen: number): void {\n const { tailIdx, pred, stay } = lis\n let cur: number = lisLen > 0 ? (tailIdx[lisLen - 1] as number) : -1\n while (cur !== -1) {\n stay[cur] = 1\n cur = pred[cur] as number\n }\n}\n\nfunction applyKeyedMoves(\n n: number,\n newKeyOrder: (string | number)[],\n stay: Uint8Array,\n cache: Map<string | number, KeyedEntry>,\n parent: Node,\n tailMarker: Comment,\n): void {\n let cursor: Node = tailMarker\n for (let i = n - 1; i >= 0; i--) {\n const key = newKeyOrder[i]\n if (key === undefined) continue\n const entry = cache.get(key)\n if (!entry) continue\n if (!stay[i]) moveEntryBefore(parent, entry.anchor, cursor)\n cursor = entry.anchor\n }\n}\n\n/** Grow LIS typed arrays if needed, then compute and apply reorder. */\nfunction keyedListReorder(\n lis: LisState,\n n: number,\n newKeyOrder: (string | number)[],\n curPos: Map<string | number, number>,\n cache: Map<string | number, KeyedEntry>,\n parent: Node,\n tailMarker: Comment,\n): LisState {\n const grown = growLisArrays(lis, n)\n grown.pred.fill(-1, 0, n)\n grown.stay.fill(0, 0, n)\n\n const lisLen = computeKeyedLis(grown, n, newKeyOrder, curPos)\n markStayingEntries(grown, lisLen)\n applyKeyedMoves(n, newKeyOrder, grown.stay, cache, parent, tailMarker)\n\n return grown\n}\n\nexport function mountKeyedList(\n accessor: () => VNode[],\n parent: Node,\n listAnchor: Node | null,\n mountVNode: (vnode: VNode, p: Node, a: Node | null) => Cleanup,\n): Cleanup {\n const startMarker = document.createComment(\"\")\n const tailMarker = document.createComment(\"\")\n parent.insertBefore(startMarker, listAnchor)\n parent.insertBefore(tailMarker, listAnchor)\n\n const cache = new Map<string | number, KeyedEntry>()\n const curPos = new Map<string | number, number>()\n let currentKeyOrder: (string | number)[] = []\n\n let lis: LisState = {\n tails: new Int32Array(16),\n tailIdx: new Int32Array(16),\n pred: new Int32Array(16),\n stay: new Uint8Array(16),\n }\n\n const collectKeyOrder = (\n newList: VNode[],\n ): { newKeyOrder: (string | number)[]; newKeySet: Set<string | number> } => {\n const newKeyOrder: (string | number)[] = []\n const newKeySet = new Set<string | number>()\n for (const vnode of newList) {\n const key = vnode.key\n if (key !== null && key !== undefined) {\n newKeyOrder.push(key)\n newKeySet.add(key)\n }\n }\n return { newKeyOrder, newKeySet }\n }\n\n const removeStaleEntries = (newKeySet: Set<string | number>) => {\n for (const [key, entry] of cache) {\n if (newKeySet.has(key)) continue\n entry.cleanup()\n entry.anchor.parentNode?.removeChild(entry.anchor)\n cache.delete(key)\n curPos.delete(key)\n }\n }\n\n const mountNewEntries = (newList: VNode[]) => {\n for (const vnode of newList) {\n const key = vnode.key\n if (key === null || key === undefined) continue\n if (cache.has(key)) continue\n const anchor = document.createComment(\"\")\n _keyedAnchors.add(anchor)\n parent.insertBefore(anchor, tailMarker)\n const cleanup = mountVNode(vnode, parent, tailMarker)\n cache.set(key, { anchor, cleanup })\n }\n }\n\n const e = effect(() => {\n const newList = accessor()\n const n = newList.length\n\n if (n === 0 && cache.size > 0) {\n for (const entry of cache.values()) entry.cleanup()\n cache.clear()\n curPos.clear()\n currentKeyOrder = []\n clearBetween(startMarker, tailMarker)\n return\n }\n\n const { newKeyOrder, newKeySet } = collectKeyOrder(newList)\n removeStaleEntries(newKeySet)\n mountNewEntries(newList)\n\n if (currentKeyOrder.length > 0 && n > 0) {\n lis = keyedListReorder(lis, n, newKeyOrder, curPos, cache, parent, tailMarker)\n }\n\n curPos.clear()\n for (let i = 0; i < newKeyOrder.length; i++) {\n const k = newKeyOrder[i]\n if (k !== undefined) curPos.set(k, i)\n }\n currentKeyOrder = newKeyOrder\n })\n\n return () => {\n e.dispose()\n for (const entry of cache.values()) {\n entry.cleanup()\n entry.anchor.parentNode?.removeChild(entry.anchor)\n }\n cache.clear()\n startMarker.parentNode?.removeChild(startMarker)\n tailMarker.parentNode?.removeChild(tailMarker)\n }\n}\n\n// ─── For — source-aware keyed reconciler ─────────────────────────────────────\n\n/** Maximum number of displaced positions before falling back to full LIS. */\nconst SMALL_K = 8\n\n// WeakSet to identify anchor nodes belonging to mountFor entries.\nconst _forAnchors = new WeakSet<Node>()\n\n// anchor is the first DOM node of the entry (element for normal vnodes, comment fallback for empty).\n// Using the element itself saves 1 createComment + 1 DOM node per entry.\n// pos is merged here (instead of a separate Map) to halve Map operations.\n// cleanup is null when the entry has no teardown work (saves function call overhead on clear).\ninterface ForEntry {\n anchor: Node\n cleanup: Cleanup | null\n pos: number\n}\n\n/** Try small-k reorder; returns true if handled, false if LIS fallback needed. */\nfunction trySmallKReorder(\n n: number,\n newKeys: (string | number)[],\n currentKeys: (string | number)[],\n cache: Map<string | number, ForEntry>,\n liveParent: Node,\n tailMarker: Comment,\n): boolean {\n if (n !== currentKeys.length) return false\n const diffs: number[] = []\n for (let i = 0; i < n; i++) {\n if (newKeys[i] !== currentKeys[i]) {\n diffs.push(i)\n if (diffs.length > SMALL_K) return false\n }\n }\n if (diffs.length > 0) smallKPlace(liveParent, diffs, newKeys, cache, tailMarker)\n for (const i of diffs) {\n const cached = cache.get(newKeys[i] as string | number)\n if (cached) cached.pos = i\n }\n return true\n}\n\nfunction computeForLis(\n lis: LisState,\n n: number,\n newKeys: (string | number)[],\n cache: Map<string | number, ForEntry>,\n): number {\n const { tails, tailIdx, pred } = lis\n let lisLen = 0\n for (let i = 0; i < n; i++) {\n const key = newKeys[i] as string | number\n const v = cache.get(key)?.pos ?? 0\n let lo = 0\n let hi = lisLen\n while (lo < hi) {\n const mid = (lo + hi) >> 1\n if ((tails[mid] as number) < v) lo = mid + 1\n else hi = mid\n }\n tails[lo] = v\n tailIdx[lo] = i\n if (lo > 0) pred[i] = tailIdx[lo - 1] as number\n if (lo === lisLen) lisLen++\n }\n return lisLen\n}\n\nfunction applyForMoves(\n n: number,\n newKeys: (string | number)[],\n stay: Uint8Array,\n cache: Map<string | number, ForEntry>,\n liveParent: Node,\n tailMarker: Comment,\n): void {\n let cursor: Node = tailMarker\n for (let i = n - 1; i >= 0; i--) {\n const entry = cache.get(newKeys[i] as string | number)\n if (!entry) continue\n if (!stay[i]) moveEntryBefore(liveParent, entry.anchor, cursor)\n cursor = entry.anchor\n }\n}\n\n/** LIS-based reorder for mountFor. */\nfunction forLisReorder(\n lis: LisState,\n n: number,\n newKeys: (string | number)[],\n cache: Map<string | number, ForEntry>,\n liveParent: Node,\n tailMarker: Comment,\n): LisState {\n const grown = growLisArrays(lis, n)\n grown.pred.fill(-1, 0, n)\n grown.stay.fill(0, 0, n)\n\n const lisLen = computeForLis(grown, n, newKeys, cache)\n markStayingEntries(grown, lisLen)\n applyForMoves(n, newKeys, grown.stay, cache, liveParent, tailMarker)\n\n for (let i = 0; i < n; i++) {\n const cached = cache.get(newKeys[i] as string | number)\n if (cached) cached.pos = i\n }\n\n return grown\n}\n\n/**\n * Keyed reconciler that works directly on the source item array.\n *\n * Optimizations:\n * - Calls renderItem() only for NEW keys — 0 VNode allocations for reorders\n * - Small-k fast path: if <= SMALL_K positions changed, skips LIS\n * - Fast clear path: moves nodes to DocumentFragment for O(n) bulk detach\n * - Fresh render fast path: skips stale-check and reorder on first render\n */\nexport function mountFor<T>(\n source: () => T[],\n getKey: (item: T) => string | number,\n renderItem: (item: T) => import(\"@pyreon/core\").VNode | import(\"@pyreon/core\").NativeItem,\n parent: Node,\n anchor: Node | null,\n mountChild: MountFn,\n): Cleanup {\n const startMarker = document.createComment(\"\")\n const tailMarker = document.createComment(\"\")\n parent.insertBefore(startMarker, anchor)\n parent.insertBefore(tailMarker, anchor)\n\n let cache = new Map<string | number, ForEntry>()\n let currentKeys: (string | number)[] = []\n let cleanupCount = 0\n let anchorsRegistered = false\n\n let lis: LisState = {\n tails: new Int32Array(16),\n tailIdx: new Int32Array(16),\n pred: new Int32Array(16),\n stay: new Uint8Array(16),\n }\n\n const warnDuplicateKeys = (seen: Set<string | number> | null, key: string | number) => {\n if (!__DEV__ || !seen) return\n if (seen.has(key)) {\n console.warn(`[Pyreon] Duplicate key \"${String(key)}\" in <For> list. Keys must be unique.`)\n }\n seen.add(key)\n }\n\n /** Render item into container, update cache+cleanupCount. No anchor registration. */\n const renderInto = (\n item: T,\n key: string | number,\n pos: number,\n container: Node,\n before: Node | null,\n ) => {\n const result = renderItem(item)\n if ((result as import(\"@pyreon/core\").NativeItem).__isNative) {\n const native = result as import(\"@pyreon/core\").NativeItem\n container.insertBefore(native.el, before)\n cache.set(key, { anchor: native.el, cleanup: native.cleanup, pos })\n if (native.cleanup) cleanupCount++\n return\n }\n const priorLast = before ? before.previousSibling : container.lastChild\n const cl = mountChild(result as import(\"@pyreon/core\").VNode, container, before)\n const firstMounted = priorLast ? priorLast.nextSibling : container.firstChild\n if (!firstMounted || firstMounted === before) {\n const ph = document.createComment(\"\")\n container.insertBefore(ph, before)\n cache.set(key, { anchor: ph, cleanup: cl, pos })\n } else {\n cache.set(key, { anchor: firstMounted, cleanup: cl, pos })\n }\n cleanupCount++\n }\n\n const handleFreshRender = (items: T[], n: number, liveParent: Node) => {\n const frag = document.createDocumentFragment()\n const keys = new Array<string | number>(n)\n const _seenKeys = __DEV__ ? new Set<string | number>() : null\n for (let i = 0; i < n; i++) {\n const item = items[i] as T\n const key = getKey(item)\n warnDuplicateKeys(_seenKeys, key)\n keys[i] = key\n renderInto(item, key, i, frag, null)\n }\n liveParent.insertBefore(frag, tailMarker)\n anchorsRegistered = false\n currentKeys = keys\n }\n\n const collectNewKeys = (items: T[], n: number): (string | number)[] => {\n const newKeys = new Array<string | number>(n)\n const _seenUpdate = __DEV__ ? new Set<string | number>() : null\n for (let i = 0; i < n; i++) {\n newKeys[i] = getKey(items[i] as T)\n warnDuplicateKeys(_seenUpdate, newKeys[i] as string | number)\n }\n return newKeys\n }\n\n const handleReplaceAll = (\n items: T[],\n n: number,\n newKeys: (string | number)[],\n liveParent: Node,\n ) => {\n if (cleanupCount > 0) {\n for (const entry of cache.values()) if (entry.cleanup) entry.cleanup()\n }\n cache = new Map()\n cleanupCount = 0\n\n const parentParent = liveParent.parentNode\n const canSwap =\n parentParent && liveParent.firstChild === startMarker && liveParent.lastChild === tailMarker\n\n const frag = document.createDocumentFragment()\n for (let i = 0; i < n; i++) {\n renderInto(items[i] as T, newKeys[i] as string | number, i, frag, null)\n }\n anchorsRegistered = false\n\n if (canSwap) {\n const fresh = liveParent.cloneNode(false)\n fresh.appendChild(startMarker)\n fresh.appendChild(frag)\n fresh.appendChild(tailMarker)\n parentParent.replaceChild(fresh, liveParent)\n } else {\n clearBetween(startMarker, tailMarker)\n liveParent.insertBefore(frag, tailMarker)\n }\n currentKeys = newKeys\n }\n\n const removeStaleForEntries = (newKeySet: Set<string | number>) => {\n for (const [key, entry] of cache) {\n if (newKeySet.has(key)) continue\n if (entry.cleanup) {\n entry.cleanup()\n cleanupCount--\n }\n entry.anchor.parentNode?.removeChild(entry.anchor)\n cache.delete(key)\n }\n }\n\n const mountNewForEntries = (\n items: T[],\n n: number,\n newKeys: (string | number)[],\n liveParent: Node,\n ) => {\n for (let i = 0; i < n; i++) {\n const key = newKeys[i] as string | number\n if (cache.has(key)) continue\n renderInto(items[i] as T, key, i, liveParent, tailMarker)\n const entry = cache.get(key)\n if (entry) _forAnchors.add(entry.anchor)\n }\n }\n\n const handleFastClear = (liveParent: Node) => {\n if (cache.size === 0) return\n if (cleanupCount > 0) {\n for (const entry of cache.values()) if (entry.cleanup) entry.cleanup()\n }\n const pp = liveParent.parentNode\n if (pp && liveParent.firstChild === startMarker && liveParent.lastChild === tailMarker) {\n const fresh = liveParent.cloneNode(false)\n fresh.appendChild(startMarker)\n fresh.appendChild(tailMarker)\n pp.replaceChild(fresh, liveParent)\n } else {\n clearBetween(startMarker, tailMarker)\n }\n cache = new Map()\n cleanupCount = 0\n currentKeys = []\n }\n\n const hasAnyKeptKey = (n: number, newKeys: (string | number)[]): boolean => {\n for (let i = 0; i < n; i++) {\n if (cache.has(newKeys[i] as string | number)) return true\n }\n return false\n }\n\n const handleIncrementalUpdate = (\n items: T[],\n n: number,\n newKeys: (string | number)[],\n liveParent: Node,\n ) => {\n removeStaleForEntries(new Set<string | number>(newKeys))\n mountNewForEntries(items, n, newKeys, liveParent)\n\n if (!anchorsRegistered) {\n for (const entry of cache.values()) _forAnchors.add(entry.anchor)\n anchorsRegistered = true\n }\n\n if (trySmallKReorder(n, newKeys, currentKeys, cache, liveParent, tailMarker)) {\n currentKeys = newKeys\n return\n }\n\n lis = forLisReorder(lis, n, newKeys, cache, liveParent, tailMarker)\n currentKeys = newKeys\n }\n\n const e = effect(() => {\n const liveParent = startMarker.parentNode\n if (!liveParent) return\n const items = source()\n const n = items.length\n\n if (n === 0) {\n handleFastClear(liveParent)\n return\n }\n\n if (currentKeys.length === 0) {\n handleFreshRender(items, n, liveParent)\n return\n }\n\n const newKeys = collectNewKeys(items, n)\n\n if (!hasAnyKeptKey(n, newKeys)) {\n handleReplaceAll(items, n, newKeys, liveParent)\n return\n }\n\n handleIncrementalUpdate(items, n, newKeys, liveParent)\n })\n\n return () => {\n e.dispose()\n for (const entry of cache.values()) {\n if (cleanupCount > 0 && entry.cleanup) entry.cleanup()\n entry.anchor.parentNode?.removeChild(entry.anchor)\n }\n cache = new Map()\n cleanupCount = 0\n startMarker.parentNode?.removeChild(startMarker)\n tailMarker.parentNode?.removeChild(tailMarker)\n }\n}\n\n/**\n * Small-k reorder: directly place the k displaced entries without LIS.\n */\nfunction smallKPlace(\n parent: Node,\n diffs: number[],\n newKeys: (string | number)[],\n cache: Map<string | number, { anchor: Node; cleanup: Cleanup | null }>,\n tailMarker: Comment,\n): void {\n const diffSet = new Set(diffs)\n let cursor: Node = tailMarker\n let prevDiffIdx = newKeys.length\n\n for (let d = diffs.length - 1; d >= 0; d--) {\n const i = diffs[d] as number\n\n let nextNonDiff = -1\n for (let j = i + 1; j < prevDiffIdx; j++) {\n if (!diffSet.has(j)) {\n nextNonDiff = j\n break\n }\n }\n\n if (nextNonDiff >= 0) {\n const nc = cache.get(newKeys[nextNonDiff] as string | number)?.anchor\n if (nc) cursor = nc\n }\n\n const entry = cache.get(newKeys[i] as string | number)\n if (!entry) {\n prevDiffIdx = i\n continue\n }\n moveEntryBefore(parent, entry.anchor, cursor)\n cursor = entry.anchor\n prevDiffIdx = i\n }\n}\n\n/**\n * Move startNode and all siblings belonging to this entry to just before `before`.\n * Stops at the next entry anchor (identified via WeakSet) or the tail marker.\n *\n * Fast path: if the next sibling is already a boundary (another entry or tail),\n * this entry is a single node — skip the toMove array entirely.\n */\nfunction moveEntryBefore(parent: Node, startNode: Node, before: Node): void {\n const next = startNode.nextSibling\n // Single-node fast path (covers all createTemplate rows — the common case)\n if (\n !next ||\n next === before ||\n (next.parentNode === parent && (_forAnchors.has(next) || _keyedAnchors.has(next)))\n ) {\n parent.insertBefore(startNode, before)\n return\n }\n // Multi-node slow path (fragments, components with multiple root nodes)\n const toMove: Node[] = [startNode]\n let cur: Node | null = next\n while (cur && cur !== before) {\n const nextNode: Node | null = cur.nextSibling\n toMove.push(cur)\n cur = nextNode\n if (\n cur &&\n cur.parentNode === parent &&\n (cur === before || _forAnchors.has(cur) || _keyedAnchors.has(cur))\n )\n break\n }\n for (const node of toMove) {\n parent.insertBefore(node, before)\n }\n}\n","import type { Props } from \"@pyreon/core\"\nimport { batch, renderEffect } from \"@pyreon/reactivity\"\nimport { DELEGATED_EVENTS, delegatedPropName } from \"./delegate\"\n\ntype Cleanup = () => void\n\n/**\n * Directive function signature.\n * Receives the element and an `addCleanup` callback to register teardown logic.\n *\n * @example\n * const nFocus: Directive = (el) => { el.focus() }\n *\n * // With reactive value (via closure):\n * const nTooltip = (text: () => string): Directive => (el, addCleanup) => {\n * const e = effect(() => { el.title = text() })\n * addCleanup(() => e.dispose())\n * }\n *\n * // Usage:\n * h(\"input\", { \"n-focus\": nFocus })\n * h(\"div\", { \"n-tooltip\": nTooltip(() => label()) })\n */\nexport type Directive = (el: HTMLElement, addCleanup: (fn: Cleanup) => void) => void\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\n// ─── Configurable sanitizer ──────────────────────────────────────────────────\n\nexport type SanitizeFn = (html: string) => string\n\nlet _customSanitizer: SanitizeFn | null = null\n\n/**\n * Set a custom HTML sanitizer used by `innerHTML` and `sanitizeHtml()`.\n * Overrides both the Sanitizer API and the built-in fallback.\n *\n * @example\n * // With DOMPurify:\n * import DOMPurify from \"dompurify\"\n * setSanitizer((html) => DOMPurify.sanitize(html))\n *\n * // With sanitize-html:\n * import sanitize from \"sanitize-html\"\n * setSanitizer((html) => sanitize(html))\n *\n * // Reset to built-in:\n * setSanitizer(null)\n */\nexport function setSanitizer(fn: SanitizeFn | null): void {\n _customSanitizer = fn\n}\n\n// Safe HTML tags allowed by the fallback sanitizer (block + inline, no scripts/embeds/forms)\nconst SAFE_TAGS = new Set([\n \"a\",\n \"abbr\",\n \"address\",\n \"article\",\n \"aside\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"blockquote\",\n \"br\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hr\",\n \"i\",\n \"ins\",\n \"kbd\",\n \"li\",\n \"main\",\n \"mark\",\n \"nav\",\n \"ol\",\n \"p\",\n \"pre\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"section\",\n \"small\",\n \"span\",\n \"strong\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"tr\",\n \"u\",\n \"ul\",\n \"var\",\n \"wbr\",\n])\n\n// Attributes that can carry executable code\nconst UNSAFE_ATTR_RE = /^on/i\n\n/**\n * Fallback tag-stripping sanitizer for environments without the Sanitizer API.\n * Removes all tags not in SAFE_TAGS, strips event handler attributes,\n * and blocks javascript:/data: URLs in href/src/action attributes.\n */\nfunction fallbackSanitize(html: string): string {\n const doc = new DOMParser().parseFromString(html, \"text/html\")\n sanitizeNode(doc.body)\n return doc.body.innerHTML\n}\n\n/** Strip unsafe attributes from a single element. */\nfunction stripUnsafeAttrs(el: Element): void {\n const attrs = Array.from(el.attributes)\n for (const attr of attrs) {\n if (UNSAFE_ATTR_RE.test(attr.name)) {\n el.removeAttribute(attr.name)\n } else if (URL_ATTRS.has(attr.name) && UNSAFE_URL_RE.test(attr.value)) {\n el.removeAttribute(attr.name)\n }\n }\n}\n\nfunction sanitizeNode(node: Node): void {\n const children = Array.from(node.childNodes)\n for (const child of children) {\n if (child.nodeType !== 1) continue\n const el = child as Element\n const tag = el.tagName.toLowerCase()\n if (!SAFE_TAGS.has(tag)) {\n const text = document.createTextNode(el.textContent as string)\n node.replaceChild(text, el)\n continue\n }\n stripUnsafeAttrs(el)\n sanitizeNode(el)\n }\n}\n\n/**\n * Sanitize an HTML string using the browser Sanitizer API (Chrome 105+).\n * Falls back to a tag-allowlist sanitizer that strips unsafe elements and attributes.\n */\nexport function sanitizeHtml(html: string): string {\n // User-provided sanitizer takes priority (e.g. DOMPurify)\n if (_customSanitizer) return _customSanitizer(html)\n // DOM-based allowlist sanitizer — DOMParser is available in all browser targets.\n // sanitizeHtml is only called for innerHTML (DOM-only), so SSR fallback is not needed.\n return fallbackSanitize(html)\n}\n\n// Matches onClick, onInput, onMouseEnter, etc.\nconst EVENT_RE = /^on[A-Z]/\n\n/**\n * Apply all props to a DOM element.\n * Returns a single chained cleanup (or null if no props need teardown).\n * Uses for-in instead of Object.keys() to avoid allocating a keys array.\n */\nexport function applyProps(el: Element, props: Props): Cleanup | null {\n let cleanup: Cleanup | null = null\n for (const key in props) {\n if (key === \"key\" || key === \"ref\") continue\n const c = applyProp(el, key, props[key])\n if (c) {\n if (!cleanup) {\n cleanup = c\n } else {\n const prev = cleanup\n cleanup = () => {\n prev()\n c()\n }\n }\n }\n }\n return cleanup\n}\n\n/**\n * Apply a single prop.\n *\n * - `onXxx` → addEventListener\n * - `() => value` (non-event function) → reactive via effect\n * - anything else → static attribute / DOM property\n */\nexport function applyProp(el: Element, key: string, value: unknown): Cleanup | null {\n // Event listener: onClick → \"click\"\n // Delegated events use expando properties (picked up by the container's delegated listener).\n // Non-delegated events use addEventListener directly.\n // Both paths wrap in batch() so multiple signal writes coalesce into one DOM update.\n if (EVENT_RE.test(key)) {\n const eventName = key[2]?.toLowerCase() + key.slice(3)\n const handler = value as EventListener\n\n if (DELEGATED_EVENTS.has(eventName)) {\n const prop = delegatedPropName(eventName)\n ;(el as unknown as Record<string, unknown>)[prop] = (e: Event) => batch(() => handler(e))\n return () => {\n ;(el as unknown as Record<string, unknown>)[prop] = undefined\n }\n }\n\n const batched: EventListener = (e) => batch(() => handler(e))\n el.addEventListener(eventName, batched)\n return () => el.removeEventListener(eventName, batched)\n }\n\n // innerHTML — sanitized via Sanitizer API or fallback allowlist sanitizer\n if (key === \"innerHTML\") {\n if (typeof (el as HTMLElement & { setHTML?: (h: string) => void }).setHTML === \"function\") {\n ;(el as HTMLElement & { setHTML: (h: string) => void }).setHTML(value as string)\n } else {\n ;(el as HTMLElement).innerHTML = sanitizeHtml(value as string)\n }\n return null\n }\n // dangerouslySetInnerHTML — intentionally raw, developer owns sanitization (same as React)\n if (key === \"dangerouslySetInnerHTML\") {\n if (__DEV__) {\n console.warn(\n \"[Pyreon] dangerouslySetInnerHTML bypasses sanitization. Ensure the HTML is trusted.\",\n )\n }\n ;(el as HTMLElement).innerHTML = (value as { __html: string }).__html\n return null\n }\n\n // n-show: toggle display based on a reactive boolean\n if (key === \"n-show\") {\n const dispose = renderEffect(() => {\n const visible = (value as () => boolean)()\n ;(el as HTMLElement).style.display = visible ? \"\" : \"none\"\n })\n return dispose\n }\n\n // Custom directive: n-* keys call the directive function with (el, addCleanup)\n if (key.startsWith(\"n-\")) {\n const directive = value as Directive\n const cleanups: Cleanup[] = []\n directive(el as HTMLElement, (fn) => cleanups.push(fn))\n return cleanups.length > 0\n ? () => {\n for (const fn of cleanups) fn()\n }\n : null\n }\n\n // Reactive prop — function that returns the actual value\n // Uses renderEffect (lighter than effect — no scope registration, no WeakMap)\n // since lifecycle is managed by mountElement's cleanup array.\n if (typeof value === \"function\") {\n const dispose = renderEffect(() => setStaticProp(el, key, (value as () => unknown)()))\n return dispose\n }\n\n setStaticProp(el, key, value)\n return null\n}\n\n// Attributes that carry URLs and must be guarded against javascript:/data: injection.\nconst URL_ATTRS = new Set([\"href\", \"src\", \"action\", \"formaction\", \"poster\", \"cite\", \"data\"])\nconst UNSAFE_URL_RE = /^\\s*(?:javascript|data):/i\n\n/** Apply a style prop (string or object). */\nfunction applyStyleProp(el: HTMLElement, value: unknown): void {\n if (typeof value === \"string\") {\n el.style.cssText = value\n } else if (value != null && typeof value === \"object\") {\n Object.assign(el.style, value)\n }\n}\n\nfunction setStaticProp(el: Element, key: string, value: unknown): void {\n // Block javascript:/data: URI injection in URL-bearing attributes.\n if (URL_ATTRS.has(key) && typeof value === \"string\" && UNSAFE_URL_RE.test(value)) {\n if (__DEV__) {\n console.warn(`[Pyreon] Blocked unsafe URL in \"${key}\" attribute: ${value}`)\n }\n return\n }\n\n if (key === \"class\" || key === \"className\") {\n el.setAttribute(\"class\", value == null ? \"\" : String(value))\n return\n }\n\n if (key === \"style\") {\n applyStyleProp(el as HTMLElement, value)\n return\n }\n\n if (value == null) {\n el.removeAttribute(key)\n return\n }\n\n if (typeof value === \"boolean\") {\n if (value) el.setAttribute(key, \"\")\n else el.removeAttribute(key)\n return\n }\n\n if (key in el) {\n ;(el as unknown as Record<string, unknown>)[key] = value\n return\n }\n\n el.setAttribute(key, String(value))\n}\n","import type {\n ComponentFn,\n ForProps,\n NativeItem,\n PortalProps,\n Ref,\n VNode,\n VNodeChild,\n} from \"@pyreon/core\"\nimport {\n dispatchToErrorBoundary,\n EMPTY_PROPS,\n ForSymbol,\n Fragment,\n PortalSymbol,\n propagateError,\n reportError,\n runWithHooks,\n} from \"@pyreon/core\"\nimport { effectScope, renderEffect, runUntracked, setCurrentScope } from \"@pyreon/reactivity\"\nimport { registerComponent, unregisterComponent } from \"./devtools\"\nimport { mountFor, mountKeyedList, mountReactive } from \"./nodes\"\nimport { applyProps } from \"./props\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\ntype Cleanup = () => void\nconst noop: Cleanup = () => {\n /* noop */\n}\n\n// When > 0, we're mounting children inside an element — child cleanups can skip\n// DOM removal (parent element removal handles it). This avoids allocating a\n// removeChild closure for every nested element that has no reactive work.\nlet _elementDepth = 0\n\n// Stack tracking which component is currently being mounted (depth-first order).\n// Used to infer parent/child relationships for DevTools.\nconst _mountingStack: string[] = []\n\n/**\n * Mount a single child into `parent`, inserting before `anchor` (null = append).\n * Returns a cleanup that removes the node(s) and disposes all reactive effects.\n *\n * This function is the hot path — all child types are handled inline to avoid\n * function call overhead in tight render loops (1000+ calls per list render).\n */\nexport function mountChild(\n child: VNodeChild | VNodeChild[] | (() => VNodeChild | VNodeChild[]),\n parent: Node,\n anchor: Node | null = null,\n): Cleanup {\n // Reactive accessor — function that reads signals\n if (typeof child === \"function\") {\n const sample = runUntracked(() => (child as () => VNodeChild | VNodeChild[])())\n if (isKeyedArray(sample)) {\n const prevDepth = _elementDepth\n _elementDepth = 0\n const cleanup = mountKeyedList(child as () => VNode[], parent, anchor, (v, p, a) =>\n mountChild(v, p, a),\n )\n _elementDepth = prevDepth\n return cleanup\n }\n // Text fast path: reactive string/number/boolean — update text.data in-place\n if (typeof sample === \"string\" || typeof sample === \"number\" || typeof sample === \"boolean\") {\n const text = document.createTextNode(sample == null || sample === false ? \"\" : String(sample))\n parent.insertBefore(text, anchor)\n const dispose = renderEffect(() => {\n const v = (child as () => unknown)()\n text.data = v == null || v === false ? \"\" : String(v as string | number)\n })\n if (_elementDepth > 0) return dispose\n return () => {\n dispose()\n const p = text.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(text)\n }\n }\n const prevDepth = _elementDepth\n _elementDepth = 0\n const cleanup = mountReactive(child as () => VNodeChild, parent, anchor, mountChild)\n _elementDepth = prevDepth\n return cleanup\n }\n\n // Array of children (e.g. from .map())\n if (Array.isArray(child)) return mountChildren(child, parent, anchor)\n\n // Nothing to render\n if (child == null || child === false) return noop\n\n // Primitive — text node (static, no reactive effects to tear down).\n if (typeof child !== \"object\") {\n parent.insertBefore(document.createTextNode(String(child)), anchor)\n return noop\n }\n\n // NativeItem — pre-built DOM element from _tpl() or createTemplate().\n if ((child as unknown as NativeItem).__isNative) {\n const native = child as unknown as NativeItem\n parent.insertBefore(native.el, anchor)\n if (!native.cleanup) {\n if (_elementDepth > 0) return noop\n return () => {\n const p = native.el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(native.el)\n }\n }\n if (_elementDepth > 0) return native.cleanup\n return () => {\n native.cleanup?.()\n const p = native.el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(native.el)\n }\n }\n\n // VNode — element, component, fragment, For, Portal\n const vnode = child as VNode\n\n if (vnode.type === Fragment) return mountChildren(vnode.children, parent, anchor)\n\n if (vnode.type === (ForSymbol as unknown as string)) {\n const { each, by, children } = vnode.props as unknown as ForProps<unknown>\n const prevDepth = _elementDepth\n _elementDepth = 0\n const cleanup = mountFor(each, by, children, parent, anchor, mountChild)\n _elementDepth = prevDepth\n return cleanup\n }\n\n if (vnode.type === (PortalSymbol as unknown as string)) {\n const { target, children } = vnode.props as unknown as PortalProps\n if (__DEV__ && !target) return noop\n return mountChild(children, target, null)\n }\n\n if (typeof vnode.type === \"function\") {\n return mountComponent(vnode as VNode & { type: ComponentFn }, parent, anchor)\n }\n\n return mountElement(vnode, parent, anchor)\n}\n\n// ─── Element ─────────────────────────────────────────────────────────────────\n\nfunction mountElement(vnode: VNode, parent: Node, anchor: Node | null): Cleanup {\n const el = document.createElement(vnode.type as string)\n\n // Skip applyProps entirely when props is the shared empty sentinel (identity check — no allocation)\n const props = vnode.props\n const propCleanup: Cleanup | null = props !== EMPTY_PROPS ? applyProps(el, props) : null\n\n // Mount children inside element context — nested elements can skip DOM removal closures\n _elementDepth++\n const childCleanup = mountChildren(vnode.children, el, null)\n _elementDepth--\n\n parent.insertBefore(el, anchor)\n\n // Populate ref after the element is in the DOM\n const ref = props.ref as Ref<Element> | ((el: Element) => void) | null | undefined\n if (ref) {\n if (typeof ref === \"function\") ref(el)\n else ref.current = el\n }\n\n if (!propCleanup && childCleanup === noop && !ref) {\n if (_elementDepth > 0) return noop\n return () => {\n const p = el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(el)\n }\n }\n\n if (_elementDepth > 0) {\n if (!ref && !propCleanup) return childCleanup\n if (!ref && propCleanup)\n return () => {\n propCleanup()\n childCleanup()\n }\n const refToClean = ref\n return () => {\n if (refToClean && typeof refToClean === \"object\") refToClean.current = null\n if (propCleanup) propCleanup()\n childCleanup()\n }\n }\n\n return () => {\n if (ref && typeof ref === \"object\") ref.current = null\n if (propCleanup) propCleanup()\n childCleanup()\n const p = el.parentNode\n if (p && (p as Element).isConnected !== false) p.removeChild(el)\n }\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nfunction mountComponent(\n vnode: VNode & { type: ComponentFn },\n parent: Node,\n anchor: Node | null,\n): Cleanup {\n const scope = effectScope()\n setCurrentScope(scope)\n\n let hooks: ReturnType<typeof runWithHooks>[\"hooks\"]\n let output: VNode | null\n\n const componentName = (vnode.type.name || \"Anonymous\") as string\n const compId = `${componentName}-${Math.random().toString(36).slice(2, 9)}`\n const parentId = _mountingStack[_mountingStack.length - 1] ?? null\n _mountingStack.push(compId)\n\n // Merge vnode.children into props.children if not already set\n const mergedProps =\n vnode.children.length > 0 && (vnode.props as Record<string, unknown>).children === undefined\n ? {\n ...vnode.props,\n children: vnode.children.length === 1 ? vnode.children[0] : vnode.children,\n }\n : vnode.props\n\n try {\n const result = runWithHooks(vnode.type, mergedProps)\n hooks = result.hooks\n output = result.vnode\n } catch (err) {\n _mountingStack.pop()\n setCurrentScope(null)\n scope.stop()\n reportError({\n component: componentName,\n phase: \"setup\",\n error: err,\n timestamp: Date.now(),\n props: vnode.props as Record<string, unknown>,\n })\n dispatchToErrorBoundary(err)\n return noop\n } finally {\n setCurrentScope(null)\n }\n\n if (__DEV__ && output != null && typeof output === \"object\" && !(\"type\" in output)) {\n console.warn(\n `[Pyreon] Component <${componentName}> returned an invalid value. Components must return a VNode, string, null, or function.`,\n )\n }\n\n for (const fn of hooks.update) {\n scope.addUpdateHook(fn)\n }\n\n let subtreeCleanup: Cleanup = noop\n try {\n subtreeCleanup = output != null ? mountChild(output, parent, anchor) : noop\n } catch (err) {\n _mountingStack.pop()\n scope.stop()\n const handled = propagateError(err, hooks) || dispatchToErrorBoundary(err)\n if (!handled)\n reportError({\n component: componentName,\n phase: \"render\",\n error: err,\n timestamp: Date.now(),\n props: vnode.props as Record<string, unknown>,\n })\n return noop\n }\n\n _mountingStack.pop()\n\n const firstEl = parent instanceof Element ? parent.firstElementChild : null\n registerComponent(compId, componentName, firstEl, parentId)\n\n // Fire onMount hooks inline — effects created inside are tracked by the scope\n const mountCleanups: Cleanup[] = []\n for (const fn of hooks.mount) {\n try {\n let cleanup: (() => void) | undefined\n scope.runInScope(() => {\n cleanup = fn()\n })\n if (cleanup) mountCleanups.push(cleanup)\n } catch (err) {\n console.error(`[Pyreon] Error in onMount hook of <${componentName}>:`, err)\n reportError({ component: componentName, phase: \"mount\", error: err, timestamp: Date.now() })\n }\n }\n\n return () => {\n unregisterComponent(compId)\n scope.stop()\n subtreeCleanup()\n for (const fn of hooks.unmount) {\n try {\n fn()\n } catch (err) {\n console.error(`[Pyreon] Error in onUnmount hook of <${componentName}>:`, err)\n reportError({\n component: componentName,\n phase: \"unmount\",\n error: err,\n timestamp: Date.now(),\n })\n }\n }\n for (const fn of mountCleanups) fn()\n }\n}\n\n// ─── Children ────────────────────────────────────────────────────────────────\n\nfunction mountChildren(children: VNodeChild[], parent: Node, anchor: Node | null): Cleanup {\n if (children.length === 0) return noop\n\n // 1-child fast path\n if (children.length === 1) {\n const c = children[0] as VNodeChild\n if (c !== undefined) {\n if (anchor === null && (typeof c === \"string\" || typeof c === \"number\")) {\n ;(parent as HTMLElement).textContent = String(c)\n return noop\n }\n return mountChild(c, parent, anchor)\n }\n }\n\n // 2-child fast path — avoids .map() allocation (covers <tr><td/><td/></tr>)\n if (children.length === 2) {\n const c0 = children[0] as VNodeChild\n const c1 = children[1] as VNodeChild\n if (c0 !== undefined && c1 !== undefined) {\n const d0 = mountChild(c0, parent, anchor)\n const d1 = mountChild(c1, parent, anchor)\n if (d0 === noop && d1 === noop) return noop\n if (d0 === noop) return d1\n if (d1 === noop) return d0\n return () => {\n d0()\n d1()\n }\n }\n }\n\n const cleanups = children.map((c) => mountChild(c, parent, anchor))\n return () => {\n for (const fn of cleanups) fn()\n }\n}\n\n// ─── Keyed array detection ────────────────────────────────────────────────────\n\n/** Returns true if value is a non-empty array of VNodes that all carry keys. */\nfunction isKeyedArray(value: unknown): value is VNode[] {\n if (!Array.isArray(value) || value.length === 0) return false\n return value.every(\n (v) =>\n v !== null &&\n typeof v === \"object\" &&\n !Array.isArray(v) &&\n (v as VNode).key !== null &&\n (v as VNode).key !== undefined,\n )\n}\n","/**\n * SSR Hydration — \"walk-and-claim\" strategy.\n *\n * The server renders plain HTML (no special markers needed). On the client,\n * hydrateRoot walks the VNode tree in parallel with the live DOM tree and:\n *\n * - Static elements → matched by tag position, props attached (events + reactive effects)\n * - Static text → existing text node reused\n * - Reactive text → existing text node found, reactive effect attached to .data\n * - Reactive blocks → comment marker inserted, mountReactive takes over\n * - Components → component fn called, output VNode matched against DOM subtree\n * - For lists → full remount (can't map keys to DOM without SSR markers)\n * - Fragment → transparent, children matched directly\n * - Portal → always remounts into target\n *\n * Falls back to mountChild() whenever DOM structure doesn't match the VNode.\n */\n\nimport type { ComponentFn, Ref, VNode, VNodeChild } from \"@pyreon/core\"\nimport {\n dispatchToErrorBoundary,\n ForSymbol,\n Fragment,\n PortalSymbol,\n reportError,\n runWithHooks,\n} from \"@pyreon/core\"\nimport { effectScope, renderEffect, runUntracked, setCurrentScope } from \"@pyreon/reactivity\"\nimport { setupDelegation } from \"./delegate\"\nimport { warnHydrationMismatch } from \"./hydration-debug\"\nimport { mountChild } from \"./mount\"\nimport { mountReactive } from \"./nodes\"\nimport { applyProps } from \"./props\"\n\ntype Cleanup = () => void\nconst noop: Cleanup = () => {\n /* noop */\n}\n\n// ─── DOM cursor helpers ───────────────────────────────────────────────────────\n\n/** Skip comment and whitespace-only text nodes, return first \"real\" node */\nfunction firstReal(initialNode: ChildNode | null): ChildNode | null {\n let node = initialNode\n while (node) {\n if (node.nodeType === Node.COMMENT_NODE) {\n node = node.nextSibling\n continue\n }\n if (node.nodeType === Node.TEXT_NODE && isWhitespaceOnly((node as Text).data)) {\n node = node.nextSibling\n continue\n }\n return node\n }\n return null\n}\n\n/** Check if a string is whitespace-only without allocating a trimmed copy. */\nfunction isWhitespaceOnly(s: string): boolean {\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i)\n // space, tab, newline, carriage return, form feed\n if (c !== 32 && c !== 9 && c !== 10 && c !== 13 && c !== 12) return false\n }\n return true\n}\n\n/** Advance past a node, skipping whitespace-only text and comments */\nfunction nextReal(node: ChildNode): ChildNode | null {\n return firstReal(node.nextSibling)\n}\n\n// ─── Core recursive walker ────────────────────────────────────────────────────\n\n/**\n * Hydrate a single VNodeChild against the DOM subtree starting at `domNode`.\n * Returns [cleanup, nextDomSibling].\n */\n/** Insert a comment marker before domNode (or append if domNode is null). */\nfunction insertMarker(parent: Node, domNode: ChildNode | null, text: string): Comment {\n const marker = document.createComment(text)\n if (domNode) {\n parent.insertBefore(marker, domNode)\n } else {\n parent.appendChild(marker)\n }\n return marker\n}\n\n/** Hydrate a reactive accessor (function child). */\nfunction hydrateReactiveChild(\n child: () => VNodeChild,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path: string,\n): [Cleanup, ChildNode | null] {\n const initial = runUntracked(child)\n\n if (initial == null || initial === false) {\n const marker = insertMarker(parent, domNode, \"pyreon\")\n const cleanup = mountReactive(child, parent, marker, mountChild)\n return [cleanup, domNode]\n }\n\n if (typeof initial === \"string\" || typeof initial === \"number\" || typeof initial === \"boolean\") {\n return hydrateReactiveText(\n child as () => string | number | boolean | null | undefined,\n domNode,\n parent,\n anchor,\n path,\n )\n }\n\n const marker = insertMarker(parent, domNode, \"pyreon\")\n const cleanup = mountReactive(child, parent, marker, mountChild)\n const next = domNode ? nextReal(domNode) : null\n return [cleanup, next]\n}\n\n/** Hydrate a reactive text binding against an existing text node. */\nfunction hydrateReactiveText(\n child: () => string | number | boolean | null | undefined,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path: string,\n): [Cleanup, ChildNode | null] {\n if (domNode?.nodeType === Node.TEXT_NODE) {\n const textNode = domNode as Text\n const dispose = renderEffect(() => {\n const v = child()\n textNode.data = v == null ? \"\" : String(v)\n })\n return [dispose, nextReal(domNode)]\n }\n warnHydrationMismatch(\"text\", \"TextNode\", domNode?.nodeType ?? \"null\", `${path} > reactive`)\n const cleanup = mountChild(child, parent, anchor)\n return [cleanup, domNode]\n}\n\n/** Hydrate a VNode (fragment, For, Portal, component, element). */\nfunction hydrateVNode(\n vnode: VNode,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path: string,\n): [Cleanup, ChildNode | null] {\n if (vnode.type === Fragment) {\n return hydrateChildren(vnode.children, domNode, parent, anchor, path)\n }\n\n if (vnode.type === ForSymbol) {\n const marker = insertMarker(parent, domNode, \"pyreon-for\")\n const cleanup = mountChild(vnode, parent, marker)\n return [cleanup, null]\n }\n\n if (vnode.type === PortalSymbol) {\n const cleanup = mountChild(vnode, parent, anchor)\n return [cleanup, domNode]\n }\n\n if (typeof vnode.type === \"function\") {\n return hydrateComponent(vnode, domNode, parent, anchor, path)\n }\n\n if (typeof vnode.type === \"string\") {\n return hydrateElement(vnode, domNode, parent, anchor, path)\n }\n\n return [noop, domNode]\n}\n\nfunction hydrateChild(\n child: VNodeChild | VNodeChild[],\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n if (Array.isArray(child)) {\n const cleanups: Cleanup[] = []\n let cursor = domNode\n for (const c of child) {\n const [cleanup, next] = hydrateChild(c, cursor, parent, anchor, path)\n cleanups.push(cleanup)\n cursor = next\n }\n return [\n () => {\n for (const c of cleanups) c()\n },\n cursor,\n ]\n }\n\n if (child == null || child === false) return [noop, domNode]\n\n if (typeof child === \"function\") {\n return hydrateReactiveChild(child as () => VNodeChild, domNode, parent, anchor, path)\n }\n\n if (typeof child === \"string\" || typeof child === \"number\") {\n if (domNode?.nodeType === Node.TEXT_NODE) {\n return [() => (domNode as Text).remove(), nextReal(domNode)]\n }\n warnHydrationMismatch(\"text\", \"TextNode\", domNode?.nodeType ?? \"null\", `${path} > text`)\n const cleanup = mountChild(child, parent, anchor)\n return [cleanup, domNode]\n }\n\n return hydrateVNode(child as VNode, domNode, parent, anchor, path)\n}\n\n// ─── Element hydration ────────────────────────────────────────────────────────\n\nfunction hydrateElement(\n vnode: VNode,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n const elPath = `${path} > ${vnode.type as string}`\n\n // Check if existing DOM node matches\n if (\n domNode?.nodeType === Node.ELEMENT_NODE &&\n (domNode as Element).tagName.toLowerCase() === vnode.type\n ) {\n const el = domNode as Element\n const cleanups: Cleanup[] = []\n\n // Attach props (events + reactive effects) — don't set static attrs (SSR already did)\n const propCleanup = applyProps(el, vnode.props)\n if (propCleanup) cleanups.push(propCleanup)\n\n // Hydrate children\n const firstChild = firstReal(el.firstChild as ChildNode | null)\n const [childCleanup] = hydrateChildren(vnode.children, firstChild, el, null, elPath)\n cleanups.push(childCleanup)\n\n // Set ref\n const ref = vnode.props.ref as Ref<Element> | ((el: Element) => void) | undefined\n if (ref) {\n if (typeof ref === \"function\") ref(el)\n else ref.current = el\n }\n\n const cleanup = () => {\n if (ref && typeof ref === \"object\") ref.current = null\n for (const c of cleanups) c()\n el.remove()\n }\n\n return [cleanup, nextReal(domNode)]\n }\n\n // Mismatch — fall back to fresh mount\n const actual =\n domNode?.nodeType === Node.ELEMENT_NODE\n ? (domNode as Element).tagName.toLowerCase()\n : (domNode?.nodeType ?? \"null\")\n warnHydrationMismatch(\"tag\", vnode.type, actual, elPath)\n const cleanup = mountChild(vnode, parent, anchor)\n return [cleanup, domNode]\n}\n\n// ─── Children hydration ───────────────────────────────────────────────────────\n\nfunction hydrateChildren(\n children: VNodeChild[],\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n if (children.length === 0) return [noop, domNode]\n\n // Single-child fast path — avoids cleanups array allocation\n if (children.length === 1) {\n return hydrateChild(children[0] as VNodeChild, domNode, parent, anchor, path)\n }\n\n const cleanups: Cleanup[] = []\n let cursor = domNode\n for (const child of children) {\n const [cleanup, next] = hydrateChild(child, cursor, parent, anchor, path)\n cleanups.push(cleanup)\n cursor = next\n }\n return [\n () => {\n for (const c of cleanups) c()\n },\n cursor,\n ]\n}\n\n// ─── Component hydration ──────────────────────────────────────────────────────\n\nfunction hydrateComponent(\n vnode: VNode,\n domNode: ChildNode | null,\n parent: Node,\n anchor: Node | null,\n path = \"root\",\n): [Cleanup, ChildNode | null] {\n const scope = effectScope()\n setCurrentScope(scope)\n\n let subtreeCleanup: Cleanup = noop\n const mountCleanups: Cleanup[] = []\n let nextDom: ChildNode | null = domNode\n\n // Function.name is always a string per spec; || handles empty string, avoids uncoverable ?? branch\n const componentName = ((vnode.type as ComponentFn).name || \"Anonymous\") as string\n const mergedProps =\n vnode.children.length > 0 && (vnode.props as Record<string, unknown>).children === undefined\n ? {\n ...vnode.props,\n children: vnode.children.length === 1 ? vnode.children[0] : vnode.children,\n }\n : vnode.props\n\n let result: ReturnType<typeof runWithHooks>\n try {\n result = runWithHooks(vnode.type as ComponentFn, mergedProps)\n } catch (err) {\n setCurrentScope(null)\n scope.stop()\n\n console.error(`[Pyreon] Error hydrating component <${componentName}>:`, err)\n reportError({\n component: componentName,\n phase: \"setup\",\n error: err,\n timestamp: Date.now(),\n props: vnode.props as Record<string, unknown>,\n })\n dispatchToErrorBoundary(err)\n return [noop, domNode]\n }\n setCurrentScope(null)\n\n const { vnode: output, hooks } = result\n\n // Register onUpdate hooks with the scope\n for (const fn of hooks.update) {\n scope.addUpdateHook(fn)\n }\n\n if (output != null) {\n const [childCleanup, next] = hydrateChild(output, domNode, parent, anchor, path)\n subtreeCleanup = childCleanup\n nextDom = next\n }\n\n // Fire onMount hooks; effects created inside are tracked by the scope via runInScope\n for (const fn of hooks.mount) {\n try {\n let c: (() => void) | undefined\n scope.runInScope(() => {\n c = fn()\n })\n if (c) mountCleanups.push(c)\n } catch (err) {\n reportError({ component: componentName, phase: \"mount\", error: err, timestamp: Date.now() })\n }\n }\n\n const cleanup: Cleanup = () => {\n scope.stop()\n subtreeCleanup()\n for (const fn of hooks.unmount) fn()\n for (const fn of mountCleanups) fn()\n }\n\n return [cleanup, nextDom]\n}\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Hydrate a server-rendered container with a Pyreon VNode tree.\n *\n * Reuses existing DOM elements for static structure, attaches event listeners\n * and reactive effects without re-rendering. Falls back to fresh mount for\n * dynamic content (reactive conditionals, For lists).\n *\n * @example\n * // Server:\n * const html = await renderToString(h(App, null))\n *\n * // Client:\n * const unmount = hydrateRoot(document.getElementById(\"app\")!, h(App, null))\n */\nexport function hydrateRoot(container: Element, vnode: VNodeChild): () => void {\n setupDelegation(container)\n const firstChild = firstReal(container.firstChild as ChildNode | null)\n const [cleanup] = hydrateChild(vnode, firstChild, container, null)\n return cleanup\n}\n","import type { Props, VNodeChild } from \"@pyreon/core\"\nimport { createRef, h, onMount } from \"@pyreon/core\"\nimport { effect } from \"@pyreon/reactivity\"\nimport { mountChild } from \"./mount\"\n\nexport interface KeepAliveProps extends Props {\n /**\n * Accessor that returns true when this slot's children should be visible.\n * When false, children are CSS-hidden but remain mounted — effects and\n * signals stay alive.\n * Defaults to true (always visible / always mounted).\n */\n active?: () => boolean\n children?: VNodeChild\n}\n\n/**\n * KeepAlive — mounts its children once and keeps them alive even when hidden.\n *\n * Unlike conditional rendering (which destroys and recreates component state),\n * KeepAlive CSS-hides the children while preserving all reactive state,\n * scroll position, form values, and in-flight async operations.\n *\n * Children are mounted imperatively on first activation and are never unmounted\n * while the KeepAlive itself is mounted.\n *\n * Multi-slot pattern (one KeepAlive per route):\n * @example\n * h(Fragment, null, [\n * h(KeepAlive, { active: () => route() === \"/a\" }, h(RouteA, null)),\n * h(KeepAlive, { active: () => route() === \"/b\" }, h(RouteB, null)),\n * ])\n *\n * With JSX:\n * @example\n * <>\n * <KeepAlive active={() => route() === \"/a\"}><RouteA /></KeepAlive>\n * <KeepAlive active={() => route() === \"/b\"}><RouteB /></KeepAlive>\n * </>\n */\nexport function KeepAlive(props: KeepAliveProps): VNodeChild {\n const containerRef = createRef<HTMLElement>()\n let childCleanup: (() => void) | null = null\n let childMounted = false\n\n onMount(() => {\n const container = containerRef.current as HTMLElement\n\n const e = effect(() => {\n const isActive = props.active?.() ?? true\n\n if (!childMounted) {\n // Mount children into the container div exactly once\n childCleanup = mountChild(props.children ?? null, container, null)\n childMounted = true\n }\n\n // Show/hide without unmounting — state is fully preserved\n container.style.display = isActive ? \"\" : \"none\"\n })\n\n return () => {\n e.dispose()\n childCleanup?.()\n }\n })\n\n // `display: contents` makes the wrapper transparent to layout\n // (children appear as if directly in the parent flow)\n return h(\"div\", { ref: containerRef, style: \"display: contents\" })\n}\n","import type { NativeItem } from \"@pyreon/core\"\n\n/**\n * Creates a row/item factory backed by HTML template cloning.\n *\n * - The HTML string is parsed exactly once via <template>.innerHTML.\n * - Each call to the returned factory clones the root element via\n * cloneNode(true) — ~5-10x faster than createElement + setAttribute.\n * - `bind` receives the cloned element and the item; it should wire up\n * reactive effects and return a cleanup function.\n * - Returns a NativeItem directly (no VNode wrapper) — saves 2 allocations\n * per row vs the old VNode + props-object + children-array approach.\n *\n * @example\n * const rowTemplate = createTemplate<Row>(\n * \"<tr><td></td><td></td></tr>\",\n * (el, row) => {\n * const td1 = el.firstChild as HTMLElement\n * const td2 = td1.nextSibling as HTMLElement\n * td1.textContent = String(row.id)\n * const text = td2.firstChild as Text\n * text.data = row.label()\n * const unsub = row.label.subscribe(() => { text.data = row.label() })\n * return unsub\n * }\n * )\n */\nexport function createTemplate<T>(\n html: string,\n bind: (el: HTMLElement, item: T) => (() => void) | null,\n): (item: T) => NativeItem {\n const tmpl = document.createElement(\"template\")\n tmpl.innerHTML = html\n const proto = tmpl.content.firstElementChild as HTMLElement\n\n return (item: T): NativeItem => {\n const el = proto.cloneNode(true) as HTMLElement\n const cleanup = bind(el, item)\n return { __isNative: true, el, cleanup }\n }\n}\n\n// ─── Direct text binding (bypasses effect system) ────────────────────────────\n\n/**\n * Compiler-emitted direct text binding for single-signal text nodes.\n *\n * When the compiler detects `{signal()}` as the only reactive expression\n * in a text binding, it emits `_bindText(signal, textNode)` instead of\n * `_bind(() => { textNode.data = signal() })`.\n *\n * This bypasses the effect system entirely:\n * - No deps array allocation\n * - No withTracking / setDepsCollector overhead\n * - No `run` closure\n * - Signal.subscribe is used directly (O(1) subscribe + unsubscribe)\n *\n * @param source - A signal (anything with `._v` and `.direct`)\n * @param node - The Text node to update\n */\nexport function _bindText(\n source: { _v: unknown; direct: (fn: () => void) => () => void },\n node: Text,\n): () => void {\n const update = () => {\n const v = source._v\n node.data = v == null || v === false ? \"\" : String(v as string | number)\n }\n update()\n return source.direct(update)\n}\n\n// ─── Direct signal binding (bypasses effect system) ──────────────────────────\n\n/**\n * Compiler-emitted direct binding for single-signal reactive expressions.\n *\n * Like _bindText but for arbitrary DOM updates (attributes, className, style).\n * When the compiler detects that a reactive expression depends on exactly one\n * signal call, it emits `_bindDirect(signal, updater)` instead of\n * `_bind(() => { updater() })`.\n *\n * Uses signal.direct() for zero-overhead registration:\n * - Flat array instead of Set (no hashing)\n * - Index-based disposal (no Set.delete)\n * - No deps array, no withTracking, no run closure\n *\n * @param source - A signal (anything with `._v` and `.direct`)\n * @param updater - Function that reads `source._v` and applies the DOM update\n */\nexport function _bindDirect(\n source: { _v: unknown; direct: (fn: () => void) => () => void },\n updater: (value: unknown) => void,\n): () => void {\n updater(source._v)\n return source.direct(() => updater(source._v))\n}\n\n// ─── Compiler-facing template API ─────────────────────────────────────────────\n\n// Cache parsed <template> elements by HTML string — parse once, clone many.\nconst _tplCache = new Map<string, HTMLTemplateElement>()\n\n/**\n * Compiler-emitted template instantiation.\n *\n * Parses `html` into a <template> element once (cached), then cloneNode(true)\n * for each call. The `bind` function wires up dynamic attributes, text content,\n * and event listeners on the cloned element tree. Returns a NativeItem that\n * mountChild can insert directly — no VNode allocation.\n *\n * This is the runtime half of the compiler's template optimisation. The compiler\n * detects static JSX element trees and emits `_tpl(html, bindFn)` instead of\n * nested `h()` calls. Benefits:\n * - cloneNode(true) is ~5-10x faster than sequential createElement + setAttribute\n * - Zero VNode / props-object / children-array allocations per instance\n * - Static attributes are baked into the HTML string (no runtime prop application)\n *\n * @example\n * // Compiler output for: <div class=\"box\"><span>{text()}</span></div>\n * _tpl('<div class=\"box\"><span></span></div>', (__root) => {\n * const __e0 = __root.children[0];\n * const __d0 = _re(() => { __e0.textContent = text(); });\n * return () => { __d0(); };\n * })\n */\nexport function _tpl(html: string, bind: (el: HTMLElement) => (() => void) | null): NativeItem {\n let tpl = _tplCache.get(html)\n if (!tpl) {\n tpl = document.createElement(\"template\")\n tpl.innerHTML = html\n _tplCache.set(html, tpl)\n }\n const el = tpl.content.firstElementChild?.cloneNode(true) as HTMLElement\n const cleanup = bind(el)\n return { __isNative: true, el, cleanup }\n}\n","import type { Props, VNode, VNodeChild } from \"@pyreon/core\"\nimport { createRef, Fragment, h, onUnmount } from \"@pyreon/core\"\nimport { effect, runUntracked, signal } from \"@pyreon/reactivity\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\nexport interface TransitionProps {\n /**\n * CSS class name prefix.\n * \"fade\" → fade-enter-from, fade-enter-active, fade-enter-to, fade-leave-from, …\n * Default: \"pyreon\"\n */\n name?: string\n /** Reactive boolean controlling whether the child is shown. */\n show: () => boolean\n /**\n * If true, runs the enter transition on the initial mount (instead of\n * appearing immediately). Default: false.\n */\n appear?: boolean\n // Individual class name overrides (override the prefix-based defaults)\n enterFrom?: string\n enterActive?: string\n enterTo?: string\n leaveFrom?: string\n leaveActive?: string\n leaveTo?: string\n // Lifecycle callbacks\n onBeforeEnter?: (el: HTMLElement) => void\n onAfterEnter?: (el: HTMLElement) => void\n onBeforeLeave?: (el: HTMLElement) => void\n onAfterLeave?: (el: HTMLElement) => void\n /**\n * The single child element to animate.\n * Must be a direct DOM element VNode (not a component) for class injection to work.\n */\n children?: VNodeChild\n}\n\n/**\n * Transition — adds CSS enter/leave animation classes to a single child element,\n * controlled by the reactive `show` prop.\n *\n * Class lifecycle:\n * Enter: {name}-enter-from → (next frame) → {name}-enter-active + {name}-enter-to → cleanup\n * Leave: {name}-leave-from → (next frame) → {name}-leave-active + {name}-leave-to → unmount\n *\n * The child element stays in the DOM during the leave animation and is removed only\n * after the CSS transition / animation completes.\n *\n * @example\n * const visible = signal(false)\n *\n * h(Transition, { name: \"fade\", show: () => visible() },\n * h(\"div\", { class: \"modal\" }, \"content\")\n * )\n *\n * // CSS:\n * // .fade-enter-from, .fade-leave-to { opacity: 0; }\n * // .fade-enter-active, .fade-leave-active { transition: opacity 300ms ease; }\n */\nexport function Transition(props: TransitionProps): VNodeChild {\n const n = props.name ?? \"pyreon\"\n const cls = {\n ef: props.enterFrom ?? `${n}-enter-from`,\n ea: props.enterActive ?? `${n}-enter-active`,\n et: props.enterTo ?? `${n}-enter-to`,\n lf: props.leaveFrom ?? `${n}-leave-from`,\n la: props.leaveActive ?? `${n}-leave-active`,\n lt: props.leaveTo ?? `${n}-leave-to`,\n }\n\n // Ref injected into the child element so we can apply/remove classes\n const ref = createRef<HTMLElement>()\n const isMounted = signal(runUntracked<boolean>(props.show))\n\n // Cancel an in-progress leave when re-entering before the animation ends\n let pendingLeaveCancel: (() => void) | null = null\n let initialized = false\n\n const applyEnter = (el: HTMLElement) => {\n pendingLeaveCancel?.()\n pendingLeaveCancel = null\n props.onBeforeEnter?.(el)\n el.classList.remove(cls.lf, cls.la, cls.lt)\n el.classList.add(cls.ef, cls.ea)\n requestAnimationFrame(() => {\n el.classList.remove(cls.ef)\n el.classList.add(cls.et)\n const done = () => {\n // Remove both listeners — only one fires, so clean up the other\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.ea, cls.et)\n props.onAfterEnter?.(el)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const applyLeave = (el: HTMLElement) => {\n props.onBeforeLeave?.(el)\n el.classList.remove(cls.ef, cls.ea, cls.et)\n el.classList.add(cls.lf, cls.la)\n requestAnimationFrame(() => {\n el.classList.remove(cls.lf)\n el.classList.add(cls.lt)\n const done = () => {\n // Remove both listeners — only one fires, so clean up the other\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.la, cls.lt)\n pendingLeaveCancel = null\n isMounted.set(false)\n props.onAfterLeave?.(el)\n }\n pendingLeaveCancel = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.lf, cls.la, cls.lt)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const handleVisibilityChange = (visible: boolean) => {\n if (visible) {\n if (!isMounted.peek()) isMounted.set(true)\n queueMicrotask(() => applyEnter(ref.current as HTMLElement))\n return\n }\n if (!isMounted.peek()) return\n const el = ref.current\n if (!el) {\n isMounted.set(false)\n return\n }\n applyLeave(el)\n }\n\n effect(() => {\n const visible = props.show()\n if (!initialized) {\n initialized = true\n if (visible && props.appear) {\n queueMicrotask(() => applyEnter(ref.current as HTMLElement))\n }\n return\n }\n handleVisibilityChange(visible)\n })\n\n onUnmount(() => {\n pendingLeaveCancel?.()\n pendingLeaveCancel = null\n })\n\n // Return a reactive getter. Each call clones the child VNode with our injected ref\n // so we can read / write classes on the underlying DOM element.\n const rawChild = props.children\n // Return an empty Fragment (not null) when unmounted so mountChild uses\n // mountReactive instead of the null/primitive text-node fast-path, which\n // cannot later be swapped for a VNode when the element enters.\n const emptyFragment = h(Fragment, null)\n return (() => {\n if (!isMounted()) return emptyFragment\n if (!rawChild || typeof rawChild !== \"object\" || Array.isArray(rawChild)) {\n return rawChild ?? null\n }\n const vnode = rawChild as VNode\n // Only inject ref into DOM element children — component children need ref forwarding\n if (typeof vnode.type !== \"string\") {\n if (__DEV__) {\n console.warn(\n \"[Pyreon] Transition child is a component. Wrap it in a DOM element for enter/leave animations to work.\",\n )\n }\n return vnode\n }\n return { ...vnode, props: { ...vnode.props, ref } as Props }\n }) as unknown as VNode\n}\n","import type { Props, VNode, VNodeChild } from \"@pyreon/core\"\nimport { createRef, h, onMount, onUnmount } from \"@pyreon/core\"\nimport { effect, runUntracked, signal } from \"@pyreon/reactivity\"\nimport { mountChild } from \"./mount\"\n\nexport interface TransitionGroupProps<T = unknown> {\n /** Wrapper element tag. Default: \"div\" */\n tag?: string\n /** CSS class prefix. Default: \"pyreon\" */\n name?: string\n /** Animate items on initial mount. Default: false */\n appear?: boolean\n // CSS class overrides\n enterFrom?: string\n enterActive?: string\n enterTo?: string\n leaveFrom?: string\n leaveActive?: string\n leaveTo?: string\n /** Class applied during FLIP move animation. Default: \"{name}-move\" */\n moveClass?: string\n /** Reactive list source */\n items: () => T[]\n /** Stable key extractor */\n keyFn: (item: T, index: number) => string | number\n /**\n * Render a single DOM-element VNode for each item.\n * Must return a VNode whose `type` is a string (e.g. \"div\", \"li\") so\n * the component can inject a ref and read the underlying DOM node.\n */\n render: (item: T, index: number) => VNode\n // Lifecycle callbacks\n onBeforeEnter?: (el: HTMLElement) => void\n onAfterEnter?: (el: HTMLElement) => void\n onBeforeLeave?: (el: HTMLElement) => void\n onAfterLeave?: (el: HTMLElement) => void\n}\n\ntype ItemEntry = {\n key: string | number\n ref: ReturnType<typeof createRef<HTMLElement>>\n cleanup: () => void\n leaving: boolean\n}\n\n/**\n * TransitionGroup — animates a keyed reactive list with CSS enter/leave and\n * FLIP move animations.\n *\n * Class lifecycle:\n * Enter: {name}-enter-from → {name}-enter-active + {name}-enter-to → cleanup\n * Leave: {name}-leave-from → {name}-leave-active + {name}-leave-to → item removed\n * Move: {name}-move (applied when an item shifts position)\n *\n * @example\n * const items = signal([{ id: 1 }, { id: 2 }])\n *\n * h(TransitionGroup, {\n * tag: \"ul\",\n * name: \"list\",\n * items,\n * keyFn: (item) => item.id,\n * render: (item) => h(\"li\", { class: \"item\" }, item.id),\n * })\n *\n * // CSS:\n * // .list-enter-from, .list-leave-to { opacity: 0; transform: translateY(-10px); }\n * // .list-enter-active, .list-leave-active { transition: all 300ms ease; }\n * // .list-move { transition: transform 300ms ease; }\n */\nexport function TransitionGroup<T = unknown>(props: TransitionGroupProps<T>): VNodeChild {\n const tag = props.tag ?? \"div\"\n const n = props.name ?? \"pyreon\"\n const cls = {\n ef: props.enterFrom ?? `${n}-enter-from`,\n ea: props.enterActive ?? `${n}-enter-active`,\n et: props.enterTo ?? `${n}-enter-to`,\n lf: props.leaveFrom ?? `${n}-leave-from`,\n la: props.leaveActive ?? `${n}-leave-active`,\n lt: props.leaveTo ?? `${n}-leave-to`,\n mv: props.moveClass ?? `${n}-move`,\n }\n\n const containerRef = createRef<HTMLElement>()\n const entries = new Map<string | number, ItemEntry>()\n // Gates the effect until the container element is in the DOM\n const ready = signal(false)\n let firstRun = true\n\n const applyEnter = (el: HTMLElement) => {\n props.onBeforeEnter?.(el)\n el.classList.remove(cls.lf, cls.la, cls.lt)\n el.classList.add(cls.ef, cls.ea)\n requestAnimationFrame(() => {\n el.classList.remove(cls.ef)\n el.classList.add(cls.et)\n const done = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.ea, cls.et)\n props.onAfterEnter?.(el)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const applyLeave = (el: HTMLElement, onDone: () => void) => {\n props.onBeforeLeave?.(el)\n el.classList.remove(cls.ef, cls.ea, cls.et)\n el.classList.add(cls.lf, cls.la)\n requestAnimationFrame(() => {\n el.classList.remove(cls.lf)\n el.classList.add(cls.lt)\n const done = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.la, cls.lt)\n props.onAfterLeave?.(el)\n onDone()\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n /** Start leave animation for removed items. */\n const processLeaves = (newKeys: Set<string | number>) => {\n for (const [key, entry] of entries) {\n if (newKeys.has(key) || entry.leaving) continue\n entry.leaving = true\n const el = entry.ref.current\n if (el) {\n applyLeave(el, () => {\n entry.cleanup()\n entries.delete(key)\n })\n } else {\n entry.cleanup()\n entries.delete(key)\n }\n }\n }\n\n /** Mount new items and return the list of newly created entries. */\n const mountNewItems = (items: T[], container: HTMLElement): ItemEntry[] => {\n const newEntries: ItemEntry[] = []\n for (let i = 0; i < items.length; i++) {\n const item = items[i] as T\n const key = props.keyFn(item, i)\n if (entries.has(key)) continue\n const itemRef = createRef<HTMLElement>()\n const rawVNode = runUntracked(() => props.render(item, i))\n const vnode: VNode =\n typeof rawVNode.type === \"string\"\n ? { ...rawVNode, props: { ...rawVNode.props, ref: itemRef } as Props }\n : rawVNode\n const cleanup = mountChild(vnode, container, null)\n const entry: ItemEntry = { key, ref: itemRef, cleanup, leaving: false }\n entries.set(key, entry)\n newEntries.push(entry)\n }\n return newEntries\n }\n\n const startMoveAnimation = (el: HTMLElement) => {\n requestAnimationFrame(() => {\n el.classList.add(cls.mv)\n el.style.transform = \"\"\n el.style.transition = \"\"\n const done = () => {\n el.removeEventListener(\"transitionend\", done)\n el.removeEventListener(\"animationend\", done)\n el.classList.remove(cls.mv)\n }\n el.addEventListener(\"transitionend\", done, { once: true })\n el.addEventListener(\"animationend\", done, { once: true })\n })\n }\n\n const flipEntry = (entry: ItemEntry, oldPos: DOMRect) => {\n if (!entry.ref.current) return\n const newPos = entry.ref.current.getBoundingClientRect()\n const dx = oldPos.left - newPos.left\n const dy = oldPos.top - newPos.top\n if (Math.abs(dx) < 1 && Math.abs(dy) < 1) return\n const el = entry.ref.current\n el.style.transform = `translate(${dx}px, ${dy}px)`\n el.style.transition = \"none\"\n startMoveAnimation(el)\n }\n\n /** Apply FLIP move animations for items that shifted position. */\n const applyFlipMoves = (oldPositions: Map<string | number, DOMRect>) => {\n requestAnimationFrame(() => {\n for (const [key, entry] of entries) {\n if (entry.leaving) continue\n const oldPos = oldPositions.get(key)\n if (!oldPos) continue\n flipEntry(entry, oldPos)\n }\n })\n }\n\n const recordOldPositions = (): Map<string | number, DOMRect> => {\n const oldPositions = new Map<string | number, DOMRect>()\n for (const [key, entry] of entries) {\n if (!entry.leaving && entry.ref.current) {\n oldPositions.set(key, entry.ref.current.getBoundingClientRect())\n }\n }\n return oldPositions\n }\n\n const reorderEntries = (items: T[], container: HTMLElement) => {\n for (let i = 0; i < items.length; i++) {\n const key = props.keyFn(items[i] as T, i)\n const entry = entries.get(key)\n if (!entry || entry.leaving || !entry.ref.current) continue\n container.appendChild(entry.ref.current)\n }\n }\n\n const animateNewEntries = (newEntries: ItemEntry[]) => {\n for (const entry of newEntries) {\n queueMicrotask(() => {\n if (entry.ref.current) applyEnter(entry.ref.current)\n })\n }\n }\n\n const e = effect(() => {\n if (!ready()) return\n const container = containerRef.current\n if (!container) return\n\n const items = props.items()\n const newKeys = new Set(items.map((item, i) => props.keyFn(item, i)))\n const isFirst = firstRun\n firstRun = false\n\n const oldPositions = recordOldPositions()\n processLeaves(newKeys)\n const newEntries = mountNewItems(items, container)\n reorderEntries(items, container)\n\n if (!isFirst || props.appear) animateNewEntries(newEntries)\n if (!isFirst && oldPositions.size > 0) applyFlipMoves(oldPositions)\n })\n\n // Fire the effect once the container is in the DOM\n onMount(() => {\n ready.set(true)\n return undefined\n })\n\n onUnmount(() => {\n e.dispose()\n for (const entry of entries.values()) entry.cleanup()\n entries.clear()\n })\n\n return h(tag, { ref: containerRef })\n}\n","// @pyreon/runtime-dom — surgical signal-to-DOM renderer (no virtual DOM)\n\nexport { DELEGATED_EVENTS, delegatedPropName, setupDelegation } from \"./delegate\"\nexport type { DevtoolsComponentEntry, PyreonDevtools } from \"./devtools\"\nexport { hydrateRoot } from \"./hydrate\"\nexport { disableHydrationWarnings, enableHydrationWarnings } from \"./hydration-debug\"\nexport type { KeepAliveProps } from \"./keep-alive\"\nexport { KeepAlive } from \"./keep-alive\"\nexport { mountChild } from \"./mount\"\nexport type { Directive, SanitizeFn } from \"./props\"\nexport { applyProp, applyProps, sanitizeHtml, setSanitizer } from \"./props\"\nexport { _bindDirect, _bindText, _tpl, createTemplate } from \"./template\"\nexport type { TransitionProps } from \"./transition\"\nexport { Transition } from \"./transition\"\nexport type { TransitionGroupProps } from \"./transition-group\"\nexport { TransitionGroup } from \"./transition-group\"\n\nimport type { VNodeChild } from \"@pyreon/core\"\nimport { setupDelegation } from \"./delegate\"\nimport { installDevTools } from \"./devtools\"\nimport { mountChild } from \"./mount\"\n\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\"\n\n/**\n * Mount a VNode tree into a container element.\n * Clears the container first, then mounts the given child.\n * Returns an `unmount` function that removes everything and disposes effects.\n *\n * @example\n * const unmount = mount(h(\"div\", null, \"Hello Pyreon\"), document.getElementById(\"app\")!)\n */\nexport function mount(root: VNodeChild, container: Element): () => void {\n if (__DEV__ && container == null) {\n throw new Error(\n '[pyreon] mount() called with a null/undefined container. Make sure the element exists in the DOM, e.g. document.getElementById(\"app\")',\n )\n }\n installDevTools()\n setupDelegation(container)\n container.innerHTML = \"\"\n return mountChild(root, container, null)\n}\n\n/** Alias for `mount` */\nexport const render = mount\n"],"mappings":"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"}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1037,7 +1037,7 @@ function mountElement(vnode, parent, anchor) {
|
|
|
1037
1037
|
_elementDepth--;
|
|
1038
1038
|
parent.insertBefore(el, anchor);
|
|
1039
1039
|
const ref = props.ref;
|
|
1040
|
-
if (ref
|
|
1040
|
+
if (ref) if (typeof ref === "function") ref(el);else ref.current = el;
|
|
1041
1041
|
if (!propCleanup && childCleanup === noop$1 && !ref) {
|
|
1042
1042
|
if (_elementDepth > 0) return noop$1;
|
|
1043
1043
|
return () => {
|
|
@@ -1292,7 +1292,7 @@ function hydrateElement(vnode, domNode, parent, anchor, path = "root") {
|
|
|
1292
1292
|
const [childCleanup] = hydrateChildren(vnode.children, firstChild, el, null, elPath);
|
|
1293
1293
|
cleanups.push(childCleanup);
|
|
1294
1294
|
const ref = vnode.props.ref;
|
|
1295
|
-
if (ref
|
|
1295
|
+
if (ref) if (typeof ref === "function") ref(el);else ref.current = el;
|
|
1296
1296
|
const cleanup = () => {
|
|
1297
1297
|
if (ref && typeof ref === "object") ref.current = null;
|
|
1298
1298
|
for (const c of cleanups) c();
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["__DEV__","__DEV__","__DEV__","noop","__DEV__"],"sources":["../../src/delegate.ts","../../src/hydration-debug.ts","../../src/devtools.ts","../../src/nodes.ts","../../src/props.ts","../../src/mount.ts","../../src/hydrate.ts","../../src/keep-alive.ts","../../src/template.ts","../../src/transition.ts","../../src/transition-group.ts","../../src/index.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["__DEV__","__DEV__","__DEV__","noop","__DEV__"],"sources":["../../src/delegate.ts","../../src/hydration-debug.ts","../../src/devtools.ts","../../src/nodes.ts","../../src/props.ts","../../src/mount.ts","../../src/hydrate.ts","../../src/keep-alive.ts","../../src/template.ts","../../src/transition.ts","../../src/transition-group.ts","../../src/index.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index2.d.ts","names":[],"sources":["../../src/delegate.ts","../../src/devtools.ts","../../src/hydrate.ts","../../src/hydration-debug.ts","../../src/keep-alive.ts","../../src/mount.ts","../../src/props.ts","../../src/template.ts","../../src/transition.ts","../../src/transition-group.ts","../../src/index.ts"],"mappings":";;;;;;AAoBA;;;;;AA8BA;;;;;AAWA;;;;cAzCa,gBAAA,EAAgB,GAAA;;;;ACJ7B;iBDkCgB,iBAAA,CAAkB,SAAA;;;;;iBAWlB,eAAA,CAAgB,SAAA,EAAW,OAAA;;;;;;AAzC3C;;;;;AA8BA;;;;;AAWA;;UC7CiB,sBAAA;EACf,EAAA;EACA,IAAA;;EAEA,EAAA,EAAI,OAAA;EACJ,QAAA;EACA,QAAA;AAAA;AAAA,UAGe,cAAA;EAAA,SACN,OAAA;EACT,gBAAA,IAAoB,sBAAA;EACpB,gBAAA,IAAoB,sBAAA;EACpB,SAAA,CAAU,EAAA;EACV,gBAAA,CAAiB,EAAA,GAAK,KAAA,EAAO,sBAAA;EAC7B,kBAAA,CAAmB,EAAA,GAAK,EAAA;EATxB;EAWA,aAAA;EACA,cAAA;AAAA;;;;;;AAlBF;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index2.d.ts","names":[],"sources":["../../src/delegate.ts","../../src/devtools.ts","../../src/hydrate.ts","../../src/hydration-debug.ts","../../src/keep-alive.ts","../../src/mount.ts","../../src/props.ts","../../src/template.ts","../../src/transition.ts","../../src/transition-group.ts","../../src/index.ts"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pyreon/runtime-dom",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "DOM renderer for Pyreon",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"prepublishOnly": "bun run build"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@pyreon/core": "^0.
|
|
43
|
-
"@pyreon/reactivity": "^0.
|
|
42
|
+
"@pyreon/core": "^0.5.1",
|
|
43
|
+
"@pyreon/reactivity": "^0.5.1"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@happy-dom/global-registrator": "^20.8.3",
|
package/src/hydrate.ts
CHANGED
|
@@ -245,8 +245,11 @@ function hydrateElement(
|
|
|
245
245
|
cleanups.push(childCleanup)
|
|
246
246
|
|
|
247
247
|
// Set ref
|
|
248
|
-
const ref = vnode.props.ref as Ref<Element> | undefined
|
|
249
|
-
if (ref
|
|
248
|
+
const ref = vnode.props.ref as Ref<Element> | ((el: Element) => void) | undefined
|
|
249
|
+
if (ref) {
|
|
250
|
+
if (typeof ref === "function") ref(el)
|
|
251
|
+
else ref.current = el
|
|
252
|
+
}
|
|
250
253
|
|
|
251
254
|
const cleanup = () => {
|
|
252
255
|
if (ref && typeof ref === "object") ref.current = null
|
package/src/mount.ts
CHANGED
|
@@ -159,8 +159,11 @@ function mountElement(vnode: VNode, parent: Node, anchor: Node | null): Cleanup
|
|
|
159
159
|
parent.insertBefore(el, anchor)
|
|
160
160
|
|
|
161
161
|
// Populate ref after the element is in the DOM
|
|
162
|
-
const ref = props.ref as Ref<Element> | null | undefined
|
|
163
|
-
if (ref
|
|
162
|
+
const ref = props.ref as Ref<Element> | ((el: Element) => void) | null | undefined
|
|
163
|
+
if (ref) {
|
|
164
|
+
if (typeof ref === "function") ref(el)
|
|
165
|
+
else ref.current = el
|
|
166
|
+
}
|
|
164
167
|
|
|
165
168
|
if (!propCleanup && childCleanup === noop && !ref) {
|
|
166
169
|
if (_elementDepth > 0) return noop
|
package/src/tests/mount.test.ts
CHANGED
|
@@ -205,6 +205,37 @@ describe("mount — refs", () => {
|
|
|
205
205
|
expect(ref.current).toBeNull()
|
|
206
206
|
})
|
|
207
207
|
|
|
208
|
+
test("callback ref is called with element after mount", () => {
|
|
209
|
+
const el = container()
|
|
210
|
+
let refEl: Element | null = null
|
|
211
|
+
mount(
|
|
212
|
+
h("div", {
|
|
213
|
+
ref: (e: Element) => {
|
|
214
|
+
refEl = e
|
|
215
|
+
},
|
|
216
|
+
}),
|
|
217
|
+
el,
|
|
218
|
+
)
|
|
219
|
+
expect(refEl).toBeInstanceOf(HTMLDivElement)
|
|
220
|
+
})
|
|
221
|
+
|
|
222
|
+
test("callback ref element is not nulled on unmount", () => {
|
|
223
|
+
const el = container()
|
|
224
|
+
let refEl: Element | null = null
|
|
225
|
+
const unmount = mount(
|
|
226
|
+
h("div", {
|
|
227
|
+
ref: (e: Element) => {
|
|
228
|
+
refEl = e
|
|
229
|
+
},
|
|
230
|
+
}),
|
|
231
|
+
el,
|
|
232
|
+
)
|
|
233
|
+
expect(refEl).not.toBeNull()
|
|
234
|
+
unmount()
|
|
235
|
+
// Callback refs don't get called with null on cleanup
|
|
236
|
+
expect(refEl).toBeInstanceOf(HTMLDivElement)
|
|
237
|
+
})
|
|
238
|
+
|
|
208
239
|
test("ref is not emitted as an HTML attribute", () => {
|
|
209
240
|
const el = container()
|
|
210
241
|
const ref = createRef<HTMLDivElement>()
|