@optionfactory/fml 8.0.1 → 8.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/custom-elements.json +1210 -0
- package/dist/fml.css +2 -2
- package/dist/fml.css.map +1 -1
- package/dist/fml.d.mts +36 -13
- package/dist/fml.iife.js +123 -51
- package/dist/fml.iife.js.map +1 -1
- package/dist/fml.iife.min.js +1 -1
- package/dist/fml.iife.min.js.map +1 -1
- package/dist/fml.min.mjs +1 -1
- package/dist/fml.min.mjs.map +1 -1
- package/dist/fml.mjs +123 -51
- package/dist/fml.mjs.map +1 -1
- package/dist/ftl.d.mts +24 -1
- package/dist/ftl.iife.js +46 -16
- package/dist/ftl.iife.js.map +1 -1
- package/dist/ftl.iife.min.js +1 -1
- package/dist/ftl.iife.min.js.map +1 -1
- package/dist/ftl.min.mjs +1 -1
- package/dist/ftl.min.mjs.map +1 -1
- package/dist/ftl.mjs +46 -16
- package/dist/ftl.mjs.map +1 -1
- package/dist/ful.css +1 -1
- package/dist/ful.css.map +1 -1
- package/dist/ful.d.mts +12 -12
- package/dist/ful.iife.js +77 -35
- package/dist/ful.iife.js.map +1 -1
- package/dist/ful.iife.min.js +1 -1
- package/dist/ful.iife.min.js.map +1 -1
- package/dist/ful.min.mjs +1 -1
- package/dist/ful.min.mjs.map +1 -1
- package/dist/ful.mjs +77 -35
- package/dist/ful.mjs.map +1 -1
- package/dist/vscode.html-custom-data.json +357 -0
- package/dist/web-types.json +1006 -0
- package/package.json +6 -3
package/dist/fml.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fml.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","../src/httpc/failure.mjs","../src/httpc/encodings.mjs","../src/httpc/http-client.mjs","../src/ful/storage.mjs","../src/ful/events/async.mjs","../src/ful/timing.mjs","../src/ful/elements/bindings.mjs","../src/ful/elements/form.mjs","../src/ful/elements/input.mjs","../src/ful/elements/temporals.mjs","../src/ful/elements/files.mjs","../src/ful/elements/select.mjs","../src/ful/elements/radio.mjs","../src/ful/elements/checkbox.mjs","../src/ful/elements/spinner.mjs","../src/ful/elements/table.mjs","../src/ful/elements/filters.mjs","../src/ful/elements/l10n.mjs","../src/ful/elements/plugin.mjs","../src/index.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 ;\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 ;\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 for (let c = /** @type {Node | null} */ (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 = new Set();\n removed(node) {\n return this.#forRemoval.has(node);\n }\n remove(node) {\n node.replaceChildren?.();\n Object.keys(node.dataset || {})\n .filter((k) => k.startsWith('tpl'))\n .forEach((k) => {\n delete node.dataset[k];\n });\n this.#forRemoval.add(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 for (const node of this.#forRemoval) {\n node.remove();\n }\n this.#forRemoval.clear();\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 }\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, bounded with\n// FIFO eviction like the expression ast cache\nconst attributeCache = new Map();\nconst ATTRIBUTE_CACHE_MAX_SIZE = 1000;\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 if (attributeCache.size >= ATTRIBUTE_CACHE_MAX_SIZE) {\n attributeCache.delete(attributeCache.keys().next().value);\n }\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 * @returns the evaluated expression result\n */\n evaluate(expression, mode, ...data) {\n return 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 (let n = 0; n < node.childNodes.length; n++) {\n const 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 await this.settle();\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 /**\n * Waits for every queued upgrade, including the ones enqueued while waiting:\n * a component is only queued once its parent connects it, so a single pass would\n * miss everything nested.\n */\n async settle() {\n while (this.#q.size !== 0) {\n await Promise.all(Array.from(this.#q.values()));\n }\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\n/**\n * Waits for the queued upgrades matching the filter, including the ones enqueued while\n * waiting: a component is only queued once its parent connects it, so a single pass\n * would miss everything nested.\n * @param {(el: Element) => boolean} accept\n */\nconst settle = async (accept) => {\n for (;;) {\n const pending = Array.from(registry.upgrades)\n .filter(([child]) => accept(child))\n .map(([, promise]) => promise);\n if (pending.length === 0) {\n return;\n }\n await Promise.all(pending);\n }\n};\n\nclass Rendering {\n static async waitFor(el) {\n await settle((child) => el.contains(child));\n }\n static async waitForChildren(el) {\n await settle((child) => el !== child && el.contains(child));\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 (const 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","/**\n * @typedef {{ type: string; context: string?; reason: string; details: any?; }} Problem\n */\nclass Failure extends Error {\n /**\n *\n * @param {string} message\n * @param {Problem[]} problems\n * @param {*} cause\n */\n constructor(message, problems, cause) {\n super(message, { cause });\n this.name = 'Failure';\n this.problems = problems;\n }\n dropping(prefix) {\n return new Failure(this.message, Failure.dropProblemsContext(this.problems, prefix), this);\n }\n static dropProblemsContext(problems, prefix) {\n return problems.map(({ type, context, reason, details }) => {\n const nctx = context?.startsWith(prefix) ? context.substring(prefix.length) : context;\n return { type, context: nctx, reason, details };\n });\n }\n}\n\nexport { Failure };\n","class Base64 {\n static encode(arrayBuffer, dialect) {\n const d = dialect || Base64.URL_SAFE;\n const len = arrayBuffer.byteLength;\n const view = new Uint8Array(arrayBuffer);\n let res = '';\n for (let i = 0; i < len; i += 3) {\n const v1 = d[view[i] >> 2];\n const v2 = d[((view[i] & 3) << 4) | (view[i + 1] >> 4)];\n const v3 = d[((view[i + 1] & 15) << 2) | (view[i + 2] >> 6)];\n const v4 = d[view[i + 2] & 63];\n res += v1 + v2 + v3 + v4;\n }\n if (len % 3 === 2) {\n res = res.substring(0, res.length - 1);\n } else if (len % 3 === 1) {\n res = res.substring(0, res.length - 2);\n }\n return res;\n }\n static decode(str, dialect) {\n const d = dialect || Base64.URL_SAFE;\n let nbytes = Math.floor(str.length * 0.75);\n for (let i = 0; i !== str.length; ++i) {\n if (str[str.length - i - 1] !== '=') {\n break;\n }\n --nbytes;\n }\n const view = new Uint8Array(nbytes);\n\n let vi = 0;\n let si = 0;\n //every group yields three bytes, but a padded input stops short of the last\n //one or two: writing them anyway would rely on typed arrays dropping writes\n //past their length\n while (vi < nbytes) {\n const v1 = d.indexOf(str.charAt(si++));\n const v2 = d.indexOf(str.charAt(si++));\n const v3 = d.indexOf(str.charAt(si++));\n const v4 = d.indexOf(str.charAt(si++));\n view[vi++] = (v1 << 2) | (v2 >> 4);\n if (vi === nbytes) {\n break;\n }\n view[vi++] = ((v2 & 15) << 4) | (v3 >> 2);\n if (vi === nbytes) {\n break;\n }\n view[vi++] = ((v3 & 3) << 6) | v4;\n }\n\n return view.buffer;\n }\n}\n\nBase64.STANDARD = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nBase64.URL_SAFE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\nclass Hex {\n static decode(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error('invalid length');\n }\n const lenInBytes = hex.length / 2;\n return new Uint8Array(lenInBytes).map((e, i) => {\n const offset = i * 2;\n const octet = hex.substring(offset, offset + 2);\n return parseInt(octet, 16);\n });\n }\n static encode(bytes, upper) {\n return Array.from(bytes)\n .map((b) => b.toString(16))\n .map((b) => (upper ? b.toUpperCase() : b))\n .map((o) => o.padStart(2, '0'))\n .join('');\n }\n}\n\nexport { Base64, Hex };\n","import { Failure } from './failure.mjs';\n\nclass MediaType {\n #type;\n #subtype;\n constructor(type, subtype) {\n this.#type = type;\n this.#subtype = subtype;\n }\n get normalized() {\n return `${this.#type}/${this.#subtype}`;\n }\n get type() {\n return this.#type;\n }\n get subtype() {\n return this.#subtype;\n }\n /**\n *\n * @param {string|null|undefined} v\n * @returns\n */\n static parse(v) {\n if (!v) {\n return new MediaType('unknown', 'unknown');\n }\n const [prefix, _] = v.split(';');\n const [ptype, psubtype] = prefix.trim().split('/');\n return new MediaType(ptype.toLowerCase(), psubtype?.toLowerCase());\n }\n}\n\n/**\n * @typedef {Int8Array| Uint8Array| Uint8ClampedArray| Int16Array| Uint16Array| Int32Array| Uint32Array| Float32Array| Float64Array| BigInt64Array| BigUint64Array} TypedArray\n */\n/**\n * @typedef {object} HttpInterceptor\n * @property {(url: URL, init: RequestInit|undefined, chain: HttpInterceptorChain) => Promise<Response>} intercept\n */\n\nclass HttpClientError extends Failure {\n /**\n * @param {string} message\n * @param {number} status\n * @param {{ type: string; context: string?; reason: string; details: any?; }[]} problems\n * @param {Error|undefined} [cause]\n */\n constructor(message, status, problems, cause) {\n super(message, problems, cause);\n this.name = 'HttpClientError';\n this.status = status;\n }\n dropping(prefix) {\n return new HttpClientError(this.message, this.status, Failure.dropProblemsContext(this.problems, prefix), this);\n }\n /**\n *\n * @param {string} type\n * @param {any} cause\n * @returns\n */\n static of(type, cause) {\n return new HttpClientError(\n cause.message,\n 0,\n [\n {\n type,\n context: null,\n reason: cause.message,\n details: null,\n },\n ],\n cause,\n );\n }\n /**\n * Creates an HttpClientError from a Response.\n * @param {Response} response\n * @returns an HttpClientError\n */\n static async fromResponse(response) {\n switch (MediaType.parse(response.headers.get('Content-Type')).normalized) {\n case 'application/failures+json': {\n const data = await response.json();\n const message = `${response.status} ${response.statusText}: ${data.length} failures`;\n return new HttpClientError(message, response.status, data);\n }\n case 'application/problem+json': {\n const data = await response.json();\n const message = `${response.status} ${response.statusText}: ${data.title} ${data.detail}`;\n return new HttpClientError(\n message,\n response.status,\n data.problems || [\n {\n type: 'GENERIC_PROBLEM',\n context: null,\n reason: message,\n details: null,\n },\n ],\n );\n }\n default: {\n const text = await response.text();\n const message = `${response.status} ${response.statusText}: ${text}`;\n return new HttpClientError(message, response.status, [\n {\n type: 'GENERIC_PROBLEM',\n context: null,\n reason: message,\n details: null,\n },\n ]);\n }\n }\n }\n}\n\n/**\n * @implements {HttpInterceptor}\n */\nclass CsrfTokenInterceptor {\n #k;\n #v;\n constructor() {\n this.#k = document.querySelector(\"meta[name='_csrf_header']\")?.getAttribute('content');\n this.#v = document.querySelector(\"meta[name='_csrf']\")?.getAttribute('content');\n }\n async intercept(url, request, chain) {\n if (this.#k && this.#v) {\n request.headers.set(this.#k, this.#v);\n }\n return await chain.proceed(url, request);\n }\n}\n/**\n * @implements {HttpInterceptor}\n */\nclass RedirectOnUnauthorizedInterceptor {\n #redirectUri;\n /**\n * @param {string} redirectUri\n */\n constructor(redirectUri) {\n this.#redirectUri = redirectUri;\n }\n async intercept(url, request, chain) {\n const response = await chain.proceed(url, request);\n if (response.status === 401) {\n window.location.href = this.#redirectUri;\n return new Promise(() => {});\n }\n return response;\n }\n}\n\nclass HttpClientBuilder {\n /**\n * @type {HttpInterceptor[]}\n */\n #interceptors;\n constructor() {\n this.#interceptors = [];\n }\n withCsrfToken() {\n this.#interceptors.push(new CsrfTokenInterceptor());\n return this;\n }\n withRedirectOnUnauthorized(redirectUri) {\n this.#interceptors.push(new RedirectOnUnauthorizedInterceptor(redirectUri));\n return this;\n }\n /**\n * @param {...HttpInterceptor} interceptors\n */\n withInterceptors(...interceptors) {\n this.#interceptors.push(...interceptors);\n return this;\n }\n build() {\n return new HttpClient(this.#interceptors);\n }\n}\n\n/**\n * @implements {HttpInterceptor}\n */\nclass HttpCall {\n async intercept(url, request, chain) {\n return await fetch(url, request);\n }\n}\n\nclass HttpInterceptorChain {\n #interceptors;\n #current;\n /**\n *\n * @param {HttpInterceptor[]} interceptors\n * @param {number} current\n */\n constructor(interceptors, current) {\n this.#interceptors = interceptors;\n this.#current = current;\n }\n /**\n *\n * @param {URL} url\n * @param {RequestInit} request\n * @returns {Promise<Response>} the response\n */\n async proceed(url, request) {\n const interceptor = this.#interceptors[this.#current];\n return await interceptor.intercept(\n url,\n request,\n new HttpInterceptorChain(this.#interceptors, this.#current + 1),\n );\n }\n}\n\nclass HttpClient {\n #interceptors;\n /**\n * Creates a builder for an HttpClient.\n * @returns {HttpClientBuilder} the client builder\n */\n static builder() {\n return new HttpClientBuilder();\n }\n /**\n * Creates an HttpClient.\n * @param {HttpInterceptor[]|undefined} interceptors - a list of interceptors to be registered for every request performed by the created client.\n */\n constructor(interceptors) {\n this.#interceptors = interceptors || [];\n }\n /**\n * Performs an HTTP exchange.\n * @async\n * @param {string} uri - the (possibly relative) request url\n * @param {RequestInit|undefined} options - fetch options\n * @param {HttpInterceptor[]|undefined} interceptors - the HttpInterceptors to be registered for this exchange.\n * @returns {Promise<Response>} the response\n */\n async exchange(uri, options, interceptors) {\n const is = [...this.#interceptors, ...(interceptors || []), new HttpCall()];\n const chain = new HttpInterceptorChain(is, 0);\n const url = new URL(new Request(uri).url);\n return await chain.proceed(url, options ?? {});\n }\n /**\n * Creates a request builder.\n * @param {string} method - the HTTP method to be used\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n request(method, uri) {\n return HttpRequestBuilder.create(this, method, uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n get(uri) {\n return HttpRequestBuilder.create(this, 'GET', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n head(uri) {\n return HttpRequestBuilder.create(this, 'HEAD', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n post(uri) {\n return HttpRequestBuilder.create(this, 'POST', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n put(uri) {\n return HttpRequestBuilder.create(this, 'PUT', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n patch(uri) {\n return HttpRequestBuilder.create(this, 'PATCH', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n delete(uri) {\n return HttpRequestBuilder.create(this, 'DELETE', uri);\n }\n}\n\n/**\n *\n * @param {Response} response\n * @param {'text'|'json'|'blob'|'arrayBuffer'} type\n * @returns\n */\nconst unmarshal = async (response, type) => {\n try {\n return await response[type]();\n } catch (ex) {\n throw HttpClientError.of('UNMARSHALING_PROBLEM', ex);\n }\n};\n\n/**\n * Yields the entries of a headers or params initializer preserving nullish values:\n * normalizing through `Headers`/`URLSearchParams` first would stringify them to\n * \"null\"/\"undefined\" instead of removing the key.\n * @param {any} source\n * @returns {Iterable<[string, any]>}\n */\nconst rawEntries = (source) => {\n if (source == null) {\n return [];\n }\n if (typeof source === 'string') {\n return new URLSearchParams(source);\n }\n if (typeof source[Symbol.iterator] === 'function') {\n return source;\n }\n return Object.entries(source);\n};\n\nclass HttpRequestBuilder {\n #client;\n #method;\n #uri;\n #params;\n #headers;\n #body;\n #options;\n #interceptors;\n /**\n * Creates an HttpRequestBuilder.\n * @param {HttpClient} client\n * @param {string} method - the HTTP method to be used\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the builder\n */\n static create(client, method, uri) {\n const [baseUri, queryString = ''] = uri.split('?');\n return new HttpRequestBuilder(\n client,\n method,\n baseUri,\n new URLSearchParams(queryString),\n new Headers(),\n undefined,\n {},\n [],\n );\n }\n /**\n * Creates an HttpRequestBuilder.\n * @param {HttpClient} client\n * @param {string} method - the HTTP method to be used\n * @param {string} uri - the (possibly relative) request url\n * @param {URLSearchParams} params\n * @param {Headers} headers\n * @param {any} body\n * @param {Omit<RequestInit,\"headers\"|\"method\"|\"body\">} options\n * @param {HttpInterceptor[]} interceptors\n */\n constructor(client, method, uri, params, headers, body, options, interceptors) {\n this.#client = client;\n this.#method = method;\n this.#uri = uri;\n this.#params = params;\n this.#body = body;\n this.#headers = headers;\n this.#options = options;\n this.#interceptors = interceptors;\n }\n /**\n * Add all passed headers to the request, overriding existing ones if that key already exists. Null and undefined values cause the key to be removed.\n * @param {HeadersInit|Record<string,string|null|undefined>} hs\n * @returns {HttpRequestBuilder} this builder\n */\n headers(hs) {\n for (const [k, v] of rawEntries(hs)) {\n if (v == null) {\n this.#headers.delete(k);\n } else {\n this.#headers.set(k, v);\n }\n }\n return this;\n }\n /**\n * Adds an header to the request, overriding it if it already exists. Null and undefined values cause the key to be removed\n * @param {string} k\n * @param {string} v\n * @returns {HttpRequestBuilder} this builder\n */\n header(k, v) {\n if (v == null) {\n this.#headers.delete(k);\n } else {\n this.#headers.set(k, v);\n }\n return this;\n }\n /**\n * Add all query parameters to the request, overriding existing ones if that key already exists. Null and undefined values cause the key to be removed\n * @param {URLSearchParams|Record<string,string|null|undefined>|string[][]|string} ps\n * @returns {HttpRequestBuilder} this builder\n */\n params(ps) {\n for (const [k, v] of rawEntries(ps)) {\n if (v == null) {\n this.#params.delete(k);\n } else {\n this.#params.set(k, v);\n }\n }\n return this;\n }\n /**\n * Adds a query parameter to the request, overriding it if it already exists. Empty vs, or a single null or undefined value cause the key to be removed.\n * @param {string} k\n * @param {...string} vs\n * @returns {HttpRequestBuilder} this builder\n */\n param(k, ...vs) {\n //overriding, as header, headers and params all do: pass every value in one\n //call to get a multi valued parameter\n this.#params.delete(k);\n if (vs.length === 0 || vs[0] == null) {\n return this;\n }\n for (const v of vs) {\n this.#params.append(k, v);\n }\n return this;\n }\n /**\n * Sets the request body.\n * `Content-Type: multipart/form-data` header is automatically added by fetch when data is a FormData instance if not explicitly set.\n * `Content-Type: application/x-www-form-urlencoded` header is automatically added by fetch when data is an URLSearchParams instance if not explicitly set.\n * `Content-Type: text/plain` header is automatically added by fetch when data is a string instance if not explicitly set.\n * @param {string|ArrayBuffer|Blob|DataView|File|FormData|TypedArray|URLSearchParams|ReadableStream} data\n * @returns {HttpRequestBuilder} this builder\n */\n body(data) {\n this.#body = data;\n return this;\n }\n /**\n * Sets the request body that will be serialized as json. Calling this method adds the `Content-Type application/json` header for the request.\n * @param {any} body - the body to be serialized as json\n * @returns {HttpRequestBuilder} this builder\n */\n json(body) {\n this.#headers.set('Content-Type', 'application/json');\n this.#body = JSON.stringify(body);\n return this;\n }\n /**\n * Sets the request body as a FormData configured using the callback.\n * `Content-Type: multipart/form-data` header is automatically added by fetch if not explicitly set.\n * @param {(c: HttpMultipartRequestCustomizer) => void} callback\n */\n multipart(callback) {\n const formData = new FormData();\n const builder = new HttpMultipartRequestCustomizer(formData);\n callback(builder);\n this.#body = formData;\n return this;\n }\n /**\n * Sets a fetch options for the request.\n * @param {Omit<RequestInit,\"headers\"|\"method\"|\"body\">} kvs\n * @returns {HttpRequestBuilder} this builder\n */\n options(kvs) {\n for (const [k, v] of Object.entries(kvs)) {\n this.#options[k] = v;\n }\n return this;\n }\n /**\n * Sets a fetch option for the request.\n * @param {keyof Omit<RequestInit,\"headers\"|\"method\"|\"body\">} k\n * @param {*} v\n * @returns {HttpRequestBuilder} this builder\n */\n option(k, v) {\n this.#options[k] = v;\n return this;\n }\n /**\n * Adds interceptors to the request.\n * @param {[HttpInterceptor]} is - the interceptor to be regisered\n * @returns {HttpRequestBuilder} this builder\n */\n interceptors(is) {\n for (const i of is) {\n this.#interceptors.push(i);\n }\n return this;\n }\n /**\n * Adds an interceptor to the request.\n * @param {HttpInterceptor} i - the interceptor to be regisered\n * @returns {HttpRequestBuilder} this builder\n */\n interceptor(i) {\n this.#interceptors.push(i);\n return this;\n }\n /**\n * Performs an HTTP exchange using the configured client, request and interceptors.\n * @returns {Promise<Response>} the response\n */\n async exchange() {\n const uri = this.#params.size ? `${this.#uri}?${this.#params}` : this.#uri;\n const opts = {\n ...this.#options,\n headers: this.#headers,\n method: this.#method,\n body: this.#body,\n };\n return await this.#client.exchange(uri, opts, this.#interceptors);\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<Response>} the response\n */\n async fetch() {\n const uri = this.#params.size ? `${this.#uri}?${this.#params}` : this.#uri;\n const opts = {\n ...this.#options,\n headers: this.#headers,\n method: this.#method,\n body: this.#body,\n };\n try {\n const response = await this.#client.exchange(uri, opts, this.#interceptors);\n if (!response.ok) {\n throw await HttpClientError.fromResponse(response);\n }\n return response;\n } catch (ex) {\n if (ex instanceof Failure) {\n throw ex;\n }\n throw HttpClientError.of('CONNECTION_PROBLEM', ex);\n }\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<string>} the response body, as text\n */\n async fetchText() {\n const response = await this.fetch();\n return await unmarshal(response, 'text');\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<any>} the response body, deserialized as JSON\n */\n async fetchJson() {\n const response = await this.fetch();\n return await unmarshal(response, 'json');\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<Blob>} the response body, as a Blob\n */\n async fetchBlob() {\n const response = await this.fetch();\n return await unmarshal(response, 'blob');\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<ArrayBuffer>} the response body, as an ArrayBuffer\n */\n async fetchArrayBuffer() {\n const response = await this.fetch();\n return await unmarshal(response, 'arrayBuffer');\n }\n}\n\nclass HttpMultipartRequestCustomizer {\n #formData;\n /**\n *\n * @param {FormData} formData\n */\n constructor(formData) {\n this.#formData = formData;\n }\n /**\n * Appends a value to the FormData.\n * @param {string} name\n * @param {*} value\n * @returns this builder\n */\n field(name, value) {\n this.#formData.append(name, value);\n return this;\n }\n /**\n * Appends a Blob to the FormData.\n * If `filename` is omitted, FormData defaults are applied:\n * The default filename for Blob objects is \"blob\";\n * The default filename for File objects is the file's filename.\n * @param {string} name\n * @param {Blob} value\n * @param {string|undefined} filename\n * @returns this builder\n */\n blob(name, value, filename) {\n this.#formData.append(name, value, filename);\n return this;\n }\n /**\n * Appends multiple Blobs to the FormData with the same name.\n * The default filename for Blob objects is \"blob\";\n * The default filename for File objects is the file's filename.\n * @param {string} name\n * @param {Blob[]} values\n * @returns this builder\n */\n blobs(name, values) {\n for (const v of values) {\n this.#formData.append(name, v);\n }\n return this;\n }\n /**\n * Appends a JSON serialized blob to the FormData.\n * @param {string} name\n * @param {any} value\n * @param {string|undefined} filename\n * @returns this builder\n */\n json(name, value, filename) {\n const blob = new Blob([JSON.stringify(value)], { type: 'application/json' });\n this.#formData.append(name, blob, filename);\n return this;\n }\n}\n\nexport { MediaType, HttpClient, HttpClientError };\n","class LocalStorage extends Storage {\n static save(k, v) {\n localStorage.setItem(k, JSON.stringify(v));\n }\n static load(k) {\n const got = localStorage.getItem(k);\n if (got === null) {\n return undefined;\n }\n try {\n return JSON.parse(got);\n } catch {\n //not what save wrote: drop it, otherwise every later read fails the same way\n localStorage.removeItem(k);\n return undefined;\n }\n }\n static remove(k) {\n localStorage.removeItem(k);\n }\n static pop(k) {\n const decoded = LocalStorage.load(k);\n LocalStorage.remove(k);\n return decoded;\n }\n}\n\nclass SessionStorage extends Storage {\n static save(k, v) {\n sessionStorage.setItem(k, JSON.stringify(v));\n }\n static load(k) {\n const got = sessionStorage.getItem(k);\n if (got === null) {\n return undefined;\n }\n try {\n return JSON.parse(got);\n } catch {\n //not what save wrote: drop it, otherwise every later read fails the same way\n sessionStorage.removeItem(k);\n return undefined;\n }\n }\n static remove(k) {\n sessionStorage.removeItem(k);\n }\n static pop(k) {\n const decoded = SessionStorage.load(k);\n SessionStorage.remove(k);\n return decoded;\n }\n}\n\nclass VersionedLocalStorage {\n static save(key, revision, data) {\n LocalStorage.save(key, { revision, data });\n }\n static load(key, revision) {\n const stored = LocalStorage.load(key);\n if (stored === undefined) {\n return undefined;\n }\n if (stored.revision !== revision) {\n LocalStorage.remove(key);\n return undefined;\n }\n return stored.data;\n }\n}\n\nclass VersionedSessionStorage {\n static save(key, revision, data) {\n SessionStorage.save(key, { revision, data });\n }\n static load(key, revision) {\n const stored = SessionStorage.load(key);\n if (stored === undefined) {\n return undefined;\n }\n if (stored.revision !== revision) {\n SessionStorage.remove(key);\n return undefined;\n }\n return stored.data;\n }\n}\n\nexport { LocalStorage, VersionedLocalStorage, SessionStorage, VersionedSessionStorage };\n","/**\n * @typedef {Object} AsyncExtension\n * @property {Promise<any>[]} promises\n * @typedef {Event & { async?: AsyncExtension }} AsyncEvent\n */\nclass AsyncEvents {\n /**\n * Dispatches an event and handles asynchronous resolution based on the execution mode.\n * @param {HTMLElement} el - The target element dispatching the event.\n * @param {AsyncEvent} evt - The event instance.\n * @param {{mode?: 'broadcast' | 'pipeline' | 'delegate'}} [options] - Configuration options (defaults to 'broadcast').\n * @returns {Promise<any>} Resolves with an array of values for broadcasts, a single value for pipelines/delegates, or undefined.\n */\n static async fireAsync(el, evt, options) {\n el.dispatchEvent(evt);\n const promises = evt.async?.promises ?? [];\n const mode = options?.mode ?? 'broadcast';\n if (mode === 'pipeline' && promises.length > 1) {\n throw new Error(\n `[AsyncEvents] Event \"${evt.type}\" is configured in 'pipeline' mode and expects at most one async listener, but ${promises.length} listeners were triggered on this element.`,\n );\n }\n if (mode === 'delegate' && promises.length !== 1) {\n throw new Error(\n `[AsyncEvents] Event \"${evt.type}\" is configured in 'delegate' mode and requires exactly one async listener, but ${promises.length} were registered.`,\n );\n }\n return mode === 'broadcast' ? Promise.all(promises) : Promise.resolve(promises[0]);\n }\n\n /**\n * Registers an asynchronous event listener wrapper.\n * @param {HTMLElement} el - The target element.\n * @param {string} type - The event name/type.\n * @param {Function} fn - The async listener middleware function returning the execution result.\n * @param {AddEventListenerOptions} [options] - Native addEventListener options.\n * @returns {EventListener} The underlying proxy listener function needed for cleanup via asyncOff.\n */\n static asyncOn(el, type, fn, options) {\n /** @type {(evt: Event) => Promise<void>} */\n const listener = async (event) => {\n const ae = /** @type {AsyncEvent} */ (event);\n if (!ae.async) {\n ae.async = { promises: [] };\n }\n const { promise, resolve, reject } = Promise.withResolvers();\n ae.async.promises.push(promise);\n try {\n resolve(await fn(ae));\n } catch (e) {\n reject(e);\n }\n };\n\n el.addEventListener(type, listener, options);\n return listener;\n }\n\n /**\n * Unregisters an asynchronous event listener proxy.\n * @param {HTMLElement} el - The target element.\n * @param {string} type - The event name/type.\n * @param {EventListener} listener - The proxy listener instance previously returned by asyncOn.\n * @param {EventListenerOptions} [options] - Native removeEventListener options.\n */\n static asyncOff(el, type, listener, options) {\n el.removeEventListener(type, listener, options);\n }\n\n /**\n * Mixes the asynchronous execution engine extensions into target class prototypes.\n * @param {...Function} classes - The target class constructors to decorate.\n */\n static mixInto(...classes) {\n for (const k of classes) {\n Object.assign(k.prototype, {\n /**\n * @this {HTMLElement}\n * @param {AsyncEvent} evt\n * @param {{mode?: 'broadcast' | 'pipeline' | 'delegate'}} [options]\n * @returns {Promise<any>}\n */\n async fireAsync(evt, options) {\n return await AsyncEvents.fireAsync(this, evt, options);\n },\n\n /**\n * @this {HTMLElement}\n * @param {string} type\n * @param {Function} fn\n * @param {AddEventListenerOptions} [options]\n * @returns {EventListener}\n */\n asyncOn(type, fn, options) {\n return AsyncEvents.asyncOn(this, type, fn, options);\n },\n\n /**\n * @this {HTMLElement}\n * @param {string} type\n * @param {EventListener} listener\n * @param {EventListenerOptions} [options]\n * @returns {void}\n */\n asyncOff(type, listener, options) {\n AsyncEvents.asyncOff(this, type, listener, options);\n },\n });\n }\n }\n}\n\nexport { AsyncEvents };\n","class Timing {\n static sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n static DEBOUNCE_DEFAULT = 0;\n static DEBOUNCE_IMMEDIATE = 1;\n /**\n * Executes only after a period of inactivity (pause in events).\n * Respond to the \"end\" of a series of events.\n * @param {*} timeoutMs\n * @param {*} func\n * @param {*} [options]\n * @returns {[function, function]}\n */\n static debounce(timeoutMs, func, options) {\n const opts = options ?? Timing.DEBOUNCE_DEFAULT;\n let tid = /** @type {number | null} */ (null);\n let args = [];\n let previousTimestamp = 0;\n\n const later = () => {\n const elapsed = performance.now() - previousTimestamp;\n if (timeoutMs > elapsed) {\n tid = setTimeout(later, timeoutMs - elapsed);\n return;\n }\n tid = null;\n if (opts !== Timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n // This check is needed because `func` can recursively invoke `debounced`.\n if (tid === null) {\n args = [];\n }\n };\n\n const debounced = (...called) => {\n args = called;\n previousTimestamp = performance.now();\n if (tid === null) {\n tid = setTimeout(later, timeoutMs);\n if (opts === Timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n }\n };\n const abort = () => {\n clearTimeout(tid ?? undefined);\n tid = null;\n args = [];\n };\n return [debounced, abort];\n }\n static THROTTLE_DEFAULT = 0;\n static THROTTLE_NO_LEADING = 1;\n static THROTTLE_NO_TRAILING = 2;\n /**\n * Executes at most once per specified time interval, regardless of ongoing events.\n * @param {*} timeoutMs\n * @param {*} func\n * @param {*} [options]\n * @returns {[function, function]}\n */\n static throttle(timeoutMs, func, options) {\n const opts = options ?? Timing.THROTTLE_DEFAULT;\n let tid = /** @type {number | null} */ (null);\n let args = [];\n let previousTimestamp = 0;\n\n const later = () => {\n previousTimestamp = opts & Timing.THROTTLE_NO_LEADING ? 0 : performance.now();\n tid = null;\n func(...args);\n if (tid === null) {\n args = [];\n }\n };\n const throttled = (...called) => {\n const now = performance.now();\n if (!previousTimestamp && opts & Timing.THROTTLE_NO_LEADING) {\n previousTimestamp = now;\n }\n const remaining = previousTimestamp === 0 ? 0 : timeoutMs - (now - previousTimestamp);\n args = called;\n if (remaining <= 0 || remaining > timeoutMs) {\n if (tid !== null) {\n clearTimeout(tid);\n tid = null;\n }\n previousTimestamp = now;\n func(...args);\n if (tid === null) {\n args = [];\n }\n } else if (tid === null && !(opts & Timing.THROTTLE_NO_TRAILING)) {\n tid = setTimeout(later, remaining);\n }\n };\n const abort = () => {\n clearTimeout(tid ?? undefined);\n tid = null;\n args = [];\n };\n return [throttled, abort];\n }\n}\n\nexport { Timing };\n","class Bindings {\n /**\n * @param {{ [x: string]: any; }} obj\n * @param {string} prefix\n * @param {Set<String>} stops\n * @return {{ [x: string]: any; }}\n */\n static flatten(obj, prefix, stops) {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? `${prefix}.${k}` : k;\n if (!stops.has(pre) && typeof obj[k] === 'object' && obj[k] !== null) {\n Object.assign(acc, Bindings.flatten(obj[k], pre, stops));\n } else {\n acc[pre] = obj[k];\n }\n return acc;\n }, {});\n }\n\n /**\n * @param {any} result\n * @param {string} path\n * @param {any} value\n */\n static providePath(result, path, value) {\n const keys = path.split('.').map((k) => (/^[0-9]+$/.test(k) ? +k : k));\n let current = result ?? {};\n let previous = /** @type {any} */ (null);\n for (let i = 0; ; ++i) {\n const ckey = keys[i];\n const pkey = keys[i - 1];\n if (Number.isInteger(ckey) && !Array.isArray(current)) {\n if (previous !== null) {\n previous[pkey] = current = [];\n } else {\n result = current = [];\n }\n }\n if (i === keys.length - 1) {\n //when value is undefined we only want to define the property if it's not defined\n current[ckey] = value !== undefined ? value : ckey in current ? current[ckey] : null;\n return result;\n }\n if (current[ckey] === undefined) {\n current[ckey] = {};\n }\n previous = current;\n current = current[ckey];\n }\n }\n /**\n *\n * @param {Element & {dataset?: any} & {checked?: boolean} & {value?: any}} el\n * @returns\n */\n static extract(el) {\n if (el.getAttribute('type') === 'radio') {\n if (!el.checked) {\n return undefined;\n }\n return el.dataset.fulBindType === 'boolean' ? el.value === 'true' : el.value;\n }\n if (el.getAttribute('type') === 'checkbox') {\n return el.checked;\n }\n if (el.dataset.fulBindType === 'boolean') {\n return !el.value ? null : el.value === 'true';\n }\n if (el.tagName === 'INPUT' || el.tagName === 'SELECT' || el.tagName === 'TEXTAREA') {\n return el.value === '' || el.value === undefined ? null : el.value;\n }\n return el.value;\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n * @param {HTMLElement} [submitter]\n * @returns\n */\n static extractFrom(form, submitter) {\n let result = {};\n for (const el of form.elements) {\n // we are assuming submitters are disabled during submit.\n if (!el.hasAttribute('name') || (el.matches(':disabled') && el !== submitter)) {\n continue;\n }\n result = Bindings.providePath(\n result,\n /** @type {string} */ (el.getAttribute('name')),\n Bindings.extract(el),\n );\n }\n return result;\n }\n\n /**\n *\n * @param {Element & {dataset?: any} & {checked?: boolean} & {value?: any}} el\n * @returns\n */\n static mutate(el, raw) {\n if (el.getAttribute('type') === 'radio') {\n //values are matched as strings, as ful-radio-group does: extract decodes\n //boolean radios, and payloads carry numbers where the attribute is text\n el.checked = raw != null && el.getAttribute('value') === String(raw);\n return;\n }\n if (el.getAttribute('type') === 'checkbox') {\n el.checked = raw;\n return;\n }\n el.value = raw;\n }\n\n static mutateIn(form, values) {\n const names = Array.from(form.elements)\n .map((el) => el.getAttribute('name'))\n .filter((n) => n);\n for (const [flattenedKey, value] of Object.entries(Bindings.flatten(values, '', new Set(names)))) {\n for (const el of form.querySelectorAll(`[name='${CSS.escape(flattenedKey)}']`)) {\n Bindings.mutate(el, value);\n }\n }\n }\n\n static errors(form, es, scrollOnError) {\n const fieldErrors = es.filter((e) => e.type === 'FIELD_ERROR' || e.type === 'INVALID_FORMAT');\n const globalErrors = es.filter((e) => e.type !== 'FIELD_ERROR' && e.type !== 'INVALID_FORMAT');\n form.querySelectorAll(`[name]`).forEach((el) => {\n el.setCustomValidity?.('');\n });\n form.querySelectorAll('ful-errors').forEach((el) => {\n el.replaceChildren();\n el.setAttribute('hidden', '');\n });\n fieldErrors.forEach((e) => {\n const name = e.context.replace(/\\[/g, '.').replace(/\\]\\./g, '.').replace(/\\]/g, '')\n const parts = name.split('.');\n for (let i = parts.length; i !== 0; --i) {\n const prefix = parts.slice(0, i).join('.');\n const suffix = parts.slice(i, parts.length).join('.');\n form.querySelectorAll(`[name='${CSS.escape(prefix)}']`).forEach((input) => {\n input.setCustomValidity?.(e.reason, suffix);\n });\n }\n });\n form.querySelectorAll('ful-errors').forEach((el) => {\n const hel = /** @type HTMLElement} */ (el);\n hel.innerText = globalErrors.map((e) => e.reason).join('\\n');\n if (globalErrors.length !== 0) {\n el.removeAttribute('hidden');\n }\n });\n if (es.length === 0 || !scrollOnError) {\n return;\n }\n Array.from(form.querySelectorAll(`:invalid`))\n .sort((a, b) => a.getBoundingClientRect().y - b.getBoundingClientRect().y)[0]\n ?.focus();\n }\n}\n\nexport { Bindings };\n","import { Attributes, ParsedElement, registry } from '../../ftl/index.mjs';\nimport { Failure } from '../../httpc/index.mjs';\nimport { Bindings } from './bindings.mjs';\nimport { AsyncEvents } from '../events/async.mjs';\n\nclass RemoteJsonFormLoader {\n #http;\n #url;\n #method;\n #requestMapper;\n #responseMapper;\n constructor(http, url, method, requestMapper, responseMapper) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n this.#requestMapper = requestMapper;\n this.#responseMapper = responseMapper;\n }\n prepare(values, form) {\n return this.#requestMapper(values, form);\n }\n async submit(values, form) {\n return await this.#http.request(this.#method, this.#url).json(values).fetch();\n }\n transform(response, form) {\n return this.#responseMapper(response, form);\n }\n}\n\nclass LocalFormLoader {\n #requestMapper;\n #responseMapper;\n constructor(requestMapper, responseMapper) {\n this.#requestMapper = requestMapper;\n this.#responseMapper = responseMapper;\n }\n async prepare(values, form) {\n return await this.#requestMapper(values, form);\n }\n async submit(values, form, response) {\n return response;\n }\n async transform(response, form) {\n return await this.#responseMapper(response, form);\n }\n}\n\nclass FormLoader {\n static create(el, conf) {\n const http = registry.component('http-client');\n const requestMapper = el.hasAttribute('request-mapper')\n ? registry.component(el.getAttribute('request-mapper'))\n : (v) => v;\n const responseMapper = el.hasAttribute('response-mapper')\n ? registry.component(el.getAttribute('response-mapper'))\n : (v) => v;\n const url = el.getAttribute('action');\n if (!url) {\n return new LocalFormLoader(requestMapper, responseMapper);\n }\n const method = el.getAttribute('method') ?? 'POST';\n return new RemoteJsonFormLoader(http, url, method, requestMapper, responseMapper);\n }\n}\n\nclass Form extends ParsedElement {\n form;\n render() {\n const form = document.createElement('form');\n this.form = form;\n form.setAttribute('novalidate', '');\n Attributes.forward('form-', this, form);\n form.replaceChildren(...this.childNodes);\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n e.stopPropagation();\n await this.submit(e.submitter ?? undefined);\n });\n if (this.hasAttribute('clear-invalid-on-change')) {\n this.addEventListener('change', (/** @type any */ evt) => {\n evt.target.setCustomValidity?.('');\n });\n }\n this.replaceChildren(form);\n }\n /**\n *\n * @param {HTMLElement} [submitter]\n * @returns\n */\n async submit(submitter) {\n this.spinner(true);\n //one try: building the loader and preparing the request are as much part of a\n //submit as sending it, and a mapper that throws is how a caller reports a\n //problem with the values\n let values;\n let request;\n try {\n const loader = registry.component(this.getAttribute('loader') ?? 'loaders:form').create(this);\n values = Bindings.extractFrom(this.form, submitter);\n request = await loader.prepare(values, this);\n const se = new CustomEvent('submit', {\n bubbles: true,\n cancelable: true,\n detail: { submitter, values, request },\n });\n if (!this.dispatchEvent(se)) {\n return;\n }\n this.errors = [];\n const sre = new CustomEvent('submit:requested', {\n bubbles: true,\n cancelable: false,\n detail: { submitter, values: se.detail.values, request: se.detail.request },\n });\n let response = await AsyncEvents.fireAsync(this, sre, { mode: 'pipeline' });\n request = sre.detail.request;\n\n response = await loader.submit(request, this, response);\n const mapped = await loader.transform(response, this);\n this.dispatchEvent(\n new CustomEvent('submit:success', {\n bubbles: true,\n cancelable: false,\n detail: { submitter, values, request, response: mapped },\n }),\n );\n } catch (e) {\n this.dispatchEvent(\n new CustomEvent('submit:failure', {\n bubbles: true,\n cancelable: false,\n detail: { submitter, values, request, exception: e },\n }),\n );\n if (e instanceof Failure) {\n this.errors = e.problems;\n }\n console.warn('failed to submit form', this, 'reason:', e);\n } finally {\n this.spinner(false);\n }\n }\n reset() {\n this.form.reset();\n }\n #spinning = 0;\n spinner(spin) {\n //submits can overlap: only the outermost one saves and restores the button states\n if (spin) {\n ++this.#spinning;\n if (this.#spinning !== 1) {\n return;\n }\n } else {\n this.#spinning = Math.max(0, this.#spinning - 1);\n if (this.#spinning !== 0) {\n return;\n }\n }\n this.querySelectorAll('ful-spinner').forEach((el) => {\n const hel = /** @type HTMLElement */ (el);\n hel.hidden = !spin;\n });\n this.querySelectorAll('input,button').forEach((el) => {\n const hel = /** @type HTMLButtonElement|HTMLInputElement */ (el);\n if (hel.type !== 'submit' && hel.type !== 'reset') {\n return;\n }\n if (spin) {\n hel.dataset.wd = String(hel.disabled);\n hel.disabled = true;\n } else {\n hel.disabled = hel.dataset.wd === 'true';\n delete hel.dataset.wd;\n }\n });\n }\n set values(vs) {\n Bindings.mutateIn(this.form, vs);\n }\n get values() {\n return Bindings.extractFrom(this.form);\n }\n set errors(es) {\n Bindings.errors(this.form, es, this.hasAttribute('scroll-on-error'));\n }\n}\n\nexport { FormLoader, Form };\n","import { Attributes, ParsedElement } from '../../ftl/index.mjs';\n\nclass Input extends ParsedElement {\n static observed = ['value', 'readonly:presence', 'required:presence', 'placeholder'];\n static slots = true;\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <input data-tpl-if=\"type != 'textarea'\" class=\"form-control\" data-tpl-type=\"type\" placeholder=\" \" form=\"\">\n <textarea data-tpl-if=\"type == 'textarea'\" class=\"form-control\" placeholder=\" \" form=\"\"></textarea>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n static formAssociated = true;\n _input;\n _fieldError;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'presentation';\n }\n _type() {\n return this.getAttribute('type') ?? 'text';\n }\n _fragment(type, slots) {\n return this.template().withOverlay({ type, slots }).render();\n }\n render({ slots, observed, disabled, skipObservedSetup }) {\n const type = this._type();\n const fragment = this._fragment(type, slots);\n this._input = fragment.querySelector('input,textarea');\n\n Attributes.forward('input-', this, this._input);\n this._input.addEventListener('keydown', (evt) => {\n if (evt.key !== 'Enter' || this._type() === 'textarea') {\n return;\n }\n const form = this.internals.form;\n if (!form) {\n return;\n }\n const candidates = /** @type [HTMLButtonElement|HTMLInputElement] */ (\n Array.from(form.querySelectorAll('button:not(:disabled), input:not(:disabled)'))\n );\n const submitter = candidates.find((el) => el.type === 'submit');\n form.requestSubmit(submitter);\n });\n this._input.addEventListener('input', (evt) => {\n const mask = this.getAttribute('mask');\n if (!mask) {\n return;\n }\n const strip = (v) => v.replace(new RegExp(mask, 'g'), '');\n const before = evt.target.value;\n const after = strip(before);\n if (before === after) {\n return;\n }\n const start = evt.target.selectionStart;\n evt.target.value = after;\n if (start === null) {\n //email, number and the date types have no selection to restore\n return;\n }\n //the caret keeps its place among the characters that survived, so only the\n //ones stripped before it count\n const caret = strip(before.slice(0, start)).length;\n evt.target.setSelectionRange(caret, caret);\n });\n this._input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n const label = fragment.querySelector('label');\n label.addEventListener('click', () => this.focus());\n this._fieldError = fragment.querySelector('ful-field-error');\n this._input.ariaDescribedByElements = [this._fieldError];\n this._input.ariaLabelledByElements = [label];\n this.replaceChildren(fragment);\n if (!skipObservedSetup) {\n // biome-ignore lint/complexity/noUselessThisAlias: keeps checkJs from seeing these as class fields\n const el = this;\n el.disabled = disabled;\n el.readonly = observed.readonly;\n el.required = observed.required;\n el.placeholder = observed.placeholder;\n el.value = observed.value;\n }\n }\n get value() {\n const uppercase = this.hasAttribute('uppercase');\n const trim = this.hasAttribute('trim');\n const v = this._input.value;\n const uppercased = uppercase ? v.toUpperCase() : v;\n const trimmed = trim ? uppercased.trim() : uppercased;\n return trimmed === '' ? null : trimmed;\n }\n set value(value) {\n this._input.value = value === '' ? null : value;\n }\n get readonly() {\n return this._input.readOnly;\n }\n set readonly(v) {\n this._input.readOnly = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get disabled() {\n return this._input.hasAttribute('disabled');\n }\n set disabled(d) {\n Attributes.toggle(this._input, 'disabled', d);\n //also on the host: a form associated element only matches :disabled through its\n //own attribute, and that is what keeps it out of the submitted values. no reflect\n //is needed, disabled is deliberately not observed: the platform delivers it\n //through formDisabledCallback, which also covers a disabled ancestor fieldset\n Attributes.toggle(this, 'disabled', d);\n }\n get required() {\n return this._input.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this._input, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n get placeholder() {\n const v = this._input.getAttribute('placeholder');\n return v === ' ' ? null : v;\n }\n set placeholder(d) {\n //without a placeholder :placeholder-shown never matches, and floating labels\n //rely on it, so a blank one stands in for none\n Attributes.set(this._input, 'placeholder', d ?? ' ');\n this.reflect(() => {\n Attributes.set(this, 'placeholder', d);\n });\n }\n focus(options) {\n this._input.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this._fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this._fieldError.innerText = error;\n }\n formResetCallback() {\n this.value = this.unmarshal('value', this.getAttribute('value'));\n }\n}\n\nexport { Input };\n","import { ParsedElement } from '../../ftl/index.mjs';\nimport { Input } from './input.mjs';\n\nclass LocalDate extends ParsedElement {\n render() {\n const content = this.textContent.trim();\n if (content === '') {\n this.replaceChildren(this.getAttribute('default') ?? '');\n return;\n }\n const locale = this.getAttribute('locale') ?? Intl.DateTimeFormat().resolvedOptions().locale;\n const formatter = new Intl.DateTimeFormat(locale, { year: 'numeric', month: 'numeric', day: 'numeric' });\n const [y, m, d] = content.split('-').map(Number);\n this.replaceChildren(formatter.format(new Date(y, m - 1, d)));\n }\n}\n\nclass Instant extends ParsedElement {\n render() {\n const content = this.textContent.trim();\n if (content === '') {\n this.replaceChildren(this.getAttribute('default') ?? '');\n return;\n }\n const locale = this.getAttribute('locale') ?? Intl.DateTimeFormat().resolvedOptions().locale;\n const format = new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false,\n });\n this.replaceChildren(format.format(new Date(Instant.isoToLocal(content))));\n }\n static isoToLocal(iso) {\n //this is so sad\n const d = new Date(iso);\n const pad = (n, v) => String(v).padStart(n, '0');\n const date = `${d.getFullYear()}-${pad(2, d.getMonth() + 1)}-${pad(2, d.getDate())}`;\n const time = `${pad(2, d.getHours())}:${pad(2, d.getMinutes())}:${pad(2, d.getSeconds())}.${pad(3, d.getMilliseconds())}`;\n return `${date}T${time}`;\n }\n}\n\nclass InputLocalDate extends Input {\n static observed = ['value', 'readonly:presence', 'required:presence', 'placeholder', 'min', 'max', 'step'];\n _type() {\n return 'date';\n }\n render(conf) {\n const { observed } = conf;\n super.render(conf);\n //step first: on a time input min and max are snapped to its grid\n this.step = observed.step;\n this.min = observed.min;\n this.max = observed.max;\n }\n get min() {\n const v = this._input.min;\n return v === '' ? null : v;\n }\n set min(v) {\n this._input.min = InputLocalDate.#fromIsoOrOffset(v);\n }\n get max() {\n const v = this._input.max;\n return v === '' ? null : v;\n }\n set max(v) {\n this._input.max = InputLocalDate.#fromIsoOrOffset(v);\n }\n get step() {\n const v = this._input.step;\n return v === '' ? null : v;\n }\n set step(v) {\n this._input.step = v ?? '';\n }\n static #fromIsoOrOffset(v) {\n if (!v) {\n return '';\n }\n //this could be date.toLocaleDateString('en-CA')\n const formatLocalDate = (date) =>\n new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().split('T')[0];\n if (v === 'now') {\n return formatLocalDate(new Date());\n }\n const re = /^([+-])(\\d+)([dmy])$/;\n const match = re.exec(v);\n if (!match) {\n return v;\n }\n const sign = match[1] === '-' ? -1 : 1;\n const offset = +match[2];\n const r = new Date();\n r.setHours(0, 0, 0, 0);\n switch (match[3]) {\n case 'd':\n r.setDate(r.getDate() + offset * sign);\n break;\n case 'm': {\n const originalDay = r.getDate();\n r.setMonth(r.getMonth() + offset * sign);\n if (r.getDate() !== originalDay) {\n r.setDate(0);\n }\n break;\n }\n case 'y':\n r.setFullYear(r.getFullYear() + offset * sign);\n break;\n }\n return formatLocalDate(r);\n }\n}\n\nclass InputLocalTime extends InputLocalDate {\n _type() {\n return 'time';\n }\n get min() {\n const v = this._input.min;\n return v === '' ? null : v;\n }\n set min(v) {\n this._input.min = this.#fromNowOrOffset(v);\n }\n get max() {\n const v = this._input.max;\n return v === '' ? null : v;\n }\n set max(v) {\n this._input.max = this.#fromNowOrOffset(v);\n }\n /**\n * Resolves `now` and hour or minute offsets against the current time, wrapping\n * around midnight. `m` is minutes here, unlike the date offsets of the parent where\n * it is months: months mean nothing on a time. Anything else is passed through.\n */\n #fromNowOrOffset(v) {\n if (!v) {\n return '';\n }\n const resolved = new Date();\n if (v !== 'now') {\n const re = /^([+-])(\\d+)([hm])$/;\n const match = re.exec(v);\n if (!match) {\n return v;\n }\n const sign = match[1] === '-' ? -1 : 1;\n const offset = +match[2] * sign;\n if (match[3] === 'h') {\n resolved.setHours(resolved.getHours() + offset);\n } else {\n resolved.setMinutes(resolved.getMinutes() + offset);\n }\n }\n return InputLocalTime.#snapped(resolved, Number(this._input.step) || 60);\n }\n /**\n * Truncates a time to the step grid: min anchors that grid, so a bound that is not\n * on it makes every value on it invalid.\n */\n static #snapped(date, stepSeconds) {\n const pad = (n) => String(n).padStart(2, '0');\n const seconds = date.getHours() * 3600 + date.getMinutes() * 60 + date.getSeconds();\n const snapped = Math.floor(seconds / stepSeconds) * stepSeconds;\n const hh = pad(Math.floor(snapped / 3600));\n const mm = pad(Math.floor((snapped % 3600) / 60));\n return stepSeconds % 60 === 0 ? `${hh}:${mm}` : `${hh}:${mm}:${pad(snapped % 60)}`;\n }\n}\n\nclass InputInstant extends Input {\n static observed = ['value', 'readonly:presence', 'required:presence', 'placeholder', 'min', 'max', 'step'];\n _type() {\n return 'datetime-local';\n }\n render(conf) {\n const { observed } = conf;\n super.render(conf);\n this.min = observed.min;\n this.max = observed.max;\n this.step = observed.step;\n }\n get value() {\n const v = this._input.value;\n return v === '' ? null : new Date(v).toISOString();\n }\n set value(v) {\n this._input.value = v ? Instant.isoToLocal(v) : '';\n }\n get min() {\n const v = this._input.min;\n return v === '' ? null : new Date(v).toISOString();\n }\n set min(v) {\n this._input.min = v ? Instant.isoToLocal(v) : '';\n }\n get max() {\n const v = this._input.max;\n return v === '' ? null : new Date(v).toISOString();\n }\n set max(v) {\n this._input.max = v ? Instant.isoToLocal(v) : '';\n }\n get step() {\n const v = this._input.step;\n return v === '' ? null : v;\n }\n set step(v) {\n this._input.step = v ?? '';\n }\n}\n\nexport { Instant, LocalDate, InputLocalDate, InputLocalTime, InputInstant };\n","import { Attributes } from '../../ftl/index.mjs';\nimport { Input } from './input.mjs';\n\nclass InputFile extends Input {\n static l10n = {\n en: {\n dropzonelabel: 'Click or drop your files here',\n unacceptablefiletype: 'Only files of type {0} are supported',\n maxfilesizeexceeded: 'Maximum supported file size is {0}',\n maxtotalsizeexceeded: 'Maximum supported total file size is {0}',\n maxfilesexceeded: 'Maximum files count exceeded',\n },\n it: {\n dropzonelabel: 'Clicca o trascina i file qui',\n unacceptablefiletype: 'Solo i file di tipo {0} sono supportati',\n maxfilesizeexceeded: 'La dimensione massima di un file è di {0}',\n maxtotalsizeexceeded: 'La dimensione massima complessiva dei file è di {0}',\n maxfilesexceeded: 'Numero massimo di file superato',\n },\n es: {\n dropzonelabel: 'Haz clic o arrastra tus archivos aquí',\n unacceptablefiletype: 'Solo se admiten archivos de tipo {0}',\n maxfilesizeexceeded: 'El tamaño máximo de archivo admitido es {0}',\n maxtotalsizeexceeded: 'El tamaño total máximo admitido es {0}',\n maxfilesexceeded: 'Se ha superado el número máximo de archivos',\n },\n fr: {\n dropzonelabel: 'Cliquez ou déposez vos fichiers ici',\n unacceptablefiletype: 'Seuls les fichiers de type {0} sont pris en charge',\n maxfilesizeexceeded: 'La taille maximale de fichier prise en charge est {0}',\n maxtotalsizeexceeded: 'La taille totale maximale prise en charge est {0}',\n maxfilesexceeded: 'Nombre maximal de fichiers dépassé',\n },\n };\n static observed = [\n 'value',\n 'readonly:presence',\n 'required:presence',\n 'placeholder',\n 'accept:csv',\n 'multiple:presence',\n 'itemlist:presence',\n 'dropzone:presence',\n 'maxfiles:number',\n 'maxfilesize:number',\n 'maxtotalsize:number',\n ];\n #accept;\n #items;\n #dropzone;\n #warnings;\n _type() {\n return 'file';\n }\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <input class=\"form-control\" data-tpl-type=\"type\" placeholder=\" \" form=\"\">\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <div data-ref=\"dropzone\" class=\"dropzone\" data-tpl-if=\"slots.dropzone\">\n {{{{ slots.dropzone }}}}\n </div>\n <div data-ref=\"dropzone\" class=\"default-dropzone\" data-tpl-if=\"!slots.dropzone\">\n {{ #l10n:t('dropzonelabel') }}\n </div>\n <ful-item-list></ful-item-list>\n <ful-field-warnings></ful-field-warnings>\n <ful-field-error></ful-field-error>\n `;\n static templates = {\n items: `\n <ful-item data-tpl-each=\"files\" data-tpl-var=\"file\" data-tpl-data-name=\"file.name\">\n <div>{{ file.name }}</div>\n <div>{{ #bytes:format(file.size) }}</div>\n <button type=\"button\" class=\"btn btn-sm btn-outline-danger bi bi-x-lg\" alt=\"Rimuovi\"></button>\n </ful-item>\n `,\n warning: `<ful-field-warning>{{ #l10n:t(key, args) }}</ful-field-warning>`,\n };\n render(conf) {\n const { observed } = conf;\n super.render({ ...conf, skipObservedSetup: true });\n this.#items = this.querySelector('ful-item-list');\n this.#dropzone = this.querySelector('[data-ref=dropzone]');\n this.#warnings = this.querySelector('ful-field-warnings');\n this.accept = observed.accept;\n this.multiple = observed.multiple;\n this.itemlist = observed.itemlist;\n this.dropzone = observed.dropzone;\n this.maxfiles = observed.maxfiles;\n this.maxfilesize = observed.maxfilesize;\n this.maxtotalsize = observed.maxtotalsize;\n\n this.disabled = conf.disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.placeholder = observed.placeholder;\n this.value = observed.value;\n this.#warnings.addEventListener('animationend', (e) => {\n e.target.remove();\n });\n this.#items.addEventListener('click', (e) => {\n if (!e.target.closest('button')) {\n return;\n }\n const idx = [...this.#items.children].indexOf(e.target.closest('ful-item'));\n if (idx === -1) {\n return;\n }\n const dt = new DataTransfer();\n [...this.files]\n .filter((f, i) => i !== idx)\n .forEach((f) => {\n dt.items.add(f);\n });\n this.files = dt.files;\n });\n this.#dropzone.addEventListener('click', (e) => {\n this.querySelector('input')?.click();\n });\n\n this.#dropzone.addEventListener('dragover', (e) => {\n e.preventDefault();\n });\n this.#dropzone.addEventListener('drop', (e) => {\n e.preventDefault();\n const dropped = [...e.dataTransfer.items].filter((i) => i.kind === 'file');\n if (dropped.length === 0) {\n return;\n }\n const dt = new DataTransfer();\n dropped.forEach((i) => {\n dt.items.add(i.getAsFile());\n });\n this.files = dt.files;\n });\n this._input.addEventListener('change', (e) => {\n this.#update();\n });\n }\n #formatByteSize(v) {\n return v > 1024 * 1024\n ? `${Math.round((v / 1024 / 1024) * 100) / 100}MiB`\n : v > 1024\n ? `${Math.round((v / 1024) * 100) / 100}KiB`\n : `${v}B`;\n }\n #update() {\n this.setCustomValidity();\n this.#warnings.replaceChildren();\n this.#ensureAcceptable();\n this.#ensureFileSizes();\n this.#ensureTotalSize();\n this.#ensureFilesCount();\n this.template('items')\n .withOverlay({ files: this.files })\n .withModule('bytes', { format: this.#formatByteSize })\n .renderTo(this.#items);\n }\n warning(key, args) {\n this.template('warning').withOverlay({ key, args }).appendTo(this.#warnings);\n }\n #ensureAcceptable() {\n if (!this.#accept.length) {\n return;\n }\n const unacceptable = [...this.files].filter(\n (file) => !this.#accept.some((type) => file.name.toLowerCase().endsWith(type.toLowerCase())),\n );\n\n if (unacceptable.length === 0) {\n return;\n }\n this.warning('unacceptablefiletype', this.#accept.join(', '));\n const dt = new DataTransfer();\n [...this.files]\n .filter((f) => !unacceptable.includes(f))\n .forEach((f) => {\n dt.items.add(f);\n });\n this._input.files = dt.files;\n }\n #ensureFilesCount() {\n if (this.#maxfiles === null) {\n return;\n }\n if (this.files.length <= this.#maxfiles) {\n return;\n }\n this.warning('maxfilesexceeded');\n this._input.files = new DataTransfer().files;\n }\n\n #ensureFileSizes() {\n if (this.#maxfilesize === null) {\n return;\n }\n const oversized = [...this.files].filter((file) => file.size > this.#maxfilesize);\n if (oversized.length === 0) {\n return;\n }\n this.warning('maxfilesizeexceeded', this.#formatByteSize(this.#maxfilesize));\n const dt = new DataTransfer();\n [...this.files]\n .filter((f) => !oversized.includes(f))\n .forEach((f) => {\n dt.items.add(f);\n });\n this._input.files = dt.files;\n }\n #ensureTotalSize() {\n if (this.#maxtotalsize === null) {\n return;\n }\n const totalSize = [...this.files].reduce((acc, file) => acc + file.size, 0);\n if (totalSize <= this.#maxtotalsize) {\n return;\n }\n this.warning('maxtotalsizeexceeded', this.#formatByteSize(this.#maxtotalsize));\n this._input.files = new DataTransfer().files;\n }\n get accept() {\n return this.#accept;\n }\n set accept(vs) {\n this._input.accept = vs.join(',');\n this.#accept = vs;\n this.reflect(() => {\n this.setAttribute('accept', this._input.accept);\n });\n }\n get multiple() {\n return this._input.multiple;\n }\n set multiple(v) {\n this._input.multiple = v;\n this.reflect(() => {\n Attributes.toggle(this, 'multiple', v);\n });\n }\n get files() {\n return this._input.files;\n }\n set files(vs) {\n this._input.files = vs;\n this.#update();\n }\n get file() {\n return this.files[0] ?? null;\n }\n set file(v) {\n const dt = new DataTransfer();\n if (v) {\n dt.items.add(v);\n }\n this.files = dt.files;\n }\n get value() {\n const names = Array.from(this._input.files).map((f) => f.name);\n return this.multiple ? names : (names[0] ?? null);\n }\n set value(v) {\n if (v) {\n return;\n }\n this.files = new DataTransfer().files;\n }\n get totalsize() {\n return Array.from(this.files).reduce((a, f) => a + f.size, 0);\n }\n #maxfiles;\n get maxfiles() {\n return this.#maxfiles;\n }\n set maxfiles(v) {\n this.#maxfiles = v;\n this.reflect(() => {\n Attributes.set(this, 'maxfiles', v);\n });\n }\n #maxfilesize;\n get maxfilesize() {\n return this.#maxfilesize;\n }\n set maxfilesize(v) {\n this.#maxfilesize = v;\n this.reflect(() => {\n Attributes.set(this, 'maxfilesize', v);\n });\n }\n #maxtotalsize;\n get maxtotalsize() {\n return this.#maxtotalsize;\n }\n set maxtotalsize(v) {\n this.#maxtotalsize = v;\n this.reflect(() => {\n Attributes.set(this, 'maxtotalsize', v);\n });\n }\n #useItemlist;\n get itemlist() {\n return this.#useItemlist;\n }\n set itemlist(v) {\n this.#useItemlist = v;\n this.reflect(() => {\n Attributes.toggle(this, 'itemlist', v);\n });\n }\n #useDropzone;\n get dropzone() {\n return this.#useDropzone;\n }\n set dropzone(v) {\n this.#useDropzone = v;\n this.reflect(() => {\n Attributes.toggle(this, 'dropzone', v);\n });\n }\n}\n\nexport { InputFile };\n","import { Attributes, Fragments, ParsedElement, registry, Templates } from '../../ftl/index.mjs';\nimport { VersionedLocalStorage } from '../storage.mjs';\nimport { Timing } from '../timing.mjs';\n\nclass RemoteLoader {\n #http;\n #url;\n #method;\n #responseMapper;\n #prefetch;\n #revision;\n #data;\n constructor({ http, url, method, responseMapper, prefetch, revision }) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n this.#responseMapper = responseMapper;\n this.#prefetch = prefetch;\n this.#revision = revision;\n this.#data = null;\n }\n async prefetch() {\n if (!this.#prefetch) {\n return;\n }\n await this.#ensureFetched();\n }\n async exact(...keys) {\n await this.#ensureFetched();\n return this.#data.filter(([k, v]) => keys.some((r) => r == k));\n }\n async load(needle) {\n await this.#ensureFetched();\n return this.#data.filter(([k, v]) => (v ?? '').toLowerCase().includes(needle?.toLowerCase()));\n }\n async reconfigureUrl(url) {\n this.#data = null;\n this.#url = url;\n }\n async #ensureFetched() {\n if (this.#data !== null) {\n return;\n }\n const raw = await RemoteLoader.#revisionedData(this.#http, this.#method, this.#url, this.#revision);\n this.#data = this.#responseMapper(raw);\n }\n static async #revisionedData(http, method, url, revision) {\n const storageKey = `${method}@${url}`;\n if (revision !== null) {\n const data = VersionedLocalStorage.load(storageKey, revision);\n if (data !== undefined) {\n return data;\n }\n }\n const data = await http.request(method, url).fetchJson();\n if (revision !== null) {\n VersionedLocalStorage.save(storageKey, revision, data);\n }\n return data;\n }\n}\n\nclass PartialRemoteLoader {\n #http;\n #url;\n #method;\n #responseMapper;\n constructor({ http, url, method, responseMapper }) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n this.#responseMapper = responseMapper;\n }\n async exact(...keys) {\n const response = await this.#http\n .request(this.#method, this.#url)\n .param('k', ...keys)\n .fetchJson();\n return this.#responseMapper(response);\n }\n async load(needle) {\n const response = await this.#http.request(this.#method, this.#url).param('s', needle).fetchJson();\n return this.#responseMapper(response);\n }\n}\n\nclass InMemoryLoader {\n #data;\n constructor(data) {\n this.#data = data;\n }\n update(data) {\n this.#data = data;\n }\n exact(...keys) {\n return this.#data.filter(([k, v]) => keys.some((r) => r == k));\n }\n load(needle) {\n return this.#data.filter(([k, v]) => (v ?? '').toLowerCase().includes(needle?.toLowerCase()));\n }\n}\n\nclass SelectLoader {\n static create(el, conf) {\n if (!el.hasAttribute('src')) {\n const els = Array.from(conf.options?.querySelectorAll('option') ?? []);\n const data = els.map((e) => {\n return [e.getAttribute('value') ?? e.innerText.trim(), e.innerText.trim()];\n });\n return new InMemoryLoader(data);\n }\n const http = registry.component('http-client');\n const responseMapper = SelectLoader.#responseMapperFrom(el);\n\n if ('chunked' === el.getAttribute('mode')) {\n return new PartialRemoteLoader({\n http,\n url: el.getAttribute('src'),\n method: el.getAttribute('method') ?? 'POST',\n responseMapper,\n });\n }\n return new RemoteLoader({\n http,\n url: el.getAttribute('src'),\n method: el.getAttribute('method') ?? 'POST',\n responseMapper,\n prefetch: el.hasAttribute('preload'),\n revision: el.getAttribute('revision'),\n });\n }\n static #responseMapperFrom(el) {\n if (el.hasAttribute('k-expr') && el.hasAttribute('l-expr')) {\n return (response) => {\n const rows = registry\n .evaluator()\n .withOverlay(response)\n .evaluateExpression(el.getAttribute('d-expr') ?? 'self');\n return rows.map((row) => {\n const evaluator = registry.evaluator().withOverlay(row);\n return [\n evaluator.evaluateExpression(el.getAttribute('k-expr')),\n evaluator.evaluateExpression(el.getAttribute('l-expr')),\n evaluator.evaluateExpression(el.getAttribute('m-expr') ?? 'self'),\n ];\n });\n };\n }\n if (el.hasAttribute('response-mapper')) {\n return registry.component(el.getAttribute('response-mapper'));\n }\n return (response) => response;\n }\n}\n\nclass Dropdown extends ParsedElement {\n static slots = true;\n static template = `\n <ful-spinner class=\"centered\" hidden></ful-spinner>\n <menu tabindex=\"-1\" role=\"listbox\" hidden></menu>\n `;\n static templates = {\n options: `\n <li data-tpl-each=\"self\" data-tpl-selected=\"index == 0\" data-tpl-value=\"index\" role=\"option\" data-tpl-aria-selected=\"index == 0 ? 'true' : 'false'\">\n {{ label }}\n </li>\n `,\n };\n #spinner;\n #menu;\n #optionstemplate;\n #options = new Map();\n render({ slots }) {\n const fragment = this.template().render();\n this.#optionstemplate = Fragments.isBlank(slots.default)\n ? this.template('options')\n : Templates.fromFragment(slots.default);\n this.#spinner = fragment.querySelector('ful-spinner');\n this.#menu = fragment.querySelector('menu');\n this.#menu.addEventListener('click', (evt) => {\n evt.stopPropagation();\n const li = evt.target.closest('li');\n if (!li) {\n this.hide();\n return;\n }\n this.#change(li);\n });\n this.replaceChildren(fragment);\n }\n #selected() {\n return this.#menu?.querySelector('[selected]') ?? this.#menu?.firstElementChild ?? null;\n }\n acceptSelection() {\n const selected = this.#selected();\n if (!selected) {\n return;\n }\n this.#change(selected);\n }\n update(values) {\n if (values === undefined) {\n throw new Error('null data');\n }\n this.#options = new Map(values.map((v, i) => [String(i), v]));\n const data = values.map(([key, label, metadata], index) => ({ index, key, label, metadata }));\n this.#optionstemplate.withOverlay(data).renderTo(this.#menu);\n }\n #change(target) {\n const index = target.getAttribute('value');\n const data = this.#options.get(index);\n this.hide();\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: { index, data },\n }),\n );\n }\n hide() {\n this.setAttribute('hidden', '');\n }\n get shown() {\n return !this.hasAttribute('hidden');\n }\n async show(loader) {\n this.removeAttribute('hidden');\n this.#menu.setAttribute('hidden', '');\n this.#spinner.removeAttribute('hidden');\n try {\n const data = await loader();\n this.update(data);\n } catch (e) {\n this.hide();\n throw e;\n } finally {\n this.#spinner.setAttribute('hidden', '');\n this.#menu.removeAttribute('hidden');\n }\n }\n async moveOrShow(forward, loader) {\n if (this.shown) {\n const selected = this.#selected();\n const candidate = selected?.[`${forward ? 'next' : 'previous'}ElementSibling`];\n if (selected && candidate) {\n selected.removeAttribute('selected');\n candidate.setAttribute('selected', '');\n candidate.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n return;\n }\n await this.show(loader);\n }\n}\n\nclass Select extends ParsedElement {\n static observed = ['value:csvm', 'readonly:presence', 'required:presence', 'itemlist:presence'];\n static slots = true;\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group flex-nowrap\" tabindex=\"-1\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <div class=\"ful-select-input-container\">\n <div class=\"ful-select-input\">\n <badges></badges>\n <input type=\"text\" form=\"\" role=\"combobox\" aria-autocomplete=\"list\" aria-haspopup=\"listbox\" aria-expanded=\"false\">\n </div>\n <ful-dropdown hidden popover=\"manual\">{{{{ slots.dropdown }}}}</ful-dropdown>\n </div>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-item-list></ful-item-list>\n <ful-field-error></ful-field-error>\n `;\n static templates = {\n items: `\n <ful-item data-tpl-each=\"entries\" data-tpl-var=\"entry\" data-tpl-data-key=\"entry[0]\">\n <div>{{ entry[1][0] }}</div>\n <button type=\"button\" class=\"btn btn-sm btn-outline-danger bi bi-x-lg\"></button>\n </ful-item>\n `,\n };\n static formAssociated = true;\n internals;\n #loader;\n #badges;\n #ddmenu;\n #input;\n #items;\n #multiple;\n #fieldError;\n #values = new Map();\n #token = 0;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'presentation';\n }\n async render({ slots, observed, disabled }) {\n const name = this.getAttribute('name');\n this.#loader = registry\n .component(this.getAttribute('loader') ?? 'loaders:select')\n .create(this, { options: slots.options });\n\n this.#multiple = this.hasAttribute('multiple');\n try {\n await this.#loader.prefetch?.();\n } catch (/** @type any */ e) {\n console.warn('failed to prefetch select options', this, 'reason:', e);\n }\n const fragment = this.template().withOverlay({ slots, name }).render();\n this.#input = fragment.querySelector('input');\n this.#items = fragment.querySelector('ful-item-list');\n Attributes.forward('input-', this, this.#input);\n this.#badges = fragment.querySelector('badges');\n\n this.value = observed.value;\n this.disabled = disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.itemlist = observed.itemlist;\n\n this.#ddmenu = fragment.querySelector('ful-dropdown');\n const label = fragment.querySelector('label');\n label.addEventListener('click', () => this.focus());\n this.#fieldError = fragment.querySelector('ful-field-error');\n this.#input.ariaDescribedByElements = [this.#fieldError];\n this.#input.ariaLabelledByElements = [label];\n const [dload, abortdload] = Timing.throttle(400, () => {\n this.#input.setAttribute('aria-expanded', 'true');\n this.#ddmenu.show(() => this.#loader.load(this.#input.value));\n });\n this.addEventListener('click', (/** @type any */ e) => {\n if (e.target.matches('input')) {\n return;\n }\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.#ddmenu.shown) {\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n return;\n }\n this.#input.focus();\n dload();\n });\n this.#items.addEventListener('click', (e) => {\n e.stopPropagation();\n if (!e.target.closest('button')) {\n return;\n }\n if (this.disabled || this.readonly) {\n return;\n }\n const idx = [...this.#items.children].indexOf(e.target.closest('ful-item'));\n if (idx === -1) {\n return;\n }\n this.#values.delete(Array.from(this.#values.keys())[idx]);\n this.#changed();\n this.#syncBadges();\n });\n this.#badges.addEventListener('click', (e) => {\n e.stopPropagation();\n if (this.disabled || this.readonly) {\n return;\n }\n const idx = [...this.#badges.children].indexOf(e.target);\n if (idx === -1) {\n return;\n }\n this.#values.delete(Array.from(this.#values.keys())[idx]);\n this.#changed();\n this.#syncBadges();\n });\n this.#input.addEventListener('change', (e) => {\n e.stopPropagation();\n });\n this.#input.addEventListener('blur', (e) => {\n e.stopPropagation();\n if (e.relatedTarget && this.contains(e.relatedTarget)) {\n return;\n }\n abortdload();\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n this.#input.value = '';\n });\n this.#input.addEventListener('keydown', (e) => {\n if (this.disabled || this.readonly) {\n return;\n }\n switch (e.code) {\n case 'ArrowUp': {\n e.preventDefault();\n this.#input.setAttribute('aria-expanded', 'true');\n this.#ddmenu.moveOrShow(false, () => this.#loader.load(this.#input.value));\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n this.#input.setAttribute('aria-expanded', 'true');\n this.#ddmenu.moveOrShow(true, () => this.#loader.load(this.#input.value));\n break;\n }\n case 'Escape': {\n this.#input.setAttribute('aria-expanded', 'false'); \n this.#ddmenu.hide();\n break;\n }\n case 'Enter': {\n if (!this.#ddmenu.shown) {\n //nothing to accept: submit the form as ful-input does. the inner\n //input carries form=\"\" so it never submits one on its own\n this.#requestSubmit();\n return;\n }\n e.preventDefault();\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.acceptSelection();\n this.#input.value = '';\n break;\n }\n case 'Backspace': {\n //remove last if caret at position 0\n if (this.#values.size && this.#input.selectionStart === 0 && this.#input.selectionEnd === 0) {\n this.#values.delete(Array.from(this.#values.keys()).pop());\n this.#changed();\n this.#syncBadges();\n }\n break;\n }\n case 'Tab': {\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n abortdload();\n break;\n }\n }\n });\n this.#input.addEventListener('input', (e) => {\n e.stopPropagation();\n if (this.disabled || this.readonly) {\n return;\n }\n dload();\n });\n this.#ddmenu.addEventListener('change', (e) => {\n e.stopPropagation();\n if (!this.#multiple) {\n this.#values.clear();\n }\n this.#values.set(e.detail.data[0], e.detail.data.slice(1));\n this.#changed();\n this.#syncBadges();\n this.#input.focus();\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n this.#input.value = '';\n });\n this.replaceChildren(fragment);\n }\n async withLoader(fn) {\n return await fn(this.#loader);\n }\n #requestSubmit() {\n const form = this.internals.form;\n if (!form) {\n return;\n }\n const candidates = /** @type [HTMLButtonElement|HTMLInputElement] */ (\n Array.from(form.querySelectorAll('button:not(:disabled), input:not(:disabled)'))\n );\n form.requestSubmit(candidates.find((el) => el.type === 'submit'));\n }\n #changed() {\n const selection = [...this.#values.entries()].map((e) => ({\n key: e[0],\n label: e[1][0],\n metadata: e[1].slice(1),\n }));\n const value = this.#multiple ? selection : (selection[0] ?? null);\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: { value },\n }),\n );\n }\n #syncBadges() {\n const badges = Array.from(this.#values.entries()).map(([k, v]) => {\n const b = document.createElement('badge');\n b.setAttribute('role', 'button');\n b.setAttribute('value', k);\n b.innerText = v[0];\n return b;\n });\n this.#badges.replaceChildren();\n this.#badges.append(...badges);\n this.#items.replaceChildren();\n this.template('items').withOverlay({ entries: this.#values.entries() }).renderTo(this.#items);\n }\n set value(vs) {\n //the csvm mapper yields [] for a missing multiple value, an empty string is\n //left alone: it is a usable key for an <option value=\"\">\n const keys = vs == null ? [] : Array.isArray(vs) ? vs : [vs];\n //the keys are known synchronously and are all `value` reads, so they are applied\n //now: only the labels need the loader, until then a key stands in for its own\n this.#values = new Map(keys.map((k) => [k, [k]]));\n this.#syncBadges();\n const token = ++this.#token;\n if (keys.length === 0) {\n return;\n }\n this.#resolve(keys, token);\n }\n /**\n * Resolves the labels of the assigned keys. A failed lookup is left to reject so\n * that it is reported like any other failure: the keys stay applied either way.\n */\n async #resolve(keys, token) {\n const entries = await this.#loader.exact(...keys);\n if (token !== this.#token) {\n //a newer assignment has been made in the meantime\n return;\n }\n //label the keys that are still selected: a removal made while the lookup was in\n //flight must not be undone by it, and a key the loader does not know is dropped\n const resolved = new Map(entries.map((e) => [e[0], e.slice(1)]));\n for (const key of keys) {\n if (!this.#values.has(key)) {\n continue;\n }\n if (resolved.has(key)) {\n this.#values.set(key, resolved.get(key));\n } else {\n this.#values.delete(key);\n }\n }\n this.#syncBadges();\n }\n get value() {\n if (this.#multiple) {\n return [...this.#values.keys()];\n }\n return [...this.#values.keys()][0] ?? null;\n }\n get entry() {\n if (this.#multiple) {\n return [...this.#values.entries()];\n }\n return [...this.#values.entries()][0] ?? null;\n }\n get disabled() {\n return this.#input.hasAttribute('disabled');\n }\n set disabled(d) {\n Attributes.toggle(this.#input, 'disabled', d);\n //also on the host: a form associated element only matches :disabled through its\n //own attribute, and that is what keeps it out of the submitted values. no reflect\n //is needed, disabled is deliberately not observed: the platform delivers it\n //through formDisabledCallback, which also covers a disabled ancestor fieldset\n Attributes.toggle(this, 'disabled', d);\n }\n get readonly() {\n return this.#input.readOnly;\n }\n set readonly(v) {\n this.#input.readOnly = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get required() {\n return this.#input.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this.#input, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n #useItemlist;\n get itemlist() {\n return this.#useItemlist;\n }\n set itemlist(v) {\n this.#useItemlist = v;\n this.reflect(() => {\n Attributes.toggle(this, 'itemlist', v);\n });\n }\n focus(options) {\n this.#input.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this.#fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this.#fieldError.innerText = error;\n }\n}\n\nexport { Dropdown, Select, SelectLoader };\n","import { Attributes, Fragments, ParsedElement } from '../../ftl/index.mjs';\n\nclass RadioGroup extends ParsedElement {\n static observed = ['value', 'readonly:presence', 'required:presence'];\n static slots = true;\n static template = `\n <fieldset>\n <legend class=\"form-label\">\n {{{{ slots.default }}}}\n </legend>\n <header data-tpl-if=\"slots.header\">\n {{{{ slots.header }}}}\n </header>\n <section>\n <div class=\"label-wrapper\" data-tpl-each=\"inputsAndLabels\" data-tpl-var=\"ial\">\n <label>\n {{{{ ial[0] }}}}\n <div>{{{{ ial[1] }}}}</div>\n </label>\n </div>\n </section>\n <ful-field-error></ful-field-error>\n <footer data-tpl-if=\"slots.footer\">\n {{{{ slots.footer }}}}\n </footer>\n </fieldset>\n `;\n static formAssociated = true;\n #fieldset;\n #fieldError;\n #firstRadio;\n #booleanType;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'radiogroup';\n }\n render({ slots, observed, disabled }) {\n const name = this.getAttribute('name') ?? Attributes.uid('ful-radiogroup');\n const radioEls = Array.from(slots.default.querySelectorAll('ful-radio'));\n const inputsAndLabels = radioEls.map((el) => {\n const input = document.createElement('input');\n input.setAttribute('type', 'radio');\n Attributes.forward('input-', this, input);\n Attributes.forward('', el, input);\n input.setAttribute('name', `${name}-ignore`);\n input.setAttribute('form', ``);\n input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n //change is not cancelable\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n const label = Fragments.fromChildNodes(el);\n return [input, label];\n });\n\n radioEls.forEach((el) => {\n el.remove();\n });\n this.template().withOverlay({ name, slots, inputsAndLabels }).renderTo(this);\n this.#fieldset = this.firstElementChild;\n this.disabled = disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.value = observed.value;\n this.#fieldError = this.querySelector('ful-field-error');\n this.ariaDescribedByElements = [this.#fieldError];\n this.#firstRadio = this.querySelector('input[type=radio]');\n this.#booleanType = this.getAttribute('type') === 'boolean';\n }\n get value() {\n /** @type {HTMLInputElement|null} */\n const checked = this.querySelector('input[type=radio]:checked');\n return checked ? (this.#booleanType ? checked.value === 'true' : checked.value) : null;\n }\n set value(value) {\n if (value === null) {\n this.querySelectorAll(`input[type=radio]`).forEach((el) => {\n /** @type {HTMLInputElement} */ (el).checked = false;\n });\n return;\n }\n /** @type {HTMLInputElement|null} */\n const el = this.querySelector(`input[type=radio][value=${CSS.escape(String(value))}]`);\n if (el) {\n el.checked = true;\n }\n }\n get readonly() {\n return this.#fieldset.inert;\n }\n set readonly(v) {\n this.#fieldset.inert = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get disabled() {\n return this.#fieldset.hasAttribute('disabled');\n }\n set disabled(d) {\n Attributes.toggle(this.#fieldset, 'disabled', d);\n //also on the host: a form associated element only matches :disabled through its\n //own attribute, and that is what keeps it out of the submitted values. no reflect\n //is needed, disabled is deliberately not observed: the platform delivers it\n //through formDisabledCallback, which also covers a disabled ancestor fieldset\n Attributes.toggle(this, 'disabled', d);\n }\n get required() {\n return this.#fieldset.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this.#fieldset, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n focus(options) {\n this.#firstRadio.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this.#fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this.#fieldError.innerText = error;\n }\n}\n\nexport { RadioGroup };\n","import { Attributes, ParsedElement } from '../../ftl/index.mjs';\n\nclass Checkbox extends ParsedElement {\n static observed = ['value:bool', 'readonly:presence', 'required:presence'];\n static slots = true;\n static template = `\n <div data-tpl-class=\"klass\">\n <div class=\"input-container\">\n <input class=\"form-check-input\" type=\"checkbox\" data-tpl-role=\"isSwitch ? 'switch' : false\" form=\"\" placeholder=\" \">\n </div>\n <div class=\"form-check-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #container;\n #input;\n #fieldError;\n static formAssociated = true;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'presentation';\n }\n render({ slots, observed, disabled }) {\n const isSwitch = this.getAttribute('type') === 'switch';\n const klass = isSwitch ? 'form-check form-switch' : 'form-check';\n const fragment = this.template().withOverlay({ slots, klass, isSwitch }).render();\n this.#container = fragment.firstElementChild;\n this.#input = fragment.querySelector('input');\n Attributes.forward('input-', this, this.#input);\n this.disabled = disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.value = observed.value;\n this.#input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n const label = fragment.querySelector('label');\n label.addEventListener('click', () => {\n this.focus();\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = !this.value;\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n this.#fieldError = fragment.querySelector('ful-field-error');\n this.#input.ariaDescribedByElements = [this.#fieldError];\n this.#input.ariaLabelledByElements = [label];\n this.replaceChildren(fragment);\n }\n get value() {\n return this.#input.checked;\n }\n set value(value) {\n this.#input.checked = value;\n }\n get readonly() {\n return this.#container.inert;\n }\n set readonly(v) {\n this.#container.inert = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get disabled() {\n return this.#input.hasAttribute('disabled');\n }\n set disabled(d) {\n Attributes.toggle(this.#input, 'disabled', d);\n //also on the host: a form associated element only matches :disabled through its\n //own attribute, and that is what keeps it out of the submitted values. no reflect\n //is needed, disabled is deliberately not observed: the platform delivers it\n //through formDisabledCallback, which also covers a disabled ancestor fieldset\n Attributes.toggle(this, 'disabled', d);\n }\n get required() {\n return this.#input.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this.#input, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n focus(options) {\n this.#input.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this.#fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this.#fieldError.innerText = error;\n }\n}\n\nexport { Checkbox };\n","import { ParsedElement } from '../../ftl/index.mjs';\n\nclass Spinner extends ParsedElement {\n static slots = true;\n static template = `\n <div class=\"ful-spinner-wrapper\" role=\"status\">\n <div class=\"ful-spinner-text\">{{{{ slots.default }}}}</div>\n <div class=\"ful-spinner-icon\"></div>\n </div>\n `;\n render({ slots }) {\n this.template().withOverlay({ slots }).renderTo(this);\n }\n}\n\nexport { Spinner };\n","import { Attributes, Fragments, Nodes, ParsedElement, registry, Rendering } from '../../ftl/index.mjs';\n\nclass SortButton extends ParsedElement {\n static observed = ['order'];\n #order;\n render({ observed }) {\n const sorter = this.getAttribute('sorter');\n const orders = ['asc', 'desc', null];\n this.order = observed.order;\n this.addEventListener('click', () => {\n const nextOrder = orders[(orders.indexOf(this.order) + 1) % 3];\n this.dispatchEvent(\n new CustomEvent('sort-requested', {\n bubbles: true,\n cancelable: true,\n detail: {\n value: { sorter, order: nextOrder },\n },\n }),\n );\n });\n }\n\n get order() {\n return this.#order || null;\n }\n\n set order(value) {\n this.#order = value || null;\n this.reflect(() => {\n if (this.#order) {\n this.setAttribute('order', value);\n } else {\n this.removeAttribute('order');\n }\n });\n }\n}\n\nclass Pagination extends ParsedElement {\n static observed = ['total:number', 'current:number'];\n static l10n = {\n en: {\n showing: 'Page {0} of {1}',\n navigation: 'Page navigation',\n previous: 'Previous',\n next: 'Next',\n },\n it: {\n showing: 'Pagina {0} di {1}',\n navigation: 'Navigazione pagine',\n previous: 'Precedente',\n next: 'Successivo',\n },\n es: {\n showing: 'Página {0} de {1}',\n navigation: 'Navegación de páginas',\n previous: 'Anterior',\n next: 'Siguiente',\n },\n fr: {\n showing: 'Page {0} sur {1}',\n navigation: 'Navigation des pages',\n previous: 'Précédent',\n next: 'Suivant',\n },\n };\n static config = {\n prevIcon: 'bi bi-chevron-left',\n nextIcon: 'bi bi-chevron-right',\n reloadIcon: 'bi bi-arrow-clockwise',\n };\n static template = `\n <nav data-tpl-aria-label=\"#l10n:t('navigation')\" class=\"user-select-none\">\n <ul class=\"pagination\">\n <li class=\"page-item ms-auto me-2 pagination-index\"> {{ #l10n:t('showing', curr.label, total) }}</li>\n <li class=\"page-item me-2 reload\"><a role=\"button\"><i data-tpl-class=\"config.reloadIcon\"></i></a></li>\n <li class=\"page-item prev\">\n <a data-tpl-class=\"prev.enabled?'page-link':'page-link disabled'\" data-tpl-aria-label=\"#l10n:t('previous')\" role=\"button\" data-tpl-data-page=\"prev.index\">\n <i aria-hidden=\"true\" data-tpl-class=\"config.prevIcon\"></i>\n </a>\n </li>\n <li class=\"page-item\" data-tpl-each=\"pages\" data-tpl-var=\"page\">\n <a data-tpl-class=\"curr.index != page.index ? 'page-link': 'page-link disabled'\" role=\"button\" data-tpl-data-page=\"page.index\" >\n {{ page.label }}\n </a>\n </li>\n <li class=\"page-item next\">\n <a data-tpl-class=\"next.enabled?'page-link':'page-link disabled'\" data-tpl-aria-label=\"#l10n:t('next')\" role=\"button\" data-tpl-data-page=\"next.index\">\n <i aria-hidden=\"true\" data-tpl-class=\"config.nextIcon\"></i>\n </a>\n </li>\n </ul>\n </nav>\n `;\n #total = 0;\n #current = 0;\n render({ observed }) {\n this.total = observed.total ?? 0;\n this.current = observed.current ?? 0;\n this.addEventListener('click', (/** @type any */ evt) => {\n const el = evt.target.closest('a');\n if (!el || el.classList.contains('disabled')) {\n //a disabled link leads nowhere: the page it would ask for does not exist\n return;\n }\n this.dispatchEvent(\n new CustomEvent('page-requested', {\n bubbles: true,\n cancelable: true,\n detail: {\n value: Number(el.dataset.page ?? this.#current),\n },\n }),\n );\n });\n }\n update(current, total) {\n const maxRender = Number(this.getAttribute('pages') ?? '5');\n const hasPrev = current > 0;\n const hasNext = current + 1 < total;\n //a disabled arrow carries no page: there is nothing valid for it to point at\n const prev = { index: hasPrev ? current - 1 : null, enabled: hasPrev };\n const curr = { index: current, label: current + 1 };\n const next = { index: hasNext ? current + 1 : null, enabled: hasNext };\n //the window holds at most maxRender pages, centered on the current one and slid\n //back towards the end so it stays full on the last pages\n const rendered = Math.max(1, Math.min(maxRender, total));\n const first = Math.max(0, Math.min(current - Math.floor((rendered - 1) / 2), total - rendered));\n const pages = Array.from({ length: rendered }, (_, offset) => ({\n index: first + offset,\n label: first + offset + 1,\n }));\n this.template().withOverlay({ total, prev, curr, next, pages }).renderTo(this);\n }\n get total() {\n return this.#total;\n }\n set total(value) {\n this.#total = value;\n this.reflect(() => {\n this.setAttribute('total', String(value));\n this.update(this.#current ?? 0, this.#total);\n });\n }\n get current() {\n return this.#current;\n }\n set current(value) {\n this.#current = value;\n this.reflect(() => {\n this.setAttribute('current', String(value));\n this.update(this.#current, this.#total ?? 0);\n });\n }\n}\n\nclass TableSchemaParser {\n static parse(nodeOrFragment, template) {\n //nodeOrFragment is undefined when the slot is missing altogether\n const schema = nodeOrFragment ? Nodes.queryChildren(nodeOrFragment, 'schema') : null;\n if (!schema) {\n throw new Error('missing expected <schema>: ful-table needs a <template slot=\"schema\"> holding one');\n }\n const headersTr = document.createElement('tr');\n const rowsTr = document.createElement('tr');\n rowsTr.setAttribute('data-tpl-each', 'rows');\n for (const attr of schema.getAttributeNames()) {\n const value = schema.getAttribute(attr);\n headersTr.setAttribute(attr, value ?? '');\n rowsTr.setAttribute(attr, value ?? '');\n }\n const columns = Nodes.queryChildrenAll(schema, 'column');\n const sort =\n columns\n .filter((v) => v.hasAttribute('order'))\n .map((v) => ({ sorter: v.getAttribute('sorter'), order: v.getAttribute('order') }))[0] ?? null;\n for (var column of columns) {\n const maybeTitleTag = Nodes.queryChildren(column, 'title');\n const sorter = column.getAttribute('sorter');\n const order = column.getAttribute('order');\n const titleNode = maybeTitleTag ?? document.createTextNode(column.getAttribute('title') ?? '');\n maybeTitleTag?.remove();\n column.removeAttribute('sorter');\n column.removeAttribute('order');\n column.removeAttribute('title');\n const wrappedTitleNode =\n !sorter && !order\n ? titleNode\n : (() => {\n const fulSorter = document.createElement('ful-sorter');\n if (sorter) {\n fulSorter.setAttribute('sorter', sorter);\n }\n if (order) {\n fulSorter.setAttribute('order', order);\n }\n fulSorter.append(titleNode);\n return fulSorter;\n })();\n const th = document.createElement('th');\n const td = document.createElement('td');\n for (const attr of column.getAttributeNames()) {\n const value = column.getAttribute(attr);\n th.setAttribute(attr, value ?? '');\n td.setAttribute(attr, value ?? '');\n }\n th.append(wrappedTitleNode);\n td.append(...column.childNodes);\n headersTr.append(th);\n rowsTr.append(td);\n }\n\n return {\n headersTemplate: template\n .withOverlay({ inHeaders: true, inRows: false })\n .withFragment(Fragments.from(headersTr)),\n rowsTemplate: template.withOverlay({ inHeaders: false, inRows: true }).withFragment(Fragments.from(rowsTr)),\n sort: sort,\n length: columns.length,\n };\n }\n}\n\nclass InMemoryTableLoader {\n #data;\n constructor(data) {\n this.#data = data;\n }\n async load(pageRequest, sortRequest, filterRequest) {\n const begin = pageRequest.page * pageRequest.size;\n const end = begin + pageRequest.size;\n const page = this.#data.slice(begin, end);\n const totalElements = this.#data.length;\n return {\n data: page,\n size: totalElements\n };\n }\n update(data) {\n this.#data = data;\n }\n}\n\nclass RemoteTableLoader {\n #http;\n #url;\n #method;\n constructor(http, url, method) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n }\n async load(pageRequest, sortRequest, filterRequest) {\n const filters = Object.entries(filterRequest).filter(([k, v]) => v);\n return await this.#http\n .request(this.#method, this.#url)\n .param('page', pageRequest.page)\n .param('size', pageRequest.size)\n .param('sort', sortRequest ? `${sortRequest.sorter},${sortRequest.order}` : null)\n .param('filters', filters.length > 0 ? JSON.stringify(Object.fromEntries(filters)) : null)\n .fetchJson();\n }\n}\n\nclass TableLoader {\n static create(el, conf) {\n const url = el.getAttribute('src');\n if (url) {\n const http = registry.component('http-client');\n const method = el.getAttribute('method') ?? 'GET';\n return new RemoteTableLoader(http, url, method);\n }\n return new InMemoryTableLoader([]);\n }\n}\n\nclass Table extends ParsedElement {\n static slots = true;\n static l10n = {\n en: {\n initial: 'Start searching to see results.',\n error: 'Error while loading data:',\n nodata: 'No elements found.',\n },\n it: {\n initial: 'Avvia la ricerca per visualizzare i risultati.',\n error: 'Errore nel caricamento dei dati:',\n nodata: 'Nessun elemento trovato.',\n },\n es: {\n initial: 'Inicia la búsqueda para ver los resultados.',\n error: 'Error al cargar los datos:',\n nodata: 'No se encontraron elementos.',\n },\n fr: {\n initial: 'Lancez la recherche pour voir les résultats.',\n error: 'Erreur lors du chargement des données :',\n nodata: 'Aucun élément trouvé.',\n },\n };\n static config = {\n searchIcon: 'bi bi-search',\n };\n static template = `\n <ful-form data-tpl-if=\"slots.filters\">\n {{{{ slots.filters }}}}\n </ful-form>\n <div class=\"table-wrapper\">\n <table class=\"table\">\n <caption data-tpl-if=\"slots.caption\">{{{{ slots.caption }}}}</caption>\n <thead></thead>\n <tbody></tbody>\n <tbody data-ref=\"initial\">\n <tr>\n <td data-tpl-colspan=\"schema.length\">\n <div>\n <p data-tpl-if=\"config.searchIcon\"><i data-tpl-class=\"config.searchIcon\"></i></p>\n {{{ #l10n:t('initial') }}}\n </div>\n </td>\n </tr>\n </tbody>\n <tbody data-ref=\"loading\" hidden>\n <tr>\n <td data-tpl-colspan=\"schema.length\">\n <ful-spinner class=\"big\"></ful-spinner>\n </td>\n </tr>\n </tbody>\n <tbody data-ref=\"feedback\" hidden>\n <tr>\n <td data-tpl-colspan=\"schema.length\">\n <div class=\"alert alert-danger\">\n <p>{{ #l10n:t('error') }}</p>\n <div data-ref=\"feedback-error\"></div>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot data-tpl-if=\"slots.footer\">\n {{{{ slots.footer }}}}\n </tfoot>\n </table>\n </div>\n <ful-pagination current=\"0\" total=\"1\"></ful-pagination>\n `;\n static templates = {\n row: `\n <tr data-tpl-if=\"pageResponse.data.length == 0\">\n <td data-tpl-colspan=\"schema.length\" class=\"text-center align-middle p-4\">\n {{ #l10n:t('nodata') }}\n </td>\n </tr>\n {{{{ schema.rowsTemplate.withOverlay({'rows': pageResponse.data}).render() }}}}\n `,\n };\n #loader;\n #schema;\n #body;\n #loading;\n #noAutoload;\n #feedback;\n #paginator;\n #sorters;\n #latestRequest;\n async render({ slots, observed }) {\n const template = this.template();\n const schema = TableSchemaParser.parse(slots.schema, template);\n const fragment = template.withOverlay({ slots, schema }).render();\n const tableWrapper = /** @type HTMLTableElement */ (Nodes.queryChildren(fragment, '.table-wrapper'));\n const table = /** @type HTMLTableElement */ (tableWrapper.querySelector('table'));\n Attributes.forward('table-', this, table);\n this.#loader = registry.component(this.getAttribute('loader') ?? 'loaders:table').create(this);\n\n this.#schema = schema;\n this.#body = table.querySelector(':scope > tbody');\n this.#loading = table.querySelector(':scope > tbody[data-ref=loading]');\n this.#noAutoload = table.querySelector(':scope > tbody[data-ref=initial]');\n this.#feedback = table.querySelector(':scope > tbody[data-ref=feedback]');\n this.#paginator = Nodes.queryChildren(fragment, 'ful-pagination');\n this.replaceChildren(fragment);\n const thead = /** @type HTMLTableSectionElement */ (this.querySelector('thead'));\n schema.headersTemplate.renderTo(thead);\n this.#sorters = thead.querySelectorAll('ful-sorter');\n await Rendering.waitForChildren(this);\n\n const maybeForm = /** @type any */ (Nodes.queryChildren(this, 'ful-form'));\n this.#latestRequest = {\n pageRequest: {\n page: 0,\n size: this.getAttribute('page-size') ? Number(this.getAttribute('page-size')) : 10,\n },\n sortRequest: schema.sort,\n filterRequest: maybeForm?.values ?? {},\n };\n maybeForm?.addEventListener('submit:success', async (evt) => {\n await this.load(\n {\n page: 0,\n size: this.#latestRequest.pageRequest.size,\n },\n this.#latestRequest.sortRequest,\n evt.detail.request,\n );\n });\n this.addEventListener('page-requested', async (/** @type any */ e) => {\n await this.load(\n {\n page: e.detail.value,\n size: this.#latestRequest.pageRequest.size,\n },\n this.#latestRequest.sortRequest,\n this.#latestRequest.filterRequest,\n );\n });\n this.addEventListener('sort-requested', async (/** @type any */ e) => {\n const sortRequest = e.detail.value.order ? e.detail.value : null;\n await this.load(this.#latestRequest.pageRequest, sortRequest, this.#latestRequest.filterRequest);\n this.#sorters.forEach((s) => {\n s.order = null;\n });\n e.target.order = e.detail.value.order;\n });\n if (this.hasAttribute('autoload')) {\n //not awaited: the first load must not hold up the upgrade, and a loader that\n //fails or never answers must not keep ftl:ready from firing for the page.\n //load renders its own error state and lets the failure reject, so it is reported\n this.reload();\n }\n }\n\n async reload() {\n return await this.load(\n this.#latestRequest.pageRequest,\n this.#latestRequest.sortRequest,\n this.#latestRequest.filterRequest,\n );\n }\n async load(pageRequest, sortRequest, filterRequest) {\n this.#body.replaceChildren();\n this.#loading.removeAttribute('hidden');\n this.#feedback.setAttribute('hidden', '');\n this.#noAutoload.setAttribute('hidden', '');\n try {\n const pageResponse = await this.#loader.load(pageRequest, sortRequest, filterRequest);\n this.#latestRequest = { pageRequest, sortRequest, filterRequest };\n this.#update(pageRequest, sortRequest, filterRequest, pageResponse);\n } catch (/** @type any */ error) {\n this.#loading.setAttribute('hidden', '');\n this.#feedback.removeAttribute('hidden');\n if (!error.problems) {\n this.#feedback.querySelector('[data-ref=feedback-error]').textContent = error;\n } else {\n this.#feedback.querySelector('[data-ref=feedback-error]').textContent = error.problems.map(\n (p) => `${p.reason}`,\n );\n }\n throw error;\n }\n }\n async withLoader(fn) {\n return await fn(this.#loader);\n }\n async resetWithFilter(filterRequest) {\n return await this.load(\n {\n page: 0,\n size: this.#latestRequest.pageRequest.size,\n },\n this.#latestRequest.sortRequest,\n filterRequest,\n );\n }\n #update(pageRequest, sortRequest, filterRequest, pageResponse) {\n this.#loading.setAttribute('hidden', '');\n this.#body.replaceChildren(\n this.template('row')\n .withOverlay({\n schema: this.#schema,\n pageRequest,\n filterRequest,\n pageResponse,\n })\n .render(),\n );\n this.#paginator.current = pageRequest.page;\n this.#paginator.total = Math.ceil(pageResponse.size / pageRequest.size);\n }\n}\n\nexport { TableLoader, SortButton, Table, TableSchemaParser, Pagination };\n","import { Attributes } from '../../ftl/index.mjs';\nimport { Instant } from './temporals.mjs';\nimport { Input } from './input.mjs';\n\nclass InstantFilter extends Input {\n static observed = ['value:json', 'readonly:presence', 'required:presence', 'placeholder'];\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <button data-ref=\"operator\" class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" value=\"LTE\" form=\"\">≼</button>\n <ul class=\"dropdown-menu\">\n <li><a class=\"dropdown-item\" role=\"button\" value=\"EQ\">=</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"NEQ\">≠</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LT\">≺</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GT\">≻</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LTE\">≼</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GTE\">≽</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"BETWEEN\">↔</a></li>\n </ul>\n <input data-ref=\"value1\" type=\"datetime-local\" class=\"form-control\" form=\"\">\n <input data-ref=\"value2\" type=\"datetime-local\" class=\"form-control\" form=\"\" hidden>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #operator;\n #value1;\n #value2;\n render(conf) {\n super.render({ ...conf, skipObservedSetup: true });\n this.#operator = this.querySelector('[data-ref=operator]');\n this.#value1 = this.querySelector('[data-ref=value1]');\n this.#value2 = this.querySelector('[data-ref=value2]');\n //Input.render only re-dispatches changes coming from the first operand\n this.#value2.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.#notifyChange();\n });\n\n this.disabled = conf.disabled;\n this.readonly = conf.observed.readonly;\n this.required = conf.observed.required;\n this.placeholder = conf.observed.placeholder;\n this.value = conf.observed.value;\n\n this.addEventListener('click', (evt) => {\n const target = /** @type HTMLElement */ (evt.target);\n if (!target.matches('ul > li > a')) {\n return;\n }\n const btn = /** @type HTMLButtonElement */ (target.closest('ul')?.previousElementSibling);\n const value = /** @type String */ (target.getAttribute('value'));\n const previous = btn.getAttribute('value');\n Attributes.toggle(this.#value2, 'hidden', value !== 'BETWEEN');\n btn.setAttribute('value', value);\n btn.innerHTML = target.innerHTML;\n if (previous !== value) {\n this.#notifyChange();\n }\n });\n }\n\n get value() {\n const operator = this.#operator.getAttribute('value');\n const values = operator === 'BETWEEN' ? [this.#value1.value, this.#value2.value] : [this.#value1.value];\n return values.some((v) => v === '') ? undefined : [operator, ...values.map((v) => new Date(v).toISOString())];\n }\n set value(v) {\n if (v == null) {\n this.#value1.value = '';\n this.#value2.value = '';\n return;\n }\n const [operator, ...values] = v;\n this.#showOperator(operator);\n this.#value1.value = values[0] ? Instant.isoToLocal(values[0]) : values[0];\n this.#value2.value = values[1] ? Instant.isoToLocal(values[1]) : values[1];\n }\n #showOperator(operator) {\n this.#operator.setAttribute('value', operator);\n const items = Array.from(this.#operator.nextElementSibling?.querySelectorAll('li > a[value]') ?? []);\n const item = items.find((a) => a.getAttribute('value') === operator);\n if (item) {\n this.#operator.innerHTML = item.innerHTML;\n }\n Attributes.toggle(this.#value2, 'hidden', operator !== 'BETWEEN');\n }\n #notifyChange() {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n }\n get readonly() {\n return super.readonly;\n }\n set readonly(v) {\n this.#value2.readOnly = v;\n super.readonly = v;\n }\n get disabled() {\n return super.disabled;\n }\n set disabled(d) {\n Attributes.toggle(this.#value2, 'disabled', d);\n super.disabled = d;\n }\n}\n\nclass LocalDateFilter extends Input {\n static observed = ['value:json', 'readonly:presence', 'required:presence', 'placeholder'];\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <button data-ref=\"operator\" class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" value=\"EQ\" form=\"\">=</button>\n <ul class=\"dropdown-menu\">\n <li><a class=\"dropdown-item\" role=\"button\" value=\"EQ\">=</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"NEQ\">≠</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LT\">≺</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GT\">≻</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LTE\">≼</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GTE\">≽</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"BETWEEN\">↔</a></li>\n </ul>\n <input data-ref=\"value1\" type=\"date\" class=\"form-control\" form=\"\">\n <input data-ref=\"value2\" type=\"date\" class=\"form-control\" form=\"\" hidden>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #operator;\n #value1;\n #value2;\n render(conf) {\n super.render({ ...conf, skipObservedSetup: true });\n\n this.#operator = this.querySelector('[data-ref=operator]');\n this.#value1 = this.querySelector('[data-ref=value1]');\n this.#value2 = this.querySelector('[data-ref=value2]');\n //Input.render only re-dispatches changes coming from the first operand\n this.#value2.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.#notifyChange();\n });\n\n this.disabled = conf.disabled;\n this.readonly = conf.observed.readonly;\n this.required = conf.observed.required;\n this.placeholder = conf.observed.placeholder;\n this.value = conf.observed.value;\n\n this.addEventListener('click', (evt) => {\n const target = /** @type HTMLElement */ (evt.target);\n if (!target.matches('ul > li > a')) {\n return;\n }\n const btn = /** @type HTMLButtonElement */ (target.closest('ul')?.previousElementSibling);\n const value = /** @type String */ (target.getAttribute('value'));\n const previous = btn.getAttribute('value');\n Attributes.toggle(this.#value2, 'hidden', value !== 'BETWEEN');\n btn.setAttribute('value', value);\n btn.innerHTML = target.innerHTML;\n if (previous !== value) {\n this.#notifyChange();\n }\n });\n }\n get value() {\n const operator = this.#operator.getAttribute('value');\n const values = operator === 'BETWEEN' ? [this.#value1.value, this.#value2.value] : [this.#value1.value];\n return values.some((v) => v === '') ? undefined : [operator, ...values];\n }\n set value(v) {\n if (v == null) {\n this.#value1.value = '';\n this.#value2.value = '';\n return;\n }\n const [operator, ...values] = v;\n this.#showOperator(operator);\n this.#value1.value = values[0];\n this.#value2.value = values[1];\n }\n #showOperator(operator) {\n this.#operator.setAttribute('value', operator);\n const items = Array.from(this.#operator.nextElementSibling?.querySelectorAll('li > a[value]') ?? []);\n const item = items.find((a) => a.getAttribute('value') === operator);\n if (item) {\n this.#operator.innerHTML = item.innerHTML;\n }\n Attributes.toggle(this.#value2, 'hidden', operator !== 'BETWEEN');\n }\n #notifyChange() {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n }\n get readonly() {\n return super.readonly;\n }\n set readonly(v) {\n this.#value2.readOnly = v;\n super.readonly = v;\n }\n get disabled() {\n return super.disabled;\n }\n set disabled(d) {\n Attributes.toggle(this.#value2, 'disabled', d);\n super.disabled = d;\n }\n}\n\nclass TextFilter extends Input {\n static observed = ['value:json', 'readonly:presence', 'required:presence', 'placeholder'];\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <button data-ref=\"operator\" class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" value=\"CONTAINS\" form=\"\">…a…</button>\n <ul class=\"dropdown-menu\">\n <li><a class=\"dropdown-item\" role=\"button\" value=\"CONTAINS\">…a…</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"STARTS_WITH\">a…</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"ENDS_WITH\">…a</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"EQ\">=</a></li>\n </ul>\n <input data-ref=\"value\" type=\"text\" class=\"form-control\" form=\"\">\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #operator;\n #value;\n //the sensitivity has no control of its own: it is carried through from whoever set the value\n #sensitivity = 'IGNORE_CASE';\n render(conf) {\n super.render({ ...conf, skipObservedSetup: true });\n\n this.#operator = this.querySelector('[data-ref=operator]');\n this.#value = this.querySelector('[data-ref=value]');\n\n this.disabled = conf.disabled;\n this.readonly = conf.observed.readonly;\n this.required = conf.observed.required;\n this.placeholder = conf.observed.placeholder;\n this.value = conf.observed.value;\n\n this.addEventListener('click', (evt) => {\n const target = /** @type HTMLElement */ (evt.target);\n if (!target.matches('ul > li > a')) {\n return;\n }\n const btn = /** @type HTMLButtonElement */ (target.closest('ul')?.previousElementSibling);\n const value = /** @type String */ (target.getAttribute('value'));\n const previous = btn.getAttribute('value');\n btn.setAttribute('value', value);\n btn.innerHTML = target.innerHTML;\n if (previous !== value) {\n this.#notifyChange();\n }\n });\n }\n get value() {\n const operator = this.#operator.getAttribute('value');\n return this.#value.value === '' ? undefined : [operator, this.#sensitivity, this.#value.value];\n }\n set value(v) {\n if (v == null) {\n this.#value.value = '';\n return;\n }\n const [operator, sensitivity, value] = v;\n this.#showOperator(operator);\n this.#sensitivity = sensitivity ?? 'IGNORE_CASE';\n this.#value.value = value;\n }\n #showOperator(operator) {\n this.#operator.setAttribute('value', operator);\n const items = Array.from(this.#operator.nextElementSibling?.querySelectorAll('li > a[value]') ?? []);\n const item = items.find((a) => a.getAttribute('value') === operator);\n if (item) {\n this.#operator.innerHTML = item.innerHTML;\n }\n }\n #notifyChange() {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n }\n}\n\nexport { InstantFilter, LocalDateFilter, TextFilter };\n","class LocalizationModule {\n static t(k, ...args) {\n //@ts-expect-error l10n and language come from the element class and the data stack\n const format = this.l10n?.[this.language]?.[k] ?? this.l10n?.en?.[k] ?? k;\n if (args.length === 0) {\n return format;\n }\n return format.replace(/{(\\d+)}/g, (m, is) => {\n return args[Number(is)];\n });\n }\n static tl(k, args = []) {\n return LocalizationModule.t.apply(this, [k, ...args]);\n }\n}\n\nexport { LocalizationModule };\n","import { HttpClient } from '../../httpc/index.mjs';\nimport { Checkbox } from './checkbox.mjs';\nimport { LocalDate, Instant, InputLocalDate, InputLocalTime, InputInstant } from './temporals.mjs';\nimport { InstantFilter, LocalDateFilter, TextFilter } from './filters.mjs';\nimport { FormLoader, Form } from './form.mjs';\nimport { Input } from './input.mjs';\nimport { InputFile } from './files.mjs';\nimport { RadioGroup } from './radio.mjs';\nimport { SelectLoader, Dropdown, Select } from './select.mjs';\nimport { Spinner } from './spinner.mjs';\nimport { TableLoader, Table, Pagination, SortButton } from './table.mjs';\nimport { LocalizationModule } from './l10n.mjs';\n\nclass Plugin {\n configure(registry) {\n const httpClient = HttpClient.builder().withCsrfToken().withRedirectOnUnauthorized('/').build();\n registry\n .defineModule('l10n', LocalizationModule)\n .defineComponent('http-client', httpClient)\n .defineElement('ful-spinner', Spinner)\n .defineElement('ful-form', Form)\n .defineElement('ful-checkbox', Checkbox)\n .defineElement('ful-input', Input)\n .defineElement('ful-input-file', InputFile)\n .defineElement('ful-local-date', LocalDate)\n .defineElement('ful-instant', Instant)\n .defineElement('ful-input-local-date', InputLocalDate)\n .defineElement('ful-input-local-time', InputLocalTime)\n .defineElement('ful-input-instant', InputInstant)\n .defineElement('ful-radio-group', RadioGroup)\n .defineElement('ful-table', Table)\n .defineElement('ful-pagination', Pagination)\n .defineElement('ful-sorter', SortButton)\n .defineElement('ful-filter-instant', InstantFilter)\n .defineElement('ful-filter-local-date', LocalDateFilter)\n .defineElement('ful-filter-text', TextFilter)\n .defineElement('ful-select', Select)\n .defineElement('ful-dropdown', Dropdown)\n .defineComponent('loaders:select', SelectLoader)\n .defineComponent('loaders:form', FormLoader)\n .defineComponent('loaders:table', TableLoader)\n .defineOverlay({\n language: navigator?.language?.split('-')?.[0] ?? 'en',\n });\n }\n}\n\nexport { Plugin };\n","import * as ftl from './ftl/index.mjs';\nimport * as httpc from './httpc/index.mjs';\nimport * as ful from './ful/index.mjs';\n\nif (typeof window !== 'undefined') {\n // biome-ignore-start lint/complexity/useLiteralKeys: checkJs rejects unknown properties on Window\n window['ftl'] = ftl;\n window['httpc'] = httpc;\n window['ful'] = ful;\n // biome-ignore-end lint/complexity/useLiteralKeys: checkJs rejects unknown properties on Window\n}\n\nexport * from './ftl/index.mjs';\nexport * from './httpc/index.mjs';\nexport * from './ful/index.mjs';\n"],"names":["TemplatedRoot","TemplatedExpression","value","BeginNode","EndNode","BeginHtml","EndHtml","BeginText","EndText","TemplatedText","parts","c","ExpressionRoot","r","TernaryExpression","cond","ifTrue","ifFalse","ElvisExpression","NullCoalescingExpression","lhs","rhs","OrExpression","head","tail","AndExpression","EqExpression","op","RelExpression","NotExpression","expr","Access","AccessExpression","AccessMember","AccessSubscript","AccessMethodCall","h","t","GroupingExpression","e","ModuleFunctionCall","fn","AnyLiteral","BooleanLiteral","NullLiteral","UndefinedLiteral","NumberLiteral","StringLiteral","TemplateStringExpression","TemplateStringLiteral","char","ArrayLiteral","DictLiteral","ModuleFunction","module","v","Symbol","s","EqualityOp","RelationalOp","_","parse"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fml.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","../src/httpc/failure.mjs","../src/httpc/encodings.mjs","../src/httpc/http-client.mjs","../src/ful/storage.mjs","../src/ful/events/async.mjs","../src/ful/timing.mjs","../src/ful/elements/bindings.mjs","../src/ful/elements/form.mjs","../src/ful/elements/input.mjs","../src/ful/elements/temporals.mjs","../src/ful/elements/files.mjs","../src/ful/elements/select.mjs","../src/ful/elements/radio.mjs","../src/ful/elements/checkbox.mjs","../src/ful/elements/spinner.mjs","../src/ful/elements/table.mjs","../src/ful/elements/filters.mjs","../src/ful/elements/l10n.mjs","../src/ful/elements/plugin.mjs","../src/index.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 ;\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 ;\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 for (let c = /** @type {Node | null} */ (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 = new Set();\n removed(node) {\n return this.#forRemoval.has(node);\n }\n remove(node) {\n node.replaceChildren?.();\n Object.keys(node.dataset || {})\n .filter((k) => k.startsWith('tpl'))\n .forEach((k) => {\n delete node.dataset[k];\n });\n this.#forRemoval.add(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 for (const node of this.#forRemoval) {\n node.remove();\n }\n this.#forRemoval.clear();\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 }\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, bounded with\n// FIFO eviction like the expression ast cache\nconst attributeCache = new Map();\nconst ATTRIBUTE_CACHE_MAX_SIZE = 1000;\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 if (attributeCache.size >= ATTRIBUTE_CACHE_MAX_SIZE) {\n attributeCache.delete(attributeCache.keys().next().value);\n }\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 * @returns the evaluated expression result\n */\n evaluate(expression, mode, ...data) {\n return 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 (let n = 0; n < node.childNodes.length; n++) {\n const 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 await this.settle();\n document.dispatchEvent(\n new CustomEvent('ftl:ready', {\n bubbles: false,\n cancelable: false,\n }),\n );\n });\n }\n #finished = new Map();\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 //settling waits on a signal that only ever resolves, so nothing here attaches a\n //rejection handler to the upgrade itself: a component that fails is still\n //reported the way it always was\n const { promise: finished, resolve: markFinished } = /** @type {PromiseWithResolvers<void>} */ (\n Promise.withResolvers()\n );\n const promise = Nodes.waitParsed(el)\n .then(() => el.upgrade())\n .finally(() => {\n this.#q.delete(el);\n this.#finished.delete(el);\n markFinished();\n });\n this.#q.set(el, promise);\n this.#finished.set(el, finished);\n }\n /**\n * Waits for every queued upgrade to settle, including the ones enqueued while\n * waiting: a component is only queued once its parent connects it, so a single pass\n * would miss everything nested. A component that fails to upgrade does not hold the\n * others back, readiness means the queue drained rather than that everything worked.\n */\n async settle() {\n while (this.#finished.size !== 0) {\n await Promise.all(Array.from(this.#finished.values()));\n }\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\n/**\n * Waits for the queued upgrades matching the filter, including the ones enqueued while\n * waiting: a component is only queued once its parent connects it, so a single pass\n * would miss everything nested.\n * @param {(el: Element) => boolean} accept\n */\nconst settle = async (accept) => {\n for (;;) {\n const pending = Array.from(registry.upgrades)\n .filter(([child]) => accept(child))\n .map(([, promise]) => promise);\n if (pending.length === 0) {\n return;\n }\n await Promise.all(pending);\n }\n};\n\nclass Rendering {\n static async waitFor(el) {\n await settle((child) => el.contains(child));\n }\n static async waitForChildren(el) {\n await settle((child) => el !== child && el.contains(child));\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 (const 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 /**\n * The disabled protocol follows the semantics of a native form control:\n *\n * - the `disabled` attribute on the host is the field's own claim, and nothing\n * but its author ever writes or removes it, in markup or through the property.\n * The framework never claims on the form's behalf, so there is nothing to\n * unclaim and nothing to lose: a field declared disabled inside a disabled\n * `<fieldset>` stays disabled when the fieldset comes back, exactly like a\n * native input keeps its attribute.\n * - the effective state is the claim OR a disabled fieldset ancestry, which the\n * platform maintains on its own: `:disabled` matches both, a disabled field is\n * left out of the submitted values, and the inner native controls are reached\n * by the ancestry as descendants of the fieldset.\n * - the `disabled` property reflects the claim only, like a native input's: a\n * field disabled by its ancestry reads `false` while `matches(':disabled')`\n * tells the effective state. Un-claiming inside a disabled fieldset cannot\n * enable the field.\n * - the inner controls mirror the claim and nothing else: the ancestry state is\n * never written anywhere, so it can never go stale, and the browser composes\n * the two on its own when it disables and re-enables a fieldset's descendants.\n *\n * Because of this, formDisabledCallback carries nothing the framework needs to\n * apply, and the protocol does not define it.\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 //the declared claim is what render receives: the ancestry state is not\n //passed around, it is already where it needs to be\n await this.render({ slots, observed, disabled: this.hasAttribute('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","/**\n * @typedef {{ type: string; context: string?; reason: string; details: any?; }} Problem\n */\nclass Failure extends Error {\n /**\n *\n * @param {string} message\n * @param {Problem[]} problems\n * @param {*} cause\n */\n constructor(message, problems, cause) {\n super(message, { cause });\n this.name = 'Failure';\n this.problems = problems;\n }\n dropping(prefix) {\n return new Failure(this.message, Failure.dropProblemsContext(this.problems, prefix), this);\n }\n static dropProblemsContext(problems, prefix) {\n return problems.map(({ type, context, reason, details }) => {\n const nctx = context?.startsWith(prefix) ? context.substring(prefix.length) : context;\n return { type, context: nctx, reason, details };\n });\n }\n}\n\nexport { Failure };\n","class Base64 {\n static encode(arrayBuffer, dialect) {\n const d = dialect || Base64.URL_SAFE;\n const len = arrayBuffer.byteLength;\n const view = new Uint8Array(arrayBuffer);\n let res = '';\n for (let i = 0; i < len; i += 3) {\n const v1 = d[view[i] >> 2];\n const v2 = d[((view[i] & 3) << 4) | (view[i + 1] >> 4)];\n const v3 = d[((view[i + 1] & 15) << 2) | (view[i + 2] >> 6)];\n const v4 = d[view[i + 2] & 63];\n res += v1 + v2 + v3 + v4;\n }\n if (len % 3 === 2) {\n res = res.substring(0, res.length - 1);\n } else if (len % 3 === 1) {\n res = res.substring(0, res.length - 2);\n }\n return res;\n }\n static decode(str, dialect) {\n const d = dialect || Base64.URL_SAFE;\n let nbytes = Math.floor(str.length * 0.75);\n for (let i = 0; i !== str.length; ++i) {\n if (str[str.length - i - 1] !== '=') {\n break;\n }\n --nbytes;\n }\n const view = new Uint8Array(nbytes);\n\n let vi = 0;\n let si = 0;\n //every group yields three bytes, but a padded input stops short of the last\n //one or two: writing them anyway would rely on typed arrays dropping writes\n //past their length\n while (vi < nbytes) {\n const v1 = d.indexOf(str.charAt(si++));\n const v2 = d.indexOf(str.charAt(si++));\n const v3 = d.indexOf(str.charAt(si++));\n const v4 = d.indexOf(str.charAt(si++));\n view[vi++] = (v1 << 2) | (v2 >> 4);\n if (vi === nbytes) {\n break;\n }\n view[vi++] = ((v2 & 15) << 4) | (v3 >> 2);\n if (vi === nbytes) {\n break;\n }\n view[vi++] = ((v3 & 3) << 6) | v4;\n }\n\n return view.buffer;\n }\n}\n\nBase64.STANDARD = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nBase64.URL_SAFE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\nclass Hex {\n static decode(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error('invalid length');\n }\n const lenInBytes = hex.length / 2;\n return new Uint8Array(lenInBytes).map((e, i) => {\n const offset = i * 2;\n const octet = hex.substring(offset, offset + 2);\n return parseInt(octet, 16);\n });\n }\n static encode(bytes, upper) {\n return Array.from(bytes)\n .map((b) => b.toString(16))\n .map((b) => (upper ? b.toUpperCase() : b))\n .map((o) => o.padStart(2, '0'))\n .join('');\n }\n}\n\nexport { Base64, Hex };\n","import { Failure } from './failure.mjs';\n\nclass MediaType {\n #type;\n #subtype;\n constructor(type, subtype) {\n this.#type = type;\n this.#subtype = subtype;\n }\n get normalized() {\n return `${this.#type}/${this.#subtype}`;\n }\n get type() {\n return this.#type;\n }\n get subtype() {\n return this.#subtype;\n }\n /**\n *\n * @param {string|null|undefined} v\n * @returns\n */\n static parse(v) {\n if (!v) {\n return new MediaType('unknown', 'unknown');\n }\n const [prefix, _] = v.split(';');\n const [ptype, psubtype] = prefix.trim().split('/');\n return new MediaType(ptype.toLowerCase(), psubtype?.toLowerCase());\n }\n}\n\n/**\n * @typedef {Int8Array| Uint8Array| Uint8ClampedArray| Int16Array| Uint16Array| Int32Array| Uint32Array| Float32Array| Float64Array| BigInt64Array| BigUint64Array} TypedArray\n */\n/**\n * @typedef {object} HttpInterceptor\n * @property {(url: URL, init: RequestInit|undefined, chain: HttpInterceptorChain) => Promise<Response>} intercept\n */\n\nclass HttpClientError extends Failure {\n /**\n * @param {string} message\n * @param {number} status\n * @param {{ type: string; context: string?; reason: string; details: any?; }[]} problems\n * @param {Error|undefined} [cause]\n */\n constructor(message, status, problems, cause) {\n super(message, problems, cause);\n this.name = 'HttpClientError';\n this.status = status;\n }\n dropping(prefix) {\n return new HttpClientError(this.message, this.status, Failure.dropProblemsContext(this.problems, prefix), this);\n }\n /**\n *\n * @param {string} type\n * @param {any} cause\n * @returns\n */\n static of(type, cause) {\n return new HttpClientError(\n cause.message,\n 0,\n [\n {\n type,\n context: null,\n reason: cause.message,\n details: null,\n },\n ],\n cause,\n );\n }\n /**\n * Creates an HttpClientError from a Response.\n * @param {Response} response\n * @returns an HttpClientError\n */\n static async fromResponse(response) {\n switch (MediaType.parse(response.headers.get('Content-Type')).normalized) {\n case 'application/failures+json': {\n const data = await response.json();\n const message = `${response.status} ${response.statusText}: ${data.length} failures`;\n return new HttpClientError(message, response.status, data);\n }\n case 'application/problem+json': {\n const data = await response.json();\n const message = `${response.status} ${response.statusText}: ${data.title} ${data.detail}`;\n return new HttpClientError(\n message,\n response.status,\n data.problems || [\n {\n type: 'GENERIC_PROBLEM',\n context: null,\n reason: message,\n details: null,\n },\n ],\n );\n }\n default: {\n const text = await response.text();\n const message = `${response.status} ${response.statusText}: ${text}`;\n return new HttpClientError(message, response.status, [\n {\n type: 'GENERIC_PROBLEM',\n context: null,\n reason: message,\n details: null,\n },\n ]);\n }\n }\n }\n}\n\n/**\n * @implements {HttpInterceptor}\n */\nclass CsrfTokenInterceptor {\n #k;\n #v;\n constructor() {\n this.#k = document.querySelector(\"meta[name='_csrf_header']\")?.getAttribute('content');\n this.#v = document.querySelector(\"meta[name='_csrf']\")?.getAttribute('content');\n }\n async intercept(url, request, chain) {\n if (this.#k && this.#v) {\n request.headers.set(this.#k, this.#v);\n }\n return await chain.proceed(url, request);\n }\n}\n/**\n * @implements {HttpInterceptor}\n */\nclass RedirectOnUnauthorizedInterceptor {\n #redirectUri;\n /**\n * @param {string} redirectUri\n */\n constructor(redirectUri) {\n this.#redirectUri = redirectUri;\n }\n async intercept(url, request, chain) {\n const response = await chain.proceed(url, request);\n if (response.status === 401) {\n window.location.href = this.#redirectUri;\n return new Promise(() => {});\n }\n return response;\n }\n}\n\nclass HttpClientBuilder {\n /**\n * @type {HttpInterceptor[]}\n */\n #interceptors;\n constructor() {\n this.#interceptors = [];\n }\n withCsrfToken() {\n this.#interceptors.push(new CsrfTokenInterceptor());\n return this;\n }\n withRedirectOnUnauthorized(redirectUri) {\n this.#interceptors.push(new RedirectOnUnauthorizedInterceptor(redirectUri));\n return this;\n }\n /**\n * @param {...HttpInterceptor} interceptors\n */\n withInterceptors(...interceptors) {\n this.#interceptors.push(...interceptors);\n return this;\n }\n build() {\n return new HttpClient(this.#interceptors);\n }\n}\n\n/**\n * @implements {HttpInterceptor}\n */\nclass HttpCall {\n async intercept(url, request, chain) {\n return await fetch(url, request);\n }\n}\n\nclass HttpInterceptorChain {\n #interceptors;\n #current;\n /**\n *\n * @param {HttpInterceptor[]} interceptors\n * @param {number} current\n */\n constructor(interceptors, current) {\n this.#interceptors = interceptors;\n this.#current = current;\n }\n /**\n *\n * @param {URL} url\n * @param {RequestInit} request\n * @returns {Promise<Response>} the response\n */\n async proceed(url, request) {\n const interceptor = this.#interceptors[this.#current];\n return await interceptor.intercept(\n url,\n request,\n new HttpInterceptorChain(this.#interceptors, this.#current + 1),\n );\n }\n}\n\nclass HttpClient {\n #interceptors;\n /**\n * Creates a builder for an HttpClient.\n * @returns {HttpClientBuilder} the client builder\n */\n static builder() {\n return new HttpClientBuilder();\n }\n /**\n * Creates an HttpClient.\n * @param {HttpInterceptor[]|undefined} interceptors - a list of interceptors to be registered for every request performed by the created client.\n */\n constructor(interceptors) {\n this.#interceptors = interceptors || [];\n }\n /**\n * Performs an HTTP exchange.\n * @async\n * @param {string} uri - the (possibly relative) request url\n * @param {RequestInit|undefined} options - fetch options\n * @param {HttpInterceptor[]|undefined} interceptors - the HttpInterceptors to be registered for this exchange.\n * @returns {Promise<Response>} the response\n */\n async exchange(uri, options, interceptors) {\n const is = [...this.#interceptors, ...(interceptors || []), new HttpCall()];\n const chain = new HttpInterceptorChain(is, 0);\n const url = new URL(new Request(uri).url);\n return await chain.proceed(url, options ?? {});\n }\n /**\n * Creates a request builder.\n * @param {string} method - the HTTP method to be used\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n request(method, uri) {\n return HttpRequestBuilder.create(this, method, uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n get(uri) {\n return HttpRequestBuilder.create(this, 'GET', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n head(uri) {\n return HttpRequestBuilder.create(this, 'HEAD', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n post(uri) {\n return HttpRequestBuilder.create(this, 'POST', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n put(uri) {\n return HttpRequestBuilder.create(this, 'PUT', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n patch(uri) {\n return HttpRequestBuilder.create(this, 'PATCH', uri);\n }\n /**\n * Creates a request builder.\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the request builder\n */\n delete(uri) {\n return HttpRequestBuilder.create(this, 'DELETE', uri);\n }\n}\n\n/**\n *\n * @param {Response} response\n * @param {'text'|'json'|'blob'|'arrayBuffer'} type\n * @returns\n */\nconst unmarshal = async (response, type) => {\n try {\n return await response[type]();\n } catch (ex) {\n throw HttpClientError.of('UNMARSHALING_PROBLEM', ex);\n }\n};\n\n/**\n * Yields the entries of a headers or params initializer preserving nullish values:\n * normalizing through `Headers`/`URLSearchParams` first would stringify them to\n * \"null\"/\"undefined\" instead of removing the key.\n * @param {any} source\n * @returns {Iterable<[string, any]>}\n */\nconst rawEntries = (source) => {\n if (source == null) {\n return [];\n }\n if (typeof source === 'string') {\n return new URLSearchParams(source);\n }\n if (typeof source[Symbol.iterator] === 'function') {\n return source;\n }\n return Object.entries(source);\n};\n\nclass HttpRequestBuilder {\n #client;\n #method;\n #uri;\n #params;\n #headers;\n #body;\n #options;\n #interceptors;\n /**\n * Creates an HttpRequestBuilder.\n * @param {HttpClient} client\n * @param {string} method - the HTTP method to be used\n * @param {string} uri - the (possibly relative) request url\n * @returns {HttpRequestBuilder} the builder\n */\n static create(client, method, uri) {\n const [baseUri, queryString = ''] = uri.split('?');\n return new HttpRequestBuilder(\n client,\n method,\n baseUri,\n new URLSearchParams(queryString),\n new Headers(),\n undefined,\n {},\n [],\n );\n }\n /**\n * Creates an HttpRequestBuilder.\n * @param {HttpClient} client\n * @param {string} method - the HTTP method to be used\n * @param {string} uri - the (possibly relative) request url\n * @param {URLSearchParams} params\n * @param {Headers} headers\n * @param {any} body\n * @param {Omit<RequestInit,\"headers\"|\"method\"|\"body\">} options\n * @param {HttpInterceptor[]} interceptors\n */\n constructor(client, method, uri, params, headers, body, options, interceptors) {\n this.#client = client;\n this.#method = method;\n this.#uri = uri;\n this.#params = params;\n this.#body = body;\n this.#headers = headers;\n this.#options = options;\n this.#interceptors = interceptors;\n }\n /**\n * Add all passed headers to the request, overriding existing ones if that key already exists. Null and undefined values cause the key to be removed.\n * @param {HeadersInit|Record<string,string|null|undefined>} hs\n * @returns {HttpRequestBuilder} this builder\n */\n headers(hs) {\n for (const [k, v] of rawEntries(hs)) {\n if (v == null) {\n this.#headers.delete(k);\n } else {\n this.#headers.set(k, v);\n }\n }\n return this;\n }\n /**\n * Adds an header to the request, overriding it if it already exists. Null and undefined values cause the key to be removed\n * @param {string} k\n * @param {string} v\n * @returns {HttpRequestBuilder} this builder\n */\n header(k, v) {\n if (v == null) {\n this.#headers.delete(k);\n } else {\n this.#headers.set(k, v);\n }\n return this;\n }\n /**\n * Add all query parameters to the request, overriding existing ones if that key already exists. Null and undefined values cause the key to be removed\n * @param {URLSearchParams|Record<string,string|null|undefined>|string[][]|string} ps\n * @returns {HttpRequestBuilder} this builder\n */\n params(ps) {\n for (const [k, v] of rawEntries(ps)) {\n if (v == null) {\n this.#params.delete(k);\n } else {\n this.#params.set(k, v);\n }\n }\n return this;\n }\n /**\n * Adds a query parameter to the request, overriding it if it already exists. Empty vs, or a single null or undefined value cause the key to be removed.\n * @param {string} k\n * @param {...string} vs\n * @returns {HttpRequestBuilder} this builder\n */\n param(k, ...vs) {\n //overriding, as header, headers and params all do: pass every value in one\n //call to get a multi valued parameter\n this.#params.delete(k);\n if (vs.length === 0 || vs[0] == null) {\n return this;\n }\n for (const v of vs) {\n this.#params.append(k, v);\n }\n return this;\n }\n /**\n * Sets the request body.\n * `Content-Type: multipart/form-data` header is automatically added by fetch when data is a FormData instance if not explicitly set.\n * `Content-Type: application/x-www-form-urlencoded` header is automatically added by fetch when data is an URLSearchParams instance if not explicitly set.\n * `Content-Type: text/plain` header is automatically added by fetch when data is a string instance if not explicitly set.\n * @param {string|ArrayBuffer|Blob|DataView|File|FormData|TypedArray|URLSearchParams|ReadableStream} data\n * @returns {HttpRequestBuilder} this builder\n */\n body(data) {\n this.#body = data;\n return this;\n }\n /**\n * Sets the request body that will be serialized as json. Calling this method adds the `Content-Type application/json` header for the request.\n * @param {any} body - the body to be serialized as json\n * @returns {HttpRequestBuilder} this builder\n */\n json(body) {\n this.#headers.set('Content-Type', 'application/json');\n this.#body = JSON.stringify(body);\n return this;\n }\n /**\n * Sets the request body as a FormData configured using the callback.\n * `Content-Type: multipart/form-data` header is automatically added by fetch if not explicitly set.\n * @param {(c: HttpMultipartRequestCustomizer) => void} callback\n */\n multipart(callback) {\n const formData = new FormData();\n const builder = new HttpMultipartRequestCustomizer(formData);\n callback(builder);\n this.#body = formData;\n return this;\n }\n /**\n * Sets a fetch options for the request.\n * @param {Omit<RequestInit,\"headers\"|\"method\"|\"body\">} kvs\n * @returns {HttpRequestBuilder} this builder\n */\n options(kvs) {\n for (const [k, v] of Object.entries(kvs)) {\n this.#options[k] = v;\n }\n return this;\n }\n /**\n * Sets a fetch option for the request.\n * @param {keyof Omit<RequestInit,\"headers\"|\"method\"|\"body\">} k\n * @param {*} v\n * @returns {HttpRequestBuilder} this builder\n */\n option(k, v) {\n this.#options[k] = v;\n return this;\n }\n /**\n * Adds interceptors to the request.\n * @param {[HttpInterceptor]} is - the interceptor to be regisered\n * @returns {HttpRequestBuilder} this builder\n */\n interceptors(is) {\n for (const i of is) {\n this.#interceptors.push(i);\n }\n return this;\n }\n /**\n * Adds an interceptor to the request.\n * @param {HttpInterceptor} i - the interceptor to be regisered\n * @returns {HttpRequestBuilder} this builder\n */\n interceptor(i) {\n this.#interceptors.push(i);\n return this;\n }\n /**\n * Performs an HTTP exchange using the configured client, request and interceptors.\n * @returns {Promise<Response>} the response\n */\n async exchange() {\n const uri = this.#params.size ? `${this.#uri}?${this.#params}` : this.#uri;\n const opts = {\n ...this.#options,\n headers: this.#headers,\n method: this.#method,\n body: this.#body,\n };\n return await this.#client.exchange(uri, opts, this.#interceptors);\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<Response>} the response\n */\n async fetch() {\n const uri = this.#params.size ? `${this.#uri}?${this.#params}` : this.#uri;\n const opts = {\n ...this.#options,\n headers: this.#headers,\n method: this.#method,\n body: this.#body,\n };\n try {\n const response = await this.#client.exchange(uri, opts, this.#interceptors);\n if (!response.ok) {\n throw await HttpClientError.fromResponse(response);\n }\n return response;\n } catch (ex) {\n if (ex instanceof Failure) {\n throw ex;\n }\n throw HttpClientError.of('CONNECTION_PROBLEM', ex);\n }\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<string>} the response body, as text\n */\n async fetchText() {\n const response = await this.fetch();\n return await unmarshal(response, 'text');\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<any>} the response body, deserialized as JSON\n */\n async fetchJson() {\n const response = await this.fetch();\n return await unmarshal(response, 'json');\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<Blob>} the response body, as a Blob\n */\n async fetchBlob() {\n const response = await this.fetch();\n return await unmarshal(response, 'blob');\n }\n /**\n * Performs an HTTP exchange using the configured client request, and interceptos throwing a failure when response status is not in the 200-299 range.\n * @returns {Promise<ArrayBuffer>} the response body, as an ArrayBuffer\n */\n async fetchArrayBuffer() {\n const response = await this.fetch();\n return await unmarshal(response, 'arrayBuffer');\n }\n}\n\nclass HttpMultipartRequestCustomizer {\n #formData;\n /**\n *\n * @param {FormData} formData\n */\n constructor(formData) {\n this.#formData = formData;\n }\n /**\n * Appends a value to the FormData.\n * @param {string} name\n * @param {*} value\n * @returns this builder\n */\n field(name, value) {\n this.#formData.append(name, value);\n return this;\n }\n /**\n * Appends a Blob to the FormData.\n * If `filename` is omitted, FormData defaults are applied:\n * The default filename for Blob objects is \"blob\";\n * The default filename for File objects is the file's filename.\n * @param {string} name\n * @param {Blob} value\n * @param {string|undefined} filename\n * @returns this builder\n */\n blob(name, value, filename) {\n this.#formData.append(name, value, filename);\n return this;\n }\n /**\n * Appends multiple Blobs to the FormData with the same name.\n * The default filename for Blob objects is \"blob\";\n * The default filename for File objects is the file's filename.\n * @param {string} name\n * @param {Blob[]} values\n * @returns this builder\n */\n blobs(name, values) {\n for (const v of values) {\n this.#formData.append(name, v);\n }\n return this;\n }\n /**\n * Appends a JSON serialized blob to the FormData.\n * @param {string} name\n * @param {any} value\n * @param {string|undefined} filename\n * @returns this builder\n */\n json(name, value, filename) {\n const blob = new Blob([JSON.stringify(value)], { type: 'application/json' });\n this.#formData.append(name, blob, filename);\n return this;\n }\n}\n\nexport { MediaType, HttpClient, HttpClientError };\n","class LocalStorage extends Storage {\n static save(k, v) {\n localStorage.setItem(k, JSON.stringify(v));\n }\n static load(k) {\n const got = localStorage.getItem(k);\n if (got === null) {\n return undefined;\n }\n try {\n return JSON.parse(got);\n } catch {\n //not what save wrote: drop it, otherwise every later read fails the same way\n localStorage.removeItem(k);\n return undefined;\n }\n }\n static remove(k) {\n localStorage.removeItem(k);\n }\n static pop(k) {\n const decoded = LocalStorage.load(k);\n LocalStorage.remove(k);\n return decoded;\n }\n}\n\nclass SessionStorage extends Storage {\n static save(k, v) {\n sessionStorage.setItem(k, JSON.stringify(v));\n }\n static load(k) {\n const got = sessionStorage.getItem(k);\n if (got === null) {\n return undefined;\n }\n try {\n return JSON.parse(got);\n } catch {\n //not what save wrote: drop it, otherwise every later read fails the same way\n sessionStorage.removeItem(k);\n return undefined;\n }\n }\n static remove(k) {\n sessionStorage.removeItem(k);\n }\n static pop(k) {\n const decoded = SessionStorage.load(k);\n SessionStorage.remove(k);\n return decoded;\n }\n}\n\nclass VersionedLocalStorage {\n static save(key, revision, data) {\n LocalStorage.save(key, { revision, data });\n }\n static load(key, revision) {\n const stored = LocalStorage.load(key);\n if (stored === undefined) {\n return undefined;\n }\n if (stored.revision !== revision) {\n LocalStorage.remove(key);\n return undefined;\n }\n return stored.data;\n }\n}\n\nclass VersionedSessionStorage {\n static save(key, revision, data) {\n SessionStorage.save(key, { revision, data });\n }\n static load(key, revision) {\n const stored = SessionStorage.load(key);\n if (stored === undefined) {\n return undefined;\n }\n if (stored.revision !== revision) {\n SessionStorage.remove(key);\n return undefined;\n }\n return stored.data;\n }\n}\n\nexport { LocalStorage, VersionedLocalStorage, SessionStorage, VersionedSessionStorage };\n","/**\n * @typedef {Object} AsyncExtension\n * @property {Promise<any>[]} promises\n * @typedef {Event & { async?: AsyncExtension }} AsyncEvent\n */\nclass AsyncEvents {\n /**\n * Dispatches an event and handles asynchronous resolution based on the execution mode.\n * @param {HTMLElement} el - The target element dispatching the event.\n * @param {AsyncEvent} evt - The event instance.\n * @param {{mode?: 'broadcast' | 'pipeline' | 'delegate'}} [options] - Configuration options (defaults to 'broadcast').\n * @returns {Promise<any>} Resolves with an array of values for broadcasts, a single value for pipelines/delegates, or undefined.\n */\n static async fireAsync(el, evt, options) {\n el.dispatchEvent(evt);\n const promises = evt.async?.promises ?? [];\n const mode = options?.mode ?? 'broadcast';\n if (mode === 'pipeline' && promises.length > 1) {\n throw new Error(\n `[AsyncEvents] Event \"${evt.type}\" is configured in 'pipeline' mode and expects at most one async listener, but ${promises.length} listeners were triggered on this element.`,\n );\n }\n if (mode === 'delegate' && promises.length !== 1) {\n throw new Error(\n `[AsyncEvents] Event \"${evt.type}\" is configured in 'delegate' mode and requires exactly one async listener, but ${promises.length} were registered.`,\n );\n }\n return mode === 'broadcast' ? Promise.all(promises) : Promise.resolve(promises[0]);\n }\n\n /**\n * Registers an asynchronous event listener wrapper.\n * @param {HTMLElement} el - The target element.\n * @param {string} type - The event name/type.\n * @param {Function} fn - The async listener middleware function returning the execution result.\n * @param {AddEventListenerOptions} [options] - Native addEventListener options.\n * @returns {EventListener} The underlying proxy listener function needed for cleanup via asyncOff.\n */\n static asyncOn(el, type, fn, options) {\n /** @type {(evt: Event) => Promise<void>} */\n const listener = async (event) => {\n const ae = /** @type {AsyncEvent} */ (event);\n if (!ae.async) {\n ae.async = { promises: [] };\n }\n const { promise, resolve, reject } = Promise.withResolvers();\n ae.async.promises.push(promise);\n try {\n resolve(await fn(ae));\n } catch (e) {\n reject(e);\n }\n };\n\n el.addEventListener(type, listener, options);\n return listener;\n }\n\n /**\n * Unregisters an asynchronous event listener proxy.\n * @param {HTMLElement} el - The target element.\n * @param {string} type - The event name/type.\n * @param {EventListener} listener - The proxy listener instance previously returned by asyncOn.\n * @param {EventListenerOptions} [options] - Native removeEventListener options.\n */\n static asyncOff(el, type, listener, options) {\n el.removeEventListener(type, listener, options);\n }\n\n /**\n * Mixes the asynchronous execution engine extensions into target class prototypes.\n * @param {...Function} classes - The target class constructors to decorate.\n */\n static mixInto(...classes) {\n for (const k of classes) {\n Object.assign(k.prototype, {\n /**\n * @this {HTMLElement}\n * @param {AsyncEvent} evt\n * @param {{mode?: 'broadcast' | 'pipeline' | 'delegate'}} [options]\n * @returns {Promise<any>}\n */\n async fireAsync(evt, options) {\n return await AsyncEvents.fireAsync(this, evt, options);\n },\n\n /**\n * @this {HTMLElement}\n * @param {string} type\n * @param {Function} fn\n * @param {AddEventListenerOptions} [options]\n * @returns {EventListener}\n */\n asyncOn(type, fn, options) {\n return AsyncEvents.asyncOn(this, type, fn, options);\n },\n\n /**\n * @this {HTMLElement}\n * @param {string} type\n * @param {EventListener} listener\n * @param {EventListenerOptions} [options]\n * @returns {void}\n */\n asyncOff(type, listener, options) {\n AsyncEvents.asyncOff(this, type, listener, options);\n },\n });\n }\n }\n}\n\nexport { AsyncEvents };\n","class Timing {\n static sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n static DEBOUNCE_DEFAULT = 0;\n static DEBOUNCE_IMMEDIATE = 1;\n /**\n * Executes only after a period of inactivity (pause in events).\n * Respond to the \"end\" of a series of events.\n * @param {*} timeoutMs\n * @param {*} func\n * @param {*} [options]\n * @returns {[function, function]}\n */\n static debounce(timeoutMs, func, options) {\n const opts = options ?? Timing.DEBOUNCE_DEFAULT;\n let tid = /** @type {number | null} */ (null);\n let args = [];\n let previousTimestamp = 0;\n\n const later = () => {\n const elapsed = performance.now() - previousTimestamp;\n if (timeoutMs > elapsed) {\n tid = setTimeout(later, timeoutMs - elapsed);\n return;\n }\n tid = null;\n if (opts !== Timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n // This check is needed because `func` can recursively invoke `debounced`.\n if (tid === null) {\n args = [];\n }\n };\n\n const debounced = (...called) => {\n args = called;\n previousTimestamp = performance.now();\n if (tid === null) {\n tid = setTimeout(later, timeoutMs);\n if (opts === Timing.DEBOUNCE_IMMEDIATE) {\n func(...args);\n }\n }\n };\n const abort = () => {\n clearTimeout(tid ?? undefined);\n tid = null;\n args = [];\n };\n return [debounced, abort];\n }\n static THROTTLE_DEFAULT = 0;\n static THROTTLE_NO_LEADING = 1;\n static THROTTLE_NO_TRAILING = 2;\n /**\n * Executes at most once per specified time interval, regardless of ongoing events.\n * @param {*} timeoutMs\n * @param {*} func\n * @param {*} [options]\n * @returns {[function, function]}\n */\n static throttle(timeoutMs, func, options) {\n const opts = options ?? Timing.THROTTLE_DEFAULT;\n let tid = /** @type {number | null} */ (null);\n let args = [];\n let previousTimestamp = 0;\n\n const later = () => {\n previousTimestamp = opts & Timing.THROTTLE_NO_LEADING ? 0 : performance.now();\n tid = null;\n func(...args);\n if (tid === null) {\n args = [];\n }\n };\n const throttled = (...called) => {\n const now = performance.now();\n if (!previousTimestamp && opts & Timing.THROTTLE_NO_LEADING) {\n previousTimestamp = now;\n }\n const remaining = previousTimestamp === 0 ? 0 : timeoutMs - (now - previousTimestamp);\n args = called;\n if (remaining <= 0 || remaining > timeoutMs) {\n if (tid !== null) {\n clearTimeout(tid);\n tid = null;\n }\n previousTimestamp = now;\n func(...args);\n if (tid === null) {\n args = [];\n }\n } else if (tid === null && !(opts & Timing.THROTTLE_NO_TRAILING)) {\n tid = setTimeout(later, remaining);\n }\n };\n const abort = () => {\n clearTimeout(tid ?? undefined);\n tid = null;\n args = [];\n };\n return [throttled, abort];\n }\n}\n\nexport { Timing };\n","class Bindings {\n /**\n * @param {{ [x: string]: any; }} obj\n * @param {string} prefix\n * @param {Set<String>} stops\n * @return {{ [x: string]: any; }}\n */\n static flatten(obj, prefix, stops) {\n return Object.keys(obj).reduce((acc, k) => {\n const pre = prefix.length ? `${prefix}.${k}` : k;\n if (!stops.has(pre) && typeof obj[k] === 'object' && obj[k] !== null) {\n Object.assign(acc, Bindings.flatten(obj[k], pre, stops));\n } else {\n acc[pre] = obj[k];\n }\n return acc;\n }, {});\n }\n\n /**\n * @param {any} result\n * @param {string} path\n * @param {any} value\n */\n static providePath(result, path, value) {\n const keys = path.split('.').map((k) => (/^[0-9]+$/.test(k) ? +k : k));\n let current = result ?? {};\n let previous = /** @type {any} */ (null);\n for (let i = 0; ; ++i) {\n const ckey = keys[i];\n const pkey = keys[i - 1];\n if (Number.isInteger(ckey) && !Array.isArray(current)) {\n if (previous !== null) {\n previous[pkey] = current = [];\n } else {\n result = current = [];\n }\n }\n if (i === keys.length - 1) {\n //when value is undefined we only want to define the property if it's not defined\n current[ckey] = value !== undefined ? value : ckey in current ? current[ckey] : null;\n return result;\n }\n if (current[ckey] === undefined) {\n current[ckey] = {};\n }\n previous = current;\n current = current[ckey];\n }\n }\n /**\n *\n * @param {Element & {dataset?: any} & {checked?: boolean} & {value?: any}} el\n * @returns\n */\n static extract(el) {\n if (el.getAttribute('type') === 'radio') {\n if (!el.checked) {\n return undefined;\n }\n return el.dataset.fulBindType === 'boolean' ? el.value === 'true' : el.value;\n }\n if (el.getAttribute('type') === 'checkbox') {\n return el.checked;\n }\n if (el.dataset.fulBindType === 'boolean') {\n return !el.value ? null : el.value === 'true';\n }\n if (el.tagName === 'INPUT' || el.tagName === 'SELECT' || el.tagName === 'TEXTAREA') {\n return el.value === '' || el.value === undefined ? null : el.value;\n }\n return el.value;\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n * @param {HTMLElement} [submitter]\n * @returns\n */\n static extractFrom(form, submitter) {\n let result = {};\n for (const el of form.elements) {\n // we are assuming submitters are disabled during submit.\n if (!el.hasAttribute('name') || (el.matches(':disabled') && el !== submitter)) {\n continue;\n }\n result = Bindings.providePath(\n result,\n /** @type {string} */ (el.getAttribute('name')),\n Bindings.extract(el),\n );\n }\n return result;\n }\n\n /**\n *\n * @param {Element & {dataset?: any} & {checked?: boolean} & {value?: any}} el\n * @returns\n */\n static mutate(el, raw) {\n if (el.getAttribute('type') === 'radio') {\n //values are matched as strings, as ful-radio-group does: extract decodes\n //boolean radios, and payloads carry numbers where the attribute is text\n el.checked = raw != null && el.getAttribute('value') === String(raw);\n return;\n }\n if (el.getAttribute('type') === 'checkbox') {\n el.checked = raw;\n return;\n }\n el.value = raw;\n }\n\n static mutateIn(form, values) {\n const names = Array.from(form.elements)\n .map((el) => el.getAttribute('name'))\n .filter((n) => n);\n for (const [flattenedKey, value] of Object.entries(Bindings.flatten(values, '', new Set(names)))) {\n for (const el of form.querySelectorAll(`[name='${CSS.escape(flattenedKey)}']`)) {\n Bindings.mutate(el, value);\n }\n }\n }\n\n static errors(form, es, scrollOnError) {\n const fieldErrors = es.filter((e) => e.type === 'FIELD_ERROR' || e.type === 'INVALID_FORMAT');\n const globalErrors = es.filter((e) => e.type !== 'FIELD_ERROR' && e.type !== 'INVALID_FORMAT');\n form.querySelectorAll(`[name]`).forEach((el) => {\n el.setCustomValidity?.('');\n });\n form.querySelectorAll('ful-errors').forEach((el) => {\n el.replaceChildren();\n el.setAttribute('hidden', '');\n });\n fieldErrors.forEach((e) => {\n const name = e.context.replace(/\\[/g, '.').replace(/\\]\\./g, '.').replace(/\\]/g, '')\n const parts = name.split('.');\n for (let i = parts.length; i !== 0; --i) {\n const prefix = parts.slice(0, i).join('.');\n const suffix = parts.slice(i, parts.length).join('.');\n form.querySelectorAll(`[name='${CSS.escape(prefix)}']`).forEach((input) => {\n input.setCustomValidity?.(e.reason, suffix);\n });\n }\n });\n form.querySelectorAll('ful-errors').forEach((el) => {\n const hel = /** @type HTMLElement} */ (el);\n hel.innerText = globalErrors.map((e) => e.reason).join('\\n');\n if (globalErrors.length !== 0) {\n el.removeAttribute('hidden');\n }\n });\n if (es.length === 0 || !scrollOnError) {\n return;\n }\n Array.from(form.querySelectorAll(`:invalid`))\n .sort((a, b) => a.getBoundingClientRect().y - b.getBoundingClientRect().y)[0]\n ?.focus();\n }\n}\n\nexport { Bindings };\n","import { Attributes, ParsedElement, registry } from '../../ftl/index.mjs';\nimport { Failure } from '../../httpc/index.mjs';\nimport { Bindings } from './bindings.mjs';\nimport { AsyncEvents } from '../events/async.mjs';\n\nclass RemoteJsonFormLoader {\n #http;\n #url;\n #method;\n #requestMapper;\n #responseMapper;\n constructor(http, url, method, requestMapper, responseMapper) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n this.#requestMapper = requestMapper;\n this.#responseMapper = responseMapper;\n }\n prepare(values, form) {\n return this.#requestMapper(values, form);\n }\n async submit(values, form) {\n return await this.#http.request(this.#method, this.#url).json(values).fetch();\n }\n transform(response, form) {\n return this.#responseMapper(response, form);\n }\n}\n\nclass LocalFormLoader {\n #requestMapper;\n #responseMapper;\n constructor(requestMapper, responseMapper) {\n this.#requestMapper = requestMapper;\n this.#responseMapper = responseMapper;\n }\n async prepare(values, form) {\n return await this.#requestMapper(values, form);\n }\n async submit(values, form, response) {\n return response;\n }\n async transform(response, form) {\n return await this.#responseMapper(response, form);\n }\n}\n\nclass FormLoader {\n static create(el, conf) {\n const http = registry.component('http-client');\n const requestMapper = el.hasAttribute('request-mapper')\n ? registry.component(el.getAttribute('request-mapper'))\n : (v) => v;\n const responseMapper = el.hasAttribute('response-mapper')\n ? registry.component(el.getAttribute('response-mapper'))\n : (v) => v;\n const url = el.getAttribute('action');\n if (!url) {\n return new LocalFormLoader(requestMapper, responseMapper);\n }\n const method = el.getAttribute('method') ?? 'POST';\n return new RemoteJsonFormLoader(http, url, method, requestMapper, responseMapper);\n }\n}\n\nclass Form extends ParsedElement {\n form;\n render() {\n const form = document.createElement('form');\n this.form = form;\n form.setAttribute('novalidate', '');\n Attributes.forward('form-', this, form);\n form.replaceChildren(...this.childNodes);\n form.addEventListener('submit', async (e) => {\n e.preventDefault();\n e.stopPropagation();\n await this.submit(e.submitter ?? undefined);\n });\n if (this.hasAttribute('clear-invalid-on-change')) {\n this.addEventListener('change', (/** @type any */ evt) => {\n evt.target.setCustomValidity?.('');\n });\n }\n this.replaceChildren(form);\n }\n /**\n *\n * @param {HTMLElement} [submitter]\n * @returns\n */\n async submit(submitter) {\n this.spinner(true);\n //one try: building the loader and preparing the request are as much part of a\n //submit as sending it, and a mapper that throws is how a caller reports a\n //problem with the values\n let values;\n let request;\n try {\n const loader = registry.component(this.getAttribute('loader') ?? 'loaders:form').create(this);\n values = Bindings.extractFrom(this.form, submitter);\n request = await loader.prepare(values, this);\n const se = new CustomEvent('submit', {\n bubbles: true,\n cancelable: true,\n detail: { submitter, values, request },\n });\n if (!this.dispatchEvent(se)) {\n return;\n }\n this.errors = [];\n const sre = new CustomEvent('submit:requested', {\n bubbles: true,\n cancelable: false,\n detail: { submitter, values: se.detail.values, request: se.detail.request },\n });\n let response = await AsyncEvents.fireAsync(this, sre, { mode: 'pipeline' });\n request = sre.detail.request;\n\n response = await loader.submit(request, this, response);\n const mapped = await loader.transform(response, this);\n this.dispatchEvent(\n new CustomEvent('submit:success', {\n bubbles: true,\n cancelable: false,\n detail: { submitter, values, request, response: mapped },\n }),\n );\n } catch (e) {\n this.dispatchEvent(\n new CustomEvent('submit:failure', {\n bubbles: true,\n cancelable: false,\n detail: { submitter, values, request, exception: e },\n }),\n );\n if (e instanceof Failure) {\n this.errors = e.problems;\n }\n console.warn('failed to submit form', this, 'reason:', e);\n } finally {\n this.spinner(false);\n }\n }\n reset() {\n this.form.reset();\n }\n #spinning = 0;\n spinner(spin) {\n //submits can overlap: only the outermost one saves and restores the button states\n if (spin) {\n ++this.#spinning;\n if (this.#spinning !== 1) {\n return;\n }\n } else {\n this.#spinning = Math.max(0, this.#spinning - 1);\n if (this.#spinning !== 0) {\n return;\n }\n }\n this.querySelectorAll('ful-spinner').forEach((el) => {\n const hel = /** @type HTMLElement */ (el);\n hel.hidden = !spin;\n });\n this.querySelectorAll('input,button').forEach((el) => {\n const hel = /** @type HTMLButtonElement|HTMLInputElement */ (el);\n if (hel.type !== 'submit' && hel.type !== 'reset') {\n return;\n }\n if (spin) {\n hel.dataset.wd = String(hel.disabled);\n hel.disabled = true;\n } else {\n hel.disabled = hel.dataset.wd === 'true';\n delete hel.dataset.wd;\n }\n });\n }\n set values(vs) {\n Bindings.mutateIn(this.form, vs);\n }\n get values() {\n return Bindings.extractFrom(this.form);\n }\n set errors(es) {\n Bindings.errors(this.form, es, this.hasAttribute('scroll-on-error'));\n }\n}\n\nexport { FormLoader, Form };\n","import { Attributes, ParsedElement } from '../../ftl/index.mjs';\n\nclass Input extends ParsedElement {\n static observed = ['value', 'readonly:presence', 'required:presence', 'placeholder'];\n static slots = true;\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <input data-tpl-if=\"type != 'textarea'\" class=\"form-control\" data-tpl-type=\"type\" placeholder=\" \" form=\"\">\n <textarea data-tpl-if=\"type == 'textarea'\" class=\"form-control\" placeholder=\" \" form=\"\"></textarea>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n static formAssociated = true;\n _input;\n _fieldError;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'presentation';\n }\n _type() {\n return this.getAttribute('type') ?? 'text';\n }\n _fragment(type, slots) {\n return this.template().withOverlay({ type, slots }).render();\n }\n render({ slots, observed, disabled, skipObservedSetup }) {\n const type = this._type();\n const fragment = this._fragment(type, slots);\n this._input = fragment.querySelector('input,textarea');\n\n Attributes.forward('input-', this, this._input);\n this._input.addEventListener('keydown', (evt) => {\n if (evt.key !== 'Enter' || this._type() === 'textarea') {\n return;\n }\n const form = this.internals.form;\n if (!form) {\n return;\n }\n const candidates = /** @type [HTMLButtonElement|HTMLInputElement] */ (\n Array.from(form.querySelectorAll('button:not(:disabled), input:not(:disabled)'))\n );\n const submitter = candidates.find((el) => el.type === 'submit');\n form.requestSubmit(submitter);\n });\n this._input.addEventListener('input', (evt) => {\n const mask = this.getAttribute('mask');\n if (!mask) {\n return;\n }\n const strip = (v) => v.replace(new RegExp(mask, 'g'), '');\n const before = evt.target.value;\n const after = strip(before);\n if (before === after) {\n return;\n }\n const start = evt.target.selectionStart;\n evt.target.value = after;\n if (start === null) {\n //email, number and the date types have no selection to restore\n return;\n }\n //the caret keeps its place among the characters that survived, so only the\n //ones stripped before it count\n const caret = strip(before.slice(0, start)).length;\n evt.target.setSelectionRange(caret, caret);\n });\n this._input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n const label = fragment.querySelector('label');\n label.addEventListener('click', () => this.focus());\n this._fieldError = fragment.querySelector('ful-field-error');\n this._input.ariaDescribedByElements = [this._fieldError];\n this._input.ariaLabelledByElements = [label];\n this.replaceChildren(fragment);\n if (!skipObservedSetup) {\n // biome-ignore lint/complexity/noUselessThisAlias: keeps checkJs from seeing these as class fields\n const el = this;\n el.disabled = disabled;\n el.readonly = observed.readonly;\n el.required = observed.required;\n el.placeholder = observed.placeholder;\n el.value = observed.value;\n }\n }\n get value() {\n const uppercase = this.hasAttribute('uppercase');\n const trim = this.hasAttribute('trim');\n const v = this._input.value;\n const uppercased = uppercase ? v.toUpperCase() : v;\n const trimmed = trim ? uppercased.trim() : uppercased;\n return trimmed === '' ? null : trimmed;\n }\n set value(value) {\n this._input.value = value === '' ? null : value;\n }\n get readonly() {\n return this._input.readOnly;\n }\n set readonly(v) {\n this._input.readOnly = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get disabled() {\n //the claim only, like a native input: the effective state, claim or disabled\n //ancestry, is what :disabled matches\n return this.hasAttribute('disabled');\n }\n set disabled(d) {\n //the claim belongs to the author alone, nothing else ever writes it\n Attributes.toggle(this, 'disabled', d);\n //the inner control carries the claim as a native input would: a disabled\n //fieldset ancestry is left to the browser, which reaches the inner control\n //as a descendant of the fieldset and re-enables it on its own\n Attributes.toggle(this._input, 'disabled', d);\n }\n get required() {\n return this._input.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this._input, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n get placeholder() {\n const v = this._input.getAttribute('placeholder');\n return v === ' ' ? null : v;\n }\n set placeholder(d) {\n //without a placeholder :placeholder-shown never matches, and floating labels\n //rely on it, so a blank one stands in for none\n Attributes.set(this._input, 'placeholder', d ?? ' ');\n this.reflect(() => {\n Attributes.set(this, 'placeholder', d);\n });\n }\n focus(options) {\n this._input.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this._fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this._fieldError.innerText = error;\n }\n formResetCallback() {\n this.value = this.unmarshal('value', this.getAttribute('value'));\n }\n}\n\nexport { Input };\n","import { ParsedElement } from '../../ftl/index.mjs';\nimport { Input } from './input.mjs';\n\nclass LocalDate extends ParsedElement {\n render() {\n const content = this.textContent.trim();\n if (content === '') {\n this.replaceChildren(this.getAttribute('default') ?? '');\n return;\n }\n const locale = this.getAttribute('locale') ?? Intl.DateTimeFormat().resolvedOptions().locale;\n const formatter = new Intl.DateTimeFormat(locale, { year: 'numeric', month: 'numeric', day: 'numeric' });\n const [y, m, d] = content.split('-').map(Number);\n this.replaceChildren(formatter.format(new Date(y, m - 1, d)));\n }\n}\n\nclass Instant extends ParsedElement {\n render() {\n const content = this.textContent.trim();\n if (content === '') {\n this.replaceChildren(this.getAttribute('default') ?? '');\n return;\n }\n const locale = this.getAttribute('locale') ?? Intl.DateTimeFormat().resolvedOptions().locale;\n const format = new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false,\n });\n this.replaceChildren(format.format(new Date(Instant.isoToLocal(content))));\n }\n static isoToLocal(iso) {\n //this is so sad\n const d = new Date(iso);\n const pad = (n, v) => String(v).padStart(n, '0');\n const date = `${d.getFullYear()}-${pad(2, d.getMonth() + 1)}-${pad(2, d.getDate())}`;\n const time = `${pad(2, d.getHours())}:${pad(2, d.getMinutes())}:${pad(2, d.getSeconds())}.${pad(3, d.getMilliseconds())}`;\n return `${date}T${time}`;\n }\n}\n\nclass InputLocalDate extends Input {\n static observed = ['value', 'readonly:presence', 'required:presence', 'placeholder', 'min', 'max', 'step'];\n _type() {\n return 'date';\n }\n render(conf) {\n const { observed } = conf;\n super.render(conf);\n //step first: on a time input min and max are snapped to its grid\n this.step = observed.step;\n this.min = observed.min;\n this.max = observed.max;\n }\n get min() {\n const v = this._input.min;\n return v === '' ? null : v;\n }\n set min(v) {\n this._input.min = InputLocalDate.#fromIsoOrOffset(v);\n }\n get max() {\n const v = this._input.max;\n return v === '' ? null : v;\n }\n set max(v) {\n this._input.max = InputLocalDate.#fromIsoOrOffset(v);\n }\n get step() {\n const v = this._input.step;\n return v === '' ? null : v;\n }\n set step(v) {\n this._input.step = v ?? '';\n }\n static #fromIsoOrOffset(v) {\n if (!v) {\n return '';\n }\n //this could be date.toLocaleDateString('en-CA')\n const formatLocalDate = (date) =>\n new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().split('T')[0];\n if (v === 'now') {\n return formatLocalDate(new Date());\n }\n const re = /^([+-])(\\d+)([dmy])$/;\n const match = re.exec(v);\n if (!match) {\n return v;\n }\n const sign = match[1] === '-' ? -1 : 1;\n const offset = +match[2];\n const r = new Date();\n r.setHours(0, 0, 0, 0);\n switch (match[3]) {\n case 'd':\n r.setDate(r.getDate() + offset * sign);\n break;\n case 'm': {\n const originalDay = r.getDate();\n r.setMonth(r.getMonth() + offset * sign);\n if (r.getDate() !== originalDay) {\n r.setDate(0);\n }\n break;\n }\n case 'y':\n r.setFullYear(r.getFullYear() + offset * sign);\n break;\n }\n return formatLocalDate(r);\n }\n}\n\nclass InputLocalTime extends InputLocalDate {\n _type() {\n return 'time';\n }\n get min() {\n const v = this._input.min;\n return v === '' ? null : v;\n }\n set min(v) {\n this._input.min = this.#fromNowOrOffset(v);\n }\n get max() {\n const v = this._input.max;\n return v === '' ? null : v;\n }\n set max(v) {\n this._input.max = this.#fromNowOrOffset(v);\n }\n /**\n * Resolves `now` and hour or minute offsets against the current time, wrapping\n * around midnight. `m` is minutes here, unlike the date offsets of the parent where\n * it is months: months mean nothing on a time. Anything else is passed through.\n */\n #fromNowOrOffset(v) {\n if (!v) {\n return '';\n }\n const resolved = new Date();\n if (v !== 'now') {\n const re = /^([+-])(\\d+)([hm])$/;\n const match = re.exec(v);\n if (!match) {\n return v;\n }\n const sign = match[1] === '-' ? -1 : 1;\n const offset = +match[2] * sign;\n if (match[3] === 'h') {\n resolved.setHours(resolved.getHours() + offset);\n } else {\n resolved.setMinutes(resolved.getMinutes() + offset);\n }\n }\n return InputLocalTime.#snapped(resolved, Number(this._input.step) || 60);\n }\n /**\n * Truncates a time to the step grid: min anchors that grid, so a bound that is not\n * on it makes every value on it invalid.\n */\n static #snapped(date, stepSeconds) {\n const pad = (n) => String(n).padStart(2, '0');\n const seconds = date.getHours() * 3600 + date.getMinutes() * 60 + date.getSeconds();\n const snapped = Math.floor(seconds / stepSeconds) * stepSeconds;\n const hh = pad(Math.floor(snapped / 3600));\n const mm = pad(Math.floor((snapped % 3600) / 60));\n return stepSeconds % 60 === 0 ? `${hh}:${mm}` : `${hh}:${mm}:${pad(snapped % 60)}`;\n }\n}\n\nclass InputInstant extends Input {\n static observed = ['value', 'readonly:presence', 'required:presence', 'placeholder', 'min', 'max', 'step'];\n _type() {\n return 'datetime-local';\n }\n render(conf) {\n const { observed } = conf;\n super.render(conf);\n this.min = observed.min;\n this.max = observed.max;\n this.step = observed.step;\n }\n get value() {\n const v = this._input.value;\n return v === '' ? null : new Date(v).toISOString();\n }\n set value(v) {\n this._input.value = v ? Instant.isoToLocal(v) : '';\n }\n get min() {\n const v = this._input.min;\n return v === '' ? null : new Date(v).toISOString();\n }\n set min(v) {\n this._input.min = v ? Instant.isoToLocal(v) : '';\n }\n get max() {\n const v = this._input.max;\n return v === '' ? null : new Date(v).toISOString();\n }\n set max(v) {\n this._input.max = v ? Instant.isoToLocal(v) : '';\n }\n get step() {\n const v = this._input.step;\n return v === '' ? null : v;\n }\n set step(v) {\n this._input.step = v ?? '';\n }\n}\n\nexport { Instant, LocalDate, InputLocalDate, InputLocalTime, InputInstant };\n","import { Attributes } from '../../ftl/index.mjs';\nimport { Input } from './input.mjs';\n\nclass InputFile extends Input {\n static l10n = {\n en: {\n dropzonelabel: 'Click or drop your files here',\n unacceptablefiletype: 'Only files of type {0} are supported',\n maxfilesizeexceeded: 'Maximum supported file size is {0}',\n maxtotalsizeexceeded: 'Maximum supported total file size is {0}',\n maxfilesexceeded: 'Maximum files count exceeded',\n },\n it: {\n dropzonelabel: 'Clicca o trascina i file qui',\n unacceptablefiletype: 'Solo i file di tipo {0} sono supportati',\n maxfilesizeexceeded: 'La dimensione massima di un file è di {0}',\n maxtotalsizeexceeded: 'La dimensione massima complessiva dei file è di {0}',\n maxfilesexceeded: 'Numero massimo di file superato',\n },\n es: {\n dropzonelabel: 'Haz clic o arrastra tus archivos aquí',\n unacceptablefiletype: 'Solo se admiten archivos de tipo {0}',\n maxfilesizeexceeded: 'El tamaño máximo de archivo admitido es {0}',\n maxtotalsizeexceeded: 'El tamaño total máximo admitido es {0}',\n maxfilesexceeded: 'Se ha superado el número máximo de archivos',\n },\n fr: {\n dropzonelabel: 'Cliquez ou déposez vos fichiers ici',\n unacceptablefiletype: 'Seuls les fichiers de type {0} sont pris en charge',\n maxfilesizeexceeded: 'La taille maximale de fichier prise en charge est {0}',\n maxtotalsizeexceeded: 'La taille totale maximale prise en charge est {0}',\n maxfilesexceeded: 'Nombre maximal de fichiers dépassé',\n },\n };\n static observed = [\n 'value',\n 'readonly:presence',\n 'required:presence',\n 'placeholder',\n 'accept:csv',\n 'multiple:presence',\n 'itemlist:presence',\n 'dropzone:presence',\n 'maxfiles:number',\n 'maxfilesize:number',\n 'maxtotalsize:number',\n ];\n #accept;\n #items;\n #dropzone;\n #warnings;\n _type() {\n return 'file';\n }\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <input class=\"form-control\" data-tpl-type=\"type\" placeholder=\" \" form=\"\">\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <div data-ref=\"dropzone\" class=\"dropzone\" data-tpl-if=\"slots.dropzone\">\n {{{{ slots.dropzone }}}}\n </div>\n <div data-ref=\"dropzone\" class=\"default-dropzone\" data-tpl-if=\"!slots.dropzone\">\n {{ #l10n:t('dropzonelabel') }}\n </div>\n <ful-item-list></ful-item-list>\n <ful-field-warnings></ful-field-warnings>\n <ful-field-error></ful-field-error>\n `;\n static templates = {\n items: `\n <ful-item data-tpl-each=\"files\" data-tpl-var=\"file\" data-tpl-data-name=\"file.name\">\n <div>{{ file.name }}</div>\n <div>{{ #bytes:format(file.size) }}</div>\n <button type=\"button\" class=\"btn btn-sm btn-outline-danger bi bi-x-lg\" alt=\"Rimuovi\"></button>\n </ful-item>\n `,\n warning: `<ful-field-warning>{{ #l10n:t(key, args) }}</ful-field-warning>`,\n };\n render(conf) {\n const { observed } = conf;\n super.render({ ...conf, skipObservedSetup: true });\n this.#items = this.querySelector('ful-item-list');\n this.#dropzone = this.querySelector('[data-ref=dropzone]');\n this.#warnings = this.querySelector('ful-field-warnings');\n this.accept = observed.accept;\n this.multiple = observed.multiple;\n this.itemlist = observed.itemlist;\n this.dropzone = observed.dropzone;\n this.maxfiles = observed.maxfiles;\n this.maxfilesize = observed.maxfilesize;\n this.maxtotalsize = observed.maxtotalsize;\n\n this.disabled = conf.disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.placeholder = observed.placeholder;\n this.value = observed.value;\n this.#warnings.addEventListener('animationend', (e) => {\n e.target.remove();\n });\n this.#items.addEventListener('click', (e) => {\n if (!e.target.closest('button')) {\n return;\n }\n const idx = [...this.#items.children].indexOf(e.target.closest('ful-item'));\n if (idx === -1) {\n return;\n }\n const dt = new DataTransfer();\n [...this.files]\n .filter((f, i) => i !== idx)\n .forEach((f) => {\n dt.items.add(f);\n });\n this.files = dt.files;\n });\n this.#dropzone.addEventListener('click', (e) => {\n this.querySelector('input')?.click();\n });\n\n this.#dropzone.addEventListener('dragover', (e) => {\n e.preventDefault();\n });\n this.#dropzone.addEventListener('drop', (e) => {\n e.preventDefault();\n const dropped = [...e.dataTransfer.items].filter((i) => i.kind === 'file');\n if (dropped.length === 0) {\n return;\n }\n const dt = new DataTransfer();\n dropped.forEach((i) => {\n dt.items.add(i.getAsFile());\n });\n this.files = dt.files;\n });\n this._input.addEventListener('change', (e) => {\n this.#update();\n });\n }\n #formatByteSize(v) {\n return v > 1024 * 1024\n ? `${Math.round((v / 1024 / 1024) * 100) / 100}MiB`\n : v > 1024\n ? `${Math.round((v / 1024) * 100) / 100}KiB`\n : `${v}B`;\n }\n #update() {\n this.setCustomValidity();\n this.#warnings.replaceChildren();\n this.#ensureAcceptable();\n this.#ensureFileSizes();\n this.#ensureTotalSize();\n this.#ensureFilesCount();\n this.template('items')\n .withOverlay({ files: this.files })\n .withModule('bytes', { format: this.#formatByteSize })\n .renderTo(this.#items);\n }\n warning(key, args) {\n this.template('warning').withOverlay({ key, args }).appendTo(this.#warnings);\n }\n #ensureAcceptable() {\n if (!this.#accept.length) {\n return;\n }\n const unacceptable = [...this.files].filter(\n (file) => !this.#accept.some((type) => file.name.toLowerCase().endsWith(type.toLowerCase())),\n );\n\n if (unacceptable.length === 0) {\n return;\n }\n this.warning('unacceptablefiletype', this.#accept.join(', '));\n const dt = new DataTransfer();\n [...this.files]\n .filter((f) => !unacceptable.includes(f))\n .forEach((f) => {\n dt.items.add(f);\n });\n this._input.files = dt.files;\n }\n #ensureFilesCount() {\n if (this.#maxfiles === null) {\n return;\n }\n if (this.files.length <= this.#maxfiles) {\n return;\n }\n this.warning('maxfilesexceeded');\n this._input.files = new DataTransfer().files;\n }\n\n #ensureFileSizes() {\n if (this.#maxfilesize === null) {\n return;\n }\n const oversized = [...this.files].filter((file) => file.size > this.#maxfilesize);\n if (oversized.length === 0) {\n return;\n }\n this.warning('maxfilesizeexceeded', this.#formatByteSize(this.#maxfilesize));\n const dt = new DataTransfer();\n [...this.files]\n .filter((f) => !oversized.includes(f))\n .forEach((f) => {\n dt.items.add(f);\n });\n this._input.files = dt.files;\n }\n #ensureTotalSize() {\n if (this.#maxtotalsize === null) {\n return;\n }\n const totalSize = [...this.files].reduce((acc, file) => acc + file.size, 0);\n if (totalSize <= this.#maxtotalsize) {\n return;\n }\n this.warning('maxtotalsizeexceeded', this.#formatByteSize(this.#maxtotalsize));\n this._input.files = new DataTransfer().files;\n }\n get accept() {\n return this.#accept;\n }\n set accept(vs) {\n this._input.accept = vs.join(',');\n this.#accept = vs;\n this.reflect(() => {\n this.setAttribute('accept', this._input.accept);\n });\n }\n get multiple() {\n return this._input.multiple;\n }\n set multiple(v) {\n this._input.multiple = v;\n this.reflect(() => {\n Attributes.toggle(this, 'multiple', v);\n });\n }\n get files() {\n return this._input.files;\n }\n set files(vs) {\n this._input.files = vs;\n this.#update();\n }\n get file() {\n return this.files[0] ?? null;\n }\n set file(v) {\n const dt = new DataTransfer();\n if (v) {\n dt.items.add(v);\n }\n this.files = dt.files;\n }\n get value() {\n const names = Array.from(this._input.files).map((f) => f.name);\n return this.multiple ? names : (names[0] ?? null);\n }\n set value(v) {\n if (v) {\n return;\n }\n this.files = new DataTransfer().files;\n }\n get totalsize() {\n return Array.from(this.files).reduce((a, f) => a + f.size, 0);\n }\n #maxfiles;\n get maxfiles() {\n return this.#maxfiles;\n }\n set maxfiles(v) {\n this.#maxfiles = v;\n this.reflect(() => {\n Attributes.set(this, 'maxfiles', v);\n });\n }\n #maxfilesize;\n get maxfilesize() {\n return this.#maxfilesize;\n }\n set maxfilesize(v) {\n this.#maxfilesize = v;\n this.reflect(() => {\n Attributes.set(this, 'maxfilesize', v);\n });\n }\n #maxtotalsize;\n get maxtotalsize() {\n return this.#maxtotalsize;\n }\n set maxtotalsize(v) {\n this.#maxtotalsize = v;\n this.reflect(() => {\n Attributes.set(this, 'maxtotalsize', v);\n });\n }\n #useItemlist;\n get itemlist() {\n return this.#useItemlist;\n }\n set itemlist(v) {\n this.#useItemlist = v;\n this.reflect(() => {\n Attributes.toggle(this, 'itemlist', v);\n });\n }\n #useDropzone;\n get dropzone() {\n return this.#useDropzone;\n }\n set dropzone(v) {\n this.#useDropzone = v;\n this.reflect(() => {\n Attributes.toggle(this, 'dropzone', v);\n });\n }\n}\n\nexport { InputFile };\n","import { Attributes, Fragments, ParsedElement, registry, Templates } from '../../ftl/index.mjs';\nimport { VersionedLocalStorage } from '../storage.mjs';\nimport { Timing } from '../timing.mjs';\n\nclass RemoteLoader {\n #http;\n #url;\n #method;\n #responseMapper;\n #prefetch;\n #revision;\n #data;\n constructor({ http, url, method, responseMapper, prefetch, revision }) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n this.#responseMapper = responseMapper;\n this.#prefetch = prefetch;\n this.#revision = revision;\n this.#data = null;\n }\n async prefetch() {\n if (!this.#prefetch) {\n return;\n }\n await this.#ensureFetched();\n }\n async exact(...keys) {\n await this.#ensureFetched();\n return this.#data.filter(([k, v]) => keys.some((r) => r == k));\n }\n async load(needle) {\n await this.#ensureFetched();\n return this.#data.filter(([k, v]) => (v ?? '').toLowerCase().includes(needle?.toLowerCase()));\n }\n async reconfigureUrl(url) {\n this.#data = null;\n this.#url = url;\n }\n async #ensureFetched() {\n if (this.#data !== null) {\n return;\n }\n const raw = await RemoteLoader.#revisionedData(this.#http, this.#method, this.#url, this.#revision);\n this.#data = this.#responseMapper(raw);\n }\n static async #revisionedData(http, method, url, revision) {\n const storageKey = `${method}@${url}`;\n if (revision !== null) {\n const data = VersionedLocalStorage.load(storageKey, revision);\n if (data !== undefined) {\n return data;\n }\n }\n const data = await http.request(method, url).fetchJson();\n if (revision !== null) {\n VersionedLocalStorage.save(storageKey, revision, data);\n }\n return data;\n }\n}\n\nclass PartialRemoteLoader {\n #http;\n #url;\n #method;\n #responseMapper;\n constructor({ http, url, method, responseMapper }) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n this.#responseMapper = responseMapper;\n }\n async exact(...keys) {\n const response = await this.#http\n .request(this.#method, this.#url)\n .param('k', ...keys)\n .fetchJson();\n return this.#responseMapper(response);\n }\n async load(needle) {\n const response = await this.#http.request(this.#method, this.#url).param('s', needle).fetchJson();\n return this.#responseMapper(response);\n }\n}\n\nclass InMemoryLoader {\n #data;\n constructor(data) {\n this.#data = data;\n }\n update(data) {\n this.#data = data;\n }\n exact(...keys) {\n return this.#data.filter(([k, v]) => keys.some((r) => r == k));\n }\n load(needle) {\n return this.#data.filter(([k, v]) => (v ?? '').toLowerCase().includes(needle?.toLowerCase()));\n }\n}\n\nclass SelectLoader {\n static create(el, conf) {\n if (!el.hasAttribute('src')) {\n const els = Array.from(conf.options?.querySelectorAll('option') ?? []);\n const data = els.map((e) => {\n return [e.getAttribute('value') ?? e.innerText.trim(), e.innerText.trim()];\n });\n return new InMemoryLoader(data);\n }\n const http = registry.component('http-client');\n const responseMapper = SelectLoader.#responseMapperFrom(el);\n\n if ('chunked' === el.getAttribute('mode')) {\n return new PartialRemoteLoader({\n http,\n url: el.getAttribute('src'),\n method: el.getAttribute('method') ?? 'POST',\n responseMapper,\n });\n }\n return new RemoteLoader({\n http,\n url: el.getAttribute('src'),\n method: el.getAttribute('method') ?? 'POST',\n responseMapper,\n prefetch: el.hasAttribute('preload'),\n revision: el.getAttribute('revision'),\n });\n }\n static #responseMapperFrom(el) {\n if (el.hasAttribute('k-expr') && el.hasAttribute('l-expr')) {\n return (response) => {\n const rows = registry\n .evaluator()\n .withOverlay(response)\n .evaluateExpression(el.getAttribute('d-expr') ?? 'self');\n return rows.map((row) => {\n const evaluator = registry.evaluator().withOverlay(row);\n return [\n evaluator.evaluateExpression(el.getAttribute('k-expr')),\n evaluator.evaluateExpression(el.getAttribute('l-expr')),\n evaluator.evaluateExpression(el.getAttribute('m-expr') ?? 'self'),\n ];\n });\n };\n }\n if (el.hasAttribute('response-mapper')) {\n return registry.component(el.getAttribute('response-mapper'));\n }\n return (response) => response;\n }\n}\n\nclass Dropdown extends ParsedElement {\n static slots = true;\n static template = `\n <ful-spinner class=\"centered\" hidden></ful-spinner>\n <menu tabindex=\"-1\" role=\"listbox\" hidden></menu>\n `;\n static templates = {\n options: `\n <li data-tpl-each=\"self\" data-tpl-selected=\"index == 0\" data-tpl-value=\"index\" role=\"option\" data-tpl-aria-selected=\"index == 0 ? 'true' : 'false'\">\n {{ label }}\n </li>\n `,\n };\n #spinner;\n #menu;\n #optionstemplate;\n #options = new Map();\n render({ slots }) {\n const fragment = this.template().render();\n this.#optionstemplate = Fragments.isBlank(slots.default)\n ? this.template('options')\n : Templates.fromFragment(slots.default);\n this.#spinner = fragment.querySelector('ful-spinner');\n this.#menu = fragment.querySelector('menu');\n this.#menu.addEventListener('click', (evt) => {\n evt.stopPropagation();\n const li = evt.target.closest('li');\n if (!li) {\n this.hide();\n return;\n }\n this.#change(li);\n });\n this.replaceChildren(fragment);\n }\n #selected() {\n return this.#menu?.querySelector('[selected]') ?? this.#menu?.firstElementChild ?? null;\n }\n acceptSelection() {\n const selected = this.#selected();\n if (!selected) {\n return;\n }\n this.#change(selected);\n }\n update(values) {\n if (values === undefined) {\n throw new Error('null data');\n }\n this.#options = new Map(values.map((v, i) => [String(i), v]));\n const data = values.map(([key, label, metadata], index) => ({ index, key, label, metadata }));\n this.#optionstemplate.withOverlay(data).renderTo(this.#menu);\n }\n #change(target) {\n const index = target.getAttribute('value');\n const data = this.#options.get(index);\n this.hide();\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: { index, data },\n }),\n );\n }\n hide() {\n this.setAttribute('hidden', '');\n }\n get shown() {\n return !this.hasAttribute('hidden');\n }\n async show(loader) {\n this.removeAttribute('hidden');\n this.#menu.setAttribute('hidden', '');\n this.#spinner.removeAttribute('hidden');\n try {\n const data = await loader();\n this.update(data);\n } catch (e) {\n this.hide();\n throw e;\n } finally {\n this.#spinner.setAttribute('hidden', '');\n this.#menu.removeAttribute('hidden');\n }\n }\n async moveOrShow(forward, loader) {\n if (this.shown) {\n const selected = this.#selected();\n const candidate = selected?.[`${forward ? 'next' : 'previous'}ElementSibling`];\n if (selected && candidate) {\n selected.removeAttribute('selected');\n candidate.setAttribute('selected', '');\n candidate.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }\n return;\n }\n await this.show(loader);\n }\n}\n\nclass Select extends ParsedElement {\n static observed = ['value:csvm', 'readonly:presence', 'required:presence', 'itemlist:presence'];\n static slots = true;\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group flex-nowrap\" tabindex=\"-1\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <div class=\"ful-select-input-container\">\n <div class=\"ful-select-input\">\n <badges></badges>\n <input type=\"text\" form=\"\" role=\"combobox\" aria-autocomplete=\"list\" aria-haspopup=\"listbox\" aria-expanded=\"false\">\n </div>\n <ful-dropdown hidden popover=\"manual\">{{{{ slots.dropdown }}}}</ful-dropdown>\n </div>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-item-list></ful-item-list>\n <ful-field-error></ful-field-error>\n `;\n static templates = {\n items: `\n <ful-item data-tpl-each=\"entries\" data-tpl-var=\"entry\" data-tpl-data-key=\"entry[0]\">\n <div>{{ entry[1][0] }}</div>\n <button type=\"button\" class=\"btn btn-sm btn-outline-danger bi bi-x-lg\"></button>\n </ful-item>\n `,\n };\n static formAssociated = true;\n internals;\n #loader;\n #badges;\n #ddmenu;\n #input;\n #items;\n #multiple;\n #fieldError;\n #values = new Map();\n #token = 0;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'presentation';\n }\n async render({ slots, observed, disabled }) {\n const name = this.getAttribute('name');\n this.#loader = registry\n .component(this.getAttribute('loader') ?? 'loaders:select')\n .create(this, { options: slots.options });\n\n this.#multiple = this.hasAttribute('multiple');\n try {\n await this.#loader.prefetch?.();\n } catch (/** @type any */ e) {\n console.warn('failed to prefetch select options', this, 'reason:', e);\n }\n const fragment = this.template().withOverlay({ slots, name }).render();\n this.#input = fragment.querySelector('input');\n this.#items = fragment.querySelector('ful-item-list');\n Attributes.forward('input-', this, this.#input);\n this.#badges = fragment.querySelector('badges');\n\n this.value = observed.value;\n this.disabled = disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.itemlist = observed.itemlist;\n\n this.#ddmenu = fragment.querySelector('ful-dropdown');\n const label = fragment.querySelector('label');\n label.addEventListener('click', () => this.focus());\n this.#fieldError = fragment.querySelector('ful-field-error');\n this.#input.ariaDescribedByElements = [this.#fieldError];\n this.#input.ariaLabelledByElements = [label];\n const [dload, abortdload] = Timing.throttle(400, () => {\n this.#input.setAttribute('aria-expanded', 'true');\n this.#ddmenu.show(() => this.#loader.load(this.#input.value));\n });\n this.addEventListener('click', (/** @type any */ e) => {\n if (e.target.matches('input')) {\n return;\n }\n //badges and other chrome are not form controls, the guard must ask the\n //effective state\n if (this.matches(':disabled') || this.readonly) {\n return;\n }\n if (this.#ddmenu.shown) {\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n return;\n }\n this.#input.focus();\n dload();\n });\n this.#items.addEventListener('click', (e) => {\n e.stopPropagation();\n if (!e.target.closest('button')) {\n return;\n }\n if (this.matches(':disabled') || this.readonly) {\n return;\n }\n const idx = [...this.#items.children].indexOf(e.target.closest('ful-item'));\n if (idx === -1) {\n return;\n }\n this.#values.delete(Array.from(this.#values.keys())[idx]);\n this.#changed();\n this.#syncBadges();\n });\n this.#badges.addEventListener('click', (e) => {\n e.stopPropagation();\n if (this.matches(':disabled') || this.readonly) {\n return;\n }\n const idx = [...this.#badges.children].indexOf(e.target);\n if (idx === -1) {\n return;\n }\n this.#values.delete(Array.from(this.#values.keys())[idx]);\n this.#changed();\n this.#syncBadges();\n });\n this.#input.addEventListener('change', (e) => {\n e.stopPropagation();\n });\n this.#input.addEventListener('blur', (e) => {\n e.stopPropagation();\n if (e.relatedTarget && this.contains(e.relatedTarget)) {\n return;\n }\n abortdload();\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n this.#input.value = '';\n });\n this.#input.addEventListener('keydown', (e) => {\n if (this.matches(':disabled') || this.readonly) {\n return;\n }\n switch (e.code) {\n case 'ArrowUp': {\n e.preventDefault();\n this.#input.setAttribute('aria-expanded', 'true');\n this.#ddmenu.moveOrShow(false, () => this.#loader.load(this.#input.value));\n break;\n }\n case 'ArrowDown': {\n e.preventDefault();\n this.#input.setAttribute('aria-expanded', 'true');\n this.#ddmenu.moveOrShow(true, () => this.#loader.load(this.#input.value));\n break;\n }\n case 'Escape': {\n this.#input.setAttribute('aria-expanded', 'false'); \n this.#ddmenu.hide();\n break;\n }\n case 'Enter': {\n if (!this.#ddmenu.shown) {\n //nothing to accept: submit the form as ful-input does. the inner\n //input carries form=\"\" so it never submits one on its own\n this.#requestSubmit();\n return;\n }\n e.preventDefault();\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.acceptSelection();\n this.#input.value = '';\n break;\n }\n case 'Backspace': {\n //remove last if caret at position 0\n if (this.#values.size && this.#input.selectionStart === 0 && this.#input.selectionEnd === 0) {\n this.#values.delete(Array.from(this.#values.keys()).pop());\n this.#changed();\n this.#syncBadges();\n }\n break;\n }\n case 'Tab': {\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n abortdload();\n break;\n }\n }\n });\n this.#input.addEventListener('input', (e) => {\n e.stopPropagation();\n if (this.matches(':disabled') || this.readonly) {\n return;\n }\n dload();\n });\n this.#ddmenu.addEventListener('change', (e) => {\n e.stopPropagation();\n if (!this.#multiple) {\n this.#values.clear();\n }\n this.#values.set(this.#coerceKey(e.detail.data[0]), e.detail.data.slice(1));\n this.#changed();\n this.#syncBadges();\n this.#input.focus();\n this.#input.setAttribute('aria-expanded', 'false');\n this.#ddmenu.hide();\n this.#input.value = '';\n });\n this.replaceChildren(fragment);\n }\n async withLoader(fn) {\n return await fn(this.#loader);\n }\n #requestSubmit() {\n const form = this.internals.form;\n if (!form) {\n return;\n }\n const candidates = /** @type [HTMLButtonElement|HTMLInputElement] */ (\n Array.from(form.querySelectorAll('button:not(:disabled), input:not(:disabled)'))\n );\n form.requestSubmit(candidates.find((el) => el.type === 'submit'));\n }\n #changed() {\n const selection = [...this.#values.entries()].map((e) => ({\n key: e[0],\n label: e[1][0],\n metadata: e[1].slice(1),\n }));\n const value = this.#multiple ? selection : (selection[0] ?? null);\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: { value },\n }),\n );\n }\n #syncBadges() {\n const badges = Array.from(this.#values.entries()).map(([k, v]) => {\n const b = document.createElement('badge');\n b.setAttribute('role', 'button');\n b.setAttribute('value', k);\n b.innerText = v[0];\n return b;\n });\n this.#badges.replaceChildren();\n this.#badges.append(...badges);\n this.#items.replaceChildren();\n this.template('items').withOverlay({ entries: this.#values.entries() }).renderTo(this.#items);\n }\n /**\n * Coerces a key to the type declared by `k-type`. Keys reach the element from\n * both worlds: the `value` attribute is text, a loader returns whatever its\n * endpoint carries. One canonical type keeps the internal Map, which compares\n * keys strictly, consistent. A key that does not decode is left as it is.\n */\n #coerceKey(k) {\n switch (this.getAttribute('k-type')) {\n case 'number': {\n const n = k === '' ? Number.NaN : Number(k);\n return Number.isNaN(n) ? k : n;\n }\n case 'boolean': {\n if (k === true || k === 'true') {\n return true;\n }\n if (k === false || k === 'false') {\n return false;\n }\n return k;\n }\n default:\n return String(k);\n }\n }\n\n set value(vs) {\n //the csvm mapper yields [] for a missing multiple value, an empty string is\n //left alone: it is a usable key for an <option value=\"\">\n const keys = (vs == null ? [] : Array.isArray(vs) ? vs : [vs]).map((k) => this.#coerceKey(k));\n //the keys are known synchronously and are all `value` reads, so they are applied\n //now: only the labels need the loader, until then a key stands in for its own\n this.#values = new Map(keys.map((k) => [k, [k]]));\n this.#syncBadges();\n const token = ++this.#token;\n if (keys.length === 0) {\n return;\n }\n this.#resolve(keys, token);\n }\n /**\n * Resolves the labels of the assigned keys. A failed lookup is left to reject so\n * that it is reported like any other failure: the keys stay applied either way.\n */\n async #resolve(keys, token) {\n const entries = await this.#loader.exact(...keys);\n if (token !== this.#token) {\n //a newer assignment has been made in the meantime\n return;\n }\n //label the keys that are still selected: a removal made while the lookup was in\n //flight must not be undone by it, and a key the loader does not know is dropped\n //the loader keys are coerced too, so they line up with the assigned ones\n const resolved = new Map(entries.map((e) => [this.#coerceKey(e[0]), e.slice(1)]));\n for (const key of keys) {\n if (!this.#values.has(key)) {\n continue;\n }\n if (resolved.has(key)) {\n this.#values.set(key, resolved.get(key));\n } else {\n this.#values.delete(key);\n }\n }\n this.#syncBadges();\n }\n get value() {\n if (this.#multiple) {\n return [...this.#values.keys()];\n }\n return [...this.#values.keys()][0] ?? null;\n }\n get entry() {\n if (this.#multiple) {\n return [...this.#values.entries()];\n }\n return [...this.#values.entries()][0] ?? null;\n }\n get disabled() {\n //the claim only, like a native input: the effective state, claim or disabled\n //ancestry, is what :disabled matches\n return this.hasAttribute('disabled');\n }\n set disabled(d) {\n //the claim belongs to the author alone, nothing else ever writes it\n Attributes.toggle(this, 'disabled', d);\n //the inner control carries the claim as a native input would: a disabled\n //fieldset ancestry is left to the browser, which reaches the inner control\n //as a descendant of the fieldset and re-enables it on its own\n Attributes.toggle(this.#input, 'disabled', d);\n }\n get readonly() {\n return this.#input.readOnly;\n }\n set readonly(v) {\n this.#input.readOnly = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get required() {\n return this.#input.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this.#input, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n #useItemlist;\n get itemlist() {\n return this.#useItemlist;\n }\n set itemlist(v) {\n this.#useItemlist = v;\n this.reflect(() => {\n Attributes.toggle(this, 'itemlist', v);\n });\n }\n focus(options) {\n this.#input.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this.#fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this.#fieldError.innerText = error;\n }\n}\n\nexport { Dropdown, Select, SelectLoader };\n","import { Attributes, Fragments, ParsedElement } from '../../ftl/index.mjs';\n\nclass RadioGroup extends ParsedElement {\n static observed = ['value', 'readonly:presence', 'required:presence'];\n static slots = true;\n static template = `\n <fieldset>\n <legend class=\"form-label\">\n {{{{ slots.default }}}}\n </legend>\n <header data-tpl-if=\"slots.header\">\n {{{{ slots.header }}}}\n </header>\n <section>\n <div class=\"label-wrapper\" data-tpl-each=\"inputsAndLabels\" data-tpl-var=\"ial\">\n <label>\n {{{{ ial[0] }}}}\n <div>{{{{ ial[1] }}}}</div>\n </label>\n </div>\n </section>\n <ful-field-error></ful-field-error>\n <footer data-tpl-if=\"slots.footer\">\n {{{{ slots.footer }}}}\n </footer>\n </fieldset>\n `;\n static formAssociated = true;\n #fieldset;\n #fieldError;\n #firstRadio;\n #booleanType;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'radiogroup';\n }\n render({ slots, observed, disabled }) {\n const name = this.getAttribute('name') ?? Attributes.uid('ful-radiogroup');\n const radioEls = Array.from(slots.default.querySelectorAll('ful-radio'));\n const inputsAndLabels = radioEls.map((el) => {\n const input = document.createElement('input');\n input.setAttribute('type', 'radio');\n Attributes.forward('input-', this, input);\n Attributes.forward('', el, input);\n input.setAttribute('name', `${name}-ignore`);\n input.setAttribute('form', ``);\n input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n //change is not cancelable\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n const label = Fragments.fromChildNodes(el);\n return [input, label];\n });\n\n radioEls.forEach((el) => {\n el.remove();\n });\n this.template().withOverlay({ name, slots, inputsAndLabels }).renderTo(this);\n this.#fieldset = this.firstElementChild;\n this.disabled = disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.value = observed.value;\n this.#fieldError = this.querySelector('ful-field-error');\n this.ariaDescribedByElements = [this.#fieldError];\n this.#firstRadio = this.querySelector('input[type=radio]');\n this.#booleanType = this.getAttribute('type') === 'boolean';\n }\n get value() {\n /** @type {HTMLInputElement|null} */\n const checked = this.querySelector('input[type=radio]:checked');\n return checked ? (this.#booleanType ? checked.value === 'true' : checked.value) : null;\n }\n set value(value) {\n if (value === null) {\n this.querySelectorAll(`input[type=radio]`).forEach((el) => {\n /** @type {HTMLInputElement} */ (el).checked = false;\n });\n return;\n }\n /** @type {HTMLInputElement|null} */\n const el = this.querySelector(`input[type=radio][value=${CSS.escape(String(value))}]`);\n if (el) {\n el.checked = true;\n }\n }\n get readonly() {\n return this.#fieldset.inert;\n }\n set readonly(v) {\n this.#fieldset.inert = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get disabled() {\n //the claim only, like a native input: the effective state, claim or disabled\n //ancestry, is what :disabled matches\n return this.hasAttribute('disabled');\n }\n set disabled(d) {\n //the claim belongs to the author alone, nothing else ever writes it\n Attributes.toggle(this, 'disabled', d);\n //the group disables through its own fieldset, which carries the claim like\n //a native input would: a disabled outer ancestry is left to the browser,\n //which reaches the radios as descendants and re-enables them on its own\n this.#fieldset.disabled = d;\n }\n get required() {\n return this.#fieldset.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this.#fieldset, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n focus(options) {\n this.#firstRadio.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this.#fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this.#fieldError.innerText = error;\n }\n}\n\nexport { RadioGroup };\n","import { Attributes, ParsedElement } from '../../ftl/index.mjs';\n\nclass Checkbox extends ParsedElement {\n static observed = ['value:bool', 'readonly:presence', 'required:presence'];\n static slots = true;\n static template = `\n <div data-tpl-class=\"klass\">\n <div class=\"input-container\">\n <input class=\"form-check-input\" type=\"checkbox\" data-tpl-role=\"isSwitch ? 'switch' : false\" form=\"\" placeholder=\" \">\n </div>\n <div class=\"form-check-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #container;\n #input;\n #fieldError;\n static formAssociated = true;\n constructor() {\n super();\n this.internals = this.attachInternals();\n this.internals.role = 'presentation';\n }\n render({ slots, observed, disabled }) {\n const isSwitch = this.getAttribute('type') === 'switch';\n const klass = isSwitch ? 'form-check form-switch' : 'form-check';\n const fragment = this.template().withOverlay({ slots, klass, isSwitch }).render();\n this.#container = fragment.firstElementChild;\n this.#input = fragment.querySelector('input');\n Attributes.forward('input-', this, this.#input);\n this.disabled = disabled;\n this.readonly = observed.readonly;\n this.required = observed.required;\n this.value = observed.value;\n this.#input.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n const label = fragment.querySelector('label');\n label.addEventListener('click', () => {\n this.focus();\n //a label is not a form control, the guard must ask the effective state\n if (this.matches(':disabled') || this.readonly) {\n return;\n }\n this.value = !this.value;\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n });\n this.#fieldError = fragment.querySelector('ful-field-error');\n this.#input.ariaDescribedByElements = [this.#fieldError];\n this.#input.ariaLabelledByElements = [label];\n this.replaceChildren(fragment);\n }\n get value() {\n return this.#input.checked;\n }\n set value(value) {\n this.#input.checked = value;\n }\n get readonly() {\n return this.#container.inert;\n }\n set readonly(v) {\n this.#container.inert = v;\n this.reflect(() => {\n Attributes.toggle(this, 'readonly', v);\n });\n }\n get disabled() {\n //the claim only, like a native input: the effective state, claim or disabled\n //ancestry, is what :disabled matches\n return this.hasAttribute('disabled');\n }\n set disabled(d) {\n //the claim belongs to the author alone, nothing else ever writes it\n Attributes.toggle(this, 'disabled', d);\n //the inner control carries the claim as a native input would: a disabled\n //fieldset ancestry is left to the browser, which reaches the inner control\n //as a descendant of the fieldset and re-enables it on its own\n Attributes.toggle(this.#input, 'disabled', d);\n }\n get required() {\n return this.#input.getAttribute('aria-required') === 'true';\n }\n set required(d) {\n Attributes.set(this.#input, 'aria-required', d ? 'true' : null);\n this.reflect(() => {\n Attributes.toggle(this, 'required', d);\n });\n }\n focus(options) {\n this.#input.focus(options);\n }\n setCustomValidity(error) {\n if (!error) {\n this.internals.setValidity({});\n this.#fieldError.innerText = '';\n return;\n }\n this.internals.setValidity({ customError: true }, ' ');\n this.#fieldError.innerText = error;\n }\n}\n\nexport { Checkbox };\n","import { ParsedElement } from '../../ftl/index.mjs';\n\nclass Spinner extends ParsedElement {\n static slots = true;\n static template = `\n <div class=\"ful-spinner-wrapper\" role=\"status\">\n <div class=\"ful-spinner-text\">{{{{ slots.default }}}}</div>\n <div class=\"ful-spinner-icon\"></div>\n </div>\n `;\n render({ slots }) {\n this.template().withOverlay({ slots }).renderTo(this);\n }\n}\n\nexport { Spinner };\n","import { Attributes, Fragments, Nodes, ParsedElement, registry, Rendering } from '../../ftl/index.mjs';\n\nclass SortButton extends ParsedElement {\n static observed = ['order'];\n #order;\n render({ observed }) {\n const sorter = this.getAttribute('sorter');\n const orders = ['asc', 'desc', null];\n this.order = observed.order;\n this.addEventListener('click', () => {\n const nextOrder = orders[(orders.indexOf(this.order) + 1) % 3];\n this.dispatchEvent(\n new CustomEvent('sort-requested', {\n bubbles: true,\n cancelable: true,\n detail: {\n value: { sorter, order: nextOrder },\n },\n }),\n );\n });\n }\n\n get order() {\n return this.#order || null;\n }\n\n set order(value) {\n this.#order = value || null;\n this.reflect(() => {\n if (this.#order) {\n this.setAttribute('order', value);\n } else {\n this.removeAttribute('order');\n }\n });\n }\n}\n\nclass Pagination extends ParsedElement {\n static observed = ['total:number', 'current:number'];\n static l10n = {\n en: {\n showing: 'Page {0} of {1}',\n navigation: 'Page navigation',\n previous: 'Previous',\n next: 'Next',\n },\n it: {\n showing: 'Pagina {0} di {1}',\n navigation: 'Navigazione pagine',\n previous: 'Precedente',\n next: 'Successivo',\n },\n es: {\n showing: 'Página {0} de {1}',\n navigation: 'Navegación de páginas',\n previous: 'Anterior',\n next: 'Siguiente',\n },\n fr: {\n showing: 'Page {0} sur {1}',\n navigation: 'Navigation des pages',\n previous: 'Précédent',\n next: 'Suivant',\n },\n };\n static config = {\n prevIcon: 'bi bi-chevron-left',\n nextIcon: 'bi bi-chevron-right',\n reloadIcon: 'bi bi-arrow-clockwise',\n };\n static template = `\n <nav data-tpl-aria-label=\"#l10n:t('navigation')\" class=\"user-select-none\">\n <ul class=\"pagination\">\n <li class=\"page-item ms-auto me-2 pagination-index\"> {{ #l10n:t('showing', curr.label, total) }}</li>\n <li class=\"page-item me-2 reload\"><a role=\"button\"><i data-tpl-class=\"config.reloadIcon\"></i></a></li>\n <li class=\"page-item prev\">\n <a data-tpl-class=\"prev.enabled?'page-link':'page-link disabled'\" data-tpl-aria-label=\"#l10n:t('previous')\" role=\"button\" data-tpl-data-page=\"prev.index\">\n <i aria-hidden=\"true\" data-tpl-class=\"config.prevIcon\"></i>\n </a>\n </li>\n <li class=\"page-item\" data-tpl-each=\"pages\" data-tpl-var=\"page\">\n <a data-tpl-class=\"curr.index != page.index ? 'page-link': 'page-link disabled'\" role=\"button\" data-tpl-data-page=\"page.index\" >\n {{ page.label }}\n </a>\n </li>\n <li class=\"page-item next\">\n <a data-tpl-class=\"next.enabled?'page-link':'page-link disabled'\" data-tpl-aria-label=\"#l10n:t('next')\" role=\"button\" data-tpl-data-page=\"next.index\">\n <i aria-hidden=\"true\" data-tpl-class=\"config.nextIcon\"></i>\n </a>\n </li>\n </ul>\n </nav>\n `;\n #total = 0;\n #current = 0;\n render({ observed }) {\n this.total = observed.total ?? 0;\n this.current = observed.current ?? 0;\n this.addEventListener('click', (/** @type any */ evt) => {\n const el = evt.target.closest('a');\n if (!el || el.classList.contains('disabled')) {\n //a disabled link leads nowhere: the page it would ask for does not exist\n return;\n }\n this.dispatchEvent(\n new CustomEvent('page-requested', {\n bubbles: true,\n cancelable: true,\n detail: {\n value: Number(el.dataset.page ?? this.#current),\n },\n }),\n );\n });\n }\n update(current, total) {\n const maxRender = Number(this.getAttribute('pages') ?? '5');\n const hasPrev = current > 0;\n const hasNext = current + 1 < total;\n //a disabled arrow carries no page: there is nothing valid for it to point at\n const prev = { index: hasPrev ? current - 1 : null, enabled: hasPrev };\n const curr = { index: current, label: current + 1 };\n const next = { index: hasNext ? current + 1 : null, enabled: hasNext };\n //the window holds at most maxRender pages, centered on the current one and slid\n //back towards the end so it stays full on the last pages\n const rendered = Math.max(1, Math.min(maxRender, total));\n const first = Math.max(0, Math.min(current - Math.floor((rendered - 1) / 2), total - rendered));\n const pages = Array.from({ length: rendered }, (_, offset) => ({\n index: first + offset,\n label: first + offset + 1,\n }));\n this.template().withOverlay({ total, prev, curr, next, pages }).renderTo(this);\n }\n get total() {\n return this.#total;\n }\n set total(value) {\n this.#total = value;\n this.reflect(() => {\n this.setAttribute('total', String(value));\n this.update(this.#current ?? 0, this.#total);\n });\n }\n get current() {\n return this.#current;\n }\n set current(value) {\n this.#current = value;\n this.reflect(() => {\n this.setAttribute('current', String(value));\n this.update(this.#current, this.#total ?? 0);\n });\n }\n}\n\nclass TableSchemaParser {\n static parse(nodeOrFragment, template) {\n //nodeOrFragment is undefined when the slot is missing altogether\n const schema = nodeOrFragment ? Nodes.queryChildren(nodeOrFragment, 'schema') : null;\n if (!schema) {\n throw new Error('missing expected <schema>: ful-table needs a <template slot=\"schema\"> holding one');\n }\n const headersTr = document.createElement('tr');\n const rowsTr = document.createElement('tr');\n rowsTr.setAttribute('data-tpl-each', 'rows');\n for (const attr of schema.getAttributeNames()) {\n const value = schema.getAttribute(attr);\n headersTr.setAttribute(attr, value ?? '');\n rowsTr.setAttribute(attr, value ?? '');\n }\n const columns = Nodes.queryChildrenAll(schema, 'column');\n const sort =\n columns\n .filter((v) => v.hasAttribute('order'))\n .map((v) => ({ sorter: v.getAttribute('sorter'), order: v.getAttribute('order') }))[0] ?? null;\n for (var column of columns) {\n const maybeTitleTag = Nodes.queryChildren(column, 'title');\n const sorter = column.getAttribute('sorter');\n const order = column.getAttribute('order');\n const titleNode = maybeTitleTag ?? document.createTextNode(column.getAttribute('title') ?? '');\n maybeTitleTag?.remove();\n column.removeAttribute('sorter');\n column.removeAttribute('order');\n column.removeAttribute('title');\n const wrappedTitleNode =\n !sorter && !order\n ? titleNode\n : (() => {\n const fulSorter = document.createElement('ful-sorter');\n if (sorter) {\n fulSorter.setAttribute('sorter', sorter);\n }\n if (order) {\n fulSorter.setAttribute('order', order);\n }\n fulSorter.append(titleNode);\n return fulSorter;\n })();\n const th = document.createElement('th');\n const td = document.createElement('td');\n for (const attr of column.getAttributeNames()) {\n const value = column.getAttribute(attr);\n th.setAttribute(attr, value ?? '');\n td.setAttribute(attr, value ?? '');\n }\n th.append(wrappedTitleNode);\n td.append(...column.childNodes);\n headersTr.append(th);\n rowsTr.append(td);\n }\n\n return {\n headersTemplate: template\n .withOverlay({ inHeaders: true, inRows: false })\n .withFragment(Fragments.from(headersTr)),\n rowsTemplate: template.withOverlay({ inHeaders: false, inRows: true }).withFragment(Fragments.from(rowsTr)),\n sort: sort,\n length: columns.length,\n };\n }\n}\n\nclass InMemoryTableLoader {\n #data;\n constructor(data) {\n this.#data = data;\n }\n async load(pageRequest, sortRequest, filterRequest) {\n const begin = pageRequest.page * pageRequest.size;\n const end = begin + pageRequest.size;\n const page = this.#data.slice(begin, end);\n const totalElements = this.#data.length;\n return {\n data: page,\n size: totalElements\n };\n }\n update(data) {\n this.#data = data;\n }\n}\n\nclass RemoteTableLoader {\n #http;\n #url;\n #method;\n constructor(http, url, method) {\n this.#http = http;\n this.#url = url;\n this.#method = method;\n }\n async load(pageRequest, sortRequest, filterRequest) {\n const filters = Object.entries(filterRequest).filter(([k, v]) => v);\n return await this.#http\n .request(this.#method, this.#url)\n .param('page', pageRequest.page)\n .param('size', pageRequest.size)\n .param('sort', sortRequest ? `${sortRequest.sorter},${sortRequest.order}` : null)\n .param('filters', filters.length > 0 ? JSON.stringify(Object.fromEntries(filters)) : null)\n .fetchJson();\n }\n}\n\nclass TableLoader {\n static create(el, conf) {\n const url = el.getAttribute('src');\n if (url) {\n const http = registry.component('http-client');\n const method = el.getAttribute('method') ?? 'GET';\n return new RemoteTableLoader(http, url, method);\n }\n return new InMemoryTableLoader([]);\n }\n}\n\nclass Table extends ParsedElement {\n static slots = true;\n static l10n = {\n en: {\n initial: 'Start searching to see results.',\n error: 'Error while loading data:',\n nodata: 'No elements found.',\n },\n it: {\n initial: 'Avvia la ricerca per visualizzare i risultati.',\n error: 'Errore nel caricamento dei dati:',\n nodata: 'Nessun elemento trovato.',\n },\n es: {\n initial: 'Inicia la búsqueda para ver los resultados.',\n error: 'Error al cargar los datos:',\n nodata: 'No se encontraron elementos.',\n },\n fr: {\n initial: 'Lancez la recherche pour voir les résultats.',\n error: 'Erreur lors du chargement des données :',\n nodata: 'Aucun élément trouvé.',\n },\n };\n static config = {\n searchIcon: 'bi bi-search',\n };\n static template = `\n <ful-form data-tpl-if=\"slots.filters\">\n {{{{ slots.filters }}}}\n </ful-form>\n <div class=\"table-wrapper\">\n <table class=\"table\">\n <caption data-tpl-if=\"slots.caption\">{{{{ slots.caption }}}}</caption>\n <thead></thead>\n <tbody></tbody>\n <tbody data-ref=\"initial\">\n <tr>\n <td data-tpl-colspan=\"schema.length\">\n <div>\n <p data-tpl-if=\"config.searchIcon\"><i data-tpl-class=\"config.searchIcon\"></i></p>\n {{{ #l10n:t('initial') }}}\n </div>\n </td>\n </tr>\n </tbody>\n <tbody data-ref=\"loading\" hidden>\n <tr>\n <td data-tpl-colspan=\"schema.length\">\n <ful-spinner class=\"big\"></ful-spinner>\n </td>\n </tr>\n </tbody>\n <tbody data-ref=\"feedback\" hidden>\n <tr>\n <td data-tpl-colspan=\"schema.length\">\n <div class=\"alert alert-danger\">\n <p>{{ #l10n:t('error') }}</p>\n <div data-ref=\"feedback-error\"></div>\n </div>\n </td>\n </tr>\n </tbody>\n <tfoot data-tpl-if=\"slots.footer\">\n {{{{ slots.footer }}}}\n </tfoot>\n </table>\n </div>\n <ful-pagination current=\"0\" total=\"1\"></ful-pagination>\n `;\n static templates = {\n row: `\n <tr data-tpl-if=\"pageResponse.data.length == 0\">\n <td data-tpl-colspan=\"schema.length\" class=\"text-center align-middle p-4\">\n {{ #l10n:t('nodata') }}\n </td>\n </tr>\n {{{{ schema.rowsTemplate.withOverlay({'rows': pageResponse.data}).render() }}}}\n `,\n };\n #loader;\n #schema;\n #body;\n #loading;\n #noAutoload;\n #feedback;\n #paginator;\n #sorters;\n #latestRequest;\n async render({ slots, observed }) {\n const template = this.template();\n const schema = TableSchemaParser.parse(slots.schema, template);\n const fragment = template.withOverlay({ slots, schema }).render();\n const tableWrapper = /** @type HTMLTableElement */ (Nodes.queryChildren(fragment, '.table-wrapper'));\n const table = /** @type HTMLTableElement */ (tableWrapper.querySelector('table'));\n Attributes.forward('table-', this, table);\n this.#loader = registry.component(this.getAttribute('loader') ?? 'loaders:table').create(this);\n\n this.#schema = schema;\n this.#body = table.querySelector(':scope > tbody');\n this.#loading = table.querySelector(':scope > tbody[data-ref=loading]');\n this.#noAutoload = table.querySelector(':scope > tbody[data-ref=initial]');\n this.#feedback = table.querySelector(':scope > tbody[data-ref=feedback]');\n this.#paginator = Nodes.queryChildren(fragment, 'ful-pagination');\n this.replaceChildren(fragment);\n const thead = /** @type HTMLTableSectionElement */ (this.querySelector('thead'));\n schema.headersTemplate.renderTo(thead);\n this.#sorters = thead.querySelectorAll('ful-sorter');\n await Rendering.waitForChildren(this);\n\n const maybeForm = /** @type any */ (Nodes.queryChildren(this, 'ful-form'));\n this.#latestRequest = {\n pageRequest: {\n page: 0,\n size: this.getAttribute('page-size') ? Number(this.getAttribute('page-size')) : 10,\n },\n sortRequest: schema.sort,\n filterRequest: maybeForm?.values ?? {},\n };\n maybeForm?.addEventListener('submit:success', async (evt) => {\n await this.load(\n {\n page: 0,\n size: this.#latestRequest.pageRequest.size,\n },\n this.#latestRequest.sortRequest,\n evt.detail.request,\n );\n });\n this.addEventListener('page-requested', async (/** @type any */ e) => {\n await this.load(\n {\n page: e.detail.value,\n size: this.#latestRequest.pageRequest.size,\n },\n this.#latestRequest.sortRequest,\n this.#latestRequest.filterRequest,\n );\n });\n this.addEventListener('sort-requested', async (/** @type any */ e) => {\n const sortRequest = e.detail.value.order ? e.detail.value : null;\n await this.load(this.#latestRequest.pageRequest, sortRequest, this.#latestRequest.filterRequest);\n this.#sorters.forEach((s) => {\n s.order = null;\n });\n e.target.order = e.detail.value.order;\n });\n if (this.hasAttribute('autoload')) {\n //not awaited: the first load must not hold up the upgrade, and a loader that\n //fails or never answers must not keep ftl:ready from firing for the page.\n //load renders its own error state and lets the failure reject, so it is reported\n this.reload();\n }\n }\n\n async reload() {\n return await this.load(\n this.#latestRequest.pageRequest,\n this.#latestRequest.sortRequest,\n this.#latestRequest.filterRequest,\n );\n }\n async load(pageRequest, sortRequest, filterRequest) {\n this.#body.replaceChildren();\n this.#loading.removeAttribute('hidden');\n this.#feedback.setAttribute('hidden', '');\n this.#noAutoload.setAttribute('hidden', '');\n try {\n const pageResponse = await this.#loader.load(pageRequest, sortRequest, filterRequest);\n this.#latestRequest = { pageRequest, sortRequest, filterRequest };\n this.#update(pageRequest, sortRequest, filterRequest, pageResponse);\n } catch (/** @type any */ error) {\n this.#loading.setAttribute('hidden', '');\n this.#feedback.removeAttribute('hidden');\n if (!error.problems) {\n this.#feedback.querySelector('[data-ref=feedback-error]').textContent = error;\n } else {\n this.#feedback.querySelector('[data-ref=feedback-error]').textContent = error.problems.map(\n (p) => `${p.reason}`,\n );\n }\n throw error;\n }\n }\n async withLoader(fn) {\n return await fn(this.#loader);\n }\n async resetWithFilter(filterRequest) {\n return await this.load(\n {\n page: 0,\n size: this.#latestRequest.pageRequest.size,\n },\n this.#latestRequest.sortRequest,\n filterRequest,\n );\n }\n #update(pageRequest, sortRequest, filterRequest, pageResponse) {\n this.#loading.setAttribute('hidden', '');\n this.#body.replaceChildren(\n this.template('row')\n .withOverlay({\n schema: this.#schema,\n pageRequest,\n filterRequest,\n pageResponse,\n })\n .render(),\n );\n this.#paginator.current = pageRequest.page;\n this.#paginator.total = Math.ceil(pageResponse.size / pageRequest.size);\n }\n}\n\nexport { TableLoader, SortButton, Table, TableSchemaParser, Pagination };\n","import { Attributes } from '../../ftl/index.mjs';\nimport { Instant } from './temporals.mjs';\nimport { Input } from './input.mjs';\n\nclass InstantFilter extends Input {\n static observed = ['value:json', 'readonly:presence', 'required:presence', 'placeholder'];\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <button data-ref=\"operator\" class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" value=\"LTE\" form=\"\">≼</button>\n <ul class=\"dropdown-menu\">\n <li><a class=\"dropdown-item\" role=\"button\" value=\"EQ\">=</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"NEQ\">≠</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LT\">≺</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GT\">≻</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LTE\">≼</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GTE\">≽</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"BETWEEN\">↔</a></li>\n </ul>\n <input data-ref=\"value1\" type=\"datetime-local\" class=\"form-control\" form=\"\">\n <input data-ref=\"value2\" type=\"datetime-local\" class=\"form-control\" form=\"\" hidden>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #operator;\n #value1;\n #value2;\n render(conf) {\n super.render({ ...conf, skipObservedSetup: true });\n this.#operator = this.querySelector('[data-ref=operator]');\n this.#value1 = this.querySelector('[data-ref=value1]');\n this.#value2 = this.querySelector('[data-ref=value2]');\n //Input.render only re-dispatches changes coming from the first operand\n this.#value2.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.#notifyChange();\n });\n\n this.disabled = conf.disabled;\n this.readonly = conf.observed.readonly;\n this.required = conf.observed.required;\n this.placeholder = conf.observed.placeholder;\n this.value = conf.observed.value;\n\n this.addEventListener('click', (evt) => {\n const target = /** @type HTMLElement */ (evt.target);\n if (!target.matches('ul > li > a')) {\n return;\n }\n const btn = /** @type HTMLButtonElement */ (target.closest('ul')?.previousElementSibling);\n const value = /** @type String */ (target.getAttribute('value'));\n const previous = btn.getAttribute('value');\n Attributes.toggle(this.#value2, 'hidden', value !== 'BETWEEN');\n btn.setAttribute('value', value);\n btn.innerHTML = target.innerHTML;\n if (previous !== value) {\n this.#notifyChange();\n }\n });\n }\n\n get value() {\n const operator = this.#operator.getAttribute('value');\n const values = operator === 'BETWEEN' ? [this.#value1.value, this.#value2.value] : [this.#value1.value];\n return values.some((v) => v === '') ? undefined : [operator, ...values.map((v) => new Date(v).toISOString())];\n }\n set value(v) {\n if (v == null) {\n this.#value1.value = '';\n this.#value2.value = '';\n return;\n }\n const [operator, ...values] = v;\n this.#showOperator(operator);\n this.#value1.value = values[0] ? Instant.isoToLocal(values[0]) : values[0];\n this.#value2.value = values[1] ? Instant.isoToLocal(values[1]) : values[1];\n }\n #showOperator(operator) {\n this.#operator.setAttribute('value', operator);\n const items = Array.from(this.#operator.nextElementSibling?.querySelectorAll('li > a[value]') ?? []);\n const item = items.find((a) => a.getAttribute('value') === operator);\n if (item) {\n this.#operator.innerHTML = item.innerHTML;\n }\n Attributes.toggle(this.#value2, 'hidden', operator !== 'BETWEEN');\n }\n #notifyChange() {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n }\n get readonly() {\n return super.readonly;\n }\n set readonly(v) {\n this.#value2.readOnly = v;\n super.readonly = v;\n }\n get disabled() {\n return super.disabled;\n }\n set disabled(d) {\n //the claim and the first operand are the base's, the second operand mirrors\n //the claim like the first one does\n super.disabled = d;\n Attributes.toggle(this.#value2, 'disabled', d);\n }\n}\n\nclass LocalDateFilter extends Input {\n static observed = ['value:json', 'readonly:presence', 'required:presence', 'placeholder'];\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <button data-ref=\"operator\" class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" value=\"EQ\" form=\"\">=</button>\n <ul class=\"dropdown-menu\">\n <li><a class=\"dropdown-item\" role=\"button\" value=\"EQ\">=</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"NEQ\">≠</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LT\">≺</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GT\">≻</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"LTE\">≼</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"GTE\">≽</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"BETWEEN\">↔</a></li>\n </ul>\n <input data-ref=\"value1\" type=\"date\" class=\"form-control\" form=\"\">\n <input data-ref=\"value2\" type=\"date\" class=\"form-control\" form=\"\" hidden>\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #operator;\n #value1;\n #value2;\n render(conf) {\n super.render({ ...conf, skipObservedSetup: true });\n\n this.#operator = this.querySelector('[data-ref=operator]');\n this.#value1 = this.querySelector('[data-ref=value1]');\n this.#value2 = this.querySelector('[data-ref=value2]');\n //Input.render only re-dispatches changes coming from the first operand\n this.#value2.addEventListener('change', (evt) => {\n evt.stopPropagation();\n this.#notifyChange();\n });\n\n this.disabled = conf.disabled;\n this.readonly = conf.observed.readonly;\n this.required = conf.observed.required;\n this.placeholder = conf.observed.placeholder;\n this.value = conf.observed.value;\n\n this.addEventListener('click', (evt) => {\n const target = /** @type HTMLElement */ (evt.target);\n if (!target.matches('ul > li > a')) {\n return;\n }\n const btn = /** @type HTMLButtonElement */ (target.closest('ul')?.previousElementSibling);\n const value = /** @type String */ (target.getAttribute('value'));\n const previous = btn.getAttribute('value');\n Attributes.toggle(this.#value2, 'hidden', value !== 'BETWEEN');\n btn.setAttribute('value', value);\n btn.innerHTML = target.innerHTML;\n if (previous !== value) {\n this.#notifyChange();\n }\n });\n }\n get value() {\n const operator = this.#operator.getAttribute('value');\n const values = operator === 'BETWEEN' ? [this.#value1.value, this.#value2.value] : [this.#value1.value];\n return values.some((v) => v === '') ? undefined : [operator, ...values];\n }\n set value(v) {\n if (v == null) {\n this.#value1.value = '';\n this.#value2.value = '';\n return;\n }\n const [operator, ...values] = v;\n this.#showOperator(operator);\n this.#value1.value = values[0];\n this.#value2.value = values[1];\n }\n #showOperator(operator) {\n this.#operator.setAttribute('value', operator);\n const items = Array.from(this.#operator.nextElementSibling?.querySelectorAll('li > a[value]') ?? []);\n const item = items.find((a) => a.getAttribute('value') === operator);\n if (item) {\n this.#operator.innerHTML = item.innerHTML;\n }\n Attributes.toggle(this.#value2, 'hidden', operator !== 'BETWEEN');\n }\n #notifyChange() {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n }\n get readonly() {\n return super.readonly;\n }\n set readonly(v) {\n this.#value2.readOnly = v;\n super.readonly = v;\n }\n get disabled() {\n return super.disabled;\n }\n set disabled(d) {\n //the claim and the first operand are the base's, the second operand mirrors\n //the claim like the first one does\n super.disabled = d;\n Attributes.toggle(this.#value2, 'disabled', d);\n }\n}\n\nclass TextFilter extends Input {\n static observed = ['value:json', 'readonly:presence', 'required:presence', 'placeholder'];\n static template = `\n <div class=\"form-label\">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </div>\n <div class=\"input-group\">\n <span data-tpl-if=\"slots.ibefore\" class=\"input-group-text\">{{{{ slots.ibefore }}}}</span>\n {{{{ slots.before }}}}\n <button data-ref=\"operator\" class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" value=\"CONTAINS\" form=\"\">…a…</button>\n <ul class=\"dropdown-menu\">\n <li><a class=\"dropdown-item\" role=\"button\" value=\"CONTAINS\">…a…</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"STARTS_WITH\">a…</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"ENDS_WITH\">…a</a></li>\n <li><a class=\"dropdown-item\" role=\"button\" value=\"EQ\">=</a></li>\n </ul>\n <input data-ref=\"value\" type=\"text\" class=\"form-control\" form=\"\">\n {{{{ slots.after }}}}\n <span data-tpl-if=\"slots.iafter\" class=\"input-group-text\">{{{{ slots.iafter }}}}</span>\n </div>\n <ful-field-error></ful-field-error>\n `;\n #operator;\n #value;\n //the sensitivity has no control of its own: it is carried through from whoever set the value\n #sensitivity = 'IGNORE_CASE';\n render(conf) {\n super.render({ ...conf, skipObservedSetup: true });\n\n this.#operator = this.querySelector('[data-ref=operator]');\n this.#value = this.querySelector('[data-ref=value]');\n\n this.disabled = conf.disabled;\n this.readonly = conf.observed.readonly;\n this.required = conf.observed.required;\n this.placeholder = conf.observed.placeholder;\n this.value = conf.observed.value;\n\n this.addEventListener('click', (evt) => {\n const target = /** @type HTMLElement */ (evt.target);\n if (!target.matches('ul > li > a')) {\n return;\n }\n const btn = /** @type HTMLButtonElement */ (target.closest('ul')?.previousElementSibling);\n const value = /** @type String */ (target.getAttribute('value'));\n const previous = btn.getAttribute('value');\n btn.setAttribute('value', value);\n btn.innerHTML = target.innerHTML;\n if (previous !== value) {\n this.#notifyChange();\n }\n });\n }\n get value() {\n const operator = this.#operator.getAttribute('value');\n return this.#value.value === '' ? undefined : [operator, this.#sensitivity, this.#value.value];\n }\n set value(v) {\n if (v == null) {\n this.#value.value = '';\n return;\n }\n const [operator, sensitivity, value] = v;\n this.#showOperator(operator);\n this.#sensitivity = sensitivity ?? 'IGNORE_CASE';\n this.#value.value = value;\n }\n #showOperator(operator) {\n this.#operator.setAttribute('value', operator);\n const items = Array.from(this.#operator.nextElementSibling?.querySelectorAll('li > a[value]') ?? []);\n const item = items.find((a) => a.getAttribute('value') === operator);\n if (item) {\n this.#operator.innerHTML = item.innerHTML;\n }\n }\n #notifyChange() {\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: false,\n detail: {\n value: this.value,\n },\n }),\n );\n }\n}\n\nexport { InstantFilter, LocalDateFilter, TextFilter };\n","class LocalizationModule {\n static t(k, ...args) {\n //@ts-expect-error l10n and language come from the element class and the data stack\n const format = this.l10n?.[this.language]?.[k] ?? this.l10n?.en?.[k] ?? k;\n if (args.length === 0) {\n return format;\n }\n return format.replace(/{(\\d+)}/g, (m, is) => {\n return args[Number(is)];\n });\n }\n static tl(k, args = []) {\n return LocalizationModule.t.apply(this, [k, ...args]);\n }\n}\n\nexport { LocalizationModule };\n","import { HttpClient } from '../../httpc/index.mjs';\nimport { Checkbox } from './checkbox.mjs';\nimport { LocalDate, Instant, InputLocalDate, InputLocalTime, InputInstant } from './temporals.mjs';\nimport { InstantFilter, LocalDateFilter, TextFilter } from './filters.mjs';\nimport { FormLoader, Form } from './form.mjs';\nimport { Input } from './input.mjs';\nimport { InputFile } from './files.mjs';\nimport { RadioGroup } from './radio.mjs';\nimport { SelectLoader, Dropdown, Select } from './select.mjs';\nimport { Spinner } from './spinner.mjs';\nimport { TableLoader, Table, Pagination, SortButton } from './table.mjs';\nimport { LocalizationModule } from './l10n.mjs';\n\nclass Plugin {\n configure(registry) {\n const httpClient = HttpClient.builder().withCsrfToken().withRedirectOnUnauthorized('/').build();\n registry\n .defineModule('l10n', LocalizationModule)\n .defineComponent('http-client', httpClient)\n .defineElement('ful-spinner', Spinner)\n .defineElement('ful-form', Form)\n .defineElement('ful-checkbox', Checkbox)\n .defineElement('ful-input', Input)\n .defineElement('ful-input-file', InputFile)\n .defineElement('ful-local-date', LocalDate)\n .defineElement('ful-instant', Instant)\n .defineElement('ful-input-local-date', InputLocalDate)\n .defineElement('ful-input-local-time', InputLocalTime)\n .defineElement('ful-input-instant', InputInstant)\n .defineElement('ful-radio-group', RadioGroup)\n .defineElement('ful-table', Table)\n .defineElement('ful-pagination', Pagination)\n .defineElement('ful-sorter', SortButton)\n .defineElement('ful-filter-instant', InstantFilter)\n .defineElement('ful-filter-local-date', LocalDateFilter)\n .defineElement('ful-filter-text', TextFilter)\n .defineElement('ful-select', Select)\n .defineElement('ful-dropdown', Dropdown)\n .defineComponent('loaders:select', SelectLoader)\n .defineComponent('loaders:form', FormLoader)\n .defineComponent('loaders:table', TableLoader)\n .defineOverlay({\n language: navigator?.language?.split('-')?.[0] ?? 'en',\n });\n }\n}\n\nexport { Plugin };\n","import * as ftl from './ftl/index.mjs';\nimport * as httpc from './httpc/index.mjs';\nimport * as ful from './ful/index.mjs';\n\nif (typeof window !== 'undefined') {\n // biome-ignore-start lint/complexity/useLiteralKeys: checkJs rejects unknown properties on Window\n window['ftl'] = ftl;\n window['httpc'] = httpc;\n window['ful'] = ful;\n // biome-ignore-end lint/complexity/useLiteralKeys: checkJs rejects unknown properties on Window\n}\n\nexport * from './ftl/index.mjs';\nexport * from './httpc/index.mjs';\nexport * from './ful/index.mjs';\n"],"names":["TemplatedRoot","TemplatedExpression","value","BeginNode","EndNode","BeginHtml","EndHtml","BeginText","EndText","TemplatedText","parts","c","ExpressionRoot","r","TernaryExpression","cond","ifTrue","ifFalse","ElvisExpression","NullCoalescingExpression","lhs","rhs","OrExpression","head","tail","AndExpression","EqExpression","op","RelExpression","NotExpression","expr","Access","AccessExpression","AccessMember","AccessSubscript","AccessMethodCall","h","t","GroupingExpression","e","ModuleFunctionCall","fn","AnyLiteral","BooleanLiteral","NullLiteral","UndefinedLiteral","NumberLiteral","StringLiteral","TemplateStringExpression","TemplateStringLiteral","char","ArrayLiteral","DictLiteral","ModuleFunction","module","v","Symbol","s","EqualityOp","RelationalOp","_","parse"],"mappings":"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"}
|