@askrjs/askr 0.0.45 → 0.0.46

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/dist/benchmark.js CHANGED
@@ -10,8 +10,8 @@ import { BenchmarkTable } from "./bench/components/benchmark-table.js";
10
10
  installRendererBridge();
11
11
  const benchmarkMetadata = {
12
12
  packageName: "@askrjs/askr",
13
- packageVersion: "0.0.45",
14
- buildLabel: "0.0.45-local"
13
+ packageVersion: "0.0.46",
14
+ buildLabel: "0.0.46-local"
15
15
  };
16
16
  function getBenchmarkMetadata() {
17
17
  return { ...benchmarkMetadata };
@@ -1301,11 +1301,12 @@ function isFragmentVNode(node) {
1301
1301
  }
1302
1302
  function normalizeComponentChildren(result) {
1303
1303
  if (result === null || result === void 0 || result === false) return [];
1304
- if (Array.isArray(result)) return result;
1305
- if (isFragmentVNode(result)) {
1306
- const children = result.props?.children ?? result.children ?? [];
1307
- return Array.isArray(children) ? children : [children];
1304
+ if (Array.isArray(result)) {
1305
+ const children = [];
1306
+ for (const child of result) children.push(...normalizeComponentChildren(child));
1307
+ return children;
1308
1308
  }
1309
+ if (isFragmentVNode(result)) return normalizeComponentChildren(result.props?.children ?? result.children ?? []);
1309
1310
  return [result];
1310
1311
  }
1311
1312
  function syncComponentElement(currentDom, node, type, props, parentNamespace, forceChildrenUpdate = false, retainedHostInstances) {
@@ -1973,21 +1974,22 @@ function updateElementChildren(el, children, forceUpdate = false) {
1973
1974
  return;
1974
1975
  }
1975
1976
  if (Array.isArray(children)) {
1976
- if (trySyncScalarChildSequenceInPlace(el, children)) {
1977
+ const normalizedChildren = normalizeComponentChildren(children);
1978
+ if (trySyncScalarChildSequenceInPlace(el, normalizedChildren)) {
1977
1979
  keyedElements.delete(el);
1978
1980
  return;
1979
1981
  }
1980
- if (hasKeyedVNodeChildren(children)) {
1981
- const newKeyMap = reconcileKeyedChildren(el, children, getOrBuildDomKeyMap(el));
1982
+ if (hasKeyedVNodeChildren(normalizedChildren)) {
1983
+ const newKeyMap = reconcileKeyedChildren(el, normalizedChildren, getOrBuildDomKeyMap(el));
1982
1984
  keyedElements.set(el, newKeyMap);
1983
1985
  return;
1984
1986
  }
1985
- if (isBulkTextFastPathEligible(el, children)) {
1986
- performBulkTextReplace(el, children);
1987
+ if (isBulkTextFastPathEligible(el, normalizedChildren)) {
1988
+ performBulkTextReplace(el, normalizedChildren);
1987
1989
  keyedElements.delete(el);
1988
1990
  return;
1989
1991
  }
1990
- updateUnkeyedChildren(el, children, forceUpdate);
1992
+ updateUnkeyedChildren(el, normalizedChildren, forceUpdate);
1991
1993
  return;
1992
1994
  }
1993
1995
  if (_isDOMElement(children)) {
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","names":[],"sources":["../../src/renderer/dom.ts"],"sourcesContent":["import { logger } from '../dev/logger';\nimport { STATIC_CHILDREN } from '../common/jsx';\nimport { isPromiseLike } from '../common/promise';\nimport { ROUTE_ROOT_COMPONENT } from '../common/router-internal';\nimport { getRuntimeEnv } from './env';\nimport type { Props } from '../common/props';\nimport { Fragment } from '../jsx/jsx-runtime';\nimport {\n CONTEXT_FRAME_SYMBOL,\n getVNodeContextFrame,\n markVNodeTreeWithContextFrame,\n withContext,\n getCurrentContextFrame,\n ContextFrame,\n} from '../runtime/context';\nimport {\n createComponentInstance,\n cleanupComponent,\n renderComponentInline,\n mountInstanceInline,\n captureInlineRenderSnapshot,\n getCurrentInstance,\n setCurrentComponentInstance as _setCurrentInstance,\n warnUnusedStateReads,\n type ComponentInstance,\n type ComponentFunction,\n} from '../runtime/component';\nimport {\n createChildScope,\n disposeChildScope,\n rerenderChildScope,\n type ChildScope,\n} from '../runtime/child-scope';\nimport {\n elementListeners,\n removeAllListeners,\n teardownNodeSubtree,\n elementReactivePropsCleanup,\n REACTIVE_CHILDREN_KEY,\n removeElementListeners,\n removeElementReactiveProps,\n type ReactivePropCleanupEntry,\n} from './cleanup';\nimport { incDevCounter, getDevValue } from '../runtime/dev-namespace';\nimport { _isDOMElement, type DOMElement, type VNode } from './types';\nimport { __FOR_BOUNDARY__, __ERROR_BOUNDARY__ } from '../common/vnode';\nimport {\n evaluateForState,\n clearForDomUpdateState,\n isBenchMetricScopeActive,\n recordBenchCounter,\n recordBenchEvent,\n} from '../runtime/for';\nimport {\n clearCaseDomUpdateState,\n clearShowDomUpdateState,\n evaluateCaseState,\n evaluateShowState,\n type ControlBoundaryState,\n} from '../runtime/control';\nimport { keyedElements } from './keyed';\nimport { commitForStateBoundaryChildren } from './for-commit';\nimport {\n getEventListenerKey,\n getEventListenerOptions,\n parseEventName,\n parseEventProp,\n createMutableWrappedHandler,\n getRenderedAttributeName,\n isSkippedProp,\n removeRenderedAttribute,\n readElementClassName,\n setRenderedAttribute,\n writeElementClassName,\n tagNamesEqualIgnoreCase,\n extractKey,\n} from './utils';\nimport { reconcileKeyedChildren } from './reconcile';\nimport {\n isBulkTextFastPathEligible,\n performBulkPositionalKeyedTextUpdate,\n performBulkTextReplace,\n} from './children';\nimport type { ReadableSource } from '../runtime/readable';\nimport { incrementPerfMetric } from '../runtime/perf-metrics';\nimport { globalScheduler } from '../runtime/scheduler';\nimport {\n createFineGrainedEffect,\n markFineGrainedEffectsDirtySource,\n type FineGrainedEffectHandle,\n} from '../runtime/effect';\nimport {\n createBoundaryReset,\n reportBoundaryError,\n resolveErrorBoundaryFallback,\n type ErrorBoundaryProps,\n} from '../components/error-boundary';\nimport {\n isEventDelegationEnabled,\n addDelegatedListener,\n getDelegatedHandlerForElement,\n getDelegatedHandlersForElement,\n updateDelegatedListener,\n removeDelegatedListener,\n isDelegatedEvent,\n} from '../runtime/events';\n\nexport {\n isBulkTextFastPathEligible,\n performBulkPositionalKeyedTextUpdate,\n performBulkTextReplace,\n};\n\ntype ElementWithContext = DOMElement & {\n [CONTEXT_FRAME_SYMBOL]?: ContextFrame;\n [ROUTE_ROOT_COMPONENT]?: boolean;\n __instance?: ComponentInstance;\n};\n\ntype InstanceHostElement = Element & {\n __ASKR_INSTANCE?: ComponentInstance;\n __ASKR_INSTANCES?: ComponentInstance[];\n __ASKR_WRAPPER_HOST?: boolean;\n};\n\ninterface ReactivePropDescriptor {\n el: Element;\n propName: string;\n propFn: () => unknown;\n tagName: string;\n lastClassTokens: string[] | null;\n}\n\ntype StyleEntries = Map<string, string>;\n\ntype ReactiveScalarChildSourceSlot =\n | { kind: 'static'; value: string }\n | { kind: 'dynamic'; compute: () => unknown };\n\ntype ReactiveScalarChildSource = ReactiveScalarChildSourceSlot[];\n\ntype ReactiveChildBoundarySequenceSource = Array<\n | { kind: 'static-text'; value: string }\n | { kind: 'static-node'; value: VNode }\n | { kind: 'dynamic'; compute: () => VNode }\n>;\n\ntype ReactiveChildBoundarySequenceEntry =\n | { kind: 'static'; nodes: Node[] }\n | { kind: 'dynamic'; scope: ChildScope; nodes: Node[] };\n\nconst reactivePropRegistry = new Set<ReactivePropDescriptor>();\nconst controlBoundaryOwners = new WeakMap<Element, ControlBoundaryState>();\n\nfunction isRouteRootComponentVNode(node: unknown): boolean {\n return (\n typeof node === 'object' &&\n node !== null &&\n (node as { [ROUTE_ROOT_COMPONENT]?: boolean })[ROUTE_ROOT_COMPONENT] ===\n true\n );\n}\n\nfunction inheritComponentCleanupStrict(instance: ComponentInstance): void {\n const owner = getCurrentInstance();\n if (owner) {\n instance.cleanupStrict = owner.cleanupStrict;\n }\n}\n\ntype ControlBoundaryCommitOwnerState = ControlBoundaryState & {\n _commitOwner?: Element | null;\n};\nlet reactiveChildScopeId = 0;\n\nfunction collectReactiveScalarSequenceValue(\n value: unknown,\n normalized: string[]\n): boolean {\n if (isFragmentVNode(value)) {\n const fragmentChildren = value.props?.children ?? value.children;\n return collectReactiveScalarSequenceValue(fragmentChildren, normalized);\n }\n\n if (Array.isArray(value)) {\n for (const child of value) {\n if (!collectReactiveScalarSequenceValue(child, normalized)) {\n return false;\n }\n }\n return true;\n }\n\n if (value === null || value === undefined || value === false) {\n return true;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n normalized.push(String(value));\n return true;\n }\n\n return false;\n}\n\nfunction collectReactiveScalarChildSource(\n children: unknown,\n slots: ReactiveScalarChildSource,\n state: { hasDynamic: boolean }\n): boolean {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return collectReactiveScalarChildSource(fragmentChildren, slots, state);\n }\n\n if (Array.isArray(children)) {\n for (const child of children) {\n if (!collectReactiveScalarChildSource(child, slots, state)) {\n return false;\n }\n }\n return true;\n }\n\n if (children === null || children === undefined || children === false) {\n return true;\n }\n\n if (typeof children === 'function') {\n slots.push({ kind: 'dynamic', compute: children as () => unknown });\n state.hasDynamic = true;\n return true;\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n slots.push({ kind: 'static', value: String(children) });\n return true;\n }\n\n return false;\n}\n\nfunction getReactiveScalarChildSource(\n children: unknown\n): ReactiveScalarChildSource | null {\n const slots: ReactiveScalarChildSource = [];\n const state = { hasDynamic: false };\n\n if (!collectReactiveScalarChildSource(children, slots, state)) {\n return null;\n }\n\n return state.hasDynamic ? slots : null;\n}\n\nfunction getSingleReactiveChildBoundarySource(\n children: unknown\n): (() => VNode) | null {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return getSingleReactiveChildBoundarySource(fragmentChildren);\n }\n\n if (Array.isArray(children)) {\n if (children.length !== 1) {\n return null;\n }\n return getSingleReactiveChildBoundarySource(children[0]);\n }\n\n if (typeof children === 'function') {\n return children as () => VNode;\n }\n\n return null;\n}\n\nfunction collectReactiveChildBoundarySequenceSource(\n children: unknown,\n slots: ReactiveChildBoundarySequenceSource,\n state: { dynamicCount: number }\n): boolean {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return collectReactiveChildBoundarySequenceSource(\n fragmentChildren,\n slots,\n state\n );\n }\n\n if (Array.isArray(children)) {\n for (const child of children) {\n if (!collectReactiveChildBoundarySequenceSource(child, slots, state)) {\n return false;\n }\n }\n return true;\n }\n\n if (children === null || children === undefined || children === false) {\n return true;\n }\n\n if (typeof children === 'function') {\n slots.push({ kind: 'dynamic', compute: children as () => VNode });\n state.dynamicCount += 1;\n return true;\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n slots.push({ kind: 'static-text', value: String(children) });\n return true;\n }\n\n if (_isDOMElement(children)) {\n slots.push({ kind: 'static-node', value: children as VNode });\n return true;\n }\n\n return false;\n}\n\nfunction getReactiveChildBoundarySequenceSource(\n children: unknown\n): ReactiveChildBoundarySequenceSource | null {\n const slots: ReactiveChildBoundarySequenceSource = [];\n const state = { dynamicCount: 0 };\n\n if (!collectReactiveChildBoundarySequenceSource(children, slots, state)) {\n return null;\n }\n\n return state.dynamicCount >= 1 && slots.length > 1 ? slots : null;\n}\n\nfunction areReactiveChildBoundarySequenceSourcesEqual(\n previousSource: unknown,\n nextSource: ReactiveChildBoundarySequenceSource\n): boolean {\n if (\n !Array.isArray(previousSource) ||\n previousSource.length !== nextSource.length\n ) {\n return false;\n }\n\n for (let index = 0; index < nextSource.length; index += 1) {\n const previousSlot = previousSource[index] as\n | ReactiveChildBoundarySequenceSource[number]\n | undefined;\n const nextSlot = nextSource[index];\n\n if (!previousSlot || previousSlot.kind !== nextSlot.kind) {\n return false;\n }\n\n if (nextSlot.kind === 'static-text') {\n if (\n previousSlot.kind !== 'static-text' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (nextSlot.kind === 'static-node') {\n if (\n previousSlot.kind !== 'static-node' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (\n previousSlot.kind !== 'dynamic' ||\n previousSlot.compute !== nextSlot.compute\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction cleanupDetachedComponentHost(\n host: InstanceHostElement,\n retainedInstance: ComponentInstance\n): void {\n removeElementListeners(host);\n removeElementReactiveProps(host);\n\n const hostInstances = host.__ASKR_INSTANCES;\n if (hostInstances && hostInstances.length > 0) {\n for (const instance of hostInstances) {\n if (instance === retainedInstance) continue;\n cleanupComponent(instance);\n }\n } else if (\n host.__ASKR_INSTANCE &&\n host.__ASKR_INSTANCE !== retainedInstance\n ) {\n cleanupComponent(host.__ASKR_INSTANCE);\n }\n\n const descendants = host.querySelectorAll('*');\n for (let index = 0; index < descendants.length; index += 1) {\n const descendant = descendants[index] as InstanceHostElement;\n removeElementListeners(descendant);\n removeElementReactiveProps(descendant);\n\n if (descendant.__ASKR_INSTANCES?.length) {\n for (const instance of descendant.__ASKR_INSTANCES) {\n if (instance === retainedInstance) continue;\n cleanupComponent(instance);\n }\n try {\n delete descendant.__ASKR_INSTANCES;\n } catch {\n // Ignore host cleanup failures.\n }\n } else if (\n descendant.__ASKR_INSTANCE &&\n descendant.__ASKR_INSTANCE !== retainedInstance\n ) {\n cleanupComponent(descendant.__ASKR_INSTANCE);\n try {\n delete descendant.__ASKR_INSTANCE;\n } catch {\n // Ignore host cleanup failures.\n }\n }\n }\n\n try {\n delete host.__ASKR_INSTANCE;\n delete host.__ASKR_INSTANCES;\n delete host.__ASKR_WRAPPER_HOST;\n } catch {\n // Ignore host cleanup failures.\n }\n}\n\nfunction canUpdateReactiveChildBoundarySequenceSource(\n previousSource: unknown,\n nextSource: ReactiveChildBoundarySequenceSource\n): boolean {\n if (\n !Array.isArray(previousSource) ||\n previousSource.length !== nextSource.length\n ) {\n return false;\n }\n\n for (let index = 0; index < nextSource.length; index += 1) {\n const previousSlot = previousSource[index] as\n | ReactiveChildBoundarySequenceSource[number]\n | undefined;\n const nextSlot = nextSource[index];\n\n if (!previousSlot || previousSlot.kind !== nextSlot.kind) {\n return false;\n }\n\n if (nextSlot.kind === 'static-text') {\n if (\n previousSlot.kind !== 'static-text' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (nextSlot.kind === 'static-node') {\n if (\n previousSlot.kind !== 'static-node' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction areReactiveScalarChildSourcesEqual(\n previousSource: unknown,\n nextSource: ReactiveScalarChildSource\n): boolean {\n if (\n !Array.isArray(previousSource) ||\n previousSource.length !== nextSource.length\n ) {\n return false;\n }\n\n for (let index = 0; index < nextSource.length; index += 1) {\n const previousSlot = previousSource[index] as\n | ReactiveScalarChildSourceSlot\n | undefined;\n const nextSlot = nextSource[index];\n\n if (!previousSlot || previousSlot.kind !== nextSlot.kind) {\n return false;\n }\n\n if (nextSlot.kind === 'static') {\n if (\n previousSlot.kind !== 'static' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (\n previousSlot.kind !== 'dynamic' ||\n previousSlot.compute !== nextSlot.compute\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getOrCreateElementReactiveCleanupMap(\n el: Element\n): Map<string, ReactivePropCleanupEntry> {\n let cleanupMap = elementReactivePropsCleanup.get(el);\n if (!cleanupMap) {\n cleanupMap = new Map();\n elementReactivePropsCleanup.set(el, cleanupMap);\n }\n\n return cleanupMap;\n}\n\nfunction normalizeReactiveScalarSequenceValues(\n values: unknown[]\n): string[] | null {\n const normalized: string[] = [];\n\n for (const value of values) {\n if (!collectReactiveScalarSequenceValue(value, normalized)) {\n return null;\n }\n }\n\n return normalized;\n}\n\nfunction normalizeOwnedReactiveTextValue(value: unknown): string | null {\n if (typeof value === 'string' || typeof value === 'number') {\n return String(value);\n }\n\n return null;\n}\n\nfunction collectReactiveChildValuesAsVNodes(\n values: unknown[],\n children: VNode[]\n): void {\n for (const value of values) {\n collectReactiveChildBoundaryVNodes(value, children);\n }\n}\n\nfunction materializeReactiveChildBoundaryNodes(\n value: unknown,\n parentNamespace?: string\n): Node[] {\n const nodes: Node[] = [];\n const dom = createDOMNode(value, parentNamespace);\n if (!dom) {\n return nodes;\n }\n\n if (dom instanceof DocumentFragment) {\n for (let child = dom.firstChild; child; child = dom.firstChild) {\n nodes.push(child);\n dom.removeChild(child);\n }\n return nodes;\n }\n\n nodes.push(dom);\n return nodes;\n}\n\nfunction syncReactiveScalarTextNodes(\n el: Element,\n slotValues: unknown[],\n values: string[]\n): void {\n const childNodes = el.childNodes;\n const canPatchInPlace = childNodes.length === values.length;\n\n if (canPatchInPlace) {\n let allText = true;\n for (let index = 0; index < childNodes.length; index += 1) {\n if (childNodes[index]?.nodeType !== Node.TEXT_NODE) {\n allText = false;\n break;\n }\n }\n\n if (allText) {\n for (let index = 0; index < values.length; index += 1) {\n const textNode = childNodes[index] as Text;\n if (textNode.data !== values[index]) {\n textNode.data = values[index];\n }\n }\n return;\n }\n }\n\n const host = createReactiveChildBoundaryHost(el);\n for (let node = el.firstChild; node; ) {\n const next = node.nextSibling;\n host.appendChild(node);\n node = next;\n }\n\n updateElementChildren(host, slotValues as VNode[]);\n syncReactiveChildExpectedNodes(el, Array.from(host.childNodes));\n}\n\nfunction trySyncScalarChildSequenceInPlace(\n el: Element,\n children: unknown[]\n): boolean {\n const normalized = normalizeReactiveScalarSequenceValues(children);\n if (!normalized) {\n return false;\n }\n\n if (el.childNodes.length !== normalized.length) {\n return false;\n }\n\n for (let index = 0; index < el.childNodes.length; index += 1) {\n if (el.childNodes[index]?.nodeType !== Node.TEXT_NODE) {\n return false;\n }\n }\n\n syncReactiveScalarTextNodes(el, children, normalized);\n return true;\n}\n\nfunction normalizeReactiveChildBoundaryVNode(value: VNode): VNode {\n if (!isFragmentVNode(value)) {\n return value;\n }\n\n const children = normalizeComponentChildren(value);\n if (children.length !== 1) {\n return value;\n }\n\n return normalizeReactiveChildBoundaryVNode(children[0] as VNode);\n}\n\nfunction isSingleRootReactiveChildBoundaryValue(value: unknown): boolean {\n if (value === null || value === undefined || value === false) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return (\n value.length === 1 && isSingleRootReactiveChildBoundaryValue(value[0])\n );\n }\n\n if (isFragmentVNode(value)) {\n const children = normalizeComponentChildren(value);\n return (\n children.length === 1 &&\n isSingleRootReactiveChildBoundaryValue(children[0])\n );\n }\n\n return true;\n}\n\nfunction collectReactiveChildBoundaryVNodes(\n value: unknown,\n children: VNode[]\n): void {\n if (value === null || value === undefined || value === false) {\n return;\n }\n\n if (Array.isArray(value)) {\n for (const child of value) {\n collectReactiveChildBoundaryVNodes(child, children);\n }\n return;\n }\n\n if (isFragmentVNode(value)) {\n const fragmentChildren = value.props?.children ?? value.children;\n collectReactiveChildBoundaryVNodes(fragmentChildren, children);\n return;\n }\n\n children.push(value as VNode);\n}\n\nfunction createReactiveChildBoundaryHost(el: Element): Element {\n const ownerDocument = el.ownerDocument;\n return el.namespaceURI === SVG_NAMESPACE\n ? ownerDocument.createElementNS(SVG_NAMESPACE, 'g')\n : ownerDocument.createElement('div');\n}\n\nfunction disposeReactiveChildBoundaryNodes(nodes: Node[]): void {\n for (const node of nodes) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n\n teardownNodeSubtree(node);\n }\n}\n\nfunction syncReactiveChildExpectedNodes(\n el: Element,\n expectedNodes: Node[]\n): void {\n const expectedNodeSet = new Set(expectedNodes);\n\n for (let node = el.firstChild; node; ) {\n const next = node.nextSibling;\n if (!expectedNodeSet.has(node)) {\n teardownNodeSubtree(node);\n el.removeChild(node);\n }\n node = next;\n }\n\n let anchor = el.firstChild;\n for (const node of expectedNodes) {\n if (node === anchor) {\n anchor = anchor.nextSibling;\n continue;\n }\n\n el.insertBefore(node, anchor);\n anchor = node.nextSibling;\n }\n}\n\nfunction commitReactiveChildBoundaryEntryNodes(\n el: Element,\n entry: { scope: ChildScope; nodes: Node[] }\n): Node[] {\n if (!entry.scope.needsDomUpdate) {\n return entry.nodes;\n }\n\n if (\n entry.scope.vnode === null ||\n entry.scope.vnode === undefined ||\n entry.scope.vnode === false\n ) {\n if (entry.nodes.length > 0) {\n disposeReactiveChildBoundaryNodes(entry.nodes);\n entry.nodes = [];\n }\n\n const dom = entry.scope.dom;\n if (dom?.parentNode === el) {\n teardownNodeSubtree(dom);\n el.removeChild(dom);\n }\n\n entry.scope.dom = undefined;\n entry.scope.needsDomUpdate = false;\n return entry.nodes;\n }\n\n if (!isSingleRootReactiveChildBoundaryValue(entry.scope.vnode)) {\n const nextChildren: VNode[] = [];\n collectReactiveChildBoundaryVNodes(entry.scope.vnode, nextChildren);\n\n const host = createReactiveChildBoundaryHost(el);\n for (const node of entry.nodes) {\n host.appendChild(node);\n }\n\n updateElementChildren(host, nextChildren);\n\n const nextNodes = Array.from(host.childNodes);\n\n entry.scope.dom = undefined;\n entry.scope.needsDomUpdate = false;\n entry.nodes = nextNodes;\n return nextNodes;\n }\n\n if (entry.nodes.length > 1) {\n disposeReactiveChildBoundaryNodes(entry.nodes);\n entry.nodes = [];\n entry.scope.dom = undefined;\n }\n\n const nextDom = syncForItemDom(el, entry.scope, entry.scope.vnode ?? null);\n if (!nextDom) {\n entry.nodes = [];\n entry.scope.needsDomUpdate = false;\n return entry.nodes;\n }\n\n entry.nodes = [nextDom];\n entry.scope.needsDomUpdate = false;\n return entry.nodes;\n}\n\nfunction syncReactiveChildSequenceNodes(\n el: Element,\n entries: ReactiveChildBoundarySequenceEntry[]\n): void {\n const expectedNodes: Node[] = [];\n\n for (const entry of entries) {\n if (entry.kind === 'static') {\n expectedNodes.push(...entry.nodes);\n continue;\n }\n\n expectedNodes.push(...commitReactiveChildBoundaryEntryNodes(el, entry));\n }\n\n syncReactiveChildExpectedNodes(el, expectedNodes);\n}\n\nfunction setupReactiveScalarChild(\n el: Element,\n source: ReactiveScalarChildSource\n): {\n cleanup: () => void;\n updateFn: (nextSource: ReactiveScalarChildSource) => void;\n} {\n let currentSource = source;\n\n if (source.length === 1 && source[0]?.kind === 'dynamic') {\n let ownedTextNode =\n el.childNodes.length === 1 && el.firstChild?.nodeType === Node.TEXT_NODE\n ? (el.firstChild as Text)\n : null;\n\n let effectHandle: FineGrainedEffectHandle<string> | null =\n createFineGrainedEffect({\n lane: 'reactive',\n compute: () => {\n const currentSlot = currentSource[0];\n if (!currentSlot || currentSlot.kind !== 'dynamic') {\n throw new Error(\n '[Askr] Direct reactive text bindings require a single dynamic slot.'\n );\n }\n\n const rawValue = currentSlot.compute();\n const normalized = normalizeOwnedReactiveTextValue(rawValue);\n return normalized ?? (rawValue as string);\n },\n commit: (value) => {\n const normalized = normalizeOwnedReactiveTextValue(value);\n\n if (normalized === null) {\n ownedTextNode = null;\n updateElementChildren(\n el,\n value as unknown as VNode | VNode[] | undefined\n );\n return;\n }\n\n if (\n !ownedTextNode ||\n el.childNodes.length !== 1 ||\n el.firstChild !== ownedTextNode\n ) {\n updateElementChildren(el, normalized);\n ownedTextNode =\n el.childNodes.length === 1 &&\n el.firstChild?.nodeType === Node.TEXT_NODE\n ? (el.firstChild as Text)\n : null;\n }\n\n if (!ownedTextNode) {\n return;\n }\n\n if (ownedTextNode.data !== normalized) {\n ownedTextNode.data = normalized;\n incDevCounter('textNodeWrites');\n }\n },\n onError: (err) => {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive child update failed:', err);\n }\n },\n });\n\n return {\n cleanup: () => {\n effectHandle?.cleanup();\n effectHandle = null;\n },\n updateFn: (nextSource: ReactiveScalarChildSource) => {\n if (!effectHandle) {\n return;\n }\n\n currentSource = nextSource;\n effectHandle.updateCompute(() => {\n const currentSlot = currentSource[0];\n if (!currentSlot || currentSlot.kind !== 'dynamic') {\n throw new Error(\n '[Askr] Direct reactive text bindings require a single dynamic slot.'\n );\n }\n\n const rawValue = currentSlot.compute();\n const normalized = normalizeOwnedReactiveTextValue(rawValue);\n return normalized ?? (rawValue as string);\n });\n },\n };\n }\n\n let effectHandle: FineGrainedEffectHandle<unknown> | null =\n createFineGrainedEffect({\n lane: 'reactive',\n compute: () =>\n currentSource.map((slot) =>\n slot.kind === 'static' ? slot.value : slot.compute()\n ),\n commit: (values) => {\n if (!Array.isArray(values)) {\n throw new Error(\n '[Askr] Reactive scalar children must evaluate to a slot array.'\n );\n }\n\n const normalized = normalizeReactiveScalarSequenceValues(values);\n if (normalized) {\n syncReactiveScalarTextNodes(el, values, normalized);\n return;\n }\n\n const nextChildren: VNode[] = [];\n collectReactiveChildValuesAsVNodes(values, nextChildren);\n\n const host = createReactiveChildBoundaryHost(el);\n for (let node = el.firstChild; node; ) {\n const next = node.nextSibling;\n host.appendChild(node);\n node = next;\n }\n\n updateElementChildren(host, nextChildren);\n syncReactiveChildExpectedNodes(el, Array.from(host.childNodes));\n },\n equals: (previousValue, nextValue) => {\n if (!Array.isArray(previousValue) || !Array.isArray(nextValue)) {\n return false;\n }\n\n const previousNormalized =\n normalizeReactiveScalarSequenceValues(previousValue);\n const nextNormalized = normalizeReactiveScalarSequenceValues(nextValue);\n\n if (!previousNormalized || !nextNormalized) {\n return false;\n }\n\n if (previousNormalized.length !== nextNormalized.length) {\n return false;\n }\n\n for (let index = 0; index < previousNormalized.length; index += 1) {\n if (previousNormalized[index] !== nextNormalized[index]) {\n return false;\n }\n }\n\n return true;\n },\n onError: (err) => {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive child update failed:', err);\n }\n },\n });\n\n return {\n cleanup: () => {\n effectHandle?.cleanup();\n effectHandle = null;\n },\n updateFn: (nextSource: ReactiveScalarChildSource) => {\n if (!effectHandle) {\n return;\n }\n\n currentSource = nextSource;\n effectHandle.updateCompute(() =>\n currentSource.map((slot) =>\n slot.kind === 'static' ? slot.value : slot.compute()\n )\n );\n },\n };\n}\n\nfunction setupReactiveChildBoundary(\n el: Element,\n childFn: () => VNode\n): { cleanup: () => void; updateFn: (nextValue: unknown) => void } {\n let currentChildFn = childFn;\n const parentInstance = getCurrentInstance();\n const entry: { scope: ChildScope; nodes: Node[] } = {\n scope: createChildScope(\n parentInstance,\n `__reactive-child__:${(reactiveChildScopeId += 1)}`,\n () => {\n const expectedNodes = commitReactiveChildBoundaryEntryNodes(el, entry);\n syncReactiveChildExpectedNodes(el, expectedNodes);\n }\n ),\n nodes: [],\n };\n\n entry.scope.render(() =>\n normalizeReactiveChildBoundaryVNode(currentChildFn())\n );\n syncReactiveChildExpectedNodes(\n el,\n commitReactiveChildBoundaryEntryNodes(el, entry)\n );\n\n return {\n cleanup: () => {\n const dom = entry.scope.dom;\n const nodes = entry.nodes;\n disposeChildScope(entry.scope);\n entry.nodes = [];\n\n if (nodes.length > 0) {\n disposeReactiveChildBoundaryNodes(nodes);\n return;\n }\n\n if (dom?.parentNode === el) {\n teardownNodeSubtree(dom);\n el.removeChild(dom);\n }\n },\n updateFn: (nextValue: unknown) => {\n currentChildFn = nextValue as () => VNode;\n rerenderChildScope(entry.scope);\n const expectedNodes = commitReactiveChildBoundaryEntryNodes(el, entry);\n syncReactiveChildExpectedNodes(el, expectedNodes);\n },\n };\n}\n\nfunction setupReactiveChildBoundarySequence(\n el: Element,\n source: ReactiveChildBoundarySequenceSource\n): { cleanup: () => void; updateFn: (nextValue: unknown) => void } {\n let currentSource = source;\n const parentInstance = getCurrentInstance();\n const entries: ReactiveChildBoundarySequenceEntry[] = [];\n const dynamicEntries: Array<{\n index: number;\n entry: Extract<ReactiveChildBoundarySequenceEntry, { kind: 'dynamic' }>;\n }> = [];\n\n if (!currentSource.some((slot) => slot.kind === 'dynamic')) {\n throw new Error(\n '[Askr] Reactive child boundary sequence requires at least one dynamic slot.'\n );\n }\n\n const syncSequence = () => {\n syncReactiveChildSequenceNodes(el, entries);\n };\n\n const parentNamespace =\n el.namespaceURI === SVG_NAMESPACE ? SVG_NAMESPACE : undefined;\n\n for (let index = 0; index < currentSource.length; index += 1) {\n const slot = currentSource[index];\n if (!slot) {\n continue;\n }\n\n if (slot.kind === 'static-text') {\n entries.push({\n kind: 'static',\n nodes: [document.createTextNode(slot.value)],\n });\n continue;\n }\n\n if (slot.kind === 'static-node') {\n entries.push({\n kind: 'static',\n nodes: materializeReactiveChildBoundaryNodes(\n slot.value,\n parentNamespace\n ),\n });\n continue;\n }\n\n const scope = createChildScope(\n parentInstance,\n `__reactive-child-seq__:${(reactiveChildScopeId += 1)}`,\n syncSequence\n );\n\n const dynamicEntry: Extract<\n ReactiveChildBoundarySequenceEntry,\n { kind: 'dynamic' }\n > = {\n kind: 'dynamic',\n scope,\n nodes: [],\n };\n entries.push(dynamicEntry);\n dynamicEntries.push({ index, entry: dynamicEntry });\n }\n\n for (const dynamicEntry of dynamicEntries) {\n dynamicEntry.entry.scope.render(() =>\n normalizeReactiveChildBoundaryVNode(\n (\n currentSource[dynamicEntry.index] as {\n kind: 'dynamic';\n compute: () => VNode;\n }\n ).compute()\n )\n );\n }\n\n syncSequence();\n\n return {\n cleanup: () => {\n for (const dynamicEntry of dynamicEntries) {\n const dom = dynamicEntry.entry.scope.dom;\n const nodes = dynamicEntry.entry.nodes;\n disposeChildScope(dynamicEntry.entry.scope);\n\n if (nodes.length > 0) {\n disposeReactiveChildBoundaryNodes(nodes);\n continue;\n }\n\n if (dom?.parentNode === el) {\n teardownNodeSubtree(dom);\n el.removeChild(dom);\n }\n }\n\n for (const entry of entries) {\n if (entry.kind === 'static') {\n disposeReactiveChildBoundaryNodes(entry.nodes);\n }\n }\n },\n updateFn: (nextValue: unknown) => {\n currentSource = nextValue as ReactiveChildBoundarySequenceSource;\n for (const dynamicEntry of dynamicEntries) {\n rerenderChildScope(dynamicEntry.entry.scope);\n }\n syncSequence();\n },\n };\n}\n\nfunction syncReactiveScalarChild(el: Element, children: unknown): boolean {\n const reactiveChildSource = getReactiveScalarChildSource(children);\n const reactiveChildBoundary = getSingleReactiveChildBoundarySource(children);\n const reactiveChildBoundarySequence =\n getReactiveChildBoundarySequenceSource(children);\n const existingReactiveEntry = elementReactivePropsCleanup\n .get(el)\n ?.get(REACTIVE_CHILDREN_KEY);\n\n if (\n !reactiveChildSource &&\n !reactiveChildBoundary &&\n !reactiveChildBoundarySequence\n ) {\n if (existingReactiveEntry) {\n existingReactiveEntry.cleanup();\n const cleanupMap = elementReactivePropsCleanup.get(el);\n cleanupMap?.delete(REACTIVE_CHILDREN_KEY);\n if (cleanupMap && cleanupMap.size === 0) {\n elementReactivePropsCleanup.delete(el);\n }\n }\n\n return false;\n }\n\n if (reactiveChildSource && !reactiveChildBoundarySequence) {\n if (\n existingReactiveEntry &&\n Array.isArray(existingReactiveEntry.fnRef) &&\n areReactiveScalarChildSourcesEqual(\n existingReactiveEntry.fnRef,\n reactiveChildSource\n )\n ) {\n return true;\n }\n\n if (\n existingReactiveEntry?.updateFn &&\n Array.isArray(existingReactiveEntry.fnRef)\n ) {\n existingReactiveEntry.updateFn(reactiveChildSource);\n existingReactiveEntry.fnRef = reactiveChildSource;\n return true;\n }\n\n existingReactiveEntry?.cleanup();\n\n try {\n const reactive = setupReactiveScalarChild(el, reactiveChildSource);\n getOrCreateElementReactiveCleanupMap(el).set(REACTIVE_CHILDREN_KEY, {\n cleanup: reactive.cleanup,\n updateFn: (nextValue) => {\n reactive.updateFn(nextValue as ReactiveScalarChildSource);\n },\n fnRef: reactiveChildSource,\n });\n return true;\n } catch (error) {\n if (!reactiveChildBoundary && !reactiveChildBoundarySequence) {\n throw error;\n }\n }\n }\n\n if (reactiveChildBoundarySequence) {\n if (\n existingReactiveEntry &&\n Array.isArray(existingReactiveEntry.fnRef) &&\n areReactiveChildBoundarySequenceSourcesEqual(\n existingReactiveEntry.fnRef,\n reactiveChildBoundarySequence\n )\n ) {\n return true;\n }\n\n if (\n existingReactiveEntry?.updateFn &&\n Array.isArray(existingReactiveEntry.fnRef) &&\n canUpdateReactiveChildBoundarySequenceSource(\n existingReactiveEntry.fnRef,\n reactiveChildBoundarySequence\n )\n ) {\n existingReactiveEntry.updateFn(reactiveChildBoundarySequence);\n existingReactiveEntry.fnRef = reactiveChildBoundarySequence;\n return true;\n }\n\n existingReactiveEntry?.cleanup();\n\n const reactive = setupReactiveChildBoundarySequence(\n el,\n reactiveChildBoundarySequence\n );\n getOrCreateElementReactiveCleanupMap(el).set(REACTIVE_CHILDREN_KEY, {\n cleanup: reactive.cleanup,\n updateFn: reactive.updateFn,\n fnRef: reactiveChildBoundarySequence,\n });\n return true;\n }\n\n if (existingReactiveEntry?.fnRef === reactiveChildBoundary) {\n return true;\n }\n\n if (\n existingReactiveEntry?.updateFn &&\n !Array.isArray(existingReactiveEntry.fnRef)\n ) {\n existingReactiveEntry.updateFn(reactiveChildBoundary);\n existingReactiveEntry.fnRef = reactiveChildBoundary;\n return true;\n }\n\n existingReactiveEntry?.cleanup();\n\n if (!reactiveChildBoundary) {\n return false;\n }\n\n const reactive = setupReactiveChildBoundary(el, reactiveChildBoundary);\n getOrCreateElementReactiveCleanupMap(el).set(REACTIVE_CHILDREN_KEY, {\n cleanup: reactive.cleanup,\n updateFn: reactive.updateFn,\n fnRef: reactiveChildBoundary,\n });\n return true;\n}\n\nconst vnodeComponentInstances = new WeakMap<object, ComponentInstance>();\n\nfunction getVNodeComponentInstance(\n node: unknown\n): ComponentInstance | undefined {\n if (typeof node !== 'object' || node === null) {\n return undefined;\n }\n\n return (\n vnodeComponentInstances.get(node) ??\n (node as { __instance?: ComponentInstance }).__instance\n );\n}\n\nfunction setVNodeComponentInstance(\n node: unknown,\n instance: ComponentInstance\n): void {\n if (typeof node !== 'object' || node === null) {\n return;\n }\n\n const objectNode = node as { __instance?: ComponentInstance };\n\n if (Object.prototype.hasOwnProperty.call(objectNode, '__instance')) {\n try {\n objectNode.__instance = instance;\n return;\n } catch {\n // Fall back to WeakMap for readonly vnode metadata.\n }\n }\n\n if (Object.isExtensible(objectNode)) {\n try {\n objectNode.__instance = instance;\n return;\n } catch {\n // Fall back to WeakMap for frozen/proxied objects.\n }\n }\n\n vnodeComponentInstances.set(objectNode, instance);\n}\n\nexport const IS_DOM_AVAILABLE = typeof document !== 'undefined';\n\nconst SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\nfunction resolveChildNamespace(\n type: string,\n parentNamespace?: string\n): string | undefined {\n if (type === 'svg') return SVG_NAMESPACE;\n if (parentNamespace === SVG_NAMESPACE && type !== 'foreignObject') {\n return SVG_NAMESPACE;\n }\n return undefined;\n}\n\nfunction createElementForNamespace(\n type: string,\n parentNamespace?: string\n): Element {\n const namespace = resolveChildNamespace(type, parentNamespace);\n return namespace\n ? document.createElementNS(namespace, type)\n : document.createElement(type);\n}\n\nfunction getHydrationSkipBoundary(el: Element): Element | null {\n return el.closest('[data-skip-hydrate=\"true\"]');\n}\n\nfunction isHydrationSkipped(el: Element): boolean {\n return getHydrationSkipBoundary(el) !== null;\n}\n\nfunction clearHydrationDeferredSubtree(el: Element): void {\n const boundary = getHydrationSkipBoundary(el);\n if (!boundary) return;\n if (boundary === el) {\n removeAllListeners(el);\n removeElementReactiveProps(el);\n }\n}\n\nlet fallbackComponentInstanceId = 0;\n\nfunction nextComponentInstanceId(): string {\n const key = '__COMPONENT_INSTANCE_ID';\n try {\n incDevCounter(key);\n const n = getDevValue<number>(key);\n if (typeof n === 'number' && Number.isFinite(n)) return `comp-${n}`;\n } catch {\n // Fall through to local counter\n }\n fallbackComponentInstanceId++;\n return `comp-${fallbackComponentInstanceId}`;\n}\n\n/**\n * Add an event listener to an element with tracking\n * Uses event delegation when enabled (opt-out model)\n */\nfunction addTrackedListener(\n el: Element,\n eventName: string,\n handler: EventListener,\n capture = false\n): void {\n const useDelegation =\n !capture && isEventDelegationEnabled() && isDelegatedEvent(eventName);\n const listenerKey = getEventListenerKey(eventName, capture);\n\n if (useDelegation) {\n addDelegatedListener(el, eventName, handler, handler, undefined);\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('listenerBindings');\n }\n return;\n }\n\n const options = getEventListenerOptions(eventName, capture);\n const mutableHandler = createMutableWrappedHandler(handler, true);\n const trackedHandler = mutableHandler.handler;\n\n if (options !== undefined) {\n el.addEventListener(eventName, trackedHandler, options);\n } else {\n el.addEventListener(eventName, trackedHandler);\n }\n incDevCounter('listenerAdds');\n\n if (!elementListeners.has(el)) {\n elementListeners.set(el, new Map());\n }\n elementListeners.get(el)!.set(listenerKey, {\n handler: trackedHandler,\n original: handler,\n eventName,\n options,\n isDelegated: false,\n updateHandler: mutableHandler?.updateHandler,\n });\n\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('listenerBindings');\n }\n}\n\nexport function markReactivePropsDirtySource(\n source: ReadableSource<unknown>\n): void {\n markFineGrainedEffectsDirtySource(source);\n}\n\n/**\n * Set up a reactive prop that re-evaluates when its dependencies change\n * Returns a cleanup function to unsubscribe\n */\nfunction setupReactiveProp(\n el: Element,\n propName: string,\n propFn: () => unknown,\n tagName: string\n): { cleanup: () => void; updateFn: (nextFn: () => unknown) => void } {\n const descriptor: ReactivePropDescriptor = {\n el,\n propName,\n propFn,\n tagName,\n lastClassTokens: null,\n };\n\n let effectHandle: FineGrainedEffectHandle<unknown> | null = null;\n\n reactivePropRegistry.add(descriptor);\n effectHandle = createFineGrainedEffect({\n lane: 'reactive',\n compute: () => descriptor.propFn(),\n commit: (value, previousValue) => {\n incrementPerfMetric('reactivePropReevaluations');\n applyPropValue(el, propName, value, tagName, previousValue, descriptor);\n },\n equals: (previousValue, nextValue) => {\n if (Object.is(previousValue, nextValue)) {\n incrementPerfMetric('skippedDomPropWrites');\n return true;\n }\n return false;\n },\n onError: (err) => {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive prop update failed:', err);\n }\n },\n });\n\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('reactivePropsMounted');\n }\n\n const cleanup = () => {\n reactivePropRegistry.delete(descriptor);\n effectHandle?.cleanup();\n effectHandle = null;\n };\n\n const updateFn = (nextFn: () => unknown): void => {\n if (!effectHandle) {\n return;\n }\n\n descriptor.propFn = nextFn;\n\n try {\n effectHandle.updateCompute(nextFn);\n } catch (err) {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive prop update failed:', err);\n }\n }\n };\n\n return {\n cleanup,\n updateFn,\n };\n}\n\n/**\n * Apply a prop value to an element (helper for reactive props)\n */\nfunction applyPropValue(\n el: Element,\n key: string,\n value: unknown,\n tagName: string,\n previousValue?: unknown,\n descriptor?: ReactivePropDescriptor\n): void {\n if (value === undefined || value === null || value === false) {\n if (key === 'class' || key === 'className') {\n const previousTokens = descriptor?.lastClassTokens;\n if (previousTokens && previousTokens.length > 0) {\n el.classList.remove(...previousTokens);\n incrementPerfMetric('classListPatchOps');\n } else {\n writeElementClassName(el, '');\n }\n if (descriptor) {\n descriptor.lastClassTokens = [];\n }\n } else if (key === 'value') {\n applyFormControlProp(el, key, '', tagName);\n } else if (key === 'checked') {\n applyFormControlProp(el, key, false, tagName);\n } else if (key === 'style') {\n applyStylePropValue(el, null);\n } else {\n removeRenderedAttribute(el, key);\n }\n return;\n }\n\n if (key === 'class' || key === 'className') {\n applyClassPropValue(el, value, previousValue, descriptor);\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n applyFormControlProp(el, key, value, tagName);\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n}\n\nfunction normalizeStylePropertyName(propertyName: string): string {\n if (propertyName.startsWith('--')) {\n return propertyName;\n }\n\n return propertyName.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);\n}\n\nfunction collectCurrentStyleEntries(el: Element): StyleEntries {\n const entries: StyleEntries = new Map();\n const style = (el as HTMLElement | SVGElement).style;\n\n if (!style) {\n return entries;\n }\n\n for (let index = 0; index < style.length; index += 1) {\n const propertyName = style.item(index);\n entries.set(propertyName, style.getPropertyValue(propertyName));\n }\n\n return entries;\n}\n\nfunction normalizeStyleEntries(value: unknown): StyleEntries | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return null;\n }\n\n const entries: StyleEntries = new Map();\n for (const [key, entryValue] of Object.entries(\n value as Record<string, unknown>\n )) {\n if (\n entryValue === undefined ||\n entryValue === null ||\n entryValue === false\n ) {\n continue;\n }\n\n entries.set(normalizeStylePropertyName(key), String(entryValue));\n }\n\n return entries;\n}\n\nfunction applyStylePropValue(el: Element, value: unknown): void {\n const style = (el as HTMLElement | SVGElement).style;\n if (!style) {\n if (value === null || value === undefined || value === false) {\n el.removeAttribute('style');\n return;\n }\n\n el.setAttribute('style', String(value));\n return;\n }\n\n if (value === null || value === undefined || value === false) {\n if (!el.getAttribute('style')) {\n incrementPerfMetric('skippedDomPropWrites');\n return;\n }\n\n style.cssText = '';\n el.removeAttribute('style');\n return;\n }\n\n if (typeof value === 'string') {\n if ((el.getAttribute('style') ?? '') === value) {\n incrementPerfMetric('skippedDomPropWrites');\n return;\n }\n\n style.cssText = value;\n return;\n }\n\n const nextEntries = normalizeStyleEntries(value);\n if (!nextEntries) {\n const nextText = String(value);\n if ((el.getAttribute('style') ?? '') === nextText) {\n incrementPerfMetric('skippedDomPropWrites');\n return;\n }\n\n style.cssText = nextText;\n return;\n }\n\n const previousEntries = collectCurrentStyleEntries(el);\n let didWrite = false;\n\n for (const [propertyName] of previousEntries) {\n if (nextEntries.has(propertyName)) {\n continue;\n }\n\n style.removeProperty(propertyName);\n didWrite = true;\n }\n\n for (const [propertyName, propertyValue] of nextEntries) {\n if (previousEntries.get(propertyName) === propertyValue) {\n continue;\n }\n\n style.setProperty(propertyName, propertyValue);\n didWrite = true;\n }\n\n if (!didWrite) {\n incrementPerfMetric('skippedDomPropWrites');\n }\n}\n\nfunction tokenizeClassValue(value: unknown): string[] | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return [];\n }\n\n return trimmed.split(/\\s+/);\n}\n\nfunction patchClassList(\n el: Element,\n previousTokens: string[],\n nextTokens: string[]\n): void {\n if (previousTokens.length === nextTokens.length) {\n let identical = true;\n for (let index = 0; index < previousTokens.length; index += 1) {\n if (previousTokens[index] !== nextTokens[index]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return;\n }\n }\n\n if (previousTokens.length === 0) {\n if (nextTokens.length === 0) {\n return;\n }\n el.classList.add(...nextTokens);\n incrementPerfMetric('classListPatchOps');\n return;\n }\n\n if (nextTokens.length === 0) {\n el.classList.remove(...previousTokens);\n incrementPerfMetric('classListPatchOps');\n return;\n }\n\n if (previousTokens.length === 1 && nextTokens.length === 1) {\n el.classList.remove(previousTokens[0]);\n el.classList.add(nextTokens[0]);\n incrementPerfMetric('classListPatchOps');\n return;\n }\n\n const nextSet = new Set(nextTokens);\n const previousSet = new Set(previousTokens);\n\n for (const token of previousTokens) {\n if (!nextSet.has(token)) {\n el.classList.remove(token);\n }\n }\n\n for (const token of nextTokens) {\n if (!previousSet.has(token)) {\n el.classList.add(token);\n }\n }\n\n incrementPerfMetric('classListPatchOps');\n}\n\nfunction applyClassPropValue(\n el: Element,\n value: unknown,\n previousValue: unknown,\n descriptor?: ReactivePropDescriptor\n): void {\n const nextString = String(value);\n const nextTokens = tokenizeClassValue(nextString);\n const previousTokens =\n descriptor?.lastClassTokens ?? tokenizeClassValue(previousValue);\n\n if (nextTokens && previousTokens) {\n patchClassList(el, previousTokens, nextTokens);\n if (descriptor) {\n descriptor.lastClassTokens = nextTokens;\n }\n return;\n }\n\n writeElementClassName(el, nextString);\n if (descriptor) {\n descriptor.lastClassTokens = nextTokens;\n }\n}\n\n/**\n * Apply attributes and event listeners to an element from props\n */\nfunction applyPropsToElement(\n el: Element,\n props: Record<string, unknown>,\n tagName: string\n): void {\n if (isHydrationSkipped(el)) {\n return;\n }\n\n for (const key in props) {\n const value = props[key];\n // Handle ref BEFORE isSkippedProp check since it needs special processing\n if (key === 'ref') {\n applyRef(el, value);\n continue;\n }\n if (isSkippedProp(key)) continue;\n if (value === undefined || value === null || value === false) continue;\n\n const eventProp = parseEventProp(key);\n if (eventProp) {\n addTrackedListener(\n el,\n eventProp.eventName,\n value as EventListener,\n eventProp.capture\n );\n continue;\n }\n\n // Check if value is a function (reactive prop)\n if (typeof value === 'function' && key !== 'ref') {\n // Set up reactive prop tracking\n const reactive = setupReactiveProp(\n el,\n key,\n value as () => unknown,\n tagName\n );\n\n // Store cleanup function and function reference\n if (!elementReactivePropsCleanup.has(el)) {\n elementReactivePropsCleanup.set(el, new Map());\n }\n elementReactivePropsCleanup.get(el)!.set(key, {\n cleanup: reactive.cleanup,\n updateFn: (nextValue) => {\n reactive.updateFn(nextValue as () => unknown);\n },\n fnRef: value as () => unknown,\n });\n continue;\n }\n\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, String(value));\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n applyFormControlProp(el, key, value, tagName);\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n }\n}\n\ntype Ref<T> =\n | ((value: T | null) => void)\n | { current: T | null }\n | null\n | undefined;\n\nfunction applyRef<T>(el: T, ref: unknown): void {\n const r = ref as Ref<T>;\n if (!r) return;\n if (typeof r === 'function') {\n r(el);\n return;\n }\n // Fast path: use Object.isExtensible check instead of try/catch\n if (Object.isExtensible(r)) {\n (r as { current: T | null }).current = el;\n }\n}\n\nfunction removeStaleAttributes(\n el: Element,\n vnode: DOMElement,\n props: Record<string, unknown>\n): void {\n const desiredAttributes = new Set<string>();\n const key = extractKey(vnode);\n\n if (key !== undefined) {\n desiredAttributes.add('data-key');\n }\n\n for (const propName in props) {\n if (isSkippedProp(propName)) continue;\n if (parseEventName(propName)) continue;\n\n const value = props[propName];\n if (value === undefined || value === null || value === false) continue;\n\n desiredAttributes.add(getRenderedAttributeName(el, propName));\n }\n\n for (const attribute of Array.from(el.attributes)) {\n if (!desiredAttributes.has(getRenderedAttributeName(el, attribute.name))) {\n el.removeAttribute(attribute.name);\n }\n }\n}\n\n/**\n * Apply value/checked props to form controls\n */\nfunction applyFormControlProp(\n el: Element,\n key: string,\n value: unknown,\n tagName: string\n): void {\n if (key === 'value') {\n if (\n tagNamesEqualIgnoreCase(tagName, 'input') ||\n tagNamesEqualIgnoreCase(tagName, 'textarea') ||\n tagNamesEqualIgnoreCase(tagName, 'select')\n ) {\n (el as HTMLInputElement & Props).value = String(value);\n el.setAttribute('value', String(value));\n } else {\n el.setAttribute('value', String(value));\n }\n } else if (key === 'checked') {\n if (tagNamesEqualIgnoreCase(tagName, 'input')) {\n const checked = Boolean(value);\n (el as HTMLInputElement & Props).checked = checked;\n if (checked) {\n el.setAttribute('checked', '');\n } else {\n el.removeAttribute('checked');\n }\n } else {\n if (value) {\n el.setAttribute('checked', '');\n } else {\n el.removeAttribute('checked');\n }\n }\n }\n}\n\n/**\n * Materialize vnode key as data-key attribute\n */\nfunction materializeKey(\n el: Element,\n vnode: DOMElement,\n props: Record<string, unknown>\n): void {\n const rawKey = vnode.key ?? props?.key;\n const vnodeKey =\n rawKey === null || rawKey === undefined\n ? undefined\n : typeof rawKey === 'symbol'\n ? String(rawKey)\n : (rawKey as string | number);\n if (vnodeKey !== undefined) {\n const nextKey = String(vnodeKey);\n if (el.getAttribute('data-key') !== nextKey) {\n el.setAttribute('data-key', nextKey);\n }\n }\n}\n\nfunction inheritComponentKey(\n target: DOMElement,\n source: DOMElement\n): DOMElement {\n const inheritedKey = extractKey(source);\n if (inheritedKey === undefined || extractKey(target) !== undefined) {\n return target;\n }\n\n target.key = inheritedKey;\n\n if (typeof target.type === 'string') {\n if (!target.props) {\n target.props = {};\n }\n\n const props = target.props as Record<string, unknown>;\n if (props['data-key'] === undefined) {\n props['data-key'] = String(inheritedKey);\n }\n }\n\n return target;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Dynamic List Warnings\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Warn about missing keys on dynamic lists (dev only)\n */\nfunction warnMissingKeys(children: unknown[]): void {\n if (getRuntimeEnv().NODE_ENV === 'production') return;\n\n let hasElements = false;\n let hasKeys = false;\n\n for (const item of children) {\n if (typeof item === 'object' && item !== null && 'type' in item) {\n if ((item as DOMElement).type === __FOR_BOUNDARY__) continue;\n hasElements = true;\n const rawKey =\n (item as DOMElement).key ??\n ((item as DOMElement).props as Record<string, unknown> | undefined)\n ?.key;\n if (rawKey !== undefined) {\n hasKeys = true;\n break;\n }\n }\n }\n\n if (hasElements && !hasKeys) {\n const inst = getCurrentInstance();\n const warnings = inst ? (inst.devWarningsEmitted ??= new Set()) : null;\n if (warnings?.has('missing-keys')) return;\n warnings?.add('missing-keys');\n try {\n const name = inst?.fn?.name || '<anonymous>';\n logger.warn(\n `Missing keys on dynamic lists in ${name}. Each child in a list should have a unique \"key\" prop.`\n );\n } catch {\n logger.warn(\n 'Missing keys on dynamic lists. Each child in a list should have a unique \"key\" prop.'\n );\n }\n }\n}\n\nfunction hasStaticChildrenMarker(children: unknown[]): boolean {\n return (\n (\n children as unknown as {\n [STATIC_CHILDREN]?: boolean;\n }\n )[STATIC_CHILDREN] === true\n );\n}\n\nfunction maybeWarnMissingKeys(children: unknown[]): void {\n if (!hasStaticChildrenMarker(children)) {\n warnMissingKeys(children);\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// DOM Node Creation\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Create a DOM node from a VNode\n */\nexport function createDOMNode(\n node: unknown,\n parentNamespace?: string\n): Node | null {\n // SSR guard: don't attempt DOM ops when document is unavailable\n if (!IS_DOM_AVAILABLE) {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n try {\n logger.warn('[Askr] createDOMNode called in non-DOM environment');\n } catch {\n // ignore\n }\n }\n return null;\n }\n\n // Fast paths for primitives (most common)\n if (typeof node === 'string') {\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n return document.createTextNode(node);\n }\n if (typeof node === 'number') {\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n return document.createTextNode(String(node));\n }\n\n // Null/undefined/false\n if (!node) {\n return null;\n }\n\n // Array (fragment) - batch all at once\n if (Array.isArray(node)) {\n maybeWarnMissingKeys(node);\n const fragment = document.createDocumentFragment();\n for (const child of node) {\n const dom = createDOMNode(child, parentNamespace);\n if (dom) fragment.appendChild(dom);\n }\n return fragment;\n }\n\n // Element or Component\n if (typeof node === 'object' && node !== null && 'type' in node) {\n const type = (node as DOMElement).type;\n const props = ((node as DOMElement).props || {}) as Record<string, unknown>;\n\n // Intrinsic element (string type)\n if (typeof type === 'string') {\n return createIntrinsicElement(\n node as DOMElement,\n type,\n props,\n parentNamespace\n );\n }\n\n // Component (function type) - inline execution\n if (typeof type === 'function') {\n return createComponentElement(\n node as ElementWithContext,\n type,\n props,\n parentNamespace\n );\n }\n\n // For boundary - special handling\n if (type === __FOR_BOUNDARY__) {\n return createForBoundary(node as DOMElement, props, parentNamespace);\n }\n\n if (type === __ERROR_BOUNDARY__) {\n return createErrorBoundaryElement(\n node as ErrorBoundaryVNode,\n props,\n parentNamespace\n );\n }\n\n // Fragment support\n if (\n typeof type === 'symbol' &&\n (type === Fragment || String(type) === 'Symbol(Fragment)')\n ) {\n return createFragmentElement(node as DOMElement, props, parentNamespace);\n }\n }\n\n return null;\n}\n\ntype StaticCreateChildShape = {\n textContent: string | null;\n};\n\nfunction tryGetStaticCreateChildShape(\n children: unknown\n): StaticCreateChildShape | null {\n if (children === null || children === undefined || children === false) {\n return { textContent: null };\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n return { textContent: String(children) };\n }\n\n if (Array.isArray(children) && children.length === 1) {\n const child = children[0];\n if (child === null || child === undefined || child === false) {\n return { textContent: null };\n }\n if (typeof child === 'string' || typeof child === 'number') {\n return { textContent: String(child) };\n }\n }\n\n return null;\n}\n\nfunction isStaticCreateScalarValue(value: unknown): boolean {\n const valueType = typeof value;\n return (\n valueType === 'string' || valueType === 'number' || valueType === 'boolean'\n );\n}\n\nfunction tryGetStaticCreateFastPathShape(\n props: Record<string, unknown>,\n children: unknown\n): StaticCreateChildShape | null {\n const childShape = tryGetStaticCreateChildShape(children);\n if (!childShape) {\n return null;\n }\n\n for (const key in props) {\n if (key === 'ref') {\n return null;\n }\n if (isSkippedProp(key)) {\n continue;\n }\n\n const value = props[key];\n if (value === undefined || value === null || value === false) {\n continue;\n }\n\n if (parseEventName(key) || !isStaticCreateScalarValue(value)) {\n return null;\n }\n }\n\n return childShape;\n}\n\nfunction applyStaticScalarPropsToElement(\n el: Element,\n props: Record<string, unknown>\n): void {\n for (const key in props) {\n if (isSkippedProp(key)) {\n continue;\n }\n\n const value = props[key];\n if (value === undefined || value === null || value === false) {\n continue;\n }\n\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, String(value));\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n (el as HTMLElement & Record<string, unknown>)[key] = value;\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n }\n}\n\n/**\n * Create an intrinsic DOM element (div, span, etc.)\n */\nfunction createIntrinsicElement(\n node: DOMElement,\n type: string,\n props: Record<string, unknown>,\n parentNamespace?: string\n): Element {\n const children = props.children ?? node.children;\n const elementNamespace = resolveChildNamespace(type, parentNamespace);\n const el = createElementForNamespace(type, parentNamespace);\n\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n\n // Materialize key into DOM attribute\n materializeKey(el, node, props);\n\n const staticCreateFastPath = tryGetStaticCreateFastPathShape(props, children);\n\n if (staticCreateFastPath) {\n applyStaticScalarPropsToElement(el, props);\n if (staticCreateFastPath.textContent !== null) {\n el.textContent = staticCreateFastPath.textContent;\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n }\n return el;\n }\n\n // Apply props/attributes\n applyPropsToElement(el, props, type);\n\n // Add children\n // CRITICAL: Use nullish coalescing (?) instead of || because children can be 0, false, or empty string\n\n if (children !== null && children !== undefined) {\n const controlBoundaryVNode = getDirectControlBoundaryVNode(children);\n if (controlBoundaryVNode) {\n const controlState = getControlBoundaryState(controlBoundaryVNode);\n if (!controlState) {\n throw new Error(\n '[createIntrinsicElement] Control boundary missing internal state'\n );\n }\n registerControlBoundaryCommitOwner(el, controlState);\n }\n\n if (syncReactiveScalarChild(el, children)) {\n return el;\n }\n\n if (Array.isArray(children)) {\n maybeWarnMissingKeys(children);\n if (children.length > 1) {\n // Batch all children into a fragment so we touch the parent only once\n // instead of N times, reducing layout invalidations in the DOM engine.\n const childFrag = document.createDocumentFragment();\n for (const child of children) {\n const dom = createDOMNode(child, elementNamespace);\n if (dom) childFrag.appendChild(dom);\n }\n el.appendChild(childFrag);\n } else if (children.length === 1) {\n const dom = createDOMNode(children[0], elementNamespace);\n if (dom) el.appendChild(dom);\n }\n } else {\n const dom = createDOMNode(children, elementNamespace);\n if (dom) el.appendChild(dom);\n }\n }\n return el;\n}\n\nfunction findHostInstanceByType(\n host: InstanceHostElement,\n type: (props: Props) => unknown\n): ComponentInstance | null {\n const instances = host.__ASKR_INSTANCES;\n if (instances && instances.length > 0) {\n for (let index = instances.length - 1; index >= 0; index -= 1) {\n const instance = instances[index]!;\n if (instance.fn === type) {\n return instance;\n }\n }\n }\n\n return host.__ASKR_INSTANCE?.fn === type ? host.__ASKR_INSTANCE : null;\n}\n\nfunction materializeComponentResultNode(\n childInstance: ComponentInstance,\n result: unknown,\n parentNamespace?: string\n): Node {\n const dom = createDOMNode(result, parentNamespace);\n\n if (dom instanceof Element) {\n mountInstanceInline(childInstance, dom);\n return dom;\n }\n\n if (!dom) {\n const placeholder = document.createComment('');\n try {\n (\n placeholder as Comment & { __ASKR_INSTANCE?: ComponentInstance }\n ).__ASKR_INSTANCE = childInstance;\n } catch {\n // Ignore placeholder metadata failures.\n }\n childInstance._placeholder = placeholder;\n mountInstanceInline(childInstance, null);\n return placeholder;\n }\n\n const host = document.createElement('div') as InstanceHostElement;\n host.appendChild(dom);\n host.__ASKR_WRAPPER_HOST = true;\n mountInstanceInline(childInstance, host);\n return host;\n}\n\nfunction resolveNestedComponentResult(\n result: unknown,\n snapshot: ContextFrame | null,\n parentInstance: ComponentInstance | null\n): VNode {\n let currentResult = result as VNode;\n let activeSnapshot = snapshot;\n let depth = 0;\n\n while (\n _isDOMElement(currentResult) &&\n typeof currentResult.type === 'function' &&\n depth < 16\n ) {\n const nestedSnapshot =\n getVNodeContextFrame(currentResult) ?? activeSnapshot;\n const nestedInstance = createComponentInstance(\n nextComponentInstanceId(),\n currentResult.type as ComponentFunction,\n ((currentResult as DOMElement).props ?? {}) as Props,\n null\n );\n nestedInstance.isRoot = isRouteRootComponentVNode(currentResult);\n nestedInstance.parentInstance = parentInstance;\n nestedInstance.portalScope =\n parentInstance?.portalScope ?? nestedInstance.portalScope;\n inheritComponentCleanupStrict(nestedInstance);\n\n if (nestedSnapshot) {\n nestedInstance.ownerFrame = nestedSnapshot;\n }\n\n const nextResult = withContext(nestedSnapshot ?? null, () =>\n renderComponentInline(nestedInstance)\n );\n cleanupComponent(nestedInstance);\n\n if (isPromiseLike(nextResult)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n activeSnapshot = nestedSnapshot ?? null;\n currentResult = nextResult as VNode;\n depth += 1;\n }\n\n return currentResult;\n}\n\nfunction resolveHostNestedComponentResult(\n host: InstanceHostElement,\n retainedInstance: ComponentInstance,\n result: unknown,\n snapshot: ContextFrame | null,\n retainedHostInstances?: Iterable<ComponentInstance>\n): VNode {\n let currentResult = result as VNode;\n let activeSnapshot = snapshot;\n let depth = 0;\n const retainedInstances = new Set<ComponentInstance>([retainedInstance]);\n if (retainedHostInstances) {\n for (const instance of retainedHostInstances) {\n retainedInstances.add(instance);\n }\n }\n const createdInstances: ComponentInstance[] = [];\n\n while (\n _isDOMElement(currentResult) &&\n typeof currentResult.type === 'function' &&\n depth < 16\n ) {\n const nestedSnapshot =\n getVNodeContextFrame(currentResult) ?? activeSnapshot;\n let nestedInstance = findHostInstanceByType(\n host,\n currentResult.type as ComponentFunction\n );\n const hadNestedInstance = !!nestedInstance;\n\n if (!nestedInstance) {\n nestedInstance = createComponentInstance(\n nextComponentInstanceId(),\n currentResult.type as ComponentFunction,\n ((currentResult as DOMElement).props ?? {}) as Props,\n null\n );\n createdInstances.push(nestedInstance);\n }\n\n if (hadNestedInstance) {\n captureInlineRenderSnapshot(nestedInstance);\n }\n\n setVNodeComponentInstance(currentResult, nestedInstance);\n nestedInstance.isRoot = isRouteRootComponentVNode(currentResult);\n nestedInstance.parentInstance = retainedInstance;\n nestedInstance.portalScope =\n retainedInstance.portalScope ?? nestedInstance.portalScope;\n inheritComponentCleanupStrict(nestedInstance);\n nestedInstance.props =\n (((currentResult as DOMElement).props ?? {}) as Props) || {};\n\n if (nestedSnapshot) {\n nestedInstance.ownerFrame = nestedSnapshot;\n }\n\n const nextResult = withContext(nestedSnapshot ?? null, () =>\n renderComponentInline(nestedInstance)\n );\n\n if (isPromiseLike(nextResult)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n retainedInstances.add(nestedInstance);\n warnUnusedStateReads(nestedInstance);\n activeSnapshot = nestedSnapshot ?? null;\n currentResult = markVNodeTreeWithContextFrame(\n nextResult,\n activeSnapshot\n ) as VNode;\n depth += 1;\n }\n\n const previousInstances = host.__ASKR_INSTANCES ?? [];\n for (const instance of previousInstances) {\n if (!retainedInstances.has(instance)) {\n cleanupComponent(instance);\n }\n }\n\n const nextHostInstances = previousInstances.filter((instance) =>\n retainedInstances.has(instance)\n );\n for (const instance of retainedInstances) {\n if (instance.target === host && !nextHostInstances.includes(instance)) {\n nextHostInstances.push(instance);\n }\n }\n\n host.__ASKR_INSTANCES = nextHostInstances;\n host.__ASKR_INSTANCE = host.__ASKR_INSTANCES[0] ?? retainedInstance;\n\n for (const instance of createdInstances) {\n mountInstanceInline(instance, host);\n }\n\n return currentResult;\n}\n\nfunction resolveWrapperHostResult(\n host: InstanceHostElement,\n result: unknown,\n snapshot: ContextFrame | null\n): unknown {\n let currentResult = result;\n let activeSnapshot = snapshot;\n let depth = 0;\n\n while (\n _isDOMElement(currentResult) &&\n typeof currentResult.type === 'function' &&\n depth < 16\n ) {\n const nestedSnapshot =\n getVNodeContextFrame(currentResult) ?? activeSnapshot;\n const nestedInstance = findHostInstanceByType(\n host,\n currentResult.type as ComponentFunction\n );\n\n if (!nestedInstance) {\n break;\n }\n\n captureInlineRenderSnapshot(nestedInstance);\n\n nestedInstance.props =\n (((currentResult as DOMElement).props ?? {}) as Props) || {};\n nestedInstance.parentInstance = getCurrentInstance();\n nestedInstance.isRoot = isRouteRootComponentVNode(currentResult);\n nestedInstance.portalScope =\n getCurrentInstance()?.portalScope ?? nestedInstance.portalScope;\n inheritComponentCleanupStrict(nestedInstance);\n\n if (nestedSnapshot) {\n nestedInstance.ownerFrame = nestedSnapshot;\n }\n\n const nextResult = withContext(nestedSnapshot ?? null, () =>\n renderComponentInline(nestedInstance)\n );\n\n if (isPromiseLike(nextResult)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n warnUnusedStateReads(nestedInstance);\n activeSnapshot = nestedSnapshot ?? null;\n currentResult = nextResult;\n depth += 1;\n }\n\n return markVNodeTreeWithContextFrame(currentResult, activeSnapshot);\n}\n\nfunction isFragmentVNode(node: unknown): node is DOMElement {\n return (\n _isDOMElement(node) &&\n typeof (node as DOMElement).type === 'symbol' &&\n ((node as DOMElement).type === Fragment ||\n String((node as DOMElement).type) === 'Symbol(askr.fragment)')\n );\n}\n\nfunction normalizeComponentChildren(result: unknown): unknown[] {\n if (result === null || result === undefined || result === false) {\n return [];\n }\n\n if (Array.isArray(result)) {\n return result;\n }\n\n if (isFragmentVNode(result)) {\n const children = result.props?.children ?? result.children ?? [];\n return Array.isArray(children) ? children : [children];\n }\n\n return [result];\n}\n\nexport function syncComponentElement(\n currentDom: Node | null,\n node: ElementWithContext,\n type: ComponentFunction,\n props: Record<string, unknown>,\n parentNamespace?: string,\n forceChildrenUpdate = false,\n retainedHostInstances?: Iterable<ComponentInstance>\n): Node | null {\n const existingHost =\n currentDom instanceof Element ? (currentDom as InstanceHostElement) : null;\n const existingInstance = existingHost\n ? findHostInstanceByType(existingHost, type)\n : null;\n if (!existingHost) {\n return null;\n }\n\n if (!existingInstance || existingInstance.fn !== type) {\n const snapshot =\n getVNodeContextFrame(node) || getCurrentContextFrame() || null;\n const hydrationInstance = createComponentInstance(\n nextComponentInstanceId(),\n type,\n props || {},\n existingHost\n );\n hydrationInstance.isRoot = isRouteRootComponentVNode(node);\n hydrationInstance.portalScope =\n getCurrentInstance()?.portalScope ?? hydrationInstance.portalScope;\n inheritComponentCleanupStrict(hydrationInstance);\n\n setVNodeComponentInstance(node, hydrationInstance);\n\n if (snapshot) {\n hydrationInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(hydrationInstance)\n );\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n const scopedResult = markVNodeTreeWithContextFrame(\n result,\n snapshot ?? null\n );\n\n if (\n scopedResult &&\n typeof scopedResult === 'object' &&\n 'type' in (scopedResult as DOMElement) &&\n typeof (scopedResult as DOMElement).type === 'string' &&\n tagNamesEqualIgnoreCase(\n existingHost.tagName,\n (scopedResult as DOMElement).type as string\n )\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(scopedResult as DOMElement, node),\n true,\n forceChildrenUpdate || hydrationInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n mountInstanceInline(hydrationInstance, existingHost);\n itemInstanceHydrationComplete(existingHost);\n warnUnusedStateReads(hydrationInstance);\n return existingHost;\n }\n\n const resolvedResult = resolveHostNestedComponentResult(\n existingHost,\n hydrationInstance,\n scopedResult,\n snapshot ?? null,\n retainedHostInstances\n );\n if (\n _isDOMElement(resolvedResult) &&\n typeof resolvedResult.type === 'string' &&\n tagNamesEqualIgnoreCase(existingHost.tagName, resolvedResult.type)\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(resolvedResult, node),\n true,\n forceChildrenUpdate || hydrationInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n mountInstanceInline(hydrationInstance, existingHost);\n itemInstanceHydrationComplete(existingHost);\n warnUnusedStateReads(hydrationInstance);\n return existingHost;\n }\n\n const nextDom = materializeComponentResultNode(\n hydrationInstance,\n scopedResult,\n parentNamespace\n );\n\n if (nextDom instanceof Element) {\n materializeKey(nextDom, node, props);\n }\n\n if (nextDom !== existingHost && existingHost.parentNode) {\n existingHost.parentNode.replaceChild(nextDom, existingHost);\n cleanupDetachedComponentHost(existingHost, hydrationInstance);\n }\n\n warnUnusedStateReads(hydrationInstance);\n return nextDom;\n }\n\n const snapshot =\n getVNodeContextFrame(node) ||\n getCurrentContextFrame() ||\n existingInstance.ownerFrame ||\n null;\n captureInlineRenderSnapshot(existingInstance);\n existingInstance.props = props || {};\n existingInstance.isRoot = isRouteRootComponentVNode(node);\n existingInstance.portalScope =\n getCurrentInstance()?.portalScope ?? existingInstance.portalScope;\n inheritComponentCleanupStrict(existingInstance);\n\n if (snapshot) {\n existingInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(existingInstance)\n );\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n const scopedResult = markVNodeTreeWithContextFrame(result, snapshot ?? null);\n\n if (existingHost.__ASKR_WRAPPER_HOST) {\n const wrapperResult = resolveWrapperHostResult(\n existingHost,\n scopedResult,\n snapshot ?? null\n );\n updateElementChildren(\n existingHost,\n normalizeComponentChildren(wrapperResult) as VNode[]\n );\n warnUnusedStateReads(existingInstance);\n return existingHost;\n }\n\n if (\n scopedResult &&\n typeof scopedResult === 'object' &&\n 'type' in (scopedResult as DOMElement) &&\n typeof (scopedResult as DOMElement).type === 'string' &&\n tagNamesEqualIgnoreCase(\n existingHost.tagName,\n (scopedResult as DOMElement).type as string\n )\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(scopedResult as DOMElement, node),\n true,\n forceChildrenUpdate || existingInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n warnUnusedStateReads(existingInstance);\n return existingHost;\n }\n\n const resolvedResult = resolveHostNestedComponentResult(\n existingHost,\n existingInstance,\n scopedResult,\n snapshot ?? null,\n retainedHostInstances\n );\n if (\n _isDOMElement(resolvedResult) &&\n typeof resolvedResult.type === 'string' &&\n tagNamesEqualIgnoreCase(existingHost.tagName, resolvedResult.type)\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(resolvedResult, node),\n true,\n forceChildrenUpdate || existingInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n warnUnusedStateReads(existingInstance);\n return existingHost;\n }\n\n const nextDom = materializeComponentResultNode(\n existingInstance,\n scopedResult,\n parentNamespace\n );\n\n if (nextDom instanceof Element) {\n materializeKey(nextDom, node, props);\n }\n\n if (nextDom !== existingHost && existingHost.parentNode) {\n existingHost.parentNode.replaceChild(nextDom, existingHost);\n cleanupDetachedComponentHost(existingHost, existingInstance);\n }\n\n warnUnusedStateReads(existingInstance);\n return nextDom;\n}\n\nfunction itemInstanceHydrationComplete(host: InstanceHostElement): void {\n const instance = host.__ASKR_INSTANCE;\n if (instance) {\n const scope = (\n instance as unknown as { scope?: { hydrationPending?: boolean } }\n ).scope;\n if (scope) {\n scope.hydrationPending = false;\n }\n }\n}\n\nfunction createComponentElement(\n node: ElementWithContext,\n type: (props: Props) => unknown,\n props: Record<string, unknown>,\n parentNamespace?: string\n): Node {\n // Check if this vnode has a marked context frame\n const frame = getVNodeContextFrame(node);\n const snapshot = frame || getCurrentContextFrame();\n\n const componentFn = type as (props: Props) => unknown;\n const isAsync = componentFn.constructor.name === 'AsyncFunction';\n\n if (isAsync) {\n throw new Error(\n 'Async components are not supported. Use resource() for async work.'\n );\n }\n\n // Ensure there is a persistent instance object attached to this vnode\n let childInstance = getVNodeComponentInstance(node);\n const hadChildInstance = !!childInstance;\n if (!childInstance) {\n childInstance = createComponentInstance(\n nextComponentInstanceId(),\n componentFn as ComponentFunction,\n props || {},\n null\n );\n setVNodeComponentInstance(node, childInstance);\n }\n\n if (hadChildInstance) {\n captureInlineRenderSnapshot(childInstance);\n }\n\n childInstance.portalScope =\n getCurrentInstance()?.portalScope ?? childInstance.portalScope;\n childInstance.parentInstance = getCurrentInstance();\n childInstance.props = props || {};\n childInstance.isRoot = isRouteRootComponentVNode(node);\n inheritComponentCleanupStrict(childInstance);\n\n if (snapshot) {\n childInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(childInstance)\n );\n\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n const scopedResult = markVNodeTreeWithContextFrame(result, snapshot ?? null);\n\n const dom = withContext(snapshot, () =>\n materializeComponentResultNode(childInstance, scopedResult, parentNamespace)\n );\n\n warnUnusedStateReads(childInstance);\n\n if (dom instanceof Element) {\n materializeKey(dom, node, props);\n }\n return dom;\n}\n\n/**\n * Create a document fragment from Fragment vnode\n */\nfunction createFragmentElement(\n node: DOMElement,\n props: Record<string, unknown>,\n parentNamespace?: string\n): DocumentFragment {\n const fragment = document.createDocumentFragment();\n const children = props.children ?? node.children;\n if (children) {\n if (Array.isArray(children)) {\n maybeWarnMissingKeys(children);\n for (const child of children) {\n const dom = createDOMNode(child, parentNamespace);\n if (dom) fragment.appendChild(dom);\n }\n } else {\n const dom = createDOMNode(children, parentNamespace);\n if (dom) fragment.appendChild(dom);\n }\n }\n return fragment;\n}\n\n/**\n * Check if a cached DOM node can be reused for a given vnode.\n *\n * Returns true if shape has changed (i.e., DOM cannot be reused).\n * Structural check: compares DOM tagName with vnode type.\n * Do NOT rely on vnode identity (===) — vnodes are mutable.\n */\nfunction checkVNodeShapeChanged(dom: Node, vnode: VNode): boolean {\n if (!_isDOMElement(vnode)) return true;\n if (!(dom instanceof Element)) return true;\n // Structural check: element type must match\n const vnodeType = (vnode as DOMElement).type;\n if (typeof vnodeType !== 'string') return true;\n return dom.tagName.toLowerCase() !== vnodeType.toLowerCase();\n}\n\nfunction materializeChildScopeDom(\n vnode: VNode,\n parentNamespace?: string\n): Node | null {\n if (vnode === null || vnode === undefined || vnode === false) {\n return document.createComment('');\n }\n\n const dom = createDOMNode(vnode, parentNamespace);\n if (!(dom instanceof DocumentFragment)) {\n return dom;\n }\n\n const firstChild = dom.firstChild;\n const secondChild = firstChild?.nextSibling ?? null;\n if (!firstChild) {\n return document.createComment('');\n }\n if (secondChild) {\n throw new Error('[askr] Child scopes must render a single DOM root node.');\n }\n return firstChild;\n}\n\nfunction evaluateControlBoundaryState(\n controlState: ControlBoundaryState\n): VNode[] {\n if (controlState.kind === 'for') {\n return evaluateForState(controlState);\n }\n if (controlState.kind === 'show') {\n return evaluateShowState(controlState);\n }\n return evaluateCaseState(controlState);\n}\n\nfunction clearControlBoundaryDomUpdateState(\n controlState: ControlBoundaryState\n): void {\n if (controlState.kind === 'for') {\n clearForDomUpdateState(controlState);\n return;\n }\n if (controlState.kind === 'show') {\n clearShowDomUpdateState(controlState);\n return;\n }\n clearCaseDomUpdateState(controlState);\n}\n\nfunction getControlBoundaryState(\n node: DOMElement\n): ControlBoundaryState | null {\n return (\n node._controlState ??\n (node._forState as ControlBoundaryState | undefined) ??\n null\n );\n}\n\nfunction getDirectControlBoundaryVNode(children: unknown): DOMElement | null {\n if (\n !Array.isArray(children) &&\n _isDOMElement(children) &&\n (children as DOMElement).type === __FOR_BOUNDARY__\n ) {\n return children as DOMElement;\n }\n\n if (\n Array.isArray(children) &&\n children.length === 1 &&\n _isDOMElement(children[0]) &&\n (children[0] as DOMElement).type === __FOR_BOUNDARY__\n ) {\n return children[0] as DOMElement;\n }\n\n return null;\n}\n\nfunction getControlBoundaryCommitChildren(\n controlState: ControlBoundaryState\n): VNode[] {\n if (controlState.kind === 'for' && controlState._needsSourceReconcile) {\n return evaluateForState(controlState);\n }\n\n if (controlState.kind !== 'for') {\n const activeVNode = controlState.activeScope?.vnode;\n return activeVNode == null || activeVNode === false ? [] : [activeVNode];\n }\n\n if (controlState.orderedKeys.length === 0) {\n const fallbackVNode = controlState.fallbackScope?.vnode;\n return fallbackVNode == null || fallbackVNode === false\n ? []\n : [fallbackVNode];\n }\n\n const childrenVNodes: VNode[] = [];\n for (let index = 0; index < controlState.orderedKeys.length; index += 1) {\n const itemKey = controlState.orderedKeys[index];\n const itemInstance = controlState.items.get(itemKey);\n childrenVNodes.push((itemInstance?.scope.vnode ?? null) as VNode);\n }\n\n return childrenVNodes;\n}\n\nfunction clearControlBoundaryCommitOwner(parent: Element): void {\n const owner = controlBoundaryOwners.get(parent) as\n | ControlBoundaryCommitOwnerState\n | undefined;\n if (owner) {\n owner._enqueueBoundaryCommit = null;\n owner._hasPendingBoundaryCommit = false;\n if (owner._commitOwner === parent) {\n owner._commitOwner = null;\n }\n }\n\n controlBoundaryOwners.delete(parent);\n}\n\nfunction registerControlBoundaryCommitOwner(\n parent: Element,\n controlState: ControlBoundaryState\n): void {\n const ownerState = controlState as ControlBoundaryCommitOwnerState;\n const previousParent = ownerState._commitOwner;\n if (\n previousParent &&\n previousParent !== parent &&\n controlBoundaryOwners.get(previousParent) === controlState\n ) {\n controlBoundaryOwners.delete(previousParent);\n }\n\n const previousOwner = controlBoundaryOwners.get(parent) as\n | ControlBoundaryCommitOwnerState\n | undefined;\n if (previousOwner && previousOwner !== controlState) {\n previousOwner._enqueueBoundaryCommit = null;\n previousOwner._hasPendingBoundaryCommit = false;\n if (previousOwner._commitOwner === parent) {\n previousOwner._commitOwner = null;\n }\n }\n\n controlBoundaryOwners.set(parent, controlState);\n ownerState._commitOwner = parent;\n controlState._enqueueBoundaryCommit = () => {\n if (controlState._hasPendingBoundaryCommit) {\n return;\n }\n\n controlState._hasPendingBoundaryCommit = true;\n globalScheduler.enqueue(() => {\n controlState._hasPendingBoundaryCommit = false;\n\n if (controlBoundaryOwners.get(parent) !== controlState) {\n return;\n }\n\n const childrenVNodes = getControlBoundaryCommitChildren(controlState);\n commitForBoundaryChildren(parent, controlState, childrenVNodes);\n });\n };\n}\n\n/**\n * Create DOM from For boundary - evaluates list and renders items\n *\n * CRITICAL INVARIANT:\n * DOM order MUST be reconstructed from the current vnode list on every render.\n * Reusing DOM nodes never implies preserving their position.\n *\n * This function ALWAYS returns a fragment whose child order exactly matches\n * the evaluated vnode list, even when all DOM nodes are reused.\n * Appending an existing node to the fragment is how we express reordering\n * (per DOM spec, appendChild moves already-attached nodes).\n *\n * Do NOT:\n * - Skip appending based on parentElement or existing attachment\n * - Rely on vnode identity (===) to decide DOM reuse (vnodes are mutable)\n * - Introduce fast-paths that might skip DOM reconstruction\n */\nexport function createForBoundary(\n node: DOMElement,\n props: Record<string, unknown>,\n parentNamespace?: string\n): DocumentFragment {\n void props;\n const controlState = getControlBoundaryState(node);\n\n if (!controlState) {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Control boundary missing state');\n }\n return document.createDocumentFragment();\n }\n\n const childrenVNodes = evaluateControlBoundaryState(controlState);\n\n // DOM order MUST be reconstructed from the current vnode list on every render.\n // Reusing DOM nodes never implies preserving their position.\n const fragment = document.createDocumentFragment();\n\n if (controlState.kind !== 'for') {\n const activeScope = controlState.activeScope;\n const vnode = childrenVNodes[0];\n if (activeScope && vnode !== undefined) {\n const dom = materializeChildScopeDom(vnode, parentNamespace);\n activeScope.dom = dom ?? undefined;\n if (dom) {\n fragment.appendChild(dom);\n }\n }\n clearControlBoundaryDomUpdateState(controlState);\n return fragment;\n }\n\n const forState = controlState;\n if (forState.orderedKeys.length === 0) {\n const fallbackScope = forState.fallbackScope;\n const fallbackVNode = childrenVNodes[0];\n if (fallbackScope && fallbackVNode !== undefined) {\n const dom = materializeChildScopeDom(fallbackVNode, parentNamespace);\n fallbackScope.dom = dom ?? undefined;\n if (dom) {\n fragment.appendChild(dom);\n }\n }\n clearControlBoundaryDomUpdateState(controlState);\n return fragment;\n }\n\n for (let i = 0; i < childrenVNodes.length; i++) {\n const childVNode = childrenVNodes[i];\n // Use orderedKeys[i] to look up items — this is aligned with vnode order\n // after reconciliation. Do NOT use childVNode.key (JSX key may differ).\n const itemKey = forState.orderedKeys[i];\n const itemInstance = itemKey != null ? forState.items.get(itemKey) : null;\n\n let dom: Node | null = null;\n\n // Try to reuse existing DOM if element type matches (structural check).\n // Do NOT rely on vnode identity (===) — vnodes are mutable.\n if (itemInstance && itemInstance.scope.dom) {\n const cachedDom = itemInstance.scope.dom;\n // Structural check: element type must match for safe reuse\n if (!checkVNodeShapeChanged(cachedDom, childVNode)) {\n dom = cachedDom;\n }\n }\n\n // Create new DOM if no reusable node available\n if (!dom) {\n dom = materializeChildScopeDom(childVNode, parentNamespace);\n // Cache the DOM in the item instance for future reuse\n if (itemInstance) {\n itemInstance.scope.dom = dom ?? undefined;\n }\n }\n\n if (dom) {\n // Always update reused DOM from current vnode (never rely on vnode identity)\n\n // ALWAYS append to fragment — this is mandatory for correct ordering.\n // Appending an existing node moves it (DOM spec) — this is how reordering works.\n // No parentElement checks may gate insertion.\n fragment.appendChild(dom);\n }\n }\n\n clearControlBoundaryDomUpdateState(controlState);\n return fragment;\n}\n\ntype ErrorBoundaryVNode = DOMElement & {\n __instance?: ComponentInstance;\n};\n\nfunction createErrorBoundaryElement(\n node: ErrorBoundaryVNode,\n props: Record<string, unknown>,\n parentNamespace?: string\n): Node {\n const boundaryState = node.__instance?.errorBoundaryState ?? null;\n const reset = node.__instance\n ? createBoundaryReset(node.__instance)\n : () => {};\n const fallback = props.fallback as ErrorBoundaryProps['fallback'];\n const children = props.children as ErrorBoundaryProps['children'];\n\n if (boundaryState?.error != null) {\n const fallbackValue = resolveErrorBoundaryFallback(\n fallback,\n boundaryState.error,\n reset\n );\n if (fallbackValue instanceof Node) {\n return fallbackValue;\n }\n const fallbackDom = createDOMNode(fallbackValue, parentNamespace);\n return fallbackDom ?? document.createComment('');\n }\n\n try {\n const dom = createDOMNode(children, parentNamespace);\n return dom ?? document.createComment('');\n } catch (error) {\n if (node.__instance) {\n reportBoundaryError(\n node.__instance,\n error,\n props.onError as ((next: unknown) => void) | undefined\n );\n } else {\n logger.error('[Askr] ErrorBoundary caught render error:', error);\n }\n\n const fallbackValue = resolveErrorBoundaryFallback(fallback, error, reset);\n if (fallbackValue instanceof Node) {\n return fallbackValue;\n }\n const fallbackDom = createDOMNode(fallbackValue, parentNamespace);\n return fallbackDom ?? document.createComment('');\n }\n}\n\nfunction syncForItemDom(\n parent: Element,\n scope: {\n dom?: Node;\n needsDomUpdate: boolean;\n },\n vnode: VNode\n): Node | null {\n let dom = scope.dom ?? null;\n\n const parentNamespace =\n parent.namespaceURI === SVG_NAMESPACE ? SVG_NAMESPACE : undefined;\n\n if (_isDOMElement(vnode) && typeof vnode.type === 'function') {\n const syncedComponentDom = syncComponentElement(\n dom,\n vnode as ElementWithContext,\n vnode.type as ComponentFunction,\n ((vnode as DOMElement).props ?? {}) as Record<string, unknown>,\n parentNamespace\n );\n if (syncedComponentDom) {\n scope.dom = syncedComponentDom ?? undefined;\n return syncedComponentDom;\n }\n }\n\n if (!dom) {\n dom = materializeChildScopeDom(vnode, parentNamespace);\n scope.dom = dom ?? undefined;\n return dom;\n }\n\n if (\n dom.nodeType === 3 &&\n (typeof vnode === 'string' || typeof vnode === 'number')\n ) {\n (dom as Text).data = String(vnode);\n return dom;\n }\n\n if (\n dom.nodeType === 8 &&\n (vnode === null || vnode === undefined || vnode === false)\n ) {\n return dom;\n }\n\n if (\n dom instanceof Element &&\n _isDOMElement(vnode) &&\n typeof vnode.type === 'string' &&\n tagNamesEqualIgnoreCase(dom.tagName, vnode.type)\n ) {\n updateElementFromVnode(dom, vnode, true);\n return dom;\n }\n\n const nextDom = materializeChildScopeDom(vnode, parentNamespace);\n if (!nextDom) {\n if (dom.parentNode === parent) {\n teardownNodeSubtree(dom);\n dom.parentNode.removeChild(dom);\n }\n scope.dom = undefined;\n return null;\n }\n\n if (dom.parentNode === parent) {\n parent.replaceChild(nextDom, dom);\n }\n\n teardownNodeSubtree(dom);\n\n scope.dom = nextDom;\n return nextDom;\n}\n\nfunction normalizeStableIntrinsicChildren(\n children: VNode | VNode[] | undefined\n): VNode[] {\n if (children === null || children === undefined || children === false) {\n return [];\n }\n\n return Array.isArray(children) ? children : [children];\n}\n\nfunction getStableIntrinsicChildren(vnode: DOMElement): VNode[] {\n return normalizeStableIntrinsicChildren(\n (vnode.props?.children as VNode | VNode[] | undefined) ?? vnode.children\n );\n}\n\nfunction patchStableIntrinsicText(domNode: Node, nextVNode: VNode): boolean {\n if (\n domNode.nodeType !== 3 ||\n (typeof nextVNode !== 'string' && typeof nextVNode !== 'number')\n ) {\n return false;\n }\n\n const nextText = String(nextVNode);\n const textNode = domNode as Text;\n if (textNode.data !== nextText) {\n recordBenchEvent('domTextSet');\n textNode.data = nextText;\n }\n\n return true;\n}\n\nfunction patchStableIntrinsicElement(\n dom: Element,\n nextVNode: DOMElement\n): boolean {\n if (\n typeof nextVNode.type !== 'string' ||\n !tagNamesEqualIgnoreCase(dom.tagName, nextVNode.type)\n ) {\n return false;\n }\n\n updateElementFromVnode(dom, nextVNode, false);\n\n const nextChildren = getStableIntrinsicChildren(nextVNode);\n if (dom.childNodes.length !== nextChildren.length) {\n return false;\n }\n\n for (let index = 0; index < nextChildren.length; index += 1) {\n const nextChild = nextChildren[index];\n\n const currentChildNode = dom.childNodes[index];\n if (!currentChildNode) {\n return false;\n }\n\n if (patchStableIntrinsicText(currentChildNode, nextChild)) {\n continue;\n }\n\n if (\n currentChildNode instanceof Element &&\n _isDOMElement(nextChild) &&\n typeof nextChild.type === 'string' &&\n patchStableIntrinsicElement(currentChildNode, nextChild)\n ) {\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction resolveStableIntrinsicPatchVNode(\n dom: Element,\n vnode: VNode\n): DOMElement | null {\n if (!_isDOMElement(vnode)) {\n return null;\n }\n\n if (typeof vnode.type === 'string') {\n return tagNamesEqualIgnoreCase(dom.tagName, vnode.type) ? vnode : null;\n }\n\n if (typeof vnode.type !== 'function') {\n return null;\n }\n\n const host = dom as InstanceHostElement;\n const existingInstance = findHostInstanceByType(\n host,\n vnode.type as ComponentFunction\n );\n if (\n !existingInstance ||\n existingInstance.fn !== vnode.type ||\n host.__ASKR_WRAPPER_HOST\n ) {\n return null;\n }\n\n const snapshot =\n getVNodeContextFrame(vnode) ||\n getCurrentContextFrame() ||\n existingInstance.ownerFrame ||\n null;\n\n captureInlineRenderSnapshot(existingInstance);\n\n existingInstance.props =\n (((vnode as DOMElement).props ?? {}) as Record<string, unknown>) || {};\n existingInstance.isRoot = isRouteRootComponentVNode(vnode);\n existingInstance.portalScope =\n getCurrentInstance()?.portalScope ?? existingInstance.portalScope;\n inheritComponentCleanupStrict(existingInstance);\n\n if (snapshot) {\n existingInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(existingInstance)\n );\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n const resolvedResult = resolveNestedComponentResult(\n result,\n snapshot ?? null,\n existingInstance\n );\n if (\n _isDOMElement(resolvedResult) &&\n typeof resolvedResult.type === 'string' &&\n tagNamesEqualIgnoreCase(dom.tagName, resolvedResult.type)\n ) {\n return inheritComponentKey(resolvedResult, vnode as DOMElement);\n }\n\n return null;\n}\n\nexport function tryPatchStableForDirtyItem(scope: {\n dom?: Node;\n vnode?: VNode;\n}): boolean {\n incDevCounter('stableForPatchAttempt');\n if (!(scope.dom instanceof Element) || scope.vnode === undefined) {\n return false;\n }\n\n const nextIntrinsic = resolveStableIntrinsicPatchVNode(\n scope.dom,\n scope.vnode\n );\n if (!nextIntrinsic) {\n return false;\n }\n\n const didPatch = patchStableIntrinsicElement(scope.dom, nextIntrinsic);\n\n const existingInstance = (scope.dom as InstanceHostElement).__ASKR_INSTANCE;\n if (didPatch && existingInstance) {\n warnUnusedStateReads(existingInstance);\n }\n\n if (didPatch) {\n incDevCounter('stableForPatchHit');\n }\n\n return didPatch;\n}\n\nexport function commitForBoundaryChildren(\n parent: Element,\n controlState: ControlBoundaryState,\n childrenVNodes: VNode[]\n): void {\n if (controlState.kind !== 'for') {\n const activeScope = controlState.activeScope;\n const activeVNode = childrenVNodes[0];\n const nextDom =\n activeScope && activeVNode !== undefined\n ? syncForItemDom(parent, activeScope, activeVNode)\n : null;\n\n for (let i = 0; i < controlState.lastRemovedNodes.length; i++) {\n const removedNode = controlState.lastRemovedNodes[i];\n if (removedNode instanceof Element) {\n teardownNodeSubtree(removedNode);\n }\n if (removedNode.parentNode === parent) {\n recordBenchEvent('domRemove');\n parent.removeChild(removedNode);\n }\n }\n\n if (nextDom) {\n if (\n parent.childNodes.length !== 1 ||\n parent.firstChild !== nextDom ||\n controlState.lastRemovedNodes.length > 0\n ) {\n parent.replaceChildren(nextDom);\n }\n } else if (parent.firstChild) {\n parent.textContent = '';\n }\n\n keyedElements.delete(parent);\n clearControlBoundaryDomUpdateState(controlState);\n return;\n }\n\n commitForStateBoundaryChildren(parent, controlState, childrenVNodes, {\n isProduction: () => getRuntimeEnv().NODE_ENV === 'production',\n syncForItemDom,\n tryPatchStableForDirtyItem,\n });\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Element Updates\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Update an existing element's attributes and children from vnode\n */\nexport function updateElementFromVnode(\n el: Element,\n vnode: VNode,\n updateChildren = true,\n forceChildrenUpdate = false\n): void {\n if (!_isDOMElement(vnode)) {\n return;\n }\n\n const props = (vnode.props || {}) as Record<string, unknown>;\n const domVNode = vnode as DOMElement;\n\n if (isHydrationSkipped(el)) {\n clearHydrationDeferredSubtree(el);\n return;\n }\n\n // Ensure key is materialized\n materializeKey(el, vnode, props);\n\n // Diff and update event listeners and other attributes\n const existingListeners = elementListeners.get(el);\n const existingReactiveProps = elementReactivePropsCleanup.get(el);\n\n // Fast path: when element has no tracked listeners/reactive props and all\n // static scalar props already match, skip full prop diff machinery.\n if (\n (!existingListeners || existingListeners.size === 0) &&\n (!existingReactiveProps || existingReactiveProps.size === 0)\n ) {\n if (\n !forceChildrenUpdate &&\n hasMatchingStaticProps(el, props, vnode.type as string)\n ) {\n if (updateChildren) {\n const children =\n (props.children as VNode | VNode[] | undefined) ?? vnode.children;\n if (!forceChildrenUpdate && canReuseStaticSubtree(el, domVNode)) {\n return;\n }\n updateElementChildren(el, children, forceChildrenUpdate);\n }\n return;\n }\n }\n\n // Lazily materialize desired listener keys only if we need to diff against\n // existing listeners. Capture and bubble handlers on the same DOM event need\n // distinct keys even though they share the rendered event name.\n let desiredListenerKeys: Set<string> | null = null;\n let desiredDelegatedEventNames: Set<string> | null = null;\n let desiredReactivePropNames: Set<string> | null = null;\n const nextChildren = props.children ?? domVNode.children;\n const usesReactiveChildren = syncReactiveScalarChild(el, nextChildren);\n\n if (usesReactiveChildren) {\n (desiredReactivePropNames ??= new Set()).add(REACTIVE_CHILDREN_KEY);\n }\n\n for (const key in props) {\n const value = props[key];\n if (isSkippedProp(key)) continue;\n\n const eventProp = parseEventProp(key);\n const eventName = eventProp?.eventName;\n const eventCapture = eventProp?.capture ?? false;\n const listenerKey =\n eventName === undefined\n ? null\n : getEventListenerKey(eventName, eventCapture);\n\n // Handle removal cases\n if (value === undefined || value === null || value === false) {\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, '');\n } else if (key === 'value') {\n applyFormControlProp(el, key, '', vnode.type as string);\n } else if (key === 'checked') {\n applyFormControlProp(el, key, false, vnode.type as string);\n } else if (listenerKey && existingListeners?.has(listenerKey)) {\n const entry = existingListeners.get(listenerKey)!;\n incDevCounter('listenerRemoves');\n if (entry.isDelegated) {\n removeDelegatedListener(el, entry.eventName);\n } else {\n if (entry.options !== undefined) {\n el.removeEventListener(\n entry.eventName,\n entry.handler,\n entry.options\n );\n } else {\n el.removeEventListener(entry.eventName, entry.handler);\n }\n }\n existingListeners.delete(listenerKey);\n } else {\n const entry = existingReactiveProps?.get(key);\n if (entry) {\n entry.cleanup();\n existingReactiveProps?.delete(key);\n } else {\n removeRenderedAttribute(el, key);\n }\n }\n continue;\n }\n\n // Handle reactive props (functions)\n if (typeof value === 'function' && !eventProp && key !== 'ref') {\n const existingEntry = existingReactiveProps?.get(key);\n if (existingReactiveProps && existingReactiveProps.size > 0) {\n (desiredReactivePropNames ??= new Set()).add(key);\n }\n\n // Only cleanup and re-setup if function reference changed (Issue 1 fix)\n if (existingEntry && existingEntry.fnRef === value) {\n // Same function reference, no need to re-setup\n continue;\n }\n\n if (existingEntry?.updateFn) {\n existingEntry.updateFn(value as () => unknown);\n existingEntry.fnRef = value as () => unknown;\n continue;\n }\n\n // If function reference changed, cleanup old and setup new\n if (existingEntry) {\n existingEntry.cleanup();\n }\n\n const reactive = setupReactiveProp(\n el,\n key,\n value as () => unknown,\n vnode.type as string\n );\n\n if (!elementReactivePropsCleanup.has(el)) {\n elementReactivePropsCleanup.set(el, new Map());\n }\n elementReactivePropsCleanup.get(el)!.set(key, {\n cleanup: reactive.cleanup,\n updateFn: (nextValue) => {\n reactive.updateFn(nextValue as () => unknown);\n },\n fnRef: value as () => unknown,\n });\n continue;\n }\n\n const existingReactiveEntry = existingReactiveProps?.get(key);\n if (existingReactiveEntry) {\n existingReactiveEntry.cleanup();\n existingReactiveProps?.delete(key);\n }\n\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, String(value));\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n applyFormControlProp(el, key, value, vnode.type as string);\n } else if (eventProp && listenerKey) {\n const eventName = eventProp.eventName;\n const eventCapture = eventProp.capture;\n const useDelegation =\n !eventCapture &&\n isEventDelegationEnabled() &&\n isDelegatedEvent(eventName);\n if (useDelegation) {\n (desiredDelegatedEventNames ??= new Set()).add(eventName);\n }\n\n if (useDelegation) {\n const existingDelegated = getDelegatedHandlerForElement(el, eventName);\n if (existingDelegated?.original === value) {\n continue;\n }\n\n if (\n existingDelegated &&\n updateDelegatedListener(\n el,\n eventName,\n value as EventListener,\n value as EventListener,\n undefined\n )\n ) {\n continue;\n }\n\n addDelegatedListener(\n el,\n eventName,\n value as EventListener,\n value as EventListener,\n undefined\n );\n continue;\n }\n\n (desiredListenerKeys ??= new Set()).add(listenerKey);\n\n const existing = existingListeners?.get(listenerKey);\n\n if (existing && existing.original === value) {\n continue;\n }\n\n if (existing) {\n if (\n useDelegation &&\n existing.isDelegated &&\n updateDelegatedListener(\n el,\n eventName,\n value as EventListener,\n value as EventListener,\n undefined\n )\n ) {\n existing.handler = value as EventListener;\n existing.original = value as EventListener;\n existing.options = undefined;\n continue;\n }\n\n if (!useDelegation && !existing.isDelegated && existing.updateHandler) {\n existing.updateHandler(value as EventListener);\n existing.original = value as EventListener;\n continue;\n }\n\n if (existing.isDelegated) {\n removeDelegatedListener(el, existing.eventName);\n } else {\n if (existing.options !== undefined) {\n el.removeEventListener(\n existing.eventName,\n existing.handler,\n existing.options\n );\n } else {\n el.removeEventListener(existing.eventName, existing.handler);\n }\n }\n }\n\n const options = getEventListenerOptions(eventName, eventCapture);\n const mutableHandler = createMutableWrappedHandler(\n value as EventListener,\n true\n );\n const trackedHandler = mutableHandler.handler;\n\n if (options !== undefined) {\n el.addEventListener(eventName, trackedHandler, options);\n } else {\n el.addEventListener(eventName, trackedHandler);\n }\n incDevCounter('listenerAdds');\n\n const listenerEntry = {\n handler: trackedHandler,\n original: value as EventListener,\n eventName,\n options,\n isDelegated: false,\n updateHandler: mutableHandler?.updateHandler,\n };\n if (!elementListeners.has(el)) {\n elementListeners.set(el, new Map());\n }\n elementListeners.get(el)!.set(listenerKey, listenerEntry);\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n }\n\n removeStaleAttributes(el, domVNode, props);\n\n if (existingListeners && existingListeners.size > 0) {\n // If no event props were present, all existing listeners are undesired.\n if (desiredListenerKeys === null) {\n existingListeners.forEach((entry) => {\n incDevCounter('listenerRemoves');\n if (entry.isDelegated) {\n removeDelegatedListener(el, entry.eventName);\n } else {\n if (entry.options !== undefined) {\n el.removeEventListener(\n entry.eventName,\n entry.handler,\n entry.options\n );\n } else {\n el.removeEventListener(entry.eventName, entry.handler);\n }\n }\n });\n elementListeners.delete(el);\n } else {\n existingListeners.forEach((entry, listenerKey) => {\n if (!desiredListenerKeys.has(listenerKey)) {\n incDevCounter('listenerRemoves');\n if (entry.isDelegated) {\n removeDelegatedListener(el, entry.eventName);\n } else {\n if (entry.options !== undefined) {\n el.removeEventListener(\n entry.eventName,\n entry.handler,\n entry.options\n );\n } else {\n el.removeEventListener(entry.eventName, entry.handler);\n }\n }\n existingListeners.delete(listenerKey);\n }\n });\n if (existingListeners.size === 0) elementListeners.delete(el);\n }\n }\n\n const delegatedHandlers = getDelegatedHandlersForElement(el);\n if (delegatedHandlers && delegatedHandlers.size > 0) {\n if (desiredDelegatedEventNames === null) {\n for (const eventName of delegatedHandlers.keys()) {\n removeDelegatedListener(el, eventName);\n }\n } else {\n for (const eventName of delegatedHandlers.keys()) {\n if (!desiredDelegatedEventNames.has(eventName)) {\n removeDelegatedListener(el, eventName);\n }\n }\n }\n }\n\n if (existingReactiveProps && existingReactiveProps.size > 0) {\n if (desiredReactivePropNames === null) {\n existingReactiveProps.forEach((entry) => {\n entry.cleanup();\n });\n elementReactivePropsCleanup.delete(el);\n } else {\n existingReactiveProps.forEach((entry, key) => {\n if (!desiredReactivePropNames.has(key)) {\n entry.cleanup();\n existingReactiveProps.delete(key);\n }\n });\n if (existingReactiveProps.size === 0) {\n elementReactivePropsCleanup.delete(el);\n }\n }\n }\n\n // Update children\n if (updateChildren) {\n const children =\n (props.children as VNode | VNode[] | undefined) ?? vnode.children;\n if (usesReactiveChildren) {\n return;\n }\n updateElementChildren(el, children, forceChildrenUpdate);\n }\n}\n\nexport function updateElementChildren(\n el: Element,\n children: VNode | VNode[] | undefined,\n forceUpdate = false\n): void {\n const directControlBoundary = getDirectControlBoundaryVNode(children);\n if (directControlBoundary) {\n const controlState = getControlBoundaryState(directControlBoundary);\n if (!controlState) {\n throw new Error(\n '[updateElementChildren] Control boundary missing internal state'\n );\n }\n\n registerControlBoundaryCommitOwner(el, controlState);\n const childrenVNodes = evaluateControlBoundaryState(controlState);\n commitForBoundaryChildren(el, controlState, childrenVNodes as VNode[]);\n return;\n }\n\n clearControlBoundaryCommitOwner(el);\n\n // CRITICAL: Check for null/undefined explicitly, not falsy values\n // because 0, false, and '' are valid children\n if (children === null || children === undefined) {\n // Clean up all children before clearing\n for (let n = el.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n el.textContent = '';\n return;\n }\n\n if (!Array.isArray(children) && isFragmentVNode(children)) {\n updateUnkeyedChildren(\n el,\n normalizeComponentChildren(children),\n forceUpdate\n );\n return;\n }\n\n if (\n !Array.isArray(children) &&\n (typeof children === 'string' || typeof children === 'number')\n ) {\n if (el.childNodes.length === 1 && el.firstChild?.nodeType === 3) {\n const s = String(children);\n const t = el.firstChild as Text;\n // Skip the write when the text is already correct — avoids triggering\n // DOM mutation observers and text layout passes for unchanged nodes.\n if (t.data !== s) t.data = s;\n } else {\n // Clean up all children before replacing with text\n for (let n = el.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n el.textContent = String(children);\n }\n return;\n }\n\n if (Array.isArray(children)) {\n if (trySyncScalarChildSequenceInPlace(el, children)) {\n keyedElements.delete(el);\n return;\n }\n\n if (hasKeyedVNodeChildren(children)) {\n const oldKeyMap = getOrBuildDomKeyMap(el);\n const newKeyMap = reconcileKeyedChildren(el, children, oldKeyMap);\n keyedElements.set(el, newKeyMap);\n return;\n }\n if (isBulkTextFastPathEligible(el, children)) {\n performBulkTextReplace(el, children);\n keyedElements.delete(el);\n return;\n }\n updateUnkeyedChildren(el, children as unknown[], forceUpdate);\n return;\n }\n\n if (_isDOMElement(children)) {\n updateUnkeyedChildren(el, [children], forceUpdate);\n return;\n }\n\n // Clean up all children before clearing\n for (let n = el.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n el.textContent = '';\n const dom = createDOMNode(children);\n if (dom) el.appendChild(dom);\n}\n\nfunction hasKeyedVNodeChildren(children: VNode[]): boolean {\n for (let i = 0; i < children.length; i++) {\n if (extractKey(children[i]) !== undefined) return true;\n }\n return false;\n}\n\nfunction isEmptyChild(child: unknown): boolean {\n return child === null || child === undefined || child === false;\n}\n\nfunction getOrBuildDomKeyMap(\n parent: Element\n): Map<string | number, Element> | undefined {\n let keyMap = keyedElements.get(parent);\n if (!keyMap) {\n keyMap = new Map<string | number, Element>();\n for (\n let child = parent.firstElementChild;\n child;\n child = child.nextElementSibling\n ) {\n const key = child.getAttribute('data-key');\n if (key !== null) {\n keyMap.set(key, child);\n const numericKey = Number(key);\n if (!Number.isNaN(numericKey)) keyMap.set(numericKey, child);\n }\n }\n if (keyMap.size > 0) keyedElements.set(parent, keyMap);\n }\n return keyMap.size > 0 ? keyMap : undefined;\n}\n\nfunction upperCommonTagName(tag: string): string | null {\n switch (tag) {\n case 'div':\n return 'DIV';\n case 'span':\n return 'SPAN';\n case 'p':\n return 'P';\n case 'a':\n return 'A';\n case 'button':\n return 'BUTTON';\n case 'input':\n return 'INPUT';\n case 'ul':\n return 'UL';\n case 'ol':\n return 'OL';\n case 'li':\n return 'LI';\n default:\n return null;\n }\n}\n\nfunction tagsEqualIgnoreCase(\n elementTagName: string,\n vnodeType: string\n): boolean {\n const upperCommon = upperCommonTagName(vnodeType);\n if (upperCommon !== null && elementTagName === upperCommon) return true;\n return tagNamesEqualIgnoreCase(elementTagName, vnodeType);\n}\n\ntype StaticChildSlot =\n | { kind: 'text'; value: string }\n | { kind: 'element'; value: DOMElement };\n\nconst STATIC_CHILD_SLOTS_CACHE = Symbol.for('__askrStaticChildSlots');\nlet staticChildSlotsCacheEnabled = true;\n\ninterface StaticChildSlotsCacheNode {\n [STATIC_CHILD_SLOTS_CACHE]?: StaticChildSlot[] | null;\n}\n\nexport function setStaticChildSlotsCacheEnabled(enabled: boolean): void {\n staticChildSlotsCacheEnabled = enabled;\n}\n\nfunction collectStaticChildSlots(\n children: unknown,\n slots: StaticChildSlot[]\n): boolean {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return collectStaticChildSlots(fragmentChildren, slots);\n }\n\n if (Array.isArray(children)) {\n for (const child of children) {\n if (!collectStaticChildSlots(child, slots)) {\n return false;\n }\n }\n return true;\n }\n\n if (children === null || children === undefined || children === false) {\n return true;\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n slots.push({ kind: 'text', value: String(children) });\n return true;\n }\n\n if (\n _isDOMElement(children) &&\n typeof (children as DOMElement).type === 'string'\n ) {\n slots.push({ kind: 'element', value: children as DOMElement });\n return true;\n }\n\n return false;\n}\n\nfunction getStaticChildSlots(vnode: DOMElement): StaticChildSlot[] | null {\n if (staticChildSlotsCacheEnabled) {\n const cacheNode = vnode as DOMElement & StaticChildSlotsCacheNode;\n const cached = cacheNode[STATIC_CHILD_SLOTS_CACHE];\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const slots: StaticChildSlot[] = [];\n const staticSlots = collectStaticChildSlots(\n (vnode.props?.children ?? vnode.children) as unknown,\n slots\n )\n ? slots\n : null;\n if (staticChildSlotsCacheEnabled) {\n const cacheNode = vnode as DOMElement & StaticChildSlotsCacheNode;\n if (Object.isExtensible(vnode)) {\n cacheNode[STATIC_CHILD_SLOTS_CACHE] = staticSlots;\n }\n }\n return staticSlots;\n}\n\nfunction hasMatchingStaticProps(\n el: Element,\n props: Record<string, unknown>,\n vnodeType: string\n): boolean {\n let staticPropCount = 0;\n\n for (const key in props) {\n if (isSkippedProp(key)) continue;\n\n const value = props[key];\n if (value === undefined || value === null || value === false) {\n return false;\n }\n\n const eventName = parseEventName(key);\n if (eventName || typeof value === 'function') {\n return false;\n }\n\n if (key === 'class' || key === 'className') {\n if (readElementClassName(el) !== String(value)) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (key === 'style') {\n const styleValue =\n typeof value === 'string' ? value.trim().replace(/;$/, '') : null;\n const domStyle = el.getAttribute('style')?.trim().replace(/;$/, '') ?? '';\n if (styleValue === null || domStyle !== styleValue) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (key === 'value' || key === 'checked') {\n if ((el as HTMLElement & Record<string, unknown>)[key] !== value) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (key === 'selected' && vnodeType === 'option') {\n if ((el as HTMLOptionElement).selected !== Boolean(value)) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (el.getAttribute(getRenderedAttributeName(el, key)) !== String(value)) {\n return false;\n }\n\n staticPropCount += 1;\n }\n\n return el.attributes.length === staticPropCount;\n}\n\nfunction canReuseStaticSubtree(el: Element, vnode: DOMElement): boolean {\n if (\n typeof vnode.type !== 'string' ||\n !tagsEqualIgnoreCase(el.tagName, vnode.type)\n ) {\n return false;\n }\n\n const props = (vnode.props || {}) as Record<string, unknown>;\n if (!hasMatchingStaticProps(el, props, vnode.type)) {\n return false;\n }\n\n const slots = getStaticChildSlots(vnode);\n if (!slots) {\n return false;\n }\n\n if (el.childNodes.length !== slots.length) {\n return false;\n }\n\n for (let index = 0; index < slots.length; index += 1) {\n const slot = slots[index];\n const current = el.childNodes[index];\n if (!current) {\n return false;\n }\n\n if (slot.kind === 'text') {\n if (current.nodeType !== 3 || (current as Text).data !== slot.value) {\n return false;\n }\n continue;\n }\n\n if (!(current instanceof Element)) {\n return false;\n }\n\n if (!canReuseStaticSubtree(current, slot.value)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function updateUnkeyedChildren(\n parent: Element,\n newChildren: unknown[],\n forceUpdate = false\n): void {\n const parentNamespace =\n parent.namespaceURI === SVG_NAMESPACE ? SVG_NAMESPACE : undefined;\n\n const trySyncComponentChild = (\n currentDom: Element,\n next: DOMElement\n ): Node | null => {\n if (typeof next.type !== 'function') {\n return null;\n }\n\n return syncComponentElement(\n currentDom,\n next as ElementWithContext,\n next.type as ComponentFunction,\n (((next as DOMElement).props ?? {}) as Record<string, unknown>) || {},\n parentNamespace,\n forceUpdate\n );\n };\n\n const trySyncControlBoundaryChild = (\n parent: Element,\n currentNode: Node | null,\n next: DOMElement\n ): boolean => {\n if (next.type !== __FOR_BOUNDARY__) {\n return false;\n }\n\n const controlState = getControlBoundaryState(next);\n if (!controlState || controlState.kind === 'for') {\n return false;\n }\n\n const childrenVNodes = evaluateControlBoundaryState(controlState);\n const activeScope = controlState.activeScope;\n const activeVNode = childrenVNodes[0];\n const nextDom =\n activeScope && activeVNode !== undefined\n ? syncForItemDom(parent, activeScope, activeVNode)\n : null;\n\n for (let i = 0; i < controlState.lastRemovedNodes.length; i++) {\n const removedNode = controlState.lastRemovedNodes[i];\n if (removedNode.parentNode !== parent) {\n continue;\n }\n\n teardownNodeSubtree(removedNode);\n if (nextDom && nextDom !== removedNode && !nextDom.parentNode) {\n parent.replaceChild(nextDom, removedNode);\n } else {\n parent.removeChild(removedNode);\n }\n }\n\n if (nextDom && !nextDom.parentNode) {\n if (currentNode?.parentNode === parent) {\n teardownNodeSubtree(currentNode);\n parent.replaceChild(nextDom, currentNode);\n } else {\n parent.appendChild(nextDom);\n }\n } else if (!nextDom && currentNode?.parentNode === parent) {\n teardownNodeSubtree(currentNode);\n parent.removeChild(currentNode);\n }\n\n clearControlBoundaryDomUpdateState(controlState);\n return true;\n };\n\n // Check if newChildren has mixed content (both text/primitives and elements)\n const hasText = newChildren.some(\n (c) => typeof c === 'string' || typeof c === 'number'\n );\n const hasElements = newChildren.some((c) => _isDOMElement(c));\n const hasEmptyChildren = newChildren.some(isEmptyChild);\n const hasComponentChildren = newChildren.some(\n (c) => _isDOMElement(c) && typeof (c as DOMElement).type === 'function'\n );\n const hasNonElementDomChildren =\n parent.childNodes.length !== parent.children.length;\n\n // Fast path: same-count, pure-element update (the common large-list re-render).\n // Iterate parent.children by index directly to avoid the Array.from snapshot\n // allocation for large lists. replaceChild(x, child[i]) replaces in-place so\n // subsequent indices in the live HTMLCollection do NOT shift — safe to use.\n if (\n !hasEmptyChildren &&\n !hasText &&\n !hasComponentChildren &&\n !hasNonElementDomChildren &&\n hasElements &&\n parent.children.length === newChildren.length\n ) {\n const c = parent.children;\n for (let i = 0; i < newChildren.length; i++) {\n const next = newChildren[i];\n const current = c[i];\n if (!current || next === undefined) continue;\n if (_isDOMElement(next) && typeof next.type === 'string') {\n if (tagsEqualIgnoreCase(current.tagName, next.type)) {\n updateElementFromVnode(current, next, true, forceUpdate);\n } else {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n } else if (_isDOMElement(next)) {\n if (trySyncControlBoundaryChild(parent, current, next)) {\n continue;\n }\n\n const synced = trySyncComponentChild(current, next);\n if (synced && synced !== current) {\n teardownNodeSubtree(current);\n } else if (!synced) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n } else {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n }\n return;\n }\n\n const existing = Array.from(parent.children);\n\n // Use childNodes whenever non-element DOM can participate in the sequence.\n // Component children can render text, comments, fragments, or elements, so\n // parent.children is not a safe positional view for those updates.\n if (\n hasText ||\n hasComponentChildren ||\n hasEmptyChildren ||\n hasNonElementDomChildren\n ) {\n const allNodes = Array.from(parent.childNodes);\n const max = Math.max(allNodes.length, newChildren.length);\n\n for (let i = 0; i < max; i++) {\n const currentNode = allNodes[i];\n const next = newChildren[i];\n const nextIsEmpty = isEmptyChild(next);\n\n // Remove extra existing nodes\n if (nextIsEmpty && currentNode) {\n teardownNodeSubtree(currentNode);\n currentNode.remove();\n continue;\n }\n\n // Append new children beyond existing length\n if (!currentNode && !nextIsEmpty) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) parent.appendChild(dom);\n continue;\n }\n\n if (!currentNode || nextIsEmpty) continue;\n\n // Update existing node based on next vnode/primitive\n if (typeof next === 'string' || typeof next === 'number') {\n // New child is text\n if (currentNode.nodeType === 3) {\n // Existing is text node - update it\n (currentNode as Text).data = String(next);\n } else {\n // Existing is element - replace with text node\n const textNode = document.createTextNode(String(next));\n parent.replaceChild(textNode, currentNode);\n }\n } else if (_isDOMElement(next)) {\n // New child is element\n if (currentNode.nodeType === 1) {\n // Existing is element\n const currentEl = currentNode as Element;\n if (typeof next.type === 'string') {\n if (tagsEqualIgnoreCase(currentEl.tagName, next.type)) {\n // Same type - update in place\n updateElementFromVnode(currentEl, next, true, forceUpdate);\n } else {\n // Different type - replace\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(currentEl);\n parent.replaceChild(dom, currentNode);\n }\n }\n } else {\n if (trySyncControlBoundaryChild(parent, currentNode, next)) {\n continue;\n }\n\n const synced = trySyncComponentChild(currentEl, next);\n if (synced && synced !== currentNode) {\n teardownNodeSubtree(currentEl);\n } else if (!synced) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(currentEl);\n parent.replaceChild(dom, currentNode);\n }\n }\n }\n } else {\n // Existing is text node - replace with element\n const dom = createDOMNode(next, parentNamespace);\n if (dom) parent.replaceChild(dom, currentNode);\n }\n }\n }\n return;\n }\n\n // Special case: if we have a single text/number child and the parent has a single text node,\n // update the text node in place to preserve identity\n if (\n newChildren.length === 1 &&\n existing.length === 0 &&\n parent.childNodes.length === 1\n ) {\n const firstNewChild = newChildren[0];\n const firstExisting = parent.firstChild;\n if (\n (typeof firstNewChild === 'string' ||\n typeof firstNewChild === 'number') &&\n firstExisting?.nodeType === 3 // Text node\n ) {\n (firstExisting as Text).data = String(firstNewChild);\n return;\n }\n }\n\n // If there are only text nodes (no element children), clear before updating\n if (existing.length === 0 && parent.childNodes.length > 0) {\n // Clean up all children before clearing\n for (let n = parent.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n parent.textContent = '';\n }\n const max = Math.max(existing.length, newChildren.length);\n\n for (let i = 0; i < max; i++) {\n const current = existing[i];\n const next = newChildren[i];\n const nextIsEmpty = isEmptyChild(next);\n\n // Remove extra existing children\n if (nextIsEmpty && current) {\n // Clean up any component instance mounted on this node\n teardownNodeSubtree(current);\n current.remove();\n continue;\n }\n\n // Append new children beyond existing length\n if (!current && !nextIsEmpty) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) parent.appendChild(dom);\n continue;\n }\n\n if (!current || nextIsEmpty) continue;\n\n // Update existing element based on next vnode/primitive\n if (typeof next === 'string' || typeof next === 'number') {\n const textNode = document.createTextNode(String(next));\n teardownNodeSubtree(current);\n parent.replaceChild(textNode, current);\n } else if (_isDOMElement(next)) {\n if (typeof next.type === 'string') {\n // If element type matches, update in place; otherwise replace\n if (tagsEqualIgnoreCase(current.tagName, next.type)) {\n updateElementFromVnode(current, next, true, forceUpdate);\n } else {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n } else {\n const synced = trySyncComponentChild(current, next);\n if (synced && synced !== current) {\n teardownNodeSubtree(current);\n } else if (!synced) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n }\n } else {\n // Fallback for other types: replace\n const dom = createDOMNode(next);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","names":[],"sources":["../../src/renderer/dom.ts"],"sourcesContent":["import { logger } from '../dev/logger';\nimport { STATIC_CHILDREN } from '../common/jsx';\nimport { isPromiseLike } from '../common/promise';\nimport { ROUTE_ROOT_COMPONENT } from '../common/router-internal';\nimport { getRuntimeEnv } from './env';\nimport type { Props } from '../common/props';\nimport { Fragment } from '../jsx/jsx-runtime';\nimport {\n CONTEXT_FRAME_SYMBOL,\n getVNodeContextFrame,\n markVNodeTreeWithContextFrame,\n withContext,\n getCurrentContextFrame,\n ContextFrame,\n} from '../runtime/context';\nimport {\n createComponentInstance,\n cleanupComponent,\n renderComponentInline,\n mountInstanceInline,\n captureInlineRenderSnapshot,\n getCurrentInstance,\n setCurrentComponentInstance as _setCurrentInstance,\n warnUnusedStateReads,\n type ComponentInstance,\n type ComponentFunction,\n} from '../runtime/component';\nimport {\n createChildScope,\n disposeChildScope,\n rerenderChildScope,\n type ChildScope,\n} from '../runtime/child-scope';\nimport {\n elementListeners,\n removeAllListeners,\n teardownNodeSubtree,\n elementReactivePropsCleanup,\n REACTIVE_CHILDREN_KEY,\n removeElementListeners,\n removeElementReactiveProps,\n type ReactivePropCleanupEntry,\n} from './cleanup';\nimport { incDevCounter, getDevValue } from '../runtime/dev-namespace';\nimport { _isDOMElement, type DOMElement, type VNode } from './types';\nimport { __FOR_BOUNDARY__, __ERROR_BOUNDARY__ } from '../common/vnode';\nimport {\n evaluateForState,\n clearForDomUpdateState,\n isBenchMetricScopeActive,\n recordBenchCounter,\n recordBenchEvent,\n} from '../runtime/for';\nimport {\n clearCaseDomUpdateState,\n clearShowDomUpdateState,\n evaluateCaseState,\n evaluateShowState,\n type ControlBoundaryState,\n} from '../runtime/control';\nimport { keyedElements } from './keyed';\nimport { commitForStateBoundaryChildren } from './for-commit';\nimport {\n getEventListenerKey,\n getEventListenerOptions,\n parseEventName,\n parseEventProp,\n createMutableWrappedHandler,\n getRenderedAttributeName,\n isSkippedProp,\n removeRenderedAttribute,\n readElementClassName,\n setRenderedAttribute,\n writeElementClassName,\n tagNamesEqualIgnoreCase,\n extractKey,\n} from './utils';\nimport { reconcileKeyedChildren } from './reconcile';\nimport {\n isBulkTextFastPathEligible,\n performBulkPositionalKeyedTextUpdate,\n performBulkTextReplace,\n} from './children';\nimport type { ReadableSource } from '../runtime/readable';\nimport { incrementPerfMetric } from '../runtime/perf-metrics';\nimport { globalScheduler } from '../runtime/scheduler';\nimport {\n createFineGrainedEffect,\n markFineGrainedEffectsDirtySource,\n type FineGrainedEffectHandle,\n} from '../runtime/effect';\nimport {\n createBoundaryReset,\n reportBoundaryError,\n resolveErrorBoundaryFallback,\n type ErrorBoundaryProps,\n} from '../components/error-boundary';\nimport {\n isEventDelegationEnabled,\n addDelegatedListener,\n getDelegatedHandlerForElement,\n getDelegatedHandlersForElement,\n updateDelegatedListener,\n removeDelegatedListener,\n isDelegatedEvent,\n} from '../runtime/events';\n\nexport {\n isBulkTextFastPathEligible,\n performBulkPositionalKeyedTextUpdate,\n performBulkTextReplace,\n};\n\ntype ElementWithContext = DOMElement & {\n [CONTEXT_FRAME_SYMBOL]?: ContextFrame;\n [ROUTE_ROOT_COMPONENT]?: boolean;\n __instance?: ComponentInstance;\n};\n\ntype InstanceHostElement = Element & {\n __ASKR_INSTANCE?: ComponentInstance;\n __ASKR_INSTANCES?: ComponentInstance[];\n __ASKR_WRAPPER_HOST?: boolean;\n};\n\ninterface ReactivePropDescriptor {\n el: Element;\n propName: string;\n propFn: () => unknown;\n tagName: string;\n lastClassTokens: string[] | null;\n}\n\ntype StyleEntries = Map<string, string>;\n\ntype ReactiveScalarChildSourceSlot =\n | { kind: 'static'; value: string }\n | { kind: 'dynamic'; compute: () => unknown };\n\ntype ReactiveScalarChildSource = ReactiveScalarChildSourceSlot[];\n\ntype ReactiveChildBoundarySequenceSource = Array<\n | { kind: 'static-text'; value: string }\n | { kind: 'static-node'; value: VNode }\n | { kind: 'dynamic'; compute: () => VNode }\n>;\n\ntype ReactiveChildBoundarySequenceEntry =\n | { kind: 'static'; nodes: Node[] }\n | { kind: 'dynamic'; scope: ChildScope; nodes: Node[] };\n\nconst reactivePropRegistry = new Set<ReactivePropDescriptor>();\nconst controlBoundaryOwners = new WeakMap<Element, ControlBoundaryState>();\n\nfunction isRouteRootComponentVNode(node: unknown): boolean {\n return (\n typeof node === 'object' &&\n node !== null &&\n (node as { [ROUTE_ROOT_COMPONENT]?: boolean })[ROUTE_ROOT_COMPONENT] ===\n true\n );\n}\n\nfunction inheritComponentCleanupStrict(instance: ComponentInstance): void {\n const owner = getCurrentInstance();\n if (owner) {\n instance.cleanupStrict = owner.cleanupStrict;\n }\n}\n\ntype ControlBoundaryCommitOwnerState = ControlBoundaryState & {\n _commitOwner?: Element | null;\n};\nlet reactiveChildScopeId = 0;\n\nfunction collectReactiveScalarSequenceValue(\n value: unknown,\n normalized: string[]\n): boolean {\n if (isFragmentVNode(value)) {\n const fragmentChildren = value.props?.children ?? value.children;\n return collectReactiveScalarSequenceValue(fragmentChildren, normalized);\n }\n\n if (Array.isArray(value)) {\n for (const child of value) {\n if (!collectReactiveScalarSequenceValue(child, normalized)) {\n return false;\n }\n }\n return true;\n }\n\n if (value === null || value === undefined || value === false) {\n return true;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n normalized.push(String(value));\n return true;\n }\n\n return false;\n}\n\nfunction collectReactiveScalarChildSource(\n children: unknown,\n slots: ReactiveScalarChildSource,\n state: { hasDynamic: boolean }\n): boolean {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return collectReactiveScalarChildSource(fragmentChildren, slots, state);\n }\n\n if (Array.isArray(children)) {\n for (const child of children) {\n if (!collectReactiveScalarChildSource(child, slots, state)) {\n return false;\n }\n }\n return true;\n }\n\n if (children === null || children === undefined || children === false) {\n return true;\n }\n\n if (typeof children === 'function') {\n slots.push({ kind: 'dynamic', compute: children as () => unknown });\n state.hasDynamic = true;\n return true;\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n slots.push({ kind: 'static', value: String(children) });\n return true;\n }\n\n return false;\n}\n\nfunction getReactiveScalarChildSource(\n children: unknown\n): ReactiveScalarChildSource | null {\n const slots: ReactiveScalarChildSource = [];\n const state = { hasDynamic: false };\n\n if (!collectReactiveScalarChildSource(children, slots, state)) {\n return null;\n }\n\n return state.hasDynamic ? slots : null;\n}\n\nfunction getSingleReactiveChildBoundarySource(\n children: unknown\n): (() => VNode) | null {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return getSingleReactiveChildBoundarySource(fragmentChildren);\n }\n\n if (Array.isArray(children)) {\n if (children.length !== 1) {\n return null;\n }\n return getSingleReactiveChildBoundarySource(children[0]);\n }\n\n if (typeof children === 'function') {\n return children as () => VNode;\n }\n\n return null;\n}\n\nfunction collectReactiveChildBoundarySequenceSource(\n children: unknown,\n slots: ReactiveChildBoundarySequenceSource,\n state: { dynamicCount: number }\n): boolean {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return collectReactiveChildBoundarySequenceSource(\n fragmentChildren,\n slots,\n state\n );\n }\n\n if (Array.isArray(children)) {\n for (const child of children) {\n if (!collectReactiveChildBoundarySequenceSource(child, slots, state)) {\n return false;\n }\n }\n return true;\n }\n\n if (children === null || children === undefined || children === false) {\n return true;\n }\n\n if (typeof children === 'function') {\n slots.push({ kind: 'dynamic', compute: children as () => VNode });\n state.dynamicCount += 1;\n return true;\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n slots.push({ kind: 'static-text', value: String(children) });\n return true;\n }\n\n if (_isDOMElement(children)) {\n slots.push({ kind: 'static-node', value: children as VNode });\n return true;\n }\n\n return false;\n}\n\nfunction getReactiveChildBoundarySequenceSource(\n children: unknown\n): ReactiveChildBoundarySequenceSource | null {\n const slots: ReactiveChildBoundarySequenceSource = [];\n const state = { dynamicCount: 0 };\n\n if (!collectReactiveChildBoundarySequenceSource(children, slots, state)) {\n return null;\n }\n\n return state.dynamicCount >= 1 && slots.length > 1 ? slots : null;\n}\n\nfunction areReactiveChildBoundarySequenceSourcesEqual(\n previousSource: unknown,\n nextSource: ReactiveChildBoundarySequenceSource\n): boolean {\n if (\n !Array.isArray(previousSource) ||\n previousSource.length !== nextSource.length\n ) {\n return false;\n }\n\n for (let index = 0; index < nextSource.length; index += 1) {\n const previousSlot = previousSource[index] as\n | ReactiveChildBoundarySequenceSource[number]\n | undefined;\n const nextSlot = nextSource[index];\n\n if (!previousSlot || previousSlot.kind !== nextSlot.kind) {\n return false;\n }\n\n if (nextSlot.kind === 'static-text') {\n if (\n previousSlot.kind !== 'static-text' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (nextSlot.kind === 'static-node') {\n if (\n previousSlot.kind !== 'static-node' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (\n previousSlot.kind !== 'dynamic' ||\n previousSlot.compute !== nextSlot.compute\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction cleanupDetachedComponentHost(\n host: InstanceHostElement,\n retainedInstance: ComponentInstance\n): void {\n removeElementListeners(host);\n removeElementReactiveProps(host);\n\n const hostInstances = host.__ASKR_INSTANCES;\n if (hostInstances && hostInstances.length > 0) {\n for (const instance of hostInstances) {\n if (instance === retainedInstance) continue;\n cleanupComponent(instance);\n }\n } else if (\n host.__ASKR_INSTANCE &&\n host.__ASKR_INSTANCE !== retainedInstance\n ) {\n cleanupComponent(host.__ASKR_INSTANCE);\n }\n\n const descendants = host.querySelectorAll('*');\n for (let index = 0; index < descendants.length; index += 1) {\n const descendant = descendants[index] as InstanceHostElement;\n removeElementListeners(descendant);\n removeElementReactiveProps(descendant);\n\n if (descendant.__ASKR_INSTANCES?.length) {\n for (const instance of descendant.__ASKR_INSTANCES) {\n if (instance === retainedInstance) continue;\n cleanupComponent(instance);\n }\n try {\n delete descendant.__ASKR_INSTANCES;\n } catch {\n // Ignore host cleanup failures.\n }\n } else if (\n descendant.__ASKR_INSTANCE &&\n descendant.__ASKR_INSTANCE !== retainedInstance\n ) {\n cleanupComponent(descendant.__ASKR_INSTANCE);\n try {\n delete descendant.__ASKR_INSTANCE;\n } catch {\n // Ignore host cleanup failures.\n }\n }\n }\n\n try {\n delete host.__ASKR_INSTANCE;\n delete host.__ASKR_INSTANCES;\n delete host.__ASKR_WRAPPER_HOST;\n } catch {\n // Ignore host cleanup failures.\n }\n}\n\nfunction canUpdateReactiveChildBoundarySequenceSource(\n previousSource: unknown,\n nextSource: ReactiveChildBoundarySequenceSource\n): boolean {\n if (\n !Array.isArray(previousSource) ||\n previousSource.length !== nextSource.length\n ) {\n return false;\n }\n\n for (let index = 0; index < nextSource.length; index += 1) {\n const previousSlot = previousSource[index] as\n | ReactiveChildBoundarySequenceSource[number]\n | undefined;\n const nextSlot = nextSource[index];\n\n if (!previousSlot || previousSlot.kind !== nextSlot.kind) {\n return false;\n }\n\n if (nextSlot.kind === 'static-text') {\n if (\n previousSlot.kind !== 'static-text' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (nextSlot.kind === 'static-node') {\n if (\n previousSlot.kind !== 'static-node' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction areReactiveScalarChildSourcesEqual(\n previousSource: unknown,\n nextSource: ReactiveScalarChildSource\n): boolean {\n if (\n !Array.isArray(previousSource) ||\n previousSource.length !== nextSource.length\n ) {\n return false;\n }\n\n for (let index = 0; index < nextSource.length; index += 1) {\n const previousSlot = previousSource[index] as\n | ReactiveScalarChildSourceSlot\n | undefined;\n const nextSlot = nextSource[index];\n\n if (!previousSlot || previousSlot.kind !== nextSlot.kind) {\n return false;\n }\n\n if (nextSlot.kind === 'static') {\n if (\n previousSlot.kind !== 'static' ||\n previousSlot.value !== nextSlot.value\n ) {\n return false;\n }\n continue;\n }\n\n if (\n previousSlot.kind !== 'dynamic' ||\n previousSlot.compute !== nextSlot.compute\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getOrCreateElementReactiveCleanupMap(\n el: Element\n): Map<string, ReactivePropCleanupEntry> {\n let cleanupMap = elementReactivePropsCleanup.get(el);\n if (!cleanupMap) {\n cleanupMap = new Map();\n elementReactivePropsCleanup.set(el, cleanupMap);\n }\n\n return cleanupMap;\n}\n\nfunction normalizeReactiveScalarSequenceValues(\n values: unknown[]\n): string[] | null {\n const normalized: string[] = [];\n\n for (const value of values) {\n if (!collectReactiveScalarSequenceValue(value, normalized)) {\n return null;\n }\n }\n\n return normalized;\n}\n\nfunction normalizeOwnedReactiveTextValue(value: unknown): string | null {\n if (typeof value === 'string' || typeof value === 'number') {\n return String(value);\n }\n\n return null;\n}\n\nfunction collectReactiveChildValuesAsVNodes(\n values: unknown[],\n children: VNode[]\n): void {\n for (const value of values) {\n collectReactiveChildBoundaryVNodes(value, children);\n }\n}\n\nfunction materializeReactiveChildBoundaryNodes(\n value: unknown,\n parentNamespace?: string\n): Node[] {\n const nodes: Node[] = [];\n const dom = createDOMNode(value, parentNamespace);\n if (!dom) {\n return nodes;\n }\n\n if (dom instanceof DocumentFragment) {\n for (let child = dom.firstChild; child; child = dom.firstChild) {\n nodes.push(child);\n dom.removeChild(child);\n }\n return nodes;\n }\n\n nodes.push(dom);\n return nodes;\n}\n\nfunction syncReactiveScalarTextNodes(\n el: Element,\n slotValues: unknown[],\n values: string[]\n): void {\n const childNodes = el.childNodes;\n const canPatchInPlace = childNodes.length === values.length;\n\n if (canPatchInPlace) {\n let allText = true;\n for (let index = 0; index < childNodes.length; index += 1) {\n if (childNodes[index]?.nodeType !== Node.TEXT_NODE) {\n allText = false;\n break;\n }\n }\n\n if (allText) {\n for (let index = 0; index < values.length; index += 1) {\n const textNode = childNodes[index] as Text;\n if (textNode.data !== values[index]) {\n textNode.data = values[index];\n }\n }\n return;\n }\n }\n\n const host = createReactiveChildBoundaryHost(el);\n for (let node = el.firstChild; node; ) {\n const next = node.nextSibling;\n host.appendChild(node);\n node = next;\n }\n\n updateElementChildren(host, slotValues as VNode[]);\n syncReactiveChildExpectedNodes(el, Array.from(host.childNodes));\n}\n\nfunction trySyncScalarChildSequenceInPlace(\n el: Element,\n children: unknown[]\n): boolean {\n const normalized = normalizeReactiveScalarSequenceValues(children);\n if (!normalized) {\n return false;\n }\n\n if (el.childNodes.length !== normalized.length) {\n return false;\n }\n\n for (let index = 0; index < el.childNodes.length; index += 1) {\n if (el.childNodes[index]?.nodeType !== Node.TEXT_NODE) {\n return false;\n }\n }\n\n syncReactiveScalarTextNodes(el, children, normalized);\n return true;\n}\n\nfunction normalizeReactiveChildBoundaryVNode(value: VNode): VNode {\n if (!isFragmentVNode(value)) {\n return value;\n }\n\n const children = normalizeComponentChildren(value);\n if (children.length !== 1) {\n return value;\n }\n\n return normalizeReactiveChildBoundaryVNode(children[0] as VNode);\n}\n\nfunction isSingleRootReactiveChildBoundaryValue(value: unknown): boolean {\n if (value === null || value === undefined || value === false) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return (\n value.length === 1 && isSingleRootReactiveChildBoundaryValue(value[0])\n );\n }\n\n if (isFragmentVNode(value)) {\n const children = normalizeComponentChildren(value);\n return (\n children.length === 1 &&\n isSingleRootReactiveChildBoundaryValue(children[0])\n );\n }\n\n return true;\n}\n\nfunction collectReactiveChildBoundaryVNodes(\n value: unknown,\n children: VNode[]\n): void {\n if (value === null || value === undefined || value === false) {\n return;\n }\n\n if (Array.isArray(value)) {\n for (const child of value) {\n collectReactiveChildBoundaryVNodes(child, children);\n }\n return;\n }\n\n if (isFragmentVNode(value)) {\n const fragmentChildren = value.props?.children ?? value.children;\n collectReactiveChildBoundaryVNodes(fragmentChildren, children);\n return;\n }\n\n children.push(value as VNode);\n}\n\nfunction createReactiveChildBoundaryHost(el: Element): Element {\n const ownerDocument = el.ownerDocument;\n return el.namespaceURI === SVG_NAMESPACE\n ? ownerDocument.createElementNS(SVG_NAMESPACE, 'g')\n : ownerDocument.createElement('div');\n}\n\nfunction disposeReactiveChildBoundaryNodes(nodes: Node[]): void {\n for (const node of nodes) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n\n teardownNodeSubtree(node);\n }\n}\n\nfunction syncReactiveChildExpectedNodes(\n el: Element,\n expectedNodes: Node[]\n): void {\n const expectedNodeSet = new Set(expectedNodes);\n\n for (let node = el.firstChild; node; ) {\n const next = node.nextSibling;\n if (!expectedNodeSet.has(node)) {\n teardownNodeSubtree(node);\n el.removeChild(node);\n }\n node = next;\n }\n\n let anchor = el.firstChild;\n for (const node of expectedNodes) {\n if (node === anchor) {\n anchor = anchor.nextSibling;\n continue;\n }\n\n el.insertBefore(node, anchor);\n anchor = node.nextSibling;\n }\n}\n\nfunction commitReactiveChildBoundaryEntryNodes(\n el: Element,\n entry: { scope: ChildScope; nodes: Node[] }\n): Node[] {\n if (!entry.scope.needsDomUpdate) {\n return entry.nodes;\n }\n\n if (\n entry.scope.vnode === null ||\n entry.scope.vnode === undefined ||\n entry.scope.vnode === false\n ) {\n if (entry.nodes.length > 0) {\n disposeReactiveChildBoundaryNodes(entry.nodes);\n entry.nodes = [];\n }\n\n const dom = entry.scope.dom;\n if (dom?.parentNode === el) {\n teardownNodeSubtree(dom);\n el.removeChild(dom);\n }\n\n entry.scope.dom = undefined;\n entry.scope.needsDomUpdate = false;\n return entry.nodes;\n }\n\n if (!isSingleRootReactiveChildBoundaryValue(entry.scope.vnode)) {\n const nextChildren: VNode[] = [];\n collectReactiveChildBoundaryVNodes(entry.scope.vnode, nextChildren);\n\n const host = createReactiveChildBoundaryHost(el);\n for (const node of entry.nodes) {\n host.appendChild(node);\n }\n\n updateElementChildren(host, nextChildren);\n\n const nextNodes = Array.from(host.childNodes);\n\n entry.scope.dom = undefined;\n entry.scope.needsDomUpdate = false;\n entry.nodes = nextNodes;\n return nextNodes;\n }\n\n if (entry.nodes.length > 1) {\n disposeReactiveChildBoundaryNodes(entry.nodes);\n entry.nodes = [];\n entry.scope.dom = undefined;\n }\n\n const nextDom = syncForItemDom(el, entry.scope, entry.scope.vnode ?? null);\n if (!nextDom) {\n entry.nodes = [];\n entry.scope.needsDomUpdate = false;\n return entry.nodes;\n }\n\n entry.nodes = [nextDom];\n entry.scope.needsDomUpdate = false;\n return entry.nodes;\n}\n\nfunction syncReactiveChildSequenceNodes(\n el: Element,\n entries: ReactiveChildBoundarySequenceEntry[]\n): void {\n const expectedNodes: Node[] = [];\n\n for (const entry of entries) {\n if (entry.kind === 'static') {\n expectedNodes.push(...entry.nodes);\n continue;\n }\n\n expectedNodes.push(...commitReactiveChildBoundaryEntryNodes(el, entry));\n }\n\n syncReactiveChildExpectedNodes(el, expectedNodes);\n}\n\nfunction setupReactiveScalarChild(\n el: Element,\n source: ReactiveScalarChildSource\n): {\n cleanup: () => void;\n updateFn: (nextSource: ReactiveScalarChildSource) => void;\n} {\n let currentSource = source;\n\n if (source.length === 1 && source[0]?.kind === 'dynamic') {\n let ownedTextNode =\n el.childNodes.length === 1 && el.firstChild?.nodeType === Node.TEXT_NODE\n ? (el.firstChild as Text)\n : null;\n\n let effectHandle: FineGrainedEffectHandle<string> | null =\n createFineGrainedEffect({\n lane: 'reactive',\n compute: () => {\n const currentSlot = currentSource[0];\n if (!currentSlot || currentSlot.kind !== 'dynamic') {\n throw new Error(\n '[Askr] Direct reactive text bindings require a single dynamic slot.'\n );\n }\n\n const rawValue = currentSlot.compute();\n const normalized = normalizeOwnedReactiveTextValue(rawValue);\n return normalized ?? (rawValue as string);\n },\n commit: (value) => {\n const normalized = normalizeOwnedReactiveTextValue(value);\n\n if (normalized === null) {\n ownedTextNode = null;\n updateElementChildren(\n el,\n value as unknown as VNode | VNode[] | undefined\n );\n return;\n }\n\n if (\n !ownedTextNode ||\n el.childNodes.length !== 1 ||\n el.firstChild !== ownedTextNode\n ) {\n updateElementChildren(el, normalized);\n ownedTextNode =\n el.childNodes.length === 1 &&\n el.firstChild?.nodeType === Node.TEXT_NODE\n ? (el.firstChild as Text)\n : null;\n }\n\n if (!ownedTextNode) {\n return;\n }\n\n if (ownedTextNode.data !== normalized) {\n ownedTextNode.data = normalized;\n incDevCounter('textNodeWrites');\n }\n },\n onError: (err) => {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive child update failed:', err);\n }\n },\n });\n\n return {\n cleanup: () => {\n effectHandle?.cleanup();\n effectHandle = null;\n },\n updateFn: (nextSource: ReactiveScalarChildSource) => {\n if (!effectHandle) {\n return;\n }\n\n currentSource = nextSource;\n effectHandle.updateCompute(() => {\n const currentSlot = currentSource[0];\n if (!currentSlot || currentSlot.kind !== 'dynamic') {\n throw new Error(\n '[Askr] Direct reactive text bindings require a single dynamic slot.'\n );\n }\n\n const rawValue = currentSlot.compute();\n const normalized = normalizeOwnedReactiveTextValue(rawValue);\n return normalized ?? (rawValue as string);\n });\n },\n };\n }\n\n let effectHandle: FineGrainedEffectHandle<unknown> | null =\n createFineGrainedEffect({\n lane: 'reactive',\n compute: () =>\n currentSource.map((slot) =>\n slot.kind === 'static' ? slot.value : slot.compute()\n ),\n commit: (values) => {\n if (!Array.isArray(values)) {\n throw new Error(\n '[Askr] Reactive scalar children must evaluate to a slot array.'\n );\n }\n\n const normalized = normalizeReactiveScalarSequenceValues(values);\n if (normalized) {\n syncReactiveScalarTextNodes(el, values, normalized);\n return;\n }\n\n const nextChildren: VNode[] = [];\n collectReactiveChildValuesAsVNodes(values, nextChildren);\n\n const host = createReactiveChildBoundaryHost(el);\n for (let node = el.firstChild; node; ) {\n const next = node.nextSibling;\n host.appendChild(node);\n node = next;\n }\n\n updateElementChildren(host, nextChildren);\n syncReactiveChildExpectedNodes(el, Array.from(host.childNodes));\n },\n equals: (previousValue, nextValue) => {\n if (!Array.isArray(previousValue) || !Array.isArray(nextValue)) {\n return false;\n }\n\n const previousNormalized =\n normalizeReactiveScalarSequenceValues(previousValue);\n const nextNormalized = normalizeReactiveScalarSequenceValues(nextValue);\n\n if (!previousNormalized || !nextNormalized) {\n return false;\n }\n\n if (previousNormalized.length !== nextNormalized.length) {\n return false;\n }\n\n for (let index = 0; index < previousNormalized.length; index += 1) {\n if (previousNormalized[index] !== nextNormalized[index]) {\n return false;\n }\n }\n\n return true;\n },\n onError: (err) => {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive child update failed:', err);\n }\n },\n });\n\n return {\n cleanup: () => {\n effectHandle?.cleanup();\n effectHandle = null;\n },\n updateFn: (nextSource: ReactiveScalarChildSource) => {\n if (!effectHandle) {\n return;\n }\n\n currentSource = nextSource;\n effectHandle.updateCompute(() =>\n currentSource.map((slot) =>\n slot.kind === 'static' ? slot.value : slot.compute()\n )\n );\n },\n };\n}\n\nfunction setupReactiveChildBoundary(\n el: Element,\n childFn: () => VNode\n): { cleanup: () => void; updateFn: (nextValue: unknown) => void } {\n let currentChildFn = childFn;\n const parentInstance = getCurrentInstance();\n const entry: { scope: ChildScope; nodes: Node[] } = {\n scope: createChildScope(\n parentInstance,\n `__reactive-child__:${(reactiveChildScopeId += 1)}`,\n () => {\n const expectedNodes = commitReactiveChildBoundaryEntryNodes(el, entry);\n syncReactiveChildExpectedNodes(el, expectedNodes);\n }\n ),\n nodes: [],\n };\n\n entry.scope.render(() =>\n normalizeReactiveChildBoundaryVNode(currentChildFn())\n );\n syncReactiveChildExpectedNodes(\n el,\n commitReactiveChildBoundaryEntryNodes(el, entry)\n );\n\n return {\n cleanup: () => {\n const dom = entry.scope.dom;\n const nodes = entry.nodes;\n disposeChildScope(entry.scope);\n entry.nodes = [];\n\n if (nodes.length > 0) {\n disposeReactiveChildBoundaryNodes(nodes);\n return;\n }\n\n if (dom?.parentNode === el) {\n teardownNodeSubtree(dom);\n el.removeChild(dom);\n }\n },\n updateFn: (nextValue: unknown) => {\n currentChildFn = nextValue as () => VNode;\n rerenderChildScope(entry.scope);\n const expectedNodes = commitReactiveChildBoundaryEntryNodes(el, entry);\n syncReactiveChildExpectedNodes(el, expectedNodes);\n },\n };\n}\n\nfunction setupReactiveChildBoundarySequence(\n el: Element,\n source: ReactiveChildBoundarySequenceSource\n): { cleanup: () => void; updateFn: (nextValue: unknown) => void } {\n let currentSource = source;\n const parentInstance = getCurrentInstance();\n const entries: ReactiveChildBoundarySequenceEntry[] = [];\n const dynamicEntries: Array<{\n index: number;\n entry: Extract<ReactiveChildBoundarySequenceEntry, { kind: 'dynamic' }>;\n }> = [];\n\n if (!currentSource.some((slot) => slot.kind === 'dynamic')) {\n throw new Error(\n '[Askr] Reactive child boundary sequence requires at least one dynamic slot.'\n );\n }\n\n const syncSequence = () => {\n syncReactiveChildSequenceNodes(el, entries);\n };\n\n const parentNamespace =\n el.namespaceURI === SVG_NAMESPACE ? SVG_NAMESPACE : undefined;\n\n for (let index = 0; index < currentSource.length; index += 1) {\n const slot = currentSource[index];\n if (!slot) {\n continue;\n }\n\n if (slot.kind === 'static-text') {\n entries.push({\n kind: 'static',\n nodes: [document.createTextNode(slot.value)],\n });\n continue;\n }\n\n if (slot.kind === 'static-node') {\n entries.push({\n kind: 'static',\n nodes: materializeReactiveChildBoundaryNodes(\n slot.value,\n parentNamespace\n ),\n });\n continue;\n }\n\n const scope = createChildScope(\n parentInstance,\n `__reactive-child-seq__:${(reactiveChildScopeId += 1)}`,\n syncSequence\n );\n\n const dynamicEntry: Extract<\n ReactiveChildBoundarySequenceEntry,\n { kind: 'dynamic' }\n > = {\n kind: 'dynamic',\n scope,\n nodes: [],\n };\n entries.push(dynamicEntry);\n dynamicEntries.push({ index, entry: dynamicEntry });\n }\n\n for (const dynamicEntry of dynamicEntries) {\n dynamicEntry.entry.scope.render(() =>\n normalizeReactiveChildBoundaryVNode(\n (\n currentSource[dynamicEntry.index] as {\n kind: 'dynamic';\n compute: () => VNode;\n }\n ).compute()\n )\n );\n }\n\n syncSequence();\n\n return {\n cleanup: () => {\n for (const dynamicEntry of dynamicEntries) {\n const dom = dynamicEntry.entry.scope.dom;\n const nodes = dynamicEntry.entry.nodes;\n disposeChildScope(dynamicEntry.entry.scope);\n\n if (nodes.length > 0) {\n disposeReactiveChildBoundaryNodes(nodes);\n continue;\n }\n\n if (dom?.parentNode === el) {\n teardownNodeSubtree(dom);\n el.removeChild(dom);\n }\n }\n\n for (const entry of entries) {\n if (entry.kind === 'static') {\n disposeReactiveChildBoundaryNodes(entry.nodes);\n }\n }\n },\n updateFn: (nextValue: unknown) => {\n currentSource = nextValue as ReactiveChildBoundarySequenceSource;\n for (const dynamicEntry of dynamicEntries) {\n rerenderChildScope(dynamicEntry.entry.scope);\n }\n syncSequence();\n },\n };\n}\n\nfunction syncReactiveScalarChild(el: Element, children: unknown): boolean {\n const reactiveChildSource = getReactiveScalarChildSource(children);\n const reactiveChildBoundary = getSingleReactiveChildBoundarySource(children);\n const reactiveChildBoundarySequence =\n getReactiveChildBoundarySequenceSource(children);\n const existingReactiveEntry = elementReactivePropsCleanup\n .get(el)\n ?.get(REACTIVE_CHILDREN_KEY);\n\n if (\n !reactiveChildSource &&\n !reactiveChildBoundary &&\n !reactiveChildBoundarySequence\n ) {\n if (existingReactiveEntry) {\n existingReactiveEntry.cleanup();\n const cleanupMap = elementReactivePropsCleanup.get(el);\n cleanupMap?.delete(REACTIVE_CHILDREN_KEY);\n if (cleanupMap && cleanupMap.size === 0) {\n elementReactivePropsCleanup.delete(el);\n }\n }\n\n return false;\n }\n\n if (reactiveChildSource && !reactiveChildBoundarySequence) {\n if (\n existingReactiveEntry &&\n Array.isArray(existingReactiveEntry.fnRef) &&\n areReactiveScalarChildSourcesEqual(\n existingReactiveEntry.fnRef,\n reactiveChildSource\n )\n ) {\n return true;\n }\n\n if (\n existingReactiveEntry?.updateFn &&\n Array.isArray(existingReactiveEntry.fnRef)\n ) {\n existingReactiveEntry.updateFn(reactiveChildSource);\n existingReactiveEntry.fnRef = reactiveChildSource;\n return true;\n }\n\n existingReactiveEntry?.cleanup();\n\n try {\n const reactive = setupReactiveScalarChild(el, reactiveChildSource);\n getOrCreateElementReactiveCleanupMap(el).set(REACTIVE_CHILDREN_KEY, {\n cleanup: reactive.cleanup,\n updateFn: (nextValue) => {\n reactive.updateFn(nextValue as ReactiveScalarChildSource);\n },\n fnRef: reactiveChildSource,\n });\n return true;\n } catch (error) {\n if (!reactiveChildBoundary && !reactiveChildBoundarySequence) {\n throw error;\n }\n }\n }\n\n if (reactiveChildBoundarySequence) {\n if (\n existingReactiveEntry &&\n Array.isArray(existingReactiveEntry.fnRef) &&\n areReactiveChildBoundarySequenceSourcesEqual(\n existingReactiveEntry.fnRef,\n reactiveChildBoundarySequence\n )\n ) {\n return true;\n }\n\n if (\n existingReactiveEntry?.updateFn &&\n Array.isArray(existingReactiveEntry.fnRef) &&\n canUpdateReactiveChildBoundarySequenceSource(\n existingReactiveEntry.fnRef,\n reactiveChildBoundarySequence\n )\n ) {\n existingReactiveEntry.updateFn(reactiveChildBoundarySequence);\n existingReactiveEntry.fnRef = reactiveChildBoundarySequence;\n return true;\n }\n\n existingReactiveEntry?.cleanup();\n\n const reactive = setupReactiveChildBoundarySequence(\n el,\n reactiveChildBoundarySequence\n );\n getOrCreateElementReactiveCleanupMap(el).set(REACTIVE_CHILDREN_KEY, {\n cleanup: reactive.cleanup,\n updateFn: reactive.updateFn,\n fnRef: reactiveChildBoundarySequence,\n });\n return true;\n }\n\n if (existingReactiveEntry?.fnRef === reactiveChildBoundary) {\n return true;\n }\n\n if (\n existingReactiveEntry?.updateFn &&\n !Array.isArray(existingReactiveEntry.fnRef)\n ) {\n existingReactiveEntry.updateFn(reactiveChildBoundary);\n existingReactiveEntry.fnRef = reactiveChildBoundary;\n return true;\n }\n\n existingReactiveEntry?.cleanup();\n\n if (!reactiveChildBoundary) {\n return false;\n }\n\n const reactive = setupReactiveChildBoundary(el, reactiveChildBoundary);\n getOrCreateElementReactiveCleanupMap(el).set(REACTIVE_CHILDREN_KEY, {\n cleanup: reactive.cleanup,\n updateFn: reactive.updateFn,\n fnRef: reactiveChildBoundary,\n });\n return true;\n}\n\nconst vnodeComponentInstances = new WeakMap<object, ComponentInstance>();\n\nfunction getVNodeComponentInstance(\n node: unknown\n): ComponentInstance | undefined {\n if (typeof node !== 'object' || node === null) {\n return undefined;\n }\n\n return (\n vnodeComponentInstances.get(node) ??\n (node as { __instance?: ComponentInstance }).__instance\n );\n}\n\nfunction setVNodeComponentInstance(\n node: unknown,\n instance: ComponentInstance\n): void {\n if (typeof node !== 'object' || node === null) {\n return;\n }\n\n const objectNode = node as { __instance?: ComponentInstance };\n\n if (Object.prototype.hasOwnProperty.call(objectNode, '__instance')) {\n try {\n objectNode.__instance = instance;\n return;\n } catch {\n // Fall back to WeakMap for readonly vnode metadata.\n }\n }\n\n if (Object.isExtensible(objectNode)) {\n try {\n objectNode.__instance = instance;\n return;\n } catch {\n // Fall back to WeakMap for frozen/proxied objects.\n }\n }\n\n vnodeComponentInstances.set(objectNode, instance);\n}\n\nexport const IS_DOM_AVAILABLE = typeof document !== 'undefined';\n\nconst SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n\nfunction resolveChildNamespace(\n type: string,\n parentNamespace?: string\n): string | undefined {\n if (type === 'svg') return SVG_NAMESPACE;\n if (parentNamespace === SVG_NAMESPACE && type !== 'foreignObject') {\n return SVG_NAMESPACE;\n }\n return undefined;\n}\n\nfunction createElementForNamespace(\n type: string,\n parentNamespace?: string\n): Element {\n const namespace = resolveChildNamespace(type, parentNamespace);\n return namespace\n ? document.createElementNS(namespace, type)\n : document.createElement(type);\n}\n\nfunction getHydrationSkipBoundary(el: Element): Element | null {\n return el.closest('[data-skip-hydrate=\"true\"]');\n}\n\nfunction isHydrationSkipped(el: Element): boolean {\n return getHydrationSkipBoundary(el) !== null;\n}\n\nfunction clearHydrationDeferredSubtree(el: Element): void {\n const boundary = getHydrationSkipBoundary(el);\n if (!boundary) return;\n if (boundary === el) {\n removeAllListeners(el);\n removeElementReactiveProps(el);\n }\n}\n\nlet fallbackComponentInstanceId = 0;\n\nfunction nextComponentInstanceId(): string {\n const key = '__COMPONENT_INSTANCE_ID';\n try {\n incDevCounter(key);\n const n = getDevValue<number>(key);\n if (typeof n === 'number' && Number.isFinite(n)) return `comp-${n}`;\n } catch {\n // Fall through to local counter\n }\n fallbackComponentInstanceId++;\n return `comp-${fallbackComponentInstanceId}`;\n}\n\n/**\n * Add an event listener to an element with tracking\n * Uses event delegation when enabled (opt-out model)\n */\nfunction addTrackedListener(\n el: Element,\n eventName: string,\n handler: EventListener,\n capture = false\n): void {\n const useDelegation =\n !capture && isEventDelegationEnabled() && isDelegatedEvent(eventName);\n const listenerKey = getEventListenerKey(eventName, capture);\n\n if (useDelegation) {\n addDelegatedListener(el, eventName, handler, handler, undefined);\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('listenerBindings');\n }\n return;\n }\n\n const options = getEventListenerOptions(eventName, capture);\n const mutableHandler = createMutableWrappedHandler(handler, true);\n const trackedHandler = mutableHandler.handler;\n\n if (options !== undefined) {\n el.addEventListener(eventName, trackedHandler, options);\n } else {\n el.addEventListener(eventName, trackedHandler);\n }\n incDevCounter('listenerAdds');\n\n if (!elementListeners.has(el)) {\n elementListeners.set(el, new Map());\n }\n elementListeners.get(el)!.set(listenerKey, {\n handler: trackedHandler,\n original: handler,\n eventName,\n options,\n isDelegated: false,\n updateHandler: mutableHandler?.updateHandler,\n });\n\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('listenerBindings');\n }\n}\n\nexport function markReactivePropsDirtySource(\n source: ReadableSource<unknown>\n): void {\n markFineGrainedEffectsDirtySource(source);\n}\n\n/**\n * Set up a reactive prop that re-evaluates when its dependencies change\n * Returns a cleanup function to unsubscribe\n */\nfunction setupReactiveProp(\n el: Element,\n propName: string,\n propFn: () => unknown,\n tagName: string\n): { cleanup: () => void; updateFn: (nextFn: () => unknown) => void } {\n const descriptor: ReactivePropDescriptor = {\n el,\n propName,\n propFn,\n tagName,\n lastClassTokens: null,\n };\n\n let effectHandle: FineGrainedEffectHandle<unknown> | null = null;\n\n reactivePropRegistry.add(descriptor);\n effectHandle = createFineGrainedEffect({\n lane: 'reactive',\n compute: () => descriptor.propFn(),\n commit: (value, previousValue) => {\n incrementPerfMetric('reactivePropReevaluations');\n applyPropValue(el, propName, value, tagName, previousValue, descriptor);\n },\n equals: (previousValue, nextValue) => {\n if (Object.is(previousValue, nextValue)) {\n incrementPerfMetric('skippedDomPropWrites');\n return true;\n }\n return false;\n },\n onError: (err) => {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive prop update failed:', err);\n }\n },\n });\n\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('reactivePropsMounted');\n }\n\n const cleanup = () => {\n reactivePropRegistry.delete(descriptor);\n effectHandle?.cleanup();\n effectHandle = null;\n };\n\n const updateFn = (nextFn: () => unknown): void => {\n if (!effectHandle) {\n return;\n }\n\n descriptor.propFn = nextFn;\n\n try {\n effectHandle.updateCompute(nextFn);\n } catch (err) {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Reactive prop update failed:', err);\n }\n }\n };\n\n return {\n cleanup,\n updateFn,\n };\n}\n\n/**\n * Apply a prop value to an element (helper for reactive props)\n */\nfunction applyPropValue(\n el: Element,\n key: string,\n value: unknown,\n tagName: string,\n previousValue?: unknown,\n descriptor?: ReactivePropDescriptor\n): void {\n if (value === undefined || value === null || value === false) {\n if (key === 'class' || key === 'className') {\n const previousTokens = descriptor?.lastClassTokens;\n if (previousTokens && previousTokens.length > 0) {\n el.classList.remove(...previousTokens);\n incrementPerfMetric('classListPatchOps');\n } else {\n writeElementClassName(el, '');\n }\n if (descriptor) {\n descriptor.lastClassTokens = [];\n }\n } else if (key === 'value') {\n applyFormControlProp(el, key, '', tagName);\n } else if (key === 'checked') {\n applyFormControlProp(el, key, false, tagName);\n } else if (key === 'style') {\n applyStylePropValue(el, null);\n } else {\n removeRenderedAttribute(el, key);\n }\n return;\n }\n\n if (key === 'class' || key === 'className') {\n applyClassPropValue(el, value, previousValue, descriptor);\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n applyFormControlProp(el, key, value, tagName);\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n}\n\nfunction normalizeStylePropertyName(propertyName: string): string {\n if (propertyName.startsWith('--')) {\n return propertyName;\n }\n\n return propertyName.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);\n}\n\nfunction collectCurrentStyleEntries(el: Element): StyleEntries {\n const entries: StyleEntries = new Map();\n const style = (el as HTMLElement | SVGElement).style;\n\n if (!style) {\n return entries;\n }\n\n for (let index = 0; index < style.length; index += 1) {\n const propertyName = style.item(index);\n entries.set(propertyName, style.getPropertyValue(propertyName));\n }\n\n return entries;\n}\n\nfunction normalizeStyleEntries(value: unknown): StyleEntries | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return null;\n }\n\n const entries: StyleEntries = new Map();\n for (const [key, entryValue] of Object.entries(\n value as Record<string, unknown>\n )) {\n if (\n entryValue === undefined ||\n entryValue === null ||\n entryValue === false\n ) {\n continue;\n }\n\n entries.set(normalizeStylePropertyName(key), String(entryValue));\n }\n\n return entries;\n}\n\nfunction applyStylePropValue(el: Element, value: unknown): void {\n const style = (el as HTMLElement | SVGElement).style;\n if (!style) {\n if (value === null || value === undefined || value === false) {\n el.removeAttribute('style');\n return;\n }\n\n el.setAttribute('style', String(value));\n return;\n }\n\n if (value === null || value === undefined || value === false) {\n if (!el.getAttribute('style')) {\n incrementPerfMetric('skippedDomPropWrites');\n return;\n }\n\n style.cssText = '';\n el.removeAttribute('style');\n return;\n }\n\n if (typeof value === 'string') {\n if ((el.getAttribute('style') ?? '') === value) {\n incrementPerfMetric('skippedDomPropWrites');\n return;\n }\n\n style.cssText = value;\n return;\n }\n\n const nextEntries = normalizeStyleEntries(value);\n if (!nextEntries) {\n const nextText = String(value);\n if ((el.getAttribute('style') ?? '') === nextText) {\n incrementPerfMetric('skippedDomPropWrites');\n return;\n }\n\n style.cssText = nextText;\n return;\n }\n\n const previousEntries = collectCurrentStyleEntries(el);\n let didWrite = false;\n\n for (const [propertyName] of previousEntries) {\n if (nextEntries.has(propertyName)) {\n continue;\n }\n\n style.removeProperty(propertyName);\n didWrite = true;\n }\n\n for (const [propertyName, propertyValue] of nextEntries) {\n if (previousEntries.get(propertyName) === propertyValue) {\n continue;\n }\n\n style.setProperty(propertyName, propertyValue);\n didWrite = true;\n }\n\n if (!didWrite) {\n incrementPerfMetric('skippedDomPropWrites');\n }\n}\n\nfunction tokenizeClassValue(value: unknown): string[] | null {\n if (typeof value !== 'string') {\n return null;\n }\n\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return [];\n }\n\n return trimmed.split(/\\s+/);\n}\n\nfunction patchClassList(\n el: Element,\n previousTokens: string[],\n nextTokens: string[]\n): void {\n if (previousTokens.length === nextTokens.length) {\n let identical = true;\n for (let index = 0; index < previousTokens.length; index += 1) {\n if (previousTokens[index] !== nextTokens[index]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return;\n }\n }\n\n if (previousTokens.length === 0) {\n if (nextTokens.length === 0) {\n return;\n }\n el.classList.add(...nextTokens);\n incrementPerfMetric('classListPatchOps');\n return;\n }\n\n if (nextTokens.length === 0) {\n el.classList.remove(...previousTokens);\n incrementPerfMetric('classListPatchOps');\n return;\n }\n\n if (previousTokens.length === 1 && nextTokens.length === 1) {\n el.classList.remove(previousTokens[0]);\n el.classList.add(nextTokens[0]);\n incrementPerfMetric('classListPatchOps');\n return;\n }\n\n const nextSet = new Set(nextTokens);\n const previousSet = new Set(previousTokens);\n\n for (const token of previousTokens) {\n if (!nextSet.has(token)) {\n el.classList.remove(token);\n }\n }\n\n for (const token of nextTokens) {\n if (!previousSet.has(token)) {\n el.classList.add(token);\n }\n }\n\n incrementPerfMetric('classListPatchOps');\n}\n\nfunction applyClassPropValue(\n el: Element,\n value: unknown,\n previousValue: unknown,\n descriptor?: ReactivePropDescriptor\n): void {\n const nextString = String(value);\n const nextTokens = tokenizeClassValue(nextString);\n const previousTokens =\n descriptor?.lastClassTokens ?? tokenizeClassValue(previousValue);\n\n if (nextTokens && previousTokens) {\n patchClassList(el, previousTokens, nextTokens);\n if (descriptor) {\n descriptor.lastClassTokens = nextTokens;\n }\n return;\n }\n\n writeElementClassName(el, nextString);\n if (descriptor) {\n descriptor.lastClassTokens = nextTokens;\n }\n}\n\n/**\n * Apply attributes and event listeners to an element from props\n */\nfunction applyPropsToElement(\n el: Element,\n props: Record<string, unknown>,\n tagName: string\n): void {\n if (isHydrationSkipped(el)) {\n return;\n }\n\n for (const key in props) {\n const value = props[key];\n // Handle ref BEFORE isSkippedProp check since it needs special processing\n if (key === 'ref') {\n applyRef(el, value);\n continue;\n }\n if (isSkippedProp(key)) continue;\n if (value === undefined || value === null || value === false) continue;\n\n const eventProp = parseEventProp(key);\n if (eventProp) {\n addTrackedListener(\n el,\n eventProp.eventName,\n value as EventListener,\n eventProp.capture\n );\n continue;\n }\n\n // Check if value is a function (reactive prop)\n if (typeof value === 'function' && key !== 'ref') {\n // Set up reactive prop tracking\n const reactive = setupReactiveProp(\n el,\n key,\n value as () => unknown,\n tagName\n );\n\n // Store cleanup function and function reference\n if (!elementReactivePropsCleanup.has(el)) {\n elementReactivePropsCleanup.set(el, new Map());\n }\n elementReactivePropsCleanup.get(el)!.set(key, {\n cleanup: reactive.cleanup,\n updateFn: (nextValue) => {\n reactive.updateFn(nextValue as () => unknown);\n },\n fnRef: value as () => unknown,\n });\n continue;\n }\n\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, String(value));\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n applyFormControlProp(el, key, value, tagName);\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n }\n}\n\ntype Ref<T> =\n | ((value: T | null) => void)\n | { current: T | null }\n | null\n | undefined;\n\nfunction applyRef<T>(el: T, ref: unknown): void {\n const r = ref as Ref<T>;\n if (!r) return;\n if (typeof r === 'function') {\n r(el);\n return;\n }\n // Fast path: use Object.isExtensible check instead of try/catch\n if (Object.isExtensible(r)) {\n (r as { current: T | null }).current = el;\n }\n}\n\nfunction removeStaleAttributes(\n el: Element,\n vnode: DOMElement,\n props: Record<string, unknown>\n): void {\n const desiredAttributes = new Set<string>();\n const key = extractKey(vnode);\n\n if (key !== undefined) {\n desiredAttributes.add('data-key');\n }\n\n for (const propName in props) {\n if (isSkippedProp(propName)) continue;\n if (parseEventName(propName)) continue;\n\n const value = props[propName];\n if (value === undefined || value === null || value === false) continue;\n\n desiredAttributes.add(getRenderedAttributeName(el, propName));\n }\n\n for (const attribute of Array.from(el.attributes)) {\n if (!desiredAttributes.has(getRenderedAttributeName(el, attribute.name))) {\n el.removeAttribute(attribute.name);\n }\n }\n}\n\n/**\n * Apply value/checked props to form controls\n */\nfunction applyFormControlProp(\n el: Element,\n key: string,\n value: unknown,\n tagName: string\n): void {\n if (key === 'value') {\n if (\n tagNamesEqualIgnoreCase(tagName, 'input') ||\n tagNamesEqualIgnoreCase(tagName, 'textarea') ||\n tagNamesEqualIgnoreCase(tagName, 'select')\n ) {\n (el as HTMLInputElement & Props).value = String(value);\n el.setAttribute('value', String(value));\n } else {\n el.setAttribute('value', String(value));\n }\n } else if (key === 'checked') {\n if (tagNamesEqualIgnoreCase(tagName, 'input')) {\n const checked = Boolean(value);\n (el as HTMLInputElement & Props).checked = checked;\n if (checked) {\n el.setAttribute('checked', '');\n } else {\n el.removeAttribute('checked');\n }\n } else {\n if (value) {\n el.setAttribute('checked', '');\n } else {\n el.removeAttribute('checked');\n }\n }\n }\n}\n\n/**\n * Materialize vnode key as data-key attribute\n */\nfunction materializeKey(\n el: Element,\n vnode: DOMElement,\n props: Record<string, unknown>\n): void {\n const rawKey = vnode.key ?? props?.key;\n const vnodeKey =\n rawKey === null || rawKey === undefined\n ? undefined\n : typeof rawKey === 'symbol'\n ? String(rawKey)\n : (rawKey as string | number);\n if (vnodeKey !== undefined) {\n const nextKey = String(vnodeKey);\n if (el.getAttribute('data-key') !== nextKey) {\n el.setAttribute('data-key', nextKey);\n }\n }\n}\n\nfunction inheritComponentKey(\n target: DOMElement,\n source: DOMElement\n): DOMElement {\n const inheritedKey = extractKey(source);\n if (inheritedKey === undefined || extractKey(target) !== undefined) {\n return target;\n }\n\n target.key = inheritedKey;\n\n if (typeof target.type === 'string') {\n if (!target.props) {\n target.props = {};\n }\n\n const props = target.props as Record<string, unknown>;\n if (props['data-key'] === undefined) {\n props['data-key'] = String(inheritedKey);\n }\n }\n\n return target;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Dynamic List Warnings\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Warn about missing keys on dynamic lists (dev only)\n */\nfunction warnMissingKeys(children: unknown[]): void {\n if (getRuntimeEnv().NODE_ENV === 'production') return;\n\n let hasElements = false;\n let hasKeys = false;\n\n for (const item of children) {\n if (typeof item === 'object' && item !== null && 'type' in item) {\n if ((item as DOMElement).type === __FOR_BOUNDARY__) continue;\n hasElements = true;\n const rawKey =\n (item as DOMElement).key ??\n ((item as DOMElement).props as Record<string, unknown> | undefined)\n ?.key;\n if (rawKey !== undefined) {\n hasKeys = true;\n break;\n }\n }\n }\n\n if (hasElements && !hasKeys) {\n const inst = getCurrentInstance();\n const warnings = inst ? (inst.devWarningsEmitted ??= new Set()) : null;\n if (warnings?.has('missing-keys')) return;\n warnings?.add('missing-keys');\n try {\n const name = inst?.fn?.name || '<anonymous>';\n logger.warn(\n `Missing keys on dynamic lists in ${name}. Each child in a list should have a unique \"key\" prop.`\n );\n } catch {\n logger.warn(\n 'Missing keys on dynamic lists. Each child in a list should have a unique \"key\" prop.'\n );\n }\n }\n}\n\nfunction hasStaticChildrenMarker(children: unknown[]): boolean {\n return (\n (\n children as unknown as {\n [STATIC_CHILDREN]?: boolean;\n }\n )[STATIC_CHILDREN] === true\n );\n}\n\nfunction maybeWarnMissingKeys(children: unknown[]): void {\n if (!hasStaticChildrenMarker(children)) {\n warnMissingKeys(children);\n }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// DOM Node Creation\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Create a DOM node from a VNode\n */\nexport function createDOMNode(\n node: unknown,\n parentNamespace?: string\n): Node | null {\n // SSR guard: don't attempt DOM ops when document is unavailable\n if (!IS_DOM_AVAILABLE) {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n try {\n logger.warn('[Askr] createDOMNode called in non-DOM environment');\n } catch {\n // ignore\n }\n }\n return null;\n }\n\n // Fast paths for primitives (most common)\n if (typeof node === 'string') {\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n return document.createTextNode(node);\n }\n if (typeof node === 'number') {\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n return document.createTextNode(String(node));\n }\n\n // Null/undefined/false\n if (!node) {\n return null;\n }\n\n // Array (fragment) - batch all at once\n if (Array.isArray(node)) {\n maybeWarnMissingKeys(node);\n const fragment = document.createDocumentFragment();\n for (const child of node) {\n const dom = createDOMNode(child, parentNamespace);\n if (dom) fragment.appendChild(dom);\n }\n return fragment;\n }\n\n // Element or Component\n if (typeof node === 'object' && node !== null && 'type' in node) {\n const type = (node as DOMElement).type;\n const props = ((node as DOMElement).props || {}) as Record<string, unknown>;\n\n // Intrinsic element (string type)\n if (typeof type === 'string') {\n return createIntrinsicElement(\n node as DOMElement,\n type,\n props,\n parentNamespace\n );\n }\n\n // Component (function type) - inline execution\n if (typeof type === 'function') {\n return createComponentElement(\n node as ElementWithContext,\n type,\n props,\n parentNamespace\n );\n }\n\n // For boundary - special handling\n if (type === __FOR_BOUNDARY__) {\n return createForBoundary(node as DOMElement, props, parentNamespace);\n }\n\n if (type === __ERROR_BOUNDARY__) {\n return createErrorBoundaryElement(\n node as ErrorBoundaryVNode,\n props,\n parentNamespace\n );\n }\n\n // Fragment support\n if (\n typeof type === 'symbol' &&\n (type === Fragment || String(type) === 'Symbol(Fragment)')\n ) {\n return createFragmentElement(node as DOMElement, props, parentNamespace);\n }\n }\n\n return null;\n}\n\ntype StaticCreateChildShape = {\n textContent: string | null;\n};\n\nfunction tryGetStaticCreateChildShape(\n children: unknown\n): StaticCreateChildShape | null {\n if (children === null || children === undefined || children === false) {\n return { textContent: null };\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n return { textContent: String(children) };\n }\n\n if (Array.isArray(children) && children.length === 1) {\n const child = children[0];\n if (child === null || child === undefined || child === false) {\n return { textContent: null };\n }\n if (typeof child === 'string' || typeof child === 'number') {\n return { textContent: String(child) };\n }\n }\n\n return null;\n}\n\nfunction isStaticCreateScalarValue(value: unknown): boolean {\n const valueType = typeof value;\n return (\n valueType === 'string' || valueType === 'number' || valueType === 'boolean'\n );\n}\n\nfunction tryGetStaticCreateFastPathShape(\n props: Record<string, unknown>,\n children: unknown\n): StaticCreateChildShape | null {\n const childShape = tryGetStaticCreateChildShape(children);\n if (!childShape) {\n return null;\n }\n\n for (const key in props) {\n if (key === 'ref') {\n return null;\n }\n if (isSkippedProp(key)) {\n continue;\n }\n\n const value = props[key];\n if (value === undefined || value === null || value === false) {\n continue;\n }\n\n if (parseEventName(key) || !isStaticCreateScalarValue(value)) {\n return null;\n }\n }\n\n return childShape;\n}\n\nfunction applyStaticScalarPropsToElement(\n el: Element,\n props: Record<string, unknown>\n): void {\n for (const key in props) {\n if (isSkippedProp(key)) {\n continue;\n }\n\n const value = props[key];\n if (value === undefined || value === null || value === false) {\n continue;\n }\n\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, String(value));\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n (el as HTMLElement & Record<string, unknown>)[key] = value;\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n }\n}\n\n/**\n * Create an intrinsic DOM element (div, span, etc.)\n */\nfunction createIntrinsicElement(\n node: DOMElement,\n type: string,\n props: Record<string, unknown>,\n parentNamespace?: string\n): Element {\n const children = props.children ?? node.children;\n const elementNamespace = resolveChildNamespace(type, parentNamespace);\n const el = createElementForNamespace(type, parentNamespace);\n\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n\n // Materialize key into DOM attribute\n materializeKey(el, node, props);\n\n const staticCreateFastPath = tryGetStaticCreateFastPathShape(props, children);\n\n if (staticCreateFastPath) {\n applyStaticScalarPropsToElement(el, props);\n if (staticCreateFastPath.textContent !== null) {\n el.textContent = staticCreateFastPath.textContent;\n if (isBenchMetricScopeActive('coldCreate')) {\n recordBenchCounter('domNodesCreated');\n }\n }\n return el;\n }\n\n // Apply props/attributes\n applyPropsToElement(el, props, type);\n\n // Add children\n // CRITICAL: Use nullish coalescing (?) instead of || because children can be 0, false, or empty string\n\n if (children !== null && children !== undefined) {\n const controlBoundaryVNode = getDirectControlBoundaryVNode(children);\n if (controlBoundaryVNode) {\n const controlState = getControlBoundaryState(controlBoundaryVNode);\n if (!controlState) {\n throw new Error(\n '[createIntrinsicElement] Control boundary missing internal state'\n );\n }\n registerControlBoundaryCommitOwner(el, controlState);\n }\n\n if (syncReactiveScalarChild(el, children)) {\n return el;\n }\n\n if (Array.isArray(children)) {\n maybeWarnMissingKeys(children);\n if (children.length > 1) {\n // Batch all children into a fragment so we touch the parent only once\n // instead of N times, reducing layout invalidations in the DOM engine.\n const childFrag = document.createDocumentFragment();\n for (const child of children) {\n const dom = createDOMNode(child, elementNamespace);\n if (dom) childFrag.appendChild(dom);\n }\n el.appendChild(childFrag);\n } else if (children.length === 1) {\n const dom = createDOMNode(children[0], elementNamespace);\n if (dom) el.appendChild(dom);\n }\n } else {\n const dom = createDOMNode(children, elementNamespace);\n if (dom) el.appendChild(dom);\n }\n }\n return el;\n}\n\nfunction findHostInstanceByType(\n host: InstanceHostElement,\n type: (props: Props) => unknown\n): ComponentInstance | null {\n const instances = host.__ASKR_INSTANCES;\n if (instances && instances.length > 0) {\n for (let index = instances.length - 1; index >= 0; index -= 1) {\n const instance = instances[index]!;\n if (instance.fn === type) {\n return instance;\n }\n }\n }\n\n return host.__ASKR_INSTANCE?.fn === type ? host.__ASKR_INSTANCE : null;\n}\n\nfunction materializeComponentResultNode(\n childInstance: ComponentInstance,\n result: unknown,\n parentNamespace?: string\n): Node {\n const dom = createDOMNode(result, parentNamespace);\n\n if (dom instanceof Element) {\n mountInstanceInline(childInstance, dom);\n return dom;\n }\n\n if (!dom) {\n const placeholder = document.createComment('');\n try {\n (\n placeholder as Comment & { __ASKR_INSTANCE?: ComponentInstance }\n ).__ASKR_INSTANCE = childInstance;\n } catch {\n // Ignore placeholder metadata failures.\n }\n childInstance._placeholder = placeholder;\n mountInstanceInline(childInstance, null);\n return placeholder;\n }\n\n const host = document.createElement('div') as InstanceHostElement;\n host.appendChild(dom);\n host.__ASKR_WRAPPER_HOST = true;\n mountInstanceInline(childInstance, host);\n return host;\n}\n\nfunction resolveNestedComponentResult(\n result: unknown,\n snapshot: ContextFrame | null,\n parentInstance: ComponentInstance | null\n): VNode {\n let currentResult = result as VNode;\n let activeSnapshot = snapshot;\n let depth = 0;\n\n while (\n _isDOMElement(currentResult) &&\n typeof currentResult.type === 'function' &&\n depth < 16\n ) {\n const nestedSnapshot =\n getVNodeContextFrame(currentResult) ?? activeSnapshot;\n const nestedInstance = createComponentInstance(\n nextComponentInstanceId(),\n currentResult.type as ComponentFunction,\n ((currentResult as DOMElement).props ?? {}) as Props,\n null\n );\n nestedInstance.isRoot = isRouteRootComponentVNode(currentResult);\n nestedInstance.parentInstance = parentInstance;\n nestedInstance.portalScope =\n parentInstance?.portalScope ?? nestedInstance.portalScope;\n inheritComponentCleanupStrict(nestedInstance);\n\n if (nestedSnapshot) {\n nestedInstance.ownerFrame = nestedSnapshot;\n }\n\n const nextResult = withContext(nestedSnapshot ?? null, () =>\n renderComponentInline(nestedInstance)\n );\n cleanupComponent(nestedInstance);\n\n if (isPromiseLike(nextResult)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n activeSnapshot = nestedSnapshot ?? null;\n currentResult = nextResult as VNode;\n depth += 1;\n }\n\n return currentResult;\n}\n\nfunction resolveHostNestedComponentResult(\n host: InstanceHostElement,\n retainedInstance: ComponentInstance,\n result: unknown,\n snapshot: ContextFrame | null,\n retainedHostInstances?: Iterable<ComponentInstance>\n): VNode {\n let currentResult = result as VNode;\n let activeSnapshot = snapshot;\n let depth = 0;\n const retainedInstances = new Set<ComponentInstance>([retainedInstance]);\n if (retainedHostInstances) {\n for (const instance of retainedHostInstances) {\n retainedInstances.add(instance);\n }\n }\n const createdInstances: ComponentInstance[] = [];\n\n while (\n _isDOMElement(currentResult) &&\n typeof currentResult.type === 'function' &&\n depth < 16\n ) {\n const nestedSnapshot =\n getVNodeContextFrame(currentResult) ?? activeSnapshot;\n let nestedInstance = findHostInstanceByType(\n host,\n currentResult.type as ComponentFunction\n );\n const hadNestedInstance = !!nestedInstance;\n\n if (!nestedInstance) {\n nestedInstance = createComponentInstance(\n nextComponentInstanceId(),\n currentResult.type as ComponentFunction,\n ((currentResult as DOMElement).props ?? {}) as Props,\n null\n );\n createdInstances.push(nestedInstance);\n }\n\n if (hadNestedInstance) {\n captureInlineRenderSnapshot(nestedInstance);\n }\n\n setVNodeComponentInstance(currentResult, nestedInstance);\n nestedInstance.isRoot = isRouteRootComponentVNode(currentResult);\n nestedInstance.parentInstance = retainedInstance;\n nestedInstance.portalScope =\n retainedInstance.portalScope ?? nestedInstance.portalScope;\n inheritComponentCleanupStrict(nestedInstance);\n nestedInstance.props =\n (((currentResult as DOMElement).props ?? {}) as Props) || {};\n\n if (nestedSnapshot) {\n nestedInstance.ownerFrame = nestedSnapshot;\n }\n\n const nextResult = withContext(nestedSnapshot ?? null, () =>\n renderComponentInline(nestedInstance)\n );\n\n if (isPromiseLike(nextResult)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n retainedInstances.add(nestedInstance);\n warnUnusedStateReads(nestedInstance);\n activeSnapshot = nestedSnapshot ?? null;\n currentResult = markVNodeTreeWithContextFrame(\n nextResult,\n activeSnapshot\n ) as VNode;\n depth += 1;\n }\n\n const previousInstances = host.__ASKR_INSTANCES ?? [];\n for (const instance of previousInstances) {\n if (!retainedInstances.has(instance)) {\n cleanupComponent(instance);\n }\n }\n\n const nextHostInstances = previousInstances.filter((instance) =>\n retainedInstances.has(instance)\n );\n for (const instance of retainedInstances) {\n if (instance.target === host && !nextHostInstances.includes(instance)) {\n nextHostInstances.push(instance);\n }\n }\n\n host.__ASKR_INSTANCES = nextHostInstances;\n host.__ASKR_INSTANCE = host.__ASKR_INSTANCES[0] ?? retainedInstance;\n\n for (const instance of createdInstances) {\n mountInstanceInline(instance, host);\n }\n\n return currentResult;\n}\n\nfunction resolveWrapperHostResult(\n host: InstanceHostElement,\n result: unknown,\n snapshot: ContextFrame | null\n): unknown {\n let currentResult = result;\n let activeSnapshot = snapshot;\n let depth = 0;\n\n while (\n _isDOMElement(currentResult) &&\n typeof currentResult.type === 'function' &&\n depth < 16\n ) {\n const nestedSnapshot =\n getVNodeContextFrame(currentResult) ?? activeSnapshot;\n const nestedInstance = findHostInstanceByType(\n host,\n currentResult.type as ComponentFunction\n );\n\n if (!nestedInstance) {\n break;\n }\n\n captureInlineRenderSnapshot(nestedInstance);\n\n nestedInstance.props =\n (((currentResult as DOMElement).props ?? {}) as Props) || {};\n nestedInstance.parentInstance = getCurrentInstance();\n nestedInstance.isRoot = isRouteRootComponentVNode(currentResult);\n nestedInstance.portalScope =\n getCurrentInstance()?.portalScope ?? nestedInstance.portalScope;\n inheritComponentCleanupStrict(nestedInstance);\n\n if (nestedSnapshot) {\n nestedInstance.ownerFrame = nestedSnapshot;\n }\n\n const nextResult = withContext(nestedSnapshot ?? null, () =>\n renderComponentInline(nestedInstance)\n );\n\n if (isPromiseLike(nextResult)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n warnUnusedStateReads(nestedInstance);\n activeSnapshot = nestedSnapshot ?? null;\n currentResult = nextResult;\n depth += 1;\n }\n\n return markVNodeTreeWithContextFrame(currentResult, activeSnapshot);\n}\n\nfunction isFragmentVNode(node: unknown): node is DOMElement {\n return (\n _isDOMElement(node) &&\n typeof (node as DOMElement).type === 'symbol' &&\n ((node as DOMElement).type === Fragment ||\n String((node as DOMElement).type) === 'Symbol(askr.fragment)')\n );\n}\n\nfunction normalizeComponentChildren(result: unknown): unknown[] {\n if (result === null || result === undefined || result === false) {\n return [];\n }\n\n if (Array.isArray(result)) {\n const children: unknown[] = [];\n for (const child of result) {\n children.push(...normalizeComponentChildren(child));\n }\n return children;\n }\n\n if (isFragmentVNode(result)) {\n const children = result.props?.children ?? result.children ?? [];\n return normalizeComponentChildren(children);\n }\n\n return [result];\n}\n\nexport function syncComponentElement(\n currentDom: Node | null,\n node: ElementWithContext,\n type: ComponentFunction,\n props: Record<string, unknown>,\n parentNamespace?: string,\n forceChildrenUpdate = false,\n retainedHostInstances?: Iterable<ComponentInstance>\n): Node | null {\n const existingHost =\n currentDom instanceof Element ? (currentDom as InstanceHostElement) : null;\n const existingInstance = existingHost\n ? findHostInstanceByType(existingHost, type)\n : null;\n if (!existingHost) {\n return null;\n }\n\n if (!existingInstance || existingInstance.fn !== type) {\n const snapshot =\n getVNodeContextFrame(node) || getCurrentContextFrame() || null;\n const hydrationInstance = createComponentInstance(\n nextComponentInstanceId(),\n type,\n props || {},\n existingHost\n );\n hydrationInstance.isRoot = isRouteRootComponentVNode(node);\n hydrationInstance.portalScope =\n getCurrentInstance()?.portalScope ?? hydrationInstance.portalScope;\n inheritComponentCleanupStrict(hydrationInstance);\n\n setVNodeComponentInstance(node, hydrationInstance);\n\n if (snapshot) {\n hydrationInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(hydrationInstance)\n );\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n const scopedResult = markVNodeTreeWithContextFrame(\n result,\n snapshot ?? null\n );\n\n if (\n scopedResult &&\n typeof scopedResult === 'object' &&\n 'type' in (scopedResult as DOMElement) &&\n typeof (scopedResult as DOMElement).type === 'string' &&\n tagNamesEqualIgnoreCase(\n existingHost.tagName,\n (scopedResult as DOMElement).type as string\n )\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(scopedResult as DOMElement, node),\n true,\n forceChildrenUpdate || hydrationInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n mountInstanceInline(hydrationInstance, existingHost);\n itemInstanceHydrationComplete(existingHost);\n warnUnusedStateReads(hydrationInstance);\n return existingHost;\n }\n\n const resolvedResult = resolveHostNestedComponentResult(\n existingHost,\n hydrationInstance,\n scopedResult,\n snapshot ?? null,\n retainedHostInstances\n );\n if (\n _isDOMElement(resolvedResult) &&\n typeof resolvedResult.type === 'string' &&\n tagNamesEqualIgnoreCase(existingHost.tagName, resolvedResult.type)\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(resolvedResult, node),\n true,\n forceChildrenUpdate || hydrationInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n mountInstanceInline(hydrationInstance, existingHost);\n itemInstanceHydrationComplete(existingHost);\n warnUnusedStateReads(hydrationInstance);\n return existingHost;\n }\n\n const nextDom = materializeComponentResultNode(\n hydrationInstance,\n scopedResult,\n parentNamespace\n );\n\n if (nextDom instanceof Element) {\n materializeKey(nextDom, node, props);\n }\n\n if (nextDom !== existingHost && existingHost.parentNode) {\n existingHost.parentNode.replaceChild(nextDom, existingHost);\n cleanupDetachedComponentHost(existingHost, hydrationInstance);\n }\n\n warnUnusedStateReads(hydrationInstance);\n return nextDom;\n }\n\n const snapshot =\n getVNodeContextFrame(node) ||\n getCurrentContextFrame() ||\n existingInstance.ownerFrame ||\n null;\n captureInlineRenderSnapshot(existingInstance);\n existingInstance.props = props || {};\n existingInstance.isRoot = isRouteRootComponentVNode(node);\n existingInstance.portalScope =\n getCurrentInstance()?.portalScope ?? existingInstance.portalScope;\n inheritComponentCleanupStrict(existingInstance);\n\n if (snapshot) {\n existingInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(existingInstance)\n );\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n const scopedResult = markVNodeTreeWithContextFrame(result, snapshot ?? null);\n\n if (existingHost.__ASKR_WRAPPER_HOST) {\n const wrapperResult = resolveWrapperHostResult(\n existingHost,\n scopedResult,\n snapshot ?? null\n );\n updateElementChildren(\n existingHost,\n normalizeComponentChildren(wrapperResult) as VNode[]\n );\n warnUnusedStateReads(existingInstance);\n return existingHost;\n }\n\n if (\n scopedResult &&\n typeof scopedResult === 'object' &&\n 'type' in (scopedResult as DOMElement) &&\n typeof (scopedResult as DOMElement).type === 'string' &&\n tagNamesEqualIgnoreCase(\n existingHost.tagName,\n (scopedResult as DOMElement).type as string\n )\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(scopedResult as DOMElement, node),\n true,\n forceChildrenUpdate || existingInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n warnUnusedStateReads(existingInstance);\n return existingHost;\n }\n\n const resolvedResult = resolveHostNestedComponentResult(\n existingHost,\n existingInstance,\n scopedResult,\n snapshot ?? null,\n retainedHostInstances\n );\n if (\n _isDOMElement(resolvedResult) &&\n typeof resolvedResult.type === 'string' &&\n tagNamesEqualIgnoreCase(existingHost.tagName, resolvedResult.type)\n ) {\n withContext(snapshot, () => {\n updateElementFromVnode(\n existingHost,\n inheritComponentKey(resolvedResult, node),\n true,\n forceChildrenUpdate || existingInstance.mounted === false\n );\n materializeKey(existingHost, node, props);\n });\n warnUnusedStateReads(existingInstance);\n return existingHost;\n }\n\n const nextDom = materializeComponentResultNode(\n existingInstance,\n scopedResult,\n parentNamespace\n );\n\n if (nextDom instanceof Element) {\n materializeKey(nextDom, node, props);\n }\n\n if (nextDom !== existingHost && existingHost.parentNode) {\n existingHost.parentNode.replaceChild(nextDom, existingHost);\n cleanupDetachedComponentHost(existingHost, existingInstance);\n }\n\n warnUnusedStateReads(existingInstance);\n return nextDom;\n}\n\nfunction itemInstanceHydrationComplete(host: InstanceHostElement): void {\n const instance = host.__ASKR_INSTANCE;\n if (instance) {\n const scope = (\n instance as unknown as { scope?: { hydrationPending?: boolean } }\n ).scope;\n if (scope) {\n scope.hydrationPending = false;\n }\n }\n}\n\nfunction createComponentElement(\n node: ElementWithContext,\n type: (props: Props) => unknown,\n props: Record<string, unknown>,\n parentNamespace?: string\n): Node {\n // Check if this vnode has a marked context frame\n const frame = getVNodeContextFrame(node);\n const snapshot = frame || getCurrentContextFrame();\n\n const componentFn = type as (props: Props) => unknown;\n const isAsync = componentFn.constructor.name === 'AsyncFunction';\n\n if (isAsync) {\n throw new Error(\n 'Async components are not supported. Use resource() for async work.'\n );\n }\n\n // Ensure there is a persistent instance object attached to this vnode\n let childInstance = getVNodeComponentInstance(node);\n const hadChildInstance = !!childInstance;\n if (!childInstance) {\n childInstance = createComponentInstance(\n nextComponentInstanceId(),\n componentFn as ComponentFunction,\n props || {},\n null\n );\n setVNodeComponentInstance(node, childInstance);\n }\n\n if (hadChildInstance) {\n captureInlineRenderSnapshot(childInstance);\n }\n\n childInstance.portalScope =\n getCurrentInstance()?.portalScope ?? childInstance.portalScope;\n childInstance.parentInstance = getCurrentInstance();\n childInstance.props = props || {};\n childInstance.isRoot = isRouteRootComponentVNode(node);\n inheritComponentCleanupStrict(childInstance);\n\n if (snapshot) {\n childInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(childInstance)\n );\n\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n const scopedResult = markVNodeTreeWithContextFrame(result, snapshot ?? null);\n\n const dom = withContext(snapshot, () =>\n materializeComponentResultNode(childInstance, scopedResult, parentNamespace)\n );\n\n warnUnusedStateReads(childInstance);\n\n if (dom instanceof Element) {\n materializeKey(dom, node, props);\n }\n return dom;\n}\n\n/**\n * Create a document fragment from Fragment vnode\n */\nfunction createFragmentElement(\n node: DOMElement,\n props: Record<string, unknown>,\n parentNamespace?: string\n): DocumentFragment {\n const fragment = document.createDocumentFragment();\n const children = props.children ?? node.children;\n if (children) {\n if (Array.isArray(children)) {\n maybeWarnMissingKeys(children);\n for (const child of children) {\n const dom = createDOMNode(child, parentNamespace);\n if (dom) fragment.appendChild(dom);\n }\n } else {\n const dom = createDOMNode(children, parentNamespace);\n if (dom) fragment.appendChild(dom);\n }\n }\n return fragment;\n}\n\n/**\n * Check if a cached DOM node can be reused for a given vnode.\n *\n * Returns true if shape has changed (i.e., DOM cannot be reused).\n * Structural check: compares DOM tagName with vnode type.\n * Do NOT rely on vnode identity (===) — vnodes are mutable.\n */\nfunction checkVNodeShapeChanged(dom: Node, vnode: VNode): boolean {\n if (!_isDOMElement(vnode)) return true;\n if (!(dom instanceof Element)) return true;\n // Structural check: element type must match\n const vnodeType = (vnode as DOMElement).type;\n if (typeof vnodeType !== 'string') return true;\n return dom.tagName.toLowerCase() !== vnodeType.toLowerCase();\n}\n\nfunction materializeChildScopeDom(\n vnode: VNode,\n parentNamespace?: string\n): Node | null {\n if (vnode === null || vnode === undefined || vnode === false) {\n return document.createComment('');\n }\n\n const dom = createDOMNode(vnode, parentNamespace);\n if (!(dom instanceof DocumentFragment)) {\n return dom;\n }\n\n const firstChild = dom.firstChild;\n const secondChild = firstChild?.nextSibling ?? null;\n if (!firstChild) {\n return document.createComment('');\n }\n if (secondChild) {\n throw new Error('[askr] Child scopes must render a single DOM root node.');\n }\n return firstChild;\n}\n\nfunction evaluateControlBoundaryState(\n controlState: ControlBoundaryState\n): VNode[] {\n if (controlState.kind === 'for') {\n return evaluateForState(controlState);\n }\n if (controlState.kind === 'show') {\n return evaluateShowState(controlState);\n }\n return evaluateCaseState(controlState);\n}\n\nfunction clearControlBoundaryDomUpdateState(\n controlState: ControlBoundaryState\n): void {\n if (controlState.kind === 'for') {\n clearForDomUpdateState(controlState);\n return;\n }\n if (controlState.kind === 'show') {\n clearShowDomUpdateState(controlState);\n return;\n }\n clearCaseDomUpdateState(controlState);\n}\n\nfunction getControlBoundaryState(\n node: DOMElement\n): ControlBoundaryState | null {\n return (\n node._controlState ??\n (node._forState as ControlBoundaryState | undefined) ??\n null\n );\n}\n\nfunction getDirectControlBoundaryVNode(children: unknown): DOMElement | null {\n if (\n !Array.isArray(children) &&\n _isDOMElement(children) &&\n (children as DOMElement).type === __FOR_BOUNDARY__\n ) {\n return children as DOMElement;\n }\n\n if (\n Array.isArray(children) &&\n children.length === 1 &&\n _isDOMElement(children[0]) &&\n (children[0] as DOMElement).type === __FOR_BOUNDARY__\n ) {\n return children[0] as DOMElement;\n }\n\n return null;\n}\n\nfunction getControlBoundaryCommitChildren(\n controlState: ControlBoundaryState\n): VNode[] {\n if (controlState.kind === 'for' && controlState._needsSourceReconcile) {\n return evaluateForState(controlState);\n }\n\n if (controlState.kind !== 'for') {\n const activeVNode = controlState.activeScope?.vnode;\n return activeVNode == null || activeVNode === false ? [] : [activeVNode];\n }\n\n if (controlState.orderedKeys.length === 0) {\n const fallbackVNode = controlState.fallbackScope?.vnode;\n return fallbackVNode == null || fallbackVNode === false\n ? []\n : [fallbackVNode];\n }\n\n const childrenVNodes: VNode[] = [];\n for (let index = 0; index < controlState.orderedKeys.length; index += 1) {\n const itemKey = controlState.orderedKeys[index];\n const itemInstance = controlState.items.get(itemKey);\n childrenVNodes.push((itemInstance?.scope.vnode ?? null) as VNode);\n }\n\n return childrenVNodes;\n}\n\nfunction clearControlBoundaryCommitOwner(parent: Element): void {\n const owner = controlBoundaryOwners.get(parent) as\n | ControlBoundaryCommitOwnerState\n | undefined;\n if (owner) {\n owner._enqueueBoundaryCommit = null;\n owner._hasPendingBoundaryCommit = false;\n if (owner._commitOwner === parent) {\n owner._commitOwner = null;\n }\n }\n\n controlBoundaryOwners.delete(parent);\n}\n\nfunction registerControlBoundaryCommitOwner(\n parent: Element,\n controlState: ControlBoundaryState\n): void {\n const ownerState = controlState as ControlBoundaryCommitOwnerState;\n const previousParent = ownerState._commitOwner;\n if (\n previousParent &&\n previousParent !== parent &&\n controlBoundaryOwners.get(previousParent) === controlState\n ) {\n controlBoundaryOwners.delete(previousParent);\n }\n\n const previousOwner = controlBoundaryOwners.get(parent) as\n | ControlBoundaryCommitOwnerState\n | undefined;\n if (previousOwner && previousOwner !== controlState) {\n previousOwner._enqueueBoundaryCommit = null;\n previousOwner._hasPendingBoundaryCommit = false;\n if (previousOwner._commitOwner === parent) {\n previousOwner._commitOwner = null;\n }\n }\n\n controlBoundaryOwners.set(parent, controlState);\n ownerState._commitOwner = parent;\n controlState._enqueueBoundaryCommit = () => {\n if (controlState._hasPendingBoundaryCommit) {\n return;\n }\n\n controlState._hasPendingBoundaryCommit = true;\n globalScheduler.enqueue(() => {\n controlState._hasPendingBoundaryCommit = false;\n\n if (controlBoundaryOwners.get(parent) !== controlState) {\n return;\n }\n\n const childrenVNodes = getControlBoundaryCommitChildren(controlState);\n commitForBoundaryChildren(parent, controlState, childrenVNodes);\n });\n };\n}\n\n/**\n * Create DOM from For boundary - evaluates list and renders items\n *\n * CRITICAL INVARIANT:\n * DOM order MUST be reconstructed from the current vnode list on every render.\n * Reusing DOM nodes never implies preserving their position.\n *\n * This function ALWAYS returns a fragment whose child order exactly matches\n * the evaluated vnode list, even when all DOM nodes are reused.\n * Appending an existing node to the fragment is how we express reordering\n * (per DOM spec, appendChild moves already-attached nodes).\n *\n * Do NOT:\n * - Skip appending based on parentElement or existing attachment\n * - Rely on vnode identity (===) to decide DOM reuse (vnodes are mutable)\n * - Introduce fast-paths that might skip DOM reconstruction\n */\nexport function createForBoundary(\n node: DOMElement,\n props: Record<string, unknown>,\n parentNamespace?: string\n): DocumentFragment {\n void props;\n const controlState = getControlBoundaryState(node);\n\n if (!controlState) {\n if (getRuntimeEnv().NODE_ENV !== 'production') {\n logger.warn('[Askr] Control boundary missing state');\n }\n return document.createDocumentFragment();\n }\n\n const childrenVNodes = evaluateControlBoundaryState(controlState);\n\n // DOM order MUST be reconstructed from the current vnode list on every render.\n // Reusing DOM nodes never implies preserving their position.\n const fragment = document.createDocumentFragment();\n\n if (controlState.kind !== 'for') {\n const activeScope = controlState.activeScope;\n const vnode = childrenVNodes[0];\n if (activeScope && vnode !== undefined) {\n const dom = materializeChildScopeDom(vnode, parentNamespace);\n activeScope.dom = dom ?? undefined;\n if (dom) {\n fragment.appendChild(dom);\n }\n }\n clearControlBoundaryDomUpdateState(controlState);\n return fragment;\n }\n\n const forState = controlState;\n if (forState.orderedKeys.length === 0) {\n const fallbackScope = forState.fallbackScope;\n const fallbackVNode = childrenVNodes[0];\n if (fallbackScope && fallbackVNode !== undefined) {\n const dom = materializeChildScopeDom(fallbackVNode, parentNamespace);\n fallbackScope.dom = dom ?? undefined;\n if (dom) {\n fragment.appendChild(dom);\n }\n }\n clearControlBoundaryDomUpdateState(controlState);\n return fragment;\n }\n\n for (let i = 0; i < childrenVNodes.length; i++) {\n const childVNode = childrenVNodes[i];\n // Use orderedKeys[i] to look up items — this is aligned with vnode order\n // after reconciliation. Do NOT use childVNode.key (JSX key may differ).\n const itemKey = forState.orderedKeys[i];\n const itemInstance = itemKey != null ? forState.items.get(itemKey) : null;\n\n let dom: Node | null = null;\n\n // Try to reuse existing DOM if element type matches (structural check).\n // Do NOT rely on vnode identity (===) — vnodes are mutable.\n if (itemInstance && itemInstance.scope.dom) {\n const cachedDom = itemInstance.scope.dom;\n // Structural check: element type must match for safe reuse\n if (!checkVNodeShapeChanged(cachedDom, childVNode)) {\n dom = cachedDom;\n }\n }\n\n // Create new DOM if no reusable node available\n if (!dom) {\n dom = materializeChildScopeDom(childVNode, parentNamespace);\n // Cache the DOM in the item instance for future reuse\n if (itemInstance) {\n itemInstance.scope.dom = dom ?? undefined;\n }\n }\n\n if (dom) {\n // Always update reused DOM from current vnode (never rely on vnode identity)\n\n // ALWAYS append to fragment — this is mandatory for correct ordering.\n // Appending an existing node moves it (DOM spec) — this is how reordering works.\n // No parentElement checks may gate insertion.\n fragment.appendChild(dom);\n }\n }\n\n clearControlBoundaryDomUpdateState(controlState);\n return fragment;\n}\n\ntype ErrorBoundaryVNode = DOMElement & {\n __instance?: ComponentInstance;\n};\n\nfunction createErrorBoundaryElement(\n node: ErrorBoundaryVNode,\n props: Record<string, unknown>,\n parentNamespace?: string\n): Node {\n const boundaryState = node.__instance?.errorBoundaryState ?? null;\n const reset = node.__instance\n ? createBoundaryReset(node.__instance)\n : () => {};\n const fallback = props.fallback as ErrorBoundaryProps['fallback'];\n const children = props.children as ErrorBoundaryProps['children'];\n\n if (boundaryState?.error != null) {\n const fallbackValue = resolveErrorBoundaryFallback(\n fallback,\n boundaryState.error,\n reset\n );\n if (fallbackValue instanceof Node) {\n return fallbackValue;\n }\n const fallbackDom = createDOMNode(fallbackValue, parentNamespace);\n return fallbackDom ?? document.createComment('');\n }\n\n try {\n const dom = createDOMNode(children, parentNamespace);\n return dom ?? document.createComment('');\n } catch (error) {\n if (node.__instance) {\n reportBoundaryError(\n node.__instance,\n error,\n props.onError as ((next: unknown) => void) | undefined\n );\n } else {\n logger.error('[Askr] ErrorBoundary caught render error:', error);\n }\n\n const fallbackValue = resolveErrorBoundaryFallback(fallback, error, reset);\n if (fallbackValue instanceof Node) {\n return fallbackValue;\n }\n const fallbackDom = createDOMNode(fallbackValue, parentNamespace);\n return fallbackDom ?? document.createComment('');\n }\n}\n\nfunction syncForItemDom(\n parent: Element,\n scope: {\n dom?: Node;\n needsDomUpdate: boolean;\n },\n vnode: VNode\n): Node | null {\n let dom = scope.dom ?? null;\n\n const parentNamespace =\n parent.namespaceURI === SVG_NAMESPACE ? SVG_NAMESPACE : undefined;\n\n if (_isDOMElement(vnode) && typeof vnode.type === 'function') {\n const syncedComponentDom = syncComponentElement(\n dom,\n vnode as ElementWithContext,\n vnode.type as ComponentFunction,\n ((vnode as DOMElement).props ?? {}) as Record<string, unknown>,\n parentNamespace\n );\n if (syncedComponentDom) {\n scope.dom = syncedComponentDom ?? undefined;\n return syncedComponentDom;\n }\n }\n\n if (!dom) {\n dom = materializeChildScopeDom(vnode, parentNamespace);\n scope.dom = dom ?? undefined;\n return dom;\n }\n\n if (\n dom.nodeType === 3 &&\n (typeof vnode === 'string' || typeof vnode === 'number')\n ) {\n (dom as Text).data = String(vnode);\n return dom;\n }\n\n if (\n dom.nodeType === 8 &&\n (vnode === null || vnode === undefined || vnode === false)\n ) {\n return dom;\n }\n\n if (\n dom instanceof Element &&\n _isDOMElement(vnode) &&\n typeof vnode.type === 'string' &&\n tagNamesEqualIgnoreCase(dom.tagName, vnode.type)\n ) {\n updateElementFromVnode(dom, vnode, true);\n return dom;\n }\n\n const nextDom = materializeChildScopeDom(vnode, parentNamespace);\n if (!nextDom) {\n if (dom.parentNode === parent) {\n teardownNodeSubtree(dom);\n dom.parentNode.removeChild(dom);\n }\n scope.dom = undefined;\n return null;\n }\n\n if (dom.parentNode === parent) {\n parent.replaceChild(nextDom, dom);\n }\n\n teardownNodeSubtree(dom);\n\n scope.dom = nextDom;\n return nextDom;\n}\n\nfunction normalizeStableIntrinsicChildren(\n children: VNode | VNode[] | undefined\n): VNode[] {\n if (children === null || children === undefined || children === false) {\n return [];\n }\n\n return Array.isArray(children) ? children : [children];\n}\n\nfunction getStableIntrinsicChildren(vnode: DOMElement): VNode[] {\n return normalizeStableIntrinsicChildren(\n (vnode.props?.children as VNode | VNode[] | undefined) ?? vnode.children\n );\n}\n\nfunction patchStableIntrinsicText(domNode: Node, nextVNode: VNode): boolean {\n if (\n domNode.nodeType !== 3 ||\n (typeof nextVNode !== 'string' && typeof nextVNode !== 'number')\n ) {\n return false;\n }\n\n const nextText = String(nextVNode);\n const textNode = domNode as Text;\n if (textNode.data !== nextText) {\n recordBenchEvent('domTextSet');\n textNode.data = nextText;\n }\n\n return true;\n}\n\nfunction patchStableIntrinsicElement(\n dom: Element,\n nextVNode: DOMElement\n): boolean {\n if (\n typeof nextVNode.type !== 'string' ||\n !tagNamesEqualIgnoreCase(dom.tagName, nextVNode.type)\n ) {\n return false;\n }\n\n updateElementFromVnode(dom, nextVNode, false);\n\n const nextChildren = getStableIntrinsicChildren(nextVNode);\n if (dom.childNodes.length !== nextChildren.length) {\n return false;\n }\n\n for (let index = 0; index < nextChildren.length; index += 1) {\n const nextChild = nextChildren[index];\n\n const currentChildNode = dom.childNodes[index];\n if (!currentChildNode) {\n return false;\n }\n\n if (patchStableIntrinsicText(currentChildNode, nextChild)) {\n continue;\n }\n\n if (\n currentChildNode instanceof Element &&\n _isDOMElement(nextChild) &&\n typeof nextChild.type === 'string' &&\n patchStableIntrinsicElement(currentChildNode, nextChild)\n ) {\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction resolveStableIntrinsicPatchVNode(\n dom: Element,\n vnode: VNode\n): DOMElement | null {\n if (!_isDOMElement(vnode)) {\n return null;\n }\n\n if (typeof vnode.type === 'string') {\n return tagNamesEqualIgnoreCase(dom.tagName, vnode.type) ? vnode : null;\n }\n\n if (typeof vnode.type !== 'function') {\n return null;\n }\n\n const host = dom as InstanceHostElement;\n const existingInstance = findHostInstanceByType(\n host,\n vnode.type as ComponentFunction\n );\n if (\n !existingInstance ||\n existingInstance.fn !== vnode.type ||\n host.__ASKR_WRAPPER_HOST\n ) {\n return null;\n }\n\n const snapshot =\n getVNodeContextFrame(vnode) ||\n getCurrentContextFrame() ||\n existingInstance.ownerFrame ||\n null;\n\n captureInlineRenderSnapshot(existingInstance);\n\n existingInstance.props =\n (((vnode as DOMElement).props ?? {}) as Record<string, unknown>) || {};\n existingInstance.isRoot = isRouteRootComponentVNode(vnode);\n existingInstance.portalScope =\n getCurrentInstance()?.portalScope ?? existingInstance.portalScope;\n inheritComponentCleanupStrict(existingInstance);\n\n if (snapshot) {\n existingInstance.ownerFrame = snapshot;\n }\n\n const result = withContext(snapshot, () =>\n renderComponentInline(existingInstance)\n );\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async components are not supported. Components must return synchronously.'\n );\n }\n\n const resolvedResult = resolveNestedComponentResult(\n result,\n snapshot ?? null,\n existingInstance\n );\n if (\n _isDOMElement(resolvedResult) &&\n typeof resolvedResult.type === 'string' &&\n tagNamesEqualIgnoreCase(dom.tagName, resolvedResult.type)\n ) {\n return inheritComponentKey(resolvedResult, vnode as DOMElement);\n }\n\n return null;\n}\n\nexport function tryPatchStableForDirtyItem(scope: {\n dom?: Node;\n vnode?: VNode;\n}): boolean {\n incDevCounter('stableForPatchAttempt');\n if (!(scope.dom instanceof Element) || scope.vnode === undefined) {\n return false;\n }\n\n const nextIntrinsic = resolveStableIntrinsicPatchVNode(\n scope.dom,\n scope.vnode\n );\n if (!nextIntrinsic) {\n return false;\n }\n\n const didPatch = patchStableIntrinsicElement(scope.dom, nextIntrinsic);\n\n const existingInstance = (scope.dom as InstanceHostElement).__ASKR_INSTANCE;\n if (didPatch && existingInstance) {\n warnUnusedStateReads(existingInstance);\n }\n\n if (didPatch) {\n incDevCounter('stableForPatchHit');\n }\n\n return didPatch;\n}\n\nexport function commitForBoundaryChildren(\n parent: Element,\n controlState: ControlBoundaryState,\n childrenVNodes: VNode[]\n): void {\n if (controlState.kind !== 'for') {\n const activeScope = controlState.activeScope;\n const activeVNode = childrenVNodes[0];\n const nextDom =\n activeScope && activeVNode !== undefined\n ? syncForItemDom(parent, activeScope, activeVNode)\n : null;\n\n for (let i = 0; i < controlState.lastRemovedNodes.length; i++) {\n const removedNode = controlState.lastRemovedNodes[i];\n if (removedNode instanceof Element) {\n teardownNodeSubtree(removedNode);\n }\n if (removedNode.parentNode === parent) {\n recordBenchEvent('domRemove');\n parent.removeChild(removedNode);\n }\n }\n\n if (nextDom) {\n if (\n parent.childNodes.length !== 1 ||\n parent.firstChild !== nextDom ||\n controlState.lastRemovedNodes.length > 0\n ) {\n parent.replaceChildren(nextDom);\n }\n } else if (parent.firstChild) {\n parent.textContent = '';\n }\n\n keyedElements.delete(parent);\n clearControlBoundaryDomUpdateState(controlState);\n return;\n }\n\n commitForStateBoundaryChildren(parent, controlState, childrenVNodes, {\n isProduction: () => getRuntimeEnv().NODE_ENV === 'production',\n syncForItemDom,\n tryPatchStableForDirtyItem,\n });\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Element Updates\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Update an existing element's attributes and children from vnode\n */\nexport function updateElementFromVnode(\n el: Element,\n vnode: VNode,\n updateChildren = true,\n forceChildrenUpdate = false\n): void {\n if (!_isDOMElement(vnode)) {\n return;\n }\n\n const props = (vnode.props || {}) as Record<string, unknown>;\n const domVNode = vnode as DOMElement;\n\n if (isHydrationSkipped(el)) {\n clearHydrationDeferredSubtree(el);\n return;\n }\n\n // Ensure key is materialized\n materializeKey(el, vnode, props);\n\n // Diff and update event listeners and other attributes\n const existingListeners = elementListeners.get(el);\n const existingReactiveProps = elementReactivePropsCleanup.get(el);\n\n // Fast path: when element has no tracked listeners/reactive props and all\n // static scalar props already match, skip full prop diff machinery.\n if (\n (!existingListeners || existingListeners.size === 0) &&\n (!existingReactiveProps || existingReactiveProps.size === 0)\n ) {\n if (\n !forceChildrenUpdate &&\n hasMatchingStaticProps(el, props, vnode.type as string)\n ) {\n if (updateChildren) {\n const children =\n (props.children as VNode | VNode[] | undefined) ?? vnode.children;\n if (!forceChildrenUpdate && canReuseStaticSubtree(el, domVNode)) {\n return;\n }\n updateElementChildren(el, children, forceChildrenUpdate);\n }\n return;\n }\n }\n\n // Lazily materialize desired listener keys only if we need to diff against\n // existing listeners. Capture and bubble handlers on the same DOM event need\n // distinct keys even though they share the rendered event name.\n let desiredListenerKeys: Set<string> | null = null;\n let desiredDelegatedEventNames: Set<string> | null = null;\n let desiredReactivePropNames: Set<string> | null = null;\n const nextChildren = props.children ?? domVNode.children;\n const usesReactiveChildren = syncReactiveScalarChild(el, nextChildren);\n\n if (usesReactiveChildren) {\n (desiredReactivePropNames ??= new Set()).add(REACTIVE_CHILDREN_KEY);\n }\n\n for (const key in props) {\n const value = props[key];\n if (isSkippedProp(key)) continue;\n\n const eventProp = parseEventProp(key);\n const eventName = eventProp?.eventName;\n const eventCapture = eventProp?.capture ?? false;\n const listenerKey =\n eventName === undefined\n ? null\n : getEventListenerKey(eventName, eventCapture);\n\n // Handle removal cases\n if (value === undefined || value === null || value === false) {\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, '');\n } else if (key === 'value') {\n applyFormControlProp(el, key, '', vnode.type as string);\n } else if (key === 'checked') {\n applyFormControlProp(el, key, false, vnode.type as string);\n } else if (listenerKey && existingListeners?.has(listenerKey)) {\n const entry = existingListeners.get(listenerKey)!;\n incDevCounter('listenerRemoves');\n if (entry.isDelegated) {\n removeDelegatedListener(el, entry.eventName);\n } else {\n if (entry.options !== undefined) {\n el.removeEventListener(\n entry.eventName,\n entry.handler,\n entry.options\n );\n } else {\n el.removeEventListener(entry.eventName, entry.handler);\n }\n }\n existingListeners.delete(listenerKey);\n } else {\n const entry = existingReactiveProps?.get(key);\n if (entry) {\n entry.cleanup();\n existingReactiveProps?.delete(key);\n } else {\n removeRenderedAttribute(el, key);\n }\n }\n continue;\n }\n\n // Handle reactive props (functions)\n if (typeof value === 'function' && !eventProp && key !== 'ref') {\n const existingEntry = existingReactiveProps?.get(key);\n if (existingReactiveProps && existingReactiveProps.size > 0) {\n (desiredReactivePropNames ??= new Set()).add(key);\n }\n\n // Only cleanup and re-setup if function reference changed (Issue 1 fix)\n if (existingEntry && existingEntry.fnRef === value) {\n // Same function reference, no need to re-setup\n continue;\n }\n\n if (existingEntry?.updateFn) {\n existingEntry.updateFn(value as () => unknown);\n existingEntry.fnRef = value as () => unknown;\n continue;\n }\n\n // If function reference changed, cleanup old and setup new\n if (existingEntry) {\n existingEntry.cleanup();\n }\n\n const reactive = setupReactiveProp(\n el,\n key,\n value as () => unknown,\n vnode.type as string\n );\n\n if (!elementReactivePropsCleanup.has(el)) {\n elementReactivePropsCleanup.set(el, new Map());\n }\n elementReactivePropsCleanup.get(el)!.set(key, {\n cleanup: reactive.cleanup,\n updateFn: (nextValue) => {\n reactive.updateFn(nextValue as () => unknown);\n },\n fnRef: value as () => unknown,\n });\n continue;\n }\n\n const existingReactiveEntry = existingReactiveProps?.get(key);\n if (existingReactiveEntry) {\n existingReactiveEntry.cleanup();\n existingReactiveProps?.delete(key);\n }\n\n if (key === 'class' || key === 'className') {\n writeElementClassName(el, String(value));\n } else if (key === 'style') {\n applyStylePropValue(el, value);\n } else if (key === 'value' || key === 'checked') {\n applyFormControlProp(el, key, value, vnode.type as string);\n } else if (eventProp && listenerKey) {\n const eventName = eventProp.eventName;\n const eventCapture = eventProp.capture;\n const useDelegation =\n !eventCapture &&\n isEventDelegationEnabled() &&\n isDelegatedEvent(eventName);\n if (useDelegation) {\n (desiredDelegatedEventNames ??= new Set()).add(eventName);\n }\n\n if (useDelegation) {\n const existingDelegated = getDelegatedHandlerForElement(el, eventName);\n if (existingDelegated?.original === value) {\n continue;\n }\n\n if (\n existingDelegated &&\n updateDelegatedListener(\n el,\n eventName,\n value as EventListener,\n value as EventListener,\n undefined\n )\n ) {\n continue;\n }\n\n addDelegatedListener(\n el,\n eventName,\n value as EventListener,\n value as EventListener,\n undefined\n );\n continue;\n }\n\n (desiredListenerKeys ??= new Set()).add(listenerKey);\n\n const existing = existingListeners?.get(listenerKey);\n\n if (existing && existing.original === value) {\n continue;\n }\n\n if (existing) {\n if (\n useDelegation &&\n existing.isDelegated &&\n updateDelegatedListener(\n el,\n eventName,\n value as EventListener,\n value as EventListener,\n undefined\n )\n ) {\n existing.handler = value as EventListener;\n existing.original = value as EventListener;\n existing.options = undefined;\n continue;\n }\n\n if (!useDelegation && !existing.isDelegated && existing.updateHandler) {\n existing.updateHandler(value as EventListener);\n existing.original = value as EventListener;\n continue;\n }\n\n if (existing.isDelegated) {\n removeDelegatedListener(el, existing.eventName);\n } else {\n if (existing.options !== undefined) {\n el.removeEventListener(\n existing.eventName,\n existing.handler,\n existing.options\n );\n } else {\n el.removeEventListener(existing.eventName, existing.handler);\n }\n }\n }\n\n const options = getEventListenerOptions(eventName, eventCapture);\n const mutableHandler = createMutableWrappedHandler(\n value as EventListener,\n true\n );\n const trackedHandler = mutableHandler.handler;\n\n if (options !== undefined) {\n el.addEventListener(eventName, trackedHandler, options);\n } else {\n el.addEventListener(eventName, trackedHandler);\n }\n incDevCounter('listenerAdds');\n\n const listenerEntry = {\n handler: trackedHandler,\n original: value as EventListener,\n eventName,\n options,\n isDelegated: false,\n updateHandler: mutableHandler?.updateHandler,\n };\n if (!elementListeners.has(el)) {\n elementListeners.set(el, new Map());\n }\n elementListeners.get(el)!.set(listenerKey, listenerEntry);\n } else {\n setRenderedAttribute(el, key, String(value));\n }\n }\n\n removeStaleAttributes(el, domVNode, props);\n\n if (existingListeners && existingListeners.size > 0) {\n // If no event props were present, all existing listeners are undesired.\n if (desiredListenerKeys === null) {\n existingListeners.forEach((entry) => {\n incDevCounter('listenerRemoves');\n if (entry.isDelegated) {\n removeDelegatedListener(el, entry.eventName);\n } else {\n if (entry.options !== undefined) {\n el.removeEventListener(\n entry.eventName,\n entry.handler,\n entry.options\n );\n } else {\n el.removeEventListener(entry.eventName, entry.handler);\n }\n }\n });\n elementListeners.delete(el);\n } else {\n existingListeners.forEach((entry, listenerKey) => {\n if (!desiredListenerKeys.has(listenerKey)) {\n incDevCounter('listenerRemoves');\n if (entry.isDelegated) {\n removeDelegatedListener(el, entry.eventName);\n } else {\n if (entry.options !== undefined) {\n el.removeEventListener(\n entry.eventName,\n entry.handler,\n entry.options\n );\n } else {\n el.removeEventListener(entry.eventName, entry.handler);\n }\n }\n existingListeners.delete(listenerKey);\n }\n });\n if (existingListeners.size === 0) elementListeners.delete(el);\n }\n }\n\n const delegatedHandlers = getDelegatedHandlersForElement(el);\n if (delegatedHandlers && delegatedHandlers.size > 0) {\n if (desiredDelegatedEventNames === null) {\n for (const eventName of delegatedHandlers.keys()) {\n removeDelegatedListener(el, eventName);\n }\n } else {\n for (const eventName of delegatedHandlers.keys()) {\n if (!desiredDelegatedEventNames.has(eventName)) {\n removeDelegatedListener(el, eventName);\n }\n }\n }\n }\n\n if (existingReactiveProps && existingReactiveProps.size > 0) {\n if (desiredReactivePropNames === null) {\n existingReactiveProps.forEach((entry) => {\n entry.cleanup();\n });\n elementReactivePropsCleanup.delete(el);\n } else {\n existingReactiveProps.forEach((entry, key) => {\n if (!desiredReactivePropNames.has(key)) {\n entry.cleanup();\n existingReactiveProps.delete(key);\n }\n });\n if (existingReactiveProps.size === 0) {\n elementReactivePropsCleanup.delete(el);\n }\n }\n }\n\n // Update children\n if (updateChildren) {\n const children =\n (props.children as VNode | VNode[] | undefined) ?? vnode.children;\n if (usesReactiveChildren) {\n return;\n }\n updateElementChildren(el, children, forceChildrenUpdate);\n }\n}\n\nexport function updateElementChildren(\n el: Element,\n children: VNode | VNode[] | undefined,\n forceUpdate = false\n): void {\n const directControlBoundary = getDirectControlBoundaryVNode(children);\n if (directControlBoundary) {\n const controlState = getControlBoundaryState(directControlBoundary);\n if (!controlState) {\n throw new Error(\n '[updateElementChildren] Control boundary missing internal state'\n );\n }\n\n registerControlBoundaryCommitOwner(el, controlState);\n const childrenVNodes = evaluateControlBoundaryState(controlState);\n commitForBoundaryChildren(el, controlState, childrenVNodes as VNode[]);\n return;\n }\n\n clearControlBoundaryCommitOwner(el);\n\n // CRITICAL: Check for null/undefined explicitly, not falsy values\n // because 0, false, and '' are valid children\n if (children === null || children === undefined) {\n // Clean up all children before clearing\n for (let n = el.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n el.textContent = '';\n return;\n }\n\n if (!Array.isArray(children) && isFragmentVNode(children)) {\n updateUnkeyedChildren(\n el,\n normalizeComponentChildren(children),\n forceUpdate\n );\n return;\n }\n\n if (\n !Array.isArray(children) &&\n (typeof children === 'string' || typeof children === 'number')\n ) {\n if (el.childNodes.length === 1 && el.firstChild?.nodeType === 3) {\n const s = String(children);\n const t = el.firstChild as Text;\n // Skip the write when the text is already correct — avoids triggering\n // DOM mutation observers and text layout passes for unchanged nodes.\n if (t.data !== s) t.data = s;\n } else {\n // Clean up all children before replacing with text\n for (let n = el.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n el.textContent = String(children);\n }\n return;\n }\n\n if (Array.isArray(children)) {\n const normalizedChildren = normalizeComponentChildren(children) as VNode[];\n\n if (trySyncScalarChildSequenceInPlace(el, normalizedChildren)) {\n keyedElements.delete(el);\n return;\n }\n\n if (hasKeyedVNodeChildren(normalizedChildren)) {\n const oldKeyMap = getOrBuildDomKeyMap(el);\n const newKeyMap = reconcileKeyedChildren(\n el,\n normalizedChildren,\n oldKeyMap\n );\n keyedElements.set(el, newKeyMap);\n return;\n }\n if (isBulkTextFastPathEligible(el, normalizedChildren)) {\n performBulkTextReplace(el, normalizedChildren);\n keyedElements.delete(el);\n return;\n }\n updateUnkeyedChildren(el, normalizedChildren, forceUpdate);\n return;\n }\n\n if (_isDOMElement(children)) {\n updateUnkeyedChildren(el, [children], forceUpdate);\n return;\n }\n\n // Clean up all children before clearing\n for (let n = el.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n el.textContent = '';\n const dom = createDOMNode(children);\n if (dom) el.appendChild(dom);\n}\n\nfunction hasKeyedVNodeChildren(children: VNode[]): boolean {\n for (let i = 0; i < children.length; i++) {\n if (extractKey(children[i]) !== undefined) return true;\n }\n return false;\n}\n\nfunction isEmptyChild(child: unknown): boolean {\n return child === null || child === undefined || child === false;\n}\n\nfunction getOrBuildDomKeyMap(\n parent: Element\n): Map<string | number, Element> | undefined {\n let keyMap = keyedElements.get(parent);\n if (!keyMap) {\n keyMap = new Map<string | number, Element>();\n for (\n let child = parent.firstElementChild;\n child;\n child = child.nextElementSibling\n ) {\n const key = child.getAttribute('data-key');\n if (key !== null) {\n keyMap.set(key, child);\n const numericKey = Number(key);\n if (!Number.isNaN(numericKey)) keyMap.set(numericKey, child);\n }\n }\n if (keyMap.size > 0) keyedElements.set(parent, keyMap);\n }\n return keyMap.size > 0 ? keyMap : undefined;\n}\n\nfunction upperCommonTagName(tag: string): string | null {\n switch (tag) {\n case 'div':\n return 'DIV';\n case 'span':\n return 'SPAN';\n case 'p':\n return 'P';\n case 'a':\n return 'A';\n case 'button':\n return 'BUTTON';\n case 'input':\n return 'INPUT';\n case 'ul':\n return 'UL';\n case 'ol':\n return 'OL';\n case 'li':\n return 'LI';\n default:\n return null;\n }\n}\n\nfunction tagsEqualIgnoreCase(\n elementTagName: string,\n vnodeType: string\n): boolean {\n const upperCommon = upperCommonTagName(vnodeType);\n if (upperCommon !== null && elementTagName === upperCommon) return true;\n return tagNamesEqualIgnoreCase(elementTagName, vnodeType);\n}\n\ntype StaticChildSlot =\n | { kind: 'text'; value: string }\n | { kind: 'element'; value: DOMElement };\n\nconst STATIC_CHILD_SLOTS_CACHE = Symbol.for('__askrStaticChildSlots');\nlet staticChildSlotsCacheEnabled = true;\n\ninterface StaticChildSlotsCacheNode {\n [STATIC_CHILD_SLOTS_CACHE]?: StaticChildSlot[] | null;\n}\n\nexport function setStaticChildSlotsCacheEnabled(enabled: boolean): void {\n staticChildSlotsCacheEnabled = enabled;\n}\n\nfunction collectStaticChildSlots(\n children: unknown,\n slots: StaticChildSlot[]\n): boolean {\n if (isFragmentVNode(children)) {\n const fragmentChildren = children.props?.children ?? children.children;\n return collectStaticChildSlots(fragmentChildren, slots);\n }\n\n if (Array.isArray(children)) {\n for (const child of children) {\n if (!collectStaticChildSlots(child, slots)) {\n return false;\n }\n }\n return true;\n }\n\n if (children === null || children === undefined || children === false) {\n return true;\n }\n\n if (typeof children === 'string' || typeof children === 'number') {\n slots.push({ kind: 'text', value: String(children) });\n return true;\n }\n\n if (\n _isDOMElement(children) &&\n typeof (children as DOMElement).type === 'string'\n ) {\n slots.push({ kind: 'element', value: children as DOMElement });\n return true;\n }\n\n return false;\n}\n\nfunction getStaticChildSlots(vnode: DOMElement): StaticChildSlot[] | null {\n if (staticChildSlotsCacheEnabled) {\n const cacheNode = vnode as DOMElement & StaticChildSlotsCacheNode;\n const cached = cacheNode[STATIC_CHILD_SLOTS_CACHE];\n if (cached !== undefined) {\n return cached;\n }\n }\n\n const slots: StaticChildSlot[] = [];\n const staticSlots = collectStaticChildSlots(\n (vnode.props?.children ?? vnode.children) as unknown,\n slots\n )\n ? slots\n : null;\n if (staticChildSlotsCacheEnabled) {\n const cacheNode = vnode as DOMElement & StaticChildSlotsCacheNode;\n if (Object.isExtensible(vnode)) {\n cacheNode[STATIC_CHILD_SLOTS_CACHE] = staticSlots;\n }\n }\n return staticSlots;\n}\n\nfunction hasMatchingStaticProps(\n el: Element,\n props: Record<string, unknown>,\n vnodeType: string\n): boolean {\n let staticPropCount = 0;\n\n for (const key in props) {\n if (isSkippedProp(key)) continue;\n\n const value = props[key];\n if (value === undefined || value === null || value === false) {\n return false;\n }\n\n const eventName = parseEventName(key);\n if (eventName || typeof value === 'function') {\n return false;\n }\n\n if (key === 'class' || key === 'className') {\n if (readElementClassName(el) !== String(value)) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (key === 'style') {\n const styleValue =\n typeof value === 'string' ? value.trim().replace(/;$/, '') : null;\n const domStyle = el.getAttribute('style')?.trim().replace(/;$/, '') ?? '';\n if (styleValue === null || domStyle !== styleValue) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (key === 'value' || key === 'checked') {\n if ((el as HTMLElement & Record<string, unknown>)[key] !== value) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (key === 'selected' && vnodeType === 'option') {\n if ((el as HTMLOptionElement).selected !== Boolean(value)) {\n return false;\n }\n staticPropCount += 1;\n continue;\n }\n\n if (el.getAttribute(getRenderedAttributeName(el, key)) !== String(value)) {\n return false;\n }\n\n staticPropCount += 1;\n }\n\n return el.attributes.length === staticPropCount;\n}\n\nfunction canReuseStaticSubtree(el: Element, vnode: DOMElement): boolean {\n if (\n typeof vnode.type !== 'string' ||\n !tagsEqualIgnoreCase(el.tagName, vnode.type)\n ) {\n return false;\n }\n\n const props = (vnode.props || {}) as Record<string, unknown>;\n if (!hasMatchingStaticProps(el, props, vnode.type)) {\n return false;\n }\n\n const slots = getStaticChildSlots(vnode);\n if (!slots) {\n return false;\n }\n\n if (el.childNodes.length !== slots.length) {\n return false;\n }\n\n for (let index = 0; index < slots.length; index += 1) {\n const slot = slots[index];\n const current = el.childNodes[index];\n if (!current) {\n return false;\n }\n\n if (slot.kind === 'text') {\n if (current.nodeType !== 3 || (current as Text).data !== slot.value) {\n return false;\n }\n continue;\n }\n\n if (!(current instanceof Element)) {\n return false;\n }\n\n if (!canReuseStaticSubtree(current, slot.value)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function updateUnkeyedChildren(\n parent: Element,\n newChildren: unknown[],\n forceUpdate = false\n): void {\n const parentNamespace =\n parent.namespaceURI === SVG_NAMESPACE ? SVG_NAMESPACE : undefined;\n\n const trySyncComponentChild = (\n currentDom: Element,\n next: DOMElement\n ): Node | null => {\n if (typeof next.type !== 'function') {\n return null;\n }\n\n return syncComponentElement(\n currentDom,\n next as ElementWithContext,\n next.type as ComponentFunction,\n (((next as DOMElement).props ?? {}) as Record<string, unknown>) || {},\n parentNamespace,\n forceUpdate\n );\n };\n\n const trySyncControlBoundaryChild = (\n parent: Element,\n currentNode: Node | null,\n next: DOMElement\n ): boolean => {\n if (next.type !== __FOR_BOUNDARY__) {\n return false;\n }\n\n const controlState = getControlBoundaryState(next);\n if (!controlState || controlState.kind === 'for') {\n return false;\n }\n\n const childrenVNodes = evaluateControlBoundaryState(controlState);\n const activeScope = controlState.activeScope;\n const activeVNode = childrenVNodes[0];\n const nextDom =\n activeScope && activeVNode !== undefined\n ? syncForItemDom(parent, activeScope, activeVNode)\n : null;\n\n for (let i = 0; i < controlState.lastRemovedNodes.length; i++) {\n const removedNode = controlState.lastRemovedNodes[i];\n if (removedNode.parentNode !== parent) {\n continue;\n }\n\n teardownNodeSubtree(removedNode);\n if (nextDom && nextDom !== removedNode && !nextDom.parentNode) {\n parent.replaceChild(nextDom, removedNode);\n } else {\n parent.removeChild(removedNode);\n }\n }\n\n if (nextDom && !nextDom.parentNode) {\n if (currentNode?.parentNode === parent) {\n teardownNodeSubtree(currentNode);\n parent.replaceChild(nextDom, currentNode);\n } else {\n parent.appendChild(nextDom);\n }\n } else if (!nextDom && currentNode?.parentNode === parent) {\n teardownNodeSubtree(currentNode);\n parent.removeChild(currentNode);\n }\n\n clearControlBoundaryDomUpdateState(controlState);\n return true;\n };\n\n // Check if newChildren has mixed content (both text/primitives and elements)\n const hasText = newChildren.some(\n (c) => typeof c === 'string' || typeof c === 'number'\n );\n const hasElements = newChildren.some((c) => _isDOMElement(c));\n const hasEmptyChildren = newChildren.some(isEmptyChild);\n const hasComponentChildren = newChildren.some(\n (c) => _isDOMElement(c) && typeof (c as DOMElement).type === 'function'\n );\n const hasNonElementDomChildren =\n parent.childNodes.length !== parent.children.length;\n\n // Fast path: same-count, pure-element update (the common large-list re-render).\n // Iterate parent.children by index directly to avoid the Array.from snapshot\n // allocation for large lists. replaceChild(x, child[i]) replaces in-place so\n // subsequent indices in the live HTMLCollection do NOT shift — safe to use.\n if (\n !hasEmptyChildren &&\n !hasText &&\n !hasComponentChildren &&\n !hasNonElementDomChildren &&\n hasElements &&\n parent.children.length === newChildren.length\n ) {\n const c = parent.children;\n for (let i = 0; i < newChildren.length; i++) {\n const next = newChildren[i];\n const current = c[i];\n if (!current || next === undefined) continue;\n if (_isDOMElement(next) && typeof next.type === 'string') {\n if (tagsEqualIgnoreCase(current.tagName, next.type)) {\n updateElementFromVnode(current, next, true, forceUpdate);\n } else {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n } else if (_isDOMElement(next)) {\n if (trySyncControlBoundaryChild(parent, current, next)) {\n continue;\n }\n\n const synced = trySyncComponentChild(current, next);\n if (synced && synced !== current) {\n teardownNodeSubtree(current);\n } else if (!synced) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n } else {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n }\n return;\n }\n\n const existing = Array.from(parent.children);\n\n // Use childNodes whenever non-element DOM can participate in the sequence.\n // Component children can render text, comments, fragments, or elements, so\n // parent.children is not a safe positional view for those updates.\n if (\n hasText ||\n hasComponentChildren ||\n hasEmptyChildren ||\n hasNonElementDomChildren\n ) {\n const allNodes = Array.from(parent.childNodes);\n const max = Math.max(allNodes.length, newChildren.length);\n\n for (let i = 0; i < max; i++) {\n const currentNode = allNodes[i];\n const next = newChildren[i];\n const nextIsEmpty = isEmptyChild(next);\n\n // Remove extra existing nodes\n if (nextIsEmpty && currentNode) {\n teardownNodeSubtree(currentNode);\n currentNode.remove();\n continue;\n }\n\n // Append new children beyond existing length\n if (!currentNode && !nextIsEmpty) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) parent.appendChild(dom);\n continue;\n }\n\n if (!currentNode || nextIsEmpty) continue;\n\n // Update existing node based on next vnode/primitive\n if (typeof next === 'string' || typeof next === 'number') {\n // New child is text\n if (currentNode.nodeType === 3) {\n // Existing is text node - update it\n (currentNode as Text).data = String(next);\n } else {\n // Existing is element - replace with text node\n const textNode = document.createTextNode(String(next));\n parent.replaceChild(textNode, currentNode);\n }\n } else if (_isDOMElement(next)) {\n // New child is element\n if (currentNode.nodeType === 1) {\n // Existing is element\n const currentEl = currentNode as Element;\n if (typeof next.type === 'string') {\n if (tagsEqualIgnoreCase(currentEl.tagName, next.type)) {\n // Same type - update in place\n updateElementFromVnode(currentEl, next, true, forceUpdate);\n } else {\n // Different type - replace\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(currentEl);\n parent.replaceChild(dom, currentNode);\n }\n }\n } else {\n if (trySyncControlBoundaryChild(parent, currentNode, next)) {\n continue;\n }\n\n const synced = trySyncComponentChild(currentEl, next);\n if (synced && synced !== currentNode) {\n teardownNodeSubtree(currentEl);\n } else if (!synced) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(currentEl);\n parent.replaceChild(dom, currentNode);\n }\n }\n }\n } else {\n // Existing is text node - replace with element\n const dom = createDOMNode(next, parentNamespace);\n if (dom) parent.replaceChild(dom, currentNode);\n }\n }\n }\n return;\n }\n\n // Special case: if we have a single text/number child and the parent has a single text node,\n // update the text node in place to preserve identity\n if (\n newChildren.length === 1 &&\n existing.length === 0 &&\n parent.childNodes.length === 1\n ) {\n const firstNewChild = newChildren[0];\n const firstExisting = parent.firstChild;\n if (\n (typeof firstNewChild === 'string' ||\n typeof firstNewChild === 'number') &&\n firstExisting?.nodeType === 3 // Text node\n ) {\n (firstExisting as Text).data = String(firstNewChild);\n return;\n }\n }\n\n // If there are only text nodes (no element children), clear before updating\n if (existing.length === 0 && parent.childNodes.length > 0) {\n // Clean up all children before clearing\n for (let n = parent.firstChild; n; ) {\n const next = n.nextSibling;\n teardownNodeSubtree(n);\n n = next;\n }\n parent.textContent = '';\n }\n const max = Math.max(existing.length, newChildren.length);\n\n for (let i = 0; i < max; i++) {\n const current = existing[i];\n const next = newChildren[i];\n const nextIsEmpty = isEmptyChild(next);\n\n // Remove extra existing children\n if (nextIsEmpty && current) {\n // Clean up any component instance mounted on this node\n teardownNodeSubtree(current);\n current.remove();\n continue;\n }\n\n // Append new children beyond existing length\n if (!current && !nextIsEmpty) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) parent.appendChild(dom);\n continue;\n }\n\n if (!current || nextIsEmpty) continue;\n\n // Update existing element based on next vnode/primitive\n if (typeof next === 'string' || typeof next === 'number') {\n const textNode = document.createTextNode(String(next));\n teardownNodeSubtree(current);\n parent.replaceChild(textNode, current);\n } else if (_isDOMElement(next)) {\n if (typeof next.type === 'string') {\n // If element type matches, update in place; otherwise replace\n if (tagsEqualIgnoreCase(current.tagName, next.type)) {\n updateElementFromVnode(current, next, true, forceUpdate);\n } else {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n } else {\n const synced = trySyncComponentChild(current, next);\n if (synced && synced !== current) {\n teardownNodeSubtree(current);\n } else if (!synced) {\n const dom = createDOMNode(next, parentNamespace);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n }\n } else {\n // Fallback for other types: replace\n const dom = createDOMNode(next);\n if (dom) {\n teardownNodeSubtree(current);\n parent.replaceChild(dom, current);\n }\n }\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askrjs/askr",
3
- "version": "0.0.45",
3
+ "version": "0.0.46",
4
4
  "description": "Actor-backed deterministic UI framework",
5
5
  "keywords": [
6
6
  "askr",