@optionfactory/fml 9.0.0-rc1 → 9.0.0-rc10

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.
@@ -1,2 +1,2 @@
1
- var fml=function(e){"use strict";class t{#e;#t=new Map;constructor(e){this.#e=e}getOrCompute(e,t){if(this.#t.has(e))return this.#t.get(e);const s=t(e);return this.#t.size>=this.#e&&this.#t.delete(this.#t.keys().next().value),this.#t.set(e,s),s}get size(){return this.#t.size}}const s={ter:Symbol("ternary"),elv:Symbol("elvis"),nullc:Symbol("null-coalescence"),or:Symbol("or"),and:Symbol("and"),eq:Symbol("eq"),cmp:Symbol("cmp"),not:Symbol("not"),access:Symbol("access"),member:Symbol("access-member"),subscript:Symbol("access-subscript"),method:Symbol("access-method-call"),call:Symbol("module-function-call"),tstring:Symbol("tstring"),literal:Symbol("literal"),array:Symbol("array-literal"),dict:Symbol("dict-literal"),function:Symbol("module-function"),symbol:Symbol("symbol"),templated:{ten:Symbol("templated-node"),teh:Symbol("templated-html"),tet:Symbol("templated-text"),tel:Symbol("templated-literal")},dom:{t:Symbol("text"),h:Symbol("html"),n:Symbol("node")}},r=new Map([["true",!0],["false",!1],["null",null],["undefined",void 0]]);class i extends SyntaxError{constructor(e,t,s,r){super(e),this.expected=t,this.found=s,this.location=r,this.name="SyntaxError"}format(e){let t="Error: "+this.message;if(this.location){let s=null;const r=e.find(e=>e.source===this.location.source);r&&(s=r.text.split(/\r\n|\n|\r/g));const i=this.location.start,n=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(i):i,a=this.location.source+":"+n.line+":"+n.column;if(s){const e=this.location.end,r="".padEnd(n.line.toString().length," "),o=s[i.line-1],l=(i.line===e.line?e.column:o.length+1)-i.column||1;t+="\n --\x3e "+a+"\n"+r+" |\n"+n.line+" | "+o+"\n"+r+" | "+"".padEnd(i.column-1," ")+"".padEnd(l,"^")}else t+="\n at "+a}return t}static buildMessage(e,t){function s(e){return e.codePointAt(0).toString(16).toUpperCase()}const r=Object.prototype.hasOwnProperty.call(RegExp.prototype,"unicode")?new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]","gu"):null;function i(e){return r?e.replace(r,e=>"\\u{"+s(e)+"}"):e}function n(e){return i(e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,e=>"\\x0"+s(e)).replace(/[\x10-\x1F\x7F-\x9F]/g,e=>"\\x"+s(e)))}function a(e){return i(e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,e=>"\\x0"+s(e)).replace(/[\x10-\x1F\x7F-\x9F]/g,e=>"\\x"+s(e)))}const o={literal:e=>'"'+n(e.text)+'"',class(e){const t=e.parts.map(e=>Array.isArray(e)?a(e[0])+"-"+a(e[1]):a(e));return"["+(e.inverted?"^":"")+t.join("")+"]"+(e.unicode?"u":"")},any:()=>"any character",end:()=>"end of input",other:e=>e.description};function l(e){return o[e.type](e)}return"Expected "+function(e){const t=e.map(l);if(t.sort(),t.length>0){let e=1;for(let s=1;s<t.length;s++)t[s-1]!==t[s]&&(t[e]=t[s],e++);t.length=e}switch(t.length){case 1:return t[0];case 2:return t[0]+" or "+t[1];default:return t.slice(0,-1).join(", ")+", or "+t[t.length-1]}}(e)+" but "+function(e){return e?'"'+n(e)+'"':"end of input"}(t)+" found."}}const n=(e,t)=>{if("self"===t)return e[e.length-1];for(let s=e.length-1;s>=0;s--){const r=e[s];if(null!=r&&("object"==typeof r||"function"==typeof r)&&t in r)return r[t]}};class a{#s;#r;constructor(e,t){this.#s=e,this.#r=t}#i(e){return n(this.#r,e)}#n(e,t){const r=0===t?e.lhs:e.rhs[t-1];return r.type===s.symbol?r.value:r.type===s.member?r.rhs:null}#a;#o(){return this.#a||(this.#a=new Proxy(this.#r,{get:(e,t)=>this.#i(t)})),this.#a}[s.and](e){return this.visit(e.lhs)&&this.visit(e.rhs)}[s.or](e){return this.visit(e.lhs)||this.visit(e.rhs)}[s.nullc](e){const t=this.visit(e.lhs);return null!=t?t:this.visit(e.rhs)}[s.not](e){return!this.visit(e.expr)}[s.eq](e){const t=this.visit(e.lhs)===this.visit(e.rhs);return"=="===e.op?t:!t}[s.cmp](e){const t=this.visit(e.lhs),s=this.visit(e.rhs);switch(e.op){case">":return t>s;case"<":return t<s;case">=":return t>=s;case"<=":return t<=s;default:throw new Error(`unknown cmp op ${e.op}`)}}[s.call](e){const t=e.value,s=null===t.module?this.#s:this.#s?.[t.module];if(!s)throw new Error(`Module "${t.module}" not found`);const r=s[t.value];if(!r)throw new Error(`Function "#${null===t.module?"":`${t.module}:`}${t.value}" not found`);const i=e.args.map(e=>this.visit(e));return r.apply(this.#o(),i)}[s.literal](e){return e.value}[s.tstring](e){let t="";const s=e.parts;for(let e=0,r=s.length;e<r;e++){const r=this.visit(s[e]);null!=r&&(t+=r)}return t}[s.symbol](e){return this.#i(e.value)}[s.dict](e){return Object.fromEntries(e.value.map(e=>[this.visit(e[0]),this.visit(e[1])]))}[s.array](e){return e.value.map(e=>this.visit(e))}[s.ter](e){return this.visit(e.cond)?this.visit(e.ifTrue):this.visit(e.ifFalse)}[s.elv](e){return this.visit(e.cond)||this.visit(e.ifFalse)}[s.access](e){let t,r=this.visit(e.lhs);for(let i=0;i!==e.rhs.length;++i){const n=e.rhs[i];if(n.ns&&null==r)return;let a;switch(n.type){case s.member:a=r[n.rhs];break;case s.subscript:a=r[this.visit(n.rhs)];break;case s.method:{if(!r){const t=this.#n(e,i);throw new Error(null===t?"Method missing":`Method missing "${t}"`)}const s=n.args.map(e=>this.visit(e));a=r.apply(t,s);break}}t=r,r=a}return r}visit(e,...t){return this[e.type](e,...t)}visitRoot(e,t){return t?e.map(e=>{switch(e.type){case s.templated.tel:return{type:s.dom.t,value:e.value};case s.templated.tet:return{type:s.dom.t,value:this.visit(e.value)};case s.templated.teh:return{type:s.dom.h,value:this.visit(e.value)};case s.templated.ten:return{type:s.dom.n,value:this.visit(e.value)};default:throw new Error(`unknown node type ${e.type.toString()}`)}}):this.visit(e)}}class o{static MODE_EXPRESSION=Symbol("MODE_EXPRESSION");static MODE_TEMPLATED=Symbol("MODE_TEMPLATED");static#l=new t(1e3);static parse(e,t){const n=t?.toString()+e;return this.#l.getOrCompute(n,()=>function(e,t){const n={},a=(t=void 0!==t?t:{}).grammarSource,o={TemplatedRoot:mt,ExpressionRoot:bt};let l=mt;const u="{{{{",c="}}}}",d="{{{",h="}}}",p="{{",f="}}",m="\\",g="{",b="?",v=":",y="?:",w="??",E="||",x="&&",A="!",S="?.",T=".",C="[",_="]",O="(",q=",",R=")",N="-",P="'",L='"',k="`",z="}",M="#",D="==",F="!=",I=">=",$=">",B="<=",j="<",H=/^[^\\{]/,W=/^[0-9]/,V=/^[^']/,U=/^[^"]/,G=/^[^\\`{]/,Q=/^[a-zA-Z$_]/,K=/^[a-zA-Z$_0-9]/,J=/^[ \t\n\r]/,X=ut("{{{{",!1),Y=ut("}}}}",!1),Z=ut("{{{",!1),ee=ut("}}}",!1),te=ut("{{",!1),se=ut("}}",!1),re=ct(["\\","{"],!0,!1,!1),ie=ut("\\",!1),ne={type:"any"},ae=ut("{",!1),oe=ut("?",!1),le=ut(":",!1),ue=ut("?:",!1),ce=ut("??",!1),de=ut("||",!1),he=ut("&&",!1),pe=ut("!",!1),fe=dt("member"),me=ut("?.",!1),ge=ut(".",!1),be=dt("subscript"),ve=ut("[",!1),ye=ut("]",!1),we=dt("method-call"),Ee=ut("(",!1),xe=ut(",",!1),Ae=ut(")",!1),Se=dt("module-function-call"),Te=dt("number-literal"),Ce=ut("-",!1),_e=ct([["0","9"]],!1,!1,!1),Oe=dt("string-literal"),qe=ut("'",!1),Re=ct(["'"],!0,!1,!1),Ne=ut('"',!1),Pe=ct(['"'],!0,!1,!1),Le=ut("`",!1),ke=dt("tstring-expression"),ze=ut("}",!1),Me=dt("tstring-literal"),De=ct(["\\","`","{"],!0,!1,!1),Fe=dt("array-literal"),Ie=dt("dict-literal"),$e=dt("module-function"),Be=ut("#",!1),je=ct([["a","z"],["A","Z"],"$","_"],!1,!1,!1),He=ct([["a","z"],["A","Z"],"$","_",["0","9"]],!1,!1,!1),We=dt("identifier-or-keyword"),Ve=ut("==",!1),Ue=ut("!=",!1),Ge=ut(">=",!1),Qe=ut(">",!1),Ke=ut("<=",!1),Je=ut("<",!1),Xe=ct([" ","\t","\n","\r"],!1,!1,!1);function Ye(e){return e}function Ze(e,t,s){return{op:t,rhs:s}}function et(e,t,s){return{op:t,rhs:s}}function tt(e){return e}let st=0|t.peg$currPos;const rt=[{line:1,column:1}];let it,nt=st,at=t.peg$maxFailExpected||[],ot=0|t.peg$silentFails,lt={};if(t.startRule){if(!(t.startRule in o))throw new Error("Can't start parsing from rule \""+t.startRule+'".');l=o[t.startRule]}function ut(e,t){return{type:"literal",text:e,ignoreCase:t}}function ct(e,t,s,r){return{type:"class",parts:e,inverted:t,ignoreCase:s,unicode:r}}function dt(e){return{type:"other",description:e}}function ht(t){let s,r=rt[t];if(r)return r;if(t>=rt.length)s=rt.length-1;else for(s=t;!rt[--s];);for(r=rt[s],r={line:r.line,column:r.column};s<t;)10===e.charCodeAt(s)?(r.line++,r.column=1):r.column++,s++;return rt[t]=r,r}function pt(e,t,s){const r=ht(e),i=ht(t);return{source:a,start:{offset:e,line:r.line,column:r.column},end:{offset:t,line:i.line,column:i.column}}}function ft(e){st<nt||(st>nt&&(nt=st,at=[]),at.push(e))}function mt(){let e,t;const s=38*st+0,r=lt[s];if(r)return st=r.nextPos,r.result;for(e=[],t=gt();t!==n;)e.push(t),t=gt();return lt[s]={nextPos:st,result:e},e}function gt(){let t,r,i,a,o;const l=38*st+1,b=lt[l];return b?(st=b.nextPos,b.result):(t=st,r=st,i=function(){let t;const s=38*st+2,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,4)===u?(t=u,st+=4):(t=n,0===ot&&ft(X)),lt[s]={nextPos:st,result:t},t)}(),i!==n?(a=bt(),a!==n?(o=function(){let t;const s=38*st+3,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,4)===c?(t=c,st+=4):(t=n,0===ot&&ft(Y)),lt[s]={nextPos:st,result:t},t)}(),o!==n?r=a:(st=r,r=n)):(st=r,r=n)):(st=r,r=n),r!==n&&(v=r,r={type:s.templated.ten,value:v}),t=r,t===n&&(t=st,r=st,i=function(){let t;const s=38*st+4,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,3)===d?(t=d,st+=3):(t=n,0===ot&&ft(Z)),lt[s]={nextPos:st,result:t},t)}(),i!==n?(a=bt(),a!==n?(o=function(){let t;const s=38*st+5,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,3)===h?(t=h,st+=3):(t=n,0===ot&&ft(ee)),lt[s]={nextPos:st,result:t},t)}(),o!==n?r=a:(st=r,r=n)):(st=r,r=n)):(st=r,r=n),r!==n&&(r=function(e){return{type:s.templated.teh,value:e}}(r)),t=r,t===n&&(t=st,r=st,i=function(){let t;const s=38*st+6,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===p?(t=p,st+=2):(t=n,0===ot&&ft(te)),lt[s]={nextPos:st,result:t},t)}(),i!==n?(a=bt(),a!==n?(o=function(){let t;const s=38*st+7,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===f?(t=f,st+=2):(t=n,0===ot&&ft(se)),lt[s]={nextPos:st,result:t},t)}(),o!==n?r=a:(st=r,r=n)):(st=r,r=n)):(st=r,r=n),r!==n&&(r=function(e){return{type:s.templated.tet,value:e}}(r)),t=r,t===n&&(t=st,r=function(){let t,s,r,i,a,o,l;const u=38*st+8,c=lt[u];if(c)return st=c.nextPos,c.result;if(t=st,s=[],r=st,i=[],a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re)),a!==n)for(;a!==n;)i.push(a),a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re));else i=n;if(r=i!==n?e.substring(r,st):i,r===n&&(r=st,92===e.charCodeAt(st)?(i=m,st++):(i=n,0===ot&&ft(ie)),i!==n?(e.length>st?(a=e.charAt(st),st++):(a=n,0===ot&&ft(ne)),a!==n?r=a:(st=r,r=n)):(st=r,r=n),r===n&&(r=st,i=st,123===e.charCodeAt(st)?(a=g,st++):(a=n,0===ot&&ft(ae)),a!==n?(o=st,ot++,123===e.charCodeAt(st)?(l=g,st++):(l=n,0===ot&&ft(ae)),ot--,l===n?o=void 0:(st=o,o=n),o!==n?(a=[a,o],i=a):(st=i,i=n)):(st=i,i=n),r=i!==n?e.substring(r,st):i)),r!==n)for(;r!==n;){if(s.push(r),r=st,i=[],a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re)),a!==n)for(;a!==n;)i.push(a),a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re));else i=n;r=i!==n?e.substring(r,st):i,r===n&&(r=st,92===e.charCodeAt(st)?(i=m,st++):(i=n,0===ot&&ft(ie)),i!==n?(e.length>st?(a=e.charAt(st),st++):(a=n,0===ot&&ft(ne)),a!==n?r=Ye(a):(st=r,r=n)):(st=r,r=n),r===n&&(r=st,i=st,123===e.charCodeAt(st)?(a=g,st++):(a=n,0===ot&&ft(ae)),a!==n?(o=st,ot++,123===e.charCodeAt(st)?(l=g,st++):(l=n,0===ot&&ft(ae)),ot--,l===n?o=void 0:(st=o,o=n),o!==n?(a=[a,o],i=a):(st=i,i=n)):(st=i,i=n),r=i!==n?e.substring(r,st):i))}else s=n;return s!==n&&(s=s.join("")),t=s,lt[u]={nextPos:st,result:t},t}(),r!==n&&(r=function(e){return{type:s.templated.tel,value:e}}(r)),t=r))),lt[l]={nextPos:st,result:t},t);var v}function bt(){let e,t;const s=38*st+9,r=lt[s];return r?(st=r.nextPos,r.result):(e=st,kt(),t=vt(),t!==n?(kt(),e=t):(st=e,e=n),lt[s]={nextPos:st,result:e},e)}function vt(){let t,r,i,a,o,l;const u=38*st+10,c=lt[u];return c?(st=c.nextPos,c.result):(t=st,r=yt(),r!==n?(kt(),63===e.charCodeAt(st)?(i=b,st++):(i=n,0===ot&&ft(oe)),i!==n?(kt(),a=vt(),a!==n?(kt(),58===e.charCodeAt(st)?(o=v,st++):(o=n,0===ot&&ft(le)),o!==n?(kt(),l=vt(),l!==n?t={type:s.ter,cond:r,ifTrue:a,ifFalse:l}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=yt()),lt[u]={nextPos:st,result:t},t)}function yt(){let t,r,i,a;const o=38*st+11,l=lt[o];return l?(st=l.nextPos,l.result):(t=st,r=wt(),r!==n?(kt(),e.substr(st,2)===y?(i=y,st+=2):(i=n,0===ot&&ft(ue)),i!==n?(kt(),a=yt(),a!==n?t={type:s.elv,cond:r,ifFalse:a}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=wt()),lt[o]={nextPos:st,result:t},t)}function wt(){let t,r,i,a;const o=38*st+12,l=lt[o];return l?(st=l.nextPos,l.result):(t=st,r=Et(),r!==n?(kt(),e.substr(st,2)===w?(i=w,st+=2):(i=n,0===ot&&ft(ce)),i!==n?(kt(),a=wt(),a!==n?t={type:s.nullc,lhs:r,rhs:a}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=Et()),lt[o]={nextPos:st,result:t},t)}function Et(){let t,r,i,a,o,l;const u=38*st+13,c=lt[u];if(c)return st=c.nextPos,c.result;if(t=st,r=xt(),r!==n){for(i=[],a=st,kt(),e.substr(st,2)===E?(o=E,st+=2):(o=n,0===ot&&ft(de)),o!==n?(kt(),l=xt(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);a!==n;)i.push(a),a=st,kt(),e.substr(st,2)===E?(o=E,st+=2):(o=n,0===ot&&ft(de)),o!==n?(kt(),l=xt(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);t=function(e,t){let r=e;for(const e of t)r={type:s.or,lhs:r,rhs:e};return r}(r,i)}else st=t,t=n;return lt[u]={nextPos:st,result:t},t}function xt(){let t,r,i,a,o,l;const u=38*st+14,c=lt[u];if(c)return st=c.nextPos,c.result;if(t=st,r=At(),r!==n){for(i=[],a=st,kt(),e.substr(st,2)===x?(o=x,st+=2):(o=n,0===ot&&ft(he)),o!==n?(kt(),l=At(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);a!==n;)i.push(a),a=st,kt(),e.substr(st,2)===x?(o=x,st+=2):(o=n,0===ot&&ft(he)),o!==n?(kt(),l=At(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);t=function(e,t){let r=e;for(const e of t)r={type:s.and,lhs:r,rhs:e};return r}(r,i)}else st=t,t=n;return lt[u]={nextPos:st,result:t},t}function At(){let e,t,r,i,a,o;const l=38*st+15,u=lt[l];if(u)return st=u.nextPos,u.result;if(e=st,t=St(),t!==n){for(r=[],i=st,kt(),a=Pt(),a!==n?(kt(),o=St(),o!==n?i=Ze(0,a,o):(st=i,i=n)):(st=i,i=n);i!==n;)r.push(i),i=st,kt(),a=Pt(),a!==n?(kt(),o=St(),o!==n?i=Ze(0,a,o):(st=i,i=n)):(st=i,i=n);e=function(e,t){let r=e;for(const e of t)r={type:s.eq,op:e.op,lhs:r,rhs:e.rhs};return r}(t,r)}else st=e,e=n;return lt[l]={nextPos:st,result:e},e}function St(){let e,t,r,i,a,o;const l=38*st+16,u=lt[l];if(u)return st=u.nextPos,u.result;if(e=st,t=Tt(),t!==n){for(r=[],i=st,kt(),a=Lt(),a!==n?(kt(),o=Tt(),o!==n?i=et(0,a,o):(st=i,i=n)):(st=i,i=n);i!==n;)r.push(i),i=st,kt(),a=Lt(),a!==n?(kt(),o=Tt(),o!==n?i=et(0,a,o):(st=i,i=n)):(st=i,i=n);e=function(e,t){let r=e;for(const e of t)r={type:s.cmp,op:e.op,lhs:r,rhs:e.rhs};return r}(t,r)}else st=e,e=n;return lt[l]={nextPos:st,result:e},e}function Tt(){let t,r,i;const a=38*st+17,o=lt[a];return o?(st=o.nextPos,o.result):(t=st,33===e.charCodeAt(st)?(r=A,st++):(r=n,0===ot&&ft(pe)),r!==n?(kt(),i=Tt(),i!==n?t={type:s.not,expr:i}:(st=t,t=n)):(st=t,t=n),t===n&&(t=function(){let e,t,r,i,a;const o=38*st+18,l=lt[o];if(l)return st=l.nextPos,l.result;if(e=st,t=_t(),t!==n){if(kt(),r=[],i=st,a=Ct(),a!==n?(kt(),i=a):(st=i,i=n),i!==n)for(;i!==n;)r.push(i),i=st,a=Ct(),a!==n?(kt(),i=a):(st=i,i=n);else r=n;r!==n?e={type:s.access,lhs:t,rhs:r}:(st=e,e=n)}else st=e,e=n;return e===n&&(e=_t()),lt[o]={nextPos:st,result:e},e}()),lt[a]={nextPos:st,result:t},t)}function Ct(){let t;const r=38*st+19,i=lt[r];return i?(st=i.nextPos,i.result):(t=function(){let t,r,i;const a=38*st+20,o=lt[a];return o?(st=o.nextPos,o.result):(ot++,t=st,e.substr(st,2)===S?(r=S,st+=2):(r=n,0===ot&&ft(me)),r===n&&(46===e.charCodeAt(st)?(r=T,st++):(r=n,0===ot&&ft(ge))),r!==n?(kt(),i=Nt(),i!==n?t={type:s.member,ns:"?."===r,rhs:i}:(st=t,t=n)):(st=t,t=n),ot--,t===n&&(r=n,0===ot&&ft(fe)),lt[a]={nextPos:st,result:t},t)}(),t===n&&(t=function(){let t,r,i,a,o;const l=38*st+21,u=lt[l];return u?(st=u.nextPos,u.result):(ot++,t=st,e.substr(st,2)===S?(r=S,st+=2):(r=n,0===ot&&ft(me)),r===n&&(r=null),91===e.charCodeAt(st)?(i=C,st++):(i=n,0===ot&&ft(ve)),i!==n?(kt(),a=vt(),a!==n?(kt(),93===e.charCodeAt(st)?(o=_,st++):(o=n,0===ot&&ft(ye)),o!==n?t={type:s.subscript,ns:null!==r,rhs:a}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),ot--,t===n&&(r=n,0===ot&&ft(be)),lt[l]={nextPos:st,result:t},t)}(),t===n&&(t=function(){let t,r,i,a,o,l,u,c;const d=38*st+22,h=lt[d];if(h)return st=h.nextPos,h.result;if(ot++,t=st,e.substr(st,2)===S?(r=S,st+=2):(r=n,0===ot&&ft(me)),r===n&&(r=null),40===e.charCodeAt(st)?(i=O,st++):(i=n,0===ot&&ft(Ee)),i!==n){for(kt(),a=st,o=vt(),o!==n?(l=kt(),a=o):(st=a,a=n),a===n&&(a=null),o=[],l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);l!==n;)o.push(l),l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);41===e.charCodeAt(st)?(l=R,st++):(l=n,0===ot&&ft(Ae)),l!==n?t=function(e,t,r){return{type:s.method,ns:null!==e,args:null===t?[]:[t,...r]}}(r,a,o):(st=t,t=n)}else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(we)),lt[d]={nextPos:st,result:t},t}())),lt[r]={nextPos:st,result:t},t)}function _t(){let t,i,a,o;const l=38*st+23,u=lt[l];return u?(st=u.nextPos,u.result):(t=st,40===e.charCodeAt(st)?(i=O,st++):(i=n,0===ot&&ft(Ee)),i!==n?(kt(),a=vt(),a!==n?(kt(),41===e.charCodeAt(st)?(o=R,st++):(o=n,0===ot&&ft(Ae)),o!==n?t=a:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=function(){let t,r,i,a,o,l,u,c;const d=38*st+24,h=lt[d];if(h)return st=h.nextPos,h.result;if(ot++,t=st,r=function(){let t,r,i,a,o;const l=38*st+32,u=lt[l];return u?(st=u.nextPos,u.result):(ot++,t=st,35===e.charCodeAt(st)?(r=M,st++):(r=n,0===ot&&ft(Be)),r!==n?(i=st,a=Nt(),a!==n?(58===e.charCodeAt(st)?(o=v,st++):(o=n,0===ot&&ft(le)),o!==n?i=a:(st=i,i=n)):(st=i,i=n),i===n&&(i=null),a=Nt(),a!==n?t={type:s.function,module:i,value:a}:(st=t,t=n)):(st=t,t=n),ot--,t===n&&(r=n,0===ot&&ft($e)),lt[l]={nextPos:st,result:t},t)}(),r!==n)if(40===e.charCodeAt(st)?(i=O,st++):(i=n,0===ot&&ft(Ee)),i!==n){for(kt(),a=st,o=vt(),o!==n?(l=kt(),a=o):(st=a,a=n),a===n&&(a=null),o=[],l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);l!==n;)o.push(l),l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);41===e.charCodeAt(st)?(l=R,st++):(l=n,0===ot&&ft(Ae)),l!==n?t=function(e,t,r){const i=null===t?[]:[t,...r];return{type:s.call,value:e,args:i}}(r,a,o):(st=t,t=n)}else st=t,t=n;else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(Se)),lt[d]={nextPos:st,result:t},t}(),t===n&&(t=function(){let t;const r=38*st+25,i=lt[r];return i?(st=i.nextPos,i.result):(t=function(){let t,r,i,a,o,l,u,c,d,h;const p=38*st+26,f=lt[p];if(f)return st=f.nextPos,f.result;if(ot++,t=st,r=st,i=st,45===e.charCodeAt(st)?(a=N,st++):(a=n,0===ot&&ft(Ce)),a===n&&(a=null),o=st,l=[],u=e.charAt(st),W.test(u)?st++:(u=n,0===ot&&ft(_e)),u!==n)for(;u!==n;)l.push(u),u=e.charAt(st),W.test(u)?st++:(u=n,0===ot&&ft(_e));else l=n;if(l!==n){if(u=st,46===e.charCodeAt(st)?(c=T,st++):(c=n,0===ot&&ft(ge)),c!==n){for(d=[],h=e.charAt(st),W.test(h)?st++:(h=n,0===ot&&ft(_e));h!==n;)d.push(h),h=e.charAt(st),W.test(h)?st++:(h=n,0===ot&&ft(_e));c=[c,d],u=c}else st=u,u=n;u===n&&(u=null),l=[l,u],o=l}else st=o,o=n;if(o===n)if(o=st,46===e.charCodeAt(st)?(l=T,st++):(l=n,0===ot&&ft(ge)),l!==n){if(u=[],c=e.charAt(st),W.test(c)?st++:(c=n,0===ot&&ft(_e)),c!==n)for(;c!==n;)u.push(c),c=e.charAt(st),W.test(c)?st++:(c=n,0===ot&&ft(_e));else u=n;u!==n?(l=[l,u],o=l):(st=o,o=n)}else st=o,o=n;return o!==n?(a=[a,o],i=a):(st=i,i=n),r=i!==n?e.substring(r,st):i,r!==n&&(r={type:s.literal,value:parseFloat(r)}),t=r,ot--,t===n&&(r=n,0===ot&&ft(Te)),lt[p]={nextPos:st,result:t},t}(),t===n&&(t=Ot(),t===n&&(t=function(){let t,r,i,a,o,l,u;const c=38*st+30,d=lt[c];if(d)return st=d.nextPos,d.result;if(ot++,t=st,91===e.charCodeAt(st)?(r=C,st++):(r=n,0===ot&&ft(ve)),r!==n){for(kt(),i=vt(),i===n&&(i=null),kt(),a=[],o=st,44===e.charCodeAt(st)?(l=q,st++):(l=n,0===ot&&ft(xe)),l!==n?(kt(),u=vt(),u!==n?(kt(),o=u):(st=o,o=n)):(st=o,o=n);o!==n;)a.push(o),o=st,44===e.charCodeAt(st)?(l=q,st++):(l=n,0===ot&&ft(xe)),l!==n?(kt(),u=vt(),u!==n?(kt(),o=u):(st=o,o=n)):(st=o,o=n);93===e.charCodeAt(st)?(o=_,st++):(o=n,0===ot&&ft(ye)),o!==n?t=function(e,t){const r=null===e?[]:[e,...t];return{type:s.array,value:r}}(i,a):(st=t,t=n)}else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(Fe)),lt[c]={nextPos:st,result:t},t}(),t===n&&(t=function(){let t,r,i,a,o,l,u,c,d,h,p;const f=38*st+31,m=lt[f];if(m)return st=m.nextPos,m.result;if(ot++,t=st,123===e.charCodeAt(st)?(r=g,st++):(r=n,0===ot&&ft(ae)),r!==n){for(kt(),i=st,a=Ot(),a!==n?(o=kt(),58===e.charCodeAt(st)?(l=v,st++):(l=n,0===ot&&ft(le)),l!==n?(u=kt(),c=vt(),c!==n?i=[a,c]:(st=i,i=n)):(st=i,i=n)):(st=i,i=n),i===n&&(i=null),a=kt(),o=[],l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(c=kt(),d=Ot(),d!==n?(kt(),58===e.charCodeAt(st)?(h=v,st++):(h=n,0===ot&&ft(le)),h!==n?(kt(),p=vt(),p!==n?(kt(),l=[d,p]):(st=l,l=n)):(st=l,l=n)):(st=l,l=n)):(st=l,l=n);l!==n;)o.push(l),l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(c=kt(),d=Ot(),d!==n?(kt(),58===e.charCodeAt(st)?(h=v,st++):(h=n,0===ot&&ft(le)),h!==n?(kt(),p=vt(),p!==n?(kt(),l=[d,p]):(st=l,l=n)):(st=l,l=n)):(st=l,l=n)):(st=l,l=n);125===e.charCodeAt(st)?(l=z,st++):(l=n,0===ot&&ft(ze)),l!==n?t=function(e,t){var r=[];return null!==e&&r.push(e),r.push.apply(r,t),{type:s.dict,value:r}}(i,o):(st=t,t=n)}else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(Ie)),lt[f]={nextPos:st,result:t},t}()))),lt[r]={nextPos:st,result:t},t)}(),t===n&&(t=function(){let e,t;const i=38*st+34,a=lt[i];return a?(st=a.nextPos,a.result):(ot++,e=st,t=Nt(),t!==n&&(o=t,t=r.has(o)?{type:s.literal,value:r.get(o)}:{type:s.symbol,value:o}),e=t,ot--,e===n&&(t=n,0===ot&&ft(We)),lt[i]={nextPos:st,result:e},e);var o}()))),lt[l]={nextPos:st,result:t},t)}function Ot(){let t,r,i,a,o;const l=38*st+27,u=lt[l];if(u)return st=u.nextPos,u.result;if(ot++,t=st,39===e.charCodeAt(st)?(r=P,st++):(r=n,0===ot&&ft(qe)),r!==n){for(i=st,a=[],o=e.charAt(st),V.test(o)?st++:(o=n,0===ot&&ft(Re));o!==n;)a.push(o),o=e.charAt(st),V.test(o)?st++:(o=n,0===ot&&ft(Re));i=e.substring(i,st),39===e.charCodeAt(st)?(a=P,st++):(a=n,0===ot&&ft(qe)),a!==n?t={type:s.literal,value:i}:(st=t,t=n)}else st=t,t=n;if(t===n){if(t=st,34===e.charCodeAt(st)?(r=L,st++):(r=n,0===ot&&ft(Ne)),r!==n){for(i=st,a=[],o=e.charAt(st),U.test(o)?st++:(o=n,0===ot&&ft(Pe));o!==n;)a.push(o),o=e.charAt(st),U.test(o)?st++:(o=n,0===ot&&ft(Pe));i=e.substring(i,st),34===e.charCodeAt(st)?(a=L,st++):(a=n,0===ot&&ft(Ne)),a!==n?t={type:s.literal,value:i}:(st=t,t=n)}else st=t,t=n;if(t===n)if(t=st,96===e.charCodeAt(st)?(r=k,st++):(r=n,0===ot&&ft(Le)),r!==n){for(i=[],a=qt(),a===n&&(a=Rt());a!==n;)i.push(a),a=qt(),a===n&&(a=Rt());96===e.charCodeAt(st)?(a=k,st++):(a=n,0===ot&&ft(Le)),a!==n?t={type:s.tstring,parts:i}:(st=t,t=n)}else st=t,t=n}return ot--,t===n&&(r=n,0===ot&&ft(Oe)),lt[l]={nextPos:st,result:t},t}function qt(){let t,s,r,i;const a=38*st+28,o=lt[a];return o?(st=o.nextPos,o.result):(ot++,t=st,123===e.charCodeAt(st)?(s=g,st++):(s=n,0===ot&&ft(ae)),s!==n?(kt(),r=vt(),r!==n?(kt(),125===e.charCodeAt(st)?(i=z,st++):(i=n,0===ot&&ft(ze)),i!==n?t=r:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),ot--,t===n&&(s=n,0===ot&&ft(ke)),lt[a]={nextPos:st,result:t},t)}function Rt(){let t,r,i,a,o;const l=38*st+29,u=lt[l];if(u)return st=u.nextPos,u.result;if(ot++,t=st,r=[],i=st,a=[],o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De)),o!==n)for(;o!==n;)a.push(o),o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De));else a=n;if(i=a!==n?e.substring(i,st):a,i===n&&(i=st,92===e.charCodeAt(st)?(a=m,st++):(a=n,0===ot&&ft(ie)),a!==n?(e.length>st?(o=e.charAt(st),st++):(o=n,0===ot&&ft(ne)),o!==n?i=o:(st=i,i=n)):(st=i,i=n)),i!==n)for(;i!==n;){if(r.push(i),i=st,a=[],o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De)),o!==n)for(;o!==n;)a.push(o),o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De));else a=n;i=a!==n?e.substring(i,st):a,i===n&&(i=st,92===e.charCodeAt(st)?(a=m,st++):(a=n,0===ot&&ft(ie)),a!==n?(e.length>st?(o=e.charAt(st),st++):(o=n,0===ot&&ft(ne)),o!==n?i=tt(o):(st=i,i=n)):(st=i,i=n))}else r=n;return r!==n&&(r={type:s.literal,value:r.join("")}),t=r,t===n&&(t=st,123===e.charCodeAt(st)?(r=g,st++):(r=n,0===ot&&ft(ae)),r!==n&&(r={type:s.literal,value:r}),t=r),ot--,t===n&&(r=n,0===ot&&ft(Me)),lt[l]={nextPos:st,result:t},t}function Nt(){let t,s,r,i,a;const o=38*st+33,l=lt[o];if(l)return st=l.nextPos,l.result;if(t=st,s=st,r=e.charAt(st),Q.test(r)?st++:(r=n,0===ot&&ft(je)),r!==n){for(i=[],a=e.charAt(st),K.test(a)?st++:(a=n,0===ot&&ft(He));a!==n;)i.push(a),a=e.charAt(st),K.test(a)?st++:(a=n,0===ot&&ft(He));r=[r,i],s=r}else st=s,s=n;return t=s!==n?e.substring(t,st):s,lt[o]={nextPos:st,result:t},t}function Pt(){let t;const s=38*st+35,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===D?(t=D,st+=2):(t=n,0===ot&&ft(Ve)),t===n&&(e.substr(st,2)===F?(t=F,st+=2):(t=n,0===ot&&ft(Ue))),lt[s]={nextPos:st,result:t},t)}function Lt(){let t;const s=38*st+36,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===I?(t=I,st+=2):(t=n,0===ot&&ft(Ge)),t===n&&(62===e.charCodeAt(st)?(t=$,st++):(t=n,0===ot&&ft(Qe)),t===n&&(e.substr(st,2)===B?(t=B,st+=2):(t=n,0===ot&&ft(Ke)),t===n&&(60===e.charCodeAt(st)?(t=j,st++):(t=n,0===ot&&ft(Je))))),lt[s]={nextPos:st,result:t},t)}function kt(){let t,s;const r=38*st+37,i=lt[r];if(i)return st=i.nextPos,i.result;for(ot++,t=[],s=e.charAt(st),J.test(s)?st++:(s=n,0===ot&&ft(Xe));s!==n;)t.push(s),s=e.charAt(st),J.test(s)?st++:(s=n,0===ot&&ft(Xe));return ot--,lt[r]={nextPos:st,result:t},t}it=l();const zt=it!==n&&st===e.length;function Mt(){throw it!==n&&st<e.length&&ft({type:"end"}),t=at,s=nt<e.length?function(t=st){const s=e.codePointAt(t);return void 0===s?"":String.fromCodePoint(s)}(nt):null,r=nt<e.length?pt(nt,nt+1):pt(nt,nt),new i(i.buildMessage(t,s),t,s,r);var t,s,r}return t.peg$library?{peg$result:it,peg$currPos:st,peg$FAILED:n,peg$maxFailExpected:at,peg$maxFailPos:nt,peg$success:zt,peg$throw:zt?void 0:Mt}:zt?it:void Mt()}(e,{startRule:t===o.MODE_TEMPLATED?"TemplatedRoot":"ExpressionRoot"}))}static evaluate(e,t,s,r){return new a(e,t).visitRoot(s,r===o.MODE_TEMPLATED)}static interpret(e,t,s,r){return o.evaluate(e,t,o.parse(s,r),r)}}class l{#s;#r;constructor(e,t){this.#s=e,this.#r=t}withModule(e,t){const s=e?{[e]:t}:t;return new l({...this.#s,...s},this.#r)}withOverlay(...e){return new l(this.#s,0===e.length?this.#r:[...this.#r,...e])}resolve(e){return n(this.#r,e)}evaluateExpression(e){return o.interpret(this.#s,this.#r,e,o.MODE_EXPRESSION)}evaluateTemplated(e){return o.interpret(this.#s,this.#r,e,o.MODE_TEMPLATED)}}class u{static fromHtml(...e){const t=document.createElement("template");return t.innerHTML=e.map(e=>e.trim()).join(""),document.adoptNode(t.content)}static toHtml(e){var t=document.createElement("template");return t.content.appendChild(e),t.innerHTML}static isBlank(e){return 0===e.childElementCount&&""===e.textContent.trim()}static from(...e){const t=new DocumentFragment;for(const s of e)t.appendChild(s);return t}static fromChildNodes(e){const t=new DocumentFragment;for(;e.firstChild;)t.appendChild(e.firstChild);return t}}class c{static id=0;static uid(e){return`${e}-${++c.id}`}static defaultValue(e,t,s){return e.hasAttribute(t)||e.setAttribute(t,s),e.getAttribute(t)}static forward(e,t,s){t.getAttributeNames().filter(t=>t.startsWith(e)).forEach(r=>{const i=r.substring(e.length);if("class"===i){const r=t.getAttribute(`${e}class`)?.split(/\s+/).filter(e=>e.length)??[];return void s.classList.add(...r)}s.setAttribute(i,t.getAttribute(r))})}static set(e,t,s){null==s?e.removeAttribute(t):e.setAttribute(t,s)}}class d{static from(e){for(const t of e.children)t.matches('[slot=""]')&&t.removeAttribute("slot");const t=Array.from(e.children).filter(e=>e.matches("[slot]")).map(e=>{e.remove();const t=e.getAttribute("slot");return e.removeAttribute("slot"),[t,d.slotFromNode(e)]}),s={};s.default=new DocumentFragment,s.default.append(...e.childNodes);for(const[e,r]of t)e in s||(s[e]=new DocumentFragment),s[e].append(r);return s}static slotFromNode(e){return e instanceof HTMLTemplateElement?document.adoptNode(e.content):e instanceof HTMLScriptElement&&"text/html"===e.type?u.fromHtml(e.innerHTML):e}}class h{static isParsed(e){for(let t=e;t;t=t.parentNode)if(t.nextSibling)return!0;return!1}static waitDomContentLoaded(e){if("loading"===e.readyState)return new Promise(t=>{e.addEventListener("DOMContentLoaded",()=>t(void 0),{once:!0})});if("complete"===e.readyState)return Promise.resolve();const t=e.defaultView;return null===t?Promise.resolve():new Promise(e=>{const s=()=>{t.removeEventListener("DOMContentLoaded",s),t.removeEventListener("load",s),e(void 0)};t.addEventListener("DOMContentLoaded",s),t.addEventListener("load",s)})}static waitParsed(e){return h.isParsed(e)?Promise.resolve(e):new Promise(t=>{const s=new MutationObserver(()=>{h.isParsed(e)&&(s.disconnect(),t(e))});for(let t=e.parentNode;t;t=t.parentNode)s.observe(t,{childList:!0});h.waitDomContentLoaded(e.ownerDocument).then(()=>{s.disconnect(),t(e)})})}static queryChildren(e,t){for(const s of e.children)if(s.matches(t))return s;return null}static queryChildrenAll(e,t){const s=[];for(const r of e.children)r.matches(t)&&s.push(r);return s}}class p{#u=new Set;removed(e){return this.#u.has(e)}remove(e){e.replaceChildren?.(),Object.keys(e.dataset||{}).filter(e=>e.startsWith("tpl")).forEach(t=>{delete e.dataset[t]}),this.#u.add(e)}popData(e,t){const s=e.dataset[t];return delete e.dataset[t],s}prepend(e,t){e.parentNode.insertBefore(t,e)}append(e,t){e.parentNode.insertBefore(t,e.nextSibling)}replace(e,t){this.prepend(e,t),this.remove(e)}cleanup(){for(const e of this.#u)e.remove();this.#u.clear()}}class f{static ORDERED_COMMANDS=["tplIf","tplWith","tplEach","tplWhen","tplClassAppend","tplAttrAppend","tplRemove","tplVerbatim"];static tplIf(e,t,s,r){r.evaluateExpression(t)||s.remove(e)}static tplWith(e,t,s,r){const i=r.evaluateExpression(t),n=s.popData(e,"tplVar"),a=new b(e,r).withOverlay(n?{[n]:i}:i).render();s.replace(e,a)}static tplEach(e,t,s,r){const i=s.popData(e,"tplVar"),n=s.popData(e,"tplStat"),a=new b(e,r),o=r.evaluateExpression(t),l=null===o||"object"!=typeof o?void 0:Object.getPrototypeOf(o),u=o instanceof Map?[...o]:o?.[Symbol.iterator]||l!==Object.prototype&&null!==l?null:Object.entries(o),c=null===u?o:u.map(([e,t])=>({key:e,value:t}));if(!c?.[Symbol.iterator])throw new Error(`Expected an iterable got '${o}'`);if(!n){for(const t of c)s.prepend(e,a.withOverlay(i?{[i]:t}:t).render());return void s.remove(e)}const d=Array.isArray(c)||"number"==typeof c.length?c.length:"number"==typeof c.size?c.size:null;let h=0;for(const t of c){const r={index:h,count:h+1,size:d,first:0===h,last:null===d?null:h===d-1,even:h%2==0,odd:h%2==1};s.prepend(e,a.withOverlay({[n]:r},i?{[i]:t}:t).render()),++h}s.remove(e)}static tplWhen(e,t,s,r){r.evaluateExpression(t)||s.remove(e)}static tplVerbatim(e,t,s,r){const i=e.cloneNode(!0);s.replace(e,i)}static tplRemove(e,t,s,r){switch(t.toLowerCase()){case"tag":{const t=new DocumentFragment;for(;e.firstChild;)t.appendChild(e.firstChild);"tplVerbatim"in e.dataset?(s.popData(e,"tplVerbatim"),s.replace(e,t)):(s.append(e,t),s.remove(e));break}case"body":e.replaceChildren();break;case"all":s.remove(e)}}static tplClassAppend(e,t,s,r){const i=r.evaluateExpression(t);if(!i)return;const n=(Array.isArray(i)?i:[i]).flatMap(e=>"string"==typeof e?e.split(" "):e).filter(Boolean);0!==n.length&&e.classList.add(...n)}static tplAttrAppend(e,t,s,r){const i=r.evaluateExpression(t);i&&0!==i.length&&(Array.isArray(i[0])?i:[i]).forEach(([t,s])=>{e.setAttribute(t,s)})}static textNode(e,t,r,i){for(const n of i.evaluateTemplated(t))if(null!=n.value)switch(n.type){case s.dom.t:r.prepend(e,document.createTextNode(n.value));break;case s.dom.h:r.prepend(e,u.fromHtml("string"==typeof n.value?n.value:String(n.value)));break;case s.dom.n:if(!(n.value instanceof Node))throw new TypeError(`Expected a Node, got '${typeof n.value}'`);r.prepend(e,n.value)}r.remove(e)}}const m=new t(1e3);function g(e){return m.getOrCompute(e,e=>e.substring(3).split(/(?=[A-Z])/).join("-").toLowerCase())}class b{static fromHtml(e,t,...s){return new b(u.fromHtml(e),new l(t,s))}static fromSelector(e,t,...s){const r=document.querySelector(e);if(!(r instanceof HTMLTemplateElement))throw new Error("template selector does not match any template tag");const i=document.adoptNode(r.content);return new b(i,new l(t,s))}static fromTemplate(e,t,...s){const r=document.adoptNode(e.content);return new b(r,new l(t,s))}static fromFragment(e,t,...s){return new b(e,new l(t,s))}#c;#d;constructor(e,t){this.#c=e,this.#d=t}withEvaluator(e){return new b(this.#c,e)}withFragment(e){return new b(e,this.#d)}withModule(e,t){return new b(this.#c,this.#d.withModule(e,t))}withOverlay(...e){return new b(this.#c,this.#d.withOverlay(...e))}evaluateExpression(e,...t){return this.#d.withOverlay(...t).evaluateExpression(e)}evaluateTemplated(e,...t){return this.#d.withOverlay(...t).evaluateTemplated(e)}evaluator(){return this.#d}render(){try{const e=new p,t=document.importNode(this.#c,!0),s=t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?t:(()=>{const e=new DocumentFragment;return e.appendChild(t),e})(),r=document.createNodeIterator(s,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,b.#h);let i;for(;null!==(i=r.nextNode());){if(e.cleanup(),i.nodeType===Node.TEXT_NODE){try{f.textNode(i,i.nodeValue,e,this.#d)}catch(e){throw v.wrap("Error evaluating text node",i,e)}continue}const t=i;for(const s of f.ORDERED_COMMANDS){if(!(s in t.dataset))continue;const r=e.popData(t,s);try{f[s](t,r,e,this.#d)}catch(e){throw v.wrap(`Error evaluating data-tpl-${g(s)}="${r}"`,t,e)}if(e.removed(t))break}for(const s of Object.keys(t.dataset||{})){if(!s.startsWith("tpl"))continue;const r=g(s),i=e.popData(t,s);try{const e=this.#d.evaluateExpression(i);if("boolean"==typeof e){t.toggleAttribute(r,e);continue}null!=e&&t.setAttribute(r,e)}catch(e){throw v.wrap(`Error evaluating data-tpl-${g(s)}="${i}"`,t,e)}}}return e.cleanup(),s}catch(e){if(e instanceof v)throw e;throw new v("Error rendering template",this.#c,e)}}renderTo(e){e.replaceChildren(this.render())}appendTo(e){e.appendChild(this.render())}renderToSelector(e){const t=document.querySelector(e);t&&this.renderTo(t)}appendToSelector(e){const t=document.querySelector(e);t&&this.appendTo(t)}static#h(e){if(e.nodeType===Node.TEXT_NODE)return e.nodeValue.includes("{{")&&e.nodeValue.includes("}}")?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;for(const t of e.attributes)if(t.name.startsWith("data-tpl-"))return NodeFilter.FILTER_ACCEPT;return NodeFilter.FILTER_SKIP}}class v extends Error{static FRAMES=3;#p;#f;truncated=!1;static wrap(e,t,s){return s instanceof v&&s.depth>=v.FRAMES?(s.truncated=!0,s):new v(e,t,s)}constructor(e,t,s){super(`${e} in \`${v.describe(t)}\``,{cause:s}),this.name="RenderError",this.#p=t,this.#f=(s instanceof v?s.depth:0)+1}get depth(){return this.#f}get node(){return this.#p}get html(){return v.stringify(this.#p)}static describe(e){if(e.nodeType===Node.TEXT_NODE)return v.#m(String(e.nodeValue).trim());if(e.nodeType===Node.ELEMENT_NODE){const t=e,s=Array.from(t.attributes,e=>` ${e.name}="${e.value}"`).join("");return v.#m(`<${t.localName}${s}>`)}const t=Array.from(e.childNodes).filter(e=>e.nodeType===Node.ELEMENT_NODE||String(e.nodeValue??"").trim().length>0).map(e=>v.describe(e));return v.#m(t.join(""))}static#m(e){return e.length>120?`${e.slice(0,120)}…`:e}static stringify(e){const t=document.createElement("template");return t.content.appendChild(v.#g(e.cloneNode(!0))),t.innerHTML}static#g(e){e.nodeType===Node.TEXT_NODE&&(e.nodeValue=e.nodeValue.trim());for(let t=0;t<e.childNodes.length;t++){const s=e.childNodes[t];s.nodeType===Node.TEXT_NODE?(s.nodeValue=s.nodeValue.trim(),0===s.nodeValue.length&&(e.removeChild(s),t--)):s.nodeType===Node.ELEMENT_NODE&&v.#g(s)}return e}}class y{#b=new Map;#v;#y=new Promise(e=>{this.#v=e});constructor(){h.waitDomContentLoaded(document).then(()=>{this.#w()})}ready(){return this.#y}async#w(){await this.settled(),document.dispatchEvent(new CustomEvent("ftl:ready",{bubbles:!1,cancelable:!1})),this.#v()}enqueue(e){if(this.#b.has(e))return;const{promise:t,resolve:s}=Promise.withResolvers(),r=h.waitParsed(e).then(()=>e.upgrade()).finally(()=>{this.#b.delete(e),s()});this.#b.set(e,{upgrade:r,finished:t})}async#E(e,t){for(;;){const s=Array.from(this.#b).filter(([t])=>e(t)).map(([,e])=>t(e));if(0===s.length)return;await Promise.all(s)}}settled(){return this.#E(()=>!0,e=>e.finished)}upgraded(e){return this.#E(e,e=>e.upgrade)}whenUpgraded(e){return this.#b.get(e)?.upgrade}pending(){return Array.from(this.#b.keys())}}class w{#x={};#A=!1;#S={string:{unmarshal:(e,t,s)=>e,marshal:(e,t,s)=>null==e?null:String(e)},number:{unmarshal:(e,t,s)=>null===e?null:Number(e),marshal:(e,t,s)=>null==e?null:String(e)},presence:{unmarshal:(e,t,s)=>null!==e,marshal:(e,t,s)=>e?"":null},bool:{unmarshal:(e,t,s)=>"true"===e,marshal:(e,t,s)=>null==e?null:String(!0===e)},json:{unmarshal:(e,t,s)=>null===e?null:JSON.parse(e),marshal:(e,t,s)=>null==e?null:JSON.stringify(e)},csv:{unmarshal:(e,t,s)=>null===e?[]:e.split(",").map(e=>e.trim()).filter(e=>e),marshal:(e,t,s)=>null==e?null:e.join(",")}};#T={};#s;#C=[];#d=new l(void 0,[]);#_=new y;defineElement(e,t){return this.#A?(this.#O(e,t),this):(this.#x[e]=t,this)}static declarationsOf(e){const t=[];for(let s=e;null!==s&&s!==HTMLElement;s=Object.getPrototypeOf(s))t.unshift(s);const s=e=>t.flatMap(t=>Object.getOwnPropertyDescriptor(t,e)?.value??[]);return{observed:s("observed"),attributes:s("attributes")}}static propertyOf(e){return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}#O(e,t){const{observed:s,attributes:r}=w.declarationsOf(t),{template:i,templates:n,slots:a,mappers:o,config:l}=t,u=s.map(e=>e.split(":")[0]),c=[...new Set(u.reverse())].reverse(),d=[...r,...s].reduce((e,t)=>{const[s,r]=t.split(":"),i=r??"string";if(!(i in this.#S)&&!(i in(o??{})))throw new Error(`unsupported attribute type: ${i}`);return e[s]=o?.[i]??this.#S[i],e},{}),h=Object.entries(Object.assign({},n,i?{default:i}:{})).map(([e,t])=>[e,b.fromHtml(t)]),p=Object.fromEntries(h);t.BITS={registry:this,enqueue:e=>this.#_.enqueue(e),SLOTS:a,CONFIG:l,OBSERVED:c,DECLARED:[...new Set([...c,...r.map(e=>e.split(":")[0])])],ATTR_TO_MAPPER:d,ATTR_TO_PROPERTY:Object.fromEntries(c.map(e=>[e,w.propertyOf(e)])),TEMPLATES:p},customElements.define(e,t)}defineModule(e,t){const s=e?{[e]:t}:t;return this.#s={...this.#s,...s},this.#q(),this}defineModules(e){return this.#s=e,this.#q(),this}defineComponent(e,t){return this.#T[e]=t,this}defineData(...e){return this.#C=e,this.#q(),this}defineOverlay(...e){return this.#C=[...this.#C,...e],this.#q(),this}defineMapper(e,t){return this.#S[e]=t,this}plugin(e){return e.configure(this),this}configure(){for(const[e,t]of Object.entries(this.#x))this.#O(e,t),delete this.#x[e];return this.#A=!0,this}settle(e){return this.#_.upgraded(e)}whenUpgraded(e){return this.#_.whenUpgraded(e)}pending(){return this.#_.pending()}ready(){return this.#_.ready()}#q(){this.#d=new l(this.#s,this.#C)}evaluator(){return this.#d}component(e){return this.#T[e]}}const E=new w;class x{static fromHtml(e){return b.fromHtml(e).withEvaluator(E.evaluator())}static fromSelector(e){return b.fromSelector(e).withEvaluator(E.evaluator())}static fromTemplate(e){return b.fromTemplate(e).withEvaluator(E.evaluator())}static fromFragment(e){return b.fromFragment(e).withEvaluator(E.evaluator())}}class A{static waitFor(e){return E.settle(t=>e.contains(t))}static waitForChildren(e){return E.settle(t=>e!==t&&e.contains(t))}}class S extends HTMLElement{static BITS={registry:E,enqueue:e=>{},SLOTS:!1,CONFIG:void 0,OBSERVED:[],DECLARED:[],ATTR_TO_MAPPER:{},ATTR_TO_PROPERTY:{},TEMPLATES:{}};static get observedAttributes(){return this.BITS.OBSERVED}constructor(){super(),this.internals=this.attachInternals()}internals;#R=!1;#N=!1;#P=new Set;#L=null;#k={};#z(){return this.constructor.BITS}#M(e){const t=this.#z().ATTR_TO_MAPPER[e];if(!t)throw new Error(`${this.constructor.name} declares no attribute '${e}': declare it in static observed or static attributes, or read it with getAttribute`);return t}unmarshal(e,t){return this.#M(e).unmarshal(t,e,this)}marshal(e,t){return this.#M(e).marshal(t,e,this)}get _registry(){return this.#z().registry}component(e){return this.#z().registry.component(e)}template(e){const t=this.#z().TEMPLATES[e??"default"];if(!t)throw new Error(`no template named '${e??"default"}' on ${this.constructor.name}`);const s=t.withEvaluator(this.#z().registry.evaluator()),r=this.#z().CONFIG;return r?s.withOverlay({config:r}):s}connectedCallback(){this.#N||this.#z().enqueue(this)}attributeChangedCallback(e,t,s){t!==s&&(this.#P.has(e)||(this.#R?this[this.#z().ATTR_TO_PROPERTY[e]]=this.unmarshal(e,s):null!==this.#L&&e in this.#L&&(this.#L[e]=this.unmarshal(e,s))))}async upgrade(){if(this.#N)return;this.#N=!0;const e=this.#z().SLOTS?d.from(this):void 0,t=Object.fromEntries(this.#z().DECLARED.map(e=>[e,this.unmarshal(e,this.getAttribute(e))])),s=new Set(this.#z().OBSERVED);this.#k=Object.fromEntries(Object.entries(t).filter(([e])=>!s.has(e))),this.#L=t;try{await this.render({slots:e});const s=this.#z().ATTR_TO_PROPERTY;for(const e of this.#z().OBSERVED)this[s[e]]=t[e];this.#R=!0,this.internals.states.add("rendered")}finally{this.#L=null}}render(e){}declared(e){return e in this.#k?this.#k[e]:null!==this.#L&&e in this.#L?this.#L[e]:this.unmarshal(e,this.getAttribute(e))}get rendered(){return this.#R}reflectTo(e,t){const s=this.marshal(e,t);if(s!==this.getAttribute(e)){this.#P.add(e);try{c.set(this,e,s)}finally{this.#P.delete(e)}}}}const T=/\{(\w+)\}/g,C=/\{(\d+)\}/g,_=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=new Set,q=e=>{O.has(e)||(O.add(e),console.warn(`l10n: ${e}`))},R=new t(100),N=(e,t,s)=>{const r=`${e.name}|${t??""}|${void 0===s?"":JSON.stringify(s)}`;return R.getOrCompute(r,()=>new e(t,s))};class P{static t(e,...t){let s=(this.l10n??{})[e];if(void 0===s)return q(`missing message "${e}"`),e;if(_(s)){const r=1===t.length&&_(t[0])?t[0]:{};if("number"!=typeof r.count)q(`plural message "${e}" needs a numeric {count}`),s=s.other;else{const e=this.locale??navigator?.language??"en";s=s[N(Intl.PluralRules,e).select(r.count)]??s.other}}if(void 0===s||"object"==typeof s)return q(`plural message "${e}" has no "other" form`),e;if(1===t.length&&_(t[0])){const r=t[0];return s.replace(T,(t,s)=>s in r?String(r[s]):(q(`message "${e}" wants {${s}}`),t))}return t.length>0?s.replace(C,(s,r)=>{const i=Number(r);return i>=t.length?(q(`message "${e}" wants {${r}}`),s):String(t[i])}):s}static date(e,t){return N(Intl.DateTimeFormat,this.locale,t).format(e)}static number(e,t){return N(Intl.NumberFormat,this.locale,t).format(e)}static bytes(e){const t=N(Intl.NumberFormat,this.locale,{maximumFractionDigits:2}).format;return e>=1073741824?`${t(e/1024/1024/1024)}GiB`:e>=1048576?`${t(e/1024/1024)}MiB`:e>=1024?`${t(e/1024)}KiB`:`${t(e)}B`}static of(e={}){const t=e=>E.evaluator().resolve(e),s=s=>(...r)=>s.apply({l10n:t("l10n"),locale:e.locale??t("locale")},r);return{t:s(P.t),date:s(P.date),number:s(P.number),bytes:s(P.bytes)}}}var L=Object.freeze({__proto__:null,Attributes:c,BoundedCache:t,ExpressionEvaluator:l,Expressions:o,Fragments:u,LightSlots:d,Localization:P,Nodes:h,ParsedElement:S,Registry:w,RenderError:v,Rendering:A,Template:b,Templates:x,registry:E});class k extends Error{constructor(e,t,s){super(e,{cause:s}),this.name="Failure",this.problems=t}dropping(e){return new k(this.message,k.dropProblemsContext(this.problems,e),this)}static dropProblemsContext(e,t){return e.map(({type:e,context:s,reason:r,details:i})=>({type:e,context:s?.startsWith(t)?s.substring(t.length):s,reason:r,details:i}))}static problemsText(e,t=null){return e?.problems?.length?e.problems.map(e=>`${e.reason}`).join("\n"):t??`${e?.message??e}`}}class z{static encode(e,t){const s=t||z.URL_SAFE,r=e.byteLength,i=new Uint8Array(e);let n="";for(let e=0;e<r;e+=3)n+=s[i[e]>>2]+s[(3&i[e])<<4|i[e+1]>>4]+s[(15&i[e+1])<<2|i[e+2]>>6]+s[63&i[e+2]];return r%3==2?n=n.substring(0,n.length-1):r%3==1&&(n=n.substring(0,n.length-2)),n}static decode(e,t){const s=t||z.URL_SAFE;let r=e.length;for(;r>0&&"="===e.charAt(r-1);)--r;const i=e.substring(0,r);if(e.length-r>2||i.includes("=")||0===i.length&&e.length>0)throw new Error("invalid padding");if(i.length%4==1)throw new Error("invalid length");for(const e of i)if(-1===s.indexOf(e))throw new Error(`invalid character '${e}'`);const n=Math.floor(.75*i.length),a=new Uint8Array(n);let o=0,l=0;for(;o<n;){const e=s.indexOf(i.charAt(l++)),t=s.indexOf(i.charAt(l++)),r=s.indexOf(i.charAt(l++)),u=s.indexOf(i.charAt(l++));if(a[o++]=e<<2|t>>4,o===n)break;if(a[o++]=(15&t)<<4|r>>2,o===n)break;a[o++]=(3&r)<<6|u}return a.buffer}}z.STANDARD="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",z.URL_SAFE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";class M{static decode(e){if(e.length%2!=0)throw new Error("invalid length");if(!/^[0-9a-fA-F]*$/.test(e))throw new Error("invalid character");const t=e.length/2;return new Uint8Array(t).map((t,s)=>{const r=2*s,i=e.substring(r,r+2);return parseInt(i,16)})}static encode(e,t){return Array.from(e).map(e=>e.toString(16)).map(e=>t?e.toUpperCase():e).map(e=>e.padStart(2,"0")).join("")}}class D{#D;#F;constructor(e,t){this.#D=e,this.#F=t}get normalized(){return`${this.#D}/${this.#F}`}get type(){return this.#D}get subtype(){return this.#F}static parse(e){if(!e)return new D("unknown","unknown");const[t,s]=e.split(";"),[r,i]=t.trim().toLowerCase().split("/");return r&&i?new D(r,i):new D("unknown","unknown")}}class F extends k{constructor(e,t,s,r){super(e,s,r),this.name="HttpClientError",this.status=t}dropping(e){return new F(this.message,this.status,k.dropProblemsContext(this.problems,e),this)}static problem(e,t){return{type:e,context:null,reason:t,details:null}}static of(e,t){const s=String(t?.message??t??"unknown failure");return new F(s,0,[F.problem(e,s)],t)}static async fromResponse(e){switch(D.parse(e.headers.get("Content-Type")).normalized){case"application/failures+json":{const t=await e.json().catch(()=>F.#I);if(t===F.#I)return F.#$(e);if(!Array.isArray(t))return F.#$(e,"as a failures array");const s=`${e.status} ${e.statusText}: ${t.length} failures`;return new F(s,e.status,t)}case"application/problem+json":{const t=await e.json().catch(()=>F.#I);if(t===F.#I)return F.#$(e);if("object"!=typeof t||null===t||Array.isArray(t))return F.#$(e,"as a problem object");const s=`${e.status} ${e.statusText}: ${t.title} ${t.detail}`;return new F(s,e.status,t.problems||[F.problem("GENERIC_PROBLEM",s)])}default:return F.#B(e)}}static#I=Symbol("unreadable body");static#$(e,t="as json"){const s=D.parse(e.headers.get("Content-Type")).normalized,r=`${e.status} ${e.statusText}: the ${s} body does not decode ${t}`;return new F(r,e.status,[F.problem("GENERIC_PROBLEM",r)])}static async#B(e){const t=await e.text().catch(()=>null),s=null===t?`${e.status} ${e.statusText}: the body could not be read`:`${e.status} ${e.statusText}: ${t}`;return new F(s,e.status,[F.problem("GENERIC_PROBLEM",s)])}}const I=e=>globalThis.document?.querySelector(`meta[name="${e}"]`)?.getAttribute("content")??void 0;class ${async intercept(e,t,s){if(e.origin!==(globalThis.window?.location?.origin??e.origin))return await s.proceed(e,t);const r=I("_csrf_header"),i=I("_csrf");return r&&i&&t.headers.set(r,i),await s.proceed(e,t)}}class B{#j;constructor(e){this.#j=e}async intercept(e,t,s){const r=await s.proceed(e,t);return 401===r.status?(window.location.href=this.#j,new Promise(()=>{})):r}}class j{#H;constructor(){this.#H=[]}withCsrfToken(){return this.#H.push(new $),this}withRedirectOnUnauthorized(e){return this.#H.push(new B(e)),this}withInterceptors(...e){return this.#H.push(...e),this}build(){return new V(this.#H)}}class H{async intercept(e,t,s){try{return await fetch(e,t)}catch(e){throw F.of("CONNECTION_PROBLEM",e)}}}class W{#H;#W;constructor(e,t){this.#H=e,this.#W=t}async proceed(e,t){const s=this.#H[this.#W];return await s.intercept(e,t,new W(this.#H,this.#W+1))}}class V{#H;static builder(){return new j}constructor(e){this.#H=e||[]}async exchange(e,t,s){const r=[...this.#H,...s||[],new H],i=new W(r,0),n=new URL(new Request(e).url),a={...t,headers:new Headers(t?.headers)};return await i.proceed(n,a)}request(e,t){return Q.create(this,e,t)}get(e){return Q.create(this,"GET",e)}head(e){return Q.create(this,"HEAD",e)}post(e){return Q.create(this,"POST",e)}put(e){return Q.create(this,"PUT",e)}patch(e){return Q.create(this,"PATCH",e)}delete(e){return Q.create(this,"DELETE",e)}}const U=async(e,t)=>{try{return await e[t]()}catch(e){throw F.of("UNMARSHALING_PROBLEM",e)}},G=e=>null==e?[]:"string"==typeof e?new URLSearchParams(e):"function"==typeof e[Symbol.iterator]?e:Object.entries(e);class Q{#V;#U;#G;#Q;#K;#J;#X;#H;#c;static create(e,t,s){const r=s.indexOf("#"),i=-1===r?"":s.slice(r),n=-1===r?s:s.slice(0,r),a=n.indexOf("?");return new Q(e,t,-1===a?n:n.slice(0,a),new URLSearchParams(-1===a?"":n.slice(a+1)),new Headers,void 0,{},[],i)}constructor(e,t,s,r,i,n,a,o,l=""){this.#V=e,this.#U=t,this.#G=s,this.#Q=r,this.#J=n,this.#K=i,this.#X=a,this.#H=o,this.#c=l}headers(e){for(const[t,s]of G(e))null==s?this.#K.delete(t):this.#K.set(t,s);return this}header(e,t){return null==t?this.#K.delete(e):this.#K.set(e,t),this}params(e){for(const[t,s]of G(e))null==s?this.#Q.delete(t):this.#Q.set(t,s);return this}param(e,...t){this.#Q.delete(e);const s=t.filter(e=>null!=e);if(0===s.length)return this;for(const t of s)this.#Q.append(e,t);return this}body(e){return this.#J=e,this}json(e){if(void 0===e)return this;const t=JSON.stringify(e);return this.#K.set("Content-Type","application/json"),this.#J=t,this}multipart(e){const t=new FormData;return e(new K(t)),this.#J=t,this}options(e){for(const[t,s]of Object.entries(e))this.#X[t]=s;return this}option(e,t){return this.#X[e]=t,this}interceptors(e){for(const t of e)this.#H.push(t);return this}interceptor(e){return this.#H.push(e),this}async exchange(){const e=this.#Q.size?`?${this.#Q}`:"",t={...this.#X,headers:this.#K,method:this.#U,body:this.#J};return await this.#V.exchange(`${this.#G}${e}${this.#c}`,t,this.#H)}async fetch(){try{const e=await this.exchange();if(!e.ok)throw await F.fromResponse(e);return e}catch(e){if(e instanceof k)throw e;throw F.of("UNEXPECTED_PROBLEM",e)}}async fetchText(){const e=await this.fetch();return await U(e,"text")}async fetchJson(){const e=await this.fetch();return 204===e.status?null:await U(e,"json")}async fetchBlob(){const e=await this.fetch();return await U(e,"blob")}async fetchArrayBuffer(){const e=await this.fetch();return await U(e,"arrayBuffer")}}class K{#Y;constructor(e){this.#Y=e}field(e,t){return this.#Y.append(e,t),this}blob(e,t,s){return this.#Y.append(e,t,s),this}blobs(e,t){for(const s of t)this.#Y.append(e,s);return this}json(e,t,s){const r=new Blob([JSON.stringify(t)],{type:"application/json"});return this.#Y.append(e,r,s),this}}var J=Object.freeze({__proto__:null,Base64:z,Failure:k,Hex:M,HttpClient:V,HttpClientBuilder:j,HttpClientError:F,HttpInterceptorChain:W,HttpMultipartRequestCustomizer:K,HttpRequestBuilder:Q,MediaType:D});const X=e=>{const t=t=>{try{e().removeItem(t)}catch{}},s=s=>{let r;try{r=e().getItem(s)}catch{return}if(null!==r)try{return JSON.parse(r)}catch{return void t(s)}};return{save:(t,s)=>{e().setItem(t,JSON.stringify(s))},load:s,remove:t,pop:e=>{const r=s(e);return t(e),r}}},Y=e=>({save(t,s,r){e.save(t,{revision:s,data:r})},load(t,s){const r=e.load(t);if(null!=r&&"object"==typeof r&&r.revision===s)return r.data;e.remove(t)}}),Z=X(()=>localStorage),ee=X(()=>sessionStorage),te=Y(Z),se=Y(ee);class re{static async fireAsync(e,t,s){e.dispatchEvent(t);const r=t.async?.promises??[],i=s?.mode??"broadcast";if("pipeline"===i&&r.length>1||"delegate"===i&&1!==r.length)throw Promise.all(r).catch(()=>{}),new Error("pipeline"===i?`[AsyncEvents] Event "${t.type}" is configured in 'pipeline' mode and expects at most one async listener, but ${r.length} listeners were triggered on this element.`:`[AsyncEvents] Event "${t.type}" is configured in 'delegate' mode and requires exactly one async listener, but ${r.length} were registered.`);return"broadcast"===i?Promise.all(r):Promise.resolve(r[0])}static asyncOn(e,t,s,r){const i=async e=>{const t=e;t.async||(t.async={promises:[]});const{promise:r,resolve:i,reject:n}=Promise.withResolvers();t.async.promises.push(r);try{i(await s(t))}catch(e){n(e)}};return e.addEventListener(t,i,r),i}static asyncOff(e,t,s,r){e.removeEventListener(t,s,r)}static mixInto(...e){for(const t of e)Object.assign(t.prototype,{async fireAsync(e,t){return await re.fireAsync(this,e,t)},asyncOn(e,t,s){return re.asyncOn(this,e,t,s)},asyncOff(e,t,s){re.asyncOff(this,e,t,s)}})}}class ie{#Z=0;take(){return++this.#Z,this.hold()}hold(){const e=this.#Z,t=this;return{get stale(){return e!==t.#Z}}}invalidate(){++this.#Z}}class ne{static sleep(e){return new Promise(t=>setTimeout(t,e))}static debounce(e,t,s){const r=s?.immediate??!1;let i=null,n=[],a=0;const o=()=>{const s=performance.now()-a;e>s?i=setTimeout(o,e-s):(i=null,r||t(...n),null===i&&(n=[]))};return[(...s)=>{n=s,a=performance.now(),null===i&&(i=setTimeout(o,e),r&&t(...n))},()=>{clearTimeout(i??void 0),i=null,n=[]}]}static throttle(e,t,s){const r=s?.leading??!0,i=s?.trailing??!0;let n=null,a=[],o=0;const l=()=>{o=r?performance.now():0,n=null,t(...a),null===n&&(a=[])};return[(...s)=>{const u=performance.now();o||r||(o=u);const c=0===o?0:e-(u-o);a=s,c<=0||c>e?(null!==n&&(clearTimeout(n),n=null),o=u,t(...a),null===n&&(a=[])):null===n&&i&&(n=setTimeout(l,c))},()=>{clearTimeout(n??void 0),n=null,a=[]}]}}class ae{static flatten(e,t,s){return Object.keys(e).reduce((r,i)=>{const n=t.length?`${t}.${i}`:i;return s.has(n)||"object"!=typeof e[i]||null===e[i]?r[n]=e[i]:Object.assign(r,ae.flatten(e[i],n,s)),r},{})}static#ee=new Set(["__proto__","prototype","constructor"]);static providePath(e,t,s){const r=t.split(".").map(e=>/^[0-9]+$/.test(e)?+e:e);for(const e of r)if(ae.#ee.has(e))throw new Error(`unsupported name segment '${e}' in '${t}'`);let i=e??{},n=null;for(let t=0;;++t){const a=r[t],o=r[t-1];if(Number.isInteger(a)&&!Array.isArray(i)&&(null!==n?n[o]=i=[]:e=i=[]),t===r.length-1)return i[a]=void 0!==s?s:a in i?i[a]:null,e;"object"==typeof i[a]&&null!==i[a]||(i[a]={}),n=i,i=i[a]}}static extract(e){if("radio"===e.getAttribute("type")){if(!e.checked)return;return"boolean"===e.dataset.fulBindType?"true"===e.value:e.value}return"checkbox"===e.getAttribute("type")?e.checked:"boolean"===e.dataset.fulBindType?e.value?"true"===e.value:null:"SELECT"===e.tagName&&e.multiple?Array.from(e.selectedOptions).map(e=>e.value):"INPUT"!==e.tagName&&"SELECT"!==e.tagName&&"TEXTAREA"!==e.tagName||""!==e.value&&void 0!==e.value?e.value:null}static#te(e){return"submit"===e.type||"reset"===e.type||"button"===e.type}static extractFrom(e,t){let s={};for(const r of e.elements)r.hasAttribute("name")&&(ae.#te(r)&&r!==t||r.matches(":disabled")&&r!==t||(s=ae.providePath(s,r.getAttribute("name"),ae.extract(r))));return s}static mutate(e,t){if("radio"!==e.getAttribute("type"))if("checkbox"!==e.getAttribute("type")){if("SELECT"===e.tagName&&e.multiple){const s=Array.isArray(t)?t.map(String):null==t?[]:[String(t)];return void Array.from(e.options).forEach(e=>{e.selected=s.includes(e.value)})}e.value=t}else e.checked=t;else e.checked=null!=t&&e.getAttribute("value")===String(t)}static mutateIn(e,t){const s=Array.from(e.elements).map(e=>e.getAttribute("name")).filter(e=>e);for(const[r,i]of Object.entries(ae.flatten(t,"",new Set(s))))for(const t of e.querySelectorAll(`[name='${CSS.escape(r)}']`))ae.mutate(t,i)}static errors(e,t,s){e.querySelectorAll("ful-field-error").forEach(e=>{e.setAttribute("aria-live",s?"off":"polite")});const r=e=>("FIELD_ERROR"===e.type||"INVALID_FORMAT"===e.type)&&e.context,i=t.filter(r),n=t.filter(e=>!r(e));e.querySelectorAll("[name]").forEach(e=>{e.setCustomValidity?.("")}),e.querySelectorAll("ful-errors").forEach(e=>{e.setAttribute("role","alert"),e.replaceChildren(),e.setAttribute("hidden","")});const a=[];i.forEach(t=>{const s=t.context.replace(/\[/g,".").replace(/\]\./g,".").replace(/\]/g,"").split(".");for(let r=s.length;0!==r;--r){const i=s.slice(0,r).join("."),n=e.querySelectorAll(`[name='${CSS.escape(i)}']`);if(0===n.length)continue;const a=s.slice(r).join(".");return void n.forEach(e=>{e.setCustomValidity?.(t.reason,a)})}a.push(t)});const o=[...n,...a];e.querySelectorAll("ful-errors").forEach(e=>{const t=e;0!==o.length?(e.removeAttribute("hidden"),t.innerText=o.map(e=>e.reason).join("\n")):t.innerText=""}),0!==t.length&&s&&Array.from(e.querySelectorAll(":invalid")).sort((e,t)=>e.getBoundingClientRect().y-t.getBoundingClientRect().y)[0]?.focus()}}class oe extends S{static formAssociated=!0;static observed=["disabled:presence","readonly:presence","required:presence","value"];static ROLE="presentation";#se;#re;#ie;#ne;#ae=[];constructor(){super(),this.internals.role=this.constructor.ROLE}#oe(){return[this.#ie??this.#se,...this.#ae].filter(e=>e)}#le({fragment:e,control:t,error:s,label:r=null,described:i=null,claims:n=null,announces:a=t,freeze:o=null,also:l=[]}){this.#se=t,this.#re=s,this.#ie=n,this.#ne=a,this.#ae=l,o&&o.addEventListener("click",e=>{this.readonly&&e.preventDefault()},!0),s&&((i??t).ariaDescribedByElements=[s]),r&&(t.ariaLabelledByElements=[r],r.addEventListener("click",()=>this.focus())),this.addEventListener("keydown",e=>{if("Enter"!==e.key||e.defaultPrevented||e.isComposing)return;const t=e.target;t.form!==this.internals.form&&oe.#ue(t)&&this._requestSubmit()}),this.replaceChildren(e)}static#ue(e){return e instanceof HTMLInputElement&&!["file","button","submit","reset","image"].includes(e.type)}focus(e){this.#se?.focus(e)}setCustomValidity(e,t){if(c.set(this.#ne??this.#se,"aria-invalid",e?"true":null),!e)return this.internals.setValidity({}),void(this.#re.innerText="");this.internals.setValidity({customError:!0}," "),this.#re.innerText=e}_requestSubmit(){const e=this.internals.form;if(!e)return;const t=e.querySelectorAll("button:not(:disabled), input:not(:disabled)");e.requestSubmit([...t].find(t=>"submit"===t.type&&t.form===e))}_notifyChange(e={}){this.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!1,detail:{value:this.value,...e}}))}_interactive(){return!this.matches(":disabled")&&!this.readonly}get value(){}set value(e){}formResetCallback(){this.value=this.unmarshal("value",this.getAttribute("value"))}get disabled(){return this.hasAttribute("disabled")}set disabled(e){this.reflectTo("disabled",e);for(const t of this.#oe())t.toggleAttribute("disabled",e)}get readonly(){return this.hasAttribute("readonly")}set readonly(e){for(const t of this.#oe())t.readOnly=e;this.#ne&&c.set(this.#ne,"aria-readonly",e?"true":null),this.reflectTo("readonly",e)}get required(){return this.hasAttribute("required")}set required(e){this.#ne&&c.set(this.#ne,"aria-required",e?"true":null),this.reflectTo("required",e)}render(e){const t=this._build(e);if(t instanceof Promise)return t.then(e=>this.#ce(e));this.#ce(t)}#ce(e){this.#le(e)}_build(e){throw new Error(`${this.constructor.name} must implement _build`)}}class le{#de;#he;#U;#pe;#fe;constructor(e,t,s,r,i){this.#de=e,this.#he=t,this.#U=s,this.#pe=r,this.#fe=i}prepare(e,t){return this.#pe(e,t)}async submit(e,t){return await this.#de.request(this.#U,this.#he).json(e).fetch()}transform(e,t){return this.#fe(e,t)}}class ue{#pe;#fe;constructor(e,t){this.#pe=e,this.#fe=t}async prepare(e,t){return await this.#pe(e,t)}async submit(e,t,s){return s}async transform(e,t){return await this.#fe(e,t)}}class ce{static create(e,t){const s=e.component("http-client"),r=e.declared("request-mapper")?e.component(e.declared("request-mapper")):e=>e,i=e.declared("response-mapper")?e.component(e.declared("response-mapper")):e=>e,n=e.declared("action");if(!n)return new ue(r,i);const a=e.declared("method")??"POST";return new le(s,n,a,r,i)}}class de extends S{static attributes=["action","method","loader","request-mapper","response-mapper","clear-invalid-on-change:presence","scroll-on-error:presence"];form;render(){const e=document.createElement("form");this.form=e,e.setAttribute("novalidate",""),c.forward("form-",this,e),e.replaceChildren(...this.childNodes),e.addEventListener("submit",async e=>{e.preventDefault(),e.stopPropagation(),await this.submit(e.submitter??void 0)}),this.addEventListener("click",e=>{const t=e.target;t.closest?.('[aria-disabled="true"]')&&(e.preventDefault(),e.stopImmediatePropagation())},!0),this.declared("clear-invalid-on-change")&&this.addEventListener("change",e=>{e.target.setCustomValidity?.("")}),this.replaceChildren(e)}#me=!1;async submit(e){if(this.#me)return;let t,s;this.#me=!0,this.spinner(!0);try{const r=this.component(this.declared("loader")??"loaders:form").create(this);t=ae.extractFrom(this.form,e),s=await r.prepare(t,this);const i=new CustomEvent("submit",{bubbles:!0,cancelable:!0,detail:{submitter:e,values:t,request:s}});if(!this.dispatchEvent(i))return;this.errors=[];const n=new CustomEvent("submit:requested",{bubbles:!0,cancelable:!1,detail:{submitter:e,values:i.detail.values,request:i.detail.request}});let a=await re.fireAsync(this,n,{mode:"pipeline"});s=n.detail.request,a=await r.submit(s,this,a);const o=await r.transform(a,this);this.dispatchEvent(new CustomEvent("submit:success",{bubbles:!0,cancelable:!1,detail:{submitter:e,values:t,request:s,response:o}}))}catch(r){this.dispatchEvent(new CustomEvent("submit:failure",{bubbles:!0,cancelable:!1,detail:{submitter:e,values:t,request:s,exception:r}})),r instanceof k&&(this.errors=r.problems),console.warn("failed to submit form",this,"reason:",r)}finally{this.#me=!1,this.spinner(!1)}}reset(){this.form.reset()}#ge=0;#be(e){if(c.defaultValue(e,"role","status"),e.hidden=!1,""!==e.textContent.trim())return;const t=document.createElement("span");t.className="ful-sr-only",t.dataset.ref="spinner-label",e.append(t),t.textContent=P.of().t("spinner.loading")}spinner(e){if(e){if(++this.#ge,1!==this.#ge)return}else if(this.#ge=Math.max(0,this.#ge-1),0!==this.#ge)return;c.set(this,"aria-busy",e?"true":null),this.querySelectorAll("ful-spinner").forEach(t=>{const s=t;e?this.#be(s):(s.hidden=!0,s.querySelector(":scope > [data-ref=spinner-label]")?.remove())}),this.querySelectorAll("input,button").forEach(t=>{const s=t;if("submit"===s.type||"reset"===s.type)if(e)s.dataset.wd=s.getAttribute("aria-disabled")??"",s.setAttribute("aria-disabled","true");else{if(void 0===s.dataset.wd)return;c.set(s,"aria-disabled",s.dataset.wd||null),delete s.dataset.wd}})}set values(e){ae.mutateIn(this.form,e)}get values(){return ae.extractFrom(this.form)}set errors(e){ae.errors(this.form,e,this.declared("scroll-on-error"))}}const he=new t(100),pe=(e,t)=>he.getOrCompute(`${e}:${t}`,()=>{try{return new RegExp(t,"g")}catch(s){return console.warn(`invalid ${e} attribute`,t,s),null}}),fe=new WeakSet;class me extends oe{static observed=["placeholder"];static attributes=["type","v-type","keep","reject","uppercase:presence","trim:presence"];static slots=!0;static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <input data-tpl-if="type != \'textarea\'" data-tpl-type="type" placeholder=" " form="">\n <textarea data-tpl-if="type == \'textarea\'" placeholder=" " form=""></textarea>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_input;_type(){return this.declared("type")??("number"===this.declared("v-type")?"number":"text")}_build({slots:e}){const t=this._type(),s=this.template().withOverlay({type:t,slots:e}).render();return this._input=s.querySelector("input,textarea"),c.forward("input-",this,this._input),this._input.addEventListener("input",e=>{const t=(e=>{const t=e.declared("keep"),s=e.declared("reject");if(null===t||null===s||fe.has(e)||(fe.add(e),console.warn("a ful-input declares both keep and reject: keep is applied, reject is ignored",e)),null!==t){const e=pe("keep",t);return e&&(t=>(t.match(e)??[]).join(""))}if(null!==s){const e=pe("reject",s);return e&&(t=>t.replace(e,""))}return null})(this);if(!t)return;const s=e.target.value,r=t(s);if(s===r)return;const i=e.target.selectionStart;if(e.target.value=r,null===i)return;const n=t(s.slice(0,i)).length;e.target.setSelectionRange(n,n)}),this._input.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()}),{fragment:s,control:this._input,error:s.querySelector("ful-field-error"),label:s.querySelector("label")}}get value(){const e=this.declared("uppercase"),t=this.declared("trim"),s=this._input.value,r=e?s.toUpperCase():s,i=t?r.trim():r;if(""===i)return null;if("number"===this.declared("v-type")){const e=Number(i);return Number.isNaN(e)?i:e}return i}set value(e){this._input.value=""===e||void 0===e?null:e}get placeholder(){const e=this._input.getAttribute("placeholder");return" "===e?null:e}set placeholder(e){c.set(this._input,"placeholder",e??" "),this.reflectTo("placeholder",e)}}class ge extends S{static attributes=["locale","default"];render(){const e=this.textContent.trim(),[t,s,r]=e.split("-").map(Number),i=""===e?null:new Date(t,s-1,r);if(null===i||Number.isNaN(i.getTime()))return void this.replaceChildren(this.declared("default")??"");const{date:n}=P.of({locale:this.declared("locale")??void 0});this.replaceChildren(n(i,{year:"numeric",month:"numeric",day:"numeric"}))}}class be extends S{static attributes=["locale","default"];render(){const e=this.textContent.trim(),t=""===e?null:new Date(be.isoToLocal(e));if(null===t||Number.isNaN(t.getTime()))return void this.replaceChildren(this.declared("default")??"");const{date:s}=P.of({locale:this.declared("locale")??void 0});this.replaceChildren(s(t,{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1}))}static#ve(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)?new Date(`${e}T00:00:00`):new Date(e)}static isoToLocal(e){const t=be.#ve(e),s=(e,t)=>String(t).padStart(e,"0");return`${t.getFullYear()}-${s(2,t.getMonth()+1)}-${s(2,t.getDate())}T${s(2,t.getHours())}:${s(2,t.getMinutes())}:${s(2,t.getSeconds())}.${s(3,t.getMilliseconds())}`}static localToIso(e){const t=be.#ve(e);return Number.isNaN(t.getTime())?null:t.toISOString()}}class ve extends me{static observed=["step","min","max"];_type(){return"date"}get min(){const e=this._input.min;return""===e?null:e}set min(e){this._input.min=ve.#ye(e)}get max(){const e=this._input.max;return""===e?null:e}set max(e){this._input.max=ve.#ye(e)}get step(){const e=this._input.step;return""===e?null:e}set step(e){this._input.step=e??""}static#ye(e){if(!e)return"";const t=e=>new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().split("T")[0];if("now"===e)return t(new Date);const s=/^([+-])(\d+)([dmy])$/.exec(e);if(!s)return e;const r="-"===s[1]?-1:1,i=+s[2],n=new Date;switch(n.setHours(0,0,0,0),s[3]){case"d":n.setDate(n.getDate()+i*r);break;case"m":{const e=n.getDate();n.setMonth(n.getMonth()+i*r),n.getDate()!==e&&n.setDate(0);break}case"y":n.setFullYear(n.getFullYear()+i*r)}return t(n)}}class ye extends ve{_type(){return"time"}get min(){const e=this._input.min;return""===e?null:e}set min(e){this._input.min=this.#we(e)}get max(){const e=this._input.max;return""===e?null:e}set max(e){this._input.max=this.#we(e)}#we(e){if(!e)return"";const t=new Date;if("now"!==e){const s=/^([+-])(\d+)([hm])$/.exec(e);if(!s)return e;const r="-"===s[1]?-1:1,i=+s[2]*r;"h"===s[3]?t.setHours(t.getHours()+i):t.setMinutes(t.getMinutes()+i)}return ye.#Ee(t,Number(this._input.step)||60)}static#Ee(e,t){const s=e=>String(e).padStart(2,"0"),r=3600*e.getHours()+60*e.getMinutes()+e.getSeconds(),i=Math.floor(r/t)*t,n=s(Math.floor(i/3600)),a=s(Math.floor(i%3600/60));return t%60==0?`${n}:${a}`:`${n}:${a}:${s(i%60)}`}}class we extends me{static observed=["step","min","max"];_type(){return"datetime-local"}get value(){return be.localToIso(this._input.value)}set value(e){this._input.value=e?be.isoToLocal(e):""}get min(){return be.localToIso(this._input.min)}set min(e){this._input.min=e?be.isoToLocal(e):""}get max(){return be.localToIso(this._input.max)}set max(e){this._input.max=e?be.isoToLocal(e):""}get step(){const e=this._input.step;return""===e?null:e}set step(e){this._input.step=e??""}}class Ee extends me{static WARNING_TIMEOUT=5e3;static list(e=[]){const t=new DataTransfer;for(const s of e)t.items.add(s);return t.files}static observed=["placeholder","accept:csv","multiple:presence","item-list:presence","dropzone:presence","max-files:number","max-file-size:number","max-total-size:number","value"];#xe;#Ae;#Se;#Te;#Ce;_type(){return"file"}static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <input data-tpl-type="type" placeholder=" " form="">\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\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(\'files.dropzone-label\') }}\n </div>\n <ful-item-list></ful-item-list>\n <ful-field-warnings role="status" aria-live="polite"></ful-field-warnings>\n <ful-field-error></ful-field-error>\n ';static templates={items:'\n <ful-item data-tpl-each="files" data-tpl-var="file" data-tpl-data-name="file.name">\n <div><span>{{ file.name }}</span><span>{{ #l10n:bytes(file.size) }}</span><button type="button" data-tpl-aria-label="#l10n:t(\'files.remove\')"><ful-icon name="x-lg" aria-hidden="true"></ful-icon></button></div>\n </ful-item>\n ',warning:"<ful-field-warning>{{ #l10n:t(key, args) }}</ful-field-warning>"};#_e;_build(e){const t=super._build(e),s=t.fragment;return this.#Ae=s.querySelector("ful-item-list"),this.#_e=e.slots?.items&&!u.isBlank(e.slots.items)?x.fromFragment(e.slots.items):null,this.#Se=s.querySelector("[data-ref=dropzone]"),this.#Te=s.querySelector("ful-field-warnings"),this.#Ce=s.querySelector("ful-control-group"),this.#Te.addEventListener("animationend",e=>{e.target.remove()}),this.#Ae.addEventListener("click",e=>{if(!e.target.closest("button"))return;if(!this._interactive())return;const t=[...this.#Ae.children].indexOf(e.target.closest("ful-item"));-1!==t&&(this.files=Ee.list([...this.files].filter((e,s)=>s!==t)),this._notifyChange())}),this.#Se.addEventListener("click",e=>{this._interactive()&&this.querySelector("input")?.click()}),this.#Se.addEventListener("dragover",e=>{e.preventDefault(),this.toggleAttribute("dragover",!0)}),this.#Se.addEventListener("dragleave",()=>{this.toggleAttribute("dragover",!1)}),this.#Se.addEventListener("drop",e=>{if(e.preventDefault(),this.toggleAttribute("dragover",!1),!this._interactive())return;const t=[...e.dataTransfer.items].filter(e=>"file"===e.kind).map(e=>e.getAsFile()).filter(e=>null!==e);0===t.length||t.length>1&&!this.multiple||(this.files=Ee.list(t),this._notifyChange())}),this._input.addEventListener("change",e=>{this.#Oe()}),{...t,freeze:this.#Ce}}#Oe(){this.setCustomValidity(),this.#Te.replaceChildren(),this.#qe(),this.#Re(),this.#Ne(),this.#Pe(),(this.#_e??this.template("items")).withOverlay({files:this.files}).renderTo(this.#Ae)}warning(e,t){this.template("warning").withOverlay({key:e,args:t}).appendTo(this.#Te);const s=this.#Te.lastElementChild;setTimeout(()=>s.remove(),Ee.WARNING_TIMEOUT)}#Le(e){const t=e.name.toLowerCase();return this.#xe.some(s=>{const r=s.toLowerCase().split(";")[0].trim();return r.startsWith(".")?t.endsWith(r):r.endsWith("/*")?e.type.startsWith(`${r.slice(0,-1)}`):r.includes("/")&&e.type===r})}#qe(){if(!this.#xe.length)return;const e=[...this.files].filter(e=>!this.#Le(e));0!==e.length&&(this.warning("files.unacceptable-file-type",{types:this.#xe.join(", ")}),this._input.files=Ee.list([...this.files].filter(t=>!e.includes(t))))}#Pe(){null!==this.#ke&&(this.files.length<=this.#ke||(this.warning("files.max-files-exceeded",{count:this.#ke}),this._input.files=Ee.list()))}#Re(){if(null===this.#ze)return;const e=[...this.files].filter(e=>e.size>this.#ze);0!==e.length&&(this.warning("files.max-file-size-exceeded",{size:P.of().bytes(this.#ze)}),this._input.files=Ee.list([...this.files].filter(t=>!e.includes(t))))}#Ne(){null!==this.#Me&&([...this.files].reduce((e,t)=>e+t.size,0)<=this.#Me||(this.warning("files.max-total-size-exceeded",{size:P.of().bytes(this.#Me)}),this._input.files=Ee.list()))}get accept(){return this.#xe}set accept(e){this._input.accept=e.join(","),this.#xe=e,this.reflectTo("accept",e)}get multiple(){return this._input.multiple}set multiple(e){this._input.multiple=e,this.reflectTo("multiple",e)}get files(){return this._input.files}set files(e){this._input.files=e,this.#Oe()}get file(){return this.files[0]??null}set file(e){this.files=Ee.list(e?[e]:[])}get value(){const e=Array.from(this._input.files).map(e=>e.name);return this.multiple?e:e[0]??null}set value(e){e||(this.files=Ee.list())}formResetCallback(){this.value=null}get totalsize(){return Array.from(this.files).reduce((e,t)=>e+t.size,0)}#ke;get maxFiles(){return this.#ke}set maxFiles(e){this.#ke=e,this.reflectTo("max-files",e)}#ze;get maxFileSize(){return this.#ze}set maxFileSize(e){this.#ze=e,this.reflectTo("max-file-size",e)}#Me;get maxTotalSize(){return this.#Me}set maxTotalSize(e){this.#Me=e,this.reflectTo("max-total-size",e)}#De;get itemList(){return this.#De}set itemList(e){this.#De=e,this.reflectTo("item-list",e)}#Fe;get dropzone(){return this.#Fe}set dropzone(e){this.#Fe=e,this.reflectTo("dropzone",e)}}const xe=new Map;let Ae=0,Se=!1;const Te=(e,t,s)=>Math.min(Math.max(e,t),Math.max(t,s)),Ce=(e,t)=>{const{invoker:s,stretch:r}=t,i=s.getBoundingClientRect(),n=document.documentElement,a=n.clientWidth,o=n.clientHeight;e.style.removeProperty("margin");const l=getComputedStyle(e),u=parseFloat(l.marginTop)||0,c=parseFloat(l.marginRight)||0,d=parseFloat(l.marginBottom)||0,h=parseFloat(l.marginLeft)||0;if(e.style.right="auto",e.style.bottom="auto",e.style.margin="0",r){const t=Math.min(i.width,a-16);e.style.width=`${t}px`,e.style.left=`${Te(i.left,8,a-t-8)}px`;const s=e.getBoundingClientRect().height;return void(e.style.top=`${Te(i.bottom+u,8,o-s-8)}px`)}const p=(e=>e.matches("ful-note, .ful-note, [placement]"))(e),f=p?e.getAttribute("placement")??"bottom":"bottom";e.style.removeProperty("max-width");const m=Math.min(parseFloat(l.maxWidth)||a,a-16);e.style.maxWidth=`${m}px`,e.style.left="8px";const g=e.getBoundingClientRect().width;let b="right"===f?i.right+h:"left"===f?i.left-c-g:p?i.left+i.width/2-g/2:i.left;b=Te(b,8,a-g-8),e.style.left=`${b}px`,e.style.maxWidth=`${Math.min(m,a-8-b)}px`;const v=e.getBoundingClientRect().height,y="top"===f?i.top-d-v:"right"===f||"left"===f?i.top+i.height/2-v/2:i.bottom+u;e.style.top=`${Te(y,8,o-v-8)}px`,p&&((e,t)=>{const s=t.getBoundingClientRect(),r=e.getBoundingClientRect();e.style.setProperty("--ful-note-callout-inline",s.left+s.width/2-r.left-e.clientLeft+"px"),e.style.setProperty("--ful-note-callout-block",s.top+s.height/2-r.top-e.clientTop+"px")})(e,s)},_e=()=>{Ae=0;for(const[e,t]of xe)e.isConnected&&t.invoker.isConnected?Ce(e,t):xe.delete(e)},Oe=()=>{!Ae&&xe.size>0&&(Ae=requestAnimationFrame(_e))},qe=(e,t,{prefix:s="ful-anchor",invoke:r=!1,expanded:i=!1,stretch:n=!1,handPlace:a=!1}={})=>{const o=c.uid(s);r&&(t.id=t.id||o,e.setAttribute("popovertarget",t.id));const l=`--${o}`;if(e.style.anchorName=l,t.style.positionAnchor=l,i&&(e.setAttribute("aria-expanded","false"),t.addEventListener("toggle",t=>{e.setAttribute("aria-expanded","open"===t.newState?"true":"false")})),!a&&CSS.supports("anchor-name: --ful-probe")&&CSS.supports("position-anchor: --ful-probe")&&CSS.supports("position-area: bottom")&&CSS.supports("top: anchor(bottom)")&&CSS.supports("width: anchor-size(width)"))return;const u={invoker:e,stretch:n};t.addEventListener("beforetoggle",e=>{"open"===e.newState&&Ce(t,u)}),t.addEventListener("toggle",e=>{"open"===e.newState?(xe.set(t,u),Ce(t,u)):(xe.delete(t),(e=>{for(const t of["top","left","right","bottom","margin","max-width","width","--ful-note-callout-inline","--ful-note-callout-block"])e.style.removeProperty(t)})(t))}),Se||(Se=!0,document.addEventListener("scroll",Oe,!0),window.addEventListener("resize",Oe))};class Re{#de;#he;#U;#fe;#Ie;#$e;#C;#Be;#je=new ie;constructor({http:e,url:t,method:s,responseMapper:r,prefetch:i,revision:n}){this.#de=e,this.#he=t,this.#U=s,this.#fe=r,this.#Ie=i,this.#$e=n,this.#C=null,this.#Be=null}async prefetch(){this.#Ie&&await this.#He()}async exact(...e){return(await this.#He()).filter(({key:t})=>e.some(e=>e==t))}async load(e){return(await this.#He()).filter(({label:t})=>(t??"").toLowerCase().includes(e?.toLowerCase()??""))}async invalidate(){this.#je.invalidate(),this.#C=null,this.#Be=null}async reconfigureUrl(e){await this.invalidate(),this.#he=e}async#He(){if(null===this.#C){if(null===this.#Be){const e=this.#je.hold();this.#Be=Re.#We(this.#de,this.#U,this.#he,this.#$e).then(t=>{e.stale||(this.#C=this.#fe(t))}).finally(()=>{e.stale||(this.#Be=null)})}await this.#Be}if(null===this.#C)throw new Error("superseded by a reconfiguration");return this.#C}static async#We(e,t,s,r){const i=`${t}@${s}`;if(null!==r){const e=te.load(i,r);if(void 0!==e)return e}const n=await e.request(t,s).fetchJson();if(null!==r)try{te.save(i,r,n)}catch(e){console.warn("failed to cache the select options",e)}return n}}class Ne{#de;#he;#U;#fe;constructor({http:e,url:t,method:s,responseMapper:r}){this.#de=e,this.#he=t,this.#U=s,this.#fe=r}async invalidate(){}async reconfigureUrl(e){this.#he=e}async exact(...e){const t=await this.#de.request(this.#U,this.#he).param("k",...e).fetchJson();return this.#fe(t)}async load(e){const t=await this.#de.request(this.#U,this.#he).param("s",e).fetchJson();return this.#fe(t)}}class Pe{#C;constructor(e){this.#C=e}update(e){this.#C=e}async invalidate(){}exact(...e){return this.#C.filter(({key:t})=>e.some(e=>e==t))}load(e){return this.#C.filter(({label:t})=>(t??"").toLowerCase().includes(e?.toLowerCase()??""))}}class Le{static from({data:e,http:t,url:s,method:r="POST",mode:i,prefetch:n=!1,revision:a=null,responseMapper:o}){return s?"chunked"===i?new Ne({http:t,url:s,method:r,responseMapper:o}):new Re({http:t,url:s,method:r,responseMapper:o,prefetch:n,revision:a}):new Pe(e??[])}static create(e,t){if(!e.declared("src")){const e=Array.from(t.options?.querySelectorAll("option")??[]);return Le.from({data:e.map(e=>({key:e.getAttribute("value")??e.innerText.trim(),label:e.innerText.trim(),metadata:void 0}))})}return Le.from({http:e.component("http-client"),url:e.declared("src"),method:e.declared("method")??"POST",mode:e.declared("mode"),prefetch:e.declared("preload"),revision:e.declared("revision"),responseMapper:Le.#Ve(e)})}static#Ve(e){return e.declared("k-expr")&&e.declared("l-expr")?t=>e._registry.evaluator().withOverlay(t).evaluateExpression(e.declared("d-expr")??"self").map(t=>{const s=e._registry.evaluator().withOverlay(t);return{key:s.evaluateExpression(e.declared("k-expr")),label:s.evaluateExpression(e.declared("l-expr")),metadata:s.evaluateExpression(e.declared("m-expr")??"self")}}):e.declared("response-mapper")?e.component(e.declared("response-mapper")):e=>e.map(([e,t,s])=>({key:e,label:t,metadata:s}))}}class ke extends S{static attributes=["listbox"];static slots=!0;static template='\n <ful-spinner class="centered" role="status" hidden><span class="ful-sr-only">{{ #l10n:t(\'spinner.loading\') }}</span></ful-spinner>\n <p data-ref="empty" aria-live="polite" hidden>{{ #l10n:t(\'dropdown.empty\') }}</p>\n <menu tabindex="-1" role="listbox" hidden></menu>\n ';static templates={options:'\n <li data-tpl-each="self" data-tpl-selected="index == 0" data-tpl-value="index" role="option">\n {{ label }}\n </li>\n '};#Ue;#Ge;#Qe;#Ke;#X=new Map;#Je=new ie;render({slots:e}){const t=this.template().render();this.#Ke=u.isBlank(e.default)?this.template("options"):x.fromFragment(e.default),this.#Ue=t.querySelector("ful-spinner"),this.#Qe=t.querySelector("p[data-ref=empty]"),this.#Ge=t.querySelector("menu"),this.#Ge.id=this.declared("listbox")||c.uid("ful-listbox"),this.#Ge.addEventListener("click",e=>{e.stopPropagation();const t=e.target.closest("li");t?this.#Xe(t):this.hide()}),this.replaceChildren(t)}#Ye(){return this.#Ge?.querySelector("[selected]")??this.#Ge?.firstElementChild??null}#Ze(e){if(e){for(const t of this.#Ge.querySelectorAll("li"))t.toggleAttribute("selected",t===e);e.id||=c.uid("ful-option"),this.#et(e.id),e.scrollIntoView({block:"nearest",behavior:matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth"})}else this.#et(null)}acceptSelection(){const e=this.#Ye();e&&this.#Xe(e)}update(e,t=[]){if(void 0===e)throw new Error("null data");this.#X=new Map(e.map((e,t)=>[String(t),e]));const s=e.map((e,t)=>({index:t,...e}));this.#Ke.withOverlay(s).renderTo(this.#Ge);for(const[s,r]of[...this.#Ge.children].entries()){const i=t.some(t=>t==e[s]?.key);r.toggleAttribute("picked",i),r.setAttribute("aria-selected",i?"true":"false")}this.#Qe.toggleAttribute("hidden",0!==e.length),this.#Ge.toggleAttribute("hidden",0===e.length);const r=e.findIndex(({key:e})=>t.some(t=>t==e));this.#Ze(r>=0?this.#Ge.children[r]:this.#Ye())}#Xe(e){const t=e.getAttribute("value"),s=this.#X.get(t);this.hide(),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!1,detail:{index:t,entry:s}}))}hide(){this.#Je.invalidate(),this.matches(":popover-open")&&this.hidePopover(),this.#et(null)}#et(e){this.dispatchEvent(new CustomEvent("activechange",{bubbles:!1,cancelable:!1,detail:{id:e}}))}get shown(){return this.matches(":popover-open")}async show(e,t=[]){const s=this.#Je.take();this.matches(":popover-open")||this.showPopover(),this.#Ge.setAttribute("hidden",""),this.#Ue.removeAttribute("hidden");try{const r=await e();if(s.stale)return;this.update(r,t)}catch(e){if(s.stale)return;throw this.hide(),e}finally{s.stale||this.#Ue.setAttribute("hidden","")}}async moveOrShow(e,t,s=[]){if(this.shown){const t=this.#Ye(),s=t?.[(e?"next":"previous")+"ElementSibling"];return void(t&&s&&this.#Ze(s))}await this.show(t,s)}jump(e){const t=e?this.#Ge.firstElementChild:this.#Ge.lastElementChild;t&&this.#Ze(t)}page(e){const t=this.#Ye();if(!t)return;const s=Array.from(this.#Ge.children),r=this.#tt(),i=s[Math.max(0,Math.min(s.length-1,s.indexOf(t)+(e?r:-r)))];this.#Ze(i)}#tt(){const e=this.#Ge.firstElementChild;return e&&0!==e.offsetHeight?Math.max(1,Math.trunc(this.#Ge.clientHeight/e.offsetHeight)):1}}class ze extends oe{static attributes=["name","loader","k-type","src","method","mode","preload:presence","revision","k-expr","l-expr","d-expr","m-expr","response-mapper"];static observed=["multiple:presence","item-list:presence","value:csv"];static slots=!0;static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-control>\n <input type="text" form="" autocomplete="off" role="combobox" aria-autocomplete="list" aria-haspopup="listbox" aria-expanded="false">\n </ful-control>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n <ful-dropdown popover="manual">{{{{ slots.dropdown }}}}</ful-dropdown>\n </ful-control-group>\n <ful-item-list></ful-item-list>\n <ful-field-error></ful-field-error>\n ';static templates={items:'\n <ful-item data-tpl-each="entries" data-tpl-var="entry" data-tpl-data-key="entry.key">\n <div><span>{{ entry.label }}</span><button type="button" data-tpl-aria-label="#l10n:t(\'select.remove\')"><ful-icon name="x-lg" aria-hidden="true"></ful-icon></button></div>\n </ful-item>\n '};#st;#se;#rt;#it;#Ae;#_e;#nt;#at=!1;#ot=new Map;#lt=new ie;#ut=!1;#ct;#dt;_build({slots:e}){const t=this.declared("name");this.#st=this.component(this.declared("loader")??"loaders:select").create(this,{options:e.options}),this.#nt=this.declared("multiple"),this.#st.prefetch?.()?.catch(e=>{console.warn("failed to prefetch select options",this,"reason:",e)});const s=this.template().withOverlay({slots:e,name:t}).render();this.#it=s.querySelector("input"),this.#Ae=s.querySelector("ful-item-list"),this.#_e=e.items&&!u.isBlank(e.items)?x.fromFragment(e.items):null,c.forward("input-",this,this.#it),this.#se=s.querySelector("ful-control"),this.#rt=s.querySelector("ful-dropdown");const r=c.uid("ful-listbox");this.#rt.setAttribute("listbox",r),this.#it.setAttribute("aria-controls",r),this.#rt.addEventListener("beforetoggle",e=>{const t="open"===e.newState;this.#it.setAttribute("aria-expanded",t?"true":"false"),t||this.#it.removeAttribute("aria-activedescendant")}),this.#rt.addEventListener("activechange",e=>{c.set(this.#it,"aria-activedescendant",e.detail.id)});const i=s.querySelector("ful-control-group");return qe(i,this.#rt,{prefix:"ful-select",stretch:!0}),[this.#ct,this.#dt]=ne.throttle(400,()=>this.#ht()),this.#pt(),this.#ft(),this.#mt(),this.#gt(),{fragment:s,control:this.#it,error:s.querySelector("ful-field-error"),label:s.querySelector("label")}}#pt(){this.addEventListener("click",e=>{this._interactive()&&(this.#rt.shown?this.#bt():(this.#it.focus(),this.#ct()))}),this.#Ae.addEventListener("click",e=>{e.stopPropagation(),e.target.closest("button")&&this._interactive()&&this.#vt([...this.#Ae.children].indexOf(e.target.closest("ful-item")))}),this.#se.addEventListener("click",e=>{const t=e.target instanceof Element?e.target.closest("ful-badge"):null;t&&(e.stopPropagation(),this.#yt(t))})}#ft(){this.addEventListener("keydown",e=>{const t=e.target instanceof Element?e.target.closest("ful-badge"):null;t?this.#wt(e,t):"ArrowLeft"===e.code&&e.target===this.#it&&0===this.#it.selectionStart&&0===this.#it.selectionEnd&&this.#Et().at(-1)?.focus()})}#mt(){this.#it.addEventListener("change",e=>{e.stopPropagation()}),this.#it.addEventListener("focus",()=>{this.#ut||this.#it.select()}),this.#it.addEventListener("blur",e=>{e.stopPropagation(),e.relatedTarget&&this.contains(e.relatedTarget)||(this.#dt(),this.#bt())}),this.#it.addEventListener("keydown",e=>{this._interactive()&&this.#xt(e)}),this.#it.addEventListener("input",e=>{e.stopPropagation(),this._interactive()&&(this.#ut=!0,this.#ct())})}#gt(){this.#rt.addEventListener("change",e=>{e.stopPropagation(),this._interactive()?(this.#nt||this.#ot.clear(),this.#ut=!1,this.#ot.set(this.#At(e.detail.entry.key),e.detail.entry),this.#St(),this.#Tt(),this.#it.focus(),this.#rt.hide(),this.#nt||this.#it.select()):this.#bt()})}async withLoader(e){return await e(this.#st)}async reload(){await(this.#st.invalidate?.()),await(this.#st.prefetch?.());const e=[...this.#ot.keys()];0!==e.length&&await this.#i(e,this.#lt.take())}#Et(){return Array.from(this.#se.querySelectorAll(":scope > ful-badge"))}#yt(e){this._interactive()&&this.#vt(this.#Et().indexOf(e))}#vt(e){const t=Array.from(this.#ot.keys())[e];void 0!==t&&(this.#ot.delete(t),this.#St(),this.#Tt())}#wt(e,t){switch(e.code){case"NumpadEnter":case"Enter":case"Space":case"Backspace":case"Delete":e.preventDefault(),this.#yt(t),this.#it.focus();break;case"ArrowLeft":e.preventDefault(),(this.#Et()[this.#Et().indexOf(t)-1]??this.#it).focus();break;case"ArrowRight":e.preventDefault(),(this.#Et()[this.#Et().indexOf(t)+1]??this.#it).focus();break;case"Escape":this.#it.focus()}}#xt(e){switch(e.code){case"ArrowUp":case"ArrowDown":e.preventDefault(),this.#Ct(e);break;case"Home":this.#rt.shown&&(e.preventDefault(),this.#rt.jump(!0));break;case"End":this.#rt.shown&&(e.preventDefault(),this.#rt.jump(!1));break;case"PageDown":case"PageUp":this.#rt.shown&&(e.preventDefault(),this.#rt.page("PageDown"===e.code));break;case"Escape":case"Tab":this.#dt(),this.#bt();break;case"NumpadEnter":case"Enter":if(!this.#rt.shown)return;e.preventDefault(),this.#ut=!1,this.#_t(),this.#rt.acceptSelection();break;case"Backspace":0===this.#it.selectionStart&&0===this.#it.selectionEnd&&this.#vt(this.#ot.size-1)}}#Ct(e){const t="ArrowDown"===e.code;e.altKey?t&&!this.#rt.shown?this.#ht():!t&&this.#rt.shown&&this.#bt():(this.#Ot(),this.#rt.moveOrShow(t,()=>this.#st.load(this.#it.value),[...this.#ot.keys()]))}#bt(){this.#rt.hide(),this.#ut=!1,this.#_t()}#ht(){return this.#Ot(),this.#rt.show(()=>this.#st.load(this.#it.value),[...this.#ot.keys()])}#Ot(){this.#ut||(this.#it.value="")}#_t(){const e=this.#ot.values().next().value;this.#it.value=this.#nt?"":e?.label??""}#qt(){return[...this.#ot.values()]}#St(){this._notifyChange({entry:this.entry})}#Tt(){const e=this.#nt?Array.from(this.#ot.entries()).map(([e,t],s)=>{const r=document.createElement("ful-badge");return r.setAttribute("role","button"),r.setAttribute("tabindex",0===s?"0":"-1"),r.setAttribute("value",e),r.innerText=t.label,r}):[];for(const e of this.#se.querySelectorAll(":scope > ful-badge"))e.remove();this.#it.before(...e),this.#ut||this.#_t(),this.#Ae.replaceChildren(),(this.#_e??this.template("items")).withOverlay({entries:this.#qt()}).renderTo(this.#Ae)}#At(e){switch(this.declared("k-type")){case"number":{const t=""===e?Number.NaN:Number(e);return Number.isNaN(t)?e:t}case"boolean":return!0===e||"true"===e||!1!==e&&"false"!==e&&e;default:return String(e)}}set value(e){const t=(null==e?[]:Array.isArray(e)?e:[e]).map(e=>this.#At(e));!this.#at&&t.some(e=>"string"==typeof e&&e.includes(","))&&(this.#at=!0,console.warn("a ful-select key cannot contain a comma: it is unexpressible in the value attribute",this)),this.#ot=new Map(t.map(e=>[e,{key:e,label:e,metadata:void 0}]));const s=this.#lt.take();this.#se&&(this.#Tt(),0!==t.length&&this.#i(t,s))}async#i(e,t){const s=await this.#st.exact(...e);if(t.stale)return;const r=new Map(s.map(e=>[this.#At(e.key),e]));for(const t of e)this.#ot.has(t)&&(r.has(t)?this.#ot.set(t,r.get(t)):this.#ot.delete(t));this.#Tt()}get value(){return this.#nt?[...this.#ot.keys()]:[...this.#ot.keys()][0]??null}get entry(){const e=this.#qt();return this.#nt?e:e[0]??null}#De;get multiple(){return this.#nt}set multiple(e){this.#nt=e,this.reflectTo("multiple",e)}get itemList(){return this.#De}set itemList(e){this.#De=e,this.reflectTo("item-list",e)}}class Me extends oe{static attributes=["name","type"];static slots=!0;static ROLE="radiogroup";static template='\n <fieldset>\n <legend>\n {{{{ slots.default }}}}\n </legend>\n <header data-tpl-if="slots.header">\n {{{{ slots.header }}}}\n </header>\n <ful-radio-list>\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 </ful-radio-list>\n <ful-field-error></ful-field-error>\n <footer data-tpl-if="slots.footer">\n {{{{ slots.footer }}}}\n </footer>\n </fieldset>\n ';#Rt;#Nt;#Pt;_build({slots:e}){const t=this.declared("name")??c.uid("ful-radiogroup"),s=Array.from(e.default.querySelectorAll("ful-radio")),r=s.map(e=>{const s=document.createElement("input");return s.setAttribute("type","radio"),c.forward("input-",this,s),c.forward("",e,s),s.setAttribute("name",`${t}-ignore`),s.setAttribute("form",""),s.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()}),[s,u.fromChildNodes(e)]});s.forEach(e=>{e.remove()});const i=this.template().withOverlay({name:t,slots:e,inputsAndLabels:r}).render();return this.#Rt=i.firstElementChild,this.#Nt=i.querySelector("input[type=radio]"),this.#Pt="boolean"===this.declared("type"),{fragment:i,control:this.#Nt,error:i.querySelector("ful-field-error"),described:this,claims:this.#Rt,announces:this,freeze:this.#Rt}}get value(){const e=this.querySelector("input[type=radio]:checked");return e?this.#Pt?"true"===e.value:e.value:null}set value(e){const t=this.querySelectorAll("input[type=radio]"),s=()=>{t.forEach(e=>{e.checked=!1})};if(null===e)return void s();const r=this.querySelector(`input[type=radio][value=${CSS.escape(String(e))}]`);null!==r?r.checked=!0:s()}}class De extends oe{static attributes=["type"];static observed=["value:bool"];static slots=!0;static template='\n <ful-choice data-tpl-switch="isSwitch">\n <input type="checkbox" data-tpl-role="isSwitch ? \'switch\' : false" form="" placeholder=" ">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </ful-choice>\n <ful-field-error></ful-field-error>\n ';#Lt;#it;_build({slots:e}){const t="switch"===this.declared("type"),s=this.template().withOverlay({slots:e,isSwitch:t}).render();this.#Lt=s.firstElementChild,this.#it=s.querySelector("input"),c.forward("input-",this,this.#it),this.#it.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()});const r=s.querySelector("label");return r.addEventListener("click",()=>{this._interactive()&&(this.value=!this.value,this._notifyChange())}),{fragment:s,control:this.#it,error:s.querySelector("ful-field-error"),label:r,freeze:this.#Lt}}get value(){return this.#it.checked}set value(e){this.#it.checked=e}}class Fe extends S{static attributes=["sorter"];static observed=["order"];#kt;render(){const e=this.declared("sorter"),t=["asc","desc",null];this.setAttribute("role","button"),this.setAttribute("tabindex","0"),this.addEventListener("click",()=>{const s=t[(t.indexOf(this.order)+1)%3];this.dispatchEvent(new CustomEvent("sort:requested",{bubbles:!0,cancelable:!0,detail:{value:{sorter:e,order:s}}}))}),this.addEventListener("keydown",e=>{"Enter"!==e.code&&"Space"!==e.code||(e.preventDefault(),this.click())})}get order(){return this.#kt||null}set order(e){this.#kt=e||null,this.reflectTo("order",this.#kt);const t=this.closest("th");t&&c.set(t,"aria-sort",this.#kt?"asc"===this.#kt?"ascending":"descending":null)}}class Ie extends S{static observed=["total:number","current:number"];static attributes=["pages:number"];static config={prevIcon:"chevron-left",nextIcon:"chevron-right",reloadIcon:"arrow-clockwise"};static template='\n <ful-pagination-bar role="navigation" data-tpl-aria-label="#l10n:t(\'pagination.navigation\')">\n <ul>\n <li data-ref="index"> {{ #l10n:t(\'pagination.showing\', { \'current\': curr.label, \'total\': total }) }}</li>\n <li data-ref="reload"><button type="button" data-tpl-aria-label="#l10n:t(\'pagination.reload\')"><ful-icon data-tpl-name="config.reloadIcon" aria-hidden="true"></ful-icon></button></li>\n <li data-ref="prev">\n <button type="button" data-tpl-disabled="prev.enabled ? false : true" data-tpl-aria-label="#l10n:t(\'pagination.previous\')" data-tpl-data-page="prev.index">\n <ful-icon data-tpl-name="config.prevIcon" aria-hidden="true"></ful-icon>\n </button>\n </li>\n <li data-ref="page" data-tpl-each="pages" data-tpl-var="page">\n <button type="button" data-tpl-aria-current="curr.index == page.index ? \'page\' : false" data-tpl-data-page="page.index" >\n {{ page.label }}\n </button>\n </li>\n <li data-ref="next">\n <button type="button" data-tpl-disabled="next.enabled ? false : true" data-tpl-aria-label="#l10n:t(\'pagination.next\')" data-tpl-data-page="next.index">\n <ful-icon data-tpl-name="config.nextIcon" aria-hidden="true"></ful-icon>\n </button>\n </li>\n </ul>\n </ful-pagination-bar>\n ';#zt=0;#W=0;render(){this.addEventListener("click",e=>{const t=e.target.closest("button");t&&!t.hasAttribute("disabled")&&"page"!==t.getAttribute("aria-current")&&this.dispatchEvent(new CustomEvent("page:requested",{bubbles:!0,cancelable:!0,detail:{value:Number(t.dataset.page??this.#W)}}))})}update({current:e,total:t}={}){void 0!==e&&(this.#W=e??0),void 0!==t&&(this.#zt=t??0),this.reflectTo("current",this.#W),this.reflectTo("total",this.#zt);const s=this.#W,r=this.#zt,i=this.declared("pages")??5,n=Math.max(r,1),a=s>0,o=s+1<n,l={index:a?s-1:null,enabled:a},u={index:s,label:s+1},c={index:o?s+1:null,enabled:o},d=Math.max(1,Math.min(i,n)),h=Math.max(0,Math.min(s-Math.floor((d-1)/2),n-d)),p=Array.from({length:d},(e,t)=>({index:h+t,label:h+t+1})),f=this.contains(document.activeElement)?document.activeElement.closest("li")?.getAttribute("data-ref"):null,m="page"===f?document.activeElement.dataset.page:null;if(this.template().withOverlay({total:n,prev:l,curr:u,next:c,pages:p}).renderTo(this),!f)return;const g=(null===m?null:this.querySelector(`li[data-ref=page] button[data-page="${m}"]`))??this.querySelector(`li[data-ref=${f}] button:not(:disabled)`)??this.querySelector("li[data-ref=page] button[aria-current=page]");g?.focus()}get total(){return this.#zt}set total(e){this.update({total:e})}get current(){return this.#W}set current(e){this.update({current:e})}}class $e{static parse(e,t){const s=e?h.queryChildren(e,"schema"):null;if(!s)throw new Error('missing expected <schema>: ful-table needs a <template slot="schema"> holding one');const r=document.createElement("tr"),i=document.createElement("tr");i.setAttribute("data-tpl-each","rows");for(const e of s.getAttributeNames()){const t=s.getAttribute(e);r.setAttribute(e,t??""),i.setAttribute(e,t??"")}const n=h.queryChildrenAll(s,"column"),a=n.filter(e=>e.hasAttribute("order")&&e.hasAttribute("sorter")).map(e=>({sorter:e.getAttribute("sorter"),order:e.getAttribute("order")}))[0]??null;for(var o of n){const e=h.queryChildren(o,"title"),t=o.getAttribute("sorter"),s=o.getAttribute("order"),n=e??document.createTextNode(o.getAttribute("title")??"");e?.remove(),o.removeAttribute("sorter"),o.removeAttribute("order"),o.removeAttribute("title");const a=t||s?(()=>{const e=document.createElement("ful-sorter");return t&&e.setAttribute("sorter",t),s&&e.setAttribute("order",s),e.append(n),e})():n,l=document.createElement("th"),u=document.createElement("td");for(const e of o.getAttributeNames()){const t=o.getAttribute(e);l.setAttribute(e,t??""),u.setAttribute(e,t??"")}l.append(a),u.append(...o.childNodes),r.append(l),i.append(u)}return{headersTemplate:t.withOverlay({inHeaders:!0,inRows:!1}).withFragment(u.from(r)),rowsTemplate:t.withOverlay({inHeaders:!1,inRows:!0}).withFragment(u.from(i)),sort:a,length:n.length}}}class Be{#C;constructor(e){this.#C=e}async load(e,t,s){const r=this.#Mt(t),i=e.page*e.size,n=i+e.size;return{data:r.slice(i,n),size:r.length}}#Mt(e){if(!e?.sorter)return this.#C;const{sorter:t,order:s}=e,r="desc"===s?-1:1;return[...this.#C].sort((e,s)=>{const i=e?.[t],n=s?.[t];return i===n?0:null==i?1:null==n?-1:(i<n?-1:1)*r})}update(e){this.#C=e}}class je{#de;#he;#U;#fe;constructor(e,t,s,r=e=>e){this.#de=e,this.#he=t,this.#U=s,this.#fe=r}async load(e,t,s){const r=Object.entries(s).filter(([e,t])=>t);return await this.#de.request(this.#U,this.#he).param("page",e.page).param("size",e.size).param("sort",t?`${t.sorter},${t.order}`:null).param("filters",r.length>0?JSON.stringify(Object.fromEntries(r)):null).fetchJson().then(e=>this.#fe(e))}}class He{static create(e,t){const s=e.getAttribute("src");if(s){const t=e.component("http-client"),r=e.getAttribute("method")??"GET",i=e.hasAttribute("response-mapper")?e.component(e.getAttribute("response-mapper")):e=>e;return new je(t,s,r,i)}return new Be([])}}class We extends S{static attributes=["loader","autoload:presence"];static observed=["page-size:number"];static slots=!0;static config={searchIcon:"search"};static template='\n <ful-form data-tpl-if="slots.filters">\n {{{{ slots.filters }}}}\n </ful-form>\n <ful-table-wrapper>\n <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"><ful-icon data-tpl-name="config.searchIcon" aria-hidden="true"></ful-icon></p>\n {{ #l10n:t(\'table.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" role="status"><span class="ful-sr-only">{{ #l10n:t(\'spinner.loading\') }}</span></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 role="alert">\n <p>{{ #l10n:t(\'table.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 </ful-table-wrapper>\n <ful-pagination current="0" total="1"></ful-pagination>\n ';static templates={row:"\n <tr data-tpl-if=\"pageResponse.data.length == 0\">\n <td data-tpl-colspan=\"schema.length\">\n {{ #l10n:t('table.no-data') }}\n </td>\n </tr>\n {{{{ schema.rowsTemplate.withOverlay({'rows': pageResponse.data}).render() }}}}\n "};#st;#Dt;#J;#Ft;#It;#$t;#Bt;#jt;#Ht={pageRequest:{page:0,size:10},sortRequest:null,filterRequest:{}};#Wt=!1;#Vt=new ie;get pageSize(){return this.#Ht.pageRequest.size}set pageSize(e){const t=e??10;t!==this.#Ht.pageRequest.size&&(this.#Ht={...this.#Ht,pageRequest:{page:0,size:t}},this.#Wt&&this.reload())}async render({slots:e}){const t=this.template(),s=$e.parse(e.schema,t),r=t.withOverlay({slots:e,schema:s}).render(),i=h.queryChildren(r,"ful-table-wrapper").querySelector("table");c.forward("table-",this,i),this.#st=this.component(this.declared("loader")??"loaders:table").create(this),this.#Dt=s,this.#J=i.querySelector(":scope > tbody"),this.#Ft=i.querySelector(":scope > tbody[data-ref=loading]"),this.#It=i.querySelector(":scope > tbody[data-ref=initial]"),this.#$t=i.querySelector(":scope > tbody[data-ref=feedback]"),this.#Bt=h.queryChildren(r,"ful-pagination"),this.replaceChildren(r);const n=this.querySelector("thead");s.headersTemplate.renderTo(n),this.#jt=n.querySelectorAll("ful-sorter"),await A.waitForChildren(this);const a=h.queryChildren(this,"ful-form");this.#Ht={pageRequest:{page:0,size:this.declared("page-size")??10},sortRequest:s.sort,filterRequest:a?.values??{}},a?.addEventListener("submit:success",async e=>{await this.load({page:0,size:this.#Ht.pageRequest.size},this.#Ht.sortRequest,e.detail.request)}),this.addEventListener("page:requested",async e=>{await this.load({page:e.detail.value,size:this.#Ht.pageRequest.size},this.#Ht.sortRequest,this.#Ht.filterRequest)}),this.addEventListener("sort:requested",async e=>{const t=e.detail.value.order?e.detail.value:null;await this.load(this.#Ht.pageRequest,t,this.#Ht.filterRequest),this.#Ht.sortRequest===t&&(this.#jt.forEach(e=>{e.order=null}),e.target.order=e.detail.value.order)}),this.declared("autoload")&&this.reload()}async reload(){return await this.load(this.#Ht.pageRequest,this.#Ht.sortRequest,this.#Ht.filterRequest)}async load(e,t,s){this.#Wt=!0;const r=this.#Vt.take();this.#J.replaceChildren(),this.#Ft.removeAttribute("hidden"),this.#$t.setAttribute("hidden",""),this.#It.setAttribute("hidden",""),this.setAttribute("aria-busy","true");try{const i=await this.#st.load(e,t,s);if(r.stale)return;this.#Ht={pageRequest:e,sortRequest:t,filterRequest:s},this.#Oe(e,t,s,i)}catch(e){if(r.stale)return;throw this.#Ft.setAttribute("hidden",""),this.#$t.removeAttribute("hidden"),this.#$t.querySelector("[data-ref=feedback-error]").textContent=k.problemsText(e,`${e}`),e}finally{r.stale||this.removeAttribute("aria-busy")}}async withLoader(e){return await e(this.#st)}async resetWithFilter(e){return await this.load({page:0,size:this.#Ht.pageRequest.size},this.#Ht.sortRequest,e)}#Oe(e,t,s,r){const i=Math.ceil(r.size/e.size),n=Math.max(0,i-1);e.page>n?this.load({page:n,size:e.size},t,s):(this.#Ft.setAttribute("hidden",""),this.#J.replaceChildren(this.template("row").withOverlay({schema:this.#Dt,pageRequest:e,filterRequest:s,pageResponse:r}).render()),this.#Bt.update({current:e.page,total:i}))}}class Ve{static narrow(e,t){const s=(e??[]).filter(e=>t.includes(e));return s.length>0?s:[...t]}#Ut;#Ge;#Gt;#Qt;#Kt;#_t;#Jt;#Xt;#Yt;#Zt=!1;#es=!1;constructor(e,{vocabulary:t,glyphs:s={},labelFor:r=e=>e,display:i=null,interactive:n=()=>!0,onPick:a=()=>{}}){this.#Ut=e,this.#Ge=e.nextElementSibling,this.#Gt=t,this.#Qt=s,this.#Kt=r,this.#_t=i??(e=>s[e]??e),this.#Jt=n,this.#Xt=a,this.#Yt=[...t],this.#Ge.addEventListener("click",e=>{const t=e.target.closest("li > a");if(!t||!this.#Jt())return;const s=t.getAttribute("value"),r=this.value;this.value=s,this.#Ge.hidePopover?.(),r!==s&&this.#Xt(s)})}get allowed(){return this.#Yt}set allowed(e){this.#Yt=Ve.narrow(e,this.#Gt),this.#ts(),!this.#es&&this.#Yt.length>1&&(this.#le(),this.#es=!0),this.#ss(),this.pinned&&(this.value=this.#Yt[0])}get pinned(){return this.#Yt.length<2}get value(){return this.#Ut.getAttribute("value")}set value(e){this.#Ut.setAttribute("value",e),this.#Ut.textContent=this.#_t(e),c.set(this.#Ut,"aria-label",this.#Kt(e))}set claimed(e){this.#Zt=e,this.#ss()}#ts(){this.#Ge.replaceChildren(...this.#Yt.map(e=>{const t=document.createElement("li");t.setAttribute("role","none");const s=document.createElement("a");s.setAttribute("role","menuitem"),s.setAttribute("tabindex","-1"),s.setAttribute("value",e);const r=this.#Kt(e),i=this.#Qt[e]??e;if(r===e&&i===e)s.innerText=e;else{const e=document.createElement("span");e.innerText=i;const t=document.createElement("span");t.innerText=r,s.append(e,t)}return t.append(s),t}))}#ss(){const e=this.pinned;this.#Ut.toggleAttribute("disabled",e||this.#Zt),c.set(this.#Ut,"aria-haspopup",e?null:"true"),c.set(this.#Ut,"aria-expanded",e?null:"false"),e?this.#Ut.removeAttribute("popovertarget"):this.#Ge.id&&this.#Ut.setAttribute("popovertarget",this.#Ge.id)}#Ae(){return Array.from(this.#Ge.querySelectorAll("li > a"),e=>e)}#le(){const e=this.#Ut,t=this.#Ge;qe(e,t,{prefix:"ful-filter-menu",invoke:!0,expanded:!0}),t.addEventListener("toggle",s=>{if("open"!==s.newState)return void(t.contains(document.activeElement)&&e.focus());const r=this.#Ae();(r.find(e=>e.getAttribute("value")===this.value)??r[0])?.focus()}),t.addEventListener("keydown",t=>{const s=t.target.closest("li > a");if(!s)return;const r=this.#Ae(),i=r.indexOf(s);switch(t.code){case"ArrowDown":t.preventDefault(),r[(i+1)%r.length]?.focus();break;case"ArrowUp":t.preventDefault(),r[(i-1+r.length)%r.length]?.focus();break;case"Home":t.preventDefault(),r[0]?.focus();break;case"End":t.preventDefault(),r[r.length-1]?.focus();break;case"Enter":case"Space":t.preventDefault(),s.click(),e.focus();break;case"Escape":e.focus()}})}}const Ue={EQ:"=",NEQ:"≠",LT:"<",GT:">",LTE:"≤",GTE:"≥",BETWEEN:"↔",CONTAINS:"…a…",STARTS_WITH:"a…",ENDS_WITH:"…a"},Ge=["EQ","NEQ","LT","GT","LTE","GTE","BETWEEN"],Qe=[...Ge,"CONTAINS","STARTS_WITH","ENDS_WITH"],Ke=["IGNORE_CASE","CASE_SENSITIVE"],Je={IGNORE_CASE:"aa",CASE_SENSITIVE:"Aa"},{t:Xe}=P.of(),Ye=e=>Xe(`filters.op.${e}`),Ze=e=>Xe(`filters.sensitivity.${e}`),et=e=>Xe(""===e?"filters.boolean.any":`filters.boolean.${e}`);class tt extends me{static observed=["value:json","operators:csv"];static OPERATORS=Ge;static DEFAULT_OPERATOR="EQ";static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-affix>\n <button data-ref="operator" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n </ful-affix>\n <ful-control>\n <input data-ref="value1" data-tpl-type="type" form="">\n <input data-ref="value2" data-tpl-type="type" form="" hidden>\n </ful-control>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_operator;_container;_value1;_value2;_build(e){const t=super._build(e),s=t.fragment;return this._container=s.querySelector("ful-control-group"),this._value1=s.querySelector("[data-ref=value1]"),this._value2=s.querySelector("[data-ref=value2]"),this._operator=new Ve(s.querySelector("[data-ref=operator]"),{vocabulary:this._vocabulary(),glyphs:Ue,labelFor:Ye,interactive:()=>this._interactive(),onPick:()=>{this._syncBetween(),this._notifyChange()}}),this.operators=this.declared("operators"),this._value2.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()}),null===this._operator.value&&this._showDefaultOperator(),{...t,freeze:this._container,also:[this._value2]}}_showDefaultOperator(){const e=this._defaultOperator(),t=this._operator.allowed;this._showOperator(t.includes(e)?e:t[0])}formResetCallback(){super.formResetCallback(),this.hasAttribute("value")||this._showDefaultOperator()}_type(){return"text"}_serialize(e){return e}_deserialize(e){return e}_defaultOperator(){return"EQ"}_vocabulary(){return Ge}_declaredOperators;get operators(){return this._operator?this._operator.allowed:this._declaredOperators}set operators(e){this._operator?(this._operator.allowed=e,this._syncBetween()):this._declaredOperators=Ve.narrow(e,this._vocabulary())}get value(){return this._tuple()}set value(e){this._applyTuple(e)}_tuple(){const e=this._operator.value,t="BETWEEN"===e?[this._value1.value,this._value2.value]:[this._value1.value];return t.some(e=>""===e)?null:[e,...t.map(e=>this._serialize(e))]}_applyTuple(e){if(null==e)return this._value1.value="",void(this._value2.value="");const[t,...s]=e,r=this._operator.pinned?this._operator.allowed[0]:t;this._showOperator(r),this._value1.value=s[0]?this._deserialize(s[0]):s[0]??"",this._value2.value=s[1]?this._deserialize(s[1]):s[1]??""}_showOperator(e){this._operator.value=e,this._syncBetween()}_syncBetween(){this._value2.toggleAttribute("hidden","BETWEEN"!==this._operator.value)}get disabled(){return super.disabled}set disabled(e){super.disabled=e;for(const t of this._choices())t.claimed=e}_choices(){return[this._operator].filter(e=>e)}}class st extends tt{_defaultOperator(){return"LTE"}_type(){return"datetime-local"}_serialize(e){return be.localToIso(e)}_deserialize(e){return be.isoToLocal(e)}}class rt extends tt{_type(){return"date"}}class it extends tt{_type(){return"number"}}class nt extends tt{static observed=["sensitivities:csv"];static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-affix>\n <button data-ref="operator" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n <button data-ref="sensitivity" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n </ful-affix>\n <ful-control>\n <input data-ref="value1" data-tpl-type="type" form="">\n <input data-ref="value2" data-tpl-type="type" form="" hidden>\n </ful-control>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_defaultOperator(){return"CONTAINS"}_vocabulary(){return Qe}_sensitivityButton;_build(e){const t=super._build(e);return this._sensitivityButton=new Ve(t.fragment.querySelector("[data-ref=sensitivity]"),{vocabulary:Ke,glyphs:Je,labelFor:Ze,interactive:()=>this._interactive(),onPick:()=>this._notifyChange()}),this._sensitivityButton.allowed=null,this._sensitivityButton.value=Ke[0],t}_choices(){return[...super._choices(),this._sensitivityButton].filter(e=>e)}get _sensitivity(){return this._sensitivityButton.value}_declaredSensitivities;get sensitivities(){return this._sensitivityButton?this._sensitivityButton.allowed:this._declaredSensitivities}set sensitivities(e){if(!this._sensitivityButton)return void(this._declaredSensitivities=Ve.narrow(e,Ke));const t=this._sensitivityButton.value;this._sensitivityButton.allowed=e,this._sensitivityButton.allowed.includes(t)||(this._sensitivityButton.value=this._sensitivityButton.allowed[0])}get value(){const e=this._tuple();return null==e?null:[e[0],this._sensitivity,...e.slice(1)]}set value(e){null!=e?(this._sensitivityButton.allowed.includes(e[1])&&(this._sensitivityButton.value=e[1]),this._applyTuple([e[0],...e.slice(2)])):this._applyTuple(e)}formResetCallback(){if(super.formResetCallback(),!this.hasAttribute("value")){const e=this._sensitivityButton.allowed;this._sensitivityButton.value=e.includes("IGNORE_CASE")?"IGNORE_CASE":e[0]}}}const at=["","true","false"],ot={true:"✓",false:"✗"};class lt extends oe{static observed=["value:json","operators:csv"];static slots=!0;static OPERATORS=["EQ","NEQ"];static DEFAULT_OPERATOR="EQ";static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-affix>\n <button data-ref="operator" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n </ful-affix>\n <button data-ref="value" type="button" form=""></button>\n <ul popover role="menu"></ul>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_operator;_value;_container;_build({slots:e}){const t=this.template().withOverlay({slots:e}).render();this._container=t.querySelector("ful-control-group");const s=t.querySelector("[data-ref=value]");this._operator=new Ve(t.querySelector("[data-ref=operator]"),{vocabulary:lt.OPERATORS,glyphs:Ue,labelFor:Ye,interactive:()=>this._interactive(),onPick:()=>this._notifyChange()}),this._value=new Ve(s,{vocabulary:at,glyphs:ot,labelFor:et,display:et,interactive:()=>this._interactive(),onPick:()=>this._notifyChange()}),this.operators=this.declared("operators");const r=this._operator.allowed;return this._operator.value=r.includes(lt.DEFAULT_OPERATOR)?lt.DEFAULT_OPERATOR:r[0],this._value.allowed=null,this._value.value="",{fragment:t,control:s,error:t.querySelector("ful-field-error"),label:t.querySelector("label"),announces:null,freeze:this._container}}_declaredOperators;get operators(){return this._operator?this._operator.allowed:this._declaredOperators}set operators(e){this._operator?this._operator.allowed=e:this._declaredOperators=Ve.narrow(e,this._vocabulary())}_vocabulary(){return lt.OPERATORS}get value(){return""===this._value.value?null:[this._operator.value,this._value.value]}set value(e){null!=e?(this._operator.value=this._operator.pinned?this._operator.allowed[0]:e[0],this._value.value=e[1]??""):this._value.value=""}get disabled(){return super.disabled}set disabled(e){super.disabled=e;for(const t of[this._operator,this._value].filter(e=>e))t.claimed=e}}class ut{#rs=new WeakSet;#ie=new WeakMap;async request(e,t,s,r){const i=!this.#rs.has(t),n={name:s,section:t,index:r,first:i},a=["section:requested",...null!=r?[`section:requested:#${r}`]:[],...s?[`section:requested:${s}`]:[]],o=[];for(const t of a){const s=new CustomEvent(t,{bubbles:!0,detail:n});e.dispatchEvent(s),o.push(...s.async?.promises??[])}if(0===o.length)return;this.#rs.add(t);let l=this.#ie.get(t);l||(l=new ie,this.#ie.set(t,l));const u=l.take(),c=()=>!u.stale;t.querySelector(":scope > .ful-section-error")?.remove();const d=requestAnimationFrame(()=>{c()&&(t.toggleAttribute("loading",!0),t.setAttribute("aria-busy","true"))});try{return await Promise.all(o)}catch(e){throw c()&&this.#is(t,e),e}finally{cancelAnimationFrame(d),c()&&(t.toggleAttribute("loading",!1),t.removeAttribute("aria-busy"))}}#is(e,t){e.querySelector(":scope > .ful-section-error")?.remove();const s=document.createElement("div");s.className="ful-section-error",s.setAttribute("role","alert"),s.textContent=k.problemsText(t),e.prepend(s)}}let ct=!1;const dt=()=>{ct||(ct=!0,document.addEventListener("click",e=>{const t=e.target.closest?.("[dialog-target]");t&&document.getElementById(t.getAttribute("dialog-target"))?.open?.()}))};class ht extends S{static slots=!0;static attributes=["placement"];static config={icon:"info-circle-fill"};static template='\n <button type="button" class="ful-tip" data-ref="trigger" data-tpl-aria-label="#l10n:t(\'info.tooltip\')"><ful-icon data-tpl-name="config.icon" aria-hidden="true"></ful-icon></button>\n <ful-note popover data-ref="content">{{{{ slots.default }}}}</ful-note>\n ';render({slots:e}){const t=this.template().withOverlay({slots:e}).render(),s=t.querySelector("[data-ref=trigger]"),r=t.querySelector("[data-ref=content]");qe(s,r,{prefix:"ful-tooltip",invoke:!0,expanded:!0,handPlace:!0});const i=this.declared("placement");i&&r.setAttribute("placement",i),this.replaceChildren(t)}}class pt extends S{static attributes=["header"];static slots=!0;static template='\n <dialog data-ref="dialog" class="ful-dialog">\n <header data-tpl-if="header"><h2>{{ header }}</h2></header>\n <div data-ref="body">{{{{ slots.default }}}}</div>\n <footer>\n <button type="button" data-ref="acknowledge" data-result="acknowledged" data-tpl-if="!slots.buttons" data-tpl-aria-label="#l10n:t(\'dialog.acknowledge\')">{{ #l10n:t(\'dialog.acknowledge\') }}</button>\n {{{{ slots.buttons }}}}\n </footer>\n </dialog>\n ';#ns;#J;#as=new ut;#os=[];render({slots:e}){const t=this.template().withOverlay({slots:e,header:this.declared("header")??""}).render();this.#ns=t.querySelector("[data-ref=dialog]"),this.#J=t.querySelector("[data-ref=body]"),this.#ns.addEventListener("close",()=>{this.dispatchEvent(new CustomEvent("close",{detail:{result:""===this.#ns.returnValue?null:this.#ns.returnValue}})),this.#ce()}),this.#ns.addEventListener("click",e=>{const t=e.target.closest("button[data-result]")?.dataset.result;void 0!==t&&this.#ns.close(t)}),this.replaceChildren(t),dt()}#ce(){const e=this.#os;this.#os=[];for(const t of e)t(""===this.#ns.returnValue?null:this.#ns.returnValue)}disconnectedCallback(){this.#ce()}open(){return this.ask()}ask(){return this.#ns.open||(this.#ns.returnValue="",this.#ns.showModal(),this.#ls()),new Promise(e=>{this.#os.push(e)})}#ls(){this.#as.request(this,this.#J,null,null)?.catch(()=>{})}refresh(){return this.#as.request(this,this.#J,null,null)?.then(void 0,()=>{})}close(e){this.#ns.close(e??"")}}class ft extends S{static attributes=["title","placement"];static slots=!0;static template='\n <dialog data-ref="dialog" class="ful-drawer">\n <header>\n <h2 data-ref="title">{{ title }}</h2>\n <button type="button" data-ref="close" data-tpl-aria-label="#l10n:t(\'drawer.close\')"><ful-icon name="x-lg" aria-hidden="true"></ful-icon></button>\n </header>\n <section data-ref="loading" hidden><ful-spinner class="centered" role="status"><span class="ful-sr-only">{{ #l10n:t(\'spinner.loading\') }}</span></ful-spinner></section>\n <section data-ref="error" role="alert" hidden></section>\n <section data-ref="content">{{{{ slots.default }}}}</section>\n </dialog>\n ';#ns;#us;#Ft;#cs;#ds;#as=new ut;#hs=new ie;render({slots:e}){const t=this.template().withOverlay({slots:e,title:this.declared("title")??""}).render();this.#ns=t.querySelector("[data-ref=dialog]"),this.#us=t.querySelector("[data-ref=title]"),this.#Ft=t.querySelector("[data-ref=loading]"),this.#cs=t.querySelector("[data-ref=error]"),this.#ds=t.querySelector("[data-ref=content]");const s=this.declared("placement");s&&this.#ns.setAttribute("placement",s),t.querySelector("[data-ref=close]").addEventListener("click",()=>this.close()),this.#ns.addEventListener("close",()=>{this.dispatchEvent(new CustomEvent("close"))}),this.replaceChildren(t),dt()}get title(){return this.#us.textContent}set title(e){this.#us.textContent=e??""}async update(e,t){const s=this.#hs.take();this.title=e,this.#ds.replaceChildren(),this.#ps(),this.#Ft.removeAttribute("hidden"),this.#ds.setAttribute("hidden",""),this.#fs();try{const e=await t();return s.stale||(this.#ds.replaceChildren(e),this.#Ft.setAttribute("hidden",""),this.#ds.removeAttribute("hidden")),this.#ds}catch(e){throw s.stale||(this.#cs.removeAttribute("hidden"),this.#cs.textContent=k.problemsText(e),this.#Ft.setAttribute("hidden",""),this.#ds.setAttribute("hidden","")),e}}refresh(){return this.#as.request(this,this.#ds,null,null)?.then(void 0,()=>{})}open(){this.#fs()&&(this.#ps(),this.#as.request(this,this.#ds,null,null)?.catch(()=>{}))}close(){this.#ns.close()}#fs(){return!this.#ns.open&&(this.#ns.showModal(),!0)}#ps(){this.#cs.replaceChildren(),this.#cs.setAttribute("hidden",""),this.#Ft.setAttribute("hidden",""),this.#ds.removeAttribute("hidden")}}const mt=["info","success","warning","error"],gt=new Set;let bt=!1;class vt extends S{static attributes=["timeout:number"];#ms;connectedCallback(){super.connectedCallback(),this.rendered&&gt.add(this)}disconnectedCallback(){gt.delete(this)}render(){this.#ms=this.declared("timeout")||5e3,this.setAttribute("role","region"),this.setAttribute("tabindex","-1"),this.setAttribute("aria-label",P.of().t("toast.region")),bt||(bt=!0,document.addEventListener("show-toast",e=>{for(const t of gt)t.show(e.detail.message,e.detail)})),gt.add(this)}show(e,t={}){const s=mt.includes(t.severity)?t.severity:"info",r=document.createElement("ful-toast");r.classList.add(s),r.setAttribute("role","error"===s?"alert":"status");const i=document.createElement("div");i.textContent=k.problemsText(e,`${e??""}`);const n=document.createElement("button");n.type="button",n.setAttribute("aria-label",P.of().t("toast.dismiss"));const a=document.createElement("ful-icon");a.setAttribute("name","x-lg"),a.setAttribute("aria-hidden","true"),n.append(a),r.append(i,n),r.addEventListener("animationend",()=>{r.classList.contains("ful-toast-out")&&r.remove()});const o=()=>{r.contains(document.activeElement)&&this.focus(),matchMedia("(prefers-reduced-motion: reduce)").matches?r.remove():(r.classList.add("ful-toast-out"),0===r.getAnimations().length&&r.remove())};return n.addEventListener("click",o),this.append(r),setTimeout(o,t.timeout??this.#ms),r}}class yt extends S{static slots=!0;static observed=["active:number"];static template='\n <ful-tablist role="tablist">{{{{ slots.tabs }}}}</ful-tablist>\n {{{{ slots.default }}}}\n ';#gs;#bs=[];#vs=[];#as=new ut;#ys=0;render({slots:e}){const t=this.template().withOverlay({slots:e}).render();this.#gs=t.querySelector("ful-tablist");const s=[...this.#gs.children];this.#vs=[...t.children].filter(e=>e!==this.#gs),s.length!==this.#vs.length&&console.warn(`ful-tabs: ${s.length} tabs declared for ${this.#vs.length} panels, the surplus is left alone`);const r=Math.min(s.length,this.#vs.length);this.#bs=[];for(let e=0;e!==r;++e){const t=this.#vs[e],r=document.createElement("button");r.type="button",r.role="tab",r.id=c.uid("ful-tab"),t.id||(t.id=c.uid("ful-tabpanel")),r.setAttribute("aria-controls",t.id),t.role="tabpanel",t.setAttribute("aria-labelledby",r.id),t.tabIndex=0,r.append(...s[e].childNodes),r.addEventListener("click",()=>{this.active=e}),s[e].replaceWith(r),this.#bs.push(r)}this.#gs.addEventListener("keydown",e=>{const t=this.#ys;let s=null;"ArrowRight"===e.key?s=(t+1)%this.#bs.length:"ArrowLeft"===e.key?s=(t-1+this.#bs.length)%this.#bs.length:"Home"===e.key?s=0:"End"===e.key&&(s=this.#bs.length-1),null!==s&&s!==t&&(e.preventDefault(),this.active=s,this.#bs[s].focus())}),this.replaceChildren(t)}get active(){return this.#ys}refresh(e){const t=e instanceof Element?this.#vs.indexOf(e):Number.isInteger(e)?e:NaN,s=this.#vs[t];if(s)return this.#as.request(this,s,null,t)?.then(void 0,()=>{});console.warn(`ful-tabs: no panel answers to "${e}"`)}set active(e){const t=Math.min(Math.max(0,Number(e)||0),Math.max(0,this.#bs.length-1)),s=this.#ys;for(const[e,s]of this.#bs.entries())s.setAttribute("aria-selected",e===t?"true":"false"),s.tabIndex=e===t?0:-1,this.#vs[e].hidden=e!==t;this.#ys=t,this.reflectTo("active",t),this.rendered&&t!==s&&this.dispatchEvent(new CustomEvent("change",{detail:{active:t,previous:s}})),this.#vs.length>0&&(t!==s||!this.rendered)&&this.#as.request(this,this.#vs[t],null,t)?.catch(()=>{})}}class wt extends S{static slots=!0;static observed=["exclusive:presence"];static template="\n <ful-accordion-group>{{{{ slots.default }}}}</ful-accordion-group>\n ";#Ce;#ws=!1;render({slots:e}){const t=this.template().withOverlay({slots:e}).render();this.#Ce=t.querySelector("ful-accordion-group"),this.replaceChildren(t)}get exclusive(){return this.#ws}set exclusive(e){this.#ws=!0===e,this.reflectTo("exclusive",this.#ws);const t=this.#ws?c.uid("ful-accordion"):null;for(const e of this.#Ce.querySelectorAll(":scope > details"))null===t?e.removeAttribute("name"):e.setAttribute("name",t)}}class Et extends S{static slots=!0;static observed=["progress"];static template="\n <ful-steps><ol data-tpl-aria-label=\"#l10n:t('wizard.progress')\">{{{{ slots.steps }}}}</ol></ful-steps>\n {{{{ slots.default }}}}\n ";#Es=[];#xs=[];#as=new ut;#As=0;#Ss;render({slots:e}){const t=this.template().withOverlay({slots:e}).render(),s=[...t.querySelector("ful-steps ol").children];this.#xs=[...t.children].filter(e=>"ful-steps"!==e.localName),s.length!==this.#xs.length&&console.warn(`ful-wizard: ${s.length} steps declared for ${this.#xs.length} sections, the surplus is left alone`);const r=Math.min(s.length,this.#xs.length);this.#Es=[];for(let e=0;e!==r;++e){const t=document.createElement("li");t.append(...s[e].childNodes),s[e].replaceWith(t),this.#Es.push(t),this.#xs[e].tabIndex=-1}if(this.replaceChildren(t),r>0){const e=this.#xs.findIndex(e=>"step"===e.getAttribute("aria-current"));this.#Ts(-1===e?0:Math.min(e,r-1)),this.#Cs(this.#As)?.catch(()=>{})}}get index(){return this.#As}get step(){return this.#xs[this.#As]?.getAttribute("data-step")??null}get progress(){return this.#Ss}set progress(e){this.#Ss=e,this.reflectTo("progress",e)}next(){return this.#_s(this.#As+1)}prev(){return this.#_s(this.#As-1)}move(e){const t=this.#xs.findIndex(t=>t.getAttribute("data-step")===e);if(-1!==t)return this.#_s(t);console.warn(`ful-wizard: no section carries data-step="${e}"`)}refresh(e){const t=e instanceof Element?e:"string"==typeof e?this.#xs.find(t=>t.getAttribute("data-step")===e):void 0,s=this.#xs.indexOf(t);if(-1!==s)return this.#Cs(s)?.then(void 0,()=>{});console.warn(`ful-wizard: no section answers to "${e}"`)}#Cs(e){return this.#as.request(this,this.#xs[e],this.#xs[e].getAttribute("data-step"),e)}#_s(e){const t=Math.min(Math.max(0,e),Math.max(0,this.#Es.length-1));if(t!==this.#As)return this.#Ts(t),this.#xs[this.#As].focus(),this.rendered&&this.dispatchEvent(new CustomEvent("change",{detail:{index:this.#As,step:this.step}})),this.#Cs(t)}#Ts(e){for(const[t,s]of this.#Es.entries())t===e?(s.setAttribute("aria-current","step"),this.#xs[t].setAttribute("aria-current","step")):(s.removeAttribute("aria-current"),this.#xs[t].removeAttribute("aria-current"));this.#As=e}}const xt={en:{"pagination.showing":"Page {current} of {total}","pagination.navigation":"Page navigation","pagination.previous":"Previous","pagination.next":"Next","pagination.reload":"Reload","table.initial":"Start searching to see results.","table.error":"Error while loading data:","table.no-data":"No elements found.","dropdown.empty":"No results","select.remove":"Remove","files.dropzone-label":"Click or drop your files here","files.remove":"Remove","files.unacceptable-file-type":"Only files of type {types} are supported","files.max-file-size-exceeded":"Maximum supported file size is {size}","files.max-total-size-exceeded":"Maximum supported total file size is {size}","files.max-files-exceeded":{one:"Maximum of {count} file exceeded",other:"Maximum of {count} files exceeded"},"filters.op.EQ":"Equals","filters.op.NEQ":"Not equal","filters.op.LT":"Less than","filters.op.GT":"Greater than","filters.op.LTE":"At most","filters.op.GTE":"At least","filters.op.BETWEEN":"Between","filters.op.CONTAINS":"Contains","filters.op.STARTS_WITH":"Starts with","filters.op.ENDS_WITH":"Ends with","filters.sensitivity.IGNORE_CASE":"Ignore case","filters.sensitivity.CASE_SENSITIVE":"Case sensitive","filters.boolean.any":"Any","filters.boolean.true":"Yes","filters.boolean.false":"No","info.tooltip":"More information","dialog.acknowledge":"Got it","drawer.close":"Close","spinner.loading":"Loading…","toast.region":"Notifications","toast.dismiss":"Dismiss","wizard.progress":"Progress"},it:{"pagination.showing":"Pagina {current} di {total}","pagination.navigation":"Navigazione pagine","pagination.previous":"Precedente","pagination.next":"Successivo","pagination.reload":"Ricarica","table.initial":"Avvia la ricerca per visualizzare i risultati.","table.error":"Errore nel caricamento dei dati:","table.no-data":"Nessun elemento trovato.","dropdown.empty":"Nessun risultato","select.remove":"Rimuovi","files.dropzone-label":"Clicca o trascina i file qui","files.remove":"Rimuovi","files.unacceptable-file-type":"Solo i file di tipo {types} sono supportati","files.max-file-size-exceeded":"La dimensione massima di un file è di {size}","files.max-total-size-exceeded":"La dimensione massima complessiva dei file è di {size}","files.max-files-exceeded":{other:"Superato il numero massimo di {count} file"},"filters.op.EQ":"Uguale","filters.op.NEQ":"Diverso","filters.op.LT":"Minore","filters.op.GT":"Maggiore","filters.op.LTE":"Al massimo","filters.op.GTE":"Almeno","filters.op.BETWEEN":"Tra","filters.op.CONTAINS":"Contiene","filters.op.STARTS_WITH":"Inizia con","filters.op.ENDS_WITH":"Termina con","filters.sensitivity.IGNORE_CASE":"Ignora maiuscole","filters.sensitivity.CASE_SENSITIVE":"Distingui maiuscole","filters.boolean.any":"Qualsiasi","filters.boolean.true":"Sì","filters.boolean.false":"No","info.tooltip":"Maggiori informazioni","dialog.acknowledge":"Ho capito","drawer.close":"Chiudi","spinner.loading":"Caricamento…","toast.region":"Notifiche","toast.dismiss":"Chiudi","wizard.progress":"Avanzamento"},es:{"pagination.showing":"Página {current} de {total}","pagination.navigation":"Navegación de páginas","pagination.previous":"Anterior","pagination.next":"Siguiente","pagination.reload":"Recargar","table.initial":"Inicia la búsqueda para ver los resultados.","table.error":"Error al cargar los datos:","table.no-data":"No se encontraron elementos.","dropdown.empty":"Sin resultados","select.remove":"Eliminar","files.dropzone-label":"Haz clic o arrastra tus archivos aquí","files.remove":"Eliminar","files.unacceptable-file-type":"Solo se admiten archivos de tipo {types}","files.max-file-size-exceeded":"El tamaño máximo de archivo admitido es {size}","files.max-total-size-exceeded":"El tamaño total máximo admitido es {size}","files.max-files-exceeded":{other:"Se ha superado el número máximo de {count} archivos"},"filters.op.EQ":"Igual","filters.op.NEQ":"Distinto","filters.op.LT":"Menor","filters.op.GT":"Mayor","filters.op.LTE":"Como máximo","filters.op.GTE":"Al menos","filters.op.BETWEEN":"Entre","filters.op.CONTAINS":"Contiene","filters.op.STARTS_WITH":"Empieza por","filters.op.ENDS_WITH":"Termina por","filters.sensitivity.IGNORE_CASE":"Ignorar mayúsculas","filters.sensitivity.CASE_SENSITIVE":"Distinguir mayúsculas","filters.boolean.any":"Cualquiera","filters.boolean.true":"Sí","filters.boolean.false":"No","info.tooltip":"Más información","dialog.acknowledge":"Entendido","drawer.close":"Cerrar","spinner.loading":"Cargando…","toast.region":"Notificaciones","toast.dismiss":"Cerrar","wizard.progress":"Progreso"},fr:{"pagination.showing":"Page {current} sur {total}","pagination.navigation":"Navigation des pages","pagination.previous":"Précédent","pagination.next":"Suivant","pagination.reload":"Recharger","table.initial":"Lancez la recherche pour voir les résultats.","table.error":"Erreur lors du chargement des données :","table.no-data":"Aucun élément trouvé.","dropdown.empty":"Aucun résultat","select.remove":"Retirer","files.dropzone-label":"Cliquez ou déposez vos fichiers ici","files.remove":"Retirer","files.unacceptable-file-type":"Seuls les fichiers de type {types} sont pris en charge","files.max-file-size-exceeded":"La taille maximale de fichier prise en charge est {size}","files.max-total-size-exceeded":"La taille totale maximale prise en charge est {size}","files.max-files-exceeded":{one:"Nombre maximal de {count} fichier dépassé",other:"Nombre maximal de {count} fichiers dépassé"},"filters.op.EQ":"Égal","filters.op.NEQ":"Différent","filters.op.LT":"Inférieur","filters.op.GT":"Supérieur","filters.op.LTE":"Au plus","filters.op.GTE":"Au moins","filters.op.BETWEEN":"Entre","filters.op.CONTAINS":"Contient","filters.op.STARTS_WITH":"Commence par","filters.op.ENDS_WITH":"Finit par","filters.sensitivity.IGNORE_CASE":"Ignorer la casse","filters.sensitivity.CASE_SENSITIVE":"Respecter la casse","filters.boolean.any":"Indifférent","filters.boolean.true":"Oui","filters.boolean.false":"Non","info.tooltip":"Plus d’informations","dialog.acknowledge":"J’ai compris","drawer.close":"Fermer","spinner.loading":"Chargement…","toast.region":"Notifications","toast.dismiss":"Fermer","wizard.progress":"Progression"}};class At{#Os;#qs;#Rs;constructor(e={}){this.#Os=e.language??navigator?.language??"en",this.#qs=e.translations??{},this.#Rs=e.httpClient??null}configure(e){const t=this.#Rs??V.builder().withCsrfToken().withRedirectOnUnauthorized("/").build(),s=this.#Os.split("-")[0],r={...xt.en,...xt[s],...this.#qs};e.defineModule("l10n",P).defineComponent("http-client",t).defineElement("ful-tooltip",ht).defineElement("ful-dialog",pt).defineElement("ful-drawer",ft).defineElement("ful-toasts",vt).defineElement("ful-tabs",yt).defineElement("ful-accordion",wt).defineElement("ful-wizard",Et).defineElement("ful-form",de).defineElement("ful-checkbox",De).defineElement("ful-input",me).defineElement("ful-input-file",Ee).defineElement("ful-local-date",ge).defineElement("ful-instant",be).defineElement("ful-input-local-date",ve).defineElement("ful-input-local-time",ye).defineElement("ful-input-instant",we).defineElement("ful-radio-group",Me).defineElement("ful-table",We).defineElement("ful-pagination",Ie).defineElement("ful-sorter",Fe).defineElement("ful-filter-instant",st).defineElement("ful-filter-local-date",rt).defineElement("ful-filter-number",it).defineElement("ful-filter-boolean",lt).defineElement("ful-filter-text",nt).defineElement("ful-select",ze).defineElement("ful-dropdown",ke).defineComponent("loaders:select",Le).defineComponent("loaders:form",ce).defineComponent("loaders:table",He).defineOverlay({l10n:r,locale:this.#Os})}}var St=Object.freeze({__proto__:null,Accordion:wt,AsyncEvents:re,Bindings:ae,BooleanFilter:lt,Checkbox:De,Claims:ie,CompareFilter:tt,Dialog:pt,Drawer:ft,Dropdown:ke,Field:oe,Form:de,FormLoader:ce,Input:me,InputFile:Ee,InputInstant:we,InputLocalDate:ve,InputLocalTime:ye,Instant:be,InstantFilter:st,LocalDate:ge,LocalDateFilter:rt,LocalStorage:Z,NumberFilter:it,Pagination:Ie,Plugin:At,RadioGroup:Me,Select:ze,SelectLoader:Le,SessionStorage:ee,SortButton:Fe,Table:We,TableLoader:He,TableSchemaParser:$e,Tabs:yt,TextFilter:nt,Timing:ne,Toasts:vt,Tooltip:ht,VersionedLocalStorage:te,VersionedSessionStorage:se,Wizard:Et});return"undefined"!=typeof window&&(window.ftl=L,window.httpc=J,window.ful=St),e.Accordion=wt,e.AsyncEvents=re,e.Attributes=c,e.Base64=z,e.Bindings=ae,e.BooleanFilter=lt,e.BoundedCache=t,e.Checkbox=De,e.Claims=ie,e.CompareFilter=tt,e.Dialog=pt,e.Drawer=ft,e.Dropdown=ke,e.ExpressionEvaluator=l,e.Expressions=o,e.Failure=k,e.Field=oe,e.Form=de,e.FormLoader=ce,e.Fragments=u,e.Hex=M,e.HttpClient=V,e.HttpClientBuilder=j,e.HttpClientError=F,e.HttpInterceptorChain=W,e.HttpMultipartRequestCustomizer=K,e.HttpRequestBuilder=Q,e.Input=me,e.InputFile=Ee,e.InputInstant=we,e.InputLocalDate=ve,e.InputLocalTime=ye,e.Instant=be,e.InstantFilter=st,e.LightSlots=d,e.LocalDate=ge,e.LocalDateFilter=rt,e.LocalStorage=Z,e.Localization=P,e.MediaType=D,e.Nodes=h,e.NumberFilter=it,e.Pagination=Ie,e.ParsedElement=S,e.Plugin=At,e.RadioGroup=Me,e.Registry=w,e.RenderError=v,e.Rendering=A,e.Select=ze,e.SelectLoader=Le,e.SessionStorage=ee,e.SortButton=Fe,e.Table=We,e.TableLoader=He,e.TableSchemaParser=$e,e.Tabs=yt,e.Template=b,e.Templates=x,e.TextFilter=nt,e.Timing=ne,e.Toasts=vt,e.Tooltip=ht,e.VersionedLocalStorage=te,e.VersionedSessionStorage=se,e.Wizard=Et,e.registry=E,e}({});
1
+ var fml=function(e){"use strict";class t{#e;#t=new Map;constructor(e){this.#e=e}getOrCompute(e,t){if(this.#t.has(e))return this.#t.get(e);const s=t(e);return this.#t.size>=this.#e&&this.#t.delete(this.#t.keys().next().value),this.#t.set(e,s),s}get size(){return this.#t.size}}const s={ter:Symbol("ternary"),elv:Symbol("elvis"),nullc:Symbol("null-coalescence"),or:Symbol("or"),and:Symbol("and"),eq:Symbol("eq"),cmp:Symbol("cmp"),not:Symbol("not"),access:Symbol("access"),member:Symbol("access-member"),subscript:Symbol("access-subscript"),method:Symbol("access-method-call"),call:Symbol("module-function-call"),tstring:Symbol("tstring"),literal:Symbol("literal"),array:Symbol("array-literal"),dict:Symbol("dict-literal"),function:Symbol("module-function"),symbol:Symbol("symbol"),templated:{ten:Symbol("templated-node"),teh:Symbol("templated-html"),tet:Symbol("templated-text"),tel:Symbol("templated-literal")},dom:{t:Symbol("text"),h:Symbol("html"),n:Symbol("node")}},r=new Map([["true",!0],["false",!1],["null",null],["undefined",void 0]]);class i extends SyntaxError{constructor(e,t,s,r){super(e),this.expected=t,this.found=s,this.location=r,this.name="SyntaxError"}format(e){let t="Error: "+this.message;if(this.location){let s=null;const r=e.find(e=>e.source===this.location.source);r&&(s=r.text.split(/\r\n|\n|\r/g));const i=this.location.start,n=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(i):i,a=this.location.source+":"+n.line+":"+n.column;if(s){const e=this.location.end,r="".padEnd(n.line.toString().length," "),o=s[i.line-1],l=(i.line===e.line?e.column:o.length+1)-i.column||1;t+="\n --\x3e "+a+"\n"+r+" |\n"+n.line+" | "+o+"\n"+r+" | "+"".padEnd(i.column-1," ")+"".padEnd(l,"^")}else t+="\n at "+a}return t}static buildMessage(e,t){function s(e){return e.codePointAt(0).toString(16).toUpperCase()}const r=Object.prototype.hasOwnProperty.call(RegExp.prototype,"unicode")?new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]","gu"):null;function i(e){return r?e.replace(r,e=>"\\u{"+s(e)+"}"):e}function n(e){return i(e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,e=>"\\x0"+s(e)).replace(/[\x10-\x1F\x7F-\x9F]/g,e=>"\\x"+s(e)))}function a(e){return i(e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,e=>"\\x0"+s(e)).replace(/[\x10-\x1F\x7F-\x9F]/g,e=>"\\x"+s(e)))}const o={literal:e=>'"'+n(e.text)+'"',class(e){const t=e.parts.map(e=>Array.isArray(e)?a(e[0])+"-"+a(e[1]):a(e));return"["+(e.inverted?"^":"")+t.join("")+"]"+(e.unicode?"u":"")},any:()=>"any character",end:()=>"end of input",other:e=>e.description};function l(e){return o[e.type](e)}return"Expected "+function(e){const t=e.map(l);if(t.sort(),t.length>0){let e=1;for(let s=1;s<t.length;s++)t[s-1]!==t[s]&&(t[e]=t[s],e++);t.length=e}switch(t.length){case 1:return t[0];case 2:return t[0]+" or "+t[1];default:return t.slice(0,-1).join(", ")+", or "+t[t.length-1]}}(e)+" but "+function(e){return e?'"'+n(e)+'"':"end of input"}(t)+" found."}}const n=(e,t)=>{if("self"===t)return e[e.length-1];for(let s=e.length-1;s>=0;s--){const r=e[s];if(null!=r&&("object"==typeof r||"function"==typeof r)&&t in r)return r[t]}};class a{#s;#r;constructor(e,t){this.#s=e,this.#r=t}#i(e){return n(this.#r,e)}#n(e,t){const r=0===t?e.lhs:e.rhs[t-1];return r.type===s.symbol?r.value:r.type===s.member?r.rhs:null}#a;#o(){return this.#a||(this.#a=new Proxy(this.#r,{get:(e,t)=>this.#i(t)})),this.#a}[s.and](e){return this.visit(e.lhs)&&this.visit(e.rhs)}[s.or](e){return this.visit(e.lhs)||this.visit(e.rhs)}[s.nullc](e){const t=this.visit(e.lhs);return null!=t?t:this.visit(e.rhs)}[s.not](e){return!this.visit(e.expr)}[s.eq](e){const t=this.visit(e.lhs)===this.visit(e.rhs);return"=="===e.op?t:!t}[s.cmp](e){const t=this.visit(e.lhs),s=this.visit(e.rhs);switch(e.op){case">":return t>s;case"<":return t<s;case">=":return t>=s;case"<=":return t<=s;default:throw new Error(`unknown cmp op ${e.op}`)}}[s.call](e){const t=e.value,s=null===t.module?this.#s:this.#s?.[t.module];if(!s)throw new Error(`Module "${t.module}" not found`);const r=s[t.value];if(!r)throw new Error(`Function "#${null===t.module?"":`${t.module}:`}${t.value}" not found`);const i=e.args.map(e=>this.visit(e));return r.apply(this.#o(),i)}[s.literal](e){return e.value}[s.tstring](e){let t="";const s=e.parts;for(let e=0,r=s.length;e<r;e++){const r=this.visit(s[e]);null!=r&&(t+=r)}return t}[s.symbol](e){return this.#i(e.value)}[s.dict](e){return Object.fromEntries(e.value.map(e=>[this.visit(e[0]),this.visit(e[1])]))}[s.array](e){return e.value.map(e=>this.visit(e))}[s.ter](e){return this.visit(e.cond)?this.visit(e.ifTrue):this.visit(e.ifFalse)}[s.elv](e){return this.visit(e.cond)||this.visit(e.ifFalse)}[s.access](e){let t,r=this.visit(e.lhs);for(let i=0;i!==e.rhs.length;++i){const n=e.rhs[i];if(n.ns&&null==r)return;let a;switch(n.type){case s.member:a=r[n.rhs];break;case s.subscript:a=r[this.visit(n.rhs)];break;case s.method:{if(!r){const t=this.#n(e,i);throw new Error(null===t?"Method missing":`Method missing "${t}"`)}const s=n.args.map(e=>this.visit(e));a=r.apply(t,s);break}}t=r,r=a}return r}visit(e,...t){return this[e.type](e,...t)}visitRoot(e,t){return t?e.map(e=>{switch(e.type){case s.templated.tel:return{type:s.dom.t,value:e.value};case s.templated.tet:return{type:s.dom.t,value:this.visit(e.value)};case s.templated.teh:return{type:s.dom.h,value:this.visit(e.value)};case s.templated.ten:return{type:s.dom.n,value:this.visit(e.value)};default:throw new Error(`unknown node type ${e.type.toString()}`)}}):this.visit(e)}}class o{static MODE_EXPRESSION=Symbol("MODE_EXPRESSION");static MODE_TEMPLATED=Symbol("MODE_TEMPLATED");static#l=new t(1e3);static parse(e,t){const n=t?.toString()+e;return this.#l.getOrCompute(n,()=>function(e,t){const n={},a=(t=void 0!==t?t:{}).grammarSource,o={TemplatedRoot:mt,ExpressionRoot:bt};let l=mt;const u="{{{{",c="}}}}",d="{{{",h="}}}",p="{{",f="}}",m="\\",g="{",b="?",v=":",y="?:",w="??",E="||",x="&&",A="!",S="?.",T=".",C="[",_="]",O="(",q=",",R=")",N="-",P="'",L='"',k="`",z="}",M="#",D="==",F="!=",I=">=",$=">",B="<=",j="<",H=/^[^\\{]/,W=/^[0-9]/,V=/^[^']/,U=/^[^"]/,G=/^[^\\`{]/,Q=/^[a-zA-Z$_]/,K=/^[a-zA-Z$_0-9]/,J=/^[ \t\n\r]/,X=ut("{{{{",!1),Y=ut("}}}}",!1),Z=ut("{{{",!1),ee=ut("}}}",!1),te=ut("{{",!1),se=ut("}}",!1),re=ct(["\\","{"],!0,!1,!1),ie=ut("\\",!1),ne={type:"any"},ae=ut("{",!1),oe=ut("?",!1),le=ut(":",!1),ue=ut("?:",!1),ce=ut("??",!1),de=ut("||",!1),he=ut("&&",!1),pe=ut("!",!1),fe=dt("member"),me=ut("?.",!1),ge=ut(".",!1),be=dt("subscript"),ve=ut("[",!1),ye=ut("]",!1),we=dt("method-call"),Ee=ut("(",!1),xe=ut(",",!1),Ae=ut(")",!1),Se=dt("module-function-call"),Te=dt("number-literal"),Ce=ut("-",!1),_e=ct([["0","9"]],!1,!1,!1),Oe=dt("string-literal"),qe=ut("'",!1),Re=ct(["'"],!0,!1,!1),Ne=ut('"',!1),Pe=ct(['"'],!0,!1,!1),Le=ut("`",!1),ke=dt("tstring-expression"),ze=ut("}",!1),Me=dt("tstring-literal"),De=ct(["\\","`","{"],!0,!1,!1),Fe=dt("array-literal"),Ie=dt("dict-literal"),$e=dt("module-function"),Be=ut("#",!1),je=ct([["a","z"],["A","Z"],"$","_"],!1,!1,!1),He=ct([["a","z"],["A","Z"],"$","_",["0","9"]],!1,!1,!1),We=dt("identifier-or-keyword"),Ve=ut("==",!1),Ue=ut("!=",!1),Ge=ut(">=",!1),Qe=ut(">",!1),Ke=ut("<=",!1),Je=ut("<",!1),Xe=ct([" ","\t","\n","\r"],!1,!1,!1);function Ye(e){return e}function Ze(e,t,s){return{op:t,rhs:s}}function et(e,t,s){return{op:t,rhs:s}}function tt(e){return e}let st=0|t.peg$currPos;const rt=[{line:1,column:1}];let it,nt=st,at=t.peg$maxFailExpected||[],ot=0|t.peg$silentFails,lt={};if(t.startRule){if(!(t.startRule in o))throw new Error("Can't start parsing from rule \""+t.startRule+'".');l=o[t.startRule]}function ut(e,t){return{type:"literal",text:e,ignoreCase:t}}function ct(e,t,s,r){return{type:"class",parts:e,inverted:t,ignoreCase:s,unicode:r}}function dt(e){return{type:"other",description:e}}function ht(t){let s,r=rt[t];if(r)return r;if(t>=rt.length)s=rt.length-1;else for(s=t;!rt[--s];);for(r=rt[s],r={line:r.line,column:r.column};s<t;)10===e.charCodeAt(s)?(r.line++,r.column=1):r.column++,s++;return rt[t]=r,r}function pt(e,t,s){const r=ht(e),i=ht(t);return{source:a,start:{offset:e,line:r.line,column:r.column},end:{offset:t,line:i.line,column:i.column}}}function ft(e){st<nt||(st>nt&&(nt=st,at=[]),at.push(e))}function mt(){let e,t;const s=38*st+0,r=lt[s];if(r)return st=r.nextPos,r.result;for(e=[],t=gt();t!==n;)e.push(t),t=gt();return lt[s]={nextPos:st,result:e},e}function gt(){let t,r,i,a,o;const l=38*st+1,b=lt[l];return b?(st=b.nextPos,b.result):(t=st,r=st,i=function(){let t;const s=38*st+2,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,4)===u?(t=u,st+=4):(t=n,0===ot&&ft(X)),lt[s]={nextPos:st,result:t},t)}(),i!==n?(a=bt(),a!==n?(o=function(){let t;const s=38*st+3,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,4)===c?(t=c,st+=4):(t=n,0===ot&&ft(Y)),lt[s]={nextPos:st,result:t},t)}(),o!==n?r=a:(st=r,r=n)):(st=r,r=n)):(st=r,r=n),r!==n&&(v=r,r={type:s.templated.ten,value:v}),t=r,t===n&&(t=st,r=st,i=function(){let t;const s=38*st+4,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,3)===d?(t=d,st+=3):(t=n,0===ot&&ft(Z)),lt[s]={nextPos:st,result:t},t)}(),i!==n?(a=bt(),a!==n?(o=function(){let t;const s=38*st+5,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,3)===h?(t=h,st+=3):(t=n,0===ot&&ft(ee)),lt[s]={nextPos:st,result:t},t)}(),o!==n?r=a:(st=r,r=n)):(st=r,r=n)):(st=r,r=n),r!==n&&(r=function(e){return{type:s.templated.teh,value:e}}(r)),t=r,t===n&&(t=st,r=st,i=function(){let t;const s=38*st+6,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===p?(t=p,st+=2):(t=n,0===ot&&ft(te)),lt[s]={nextPos:st,result:t},t)}(),i!==n?(a=bt(),a!==n?(o=function(){let t;const s=38*st+7,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===f?(t=f,st+=2):(t=n,0===ot&&ft(se)),lt[s]={nextPos:st,result:t},t)}(),o!==n?r=a:(st=r,r=n)):(st=r,r=n)):(st=r,r=n),r!==n&&(r=function(e){return{type:s.templated.tet,value:e}}(r)),t=r,t===n&&(t=st,r=function(){let t,s,r,i,a,o,l;const u=38*st+8,c=lt[u];if(c)return st=c.nextPos,c.result;if(t=st,s=[],r=st,i=[],a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re)),a!==n)for(;a!==n;)i.push(a),a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re));else i=n;if(r=i!==n?e.substring(r,st):i,r===n&&(r=st,92===e.charCodeAt(st)?(i=m,st++):(i=n,0===ot&&ft(ie)),i!==n?(e.length>st?(a=e.charAt(st),st++):(a=n,0===ot&&ft(ne)),a!==n?r=a:(st=r,r=n)):(st=r,r=n),r===n&&(r=st,i=st,123===e.charCodeAt(st)?(a=g,st++):(a=n,0===ot&&ft(ae)),a!==n?(o=st,ot++,123===e.charCodeAt(st)?(l=g,st++):(l=n,0===ot&&ft(ae)),ot--,l===n?o=void 0:(st=o,o=n),o!==n?(a=[a,o],i=a):(st=i,i=n)):(st=i,i=n),r=i!==n?e.substring(r,st):i)),r!==n)for(;r!==n;){if(s.push(r),r=st,i=[],a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re)),a!==n)for(;a!==n;)i.push(a),a=e.charAt(st),H.test(a)?st++:(a=n,0===ot&&ft(re));else i=n;r=i!==n?e.substring(r,st):i,r===n&&(r=st,92===e.charCodeAt(st)?(i=m,st++):(i=n,0===ot&&ft(ie)),i!==n?(e.length>st?(a=e.charAt(st),st++):(a=n,0===ot&&ft(ne)),a!==n?r=Ye(a):(st=r,r=n)):(st=r,r=n),r===n&&(r=st,i=st,123===e.charCodeAt(st)?(a=g,st++):(a=n,0===ot&&ft(ae)),a!==n?(o=st,ot++,123===e.charCodeAt(st)?(l=g,st++):(l=n,0===ot&&ft(ae)),ot--,l===n?o=void 0:(st=o,o=n),o!==n?(a=[a,o],i=a):(st=i,i=n)):(st=i,i=n),r=i!==n?e.substring(r,st):i))}else s=n;return s!==n&&(s=s.join("")),t=s,lt[u]={nextPos:st,result:t},t}(),r!==n&&(r=function(e){return{type:s.templated.tel,value:e}}(r)),t=r))),lt[l]={nextPos:st,result:t},t);var v}function bt(){let e,t;const s=38*st+9,r=lt[s];return r?(st=r.nextPos,r.result):(e=st,kt(),t=vt(),t!==n?(kt(),e=t):(st=e,e=n),lt[s]={nextPos:st,result:e},e)}function vt(){let t,r,i,a,o,l;const u=38*st+10,c=lt[u];return c?(st=c.nextPos,c.result):(t=st,r=yt(),r!==n?(kt(),63===e.charCodeAt(st)?(i=b,st++):(i=n,0===ot&&ft(oe)),i!==n?(kt(),a=vt(),a!==n?(kt(),58===e.charCodeAt(st)?(o=v,st++):(o=n,0===ot&&ft(le)),o!==n?(kt(),l=vt(),l!==n?t={type:s.ter,cond:r,ifTrue:a,ifFalse:l}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=yt()),lt[u]={nextPos:st,result:t},t)}function yt(){let t,r,i,a;const o=38*st+11,l=lt[o];return l?(st=l.nextPos,l.result):(t=st,r=wt(),r!==n?(kt(),e.substr(st,2)===y?(i=y,st+=2):(i=n,0===ot&&ft(ue)),i!==n?(kt(),a=yt(),a!==n?t={type:s.elv,cond:r,ifFalse:a}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=wt()),lt[o]={nextPos:st,result:t},t)}function wt(){let t,r,i,a;const o=38*st+12,l=lt[o];return l?(st=l.nextPos,l.result):(t=st,r=Et(),r!==n?(kt(),e.substr(st,2)===w?(i=w,st+=2):(i=n,0===ot&&ft(ce)),i!==n?(kt(),a=wt(),a!==n?t={type:s.nullc,lhs:r,rhs:a}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=Et()),lt[o]={nextPos:st,result:t},t)}function Et(){let t,r,i,a,o,l;const u=38*st+13,c=lt[u];if(c)return st=c.nextPos,c.result;if(t=st,r=xt(),r!==n){for(i=[],a=st,kt(),e.substr(st,2)===E?(o=E,st+=2):(o=n,0===ot&&ft(de)),o!==n?(kt(),l=xt(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);a!==n;)i.push(a),a=st,kt(),e.substr(st,2)===E?(o=E,st+=2):(o=n,0===ot&&ft(de)),o!==n?(kt(),l=xt(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);t=function(e,t){let r=e;for(const e of t)r={type:s.or,lhs:r,rhs:e};return r}(r,i)}else st=t,t=n;return lt[u]={nextPos:st,result:t},t}function xt(){let t,r,i,a,o,l;const u=38*st+14,c=lt[u];if(c)return st=c.nextPos,c.result;if(t=st,r=At(),r!==n){for(i=[],a=st,kt(),e.substr(st,2)===x?(o=x,st+=2):(o=n,0===ot&&ft(he)),o!==n?(kt(),l=At(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);a!==n;)i.push(a),a=st,kt(),e.substr(st,2)===x?(o=x,st+=2):(o=n,0===ot&&ft(he)),o!==n?(kt(),l=At(),l!==n?a=l:(st=a,a=n)):(st=a,a=n);t=function(e,t){let r=e;for(const e of t)r={type:s.and,lhs:r,rhs:e};return r}(r,i)}else st=t,t=n;return lt[u]={nextPos:st,result:t},t}function At(){let e,t,r,i,a,o;const l=38*st+15,u=lt[l];if(u)return st=u.nextPos,u.result;if(e=st,t=St(),t!==n){for(r=[],i=st,kt(),a=Pt(),a!==n?(kt(),o=St(),o!==n?i=Ze(0,a,o):(st=i,i=n)):(st=i,i=n);i!==n;)r.push(i),i=st,kt(),a=Pt(),a!==n?(kt(),o=St(),o!==n?i=Ze(0,a,o):(st=i,i=n)):(st=i,i=n);e=function(e,t){let r=e;for(const e of t)r={type:s.eq,op:e.op,lhs:r,rhs:e.rhs};return r}(t,r)}else st=e,e=n;return lt[l]={nextPos:st,result:e},e}function St(){let e,t,r,i,a,o;const l=38*st+16,u=lt[l];if(u)return st=u.nextPos,u.result;if(e=st,t=Tt(),t!==n){for(r=[],i=st,kt(),a=Lt(),a!==n?(kt(),o=Tt(),o!==n?i=et(0,a,o):(st=i,i=n)):(st=i,i=n);i!==n;)r.push(i),i=st,kt(),a=Lt(),a!==n?(kt(),o=Tt(),o!==n?i=et(0,a,o):(st=i,i=n)):(st=i,i=n);e=function(e,t){let r=e;for(const e of t)r={type:s.cmp,op:e.op,lhs:r,rhs:e.rhs};return r}(t,r)}else st=e,e=n;return lt[l]={nextPos:st,result:e},e}function Tt(){let t,r,i;const a=38*st+17,o=lt[a];return o?(st=o.nextPos,o.result):(t=st,33===e.charCodeAt(st)?(r=A,st++):(r=n,0===ot&&ft(pe)),r!==n?(kt(),i=Tt(),i!==n?t={type:s.not,expr:i}:(st=t,t=n)):(st=t,t=n),t===n&&(t=function(){let e,t,r,i,a;const o=38*st+18,l=lt[o];if(l)return st=l.nextPos,l.result;if(e=st,t=_t(),t!==n){if(kt(),r=[],i=st,a=Ct(),a!==n?(kt(),i=a):(st=i,i=n),i!==n)for(;i!==n;)r.push(i),i=st,a=Ct(),a!==n?(kt(),i=a):(st=i,i=n);else r=n;r!==n?e={type:s.access,lhs:t,rhs:r}:(st=e,e=n)}else st=e,e=n;return e===n&&(e=_t()),lt[o]={nextPos:st,result:e},e}()),lt[a]={nextPos:st,result:t},t)}function Ct(){let t;const r=38*st+19,i=lt[r];return i?(st=i.nextPos,i.result):(t=function(){let t,r,i;const a=38*st+20,o=lt[a];return o?(st=o.nextPos,o.result):(ot++,t=st,e.substr(st,2)===S?(r=S,st+=2):(r=n,0===ot&&ft(me)),r===n&&(46===e.charCodeAt(st)?(r=T,st++):(r=n,0===ot&&ft(ge))),r!==n?(kt(),i=Nt(),i!==n?t={type:s.member,ns:"?."===r,rhs:i}:(st=t,t=n)):(st=t,t=n),ot--,t===n&&(r=n,0===ot&&ft(fe)),lt[a]={nextPos:st,result:t},t)}(),t===n&&(t=function(){let t,r,i,a,o;const l=38*st+21,u=lt[l];return u?(st=u.nextPos,u.result):(ot++,t=st,e.substr(st,2)===S?(r=S,st+=2):(r=n,0===ot&&ft(me)),r===n&&(r=null),91===e.charCodeAt(st)?(i=C,st++):(i=n,0===ot&&ft(ve)),i!==n?(kt(),a=vt(),a!==n?(kt(),93===e.charCodeAt(st)?(o=_,st++):(o=n,0===ot&&ft(ye)),o!==n?t={type:s.subscript,ns:null!==r,rhs:a}:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),ot--,t===n&&(r=n,0===ot&&ft(be)),lt[l]={nextPos:st,result:t},t)}(),t===n&&(t=function(){let t,r,i,a,o,l,u,c;const d=38*st+22,h=lt[d];if(h)return st=h.nextPos,h.result;if(ot++,t=st,e.substr(st,2)===S?(r=S,st+=2):(r=n,0===ot&&ft(me)),r===n&&(r=null),40===e.charCodeAt(st)?(i=O,st++):(i=n,0===ot&&ft(Ee)),i!==n){for(kt(),a=st,o=vt(),o!==n?(l=kt(),a=o):(st=a,a=n),a===n&&(a=null),o=[],l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);l!==n;)o.push(l),l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);41===e.charCodeAt(st)?(l=R,st++):(l=n,0===ot&&ft(Ae)),l!==n?t=function(e,t,r){return{type:s.method,ns:null!==e,args:null===t?[]:[t,...r]}}(r,a,o):(st=t,t=n)}else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(we)),lt[d]={nextPos:st,result:t},t}())),lt[r]={nextPos:st,result:t},t)}function _t(){let t,i,a,o;const l=38*st+23,u=lt[l];return u?(st=u.nextPos,u.result):(t=st,40===e.charCodeAt(st)?(i=O,st++):(i=n,0===ot&&ft(Ee)),i!==n?(kt(),a=vt(),a!==n?(kt(),41===e.charCodeAt(st)?(o=R,st++):(o=n,0===ot&&ft(Ae)),o!==n?t=a:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),t===n&&(t=function(){let t,r,i,a,o,l,u,c;const d=38*st+24,h=lt[d];if(h)return st=h.nextPos,h.result;if(ot++,t=st,r=function(){let t,r,i,a,o;const l=38*st+32,u=lt[l];return u?(st=u.nextPos,u.result):(ot++,t=st,35===e.charCodeAt(st)?(r=M,st++):(r=n,0===ot&&ft(Be)),r!==n?(i=st,a=Nt(),a!==n?(58===e.charCodeAt(st)?(o=v,st++):(o=n,0===ot&&ft(le)),o!==n?i=a:(st=i,i=n)):(st=i,i=n),i===n&&(i=null),a=Nt(),a!==n?t={type:s.function,module:i,value:a}:(st=t,t=n)):(st=t,t=n),ot--,t===n&&(r=n,0===ot&&ft($e)),lt[l]={nextPos:st,result:t},t)}(),r!==n)if(40===e.charCodeAt(st)?(i=O,st++):(i=n,0===ot&&ft(Ee)),i!==n){for(kt(),a=st,o=vt(),o!==n?(l=kt(),a=o):(st=a,a=n),a===n&&(a=null),o=[],l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);l!==n;)o.push(l),l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(kt(),c=vt(),c!==n?(kt(),l=c):(st=l,l=n)):(st=l,l=n);41===e.charCodeAt(st)?(l=R,st++):(l=n,0===ot&&ft(Ae)),l!==n?t=function(e,t,r){const i=null===t?[]:[t,...r];return{type:s.call,value:e,args:i}}(r,a,o):(st=t,t=n)}else st=t,t=n;else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(Se)),lt[d]={nextPos:st,result:t},t}(),t===n&&(t=function(){let t;const r=38*st+25,i=lt[r];return i?(st=i.nextPos,i.result):(t=function(){let t,r,i,a,o,l,u,c,d,h;const p=38*st+26,f=lt[p];if(f)return st=f.nextPos,f.result;if(ot++,t=st,r=st,i=st,45===e.charCodeAt(st)?(a=N,st++):(a=n,0===ot&&ft(Ce)),a===n&&(a=null),o=st,l=[],u=e.charAt(st),W.test(u)?st++:(u=n,0===ot&&ft(_e)),u!==n)for(;u!==n;)l.push(u),u=e.charAt(st),W.test(u)?st++:(u=n,0===ot&&ft(_e));else l=n;if(l!==n){if(u=st,46===e.charCodeAt(st)?(c=T,st++):(c=n,0===ot&&ft(ge)),c!==n){for(d=[],h=e.charAt(st),W.test(h)?st++:(h=n,0===ot&&ft(_e));h!==n;)d.push(h),h=e.charAt(st),W.test(h)?st++:(h=n,0===ot&&ft(_e));c=[c,d],u=c}else st=u,u=n;u===n&&(u=null),l=[l,u],o=l}else st=o,o=n;if(o===n)if(o=st,46===e.charCodeAt(st)?(l=T,st++):(l=n,0===ot&&ft(ge)),l!==n){if(u=[],c=e.charAt(st),W.test(c)?st++:(c=n,0===ot&&ft(_e)),c!==n)for(;c!==n;)u.push(c),c=e.charAt(st),W.test(c)?st++:(c=n,0===ot&&ft(_e));else u=n;u!==n?(l=[l,u],o=l):(st=o,o=n)}else st=o,o=n;return o!==n?(a=[a,o],i=a):(st=i,i=n),r=i!==n?e.substring(r,st):i,r!==n&&(r={type:s.literal,value:parseFloat(r)}),t=r,ot--,t===n&&(r=n,0===ot&&ft(Te)),lt[p]={nextPos:st,result:t},t}(),t===n&&(t=Ot(),t===n&&(t=function(){let t,r,i,a,o,l,u;const c=38*st+30,d=lt[c];if(d)return st=d.nextPos,d.result;if(ot++,t=st,91===e.charCodeAt(st)?(r=C,st++):(r=n,0===ot&&ft(ve)),r!==n){for(kt(),i=vt(),i===n&&(i=null),kt(),a=[],o=st,44===e.charCodeAt(st)?(l=q,st++):(l=n,0===ot&&ft(xe)),l!==n?(kt(),u=vt(),u!==n?(kt(),o=u):(st=o,o=n)):(st=o,o=n);o!==n;)a.push(o),o=st,44===e.charCodeAt(st)?(l=q,st++):(l=n,0===ot&&ft(xe)),l!==n?(kt(),u=vt(),u!==n?(kt(),o=u):(st=o,o=n)):(st=o,o=n);93===e.charCodeAt(st)?(o=_,st++):(o=n,0===ot&&ft(ye)),o!==n?t=function(e,t){const r=null===e?[]:[e,...t];return{type:s.array,value:r}}(i,a):(st=t,t=n)}else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(Fe)),lt[c]={nextPos:st,result:t},t}(),t===n&&(t=function(){let t,r,i,a,o,l,u,c,d,h,p;const f=38*st+31,m=lt[f];if(m)return st=m.nextPos,m.result;if(ot++,t=st,123===e.charCodeAt(st)?(r=g,st++):(r=n,0===ot&&ft(ae)),r!==n){for(kt(),i=st,a=Ot(),a!==n?(o=kt(),58===e.charCodeAt(st)?(l=v,st++):(l=n,0===ot&&ft(le)),l!==n?(u=kt(),c=vt(),c!==n?i=[a,c]:(st=i,i=n)):(st=i,i=n)):(st=i,i=n),i===n&&(i=null),a=kt(),o=[],l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(c=kt(),d=Ot(),d!==n?(kt(),58===e.charCodeAt(st)?(h=v,st++):(h=n,0===ot&&ft(le)),h!==n?(kt(),p=vt(),p!==n?(kt(),l=[d,p]):(st=l,l=n)):(st=l,l=n)):(st=l,l=n)):(st=l,l=n);l!==n;)o.push(l),l=st,44===e.charCodeAt(st)?(u=q,st++):(u=n,0===ot&&ft(xe)),u!==n?(c=kt(),d=Ot(),d!==n?(kt(),58===e.charCodeAt(st)?(h=v,st++):(h=n,0===ot&&ft(le)),h!==n?(kt(),p=vt(),p!==n?(kt(),l=[d,p]):(st=l,l=n)):(st=l,l=n)):(st=l,l=n)):(st=l,l=n);125===e.charCodeAt(st)?(l=z,st++):(l=n,0===ot&&ft(ze)),l!==n?t=function(e,t){var r=[];return null!==e&&r.push(e),r.push.apply(r,t),{type:s.dict,value:r}}(i,o):(st=t,t=n)}else st=t,t=n;return ot--,t===n&&(r=n,0===ot&&ft(Ie)),lt[f]={nextPos:st,result:t},t}()))),lt[r]={nextPos:st,result:t},t)}(),t===n&&(t=function(){let e,t;const i=38*st+34,a=lt[i];return a?(st=a.nextPos,a.result):(ot++,e=st,t=Nt(),t!==n&&(o=t,t=r.has(o)?{type:s.literal,value:r.get(o)}:{type:s.symbol,value:o}),e=t,ot--,e===n&&(t=n,0===ot&&ft(We)),lt[i]={nextPos:st,result:e},e);var o}()))),lt[l]={nextPos:st,result:t},t)}function Ot(){let t,r,i,a,o;const l=38*st+27,u=lt[l];if(u)return st=u.nextPos,u.result;if(ot++,t=st,39===e.charCodeAt(st)?(r=P,st++):(r=n,0===ot&&ft(qe)),r!==n){for(i=st,a=[],o=e.charAt(st),V.test(o)?st++:(o=n,0===ot&&ft(Re));o!==n;)a.push(o),o=e.charAt(st),V.test(o)?st++:(o=n,0===ot&&ft(Re));i=e.substring(i,st),39===e.charCodeAt(st)?(a=P,st++):(a=n,0===ot&&ft(qe)),a!==n?t={type:s.literal,value:i}:(st=t,t=n)}else st=t,t=n;if(t===n){if(t=st,34===e.charCodeAt(st)?(r=L,st++):(r=n,0===ot&&ft(Ne)),r!==n){for(i=st,a=[],o=e.charAt(st),U.test(o)?st++:(o=n,0===ot&&ft(Pe));o!==n;)a.push(o),o=e.charAt(st),U.test(o)?st++:(o=n,0===ot&&ft(Pe));i=e.substring(i,st),34===e.charCodeAt(st)?(a=L,st++):(a=n,0===ot&&ft(Ne)),a!==n?t={type:s.literal,value:i}:(st=t,t=n)}else st=t,t=n;if(t===n)if(t=st,96===e.charCodeAt(st)?(r=k,st++):(r=n,0===ot&&ft(Le)),r!==n){for(i=[],a=qt(),a===n&&(a=Rt());a!==n;)i.push(a),a=qt(),a===n&&(a=Rt());96===e.charCodeAt(st)?(a=k,st++):(a=n,0===ot&&ft(Le)),a!==n?t={type:s.tstring,parts:i}:(st=t,t=n)}else st=t,t=n}return ot--,t===n&&(r=n,0===ot&&ft(Oe)),lt[l]={nextPos:st,result:t},t}function qt(){let t,s,r,i;const a=38*st+28,o=lt[a];return o?(st=o.nextPos,o.result):(ot++,t=st,123===e.charCodeAt(st)?(s=g,st++):(s=n,0===ot&&ft(ae)),s!==n?(kt(),r=vt(),r!==n?(kt(),125===e.charCodeAt(st)?(i=z,st++):(i=n,0===ot&&ft(ze)),i!==n?t=r:(st=t,t=n)):(st=t,t=n)):(st=t,t=n),ot--,t===n&&(s=n,0===ot&&ft(ke)),lt[a]={nextPos:st,result:t},t)}function Rt(){let t,r,i,a,o;const l=38*st+29,u=lt[l];if(u)return st=u.nextPos,u.result;if(ot++,t=st,r=[],i=st,a=[],o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De)),o!==n)for(;o!==n;)a.push(o),o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De));else a=n;if(i=a!==n?e.substring(i,st):a,i===n&&(i=st,92===e.charCodeAt(st)?(a=m,st++):(a=n,0===ot&&ft(ie)),a!==n?(e.length>st?(o=e.charAt(st),st++):(o=n,0===ot&&ft(ne)),o!==n?i=o:(st=i,i=n)):(st=i,i=n)),i!==n)for(;i!==n;){if(r.push(i),i=st,a=[],o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De)),o!==n)for(;o!==n;)a.push(o),o=e.charAt(st),G.test(o)?st++:(o=n,0===ot&&ft(De));else a=n;i=a!==n?e.substring(i,st):a,i===n&&(i=st,92===e.charCodeAt(st)?(a=m,st++):(a=n,0===ot&&ft(ie)),a!==n?(e.length>st?(o=e.charAt(st),st++):(o=n,0===ot&&ft(ne)),o!==n?i=tt(o):(st=i,i=n)):(st=i,i=n))}else r=n;return r!==n&&(r={type:s.literal,value:r.join("")}),t=r,t===n&&(t=st,123===e.charCodeAt(st)?(r=g,st++):(r=n,0===ot&&ft(ae)),r!==n&&(r={type:s.literal,value:r}),t=r),ot--,t===n&&(r=n,0===ot&&ft(Me)),lt[l]={nextPos:st,result:t},t}function Nt(){let t,s,r,i,a;const o=38*st+33,l=lt[o];if(l)return st=l.nextPos,l.result;if(t=st,s=st,r=e.charAt(st),Q.test(r)?st++:(r=n,0===ot&&ft(je)),r!==n){for(i=[],a=e.charAt(st),K.test(a)?st++:(a=n,0===ot&&ft(He));a!==n;)i.push(a),a=e.charAt(st),K.test(a)?st++:(a=n,0===ot&&ft(He));r=[r,i],s=r}else st=s,s=n;return t=s!==n?e.substring(t,st):s,lt[o]={nextPos:st,result:t},t}function Pt(){let t;const s=38*st+35,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===D?(t=D,st+=2):(t=n,0===ot&&ft(Ve)),t===n&&(e.substr(st,2)===F?(t=F,st+=2):(t=n,0===ot&&ft(Ue))),lt[s]={nextPos:st,result:t},t)}function Lt(){let t;const s=38*st+36,r=lt[s];return r?(st=r.nextPos,r.result):(e.substr(st,2)===I?(t=I,st+=2):(t=n,0===ot&&ft(Ge)),t===n&&(62===e.charCodeAt(st)?(t=$,st++):(t=n,0===ot&&ft(Qe)),t===n&&(e.substr(st,2)===B?(t=B,st+=2):(t=n,0===ot&&ft(Ke)),t===n&&(60===e.charCodeAt(st)?(t=j,st++):(t=n,0===ot&&ft(Je))))),lt[s]={nextPos:st,result:t},t)}function kt(){let t,s;const r=38*st+37,i=lt[r];if(i)return st=i.nextPos,i.result;for(ot++,t=[],s=e.charAt(st),J.test(s)?st++:(s=n,0===ot&&ft(Xe));s!==n;)t.push(s),s=e.charAt(st),J.test(s)?st++:(s=n,0===ot&&ft(Xe));return ot--,lt[r]={nextPos:st,result:t},t}it=l();const zt=it!==n&&st===e.length;function Mt(){throw it!==n&&st<e.length&&ft({type:"end"}),t=at,s=nt<e.length?function(t=st){const s=e.codePointAt(t);return void 0===s?"":String.fromCodePoint(s)}(nt):null,r=nt<e.length?pt(nt,nt+1):pt(nt,nt),new i(i.buildMessage(t,s),t,s,r);var t,s,r}return t.peg$library?{peg$result:it,peg$currPos:st,peg$FAILED:n,peg$maxFailExpected:at,peg$maxFailPos:nt,peg$success:zt,peg$throw:zt?void 0:Mt}:zt?it:void Mt()}(e,{startRule:t===o.MODE_TEMPLATED?"TemplatedRoot":"ExpressionRoot"}))}static evaluate(e,t,s,r){return new a(e,t).visitRoot(s,r===o.MODE_TEMPLATED)}static interpret(e,t,s,r){return o.evaluate(e,t,o.parse(s,r),r)}}class l{#s;#r;constructor(e,t){this.#s=e,this.#r=t}withModule(e,t){const s=e?{[e]:t}:t;return new l({...this.#s,...s},this.#r)}withOverlay(...e){return new l(this.#s,0===e.length?this.#r:[...this.#r,...e])}resolve(e){return n(this.#r,e)}evaluateExpression(e){return o.interpret(this.#s,this.#r,e,o.MODE_EXPRESSION)}evaluateTemplated(e){return o.interpret(this.#s,this.#r,e,o.MODE_TEMPLATED)}}class u{static fromHtml(...e){const t=document.createElement("template");return t.innerHTML=e.map(e=>e.trim()).join(""),document.adoptNode(t.content)}static toHtml(e){var t=document.createElement("template");return t.content.appendChild(e),t.innerHTML}static isBlank(e){return 0===e.childElementCount&&""===e.textContent.trim()}static from(...e){const t=new DocumentFragment;for(const s of e)t.appendChild(s);return t}static fromChildNodes(e){const t=new DocumentFragment;for(;e.firstChild;)t.appendChild(e.firstChild);return t}}class c{static id=0;static uid(e){return`${e}-${++c.id}`}static defaultValue(e,t,s){return e.hasAttribute(t)||e.setAttribute(t,s),e.getAttribute(t)}static forward(e,t,s){t.getAttributeNames().filter(t=>t.startsWith(e)).forEach(r=>{const i=r.substring(e.length);if("class"===i){const r=t.getAttribute(`${e}class`)?.split(/\s+/).filter(e=>e.length)??[];return void s.classList.add(...r)}s.setAttribute(i,t.getAttribute(r))})}static set(e,t,s){null==s?e.removeAttribute(t):e.setAttribute(t,s)}}class d{static from(e){for(const t of e.children)t.matches('[slot=""]')&&t.removeAttribute("slot");const t=Array.from(e.children).filter(e=>e.matches("[slot]")).map(e=>{e.remove();const t=e.getAttribute("slot");return e.removeAttribute("slot"),[t,d.slotFromNode(e)]}),s={};s.default=new DocumentFragment,s.default.append(...e.childNodes);for(const[e,r]of t)e in s||(s[e]=new DocumentFragment),s[e].append(r);return s}static slotFromNode(e){return e instanceof HTMLTemplateElement?document.adoptNode(e.content):e instanceof HTMLScriptElement&&"text/html"===e.type?u.fromHtml(e.innerHTML):e}}class h{static isParsed(e){for(let t=e;t;t=t.parentNode)if(t.nextSibling)return!0;return!1}static waitDomContentLoaded(e){if("loading"===e.readyState)return new Promise(t=>{e.addEventListener("DOMContentLoaded",()=>t(void 0),{once:!0})});if("complete"===e.readyState)return Promise.resolve();const t=e.defaultView;return null===t?Promise.resolve():new Promise(e=>{const s=()=>{t.removeEventListener("DOMContentLoaded",s),t.removeEventListener("load",s),e(void 0)};t.addEventListener("DOMContentLoaded",s),t.addEventListener("load",s)})}static waitParsed(e){return h.isParsed(e)?Promise.resolve(e):new Promise(t=>{const s=new MutationObserver(()=>{h.isParsed(e)&&(s.disconnect(),t(e))});for(let t=e.parentNode;t;t=t.parentNode)s.observe(t,{childList:!0});h.waitDomContentLoaded(e.ownerDocument).then(()=>{s.disconnect(),t(e)})})}static queryChildren(e,t){for(const s of e.children)if(s.matches(t))return s;return null}static queryChildrenAll(e,t){const s=[];for(const r of e.children)r.matches(t)&&s.push(r);return s}}class p{#u=new Set;removed(e){return this.#u.has(e)}remove(e){e.replaceChildren?.(),Object.keys(e.dataset||{}).filter(e=>e.startsWith("tpl")).forEach(t=>{delete e.dataset[t]}),this.#u.add(e)}popData(e,t){const s=e.dataset[t];return delete e.dataset[t],s}prepend(e,t){e.parentNode.insertBefore(t,e)}append(e,t){e.parentNode.insertBefore(t,e.nextSibling)}replace(e,t){this.prepend(e,t),this.remove(e)}cleanup(){for(const e of this.#u)e.remove();this.#u.clear()}}class f{static ORDERED_COMMANDS=["tplIf","tplWith","tplEach","tplWhen","tplClassAppend","tplAttrAppend","tplRemove","tplVerbatim"];static tplIf(e,t,s,r){r.evaluateExpression(t)||s.remove(e)}static tplWith(e,t,s,r){const i=r.evaluateExpression(t),n=s.popData(e,"tplVar"),a=new b(e,r).withOverlay(n?{[n]:i}:i).render();s.replace(e,a)}static tplEach(e,t,s,r){const i=s.popData(e,"tplVar"),n=s.popData(e,"tplStat"),a=new b(e,r),o=r.evaluateExpression(t),l=null===o||"object"!=typeof o?void 0:Object.getPrototypeOf(o),u=o instanceof Map?[...o]:o?.[Symbol.iterator]||l!==Object.prototype&&null!==l?null:Object.entries(o),c=null===u?o:u.map(([e,t])=>({key:e,value:t}));if(!c?.[Symbol.iterator])throw new Error(`Expected an iterable got '${o}'`);if(!n){for(const t of c)s.prepend(e,a.withOverlay(i?{[i]:t}:t).render());return void s.remove(e)}const d=Array.isArray(c)||"number"==typeof c.length?c.length:"number"==typeof c.size?c.size:null;let h=0;for(const t of c){const r={index:h,count:h+1,size:d,first:0===h,last:null===d?null:h===d-1,even:h%2==0,odd:h%2==1};s.prepend(e,a.withOverlay({[n]:r},i?{[i]:t}:t).render()),++h}s.remove(e)}static tplWhen(e,t,s,r){r.evaluateExpression(t)||s.remove(e)}static tplVerbatim(e,t,s,r){const i=e.cloneNode(!0);s.replace(e,i)}static tplRemove(e,t,s,r){switch(t.toLowerCase()){case"tag":{const t=new DocumentFragment;for(;e.firstChild;)t.appendChild(e.firstChild);"tplVerbatim"in e.dataset?(s.popData(e,"tplVerbatim"),s.replace(e,t)):(s.append(e,t),s.remove(e));break}case"body":e.replaceChildren();break;case"all":s.remove(e)}}static tplClassAppend(e,t,s,r){const i=r.evaluateExpression(t);if(!i)return;const n=(Array.isArray(i)?i:[i]).flatMap(e=>"string"==typeof e?e.split(" "):e).filter(Boolean);0!==n.length&&e.classList.add(...n)}static tplAttrAppend(e,t,s,r){const i=r.evaluateExpression(t);i&&0!==i.length&&(Array.isArray(i[0])?i:[i]).forEach(([t,s])=>{e.setAttribute(t,s)})}static textNode(e,t,r,i){for(const n of i.evaluateTemplated(t))if(null!=n.value)switch(n.type){case s.dom.t:r.prepend(e,document.createTextNode(n.value));break;case s.dom.h:r.prepend(e,u.fromHtml("string"==typeof n.value?n.value:String(n.value)));break;case s.dom.n:if(!(n.value instanceof Node))throw new TypeError(`Expected a Node, got '${typeof n.value}'`);r.prepend(e,n.value)}r.remove(e)}}const m=new t(1e3);function g(e){return m.getOrCompute(e,e=>e.substring(3).split(/(?=[A-Z])/).join("-").toLowerCase())}class b{static fromHtml(e,t,...s){return new b(u.fromHtml(e),new l(t,s))}static fromSelector(e,t,...s){const r=document.querySelector(e);if(!(r instanceof HTMLTemplateElement))throw new Error("template selector does not match any template tag");const i=document.adoptNode(r.content);return new b(i,new l(t,s))}static fromTemplate(e,t,...s){const r=document.adoptNode(e.content);return new b(r,new l(t,s))}static fromFragment(e,t,...s){return new b(e,new l(t,s))}#c;#d;constructor(e,t){this.#c=e,this.#d=t}withEvaluator(e){return new b(this.#c,e)}withFragment(e){return new b(e,this.#d)}withModule(e,t){return new b(this.#c,this.#d.withModule(e,t))}withOverlay(...e){return new b(this.#c,this.#d.withOverlay(...e))}evaluateExpression(e,...t){return this.#d.withOverlay(...t).evaluateExpression(e)}evaluateTemplated(e,...t){return this.#d.withOverlay(...t).evaluateTemplated(e)}evaluator(){return this.#d}render(){try{const e=new p,t=document.importNode(this.#c,!0),s=t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?t:(()=>{const e=new DocumentFragment;return e.appendChild(t),e})(),r=document.createNodeIterator(s,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,b.#h);let i;for(;null!==(i=r.nextNode());){if(e.cleanup(),i.nodeType===Node.TEXT_NODE){try{f.textNode(i,i.nodeValue,e,this.#d)}catch(e){throw v.wrap("Error evaluating text node",i,e)}continue}const t=i;for(const s of f.ORDERED_COMMANDS){if(!(s in t.dataset))continue;const r=e.popData(t,s);try{f[s](t,r,e,this.#d)}catch(e){throw v.wrap(`Error evaluating data-tpl-${g(s)}="${r}"`,t,e)}if(e.removed(t))break}for(const s of Object.keys(t.dataset||{})){if(!s.startsWith("tpl"))continue;const r=g(s),i=e.popData(t,s);try{const e=this.#d.evaluateExpression(i);if("boolean"==typeof e){t.toggleAttribute(r,e);continue}null!=e&&t.setAttribute(r,e)}catch(e){throw v.wrap(`Error evaluating data-tpl-${g(s)}="${i}"`,t,e)}}}return e.cleanup(),s}catch(e){if(e instanceof v)throw e;throw new v("Error rendering template",this.#c,e)}}renderTo(e){e.replaceChildren(this.render())}appendTo(e){e.appendChild(this.render())}renderToSelector(e){const t=document.querySelector(e);t&&this.renderTo(t)}appendToSelector(e){const t=document.querySelector(e);t&&this.appendTo(t)}static#h(e){if(e.nodeType===Node.TEXT_NODE)return e.nodeValue.includes("{{")&&e.nodeValue.includes("}}")?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;for(const t of e.attributes)if(t.name.startsWith("data-tpl-"))return NodeFilter.FILTER_ACCEPT;return NodeFilter.FILTER_SKIP}}class v extends Error{static FRAMES=3;#p;#f;truncated=!1;static wrap(e,t,s){return s instanceof v&&s.depth>=v.FRAMES?(s.truncated=!0,s):new v(e,t,s)}constructor(e,t,s){super(`${e} in \`${v.describe(t)}\``,{cause:s}),this.name="RenderError",this.#p=t,this.#f=(s instanceof v?s.depth:0)+1}get depth(){return this.#f}get node(){return this.#p}get html(){return v.stringify(this.#p)}static describe(e){if(e.nodeType===Node.TEXT_NODE)return v.#m(String(e.nodeValue).trim());if(e.nodeType===Node.ELEMENT_NODE){const t=e,s=Array.from(t.attributes,e=>` ${e.name}="${e.value}"`).join("");return v.#m(`<${t.localName}${s}>`)}const t=Array.from(e.childNodes).filter(e=>e.nodeType===Node.ELEMENT_NODE||String(e.nodeValue??"").trim().length>0).map(e=>v.describe(e));return v.#m(t.join(""))}static#m(e){return e.length>120?`${e.slice(0,120)}…`:e}static stringify(e){const t=document.createElement("template");return t.content.appendChild(v.#g(e.cloneNode(!0))),t.innerHTML}static#g(e){e.nodeType===Node.TEXT_NODE&&(e.nodeValue=e.nodeValue.trim());for(let t=0;t<e.childNodes.length;t++){const s=e.childNodes[t];s.nodeType===Node.TEXT_NODE?(s.nodeValue=s.nodeValue.trim(),0===s.nodeValue.length&&(e.removeChild(s),t--)):s.nodeType===Node.ELEMENT_NODE&&v.#g(s)}return e}}class y{#b=new Map;#v;#y=new Promise(e=>{this.#v=e});constructor(){h.waitDomContentLoaded(document).then(()=>{this.#w()})}ready(){return this.#y}async#w(){await this.settled(),document.dispatchEvent(new CustomEvent("ftl:ready",{bubbles:!1,cancelable:!1})),this.#v()}enqueue(e){if(this.#b.has(e))return;const{promise:t,resolve:s}=Promise.withResolvers(),r=h.waitParsed(e).then(()=>e.upgrade()).finally(()=>{this.#b.delete(e),s()});this.#b.set(e,{upgrade:r,finished:t})}async#E(e,t){for(;;){const s=Array.from(this.#b).filter(([t])=>e(t)).map(([,e])=>t(e));if(0===s.length)return;await Promise.all(s)}}settled(){return this.#E(()=>!0,e=>e.finished)}upgraded(e){return this.#E(e,e=>e.upgrade)}whenUpgraded(e){return this.#b.get(e)?.upgrade}pending(){return Array.from(this.#b.keys())}}class w{#x={};#A=!1;#S={string:{unmarshal:(e,t,s)=>e,marshal:(e,t,s)=>null==e?null:String(e)},number:{unmarshal:(e,t,s)=>null===e?null:Number(e),marshal:(e,t,s)=>null==e?null:String(e)},presence:{unmarshal:(e,t,s)=>null!==e,marshal:(e,t,s)=>e?"":null},bool:{unmarshal:(e,t,s)=>"true"===e,marshal:(e,t,s)=>null==e?null:String(!0===e)},json:{unmarshal:(e,t,s)=>null===e?null:JSON.parse(e),marshal:(e,t,s)=>null==e?null:JSON.stringify(e)},csv:{unmarshal:(e,t,s)=>null===e?[]:e.split(",").map(e=>e.trim()).filter(e=>e),marshal:(e,t,s)=>null==e?null:e.join(",")}};#T={};#s;#C=[];#d=new l(void 0,[]);#_=new y;defineElement(e,t){return this.#A?(this.#O(e,t),this):(this.#x[e]=t,this)}static declarationsOf(e){const t=[];for(let s=e;null!==s&&s!==HTMLElement;s=Object.getPrototypeOf(s))t.unshift(s);const s=e=>t.flatMap(t=>Object.getOwnPropertyDescriptor(t,e)?.value??[]);return{observed:s("observed"),attributes:s("attributes")}}static propertyOf(e){return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}#O(e,t){const{observed:s,attributes:r}=w.declarationsOf(t),{template:i,templates:n,slots:a,mappers:o,config:l}=t,u=s.map(e=>e.split(":")[0]),c=[...new Set(u.reverse())].reverse(),d=[...r,...s].reduce((e,t)=>{const[s,r]=t.split(":"),i=r??"string";if(!(i in this.#S)&&!(i in(o??{})))throw new Error(`unsupported attribute type: ${i}`);return e[s]=o?.[i]??this.#S[i],e},{}),h=Object.entries(Object.assign({},n,i?{default:i}:{})).map(([e,t])=>[e,b.fromHtml(t)]),p=Object.fromEntries(h);t.BITS={registry:this,enqueue:e=>this.#_.enqueue(e),SLOTS:a,CONFIG:l,OBSERVED:c,DECLARED:[...new Set([...c,...r.map(e=>e.split(":")[0])])],ATTR_TO_MAPPER:d,ATTR_TO_PROPERTY:Object.fromEntries(c.map(e=>[e,w.propertyOf(e)])),TEMPLATES:p},customElements.define(e,t)}defineModule(e,t){const s=e?{[e]:t}:t;return this.#s={...this.#s,...s},this.#q(),this}defineModules(e){return this.#s=e,this.#q(),this}defineComponent(e,t){return this.#T[e]=t,this}defineData(...e){return this.#C=e,this.#q(),this}defineOverlay(...e){return this.#C=[...this.#C,...e],this.#q(),this}defineMapper(e,t){return this.#S[e]=t,this}plugin(e){return e.configure(this),this}configure(){for(const[e,t]of Object.entries(this.#x))this.#O(e,t),delete this.#x[e];return this.#A=!0,this}settle(e){return this.#_.upgraded(e)}whenUpgraded(e){return this.#_.whenUpgraded(e)}pending(){return this.#_.pending()}ready(){return this.#_.ready()}#q(){this.#d=new l(this.#s,this.#C)}evaluator(){return this.#d}component(e){return this.#T[e]}}const E=new w;class x{static fromHtml(e){return b.fromHtml(e).withEvaluator(E.evaluator())}static fromSelector(e){return b.fromSelector(e).withEvaluator(E.evaluator())}static fromTemplate(e){return b.fromTemplate(e).withEvaluator(E.evaluator())}static fromFragment(e){return b.fromFragment(e).withEvaluator(E.evaluator())}}class A{static waitFor(e){return E.settle(t=>e.contains(t))}static waitForChildren(e){return E.settle(t=>e!==t&&e.contains(t))}}class S extends HTMLElement{static BITS={registry:E,enqueue:e=>{},SLOTS:!1,CONFIG:void 0,OBSERVED:[],DECLARED:[],ATTR_TO_MAPPER:{},ATTR_TO_PROPERTY:{},TEMPLATES:{}};static get observedAttributes(){return this.BITS.OBSERVED}constructor(){super(),this.internals=this.attachInternals()}internals;#R=!1;#N=!1;#P=new Set;#L=null;#k={};#z(){return this.constructor.BITS}#M(e){const t=this.#z().ATTR_TO_MAPPER[e];if(!t)throw new Error(`${this.constructor.name} declares no attribute '${e}': declare it in static observed or static attributes, or read it with getAttribute`);return t}unmarshal(e,t){return this.#M(e).unmarshal(t,e,this)}marshal(e,t){return this.#M(e).marshal(t,e,this)}get _registry(){return this.#z().registry}component(e){return this.#z().registry.component(e)}template(e){const t=this.#z().TEMPLATES[e??"default"];if(!t)throw new Error(`no template named '${e??"default"}' on ${this.constructor.name}`);const s=t.withEvaluator(this.#z().registry.evaluator()),r=this.#z().CONFIG;return r?s.withOverlay({config:r}):s}connectedCallback(){this.#N||this.#z().enqueue(this)}attributeChangedCallback(e,t,s){t!==s&&(this.#P.has(e)||(this.#R?this[this.#z().ATTR_TO_PROPERTY[e]]=this.unmarshal(e,s):null!==this.#L&&e in this.#L&&(this.#L[e]=this.unmarshal(e,s))))}async upgrade(){if(this.#N)return;this.#N=!0;const e=this.#z().SLOTS?d.from(this):void 0,t=Object.fromEntries(this.#z().DECLARED.map(e=>[e,this.unmarshal(e,this.getAttribute(e))])),s=new Set(this.#z().OBSERVED);this.#k=Object.fromEntries(Object.entries(t).filter(([e])=>!s.has(e))),this.#L=t;try{await this.render({slots:e});const s=this.#z().ATTR_TO_PROPERTY;for(const e of this.#z().OBSERVED)this[s[e]]=t[e];this.#R=!0,this.internals.states.add("rendered")}finally{this.#L=null}}render(e){}declared(e){return e in this.#k?this.#k[e]:null!==this.#L&&e in this.#L?this.#L[e]:this.unmarshal(e,this.getAttribute(e))}get rendered(){return this.#R}reflectTo(e,t){const s=this.marshal(e,t);if(s!==this.getAttribute(e)){this.#P.add(e);try{c.set(this,e,s)}finally{this.#P.delete(e)}}}}const T=/\{(\w+)\}/g,C=/\{(\d+)\}/g,_=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=new Set,q=e=>{O.has(e)||(O.add(e),console.warn(`l10n: ${e}`))},R=new t(100),N=(e,t,s)=>{const r=`${e.name}|${t??""}|${void 0===s?"":JSON.stringify(s)}`;return R.getOrCompute(r,()=>new e(t,s))};class P{static t(e,...t){let s=(this.l10n??{})[e];if(void 0===s)return q(`missing message "${e}"`),e;if(_(s)){const r=1===t.length&&_(t[0])?t[0]:{};if("number"!=typeof r.count)q(`plural message "${e}" needs a numeric {count}`),s=s.other;else{const e=this.locale??navigator?.language??"en";s=s[N(Intl.PluralRules,e).select(r.count)]??s.other}}if(void 0===s||"object"==typeof s)return q(`plural message "${e}" has no "other" form`),e;if(1===t.length&&_(t[0])){const r=t[0];return s.replace(T,(t,s)=>s in r?String(r[s]):(q(`message "${e}" wants {${s}}`),t))}return t.length>0?s.replace(C,(s,r)=>{const i=Number(r);return i>=t.length?(q(`message "${e}" wants {${r}}`),s):String(t[i])}):s}static date(e,t){return N(Intl.DateTimeFormat,this.locale,t).format(e)}static number(e,t){return N(Intl.NumberFormat,this.locale,t).format(e)}static bytes(e){const t=N(Intl.NumberFormat,this.locale,{maximumFractionDigits:2}).format;return e>=1073741824?`${t(e/1024/1024/1024)}GiB`:e>=1048576?`${t(e/1024/1024)}MiB`:e>=1024?`${t(e/1024)}KiB`:`${t(e)}B`}static of(e={}){const t=e=>E.evaluator().resolve(e),s=s=>(...r)=>s.apply({l10n:t("l10n"),locale:e.locale??t("locale")},r);return{t:s(P.t),date:s(P.date),number:s(P.number),bytes:s(P.bytes)}}}var L=Object.freeze({__proto__:null,Attributes:c,BoundedCache:t,ExpressionEvaluator:l,Expressions:o,Fragments:u,LightSlots:d,Localization:P,Nodes:h,ParsedElement:S,Registry:w,RenderError:v,Rendering:A,Template:b,Templates:x,registry:E});class k extends Error{constructor(e,t,s){super(e,{cause:s}),this.name="Failure",this.problems=t}dropping(e){return new k(this.message,k.dropProblemsContext(this.problems,e),this)}static dropProblemsContext(e,t){return e.map(({type:e,context:s,reason:r,details:i})=>({type:e,context:s?.startsWith(t)?s.substring(t.length):s,reason:r,details:i}))}static problemsText(e,t=null){return e?.problems?.length?e.problems.map(e=>`${e.reason}`).join("\n"):t??`${e?.message??e}`}}class z{static encode(e,t){const s=t||z.URL_SAFE,r=e.byteLength,i=new Uint8Array(e);let n="";for(let e=0;e<r;e+=3)n+=s[i[e]>>2]+s[(3&i[e])<<4|i[e+1]>>4]+s[(15&i[e+1])<<2|i[e+2]>>6]+s[63&i[e+2]];return r%3==2?n=n.substring(0,n.length-1):r%3==1&&(n=n.substring(0,n.length-2)),n}static decode(e,t){const s=t||z.URL_SAFE;let r=e.length;for(;r>0&&"="===e.charAt(r-1);)--r;const i=e.substring(0,r);if(e.length-r>2||i.includes("=")||0===i.length&&e.length>0)throw new Error("invalid padding");if(i.length%4==1)throw new Error("invalid length");for(const e of i)if(-1===s.indexOf(e))throw new Error(`invalid character '${e}'`);const n=Math.floor(.75*i.length),a=new Uint8Array(n);let o=0,l=0;for(;o<n;){const e=s.indexOf(i.charAt(l++)),t=s.indexOf(i.charAt(l++)),r=s.indexOf(i.charAt(l++)),u=s.indexOf(i.charAt(l++));if(a[o++]=e<<2|t>>4,o===n)break;if(a[o++]=(15&t)<<4|r>>2,o===n)break;a[o++]=(3&r)<<6|u}return a.buffer}}z.STANDARD="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",z.URL_SAFE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";class M{static decode(e){if(e.length%2!=0)throw new Error("invalid length");if(!/^[0-9a-fA-F]*$/.test(e))throw new Error("invalid character");const t=e.length/2;return new Uint8Array(t).map((t,s)=>{const r=2*s,i=e.substring(r,r+2);return parseInt(i,16)})}static encode(e,t){return Array.from(e).map(e=>e.toString(16)).map(e=>t?e.toUpperCase():e).map(e=>e.padStart(2,"0")).join("")}}class D{#D;#F;constructor(e,t){this.#D=e,this.#F=t}get normalized(){return`${this.#D}/${this.#F}`}get type(){return this.#D}get subtype(){return this.#F}static parse(e){if(!e)return new D("unknown","unknown");const[t,s]=e.split(";"),[r,i]=t.trim().toLowerCase().split("/");return r&&i?new D(r,i):new D("unknown","unknown")}}class F extends k{constructor(e,t,s,r){super(e,s,r),this.name="HttpClientError",this.status=t}dropping(e){return new F(this.message,this.status,k.dropProblemsContext(this.problems,e),this)}static problem(e,t){return{type:e,context:null,reason:t,details:null}}static of(e,t){const s=String(t?.message??t??"unknown failure");return new F(s,0,[F.problem(e,s)],t)}static async fromResponse(e){switch(D.parse(e.headers.get("Content-Type")).normalized){case"application/failures+json":{const t=await e.json().catch(()=>F.#I);if(t===F.#I)return F.#$(e);if(!Array.isArray(t))return F.#$(e,"as a failures array");const s=`${e.status} ${e.statusText}: ${t.length} failures`;return new F(s,e.status,t)}case"application/problem+json":{const t=await e.json().catch(()=>F.#I);if(t===F.#I)return F.#$(e);if("object"!=typeof t||null===t||Array.isArray(t))return F.#$(e,"as a problem object");const s=`${e.status} ${e.statusText}: ${t.title} ${t.detail}`;return new F(s,e.status,t.problems||[F.problem("GENERIC_PROBLEM",s)])}default:return F.#B(e)}}static#I=Symbol("unreadable body");static#$(e,t="as json"){const s=D.parse(e.headers.get("Content-Type")).normalized,r=`${e.status} ${e.statusText}: the ${s} body does not decode ${t}`;return new F(r,e.status,[F.problem("GENERIC_PROBLEM",r)])}static async#B(e){const t=await e.text().catch(()=>null),s=null===t?`${e.status} ${e.statusText}: the body could not be read`:`${e.status} ${e.statusText}: ${t}`;return new F(s,e.status,[F.problem("GENERIC_PROBLEM",s)])}}const I=e=>globalThis.document?.querySelector(`meta[name="${e}"]`)?.getAttribute("content")??void 0;class ${async intercept(e,t,s){if(e.origin!==(globalThis.window?.location?.origin??e.origin))return await s.proceed(e,t);const r=I("_csrf_header"),i=I("_csrf");return r&&i&&t.headers.set(r,i),await s.proceed(e,t)}}class B{#j;constructor(e){this.#j=e}async intercept(e,t,s){const r=await s.proceed(e,t);return 401===r.status?(window.location.href=this.#j,new Promise(()=>{})):r}}class j{#H;constructor(){this.#H=[]}withCsrfToken(){return this.#H.push(new $),this}withRedirectOnUnauthorized(e){return this.#H.push(new B(e)),this}withInterceptors(...e){return this.#H.push(...e),this}build(){return new V(this.#H)}}class H{async intercept(e,t,s){try{return await fetch(e,t)}catch(e){throw F.of("CONNECTION_PROBLEM",e)}}}class W{#H;#W;constructor(e,t){this.#H=e,this.#W=t}async proceed(e,t){const s=this.#H[this.#W];return await s.intercept(e,t,new W(this.#H,this.#W+1))}}class V{#H;static builder(){return new j}constructor(e){this.#H=e||[]}async exchange(e,t,s){const r=[...this.#H,...s||[],new H],i=new W(r,0),n=new URL(new Request(e).url),a={...t,headers:new Headers(t?.headers)};return await i.proceed(n,a)}request(e,t){return Q.create(this,e,t)}get(e){return Q.create(this,"GET",e)}head(e){return Q.create(this,"HEAD",e)}post(e){return Q.create(this,"POST",e)}put(e){return Q.create(this,"PUT",e)}patch(e){return Q.create(this,"PATCH",e)}delete(e){return Q.create(this,"DELETE",e)}}const U=async(e,t)=>{try{return await e[t]()}catch(e){throw F.of("UNMARSHALING_PROBLEM",e)}},G=e=>null==e?[]:"string"==typeof e?new URLSearchParams(e):"function"==typeof e[Symbol.iterator]?e:Object.entries(e);class Q{#V;#U;#G;#Q;#K;#J;#X;#H;#c;static create(e,t,s){const r=s.indexOf("#"),i=-1===r?"":s.slice(r),n=-1===r?s:s.slice(0,r),a=n.indexOf("?");return new Q(e,t,-1===a?n:n.slice(0,a),new URLSearchParams(-1===a?"":n.slice(a+1)),new Headers,void 0,{},[],i)}constructor(e,t,s,r,i,n,a,o,l=""){this.#V=e,this.#U=t,this.#G=s,this.#Q=r,this.#J=n,this.#K=i,this.#X=a,this.#H=o,this.#c=l}headers(e){for(const[t,s]of G(e))null==s?this.#K.delete(t):this.#K.set(t,s);return this}header(e,t){return null==t?this.#K.delete(e):this.#K.set(e,t),this}params(e){for(const[t,s]of G(e))null==s?this.#Q.delete(t):this.#Q.set(t,s);return this}param(e,...t){this.#Q.delete(e);const s=t.filter(e=>null!=e);if(0===s.length)return this;for(const t of s)this.#Q.append(e,t);return this}body(e){return this.#J=e,this}json(e){if(void 0===e)return this;const t=JSON.stringify(e);return this.#K.set("Content-Type","application/json"),this.#J=t,this}multipart(e){const t=new FormData;return e(new K(t)),this.#J=t,this}options(e){for(const[t,s]of Object.entries(e))this.#X[t]=s;return this}option(e,t){return this.#X[e]=t,this}interceptors(e){for(const t of e)this.#H.push(t);return this}interceptor(e){return this.#H.push(e),this}async exchange(){const e=this.#Q.size?`?${this.#Q}`:"",t={...this.#X,headers:this.#K,method:this.#U,body:this.#J};return await this.#V.exchange(`${this.#G}${e}${this.#c}`,t,this.#H)}async fetch(){try{const e=await this.exchange();if(!e.ok)throw await F.fromResponse(e);return e}catch(e){if(e instanceof k)throw e;throw F.of("UNEXPECTED_PROBLEM",e)}}async fetchText(){const e=await this.fetch();return await U(e,"text")}async fetchJson(){const e=await this.fetch();return 204===e.status?null:await U(e,"json")}async fetchBlob(){const e=await this.fetch();return await U(e,"blob")}async fetchArrayBuffer(){const e=await this.fetch();return await U(e,"arrayBuffer")}}class K{#Y;constructor(e){this.#Y=e}field(e,t){return this.#Y.append(e,t),this}blob(e,t,s){return this.#Y.append(e,t,s),this}blobs(e,t){for(const s of t)this.#Y.append(e,s);return this}json(e,t,s){const r=new Blob([JSON.stringify(t)],{type:"application/json"});return this.#Y.append(e,r,s),this}}var J=Object.freeze({__proto__:null,Base64:z,Failure:k,Hex:M,HttpClient:V,HttpClientBuilder:j,HttpClientError:F,HttpInterceptorChain:W,HttpMultipartRequestCustomizer:K,HttpRequestBuilder:Q,MediaType:D});const X=e=>{const t=t=>{try{e().removeItem(t)}catch{}},s=s=>{let r;try{r=e().getItem(s)}catch{return}if(null!==r)try{return JSON.parse(r)}catch{return void t(s)}};return{save:(t,s)=>{e().setItem(t,JSON.stringify(s))},load:s,remove:t,pop:e=>{const r=s(e);return t(e),r}}},Y=e=>({save(t,s,r){e.save(t,{revision:s,data:r})},load(t,s){const r=e.load(t);if(null!=r&&"object"==typeof r&&r.revision===s)return r.data;e.remove(t)}}),Z=X(()=>localStorage),ee=X(()=>sessionStorage),te=Y(Z),se=Y(ee);class re{static async fireAsync(e,t,s){e.dispatchEvent(t);const r=t.async?.promises??[],i=s?.mode??"broadcast";if("pipeline"===i&&r.length>1||"delegate"===i&&1!==r.length)throw Promise.all(r).catch(()=>{}),new Error("pipeline"===i?`[AsyncEvents] Event "${t.type}" is configured in 'pipeline' mode and expects at most one async listener, but ${r.length} listeners were triggered on this element.`:`[AsyncEvents] Event "${t.type}" is configured in 'delegate' mode and requires exactly one async listener, but ${r.length} were registered.`);return"broadcast"===i?Promise.all(r):Promise.resolve(r[0])}static asyncOn(e,t,s,r){const i=async e=>{const t=e;t.async||(t.async={promises:[]});const{promise:r,resolve:i,reject:n}=Promise.withResolvers();t.async.promises.push(r);try{i(await s(t))}catch(e){n(e)}};return e.addEventListener(t,i,r),i}static asyncOff(e,t,s,r){e.removeEventListener(t,s,r)}static mixInto(...e){for(const t of e)Object.assign(t.prototype,{async fireAsync(e,t){return await re.fireAsync(this,e,t)},asyncOn(e,t,s){return re.asyncOn(this,e,t,s)},asyncOff(e,t,s){re.asyncOff(this,e,t,s)}})}}class ie{#Z=0;take(){return++this.#Z,this.hold()}hold(){const e=this.#Z,t=this;return{get stale(){return e!==t.#Z}}}invalidate(){++this.#Z}}const ne=e=>{for(let t=e.parentElement;t;t=t.parentElement)if("function"==typeof t.describedBy)return t;return null};class ae{static sleep(e){return new Promise(t=>setTimeout(t,e))}static debounce(e,t,s){const r=s?.immediate??!1;let i=null,n=[],a=0;const o=()=>{const s=performance.now()-a;e>s?i=setTimeout(o,e-s):(i=null,r||t(...n),null===i&&(n=[]))};return[(...s)=>{n=s,a=performance.now(),null===i&&(i=setTimeout(o,e),r&&t(...n))},()=>{clearTimeout(i??void 0),i=null,n=[]}]}static throttle(e,t,s){const r=s?.leading??!0,i=s?.trailing??!0;let n=null,a=[],o=0;const l=()=>{o=r?performance.now():0,n=null,t(...a),null===n&&(a=[])};return[(...s)=>{const u=performance.now();o||r||(o=u);const c=0===o?0:e-(u-o);a=s,c<=0||c>e?(null!==n&&(clearTimeout(n),n=null),o=u,t(...a),null===n&&(a=[])):null===n&&i&&(n=setTimeout(l,c))},()=>{clearTimeout(n??void 0),n=null,a=[]}]}}class oe{static flatten(e,t,s){return Object.keys(e).reduce((r,i)=>{const n=t.length?`${t}.${i}`:i;return s.has(n)||"object"!=typeof e[i]||null===e[i]?r[n]=e[i]:Object.assign(r,oe.flatten(e[i],n,s)),r},{})}static#ee=new Set(["__proto__","prototype","constructor"]);static providePath(e,t,s){const r=t.split(".").map(e=>/^[0-9]+$/.test(e)?+e:e);for(const e of r)if(oe.#ee.has(e))throw new Error(`unsupported name segment '${e}' in '${t}'`);let i=e??{},n=null;for(let t=0;;++t){const a=r[t],o=r[t-1];if(Number.isInteger(a)&&!Array.isArray(i)&&(null!==n?n[o]=i=[]:e=i=[]),t===r.length-1)return i[a]=void 0!==s?s:a in i?i[a]:null,e;"object"==typeof i[a]&&null!==i[a]||(i[a]={}),n=i,i=i[a]}}static extract(e){if("radio"===e.getAttribute("type")){if(!e.checked)return;return"boolean"===e.dataset.fulBindType?"true"===e.value:e.value}return"checkbox"===e.getAttribute("type")?e.checked:"boolean"===e.dataset.fulBindType?e.value?"true"===e.value:null:"SELECT"===e.tagName&&e.multiple?Array.from(e.selectedOptions).map(e=>e.value):"INPUT"!==e.tagName&&"SELECT"!==e.tagName&&"TEXTAREA"!==e.tagName||""!==e.value&&void 0!==e.value?e.value:null}static#te(e){return"submit"===e.type||"reset"===e.type||"button"===e.type}static extractFrom(e,t){let s={};for(const r of e.elements)r.hasAttribute("name")&&(oe.#te(r)&&r!==t||r.matches(":disabled")&&r!==t||(s=oe.providePath(s,r.getAttribute("name"),oe.extract(r))));return s}static mutate(e,t){if("radio"!==e.getAttribute("type"))if("checkbox"!==e.getAttribute("type")){if("SELECT"===e.tagName&&e.multiple){const s=Array.isArray(t)?t.map(String):null==t?[]:[String(t)];return void Array.from(e.options).forEach(e=>{e.selected=s.includes(e.value)})}e.value=t}else e.checked=t;else e.checked=null!=t&&e.getAttribute("value")===String(t)}static mutateIn(e,t){const s=Array.from(e.elements).map(e=>e.getAttribute("name")).filter(e=>e);for(const[r,i]of Object.entries(oe.flatten(t,"",new Set(s))))for(const t of e.querySelectorAll(`[name='${CSS.escape(r)}']`))oe.mutate(t,i)}static errors(e,t,s){e.querySelectorAll("ful-field-error").forEach(e=>{e.setAttribute("aria-live",s?"off":"polite")});const r=e=>("FIELD_ERROR"===e.type||"INVALID_FORMAT"===e.type)&&e.context,i=t.filter(r),n=t.filter(e=>!r(e));e.querySelectorAll("[name]").forEach(e=>{e.setCustomValidity?.("")}),e.querySelectorAll("ful-errors").forEach(e=>{e.setAttribute("role","alert"),e.replaceChildren(),e.setAttribute("hidden","")});const a=[];i.forEach(t=>{const s=t.context.replace(/\[/g,".").replace(/\]\./g,".").replace(/\]/g,"").split(".");for(let r=s.length;0!==r;--r){const i=s.slice(0,r).join("."),n=e.querySelectorAll(`[name='${CSS.escape(i)}']`);if(0===n.length)continue;const a=s.slice(r).join(".");return void n.forEach(e=>{e.setCustomValidity?.(t.reason,a)})}a.push(t)});const o=[...n,...a];e.querySelectorAll("ful-errors").forEach(e=>{const t=e;0!==o.length?(e.removeAttribute("hidden"),t.innerText=o.map(e=>e.reason).join("\n")):t.innerText=""}),0!==t.length&&s&&Array.from(e.querySelectorAll(":invalid")).sort((e,t)=>e.getBoundingClientRect().y-t.getBoundingClientRect().y)[0]?.focus()}}class le extends S{static formAssociated=!0;static observed=["disabled:presence","readonly:presence","required:presence","value"];static ROLE="presentation";#se;#re;#ie=[];#ne=null;#ae;#oe;#le;#ue=[];constructor(){super(),this.internals.role=this.constructor.ROLE}#ce(){return[this.#oe??this.#se,...this.#ue].filter(e=>e)}#de({fragment:e,control:t,error:s,label:r=null,described:i=null,claims:n=null,announces:a=t,freeze:o=null,also:l=[]}){this.#se=t,this.#ae=s,this.#oe=n,this.#le=a,this.#ue=l,o&&o.addEventListener("click",e=>{this.readonly&&e.preventDefault()},!0),this.#re=i??t,s&&(s.id=s.id||c.uid("ful-field-error"),this.#ne=s.id),this.#he(),r&&le.#pe(this,r,t),this.addEventListener("keydown",e=>{if("Enter"!==e.key||e.defaultPrevented||e.isComposing)return;const t=e.target;t.form!==this.internals.form&&le.#fe(t)&&this._requestSubmit()}),this.replaceChildren(e)}static#fe(e){return e instanceof HTMLInputElement&&!["file","button","submit","reset","image"].includes(e.type)}describedBy(e){return!!e&&(e.id||(e.id=c.uid("ful-described")),this.#ie.includes(e.id)||this.#ie.push(e.id),this.#he(),!0)}#he(){if(!this.#re)return;const e=[...this.#ie,this.#ne].filter(e=>e);e.length&&this.#re.setAttribute("aria-describedby",e.join(" "))}focus(e){this.#se?.focus(e)}setCustomValidity(e,t){if(c.set(this.#le??this.#se,"aria-invalid",e?"true":null),!e)return this.internals.setValidity({}),void(this.#ae.innerText="");this.internals.setValidity({customError:!0}," "),this.#ae.innerText=e}_requestSubmit(){const e=this.internals.form;if(!e)return;const t=e.querySelectorAll("button:not(:disabled), input:not(:disabled)");e.requestSubmit([...t].find(t=>"submit"===t.type&&t.form===e))}_notifyChange(e={}){this.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!1,detail:{value:this.value,...e}}))}static#me=new Set(["BUTTON","INPUT","METER","OUTPUT","PROGRESS","SELECT","TEXTAREA"]);static#pe(e,t,s){if(!le.#me.has(s.tagName)||"hidden"===s.getAttribute("type"))return t.id||(t.id=c.uid("ful-label")),s.setAttribute("aria-labelledby",t.id),void t.addEventListener("click",()=>e.focus());s.id||(s.id=c.uid("ful-control")),t.setAttribute("for",s.id)}_interactive(){return!this.matches(":disabled")&&!this.readonly}get value(){}set value(e){}formResetCallback(){this.value=this.unmarshal("value",this.getAttribute("value"))}get disabled(){return this.hasAttribute("disabled")}set disabled(e){this.reflectTo("disabled",e);for(const t of this.#ce())t.toggleAttribute("disabled",e)}get readonly(){return this.hasAttribute("readonly")}set readonly(e){for(const t of this.#ce())t.readOnly=e;this.#le&&c.set(this.#le,"aria-readonly",e?"true":null),this.reflectTo("readonly",e)}get required(){return this.hasAttribute("required")}set required(e){this.#le&&c.set(this.#le,"aria-required",e?"true":null),this.reflectTo("required",e)}render(e){const t=this._build(e);if(t instanceof Promise)return t.then(e=>this.#ge(e));this.#ge(t)}#ge(e){this.#de(e)}_build(e){throw new Error(`${this.constructor.name} must implement _build`)}}class ue{#be;#ve;#U;#ye;#we;constructor(e,t,s,r,i){this.#be=e,this.#ve=t,this.#U=s,this.#ye=r,this.#we=i}prepare(e,t){return this.#ye(e,t)}async submit(e,t){return await this.#be.request(this.#U,this.#ve).json(e).fetch()}transform(e,t){return this.#we(e,t)}}class ce{#ye;#we;constructor(e,t){this.#ye=e,this.#we=t}async prepare(e,t){return await this.#ye(e,t)}async submit(e,t,s){return s}async transform(e,t){return await this.#we(e,t)}}class de{static create(e,t){const s=e.component("http-client"),r=e.declared("request-mapper")?e.component(e.declared("request-mapper")):e=>e,i=e.declared("response-mapper")?e.component(e.declared("response-mapper")):e=>e,n=e.declared("action");if(!n)return new ce(r,i);const a=e.declared("method")??"POST";return new ue(s,n,a,r,i)}}class he extends S{static attributes=["action","method","loader","request-mapper","response-mapper","clear-invalid-on-change:presence","scroll-on-error:presence","autocomplete"];form;render(){const e=document.createElement("form");this.form=e,e.setAttribute("novalidate",""),c.forward("form-",this,e),c.set(e,"autocomplete",this.declared("autocomplete")),e.replaceChildren(...this.childNodes),e.addEventListener("submit",async e=>{e.preventDefault(),e.stopPropagation(),await this.submit(e.submitter??void 0)}),this.addEventListener("click",e=>{const t=e.target;t.closest?.('[aria-disabled="true"]')&&(e.preventDefault(),e.stopImmediatePropagation())},!0),this.declared("clear-invalid-on-change")&&this.addEventListener("change",e=>{e.target.setCustomValidity?.("")}),this.replaceChildren(e)}#Ee=!1;async submit(e){if(this.#Ee)return;let t,s;this.#Ee=!0,this.spinner(!0);try{const r=this.component(this.declared("loader")??"loaders:form").create(this);t=oe.extractFrom(this.form,e),s=await r.prepare(t,this);const i=new CustomEvent("submit",{bubbles:!0,cancelable:!0,detail:{submitter:e,values:t,request:s}});if(!this.dispatchEvent(i))return;this.errors=[];const n=new CustomEvent("submit:requested",{bubbles:!0,cancelable:!1,detail:{submitter:e,values:i.detail.values,request:i.detail.request}});let a=await re.fireAsync(this,n,{mode:"pipeline"});s=n.detail.request,a=await r.submit(s,this,a);const o=await r.transform(a,this);this.dispatchEvent(new CustomEvent("submit:success",{bubbles:!0,cancelable:!1,detail:{submitter:e,values:t,request:s,response:o}}))}catch(r){this.dispatchEvent(new CustomEvent("submit:failure",{bubbles:!0,cancelable:!1,detail:{submitter:e,values:t,request:s,exception:r}})),r instanceof k&&(this.errors=r.problems),console.warn("failed to submit form",this,"reason:",r)}finally{this.#Ee=!1,this.spinner(!1)}}reset(){this.form.reset()}#xe=0;#Ae(e){if(c.defaultValue(e,"role","status"),e.hidden=!1,""!==e.textContent.trim())return;const t=document.createElement("span");t.className="ful-sr-only",t.dataset.ref="spinner-label",e.append(t),t.textContent=P.of().t("spinner.loading")}spinner(e){if(e){if(++this.#xe,1!==this.#xe)return}else if(this.#xe=Math.max(0,this.#xe-1),0!==this.#xe)return;c.set(this,"aria-busy",e?"true":null),this.querySelectorAll("ful-spinner").forEach(t=>{const s=t;e?this.#Ae(s):(s.hidden=!0,s.querySelector(":scope > [data-ref=spinner-label]")?.remove())}),this.querySelectorAll("input,button").forEach(t=>{const s=t;if("submit"===s.type||"reset"===s.type)if(e)s.dataset.wd=s.getAttribute("aria-disabled")??"",s.setAttribute("aria-disabled","true");else{if(void 0===s.dataset.wd)return;c.set(s,"aria-disabled",s.dataset.wd||null),delete s.dataset.wd}})}set values(e){oe.mutateIn(this.form,e)}get values(){return oe.extractFrom(this.form)}set errors(e){oe.errors(this.form,e,this.declared("scroll-on-error"))}}const pe=new t(100),fe=(e,t)=>pe.getOrCompute(`${e}:${t}`,()=>{try{return new RegExp(t,"g")}catch(s){return console.warn(`invalid ${e} attribute`,t,s),null}}),me=new WeakSet;class ge extends le{static observed=["placeholder"];static attributes=["type","v-type","keep","reject","uppercase:presence","trim:presence","autocomplete"];static slots=!0;static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <input data-tpl-if="type != \'textarea\'" data-tpl-type="type" placeholder=" " form="">\n <textarea data-tpl-if="type == \'textarea\'" placeholder=" " form=""></textarea>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_input;_type(){return this.declared("type")??("number"===this.declared("v-type")?"number":"text")}_build({slots:e}){const t=this._type(),s=this.template().withOverlay({type:t,slots:e}).render();return this._input=s.querySelector("input,textarea"),c.set(this._input,"autocomplete",this.declared("autocomplete")??(this.closest("form")?.getAttribute("autocomplete")??null)),c.forward("input-",this,this._input),this._input.addEventListener("input",e=>{const t=(e=>{const t=e.declared("keep"),s=e.declared("reject");if(null===t||null===s||me.has(e)||(me.add(e),console.warn("a ful-input declares both keep and reject: keep is applied, reject is ignored",e)),null!==t){const e=fe("keep",t);return e&&(t=>(t.match(e)??[]).join(""))}if(null!==s){const e=fe("reject",s);return e&&(t=>t.replace(e,""))}return null})(this);if(!t)return;const s=e.target.value,r=t(s);if(s===r)return;const i=e.target.selectionStart;if(e.target.value=r,null===i)return;const n=t(s.slice(0,i)).length;e.target.setSelectionRange(n,n)}),this._input.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()}),{fragment:s,control:this._input,error:s.querySelector("ful-field-error"),label:s.querySelector("label")}}get value(){const e=this.declared("uppercase"),t=this.declared("trim"),s=this._input.value,r=e?s.toUpperCase():s,i=t?r.trim():r;if(""===i)return null;if("number"===this.declared("v-type")){const e=Number(i);return Number.isNaN(e)?i:e}return i}set value(e){this._input.value=""===e||void 0===e?null:e}get placeholder(){const e=this._input.getAttribute("placeholder");return" "===e?null:e}set placeholder(e){c.set(this._input,"placeholder",e??" "),this.reflectTo("placeholder",e)}}class be extends S{static attributes=["locale","default"];render(){const e=this.textContent.trim(),[t,s,r]=e.split("-").map(Number),i=""===e?null:new Date(t,s-1,r);if(null===i||Number.isNaN(i.getTime()))return void this.replaceChildren(this.declared("default")??"");const{date:n}=P.of({locale:this.declared("locale")??void 0});this.replaceChildren(n(i,{year:"numeric",month:"numeric",day:"numeric"}))}}class ve extends S{static attributes=["locale","default"];render(){const e=this.textContent.trim(),t=""===e?null:new Date(ve.isoToLocal(e));if(null===t||Number.isNaN(t.getTime()))return void this.replaceChildren(this.declared("default")??"");const{date:s}=P.of({locale:this.declared("locale")??void 0});this.replaceChildren(s(t,{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1}))}static#Se(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)?new Date(`${e}T00:00:00`):new Date(e)}static isoToLocal(e){const t=ve.#Se(e),s=(e,t)=>String(t).padStart(e,"0");return`${t.getFullYear()}-${s(2,t.getMonth()+1)}-${s(2,t.getDate())}T${s(2,t.getHours())}:${s(2,t.getMinutes())}:${s(2,t.getSeconds())}.${s(3,t.getMilliseconds())}`}static localToIso(e){const t=ve.#Se(e);return Number.isNaN(t.getTime())?null:t.toISOString()}}class ye extends ge{static observed=["step","min","max"];_type(){return"date"}get min(){const e=this._input.min;return""===e?null:e}set min(e){this._input.min=ye.#Te(e)}get max(){const e=this._input.max;return""===e?null:e}set max(e){this._input.max=ye.#Te(e)}get step(){const e=this._input.step;return""===e?null:e}set step(e){this._input.step=e??""}static#Te(e){if(!e)return"";const t=e=>new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().split("T")[0];if("now"===e)return t(new Date);const s=/^([+-])(\d+)([dmy])$/.exec(e);if(!s)return e;const r="-"===s[1]?-1:1,i=+s[2],n=new Date;switch(n.setHours(0,0,0,0),s[3]){case"d":n.setDate(n.getDate()+i*r);break;case"m":{const e=n.getDate();n.setMonth(n.getMonth()+i*r),n.getDate()!==e&&n.setDate(0);break}case"y":n.setFullYear(n.getFullYear()+i*r)}return t(n)}}class we extends ye{_type(){return"time"}get min(){const e=this._input.min;return""===e?null:e}set min(e){this._input.min=this.#Ce(e)}get max(){const e=this._input.max;return""===e?null:e}set max(e){this._input.max=this.#Ce(e)}#Ce(e){if(!e)return"";const t=new Date;if("now"!==e){const s=/^([+-])(\d+)([hm])$/.exec(e);if(!s)return e;const r="-"===s[1]?-1:1,i=+s[2]*r;"h"===s[3]?t.setHours(t.getHours()+i):t.setMinutes(t.getMinutes()+i)}return we.#_e(t,Number(this._input.step)||60)}static#_e(e,t){const s=e=>String(e).padStart(2,"0"),r=3600*e.getHours()+60*e.getMinutes()+e.getSeconds(),i=Math.floor(r/t)*t,n=s(Math.floor(i/3600)),a=s(Math.floor(i%3600/60));return t%60==0?`${n}:${a}`:`${n}:${a}:${s(i%60)}`}}class Ee extends ge{static observed=["step","min","max"];_type(){return"datetime-local"}get value(){return ve.localToIso(this._input.value)}set value(e){this._input.value=e?ve.isoToLocal(e):""}get min(){return ve.localToIso(this._input.min)}set min(e){this._input.min=e?ve.isoToLocal(e):""}get max(){return ve.localToIso(this._input.max)}set max(e){this._input.max=e?ve.isoToLocal(e):""}get step(){const e=this._input.step;return""===e?null:e}set step(e){this._input.step=e??""}}class xe extends ge{static WARNING_TIMEOUT=5e3;static list(e=[]){const t=new DataTransfer;for(const s of e)t.items.add(s);return t.files}static observed=["placeholder","accept:csv","multiple:presence","item-list:presence","dropzone:presence","max-files:number","max-file-size:number","max-total-size:number","value"];#Oe;#qe;#Re;#Ne;#Pe;_type(){return"file"}static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <input data-tpl-type="type" placeholder=" " form="">\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\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(\'files.dropzone-label\') }}\n </div>\n <ful-item-list></ful-item-list>\n <ful-field-warnings role="status" aria-live="polite"></ful-field-warnings>\n <ful-field-error></ful-field-error>\n ';static templates={items:'\n <ful-item data-tpl-each="files" data-tpl-var="file" data-tpl-data-name="file.name">\n <div><span>{{ file.name }}</span><span>{{ #l10n:bytes(file.size) }}</span><button type="button" data-tpl-aria-label="#l10n:t(\'files.remove\')"><ful-icon name="x-lg" aria-hidden="true"></ful-icon></button></div>\n </ful-item>\n ',warning:"<ful-field-warning>{{ #l10n:t(key, args) }}</ful-field-warning>"};#Le;_build(e){const t=super._build(e),s=t.fragment;return this.#qe=s.querySelector("ful-item-list"),this.#Le=e.slots?.items&&!u.isBlank(e.slots.items)?x.fromFragment(e.slots.items):null,this.#Re=s.querySelector("[data-ref=dropzone]"),this.#Ne=s.querySelector("ful-field-warnings"),this.#Pe=s.querySelector("ful-control-group"),this.#Ne.addEventListener("animationend",e=>{e.target.remove()}),this.#qe.addEventListener("click",e=>{if(!e.target.closest("button"))return;if(!this._interactive())return;const t=[...this.#qe.children].indexOf(e.target.closest("ful-item"));-1!==t&&(this.files=xe.list([...this.files].filter((e,s)=>s!==t)),this._notifyChange())}),this.#Re.addEventListener("click",e=>{this._interactive()&&this.querySelector("input")?.click()}),this.#Re.addEventListener("dragover",e=>{e.preventDefault(),this.toggleAttribute("dragover",!0)}),this.#Re.addEventListener("dragleave",()=>{this.toggleAttribute("dragover",!1)}),this.#Re.addEventListener("drop",e=>{if(e.preventDefault(),this.toggleAttribute("dragover",!1),!this._interactive())return;const t=[...e.dataTransfer.items].filter(e=>"file"===e.kind).map(e=>e.getAsFile()).filter(e=>null!==e);0===t.length||t.length>1&&!this.multiple||(this.files=xe.list(t),this._notifyChange())}),this._input.addEventListener("change",e=>{this.#ke()}),{...t,freeze:this.#Pe}}#ke(){this.setCustomValidity(),this.#Ne.replaceChildren(),this.#ze(),this.#Me(),this.#De(),this.#Fe(),(this.#Le??this.template("items")).withOverlay({files:this.files}).renderTo(this.#qe)}warning(e,t){this.template("warning").withOverlay({key:e,args:t}).appendTo(this.#Ne);const s=this.#Ne.lastElementChild;setTimeout(()=>s.remove(),xe.WARNING_TIMEOUT)}#Ie(e){const t=e.name.toLowerCase();return this.#Oe.some(s=>{const r=s.toLowerCase().split(";")[0].trim();return r.startsWith(".")?t.endsWith(r):r.endsWith("/*")?e.type.startsWith(`${r.slice(0,-1)}`):r.includes("/")&&e.type===r})}#ze(){if(!this.#Oe.length)return;const e=[...this.files].filter(e=>!this.#Ie(e));0!==e.length&&(this.warning("files.unacceptable-file-type",{types:this.#Oe.join(", ")}),this._input.files=xe.list([...this.files].filter(t=>!e.includes(t))))}#Fe(){null!==this.#$e&&(this.files.length<=this.#$e||(this.warning("files.max-files-exceeded",{count:this.#$e}),this._input.files=xe.list()))}#Me(){if(null===this.#Be)return;const e=[...this.files].filter(e=>e.size>this.#Be);0!==e.length&&(this.warning("files.max-file-size-exceeded",{size:P.of().bytes(this.#Be)}),this._input.files=xe.list([...this.files].filter(t=>!e.includes(t))))}#De(){null!==this.#je&&([...this.files].reduce((e,t)=>e+t.size,0)<=this.#je||(this.warning("files.max-total-size-exceeded",{size:P.of().bytes(this.#je)}),this._input.files=xe.list()))}get accept(){return this.#Oe}set accept(e){this._input.accept=e.join(","),this.#Oe=e,this.reflectTo("accept",e)}get multiple(){return this._input.multiple}set multiple(e){this._input.multiple=e,this.reflectTo("multiple",e)}get files(){return this._input.files}set files(e){this._input.files=e,this.#ke()}get file(){return this.files[0]??null}set file(e){this.files=xe.list(e?[e]:[])}get value(){const e=Array.from(this._input.files).map(e=>e.name);return this.multiple?e:e[0]??null}set value(e){e||(this.files=xe.list())}formResetCallback(){this.value=null}get totalsize(){return Array.from(this.files).reduce((e,t)=>e+t.size,0)}#$e;get maxFiles(){return this.#$e}set maxFiles(e){this.#$e=e,this.reflectTo("max-files",e)}#Be;get maxFileSize(){return this.#Be}set maxFileSize(e){this.#Be=e,this.reflectTo("max-file-size",e)}#je;get maxTotalSize(){return this.#je}set maxTotalSize(e){this.#je=e,this.reflectTo("max-total-size",e)}#He;get itemList(){return this.#He}set itemList(e){this.#He=e,this.reflectTo("item-list",e)}#We;get dropzone(){return this.#We}set dropzone(e){this.#We=e,this.reflectTo("dropzone",e)}}const Ae=new Map;let Se=0,Te=!1;const Ce=(e,t,s)=>Math.min(Math.max(e,t),Math.max(t,s)),_e=(e,t)=>{const{invoker:s,stretch:r}=t,i=s.getBoundingClientRect(),n=document.documentElement,a=n.clientWidth,o=n.clientHeight;e.style.removeProperty("margin");const l=getComputedStyle(e),u=parseFloat(l.marginTop)||0,c=parseFloat(l.marginRight)||0,d=parseFloat(l.marginBottom)||0,h=parseFloat(l.marginLeft)||0;if(e.style.right="auto",e.style.bottom="auto",e.style.margin="0",r){const t=Math.min(i.width,a-16);e.style.width=`${t}px`,e.style.left=`${Ce(i.left,8,a-t-8)}px`;const s=e.getBoundingClientRect().height;return void(e.style.top=`${Ce(i.bottom+u,8,o-s-8)}px`)}const p=(e=>e.matches("ful-note, .ful-note, [placement]"))(e),f=p?e.getAttribute("placement")??"bottom":"bottom";e.style.removeProperty("max-width");const m=Math.min(parseFloat(l.maxWidth)||a,a-16);e.style.maxWidth=`${m}px`,e.style.left="8px";const g=e.getBoundingClientRect().width;let b="right"===f?i.right+h:"left"===f?i.left-c-g:p?i.left+i.width/2-g/2:i.left;b=Ce(b,8,a-g-8),e.style.left=`${b}px`,e.style.maxWidth=`${Math.min(m,a-8-b)}px`;const v=e.getBoundingClientRect().height,y="top"===f?i.top-d-v:"right"===f||"left"===f?i.top+i.height/2-v/2:i.bottom+u;e.style.top=`${Ce(y,8,o-v-8)}px`,p&&((e,t)=>{const s=t.getBoundingClientRect(),r=e.getBoundingClientRect();e.style.setProperty("--ful-note-callout-inline",s.left+s.width/2-r.left-e.clientLeft+"px"),e.style.setProperty("--ful-note-callout-block",s.top+s.height/2-r.top-e.clientTop+"px")})(e,s)},Oe=()=>{Se=0;for(const[e,t]of Ae)e.isConnected&&t.invoker.isConnected?_e(e,t):Ae.delete(e)},qe=()=>{!Se&&Ae.size>0&&(Se=requestAnimationFrame(Oe))};class Re{static wire(e,t,{prefix:s="ful-anchor",invoke:r=!1,expanded:i=!1,stretch:n=!1,handPlace:a=!1}={}){const o=c.uid(s);r&&(t.id=t.id||o,e.setAttribute("popovertarget",t.id));const l=`--${o}`;if(e.style.anchorName=l,t.style.positionAnchor=l,i&&(e.setAttribute("aria-expanded","false"),t.addEventListener("toggle",t=>{e.setAttribute("aria-expanded","open"===t.newState?"true":"false")})),!a&&CSS.supports("anchor-name: --ful-probe")&&CSS.supports("position-anchor: --ful-probe")&&CSS.supports("position-area: bottom")&&CSS.supports("top: anchor(bottom)")&&CSS.supports("width: anchor-size(width)"))return;const u={invoker:e,stretch:n};t.addEventListener("beforetoggle",e=>{"open"===e.newState&&_e(t,u)}),t.addEventListener("toggle",e=>{"open"===e.newState?(Ae.set(t,u),_e(t,u)):(Ae.delete(t),(e=>{for(const t of["top","left","right","bottom","margin","max-width","width","--ful-note-callout-inline","--ful-note-callout-block"])e.style.removeProperty(t)})(t))}),Te||(Te=!0,document.addEventListener("scroll",qe,!0),window.addEventListener("resize",qe))}}class Ne{#be;#ve;#U;#we;#Ve;#Ue;#C;#Ge;#Qe=new ie;constructor({http:e,url:t,method:s,responseMapper:r,prefetch:i,revision:n}){this.#be=e,this.#ve=t,this.#U=s,this.#we=r,this.#Ve=i,this.#Ue=n,this.#C=null,this.#Ge=null}async prefetch(){this.#Ve&&await this.#Ke()}async exact(...e){return(await this.#Ke()).filter(({key:t})=>e.some(e=>e==t))}async load(e){return(await this.#Ke()).filter(({label:t})=>(t??"").toLowerCase().includes(e?.toLowerCase()??""))}async invalidate(){this.#Qe.invalidate(),this.#C=null,this.#Ge=null}async reconfigureUrl(e){await this.invalidate(),this.#ve=e}async#Ke(){if(null===this.#C){if(null===this.#Ge){const e=this.#Qe.hold();this.#Ge=Ne.#Je(this.#be,this.#U,this.#ve,this.#Ue).then(t=>{e.stale||(this.#C=this.#we(t))}).finally(()=>{e.stale||(this.#Ge=null)})}await this.#Ge}if(null===this.#C)throw new Error("superseded by a reconfiguration");return this.#C}static async#Je(e,t,s,r){const i=`${t}@${s}`;if(null!==r){const e=te.load(i,r);if(void 0!==e)return e}const n=await e.request(t,s).fetchJson();if(null!==r)try{te.save(i,r,n)}catch(e){console.warn("failed to cache the select options",e)}return n}}class Pe{#be;#ve;#U;#we;constructor({http:e,url:t,method:s,responseMapper:r}){this.#be=e,this.#ve=t,this.#U=s,this.#we=r}async invalidate(){}async reconfigureUrl(e){this.#ve=e}async exact(...e){const t=await this.#be.request(this.#U,this.#ve).param("k",...e).fetchJson();return this.#we(t)}async load(e){const t=await this.#be.request(this.#U,this.#ve).param("s",e).fetchJson();return this.#we(t)}}class Le{#C;constructor(e){this.#C=e}update(e){this.#C=e}async invalidate(){}exact(...e){return this.#C.filter(({key:t})=>e.some(e=>e==t))}load(e){return this.#C.filter(({label:t})=>(t??"").toLowerCase().includes(e?.toLowerCase()??""))}}class ke{static from({data:e,http:t,url:s,method:r="POST",mode:i,prefetch:n=!1,revision:a=null,responseMapper:o}){return s?"chunked"===i?new Pe({http:t,url:s,method:r,responseMapper:o}):new Ne({http:t,url:s,method:r,responseMapper:o,prefetch:n,revision:a}):new Le(e??[])}static create(e,t){if(!e.declared("src")){const e=Array.from(t.options?.querySelectorAll("option")??[]);return ke.from({data:e.map(e=>({key:e.getAttribute("value")??e.innerText.trim(),label:e.innerText.trim(),metadata:void 0}))})}return ke.from({http:e.component("http-client"),url:e.declared("src"),method:e.declared("method")??"POST",mode:e.declared("mode"),prefetch:e.declared("preload"),revision:e.declared("revision"),responseMapper:ke.#Xe(e)})}static#Xe(e){return e.declared("k-expr")&&e.declared("l-expr")?t=>e._registry.evaluator().withOverlay(t).evaluateExpression(e.declared("d-expr")??"self").map(t=>{const s=e._registry.evaluator().withOverlay(t);return{key:s.evaluateExpression(e.declared("k-expr")),label:s.evaluateExpression(e.declared("l-expr")),metadata:s.evaluateExpression(e.declared("m-expr")??"self")}}):e.declared("response-mapper")?e.component(e.declared("response-mapper")):e=>e.map(([e,t,s])=>({key:e,label:t,metadata:s}))}}class ze extends S{static attributes=["listbox"];static slots=!0;static template='\n <ful-spinner class="centered" role="status" hidden><span class="ful-sr-only">{{ #l10n:t(\'spinner.loading\') }}</span></ful-spinner>\n <p data-ref="empty" aria-live="polite" hidden>{{ #l10n:t(\'dropdown.empty\') }}</p>\n <menu tabindex="-1" role="listbox" hidden></menu>\n ';static templates={options:'\n <li data-tpl-each="self" data-tpl-selected="index == 0" data-tpl-value="index" role="option">\n {{ label }}\n </li>\n '};#Ye;#Ze;#et;#tt;#X=new Map;#st=new ie;render({slots:e}){const t=this.template().render();this.#tt=u.isBlank(e.default)?this.template("options"):x.fromFragment(e.default),this.#Ye=t.querySelector("ful-spinner"),this.#et=t.querySelector("p[data-ref=empty]"),this.#Ze=t.querySelector("menu"),this.#Ze.id=this.declared("listbox")||c.uid("ful-listbox"),this.#Ze.addEventListener("click",e=>{e.stopPropagation();const t=e.target.closest("li");t?this.#rt(t):this.hide()}),this.replaceChildren(t)}#it(){return this.#Ze?.querySelector("[selected]")??this.#Ze?.firstElementChild??null}#nt(e){if(e){for(const t of this.#Ze.querySelectorAll("li"))t.toggleAttribute("selected",t===e);e.id||=c.uid("ful-option"),this.#at(e.id),e.scrollIntoView({block:"nearest",behavior:matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth"})}else this.#at(null)}acceptSelection(){const e=this.#it();e&&this.#rt(e)}update(e,t=[]){if(void 0===e)throw new Error("null data");this.#X=new Map(e.map((e,t)=>[String(t),e]));const s=e.map((e,t)=>({index:t,...e}));this.#tt.withOverlay(s).renderTo(this.#Ze);for(const[s,r]of[...this.#Ze.children].entries()){const i=t.some(t=>t==e[s]?.key);r.toggleAttribute("picked",i),r.setAttribute("aria-selected",i?"true":"false")}this.#et.toggleAttribute("hidden",0!==e.length),this.#Ze.toggleAttribute("hidden",0===e.length);const r=e.findIndex(({key:e})=>t.some(t=>t==e));this.#nt(r>=0?this.#Ze.children[r]:this.#it())}#rt(e){const t=e.getAttribute("value"),s=this.#X.get(t);this.hide(),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!1,detail:{index:t,entry:s}}))}hide(){this.#st.invalidate(),this.matches(":popover-open")&&this.hidePopover(),this.#at(null)}#at(e){this.dispatchEvent(new CustomEvent("activechange",{bubbles:!1,cancelable:!1,detail:{id:e}}))}get shown(){return this.matches(":popover-open")}async show(e,t=[]){const s=this.#st.take();this.matches(":popover-open")||this.showPopover(),this.#Ze.setAttribute("hidden",""),this.#Ye.removeAttribute("hidden");try{const r=await e();if(s.stale)return;this.update(r,t)}catch(e){if(s.stale)return;throw this.hide(),e}finally{s.stale||this.#Ye.setAttribute("hidden","")}}async moveOrShow(e,t,s=[]){if(this.shown){const t=this.#it(),s=t?.[(e?"next":"previous")+"ElementSibling"];return void(t&&s&&this.#nt(s))}await this.show(t,s)}jump(e){const t=e?this.#Ze.firstElementChild:this.#Ze.lastElementChild;t&&this.#nt(t)}page(e){const t=this.#it();if(!t)return;const s=Array.from(this.#Ze.children),r=this.#ot(),i=s[Math.max(0,Math.min(s.length-1,s.indexOf(t)+(e?r:-r)))];this.#nt(i)}#ot(){const e=this.#Ze.firstElementChild;return e&&0!==e.offsetHeight?Math.max(1,Math.trunc(this.#Ze.clientHeight/e.offsetHeight)):1}}class Me extends le{static attributes=["name","loader","k-type","src","method","mode","preload:presence","revision","k-expr","l-expr","d-expr","m-expr","response-mapper"];static observed=["multiple:presence","item-list:presence","value:csv"];static slots=!0;static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-control>\n <input type="text" form="" autocomplete="off" role="combobox" aria-autocomplete="list" aria-haspopup="listbox" aria-expanded="false">\n </ful-control>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n <ful-dropdown popover="manual">{{{{ slots.dropdown }}}}</ful-dropdown>\n </ful-control-group>\n <ful-item-list></ful-item-list>\n <ful-field-error></ful-field-error>\n ';static templates={items:'\n <ful-item data-tpl-each="entries" data-tpl-var="entry" data-tpl-data-key="entry.key">\n <div><span>{{ entry.label }}</span><button type="button" data-tpl-aria-label="#l10n:t(\'select.remove\')"><ful-icon name="x-lg" aria-hidden="true"></ful-icon></button></div>\n </ful-item>\n '};#lt;#se;#ut;#ct;#qe;#Le;#dt;#ht=!1;#pt=new Map;#ft=new ie;#mt=!1;#gt;#bt;_build({slots:e}){const t=this.declared("name");this.#lt=this.component(this.declared("loader")??"loaders:select").create(this,{options:e.options}),this.#dt=this.declared("multiple"),this.#lt.prefetch?.()?.catch(e=>{console.warn("failed to prefetch select options",this,"reason:",e)});const s=this.template().withOverlay({slots:e,name:t}).render();this.#ct=s.querySelector("input"),this.#qe=s.querySelector("ful-item-list"),this.#Le=e.items&&!u.isBlank(e.items)?x.fromFragment(e.items):null,c.forward("input-",this,this.#ct),this.#se=s.querySelector("ful-control"),this.#ut=s.querySelector("ful-dropdown");const r=c.uid("ful-listbox");this.#ut.setAttribute("listbox",r),this.#ct.setAttribute("aria-controls",r),this.#ut.addEventListener("beforetoggle",e=>{const t="open"===e.newState;this.#ct.setAttribute("aria-expanded",t?"true":"false"),t||this.#ct.removeAttribute("aria-activedescendant")}),this.#ut.addEventListener("activechange",e=>{c.set(this.#ct,"aria-activedescendant",e.detail.id)});const i=s.querySelector("ful-control-group");return Re.wire(i,this.#ut,{prefix:"ful-select",stretch:!0}),[this.#gt,this.#bt]=ae.throttle(400,()=>this.#vt()),this.#yt(),this.#wt(),this.#Et(),this.#xt(),{fragment:s,control:this.#ct,error:s.querySelector("ful-field-error"),label:s.querySelector("label")}}#yt(){this.addEventListener("click",e=>{if(!this._interactive())return;const t=e.target.closest("button, a[href], input, select, textarea");t&&t!==this.#ct||(this.#ut.shown?this.#At():(this.#ct.focus(),this.#gt()))}),this.#qe.addEventListener("click",e=>{e.stopPropagation(),e.target.closest("button")&&this._interactive()&&this.#St([...this.#qe.children].indexOf(e.target.closest("ful-item")))}),this.#se.addEventListener("click",e=>{const t=e.target instanceof Element?e.target.closest("ful-badge"):null;t&&(e.stopPropagation(),this.#Tt(t))})}#wt(){this.addEventListener("keydown",e=>{const t=e.target instanceof Element?e.target.closest("ful-badge"):null;t?this.#Ct(e,t):"ArrowLeft"===e.code&&e.target===this.#ct&&0===this.#ct.selectionStart&&0===this.#ct.selectionEnd&&this.#_t().at(-1)?.focus()})}#Et(){this.#ct.addEventListener("change",e=>{e.stopPropagation()}),this.#ct.addEventListener("focus",()=>{this.#mt||this.#ct.select()}),this.#ct.addEventListener("blur",e=>{e.stopPropagation(),e.relatedTarget&&this.contains(e.relatedTarget)||(this.#bt(),this.#At())}),this.#ct.addEventListener("keydown",e=>{this._interactive()&&this.#Ot(e)}),this.#ct.addEventListener("input",e=>{e.stopPropagation(),this._interactive()&&(this.#mt=!0,this.#gt())})}#xt(){this.#ut.addEventListener("change",e=>{e.stopPropagation(),this._interactive()?(this.#dt||this.#pt.clear(),this.#mt=!1,this.#pt.set(this.#qt(e.detail.entry.key),e.detail.entry),this.#Rt(),this.#Nt(),this.#ct.focus(),this.#ut.hide(),this.#dt||this.#ct.select()):this.#At()})}async withLoader(e){return await e(this.#lt)}async reload(){await(this.#lt.invalidate?.()),await(this.#lt.prefetch?.());const e=[...this.#pt.keys()];0!==e.length&&await this.#i(e,this.#ft.take())}#_t(){return Array.from(this.#se.querySelectorAll(":scope > ful-badge"))}#Tt(e){this._interactive()&&this.#St(this.#_t().indexOf(e))}#St(e){const t=Array.from(this.#pt.keys())[e];void 0!==t&&(this.#pt.delete(t),this.#Rt(),this.#Nt())}#Ct(e,t){switch(e.code){case"NumpadEnter":case"Enter":case"Space":case"Backspace":case"Delete":e.preventDefault(),this.#Tt(t),this.#ct.focus();break;case"ArrowLeft":e.preventDefault(),(this.#_t()[this.#_t().indexOf(t)-1]??this.#ct).focus();break;case"ArrowRight":e.preventDefault(),(this.#_t()[this.#_t().indexOf(t)+1]??this.#ct).focus();break;case"Escape":this.#ct.focus()}}#Ot(e){switch(e.code){case"ArrowUp":case"ArrowDown":e.preventDefault(),this.#Pt(e);break;case"Home":this.#ut.shown&&(e.preventDefault(),this.#ut.jump(!0));break;case"End":this.#ut.shown&&(e.preventDefault(),this.#ut.jump(!1));break;case"PageDown":case"PageUp":this.#ut.shown&&(e.preventDefault(),this.#ut.page("PageDown"===e.code));break;case"Escape":case"Tab":this.#bt(),this.#At();break;case"NumpadEnter":case"Enter":if(!this.#ut.shown)return;e.preventDefault(),this.#mt=!1,this.#Lt(),this.#ut.acceptSelection();break;case"Backspace":0===this.#ct.selectionStart&&0===this.#ct.selectionEnd&&this.#St(this.#pt.size-1)}}#Pt(e){const t="ArrowDown"===e.code;e.altKey?t&&!this.#ut.shown?this.#vt():!t&&this.#ut.shown&&this.#At():(this.#kt(),this.#ut.moveOrShow(t,()=>this.#lt.load(this.#ct.value),[...this.#pt.keys()]))}#At(){this.#ut.hide(),this.#mt=!1,this.#Lt()}#vt(){return this.#kt(),this.#ut.show(()=>this.#lt.load(this.#ct.value),[...this.#pt.keys()])}#kt(){this.#mt||(this.#ct.value="")}#Lt(){const e=this.#pt.values().next().value;this.#ct.value=this.#dt?"":e?.label??""}#zt(){return[...this.#pt.values()]}#Rt(){this._notifyChange({entry:this.entry})}#Nt(){const e=this.#dt?Array.from(this.#pt.entries()).map(([e,t],s)=>{const r=document.createElement("ful-badge");return r.setAttribute("role","button"),r.setAttribute("tabindex",0===s?"0":"-1"),r.setAttribute("value",e),r.innerText=t.label,r}):[];for(const e of this.#se.querySelectorAll(":scope > ful-badge"))e.remove();this.#ct.before(...e),this.#mt||this.#Lt(),this.#qe.replaceChildren(),(this.#Le??this.template("items")).withOverlay({entries:this.#zt()}).renderTo(this.#qe)}#qt(e){switch(this.declared("k-type")){case"number":{const t=""===e?Number.NaN:Number(e);return Number.isNaN(t)?e:t}case"boolean":return!0===e||"true"===e||!1!==e&&"false"!==e&&e;default:return String(e)}}set value(e){const t=(null==e?[]:Array.isArray(e)?e:[e]).map(e=>this.#qt(e));!this.#ht&&t.some(e=>"string"==typeof e&&e.includes(","))&&(this.#ht=!0,console.warn("a ful-select key cannot contain a comma: it is unexpressible in the value attribute",this)),this.#pt=new Map(t.map(e=>[e,{key:e,label:e,metadata:void 0}]));const s=this.#ft.take();this.#se&&(this.#Nt(),0!==t.length&&this.#i(t,s))}async#i(e,t){const s=await this.#lt.exact(...e);if(t.stale)return;const r=new Map(s.map(e=>[this.#qt(e.key),e]));for(const t of e)this.#pt.has(t)&&(r.has(t)?this.#pt.set(t,r.get(t)):this.#pt.delete(t));this.#Nt()}get value(){return this.#dt?[...this.#pt.keys()]:[...this.#pt.keys()][0]??null}get entry(){const e=this.#zt();return this.#dt?e:e[0]??null}#He;get multiple(){return this.#dt}set multiple(e){this.#dt=e,this.reflectTo("multiple",e)}get itemList(){return this.#He}set itemList(e){this.#He=e,this.reflectTo("item-list",e)}}class De extends le{static attributes=["name","type"];static slots=!0;static ROLE="radiogroup";static template='\n <fieldset>\n <legend>\n {{{{ slots.default }}}}\n </legend>\n <header data-tpl-if="slots.header">\n {{{{ slots.header }}}}\n </header>\n <ful-radio-list>\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 </ful-radio-list>\n <ful-field-error></ful-field-error>\n <footer data-tpl-if="slots.footer">\n {{{{ slots.footer }}}}\n </footer>\n </fieldset>\n ';#Mt;#Dt;#Ft;_build({slots:e}){const t=this.declared("name")??c.uid("ful-radiogroup"),s=Array.from(e.default.querySelectorAll("ful-radio")),r=s.map(e=>{const s=document.createElement("input");return s.setAttribute("type","radio"),c.forward("input-",this,s),c.forward("",e,s),s.setAttribute("name",`${t}-ignore`),s.setAttribute("form",""),s.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()}),[s,u.fromChildNodes(e)]});s.forEach(e=>{e.remove()});const i=this.template().withOverlay({name:t,slots:e,inputsAndLabels:r}).render();return this.#Mt=i.firstElementChild,this.#Dt=i.querySelector("input[type=radio]"),this.#Ft="boolean"===this.declared("type"),{fragment:i,control:this.#Dt,error:i.querySelector("ful-field-error"),described:this,claims:this.#Mt,announces:this,freeze:this.#Mt}}get value(){const e=this.querySelector("input[type=radio]:checked");return e?this.#Ft?"true"===e.value:e.value:null}set value(e){const t=this.querySelectorAll("input[type=radio]"),s=()=>{t.forEach(e=>{e.checked=!1})};if(null===e)return void s();const r=this.querySelector(`input[type=radio][value=${CSS.escape(String(e))}]`);null!==r?r.checked=!0:s()}}class Fe extends le{static attributes=["type"];static observed=["value:bool"];static slots=!0;static template='\n <ful-choice data-tpl-switch="isSwitch">\n <input type="checkbox" data-tpl-role="isSwitch ? \'switch\' : false" form="" placeholder=" ">\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n </ful-choice>\n <ful-field-error></ful-field-error>\n ';#It;#ct;_build({slots:e}){const t="switch"===this.declared("type"),s=this.template().withOverlay({slots:e,isSwitch:t}).render();this.#It=s.firstElementChild,this.#ct=s.querySelector("input"),c.forward("input-",this,this.#ct),this.#ct.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()});const r=s.querySelector("label");return{fragment:s,control:this.#ct,error:s.querySelector("ful-field-error"),label:r,freeze:this.#It}}get value(){return this.#ct.checked}set value(e){this.#ct.checked=e}}class Ie extends S{static attributes=["sorter"];static observed=["order"];#$t;render(){const e=this.declared("sorter"),t=["asc","desc",null];this.setAttribute("role","button"),this.setAttribute("tabindex","0"),this.addEventListener("click",()=>{const s=t[(t.indexOf(this.order)+1)%3];this.dispatchEvent(new CustomEvent("sort:requested",{bubbles:!0,cancelable:!0,detail:{value:{sorter:e,order:s}}}))}),this.addEventListener("keydown",e=>{"Enter"!==e.code&&"Space"!==e.code||(e.preventDefault(),this.click())})}get order(){return this.#$t||null}set order(e){this.#$t=e||null,this.reflectTo("order",this.#$t);const t=this.closest("th");t&&c.set(t,"aria-sort",this.#$t?"asc"===this.#$t?"ascending":"descending":null)}}class $e extends S{static observed=["total:number","current:number"];static attributes=["pages:number"];static config={prevIcon:"chevron-left",nextIcon:"chevron-right",reloadIcon:"arrow-clockwise"};static template='\n <ful-pagination-bar role="navigation" data-tpl-aria-label="#l10n:t(\'pagination.navigation\')">\n <ul>\n <li data-ref="index"> {{ #l10n:t(\'pagination.showing\', { \'current\': curr.label, \'total\': total }) }}</li>\n <li data-ref="reload"><button type="button" data-tpl-aria-label="#l10n:t(\'pagination.reload\')"><ful-icon data-tpl-name="config.reloadIcon" aria-hidden="true"></ful-icon></button></li>\n <li data-ref="prev">\n <button type="button" data-tpl-disabled="prev.enabled ? false : true" data-tpl-aria-label="#l10n:t(\'pagination.previous\')" data-tpl-data-page="prev.index">\n <ful-icon data-tpl-name="config.prevIcon" aria-hidden="true"></ful-icon>\n </button>\n </li>\n <li data-ref="page" data-tpl-each="pages" data-tpl-var="page">\n <button type="button" data-tpl-aria-current="curr.index == page.index ? \'page\' : false" data-tpl-data-page="page.index" >\n {{ page.label }}\n </button>\n </li>\n <li data-ref="next">\n <button type="button" data-tpl-disabled="next.enabled ? false : true" data-tpl-aria-label="#l10n:t(\'pagination.next\')" data-tpl-data-page="next.index">\n <ful-icon data-tpl-name="config.nextIcon" aria-hidden="true"></ful-icon>\n </button>\n </li>\n </ul>\n </ful-pagination-bar>\n ';#Bt=0;#W=0;render(){this.addEventListener("click",e=>{const t=e.target.closest("button");t&&!t.hasAttribute("disabled")&&"page"!==t.getAttribute("aria-current")&&this.dispatchEvent(new CustomEvent("page:requested",{bubbles:!0,cancelable:!0,detail:{value:Number(t.dataset.page??this.#W)}}))})}update({current:e,total:t}={}){void 0!==e&&(this.#W=e??0),void 0!==t&&(this.#Bt=t??0),this.reflectTo("current",this.#W),this.reflectTo("total",this.#Bt);const s=this.#W,r=this.#Bt,i=this.declared("pages")??5,n=Math.max(r,1),a=s>0,o=s+1<n,l={index:a?s-1:null,enabled:a},u={index:s,label:s+1},c={index:o?s+1:null,enabled:o},d=Math.max(1,Math.min(i,n)),h=Math.max(0,Math.min(s-Math.floor((d-1)/2),n-d)),p=Array.from({length:d},(e,t)=>({index:h+t,label:h+t+1})),f=this.contains(document.activeElement)?document.activeElement.closest("li")?.getAttribute("data-ref"):null,m="page"===f?document.activeElement.dataset.page:null;if(this.template().withOverlay({total:n,prev:l,curr:u,next:c,pages:p}).renderTo(this),!f)return;const g=(null===m?null:this.querySelector(`li[data-ref=page] button[data-page="${m}"]`))??this.querySelector(`li[data-ref=${f}] button:not(:disabled)`)??this.querySelector("li[data-ref=page] button[aria-current=page]");g?.focus()}get total(){return this.#Bt}set total(e){this.update({total:e})}get current(){return this.#W}set current(e){this.update({current:e})}}class Be{static parse(e,t){const s=e?h.queryChildren(e,"schema"):null;if(!s)throw new Error('missing expected <schema>: ful-table needs a <template slot="schema"> holding one');const r=document.createElement("tr"),i=document.createElement("tr");i.setAttribute("data-tpl-each","rows");for(const e of s.getAttributeNames()){const t=s.getAttribute(e);r.setAttribute(e,t??""),i.setAttribute(e,t??"")}const n=h.queryChildrenAll(s,"column"),a=n.filter(e=>e.hasAttribute("order")&&e.hasAttribute("sorter")).map(e=>({sorter:e.getAttribute("sorter"),order:e.getAttribute("order")}))[0]??null;for(var o of n){const e=h.queryChildren(o,"title"),t=o.getAttribute("sorter"),s=o.getAttribute("order"),n=e??document.createTextNode(o.getAttribute("title")??"");e?.remove(),o.removeAttribute("sorter"),o.removeAttribute("order"),o.removeAttribute("title");const a=t||s?(()=>{const e=document.createElement("ful-sorter");return t&&e.setAttribute("sorter",t),s&&e.setAttribute("order",s),e.append(n),e})():n,l=document.createElement("th"),u=document.createElement("td");for(const e of o.getAttributeNames()){const t=o.getAttribute(e);l.setAttribute(e,t??""),u.setAttribute(e,t??"")}l.append(a),u.append(...o.childNodes),r.append(l),i.append(u)}return{headersTemplate:t.withOverlay({inHeaders:!0,inRows:!1}).withFragment(u.from(r)),rowsTemplate:t.withOverlay({inHeaders:!1,inRows:!0}).withFragment(u.from(i)),sort:a,length:n.length}}}class je{#C;constructor(e){this.#C=e}async load(e,t,s){const r=this.#jt(t),i=e.page*e.size,n=i+e.size;return{data:r.slice(i,n),size:r.length}}#jt(e){if(!e?.sorter)return this.#C;const{sorter:t,order:s}=e,r="desc"===s?-1:1;return[...this.#C].sort((e,s)=>{const i=e?.[t],n=s?.[t];return i===n?0:null==i?1:null==n?-1:(i<n?-1:1)*r})}update(e){this.#C=e}}class He{#be;#ve;#U;#we;constructor(e,t,s,r=e=>e){this.#be=e,this.#ve=t,this.#U=s,this.#we=r}async load(e,t,s){const r=Object.entries(s).filter(([e,t])=>t);return await this.#be.request(this.#U,this.#ve).param("page",e.page).param("size",e.size).param("sort",t?`${t.sorter},${t.order}`:null).param("filters",r.length>0?JSON.stringify(Object.fromEntries(r)):null).fetchJson().then(e=>this.#we(e))}}class We{static create(e,t){const s=e.getAttribute("src");if(s){const t=e.component("http-client"),r=e.getAttribute("method")??"GET",i=e.hasAttribute("response-mapper")?e.component(e.getAttribute("response-mapper")):e=>e;return new He(t,s,r,i)}return new je([])}}class Ve extends S{static attributes=["loader","autoload:presence"];static observed=["page-size:number"];static slots=!0;static config={searchIcon:"search"};static template='\n <ful-form data-tpl-if="slots.filters">\n {{{{ slots.filters }}}}\n </ful-form>\n <ful-table-wrapper>\n <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"><ful-icon data-tpl-name="config.searchIcon" aria-hidden="true"></ful-icon></p>\n {{ #l10n:t(\'table.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" role="status"><span class="ful-sr-only">{{ #l10n:t(\'spinner.loading\') }}</span></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 role="alert">\n <p>{{ #l10n:t(\'table.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 </ful-table-wrapper>\n <ful-pagination current="0" total="1"></ful-pagination>\n ';static templates={row:"\n <tr data-tpl-if=\"pageResponse.data.length == 0\">\n <td data-tpl-colspan=\"schema.length\">\n {{ #l10n:t('table.no-data') }}\n </td>\n </tr>\n {{{{ schema.rowsTemplate.withOverlay({'rows': pageResponse.data}).render() }}}}\n "};#lt;#Ht;#J;#Wt;#Vt;#Ut;#Gt;#Qt;#Kt={pageRequest:{page:0,size:10},sortRequest:null,filterRequest:{}};#Jt=!1;#Xt=new ie;get pageSize(){return this.#Kt.pageRequest.size}set pageSize(e){const t=e??10;t!==this.#Kt.pageRequest.size&&(this.#Kt={...this.#Kt,pageRequest:{page:0,size:t}},this.#Jt&&this.reload())}async render({slots:e}){const t=this.template(),s=Be.parse(e.schema,t),r=t.withOverlay({slots:e,schema:s}).render(),i=h.queryChildren(r,"ful-table-wrapper").querySelector("table");c.forward("table-",this,i),this.#lt=this.component(this.declared("loader")??"loaders:table").create(this),this.#Ht=s,this.#J=i.querySelector(":scope > tbody"),this.#Wt=i.querySelector(":scope > tbody[data-ref=loading]"),this.#Vt=i.querySelector(":scope > tbody[data-ref=initial]"),this.#Ut=i.querySelector(":scope > tbody[data-ref=feedback]"),this.#Gt=h.queryChildren(r,"ful-pagination"),this.replaceChildren(r);const n=this.querySelector("thead");s.headersTemplate.renderTo(n),this.#Qt=n.querySelectorAll("ful-sorter"),await A.waitForChildren(this);const a=h.queryChildren(this,"ful-form");this.#Kt={pageRequest:{page:0,size:this.declared("page-size")??10},sortRequest:s.sort,filterRequest:a?.values??{}},a?.addEventListener("submit:success",async e=>{await this.load({page:0,size:this.#Kt.pageRequest.size},this.#Kt.sortRequest,e.detail.request)}),this.addEventListener("page:requested",async e=>{await this.load({page:e.detail.value,size:this.#Kt.pageRequest.size},this.#Kt.sortRequest,this.#Kt.filterRequest)}),this.addEventListener("sort:requested",async e=>{const t=e.detail.value.order?e.detail.value:null;await this.load(this.#Kt.pageRequest,t,this.#Kt.filterRequest),this.#Kt.sortRequest===t&&(this.#Qt.forEach(e=>{e.order=null}),e.target.order=e.detail.value.order)}),this.declared("autoload")&&this.reload()}async reload(){return await this.load(this.#Kt.pageRequest,this.#Kt.sortRequest,this.#Kt.filterRequest)}async load(e,t,s){this.#Jt=!0;const r=this.#Xt.take();this.#Wt.toggleAttribute("hidden",this.#J.childElementCount>0),this.#Ut.setAttribute("hidden",""),this.#Vt.setAttribute("hidden",""),this.setAttribute("aria-busy","true");try{const i=await this.#lt.load(e,t,s);if(r.stale)return;this.#Kt={pageRequest:e,sortRequest:t,filterRequest:s},this.#ke(e,t,s,i)}catch(e){if(r.stale)return;throw this.#Wt.setAttribute("hidden",""),this.#J.replaceChildren(),this.#Ut.removeAttribute("hidden"),this.#Ut.querySelector("[data-ref=feedback-error]").textContent=k.problemsText(e,`${e}`),e}finally{r.stale||this.removeAttribute("aria-busy")}}async withLoader(e){return await e(this.#lt)}async resetWithFilter(e){return await this.load({page:0,size:this.#Kt.pageRequest.size},this.#Kt.sortRequest,e)}#ke(e,t,s,r){const i=Math.ceil(r.size/e.size),n=Math.max(0,i-1);e.page>n?this.load({page:n,size:e.size},t,s):(this.#Wt.setAttribute("hidden",""),this.#J.replaceChildren(this.template("row").withOverlay({schema:this.#Ht,pageRequest:e,filterRequest:s,pageResponse:r}).render()),this.#Gt.update({current:e.page,total:i}))}}class Ue{static narrow(e,t){const s=(e??[]).filter(e=>t.includes(e));return s.length>0?s:[...t]}#Yt;#Ze;#Zt;#es;#ts;#Lt;#ss;#rs;#is;#ns=!1;#as=!1;constructor(e,{vocabulary:t,glyphs:s={},labelFor:r=e=>e,display:i=null,interactive:n=()=>!0,onPick:a=()=>{}}){this.#Yt=e,this.#Ze=e.nextElementSibling,this.#Zt=t,this.#es=s,this.#ts=r,this.#Lt=i??(e=>s[e]??e),this.#ss=n,this.#rs=a,this.#is=[...t],this.#Ze.addEventListener("click",e=>{const t=e.target.closest("li > a");if(!t||!this.#ss())return;const s=t.getAttribute("value"),r=this.value;this.value=s,this.#Ze.hidePopover?.(),r!==s&&this.#rs(s)})}get allowed(){return this.#is}set allowed(e){this.#is=Ue.narrow(e,this.#Zt),this.#os(),!this.#as&&this.#is.length>1&&(this.#de(),this.#as=!0),this.#ls(),this.pinned&&(this.value=this.#is[0])}get pinned(){return this.#is.length<2}get value(){return this.#Yt.getAttribute("value")}set value(e){this.#Yt.setAttribute("value",e),this.#Yt.textContent=this.#Lt(e),c.set(this.#Yt,"aria-label",this.#ts(e)),this.#us()}#us(){const e=this.value;for(const t of this.#qe())t.setAttribute("aria-checked",String(t.getAttribute("value")===e))}set claimed(e){this.#ns=e,this.#ls()}#os(){this.#Ze.replaceChildren(...this.#is.map(e=>{const t=document.createElement("li");t.setAttribute("role","none");const s=document.createElement("a");s.setAttribute("role","menuitemradio"),s.setAttribute("tabindex","-1"),s.setAttribute("value",e);const r=this.#ts(e),i=this.#es[e]??e;if(r===e&&i===e)s.innerText=e;else{const e=document.createElement("span");e.innerText=i;const t=document.createElement("span");t.innerText=r,s.append(e,t)}return t.append(s),t})),this.#us()}#ls(){const e=this.pinned;this.#Yt.toggleAttribute("disabled",e||this.#ns),c.set(this.#Yt,"aria-haspopup",e?null:"true"),c.set(this.#Yt,"aria-expanded",e?null:"false"),e?this.#Yt.removeAttribute("popovertarget"):this.#Ze.id&&this.#Yt.setAttribute("popovertarget",this.#Ze.id)}#qe(){return Array.from(this.#Ze.querySelectorAll("li > a"),e=>e)}#de(){const e=this.#Yt,t=this.#Ze;Re.wire(e,t,{prefix:"ful-filter-menu",invoke:!0,expanded:!0}),t.addEventListener("toggle",s=>{if("open"!==s.newState)return void(t.contains(document.activeElement)&&e.focus());const r=this.#qe();(r.find(e=>e.getAttribute("value")===this.value)??r[0])?.focus()}),t.addEventListener("keydown",t=>{const s=t.target.closest("li > a");if(!s)return;const r=this.#qe(),i=r.indexOf(s);switch(t.code){case"ArrowDown":t.preventDefault(),r[(i+1)%r.length]?.focus();break;case"ArrowUp":t.preventDefault(),r[(i-1+r.length)%r.length]?.focus();break;case"Home":t.preventDefault(),r[0]?.focus();break;case"End":t.preventDefault(),r[r.length-1]?.focus();break;case"Enter":case"Space":t.preventDefault(),s.click(),e.focus();break;case"Escape":e.focus()}})}}const Ge={EQ:"=",NEQ:"≠",LT:"<",GT:">",LTE:"≤",GTE:"≥",BETWEEN:"↔",CONTAINS:"…a…",STARTS_WITH:"a…",ENDS_WITH:"…a"},Qe=["EQ","NEQ","LT","GT","LTE","GTE","BETWEEN"],Ke=[...Qe,"CONTAINS","STARTS_WITH","ENDS_WITH"],Je=["IGNORE_CASE","CASE_SENSITIVE"],Xe={IGNORE_CASE:"aa",CASE_SENSITIVE:"Aa"},{t:Ye}=P.of(),Ze=e=>Ye(`filters.op.${e}`),et=e=>Ye(`filters.sensitivity.${e}`),tt=e=>Ye(""===e?"filters.boolean.any":`filters.boolean.${e}`);class st extends ge{static observed=["value:json","operators:csv"];static OPERATORS=Qe;static DEFAULT_OPERATOR="EQ";static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-affix>\n <button data-ref="operator" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n </ful-affix>\n <ful-control>\n <input data-ref="value1" data-tpl-type="type" form="">\n <input data-ref="value2" data-tpl-type="type" form="" hidden>\n </ful-control>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_operator;_container;_value1;_value2;_build(e){const t=super._build(e),s=t.fragment;return this._container=s.querySelector("ful-control-group"),this._value1=s.querySelector("[data-ref=value1]"),this._value2=s.querySelector("[data-ref=value2]"),this._operator=new Ue(s.querySelector("[data-ref=operator]"),{vocabulary:this._vocabulary(),glyphs:Ge,labelFor:Ze,interactive:()=>this._interactive(),onPick:()=>{this._syncBetween(),this._notifyChange()}}),this.operators=this.declared("operators"),this._value2.addEventListener("change",e=>{e.stopPropagation(),this._notifyChange()}),null===this._operator.value&&this._showDefaultOperator(),{...t,freeze:this._container,also:[this._value2]}}_showDefaultOperator(){const e=this._defaultOperator(),t=this._operator.allowed;this._showOperator(t.includes(e)?e:t[0])}formResetCallback(){super.formResetCallback(),this.hasAttribute("value")||this._showDefaultOperator()}_type(){return"text"}_serialize(e){return e}_deserialize(e){return e}_defaultOperator(){return"EQ"}_vocabulary(){return Qe}_declaredOperators;get operators(){return this._operator?this._operator.allowed:this._declaredOperators}set operators(e){this._operator?(this._operator.allowed=e,this._syncBetween()):this._declaredOperators=Ue.narrow(e,this._vocabulary())}get value(){return this._tuple()}set value(e){this._applyTuple(e)}_tuple(){const e=this._operator.value,t="BETWEEN"===e?[this._value1.value,this._value2.value]:[this._value1.value];return t.some(e=>""===e)?null:[e,...t.map(e=>this._serialize(e))]}_applyTuple(e){if(null==e)return this._value1.value="",void(this._value2.value="");const[t,...s]=e,r=this._operator.pinned?this._operator.allowed[0]:t;this._showOperator(r),this._value1.value=s[0]?this._deserialize(s[0]):s[0]??"",this._value2.value=s[1]?this._deserialize(s[1]):s[1]??""}_showOperator(e){this._operator.value=e,this._syncBetween()}_syncBetween(){this._value2.toggleAttribute("hidden","BETWEEN"!==this._operator.value)}get disabled(){return super.disabled}set disabled(e){super.disabled=e;for(const t of this._choices())t.claimed=e}_choices(){return[this._operator].filter(e=>e)}}class rt extends st{_defaultOperator(){return"LTE"}_type(){return"datetime-local"}_serialize(e){return ve.localToIso(e)}_deserialize(e){return ve.isoToLocal(e)}}class it extends st{_type(){return"date"}}class nt extends st{_type(){return"number"}}class at extends st{static observed=["sensitivities:csv"];static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-affix>\n <button data-ref="operator" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n <button data-ref="sensitivity" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n </ful-affix>\n <ful-control>\n <input data-ref="value1" data-tpl-type="type" form="">\n <input data-ref="value2" data-tpl-type="type" form="" hidden>\n </ful-control>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_defaultOperator(){return"CONTAINS"}_vocabulary(){return Ke}_sensitivityButton;_build(e){const t=super._build(e);return this._sensitivityButton=new Ue(t.fragment.querySelector("[data-ref=sensitivity]"),{vocabulary:Je,glyphs:Xe,labelFor:et,interactive:()=>this._interactive(),onPick:()=>this._notifyChange()}),this._sensitivityButton.allowed=null,this._sensitivityButton.value=Je[0],t}_choices(){return[...super._choices(),this._sensitivityButton].filter(e=>e)}get _sensitivity(){return this._sensitivityButton.value}_declaredSensitivities;get sensitivities(){return this._sensitivityButton?this._sensitivityButton.allowed:this._declaredSensitivities}set sensitivities(e){if(!this._sensitivityButton)return void(this._declaredSensitivities=Ue.narrow(e,Je));const t=this._sensitivityButton.value;this._sensitivityButton.allowed=e,this._sensitivityButton.allowed.includes(t)||(this._sensitivityButton.value=this._sensitivityButton.allowed[0])}get value(){const e=this._tuple();return null==e?null:[e[0],this._sensitivity,...e.slice(1)]}set value(e){null!=e?(this._sensitivityButton.allowed.includes(e[1])&&(this._sensitivityButton.value=e[1]),this._applyTuple([e[0],...e.slice(2)])):this._applyTuple(e)}formResetCallback(){if(super.formResetCallback(),!this.hasAttribute("value")){const e=this._sensitivityButton.allowed;this._sensitivityButton.value=e.includes("IGNORE_CASE")?"IGNORE_CASE":e[0]}}}const ot=["","true","false"],lt={true:"✓",false:"✗"};class ut extends le{static observed=["value:json","operators:csv"];static slots=!0;static OPERATORS=["EQ","NEQ"];static DEFAULT_OPERATOR="EQ";static template='\n <label>{{{{ slots.default }}}}</label>\n {{{{ slots.info }}}}\n <ful-control-group>\n <ful-affix data-tpl-if="slots.before">{{{{ slots.before }}}}</ful-affix>\n <ful-affix>\n <button data-ref="operator" type="button" form="" aria-expanded="false" aria-haspopup="true"></button>\n <ul popover role="menu"></ul>\n </ful-affix>\n <button data-ref="value" type="button" form=""></button>\n <ul popover role="menu"></ul>\n <ful-affix data-tpl-if="slots.after">{{{{ slots.after }}}}</ful-affix>\n </ful-control-group>\n <ful-field-error></ful-field-error>\n ';_operator;_value;_container;_build({slots:e}){const t=this.template().withOverlay({slots:e}).render();this._container=t.querySelector("ful-control-group");const s=t.querySelector("[data-ref=value]");this._operator=new Ue(t.querySelector("[data-ref=operator]"),{vocabulary:ut.OPERATORS,glyphs:Ge,labelFor:Ze,interactive:()=>this._interactive(),onPick:()=>this._notifyChange()}),this._value=new Ue(s,{vocabulary:ot,glyphs:lt,labelFor:tt,display:tt,interactive:()=>this._interactive(),onPick:()=>this._notifyChange()}),this.operators=this.declared("operators");const r=this._operator.allowed;return this._operator.value=r.includes(ut.DEFAULT_OPERATOR)?ut.DEFAULT_OPERATOR:r[0],this._value.allowed=null,this._value.value="",{fragment:t,control:s,error:t.querySelector("ful-field-error"),label:t.querySelector("label"),announces:null,freeze:this._container}}_declaredOperators;get operators(){return this._operator?this._operator.allowed:this._declaredOperators}set operators(e){this._operator?this._operator.allowed=e:this._declaredOperators=Ue.narrow(e,this._vocabulary())}_vocabulary(){return ut.OPERATORS}get value(){return""===this._value.value?null:[this._operator.value,this._value.value]}set value(e){null!=e?(this._operator.value=this._operator.pinned?this._operator.allowed[0]:e[0],this._value.value=e[1]??""):this._value.value=""}get disabled(){return super.disabled}set disabled(e){super.disabled=e;for(const t of[this._operator,this._value].filter(e=>e))t.claimed=e}}class ct{#cs=new WeakSet;#oe=new WeakMap;async request(e,t,s,r){const i=!this.#cs.has(t),n={name:s,section:t,index:r,first:i},a=["section:requested",...null!=r?[`section:requested:#${r}`]:[],...s?[`section:requested:${s}`]:[]],o=[];for(const t of a){const s=new CustomEvent(t,{bubbles:!0,detail:n});e.dispatchEvent(s),o.push(...s.async?.promises??[])}if(0===o.length)return;this.#cs.add(t);let l=this.#oe.get(t);l||(l=new ie,this.#oe.set(t,l));const u=l.take(),c=()=>!u.stale;t.querySelector(":scope > .ful-section-error")?.remove();const d=requestAnimationFrame(()=>{c()&&(t.toggleAttribute("loading",!0),t.setAttribute("aria-busy","true"))});try{return await Promise.all(o)}catch(e){throw c()&&this.#ds(t,e),e}finally{cancelAnimationFrame(d),c()&&(t.toggleAttribute("loading",!1),t.removeAttribute("aria-busy"))}}#ds(e,t){e.querySelector(":scope > .ful-section-error")?.remove();const s=document.createElement("div");s.className="ful-section-error",s.setAttribute("role","alert"),s.textContent=k.problemsText(t),e.prepend(s)}}let dt=!1;const ht=()=>{dt||(dt=!0,document.addEventListener("click",e=>{const t=e.target.closest?.("[dialog-target]");t&&document.getElementById(t.getAttribute("dialog-target"))?.open?.()}))};class pt extends S{static slots=!0;static attributes=["placement","icon","describes:presence"];static config={icon:"info-circle-fill"};static template='\n <button type="button" class="ful-tip" data-ref="trigger" data-tpl-aria-label="#l10n:t(\'info.tooltip\')"><ful-icon data-tpl-name="icon ?? config.icon" aria-hidden="true"></ful-icon></button>\n <ful-note popover data-ref="content">{{{{ slots.default }}}}</ful-note>\n ';render({slots:e}){const t=this.template().withOverlay({slots:e,icon:this.declared("icon")}).render(),s=t.querySelector("[data-ref=trigger]"),r=t.querySelector("[data-ref=content]");Re.wire(s,r,{prefix:"ful-tooltip",invoke:!0,expanded:!0,handPlace:!0}),r.setAttribute("placement",this.declared("placement")??"top"),this.replaceChildren(t),this.declared("describes")&&pt.#he(this,s,r)}static#he(e,t,s){ne(e)?.describedBy(s)?t.tabIndex=-1:console.warn("a ful-tooltip declares describes but stands in nothing that takes a description",e)}}class ft extends S{static attributes=["header","requires-answer:presence","close-on-submit:presence"];static slots=!0;static template='\n <dialog data-ref="dialog" class="ful-dialog">\n <header data-tpl-if="header || slots.header || !requiresAnswer" class="ful-dialog-header">\n {{{{ slots.header }}}}\n <h2 data-tpl-if="header">{{ header }}</h2>\n <button data-tpl-if="!requiresAnswer" type="button" data-ref="close" data-tpl-aria-label="#l10n:t(\'dialog.close\')"><ful-icon name="x-lg" aria-hidden="true"></ful-icon></button>\n </header>\n <section data-ref="loading" hidden><ful-spinner class="centered" role="status"><span class="ful-sr-only">{{ #l10n:t(\'spinner.loading\') }}</span></ful-spinner></section>\n <section data-ref="error" role="alert" hidden></section>\n <div data-ref="body" class="ful-dialog-body">{{{{ slots.default }}}}</div>\n <footer class="ful-dialog-footer">\n <button type="button" data-ref="acknowledge" data-result="acknowledged" data-tpl-if="!slots.buttons && !closeOnSubmit" data-tpl-aria-label="#l10n:t(\'dialog.acknowledge\')">{{ #l10n:t(\'dialog.acknowledge\') }}</button>\n {{{{ slots.buttons }}}}\n </footer>\n </dialog>\n ';#hs;#J;#Wt;#ps;#fs=new ct;#ms=new ie;#gs=[];#bs=null;render({slots:e}){const t=this.declared("requires-answer"),s=this.declared("close-on-submit"),r=this.template().withOverlay({slots:e,header:this.declared("header")??"",requiresAnswer:t,closeOnSubmit:s}).render();this.#hs=r.querySelector("[data-ref=dialog]"),this.#J=r.querySelector("[data-ref=body]"),this.#Wt=r.querySelector("[data-ref=loading]"),this.#ps=r.querySelector("[data-ref=error]"),this.#hs.addEventListener("close",()=>{const e=this.#vs();this.dispatchEvent(new CustomEvent("close",{detail:e})),this.#ge(e)}),this.#hs.addEventListener("click",e=>{const t=e.target.closest("button[data-result]")?.dataset.result;void 0!==t&&this.#hs.close(t)}),r.querySelector("[data-ref=close]")?.addEventListener("click",()=>this.#hs.close("")),s&&this.#J.addEventListener("submit:success",e=>{e.target===h.queryChildren(this.#J,"ful-form")&&(this.#bs={dismissed:!1,result:null,response:e.detail.response},this.#hs.close("submitted"))}),t&&this.#hs.addEventListener("cancel",e=>e.preventDefault()),this.replaceChildren(r),ht()}#vs(){if(this.#bs)return this.#bs;const e=this.#hs?.returnValue??"";return""===e?{dismissed:!0,result:null,response:null}:{dismissed:!1,result:e,response:null}}#ge(e){const t=this.#gs;this.#gs=[];for(const s of t)s(e)}disconnectedCallback(){this.#ge(this.#vs())}open(){return this.ask()}ask(){return this.#ys()&&(this.#ws(),this.#Es()),new Promise(e=>{this.#gs.push(e)})}async update(e){const t=this.#ms.take();this.#J.replaceChildren(),this.#ws(),this.#Wt?.removeAttribute("hidden"),this.#J.setAttribute("hidden",""),this.#ys();try{const s=await e();return t.stale||(this.#J.replaceChildren(s),this.#Wt?.setAttribute("hidden",""),this.#J.removeAttribute("hidden")),this.#J}catch(e){throw t.stale||(this.#ps?.removeAttribute("hidden"),this.#ps&&(this.#ps.textContent=k.problemsText(e)),this.#Wt?.setAttribute("hidden",""),this.#J.setAttribute("hidden","")),e}}#Es(){this.#fs.request(this,this.#J,null,null)?.catch(()=>{})}refresh(){return this.#fs.request(this,this.#J,null,null)?.then(void 0,()=>{})}close(e){this.#hs.close(e??"")}#ys(){return!this.#hs.open&&(this.#hs.returnValue="",this.#bs=null,this.#hs.showModal(),!0)}#ws(){this.#ps?.replaceChildren(),this.#ps?.setAttribute("hidden",""),this.#Wt?.setAttribute("hidden",""),this.#J?.removeAttribute("hidden")}}class mt extends S{static attributes=["title","placement","close-on-submit:presence"];static slots=!0;static template='\n <dialog data-ref="dialog" class="ful-drawer">\n <header>\n {{{{ slots.header }}}}\n <h2 data-ref="title">{{ title }}</h2>\n <button type="button" data-ref="close" data-tpl-aria-label="#l10n:t(\'drawer.close\')"><ful-icon name="x-lg" aria-hidden="true"></ful-icon></button>\n </header>\n <section data-ref="loading" hidden><ful-spinner class="centered" role="status"><span class="ful-sr-only">{{ #l10n:t(\'spinner.loading\') }}</span></ful-spinner></section>\n <section data-ref="error" role="alert" hidden></section>\n <section data-ref="content">{{{{ slots.default }}}}</section>\n </dialog>\n ';#hs;#xs;#Wt;#ps;#As;#fs=new ct;#ms=new ie;#bs=null;render({slots:e}){const t=this.template().withOverlay({slots:e,title:this.declared("title")??""}).render();this.#hs=t.querySelector("[data-ref=dialog]"),this.#xs=t.querySelector("[data-ref=title]"),this.#Wt=t.querySelector("[data-ref=loading]"),this.#ps=t.querySelector("[data-ref=error]"),this.#As=t.querySelector("[data-ref=content]");const s=this.declared("placement");s&&this.#hs.setAttribute("placement",s),t.querySelector("[data-ref=close]").addEventListener("click",()=>this.close()),this.#hs.addEventListener("close",()=>{this.dispatchEvent(new CustomEvent("close",{detail:this.#bs??{dismissed:!0,response:null}}))}),this.declared("close-on-submit")&&this.#As.addEventListener("submit:success",e=>{e.target===h.queryChildren(this.#As,"ful-form")&&(this.#bs={dismissed:!1,response:e.detail.response},this.close())}),this.replaceChildren(t),ht()}get title(){return this.#xs.textContent}set title(e){this.#xs.textContent=e??""}async update(e,t){const s=this.#ms.take();this.title=e,this.#As.replaceChildren(),this.#ws(),this.#Wt.removeAttribute("hidden"),this.#As.setAttribute("hidden",""),this.#ys();try{const e=await t();return s.stale||(this.#As.replaceChildren(e),this.#Wt.setAttribute("hidden",""),this.#As.removeAttribute("hidden")),this.#As}catch(e){throw s.stale||(this.#ps.removeAttribute("hidden"),this.#ps.textContent=k.problemsText(e),this.#Wt.setAttribute("hidden",""),this.#As.setAttribute("hidden","")),e}}refresh(){return this.#fs.request(this,this.#As,null,null)?.then(void 0,()=>{})}open(){this.#ys()&&(this.#ws(),this.#fs.request(this,this.#As,null,null)?.catch(()=>{}))}close(){this.#hs.close()}#ys(){return!this.#hs.open&&(this.#bs=null,this.#hs.showModal(),!0)}#ws(){this.#ps.replaceChildren(),this.#ps.setAttribute("hidden",""),this.#Wt.setAttribute("hidden",""),this.#As.removeAttribute("hidden")}}const gt=["info","success","warning","error"],bt=new Set;let vt=!1;class yt extends S{static attributes=["timeout:number"];#Ss;connectedCallback(){super.connectedCallback(),this.rendered&&bt.add(this)}disconnectedCallback(){bt.delete(this)}render(){this.#Ss=this.declared("timeout")||5e3,this.setAttribute("role","region"),this.setAttribute("tabindex","-1"),this.setAttribute("aria-label",P.of().t("toast.region")),vt||(vt=!0,document.addEventListener("show-toast",e=>{for(const t of bt)t.show(e.detail.message,e.detail)})),bt.add(this)}show(e,t={}){const s=gt.includes(t.severity)?t.severity:"info",r=document.createElement("ful-toast");r.classList.add(s),r.setAttribute("role","error"===s?"alert":"status");const i=document.createElement("div");i.textContent=k.problemsText(e,`${e??""}`);const n=document.createElement("button");n.type="button",n.setAttribute("aria-label",P.of().t("toast.dismiss"));const a=document.createElement("ful-icon");a.setAttribute("name","x-lg"),a.setAttribute("aria-hidden","true"),n.append(a),r.append(i,n),r.addEventListener("animationend",()=>{r.classList.contains("ful-toast-out")&&r.remove()});const o=()=>{r.contains(document.activeElement)&&this.focus(),matchMedia("(prefers-reduced-motion: reduce)").matches?r.remove():(r.classList.add("ful-toast-out"),0===r.getAnimations().length&&r.remove())};return n.addEventListener("click",o),this.append(r),setTimeout(o,t.timeout??this.#Ss),r}}class wt extends S{static slots=!0;static observed=["active:number"];static template='\n <ful-tablist role="tablist">{{{{ slots.tabs }}}}</ful-tablist>\n {{{{ slots.default }}}}\n ';#Ts;#Cs=[];#_s=[];#fs=new ct;#Os=0;render({slots:e}){const t=this.template().withOverlay({slots:e}).render();this.#Ts=t.querySelector("ful-tablist");const s=[...this.#Ts.children];this.#_s=[...t.children].filter(e=>e!==this.#Ts),s.length!==this.#_s.length&&console.warn(`ful-tabs: ${s.length} tabs declared for ${this.#_s.length} panels, the surplus is left alone`);const r=Math.min(s.length,this.#_s.length);this.#Cs=[];for(let e=0;e!==r;++e){const t=this.#_s[e],r=document.createElement("button");r.type="button",r.role="tab",r.id=c.uid("ful-tab"),t.id||(t.id=c.uid("ful-tabpanel")),r.setAttribute("aria-controls",t.id),t.role="tabpanel",t.setAttribute("aria-labelledby",r.id),t.tabIndex=0,r.append(...s[e].childNodes),r.addEventListener("click",()=>{this.active=e}),s[e].replaceWith(r),this.#Cs.push(r)}this.#Ts.addEventListener("keydown",e=>{const t=this.#Os;let s=null;"ArrowRight"===e.key?s=(t+1)%this.#Cs.length:"ArrowLeft"===e.key?s=(t-1+this.#Cs.length)%this.#Cs.length:"Home"===e.key?s=0:"End"===e.key&&(s=this.#Cs.length-1),null!==s&&s!==t&&(e.preventDefault(),this.active=s,this.#Cs[s].focus())}),this.replaceChildren(t)}get active(){return this.#Os}refresh(e){const t=e instanceof Element?this.#_s.indexOf(e):Number.isInteger(e)?e:NaN,s=this.#_s[t];if(s)return this.#fs.request(this,s,null,t)?.then(void 0,()=>{});console.warn(`ful-tabs: no panel answers to "${e}"`)}set active(e){const t=Math.min(Math.max(0,Number(e)||0),Math.max(0,this.#Cs.length-1)),s=this.#Os;for(const[e,s]of this.#Cs.entries())s.setAttribute("aria-selected",e===t?"true":"false"),s.tabIndex=e===t?0:-1,this.#_s[e].hidden=e!==t;this.#Os=t,this.reflectTo("active",t),this.rendered&&t!==s&&this.dispatchEvent(new CustomEvent("change",{detail:{active:t,previous:s}})),this.#_s.length>0&&(t!==s||!this.rendered)&&this.#fs.request(this,this.#_s[t],null,t)?.catch(()=>{})}}class Et extends S{static slots=!0;static observed=["exclusive:presence"];static template="\n <ful-accordion-group>{{{{ slots.default }}}}</ful-accordion-group>\n ";#Pe;#qs=!1;render({slots:e}){const t=this.template().withOverlay({slots:e}).render();this.#Pe=t.querySelector("ful-accordion-group"),this.replaceChildren(t)}get exclusive(){return this.#qs}set exclusive(e){this.#qs=!0===e,this.reflectTo("exclusive",this.#qs);const t=this.#qs?c.uid("ful-accordion"):null;for(const e of this.#Pe.querySelectorAll(":scope > details"))null===t?e.removeAttribute("name"):e.setAttribute("name",t)}}class xt extends S{static slots=!0;static observed=["progress"];static template="\n <ful-steps><ol data-tpl-aria-label=\"#l10n:t('wizard.progress')\">{{{{ slots.steps }}}}</ol></ful-steps>\n {{{{ slots.default }}}}\n ";#Rs=[];#Ns=[];#fs=new ct;#Ps=0;#Ls;render({slots:e}){const t=this.template().withOverlay({slots:e}).render(),s=[...t.querySelector("ful-steps ol").children];this.#Ns=[...t.children].filter(e=>"ful-steps"!==e.localName),s.length!==this.#Ns.length&&console.warn(`ful-wizard: ${s.length} steps declared for ${this.#Ns.length} sections, the surplus is left alone`);const r=Math.min(s.length,this.#Ns.length);this.#Rs=[];for(let e=0;e!==r;++e){const t=document.createElement("li");t.append(...s[e].childNodes),s[e].replaceWith(t),this.#Rs.push(t),this.#Ns[e].tabIndex=-1}if(this.replaceChildren(t),r>0){const e=this.#Ns.findIndex(e=>"step"===e.getAttribute("aria-current"));this.#ks(-1===e?0:Math.min(e,r-1)),this.#zs(this.#Ps)?.catch(()=>{})}}get index(){return this.#Ps}get step(){return this.#Ns[this.#Ps]?.getAttribute("data-step")??null}get progress(){return this.#Ls}set progress(e){this.#Ls=e,this.reflectTo("progress",e)}next(){return this.#Ms(this.#Ps+1)}prev(){return this.#Ms(this.#Ps-1)}move(e){const t=this.#Ns.findIndex(t=>t.getAttribute("data-step")===e);if(-1!==t)return this.#Ms(t);console.warn(`ful-wizard: no section carries data-step="${e}"`)}refresh(e){const t=e instanceof Element?e:"string"==typeof e?this.#Ns.find(t=>t.getAttribute("data-step")===e):void 0,s=this.#Ns.indexOf(t);if(-1!==s)return this.#zs(s)?.then(void 0,()=>{});console.warn(`ful-wizard: no section answers to "${e}"`)}#zs(e){return this.#fs.request(this,this.#Ns[e],this.#Ns[e].getAttribute("data-step"),e)}#Ms(e){const t=Math.min(Math.max(0,e),Math.max(0,this.#Rs.length-1));if(t!==this.#Ps)return this.#ks(t),this.#Ns[this.#Ps].focus(),this.rendered&&this.dispatchEvent(new CustomEvent("change",{detail:{index:this.#Ps,step:this.step}})),this.#zs(t)}#ks(e){for(const[t,s]of this.#Rs.entries())t===e?(s.setAttribute("aria-current","step"),this.#Ns[t].setAttribute("aria-current","step")):(s.removeAttribute("aria-current"),this.#Ns[t].removeAttribute("aria-current"));this.#Ps=e}}const At={en:{"pagination.showing":"Page {current} of {total}","pagination.navigation":"Page navigation","pagination.previous":"Previous","pagination.next":"Next","pagination.reload":"Reload","table.initial":"Start searching to see results.","table.error":"Error while loading data:","table.no-data":"No elements found.","dropdown.empty":"No results","select.remove":"Remove","files.dropzone-label":"Click or drop your files here","files.remove":"Remove","files.unacceptable-file-type":"Only files of type {types} are supported","files.max-file-size-exceeded":"Maximum supported file size is {size}","files.max-total-size-exceeded":"Maximum supported total file size is {size}","files.max-files-exceeded":{one:"Maximum of {count} file exceeded",other:"Maximum of {count} files exceeded"},"filters.op.EQ":"Equals","filters.op.NEQ":"Not equal","filters.op.LT":"Less than","filters.op.GT":"Greater than","filters.op.LTE":"At most","filters.op.GTE":"At least","filters.op.BETWEEN":"Between","filters.op.CONTAINS":"Contains","filters.op.STARTS_WITH":"Starts with","filters.op.ENDS_WITH":"Ends with","filters.sensitivity.IGNORE_CASE":"Ignore case","filters.sensitivity.CASE_SENSITIVE":"Case sensitive","filters.boolean.any":"Any","filters.boolean.true":"Yes","filters.boolean.false":"No","info.tooltip":"More information","dialog.acknowledge":"Got it","dialog.close":"Close","drawer.close":"Close","spinner.loading":"Loading…","toast.region":"Notifications","toast.dismiss":"Dismiss","wizard.progress":"Progress"},it:{"pagination.showing":"Pagina {current} di {total}","pagination.navigation":"Navigazione pagine","pagination.previous":"Precedente","pagination.next":"Successivo","pagination.reload":"Ricarica","table.initial":"Avvia la ricerca per visualizzare i risultati.","table.error":"Errore nel caricamento dei dati:","table.no-data":"Nessun elemento trovato.","dropdown.empty":"Nessun risultato","select.remove":"Rimuovi","files.dropzone-label":"Clicca o trascina i file qui","files.remove":"Rimuovi","files.unacceptable-file-type":"Solo i file di tipo {types} sono supportati","files.max-file-size-exceeded":"La dimensione massima di un file è di {size}","files.max-total-size-exceeded":"La dimensione massima complessiva dei file è di {size}","files.max-files-exceeded":{other:"Superato il numero massimo di {count} file"},"filters.op.EQ":"Uguale","filters.op.NEQ":"Diverso","filters.op.LT":"Minore","filters.op.GT":"Maggiore","filters.op.LTE":"Al massimo","filters.op.GTE":"Almeno","filters.op.BETWEEN":"Tra","filters.op.CONTAINS":"Contiene","filters.op.STARTS_WITH":"Inizia con","filters.op.ENDS_WITH":"Termina con","filters.sensitivity.IGNORE_CASE":"Ignora maiuscole","filters.sensitivity.CASE_SENSITIVE":"Distingui maiuscole","filters.boolean.any":"Qualsiasi","filters.boolean.true":"Sì","filters.boolean.false":"No","info.tooltip":"Maggiori informazioni","dialog.acknowledge":"Ho capito","dialog.close":"Chiudi","drawer.close":"Chiudi","spinner.loading":"Caricamento…","toast.region":"Notifiche","toast.dismiss":"Chiudi","wizard.progress":"Avanzamento"},es:{"pagination.showing":"Página {current} de {total}","pagination.navigation":"Navegación de páginas","pagination.previous":"Anterior","pagination.next":"Siguiente","pagination.reload":"Recargar","table.initial":"Inicia la búsqueda para ver los resultados.","table.error":"Error al cargar los datos:","table.no-data":"No se encontraron elementos.","dropdown.empty":"Sin resultados","select.remove":"Eliminar","files.dropzone-label":"Haz clic o arrastra tus archivos aquí","files.remove":"Eliminar","files.unacceptable-file-type":"Solo se admiten archivos de tipo {types}","files.max-file-size-exceeded":"El tamaño máximo de archivo admitido es {size}","files.max-total-size-exceeded":"El tamaño total máximo admitido es {size}","files.max-files-exceeded":{other:"Se ha superado el número máximo de {count} archivos"},"filters.op.EQ":"Igual","filters.op.NEQ":"Distinto","filters.op.LT":"Menor","filters.op.GT":"Mayor","filters.op.LTE":"Como máximo","filters.op.GTE":"Al menos","filters.op.BETWEEN":"Entre","filters.op.CONTAINS":"Contiene","filters.op.STARTS_WITH":"Empieza por","filters.op.ENDS_WITH":"Termina por","filters.sensitivity.IGNORE_CASE":"Ignorar mayúsculas","filters.sensitivity.CASE_SENSITIVE":"Distinguir mayúsculas","filters.boolean.any":"Cualquiera","filters.boolean.true":"Sí","filters.boolean.false":"No","info.tooltip":"Más información","dialog.acknowledge":"Entendido","dialog.close":"Cerrar","drawer.close":"Cerrar","spinner.loading":"Cargando…","toast.region":"Notificaciones","toast.dismiss":"Cerrar","wizard.progress":"Progreso"},fr:{"pagination.showing":"Page {current} sur {total}","pagination.navigation":"Navigation des pages","pagination.previous":"Précédent","pagination.next":"Suivant","pagination.reload":"Recharger","table.initial":"Lancez la recherche pour voir les résultats.","table.error":"Erreur lors du chargement des données :","table.no-data":"Aucun élément trouvé.","dropdown.empty":"Aucun résultat","select.remove":"Retirer","files.dropzone-label":"Cliquez ou déposez vos fichiers ici","files.remove":"Retirer","files.unacceptable-file-type":"Seuls les fichiers de type {types} sont pris en charge","files.max-file-size-exceeded":"La taille maximale de fichier prise en charge est {size}","files.max-total-size-exceeded":"La taille totale maximale prise en charge est {size}","files.max-files-exceeded":{one:"Nombre maximal de {count} fichier dépassé",other:"Nombre maximal de {count} fichiers dépassé"},"filters.op.EQ":"Égal","filters.op.NEQ":"Différent","filters.op.LT":"Inférieur","filters.op.GT":"Supérieur","filters.op.LTE":"Au plus","filters.op.GTE":"Au moins","filters.op.BETWEEN":"Entre","filters.op.CONTAINS":"Contient","filters.op.STARTS_WITH":"Commence par","filters.op.ENDS_WITH":"Finit par","filters.sensitivity.IGNORE_CASE":"Ignorer la casse","filters.sensitivity.CASE_SENSITIVE":"Respecter la casse","filters.boolean.any":"Indifférent","filters.boolean.true":"Oui","filters.boolean.false":"Non","info.tooltip":"Plus d’informations","dialog.acknowledge":"J’ai compris","dialog.close":"Fermer","drawer.close":"Fermer","spinner.loading":"Chargement…","toast.region":"Notifications","toast.dismiss":"Fermer","wizard.progress":"Progression"}};class St{#Ds;#Fs;#Is;constructor(e={}){this.#Ds=e.language??navigator?.language??"en",this.#Fs=e.translations??{},this.#Is=e.httpClient??null}configure(e){const t=this.#Is??V.builder().withCsrfToken().withRedirectOnUnauthorized("/").build(),s=this.#Ds.split("-")[0],r={...At.en,...At[s],...this.#Fs};e.defineModule("l10n",P).defineComponent("http-client",t).defineElement("ful-tooltip",pt).defineElement("ful-dialog",ft).defineElement("ful-drawer",mt).defineElement("ful-toasts",yt).defineElement("ful-tabs",wt).defineElement("ful-accordion",Et).defineElement("ful-wizard",xt).defineElement("ful-form",he).defineElement("ful-checkbox",Fe).defineElement("ful-input",ge).defineElement("ful-input-file",xe).defineElement("ful-local-date",be).defineElement("ful-instant",ve).defineElement("ful-input-local-date",ye).defineElement("ful-input-local-time",we).defineElement("ful-input-instant",Ee).defineElement("ful-radio-group",De).defineElement("ful-table",Ve).defineElement("ful-pagination",$e).defineElement("ful-sorter",Ie).defineElement("ful-filter-instant",rt).defineElement("ful-filter-local-date",it).defineElement("ful-filter-number",nt).defineElement("ful-filter-boolean",ut).defineElement("ful-filter-text",at).defineElement("ful-select",Me).defineElement("ful-dropdown",ze).defineComponent("loaders:select",ke).defineComponent("loaders:form",de).defineComponent("loaders:table",We).defineOverlay({l10n:r,locale:this.#Ds})}}var Tt=Object.freeze({__proto__:null,Accordion:Et,Anchors:Re,AsyncEvents:re,Bindings:oe,BooleanFilter:ut,Checkbox:Fe,Claims:ie,CompareFilter:st,Dialog:ft,Drawer:mt,Dropdown:ze,Field:le,Form:he,FormLoader:de,Input:ge,InputFile:xe,InputInstant:Ee,InputLocalDate:ye,InputLocalTime:we,Instant:ve,InstantFilter:rt,LocalDate:be,LocalDateFilter:it,LocalStorage:Z,NumberFilter:nt,Pagination:$e,Plugin:St,RadioGroup:De,Select:Me,SelectLoader:ke,SessionStorage:ee,SortButton:Ie,Table:Ve,TableLoader:We,TableSchemaParser:Be,Tabs:wt,TextFilter:at,Timing:ae,Toasts:yt,Tooltip:pt,VersionedLocalStorage:te,VersionedSessionStorage:se,Wizard:xt,describable:ne});return"undefined"!=typeof window&&(window.ftl=L,window.httpc=J,window.ful=Tt),e.Accordion=Et,e.Anchors=Re,e.AsyncEvents=re,e.Attributes=c,e.Base64=z,e.Bindings=oe,e.BooleanFilter=ut,e.BoundedCache=t,e.Checkbox=Fe,e.Claims=ie,e.CompareFilter=st,e.Dialog=ft,e.Drawer=mt,e.Dropdown=ze,e.ExpressionEvaluator=l,e.Expressions=o,e.Failure=k,e.Field=le,e.Form=he,e.FormLoader=de,e.Fragments=u,e.Hex=M,e.HttpClient=V,e.HttpClientBuilder=j,e.HttpClientError=F,e.HttpInterceptorChain=W,e.HttpMultipartRequestCustomizer=K,e.HttpRequestBuilder=Q,e.Input=ge,e.InputFile=xe,e.InputInstant=Ee,e.InputLocalDate=ye,e.InputLocalTime=we,e.Instant=ve,e.InstantFilter=rt,e.LightSlots=d,e.LocalDate=be,e.LocalDateFilter=it,e.LocalStorage=Z,e.Localization=P,e.MediaType=D,e.Nodes=h,e.NumberFilter=nt,e.Pagination=$e,e.ParsedElement=S,e.Plugin=St,e.RadioGroup=De,e.Registry=w,e.RenderError=v,e.Rendering=A,e.Select=Me,e.SelectLoader=ke,e.SessionStorage=ee,e.SortButton=Ie,e.Table=Ve,e.TableLoader=We,e.TableSchemaParser=Be,e.Tabs=wt,e.Template=b,e.Templates=x,e.TextFilter=at,e.Timing=ae,e.Toasts=yt,e.Tooltip=pt,e.VersionedLocalStorage=te,e.VersionedSessionStorage=se,e.Wizard=xt,e.describable=ne,e.registry=E,e}({});
2
2
  //# sourceMappingURL=fml.iife.min.js.map