{"version":3,"file":"internal-DchK7S7v.mjs","sources":["../../src/common.ts","../../src/dom.ts","../../src/expressions.ts","../../src/reactive.ts","../../src/component.ts","../../src/hydration.ts"],"sourcesContent":["/**\n * A queue of expressions to run as soon as an async slot opens up.\n */\nconst queueMarker = Symbol();\nlet queueStack = [];\n/**\n * A stack of functions to run on the next tick.\n */\nlet nextTicks = [];\nlet cleanupCollector = null;\n/**\n * Adds the ability to listen to the next tick.\n * @param  {CallableFunction} fn?\n * @returns Promise\n */\nexport function nextTick(fn) {\n    return !queueStack.length\n        ? Promise.resolve(fn?.())\n        : new Promise((resolve) => nextTicks.push(() => {\n            fn?.();\n            resolve();\n        }));\n}\nexport function isTpl(template) {\n    return typeof template === 'function' && !!template.isT;\n}\nexport function isO(obj) {\n    return obj !== null && typeof obj === 'object';\n}\nexport function isR(obj) {\n    return isO(obj) && '$on' in obj;\n}\nexport function isChunk(chunk) {\n    return isO(chunk) && 'ref' in chunk;\n}\n/**\n * Queue an item to execute after all synchronous functions have been run. This\n * is used for `w()` to ensure multiple dependency mutations tracked on the\n * same expression do not result in multiple calls.\n * @param  {CallableFunction} fn\n * @returns PropertyObserver\n */\nexport function queue(fn) {\n    const queued = fn;\n    return (newValue, oldValue) => {\n        if (!queued[queueMarker]) {\n            queued[queueMarker] = true;\n            queued._n = newValue;\n            queued._o = oldValue;\n            if (!queueStack.length) {\n                queueMicrotask(executeQueue);\n            }\n            queueStack.push(queued);\n        }\n    };\n}\nfunction executeQueue() {\n    const queue = queueStack;\n    queueStack = [];\n    const ticks = nextTicks;\n    nextTicks = [];\n    for (let i = 0; i < queue.length; i++) {\n        const fn = queue[i];\n        const newValue = fn._n;\n        const oldValue = fn._o;\n        fn._n = undefined;\n        fn._o = undefined;\n        fn[queueMarker] = false;\n        fn(newValue, oldValue);\n    }\n    for (let i = 0; i < ticks.length; i++)\n        ticks[i]();\n    if (queueStack.length) {\n        queueMicrotask(executeQueue);\n    }\n}\nexport function swapCleanupCollector(collector) {\n    const previous = cleanupCollector;\n    cleanupCollector = collector;\n    return previous;\n}\nexport function registerCleanup(fn) {\n    cleanupCollector?.push(fn);\n}\nexport function onCleanup(fn) {\n    const collector = cleanupCollector;\n    if (!collector)\n        throw Error('onCleanup needs component');\n    let active = 1;\n    const dispose = () => active-- && (collector.splice(collector.indexOf(dispose), 1), fn());\n    return collector.push(dispose), dispose;\n}\n","export function setAttr(node, attrName, value) {\n    if (attrName === '.innerhtml')\n        attrName = '.innerHTML';\n    const isIDL = (attrName === 'value' && 'value' in node) ||\n        attrName === 'checked' ||\n        (attrName[0] === '.' && (attrName = attrName.slice(1)));\n    if (isIDL) {\n        // @ts-ignore:next-line\n        node[attrName] = value;\n        if (node.getAttribute(attrName) != value)\n            value = false;\n    }\n    value !== false\n        ? node.setAttribute(attrName, value)\n        : node.removeAttribute(attrName);\n}\n","import { setAttr } from './dom';\nexport const expressionPool = [];\nconst expressionObservers = [];\nconst expressionObserverAttrs = [];\nconst freeExpressionPointers = [];\nlet cursor = 0;\nexport function createExpressionBlock(len) {\n    const bucket = freeExpressionPointers[len];\n    const pointer = bucket?.length ? bucket.pop() : cursor;\n    expressionPool[pointer] = len;\n    if (pointer === cursor)\n        cursor += len + 1;\n    return pointer;\n}\nexport function writeExpressions(expSlots, pointer, offset = 0) {\n    const len = expressionPool[pointer];\n    for (let i = 1; i <= len; i++) {\n        const nextValue = expSlots[offset + i - 1];\n        const target = pointer + i;\n        if (Object.is(expressionPool[target], nextValue))\n            continue;\n        expressionPool[target] = nextValue;\n        const observer = expressionObservers[target];\n        if (!observer)\n            continue;\n        const attr = expressionObserverAttrs[target];\n        if (attr !== undefined)\n            setAttr(observer, attr, nextValue);\n        else if (typeof observer === 'function')\n            observer(nextValue);\n        else\n            observer.data = nextValue || nextValue === 0 ? nextValue : '';\n    }\n}\nexport function onExpressionUpdate(pointer, observer, attrName) {\n    expressionObservers[pointer] = observer;\n    expressionObserverAttrs[pointer] = attrName;\n}\nexport function releaseExpressions(pointer) {\n    const len = expressionPool[pointer];\n    if (len === undefined)\n        return;\n    for (let i = 0; i <= len; i++) {\n        expressionPool[pointer + i] = undefined;\n        expressionObservers[pointer + i] = undefined;\n        expressionObserverAttrs[pointer + i] = undefined;\n    }\n    ;\n    (freeExpressionPointers[len] ??= []).push(pointer);\n}\n","import { isR, isO, queue, registerCleanup } from './common';\nimport { expressionPool, onExpressionUpdate } from './expressions';\n/**\n * A registry of reactive objects to their unique numeric index which serves as\n * an unique identifier.\n */\nconst ids = new WeakMap();\nconst computedIds = [];\n/**\n * A registry of reactive objects to their property observers.\n */\nconst listeners = [];\n/**\n * Gets the unique id of a given target.\n * @param target - The object to get the id of.\n * @returns\n */\nconst getId = (target) => ids.get(target);\n/**\n * An index counter for the reactive objects.\n */\nlet index = -1;\n/**\n * An index counter to identify watchers.\n */\nlet watchIndex = 0;\n/**\n * The current key being tracked.\n */\nlet trackKey = 0;\n/**\n * Array methods that modify the array.\n */\n/**\n * A registry of dependencies for each tracked key.\n */\nconst trackedDependencies = [];\n/**\n * A registry of dependencies that are being watched by a given watcher.\n */\nconst watchedDependencies = [];\nconst dependencyPool = [];\nconst arrayMutationWrappers = [];\nconst arrayMutations = {\n    push: 1,\n    pop: 1,\n    shift: 1,\n    unshift: 1,\n    splice: 1,\n    sort: 1,\n    copyWithin: 1,\n    fill: 1,\n    reverse: 1,\n};\n/**\n * A map of child ids to their parents (a child can have multiple parents).\n */\nconst parents = [];\nexport function reactive(data) {\n    if (typeof data === 'function') {\n        const state = reactive({\n            value: undefined,\n        });\n        computedIds[getId(state)] = true;\n        watch(data, (value) => (state.value = value));\n        return state;\n    }\n    // The data is already a reactive object, so return it.\n    if (isR(data))\n        return data;\n    // Only valid objects can be reactive.\n    if (!isO(data))\n        throw Error('Expected object');\n    // Create a new slot in the listeners registry and then store the relationship\n    // of this object to its index.\n    const id = ++index;\n    listeners[id] = {};\n    // Create the actual reactive proxy.\n    const proxy = new Proxy(data, proxyHandler);\n    // let the ids know about the index\n    ids.set(data, id).set(proxy, id);\n    return proxy;\n}\n/**\n *\n * @param parentId - The id of the parent object.\n * @param property - The property of the parent object.\n * @param value - The value of the property.\n * @returns\n */\nfunction trackArray(id, key, target, value) {\n    if (typeof value === 'function' &&\n        arrayMutations[key]) {\n        let wrappers = arrayMutationWrappers[id];\n        if (!wrappers)\n            wrappers = arrayMutationWrappers[id] = {};\n        let wrapper = wrappers[key];\n        if (!wrapper) {\n            wrapper = (...args) => {\n                const result = Reflect.apply(value, target, args);\n                emitParents(id);\n                return result;\n            };\n            wrappers[key] = wrapper;\n        }\n        return wrapper;\n    }\n    if (isComputed(value))\n        return readComputed(value, id, key);\n    if (key !== 'length' && typeof value !== 'function') {\n        track(id, key);\n    }\n    return value;\n}\nconst proxyHandler = {\n    has(target, key) {\n        if (key in api)\n            return true;\n        track(getId(target), key);\n        return key in target;\n    },\n    get(target, key, receiver) {\n        const id = getId(target);\n        if (key in api)\n            return api[key];\n        const result = Reflect.get(target, key, receiver);\n        let child;\n        if (isO(result) && !isR(result)) {\n            child = createChild(result, id, key);\n            target[key] = child;\n        }\n        const value = child ?? result;\n        if (Array.isArray(target))\n            return trackArray(id, key, target, value);\n        if (isComputed(value))\n            return readComputed(value, id, key);\n        track(id, key);\n        return value;\n    },\n    set(target, key, value, receiver) {\n        const id = getId(target);\n        const isNewProperty = !(key in target);\n        const newReactive = isO(value) && !isR(value) ? createChild(value, id, key) : null;\n        const oldValue = target[key];\n        const newValue = newReactive ?? value;\n        if (isR(newValue) && computedIds[getId(newValue)]) {\n            linkParent(getId(newValue), id, key);\n        }\n        const didSucceed = Reflect.set(target, key, newValue, receiver);\n        if (oldValue !== newValue && isR(oldValue) && isR(newValue)) {\n            const oldParents = parents[getId(oldValue)];\n            if (oldParents) {\n                let index = -1;\n                for (let i = 0; i < oldParents.length; i++) {\n                    const [parent, property] = oldParents[i];\n                    if (parent == id && property == key) {\n                        index = i;\n                        break;\n                    }\n                }\n                if (index > -1)\n                    oldParents.splice(index, 1);\n            }\n            linkParent(getId(newValue), id, key);\n        }\n        emit(id, key, value, oldValue, isNewProperty || (key === 'value' && computedIds[id]));\n        if (Array.isArray(target) && key === 'length') {\n            emitParents(id);\n        }\n        return didSucceed;\n    },\n};\n/**\n *\n * @param child - Creates a child relationship\n * @param parent\n * @param key\n * @returns\n */\nfunction createChild(child, parentId, key) {\n    const r = reactive(child);\n    linkParent(getId(child), parentId, key);\n    return r;\n}\nfunction isComputed(value) {\n    return isR(value) && computedIds[getId(value)];\n}\nfunction readComputed(value, parentId, key) {\n    const computedId = getId(value);\n    track(parentId, key);\n    linkParent(computedId, parentId, key);\n    track(computedId, 'value');\n    return value.value;\n}\nfunction linkParent(childId, parentId, key) {\n    const entries = parents[childId];\n    if (entries) {\n        for (let i = 0; i < entries.length; i++) {\n            const [parent, property] = entries[i];\n            if (parent === parentId && property === key)\n                return;\n        }\n    }\n    else {\n        parents[childId] = [];\n    }\n    parents[childId].push([parentId, key]);\n}\n/**\n *\n * @param id - The reactive id that changed.\n * @param key - The property that changed.\n * @param newValue - The new value of the property.\n * @param oldValue - The old value of the property.\n */\nfunction emit(id, key, newValue, oldValue, notifyParents) {\n    const targetListeners = listeners[id];\n    const propertyListeners = targetListeners[key];\n    if (propertyListeners) {\n        if (Array.isArray(propertyListeners)) {\n            for (let i = 0; i < propertyListeners.length; i++) {\n                propertyListeners[i](newValue, oldValue);\n            }\n        }\n        else {\n            propertyListeners(newValue, oldValue);\n        }\n    }\n    if (notifyParents) {\n        emitParents(id);\n    }\n}\nfunction emitParents(id) {\n    const parentEntries = parents[id];\n    if (!parentEntries)\n        return;\n    for (let i = 0; i < parentEntries.length; i++) {\n        const [parentId, property] = parentEntries[i];\n        emit(parentId, property);\n    }\n}\nfunction reactiveOn(property, callback) {\n    addListener(listeners[getId(this)], property, callback);\n}\nfunction reactiveOff(property, callback) {\n    removeListener(listeners[getId(this)], property, callback);\n}\n/**\n * The public reactive API for a reactive object.\n */\nconst api = {\n    $on: reactiveOn,\n    $off: reactiveOff,\n};\n/**\n * Track a reactive property as a dependency.\n * @param target\n * @param key\n */\nfunction track(id, property) {\n    if (!trackKey)\n        return;\n    trackedDependencies[trackKey].push(id, property);\n}\n/**\n * Begin tracking reactive dependencies.\n */\nfunction startTracking() {\n    trackedDependencies[++trackKey] = dependencyPool.pop() ?? [];\n}\n/**\n * Stop tracking reactive dependencies and register a callback for when any of\n * the tracked dependencies change.\n * @param callback - A function to re-run when dependencies change.\n */\nfunction stopTracking(watchKey, callback) {\n    const key = trackKey--;\n    const deps = trackedDependencies[key];\n    const previousDeps = watchedDependencies[watchKey];\n    const previousLength = previousDeps?.length;\n    if (previousLength && previousLength === deps.length) {\n        let matched = true;\n        for (let i = 0; i < previousLength; i++) {\n            if (previousDeps[i] === deps[i])\n                continue;\n            matched = false;\n            break;\n        }\n        if (matched) {\n            watchedDependencies[watchKey] = previousDeps;\n            deps.length = 0;\n            dependencyPool.push(deps);\n            trackedDependencies[key] = undefined;\n            return;\n        }\n    }\n    flushListeners(previousDeps, callback);\n    for (let i = 0; i < deps.length; i += 2) {\n        addListener(listeners[deps[i]], deps[i + 1], callback);\n    }\n    watchedDependencies[watchKey] = deps;\n    trackedDependencies[key] = undefined;\n}\n/**\n * Removes a callback from the listeners registry for a given set of\n * dependencies.\n * @param deps - The dependencies to flush.\n * @param callback - The callback to remove.\n */\nfunction flushListeners(deps, callback) {\n    if (!deps)\n        return;\n    for (let i = 0; i < deps.length; i += 2) {\n        removeListener(listeners[deps[i]], deps[i + 1], callback);\n    }\n    deps.length = 0;\n    dependencyPool.push(deps);\n}\nfunction addListener(targetListeners, key, callback) {\n    const slot = targetListeners[key];\n    if (!slot) {\n        targetListeners[key] = callback;\n        return;\n    }\n    if (Array.isArray(slot)) {\n        if (!slot.includes(callback))\n            slot.push(callback);\n        return;\n    }\n    if (slot !== callback)\n        targetListeners[key] = [slot, callback];\n}\nfunction removeListener(targetListeners, key, callback) {\n    const slot = targetListeners[key];\n    if (!slot)\n        return;\n    if (Array.isArray(slot)) {\n        const index = slot.indexOf(callback);\n        if (index < 0)\n            return;\n        if (slot.length === 2) {\n            targetListeners[key] = slot[index ? 0 : 1];\n            return;\n        }\n        slot.splice(index, 1);\n        return;\n    }\n    if (slot === callback) {\n        delete targetListeners[key];\n    }\n}\nexport function watch(effect, afterEffect) {\n    const watchKey = ++watchIndex;\n    const isPointer = typeof effect === 'number';\n    let rerun = queue(runEffect);\n    function runEffect() {\n        startTracking();\n        const effectValue = isPointer\n            ? expressionPool[effect]()\n            : effect();\n        stopTracking(watchKey, rerun);\n        return afterEffect ? afterEffect(effectValue) : effectValue;\n    }\n    const stop = () => {\n        flushListeners(watchedDependencies[watchKey], rerun);\n        watchedDependencies[watchKey] = undefined;\n        if (isPointer)\n            onExpressionUpdate(effect);\n        rerun = null;\n    };\n    if (!isPointer)\n        registerCleanup(stop);\n    if (isPointer)\n        onExpressionUpdate(effect, runEffect);\n    return [runEffect(), stop];\n}\n","import { reactive } from './reactive';\nconst AsyncFunction = (async () => { }).constructor;\nlet asyncComponentInstaller = null;\nfunction setComponentKey(key) {\n    this.k = key;\n    return this;\n}\nconst propsProxyHandler = {\n    get(target, key) {\n        return target[0]?.[key];\n    },\n    has(target, key) {\n        return key in (target[0] || {});\n    },\n    ownKeys(target) {\n        return Reflect.ownKeys(target[0] || {});\n    },\n    getOwnPropertyDescriptor(target, key) {\n        const source = target[0];\n        return source && {\n            configurable: true,\n            enumerable: true,\n            writable: true,\n            value: source[key],\n        };\n    },\n    set(target, key, value) {\n        return !!target[0] && Reflect.set(target[0], key, value);\n    },\n};\nconst narrowedPropsHandler = {\n    get(target, key) {\n        return target.k.includes(key)\n            ? target.s[key]\n            : undefined;\n    },\n    set(target, key, value) {\n        if (!target.k.includes(key))\n            return false;\n        return Reflect.set(target.s, key, value);\n    },\n};\nexport function pick(source, ...keys) {\n    return keys.length\n        ? new Proxy({\n            k: keys,\n            s: source,\n        }, narrowedPropsHandler)\n        : source;\n}\nexport function component(factory, options) {\n    if (options || factory.constructor === AsyncFunction) {\n        if (!asyncComponentInstaller) {\n            throw Error('Async runtime missing.');\n        }\n        return asyncComponentInstaller(factory, options);\n    }\n    return ((input, events) => ({\n        h: factory,\n        k: undefined,\n        p: input,\n        e: events,\n        key: setComponentKey,\n    }));\n}\nexport function installAsyncComponentInstaller(installer) {\n    asyncComponentInstaller = installer;\n}\nexport function isCmp(value) {\n    return !!value && typeof value === 'object' && 'h' in value;\n}\nexport function createPropsProxy(source, factory, events) {\n    const box = reactive({ 0: source, 1: factory, 2: events });\n    const emit = ((event, payload) => {\n        const handler = box[2]?.[event];\n        if (typeof handler === 'function')\n            handler(payload);\n    });\n    return [\n        new Proxy(box, propsProxyHandler),\n        emit,\n        box,\n    ];\n}\n","let hydrationCaptureProvider = null;\nexport function installHydrationCaptureProvider(provider) {\n    hydrationCaptureProvider = provider;\n}\nexport function createHydrationCapture() {\n    return {\n        hooks: new WeakMap(),\n    };\n}\nexport function getHydrationCapture() {\n    return hydrationCaptureProvider?.() ?? null;\n}\nexport function registerHydrationHook(chunk, hook) {\n    const capture = getHydrationCapture();\n    if (!capture)\n        return;\n    const hooks = capture.hooks.get(chunk);\n    if (hooks) {\n        hooks.push(hook);\n    }\n    else {\n        capture.hooks.set(chunk, [hook]);\n    }\n}\nexport function adoptCapturedChunk(capture, chunk, map, visited = new WeakSet()) {\n    if (visited.has(chunk))\n        return;\n    visited.add(chunk);\n    const ref = chunk.ref;\n    if (ref.f)\n        ref.f = map.get(ref.f) ?? ref.f;\n    if (ref.l)\n        ref.l = map.get(ref.l) ?? ref.l;\n    capture.hooks.get(chunk)?.forEach((hook) => hook(map, visited));\n}\n"],"names":[],"mappings":"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"}