{"version":3,"sources":["jsdelivr-header.js","/npm/hydro-js@1.8.14/dist/library.js"],"names":[],"mappings":"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","file":"/npm/hydro-js@1.8.14/dist/library.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/hydro-js@1.8.14/dist/library.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// Safari Polyfills\r\nwindow.requestIdleCallback =\r\n    /* c8 ignore next 4 */\r\n    window.requestIdleCallback ||\r\n        ((cb, _, start = window.performance.now()) => window.setTimeout(cb, 0, {\r\n            didTimeout: false,\r\n            timeRemaining: () => Math.max(0, 5 - (window.performance.now() - start)),\r\n        }));\r\n// Safari Polyfills END\r\nconst range = document.createRange();\r\nrange.selectNodeContents(range.createContextualFragment(`<${\"template\" /* Placeholder.template */}>`).lastChild);\r\nconst parser = range.createContextualFragment.bind(range);\r\nconst allNodeChanges = new WeakMap(); // Maps a Node against an array of changes. An array is necessary because a node can have multiple variables for one text / attribute.\r\nconst elemEventFunctions = new WeakMap(); // Stores event functions in order to compare Elements against each other.\r\nconst reactivityMap = new WeakMap(); // Maps Proxy Objects to another Map(proxy-key, node).\r\nconst bindMap = new WeakMap(); // Bind an Element to data. If the data is being unset, the DOM Element disappears too.\r\nconst tmpSwap = new WeakMap(); // Take over keyToNodeMap if the new value is a hydro Proxy. Save old reactivityMap entry here, in case for a swap operation.\r\nconst onRenderMap = new WeakMap(); // Lifecycle Hook that is being called after rendering\r\nconst onCleanupMap = new WeakMap(); // Lifecycle Hook that is being called when unmount function is being called\r\nconst fragmentToElements = new WeakMap(); // Used to retreive Elements from DocumentFragment after it has been rendered – for diffing\r\nconst hydroToReactive = new WeakMap(); // Used for internal mapping from hydroKeys to the the Proxy created by the reactive function\r\nconst _boundFunctions = Symbol(\"boundFunctions\"); // Cache for bound functions in Proxy, so that we create the bound version of each function only once\r\nconst reactiveSymbol = Symbol(\"reactive\");\r\nconst keysSymbol = Symbol(\"keys\");\r\nconst viewElementsEventFunctions = new Map();\r\nconst isServerSideCached = isServerSide();\r\nlet globalSchedule = true; // Decides whether to schedule rendering and updating (async)\r\nlet reuseElements = true; // Reuses Elements when rendering\r\nlet insertBeforeDiffing = false; // Makes sense in Chrome only\r\nlet shouldSetReactivity = true;\r\nlet viewElements = false;\r\nlet ignoreIsConnected = false;\r\nconst reactivityRegex = new RegExp(isServerSideCached\r\n    ? `\\\\{\\\\{([^]*?)\\\\}\\\\}|${\"hydro-reactive-\" /* Placeholder.reactiveKey */}([a-zA-Z0-9_.-]+)`\r\n    : `\\\\{\\\\{([^]*?)\\\\}\\\\}`);\r\nconst HTML_FIND_INVALID = /<(\\/?)(html|head|body)(>|\\s.*?>)/g;\r\nconst newLineRegex = /\\n/g;\r\nconst propChainRegex = /[\\.\\[\\]]/;\r\nconst onEventRegex = /^on/;\r\n// https://html.spec.whatwg.org/#attributes-3\r\n// if value for bool attr is falsy, then remove attr\r\n// INFO: draggable and spellcheck are actually using booleans as string! Also, hidden is not really a bool attr, but is making use of the empty string too. Might consider to add 'translate' (yes and no as string)\r\nconst boolAttrSet = new Set([\r\n    \"allowfullscreen\",\r\n    \"alpha\",\r\n    \"async\",\r\n    \"autofocus\",\r\n    \"autoplay\",\r\n    \"checked\",\r\n    \"controls\",\r\n    \"draggable\",\r\n    \"default\",\r\n    \"defer\",\r\n    \"disabled\",\r\n    \"formnovalidate\",\r\n    \"hidden\",\r\n    \"inert\",\r\n    \"ismap\",\r\n    \"itemscope\",\r\n    \"loop\",\r\n    \"multiple\",\r\n    \"muted\",\r\n    \"nomodule\",\r\n    \"novalidate\",\r\n    \"open\",\r\n    \"playsinline\",\r\n    \"readonly\",\r\n    \"required\",\r\n    \"reversed\",\r\n    \"selected\",\r\n    \"shadowrootclonable\",\r\n    \"shadowrootcustomelementregistry\",\r\n    \"shadowrootdelegatesfocus\",\r\n    \"shadowrootserializable\",\r\n    \"spellcheck\",\r\n]);\r\nlet lastSwapElem = null;\r\nlet internReset = false;\r\nconst primitiveTypes = new Set([\r\n    \"number\",\r\n    \"string\",\r\n    \"symbol\",\r\n    \"boolean\",\r\n    \"bigint\",\r\n]);\r\nfunction isObject(obj) {\r\n    return obj != null && typeof obj === \"object\";\r\n}\r\nfunction isFunction(func) {\r\n    return typeof func === \"function\" /* Placeholder.function */;\r\n}\r\nfunction isTextNode(node) {\r\n    return node.splitText !== undefined;\r\n}\r\nfunction isNode(node) {\r\n    return node instanceof window.Node;\r\n}\r\nfunction isDocumentFragment(node) {\r\n    return node.nodeType === 11;\r\n}\r\nfunction isEventObject(obj) {\r\n    return (isObject(obj) && \"event\" /* Placeholder.event */ in obj && \"options\" /* Placeholder.options */ in obj);\r\n}\r\nfunction isProxy(hydroObject) {\r\n    const wasTracking = trackDeps;\r\n    if (wasTracking)\r\n        trackDeps = false;\r\n    const result = Reflect.get(hydroObject, \"isProxy\" /* Placeholder.isProxy */);\r\n    if (wasTracking)\r\n        trackDeps = true;\r\n    return result;\r\n}\r\nfunction isPromise(obj) {\r\n    return isObject(obj) && typeof obj.then === \"function\";\r\n}\r\nfunction isServerSide() {\r\n    return (window.navigator.userAgent.includes(\"Node.js\") ||\r\n        window.navigator.userAgent.includes(\"Deno\") ||\r\n        window.navigator.userAgent.includes(\"Bun\") ||\r\n        window.navigator.userAgent.includes(\"HappyDOM\") ||\r\n        window.navigator.userAgent.includes(\"jsdom\"));\r\n}\r\nfunction randomText() {\r\n    const randomChars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\r\n    let result = \"\";\r\n    for (let i = 0; i < 6; i++) {\r\n        result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\r\n    }\r\n    return result;\r\n    // return Math.random().toString(32).slice(2);\r\n}\r\nfunction setGlobalSchedule(willSchedule) {\r\n    globalSchedule = willSchedule;\r\n    setHydroRecursive(hydro);\r\n}\r\nfunction setReuseElements(willReuse) {\r\n    reuseElements = willReuse;\r\n}\r\nfunction setInsertDiffing(willInsert) {\r\n    insertBeforeDiffing = willInsert;\r\n}\r\nfunction setShouldSetReactivity(willSet) {\r\n    shouldSetReactivity = willSet;\r\n}\r\nfunction setIgnoreIsConnected(ignore) {\r\n    ignoreIsConnected = ignore;\r\n}\r\nfunction setHydroRecursive(obj) {\r\n    Reflect.set(obj, \"asyncUpdate\" /* Placeholder.asyncUpdate */, globalSchedule);\r\n    for (const value of Object.values(obj)) {\r\n        if (isObject(value) && isProxy(value)) {\r\n            setHydroRecursive(value);\r\n        }\r\n    }\r\n}\r\nfunction setAttribute(node, key, val) {\r\n    const isBoolAttr = boolAttrSet.has(key);\r\n    if (isBoolAttr && !val) {\r\n        node.removeAttribute(key);\r\n        return false;\r\n    }\r\n    node.setAttribute(key, isFunction(val) && Reflect.has(val, reactiveSymbol)\r\n        ? val\r\n        : isBoolAttr\r\n            ? \"\"\r\n            : val);\r\n    return true;\r\n}\r\nfunction addEventListener(node, eventName, obj) {\r\n    const isFn = isFunction(obj);\r\n    node.addEventListener(eventName, isFn ? obj : obj.event, isFn ? {} : obj.options);\r\n}\r\nfunction removeTrackedEventListener(node, eventName, handler) {\r\n    node.removeEventListener(eventName, handler);\r\n    const map = elemEventFunctions.get(node);\r\n    if (!map)\r\n        return;\r\n    const handlers = map.get(eventName);\r\n    if (!handlers)\r\n        return;\r\n    handlers.delete(handler);\r\n    if (handlers.size === 0) {\r\n        map.delete(eventName);\r\n    }\r\n    if (map.size === 0) {\r\n        elemEventFunctions.delete(node);\r\n    }\r\n}\r\nfunction html(htmlArray, ...variables) {\r\n    const eventFunctions = new Map(); // Temporarily store a mapping for string -> function, because eventListener have to be registered after the Element's creation\r\n    let insertNodes = []; // Nodes, that will be added after the parsing\r\n    const resolvedVariables = new Array(variables.length);\r\n    for (let i = 0; i < variables.length; i++) {\r\n        const variable = variables[i];\r\n        const template = `<${\"template\" /* Placeholder.template */} id=\"lbInsertNodes\"></${\"template\" /* Placeholder.template */}>`;\r\n        if (isNode(variable)) {\r\n            insertNodes.push(variable);\r\n            resolvedVariables[i] = template;\r\n        }\r\n        else if (primitiveTypes.has(typeof variable) ||\r\n            Reflect.has(variable, reactiveSymbol)) {\r\n            resolvedVariables[i] = String(variable);\r\n        }\r\n        else if (isFunction(variable) || isEventObject(variable)) {\r\n            const funcName = randomText();\r\n            eventFunctions.set(funcName, variable);\r\n            viewElements && viewElementsEventFunctions.set(funcName, variable);\r\n            resolvedVariables[i] = funcName;\r\n        }\r\n        else if (Array.isArray(variable)) {\r\n            for (let index = 0; index < variable.length; index++) {\r\n                const item = variable[index];\r\n                if (isNode(item)) {\r\n                    insertNodes.push(item);\r\n                    variable[index] = template;\r\n                }\r\n            }\r\n            resolvedVariables[i] = variable.join(\"\");\r\n        }\r\n        else if (isObject(variable)) {\r\n            let result = \"\";\r\n            for (const [key, value] of Object.entries(variable)) {\r\n                if (isFunction(value) || isEventObject(value)) {\r\n                    const funcName = randomText();\r\n                    eventFunctions.set(funcName, value);\r\n                    viewElements && viewElementsEventFunctions.set(funcName, value);\r\n                    result += `${key}=\"${funcName}\"`;\r\n                }\r\n                else {\r\n                    result += `${key}=\"${value}\"`;\r\n                }\r\n            }\r\n            resolvedVariables[i] = result;\r\n        }\r\n    }\r\n    // Find elements <html|head|body>, as they cannot be created by the parser. Replace them by fake Custom Elements and replace them afterwards.\r\n    let DOMString = String.raw(htmlArray, ...resolvedVariables).trim();\r\n    DOMString = DOMString.replace(HTML_FIND_INVALID, `<$1$2${\"-dummy\" /* Placeholder.dummy */}$3`);\r\n    const DOM = parser(DOMString);\r\n    // Delay Element iteration and manipulation after the elements have been added to the DOM.\r\n    if (!viewElements) {\r\n        fillDOM(DOM, insertNodes, eventFunctions);\r\n    }\r\n    // Return DocumentFragment\r\n    if (DOM.childNodes.length > 1)\r\n        return DOM;\r\n    // Return empty Text Node\r\n    if (!DOM.firstChild)\r\n        return document.createTextNode(\"\");\r\n    // Return Element | Text\r\n    return DOM.firstChild;\r\n}\r\nfunction fillDOM(elem, insertNodes, eventFunctions) {\r\n    const root = document.createNodeIterator(elem, window.NodeFilter.SHOW_ELEMENT, {\r\n        acceptNode(element) {\r\n            return element.localName.endsWith(\"-dummy\" /* Placeholder.dummy */)\r\n                ? window.NodeFilter.FILTER_ACCEPT\r\n                : window.NodeFilter.FILTER_REJECT;\r\n        },\r\n    });\r\n    const nodes = [];\r\n    let currentNode;\r\n    while ((currentNode = root.nextNode())) {\r\n        nodes.push(currentNode);\r\n    }\r\n    for (const node of nodes) {\r\n        const tag = node.localName.replace(\"-dummy\" /* Placeholder.dummy */, \"\");\r\n        const replacement = document.createElement(tag);\r\n        /* c8 ignore next 3 */\r\n        for (const key of node.getAttributeNames()) {\r\n            replacement.setAttribute(key, node.getAttribute(key));\r\n        }\r\n        replacement.append(...node.childNodes);\r\n        node.replaceWith(replacement);\r\n    }\r\n    // Insert HTML Elements, which were stored in insertNodes\r\n    if (!isTextNode(elem)) {\r\n        for (const template of elem.querySelectorAll(\"template[id^=lbInsertNodes]\"))\r\n            template.replaceWith(insertNodes.shift());\r\n    }\r\n    if (shouldSetReactivity)\r\n        setReactivity(elem, eventFunctions);\r\n}\r\nfunction h(name, props, ...children) {\r\n    if (isFunction(name))\r\n        return name({ ...props, children });\r\n    const elem = typeof name === \"string\" /* Placeholder.string */\r\n        ? document.createElement(name, props?.hasOwnProperty(\"is\") ? { is: props[\"is\"] } : undefined)\r\n        : document.createDocumentFragment();\r\n    for (const i in props) {\r\n        i in elem && !boolAttrSet.has(i)\r\n            ? //@ts-ignore\r\n                (elem[i] = props[i])\r\n            : setAttribute(elem, i, props[i]);\r\n    }\r\n    if (isDocumentFragment(elem)) {\r\n        children = name.children;\r\n    }\r\n    elem.append(...(children.some((i) => Array.isArray(i))\r\n        ? children.map(getChildren).flat()\r\n        : children));\r\n    if (!viewElements) {\r\n        setReactivity(elem);\r\n    }\r\n    return elem;\r\n}\r\nfunction getChildren(child) {\r\n    return isObject(child) && !isNode(child)\r\n        ? Object.values(child)\r\n        : child;\r\n}\r\n/* c8 ignore end */\r\nfunction setReactivity(DOM, eventFunctions) {\r\n    if (isTextNode(DOM)) {\r\n        setReactivitySingle(DOM);\r\n        return;\r\n    }\r\n    const elems = document.createNodeIterator(DOM, window.NodeFilter.SHOW_ELEMENT);\r\n    let elem;\r\n    while ((elem = elems.nextNode())) {\r\n        for (const key of elem.getAttributeNames()) {\r\n            // Set functions\r\n            const val = elem.getAttribute(key);\r\n            if (eventFunctions && key.startsWith(\"on\")) {\r\n                const eventName = key.replace(onEventRegex, \"\");\r\n                if (!(eventFunctions instanceof Map)) {\r\n                    eventFunctions = new Map(Object.entries(eventFunctions));\r\n                }\r\n                const event = eventFunctions?.get(val);\r\n                if (!event) {\r\n                    setReactivitySingle(elem, key, val);\r\n                    continue;\r\n                }\r\n                elem.removeAttribute(key);\r\n                if (isEventObject(event)) {\r\n                    elem.addEventListener(eventName, event.event, event.options);\r\n                    if (elemEventFunctions.has(elem)) {\r\n                        elemEventFunctions.get(elem).get(eventName)?.add(event.event);\r\n                    }\r\n                    else {\r\n                        elemEventFunctions.set(elem, new Map().set(eventName, new Set([event.event])));\r\n                    }\r\n                }\r\n                else {\r\n                    elem.addEventListener(eventName, event);\r\n                    if (elemEventFunctions.has(elem)) {\r\n                        elemEventFunctions.get(elem).get(eventName)?.add(event);\r\n                    }\r\n                    else {\r\n                        elemEventFunctions.set(elem, new Map().set(eventName, new Set([event])));\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                setReactivitySingle(elem, key, val);\r\n            }\r\n        }\r\n        let childNode = elem.firstChild;\r\n        while (childNode) {\r\n            if (isTextNode(childNode) &&\r\n                (childNode.nodeValue?.includes(\"{{\") ||\r\n                    (isServerSideCached &&\r\n                        childNode.nodeValue?.includes(\"hydro-reactive-\" /* Placeholder.reactiveKey */)))) {\r\n                setReactivitySingle(childNode);\r\n            }\r\n            childNode = childNode.nextSibling;\r\n        }\r\n    }\r\n}\r\nfunction setReactivitySingle(node, key, val) {\r\n    let attr_OR_text, match;\r\n    if (!key) {\r\n        attr_OR_text = node.nodeValue; // nodeValue is (always) defined on Text Nodes\r\n    }\r\n    else {\r\n        attr_OR_text = val;\r\n        if (attr_OR_text === \"\") {\r\n            // e.g. checked attribute or two-way attribute\r\n            attr_OR_text = key;\r\n            if (attr_OR_text.startsWith(\"{{\") ||\r\n                (isServerSideCached && attr_OR_text.startsWith(\"hydro-reactive-\" /* Placeholder.reactiveKey */))) {\r\n                node.removeAttribute(attr_OR_text);\r\n            }\r\n        }\r\n    }\r\n    while ((match = attr_OR_text.match(reactivityRegex))) {\r\n        // attr_OR_text will be altered in every iteration\r\n        const [hydroMatch, hydroCurlyPath, hydroPath] = match;\r\n        const properties = (hydroCurlyPath ?? hydroPath)\r\n            .trim()\r\n            .replace(newLineRegex, \"\")\r\n            .split(propChainRegex)\r\n            .filter(Boolean);\r\n        const [resolvedValue, resolvedObj] = resolveObject(properties);\r\n        let lastProp = properties[properties.length - 1];\r\n        const start = match.index;\r\n        let end = start + String(resolvedValue).length;\r\n        if (isNode(resolvedValue)) {\r\n            node.nodeValue = attr_OR_text.replace(hydroMatch, \"\");\r\n            node.after(resolvedValue);\r\n            setTraces(start, end, resolvedValue, lastProp, resolvedObj, key);\r\n            return;\r\n        }\r\n        // Set Text or set Attribute\r\n        if (isTextNode(node)) {\r\n            const textContent = isObject(resolvedValue)\r\n                ? window.JSON.stringify(resolvedValue)\r\n                : resolvedValue ?? \"\";\r\n            attr_OR_text = attr_OR_text.replace(hydroMatch, textContent);\r\n            if (attr_OR_text != null) {\r\n                node.nodeValue = attr_OR_text;\r\n            }\r\n        }\r\n        else {\r\n            if (key === \"bind\") {\r\n                attr_OR_text = attr_OR_text.replace(hydroMatch, \"\");\r\n                node.removeAttribute(key);\r\n                const proxy = isObject(resolvedValue) && isProxy(resolvedValue)\r\n                    ? resolvedValue\r\n                    : resolvedObj;\r\n                if (bindMap.has(proxy)) {\r\n                    bindMap.get(proxy).push(node);\r\n                }\r\n                else {\r\n                    bindMap.set(proxy, [node]);\r\n                }\r\n                continue;\r\n            }\r\n            else if (key === \"two-way\" /* Placeholder.twoWay */) {\r\n                if (node instanceof window.HTMLSelectElement) {\r\n                    node.value = resolvedValue;\r\n                    changeAttrVal(\"change\" /* Placeholder.change */, node, resolvedObj, lastProp);\r\n                }\r\n                else if (node instanceof window.HTMLInputElement &&\r\n                    node.type === \"radio\" /* Placeholder.radio */) {\r\n                    node.checked = node.value === resolvedValue;\r\n                    changeAttrVal(\"change\" /* Placeholder.change */, node, resolvedObj, lastProp);\r\n                }\r\n                else if (node instanceof window.HTMLInputElement &&\r\n                    node.type === \"checkbox\" /* Placeholder.checkbox */) {\r\n                    node.checked = resolvedValue;\r\n                    changeAttrVal(\"change\" /* Placeholder.change */, node, resolvedObj, lastProp, true);\r\n                }\r\n                else if (node instanceof window.HTMLTextAreaElement ||\r\n                    node instanceof window.HTMLInputElement) {\r\n                    node.value = resolvedValue;\r\n                    changeAttrVal(\"input\", node, resolvedObj, lastProp);\r\n                }\r\n                attr_OR_text = attr_OR_text.replace(hydroMatch, \"\");\r\n                node.toggleAttribute(\"two-way\" /* Placeholder.twoWay */);\r\n            }\r\n            else if (isFunction(resolvedValue) || isEventObject(resolvedValue)) {\r\n                attr_OR_text = attr_OR_text.replace(hydroMatch, \"\");\r\n                node.removeAttribute(key);\r\n                addEventListener(node, key.replace(onEventRegex, \"\"), resolvedValue);\r\n            }\r\n            else if (isObject(resolvedValue)) {\r\n                // Case: setting attrs on Element - <p ${props}>\r\n                for (const [subKey, subVal] of Object.entries(resolvedValue)) {\r\n                    attr_OR_text = attr_OR_text.replace(hydroMatch, \"\");\r\n                    if (isFunction(subVal) || isEventObject(subVal)) {\r\n                        addEventListener(node, subKey.replace(onEventRegex, \"\"), subVal);\r\n                    }\r\n                    else {\r\n                        lastProp = subKey;\r\n                        if (setAttribute(node, subKey, subVal)) {\r\n                            end = start + String(subVal).length;\r\n                        }\r\n                        else {\r\n                            end = start;\r\n                        }\r\n                    }\r\n                    setTraces(start, end, node, lastProp, resolvedValue, subKey);\r\n                }\r\n                continue; // As we set all Mappings via subKeys\r\n            }\r\n            else {\r\n                attr_OR_text = attr_OR_text.replace(hydroMatch, resolvedValue);\r\n                if (!setAttribute(node, key, attr_OR_text === String(resolvedValue)\r\n                    ? resolvedValue\r\n                    : attr_OR_text)) {\r\n                    attr_OR_text = attr_OR_text.replace(resolvedValue, \"\");\r\n                }\r\n            }\r\n        }\r\n        setTraces(start, end, node, lastProp, resolvedObj, key);\r\n    }\r\n}\r\n// Same behavior as v-model in https://v3.vuejs.org/guide/forms.html#basic-usage\r\nfunction changeAttrVal(eventName, node, resolvedObj, lastProp, isChecked = false) {\r\n    node.addEventListener(eventName, changeHandler);\r\n    onCleanup(() => node.removeEventListener(eventName, changeHandler), node);\r\n    function changeHandler({ target }) {\r\n        Reflect.set(resolvedObj, lastProp, isChecked\r\n            ? target.checked\r\n            : target.value);\r\n    }\r\n}\r\nfunction setTraces(start, end, node, hydroKey, resolvedObj, key) {\r\n    // Set WeakMaps, that will be used to track a change for a Node but also to check if a Node has any other changes.\r\n    const change = [start, end, key, resolvedObj];\r\n    const changeArr = [change];\r\n    if (allNodeChanges.has(node)) {\r\n        allNodeChanges.get(node).push(change);\r\n    }\r\n    else {\r\n        allNodeChanges.set(node, [change]); // Use own version. Otherwise changes, will lead to incorrect changes in the DOM.\r\n    }\r\n    if (reactivityMap.has(resolvedObj)) {\r\n        const keyToNodeMap = reactivityMap.get(resolvedObj);\r\n        const nodeToChangeMap = keyToNodeMap.get(hydroKey);\r\n        if (nodeToChangeMap) {\r\n            if (nodeToChangeMap.has(node)) {\r\n                nodeToChangeMap.get(node).push(change);\r\n            }\r\n            else {\r\n                nodeToChangeMap.set(changeArr, node);\r\n                nodeToChangeMap.set(node, changeArr);\r\n            }\r\n        }\r\n        else {\r\n            keyToNodeMap.set(hydroKey, \r\n            //@ts-ignore\r\n            new Map([\r\n                [changeArr, node],\r\n                [node, changeArr],\r\n            ]));\r\n        }\r\n    }\r\n    else {\r\n        reactivityMap.set(resolvedObj, new Map([\r\n            [\r\n                hydroKey,\r\n                //@ts-ignore\r\n                new Map([\r\n                    [changeArr, node],\r\n                    [node, changeArr],\r\n                ]),\r\n            ],\r\n        ]));\r\n    }\r\n}\r\n// Helper function to return a value and hydro obj from a chain of properties\r\nfunction resolveObject(propertyArray) {\r\n    let value, prev;\r\n    value = prev = hydro;\r\n    for (const prop of propertyArray) {\r\n        prev = value;\r\n        value = Reflect.get(prev, prop);\r\n    }\r\n    return [value, prev];\r\n}\r\nfunction compareEvents(elem, where, onlyTextChildren) {\r\n    const elemFunctions = [];\r\n    const whereFunctions = [];\r\n    if (isTextNode(elem)) {\r\n        if (onRenderMap.has(elem))\r\n            elemFunctions.push(onRenderMap.get(elem));\r\n        if (onCleanupMap.has(elem))\r\n            elemFunctions.push(onCleanupMap.get(elem));\r\n        if (onRenderMap.has(where))\r\n            whereFunctions.push(onRenderMap.get(where));\r\n        if (onCleanupMap.has(where))\r\n            whereFunctions.push(onCleanupMap.get(where));\r\n        return (elemFunctions.length === whereFunctions.length &&\r\n            String(elemFunctions) === String(whereFunctions));\r\n    }\r\n    if (elemEventFunctions.has(elem)) {\r\n        elemEventFunctions.get(elem).forEach((handlers) => {\r\n            handlers.forEach((handler) => elemFunctions.push(handler));\r\n        });\r\n    }\r\n    if (elemEventFunctions.has(where)) {\r\n        elemEventFunctions.get(where).forEach((handlers) => {\r\n            handlers.forEach((handler) => whereFunctions.push(handler));\r\n        });\r\n    }\r\n    if (onRenderMap.has(elem))\r\n        elemFunctions.push(onRenderMap.get(elem));\r\n    if (onCleanupMap.has(elem))\r\n        elemFunctions.push(onCleanupMap.get(elem));\r\n    if (onRenderMap.has(where))\r\n        whereFunctions.push(onRenderMap.get(where));\r\n    if (onCleanupMap.has(where))\r\n        whereFunctions.push(onCleanupMap.get(where));\r\n    if (elemFunctions.length !== whereFunctions.length)\r\n        return false;\r\n    if (String(elemFunctions) !== String(whereFunctions))\r\n        return false;\r\n    for (let i = 0; i < elem.childNodes.length; i++) {\r\n        const elemChild = elem.childNodes[i];\r\n        const whereChild = where.childNodes[i];\r\n        if (onlyTextChildren) {\r\n            if (isTextNode(elemChild)) {\r\n                if (!compareEvents(elemChild, whereChild, onlyTextChildren)) {\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        else if (!compareEvents(elemChild, whereChild)) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\nfunction compare(elem, where, onlyTextChildren) {\r\n    if (isDocumentFragment(elem) || isDocumentFragment(where))\r\n        return false;\r\n    return (elem.isEqualNode(where) && compareEvents(elem, where, onlyTextChildren));\r\n}\r\nfunction render(elem, where = \"\", shouldSchedule = globalSchedule) {\r\n    /* c8 ignore next 4 */\r\n    if (shouldSchedule) {\r\n        schedule(render, elem, where, false);\r\n        return unmount(elem);\r\n    }\r\n    // Get elem value if elem is reactiveObject\r\n    if (Reflect.has(elem, reactiveSymbol)) {\r\n        elem = getValue(elem);\r\n    }\r\n    // Store elements of documentFragment for later unmount\r\n    let elemChildren = [];\r\n    if (isDocumentFragment(elem)) {\r\n        elemChildren = Array.from(elem.childNodes);\r\n        fragmentToElements.set(elem, elemChildren); // For diffing later\r\n    }\r\n    if (!where) {\r\n        document.body.append(elem);\r\n    }\r\n    else {\r\n        if (typeof where === \"string\" /* Placeholder.string */) {\r\n            const resolveStringToElement = $(where);\r\n            if (resolveStringToElement) {\r\n                where = resolveStringToElement;\r\n            }\r\n            else {\r\n                return noop;\r\n            }\r\n        }\r\n        if (!reuseElements) {\r\n            replaceElement(elem, where);\r\n        }\r\n        else {\r\n            if (isTextNode(elem)) {\r\n                replaceElement(elem, where);\r\n            }\r\n            else if (!compare(elem, where)) {\r\n                treeDiff(elem, where);\r\n            }\r\n        }\r\n    }\r\n    runLifecyle(elem, onRenderMap);\r\n    for (const subElem of elemChildren) {\r\n        runLifecyle(subElem, onRenderMap);\r\n    }\r\n    return unmount(isDocumentFragment(elem) ? elemChildren : elem);\r\n}\r\nfunction noop() { }\r\nfunction executeLifecycle(node, lifecyleMap) {\r\n    if (lifecyleMap.has(node)) {\r\n        const fn = lifecyleMap.get(node);\r\n        if (globalSchedule) {\r\n            schedule(fn);\r\n        }\r\n        else {\r\n            fn();\r\n        }\r\n        lifecyleMap.delete(node);\r\n    }\r\n}\r\nfunction runLifecyle(node, lifecyleMap) {\r\n    if ((lifecyleMap === onRenderMap && !calledOnRender) ||\r\n        (lifecyleMap === onCleanupMap && !calledOnCleanup))\r\n        return;\r\n    executeLifecycle(node, lifecyleMap);\r\n    const elements = document.createNodeIterator(node, window.NodeFilter.SHOW_ELEMENT);\r\n    let subElem;\r\n    while ((subElem = elements.nextNode())) {\r\n        executeLifecycle(subElem, lifecyleMap);\r\n        let childNode = subElem.firstChild;\r\n        while (childNode) {\r\n            if (isTextNode(childNode)) {\r\n                executeLifecycle(childNode, lifecyleMap);\r\n            }\r\n            childNode = childNode.nextSibling;\r\n        }\r\n    }\r\n}\r\nfunction filterTag2Elements(tag2Elements, root) {\r\n    for (const [localName, list] of tag2Elements.entries()) {\r\n        // Process list in reverse to avoid index issues when splicing\r\n        for (let i = list.length - 1; i >= 0; i--) {\r\n            const elem = list[i];\r\n            if (root.contains(elem) || root.isSameNode(elem)) {\r\n                list.splice(i, 1);\r\n            }\r\n        }\r\n        if (list.length === 0) {\r\n            tag2Elements.delete(localName);\r\n        }\r\n    }\r\n}\r\nfunction treeDiff(elem, where) {\r\n    const elemElements = [...elem.querySelectorAll(\"*\")];\r\n    if (!isDocumentFragment(elem))\r\n        elemElements.unshift(elem);\r\n    let whereElements = [];\r\n    if (!isTextNode(where)) {\r\n        whereElements = [...where.querySelectorAll(\"*\")];\r\n        if (!isDocumentFragment(where))\r\n            whereElements.unshift(where);\r\n    }\r\n    let template;\r\n    if (insertBeforeDiffing) {\r\n        template = document.createElement(isServerSideCached ? \"div\" : \"template\");\r\n        /* c8 ignore next 3 */\r\n        if (where === document.documentElement) {\r\n            where.append(template);\r\n        }\r\n        else {\r\n            if (isDocumentFragment(where)) {\r\n                fragmentToElements.get(where)[0].before(template);\r\n            }\r\n            else {\r\n                where.before(template);\r\n            }\r\n        }\r\n        template.append(elem);\r\n    }\r\n    // Create Mapping for easier diffing, eg: \"div\" -> [...Element]\r\n    const tag2Elements = new Map();\r\n    for (const wElem of whereElements) {\r\n        /* c8 ignore next 2 */\r\n        if (insertBeforeDiffing && wElem === template)\r\n            return;\r\n        if (tag2Elements.has(wElem.localName)) {\r\n            tag2Elements.get(wElem.localName).push(wElem);\r\n        }\r\n        else {\r\n            tag2Elements.set(wElem.localName, [wElem]);\r\n        }\r\n    }\r\n    // Re-use any where Element if possible, then remove elem Element\r\n    for (const subElem of elemElements) {\r\n        const sameElements = tag2Elements.get(subElem.localName);\r\n        if (sameElements) {\r\n            for (const whereElem of sameElements) {\r\n                if (compare(subElem, whereElem, true)) {\r\n                    subElem.replaceWith(whereElem);\r\n                    runLifecyle(subElem, onCleanupMap);\r\n                    filterTag2Elements(tag2Elements, whereElem);\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if (insertBeforeDiffing) {\r\n        const newElems = isDocumentFragment(elem)\r\n            ? Array.from(template.childNodes)\r\n            : [elem];\r\n        if (isDocumentFragment(where)) {\r\n            const oldElems = fragmentToElements.get(where);\r\n            for (const e of newElems)\r\n                oldElems[0].before(e);\r\n            for (const e of oldElems)\r\n                e.remove();\r\n        }\r\n        else {\r\n            if (where instanceof window.HTMLHtmlElement) {\r\n                replaceElement(elem, where);\r\n            }\r\n            else {\r\n                where.replaceWith(...newElems);\r\n            }\r\n        }\r\n        template.remove();\r\n        runLifecyle(where, onCleanupMap);\r\n    }\r\n    else {\r\n        replaceElement(elem, where);\r\n    }\r\n    tag2Elements.clear();\r\n}\r\nfunction replaceElement(elem, where) {\r\n    if (isDocumentFragment(where)) {\r\n        const fragmentChildren = fragmentToElements.get(where);\r\n        if (isDocumentFragment(elem)) {\r\n            const fragmentElements = Array.from(elem.childNodes);\r\n            for (let index = 0; index < fragmentChildren.length; index++) {\r\n                const fragWhere = fragmentChildren[index];\r\n                if (index < fragmentElements.length) {\r\n                    render(fragmentElements[index], fragWhere);\r\n                }\r\n                else {\r\n                    fragWhere.remove();\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            for (let index = 0; index < fragmentChildren.length; index++) {\r\n                const fragWhere = fragmentChildren[index];\r\n                if (index === 0) {\r\n                    render(elem, fragWhere);\r\n                }\r\n                else {\r\n                    fragWhere.remove();\r\n                }\r\n            }\r\n        }\r\n    }\r\n    else if (isServerSideCached) {\r\n        if (isServerSideCached &&\r\n            elem instanceof window.HTMLHtmlElement &&\r\n            where instanceof window.HTMLHtmlElement) {\r\n            for (const key of elem.getAttributeNames()) {\r\n                setAttribute(where, key, elem.getAttribute(key));\r\n            }\r\n            where.replaceChildren(...elem.childNodes);\r\n        }\r\n        else {\r\n            where.replaceWith(elem);\r\n        }\r\n    }\r\n    else {\r\n        where.replaceWith(elem);\r\n    }\r\n    runLifecyle(where, onCleanupMap);\r\n}\r\nfunction unmount(elem) {\r\n    if (Array.isArray(elem)) {\r\n        return () => elem.forEach(removeElement);\r\n    }\r\n    else {\r\n        return () => removeElement(elem);\r\n    }\r\n}\r\nfunction removeElement(elem) {\r\n    if (!ignoreIsConnected && elem.isConnected) {\r\n        elem.remove();\r\n        runLifecyle(elem, onCleanupMap);\r\n    }\r\n}\r\n/* c8 ignore next 13 */\r\nasync function schedule(fn, ...args) {\r\n    if (\"scheduler\" in window) {\r\n        // @ts-ignore\r\n        window.scheduler.postTask(() => fn(...args), { priority: \"user-blocking\" });\r\n    }\r\n    else {\r\n        window.requestIdleCallback(() => fn(...args));\r\n    }\r\n}\r\nfunction reactive(initial) {\r\n    let key;\r\n    do\r\n        key = randomText();\r\n    while (Reflect.has(hydro, key));\r\n    Reflect.set(hydro, key, initial);\r\n    Reflect.set(setter, reactiveSymbol, true);\r\n    const chainKeysProxy = chainKeys(setter, [key]);\r\n    if (isObject(initial)) {\r\n        hydroToReactive.set(Reflect.get(hydro, key), chainKeysProxy);\r\n    }\r\n    return chainKeysProxy;\r\n    function setter(val) {\r\n        const keys = // @ts-ignore\r\n         (this && Reflect.has(this, reactiveSymbol) ? this : chainKeysProxy)[keysSymbol.description];\r\n        const [resolvedValue, resolvedObj] = resolveObject(keys);\r\n        const lastProp = keys[keys.length - 1];\r\n        if (isFunction(val)) {\r\n            const returnVal = val(resolvedValue);\r\n            const sameObject = resolvedValue === returnVal;\r\n            if (sameObject)\r\n                return;\r\n            Reflect.set(resolvedObj, lastProp, returnVal ?? resolvedValue);\r\n        }\r\n        else {\r\n            Reflect.set(resolvedObj, lastProp, val);\r\n        }\r\n    }\r\n}\r\nfunction chainKeys(initial, keys) {\r\n    return new Proxy(initial, {\r\n        get(target, subKey, _receiver) {\r\n            if (subKey === reactiveSymbol.description)\r\n                return true;\r\n            if (subKey === keysSymbol.description) {\r\n                return keys;\r\n            }\r\n            if (subKey === Symbol.toPrimitive) {\r\n                return () => isServerSideCached\r\n                    ? `${\"hydro-reactive-\" /* Placeholder.reactiveKey */}${keys.join(\".\")}`\r\n                    : `{{${keys.join(\".\")}}}`;\r\n            }\r\n            return chainKeys(target, [...keys, subKey]);\r\n        },\r\n    });\r\n}\r\nfunction getReactiveKeys(reactiveHydro) {\r\n    const keys = reactiveHydro[keysSymbol.description];\r\n    const lastProp = keys[keys.length - 1];\r\n    return [lastProp, keys.length === 1];\r\n}\r\nfunction unset(reactiveHydro) {\r\n    const [lastProp, oneKey] = getReactiveKeys(reactiveHydro);\r\n    if (oneKey) {\r\n        Reflect.set(hydro, lastProp, null);\r\n        if (hydroToReactive.has(hydro[lastProp])) {\r\n            hydroToReactive.delete(hydro[lastProp]);\r\n        }\r\n    }\r\n    else {\r\n        const [_, resolvedObj] = resolveObject(reactiveHydro[keysSymbol.description]);\r\n        Reflect.set(resolvedObj, lastProp, null);\r\n    }\r\n}\r\nfunction setAsyncUpdate(reactiveHydro, asyncUpdate) {\r\n    const [_, oneKey] = getReactiveKeys(reactiveHydro);\r\n    if (oneKey) {\r\n        hydro.asyncUpdate = asyncUpdate;\r\n    }\r\n    else {\r\n        const [_, resolvedObj] = resolveObject(reactiveHydro[keysSymbol.description]);\r\n        resolvedObj.asyncUpdate = asyncUpdate;\r\n    }\r\n}\r\nfunction observe(reactiveHydro, fn) {\r\n    const [lastProp, oneKey] = getReactiveKeys(reactiveHydro);\r\n    if (oneKey) {\r\n        return hydro.observe(lastProp, fn);\r\n    }\r\n    else {\r\n        const [_, resolvedObj] = resolveObject(reactiveHydro[keysSymbol.description]);\r\n        return resolvedObj.observe(lastProp, fn);\r\n    }\r\n}\r\nfunction unobserve(reactiveHydro) {\r\n    const [lastProp, oneKey] = getReactiveKeys(reactiveHydro);\r\n    if (oneKey) {\r\n        hydro.unobserve(lastProp);\r\n    }\r\n    else {\r\n        const [_, resolvedObj] = resolveObject(reactiveHydro[keysSymbol.description]);\r\n        resolvedObj.unobserve(lastProp);\r\n    }\r\n}\r\nfunction ternary(condition, trueVal, falseVal, reactiveHydro = condition) {\r\n    const checkCondition = (cond) => (!Reflect.has(condition, reactiveSymbol) && isFunction(condition)\r\n        ? condition(cond)\r\n        : isPromise(cond)\r\n            ? false\r\n            : cond)\r\n        ? isFunction(trueVal)\r\n            ? trueVal()\r\n            : trueVal\r\n        : isFunction(falseVal)\r\n            ? falseVal()\r\n            : falseVal;\r\n    const ternaryValue = reactive(checkCondition(getValue(reactiveHydro)));\r\n    observe(reactiveHydro, (newVal) => {\r\n        newVal === null\r\n            ? unset(ternaryValue)\r\n            : ternaryValue(checkCondition(newVal));\r\n    });\r\n    return ternaryValue;\r\n}\r\nfunction emit(eventName, data, who, options = { bubbles: true }) {\r\n    who.dispatchEvent(new window.CustomEvent(eventName, { ...options, detail: data }));\r\n}\r\nlet trackDeps = false;\r\nconst trackProxies = new Set();\r\nconst trackMap = new WeakMap();\r\nconst unobserveMap = new WeakMap();\r\nfunction watchEffect(fn) {\r\n    trackDeps = true;\r\n    const res = fn();\r\n    if (isPromise(res)) {\r\n        res.then(() => {\r\n            trackDeps = false;\r\n        });\r\n    }\r\n    else {\r\n        trackDeps = false;\r\n    }\r\n    const reRun = (newVal) => {\r\n        if (newVal !== null)\r\n            fn();\r\n    };\r\n    for (const proxy of trackProxies) {\r\n        if (!trackMap.has(proxy))\r\n            continue;\r\n        for (const key of trackMap.get(proxy)) {\r\n            proxy.observe(key, reRun);\r\n            if (unobserveMap.has(reRun)) {\r\n                unobserveMap.get(reRun).push({ proxy, key });\r\n            }\r\n            else {\r\n                unobserveMap.set(reRun, [{ proxy, key }]);\r\n            }\r\n        }\r\n        trackMap.delete(proxy);\r\n    }\r\n    trackProxies.clear();\r\n    return () => {\r\n        const entries = unobserveMap.get(reRun);\r\n        entries.forEach((entry) => entry.proxy.unobserve(entry.key, reRun));\r\n        unobserveMap.delete(reRun);\r\n    };\r\n}\r\nfunction getValue(reactiveHydro) {\r\n    const [resolvedValue] = resolveObject(Reflect.get(reactiveHydro, keysSymbol.description));\r\n    return resolvedValue;\r\n}\r\nlet calledOnRender = false;\r\nfunction onRender(fn, elem, ...args) {\r\n    calledOnRender = true;\r\n    onRenderMap.set(elem, args.length ? fn.bind(fn, ...args) : fn);\r\n}\r\nlet calledOnCleanup = false;\r\nfunction onCleanup(fn, elem, ...args) {\r\n    calledOnCleanup = true;\r\n    onCleanupMap.set(elem, args.length ? fn.bind(fn, ...args) : fn);\r\n}\r\n// Core of the library\r\nfunction generateProxy(obj) {\r\n    const handlers = Symbol(\"handlers\"); // For observer pattern\r\n    const boundFunctions = new WeakMap();\r\n    const proxy = new Proxy(obj ?? {}, {\r\n        // If receiver is a getter, then it is the object on which the search first started for the property|key -> Proxy\r\n        set(target, key, val, receiver) {\r\n            if (trackDeps) {\r\n                trackProxies.add(receiver);\r\n                if (trackMap.has(receiver)) {\r\n                    trackMap.get(receiver).add(key);\r\n                }\r\n                else {\r\n                    trackMap.set(receiver, new Set([key]));\r\n                }\r\n            }\r\n            let returnSet = true;\r\n            let oldVal = Reflect.get(target, key, receiver);\r\n            if (oldVal === val)\r\n                return returnSet;\r\n            // Reset Path - mostly GC\r\n            if (val === null) {\r\n                // Remove entry from reactitivyMap underlying Map\r\n                if (reactivityMap.has(receiver)) {\r\n                    const key2NodeMap = reactivityMap.get(receiver);\r\n                    key2NodeMap.delete(String(key));\r\n                    if (key2NodeMap.size === 0) {\r\n                        reactivityMap.delete(receiver);\r\n                    }\r\n                }\r\n                // Inform the Observers about null change and unobserve\r\n                const observer = Reflect.get(target, handlers, receiver);\r\n                if (observer.has(key)) {\r\n                    let set = observer.get(key);\r\n                    for (const handler of set) {\r\n                        handler(null, oldVal);\r\n                    }\r\n                    set.clear();\r\n                    receiver.unobserve(key);\r\n                }\r\n                // If oldVal is a Proxy - clean it\r\n                if (isObject(oldVal) && isProxy(oldVal)) {\r\n                    oldVal.unobserve();\r\n                    reactivityMap.delete(oldVal);\r\n                    if (bindMap.has(oldVal)) {\r\n                        bindMap.get(oldVal).forEach(removeElement);\r\n                        bindMap.delete(oldVal);\r\n                    }\r\n                }\r\n                else {\r\n                    if (bindMap.has(receiver)) {\r\n                        bindMap.get(receiver).forEach(removeElement);\r\n                        bindMap.delete(receiver);\r\n                    }\r\n                }\r\n                // Remove item from array\r\n                /* c8 ignore next 4 */\r\n                if (!internReset && Array.isArray(receiver)) {\r\n                    receiver.splice(Number(key), 1);\r\n                    return returnSet;\r\n                }\r\n                return Reflect.deleteProperty(receiver, key);\r\n            }\r\n            // Set the value\r\n            if (isPromise(val)) {\r\n                val\r\n                    .then((value) => {\r\n                    // No Reflect in order to trigger the Getter\r\n                    receiver[key] = value;\r\n                })\r\n                    .catch((e) => {\r\n                    console.error(e);\r\n                    receiver[key] = null;\r\n                });\r\n                returnSet = Reflect.set(target, key, val, receiver);\r\n                return returnSet;\r\n            }\r\n            else if (isNode(val)) {\r\n                returnSet = Reflect.set(target, key, val, receiver);\r\n            }\r\n            else if (isObject(val) && !isProxy(val)) {\r\n                returnSet = Reflect.set(target, key, generateProxy(val), receiver);\r\n                // Recursively set properties to Proxys too\r\n                for (const [subKey, subVal] of Object.entries(val)) {\r\n                    if (isObject(subVal) && !isProxy(subVal)) {\r\n                        Reflect.set(val, subKey, generateProxy(subVal));\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (!reuseElements &&\r\n                    Array.isArray(receiver) &&\r\n                    receiver.includes(oldVal) &&\r\n                    receiver.includes(val) &&\r\n                    /* c8 ignore start */\r\n                    bindMap.has(val)) {\r\n                    const [elem] = bindMap.get(val);\r\n                    if (lastSwapElem !== elem) {\r\n                        const [oldElem] = bindMap.get(oldVal);\r\n                        lastSwapElem = oldElem;\r\n                        const prevElem = elem.previousSibling;\r\n                        const prevOldElem = oldElem.previousSibling;\r\n                        // Move it in the array too without triggering the proxy set\r\n                        const index = receiver.findIndex((i) => i === val);\r\n                        receiver.splice(Number(key), 1, val);\r\n                        receiver.splice(index, 1, oldVal);\r\n                        prevElem.after(oldElem);\r\n                        prevOldElem.after(elem);\r\n                    }\r\n                    return true;\r\n                }\r\n                else {\r\n                    /* c8 ignore end */\r\n                    returnSet = Reflect.set(target, key, val, receiver);\r\n                }\r\n            }\r\n            const newVal = Reflect.get(target, key, receiver);\r\n            // Check if DOM needs to be updated\r\n            // oldVal can be Proxy value too\r\n            if (reactivityMap.has(oldVal)) {\r\n                checkReactivityMap(oldVal, key, newVal, oldVal);\r\n            }\r\n            else if (reactivityMap.has(receiver)) {\r\n                checkReactivityMap(receiver, key, newVal, oldVal);\r\n            }\r\n            // current val (before setting) is a proxy - take over its keyToNodeMap\r\n            if (isObject(val) && isProxy(val)) {\r\n                if (reactivityMap.has(oldVal)) {\r\n                    // Store old reactivityMap if it is a swap operation\r\n                    reuseElements && tmpSwap.set(oldVal, reactivityMap.get(oldVal));\r\n                    if (tmpSwap.has(val)) {\r\n                        reactivityMap.set(oldVal, tmpSwap.get(val));\r\n                        tmpSwap.delete(val);\r\n                    }\r\n                    else {\r\n                        reactivityMap.set(oldVal, reactivityMap.get(val));\r\n                    }\r\n                }\r\n            }\r\n            // Inform the Observers\r\n            if (returnSet) {\r\n                Reflect.get(target, handlers, receiver)\r\n                    .get(key)\r\n                    ?.forEach((handler) => handler(newVal, oldVal));\r\n            }\r\n            // If oldVal is a Proxy - clean it\r\n            !reuseElements && oldVal && cleanProxy(oldVal);\r\n            return returnSet;\r\n        },\r\n        // fix proxy bugs, e.g Map\r\n        get(target, prop, receiver) {\r\n            if (trackDeps) {\r\n                trackProxies.add(receiver);\r\n                if (trackMap.has(receiver)) {\r\n                    trackMap.get(receiver).add(prop);\r\n                }\r\n                else {\r\n                    trackMap.set(receiver, new Set([prop]));\r\n                }\r\n            }\r\n            const value = Reflect.get(target, prop, receiver);\r\n            if (!isFunction(value)) {\r\n                return value;\r\n            }\r\n            if (!boundFunctions.has(value)) {\r\n                boundFunctions.set(value, value.bind(target));\r\n            }\r\n            return boundFunctions.get(value);\r\n        },\r\n    });\r\n    Reflect.defineProperty(proxy, \"isProxy\" /* Placeholder.isProxy */, {\r\n        value: true,\r\n    });\r\n    Reflect.defineProperty(proxy, \"asyncUpdate\" /* Placeholder.asyncUpdate */, {\r\n        value: globalSchedule,\r\n        writable: true,\r\n    });\r\n    Reflect.defineProperty(proxy, handlers, {\r\n        value: new Map(),\r\n    });\r\n    Reflect.defineProperty(proxy, \"observe\" /* Placeholder.observe */, {\r\n        value(key, handler) {\r\n            const map = Reflect.get(proxy, handlers);\r\n            if (map.has(key)) {\r\n                map.get(key).add(handler);\r\n            }\r\n            else {\r\n                map.set(key, new Set([handler]));\r\n            }\r\n            return () => {\r\n                const handlersForKey = map.get(key);\r\n                if (!handlersForKey)\r\n                    return;\r\n                handlersForKey.delete(handler);\r\n                if (handlersForKey.size === 0) {\r\n                    map.delete(key);\r\n                }\r\n            };\r\n        },\r\n        configurable: true,\r\n    });\r\n    Reflect.defineProperty(proxy, \"getObservers\" /* Placeholder.getObservers */, {\r\n        value() {\r\n            return Reflect.get(proxy, handlers);\r\n        },\r\n        configurable: true,\r\n    });\r\n    Reflect.defineProperty(proxy, \"unobserve\" /* Placeholder.unobserve */, {\r\n        value(key, handler) {\r\n            const map = Reflect.get(proxy, handlers);\r\n            if (key) {\r\n                if (map.has(key)) {\r\n                    if (handler == null) {\r\n                        map.delete(key);\r\n                    }\r\n                    else {\r\n                        const set = map.get(key);\r\n                        if (set?.has(handler)) {\r\n                            set.delete(handler);\r\n                        }\r\n                    }\r\n                }\r\n                /* c8 ignore next 3 */\r\n            }\r\n            else {\r\n                map.clear();\r\n            }\r\n        },\r\n        configurable: true,\r\n    });\r\n    if (!obj)\r\n        Reflect.defineProperty(proxy, _boundFunctions, {\r\n            value: boundFunctions,\r\n        });\r\n    return proxy;\r\n}\r\nfunction cleanProxy(proxy) {\r\n    if (isObject(proxy) && isProxy(proxy)) {\r\n        proxy.unobserve();\r\n        reactivityMap.delete(proxy);\r\n        /* c8 ignore next 4 */\r\n        if (bindMap.has(proxy)) {\r\n            bindMap.get(proxy).forEach(removeElement);\r\n            bindMap.delete(proxy);\r\n        }\r\n    }\r\n}\r\nfunction checkReactivityMap(obj, key, val, oldVal) {\r\n    const keyToNodeMap = reactivityMap.get(obj);\r\n    const nodeToChangeMap = keyToNodeMap.get(String(key));\r\n    if (nodeToChangeMap) {\r\n        /* c8 ignore next 5 */\r\n        if (Reflect.get(obj, \"asyncUpdate\" /* Placeholder.asyncUpdate */)) {\r\n            schedule(updateDOM, nodeToChangeMap, val, oldVal);\r\n        }\r\n        else {\r\n            updateDOM(nodeToChangeMap, val, oldVal);\r\n        }\r\n    }\r\n    if (isObject(val)) {\r\n        const entries = Object.entries(val);\r\n        for (const [subKey, subVal] of entries) {\r\n            const subOldVal = (isObject(oldVal) && Reflect.get(oldVal, subKey)) || oldVal;\r\n            const nodeToChangeMap = keyToNodeMap.get(subKey);\r\n            if (nodeToChangeMap) {\r\n                /* c8 ignore next 5 */\r\n                if (Reflect.get(obj, \"asyncUpdate\" /* Placeholder.asyncUpdate */)) {\r\n                    schedule(updateDOM, nodeToChangeMap, subVal, subOldVal);\r\n                }\r\n                else {\r\n                    updateDOM(nodeToChangeMap, subVal, subOldVal);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\nfunction updateDOM(nodeToChangeMap, val, oldVal) {\r\n    nodeToChangeMap.forEach((entry) => {\r\n        // Circular reference in order to keep Memory low\r\n        if (isNode(entry)) {\r\n            /* c8 ignore next 5 */\r\n            if (!ignoreIsConnected && !entry.isConnected) {\r\n                const tmpChange = nodeToChangeMap.get(entry);\r\n                nodeToChangeMap.delete(entry);\r\n                nodeToChangeMap.delete(tmpChange);\r\n            }\r\n            return; // Continue in forEach\r\n        }\r\n        // For each change of the node update either attribute or textContent\r\n        for (const change of entry) {\r\n            const node = nodeToChangeMap.get(entry);\r\n            const [start, end, key] = change;\r\n            let useStartEnd = false;\r\n            if (isNode(val) && (!isServerSideCached || val !== node)) {\r\n                replaceElement(val, node);\r\n                if (isServerSideCached || val !== node) {\r\n                    nodeToChangeMap.delete(node);\r\n                    nodeToChangeMap.delete(entry);\r\n                    if (!isDocumentFragment(val)) {\r\n                        nodeToChangeMap.set(val, entry);\r\n                        nodeToChangeMap.set(entry, val);\r\n                    }\r\n                }\r\n            }\r\n            else if (isTextNode(node)) {\r\n                useStartEnd = true;\r\n                let text = node.nodeValue;\r\n                node.nodeValue =\r\n                    text.substring(0, start) + String(val) + text.substring(end);\r\n            }\r\n            else {\r\n                if (key === \"two-way\" /* Placeholder.twoWay */) {\r\n                    if (node instanceof window.HTMLInputElement &&\r\n                        node.type === \"radio\" /* Placeholder.radio */) {\r\n                        node.checked = Array.isArray(val)\r\n                            ? val.includes(node.name)\r\n                            : String(val) === node.value;\r\n                    }\r\n                    else if (node instanceof window.HTMLInputElement &&\r\n                        node.type === \"checkbox\" /* Placeholder.checkbox */) {\r\n                        node.checked = val;\r\n                    }\r\n                    else if (node instanceof window.HTMLTextAreaElement ||\r\n                        node instanceof window.HTMLSelectElement ||\r\n                        node instanceof window.HTMLInputElement) {\r\n                        node.value = String(val);\r\n                    }\r\n                }\r\n                else if (isFunction(val) || isEventObject(val)) {\r\n                    const eventName = key.replace(onEventRegex, \"\");\r\n                    const handlerToRemove = isFunction(oldVal) ? oldVal : oldVal.event;\r\n                    removeTrackedEventListener(node, eventName, handlerToRemove);\r\n                    addEventListener(node, eventName, val);\r\n                }\r\n                else if (isObject(val)) {\r\n                    const entries = Object.entries(val);\r\n                    for (const [subKey, subVal] of entries) {\r\n                        if (isFunction(subVal) || isEventObject(subVal)) {\r\n                            const eventName = subKey.replace(onEventRegex, \"\");\r\n                            const previousHandler = oldVal?.[subKey];\r\n                            const handlerToRemove = isFunction(previousHandler)\r\n                                ? previousHandler\r\n                                : previousHandler.event;\r\n                            removeTrackedEventListener(node, eventName, handlerToRemove);\r\n                            addEventListener(node, eventName, subVal);\r\n                        }\r\n                        else {\r\n                            setAttribute(node, subKey, subVal);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    useStartEnd = true;\r\n                    let attr = node.getAttribute(key);\r\n                    if (attr) {\r\n                        attr = attr.substring(0, start) + String(val) + attr.substring(end);\r\n                        setAttribute(node, key, attr === String(val) ? val : attr);\r\n                    }\r\n                    else {\r\n                        setAttribute(node, key, val);\r\n                    }\r\n                }\r\n            }\r\n            if (useStartEnd) {\r\n                // Update end\r\n                change[1] = start + String(val).length;\r\n                // Because we updated the end, we also have to update the start and end for every other reactive change in the node, for the same key\r\n                if (allNodeChanges.has(node)) {\r\n                    let passedNode = false;\r\n                    for (const nodeChange of allNodeChanges.get(node)) {\r\n                        if (nodeChange === change) {\r\n                            passedNode = true;\r\n                            continue;\r\n                        }\r\n                        if (passedNode && (isTextNode(node) || key === nodeChange[2])) {\r\n                            const difference = String(oldVal).length - String(val).length;\r\n                            nodeChange[0] -= difference;\r\n                            nodeChange[1] -= difference;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    });\r\n}\r\nfunction view(root, data, renderFunction) {\r\n    viewElements = true;\r\n    const rootElem = $(root);\r\n    const elements = getValue(data).map(renderFunction);\r\n    rootElem.append(...elements);\r\n    for (const elem of elements)\r\n        runLifecyle(elem, onRenderMap);\r\n    if (rootElem.hasChildNodes()) {\r\n        setReactivity(rootElem, viewElementsEventFunctions);\r\n        viewElementsEventFunctions.clear();\r\n    }\r\n    onCleanup(unset, rootElem, data);\r\n    viewElements = false;\r\n    const stopViewObserver = observe(data, (newData, oldData) => {\r\n        /* c8 ignore start */\r\n        viewElements = true;\r\n        // Reset or re-use\r\n        if (!newData?.length ||\r\n            (!reuseElements && newData?.length === oldData?.length)) {\r\n            rootElem.textContent = \"\";\r\n        }\r\n        else if (reuseElements) {\r\n            for (let i = 0; i < oldData?.length && newData?.length; i++) {\r\n                oldData[i].id = newData[i].id;\r\n                oldData[i].label = newData[i].label;\r\n                newData[i] = oldData[i];\r\n            }\r\n        }\r\n        // Add to existing\r\n        if (oldData?.length &&\r\n            newData?.length > oldData?.length &&\r\n            newData[0] === oldData[0]) {\r\n            const length = oldData.length;\r\n            const slicedData = newData.slice(length);\r\n            const newElements = slicedData.map((item, i) => renderFunction(item, i + length));\r\n            rootElem.append(...newElements);\r\n            for (const elem of newElements)\r\n                runLifecyle(elem, onRenderMap);\r\n        }\r\n        // Add new\r\n        else if (oldData?.length === 0 || (!reuseElements && newData?.length)) {\r\n            if (!reuseElements && oldData?.length && rootElem.hasChildNodes()) {\r\n                rootElem.textContent = \"\";\r\n            }\r\n            const elements = newData.map(renderFunction);\r\n            rootElem.append(...elements);\r\n            for (const elem of elements)\r\n                runLifecyle(elem, onRenderMap);\r\n        }\r\n        if (rootElem.hasChildNodes()) {\r\n            setReactivity(rootElem, viewElementsEventFunctions);\r\n            viewElementsEventFunctions.clear();\r\n        }\r\n        viewElements = false;\r\n        /* c8 ignore end */\r\n    });\r\n    onCleanup(stopViewObserver, rootElem);\r\n}\r\nconst hydro = generateProxy();\r\nconst $ = document.querySelector.bind(document);\r\nconst $$ = document.querySelectorAll.bind(document);\r\nconst internals = {\r\n    compare,\r\n    allNodeChanges,\r\n    hydroToReactive,\r\n    boolAttrList: Array.from(boolAttrSet),\r\n};\r\nexport { render, html, h, hydro, setGlobalSchedule, setReuseElements, setInsertDiffing, setShouldSetReactivity, setIgnoreIsConnected, reactive, unset, setAsyncUpdate, unobserve, observe, ternary, emit, watchEffect, internals, getValue, onRender, onCleanup, setReactivity, $, $$, view, isServerSide, };\r\n"]}