{"version":3,"names":["createComponent","createMemo","createRenderEffect","createRoot","merge","untrack","memo","fn","createRenderer","opts","createElement","createTextNode","createSlotNode","isTextNode","replaceText","insertNode","removeNode","setProperty","getParentNode","getFirstChild","getNextSibling","insert","parent","accessor","marker","initial","undefined","insertExpression","current","value","unwrapArray","t","multi","String","node","cleanChildren","v","Array","isArray","array","normalizeIncomingArray","slice","length","replacement","appendNodes","reconcileArrays","replaceNode","normalized","unwrap","dynamic","i","len","item","push","at","arr","parentNode","a","b","bLength","aEnd","bEnd","aStart","bStart","after","map","has","Map","set","index","get","sequence","removed","inserted","el","hasParent","newNode","oldNode","spreadExpression","props","prevProps","skipChildren","children","ref","snapshot","prop","newProps","render","code","element","disposer","dispose","spread","prev","setProp","name","mergeProps","effect","getter","use","arg"],"sources":["universal.ts"],"sourcesContent":["/**\n * Universal reconciler for Solid custom renderers.\n *\n * Vendored from OpenTUI (MIT): https://github.com/miunau/opentui\n * packages/solid/src/renderer/universal.js\n *\n * Rewritten for Solid 2.0's two-phase createRenderEffect(compute, apply):\n *   - Reactive reads (signal access) happen in compute (tracked)\n *   - Tree mutations (insertNode, removeNode, etc.) happen in apply (untracked)\n *   - No accidental dependency tracking from mutation side-effects\n *   - mergeProps -> merge\n *\n * Converted to TypeScript with proper types.\n */\nimport {\n\tcreateComponent,\n\tcreateMemo,\n\tcreateRenderEffect,\n\tcreateRoot,\n\tmerge,\n\tuntrack,\n} from \"solid-js\";\n\nexport interface RendererOptions<N> {\n\tcreateElement(tag: string): N;\n\tcreateSlotNode(): N;\n\tcreateTextNode(value: string): N;\n\tgetFirstChild(node: N): N | undefined;\n\tgetNextSibling(node: N): N | undefined;\n\tgetParentNode(node: N): N | undefined;\n\tinsertNode(parent: N, node: N, anchor?: N): void;\n\tisTextNode(node: N): boolean;\n\tremoveNode(parent: N, node: N): void;\n\treplaceText(textNode: N, value: string): void;\n\tsetProperty<T>(node: N, name: string, value: T, prev?: T): void;\n}\n\nexport interface Renderer<N> {\n\t// biome-ignore lint: matches solid-js's createComponent signature\n\tcreateComponent<T extends Record<string, any>>(\n\t\tComp: (props: T) => unknown,\n\t\tprops: T,\n\t): unknown;\n\tcreateElement(tag: string): N;\n\tcreateTextNode(value: string): N;\n\teffect: typeof createRenderEffect;\n\tinsert(\n\t\tparent: N,\n\t\taccessor: (() => unknown) | unknown,\n\t\tmarker?: N | null,\n\t\tinitial?: unknown,\n\t): void;\n\tinsertNode(parent: N, node: N, anchor?: N): void;\n\tmemo<T>(fn: () => T, equal: boolean): () => T;\n\tmergeProps: typeof merge;\n\tref(getter: () => unknown, node: N): void;\n\trender(code: () => unknown, node: N): () => void;\n\tsetProp<T>(node: N, name: string, value: T, prev?: T): T;\n\tspread(\n\t\tnode: N,\n\t\taccessor: (() => unknown) | unknown,\n\t\tskipChildren?: boolean,\n\t): void;\n\tuse<A, T>(fn: (element: N, arg: A) => T, element: N, arg: A): T;\n}\n\n// Internal value type — the reconciler handles strings, numbers, arrays,\n// functions, nodes, null, undefined, and booleans.\ntype Val = unknown;\n\nconst memo = <T>(fn: () => T) => createMemo(() => fn());\n\nexport function createRenderer<N>(opts: RendererOptions<N>): Renderer<N> {\n\tconst {\n\t\tcreateElement,\n\t\tcreateTextNode,\n\t\tcreateSlotNode,\n\t\tisTextNode,\n\t\treplaceText,\n\t\tinsertNode,\n\t\tremoveNode,\n\t\tsetProperty,\n\t\tgetParentNode,\n\t\tgetFirstChild,\n\t\tgetNextSibling,\n\t} = opts;\n\n\tfunction insert(parent: N, accessor: Val, marker?: N | null, initial?: Val) {\n\t\tif (marker !== undefined && !initial) initial = [];\n\t\tif (typeof accessor !== \"function\")\n\t\t\treturn insertExpression(parent, accessor, initial, marker);\n\t\tlet current = initial;\n\t\tcreateRenderEffect(\n\t\t\t() => (accessor as () => Val)(),\n\t\t\t(value: Val) => {\n\t\t\t\tcurrent = insertExpression(parent, value, current, marker);\n\t\t\t},\n\t\t);\n\t}\n\n\tfunction insertExpression(\n\t\tparent: N,\n\t\tvalue: Val,\n\t\tcurrent: Val,\n\t\tmarker?: N | null,\n\t\tunwrapArray?: boolean,\n\t): Val {\n\t\twhile (typeof current === \"function\") current = (current as () => Val)();\n\t\tif (value === current) return current;\n\t\tconst t = typeof value;\n\t\tconst multi = marker !== undefined;\n\t\tif (t === \"string\" || t === \"number\") {\n\t\t\tif (t === \"number\") value = String(value);\n\t\t\tif (multi) {\n\t\t\t\tlet node = (current as N[])[0];\n\t\t\t\tif (node && isTextNode(node)) {\n\t\t\t\t\treplaceText(node, value as string);\n\t\t\t\t} else node = createTextNode(value as string);\n\t\t\t\tcurrent = cleanChildren(parent, current as N[], marker, node);\n\t\t\t} else {\n\t\t\t\tif (current !== \"\" && typeof current === \"string\") {\n\t\t\t\t\tcurrent = value;\n\t\t\t\t\treplaceText(getFirstChild(parent) as N, current as string);\n\t\t\t\t} else {\n\t\t\t\t\tcleanChildren(\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\tcurrent,\n\t\t\t\t\t\tmarker,\n\t\t\t\t\t\tcreateTextNode(value as string),\n\t\t\t\t\t);\n\t\t\t\t\tcurrent = value;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (value == null || t === \"boolean\") {\n\t\t\tcurrent = cleanChildren(parent, current, marker);\n\t\t} else if (t === \"function\") {\n\t\t\tcreateRenderEffect(\n\t\t\t\t() => {\n\t\t\t\t\tlet v: Val = (value as () => Val)();\n\t\t\t\t\twhile (typeof v === \"function\") v = (v as () => Val)();\n\t\t\t\t\treturn v;\n\t\t\t\t},\n\t\t\t\t(v: Val) => {\n\t\t\t\t\tcurrent = insertExpression(parent, v, current, marker);\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn () => current;\n\t\t} else if (Array.isArray(value)) {\n\t\t\tconst array: N[] = [];\n\t\t\tif (normalizeIncomingArray(array, value, unwrapArray)) {\n\t\t\t\tcreateRenderEffect(\n\t\t\t\t\t() => array.slice(),\n\t\t\t\t\t() => {\n\t\t\t\t\t\tcurrent = insertExpression(parent, array, current, marker, true);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn () => current;\n\t\t\t}\n\t\t\tif (array.length === 0) {\n\t\t\t\tconst replacement = cleanChildren(parent, current, marker);\n\t\t\t\tif (multi) {\n\t\t\t\t\tcurrent = replacement;\n\t\t\t\t\treturn current;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (Array.isArray(current)) {\n\t\t\t\t\tif (current.length === 0) {\n\t\t\t\t\t\tappendNodes(parent, array, marker);\n\t\t\t\t\t} else reconcileArrays(parent, current as N[], array);\n\t\t\t\t} else if (current == null || current === \"\") {\n\t\t\t\t\tappendNodes(parent, array);\n\t\t\t\t} else {\n\t\t\t\t\treconcileArrays(\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\t(multi && (current as N[])) || [getFirstChild(parent) as N],\n\t\t\t\t\t\tarray,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrent = array;\n\t\t} else {\n\t\t\tif (Array.isArray(current)) {\n\t\t\t\tif (multi) {\n\t\t\t\t\tcurrent = cleanChildren(parent, current, marker, value as N);\n\t\t\t\t\treturn current;\n\t\t\t\t}\n\t\t\t\tcleanChildren(parent, current, null, value as N);\n\t\t\t} else if (current == null || current === \"\" || !getFirstChild(parent)) {\n\t\t\t\tinsertNode(parent, value as N);\n\t\t\t} else replaceNode(parent, value as N, getFirstChild(parent) as N);\n\t\t\tcurrent = value;\n\t\t}\n\t\treturn current;\n\t}\n\n\tfunction normalizeIncomingArray(\n\t\tnormalized: N[],\n\t\tarray: Val[],\n\t\tunwrap?: boolean,\n\t): boolean {\n\t\tlet dynamic = false;\n\t\tfor (let i = 0, len = array.length; i < len; i++) {\n\t\t\tlet item: Val = array[i];\n\t\t\tif (item == null || item === true || item === false) {\n\t\t\t\t// skip\n\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\tdynamic = normalizeIncomingArray(normalized, item) || dynamic;\n\t\t\t} else if (typeof item === \"string\" || typeof item === \"number\") {\n\t\t\t\tnormalized.push(createTextNode(String(item)));\n\t\t\t} else if (typeof item === \"function\") {\n\t\t\t\tif (unwrap) {\n\t\t\t\t\twhile (typeof item === \"function\") item = (item as () => Val)();\n\t\t\t\t\tdynamic =\n\t\t\t\t\t\tnormalizeIncomingArray(\n\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\tArray.isArray(item) ? item : [item],\n\t\t\t\t\t\t) || dynamic;\n\t\t\t\t} else {\n\t\t\t\t\tnormalized.push(item as N);\n\t\t\t\t\tdynamic = true;\n\t\t\t\t}\n\t\t\t} else normalized.push(item as N);\n\t\t}\n\t\treturn dynamic;\n\t}\n\n\t// Array index access helper — indices in reconcileArrays are always\n\t// valid (guarded by loop bounds), avoids non-null assertions throughout.\n\tfunction at(arr: N[], i: number): N {\n\t\treturn arr[i] as N;\n\t}\n\n\tfunction reconcileArrays(parentNode: N, a: N[], b: N[]) {\n\t\tconst bLength = b.length;\n\t\tlet aEnd = a.length;\n\t\tlet bEnd = bLength;\n\t\tlet aStart = 0;\n\t\tlet bStart = 0;\n\t\tconst after = getNextSibling(at(a, aEnd - 1));\n\t\tlet map: Map<N, number> | null = null;\n\t\twhile (aStart < aEnd || bStart < bEnd) {\n\t\t\tif (a[aStart] === b[bStart]) {\n\t\t\t\taStart++;\n\t\t\t\tbStart++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\twhile (a[aEnd - 1] === b[bEnd - 1]) {\n\t\t\t\taEnd--;\n\t\t\t\tbEnd--;\n\t\t\t}\n\t\t\tif (aEnd === aStart) {\n\t\t\t\tconst node =\n\t\t\t\t\tbEnd < bLength\n\t\t\t\t\t\t? bStart\n\t\t\t\t\t\t\t? getNextSibling(at(b, bStart - 1))\n\t\t\t\t\t\t\t: b[bEnd - bStart]\n\t\t\t\t\t\t: after;\n\t\t\t\twhile (bStart < bEnd)\n\t\t\t\t\tinsertNode(parentNode, at(b, bStart++), node as N);\n\t\t\t} else if (bEnd === bStart) {\n\t\t\t\twhile (aStart < aEnd) {\n\t\t\t\t\tif (!map?.has(at(a, aStart))) removeNode(parentNode, at(a, aStart));\n\t\t\t\t\taStart++;\n\t\t\t\t}\n\t\t\t} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n\t\t\t\tconst node = getNextSibling(at(a, --aEnd));\n\t\t\t\tinsertNode(\n\t\t\t\t\tparentNode,\n\t\t\t\t\tat(b, bStart++),\n\t\t\t\t\tgetNextSibling(at(a, aStart++)) as N,\n\t\t\t\t);\n\t\t\t\tinsertNode(parentNode, at(b, --bEnd), node as N);\n\t\t\t\ta[aEnd] = at(b, bEnd);\n\t\t\t} else {\n\t\t\t\tif (!map) {\n\t\t\t\t\tmap = new Map();\n\t\t\t\t\tlet i = bStart;\n\t\t\t\t\twhile (i < bEnd) {\n\t\t\t\t\t\tmap.set(at(b, i), i);\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst index = map.get(at(a, aStart));\n\t\t\t\tif (index != null) {\n\t\t\t\t\tif (bStart < index && index < bEnd) {\n\t\t\t\t\t\tlet i = aStart;\n\t\t\t\t\t\tlet sequence = 1;\n\t\t\t\t\t\twhile (++i < aEnd && i < bEnd) {\n\t\t\t\t\t\t\tconst t = map.get(at(a, i));\n\t\t\t\t\t\t\tif (t == null || t !== index + sequence) break;\n\t\t\t\t\t\t\tsequence++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sequence > index - bStart) {\n\t\t\t\t\t\t\tconst node = at(a, aStart);\n\t\t\t\t\t\t\twhile (bStart < index)\n\t\t\t\t\t\t\t\tinsertNode(parentNode, at(b, bStart++), node);\n\t\t\t\t\t\t} else replaceNode(parentNode, at(b, bStart++), at(a, aStart++));\n\t\t\t\t\t} else aStart++;\n\t\t\t\t} else removeNode(parentNode, at(a, aStart++));\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction cleanChildren(\n\t\tparent: N,\n\t\tcurrent: Val,\n\t\tmarker?: N | null,\n\t\treplacement?: N,\n\t): Val {\n\t\tif (marker === undefined) {\n\t\t\tlet removed = getFirstChild(parent);\n\t\t\twhile (removed) {\n\t\t\t\tremoveNode(parent, removed);\n\t\t\t\tremoved = getFirstChild(parent);\n\t\t\t}\n\t\t\tif (replacement) insertNode(parent, replacement);\n\t\t\treturn replacement ?? \"\";\n\t\t}\n\t\tconst node = replacement || createSlotNode();\n\t\tif (Array.isArray(current) && current.length) {\n\t\t\tlet inserted = false;\n\t\t\tfor (let i = current.length - 1; i >= 0; i--) {\n\t\t\t\tconst el = current[i] as N;\n\t\t\t\tif (node !== el) {\n\t\t\t\t\tconst hasParent = getParentNode(el) === parent;\n\t\t\t\t\tif (!inserted && !i)\n\t\t\t\t\t\thasParent\n\t\t\t\t\t\t\t? replaceNode(parent, node, el)\n\t\t\t\t\t\t\t: insertNode(parent, node, marker as N);\n\t\t\t\t\telse if (hasParent) removeNode(parent, el);\n\t\t\t\t} else inserted = true;\n\t\t\t}\n\t\t} else insertNode(parent, node, marker as N);\n\t\treturn [node];\n\t}\n\n\tfunction appendNodes(parent: N, array: N[], marker?: N | null) {\n\t\tfor (let i = 0, len = array.length; i < len; i++)\n\t\t\tinsertNode(parent, at(array, i), marker as N | undefined);\n\t}\n\n\tfunction replaceNode(parent: N, newNode: N, oldNode: N) {\n\t\tinsertNode(parent, newNode, oldNode);\n\t\tremoveNode(parent, oldNode);\n\t}\n\n\ttype Props = Record<string, unknown>;\n\n\tfunction spreadExpression(\n\t\tnode: N,\n\t\tprops: Props,\n\t\tprevProps: Props = {},\n\t\tskipChildren?: boolean,\n\t): Props {\n\t\tif (!props) props = {};\n\t\tif (!skipChildren) {\n\t\t\tlet current = prevProps.children;\n\t\t\tcreateRenderEffect(\n\t\t\t\t() => props.children,\n\t\t\t\t(children: Val) => {\n\t\t\t\t\tcurrent = insertExpression(node, children, current);\n\t\t\t\t\tprevProps.children = current;\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tcreateRenderEffect(\n\t\t\t() => props.ref,\n\t\t\t(ref: Val) => (ref as ((n: N) => void) | undefined)?.(node),\n\t\t);\n\t\tcreateRenderEffect(\n\t\t\t() => {\n\t\t\t\tconst snapshot: Props = {};\n\t\t\t\tfor (const prop in props) {\n\t\t\t\t\tif (prop === \"children\" || prop === \"ref\") continue;\n\t\t\t\t\tsnapshot[prop] = props[prop];\n\t\t\t\t}\n\t\t\t\treturn snapshot;\n\t\t\t},\n\t\t\t(newProps: Props) => {\n\t\t\t\tfor (const prop in newProps) {\n\t\t\t\t\tconst value = newProps[prop];\n\t\t\t\t\tif (value === prevProps[prop]) continue;\n\t\t\t\t\tsetProperty(node, prop, value, prevProps[prop]);\n\t\t\t\t\tprevProps[prop] = value;\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t\treturn prevProps;\n\t}\n\n\treturn {\n\t\trender(code: () => unknown, element: N) {\n\t\t\tlet disposer: (() => void) | undefined;\n\t\t\tcreateRoot((dispose) => {\n\t\t\t\tdisposer = dispose;\n\t\t\t\tinsert(element, code());\n\t\t\t});\n\t\t\treturn disposer as unknown as () => void;\n\t\t},\n\t\tinsert,\n\t\tspread(node: N, accessor: Val, skipChildren?: boolean) {\n\t\t\tif (typeof accessor === \"function\") {\n\t\t\t\tlet prev: Props | undefined;\n\t\t\t\tcreateRenderEffect(\n\t\t\t\t\t() => (accessor as () => Props)(),\n\t\t\t\t\t(props: Props) => {\n\t\t\t\t\t\tprev = spreadExpression(node, props, prev, skipChildren);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} else spreadExpression(node, accessor as Props, undefined, skipChildren);\n\t\t},\n\t\tcreateElement,\n\t\tcreateTextNode,\n\t\tinsertNode,\n\t\tsetProp<T>(node: N, name: string, value: T, prev?: T): T {\n\t\t\tsetProperty(node, name, value, prev);\n\t\t\treturn value;\n\t\t},\n\t\tmergeProps: merge,\n\t\teffect: createRenderEffect,\n\t\tmemo,\n\t\tcreateComponent,\n\t\tref(getter: () => unknown, node: N) {\n\t\t\tconst ref = getter();\n\t\t\tif (typeof ref === \"function\") {\n\t\t\t\t(ref as (n: N) => void)(node);\n\t\t\t}\n\t\t},\n\t\tuse<A, T>(fn: (element: N, arg: A) => T, element: N, arg: A): T {\n\t\t\treturn untrack(() => fn(element, arg));\n\t\t},\n\t};\n}\n"],"mappings":"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","ignoreList":[]}