{"version":3,"file":"index.mjs","sources":["../src/html.ts"],"sourcesContent":["import { watch } from './reactive';\nimport { isChunk, isTpl, swapCleanupCollector } from './common';\nimport { setAttr } from './dom';\nimport { adoptCapturedChunk, getHydrationCapture, registerHydrationHook, } from './hydration';\nimport { createPropsProxy, isCmp, } from './component';\nimport { createExpressionBlock, expressionPool, onExpressionUpdate, releaseExpressions, writeExpressions, } from './expressions';\nconst eventBindingsKey = Symbol();\nlet bindingStackPos = -1;\nconst bindingStack = [];\nconst nodeStack = [];\nconst delimiter = '¤';\nconst delimiterComment = `<!--${delimiter}-->`;\nconst initialChunkPoolSize = 1024;\nconst chunkMemo = new WeakMap();\nconst chunkMemoByRef = new WeakMap();\nconst staleById = new Map();\nconst staleBySignature = new Map();\nlet chunkPoolHead;\nlet renderedMark = 0;\ngrowChunkPool(initialChunkPoolSize);\nfunction moveDOMRef(ref, parent, before) {\n    let node = ref.f;\n    if (!parent || !node)\n        return;\n    const last = ref.l;\n    while (true) {\n        const next = node === last ? null : node.nextSibling;\n        parent.insertBefore(node, before || null);\n        if (!next)\n            return;\n        node = next;\n    }\n}\nfunction canSyncTemplateChunk(template, chunk) {\n    return chunk.g === getChunkProto(template).g;\n}\nfunction getChunkProto(template) {\n    const cached = template._p;\n    if (cached)\n        return cached;\n    return (template._p = resolveChunkProto(template._s));\n}\nfunction resolveChunkProto(rawStrings, svg) {\n    const doc = document;\n    let memoByRef = svg ? undefined : chunkMemoByRef.get(rawStrings);\n    const cachedByRef = memoByRef?.get(doc);\n    if (cachedByRef)\n        return cachedByRef;\n    const signature = rawStrings.join(delimiterComment);\n    const cacheKey = svg ? `${delimiter}${signature}` : signature;\n    let signatureMemo = chunkMemo.get(doc);\n    if (!signatureMemo) {\n        signatureMemo = {};\n        chunkMemo.set(doc, signatureMemo);\n    }\n    const cached = signatureMemo[cacheKey];\n    if (cached) {\n        if (!svg) {\n            memoByRef ??= new WeakMap();\n            memoByRef.set(doc, cached);\n            chunkMemoByRef.set(rawStrings, memoByRef);\n        }\n        return cached;\n    }\n    const template = document.createElement('template');\n    if (svg) {\n        template.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\">${signature}</svg>`;\n        const root = template.content.firstChild;\n        if (root) {\n            const content = template.content;\n            while (root.firstChild)\n                content.appendChild(root.firstChild);\n            content.removeChild(root);\n        }\n    }\n    else {\n        template.innerHTML = signature;\n    }\n    const paths = createPaths(template.content);\n    normalizeNodePlaceholders(template.content);\n    const expressions = rawStrings.length - 1;\n    let count = 0;\n    for (let i = 0; i < paths[0].length;) {\n        i += (paths[0][i + 1] ?? 0) + 3;\n        count++;\n    }\n    if (count !== expressions) {\n        throw Error('Invalid HTML position');\n    }\n    const created = {\n        template,\n        paths,\n        g: cacheKey,\n        expressions,\n    };\n    if (!svg) {\n        memoByRef ??= new WeakMap();\n        memoByRef.set(doc, created);\n        chunkMemoByRef.set(rawStrings, memoByRef);\n    }\n    signatureMemo[cacheKey] = created;\n    return created;\n}\nfunction syncTemplateToChunk(template, chunk, mounted = false) {\n    if (chunk._t === template) {\n        chunk.k = template._k;\n        chunk.i = template._i;\n        template._h = chunk;\n        template._m = mounted;\n        return;\n    }\n    if (chunk._t && chunk._t !== template) {\n        const current = chunk._t;\n        if (current._h === chunk) {\n            current._m = false;\n            current._h = undefined;\n        }\n    }\n    chunk._t = template;\n    chunk.k = template._k;\n    chunk.i = template._i;\n    template._h = chunk;\n    template._m = mounted;\n    writeExpressions(template._a, chunk.e);\n}\nfunction releaseTemplate(chunk) {\n    const template = chunk._t;\n    if (template._h === chunk) {\n        template._m = false;\n        template._h = undefined;\n    }\n}\nfunction growChunkPool(size) {\n    let head;\n    let tail;\n    for (let i = 0; i < size; i++) {\n        const chunk = {\n            paths: [[], []],\n            dom: null,\n            ref: { f: null, l: null },\n            _t: null,\n            e: -1,\n            g: '',\n            b: false,\n            r: true,\n            st: false,\n            u: null,\n            v: null,\n            s: undefined,\n            k: undefined,\n            i: undefined,\n            bkn: undefined,\n            next: undefined,\n        };\n        if (tail)\n            tail.next = chunk;\n        else\n            head = chunk;\n        tail = chunk;\n    }\n    if (tail)\n        tail.next = chunkPoolHead;\n    chunkPoolHead = head;\n}\nfunction freeChunk(chunk) {\n    chunk.next = chunkPoolHead;\n    chunkPoolHead = chunk;\n}\nfunction configureChunk(chunk, proto, template) {\n    chunk.paths = proto.paths;\n    chunk.g = proto.g;\n    chunk.dom = proto.template.content.cloneNode(true);\n    chunk.ref.f = chunk.dom.firstChild;\n    chunk.ref.l = chunk.dom.lastChild;\n    chunk.e = createExpressionBlock(proto.expressions);\n    chunk.b = chunk.st = false;\n    chunk.r = true;\n    chunk.u = chunk.v = null;\n    chunk.s = chunk.bkn = undefined;\n    syncTemplateToChunk(template, chunk);\n}\nfunction acquireChunk(template) {\n    const proto = getChunkProto(template);\n    const exact = staleById.get(template._i);\n    if (exact) {\n        if (exact.g !== proto.g)\n            throw Error('shape mismatch');\n        if (exact.r) {\n            removeStaleChunk(exact);\n            syncTemplateToChunk(template, exact);\n            return exact;\n        }\n    }\n    const bucket = staleBySignature.get(proto.g);\n    const reused = bucket?.h;\n    if (reused) {\n        removeStaleChunk(reused);\n        syncTemplateToChunk(template, reused);\n        return reused;\n    }\n    if (!chunkPoolHead)\n        growChunkPool(initialChunkPoolSize);\n    const chunk = chunkPoolHead;\n    chunkPoolHead = chunk.next;\n    chunk.next = undefined;\n    configureChunk(chunk, proto, template);\n    return chunk;\n}\nfunction removeStaleChunk(chunk) {\n    if (!chunk.st)\n        return;\n    const bucket = staleBySignature.get(chunk.g);\n    if (bucket) {\n        let previous;\n        let current = bucket.h;\n        while (current && current !== chunk) {\n            previous = current;\n            current = current.bkn;\n        }\n        if (current) {\n            if (previous)\n                previous.bkn = current.bkn;\n            else\n                bucket.h = current.bkn;\n            if (!bucket.h)\n                staleBySignature.delete(chunk.g);\n        }\n    }\n    if (chunk.i !== undefined && staleById.get(chunk.i) === chunk) {\n        staleById.delete(chunk.i);\n    }\n    chunk.st = false;\n    chunk.bkn = undefined;\n}\nfunction dispatchChunkEvent(evt) {\n    const binding = this[eventBindingsKey]?.[evt.type];\n    if (!binding)\n        return;\n    const chunk = binding.c;\n    if (!chunk._t._m)\n        return;\n    expressionPool[binding.p]?.(evt);\n}\nfunction getRenderableKey(renderable) {\n    return (isCmp(renderable)\n        ? renderable.k\n        : renderable._k);\n}\nexport function html(strings, ...expSlots) {\n    const template = ((el) => renderTemplate(template, el));\n    template.isT = true;\n    template._a = expSlots;\n    template._c = ensureChunk;\n    template._m = false;\n    template._s = strings;\n    template.key = setTemplateKey;\n    template.id = setTemplateId;\n    return template;\n}\nexport function svg(strings, ...expSlots) {\n    const template = html(strings, ...expSlots);\n    template._p = resolveChunkProto(strings, true);\n    return template;\n}\nfunction ensureChunk() {\n    let chunk = this._h;\n    if (!chunk) {\n        chunk = acquireChunk(this);\n        this._h = chunk;\n    }\n    return chunk;\n}\nfunction setTemplateKey(key) {\n    this._k = key;\n    if (this._h)\n        this._h.k = key;\n    return this;\n}\nfunction setTemplateId(id) {\n    this._i = id;\n    if (this._h)\n        this._h.i = id;\n    return this;\n}\nfunction renderTemplate(template, el) {\n    const chunk = template._c();\n    if (!template._m) {\n        template._m = true;\n        if (!chunk.b) {\n            return createBindings(chunk, el);\n        }\n        moveDOMRef(chunk.ref, el ?? chunk.dom);\n        return el ?? chunk.dom;\n    }\n    moveDOMRef(chunk.ref, chunk.dom);\n    return el ? el.appendChild(chunk.dom) : chunk.dom;\n}\nfunction createBindings(chunk, el) {\n    const expressionPointer = chunk.e;\n    const totalPaths = expressionPool[expressionPointer];\n    const [pathTape, attrNames] = chunk.paths;\n    const stackStart = bindingStackPos + 1;\n    let tapePos = 0;\n    nodeStack[0] = chunk.dom;\n    for (let i = 0; i < totalPaths; i++) {\n        const sharedDepth = pathTape[tapePos++];\n        let remaining = pathTape[tapePos++];\n        let depth = sharedDepth;\n        let node = nodeStack[depth];\n        while (remaining--) {\n            node = node.childNodes[pathTape[tapePos++]];\n            nodeStack[++depth] = node;\n        }\n        bindingStack[++bindingStackPos] = node;\n        bindingStack[++bindingStackPos] = pathTape[tapePos++];\n    }\n    const stackEnd = bindingStackPos;\n    for (let s = stackStart, e = expressionPointer + 1; s < stackEnd; s++, e++) {\n        const node = bindingStack[s];\n        const segment = bindingStack[++s];\n        if (segment)\n            createAttrBinding(node, attrNames[segment - 1], e, chunk);\n        else\n            createNodeBinding(node, e, chunk);\n    }\n    bindingStack.length = stackStart;\n    bindingStackPos = stackStart - 1;\n    chunk.b = true;\n    return el ? el.appendChild(chunk.dom) && el : chunk.dom;\n}\nfunction createNodeBinding(node, expressionPointer, parentChunk) {\n    let fragment;\n    const expression = expressionPool[expressionPointer];\n    const capture = getHydrationCapture();\n    const textNode = node.nodeType === 3 ? node : null;\n    if (isCmp(expression) || isTpl(expression) || Array.isArray(expression)) {\n        parentChunk.r = false;\n        const render = createRenderFn(capture);\n        fragment = render(expression);\n        if (capture) {\n            registerHydrationHook(parentChunk, (map, visited) => {\n                render.adopt(map, visited);\n            });\n        }\n    }\n    else if (typeof expression === 'function') {\n        let target = textNode;\n        let render = null;\n        const [frag, stop] = watch(expressionPointer, (value) => {\n            if (!render) {\n                if (isCmp(value) || isTpl(value) || Array.isArray(value)) {\n                    parentChunk.r = false;\n                    render = createRenderFn(capture);\n                    const next = render(value);\n                    if (target) {\n                        target.parentNode?.replaceChild(next, target);\n                        target = null;\n                    }\n                    return next;\n                }\n                if (!target)\n                    target = document.createTextNode('');\n                const next = renderText(value);\n                if (target.nodeValue !== next)\n                    target.nodeValue = next;\n                return target;\n            }\n            return render(value);\n        });\n        (parentChunk.u ??= []).push(stop);\n        fragment = frag;\n        if (capture) {\n            registerHydrationHook(parentChunk, (map, visited) => {\n                if (target) {\n                    const adopted = map.get(target);\n                    if (adopted)\n                        target = adopted;\n                }\n                render?.adopt(map, visited);\n            });\n        }\n    }\n    else {\n        let target = textNode ?? document.createTextNode('');\n        target.data = renderText(expression);\n        fragment = target;\n        if (capture) {\n            onExpressionUpdate(expressionPointer, (value) => (target.data = renderText(value)));\n            registerHydrationHook(parentChunk, (map) => {\n                const adopted = map.get(target);\n                if (adopted)\n                    target = adopted;\n            });\n        }\n        else {\n            onExpressionUpdate(expressionPointer, target);\n        }\n    }\n    if (node === parentChunk.ref.f || node === parentChunk.ref.l) {\n        const last = fragment.nodeType === 11\n            ? fragment.lastChild\n            : fragment;\n        if (node === parentChunk.ref.f) {\n            parentChunk.ref.f =\n                fragment.nodeType === 11\n                    ? fragment.firstChild\n                    : fragment;\n        }\n        if (node === parentChunk.ref.l)\n            parentChunk.ref.l = last;\n    }\n    if (fragment !== node)\n        node.parentNode?.replaceChild(fragment, node);\n}\nfunction createAttrBinding(node, attrName, expressionPointer, parentChunk) {\n    if (node.nodeType !== 1)\n        return;\n    let target = node;\n    const expression = expressionPool[expressionPointer];\n    const capture = getHydrationCapture();\n    if (attrName[0] === '@') {\n        const event = attrName.slice(1);\n        const bindings = (target[eventBindingsKey] ??= {});\n        bindings[event] = { c: parentChunk, p: expressionPointer };\n        const record = [target, event];\n        target.addEventListener(event, dispatchChunkEvent);\n        target.removeAttribute(attrName);\n        (parentChunk.v ??= []).push(record);\n        if (capture) {\n            registerHydrationHook(parentChunk, (map) => {\n                const adopted = map.get(target);\n                if (!adopted)\n                    return;\n                const previousTarget = target;\n                const previousBindings = previousTarget[eventBindingsKey];\n                if (previousBindings) {\n                    delete previousBindings[event];\n                    let hasBindings = false;\n                    for (const key in previousBindings) {\n                        hasBindings = true;\n                        break;\n                    }\n                    if (!hasBindings)\n                        delete previousTarget[eventBindingsKey];\n                }\n                target.removeEventListener(event, dispatchChunkEvent);\n                target = adopted;\n                record[0] = target;\n                const nextBindings = (target[eventBindingsKey] ??= {});\n                nextBindings[event] = { c: parentChunk, p: expressionPointer };\n                target.addEventListener(event, dispatchChunkEvent);\n                target.removeAttribute(attrName);\n            });\n        }\n    }\n    else if (typeof expression === 'function' && !isTpl(expression)) {\n        const [, stop] = watch(expressionPointer, (value) => setAttr(target, attrName, value));\n        (parentChunk.u ??= []).push(stop);\n        if (capture) {\n            registerHydrationHook(parentChunk, (map) => {\n                const adopted = map.get(target);\n                if (adopted)\n                    target = adopted;\n            });\n        }\n    }\n    else {\n        setAttr(target, attrName, expression);\n        if (capture) {\n            onExpressionUpdate(expressionPointer, (value) => setAttr(target, attrName, value));\n        }\n        else {\n            onExpressionUpdate(expressionPointer, target, attrName);\n        }\n    }\n}\nfunction createRenderFn(capture) {\n    let previous;\n    let keyedChunks = Object.create(null);\n    const render = function render(renderable) {\n        if (!previous) {\n            if (isCmp(renderable)) {\n                const [fragment, chunk] = renderComponent(renderable);\n                previous = mountChunkFragment(fragment, chunk);\n                return fragment;\n            }\n            if (isTpl(renderable)) {\n                const fragment = renderable();\n                previous = mountChunkFragment(fragment, renderable._h);\n                return fragment;\n            }\n            if (Array.isArray(renderable)) {\n                const [fragment, rendered] = renderList(renderable);\n                previous = rendered;\n                return fragment;\n            }\n            return (previous = document.createTextNode(renderText(renderable)));\n        }\n        if (Array.isArray(renderable)) {\n            if (!Array.isArray(previous)) {\n                const [fragment, nextList] = renderList(renderable);\n                getNode(previous).after(fragment);\n                forgetChunk(previous);\n                unmount(previous);\n                previous = nextList;\n            }\n            else {\n                let i = 0;\n                const renderableLength = renderable.length;\n                const previousLength = previous.length;\n                if (renderableLength &&\n                    previousLength === 1 &&\n                    !isChunk(previous[0]) &&\n                    !previous[0].data) {\n                    const [fragment, rendered] = renderList(renderable);\n                    previous[0].replaceWith(fragment);\n                    previous = rendered;\n                    return;\n                }\n                if (renderableLength === previousLength) {\n                    const renderedList = new Array(renderableLength);\n                    for (; i < renderableLength; i++) {\n                        const item = renderable[i];\n                        if ((isCmp(item) && item.k !== undefined) || (isTpl(item) && item._k !== undefined)) {\n                            i = -1;\n                            break;\n                        }\n                        const prev = previous[i];\n                        if (isTpl(item) &&\n                            isChunk(prev) &&\n                            prev._t === item &&\n                            item._h === prev &&\n                            item._m) {\n                            renderedList[i] = prev;\n                            continue;\n                        }\n                        if (isTpl(item) && isChunk(prev)) {\n                            const template = item;\n                            const proto = template._p ?? getChunkProto(template);\n                            if (prev.g === proto.g) {\n                                syncTemplateToChunk(template, prev, true);\n                                renderedList[i] = prev;\n                                continue;\n                            }\n                        }\n                        renderedList[i] = patch(item, prev);\n                    }\n                    if (i === renderableLength) {\n                        previous = renderedList;\n                        return;\n                    }\n                    i = 0;\n                }\n                const keyedList = patchKeyedList(renderable, previous);\n                if (keyedList) {\n                    previous = keyedList;\n                    return;\n                }\n                if (renderableLength > previousLength && previousLength) {\n                    for (; i < previousLength; i++) {\n                        const item = renderable[i];\n                        const prev = previous[i];\n                        if (isTpl(item) &&\n                            isChunk(prev) &&\n                            prev._t === item &&\n                            item._h === prev &&\n                            item._m) {\n                            continue;\n                        }\n                        i = -1;\n                        break;\n                    }\n                    if (i === previousLength) {\n                        const fragment = document.createDocumentFragment();\n                        const renderedList = previous.slice();\n                        for (i = previousLength; i < renderableLength; i++) {\n                            renderedList[i] = mountItem(renderable[i], fragment);\n                        }\n                        getNode(previous[previousLength - 1]).after(fragment);\n                        previous = renderedList;\n                        return;\n                    }\n                    i = 0;\n                }\n                let anchor;\n                const renderedList = [];\n                const mark = ++renderedMark;\n                const updaterFrag = renderableLength > previousLength\n                    ? document.createDocumentFragment()\n                    : null;\n                for (; i < renderableLength; i++) {\n                    let item = renderable[i];\n                    const prev = previous[i];\n                    let key;\n                    if (isTpl(item) &&\n                        (key = item._k) !== undefined &&\n                        key in keyedChunks) {\n                        const keyedChunk = keyedChunks[key];\n                        if (canSyncTemplateChunk(item, keyedChunk)) {\n                            syncTemplateToChunk(item, keyedChunk, true);\n                            item = keyedChunk._t;\n                        }\n                    }\n                    if (i > previousLength - 1) {\n                        renderedList[i] = mountItem(item, updaterFrag);\n                        continue;\n                    }\n                    if (isTpl(item) &&\n                        isChunk(prev) &&\n                        prev._t === item &&\n                        item._h === prev &&\n                        item._m) {\n                        anchor = getNode(prev);\n                        renderedList[i] = prev;\n                        prev.mk = mark;\n                        continue;\n                    }\n                    const used = patch(item, prev, anchor);\n                    anchor = getNode(used);\n                    renderedList[i] = used;\n                    used.mk = mark;\n                }\n                if (!renderableLength) {\n                    const placeholder = (renderedList[0] = document.createTextNode(''));\n                    const sync = canSyncUnmount(previous);\n                    const detached = sync && replaceListWithPlaceholder(previous, placeholder);\n                    if (!detached)\n                        getNode(previous).after(placeholder);\n                    keyedChunks = Object.create(null);\n                    if (sync)\n                        removeUnmounted(previous, detached);\n                    else\n                        unmount(previous);\n                    previous = renderedList;\n                    return;\n                }\n                else if (renderableLength > previousLength) {\n                    anchor?.after(updaterFrag);\n                }\n                for (i = 0; i < previousLength; i++) {\n                    const stale = previous[i];\n                    if (stale.mk === mark)\n                        continue;\n                    forgetChunk(stale);\n                    unmount(stale);\n                }\n                previous = renderedList;\n            }\n        }\n        else {\n            if (Array.isArray(previous))\n                keyedChunks = Object.create(null);\n            previous = patch(renderable, previous);\n        }\n    };\n    render.adopt = capture\n        ? (map, visited) => {\n            previous = adoptRenderedValue(previous, capture, map, visited);\n        }\n        : () => { };\n    function renderList(renderable) {\n        const fragment = document.createDocumentFragment();\n        if (!renderable.length) {\n            const placeholder = document.createTextNode('');\n            fragment.appendChild(placeholder);\n            return [fragment, [placeholder]];\n        }\n        const renderedItems = new Array(renderable.length);\n        for (let i = 0; i < renderable.length; i++) {\n            renderedItems[i] = mountItem(renderable[i], fragment);\n        }\n        return [fragment, renderedItems];\n    }\n    function syncComponentChunk(renderable, chunk) {\n        if (chunk.s?.[1] !== renderable.h)\n            return false;\n        if (chunk.s[0] !== renderable.p)\n            chunk.s[0] = renderable.p;\n        if (chunk.s[2] !== renderable.e)\n            chunk.s[2] = renderable.e;\n        return true;\n    }\n    function syncKeyedRenderable(renderable, chunk) {\n        if (isCmp(renderable))\n            return syncComponentChunk(renderable, chunk);\n        if (!canSyncTemplateChunk(renderable, chunk))\n            return false;\n        syncTemplateToChunk(renderable, chunk, true);\n        return true;\n    }\n    function moveChunkIntoPlace(chunk, prev, anchor) {\n        if (anchor) {\n            moveDOMRef(chunk.ref, anchor.parentNode, anchor.nextSibling);\n            return;\n        }\n        const target = getNode(prev, undefined, true);\n        moveDOMRef(chunk.ref, target.parentNode, target);\n    }\n    function patchKeyedList(renderable, previousList) {\n        const renderableLength = renderable.length;\n        const previousLength = previousList.length;\n        if (!renderableLength) {\n            const placeholder = document.createTextNode('');\n            const sync = canSyncUnmount(previousList);\n            const detached = sync && replaceListWithPlaceholder(previousList, placeholder);\n            if (!detached)\n                getNode(previousList).after(placeholder);\n            keyedChunks = Object.create(null);\n            if (sync)\n                removeUnmounted(previousList, detached);\n            else\n                unmount(previousList);\n            return [placeholder];\n        }\n        const renderedList = new Array(renderableLength);\n        const parent = getNode(previousList[0]).parentNode;\n        if (!parent)\n            return null;\n        let sharedPrefix = 0;\n        const sharedPrefixKeys = Object.create(null);\n        for (; sharedPrefix < previousLength && sharedPrefix < renderableLength; sharedPrefix++) {\n            const rendered = previousList[sharedPrefix];\n            if (!isChunk(rendered) || rendered.k === undefined)\n                return null;\n            const item = renderable[sharedPrefix];\n            if (!isCmp(item) && !isTpl(item))\n                return null;\n            const key = getRenderableKey(item);\n            if (key === undefined || key !== rendered.k)\n                break;\n            sharedPrefixKeys[key] = 1;\n            if (!(isTpl(item) &&\n                rendered._t === item &&\n                item._h === rendered &&\n                item._m) &&\n                !syncKeyedRenderable(item, rendered)) {\n                return null;\n            }\n            renderedList[sharedPrefix] = rendered;\n        }\n        if (sharedPrefix === previousLength) {\n            if (sharedPrefix === renderableLength)\n                return renderedList;\n            const fragment = document.createDocumentFragment();\n            for (let i = sharedPrefix; i < renderableLength; i++) {\n                const item = renderable[i];\n                if (!isCmp(item) && !isTpl(item))\n                    return null;\n                const key = getRenderableKey(item);\n                if (key === undefined || key in sharedPrefixKeys)\n                    return null;\n                sharedPrefixKeys[key] = 1;\n                renderedList[i] = mountItem(item, fragment);\n            }\n            parent.insertBefore(fragment, previousLength\n                ? getNode(previousList[previousLength - 1]).nextSibling\n                : null);\n            return renderedList;\n        }\n        if (sharedPrefix === renderableLength) {\n            for (let i = sharedPrefix; i < previousLength; i++) {\n                const stale = previousList[i];\n                forgetChunk(stale);\n                unmount(stale);\n            }\n            return renderedList;\n        }\n        let oldStart = sharedPrefix;\n        let newStart = sharedPrefix;\n        let oldEnd = previousLength - 1;\n        let newEnd = renderableLength - 1;\n        while (oldStart <= oldEnd && newStart <= newEnd) {\n            const startChunk = previousList[oldStart];\n            const endChunk = previousList[oldEnd];\n            const startKey = startChunk.k;\n            const endKey = endChunk.k;\n            const nextStart = renderable[newStart];\n            const nextEnd = renderable[newEnd];\n            const nextStartKey = isCmp(nextStart) || isTpl(nextStart)\n                ? getRenderableKey(nextStart)\n                : undefined;\n            const nextEndKey = isCmp(nextEnd) || isTpl(nextEnd) ? getRenderableKey(nextEnd) : undefined;\n            if (nextStartKey === undefined || nextEndKey === undefined)\n                return null;\n            if (startKey === nextStartKey) {\n                if (!(isTpl(nextStart) &&\n                    startChunk._t === nextStart &&\n                    nextStart._h === startChunk &&\n                    nextStart._m) &&\n                    !syncKeyedRenderable(nextStart, startChunk)) {\n                    return null;\n                }\n                renderedList[newStart++] = startChunk;\n                oldStart++;\n                continue;\n            }\n            if (endKey === nextEndKey) {\n                if (!(isTpl(nextEnd) &&\n                    endChunk._t === nextEnd &&\n                    nextEnd._h === endChunk &&\n                    nextEnd._m) &&\n                    !syncKeyedRenderable(nextEnd, endChunk)) {\n                    return null;\n                }\n                renderedList[newEnd--] = endChunk;\n                oldEnd--;\n                continue;\n            }\n            if (startKey === nextEndKey) {\n                if (!(isTpl(nextEnd) &&\n                    startChunk._t === nextEnd &&\n                    nextEnd._h === startChunk &&\n                    nextEnd._m) &&\n                    !syncKeyedRenderable(nextEnd, startChunk)) {\n                    return null;\n                }\n                moveDOMRef(startChunk.ref, parent, getNode(endChunk).nextSibling);\n                renderedList[newEnd--] = startChunk;\n                oldStart++;\n                continue;\n            }\n            if (endKey === nextStartKey) {\n                if (!(isTpl(nextStart) &&\n                    endChunk._t === nextStart &&\n                    nextStart._h === endChunk &&\n                    nextStart._m) &&\n                    !syncKeyedRenderable(nextStart, endChunk)) {\n                    return null;\n                }\n                moveDOMRef(endChunk.ref, parent, getNode(startChunk, undefined, true));\n                renderedList[newStart++] = endChunk;\n                oldEnd--;\n                continue;\n            }\n            break;\n        }\n        if (newStart > newEnd) {\n            for (let i = oldStart; i <= oldEnd; i++) {\n                const stale = previousList[i];\n                forgetChunk(stale);\n                unmount(stale);\n            }\n            return renderedList;\n        }\n        if (oldStart > oldEnd) {\n            const fragment = document.createDocumentFragment();\n            for (let i = newStart; i <= newEnd; i++) {\n                const item = renderable[i];\n                if (!isCmp(item) && !isTpl(item))\n                    return null;\n                renderedList[i] = mountItem(item, fragment);\n            }\n            parent.insertBefore(fragment, newEnd + 1 < renderableLength\n                ? getNode(renderedList[newEnd + 1], undefined, true)\n                : null);\n            return renderedList;\n        }\n        const previousIndexByKey = Object.create(null);\n        for (let i = oldStart; i <= oldEnd; i++) {\n            const rendered = previousList[i];\n            if (!isChunk(rendered) || rendered.k === undefined)\n                return null;\n            const key = rendered.k;\n            if (key in previousIndexByKey)\n                return null;\n            previousIndexByKey[key] = i + 1;\n        }\n        const middleIndexByKey = Object.create(null);\n        let overlaps = 0;\n        for (let i = newStart; i <= newEnd; i++) {\n            const item = renderable[i];\n            const key = isCmp(item) || isTpl(item) ? getRenderableKey(item) : undefined;\n            if (key === undefined || key in middleIndexByKey)\n                return null;\n            middleIndexByKey[key] = i + 1;\n            if (key in previousIndexByKey)\n                overlaps++;\n        }\n        if (!overlaps) {\n            const first = getNode(previousList[oldStart], undefined, true);\n            const last = getNode(previousList[oldEnd]);\n            const fragment = document.createDocumentFragment();\n            for (let i = newStart; i <= newEnd; i++) {\n                const item = renderable[i];\n                if (!isCmp(item) && !isTpl(item))\n                    return null;\n                renderedList[i] = mountItem(item, fragment);\n            }\n            const parent = first.parentNode;\n            if (parent && first === parent.firstChild && last === parent.lastChild) {\n                parent.replaceChildren(fragment);\n            }\n            else {\n                const range = document.createRange();\n                range.setStartBefore(first);\n                range.setEndAfter(last);\n                range.deleteContents();\n                range.insertNode(fragment);\n            }\n            for (let i = oldStart; i <= oldEnd; i++) {\n                const stale = previousList[i];\n                forgetChunk(stale);\n                destroyChunk(stale, true);\n            }\n            return renderedList;\n        }\n        for (let i = oldStart; i <= oldEnd; i++) {\n            const stale = previousList[i];\n            const nextIndex = middleIndexByKey[stale.k];\n            if (nextIndex === undefined) {\n                forgetChunk(stale);\n                unmount(stale);\n                continue;\n            }\n            const item = renderable[nextIndex - 1];\n            if (!syncKeyedRenderable(item, stale))\n                return null;\n            renderedList[nextIndex - 1] = stale;\n        }\n        let before = newEnd + 1 < renderableLength\n            ? getNode(renderedList[newEnd + 1], undefined, true)\n            : getNode(previousList[previousLength - 1]).nextSibling;\n        for (let i = newEnd; i >= newStart; i--) {\n            const existing = renderedList[i];\n            if (!existing) {\n                const item = renderable[i];\n                if (!isCmp(item) && !isTpl(item))\n                    return null;\n                const fragment = document.createDocumentFragment();\n                const mounted = mountItem(item, fragment);\n                renderedList[i] = mounted;\n                parent.insertBefore(fragment, before);\n                before = getNode(mounted, undefined, true);\n                continue;\n            }\n            const start = getNode(existing, undefined, true);\n            if (start.parentNode !== parent || start.nextSibling !== before) {\n                moveDOMRef(existing.ref, parent, before);\n            }\n            before = start;\n        }\n        return renderedList;\n    }\n    function patch(renderable, prev, anchor) {\n        const nodeType = prev.nodeType ?? 0;\n        if (isCmp(renderable)) {\n            const key = renderable.k;\n            if (key !== undefined && key in keyedChunks) {\n                const keyedChunk = keyedChunks[key];\n                if (syncComponentChunk(renderable, keyedChunk)) {\n                    if (keyedChunk === prev)\n                        return prev;\n                    moveChunkIntoPlace(keyedChunk, prev, anchor);\n                    return keyedChunk;\n                }\n            }\n            else if (isChunk(prev) && syncComponentChunk(renderable, prev)) {\n                if (prev.k !== renderable.k) {\n                    forgetChunk(prev);\n                    prev.k = renderable.k;\n                    rememberKeyedChunk(prev);\n                }\n                return prev;\n            }\n            const [fragment, chunk] = renderComponent(renderable);\n            const mounted = mountChunkFragment(fragment, chunk);\n            getNode(prev, anchor).after(fragment);\n            forgetChunk(prev);\n            unmount(prev);\n            rememberKeyedChunk(chunk);\n            return mounted;\n        }\n        if (!isTpl(renderable) && nodeType === 3) {\n            const value = renderText(renderable);\n            if (prev.data !== value)\n                prev.data = value;\n            return prev;\n        }\n        if (isTpl(renderable)) {\n            const template = renderable;\n            const key = template._k;\n            if (key !== undefined && key in keyedChunks) {\n                const keyedChunk = keyedChunks[key];\n                if (canSyncTemplateChunk(template, keyedChunk)) {\n                    syncTemplateToChunk(template, keyedChunk, true);\n                    if (keyedChunk === prev)\n                        return prev;\n                    moveChunkIntoPlace(keyedChunk, prev, anchor);\n                    return keyedChunk;\n                }\n            }\n            const proto = getChunkProto(template);\n            if (isChunk(prev) && prev.g === proto.g) {\n                syncTemplateToChunk(template, prev, true);\n                return prev;\n            }\n            const fragment = renderable();\n            const chunk = template._h;\n            const mounted = mountChunkFragment(fragment, chunk);\n            getNode(prev, anchor).after(fragment);\n            forgetChunk(prev);\n            unmount(prev);\n            rememberKeyedChunk(chunk);\n            return mounted;\n        }\n        const text = document.createTextNode(renderText(renderable));\n        getNode(prev, anchor).after(text);\n        forgetChunk(prev);\n        unmount(prev);\n        return text;\n    }\n    function mountItem(item, fragment) {\n        if (isCmp(item)) {\n            const [inner, chunk] = renderComponent(item);\n            fragment.appendChild(inner);\n            rememberKeyedChunk(chunk);\n            return mountChunkFragment(fragment, chunk);\n        }\n        if (isTpl(item)) {\n            item(fragment);\n            const chunk = item._h;\n            rememberKeyedChunk(chunk);\n            return mountChunkFragment(fragment, chunk);\n        }\n        const node = document.createTextNode(renderText(item));\n        fragment.appendChild(node);\n        return node;\n    }\n    function mountChunkFragment(fragment, chunk) {\n        if (chunk.ref.f)\n            return chunk;\n        const placeholder = document.createTextNode('');\n        fragment.appendChild(placeholder);\n        return placeholder;\n    }\n    function rememberKeyedChunk(chunk) {\n        if (chunk.k !== undefined)\n            keyedChunks[chunk.k] = chunk;\n    }\n    function forgetChunk(item) {\n        if (isChunk(item) && item.k !== undefined && keyedChunks[item.k] === item) {\n            delete keyedChunks[item.k];\n        }\n    }\n    function renderComponent(renderable) {\n        const [props, emit, box] = createPropsProxy(renderable.p, renderable.h, renderable.e);\n        const cleanups = [];\n        const previousCollector = swapCleanupCollector(cleanups);\n        let template;\n        let fragment;\n        try {\n            template = renderable.h(props, emit);\n            fragment = template();\n        }\n        finally {\n            swapCleanupCollector(previousCollector);\n        }\n        const chunk = template._c();\n        if (cleanups.length) {\n            ;\n            (chunk.u ??= []).push(...cleanups);\n        }\n        chunk.r = false;\n        chunk.s = box;\n        chunk.k = renderable.k;\n        return [fragment, chunk];\n    }\n    return render;\n}\nlet unmountStack = [];\nfunction destroyChunk(chunk, detached = false) {\n    if (chunk.st)\n        removeStaleChunk(chunk);\n    releaseTemplate(chunk);\n    if (chunk.v) {\n        for (let i = 0; i < chunk.v.length; i++) {\n            const [target, event] = chunk.v[i];\n            const bindings = target[eventBindingsKey];\n            if (bindings) {\n                delete bindings[event];\n                let hasBindings = false;\n                for (const key in bindings) {\n                    hasBindings = true;\n                    break;\n                }\n                if (!hasBindings)\n                    delete target[eventBindingsKey];\n            }\n            target.removeEventListener(event, dispatchChunkEvent);\n        }\n    }\n    if (chunk.u) {\n        for (let i = 0; i < chunk.u.length; i++)\n            chunk.u[i]();\n        chunk.u = null;\n    }\n    if (chunk.e + 1) {\n        releaseExpressions(chunk.e);\n        chunk.e = -1;\n    }\n    let node = chunk.ref.f;\n    if (!detached && node) {\n        const last = chunk.ref.l;\n        if (node === last)\n            node.remove();\n        else {\n            while (node) {\n                const next = node === last ? null : node.nextSibling;\n                node.remove();\n                if (!next)\n                    break;\n                node = next;\n            }\n        }\n    }\n    chunk.dom.textContent = '';\n    chunk.ref.f = chunk.ref.l = null;\n    chunk.k = chunk.i = chunk.s = undefined;\n    chunk.u = chunk.v = null;\n    chunk.b = chunk.st = false;\n    chunk.r = true;\n    chunk.g = '';\n    freeChunk(chunk);\n}\nfunction recycleChunk(chunk, detached = false) {\n    if (!detached)\n        moveDOMRef(chunk.ref, chunk.dom);\n    releaseTemplate(chunk);\n    if (chunk.st || !chunk.r)\n        return;\n    chunk.st = true;\n    let bucket = staleBySignature.get(chunk.g);\n    if (!bucket) {\n        bucket = {};\n        staleBySignature.set(chunk.g, bucket);\n    }\n    chunk.bkn = bucket.h;\n    bucket.h = chunk;\n    if (chunk.i !== undefined)\n        staleById.set(chunk.i, chunk);\n}\nlet unmountQueued = false;\nfunction canSyncUnmount(chunk) {\n    for (let i = 0; i < chunk.length; i++) {\n        const item = chunk[i];\n        if (isChunk(item) && !item.r)\n            return false;\n    }\n    return true;\n}\nfunction replaceListWithPlaceholder(chunk, placeholder) {\n    if (!chunk.length)\n        return false;\n    const first = getNode(chunk[0], undefined, true);\n    const last = getNode(chunk[chunk.length - 1]);\n    const parent = first.parentNode;\n    if (!parent || first !== parent.firstChild || last !== parent.lastChild) {\n        return false;\n    }\n    parent.replaceChildren(placeholder);\n    return true;\n}\nfunction removeUnmounted(chunk, detached = false) {\n    if (isChunk(chunk)) {\n        if (chunk.r)\n            recycleChunk(chunk, detached);\n        else\n            destroyChunk(chunk, detached);\n        return;\n    }\n    if (Array.isArray(chunk)) {\n        if (!detached && chunk.length) {\n            const first = getNode(chunk[0], undefined, true);\n            const last = getNode(chunk[chunk.length - 1]);\n            const parent = first.parentNode;\n            if (parent) {\n                if (first === parent.firstChild && last === parent.lastChild) {\n                    parent.textContent = '';\n                }\n                else {\n                    const range = document.createRange();\n                    range.setStartBefore(first);\n                    range.setEndAfter(last);\n                    range.deleteContents();\n                }\n                detached = true;\n            }\n        }\n        let bucket;\n        let signature = '';\n        for (let i = 0; i < chunk.length; i++) {\n            const item = chunk[i];\n            if (isChunk(item)) {\n                if (!item.r) {\n                    destroyChunk(item, detached);\n                    continue;\n                }\n                if (!detached)\n                    moveDOMRef(item.ref, item.dom);\n                releaseTemplate(item);\n                if (item.st)\n                    continue;\n                item.st = true;\n                if (signature !== item.g) {\n                    signature = item.g;\n                    bucket = staleBySignature.get(signature);\n                    if (!bucket) {\n                        bucket = {};\n                        staleBySignature.set(signature, bucket);\n                    }\n                }\n                item.bkn = bucket.h;\n                bucket.h = item;\n                if (item.i !== undefined)\n                    staleById.set(item.i, item);\n            }\n            else if (!detached) {\n                item.remove();\n            }\n        }\n        return;\n    }\n    if (!detached)\n        chunk.remove();\n}\nfunction drainUnmountStack() {\n    unmountQueued = false;\n    const stack = unmountStack;\n    unmountStack = [];\n    for (let i = 0; i < stack.length; i++)\n        removeUnmounted(stack[i]);\n    if (unmountStack.length)\n        scheduleUnmountDrain();\n}\nfunction scheduleUnmountDrain() {\n    if (unmountQueued)\n        return;\n    unmountQueued = true;\n    queueMicrotask(drainUnmountStack);\n}\nfunction unmount(chunk) {\n    if (!chunk)\n        return;\n    unmountStack.push(chunk);\n    scheduleUnmountDrain();\n}\nfunction renderText(value) {\n    return value || value === 0 ? value : '';\n}\nfunction getNode(chunk, anchor, first) {\n    if (isChunk(chunk)) {\n        return first ? chunk.ref.f : chunk.ref.l;\n    }\n    if (Array.isArray(chunk)) {\n        return getNode(chunk[first ? 0 : chunk.length - 1], anchor, first);\n    }\n    return chunk;\n}\nfunction adoptRenderedValue(value, capture, map, visited) {\n    if (!value)\n        return value;\n    if (isChunk(value)) {\n        adoptCapturedChunk(capture, value, map, visited);\n        return value;\n    }\n    if (Array.isArray(value)) {\n        const next = new Array(value.length);\n        for (let i = 0; i < value.length; i++) {\n            next[i] = adoptRenderedValue(value[i], capture, map, visited);\n        }\n        return next;\n    }\n    return map.get(value) ?? value;\n}\nfunction createPaths(dom) {\n    const pathTape = [];\n    const attrNames = [];\n    const path = [];\n    const previous = [];\n    const pushPath = (attrName) => {\n        const pathLen = path.length;\n        const previousLen = previous.length;\n        const limit = pathLen < previousLen ? pathLen : previousLen;\n        let sharedDepth = 0;\n        while (sharedDepth < limit && previous[sharedDepth] === path[sharedDepth]) {\n            sharedDepth++;\n        }\n        pathTape.push(sharedDepth, pathLen - sharedDepth);\n        for (let i = sharedDepth; i < pathLen; i++)\n            pathTape.push(path[i]);\n        pathTape.push(attrName ? attrNames.push(attrName) : 0);\n        previous.length = pathLen;\n        for (let i = 0; i < pathLen; i++)\n            previous[i] = path[i];\n    };\n    const walk = (node) => {\n        if (node.nodeType === 1) {\n            const attrs = node.attributes;\n            for (let i = 0; i < attrs.length; i++) {\n                const attr = attrs[i];\n                if (attr.value === delimiterComment)\n                    pushPath(attr.name);\n            }\n        }\n        else if (node.nodeType === 8) {\n            pushPath();\n        }\n        else if (node.nodeType === 3 && node.nodeValue === delimiterComment) {\n            pushPath();\n        }\n        const children = node.childNodes;\n        for (let i = 0; i < children.length; i++) {\n            path.push(i);\n            walk(children[i]);\n            path.pop();\n        }\n    };\n    const children = dom.childNodes;\n    for (let i = 0; i < children.length; i++) {\n        path.push(i);\n        walk(children[i]);\n        path.pop();\n    }\n    return [pathTape, attrNames];\n}\nfunction normalizeNodePlaceholders(dom) {\n    const walk = (node) => {\n        const children = node.childNodes;\n        for (let i = 0; i < children.length; i++) {\n            const child = children[i];\n            if (child.nodeType === 8 && child.data === delimiter) {\n                node.replaceChild(document.createTextNode(''), child);\n                continue;\n            }\n            if (child.nodeType === 3 && child.nodeValue === delimiterComment) {\n                child.nodeValue = '';\n            }\n            if (child.firstChild)\n                walk(child);\n        }\n    };\n    walk(dom);\n}\n"],"names":[],"mappings":"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"}