@llui/dom 0.0.27 → 0.0.29

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.
@@ -1 +1 @@
1
- {"version":3,"file":"each.js","sourceRoot":"","sources":["../../src/primitives/each.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EachOptions, ItemAccessor, Lifetime } from '../types.js'\nimport {\n getRenderContext,\n setRenderContext,\n clearRenderContext,\n type RenderContext,\n} from '../render-context.js'\nimport {\n createLifetime,\n disposeLifetime,\n disposeLifetimesBulk,\n addDisposer,\n removeOrphanedChildren,\n} from '../lifetime.js'\nimport { getFlatBindings, setFlatBindings } from '../binding.js'\nimport { FULL_MASK } from '../update-loop.js'\nimport type { StructuralBlock } from '../structural.js'\nimport { createView } from '../view-helpers.js'\n\n// Clear callbacks — registered by selector.bind() during render, called by reconcileClear().\n// Eliminates per-row disposers (1000 Set.delete calls → 1 registry.clear() call).\nlet activeClearCallbacks: Array<() => void> | null = null\nlet activeRemoveCallbacks: Array<(key: string | number) => void> | null = null\n\n/** Register a callback to run when the current each() block clears. */\nexport function registerOnClear(cb: () => void): void {\n if (activeClearCallbacks) activeClearCallbacks.push(cb)\n}\n\n/** Register a callback to run when a single row is removed by key. */\nexport function registerOnRemove(cb: (key: string | number) => void): void {\n if (activeRemoveCallbacks) activeRemoveCallbacks.push(cb)\n}\n\n// Reusable render context for buildEntry — avoids object allocation per entry.\n// All fields except `rootLifetime`, `state`, `allBindings`, `structuralBlocks`, `dom`\n// are copied from the surrounding render context per reconcile call, so the\n// initial shape's null/empty values are never observed in practice.\nconst buildCtx: RenderContext = {\n rootLifetime: null as unknown as Lifetime,\n state: null,\n allBindings: [],\n structuralBlocks: [],\n dom: null as unknown as import('../dom-env.js').DomEnv,\n}\n\n// Reusable render bag — mutated per entry instead of allocating new objects\nconst buildBag: Record<string, unknown> = {\n send: null,\n get item() {\n return (buildBag._getItemProxy as () => unknown)()\n },\n acc: null,\n index: null,\n _getItemProxy: null,\n}\n\ninterface Entry<T> {\n key: string | number\n item: T\n current: T\n index: number\n scope: Lifetime\n nodes: Node[]\n /** Per-item updaters — stored on entry directly to avoid scope overhead for leaf rows */\n updaters: Array<() => void>\n}\n\nexport function each<S, T, M = unknown>(opts: EachOptions<S, T, M>): Node[] {\n const ctx = getRenderContext('each')\n const parentLifetime = ctx.rootLifetime\n const blocks = ctx.structuralBlocks\n\n const anchor = ctx.dom.createComment('each')\n const entries: Entry<T>[] = []\n const clearCallbacks: Array<() => void> = []\n const removeCallbacks: Array<(key: string | number) => void> = []\n // Entries whose leave animation is still in progress. Their DOM nodes\n // remain in the parent until the leave Promise resolves.\n const leaving: Entry<T>[] = []\n\n const initialItems = opts.items(ctx.state as S)\n let lastItemsRef = initialItems\n\n // Dev-only diff tracking: if the owning component has an _eachDiffLog\n // (installed by devtools), we capture key sets before/after each\n // key-mutating reconcile call and emit an EachDiff entry. The siteId\n // is derived from this each() block's position in the flat block\n // array at registration time — stable for the lifetime of the block.\n const inst = ctx.instance\n const eachSiteId = inst?._eachDiffLog !== undefined ? `each#${blocks.length}` : ''\n const snapshotKeys = (): string[] | null => {\n if (inst?._eachDiffLog === undefined) return null\n const keys: string[] = []\n for (let i = 0; i < entries.length; i++) keys.push(String(entries[i]!.key))\n return keys\n }\n const emitDiff = (oldKeys: string[] | null): void => {\n if (oldKeys === null || inst?._eachDiffLog === undefined) return\n const newKeys: string[] = []\n for (let i = 0; i < entries.length; i++) newKeys.push(String(entries[i]!.key))\n const oldKeySet = new Set(oldKeys)\n const newKeySet = new Set(newKeys)\n const added: string[] = []\n const removed: string[] = []\n const moved: Array<{ key: string; from: number; to: number }> = []\n const reused: string[] = []\n for (const k of newKeys) if (!oldKeySet.has(k)) added.push(k)\n for (const k of oldKeys) if (!newKeySet.has(k)) removed.push(k)\n for (let i = 0; i < newKeys.length; i++) {\n const k = newKeys[i]!\n if (!oldKeySet.has(k)) continue\n const from = oldKeys.indexOf(k)\n if (from !== i) moved.push({ key: k, from, to: i })\n else reused.push(k)\n }\n inst._eachDiffLog.push({\n updateIndex: inst._updateCounter ?? 0,\n eachSiteId,\n added,\n removed,\n moved,\n reused,\n })\n }\n\n const block: StructuralBlock = {\n mask: (opts as { __mask?: number }).__mask ?? FULL_MASK,\n reconcile(state: unknown) {\n const parent = anchor.parentNode\n if (!parent) return\n\n const newItems = opts.items(state as S)\n\n // Fast path: same array reference → skip entirely.\n if (newItems === lastItemsRef) return\n lastItemsRef = newItems\n\n const oldKeys = snapshotKeys()\n const report = opts.onTransition ? { entering: [] as Node[], leaving: [] as Node[] } : null\n reconcileEntries(\n entries,\n newItems,\n opts,\n parentLifetime,\n parent,\n anchor,\n ctx,\n state,\n leaving,\n report,\n )\n if (opts.onTransition && report) {\n opts.onTransition({ entering: report.entering, leaving: report.leaving, parent })\n }\n emitDiff(oldKeys)\n },\n\n /** Same keys, only item data changed — skip mismatch/swap detection.\n * Compiler calls this when it knows the array structure is unchanged. */\n reconcileItems(state: unknown) {\n const newItems = opts.items(state as S)\n lastItemsRef = newItems\n const len = Math.min(entries.length, newItems.length)\n for (let i = 0; i < len; i++) {\n const entry = entries[i]!\n const newItem = newItems[i]!\n if (entry.item !== newItem) {\n updateEntry(entry, newItem, i)\n }\n }\n },\n\n /** Remove all items — skip items accessor, go straight to clear path. */\n reconcileClear() {\n lastItemsRef = [] as unknown as T[]\n const parent = anchor.parentNode\n if (!parent) return\n if (entries.length === 0) return\n\n const oldKeys = snapshotKeys()\n\n // Call registered clear callbacks (e.g., selector registry.clear())\n // BEFORE scope disposal — avoids 1000 individual Set.delete calls\n for (let i = 0; i < clearCallbacks.length; i++) clearCallbacks[i]!()\n\n // Bulk DOM removal\n const range = ctx.dom.createRange()\n range.setStartAfter(anchor)\n const lastEntry = entries[entries.length - 1]!\n const lastNode = lastEntry.nodes[lastEntry.nodes.length - 1]!\n range.setEndAfter(lastNode)\n range.deleteContents()\n\n // Bulk scope disposal — disposers that were replaced by clearCallbacks\n // are now no-ops, making this much faster\n const scopes: Lifetime[] = []\n for (let i = 0; i < entries.length; i++) {\n const s = entries[i]!.scope\n s.disposalCause = 'each-remove'\n scopes.push(s)\n }\n disposeLifetimesBulk(scopes)\n removeOrphanedChildren(parentLifetime)\n entries.length = 0\n\n emitDiff(oldKeys)\n },\n\n /** Remove entries not present in the new items. Optimized for filter()\n * patterns where items are removed but order is preserved. Walks old\n * and new arrays in parallel — O(n) with no Map/Set allocation. */\n reconcileRemove(state: unknown) {\n const newItems = opts.items(state as S)\n lastItemsRef = newItems\n const parent = anchor.parentNode\n if (!parent) return\n\n const oldKeys = snapshotKeys()\n const oldLen = entries.length\n const newLen = newItems.length\n if (newLen >= oldLen) {\n // Not a removal — fallback (shouldn't happen if compiler detected correctly)\n reconcileEntries(\n entries,\n newItems,\n opts,\n parentLifetime,\n parent,\n anchor,\n ctx,\n state,\n leaving,\n null,\n )\n emitDiff(oldKeys)\n return\n }\n\n // Parallel walk: new items are a subsequence of old items (same order, some removed)\n let ni = 0\n let didRemove = false\n for (let oi = 0; oi < oldLen; oi++) {\n const entry = entries[oi]!\n if (ni < newLen && entry.key === opts.key(newItems[ni]!)) {\n // Entry survives — update if item ref changed\n if (entry.item !== newItems[ni]) {\n updateEntry(entry, newItems[ni]!, ni)\n }\n ni++\n } else {\n // Entry removed — notify selectors before scope disposal\n for (let ci = 0; ci < removeCallbacks.length; ci++) removeCallbacks[ci]!(entry.key)\n for (const node of entry.nodes) parent.removeChild(node)\n entry.scope.disposalCause = 'each-remove'\n disposeLifetime(entry.scope, true)\n entries[oi] = null!\n didRemove = true\n }\n }\n\n // Compact entries array\n if (didRemove) {\n let w = 0\n for (let r = 0; r < oldLen; r++) {\n if (entries[r]) entries[w++] = entries[r]!\n }\n entries.length = w\n removeOrphanedChildren(parentLifetime)\n }\n\n // Update indices for remaining entries\n for (let i = 0; i < entries.length; i++) {\n entries[i]!.index = i\n }\n\n emitDiff(oldKeys)\n },\n\n /** Update only entries at stride intervals — O(k) where k = n/stride.\n * The compiler passes the stride from the detected for-loop pattern. */\n reconcileChanged(state: unknown, stride: number) {\n const newItems = opts.items(state as S)\n lastItemsRef = newItems\n for (let i = 0; i < entries.length && i < newItems.length; i += stride) {\n const entry = entries[i]!\n const newItem = newItems[i]!\n if (entry.item !== newItem) {\n updateEntry(entry, newItem, i)\n }\n }\n },\n }\n\n // Register the block BEFORE building initial row entries so that this\n // each() block precedes any nested structural blocks its rows register.\n // Parents must come first in the flat blocks array — see branch.ts for\n // the full rationale (Phase 1 iteration safety when disposing nested).\n blocks.push(block)\n\n activeClearCallbacks = clearCallbacks\n activeRemoveCallbacks = removeCallbacks\n for (let i = 0; i < initialItems.length; i++) {\n const item = initialItems[i]!\n const entry = buildEntry(item, i, opts, parentLifetime, ctx)\n entries.push(entry)\n }\n activeClearCallbacks = null\n activeRemoveCallbacks = null\n\n // Fire initial enter for mount-time items\n if (opts.enter) {\n for (const entry of entries) {\n if (entry.nodes.length > 0) opts.enter(entry.nodes)\n }\n }\n\n addDisposer(parentLifetime, () => {\n const idx = blocks.indexOf(block)\n if (idx !== -1) blocks.splice(idx, 1)\n // parentLifetime is being disposed — its children array is about to be\n // cleared by the recursive dispose pass, so skip per-entry parent\n // removal (avoids O(N²) indexOf+splice).\n for (const entry of entries) {\n disposeLifetime(entry.scope, true)\n }\n entries.length = 0\n // Force-remove any mid-leave entries immediately\n for (const entry of leaving) {\n for (const node of entry.nodes) {\n if (node.parentNode) node.parentNode.removeChild(node)\n }\n disposeLifetime(entry.scope, true)\n }\n leaving.length = 0\n })\n\n const result: Node[] = [anchor]\n for (const entry of entries) {\n const nodes = entry.nodes\n for (let i = 0; i < nodes.length; i++) result.push(nodes[i]!)\n }\n return result\n}\n\n/**\n * Remove an entry's DOM + dispose its scope, running opts.leave first if\n * provided. When leave returns a Promise, the DOM removal is deferred until\n * resolution (entry is tracked in `leaving`).\n */\nfunction removeEntry<T>(\n entry: Entry<T>,\n opts: { leave?: (nodes: Node[]) => void | Promise<void> },\n leaving: Entry<T>[],\n): void {\n const removeNow = (): void => {\n for (const node of entry.nodes) {\n if (node.parentNode) node.parentNode.removeChild(node)\n }\n entry.scope.disposalCause = 'each-remove'\n disposeLifetime(entry.scope)\n const idx = leaving.indexOf(entry)\n if (idx !== -1) leaving.splice(idx, 1)\n }\n if (opts.leave && entry.nodes.length > 0) {\n const result = opts.leave(entry.nodes)\n if (result && typeof (result as Promise<void>).then === 'function') {\n leaving.push(entry)\n ;(result as Promise<void>).then(removeNow)\n return\n }\n }\n removeNow()\n}\n\nfunction fireEnter<T>(\n entry: Entry<T>,\n opts: { enter?: (nodes: Node[]) => void | Promise<void> },\n): void {\n if (opts.enter && entry.nodes.length > 0) {\n void opts.enter(entry.nodes)\n }\n}\n\nfunction buildEntry<S, T, M>(\n item: T,\n index: number,\n opts: EachOptions<S, T, M>,\n parentLifetime: Lifetime,\n ctx: ReturnType<typeof getRenderContext>,\n state?: unknown,\n): Entry<T> {\n const key = opts.key(item)\n // Use a lightweight scope — just needs itemUpdaters for per-item bindings.\n // Full scope features (disposers, bindings, children) are only needed when\n // the render callback uses structural primitives or selector.bind().\n const scope = createLifetime(parentLifetime)\n scope._kind = 'each'\n const currentState = (state ?? ctx.state) as S\n const send = ctx.send as (msg: M) => void\n\n // Create entry before render so itemAccessor closures can capture it\n const entry: Entry<T> = { key, item, current: item, index, scope, nodes: null!, updaters: [] }\n\n // Base callable: item(selector) for computed expressions\n const itemFn = <R>(selector: (t: T) => R): (() => R) => {\n const accessor = () => selector(entry.current)\n accessor.__perItem = true as const\n return accessor\n }\n\n // Proxy for item.field shorthand: LAZILY created. Compiled code uses\n // `acc(fn)` instead (the compiler rewrites item.x → acc(r => r.x)),\n // so the Proxy is never constructed in the common case. This saves\n // ~300ns × N Proxy allocations per create cycle.\n let itemProxy: ItemAccessor<T> | null = null\n const getItemProxy = (): ItemAccessor<T> => {\n if (itemProxy) return itemProxy\n let fieldCache: Map<string, () => unknown> | null = null\n itemProxy = new Proxy(itemFn as object, {\n get(target, prop) {\n if (typeof prop === 'symbol' || prop === 'then' || prop === 'prototype') {\n return Reflect.get(target, prop)\n }\n const key = prop as string\n if (fieldCache) {\n const cached = fieldCache.get(key)\n if (cached) return cached\n } else {\n fieldCache = new Map()\n }\n // `current` returns the whole item — essential for primitive T\n // (where the field map is useless) and for whole-record sampling.\n // Caller must call it like a method: `item.current()`.\n const accessor =\n key === 'current'\n ? () => entry.current\n : () => (entry.current as Record<string, unknown>)[key]\n ;(accessor as unknown as { __perItem: true }).__perItem = true\n fieldCache.set(key, accessor)\n return accessor\n },\n }) as ItemAccessor<T>\n return itemProxy\n }\n\n const indexAccessor = (): number => entry.index\n\n // Reuse a single context object to avoid allocation per entry\n buildCtx.rootLifetime = scope\n buildCtx.state = currentState\n buildCtx.allBindings = ctx.allBindings\n buildCtx.structuralBlocks = ctx.structuralBlocks\n buildCtx.dom = ctx.dom\n buildCtx.instance = ctx.instance\n const prevFlatBindings = getFlatBindings()\n setFlatBindings(ctx.allBindings)\n setRenderContext(buildCtx)\n\n // Reuse a single render bag object across entries — mutate `acc` and\n // `index` per entry to avoid per-entry object allocation.\n buildBag.send = send\n buildBag.acc = itemFn\n buildBag.index = indexAccessor\n buildBag._getItemProxy = getItemProxy\n buildBag.entry = entry\n // The View bag — lets each.render use `h.text`, `h.scope`, `h.sample`,\n // etc. without reaching for the top-level imports. Each entry gets a\n // fresh View so its `send` is bound to this row's dispatch path.\n buildBag.h = createView<S, M>(send)\n // Row factory: pass compiler-injected template + update function through to render\n const rfOpts = opts as unknown as Record<string, unknown>\n if (rfOpts.__tpl) buildBag.__tpl = rfOpts.__tpl\n if (rfOpts.__rowUpd) buildBag.__rowUpd = rfOpts.__rowUpd\n entry.nodes = opts.render(buildBag as Parameters<typeof opts.render>[0])\n\n // Move itemUpdaters from scope to entry for direct access during updateEntry.\n // This avoids scope.itemUpdaters lookup overhead on every item update.\n if (scope.itemUpdaters.length > 0) {\n entry.updaters = scope.itemUpdaters\n scope.itemUpdaters = []\n }\n\n clearRenderContext()\n setFlatBindings(prevFlatBindings)\n setRenderContext(ctx)\n\n return entry\n}\n\ninterface TransitionReport {\n entering: Node[]\n leaving: Node[]\n}\n\nfunction collectNodes(target: Node[], nodes: Node[]): void {\n for (const n of nodes) target.push(n)\n}\n\nfunction reconcileEntries<S, T>(\n entries: Entry<T>[],\n newItems: T[],\n opts: EachOptions<S, T>,\n parentLifetime: Lifetime,\n parent: Node,\n anchor: Node,\n ctx: ReturnType<typeof getRenderContext>,\n state: unknown,\n leaving: Entry<T>[],\n report: TransitionReport | null,\n): void {\n const oldLen = entries.length\n const newLen = newItems.length\n const hasLeave = !!opts.leave\n\n // Fast path 1: clear all — bulk DOM removal.\n // When opts.leave is set, each item needs its own leave animation, so\n // fall through to per-item removal instead of Range.deleteContents().\n if (newLen === 0) {\n if (report) {\n for (const entry of entries) collectNodes(report.leaving, entry.nodes)\n }\n if (hasLeave) {\n const toRemove = entries.slice()\n entries.length = 0\n for (const entry of toRemove) removeEntry(entry, opts, leaving)\n return\n }\n // Remove all DOM nodes in one operation using Range\n if (entries.length > 0) {\n const range = ctx.dom.createRange()\n range.setStartAfter(anchor)\n const lastEntry = entries[entries.length - 1]!\n const lastNode = lastEntry.nodes[lastEntry.nodes.length - 1]!\n range.setEndAfter(lastNode)\n range.deleteContents()\n }\n // Bulk dispose all entry scopes — avoids per-scope function call overhead\n const scopes: Lifetime[] = []\n for (let i = 0; i < entries.length; i++) {\n const s = entries[i]!.scope\n s.disposalCause = 'each-remove'\n scopes.push(s)\n }\n disposeLifetimesBulk(scopes)\n removeOrphanedChildren(parentLifetime)\n entries.length = 0\n return\n }\n\n // Fast path 2: append-only — old keys are a prefix of new keys\n if (newLen > oldLen && isAppendOnly(entries, newItems, opts)) {\n for (let i = 0; i < oldLen; i++) {\n updateEntry(entries[i]!, newItems[i]!, i)\n }\n // Find insertion point: after last existing entry's last node, or after anchor\n const lastEntry = oldLen > 0 ? entries[oldLen - 1]! : null\n const ref = lastEntry\n ? lastEntry.nodes[lastEntry.nodes.length - 1]!.nextSibling\n : anchor.nextSibling\n const frag = ctx.dom.createDocumentFragment()\n const newlyAdded: Entry<T>[] = []\n for (let i = oldLen; i < newLen; i++) {\n const entry = buildEntry(newItems[i]!, i, opts, parentLifetime, ctx, state)\n entries.push(entry)\n newlyAdded.push(entry)\n for (const node of entry.nodes) frag.appendChild(node)\n }\n parent.insertBefore(frag, ref)\n if (report) {\n for (const entry of newlyAdded) collectNodes(report.entering, entry.nodes)\n }\n for (const entry of newlyAdded) fireEnter(entry, opts)\n return\n }\n\n // Fast path 3: same length — single pass handles both same-keys update\n // and two-element swap detection. Avoids a second O(n) pass.\n if (newLen === oldLen) {\n let mismatch1 = -1\n let mismatch2 = -1\n let mismatchCount = 0\n\n for (let i = 0; i < newLen; i++) {\n const entry = entries[i]!\n const newItem = newItems[i]!\n if (entry.item === newItem) continue\n const newKey = opts.key(newItem)\n if (entry.key === newKey) {\n updateEntry(entry, newItem, i)\n continue\n }\n // Key mismatch — track for swap detection\n mismatchCount++\n if (mismatchCount === 1) mismatch1 = i\n else if (mismatchCount === 2) mismatch2 = i\n else break // 3+ mismatches → fall through to general path\n }\n\n // All keys matched (with possible item updates) → done\n if (mismatchCount === 0) return\n\n // Exactly 2 key mismatches — check if it's a swap\n if (mismatchCount === 2) {\n const e1 = entries[mismatch1]!\n const e2 = entries[mismatch2]!\n if (e1.key === opts.key(newItems[mismatch2]!) && e2.key === opts.key(newItems[mismatch1]!)) {\n // DOM swap\n const refI = e1.nodes[0]!\n const refAfterJ = e2.nodes[e2.nodes.length - 1]!.nextSibling\n for (const node of e2.nodes) parent.insertBefore(node, refI)\n for (const node of e1.nodes) parent.insertBefore(node, refAfterJ)\n entries[mismatch1] = e2\n entries[mismatch2] = e1\n updateEntry(e2, newItems[mismatch1]!, mismatch1)\n updateEntry(e1, newItems[mismatch2]!, mismatch2)\n return\n }\n }\n // Fall through to general path for 3+ mismatches or non-swap\n }\n\n // Fast path 5: full replace — no shared keys between old and new.\n // Skipped when opts.leave is set so departing items can animate individually.\n if (!hasLeave && oldLen > 0 && opts.key(newItems[0]!) !== entries[0]!.key) {\n const oldKeys = new Set<string | number>()\n for (const entry of entries) oldKeys.add(entry.key)\n let anyShared = false\n for (let i = 0; i < newLen; i++) {\n if (oldKeys.has(opts.key(newItems[i]!))) {\n anyShared = true\n break\n }\n }\n if (!anyShared) {\n if (report) {\n for (const entry of entries) collectNodes(report.leaving, entry.nodes)\n }\n // Bulk DOM removal using Range\n const range = ctx.dom.createRange()\n range.setStartAfter(anchor)\n const lastEntry = entries[entries.length - 1]!\n range.setEndAfter(lastEntry.nodes[lastEntry.nodes.length - 1]!)\n range.deleteContents()\n // Bulk dispose all old scopes\n const oldLifetimes: Lifetime[] = []\n for (let i = 0; i < entries.length; i++) {\n const s = entries[i]!.scope\n s.disposalCause = 'each-remove'\n oldLifetimes.push(s)\n }\n disposeLifetimesBulk(oldLifetimes)\n removeOrphanedChildren(parentLifetime)\n entries.length = 0\n // Build all new entries into a fragment\n const frag = ctx.dom.createDocumentFragment()\n const newlyAdded: Entry<T>[] = []\n for (let i = 0; i < newLen; i++) {\n const entry = buildEntry(newItems[i]!, i, opts, parentLifetime, ctx, state)\n entries.push(entry)\n newlyAdded.push(entry)\n for (const node of entry.nodes) frag.appendChild(node)\n }\n parent.insertBefore(frag, anchor.nextSibling)\n if (report) {\n for (const entry of newlyAdded) collectNodes(report.entering, entry.nodes)\n }\n for (const entry of newlyAdded) fireEnter(entry, opts)\n return\n }\n }\n\n // General path: keyed reconciliation\n const oldByKey = new Map<string | number, Entry<T>>()\n for (const entry of entries) {\n oldByKey.set(entry.key, entry)\n }\n\n const newEntries: Entry<T>[] = []\n const usedKeys = new Set<string | number>()\n const newlyAdded: Entry<T>[] = []\n\n for (let i = 0; i < newLen; i++) {\n const item = newItems[i]!\n const key = opts.key(item)\n usedKeys.add(key)\n\n const existing = oldByKey.get(key)\n if (existing) {\n updateEntry(existing, item, i)\n newEntries.push(existing)\n } else {\n const entry = buildEntry(item, i, opts, parentLifetime, ctx, state)\n newEntries.push(entry)\n newlyAdded.push(entry)\n }\n }\n\n // Remove entries not in the new list. Use bulk-detach pattern so\n // disposing K removals costs O(K+P) rather than O(K*P) where P is\n // parentLifetime.children.length (avoids K * indexOf+splice).\n let didBulkDetach = false\n for (const entry of entries) {\n if (!usedKeys.has(entry.key)) {\n if (report) collectNodes(report.leaving, entry.nodes)\n if (hasLeave) {\n removeEntry(entry, opts, leaving)\n } else {\n for (const node of entry.nodes) parent.removeChild(node)\n entry.scope.disposalCause = 'each-remove'\n disposeLifetime(entry.scope, true)\n didBulkDetach = true\n }\n }\n }\n if (didBulkDetach) removeOrphanedChildren(parentLifetime)\n\n // Reorder DOM\n const hasSurvivors = newEntries.some((e) => oldByKey.has(e.key))\n\n if (!hasSurvivors || !survivorsInOrder(entries, newEntries, usedKeys)) {\n // Full fragment rebuild — one reflow\n const frag = ctx.dom.createDocumentFragment()\n for (const entry of newEntries) {\n for (const node of entry.nodes) frag.appendChild(node)\n }\n parent.insertBefore(frag, anchor.nextSibling)\n } else {\n // Survivors in order — batch-insert new entries between survivors\n let frag: DocumentFragment | null = null\n let insertRef: ChildNode | null = anchor.nextSibling\n for (const entry of newEntries) {\n if (oldByKey.has(entry.key)) {\n // Flush any pending fragment before this survivor\n if (frag) {\n parent.insertBefore(frag, insertRef)\n frag = null\n }\n // Skip past survivor's nodes\n const lastNode = entry.nodes[entry.nodes.length - 1]\n insertRef = lastNode ? lastNode.nextSibling : insertRef\n } else {\n // Batch new entries into a fragment\n if (!frag) frag = ctx.dom.createDocumentFragment()\n for (const node of entry.nodes) frag.appendChild(node)\n }\n }\n if (frag) parent.insertBefore(frag, insertRef)\n }\n\n entries.length = newEntries.length\n for (let i = 0; i < newEntries.length; i++) entries[i] = newEntries[i]!\n\n if (report) {\n for (const entry of newlyAdded) collectNodes(report.entering, entry.nodes)\n }\n\n // Fire enter for newly-added entries (after DOM insertion)\n if (opts.enter) {\n for (const entry of newlyAdded) fireEnter(entry, opts)\n }\n}\n\nfunction updateEntry<T>(entry: Entry<T>, item: T, index: number): void {\n const changed = !Object.is(entry.item, item)\n entry.item = item\n entry.current = item\n entry.index = index\n // eachItemStable removed — unused\n // Directly run per-item updaters when item changed — bypasses Phase 2\n if (changed) {\n // Row factory fast path: shared update function, zero closures\n const rowUpd = (entry as unknown as Record<string, unknown>).__rowUpdate as\n | ((e: Entry<T>) => void)\n | undefined\n if (rowUpd) {\n rowUpd(entry)\n } else {\n // Closure-based fallback\n const updaters = entry.updaters.length > 0 ? entry.updaters : entry.scope.itemUpdaters\n for (let i = 0; i < updaters.length; i++) {\n updaters[i]!()\n }\n }\n }\n}\n\nfunction isAppendOnly<S, T>(entries: Entry<T>[], newItems: T[], opts: EachOptions<S, T>): boolean {\n for (let i = 0; i < entries.length; i++) {\n if (entries[i]!.key !== opts.key(newItems[i]!)) return false\n }\n return true\n}\n\nfunction survivorsInOrder<T>(\n oldEntries: Entry<T>[],\n newEntries: Entry<T>[],\n usedKeys: Set<string | number>,\n): boolean {\n // Build old-index map for survivors\n const oldIndexMap = new Map<string | number, number>()\n for (let i = 0; i < oldEntries.length; i++) {\n if (usedKeys.has(oldEntries[i]!.key)) {\n oldIndexMap.set(oldEntries[i]!.key, i)\n }\n }\n // Check that survivors appear in increasing old-index order in newEntries\n let maxOldIndex = -1\n for (const entry of newEntries) {\n const oldIdx = oldIndexMap.get(entry.key)\n if (oldIdx === undefined) continue // new entry, skip\n if (oldIdx < maxOldIndex) return false\n maxOldIndex = oldIdx\n }\n return true\n}\n"]}
1
+ {"version":3,"file":"each.js","sourceRoot":"","sources":["../../src/primitives/each.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EachOptions, ItemAccessor, Lifetime } from '../types.js'\nimport {\n getRenderContext,\n setRenderContext,\n clearRenderContext,\n type RenderContext,\n} from '../render-context.js'\nimport {\n createLifetime,\n disposeLifetime,\n disposeLifetimesBulk,\n addDisposer,\n removeOrphanedChildren,\n} from '../lifetime.js'\nimport { getFlatBindings, setFlatBindings } from '../binding.js'\nimport { FULL_MASK } from '../update-loop.js'\nimport type { StructuralBlock } from '../structural.js'\nimport { createView } from '../view-helpers.js'\n\n// Clear callbacks — registered by selector.bind() during render, called by reconcileClear().\n// Eliminates per-row disposers (1000 Set.delete calls → 1 registry.clear() call).\nlet activeClearCallbacks: Array<() => void> | null = null\nlet activeRemoveCallbacks: Array<(key: string | number) => void> | null = null\n\n/** Register a callback to run when the current each() block clears. */\nexport function registerOnClear(cb: () => void): void {\n if (activeClearCallbacks) activeClearCallbacks.push(cb)\n}\n\n/** Register a callback to run when a single row is removed by key. */\nexport function registerOnRemove(cb: (key: string | number) => void): void {\n if (activeRemoveCallbacks) activeRemoveCallbacks.push(cb)\n}\n\n// Reusable render context for buildEntry — avoids object allocation per entry.\n// All fields except `rootLifetime`, `state`, `allBindings`, `structuralBlocks`, `dom`\n// are copied from the surrounding render context per reconcile call, so the\n// initial shape's null/empty values are never observed in practice.\nconst buildCtx: RenderContext = {\n rootLifetime: null as unknown as Lifetime,\n state: null,\n allBindings: [],\n structuralBlocks: [],\n dom: null as unknown as import('../dom-env.js').DomEnv,\n}\n\n// Reusable render bag — mutated per entry instead of allocating new objects\nconst buildBag: Record<string, unknown> = {\n send: null,\n get item() {\n return (buildBag._getItemProxy as () => unknown)()\n },\n acc: null,\n index: null,\n _getItemProxy: null,\n}\n\ninterface Entry<T> {\n key: string | number\n item: T\n current: T\n index: number\n scope: Lifetime\n nodes: Node[]\n /** Per-item updaters — stored on entry directly to avoid scope overhead for leaf rows */\n updaters: Array<() => void>\n}\n\nexport function each<S, T, M = unknown>(opts: EachOptions<S, T, M>): Node[] {\n const ctx = getRenderContext('each')\n const parentLifetime = ctx.rootLifetime\n const blocks = ctx.structuralBlocks\n\n const anchor = ctx.dom.createComment('each')\n const entries: Entry<T>[] = []\n const clearCallbacks: Array<() => void> = []\n const removeCallbacks: Array<(key: string | number) => void> = []\n // Entries whose leave animation is still in progress. Their DOM nodes\n // remain in the parent until the leave Promise resolves.\n const leaving: Entry<T>[] = []\n\n const initialItems = opts.items(ctx.state as S)\n let lastItemsRef = initialItems\n\n // Dev-only diff tracking: if the owning component has an _eachDiffLog\n // (installed by devtools), we capture key sets before/after each\n // key-mutating reconcile call and emit an EachDiff entry. The siteId\n // is derived from this each() block's position in the flat block\n // array at registration time — stable for the lifetime of the block.\n const inst = ctx.instance\n const eachSiteId = inst?._eachDiffLog !== undefined ? `each#${blocks.length}` : ''\n const snapshotKeys = (): string[] | null => {\n if (inst?._eachDiffLog === undefined) return null\n const keys: string[] = []\n for (let i = 0; i < entries.length; i++) keys.push(String(entries[i]!.key))\n return keys\n }\n const emitDiff = (oldKeys: string[] | null): void => {\n if (oldKeys === null || inst?._eachDiffLog === undefined) return\n const newKeys: string[] = []\n for (let i = 0; i < entries.length; i++) newKeys.push(String(entries[i]!.key))\n const oldKeySet = new Set(oldKeys)\n const newKeySet = new Set(newKeys)\n const added: string[] = []\n const removed: string[] = []\n const moved: Array<{ key: string; from: number; to: number }> = []\n const reused: string[] = []\n for (const k of newKeys) if (!oldKeySet.has(k)) added.push(k)\n for (const k of oldKeys) if (!newKeySet.has(k)) removed.push(k)\n for (let i = 0; i < newKeys.length; i++) {\n const k = newKeys[i]!\n if (!oldKeySet.has(k)) continue\n const from = oldKeys.indexOf(k)\n if (from !== i) moved.push({ key: k, from, to: i })\n else reused.push(k)\n }\n inst._eachDiffLog.push({\n updateIndex: inst._updateCounter ?? 0,\n eachSiteId,\n added,\n removed,\n moved,\n reused,\n })\n }\n\n const block: StructuralBlock = {\n mask: (opts as { __mask?: number }).__mask ?? FULL_MASK,\n reconcile(state: unknown) {\n const parent = anchor.parentNode\n if (!parent) return\n\n const newItems = opts.items(state as S)\n\n // Fast path: same array reference → skip entirely.\n if (newItems === lastItemsRef) return\n lastItemsRef = newItems\n\n const oldKeys = snapshotKeys()\n const report = opts.onTransition ? { entering: [] as Node[], leaving: [] as Node[] } : null\n reconcileEntries(\n entries,\n newItems,\n opts,\n parentLifetime,\n parent,\n anchor,\n ctx,\n state,\n leaving,\n report,\n )\n if (opts.onTransition && report) {\n opts.onTransition({ entering: report.entering, leaving: report.leaving, parent })\n }\n emitDiff(oldKeys)\n },\n\n /** Same keys, only item data changed — skip mismatch/swap detection.\n * Compiler calls this when it knows the array structure is unchanged. */\n reconcileItems(state: unknown) {\n const newItems = opts.items(state as S)\n lastItemsRef = newItems\n const len = Math.min(entries.length, newItems.length)\n for (let i = 0; i < len; i++) {\n const entry = entries[i]!\n const newItem = newItems[i]!\n if (entry.item !== newItem) {\n updateEntry(entry, newItem, i)\n }\n }\n },\n\n /** Remove all items — skip items accessor, go straight to clear path. */\n reconcileClear() {\n lastItemsRef = [] as unknown as T[]\n const parent = anchor.parentNode\n if (!parent) return\n if (entries.length === 0) return\n\n const oldKeys = snapshotKeys()\n\n // Call registered clear callbacks (e.g., selector registry.clear())\n // BEFORE scope disposal — avoids 1000 individual Set.delete calls\n for (let i = 0; i < clearCallbacks.length; i++) clearCallbacks[i]!()\n\n // Bulk DOM removal\n const range = ctx.dom.createRange()\n range.setStartAfter(anchor)\n const lastEntry = entries[entries.length - 1]!\n const lastNode = lastEntry.nodes[lastEntry.nodes.length - 1]!\n range.setEndAfter(lastNode)\n range.deleteContents()\n\n // Bulk scope disposal — disposers that were replaced by clearCallbacks\n // are now no-ops, making this much faster\n const scopes: Lifetime[] = []\n for (let i = 0; i < entries.length; i++) {\n const s = entries[i]!.scope\n s.disposalCause = 'each-remove'\n scopes.push(s)\n }\n disposeLifetimesBulk(scopes)\n removeOrphanedChildren(parentLifetime)\n entries.length = 0\n\n emitDiff(oldKeys)\n },\n\n /** Remove entries not present in the new items. Optimized for filter()\n * patterns where items are removed but order is preserved. Walks old\n * and new arrays in parallel — O(n) with no Map/Set allocation. */\n reconcileRemove(state: unknown) {\n const newItems = opts.items(state as S)\n lastItemsRef = newItems\n const parent = anchor.parentNode\n if (!parent) return\n\n const oldKeys = snapshotKeys()\n const oldLen = entries.length\n const newLen = newItems.length\n if (newLen >= oldLen) {\n // Not a removal — fallback (shouldn't happen if compiler detected correctly)\n reconcileEntries(\n entries,\n newItems,\n opts,\n parentLifetime,\n parent,\n anchor,\n ctx,\n state,\n leaving,\n null,\n )\n emitDiff(oldKeys)\n return\n }\n\n // Parallel walk: new items are a subsequence of old items (same order, some removed)\n let ni = 0\n let didRemove = false\n for (let oi = 0; oi < oldLen; oi++) {\n const entry = entries[oi]!\n if (ni < newLen && entry.key === opts.key(newItems[ni]!)) {\n // Entry survives — update if item ref changed\n if (entry.item !== newItems[ni]) {\n updateEntry(entry, newItems[ni]!, ni)\n }\n ni++\n } else {\n // Entry removed — notify selectors before scope disposal\n for (let ci = 0; ci < removeCallbacks.length; ci++) removeCallbacks[ci]!(entry.key)\n for (const node of entry.nodes) parent.removeChild(node)\n entry.scope.disposalCause = 'each-remove'\n disposeLifetime(entry.scope, true)\n entries[oi] = null!\n didRemove = true\n }\n }\n\n // Compact entries array\n if (didRemove) {\n let w = 0\n for (let r = 0; r < oldLen; r++) {\n if (entries[r]) entries[w++] = entries[r]!\n }\n entries.length = w\n removeOrphanedChildren(parentLifetime)\n }\n\n // Update indices for remaining entries\n for (let i = 0; i < entries.length; i++) {\n entries[i]!.index = i\n }\n\n emitDiff(oldKeys)\n },\n\n /** Update only entries at stride intervals — O(k) where k = n/stride.\n * The compiler passes the stride from the detected for-loop pattern. */\n reconcileChanged(state: unknown, stride: number) {\n const newItems = opts.items(state as S)\n lastItemsRef = newItems\n for (let i = 0; i < entries.length && i < newItems.length; i += stride) {\n const entry = entries[i]!\n const newItem = newItems[i]!\n if (entry.item !== newItem) {\n updateEntry(entry, newItem, i)\n }\n }\n },\n }\n\n // Register the block BEFORE building initial row entries so that this\n // each() block precedes any nested structural blocks its rows register.\n // Parents must come first in the flat blocks array — see branch.ts for\n // the full rationale (Phase 1 iteration safety when disposing nested).\n blocks.push(block)\n\n activeClearCallbacks = clearCallbacks\n activeRemoveCallbacks = removeCallbacks\n for (let i = 0; i < initialItems.length; i++) {\n const item = initialItems[i]!\n const entry = buildEntry(item, i, opts, parentLifetime, ctx)\n entries.push(entry)\n }\n activeClearCallbacks = null\n activeRemoveCallbacks = null\n\n // Fire initial enter for mount-time items\n if (opts.enter) {\n for (const entry of entries) {\n if (entry.nodes.length > 0) opts.enter(entry.nodes)\n }\n }\n\n addDisposer(parentLifetime, () => {\n const idx = blocks.indexOf(block)\n if (idx !== -1) blocks.splice(idx, 1)\n // parentLifetime is being disposed — its children array is about to be\n // cleared by the recursive dispose pass, so skip per-entry parent\n // removal (avoids O(N²) indexOf+splice).\n //\n // Rows created AFTER the parent's initial render (each reconciled\n // with a new item list) are siblings of the anchor inside the\n // parent's DOM container, but aren't tracked by the parent's\n // snapshot (e.g. an outer branch's currentNodes). Walking entries\n // here and removing their DOM — guarded by parentNode — closes\n // the leak: cascade-removed subtrees no-op, live-parent cases get\n // the orphans cleaned up.\n for (const entry of entries) {\n for (const node of entry.nodes) {\n if (node.parentNode) node.parentNode.removeChild(node)\n }\n disposeLifetime(entry.scope, true)\n }\n entries.length = 0\n if (anchor.parentNode) anchor.parentNode.removeChild(anchor)\n // Force-remove any mid-leave entries immediately\n for (const entry of leaving) {\n for (const node of entry.nodes) {\n if (node.parentNode) node.parentNode.removeChild(node)\n }\n disposeLifetime(entry.scope, true)\n }\n leaving.length = 0\n })\n\n const result: Node[] = [anchor]\n for (const entry of entries) {\n const nodes = entry.nodes\n for (let i = 0; i < nodes.length; i++) result.push(nodes[i]!)\n }\n return result\n}\n\n/**\n * Remove an entry's DOM + dispose its scope, running opts.leave first if\n * provided. When leave returns a Promise, the DOM removal is deferred until\n * resolution (entry is tracked in `leaving`).\n */\nfunction removeEntry<T>(\n entry: Entry<T>,\n opts: { leave?: (nodes: Node[]) => void | Promise<void> },\n leaving: Entry<T>[],\n): void {\n const removeNow = (): void => {\n for (const node of entry.nodes) {\n if (node.parentNode) node.parentNode.removeChild(node)\n }\n entry.scope.disposalCause = 'each-remove'\n disposeLifetime(entry.scope)\n const idx = leaving.indexOf(entry)\n if (idx !== -1) leaving.splice(idx, 1)\n }\n if (opts.leave && entry.nodes.length > 0) {\n const result = opts.leave(entry.nodes)\n if (result && typeof (result as Promise<void>).then === 'function') {\n leaving.push(entry)\n ;(result as Promise<void>).then(removeNow)\n return\n }\n }\n removeNow()\n}\n\nfunction fireEnter<T>(\n entry: Entry<T>,\n opts: { enter?: (nodes: Node[]) => void | Promise<void> },\n): void {\n if (opts.enter && entry.nodes.length > 0) {\n void opts.enter(entry.nodes)\n }\n}\n\nfunction buildEntry<S, T, M>(\n item: T,\n index: number,\n opts: EachOptions<S, T, M>,\n parentLifetime: Lifetime,\n ctx: ReturnType<typeof getRenderContext>,\n state?: unknown,\n): Entry<T> {\n const key = opts.key(item)\n // Use a lightweight scope — just needs itemUpdaters for per-item bindings.\n // Full scope features (disposers, bindings, children) are only needed when\n // the render callback uses structural primitives or selector.bind().\n const scope = createLifetime(parentLifetime)\n scope._kind = 'each'\n const currentState = (state ?? ctx.state) as S\n const send = ctx.send as (msg: M) => void\n\n // Create entry before render so itemAccessor closures can capture it\n const entry: Entry<T> = { key, item, current: item, index, scope, nodes: null!, updaters: [] }\n\n // Base callable: item(selector) for computed expressions\n const itemFn = <R>(selector: (t: T) => R): (() => R) => {\n const accessor = () => selector(entry.current)\n accessor.__perItem = true as const\n return accessor\n }\n\n // Proxy for item.field shorthand: LAZILY created. Compiled code uses\n // `acc(fn)` instead (the compiler rewrites item.x → acc(r => r.x)),\n // so the Proxy is never constructed in the common case. This saves\n // ~300ns × N Proxy allocations per create cycle.\n let itemProxy: ItemAccessor<T> | null = null\n const getItemProxy = (): ItemAccessor<T> => {\n if (itemProxy) return itemProxy\n let fieldCache: Map<string, () => unknown> | null = null\n itemProxy = new Proxy(itemFn as object, {\n get(target, prop) {\n if (typeof prop === 'symbol' || prop === 'then' || prop === 'prototype') {\n return Reflect.get(target, prop)\n }\n const key = prop as string\n if (fieldCache) {\n const cached = fieldCache.get(key)\n if (cached) return cached\n } else {\n fieldCache = new Map()\n }\n // `current` returns the whole item — essential for primitive T\n // (where the field map is useless) and for whole-record sampling.\n // Caller must call it like a method: `item.current()`.\n const accessor =\n key === 'current'\n ? () => entry.current\n : () => (entry.current as Record<string, unknown>)[key]\n ;(accessor as unknown as { __perItem: true }).__perItem = true\n fieldCache.set(key, accessor)\n return accessor\n },\n }) as ItemAccessor<T>\n return itemProxy\n }\n\n const indexAccessor = (): number => entry.index\n\n // Reuse a single context object to avoid allocation per entry\n buildCtx.rootLifetime = scope\n buildCtx.state = currentState\n buildCtx.allBindings = ctx.allBindings\n buildCtx.structuralBlocks = ctx.structuralBlocks\n buildCtx.dom = ctx.dom\n buildCtx.instance = ctx.instance\n const prevFlatBindings = getFlatBindings()\n setFlatBindings(ctx.allBindings)\n setRenderContext(buildCtx)\n\n // Reuse a single render bag object across entries — mutate `acc` and\n // `index` per entry to avoid per-entry object allocation.\n buildBag.send = send\n buildBag.acc = itemFn\n buildBag.index = indexAccessor\n buildBag._getItemProxy = getItemProxy\n buildBag.entry = entry\n // The View bag — lets each.render use `h.text`, `h.scope`, `h.sample`,\n // etc. without reaching for the top-level imports. Each entry gets a\n // fresh View so its `send` is bound to this row's dispatch path.\n buildBag.h = createView<S, M>(send)\n // Row factory: pass compiler-injected template + update function through to render\n const rfOpts = opts as unknown as Record<string, unknown>\n if (rfOpts.__tpl) buildBag.__tpl = rfOpts.__tpl\n if (rfOpts.__rowUpd) buildBag.__rowUpd = rfOpts.__rowUpd\n entry.nodes = opts.render(buildBag as Parameters<typeof opts.render>[0])\n\n // Move itemUpdaters from scope to entry for direct access during updateEntry.\n // This avoids scope.itemUpdaters lookup overhead on every item update.\n if (scope.itemUpdaters.length > 0) {\n entry.updaters = scope.itemUpdaters\n scope.itemUpdaters = []\n }\n\n clearRenderContext()\n setFlatBindings(prevFlatBindings)\n setRenderContext(ctx)\n\n return entry\n}\n\ninterface TransitionReport {\n entering: Node[]\n leaving: Node[]\n}\n\nfunction collectNodes(target: Node[], nodes: Node[]): void {\n for (const n of nodes) target.push(n)\n}\n\nfunction reconcileEntries<S, T>(\n entries: Entry<T>[],\n newItems: T[],\n opts: EachOptions<S, T>,\n parentLifetime: Lifetime,\n parent: Node,\n anchor: Node,\n ctx: ReturnType<typeof getRenderContext>,\n state: unknown,\n leaving: Entry<T>[],\n report: TransitionReport | null,\n): void {\n const oldLen = entries.length\n const newLen = newItems.length\n const hasLeave = !!opts.leave\n\n // Fast path 1: clear all — bulk DOM removal.\n // When opts.leave is set, each item needs its own leave animation, so\n // fall through to per-item removal instead of Range.deleteContents().\n if (newLen === 0) {\n if (report) {\n for (const entry of entries) collectNodes(report.leaving, entry.nodes)\n }\n if (hasLeave) {\n const toRemove = entries.slice()\n entries.length = 0\n for (const entry of toRemove) removeEntry(entry, opts, leaving)\n return\n }\n // Remove all DOM nodes in one operation using Range\n if (entries.length > 0) {\n const range = ctx.dom.createRange()\n range.setStartAfter(anchor)\n const lastEntry = entries[entries.length - 1]!\n const lastNode = lastEntry.nodes[lastEntry.nodes.length - 1]!\n range.setEndAfter(lastNode)\n range.deleteContents()\n }\n // Bulk dispose all entry scopes — avoids per-scope function call overhead\n const scopes: Lifetime[] = []\n for (let i = 0; i < entries.length; i++) {\n const s = entries[i]!.scope\n s.disposalCause = 'each-remove'\n scopes.push(s)\n }\n disposeLifetimesBulk(scopes)\n removeOrphanedChildren(parentLifetime)\n entries.length = 0\n return\n }\n\n // Fast path 2: append-only — old keys are a prefix of new keys\n if (newLen > oldLen && isAppendOnly(entries, newItems, opts)) {\n for (let i = 0; i < oldLen; i++) {\n updateEntry(entries[i]!, newItems[i]!, i)\n }\n // Find insertion point: after last existing entry's last node, or after anchor\n const lastEntry = oldLen > 0 ? entries[oldLen - 1]! : null\n const ref = lastEntry\n ? lastEntry.nodes[lastEntry.nodes.length - 1]!.nextSibling\n : anchor.nextSibling\n const frag = ctx.dom.createDocumentFragment()\n const newlyAdded: Entry<T>[] = []\n for (let i = oldLen; i < newLen; i++) {\n const entry = buildEntry(newItems[i]!, i, opts, parentLifetime, ctx, state)\n entries.push(entry)\n newlyAdded.push(entry)\n for (const node of entry.nodes) frag.appendChild(node)\n }\n parent.insertBefore(frag, ref)\n if (report) {\n for (const entry of newlyAdded) collectNodes(report.entering, entry.nodes)\n }\n for (const entry of newlyAdded) fireEnter(entry, opts)\n return\n }\n\n // Fast path 3: same length — single pass handles both same-keys update\n // and two-element swap detection. Avoids a second O(n) pass.\n if (newLen === oldLen) {\n let mismatch1 = -1\n let mismatch2 = -1\n let mismatchCount = 0\n\n for (let i = 0; i < newLen; i++) {\n const entry = entries[i]!\n const newItem = newItems[i]!\n if (entry.item === newItem) continue\n const newKey = opts.key(newItem)\n if (entry.key === newKey) {\n updateEntry(entry, newItem, i)\n continue\n }\n // Key mismatch — track for swap detection\n mismatchCount++\n if (mismatchCount === 1) mismatch1 = i\n else if (mismatchCount === 2) mismatch2 = i\n else break // 3+ mismatches → fall through to general path\n }\n\n // All keys matched (with possible item updates) → done\n if (mismatchCount === 0) return\n\n // Exactly 2 key mismatches — check if it's a swap\n if (mismatchCount === 2) {\n const e1 = entries[mismatch1]!\n const e2 = entries[mismatch2]!\n if (e1.key === opts.key(newItems[mismatch2]!) && e2.key === opts.key(newItems[mismatch1]!)) {\n // DOM swap\n const refI = e1.nodes[0]!\n const refAfterJ = e2.nodes[e2.nodes.length - 1]!.nextSibling\n for (const node of e2.nodes) parent.insertBefore(node, refI)\n for (const node of e1.nodes) parent.insertBefore(node, refAfterJ)\n entries[mismatch1] = e2\n entries[mismatch2] = e1\n updateEntry(e2, newItems[mismatch1]!, mismatch1)\n updateEntry(e1, newItems[mismatch2]!, mismatch2)\n return\n }\n }\n // Fall through to general path for 3+ mismatches or non-swap\n }\n\n // Fast path 5: full replace — no shared keys between old and new.\n // Skipped when opts.leave is set so departing items can animate individually.\n if (!hasLeave && oldLen > 0 && opts.key(newItems[0]!) !== entries[0]!.key) {\n const oldKeys = new Set<string | number>()\n for (const entry of entries) oldKeys.add(entry.key)\n let anyShared = false\n for (let i = 0; i < newLen; i++) {\n if (oldKeys.has(opts.key(newItems[i]!))) {\n anyShared = true\n break\n }\n }\n if (!anyShared) {\n if (report) {\n for (const entry of entries) collectNodes(report.leaving, entry.nodes)\n }\n // Bulk DOM removal using Range\n const range = ctx.dom.createRange()\n range.setStartAfter(anchor)\n const lastEntry = entries[entries.length - 1]!\n range.setEndAfter(lastEntry.nodes[lastEntry.nodes.length - 1]!)\n range.deleteContents()\n // Bulk dispose all old scopes\n const oldLifetimes: Lifetime[] = []\n for (let i = 0; i < entries.length; i++) {\n const s = entries[i]!.scope\n s.disposalCause = 'each-remove'\n oldLifetimes.push(s)\n }\n disposeLifetimesBulk(oldLifetimes)\n removeOrphanedChildren(parentLifetime)\n entries.length = 0\n // Build all new entries into a fragment\n const frag = ctx.dom.createDocumentFragment()\n const newlyAdded: Entry<T>[] = []\n for (let i = 0; i < newLen; i++) {\n const entry = buildEntry(newItems[i]!, i, opts, parentLifetime, ctx, state)\n entries.push(entry)\n newlyAdded.push(entry)\n for (const node of entry.nodes) frag.appendChild(node)\n }\n parent.insertBefore(frag, anchor.nextSibling)\n if (report) {\n for (const entry of newlyAdded) collectNodes(report.entering, entry.nodes)\n }\n for (const entry of newlyAdded) fireEnter(entry, opts)\n return\n }\n }\n\n // General path: keyed reconciliation\n const oldByKey = new Map<string | number, Entry<T>>()\n for (const entry of entries) {\n oldByKey.set(entry.key, entry)\n }\n\n const newEntries: Entry<T>[] = []\n const usedKeys = new Set<string | number>()\n const newlyAdded: Entry<T>[] = []\n\n for (let i = 0; i < newLen; i++) {\n const item = newItems[i]!\n const key = opts.key(item)\n usedKeys.add(key)\n\n const existing = oldByKey.get(key)\n if (existing) {\n updateEntry(existing, item, i)\n newEntries.push(existing)\n } else {\n const entry = buildEntry(item, i, opts, parentLifetime, ctx, state)\n newEntries.push(entry)\n newlyAdded.push(entry)\n }\n }\n\n // Remove entries not in the new list. Use bulk-detach pattern so\n // disposing K removals costs O(K+P) rather than O(K*P) where P is\n // parentLifetime.children.length (avoids K * indexOf+splice).\n let didBulkDetach = false\n for (const entry of entries) {\n if (!usedKeys.has(entry.key)) {\n if (report) collectNodes(report.leaving, entry.nodes)\n if (hasLeave) {\n removeEntry(entry, opts, leaving)\n } else {\n for (const node of entry.nodes) parent.removeChild(node)\n entry.scope.disposalCause = 'each-remove'\n disposeLifetime(entry.scope, true)\n didBulkDetach = true\n }\n }\n }\n if (didBulkDetach) removeOrphanedChildren(parentLifetime)\n\n // Reorder DOM\n const hasSurvivors = newEntries.some((e) => oldByKey.has(e.key))\n\n if (!hasSurvivors || !survivorsInOrder(entries, newEntries, usedKeys)) {\n // Full fragment rebuild — one reflow\n const frag = ctx.dom.createDocumentFragment()\n for (const entry of newEntries) {\n for (const node of entry.nodes) frag.appendChild(node)\n }\n parent.insertBefore(frag, anchor.nextSibling)\n } else {\n // Survivors in order — batch-insert new entries between survivors\n let frag: DocumentFragment | null = null\n let insertRef: ChildNode | null = anchor.nextSibling\n for (const entry of newEntries) {\n if (oldByKey.has(entry.key)) {\n // Flush any pending fragment before this survivor\n if (frag) {\n parent.insertBefore(frag, insertRef)\n frag = null\n }\n // Skip past survivor's nodes\n const lastNode = entry.nodes[entry.nodes.length - 1]\n insertRef = lastNode ? lastNode.nextSibling : insertRef\n } else {\n // Batch new entries into a fragment\n if (!frag) frag = ctx.dom.createDocumentFragment()\n for (const node of entry.nodes) frag.appendChild(node)\n }\n }\n if (frag) parent.insertBefore(frag, insertRef)\n }\n\n entries.length = newEntries.length\n for (let i = 0; i < newEntries.length; i++) entries[i] = newEntries[i]!\n\n if (report) {\n for (const entry of newlyAdded) collectNodes(report.entering, entry.nodes)\n }\n\n // Fire enter for newly-added entries (after DOM insertion)\n if (opts.enter) {\n for (const entry of newlyAdded) fireEnter(entry, opts)\n }\n}\n\nfunction updateEntry<T>(entry: Entry<T>, item: T, index: number): void {\n const changed = !Object.is(entry.item, item)\n entry.item = item\n entry.current = item\n entry.index = index\n // eachItemStable removed — unused\n // Directly run per-item updaters when item changed — bypasses Phase 2\n if (changed) {\n // Row factory fast path: shared update function, zero closures\n const rowUpd = (entry as unknown as Record<string, unknown>).__rowUpdate as\n | ((e: Entry<T>) => void)\n | undefined\n if (rowUpd) {\n rowUpd(entry)\n } else {\n // Closure-based fallback\n const updaters = entry.updaters.length > 0 ? entry.updaters : entry.scope.itemUpdaters\n for (let i = 0; i < updaters.length; i++) {\n updaters[i]!()\n }\n }\n }\n}\n\nfunction isAppendOnly<S, T>(entries: Entry<T>[], newItems: T[], opts: EachOptions<S, T>): boolean {\n for (let i = 0; i < entries.length; i++) {\n if (entries[i]!.key !== opts.key(newItems[i]!)) return false\n }\n return true\n}\n\nfunction survivorsInOrder<T>(\n oldEntries: Entry<T>[],\n newEntries: Entry<T>[],\n usedKeys: Set<string | number>,\n): boolean {\n // Build old-index map for survivors\n const oldIndexMap = new Map<string | number, number>()\n for (let i = 0; i < oldEntries.length; i++) {\n if (usedKeys.has(oldEntries[i]!.key)) {\n oldIndexMap.set(oldEntries[i]!.key, i)\n }\n }\n // Check that survivors appear in increasing old-index order in newEntries\n let maxOldIndex = -1\n for (const entry of newEntries) {\n const oldIdx = oldIndexMap.get(entry.key)\n if (oldIdx === undefined) continue // new entry, skip\n if (oldIdx < maxOldIndex) return false\n maxOldIndex = oldIdx\n }\n return true\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,QAAQ,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,OAAO,EAAE,CAAA;IACtB,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7B;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,CAAA;CAMZ;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAEzD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,CAgBtE"}
1
+ {"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,QAAQ,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,OAAO,EAAE,CAAA;IACtB,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7B;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,CAAA;CAMZ;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAEzD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,CAmCtE"}
@@ -8,6 +8,23 @@ export function clearRenderContext() {
8
8
  export function getRenderContext(primitiveName) {
9
9
  if (!currentContext) {
10
10
  const name = primitiveName ? `${primitiveName}()` : 'primitives';
11
+ // `sample()` is specifically the one users reach for from adapter
12
+ // send wrappers / event handlers / async callbacks expecting it to
13
+ // be "imperative and safe." It isn't — it's a view-primitive that
14
+ // reads the render-time state snapshot, and the context is cleared
15
+ // as soon as view() returns. Point at the sanctioned escape hatch
16
+ // in the thrown message so the caller doesn't have to dig.
17
+ const sampleGuidance = primitiveName === 'sample'
18
+ ? '\n\nFor the "read state inside a callback / handler" case: use ' +
19
+ 'AppHandle.getState() instead. It is safe to call from anywhere ' +
20
+ '(event handlers, adapter send wrappers, async callbacks, timers).\n' +
21
+ 'Example:\n' +
22
+ ' const handle = mountApp(root, App)\n' +
23
+ " el.addEventListener('click', () => {\n" +
24
+ ' const { count } = handle.getState() as AppState\n' +
25
+ " if (count > 0) handle.send({ type: 'tick' })\n" +
26
+ ' })'
27
+ : '';
11
28
  throw new Error(`[LLui] ${name} can only be called inside a component's view() function. ` +
12
29
  `It was called outside a render context. Common causes:\n` +
13
30
  ` 1. Calling a primitive at module scope instead of inside view().\n` +
@@ -16,7 +33,8 @@ export function getRenderContext(primitiveName) {
16
33
  `from inside the component's view callback so their result can be spread ` +
17
34
  `into the returned node tree.\n` +
18
35
  ` 3. Calling a primitive from a setTimeout / Promise / event handler — ` +
19
- `the render context only persists during the synchronous view() call.`);
36
+ `the render context only persists during the synchronous view() call.` +
37
+ sampleGuidance);
20
38
  }
21
39
  return currentContext;
22
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render-context.js","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AA2BA,IAAI,cAAc,GAAyB,IAAI,CAAA;AAE/C,MAAM,UAAU,gBAAgB,CAAC,GAAkB;IACjD,cAAc,GAAG,GAAG,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,cAAc,GAAG,IAAI,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAsB;IACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,CAAC,CAAC,CAAC,YAAY,CAAA;QAChE,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,4DAA4D;YACxE,0DAA0D;YAC1D,sEAAsE;YACtE,yEAAyE;YACzE,0EAA0E;YAC1E,0EAA0E;YAC1E,gCAAgC;YAChC,yEAAyE;YACzE,sEAAsE,CACzE,CAAA;IACH,CAAC;IACD,OAAO,cAAc,CAAA;AACvB,CAAC","sourcesContent":["import type { Lifetime, Binding } from './types.js'\nimport type { StructuralBlock } from './structural.js'\nimport type { ComponentInstance } from './update-loop.js'\nimport type { DomEnv } from './dom-env.js'\n\nexport interface RenderContext {\n rootLifetime: Lifetime\n state: unknown\n allBindings: Binding[]\n structuralBlocks: StructuralBlock[]\n container?: Element\n send?: (msg: unknown) => void\n /**\n * The DOM implementation backing this render pass. Seeded by\n * `mountApp` / `hydrateApp` / `renderToString` and threaded through\n * every nested primitive via context spread. Primitives construct\n * DOM through `ctx.dom.createElement(...)` etc. instead of reaching\n * for `globalThis.document`.\n */\n dom: DomEnv\n /** @internal dev-only — the owning ComponentInstance. Set by mount /\n * hydrate / child to let primitives (currently `each`) emit tracker\n * data to `inst._eachDiffLog`. Nested contexts pass through via\n * spread (e.g. `{ ...ctx, rootLifetime }`). Undefined outside dev. */\n instance?: ComponentInstance\n}\n\nlet currentContext: RenderContext | null = null\n\nexport function setRenderContext(ctx: RenderContext): void {\n currentContext = ctx\n}\n\nexport function clearRenderContext(): void {\n currentContext = null\n}\n\nexport function getRenderContext(primitiveName?: string): RenderContext {\n if (!currentContext) {\n const name = primitiveName ? `${primitiveName}()` : 'primitives'\n throw new Error(\n `[LLui] ${name} can only be called inside a component's view() function. ` +\n `It was called outside a render context. Common causes:\\n` +\n ` 1. Calling a primitive at module scope instead of inside view().\\n` +\n ` 2. Calling an overlay helper (dialog.overlay, popover.overlay, …) at ` +\n `module scope — these internally use show()/branch() and must be invoked ` +\n `from inside the component's view callback so their result can be spread ` +\n `into the returned node tree.\\n` +\n ` 3. Calling a primitive from a setTimeout / Promise / event handler — ` +\n `the render context only persists during the synchronous view() call.`,\n )\n }\n return currentContext\n}\n"]}
1
+ {"version":3,"file":"render-context.js","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"AA2BA,IAAI,cAAc,GAAyB,IAAI,CAAA;AAE/C,MAAM,UAAU,gBAAgB,CAAC,GAAkB;IACjD,cAAc,GAAG,GAAG,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,cAAc,GAAG,IAAI,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAAsB;IACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,CAAC,CAAC,CAAC,YAAY,CAAA;QAChE,kEAAkE;QAClE,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,kEAAkE;QAClE,2DAA2D;QAC3D,MAAM,cAAc,GAClB,aAAa,KAAK,QAAQ;YACxB,CAAC,CAAC,iEAAiE;gBACjE,iEAAiE;gBACjE,qEAAqE;gBACrE,YAAY;gBACZ,wCAAwC;gBACxC,0CAA0C;gBAC1C,uDAAuD;gBACvD,oDAAoD;gBACpD,MAAM;YACR,CAAC,CAAC,EAAE,CAAA;QACR,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,4DAA4D;YACxE,0DAA0D;YAC1D,sEAAsE;YACtE,yEAAyE;YACzE,0EAA0E;YAC1E,0EAA0E;YAC1E,gCAAgC;YAChC,yEAAyE;YACzE,sEAAsE;YACtE,cAAc,CACjB,CAAA;IACH,CAAC;IACD,OAAO,cAAc,CAAA;AACvB,CAAC","sourcesContent":["import type { Lifetime, Binding } from './types.js'\nimport type { StructuralBlock } from './structural.js'\nimport type { ComponentInstance } from './update-loop.js'\nimport type { DomEnv } from './dom-env.js'\n\nexport interface RenderContext {\n rootLifetime: Lifetime\n state: unknown\n allBindings: Binding[]\n structuralBlocks: StructuralBlock[]\n container?: Element\n send?: (msg: unknown) => void\n /**\n * The DOM implementation backing this render pass. Seeded by\n * `mountApp` / `hydrateApp` / `renderToString` and threaded through\n * every nested primitive via context spread. Primitives construct\n * DOM through `ctx.dom.createElement(...)` etc. instead of reaching\n * for `globalThis.document`.\n */\n dom: DomEnv\n /** @internal dev-only — the owning ComponentInstance. Set by mount /\n * hydrate / child to let primitives (currently `each`) emit tracker\n * data to `inst._eachDiffLog`. Nested contexts pass through via\n * spread (e.g. `{ ...ctx, rootLifetime }`). Undefined outside dev. */\n instance?: ComponentInstance\n}\n\nlet currentContext: RenderContext | null = null\n\nexport function setRenderContext(ctx: RenderContext): void {\n currentContext = ctx\n}\n\nexport function clearRenderContext(): void {\n currentContext = null\n}\n\nexport function getRenderContext(primitiveName?: string): RenderContext {\n if (!currentContext) {\n const name = primitiveName ? `${primitiveName}()` : 'primitives'\n // `sample()` is specifically the one users reach for from adapter\n // send wrappers / event handlers / async callbacks expecting it to\n // be \"imperative and safe.\" It isn't — it's a view-primitive that\n // reads the render-time state snapshot, and the context is cleared\n // as soon as view() returns. Point at the sanctioned escape hatch\n // in the thrown message so the caller doesn't have to dig.\n const sampleGuidance =\n primitiveName === 'sample'\n ? '\\n\\nFor the \"read state inside a callback / handler\" case: use ' +\n 'AppHandle.getState() instead. It is safe to call from anywhere ' +\n '(event handlers, adapter send wrappers, async callbacks, timers).\\n' +\n 'Example:\\n' +\n ' const handle = mountApp(root, App)\\n' +\n \" el.addEventListener('click', () => {\\n\" +\n ' const { count } = handle.getState() as AppState\\n' +\n \" if (count > 0) handle.send({ type: 'tick' })\\n\" +\n ' })'\n : ''\n throw new Error(\n `[LLui] ${name} can only be called inside a component's view() function. ` +\n `It was called outside a render context. Common causes:\\n` +\n ` 1. Calling a primitive at module scope instead of inside view().\\n` +\n ` 2. Calling an overlay helper (dialog.overlay, popover.overlay, …) at ` +\n `module scope — these internally use show()/branch() and must be invoked ` +\n `from inside the component's view callback so their result can be spread ` +\n `into the returned node tree.\\n` +\n ` 3. Calling a primitive from a setTimeout / Promise / event handler — ` +\n `the render context only persists during the synchronous view() call.` +\n sampleGuidance,\n )\n }\n return currentContext\n}\n"]}
package/dist/types.d.ts CHANGED
@@ -56,6 +56,9 @@ export interface AnyComponentDef {
56
56
  __dirty?: unknown;
57
57
  __renderToString?: unknown;
58
58
  __msgSchema?: unknown;
59
+ __msgAnnotations?: unknown;
60
+ __bindingDescriptors?: unknown;
61
+ __schemaHash?: unknown;
59
62
  __maskLegend?: unknown;
60
63
  __componentMeta?: unknown;
61
64
  __stateSchema?: unknown;
@@ -86,6 +89,9 @@ export interface LazyDef<D = void> {
86
89
  __dirty?: unknown;
87
90
  __renderToString?: unknown;
88
91
  __msgSchema?: unknown;
92
+ __msgAnnotations?: unknown;
93
+ __bindingDescriptors?: unknown;
94
+ __schemaHash?: unknown;
89
95
  __maskLegend?: unknown;
90
96
  __componentMeta?: unknown;
91
97
  __stateSchema?: unknown;
@@ -127,6 +133,39 @@ export interface AppHandle {
127
133
  * normal update loop. Calling `send` after `dispose` is a no-op.
128
134
  */
129
135
  send(msg: unknown): void;
136
+ /**
137
+ * Read the current state snapshot. Safe to call from anywhere —
138
+ * event handlers, async callbacks, adapter `send` wrappers, or any
139
+ * imperative context where the render context is not live.
140
+ *
141
+ * Unlike `sample()` (a view primitive that requires an active
142
+ * render context and throws outside of `view()`), `getState` is
143
+ * the sanctioned escape hatch for "I need to know the current
144
+ * state to decide what to dispatch." Typical shape:
145
+ *
146
+ * ```ts
147
+ * const handle = mountApp(root, MyApp)
148
+ * container.addEventListener('drop', () => {
149
+ * const { mode } = handle.getState() as AppState
150
+ * if (mode === 'drag') handle.send({ type: 'commit' })
151
+ * })
152
+ * ```
153
+ *
154
+ * Throws after `dispose()` — stale reads are silent bugs; a thrown
155
+ * error pinpoints the callsite that forgot to detach.
156
+ *
157
+ * The return type is `unknown` because `AppHandle` is state-type
158
+ * erased at this boundary; cast to your app's state type at the
159
+ * call site.
160
+ */
161
+ getState(): unknown;
162
+ /**
163
+ * Register a listener called synchronously after every update cycle
164
+ * completes. The listener receives the new state. Returns an
165
+ * unsubscribe function. Safe after dispose (no-op; returns a no-op
166
+ * unsubscribe). See agent spec §10.5 (state-update frames).
167
+ */
168
+ subscribe(listener: (state: unknown) => void): () => void;
130
169
  }
131
170
  export interface Lifetime {
132
171
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,qEAAqE","sourcesContent":["// ── Component Definition ──────────────────────────────────────────\n\nimport type { View } from './view-helpers.js'\nimport type { StructuralBlock } from './structural.js'\nimport type { ComponentInstance } from './update-loop.js'\nimport type { DisposerEvent } from './tracking/disposer-log.js'\n\nexport interface ComponentDef<S, M, E = never, D = void> {\n name: string\n init: (data: D) => [S, E[]]\n update: (state: S, msg: M) => [S, E[]]\n view: (h: View<S, M>) => Node[]\n onEffect?: (ctx: { effect: E; send: Send<M>; signal: AbortSignal }) => void\n\n // Level 2 composition\n propsMsg?: (props: Record<string, unknown>) => M\n receives?: Record<string, (params: unknown) => M>\n\n /** @internal Compiler-injected */\n __dirty?: (oldState: S, newState: S) => number | [number, number]\n /** @internal Compiler-injected */\n __renderToString?: (state: S) => string\n /** @internal Compiler-injected */\n __msgSchema?: object\n /** @internal Compiler-injected — maps top-level state field → dirty-mask bit(s) */\n __maskLegend?: Record<string, number>\n /** @internal Compiler-injected — source-file location of the component() call */\n __componentMeta?: { file: string; line: number }\n /** @internal Compiler-injected — shape of the State type (for introspection) */\n __stateSchema?: object\n /** @internal Compiler-injected — Effect union schema (for introspection) */\n __effectSchema?: object\n /** @internal Compiler-injected — replaces generic Phase 1 + Phase 2 loop */\n __update?: (\n state: S,\n dirty: number,\n bindings: Binding[],\n blocks: StructuralBlock[],\n bindingsBeforePhase1: number,\n ) => void\n /** @internal Compiler-injected — per-message-type specialized handlers.\n * Bypass the entire processMessages pipeline for single-message updates. */\n __handlers?: Record<string, (inst: object, msg: unknown) => [S, E[]]>\n}\n\nexport type Send<M> = (msg: M) => void\n\n/**\n * Type-erased component definition for use at module boundaries where\n * the consumer's `S`, `M`, `E` are internal and invisible to the caller.\n *\n * Why this exists: `ComponentDef<S, M, E, D>` uses property syntax for\n * its callable fields (`init: (data: D) => ...`), and TypeScript\n * checks property syntax with strict (contravariant) variance. That's\n * the right call for user-facing type safety when authoring a\n * component (a narrower `Msg` type can't accidentally satisfy the\n * `update`'s param), but it means `ComponentDef<MyState, MyMsg, MyEffect, MyData>`\n * is NOT structurally assignable to `ComponentDef<unknown, unknown, unknown, unknown>`\n * — the `init: (data: MyData) => ...` field is contravariant in `MyData`,\n * so widening to `unknown` is rejected.\n *\n * `AnyComponentDef` (and `LazyDef<D>` below) declare the same fields\n * using **method syntax** (`init(data: D): ...`), which TypeScript\n * checks bivariantly. Concrete `ComponentDef<S, M, E, D>` assigns into\n * these structurally without any `widenDef` helper at the callsite.\n *\n * Used by every API that accepts an opaque component definition at a\n * module boundary:\n *\n * - `child({ def })`\n * - `lazy({ loader })` — returns `LazyDef<D>` so the loader's `D` survives\n * - `createOnRenderClient({ Layout })` (from `@llui/vike`)\n * - `createOnRenderHtml({ Layout })` (from `@llui/vike`)\n *\n * The `D` parameter is `unknown` here — `child()` doesn't pass init\n * data through, and `Layout` callers pass route-supplied data whose\n * shape is unknown at the type-erased boundary. Use `LazyDef<D>` when\n * you need to preserve the init data shape (the lazy loader case).\n */\nexport interface AnyComponentDef {\n name: string\n init(data: unknown): [unknown, unknown[]]\n update(state: unknown, msg: unknown): [unknown, unknown[]]\n view(h: unknown): Node[]\n onEffect?: unknown\n propsMsg?: unknown\n receives?: unknown\n __dirty?: unknown\n __renderToString?: unknown\n __msgSchema?: unknown\n __maskLegend?: unknown\n __componentMeta?: unknown\n __stateSchema?: unknown\n __effectSchema?: unknown\n __update?: unknown\n __handlers?: unknown\n}\n\n/**\n * Type-erased component definition for use at module boundaries where the\n * loaded component's S, M, E are internal and invisible to the caller.\n * Only `D` (init data) survives because the caller provides it.\n *\n * `ComponentDef<S, M, E, D>` is structurally assignable to `LazyDef<D>`\n * for any S, M, E — `view: (h: unknown) => Node[]` accepts any View via\n * contravariance, and all other fields widen to `unknown` return types.\n *\n * Used by `lazy()` as the loader's return type. Use `AnyComponentDef`\n * (above) when D is also opaque — most other adapter-layer APIs.\n */\nexport interface LazyDef<D = void> {\n name: string\n // Method syntax — TypeScript checks methods bivariantly, so\n // ComponentDef<S, M, E, D>'s concrete (state: S, msg: M) => ...\n // assigns here even though S/M ≠ unknown. Property syntax would\n // be contravariant and reject the assignment.\n init(data: D): [unknown, unknown[]]\n update(state: unknown, msg: unknown): [unknown, unknown[]]\n view(h: unknown): Node[]\n onEffect?: unknown\n propsMsg?: unknown\n receives?: unknown\n __dirty?: unknown\n __renderToString?: unknown\n __msgSchema?: unknown\n __maskLegend?: unknown\n __componentMeta?: unknown\n __stateSchema?: unknown\n __effectSchema?: unknown\n __update?: unknown\n __handlers?: unknown\n}\n\n/**\n * Maps a value shape to a reactive-props shape: every field becomes an accessor\n * `(s: S) => V`. Use for Level-1 view function signatures.\n *\n * ```ts\n * type ToolbarData = { tools: Tool[]; theme: 'light' | 'dark' }\n *\n * export function toolbar<S>(props: Props<ToolbarData, S>, send: Send<Msg>) {\n * return [div({ class: props.theme }, [each({ items: props.tools, ... })])]\n * }\n *\n * // Caller — TypeScript enforces per-field accessors; passing a raw value errors:\n * toolbar({ tools: (s: State) => s.tools, theme: (s) => s.theme }, send)\n * ```\n */\nexport type Props<T, S> = {\n [K in keyof T]: (s: S) => T[K]\n}\n\n// ── App Handle ────────────────────────────────────────────────────\n\nexport interface AppHandle {\n dispose(): void\n flush(): void\n /**\n * Dispatch a message into the mounted instance from outside its\n * normal view-bound `send` channel. Useful for adapter layers that\n * need to push updates into a long-lived instance — e.g.\n * `@llui/vike`'s persistent-layout chain pushes layout-data updates\n * into surviving layer instances on client navigation when their\n * `propsMsg` translates the new data into a state-update message.\n *\n * Messages are queued through the same path as `view`-side `send`\n * calls — they batch into the next microtask and process via the\n * normal update loop. Calling `send` after `dispose` is a no-op.\n */\n send(msg: unknown): void\n}\n\n// ── Lifetime ─────────────────────────────────────────────────────────\n\nexport interface Lifetime {\n id: number\n parent: Lifetime | null\n children: Lifetime[]\n disposers: Array<() => void>\n bindings: Binding[]\n /** Per-item updaters — called directly by each() when item changes, bypassing Phase 2 */\n itemUpdaters: Array<() => void>\n /**\n * @internal dev-only back-reference to the owning ComponentInstance.\n * Populated on the root scope by `installDevTools` so `disposeLifetime`\n * can walk up the scope chain and emit DisposerEvents into the\n * instance's `_disposerLog`. Undefined in production.\n */\n instance?: ComponentInstance\n /**\n * @internal dev-only cause hint. Structural primitives (branch, each,\n * child, mountApp teardown) set this field immediately before calling\n * `disposeLifetime`; the dispose path reads it once to stamp the emitted\n * DisposerEvent. Left undefined, `disposeLifetime` falls back to\n * `'component-unmount'`. Undefined in production.\n */\n disposalCause?: DisposerEvent['cause']\n /** @internal dev-only — populated by structural primitives for scope-tree classification */\n _kind?: 'root' | 'show' | 'each' | 'branch' | 'scope' | 'child' | 'portal' | 'foreign'\n}\n\nexport interface LifetimeNode {\n scopeId: string\n kind: 'root' | 'show' | 'each' | 'branch' | 'scope' | 'child' | 'portal' | 'foreign'\n active: boolean\n children: LifetimeNode[]\n}\n\n// ── Binding ───────────────────────────────────────────────────────\n\n/**\n * Binding output kinds.\n *\n * `'text' | 'prop' | 'attr' | 'class' | 'style'` write their accessor's\n * return value to the DOM. `'effect'` is a side-effect-only watcher:\n * the accessor is invoked every Phase 2 tick its mask is hit, but its\n * return value is discarded and `applyBinding` is a no-op. Used by\n * `child()` to fire the prop-diff/propsMsg cascade on parent updates\n * without the cost of stringifying the returned props bag onto a\n * detached anchor node every render.\n */\nexport type BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style' | 'effect'\n\nexport interface Binding {\n mask: number\n accessor: (state: unknown) => unknown\n lastValue: unknown\n kind: BindingKind\n node: Node\n key?: string\n ownerLifetime: Lifetime\n perItem: boolean\n dead: boolean\n}\n\n// ── Structural Primitives ─────────────────────────────────────────\n\nexport interface TransitionOptions {\n enter?: (nodes: Node[]) => void | Promise<void>\n leave?: (nodes: Node[]) => void | Promise<void>\n onTransition?: (ctx: { entering: Node[]; leaving: Node[]; parent: Node }) => void | Promise<void>\n}\n\ninterface BranchOptionsBase extends TransitionOptions {\n /**\n * @internal Set by `show()` / `scope()` sugar when delegating to\n * `branch()`, so the dev-only disposer log can report `'show-hide'` /\n * `'scope-rebuild'` instead of the default `'branch-swap'` for the\n * leaving arm. User code should not set this directly.\n */\n __disposalCause?: DisposerEvent['cause']\n /** @internal Compiler-injected mask of paths read by `on`. */\n __mask?: number\n}\n\n/**\n * All cases covered by `cases` — no default allowed (would be dead code).\n */\ntype BranchOptionsExhaustive<S, M, K extends string> = BranchOptionsBase & {\n on: (s: S) => K\n cases: { [P in K]: (h: View<S, M>) => Node[] }\n default?: never\n}\n\n/**\n * `cases` may cover some but not all keys; `default` handles the rest.\n */\ntype BranchOptionsNonExhaustive<S, M, K extends string> = BranchOptionsBase & {\n on: (s: S) => K\n cases?: { [P in K]?: (h: View<S, M>) => Node[] }\n default: (h: View<S, M>) => Node[]\n}\n\n/**\n * `on` returns a wide `string` — exhaustiveness cannot be verified at\n * compile time (the key domain is infinite). Lenient: `default` is\n * optional so existing call sites that predate exhaustiveness typing\n * continue to compile. Authors who want the gate opt in by narrowing\n * `on`'s return type to a literal union.\n */\ntype BranchOptionsWide<S, M> = BranchOptionsBase & {\n on: (s: S) => string\n cases?: Record<string, (h: View<S, M>) => Node[]>\n default?: (h: View<S, M>) => Node[]\n}\n\n/**\n * Options for `branch()`.\n *\n * When `on` returns a literal string union (e.g. `'idle' | 'loading'\n * | 'done'`), TypeScript enforces exhaustiveness: either every union\n * member has a case (and `default` is disallowed as unreachable), or\n * `default` is required to cover the remainder. When `on` returns a\n * wide `string`, `default` stays optional — exhaustiveness isn't\n * meaningful for an unbounded domain.\n *\n * `cases` is optional when `default` is present; `branch({ on, default })`\n * is the canonical dynamic-rebuild shape — `scope()` sugar wraps\n * exactly this form.\n */\nexport type BranchOptions<S, M = unknown, K extends string = string> = string extends K\n ? BranchOptionsWide<S, M>\n : BranchOptionsExhaustive<S, M, K> | BranchOptionsNonExhaustive<S, M, K>\n\nexport interface ShowOptions<S, M = unknown> extends TransitionOptions {\n when: (s: S) => boolean\n render: (h: View<S, M>) => Node[]\n fallback?: (h: View<S, M>) => Node[]\n}\n\n/**\n * Options for `scope()` — rebuilds a subtree when `on(state)` changes.\n *\n * Sugar over `branch({ on, cases: {}, default: render, __disposalCause: 'scope-rebuild' })`.\n * Use when the key is dynamic (e.g. an epoch counter bumped from the\n * outside) and you want a fresh arm — fresh lifetime, fresh bindings —\n * each time it changes. Combine with `sample()` inside `render` for a\n * one-shot current-state read.\n */\nexport interface ScopeOptions<S, M = unknown> extends TransitionOptions {\n on: (s: S) => string\n render: (h: View<S, M>) => Node[]\n /** @internal Compiler-injected mask of paths read by `on`. */\n __mask?: number\n}\n\n/**\n * Options for `each()`. The inherited `enter` / `leave` callbacks fire **per item**:\n * `enter(nodes)` runs after an item's DOM is inserted (including initial mount);\n * `leave(nodes)` runs before an item's DOM is removed and may return a Promise\n * to hold the DOM until the animation resolves. Setting `leave` disables the\n * bulk-clear / full-replace fast paths.\n */\n/**\n * Per-item accessor. Two access forms:\n * - `item.field` — shorthand, returns accessor for `item.current[field]`\n * - `item(t => t.expr)` — computed expressions\n *\n * In both cases the returned value is a `() => V` accessor.\n * Invoke it (`item.field()`) to read the current value imperatively.\n */\nexport type ItemAccessor<T> = {\n <R>(selector: (t: T) => R): () => R\n} & {\n [K in keyof T]-?: () => T[K]\n} & {\n /**\n * Read the whole current item. Needed when T is a primitive (where the\n * field-map branch collapses to method names like `toString`) or when\n * you want to sample the entire record rather than a single field.\n *\n * Shadows any literal `current` field on T — if T has such a field,\n * use `item(r => r.current)` to disambiguate.\n */\n current(): T\n}\n\nexport interface EachOptions<S, T, M = unknown> extends TransitionOptions {\n items: (s: S) => T[]\n key: (item: T) => string | number\n render: (opts: {\n send: Send<M>\n item: ItemAccessor<T>\n /**\n * Plain (non-Proxy) accessor factory. Compiler-output path; avoid in user code\n * (use `item.field` / `item(fn)` — more ergonomic and bypasses Proxy when compiled).\n */\n acc: <R>(selector: (t: T) => R) => () => R\n index: () => number\n /**\n * The component's View bag (`h.text`, `h.show`, `h.branch`,\n * `h.scope`, `h.sample`, …). Each-render callers used to reach\n * for the top-level imports; the bag form is symmetric with how\n * `branch.cases[k]`, `show.render`, and `scope.render` receive it.\n * Both still work — destructure whichever is more convenient.\n */\n h: View<S, M>\n /** @internal Compiler-injected — entry reference for row factory */\n entry?: Record<string, unknown>\n }) => Node[]\n}\n\nexport interface PortalOptions {\n target: HTMLElement | string\n render: () => Node[]\n}\n\nexport interface ForeignOptions<S, M, T extends Record<string, unknown>, Instance> {\n /**\n * Construct the imperative instance. Can be async — return a\n * `Promise<Instance>` to defer construction until e.g. a dynamic\n * `import()` resolves. While the promise is pending:\n *\n * - The container element is in the DOM immediately (so layout\n * doesn't shift when the instance arrives).\n * - `sync` is NOT called. State changes are tracked by the\n * primitive and the latest props are applied as the initial\n * sync right after the promise resolves.\n * - If the owning scope disposes before the promise resolves,\n * `destroy(instance)` runs on resolution — no matter how long\n * the promise takes.\n */\n mount: (ctx: { container: HTMLElement; send: Send<M> }) => Instance | Promise<Instance>\n props: (s: S) => T\n sync:\n | ((ctx: { instance: Instance; props: T; prev: T | undefined }) => void)\n | {\n [K in keyof T]?: (ctx: { instance: Instance; value: T[K]; prev: T[K] | undefined }) => void\n }\n destroy: (instance: Instance) => void\n container?: { tag?: string; attrs?: Record<string, string> }\n}\n\nexport interface ChildOptions<S, ChildM> {\n // Type-erased via AnyComponentDef so callers can pass any concrete\n // ComponentDef<S, M, E, D> without a widening helper. The runtime\n // narrows the message shape via the user-supplied `onMsg` callback,\n // which keeps `ChildM` typed at this boundary even though the def\n // itself is opaque.\n def: AnyComponentDef\n key: string | number\n props: (s: S) => Record<string, unknown>\n onMsg?: (msg: ChildM) => unknown | null\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,qEAAqE","sourcesContent":["// ── Component Definition ──────────────────────────────────────────\n\nimport type { View } from './view-helpers.js'\nimport type { StructuralBlock } from './structural.js'\nimport type { ComponentInstance } from './update-loop.js'\nimport type { DisposerEvent } from './tracking/disposer-log.js'\n\nexport interface ComponentDef<S, M, E = never, D = void> {\n name: string\n init: (data: D) => [S, E[]]\n update: (state: S, msg: M) => [S, E[]]\n view: (h: View<S, M>) => Node[]\n onEffect?: (ctx: { effect: E; send: Send<M>; signal: AbortSignal }) => void\n\n // Level 2 composition\n propsMsg?: (props: Record<string, unknown>) => M\n receives?: Record<string, (params: unknown) => M>\n\n /** @internal Compiler-injected */\n __dirty?: (oldState: S, newState: S) => number | [number, number]\n /** @internal Compiler-injected */\n __renderToString?: (state: S) => string\n /** @internal Compiler-injected */\n __msgSchema?: object\n /** @internal Compiler-injected; keyed by Msg discriminant → annotations. See agent spec §5.1. */\n __msgAnnotations?: Record<\n string,\n {\n intent: string | null\n alwaysAffordable: boolean\n requiresConfirm: boolean\n humanOnly: boolean\n }\n >\n /** @internal Compiler-emitted; one entry per send() call site in view(). See agent spec §5.2. */\n __bindingDescriptors?: Array<{ variant: string }>\n /** @internal Compiler-injected; 32-char hex SHA-256 of schemas + annotations. See agent spec §12.3. */\n __schemaHash?: string\n /** @internal Compiler-injected — maps top-level state field → dirty-mask bit(s) */\n __maskLegend?: Record<string, number>\n /** @internal Compiler-injected — source-file location of the component() call */\n __componentMeta?: { file: string; line: number }\n /** @internal Compiler-injected — shape of the State type (for introspection) */\n __stateSchema?: object\n /** @internal Compiler-injected — Effect union schema (for introspection) */\n __effectSchema?: object\n /** @internal Compiler-injected — replaces generic Phase 1 + Phase 2 loop */\n __update?: (\n state: S,\n dirty: number,\n bindings: Binding[],\n blocks: StructuralBlock[],\n bindingsBeforePhase1: number,\n ) => void\n /** @internal Compiler-injected — per-message-type specialized handlers.\n * Bypass the entire processMessages pipeline for single-message updates. */\n __handlers?: Record<string, (inst: object, msg: unknown) => [S, E[]]>\n}\n\nexport type Send<M> = (msg: M) => void\n\n/**\n * Type-erased component definition for use at module boundaries where\n * the consumer's `S`, `M`, `E` are internal and invisible to the caller.\n *\n * Why this exists: `ComponentDef<S, M, E, D>` uses property syntax for\n * its callable fields (`init: (data: D) => ...`), and TypeScript\n * checks property syntax with strict (contravariant) variance. That's\n * the right call for user-facing type safety when authoring a\n * component (a narrower `Msg` type can't accidentally satisfy the\n * `update`'s param), but it means `ComponentDef<MyState, MyMsg, MyEffect, MyData>`\n * is NOT structurally assignable to `ComponentDef<unknown, unknown, unknown, unknown>`\n * — the `init: (data: MyData) => ...` field is contravariant in `MyData`,\n * so widening to `unknown` is rejected.\n *\n * `AnyComponentDef` (and `LazyDef<D>` below) declare the same fields\n * using **method syntax** (`init(data: D): ...`), which TypeScript\n * checks bivariantly. Concrete `ComponentDef<S, M, E, D>` assigns into\n * these structurally without any `widenDef` helper at the callsite.\n *\n * Used by every API that accepts an opaque component definition at a\n * module boundary:\n *\n * - `child({ def })`\n * - `lazy({ loader })` — returns `LazyDef<D>` so the loader's `D` survives\n * - `createOnRenderClient({ Layout })` (from `@llui/vike`)\n * - `createOnRenderHtml({ Layout })` (from `@llui/vike`)\n *\n * The `D` parameter is `unknown` here — `child()` doesn't pass init\n * data through, and `Layout` callers pass route-supplied data whose\n * shape is unknown at the type-erased boundary. Use `LazyDef<D>` when\n * you need to preserve the init data shape (the lazy loader case).\n */\nexport interface AnyComponentDef {\n name: string\n init(data: unknown): [unknown, unknown[]]\n update(state: unknown, msg: unknown): [unknown, unknown[]]\n view(h: unknown): Node[]\n onEffect?: unknown\n propsMsg?: unknown\n receives?: unknown\n __dirty?: unknown\n __renderToString?: unknown\n __msgSchema?: unknown\n __msgAnnotations?: unknown\n __bindingDescriptors?: unknown\n __schemaHash?: unknown\n __maskLegend?: unknown\n __componentMeta?: unknown\n __stateSchema?: unknown\n __effectSchema?: unknown\n __update?: unknown\n __handlers?: unknown\n}\n\n/**\n * Type-erased component definition for use at module boundaries where the\n * loaded component's S, M, E are internal and invisible to the caller.\n * Only `D` (init data) survives because the caller provides it.\n *\n * `ComponentDef<S, M, E, D>` is structurally assignable to `LazyDef<D>`\n * for any S, M, E — `view: (h: unknown) => Node[]` accepts any View via\n * contravariance, and all other fields widen to `unknown` return types.\n *\n * Used by `lazy()` as the loader's return type. Use `AnyComponentDef`\n * (above) when D is also opaque — most other adapter-layer APIs.\n */\nexport interface LazyDef<D = void> {\n name: string\n // Method syntax — TypeScript checks methods bivariantly, so\n // ComponentDef<S, M, E, D>'s concrete (state: S, msg: M) => ...\n // assigns here even though S/M ≠ unknown. Property syntax would\n // be contravariant and reject the assignment.\n init(data: D): [unknown, unknown[]]\n update(state: unknown, msg: unknown): [unknown, unknown[]]\n view(h: unknown): Node[]\n onEffect?: unknown\n propsMsg?: unknown\n receives?: unknown\n __dirty?: unknown\n __renderToString?: unknown\n __msgSchema?: unknown\n __msgAnnotations?: unknown\n __bindingDescriptors?: unknown\n __schemaHash?: unknown\n __maskLegend?: unknown\n __componentMeta?: unknown\n __stateSchema?: unknown\n __effectSchema?: unknown\n __update?: unknown\n __handlers?: unknown\n}\n\n/**\n * Maps a value shape to a reactive-props shape: every field becomes an accessor\n * `(s: S) => V`. Use for Level-1 view function signatures.\n *\n * ```ts\n * type ToolbarData = { tools: Tool[]; theme: 'light' | 'dark' }\n *\n * export function toolbar<S>(props: Props<ToolbarData, S>, send: Send<Msg>) {\n * return [div({ class: props.theme }, [each({ items: props.tools, ... })])]\n * }\n *\n * // Caller — TypeScript enforces per-field accessors; passing a raw value errors:\n * toolbar({ tools: (s: State) => s.tools, theme: (s) => s.theme }, send)\n * ```\n */\nexport type Props<T, S> = {\n [K in keyof T]: (s: S) => T[K]\n}\n\n// ── App Handle ────────────────────────────────────────────────────\n\nexport interface AppHandle {\n dispose(): void\n flush(): void\n /**\n * Dispatch a message into the mounted instance from outside its\n * normal view-bound `send` channel. Useful for adapter layers that\n * need to push updates into a long-lived instance — e.g.\n * `@llui/vike`'s persistent-layout chain pushes layout-data updates\n * into surviving layer instances on client navigation when their\n * `propsMsg` translates the new data into a state-update message.\n *\n * Messages are queued through the same path as `view`-side `send`\n * calls — they batch into the next microtask and process via the\n * normal update loop. Calling `send` after `dispose` is a no-op.\n */\n send(msg: unknown): void\n /**\n * Read the current state snapshot. Safe to call from anywhere —\n * event handlers, async callbacks, adapter `send` wrappers, or any\n * imperative context where the render context is not live.\n *\n * Unlike `sample()` (a view primitive that requires an active\n * render context and throws outside of `view()`), `getState` is\n * the sanctioned escape hatch for \"I need to know the current\n * state to decide what to dispatch.\" Typical shape:\n *\n * ```ts\n * const handle = mountApp(root, MyApp)\n * container.addEventListener('drop', () => {\n * const { mode } = handle.getState() as AppState\n * if (mode === 'drag') handle.send({ type: 'commit' })\n * })\n * ```\n *\n * Throws after `dispose()` — stale reads are silent bugs; a thrown\n * error pinpoints the callsite that forgot to detach.\n *\n * The return type is `unknown` because `AppHandle` is state-type\n * erased at this boundary; cast to your app's state type at the\n * call site.\n */\n getState(): unknown\n /**\n * Register a listener called synchronously after every update cycle\n * completes. The listener receives the new state. Returns an\n * unsubscribe function. Safe after dispose (no-op; returns a no-op\n * unsubscribe). See agent spec §10.5 (state-update frames).\n */\n subscribe(listener: (state: unknown) => void): () => void\n}\n\n// ── Lifetime ─────────────────────────────────────────────────────────\n\nexport interface Lifetime {\n id: number\n parent: Lifetime | null\n children: Lifetime[]\n disposers: Array<() => void>\n bindings: Binding[]\n /** Per-item updaters — called directly by each() when item changes, bypassing Phase 2 */\n itemUpdaters: Array<() => void>\n /**\n * @internal dev-only back-reference to the owning ComponentInstance.\n * Populated on the root scope by `installDevTools` so `disposeLifetime`\n * can walk up the scope chain and emit DisposerEvents into the\n * instance's `_disposerLog`. Undefined in production.\n */\n instance?: ComponentInstance\n /**\n * @internal dev-only cause hint. Structural primitives (branch, each,\n * child, mountApp teardown) set this field immediately before calling\n * `disposeLifetime`; the dispose path reads it once to stamp the emitted\n * DisposerEvent. Left undefined, `disposeLifetime` falls back to\n * `'component-unmount'`. Undefined in production.\n */\n disposalCause?: DisposerEvent['cause']\n /** @internal dev-only — populated by structural primitives for scope-tree classification */\n _kind?: 'root' | 'show' | 'each' | 'branch' | 'scope' | 'child' | 'portal' | 'foreign'\n}\n\nexport interface LifetimeNode {\n scopeId: string\n kind: 'root' | 'show' | 'each' | 'branch' | 'scope' | 'child' | 'portal' | 'foreign'\n active: boolean\n children: LifetimeNode[]\n}\n\n// ── Binding ───────────────────────────────────────────────────────\n\n/**\n * Binding output kinds.\n *\n * `'text' | 'prop' | 'attr' | 'class' | 'style'` write their accessor's\n * return value to the DOM. `'effect'` is a side-effect-only watcher:\n * the accessor is invoked every Phase 2 tick its mask is hit, but its\n * return value is discarded and `applyBinding` is a no-op. Used by\n * `child()` to fire the prop-diff/propsMsg cascade on parent updates\n * without the cost of stringifying the returned props bag onto a\n * detached anchor node every render.\n */\nexport type BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style' | 'effect'\n\nexport interface Binding {\n mask: number\n accessor: (state: unknown) => unknown\n lastValue: unknown\n kind: BindingKind\n node: Node\n key?: string\n ownerLifetime: Lifetime\n perItem: boolean\n dead: boolean\n}\n\n// ── Structural Primitives ─────────────────────────────────────────\n\nexport interface TransitionOptions {\n enter?: (nodes: Node[]) => void | Promise<void>\n leave?: (nodes: Node[]) => void | Promise<void>\n onTransition?: (ctx: { entering: Node[]; leaving: Node[]; parent: Node }) => void | Promise<void>\n}\n\ninterface BranchOptionsBase extends TransitionOptions {\n /**\n * @internal Set by `show()` / `scope()` sugar when delegating to\n * `branch()`, so the dev-only disposer log can report `'show-hide'` /\n * `'scope-rebuild'` instead of the default `'branch-swap'` for the\n * leaving arm. User code should not set this directly.\n */\n __disposalCause?: DisposerEvent['cause']\n /** @internal Compiler-injected mask of paths read by `on`. */\n __mask?: number\n}\n\n/**\n * All cases covered by `cases` — no default allowed (would be dead code).\n */\ntype BranchOptionsExhaustive<S, M, K extends string> = BranchOptionsBase & {\n on: (s: S) => K\n cases: { [P in K]: (h: View<S, M>) => Node[] }\n default?: never\n}\n\n/**\n * `cases` may cover some but not all keys; `default` handles the rest.\n */\ntype BranchOptionsNonExhaustive<S, M, K extends string> = BranchOptionsBase & {\n on: (s: S) => K\n cases?: { [P in K]?: (h: View<S, M>) => Node[] }\n default: (h: View<S, M>) => Node[]\n}\n\n/**\n * `on` returns a wide `string` — exhaustiveness cannot be verified at\n * compile time (the key domain is infinite). Lenient: `default` is\n * optional so existing call sites that predate exhaustiveness typing\n * continue to compile. Authors who want the gate opt in by narrowing\n * `on`'s return type to a literal union.\n */\ntype BranchOptionsWide<S, M> = BranchOptionsBase & {\n on: (s: S) => string\n cases?: Record<string, (h: View<S, M>) => Node[]>\n default?: (h: View<S, M>) => Node[]\n}\n\n/**\n * Options for `branch()`.\n *\n * When `on` returns a literal string union (e.g. `'idle' | 'loading'\n * | 'done'`), TypeScript enforces exhaustiveness: either every union\n * member has a case (and `default` is disallowed as unreachable), or\n * `default` is required to cover the remainder. When `on` returns a\n * wide `string`, `default` stays optional — exhaustiveness isn't\n * meaningful for an unbounded domain.\n *\n * `cases` is optional when `default` is present; `branch({ on, default })`\n * is the canonical dynamic-rebuild shape — `scope()` sugar wraps\n * exactly this form.\n */\nexport type BranchOptions<S, M = unknown, K extends string = string> = string extends K\n ? BranchOptionsWide<S, M>\n : BranchOptionsExhaustive<S, M, K> | BranchOptionsNonExhaustive<S, M, K>\n\nexport interface ShowOptions<S, M = unknown> extends TransitionOptions {\n when: (s: S) => boolean\n render: (h: View<S, M>) => Node[]\n fallback?: (h: View<S, M>) => Node[]\n}\n\n/**\n * Options for `scope()` — rebuilds a subtree when `on(state)` changes.\n *\n * Sugar over `branch({ on, cases: {}, default: render, __disposalCause: 'scope-rebuild' })`.\n * Use when the key is dynamic (e.g. an epoch counter bumped from the\n * outside) and you want a fresh arm — fresh lifetime, fresh bindings —\n * each time it changes. Combine with `sample()` inside `render` for a\n * one-shot current-state read.\n */\nexport interface ScopeOptions<S, M = unknown> extends TransitionOptions {\n on: (s: S) => string\n render: (h: View<S, M>) => Node[]\n /** @internal Compiler-injected mask of paths read by `on`. */\n __mask?: number\n}\n\n/**\n * Options for `each()`. The inherited `enter` / `leave` callbacks fire **per item**:\n * `enter(nodes)` runs after an item's DOM is inserted (including initial mount);\n * `leave(nodes)` runs before an item's DOM is removed and may return a Promise\n * to hold the DOM until the animation resolves. Setting `leave` disables the\n * bulk-clear / full-replace fast paths.\n */\n/**\n * Per-item accessor. Two access forms:\n * - `item.field` — shorthand, returns accessor for `item.current[field]`\n * - `item(t => t.expr)` — computed expressions\n *\n * In both cases the returned value is a `() => V` accessor.\n * Invoke it (`item.field()`) to read the current value imperatively.\n */\nexport type ItemAccessor<T> = {\n <R>(selector: (t: T) => R): () => R\n} & {\n [K in keyof T]-?: () => T[K]\n} & {\n /**\n * Read the whole current item. Needed when T is a primitive (where the\n * field-map branch collapses to method names like `toString`) or when\n * you want to sample the entire record rather than a single field.\n *\n * Shadows any literal `current` field on T — if T has such a field,\n * use `item(r => r.current)` to disambiguate.\n */\n current(): T\n}\n\nexport interface EachOptions<S, T, M = unknown> extends TransitionOptions {\n items: (s: S) => T[]\n key: (item: T) => string | number\n render: (opts: {\n send: Send<M>\n item: ItemAccessor<T>\n /**\n * Plain (non-Proxy) accessor factory. Compiler-output path; avoid in user code\n * (use `item.field` / `item(fn)` — more ergonomic and bypasses Proxy when compiled).\n */\n acc: <R>(selector: (t: T) => R) => () => R\n index: () => number\n /**\n * The component's View bag (`h.text`, `h.show`, `h.branch`,\n * `h.scope`, `h.sample`, …). Each-render callers used to reach\n * for the top-level imports; the bag form is symmetric with how\n * `branch.cases[k]`, `show.render`, and `scope.render` receive it.\n * Both still work — destructure whichever is more convenient.\n */\n h: View<S, M>\n /** @internal Compiler-injected — entry reference for row factory */\n entry?: Record<string, unknown>\n }) => Node[]\n}\n\nexport interface PortalOptions {\n target: HTMLElement | string\n render: () => Node[]\n}\n\nexport interface ForeignOptions<S, M, T extends Record<string, unknown>, Instance> {\n /**\n * Construct the imperative instance. Can be async — return a\n * `Promise<Instance>` to defer construction until e.g. a dynamic\n * `import()` resolves. While the promise is pending:\n *\n * - The container element is in the DOM immediately (so layout\n * doesn't shift when the instance arrives).\n * - `sync` is NOT called. State changes are tracked by the\n * primitive and the latest props are applied as the initial\n * sync right after the promise resolves.\n * - If the owning scope disposes before the promise resolves,\n * `destroy(instance)` runs on resolution — no matter how long\n * the promise takes.\n */\n mount: (ctx: { container: HTMLElement; send: Send<M> }) => Instance | Promise<Instance>\n props: (s: S) => T\n sync:\n | ((ctx: { instance: Instance; props: T; prev: T | undefined }) => void)\n | {\n [K in keyof T]?: (ctx: { instance: Instance; value: T[K]; prev: T[K] | undefined }) => void\n }\n destroy: (instance: Instance) => void\n container?: { tag?: string; attrs?: Record<string, string> }\n}\n\nexport interface ChildOptions<S, ChildM> {\n // Type-erased via AnyComponentDef so callers can pass any concrete\n // ComponentDef<S, M, E, D> without a widening helper. The runtime\n // narrows the message shape via the user-supplied `onMsg` callback,\n // which keeps `ChildM` typed at this boundary even though the def\n // itself is opaque.\n def: AnyComponentDef\n key: string | number\n props: (s: S) => Record<string, unknown>\n onMsg?: (msg: ChildM) => unknown | null\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"update-loop.d.ts","sourceRoot":"","sources":["../src/update-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAA;AAmBtD,eAAO,MAAM,SAAS,QAAiB,CAAA;AAMvC,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,CAAC,GAAG,EAAE;IAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,GAClE,IAAI,CAEN;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACtE,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1B,KAAK,EAAE,CAAC,CAAA;IACR,cAAc,EAAE,CAAC,EAAE,CAAA;IACnB,YAAY,EAAE,QAAQ,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,OAAO,EAAE,CAAA;IACtB,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,kBAAkB,EAAE,OAAO,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,CAAC,EAAE,CAAA;IAChB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IACtB,MAAM,EAAE,WAAW,CAAA;IACnB,eAAe,EAAE,eAAe,CAAA;CAiCjC;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EACvD,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC7B,IAAI,CAAC,EAAE,CAAC,EACR,cAAc,GAAE,QAAQ,GAAG,IAAW,EACtC,GAAG,CAAC,EAAE,MAAM,GACX,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAgD5B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAI7E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAqCxF;AA0GD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAoCtB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAC5B,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAuDN"}
1
+ {"version":3,"file":"update-loop.d.ts","sourceRoot":"","sources":["../src/update-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAA;AAmBtD,eAAO,MAAM,SAAS,QAAiB,CAAA;AAMvC,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,CAAC,GAAG,EAAE;IAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,GAClE,IAAI,CAEN;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACtE,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1B,KAAK,EAAE,CAAC,CAAA;IACR,cAAc,EAAE,CAAC,EAAE,CAAA;IACnB,YAAY,EAAE,QAAQ,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,OAAO,EAAE,CAAA;IACtB,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,kBAAkB,EAAE,OAAO,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,CAAC,EAAE,CAAA;IAChB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;IACtB,MAAM,EAAE,WAAW,CAAA;IACnB,eAAe,EAAE,eAAe,CAAA;CAuCjC;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EACvD,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC7B,IAAI,CAAC,EAAE,CAAC,EACR,cAAc,GAAE,QAAQ,GAAG,IAAW,EACtC,GAAG,CAAC,EAAE,MAAM,GACX,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAgD5B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAI7E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAqCxF;AA4GD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAqCtB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAC5B,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAuDN"}
@@ -119,6 +119,7 @@ function processMessages(inst) {
119
119
  queue.length = 0;
120
120
  const [newState, effects] = handler(inst, msg);
121
121
  inst.state = newState;
122
+ inst._onCommit?.(newState);
122
123
  if (import.meta.env?.DEV) {
123
124
  inst.lastDirtyMask = FULL_MASK;
124
125
  inst.lastEffects = effects;
@@ -153,6 +154,7 @@ function processMessages(inst) {
153
154
  }
154
155
  queue.length = 0;
155
156
  inst.state = state;
157
+ inst._onCommit?.(state);
156
158
  // Dev-only bookkeeping — tests read lastDirtyMask/lastEffects, prod
157
159
  // doesn't. Gating here keeps two writes out of the prod hot path.
158
160
  if (import.meta.env?.DEV) {
@@ -208,6 +210,7 @@ function genericUpdate(inst, state, combinedDirty, bindings, bindingsBeforePhase
208
210
  export function _handleMsg(inst, msg, dirty, method) {
209
211
  const [s, e] = inst.def.update(inst.state, msg);
210
212
  inst.state = s;
213
+ inst._onCommit?.(s);
211
214
  if (method >= 0) {
212
215
  const bl = inst.structuralBlocks;
213
216
  for (let i = 0; i < bl.length; i++) {