{"version":3,"file":"ftl.min.mjs","sources":["../src/ftl/ast.mjs","../src/ftl/expressions-parser.peggy","../src/ftl/expressions.mjs","../src/ftl/dom.mjs","../src/ftl/template.mjs","../src/ftl/registry.mjs","../src/ftl/templates.mjs","../src/ftl/rendering.mjs","../src/ftl/parsed-element.mjs"],"sourcesContent":["const nodes = {\n    ter: Symbol('ternary'),\n    elv: Symbol('elvis'),\n    nullc: Symbol('null-coalescence'),\n    or: Symbol('or'),\n    and: Symbol('and'),\n    eq: Symbol('eq'),\n    cmp: Symbol('cmp'),\n    not: Symbol('not'),\n    access: Symbol('access'),\n    member: Symbol('access-member'),\n    subscript: Symbol('access-subscript'),\n    method: Symbol('access-method-call'),\n    call: Symbol('module-function-call'),\n    tstring: Symbol('tstring'),\n    literal: Symbol('literal'),\n    array: Symbol('array-literal'),\n    dict: Symbol('dict-literal'),\n    function: Symbol('module-function'),\n    symbol: Symbol('symbol'),\n    templated: {\n        ten: Symbol('templated-node'),\n        teh: Symbol('templated-html'),\n        tet: Symbol('templated-text'),\n        tel: Symbol('templated-literal'),\n    },\n    dom: {\n        t: Symbol('text'),\n        h: Symbol('html'),\n        n: Symbol('node'),\n    },\n};\n\nexport { nodes };\n","{{\n    import { nodes } from \"./ast.mjs\";\n}}\n\nTemplatedRoot = TemplatedExpression*\n\nTemplatedExpression = value:(BeginNode @ExpressionRoot EndNode) { return {type:nodes.templated.ten, value}}\n\t/ value:(BeginHtml @ExpressionRoot EndHtml) { return {type:nodes.templated.teh, value}}\n\t/ value:(BeginText @ExpressionRoot EndText) { return {type:nodes.templated.tet, value}} \n\t/ value:TemplatedText { return {type:nodes.templated.tel, value}}\n\nBeginNode = '{{{{'\nEndNode = '}}}}'\t\nBeginHtml = '{{{'\nEndHtml = '}}}'\nBeginText = '{{'\nEndText = '}}'\n\nTemplatedText\n    = parts:(\n        $( [^\\\\{]+ )       // normal text\n        / '\\\\' c:. { return c; } //escaped\n        / '{' !'{'           // single brace that isn't a delimiter\n    )+ { return parts.join(''); }\n\nExpressionRoot\n    = _ r:Expression _ { return r; }\n\nExpression = TernaryExpression\n\nTernaryExpression \n    = cond:ElvisExpression _ \"?\" _ ifTrue:TernaryExpression _ \":\" _ ifFalse:TernaryExpression { return {type:nodes.ter, cond, ifTrue, ifFalse}; }\n    / ElvisExpression\n\nElvisExpression\n    = cond:NullCoalescingExpression _ \"?:\" _ ifFalse:ElvisExpression {return {type:nodes.elv, cond, ifFalse}; }\n    / NullCoalescingExpression\n\nNullCoalescingExpression\n    = lhs:OrExpression _ \"??\" _ rhs:NullCoalescingExpression { return {type:nodes.nullc, lhs, rhs}; } \n    / OrExpression\n\nOrExpression \n    = head:AndExpression tail:(_ \"||\" _ @rhs:AndExpression)* {\n        let result = head;\n        for (const rhs of tail) {\n            result = {type: nodes.or, lhs: result, rhs};\n        }\n        return result;\n    }\n\nAndExpression\n    = head:EqExpression tail:(_ \"&&\" _ @rhs:EqExpression)* { \n        let result = head;\n        for (const rhs of tail) {\n            result = {type: nodes.and, lhs: result, rhs};\n        }\n        return result;\n    }\n\nEqExpression\n    = head:RelExpression tail:(_ op:EqualityOp _ rhs:RelExpression {return {op, rhs};})* { \n        let result = head;\n        for (const element of tail) {\n            result = {type: nodes.eq, op: element.op, lhs: result, rhs: element.rhs};\n        }\n        return result;\n    }\n\nRelExpression\n    = head:NotExpression tail:(_ op:RelationalOp _ rhs:NotExpression {return {op, rhs};})* {\n        let result = head;\n        for (const element of tail) {\n            result = {type: nodes.cmp, op: element.op, lhs: result, rhs: element.rhs};\n        }\n        return result;\n    }\n\n\nNotExpression\n    = \"!\" _ expr:NotExpression { return {type:nodes.not, expr} }\n    / Access\n\n\nAccess    \n    = lhs:GroupingExpression _ rhs:(@AccessExpression _)+ { return {type: nodes.access, lhs, rhs} }   \n    / GroupingExpression\n\n\nAccessExpression \n    = AccessMember\n    / AccessSubscript \n    / AccessMethodCall\n    \nAccessMember \"member\"\n    = op:(\"?.\"/\".\") _ rhs:Symbol { \n        return {type: nodes.member, ns: op === '?.', rhs: rhs.value}; \n    }\n\nAccessSubscript \"subscript\" \n    = op:\"?.\"? \"[\" _ rhs:Expression _ \"]\"  { \n        return {type: nodes.subscript, ns: op !== null, rhs}; \n    } \n\nAccessMethodCall \"method-call\" \n    = op:\"?.\"? \"(\" _ h:(@Expression _)? t:(\",\" _ @Expression _)* \")\" { \n        return {type: nodes.method, ns: op !== null, args: h === null ? [] : [h, ...t]}; \n    }\n\nGroupingExpression \n    = \"(\" _ e:Expression _ \")\" { return e }\n    / ModuleFunctionCall \n    / AnyLiteral\n    / Symbol\n\n\nModuleFunctionCall \"module-function-call\" \n    = fn:ModuleFunction \"(\" _ h:(@Expression _)? t:(\",\" _ @Expression _)* \")\" {\n        const args = h === null ? [] : [h, ...t];\n        return {type: nodes.call, value: fn, args};\n    }\n\nAnyLiteral\n    = NumberLiteral\n    / BooleanLiteral\n    / NullLiteral\n    / UndefinedLiteral\n    / StringLiteral\n    / ArrayLiteral\n    / DictLiteral\n\nBooleanLiteral \"boolean-literal\"\n    = \"true\" { \n        return {type: nodes.literal, value: true}; \n    }\n    / \"false\" { \n        return {type: nodes.literal, value: false}; \n    }\n\nNullLiteral \"null-literal\"\n    = \"null\" {\n        return {type: nodes.literal, value: null};\n    }\n\nUndefinedLiteral \"undefined-literal\"  // <--- Add this\n    = \"undefined\" {\n        return {type: nodes.literal, value: undefined};\n    }    \n\nNumberLiteral \"number-literal\" \n    = value:$( '-'? ([0-9]+ ('.' [0-9]*)? / '.' [0-9]+ ) ) {\n        return { type: nodes.literal, value: parseFloat(value) };\n    }\n\nStringLiteral \"string-literal\"\n    = \"'\" value:$[^']* \"'\"  { return {type: nodes.literal, value}; }\n    / '\"' value:$[^\"]* '\"'  { return {type: nodes.literal, value}; }\n    / \"`\" parts:(TemplateStringExpression / TemplateStringLiteral)* \"`\" { \n        return {type: nodes.tstring, parts}; \n    }\n\nTemplateStringExpression \"tstring-expression\"\n    = \"{\" _ expr:Expression _ \"}\" { \n        return expr; \n    }\n\nTemplateStringLiteral \"tstring-literal\"\n    = parts:(\n        $([^\\\\`{]+)\n        / \"\\\\\" c:. { return c; }\n    )+ {\n        return { type: nodes.literal, value: parts.join('') };\n    }\n    / char:$(\"{\") { \n        return { type: nodes.literal, value: char }; \n    }\n\nArrayLiteral \"array-literal\" \n    = \"[\" _ h:(Expression)? _ t:(\",\" _ @Expression _)* \"]\" { \n        const value = h === null ? [] : [h, ...t];\n        return {type: nodes.array, value};\n    }\n\nDictLiteral \"dict-literal\" \n    = \"{\" _ h:(@StringLiteral _ \":\" _ @Expression)? _ t:(\",\" _ @StringLiteral _ \":\" _ @Expression _)* \"}\" {\n        var value = []\n        if (h !== null){\n            value.push(h);\n        }\n        value.push.apply(value, t);\n        return {type: nodes.dict, value};   \n    }\n\nModuleFunction \"module-function\"\n    = '#' module:(@$([a-zA-Z$_][a-zA-Z$_0-9_]*) ':')? v:$([a-zA-Z$_][a-zA-Z$_0-9_]*) {\n        return {type: nodes.function, module, value: v}\n    }\n\nSymbol \"symbol\"\n    = s:$([a-zA-Z$_][a-zA-Z$_0-9_]*) { \n        return {type: nodes.symbol, value: s}; \n    }\n    \nEqualityOp\n    = \"==\"\n    / \"!=\"\n\nRelationalOp\n    = \">=\"\n    / \">\"\n    / \"<=\"\n    / \"<\"\n\n_ \"whitespaces\"\n    = [ \\t\\n\\r]*\n\n","import { parse } from './expressions-parser.peggy';\nimport { nodes } from './ast.mjs';\n\nclass EvaluatingVisitor {\n    #modules;\n    #dataStack;\n    constructor(modules, dataStack) {\n        this.#modules = modules;\n        this.#dataStack = dataStack;\n    }\n    #resolve(prop) {\n        if (prop === 'self') {\n            return this.#dataStack[this.#dataStack.length - 1];\n        }\n        for (let i = this.#dataStack.length - 1; i >= 0; i--) {\n            const overlay = this.#dataStack[i];\n            if (overlay != null && (typeof overlay === 'object' || typeof overlay === 'function')) {\n                if (prop in overlay) {\n                    return overlay[prop];\n                }\n            }\n        }\n        return undefined;\n    }\n\n    #cached_resolve_proxy;\n    #resolve_proxy() {\n        if (!this.#cached_resolve_proxy) {\n            this.#cached_resolve_proxy = new Proxy(this.#dataStack, {\n                get: (target, prop) => this.#resolve(prop)\n            });\n        }\n        return this.#cached_resolve_proxy;\n    }\n    [nodes.and](node) {\n        return this.visit(node.lhs) && this.visit(node.rhs);\n    }\n    [nodes.or](node) {\n        return this.visit(node.lhs) || this.visit(node.rhs);\n    }\n    [nodes.nullc](node) {\n        const lhs = this.visit(node.lhs);\n        return lhs !== null && lhs !== undefined ? lhs : this.visit(node.rhs);\n    }\n    [nodes.not](node) {\n        return !this.visit(node.expr);\n    }\n    [nodes.eq](node) {\n        const lhs = this.visit(node.lhs);\n        const rhs = this.visit(node.rhs);\n        const eq = lhs === rhs;\n        return node.op === '==' ? eq : !eq;\n    }\n    [nodes.cmp](node) {\n        const lhs = this.visit(node.lhs);\n        const rhs = this.visit(node.rhs);\n        switch (node.op) {\n            case '>':\n                return lhs > rhs;\n            case '<':\n                return lhs < rhs;\n            case '>=':\n                return lhs >= rhs;\n            case '<=':\n                return lhs <= rhs;\n            default:\n                throw new Error('unknown cmp op ' + node.op);\n        }\n    }\n    [nodes.call](node) {\n        const fnRef = node.value;\n        const module = fnRef.module === null ? this.#modules : this.#modules?.[fnRef.module];\n        if (!module) {\n            throw new Error(`Module \"${fnRef.module}\" not found`);\n        }\n        const fn = module[fnRef.value];\n        if (!fn) {\n            throw new Error(`Function \"#${fnRef.module === null ? '' : fnRef.module + ':'}${fnRef.value}\" not found`);\n        }\n        const args = node.args.map((arg) => this.visit(arg));\n        return fn.apply(this.#resolve_proxy(), args);\n    }\n    [nodes.literal](node) {\n        return node.value;\n    }\n    [nodes.tstring](node) {\n        let result = '';\n        const parts = node.parts;\n        for (let i = 0, len = parts.length; i < len; i++) {\n            const evaluated = this.visit(parts[i]);\n            if (evaluated !== null && evaluated !== undefined) {\n                result += evaluated;\n            }\n        }\n        return result;\n    }\n    [nodes.symbol](node) {\n        return this.#resolve(node.value);\n    }\n    [nodes.dict](node) {\n        return Object.fromEntries(node.value.map((entry) => [entry[0].value, this.visit(entry[1])]));\n    }\n    [nodes.array](node) {\n        return node.value.map((v) => this.visit(v));\n    }\n    [nodes.ter](node) {\n        return this.visit(node.cond) ? this.visit(node.ifTrue) : this.visit(node.ifFalse);\n    }\n    [nodes.elv](node) {\n        const cond = this.visit(node.cond);\n        return cond ? cond : this.visit(node.ifFalse);\n    }\n    [nodes.access](node) {\n        let prev = undefined;\n        let cur = this.visit(node.lhs);\n        for (let i = 0; i !== node.rhs.length; ++i) {\n            const rhs = node.rhs[i];\n            if (rhs.ns && cur == null) {\n                return undefined;\n            }\n            let value = undefined;\n            switch (rhs.type) {\n                case nodes.member: {\n                    value = cur[rhs.rhs];\n                    break;\n                }\n                case nodes.subscript: {\n                    value = cur[this.visit(rhs.rhs)];\n                    break;\n                }\n                case nodes.method: {\n                    if (!cur) {\n                        throw new Error(`Method missing \"${node.rhs[i - 1].rhs}\"`);\n                    }\n                    const args = rhs.args.map((arg) => this.visit(arg));\n                    value = cur.apply(prev, args);\n                    break;\n                }\n            }\n            prev = cur;\n            cur = value;\n        }\n        return cur;\n    }\n    visit(node, ...args) {\n        return this[node.type](node, ...args);\n    }\n    visitRoot(ast, templated) {\n        return !templated\n            ? this.visit(ast)\n            : ast.map((node) => {\n                switch (node.type) {\n                    case nodes.templated.tel:\n                        return { type: nodes.dom.t, value: node.value };\n                    case nodes.templated.tet:\n                        return { type: nodes.dom.t, value: this.visit(node.value) };\n                    case nodes.templated.teh:\n                        return { type: nodes.dom.h, value: this.visit(node.value) };\n                    case nodes.templated.ten:\n                        return { type: nodes.dom.n, value: this.visit(node.value) };\n                    default:\n                        throw new Error('unknown node type ' + node.type.toString());\n                }\n            });\n    }\n}\n\nclass Expressions {\n    static MODE_EXPRESSION = Symbol('MODE_EXPRESSION');\n    static MODE_TEMPLATED = Symbol('MODE_TEMPLATED');\n\n    static #astCache = new Map();\n    static #MAX_CACHE_SIZE = 1000;\n\n    /**\n     * Parses an expression.\n     * @param {string} expression\n     * @param {(typeof Expressions.MODE_EXPRESSION | typeof Expressions.MODE_TEMPLATED)?} [mode]\n     * @returns the ast\n     */\n    static parse(expression, mode) {\n        const key = mode?.toString() + expression;\n\n        if (!this.#astCache.has(key)) {\n            if (this.#astCache.size >= this.#MAX_CACHE_SIZE) {\n                const oldestKey = this.#astCache.keys().next().value;\n                this.#astCache.delete(oldestKey);\n            }\n            this.#astCache.set(key, parse(expression, {\n                startRule: mode === Expressions.MODE_TEMPLATED ? 'TemplatedRoot' : 'ExpressionRoot',\n            }));\n        }\n\n        return this.#astCache.get(key);\n    }\n    /**\n     * Evaluates an expression.\n     * @param {{[k: string]: any } | null | undefined } modules\n     * @param {any[]} dataStack\n     * @param {any} ast\n     * @param {(typeof Expressions.MODE_EXPRESSION | typeof Expressions.MODE_TEMPLATED)?} [mode]\n     * @returns the result\n     */\n    static evaluate(modules, dataStack, ast, mode) {\n        return new EvaluatingVisitor(modules, dataStack).visitRoot(ast, mode === Expressions.MODE_TEMPLATED);\n    }\n    /**\n     * Parses and evaluates an expression.\n     * @param {{ [x: string]: any; } | null | undefined} modules\n     * @param {any[]} dataStack\n     * @param {string} expression\n     * @param {(typeof Expressions.MODE_EXPRESSION | typeof Expressions.MODE_TEMPLATED)?} [mode]\n     * @returns the result\n     */\n    static interpret(modules, dataStack, expression, mode) {\n        return Expressions.evaluate(modules, dataStack, Expressions.parse(expression, mode), mode);\n    }\n}\n\nclass ExpressionEvaluator {\n    #modules;\n    #dataStack;\n    constructor(modules, dataStack) {\n        this.#modules = modules;\n        this.#dataStack = dataStack;\n    }\n    withModule(name, value) {\n        const module = name ? { [name]: value } : value;\n        return new ExpressionEvaluator({ ...this.#modules, ...module }, this.#dataStack);\n    }\n    withOverlay(...data) {\n        return new ExpressionEvaluator(\n            this.#modules,\n            data.length === 0 ? this.#dataStack : [...this.#dataStack, ...data],\n        );\n    }\n    evaluate(expression, mode) {\n        return Expressions.interpret(this.#modules, this.#dataStack, expression, mode);\n    }\n    evaluateExpression(expression) {\n        return this.evaluate(expression, Expressions.MODE_EXPRESSION);\n    }\n    evaluateTemplated(expression) {\n        return this.evaluate(expression, Expressions.MODE_TEMPLATED);\n    }\n}\n\nexport { Expressions, ExpressionEvaluator };\n","class Fragments {\n    /**\n     * Creates a DocumentFragment from an string.\n     * @param  {...string} html\n     * @returns {DocumentFragment} the fragment\n     */\n    static fromHtml(...html) {\n        const el = document.createElement('template');\n        el.innerHTML = html.map((h) => h.trim()).join('');\n        return document.adoptNode(el.content);\n    }\n    /**\n     * Creates a string representation (HTML) of a DocumentFragment.\n     * @param {DocumentFragment} fragment\n     * @returns {string} the html\n     */\n    static toHtml(fragment) {\n        var el = document.createElement('template');\n        el.content.appendChild(fragment);\n        return el.innerHTML;\n    }\n    /**\n     * Checks if a fragment contains only blank text nodes\n     * @param {DocumentFragment} fragment\n     * @returns {boolean} true if the fragment is blank\n     */\n    static isBlank(fragment) {\n        return fragment.childElementCount === 0 && fragment.textContent.trim() === '';\n    }\n    /**\n     * Creates a DocumentFragment from nodes.\n     * @param  {...Node} nodes\n     * @returns {DocumentFragment} the fragment\n     */\n    static from(...nodes) {\n        const fragment = new DocumentFragment();\n        for (const node of nodes) {\n            fragment.appendChild(node);\n        }\n        return fragment;\n    }\n    /**\n     * Creates a DocumentFragment from childNodes of an element.\n     * @param {Node} el\n     * @returns {DocumentFragment} the fragment\n     */\n    static fromChildNodes(el) {\n        const fragment = new DocumentFragment();\n        while (el.firstChild) {\n            fragment.appendChild(el.firstChild);\n        }\n        return fragment;\n    }\n}\n\nclass Attributes {\n    static id = 0;\n    /**\n     * Creates a unique id with the given prefix.\n     * @param {string} prefix\n     * @returns\n     */\n    static uid(prefix) {\n        return `${prefix}-${++Attributes.id}`;\n    }\n    /**\n     * Sets an attribute if not present.\n     * @param {Element} el\n     * @param {string} k\n     * @param {string} v\n     * @returns\n     */\n    static defaultValue(el, k, v) {\n        if (!el.hasAttribute(k)) {\n            el.setAttribute(k, v);\n        }\n        return el.getAttribute(k);\n    }\n    /**\n     * Forwards prefixed attributes from an element to another (removing the prefix).\n     * @param {string} prefix\n     * @param {Element} from\n     * @param {Element} to\n     */\n    static forward(prefix, from, to) {\n        from.getAttributeNames()\n            .filter((a) => a.startsWith(prefix))\n            .forEach((a) => {\n                const target = a.substring(prefix.length);\n                if (target === 'class') {\n                    const classes = from.getAttribute(prefix + 'class')?.split(/\\s+/).filter((a) => a.length) ?? [];\n                    to.classList.add(...classes);\n                    return;\n                }\n                to.setAttribute(target, /** @type {string} */(from.getAttribute(a)));\n            });\n    }\n    /**\n     * Changes the presence of an attribute.\n     * @param {Element} el\n     * @param {string} attr\n     * @param {boolean} value\n     */\n    static toggle(el, attr, value) {\n        if (value) {\n            el.setAttribute(attr, '');\n        } else {\n            el.removeAttribute(attr);\n        }\n    }\n    /**\n     * Changes the presence of an attribute based on its current state.\n     * @param {Element} el\n     * @param {string} attr\n     */\n    static flip(el, attr) {\n        if (el.hasAttribute(attr)) {\n            el.removeAttribute(attr);\n        } else {\n            el.setAttribute(attr, '');\n        }\n    }\n    /**\n     * Sets the value of an attribute. nullish values remove the attribute.\n     * @param {Element} el\n     * @param {string} attr\n     * @param {string | null | undefined} value\n     */\n    static set(el, attr, value) {\n        if (value == null) {\n            el.removeAttribute(attr);\n        } else {\n            el.setAttribute(attr, value);\n        }\n    }\n}\n\nclass LightSlots {\n    /**\n     * Extracts light slots from an element. For non default slots in a template tag, the content is extracted.\n     * @param {Element} el\n     * @returns the slots\n     */\n    static from(el) {\n        /** @type [string, Element|DocumentFragment][] */\n        const namedSlots = Array.from(el.children)\n            .filter((el) => el.matches('[slot]'))\n            .map((el) => {\n                el.remove();\n                const slot = el.getAttribute('slot') || 'unnamed';\n                el.removeAttribute('slot');\n                return [slot, LightSlots.slotFromNode(el)];\n            });\n        const slots = {};\n        slots.default = new DocumentFragment();\n        slots.default.append(...el.childNodes);\n        for (const [name, el] of namedSlots) {\n            if (!(name in slots)) {\n                slots[name] = new DocumentFragment();\n            }\n            slots[name].append(el);\n        }\n        return slots;\n    }\n    static slotFromNode(el) {\n        if (el instanceof HTMLTemplateElement) {\n            return document.adoptNode(el.content);\n        }\n        if (el instanceof HTMLScriptElement && el.type !== '' && el.type !== 'text/javascript') {\n            return Fragments.fromHtml(el.innerHTML);\n        }\n        return el;\n    }\n}\n\nclass Nodes {\n    /**\n     * Checks if an element is already parsed.\n     * @param {Element} el\n     * @returns\n     */\n    static isParsed(el) {\n        //@ts-ignore\n        for (let c = el; c; c = c.parentNode) {\n            if (c.nextSibling) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    static waitParsed(el) {\n        if (el.ownerDocument.readyState === 'complete' || Nodes.isParsed(el)) {\n            return Promise.resolve(el);\n        }\n        return new Promise((resolve) => {\n            const ac = new AbortController();\n            const clearAndQueue = () => {\n                ac.abort();\n                observer.disconnect();\n                resolve(el);\n            };\n            el.ownerDocument.addEventListener('DOMContentLoaded', clearAndQueue, { signal: ac.signal });\n            const observer = new MutationObserver(() => {\n                if (!Nodes.isParsed(el)) {\n                    return;\n                }\n                clearAndQueue();\n            });\n            const parent = /** @type {Node} */ (el.parentNode);\n            observer.observe(parent, { childList: true });\n        });\n    }\n\n    /**\n     * Returns the first child of the element element (if exists) matching the selector.\n     * @param {Element} el\n     * @param {string} selector\n     * @returns\n     */\n    static queryChildren(el, selector) {\n        for (const c of el.children) {\n            if (c.matches(selector)) {\n                return c;\n            }\n        }\n        return null;\n    }\n    /**\n     * Returns all children of the element matching the selector.\n     * @param {Element} el\n     * @param {string} selector\n     * @returns\n     */\n    static queryChildrenAll(el, selector) {\n        const r = [];\n        for (const c of el.children) {\n            if (c.matches(selector)) {\n                r.push(c);\n            }\n        }\n        return r;\n    }\n}\n\nexport { Fragments, Attributes, LightSlots, Nodes };\n","import { nodes } from './ast.mjs';\nimport { Attributes, Fragments } from './dom.mjs';\nimport { Expressions, ExpressionEvaluator } from './expressions.mjs';\n\nclass NodeOperations {\n    #forRemoval;\n    constructor() {\n        this.#forRemoval = [];\n    }\n    removed(node) {\n        return this.#forRemoval.includes(node);\n    }\n    remove(node) {\n        node.replaceChildren?.();\n        Object.keys(node.dataset || {})\n            .filter((k) => k.startsWith('tpl'))\n            .forEach((k) => delete node.dataset[k]);\n        this.#forRemoval.push(node);\n    }\n    popData(node, key) {\n        const v = node.dataset[key];\n        delete node.dataset[key];\n        return v;\n    }\n    prepend(ref, node) {\n        ref.parentNode.insertBefore(node, ref);\n    }\n    append(ref, node) {\n        ref.parentNode.insertBefore(node, ref.nextSibling);\n    }\n    replace(ref, node) {\n        this.prepend(ref, node);\n        this.remove(ref);\n    }\n    cleanup() {\n        while (this.#forRemoval.length) {\n            this.#forRemoval.pop().remove();\n        }\n    }\n}\n\nclass CommandsHandler {\n    static ORDERED_COMMANDS = [\n        'tplIf',\n        'tplWith',\n        'tplEach',\n        'tplWhen',\n        'tplClassAppend',\n        'tplAttrAppend',\n        'tplText',\n        'tplHtml',\n        'tplRemove',\n        'tplVerbatim',\n    ];\n    static tplIf(node, expression, ops, modules, dataStack) {\n        const accept = Expressions.interpret(modules, dataStack, expression);\n        if (!accept) {\n            ops.remove(node);\n        }\n    }\n    static tplWith(node, expression, ops, modules, dataStack) {\n        const evaluated = Expressions.interpret(modules, dataStack, expression);\n        const varName = ops.popData(node, 'tplVar');\n        const newNode = new Template(node, modules, dataStack)\n            .withOverlay(varName ? { [varName]: evaluated } : evaluated)\n            .render();\n        ops.replace(node, newNode);\n    }\n    static tplEach(node, expression, ops, modules, dataStack) {\n        const varName = ops.popData(node, 'tplVar');\n        const template = new Template(node, modules, dataStack);\n        const evaluated = Expressions.interpret(modules, dataStack, expression);\n        if (!evaluated?.[Symbol.iterator]) {\n            throw new Error(`Expected an iterable got '${evaluated}'`);\n        }\n        for (const v of evaluated) {\n            ops.prepend(node, template.withOverlay(varName ? { [varName]: v } : v).render());\n        }\n        ops.remove(node);\n    }\n    static tplWhen(node, expression, ops, modules, dataStack) {\n        const accept = Expressions.interpret(modules, dataStack, expression);\n        if (!accept) {\n            ops.remove(node);\n        }\n    }\n    static tplVerbatim(node, expression, ops, modules, dataStack) {\n        const newNode = node.cloneNode(true);\n        ops.replace(node, newNode);\n    }\n    static tplRemove(node, value, ops, modules, dataStack) {\n        switch (value.toLowerCase()) {\n            case 'tag':\n                const fragment = new DocumentFragment();\n                while (node.firstChild) {\n                    fragment.appendChild(node.firstChild);\n                }\n                if ('tplVerbatim' in node.dataset) {\n                    //we are removing the parent element so we have to handle the lower priority commands\n                    ops.popData(node, 'tplVerbatim');\n                    ops.replace(node, fragment);\n                } else {\n                    ops.append(node, fragment);\n                    ops.remove(node);\n                }\n                break;\n            case 'body':\n                node.replaceChildren();\n                break;\n            case 'all':\n                ops.remove(node);\n                break;\n        }\n    }\n    static tplText(node, expression, ops, modules, dataStack) {\n        const text = Expressions.interpret(modules, dataStack, expression);\n        const newNode = node.cloneNode();\n        newNode.replaceChildren(text == null ? '' : text);\n        ops.replace(node, newNode);\n    }\n    static tplHtml(node, expression, ops, modules, dataStack) {\n        const html = Expressions.interpret(modules, dataStack, expression);\n        const newNode = node.cloneNode();\n        newNode.innerHTML = html == null ? '' : html;\n        ops.replace(node, newNode);\n    }\n    static tplClassAppend(node, expression, ops, modules, dataStack) {\n        const classes = Expressions.interpret(modules, dataStack, expression);\n        if (!classes) {\n            return;\n        }\n        const classesAsArray = Array.isArray(classes) ? classes : [classes];\n        const cleanClasses = classesAsArray\n            .flatMap(c => typeof c === 'string' ? c.split(' ') : c)\n            .filter(Boolean);\n        if (cleanClasses.length === 0) {\n            return;\n        }\n        node.classList.add(...cleanClasses);\n    }\n    static tplAttrAppend(node, expression, ops, modules, dataStack) {\n        const attributesAndValues = Expressions.interpret(modules, dataStack, expression);\n        if (!attributesAndValues || attributesAndValues.length === 0) {\n            return;\n        }\n        const tuples = Array.isArray(attributesAndValues[0]) ? attributesAndValues : [attributesAndValues];\n        tuples.forEach(([k, v]) => {\n            node.setAttribute(k, v);\n        });\n    }\n    static textNode(node, expression, ops, modules, dataStack) {\n        for (const v of Expressions.interpret(modules, dataStack, expression, Expressions.MODE_TEMPLATED)) {\n            if (v.value == null) {\n                continue;\n            }\n            switch (v.type) {\n                case nodes.dom.t:\n                    ops.prepend(node, document.createTextNode(v.value));\n                    break;\n                case nodes.dom.h:\n                    ops.prepend(node, Fragments.fromHtml(v.value));\n                    break;\n                case nodes.dom.n:\n                    ops.prepend(node, v.value);\n                    break;\n            }\n        }\n        ops.remove(node);\n    }\n}\n\n// Module-isolated string cache for dataset-to-attribute conversions\nconst attributeCache = new Map();\n\n/**\n * Converts a tpl camelCase dataset key into a kebab-case attribute name.\n * Uses a cache lookup to avoid repetitive regex/string splitting.\n * @param {string} dataSetKey\n * @returns {string}\n */\nfunction toAttr(dataSetKey) {\n    let cached = attributeCache.get(dataSetKey);\n    if (!cached) {\n        cached = dataSetKey\n            .substring(3)\n            .split(/(?=[A-Z])/)\n            .join('-')\n            .toLowerCase();\n        attributeCache.set(dataSetKey, cached);\n    }\n    return cached;\n}\n\nclass Template {\n    /**\n     * Creates a template from a string.\n     * @param {string} html\n     * @param {{ [k: string] : any }?} [modules]\n     * @param {...*} data\n     * @returns the template\n     */\n    static fromHtml(html, modules, ...data) {\n        return new Template(Fragments.fromHtml(html), modules, data);\n    }\n\n    /**\n     * Creates a template from the content of the first template element matching the selector.\n     * @param {string} selector for an HTMLTemplateElement\n     * @param {{ [k: string] : any }?} [modules]\n     * @param {...*} data\n     * @returns the template\n     */\n    static fromSelector(selector, modules, ...data) {\n        const templateEl = document.querySelector(selector);\n        if (!(templateEl instanceof HTMLTemplateElement)) {\n            throw new Error('template selector does not match any template tag');\n        }\n        const fragment = document.adoptNode(templateEl.content);\n        return new Template(fragment, modules, data);\n    }\n\n    /**\n     * Creates a template from the content of an HTMLTemplateElement.\n     * @param {HTMLTemplateElement} templateEl\n     * @param {{ [k: string] : any }?} [modules]\n     * @param {...*} data\n     * @returns the template\n     */\n    static fromTemplate(templateEl, modules, ...data) {\n        const fragment = document.adoptNode(templateEl.content);\n        return new Template(fragment, modules, data);\n    }\n\n    /**\n     * Creates a template from a DocumentFragment.\n     * @param {DocumentFragment} fragment\n     * @param { { [k: string] : any }? } [modules]\n     * @param {...*} data\n     * @returns the template\n     */\n    static fromFragment(fragment, modules, ...data) {\n        return new Template(fragment, modules, data);\n    }\n    #fragment;\n    #modules;\n    #dataStack;\n    /**\n     * Creates a template.\n     * @param {DocumentFragment} fragment\n     * @param {{ [x: string]: any; } | null | undefined} modules\n     * @param {any[]} dataStack\n     */\n    constructor(fragment, modules, dataStack) {\n        this.#fragment = fragment;\n        this.#modules = modules;\n        this.#dataStack = dataStack;\n    }\n    /**\n     * Creates a new Template replacing the modules and dataStack from a context.\n     * @param {{modules: { [x: string]: any; } | null | undefined, data: any[]}} context\n     */\n    withContext({ modules, data }) {\n        return new Template(this.#fragment, modules, data);\n    }\n    /**\n     * Creates a new Template replacing the modules and dataStack from a registry.\n     * @param any registry\n     */\n    withContextFrom(registry) {\n        return this.withContext(registry.context());\n    }\n    /**\n     * Creates a new Template replacing the fragment.\n     * @param {DocumentFragment} fragment\n     */\n    withFragment(fragment) {\n        return new Template(fragment, this.#modules, this.#dataStack);\n    }\n    /**\n     * Creates a new Template with a new module added.\n     * @param {string?} name\n     * @param {{[k: string]: any}} value\n     */\n    withModule(name, value) {\n        const module = name ? { [name]: value } : value;\n        return new Template(this.#fragment, { ...this.#modules, ...module }, this.#dataStack);\n    }\n    /**\n     * Creates a new Template replacing the modules.\n     * @param {{ [x: string]: any; }?} modules\n     */\n    withModules(modules) {\n        return new Template(this.#fragment, modules, this.#dataStack);\n    }\n    /**\n     * Creates a new Template replacing the data stack.\n     * @param {any[]} dataStack the dataStack\n     */\n    withData(dataStack) {\n        return new Template(this.#fragment, this.#modules, dataStack);\n    }\n    /**\n     * Creates a new Template with new a data overlay added to the stack.\n     * @param {...*} data\n     */\n    withOverlay(...data) {\n        return new Template(\n            this.#fragment,\n            this.#modules,\n            data.length === 0 ? this.#dataStack : [...this.#dataStack, ...data],\n        );\n    }\n    /**\n     * Evaluates an expression using the configured modules and data.\n     * @param {string} expression\n     * @param {(typeof Expressions.MODE_EXPRESSION | typeof Expressions.MODE_TEMPLATED)?} [mode]\n     * @param {...*} data\n     */\n    evaluate(expression, mode, ...data) {\n        new ExpressionEvaluator(this.#modules, this.#dataStack).withOverlay(...data).evaluate(expression, mode);\n    }\n    /**\n     * Returns an expression evaluator with bound modules and dataStack.\n     */\n    evaluator() {\n        return new ExpressionEvaluator(this.#modules, this.#dataStack);\n    }\n    /**\n     * Renders the template.\n     * @returns a DocumentFragment\n     */\n    render() {\n        try {\n            const ops = new NodeOperations();\n            const imported = document.importNode(this.#fragment, true);\n            const fragment =\n                imported.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n                    ? imported\n                    : (() => {\n                        const d = new DocumentFragment();\n                        d.appendChild(imported);\n                        return d;\n                    })();\n            const iterator = document.createNodeIterator(\n                fragment,\n                NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,\n                Template.#NODE_FILTER,\n            );\n            let node;\n            while ((node = iterator.nextNode()) !== null) {\n                ops.cleanup();\n                if (node.nodeType === Node.TEXT_NODE) {\n                    try {\n                        CommandsHandler.textNode(node, node.nodeValue, ops, this.#modules, this.#dataStack);\n                    } catch (ex) {\n                        throw new RenderError('Error evaluating text node', node, ex);\n                    }\n                    continue;\n                }\n                const el = /** @type {HTMLElement} */ (node);\n                for (const command of CommandsHandler.ORDERED_COMMANDS) {\n                    if (!(command in el.dataset)) {\n                        continue;\n                    }\n                    const value = ops.popData(el, command);\n                    try {\n                        CommandsHandler[command](el, value, ops, this.#modules, this.#dataStack);\n                    } catch (ex) {\n                        throw new RenderError(`Error evaluating command ${command}`, el, ex);\n                    }\n                    if (ops.removed(el)) {\n                        break;\n                    }\n                }\n                for (const dataSetKey of Object.keys(el.dataset || {})) {\n                    if (!dataSetKey.startsWith('tpl')) {\n                        continue;\n                    }\n                    const attributeName = toAttr(dataSetKey);\n                    try {\n                        const expression = ops.popData(el, dataSetKey);\n                        const evaluated = Expressions.interpret(this.#modules, this.#dataStack, expression);\n                        if (typeof evaluated === 'boolean') {\n                            Attributes.toggle(el, attributeName, evaluated);\n                            continue;\n                        }\n                        if (evaluated !== null && evaluated !== undefined) {\n                            el.setAttribute(attributeName, evaluated);\n                        }\n                    } catch (ex) {\n                        throw new RenderError(`Error evaluating command ${dataSetKey}`, el, ex);\n                    }\n                }\n            }\n            ops.cleanup();\n            return fragment;\n        } catch (ex) {\n            throw new RenderError('Error rendering template', this.#fragment, ex);\n        }\n    }\n    /**\n     * Renders this template on the Element (replacing children).\n     * @param {Element} el\n     */\n    renderTo(el) {\n        el.replaceChildren(this.render());\n    }\n    /**\n     * Renders this template appending the resulting fragment to the Element.\n     * @param {Element} el\n     */\n    appendTo(el) {\n        el.appendChild(this.render());\n    }\n    /**\n     * Renders this template appending the resulting fragment to the first Element maching the selector, if exists.\n     * @param {string} selector\n     */\n    renderToSelector(selector) {\n        const el = document.querySelector(selector);\n        if (el) {\n            this.renderTo(el);\n        }\n    }\n    /**\n     * Renders this template appending the resulting fragment to the Element maching the selector, if exists.\n     * @param {string} selector\n     */\n    appendToSelector(selector) {\n        const el = document.querySelector(selector);\n        if (el) {\n            this.appendTo(el);\n        }\n    }\n    static #NODE_FILTER(node) {\n        if (node.nodeType === Node.TEXT_NODE) {\n            return node.nodeValue.includes('{{') && node.nodeValue.includes('}}')\n                ? NodeFilter.FILTER_ACCEPT\n                : NodeFilter.FILTER_REJECT;\n        }\n        for (const attr of node.attributes) {\n            if (attr.name.startsWith('data-tpl-')) {\n                return NodeFilter.FILTER_ACCEPT;\n            }\n        }\n        return NodeFilter.FILTER_SKIP;\n    }\n}\n\nclass RenderError extends Error {\n    constructor(message, nodeOrFragment, cause) {\n        super(`${message} in \\`${RenderError.stringify(nodeOrFragment)}\\``, { cause });\n        this.name = 'RenderError';\n        this.node = nodeOrFragment.cloneNode(true);\n    }\n    static stringify(nodeOrFragment) {\n        const t = document.createElement('template');\n        t.content.appendChild(RenderError.#cleanup(nodeOrFragment.cloneNode(true)));\n        return t.innerHTML;\n    }\n    static #cleanup(node) {\n        if (node.nodeType === Node.TEXT_NODE) {\n            node.nodeValue = node.nodeValue.trim();\n        }\n        for (var n = 0; n < node.childNodes.length; n++) {\n            var child = node.childNodes[n];\n            if (child.nodeType === Node.TEXT_NODE) {\n                child.nodeValue = child.nodeValue.trim();\n                if (child.nodeValue.length === 0) {\n                    node.removeChild(child);\n                    n--;\n                }\n            } else if (child.nodeType === Node.ELEMENT_NODE) {\n                RenderError.#cleanup(child);\n            }\n        }\n        return node;\n    }\n}\n\nexport { Template, RenderError };\n","import { Nodes } from './dom.mjs';\nimport { ExpressionEvaluator } from './expressions.mjs';\nimport { Template } from './template.mjs';\n\nclass UpgradeQueue {\n    #q = new Map();\n    constructor() {\n        document.addEventListener('DOMContentLoaded', async () => {\n            const pending = Array.from(this.entries).map(([child, promise]) => promise);\n            await Promise.all(pending);\n            document.dispatchEvent(\n                new CustomEvent('ftl:ready', {\n                    bubbles: false,\n                    cancelable: false,\n                }),\n            );\n        });\n    }\n    enqueue(el) {\n        if (this.#q.has(el)) {\n            //already upgrading, can happen when disconnecting an element\n            //while it's already queued for upgrade (e.g.: ful-form)\n            return;\n        }\n        const promise = Nodes.waitParsed(el)\n            .then(() => el.upgrade())\n            .finally(() => this.#q.delete(el));\n        this.#q.set(el, promise);\n    }\n    get entries() {\n        return this.#q.entries();\n    }\n}\n\n\nclass Registry {\n    #tagToClass = {};\n    #configured = false;\n    #mappers = {\n        string: {\n            unmarshal(str, name, el) {\n                return str;\n            },\n            marshal(value, name, el) {\n                return value == null ? null : String(value);\n            },\n        },\n        number: {\n            unmarshal(str, name, el) {\n                return str === null ? null : Number(str);\n            },\n            marshal(value, name, el) {\n                return value == null ? null : String(value);\n            },\n        },\n        presence: {\n            unmarshal(str, name, el) {\n                return str !== null;\n            },\n            marshal(value, name, el) {\n                return value ? '' : null;\n            },\n        },\n        bool: {\n            unmarshal(str, name, el) {\n                return str === 'true';\n            },\n            marshal(value, name, el) {\n                return value == null ? null : String(value === true);\n            },\n        },\n        json: {\n            unmarshal(str, name, el) {\n                return str === null ? null : JSON.parse(str);\n            },\n            marshal(value, name, el) {\n                return value == null ? null : JSON.stringify(value);\n            },\n        },\n        csv: {\n            unmarshal(str, name, el) {\n                return str === null\n                    ? []\n                    : str\n                          .split(',')\n                          .map((e) => e.trim())\n                          .filter((e) => e);\n            },\n            marshal(value, name, el) {\n                return value == null ? null : value.join(',');\n            },\n        },\n        csvm: {\n            unmarshal(str, name, el) {\n                if (el.hasAttribute('multiple')) {\n                    return str === null\n                        ? []\n                        : str\n                              .split(',')\n                              .map((e) => e.trim())\n                              .filter((e) => e);\n                }\n                return str === null || str === '' ? null : str;\n            },\n            marshal(value, name, el) {\n                if (el.hasAttribute('multiple')) {\n                    return value === null ? null : value.join(',');\n                }\n                return value == null ? null : String(value);\n            },\n        },\n    };\n    #components = {};\n    #modules;\n    #data = [];\n    #upgradeQueue = new UpgradeQueue();\n    defineElement(tag, klass) {\n        if (!this.#configured) {\n            this.#tagToClass[tag] = klass;\n            return this;\n        }\n        this.#augmentAndDefineElement(tag, klass);\n        return this;\n    }\n    #augmentAndDefineElement(tag, klass) {\n        const { observed, attributes, template, templates, slots, mappers } = klass;\n        const observedNames = (observed ?? []).map((a) => a.split(':')[0]);\n        const attrToMapper = [...(attributes ?? []), ...(observed ?? [])].reduce((acc, a) => {\n            const [attr, maybeType] = a.split(':');\n            const type = maybeType?.trim() ?? 'string';\n            if (!(type in this.#mappers) && !(type in (mappers ?? {}))) {\n                throw new Error(`unsupported attribute type: ${type}`);\n            }\n            acc[attr.trim()] = mappers?.[type] ?? this.#mappers[type];\n            return acc;\n        }, {});\n\n        const namesAndTemplates = Object.entries(\n            Object.assign({}, templates, template ? { default: template } : {}),\n        ).map(([k, v]) => [k, Template.fromHtml(v)]);\n        const nameToTemplate = Object.fromEntries(namesAndTemplates);\n\n        klass.BITS = {\n            enqueue: (el) => this.#upgradeQueue.enqueue(el),\n            SLOTS: slots,\n            OBSERVED: observedNames,\n            ATTR_TO_MAPPER: attrToMapper,\n            TEMPLATES: nameToTemplate,\n        };\n        customElements.define(tag, klass);\n    }\n    defineModule(name, value) {\n        const module = name ? { [name]: value } : value;\n        this.#modules = { ...this.#modules, ...module };\n        return this;\n    }\n    defineModules(ms) {\n        this.#modules = ms;\n        return this;\n    }\n    defineComponent(name, value) {\n        this.#components[name] = value;\n        return this;\n    }\n    defineData(...data) {\n        this.#data = data;\n        return this;\n    }\n    defineOverlay(...data) {\n        this.#data = [...this.#data, ...data];\n        return this;\n    }\n    defineMapper(k, v) {\n        this.#mappers[k] = v;\n        return this;\n    }\n    plugin(p) {\n        p.configure(this);\n        return this;\n    }\n    configure() {\n        for (const [tag, klass] of Object.entries(this.#tagToClass)) {\n            this.#augmentAndDefineElement(tag, klass);\n            delete this.#tagToClass[tag];\n        }\n        this.#configured = true;\n        return this;\n    }\n    get upgrades() {\n        return this.#upgradeQueue.entries;\n    }\n    context() {\n        return { modules: this.#modules, data: this.#data };\n    }\n    evaluator() {\n        return new ExpressionEvaluator(this.#modules, this.#data);\n    }\n    component(name) {\n        return this.#components[name];\n    }\n}\n\nconst registry = new Registry();\n\nexport { Registry, registry };\n","import { registry } from './registry.mjs';\nimport { Template } from './template.mjs';\n\nclass Templates {\n    static fromHtml(html) {\n        const { modules, data } = registry.context();\n        return Template.fromHtml(html, modules, ...data);\n    }\n    static fromSelector(selector) {\n        const { modules, data } = registry.context();\n        return Template.fromSelector(selector, modules, ...data);\n    }\n    static fromTemplate(templateEl) {\n        const { modules, data } = registry.context();\n        return Template.fromTemplate(templateEl, modules, ...data);\n    }\n    static fromFragment(fragment) {\n        const { modules, data } = registry.context();\n        return Template.fromFragment(fragment, modules, ...data);\n    }\n}\n\nexport { Templates };\n","import { registry } from './registry.mjs';\n\nclass Rendering {\n    static async waitFor(el) {\n        const pending = Array.from(registry.upgrades)\n            .filter(([child, promise]) => el.contains(child))\n            .map(([child, promise]) => promise);\n        await Promise.all(pending);\n    }\n    static async waitForChildren(el) {\n        const pending = Array.from(registry.upgrades)\n            .filter(([child, promise]) => el !== child && el.contains(child))\n            .map(([child, promise]) => promise);\n        await Promise.all(pending);\n    }\n}\n\nexport { Rendering };\n","import { Attributes, LightSlots } from './dom.mjs';\nimport { registry } from './registry.mjs';\n\n/**\n * An attribute Mapper.\n *\n * @typedef {object} Mapper\n * @property {(val: string|null|undefined, name: string, el: Element) => any} unmarshal\n * @property {(val: any, name: string, el: Element) => string|null} marshal\n */\n\n\nclass ParsedElement extends HTMLElement {\n    static BITS = {\n        enqueue: (el) => {},\n        SLOTS: false,\n        OBSERVED: [],\n        /** @type {Record<string, Mapper>} */\n        ATTR_TO_MAPPER: {},\n        TEMPLATES: {},\n    };\n    static get observedAttributes() {\n        return this.BITS.OBSERVED;\n    }\n    #parsed = false;\n    #reflecting = 0;\n    #bits() {\n        return /** @type {typeof ParsedElement} */ (this.constructor).BITS;\n    }\n    unmarshal(attr, str) {\n        return this.#bits().ATTR_TO_MAPPER[attr].unmarshal(str, attr, this);\n    }\n    marshal(attr, value) {\n        return this.#bits().ATTR_TO_MAPPER[attr].marshal(value, attr, this);\n    }\n    /**\n     * @param {string} [name] - The name of the template target, defaults to 'default'\n     */\n    template(name) {\n        const { modules, data } = registry.context();\n        let t = this.#bits().TEMPLATES[name ?? 'default'].withData(data).withModules(modules);\n        for (let k of ['l10n', 'config']) {\n            const v = this.constructor[k];\n            if (v) {\n                t = t.withOverlay({ [k]: v });\n            }\n        }\n        return t;\n    }\n    connectedCallback() {\n        if (this.#parsed) {\n            return;\n        }\n        this.#bits().enqueue(this);\n    }\n    attributeChangedCallback(attr, oldValue, newValue) {\n        if (!this.#parsed || oldValue === newValue) {\n            return;\n        }\n        if (this.#reflecting > 0) {\n            return;\n        }\n        this[attr] = this.unmarshal(attr, newValue);\n    }\n    #disabledBeforeParsed = null;\n    formDisabledCallback(disabled) {\n        if (!this.#parsed) {\n            this.#disabledBeforeParsed = disabled;\n            return;\n        }\n        Reflect.set(this, 'disabled', disabled);\n    }\n    async upgrade() {\n        if (this.#parsed) {\n            return;\n        }\n        this.#parsed = true;\n        const slots = this.#bits().SLOTS ? LightSlots.from(this) : undefined;\n        const observed = Object.fromEntries(\n            this.#bits().OBSERVED.map((attribute) => [\n                attribute,\n                this.unmarshal(attribute, this.getAttribute(attribute)),\n            ]),\n        );\n        const disabled = this.#disabledBeforeParsed ?? false;\n        await this.render({ slots, observed, disabled });\n    }\n    render(c) {}\n    reflect(fn) {\n        ++this.#reflecting;\n        try {\n            fn();\n        } finally {\n            --this.#reflecting;\n        }\n    }\n    reflectTo(attr, value) {\n        ++this.#reflecting;\n        try {\n            Attributes.set(this, attr, this.marshal(attr, value));\n        } finally {\n            --this.#reflecting;\n        }\n    }\n}\n\nexport { ParsedElement };\n"],"names":["nodes","ter","Symbol","elv","nullc","or","and","eq","cmp","not","access","member","subscript","method","call","tstring","literal","array","dict","function","symbol","templated","ten","teh","tet","tel","dom","t","h","n","peg$f4","c","peg$f12","head","op","rhs","peg$f14","peg$f32","TemplatedRoot","s0","s1","peg$parseTemplatedExpression","peg$FAILED","push","TemplatedExpression","peg$currPos","value","s2","input","substr","peg$c1","peg$silentFails","peg$fail","peg$e0","peg$parseBeginNode","s3","peg$parseExpressionRoot","s4","peg$c2","peg$e1","peg$parseEndNode","type","peg$c3","peg$e2","peg$parseBeginHtml","peg$c4","peg$e3","peg$parseEndHtml","peg$f1","peg$c5","peg$e4","peg$parseBeginText","peg$c6","peg$e5","peg$parseEndText","peg$f2","parts","charAt","peg$r0","test","peg$e6","substring","charCodeAt","peg$c7","peg$e7","length","peg$e8","peg$c9","peg$e9","s5","undefined","join","peg$parseTemplatedText","peg$f3","ExpressionRoot","peg$parse_","r","peg$parseTernaryExpression","TernaryExpression","cond","peg$parseElvisExpression","peg$c13","peg$e10","ifTrue","s7","peg$c15","peg$e11","ifFalse","s9","ElvisExpression","peg$parseNullCoalescingExpression","peg$c17","peg$e12","NullCoalescingExpression","lhs","peg$parseOrExpression","peg$c19","peg$e13","OrExpression","peg$parseAndExpression","tail","peg$c22","peg$e14","result","peg$f10","AndExpression","peg$parseEqExpression","peg$c24","peg$e15","peg$f11","EqExpression","peg$parseRelExpression","peg$parseEqualityOp","element","peg$f13","RelExpression","peg$parseNotExpression","peg$parseRelationalOp","peg$f15","NotExpression","peg$c26","peg$e16","expr","peg$parseGroupingExpression","peg$parseAccessExpression","peg$parseAccess","AccessExpression","peg$c28","peg$e18","peg$c29","peg$e19","peg$parseSymbol","ns","peg$e17","peg$parseAccessMember","peg$c30","peg$e21","s6","peg$c31","peg$e22","peg$e20","peg$parseAccessSubscript","peg$c32","peg$e24","peg$c34","peg$e25","peg$c36","peg$e26","args","peg$e23","peg$parseAccessMethodCall","GroupingExpression","e","fn","peg$c49","peg$e51","module","peg$r5","peg$e52","peg$r6","peg$e53","v","peg$e50","peg$parseModuleFunction","peg$f22","peg$e27","peg$parseModuleFunctionCall","peg$c43","peg$e36","peg$r1","peg$e37","s8","parseFloat","peg$e35","peg$parseNumberLiteral","peg$c39","peg$e29","peg$c40","peg$e30","peg$e28","peg$parseBooleanLiteral","peg$c41","peg$e32","peg$e31","peg$parseNullLiteral","peg$c42","peg$e34","peg$e33","peg$parseUndefinedLiteral","peg$parseStringLiteral","peg$f35","peg$e48","peg$parseArrayLiteral","s11","s13","peg$c47","peg$e45","apply","peg$e49","peg$parseDictLiteral","peg$parseAnyLiteral","StringLiteral","peg$c44","peg$e39","peg$r2","peg$e40","peg$c45","peg$e41","peg$r3","peg$e42","peg$f29","peg$c46","peg$e43","peg$parseTemplateStringExpression","peg$parseTemplateStringLiteral","peg$e38","TemplateStringExpression","peg$e44","TemplateStringLiteral","peg$r4","peg$e47","char","peg$e46","s","peg$e54","EqualityOp","peg$c53","peg$e55","peg$c54","peg$e56","RelationalOp","peg$c55","peg$e57","peg$c56","peg$e58","peg$c57","peg$e59","peg$c58","peg$e60","_","peg$r7","peg$e61","EvaluatingVisitor","modules","dataStack","constructor","this","resolve","prop","i","overlay","cached_resolve_proxy","resolve_proxy","Proxy","get","target","node","visit","Error","fnRef","map","arg","len","evaluated","Object","fromEntries","entry","prev","cur","visitRoot","ast","toString","Expressions","static","Map","parse","expression","mode","key","astCache","has","size","MAX_CACHE_SIZE","oldestKey","keys","next","delete","set","startRule","MODE_TEMPLATED","evaluate","interpret","ExpressionEvaluator","withModule","name","withOverlay","data","evaluateExpression","MODE_EXPRESSION","evaluateTemplated","Fragments","fromHtml","html","el","document","createElement","innerHTML","trim","adoptNode","content","toHtml","fragment","appendChild","isBlank","childElementCount","textContent","from","DocumentFragment","fromChildNodes","firstChild","Attributes","uid","prefix","id","defaultValue","k","hasAttribute","setAttribute","getAttribute","forward","to","getAttributeNames","filter","a","startsWith","forEach","classes","split","classList","add","toggle","attr","removeAttribute","flip","LightSlots","namedSlots","Array","children","matches","remove","slot","slotFromNode","slots","default","append","childNodes","HTMLTemplateElement","HTMLScriptElement","Nodes","isParsed","parentNode","nextSibling","waitParsed","ownerDocument","readyState","Promise","ac","AbortController","clearAndQueue","abort","observer","disconnect","addEventListener","signal","MutationObserver","parent","observe","childList","queryChildren","selector","queryChildrenAll","NodeOperations","forRemoval","removed","includes","replaceChildren","dataset","popData","prepend","ref","insertBefore","replace","cleanup","pop","CommandsHandler","tplIf","ops","tplWith","varName","newNode","Template","render","tplEach","template","iterator","tplWhen","tplVerbatim","cloneNode","tplRemove","toLowerCase","tplText","text","tplHtml","tplClassAppend","cleanClasses","isArray","flatMap","Boolean","tplAttrAppend","attributesAndValues","textNode","createTextNode","attributeCache","toAttr","dataSetKey","cached","fromSelector","templateEl","querySelector","fromTemplate","fromFragment","withContext","withContextFrom","registry","context","withFragment","withModules","withData","evaluator","imported","importNode","nodeType","Node","DOCUMENT_FRAGMENT_NODE","d","createNodeIterator","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","NODE_FILTER","nextNode","TEXT_NODE","nodeValue","ex","RenderError","command","ORDERED_COMMANDS","attributeName","renderTo","appendTo","renderToSelector","appendToSelector","FILTER_ACCEPT","FILTER_REJECT","attributes","FILTER_SKIP","message","nodeOrFragment","cause","super","stringify","child","removeChild","ELEMENT_NODE","UpgradeQueue","q","async","pending","entries","promise","all","dispatchEvent","CustomEvent","bubbles","cancelable","enqueue","then","upgrade","finally","Registry","tagToClass","configured","mappers","string","unmarshal","str","marshal","String","number","Number","presence","bool","json","JSON","csv","csvm","components","upgradeQueue","defineElement","tag","klass","augmentAndDefineElement","observed","templates","observedNames","attrToMapper","reduce","acc","maybeType","namesAndTemplates","assign","nameToTemplate","BITS","SLOTS","OBSERVED","ATTR_TO_MAPPER","TEMPLATES","customElements","define","defineModule","defineModules","ms","defineComponent","defineData","defineOverlay","defineMapper","plugin","p","configure","upgrades","component","Templates","Rendering","waitFor","contains","waitForChildren","ParsedElement","HTMLElement","observedAttributes","parsed","reflecting","bits","connectedCallback","attributeChangedCallback","oldValue","newValue","disabledBeforeParsed","formDisabledCallback","disabled","Reflect","attribute","reflect","reflectTo"],"mappings":"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"}