@fieldia/viewer 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -1
- package/bundle/fieldia.ar.js +2 -2
- package/bundle/fieldia.ar.js.map +2 -2
- package/bundle/fieldia.de.js +2 -2
- package/bundle/fieldia.de.js.map +2 -2
- package/bundle/fieldia.fr.js +2 -2
- package/bundle/fieldia.fr.js.map +2 -2
- package/bundle/fieldia.js +6 -4
- package/bundle/fieldia.js.map +4 -4
- package/package.json +3 -3
- package/src/lib/attachment-preview.d.mts +27 -0
- package/src/lib/attachment-preview.d.ts +27 -0
- package/src/lib/attachment-preview.js +89 -0
- package/src/lib/attachment-preview.js.map +1 -0
- package/src/lib/attachment-preview.mjs +86 -0
- package/src/lib/attachment-preview.mjs.map +1 -0
- package/src/lib/dialog.d.mts +31 -2
- package/src/lib/dialog.d.ts +31 -2
- package/src/lib/dialog.js +158 -30
- package/src/lib/dialog.js.map +1 -1
- package/src/lib/dialog.mjs +155 -30
- package/src/lib/dialog.mjs.map +1 -1
- package/src/lib/hotkeys.d.mts +11 -0
- package/src/lib/hotkeys.d.ts +11 -0
- package/src/lib/hotkeys.js +34 -0
- package/src/lib/hotkeys.js.map +1 -0
- package/src/lib/hotkeys.mjs +30 -0
- package/src/lib/hotkeys.mjs.map +1 -0
- package/src/lib/labels.d.mts +39 -0
- package/src/lib/labels.d.ts +39 -0
- package/src/lib/labels.js +23 -0
- package/src/lib/labels.js.map +1 -1
- package/src/lib/labels.mjs +23 -0
- package/src/lib/labels.mjs.map +1 -1
- package/src/lib/list.d.mts +5 -2
- package/src/lib/list.d.ts +5 -2
- package/src/lib/list.js +6 -6
- package/src/lib/list.js.map +1 -1
- package/src/lib/list.mjs +6 -6
- package/src/lib/list.mjs.map +1 -1
- package/src/lib/locales/ar.js +23 -0
- package/src/lib/locales/ar.js.map +1 -1
- package/src/lib/locales/ar.mjs +23 -0
- package/src/lib/locales/ar.mjs.map +1 -1
- package/src/lib/locales/de.js +23 -0
- package/src/lib/locales/de.js.map +1 -1
- package/src/lib/locales/de.mjs +23 -0
- package/src/lib/locales/de.mjs.map +1 -1
- package/src/lib/locales/fr.js +23 -0
- package/src/lib/locales/fr.js.map +1 -1
- package/src/lib/locales/fr.mjs +23 -0
- package/src/lib/locales/fr.mjs.map +1 -1
- package/src/lib/look.d.mts +7 -3
- package/src/lib/look.d.ts +7 -3
- package/src/lib/look.js +72 -15
- package/src/lib/look.js.map +1 -1
- package/src/lib/look.mjs +72 -15
- package/src/lib/look.mjs.map +1 -1
- package/src/lib/open.d.mts +30 -0
- package/src/lib/open.d.ts +30 -0
- package/src/lib/open.js +92 -0
- package/src/lib/open.js.map +1 -0
- package/src/lib/open.mjs +89 -0
- package/src/lib/open.mjs.map +1 -0
- package/src/lib/place.d.mts +2 -0
- package/src/lib/place.d.ts +2 -0
- package/src/lib/place.js.map +1 -1
- package/src/lib/place.mjs.map +1 -1
- package/src/lib/record-bar.d.mts +56 -0
- package/src/lib/record-bar.d.ts +56 -0
- package/src/lib/record-bar.js +237 -0
- package/src/lib/record-bar.js.map +1 -0
- package/src/lib/record-bar.mjs +234 -0
- package/src/lib/record-bar.mjs.map +1 -0
- package/src/lib/record-styles.d.mts +9 -0
- package/src/lib/record-styles.d.ts +9 -0
- package/src/lib/record-styles.js +83 -0
- package/src/lib/record-styles.js.map +1 -0
- package/src/lib/record-styles.mjs +79 -0
- package/src/lib/record-styles.mjs.map +1 -0
- package/src/lib/related.d.mts +26 -3
- package/src/lib/related.d.ts +26 -3
- package/src/lib/related.js +37 -10
- package/src/lib/related.js.map +1 -1
- package/src/lib/related.mjs +36 -10
- package/src/lib/related.mjs.map +1 -1
- package/src/lib/say.d.mts +11 -0
- package/src/lib/say.d.ts +11 -0
- package/src/lib/say.js +61 -0
- package/src/lib/say.js.map +1 -0
- package/src/lib/say.mjs +58 -0
- package/src/lib/say.mjs.map +1 -0
- package/src/lib/tab-strip.d.mts +17 -0
- package/src/lib/tab-strip.d.ts +17 -0
- package/src/lib/tab-strip.js +51 -0
- package/src/lib/tab-strip.js.map +1 -0
- package/src/lib/tab-strip.mjs +48 -0
- package/src/lib/tab-strip.mjs.map +1 -0
- package/src/lib/value-words.d.mts +10 -0
- package/src/lib/value-words.d.ts +10 -0
- package/src/lib/value-words.js +38 -0
- package/src/lib/value-words.js.map +1 -0
- package/src/lib/value-words.mjs +35 -0
- package/src/lib/value-words.mjs.map +1 -0
- package/src/lib/viewer.d.mts +54 -5
- package/src/lib/viewer.d.ts +54 -5
- package/src/lib/viewer.js +924 -297
- package/src/lib/viewer.js.map +1 -1
- package/src/lib/viewer.mjs +926 -299
- package/src/lib/viewer.mjs.map +1 -1
package/bundle/fieldia.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
/*! Fieldia 0.
|
|
2
|
-
"use strict";var Fieldia=(()=>{var Xt=Object.defineProperty;var Lo=Object.getOwnPropertyDescriptor;var So=Object.getOwnPropertyNames;var Eo=Object.prototype.hasOwnProperty;var Ro=(e,t,n)=>t in e?Xt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Fo=(e,t)=>{for(var n in t)Xt(e,n,{get:t[n],enumerable:!0})},Ao=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of So(t))!Eo.call(e,i)&&i!==n&&Xt(e,i,{get:()=>t[i],enumerable:!(r=Lo(t,i))||r.enumerable});return e};var To=e=>Ao(Xt({},"__esModule",{value:!0}),e);var bt=(e,t,n)=>Ro(e,typeof t!="symbol"?t+"":t,n);var vs={};Fo(vs,{ADDRESS_PARTS:()=>mn,DEFAULT_LABELS:()=>ao,FIELDIA_CSS:()=>no,FIELD_NAME:()=>Nr,FIELD_TYPES:()=>Zt,FORMAT_VERSION:()=>Qt,ICONS:()=>Ui,MESSAGES:()=>De,VERSION:()=>xs,VIEWER_LABELS:()=>Ge,WIDGET_LABELS:()=>Ne,accentShades:()=>Lr,addLanguage:()=>Hn,applyLook:()=>vt,binaryWidget:()=>ir,browserPreferences:()=>vr,builtInWidgets:()=>Yi,charTagsWidget:()=>Qn,checkPage:()=>rn,checkValue:()=>At,compileModifier:()=>qe,contrast:()=>$t,countriesIn:()=>mr,createForm:()=>gn,createMemoryDataSource:()=>ii,createWidget:()=>Ue,dayOf:()=>ht,describeTypes:()=>zt,displayValue:()=>jt,drawIcon:()=>lt,emptyValue:()=>Dt,evaluateModifier:()=>Br,expressionContext:()=>_e,facetsToFilter:()=>fn,fileProblem:()=>Wt,fill:()=>ye,formatBytes:()=>it,formatMoney:()=>Yn,formatNumber:()=>Ze,groupByFields:()=>un,hostScheduler:()=>Ht,htmlWidget:()=>cr,imageWidget:()=>or,initialValues:()=>Ft,installListStyles:()=>Pn,installStyles:()=>xr,isEmpty:()=>Xe,isModifierValid:()=>jr,isRightToLeft:()=>sn,isoWeek:()=>Ti,jsonWidget:()=>fr,keepTabIn:()=>st,kindTextField:()=>vi,labelPlace:()=>Wn,labelWidget:()=>_t,lineForm:()=>kn,lineKind:()=>ze,linesWidget:()=>nr,linkAddress:()=>Mi,linkCheckboxesWidget:()=>er,localizePage:()=>an,many2oneWidget:()=>Zn,matchesFilter:()=>Tt,memoryPreferences:()=>_a,mountViewer:()=>Er,normalizeNumber:()=>Xn,openFormDialog:()=>In,openSearchDialog:()=>Sr,pageWords:()=>Hr,planSection:()=>Dn,progressbarWidget:()=>Ut,propertiesWidget:()=>dr,readFile:()=>Ln,referenceWidget:()=>tr,sanitizeHtml:()=>lr,saveProblemOf:()=>ln,saveRefused:()=>ti,scoreOf:()=>ei,statusbarWidget:()=>En,suggestions:()=>cn,summary:()=>Sn,tagsWidget:()=>wn,translatePage:()=>Pt,wait:()=>pn,wideColumns:()=>kt,withCalendar:()=>Fn});var Nr=/^[A-Za-z_][A-Za-z0-9_]*$/,Zt=["char","text","html","integer","float","monetary","boolean","date","datetime","selection","binary","image","many2one","many2many","one2many","reference","properties","json","matrix"];function kt(e){return typeof e=="object"?e.wide:e??1}var Qt="0.1";var Ie=e=>typeof e=="number"&&Number.isFinite(e);function nt(e){return Number.isFinite(e)?Number(e.toPrecision(15)):null}function Cr(e,t,n){if(e==="+"&&(typeof t=="string"||typeof n=="string")){let r=Mr(t),i=Mr(n);return r===null||i===null?null:r+i}if(!Ie(t)||!Ie(n))return null;switch(e){case"+":return nt(t+n);case"-":return nt(t-n);case"*":return nt(t*n);case"/":return nt(t/n);case"%":return nt(t-n*Math.floor(t/n));default:return null}}function Mr(e){return e==null?"":typeof e=="string"?e:Ie(e)?String(e):null}function $r(e){return Ie(e)?nt(-e):null}function Pe(e){return Array.isArray(e)?e.length>0:e!==null&&typeof e=="object"?Object.keys(e).length>0:!!e}function It(e,t){let n=10**Math.trunc(t),r=Number((Math.abs(e)*n).toPrecision(15));return nt(Math.sign(e)*Math.round(r)/n)}function gt(e){let t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function Or(e){let t=e.args[0];return(t.type==="Identifier"?e.env.lines?.(t.name):void 0)??e.value(t)}function Ir(e,t){let n=e.args.flatMap(i=>{let o=e.value(i);return Array.isArray(o)?o:[o]}).filter(i=>i!=null);return!n.length||!n.every(Ie)&&!n.every(i=>typeof i=="string")?null:n.reduce((i,o)=>(t?o<i:o>i)?o:i)}var Vt=new Map([["round",{takes:[1,2],call({args:e,value:t}){let n=t(e[0]),r=e.length>1?t(e[1]):0;return Ie(n)&&Ie(r)?It(n,r):null}}],["abs",{takes:[1,1],call({args:e,value:t}){let n=t(e[0]);return Ie(n)?Math.abs(n):null}}],["min",{takes:[1,1/0],call:e=>Ir(e,!0)}],["max",{takes:[1,1/0],call:e=>Ir(e,!1)}],["len",{takes:[1,1],call({args:e,value:t}){let n=t(e[0]);return n==null?0:typeof n=="string"||Array.isArray(n)?n.length:null}}],["today",{takes:[0,0],call:({env:e})=>e.today?.()??gt(new Date)}],["sum",{takes:[1,2],check(e){let t=e[1];if(t&&!(t.type==="Literal"&&typeof t.value=="string"))return"sum takes the name of a field, in quotes, after the lines: sum(lines, 'subtotal')"},call(e){let t=Or(e);if(t==null)return 0;if(!Array.isArray(t))return null;let n=e.args[1]?.type==="Literal"?e.args[1].value:void 0,r=0;for(let i of t){let o=n===void 0?i:i?.[n];Ie(o)&&(r+=o)}return nt(r)}}],["count",{takes:[1,1],call(e){let t=Or(e);return t==null?0:Array.isArray(t)?t.length:null}}],["if",{takes:[3,3],call:({args:e,value:t})=>Pe(t(e[0]))?t(e[1]):t(e[2])}]]);function Vr(e,[t,n]){return n===0?`${e} takes no values`:t===n?`${e} takes ${t} value${t===1?"":"s"}`:n===1/0?`${e} takes ${t} or more values`:`${e} takes ${t} or ${n} values`}function Ye(e,t,n={}){switch(e.type){case"BinaryOp":return No(e,t,n);case"UnaryOp":return Mo(e,t,n);case"Call":return Co(e,t,n);case"Literal":return e.value;case"Identifier":return $o(t,e.name);default:throw new Error(`Unknown AST node type: ${e.type}`)}}function No(e,t,n){let r=Pr(Ye(e.left,t,n)),i=Pr(Ye(e.right,t,n)),o=e.operator.toLowerCase(),a=r!==null&&i!==null;switch(o){case"==":return r===i;case"!=":case"<>":return r!==i;case"<":return a&&r<i;case">":return a&&r>i;case"<=":return a&&r<=i;case">=":return a&&r>=i;case"in":return Array.isArray(i)&&i.includes(r);case"not in":return Array.isArray(i)&&!i.includes(r);case"+":case"-":case"*":case"/":case"%":return Cr(o,r,i);case"and":return Pe(r)&&Pe(i);case"or":return Pe(r)||Pe(i);default:throw new Error(`Unknown binary operator: ${e.operator}`)}}function Mo(e,t,n){let r=Ye(e.operand,t,n);switch(e.operator.toLowerCase()){case"not":return!Pe(r);case"-":return $r(r);default:throw new Error(`Unknown unary operator: ${e.operator}`)}}function Co(e,t,n){let r=Vt.get(e.name);if(!r)throw new Error(`Unknown function: ${e.name}`);return r.call({args:e.args,value:i=>Ye(i,t,n),env:n})}function Pr(e){return e===void 0?null:e}function $o(e,t){let n=t.split("."),r=e;for(let i of n){if(r==null)return;r=r[i]}return r}var qn=new Map([["True",!0],["False",!1],["None",null],["true",!0],["false",!1],["null",null]]),Oo=new Set(["+","-","*","/","%"]);function yt(e){let t=[];if(!e)return t;let n=/(\(|\)|,|==|!=|<=|>=|<>|<|>|[-+*/%]|not\s+in\b|in\b|and\b|or\b|not\b|\[[^\]]*\]|'[^']*'|"[^"]*"|\d+\.?\d*|\w+(?:\.\w+)*)/iy,r=/\s*/y,i=0;for(;;){if(r.lastIndex=i,r.exec(e),i=r.lastIndex,i>=e.length)return t;n.lastIndex=i;let o=n.exec(e);if(!o)throw new Error(`Unexpected "${e[i]}" at character ${i+1} of: ${e}`);t.push({type:Io(o[0]),value:o[0],position:t.length}),i=n.lastIndex}}function Io(e){let t=e.toLowerCase().trim();return qn.has(e)?"CONSTANT":t==="and"||t==="or"||t==="not"?"LOGICAL":["==","!=","<>","<",">","<=",">="].includes(e)||t==="in"||t==="not in"?"OPERATOR":e==="("||e===")"?"PAREN":Oo.has(e)?"ARITHMETIC":e===","?"COMMA":e.startsWith("[")?"LIST":e.startsWith("'")||e.startsWith('"')?"STRING":/^\d+\.?\d*$/.test(e)?"NUMBER":"IDENTIFIER"}var rt=class{constructor(t){bt(this,"tokens");bt(this,"position",0);this.tokens=t}parse(){if(this.tokens.length===0)throw new Error("Cannot parse empty expression");let t=this.parseOr();if(!this.isAtEnd())throw new Error(`Unexpected token at position ${this.position}: ${this.peek()?.value}`);return t}parseOr(){let t=this.parseAnd();for(;this.matchLogical("or");){let n=this.previous().value,r=this.parseAnd();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:r}}return t}parseAnd(){let t=this.parseNot();for(;this.matchLogical("and");){let n=this.previous().value,r=this.parseNot();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:r}}return t}parseNot(){if(this.matchLogical("not")){let t=this.previous().value,n=this.parseComparison();return{type:"UnaryOp",operator:t.toLowerCase(),operand:n}}return this.parseComparison()}parseComparison(){let t=this.parseSum(),n=["==","!=","<>","<",">","<=",">=","in","not in"];if(this.matchOperator(...n)){let r=this.previous().value,i=this.parseSum();return{type:"BinaryOp",operator:r.toLowerCase(),left:t,right:i}}return t}parseSum(){let t=this.parseProduct();for(;this.match("ARITHMETIC","+","-");)t={type:"BinaryOp",operator:this.previous().value,left:t,right:this.parseProduct()};return t}parseProduct(){let t=this.parseUnary();for(;this.match("ARITHMETIC","*","/","%");)t={type:"BinaryOp",operator:this.previous().value,left:t,right:this.parseUnary()};return t}parseUnary(){return this.match("ARITHMETIC","-")?{type:"UnaryOp",operator:"-",operand:this.parseUnary()}:this.parseValue()}parseCall(t){let n=Vt.get(t);if(!n)throw new Error(`no function "${t}": the functions are ${[...Vt.keys()].join(", ")}`);this.advance();let r=[];if(!this.match("PAREN",")")){do r.push(this.parseOr());while(this.match("COMMA"));this.consume("PAREN",")",`Expected "," or ")" after a value of ${t}(\u2026)`)}let[i,o]=n.takes;if(r.length<i||r.length>o)throw new Error(Vr(t,n.takes));let a=n.check?.(r);if(a)throw new Error(a);return{type:"Call",name:t,args:r}}parseValue(){if(this.match("PAREN","(")){let t=this.parseOr();return this.consume("PAREN",")","Expected closing parenthesis"),t}if(this.check("STRING"))return{type:"Literal",value:this.advance().value.slice(1,-1)};if(this.check("CONSTANT")){let t=this.advance();return{type:"Literal",value:qn.get(t.value)??null}}if(this.check("NUMBER")){let t=this.advance();return{type:"Literal",value:Number(t.value)}}if(this.check("LIST")){let t=this.advance();return{type:"Literal",value:Vo(t.value)}}if(this.check("IDENTIFIER")){let t=this.advance(),n=this.peek();return n?.type==="PAREN"&&n.value==="("?this.parseCall(t.value):{type:"Identifier",name:t.value}}throw new Error(`Unexpected token: ${this.peek()?.value||"EOF"}`)}match(t,...n){if(this.check(t)){if(n.length===0)return this.advance(),!0;let r=this.peek();if(r&&n.includes(r.value))return this.advance(),!0}return!1}matchLogical(...t){let n=this.peek();if(n&&n.type==="LOGICAL"){let r=n.value.toLowerCase();if(t.map(i=>i.toLowerCase()).includes(r))return this.advance(),!0}return!1}matchOperator(...t){let n=this.peek();if(n&&n.type==="OPERATOR"){let r=n.value.toLowerCase();if(t.map(i=>i.toLowerCase()).includes(r))return this.advance(),!0}return!1}check(t){return this.peek()?.type===t}advance(){return this.isAtEnd()||this.position++,this.previous()}peek(){return this.isAtEnd()?null:this.tokens[this.position]}previous(){return this.tokens[this.position-1]}isAtEnd(){return this.position>=this.tokens.length}consume(t,n,r){if(this.check(t)){let i=this.peek();if(i&&i.value===n)return this.advance()}throw new Error(r)}};function Vo(e){try{let t=e.slice(1,-1).trim();if(!t)return[];let n=[],r="",i=!1,o="";for(let a=0;a<t.length;a++){let s=t[a];(s==="'"||s==='"')&&(a===0||t[a-1]!=="\\")&&(i?s===o&&(i=!1,o=""):(i=!0,o=s)),s===","&&!i?(n.push(Dr(r.trim())),r=""):r+=s}return r.trim()&&n.push(Dr(r.trim())),n}catch(t){throw new Error(`Cannot read the list ${e}`,{cause:t})}}function Dr(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):isNaN(Number(e))?e.toLowerCase()==="true"?!0:e.toLowerCase()==="false"?!1:e:Number(e)}function Lt(e,t){switch(t(e),e.type){case"BinaryOp":Lt(e.left,t),Lt(e.right,t);return;case"UnaryOp":Lt(e.operand,t);return;case"Call":for(let n of e.args)Lt(n,t);return;default:return}}function en(e){let t=[];return Lt(e,n=>{if(n.type!=="Identifier")return;let r=n.name.split(".")[0];t.includes(r)||t.push(r)}),t}function Wr(e){let t=[];return Lt(e,n=>{if(n.type!=="Call"||n.name!=="sum")return;let[r,i]=n.args;r.type==="Identifier"&&i?.type==="Literal"&&t.push({lines:r.name,field:i.value})}),t}function qe(e){if(typeof e!="string"){let n=e===!0;return{source:e,fields:[],evaluate:()=>n}}let t=new rt(yt(e)).parse();return{source:e,fields:en(t),evaluate(n,r){try{return Pe(Ye(t,n,r))}catch{return!1}}}}function St(e){let t=new rt(yt(e)).parse();return{source:e,fields:en(t),sums:Wr(t),evaluate(n,r={}){try{return Ye(t,n,r)??null}catch{return null}}}}function tn(e){let t=[],n=[],r=new Set,i=[],o=a=>{if(r.has(a))return;let s=i.indexOf(a);if(s!==-1){n.push([...i.slice(s),a]);return}i.push(a);for(let d of e.get(a)??[])e.has(d)&&o(d);i.pop(),r.add(a),t.push(a)};for(let a of e.keys())o(a);return{order:t,cycles:n}}var Et=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Po=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),zr="text, numbers, yes or no, dates, choices and json can",Do=e=>{let t=e.map(n=>`"${n}"`);return t.length<2?t.join(""):`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`},nn=class{constructor(t){bt(this,"page",t);bt(this,"issues",[]);bt(this,"ids",new Map)}run(){return this.checkFields(this.page.fields,"fields"),this.walkRoot(this.page.layout,"layout"),this.issues}report(t,n){this.issues.push({path:t,message:n})}claim(t,n){let r=this.ids.get(t);r!==void 0?this.report(n,`duplicate id "${t}", also used at ${r}`):this.ids.set(t,n)}need(t,n,r=this.page.fields){if(Et(r,t))return r[t];this.report(n,`no field "${t}"`)}checkModifiers(t,n,r=["invisible"],i={fields:this.page.fields}){for(let o of r){let a=t[o];if(typeof a!="string")continue;let s;try{s=qe(a).fields}catch(d){this.report(`${n}.${o}`,`cannot read "${a}": ${d.message}`);continue}this.checkReads(a,s,`${n}.${o}`,i)}}checkReads(t,n,r,i){for(let o of n){if(Et(i.fields,o))continue;let a=i.lines===void 0?"of this page":`of the lines of "${i.lines}"`;this.report(r,`"${t}" reads "${o}", which is not a field ${a}`)}}checkExpression(t,n,r){let i;try{i=St(t)}catch(o){return this.report(n,`cannot read "${t}": ${o.message}`),null}this.checkReads(t,i.fields,n,r);for(let o of i.sums){if(!Et(r.fields,o.lines))continue;let a=r.fields[o.lines];a.type!=="one2many"?this.report(n,`sum adds up the lines of a one2many; "${o.lines}" is a ${a.type}`):Et(a.fields,o.field)||this.report(n,`"${o.field}" is not a field of the lines of "${o.lines}"`)}return i.fields}checkWorkedOut(t,n,r){let i=new Map;for(let[o,a]of Object.entries(t)){let s=`${n}.${o}`;if((a.compute!==void 0||a.setWhen)&&!Po.has(a.type)){a.compute!==void 0&&this.report(`${s}.compute`,`a ${a.type} cannot be worked out; ${zr}`),a.setWhen&&this.report(`${s}.setWhen`,`a ${a.type} cannot be set by a condition; ${zr}`);continue}if(a.compute!==void 0){let d=this.checkExpression(a.compute,`${s}.compute`,r);d&&i.set(o,d)}a.setWhen?.forEach((d,l)=>{this.checkModifiers(d,`${s}.setWhen[${l}]`,["when"],r),this.checkExpression(d.value,`${s}.setWhen[${l}].value`,r)})}for(let o of tn(i).cycles){let a=o.slice(0,-1),s=a.length===1?`"${a[0]}" is worked out from itself`:`${Do(a)} are worked out from each other: ${o.join(" \u2192 ")}`;this.report(`${n}.${o[0]}.compute`,s)}}checkFields(t,n,r){this.checkWorkedOut(t,n,{fields:t,lines:r});for(let[i,o]of Object.entries(t)){let a=`${n}.${i}`;if(o.type==="monetary"&&o.currencyField!==void 0){let s=this.need(o.currencyField,`${a}.currencyField`,t);s&&!["many2one","selection","char"].includes(s.type)&&this.report(`${a}.currencyField`,`"${o.currencyField}" is a ${s.type}; a currency field must be a many2one, selection or char`)}if((o.type==="many2one"||o.type==="many2many")&&o.filter){let s=(d,l)=>{if("any"in d)return d.any.forEach((h,f)=>s(h,`${l}.any[${f}]`));if("all"in d)return d.all.forEach((h,f)=>s(h,`${l}.all[${f}]`));d.valueFrom!==void 0&&this.need(d.valueFrom,`${l}.valueFrom`,t)};o.filter.forEach((d,l)=>{s(d,`${a}.filter[${l}]`)})}if(o.type==="selection"&&o.optionsFrom?.dependsOn?.forEach((s,d)=>this.need(s,`${a}.optionsFrom.dependsOn[${d}]`,t)),o.type==="properties"&&o.definitions){let s=new Set;o.definitions.forEach((d,l)=>{d.type==="selection"&&!d.options&&this.report(`${a}.definitions[${l}].options`,"a choice property needs its choices"),s.has(d.name)&&this.report(`${a}.definitions[${l}].name`,`"${d.name}" is named twice`),s.add(d.name)})}if(o.type==="one2many"&&(this.checkFields(o.fields,`${a}.fields`,i),o.lineKinds&&this.checkLineKinds(i,o.lineKinds,o.fields,`${a}.lineKinds`),o.sequenceField!==void 0)){let s=o.fields[o.sequenceField];s?s.type!=="integer"&&this.report(`${a}.sequenceField`,`"${o.sequenceField}" is a ${s.type}; the field that keeps the order of lines must be an integer`):this.report(`${a}.sequenceField`,`"${o.sequenceField}" is not a field of the lines of "${i}"`)}}}checkLineKinds(t,n,r,i){let o=r[n.field];if(!o)this.report(`${i}.field`,`"${n.field}" is not a field of the lines of "${t}"`);else if(o.type!=="selection"&&o.type!=="char")this.report(`${i}.field`,`"${n.field}" is a ${o.type}; the field that says what a line is must be a selection or char`);else if(o.type==="selection")for(let s of["section","note"]){let d=n[s]??s;o.options.some(l=>l.value===d)||this.report(`${i}.${s}`,`"${n.field}" has no option "${d}"`)}let a=r[n.text];a?a.type!=="char"&&a.type!=="text"&&this.report(`${i}.text`,`"${n.text}" is a ${a.type}; a section's or note's text must be a char or text field`):this.report(`${i}.text`,`"${n.text}" is not a field of the lines of "${t}"`)}walkRoot(t,n){if(t.type==="tabs")return this.walkNode(t,n);if(this.claim(t.id,n),t.type==="sheet")return this.walkSheet(t,n);if(t.type==="sections")return this.walkChildren(t.children,n);if(t.type==="list")return this.walkList(t,n);t.children.forEach((r,i)=>{let o=`${n}.children[${i}]`;this.claim(r.id,o),this.checkModifiers(r,o),this.walkChildren(r.children,o)})}walkList(t,n){this.page.data.kind!=="record"&&this.report("data",'a list shows records: its data needs kind "record" and a model'),t.columns.forEach((o,a)=>this.need(o,`${n}.columns[${a}]`)),t.sort?.forEach((o,a)=>this.need(o.field,`${n}.sort[${a}].field`)),t.searchFields?.forEach((o,a)=>this.need(o,`${n}.searchFields[${a}]`)),t.groupBy?.forEach((o,a)=>this.need(o,`${n}.groupBy[${a}]`));let r=(o,a)=>{if("any"in o)return o.any.forEach((s,d)=>r(s,`${a}.any[${d}]`));if("all"in o)return o.all.forEach((s,d)=>r(s,`${a}.all[${d}]`));this.need(o.field,`${a}.field`),o.valueFrom!==void 0&&this.report(`${a}.valueFrom`,"a list's filter compares with values, not with another field")},i=new Set;t.filters?.forEach((o,a)=>{this.claim(o.id,`${n}.filters[${a}]`),i.add(o.id),o.filter.forEach((s,d)=>r(s,`${n}.filters[${a}].filter[${d}]`))}),t.defaultFilters?.forEach((o,a)=>{i.has(o)||this.report(`${n}.defaultFilters[${a}]`,`no filter "${o}" in this list`)}),t.actions?.forEach((o,a)=>this.claim(o.id,`${n}.actions[${a}]`))}walkChildren(t,n){t.forEach((r,i)=>this.walkNode(r,`${n}.children[${i}]`))}walkNode(t,n){switch(this.claim(t.id,n),this.checkModifiers(t,n,t.type==="field"?["invisible","readonly","required"]:t.type==="section"?["invisible","readonly"]:["invisible"]),t.type){case"field":return this.checkFieldNode(t,n);case"section":return t.collapsible&&!t.title&&this.report(n,"a collapsible section needs a title to fold it by"),t.collapsed&&!t.collapsible&&this.report(n,"collapsed needs collapsible: true"),this.walkChildren(t.children,n);case"tabs":return this.walkTabs(t,n);default:return}}walkTabs(t,n){t.children.forEach((r,i)=>{let o=`${n}.children[${i}]`;this.claim(r.id,o),this.checkModifiers(r,o),this.walkChildren(r.children,o)})}walkSheet(t,n){if(t.title&&(this.need(t.title.field,`${n}.title.field`),t.title.subtitleField!==void 0&&this.need(t.title.subtitleField,`${n}.title.subtitleField`),t.title.avatarField!==void 0&&this.need(t.title.avatarField,`${n}.title.avatarField`)),t.statusbar){let{field:r,visibleStates:i}=t.statusbar,o=this.need(r,`${n}.statusbar.field`);if(o&&o.type!=="selection"&&o.type!=="many2one"&&this.report(`${n}.statusbar.field`,`"${r}" is a ${o.type}; a statusbar needs a selection or many2one`),o?.type==="selection"&&i){let a=new Set(o.options.map(s=>s.value));i.forEach((s,d)=>{a.has(s)||this.report(`${n}.statusbar.visibleStates[${d}]`,`"${s}" is not an option of "${r}"`)})}}t.buttons?.forEach((r,i)=>{this.claim(r.id,`${n}.buttons[${i}]`),this.checkModifiers(r,`${n}.buttons[${i}]`)}),t.statButtons?.forEach((r,i)=>{this.claim(r.id,`${n}.statButtons[${i}]`),this.checkModifiers(r,`${n}.statButtons[${i}]`),r.field!==void 0&&this.need(r.field,`${n}.statButtons[${i}].field`)}),t.ribbon&&(this.claim(t.ribbon.id,`${n}.ribbon`),this.checkModifiers(t.ribbon,`${n}.ribbon`)),t.badges?.forEach((r,i)=>{this.claim(r.id,`${n}.badges[${i}]`),this.checkModifiers(r,`${n}.badges[${i}]`)});for(let r of["above","below"])t.title?.[r]?.forEach((i,o)=>this.walkNode(i,`${n}.title.${r}[${o}]`));t.alerts?.forEach((r,i)=>{this.claim(r.id,`${n}.alerts[${i}]`),this.checkModifiers(r,`${n}.alerts[${i}]`)}),this.walkChildren(t.children,n),t.sidePanel&&(this.claim(t.sidePanel.id,`${n}.sidePanel`),this.checkModifiers(t.sidePanel,`${n}.sidePanel`))}checkFieldNode(t,n){let r=this.need(t.field,`${n}.field`);t.validate?.forEach((i,o)=>{let a=`${n}.validate[${o}]`;if(this.checkModifiers(i,a,["when","holds"]),i.pattern!==void 0)try{new RegExp(i.pattern)}catch{this.report(`${a}.pattern`,`"${i.pattern}" is not a regular expression`)}}),r&&t.totals&&(r.type!=="one2many"?this.report(`${n}.totals`,`totals only apply to one2many fields; "${t.field}" is a ${r.type}`):t.totals.forEach((i,o)=>{let a=Et(r.fields,i)?r.fields[i]:void 0;a?["integer","float","monetary"].includes(a.type)||this.report(`${n}.totals[${o}]`,`"${i}" is a ${a.type}; only integer, float and monetary columns add up`):this.report(`${n}.totals[${o}]`,`"${i}" is not a field of the lines of "${t.field}"`)}));for(let[i,o]of Object.entries(t.options??{}))i.endsWith("Field")&&typeof o=="string"&&this.need(o,`${n}.options.${i}`);if(r&&t.editMode&&r.type!=="one2many"&&this.report(`${n}.editMode`,`editMode only applies to one2many fields; "${t.field}" is a ${r.type}`),r&&t.optionalColumns)if(r.type!=="one2many")this.report(`${n}.optionalColumns`,`optional columns only apply to one2many fields; "${t.field}" is a ${r.type}`);else{let i=t.columns??Object.keys(r.fields).filter(o=>o!==r.lineKinds?.field&&o!==r.sequenceField);for(let o of Object.keys(t.optionalColumns))i.includes(o)||this.report(`${n}.optionalColumns.${o}`,`"${o}" is not a column of "${t.field}"`)}!r||!t.columns||(r.type==="one2many"?t.columns.forEach((i,o)=>{Et(r.fields,i)||this.report(`${n}.columns[${o}]`,`"${i}" is not a field of the lines of "${t.field}"`)}):r.type!=="many2many"&&this.report(`${n}.columns`,`columns only apply to one2many and many2many fields; "${t.field}" is a ${r.type}`))}};var Rt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Wo=["sheet","sections","tabs","wizard"];function rn(e){if(!Rt(e))return{ok:!1,issues:[{path:"(page)",message:"a page is a JSON object"}]};let t=[],n=(d,l)=>t.push({path:d,message:l});e.fieldia!=="0.1"&&n("fieldia",`this build reads format ${"0.1"}`),(typeof e.id!="string"||!e.id)&&n("id","a page needs an id");let r=e.data;(!Rt(r)||!(r.kind==="responses"||r.kind==="record"&&typeof r.model=="string"&&r.model))&&n("data",'data is { "kind": "record", "model": \u2026 } or { "kind": "responses" }');let i=e.fields;if(!Rt(i))n("fields","fields is an object of field definitions, by name");else for(let[d,l]of Object.entries(i))(!Rt(l)||!Zt.includes(l.type)||typeof l.label!="string")&&n(`fields.${d}`,"a field needs a type Fieldia knows and a label");let o=e.layout,a=Rt(o)&&o.type==="list";if((!Rt(o)||(a?!Array.isArray(o.columns):!Wo.includes(o.type)||!Array.isArray(o.children)))&&n("layout","the layout is a sheet, sections, tabs or wizard, with children, or a list with columns"),t.length)return{ok:!1,issues:t};let s=e;try{let d=new nn(s).run();return d.length?{ok:!1,issues:d}:{ok:!0,page:s}}catch(d){return{ok:!1,issues:[{path:"(page)",message:`a part of this page cannot be read: ${d.message}`}]}}}var zo=new Set(["title","description","label","help","placeholder","message","text","confirm","alt","caption"]),Ho=new Set(["lineKinds","filter","default","data","translations"]);function on(e,t,n,r,i=!1){if(typeof e=="string")return t!==null&&(t.endsWith("Label")||!i&&zo.has(t))?n(e):e;if(Array.isArray(e))return e.map(a=>on(a,null,n,r,i));if(e===null||typeof e!="object")return e;r?.(e);let o={};for(let[a,s]of Object.entries(e))o[a]=Ho.has(a)?s:on(s,a,n,r,i||a==="options"&&!Array.isArray(s));return o}function Pt(e,t){return on(e,null,t)}function Hr(e){let t=new Set,n=e.fields,r=(i,o=null)=>on(i,o,a=>(a.trim()&&t.add(a),a),a=>{a.type==="wizard"&&r(a.children);let s=a.type==="field"?n[a.field]:void 0;if(s){for(let[d,l]of[[a,"label"],[s,"label"],[a,"placeholder"],[a,"help"],[s,"help"]])r(d[l],l);r(s)}});return r({title:e.title,description:e.description,layout:e.layout}),r(e),[...t]}function an(e,t){let n=e.translations?.[t]??e.translations?.[t.split("-")[0]];return n?Pt(e,r=>n[r]??r):e}function sn(e){let[t,...n]=e.toLowerCase().split("-"),r=n.find(i=>i.length===4&&!/\d/.test(i));return r?/^(arab|hebr|syrc|thaa|nkoo|adlm|rohg)$/.test(r):/^(ar|he|iw|fa|ur|ps|sd|yi|dv|ckb|ug|ks|syr|prs|pnb|azb)$/.test(t)}function Br(e,t){if(e===void 0)return!1;if(typeof e=="boolean")return e;if(e==="1"||e==="True"||e==="true")return!0;if(e==="0"||e==="False"||e==="false"||e==="")return!1;try{let n=yt(e);if(n.length===0)return!1;let i=new rt(n).parse(),o=Ye(i,t);return Pe(o)}catch{return!1}}function jr(e){if(e===void 0||typeof e=="boolean"||e==="")return!0;try{let t=yt(e);return t.length===0||new rt(t).parse(),!0}catch{return!1}}var qr={};var Bo={required:"{label} is required",maxLength:"Maximum {max} characters allowed",pattern:"{label} is not in the expected format",text:"{label} must be text",number:"{label} must be a number",integer:"{label} must be a whole number",min:"{label} must be at least {min}",max:"{label} must be at most {max}",decimals:"Maximum {digits} decimal places allowed",boolean:"{label} must be yes or no",dateFormat:"Invalid date format (expected YYYY-MM-DD)",dateInvalid:"Invalid date (check month/day values)",datetimeFormat:"Invalid date and time format (expected YYYY-MM-DDTHH:MM:SS)",datetimeInvalid:"Invalid date and time (check the values)",choice:"Must be one of: {options}",choiceOrOther:"Must be one of: {options}, or an answer of its own",matrix:"{label} takes an answer for each row",matrixRow:"Rows are: {rows}",matrixRows:"Answer every row of {label}",choices:"{label} must be a list of choices",record:"{label} must be a record",records:"{label} must be a list of records",reference:"{label} must point to {aModels}",file:"{label} must be a file",fileSize:"{label} is larger than {size}",fileType:"{label} must be {aTypes} file",minFiles:"Add at least {min} files to {label}",maxFiles:"Too many files for {label}: at most {max}",minLength:"{label} must be at least {min} characters",endsWith:"{label} must end with {ending}",atLeast:"Choose at least {min} for {label}",atMost:"Choose at most {max} for {label}",datePast:"{label} must be in the past",dateFuture:"{label} must be in the future",holds:"{label} does not agree with the other answers",or:"or",tick:"Tick this box to go on",email:"Enter an email address, like name@example.com",url:"Enter a web address, like example.com",phone:"Enter a phone number, like +20 100 123 4567",time:"Enter a time, like 14:30",before:"{label} can\u2019t be before {min}",after:"{label} can\u2019t be after {max}",weekday:"{label} can\u2019t be on a {days}",minLines:"Add at least {min} to {label}",maxLines:"Too many in {label}: at most {max}",addressParts:"Street address|Address line 2|City|State or region|Postcode|Country",locale:"en"},De={en:Bo,...qr};function ye(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n)}function ht(e,t=gt(new Date)){let n=/^today([+-]\d+)?$/.exec(e);if(!n)return e;let[r,i,o]=t.split("-").map(Number);return new Date(Date.UTC(r,i-1,o+Number(n[1]??0))).toISOString().slice(0,10)}var Ur=(e,t,n)=>new Intl.DateTimeFormat(t.locale,{...e,timeZone:"UTC",numberingSystem:"latn"}).format(n);function Un(e,t,n,r){if(e.type!=="date"&&e.type!=="datetime")return;let i=e.type==="date"?t:gt(new Date(t)),o=(h,f)=>ye(r[h],{label:e.label,min:f,max:f,days:f}),a=h=>Ur({day:"numeric",month:"long",year:"numeric"},r,Date.parse(h)),s=e.min&&ht(e.min,n),d=e.max&&ht(e.max,n);if(s&&i<s)return o("before",a(s));if(d&&i>d)return o("after",a(d));let l=e.days;if(l&&!l.includes(new Date(Date.parse(i)).getUTCDay()||7)){let h=[1,2,3,4,5,6,7].filter(f=>!l.includes(f)).map(f=>Ur({weekday:"long"},r,Date.UTC(2024,0,f)));return o("weekday",h.length>1?`${h.slice(0,-1).join(", ")} ${r.or} ${h[h.length-1]}`:h[0])}}function Dt(e){switch(e.type){case"boolean":return!1;case"many2many":case"one2many":return[];case"selection":case"binary":case"image":return e.multiple?[]:null;default:return null}}function Ft(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=i.default;n[r]=o===void 0?Dt(i):i.type==="date"&&typeof o=="string"&&o.startsWith("today")?ht(o,t):ve(o)}return n}function Xe(e,t){return t==null?!0:typeof t=="string"?t.trim()==="":Array.isArray(t)?t.length===0:e.type==="matrix"&&typeof t=="object"?Object.values(t).every(n=>n==null||Array.isArray(n)&&!n.length):!1}function _e(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=t[r];n[r]=o?jo(o,i):i}return n}function jo(e,t){if(t==null)return null;switch(e.type){case"many2one":return t.id;case"many2many":return t.map(n=>n.id);case"one2many":return t.map(n=>n.key);case"reference":{let n=t;return`${n.model},${n.id}`}case"binary":case"image":return Array.isArray(t)?t.map(n=>n.name):t.name;default:return t}}function ze(e,t){let n=e.lineKinds;if(!n)return null;let r=t[n.field];return r===(n.section??"section")?"section":r===(n.note??"note")?"note":null}function dn(e,t){return JSON.stringify(e??null)===JSON.stringify(t??null)}function ve(e){return e===void 0?e:JSON.parse(JSON.stringify(e))}function At(e,t,n,r=De.en,i){let o=e.label||"This field",a=(s,d={})=>ye(r[s],{label:o,...d});if(Xe(e,t))return n?a("required"):void 0;if(e.type==="matrix")return qo(e,t,n,a);switch(e.type){case"char":case"text":case"html":return typeof t!="string"?a("text"):(e.type==="char"||e.type==="text")&&e.size!==void 0&&t.length>e.size?a("maxLength",{max:e.size}):e.type==="char"&&e.pattern!==void 0&&!new RegExp(e.pattern).test(t)?a("pattern"):void 0;case"integer":case"float":case"monetary":return typeof t!="number"||!Number.isFinite(t)?a("number"):e.type==="integer"&&!Number.isInteger(t)?a("integer"):e.min!==void 0&&t<e.min?a("min",{min:e.min}):e.max!==void 0&&t>e.max?a("max",{max:e.max}):e.type!=="integer"&&e.digits&&Uo(t)>e.digits[1]?a("decimals",{digits:e.digits[1]}):void 0;case"boolean":return typeof t=="boolean"?void 0:a("boolean");case"date":return _o(t,a)??Un(e,t,i,r);case"datetime":return Jo(t,a)??Un(e,t,i,r);case"selection":{if(e.optionsFrom)return;let s=new Set(e.options.map(h=>h.value)),d=a(e.other?"choiceOrOther":"choice",{options:e.options.map(h=>h.label).join(", ")}),l=h=>(e.other===!0||e.ownAnswers===!0)&&typeof h=="string"&&h.trim()!==""&&!s.has(h);return e.multiple?Array.isArray(t)?(t.filter(f=>!s.has(f)).length<=1||e.ownAnswers)&&t.every(f=>s.has(f)||l(f))?void 0:d:a("choices"):s.has(t)||l(t)?void 0:d}case"many2one":return _n(t)?void 0:a("record");case"many2many":return Array.isArray(t)&&t.every(_n)?void 0:a("records");case"reference":{let s=t;if(!_n(t)||typeof s.model!="string")return a("record");if(!e.models.some(d=>d.value===s.model)){let d=Gr(e.models.map(l=>l.label),r.or);return a("reference",{models:d,aModels:Jr(d)})}return}case"binary":case"image":return Ko(e,t,a,r);default:return}}function qo(e,t,n,r){if(t===null||typeof t!="object"||Array.isArray(t))return r("matrix");let i=new Set(e.rows.map(d=>String(d.value))),o=new Set(e.columns.map(d=>d.value)),a=r("choice",{options:e.columns.map(d=>d.label).join(", ")});for(let[d,l]of Object.entries(t)){if(!i.has(d))return r("matrixRow",{rows:e.rows.map(f=>f.label).join(", ")});let h=e.multiple&&Array.isArray(l)?l:[l];if(!e.multiple&&Array.isArray(l)||h.some(f=>f!=null&&!o.has(f)))return a}let s=d=>{let l=t[d];return l!=null&&!(Array.isArray(l)&&!l.length)};if(n&&e.rows.some(d=>!s(String(d.value))))return r("matrixRows")}function Uo(e){let t=String(e);if(t.includes("e-"))return Number(t.split("e-")[1]);let n=t.indexOf(".");return n===-1?0:t.length-n-1}function _n(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&(typeof e.id=="number"||typeof e.id=="string")&&typeof e.label=="string"}function _o(e,t){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return t("dateFormat");let[n,r,i]=e.split("-").map(Number);return _r(n,r,i)?void 0:t("dateInvalid")}var Go=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2})?$/;function Jo(e,t){let n=typeof e=="string"?Go.exec(e):null;if(!n)return t("datetimeFormat");let[r,i,o,a,s,d]=n.slice(1).map(l=>Number(l??0));return _r(r,i,o)&&a<24&&s<60&&d<60?void 0:t("datetimeInvalid")}function _r(e,t,n){if(t<1||t>12||n<1)return!1;let r=[31,e%4===0&&(e%100!==0||e%400===0)?29:28,31,30,31,30,31,31,30,31,30,31];return n<=r[t-1]}function Ko(e,t,n,r){let i=e.multiple?Array.isArray(t)?t:[t]:[t];if(e.multiple&&e.minFiles!==void 0&&i.length<e.minFiles)return n("minFiles",{min:e.minFiles});if(e.multiple&&e.maxFiles!==void 0&&i.length>e.maxFiles)return n("maxFiles",{max:e.maxFiles});for(let o of i){if(!Yo(o))return n("file");let a=Wt(e,o,r,e.multiple?o.name:e.label||"This field");if(a)return a}}function Wt(e,t,n=De.en,r=t.name){if(e.maxSize!==void 0&&t.size>e.maxSize)return ye(n.fileSize,{label:r,size:it(e.maxSize)});let i=e.type==="image"?["image/*"]:e.accept;if(i&&!Xo(i,t.type)){let o=zt(i,n.or);return ye(n.fileType,{label:r,types:o,aTypes:Jr(o)})}}function Yo(e){let t=e;return e!==null&&typeof e=="object"&&typeof t.name=="string"&&typeof t.size=="number"}function Xo(e,t){return e.some(n=>n.endsWith("/*")?t.startsWith(n.slice(0,-1)):n===t)}var Zo="pdf PDF,msword DOC,wordprocessingml DOCX,opendocument.text ODT,plain TXT,ms-excel XLS,spreadsheetml XLSX,opendocument.spreadsheet ODS,csv CSV,ms-powerpoint PPT,presentationml PPTX,opendocument.presentation ODP".split(",").map(e=>e.split(" "));function Qo(e){if(e.endsWith("/*"))return e.slice(0,-2);let t=e.split("/")[1]??e;return Zo.find(([n])=>t.includes(n))?.[1]??t.toUpperCase()}function zt(e,t){return Gr([...new Set(e.map(Qo))],t)}function Gr(e,t){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`}function Jr(e){return/^[aeiou]/i.test(e)?`an ${e}`:`a ${e}`}function it(e){let t=["bytes","KB","MB","GB"],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${Number(n.toFixed(1))} ${t[r]}`}var Kr=e=>Math.round(e*1e9)/1e9,Yr=(e,t)=>e.find(n=>n.value===t)?.score??0,Xr=e=>e.reduce((t,n)=>Math.max(t,n.score??0),0),Zr=e=>e.reduce((t,n)=>t+Math.max(0,n.score??0),0),Qr=(e,t,n)=>n?Array.isArray(t)?t.reduce((r,i)=>r+Yr(e,i),0):0:Yr(e,t);function ei(e,t){let n=0,r=0,i=!1;for(let[o,a]of Object.entries(e.fields))if(a.type==="selection"&&a.options.some(s=>s.score!==void 0)){i=!0;let s=a.multiple===!0;n+=Qr(a.options,t[o],s),r+=s?Zr(a.options):Xr(a.options)}else if(a.type==="matrix"&&a.columns.some(s=>s.score!==void 0)){i=!0;let s=a.multiple===!0,d=t[o],l=d&&typeof d=="object"&&!Array.isArray(d)?d:{};for(let h of a.rows)n+=Qr(a.columns,l[String(h.value)],s),r+=s?Zr(a.columns):Xr(a.columns)}return i?{score:Kr(n),max:Kr(r)}:null}function ti(e){return Object.assign(new Error(e.message),{problem:e})}function ln(e){let t=e?.problem;if(t&&typeof t.kind=="string")return t;let n=e instanceof Error?e.message:String(e);return e instanceof TypeError&&/fetch|network|load failed/i.test(n)?{kind:"network",message:n}:{kind:"other",message:n}}function Tt(e,t){return t.every(n=>Gn(e,n))}function Gn(e,t){return"any"in t?t.any.some(n=>Gn(e,n)):"all"in t?t.all.every(n=>Gn(e,n)):ea(e,t)}function xt(e){return e!=null&&e!==""&&e!==!1&&!(Array.isArray(e)&&!e.length)}function ea(e,t){let n=e[t.field],r=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"id"in n?n.id:n,i=t.value,o=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"label"in n?String(n.label):String(r??"");switch(t.op){case"=":return r===i;case"!=":return r!==i;case"<":return xt(r)&&r<i;case">":return xt(r)&&r>i;case"<=":return xt(r)&&r<=i;case">=":return xt(r)&&r>=i;case"in":return Array.isArray(i)&&i.includes(r);case"not in":return Array.isArray(i)&&!i.includes(r);case"like":return o.includes(String(i));case"ilike":return o.toLowerCase().includes(String(i).toLowerCase());case"startswith":return o.toLowerCase().startsWith(String(i).toLowerCase());case"endswith":return o.toLowerCase().endsWith(String(i).toLowerCase());case"set":return xt(n);case"notset":return!xt(n);case"between":{if(!xt(r)||!Array.isArray(i))return!1;let[a,s]=i;return r>=a&&r<=s}}}var ni=new Set(["char","text","html"]),ri=new Set(["integer","float","monetary"]),ta=new Set(["many2one","many2many"]);function cn(e,t,n,r={searchFor:"Search {field} for: {text}"}){let i=e.trim();if(!i)return[];let o=[];for(let s of n.searchFields??n.columns){let d=t.fields[s];if(!d)continue;let l=(h,f,b,p)=>o.push({field:s,fieldLabel:d.label,op:h,value:f,valueLabel:b,label:p??ye(r.searchFor,{field:d.label,text:i})});if(ni.has(d.type)||ta.has(d.type))l("ilike",i,i);else if(d.type==="selection"){let h=i.toLowerCase();for(let f of d.options)f.label.toLowerCase().includes(h)&&l("=",f.value,f.label,`${d.label}: ${f.label}`)}else if(ri.has(d.type)){let h=Number(i.replace(/[\s,]/g,""));i&&Number.isFinite(h)&&l("=",h,i)}}let a=s=>{let d=t.fields[s.field]?.type??"";return ni.has(d)?0:d==="selection"?1:ri.has(d)?2:3};return o.map((s,d)=>({s,i:d})).sort((s,d)=>a(s.s)-a(d.s)||s.i-d.i).map(({s})=>s)}function fn(e,t){let n=[];for(let r of e)if(r.kind==="field"){let i=r.values.map(o=>({field:r.field,op:o.op,value:o.value}));n.push(i.length===1?i[0]:{any:i})}else if(r.kind==="filters"){let i=r.ids.map(o=>t.filters?.find(a=>a.id===o)?.filter??[]).filter(o=>o.length);i.length===1?n.push(...i[0]):i.length>1&&n.push({any:i.map(o=>o.length===1?o[0]:{all:o})})}else r.kind==="custom"&&n.push(...r.filter);return n}function un(e){return e.find(t=>t.kind==="groupBy")?.fields??[]}var Ht={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function pn(e,t=Ht){return new Promise(n=>{t.setTimeout(n,e)})}function ii(e={}){let t=ve(e.records??{}),n=[],r=[],i=1e3,o=()=>e.delayMs?pn(e.delayMs,e.scheduler):Promise.resolve(),a=p=>t[p]??(t[p]={}),s=(p,c)=>{let u=a(p)[String(c)]?.[e.labelField?.[p]??"name"];return typeof u=="string"?u:String(c)},d=p=>Math.max(0,...Object.keys(a(p)).map(Number).filter(Number.isFinite))+1,l=p=>Number.isFinite(Number(p))?Number(p):p;function h(p,c){let u=[...p];for(let g of c)g.op==="create"?u.push({key:g.key,id:++i,values:ve(g.values)}):g.op==="update"?u=u.map(y=>y.id===g.id?{...y,values:{...y.values,...ve(g.values)}}:y):u=u.filter(y=>y.id!==g.id);return u}function f(p,c,u){let g=[...p],y=v=>({id:v,label:s(u,v)});for(let v of c)v.op==="link"&&!g.some(k=>k.id===v.id)?g.push(y(v.id)):v.op==="unlink"?g=g.filter(k=>k.id!==v.id):v.op==="set"?g=v.ids.map(y):v.op==="clear"&&(g=[]);return g}function b(p,c){let u=p[c];return u&&"relation"in u?u.relation:c}return{records:t,responses:n,calls:r,async load(p){r.push({method:"load",request:p}),await o();let c=a(p.model)[String(p.id)];if(!c)throw new Error(`No ${p.model} record with id ${p.id}`);return ve(c)},async save(p){r.push({method:"save",request:p}),await o();let c=p.id??d(p.model),u={...a(p.model)[String(c)]??{},...ve(p.changes.values)};for(let[g,y]of Object.entries(p.changes.lines))u[g]=h(u[g]??[],y);for(let[g,y]of Object.entries(p.changes.links))u[g]=f(u[g]??[],y,b(p.fields,g));return a(p.model)[String(c)]=u,{id:c,values:ve(u)}},async onchange(p){r.push({method:"onchange",request:p}),await o();let c=e.onchange?.[p.model]?.[p.changed],u=e.warnings?.[p.model]?.[p.changed],g=c?{values:c(ve(p.values))}:{},y=u?.(ve(p.values));return y?{...g,warning:y}:g},async search(p){r.push({method:"search",request:p}),await o();let c=p.query.trim().toLowerCase();return Object.entries(a(p.model)).filter(([,u])=>Tt(u,p.filter??[])).map(([u])=>({id:l(u),label:s(p.model,l(u))})).filter(u=>u.label.toLowerCase().includes(c)).slice(0,p.limit??8)},async list(p){r.push({method:"list",request:p}),await o();let c=Object.entries(a(p.model)).filter(([,u])=>Tt(u,p.filter)).map(([u,g])=>({id:l(u),values:g}));return c.sort((u,g)=>{for(let y of p.sort){let v=na(u.values[y.field],g.values[y.field]);if(v.empty)return v.result;if(v.result)return y.desc?-v.result:v.result}return 0}),{total:c.length,records:c.slice(p.offset,p.offset+p.limit).map(({id:u,values:g})=>({id:u,values:Object.fromEntries(p.fields.map(y=>[y,ve(g[y]??null)]))}))}},async groups(p){r.push({method:"groups",request:p}),await o();let c=new Map;for(let u of Object.values(a(p.model))){if(!Tt(u,p.filter))continue;let g=u[p.field]??null,y=g!==null&&typeof g=="object"&&!Array.isArray(g)&&"id"in g?g:null,v=y?y.id:g,k=JSON.stringify(v),m=c.get(k)??{value:v,label:y?y.label:g===null||g===""?"":String(g),count:0};m.count++,c.set(k,m)}return[...c.values()].sort((u,g)=>u.value===null==(g.value===null)?u.label.localeCompare(g.label):u.value===null?1:-1)},async create(p){r.push({method:"create",request:p}),await o();let c=a(p.model),u=Object.keys(c).reduce((g,y)=>Math.max(g,Number(y)||0),0)+1;return c[String(u)]={name:p.name},{id:u,label:p.name}},async submit(p){return r.push({method:"submit",request:p}),await o(),n.push(ve(p)),{id:n.length}},async options(p){r.push({method:"options",request:p}),await o();let c=e.lists?.[p.list];if(!c)throw new Error(`No list "${p.list}"`);return ve(typeof c=="function"?await c(p.values):c)}}}function na(e,t){let n=a=>a==null||a==="";if(n(e)||n(t))return{result:n(e)===n(t)?0:n(e)?1:-1,empty:n(e)!==n(t)};let r=a=>typeof a=="object"&&a!==null&&"label"in a?a.label:a,[i,o]=[r(e),r(t)];return typeof i=="number"&&typeof o=="number"?{result:i-o,empty:!1}:{result:String(i).localeCompare(String(o)),empty:!1}}var mn=["street","line2","city","region","postcode","country"];function oi(e,t,n,r){let i=t.options??{},o=t.label??e.label;if(e.type==="one2many"&&Array.isArray(n)&&n.length){if(typeof i.min=="number"&&n.length<i.min)return ye(r.minLines,{label:o,min:i.min});if(typeof i.max=="number"&&n.length>i.max)return ye(r.maxLines,{label:o,max:i.max})}let a=i.requiredParts;if(t.widget!=="address"||!Array.isArray(a)||!n||typeof n!="object"||Array.isArray(n))return;let s=Array.isArray(i.parts)?i.parts:mn,d=n,l=mn.findIndex(h=>a.includes(h)&&s.includes(h)&&!String(d[h]??"").trim());return l<0?void 0:ye(r.required,{label:r.addressParts.split("|")[l]})}var ra={email:/^[^@\s]+@[^@\s]+\.[^@\s]+$/,url:/^(https?:\/\/)?([\p{L}\p{N}-]+\.)+\p{L}{2,}(:\d+)?([/?#]\S*)?$/iu,phone:/^\+?[\p{Nd}\s.()-]+$/u,time:/^([01]\d|2[0-3]):[0-5]\d$/};function Jn(e,t,n,r){let i=t.widget??"";if(e.type!=="char")return oi(e,t,n,r);if(typeof n!="string"||!n.trim())return;let o=n.trim(),a=t.options??{},s=t.label??e.label,d=ra[i],l=o.match(/\p{Nd}/gu)?.length??0;if(d&&(!d.test(o)||i==="phone"&&(l<7||l>15)))return r[i];if(i==="time"){if(typeof a.min=="string"&&o<a.min)return ye(r.before,{label:s,min:a.min});if(typeof a.max=="string"&&o>a.max)return ye(r.after,{label:s,max:a.max})}if(i==="tags"&&typeof a.max=="number"&&o.split(typeof a.separator=="string"&&a.separator?a.separator:",").filter(f=>f.trim()).length>a.max)return ye(r.atMost,{label:s,max:a.max})}function Nt(e,t,n){let r=new Map;return{today:n,lines(i){let o=t[i];if(o?.type!=="one2many")return;let a=r.get(i);return a||(a=(e[i]??[]).filter(d=>ze(o,d.values)===null).map(d=>_e(d.values,o.fields)),r.set(i,a)),a}}}function ai(e){let t=new Map;for(let[r,i]of Object.entries(e))i.compute!==void 0&&t.set(r,St(i.compute));let{order:n}=tn(new Map([...t].map(([r,i])=>[r,i.fields])));return n.map(r=>[r,t.get(r),e[r]])}function Kn(e,t){if(e.type==="boolean")return Pe(t);if(t==null)return null;switch(e.type){case"integer":return Ie(t)?It(t,0):null;case"float":case"monetary":return Ie(t)?e.digits?It(t,e.digits[1]):t:null;case"char":case"text":case"html":return typeof t=="string"?t:Ie(t)?String(t):null;case"date":case"datetime":return typeof t=="string"?t:null;default:return t}}function si(e,t){let n=ai(e.fields),r=new Map;for(let[s,d]of Object.entries(e.fields)){if(d.type!=="one2many")continue;let l=ai(d.fields);l.length&&r.set(s,{def:d,steps:l})}let i={today:t};function o(s,d,l,h){let f=s,b=_e(s,l);for(let[p,c,u]of d){let g=Kn(u,c.evaluate(b,h));dn(g,f[p])||(f={...f,[p]:g},Object.assign(b,_e({[p]:g},l)))}return f}function a(s,d){let l=r.get(s);return!l||ze(l.def,d)!==null?d:o(d,l.steps,l.def.fields,i)}return{line:a,apply(s){let d=s;for(let l of r.keys()){let h=d[l];if(!Array.isArray(h))continue;let f=!1,b=h.map(p=>{let c=a(l,p.values);return c===p.values?p:(f=!0,{...p,values:c})});f&&(d={...d,[l]:b})}return n.length?o(d,n,e.fields,Nt(d,e.fields,t)):d}}}function di(e){return Object.entries(e).flatMap(([t,n])=>(n.setWhen??[]).map((r,i)=>({key:`${t}#${i}`,name:t,def:n,when:qe(r.when),value:St(r.value)})))}var ia={has:()=>!0};function li(e,t){let n=di(e.fields),r=new Map;for(let[s,d]of Object.entries(e.fields)){if(d.type!=="one2many")continue;let l=di(d.fields);l.length&&r.set(s,{def:d,rules:l})}let i={today:t};function o(s,d,l,h,f,b,p){let c=s,u=_e(s,l);for(let g of d){if(!g.when.evaluate(u,h))continue;let y=f+g.key;if(p.add(y),b.has(y))continue;let v=Kn(g.def,g.value.evaluate(u,h));dn(v,c[g.name])||(c={...c,[g.name]:v})}return c}function a(s,d){let l=new Set,h=n.length?o(s,n,e.fields,Nt(s,e.fields,t),"",d,l):s;for(let[f,{def:b,rules:p}]of r){let c=s[f];if(!Array.isArray(c))continue;let u=!1,g=c.map(y=>{if(ze(b,y.values)!==null)return y;let v=o(y.values,p,b.fields,i,`${f}.${y.key}.`,d,l);return v===y.values?y:(u=!0,{...y,values:v})});u&&(h={...h,[f]:g})}return{values:h,holding:l}}return{apply:a,holding:s=>a(s,ia).holding}}function ci(e){return(e??[]).map(t=>({rule:t,when:qe(t.when??!0),pattern:t.pattern===void 0?null:new RegExp(`^(?:${t.pattern})$`),holds:t.holds===void 0?null:qe(t.holds)}))}function fi(e,t,n,r,i){let o={};if(!r.length||Xe(e,n))return o;for(let a of r){let s=a.rule.level??"error";if(o[s]!==void 0||!a.when.evaluate(i.context,i.env))continue;let d=oa(a,e,n,i.now)??sa(a,i);d&&(o[s]=a.rule.message??ye(i.messages[d.say],{label:t,...d.values}))}return o}function oa({rule:e,pattern:t},n,r,i){let o=typeof r=="string"?r:null;if(o!==null&&e.minLength!==void 0&&o.length<e.minLength)return{say:"minLength",values:{min:e.minLength}};if(o!==null&&e.maxLength!==void 0&&o.length>e.maxLength)return{say:"maxLength",values:{max:e.maxLength}};if(t&&(o!==null||Ie(r))&&!t.test(String(r)))return{say:"pattern"};if(o!==null&&e.endsWith!==void 0&&!o.trim().toLowerCase().endsWith(e.endsWith.toLowerCase()))return{say:"endsWith",values:{ending:e.endsWith}};if(Ie(r)&&e.min!==void 0&&r<e.min)return{say:"min",values:{min:e.min}};if(Ie(r)&&e.max!==void 0&&r>e.max)return{say:"max",values:{max:e.max}};let a=Array.isArray(r)?r.length:null;if(a!==null&&e.atLeast!==void 0&&a<e.atLeast)return{say:"atLeast",values:{min:e.atLeast}};if(a!==null&&e.atMost!==void 0&&a>e.atMost)return{say:"atMost",values:{max:e.atMost}};if(o!==null&&e.date!==void 0){let s=da(n,o,i);if(e.date==="past"&&s>=0)return{say:"datePast"};if(e.date==="future"&&s<=0)return{say:"dateFuture"}}}var aa=e=>e==null||typeof e=="string"&&!e.trim()||Array.isArray(e)&&!e.length;function sa({holds:e},t){if(!(!e||e.fields.some(n=>aa(t.context[n]))))return e.evaluate(t.context,t.env)?void 0:{say:"holds"}}function da(e,t,n){if(e.type==="datetime")return Math.sign(Date.parse(t)-n.getTime());let r=gt(n);return t<r?-1:t>r?1:0}function gn(e){let{page:t}=e,n=e.scheduler??Ht,r=e.messages??De.en,i=fa(t.layout),o=new Map;for(let w of i.values()){let A=w.source.validate;w.kind==="field"&&A&&o.set(w.id,ci(A))}let a=[...o.values()].some(w=>w.some(A=>A.rule.level==="warning")),s=t.layout.type==="wizard"?t.layout.children.map(w=>w.id):[],d=()=>`fieldia:draft:${t.id}:${c.recordId??"new"}`,l=()=>gt(e.now?.()??new Date),h=si(t,l),f=li(t,l),b=h.apply({...Ft(t.fields,l()),...ve(e.values??{})}),p=f.holding(b),c={status:e.recordId!=null?"idle":"ready",recordId:e.recordId??null,values:ve(b),errors:{},dirty:[],warnings:{},warning:null,warningField:null,error:null,draft:null,step:s[0]??null,skipped:[],saveProblem:null,choices:{}},u={},g=0,y=0,v=null,k=null,m=new Set,L=new Set,E=null,F={};function R(w){let A=c.values;c={...c,...w};for(let V of[...L])V(c);if(c.values!==A)for(let V in c.choices)B(V).dependsOn?.some(M=>A[M]!==c.values[M])&&$(V)}let B=w=>t.fields[w].optionsFrom;function $(w){let{list:A}=B(w),V=F[w]=(F[w]??0)+1,M=ae=>V===F[w]&&R({choices:{...c.choices,[w]:ae}}),Y=c.choices[w]?.options??null;M({options:Y,loading:!0});let ie=e.dataSource;C((ie?.options?ie.options({list:A,values:ve(c.values)}):Promise.reject(new Error(`No list "${A}"`))).then(ae=>M({options:ae}),ae=>M({options:Y,error:ae.message??String(ae)})))}function q(w){let A=t.fields[w],V=c.choices[w]?.options;return A.type==="selection"&&A.optionsFrom&&V?{...A,options:V,optionsFrom:void 0}:A}function C(w){m.add(w);let A=()=>m.delete(w);return w.then(A,A),w}function H(){if(E?.values!==c.values){let w=c.values;E={values:w,context:_e(w,t.fields),env:Nt(w,t.fields,l)}}return E}let S=()=>H().context;function P(w){let A=t.fields[w];if(!A)throw new Error(`The page has no field "${w}"`);return A}function X(w){return Object.keys(t.fields).filter(A=>JSON.stringify(w[A]??null)!==JSON.stringify(b[A]??null))}function z(w){let A=i.get(w);if(!A)throw new Error(`The page has no element "${w}"`);let{context:V,env:M}=H(),Y=A.invisible.evaluate(V,M);for(let we=A.parent;!Y&&we;we=i.get(we)?.parent??null)Y=i.get(we)?.invisible.evaluate(V,M)??!1;let ie=A.readonly.evaluate(V,M);for(let we=A.parent;!ie&&we;we=i.get(we)?.parent??null)ie=i.get(we)?.readonly.evaluate(V,M)??!1;let ae=A.field?t.fields[A.field]:void 0;return{invisible:Y,readonly:ie||ae!==void 0&&ui(ae),required:A.required.evaluate(V,M)||ae?.required===!0}}function K(w){let A=M=>{if(!w)return!0;for(let Y=M.id;Y;Y=i.get(Y)?.parent??null)if(Y===w)return!0;return!1},V=M=>{if(w||!c.skipped.length)return!1;for(let Y=M.id;Y;Y=i.get(Y)?.parent??null)if(c.skipped.includes(Y))return!0;return!1};return[...i.values()].filter(M=>M.kind==="field"&&A(M)&&!V(M)&&!z(M.id).invisible)}function T(w){let A=o.get(w.id);if(!A)return{};let V=w.field,M=t.fields[V],Y=w.source.label??M.label,{context:ie,env:ae}=H();return fi(M,Y,c.values[V],A,{context:ie,env:ae,now:e.now?.()??new Date,messages:r})}function O(w){let A=w.field;return w.source.widget==="tick"&&t.fields[A].type==="boolean"&&c.values[A]!==!0&&z(w.id).required?r.tick:void 0}function D(w){let A=w.field;return O(w)??Jn(t.fields[A],w.source,c.values[A],r)??At(q(A),c.values[A],z(w.id).required,r,l())??T(w).error}function j(){var A;let w={};if(!a)return w;for(let V of K()){let M=o.has(V.id)?T(V).warning:void 0;M&&(w[A=V.field]??(w[A]=M))}return w}function I(w,A){let V=c;c={...c,values:w};try{return A()}finally{c=V}}function N(w){let A={};for(let V of K(w)){let M=V.field;if(A[M])continue;let Y=t.fields[M],ie=D(V);if(ie&&(A[M]=ie),Y.type==="one2many")for(let ae of c.values[M]??[]){let we=ze(Y,ae.values);for(let[Oe,Be]of Object.entries(Y.fields)){if(we&&Oe!==Y.lineKinds?.text)continue;let xe=At(Be,ae.values[Oe],Be.required===!0,r,l());xe&&(A[`${M}.${ae.key}.${Oe}`]=xe)}}}return A}function W(w){let A=h.apply(w);for(let V=0;V<8;V++){let M=f.apply(A,p);if(p=M.holding,M.values===A)break;A=h.apply(M.values)}return A}function J(w){let A=h.apply(w);return p=f.holding(A),A}function Z(w,A={},V=!1){let M=V?J(w):W(w),Y=Object.keys(c.errors).length?ue(M):c.errors;R({values:M,dirty:X(M),errors:Y,warnings:I(M,j),...A})}function ue(w){let A=I(w,()=>N(c.step??void 0)),V={};for(let M of Object.keys(c.errors))A[M]&&(V[M]=A[M]);for(let[M,Y]of Object.entries(u))JSON.stringify(w[M]??null)===Y.value?V[M]??(V[M]=Y.message):delete u[M];return V}function re(){let w=e.drafts;w&&(v!==null&&n.clearTimeout(v),v=n.setTimeout(()=>{v=null,w.store.setItem(d(),JSON.stringify({savedAt:new Date().toISOString(),values:c.values}))},w.delayMs??400))}function de(){v!==null&&n.clearTimeout(v),v=null,e.drafts?.store.removeItem(d())}function ce(){let w=e.drafts;if(!w)return;let A=w.store.getItem(d());if(!A)return;let V;try{V=JSON.parse(A)}catch{w.store.removeItem(d());return}w.restore==="auto"?Z({...c.values,...V.values},{draft:null},!0):R({draft:{savedAt:V.savedAt}})}function G(){let w=e.autosave;!w||t.data.kind!=="record"||(k!==null&&n.clearTimeout(k),k=n.setTimeout(()=>{k=null,c.dirty.length&&Object.keys(N()).length===0&&C(be())},w.delayMs))}function ee(w){let A=e.dataSource;if(!A?.onchange||t.data.kind!=="record")return;let V=++y,M={model:t.data.model,id:c.recordId,changed:w,values:ve(c.values)};C(A.onchange(M).then(Y=>{if(V!==y)return;let ie={...c.values,...Y.values??{}};Z(ie,{warning:Y.warning??null,warningField:Y.warning?w:null})},()=>{}))}function he(w){re(),G(),ee(w)}function ge(){let w={values:{},lines:{},links:{}},A=c.recordId===null||c.recordId===void 0,V=A?Object.keys(t.fields).filter(M=>c.dirty.includes(M)||!Xe(t.fields[M],c.values[M])):c.dirty;for(let M of V){let Y=t.fields[M],ie=c.values[M],ae=A?Dt(Y):b[M];Y.type==="one2many"?w.lines[M]=la(ae??[],ie??[]):Y.type==="many2many"?w.links[M]=ca(ae??[],ie??[]):w.values[M]=ve(ie)}return w}function me(){let w={};for(let A of K()){let V=A.field;w[V]=ve(c.values[V])}return w}async function be(){let w=N();if(Object.keys(w).length)return R({errors:w}),!1;let A=e.dataSource;u={},R({status:"saving",errors:{},error:null,saveProblem:null});try{if(t.data.kind==="responses"){if(!A?.submit)throw new Error("This page has no data source to send its answers to");return await A.submit({pageId:t.id,values:me()}),de(),R({status:"saved"}),!0}if(!A?.save)throw new Error("This page has no data source to save to");let V=await A.save({model:t.data.model,id:c.recordId,fields:t.fields,changes:ge(),values:ve(c.values)});de();let M=J(V.values?{...c.values,...V.values}:c.values);return b=ve(M),R({status:"saved",recordId:V.id,values:M,dirty:[],warnings:I(M,j)}),!0}catch(V){let M=ln(V),Y=M.kind==="fields"?M.fields??{}:{};return u=Object.fromEntries(Object.entries(Y).map(([ie,ae])=>[ie,{message:ae,value:JSON.stringify(c.values[ie]??null)}])),R({status:"error",error:M.message,saveProblem:M,errors:{...Y}}),!1}}function Me(w){return!e.dataSource?.create||!w||w.readonly?null:w.type==="many2one"||w.type==="many2many"?w.relation:null}async function He(w,A,V){let M=Me(w),Y=e.dataSource;if(!M||!Y?.create)throw new Error(`"${A}" cannot make records: its data source has no create, or it is not a link`);return C(Y.create({model:M,name:V.trim()}))}async function Je(w,A,V,M,Y,ie){if(w.type!=="many2one"&&w.type!=="many2many"&&w.type!=="reference")throw new Error(`"${A}" is not a many2one, many2many or reference`);if(w.type==="reference"&&!ie)throw new Error(`Searching "${A}" needs a model`);let ae=e.dataSource;if(!ae?.search)return[];let we=xe=>"any"in xe?{any:xe.any.map(we)}:"all"in xe?{all:xe.all.map(we)}:{field:xe.field,op:xe.op,value:xe.valueFrom!==void 0?V[xe.valueFrom]??null:xe.value??null},Oe=w.type==="reference"?void 0:w.filter?.map(we),Be=w.type==="reference"?ie:w.relation;return C(ae.search({model:Be,query:M,...Oe?{filter:Oe}:{},limit:Y}))}function Ke(w){let A=P(w);if(A.type!=="one2many")throw new Error(`"${w}" is a ${A.type}, not a one2many`);return A}function ft(){return c.step?s.indexOf(c.step):-1}function ut(w){return i.get(w)?.source?.optional===!0}async function Bn(){let w=e.dataSource;if(!(c.recordId==null||t.data.kind!=="record")){if(!w?.load){R({status:"error",error:"This page has no data source to load from"});return}R({status:"loading",error:null});try{let A=await w.load({model:t.data.model,id:c.recordId,fields:t.fields});b=J({...Ft(t.fields,l()),...A}),R({status:"ready",values:ve(b),dirty:[],errors:{},warnings:I(b,j)}),ce()}catch(A){R({status:"error",error:A.message})}}}let pt={page:t,getState:()=>c,subscribe(w){return L.add(w),()=>L.delete(w)},load:()=>C(Bn()),setValue(w,A){P(w),Z({...c.values,[w]:ve(A)}),he(w)},node:z,fieldReadonly:w=>ui(P(w)),loadChoices:$,problem(w){P(w);let A=K().filter(M=>M.field===w);return A.length?A.map(O).find(Boolean)??A.map(M=>Jn(t.fields[w],M.source,c.values[w],r)).find(Boolean)??At(q(w),c.values[w],A.some(M=>z(M.id).required),r,l())??A.map(M=>T(M).error).find(M=>M!==void 0)??null:null},validate(){let w=N();return R({errors:w}),Object.keys(w).length===0},save:()=>C(be()),reset(){de(),u={},p=f.holding(b),R({values:ve(b),dirty:[],errors:{},warnings:I(b,j),warning:null,warningField:null,draft:null,step:s[0]??null,skipped:[],saveProblem:null})},changes:ge,addLine(w,A={}){let V=Ke(w),M=`new-${++g}`,Y=c.values[w]??[],ie={key:M,values:{...Ft(V.fields,l()),...ve(A)}};if(V.sequenceField&&ie.values[V.sequenceField]==null){let we=Y.map(Oe=>Oe.values[V.sequenceField]).filter(Oe=>typeof Oe=="number");ie.values[V.sequenceField]=we.length?Math.max(...we)+1:1}let ae=[...Y,ie];return Z({...c.values,[w]:ae}),he(w),M},updateLine(w,A,V,M){if(!Ke(w).fields[V])throw new Error(`The lines of "${w}" have no field "${V}"`);let ie=(c.values[w]??[]).map(ae=>ae.key===A?{...ae,values:{...ae.values,[V]:ve(M)}}:ae);Z({...c.values,[w]:ie}),he(w)},moveLine(w,A,V){let Y=Ke(w).sequenceField;if(!Y)throw new Error(`The lines of "${w}" keep no order: give the field a sequenceField`);let ie=[...c.values[w]??[]],ae=ie.findIndex(_=>_.key===A);if(ae<0)throw new Error(`"${w}" has no line "${A}"`);let we=Math.max(0,Math.min(V,ie.length-1));if(we===ae)return;let Oe=ie.map(_=>_.values[Y]),Be=Oe.every((_,Q)=>typeof _=="number"&&(Q===0||_>Oe[Q-1]));ie.splice(we,0,...ie.splice(ae,1));let xe=Math.min(ae,we),Yt=Math.max(ae,we),x=Be?Oe.slice(xe,Yt+1):[],U=ie.map((_,Q)=>{let ne=Be?Q>=xe&&Q<=Yt?x[Q-xe]:_.values[Y]:Q+1;return ne===_.values[Y]?_:{..._,values:{..._.values,[Y]:ne}}});Z({...c.values,[w]:U}),he(w)},removeLine(w,A){Ke(w);let V=(c.values[w]??[]).filter(M=>M.key!==A);Z({...c.values,[w]:V}),he(w)},async search(w,A,V=8,M={}){return Je(P(w),w,S(),A,V,M.model)},async previewLine(w,A,V){Ke(w);let M=c.values[w]??[],Y=M.find(xe=>xe.key===A);if(!Y)throw new Error(`"${w}" has no line "${A}"`);let ie=h.line(w,{...Y.values,...V}),ae=e.dataSource;if(!ae?.onchange||t.data.kind!=="record")return ie;let we=M.map(xe=>xe.key===A?{...xe,values:ie}:xe),Be=((await ae.onchange({model:t.data.model,id:c.recordId,changed:w,values:ve({...c.values,[w]:we})})).values?.[w]??[]).find(xe=>xe.key===A);return Be?h.line(w,{...ie,...Be.values}):ie},async searchLine(w,A,V,M,Y=8){let ie=Ke(w),ae=ie.fields[V];if(!ae)throw new Error(`The lines of "${w}" have no field "${V}"`);let we=(c.values[w]??[]).find(Oe=>Oe.key===A);if(!we)throw new Error(`"${w}" has no line "${A}"`);return Je(ae,V,_e(we.values,ie.fields),M,Y)},canCreate:w=>Me(t.fields[w])!==null,quickCreate:(w,A)=>He(t.fields[w],w,A),canCreateLine:(w,A)=>Me(Ke(w).fields[A])!==null,quickCreateLine:(w,A,V)=>He(Ke(w).fields[A],A,V),steps:()=>s.filter(w=>!z(w).invisible),next(){if(!c.step)return!1;c.skipped.includes(c.step)&&R({skipped:c.skipped.filter(M=>M!==c.step)});let w=N(c.step);if(Object.keys(w).length)return R({errors:w}),!1;let A=pt.steps(),V=s.slice(ft()+1).find(M=>A.includes(M));return V?(R({step:V,errors:{}}),!0):!1},back(){if(!c.step)return!1;let w=pt.steps(),A=s.slice(0,ft()).reverse().find(V=>w.includes(V));return A?(R({step:A,errors:{}}),!0):!1},skip(){let w=c.step;if(!w||!ut(w))return!1;let A=pt.steps(),V=A[A.indexOf(w)+1];return V?(R({step:V,errors:{},skipped:[...c.skipped.filter(M=>M!==w),w]}),!0):!1},goTo(w){let A=pt.steps(),V=A.indexOf(w),M=c.step?A.indexOf(c.step):-1;if(V===-1||M===-1)return!1;if(V<=M)return R({step:w,errors:{}}),!0;let Y=[...c.skipped];for(let ie of A.slice(M,V)){if(Y.includes(ie))continue;let ae=N(ie);if(Object.keys(ae).length){if(ut(ie)){Y.push(ie);continue}return R({step:ie,errors:ae,skipped:Y}),!1}}return R({step:w,errors:{},skipped:Y}),!0},async runAction(w,A){let V=i.get(w);if(!V||V.kind!=="button"&&V.kind!=="stat")throw new Error(`The page has no button "${w}"`);if(z(w).invisible)return;let M=V.source;await C(Promise.resolve(e.onAction?.({id:w,action:M.action,..."params"in M&&M.params?{params:M.params}:{},recordId:c.recordId,values:ve(c.values),...A?{recordIds:[...A.recordIds]}:{}})))},restoreDraft(){let w=e.drafts?.store.getItem(d());if(!w)return;let A=JSON.parse(w);Z({...c.values,...A.values},{draft:null},!0)},discardDraft(){de(),R({draft:null})},async settled(){for(;m.size;)await Promise.allSettled([...m])},dispose(){v!==null&&n.clearTimeout(v),k!==null&&n.clearTimeout(k),L.clear()}};return c={...c,warnings:j()},c.recordId==null&&ce(),pt}function ui(e){return e.readonly===!0||e.compute!==void 0}function la(e,t){let n=[],r=new Map(e.filter(o=>o.id!==void 0).map(o=>[o.key,o]));for(let o of t){let a=r.get(o.key);if(o.id===void 0||!a){n.push({op:"create",key:o.key,values:ve(o.values)});continue}let s={};for(let[d,l]of Object.entries(o.values))JSON.stringify(l)!==JSON.stringify(a.values[d])&&(s[d]=ve(l));Object.keys(s).length&&n.push({op:"update",id:o.id,values:s})}let i=new Set(t.map(o=>o.key));for(let o of e)o.id!==void 0&&!i.has(o.key)&&n.push({op:"delete",id:o.id});return n}function ca(e,t){let n=new Set(e.map(i=>i.id)),r=new Set(t.map(i=>i.id));return[...t.filter(i=>!n.has(i.id)).map(i=>({op:"link",id:i.id})),...e.filter(i=>!r.has(i.id)).map(i=>({op:"unlink",id:i.id}))]}function fa(e){let t=new Map,n=(i,o,a,s)=>{t.set(i.id,{id:i.id,parent:o,kind:a,field:s.field,invisible:qe(s.invisible),readonly:qe(s.readonly),required:qe(s.required),source:i})},r=(i,o)=>{for(let a of i)if(a.type==="field")n(a,o,"field",{invisible:a.invisible,readonly:a.readonly,required:a.required,field:a.field});else if(a.type==="button")n(a,o,"button",{invisible:a.invisible});else if(a.type==="tabs"){n(a,o,"other",{invisible:a.invisible});for(let s of a.children)n(s,a.id,"other",{invisible:s.invisible}),r(s.children,s.id)}else a.type==="section"?(n(a,o,"other",{invisible:a.invisible,readonly:a.readonly}),r(a.children,a.id)):n(a,o,"other",{invisible:a.invisible})};if(e.type==="tabs")return r([e],""),t.get(e.id).parent=null,t;if(n(e,null,"other",{}),e.type==="wizard")for(let i of e.children)n(i,e.id,"step",{invisible:i.invisible}),r(i.children,i.id);else if(e.type==="sections")r(e.children,e.id);else if(e.type==="list")for(let i of e.actions??[])n(i,e.id,"button",{invisible:i.invisible});else{let i=(o,a)=>{a&&n({id:o},e.id,"field",{field:a})};i("#title",e.title?.field),i("#subtitle",e.title?.subtitleField),i("#avatar",e.title?.avatarField),i("#statusbar",e.statusbar?.field);for(let o of e.buttons??[])n(o,e.id,"button",{invisible:o.invisible});for(let o of e.statButtons??[])n(o,e.id,"stat",{invisible:o.invisible});e.ribbon&&n(e.ribbon,e.id,"other",{invisible:e.ribbon.invisible});for(let o of e.alerts??[])n(o,e.id,"other",{invisible:o.invisible});for(let o of e.badges??[])n(o,e.id,"other",{invisible:o.invisible});r([...e.title?.above??[],...e.title?.below??[]],e.id),r(e.children,e.id),e.sidePanel&&n(e.sidePanel,e.id,"other",{invisible:e.sidePanel.invisible})}return t}var pi=new Map;function mi(e,t){let n=`${e}:${t}`,r=pi.get(n);return r||(r=new Intl.NumberFormat(e,{numberingSystem:"latn",minimumFractionDigits:t,maximumFractionDigits:t}),pi.set(n,r)),r}function Yn(e,t,n,r="en"){try{return new Intl.NumberFormat(r,{style:"currency",currency:t,currencyDisplay:"narrowSymbol",numberingSystem:"latn",minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}catch{return`${t} ${Ze(e,n,r)}`}}function ua(e){let t=mi(e,1).formatToParts(12345.6);return{group:t.find(n=>n.type==="group")?.value??",",decimal:t.find(n=>n.type==="decimal")?.value??"."}}function Ze(e,t,n="en"){return mi(n,t).format(e)}function Xn(e,t="en"){let{group:n,decimal:r}=ua(t),i=e.replace(/[٠-٩]/g,o=>String(o.charCodeAt(0)-1632)).replace(/[۰-۹]/g,o=>String(o.charCodeAt(0)-1776)).replace(/٫/g,r).replace(/٬/g,n);return i=i.replace(/[\s\u00a0\u202f]/g,""),n.trim()&&(i=i.split(n).join("")),r==="."?i:i.split(r).join(".")}var gi={};var pa={search:"Search\u2026",noResults:"No results",remove:"Remove {name}",clear:"Clear {label}",addLine:"Add a line",addSection:"Add a section",addNote:"Add a note",deleteLine:"Delete line",lineN:"line {n}",total:"Total",lineProblem:"Line {n}: {message}",moreProblems:"and {n} more",chooseColumns:"Choose columns",createNamed:"Create \u201C{name}\u201D",createAndEdit:"Create and edit\u2026",searchMore:"Search more\u2026",openNamed:"Open {name}",openLine:"Open line",chooseDate:"Choose a date",other:"Other:",otherAnswer:"Your own answer",clearSelection:"Clear selection",previousMonth:"Previous month",nextMonth:"Next month",weekShort:"Wk",week:"Week",formatting:"Formatting",bold:"Bold",italic:"Italic",underline:"Underline",textStyle:"Text style",paragraph:"Paragraph",heading:"Heading",subheading:"Subheading",bulletList:"Bulleted list",numberList:"Numbered list",alignLeft:"Align left",alignCenter:"Align centre",alignRight:"Align right",link:"Link",linkAddress:"Link address",applyLink:"Apply",removeLink:"Remove link",upload:"Upload a file",uploadImage:"Add a photo",replace:"Replace",removeFile:"Remove",dropHere:"or drop it here",addFiles:"Add files",addPhotos:"Add photos",dropThem:"or drop them here",upToSize:"up to {size}",upToEach:"up to {size} each",upToFiles:"up to {max} files",fileCount:"{n} files",oneFile:"1 file",fileCountOf:"{n} of {max} files",tooMany:"Up to {max} files: {n} not added",alreadyAdded:"{name}: already added",removeAsk:"Remove {name}?",keep:"Keep",previous:"Previous",next:"Next",download:"Download",close:"Close",fileAt:"{n} of {total}",noPreview:"No preview for this kind of file",invalidJson:"Not valid JSON",signaturePad:"Signature pad: draw your signature",signHere:"Sign here",typeSignature:"Or type your name",clearDrawing:"Clear",undo:"Undo",uploadSignature:"Upload a picture",notAnswered:"Not answered",moveUp:"Move {label} up",moveDown:"Move {label} down",movedTo:"{label} moved to place {n} of {total}",addressStreet:"Street address",addressCity:"City",addressLine2:"Address line 2",addressRegion:"State or region",addressPostcode:"Postcode",addressCountry:"Country",entry:"Entry {n}",addAnother:"Add another",copy:"Copy {name}",removed:"{name} removed",loadingChoices:"Loading choices\u2026",choicesFailed:"Load the choices again",notOffered:"{name}: no longer offered",yes:"Yes",no:"No",upTo:"Up to {n}",keepOrder:"Keep this order",ofMax:"{n} of {max}",charactersLeft:"Characters left: {n}"},Ne={en:pa,...gi};function Re(e){return(t,n={},...r)=>{let i=e.createElement(t);for(let[o,a]of Object.entries(n))a!==void 0&&i.setAttribute(o,a);return i.append(...r),i}}var Fe=(e,t)=>e??Ne[t??"en"]??Ne.en,Ee=(e,t)=>e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n);function $e(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}function Qe(e,t){e.hidden!==t&&(e.hidden=t)}function ot(e,t){e.textContent!==t&&(e.textContent=t)}function Ve(e,t){$e(e,"aria-invalid",String(t.invalid)),$e(e,"aria-describedby",t.describedBy||null)}function hn(e){let t=e("div",{class:"fd-announce",role:"status","aria-live":"polite"});return{element:t,say(n){t.textContent="",t.textContent=n}}}var bn=e=>e.closest("[dir]")?.getAttribute("dir")==="rtl";function at(e,t,n){let r=Re(e)("button",{type:"button",class:"fd-choice-clear",hidden:""},t.clearSelection);r.addEventListener("click",n);let i=!1;return{button:r,allow(o){i=!o.required&&!o.readonly},show(o){Qe(r,!(i&&o))}}}function yn(e,t){let n=e("span"),r=e("button",{type:"button",class:"fd-button fd-button-link"},t.removeFile),i=e("button",{type:"button",class:"fd-button fd-button-link"},t.keep),o=e("div",{class:"fd-file-confirm",hidden:""},n,r,i),a=d=>{},s=d=>{o.hidden=!0,a(d)};return r.addEventListener("click",()=>s(!0)),i.addEventListener("click",()=>s(!1)),o.addEventListener("keydown",d=>d.key==="Escape"&&s(!1)),{element:o,ask(d,l){n.textContent=d,a=l,o.hidden=!1,i.focus()}}}var ma=180,xn=8;function Bt(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>t[r]??n)}function vn(e){let{document:t,id:n,labels:r}=e,i=`${n}-list`,o=t.createElement("input");Object.assign(o,{id:n,className:"fd-input fd-combo-input",autocomplete:"off"}),o.setAttribute("role","combobox"),o.setAttribute("aria-autocomplete","list"),o.setAttribute("aria-expanded","false"),o.setAttribute("aria-controls",i),o.placeholder=r.search;let a=t.createElement("ul");a.id=i,a.className="fd-listbox",a.setAttribute("role","listbox"),a.hidden=!0;let s=t.createElement("div");s.className="fd-combo",s.append(o,a);let d="",l=null,h="",f=new Map,b=!1,p=[],c=-1,u=0,g,y=!1;function v(){if(a.replaceChildren(),p.forEach((F,R)=>{let B=t.createElement("li");B.id=`${i}-${R}`,B.setAttribute("role","option"),B.setAttribute("aria-selected",String(R===c)),B.className=`fd-option${R===c?" fd-active":""}${F===l||f.has(F)?" fd-option-create":""}`,B.textContent=F.label,B.addEventListener("mousedown",$=>$.preventDefault()),B.addEventListener("click",()=>L(R)),a.append(B)}),!p.length){let F=t.createElement("li");F.className="fd-empty",F.textContent=r.noResults,a.append(F)}c>=0?o.setAttribute("aria-activedescendant",`${i}-${c}`):o.removeAttribute("aria-activedescendant")}function k(){a.hidden=!1,o.setAttribute("aria-expanded","true")}function m(){clearTimeout(g),u++,a.hidden=!0,o.setAttribute("aria-expanded","false"),o.removeAttribute("aria-activedescendant"),c=-1}function L(F){let R=p[F];if(!R)return;let B=h;if(m(),b=!1,R===l&&e.create){e.create(B).then(e.pick,()=>{});return}let $=f.get(R);if($){$(B).then(q=>q&&e.pick(q),()=>{});return}e.pick(R)}function E(F){clearTimeout(g);let R=++u;g=setTimeout(async()=>{let B=await e.search(F).catch(()=>[]);if(R!==u||t.activeElement!==o)return;let $=p[c],q=$&&$!==l&&!f.has($)?$.id:void 0,C=e.exclude?.()??new Set,H=B.filter(X=>!C.has(X.id)),S=e.shown!==void 0&&H.length>e.shown;p=S?H.slice(0,e.shown):H;let P=F.trim();l=null,e.create&&P&&!B.some(X=>X.label.trim().toLowerCase()===P.toLowerCase())&&(h=P,l={id:"__create__",label:Bt(r.createNamed,{name:P})},p=[...p,l]),h=P,f=new Map((e.more?.(P,S)??[]).map((X,z)=>[{id:`__more_${z}__`,label:X.label},X.act])),p=[...p,...f.keys()],c=q===void 0?-1:p.findIndex(X=>X.id===q),v(),k()},ma)}return o.addEventListener("input",()=>{b=!0,y||E(o.value)}),o.addEventListener("focus",()=>{y||E("")}),o.addEventListener("keydown",F=>{if(!y)switch(F.key){case"ArrowDown":case"ArrowUp":{if(F.preventDefault(),a.hidden)return E(o.value);if(!p.length)return;c=(c+(F.key==="ArrowDown"?1:-1)+p.length)%p.length,v(),a.children[c]?.scrollIntoView?.({block:"nearest"});return}case"Enter":!a.hidden&&c>=0&&(F.preventDefault(),L(c));return;case"Escape":a.hidden||F.preventDefault(),m(),b=!1,o.value=d;return;case"Backspace":o.value===""&&e.onEmptyBackspace?.();return}}),o.addEventListener("blur",()=>{u++,clearTimeout(g),m();let F=b&&o.value.trim()===""&&d!=="";b=!1,F?e.onCommitEmpty?.():o.value=d}),{element:s,input:o,setText(F){d=F,!b&&o.value!==F&&(o.value=F)},setReadonly(F){y=F,o.readOnly!==F&&(o.readOnly=F),F&&m()},close:m}}function hi(e,t,n){return n.options?.create!==!1&&e.canCreate(t)?r=>e.quickCreate(t,r):void 0}var Zn=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ne.en,dialogs:s})=>{let d=n.type==="many2one"?n.relation:"",l=!!s&&s.canOpen(d),h=!1,f=vn({document:o,id:i,labels:a,search:c=>e.search(t,c,xn+1),shown:xn,pick:c=>e.setValue(t,c),onCommitEmpty:()=>e.setValue(t,null),create:hi(e,t,r),more:(c,u)=>{if(!s||h)return[];let g=[];return c&&l&&r.options?.create!==!1&&g.push({label:a.createAndEdit,act:y=>s.openRecord(d,{name:y,title:n.label})}),u&&g.push({label:a.searchMore,act:()=>s.searchMore({title:n.label,search:(y,v)=>e.search(t,y,v)})}),g}}),b=l?o.createElement("button"):null;b&&(b.type="button",b.className="fd-combo-open",b.textContent="\u2197",b.hidden=!0,b.addEventListener("click",async()=>{let c=e.getState().values[t];if(!c||!s)return;let u=await s.openRecord(d,{recordId:c.id,title:c.label});u&&u.label!==c.label&&e.setValue(t,u)}));let p=o.createElement("button");return p.type="button",p.className="fd-combo-clear",p.textContent="\xD7",p.setAttribute("aria-label",Bt(a.clear,{label:n.label})),p.addEventListener("click",()=>{e.setValue(t,null),f.input.focus()}),f.element.append(p,...b?[b]:[]),{element:f.element,focus:()=>f.input.focus(),update(c){let u=c.value;h=c.readonly,f.setText(u?.label??""),f.setReadonly(c.readonly),Qe(p,!u||c.readonly),b&&(Qe(b,!u),u&&$e(b,"aria-label",Bt(a.openNamed,{name:u.label}))),$e(f.input,"aria-invalid",String(c.invalid)),$e(f.input,"aria-required",String(c.required)),c.describedBy&&$e(f.input,"aria-describedby",c.describedBy)}}},wn=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ne.en,dialogs:s})=>{let d=n.type==="many2many"?n.relation:"",l=()=>e.getState().values[t]??[],h=o.createElement("div");h.className="fd-tags",h.setAttribute("role","group");let f=o.createElement("ul");f.className="fd-chips";let b=vn({document:o,id:i,labels:a,search:g=>e.search(t,g,xn+1+l().length),shown:xn,pick:g=>{l().some(y=>y.id===g.id)||e.setValue(t,[...l(),g]),b.input.value=""},exclude:()=>new Set(l().map(g=>g.id)),onEmptyBackspace:()=>{let g=l();g.length&&e.setValue(t,g.slice(0,-1))},create:hi(e,t,r),more:(g,y)=>s&&y?[{label:a.searchMore,act:()=>s.searchMore({title:n.label,search:(v,k)=>e.search(t,v,k)})}]:[]}),p=s&&s.canOpen(d)?async g=>{let y=await s.openRecord(d,{recordId:g.id,title:g.label});y&&y.label!==g.label&&e.setValue(t,l().map(v=>v.id===g.id?y:v))}:void 0;h.append(f,b.element);let c=!1,u="";return{element:h,focus:()=>b.input.focus(),update(g){let y=g.value??[],v=JSON.stringify([g.readonly,y]);c=g.readonly,b.setReadonly(c),b.element.hidden=c,b.input.setAttribute("aria-invalid",String(g.invalid)),g.describedBy&&b.input.setAttribute("aria-describedby",g.describedBy),v!==u&&(u=v,bi(f,y,c,a,k=>e.setValue(t,l().filter(m=>m.id!==k.id)),p),b.setText(""))}}};function bi(e,t,n,r,i,o){let a=e.ownerDocument;e.replaceChildren(...t.map(s=>{let d=a.createElement("li");d.className="fd-chip";let l=a.createElement(o?"button":"span");if(l.className="fd-chip-label",l.textContent=s.label,o&&(l.type="button",l.setAttribute("aria-label",Bt(r.openNamed,{name:s.label})),l.addEventListener("click",()=>o(s))),d.append(l),!n){let h=a.createElement("button");h.type="button",h.className="fd-chip-remove",h.textContent="\xD7",h.setAttribute("aria-label",Bt(r.remove,{name:s.label})),h.addEventListener("click",()=>i(s)),d.append(h)}return d}))}var Qn=({form:e,name:t,node:n,id:r,document:i,labels:o=Ne.en})=>{let a=n.options??{},s=typeof a.separator=="string"&&a.separator?a.separator:",",d=Array.isArray(a.suggestions)?a.suggestions.filter(y=>typeof y=="string"):[],l=y=>typeof y=="string"?y.split(s).map(v=>v.trim()).filter(v=>v!==""):[],h=()=>l(e.getState().values[t]),f=y=>e.setValue(t,y.length?y.join(`${s} `):null),b=y=>{let v=y.trim(),k=h();v&&!k.some(m=>m.toLowerCase()===v.toLowerCase())&&!(k.length>=a.max)&&f([...k,v])},p=i.createElement("div");p.className="fd-tags",p.setAttribute("role","group");let c=i.createElement("ul");c.className="fd-chips";let u=vn({document:i,id:r,labels:o,search:async y=>{let v=new Set(h().map(m=>m.toLowerCase())),k=y.trim().toLowerCase();return d.filter(m=>!v.has(m.toLowerCase())&&m.toLowerCase().includes(k)).map(m=>({id:m,label:m}))},pick:y=>{b(y.label),u.input.value=""},onEmptyBackspace:()=>{let y=h();y.length&&f(y.slice(0,-1))}});u.input.addEventListener("keydown",y=>{y.key!=="Enter"||y.defaultPrevented||u.input.value.trim()===""||(y.preventDefault(),b(u.input.value),u.input.value="",u.close())}),u.input.addEventListener("input",()=>{let y=u.input.value.split(s);if(!(y.length<2)){for(let v of y.slice(0,-1))b(v);u.input.value=y[y.length-1].trimStart()}}),u.input.addEventListener("change",()=>{u.input.value.trim()&&b(u.input.value)}),p.append(c,u.element);let g="";return{element:p,focus:()=>u.input.focus(),update(y){let v=l(y.value);u.setReadonly(y.readonly),u.element.hidden=y.readonly||v.length>=a.max,u.input.setAttribute("aria-invalid",String(y.invalid)),y.describedBy&&u.input.setAttribute("aria-describedby",y.describedBy);let k=JSON.stringify([y.readonly,v]);if(k===g)return;g=k;let m=i.activeElement===u.input;bi(c,v.map(L=>({id:L,label:L})),y.readonly,o,L=>f(h().filter(E=>E!==L.label))),u.setText(""),m&&u.element.hidden&&c.querySelector("li:last-child button")?.focus()}}},er=({form:e,name:t,id:n,document:r})=>{let i=r.createElement("div");i.id=n,i.className="fd-choices fd-choices-checkbox",i.setAttribute("role","group");let o=[],a={readonly:!1,value:[]},s=()=>{let d=new Set(a.value.map(l=>l.id));for(let{record:l,box:h}of o)h.checked=d.has(l.id),h.disabled=a.readonly};return e.search(t,"",50).then(d=>{o=d.map((l,h)=>{let f=r.createElement("input");f.type="checkbox",f.id=`${n}-${h}`,f.addEventListener("change",()=>{let c=e.getState().values[t]??[];e.setValue(t,f.checked?[...c,l]:c.filter(u=>u.id!==l.id))});let b=r.createElement("label");b.className="fd-choice",b.htmlFor=f.id;let p=r.createElement("span");return p.textContent=l.label,b.append(f,p),i.append(b),{record:l,box:f}}),s()}),{element:i,focus:()=>i.querySelector("input")?.focus(),update(d){a={readonly:d.readonly,value:d.value??[]},s()}}},tr=e=>{let{form:t,name:n,field:r,id:i,document:o,labels:a=Ne.en}=e,s=r.type==="reference"?r.models:[],d=o.createElement("div");d.className="fd-reference";let l=o.createElement("select");l.className="fd-input fd-select",l.setAttribute("aria-label",r.label),l.append(o.createElement("option"));for(let b of s){let p=o.createElement("option");p.value=String(b.value),p.textContent=b.label,l.append(p)}let h="";l.addEventListener("change",()=>{h=l.value,t.setValue(n,null)});let f=vn({document:o,id:i,labels:a,search:b=>h?t.search(n,b,8,{model:h}):Promise.resolve([]),pick:b=>t.setValue(n,{model:h,id:b.id,label:b.label}),onCommitEmpty:()=>t.setValue(n,null)});return d.append(l,f.element),{element:d,focus:()=>h?f.input.focus():l.focus(),update(b){let p=b.value;p&&(h=p.model),l.value=h,l.disabled=b.readonly,f.setText(p?.label??""),f.setReadonly(b.readonly||!h)}}};function yi(e){let t=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(e);if(!t)return null;let[,n,r,i,o,a]=t;return new Date(Number(n),Number(r)-1,Number(i),Number(o??0),Number(a??0))}function jt(e,t,n={},r="en"){let i=(o,a)=>Ze(o,a,r);if(t==null||t==="")return"";switch(e.type){case"many2one":case"reference":return t.label??"";case"many2many":return(t??[]).map(o=>o.label).join(", ");case"selection":{let o=a=>e.options.find(s=>s.value===a)?.label??String(a);return Array.isArray(t)?t.map(o).join(", "):o(t)}case"integer":return i(Number(t),0);case"float":return i(Number(t),e.digits?.[1]??2);case"monetary":{let o=e.currency??(e.currencyField?n[e.currencyField]?.label:void 0);return o?Yn(Number(t),o,e.digits?.[1]??2,r):i(Number(t),e.digits?.[1]??2)}case"date":{let o=yi(String(t));return o?new Intl.DateTimeFormat(r==="en"?"en-GB":r,{day:"numeric",month:"short",year:"numeric",numberingSystem:"latn"}).format(o):String(t)}case"datetime":{let o=yi(String(t));return o?new Intl.DateTimeFormat(r==="en"?"en-GB":r,{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",numberingSystem:"latn"}).format(o):String(t)}case"html":return String(t).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();case"binary":case"image":return[t].flat().map(o=>o.name??"").join(", ");case"boolean":return t?"\u2713":"";default:return String(t)}}function qt(e,t,n,r,i){if(n.type==="one2many"&&n.sequenceField)return e.moveLine(t,r,i);let o=[...e.getState().values[t]??[]],a=o.findIndex(s=>s.key===r);a<0||i<0||i>=o.length||i===a||(o.splice(i,0,...o.splice(a,1)),e.setValue(t,o))}var xi=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0;function vi(e,t){return t==="section"?{...e,type:"char"}:{...e,type:"text"}}function kn(e,t,n){let r=()=>(e.getState().values[t]??[]).find(i=>i.key===n)?.values??{};return{...e,getState:()=>({...e.getState(),values:r()}),setValue:(i,o)=>e.updateLine(t,n,i,o),search:(i,o,a)=>e.searchLine(t,n,i,o,a),canCreate:i=>e.canCreateLine(t,i),quickCreate:(i,o)=>e.quickCreateLine(t,i,o)}}var nr=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ne.en,locale:s,dialogs:d})=>{let l=n,h=l.lineKinds,f=Re(o),b=r.options??{},p=xi(b.min)??0,c=xi(b.max)??1/0,u=I=>typeof b[I]=="string"&&b[I].trim()?b[I]:null,g=(r.columns??Object.keys(l.fields)).filter(I=>l.fields[I]&&I!==h?.field&&I!==l.sequenceField&&r.optionalColumns?.[I]!=="hide"),y=o.createElement("div");y.className="fd-lines",y.id=i,y.setAttribute("role","group");let v=o.createElement("div");v.className="fd-lines-scroll";let k=o.createElement("table");k.className="fd-lines-table";let m=o.createElement("thead"),L=o.createElement("tr");L.append(f("th",{class:"fd-lines-grip"}));for(let I of g){let N=o.createElement("th");N.scope="col",N.textContent=l.fields[I].label,L.append(N)}let E=o.createElement("th");E.className="fd-lines-tools",L.append(E),m.append(L);let F=o.createElement("tbody");k.append(m,F);let R=(r.totals??[]).filter(I=>g.includes(I)),B=new Map;if(R.length){let I=o.createElement("tfoot"),N=o.createElement("tr");N.className="fd-lines-totals",N.append(o.createElement("td")),g.forEach((W,J)=>{let Z=o.createElement("td");R.includes(W)?B.set(W,Z):J===0&&(Z.textContent=a.total),N.append(Z)}),N.append(o.createElement("td")),I.append(N),k.append(I)}v.append(k);let $=o.createElement("div");$.className="fd-lines-adds";let q=(I,N,W)=>{let J=o.createElement("button");J.type="button",J.className="fd-button fd-button-link fd-lines-add",J.dataset.add=W,J.textContent=`+ ${I}`,J.addEventListener("click",()=>{z=e.addLine(t,N);let Z=X.get(z);Z&&(Z.cells[0]?.widget.focus(),z=null)}),$.append(J)};q(u("addLabel")??a.addLine,{},"line"),h&&(q(a.addSection,{[h.field]:h.section??"section"},"section"),q(a.addNote,{[h.field]:h.note??"note"},"note"));let C=u("emptyLabel"),H=C?f("div",{class:"fd-help fd-lines-empty"},C):null,S=yn(f,a),P=f("div",{class:"fd-sr-only",role:"status"});y.append(v,...H?[H]:[],$,S.element,P);let X=new Map,z=null,K=!1,T=()=>e.getState().values[t]??[];for(let I=T().length;I<p;I++)e.addLine(t);function O(I,N){let W=T().findIndex(ue=>ue.key===I);if(K||N===W||N<0||N>=T().length)return;let J=o.activeElement,Z=T()[W].values[g[0]];qt(e,t,l,I,N),J&&J!==o.activeElement&&J.focus(),P.textContent=Ee(a.movedTo,{label:typeof Z=="string"&&Z.trim()?Z:Ee(a.lineN,{n:W+1}),n:N+1,total:T().length})}F.addEventListener("keydown",I=>{let N=I.target.closest("tr")?.dataset.line;!N||!I.altKey||I.key!=="ArrowUp"&&I.key!=="ArrowDown"||(I.preventDefault(),O(N,T().findIndex(W=>W.key===N)+(I.key==="ArrowUp"?-1:1)))});function D(I,N,W,J,Z=1){let ue=`${i}-${N.key}-${W}`,re={type:"field",id:`${r.id}.${N.key}.${W}`,field:W},de=Ue({form:kn(e,t,N.key),name:W,field:J,node:re,id:ue,document:o,labels:a,locale:s,dialogs:d}),ce=o.createElement("td");ce.colSpan=Z;let G=o.createElement("label");G.className="fd-sr-only",G.htmlFor=ue,G.textContent=J.label;let ee=o.createElement("div");return ee.className="fd-cell-error",ee.hidden=!0,ce.append(G,de.element,ee),I.append(ce),{name:W,def:J,widget:de,error:ee}}function j(I){let N=o.createElement("tr");N.dataset.line=I.key;let W=ze(l,I.values);W&&(N.className=`fd-line-${W}`);let J=f("span",{class:"fd-line-grip fd-rank-grip","aria-hidden":"true"}),Z=!1;J.addEventListener("pointerdown",ce=>{K||ce.button!==0||(ce.preventDefault(),J.setPointerCapture?.(ce.pointerId),Z=!0)}),J.addEventListener("pointermove",ce=>{Z&&O(I.key,[...F.children].filter(G=>G!==N&&G.getBoundingClientRect().top+G.getBoundingClientRect().height/2<ce.clientY).length)});for(let ce of["pointerup","pointercancel"])J.addEventListener(ce,()=>Z=!1);N.append(f("td",{class:"fd-lines-grip"},J));let ue=W&&h?[D(N,I,h.text,vi(l.fields[h.text],W),g.length)]:g.map(ce=>D(N,I,ce,l.fields[ce])),re=o.createElement("td");re.className="fd-lines-tools";let de=o.createElement("button");return de.type="button",de.className="fd-line-delete",de.textContent="\xD7",de.setAttribute("aria-label",a.deleteLine),de.addEventListener("click",()=>{let ce=T().findIndex(ee=>ee.key===I.key),G=T()[ce]?.values??{};if(b.confirmDelete!==!0||ue.every(ee=>Xe(ee.def,G[ee.name])||G[ee.name]===!1))return e.removeLine(t,I.key);S.ask(Ee(a.removeAsk,{name:Ee(a.lineN,{n:ce+1})}),ee=>{ee&&e.removeLine(t,I.key);let he=T(),ge=he[ee?Math.min(ce,he.length-1):ce];(ge?X.get(ge.key)?.remove:$.querySelector("button"))?.focus()})}),re.append(de),N.append(re),{element:N,kind:W,cells:ue,remove:de,grip:J}}return{element:y,focus:()=>(F.querySelector("input, select, textarea")??$.querySelector("button"))?.focus(),update(I){K=I.readonly;let N=I.value??[];$.hidden=K||N.length>=c,K&&(S.element.hidden=!0),H&&(H.hidden=N.length>0);let W=e.getState().errors,J=new Set(N.map(Z=>Z.key));for(let[Z,ue]of X)J.has(Z)||(ue.element.remove(),X.delete(Z));N.forEach((Z,ue)=>{let re=X.get(Z.key);re&&re.kind!==ze(l,Z.values)&&(re.element.remove(),re=void 0),re||(re=j(Z),X.set(Z.key,re)),F.children[ue]!==re.element&&F.insertBefore(re.element,F.children[ue]??null),re.remove.hidden=K||N.length<=p,re.grip.hidden=K,K?re.remove.remove():re.remove.isConnected||re.element.lastElementChild?.append(re.remove);for(let de of re.cells){let ce=W[`${t}.${Z.key}.${de.name}`];de.error.hidden=!ce,de.error.textContent=ce??"",de.widget.update({value:Z.values[de.name],values:Z.values,readonly:K||de.def.readonly===!0||de.def.compute!==void 0,required:de.def.required===!0,invalid:!!ce})}});for(let[Z,ue]of B){let re=N.filter(de=>!ze(l,de.values)).reduce((de,ce)=>de+Number(ce.values[Z]??0),0);ue.textContent=jt(l.fields[Z],re,N[0]?.values??{},s)}z&&X.has(z)&&(X.get(z)?.cells[0]?.widget.focus(),z=null)}}};var ga='a[href], button, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';function st(e,t){if(t.key!=="Tab")return;let n=[...e.querySelectorAll(ga)].filter(a=>!a.closest("[hidden], [inert]")&&!a.disabled);if(!n.length)return;let r=n[0],i=n[n.length-1],o=e.ownerDocument.activeElement;(t.shiftKey?o===r||!e.contains(o):o===i)&&(t.preventDefault(),(t.shiftKey?i:r).focus())}var Ln=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let i=String(r.result??"");t({name:e.name,type:e.type,size:e.size,data:i.slice(i.indexOf(",")+1)})},r.onerror=()=>n(r.error),r.readAsDataURL(e)}),Li=e=>(/\.(\w{1,5})$/.exec(e)?.[1]??"").toUpperCase();function rr(e){let t=`${e.type} ${Li(e.name)}`.toLowerCase();return/^image\//.test(t)?"image":/pdf/.test(t)?"pdf":/sheet|excel|csv|xlsx?$|ods$/.test(t)?"sheet":/zip|rar|7z|tar|gz/.test(t)?"zip":/word|opendocument|^text|docx?$|odt$|rtf$/.test(t)?"doc":"file"}var ha=e=>/^text\/|json|xml|csv/.test(e.type),wi=e=>e.data?`data:${e.type};base64,${e.data}`:e.url??"",ba=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),ki=(e,t)=>e("span",{class:"fd-file-icon","data-kind":rr(t),"aria-hidden":"true"},Li(t.name)||"?"),ya=(e,t)=>e("span",{class:"fd-file-name",dir:"auto",title:t},e("span",{},t.slice(0,-9)),t.slice(-9));function Si(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:s,locale:d="en"})=>{let l=r,h=Fe(s,d),f=De[d]??De.en,b=Re(a),p=l.multiple===!0,c=p?l.maxFiles??1/0:1,u=e==="image",g=(i.options?.files??(u?"thumbnails":"list"))==="thumbnails",y=i.options?.camera,v=l.type==="binary"?l.accept:["image/*"],k=b("div",{class:`fd-file fd-file-${e} fd-files-${g?"thumbs":"list"}`}),m=b("input",{type:"file",id:o,class:"fd-sr-only",accept:v?.join(","),capture:y?y==="user"?"user":"environment":void 0});m.multiple=p;let L=[!u&&v?zt(v,f.or):"",l.maxSize?ye(p?h.upToEach:h.upToSize,{size:it(l.maxSize)}):"",p&&l.maxFiles?ye(h.upToFiles,{max:l.maxFiles}):""].filter(Boolean),E=b("label",{class:`fd-file-pick${g?" fd-image-pick":""}`,for:o},b("span",{class:"fd-button"},p?u?h.addPhotos:h.addFiles:u?h.uploadImage:h.upload),b("span",{class:"fd-help"},p?h.dropThem:h.dropHere)),F=b("span",{class:"fd-help fd-file-limits"},L.join(" \xB7 ")),R=p?b("span",{class:"fd-help fd-file-count"}):null,B=b("ul",{class:"fd-files",role:"list"}),$=b("button",{type:"button",class:"fd-button fd-button-link"},h.replace);$.addEventListener("click",()=>m.click());let q=yn(b,h),C=b("div",{class:"fd-help fd-file-note",role:"status"});k.append(m,E,...L.length?[F]:[],...R?[R]:[],B,$,q.element,C);let H=!1,S=[],P,X=T=>C.replaceChildren(...T.map(O=>b("div",{},O))),z=async T=>{if(H||!T.length)return;let O=[],D=[],j=0;for(let N of T){let W=Wt(l,N,f)??(p&&[...S,...O].some(J=>J.name===N.name)?ye(h.alreadyAdded,{name:N.name}):void 0);W?D.push(W):(p?S.length:0)+O.length<c?O.push(N):j++}if(j&&p&&D.push(ye(h.tooMany,{max:c,n:j})),X(D),!O.length)return;let I=await Promise.all(O.map(Ln));t.setValue(n,p?[...S,...I]:I[0])};m.addEventListener("change",()=>{z([...m.files??[]]),m.value=""}),k.addEventListener("dragover",T=>{H||(T.preventDefault(),k.classList.add("fd-dragging"))}),k.addEventListener("dragleave",()=>k.classList.remove("fd-dragging")),k.addEventListener("drop",T=>{T.preventDefault(),k.classList.remove("fd-dragging"),z([...T.dataTransfer?.files??[]])}),B.addEventListener("click",T=>{let O=T.target.closest("button"),D=Number(O?.dataset.at);if(O){if(O.classList.contains("fd-file-open"))return K(D,O);q.ask(ye(h.removeAsk,{name:S[D].name}),j=>{let I=S[D];j&&(t.setValue(n,p?S.filter((N,W)=>W!==D):null),X([ye(h.removed,{name:I.name})])),(B.querySelectorAll(".fd-file-remove")[j?Math.min(D,S.length-1):D]??(E.hidden?$:m)).focus()})}});function K(T,O){let D=S,j="",I=b("h2",{id:`${o}-view`,class:"fd-form-dialog-title"}),N=b("span",{class:"fd-help"}),W=(ge,me,be)=>{let Me=b("button",{type:"button",class:"fd-button fd-file-step","aria-label":me},be);return Me.hidden=D.length<2,Me.addEventListener("click",()=>ee(T+ge)),Me},J=b("a",{class:"fd-button"},h.download),Z=b("button",{type:"button",class:"fd-dialog-close","aria-label":h.close},"\xD7"),ue=b("div",{class:"fd-file-viewer-body"}),re=b("div",{class:"fd-form-dialog fd-file-viewer",role:"dialog","aria-modal":"true","aria-labelledby":I.id,tabindex:"-1"},b("div",{class:"fd-form-dialog-head"},I,N,W(-1,h.previous,"\u2039"),W(1,h.next,"\u203A"),J,Z),ue),de=b("div",{class:"fd-dialog-backdrop"},re),ce=()=>j.startsWith("blob:")&&URL.revokeObjectURL(j),G=ge=>b("div",{class:"fd-file-none"},ki(b,ge),b("strong",{},ge.name),it(ge.size),b("p",{},h.noPreview));function ee(ge){T=(ge+D.length)%D.length;let me=D[T];ce();let be=me.data?ba(me.data):null;j=be?URL.createObjectURL(new Blob([be],{type:me.type})):me.url??"",I.textContent=me.name,N.replaceChildren(b("span",{class:"fd-file-size"},it(me.size)),D.length>1?` \xB7 ${ye(h.fileAt,{n:T+1,total:D.length})}`:""),J.href=j,J.download=me.name;let Me=rr(me);if(Me==="image")return ue.replaceChildren(b("img",{src:j,alt:me.name}));if(Me==="pdf")return ue.replaceChildren(b("iframe",{src:j,title:me.name}));if(!ha(me))return ue.replaceChildren(G(me));let He=b("pre",{tabindex:"0"});ue.replaceChildren(He),(be?Promise.resolve(new TextDecoder().decode(be.subarray(0,2e5))):fetch(j).then(Je=>Je.text())).then(Je=>He.textContent=Je.slice(0,2e5),()=>He.replaceWith(G(me)))}let he=()=>{ce(),de.remove(),(O.isConnected?O:B.querySelectorAll(".fd-file-open")[T])?.focus()};Z.addEventListener("click",he),de.addEventListener("click",ge=>ge.target===de&&he()),re.addEventListener("keydown",ge=>{let me={ArrowLeft:-1,ArrowRight:1}[ge.key];ge.key==="Escape"?he():me&&D.length>1&&ge.target.tagName!=="PRE"?ee(T+(bn(k)?-me:me)):st(re,ge)}),ee(T),(k.closest(".fd-form")??a.body).append(de),re.focus()}return{element:k,focus:()=>(B.querySelector("button")??(E.hidden?$:m)).focus(),update(T){H=T.readonly;let O=T.value;S=Array.isArray(O)?O:O?[O]:[];let D=S.length>=c;Qe(E,D||H),Qe(F,H),m.disabled=H,m.hidden=E.hidden,Qe($,p||!S.length||H),R&&ot(R,S.length?p&&l.maxFiles?ye(h.fileCountOf,{n:S.length,max:l.maxFiles}):S.length===1?h.oneFile:ye(h.fileCount,{n:S.length}):""),Ve(m,T),!(P===O&&B.dataset.readonly===String(H))&&(P=O,B.dataset.readonly=String(H),B.replaceChildren(...S.map((j,I)=>b("li",{class:"fd-file-item"},b("button",{type:"button",class:"fd-file-open","data-at":String(I),"aria-haspopup":"dialog","aria-label":`${j.name}, ${it(j.size)}`},rr(j)==="image"&&wi(j)?b("img",{class:"fd-file-thumb",src:wi(j),alt:""}):ki(b,j),ya(b,j.name),b("span",{class:"fd-file-size"},it(j.size))),...H?[]:[b("button",{type:"button",class:"fd-file-remove","data-at":String(I),"aria-label":ye(h.remove,{name:j.name})},"\xD7")]))))}}}}var ir=Si("binary"),or=Si("image");var Ei=new Map;function Ri(e,t){let n=Ei.get(t);return n||(n=new Intl.NumberFormat(t,{style:"percent",maximumFractionDigits:0,numberingSystem:"latn"}),Ei.set(t,n)),n.format(e/100)}var Ut=e=>{let{field:t,node:n,id:r,document:i,locale:o="en"}=e,a=n.options??{},s=(v,k)=>{let m=a[v]??t[v];return typeof m=="number"?m:k},d=s("min",0),l=s("max",100),h=typeof a.maxField=="string"?a.maxField:null,f=typeof a.color=="string"?a.color:"auto",b=a.showPercent!==!1,p=i.createElement("div");p.className="fd-progressbar",p.setAttribute("role","progressbar");let c=i.createElement("div");c.className="fd-progressbar-fill";let u=i.createElement("span");u.className="fd-progressbar-text",p.append(c,u);let g=null,y=p;return a.editable===!0?(g=Ue({...e,node:{...n,widget:void 0}}),p.setAttribute("aria-hidden","true"),y=i.createElement("div"),y.className="fd-progressbar-edit",y.append(p,g.element)):p.id=r,{element:y,focus:()=>g?.focus(),update(v){let k=typeof v.value=="number"?v.value:0,m=h?Number(v.values[h]??0):l,L=m>d?Math.min(100,Math.max(0,(k-d)/(m-d)*100)):0,E=Math.round(L*10)/10;c.style.width=`${E}%`,p.setAttribute("aria-valuenow",String(k)),p.setAttribute("aria-valuemin",String(d)),p.setAttribute("aria-valuemax",String(m)),p.setAttribute("aria-valuetext",Ri(L,o)),u.textContent=b?Ri(L,o):"",p.dataset.tone=f!=="auto"?f:L<30?"danger":L<70?"warning":"success",g?.update(v)}}};function Fi(e){return e==null?"":typeof e=="object"&&"label"in e?e.label:String(e)}var _t=({field:e,node:t,id:n,document:r,locale:i="en"})=>{let o=t.options??{},a=h=>typeof o[h]=="string"?o[h]:"",s=h=>typeof o[h]=="string"?o[h]:null,d=e.type==="integer"?0:e.type==="float"||e.type==="monetary"?e.digits?.[1]??2:null,l=r.createElement("output");return l.id=n,l.className="fd-value-text",{element:l,focus:()=>{},update({value:h,values:f}){if(h==null||h===""){l.textContent="";return}let b=d!==null&&typeof h=="number"?Ze(h,d,i):Sn(h,e),p=s("prefixField"),c=s("suffixField"),u=p?Fi(f[p]):a("prefix"),g=c?Fi(f[c]):a("suffix");l.textContent=[u,b,g].filter(y=>y!=="").join(" ")}}};var En=({form:e,name:t,field:n,node:r,id:i,document:o})=>{let a=r.options??{},s=a.clickable===!0,d=Array.isArray(a.visibleStates)?a.visibleStates:null,l=o.createElement("ol");l.className="fd-statusbar",l.id=i,l.setAttribute("aria-label",n.label);let h=u=>u&&typeof u=="object"&&"id"in u?`id:${String(u.id)}`:`v:${String(u)}`,f=n.type==="selection"?n.options.map(u=>({key:h(u.value),label:u.label,value:u.value})):[],b=n.type==="selection",p={value:void 0,readonly:!1};function c(){let{value:u,readonly:g}=p,y=u==null?null:h(u),v=f.filter(k=>!d||d.some(m=>h(m)===k.key)||k.key===y);y&&!v.some(k=>k.key===y)&&u&&typeof u=="object"&&(v=[...v,{key:y,label:u.label,value:u}]),l.replaceChildren(...v.map(k=>{let m=o.createElement("span");m.textContent=k.label;let L=o.createElement(s?"button":"span");L instanceof HTMLButtonElement&&(L.type="button",L.disabled=g,L.addEventListener("click",()=>e.setValue(t,k.value))),L.append(m),k.key===y&&L.setAttribute("aria-current","step");let E=o.createElement("li");return E.append(L),E}))}return{element:l,focus:()=>l.querySelector("button:not([disabled])")?.focus(),update(u){p={value:u.value,readonly:u.readonly},c(),b||(b=!0,e.search(t,"",20).then(g=>{f=g.map(y=>({key:h(y),label:y.label,value:y})),c()}).catch(()=>{}))}}};function Ti(e){let t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()));t.setUTCDate(t.getUTCDate()+4-(t.getUTCDay()||7));let n=Date.UTC(t.getUTCFullYear(),0,1);return Math.ceil(((t.getTime()-n)/864e5+1)/7)}var Ai=e=>String(e).padStart(2,"0"),ar=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),et=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t);function Rn(e,t){let n=new Date(e.getFullYear(),e.getMonth()+t+1,0).getDate();return new Date(e.getFullYear(),e.getMonth()+t,Math.min(e.getDate(),n))}function sr(e,t){if(typeof t!="string"||!t)return null;if(e==="date"){let r=/^(\d{4})-(\d{2})-(\d{2})/.exec(t);return r?new Date(Number(r[1]),Number(r[2])-1,Number(r[3])):null}let n=new Date(t);return Number.isNaN(n.getTime())?null:n}function Fn(e,t,n){let{form:r,name:i,id:o,document:a,locale:s="en"}=t,d=t.labels??Ne.en,l=s==="en"?"en-GB":s,h=new Intl.DateTimeFormat(l,{month:"long",year:"numeric",numberingSystem:"latn"}),f=new Intl.DateTimeFormat(l,{weekday:"long",day:"numeric",month:"long",year:"numeric",numberingSystem:"latn"}),b=new Intl.DateTimeFormat(l,{weekday:"short"}),p=new Intl.DateTimeFormat(l,{weekday:"long"}),c=a.createElement("button");c.type="button",c.className="fd-calendar-button";let u="http://www.w3.org/2000/svg",g=a.createElementNS(u,"svg");g.setAttribute("viewBox","0 0 16 16"),g.setAttribute("aria-hidden","true");for(let[z,K]of[["rect",{x:"2",y:"3",width:"12",height:"11",rx:"1.5"}],["path",{d:"M2 6.5h12M5 1.5v3M11 1.5v3"}]]){let T=a.createElementNS(u,z);for(let[O,D]of Object.entries(K))T.setAttribute(O,D);g.append(T)}c.append(g),c.setAttribute("aria-label",d.chooseDate),c.setAttribute("aria-haspopup","dialog"),c.setAttribute("aria-expanded","false"),c.setAttribute("aria-controls",`${o}-calendar`);let y=a.createElement("div");y.className="fd-calendar",y.id=`${o}-calendar`,y.setAttribute("role","dialog"),y.hidden=!0;let v=a.createElement("div");v.className="fd-calendar-head";let k=a.createElement("button");k.type="button",k.textContent="\u2039",k.setAttribute("aria-label",d.previousMonth);let m=a.createElement("span");m.className="fd-calendar-title",m.setAttribute("aria-live","polite");let L=a.createElement("button");L.type="button",L.textContent="\u203A",L.setAttribute("aria-label",d.nextMonth),v.append(k,m,L);let E=a.createElement("table");E.className="fd-calendar-grid",E.setAttribute("role","grid"),y.append(v,E);let F=a.createElement("span");F.className="fd-date-pick",F.append(e.element,c,y);let R=new Date,B=!1;function $(z){if(n==="date")r.setValue(i,`${z.getFullYear()}-${Ai(z.getMonth()+1)}-${Ai(z.getDate())}`);else{let K=sr("datetime",r.getState().values[i]),T=new Date(z.getFullYear(),z.getMonth(),z.getDate(),K?.getHours()??0,K?.getMinutes()??0);r.setValue(i,T.toISOString())}P()}function q(z){let K=sr(n,r.getState().values[i]),T=new Date,O=h.format(R);m.textContent=O,y.setAttribute("aria-label",O);let D=new Date(R.getFullYear(),R.getMonth(),1),j=et(D,-((D.getDay()+6)%7)),I=a.createElement("tr"),N=a.createElement("th");N.scope="col",N.textContent=d.weekShort,N.setAttribute("abbr",d.week),I.append(N);for(let Z=0;Z<7;Z++){let ue=et(j,Z),re=a.createElement("th");re.scope="col",re.textContent=b.format(ue).replace(/\.$/,""),re.setAttribute("abbr",p.format(ue)),I.append(re)}let W=a.createElement("thead");W.append(I);let J=a.createElement("tbody");for(let Z=j;Z<=new Date(R.getFullYear(),R.getMonth()+1,0);Z=et(Z,7)){let ue=a.createElement("tr"),re=a.createElement("th");re.scope="row",re.className="fd-week",re.textContent=String(Ti(Z)),ue.append(re);for(let de=0;de<7;de++){let ce=et(Z,de),G=a.createElement("td"),ee=a.createElement("button");ee.type="button",ee.textContent=String(ce.getDate()),ee.setAttribute("aria-label",f.format(ce)),ee.tabIndex=ar(ce,R)?0:-1,ce.getMonth()!==R.getMonth()&&ee.classList.add("fd-outside"),K&&ar(ce,K)&&ee.setAttribute("aria-selected","true"),ar(ce,T)&&ee.setAttribute("aria-current","date"),ee.disabled=B,ee.addEventListener("click",()=>$(ce)),ee.addEventListener("keydown",he=>H(he,ce)),G.append(ee),ue.append(G)}J.append(ue)}E.replaceChildren(W,J),z&&E.querySelector('button[tabindex="0"]')?.focus()}function C(z){R=z,q(!0)}function H(z,K){let T={ArrowLeft:()=>et(K,-1),ArrowRight:()=>et(K,1),ArrowUp:()=>et(K,-7),ArrowDown:()=>et(K,7),PageUp:()=>Rn(K,-1),PageDown:()=>Rn(K,1),Home:()=>et(K,-((K.getDay()+6)%7)),End:()=>et(K,6-(K.getDay()+6)%7)};T[z.key]?(z.preventDefault(),C(T[z.key]())):(z.key==="Enter"||z.key===" ")&&(z.preventDefault(),$(K))}function S(){R=sr(n,r.getState().values[i])??new Date,y.hidden=!1,c.setAttribute("aria-expanded","true"),q(!0)}function P(){y.hidden||(y.hidden=!0,c.setAttribute("aria-expanded","false"),c.focus())}c.addEventListener("click",()=>y.hidden?S():P()),k.addEventListener("click",()=>{R=Rn(R,-1),q(!1)}),L.addEventListener("click",()=>{R=Rn(R,1),q(!1)}),y.addEventListener("keydown",z=>{z.key==="Escape"&&(z.preventDefault(),z.stopPropagation(),P())});let X=z=>{!y.hidden&&!F.contains(z.target)&&(y.hidden=!0,c.setAttribute("aria-expanded","false"))};return a.addEventListener("mousedown",X),{element:F,focus:()=>e.focus(),update(z){B=z.readonly,c.hidden=z.readonly,z.readonly&&(y.hidden=!0),e.update(z)},destroy(){a.removeEventListener("mousedown",X),e.destroy?.()}}}var xa=e=>{let t=e.replace(/_/g," ").trim();return t.charAt(0).toUpperCase()+t.slice(1)};function va(e,t){let n=xa(e);return typeof t=="boolean"?{name:e,label:n,type:"boolean"}:typeof t=="number"?{name:e,label:n,type:Number.isInteger(t)?"integer":"float"}:typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?{name:e,label:n,type:"date"}:{name:e,label:n,type:"char"}}var dr=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,s=r.type==="properties"?r.definitions:void 0,d=()=>{let c=t.getState().values[n];return c&&typeof c=="object"&&!Array.isArray(c)?c:{}},l={...t,getState:()=>({...t.getState(),values:d()}),setValue:(c,u)=>t.setValue(n,{...d(),[c]:u})},h=a.createElement("div");h.className="fd-properties",h.setAttribute("role","group");let f=[],b="";function p(c){for(let u of f)u.widget.destroy?.();f=c.map(u=>{let g=`${o}-${u.name}`,y={type:u.type,label:u.label,...u.options?{options:u.options}:{}},v={type:"field",id:`${i.id}.${u.name}`,field:u.name},k=Ue({...e,form:l,name:u.name,field:y,node:v,id:g});return{definition:u,widget:k}}),h.replaceChildren(...f.map(({definition:u,widget:g})=>{let y=a.createElement("div");y.className="fd-property",y.dataset.type=u.type;let v=a.createElement("label");return v.htmlFor=`${o}-${u.name}`,v.textContent=u.label,y.append(v,g.element),y}))}return{element:h,focus:()=>f[0]?.widget.focus(),destroy:()=>f.forEach(c=>c.widget.destroy?.()),update(c){let u=d(),g=s??Object.keys(u).map(v=>va(v,u[v])),y=JSON.stringify(g);y!==b&&(b=y,p(g));for(let{definition:v,widget:k}of f)k.update({value:u[v.name]??null,values:u,readonly:c.readonly,required:!1,invalid:!1})}}};var wa=new Set(["P","BR","B","STRONG","I","EM","U","S","UL","OL","LI","A","H1","H2","H3","H4","BLOCKQUOTE","CODE","PRE","SPAN","DIV"]),ka=new Set(["SCRIPT","STYLE","IFRAME","OBJECT","EMBED","TEMPLATE","NOSCRIPT","SVG","MATH"]),La=new Set(["P","DIV","H1","H2","H3","H4","LI","BLOCKQUOTE","PRE"]),Sa=new Set(["left","center","right","justify","start","end"]);function lr(e,t=globalThis.document){let n=t.createElement("template");n.innerHTML=e;let r=o=>{for(let a of[...o.childNodes]){if(a.nodeType===Node.TEXT_NODE)continue;if(a.nodeType!==Node.ELEMENT_NODE){a.remove();continue}let s=a;if(ka.has(s.tagName)){s.remove();continue}if(r(s),!wa.has(s.tagName)){s.replaceWith(...s.childNodes);continue}let d=s.tagName==="A"?s.getAttribute("href"):null,l=La.has(s.tagName)?s.style?.textAlign?.trim().toLowerCase():"";for(let h of[...s.attributes])s.removeAttribute(h.name);d&&/^(https?:|mailto:)/i.test(d.trim())&&s.setAttribute("href",d.trim()),l&&Sa.has(l)&&s.setAttribute("style",`text-align: ${l};`)}};r(n.content);let i=t.createElement("div");return i.append(n.content),i.innerHTML}function Mi(e){let t=e.trim();return/^(https?:\/\/|mailto:)\S+$/i.test(t)?t:/^[^\s@:/]+@[^\s@:/]+\.[^\s@:/]+$/.test(t)?`mailto:${t}`:/^[\w-]+(\.[\w-]+)+([/?#]\S*)?$/.test(t)?`https://${t}`:null}var Ni=[["bold","bold","<b>B</b>"],["italic","italic","<i>I</i>"],["underline","underline","<u>U</u>"],["heading","heading","<b>H</b>"],["bulletList","insertUnorderedList",'<svg viewBox="0 0 16 16"><circle cx="3" cy="4" r="1.2"/><circle cx="3" cy="8" r="1.2"/><circle cx="3" cy="12" r="1.2"/><path d="M6 4h8M6 8h8M6 12h8"/></svg>'],["numberList","insertOrderedList",'<svg viewBox="0 0 16 16"><path d="M2.5 3h1v3M2 10.5c.5-.8 2-.8 2 .2 0 .8-2 1.3-2 2.3h2M6 4h8M6 8h8M6 12h8"/></svg>'],["alignLeft","justifyLeft",'<svg viewBox="0 0 16 16"><path d="M2 3.5h12M2 6.5h8M2 9.5h12M2 12.5h8"/></svg>'],["alignCenter","justifyCenter",'<svg viewBox="0 0 16 16"><path d="M2 3.5h12M4 6.5h8M2 9.5h12M4 12.5h8"/></svg>'],["alignRight","justifyRight",'<svg viewBox="0 0 16 16"><path d="M2 3.5h12M6 6.5h8M2 9.5h12M6 12.5h8"/></svg>'],["link","createLink",'<svg viewBox="0 0 16 16"><path d="M7 9a3 3 0 0 0 4.2 0l2.3-2.3a3 3 0 0 0-4.2-4.2L8.2 3.6M9 7a3 3 0 0 0-4.2 0L2.5 9.3a3 3 0 0 0 4.2 4.2l1.1-1.1"/></svg>']],cr=({form:e,name:t,node:n,id:r,document:i,labels:o=Ne.en})=>{let a=i.createElement("div");a.id=r,a.className="fd-input fd-richtext",a.setAttribute("role","textbox"),a.setAttribute("aria-multiline","true"),a.setAttribute("contenteditable","true");let s=n.options?.toolbar!==!1,d="";a.addEventListener("input",()=>{let f=lr(a.innerHTML,i);d=f,e.setValue(t,f.trim()===""?null:f)}),a.addEventListener("blur",()=>{a.innerHTML!==d&&(a.innerHTML=d)});let l=s?Ea(a,i,o):null,h=a;return l&&(h=i.createElement("div"),h.className="fd-richtext-box",h.setAttribute("role","group"),a.setAttribute("aria-labelledby",`${r}-label`),h.append(l.bar,l.linkRow,a)),{element:h,focus:()=>a.focus(),destroy:()=>l?.destroy(),update(f){l&&(l.bar.hidden=f.readonly,f.readonly&&(l.linkRow.hidden=!0));let b=lr(typeof f.value=="string"?f.value:"",i);(b!==d||i.activeElement!==a)&&(a.innerHTML!==b&&(a.innerHTML=b),d=b),a.setAttribute("contenteditable",String(!f.readonly)),a.setAttribute("aria-readonly",String(f.readonly)),a.setAttribute("aria-invalid",String(f.invalid)),f.describedBy&&a.setAttribute("aria-describedby",f.describedBy)}}};function Ea(e,t,n){let r=t.createElement("div");r.className="fd-richtext-bar",r.setAttribute("role","toolbar"),r.setAttribute("aria-label",n.formatting);let i=null,o=()=>{e.focus();let u=t.getSelection();i&&u&&(u.removeAllRanges(),u.addRange(i))},a=(u,g)=>{o(),t.execCommand?.(u,!1,g)},s=t.createElement("select");s.className="fd-richtext-style",s.setAttribute("aria-label",n.textStyle);for(let[u,g]of[["p","paragraph"],["h2","heading"],["h3","subheading"]]){let y=t.createElement("option");y.value=u,y.textContent=n[g],s.append(y)}s.addEventListener("change",()=>a("formatBlock",`<${s.value}>`));let d=t.createElement("div");d.className="fd-link-row",d.hidden=!0;let l=t.createElement("input");l.className="fd-input",l.type="url",l.placeholder="https://",l.setAttribute("aria-label",n.linkAddress);let h=t.createElement("button");h.type="button",h.className="fd-button fd-link-apply",h.textContent=n.applyLink;let f=t.createElement("button");f.type="button",f.className="fd-button fd-button-link fd-link-remove",f.textContent=n.removeLink,d.append(l,h,f),h.addEventListener("click",()=>{let u=Mi(l.value);if(!u){l.setAttribute("aria-invalid","true");return}l.setAttribute("aria-invalid","false"),o(),t.execCommand?.("createLink",!1,u),d.hidden=!0}),f.addEventListener("click",()=>{o(),t.execCommand?.("unlink",!1),d.hidden=!0}),l.addEventListener("keydown",u=>{u.key==="Enter"?(u.preventDefault(),h.click()):u.key==="Escape"&&(u.preventDefault(),d.hidden=!0,o())});let b=Ni.map(([u,g,y])=>{let v=t.createElement("button");return v.type="button",v.className="fd-richtext-tool",v.setAttribute("aria-label",n[u]),v.title=n[u],v.innerHTML=y,v.querySelector("svg")?.setAttribute("aria-hidden","true"),["bold","italic","underline","heading"].includes(g)&&v.setAttribute("aria-pressed","false"),v.addEventListener("mousedown",k=>k.preventDefault()),v.addEventListener("click",()=>{if(g==="heading")return a("formatBlock",s.value==="h2"?"<p>":"<h2>");if(g!=="createLink")return a(g);d.hidden=!1,l.value="",l.focus()}),v});r.append(s,...b);let p=[s,...b];p.forEach((u,g)=>u.tabIndex=g===0?0:-1),r.addEventListener("keydown",u=>{if(u.key!=="ArrowRight"&&u.key!=="ArrowLeft")return;let g=p.indexOf(t.activeElement);if(g<0)return;let y=getComputedStyle(r).direction==="rtl",v=u.key==="ArrowRight"!==y?1:-1,k=p[(g+v+p.length)%p.length];u.preventDefault(),p.forEach(m=>m.tabIndex=m===k?0:-1),k.focus()});let c=()=>{let u=t.getSelection();if(!u||!u.rangeCount||!e.contains(u.anchorNode))return;i=u.getRangeAt(0).cloneRange();let g=String(t.queryCommandValue?.("formatBlock")??"").toLowerCase().replace(/[<>]/g,"");s.value=g==="h2"||g==="h3"?g:"p";for(let y of b){let v=Ni[b.indexOf(y)][1];y.hasAttribute("aria-pressed")&&y.setAttribute("aria-pressed",String(v==="heading"?g==="h2":t.queryCommandState?.(v)??!1))}};return t.addEventListener("selectionchange",c),{bar:r,linkRow:d,destroy:()=>t.removeEventListener("selectionchange",c)}}var fr=({form:e,name:t,id:n,document:r,labels:i=Ne.en})=>{let o=r.createElement("div");o.className="fd-json";let a=r.createElement("textarea");a.id=n,a.className="fd-input fd-textarea fd-code",a.spellcheck=!1;let s=r.createElement("div");return s.className="fd-cell-error",s.hidden=!0,o.append(a,s),a.addEventListener("input",()=>{if(a.value.trim()===""){s.hidden=!0,e.setValue(t,null);return}try{let d=JSON.parse(a.value);s.hidden=!0,e.setValue(t,d)}catch{s.hidden=!1,s.textContent=i.invalidJson}}),{element:o,focus:()=>a.focus(),update(d){if(r.activeElement!==a){let l=d.value===null||d.value===void 0?"":JSON.stringify(d.value,null,2);a.value!==l&&(a.value=l)}a.readOnly=d.readonly,a.setAttribute("aria-invalid",String(d.invalid||!s.hidden))}}};var Ci=new WeakMap;function Ra(e){let t=Ci.get(e);return t===void 0&&(t=Math.floor(Math.random()*4294967296)>>>0,Ci.set(e,t)),t}function Fa(e,t){let n=e^2654435769;for(let r=0;r<t.length;r++)n=Math.imul(n^t.charCodeAt(r),2246822507),n^=n>>>13;return n>>>0}function Aa(e){let t=e;return()=>{t=t+1831565813|0;let n=Math.imul(t^t>>>15,1|t);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}function dt(e,t,n,r){if(r.options?.shuffle!==!0)return[...e];let i=(s,d)=>s[d]===!0,o=e.filter(s=>!i(s,"fixed")&&!i(s,"exclusive")),a=Aa(Fa(Ra(t),n));for(let s=o.length-1;s>0;s--){let d=Math.floor(a()*(s+1));[o[s],o[d]]=[o[d],o[s]]}return o.push(...e.filter(s=>!i(s,"fixed")&&i(s,"exclusive"))),e.map(s=>i(s,"fixed")?s:o.shift())}var $i=({form:e,name:t,field:n,node:r,id:i,document:o})=>{let a=n,s=a.multiple?"checkbox":"radio",d=(g,y={},...v)=>{let k=o.createElement(g);for(let[m,L]of Object.entries(y))k.setAttribute(m,L);return k.append(...v),k},l=d("table",{id:i,class:"fd-matrix-table"});l.append(d("thead",{},d("tr",{},d("th",{scope:"col"}),...a.columns.map(g=>d("th",{scope:"col"},g.label)))));let h=d("tbody"),f=[],b=[];for(let g of dt(a.rows,e,t,r)){let y=d("tr",{role:s==="radio"?"radiogroup":"group","aria-label":g.label});b.push(y),y.append(d("th",{scope:"row"},g.label));for(let v of a.columns){let k=d("input",{type:s,name:`${i}-${g.value}`,value:String(v.value),"data-row":String(g.value),"aria-label":`${g.label}: ${v.label}`});k.addEventListener("change",()=>{if(a.onePerColumn&&k.checked)for(let m of f)m.value===k.value&&m!==k&&(m.checked=!1);u()}),f.push(k),y.append(d("td",{},d("label",{class:"fd-matrix-pick"},k,d("span",{class:"fd-matrix-column"},v.label))))}h.append(y)}l.append(h);let p=d("div",{class:"fd-matrix"},l),c=g=>a.columns.find(y=>String(y.value)===g)?.value??g;function u(){let g={};for(let y of a.rows){let v=f.filter(k=>k.dataset.row===String(y.value)&&k.checked).map(k=>c(k.value));(a.multiple?v.length:v.length===1)&&(g[String(y.value)]=a.multiple?v:v[0])}e.setValue(t,Object.keys(g).length?g:null)}return{element:p,focus:()=>(f.find(g=>g.checked)??f[0])?.focus(),update(g){let y=g.value&&typeof g.value=="object"&&!Array.isArray(g.value)?g.value:{};for(let v of f){let k=y[v.dataset.row??""],m=Array.isArray(k)?k.map(String):k==null?[]:[String(k)];v.checked=m.includes(v.value),v.disabled=g.readonly}if(l.setAttribute("aria-invalid",String(g.invalid)),s==="radio")for(let v of b)$e(v,"aria-required",String(g.required));g.describedBy?l.setAttribute("aria-describedby",g.describedBy):l.removeAttribute("aria-describedby")}}};var Mt=600,Gt=180,Ta="#1b2a5c",Na='"Segoe Script", "Snell Roundhand", "Brush Script MT", "Apple Chancery", cursive',Ma=e=>Math.floor(e.length*3/4)-(e.endsWith("==")?2:e.endsWith("=")?1:0),Ca=e=>e.data??e.url??"",Oi=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:s})=>{let d=Fe(a,s),l=Re(o),h=r.options??{},f=h.color,b=typeof f=="string"&&/^#[\da-f]{6}$/i.test(f)?f:Ta,p=h.penWidth,c=typeof p=="number"&&p>0?p:3,u=h.footerLabel,g=l("canvas",{class:"fd-signature-pad",width:String(Mt),height:String(Gt),role:"img","aria-label":d.signaturePad}),y=l("span",{class:"fd-signature-hint","aria-hidden":"true"},r.placeholder||d.signHere),v=l("img",{class:"fd-signature-image",alt:n.label,hidden:""}),k=l("input",{type:"text",class:"fd-input fd-signature-typed","aria-label":d.typeSignature,placeholder:d.typeSignature,autocomplete:"name"}),m=N=>l("button",{type:"button",class:"fd-button fd-button-link",hidden:""},N),L=m(d.undo),E=m(d.clearDrawing);E.classList.add("fd-signature-clear");let F=h.upload===!0?m(d.uploadSignature):null,R=l("input",{type:"file",accept:"image/*",class:"fd-sr-only",tabindex:"-1","aria-hidden":"true"}),B=l("div",{id:i,class:"fd-signature",role:"group"},l("div",{class:"fd-signature-box"},g,v,y),...typeof u=="string"&&u?[l("span",{class:"fd-signature-footer"},u)]:[],l("div",{class:"fd-signature-tools"},k,L,...F?[F,R]:[],E)),$=()=>{let N=g.getContext("2d");return N&&(N.strokeStyle=N.fillStyle=b,N.lineWidth=c,N.lineCap=N.lineJoin="round"),N},q=null,C=!1,H=null,S=[],P=null,X=()=>!S.length&&!H;function z(){let N=$();if(N){N.clearRect(0,0,Mt,Gt),H&&(N.font=`italic 64px ${Na}`,N.textAlign="center",N.textBaseline="middle",N.fillText(H,Mt/2,Gt/2,Mt-40));for(let W of S){N.beginPath(),N.arc(W[0].x,W[0].y,c/2,0,Math.PI*2),N.fill();for(let J=1;J<W.length;J++)K(W[J-1],W[J])}}}function K(N,W){let J=$();J?.beginPath(),J?.moveTo(N.x,N.y),J?.lineTo(W.x,W.y),J?.stroke()}function T(){S=[],H=null,z()}function O(){if(y.hidden=!X(),X())return q=null,e.setValue(t,null);let N;try{N=g.toDataURL("image/png")}catch{return}if(!N)return;let W=N.slice(N.indexOf(",")+1);q=W,e.setValue(t,{name:"signature.png",type:"image/png",size:Ma(W),data:W,...H&&!S.length?{text:H}:{}})}function D(N){let W=g.getBoundingClientRect();return{x:(N.clientX-W.left)*Mt/(W.width||Mt),y:(N.clientY-W.top)*Gt/(W.height||Gt)}}g.addEventListener("pointerdown",N=>{C||N.button!==0||(N.preventDefault(),g.setPointerCapture?.(N.pointerId),P=D(N),S.push([P]),y.hidden=!0,z())}),g.addEventListener("pointermove",N=>{if(!P)return;let W=D(N);K(P,W),S[S.length-1].push(W),P=W});let j=()=>{P&&(P=null,O())};g.addEventListener("pointerup",j),g.addEventListener("pointercancel",j),k.addEventListener("input",()=>{I(),S=[],H=k.value.trim()||null,z(),O()}),L.addEventListener("click",()=>{S.pop(),z(),O()}),F?.addEventListener("click",()=>R.click()),R.addEventListener("change",()=>{let N=R.files?.[0];R.value="",N&&Ln(N).then(W=>e.setValue(t,W))}),E.addEventListener("click",()=>{T(),q=null,k.value="",I(),e.setValue(t,null),k.focus()});function I(){v.hidden=!0,g.hidden=!1}return{element:B,focus:()=>(k.hidden?E:k).focus(),update(N){C=N.readonly;let W=N.value&&typeof N.value=="object"&&!Array.isArray(N.value)?N.value:null,J=o.activeElement!==k;if(W&&Ca(W)!==q){let Z=W.data?`data:${W.type};base64,${W.data}`:W.url??"";v.getAttribute("src")!==Z&&(v.src=Z),v.hidden=!1,g.hidden=!0,q=null,T(),J&&(k.value=W.text??"")}else W||((q!==null||!v.hidden)&&(q=null,T(),J&&(k.value="")),I());y.hidden=C||!X()||!v.hidden,k.hidden=C,k.readOnly=C,E.hidden=C||!W,L.hidden=C||!S.length||!v.hidden,F&&(F.hidden=C),g.classList.toggle("fd-signature-locked",C),Ve(B,N),k.setAttribute("aria-invalid",String(N.invalid))}}};var ur=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:s="en"})=>{let d=Fe(a,s),l=Re(o),h=F=>F in n&&typeof n[F]=="number"?n[F]:void 0,f=h("min")??0,b=h("max")??100,p=typeof r.options?.step=="number"&&r.options.step>0?r.options.step:1,c=n.type==="integer"?0:n.type==="float"&&n.digits?n.digits[1]:Math.max(0,-Math.floor(Math.log10(p))),u=F=>Ze(F,c,s),g=l("input",{id:i,type:"range",class:"fd-slider-input",min:String(f),max:String(b),step:String(p)}),y=l("output",{class:"fd-slider-value",for:i,"aria-hidden":"true"}),v=[r.options?.startLabel,r.options?.endLabel].map(F=>typeof F=="string"?F:""),k=(F,R)=>l("span",{class:R?"fd-slider-last":void 0},u(F),...v[R]?[l("span",{class:"fd-slider-word"},v[R])]:[]),m=l("div",{class:"fd-slider-ends","aria-hidden":"true"},k(f,0),k(b,1)),L=at(o,d,()=>{e.setValue(t,null),g.focus()}),E=l("div",{class:"fd-slider"},l("div",{class:"fd-slider-track"},g,y),m,L.button);return v.some(Boolean)&&g.setAttribute("aria-description",v.filter(Boolean).join(" \u2026 ")),g.addEventListener("input",()=>e.setValue(t,Number(g.value))),{element:E,focus:()=>g.focus(),update(F){let R=typeof F.value=="number"?F.value:null;E.classList.toggle("fd-slider-empty",R===null);let B=String(R??(f+b)/2);g.value!==B&&(g.value=B),y.textContent=R===null?"\u2013":u(R),g.setAttribute("aria-valuetext",R===null?d.notAnswered:u(R)),g.disabled=F.readonly,L.allow(F),L.show(R!==null),Ve(g,F)}}};function An(e,t,n){let r=i=>e.some(o=>o.exclusive&&o.value===i);return r(n)?[n]:[...t.filter(i=>!r(i)),n]}function Tn(e,t,n){let r=n.validate?.find(o=>o.atMost!==void 0&&(o.when??!0)===!0&&o.level!=="warning")?.atMost,i=r?e("span",{class:"fd-choice-limit",role:"status"}):null;return{element:i,full(o){let a=!!r&&o>=r;return i&&ot(i,a?Ee(t.upTo,{n:r}):""),a}}}function Nn(e,t){let n=t.options?.columns;n==="row"?e.classList.add("fd-choices-row"):typeof n=="number"&&n>=1&&(e.classList.add("fd-choices-columns"),e.style.setProperty("--fd-choice-columns",String(Math.min(4,Math.round(n)))))}var Ii=e=>Pi(e,!1),Vi=e=>Pi(e,!0);function Pi({form:e,name:t,field:n,id:r,document:i,labels:o,locale:a},s){let d=Fe(o,a),l=Re(i),h=n.type==="selection"?n.options:[],f=n.type==="selection"&&n.ownAnswers===!0&&!s,b=`${r}-list`,p=l("input",{id:r,type:"text",class:"fd-input fd-combo-input",role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-controls":b,autocomplete:"off",placeholder:d.search}),c=l("ul",{id:b,class:"fd-listbox",role:"listbox",hidden:""}),u=l("ul",{class:"fd-chips"}),g=l("div",{class:"fd-combo"},p,c),y=s?l("div",{class:"fd-choice-search"},g):l("div",{class:"fd-tags fd-choice-tags"},u,g),v=()=>e.getState().values[t],k=()=>Array.isArray(v())?v():[],m=S=>e.setValue(t,S),L=S=>h.find(P=>P.value===S)?.label??(S==null?"":String(S)),E=[],F=-1,R=!1;function B(){c.replaceChildren(...E.map((S,P)=>{let X=l("li",{id:`${b}-${P}`,role:"option",class:`fd-option${P===F?" fd-active":""}`,"aria-selected":String(P===F)},S.label);return X.addEventListener("mousedown",z=>z.preventDefault()),X.addEventListener("click",()=>C(S)),X})),E.length||c.append(l("li",{class:"fd-empty"},d.noResults)),$e(p,"aria-activedescendant",F>=0?`${b}-${F}`:null)}function $(){let S=p.value.trim(),P=s&&S===L(v())?"":S.toLowerCase(),X=new Set(k());E=h.filter(z=>!X.has(z.value)&&z.label.toLowerCase().includes(P)),f&&P&&!X.has(S)&&!h.some(z=>z.label.toLowerCase()===P)&&E.push({value:S,label:Ee(d.createNamed,{name:S})}),F=-1,B(),c.hidden=!1,p.setAttribute("aria-expanded","true")}function q(){c.hidden=!0,F=-1,p.setAttribute("aria-expanded","false"),p.removeAttribute("aria-activedescendant")}function C(S){if(s)return p.value=S.label,m(S.value),q();p.value="",m(An(h,k(),S.value)),i.activeElement===p?$():q()}s||p.addEventListener("focus",()=>!R&&$()),p.addEventListener("click",()=>!R&&c.hidden&&$()),p.addEventListener("input",()=>!R&&$()),p.addEventListener("blur",()=>{q(),s&&!R&&(p.value.trim()?p.value=L(v()):m(null))}),p.addEventListener("keydown",S=>{if(!R)switch(S.key){case"ArrowDown":case"ArrowUp":{if(S.preventDefault(),c.hidden)return $();if(!E.length)return;let P=S.key==="ArrowDown";F=F===-1?P?0:E.length-1:(F+(P?1:-1)+E.length)%E.length,B(),c.children[F]?.scrollIntoView?.({block:"nearest"});return}case"Enter":{let P=E[F]??(p.value.trim()?E[0]:void 0);if(c.hidden||!P)return;S.preventDefault(),C(P);return}case"Escape":c.hidden||S.preventDefault(),q();return;case"Backspace":!s&&p.value===""&&k().length&&m(k().slice(0,-1));return}});let H="";return{element:y,focus:()=>p.focus(),update(S){if(R=S.readonly,R&&q(),Ve(p,S),$e(p,"aria-required",String(S.required)),s){p.readOnly=R,i.activeElement!==p&&(p.value=L(S.value));return}let P=Array.isArray(S.value)?S.value:[];p.hidden=R;let X=JSON.stringify([R,P]);X!==H&&(H=X,u.replaceChildren(...P.map(z=>{let K=L(z),T=l("li",{class:"fd-chip"},l("span",{class:"fd-chip-label"},K));if(!R){let O=l("button",{type:"button",class:"fd-chip-remove","aria-label":Ee(d.remove,{name:K})},"\xD7");O.addEventListener("click",()=>m(k().filter(D=>D!==z))),T.append(O)}return T})),c.hidden||$())}}}var $a='<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="M21 16l-5-5-9 9"/></svg>',Di=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:s})=>{let d=Fe(a,s),l=Re(o),h=n.type==="selection"&&n.multiple===!0,f=n.type==="selection"?n.options:[],b=dt(f,e,t,r),p=r.options??{},c=p.showLabels===!1,u=l("div",{id:i,class:`fd-image-choices${c?" fd-image-choices-bare":""}`,role:h?"group":"radiogroup","data-size":p.imageSize,"data-fit":p.imageFit});Nn(u,r);let g=h?Tn(l,d,r):null,y=b.map(E=>{let F=E.image?l("img",{src:E.image,alt:E.alt??"",loading:"lazy",draggable:"false"}):l("span",{class:"fd-image-card-blank"});E.image||(F.innerHTML=$a);let R=l("button",{type:"button",class:"fd-image-card",role:h?"checkbox":"radio","aria-checked":"false","aria-label":c?E.label:void 0},l("span",{class:"fd-image-card-picture"},F),l("span",{class:"fd-image-card-words"},E.label));return R.addEventListener("click",()=>k(E)),u.append(R),R}),v=()=>e.getState().values[t];function k(E){if(!h)return e.setValue(t,E.value);let F=Array.isArray(v())?v():[],R=new Set(F.includes(E.value)?F.filter(B=>B!==E.value):An(f,F,E.value));e.setValue(t,f.filter(B=>R.has(B.value)).map(B=>B.value))}let m=!1;h||u.addEventListener("keydown",E=>{if(m)return;let F=y.indexOf(E.target);if(F===-1)return;let R=bn(u),B={ArrowDown:1,ArrowUp:-1,ArrowRight:R?-1:1,ArrowLeft:R?1:-1},$=E.key==="Home"?0:E.key==="End"?y.length-1:E.key in B?(F+B[E.key]+y.length)%y.length:-1;$!==-1&&(E.preventDefault(),k(b[$]),y[$].focus())});let L=h?null:at(o,d,()=>{e.setValue(t,null),y[0]?.focus()});return g?.element&&u.append(g.element),{element:L?l("div",{class:"fd-choices-box"},u,L.button):u,focus:()=>(y.find(E=>E.getAttribute("aria-checked")==="true")??y[0])?.focus(),update(E){m=E.readonly;let F=new Set(Array.isArray(E.value)?E.value:[E.value]),R=h?-1:Math.max(0,b.findIndex($=>F.has($.value))),B=!!g?.full(Array.isArray(E.value)?E.value.length:0);y.forEach(($,q)=>{let C=F.has(b[q].value);$.setAttribute("aria-checked",String(C)),$.tabIndex=h||q===R?0:-1,$.disabled=m||B&&!C&&!b[q].exclusive}),L?.allow(E),L?.show(b.some($=>F.has($.value))),Ve(u,E)}}};var Oa=4,Wi=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:s})=>{let d=Fe(a,s),l=Re(o),h=dt(n.type==="selection"?n.options:[],e,t,r),f=l("ol",{class:"fd-rank-list"}),b=hn(l),p=r.options?.top,c=typeof p=="number"&&p>=1&&p<h.length?Math.floor(p):0,u=l("div",{class:"fd-rank-pool"}),g=l("button",{type:"button",class:"fd-button fd-rank-keep"},d.keepOrder);g.addEventListener("click",()=>e.setValue(t,m.map(C=>C.option.value)));let y=l("div",{id:i,class:"fd-ranking",role:"group"},...c?[l("div",{class:"fd-choice-limit"},Ee(d.upTo,{n:c})),u,f]:[f,g],b.element),v=h.map(C=>{let H=C.label,S=l("span",{class:"fd-rank-place","aria-hidden":"true"}),P=l("button",{type:"button",class:"fd-rank-move fd-rank-up","aria-label":Ee(d.moveUp,{label:H})},"\u2191"),X=l("button",{type:"button",class:"fd-rank-move fd-rank-down","aria-label":Ee(d.moveDown,{label:H})},"\u2193"),z=l("span",{class:"fd-rank-grip","aria-hidden":"true"}),K=l("span",{class:"fd-rank-tools"},P,X),T=l("li",{class:"fd-rank-item","data-value":String(C.value)},z,S,l("span",{class:"fd-rank-words"},H),K),O={option:C,element:T,place:S,up:P,down:X};if(c){let D=l("button",{type:"button",class:"fd-rank-pick"},H);D.addEventListener("click",()=>!k&&m.length<c&&F([...m,O],O));let j=l("button",{type:"button",class:"fd-rank-move fd-rank-out","aria-label":Ee(d.remove,{name:H})},"\xD7");j.addEventListener("click",()=>{b.say(Ee(d.removed,{name:H})),e.setValue(t,m.filter(I=>I!==O).map(I=>I.option.value))}),K.append(j),u.append(D),O.pick=D}return P.addEventListener("click",()=>R(O,-1,"up")),X.addEventListener("click",()=>R(O,1,"down")),T.addEventListener("pointerdown",D=>$(O,D)),O}),k=!1,m=[...v],L=null;function E(C){for(m=C,C.forEach((H,S)=>{f.children[S]!==H.element&&f.insertBefore(H.element,f.children[S]??null),H.place.textContent=String(S+1),H.up.disabled=S===0,H.down.disabled=S===C.length-1});f.children.length>C.length;)f.lastElementChild?.remove()}function F(C,H){b.say(Ee(d.movedTo,{label:H.option.label,n:C.indexOf(H)+1,total:C.length})),e.setValue(t,C.map(S=>S.option.value))}function R(C,H,S){let P=m.indexOf(C),X=P+H;if(k||X<0||X>=m.length)return;let z=[...m];z.splice(P,1),z.splice(X,0,C),L=C.element.contains(o.activeElement)?{item:C,which:S==="up"&&X===0||S==="down"&&X===z.length-1?S==="up"?"down":"up":S}:null,F(z,C),B()}function B(){if(!L)return;let{item:C,which:H}=L;L=null,C[H].focus()}f.addEventListener("keydown",C=>{if(k||!C.altKey||C.key!=="ArrowUp"&&C.key!=="ArrowDown")return;let H=v.find(S=>S.element.contains(C.target));H&&(C.preventDefault(),R(H,C.key==="ArrowUp"?-1:1,C.key==="ArrowUp"?"up":"down"))});function $(C,H){if(k||H.button!==0||H.target.closest("button")||H.pointerType==="touch"&&!H.target.closest(".fd-rank-grip"))return;let S=H.clientY,P=[...m],X=!1;C.element.setPointerCapture?.(H.pointerId);let z=T=>{if(!X&&Math.abs(T.clientY-S)<Oa)return;X||(X=!0,C.element.classList.add("fd-rank-lifted")),T.preventDefault();let O=m.filter(j=>j!==C),D=O.filter(j=>{let I=j.element.getBoundingClientRect();return I.top+I.height/2<T.clientY}).length;m.indexOf(C)!==D&&E([...O.slice(0,D),C,...O.slice(D)])},K=()=>{C.element.removeEventListener("pointermove",z),C.element.removeEventListener("pointerup",K),C.element.removeEventListener("pointercancel",K),C.element.classList.remove("fd-rank-lifted"),m.some((T,O)=>T!==P[O])&&F(m,C)};C.element.addEventListener("pointermove",z),C.element.addEventListener("pointerup",K),C.element.addEventListener("pointercancel",K)}function q(C){let H=(Array.isArray(C)?C:[]).map(S=>v.find(P=>P.option.value===S)).filter(S=>!!S);return c?H.slice(0,c):Array.isArray(C)?[...new Set([...H,...m])]:m}return E(c?[]:m),{element:y,focus:()=>(v.find(C=>C.pick&&!C.pick.hidden&&!C.pick.disabled)?.pick??(m[0]?.down.disabled?m[0]?.up:m[0]?.down))?.focus(),update(C){k=C.readonly,y.classList.toggle("fd-ranking-locked",k);let H=q(C.value);(H.length!==m.length||H.some((S,P)=>S!==m[P])||!c&&!f.children.length)&&E(H);for(let S of v)S.up.hidden=S.down.hidden=k,S.pick&&(S.pick.hidden=m.includes(S),S.pick.disabled=k||m.length>=c,S.element.querySelector(".fd-rank-out").hidden=k);g.hidden=k||Array.isArray(C.value)&&C.value.length>0,B(),Ve(y,C)}}};var zi={street:["addressStreet","street-address"],line2:["addressLine2","address-line2"],city:["addressCity","address-level2"],region:["addressRegion","address-level1"],postcode:["addressPostcode","postal-code"],country:["addressCountry","country"]},Ia=e=>typeof e=="string"&&e in zi,Va="AC AN BU CP CQ CS DD DG DY EA EU EZ FX HV IC NH QO RH SU TA TP UK UN VD XA XB YD YU ZR ZZ",pr={};function mr(e){if(!pr[e]){let t=new Intl.DisplayNames([e],{type:"region",fallback:"none"}),n=[];for(let r=65;r<91;r++)for(let i=65;i<91;i++){let o=String.fromCharCode(r,i),a=!Va.includes(o)&&t.of(o);a&&n.push([o,a])}pr[e]=n.sort((r,i)=>r[1].localeCompare(i[1],e))}return pr[e]}var Hi=({form:e,name:t,node:n,id:r,document:i,labels:o,locale:a="en"})=>{let s=Fe(o,a),d=Re(i),l=n.options??{},h=l.parts,f=Array.isArray(h)?h.filter(Ia):["street","city","postcode","country"],b=Array.isArray(l.requiredParts)?l.requiredParts:[],p=typeof l.country=="string"?l.country:"",c=d("div",{id:r,class:"fd-address",role:"group"}),u=(y,v)=>{let k=e.getState().values[t],m=k&&typeof k=="object"&&!Array.isArray(k)?{...k}:{};m[y]=v,p&&f.includes("country")&&m.country===void 0&&(m.country=p);let L=Object.fromEntries(Object.entries(m).filter(([,F])=>typeof F!="string"||F.trim()!=="")),E=Object.keys(L);e.setValue(t,E.length&&(y==="country"||E.join()!=="country"||L.country!==p)?L:null)},g=f.map(y=>{let[v,k]=zi[y],m={id:`${r}-${y}`,class:"fd-input","data-part":y,autocomplete:y==="street"&&f.includes("line2")?"address-line1":k,"aria-required":b.includes(y)?"true":void 0},L=y==="country"?d("select",m,d("option",{value:""}),...mr(a).map(([E,F])=>d("option",{value:E},F))):d("input",{type:"text",...m});return L.addEventListener(y==="country"?"change":"input",()=>u(y,L.value)),y==="country"&&L.classList.add("fd-select"),c.append(d("div",{class:`fd-address-part fd-address-${y}${b.includes(y)?" fd-required":""}`},d("label",{class:"fd-address-label",for:L.id},s[v]),L)),{part:y,input:L}});return{element:c,focus:()=>g[0]?.input.focus(),update(y){let v=y.value&&typeof y.value=="object"&&!Array.isArray(y.value)?y.value:{};for(let{part:k,input:m}of g){let L=typeof v[k]=="string"?v[k]:k==="country"&&v.country===void 0?p:"";m instanceof HTMLSelectElement?(L&&![...m.options].some(E=>E.value===L)&&m.append(d("option",{value:L},L)),m.disabled=y.readonly):m.readOnly=y.readonly,i.activeElement!==m&&m.value!==L&&(m.value=L),m.setAttribute("aria-invalid",String(y.invalid&&(!b.length||b.includes(k)&&!L.trim())))}Ve(c,y)}}};var Bi=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0,ji=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:s,dialogs:d})=>{let l=Fe(a,s),h=Re(o),f=n,b=r.options??{},p=Bi(b.min)??0,c=Bi(b.max)??1/0,u=typeof b.itemLabel=="string"&&b.itemLabel.trim()?b.itemLabel.trim():null,g=S=>u?`${u} ${S}`:Ee(l.entry,{n:S}),y=(r.columns??Object.keys(f.fields)).filter(S=>f.fields[S]&&S!==f.sequenceField&&S!==f.lineKinds?.field),v=h("div",{class:"fd-repeat-list"}),k=h("button",{type:"button",class:"fd-button fd-repeat-add"},typeof b.addLabel=="string"&&b.addLabel?b.addLabel:l.addAnother),m=hn(h),L=h("div",{id:i,class:"fd-repeat",role:"group"},v,k,m.element),E=new Map,F=()=>e.getState().values[t]??[],R=!1,B=null;for(let S=F().length;S<p;S++)e.addLine(t);k.addEventListener("click",()=>{if(R||F().length>=c)return;let S=e.addLine(t);B=()=>E.get(S)?.fields[0]?.widget.focus(),H()});function $(S){let P=`${i}-${S.key}-title`,X=h("span",{id:P,class:"fd-repeat-title"}),z=h("button",{type:"button",class:"fd-repeat-remove"},"\xD7"),K=(N,W,J)=>{let Z=h("button",{type:"button",class:"fd-repeat-tool"},N);return Z.addEventListener("click",J),[Z,W]},T=()=>F().findIndex(N=>N.key===S.key),O=[K("\u2191","moveUp",()=>q(S.key,T()-1)),K("\u2193","moveDown",()=>q(S.key,T()+1)),K("\u29C9","copy",()=>C(S.key))],D=h("div",{class:"fd-repeat-fields"}),j=h("div",{class:"fd-repeat-card",role:"group","aria-labelledby":P,"data-line":S.key},h("div",{class:"fd-repeat-head"},X,...O.map(([N])=>N),z),D),I=y.map(N=>{let W=f.fields[N],J=`${i}-${S.key}-${N}`,Z={type:"field",id:`${r.id}.${S.key}.${N}`,field:N},ue=Ue({form:kn(e,t,S.key),name:N,field:W,node:Z,id:J,document:o,labels:a,locale:s,dialogs:d}),re=h("label",{class:"fd-repeat-label",for:J},W.label);["INPUT","SELECT","TEXTAREA"].includes(ue.element.tagName)||re.addEventListener("click",()=>ue.focus());let de=h("div",{class:"fd-cell-error",hidden:""});return D.append(h("div",{class:"fd-repeat-field"},re,ue.element,de)),{name:N,def:W,widget:ue,error:de}});return z.addEventListener("click",()=>{let N=F(),W=N.findIndex(re=>re.key===S.key);if(R||W===-1||N.length<=p)return;let J=X.textContent??"";e.removeLine(t,S.key),m.say(Ee(l.removed,{name:J}));let Z=F(),ue=Z[Math.min(W,Z.length-1)];B=()=>ue?E.get(ue.key)?.fields[0]?.widget.focus():k.focus(),H()}),{element:j,title:X,remove:z,tools:O,fields:I}}function q(S,P){let X=F().findIndex(T=>T.key===S);if(R||P<0||P>=F().length||P===X)return;let z=E.get(S)?.title.textContent??"";qt(e,t,f,S,P);let K=X>P&&P>0||P===F().length-1?0:1;E.get(S)?.tools[K][0].focus(),m.say(Ee(l.movedTo,{label:z,n:P+1,total:F().length}))}function C(S){let P=F(),X=P.findIndex(T=>T.key===S);if(R||X<0||P.length>=c)return;let z={...P[X].values};f.sequenceField&&delete z[f.sequenceField];let K=e.addLine(t,z);qt(e,t,f,K,X+1),E.get(K)?.fields[0]?.widget.focus()}function H(){let S=B;B=null,S?.()}return{element:L,focus:()=>([...E.values()].find(S=>S.element===v.firstElementChild)?.fields[0]?.widget??k).focus(),update(S){R=S.readonly;let P=S.value??[],X=e.getState().errors,z=new Set(P.map(K=>K.key));for(let[K,T]of E)if(!z.has(K)){T.element.remove();for(let O of T.fields)O.widget.destroy?.();E.delete(K)}P.forEach((K,T)=>{let O=E.get(K.key);O||E.set(K.key,O=$(K)),v.children[T]!==O.element&&v.insertBefore(O.element,v.children[T]??null),O.title.textContent=g(T+1),O.remove.setAttribute("aria-label",Ee(l.remove,{name:O.title.textContent})),O.remove.hidden=R||P.length<=p;for(let[D,j]of O.tools)D.setAttribute("aria-label",Ee(l[j],{label:O.title.textContent,name:O.title.textContent})),D.hidden=R||(j==="moveUp"?T===0:j==="moveDown"?T===P.length-1:P.length>=c);for(let D of O.fields){let j=X[`${t}.${K.key}.${D.name}`];D.error.hidden=!j,D.error.textContent=j??"",D.widget.update({value:K.values[D.name],values:K.values,readonly:R||D.def.readonly===!0,required:D.def.required===!0,invalid:!!j})}}),k.hidden=R||P.length>=c,Ve(L,S)}}};function gr(e,{form:t,name:n,field:r,document:i,labels:o,locale:a},s){let d=r.type==="char"||r.type==="text"?r.size:void 0;if(!d||t.page.fields[n]!==r)return e;let l=Re(i),h=l("div",{class:"fd-count","aria-hidden":"true"}),f=l("div",{class:"fd-sr-only","aria-live":"polite"}),b;return{...e,element:l("div",{class:"fd-counted"},e.element,h,f),update(p){e.update(p);let c=s.value.length;ot(h,`${c} / ${d}`),h.classList.toggle("fd-count-near",c>=d*.9),Qe(h,p.readonly),i.activeElement===s&&(clearTimeout(b),b=setTimeout(()=>ot(f,Ee(Fe(o,a).charactersLeft,{n:d-c})),700))}}}function qi(e,t){let n=t.options?.rows;return typeof n=="number"&&(e.rows=n),t.options?.autoGrow===!1?()=>{}:()=>{e.style.height="",e.scrollHeight&&(e.style.height=`${e.scrollHeight+e.offsetHeight-e.clientHeight}px`)}}function Mn(e,t,n){let r=n.options??{},i=t.type==="char";(i?[r.min,r.max]:"min"in t?[t.min,t.max]:[]).forEach((a,s)=>{typeof a=="string"&&(e[s?"max":"min"]=i?a:ht(a)+(t.type==="datetime"?s?"T23:59":"T00:00":""))}),typeof r.step=="number"&&(e.step=String(r.step*60))}function hr(e,t){try{let n=new Intl.NumberFormat(t,{style:"currency",currency:e,currencyDisplay:"narrowSymbol"}).formatToParts(1),r=n.findIndex(i=>i.type==="currency");return{text:n[r].value,after:r>n.findIndex(i=>i.type==="integer")}}catch{return{text:e,after:!1}}}var Pa="http://www.w3.org/2000/svg",Ui={user:'<circle cx="12" cy="8" r="4"/><path d="M4 21c0-4 3.6-6 8-6s8 2 8 6"/>',users:'<circle cx="9" cy="8" r="3.5"/><path d="M2 20c0-3.5 3-5.5 7-5.5s7 2 7 5.5"/><circle cx="17" cy="9" r="2.5"/><path d="M16.5 14.5c3 0 5.5 1.6 5.5 4.5"/>',building:'<rect x="4" y="3" width="16" height="18" rx="1"/><path d="M9 21v-4h6v4M8 7h2M14 7h2M8 11h2M14 11h2"/>',home:'<path d="M3 11l9-7 9 7"/><path d="M5 10v10h14V10"/><path d="M10 20v-6h4v6"/>',phone:'<rect x="7" y="2" width="10" height="20" rx="2"/><path d="M11 18h2"/>',mail:'<rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 7l9 6 9-6"/>',pin:'<path d="M12 21s-7-6.5-7-12a7 7 0 0 1 14 0c0 5.5-7 12-7 12z"/><circle cx="12" cy="9" r="2.5"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c3 3.2 3 14.8 0 18M12 3c-3 3.2-3 14.8 0 18"/>',calendar:'<rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 10h18M8 3v4M16 3v4"/>',clock:'<circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/>',money:'<rect x="2" y="6" width="20" height="12" rx="2"/><circle cx="12" cy="12" r="3"/><path d="M6 9.5v0M18 14.5v0"/>',cart:'<path d="M3 4h2l2.5 11h11L21 7H6.4"/><circle cx="9" cy="19.5" r="1.5"/><circle cx="17" cy="19.5" r="1.5"/>',box:'<path d="M12 3l8 4.5v9L12 21l-8-4.5v-9z"/><path d="M4 7.5l8 4.5 8-4.5M12 12v9"/>',truck:'<path d="M2 6h12v10H2zM14 9h4l3 3.5V16h-7"/><circle cx="6.5" cy="17.5" r="1.8"/><circle cx="17" cy="17.5" r="1.8"/>',receipt:'<path d="M6 3h12v18l-3-2-3 2-3-2-3 2z"/><path d="M9 8h6M9 12h6"/>',file:'<path d="M6 3h8l4 4v14H6z"/><path d="M14 3v4h4M9 12h6M9 16h6"/>',edit:'<path d="M4 20h4L19 9l-4-4L4 16z"/><path d="M13.5 6.5l4 4"/>',tag:'<path d="M3 12V4h8l10 10-8 8z"/><circle cx="7.5" cy="8" r="1.5"/>',star:'<path d="M12 3l2.8 6 6.2.6-4.7 4.2 1.4 6.2L12 16.8 6.3 20l1.4-6.2L3 9.6 9.2 9z"/>',lock:'<rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V7a4 4 0 0 1 8 0v4"/>',check:'<path d="M5 12.5l4.5 4.5L19 7.5"/>',info:'<circle cx="12" cy="12" r="9"/><path d="M12 11v6M12 7.5v0"/>',warning:'<path d="M12 3l10 18H2z"/><path d="M12 10v5M12 18v0"/>',settings:'<path d="M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1"/><circle cx="15" cy="6" r="2"/><circle cx="9" cy="12" r="2"/><circle cx="17" cy="18" r="2"/>',chart:'<path d="M3 20h18M6 20v-8M11 20V5M16 20v-6"/>',link:'<path d="M10 14a4 4 0 0 0 5.6 0l3-3a4 4 0 0 0-5.6-5.6l-1 1"/><path d="M14 10a4 4 0 0 0-5.6 0l-3 3a4 4 0 0 0 5.6 5.6l1-1"/>',list:'<path d="M8 6h12M8 12h12M8 18h12M4 6v0M4 12v0M4 18v0"/>',chat:'<path d="M4 5h16v11H9l-5 4z"/>',search:'<circle cx="11" cy="11" r="6.5"/><path d="M16 16l5 5"/>',filter:'<path d="M3 5h18l-7 8.5V20l-4-2v-4.5z"/>',layers:'<path d="M12 3l9 5-9 5-9-5z"/><path d="M3 13l9 5 9-5"/>',thumb:'<path d="M7 21V10l4-8c1.6 0 2.6 1.3 2.2 3L12.5 9H19a2 2 0 0 1 2 2.3l-1.3 7.6a2.5 2.5 0 0 1-2.5 2.1H7zM7 10H3v11h4"/>'};function lt(e,t,n){let r=t?n?.[t]??Ui[t]:void 0;if(r===void 0)return null;let i=e.createElementNS(Pa,"svg");for(let[o,a]of Object.entries({viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",class:"fd-icon","data-icon":t}))i.setAttribute(o,a);return i.innerHTML=r,i}function _i(e,t){let{form:n,name:r,document:i}=t,o=Fe(t.labels,t.locale),a=i.createElement("div"),s=i.createElement("div"),d=i.createElement("button");d.type="button",d.className="fd-button fd-button-link",d.textContent=o.choicesFailed,d.onclick=()=>n.loadChoices(r),s.setAttribute("role","status"),a.style.cssText="display:grid;gap:4px";let l=new Map,h,f=null,b=p=>{h?.destroy?.(),h=e({...t,field:{...t.field,options:p}}),h.element.getAttribute("role")&&h.element.setAttribute("aria-labelledby",`${t.id}-label`),a.replaceChildren(h.element,s,d)};return b([]),n.getState().choices[r]||n.loadChoices(r),{element:a,focus:()=>h.focus(),destroy:()=>h.destroy?.(),update(p){let c=n.getState().choices[r];if(c?.options&&c.options!==f){f=c.options;for(let g of f)l.set(g.value,g.label);b(f)}h.update(p);let u=f&&!t.field.other?[p.value].flat().filter(g=>g!=null&&!f?.some(y=>y.value===g)):[];s.className=c?.loading?"fd-help":"fd-warning",s.textContent=c?.loading?o.loadingChoices:u.length?ye(o.notOffered,{name:u.map(g=>l.get(g)??String(g)).join(", ")}):"",s.hidden=!s.textContent,d.hidden=!c?.error}}}var Gi=({form:e,name:t,node:n,id:r,document:i,labels:o,locale:a})=>{let s=Fe(o,a),d=Re(i),l=d("div",{id:r,class:"fd-points fd-yes-no",role:"radiogroup"}),h=!1,f=[!0,!1].map(p=>{let c=n.options?.[p?"yesLabel":"noLabel"],u=d("button",{type:"button",role:"radio"},typeof c=="string"&&c?c:p?s.yes:s.no);return u.addEventListener("click",()=>e.setValue(t,p)),l.append(u),u});l.addEventListener("keydown",p=>{let c=f.indexOf(p.target);h||c===-1||!p.key.startsWith("Arrow")||(p.preventDefault(),e.setValue(t,c===1),f[1-c].focus())});let b=at(i,s,()=>{e.setValue(t,null),f[0].focus()});return{element:d("div",{class:"fd-choices-box"},l,b.button),focus:()=>(f.find(p=>p.getAttribute("aria-checked")==="true")??f[0]).focus(),update(p){h=p.readonly;let c=p.value===!0?0:p.value===!1?1:-1;f.forEach((u,g)=>{$e(u,"aria-checked",String(g===c)),u.classList.toggle("fd-on",g===c),u.tabIndex=g===Math.max(0,c)?0:-1,u.disabled=h}),$e(l,"aria-required",String(p.required)),b.allow(p),b.show(c!==-1),Ve(l,p)}}};function Ue(e,t={}){let{field:n,node:r}=e,i=[r.widget?`${n.type}.${r.widget}`:null,n.type==="selection"&&n.multiple?"selection.checkboxes":null,n.type].filter(o=>o!==null);for(let o of i){let a=t[o]??Yi[o];if(a)return n.type==="selection"&&n.optionsFrom?_i(a,e):a(e)}return qa(e)}function Le(e,t,n={},...r){let i=e.createElement(t);for(let[o,a]of Object.entries(n))a!==void 0&&i.setAttribute(o,a);return i.append(...r),i}function ct(e,t){$e(e,"aria-invalid",String(t.invalid)),$e(e,"aria-required",e.getAttribute("role")==="group"?null:String(t.required)),$e(e,"aria-describedby",t.describedBy||null)}var On=e=>e==null?"":String(e);function Ct(e){return t=>{let{form:n,name:r,field:i,node:o,id:a,document:s}=t,d=Le(s,"input",{id:a,type:e,class:"fd-input",autocomplete:/^(email|tel|url)$/.test(e)?e:"off"});return i.type==="char"&&i.size!==void 0&&(d.maxLength=i.size),e==="time"&&Mn(d,i,o),o.placeholder&&(d.placeholder=o.placeholder),d.addEventListener("input",()=>n.setValue(r,d.value===""?null:d.value)),gr({element:d,focus:()=>d.focus(),update(l){let h=On(l.value);d.value!==h&&(d.value=h),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),ct(d,l)}},t,d)}}var Da=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,s=Le(a,"textarea",{id:o,class:"fd-input fd-textarea",rows:"3"});r.type==="text"&&r.size!==void 0&&(s.maxLength=r.size),i.placeholder&&(s.placeholder=i.placeholder);let d=qi(s,i);return s.addEventListener("input",()=>{d(),t.setValue(n,s.value===""?null:s.value)}),gr({element:s,focus:()=>s.focus(),update(l){let h=On(l.value);s.value!==h&&(s.value=h,d()),s.readOnly!==l.readonly&&(s.readOnly=l.readonly),ct(s,l)}},e,s)},Wa=/^-?(\d+\.?\d*|\.\d+)$/,za=/^-?\.?$/,br=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a,locale:s="en"}=e,d=r.type==="integer",l=d?0:(r.type==="float"||r.type==="monetary"?r.digits?.[1]:void 0)??2,h=$=>typeof $=="number"?Ze($,l,s):On($),f=Le(a,"input",{id:o,type:"text",class:"fd-input fd-number-input",autocomplete:"off"});f.inputMode=d?"numeric":"decimal",i.placeholder&&(f.placeholder=i.placeholder);let b=$=>{let q=Xn($.trim(),s);if(q==="")return null;if(Wa.test(q))return Number(q);if(!za.test(q))return q};f.addEventListener("input",()=>{let $=b(f.value);$!==void 0&&t.setValue(n,$)}),f.addEventListener("blur",()=>{f.value=h(t.getState().values[n])});let p=i.options??{},c=r.type==="monetary"?r.currencyField:void 0,u=c?t.page.fields[c]:void 0,g=c&&u&&p.pickCurrency===!0?Ue({...e,name:c,field:u,node:{type:"field",id:`${i.id}.currency`,field:c},id:`${o}-currency`}):null;g&&u&&g.element.querySelector("input, select")?.setAttribute("aria-label",u.label),g?.element.matches("input, select")&&u&&g.element.setAttribute("aria-label",u.label);let y=p.symbol?p.symbol==="after":r.type==="monetary"&&hr(r.currency??"USD",s).after,v=($,q)=>Le(a,"span",{class:`fd-unit${r.type==="monetary"?" fd-currency":""}`,id:`${o}-unit${q}`},$),k=r.type==="monetary"&&!g?v("",0):null,[m,L]=["prefix","suffix"].map(($,q)=>typeof p[$]=="string"&&p[$]?v(p[$],q+1):null),E=(y?null:g?.element??k)??m,F=(y?g?.element??k:null)??L,R=[E,F].filter($=>!!$&&$!==g?.element);return{element:E||F?Le(a,"span",{class:`fd-number${y?" fd-currency-after":""}${g?" fd-currency-picked":""}`},...[E,f,F].filter($=>!!$)):f,focus:()=>f.focus(),update($){let q=a.activeElement===f,C=b(f.value),H=C===void 0||C===$.value;if(!(q&&H)){let S=h($.value);f.value!==S&&(f.value=S)}if(f.readOnly!==$.readonly&&(f.readOnly=$.readonly),ct(f,{...$,describedBy:[$.describedBy,...R.map(S=>S.id)].filter(Boolean).join(" ")}),g&&c&&g.update({value:$.values[c],values:$.values,readonly:$.readonly,required:!1,invalid:!1}),k&&r.type==="monetary"){let S=r.currencyField?$.values[r.currencyField]:null,P=S&&typeof S=="object"&&"label"in S?S.label:typeof S=="string"?S:r.currency??"";ot(k,/^[A-Z]{3}$/.test(P)?hr(P,s).text:P)}for(let[S,P]of[[E,"start"],[F,"end"]])S&&R.includes(S)&&f.style.setProperty(`padding-inline-${P}`,`calc(var(--fd-pad-x) + ${S.textContent?.length??0}ch + 4px)`)}}};function yr(e="box"){let t=e==="switch"?{class:"fd-switch",role:"switch"}:{class:e==="tick"?"fd-checkbox fd-tick":"fd-checkbox"};return({form:n,name:r,id:i,document:o})=>{let a=Le(o,"input",{id:i,type:"checkbox",...t});return a.addEventListener("change",()=>n.setValue(r,a.checked)),{element:a,focus:()=>a.focus(),update(s){a.checked=s.value===!0,a.disabled!==s.readonly&&(a.disabled=s.readonly),ct(a,s)}}}}function $n(e){return e.type==="selection"?e.options:[]}var Ha=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,s=i.options?.search;if(s===!0||s!==!1&&$n(r).length>15)return Vi(e);let d=dt($n(r),t,n,i),l=Le(a,"select",{id:o,class:"fd-input fd-select"},Le(a,"option",{value:""}));return d.forEach((h,f)=>l.append(Le(a,"option",{value:String(f)},h.label))),l.addEventListener("change",()=>t.setValue(n,l.value===""?null:d[Number(l.value)].value)),{element:l,focus:()=>l.focus(),update(h){let f=d.findIndex(b=>b.value===h.value);l.value=f===-1?"":String(f),l.disabled!==h.readonly&&(l.disabled=h.readonly),ct(l,h)}}};function Ji(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:s,locale:d})=>{let l=dt($n(r),t,n,i),h=Fe(s,d),f=Le(a,"div",{id:o,class:`fd-choices fd-choices-${e}`,role:e==="radio"?"radiogroup":"group"});Nn(f,i);let b=e==="checkbox"?Tn(Re(a),h,i):null,p=l.map((L,E)=>{let F=Le(a,"input",{type:e,name:o,value:String(E),id:`${o}-${E}`});return f.append(Le(a,"label",{class:"fd-choice",for:`${o}-${E}`},F,Le(a,"span",{},L.label))),F}),c=r.type==="selection"&&r.other===!0,u=c?Le(a,"input",{type:e,name:o,value:"other",id:`${o}-other`}):null,g=c?Le(a,"input",{type:"text",class:"fd-input fd-other-input","aria-label":h.otherAnswer,autocomplete:"off"}):null;u&&g&&(f.append(Le(a,"div",{class:"fd-choice fd-choice-other"},Le(a,"label",{class:"fd-choice-other-pick",for:`${o}-other`},u,Le(a,"span",{},h.other)),g)),g.addEventListener("input",()=>{u.checked||(u.checked=!0),y(u)}),u.addEventListener("change",()=>{u.checked&&g.focus()})),b?.element&&f.append(b.element);function y(L){if(e==="checkbox"&&L instanceof HTMLInputElement&&L.checked){let F=l[p.indexOf(L)]?.exclusive===!0;p.forEach((R,B)=>R!==L&&(F||l[B].exclusive)&&(R.checked=!1)),F&&u&&(u.checked=!1)}let E=u?.checked&&g&&g.value.trim()?g.value:null;if(e==="radio"){let F=p.findIndex(R=>R.checked);t.setValue(n,F!==-1?l[F].value:E)}else{let F=new Set(l.filter((R,B)=>p[B].checked));t.setValue(n,[...$n(r).filter(R=>F.has(R)).map(R=>R.value),...E!==null?[E]:[]])}}f.addEventListener("change",L=>{L.target!==g&&y(L.target)});let v=new Set(l.map(L=>L.value)),k=()=>p.some(L=>L.checked)||u?.checked===!0,m=e==="radio"?at(a,h,()=>{for(let L of[...p,u])L&&(L.checked=!1);t.setValue(n,null),(p[0]??u)?.focus()}):null;return{element:m?Le(a,"div",{class:"fd-choices-box"},f,m.button):f,focus:()=>(p.find(L=>L.checked)??(u?.checked?g:null)??p[0])?.focus(),update(L){let E=Array.isArray(L.value)?L.value:[L.value],F=!!b?.full(Array.isArray(L.value)?L.value.length:0);if(p.forEach((R,B)=>{R.checked=E.includes(l[B].value);let $=L.readonly||F&&!R.checked&&!l[B].exclusive;R.disabled!==$&&(R.disabled=$)}),u&&g){let R=E.find(q=>typeof q=="string"&&!v.has(q)),B=u.checked&&!g.value.trim()&&(e==="checkbox"||E.every(q=>q==null));u.checked=R!==void 0||B,R!==void 0&&a.activeElement!==g&&(g.value=R);let $=L.readonly||F&&!u.checked;u.disabled!==$&&(u.disabled=g.disabled=$)}m?.allow(L),m?.show(k()),ct(f,L)}}}}function Ki(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:s,locale:d})=>{let l=Fe(s,d),h="min"in r&&typeof r.min=="number"?r.min:e==="rating"?1:0,f="max"in r&&typeof r.max=="number"?r.max:e==="rating"?5:10,b=e==="rating"?i.options?.icon:"number",p=b!=="number",c=e==="scale"&&i.options?.nps===!0&&h===0&&f===10,u=Le(a,"div",{id:o,class:`fd-points fd-${p?"rating":"scale"}${p?` fd-rating-${b??"star"}`:""}${c?" fd-nps":""}`,role:"radiogroup"}),g=[];for(let m=h;m<=f;m++){let L=Le(a,"button",{type:"button",role:"radio","aria-label":Ee(l.ofMax,{n:m,max:f}),"data-value":String(m)},b==="thumb"?lt(a,"thumb"):b==="heart"?"\u2665":p?"\u2605":String(m));e==="scale"&&L.removeAttribute("aria-label"),c&&(L.dataset.tone=m<7?"low":m<9?"mid":"high"),L.addEventListener("click",()=>t.setValue(n,m)),g.push(L),u.append(L)}u.addEventListener("keydown",m=>{let L=t.getState().values[n],E=typeof L=="number"?L:h-1,F=m.key==="ArrowRight"||m.key==="ArrowUp"?1:m.key==="ArrowLeft"||m.key==="ArrowDown"?-1:0;if(!F)return;m.preventDefault();let R=Math.min(f,Math.max(h,E+F));t.setValue(n,R),g[R-h]?.focus()});let y=[i.options?.startLabel,i.options?.endLabel].map(m=>typeof m=="string"?m:""),v=at(a,l,()=>{t.setValue(n,null),g[0]?.focus()}),k=y.some(Boolean)?Le(a,"div",{class:"fd-scale-box"},u,Le(a,"div",{class:"fd-scale-ends","aria-hidden":"true"},Le(a,"span",{},y[0]),Le(a,"span",{},y[1]))):u;return y.some(Boolean)&&u.setAttribute("aria-description",y.filter(Boolean).join(" \u2026 ")),{element:Le(a,"div",{class:"fd-choices-box"},k,v.button),focus:()=>(g.find(m=>m.getAttribute("aria-checked")==="true")??g[0])?.focus(),update(m){let L=typeof m.value=="number"?m.value:null;g.forEach((E,F)=>{let R=h+F;$e(E,"aria-checked",String(R===L)),E.classList.toggle("fd-on",p?L!==null&&R<=L:R===L);let B=R===L||L===null&&F===0?0:-1;E.tabIndex!==B&&(E.tabIndex=B),E.disabled!==m.readonly&&(E.disabled=m.readonly)}),v.allow(m),v.show(L!==null),ct(u,m)}}}}var Ba=e=>{let{form:t,name:n,field:r,id:i,document:o,node:a}=e,s=Le(o,"input",{id:i,type:"date",class:"fd-input fd-date"});Mn(s,r,a),s.addEventListener("input",()=>t.setValue(n,s.value||null));let d={element:s,focus:()=>s.focus(),update(l){let h=On(l.value);s.value!==h&&(s.value=h),s.readOnly!==l.readonly&&(s.readOnly=l.readonly),ct(s,l)}};return a.options?.weekNumbers===!0?Fn(d,e,"date"):d},Cn=e=>String(e).padStart(2,"0"),ja=e=>{let{form:t,name:n,field:r,id:i,document:o,node:a}=e,s=Le(o,"input",{id:i,type:"datetime-local",class:"fd-input fd-datetime"});Mn(s,r,a);let d=h=>{if(typeof h!="string"||!h)return"";let f=new Date(h);return Number.isNaN(f.getTime())?"":`${f.getFullYear()}-${Cn(f.getMonth()+1)}-${Cn(f.getDate())}T${Cn(f.getHours())}:${Cn(f.getMinutes())}`};s.addEventListener("input",()=>{if(!s.value)return t.setValue(n,null);let h=new Date(s.value);Number.isNaN(h.getTime())||t.setValue(n,h.toISOString())});let l={element:s,focus:()=>s.focus(),update(h){let f=d(h.value);s.value!==f&&(s.value=f),s.readOnly!==h.readonly&&(s.readOnly=h.readonly),ct(s,h)}};return a.options?.weekNumbers===!0?Fn(l,e,"datetime"):l};function qa({field:e,id:t,document:n}){let r=Le(n,"span",{id:t,class:"fd-pending","data-fd-pending":e.type});return{element:r,focus:()=>{},update(i){r.textContent=Sn(i.value,e)}}}function Sn(e,t){if(e==null)return"";switch(t.type){case"many2one":case"reference":return e.label;case"many2many":return e.map(n=>n.label).join(", ");case"one2many":{let n=e.length;return`${n} ${n===1?"line":"lines"}`}case"binary":case"image":return[e].flat().map(n=>n.name).join(", ");case"html":return String(e).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();default:return typeof e=="object"?JSON.stringify(e):String(e)}}var Yi={char:Ct("text"),"char.email":Ct("email"),"char.phone":Ct("tel"),"char.url":Ct("url"),"char.password":Ct("password"),"char.time":Ct("time"),"char.tags":Qn,text:Da,integer:br,float:br,monetary:br,"integer.rating":Ki("rating"),"integer.scale":Ki("scale"),"integer.slider":ur,"float.slider":ur,"integer.progressbar":Ut,"integer.label":_t,"float.label":_t,"monetary.label":_t,"float.progressbar":Ut,"monetary.progressbar":Ut,boolean:yr(),"boolean.toggle":yr("switch"),"boolean.tick":yr("tick"),"boolean.buttons":Gi,selection:Ha,"selection.radio":Ji("radio"),"selection.checkboxes":Ji("checkbox"),"selection.tags":Ii,"selection.image-choice":Di,"selection.ranking":Wi,"selection.statusbar":En,date:Ba,datetime:ja,many2one:Zn,"many2one.statusbar":En,many2many:wn,"many2many.tags":wn,"many2many.checkboxes":er,reference:tr,one2many:nr,"one2many.cards":ji,binary:ir,"binary.signature":Oi,image:or,html:cr,json:fr,"json.address":Hi,properties:dr,matrix:$i};var Xi=`.fd-signature{display:grid;gap:8px;justify-items:start;width:100%;max-width:480px;min-width:0}.fd-signature-box{position:relative;width:100%;aspect-ratio:10 / 3;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:#fff;overflow:hidden}.fd-signature-box:has(.fd-signature-pad:not([hidden]):not(.fd-signature-locked)):hover{border-color:var(--fd-accent)}.fd-signature-pad,.fd-signature-image{display:block;width:100%;height:100%}.fd-signature-pad{touch-action:none;cursor:crosshair}.fd-signature-pad.fd-signature-locked{cursor:default}.fd-signature-image{object-fit:contain}.fd-signature-hint{position:absolute;inset-inline:18px;inset-block-end:16px;padding-block-start:4px;pointer-events:none;border-block-start:1px solid var(--fd-border-strong);color:var(--fd-muted);font-size:12.5px}.fd-signature-tools{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;width:100%}.fd-signature-typed{flex:1 1 200px;min-width:0}.fd-signature-footer{margin-block-start:-4px;color:var(--fd-muted);font-size:12.5px}.fd-slider{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;row-gap:0;align-items:center;width:100%;max-width:440px;min-width:0}.fd-slider-track{display:contents}.fd-slider-input{width:100%;min-width:0;height:26px;margin:0;accent-color:var(--fd-accent);cursor:pointer}.fd-slider-input:disabled{cursor:default}.fd-slider-value{min-width:2.5em;text-align:start;font-variant-numeric:tabular-nums;font-weight:600}.fd-slider-ends{grid-column:1;display:flex;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--fd-muted);font-variant-numeric:tabular-nums}.fd-slider-empty .fd-slider-input{filter:grayscale(1);opacity:.55}.fd-slider-empty .fd-slider-value{color:var(--fd-muted);font-weight:400}.fd-slider .fd-choice-clear{grid-column:1 / -1}.fd-image-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr));gap:12px;width:100%;min-width:0}.fd-image-card{position:relative;display:grid;grid-template-rows:auto 1fr;padding:0;margin:0;overflow:hidden;cursor:pointer;font:inherit;color:var(--fd-text);text-align:start;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);transition:border-color .15s ease,box-shadow .15s ease}.fd-image-card:hover:not(:disabled){border-color:var(--fd-accent)}.fd-image-card:disabled{cursor:default}.fd-image-card:disabled:not([aria-checked=true]){opacity:.6}.fd-image-card[aria-checked=true]{border-color:var(--fd-accent);box-shadow:0 0 0 1px var(--fd-accent)}.fd-image-card-picture{display:block;aspect-ratio:4 / 3;background:var(--fd-page);border-block-end:1px solid var(--fd-border)}.fd-image-card-picture img{display:block;width:100%;height:100%;object-fit:cover}.fd-image-card-blank{display:grid;place-items:center;width:100%;height:100%;color:var(--fd-border-strong)}.fd-image-card-blank svg{width:36%;height:36%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.fd-image-card-words{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;font-size:13.5px;line-height:1.35}.fd-image-card-words:before{content:"";flex:none;width:16px;height:16px;margin-block-start:1px;box-sizing:border-box;border:1.5px solid var(--fd-border-strong);border-radius:50%;background:var(--fd-surface)}.fd-image-card[role=checkbox] .fd-image-card-words:before{border-radius:4px}.fd-image-card[aria-checked=true] .fd-image-card-words:before{border-color:var(--fd-accent);background:var(--fd-accent);box-shadow:inset 0 0 0 3px var(--fd-surface)}.fd-image-card[role=checkbox][aria-checked=true] .fd-image-card-words:before{box-shadow:none;background:var(--fd-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 13px no-repeat}.fd-image-choices+.fd-choice-clear{justify-self:end}.fd-ranking{width:100%;max-width:480px;min-width:0}.fd-rank-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.fd-rank-item{display:flex;align-items:center;gap:10px;padding-block:5px;padding-inline:8px 5px;min-height:40px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);cursor:grab;user-select:none;-webkit-user-select:none}.fd-rank-item.fd-rank-lifted{position:relative;z-index:1;cursor:grabbing;border-color:var(--fd-accent);box-shadow:0 6px 18px #0f141929}.fd-ranking-locked .fd-rank-item{cursor:default}.fd-rank-grip{flex:none;width:10px;height:16px;touch-action:none;background:radial-gradient(circle,var(--fd-border-strong) 1.3px,transparent 1.7px) 0 0 / 5px 5.33px}.fd-ranking-locked .fd-rank-grip{visibility:hidden}.fd-rank-place{flex:none;display:grid;place-items:center;min-width:24px;height:24px;padding-inline:4px;border-radius:999px;background:var(--fd-accent-soft);color:var(--fd-accent);font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}.fd-rank-words{flex:1;min-width:0;overflow-wrap:anywhere}.fd-rank-tools{flex:none;display:inline-flex;gap:2px}.fd-rank-move{width:30px;height:30px;padding:0;font:inherit;font-size:15px;line-height:1;color:var(--fd-muted);background:none;border:1px solid transparent;border-radius:4px;cursor:pointer}.fd-rank-move:hover:not(:disabled){background:var(--fd-page);border-color:var(--fd-border);color:var(--fd-text)}.fd-rank-move:disabled{opacity:.3;cursor:default}.fd-address{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;width:100%;max-width:560px;min-width:0}.fd-address-part{display:grid;gap:3px;min-width:0;align-content:start}.fd-address-street,.fd-address-line2{grid-column:1 / -1}.fd-address-part.fd-required>.fd-address-label:after{content:" *";color:var(--fd-error)}.fd-address-label{font-size:12.5px;color:var(--fd-muted)}@container (max-width: 420px){.fd-address{grid-template-columns:minmax(0,1fr)}}.fd-repeat{display:grid;gap:10px;justify-items:start;width:100%;min-width:0}.fd-repeat-list{display:grid;gap:10px;width:100%;min-width:0}.fd-repeat-list:empty{display:none}.fd-repeat-card{display:grid;gap:8px;min-width:0;padding:10px 14px 14px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-radius),6px)}.fd-repeat-head{display:flex;align-items:center;gap:2px;min-height:28px}.fd-repeat-title{font-weight:600;font-size:13.5px;margin-inline-end:auto}.fd-repeat-remove,.fd-repeat-tool{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:18px;line-height:1;padding:4px 8px;border-radius:4px}.fd-repeat-remove:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-repeat-tool{font-size:15px}.fd-repeat-tool:hover{color:var(--fd-accent);background:var(--fd-accent-soft)}.fd-repeat-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px 14px}.fd-repeat-field{display:grid;gap:3px;min-width:0;align-content:start}.fd-repeat-label{font-size:12.5px;color:var(--fd-muted)}.fd-repeat-add{border-style:dashed}`;var Zi='.fd-yes-no button{min-width:76px}.fd-choices-columns{display:grid;grid-template-columns:repeat(var(--fd-choice-columns),minmax(0,1fr))}.fd-choices-row{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}.fd-choice-limit{grid-column:1 / -1;flex-basis:100%;font-size:12.5px;color:var(--fd-muted)}.fd-choice-limit:empty{display:none}.fd-image-choices[data-size=small]{--fd-card: 96px}.fd-image-choices[data-size=large]{--fd-card: 210px}.fd-image-choices[data-size]{grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--fd-card, 130px)),1fr))}.fd-image-choices[data-fit=whole] img{object-fit:contain}.fd-image-choices-bare .fd-image-card-words{position:absolute;inset-block-start:6px;inset-inline-start:6px;padding:0;font-size:0}.fd-choice-search .fd-combo:after{content:"";position:absolute;inset-inline-end:12px;width:6px;height:6px;margin-block-start:-4px;pointer-events:none;border:solid var(--fd-muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.fd-rank-pool{display:flex;flex-wrap:wrap;gap:8px;margin-block:6px 10px}.fd-rank-pick{min-height:32px;padding:4px 12px;font:inherit;color:inherit;cursor:pointer;background:var(--fd-surface);border:1px dashed var(--fd-border-strong);border-radius:999px}.fd-rank-pick:disabled{opacity:.5;cursor:default}.fd-rank-list:empty{display:none}.fd-rank-keep{margin-block-start:8px}.fd-matrix-pick{display:inline-flex;align-items:center;gap:8px}.fd-matrix-column{display:none}@container (max-width: 520px){.fd-choices-columns{grid-template-columns:minmax(0,1fr)}.fd-image-choices.fd-image-choices{grid-auto-flow:row;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr))}.fd-matrix-table,.fd-matrix-table :is(tbody,tr,th,td){display:block}.fd-matrix-table thead{display:none}.fd-matrix-table tr{padding:10px 12px;margin-block-end:10px;border:1px solid var(--fd-border);border-radius:var(--fd-radius)}.fd-matrix-table :is(th,td){padding:2px 0;border:0;text-align:start}.fd-matrix-pick{min-height:32px}.fd-matrix-column{display:inline}}';var Qi='.fd-counted{display:grid;gap:2px;min-width:0}.fd-count{justify-self:end;direction:ltr;unicode-bidi:isolate;font-size:12px;color:var(--fd-muted);font-variant-numeric:tabular-nums}.fd-count-near{color:var(--fd-warning);font-weight:600}.fd-number:not(.fd-currency-picked){position:relative;display:block}.fd-number>.fd-unit{position:absolute;inset-block:0;display:flex;align-items:center;pointer-events:none;color:var(--fd-muted)}.fd-number>.fd-unit:first-child{inset-inline-start:var(--fd-pad-x)}.fd-number>.fd-unit:last-child{inset-inline-end:var(--fd-pad-x)}.fd-rating-heart button.fd-on{color:#e5484d}.fd-rating-thumb button.fd-on{color:var(--fd-accent)}.fd-rating .fd-icon{display:block;width:1em;height:1em}.fd-rating .fd-on .fd-icon{fill:currentColor}.fd-slider-word{display:block;max-width:12em}.fd-slider-last{text-align:end}.fd-nps [data-tone=low]{--fd-tone: var(--fd-error);--fd-tone-soft: var(--fd-error-soft)}.fd-nps [data-tone=mid]{--fd-tone: var(--fd-warning);--fd-tone-soft: var(--fd-warning-soft)}.fd-nps [data-tone=high]{--fd-tone: var(--fd-success);--fd-tone-soft: var(--fd-success-soft)}.fd-nps button{background:var(--fd-tone-soft);border-color:var(--fd-tone);color:var(--fd-tone);font-weight:600}.fd-nps button.fd-on{background:var(--fd-tone);border-color:var(--fd-tone);color:var(--fd-surface)}.fd-nps [data-value="7"],.fd-nps [data-value="9"]{margin-inline-start:8px}.fd-choices-box>.fd-scale-box{justify-self:start}';var eo='.fd-grid>.fd-section[data-place=tracks]{--fd-tracks: min(var(--fd-span, 1), var(--fd-cols));grid-template-columns:subgrid;column-gap:var(--fd-gap-x)}.fd-form .fd-section[data-place=tracks]>.fd-grid{--fd-cols: var(--fd-tracks);grid-column:1 / -1;grid-template-columns:subgrid}.fd-section[data-place]>.fd-section-description{grid-column:1 / -1}.fd-grid>.fd-section[data-place=shared]{container-type:inline-size}.fd-form .fd-section[data-place=shared]>.fd-grid{--fd-cols: var(--fd-columns, 1)}@container (max-width: 330px){.fd-form .fd-section[data-place=shared]>.fd-grid{--fd-cols: 1}}.fd-form{--fd-ground: transparent}.fd-card,.fd-form[data-fd-skin=outlined] .fd-section[data-style=card][data-on-page]{--fd-ground: var(--fd-surface)}fieldset.fd-section[data-style]{background-color:var(--fd-ground)}.fd-form .fd-section[data-style=line]>.fd-section-title{border-block-end:1px solid var(--fd-border);padding-block-end:8px}.fd-form .fd-section[data-style=plain]>.fd-section-title{border-block-end:0;padding-block-end:0}.fd-form .fd-section[data-style=framed]{border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);padding:6px 18px 18px}.fd-form .fd-section[data-style=framed]>.fd-section-title{float:none;width:auto;max-width:100%;padding:0 6px;margin-inline-start:-6px;border:0}.fd-form .fd-field[data-labels]{grid-template-columns:minmax(0,1fr)}.fd-form .fd-field[data-labels]>*{grid-column:1 / -1}.fd-form .fd-field[data-labels=beside]{container-type:inline-size;grid-template-columns:minmax(0,var(--fd-label-width, 140px)) minmax(0,1fr);column-gap:14px}@container (min-width: 300px){.fd-form .fd-field[data-labels=beside]>.fd-label{grid-column:1;align-self:start;padding-block-start:max(0px,calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-field[data-labels=beside]>:not(.fd-label){grid-column:2}}.fd-form .fd-field[data-labels=hidden]>.fd-label{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-form .fd-field[data-labels=after]{grid-template-columns:auto minmax(0,1fr);column-gap:9px;align-items:start;--fd-tick-drop: max(0px, calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-field[data-labels=after]>:is(.fd-tick,:has(>.fd-tick)){grid-column:1;grid-row:1;display:flex;margin-block-start:calc(var(--fd-tick-drop) + (1.45em - 17px) / 2)}.fd-form .fd-field[data-labels=after] .fd-tick{width:17px;height:17px}.fd-form .fd-field[data-labels=after]>:not(.fd-tick,:has(>.fd-tick)){grid-column:2}.fd-form .fd-field[data-labels=after]>.fd-label{grid-row:1;margin-block-start:var(--fd-tick-drop);font-weight:inherit;line-height:1.45;cursor:pointer}.fd-form .fd-field[data-labels=beside]:focus-within,.fd-grid>.fd-section[data-place=shared]:focus-within{z-index:3}:is(.fd-grid,.fd-sections)>.fd-button{justify-self:start}.fd-form .fd-text-note{background:color-mix(in srgb,var(--fd-text) 6%,transparent);color:var(--fd-text);border-radius:var(--fd-control-radius, 6px);padding:10px 12px}:is(.fd-form,.fd-form-dialog)[data-font=serif]{--fd-font: "Source Serif 4", Georgia, serif}:is(.fd-form,.fd-form-dialog)[data-font=rounded]{--fd-font: Nunito, "Varela Round", system-ui}:is(.fd-form,.fd-form-dialog)[data-density=compact]{--fd-gap-y: 10px;--fd-gap-x: 16px;--fd-control-height: 30px;--fd-gap-block: 16px;--fd-group-pad: 14px 16px}:is(.fd-form,.fd-form-dialog)[data-density=comfortable]{--fd-gap-y: 16px;--fd-gap-x: 20px;--fd-control-height: 36px;--fd-gap-block: 22px;--fd-group-pad: 18px 22px}:is(.fd-form,.fd-form-dialog)[data-density=roomy]{--fd-gap-y: 22px;--fd-gap-x: 28px;--fd-control-height: 42px;--fd-gap-block: 30px;--fd-group-pad: 24px 30px}:is(.fd-form,.fd-form-dialog)[data-corners=square]{--fd-radius: 0px;--fd-control-radius: 0px}:is(.fd-form,.fd-form-dialog)[data-corners=soft]{--fd-radius: 10px;--fd-control-radius: 6px}:is(.fd-form,.fd-form-dialog)[data-corners=round]{--fd-radius: 16px;--fd-control-radius: 12px}.fd-form[data-scheme]{color-scheme:light;background:var(--fd-page);color:var(--fd-text);border-radius:var(--fd-radius);--fd-ground: var(--fd-page)}.fd-form[data-scheme]>.fd-content:not(:has(>.fd-sheet-page)){padding:20px}.fd-form-dialog-body>.fd-form[data-scheme]{background:none;border-radius:0}.fd-form-dialog-body>.fd-form[data-scheme]>.fd-content:not(:has(>.fd-sheet-page)){padding:0}:is(.fd-form,.fd-form-dialog)[data-scheme=dark]{color-scheme:dark;--fd-text: #e8eaed;--fd-muted: #a3a9b2;--fd-page: #16191e;--fd-surface: #1f2329;--fd-border: #3a4048;--fd-border-strong: #59616c;--fd-accent: #5aa2ff;--fd-accent-text: #0b1220;--fd-accent-soft: rgba(90, 162, 255, .16);--fd-focus: #5aa2ff;--fd-error: #ff8a7a;--fd-error-soft: rgba(255, 138, 122, .13);--fd-success: #6fd08e;--fd-success-soft: rgba(111, 208, 142, .14);--fd-warning: #f2b55c;--fd-warning-soft: rgba(242, 181, 92, .13);--fd-info: #7db7ff;--fd-info-soft: rgba(90, 162, 255, .14)}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto]{color-scheme:dark;--fd-text: #e8eaed;--fd-muted: #a3a9b2;--fd-page: #16191e;--fd-surface: #1f2329;--fd-border: #3a4048;--fd-border-strong: #59616c;--fd-accent: #5aa2ff;--fd-accent-text: #0b1220;--fd-accent-soft: rgba(90, 162, 255, .16);--fd-focus: #5aa2ff;--fd-error: #ff8a7a;--fd-error-soft: rgba(255, 138, 122, .13);--fd-success: #6fd08e;--fd-success-soft: rgba(111, 208, 142, .14);--fd-warning: #f2b55c;--fd-warning-soft: rgba(242, 181, 92, .13);--fd-info: #7db7ff;--fd-info-soft: rgba(90, 162, 255, .14)}}:is(.fd-form,.fd-form-dialog)[data-accent]{--fd-accent: var(--fd-look-accent);--fd-accent-text: var(--fd-look-accent-text);--fd-focus: var(--fd-look-accent);--fd-accent-soft: color-mix(in srgb, var(--fd-accent) 12%, var(--fd-surface));--fd-accent-hover: color-mix(in srgb, var(--fd-accent) 84%, var(--fd-text))}:is(.fd-form,.fd-form-dialog)[data-scheme=dark][data-accent]{--fd-accent: var(--fd-look-accent-dark);--fd-accent-text: var(--fd-look-accent-dark-text);--fd-focus: var(--fd-look-accent-dark)}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto][data-accent]{--fd-accent: var(--fd-look-accent-dark);--fd-accent-text: var(--fd-look-accent-dark-text);--fd-focus: var(--fd-look-accent-dark)}}:is(.fd-form,.fd-form-dialog)[data-fd-skin=outlined][data-accent]{--fd-focus-ring: 0 0 0 2px color-mix(in srgb, var(--fd-accent) 22%, transparent)}:is(.fd-form,.fd-form-dialog)[data-accent] .fd-button-primary:hover{filter:none;background:var(--fd-accent-hover);border-color:var(--fd-accent-hover)}.fd-form[data-accent] .fd-page-head{border-block-end:3px solid var(--fd-accent);padding-block-end:14px}';var Ua='.fd-form,.fd-theme:is([data-fd-skin],:not(.fd-form *)){--fd-font: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Arabic", sans-serif;--fd-text: #212529;--fd-muted: #636976;--fd-page: #f2f3f5;--fd-surface: #ffffff;--fd-border: #cfd4da;--fd-border-strong: #9aa3ad;--fd-accent: #002855;--fd-accent-text: #ffffff;--fd-accent-soft: #e6ebf2;--fd-focus: #002855;--fd-focus-ring: none;--fd-error: #c62828;--fd-error-soft: #fdecea;--fd-success: #2e7d32;--fd-success-soft: #e8f5e9;--fd-warning: #8a5300;--fd-warning-soft: #fff4e0;--fd-info: #0b5cad;--fd-info-soft: #e7f0fb;--fd-radius: 0px;--fd-control-radius: 0px;--fd-pad-y: 3px;--fd-pad-x: 4px;--fd-input-border: 0 0 1px 0;--fd-label-weight: 600;--fd-gap-x: 32px;--fd-gap-y: 14px;container-type:inline-size;font-family:var(--fd-font);font-size:14px;line-height:1.45;color:var(--fd-text);-webkit-text-size-adjust:100%}.fd-form[data-fd-skin=outlined],.fd-theme[data-fd-skin=outlined]{--fd-text: rgba(0, 0, 0, .88);--fd-muted: rgba(0, 0, 0, .55);--fd-page: #f5f5f5;--fd-border: #d9d9d9;--fd-border-strong: #bfbfbf;--fd-accent: #1365d9;--fd-accent-soft: #e6f4ff;--fd-focus: #1365d9;--fd-focus-ring: 0 0 0 2px rgba(5, 145, 255, .12);--fd-error: #c63c3d;--fd-error-soft: #fff2f0;--fd-radius: 8px;--fd-control-radius: 6px;--fd-pad-y: 4px;--fd-pad-x: 11px;--fd-input-border: 1px;--fd-label-weight: 400;--fd-gap-x: 24px;--fd-gap-y: 18px}.fd-form *,.fd-form *:before,.fd-form *:after{box-sizing:border-box}.fd-form [hidden]{display:none!important}.fd-page-head{display:grid;gap:4px;margin-block-end:20px}.fd-page-title{font-size:22px;font-weight:650;margin:0;line-height:1.25}.fd-page-description{color:var(--fd-muted);margin:0}.fd-form[data-max-width=narrow]{--fd-page-max: 640px}.fd-form[data-max-width=medium]{--fd-page-max: 900px}.fd-form[data-max-width=wide]{--fd-page-max: 1180px}.fd-form[data-max-width=full]{--fd-page-max: none}.fd-form[data-max-width]>.fd-content:not(:has(>.fd-sheet-page)){max-width:var(--fd-page-max);margin-inline:auto}.fd-actions.fd-actions-top{margin-block-start:0;padding-block-end:14px;margin-block-end:18px;border-block-end:1px solid var(--fd-border)}.fd-icon{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}.fd-section-title .fd-icon,.fd-tab .fd-icon,.fd-button .fd-icon,.fd-step-title .fd-icon{margin-inline-end:.4em}.fd-section-title .fd-icon{color:var(--fd-muted)}.fd-grid{--fd-cols: var(--fd-columns, 1);--fd-span: 1;display:grid;grid-template-columns:repeat(var(--fd-cols),minmax(0,1fr));gap:var(--fd-gap-y) var(--fd-gap-x);align-items:start}.fd-grid>*{grid-column:span min(var(--fd-span, 1),var(--fd-cols))}.fd-field{display:grid;gap:4px;min-width:0}.fd-label{font-weight:var(--fd-label-weight);color:var(--fd-text)}.fd-valid-mark{color:var(--fd-success);width:1em;height:1em;margin-inline-start:6px;vertical-align:-.15em;stroke-width:2.4}.fd-field.fd-required>.fd-label:after{content:" *";color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:after{content:""}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:before{content:"* ";color:var(--fd-error)}.fd-help{color:var(--fd-muted);font-size:12.5px}.fd-page-title,.fd-page-description,.fd-section-description,.fd-label,.fd-help,.fd-text-heading,.fd-text-paragraph,.fd-text-note,.fd-choice>span{unicode-bidi:plaintext;text-align:match-parent;text-align:-webkit-match-parent}.fd-error{color:var(--fd-error);font-size:12.5px}.fd-warning{color:var(--fd-warning);background:var(--fd-warning-soft);font-size:12.5px;padding:3px 8px;border-radius:var(--fd-control-radius);justify-self:start}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels])){grid-template-columns:var(--fd-label-width, 11em) minmax(0,1fr);column-gap:12px;align-items:baseline}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>.fd-label{grid-column:1}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]>*{grid-column:1!important}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>:not(.fd-label){grid-column:2}@container (max-width: 760px){.fd-form[data-fd-skin=underline] .fd-grid{--fd-cols: 1}.fd-form .fd-grid[data-columns-medium]{--fd-cols: var(--fd-columns-medium)}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field:where(:not([data-labels])){grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field:where(:not([data-labels]))>*{grid-column:1!important}}@container (max-width: 520px){.fd-grid{--fd-cols: 1}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels])){grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>*{grid-column:1!important}.fd-form .fd-grid[data-columns-medium],.fd-form .fd-grid[data-columns-narrow]{--fd-cols: var(--fd-columns-narrow, 1)}.fd-form .fd-file-viewer>:first-child{padding-inline-end:16px}.fd-form .fd-file-viewer h2{flex-basis:100%;margin-inline-end:36px}}.fd-input{width:100%;min-width:0;font:inherit;color:inherit;background:var(--fd-surface);border:solid var(--fd-border);border-width:var(--fd-input-border);border-radius:var(--fd-control-radius);padding:var(--fd-pad-y) var(--fd-pad-x);min-height:var(--fd-control-height, 30px);transition:border-color .15s ease,box-shadow .15s ease}.fd-input::placeholder{color:var(--fd-muted);opacity:.8}.fd-input:hover{border-color:var(--fd-border-strong)}.fd-input:focus{outline:none;border-color:var(--fd-focus);box-shadow:var(--fd-focus-ring)}.fd-form[data-fd-skin=underline] .fd-input{background:transparent}.fd-form[data-fd-skin=underline] .fd-input:focus{box-shadow:0 1px 0 0 var(--fd-focus)}.fd-form[data-fd-skin=underline] .fd-field.fd-required .fd-input{border-color:var(--fd-accent)}.fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0}.fd-form[data-fd-skin=outlined] .fd-input[readonly]{background:#0000000a;border-color:var(--fd-border);padding-inline:var(--fd-pad-x);color:var(--fd-muted)}.fd-form[data-readonly] .fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text)}.fd-form[data-readonly] .fd-input::placeholder{color:transparent}.fd-form[data-readonly] select.fd-input:disabled{appearance:none;background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text);opacity:1}.fd-input[aria-invalid=true]{border-color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-input[aria-invalid=true]:focus{box-shadow:0 0 0 2px #ff26050f}.fd-textarea{resize:vertical;min-height:64px}.fd-select{appearance:auto}.fd-number{display:flex;align-items:baseline;gap:6px}.fd-number-input{font-variant-numeric:tabular-nums}.fd-currency{color:var(--fd-muted);font-size:12.5px;font-weight:600}.fd-currency-after>.fd-number-input{text-align:end}.fd-currency-picked{align-items:center}.fd-currency-picked>:not(.fd-number-input){flex:0 0 104px;min-width:0}.fd-currency-picked>.fd-number-input{flex:1 1 auto;min-width:0}.fd-pending{color:var(--fd-muted);font-style:italic}.fd-pending:empty:before{content:"\u2014"}.fd-checkbox,.fd-choice input{width:16px;height:16px;accent-color:var(--fd-accent);margin:0}.fd-switch{appearance:none;width:34px;height:20px;margin:0;border-radius:999px;position:relative;background:var(--fd-border-strong);cursor:pointer;transition:background .2s ease}.fd-switch:after{content:"";position:absolute;inset-block-start:2px;inset-inline-start:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s ease;box-shadow:0 1px 2px #00000040}.fd-switch:checked{background:var(--fd-accent)}.fd-switch:checked:after{transform:translate(14px)}[dir=rtl] .fd-switch:checked:after{transform:translate(-14px)}.fd-choices{display:flex;flex-wrap:wrap;gap:6px 18px}.fd-choice{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.fd-choice-other{cursor:default;flex:1 1 260px;max-width:420px;min-width:0}.fd-choice-other-pick{display:inline-flex;align-items:center;gap:8px;cursor:pointer;flex:none}.fd-choice-other .fd-other-input{flex:1;min-width:6em;width:auto;min-height:30px;padding-block:2px}.fd-scale-box{display:inline-grid;gap:4px;max-width:100%}.fd-scale-ends{display:flex;justify-content:space-between;gap:16px;font-size:12.5px;color:var(--fd-muted)}.fd-choices-box{display:grid;gap:6px;min-width:0}.fd-choice-clear{justify-self:end;font:inherit;font-size:13px;color:var(--fd-muted);background:none;border:0;padding:2px 4px;border-radius:4px;cursor:pointer}.fd-choice-clear:hover{color:var(--fd-text);text-decoration:underline;text-underline-offset:3px}.fd-lines-table .fd-choice-clear,.fd-grid-editor .fd-choice-clear{display:none}.fd-points{display:flex;flex-wrap:wrap;gap:6px}.fd-points button{font:inherit;cursor:pointer;border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-text);border-radius:var(--fd-control-radius);min-width:34px;height:34px;padding:0 8px}.fd-points button.fd-on{background:var(--fd-accent);color:var(--fd-accent-text);border-color:var(--fd-accent)}.fd-rating button{border:none;background:none;font-size:24px;color:var(--fd-border-strong);padding:0 2px;min-width:0}.fd-rating button.fd-on{background:none;color:#f5a623}.fd-points button:disabled,.fd-choice input:disabled{cursor:default}.fd-form :focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-form .fd-input:focus-visible{outline:none}.fd-combo{position:relative;display:flex;align-items:center;min-width:0}.fd-combo-input{padding-inline-end:30px}.fd-combo-clear{position:absolute;inset-inline-end:3px;border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:0 4px;border-radius:4px;min-width:24px;min-height:24px;display:inline-grid;place-items:center}.fd-combo-clear:hover{color:var(--fd-text);background:var(--fd-page)}.fd-combo:has(>.fd-combo-open:not([hidden])) .fd-combo-input{padding-inline-end:56px}.fd-combo-open{position:absolute;inset-inline-end:29px;border:none;background:none;cursor:pointer;color:var(--fd-accent);font-size:14px;line-height:1;padding:0 4px;border-radius:4px;min-width:24px;min-height:24px;display:inline-grid;place-items:center}.fd-combo-open:hover{background:var(--fd-page)}.fd-listbox{position:absolute;inset-inline:0;inset-block-start:calc(100% + 2px);z-index:20;margin:0;padding:4px 0;list-style:none;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),4px);box-shadow:0 8px 24px #0f14191f;max-height:240px;overflow-y:auto}.fd-option{padding:6px 12px;cursor:pointer}.fd-option:hover,.fd-option.fd-active{background:var(--fd-accent-soft)}.fd-option-create{color:var(--fd-accent);border-block-start:1px solid var(--fd-border)}.fd-empty{padding:6px 12px;color:var(--fd-muted);font-style:italic}.fd-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0}.fd-chips{display:contents;list-style:none;margin:0;padding:0}.fd-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 4px 1px 10px;border-radius:999px;background:var(--fd-accent-soft);color:var(--fd-text);font-size:13px;line-height:22px}button.fd-chip-label{border:none;padding:0;background:none;font:inherit;color:inherit;cursor:pointer}button.fd-chip-label:hover{text-decoration:underline}.fd-chip-remove{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:15px;line-height:1;padding:0 4px;border-radius:999px}.fd-chip-remove:hover{color:var(--fd-error)}.fd-tags .fd-combo{flex:1 1 140px}.fd-reference{display:grid;grid-template-columns:minmax(7em,34%) minmax(0,1fr);gap:8px}.fd-lines{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0}.fd-lines-scroll{overflow-x:auto;min-width:0;position:relative}.fd-lines-table{width:100%;border-collapse:collapse;font-size:13.5px}.fd-lines-table th{text-align:start;font-weight:600;color:var(--fd-muted);font-size:12.5px;padding:6px 8px;border-block-end:1px solid var(--fd-border);white-space:nowrap}.fd-lines-table td{padding:4px 8px;border-block-end:1px solid var(--fd-border);vertical-align:top;min-width:7em}.fd-lines-table td.fd-lines-tools,.fd-lines-table th.fd-lines-tools{width:32px;min-width:32px;padding-inline:0;text-align:center}.fd-lines-table .fd-input{min-height:28px}.fd-lines-table td>.fd-checkbox,.fd-lines-table td>.fd-switch{margin-block-start:6px}.fd-lines-table .fd-lines-grip{width:1px;min-width:0;padding-inline:6px 2px}.fd-line-grip{display:block;margin-block-start:7px;cursor:grab}.fd-line-delete{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:4px 6px;border-radius:4px}.fd-line-delete:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-lines-totals td{padding:8px;font-weight:600;border-block-start:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-lines-adds{display:flex;flex-wrap:wrap;gap:4px 16px;justify-self:start}.fd-line-section td{background:var(--fd-page)}.fd-line-section .fd-input{font-weight:600}.fd-line-note .fd-input{font-style:italic}.fd-cell-error{color:var(--fd-error);font-size:12px}.fd-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-file{display:grid;gap:8px;justify-items:start;padding:6px 0;border-radius:var(--fd-control-radius);min-width:0}.fd-file.fd-dragging{outline:2px dashed var(--fd-accent);outline-offset:4px}.fd-file-pick{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;cursor:pointer}.fd-file input:focus-visible+.fd-file-pick{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-files-list .fd-file-pick{justify-self:stretch;padding:10px 14px;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-file-pick:hover,.fd-dragging .fd-file-pick{border-color:var(--fd-accent)}.fd-files{list-style:none;margin:0;padding:0;display:grid;gap:6px;justify-self:stretch;min-width:0}.fd-files:empty{display:none}.fd-file-item{position:relative;display:flex;align-items:center;gap:2px;min-width:0}.fd-file-open{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:5px 8px;font:inherit;color:inherit;text-align:start;cursor:pointer;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-control-radius)}.fd-file-open:hover{border-color:var(--fd-accent)}.fd-file-thumb,.fd-file-icon{flex:none;width:36px;height:36px;border-radius:3px;object-fit:cover}.fd-file-icon{display:grid;place-items:end center;padding-block-end:4px;font-size:9px;font-weight:700;color:#fff;background:var(--fd-kind, #5b6573);clip-path:polygon(0 0,68% 0,100% 28%,100% 100%,0 100%)}.fd-file-icon[data-kind=pdf]{--fd-kind: #c62828}.fd-file-icon[data-kind=doc]{--fd-kind: #1f5fbf}.fd-file-icon[data-kind=sheet]{--fd-kind: #1d7a3e}.fd-file-icon[data-kind=zip]{--fd-kind: #8a5300}.fd-file-name{flex:1;display:flex;min-width:0;white-space:pre}.fd-file-name>span{overflow:hidden;text-overflow:ellipsis}.fd-file-size{color:var(--fd-muted);font-size:12.5px;font-variant-numeric:tabular-nums;unicode-bidi:plaintext}.fd-file-remove{flex:none;width:32px;height:32px;border:none;border-radius:999px;background:none;color:var(--fd-muted);font-size:20px;line-height:1;cursor:pointer}.fd-file-remove:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-file-confirm:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px}.fd-file-note:empty{display:none}.fd-file-note{color:var(--fd-warning)}.fd-files-thumbs{display:flex;flex-wrap:wrap;align-items:flex-start}.fd-files-thumbs>*{flex-basis:100%;order:2}.fd-files-thumbs>.fd-files{display:contents}.fd-files-thumbs .fd-file-item,.fd-image-pick{flex:none;width:96px;height:96px;order:0}.fd-files-thumbs>.fd-file-count{order:-1}.fd-files-thumbs .fd-file-open{height:100%;padding:6px;flex-direction:column;justify-content:center;gap:4px;overflow:hidden;font-size:12px}.fd-files-thumbs .fd-file-thumb{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit}.fd-files-thumbs .fd-file-name{flex:none;max-width:100%}.fd-files-thumbs .fd-file-size,.fd-files-thumbs .fd-file-thumb~*{display:none}.fd-files-thumbs .fd-file-remove{position:absolute;inset-block-start:4px;inset-inline-end:4px;width:26px;height:26px;font-size:17px;background:#0f14199e;color:#fff;opacity:0}.fd-file-item:is(:hover,:focus-within) .fd-file-remove{opacity:1}.fd-image-pick{order:1;display:grid;place-content:center;justify-items:center;gap:2px;padding:6px;text-align:center;font-size:12px;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-image-pick .fd-button{border:none;background:none;color:var(--fd-accent);padding:0;min-height:0;font-size:13px}.fd-file-viewer{max-width:1000px;height:min(88vh,100%);background:var(--fd-surface)}.fd-file-viewer>:first-child{position:relative;flex-wrap:wrap;justify-content:start;gap:6px 10px;padding-block:8px;padding-inline-end:52px}.fd-file-viewer .fd-dialog-close{position:absolute;inset-block-start:10px;inset-inline-end:10px}.fd-file-viewer h2{flex:1 1 10em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-file-step{font-size:18px;line-height:1;min-width:34px}.fd-file-viewer a{text-decoration:none}.fd-file-viewer-body{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:auto;background:var(--fd-page)}.fd-file-viewer-body img{max-width:100%;max-height:100%;object-fit:contain}.fd-file-viewer-body :is(iframe,pre){flex:1;align-self:stretch;margin:0;border:0;background:var(--fd-surface)}.fd-file-viewer-body pre{padding:14px 16px;overflow:auto;font:13px/1.5 monospace;white-space:pre-wrap;overflow-wrap:anywhere}.fd-file-none{display:grid;justify-items:center;gap:4px;padding:24px;text-align:center;color:var(--fd-muted)}.fd-file-none strong{color:var(--fd-text);overflow-wrap:anywhere}.fd-file-none .fd-file-icon{width:64px;height:64px;font-size:14px;padding-block-end:8px}.fd-richtext{min-height:96px;line-height:1.5;overflow-wrap:anywhere}.fd-richtext-box{display:grid;gap:0;min-width:0}.fd-richtext-box>.fd-richtext{border-start-start-radius:0;border-start-end-radius:0}.fd-richtext-bar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:4px;min-width:0;border:1px solid var(--fd-border);border-block-end:none;border-start-start-radius:var(--fd-control-radius);border-start-end-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-richtext-style{font:inherit;font-size:12.5px;padding:3px 6px;margin-inline-end:4px;border:1px solid var(--fd-border);border-radius:4px;background:var(--fd-surface);color:var(--fd-text)}.fd-richtext-tool{display:grid;place-items:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:none;cursor:pointer;color:var(--fd-text);font:inherit;font-size:14px}.fd-richtext-tool:hover{background:var(--fd-surface)}.fd-richtext-tool[aria-pressed=true]{background:var(--fd-accent-soft);color:var(--fd-accent)}.fd-richtext-tool svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round}.fd-richtext-tool svg circle{fill:currentColor;stroke:none}.fd-link-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px;border:1px solid var(--fd-border);border-block-end:none;background:var(--fd-surface)}.fd-link-row>.fd-input{flex:1 1 200px;min-width:0}.fd-richtext[contenteditable=false]{background:transparent;border-color:transparent;padding-inline:0;min-height:0}.fd-richtext p{margin:0 0 6px}.fd-code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12.5px;min-height:96px}.fd-sections{display:grid;gap:var(--fd-gap-block, 24px)}.fd-section{border:0;margin:0;padding:0;min-width:0;display:grid;gap:14px}.fd-section-title{font-size:15px;font-weight:650;padding:0;margin:0;float:inline-start;width:100%}.fd-section-title+*{clear:both}.fd-form[data-fd-skin=underline] .fd-section-title{text-transform:uppercase;letter-spacing:.05em;font-size:12.5px;color:var(--fd-muted);border-block-end:1px solid var(--fd-border);padding-block-end:6px;width:100%}.fd-section-description{color:var(--fd-muted);margin:0}.fd-section-toggle{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;display:inline-flex;align-items:center;gap:8px;text-align:start}.fd-section-toggle:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px;border-radius:2px}.fd-section-chevron{width:.5em;height:.5em;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-block-start:-.2em;transition:transform .15s ease;flex:none}.fd-section-folded .fd-section-chevron{transform:rotate(-45deg);margin-block-start:0}[dir=rtl] .fd-section-folded .fd-section-chevron{transform:rotate(135deg)}.fd-form[data-fd-skin=outlined] :is(.fd-sections>.fd-section:not([data-style]),.fd-section[data-style=card][data-on-page]){background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);padding:var(--fd-group-pad, 20px 24px)}.fd-tablist{display:flex;gap:2px;border-block-end:1px solid var(--fd-border);overflow-x:auto}.fd-tab{font:inherit;background:none;border:none;cursor:pointer;padding:8px 14px;color:var(--fd-muted);border-block-end:2px solid transparent;margin-block-end:-1px;white-space:nowrap}.fd-tab[aria-selected=true]{color:var(--fd-accent);border-block-end-color:var(--fd-accent);font-weight:600}.fd-tabpanel{padding-block:16px;display:grid;gap:16px}.fd-button{font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px;justify-content:center;min-height:var(--fd-control-height, 32px);padding:4px 14px;border-radius:var(--fd-control-radius);border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-text)}.fd-button:hover{border-color:var(--fd-accent);color:var(--fd-accent)}.fd-button-primary{background:var(--fd-accent);border-color:var(--fd-accent);color:var(--fd-accent-text)}.fd-button-primary:hover{color:var(--fd-accent-text);filter:brightness(1.12)}.fd-button-danger{color:var(--fd-error);border-color:var(--fd-error)}.fd-button-danger:hover{background:var(--fd-error);color:#fff}.fd-button-link{border-color:transparent;background:none;color:var(--fd-accent);padding-inline:4px}.fd-form[data-fd-skin=underline] .fd-button{border-radius:3px}.fd-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.fd-actions-end{justify-content:flex-end;margin-block-start:24px}.fd-sheet-page{background:var(--fd-page);padding:0 0 32px;min-width:0}.fd-header{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;background:var(--fd-surface);border-block-end:1px solid var(--fd-border);padding:8px 16px}.fd-statusbar{display:flex;list-style:none;margin:0;padding:0;overflow-x:auto}.fd-statusbar li{display:flex}.fd-statusbar li>*{font:inherit;font-size:13px;border:none;background:var(--fd-page);color:var(--fd-muted);padding:5px 18px 5px 22px;margin-inline-start:-6px;white-space:nowrap;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%,10px 50%)}.fd-statusbar li:first-child>*{margin-inline-start:0;padding-inline-start:14px;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%)}.fd-statusbar li>button{cursor:pointer}.fd-statusbar li>[aria-current=step]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}[dir=rtl] .fd-statusbar li>*{transform:scaleX(-1)}[dir=rtl] .fd-statusbar li>*>*{display:inline-block;transform:scaleX(-1)}.fd-sheet-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;max-width:var(--fd-page-max, 1180px);margin:16px auto 0;padding-inline:16px}.fd-sheet-layout{align-items:start}.fd-sheet-foot{margin:4px -28px -28px;padding:12px 28px;border-block-start:1px solid var(--fd-border);border-end-start-radius:inherit;border-end-end-radius:inherit}.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr) minmax(260px,360px)}@container (max-width: 1000px){.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr)}}.fd-card{position:relative;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);padding:24px 28px 28px;display:grid;gap:18px;min-width:0;container-type:inline-size}.fd-ribbon-frame{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}.fd-ribbon{position:absolute;inset-block-start:18px;inset-inline-end:-42px;transform:rotate(45deg);width:160px;text-align:center;font-size:12px;font-weight:700;padding:4px 0;color:#fff;background:var(--fd-muted);text-transform:uppercase;letter-spacing:.06em;pointer-events:none}[dir=rtl] .fd-ribbon{transform:rotate(-45deg)}.fd-ribbon.fd-tone-danger{background:var(--fd-error)}.fd-ribbon.fd-tone-success{background:var(--fd-success)}.fd-ribbon.fd-tone-warning{background:#d97706}.fd-ribbon.fd-tone-info{background:var(--fd-info)}.fd-alert{padding:10px 14px;border-radius:var(--fd-control-radius);border:1px solid;font-size:13.5px;display:flex;align-items:flex-start;gap:10px}.fd-alert-message{flex:1 1 auto;min-width:0}.fd-alert-close{border:none;background:none;color:inherit;cursor:pointer;font:inherit;font-size:18px;line-height:1;padding:0 4px;border-radius:4px;opacity:.75}.fd-alert-close:hover{opacity:1}.fd-alert-close:focus-visible{outline:2px solid var(--fd-focus);opacity:1}.fd-alert.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-alert.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-alert.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-alert.fd-tone-info,.fd-alert:not([class*=fd-tone-]){background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-stats{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0;margin:-24px -28px 0;border-block-end:1px solid var(--fd-border)}.fd-stats:empty{display:none}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden])) .fd-stats{padding-inline-end:104px}.fd-stat{font:inherit;background:none;border:none;border-inline-start:1px solid var(--fd-border);cursor:pointer;padding:8px 18px;display:grid;justify-items:start;line-height:1.2;color:var(--fd-text);min-width:120px}.fd-stat:hover{background:var(--fd-page)}.fd-stat:has(>.fd-icon){grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:10px}.fd-stat>.fd-icon{width:22px;height:22px;color:var(--fd-muted)}.fd-stat-words{display:grid;justify-items:start}.fd-stat-value{font-weight:700;font-size:15px;color:var(--fd-accent);font-variant-numeric:tabular-nums}.fd-stat-label{font-size:12.5px;color:var(--fd-muted)}.fd-title-row{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.fd-title{display:grid;gap:4px;flex:1 1 auto;min-width:0}.fd-avatar{flex:none}.fd-avatar>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-form[data-fd-skin=underline] .fd-avatar{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-avatar>*{grid-column:1!important}.fd-avatar .fd-file{justify-items:center;gap:4px 8px;padding:0;justify-content:center}.fd-avatar :is(.fd-file-item,.fd-image-pick){width:88px;height:88px}.fd-avatar :is(.fd-image-pick .fd-help,.fd-file-limits){display:none}.fd-avatar .fd-button-link{flex-basis:auto;font-size:12.5px}.fd-title>.fd-field .fd-input{font-size:24px;font-weight:600;min-height:40px}.fd-form[data-fd-skin=underline] .fd-title>.fd-field{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-title>.fd-field>*{grid-column:1}.fd-title>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-above,.fd-title-below{display:flex;flex-wrap:wrap;align-items:center;gap:6px 24px}.fd-title-above{margin-block-end:4px}.fd-title-below{margin-block-start:6px}.fd-form .fd-title-above>.fd-field,.fd-form .fd-title-below>.fd-field{display:flex;align-items:center;gap:8px;grid-template-columns:none}.fd-form .fd-title-above>.fd-field>*,.fd-form .fd-title-below>.fd-field>*{grid-column:auto!important}.fd-title-above .fd-label:empty,.fd-title-below .fd-label:empty{display:none}.fd-title-above>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-statusbar{display:flex}.fd-badges{display:flex;flex-wrap:wrap;gap:6px}.fd-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;line-height:1;padding:5px 10px;border-radius:999px;border:1px solid var(--fd-border);background:var(--fd-page);color:var(--fd-muted)}.fd-badge .fd-icon{width:13px;height:13px}.fd-badge.fd-tone-info{background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-badge.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-badge.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-badge.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-side{display:grid;gap:12px;align-content:start;min-width:0}.fd-wizard{display:grid;gap:20px}.fd-progress{display:grid;gap:8px}.fd-progress-text{color:var(--fd-muted);font-size:13px}.fd-value-text{display:block;padding-block:6px;font-variant-numeric:tabular-nums}.fd-date-pick{position:relative;display:flex;align-items:center;gap:6px;min-width:0}.fd-date-pick>.fd-input{flex:1 1 auto;min-width:0}.fd-calendar-button{flex:0 0 auto;display:grid;place-items:center;width:32px;height:32px;padding:0;cursor:pointer;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-surface);color:var(--fd-muted)}.fd-calendar-button:hover,.fd-calendar-button[aria-expanded=true]{color:var(--fd-text);background:var(--fd-page)}.fd-calendar-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.fd-calendar{position:absolute;inset-block-start:calc(100% + 4px);inset-inline-end:0;z-index:30;padding:8px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);box-shadow:0 8px 24px #0f141924}.fd-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 6px}.fd-calendar-head button{border:none;background:none;cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;border-radius:4px;color:var(--fd-text)}.fd-calendar-head button:hover{background:var(--fd-page)}.fd-calendar-title{font-weight:600}.fd-calendar-grid{border-collapse:collapse;font-variant-numeric:tabular-nums}.fd-calendar-grid th{font-size:11.5px;font-weight:600;color:var(--fd-muted);padding:4px 0;width:34px;text-align:center}.fd-calendar-grid .fd-week{color:var(--fd-accent);font-weight:600;border-inline-end:1px solid var(--fd-border)}.fd-calendar-grid td{padding:1px}.fd-calendar-grid td button{width:32px;height:30px;border:none;border-radius:4px;background:none;cursor:pointer;color:var(--fd-text);font:inherit;font-size:13px}.fd-calendar-grid td button:hover{background:var(--fd-accent-soft)}.fd-calendar-grid td button.fd-outside{color:var(--fd-muted);opacity:.6}.fd-calendar-grid td button[aria-current=date]{box-shadow:inset 0 0 0 1px var(--fd-accent)}.fd-calendar-grid td button[aria-selected=true]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}.fd-calendar-grid td button:focus-visible{outline:2px solid var(--fd-focus);outline-offset:1px}.fd-properties{display:grid;gap:8px;min-width:0}.fd-property{display:grid;grid-template-columns:minmax(120px,30%) minmax(0,1fr);align-items:center;gap:12px;min-width:0}.fd-property>label{color:var(--fd-muted);font-size:13px}.fd-property[data-type=boolean]>:last-child{justify-self:start}@container (max-width: 520px){.fd-property{grid-template-columns:minmax(0,1fr);gap:4px}}.fd-progressbar{position:relative;height:22px;min-width:120px;border-radius:999px;overflow:hidden;background:var(--fd-page);border:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-progressbar-fill{height:100%;background:var(--fd-success);transition:width .2s ease}.fd-progressbar[data-tone=warning] .fd-progressbar-fill{background:#d97706}.fd-progressbar[data-tone=danger] .fd-progressbar-fill{background:var(--fd-error)}.fd-progressbar[data-tone=info] .fd-progressbar-fill{background:var(--fd-info)}.fd-progressbar-text{position:absolute;inset-block:2px;left:50%;translate:-50% 0;display:grid;place-items:center;padding-inline:7px;border-radius:999px;background:var(--fd-surface);font-size:12px;line-height:1;font-weight:600;color:var(--fd-text)}.fd-progressbar-text:empty{display:none}.fd-progressbar-edit{display:flex;align-items:center;gap:12px;min-width:0}.fd-progressbar-edit>.fd-progressbar{flex:1 1 auto}.fd-progressbar-edit>.fd-input{flex:0 0 96px}.fd-progress-bar{height:4px;background:var(--fd-border);border-radius:999px;overflow:hidden}.fd-progress-bar>span{display:block;height:100%;background:var(--fd-accent);transition:width .25s ease}.fd-step{display:grid;gap:18px}.fd-step-title{font-size:18px;font-weight:650;margin:0}.fd-wizard-nav{display:flex;gap:8px;justify-content:space-between}.fd-steps-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0;counter-reset:fd-step}.fd-steps-list>li{counter-increment:fd-step}.fd-step-link{font:inherit;font-size:13.5px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-muted);border-radius:999px;padding:4px 12px 4px 6px}.fd-step-link:before{content:counter(fd-step);display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--fd-page);color:var(--fd-muted);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.fd-step-link:hover{border-color:var(--fd-accent);color:var(--fd-text)}.fd-step-link:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-step-link.fd-step-done{color:var(--fd-text)}.fd-step-link.fd-step-done:before{content:"\u2713";background:var(--fd-accent-soft);color:var(--fd-accent)}.fd-step-link.fd-step-skipped{border-style:dashed;color:var(--fd-muted)}.fd-step-link.fd-step-skipped:before{content:"\u2013";background:var(--fd-page);color:var(--fd-muted)}.fd-step-link[aria-current=step]{border-color:var(--fd-accent);color:var(--fd-accent);font-weight:600}.fd-step-link[aria-current=step]:before{content:counter(fd-step);background:var(--fd-accent);color:var(--fd-accent-text)}.fd-wizard-nav .fd-spacer{flex:1}.fd-text-heading{font-size:16px;font-weight:650;margin:0}.fd-matrix{overflow-x:auto;max-width:100%}.fd-matrix-table{border-collapse:collapse;min-width:100%}.fd-matrix-table th,.fd-matrix-table td{padding:6px 10px;text-align:center;border-bottom:1px solid var(--fd-border)}.fd-matrix-table thead th{font-weight:500;font-size:13px;color:var(--fd-muted)}.fd-matrix-table tbody th{text-align:start;font-weight:500}.fd-matrix-table input{accent-color:var(--fd-accent);width:16px;height:16px;margin:0}.fd-divider{grid-column:1 / -1;width:100%;border:0;border-top:1px solid var(--fd-border);margin:4px 0}.fd-block{min-width:0}.fd-spacer{min-height:24px}.fd-image{display:block;max-width:100%;height:auto;border-radius:var(--fd-radius)}.fd-figure{display:grid;justify-items:start;gap:6px;margin:0}.fd-figure[data-align=center]{justify-items:center}.fd-figure[data-align=end]{justify-items:end}.fd-figure>a,.fd-figure .fd-image{width:var(--fd-image-width, auto);max-width:100%}.fd-figure>a{display:block;border-radius:var(--fd-radius)}.fd-caption{font-size:13px;color:var(--fd-muted)}.fd-text-paragraph{margin:0}.fd-text-note{margin:0;color:var(--fd-muted);font-size:13px}.fd-status{min-height:1.4em;color:var(--fd-muted);font-size:13px}.fd-status-box{display:inline-flex;align-items:center;gap:6px;min-width:0}.fd-status-box .fd-retry{font-size:13px}.fd-announce{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 14px;margin-block-end:16px;border:1px solid #f0c47a;border-radius:var(--fd-control-radius);background:var(--fd-warning-soft);color:var(--fd-warning);font-size:13.5px}.fd-banner-text{flex:1 1 16em;min-width:0}.fd-content>.fd-banner:has(+.fd-draft+.fd-sheet-page),.fd-content>.fd-banner:has(+.fd-sheet-page){margin:12px 16px 0}.fd-status-box.fd-toast{position:fixed;inset-block-end:max(20px,env(safe-area-inset-bottom,0px));inset-inline-end:20px;z-index:900;padding:10px 16px;border-radius:8px;background:var(--fd-text);box-shadow:0 8px 24px #0f141940}.fd-toast .fd-status,.fd-toast .fd-status.fd-status-saved,.fd-toast .fd-status.fd-status-error{color:var(--fd-surface);font-size:13.5px;min-height:0}.fd-toast .fd-retry{color:var(--fd-surface);text-decoration:underline}.fd-toast:has(.fd-status-error){background:var(--fd-error)}.fd-status-box.fd-status-bar{display:flex;justify-content:center;min-height:32px;padding:6px 16px;background:var(--fd-surface);border-block-end:1px solid var(--fd-border)}.fd-status-bar .fd-status-error,.fd-status.fd-status-error{color:var(--fd-error)}.fd-status.fd-status-saved{color:var(--fd-success)}.fd-draft{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:10px 14px;margin-block-end:16px;background:var(--fd-info-soft);border:1px solid #a9c8ef;border-radius:var(--fd-control-radius)}.fd-done{padding:40px 0;text-align:center;display:grid;gap:12px;justify-items:center}.fd-done-title{font-size:20px;font-weight:650;margin:0}.fd-dialog-backdrop{position:fixed;inset:0;background:#0f141973;display:grid;place-items:center;z-index:1000;padding:16px}.fd-dialog{background:var(--fd-surface);color:var(--fd-text);border-radius:max(var(--fd-radius),6px);max-width:420px;width:100%;padding:20px 22px;display:grid;gap:16px;box-shadow:0 10px 30px #0003;font-family:var(--fd-font)}.fd-dialog p{margin:0}.fd-form-dialog{display:flex;flex-direction:column;width:100%;max-height:min(90vh,100%);min-height:0;background:var(--fd-page);color:var(--fd-text);border-radius:max(var(--fd-radius),8px);box-shadow:0 24px 64px #0f14194d;overflow:hidden}.fd-form-dialog:focus{outline:none}.fd-form-dialog.fd-size-small{max-width:440px}.fd-form-dialog.fd-size-medium{max-width:760px}.fd-form-dialog.fd-size-large{max-width:1080px}.fd-form-dialog-backdrop:has(>.fd-size-full){padding:0}.fd-form-dialog.fd-size-full{max-width:none;max-height:none;height:100%;border-radius:0}.fd-form-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-block-end:1px solid var(--fd-border);background:var(--fd-surface)}.fd-form-dialog-title{margin:0;font-size:16px;font-weight:600}.fd-dialog-close{border:none;background:none;cursor:pointer;font-size:22px;line-height:1;padding:2px 8px;border-radius:4px;color:var(--fd-muted)}.fd-dialog-close:hover{background:var(--fd-page);color:var(--fd-text)}.fd-form-dialog-body{flex:1 1 auto;min-height:0;overflow:auto;container-type:inline-size}.fd-form-dialog-body .fd-sheet-layout{margin-block-start:12px}.fd-form-dialog-body .fd-page-title{display:none}.fd-form-dialog-body .fd-page-head:not(:has(.fd-page-description)){display:none}.fd-form-dialog-body .fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr)}.fd-form-dialog-body .fd-side{display:none}.fd-search-body{display:grid;gap:12px;align-content:start}.fd-search-list{list-style:none;margin:0;padding:0;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);overflow:auto;max-height:min(60vh,520px)}.fd-search-list .fd-option{padding:8px 12px}.fd-search-list .fd-option+.fd-option{border-block-start:1px solid var(--fd-border)}.fd-search-list .fd-empty{padding:10px 12px;color:var(--fd-muted)}.fd-form-dialog-body:not(:has(.fd-sheet-layout)){background:var(--fd-surface);padding:16px 20px 20px}.fd-form-dialog-foot{padding:12px 16px;border-block-start:1px solid var(--fd-border);background:var(--fd-surface);margin:0}@media(prefers-reduced-motion:reduce){.fd-form *,.fd-form *:before,.fd-form *:after{transition:none!important}}',no=Ua+eo+Qi+Xi+Zi,to="fieldia-styles";function xr(e){if(e.getElementById(to))return;let t=e.createElement("style");t.id=to,t.textContent=no,(e.head??e.documentElement).append(t)}function vr(e){let t=()=>{try{return e??globalThis.localStorage??null}catch{return null}};return{get(n){try{let r=t()?.getItem(`fieldia:${n}`);return r==null?null:JSON.parse(r)}catch{return null}},set(n,r){try{t()?.setItem(`fieldia:${n}`,JSON.stringify(r))}catch{}}}}function _a(){let e=new Map;return{get:t=>e.has(t)?ro(e.get(t)):null,set:(t,n)=>{e.set(t,ro(n))}}}var ro=e=>JSON.parse(JSON.stringify(e));var io={};var Ga={save:"Save",edit:"Edit",done:"Done",discard:"Discard",saving:"Saving\u2026",saved:"Saved",submit:"Submit",next:"Next",back:"Back",skip:"Skip",steps:"Steps",stepOf:"Step {n} of {total}",submitted:"Thank you. Your answers were sent.",submitAnother:"Submit another response",draftFound:"You have unsaved answers from {time}.",restore:"Restore",discardDraft:"Discard",ok:"OK",cancel:"Cancel",loading:"Loading\u2026",saveClose:"Save & Close",close:"Close",dismiss:"Dismiss",retry:"Retry",notSaved:"Not saved",notSent:"Not sent",checkFields:"{what}. Check: {fields}",offline:"Could not reach the server. Your changes are still here.",previousPage:"Previous page",nextPage:"Next page",range:"{from}\u2013{to} / {total}",selected:"{n} selected",clearSelection:"Clear",selectAll:"Select all",selectRecord:"Select {name}",noRecords:"No records match.",loadFailed:"Could not load the records.",search:"Search\u2026",searchLabel:"Search",searchFor:"Search {field} for: {text}",searchOptions:"Search options",filters:"Filters",groupBy:"Group By",favourites:"Favourites",or:"or",removeFacet:"Remove {label}",addCustomFilter:"Add a custom filter",field:"Field",condition:"Condition",value:"Value",apply:"Apply",saveSearch:"Save current search",searchName:"Name of the search",useByDefault:"Use by default",deleteFavourite:"Delete {name}",noFavourites:"No saved searches yet.",opIs:"is",opIsNot:"is not",opContains:"contains",opGreater:"greater than",opLess:"less than",opSet:"is set",opNotSet:"is not set",yes:"Yes",no:"No",none:"None",loadMore:"Show {n} more"},Ge={en:Ga,...io},ao=Ge.en,Ja=new Map([["ar","Arabic"],["de","German"],["fr","French"]]),oo=new Set;function Jt(e="en"){let t=e.split("-")[0];if(Object.prototype.hasOwnProperty.call(Ge,t))return t;let n=Ja.get(t);return n&&!oo.has(t)&&(oo.add(t),console.warn(`Fieldia: this page is in ${n}, but only English words are loaded, so Fieldia's own words show in English. Load the ${n} ones after fieldia.js: <script src="https://cdn.jsdelivr.net/npm/@fieldia/viewer/bundle/fieldia.${t}.js"><\/script>`)),"en"}var wr="#111418",Ka="#1f2329",Ya="#f2f3f5";var Kt=e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)),kr=e=>`#${e.map(t=>Math.round(t).toString(16).padStart(2,"0")).join("")}`;function so(e){let[t,n,r]=Kt(e).map(i=>{let o=i/255;return o<=.03928?o/12.92:((o+.055)/1.055)**2.4});return .2126*t+.7152*n+.0722*r}function $t(e,t){let[n,r]=[so(e),so(t)].sort((i,o)=>o-i);return(n+.05)/(r+.05)}var Xa=e=>$t(e,"#ffffff")>=4.5?"#ffffff":wr,Za=e=>$t(e,wr)>=$t(e,"#ffffff")?wr:"#ffffff",Qa=(e,t)=>kr(Kt(e).map(n=>n+(255-n)*t)),es=(e,t)=>kr(Kt(e).map(n=>n*(1-t))),ts=(e,t)=>kr(Kt(e).map((n,r)=>n*.12+Kt(t)[r]*.88)),lo=(e,t)=>[...t,ts(e,t[0])].every(n=>$t(e,n)>=4.5);function Lr(e){let t=e.toLowerCase(),n=t;for(let i=1;i<=40&&!lo(n,["#ffffff",Ya]);i++)n=es(t,i/40);let r=t;for(let i=1;i<=40&&!lo(r,[Ka]);i++)r=Qa(t,i/40);return{accent:n,accentText:Xa(n),dark:r,darkText:Za(r)}}function vt(e,t){if(t){for(let n of["font","density","corners","scheme"]){let r=t[n];r&&e.setAttribute(`data-${n}`,r)}if(t.labelWidth&&e.style.setProperty("--fd-label-width",`${t.labelWidth}px`),t.accent){let n=Lr(t.accent);e.setAttribute("data-accent",""),e.style.setProperty("--fd-look-accent",n.accent),e.style.setProperty("--fd-look-accent-text",n.accentText),e.style.setProperty("--fd-look-accent-dark",n.dark),e.style.setProperty("--fd-look-accent-dark-text",n.darkText)}}}var co=0;function In(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,r=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,i={...Ge[Jt(e.locale)],...e.labels},o=`fd-dialog-${++co}`,a=(v,k={},m)=>{let L=t.createElement(v);for(let[E,F]of Object.entries(k))L.setAttribute(E,F);return m!==void 0&&(L.textContent=m),L},s=a("h2",{id:`${o}-title`,class:"fd-form-dialog-title"},e.title),d=a("button",{type:"button",class:"fd-dialog-close","aria-label":i.close},"\xD7"),l=a("div",{class:"fd-form-dialog-body"}),h=a("button",{type:"button",class:"fd-button"},i.discard),f=a("button",{type:"button",class:"fd-button fd-button-primary"},i.saveClose),b=a("div",{class:`fd-theme fd-form-dialog fd-size-${e.size??"medium"}`,"data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":s.id,tabindex:"-1"});e.dir&&b.setAttribute("dir",e.dir);let p=e.page.look??e.look;vt(b,p),b.append(a("div",{class:"fd-form-dialog-head"}),l,a("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"})),b.firstElementChild?.append(s,d),b.lastElementChild?.append(h,f);let c=a("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});c.append(b),n.append(c);let u=Er(l,{...e,page:p&&!e.page.look?{...e.page,look:p}:e.page,showActions:!1}),g=!1;e.recompute&&ns(u.form,e.page.fields,e.recompute,()=>g);let y=()=>l.querySelector('input:not([type="hidden"]), select, textarea, [contenteditable="true"]');return(y()??b).focus(),u.form.settled().then(()=>{(t.activeElement===b||!b.contains(t.activeElement))&&y()?.focus()}),new Promise(v=>{let k=m=>{if(g)return;g=!0;let L=u.form.getState(),E={saved:m,recordId:L.recordId??null,values:L.values};u.destroy(),c.remove(),r?.focus(),v(E)};f.addEventListener("click",async()=>{f.disabled=!0;let m=e.mode==="values"?u.check():await u.save();f.disabled=!1,m&&k(!0)}),h.addEventListener("click",()=>k(!1)),d.addEventListener("click",()=>k(!1)),b.addEventListener("keydown",m=>{if(m.key==="Enter"&&(m.ctrlKey||m.metaKey)&&!m.isComposing){if(m.target.closest(".ag-root-wrapper"))return;m.preventDefault(),t.activeElement?.dispatchEvent(new Event("change",{bubbles:!0})),f.click();return}m.defaultPrevented||(m.key==="Escape"?(m.preventDefault(),k(!1)):st(b,m))})})}function ns(e,t,n,r){let i=JSON.stringify(e.getState().values),o=!1;e.subscribe(()=>{let a=e.getState().values,s=JSON.stringify(a);o||s===i||(i=s,n(a).then(d=>{if(!(r()||JSON.stringify(e.getState().values)!==s)){o=!0;for(let[l,h]of Object.entries(d))l in t&&JSON.stringify(a[l]??null)!==JSON.stringify(h??null)&&e.setValue(l,h);o=!1,i=JSON.stringify(e.getState().values)}},()=>{}))})}function Sr(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,r=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,i=Jt(e.locale),o=Ge[i],a=Ne[i],s=`fd-dialog-${++co}`,d=(k,m={},L)=>{let E=t.createElement(k);for(let[F,R]of Object.entries(m))E.setAttribute(F,R);return L!==void 0&&(E.textContent=L),E},l=d("h2",{id:`${s}-title`,class:"fd-form-dialog-title"},e.title),h=d("button",{type:"button",class:"fd-dialog-close","aria-label":o.close},"\xD7"),f=d("input",{type:"search",class:"fd-input","aria-label":a.search,placeholder:a.search,"aria-controls":`${s}-list`,autocomplete:"off"}),b=d("ul",{id:`${s}-list`,class:"fd-search-list",role:"listbox","aria-labelledby":l.id}),p=d("button",{type:"button",class:"fd-button"},o.cancel),c=d("div",{class:"fd-theme fd-form-dialog fd-search-dialog fd-size-small","data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":l.id});e.dir&&c.setAttribute("dir",e.dir),vt(c,e.look);let u=d("div",{class:"fd-form-dialog-head"});u.append(l,h);let g=d("div",{class:"fd-form-dialog-body fd-search-body"});g.append(f,b);let y=d("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"});y.append(p),c.append(u,g,y);let v=d("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});return v.append(c),n.append(v),f.focus(),new Promise(k=>{let m=[],L=-1,E=0,F,R=q=>{clearTimeout(F),E++,v.remove(),r?.focus(),k(q)},B=()=>{b.replaceChildren(...m.map((q,C)=>{let H=d("li",{id:`${s}-option-${C}`,role:"option",class:`fd-option${C===L?" fd-active":""}`,"aria-selected":String(C===L)},q.label);return H.addEventListener("click",()=>R(q)),H})),m.length||b.append(d("li",{class:"fd-empty"},a.noResults)),L>=0?f.setAttribute("aria-activedescendant",`${s}-option-${L}`):f.removeAttribute("aria-activedescendant")},$=()=>{clearTimeout(F);let q=++E;F=setTimeout(async()=>{let C=await e.search(f.value,80).catch(()=>[]);q===E&&(m=C,L=-1,B())},180)};f.addEventListener("input",$),f.addEventListener("keydown",q=>{if(q.key==="ArrowDown"||q.key==="ArrowUp"){if(q.preventDefault(),!m.length)return;L=(L+(q.key==="ArrowDown"?1:-1)+m.length)%m.length,B(),b.children[L]?.scrollIntoView?.({block:"nearest"})}else q.key==="Enter"&&L>=0&&(q.preventDefault(),R(m[L]))}),p.addEventListener("click",()=>R(null)),h.addEventListener("click",()=>R(null)),c.addEventListener("keydown",q=>{q.key==="Escape"?(q.preventDefault(),R(null)):st(c,q)}),$()})}function rs(e){return e.layout.type==="sheet"&&e.layout.title?.field?e.layout.title.field:e.fields.name?"name":Object.entries(e.fields).find(([,t])=>t.type==="char")?.[0]??null}function is(e,t,n){let r=Object.fromEntries(Object.entries(e).map(([i,o])=>[i,n?{...o,readonly:!0}:o]));return{fieldia:"0.1",id:"values",title:t,data:{kind:"record",model:"values"},fields:r,layout:{type:"sections",id:"values",children:[{type:"section",id:"values-section",columns:2,children:Object.keys(r).map(i=>({type:"field",id:`values-${i}`,field:i}))}]}}}function os(e){if(e)return{...e.search?{search:t=>e.search(t)}:{},...e.create?{create:t=>e.create(t)}:{}}}function fo(e){let t=r=>(typeof e.relatedPages=="function"?e.relatedPages(r):e.relatedPages?.[r])??null,n={locale:e.locale,skin:e.skin,dir:e.dir,widgets:e.widgets,preferences:e.preferences,relatedPages:e.relatedPages,translate:e.translate,look:e.page.look};return{canOpen:r=>t(r)!==null,async openRecord(r,i){let o=t(r);if(!o)return null;let a=rs(o),s=await In({...n,page:o,dataSource:e.dataSource,recordId:i.recordId??null,values:i.name&&a?{[a]:i.name}:void 0,title:i.title,size:"large"});if(!s.saved||s.recordId===null)return null;let d=a?s.values[a]:null;return{id:s.recordId,label:typeof d=="string"&&d?d:i.name??i.title}},searchMore:r=>Sr({title:r.title,search:r.search,locale:e.locale,skin:e.skin,dir:e.dir,look:e.page.look}),async editValues(r){let i=await In({...n,page:is(r.fields,r.title,r.readonly===!0),dataSource:os(e.dataSource),values:r.values,title:r.title,mode:"values",...r.recompute?{recompute:r.recompute}:{}});return i.saved?i.values:null}}}var uo=e=>`favourites:${e.id}`;function Vn(e,t){let n=e.get(uo(t));return Array.isArray(n)?n:[]}function po(e,t,n){let r=Vn(t,n).find(i=>i.isDefault);return r?r.facets:e.defaultFilters?.length?[{kind:"filters",ids:[...e.defaultFilters],labels:e.defaultFilters.map(i=>e.filters?.find(o=>o.id===i)?.label??i)}]:[]}function mo(e){let{page:t,el:n,labels:r,fill:i,preferences:o}=e,a=n("ul",{class:"fd-favourite-list"}),s=n("p",{class:"fd-favourites-none"},r.noFavourites),d=n("input",{class:"fd-input","aria-label":r.searchName,placeholder:r.searchName}),l=n("input",{type:"checkbox"}),h=n("button",{type:"button",class:"fd-button fd-button-primary"},r.save),f=n("div",{class:"fd-favourite-form",hidden:""},d,n("label",{class:"fd-favourite-default"},l,r.useByDefault),h),b=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.saveSearch),p=u=>o.set(uo(t),u);function c(){let u=Vn(o,t);s.hidden=u.length>0,a.replaceChildren(...u.map(g=>{let y=n("button",{type:"button",class:"fd-search-option","data-default":g.isDefault?"true":void 0},g.name);y.addEventListener("click",()=>e.apply(g.facets));let v=n("button",{type:"button",class:"fd-favourite-remove","aria-label":i(r.deleteFavourite,{name:g.name})},"\xD7");return v.addEventListener("click",()=>{p(Vn(o,t).filter(k=>k.name!==g.name)),c()}),n("li",{class:"fd-favourite"},y,v)}))}return b.addEventListener("click",()=>{f.hidden=!f.hidden,b.setAttribute("aria-expanded",String(!f.hidden)),f.hidden||d.focus()}),h.addEventListener("click",()=>{let u=d.value.trim();if(!u)return d.focus();let g={name:u,facets:e.current(),...l.checked?{isDefault:!0}:{}},y=Vn(o,t).filter(v=>v.name!==u).map(v=>l.checked?{name:v.name,facets:v.facets}:v);p([...y,g]),d.value="",l.checked=!1,f.hidden=!0,b.setAttribute("aria-expanded","false"),c()}),c(),{list:a,none:s,open:b,form:f}}function as(e,t,n){let r=e.page.fields[t];return n.value===null?e.labels.none:r.type==="selection"?r.options.find(i=>i.value===n.value)?.label??n.label:r.type==="boolean"?n.value?e.labels.yes:e.labels.no:n.label||String(n.value)}function ss(e){let t=Number(e.dataset.level),n=e.nextElementSibling;for(;n&&Number(n.dataset.level??0)>t;){let r=n.nextElementSibling;n.remove(),n=r}}function Rr(e,t,n,r,i){let{el:o,labels:a}=e,s=i[n],d=[...r,t.value===null?{field:s,op:"notset",value:null}:{field:s,op:"=",value:t.value}],l=o("button",{type:"button",class:"fd-group-toggle","aria-expanded":"false"},o("span",{class:"fd-group-label"},as(e,s,t))," ",o("span",{class:"fd-group-count"},`(${t.count})`)),h=o("tr",{class:"fd-list-group","data-level":String(n),"aria-level":String(n+1)},o("td",{colspan:String(e.columns)},l));h.style.setProperty("--fd-level",String(n));let f=!1;async function b(){f=!0;try{let c=n+1<i.length?(await e.dataSource.groups?.({model:e.model,field:i[n+1],filter:d}))?.map(u=>Rr(e,u,n+1,d,i))??[]:await p(0);if(!h.isConnected||l.getAttribute("aria-expanded")!=="true")return;h.after(...c),e.changed()}finally{f=!1}}async function p(c){let u=await e.dataSource.list({model:e.model,fields:e.fields,filter:d,sort:e.sort(),offset:c,limit:e.pageSize}),g=u.records.map(m=>e.recordRow(m,n+1)),y=u.total-c-u.records.length;if(y<=0)return g;let v=o("button",{type:"button",class:"fd-button fd-button-link"},e.fill(a.loadMore,{n:y})),k=o("tr",{class:"fd-list-more","data-level":String(n+1)},o("td",{colspan:String(e.columns)},v));return k.style.setProperty("--fd-level",String(n)),v.addEventListener("click",async()=>{v.disabled=!0;let m=await p(c+u.records.length);k.isConnected&&(k.replaceWith(...m),e.changed())}),[...g,k]}return l.addEventListener("click",()=>{let c=l.getAttribute("aria-expanded")==="true";l.setAttribute("aria-expanded",String(!c)),c?(ss(h),e.changed()):f||b()}),h}var ds='.fd-list{display:grid;gap:10px;min-width:0}.fd-list [hidden]{display:none!important}.fd-list-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:34px}.fd-search{position:relative;flex:1 1 360px;max-width:680px;min-width:0;container:fd-search / inline-size}.fd-search-field{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:34px;box-sizing:border-box;padding:2px 2px 2px 8px;padding-inline:8px 2px;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-surface)}.fd-search-field:focus-within{border-color:var(--fd-focus);box-shadow:var(--fd-focus-ring)}.fd-search-field>.fd-icon,.fd-search-field>svg{width:16px;height:16px;color:var(--fd-muted);flex:none}.fd-facets{display:contents}.fd-facet{display:inline-flex;align-items:center;gap:4px;max-width:100%;min-width:0;min-height:24px;padding-block:0;padding-inline:6px 0;border-radius:3px;background:var(--fd-accent-soft);color:var(--fd-accent);font-size:13px;line-height:18px}.fd-facet svg{width:13px;height:13px;flex:none}.fd-facet[data-kind=groupBy]{background:var(--fd-success-soft);color:var(--fd-success)}.fd-facet-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-facet-remove{all:unset;cursor:pointer;display:grid;place-items:center;width:24px;height:24px;border-radius:2px;font-size:15px;line-height:1;opacity:.7}.fd-facet-remove:hover,.fd-facet-remove:focus-visible{opacity:1;background:var(--fd-surface)}.fd-search-input{flex:1 1 140px;min-width:100px;border:none;outline:none;background:none;font:inherit;font-size:14px;color:var(--fd-text);padding:5px 4px}.fd-form .fd-search-input:focus-visible{outline:none}.fd-search-toggle{all:unset;cursor:pointer;display:grid;place-items:center;width:30px;height:28px;border-radius:3px;color:var(--fd-muted)}.fd-search-toggle:before{content:"";width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg)}.fd-search-toggle[aria-expanded=true]:before{transform:translateY(2px) rotate(-135deg)}.fd-search-toggle:hover,.fd-search-toggle[aria-expanded=true]{background:var(--fd-page);color:var(--fd-text)}.fd-search-toggle:focus-visible{outline:2px solid var(--fd-focus)}.fd-search-suggestions,.fd-search-panel{position:absolute;z-index:30;inset-inline:0;top:calc(100% + 4px);box-sizing:border-box;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);box-shadow:0 10px 28px #0f172a24}.fd-search-suggestions{list-style:none;margin:0;padding:4px 0}.fd-search-suggestions [role=option]{padding:7px 12px;cursor:pointer;font-size:14px}.fd-search-suggestions [role=option][aria-selected=true]{background:var(--fd-accent-soft)}.fd-search-panel{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);padding-block:6px}.fd-search-group{display:flex;flex-direction:column;align-items:stretch;gap:1px;padding:4px 10px 8px;min-width:0}.fd-search-group+.fd-search-group{border-inline-start:1px solid var(--fd-border)}@container fd-search (max-width: 540px){.fd-search-panel{grid-auto-flow:row}.fd-search-group+.fd-search-group{border-inline-start:none;border-block-start:1px solid var(--fd-border);padding-block-start:8px}}.fd-search-heading{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13.5px;padding:4px 6px 6px}.fd-search-heading svg{width:15px;height:15px}.fd-search-group[data-group-kind=filters] .fd-search-heading svg{color:var(--fd-accent)}.fd-search-group[data-group-kind=groupBy] .fd-search-heading svg{color:var(--fd-success)}.fd-search-group[data-group-kind=favourites] .fd-search-heading svg{color:var(--fd-warning)}.fd-search-option{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:4px;font-size:14px;color:var(--fd-text)}.fd-search-option:before{content:"";width:14px;flex:none;text-align:center;color:var(--fd-accent);font-weight:700}.fd-search-option[aria-pressed=true]:before{content:"\u2713"}.fd-search-option:hover,.fd-search-option:focus-visible{background:var(--fd-page)}.fd-search-add{color:var(--fd-muted);margin-block-start:4px}.fd-search-add:before{content:"+";color:var(--fd-muted);font-weight:400}.fd-custom-filter,.fd-favourite-form{display:grid;gap:6px;padding:6px}.fd-custom-filter .fd-input,.fd-favourite-form .fd-input{width:100%;box-sizing:border-box;min-height:30px;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);padding:3px 6px;font:inherit;font-size:13.5px;background:var(--fd-surface);color:var(--fd-text)}.fd-favourite-default{display:flex;align-items:center;gap:6px;font-size:13.5px}.fd-favourite-list{list-style:none;margin:0;padding:0}.fd-favourite{display:flex;align-items:center}.fd-favourite .fd-search-option{flex:1;min-width:0}.fd-favourite .fd-search-option[data-default=true]:before{content:"\u2605";color:var(--fd-warning)}.fd-favourite-remove{all:unset;cursor:pointer;width:24px;height:24px;display:grid;place-items:center;border-radius:4px;color:var(--fd-muted)}.fd-favourite-remove:hover{background:var(--fd-page);color:var(--fd-error)}.fd-favourites-none{margin:0;padding:4px 6px;color:var(--fd-muted);font-size:13px}.fd-list-selection{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:3px 4px 3px 10px;border-radius:var(--fd-control-radius);background:var(--fd-accent-soft)}.fd-list-count{font-weight:600;font-size:13.5px;color:var(--fd-accent);font-variant-numeric:tabular-nums}.fd-pager{display:flex;align-items:center;gap:4px;margin-inline-start:auto}.fd-pager-text{color:var(--fd-muted);font-size:13.5px;font-variant-numeric:tabular-nums;margin-inline-end:6px;white-space:nowrap}.fd-pager-button{min-width:32px;padding-inline:0;font-size:18px;line-height:1}.fd-list-scroll{overflow-x:auto;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius)}.fd-list-table{width:100%;border-collapse:collapse;font-size:14px}.fd-list-table th{text-align:start;font-weight:600;font-size:13px;color:var(--fd-text);padding:8px 10px;border-block-end:1px solid var(--fd-border-strong);white-space:nowrap;background:var(--fd-surface)}.fd-list-table td{padding:7px 10px;border-block-end:1px solid var(--fd-border);max-width:28em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-list-table tbody tr:last-child td{border-block-end:none}.fd-list-table .fd-num{text-align:end;font-variant-numeric:tabular-nums}.fd-list-table th.fd-list-check,.fd-list-table td.fd-list-check{width:36px;padding-inline:10px 0}.fd-list-checkbox{width:16px;height:16px;margin:0;vertical-align:middle;accent-color:var(--fd-accent);cursor:pointer}.fd-list-sort{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:center;gap:4px;font:inherit;color:inherit}.fd-list-sort:after{content:"";width:0;height:0;border-inline:4px solid transparent;opacity:0}.fd-list-sort:hover:after{opacity:.35;border-block-start:5px solid currentColor}.fd-list-table th[aria-sort=ascending] .fd-list-sort:after{opacity:1;border-block-start:none;border-block-end:5px solid currentColor}.fd-list-table th[aria-sort=descending] .fd-list-sort:after{opacity:1;border-block-end:none;border-block-start:5px solid currentColor}.fd-list-table th.fd-num .fd-list-sort{justify-content:flex-end}.fd-list-table th.fd-num .fd-list-sort:after{order:-1}.fd-list-sort:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-list-row:hover td{background:var(--fd-page)}.fd-list-openable{cursor:pointer}.fd-list-row[aria-selected=true] td{background:var(--fd-accent-soft)}.fd-list-row:focus-visible{outline:2px solid var(--fd-focus);outline-offset:-2px}.fd-list-table[aria-busy=true] tbody{opacity:.6;transition:opacity .2s .15s}.fd-list-group td{padding:0;background:var(--fd-page)}.fd-group-toggle{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;padding-inline-start:calc(12px + var(--fd-level, 0) * 22px);font-weight:600;font-size:13.5px;color:var(--fd-text)}.fd-group-toggle:before{content:"";flex:none;width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg);transition:transform .12s}.fd-group-toggle:dir(rtl):before{transform:rotate(-135deg)}.fd-group-toggle[aria-expanded=true]:before{transform:rotate(135deg)}.fd-group-toggle:hover{background:var(--fd-accent-soft)}.fd-group-toggle:focus-visible{outline:2px solid var(--fd-focus);outline-offset:-2px}.fd-group-count{color:var(--fd-muted);font-weight:400;font-variant-numeric:tabular-nums}.fd-list-more td{padding:4px 10px;padding-inline-start:calc(46px + var(--fd-level, 0) * 22px)}.fd-list-empty,.fd-list-failed{margin:0;padding:28px 12px;text-align:center;color:var(--fd-muted)}.fd-list-failed{color:var(--fd-error)}';function Pn(e){if(e.getElementById("fd-list-styles"))return;let t=e.createElement("style");t.id="fd-list-styles",t.textContent=ds,e.head.append(t)}var ls=[["ilike","opContains"],["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],cs=[["ilike","opContains"],["set","opSet"],["notset","opNotSet"]],fs=[["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],us=[["=","opIs"],["!=","opIsNot"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]],ps=[["=","opIs"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]];function Fr(e){switch(e.type){case"char":case"text":case"html":return ls;case"many2one":case"many2many":return cs;case"selection":return fs;case"integer":case"float":case"monetary":return us;case"date":case"datetime":return ps;case"boolean":return[["=","opIs"]];default:return[]}}function go(e){let{page:t,el:n,labels:r}=e,i=Object.entries(t.fields).filter(([,u])=>Fr(u).length),o=n("select",{class:"fd-input","aria-label":r.field},...i.map(([u,g])=>n("option",{value:u},g.label))),a=n("select",{class:"fd-input","aria-label":r.condition}),s=n("span",{class:"fd-custom-filter-value"}),d=n("button",{type:"button",class:"fd-button fd-button-primary"},r.apply),l=n("div",{class:"fd-custom-filter",hidden:""},o,a,s,d),h=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.addCustomFilter),f=n("input",{class:"fd-input","aria-label":r.value}),b=()=>t.fields[o.value];function p(){a.replaceChildren(...Fr(b()).map(([u,g])=>n("option",{value:u},r[g]))),c()}function c(){let u=b();if(u.type==="selection")f=n("select",{class:"fd-input","aria-label":r.value},...u.options.map(g=>n("option",{value:String(g.value)},g.label)));else if(u.type==="boolean")f=n("select",{class:"fd-input","aria-label":r.value},n("option",{value:"true"},r.yes),n("option",{value:"false"},r.no));else{let g=["integer","float","monetary"].includes(u.type)?"number":u.type==="date"?"date":u.type==="datetime"?"datetime-local":"text";f=n("input",{class:"fd-input",type:g,"aria-label":r.value})}s.replaceChildren(f),s.hidden=a.value==="set"||a.value==="notset"}return o.addEventListener("change",p),a.addEventListener("change",()=>s.hidden=a.value==="set"||a.value==="notset"),h.addEventListener("click",()=>{l.hidden=!l.hidden,h.setAttribute("aria-expanded",String(!l.hidden)),l.hidden||o.focus()}),d.addEventListener("click",()=>{let u=b(),g=a.value,y=r[Fr(u).find(([m])=>m===g)?.[1]??"opIs"],v=null,k="";if(!s.hidden){let m=f.value.trim();if(!m)return f.focus();if(u.type==="selection"){let L=u.options.find(E=>String(E.value)===m);v=L?.value??m,k=L?.label??m}else if(u.type==="boolean")v=m==="true",k=v?r.yes:r.no;else if(["integer","float","monetary"].includes(u.type)){if(v=Number(m),!Number.isFinite(v))return f.focus();k=m}else v=m,k=m}e.add({kind:"custom",label:[u.label,y,k].filter(Boolean).join(" "),filter:[{field:o.value,op:g,value:v}]}),l.hidden=!0,h.setAttribute("aria-expanded","false")}),p(),{button:h,form:l}}function ms(e,t){let n=` ${t.or} `;switch(e.kind){case"field":return`${e.label}: ${e.values.map(r=>r.label).join(n)}`;case"filters":return e.labels.join(n);case"groupBy":return e.labels.join(" > ");case"custom":return e.label}}function ho(e){let{page:t,node:n,doc:r,el:i,labels:o,fill:a,uid:s}=e,d=e.facets,l=T=>{let O=lt(r,T,e.icons);return O?.setAttribute("aria-hidden","true"),O?[O]:[]};function h(T){d=T,k(),P(),e.onChange(d)}let f=s(`${n.id}-suggestions`),b=s(`${n.id}-search-panel`),p=i("input",{class:"fd-search-input",role:"combobox",autocomplete:"off",placeholder:o.search,"aria-label":o.searchLabel,"aria-autocomplete":"list","aria-expanded":"false","aria-controls":f}),c=i("div",{class:"fd-facets"}),u=i("ul",{class:"fd-search-suggestions",role:"listbox",id:f,"aria-label":o.searchLabel,hidden:""}),g=i("button",{type:"button",class:"fd-search-toggle","aria-label":o.searchOptions,"aria-expanded":"false","aria-controls":b}),y=[],v=0;function k(){c.replaceChildren(...d.map((T,O)=>{let D=ms(T,o),j=i("button",{type:"button",class:"fd-facet-remove","aria-label":a(o.removeFacet,{label:D})},"\xD7");j.addEventListener("click",()=>{h(d.filter((N,W)=>W!==O)),p.focus()});let I=T.kind==="groupBy"?"layers":T.kind==="field"?"":"filter";return i("span",{class:"fd-facet","data-kind":T.kind},...I?l(I):[],i("span",{class:"fd-facet-text"},D),j)}))}function m(){u.replaceChildren(...y.map((T,O)=>{let D=i("li",{role:"option",id:`${f}-${O}`,"aria-selected":String(O===v)},T.label);return D.addEventListener("mousedown",j=>j.preventDefault()),D.addEventListener("click",()=>E(T)),D})),u.hidden=y.length===0,p.setAttribute("aria-expanded",String(!u.hidden)),u.hidden?p.removeAttribute("aria-activedescendant"):p.setAttribute("aria-activedescendant",`${f}-${v}`)}function L(){y=[],m()}function E(T){let O={op:T.op,value:T.value,label:T.valueLabel},D=d.findIndex(I=>I.kind==="field"&&I.field===T.field),j=[...d];if(D<0)j.push({kind:"field",field:T.field,label:T.fieldLabel,values:[O]});else{let I=j[D];I.values.some(W=>W.op===O.op&&JSON.stringify(W.value)===JSON.stringify(O.value))||(j[D]={...I,values:[...I.values,O]})}p.value="",L(),h(j)}p.addEventListener("input",()=>{y=cn(p.value,t,n,{searchFor:o.searchFor}),v=0,m()}),p.addEventListener("blur",L),p.addEventListener("keydown",T=>{T.isComposing||((T.key==="ArrowDown"||T.key==="ArrowUp")&&y.length?(T.preventDefault(),v=(v+(T.key==="ArrowDown"?1:y.length-1))%y.length,m()):T.key==="Enter"?(T.preventDefault(),y.length&&E(y[v])):T.key==="Backspace"&&!p.value&&d.length?h(d.slice(0,-1)):T.key==="Escape"&&!u.hidden&&(T.preventDefault(),L()))});let F=(T,O,D)=>i("div",{class:"fd-search-heading",id:D},...l(T),O),R=(T,O)=>{let D=d.findIndex(J=>J.kind===T),j=D<0?[]:T==="filters"?d[D].ids:d[D].fields,I=j.includes(O)?j.filter(J=>J!==O):[...j,O],N=T==="filters"?{kind:T,ids:I,labels:I.map(J=>n.filters?.find(Z=>Z.id===J)?.label??J)}:{kind:T,fields:I,labels:I.map(J=>t.fields[J]?.label??J)},W=[...d];D<0?W.push(N):I.length?W[D]=N:W.splice(D,1),h(W)},B=(n.filters??[]).map(T=>{let O=i("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-filter":T.id},T.label);return O.addEventListener("click",()=>R("filters",T.id)),O}),$=(n.groupBy??[]).map(T=>{let O=i("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-group":T},t.fields[T].label);return O.addEventListener("click",()=>R("groupBy",T)),O}),q=go({page:t,el:i,labels:o,add:T=>h([...d,T])}),C=mo({page:t,el:i,labels:o,fill:a,preferences:e.preferences,current:()=>d,apply:h}),H=(T,O,D,...j)=>i("div",{class:"fd-search-group","data-group-kind":T,role:"group","aria-labelledby":`${b}-${T}`},F(O,D,`${b}-${T}`),...j),S=i("div",{class:"fd-search-panel",id:b,hidden:""},H("filters","filter",o.filters,...B,q.button,q.form),...$.length?[H("groupBy","layers",o.groupBy,...$)]:[],H("favourites","star",o.favourites,C.list,C.none,C.open,C.form));function P(){let T=d.find(D=>D.kind==="filters")?.ids??[],O=d.find(D=>D.kind==="groupBy")?.fields??[];for(let D of B)D.setAttribute("aria-pressed",String(T.includes(D.dataset.filter??"")));for(let D of $)D.setAttribute("aria-pressed",String(O.includes(D.dataset.group??"")))}function X(T){S.hidden=!T,g.setAttribute("aria-expanded",String(T)),T&&L()}g.addEventListener("click",()=>X(S.hidden)),S.addEventListener("keydown",T=>{T.key==="Escape"&&(T.preventDefault(),X(!1),g.focus())});let z=i("div",{class:"fd-search"},i("div",{class:"fd-search-field"},...l("search"),c,p,g),u,S),K=T=>{!S.hidden&&!z.contains(T.target)&&X(!1)};return r.addEventListener("pointerdown",K),k(),P(),{element:z,destroy:()=>r.removeEventListener("pointerdown",K)}}var bo=new Set(["integer","float","monetary"]),gs=new Set(["one2many","many2many","binary","image","html","json","properties"]);function yo(e){let{page:t,node:n,form:r,el:i,labels:o,fill:a,locale:s,doc:d}=e;Pn(d);let l=n.pageSize??40,h=n.sort??[],f=h,b=0,p=0,c=[],u=new WeakMap,g=()=>[...$.querySelectorAll(".fd-list-row")].map(G=>u.get(G)),y=t.data.kind==="record"?t.data.model:"",v=po(n,e.preferences,t),k=new Set,m=0,L=!1,E=[...new Set(n.columns.flatMap(G=>{let ee=t.fields[G];return ee.type==="monetary"&&ee.currencyField?[G,ee.currencyField]:[G]}))],F=(G,ee)=>jt(t.fields[G],ee[G],ee,s),R=i("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":o.selectAll}),B=n.columns.map(G=>{let ee=t.fields[G],he=i("th",{scope:"col","data-field":G,class:bo.has(ee.type)?"fd-num":void 0});if(gs.has(ee.type))he.append(ee.label);else{let ge=i("button",{type:"button",class:"fd-list-sort"},ee.label);ge.addEventListener("click",()=>{let me=f[0]?.field===G?!f[0].desc:!1;f=[{field:G,...me?{desc:me}:{}},...h.filter(be=>be.field!==G)],b=0,re()}),he.append(ge)}return he}),$=i("tbody"),q=i("table",{class:"fd-list-table","aria-label":t.title},i("thead",{},i("tr",{},i("th",{class:"fd-list-check",scope:"col"},R),...B)),$),C=i("p",{class:"fd-list-empty",hidden:""},o.noRecords),H=i("button",{type:"button",class:"fd-button fd-button-link"},o.retry),S=i("p",{class:"fd-list-failed",role:"alert",hidden:""},o.loadFailed," ",H);H.addEventListener("click",()=>{re()});function P(G,ee=0){let he=F(n.columns[0],G.values)||String(G.id),ge=i("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":a(o.selectRecord,{name:he})});ge.checked=k.has(G.id),ge.addEventListener("change",()=>{ge.checked?k.add(G.id):k.delete(G.id),O()});let me=i("tr",{class:e.onOpenRecord?"fd-list-row fd-list-openable":"fd-list-row",tabindex:"0","data-id":String(G.id),"data-level":ee?String(ee):void 0},i("td",{class:"fd-list-check"},ge),...n.columns.map(be=>i("td",{class:bo.has(t.fields[be].type)?"fd-num":void 0},i("bdi",{},F(be,G.values)))));return me.addEventListener("click",be=>{let Me=be.target.closest("td");if(Me?.classList.contains("fd-list-check")){be.target===Me&&ge.click();return}e.onOpenRecord?.(G.id)}),me.addEventListener("keydown",be=>{be.target===me&&(be.key==="Enter"?(be.preventDefault(),e.onOpenRecord?.(G.id)):be.key===" "?(be.preventDefault(),ge.click()):(be.key==="ArrowDown"||be.key==="ArrowUp")&&(be.preventDefault(),(be.key==="ArrowDown"?me.nextElementSibling:me.previousElementSibling)?.focus()))}),u.set(me,G),me}let X=i("span",{class:"fd-list-count",role:"status"}),z=i("button",{type:"button",class:"fd-button fd-button-link"},o.clearSelection),K=(n.actions??[]).map(G=>{let ee=i("button",{type:"button",class:`fd-button fd-button-${G.style??"secondary"}`,"data-node":G.id},...e.withIcon(G.icon,G.label));return ee.addEventListener("click",async()=>{G.confirm&&!await e.confirm(G.confirm)||(await r.runAction(G.id,{recordIds:[...k]}),await re())}),ee}),T=i("div",{class:"fd-list-selection",hidden:""},X,...K,z);z.addEventListener("click",()=>{k.clear();for(let G of $.querySelectorAll(".fd-list-checkbox"))G.checked=!1;O()}),R.addEventListener("change",()=>{for(let G of g())R.checked?k.add(G.id):k.delete(G.id);for(let G of $.querySelectorAll(".fd-list-checkbox"))G.checked=R.checked;O()});function O(){let G=g(),ee=G.filter(he=>k.has(he.id)).length;R.checked=G.length>0&&ee===G.length,R.indeterminate=ee>0&&ee<G.length,T.hidden=k.size===0,X.textContent=a(o.selected,{n:k.size});for(let he of $.querySelectorAll(".fd-list-row"))he.setAttribute("aria-selected",String([...k].some(ge=>String(ge)===he.dataset.id)))}let D=i("span",{class:"fd-pager-text"}),j=i("button",{type:"button",class:"fd-button fd-pager-button","aria-label":o.previousPage},"\u2039"),I=i("button",{type:"button",class:"fd-button fd-pager-button","aria-label":o.nextPage},"\u203A"),N=i("div",{class:"fd-pager",role:"group"},D,j,I);j.addEventListener("click",()=>{b=Math.max(0,b-l),re()}),I.addEventListener("click",()=>{b+=l,re()});function W(){N.hidden=p===0,D.textContent=a(o.range,{from:b+1,to:Math.min(b+c.length,p),total:p}),j.disabled=b===0,I.disabled=b+l>=p}function J(){for(let G of B){let ee=f[0]?.field===G.dataset.field?f[0]:null;ee?G.setAttribute("aria-sort",ee.desc?"descending":"ascending"):G.removeAttribute("aria-sort")}}function Z(){let G=new Set(g().map(ee=>ee.id));for(let ee of[...k])G.has(ee)||k.delete(ee);O()}let ue=G=>({page:t,el:i,labels:o,fill:a,dataSource:G,model:y,fields:E,columns:n.columns.length+1,pageSize:l,sort:()=>f,recordRow:P,changed:Z});async function re(){let G=++m;J(),q.setAttribute("aria-busy","true");let ee=[];try{let he=fn(v,n),ge=un(v),me=e.dataSource;if(ge.length&&me?.groups&&me.list){let be=await me.groups({model:y,field:ge[0],filter:he});if(G!==m||L)return;c=[],p=0,ee=be.map(Me=>Rr(ue(me),Me,0,he,ge))}else{let be=me?.list?await me.list({model:y,fields:E,filter:he,sort:f,offset:b,limit:l}):{records:[],total:0};if(G!==m||L)return;if(!be.records.length&&be.total>0&&b>0)return b=Math.floor((be.total-1)/l)*l,re();c=be.records,p=be.total,ee=c.map(Me=>P(Me))}S.hidden=!0}catch{if(G!==m||L)return;c=[],p=0,S.hidden=!1}$.replaceChildren(...ee),C.hidden=ee.length>0||!S.hidden,q.removeAttribute("aria-busy"),W(),Z()}let de=ho({page:t,node:n,doc:d,el:i,labels:o,fill:a,uid:e.uid,icons:e.icons,preferences:e.preferences,facets:v,onChange(G){v=G,b=0,re()}}),ce=i("div",{class:"fd-list","data-node":n.id},i("div",{class:"fd-list-bar"},de.element,N),T,i("div",{class:"fd-list-scroll"},q),C,S);return re(),{element:ce,reload:re,destroy(){L=!0,de.destroy()}}}function Dn(e,t){let n=e.style??"card",r=n==="plain"&&!e.title,i=kt(e.columns),o=e.colspan??1,a=r&&t.columns>1?o===1&&i>1?"shared":"tracks":void 0;return{style:n,arrangement:r,at:a,inner:{columns:a==="tracks"?Math.min(o,t.columns):i,onPage:t.onPage&&(n==="plain"||n==="line"),labels:e.labels??t.labels}}}var hs=new Set(["one2many","matrix"]);function Wn(e,t,n){if(t==="boolean"&&e.widget==="tick")return"after";let r=e.labels??n;return r==="beside"&&hs.has(t)?"above":r}function tt(e,t){e.hidden!==t&&(e.hidden=t)}function zn(e,t){e.textContent!==t&&(e.textContent=t)}function xo(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}var bs=0;function Er(e,t){let n=e.ownerDocument,r=rn(t.page);if(!r.ok)throw new Error(`This page cannot be shown:
|
|
3
|
-
${r.issues.map(x=>` ${x.path}: ${x.message}`).join(`
|
|
4
|
-
`)}`);let i=t.locale??r.page.language,o=i?an(r.page,i):r.page,a=t.translate?Pt(o,t.translate):o,s=Jt(i),d=t.preferences??vr(),l=fo(t),h=!t.form,f=t.form??gn({...t,page:a,messages:t.messages??De[s]}),b={...Ge[s],...t.labels},p=Ne[s],c=t.dir??(i&&sn(i)?"rtl":void 0),u=`fd${++bs}`,g=[],y=[],v=x=>`${u}-${x.replace(/[^A-Za-z0-9_-]/g,"_")}`,k=(x,U)=>x.replace(/\{(\w+)\}/g,(_,Q)=>String(U[Q]??""));xr(n);function m(x,U={},..._){let Q=n.createElement(x);for(let[ne,se]of Object.entries(U))se!==void 0&&Q.setAttribute(ne,se);return Q.append(..._),Q}function L(x,U){let _=lt(n,x,t.icons),Q=m("bdi",{},U);return _?[_,Q]:[Q]}let E=m("form",{class:"fd-form",novalidate:"","data-fd-skin":t.skin??"underline",dir:c,lang:i,"data-max-width":a.maxWidth});vt(E,a.look);let F=t.confirm??Be;function R(x,U){let _=a.fields[x.field],Q=v(x.id),ne=Wn(x,_.type,U),se=m("div",{class:"fd-field","data-node":x.id,"data-field":x.field,"data-type":_.type,"data-labels":ne});x.colspan&&se.style.setProperty("--fd-span",String(x.colspan));let Se=x.label??_.label,fe=m("label",{class:"fd-label",id:`${Q}-label`,for:Q},Se),ke=t.showValid&&!ys.has(_.type)?lt(n,"check"):null;ke&&(ke.classList.add("fd-valid-mark"),fe.append(ke));let oe=Ue({form:f,name:x.field,field:_,node:x,id:Q,document:n,labels:p,preferences:d,locale:s,dialogs:l},t.widgets);ne==="hidden"&&!x.placeholder&&(oe.element.matches(vo)?oe.element:oe.element.querySelector(vo))?.setAttribute("placeholder",Se),["INPUT","SELECT","TEXTAREA"].includes(oe.element.tagName)||((oe.element.getAttribute("role")?oe.element:oe.element.querySelector(`[id="${Q}"][role]`))?.setAttribute("aria-labelledby",fe.id),fe.addEventListener("click",()=>oe.focus()));let Ae=x.help??_.help,le=Ae?m("div",{class:"fd-help",id:`${Q}-help`},Ae):null,te=m("div",{class:"fd-error",id:`${Q}-error`,hidden:""}),pe=m("div",{class:"fd-warning",id:`${Q}-warning`,role:"status",hidden:""});se.append(...ne==="after"?[oe.element,fe]:[fe,oe.element],...le?[le]:[],te,pe),oe.destroy&&y.push(()=>oe.destroy?.());let Ce=!1,mt="";se.addEventListener("focusin",()=>Ce=!0),se.addEventListener("focusout",Te=>{se.contains(Te.relatedTarget)||(Ce=!1,queueMicrotask(()=>We(f.getState())))});let We=Te=>{let je=f.node(x.id);tt(se,je.invisible),se.classList.toggle("fd-required",je.required);let wt=Te.errors[x.field];tt(te,!wt),zn(te,wt??"");let Ar=Te.warnings[x.field]??"";(!Ce||!Ar)&&(mt=Ar);let jn=[wt?"":mt,Te.warning&&Te.warningField===x.field?Te.warning:""].filter(Boolean).join(" ");if(tt(pe,!jn),zn(pe,jn),ke){let Ot=Te.values[x.field],ko=Ot!=null&&Ot!==""&&!(Array.isArray(Ot)&&!Ot.length),Tr=!je.readonly&&!wt&&ko&&Te.dirty.includes(x.field)&&f.problem(x.field)===null;se.classList.toggle("fd-valid",Tr),ke.toggleAttribute("hidden",!Tr)}oe.update({value:Te.values[x.field],values:Te.values,readonly:je.readonly||j,required:je.required,invalid:!!wt,describedBy:[le?.id,wt?te.id:void 0,jn?pe.id:void 0].filter(Boolean).join(" ")||void 0})};return g.push(We),se}function B(x,U){g.push(()=>tt(x,f.node(U).invisible))}function $(x){let U=m("button",{type:"button",class:`fd-button fd-button-${x.style??"secondary"}`,"data-node":x.id},...L(x.icon,x.label));return H(U,x.colspan),U.addEventListener("click",async()=>{x.confirm&&!await F(x.confirm)||await f.runAction(x.id)}),B(U,x.id),U}function q(x){let U=x.style??"paragraph",_=m(U==="heading"?"h3":"p",{class:`fd-text-${U}`,"data-node":x.id},x.text);return H(_,x.colspan),B(_,x.id),_}function C(x){let U=m("div",{class:"fd-slot","data-slot":x.name,"data-node":x.id}),_=t.slots?.[x.name]?.(U,{form:f,name:x.name});return _&&y.push(_),B(U,x.id),U}function H(x,U){U&&x.style.setProperty("--fd-span",String(U))}function S(x,U,_){let Q=m("div",{class:"fd-grid"});if(U!==null&&(Q.style.setProperty("--fd-columns",String(kt(U))),typeof U=="object"))for(let ne of["medium","narrow"]){let se=U[ne];se!==void 0&&(Q.setAttribute(`data-columns-${ne}`,String(se)),Q.style.setProperty(`--fd-columns-${ne}`,String(se)))}return Q.append(...x.map(ne=>T(ne,_))),Q}let P=x=>({columns:1,onPage:x,labels:a.look?.labels}),X=new Map;function z(x,U){let _=Dn(x,U),Q=m(_.arrangement?"div":"fieldset",{class:"fd-section","data-node":x.id,"data-style":_.style,"data-place":_.at,"data-on-page":_.style==="card"&&U.onPage?"":void 0});H(Q,x.colspan),x.labelWidth&&Q.style.setProperty("--fd-label-width",`${x.labelWidth}px`);let ne=x.description?m("p",{class:"fd-section-description"},x.description):null,se=S(x.children,_.at==="tracks"?null:x.columns,_.inner);if(x.title&&x.collapsible){se.id=v(`${x.id}-content`);let Se=m("button",{type:"button",class:"fd-section-toggle","aria-controls":se.id},m("span",{class:"fd-section-chevron","aria-hidden":"true"}),...L(x.icon,x.title)),fe=x.collapsed!==!0,ke=oe=>{fe=oe,Se.setAttribute("aria-expanded",String(fe)),se.hidden=!fe,ne&&(ne.hidden=!fe),Q.classList.toggle("fd-section-folded",!fe)};Se.addEventListener("click",()=>ke(!fe)),X.set(Q,()=>ke(!0)),ke(fe),Q.append(m("legend",{class:"fd-section-title"},Se))}else x.title&&Q.append(m("legend",{class:"fd-section-title"},...L(x.icon,x.title)));return ne&&Q.append(ne),Q.append(se),B(Q,x.id),Q}function K(x,U){let _=m("div",{class:"fd-tabs","data-node":x.id});H(_,x.colspan);let Q=m("div",{class:"fd-tablist",role:"tablist"}),ne=null,se=x.children[0].id,Se=x.children.map(fe=>{let ke=v(`${fe.id}-tab`),oe=v(`${fe.id}-panel`),Ae=m("button",{type:"button",class:"fd-tab",role:"tab",id:ke,"aria-controls":oe,"data-node":fe.id},...L(fe.icon,fe.label)),le=m("div",{class:"fd-tabpanel",role:"tabpanel",id:oe,"aria-labelledby":ke},S(fe.children,1,{columns:1,onPage:U.onPage,labels:U.labels}));return Ae.addEventListener("click",()=>{ne=se=fe.id,xe(f.getState())}),Q.append(Ae),{tab:fe,button:Ae,panel:le}});return Q.addEventListener("keydown",fe=>{let ke=Se.filter(pe=>!pe.button.hidden),oe=ke.findIndex(pe=>pe.tab.id===se),Ae={ArrowRight:1,ArrowLeft:-1,Home:-oe,End:ke.length-1-oe}[fe.key];if(Ae===void 0||oe===-1)return;fe.preventDefault();let le=E.getAttribute("dir")==="rtl"&&(fe.key==="ArrowRight"||fe.key==="ArrowLeft"),te=ke[(oe+(le?-Ae:Ae)+ke.length)%ke.length];ne=se=te.tab.id,xe(f.getState()),te.button.focus()}),_.append(Q,...Se.map(fe=>fe.panel)),g.push(()=>{_.hidden=f.node(x.id).invisible;let fe=Se.filter(oe=>!f.node(oe.tab.id).invisible);ne!==null&&fe.some(oe=>oe.tab.id===ne)?se=ne:fe.length&&(se=fe[0].tab.id);for(let oe of Se){let Ae=oe.tab.id===se;oe.button.hidden=!fe.includes(oe),oe.button.setAttribute("aria-selected",String(Ae)),oe.button.tabIndex=Ae?0:-1,oe.panel.hidden=!Ae}}),_}function T(x,U){switch(x.type){case"field":return R(x,U.labels);case"button":return $(x);case"text":return q(x);case"slot":return C(x);case"section":return z(x,U);case"tabs":return K(x,U);case"divider":case"spacer":case"image":return O(x)}}function O(x){let U=x.type==="divider"?m("hr",{class:"fd-divider","data-node":x.id}):x.type==="spacer"?m("div",{class:"fd-block fd-spacer","aria-hidden":"true","data-node":x.id}):D(x);return x.type!=="divider"&&x.colspan&&U.style.setProperty("--fd-span",String(x.colspan)),B(U,x.id),U}function D(x){let U=m("img",{class:"fd-image",src:x.src,alt:x.alt,loading:"lazy"}),_=x.href&&/^(https?:\/\/|mailto:)/i.test(x.href)?x.href:void 0,Q=m("figure",{class:"fd-block fd-figure","data-node":x.id,"data-align":x.align},_?m("a",{href:_,target:"_blank",rel:"noopener noreferrer"},U):U,...x.caption?[m("figcaption",{class:"fd-caption"},x.caption)]:[]),ne=typeof x.width=="number"?`${x.width}px`:x.width&&{small:"160px",medium:"320px",large:"480px",full:"100%"}[x.width];return ne&&Q.style.setProperty("--fd-image-width",ne),Q}let j=t.readonly===!0,I=t.editSwitch?m("button",{type:"button",class:"fd-button fd-edit-switch"}):null;I?.addEventListener("click",async()=>{if(j)j=!1;else{if(f.getState().dirty.length&&!await f.save()){f.getState().saveProblem||ee(ue(f.getState())),He();return}j=!0}E.toggleAttribute("data-readonly",j),xe(f.getState())}),E.toggleAttribute("data-readonly",j),g.push(()=>{I&&(I.textContent=j?b.edit:b.done,I.classList.toggle("fd-button-primary",j))});let N=m("div",{class:"fd-status",role:"status","aria-live":"polite"}),W=m("button",{type:"button",class:"fd-button fd-button-link fd-retry",hidden:""},b.retry);W.addEventListener("click",()=>{ut()});let J=m("div",{class:"fd-status-box"},N,W),Z=()=>a.data.kind==="responses"?b.notSent:b.notSaved;function ue(x){let U=[];for(let Q of Object.keys(x.errors)){let ne=Q.split(".")[0],Se=E.querySelector(`.fd-field[data-field="${ne}"]:not([hidden]) > .fd-label`)?.firstChild?.textContent??a.fields[ne]?.label??ne;U.includes(Se)||U.push(Se)}let _=[...E.querySelectorAll(".fd-field[data-field] > .fd-label")].map(Q=>Q.firstChild?.textContent??"");return U.sort((Q,ne)=>(_.indexOf(Q)+1||1/0)-(_.indexOf(ne)+1||1/0)),U.length?k(b.checkFields,{what:Z(),fields:U.join(", ")}):Z()}let re;g.push(x=>{let U=x.saveProblem,_=x.status==="saving"?b.saving:x.status==="saved"?b.saved:x.status==="loading"?b.loading:x.status==="error"&&U?U.kind==="fields"?ue(x):U.kind==="other"?U.message:Z():x.status==="error"?x.error??"":"";xo(N,"aria-live",x.status==="error"&&U?"off":"polite"),zn(N,_),tt(W,!(x.status==="error"&&U?.kind==="other")),N.classList.toggle("fd-status-error",x.status==="error"),N.classList.toggle("fd-status-saved",x.status==="saved"),t.saveStatus==="toast"&&(clearTimeout(re),J.hidden=!_,x.status==="saved"&&(re=setTimeout(()=>J.hidden=!0,2500)))});let de=m("button",{type:"button",class:"fd-button fd-retry"},b.retry);de.addEventListener("click",()=>{ut()});let ce=m("div",{class:"fd-banner fd-tone-warning",role:"alert",hidden:""},m("span",{class:"fd-banner-text"},b.offline),de),G=m("div",{class:"fd-announce",role:"alert","aria-live":"assertive"});function ee(x){G.textContent="",setTimeout(()=>G.textContent=x,0)}let he=null;g.push(x=>{x.saveProblem!==he&&(he=x.saveProblem,ce.hidden=he?.kind!=="network",he&&(he.kind==="rule"?Be(he.message,!1):he.kind==="fields"?ee(ue(x)):he.kind==="other"&&ee(he.message)))});let ge=m("div",{class:"fd-draft",hidden:""}),me=m("span"),be=m("button",{type:"button",class:"fd-button fd-button-primary"},b.restore),Me=m("button",{type:"button",class:"fd-button fd-button-link"},b.discardDraft);be.addEventListener("click",()=>f.restoreDraft()),Me.addEventListener("click",()=>f.discardDraft()),ge.append(me,be,Me),g.push(x=>{tt(ge,!x.draft),x.draft&&(me.textContent=k(b.draftFound,{time:new Date(x.draft.savedAt).toLocaleString()}))});function He(){let x=E.querySelector('[aria-invalid="true"]');if(!x)return;for(let _=x.closest(".fd-section-folded");_;_=_.parentElement?.closest(".fd-section-folded")??null)X.get(_)?.();if(!x.dispatchEvent(new CustomEvent("fd-focus-problem",{cancelable:!0})))return;(x.matches("input, select, textarea, button")?x:x.querySelector("input, select, textarea, button"))?.focus()}let Je=m("div",{class:"fd-done",hidden:""},m("p",{class:"fd-done-title"},b.submitted)),Ke=m("button",{type:"button",class:"fd-button"},b.submitAnother);Je.append(Ke);let ft=m("div",{class:"fd-content"});async function ut(){if(!await f.save()){f.getState().saveProblem||ee(ue(f.getState())),He();return}a.data.kind==="responses"&&(ft.hidden=!0,Je.hidden=!1)}Ke.addEventListener("click",()=>{f.reset(),ft.hidden=!1,Je.hidden=!0});function Bn(){if(!a.title&&!a.description)return null;let x=m("header",{class:"fd-page-head"});return a.title&&x.append(m("h1",{class:"fd-page-title"},a.title)),a.description&&x.append(m("p",{class:"fd-page-description"},a.description)),x}function pt(x){let U=m("div",{class:"fd-sections","data-node":x.id},...x.children.map(ne=>T(ne,P(!0)))),_=m("button",{type:"submit",class:"fd-button fd-button-primary"},a.data.kind==="responses"?b.submit:b.save),Q=m("div",{class:"fd-actions fd-actions-end"},J,_);if(a.data.kind==="record"){let ne=m("button",{type:"button",class:"fd-button"},b.discard);ne.addEventListener("click",()=>f.reset()),Q.insertBefore(ne,_),g.push(se=>{let Se=se.dirty.length>0&&se.status!=="saving"&&!j;tt(_,!Se),tt(ne,!Se)})}else g.push(()=>tt(_,j));return I&&Q.prepend(I),t.showActions===!1?m("div",{},U):a.actionsPosition==="top"?(Q.classList.add("fd-actions-top"),m("div",{},Q,U)):m("div",{},U,Q)}function w(x){let U=m("div",{class:"fd-wizard","data-node":x.id}),_=m("div",{class:"fd-progress-text"}),Q=m("span");U.append(m("div",{class:"fd-progress"},_,m("div",{class:"fd-progress-bar"},Q)));let ne=x.clickable?m("ol",{class:"fd-steps-list"}):null,se=new Map;if(ne){for(let te of x.children){let pe=m("button",{type:"button",class:"fd-step-link"},...L(te.icon,te.label));pe.addEventListener("click",()=>{f.goTo(te.id)?le():He()}),se.set(te.id,pe),ne.append(m("li",{},pe))}U.append(m("nav",{class:"fd-steps","aria-label":b.steps},ne))}let Se=x.children.map(te=>{let pe=m("section",{class:"fd-step","data-node":te.id,"aria-labelledby":v(`${te.id}-title`)});return pe.append(m("h2",{class:"fd-step-title",id:v(`${te.id}-title`)},...L(te.icon,te.label))),te.description&&pe.append(m("p",{class:"fd-section-description"},te.description)),pe.append(S(te.children,1,P(!1))),U.append(pe),{step:te,panel:pe}}),fe=m("button",{type:"button",class:"fd-button"},x.backLabel??b.back),ke=m("button",{type:"button",class:"fd-button fd-button-link"},b.skip),oe=m("button",{type:"submit",class:"fd-button fd-button-primary"});U.append(m("div",{class:"fd-wizard-nav"},fe,m("span",{class:"fd-spacer"}),J,ke,oe)),fe.addEventListener("click",()=>{f.back()&&le()}),ke.addEventListener("click",()=>{f.skip()&&le()});let Ae=()=>{let te=f.steps();return te.indexOf(f.getState().step??"")===te.length-1};M=async()=>{if(Ae())return ut();f.next()?le():He()};function le(){Se.find(pe=>pe.step.id===f.getState().step)?.panel.querySelector("input, select, textarea, [role=radio]")?.focus()}return g.push(te=>{let pe=f.steps(),Ce=Math.max(0,pe.indexOf(te.step??""));_.textContent=k(b.stepOf,{n:Ce+1,total:pe.length}),Q.style.width=`${(Ce+1)/Math.max(1,pe.length)*100}%`;for(let{step:We,panel:Te}of Se)Te.hidden=We.id!==te.step;let mt=Ce===pe.length-1;fe.hidden=Ce===0,ke.hidden=mt||!x.children.find(We=>We.id===te.step)?.optional,oe.textContent=mt?x.finishLabel??b.submit:x.nextLabel??b.next;for(let[We,Te]of se){let je=pe.indexOf(We);Te.parentElement.hidden=je===-1,Te.classList.toggle("fd-step-done",je!==-1&&je<Ce),Te.classList.toggle("fd-step-skipped",te.skipped.includes(We)),We===te.step?Te.setAttribute("aria-current","step"):Te.removeAttribute("aria-current")}}),U}function A(x){let U=m("div",{class:"fd-sheet-page","data-node":x.id}),_=m("div",{class:"fd-actions"}),Q=m("button",{type:"submit",class:"fd-button fd-button-primary"},b.save),ne=m("button",{type:"button",class:"fd-button"},b.discard);ne.addEventListener("click",()=>f.reset());let se=a.actionsPosition==="bottom",Se=m("div",{class:"fd-actions fd-actions-end fd-sheet-foot"});t.showActions===!1?_.append(...(x.buttons??[]).map($)):se?(_.append(...(x.buttons??[]).map($)),Se.append(J,ne,Q)):_.append(Q,ne,...(x.buttons??[]).map($),J),I&&t.showActions!==!1&&_.prepend(I),g.push(le=>{let te=le.dirty.length>0&&le.status!=="saving"&&!j;Q.hidden=!te,ne.hidden=!te});let fe=m("div",{class:"fd-header"},_),ke=x.statusbar?.position==="title";x.statusbar&&!ke&&fe.append(V(x.statusbar));let oe=m("div",{class:"fd-card"});if(x.ribbon){let le=m("div",{class:`fd-ribbon fd-tone-${x.ribbon.tone??"muted"}`,"data-node":x.ribbon.id},x.ribbon.label);B(le,x.ribbon.id),oe.append(m("div",{class:"fd-ribbon-frame"},le))}if(x.statButtons?.length){let le=m("div",{class:"fd-stats"});for(let te of x.statButtons){let pe=m("span",{class:"fd-stat-value"}),Ce=lt(n,te.icon,t.icons),mt=m("span",{class:"fd-stat-words"},pe,m("span",{class:"fd-stat-label"},te.label)),We=m("button",{type:"button",class:"fd-stat","data-node":te.id},...Ce?[Ce,mt]:[mt]);We.addEventListener("click",()=>{f.runAction(te.id)}),g.push(Te=>{We.hidden=f.node(te.id).invisible;let je=te.field?Te.values[te.field]:null;pe.textContent=je==null?"":String(je)}),le.append(We)}oe.append(le)}for(let le of x.alerts??[]){let te=m("div",{class:`fd-alert fd-tone-${le.tone??"info"}`,role:"status","data-node":le.id},m("span",{class:"fd-alert-message"},le.message));if(le.dismissible){let pe=!1,Ce=m("button",{type:"button",class:"fd-alert-close","aria-label":b.dismiss},"\xD7");Ce.addEventListener("click",()=>{pe=!0,te.hidden=!0}),te.append(Ce),g.push(()=>{te.hidden=pe||f.node(le.id).invisible})}else B(te,le.id);oe.append(te)}if(x.badges?.length){let le=m("div",{class:"fd-badges"});for(let te of x.badges){let pe=m("span",{class:`fd-badge fd-tone-${te.tone??"muted"}`,"data-node":te.id},...L(te.icon,te.label));B(pe,te.id),le.append(pe)}g.push(()=>{le.hidden=[...le.children].every(te=>te.hidden)}),oe.append(le)}if(x.title){let le=m("div",{class:"fd-title"});x.title.above?.length&&le.append(m("div",{class:"fd-title-above"},...x.title.above.map(pe=>R(pe)))),le.append(R({type:"field",id:"#title",field:x.title.field,placeholder:x.title.placeholder})),x.title.subtitleField&&le.append(R({type:"field",id:"#subtitle",field:x.title.subtitleField})),x.title.below?.length&&le.append(m("div",{class:"fd-title-below"},...x.title.below.map(pe=>R(pe))));let te=m("div",{class:"fd-title-row"},le);if(x.title.avatarField){let pe=R({type:"field",id:"#avatar",field:x.title.avatarField});pe.classList.add("fd-avatar"),te.append(pe)}oe.append(te)}x.statusbar&&ke&&oe.append(m("div",{class:"fd-title-statusbar"},V(x.statusbar))),oe.append(S(x.children,1,P(!1))),se&&t.showActions!==!1&&(oe.append(Se),g.push(le=>{Se.hidden=le.dirty.length===0&&!N.textContent}));let Ae=m("div",{class:"fd-sheet-layout"},oe);return x.sidePanel&&(Ae.classList.add("fd-has-side"),Ae.append(m("aside",{class:"fd-side"},C(x.sidePanel)))),U.append(fe,Ae),U}function V(x){let U=a.fields[x.field],_={clickable:x.clickable===!0};x.visibleStates&&(_.visibleStates=x.visibleStates);let Q={type:"field",id:"#statusbar",field:x.field,widget:"statusbar",options:_},ne=Ue({form:f,name:x.field,field:U,node:Q,id:v("statusbar"),document:n,labels:p,preferences:d,locale:s,dialogs:l},t.widgets);return g.push(se=>ne.update({value:se.values[x.field],values:se.values,readonly:f.node("#statusbar").readonly||j,required:!1,invalid:!1})),ne.element}let M=null,Y=a.layout,ie;if(Y.type==="sheet")ie=A(Y);else if(Y.type==="wizard")ie=w(Y);else if(Y.type==="tabs")ie=pt({id:`${Y.id}-page`,children:[Y]});else if(Y.type==="list"){let x=yo({page:a,node:Y,form:f,dataSource:t.dataSource,doc:n,el:m,labels:b,locale:s,fill:k,confirm:F,withIcon:L,uid:v,icons:t.icons,preferences:d,onOpenRecord:t.onOpenRecord});y.push(x.destroy),ie=x.element}else ie=pt(Y);let ae=Y.type==="sheet"?null:Bn();ft.append(...ae?[ae]:[],ce,ge,ie),E.append(ft,Je,G),t.saveStatus==="toast"?(J.classList.add("fd-toast"),E.append(J)):t.saveStatus==="bar"&&(J.classList.add("fd-status-bar"),ft.prepend(J)),E.addEventListener("submit",x=>{x.preventDefault(),Y.type!=="list"&&(M?M():ut())});function we(){let x=n.activeElement;x&&E.contains(x)&&(x.tagName==="INPUT"||x.tagName==="TEXTAREA")&&x.dispatchEvent(new Event("change",{bubbles:!0}))}function Oe(x){let U=[...E.querySelectorAll(".fd-field")].filter(ne=>!ne.closest('[hidden], [data-type="one2many"] .fd-field, .fd-form-dialog')&&!ne.parentElement?.closest('[data-type="one2many"]')),_=x.closest(".fd-field"),Q=U.slice(U.indexOf(_)+1);for(let ne of Q){let se=ne.querySelector('input:not([type="hidden"]):not([readonly]):not([disabled]), select:not([disabled]), textarea:not([readonly]), [contenteditable="true"]');if(se)return se}return null}E.addEventListener("keydown",x=>{if(x.isComposing||x.key!=="Enter"||Y.type==="list"||x.target.closest(".fd-slot"))return;let U=t.keys??{};if(x.ctrlKey||x.metaKey){if(U.saveWithCtrlEnter===!1||t.showActions===!1||x.target.closest(".ag-root-wrapper"))return;x.preventDefault(),we(),M?M():ut();return}if(x.defaultPrevented||!U.enterMovesToNext||x.shiftKey||x.altKey)return;let _=x.target;_.tagName!=="INPUT"&&_.tagName!=="SELECT"||_.closest('[data-type="one2many"]')||["button","submit","reset","file"].includes(_.type)||(x.preventDefault(),Oe(_)?.focus())});function Be(x,U=!0){return new Promise(_=>{let Q=m("p",{id:`${u}-confirm`},x),ne=m("button",{type:"button",class:"fd-button"},b.cancel),se=m("button",{type:"button",class:"fd-button fd-button-primary"},b.ok),Se=m("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":Q.id},Q,m("div",{class:"fd-actions fd-actions-end"},...U?[ne,se]:[se])),fe=m("div",{class:"fd-dialog-backdrop"},Se),ke=E.ownerDocument,oe=ke.activeElement,Ae=le=>{fe.remove(),((Ce=>!!Ce&&Ce!==ke.body&&Ce.isConnected&&!Ce.closest("[hidden]"))(oe)?oe:E.querySelector('button[type="submit"]:not([hidden])'))?.focus(),_(le)};ne.addEventListener("click",()=>Ae(!1)),se.addEventListener("click",()=>Ae(!0)),fe.addEventListener("keydown",le=>{le.key==="Escape"?Ae(!1):st(Se,le)}),E.append(fe),se.focus()})}function xe(x){for(let U of g)U(x)}e.append(E);let Yt=f.subscribe(xe);return xe(f.getState()),f.getState().status==="idle"&&f.load(),{form:f,element:E,setSkin(x){E.setAttribute("data-fd-skin",x)},async save(){let x=await f.save();return x||He(),x},check(){let x=f.validate();return x||He(),x},setReadonly(x){j=x,E.toggleAttribute("data-readonly",j),xe(f.getState())},isReadonly:()=>j,destroy(){Yt();for(let x of y)x();E.remove(),h&&f.dispose()}}}var vo='input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]), textarea',ys=new Set(["boolean","one2many","binary","image","html","json","properties"]);function Hn(e,t){De[e]={...De.en,...t.messages},Ne[e]={...Ne.en,...t.widgets},Ge[e]={...Ge.en,...t.viewer}}var xs="0.10.0",wo=globalThis;for(let[e,t]of wo.FieldiaLanguages??[])Hn(e,t);delete wo.FieldiaLanguages;return To(vs);})();
|
|
1
|
+
/*! Fieldia 0.12.0 · MIT · https://fieldia.dev */
|
|
2
|
+
"use strict";var Fieldia=(()=>{var yr=Object.defineProperty;var Rd=Object.getOwnPropertyDescriptor;var Fd=Object.getOwnPropertyNames;var Ad=Object.prototype.hasOwnProperty;var Td=(e,t,n)=>t in e?yr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var $d=(e,t)=>{for(var n in t)yr(e,n,{get:t[n],enumerable:!0})},Md=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Fd(t))!Ad.call(e,i)&&i!==n&&yr(e,i,{get:()=>t[i],enumerable:!(r=Rd(t,i))||r.enumerable});return e};var Nd=e=>Md(yr({},"__esModule",{value:!0}),e);var Vt=(e,t,n)=>Td(e,typeof t!="symbol"?t+"":t,n);var uf={};$d(uf,{ADDRESS_PARTS:()=>Dr,BROWSER_HOTKEYS:()=>Fr,DEFAULT_LABELS:()=>Qs,DRAWN_IN_CELLS:()=>Ml,FIELDIA_CSS:()=>Js,FIELD_NAME:()=>Tn,FIELD_TYPES:()=>vr,FIRST_FIELD:()=>ur,FORMAT_VERSION:()=>xr,FORM_WIDTHS:()=>kc,HOTKEY:()=>Jo,ICONS:()=>Xa,MESSAGES:()=>wt,PART_LOOKS:()=>Vo,VERSION:()=>ff,VIEWER_LABELS:()=>Ct,WIDGET_LABELS:()=>Ke,accentShades:()=>fr,addLanguage:()=>wi,applyLook:()=>Sn,binaryWidget:()=>ar,browserPreferences:()=>wo,builtInWidgets:()=>js,cellText:()=>or,charTagsWidget:()=>qi,checkPage:()=>Zn,checkValue:()=>On,compileModifier:()=>Ye,contrast:()=>kn,countriesIn:()=>so,createForm:()=>jr,createMemoryDataSource:()=>ma,createWidget:()=>$t,currencyOf:()=>Dn,dayOf:()=>fn,describeTypes:()=>tr,detailLines:()=>_r,displayValue:()=>vt,distributionIds:()=>Ga,distributionModel:()=>Ki,distributionWords:()=>Kr,drawIcon:()=>bt,emptyValue:()=>yn,evaluateModifier:()=>Zo,expressionContext:()=>pn,facetsToFilter:()=>Vr,fileProblem:()=>er,fileShown:()=>Zi,fill:()=>je,fillValues:()=>Go,focusField:()=>bi,formatBytes:()=>Yt,formatMoney:()=>wn,formatNumber:()=>ut,groupByFields:()=>Pr,hostScheduler:()=>nr,hotkeyWords:()=>Mn,htmlWidget:()=>ro,imageWidget:()=>Xi,initialValues:()=>un,installListStyles:()=>vi,installStyles:()=>xo,isEmpty:()=>Ht,isModifierValid:()=>Qo,isRightToLeft:()=>$r,isoWeek:()=>cs,jsonWidget:()=>io,keepTabIn:()=>Bt,kindTextField:()=>es,labelPlace:()=>gr,labelWidget:()=>dr,lineForm:()=>Gr,lineKind:()=>ft,linesWidget:()=>Ji,linkAddress:()=>ps,linkAvatar:()=>In,linkCheckboxesWidget:()=>_i,localizePage:()=>Qn,many2oneWidget:()=>ir,matchesFilter:()=>Pn,memoryPreferences:()=>Lc,mountViewer:()=>pr,normalizeNumber:()=>zt,openFormDialog:()=>Bn,openFormPanel:()=>Ro,openLineDialog:()=>Jr,openSearchDialog:()=>Fo,ownCurrency:()=>ts,pageWords:()=>Xo,planSection:()=>xi,progressbarWidget:()=>sr,propertiesWidget:()=>to,readFile:()=>Xr,readText:()=>So,readsAsText:()=>ko,referenceWidget:()=>Ui,rolesAllow:()=>bn,sanitizeHtml:()=>no,saveProblemOf:()=>Nr,saveRefused:()=>fa,scoreOf:()=>ca,splitValues:()=>$n,statusbarWidget:()=>Qr,suggestions:()=>Or,summary:()=>Zr,tagsWidget:()=>Ur,translatePage:()=>Cn,valuesIn:()=>Rr,wait:()=>Ir,wideColumns:()=>dn,withCalendar:()=>ti});var Tn=/^[A-Za-z_][A-Za-z0-9_]*$/,vr=["char","text","html","integer","float","monetary","boolean","date","datetime","selection","binary","image","many2one","many2many","one2many","reference","properties","json","matrix"];function dn(e){return typeof e=="object"?e.wide:e??1}var xr="0.1";var Vo={inputs:["background","border","corners","textSize","accent"],choices:["accent","background","border","corners","textSize"],groups:["background","border","corners"],buttons:["accent","corners","textSize"],tables:["background","border","textSize"]};var Fi=["id","user","editing","context"],Ai=["id","name","roles"];var mt=e=>typeof e=="number"&&Number.isFinite(e);function Gt(e){return Number.isFinite(e)?Number(e.toPrecision(15)):null}function Io(e,t,n){if(e==="+"&&(typeof t=="string"||typeof n=="string")){let r=Po(t),i=Po(n);return r===null||i===null?null:r+i}if(!mt(t)||!mt(n))return null;switch(e){case"+":return Gt(t+n);case"-":return Gt(t-n);case"*":return Gt(t*n);case"/":return Gt(t/n);case"%":return Gt(t-n*Math.floor(t/n));default:return null}}function Po(e){return e==null?"":typeof e=="string"?e:mt(e)?String(e):null}function Do(e){return mt(e)?Gt(-e):null}function At(e){return Array.isArray(e)?e.length>0:e!==null&&typeof e=="object"?Object.keys(e).length>0:!!e}function Yn(e,t){let n=10**Math.trunc(t),r=Number((Math.abs(e)*n).toPrecision(15));return Gt(Math.sign(e)*Math.round(r)/n)}function ln(e){let t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function Wo(e){let t=e.args[0];return(t.type==="Identifier"?e.env.lines?.(t.name):void 0)??e.value(t)}function jo(e,t,n,r){let i=e[t];return i&&!(i.type==="Literal"&&typeof i.value=="string")?`${n} takes a condition, in quotes, on the lines: ${r}`:void 0}function Ho(e,t,n){let r=e.args[n];if(r?.type!=="Literal"||typeof r.value!="string")return t;let i=r.value;return t.filter(o=>o!==null&&typeof o=="object"&&e.holds(i,o))}function zo(e){if(typeof e!="string")return null;let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);return t?Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3]))/864e5:null}function Bo(e,t){let n=e.args.flatMap(i=>{let o=e.value(i);return Array.isArray(o)?o:[o]}).filter(i=>i!=null);return!n.length||!n.every(mt)&&!n.every(i=>typeof i=="string")?null:n.reduce((i,o)=>(t?o<i:o>i)?o:i)}var Xn=new Map([["round",{takes:[1,2],call({args:e,value:t}){let n=t(e[0]),r=e.length>1?t(e[1]):0;return mt(n)&&mt(r)?Yn(n,r):null}}],["abs",{takes:[1,1],call({args:e,value:t}){let n=t(e[0]);return mt(n)?Math.abs(n):null}}],["min",{takes:[1,1/0],call:e=>Bo(e,!0)}],["max",{takes:[1,1/0],call:e=>Bo(e,!1)}],["len",{takes:[1,1],call({args:e,value:t}){let n=t(e[0]);return n==null?0:typeof n=="string"||Array.isArray(n)?n.length:null}}],["today",{takes:[0,0],call:({env:e})=>e.today?.()??ln(new Date)}],["sum",{takes:[1,3],check(e){let t=e[1];return t&&!(t.type==="Literal"&&typeof t.value=="string")?"sum takes the name of a field, in quotes, after the lines: sum(lines, 'subtotal')":jo(e,2,"sum",`sum(lines, 'amount', "state == 'done'")`)},call(e){let t=Wo(e);if(t==null)return 0;if(!Array.isArray(t))return null;let n=e.args[1]?.type==="Literal"?e.args[1].value:void 0,r=0;for(let i of Ho(e,t,2)){let o=n===void 0?i:i?.[n];mt(o)&&(r+=o)}return Gt(r)}}],["count",{takes:[1,2],check:e=>jo(e,1,"count",`count(lines, "state == 'done'")`),call(e){let t=Wo(e);return t==null?0:Array.isArray(t)?Ho(e,t,1).length:null}}],["days",{takes:[2,2],call({args:e,value:t}){let n=zo(t(e[0])),r=zo(t(e[1]));return n===null||r===null?null:r-n}}],["if",{takes:[3,3],call:({args:e,value:t})=>At(t(e[0]))?t(e[1]):t(e[2])}]]);function qo(e,[t,n]){return n===0?`${e} takes no values`:t===n?`${e} takes ${t} value${t===1?"":"s"}`:n===1/0?`${e} takes ${t} or more values`:`${e} takes ${t} or ${n} values`}var Ti=new Map([["True",!0],["False",!1],["None",null],["true",!0],["false",!1],["null",null]]),Cd=new Set(["+","-","*","/","%"]);function Jt(e){let t=[];if(!e)return t;let n=/(\(|\)|,|==|!=|<=|>=|<>|<|>|[-+*/%]|not\s+in\b|in\b|and\b|or\b|not\b|\[[^\]]*\]|'[^']*'|"[^"]*"|\d+\.?\d*|\w+(?:\.\w+)*)/iy,r=/\s*/y,i=0;for(;;){if(r.lastIndex=i,r.exec(e),i=r.lastIndex,i>=e.length)return t;n.lastIndex=i;let o=n.exec(e);if(!o)throw new Error(`Unexpected "${e[i]}" at character ${i+1} of: ${e}`);t.push({type:Od(o[0]),value:o[0],position:t.length}),i=n.lastIndex}}function Od(e){let t=e.toLowerCase().trim();return Ti.has(e)?"CONSTANT":t==="and"||t==="or"||t==="not"?"LOGICAL":["==","!=","<>","<",">","<=",">="].includes(e)||t==="in"||t==="not in"?"OPERATOR":e==="("||e===")"?"PAREN":Cd.has(e)?"ARITHMETIC":e===","?"COMMA":e.startsWith("[")?"LIST":e.startsWith("'")||e.startsWith('"')?"STRING":/^\d+\.?\d*$/.test(e)?"NUMBER":"IDENTIFIER"}var Pt=class{constructor(t){Vt(this,"tokens");Vt(this,"position",0);this.tokens=t}parse(){if(this.tokens.length===0)throw new Error("Cannot parse empty expression");let t=this.parseOr();if(!this.isAtEnd())throw new Error(`Unexpected token at position ${this.position}: ${this.peek()?.value}`);return t}parseOr(){let t=this.parseAnd();for(;this.matchLogical("or");){let n=this.previous().value,r=this.parseAnd();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:r}}return t}parseAnd(){let t=this.parseNot();for(;this.matchLogical("and");){let n=this.previous().value,r=this.parseNot();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:r}}return t}parseNot(){if(this.matchLogical("not")){let t=this.previous().value,n=this.parseComparison();return{type:"UnaryOp",operator:t.toLowerCase(),operand:n}}return this.parseComparison()}parseComparison(){let t=this.parseSum(),n=["==","!=","<>","<",">","<=",">=","in","not in"];if(this.matchOperator(...n)){let r=this.previous().value,i=this.parseSum();return{type:"BinaryOp",operator:r.toLowerCase(),left:t,right:i}}return t}parseSum(){let t=this.parseProduct();for(;this.match("ARITHMETIC","+","-");)t={type:"BinaryOp",operator:this.previous().value,left:t,right:this.parseProduct()};return t}parseProduct(){let t=this.parseUnary();for(;this.match("ARITHMETIC","*","/","%");)t={type:"BinaryOp",operator:this.previous().value,left:t,right:this.parseUnary()};return t}parseUnary(){return this.match("ARITHMETIC","-")?{type:"UnaryOp",operator:"-",operand:this.parseUnary()}:this.parseValue()}parseTuple(t){let n=[t];for(;this.match("COMMA")&&!(this.peek()?.type==="PAREN"&&this.peek()?.value===")");)n.push(this.parseOr());return this.consume("PAREN",")",'Expected "," or ")" in a tuple'),{type:"Literal",value:n.map(Vd)}}parseCall(t){let n=Xn.get(t);if(!n)throw new Error(`no function "${t}": the functions are ${[...Xn.keys()].join(", ")}`);this.advance();let r=[];if(!this.match("PAREN",")")){do r.push(this.parseOr());while(this.match("COMMA"));this.consume("PAREN",")",`Expected "," or ")" after a value of ${t}(\u2026)`)}let[i,o]=n.takes;if(r.length<i||r.length>o)throw new Error(qo(t,n.takes));let a=n.check?.(r);if(a)throw new Error(a);return{type:"Call",name:t,args:r}}parseValue(){if(this.match("PAREN","(")){if(this.match("PAREN",")"))return{type:"Literal",value:[]};let t=this.parseOr();return this.check("COMMA")?this.parseTuple(t):(this.consume("PAREN",")","Expected closing parenthesis"),t)}if(this.check("STRING"))return{type:"Literal",value:this.advance().value.slice(1,-1)};if(this.check("CONSTANT")){let t=this.advance();return{type:"Literal",value:Ti.get(t.value)??null}}if(this.check("NUMBER")){let t=this.advance();return{type:"Literal",value:Number(t.value)}}if(this.check("LIST")){let t=this.advance();return{type:"Literal",value:Pd(t.value)}}if(this.check("IDENTIFIER")){let t=this.advance(),n=this.peek();return n?.type==="PAREN"&&n.value==="("?this.parseCall(t.value):{type:"Identifier",name:t.value}}throw new Error(`Unexpected token: ${this.peek()?.value||"EOF"}`)}match(t,...n){if(this.check(t)){if(n.length===0)return this.advance(),!0;let r=this.peek();if(r&&n.includes(r.value))return this.advance(),!0}return!1}matchLogical(...t){let n=this.peek();if(n&&n.type==="LOGICAL"){let r=n.value.toLowerCase();if(t.map(i=>i.toLowerCase()).includes(r))return this.advance(),!0}return!1}matchOperator(...t){let n=this.peek();if(n&&n.type==="OPERATOR"){let r=n.value.toLowerCase();if(t.map(i=>i.toLowerCase()).includes(r))return this.advance(),!0}return!1}check(t){return this.peek()?.type===t}advance(){return this.isAtEnd()||this.position++,this.previous()}peek(){return this.isAtEnd()?null:this.tokens[this.position]}previous(){return this.tokens[this.position-1]}isAtEnd(){return this.position>=this.tokens.length}consume(t,n,r){if(this.check(t)){let i=this.peek();if(i&&i.value===n)return this.advance()}throw new Error(r)}};function Vd(e){if(e.type==="Literal")return e.value;if(e.type==="UnaryOp"&&e.operator==="-"&&e.operand.type==="Literal"&&typeof e.operand.value=="number")return-e.operand.value;throw new Error("a tuple holds values such as 'draft' or 3, not expressions")}function Pd(e){try{let t=e.slice(1,-1).trim();if(!t)return[];let n=[],r="",i=!1,o="";for(let a=0;a<t.length;a++){let d=t[a];(d==="'"||d==='"')&&(a===0||t[a-1]!=="\\")&&(i?d===o&&(i=!1,o=""):(i=!0,o=d)),d===","&&!i?(n.push(_o(r.trim())),r=""):r+=d}return r.trim()&&n.push(_o(r.trim())),n}catch(t){throw new Error(`Cannot read the list ${e}`,{cause:t})}}function _o(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):isNaN(Number(e))?e.toLowerCase()==="true"?!0:e.toLowerCase()==="false"?!1:e:Number(e)}function Tt(e,t,n={}){switch(e.type){case"BinaryOp":return Id(e,t,n);case"UnaryOp":return Dd(e,t,n);case"Call":return Wd(e,t,n);case"Literal":return e.value;case"Identifier":return Hd(t,e.name);default:throw new Error(`Unknown AST node type: ${e.type}`)}}function Id(e,t,n){let r=e.operator.toLowerCase();if(r==="and"||r==="or"){let d=wr(Tt(e.left,t,n));return At(d)===(r==="or")?d:wr(Tt(e.right,t,n))}let i=wr(Tt(e.left,t,n)),o=wr(Tt(e.right,t,n)),a=i!==null&&o!==null;switch(r){case"==":return i===o;case"!=":case"<>":return i!==o;case"<":return a&&i<o;case">":return a&&i>o;case"<=":return a&&i<=o;case">=":return a&&i>=o;case"in":return Array.isArray(o)&&o.includes(i);case"not in":return Array.isArray(o)&&!o.includes(i);case"+":case"-":case"*":case"/":case"%":return Io(r,i,o);default:throw new Error(`Unknown binary operator: ${e.operator}`)}}function Dd(e,t,n){let r=Tt(e.operand,t,n);switch(e.operator.toLowerCase()){case"not":return!At(r);case"-":return Do(r);default:throw new Error(`Unknown unary operator: ${e.operator}`)}}function Wd(e,t,n){let r=Xn.get(e.name);if(!r)throw new Error(`Unknown function: ${e.name}`);return r.call({args:e.args,value:i=>Tt(i,t,n),env:n,holds:(i,o)=>At(Tt(jd(i),o,n))})}var Uo=new Map;function jd(e){let t=Uo.get(e);return t||Uo.set(e,t=new Pt(Jt(e)).parse()),t}function wr(e){return e===void 0?null:e}function Hd(e,t){let n=t.split("."),r=e;for(let i of n){if(r==null)return;r=r[i]}return r}function cn(e,t){switch(t(e),e.type){case"BinaryOp":cn(e.left,t),cn(e.right,t);return;case"UnaryOp":cn(e.operand,t);return;case"Call":for(let n of e.args)cn(n,t);return;default:return}}function kr(e){let t=[];return cn(e,n=>{if(n.type!=="Identifier")return;let r=n.name.split(".")[0];t.includes(r)||t.push(r)}),t}function Sr(e){let t=[];return cn(e,n=>{n.type==="Identifier"&&!t.includes(n.name)&&t.push(n.name)}),t}function Lr(e){let t=[];return cn(e,n=>{if(n.type!=="Call"||n.name!=="count"&&n.name!=="sum")return;let[r,i]=n.name==="count"?[n.args[0],n.args[1]]:[n.args[0],n.args[2]];r.type==="Identifier"&&i?.type==="Literal"&&typeof i.value=="string"&&t.push({lines:r.name,condition:i.value})}),t}function Ko(e){let t=[];return cn(e,n=>{if(n.type!=="Call"||n.name!=="sum")return;let[r,i]=n.args;r.type==="Identifier"&&i?.type==="Literal"&&t.push({lines:r.name,field:i.value})}),t}function Ye(e){if(typeof e!="string"){let n=e===!0;return{source:e,fields:[],paths:[],wheres:[],evaluate:()=>n}}let t=new Pt(Jt(e)).parse();return{source:e,fields:kr(t),paths:Sr(t),wheres:Lr(t),evaluate(n,r){try{return At(Tt(t,n,r))}catch{return!1}}}}function It(e){let t=new Pt(Jt(e)).parse();return{source:e,fields:kr(t),paths:Sr(t),wheres:Lr(t),sums:Ko(t),evaluate(n,r={}){try{return Tt(t,n,r)??null}catch{return null}}}}function Er(e){let t=[],n=[],r=new Set,i=[],o=a=>{if(r.has(a))return;let d=i.indexOf(a);if(d!==-1){n.push([...i.slice(d),a]);return}i.push(a);for(let s of e.get(a)??[])e.has(s)&&o(s);i.pop(),r.add(a),t.push(a)};for(let a of e.keys())o(a);return{order:t,cycles:n}}var $i=/\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function Rr(e){return[...e.matchAll($i)].map(t=>t[1])}function Go(e,t){return e.replace($i,(n,r)=>t(r))}function $n(e){let t=[],n=0;for(let r of e.matchAll($i))r.index>n&&t.push({text:e.slice(n,r.index)}),t.push({text:"",field:r[1]}),n=r.index+r[0].length;return n<e.length&&t.push({text:e.slice(n)}),t}var Jo=/^(shift\+)?[a-z0-9]$/,Fr=["d","e","f"],Mn=e=>`Alt+${e.startsWith("shift+")?"Shift+":""}${e.slice(-1).toUpperCase()}`;var gt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Yo=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),Mi="text, numbers, yes or no, dates, choices and json can",zd=e=>{let t=e.map(n=>`"${n}"`);return t.length<2?t.join(""):`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`},Ar=class e{constructor(t,n){Vt(this,"page",t);Vt(this,"line",n);Vt(this,"issues",[]);Vt(this,"ids",new Map);Vt(this,"formNames",new Map);Vt(this,"places",new Set);Vt(this,"goingTo",[])}run(){return this.checkFields(this.page.fields,"fields",this.line?.name,this.line?.parent),this.walkRoot(this.page.layout,"layout"),this.page.on&&this.checkEvents(this.page.on,"on"),this.checkGoingTo(),this.issues}checkGoingTo(){for(let{target:t,path:n}of this.goingTo)this.places.has(t)||this.report(n,`no tab or wizard step "${t}" on this page`)}here(){return this.line?{fields:this.page.fields,lines:this.line.name,parent:this.line.parent}:{fields:this.page.fields}}checkLineForm(t,n,r){let i=t.lineForm?.children;if(!Array.isArray(i))return this.report(`${r}.lineForm`,'a line\u2019s form holds its parts: { "children": [...] }');let o={...this.page,fields:n.fields,layout:{type:"sections",id:`${t.id}#line`,children:i},on:void 0},a=new e(o,{name:t.field,parent:this.page.fields});a.walkChildren(i,`${r}.lineForm`),a.checkGoingTo(),this.issues.push(...a.issues)}checkEvents(t,n){for(let r of["open","beforeSave","afterSave"]){let i=t[r];i&&this.checkSteps(i,`${n}.${r}`)}for(let[r,i]of Object.entries(t.change??{}))this.formNames.has(r)||this.need(r,`${n}.change.${r}`),this.checkSteps(i,`${n}.change.${r}`);for(let[r,i]of Object.entries(t.show??{}))this.goingTo.push({target:r,path:`${n}.show.${r}`}),this.checkSteps(i,`${n}.show.${r}`)}checkPress(t,n){!t.steps&&t.action===void 0&&this.report(n,"a button needs steps, an action, or both");let r="hotkey"in t?t.hotkey:void 0;typeof r=="string"&&Fr.includes(r.replace("shift+",""))&&this.report(`${n}.hotkey`,`${Mn(r)} is the browser\u2019s own: pick another key`),t.steps&&this.checkSteps(t.steps,`${n}.steps`)}checkSteps(t,n){let r=this.here();t.forEach((i,o)=>{let a=`${n}[${o}]`;switch(this.checkModifiers(i,a,["when"]),i.do){case"set":{let d=this.need(i.field,`${a}.field`);d&&!Yo.has(d.type)&&this.report(`${a}.field`,`a ${d.type} cannot be set from an expression; ${Mi}`),this.checkExpression(i.value,`${a}.value`,r);return}case"clear":this.need(i.field,`${a}.field`);return;case"addLine":{let d=this.need(i.field,`${a}.field`);if(d&&d.type!=="one2many")return this.report(`${a}.field`,`"${i.field}" is a ${d.type}; a line is added to a one2many`);for(let[s,l]of Object.entries(i.values??{}))d?.type==="one2many"&&!gt(d.fields,s)&&this.report(`${a}.values.${s}`,`"${s}" is not a field of the lines of "${i.field}"`),this.checkExpression(l,`${a}.values.${s}`,r);return}case"check":i.fields?.forEach((d,s)=>this.need(d,`${a}.fields[${s}]`));return;case"goTo":this.goingTo.push({target:i.target,path:`${a}.target`});return;case"open":i.page===this.page.id&&i.as==="page"&&this.report(`${a}.page`,"a page cannot open itself in its own place"),i.side!==void 0&&i.as!=="panel"&&this.report(`${a}.side`,`a side is where a panel comes from; this opens ${i.as==="page"?"in its place":"in a dialog"}`),i.record!==void 0&&this.checkExpression(i.record,`${a}.record`,r);for(let[d,s]of Object.entries(i.values??{}))this.checkExpression(s,`${a}.values.${d}`,r);i.filter?.forEach((d,s)=>this.checkFilterItem(d,`${a}.filter[${s}]`,r));for(let[d,s]of Object.entries(i.into??{})){this.need(d,`${a}.into.${d}`);try{It(s)}catch(l){this.report(`${a}.into.${d}`,`cannot read "${s}": ${l.message}`)}}i.then&&this.checkSteps(i.then,`${a}.then`);return;case"openUrl":this.checkExpression(i.url,`${a}.url`,r);return;default:return}})}checkValuesIn(t,n){for(let r of Rr(t))this.need(r,n)}report(t,n){this.issues.push({path:t,message:n})}claim(t,n){let r=this.ids.get(t);r!==void 0?this.report(n,`duplicate id "${t}", also used at ${r}`):this.ids.set(t,n)}need(t,n,r=this.page.fields){if(gt(r,t))return r[t];this.report(n,`no field "${t}"`)}checkFilterItem(t,n,r){if("any"in t)return t.any.forEach((i,o)=>this.checkFilterItem(i,`${n}.any[${o}]`,r));if("all"in t)return t.all.forEach((i,o)=>this.checkFilterItem(i,`${n}.all[${o}]`,r));t.valueFrom!==void 0&&this.checkValueFrom(t.valueFrom,`${n}.valueFrom`,r)}checkValueFrom(t,n,r){let[i,o]=t.split(".");if(o===void 0){if(gt(r.fields,t)||t==="id"&&r.lines===void 0)return;this.need(t,n,r.fields)}else i==="user"?Ai.includes(o)||this.report(n,`"${t}": the person has an id, name or roles`):i==="context"||(r.lines===void 0?this.report(n,`"${t}": only a line's filter reads parent, the record it is on`):!gt(r.parent??this.page.fields,o)&&o!=="id"&&this.report(n,`"${t}": "${o}" is not a field of this page`))}checkModifiers(t,n,r=["invisible"],i=this.here()){for(let o of r){let a=t[o];if(typeof a!="string")continue;let d;try{d=Ye(a)}catch(s){this.report(`${n}.${o}`,`cannot read "${a}": ${s.message}`);continue}this.checkReads(a,d,`${n}.${o}`,i)}}checkReads(t,n,r,i){for(let o of n.wheres){let a=i.fields[o.lines];if(a?.type!=="one2many")continue;let d;try{d=Ye(o.condition).fields}catch(s){this.report(r,`cannot read the condition "${o.condition}": ${s.message}`);continue}for(let s of d)gt(a.fields,s)||this.report(r,`"${o.condition}" reads "${s}", which is not a field of the lines of "${o.lines}"`)}for(let o of n.fields){if(gt(i.fields,o))continue;if(i.lines===void 0?Fi.includes(o):o==="user"||o==="parent"||o==="id"||o==="context"){for(let s of n.paths){let[l,f]=s.split(".");l!==o||f===void 0||(o==="user"&&!Ai.includes(f)&&this.report(r,`"${t}" reads "${s}": the person has an id, name or roles`),o==="parent"&&!gt(i.parent??this.page.fields,f)&&!Fi.includes(f)&&this.report(r,`"${t}" reads "${s}": "${f}" is not a field of this page`))}continue}let d=i.lines===void 0?"of this page":`of the lines of "${i.lines}"`;this.report(r,`"${t}" reads "${o}", which is not a field ${d}`)}}checkExpression(t,n,r){let i;try{i=It(t)}catch(o){return this.report(n,`cannot read "${t}": ${o.message}`),null}this.checkReads(t,i,n,r);for(let o of i.sums){if(!gt(r.fields,o.lines))continue;let a=r.fields[o.lines];a.type!=="one2many"?this.report(n,`sum adds up the lines of a one2many; "${o.lines}" is a ${a.type}`):gt(a.fields,o.field)||this.report(n,`"${o.field}" is not a field of the lines of "${o.lines}"`)}return i.fields}checkWorkedOut(t,n,r){let i=new Map;for(let[o,a]of Object.entries(t)){let d=`${n}.${o}`;if((a.compute!==void 0||a.setWhen)&&!Yo.has(a.type)){a.compute!==void 0&&this.report(`${d}.compute`,`a ${a.type} cannot be worked out; ${Mi}`),a.setWhen&&this.report(`${d}.setWhen`,`a ${a.type} cannot be set by a condition; ${Mi}`);continue}if(a.compute!==void 0){let s=this.checkExpression(a.compute,`${d}.compute`,r);s&&i.set(o,s)}a.setWhen?.forEach((s,l)=>{this.checkModifiers(s,`${d}.setWhen[${l}]`,["when"],r),s.on?.forEach((f,c)=>this.need(f,`${d}.setWhen[${l}].on[${c}]`,t)),this.checkExpression(s.value,`${d}.setWhen[${l}].value`,r)})}for(let o of Er(i).cycles){let a=o.slice(0,-1),d=a.length===1?`"${a[0]}" is worked out from itself`:`${zd(a)} are worked out from each other: ${o.join(" \u2192 ")}`;this.report(`${n}.${o[0]}.compute`,d)}}checkFields(t,n,r,i){let o={fields:t,lines:r,...i?{parent:i}:{}};this.checkWorkedOut(t,n,o);for(let[a,d]of Object.entries(t)){let s=`${n}.${a}`;if(d.type==="monetary"&&d.currencyField!==void 0&&this.checkCurrency(d.currencyField,`${s}.currencyField`,t,r,i),d.defaultFrom!==void 0&&this.checkExpression(d.defaultFrom,`${s}.defaultFrom`,o),(d.type==="many2one"||d.type==="many2many")&&d.createValues)for(let[l,f]of Object.entries(d.createValues))this.checkExpression(f,`${s}.createValues.${l}`,o);if(d.type==="one2many"&&d.lineDefaults)for(let[l,f]of Object.entries(d.lineDefaults))gt(d.fields,l)?this.checkExpression(f,`${s}.lineDefaults.${l}`,o):this.report(`${s}.lineDefaults.${l}`,`"${l}" is not a field of the lines of "${a}"`);if((d.type==="many2one"||d.type==="many2many")&&d.filter&&d.filter.forEach((l,f)=>this.checkFilterItem(l,`${s}.filter[${f}]`,o)),d.type==="selection"&&d.optionsFrom?.dependsOn?.forEach((l,f)=>this.need(l,`${s}.optionsFrom.dependsOn[${f}]`,t)),d.type==="properties"&&d.definitionsFrom?.dependsOn?.forEach((l,f)=>this.need(l,`${s}.definitionsFrom.dependsOn[${f}]`,t)),d.type==="properties"&&d.definitions){let l=new Set;d.definitions.forEach((f,c)=>{f.type==="selection"&&!f.options&&this.report(`${s}.definitions[${c}].options`,"a choice property needs its choices"),l.has(f.name)&&this.report(`${s}.definitions[${c}].name`,`"${f.name}" is named twice`),l.add(f.name)})}if(d.type==="one2many"&&(this.checkFields(d.fields,`${s}.fields`,a,t),"lineKinds"in d&&d.lineKinds&&this.checkLineKinds(a,d.lineKinds,d.fields,`${s}.lineKinds`),d.sequenceField!==void 0)){let l=d.fields[d.sequenceField];l?l.type!=="integer"&&this.report(`${s}.sequenceField`,`"${d.sequenceField}" is a ${l.type}; the field that keeps the order of lines must be an integer`):this.report(`${s}.sequenceField`,`"${d.sequenceField}" is not a field of the lines of "${a}"`)}}}checkCurrency(t,n,r,i,o=this.page.fields){let a;if(!t.startsWith("parent."))a=this.need(t,n,r);else{if(i===void 0)return this.report(n,`"${t}": only a line\u2019s money reads parent, the record it is on`);if(gt(o,t.slice(7)))a=o[t.slice(7)];else return this.report(n,`"${t}": "${t.slice(7)}" is not a field of this page`)}a&&!["many2one","selection","char"].includes(a.type)&&this.report(n,`"${t}" is a ${a.type}; a currency field must be a many2one, selection or char`)}checkLineKinds(t,n,r,i){let o=r[n.field];if(!o)this.report(`${i}.field`,`"${n.field}" is not a field of the lines of "${t}"`);else if(o.type!=="selection"&&o.type!=="char")this.report(`${i}.field`,`"${n.field}" is a ${o.type}; the field that says what a line is must be a selection or char`);else if(o.type==="selection")for(let d of["section","note"]){let s=n[d]??d;o.options.some(l=>l.value===s)||this.report(`${i}.${d}`,`"${n.field}" has no option "${s}"`)}let a=r[n.text];a?a.type!=="char"&&a.type!=="text"&&this.report(`${i}.text`,`"${n.text}" is a ${a.type}; a section's or note's text must be a char or text field`):this.report(`${i}.text`,`"${n.text}" is not a field of the lines of "${t}"`)}walkFooter(t,n){t?.forEach((r,i)=>{this.claim(r.id,`${n}.footer[${i}]`),this.checkModifiers(r,`${n}.footer[${i}]`),this.checkPress(r,`${n}.footer[${i}]`)})}walkRoot(t,n){if(t.type==="tabs")return this.walkNode(t,n);if(this.claim(t.id,n),(t.type==="sheet"||t.type==="sections")&&this.walkFooter(t.footer,n),t.type==="sheet")return this.walkSheet(t,n);if(t.type==="sections")return this.walkChildren(t.children,n);if(t.type==="list")return this.walkList(t,n);t.children.forEach((r,i)=>{let o=`${n}.children[${i}]`;this.places.add(r.id),this.claim(r.id,o),this.checkModifiers(r,o),this.walkChildren(r.children,o)})}walkList(t,n){this.page.data.kind!=="record"&&this.report("data",'a list shows records: its data needs kind "record" and a model'),t.columns.forEach((o,a)=>this.need(o,`${n}.columns[${a}]`)),t.sort?.forEach((o,a)=>this.need(o.field,`${n}.sort[${a}].field`)),t.searchFields?.forEach((o,a)=>this.need(o,`${n}.searchFields[${a}]`)),t.groupBy?.forEach((o,a)=>this.need(o,`${n}.groupBy[${a}]`));let r=(o,a)=>{if("any"in o)return o.any.forEach((d,s)=>r(d,`${a}.any[${s}]`));if("all"in o)return o.all.forEach((d,s)=>r(d,`${a}.all[${s}]`));this.need(o.field,`${a}.field`),o.valueFrom!==void 0&&this.report(`${a}.valueFrom`,"a list's filter compares with values, not with another field")},i=new Set;t.filters?.forEach((o,a)=>{this.claim(o.id,`${n}.filters[${a}]`),i.add(o.id),o.filter.forEach((d,s)=>r(d,`${n}.filters[${a}].filter[${s}]`))}),t.defaultFilters?.forEach((o,a)=>{i.has(o)||this.report(`${n}.defaultFilters[${a}]`,`no filter "${o}" in this list`)}),t.actions?.forEach((o,a)=>{this.claim(o.id,`${n}.actions[${a}]`),this.checkPress(o,`${n}.actions[${a}]`)})}walkChildren(t,n){t.forEach((r,i)=>this.walkNode(r,`${n}.children[${i}]`))}walkNode(t,n){switch(this.claim(t.id,n),this.checkModifiers(t,n,t.type==="field"?["invisible","readonly","required"]:t.type==="section"||t.type==="form"?["invisible","readonly"]:["invisible"]),t.type){case"field":return this.checkFieldNode(t,n);case"section":return t.collapsible&&!t.title&&this.report(n,"a collapsible section needs a title to fold it by"),t.collapsed&&!t.collapsible&&this.report(n,"collapsed needs collapsible: true"),t.style==="inline"&&t.columns!==void 0&&this.report(`${n}.columns`,"parts on one line take no columns: each is as wide as it needs"),t.style==="inline"&&t.collapsible&&this.report(`${n}.collapsible`,"a line of parts does not fold: its title is its label"),t.style==="inline"&&t.children.forEach((r,i)=>{["field","text","button","spacer"].includes(r.type)||this.report(`${n}.children[${i}]`,`a line of parts holds fields, words and buttons; a ${r.type} needs a row of its own`)}),this.walkChildren(t.children,n);case"tabs":return this.walkTabs(t,n);case"form":return this.checkFormNode(t,n);case"button":return this.checkPress(t,n);case"text":return this.checkValuesIn(t.text,`${n}.text`);default:return}}checkFormNode(t,n){if(typeof t.page!="string"||typeof t.name!="string")return this.report(n,"a saved form placed here needs the page\u2019s id and a name for its answers");t.page===this.page.id&&this.report(`${n}.page`,"a page cannot be placed inside itself");let r=this.formNames.get(t.name);gt(this.page.fields,t.name)?this.report(`${n}.name`,`"${t.name}" is a field of this page: the saved form\u2019s answers need a name of their own`):r!==void 0?this.report(`${n}.name`,`the answers of the saved form at ${r} go under "${t.name}" already: give each copy a name of its own`):this.formNames.set(t.name,n)}walkTabs(t,n){t.children.forEach((r,i)=>{let o=`${n}.children[${i}]`;this.places.add(r.id),this.claim(r.id,o),this.checkModifiers(r,o),this.walkChildren(r.children,o)})}walkSheet(t,n){if(t.title&&(this.need(t.title.field,`${n}.title.field`),t.title.subtitleField!==void 0&&this.need(t.title.subtitleField,`${n}.title.subtitleField`),t.title.avatarField!==void 0&&this.need(t.title.avatarField,`${n}.title.avatarField`),t.title.placeholderWhen?.forEach((o,a)=>this.checkModifiers(o,`${n}.title.placeholderWhen[${a}]`,["when"]))),t.statusbar){let{field:o,visibleStates:a,durationsField:d,fold:s,saves:l,clickable:f}=t.statusbar,c=`${n}.statusbar`;if(this.checkModifiers(t.statusbar,c),d!==void 0){let b=this.need(d,`${c}.durationsField`);b&&b.type!=="json"&&this.report(`${c}.durationsField`,`"${d}" is a ${b.type}; time per step comes from a json field`)}l&&!f&&this.report(`${c}.saves`,"a click saves only where a step can be clicked (clickable)");let x=this.need(o,`${n}.statusbar.field`);if(s&&x&&x.type!=="many2one"&&this.report(`${c}.fold`,"steps fold by their record (a stage), so only a link\u2019s steps fold; a choice keeps the steps it shows with visibleStates"),x&&x.type!=="selection"&&x.type!=="many2one"&&this.report(`${n}.statusbar.field`,`"${o}" is a ${x.type}; a statusbar needs a selection or many2one`),x?.type==="selection"&&a){let b=new Set(x.options.map(y=>y.value));a.forEach((y,S)=>{b.has(y)||this.report(`${n}.statusbar.visibleStates[${S}]`,`"${y}" is not an option of "${o}"`)})}}t.buttons?.forEach((o,a)=>{this.claim(o.id,`${n}.buttons[${a}]`),this.checkModifiers(o,`${n}.buttons[${a}]`),this.checkPress(o,`${n}.buttons[${a}]`)}),t.statButtons?.forEach((o,a)=>{this.claim(o.id,`${n}.statButtons[${a}]`),this.checkModifiers(o,`${n}.statButtons[${a}]`),this.checkPress(o,`${n}.statButtons[${a}]`);for(let d of["field","unitField","labelField","secondField"]){let s=o[d];s!==void 0&&this.need(s,`${n}.statButtons[${a}].${d}`)}o.secondLabel!==void 0&&o.secondField===void 0&&this.report(`${n}.statButtons[${a}].secondLabel`,"words for a second value need its field (secondField)")});let r=[...t.ribbon?[[t.ribbon,`${n}.ribbon`]]:[],...(t.ribbons??[]).map((o,a)=>[o,`${n}.ribbons[${a}]`])];for(let[o,a]of r)this.claim(o.id,a),this.checkModifiers(o,a),o.labelField!==void 0&&this.need(o.labelField,`${a}.labelField`);t.badges?.forEach((o,a)=>{this.claim(o.id,`${n}.badges[${a}]`),this.checkModifiers(o,`${n}.badges[${a}]`)});for(let o of["above","before","after","below"])t.title?.[o]?.forEach((a,d)=>this.walkNode(a,`${n}.title.${o}[${d}]`));t.alerts?.forEach((o,a)=>{let d=`${n}.alerts[${a}]`;this.claim(o.id,d),this.checkModifiers(o,d),this.checkValuesIn(o.message,`${d}.message`),o.messageField!==void 0&&this.need(o.messageField,`${d}.messageField`),o.buttons?.forEach((s,l)=>{this.claim(s.id,`${d}.buttons[${l}]`),this.checkModifiers(s,`${d}.buttons[${l}]`),this.checkPress(s,`${d}.buttons[${l}]`)})}),t.toolbar?.menu?.forEach((o,a)=>{let d=`${n}.toolbar.menu[${a}]`;this.claim(o.id,d),this.checkModifiers(o,d),!o.steps&&o.action===void 0&&!o.builtin&&this.report(d,"a menu item needs steps, an action, or a built-in"),o.label===void 0&&!o.builtin&&this.report(`${d}.label`,"a menu item needs words, unless it is a built-in"),o.steps&&this.checkSteps(o.steps,`${d}.steps`)});let i=t.attachmentPreview;if(i){this.checkModifiers(i,`${n}.attachmentPreview`);let o=i.field!==void 0?this.need(i.field,`${n}.attachmentPreview.field`):void 0;o&&o.type!=="binary"&&o.type!=="image"&&this.report(`${n}.attachmentPreview.field`,`"${i.field}" is a ${o.type}; the preview shows a file (binary or image)`)}this.walkChildren(t.children,n),t.sidePanel&&(this.claim(t.sidePanel.id,`${n}.sidePanel`),this.checkModifiers(t.sidePanel,`${n}.sidePanel`))}checkFieldNode(t,n){let r=this.need(t.field,`${n}.field`);t.validate?.forEach((i,o)=>{let a=`${n}.validate[${o}]`;if(this.checkModifiers(i,a,["when","holds"]),i.distinct!==void 0&&r&&(r.type!=="one2many"?this.report(`${a}.distinct`,`distinct is for a table of lines; "${t.field}" is a ${r.type}`):gt(r.fields,i.distinct)||this.report(`${a}.distinct`,`"${i.distinct}" is not a field of the lines of "${t.field}"`)),i.pattern!==void 0)try{new RegExp(i.pattern)}catch{this.report(`${a}.pattern`,`"${i.pattern}" is not a regular expression`)}}),t.tones?.forEach((i,o)=>this.checkModifiers(i,`${n}.tones[${o}]`,["when"])),t.placeholderWhen?.forEach((i,o)=>this.checkModifiers(i,`${n}.placeholderWhen[${o}]`,["when"])),this.checkModifiers(t,n,["bold"]),r&&t.totals&&(r.type!=="one2many"?this.report(`${n}.totals`,`totals only apply to one2many fields; "${t.field}" is a ${r.type}`):t.totals.forEach((i,o)=>{let a=gt(r.fields,i)?r.fields[i]:void 0;a?["integer","float","monetary"].includes(a.type)||this.report(`${n}.totals[${o}]`,`"${i}" is a ${a.type}; only integer, float and monetary columns add up`):this.report(`${n}.totals[${o}]`,`"${i}" is not a field of the lines of "${t.field}"`)}));for(let[i,o]of Object.entries(t.options??{}))i.endsWith("Field")&&typeof o=="string"&&this.need(o,`${n}.options.${i}`);r&&t.order&&(r.type!=="one2many"?this.report(`${n}.order`,`order only applies to one2many fields; "${t.field}" is a ${r.type}`):t.order.forEach((i,o)=>!gt(r.fields,i.field)&&this.report(`${n}.order[${o}].field`,`"${i.field}" is not a field of the lines of "${t.field}"`))),r&&t.lineForm&&(r.type!=="one2many"?this.report(`${n}.lineForm`,`lineForm only applies to one2many fields; "${t.field}" is a ${r.type}`):this.checkLineForm(t,r,n));for(let i of["lineOpens","cards","fit"])r&&t[i]&&r.type!=="one2many"&&this.report(`${n}.${i}`,`${i} only applies to one2many fields; "${t.field}" is a ${r.type}`);if(r&&t.editMode&&r.type!=="one2many"&&this.report(`${n}.editMode`,`editMode only applies to one2many fields; "${t.field}" is a ${r.type}`),r&&t.lineDelete!==void 0&&r.type!=="one2many"&&this.report(`${n}.lineDelete`,`lineDelete only applies to one2many fields; "${t.field}" is a ${r.type}`),r&&(t.cells||t.rowTones||t.rowBold!==void 0||t.rowButtons||t.lineDelete!==void 0))if(r.type!=="one2many")(t.cells||t.rowTones||t.rowBold!==void 0||t.rowButtons)&&this.report(n,`cells, rowTones, rowBold and rowButtons only apply to one2many fields; "${t.field}" is a ${r.type}`);else{let i={fields:r.fields,lines:t.field};for(let[o,a]of Object.entries(t.cells??{})){if(!gt(r.fields,o)){this.report(`${n}.cells.${o}`,`"${o}" is not a field of the lines of "${t.field}"`);continue}this.checkModifiers(a,`${n}.cells.${o}`,["invisible","readonly","required","bold"],i),this.checkModifiers(a,`${n}.cells.${o}`,["hidden"]),a.tones?.forEach((d,s)=>this.checkModifiers(d,`${n}.cells.${o}.tones[${s}]`,["when"],i));for(let[d,s]of Object.entries(a.options??{}))d.endsWith("Field")&&typeof s=="string"&&this.need(s,`${n}.cells.${o}.options.${d}`,r.fields)}t.rowTones?.forEach((o,a)=>this.checkModifiers(o,`${n}.rowTones[${a}]`,["when"],i)),this.checkModifiers(t,n,["rowBold","lineDelete"],i),t.rowButtons?.forEach((o,a)=>{this.claim(o.id,`${n}.rowButtons[${a}]`),this.checkModifiers(o,`${n}.rowButtons[${a}]`,["invisible"],i),this.checkPress(o,`${n}.rowButtons[${a}]`)})}for(let i of["selectedButtons","controlButtons"])t[i]&&(r&&r.type!=="one2many"&&this.report(`${n}.${i}`,`${i} only apply to one2many fields; "${t.field}" is a ${r.type}`),t[i].forEach((o,a)=>{this.claim(o.id,`${n}.${i}[${a}]`),this.checkModifiers(o,`${n}.${i}[${a}]`),this.checkPress(o,`${n}.${i}[${a}]`)}));if(r&&t.optionalColumns)if(r.type!=="one2many")this.report(`${n}.optionalColumns`,`optional columns only apply to one2many fields; "${t.field}" is a ${r.type}`);else{let i=t.columns??Object.keys(r.fields).filter(o=>o!==("lineKinds"in r?r.lineKinds?.field:void 0)&&o!==r.sequenceField);for(let o of Object.keys(t.optionalColumns))i.includes(o)||this.report(`${n}.optionalColumns.${o}`,`"${o}" is not a column of "${t.field}"`)}!r||!t.columns||(r.type==="one2many"?t.columns.forEach((i,o)=>{gt(r.fields,i)?r.fields[i].type==="one2many"&&this.report(`${n}.columns[${o}]`,`"${i}" holds lines of its own: they are edited in the line's form (lineForm), not drawn in its row`):this.report(`${n}.columns[${o}]`,`"${i}" is not a field of the lines of "${t.field}"`)}):r.type==="many2many"?t.columns.forEach((i,o)=>{(!r.fields||!gt(r.fields,i))&&this.report(`${n}.columns[${o}]`,`"${i}" is not a field of the records of "${t.field}"`)}):this.report(`${n}.columns`,`columns only apply to one2many and many2many fields; "${t.field}" is a ${r.type}`))}};var Nn=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Bd=["sheet","sections","tabs","wizard"];function Zn(e,t={}){if(!Nn(e))return{ok:!1,issues:[{path:"(page)",message:"a page is a JSON object"}]};let n=[],r=(l,f)=>n.push({path:l,message:f});e.fieldia!=="0.1"&&r("fieldia",`this build reads format ${"0.1"}`),(typeof e.id!="string"||!e.id)&&r("id","a page needs an id");let i=e.data;(!Nn(i)||!(i.kind==="responses"||i.kind==="record"&&typeof i.model=="string"&&i.model))&&r("data",'data is { "kind": "record", "model": \u2026 } or { "kind": "responses" }');let o=e.fields;if(!Nn(o))r("fields","fields is an object of field definitions, by name");else for(let[l,f]of Object.entries(o))(!Nn(f)||!vr.includes(f.type)||typeof f.label!="string")&&r(`fields.${l}`,"a field needs a type Fieldia knows and a label");let a=e.layout,d=Nn(a)&&a.type==="list";if((!Nn(a)||(d?!Array.isArray(a.columns):!Bd.includes(a.type)||!Array.isArray(a.children)))&&r("layout","the layout is a sheet, sections, tabs or wizard, with children, or a list with columns"),n.length)return{ok:!1,issues:n};let s=e;try{let l=new Ar(s,t.parent?{name:s.id,parent:t.parent}:void 0).run();return l.length?{ok:!1,issues:l}:{ok:!0,page:s}}catch(l){return{ok:!1,issues:[{path:"(page)",message:`a part of this page cannot be read: ${l.message}`}]}}}var qd=new Set(["title","description","label","help","placeholder","message","text","confirm","alt","caption","tooltip","unit"]),_d=new Set(["lineKinds","filter","default","data","translations","optionalColumns","values","into","params"]);function Tr(e,t,n,r,i=!1){if(typeof e=="string")return t!==null&&(t.endsWith("Label")||!i&&qd.has(t))?n(e):e;if(Array.isArray(e))return e.map(a=>Tr(a,null,n,r,i));if(e===null||typeof e!="object")return e;r?.(e);let o={};for(let[a,d]of Object.entries(e))o[a]=_d.has(a)?d:Tr(d,a,n,r,i||a==="options"&&!Array.isArray(d));return o}function Cn(e,t){return Tr(e,null,t)}function Xo(e){let t=new Set,n=e.fields,r=(i,o=null)=>Tr(i,o,a=>(a.trim()&&t.add(a),a),a=>{a.type==="wizard"&&r(a.children);let d=a.type==="field"?n[a.field]:void 0;if(d){for(let[s,l]of[[a,"label"],[d,"label"],[a,"placeholder"],[a,"help"],[d,"help"]])r(s[l],l);r(d)}});return r({title:e.title,description:e.description,layout:e.layout}),r(e),[...t]}function Qn(e,t){let n=e.translations?.[t]??e.translations?.[t.split("-")[0]];return n?Cn(e,r=>n[r]??r):e}function $r(e){let[t,...n]=e.toLowerCase().split("-"),r=n.find(i=>i.length===4&&!/\d/.test(i));return r?/^(arab|hebr|syrc|thaa|nkoo|adlm|rohg)$/.test(r):/^(ar|he|iw|fa|ur|ps|sd|yi|dv|ckb|ug|ks|syr|prs|pnb|azb)$/.test(t)}function bn(e,t){if(!e?.length)return!0;let n=e.filter(r=>!r.startsWith("!"));return e.some(r=>r.startsWith("!")&&t.includes(r.slice(1)))?!1:!n.length||n.some(r=>t.includes(r))}function Zo(e,t){if(e===void 0)return!1;if(typeof e=="boolean")return e;if(e==="1"||e==="True"||e==="true")return!0;if(e==="0"||e==="False"||e==="false"||e==="")return!1;try{let n=Jt(e);if(n.length===0)return!1;let i=new Pt(n).parse(),o=Tt(i,t);return At(o)}catch{return!1}}function Qo(e){if(e===void 0||typeof e=="boolean"||e==="")return!0;try{let t=Jt(e);return t.length===0||new Pt(t).parse(),!0}catch{return!1}}var ea={};var Ud={required:"{label} is required",maxLength:"Maximum {max} characters allowed",pattern:"{label} is not in the expected format",text:"{label} must be text",number:"{label} must be a number",integer:"{label} must be a whole number",min:"{label} must be at least {min}",max:"{label} must be at most {max}",decimals:"Maximum {digits} decimal places allowed",boolean:"{label} must be yes or no",dateFormat:"Invalid date format (expected YYYY-MM-DD)",dateInvalid:"Invalid date (check month/day values)",datetimeFormat:"Invalid date and time format (expected YYYY-MM-DDTHH:MM:SS)",datetimeInvalid:"Invalid date and time (check the values)",choice:"Must be one of: {options}",choiceOrOther:"Must be one of: {options}, or an answer of its own",matrix:"{label} takes an answer for each row",matrixRow:"Rows are: {rows}",matrixRows:"Answer every row of {label}",choices:"{label} must be a list of choices",record:"{label} must be a record",records:"{label} must be a list of records",reference:"{label} must point to {aModels}",file:"{label} must be a file",fileSize:"{label} is larger than {size}",fileType:"{label} must be {aTypes} file",minFiles:"Add at least {min} files to {label}",maxFiles:"Too many files for {label}: at most {max}",minLength:"{label} must be at least {min} characters",endsWith:"{label} must end with {ending}",atLeast:"Choose at least {min} for {label}",atMost:"Choose at most {max} for {label}",datePast:"{label} must be in the past",dateFuture:"{label} must be in the future",holds:"{label} does not agree with the other answers",distinct:"{column}: {value} is on more than one line of {label}",or:"or",tick:"Tick this box to go on",email:"Enter an email address, like name@example.com",url:"Enter a web address, like example.com",phone:"Enter a phone number, like +20 100 123 4567",time:"Enter a time, like 14:30",before:"{label} can\u2019t be before {min}",after:"{label} can\u2019t be after {max}",weekday:"{label} can\u2019t be on a {days}",minLines:"Add at least {min} to {label}",maxLines:"Too many in {label}: at most {max}",addressParts:"Street address|Address line 2|City|State or region|Postcode|Country",archiveConfirm:"Are you sure that you want to archive this record?",deleteConfirm:"Are you sure you want to delete this record?",locale:"en"},wt={en:Ud,...ea};function je(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n)}function fn(e,t=ln(new Date)){let n=/^today([+-]\d+)?$/.exec(e);if(!n)return e;let[r,i,o]=t.split("-").map(Number);return new Date(Date.UTC(r,i-1,o+Number(n[1]??0))).toISOString().slice(0,10)}var ta=(e,t,n)=>new Intl.DateTimeFormat(t.locale,{...e,timeZone:"UTC",numberingSystem:"latn"}).format(n);function Ni(e,t,n,r){if(e.type!=="date"&&e.type!=="datetime")return;let i=e.type==="date"?t:ln(new Date(t)),o=(f,c)=>je(r[f],{label:e.label,min:c,max:c,days:c}),a=f=>ta({day:"numeric",month:"long",year:"numeric"},r,Date.parse(f)),d=e.min&&fn(e.min,n),s=e.max&&fn(e.max,n);if(d&&i<d)return o("before",a(d));if(s&&i>s)return o("after",a(s));let l=e.days;if(l&&!l.includes(new Date(Date.parse(i)).getUTCDay()||7)){let f=[1,2,3,4,5,6,7].filter(c=>!l.includes(c)).map(c=>ta({weekday:"long"},r,Date.UTC(2024,0,c)));return o("weekday",f.length>1?`${f.slice(0,-1).join(", ")} ${r.or} ${f[f.length-1]}`:f[0])}}function yn(e){switch(e.type){case"boolean":return!1;case"many2many":case"one2many":return[];case"selection":case"binary":case"image":return e.multiple?[]:null;default:return null}}function un(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=i.default;n[r]=o===void 0?yn(i):i.type==="date"&&typeof o=="string"&&o.startsWith("today")?fn(o,t):ye(o)}return n}function Ht(e,t){return t==null?!0:typeof t=="string"?t.trim()==="":Array.isArray(t)?t.length===0:e.type==="matrix"&&typeof t=="object"?Object.values(t).every(n=>n==null||Array.isArray(n)&&!n.length):!1}function pn(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=t[r];n[r]=o?Kd(o,i):i}return n}function Kd(e,t){if(t==null)return null;switch(e.type){case"many2one":return t.id;case"many2many":return t.map(n=>n.id);case"one2many":return t.map(n=>n.key);case"reference":{let n=t;return`${n.model},${n.id}`}case"binary":case"image":return Array.isArray(t)?t.map(n=>n.name):t.name;default:return t}}function ft(e,t){let n=e.lineKinds;if(!n)return null;let r=t[n.field];return r===(n.section??"section")?"section":r===(n.note??"note")?"note":null}function Mr(e,t){return JSON.stringify(e??null)===JSON.stringify(t??null)}function ye(e){return e===void 0?e:JSON.parse(JSON.stringify(e))}function On(e,t,n,r=wt.en,i){let o=e.label||"This field",a=(d,s={})=>je(r[d],{label:o,...s});if(Ht(e,t))return n?a("required"):void 0;if(e.type==="matrix")return Gd(e,t,n,a);switch(e.type){case"char":case"text":case"html":return typeof t!="string"?a("text"):(e.type==="char"||e.type==="text")&&e.size!==void 0&&t.length>e.size?a("maxLength",{max:e.size}):e.type==="char"&&e.pattern!==void 0&&!new RegExp(e.pattern).test(t)?a("pattern"):void 0;case"integer":case"float":case"monetary":return typeof t!="number"||!Number.isFinite(t)?a("number"):e.type==="integer"&&!Number.isInteger(t)?a("integer"):e.min!==void 0&&t<e.min?a("min",{min:e.min}):e.max!==void 0&&t>e.max?a("max",{max:e.max}):e.type!=="integer"&&e.digits&&Jd(t)>e.digits[1]?a("decimals",{digits:e.digits[1]}):void 0;case"boolean":return typeof t=="boolean"?void 0:a("boolean");case"date":return Yd(t,a)??Ni(e,t,i,r);case"datetime":return Zd(t,a)??Ni(e,t,i,r);case"selection":{if(e.optionsFrom)return;let d=new Set(e.options.map(f=>f.value)),s=a(e.other?"choiceOrOther":"choice",{options:e.options.map(f=>f.label).join(", ")}),l=f=>(e.other===!0||e.ownAnswers===!0)&&typeof f=="string"&&f.trim()!==""&&!d.has(f);return e.multiple?Array.isArray(t)?(t.filter(c=>!d.has(c)).length<=1||e.ownAnswers)&&t.every(c=>d.has(c)||l(c))?void 0:s:a("choices"):d.has(t)||l(t)?void 0:s}case"many2one":return Ci(t)?void 0:a("record");case"many2many":return Array.isArray(t)&&t.every(Ci)?void 0:a("records");case"reference":{let d=t;if(!Ci(t)||typeof d.model!="string")return a("record");if(!e.models.some(s=>s.value===d.model)){let s=ra(e.models.map(l=>l.label),r.or);return a("reference",{models:s,aModels:ia(s)})}return}case"binary":case"image":return Qd(e,t,a,r);default:return}}function Gd(e,t,n,r){if(t===null||typeof t!="object"||Array.isArray(t))return r("matrix");let i=new Set(e.rows.map(s=>String(s.value))),o=new Set(e.columns.map(s=>s.value)),a=r("choice",{options:e.columns.map(s=>s.label).join(", ")});for(let[s,l]of Object.entries(t)){if(!i.has(s))return r("matrixRow",{rows:e.rows.map(c=>c.label).join(", ")});let f=e.multiple&&Array.isArray(l)?l:[l];if(!e.multiple&&Array.isArray(l)||f.some(c=>c!=null&&!o.has(c)))return a}let d=s=>{let l=t[s];return l!=null&&!(Array.isArray(l)&&!l.length)};if(n&&e.rows.some(s=>!d(String(s.value))))return r("matrixRows")}function Jd(e){let t=String(e);if(t.includes("e-"))return Number(t.split("e-")[1]);let n=t.indexOf(".");return n===-1?0:t.length-n-1}function Ci(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&(typeof e.id=="number"||typeof e.id=="string")&&typeof e.label=="string"}function Yd(e,t){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return t("dateFormat");let[n,r,i]=e.split("-").map(Number);return na(n,r,i)?void 0:t("dateInvalid")}var Xd=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2})?$/;function Zd(e,t){let n=typeof e=="string"?Xd.exec(e):null;if(!n)return t("datetimeFormat");let[r,i,o,a,d,s]=n.slice(1).map(l=>Number(l??0));return na(r,i,o)&&a<24&&d<60&&s<60?void 0:t("datetimeInvalid")}function na(e,t,n){if(t<1||t>12||n<1)return!1;let r=[31,e%4===0&&(e%100!==0||e%400===0)?29:28,31,30,31,30,31,31,30,31,30,31];return n<=r[t-1]}function Qd(e,t,n,r){let i=e.multiple?Array.isArray(t)?t:[t]:[t];if(e.multiple&&e.minFiles!==void 0&&i.length<e.minFiles)return n("minFiles",{min:e.minFiles});if(e.multiple&&e.maxFiles!==void 0&&i.length>e.maxFiles)return n("maxFiles",{max:e.maxFiles});for(let o of i){if(!el(o))return n("file");let a=er(e,o,r,e.multiple?o.name:e.label||"This field");if(a)return a}}function er(e,t,n=wt.en,r=t.name){if(e.maxSize!==void 0&&t.size>e.maxSize)return je(n.fileSize,{label:r,size:Yt(e.maxSize)});let i=e.type==="image"?["image/*"]:e.accept;if(i&&!tl(i,t.type)){let o=tr(i,n.or);return je(n.fileType,{label:r,types:o,aTypes:ia(o)})}}function el(e){let t=e;return e!==null&&typeof e=="object"&&typeof t.name=="string"&&typeof t.size=="number"}function tl(e,t){return e.some(n=>n.endsWith("/*")?t.startsWith(n.slice(0,-1)):n===t)}var nl="pdf PDF,msword DOC,wordprocessingml DOCX,opendocument.text ODT,plain TXT,ms-excel XLS,spreadsheetml XLSX,opendocument.spreadsheet ODS,csv CSV,ms-powerpoint PPT,presentationml PPTX,opendocument.presentation ODP".split(",").map(e=>e.split(" "));function rl(e){if(e.endsWith("/*"))return e.slice(0,-2);let t=e.split("/")[1]??e;return nl.find(([n])=>t.includes(n))?.[1]??t.toUpperCase()}function tr(e,t){return ra([...new Set(e.map(rl))],t)}function ra(e,t){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`}function ia(e){return/^[aeiou]/i.test(e)?`an ${e}`:`a ${e}`}function Yt(e){let t=["bytes","KB","MB","GB"],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${Number(n.toFixed(1))} ${t[r]}`}var oa=e=>Math.round(e*1e9)/1e9,aa=(e,t)=>e.find(n=>n.value===t)?.score??0,sa=e=>e.reduce((t,n)=>Math.max(t,n.score??0),0),da=e=>e.reduce((t,n)=>t+Math.max(0,n.score??0),0),la=(e,t,n)=>n?Array.isArray(t)?t.reduce((r,i)=>r+aa(e,i),0):0:aa(e,t);function ca(e,t){let n=0,r=0,i=!1;for(let[o,a]of Object.entries(e.fields))if(a.type==="selection"&&a.options.some(d=>d.score!==void 0)){i=!0;let d=a.multiple===!0;n+=la(a.options,t[o],d),r+=d?da(a.options):sa(a.options)}else if(a.type==="matrix"&&a.columns.some(d=>d.score!==void 0)){i=!0;let d=a.multiple===!0,s=t[o],l=s&&typeof s=="object"&&!Array.isArray(s)?s:{};for(let f of a.rows)n+=la(a.columns,l[String(f.value)],d),r+=d?da(a.columns):sa(a.columns)}return i?{score:oa(n),max:oa(r)}:null}function fa(e){return Object.assign(new Error(e.message),{problem:e})}function Nr(e){let t=e?.problem;if(t&&typeof t.kind=="string")return t;let n=e instanceof Error?e.message:String(e);return e instanceof TypeError&&/fetch|network|load failed/i.test(n)?{kind:"network",message:n}:{kind:"other",message:n}}function Pn(e,t){return t.every(n=>Oi(e,n))}function Oi(e,t){return"any"in t?t.any.some(n=>Oi(e,n)):"all"in t?t.all.every(n=>Oi(e,n)):ol(e,t)}function Xt(e){return e!=null&&e!==""&&e!==!1&&!(Array.isArray(e)&&!e.length)}function il(e){return Array.isArray(e)?e.map(t=>t!==null&&typeof t=="object"&&"id"in t?t.id:t):[]}function ol(e,t){let n=e[t.field],r=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"id"in n?n.id:n,i=t.value,o=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"label"in n?String(n.label):String(r??"");switch(t.op){case"=":return r===i;case"=?":return!Xt(i)||r===i;case"contains":case"not contains":{let a=il(n),s=(Array.isArray(i)?i:[i]).some(l=>a.includes(l));return t.op==="contains"?s:!s}case"!=":return r!==i;case"<":return Xt(r)&&r<i;case">":return Xt(r)&&r>i;case"<=":return Xt(r)&&r<=i;case">=":return Xt(r)&&r>=i;case"in":return Array.isArray(i)&&i.includes(r);case"not in":return Array.isArray(i)&&!i.includes(r);case"like":return o.includes(String(i));case"ilike":return o.toLowerCase().includes(String(i).toLowerCase());case"startswith":return o.toLowerCase().startsWith(String(i).toLowerCase());case"endswith":return o.toLowerCase().endsWith(String(i).toLowerCase());case"set":return Xt(n);case"notset":return!Xt(n);case"between":{if(!Xt(r)||!Array.isArray(i))return!1;let[a,d]=i;return r>=a&&r<=d}}}var Vn=null;function Cr(e,t){let n=r=>{if("any"in r){let o=r.any.map(n);return o.includes(Vn)?Vn:{any:o}}if("all"in r){let o=r.all.map(n).filter(a=>a!==Vn);return o.length?{all:o}:Vn}let i=r.valueFrom!==void 0?al(t,r.valueFrom):r.value??null;return r.op==="=?"?Xt(i)?{field:r.field,op:"=",value:i}:Vn:{field:r.field,op:r.op,value:i}};return e.map(n).filter(r=>r!==Vn)}function al(e,t){let n=e;for(let r of t.split("."))n=n===null||typeof n!="object"?void 0:n[r];return n??null}var ua=new Set(["char","text","html"]),pa=new Set(["integer","float","monetary"]),sl=new Set(["many2one","many2many"]);function Or(e,t,n,r={searchFor:"Search {field} for: {text}"}){let i=e.trim();if(!i)return[];let o=[];for(let d of n.searchFields??n.columns){let s=t.fields[d];if(!s)continue;let l=(f,c,x,b)=>o.push({field:d,fieldLabel:s.label,op:f,value:c,valueLabel:x,label:b??je(r.searchFor,{field:s.label,text:i})});if(ua.has(s.type)||sl.has(s.type))l("ilike",i,i);else if(s.type==="selection"){let f=i.toLowerCase();for(let c of s.options)c.label.toLowerCase().includes(f)&&l("=",c.value,c.label,`${s.label}: ${c.label}`)}else if(pa.has(s.type)){let f=Number(i.replace(/[\s,]/g,""));i&&Number.isFinite(f)&&l("=",f,i)}}let a=d=>{let s=t.fields[d.field]?.type??"";return ua.has(s)?0:s==="selection"?1:pa.has(s)?2:3};return o.map((d,s)=>({s:d,i:s})).sort((d,s)=>a(d.s)-a(s.s)||d.i-s.i).map(({s:d})=>d)}function Vr(e,t){let n=[];for(let r of e)if(r.kind==="field"){let i=r.values.map(o=>({field:r.field,op:o.op,value:o.value}));n.push(i.length===1?i[0]:{any:i})}else if(r.kind==="filters"){let i=r.ids.map(o=>t.filters?.find(a=>a.id===o)?.filter??[]).filter(o=>o.length);i.length===1?n.push(...i[0]):i.length>1&&n.push({any:i.map(o=>o.length===1?o[0]:{all:o})})}else r.kind==="custom"&&n.push(...r.filter);return n}function Pr(e){return e.find(t=>t.kind==="groupBy")?.fields??[]}var nr={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function Ir(e,t=nr){return new Promise(n=>{t.setTimeout(n,e)})}function ma(e={}){let t=ye(e.records??{}),n=[],r=[],i=new Map,o=1e3,a=()=>e.delayMs?Ir(e.delayMs,e.scheduler):Promise.resolve(),d=m=>t[m]??(t[m]={}),s=(m,k)=>{let h=d(m)[String(k)]?.[e.labelField?.[m]??"name"];return typeof h=="string"?h:String(k)},l=(m,k)=>{let h=e.shows?.[m],E=h?d(m)[String(k.id)]:void 0;if(!h||!E)return k;let L={...k};h.avatar&&typeof E[h.avatar]=="string"&&(L.avatar=E[h.avatar]),h.color&&typeof E[h.color]=="number"&&(L.color=E[h.color]),h.folded&&(L.folded=E[h.folded]===!0);let v=(h.details??[]).map(R=>E[R]).map(R=>R&&typeof R=="object"&&"label"in R?R.label:R).filter(R=>typeof R=="string"&&R.trim());return v.length&&(L.details=v.join(`
|
|
3
|
+
`)),L},f=m=>Math.max(0,...Object.keys(d(m)).map(Number).filter(Number.isFinite))+1,c=m=>Number.isFinite(Number(m))?Number(m):m,x=(m,k)=>({id:c(m),...k});function b(m,k){let h=[...m];for(let E of k)E.op==="create"?h.push({key:E.key,id:++o,values:ye(E.values)}):E.op==="update"?h=h.map(L=>L.id===E.id?{...L,values:{...L.values,...ye(E.values)}}:L):h=h.filter(L=>L.id!==E.id);return h}function y(m,k,h){let E=[...m],L=v=>({id:v,label:s(h,v)});for(let v of k)v.op==="link"&&!E.some(R=>R.id===v.id)?E.push(L(v.id)):v.op==="unlink"?E=E.filter(R=>R.id!==v.id):v.op==="set"?E=v.ids.map(L):v.op==="clear"&&(E=[]);return E}function S(m,k){let h=m[k];return h&&"relation"in h?h.relation:k}return{records:t,responses:n,calls:r,async load(m){r.push({method:"load",request:m}),await a();let k=d(m.model)[String(m.id)];if(!k)throw new Error(`No ${m.model} record with id ${m.id}`);let h=ye(k);if(e.shows)for(let[E,L]of Object.entries(m.fields)){let v=h[E];L.type==="many2one"&&v&&typeof v=="object"&&"id"in v?h[E]=l(L.relation,v):L.type==="many2many"&&Array.isArray(v)&&(h[E]=v.map(R=>l(L.relation,R)))}return h},async save(m){r.push({method:"save",request:m}),await a();let k=m.id??f(m.model),h={...d(m.model)[String(k)]??{},...ye(m.changes.values)};for(let[E,L]of Object.entries(m.changes.lines))h[E]=b(h[E]??[],L);for(let[E,L]of Object.entries(m.changes.links))h[E]=y(h[E]??[],L,S(m.fields,E));return d(m.model)[String(k)]=h,{id:k,values:ye(h)}},async onchange(m){r.push({method:"onchange",request:m}),await a();let k=e.onchange?.[m.model]?.[m.changed],h=e.warnings?.[m.model]?.[m.changed],E=k?{values:k(ye(m.values))}:{},L=h?.(ye(m.values));return L?{...E,warning:L}:E},async search(m){r.push({method:"search",request:m}),await a();let k=m.query.trim().toLowerCase();return Object.entries(d(m.model)).filter(([h,E])=>Pn(x(h,E),m.filter??[])).map(([h])=>({id:c(h),label:s(m.model,c(h))})).filter(h=>h.label.toLowerCase().includes(k)).slice(0,m.limit??8).map(h=>l(m.model,h))},async list(m){r.push({method:"list",request:m}),await a();let k=Object.entries(d(m.model)).filter(([h,E])=>Pn(x(h,E),m.filter)).map(([h,E])=>({id:c(h),values:E}));return k.sort((h,E)=>{for(let L of m.sort){let v=dl(h.values[L.field],E.values[L.field]);if(v.empty)return v.result;if(v.result)return L.desc?-v.result:v.result}return 0}),{total:k.length,records:k.slice(m.offset,m.offset+m.limit).map(({id:h,values:E})=>({id:h,values:Object.fromEntries(m.fields.map(L=>[L,ye(E[L]??null)]))}))}},async groups(m){r.push({method:"groups",request:m}),await a();let k=new Map;for(let[h,E]of Object.entries(d(m.model))){if(!Pn(x(h,E),m.filter))continue;let L=E[m.field]??null,v=L!==null&&typeof L=="object"&&!Array.isArray(L)&&"id"in L?L:null,R=v?v.id:L,w=JSON.stringify(R),p=k.get(w)??{value:R,label:v?v.label:L===null||L===""?"":String(L),count:0};p.count++,k.set(w,p)}return[...k.values()].sort((h,E)=>h.value===null==(E.value===null)?h.label.localeCompare(E.label):h.value===null?1:-1)},async create(m){r.push({method:"create",request:m}),await a();let k=d(m.model),h=Object.keys(k).reduce((E,L)=>Math.max(E,Number(L)||0),0)+1;return k[String(h)]={...ye(m.values??{}),name:m.name},{id:h,label:m.name}},async submit(m){return r.push({method:"submit",request:m}),await a(),n.push(ye(m)),{id:n.length}},async archive(m){r.push({method:"archive",request:m}),await a();let k=d(m.model)[String(m.id)];if(!k)throw new Error(`No ${m.model} record with id ${m.id}`);k.active=!m.archive},async copy(m){r.push({method:"copy",request:m}),await a();let k=d(m.model)[String(m.id)];if(!k)throw new Error(`No ${m.model} record with id ${m.id}`);let h=f(m.model),E=ye(k),L=e.labelField?.[m.model]??"name";typeof E[L]=="string"&&(E[L]=`${E[L]}${e.copySuffix??" (copy)"}`);for(let[v,R]of Object.entries(E))Array.isArray(R)&&R.every(w=>w&&typeof w=="object"&&"key"in w&&"values"in w)&&(E[v]=R.map(w=>({...w,id:++o})));return d(m.model)[String(h)]=E,{id:h,values:ye(E)}},async delete(m){if(r.push({method:"delete",request:m}),await a(),!d(m.model)[String(m.id)])throw new Error(`No ${m.model} record with id ${m.id}`);delete d(m.model)[String(m.id)]},async attachments(m){return r.push({method:"attachments",request:m}),await a(),ye(e.attachments?.[`${m.model}:${m.id}`]??[])},async options(m){r.push({method:"options",request:m}),await a();let k=e.lists?.[m.list];if(!k)throw new Error(`No list "${m.list}"`);return ye(typeof k=="function"?await k(m.values):k)},async definitions(m){r.push({method:"definitions",request:m}),await a();let k=e.definitions?.[m.list];if(!k)throw new Error(`No definitions "${m.list}"`);let h=k(m.values),E=i.get(`${m.list}:${JSON.stringify(h)}`)??[];return ye([...h,...E.filter(L=>!h.some(v=>v.name===L.name))])},async saveDefinitions(m){r.push({method:"saveDefinitions",request:m}),await a();let k=e.definitions?.[m.list]?.(m.values)??[];i.set(`${m.list}:${JSON.stringify(k)}`,ye(m.definitions.filter(h=>!k.some(E=>E.name===h.name))))}}}function dl(e,t){let n=a=>a==null||a==="";if(n(e)||n(t))return{result:n(e)===n(t)?0:n(e)?1:-1,empty:n(e)!==n(t)};let r=a=>typeof a=="object"&&a!==null&&"label"in a?a.label:a,[i,o]=[r(e),r(t)];return typeof i=="number"&&typeof o=="number"?{result:i-o,empty:!1}:{result:String(i).localeCompare(String(o)),empty:!1}}var Dr=["street","line2","city","region","postcode","country"];function ga(e,t,n,r){let i=t.options??{},o=t.label??e.label;if(e.type==="one2many"&&Array.isArray(n)&&n.length){if(typeof i.min=="number"&&n.length<i.min)return je(r.minLines,{label:o,min:i.min});if(typeof i.max=="number"&&n.length>i.max)return je(r.maxLines,{label:o,max:i.max})}let a=i.requiredParts;if(t.widget!=="address"||!Array.isArray(a)||!n||typeof n!="object"||Array.isArray(n))return;let d=Array.isArray(i.parts)?i.parts:Dr,s=n,l=Dr.findIndex(f=>a.includes(f)&&d.includes(f)&&!String(s[f]??"").trim());return l<0?void 0:je(r.required,{label:r.addressParts.split("|")[l]})}var ll={email:/^[^@\s]+@[^@\s]+\.[^@\s]+$/,url:/^(https?:\/\/)?([\p{L}\p{N}-]+\.)+\p{L}{2,}(:\d+)?([/?#]\S*)?$/iu,phone:/^\+?[\p{Nd}\s.()-]+$/u,time:/^([01]\d|2[0-3]):[0-5]\d$/};function Vi(e,t,n,r){let i=t.widget??"";if(e.type!=="char")return ga(e,t,n,r);if(typeof n!="string"||!n.trim())return;let o=n.trim(),a=t.options??{},d=t.label??e.label,s=ll[i],l=o.match(/\p{Nd}/gu)?.length??0;if(s&&(!s.test(o)||i==="phone"&&(l<7||l>15)))return r[i];if(i==="time"){if(typeof a.min=="string"&&o<a.min)return je(r.before,{label:d,min:a.min});if(typeof a.max=="string"&&o>a.max)return je(r.after,{label:d,max:a.max})}if(i==="tags"&&typeof a.max=="number"&&o.split(typeof a.separator=="string"&&a.separator?a.separator:",").filter(c=>c.trim()).length>a.max)return je(r.atMost,{label:d,max:a.max})}function ha(e,t,n,r=!0,i={},o){let a={id:t??null,user:{id:n?.id??null,name:n?.name??null,roles:[...n?.roles??[]]},editing:r,context:i,...o?{parent:o}:{}};for(let d of Object.keys(a))d in e&&delete a[d];return a}function Dt(e,t,n){return{...ha(t,n.recordId,n.user,n.editing,n.context,n.parent),...pn(e,t)}}function mn(e,t,n,r=null){let i={parent:n,user:n.user??ha({},null,void 0).user,id:r,context:n.context??{}};for(let o of Object.keys(i))o in t&&delete i[o];return{...i,...pn(e,t)}}function vn(e,t,n){let r=new Map;return{today:n,lines(i){let o=t[i];if(o?.type!=="one2many")return;let a=r.get(i);return a||(a=(e[i]??[]).filter(s=>ft(o,s.values)===null).map(s=>pn(s.values,o.fields)),r.set(i,a)),a}}}function ba(e){let t=new Map;for(let[r,i]of Object.entries(e))i.compute!==void 0&&t.set(r,It(i.compute));let{order:n}=Er(new Map([...t].map(([r,i])=>[r,i.fields])));return n.map(r=>[r,t.get(r),e[r]])}function xn(e,t){if(e.type==="boolean")return At(t);if(t==null)return null;switch(e.type){case"integer":return mt(t)?Yn(t,0):null;case"float":case"monetary":return mt(t)?e.digits?Yn(t,e.digits[1]):t:null;case"char":case"text":case"html":return typeof t=="string"?t:mt(t)?String(t):null;case"date":case"datetime":return typeof t=="string"?t:null;default:return t}}function ya(e,t,n=()=>({recordId:null})){let r=ba(e.fields),i=new Map;for(let[s,l]of Object.entries(e.fields)){if(l.type!=="one2many")continue;let f=ba(l.fields);f.length&&i.set(s,{def:l,steps:f})}let o={today:t};function a(s,l,f,c,x){let b=s,y=x(s);for(let[S,m,k]of l){let h=xn(k,m.evaluate(y,c));Mr(h,b[S])||(b={...b,[S]:h},Object.assign(y,pn({[S]:h},f)))}return b}function d(s,l,f){let c=i.get(s);return!c||ft(c.def,l)!==null?l:a(l,c.steps,c.def.fields,o,x=>mn(x,c.def.fields,f))}return{line:(s,l,f)=>d(s,l,Dt(f,e.fields,n())),apply(s){let l=s,f=i.size?Dt(s,e.fields,n()):{};for(let c of i.keys()){let x=l[c];if(!Array.isArray(x))continue;let b=!1,y=x.map(S=>{let m=d(c,S.values,f);return m===S.values?S:(b=!0,{...S,values:m})});b&&(l={...l,[c]:y})}return r.length?a(l,r,e.fields,vn(l,e.fields,t),c=>Dt(c,e.fields,n())):l}}}function va(e){return Object.entries(e).flatMap(([t,n])=>(n.setWhen??[]).map((r,i)=>({key:`${t}#${i}`,name:t,def:n,when:Ye(r.when??!0),value:It(r.value),...r.on?{on:r.on}:{}})))}var cl={has:()=>!0};function xa(e,t,n=()=>({recordId:null})){let r=va(e.fields),i=new Map;for(let[s,l]of Object.entries(e.fields)){if(l.type!=="one2many")continue;let f=va(l.fields);f.length&&i.set(s,{def:l,rules:f})}let o={today:t};function a(s,l,f,c,x,b,y){let S=s;for(let m of l){if(m.on){let h=`${x}${m.key}@${JSON.stringify(m.on.map(E=>s[E]??null))}`;if(y.add(h),b.has(h)||!m.when.evaluate(f,c))continue}else{if(!m.when.evaluate(f,c))continue;let h=x+m.key;if(y.add(h),b.has(h))continue}let k=xn(m.def,m.value.evaluate(f,c));Mr(k,S[m.name])||(S={...S,[m.name]:k})}return S}function d(s,l){let f=new Set,c=r.length?a(s,r,Dt(s,e.fields,n()),vn(s,e.fields,t),"",l,f):s,x=i.size?Dt(s,e.fields,n()):{};for(let[b,{def:y,rules:S}]of i){let m=s[b];if(!Array.isArray(m))continue;let k=!1,h=m.map(E=>{if(ft(y,E.values)!==null)return E;let L=a(E.values,S,mn(E.values,y.fields,x,E.id??null),o,`${b}.${E.key}.`,l,f);return L===E.values?E:(k=!0,{...E,values:L})});k&&(c={...c,[b]:h})}return{values:c,holding:f}}return{apply:d,holding:s=>d(s,cl).holding}}function wa(e){return(e??[]).map(t=>({rule:t,when:Ye(t.when??!0),pattern:t.pattern===void 0?null:new RegExp(`^(?:${t.pattern})$`),holds:t.holds===void 0?null:Ye(t.holds)}))}function ka(e,t,n,r,i){let o={};if(!r.length||Ht(e,n))return o;for(let a of r){let d=a.rule.level??"error";if(o[d]!==void 0||!a.when.evaluate(i.context,i.env))continue;let s=fl(a,e,n,i.now)??ml(a,i);s&&(o[d]=a.rule.message??je(i.messages[s.say],{label:t,...s.values}))}return o}function fl({rule:e,pattern:t},n,r,i){let o=typeof r=="string"?r:null;if(o!==null&&e.minLength!==void 0&&o.length<e.minLength)return{say:"minLength",values:{min:e.minLength}};if(o!==null&&e.maxLength!==void 0&&o.length>e.maxLength)return{say:"maxLength",values:{max:e.maxLength}};if(t&&(o!==null||mt(r))&&!t.test(String(r)))return{say:"pattern"};if(o!==null&&e.endsWith!==void 0&&!o.trim().toLowerCase().endsWith(e.endsWith.toLowerCase()))return{say:"endsWith",values:{ending:e.endsWith}};if(mt(r)&&e.min!==void 0&&r<e.min)return{say:"min",values:{min:e.min}};if(mt(r)&&e.max!==void 0&&r>e.max)return{say:"max",values:{max:e.max}};let a=Array.isArray(r)?r.length:null;if(a!==null&&e.atLeast!==void 0&&a<e.atLeast)return{say:"atLeast",values:{min:e.atLeast}};if(a!==null&&e.atMost!==void 0&&a>e.atMost)return{say:"atMost",values:{max:e.atMost}};if(e.distinct!==void 0&&n.type==="one2many"&&Array.isArray(r)){let d=ul(n,r,e.distinct);if(d!==null)return{say:"distinct",values:{column:n.fields[e.distinct]?.label??e.distinct,value:d}}}if(o!==null&&e.date!==void 0){let d=gl(n,o,i);if(e.date==="past"&&d>=0)return{say:"datePast"};if(e.date==="future"&&d<=0)return{say:"dateFuture"}}}function ul(e,t,n){let r=e.fields[n],i=new Set;for(let o of t){if(ft(e,o.values)!==null)continue;let a=o.values[n];if(a==null||a===""||Array.isArray(a)&&!a.length)continue;let d=typeof a=="object"&&!Array.isArray(a)&&"id"in a?a:null,s=JSON.stringify(d?d.id:a);if(!i.has(s)){i.add(s);continue}return d?d.label:r?.type==="selection"?r.options.find(l=>l.value===a)?.label??String(a):String(a)}return null}var pl=e=>e==null||typeof e=="string"&&!e.trim()||Array.isArray(e)&&!e.length;function ml({holds:e},t){if(!(!e||e.fields.some(n=>pl(t.context[n]))))return e.evaluate(t.context,t.env)?void 0:{say:"holds"}}function gl(e,t,n){if(e.type==="datetime")return Math.sign(Date.parse(t)-n.getTime());let r=ln(n);return t<r?-1:t>r?1:0}var Sa=new Map;function hl(e){let t=Sa.get(e);return t||Sa.set(e,t=It(e)),t}function Pi(e,t){let n=e.trim();if(Tn.test(n)&&n in t.fields)return ye(t.values[n]);if(n==="user"&&!("user"in t.fields))return t.user?.id==null?null:{id:t.user.id,label:t.user.name??String(t.user.id)};let r=/^parent\.([A-Za-z_][A-Za-z0-9_]*)$/.exec(n);return r&&t.parent&&r[1]in t.parent.fields?ye(t.parent.values[r[1]]):hl(e).evaluate(t.context,t.env)}function La(e,t,n){if(e.type!=="many2one"&&e.type!=="many2many")return xn(e,t);let r=i=>{if(i==null||i===!1||i==="")return null;if(typeof i=="number"||typeof i=="string")return{id:i,label:n.labelOf?.(e.relation,i)??String(i)};if(typeof i=="object"&&!Array.isArray(i)&&"id"in i){let o=i;return{id:o.id,label:typeof o.label=="string"?o.label:n.labelOf?.(e.relation,o.id)??String(o.id)}}return null};return e.type==="many2one"?r(Array.isArray(t)?t[0]:t):(Array.isArray(t)?t:[t]).map(r).filter(i=>i!==null)}function Ea(e,t,n){let r={};for(let[i,o]of Object.entries(e)){let a=t[i];a&&(r[i]=La(a,Pi(o,n),n))}return r}function Ii(e,t){let n={};for(let[r,i]of Object.entries(e))n[r]=Pi(i,t)??null;return n}function Di(e,t){let n={};for(let[r,i]of Object.entries(e))i.defaultFrom!==void 0&&(n[r]=La(i,Pi(i.defaultFrom,t),t));return n}function Ra(e){let t=Wi(e.tones),n=Ye(e.bold);return(r,i)=>({tone:ji(t,r,i),bold:n.evaluate(r,i)})}var Wi=e=>(e??[]).map(t=>({tone:t.tone,when:Ye(t.when)})),ji=(e,t,n)=>e.find(r=>r.when.evaluate(t,n))?.tone??null;function Fa(e){let t=new Map;for(let[d,s]of Object.entries(e.cells??{}))t.set(d,{invisible:Ye(s.invisible),readonly:Ye(s.readonly),required:Ye(s.required),hidden:Ye(s.hidden),...s.roles?.length?{roles:s.roles}:{},tones:Wi(s.tones),bold:Ye(s.bold)});let n=Wi(e.rowTones),r=Ye(e.rowBold),i=e.lineDelete===void 0?null:Ye(e.lineDelete),o=e.rowButtons??[],a=o.map(d=>({id:d.id,roles:d.roles,invisible:Ye(d.invisible)}));return{buttons:o,line(d,s,l){let f={tone:ji(n,d,s),bold:r.evaluate(d,s),cells:{},buttons:{},deletable:i?.evaluate(d,s)??!0};for(let[c,x]of t)f.cells[c]={invisible:x.invisible.evaluate(d,s),readonly:x.readonly.evaluate(d,s),required:x.required.evaluate(d,s),tone:ji(x.tones,d,s),bold:x.bold.evaluate(d,s)};for(let c of a)f.buttons[c.id]=bn(c.roles,l)&&!c.invisible.evaluate(d,s);return f},hidden(d,s,l,f){let c=t.get(d);return!!c&&(!bn(c.roles,f)||c.hidden.evaluate(s,l))}}}var Wr=Object.freeze({done:!0}),Hi=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),zi=e=>e instanceof Error?e.message:String(e);function Aa(e){let t=new Map,n=new Map,r=v=>{let R=t.get(v);return R||t.set(v,R=It(v)),R};function i(v){if(typeof v=="boolean")return v;let R=n.get(v);R||n.set(v,R=Ye(v));let{context:w,env:p}=e.reading();return R.evaluate(w,p)}let o=v=>{let R=v.trim();return Tn.test(R)?R:null};function a(v,R){let w=o(v);if(R&&w!==null&&w in e.fields)return ye(e.values()[w]);let{context:p,env:T}=e.reading();return r(v).evaluate(p,T)}function d(v,R){let w=e.values();for(let[p,T]of Object.entries(e.fields)){if(T.type!=="many2one"&&T.type!=="many2many"||T.relation!==v)continue;let C=w[p],O=(Array.isArray(C)?C:C?[C]:[]).find(H=>H&&H.id===R);if(O)return O.label}}function s(v,R,w=()=>{}){let p=T=>{if(T==null||T===!1||T==="")return null;let C=v.relation,W=O=>w(O)??d(C,O)??String(O);if(typeof T=="number"||typeof T=="string")return{id:T,label:W(T)};if(typeof T=="object"&&!Array.isArray(T)&&"id"in T){let O=T;return{id:O.id,label:typeof O.label=="string"?O.label:W(O.id)}}return null};return v.type==="many2one"?p(R):v.type==="many2many"?(Array.isArray(R)?R:[R]).map(p).filter(T=>T!==null):xn(v,R)}function l(v){let R=e.fields[v];if(!R)throw new Error(`The page has no field "${v}"`);return R}async function f(v){return e.host?e.host.ask(v):e.confirm?e.confirm(v):!0}function c(v){return{reason:"cannot",message:v}}async function x(v,R){let w=e.host;if(!w)return c(`Nothing can open "${v.page}" here: the form has no host`);let p=v.record!==void 0?a(v.record,!1):null,T={page:v.page,...v.version!==void 0?{version:v.version}:{},as:v.as??"dialog",...v.side&&v.as==="panel"?{side:v.side}:{},...v.title!==void 0?{title:v.title}:{},recordId:typeof p=="number"||typeof p=="string"&&p!==""?p:null,...v.values?{values:b(v.values)}:{},...v.filter?{filter:Cr(v.filter,e.reading().context)}:{}},C;try{C=await w.open(T)}catch(O){return{reason:"cannot",message:zi(O),error:O}}if(!C.saved)return{reason:"closed"};if(v.into&&e.write(y(v.into,C)),!v.then)return null;let W=await L(v.then,R);return W.done?null:{reason:W.reason,message:W.message,step:W.step,error:W.error}}function b(v){let R={};for(let[w,p]of Object.entries(v))R[w]=a(p,!0)??null;return R}function y(v,R){let w=R.values??{},p=R.recordId??null,T={...bl(w),id:p},C=[R.label,w.display_name,w.name].find(H=>typeof H=="string"&&H!==""),W=H=>H===p?C:void 0,O={};for(let[H,M]of Object.entries(v)){let P=l(H),j=o(M),_=j==="id"?p:j!==null&&!Hi.has(P.type)&&j in w?w[j]:r(M).evaluate(T,{today:e.today});O[H]=s(P,_,W)}return O}async function S(v,R){let w={id:R.id,action:v.action,...v.params?{params:ye(v.params)}:{},recordId:e.recordId(),values:ye(e.values()),...R.recordIds?{recordIds:[...R.recordIds]}:{},...R.line?{line:ye(R.line)}:{},...R.lines?{lines:ye(R.lines)}:{}};if(!e.onAction)return null;let p;try{p=await e.onAction(w)??void 0}catch(T){return{reason:"app",message:zi(T),error:T}}if(e.answered(w,p),!p)return null;if(p.reload){let T=await e.reload();if(T)return T}if(p.values){let T={};for(let[C,W]of Object.entries(p.values))C in e.fields&&(T[C]=s(e.fields[C],W));e.write(T)}if(p.say!==void 0){let T=typeof p.say=="string"?{message:p.say}:p.say;e.host?.say(T.message,T.tone??"info")}if(p.post!==void 0){let T=typeof p.post=="string"?{message:p.post}:p.post,C=await m(T.message,T.kind??"note",!1);if(C)return C}if(p.record!==void 0){let T=await e.showRecord(p.record);if(T)return T}if(p.open){let T=await x(p.open,R);if(T)return T}return p.stop?(typeof p.stop=="string"&&e.host?.say(p.stop,"warning"),{reason:"app",...typeof p.stop=="string"?{message:p.stop}:{}}):null}async function m(v,R,w){let p=w?$n(v):[{text:v}],T=p.map(O=>O.field?e.wordsOf(O.field):O.text).join(""),C=p.map(O=>O.field&&e.fields[O.field]?.type==="html"?String(e.values()[O.field]??""):yl(O.field?e.wordsOf(O.field):O.text)).join("");return await e.post({kind:R,text:T,body:`<p>${C}</p>`})?null:c("Nothing can post a message here: no conversation is beside this record")}async function k(v,R,w){return e.onAction?S({action:v},w):c(`Nothing can ${v} this record here: the data source has no ${R}, and the app takes no actions`)}async function h(v,R){let w=e.recordId();if(w==null)return c(`A new record cannot be ${v==="duplicate"?"duplicated":v==="delete"?"deleted":`${v}d`}: it is not saved yet`);if(v==="archive"||v==="unarchive")return e.archive?(await e.archive(v==="archive"),e.told({archived:v==="archive"},w),e.reload()):k(v,"archive",R);if(v==="duplicate"){if(e.changed()){let C=await e.save(R.chain);if(C)return C}if(!e.copy){let C=await k(v,"copy",R),W=e.recordId();return!C&&W!=null&&W!==w&&e.told({copied:W},w),C}let p=await e.copy(),T=await e.showRecord(p);return T||(e.told({copied:p},w),null)}if(!e.remove){let p=await k(v,"delete",R);return p||e.told({deleted:!0},w),p}return await e.remove(),e.told({deleted:!0},w),null}async function E(v,R){switch(v.do){case"set":{let w=l(v.field);return e.write({[v.field]:s(w,a(v.value,!Hi.has(w.type)))}),null}case"clear":return e.write({[v.field]:yn(l(v.field))}),null;case"addLine":{let w=l(v.field);if(w.type!=="one2many")return c(`"${v.field}" is a ${w.type}; a line is added to a one2many`);let p={};for(let[T,C]of Object.entries(v.values??{})){let W=w.fields[T];if(!W)return c(`The lines of "${v.field}" have no field "${T}"`);p[T]=s(W,a(C,!Hi.has(W.type)))}return e.addLine(v.field,p),null}case"check":return e.check(v.fields);case"save":return e.save(R.chain);case"reset":return e.reset(),null;case"goTo":{let w=e.goTo(v.target,R.chain);if(w!==void 0)return w;let p=e.host?.show;return p?(e.showing(R.chain,()=>p.call(e.host,v.target)),null):c(`Nothing can show "${v.target}" here: the form has no host that shows tabs`)}case"say":return e.host?.say(v.message,v.tone??"info"),null;case"ask":return await f(v.message)?null:{reason:"no",message:v.message};case"call":return S(v,R);case"open":return x(v,R);case"close":{let w=e.host?.close;return w?(w.call(e.host),null):c("Nothing can close this form: it has no host, or was not opened in a dialog or panel")}case"reload":return e.reload();case"openUrl":{let w=e.host?.openUrl;if(!w)return c("Nothing can open a web address here: the form has no host that opens one");let p=a(v.url,!1);return typeof p!="string"||!p.trim()?c(`"${v.url}" gives no address to open`):(w.call(e.host,p.trim(),v.newTab??!0),null)}case"archive":case"unarchive":case"duplicate":case"delete":return h(v.do,R);case"post":return m(v.message,v.kind??"note",!0)}}async function L(v,R){for(let w=0;w<v.length;w++){let p=v[w],T;try{if(p.when!==void 0&&!i(p.when))continue;T=await E(p,R)}catch(C){T={reason:"cannot",message:zi(C),error:C}}if(T)return{done:!1,stoppedAt:w,step:T.step??p,reason:T.reason,...T.message!==void 0?{message:T.message}:{},...T.error!==void 0?{error:T.error}:{}}}return Wr}return{runSteps:L,ask:f}}function bl(e){let t={},n=r=>{if(r===null||typeof r!="object")return r;let i=r;return"key"in i&&"values"in i?i.key:"model"in i&&"id"in i?`${i.model},${i.id}`:"id"in i?i.id:"name"in i&&"type"in i&&"size"in i?i.name:r};for(let[r,i]of Object.entries(e))t[r]=Array.isArray(i)?i.map(n):n(i);return t}function Ta(e){let t=new Map;return function(r,i,o,a){if(!i?.length||o.includes(r))return Promise.resolve(Wr);let d=l=>{let f,c=new Promise(x=>f=x).finally(()=>{l.running===c&&!l.queued&&t.delete(r)});return l.running=c,f(e(r,i,[...o,r])),c},s=t.get(r);if(!s){let l={running:Promise.resolve(Wr)};return t.set(r,l),d(l)}if(!a)return Promise.resolve(Wr);if(!s.queued){let l=()=>(s.queued=void 0,d(s));s.queued=s.running.then(l,l)}return s.queued}}function yl(e){return e.replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t]).replace(/\n/g,"<br>")}function jr(e){return Na(e,[]).form}var $a=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Bi=e=>e;function Na(e,t){let{page:n}=e,r=e.scheduler??nr,i=e.messages??wt.en,o=Ll(n.layout),a=new Map;for(let g of o.values()){let u=g.source.validate;g.kind==="field"&&u&&a.set(g.id,wa(u))}let d=new Map;for(let g of o.values()){let u=g.source;g.kind!=="field"||n.fields[u.field]?.type!=="one2many"||(u.cells||u.rowTones||u.rowBold!==void 0||u.rowButtons||u.lineDelete!==void 0)&&d.set(g.id,{field:u.field,compiled:Fa(u)})}let s=new Map;for(let g of o.values()){let u=g.source;g.kind==="field"&&(u.tones||u.bold!==void 0)&&s.set(g.id,Ra(u))}let l=new Map;for(let g of o.values()){let u=g.source;g.kind==="field"&&u.order?.length&&n.fields[u.field]?.type==="one2many"&&!l.has(u.field)&&l.set(u.field,u.order)}function f(g,u){let F=g;for(let[A,I]of l){if(u&&!u.includes(A))continue;let q=g[A];if(!Array.isArray(q)||q.length<2)continue;let G=[...q].sort((ae,ie)=>wl(ae.values,ie.values,I));G.some((ae,ie)=>ae!==q[ie])&&(F={...F,[A]:G})}return F}let c=new Map,x=(g,u)=>{u.placeholderWhen?.length&&c.set(g,{fixed:u.placeholder,when:u.placeholderWhen.map(F=>({text:F.text,holds:Ye(F.when)}))})};for(let g of o.values())g.kind==="field"&&"type"in g.source&&x(g.id,g.source);n.layout.type==="sheet"&&n.layout.title&&x("#title",n.layout.title);let b=[...a.values()].some(g=>g.some(u=>u.rule.level==="warning")),y=n.layout.type==="wizard"?n.layout.children.map(g=>g.id):[],S=()=>`fieldia:draft:${n.id}:${$.recordId??"new"}`,m=()=>ln(e.now?.()??new Date),k=!1,h=e.editing!==!1,E=e.parent?Dt(e.parent.values,e.parent.fields,{recordId:e.parent.id??null,user:e.user,context:e.context}):void 0,L=()=>({recordId:k?$.recordId:e.recordId??null,user:e.user,editing:h,context:e.context,parent:E}),v=ya(n,m,L),R=xa(n,m,L),w=new Map;for(let g of o.values())g.kind==="form"&&w.set(g.id,g.source);let p=new Map,T={...n.fields};for(let g of w.values())T[g.name]={type:"json",label:g.title||g.name};let C=!1;function W(g=e.recordId==null,u=!0){let F=un(T,m());if(g){let A={recordId:null,user:e.user,context:e.context,parent:E};Object.assign(F,Di(n.fields,H(F,n.fields,Dt(F,n.fields,A),vn(F,n.fields,m))))}return u?f({...F,...ye(e.values??{})}):F}function O(g,u){let F=k?$.values:{};for(let[A,I]of Object.entries(n.fields)){if(I.type!=="many2one"&&I.type!=="many2many"||I.relation!==g)continue;let q=F[A],G=(Array.isArray(q)?q:q?[q]:[]).find(ae=>ae?.id===u);if(G)return G.label}}function H(g,u,F,A,I){return{values:g,fields:u,context:F,env:A,...I?{parent:I}:{},...e.user?{user:e.user}:{},labelOf:O}}function M(){let{context:g,env:u}=Je();return H($.values,n.fields,g,u)}function P(g,u){let A=Me(g).fields;return H(u,A,mn(u,A,Je().context),{today:m},{values:$.values,fields:n.fields})}function j(g){let u=d.get(g);if(u)return u;let F=o.get(g);if(F?.kind!=="field"||n.fields[F.field]?.type!=="one2many")throw new Error(`"${g}" is not a table of lines`);return null}function _(g,u){let F=j(g);if(!F)return{tone:null,bold:!1,cells:{},buttons:{},deletable:!0};let A=($.values[F.field]??[]).find(q=>q.key===u);if(!A)throw new Error(`"${F.field}" has no line "${u}"`);let I=Me(F.field);return F.compiled.line(mn(A.values,I.fields,Je().context,A.id??null),{today:m},le)}function D(g,u){if(!u){let I=dt(g);return I.type==="many2one"||I.type==="many2many"?I.createValues?Ii(I.createValues,M()):{}:{}}let F=($.values[u.lines]??[]).find(I=>I.key===u.key),A=Me(u.lines).fields[g];return!F||!A||A.type!=="many2one"&&A.type!=="many2many"||!A.createValues?{}:Ii(A.createValues,P(u.lines,F.values))}let V=v.apply(W()),z=R.holding(V),$={status:e.recordId!=null?"idle":"ready",recordId:e.recordId??null,values:ye(V),errors:{},dirty:[],warnings:{},warning:null,warningField:null,error:null,draft:null,step:y[0]??null,skipped:[],saveProblem:null,choices:{},definitions:{}};k=!0;let ee={},Z=0,J=0,B=null,te=null,Ee=new Set,he=new Set,ke=new Map,se=[],re=!1,Y=null,ne=null,le=[...e.user?.roles??[]],K={};function U(g){let u=$.values,F=$.errors;if($={...$,...g},$.errors!==F)for(let A of p.values())A.inner.show(vl($.errors,A.name));for(let A of[...he])A($);if($.values!==u){for(let A in $.choices)$e(A).dependsOn?.some(I=>u[I]!==$.values[I])&&me(A);for(let A in $.definitions)Be(A).dependsOn?.some(I=>u[I]!==$.values[I])&&Ne(A)}re&&$.step!==Y&&We(se)}function Q(g,u){let F=ke.get(g);if(F)for(let A of[...F])A(u)}function ce(g,u){Q("change",{field:g,value:$.values[g],values:$.values,by:u});let F=n.on?.change?.[g];u==="person"&&F&&oe(Oe(`on.change.${g}`,F,[],!0))}function We(g){let u=$.step;if(u===Y||u===null)return;Y=u,Q("step",{step:u});let F=n.on?.show?.[u];F&&oe(Oe(`on.show.${u}`,F,g,!0))}function Se(g,u){let F=se;se=g;try{u()}finally{se=F}}let $e=g=>n.fields[g].optionsFrom;function me(g){let{list:u}=$e(g),F=K[g]=(K[g]??0)+1,A=G=>F===K[g]&&U({choices:{...$.choices,[g]:G}}),I=$.choices[g]?.options??null;A({options:I,loading:!0});let q=e.dataSource;oe((q?.options?q.options({list:u,values:ye($.values)}):Promise.reject(new Error(`No list "${u}"`))).then(G=>A({options:G}),G=>A({options:I,error:G.message??String(G)})))}let Be=g=>n.fields[g].definitionsFrom,at={};function Ne(g){let{list:u}=Be(g),F=at[g]=(at[g]??0)+1,A=G=>F===at[g]&&U({definitions:{...$.definitions,[g]:G}}),I=$.definitions[g]?.definitions??null;A({definitions:I,loading:!0});let q=e.dataSource;oe((q?.definitions?q.definitions({list:u,values:ye($.values)}):Promise.reject(new Error(`No definitions "${u}"`))).then(G=>A({definitions:G}),G=>A({definitions:I,error:G.message??String(G)})))}async function we(g,u){let{list:F}=Be(g),A=[...$.definitions[g]?.definitions??[],u];U({definitions:{...$.definitions,[g]:{definitions:A}}}),await oe(e.dataSource?.saveDefinitions?.({list:F,values:ye($.values),definitions:A})??Promise.resolve())}function be(g){let u=n.fields[g],F=$.choices[g]?.options;return u.type==="selection"&&u.optionsFrom&&F?{...u,options:F,optionsFrom:void 0}:u}function oe(g){Ee.add(g);let u=()=>Ee.delete(g);return g.then(u,u),g}function Je(){if(ne?.values!==$.values||ne.recordId!==$.recordId||ne.editing!==h){let g=$.values,u=Dt(g,n.fields,L());ne={values:g,recordId:$.recordId,editing:h,context:u,env:vn(g,n.fields,m)}}return ne}let st=()=>Je().context;function dt(g){let u=T[g];if(!u)throw new Error(`The page has no field "${g}"`);return u}function Ut(g){return Object.keys(T).filter(u=>JSON.stringify(g[u]??null)!==JSON.stringify(V[u]??null))}function Ot(g){let u=o.get(g);if(!u)throw new Error(`The page has no element "${g}"`);let{context:F,env:A}=Je(),I=ie=>ie?!bn(ie.roles,le)||ie.invisible.evaluate(F,A):!1,q=I(u);for(let ie=u.parent;!q&&ie;ie=o.get(ie)?.parent??null)q=I(o.get(ie));let G=u.readonly.evaluate(F,A);for(let ie=u.parent;!G&&ie;ie=o.get(ie)?.parent??null)G=o.get(ie)?.readonly.evaluate(F,A)??!1;let ae=u.field?n.fields[u.field]:void 0;return{invisible:q,readonly:G||ae!==void 0&&Ma(ae),required:u.required.evaluate(F,A)||ae?.required===!0}}function nn(g,u="field"){let F=I=>{if(!g)return!0;for(let q=I.id;q;q=o.get(q)?.parent??null)if(q===g)return!0;return!1},A=I=>{if(g||!$.skipped.length)return!1;for(let q=I.id;q;q=o.get(q)?.parent??null)if($.skipped.includes(q))return!0;return!1};return[...o.values()].filter(I=>I.kind===u&&F(I)&&!A(I)&&!Ot(I.id).invisible)}function En(g){let u=a.get(g.id);if(!u)return{};let F=g.field,A=n.fields[F],I=g.source.label??A.label,{context:q,env:G}=Je();return ka(A,I,$.values[F],u,{context:q,env:G,now:e.now?.()??new Date,messages:i})}function _n(g){let u=g.field;return g.source.widget==="tick"&&n.fields[u].type==="boolean"&&$.values[u]!==!0&&Ot(g.id).required?i.tick:void 0}function ki(g){let u=g.field;return _n(g)??Vi(n.fields[u],g.source,$.values[u],i)??On(be(u),$.values[u],Ot(g.id).required,i,m())??En(g).error}function Kt(){var u;let g={};if(!b)return g;for(let F of nn()){let A=a.has(F.id)?En(F).warning:void 0;A&&(g[u=F.field]??(g[u]=A))}return g}function Wt(g,u){let F=$;$={...$,values:g};try{return u()}finally{$=F}}function Lt(g){let u={};for(let F of nn(g)){let A=F.field;if(u[A])continue;let I=n.fields[A],q=ki(F);if(q&&(u[A]=q),I.type==="one2many")for(let G of $.values[A]??[]){let ae=ft(I,G.values),ie=d.has(F.id)?_(F.id,G.key).cells:{};for(let[xe,fe]of Object.entries(I.fields)){if(ae&&xe!==I.lineKinds?.text)continue;let Ze=ie[xe];if(Ze?.invisible||d.has(F.id)&&d.get(F.id).compiled.hidden(xe,Je().context,Je().env,le))continue;let Pe=On(fe,G.values[xe],fe.required===!0||Ze?.required===!0,i,m());Pe&&(u[`${A}.${G.key}.${xe}`]=Pe)}}}for(let F of nn(g,"form")){let A=p.get(F.id);if(A)for(let[I,q]of Object.entries(A.inner.errorsNow()))u[`${A.name}.${I}`]=q}return u}function nt(g,u){let F=g;for(let A of p.values())if(!(u!=="start"&&F[A.name]===A.inner.form.getState().values)){C=!0;try{A.inner.take($a(F[A.name])?F[A.name]:{},u)}finally{C=!1}F={...F,[A.name]:Bi(A.inner.form.getState().values)}}return F}function rn(g){let u=v.apply(g);for(let F=0;F<8;F++){let A=R.apply(u,z);if(z=A.holding,A.values===u)break;u=v.apply(A.values)}return u}function on(g){let u=v.apply(g);return z=R.holding(u),u}function Et(g,u={},F=!1){let A=nt(F?on(g):rn(g),F?"fresh":"edit"),I=Object.keys($.errors).length?Si(A):$.errors;U({values:A,dirty:Ut(A),errors:I,warnings:Wt(A,Kt),...u})}function Si(g){let u=Wt(g,()=>Lt($.step??void 0)),F={};for(let A of Object.keys($.errors))u[A]&&(F[A]=u[A]);for(let[A,I]of Object.entries(ee))JSON.stringify(g[A]??null)===I.value?F[A]??(F[A]=I.message):delete ee[A];return F}function Li(){let g=e.drafts;g&&(B!==null&&r.clearTimeout(B),B=r.setTimeout(()=>{B=null,g.store.setItem(S(),JSON.stringify({savedAt:new Date().toISOString(),values:$.values}))},g.delayMs??400))}function gn(){B!==null&&r.clearTimeout(B),B=null,e.drafts?.store.removeItem(S())}function Rn(){let g=e.drafts;if(!g)return;let u=g.store.getItem(S());if(!u)return;let F;try{F=JSON.parse(u)}catch{g.store.removeItem(S());return}g.restore==="auto"?Et({...$.values,...F.values},{draft:null},!0):U({draft:{savedAt:F.savedAt}})}function Un(){let g=e.autosave;!g||n.data.kind!=="record"||(te!==null&&r.clearTimeout(te),te=r.setTimeout(()=>{te=null,$.dirty.length&&Object.keys(Lt()).length===0&&oe(Kn())},g.delayMs))}function br(g){let u=e.dataSource;if(!u?.onchange||n.data.kind!=="record")return;let F=++J,A={model:n.data.model,id:$.recordId,changed:g,values:ye($.values)};oe(u.onchange(A).then(I=>{if(F!==J)return;let q={...$.values,...I.values??{}};Et(q,{warning:I.warning??null,warningField:I.warning?g:null})},()=>{}))}function jt(g){Li(),Un(),br(g)}function an(){let g={values:{},lines:{},links:{}},u=$.recordId===null||$.recordId===void 0,F=u?Object.keys(T).filter(A=>$.dirty.includes(A)||!Ht(T[A],$.values[A])):$.dirty;for(let A of F){let I=T[A],q=$.values[A],G=u?yn(I):V[A];I.type==="one2many"?g.lines[A]=kl(G??[],q??[]):I.type==="many2many"?g.links[A]=Sl(G??[],q??[]):g.values[A]=ye(q)}return g}function Ei(){let g={};for(let u of nn()){let F=u.field;g[F]=ye($.values[F])}for(let u of nn(void 0,"form")){let F=p.get(u.id);F&&(g[F.name]=ye($.values[F.name]))}return g}async function Kn(g=[]){return await N(g)===null}async function N(g){if(n.on?.beforeSave){let A=await Oe("on.beforeSave",n.on.beforeSave,g,!1);if(!A.done){if(A.reason!=="check"&&A.reason!=="save"){let I={kind:"stopped",reason:A.reason,message:A.message??""};U({status:"error",error:I.message||null,saveProblem:I})}return{reason:"save",...A.message!==void 0?{message:A.message}:{}}}}let u=Lt();if(Object.keys(u).length)return U({errors:u}),{reason:"save",message:Object.values(u)[0]};let F=e.dataSource;ee={},U({status:"saving",errors:{},error:null,saveProblem:null});try{if(n.data.kind==="responses"){if(!F?.submit)throw new Error("This page has no data source to send its answers to");let q=Ei();return await F.submit({pageId:n.id,values:q}),gn(),U({status:"saved"}),Q("send",{values:q}),oe(Oe("on.afterSave",n.on?.afterSave,g,!1)),null}if(!F?.save)throw new Error("This page has no data source to save to");let A=await F.save({model:n.data.model,id:$.recordId,fields:T,changes:an(),values:ye($.values)});gn();let I=nt(on(A.values?f({...$.values,...A.values},Object.keys(A.values)):$.values),"start");return V=ye(I),U({status:"saved",recordId:A.id,values:I,dirty:[],warnings:Wt(I,Kt)}),Q("save",{recordId:$.recordId,values:$.values}),oe(Oe("on.afterSave",n.on?.afterSave,g,!1)),null}catch(A){let I=Nr(A),q=I.kind==="fields"?I.fields??{}:{};return ee=Object.fromEntries(Object.entries(q).map(([G,ae])=>[G,{message:ae,value:JSON.stringify($.values[G]??null)}])),U({status:"error",error:I.message,saveProblem:I,errors:{...q}}),{reason:"save",message:I.message}}}async function X(){Q("open",{recordId:$.recordId,values:$.values}),await Oe("on.open",n.on?.open,[],!0),re=!0,We([])}function de(g,u){let F=Object.keys(g);if(F.forEach(dt),!!F.length){Et({...$.values,...ye(g)});for(let A of F)jt(A);for(let A of F)ce(A,u)}}function ge(g,u,F){let A=Me(g),I=$.values[g]??[],q=`new-${++Z}`;for(;I.some(fe=>fe.key===q);)q=`new-${++Z}`;let G=A.fields,ae=un(G,m());Object.assign(ae,Di(G,P(g,ae))),A.lineDefaults&&Object.assign(ae,Ea(A.lineDefaults,G,M()));let ie={key:q,values:{...ae,...ye(u)}};if(A.sequenceField&&ie.values[A.sequenceField]==null){let fe=I.map(Ze=>Ze.values[A.sequenceField]).filter(Ze=>typeof Ze=="number");ie.values[A.sequenceField]=fe.length?Math.max(...fe)+1:1}let xe=[...I,ie];return Et({...$.values,[g]:xe}),jt(g),ce(g,F),q}function Le(g){g?.forEach(dt);let u=Lt(),F=g?Object.fromEntries(Object.entries(u).filter(([I])=>g.some(q=>I===q||I.startsWith(`${q}.`)))):u;U({errors:F});let A=Object.values(F)[0];return A===void 0?null:{reason:"check",message:A}}function Re(g,u){if(!y.includes(g))return;if(!rt.steps().includes(g))return{reason:"cannot",message:`The step "${g}" does not apply now`};let F=!1;return Se(u,()=>F=rt.goTo(g)),F?null:{reason:"check",message:Object.values($.errors)[0]}}async function it(g,u){let F=await Ue.runSteps(g,u);return Q("run",{id:u.id,steps:g,result:F}),F}function qe(g){return!e.dataSource?.create||!g||g.readonly?null:g.type==="many2one"||g.type==="many2many"?g.relation:null}async function pt(g,u,F,A={}){let I=qe(g),q=e.dataSource;if(!I||!q?.create)throw new Error(`"${u}" cannot make records: its data source has no create, or it is not a link`);return oe(q.create({model:I,name:F.trim(),...Object.keys(A).length?{values:A}:{}}))}async function yt(g,u,F,A,I,q,G){if(g.type!=="many2one"&&g.type!=="many2many"&&g.type!=="reference"&&g.type!=="json")throw new Error(`"${u}" is not a many2one, many2many, reference or json`);if((g.type==="reference"||g.type==="json")&&!q)throw new Error(`Searching "${u}" needs a model`);let ae=e.dataSource;if(!ae?.search)return[];let ie=g.type==="reference"||g.type==="json"||!g.filter?void 0:Cr(g.filter,F),xe=G?[...ie??[],{field:"id",op:"in",value:G}]:ie,fe=g.type==="reference"||g.type==="json"?q:g.relation;return oe(ae.search({model:fe,query:A,...xe?{filter:xe}:{},limit:I}))}function Me(g){let u=dt(g);if(u.type!=="one2many")throw new Error(`"${g}" is a ${u.type}, not a one2many`);return u}function Qe(){return $.step?y.indexOf($.step):-1}function Ce(g){return o.get(g)?.source?.optional===!0}async function Xe(g=!1){let u=e.dataSource;if($.recordId==null||n.data.kind!=="record")return;if(!u?.load){U({status:"error",error:"This page has no data source to load from"});return}let F=++pe;U({status:"loading",error:null});try{let A=await u.load({model:n.data.model,id:$.recordId,fields:T});if(F!==pe||(V=nt(on(f({...un(T,m()),...A})),"start"),U({status:"ready",values:ye(V),dirty:[],errors:{},warnings:Wt(V,Kt)}),g))return;Rn(),oe(X())}catch(A){F===pe&&U({status:"error",error:A.message})}}let pe=0;async function De(g){B!==null&&r.clearTimeout(B),te!==null&&r.clearTimeout(te),B=te=null,ee={},Y=null,re=!1;let u={dirty:[],errors:{},warning:null,warningField:null,error:null,draft:null,step:y[0]??null,skipped:[],saveProblem:null};if(g!=null)return U({...u,recordId:g,status:"idle"}),Xe();pe++,V=on(W(!0,!1));let F=nt(ye(V),"start");U({...u,recordId:null,status:"ready",values:F,warnings:Wt(F,Kt)}),Rn(),await X()}let ue=()=>({model:n.data.model,id:$.recordId,fields:T});async function Ve(g){if(e.host?.post)try{return await e.host.post(g)!==!1}catch{return!1}return ke.get("post")?.size?(Q("post",{recordId:$.recordId,message:g}),!0):!1}let Ue=Aa({fields:T,values:()=>$.values,recordId:()=>$.recordId,reading:Je,today:m,write:g=>de(g,"step"),addLine:(g,u)=>{ge(g,u,"step")},check:Le,save:N,async reload(){return $.recordId==null?{reason:"cannot",message:"The record is not saved yet: there is nothing to load again"}:(await Xe(!0),$.status==="error"?{reason:"cannot",message:$.error??"The record could not be loaded again"}:null)},reset:()=>rt.reset(),goTo:Re,showing:Se,host:e.host,confirm:e.confirm,onAction:e.onAction,answered:(g,u)=>Q("action",{request:g,result:u}),changed:()=>$.dirty.length>0,...e.dataSource?.archive&&n.data.kind==="record"?{archive:g=>oe((e.dataSource?.archive)({...ue(),archive:g}))}:{},...e.dataSource?.copy&&n.data.kind==="record"?{copy:async()=>(await oe((e.dataSource?.copy)(ue()))).id}:{},...e.dataSource?.delete&&n.data.kind==="record"?{remove:()=>oe((e.dataSource?.delete)(ue()))}:{},async showRecord(g){return await De(g),$.status==="error"?{reason:"cannot",message:$.error??"The record could not be loaded"}:null},told(g,u){"archived"in g?Q("archive",{recordId:u,archived:g.archived}):"copied"in g?Q("duplicate",{from:u,recordId:g.copied}):(Q("delete",{recordId:u}),$.recordId===u&&oe(De(null)))},post:Ve,wordsOf:g=>El(dt(g),$.values[g])}),Oe=Ta((g,u,F)=>it(u,{id:g,chain:F}));function lt(g,u){let F=[...g.steps??[]];g.action!==void 0&&F.push({do:"call",action:g.action,..."params"in g&&g.params?{params:g.params}:{}});let A="builtin"in g&&!F.length?g.builtin:void 0;A&&F.push({do:A});let I=A==="archive"?i.archiveConfirm:A==="delete"?i.deleteConfirm:void 0,q="confirm"in g&&g.confirm!==void 0?g.confirm:I;return oe((async()=>{if(q&&!await Ue.ask(q)){let G={done:!1,reason:"no",message:q};return Q("run",{id:u.id,steps:F,result:G}),G}return it(F,u)})())}let rt={page:n,getState:()=>$,subscribe(g){return he.add(g),()=>he.delete(g)},load:()=>oe(Xe()),setValue(g,u,F){dt(g),Et({...$.values,[g]:ye(u)}),jt(g),ce(g,F?.by??"person")},setValues:g=>de(g,"app"),node:Ot,openRecord:g=>oe(De(g)),post:Ve,setEditing(g){g!==h&&(h=g,U({}))},fieldReadonly:g=>Ma(dt(g)),loadChoices:me,loadDefinitions:Ne,addDefinition:we,problem(g){dt(g);let u=nn().filter(A=>A.field===g);return u.length?u.map(_n).find(Boolean)??u.map(A=>Vi(n.fields[g],A.source,$.values[g],i)).find(Boolean)??On(be(g),$.values[g],u.some(A=>Ot(A.id).required),i,m())??u.map(A=>En(A).error).find(A=>A!==void 0)??null:null},validate(){let g=Lt();return U({errors:g}),Object.keys(g).length===0},save:()=>oe(Kn()),reset(){gn(),ee={},z=R.holding(V);let g=nt(ye(V),"start");U({values:g,dirty:[],errors:{},warnings:Wt(g,Kt),warning:null,warningField:null,draft:null,step:y[0]??null,skipped:[],saveProblem:null})},changes:an,addLine:(g,u={})=>ge(g,u,"person"),updateLine(g,u,F,A){if(!Me(g).fields[F])throw new Error(`The lines of "${g}" have no field "${F}"`);let q=($.values[g]??[]).map(G=>G.key===u?{...G,values:{...G.values,[F]:ye(A)}}:G);Et({...$.values,[g]:q}),jt(g),ce(g,"person")},moveLine(g,u,F){let I=Me(g).sequenceField;if(!I)throw new Error(`The lines of "${g}" keep no order: give the field a sequenceField`);let q=[...$.values[g]??[]],G=q.findIndex(Ie=>Ie.key===u);if(G<0)throw new Error(`"${g}" has no line "${u}"`);let ae=Math.max(0,Math.min(F,q.length-1));if(ae===G)return;let ie=q.map(Ie=>Ie.values[I]),xe=ie.every((Ie,ot)=>typeof Ie=="number"&&(ot===0||Ie>ie[ot-1]));q.splice(ae,0,...q.splice(G,1));let fe=Math.min(G,ae),Ze=Math.max(G,ae),Pe=xe?ie.slice(fe,Ze+1):[],ct=q.map((Ie,ot)=>{let ht=xe?ot>=fe&&ot<=Ze?Pe[ot-fe]:Ie.values[I]:ot+1;return ht===Ie.values[I]?Ie:{...Ie,values:{...Ie.values,[I]:ht}}});Et({...$.values,[g]:ct}),jt(g),ce(g,"person")},removeLine(g,u){Me(g);for(let[A,I]of d)if(!(I.field!==g||(o.get(A)?.source).lineDelete===void 0)&&($.values[g]??[]).some(q=>q.key===u)&&!_(A,u).deletable)throw new Error(`The line "${u}" of "${g}" cannot be deleted now: its table's lineDelete does not hold on it`);let F=($.values[g]??[]).filter(A=>A.key!==u);Et({...$.values,[g]:F}),jt(g),ce(g,"person")},async search(g,u,F=8,A={}){return yt(dt(g),g,st(),u,F,A.model,A.ids)},async previewLine(g,u,F){Me(g);let A=$.values[g]??[],I=A.find(fe=>fe.key===u);if(!I)throw new Error(`"${g}" has no line "${u}"`);let q=v.line(g,{...I.values,...F},$.values),G=e.dataSource;if(!G?.onchange||n.data.kind!=="record")return q;let ae=A.map(fe=>fe.key===u?{...fe,values:q}:fe),xe=((await G.onchange({model:n.data.model,id:$.recordId,changed:g,values:ye({...$.values,[g]:ae})})).values?.[g]??[]).find(fe=>fe.key===u);return xe?v.line(g,{...q,...xe.values},$.values):q},async searchLine(g,u,F,A,I=8,q={}){let G=Me(g),ae=G.fields[F];if(!ae)throw new Error(`The lines of "${g}" have no field "${F}"`);let ie=($.values[g]??[]).find(xe=>xe.key===u);if(!ie)throw new Error(`"${g}" has no line "${u}"`);return yt(ae,F,mn(ie.values,G.fields,st(),ie.id??null),A,I,q.model,q.ids)},canCreate:g=>qe(n.fields[g])!==null,quickCreate:(g,u)=>pt(n.fields[g],g,u,n.fields[g]?D(g):{}),canCreateLine:(g,u)=>qe(Me(g).fields[u])!==null,quickCreateLine:(g,u,F,A)=>pt(Me(g).fields[u],u,F,A?D(u,{lines:g,key:A}):{}),createValues:(g,u)=>D(g,u),steps:()=>y.filter(g=>!Ot(g).invisible),next(){if(!$.step)return!1;$.skipped.includes($.step)&&U({skipped:$.skipped.filter(A=>A!==$.step)});let g=Lt($.step);if(Object.keys(g).length)return U({errors:g}),!1;let u=rt.steps(),F=y.slice(Qe()+1).find(A=>u.includes(A));return F?(U({step:F,errors:{}}),!0):!1},back(){if(!$.step)return!1;let g=rt.steps(),u=y.slice(0,Qe()).reverse().find(F=>g.includes(F));return u?(U({step:u,errors:{}}),!0):!1},skip(){let g=$.step;if(!g||!Ce(g))return!1;let u=rt.steps(),F=u[u.indexOf(g)+1];return F?(U({step:F,errors:{},skipped:[...$.skipped.filter(A=>A!==g),g]}),!0):!1},goTo(g){let u=rt.steps(),F=u.indexOf(g),A=$.step?u.indexOf($.step):-1;if(F===-1||A===-1)return!1;if(F<=A)return U({step:g,errors:{}}),!0;let I=[...$.skipped];for(let q of u.slice(A,F)){if(I.includes(q))continue;let G=Lt(q);if(Object.keys(G).length){if(Ce(q)){I.push(q);continue}return U({step:q,errors:G,skipped:I}),!1}}return U({step:g,errors:{},skipped:I}),!0},async runAction(g,u){let F=o.get(g);if(!F||F.kind!=="button"&&F.kind!=="stat")throw new Error(`The page has no button "${g}"`);return Ot(g).invisible?{done:!1,reason:"cannot",message:`The button "${g}" is hidden`}:F.parent&&o.get(F.parent)?.source?.selectedButtons?.some(A=>A.id===g)?{done:!1,reason:"cannot",message:`The button "${g}" runs with the lines chosen in its table`}:lt(F.source,{id:g,chain:[],...u?{recordIds:[...u.recordIds]}:{}})},async linkedValues(g,u,F){let A=dt(g);if(A.type!=="many2many")throw new Error(`"${g}" is not a many2many`);let I=e.dataSource;if(!I?.list||!u.length)return[];let q=await I.list({model:A.relation,fields:[...F],filter:[{field:"id",op:"in",value:[...u]}],sort:[],offset:0,limit:u.length}),G=new Map(q.records.map(ae=>[String(ae.id),ae]));return u.flatMap(ae=>{let ie=G.get(String(ae));return ie?[{id:ie.id,values:ie.values}]:[]})},fieldTone(g){let u=s.get(g);if(u){let{context:F,env:A}=Je();return u(F,A)}if(o.get(g)?.kind!=="field")throw new Error(`"${g}" is not a field on this page`);return{tone:null,bold:!1}},placeholder(g){let u=c.get(g);if(!u){let I=o.get(g);if(I?.kind!=="field")throw new Error(`"${g}" is not a field on this page`);let q=I.source;return g==="#title"&&n.layout.type==="sheet"?n.layout.title?.placeholder:q.placeholder}let{context:F,env:A}=Je();return u.when.find(I=>I.holds.evaluate(F,A))?.text??u.fixed},lineState:(g,u)=>_(g,u),columnHidden(g,u){let F=j(g),{context:A,env:I}=Je();return F?F.compiled.hidden(u,A,I,le):!1},async runRowAction(g,u,F){let A=j(g),I=A?.compiled.buttons.find(G=>G.id===u);if(!A||!I)throw new Error(`The table "${g}" has no button "${u}"`);if(!_(g,F).buttons[u])return{done:!1,reason:"cannot",message:`The button "${u}" is hidden on this line`};let q=($.values[A.field]??[]).find(G=>G.key===F);return lt(I,{id:u,chain:[],line:{field:A.field,key:F,values:ye(q.values)}})},async runLinesAction(g,u,F){let A=o.get(g),I=A?.source,q=I?.selectedButtons?.find(fe=>fe.id===u);if(!A||!I||!q)throw new Error(`The table "${g}" has no button "${u}" for its chosen lines`);let G=$.values[I.field]??[],ae=F.map(fe=>G.find(Ze=>Ze.key===fe)??null),ie=F.find((fe,Ze)=>!ae[Ze]);if(ie!==void 0)throw new Error(`"${I.field}" has no line "${ie}"`);if(Ot(u).invisible)return{done:!1,reason:"cannot",message:`The button "${u}" is hidden`};if(!F.length)return{done:!1,reason:"cannot",message:`The button "${u}" runs with lines chosen: none is`};let xe=ae;return lt(q,{id:u,chain:[],lines:{field:I.field,keys:[...F],ids:xe.flatMap(fe=>fe.id===void 0?[]:[fe.id]),values:xe.map(fe=>ye(fe.values))}})},run:(g,u={})=>oe(it(g,{id:u.id??"run",chain:[],...u.recordIds?{recordIds:[...u.recordIds]}:{}})),shown(g){y.includes(g)||oe(Oe(`on.show.${g}`,n.on?.show?.[g],se,!0))},on(g,u){let F=ke.get(g);return F||ke.set(g,F=new Set),F.add(u),()=>{F.delete(u)}},restoreDraft(){let g=e.drafts?.store.getItem(S());if(!g)return;let u=JSON.parse(g);Et({...$.values,...u.values},{draft:null},!0)},discardDraft(){gn(),U({draft:null})},async settled(){for(;Ee.size;)await Promise.allSettled([...Ee])},embed(g,u){let F=p.get(g);if(F)return F.inner.form;let A=w.get(g);if(!A)throw new Error(`"${g}" is not a saved form placed on this page`);let I=[...t,n.id];if(I.includes(u.id))throw new Error(`a page cannot be placed inside itself: ${[...I.slice(I.indexOf(u.id)),u.id].join(" \u2192 ")}`);let q=$.values[A.name],G=Na({page:{...u,data:{kind:"responses"}},dataSource:e.dataSource,values:$a(q)?q:{},onAction:e.onAction,host:e.host,confirm:e.confirm,scheduler:r,messages:i,now:e.now},I);p.set(g,{name:A.name,inner:G}),G.form.on("change",({by:xe})=>{C||ce(A.name,xe)}),G.form.subscribe(xe=>{C||xe.values===$.values[A.name]||(Et({...$.values,[A.name]:Bi(xe.values)}),jt(A.name))});let ae=Bi(G.form.getState().values);$.dirty.includes(A.name)||(V={...V,[A.name]:ae});let ie={...$.values,[A.name]:ae};return U({values:ie,dirty:Ut(ie)}),G.form},embedded:g=>p.get(g)?.inner.form??null,dispose(){B!==null&&r.clearTimeout(B),te!==null&&r.clearTimeout(te),he.clear(),ke.clear();for(let g of p.values())g.inner.form.dispose()}};return $={...$,warnings:Kt()},$.recordId==null&&Rn(),$.recordId==null&&oe(Promise.resolve().then(X)),{form:rt,take(g,u){if(u!=="start")return Et({...un(n.fields,m()),...g},{},u==="fresh");V=on({...un(n.fields,m()),...ye(g)});let F=nt(ye(V),"start");U({values:F,dirty:[],errors:{},warnings:Wt(F,Kt),warning:null,warningField:null})},errorsNow:()=>Lt(),show(g){JSON.stringify(g)!==JSON.stringify($.errors)&&U({errors:g})}}}function vl(e,t){let n={};for(let[r,i]of Object.entries(e))r.startsWith(`${t}.`)&&(n[r.slice(t.length+1)]=i);return n}function xl(e,t){let n=a=>a==null||a===!1||a==="";if(n(e)||n(t))return n(e)===n(t)?0:n(e)?-1:1;let r=a=>a!==null&&typeof a=="object"&&!Array.isArray(a)&&"label"in a?String(a.label):a,i=r(e),o=r(t);return typeof i=="number"&&typeof o=="number"?i-o:typeof i=="boolean"&&typeof o=="boolean"?Number(i)-Number(o):String(i).localeCompare(String(o))}function wl(e,t,n){for(let r of n){let i=xl(e[r.field],t[r.field]);if(i)return r.desc?-i:i}return 0}function Ma(e){return e.readonly===!0||e.compute!==void 0}function kl(e,t){let n=[],r=new Map(e.filter(o=>o.id!==void 0).map(o=>[o.key,o]));for(let o of t){let a=r.get(o.key);if(o.id===void 0||!a){n.push({op:"create",key:o.key,values:ye(o.values)});continue}let d={};for(let[s,l]of Object.entries(o.values))JSON.stringify(l)!==JSON.stringify(a.values[s])&&(d[s]=ye(l));Object.keys(d).length&&n.push({op:"update",id:o.id,values:d})}let i=new Set(t.map(o=>o.key));for(let o of e)o.id!==void 0&&!i.has(o.key)&&n.push({op:"delete",id:o.id});return n}function Sl(e,t){let n=new Set(e.map(i=>i.id)),r=new Set(t.map(i=>i.id));return[...t.filter(i=>!n.has(i.id)).map(i=>({op:"link",id:i.id})),...e.filter(i=>!r.has(i.id)).map(i=>({op:"unlink",id:i.id}))]}function Ll(e){let t=new Map,n=(i,o,a,d)=>{let s=i.roles;t.set(i.id,{id:i.id,parent:o,kind:a,field:d.field,...s?.length?{roles:s}:{},invisible:Ye(d.invisible),readonly:Ye(d.readonly),required:Ye(d.required),source:i})},r=(i,o)=>{for(let a of i)if(a.type==="field"){n(a,o,"field",{invisible:a.invisible,readonly:a.readonly,required:a.required,field:a.field});for(let d of[...a.selectedButtons??[],...a.controlButtons??[]])n(d,a.id,"button",{invisible:d.invisible})}else if(a.type==="button")n(a,o,"button",{invisible:a.invisible});else if(a.type==="tabs"){n(a,o,"other",{invisible:a.invisible});for(let d of a.children)n(d,a.id,"other",{invisible:d.invisible}),r(d.children,d.id)}else a.type==="section"?(n(a,o,"other",{invisible:a.invisible,readonly:a.readonly}),r(a.children,a.id)):a.type==="form"?n(a,o,"form",{invisible:a.invisible,readonly:a.readonly}):n(a,o,"other",{invisible:a.invisible})};if(e.type==="tabs")return r([e],""),t.get(e.id).parent=null,t;if(n(e,null,"other",{}),e.type==="wizard")for(let i of e.children)n(i,e.id,"step",{invisible:i.invisible}),r(i.children,i.id);else if(e.type==="sections"){r(e.children,e.id);for(let i of e.footer??[])n(i,e.id,"button",{invisible:i.invisible})}else if(e.type==="list")for(let i of e.actions??[])n(i,e.id,"button",{invisible:i.invisible});else{let i=(o,a)=>{a&&n({id:o},e.id,"field",{field:a})};i("#title",e.title?.field),i("#subtitle",e.title?.subtitleField),i("#avatar",e.title?.avatarField),e.statusbar&&n({id:"#statusbar",...e.statusbar.roles?{roles:e.statusbar.roles}:{}},e.id,"field",{field:e.statusbar.field,invisible:e.statusbar.invisible});for(let o of[...e.buttons??[],...e.footer??[]])n(o,e.id,"button",{invisible:o.invisible});for(let o of e.statButtons??[])n(o,e.id,"stat",{invisible:o.invisible});for(let o of[...e.ribbon?[e.ribbon]:[],...e.ribbons??[]])n(o,e.id,"other",{invisible:o.invisible});for(let o of e.alerts??[]){n(o,e.id,"other",{invisible:o.invisible});for(let a of o.buttons??[])n(a,o.id,"button",{invisible:a.invisible})}for(let o of e.badges??[])n(o,e.id,"other",{invisible:o.invisible});r([...e.title?.above??[],...e.title?.before??[],...e.title?.after??[],...e.title?.below??[]],e.id),r(e.children,e.id),e.sidePanel&&n(e.sidePanel,e.id,"other",{invisible:e.sidePanel.invisible});for(let o of e.toolbar?.menu??[])if(n(o,e.id,"button",{invisible:o.invisible}),o.builtin==="archive"||o.builtin==="unarchive"){let a=t.get(o.id),d=a.invisible,s=o.builtin==="unarchive";a.invisible={...d,evaluate:(l,f)=>l.active===!1!==s||d.evaluate(l,f)}}e.attachmentPreview&&n({id:"#preview",...e.attachmentPreview},e.id,"other",{invisible:e.attachmentPreview.invisible})}return t}function El(e,t){if(e.type==="boolean")return t===!0?"Yes":"No";if(t==null||t===!1)return"";if(e.type==="selection")return e.options.find(r=>r.value===t)?.label??String(t);if(e.type==="html")return String(t).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();let n=r=>r&&typeof r=="object"&&"label"in r?String(r.label):r&&typeof r=="object"&&"name"in r?String(r.name):String(r);return Array.isArray(t)?t.map(n).join(", "):n(t)}var Ca=new Map;function Oa(e,t){let n=`${e}:${t}`,r=Ca.get(n);return r||(r=new Intl.NumberFormat(e,{numberingSystem:"latn",minimumFractionDigits:t,maximumFractionDigits:t}),Ca.set(n,r)),r}function wn(e,t,n,r="en"){try{return new Intl.NumberFormat(r,{style:"currency",currency:t,currencyDisplay:"narrowSymbol",numberingSystem:"latn",minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}catch{return`${t} ${ut(e,n,r)}`}}function Rl(e){let t=Oa(e,1).formatToParts(12345.6);return{group:t.find(n=>n.type==="group")?.value??",",decimal:t.find(n=>n.type==="decimal")?.value??"."}}function ut(e,t,n="en"){return Oa(n,t).format(e)}function zt(e,t="en"){let{group:n,decimal:r}=Rl(t),i=e.replace(/[٠-٩]/g,o=>String(o.charCodeAt(0)-1632)).replace(/[۰-۹]/g,o=>String(o.charCodeAt(0)-1776)).replace(/٫/g,r).replace(/٬/g,n);return i=i.replace(/[\s\u00a0\u202f]/g,""),n.trim()&&(i=i.split(n).join("")),r==="."?i:i.split(r).join(".")}var Va={};var Fl={search:"Search\u2026",noResults:"No results",remove:"Remove {name}",clear:"Clear {label}",addLine:"Add a line",addSection:"Add a section",addNote:"Add a note",deleteLine:"Delete line",lineN:"line {n}",total:"Total",lineProblem:"Line {n}: {message}",moreProblems:"and {n} more",chooseColumns:"Choose columns",createNamed:"Create \u201C{name}\u201D",createAndEdit:"Create and edit\u2026",searchMore:"Search more\u2026",openNamed:"Open {name}",openLine:"Open line",chooseLine:"Choose {name}",chooseAllLines:"Choose every line",linesChosen:"{n} chosen",moreSteps:"More",timeInStep:"{time} in this step",chooseDate:"Choose a date",other:"Other:",otherAnswer:"Your own answer",clearSelection:"Clear selection",previousMonth:"Previous month",nextMonth:"Next month",weekShort:"Wk",week:"Week",formatting:"Formatting",bold:"Bold",italic:"Italic",underline:"Underline",textStyle:"Text style",paragraph:"Paragraph",heading:"Heading",subheading:"Subheading",bulletList:"Bulleted list",numberList:"Numbered list",alignLeft:"Align left",alignCenter:"Align centre",alignRight:"Align right",link:"Link",linkAddress:"Link address",applyLink:"Apply",removeLink:"Remove link",upload:"Upload a file",uploadImage:"Add a photo",replace:"Replace",removeFile:"Remove",dropHere:"or drop it here",addFiles:"Add files",addPhotos:"Add photos",dropThem:"or drop them here",upToSize:"up to {size}",upToEach:"up to {size} each",upToFiles:"up to {max} files",fileCount:"{n} files",oneFile:"1 file",fileCountOf:"{n} of {max} files",tooMany:"Up to {max} files: {n} not added",alreadyAdded:"{name}: already added",removeAsk:"Remove {name}?",keep:"Keep",previous:"Previous",next:"Next",download:"Download",close:"Close",fileAt:"{n} of {total}",noPreview:"No preview for this kind of file",showFilesAs:"Show files as",asList:"List",asCards:"Cards",asThumbnails:"Thumbnails",invalidJson:"Not valid JSON",signaturePad:"Signature pad: draw your signature",signHere:"Sign here",typeSignature:"Or type your name",clearDrawing:"Clear",undo:"Undo",uploadSignature:"Upload a picture",notAnswered:"Not answered",moveUp:"Move {label} up",moveDown:"Move {label} down",movedTo:"{label} moved to place {n} of {total}",addressStreet:"Street address",addressCity:"City",addressLine2:"Address line 2",addressRegion:"State or region",addressPostcode:"Postcode",addressCountry:"Country",entry:"Entry {n}",addAnother:"Add another",copy:"Copy {name}",removed:"{name} removed",loadingChoices:"Loading choices\u2026",choicesFailed:"Load the choices again",notOffered:"{name}: no longer offered",yes:"Yes",no:"No",upTo:"Up to {n}",keepOrder:"Keep this order",ofMax:"{n} of {max}",charactersLeft:"Characters left: {n}",colourNames:"No colour|Red|Orange|Yellow|Cyan|Purple|Almond|Teal|Blue|Raspberry|Green|Violet",copyValue:"Copy",copied:"Copied",noDocument:"No document yet",openInNewTab:"Open in a new tab",account:"Account",share:"Percentage",addAccount:"Add an account",sharesOff:"The shares add up to {n}, not 100%",untaxed:"Untaxed amount",paidOn:"Paid on {date}",amountDue:"Amount due",paymentOf:"Payment of {amount}",journal:"Journal",memo:"Memo",openPayment:"Open",addProperty:"Add a property",propertyName:"Property name",propertyType:"Kind",propertyTypes:"Text|Long text|Whole number|Number|Yes or no|Date",add:"Add",cancel:"Cancel",loading:"Loading\u2026"},Ke={en:Fl,...Va};function ve(e){return(t,n={},...r)=>{let i=e.createElement(t);for(let[o,a]of Object.entries(n))a!==void 0&&i.setAttribute(o,a);return i.append(...r),i}}var Fe=(e,t)=>e??Ke[t??"en"]??Ke.en,Te=(e,t)=>e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n);function Ae(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}function kt(e,t){e.hidden!==t&&(e.hidden=t)}function tt(e,t){e.textContent!==t&&(e.textContent=t)}function ze(e,t){Ae(e,"aria-invalid",String(t.invalid)),Ae(e,"aria-describedby",t.describedBy||null)}function Hr(e){let t=e("div",{class:"fd-announce",role:"status","aria-live":"polite"});return{element:t,say(n){t.textContent="",t.textContent=n}}}var Nt=e=>e.closest("[dir]")?.getAttribute("dir")==="rtl";function Zt(e,t,n,r,i=!0){let o=ve(e)("button",{type:"button",class:"fd-choice-clear",hidden:""},t.clearSelection);o.addEventListener("click",n);let a=i&&r.options?.clear!==!1,d=!1;return{button:o,allow(s){d=a&&!s.required&&!s.readonly},show(s){kt(o,!(d&&s))}}}function zr(e,t){let n=e("span"),r=e("button",{type:"button",class:"fd-button fd-button-link"},t.removeFile),i=e("button",{type:"button",class:"fd-button fd-button-link"},t.keep),o=e("div",{class:"fd-file-confirm",hidden:""},n,r,i),a=s=>{},d=s=>{o.hidden=!0,a(s)};return r.addEventListener("click",()=>d(!0)),i.addEventListener("click",()=>d(!1)),o.addEventListener("keydown",s=>s.key==="Escape"&&d(!1)),{element:o,ask(s,l){n.textContent=s,a=l,o.hidden=!1,i.focus()}}}var Al=180,Br=8;function rr(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>t[r]??n)}function qr(e){let{document:t,id:n,labels:r}=e,i=`${n}-list`,o=t.createElement("input");Object.assign(o,{id:n,className:"fd-input fd-combo-input",autocomplete:"off"}),o.setAttribute("role","combobox"),o.setAttribute("aria-autocomplete","list"),o.setAttribute("aria-expanded","false"),o.setAttribute("aria-controls",i),o.placeholder=e.placeholder||r.search;let a=t.createElement("ul");a.id=i,a.className="fd-listbox",a.setAttribute("role","listbox"),a.hidden=!0;let d=t.createElement("div");d.className="fd-combo",d.append(o,a);let s="",l=null,f="",c=new Map,x=!1,b=[],y=-1,S=0,m,k=!1;function h(){if(a.replaceChildren(),b.forEach((w,p)=>{let T=t.createElement("li");T.id=`${i}-${p}`,T.setAttribute("role","option"),T.setAttribute("aria-selected",String(p===y)),T.className=`fd-option${p===y?" fd-active":""}${w===l||c.has(w)?" fd-option-create":""}`,T.textContent=w.label,T.addEventListener("mousedown",C=>C.preventDefault()),T.addEventListener("click",()=>v(p)),a.append(T)}),!b.length){let w=t.createElement("li");w.className="fd-empty",w.textContent=r.noResults,a.append(w)}y>=0?o.setAttribute("aria-activedescendant",`${i}-${y}`):o.removeAttribute("aria-activedescendant")}function E(){a.hidden=!1,o.setAttribute("aria-expanded","true")}function L(){clearTimeout(m),S++,a.hidden=!0,o.setAttribute("aria-expanded","false"),o.removeAttribute("aria-activedescendant"),y=-1}function v(w){let p=b[w];if(!p)return;let T=f;if(L(),x=!1,p===l&&e.create){e.create(T).then(e.pick,()=>{});return}let C=c.get(p);if(C){C(T).then(W=>W&&e.pick(W),()=>{});return}e.pick(p)}function R(w){clearTimeout(m);let p=++S;m=setTimeout(async()=>{let T=await e.search(w).catch(()=>[]);if(p!==S||t.activeElement!==o)return;let C=b[y],W=C&&C!==l&&!c.has(C)?C.id:void 0,O=e.exclude?.()??new Set,H=T.filter(j=>!O.has(j.id)),M=e.shown!==void 0&&H.length>e.shown;b=M?H.slice(0,e.shown):H;let P=w.trim();l=null,e.create&&P&&!T.some(j=>j.label.trim().toLowerCase()===P.toLowerCase())&&(f=P,l={id:"__create__",label:rr(r.createNamed,{name:P})},b=[...b,l]),f=P,c=new Map((e.more?.(P,M)??[]).map((j,_)=>[{id:`__more_${_}__`,label:j.label},j.act])),b=[...b,...c.keys()],y=W===void 0?-1:b.findIndex(j=>j.id===W),h(),E()},Al)}return o.addEventListener("input",()=>{x=!0,k||R(o.value)}),o.addEventListener("focus",()=>{k||R("")}),o.addEventListener("keydown",w=>{if(!k)switch(w.key){case"ArrowDown":case"ArrowUp":{if(w.preventDefault(),a.hidden)return R(o.value);if(!b.length)return;y=(y+(w.key==="ArrowDown"?1:-1)+b.length)%b.length,h(),a.children[y]?.scrollIntoView?.({block:"nearest"});return}case"Enter":!a.hidden&&y>=0&&(w.preventDefault(),v(y));return;case"Escape":a.hidden||w.preventDefault(),L(),x=!1,o.value=s;return;case"Backspace":o.value===""&&e.onEmptyBackspace?.();return}}),o.addEventListener("blur",()=>{S++,clearTimeout(m),L();let w=x&&o.value.trim()===""&&s!=="";x=!1,w?e.onCommitEmpty?.():o.value=s}),{element:d,input:o,setText(w){s=w,!x&&o.value!==w&&(o.value=w)},setReadonly(w){k=w,o.readOnly!==w&&(o.readOnly=w),w&&L()},close:L}}function In(e,t,n){let r=n??e.createElement("span");if(r.className="fd-link-avatar",r.setAttribute("aria-hidden","true"),!t)return r.hidden=!0,r.replaceChildren(),r;if(r.hidden=!1,t.avatar){let i=e.createElement("img");i.src=t.avatar,i.alt="",r.replaceChildren(i)}else{let i=t.label.trim().split(/\s+/).filter(Boolean);r.textContent=(i.length>1?i[0][0]+i[i.length-1][0]:i[0]?.[0]??"").toUpperCase()}return r}function _r(e,t){let n=e.ownerDocument;e.replaceChildren(...t.split(`
|
|
4
|
+
`).map(r=>{let i=n.createElement("div");return i.textContent=r,i}))}function Pa(e){let t=e.options??{};return{avatar:t.avatar===!0,details:t.details===!0,colors:t.colors===!0,opens:t.open!==!1}}function Ia(e,t,n){return n.options?.create!==!1&&e.canCreate(t)?r=>e.quickCreate(t,r):void 0}var ir=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ke.en,dialogs:d})=>{let s=n.type==="many2one"?n.relation:"",l=Pa(r),f=l.opens&&!!d&&d.canOpen(s),c=!1,x=qr({document:o,id:i,labels:a,search:h=>e.search(t,h,Br+1),shown:Br,pick:h=>e.setValue(t,h),onCommitEmpty:()=>e.setValue(t,null),create:Ia(e,t,r),placeholder:r.placeholder,more:(h,E)=>{if(!d||c)return[];let L=[];return h&&f&&r.options?.create!==!1&&L.push({label:a.createAndEdit,act:v=>{let R=e.createValues(t);return d.openRecord(s,{name:v,title:n.label,...Object.keys(R).length?{values:R}:{}})}}),E&&L.push({label:a.searchMore,act:()=>d.searchMore({title:n.label,search:(v,R)=>e.search(t,v,R)})}),L}}),b=f?o.createElement("button"):null;b&&(b.type="button",b.className="fd-combo-open",b.textContent="\u2197",b.hidden=!0,b.addEventListener("click",async()=>{let h=e.getState().values[t];if(!h||!d)return;let E=await d.openRecord(s,{recordId:h.id,title:h.label});E&&E.label!==h.label&&e.setValue(t,E)}));let y=o.createElement("button");y.type="button",y.className="fd-combo-clear",y.textContent="\xD7",y.setAttribute("aria-label",rr(a.clear,{label:n.label})),y.addEventListener("click",()=>{e.setValue(t,null),x.input.focus()}),x.element.append(y,...b?[b]:[]);let S=l.avatar?In(o,null):null;S&&(x.element.prepend(S),x.element.setAttribute("data-avatar",""));let m=l.details?o.createElement("div"):null,k=x.element;return m&&(m.className="fd-link-details",m.hidden=!0,k=o.createElement("div"),k.className="fd-link",k.append(x.element,m)),{element:k,focus:()=>x.input.focus(),update(h){let E=h.value;if(S&&In(o,E,S),m){let L=E?.details?.trim()??"";kt(m,!L),m.textContent!==L.replace(/\n/g,"")&&_r(m,L)}c=h.readonly,x.setText(E?.label??""),x.setReadonly(h.readonly),kt(y,!E||h.readonly),b&&(kt(b,!E),E&&Ae(b,"aria-label",rr(a.openNamed,{name:E.label}))),Ae(x.input,"aria-invalid",String(h.invalid)),Ae(x.input,"aria-required",String(h.required)),h.describedBy&&Ae(x.input,"aria-describedby",h.describedBy)}}},Ur=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ke.en,dialogs:d})=>{let s=n.type==="many2many"?n.relation:"",l=Pa(r),f=()=>e.getState().values[t]??[],c=o.createElement("div");c.className="fd-tags",c.setAttribute("role","group");let x=o.createElement("ul");x.className="fd-chips";let b=qr({document:o,id:i,labels:a,search:k=>e.search(t,k,Br+1+f().length),shown:Br,pick:k=>{f().some(h=>h.id===k.id)||e.setValue(t,[...f(),k]),b.input.value=""},exclude:()=>new Set(f().map(k=>k.id)),onEmptyBackspace:()=>{let k=f();k.length&&e.setValue(t,k.slice(0,-1))},create:Ia(e,t,r),placeholder:r.placeholder,more:(k,h)=>d&&h?[{label:a.searchMore,act:()=>d.searchMore({title:n.label,search:(E,L)=>e.search(t,E,L)})}]:[]}),y=l.opens&&d&&d.canOpen(s)?async k=>{let h=await d.openRecord(s,{recordId:k.id,title:k.label});h&&h.label!==k.label&&e.setValue(t,f().map(E=>E.id===k.id?h:E))}:void 0;c.append(x,b.element);let S=!1,m="";return{element:c,focus:()=>b.input.focus(),update(k){let h=k.value??[],E=JSON.stringify([k.readonly,h]);S=k.readonly,b.setReadonly(S),b.element.hidden=S,b.input.setAttribute("aria-invalid",String(k.invalid)),k.describedBy&&b.input.setAttribute("aria-describedby",k.describedBy),E!==m&&(m=E,Da(x,h,S,a,L=>e.setValue(t,f().filter(v=>v.id!==L.id)),y,l),b.setText(""))}}};function Da(e,t,n,r,i,o,a={}){let d=e.ownerDocument;e.replaceChildren(...t.map(s=>{let l=d.createElement("li");l.className="fd-chip",a.colors&&typeof s.color=="number"&&s.color>=1&&s.color<=11&&l.setAttribute("data-color",String(Math.trunc(s.color))),a.avatar&&l.append(In(d,s));let f=d.createElement(o?"button":"span");if(f.className="fd-chip-label",f.textContent=s.label,o&&(f.type="button",f.setAttribute("aria-label",rr(r.openNamed,{name:s.label})),f.addEventListener("click",()=>o(s))),l.append(f),!n){let c=d.createElement("button");c.type="button",c.className="fd-chip-remove",c.textContent="\xD7",c.setAttribute("aria-label",rr(r.remove,{name:s.label})),c.addEventListener("click",()=>i(s)),l.append(c)}return l}))}var qi=({form:e,name:t,node:n,id:r,document:i,labels:o=Ke.en})=>{let a=n.options??{},d=typeof a.separator=="string"&&a.separator?a.separator:",",s=Array.isArray(a.suggestions)?a.suggestions.filter(k=>typeof k=="string"):[],l=k=>typeof k=="string"?k.split(d).map(h=>h.trim()).filter(h=>h!==""):[],f=()=>l(e.getState().values[t]),c=k=>e.setValue(t,k.length?k.join(`${d} `):null),x=k=>{let h=k.trim(),E=f();h&&!E.some(L=>L.toLowerCase()===h.toLowerCase())&&!(E.length>=a.max)&&c([...E,h])},b=i.createElement("div");b.className="fd-tags",b.setAttribute("role","group");let y=i.createElement("ul");y.className="fd-chips";let S=qr({document:i,id:r,labels:o,placeholder:n.placeholder,search:async k=>{let h=new Set(f().map(L=>L.toLowerCase())),E=k.trim().toLowerCase();return s.filter(L=>!h.has(L.toLowerCase())&&L.toLowerCase().includes(E)).map(L=>({id:L,label:L}))},pick:k=>{x(k.label),S.input.value=""},onEmptyBackspace:()=>{let k=f();k.length&&c(k.slice(0,-1))}});S.input.addEventListener("keydown",k=>{k.key!=="Enter"||k.defaultPrevented||S.input.value.trim()===""||(k.preventDefault(),x(S.input.value),S.input.value="",S.close())}),S.input.addEventListener("input",()=>{let k=S.input.value.split(d);if(!(k.length<2)){for(let h of k.slice(0,-1))x(h);S.input.value=k[k.length-1].trimStart()}}),S.input.addEventListener("change",()=>{S.input.value.trim()&&x(S.input.value)}),b.append(y,S.element);let m="";return{element:b,focus:()=>S.input.focus(),update(k){let h=l(k.value);S.setReadonly(k.readonly),S.element.hidden=k.readonly||h.length>=a.max,S.input.setAttribute("aria-invalid",String(k.invalid)),k.describedBy&&S.input.setAttribute("aria-describedby",k.describedBy);let E=JSON.stringify([k.readonly,h]);if(E===m)return;m=E;let L=i.activeElement===S.input;Da(y,h.map(v=>({id:v,label:v})),k.readonly,o,v=>c(f().filter(R=>R!==v.label))),S.setText(""),L&&S.element.hidden&&y.querySelector("li:last-child button")?.focus()}}},_i=({form:e,name:t,id:n,document:r})=>{let i=r.createElement("div");i.id=n,i.className="fd-choices fd-choices-checkbox",i.setAttribute("role","group");let o=[],a={readonly:!1,value:[]},d=()=>{let s=new Set(a.value.map(l=>l.id));for(let{record:l,box:f}of o)f.checked=s.has(l.id),f.disabled=a.readonly};return e.search(t,"",50).then(s=>{o=s.map((l,f)=>{let c=r.createElement("input");c.type="checkbox",c.id=`${n}-${f}`,c.addEventListener("change",()=>{let y=e.getState().values[t]??[];e.setValue(t,c.checked?[...y,l]:y.filter(S=>S.id!==l.id))});let x=r.createElement("label");x.className="fd-choice",x.htmlFor=c.id;let b=r.createElement("span");return b.textContent=l.label,x.append(c,b),i.append(x),{record:l,box:c}}),d()}),{element:i,focus:()=>i.querySelector("input")?.focus(),update(s){a={readonly:s.readonly,value:s.value??[]},d()}}},Ui=e=>{let{form:t,name:n,field:r,id:i,document:o,labels:a=Ke.en}=e,d=r.type==="reference"?r.models:[],s=o.createElement("div");s.className="fd-reference";let l=o.createElement("select");l.className="fd-input fd-select",l.setAttribute("aria-label",r.label),l.append(o.createElement("option"));for(let x of d){let b=o.createElement("option");b.value=String(x.value),b.textContent=x.label,l.append(b)}let f="";l.addEventListener("change",()=>{f=l.value,t.setValue(n,null)});let c=qr({document:o,id:i,labels:a,placeholder:e.node.placeholder,search:x=>f?t.search(n,x,8,{model:f}):Promise.resolve([]),pick:x=>t.setValue(n,{model:f,id:x.id,label:x.label}),onCommitEmpty:()=>t.setValue(n,null)});return s.append(l,c.element),{element:s,focus:()=>f?c.input.focus():l.focus(),update(x){let b=x.value;b&&(f=b.model),l.value=f,l.disabled=x.readonly,c.setText(b?.label??""),c.setReadonly(x.readonly||!f)}}};var Wa=e=>String(e).padStart(2,"0");function Ha(e){let t=Math.round(Math.abs(e)*60);return`${e<0&&t?"-":""}${Wa(Math.floor(t/60))}:${Wa(t%60)}`}function Tl(e,t="en"){let n=zt(e.trim(),t);if(n==="")return null;let r=/^(-?)(\d+):(\d{1,2})$/.exec(n);if(r){let i=Number(r[3]);if(i>59)return e.trim();let o=Number(r[2])+i/60;return r[1]?-o:o}if(/^-?(\d+\.?\d*|\.\d+)$/.test(n))return Number(n);if(!/^-?(\d+:?)?\.?$/.test(n))return e.trim()}var ja=new Map;function za(e,t,n){let r=`${e}:${t}:${n}`,i=ja.get(r);return i||(i=new Intl.NumberFormat(e,{style:n,numberingSystem:"latn",minimumFractionDigits:0,maximumFractionDigits:t}),ja.set(r,i)),i}function $l(e,t="en",n=2){return za(t,n,"percent").format(e)}var Ba=e=>e.type==="float"?e.digits?.[1]??2:2;function qa(e,t){let{form:n,name:r,node:i,id:o,document:a}=e,d=ve(a),s=d("input",{id:o,type:"text",class:`fd-input fd-number-input ${t.className}`,autocomplete:"off",inputmode:t.inputMode});i.placeholder&&(s.placeholder=i.placeholder);let l=b=>typeof b=="number"?t.show(b):b==null?"":String(b);s.addEventListener("input",()=>{let b=t.parse(s.value);b!==void 0&&n.setValue(r,b)}),s.addEventListener("blur",()=>{s.value=l(n.getState().values[r])});let f=typeof i.options?.suffix=="string"&&i.options.suffix?i.options.suffix:t.unit,c=f?d("span",{class:"fd-unit",id:`${o}-unit2`},f):null,x=c?d("span",{class:"fd-number"},s,c):s;return c&&s.style.setProperty("padding-inline-end",`calc(var(--fd-pad-x) + ${f?.length??0}ch + 4px)`),{element:x,focus:()=>s.focus(),update(b){let y=a.activeElement===s,S=t.parse(s.value);if(!(y&&(S===void 0||S===b.value))){let m=l(b.value);s.value!==m&&(s.value=m)}s.readOnly!==b.readonly&&(s.readOnly=b.readonly),Ae(s,"aria-required",String(b.required)),ze(s,{...b,describedBy:[b.describedBy,c?.id].filter(Boolean).join(" ")})}}}var _a=e=>{let t=e.locale??"en";return qa(e,{show:Ha,parse:n=>Tl(n,t),inputMode:"text",className:"fd-duration"})},Ua=e=>{let t=e.locale??"en",n=Ba(e.field);return qa(e,{show:r=>za(t,n,"decimal").format(Math.round(r*100*10**n)/10**n),parse(r){let i=zt(r.trim(),t).replace(/%$/,"");if(i==="")return null;if(/^-?(\d+\.?\d*|\.\d+)$/.test(i))return Math.round(Number(i)/100*1e10)/1e10;if(!/^-?\.?$/.test(i))return r.trim()},unit:"%",inputMode:"decimal",className:"fd-percentage"})};function Ka(e,t,n,r,i={}){if(typeof n!="number"||e!=="duration"&&e!=="percentage")return null;let o=typeof i.suffix=="string"&&i.suffix?` ${i.suffix}`:"";return e==="duration"?Ha(n)+o:$l(n,r,Ba(t))}var Ki=e=>typeof e?.model=="string"?e.model:"account.analytic.account";function Ga(e){return[...new Set(Gi(e).flatMap(([t])=>t.split(",")))].map(t=>/^\d+$/.test(t)?Number(t):t)}function Kr(e,t="en",n){let r=i=>`${ut(i,Number.isInteger(i)?0:2,t)}%`;return Gi(e).map(([i,o])=>{let a=n?i.split(",").map(d=>n(d)??`#${d}`).join(" \xB7 "):"";return a?`${a} ${r(o)}`:r(o)}).join(n?", ":" \xB7 ")}var Gi=e=>e&&typeof e=="object"&&!Array.isArray(e)?Object.entries(e).map(([t,n])=>[t,typeof n=="number"?n:Number(n)||0]):[],Ja=e=>{let{form:t,name:n,node:r,id:i,document:o,labels:a,locale:d="en"}=e,s=ve(o),l=Fe(a,d),f=Ki(r.options),c=new Map,x=W=>W.split(",").map(O=>c.get(O)??`#${O}`).join(" \xB7 "),b=W=>`${ut(W,Number.isInteger(W)?0:2,d)}%`,y=s("tbody"),S=s("td",{class:"fd-distribution-total"}),m=s("table",{class:"fd-lines-table fd-distribution-table"},s("thead",{},s("tr",{},s("th",{scope:"col"},l.account),s("th",{scope:"col",class:"fd-distribution-share"},l.share),s("th",{class:"fd-lines-tools"}))),y,s("tfoot",{},s("tr",{class:"fd-lines-totals"},s("td",{},l.total),S,s("td")))),k=s("button",{type:"button",class:"fd-button fd-button-link fd-lines-add fd-distribution-add"},`+ ${l.addAccount}`),h=s("div",{class:"fd-warning fd-distribution-off",role:"status",hidden:""}),E=s("div",{id:i,class:"fd-distribution",role:"group"},s("div",{class:"fd-lines-scroll"},m),k,h),L=[],v=!1;function R(){let W={};for(let O of L)O.key&&(W[O.key]=O.share);t.setValue(n,L.some(O=>O.key)?W:null)}function w(W,O){let H=L.length,M=`${i}-${H}-${Math.random().toString(36).slice(2,7)}`,P={key:W,share:O},j={...t,getState:()=>({...t.getState(),values:{account:P.key?{id:P.key,label:x(P.key)}:null}}),setValue:(D,V)=>{let z=V;P.key=z?String(z.id):"",z&&c.set(String(z.id),z.label),R()},search:(D,V,z)=>t.search(n,V,z,{model:f}),canCreate:()=>!1},_={type:"many2one",label:l.account,relation:f};return P.account=ir({...e,form:j,name:"account",field:_,node:{type:"field",id:`${r.id}.account`,field:"account",options:{create:!1}},id:M}),P.input=s("input",{type:"text",class:"fd-input fd-number-input fd-share",inputmode:"decimal",autocomplete:"off","aria-label":l.share}),P.input.addEventListener("input",()=>{let D=zt(P.input.value.trim(),d);/^\d+\.?\d*$|^\.\d+$/.test(D)&&(P.share=Number(D),R())}),P.remove=s("button",{type:"button",class:"fd-line-delete","aria-label":l.deleteLine},"\xD7"),P.remove.addEventListener("click",()=>{L=L.filter(D=>D!==P),P.account.destroy?.(),P.element.remove(),R(),C()}),P.element=s("tr",{},s("td",{},s("label",{class:"fd-sr-only",for:M},l.account),P.account.element),s("td",{class:"fd-distribution-share"},s("span",{class:"fd-number"},P.input,s("span",{class:"fd-unit"},"%"))),s("td",{class:"fd-lines-tools"},P.remove)),P}k.addEventListener("click",()=>{let W=Math.max(0,100-L.reduce((H,M)=>H+M.share,0)),O=w("",Math.round(W*100)/100);L.push(O),y.append(O.element),C(),O.account.focus()});let p="";function T(W){let O=[...new Set(W.flatMap(M=>M.split(",")))].filter(M=>!c.has(M));if(!O.length||O.join()===p)return;p=O.join();let H=O.map(M=>/^\d+$/.test(M)?Number(M):M);t.search(n,"",O.length,{model:f,ids:H}).then(M=>{for(let P of M)c.set(String(P.id),P.label);C()},()=>{})}function C(){let W=L.reduce((H,M)=>H+M.share,0);tt(S,b(Math.round(W*100)/100));let O=L.some(H=>H.key)&&Math.abs(W-100)>.001;tt(h,O?Te(l.sharesOff,{n:b(Math.round(W*100)/100)}):""),kt(h,!O),kt(k,v);for(let H of L){H.account.update({value:H.key?{id:H.key,label:x(H.key)}:null,values:{},readonly:v,required:!1,invalid:!1});let M=ut(H.share,Number.isInteger(H.share)?0:2,d);o.activeElement!==H.input&&H.input.value!==M&&(H.input.value=M),H.input.readOnly=v,v?H.remove.remove():H.remove.isConnected||H.element.lastElementChild?.append(H.remove)}}return{element:E,focus:()=>(L[0]?.input??k).focus(),destroy:()=>L.forEach(W=>W.account.destroy?.()),update(W){v=W.readonly;let O=Gi(W.value);if(!(O.length===L.filter(M=>M.key).length&&O.every(([M,P],j)=>L.filter(_=>_.key)[j]?.key===M&&L.filter(_=>_.key)[j]?.share===P))){for(let P of L)P.account.destroy?.();let M=L.filter(P=>!P.key);L=O.map(([P,j])=>w(P,j)),L.push(...M.map(P=>w("",P.share))),y.replaceChildren(...L.map(P=>P.element))}T(O.map(([M])=>M)),C()}}};function Ya(e){let t=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(e);if(!t)return null;let[,n,r,i,o,a]=t;return new Date(Number(n),Number(r)-1,Number(i),Number(o??0),Number(a??0))}function Dn(e,t,n){if(e.type!=="monetary")return null;if(e.currency)return e.currency;if(!e.currencyField)return null;let r=e.currencyField.startsWith("parent.")?n?.[e.currencyField.slice(7)]:t[e.currencyField];return r&&typeof r=="object"&&"label"in r?r.label||null:typeof r=="string"&&r?r:null}function vt(e,t,n={},r="en",i){let o=(a,d)=>ut(a,d,r);if(t==null||t==="")return"";switch(e.type){case"many2one":case"reference":return t.label??"";case"many2many":return(t??[]).map(a=>a.label).join(", ");case"selection":{let a=d=>e.options.find(s=>s.value===d)?.label??String(d);return Array.isArray(t)?t.map(a).join(", "):a(t)}case"integer":return o(Number(t),0);case"float":return o(Number(t),e.digits?.[1]??2);case"monetary":{let a=Dn(e,n,i);return a?wn(Number(t),a,e.digits?.[1]??2,r):o(Number(t),e.digits?.[1]??2)}case"date":{let a=Ya(String(t));return a?new Intl.DateTimeFormat(r==="en"?"en-GB":r,{day:"numeric",month:"short",year:"numeric",numberingSystem:"latn"}).format(a):String(t)}case"datetime":{let a=Ya(String(t));return a?new Intl.DateTimeFormat(r==="en"?"en-GB":r,{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",numberingSystem:"latn"}).format(a):String(t)}case"html":return String(t).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();case"binary":case"image":return[t].flat().map(a=>a.name??"").join(", ");case"boolean":return t?"\u2713":"";default:return String(t)}}function or(e,t,n={},r="en",i,o={}){return o.widget==="distribution"&&e.type==="json"?Kr(t,r):Ka(o.widget,e,t,r,o.options)??vt(e,t,n,r,i)}var Ml=new Set(["progressbar","priority","dot","color","timer","badge"]);var Nl="http://www.w3.org/2000/svg",Xa={user:'<circle cx="12" cy="8" r="4"/><path d="M4 21c0-4 3.6-6 8-6s8 2 8 6"/>',users:'<circle cx="9" cy="8" r="3.5"/><path d="M2 20c0-3.5 3-5.5 7-5.5s7 2 7 5.5"/><circle cx="17" cy="9" r="2.5"/><path d="M16.5 14.5c3 0 5.5 1.6 5.5 4.5"/>',building:'<rect x="4" y="3" width="16" height="18" rx="1"/><path d="M9 21v-4h6v4M8 7h2M14 7h2M8 11h2M14 11h2"/>',home:'<path d="M3 11l9-7 9 7"/><path d="M5 10v10h14V10"/><path d="M10 20v-6h4v6"/>',phone:'<rect x="7" y="2" width="10" height="20" rx="2"/><path d="M11 18h2"/>',mail:'<rect x="3" y="5" width="18" height="14" rx="2"/><path d="M3 7l9 6 9-6"/>',pin:'<path d="M12 21s-7-6.5-7-12a7 7 0 0 1 14 0c0 5.5-7 12-7 12z"/><circle cx="12" cy="9" r="2.5"/>',globe:'<circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c3 3.2 3 14.8 0 18M12 3c-3 3.2-3 14.8 0 18"/>',calendar:'<rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 10h18M8 3v4M16 3v4"/>',clock:'<circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 3"/>',money:'<rect x="2" y="6" width="20" height="12" rx="2"/><circle cx="12" cy="12" r="3"/><path d="M6 9.5v0M18 14.5v0"/>',cart:'<path d="M3 4h2l2.5 11h11L21 7H6.4"/><circle cx="9" cy="19.5" r="1.5"/><circle cx="17" cy="19.5" r="1.5"/>',box:'<path d="M12 3l8 4.5v9L12 21l-8-4.5v-9z"/><path d="M4 7.5l8 4.5 8-4.5M12 12v9"/>',truck:'<path d="M2 6h12v10H2zM14 9h4l3 3.5V16h-7"/><circle cx="6.5" cy="17.5" r="1.8"/><circle cx="17" cy="17.5" r="1.8"/>',receipt:'<path d="M6 3h12v18l-3-2-3 2-3-2-3 2z"/><path d="M9 8h6M9 12h6"/>',file:'<path d="M6 3h8l4 4v14H6z"/><path d="M14 3v4h4M9 12h6M9 16h6"/>',edit:'<path d="M4 20h4L19 9l-4-4L4 16z"/><path d="M13.5 6.5l4 4"/>',tag:'<path d="M3 12V4h8l10 10-8 8z"/><circle cx="7.5" cy="8" r="1.5"/>',star:'<path d="M12 3l2.8 6 6.2.6-4.7 4.2 1.4 6.2L12 16.8 6.3 20l1.4-6.2L3 9.6 9.2 9z"/>',lock:'<rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V7a4 4 0 0 1 8 0v4"/>',check:'<path d="M5 12.5l4.5 4.5L19 7.5"/>',info:'<circle cx="12" cy="12" r="9"/><path d="M12 11v6M12 7.5v0"/>',warning:'<path d="M12 3l10 18H2z"/><path d="M12 10v5M12 18v0"/>',settings:'<path d="M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1"/><circle cx="15" cy="6" r="2"/><circle cx="9" cy="12" r="2"/><circle cx="17" cy="18" r="2"/>',chart:'<path d="M3 20h18M6 20v-8M11 20V5M16 20v-6"/>',link:'<path d="M10 14a4 4 0 0 0 5.6 0l3-3a4 4 0 0 0-5.6-5.6l-1 1"/><path d="M14 10a4 4 0 0 0-5.6 0l-3 3a4 4 0 0 0 5.6 5.6l1-1"/>',list:'<path d="M8 6h12M8 12h12M8 18h12M4 6v0M4 12v0M4 18v0"/>',chat:'<path d="M4 5h16v11H9l-5 4z"/>',search:'<circle cx="11" cy="11" r="6.5"/><path d="M16 16l5 5"/>',filter:'<path d="M3 5h18l-7 8.5V20l-4-2v-4.5z"/>',layers:'<path d="M12 3l9 5-9 5-9-5z"/><path d="M3 13l9 5 9-5"/>',thumb:'<path d="M7 21V10l4-8c1.6 0 2.6 1.3 2.2 3L12.5 9H19a2 2 0 0 1 2 2.3l-1.3 7.6a2.5 2.5 0 0 1-2.5 2.1H7zM7 10H3v11h4"/>'};function bt(e,t,n){let r=t?n?.[t]??Xa[t]:void 0;if(r===void 0)return null;let i=e.createElementNS(Nl,"svg");for(let[o,a]of Object.entries({viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",class:"fd-icon","data-icon":t}))i.setAttribute(o,a);return i.innerHTML=r,i}function Wn(e,t,n,r,i){if(n.type==="one2many"&&n.sequenceField)return e.moveLine(t,r,i);let o=[...e.getState().values[t]??[]],a=o.findIndex(d=>d.key===r);a<0||i<0||i>=o.length||i===a||(o.splice(i,0,...o.splice(a,1)),e.setValue(t,o))}var Za=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0;function es(e,t){return t==="section"?{...e,type:"char"}:{...e,type:"text"}}function Gr(e,t,n){let r=()=>(e.getState().values[t]??[]).find(i=>i.key===n)?.values??{};return{...e,getState:()=>({...e.getState(),values:r()}),setValue:(i,o)=>e.updateLine(t,n,i,o),search:(i,o,a,d)=>e.searchLine(t,n,i,o,a,d),canCreate:i=>e.canCreateLine(t,i),quickCreate:(i,o)=>e.quickCreateLine(t,i,o,n),createValues:i=>e.createValues(i,{lines:t,key:n})}}function ts(e,t){if(e.type!=="monetary"||!e.currencyField?.startsWith("parent."))return e;let{currencyField:n,...r}=e,i=Dn(e,{},t);return i&&/^[A-Z]{3}$/.test(i)?{...r,currency:i}:r}async function Jr(e,t,n,r,i,o){let a=e.page.fields[t],d=()=>e.getState().values[t]??[],s=x=>e.setValue(t,d().map(b=>b.key===r.key?{...b,values:{...b.values,...x}}:b));if(n.lineOpens==="record"&&r.id!==void 0&&i.canOpen(a.relation)){let x=await i.openRecord(a.relation,{recordId:r.id,title:a.label,withValues:!0}),b=Object.fromEntries(Object.entries(x?.values??{}).filter(([y])=>y in a.fields&&y!==a.sequenceField));Object.keys(b).length&&s(b);return}let l=Object.fromEntries(Object.entries(a.fields).filter(([x])=>x!==a.lineKinds?.field&&x!==a.sequenceField).map(([x,b])=>[x,ts(b,e.getState().values)])),f=e.getState(),c=await i.editValues({title:a.label,fields:l,values:r.values,readonly:o,recompute:x=>e.previewLine(t,r.key,x),parent:{values:f.values,fields:e.page.fields,id:f.recordId},...n.lineForm?{layout:n.lineForm.children}:{}});c&&s(c)}var Ji=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ke.en,locale:d,dialogs:s})=>{let l=n,f=l.lineKinds,c=ve(o),x=r.options??{},b=Za(x.min)??0,y=Za(x.max)??1/0,S=K=>typeof x[K]=="string"&&x[K].trim()?x[K]:null,m=new Map,k=!!(r.cells||r.rowTones||r.rowBold!==void 0||r.rowButtons||r.lineDelete!==void 0),h=(r.columns??Object.keys(l.fields)).filter(K=>l.fields[K]&&l.fields[K].type!=="one2many"&&K!==f?.field&&K!==l.sequenceField&&r.optionalColumns?.[K]!=="hide"),E=o.createElement("div");E.className="fd-lines",E.id=i,r.cards&&(E.dataset.cards=r.cards),r.fit&&(E.dataset.fit=r.fit),E.setAttribute("role","group");let L=o.createElement("div");L.className="fd-lines-scroll";let v=o.createElement("table");v.className="fd-lines-table";let R=o.createElement("thead"),w=o.createElement("tr"),p=!!r.selectedButtons?.length,T=new Set,C=p?c("input",{type:"checkbox",class:"fd-checkbox fd-line-pick fd-line-pick-all","aria-label":a.chooseAllLines}):null;w.append(c("th",{class:"fd-lines-grip"},...C?[C]:[]));for(let K of h){let U=o.createElement("th");U.scope="col",U.dataset.column=K,U.textContent=l.fields[K].label;let Q=r.cells?.[K]?.width;Q&&(U.style.width=`${Q}ch`),m.set(K,U),w.append(U)}let W=o.createElement("th");W.className="fd-lines-tools",w.append(W),R.append(w);let O=o.createElement("tbody");v.append(R,O);let H=(r.totals??[]).filter(K=>h.includes(K)),M=new Map,P=new Map;if(H.length){let K=o.createElement("tfoot"),U=o.createElement("tr");U.className="fd-lines-totals",U.append(o.createElement("td")),h.forEach((Q,ce)=>{let We=o.createElement("td");We.dataset.column=Q,P.set(Q,We),H.includes(Q)?M.set(Q,We):ce===0&&(We.textContent=a.total),U.append(We)}),U.append(o.createElement("td")),K.append(U),v.append(K)}L.append(v);let j=o.createElement("div");j.className="fd-lines-adds";let _=(K,U,Q)=>{let ce=o.createElement("button");ce.type="button",ce.className="fd-button fd-button-link fd-lines-add",ce.dataset.add=Q,ce.textContent=`+ ${K}`,ce.addEventListener("click",()=>{ke=e.addLine(t,U);let We=he.get(ke);We&&(We.cells[0]?.widget.focus(),ke=null)}),j.append(ce)};_(S("addLabel")??a.addLine,{},"line"),f&&(_(S("addSectionLabel")??a.addSection,{[f.field]:f.section??"section"},"section"),_(S("addNoteLabel")??a.addNote,{[f.field]:f.note??"note"},"note"));let D=(r.controlButtons??[]).map(K=>{let U=bt(o,K.icon),Q=c("button",{type:"button",class:"fd-button fd-button-link fd-lines-add fd-lines-control","data-node":K.id},...U?[U]:[],K.label);return Q.addEventListener("click",()=>{te(Q,()=>e.runAction(K.id))}),j.append(Q),{id:K.id,button:Q}}),V=c("span",{class:"fd-lines-chosen-count",role:"status"}),z=(r.selectedButtons??[]).map(K=>{let U=bt(o,K.icon),Q=c("button",{type:"button",class:`fd-button fd-button-${K.style??"secondary"} fd-lines-chosen-button`,"data-node":K.id},...U?[U]:[],K.label);return Q.addEventListener("click",()=>{te(Q,()=>e.runLinesAction(r.id,K.id,re().filter(ce=>T.has(ce.key)).map(ce=>ce.key)))}),{id:K.id,button:Q}}),$=p?c("div",{class:"fd-lines-chosen",hidden:""},V,...z.map(K=>K.button)):null,ee=S("emptyLabel"),Z=ee?c("div",{class:"fd-help fd-lines-empty"},ee):null,J=zr(c,a),B=c("div",{class:"fd-sr-only",role:"status"});E.append(...$?[$]:[],L,...Z?[Z]:[],j,J.element,B);async function te(K,U){if(!K.hasAttribute("aria-busy")){K.setAttribute("aria-busy","true");try{await U()}finally{K.removeAttribute("aria-busy")}}}function Ee(){if(!$||!C)return;let K=re().filter(U=>!ft(l,U.values));for(let U of[...T])K.some(Q=>Q.key===U)||T.delete(U);$.hidden=se||T.size===0,V.textContent=Te(a.linesChosen,{n:T.size});for(let{id:U,button:Q}of z)Q.hidden=e.node(U).invisible;C.checked=K.length>0&&T.size===K.length,C.indeterminate=T.size>0&&T.size<K.length,C.disabled=se||!K.length;for(let[U,Q]of he)Q.pick&&(Q.pick.checked=T.has(U),Q.pick.disabled=se)}C?.addEventListener("change",()=>{let K=re().filter(U=>!ft(l,U.values));if(C.checked)for(let U of K)T.add(U.key);else T.clear();Ee()});let he=new Map,ke=null,se=!1,re=()=>e.getState().values[t]??[];for(let K=re().length;K<b;K++)e.addLine(t);function Y(K,U){let Q=re().findIndex(Se=>Se.key===K);if(se||U===Q||U<0||U>=re().length)return;let ce=o.activeElement,We=re()[Q].values[h[0]];Wn(e,t,l,K,U),ce&&ce!==o.activeElement&&ce.focus(),B.textContent=Te(a.movedTo,{label:typeof We=="string"&&We.trim()?We:Te(a.lineN,{n:Q+1}),n:U+1,total:re().length})}O.addEventListener("keydown",K=>{let U=K.target.closest("tr")?.dataset.line;!U||!K.altKey||K.key!=="ArrowUp"&&K.key!=="ArrowDown"||(K.preventDefault(),Y(U,re().findIndex(Q=>Q.key===U)+(K.key==="ArrowUp"?-1:1)))});function ne(K,U,Q,ce,We=1){let Se=`${i}-${U.key}-${Q}`,$e=ft(l,U.values)?void 0:r.cells?.[Q],me=$e?.badge?{widget:"badge"}:$e?.widget?{widget:$e.widget,...$e.options?{options:$e.options}:{}}:$e?.options?{options:$e.options}:{},Be={type:"field",id:`${r.id}.${U.key}.${Q}`,field:Q,...me},at=$t({form:Gr(e,t,U.key),name:Q,field:ce,node:Be,id:Se,document:o,labels:a,locale:d,dialogs:s}),Ne=o.createElement("td");Ne.colSpan=We,Ne.dataset.column=Q,Ne.dataset.label=ce.label;let we=o.createElement("label");we.className="fd-sr-only",we.htmlFor=Se,we.textContent=ce.label;let be=o.createElement("div");return be.className="fd-cell-error",be.hidden=!0,Ne.append(we,at.element,be),K.append(Ne),{name:Q,def:ce,widget:at,error:be,td:Ne}}function le(K){let U=o.createElement("tr");U.dataset.line=K.key;let Q=ft(l,K.values);Q&&(U.className=`fd-line-${Q}`);let ce=c("span",{class:"fd-line-grip fd-rank-grip","aria-hidden":"true"}),We=!1;ce.addEventListener("pointerdown",we=>{se||we.button!==0||(we.preventDefault(),ce.setPointerCapture?.(we.pointerId),We=!0)}),ce.addEventListener("pointermove",we=>{We&&Y(K.key,[...O.children].filter(be=>be!==U&&be.getBoundingClientRect().top+be.getBoundingClientRect().height/2<we.clientY).length)});for(let we of["pointerup","pointercancel"])ce.addEventListener(we,()=>We=!1);let Se=p&&!Q?c("input",{type:"checkbox",class:"fd-checkbox fd-line-pick"}):null;Se?.addEventListener("change",()=>{Se.checked?T.add(K.key):T.delete(K.key),Ee()}),U.append(c("td",{class:"fd-lines-grip"},...Se?[c("span",{class:"fd-line-lead"},Se,ce)]:[ce]));let $e=Q&&f?[ne(U,K,f.text,es(l.fields[f.text],Q),h.length)]:h.map(we=>ne(U,K,we,l.fields[we])),me=o.createElement("td");me.className="fd-lines-tools";let Be=o.createElement("button");Be.type="button",Be.className="fd-line-delete",Be.textContent="\xD7",Be.setAttribute("aria-label",a.deleteLine),Be.addEventListener("click",()=>{let we=re().findIndex(oe=>oe.key===K.key),be=re()[we]?.values??{};if(x.confirmDelete!==!0||$e.every(oe=>Ht(oe.def,be[oe.name])||be[oe.name]===!1))return e.removeLine(t,K.key);J.ask(Te(a.removeAsk,{name:Te(a.lineN,{n:we+1})}),oe=>{oe&&e.removeLine(t,K.key);let Je=re(),st=Je[oe?Math.min(we,Je.length-1):we];(st?he.get(st.key)?.remove:j.querySelector("button"))?.focus()})});let at=new Map;for(let we of Q?[]:r.rowButtons??[]){let be=bt(o,we.icon),oe=c("button",{type:"button",class:`fd-button fd-button-link fd-line-button${be?" fd-line-button-icon":""}`,"data-row-button":we.id,"aria-label":we.label,title:we.label});oe.append(be??we.label),oe.addEventListener("click",async()=>{if(!oe.hasAttribute("aria-busy")){oe.setAttribute("aria-busy","true");try{await e.runRowAction(r.id,we.id,K.key)}finally{oe.removeAttribute("aria-busy")}}}),at.set(we.id,oe),me.append(oe)}let Ne=x.copy===!0&&!Q?c("button",{type:"button",class:"fd-line-copy"},"\u29C9"):null;if(Ne?.addEventListener("click",()=>{let we=re(),be=we.findIndex(st=>st.key===K.key);if(se||be<0||we.length>=y)return;let oe={...we[be].values};l.sequenceField&&delete oe[l.sequenceField];let Je=e.addLine(t,oe);Wn(e,t,l,Je,be+1),he.get(Je)?.cells[0]?.widget.focus()}),Ne&&me.append(Ne),(r.lineOpens||r.lineForm)&&s&&!Q){let we=c("button",{type:"button",class:"fd-line-open","aria-label":a.openLine,title:a.openLine},"\u2197");we.addEventListener("click",()=>{let be=re().find(oe=>oe.key===K.key);be&&Jr(e,t,r,be,s,se)}),me.append(we)}return me.append(Be),U.append(me),{element:U,kind:Q,cells:$e,remove:Be,grip:ce,buttons:at,pick:Se,copy:Ne}}return{element:E,focus:()=>(O.querySelector("input, select, textarea")??j.querySelector("button"))?.focus(),update(K){se=K.readonly;let U=K.value??[];j.hidden=se||U.length>=y,se&&(J.element.hidden=!0),Z&&(Z.hidden=U.length>0);let Q=e.getState().errors,ce=new Set(k?h.filter(Se=>e.columnHidden(r.id,Se)):[]);for(let[Se,$e]of m)$e.hidden=ce.has(Se);for(let[Se,$e]of P)$e.hidden=ce.has(Se);let We=new Set(U.map(Se=>Se.key));for(let[Se,$e]of he)We.has(Se)||($e.element.remove(),he.delete(Se));U.forEach((Se,$e)=>{let me=he.get(Se.key);me&&me.kind!==ft(l,Se.values)&&(me.element.remove(),me=void 0),me||(me=le(Se),he.set(Se.key,me)),O.children[$e]!==me.element&&O.insertBefore(me.element,O.children[$e]??null);let Be=k?e.lineState(r.id,Se.key):null;me.remove.hidden=se||U.length<=b||Be?.deletable===!1,me.grip.hidden=se;let at=Te(a.lineN,{n:$e+1});me.pick?.setAttribute("aria-label",Te(a.chooseLine,{name:at})),me.copy&&(me.copy.setAttribute("aria-label",Te(a.copy,{name:at})),me.copy.title=me.copy.getAttribute("aria-label"),me.copy.hidden=se||U.length>=y),se?me.remove.remove():me.remove.isConnected||me.element.lastElementChild?.append(me.remove),Qa(me.element,"tone",Be?.tone),me.element.classList.toggle("fd-line-bold",!!Be?.bold);for(let[Ne,we]of me.buttons)we.hidden=!Be?.buttons[Ne];me.kind&&(me.cells[0].td.colSpan=h.length-ce.size);for(let Ne of me.cells){let we=Q[`${t}.${Se.key}.${Ne.name}`],be=me.kind?void 0:Be?.cells[Ne.name];me.kind||(Ne.td.hidden=ce.has(Ne.name)),Ne.widget.element.hidden=!!be?.invisible,Qa(Ne.td,"tone",be?.tone),Ne.td.classList.toggle("fd-cell-bold",!!be?.bold),Ne.error.hidden=!we,Ne.error.textContent=we??"",Ne.widget.update({value:Se.values[Ne.name],values:Se.values,parent:K.values,readonly:se||Ne.def.readonly===!0||Ne.def.compute!==void 0||!!be?.readonly,required:Ne.def.required===!0||!!be?.required,invalid:!!we})}});for(let[Se,$e]of M){let me=U.filter(Be=>!ft(l,Be.values)).reduce((Be,at)=>Be+Number(at.values[Se]??0),0);$e.textContent=or(l.fields[Se],me,U[0]?.values??{},d,K.values,r.cells?.[Se])}for(let{id:Se,button:$e}of D)$e.hidden=e.node(Se).invisible;Ee(),ke&&he.has(ke)&&(he.get(ke)?.cells[0]?.widget.focus(),ke=null)}}};function Qa(e,t,n){n?e.dataset[t]=n:delete e.dataset[t]}var Cl='a[href], button, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';function Bt(e,t){if(t.key!=="Tab")return;let n=[...e.querySelectorAll(Cl)].filter(a=>!a.closest("[hidden], [inert]")&&!a.disabled);if(!n.length)return;let r=n[0],i=n[n.length-1],o=e.ownerDocument.activeElement;(t.shiftKey?o===r||!e.contains(o):o===i)&&(t.preventDefault(),(t.shiftKey?i:r).focus())}var Xr=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let i=String(r.result??"");t({name:e.name,type:e.type,size:e.size,data:i.slice(i.indexOf(",")+1)})},r.onerror=()=>n(r.error),r.readAsDataURL(e)}),rs=e=>(/\.(\w{1,5})$/.exec(e)?.[1]??"").toUpperCase();function Yr(e){let t=`${e.type} ${rs(e.name)}`.toLowerCase();return/^image\//.test(t)?"image":/pdf/.test(t)?"pdf":/sheet|excel|csv|xlsx?$|ods$/.test(t)?"sheet":/zip|rar|7z|tar|gz/.test(t)?"zip":/word|opendocument|^text|docx?$|odt$|rtf$/.test(t)?"doc":"file"}var Ol=e=>/^text\/|json|xml|csv/.test(e.type),Yi=e=>e.data?`data:${e.type};base64,${e.data}`:e.url??"",is=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),ns=(e,t)=>e("span",{class:"fd-file-icon","data-kind":Yr(t),"aria-hidden":"true"},rs(t.name)||"?"),Vl={cards:'<path d="M3 3h8v8H3zM13 3h8v8h-8zM3 15h8M13 15h8M3 19h5M13 19h5"/>',thumbnails:'<path d="M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"/>'},Pl=(e,t)=>e("span",{class:"fd-file-name",dir:"auto",title:t},e("span",{},t.slice(0,-9)),t.slice(-9));function Il(e,t){let n=t.length/2,[r,i]=[Math.round(n),n/2];for(let a=t.indexOf(" ");a>=0;a=t.indexOf(" ",a+1))Math.abs(a+1-n)<i&&([r,i]=[a+1,Math.abs(a+1-n)]);let o=/^\P{L}*[\p{sc=Arabic}\p{sc=Hebrew}]/u.test(t);return e("span",{class:"fd-file-name",dir:o?"rtl":"ltr",title:t},e("span",{},t.slice(0,r)),e("span",{dir:o?"ltr":"rtl"},e("bdi",{},t.slice(r))))}function os(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:d,locale:s="en",preferences:l})=>{let f=r,c=Fe(d,s),x=wt[s]??wt.en,b=ve(a),y=f.multiple===!0,S=y?f.maxFiles??1/0:1,m=e==="image",k=String(i.options?.files??(m?"thumbnails":"list")),h=k==="thumbnails"?k:"cards",E=i.options?.filesSwitch===!0,L=`${t.page.id}.${i.id}.files`,v=E?l?.get(L):null,R=i.options?.camera,w=f.type==="binary"?f.accept:["image/*"],p=b("div"),T=b("input",{type:"file",id:o,class:"fd-sr-only",accept:w?.join(","),capture:R?R==="user"?"user":"environment":void 0});T.multiple=y;let C=[!m&&w?tr(w,x.or):"",f.maxSize?je(y?c.upToEach:c.upToSize,{size:Yt(f.maxSize)}):"",y&&f.maxFiles?je(c.upToFiles,{max:f.maxFiles}):""].filter(Boolean),W=b("label",{class:"fd-file-pick",for:o},b("span",{class:"fd-button"},y?m?c.addPhotos:c.addFiles:m?c.uploadImage:c.upload),b("span",{class:"fd-help"},y?c.dropThem:c.dropHere)),O=b("span",{class:"fd-help fd-file-limits"},C.join(" \xB7 ")),H=y?b("span",{class:"fd-help fd-file-count"}):null,M=b("ul",{class:"fd-files",role:"list"}),P=b("button",{type:"button",class:"fd-button fd-button-link"},c.replace);P.addEventListener("click",()=>T.click());let j=zr(b,c),_=b("div",{class:"fd-help fd-file-note",role:"status"}),D=(re,Y)=>{let ne=b("button",{type:"button","data-view":re},bt(a,re,Vl),Y);return ne.addEventListener("click",()=>(Z(re),l?.set(L,re))),ne},V=E?b("div",{class:"fd-file-views",role:"group","aria-label":c.showFilesAs},D("list",c.asList),D(h,h==="cards"?c.asCards:c.asThumbnails)):null,z=H||V?b("div",{class:"fd-file-bar"},...H?[H]:[],...V?[V]:[]):null,$=[T,W,...C.length?[O]:[]];p.append(...z?[z]:[],M,P,j.element,_);let ee=k;function Z(re){ee=re;let Y=re!=="list";p.className=`fd-file fd-file-${e} fd-files-${re==="thumbnails"?"thumbs":re}`,W.classList.toggle("fd-image-pick",Y),Y?M.after(...$):(z??M).before(...$),V?.querySelectorAll("button").forEach(ne=>ne.setAttribute("aria-pressed",String(ne.dataset.view===re))),ke()}let J=!1,B=[],te,Ee=re=>_.replaceChildren(...re.map(Y=>b("div",{},Y))),he=async re=>{if(J||!re.length)return;let Y=[],ne=[],le=0;for(let U of re){let Q=er(f,U,x)??(y&&[...B,...Y].some(ce=>ce.name===U.name)?je(c.alreadyAdded,{name:U.name}):void 0);Q?ne.push(Q):(y?B.length:0)+Y.length<S?Y.push(U):le++}if(le&&y&&ne.push(je(c.tooMany,{max:S,n:le})),Ee(ne),!Y.length)return;let K=await Promise.all(Y.map(Xr));t.setValue(n,y?[...B,...K]:K[0])};T.addEventListener("change",()=>{he([...T.files??[]]),T.value=""}),p.addEventListener("dragover",re=>{J||(re.preventDefault(),p.classList.add("fd-dragging"))}),p.addEventListener("dragleave",()=>p.classList.remove("fd-dragging")),p.addEventListener("drop",re=>{re.preventDefault(),p.classList.remove("fd-dragging"),he([...re.dataTransfer?.files??[]])}),M.addEventListener("click",re=>{let Y=re.target.closest("button"),ne=Number(Y?.dataset.at);if(Y){if(Y.classList.contains("fd-file-open"))return se(ne,Y);j.ask(je(c.removeAsk,{name:B[ne].name}),le=>{let K=B[ne];le&&(t.setValue(n,y?B.filter((U,Q)=>Q!==ne):null),Ee([je(c.removed,{name:K.name})])),(M.querySelectorAll(".fd-file-remove")[le?Math.min(ne,B.length-1):ne]??(W.hidden?P:T)).focus()})}});function ke(){M.replaceChildren(...B.map((re,Y)=>b("li",{class:"fd-file-item"},b("button",{type:"button",class:"fd-file-open","data-at":String(Y),"aria-haspopup":"dialog","aria-label":`${re.name}, ${Yt(re.size)}`},...[Yr(re)==="image"&&Yi(re)?b("img",{class:"fd-file-thumb",src:Yi(re),alt:""}):ns(b,re)].map(ne=>ee==="cards"?b("span",{class:"fd-file-picture"},ne):ne),(ee==="cards"?Il:Pl)(b,re.name),b("span",{class:"fd-file-size"},Yt(re.size))),...J?[]:[b("button",{type:"button",class:"fd-file-remove","data-at":String(Y),"aria-label":je(c.remove,{name:re.name})},"\xD7")])))}Z(v==="list"||v===h?v:k===h?k:"list");function se(re,Y){let ne=B,le="",K=b("h2",{id:`${o}-view`,class:"fd-form-dialog-title"}),U=b("span",{class:"fd-help"}),Q=(be,oe,Je)=>{let st=b("button",{type:"button",class:"fd-button fd-file-step","aria-label":oe},Je);return st.hidden=ne.length<2,st.addEventListener("click",()=>Ne(re+be)),st},ce=b("a",{class:"fd-button"},c.download),We=b("button",{type:"button",class:"fd-dialog-close","aria-label":c.close},"\xD7"),Se=b("div",{class:"fd-file-viewer-body"}),$e=b("div",{class:"fd-form-dialog fd-file-viewer",role:"dialog","aria-modal":"true","aria-labelledby":K.id,tabindex:"-1"},b("div",{class:"fd-form-dialog-head"},K,U,Q(-1,c.previous,"\u2039"),Q(1,c.next,"\u203A"),ce,We),Se),me=b("div",{class:"fd-dialog-backdrop"},$e),Be=()=>le.startsWith("blob:")&&URL.revokeObjectURL(le),at=be=>b("div",{class:"fd-file-none"},ns(b,be),b("strong",{},be.name),Yt(be.size),b("p",{},c.noPreview));function Ne(be){re=(be+ne.length)%ne.length;let oe=ne[re];Be();let Je=oe.data?is(oe.data):null;le=Je?URL.createObjectURL(new Blob([Je],{type:oe.type})):oe.url??"",K.textContent=oe.name,U.replaceChildren(b("span",{class:"fd-file-size"},Yt(oe.size)),ne.length>1?` \xB7 ${je(c.fileAt,{n:re+1,total:ne.length})}`:""),ce.href=le,ce.download=oe.name;let st=Yr(oe);if(st==="image")return Se.replaceChildren(b("img",{src:le,alt:oe.name}));if(st==="pdf")return Se.replaceChildren(b("iframe",{src:le,title:oe.name}));if(!Ol(oe))return Se.replaceChildren(at(oe));let dt=b("pre",{tabindex:"0"});Se.replaceChildren(dt),(Je?Promise.resolve(new TextDecoder().decode(Je.subarray(0,2e5))):fetch(le).then(Ut=>Ut.text())).then(Ut=>dt.textContent=Ut.slice(0,2e5),()=>dt.replaceWith(at(oe)))}let we=()=>{Be(),me.remove(),(Y.isConnected?Y:M.querySelectorAll(".fd-file-open")[re])?.focus()};We.addEventListener("click",we),me.addEventListener("click",be=>be.target===me&&we()),$e.addEventListener("keydown",be=>{let oe={ArrowLeft:-1,ArrowRight:1}[be.key];be.key==="Escape"?we():oe&&ne.length>1&&be.target.tagName!=="PRE"?Ne(re+(Nt(p)?-oe:oe)):Bt($e,be)}),Ne(re),(p.closest(".fd-form")??a.body).append(me),$e.focus()}return{element:p,focus:()=>(M.querySelector("button")??(W.hidden?P:T)).focus(),update(re){J=re.readonly;let Y=re.value;B=Array.isArray(Y)?Y:Y?[Y]:[];let ne=B.length>=S;kt(W,ne||J),kt(O,J),T.disabled=J,T.hidden=W.hidden,kt(P,y||!B.length||J),z&&kt(z,!B.length),H&&tt(H,B.length?y&&f.maxFiles?je(c.fileCountOf,{n:B.length,max:f.maxFiles}):B.length===1?c.oneFile:je(c.fileCount,{n:B.length}):""),ze(T,re),!(te===Y&&M.dataset.readonly===String(J))&&(te=Y,M.dataset.readonly=String(J),ke())}}}}var ar=os("binary"),Xi=os("image");function Zi(e,t){let n=Yr(t);if(n!=="image"&&n!=="pdf")return null;let r=t.data?URL.createObjectURL(new Blob([is(t.data)],{type:t.type})):Yi(t),i=e.createElement(n==="image"?"img":"iframe");return i.setAttribute("src",n==="pdf"?`${r}#view=FitH&navpanes=0`:r),i.setAttribute(n==="image"?"alt":"title",t.name),i.setAttribute("data-kind",n),{element:i,url:r,free:()=>{r.startsWith("blob:")&&URL.revokeObjectURL(r)}}}var as=new Map;function ss(e,t){let n=as.get(t);return n||(n=new Intl.NumberFormat(t,{style:"percent",maximumFractionDigits:0,numberingSystem:"latn"}),as.set(t,n)),n.format(e/100)}var sr=e=>{let{field:t,node:n,id:r,document:i,locale:o="en"}=e,a=n.options??{},d=(h,E)=>{let L=a[h]??t[h];return typeof L=="number"?L:E},s=d("min",0),l=d("max",100),f=typeof a.maxField=="string"?a.maxField:null,c=typeof a.color=="string"?a.color:"auto",x=a.showPercent!==!1,b=i.createElement("div");b.className="fd-progressbar",b.setAttribute("role","progressbar");let y=i.createElement("div");y.className="fd-progressbar-fill";let S=i.createElement("span");S.className="fd-progressbar-text",b.append(y,S);let m=null,k=b;return a.editable===!0?(m=$t({...e,node:{...n,widget:void 0}}),b.setAttribute("aria-hidden","true"),k=i.createElement("div"),k.className="fd-progressbar-edit",k.append(b,m.element)):(b.id=r,b.setAttribute("aria-label",n.label??t.label)),{element:k,focus:()=>m?.focus(),update(h){let E=typeof h.value=="number"?h.value:0,L=f?Number(h.values[f]??0):l,v=L>s?Math.min(100,Math.max(0,(E-s)/(L-s)*100)):0,R=Math.round(v*10)/10;y.style.width=`${R}%`,b.setAttribute("aria-valuenow",String(E)),b.setAttribute("aria-valuemin",String(s)),b.setAttribute("aria-valuemax",String(L)),b.setAttribute("aria-valuetext",ss(v,o)),S.textContent=x?ss(v,o):"",b.dataset.tone=c!=="auto"?c:v<30?"danger":v<70?"warning":"success",m?.update(h)}}};function ds(e){return e==null?"":typeof e=="object"&&"label"in e?e.label:String(e)}var dr=({field:e,node:t,id:n,document:r,locale:i="en"})=>{let o=t.options??{},a=f=>typeof o[f]=="string"?o[f]:"",d=f=>typeof o[f]=="string"?o[f]:null,s=e.type==="integer"?0:e.type==="float"||e.type==="monetary"?e.digits?.[1]??2:null,l=r.createElement("output");return l.id=n,l.className="fd-value-text",{element:l,focus:()=>{},update({value:f,values:c}){if(f==null||f===""){l.textContent="";return}let x=s!==null&&typeof f=="number"?ut(f,s,i):Zr(f,e),b=d("prefixField"),y=d("suffixField"),S=b?ds(c[b]):a("prefix"),m=y?ds(c[y]):a("suffix");l.textContent=[S,x,m].filter(k=>k!=="").join(" ")}}};function Dl(e,t){let[n,r]=e>=86400?[e/86400,"day"]:e>=3600?[e/3600,"hour"]:[Math.max(1,e/60),"minute"];try{return new Intl.NumberFormat(t,{style:"unit",unit:r,unitDisplay:"narrow",maximumFractionDigits:0,numberingSystem:"latn"}).format(Math.floor(n))}catch{return`${Math.floor(n)}${r[0]}`}}var Qr=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ke.en,locale:d="en"})=>{let s=r.options??{},l=s.clickable===!0,f=Array.isArray(s.visibleStates)?s.visibleStates:null,c=typeof s.durationsField=="string"?s.durationsField:null,x=s.fold===!0,b=s.saves===!0,y=o.createElement("ol");y.className="fd-statusbar",y.id=i,y.setAttribute("aria-label",n.label);let S=H=>H&&typeof H=="object"&&"id"in H?`id:${String(H.id)}`:`v:${String(H)}`,m=H=>H&&typeof H=="object"&&"id"in H?String(H.id):String(H),k=n.type==="selection"?n.options.map(H=>({key:S(H.value),label:H.label,value:H.value,folded:!1})):[],h=[],E=H=>H.forEach(M=>"any"in M?E(M.any):"all"in M?E(M.all):M.valueFrom&&h.push(M.valueFrom));n.type==="many2one"&&E(n.filter??[]);let L=n.type==="selection"?"":null,v=0,R={value:void 0,readonly:!1,durations:{}},w="",p=!1,T=H=>{e.setValue(t,H.value),b&&e.settled().then(()=>e.save())};function C(){let{value:H,readonly:M,durations:P}=R,j=y.contains(o.activeElement)?o.activeElement.dataset.key:void 0,_=H==null?null:S(H),D=k.filter(B=>!f||f.some(te=>S(te)===B.key)||B.key===_);_&&!D.some(B=>B.key===_)&&H&&typeof H=="object"&&(D=[...D,{key:_,label:H.label,value:H,folded:!1}]);let V=x?D.filter(B=>B.folded&&B.key!==_):[];D=D.filter(B=>!V.includes(B));let z=D.map(B=>c?Number(P[m(B.value)]??0):0),$=JSON.stringify([D.map(B=>[B.key,B.label]),V.map(B=>B.key),z,_,M,p]);if($===w)return;w=$;let ee=D.map((B,te)=>{let Ee=o.createElement("span");Ee.textContent=B.label;let he=o.createElement(l?"button":"span");if(he instanceof HTMLButtonElement&&(he.type="button",he.disabled=M,he.dataset.key=B.key,he.addEventListener("click",()=>T(B))),he.append(Ee),z[te]>0){let se=o.createElement("small");se.className="fd-step-time",se.textContent=Dl(z[te],d),he.title=a.timeInStep.replace("{time}",se.textContent),he.append(se)}B.key===_&&he.setAttribute("aria-current","step");let ke=o.createElement("li");return ke.append(he),ke});V.length&&ee.push(W(V,M)),y.replaceChildren(...ee);let Z=y.querySelector(".fd-step-menu:not([hidden])"),J=Z?.previousElementSibling;if(Z&&J){let B=J.getBoundingClientRect(),te=o.defaultView,Ee=getComputedStyle(y).direction==="rtl";Z.style.top=`${B.bottom+4}px`,Ee?Z.style.left=`${B.left}px`:Z.style.right=`${Math.max(0,(te?.innerWidth??B.right)-B.right)}px`}j&&[...y.querySelectorAll("button")].find(B=>B.dataset.key===j)?.focus()}function W(H,M){let P=o.createElement("li");P.className="fd-step-more";let j=o.createElement("button");j.type="button",j.dataset.key="more",j.setAttribute("aria-haspopup","menu"),j.setAttribute("aria-expanded",String(p)),j.setAttribute("aria-label",a.moreSteps),j.title=a.moreSteps;let _=o.createElement("span");_.textContent="\u22EF",_.setAttribute("aria-hidden","true"),j.append(_);let D=o.createElement("div");D.className="fd-step-menu",D.setAttribute("role","menu"),D.hidden=!p;for(let V of H){let z=o.createElement("button");z.type="button",z.setAttribute("role","menuitem"),z.textContent=V.label,z.disabled=M||!l,z.addEventListener("click",()=>{p=!1,T(V),C()}),D.append(z)}return j.addEventListener("click",()=>{p=!p,C(),p&&y.querySelector(".fd-step-menu button:not([disabled])")?.focus()}),D.addEventListener("keydown",V=>{V.key==="Escape"&&(V.stopPropagation(),p=!1,C(),y.querySelector(".fd-step-more > button")?.focus())}),P.append(j,D),P}let O=H=>{p&&!y.contains(H.target)&&(p=!1,C())};return o.addEventListener("pointerdown",O),o.addEventListener("scroll",O,!0),{element:y,focus:()=>y.querySelector("button:not([disabled])")?.focus(),destroy(){o.removeEventListener("pointerdown",O),o.removeEventListener("scroll",O,!0)},update(H){let M=c?H.values?.[c]:null;R={value:H.value,readonly:H.readonly,durations:M&&typeof M=="object"&&!Array.isArray(M)?M:{}},C();let P=n.type==="selection"?"":JSON.stringify(h.map(j=>H.values?.[j]??null));if(L!==P){L=P;let j=++v;e.search(t,"",20).then(_=>{j===v&&(k=_.map(D=>({key:S(D),label:D.label,value:D,folded:D.folded===!0})),C())}).catch(()=>{})}}}};function cs(e){let t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()));t.setUTCDate(t.getUTCDate()+4-(t.getUTCDay()||7));let n=Date.UTC(t.getUTCFullYear(),0,1);return Math.ceil(((t.getTime()-n)/864e5+1)/7)}var ls=e=>String(e).padStart(2,"0"),Qi=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),qt=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t);function ei(e,t){let n=new Date(e.getFullYear(),e.getMonth()+t+1,0).getDate();return new Date(e.getFullYear(),e.getMonth()+t,Math.min(e.getDate(),n))}function eo(e,t){if(typeof t!="string"||!t)return null;if(e==="date"){let r=/^(\d{4})-(\d{2})-(\d{2})/.exec(t);return r?new Date(Number(r[1]),Number(r[2])-1,Number(r[3])):null}let n=new Date(t);return Number.isNaN(n.getTime())?null:n}function ti(e,t,n){let{form:r,name:i,id:o,document:a,locale:d="en"}=t,s=t.labels??Ke.en,l=d==="en"?"en-GB":d,f=new Intl.DateTimeFormat(l,{month:"long",year:"numeric",numberingSystem:"latn"}),c=new Intl.DateTimeFormat(l,{weekday:"long",day:"numeric",month:"long",year:"numeric",numberingSystem:"latn"}),x=new Intl.DateTimeFormat(l,{weekday:"short"}),b=new Intl.DateTimeFormat(l,{weekday:"long"}),y=a.createElement("button");y.type="button",y.className="fd-calendar-button";let S="http://www.w3.org/2000/svg",m=a.createElementNS(S,"svg");m.setAttribute("viewBox","0 0 16 16"),m.setAttribute("aria-hidden","true");for(let[D,V]of[["rect",{x:"2",y:"3",width:"12",height:"11",rx:"1.5"}],["path",{d:"M2 6.5h12M5 1.5v3M11 1.5v3"}]]){let z=a.createElementNS(S,D);for(let[$,ee]of Object.entries(V))z.setAttribute($,ee);m.append(z)}y.append(m),y.setAttribute("aria-label",s.chooseDate),y.setAttribute("aria-haspopup","dialog"),y.setAttribute("aria-expanded","false"),y.setAttribute("aria-controls",`${o}-calendar`);let k=a.createElement("div");k.className="fd-calendar",k.id=`${o}-calendar`,k.setAttribute("role","dialog"),k.hidden=!0;let h=a.createElement("div");h.className="fd-calendar-head";let E=a.createElement("button");E.type="button",E.textContent="\u2039",E.setAttribute("aria-label",s.previousMonth);let L=a.createElement("span");L.className="fd-calendar-title",L.setAttribute("aria-live","polite");let v=a.createElement("button");v.type="button",v.textContent="\u203A",v.setAttribute("aria-label",s.nextMonth),h.append(E,L,v);let R=a.createElement("table");R.className="fd-calendar-grid",R.setAttribute("role","grid"),k.append(h,R);let w=a.createElement("span");w.className="fd-date-pick",w.append(e.element,y,k);let p=new Date,T=!1;function C(D){if(n==="date")r.setValue(i,`${D.getFullYear()}-${ls(D.getMonth()+1)}-${ls(D.getDate())}`);else{let V=eo("datetime",r.getState().values[i]),z=new Date(D.getFullYear(),D.getMonth(),D.getDate(),V?.getHours()??0,V?.getMinutes()??0);r.setValue(i,z.toISOString())}j(),w.dispatchEvent(new CustomEvent("fd-picked",{bubbles:!0,detail:{value:r.getState().values[i]}}))}function W(D){let V=eo(n,r.getState().values[i]),z=new Date,$=f.format(p);L.textContent=$,k.setAttribute("aria-label",$);let ee=new Date(p.getFullYear(),p.getMonth(),1),Z=qt(ee,-((ee.getDay()+6)%7)),J=a.createElement("tr"),B=a.createElement("th");B.scope="col",B.textContent=s.weekShort,B.setAttribute("abbr",s.week),J.append(B);for(let he=0;he<7;he++){let ke=qt(Z,he),se=a.createElement("th");se.scope="col",se.textContent=x.format(ke).replace(/\.$/,""),se.setAttribute("abbr",b.format(ke)),J.append(se)}let te=a.createElement("thead");te.append(J);let Ee=a.createElement("tbody");for(let he=Z;he<=new Date(p.getFullYear(),p.getMonth()+1,0);he=qt(he,7)){let ke=a.createElement("tr"),se=a.createElement("th");se.scope="row",se.className="fd-week",se.textContent=String(cs(he)),ke.append(se);for(let re=0;re<7;re++){let Y=qt(he,re),ne=a.createElement("td"),le=a.createElement("button");le.type="button",le.textContent=String(Y.getDate()),le.setAttribute("aria-label",c.format(Y)),le.tabIndex=Qi(Y,p)?0:-1,Y.getMonth()!==p.getMonth()&&le.classList.add("fd-outside"),V&&Qi(Y,V)&&le.setAttribute("aria-selected","true"),Qi(Y,z)&&le.setAttribute("aria-current","date"),le.disabled=T,le.addEventListener("click",()=>C(Y)),le.addEventListener("keydown",K=>H(K,Y)),ne.append(le),ke.append(ne)}Ee.append(ke)}R.replaceChildren(te,Ee),D&&R.querySelector('button[tabindex="0"]')?.focus()}function O(D){p=D,W(!0)}function H(D,V){let z={ArrowLeft:()=>qt(V,-1),ArrowRight:()=>qt(V,1),ArrowUp:()=>qt(V,-7),ArrowDown:()=>qt(V,7),PageUp:()=>ei(V,-1),PageDown:()=>ei(V,1),Home:()=>qt(V,-((V.getDay()+6)%7)),End:()=>qt(V,6-(V.getDay()+6)%7)};z[D.key]?(D.preventDefault(),O(z[D.key]())):(D.key==="Enter"||D.key===" ")&&(D.preventDefault(),C(V))}function M(){p=eo(n,r.getState().values[i])??new Date,k.hidden=!1,y.setAttribute("aria-expanded","true"),W(!0),P()}function P(){k.style.translate="";let D=k.getBoundingClientRect(),V=a.documentElement.clientWidth;if(!D.width||!V)return;let z=D.left<8?8-D.left:D.right>V-8?Math.max(8-D.left,V-8-D.right):0;z&&(k.style.translate=`${Math.round(z)}px 0`)}function j(){k.hidden||(k.hidden=!0,y.setAttribute("aria-expanded","false"),y.focus())}y.addEventListener("click",()=>k.hidden?M():j()),E.addEventListener("click",()=>{p=ei(p,-1),W(!1)}),v.addEventListener("click",()=>{p=ei(p,1),W(!1)}),k.addEventListener("keydown",D=>{D.key==="Escape"&&(D.preventDefault(),D.stopPropagation(),j())});let _=D=>{!k.hidden&&!w.contains(D.target)&&(k.hidden=!0,y.setAttribute("aria-expanded","false"))};return a.addEventListener("mousedown",_),{element:w,focus:()=>e.focus(),update(D){T=D.readonly,y.hidden=D.readonly,D.readonly&&(k.hidden=!0),e.update(D)},destroy(){a.removeEventListener("mousedown",_),e.destroy?.()}}}var Wl=e=>{let t=e.replace(/_/g," ").trim();return t.charAt(0).toUpperCase()+t.slice(1)},fs=e=>e.normalize("NFKD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/^(\d)/,"p_$1")||"property";function jl(e,t){let n=Wl(e);return typeof t=="boolean"?{name:e,label:n,type:"boolean"}:typeof t=="number"?{name:e,label:n,type:Number.isInteger(t)?"integer":"float"}:typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?{name:e,label:n,type:"date"}:{name:e,label:n,type:"char"}}var Hl=["char","text","integer","float","boolean","date"],to=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a,labels:d,locale:s}=e,l=ve(a),f=Fe(d,s),c=r.type==="properties"?r.definitions:void 0,x=r.type==="properties"&&!!r.definitionsFrom,b=()=>{let _=t.getState().values[n];return _&&typeof _=="object"&&!Array.isArray(_)?_:{}},y={...t,getState:()=>({...t.getState(),values:b()}),setValue:(_,D)=>t.setValue(n,{...b(),[_]:D})},S=l("div",{class:"fd-properties-list"}),m=l("div",{class:"fd-properties",role:"group"},S);i.options?.columns===2&&(m.dataset.columns="2");let h=l("div",{class:"fd-help",role:"status",hidden:""});m.append(h);let E=x&&i.options?.add===!0,L=l("button",{type:"button",class:"fd-button fd-button-link fd-property-add",hidden:""},`+ ${f.addProperty}`),v=l("input",{type:"text",class:"fd-input","aria-label":f.propertyName,placeholder:f.propertyName,autocomplete:"off"}),R=f.propertyTypes.split("|"),w=l("select",{class:"fd-input fd-select","aria-label":f.propertyType},...Hl.map((_,D)=>l("option",{value:_},R[D]??_))),p=l("button",{type:"button",class:"fd-button fd-button-primary"},f.add),T=l("button",{type:"button",class:"fd-button"},f.cancel),C=l("div",{class:"fd-property-new",hidden:""},v,w,p,T);E&&m.append(L,C);let W=null,O=()=>{C.hidden=!0,L.hidden=!1};L.addEventListener("click",()=>{C.hidden=!1,L.hidden=!0,v.value="",w.value="char",v.focus()}),T.addEventListener("click",()=>{O(),L.focus()});let H=()=>{let _=v.value.trim();if(!_)return v.focus();let D=new Set(M.map(z=>z.definition.name)),V=fs(_);for(let z=2;D.has(V);z++)V=`${fs(_)}_${z}`;W=V,O(),t.addDefinition(n,{name:V,label:_,type:w.value})};p.addEventListener("click",H),C.addEventListener("keydown",_=>{_.key==="Enter"&&_.target===v?(_.preventDefault(),H()):_.key==="Escape"&&(_.preventDefault(),_.stopPropagation(),O(),L.focus())});let M=[],P="";function j(_){for(let D of M)D.widget.destroy?.();M=_.map(D=>{let V=`${o}-${D.name}`,z={type:D.type,label:D.label,...D.options?{options:D.options}:{}},$={type:"field",id:`${i.id}.${D.name}`,field:D.name},ee=$t({...e,form:y,name:D.name,field:z,node:$,id:V});return{definition:D,widget:ee}}),S.replaceChildren(...M.map(({definition:D,widget:V})=>{let z=a.createElement("div");z.className="fd-property",z.dataset.type=D.type;let $=a.createElement("label");return $.htmlFor=`${o}-${D.name}`,$.textContent=D.label,z.append($,V.element),z}))}return x&&!t.getState().definitions[n]&&t.loadDefinitions(n),{element:m,focus:()=>(M[0]?.widget??{focus:()=>L.focus()}).focus(),destroy:()=>M.forEach(_=>_.widget.destroy?.()),update(_){let D=b(),V=x?t.getState().definitions[n]:void 0,z=x?V?.definitions??[]:c??Object.keys(D).map(ee=>jl(ee,D[ee])),$=JSON.stringify(z);$!==P&&(P=$,j(z));for(let{definition:ee,widget:Z}of M)Z.update({value:D[ee.name]??null,values:D,readonly:_.readonly,required:!1,invalid:!1});h.textContent=V?.loading&&!V.definitions?f.loading:V?.error??"",h.hidden=!h.textContent,E&&(_.readonly&&O(),L.hidden=_.readonly||!C.hidden),W&&M.some(ee=>ee.definition.name===W)&&(M.find(ee=>ee.definition.name===W)?.widget.focus(),W=null)}}};var zl=new Set(["P","BR","B","STRONG","I","EM","U","S","UL","OL","LI","A","H1","H2","H3","H4","BLOCKQUOTE","CODE","PRE","SPAN","DIV"]),Bl=new Set(["SCRIPT","STYLE","IFRAME","OBJECT","EMBED","TEMPLATE","NOSCRIPT","SVG","MATH"]),ql=new Set(["P","DIV","H1","H2","H3","H4","LI","BLOCKQUOTE","PRE"]),_l=new Set(["left","center","right","justify","start","end"]);function no(e,t=globalThis.document){let n=t.createElement("template");n.innerHTML=e;let r=o=>{for(let a of[...o.childNodes]){if(a.nodeType===Node.TEXT_NODE)continue;if(a.nodeType!==Node.ELEMENT_NODE){a.remove();continue}let d=a;if(Bl.has(d.tagName)){d.remove();continue}if(r(d),!zl.has(d.tagName)){d.replaceWith(...d.childNodes);continue}let s=d.tagName==="A"?d.getAttribute("href"):null,l=ql.has(d.tagName)?d.style?.textAlign?.trim().toLowerCase():"";for(let f of[...d.attributes])d.removeAttribute(f.name);s&&/^(https?:|mailto:)/i.test(s.trim())&&d.setAttribute("href",s.trim()),l&&_l.has(l)&&d.setAttribute("style",`text-align: ${l};`)}};r(n.content);let i=t.createElement("div");return i.append(n.content),i.innerHTML}function ps(e){let t=e.trim();return/^(https?:\/\/|mailto:)\S+$/i.test(t)?t:/^[^\s@:/]+@[^\s@:/]+\.[^\s@:/]+$/.test(t)?`mailto:${t}`:/^[\w-]+(\.[\w-]+)+([/?#]\S*)?$/.test(t)?`https://${t}`:null}var us=[["bold","bold","<b>B</b>"],["italic","italic","<i>I</i>"],["underline","underline","<u>U</u>"],["heading","heading","<b>H</b>"],["bulletList","insertUnorderedList",'<svg viewBox="0 0 16 16"><circle cx="3" cy="4" r="1.2"/><circle cx="3" cy="8" r="1.2"/><circle cx="3" cy="12" r="1.2"/><path d="M6 4h8M6 8h8M6 12h8"/></svg>'],["numberList","insertOrderedList",'<svg viewBox="0 0 16 16"><path d="M2.5 3h1v3M2 10.5c.5-.8 2-.8 2 .2 0 .8-2 1.3-2 2.3h2M6 4h8M6 8h8M6 12h8"/></svg>'],["alignLeft","justifyLeft",'<svg viewBox="0 0 16 16"><path d="M2 3.5h12M2 6.5h8M2 9.5h12M2 12.5h8"/></svg>'],["alignCenter","justifyCenter",'<svg viewBox="0 0 16 16"><path d="M2 3.5h12M4 6.5h8M2 9.5h12M4 12.5h8"/></svg>'],["alignRight","justifyRight",'<svg viewBox="0 0 16 16"><path d="M2 3.5h12M6 6.5h8M2 9.5h12M6 12.5h8"/></svg>'],["link","createLink",'<svg viewBox="0 0 16 16"><path d="M7 9a3 3 0 0 0 4.2 0l2.3-2.3a3 3 0 0 0-4.2-4.2L8.2 3.6M9 7a3 3 0 0 0-4.2 0L2.5 9.3a3 3 0 0 0 4.2 4.2l1.1-1.1"/></svg>']],ro=({form:e,name:t,node:n,id:r,document:i,labels:o=Ke.en})=>{let a=i.createElement("div");a.id=r,a.className="fd-input fd-richtext",a.setAttribute("role","textbox"),a.setAttribute("aria-multiline","true"),a.setAttribute("contenteditable","true"),n.placeholder&&(a.setAttribute("data-placeholder",n.placeholder),a.setAttribute("aria-placeholder",n.placeholder));let d=n.options?.toolbar!==!1,s="";a.addEventListener("input",()=>{let c=no(a.innerHTML,i);s=c,e.setValue(t,c.trim()===""?null:c)}),a.addEventListener("blur",()=>{a.innerHTML!==s&&(a.innerHTML=s)});let l=d?Ul(a,i,o):null,f=a;return l&&(f=i.createElement("div"),f.className="fd-richtext-box",f.setAttribute("role","group"),a.setAttribute("aria-labelledby",`${r}-label`),f.append(l.bar,l.linkRow,a)),{element:f,focus:()=>a.focus(),destroy:()=>l?.destroy(),update(c){l&&(l.bar.hidden=c.readonly,c.readonly&&(l.linkRow.hidden=!0));let x=no(typeof c.value=="string"?c.value:"",i);(x!==s||i.activeElement!==a)&&(a.innerHTML!==x&&(a.innerHTML=x),s=x),a.setAttribute("contenteditable",String(!c.readonly)),a.classList.toggle("fd-blank",!x.trim()),a.setAttribute("aria-readonly",String(c.readonly)),a.setAttribute("aria-invalid",String(c.invalid)),c.describedBy&&a.setAttribute("aria-describedby",c.describedBy)}}};function Ul(e,t,n){let r=t.createElement("div");r.className="fd-richtext-bar",r.setAttribute("role","toolbar"),r.setAttribute("aria-label",n.formatting);let i=null,o=()=>{e.focus();let S=t.getSelection();i&&S&&(S.removeAllRanges(),S.addRange(i))},a=(S,m)=>{o(),t.execCommand?.(S,!1,m)},d=t.createElement("select");d.className="fd-richtext-style",d.setAttribute("aria-label",n.textStyle);for(let[S,m]of[["p","paragraph"],["h2","heading"],["h3","subheading"]]){let k=t.createElement("option");k.value=S,k.textContent=n[m],d.append(k)}d.addEventListener("change",()=>a("formatBlock",`<${d.value}>`));let s=t.createElement("div");s.className="fd-link-row",s.hidden=!0;let l=t.createElement("input");l.className="fd-input",l.type="url",l.placeholder="https://",l.setAttribute("aria-label",n.linkAddress);let f=t.createElement("button");f.type="button",f.className="fd-button fd-link-apply",f.textContent=n.applyLink;let c=t.createElement("button");c.type="button",c.className="fd-button fd-button-link fd-link-remove",c.textContent=n.removeLink,s.append(l,f,c),f.addEventListener("click",()=>{let S=ps(l.value);if(!S){l.setAttribute("aria-invalid","true");return}l.setAttribute("aria-invalid","false"),o(),t.execCommand?.("createLink",!1,S),s.hidden=!0}),c.addEventListener("click",()=>{o(),t.execCommand?.("unlink",!1),s.hidden=!0}),l.addEventListener("keydown",S=>{S.key==="Enter"?(S.preventDefault(),f.click()):S.key==="Escape"&&(S.preventDefault(),s.hidden=!0,o())});let x=us.map(([S,m,k])=>{let h=t.createElement("button");return h.type="button",h.className="fd-richtext-tool",h.setAttribute("aria-label",n[S]),h.title=n[S],h.innerHTML=k,h.querySelector("svg")?.setAttribute("aria-hidden","true"),["bold","italic","underline","heading"].includes(m)&&h.setAttribute("aria-pressed","false"),h.addEventListener("mousedown",E=>E.preventDefault()),h.addEventListener("click",()=>{if(m==="heading")return a("formatBlock",d.value==="h2"?"<p>":"<h2>");if(m!=="createLink")return a(m);s.hidden=!1,l.value="",l.focus()}),h});r.append(d,...x);let b=[d,...x];b.forEach((S,m)=>S.tabIndex=m===0?0:-1),r.addEventListener("keydown",S=>{if(S.key!=="ArrowRight"&&S.key!=="ArrowLeft")return;let m=b.indexOf(t.activeElement);if(m<0)return;let k=getComputedStyle(r).direction==="rtl",h=S.key==="ArrowRight"!==k?1:-1,E=b[(m+h+b.length)%b.length];S.preventDefault(),b.forEach(L=>L.tabIndex=L===E?0:-1),E.focus()});let y=()=>{let S=t.getSelection();if(!S||!S.rangeCount||!e.contains(S.anchorNode))return;i=S.getRangeAt(0).cloneRange();let m=String(t.queryCommandValue?.("formatBlock")??"").toLowerCase().replace(/[<>]/g,"");d.value=m==="h2"||m==="h3"?m:"p";for(let k of x){let h=us[x.indexOf(k)][1];k.hasAttribute("aria-pressed")&&k.setAttribute("aria-pressed",String(h==="heading"?m==="h2":t.queryCommandState?.(h)??!1))}};return t.addEventListener("selectionchange",y),{bar:r,linkRow:s,destroy:()=>t.removeEventListener("selectionchange",y)}}var io=({form:e,name:t,id:n,document:r,labels:i=Ke.en})=>{let o=r.createElement("div");o.className="fd-json";let a=r.createElement("textarea");a.id=n,a.className="fd-input fd-textarea fd-code",a.spellcheck=!1;let d=r.createElement("div");return d.className="fd-cell-error",d.hidden=!0,o.append(a,d),a.addEventListener("input",()=>{if(a.value.trim()===""){d.hidden=!0,e.setValue(t,null);return}try{let s=JSON.parse(a.value);d.hidden=!0,e.setValue(t,s)}catch{d.hidden=!1,d.textContent=i.invalidJson}}),{element:o,focus:()=>a.focus(),update(s){if(r.activeElement!==a){let l=s.value===null||s.value===void 0?"":JSON.stringify(s.value,null,2);a.value!==l&&(a.value=l)}a.readOnly=s.readonly,a.setAttribute("aria-invalid",String(s.invalid||!d.hidden))}}};var ms=new WeakMap;function Kl(e){let t=ms.get(e);return t===void 0&&(t=Math.floor(Math.random()*4294967296)>>>0,ms.set(e,t)),t}function Gl(e,t){let n=e^2654435769;for(let r=0;r<t.length;r++)n=Math.imul(n^t.charCodeAt(r),2246822507),n^=n>>>13;return n>>>0}function Jl(e){let t=e;return()=>{t=t+1831565813|0;let n=Math.imul(t^t>>>15,1|t);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}function Qt(e,t,n,r){if(r.options?.shuffle!==!0)return[...e];let i=(d,s)=>d[s]===!0,o=e.filter(d=>!i(d,"fixed")&&!i(d,"exclusive")),a=Jl(Gl(Kl(t),n));for(let d=o.length-1;d>0;d--){let s=Math.floor(a()*(d+1));[o[d],o[s]]=[o[s],o[d]]}return o.push(...e.filter(d=>!i(d,"fixed")&&i(d,"exclusive"))),e.map(d=>i(d,"fixed")?d:o.shift())}var gs=({form:e,name:t,field:n,node:r,id:i,document:o})=>{let a=n,d=a.multiple?"checkbox":"radio",s=(m,k={},...h)=>{let E=o.createElement(m);for(let[L,v]of Object.entries(k))E.setAttribute(L,v);return E.append(...h),E},l=s("table",{id:i,class:"fd-matrix-table"});l.append(s("thead",{},s("tr",{},s("th",{scope:"col"}),...a.columns.map(m=>s("th",{scope:"col"},m.label)))));let f=s("tbody"),c=[],x=[];for(let m of Qt(a.rows,e,t,r)){let k=s("tr",{role:d==="radio"?"radiogroup":"group","aria-label":m.label});x.push(k),k.append(s("th",{scope:"row"},m.label));for(let h of a.columns){let E=s("input",{type:d,name:`${i}-${m.value}`,value:String(h.value),"data-row":String(m.value),"aria-label":`${m.label}: ${h.label}`});E.addEventListener("change",()=>{if(a.onePerColumn&&E.checked)for(let L of c)L.value===E.value&&L!==E&&(L.checked=!1);S()}),c.push(E),k.append(s("td",{},s("label",{class:"fd-matrix-pick"},E,s("span",{class:"fd-matrix-column"},h.label))))}f.append(k)}l.append(f);let b=s("div",{class:"fd-matrix"},l),y=m=>a.columns.find(k=>String(k.value)===m)?.value??m;function S(){let m={};for(let k of a.rows){let h=c.filter(E=>E.dataset.row===String(k.value)&&E.checked).map(E=>y(E.value));(a.multiple?h.length:h.length===1)&&(m[String(k.value)]=a.multiple?h:h[0])}e.setValue(t,Object.keys(m).length?m:null)}return{element:b,focus:()=>(c.find(m=>m.checked)??c[0])?.focus(),update(m){let k=m.value&&typeof m.value=="object"&&!Array.isArray(m.value)?m.value:{};for(let h of c){let E=k[h.dataset.row??""],L=Array.isArray(E)?E.map(String):E==null?[]:[String(E)];h.checked=L.includes(h.value),h.disabled=m.readonly}if(l.setAttribute("aria-invalid",String(m.invalid)),d==="radio")for(let h of x)Ae(h,"aria-required",String(m.required));m.describedBy?l.setAttribute("aria-describedby",m.describedBy):l.removeAttribute("aria-describedby")}}};var jn=600,lr=180,Yl="#1b2a5c",Xl='"Segoe Script", "Snell Roundhand", "Brush Script MT", "Apple Chancery", cursive',Zl=e=>Math.floor(e.length*3/4)-(e.endsWith("==")?2:e.endsWith("=")?1:0),Ql=e=>e.data??e.url??"",hs=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=Fe(a,d),l=ve(o),f=r.options??{},c=f.color,x=typeof c=="string"&&/^#[\da-f]{6}$/i.test(c)?c:Yl,b=f.penWidth,y=typeof b=="number"&&b>0?b:3,S=f.footerLabel,m=l("canvas",{class:"fd-signature-pad",width:String(jn),height:String(lr),role:"img","aria-label":s.signaturePad}),k=l("span",{class:"fd-signature-hint","aria-hidden":"true"},r.placeholder||s.signHere),h=l("img",{class:"fd-signature-image",alt:n.label,hidden:""}),E=l("input",{type:"text",class:"fd-input fd-signature-typed","aria-label":s.typeSignature,placeholder:s.typeSignature,autocomplete:"name"}),L=J=>l("button",{type:"button",class:"fd-button fd-button-link",hidden:""},J),v=L(s.undo),R=L(s.clearDrawing);R.classList.add("fd-signature-clear");let w=f.upload===!0?L(s.uploadSignature):null,p=l("input",{type:"file",accept:"image/*",class:"fd-sr-only",tabindex:"-1","aria-hidden":"true"}),T=l("div",{id:i,class:"fd-signature",role:"group"},l("div",{class:"fd-signature-box"},m,h,k),...typeof S=="string"&&S?[l("span",{class:"fd-signature-footer"},S)]:[],l("div",{class:"fd-signature-tools"},E,v,...w?[w,p]:[],R)),C=()=>{let J=m.getContext("2d");return J&&(J.strokeStyle=J.fillStyle=x,J.lineWidth=y,J.lineCap=J.lineJoin="round"),J},W=null,O=!1,H=null,M=[],P=null,j=()=>!M.length&&!H;function _(){let J=C();if(J){J.clearRect(0,0,jn,lr),H&&(J.font=`italic 64px ${Xl}`,J.textAlign="center",J.textBaseline="middle",J.fillText(H,jn/2,lr/2,jn-40));for(let B of M){J.beginPath(),J.arc(B[0].x,B[0].y,y/2,0,Math.PI*2),J.fill();for(let te=1;te<B.length;te++)D(B[te-1],B[te])}}}function D(J,B){let te=C();te?.beginPath(),te?.moveTo(J.x,J.y),te?.lineTo(B.x,B.y),te?.stroke()}function V(){M=[],H=null,_()}function z(){if(k.hidden=!j(),j())return W=null,e.setValue(t,null);let J;try{J=m.toDataURL("image/png")}catch{return}if(!J)return;let B=J.slice(J.indexOf(",")+1);W=B,e.setValue(t,{name:"signature.png",type:"image/png",size:Zl(B),data:B,...H&&!M.length?{text:H}:{}})}function $(J){let B=m.getBoundingClientRect();return{x:(J.clientX-B.left)*jn/(B.width||jn),y:(J.clientY-B.top)*lr/(B.height||lr)}}m.addEventListener("pointerdown",J=>{O||J.button!==0||(J.preventDefault(),m.setPointerCapture?.(J.pointerId),P=$(J),M.push([P]),k.hidden=!0,_())}),m.addEventListener("pointermove",J=>{if(!P)return;let B=$(J);D(P,B),M[M.length-1].push(B),P=B});let ee=()=>{P&&(P=null,z())};m.addEventListener("pointerup",ee),m.addEventListener("pointercancel",ee),E.addEventListener("input",()=>{Z(),M=[],H=E.value.trim()||null,_(),z()}),v.addEventListener("click",()=>{M.pop(),_(),z()}),w?.addEventListener("click",()=>p.click()),p.addEventListener("change",()=>{let J=p.files?.[0];p.value="",J&&Xr(J).then(B=>e.setValue(t,B))}),R.addEventListener("click",()=>{V(),W=null,E.value="",Z(),e.setValue(t,null),E.focus()});function Z(){h.hidden=!0,m.hidden=!1}return{element:T,focus:()=>(E.hidden?R:E).focus(),update(J){O=J.readonly;let B=J.value&&typeof J.value=="object"&&!Array.isArray(J.value)?J.value:null,te=o.activeElement!==E;if(B&&Ql(B)!==W){let Ee=B.data?`data:${B.type};base64,${B.data}`:B.url??"";h.getAttribute("src")!==Ee&&(h.src=Ee),h.hidden=!1,m.hidden=!0,W=null,V(),te&&(E.value=B.text??"")}else B||((W!==null||!h.hidden)&&(W=null,V(),te&&(E.value="")),Z());k.hidden=O||!j()||!h.hidden,E.hidden=O,E.readOnly=O,R.hidden=O||!B,v.hidden=O||!M.length||!h.hidden,w&&(w.hidden=O),m.classList.toggle("fd-signature-locked",O),ze(T,J),E.setAttribute("aria-invalid",String(J.invalid))}}};var oo=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d="en"})=>{let s=Fe(a,d),l=ve(o),f=w=>w in n&&typeof n[w]=="number"?n[w]:void 0,c=f("min")??0,x=f("max")??100,b=typeof r.options?.step=="number"&&r.options.step>0?r.options.step:1,y=n.type==="integer"?0:n.type==="float"&&n.digits?n.digits[1]:Math.max(0,-Math.floor(Math.log10(b))),S=w=>ut(w,y,d),m=l("input",{id:i,type:"range",class:"fd-slider-input",min:String(c),max:String(x),step:String(b)}),k=l("output",{class:"fd-slider-value",for:i,"aria-hidden":"true"}),h=[r.options?.startLabel,r.options?.endLabel].map(w=>typeof w=="string"?w:""),E=(w,p)=>l("span",{class:p?"fd-slider-last":void 0},S(w),...h[p]?[l("span",{class:"fd-slider-word"},h[p])]:[]),L=l("div",{class:"fd-slider-ends","aria-hidden":"true"},E(c,0),E(x,1)),v=Zt(o,s,()=>{e.setValue(t,null),m.focus()},r),R=l("div",{class:"fd-slider"},l("div",{class:"fd-slider-track"},m,k),L,v.button);return h.some(Boolean)&&m.setAttribute("aria-description",h.filter(Boolean).join(" \u2026 ")),m.addEventListener("input",()=>e.setValue(t,Number(m.value))),{element:R,focus:()=>m.focus(),update(w){let p=typeof w.value=="number"?w.value:null;R.classList.toggle("fd-slider-empty",p===null);let T=String(p??(c+x)/2);m.value!==T&&(m.value=T),k.textContent=p===null?"\u2013":S(p),m.setAttribute("aria-valuetext",p===null?s.notAnswered:S(p)),m.disabled=w.readonly,v.allow(w),v.show(p!==null),ze(m,w)}}};function ni(e,t,n){let r=i=>e.some(o=>o.exclusive&&o.value===i);return r(n)?[n]:[...t.filter(i=>!r(i)),n]}function ri(e,t,n){let r=n.validate?.find(o=>o.atMost!==void 0&&(o.when??!0)===!0&&o.level!=="warning")?.atMost,i=r?e("span",{class:"fd-choice-limit",role:"status"}):null;return{element:i,full(o){let a=!!r&&o>=r;return i&&tt(i,a?Te(t.upTo,{n:r}):""),a}}}function ii(e,t){let n=t.options?.columns;n==="row"?e.classList.add("fd-choices-row"):typeof n=="number"&&n>=1&&(e.classList.add("fd-choices-columns"),e.style.setProperty("--fd-choice-columns",String(Math.min(4,Math.round(n)))))}var bs=e=>vs(e,!1),ys=e=>vs(e,!0);function vs({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d},s){let l=Fe(a,d),f=ve(o),c=n.type==="selection"?n.options:[],x=n.type==="selection"&&n.ownAnswers===!0&&!s,b=`${i}-list`,y=f("input",{id:i,type:"text",class:"fd-input fd-combo-input",role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-controls":b,autocomplete:"off",placeholder:r.placeholder||l.search}),S=f("ul",{id:b,class:"fd-listbox",role:"listbox",hidden:""}),m=f("ul",{class:"fd-chips"}),k=f("div",{class:"fd-combo"},y,S),h=s?f("div",{class:"fd-choice-search"},k):f("div",{class:"fd-tags fd-choice-tags"},m,k),E=()=>e.getState().values[t],L=()=>Array.isArray(E())?E():[],v=P=>e.setValue(t,P),R=P=>c.find(j=>j.value===P)?.label??(P==null?"":String(P)),w=[],p=-1,T=!1;function C(){S.replaceChildren(...w.map((P,j)=>{let _=f("li",{id:`${b}-${j}`,role:"option",class:`fd-option${j===p?" fd-active":""}`,"aria-selected":String(j===p)},P.label);return _.addEventListener("mousedown",D=>D.preventDefault()),_.addEventListener("click",()=>H(P)),_})),w.length||S.append(f("li",{class:"fd-empty"},l.noResults)),Ae(y,"aria-activedescendant",p>=0?`${b}-${p}`:null)}function W(){let P=y.value.trim(),j=s&&P===R(E())?"":P.toLowerCase(),_=new Set(L());w=c.filter(D=>!_.has(D.value)&&D.label.toLowerCase().includes(j)),x&&j&&!_.has(P)&&!c.some(D=>D.label.toLowerCase()===j)&&w.push({value:P,label:Te(l.createNamed,{name:P})}),p=-1,C(),S.hidden=!1,y.setAttribute("aria-expanded","true")}function O(){S.hidden=!0,p=-1,y.setAttribute("aria-expanded","false"),y.removeAttribute("aria-activedescendant")}function H(P){if(s)return y.value=P.label,v(P.value),O();y.value="",v(ni(c,L(),P.value)),o.activeElement===y?W():O()}s||y.addEventListener("focus",()=>!T&&W()),y.addEventListener("click",()=>!T&&S.hidden&&W()),y.addEventListener("input",()=>!T&&W()),y.addEventListener("blur",()=>{O(),s&&!T&&(y.value.trim()?y.value=R(E()):v(null))}),y.addEventListener("keydown",P=>{if(!T)switch(P.key){case"ArrowDown":case"ArrowUp":{if(P.preventDefault(),S.hidden)return W();if(!w.length)return;let j=P.key==="ArrowDown";p=p===-1?j?0:w.length-1:(p+(j?1:-1)+w.length)%w.length,C(),S.children[p]?.scrollIntoView?.({block:"nearest"});return}case"Enter":{let j=w[p]??(y.value.trim()?w[0]:void 0);if(S.hidden||!j)return;P.preventDefault(),H(j);return}case"Escape":S.hidden||P.preventDefault(),O();return;case"Backspace":!s&&y.value===""&&L().length&&v(L().slice(0,-1));return}});let M="";return{element:h,focus:()=>y.focus(),update(P){if(T=P.readonly,T&&O(),ze(y,P),Ae(y,"aria-required",String(P.required)),s){y.readOnly=T,o.activeElement!==y&&(y.value=R(P.value));return}let j=Array.isArray(P.value)?P.value:[];y.hidden=T;let _=JSON.stringify([T,j]);_!==M&&(M=_,m.replaceChildren(...j.map(D=>{let V=R(D),z=f("li",{class:"fd-chip"},f("span",{class:"fd-chip-label"},V));if(!T){let $=f("button",{type:"button",class:"fd-chip-remove","aria-label":Te(l.remove,{name:V})},"\xD7");$.addEventListener("click",()=>v(L().filter(ee=>ee!==D))),z.append($)}return z})),S.hidden||W())}}}var ec='<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="3" y="4" width="18" height="16" rx="2"/><circle cx="9" cy="10" r="2"/><path d="M21 16l-5-5-9 9"/></svg>',xs=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=Fe(a,d),l=ve(o),f=n.type==="selection"&&n.multiple===!0,c=n.type==="selection"?n.options:[],x=Qt(c,e,t,r),b=r.options??{},y=b.showLabels===!1,S=l("div",{id:i,class:`fd-image-choices${y?" fd-image-choices-bare":""}`,role:f?"group":"radiogroup","data-size":b.imageSize,"data-fit":b.imageFit});ii(S,r);let m=f?ri(l,s,r):null,k=x.map(R=>{let w=R.image?l("img",{src:R.image,alt:R.alt??"",loading:"lazy",draggable:"false"}):l("span",{class:"fd-image-card-blank"});R.image||(w.innerHTML=ec);let p=l("button",{type:"button",class:"fd-image-card",role:f?"checkbox":"radio","aria-checked":"false","aria-label":y?R.label:void 0},l("span",{class:"fd-image-card-picture"},w),l("span",{class:"fd-image-card-words"},R.label));return p.addEventListener("click",()=>E(R)),S.append(p),p}),h=()=>e.getState().values[t];function E(R){if(!f)return e.setValue(t,R.value);let w=Array.isArray(h())?h():[],p=new Set(w.includes(R.value)?w.filter(T=>T!==R.value):ni(c,w,R.value));e.setValue(t,c.filter(T=>p.has(T.value)).map(T=>T.value))}let L=!1;f||S.addEventListener("keydown",R=>{if(L)return;let w=k.indexOf(R.target);if(w===-1)return;let p=Nt(S),T={ArrowDown:1,ArrowUp:-1,ArrowRight:p?-1:1,ArrowLeft:p?1:-1},C=R.key==="Home"?0:R.key==="End"?k.length-1:R.key in T?(w+T[R.key]+k.length)%k.length:-1;C!==-1&&(R.preventDefault(),E(x[C]),k[C].focus())});let v=f?null:Zt(o,s,()=>{e.setValue(t,null),k[0]?.focus()},r);return m?.element&&S.append(m.element),{element:v?l("div",{class:"fd-choices-box"},S,v.button):S,focus:()=>(k.find(R=>R.getAttribute("aria-checked")==="true")??k[0])?.focus(),update(R){L=R.readonly;let w=new Set(Array.isArray(R.value)?R.value:[R.value]),p=f?-1:Math.max(0,x.findIndex(C=>w.has(C.value))),T=!!m?.full(Array.isArray(R.value)?R.value.length:0);k.forEach((C,W)=>{let O=w.has(x[W].value);C.setAttribute("aria-checked",String(O)),C.tabIndex=f||W===p?0:-1,C.disabled=L||T&&!O&&!x[W].exclusive}),v?.allow(R),v?.show(x.some(C=>w.has(C.value))),ze(S,R)}}};var tc=4,ws=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=Fe(a,d),l=ve(o),f=Qt(n.type==="selection"?n.options:[],e,t,r),c=l("ol",{class:"fd-rank-list"}),x=Hr(l),b=r.options?.top,y=typeof b=="number"&&b>=1&&b<f.length?Math.floor(b):0,S=l("div",{class:"fd-rank-pool"}),m=l("button",{type:"button",class:"fd-button fd-rank-keep"},s.keepOrder);m.addEventListener("click",()=>e.setValue(t,L.map(O=>O.option.value)));let k=l("div",{id:i,class:"fd-ranking",role:"group"},...y?[l("div",{class:"fd-choice-limit"},Te(s.upTo,{n:y})),S,c]:[c,m],x.element),h=f.map(O=>{let H=O.label,M=l("span",{class:"fd-rank-place","aria-hidden":"true"}),P=l("button",{type:"button",class:"fd-rank-move fd-rank-up","aria-label":Te(s.moveUp,{label:H})},"\u2191"),j=l("button",{type:"button",class:"fd-rank-move fd-rank-down","aria-label":Te(s.moveDown,{label:H})},"\u2193"),_=l("span",{class:"fd-rank-grip","aria-hidden":"true"}),D=l("span",{class:"fd-rank-tools"},P,j),V=l("li",{class:"fd-rank-item","data-value":String(O.value)},_,M,l("span",{class:"fd-rank-words"},H),D),z={option:O,element:V,place:M,up:P,down:j};if(y){let $=l("button",{type:"button",class:"fd-rank-pick"},H);$.addEventListener("click",()=>!E&&L.length<y&&w([...L,z],z));let ee=l("button",{type:"button",class:"fd-rank-move fd-rank-out","aria-label":Te(s.remove,{name:H})},"\xD7");ee.addEventListener("click",()=>{x.say(Te(s.removed,{name:H})),e.setValue(t,L.filter(Z=>Z!==z).map(Z=>Z.option.value))}),D.append(ee),S.append($),z.pick=$}return P.addEventListener("click",()=>p(z,-1,"up")),j.addEventListener("click",()=>p(z,1,"down")),V.addEventListener("pointerdown",$=>C(z,$)),z}),E=!1,L=[...h],v=null;function R(O){for(L=O,O.forEach((H,M)=>{c.children[M]!==H.element&&c.insertBefore(H.element,c.children[M]??null),H.place.textContent=String(M+1),H.up.disabled=M===0,H.down.disabled=M===O.length-1});c.children.length>O.length;)c.lastElementChild?.remove()}function w(O,H){x.say(Te(s.movedTo,{label:H.option.label,n:O.indexOf(H)+1,total:O.length})),e.setValue(t,O.map(M=>M.option.value))}function p(O,H,M){let P=L.indexOf(O),j=P+H;if(E||j<0||j>=L.length)return;let _=[...L];_.splice(P,1),_.splice(j,0,O),v=O.element.contains(o.activeElement)?{item:O,which:M==="up"&&j===0||M==="down"&&j===_.length-1?M==="up"?"down":"up":M}:null,w(_,O),T()}function T(){if(!v)return;let{item:O,which:H}=v;v=null,O[H].focus()}c.addEventListener("keydown",O=>{if(E||!O.altKey||O.key!=="ArrowUp"&&O.key!=="ArrowDown")return;let H=h.find(M=>M.element.contains(O.target));H&&(O.preventDefault(),p(H,O.key==="ArrowUp"?-1:1,O.key==="ArrowUp"?"up":"down"))});function C(O,H){if(E||H.button!==0||H.target.closest("button")||H.pointerType==="touch"&&!H.target.closest(".fd-rank-grip"))return;let M=H.clientY,P=[...L],j=!1;O.element.setPointerCapture?.(H.pointerId);let _=V=>{if(!j&&Math.abs(V.clientY-M)<tc)return;j||(j=!0,O.element.classList.add("fd-rank-lifted")),V.preventDefault();let z=L.filter(ee=>ee!==O),$=z.filter(ee=>{let Z=ee.element.getBoundingClientRect();return Z.top+Z.height/2<V.clientY}).length;L.indexOf(O)!==$&&R([...z.slice(0,$),O,...z.slice($)])},D=()=>{O.element.removeEventListener("pointermove",_),O.element.removeEventListener("pointerup",D),O.element.removeEventListener("pointercancel",D),O.element.classList.remove("fd-rank-lifted"),L.some((V,z)=>V!==P[z])&&w(L,O)};O.element.addEventListener("pointermove",_),O.element.addEventListener("pointerup",D),O.element.addEventListener("pointercancel",D)}function W(O){let H=(Array.isArray(O)?O:[]).map(M=>h.find(P=>P.option.value===M)).filter(M=>!!M);return y?H.slice(0,y):Array.isArray(O)?[...new Set([...H,...L])]:L}return R(y?[]:L),{element:k,focus:()=>(h.find(O=>O.pick&&!O.pick.hidden&&!O.pick.disabled)?.pick??(L[0]?.down.disabled?L[0]?.up:L[0]?.down))?.focus(),update(O){E=O.readonly,k.classList.toggle("fd-ranking-locked",E);let H=W(O.value);(H.length!==L.length||H.some((M,P)=>M!==L[P])||!y&&!c.children.length)&&R(H);for(let M of h)M.up.hidden=M.down.hidden=E,M.pick&&(M.pick.hidden=L.includes(M),M.pick.disabled=E||L.length>=y,M.element.querySelector(".fd-rank-out").hidden=E);m.hidden=E||Array.isArray(O.value)&&O.value.length>0,T(),ze(k,O)}}};var ks={street:["addressStreet","street-address"],line2:["addressLine2","address-line2"],city:["addressCity","address-level2"],region:["addressRegion","address-level1"],postcode:["addressPostcode","postal-code"],country:["addressCountry","country"]},nc=e=>typeof e=="string"&&e in ks,rc="AC AN BU CP CQ CS DD DG DY EA EU EZ FX HV IC NH QO RH SU TA TP UK UN VD XA XB YD YU ZR ZZ",ao={};function so(e){if(!ao[e]){let t=new Intl.DisplayNames([e],{type:"region",fallback:"none"}),n=[];for(let r=65;r<91;r++)for(let i=65;i<91;i++){let o=String.fromCharCode(r,i),a=!rc.includes(o)&&t.of(o);a&&n.push([o,a])}ao[e]=n.sort((r,i)=>r[1].localeCompare(i[1],e))}return ao[e]}var Ss=({form:e,name:t,node:n,id:r,document:i,labels:o,locale:a="en"})=>{let d=Fe(o,a),s=ve(i),l=n.options??{},f=l.parts,c=Array.isArray(f)?f.filter(nc):["street","city","postcode","country"],x=Array.isArray(l.requiredParts)?l.requiredParts:[],b=typeof l.country=="string"?l.country:"",y=s("div",{id:r,class:"fd-address",role:"group"}),S=(k,h)=>{let E=e.getState().values[t],L=E&&typeof E=="object"&&!Array.isArray(E)?{...E}:{};L[k]=h,b&&c.includes("country")&&L.country===void 0&&(L.country=b);let v=Object.fromEntries(Object.entries(L).filter(([,w])=>typeof w!="string"||w.trim()!=="")),R=Object.keys(v);e.setValue(t,R.length&&(k==="country"||R.join()!=="country"||v.country!==b)?v:null)},m=c.map(k=>{let[h,E]=ks[k],L={id:`${r}-${k}`,class:"fd-input","data-part":k,autocomplete:k==="street"&&c.includes("line2")?"address-line1":E,"aria-required":x.includes(k)?"true":void 0},v=k==="country"?s("select",L,s("option",{value:""}),...so(a).map(([R,w])=>s("option",{value:R},w))):s("input",{type:"text",...L});return v.addEventListener(k==="country"?"change":"input",()=>S(k,v.value)),k==="country"&&v.classList.add("fd-select"),y.append(s("div",{class:`fd-address-part fd-address-${k}${x.includes(k)?" fd-required":""}`},s("label",{class:"fd-address-label",for:v.id},d[h]),v)),{part:k,input:v}});return{element:y,focus:()=>m[0]?.input.focus(),update(k){let h=k.value&&typeof k.value=="object"&&!Array.isArray(k.value)?k.value:{};for(let{part:E,input:L}of m){let v=typeof h[E]=="string"?h[E]:E==="country"&&h.country===void 0?b:"";L instanceof HTMLSelectElement?(v&&![...L.options].some(R=>R.value===v)&&L.append(s("option",{value:v},v)),L.disabled=k.readonly):L.readOnly=k.readonly,i.activeElement!==L&&L.value!==v&&(L.value=v),L.setAttribute("aria-invalid",String(k.invalid&&(!x.length||x.includes(E)&&!v.trim())))}ze(y,k)}}};var Ls=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0,Es=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d,dialogs:s})=>{let l=Fe(a,d),f=ve(o),c=n,x=r.options??{},b=Ls(x.min)??0,y=Ls(x.max)??1/0,S=typeof x.itemLabel=="string"&&x.itemLabel.trim()?x.itemLabel.trim():null,m=M=>S?`${S} ${M}`:Te(l.entry,{n:M}),k=(r.columns??Object.keys(c.fields)).filter(M=>c.fields[M]&&c.fields[M].type!=="one2many"&&M!==c.sequenceField&&M!==c.lineKinds?.field),h=f("div",{class:"fd-repeat-list"}),E=f("button",{type:"button",class:"fd-button fd-repeat-add"},typeof x.addLabel=="string"&&x.addLabel?x.addLabel:l.addAnother),L=Hr(f),v=f("div",{id:i,class:"fd-repeat",role:"group"},h,E,L.element),R=new Map,w=()=>e.getState().values[t]??[],p=!1,T=null;for(let M=w().length;M<b;M++)e.addLine(t);E.addEventListener("click",()=>{if(p||w().length>=y)return;let M=e.addLine(t);T=()=>R.get(M)?.fields[0]?.widget.focus(),H()});function C(M){let P=`${i}-${M.key}-title`,j=f("span",{id:P,class:"fd-repeat-title"}),_=f("button",{type:"button",class:"fd-repeat-remove"},"\xD7"),D=(B,te,Ee)=>{let he=f("button",{type:"button",class:"fd-repeat-tool"},B);return he.addEventListener("click",Ee),[he,te]},V=()=>w().findIndex(B=>B.key===M.key),z=[D("\u2191","moveUp",()=>W(M.key,V()-1)),D("\u2193","moveDown",()=>W(M.key,V()+1)),D("\u29C9","copy",()=>O(M.key))],$=s&&(r.lineOpens||r.lineForm)?f("button",{type:"button",class:"fd-repeat-tool fd-line-open","aria-label":l.openLine,title:l.openLine},"\u2197"):null;$?.addEventListener("click",()=>{let B=w().find(te=>te.key===M.key);B&&s&&Jr(e,t,r,B,s,p)});let ee=f("div",{class:"fd-repeat-fields"}),Z=f("div",{class:"fd-repeat-card",role:"group","aria-labelledby":P,"data-line":M.key},f("div",{class:"fd-repeat-head"},j,...z.map(([B])=>B),...$?[$]:[],_),ee),J=k.map(B=>{let te=c.fields[B],Ee=`${i}-${M.key}-${B}`,he={type:"field",id:`${r.id}.${M.key}.${B}`,field:B},ke=$t({form:Gr(e,t,M.key),name:B,field:te,node:he,id:Ee,document:o,labels:a,locale:d,dialogs:s}),se=f("label",{class:"fd-repeat-label",for:Ee},te.label);["INPUT","SELECT","TEXTAREA"].includes(ke.element.tagName)||se.addEventListener("click",()=>ke.focus());let re=f("div",{class:"fd-cell-error",hidden:""});return ee.append(f("div",{class:"fd-repeat-field"},se,ke.element,re)),{name:B,def:te,widget:ke,error:re}});return _.addEventListener("click",()=>{let B=w(),te=B.findIndex(se=>se.key===M.key);if(p||te===-1||B.length<=b)return;let Ee=j.textContent??"";e.removeLine(t,M.key),L.say(Te(l.removed,{name:Ee}));let he=w(),ke=he[Math.min(te,he.length-1)];T=()=>ke?R.get(ke.key)?.fields[0]?.widget.focus():E.focus(),H()}),{element:Z,title:j,remove:_,tools:z,fields:J}}function W(M,P){let j=w().findIndex(V=>V.key===M);if(p||P<0||P>=w().length||P===j)return;let _=R.get(M)?.title.textContent??"";Wn(e,t,c,M,P);let D=j>P&&P>0||P===w().length-1?0:1;R.get(M)?.tools[D][0].focus(),L.say(Te(l.movedTo,{label:_,n:P+1,total:w().length}))}function O(M){let P=w(),j=P.findIndex(V=>V.key===M);if(p||j<0||P.length>=y)return;let _={...P[j].values};c.sequenceField&&delete _[c.sequenceField];let D=e.addLine(t,_);Wn(e,t,c,D,j+1),R.get(D)?.fields[0]?.widget.focus()}function H(){let M=T;T=null,M?.()}return{element:v,focus:()=>([...R.values()].find(M=>M.element===h.firstElementChild)?.fields[0]?.widget??E).focus(),update(M){p=M.readonly;let P=M.value??[],j=e.getState().errors,_=new Set(P.map(D=>D.key));for(let[D,V]of R)if(!_.has(D)){V.element.remove();for(let z of V.fields)z.widget.destroy?.();R.delete(D)}P.forEach((D,V)=>{let z=R.get(D.key);z||R.set(D.key,z=C(D)),h.children[V]!==z.element&&h.insertBefore(z.element,h.children[V]??null),z.title.textContent=m(V+1),z.remove.setAttribute("aria-label",Te(l.remove,{name:z.title.textContent})),z.remove.hidden=p||P.length<=b||r.lineDelete!==void 0&&!e.lineState(r.id,D.key).deletable;for(let[$,ee]of z.tools)$.setAttribute("aria-label",Te(l[ee],{label:z.title.textContent,name:z.title.textContent})),$.hidden=p||(ee==="moveUp"?V===0:ee==="moveDown"?V===P.length-1:P.length>=y);for(let $ of z.fields){let ee=j[`${t}.${D.key}.${$.name}`];$.error.hidden=!ee,$.error.textContent=ee??"",$.widget.update({value:D.values[$.name],values:D.values,parent:M.values,readonly:p||$.def.readonly===!0,required:$.def.required===!0,invalid:!!ee})}}),E.hidden=p||P.length>=y,ze(v,M)}}};function lo(e,{form:t,name:n,field:r,document:i,labels:o,locale:a},d){let s=r.type==="char"||r.type==="text"?r.size:void 0;if(!s||t.page.fields[n]!==r)return e;let l=ve(i),f=l("div",{class:"fd-count","aria-hidden":"true"}),c=l("div",{class:"fd-sr-only","aria-live":"polite"}),x;return{...e,element:l("div",{class:"fd-counted"},e.element,f,c),update(b){e.update(b);let y=d.value.length;tt(f,`${y} / ${s}`),f.classList.toggle("fd-count-near",y>=s*.9),kt(f,b.readonly),i.activeElement===d&&(clearTimeout(x),x=setTimeout(()=>tt(c,Te(Fe(o,a).charactersLeft,{n:s-y})),700))}}}function Rs(e,t){let n=t.options?.rows;return typeof n=="number"&&(e.rows=n),t.options?.autoGrow===!1?()=>{}:()=>{e.style.height="",e.scrollHeight&&(e.style.height=`${e.scrollHeight+e.offsetHeight-e.clientHeight}px`)}}function oi(e,t,n){let r=n.options??{},i=t.type==="char";(i?[r.min,r.max]:"min"in t?[t.min,t.max]:[]).forEach((a,d)=>{typeof a=="string"&&(e[d?"max":"min"]=i?a:fn(a)+(t.type==="datetime"?d?"T23:59":"T00:00":""))}),typeof r.step=="number"&&(e.step=String(r.step*60))}function co(e,t){try{let n=new Intl.NumberFormat(t,{style:"currency",currency:e,currencyDisplay:"narrowSymbol"}).formatToParts(1),r=n.findIndex(i=>i.type==="currency");return{text:n[r].value,after:r>n.findIndex(i=>i.type==="integer")}}catch{return{text:e,after:!1}}}function Fs(e,t){let{form:n,name:r,document:i}=t,o=Fe(t.labels,t.locale),a=i.createElement("div"),d=i.createElement("div"),s=i.createElement("button");s.type="button",s.className="fd-button fd-button-link",s.textContent=o.choicesFailed,s.onclick=()=>n.loadChoices(r),d.setAttribute("role","status"),a.style.cssText="display:grid;gap:4px";let l=new Map,f,c=null,x=b=>{f?.destroy?.(),f=e({...t,field:{...t.field,options:b}}),f.element.getAttribute("role")&&f.element.setAttribute("aria-labelledby",`${t.id}-label`),a.replaceChildren(f.element,d,s)};return x([]),n.getState().choices[r]||n.loadChoices(r),{element:a,focus:()=>f.focus(),destroy:()=>f.destroy?.(),update(b){let y=n.getState().choices[r];if(y?.options&&y.options!==c){c=y.options;for(let m of c)l.set(m.value,m.label);x(c)}f.update(b);let S=c&&!t.field.other?[b.value].flat().filter(m=>m!=null&&!c?.some(k=>k.value===m)):[];d.className=y?.loading?"fd-help":"fd-warning",d.textContent=y?.loading?o.loadingChoices:S.length?je(o.notOffered,{name:S.map(m=>l.get(m)??String(m)).join(", ")}):"",d.hidden=!d.textContent,s.hidden=!y?.error}}}var As=({form:e,name:t,node:n,id:r,document:i,labels:o,locale:a})=>{let d=Fe(o,a),s=ve(i),l=s("div",{id:r,class:"fd-points fd-yes-no",role:"radiogroup"}),f=!1,c=[!0,!1].map(b=>{let y=n.options?.[b?"yesLabel":"noLabel"],S=s("button",{type:"button",role:"radio"},typeof y=="string"&&y?y:b?d.yes:d.no);return S.addEventListener("click",()=>e.setValue(t,b)),l.append(S),S});l.addEventListener("keydown",b=>{let y=c.indexOf(b.target);f||y===-1||!b.key.startsWith("Arrow")||(b.preventDefault(),e.setValue(t,y===1),c[1-y].focus())});let x=Zt(i,d,()=>{e.setValue(t,null),c[0].focus()},n);return{element:s("div",{class:"fd-choices-box"},l,x.button),focus:()=>(c.find(b=>b.getAttribute("aria-checked")==="true")??c[0]).focus(),update(b){f=b.readonly;let y=b.value===!0?0:b.value===!1?1:-1;c.forEach((S,m)=>{Ae(S,"aria-checked",String(m===y)),S.classList.toggle("fd-on",m===y),S.tabIndex=m===Math.max(0,y)?0:-1,S.disabled=f}),Ae(l,"aria-required",String(b.required)),x.allow(b),x.show(y!==-1),ze(l,b)}}};var ic=new Set(["info","success","warning","danger","muted"]),ai=({field:e,node:t,id:n,document:r,locale:i="en"})=>{let o=t.options?.tones??{},a=r.createElement("span");return a.id=n,a.className="fd-value-badge",a.hidden=!0,{element:a,focus:()=>{},update({value:d,values:s}){let l=vt(e,d,s,i);a.textContent!==l&&(a.textContent=l),a.hidden=l==="";let f=d!==null&&typeof d=="object"&&"id"in d?String(d.id):String(d),c=o[f];typeof c=="string"&&ic.has(c)?a.dataset.tone=c:delete a.dataset.tone}}};var Ts=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Ke.en,locale:d,dialogs:s})=>{let l=n,f=ve(o),c=l.fields??{},x=(r.columns??[]).filter(j=>c[j]),b=j=>typeof r.options?.[j]=="string"&&r.options[j].trim()?r.options[j]:null,y=!!s&&s.canOpen(l.relation),S=f("tr",{},...x.map(j=>f("th",{scope:"col","data-column":j},c[j].label)),f("th",{class:"fd-lines-tools"})),m=f("tbody"),k=f("table",{class:"fd-lines-table fd-links-table"},f("thead",{},S),m),h=f("button",{type:"button",class:"fd-button fd-button-link fd-lines-add","data-add":"line"},`+ ${b("addLabel")??a.addLine}`),E=f("div",{class:"fd-lines-adds"},h),L=b("emptyLabel"),v=L?f("div",{class:"fd-help fd-lines-empty"},L):null,R=f("div",{class:"fd-lines fd-links",id:i,role:"group"},f("div",{class:"fd-lines-scroll"},k),...v?[v]:[],E),w=new Map,p=new Set,T=!1,C=[],W=()=>e.getState().values[t]??[];function O(j,_=!1){let D=j.map(V=>V.id).filter(V=>_||!w.has(String(V))&&!p.has(String(V)));if(D.length){for(let V of D)p.add(String(V));e.linkedValues(t,D,x).then(V=>{for(let{id:z,values:$}of V)w.set(String(z),$);for(let z of D)p.delete(String(z));P()},()=>D.forEach(V=>p.delete(String(V))))}}h.addEventListener("click",async()=>{if(!s||T)return;let j=await s.searchMore({title:l.label,search:(_,D)=>e.search(t,_,D)});!j||W().some(_=>_.id===j.id)||e.setValue(t,[...W(),{id:j.id,label:j.label}])});async function H(j){let _=await s?.openRecord(l.relation,{recordId:j.id,title:j.label});_&&(_.label!==j.label&&e.setValue(t,W().map(D=>D.id===j.id?{id:D.id,label:_.label}:D)),O([j],!0))}function M(j){let _=w.get(String(j.id)),D=x.map((z,$)=>{let ee=_?vt(c[z],_[z]??null,_,d):$===0?j.label:"";return f("td",{"data-column":z},f("span",{class:"fd-value-text"},ee))}),V=f("td",{class:"fd-lines-tools"});if(y){let z=f("button",{type:"button",class:"fd-line-open","aria-label":Te(a.openNamed,{name:j.label}),title:a.openLine},"\u2197");z.addEventListener("click",()=>{H(j)}),V.append(z)}if(!T){let z=f("button",{type:"button",class:"fd-line-delete","aria-label":Te(a.remove,{name:j.label})},"\xD7");z.addEventListener("click",()=>e.setValue(t,W().filter($=>$.id!==j.id))),V.append(z)}return f("tr",{"data-record":String(j.id)},...D,V)}function P(){let j=o.activeElement,_=R.contains(j)?j.closest("tr")?.dataset.record:void 0;m.replaceChildren(...C.map(M)),_&&m.querySelector(`tr[data-record="${CSS.escape(_)}"] button`)?.focus()}return{element:R,focus:()=>(m.querySelector("button")??h).focus(),update(j){let _=j.value??[],D=_!==C||j.readonly!==T;T=j.readonly,C=_,E.hidden=T||!s,v&&(v.hidden=_.length>0),Ae(R,"aria-invalid",String(j.invalid)),Ae(R,"aria-describedby",j.describedBy||null),D&&P(),O(_)}}};var fo=({form:e,name:t,field:n,id:r,document:i})=>{let o=ve(i),a=n.type==="selection"?n.options.map(c=>({value:c.value,label:c.label})):[{value:!1,label:""},{value:!0,label:n.label}],d=o("div",{id:r,class:"fd-priority",role:"radiogroup"}),s=a.slice(1).map((c,x)=>{let b=o("button",{type:"button",role:"radio",class:"fd-priority-star","aria-label":c.label,title:c.label,"data-value":String(c.value)},"\u2605");return b.addEventListener("click",()=>e.setValue(t,l(e.getState().values[t])===x+1?a[0].value:c.value)),d.append(b),b}),l=c=>Math.max(0,a.findIndex(x=>x.value===c)),f=!1;return d.addEventListener("keydown",c=>{if(f)return;let x=Nt(d)?"ArrowLeft":"ArrowRight",b=Nt(d)?"ArrowRight":"ArrowLeft",y=c.key===x||c.key==="ArrowUp"?1:c.key===b||c.key==="ArrowDown"?-1:0;if(!y)return;c.preventDefault();let S=Math.min(a.length-1,Math.max(0,l(e.getState().values[t])+y));e.setValue(t,a[S].value),s[Math.max(0,S-1)]?.focus()}),{element:d,focus:()=>(s.find(c=>c.tabIndex===0)??s[0])?.focus(),update(c){f=c.readonly;let x=l(c.value);s.forEach((b,y)=>{Ae(b,"aria-checked",String(x===y+1)),b.classList.toggle("fd-on",y<x);let S=x===y+1||x===0&&y===0?0:-1;b.tabIndex!==S&&(b.tabIndex=S),b.disabled!==c.readonly&&(b.disabled=c.readonly)}),ze(d,c)}}};function Hn(e,t,n,r){let i=e.ownerDocument,o=s=>{!n.contains(s.target)&&!t.contains(s.target)&&d()};function a(){n.hidden=!1,t.setAttribute("aria-expanded","true");let s=e.closest(".fd-form");if(s){s.append(n),Object.assign(n.style,{position:"absolute",top:"0px",left:"0px",right:"auto"});let[l,f,c]=[t.getBoundingClientRect(),n.getBoundingClientRect(),n.offsetWidth],x=getComputedStyle(e).direction==="rtl",b=i.documentElement.clientWidth||c,y=Math.max(8,Math.min(x?l.right-c:l.left,b-c-8));Object.assign(n.style,{top:`${l.bottom-f.top+4}px`,left:`${y-f.left}px`})}i.addEventListener("pointerdown",o,!0)}function d(){if(!n.hidden){if(n.hidden=!0,t.setAttribute("aria-expanded","false"),n.parentElement!==e){e.append(n);for(let s of["position","top","left","right"])n.style.removeProperty(s)}i.removeEventListener("pointerdown",o,!0),r()}}return{open:a,close:d,isOpen:()=>!n.hidden}}var oc={normal:"muted",grey:"muted",blocked:"danger",red:"danger",done:"success",green:"success",waiting:"warning"},$s=["muted","danger","success","warning","info"],ac=new Set(["info","success","warning","danger","muted"]),Ms=({form:e,name:t,field:n,node:r,id:i,document:o})=>{let a=ve(o),d=n.type==="selection"?n.options:[],s=r.options?.tones??{},l=(R,w)=>{let p=s[String(R)];return typeof p=="string"&&ac.has(p)?p:oc[String(R)]??$s[w%$s.length]},f=()=>a("span",{class:"fd-dot","aria-hidden":"true"}),c=a("button",{type:"button",id:i,class:"fd-dot-button","aria-haspopup":"menu","aria-expanded":"false","aria-controls":`${i}-menu`},f()),x=r.options?.label===!0?a("span",{class:"fd-dot-label"}):null,b=d.map((R,w)=>{let p=a("div",{role:"menuitemradio",class:"fd-dot-item",tabindex:"-1","data-tone":l(R.value,w)},f(),R.label);return p.addEventListener("click",()=>v(w)),p}),y=a("div",{id:`${i}-menu`,role:"menu",class:"fd-dot-menu","aria-label":n.label,hidden:""},...b),S=a("span",{class:"fd-dot-box"},c,...x?[x]:[],y),m=()=>d.findIndex(R=>R.value===e.getState().values[t]),k=!1,h=Hn(S,c,y,()=>{k&&c.focus(),k=!1});function E(R=Math.max(0,m())){h.open(),b[R]?.focus()}function L(R){k=R,h.close()}function v(R){e.setValue(t,d[R].value),L(!0)}return c.addEventListener("click",()=>y.hidden?E():L(!0)),c.addEventListener("keydown",R=>{R.key!=="ArrowDown"&&R.key!=="ArrowUp"&&R.key!=="Enter"&&R.key!==" "||(R.preventDefault(),E(R.key==="ArrowUp"?m()<0?b.length-1:m():void 0))}),y.addEventListener("keydown",R=>{let w=b.indexOf(o.activeElement),p={ArrowDown:w+1,ArrowUp:w-1,Home:0,End:b.length-1}[R.key];p!==void 0?(R.preventDefault(),b[(p+b.length)%b.length]?.focus()):R.key==="Enter"||R.key===" "?(R.preventDefault(),w>=0&&v(w)):R.key==="Escape"?(R.preventDefault(),R.stopPropagation(),L(!0)):R.key==="Tab"&&L(!0)}),{element:S,focus:()=>c.focus(),destroy:()=>L(!1),update(R){let w=d.findIndex(T=>T.value===R.value),p=w<0?"":d[w].label;Ae(c,"aria-label",p?`${n.label}: ${p}`:n.label),Ae(c,"title",p||null),Ae(c,"data-tone",w<0?"muted":l(R.value,w)),x&&tt(x,p),b.forEach((T,C)=>Ae(T,"aria-checked",String(C===w))),c.disabled!==R.readonly&&(c.disabled=R.readonly),R.readonly&&L(!1),ze(c,R)}}};var si=["transparent","#f06050","#f4a460","#f7cd1f","#6cc1ed","#814968","#eb7e7f","#2c8397","#475577","#d6145f","#30c381","#9365b8"],sc=({form:e,name:t,field:n,id:r,document:i,labels:o,locale:a})=>{let d=ve(i),s=Fe(o,a).colourNames.split("|"),l=d("button",{type:"button",id:r,class:"fd-colour-button","aria-haspopup":"true","aria-expanded":"false","aria-controls":`${r}-palette`}),f=si.map((h,E)=>{let L=d("button",{type:"button",role:"radio",class:"fd-colour","aria-label":s[E]??String(E),title:s[E]??String(E),tabindex:"-1","data-colour":String(E)});return L.style.setProperty("--fd-swatch",h),L.addEventListener("click",()=>k(E)),L}),c=d("div",{id:`${r}-palette`,role:"radiogroup",class:"fd-colour-palette","aria-label":n.label,hidden:""},...f),x=d("span",{class:"fd-colour-box"},l,c),b=!1,y=Hn(x,l,c,()=>{b&&l.focus(),b=!1}),S=()=>{let h=e.getState().values[t];return typeof h=="number"&&h>=0&&h<si.length?h:0};function m(h){b=h,y.close()}function k(h){e.setValue(t,h),m(!0)}return l.addEventListener("click",()=>{if(y.isOpen())return m(!0);y.open(),f[S()].focus()}),c.addEventListener("keydown",h=>{let E=f.indexOf(i.activeElement),L=Nt(x)?"ArrowLeft":"ArrowRight",v=Nt(x)?"ArrowRight":"ArrowLeft",R=h.key===L||h.key==="ArrowDown"?E+1:h.key===v||h.key==="ArrowUp"?E-1:h.key==="Home"?0:h.key==="End"?f.length-1:null;R!==null?(h.preventDefault(),f[(R+f.length)%f.length].focus()):(h.key==="Enter"||h.key===" ")&&E>=0?(h.preventDefault(),k(E)):h.key==="Escape"?(h.preventDefault(),h.stopPropagation(),m(!0)):h.key==="Tab"&&m(!0)}),{element:x,focus:()=>l.focus(),destroy:()=>m(!1),update(h){let E=typeof h.value=="number"&&h.value>=0&&h.value<si.length?h.value:0;l.style.setProperty("--fd-swatch",si[E]),l.classList.toggle("fd-colour-none",E===0),Ae(l,"aria-label",`${n.label}: ${s[E]??E}`),Ae(l,"title",s[E]??String(E)),f.forEach((L,v)=>Ae(L,"aria-checked",String(v===E))),l.disabled!==h.readonly&&(l.disabled=h.readonly),h.readonly&&m(!1),ze(l,h)}}},dc=({form:e,name:t,id:n,document:r})=>{let i=ve(r),o=i("input",{id:n,type:"color",class:"fd-colour-input"}),a=i("span",{class:"fd-colour-code",dir:"ltr"});return o.addEventListener("input",()=>e.setValue(t,o.value)),{element:i("span",{class:"fd-colour-box"},o,a),focus:()=>o.focus(),update(d){let s=typeof d.value=="string"?d.value:"",l=/^#[0-9a-f]{6}$/i.test(s)?s.toLowerCase():"#000000";o.value!==l&&(o.value=l),tt(a,s),o.disabled!==d.readonly&&(o.disabled=d.readonly),ze(o,d)}}},uo=e=>e.field.type==="char"?dc(e):sc(e);var po=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=ve(o),l=Fe(a,d),f=n.type==="text",c=f?s("textarea",{id:i,class:"fd-input fd-textarea",rows:"3"}):s("input",{id:i,type:"text",class:"fd-input",autocomplete:"off"});r.placeholder&&(c.placeholder=r.placeholder),c.addEventListener("input",()=>e.setValue(t,c.value===""?null:c.value));let x=s("button",{type:"button",class:"fd-button fd-copy-button",hidden:""},l.copyValue),b=s("span",{class:"fd-sr-only",role:"status"}),y;return x.addEventListener("click",async()=>{let S=String(e.getState().values[t]??"");if(S){try{await navigator.clipboard.writeText(S)}catch{c.select(),o.execCommand?.("copy")}tt(x,l.copied),tt(b,l.copied),clearTimeout(y),y=setTimeout(()=>{tt(x,l.copyValue),tt(b,"")},2e3)}}),{element:s("span",{class:`fd-copy${f?" fd-copy-long":""}`},c,x,b),focus:()=>c.focus(),destroy:()=>clearTimeout(y),update(S){let m=S.value===null||S.value===void 0?"":String(S.value);c.value!==m&&(c.value=m),c.readOnly!==S.readonly&&(c.readOnly=S.readonly),x.hidden=!m,ze(c,S)}}};var ci=e=>String(e).padStart(2,"0"),_t=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t),di=(e,t)=>new Date(e.getFullYear(),e.getMonth()+t,Math.min(e.getDate(),new Date(e.getFullYear(),e.getMonth()+t+1,0).getDate())),li=(e,t)=>!!e&&!!t&&e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),lc='<svg viewBox="0 0 16 16" aria-hidden="true"><rect x="2" y="3" width="12" height="11" rx="1.5"></rect><path d="M2 6.5h12M5 1.5v3M11 1.5v3"></path></svg>',mo=e=>`${e.getFullYear()}-${ci(e.getMonth()+1)}-${ci(e.getDate())}`,go=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d="en"})=>{let s=ve(o),l=Fe(a,d),f=n.type==="datetime"?"datetime":"date",c=typeof r.options?.endField=="string"?r.options.endField:null,x=c?e.page.fields[c]?.label??c:"",b=d==="en"?"en-GB":d,y=new Intl.DateTimeFormat(b,{month:"long",year:"numeric",numberingSystem:"latn"}),S=new Intl.DateTimeFormat(b,{weekday:"long",day:"numeric",month:"long",year:"numeric",numberingSystem:"latn"}),m=new Intl.DateTimeFormat(b,{weekday:"short"}),k=Z=>{if(typeof Z!="string"||!Z)return"";if(f==="date")return Z.slice(0,10);let J=new Date(Z);return Number.isNaN(J.getTime())?"":`${mo(J)}T${ci(J.getHours())}:${ci(J.getMinutes())}`},h=Z=>{let J=k(Z),B=/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}))?/.exec(J);return B?new Date(Number(B[1]),Number(B[2])-1,Number(B[3]),Number(B[4]??0),Number(B[5]??0)):null},E=(Z,J)=>{if(f==="date")return mo(Z);let B=h(J);return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate(),B?.getHours()??0,B?.getMinutes()??0).toISOString()},L=(Z,J,B)=>{let te=s("input",{type:f==="date"?"date":"datetime-local",class:"fd-input fd-range-input","aria-label":J,...B?{id:B}:{}});return te.addEventListener("input",()=>{if(!te.value)return e.setValue(Z,null);if(f==="date")return e.setValue(Z,te.value);let Ee=new Date(te.value);Number.isNaN(Ee.getTime())||e.setValue(Z,Ee.toISOString())}),te},v=L(t,n.label,i),R=c?L(c,x):null,w=s("button",{type:"button",class:"fd-calendar-button fd-range-button","aria-label":l.chooseDate,"aria-haspopup":"dialog","aria-expanded":"false","aria-controls":`${i}-range`});w.innerHTML=lc;let p=s("button",{type:"button","aria-label":l.previousMonth},"\u2039"),T=s("button",{type:"button","aria-label":l.nextMonth},"\u203A"),C=s("span",{class:"fd-calendar-title","aria-live":"polite"}),W=s("table",{class:"fd-calendar-grid",role:"grid"}),O=s("div",{id:`${i}-range`,class:"fd-calendar fd-range-calendar",role:"dialog",hidden:""},s("div",{class:"fd-calendar-head"},p,C,T),W),H=s("div",{class:"fd-range",role:"group"},s("span",{class:"fd-range-box"},v,...R?[s("span",{class:"fd-range-arrow","aria-hidden":"true"},"\u2192"),R]:[]),w,O),M=new Date,P=null,j=null;function _(Z){let J=e.getState().values;if(!c)return e.setValue(t,E(Z,J[t])),$();if(!P)return P=Z,M=Z,D(!0);let[B,te]=Z<P?[Z,P]:[P,Z];P=null,e.setValue(t,E(B,J[t])),e.setValue(c,E(te,J[c])),$()}function D(Z){let J=e.getState().values,B=P??h(J[t]),te=P?j&&j>=P?j:null:c?h(J[c]):null,Ee=y.format(M);C.textContent=Ee,O.setAttribute("aria-label",Ee);let he=new Date(M.getFullYear(),M.getMonth(),1),ke=_t(he,-((he.getDay()+6)%7)),se=s("tr",{},...Array.from({length:7},(Y,ne)=>s("th",{scope:"col"},m.format(_t(ke,ne)).replace(/\.$/,"")))),re=s("tbody");for(let Y=ke;Y<=new Date(M.getFullYear(),M.getMonth()+1,0);Y=_t(Y,7)){let ne=s("tr");for(let le=0;le<7;le++){let K=_t(Y,le),U=s("button",{type:"button","data-day":mo(K),"aria-label":S.format(K),tabindex:li(K,M)?"0":"-1"},String(K.getDate()));K.getMonth()!==M.getMonth()&&U.classList.add("fd-outside");let Q=li(K,B)||li(K,te);Q&&U.setAttribute("aria-selected","true"),B&&te&&K>B&&K<te&&!Q&&U.classList.add("fd-in-range"),li(K,new Date)&&U.setAttribute("aria-current","date"),U.addEventListener("click",()=>_(K)),U.addEventListener("pointerenter",()=>{if(P){j=K;for(let ce of W.querySelectorAll("button[data-day]")){let We=h(ce.dataset.day);ce.classList.toggle("fd-in-range",!!We&&We>P&&We<K)}}}),U.addEventListener("keydown",ce=>V(ce,K)),ne.append(s("td",{},U))}re.append(ne)}W.replaceChildren(s("thead",{},se),re),Z&&W.querySelector('button[tabindex="0"]')?.focus()}function V(Z,J){let B=Nt(H),te={ArrowLeft:()=>_t(J,B?1:-1),ArrowRight:()=>_t(J,B?-1:1),ArrowUp:()=>_t(J,-7),ArrowDown:()=>_t(J,7),PageUp:()=>di(J,-1),PageDown:()=>di(J,1),Home:()=>_t(J,-((J.getDay()+6)%7)),End:()=>_t(J,6-(J.getDay()+6)%7)};te[Z.key]?(Z.preventDefault(),M=te[Z.key](),P&&(j=M),D(!0)):(Z.key==="Enter"||Z.key===" ")&&(Z.preventDefault(),_(J))}function z(){P=null,j=null,M=h(e.getState().values[t])??new Date,O.hidden=!1,w.setAttribute("aria-expanded","true"),D(!0)}function $(){O.hidden||(O.hidden=!0,P=null,w.setAttribute("aria-expanded","false"),w.focus())}w.addEventListener("click",()=>O.hidden?z():$()),p.addEventListener("click",()=>(M=di(M,-1),D(!1))),T.addEventListener("click",()=>(M=di(M,1),D(!1))),O.addEventListener("keydown",Z=>{Z.key==="Escape"&&(Z.preventDefault(),Z.stopPropagation(),$())});let ee=Z=>{O.hidden||H.contains(Z.target)||(O.hidden=!0,P=null,w.setAttribute("aria-expanded","false"))};return o.addEventListener("mousedown",ee),{element:H,focus:()=>v.focus(),destroy:()=>o.removeEventListener("mousedown",ee),update(Z){for(let[J,B]of[[v,Z.value],...R&&c?[[R,Z.values[c]]]:[]]){let te=k(B);o.activeElement!==J&&J.value!==te&&(J.value=te),J.readOnly!==Z.readonly&&(J.readOnly=Z.readonly),J.classList.toggle("fd-blank",!te)}w.hidden=Z.readonly,Z.readonly&&(O.hidden=!0),Ae(H,"aria-labelledby",null),ze(v,Z)}}};var ho=e=>String(e).padStart(2,"0");function cc(e){let t=Math.max(0,Math.floor(e));return`${ho(Math.floor(t/3600))}:${ho(Math.floor(t%3600/60))}:${ho(t%60)}`}var Ns=e=>{if(typeof e!="string"||!e)return null;let t=new Date(e).getTime();return Number.isNaN(t)?null:t},bo=({field:e,node:t,id:n,document:r})=>{let i=ve(r),o=e.type==="datetime",a=!o&&typeof t.options?.startField=="string"?t.options.startField:null,d=t.options?.unit==="minutes"?60:3600,s=i("span",{class:"fd-timer-time"}),l=i("span",{id:n,role:"timer",class:"fd-timer"},i("span",{class:"fd-timer-dot","aria-hidden":"true"}),s);Ae(l,"aria-label",e.label);let f=0,c=null,x,b=()=>tt(s,cc(f+(c===null?0:(Date.now()-c)/1e3))),y=()=>{clearInterval(x),x=void 0};return{element:l,focus:()=>{},destroy:y,update(S){f=!o&&typeof S.value=="number"?S.value*d:0,c=o?Ns(S.value):a?Ns(S.values[a]):null,c!==null?l.dataset.running="true":delete l.dataset.running,b(),c===null?y():x||(x=setInterval(()=>l.isConnected?b():y(),1e3))}}};var Cs=e=>typeof e=="number"&&e>0?e:480,fc=e=>/^https?:\/\//i.test(e);function uc(e){if(e.data){let t=Uint8Array.from(atob(e.data),n=>n.charCodeAt(0));return URL.createObjectURL(new Blob([t],{type:e.type||"application/pdf"}))}return e.url??""}var Os=e=>{let t=ve(e.document),n=Fe(e.labels,e.locale),r=ar({...e,node:{...e.node,widget:void 0}}),i=t("iframe",{class:"fd-embed-frame"});i.style.height=`${Cs(e.node.options?.height)}px`;let o=t("div",{class:"fd-embed-none"},n.noDocument),a=t("div",{class:"fd-embed-view"}),d,s="",l=()=>s.startsWith("blob:")&&URL.revokeObjectURL(s);return{element:t("div",{class:"fd-embed fd-embed-pdf"},r.element,a),focus:()=>r.focus(),destroy(){l(),r.destroy?.()},update(f){r.update(f);let c=Array.isArray(f.value)?f.value[0]:f.value;c!==d&&(d=c,l(),s=c?uc(c):"",s&&(i.title=c?.name??e.field.label,i.src=s)),a.replaceChildren(...s?[i]:f.readonly?[o]:[])}}},Vs=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=ve(o),l=Fe(a,d),f=s("input",{id:i,type:"url",class:"fd-input",autocomplete:"url"});r.placeholder&&(f.placeholder=r.placeholder),f.addEventListener("input",()=>e.setValue(t,f.value===""?null:f.value));let c=s("iframe",{class:"fd-embed-frame",title:n.label,sandbox:"allow-scripts allow-same-origin allow-popups allow-presentation",referrerpolicy:"no-referrer",loading:"lazy"});c.style.height=`${Cs(r.options?.height)}px`;let x=s("a",{class:"fd-button fd-button-link fd-embed-open",target:"_blank",rel:"noopener noreferrer",hidden:""},l.openInNewTab),b=s("div",{class:"fd-embed-view"}),y="";return{element:s("div",{class:"fd-embed"},s("div",{class:"fd-embed-bar"},f,x),b),focus:()=>f.focus(),update(S){let m=typeof S.value=="string"?S.value.trim():"";o.activeElement!==f&&f.value!==(typeof S.value=="string"?S.value:"")&&(f.value=typeof S.value=="string"?S.value:""),f.readOnly!==S.readonly&&(f.readOnly=S.readonly),f.hidden=S.readonly;let k=fc(m)?m:"";k!==y&&(y=k,k&&(c.src=k),b.replaceChildren(...k?[c]:[])),x.hidden=!k,k&&(x.href=k)}}};var en=e=>typeof e=="number"?e:Number(e)||0;function pc(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e;if(Array.isArray(n.subtotals)||n.groups_by_subtotal){let i=n.groups_by_subtotal??{},o=n.subtotals??[{name:t,amount:en(n.amount_untaxed)}];return{subtotals:(n.subtotals_order??o.map(d=>d.name)).map(d=>({name:d,amount:en(o.find(s=>s.name===d)?.amount??n.amount_untaxed),groups:(i[d]??[]).map((s,l)=>({name:String(s.tax_group_name??""),amount:en(s.tax_group_amount),at:[d,l]}))})),total:en(n.amount_total)}}let r=(Array.isArray(n.groups)?n.groups:[]).map((i,o)=>({name:String(i.name??""),amount:en(i.amount),at:o}));return{subtotals:[{name:t,amount:en(n.untaxed),groups:r}],total:en(n.total)}}var Ps=({form:e,name:t,node:n,id:r,document:i,labels:o,locale:a="en"})=>{let d=ve(i),s=Fe(o,a),l=n.options??{},f=typeof l.currencyField=="string"?l.currencyField:null,c=typeof l.currency=="string"?l.currency:null,x=d("tbody"),b=d("table",{id:r,class:"fd-tax-totals"},x),y="";function S(m,k){let h=JSON.parse(JSON.stringify(e.getState().values[t])),E=m.amount;if(Array.isArray(m.at)){let[L,v]=m.at;h.groups_by_subtotal[L][v].tax_group_amount=k,h.amount_total=Math.round((en(h.amount_total)+k-E)*100)/100}else h.groups[m.at].amount=k,h.total=Math.round((en(h.total)+k-E)*100)/100;e.setValue(t,h)}return{element:b,focus:()=>b.querySelector("input")?.focus(),update(m){let k=pc(m.value,s.untaxed),h=f?m.values[f]:null,E=c??(h&&typeof h=="object"&&"label"in h?h.label:typeof h=="string"?h:""),L=T=>/^[A-Z]{3}$/.test(E)?wn(T,E,2,a):ut(T,2,a),v=l.editable===!0&&!m.readonly,R=JSON.stringify([k,E,v]);if(R===y||b.contains(i.activeElement))return;y=R;let w=(T,C,W)=>d("tr",{class:W},d("th",{scope:"row"},T),d("td",{},C)),p=[];for(let T of k?.subtotals??[]){p.push(w(T.name,L(T.amount),"fd-tax-subtotal"));for(let C of T.groups){if(!v){p.push(w(C.name,L(C.amount),"fd-tax-group"));continue}let W=d("input",{type:"text",class:"fd-input fd-number-input",inputmode:"decimal",autocomplete:"off","aria-label":C.name});W.value=ut(C.amount,2,a),W.addEventListener("change",()=>{let O=zt(W.value.trim(),a);/^-?(\d+\.?\d*|\.\d+)$/.test(O)&&S(C,Number(O))}),p.push(w(C.name,W,"fd-tax-group"))}}k&&p.push(w(s.total,L(k.total),"fd-tax-total")),x.replaceChildren(...p)}}};var fi=e=>typeof e=="string"?e:typeof e=="number"?String(e):"";function mc(e){return(Array.isArray(e)?e:e&&typeof e=="object"&&Array.isArray(e.content)?e.content:[]).filter(n=>n&&typeof n=="object").map(n=>({date:fi(n.date),amount:typeof n.amount=="number"?n.amount:Number(n.amount)||0,name:fi(n.name),journal:fi(n.journal_name??n.journal),memo:fi(n.ref??n.memo),id:n.account_payment_id??n.payment_id??n.id??null}))}var Is=({node:e,id:t,document:n,labels:r,locale:i="en",dialogs:o})=>{let a=ve(n),d=Fe(r,i),s=e.options??{},l=typeof s.currencyField=="string"?s.currencyField:null,f=typeof s.dueField=="string"?s.dueField:null,c=typeof s.model=="string"?s.model:"account.payment",x=a("ul",{class:"fd-payments-list"}),b=a("div",{class:"fd-payment-due",hidden:""}),y=a("div",{id:t,class:"fd-payments"},x,b),S={type:"date",label:""},m="",k=null;return{element:y,focus:()=>x.querySelector("button")?.focus(),destroy:()=>k?.(),update(h){let E=l?h.values[l]:null,L=E&&typeof E=="object"&&"label"in E?E.label:typeof E=="string"?E:"",v=T=>/^[A-Z]{3}$/.test(L)?wn(T,L,2,i):ut(T,2,i),R=mc(h.value),w=f?h.values[f]:null,p=JSON.stringify([R,L,w]);p!==m&&(m=p,k?.(),x.replaceChildren(...R.map((T,C)=>{let W=v(T.amount),O=a("button",{type:"button",class:"fd-payment-info","aria-label":Te(d.paymentOf,{amount:W}),"aria-haspopup":"dialog","aria-expanded":"false","aria-controls":`${t}-payment-${C}`},"i"),H=(z,$)=>$?[a("dt",{},z),a("dd",{},$)]:[],M=T.id!==null&&o?.canOpen(c)?a("button",{type:"button",class:"fd-button fd-button-link fd-payment-open"},d.openPayment):null,P=a("div",{id:`${t}-payment-${C}`,class:"fd-payment-details",role:"dialog","aria-label":Te(d.paymentOf,{amount:W}),tabindex:"-1",hidden:""},a("strong",{},T.name||W),a("span",{class:"fd-payment-details-amount"},W),a("dl",{},...H(d.journal,T.journal),...H(d.memo,T.memo)),...M?[M]:[]),j=a("li",{class:"fd-payment"},O,a("span",{class:"fd-payment-date"},Te(d.paidOn,{date:vt(S,T.date,{},i)})),a("span",{class:"fd-payment-amount"},W),P),_=!1,D=Hn(j,O,P,()=>{_&&O.focus(),_=!1,k===V&&(k=null)}),V=()=>D.close();return O.addEventListener("click",()=>{if(D.isOpen())return V();k?.(),D.open(),k=V,(M??P).focus()}),P.addEventListener("keydown",z=>{z.key==="Escape"&&(z.preventDefault(),z.stopPropagation(),_=!0,V())}),M?.addEventListener("click",()=>{V(),o?.openRecord(c,{recordId:T.id,title:T.name||W})}),j})),b.hidden=w==null,b.replaceChildren(a("span",{},d.amountDue),a("strong",{},typeof w=="number"?v(w):"")))}}};function $t(e,t={}){let{field:n,node:r}=e,i=[r.widget?`${n.type}.${r.widget}`:null,n.type==="selection"&&n.multiple?"selection.checkboxes":null,n.type==="many2many"&&r.columns?.length?"many2many.table":null,n.type].filter(o=>o!==null);for(let o of i){let a=t[o]??js[o];if(a)return n.type==="selection"&&n.optionsFrom?Fs(a,e):a(e)}return wc(e)}function Ge(e,t,n={},...r){let i=e.createElement(t);for(let[o,a]of Object.entries(n))a!==void 0&&i.setAttribute(o,a);return i.append(...r),i}function tn(e,t){Ae(e,"aria-invalid",String(t.invalid)),Ae(e,"aria-required",e.getAttribute("role")==="group"?null:String(t.required)),Ae(e,"aria-describedby",t.describedBy||null)}var mi=e=>e==null?"":String(e);function zn(e){return t=>{let{form:n,name:r,field:i,node:o,id:a,document:d}=t,s=Ge(d,"input",{id:a,type:e,class:"fd-input",autocomplete:/^(email|tel|url)$/.test(e)?e:"off"});return i.type==="char"&&i.size!==void 0&&(s.maxLength=i.size),e==="time"&&oi(s,i,o),o.placeholder&&(s.placeholder=o.placeholder),s.addEventListener("input",()=>n.setValue(r,s.value===""?null:s.value)),lo({element:s,focus:()=>s.focus(),update(l){let f=mi(l.value);s.value!==f&&(s.value=f),s.readOnly!==l.readonly&&(s.readOnly=l.readonly),tn(s,l)}},t,s)}}var gc=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,d=Ge(a,"textarea",{id:o,class:"fd-input fd-textarea",rows:"3"});r.type==="text"&&r.size!==void 0&&(d.maxLength=r.size),i.placeholder&&(d.placeholder=i.placeholder);let s=Rs(d,i);return d.addEventListener("input",()=>{s(),t.setValue(n,d.value===""?null:d.value)}),lo({element:d,focus:()=>d.focus(),update(l){let f=mi(l.value);d.value!==f&&(d.value=f,s()),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),tn(d,l)}},e,d)},hc=/^-?(\d+\.?\d*|\.\d+)$/,bc=/^-?\.?$/,yo=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a,locale:d="en"}=e,s=r.type==="integer",l=s?0:(r.type==="float"||r.type==="monetary"?r.digits?.[1]:void 0)??2,f=C=>typeof C=="number"?ut(C,l,d):mi(C),c=Ge(a,"input",{id:o,type:"text",class:"fd-input fd-number-input",autocomplete:"off"});c.inputMode=s?"numeric":"decimal",i.placeholder&&(c.placeholder=i.placeholder);let x=C=>{let W=zt(C.trim(),d);if(W==="")return null;if(hc.test(W))return Number(W);if(!bc.test(W))return W};c.addEventListener("input",()=>{let C=x(c.value);C!==void 0&&t.setValue(n,C)}),c.addEventListener("blur",()=>{c.value=f(t.getState().values[n])});let b=i.options??{},y=r.type==="monetary"?r.currencyField:void 0,S=y?t.page.fields[y]:void 0,m=y&&S&&b.pickCurrency===!0?$t({...e,name:y,field:S,node:{type:"field",id:`${i.id}.currency`,field:y},id:`${o}-currency`}):null;m&&S&&m.element.querySelector("input, select")?.setAttribute("aria-label",S.label),m?.element.matches("input, select")&&S&&m.element.setAttribute("aria-label",S.label);let k=b.symbol?b.symbol==="after":r.type==="monetary"&&co(r.currency??"USD",d).after,h=(C,W)=>Ge(a,"span",{class:`fd-unit${r.type==="monetary"?" fd-currency":""}`,id:`${o}-unit${W}`},C),E=r.type==="monetary"&&!m?h("",0):null,[L,v]=["prefix","suffix"].map((C,W)=>typeof b[C]=="string"&&b[C]?h(b[C],W+1):null),R=(k?null:m?.element??E)??L,w=(k?m?.element??E:null)??v,p=[R,w].filter(C=>!!C&&C!==m?.element);return{element:R||w?Ge(a,"span",{class:`fd-number${k?" fd-currency-after":""}${m?" fd-currency-picked":""}`},...[R,c,w].filter(C=>!!C)):c,focus:()=>c.focus(),update(C){let W=a.activeElement===c,O=x(c.value),H=O===void 0||O===C.value;if(!(W&&H)){let M=f(C.value);c.value!==M&&(c.value=M)}if(c.readOnly!==C.readonly&&(c.readOnly=C.readonly),tn(c,{...C,describedBy:[C.describedBy,...p.map(M=>M.id)].filter(Boolean).join(" ")}),m&&y&&m.update({value:C.values[y],values:C.values,readonly:C.readonly,required:!1,invalid:!1}),E&&r.type==="monetary"){let M=Dn(r,C.values,C.parent)??"";tt(E,/^[A-Z]{3}$/.test(M)?co(M,d).text:M)}for(let[M,P]of[[R,"start"],[w,"end"]])M&&p.includes(M)&&c.style.setProperty(`padding-inline-${P}`,`calc(var(--fd-pad-x) + ${M.textContent?.length??0}ch + 4px)`)}}};function vo(e="box"){let t=e==="switch"?{class:"fd-switch",role:"switch"}:{class:e==="tick"?"fd-checkbox fd-tick":"fd-checkbox"};return({form:n,name:r,id:i,document:o})=>{let a=Ge(o,"input",{id:i,type:"checkbox",...t});return a.addEventListener("change",()=>n.setValue(r,a.checked)),{element:a,focus:()=>a.focus(),update(d){a.checked=d.value===!0,a.disabled!==d.readonly&&(a.disabled=d.readonly),tn(a,d)}}}}function pi(e){return e.type==="selection"?e.options:[]}var yc=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,d=i.options?.search;if(d===!0||d!==!1&&pi(r).length>15)return ys(e);let s=Qt(pi(r),t,n,i),l=Ge(a,"select",{id:o,class:"fd-input fd-select"},Ge(a,"option",{value:""}));return s.forEach((f,c)=>l.append(Ge(a,"option",{value:String(c)},f.label))),l.addEventListener("change",()=>t.setValue(n,l.value===""?null:s[Number(l.value)].value)),{element:l,focus:()=>l.focus(),update(f){let c=s.findIndex(x=>x.value===f.value);l.value=c===-1?"":String(c),l.disabled!==f.readonly&&(l.disabled=f.readonly),tn(l,f)}}};function Ds(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:d,locale:s})=>{let l=Qt(pi(r),t,n,i),f=Fe(d,s),c=Ge(a,"div",{id:o,class:`fd-choices fd-choices-${e}`,role:e==="radio"?"radiogroup":"group"});ii(c,i);let x=e==="checkbox"?ri(ve(a),f,i):null,b=l.map((v,R)=>{let w=Ge(a,"input",{type:e,name:o,value:String(R),id:`${o}-${R}`});return c.append(Ge(a,"label",{class:"fd-choice",for:`${o}-${R}`},w,Ge(a,"span",{},v.label))),w}),y=r.type==="selection"&&r.other===!0,S=y?Ge(a,"input",{type:e,name:o,value:"other",id:`${o}-other`}):null,m=y?Ge(a,"input",{type:"text",class:"fd-input fd-other-input","aria-label":f.otherAnswer,autocomplete:"off"}):null;S&&m&&(c.append(Ge(a,"div",{class:"fd-choice fd-choice-other"},Ge(a,"label",{class:"fd-choice-other-pick",for:`${o}-other`},S,Ge(a,"span",{},f.other)),m)),m.addEventListener("input",()=>{S.checked||(S.checked=!0),k(S)}),S.addEventListener("change",()=>{S.checked&&m.focus()})),x?.element&&c.append(x.element);function k(v){if(e==="checkbox"&&v instanceof HTMLInputElement&&v.checked){let w=l[b.indexOf(v)]?.exclusive===!0;b.forEach((p,T)=>p!==v&&(w||l[T].exclusive)&&(p.checked=!1)),w&&S&&(S.checked=!1)}let R=S?.checked&&m&&m.value.trim()?m.value:null;if(e==="radio"){let w=b.findIndex(p=>p.checked);t.setValue(n,w!==-1?l[w].value:R)}else{let w=new Set(l.filter((p,T)=>b[T].checked));t.setValue(n,[...pi(r).filter(p=>w.has(p)).map(p=>p.value),...R!==null?[R]:[]])}}c.addEventListener("change",v=>{v.target!==m&&k(v.target)});let h=new Set(l.map(v=>v.value)),E=()=>b.some(v=>v.checked)||S?.checked===!0,L=e==="radio"?Zt(a,f,()=>{for(let v of[...b,S])v&&(v.checked=!1);t.setValue(n,null),(b[0]??S)?.focus()},i):null;return{element:L?Ge(a,"div",{class:"fd-choices-box"},c,L.button):c,focus:()=>(b.find(v=>v.checked)??(S?.checked?m:null)??b[0])?.focus(),update(v){let R=Array.isArray(v.value)?v.value:[v.value],w=!!x?.full(Array.isArray(v.value)?v.value.length:0);if(b.forEach((p,T)=>{p.checked=R.includes(l[T].value);let C=v.readonly||w&&!p.checked&&!l[T].exclusive;p.disabled!==C&&(p.disabled=C)}),S&&m){let p=R.find(W=>typeof W=="string"&&!h.has(W)),T=S.checked&&!m.value.trim()&&(e==="checkbox"||R.every(W=>W==null));S.checked=p!==void 0||T,p!==void 0&&a.activeElement!==m&&(m.value=p);let C=v.readonly||w&&!S.checked;S.disabled!==C&&(S.disabled=m.disabled=C)}L?.allow(v),L?.show(E()),tn(c,v)}}}}function Ws(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:d,locale:s})=>{let l=Fe(d,s),f="min"in r&&typeof r.min=="number"?r.min:e==="rating"?1:0,c="max"in r&&typeof r.max=="number"?r.max:e==="rating"?5:10,x=e==="rating"?i.options?.icon:"number",b=x!=="number",y=e==="scale"&&i.options?.nps===!0&&f===0&&c===10,S=Ge(a,"div",{id:o,class:`fd-points fd-${b?"rating":"scale"}${b?` fd-rating-${x??"star"}`:""}${y?" fd-nps":""}`,role:"radiogroup"}),m=[],k=e==="rating"&&f===c,h=e==="rating"&&(k||i.options?.clear===!1),E=!1;for(let w=f;w<=c;w++){let p=Ge(a,"button",{type:"button",role:"radio","aria-label":Te(l.ofMax,{n:w,max:c}),"data-value":String(w)},x==="thumb"?bt(a,"thumb"):x==="heart"?"\u2665":b?"\u2605":String(w));e==="scale"&&p.removeAttribute("aria-label"),y&&(p.dataset.tone=w<7?"low":w<9?"mid":"high"),p.addEventListener("click",()=>t.setValue(n,h&&!E&&t.getState().values[n]===w?null:w)),m.push(p),S.append(p)}S.addEventListener("keydown",w=>{let p=t.getState().values[n],T=typeof p=="number"?p:f-1,C=w.key==="ArrowRight"||w.key==="ArrowUp"?1:w.key==="ArrowLeft"||w.key==="ArrowDown"?-1:0;if(!C)return;w.preventDefault();let W=Math.min(c,Math.max(f,T+C));t.setValue(n,W),m[W-f]?.focus()});let L=[i.options?.startLabel,i.options?.endLabel].map(w=>typeof w=="string"?w:""),v=Zt(a,l,()=>{t.setValue(n,null),m[0]?.focus()},i,!k),R=L.some(Boolean)?Ge(a,"div",{class:"fd-scale-box"},S,Ge(a,"div",{class:"fd-scale-ends","aria-hidden":"true"},Ge(a,"span",{},L[0]),Ge(a,"span",{},L[1]))):S;return L.some(Boolean)&&S.setAttribute("aria-description",L.filter(Boolean).join(" \u2026 ")),{element:Ge(a,"div",{class:"fd-choices-box"},R,v.button),focus:()=>(m.find(w=>w.getAttribute("aria-checked")==="true")??m[0])?.focus(),update(w){let p=typeof w.value=="number"?w.value:null;E=w.required,m.forEach((T,C)=>{let W=f+C;Ae(T,"aria-checked",String(W===p)),T.classList.toggle("fd-on",b?p!==null&&W<=p:W===p);let O=W===p||p===null&&C===0?0:-1;T.tabIndex!==O&&(T.tabIndex=O),T.disabled!==w.readonly&&(T.disabled=w.readonly)}),v.allow(w),v.show(p!==null),tn(S,w)}}}}var vc=e=>{let{form:t,name:n,field:r,id:i,document:o,node:a}=e,d=Ge(o,"input",{id:i,type:"date",class:"fd-input fd-date"});oi(d,r,a),d.addEventListener("input",()=>t.setValue(n,d.value||null));let s={element:d,focus:()=>d.focus(),update(l){let f=mi(l.value);d.value!==f&&(d.value=f),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),d.classList.toggle("fd-blank",!f),tn(d,l)}};return a.options?.weekNumbers===!0?ti(s,e,"date"):s},ui=e=>String(e).padStart(2,"0"),xc=e=>{let{form:t,name:n,field:r,id:i,document:o,node:a}=e,d=Ge(o,"input",{id:i,type:"datetime-local",class:"fd-input fd-datetime"});oi(d,r,a);let s=f=>{if(typeof f!="string"||!f)return"";let c=new Date(f);return Number.isNaN(c.getTime())?"":`${c.getFullYear()}-${ui(c.getMonth()+1)}-${ui(c.getDate())}T${ui(c.getHours())}:${ui(c.getMinutes())}`};d.addEventListener("input",()=>{if(!d.value)return t.setValue(n,null);let f=new Date(d.value);Number.isNaN(f.getTime())||t.setValue(n,f.toISOString())});let l={element:d,focus:()=>d.focus(),update(f){let c=s(f.value);d.value!==c&&(d.value=c),d.readOnly!==f.readonly&&(d.readOnly=f.readonly),d.classList.toggle("fd-blank",!c),tn(d,f)}};return a.options?.weekNumbers===!0?ti(l,e,"datetime"):l};function wc({field:e,id:t,document:n}){let r=Ge(n,"span",{id:t,class:"fd-pending","data-fd-pending":e.type});return{element:r,focus:()=>{},update(i){r.textContent=Zr(i.value,e)}}}function Zr(e,t){if(e==null)return"";switch(t.type){case"many2one":case"reference":return e.label;case"many2many":return e.map(n=>n.label).join(", ");case"one2many":{let n=e.length;return`${n} ${n===1?"line":"lines"}`}case"binary":case"image":return[e].flat().map(n=>n.name).join(", ");case"html":return String(e).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();default:return typeof e=="object"?JSON.stringify(e):String(e)}}var js={char:zn("text"),"char.email":zn("email"),"char.phone":zn("tel"),"char.url":zn("url"),"char.password":zn("password"),"char.time":zn("time"),"char.tags":qi,text:gc,integer:yo,float:yo,monetary:yo,"integer.rating":Ws("rating"),"integer.scale":Ws("scale"),"integer.slider":oo,"float.slider":oo,"integer.progressbar":sr,"integer.label":dr,"float.label":dr,"monetary.label":dr,"float.progressbar":sr,"float.duration":_a,"float.percentage":Ua,"monetary.progressbar":sr,boolean:vo(),"boolean.toggle":vo("switch"),"boolean.tick":vo("tick"),"boolean.buttons":As,"boolean.priority":fo,"selection.priority":fo,"selection.dot":Ms,"integer.color":uo,"char.color":uo,"char.copy":po,"text.copy":po,"date.daterange":go,"datetime.daterange":go,"float.timer":bo,"datetime.timer":bo,"binary.pdf":Os,"char.embed":Vs,"json.distribution":Ja,"json.tax-totals":Ps,"json.payments":Is,selection:yc,"selection.radio":Ds("radio"),"selection.checkboxes":Ds("checkbox"),"selection.tags":bs,"selection.image-choice":xs,"selection.ranking":ws,"selection.statusbar":Qr,date:vc,datetime:xc,many2one:ir,"many2one.statusbar":Qr,many2many:Ur,"many2many.tags":Ur,"many2many.checkboxes":_i,"many2many.table":Ts,reference:Ui,one2many:Ji,"one2many.cards":Es,binary:ar,"binary.signature":hs,image:Xi,html:ro,json:io,"json.address":Ss,properties:to,matrix:gs,"char.badge":ai,"selection.badge":ai,"many2one.badge":ai};var Hs=`.fd-signature{display:grid;gap:8px;justify-items:start;width:100%;max-width:480px;min-width:0}.fd-signature-box{position:relative;width:100%;aspect-ratio:10 / 3;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:#fff;overflow:hidden}.fd-signature-box:has(.fd-signature-pad:not([hidden]):not(.fd-signature-locked)):hover{border-color:var(--fd-accent)}.fd-signature-pad,.fd-signature-image{display:block;width:100%;height:100%}.fd-signature-pad{touch-action:none;cursor:crosshair}.fd-signature-pad.fd-signature-locked{cursor:default}.fd-signature-image{object-fit:contain}.fd-signature-hint{position:absolute;inset-inline:18px;inset-block-end:16px;padding-block-start:4px;pointer-events:none;border-block-start:1px solid var(--fd-border-strong);color:var(--fd-muted);font-size:12.5px}.fd-signature-tools{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;width:100%}.fd-signature-typed{flex:1 1 200px;min-width:0}.fd-signature-footer{margin-block-start:-4px;color:var(--fd-muted);font-size:12.5px}.fd-slider{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;row-gap:0;align-items:center;width:100%;max-width:440px;min-width:0}.fd-slider-track{display:contents}.fd-slider-input{width:100%;min-width:0;height:26px;margin:0;accent-color:var(--fd-accent);cursor:pointer}.fd-slider-input:disabled{cursor:default}.fd-slider-value{min-width:2.5em;text-align:start;font-variant-numeric:tabular-nums;font-weight:600}.fd-slider-ends{grid-column:1;display:flex;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--fd-muted);font-variant-numeric:tabular-nums}.fd-slider-empty .fd-slider-input{filter:grayscale(1);opacity:.55}.fd-slider-empty .fd-slider-value{color:var(--fd-muted);font-weight:400}.fd-slider .fd-choice-clear{grid-column:1 / -1}.fd-image-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr));gap:12px;width:100%;min-width:0}.fd-image-card{position:relative;display:grid;grid-template-rows:auto 1fr;padding:0;margin:0;overflow:hidden;cursor:pointer;font:inherit;color:var(--fd-text);text-align:start;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);transition:border-color .15s ease,box-shadow .15s ease}.fd-image-card:hover:not(:disabled){border-color:var(--fd-accent)}.fd-image-card:disabled{cursor:default}.fd-image-card:disabled:not([aria-checked=true]){opacity:.6}.fd-image-card[aria-checked=true]{border-color:var(--fd-accent);box-shadow:0 0 0 1px var(--fd-accent)}.fd-image-card-picture{display:block;aspect-ratio:4 / 3;background:var(--fd-page);border-block-end:1px solid var(--fd-border)}.fd-image-card-picture img{display:block;width:100%;height:100%;object-fit:cover}.fd-image-card-blank{display:grid;place-items:center;width:100%;height:100%;color:var(--fd-border-strong)}.fd-image-card-blank svg{width:36%;height:36%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.fd-image-card-words{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;font-size:13.5px;line-height:1.35}.fd-image-card-words:before{content:"";flex:none;width:16px;height:16px;margin-block-start:1px;box-sizing:border-box;border:1.5px solid var(--fd-border-strong);border-radius:50%;background:var(--fd-surface)}.fd-image-card[role=checkbox] .fd-image-card-words:before{border-radius:4px}.fd-image-card[aria-checked=true] .fd-image-card-words:before{border-color:var(--fd-accent);background:var(--fd-accent);box-shadow:inset 0 0 0 3px var(--fd-surface)}.fd-image-card[role=checkbox][aria-checked=true] .fd-image-card-words:before{box-shadow:none;background:var(--fd-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 13px no-repeat}.fd-image-choices+.fd-choice-clear{justify-self:end}.fd-ranking{width:100%;max-width:480px;min-width:0}.fd-rank-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.fd-rank-item{display:flex;align-items:center;gap:10px;padding-block:5px;padding-inline:8px 5px;min-height:40px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);cursor:grab;user-select:none;-webkit-user-select:none}.fd-rank-item.fd-rank-lifted{position:relative;z-index:1;cursor:grabbing;border-color:var(--fd-accent);box-shadow:0 6px 18px #0f141929}.fd-ranking-locked .fd-rank-item{cursor:default}.fd-rank-grip{flex:none;width:10px;height:16px;touch-action:none;background:radial-gradient(circle,var(--fd-border-strong) 1.3px,transparent 1.7px) 0 0 / 5px 5.33px}.fd-ranking-locked .fd-rank-grip{visibility:hidden}.fd-rank-place{flex:none;display:grid;place-items:center;min-width:24px;height:24px;padding-inline:4px;border-radius:999px;background:var(--fd-accent-soft);color:var(--fd-accent);font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}.fd-rank-words{flex:1;min-width:0;overflow-wrap:anywhere}.fd-rank-tools{flex:none;display:inline-flex;gap:2px}.fd-rank-move{width:30px;height:30px;padding:0;font:inherit;font-size:15px;line-height:1;color:var(--fd-muted);background:none;border:1px solid transparent;border-radius:4px;cursor:pointer}.fd-rank-move:hover:not(:disabled){background:var(--fd-page);border-color:var(--fd-border);color:var(--fd-text)}.fd-rank-move:disabled{opacity:.3;cursor:default}.fd-address{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;width:100%;max-width:560px;min-width:0}.fd-address-part{display:grid;gap:3px;min-width:0;align-content:start}.fd-address-street,.fd-address-line2{grid-column:1 / -1}.fd-address-part.fd-required>.fd-address-label:after{content:" *";color:var(--fd-error)}.fd-address-label{font-size:12.5px;color:var(--fd-muted)}@container (max-width: 420px){.fd-address{grid-template-columns:minmax(0,1fr)}}.fd-repeat{display:grid;gap:10px;justify-items:start;width:100%;min-width:0}.fd-repeat-list{display:grid;gap:10px;width:100%;min-width:0}.fd-repeat-list:empty{display:none}.fd-repeat-card{display:grid;gap:8px;min-width:0;padding:10px 14px 14px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-radius),6px)}.fd-repeat-head{display:flex;align-items:center;gap:2px;min-height:28px}.fd-repeat-title{font-weight:600;font-size:13.5px;margin-inline-end:auto}.fd-repeat-remove,.fd-repeat-tool{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:18px;line-height:1;padding:4px 8px;border-radius:4px}.fd-repeat-remove:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-repeat-tool{font-size:15px;min-width:24px;min-height:24px}.fd-repeat-tool:hover{color:var(--fd-accent);background:var(--fd-accent-soft)}.fd-repeat-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px 14px}.fd-repeat-field{display:grid;gap:3px;min-width:0;align-content:start}.fd-repeat-label{font-size:12.5px;color:var(--fd-muted)}.fd-repeat-add{border-style:dashed}`;var zs='.fd-yes-no button{min-width:76px}.fd-choices-columns{display:grid;grid-template-columns:repeat(var(--fd-choice-columns),minmax(0,1fr))}.fd-choices-row{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}.fd-choice-limit{grid-column:1 / -1;flex-basis:100%;font-size:12.5px;color:var(--fd-muted)}.fd-choice-limit:empty{display:none}.fd-image-choices[data-size=small]{--fd-card: 96px}.fd-image-choices[data-size=large]{--fd-card: 210px}.fd-image-choices[data-size]{grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--fd-card, 130px)),1fr))}.fd-image-choices[data-fit=whole] img{object-fit:contain}.fd-image-choices-bare .fd-image-card-words{position:absolute;inset-block-start:6px;inset-inline-start:6px;padding:0;font-size:0}.fd-choice-search .fd-combo:after{content:"";position:absolute;inset-inline-end:12px;width:6px;height:6px;margin-block-start:-4px;pointer-events:none;border:solid var(--fd-muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.fd-rank-pool{display:flex;flex-wrap:wrap;gap:8px;margin-block:6px 10px}.fd-rank-pick{min-height:32px;padding:4px 12px;font:inherit;color:inherit;cursor:pointer;background:var(--fd-surface);border:1px dashed var(--fd-border-strong);border-radius:999px}.fd-rank-pick:disabled{opacity:.5;cursor:default}.fd-rank-list:empty{display:none}.fd-rank-keep{margin-block-start:8px}.fd-matrix-pick{display:inline-flex;align-items:center;gap:8px}.fd-matrix-column{display:none}@container (max-width: 520px){.fd-choices-columns{grid-template-columns:minmax(0,1fr)}.fd-image-choices.fd-image-choices{grid-auto-flow:row;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr))}.fd-matrix-table,.fd-matrix-table :is(tbody,tr,th,td){display:block}.fd-matrix-table thead{display:none}.fd-matrix-table tr{padding:10px 12px;margin-block-end:10px;border:1px solid var(--fd-border);border-radius:var(--fd-radius)}.fd-matrix-table :is(th,td){padding:2px 0;border:0;text-align:start}.fd-matrix-pick{min-height:32px}.fd-matrix-column{display:inline}}';var Bs='.fd-counted{display:grid;gap:2px;min-width:0}.fd-count{justify-self:end;direction:ltr;unicode-bidi:isolate;font-size:12px;color:var(--fd-muted);font-variant-numeric:tabular-nums}.fd-count-near{color:var(--fd-warning);font-weight:600}.fd-number:not(.fd-currency-picked){position:relative;display:block}.fd-number>.fd-unit{position:absolute;inset-block:0;display:flex;align-items:center;pointer-events:none;color:var(--fd-muted)}.fd-number>.fd-unit:first-child{inset-inline-start:var(--fd-pad-x)}.fd-number>.fd-unit:last-child{inset-inline-end:var(--fd-pad-x)}.fd-rating-heart button.fd-on{color:#e5484d}.fd-rating-thumb button.fd-on{color:var(--fd-accent)}.fd-rating .fd-icon{display:block;width:1em;height:1em}.fd-rating .fd-on .fd-icon{fill:currentColor}.fd-slider-word{display:block;max-width:12em}.fd-slider-last{text-align:end}.fd-nps [data-tone=low]{--fd-tone: var(--fd-error);--fd-tone-soft: var(--fd-error-soft)}.fd-nps [data-tone=mid]{--fd-tone: var(--fd-warning);--fd-tone-soft: var(--fd-warning-soft)}.fd-nps [data-tone=high]{--fd-tone: var(--fd-success);--fd-tone-soft: var(--fd-success-soft)}.fd-nps button{background:var(--fd-tone-soft);border-color:var(--fd-tone);color:var(--fd-tone);font-weight:600}.fd-nps button.fd-on{background:var(--fd-tone);border-color:var(--fd-tone);color:var(--fd-surface)}.fd-nps [data-value="7"],.fd-nps [data-value="9"]{margin-inline-start:8px}.fd-choices-box>.fd-scale-box{justify-self:start}';var qs=".fd-form[data-inputs~=bg] :is(.fd-input:not([readonly]),.fd-calendar-button){background:var(--fd-inputs-bg)}.fd-form[data-inputs~=border] :is(.fd-input,.fd-calendar-button){--fd-border: var(--fd-inputs-border);--fd-border-strong: var(--fd-inputs-border)}.fd-form[data-inputs~=radius] :is(.fd-input,.fd-calendar-button){--fd-control-radius: var(--fd-inputs-radius)}.fd-form[data-inputs~=size] :where(.fd-input){font-size:var(--fd-inputs-size)}.fd-form[data-inputs~=accent] :is(.fd-input,.fd-combo,.fd-tags,.fd-date-pick){--fd-accent: var(--fd-inputs-accent);--fd-accent-text: var(--fd-inputs-accent-text);--fd-focus: var(--fd-accent);--fd-accent-soft: color-mix(in srgb, var(--fd-accent) 12%, var(--fd-surface));--fd-focus-ring: 0 0 0 2px color-mix(in srgb, var(--fd-accent) 22%, transparent)}.fd-form[data-choices~=accent] :is(.fd-choices,.fd-points,.fd-image-choices,.fd-ranking,.fd-checkbox,.fd-switch,.fd-matrix-table,.fd-slider){--fd-accent: var(--fd-choices-accent);--fd-accent-text: var(--fd-choices-accent-text);--fd-focus: var(--fd-accent);--fd-accent-soft: color-mix(in srgb, var(--fd-accent) 12%, var(--fd-surface))}.fd-form[data-choices~=bg] :is(.fd-points button,.fd-image-card,.fd-rank-item){--fd-surface: var(--fd-choices-bg)}.fd-form[data-choices~=border] :is(.fd-points button,.fd-image-card,.fd-rank-item){--fd-border: var(--fd-choices-border)}.fd-form[data-choices~=radius] :is(.fd-points button,.fd-image-card,.fd-rank-item){--fd-control-radius: var(--fd-choices-radius)}.fd-form[data-choices~=size] :is(.fd-choices,.fd-points,.fd-image-card-words,.fd-rank-list){font-size:var(--fd-choices-size)}.fd-form[data-groups~=bg] :is(.fd-sections>.fd-section:not([data-style]),.fd-section[data-style=card][data-on-page],.fd-section[data-style=framed],.fd-card,.fd-repeat-card){background:var(--fd-groups-bg);--fd-ground: var(--fd-groups-bg)}.fd-form[data-groups~=border] :is(.fd-sections>.fd-section:not([data-style]),.fd-section[data-style=card][data-on-page],.fd-section[data-style=framed],.fd-card,.fd-repeat-card){border:1px solid var(--fd-groups-border)}.fd-form[data-groups~=radius] :is(.fd-sections>.fd-section:not([data-style]),.fd-section[data-style=card][data-on-page],.fd-section[data-style=framed],.fd-card,.fd-repeat-card){border-radius:var(--fd-groups-radius)}.fd-form[data-fd-skin=underline]:is([data-groups~=bg],[data-groups~=border]) :is(.fd-sections>.fd-section:not([data-style]),.fd-section[data-style=card][data-on-page]){padding:var(--fd-group-pad, 18px 22px);border-radius:var(--fd-groups-radius, var(--fd-radius))}:is(.fd-form,.fd-form-dialog)[data-buttons~=accent] .fd-button{--fd-accent: var(--fd-buttons-accent);--fd-accent-text: var(--fd-buttons-accent-text);--fd-focus: var(--fd-accent);--fd-accent-hover: color-mix(in srgb, var(--fd-accent) 84%, var(--fd-text))}:is(.fd-form,.fd-form-dialog)[data-buttons~=accent] .fd-button-primary:hover{filter:none;background:var(--fd-accent-hover);border-color:var(--fd-accent-hover)}:is(.fd-form,.fd-form-dialog)[data-buttons~=radius] .fd-button{border-radius:var(--fd-buttons-radius)}:is(.fd-form,.fd-form-dialog)[data-buttons~=size] .fd-button{font-size:var(--fd-buttons-size)}.fd-form[data-tables~=bg] :is(.fd-lines-table,.fd-matrix-table) thead th{background:var(--fd-tables-bg)}.fd-form[data-tables~=border] :is(.fd-lines-table,.fd-matrix-table) :is(th,td){border-color:var(--fd-tables-border)}.fd-form[data-tables~=size] :is(.fd-lines-table,.fd-matrix-table) :is(th,td){font-size:var(--fd-tables-size)}";var _s='.fd-read-text{min-width:0;min-height:var(--fd-control-height, 30px);padding-block:calc(var(--fd-pad-y) + 1px);white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45;color:var(--fd-text)}.fd-field:is([data-type=integer],[data-type=float],[data-type=monetary])>.fd-read-text{font-variant-numeric:tabular-nums}.fd-read-text{unicode-bidi:plaintext;text-align:left}[dir=rtl] .fd-read-text{text-align:right}.fd-read-text a,.fd-read-link{color:var(--fd-accent);text-decoration:none}.fd-read-link{border:none;background:none;padding:0;font:inherit;cursor:pointer;text-align:start}.fd-read-text a:hover,.fd-read-link:hover{text-decoration:underline}.fd-read-link:focus-visible,.fd-read-text a:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px;border-radius:2px}.fd-field>.fd-value-badge{justify-self:start;align-self:start;width:fit-content;margin-block:calc((var(--fd-control-height, 30px) - 24px) / 2)}.fd-title>.fd-field>.fd-read-text{font-size:24px;font-weight:600;line-height:1.25}.fd-ribbon[title]{pointer-events:auto;cursor:help}.fd-value{font-weight:600}.fd-alert:has(>.fd-alert-actions){flex-wrap:wrap;align-items:baseline}.fd-alert-actions{display:inline-flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}.fd-alert-actions .fd-button{min-height:0;padding-block:0;font-size:inherit}.fd-alert-actions .fd-button-link{color:inherit;padding-inline:0;text-decoration:underline;text-underline-offset:2px;font-weight:600}.fd-text-alert{grid-column:1 / -1;margin:0}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden]))>:is(.fd-ribbon-frame+.fd-alert,.fd-ribbon-frame+.fd-stats[hidden]+.fd-alert){margin-inline-end:72px}.fd-stat-pair{gap:1px}.fd-stat-row{display:inline-flex;align-items:baseline;gap:5px}.fd-stat-row>.fd-stat-label:after{content:":"}.fd-stat-pair .fd-stat-value{font-size:13.5px}@container (max-width: 520px){.fd-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.fd-stat{min-width:0;padding-inline:12px;text-align:start;column-gap:8px}.fd-stat:has(>.fd-icon){column-gap:8px}.fd-stat-value{font-size:14px}.fd-stat:nth-child(odd of:not([hidden])){border-inline-start:none}.fd-stat:nth-child(n+3 of:not([hidden])){border-block-start:1px solid var(--fd-border)}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden])) .fd-stats{padding-inline-end:0}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden])) .fd-stat:nth-child(2 of:not([hidden])){padding-inline-end:64px}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden])) .fd-stat:nth-child(4 of:not([hidden])){padding-inline-end:36px}}.fd-step-time{margin-inline-start:6px;font-size:11.5px;font-weight:400;font-variant-numeric:tabular-nums}.fd-statusbar li.fd-step-more>button{padding-inline:16px 20px;letter-spacing:1px}.fd-statusbar li.fd-step-more>.fd-step-menu{position:fixed;z-index:30;display:grid;min-width:160px;margin:0;padding:4px 0;clip-path:none;transform:none;background:var(--fd-surface);color:var(--fd-text);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),4px);box-shadow:0 8px 24px #0f14191f;white-space:nowrap}.fd-statusbar li.fd-step-more>.fd-step-menu[hidden]{display:none}.fd-statusbar .fd-step-menu>button{font:inherit;font-size:13px;text-align:start;border:none;background:none;color:inherit;padding:6px 14px;cursor:pointer;transform:none}.fd-statusbar .fd-step-menu>button:hover:not(:disabled),.fd-statusbar .fd-step-menu>button:focus-visible{background:var(--fd-accent-soft);outline:none}.fd-statusbar .fd-step-menu>button:disabled{cursor:default;color:var(--fd-muted)}.fd-hotkey{display:none}[data-hotkeys] .fd-hotkey{display:inline-block;margin-inline-start:6px;padding:0 4px;border:1px solid currentColor;border-radius:3px;font:600 10.5px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;opacity:.85;vertical-align:1px}.fd-link-avatar{flex:none;display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;overflow:hidden;background:var(--fd-accent-soft);color:var(--fd-accent);font-size:10px;font-weight:700;line-height:1;vertical-align:middle}.fd-link-avatar img{width:100%;height:100%;object-fit:cover}.fd-combo[data-avatar]>.fd-link-avatar{position:absolute;inset-inline-start:4px;pointer-events:none}.fd-combo[data-avatar]>.fd-link-avatar[hidden]~.fd-combo-input{padding-inline-start:var(--fd-pad-x)}.fd-combo[data-avatar]>.fd-link-avatar:not([hidden])~.fd-combo-input{padding-inline-start:32px}.fd-form[data-fd-skin=underline] .fd-combo[data-avatar]>.fd-link-avatar{inset-inline-start:0}.fd-form[data-fd-skin=underline] .fd-combo[data-avatar]>.fd-link-avatar:not([hidden])~.fd-combo-input{padding-inline-start:28px}.fd-read-text>.fd-link-avatar{margin-inline-end:6px}.fd-chip>.fd-link-avatar{width:18px;height:18px;font-size:9px;margin-inline:-4px 2px}.fd-link{display:grid;gap:2px;min-width:0}.fd-link-details{font-size:12.5px;line-height:1.4;color:var(--fd-muted);text-align:left}[dir=rtl] .fd-link-details{text-align:right}.fd-link-details>div{unicode-bidi:plaintext}.fd-chip[data-color]{background:color-mix(in srgb,var(--fd-tag) 18%,var(--fd-surface));border-color:color-mix(in srgb,var(--fd-tag) 55%,var(--fd-surface))}.fd-chip[data-color="1"]{--fd-tag: #f06050}.fd-chip[data-color="2"]{--fd-tag: #f4a460}.fd-chip[data-color="3"]{--fd-tag: #f7cd1f}.fd-chip[data-color="4"]{--fd-tag: #6cc1ed}.fd-chip[data-color="5"]{--fd-tag: #814968}.fd-chip[data-color="6"]{--fd-tag: #eb7e7f}.fd-chip[data-color="7"]{--fd-tag: #2c8397}.fd-chip[data-color="8"]{--fd-tag: #475577}.fd-chip[data-color="9"]{--fd-tag: #d6145f}.fd-chip[data-color="10"]{--fd-tag: #30c381}.fd-chip[data-color="11"]{--fd-tag: #9365b8}.fd-oneline-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;min-height:var(--fd-control-height, 30px)}.fd-form .fd-oneline-row>.fd-field{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 6px;flex:0 1 auto;width:auto;min-width:0;grid-template-columns:none}.fd-form .fd-oneline-row>.fd-field>*{grid-column:auto!important}.fd-oneline-row>.fd-field:not([data-labels=beside]):not([data-labels=above])>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-oneline-row>.fd-field>:is(.fd-error,.fd-warning){flex-basis:100%}.fd-oneline-row .fd-input{width:12em;max-width:100%}.fd-form .fd-oneline-row>.fd-field{max-width:100%}.fd-oneline-row>.fd-field>*{max-width:100%;min-width:0}.fd-oneline-row>.fd-field:is([data-type=many2one],[data-type=reference]) .fd-input{width:15em}.fd-oneline-row>.fd-field:is([data-type=integer],[data-type=float]) .fd-input{width:7em}.fd-oneline-row>.fd-field[data-type=monetary] .fd-input{width:8.5em}.fd-oneline-row>.fd-field:is([data-type=date],[data-type=datetime]) .fd-input{width:9.5em}.fd-form .fd-oneline-words{margin:0;padding:0;border:0;background:none;color:var(--fd-text)}.fd-form .fd-oneline-words.fd-text-note{color:var(--fd-muted);font-size:12.5px}.fd-form .fd-oneline:not(:has(>.fd-label))>.fd-oneline-row{grid-column:1 / -1!important}.fd-oneline-row>.fd-button-link{padding-inline:0;min-height:0}.fd-oneline-row>.fd-field>.fd-read-text{min-height:0;padding-block:0}.fd-title-label{font-size:12.5px;font-weight:600;color:var(--fd-muted)}';var Us='.fd-priority{display:inline-flex;align-items:center;gap:1px}.fd-priority-star{border:none;background:none;padding:0 1px;min-width:0;font:inherit;font-size:20px;line-height:1;color:var(--fd-border-strong);cursor:pointer}.fd-priority-star.fd-on{color:#e8a317}.fd-priority:not(:has(:disabled)):hover .fd-priority-star{color:#e8a317}.fd-priority:not(:has(:disabled)) .fd-priority-star:hover~.fd-priority-star{color:var(--fd-border-strong)}.fd-priority-star:disabled{cursor:default}.fd-title-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-width:0}.fd-title-line>.fd-title-name{flex:1 1 18em;min-width:0}.fd-title-line>.fd-title-name .fd-input{font-size:24px;font-weight:600;min-height:40px}.fd-title-line>.fd-title-name>.fd-read-text{font-size:24px;font-weight:600;line-height:1.25}.fd-form .fd-title-line>.fd-field{grid-template-columns:minmax(0,1fr)}.fd-form .fd-title-line>.fd-field>*{grid-column:1!important}.fd-form .fd-title-line>.fd-title-side{display:flex;align-items:center;flex:none}.fd-title-line>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-line .fd-priority-star{font-size:24px}.fd-dot-box{position:relative;display:inline-flex;align-items:center;gap:6px}.fd-dot-button{display:inline-grid;place-items:center;width:24px;height:24px;padding:0;border:none;border-radius:50%;background:none;cursor:pointer}.fd-dot-button:hover:not(:disabled){background:var(--fd-accent-soft)}.fd-dot-button:disabled{cursor:default}.fd-dot{display:inline-block;width:12px;height:12px;flex:none;border-radius:50%;background:var(--fd-dot, var(--fd-border-strong))}.fd-dot-button[data-tone=muted],.fd-dot-item[data-tone=muted]{--fd-dot: var(--fd-border-strong)}.fd-dot-button[data-tone=danger],.fd-dot-item[data-tone=danger]{--fd-dot: var(--fd-error)}.fd-dot-button[data-tone=success],.fd-dot-item[data-tone=success]{--fd-dot: var(--fd-success)}.fd-dot-button[data-tone=warning],.fd-dot-item[data-tone=warning]{--fd-dot: #d97706}.fd-dot-button[data-tone=info],.fd-dot-item[data-tone=info]{--fd-dot: var(--fd-info)}.fd-dot-label{font-size:13px;color:var(--fd-muted)}.fd-dot-menu{position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:30;min-width:180px;padding:4px;display:grid;background:var(--fd-surface);color:var(--fd-text);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);box-shadow:0 6px 20px #00000029}.fd-dot-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:4px;cursor:pointer;white-space:nowrap;font-size:14px}.fd-dot-item:hover,.fd-dot-item:focus{background:var(--fd-accent-soft);outline:none}.fd-dot-item[aria-checked=true]{font-weight:600}.fd-colour-box{position:relative;display:inline-flex;align-items:center;gap:8px}.fd-colour-button,.fd-colour{width:24px;height:24px;padding:0;border:1px solid var(--fd-border-strong);border-radius:4px;background:var(--fd-swatch, transparent);cursor:pointer}.fd-colour-button:disabled{cursor:default}.fd-colour-none,.fd-colour[data-colour="0"]{background:linear-gradient(to top right,transparent calc(50% - 1px),var(--fd-error) calc(50% - 1px),var(--fd-error) calc(50% + 1px),transparent calc(50% + 1px))}.fd-colour-palette{position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:30;display:grid;grid-template-columns:repeat(6,24px);gap:6px;padding:8px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);box-shadow:0 6px 20px #00000029}.fd-colour[aria-checked=true]{box-shadow:0 0 0 2px var(--fd-surface),0 0 0 4px var(--fd-accent)}.fd-colour-input{width:44px;height:30px;padding:2px;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-surface)}.fd-colour-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:var(--fd-muted)}.fd-copy{display:flex;align-items:center;gap:8px;min-width:0}.fd-copy>.fd-input{flex:1 1 auto;min-width:0}.fd-copy-long{align-items:flex-start}.fd-copy-button{flex:none}.fd-range{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.fd-range-box{flex:1 1 8em;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}.fd-range-box>.fd-input{flex:1 1 9em;min-width:0}.fd-range-box>.fd-input[type=datetime-local]{flex-basis:13em}.fd-range-arrow{flex:none;display:inline-block;color:var(--fd-muted)}.fd-range-arrow:dir(rtl){transform:scaleX(-1)}.fd-range-calendar .fd-calendar-grid td button.fd-in-range{background:var(--fd-accent-soft);border-radius:0}.fd-timer{display:inline-flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums;font-weight:600;direction:ltr;unicode-bidi:isolate}.fd-timer-dot{width:8px;height:8px;border-radius:50%;background:var(--fd-border-strong)}.fd-timer[data-running] .fd-timer-dot{background:var(--fd-success);animation:fd-timer-beat 1s ease-in-out infinite alternate}.fd-timer[data-running] .fd-timer-time{color:var(--fd-success)}@keyframes fd-timer-beat{to{opacity:.35}}@media(prefers-reduced-motion:reduce){.fd-timer[data-running] .fd-timer-dot{animation:none}}.fd-embed{display:grid;gap:8px;min-width:0}.fd-embed-bar{display:flex;align-items:center;gap:8px;min-width:0}.fd-embed-bar>.fd-input{flex:1 1 auto;min-width:0}.fd-embed-open{flex:none}.fd-embed-frame{display:block;width:100%;border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),4px);background:var(--fd-page)}.fd-embed-none{padding:24px 12px;text-align:center;color:var(--fd-muted);border:1px dashed var(--fd-border);border-radius:max(var(--fd-control-radius),4px)}.fd-distribution{display:grid;gap:6px;min-width:0}.fd-distribution-table .fd-distribution-share{width:8.5em}.fd-distribution-table .fd-share{text-align:end;padding-inline-end:calc(var(--fd-pad-x) + 2ch)}.fd-distribution-total{font-weight:600;text-align:end;padding-inline-end:calc(var(--fd-pad-x) + 2ch + 4px);font-variant-numeric:tabular-nums}.fd-distribution-add{justify-self:start}.fd-tax-totals{justify-self:end;border-collapse:collapse;min-width:min(100%,320px);font-variant-numeric:tabular-nums}.fd-tax-totals th{text-align:start;font-weight:400;color:var(--fd-muted);padding:3px 16px 3px 0;padding-inline:0 16px}.fd-tax-totals td{text-align:end;padding:3px 0;white-space:nowrap}.fd-tax-totals .fd-tax-subtotal th{color:var(--fd-text)}.fd-tax-totals .fd-tax-total :is(th,td){font-weight:700;color:var(--fd-text);font-size:15px;border-top:1px solid var(--fd-border);padding-top:6px}.fd-tax-totals .fd-input{width:9em;text-align:end}.fd-payments{display:grid;gap:6px;justify-self:end;min-width:min(100%,320px);font-variant-numeric:tabular-nums}.fd-payments-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.fd-payment{position:relative;display:flex;align-items:center;gap:8px}.fd-payment-info{flex:none;width:20px;height:20px;padding:0;border:1px solid var(--fd-border-strong);border-radius:50%;background:var(--fd-surface);color:var(--fd-muted);font:italic 600 12px/1 Georgia,serif;cursor:pointer}.fd-payment-info:hover,.fd-payment-info[aria-expanded=true]{color:var(--fd-accent);border-color:var(--fd-accent)}.fd-payment-date{flex:1 1 auto;font-style:italic;color:var(--fd-muted)}.fd-payment-amount{white-space:nowrap}.fd-payment-details{position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:30;min-width:240px;display:grid;gap:6px;padding:10px 12px;background:var(--fd-surface);color:var(--fd-text);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);box-shadow:0 6px 20px #00000029}.fd-payment-details dl{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;margin:0}.fd-payment-details dt{color:var(--fd-muted)}.fd-payment-details dd{margin:0}.fd-payment-open{justify-self:start}.fd-payment-due{display:flex;justify-content:space-between;gap:16px;padding-top:6px;border-top:1px solid var(--fd-border);font-weight:600}.fd-properties-list{display:grid;gap:8px;min-width:0}.fd-properties[data-columns="2"]>.fd-properties-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}@container (max-width: 520px){.fd-properties[data-columns="2"]>.fd-properties-list{grid-template-columns:minmax(0,1fr)}}.fd-property-add{justify-self:start}.fd-property-new{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.fd-property-new>.fd-input{flex:1 1 10em;width:auto}';var Ks='.fd-grid>.fd-section[data-place=tracks]{--fd-tracks: min(var(--fd-span, 1), var(--fd-cols));grid-template-columns:subgrid;column-gap:var(--fd-gap-x)}.fd-form .fd-section[data-place=tracks]>.fd-grid{--fd-cols: var(--fd-tracks);grid-column:1 / -1;grid-template-columns:subgrid}.fd-section[data-place]>.fd-section-description{grid-column:1 / -1}.fd-grid>.fd-section[data-place=shared]{container-type:inline-size}.fd-form .fd-section[data-place=shared]>.fd-grid{--fd-cols: var(--fd-columns, 1)}@container (max-width: 330px){.fd-form .fd-section[data-place=shared]>.fd-grid{--fd-cols: 1}}.fd-form{--fd-ground: transparent}.fd-card,.fd-form[data-fd-skin=outlined] .fd-section[data-style=card][data-on-page]{--fd-ground: var(--fd-surface)}fieldset.fd-section[data-style]{background-color:var(--fd-ground)}.fd-form .fd-section[data-style=line]>.fd-section-title{border-block-end:1px solid var(--fd-border);padding-block-end:8px}.fd-form .fd-section[data-style=plain]>.fd-section-title{border-block-end:0;padding-block-end:0}.fd-form .fd-section[data-style=framed]{border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);padding:6px 18px 18px}.fd-form .fd-section[data-style=framed]>.fd-section-title{float:none;width:auto;max-width:100%;padding:0 6px;margin-inline-start:-6px;border:0}.fd-form .fd-field[data-labels]{grid-template-columns:minmax(0,1fr)}.fd-form .fd-field[data-labels]>*{grid-column:1 / -1}.fd-form .fd-field[data-labels=beside]{container-type:inline-size;grid-template-columns:minmax(0,var(--fd-label-width, 140px)) minmax(0,1fr);column-gap:14px}@container (min-width: 300px){.fd-form .fd-field[data-labels=beside]>.fd-label{grid-column:1;align-self:start;padding-block-start:max(0px,calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-field[data-labels=beside]>:not(.fd-label){grid-column:2}}.fd-form .fd-field[data-labels=hidden]>.fd-label{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-form .fd-field[data-labels=after]{grid-template-columns:auto minmax(0,1fr);column-gap:9px;align-items:start;--fd-tick-drop: max(0px, calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-field[data-labels=after]>:is(.fd-tick,:has(>.fd-tick)){grid-column:1;grid-row:1;display:flex;margin-block-start:calc(var(--fd-tick-drop) + (1.45em - 17px) / 2)}.fd-form .fd-field[data-labels=after] .fd-tick{width:17px;height:17px}.fd-form .fd-field[data-labels=after]>:not(.fd-tick,:has(>.fd-tick)){grid-column:2}.fd-form .fd-field[data-labels=after]>.fd-label{grid-row:1;margin-block-start:var(--fd-tick-drop);font-weight:inherit;line-height:1.45;cursor:pointer}.fd-form .fd-field[data-labels=beside]:focus-within,.fd-grid>.fd-section[data-place=shared]:focus-within{z-index:3}:is(.fd-grid,.fd-sections)>.fd-button{justify-self:start}.fd-form .fd-text-note{background:color-mix(in srgb,var(--fd-text) 6%,transparent);color:var(--fd-text);border-radius:var(--fd-control-radius, 6px);padding:10px 12px}:is(.fd-form,.fd-form-dialog)[data-font=serif]{--fd-font: "Source Serif 4", Georgia, serif}:is(.fd-form,.fd-form-dialog)[data-font=rounded]{--fd-font: Nunito, "Varela Round", system-ui}:is(.fd-form,.fd-form-dialog)[data-density=compact]{--fd-gap-y: 10px;--fd-gap-x: 16px;--fd-control-height: 30px;--fd-gap-block: 16px;--fd-group-pad: 14px 16px}:is(.fd-form,.fd-form-dialog)[data-density=comfortable]{--fd-gap-y: 16px;--fd-gap-x: 20px;--fd-control-height: 36px;--fd-gap-block: 22px;--fd-group-pad: 18px 22px}:is(.fd-form,.fd-form-dialog)[data-density=roomy]{--fd-gap-y: 22px;--fd-gap-x: 28px;--fd-control-height: 42px;--fd-gap-block: 30px;--fd-group-pad: 24px 30px}:is(.fd-form,.fd-form-dialog)[data-corners=square]{--fd-radius: 0px;--fd-control-radius: 0px}:is(.fd-form,.fd-form-dialog)[data-corners=soft]{--fd-radius: 10px;--fd-control-radius: 6px}:is(.fd-form,.fd-form-dialog)[data-corners=round]{--fd-radius: 16px;--fd-control-radius: 12px}.fd-form[data-scheme]{color-scheme:light;background:var(--fd-page);color:var(--fd-text);border-radius:var(--fd-radius);--fd-ground: var(--fd-page)}.fd-form[data-scheme]>.fd-content:not(:has(>.fd-sheet-page)){padding:20px}.fd-form-dialog-body>.fd-form[data-scheme]{background:none;border-radius:0}.fd-form-dialog-body>.fd-form[data-scheme]>.fd-content:not(:has(>.fd-sheet-page)){padding:0}:is(.fd-form,.fd-form-dialog)[data-scheme=dark]{color-scheme:dark;--fd-text: #e8eaed;--fd-muted: #a3a9b2;--fd-page: #16191e;--fd-surface: #1f2329;--fd-border: #3a4048;--fd-border-strong: #59616c;--fd-accent: #5aa2ff;--fd-accent-text: #0b1220;--fd-accent-soft: rgba(90, 162, 255, .16);--fd-focus: #5aa2ff;--fd-error: #ff8a7a;--fd-error-soft: rgba(255, 138, 122, .13);--fd-success: #6fd08e;--fd-success-soft: rgba(111, 208, 142, .14);--fd-warning: #f2b55c;--fd-warning-soft: rgba(242, 181, 92, .13);--fd-info: #7db7ff;--fd-info-soft: rgba(90, 162, 255, .14);--fd-edge: #59616c}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto]{color-scheme:dark;--fd-text: #e8eaed;--fd-muted: #a3a9b2;--fd-page: #16191e;--fd-surface: #1f2329;--fd-border: #3a4048;--fd-border-strong: #59616c;--fd-accent: #5aa2ff;--fd-accent-text: #0b1220;--fd-accent-soft: rgba(90, 162, 255, .16);--fd-focus: #5aa2ff;--fd-error: #ff8a7a;--fd-error-soft: rgba(255, 138, 122, .13);--fd-success: #6fd08e;--fd-success-soft: rgba(111, 208, 142, .14);--fd-warning: #f2b55c;--fd-warning-soft: rgba(242, 181, 92, .13);--fd-info: #7db7ff;--fd-info-soft: rgba(90, 162, 255, .14);--fd-edge: #59616c}}:is(.fd-form,.fd-form-dialog)[data-accent]{--fd-accent: var(--fd-look-accent);--fd-accent-text: var(--fd-look-accent-text);--fd-focus: var(--fd-look-accent);--fd-accent-soft: color-mix(in srgb, var(--fd-accent) 12%, var(--fd-surface));--fd-accent-hover: color-mix(in srgb, var(--fd-accent) 84%, var(--fd-text))}:is(.fd-form,.fd-form-dialog)[data-scheme=dark][data-accent]{--fd-accent: var(--fd-look-accent-dark);--fd-accent-text: var(--fd-look-accent-dark-text);--fd-focus: var(--fd-look-accent-dark)}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto][data-accent]{--fd-accent: var(--fd-look-accent-dark);--fd-accent-text: var(--fd-look-accent-dark-text);--fd-focus: var(--fd-look-accent-dark)}}:is(.fd-form,.fd-form-dialog)[data-fd-skin=outlined][data-accent]{--fd-focus-ring: 0 0 0 2px color-mix(in srgb, var(--fd-accent) 22%, transparent)}:is(.fd-form,.fd-form-dialog)[data-accent] .fd-button-primary:hover{filter:none;background:var(--fd-accent-hover);border-color:var(--fd-accent-hover)}.fd-form[data-accent] .fd-page-head{border-block-end:3px solid var(--fd-accent);padding-block-end:14px}';var kc={medium:760,narrow:520},Sc='.fd-form,.fd-theme:is([data-fd-skin],:not(.fd-form *)){--fd-font: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Arabic", sans-serif;--fd-text: #212529;--fd-muted: #636976;--fd-page: #f2f3f5;--fd-surface: #ffffff;--fd-border: #cfd4da;--fd-border-strong: #9aa3ad;--fd-accent: #002855;--fd-accent-text: #ffffff;--fd-accent-soft: #e6ebf2;--fd-focus: #002855;--fd-focus-ring: none;--fd-error: #c62828;--fd-error-soft: #fdecea;--fd-success: #2e7d32;--fd-success-soft: #e8f5e9;--fd-warning: #8a5300;--fd-warning-soft: #fff4e0;--fd-info: #0b5cad;--fd-info-soft: #e7f0fb;--fd-radius: 0px;--fd-control-radius: 0px;--fd-pad-y: 3px;--fd-pad-x: 4px;--fd-input-border: 0 0 1px 0;--fd-label-weight: 600;--fd-gap-x: 32px;--fd-gap-y: 14px;container-type:inline-size;font-family:var(--fd-font);font-size:14px;line-height:1.45;color:var(--fd-text);-webkit-text-size-adjust:100%}.fd-form[data-fd-skin=outlined],.fd-theme[data-fd-skin=outlined]{--fd-text: rgba(0, 0, 0, .88);--fd-muted: rgba(0, 0, 0, .55);--fd-page: #f5f5f5;--fd-border: #d9d9d9;--fd-border-strong: #bfbfbf;--fd-accent: #1365d9;--fd-accent-soft: #e6f4ff;--fd-focus: #1365d9;--fd-focus-ring: 0 0 0 2px rgba(5, 145, 255, .12);--fd-error: #c63c3d;--fd-error-soft: #fff2f0;--fd-radius: 8px;--fd-control-radius: 6px;--fd-pad-y: 4px;--fd-pad-x: 11px;--fd-input-border: 1px;--fd-label-weight: 400;--fd-gap-x: 24px;--fd-gap-y: 18px}.fd-form *,.fd-form *:before,.fd-form *:after{box-sizing:border-box}.fd-form [hidden]{display:none!important}.fd-page-head{display:grid;gap:4px;margin-block-end:20px}.fd-page-title{font-size:22px;font-weight:650;margin:0;line-height:1.25}.fd-page-description{color:var(--fd-muted);margin:0}.fd-form[data-max-width=narrow]{--fd-page-max: 640px}.fd-form[data-max-width=medium]{--fd-page-max: 900px}.fd-form[data-max-width=wide]{--fd-page-max: 1180px}.fd-form[data-max-width=full]{--fd-page-max: none}.fd-form[data-max-width]>.fd-content:not(:has(>.fd-sheet-page)){max-width:var(--fd-page-max);margin-inline:auto}.fd-actions.fd-actions-top{margin-block-start:0;padding-block-end:14px;margin-block-end:18px;border-block-end:1px solid var(--fd-border)}.fd-icon{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}.fd-section-title .fd-icon,.fd-tab .fd-icon,.fd-button .fd-icon,.fd-step-title .fd-icon{margin-inline-end:.4em}.fd-section-title .fd-icon{color:var(--fd-muted)}.fd-grid{--fd-cols: var(--fd-columns, 1);--fd-span: 1;display:grid;grid-template-columns:repeat(var(--fd-cols),minmax(0,1fr));gap:var(--fd-gap-y) var(--fd-gap-x);align-items:start}.fd-grid>*{grid-column:span min(var(--fd-span, 1),var(--fd-cols))}.fd-grid[data-twelfths]{column-gap:min(var(--fd-gap-x),100% / 24)}.fd-field{display:grid;gap:4px;min-width:0}.fd-label{font-weight:var(--fd-label-weight);color:var(--fd-text)}.fd-valid-mark{color:var(--fd-success);width:1em;height:1em;margin-inline-start:6px;vertical-align:-.15em;stroke-width:2.4}.fd-field.fd-required>.fd-label:after{content:" *";color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:after{content:""}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:before{content:"* ";color:var(--fd-error)}.fd-help{color:var(--fd-muted);font-size:12.5px}.fd-help-tip-wrap{position:relative;display:inline-flex;vertical-align:.05em;margin-inline-start:6px}.fd-help-tip{all:unset;box-sizing:border-box;display:inline-grid;place-items:center;width:16px;height:16px;border:1px solid var(--fd-border);border-radius:50%;color:var(--fd-muted);font-size:11px;font-weight:600;line-height:1;cursor:help}.fd-help-tip:hover,.fd-help-tip[aria-expanded=true]{color:var(--fd-accent);border-color:var(--fd-accent)}.fd-help-tip:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-help-bubble{position:absolute;inset-block-start:calc(100% + 6px);inset-inline-start:-8px;z-index:30;width:max-content;max-width:min(280px,70vw);padding:6px 9px;border-radius:6px;background:var(--fd-text);color:var(--fd-surface);font-size:12.5px;font-weight:400;line-height:1.4;white-space:normal;box-shadow:0 6px 18px #0000002e}.fd-page-title,.fd-page-description,.fd-section-description,.fd-label,.fd-help,.fd-text-heading,.fd-text-paragraph,.fd-text-note,.fd-choice>span{unicode-bidi:plaintext;text-align:match-parent;text-align:-webkit-match-parent}.fd-error{color:var(--fd-error);font-size:12.5px}.fd-warning{color:var(--fd-warning);background:var(--fd-warning-soft);font-size:12.5px;padding:3px 8px;border-radius:var(--fd-control-radius);justify-self:start}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels])){grid-template-columns:var(--fd-label-width, 11em) minmax(0,1fr);column-gap:12px;align-items:baseline}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>.fd-label{grid-column:1}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]>*{grid-column:1!important}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>:not(.fd-label){grid-column:2}.fd-form[data-fd-skin=underline] .fd-section[data-row=skin]{--fd-row-label: var(--fd-label-width, 11em);--fd-row-gap: 12px;--fd-row-place: absolute;--fd-row-drop: max(0px, calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-section[data-row=beside]{--fd-row-label: var(--fd-label-width, 140px);--fd-row-gap: 14px;--fd-row-place: absolute;--fd-row-drop: max(0px, calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-section[data-row]{padding-inline-start:calc(var(--fd-row-label, 0px) + var(--fd-row-gap, 0px))}.fd-form .fd-section[data-row]>.fd-grid>.fd-field:first-child{grid-template-columns:minmax(0,1fr);position:relative}.fd-form .fd-section[data-row]>.fd-grid>.fd-field:first-child>:not(.fd-label){grid-column:1}.fd-form .fd-section[data-row]>.fd-grid>.fd-field:first-child>.fd-label{position:var(--fd-row-place, static);inset-inline-start:calc(-1 * (var(--fd-row-label, 0px) + var(--fd-row-gap, 0px)));inset-block-start:0;width:var(--fd-row-label, auto);padding-block-start:var(--fd-row-drop, 0px)}@container (max-width: 760px){.fd-form[data-fd-skin=underline] .fd-grid{--fd-cols: 1}.fd-form .fd-grid[data-columns-medium]{--fd-cols: var(--fd-columns-medium)}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field:where(:not([data-labels])){grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field:where(:not([data-labels]))>*{grid-column:1!important}}@container (max-width: 520px){.fd-grid{--fd-cols: 1}.fd-form .fd-section.fd-section[data-row]{--fd-row-label: auto;--fd-row-gap: 0px;--fd-row-place: static;--fd-row-drop: 0px}.fd-form .fd-section[data-row]{padding-inline-start:0}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels])){grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>*{grid-column:1!important}.fd-form .fd-grid[data-columns-medium],.fd-form .fd-grid[data-columns-narrow]{--fd-cols: var(--fd-columns-narrow, 1)}.fd-form .fd-file-viewer>:first-child{padding-inline-end:16px}.fd-form .fd-file-viewer h2{flex-basis:100%;margin-inline-end:36px}}.fd-input{width:100%;min-width:0;font:inherit;color:inherit;background:var(--fd-surface);border:solid var(--fd-border);border-width:var(--fd-input-border);border-radius:var(--fd-control-radius);padding:var(--fd-pad-y) var(--fd-pad-x);min-height:var(--fd-control-height, 30px);transition:border-color .15s ease,box-shadow .15s ease}.fd-input::placeholder{color:var(--fd-muted);opacity:.8}.fd-input:hover{border-color:var(--fd-border-strong)}.fd-input:focus{outline:none;border-color:var(--fd-focus);box-shadow:var(--fd-focus-ring)}.fd-form[data-fd-skin=underline] .fd-input{background:transparent}.fd-form[data-fd-skin=underline] .fd-input:focus{box-shadow:0 1px 0 0 var(--fd-focus)}.fd-form[data-fd-skin=underline] .fd-field.fd-required .fd-input{border-color:var(--fd-accent)}.fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0}.fd-form[data-fd-skin=outlined] .fd-input[readonly]{background:#0000000a;border-color:var(--fd-border);padding-inline:var(--fd-pad-x);color:var(--fd-muted)}.fd-form[data-readonly] .fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text)}.fd-form[data-readonly] .fd-input::placeholder{color:transparent}.fd-input[readonly]::placeholder,.fd-form .fd-input.fd-blank[readonly]{color:transparent}.fd-blank[readonly]::-webkit-calendar-picker-indicator{display:none}.fd-form[data-readonly] select.fd-input:disabled{appearance:none;background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text);opacity:1}.fd-input[aria-invalid=true]{border-color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-input[aria-invalid=true]:focus{box-shadow:0 0 0 2px #ff26050f}.fd-textarea{resize:vertical;min-height:64px}.fd-select{appearance:auto}.fd-number{display:flex;align-items:baseline;gap:6px}.fd-number-input{font-variant-numeric:tabular-nums}.fd-currency{color:var(--fd-muted);font-size:12.5px;font-weight:600}.fd-currency-after>.fd-number-input{text-align:end}.fd-currency-picked{align-items:center}.fd-currency-picked>:not(.fd-number-input){flex:0 0 104px;min-width:0}.fd-currency-picked>.fd-number-input{flex:1 1 auto;min-width:0}.fd-pending{color:var(--fd-muted);font-style:italic}.fd-pending:empty:before{content:"\u2014"}.fd-checkbox,.fd-choice input{width:16px;height:16px;accent-color:var(--fd-accent);margin:0}.fd-switch{appearance:none;width:34px;height:20px;margin:0;border-radius:999px;position:relative;background:var(--fd-border-strong);cursor:pointer;transition:background .2s ease}.fd-switch:after{content:"";position:absolute;inset-block-start:2px;inset-inline-start:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s ease;box-shadow:0 1px 2px #00000040}.fd-switch:checked{background:var(--fd-accent)}.fd-switch:checked:after{transform:translate(14px)}[dir=rtl] .fd-switch:checked:after{transform:translate(-14px)}.fd-choices{display:flex;flex-wrap:wrap;gap:6px 18px}.fd-choice{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.fd-choice-other{cursor:default;flex:1 1 260px;max-width:420px;min-width:0}.fd-choice-other-pick{display:inline-flex;align-items:center;gap:8px;cursor:pointer;flex:none}.fd-choice-other .fd-other-input{flex:1;min-width:6em;width:auto;min-height:30px;padding-block:2px}.fd-scale-box{display:inline-grid;gap:4px;max-width:100%}.fd-scale-ends{display:flex;justify-content:space-between;gap:16px;font-size:12.5px;color:var(--fd-muted)}.fd-choices-box{display:grid;gap:6px;min-width:0}.fd-choice-clear{justify-self:end;font:inherit;font-size:13px;color:var(--fd-muted);background:none;border:0;padding:2px 4px;border-radius:4px;cursor:pointer}.fd-choice-clear:hover{color:var(--fd-text);text-decoration:underline;text-underline-offset:3px}.fd-lines-table .fd-choice-clear,.fd-grid-editor .fd-choice-clear{display:none}.fd-points{display:flex;flex-wrap:wrap;gap:6px}.fd-points button{font:inherit;cursor:pointer;border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-text);border-radius:var(--fd-control-radius);min-width:34px;height:34px;padding:0 8px}.fd-points button.fd-on{background:var(--fd-accent);color:var(--fd-accent-text);border-color:var(--fd-accent)}.fd-rating button{border:none;background:none;font-size:24px;color:var(--fd-border-strong);padding:0 2px;min-width:0}.fd-rating button.fd-on{background:none;color:#f5a623}.fd-points button:disabled,.fd-choice input:disabled{cursor:default}.fd-form :focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-form .fd-input:focus-visible{outline:none}.fd-combo{position:relative;display:flex;align-items:center;min-width:0}.fd-combo-input{padding-inline-end:30px}.fd-combo-clear{position:absolute;inset-inline-end:3px;border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:0 4px;border-radius:4px;min-width:24px;min-height:24px;display:inline-grid;place-items:center}.fd-combo-clear:hover{color:var(--fd-text);background:var(--fd-page)}.fd-combo:has(>.fd-combo-open:not([hidden])) .fd-combo-input{padding-inline-end:56px}.fd-combo-open{position:absolute;inset-inline-end:29px;border:none;background:none;cursor:pointer;color:var(--fd-accent);font-size:14px;line-height:1;padding:0 4px;border-radius:4px;min-width:24px;min-height:24px;display:inline-grid;place-items:center}.fd-combo-open:hover{background:var(--fd-page)}.fd-listbox{position:absolute;inset-inline:0;inset-block-start:calc(100% + 2px);z-index:20;margin:0;padding:4px 0;list-style:none;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),4px);box-shadow:0 8px 24px #0f14191f;max-height:240px;overflow-y:auto}.fd-option{padding:6px 12px;cursor:pointer}.fd-option:hover,.fd-option.fd-active{background:var(--fd-accent-soft)}.fd-option-create{color:var(--fd-accent);border-block-start:1px solid var(--fd-border)}.fd-empty{padding:6px 12px;color:var(--fd-muted);font-style:italic}.fd-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0}.fd-chips{display:contents;list-style:none;margin:0;padding:0}.fd-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 4px 1px 10px;border-radius:999px;background:var(--fd-accent-soft);color:var(--fd-text);font-size:13px;line-height:22px}button.fd-chip-label{border:none;padding:0;background:none;font:inherit;color:inherit;cursor:pointer}button.fd-chip-label:hover{text-decoration:underline}.fd-chip-remove{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:15px;line-height:1;padding:0 4px;border-radius:999px}.fd-chip-remove:hover{color:var(--fd-error)}.fd-tags .fd-combo{flex:1 1 140px}.fd-reference{display:grid;grid-template-columns:minmax(7em,34%) minmax(0,1fr);gap:8px}.fd-lines{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0}.fd-lines-scroll{overflow-x:auto;min-width:0;position:relative}.fd-lines-table{width:100%;border-collapse:collapse;font-size:13.5px}.fd-lines-table th{text-align:start;font-weight:600;color:var(--fd-muted);font-size:12.5px;padding:6px 8px;border-block-end:1px solid var(--fd-border);white-space:nowrap}.fd-lines-table td{padding:4px 8px;border-block-end:1px solid var(--fd-border);vertical-align:top;min-width:7em}.fd-lines-table td.fd-lines-tools,.fd-lines-table th.fd-lines-tools{width:32px;min-width:32px;padding-inline:0;text-align:center}.fd-lines-table .fd-input{min-height:28px}.fd-lines-table td>.fd-checkbox,.fd-lines-table td>.fd-switch{margin-block-start:6px}.fd-lines-table .fd-lines-grip{width:1px;min-width:0;padding-inline:6px 2px}.fd-line-grip{display:block;margin-block-start:7px;cursor:grab}.fd-line-delete{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:4px 6px;border-radius:4px;min-width:24px;min-height:24px}.fd-line-delete:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-lines-table [data-tone=info]{--fd-line-tone: var(--fd-info);--fd-tone: var(--fd-info);--fd-tone-soft: var(--fd-info-soft)}.fd-lines-table [data-tone=success]{--fd-line-tone: var(--fd-success);--fd-tone: var(--fd-success);--fd-tone-soft: var(--fd-success-soft)}.fd-lines-table [data-tone=warning]{--fd-line-tone: var(--fd-warning);--fd-tone: var(--fd-warning);--fd-tone-soft: var(--fd-warning-soft)}.fd-lines-table [data-tone=danger]{--fd-line-tone: var(--fd-error);--fd-tone: var(--fd-error);--fd-tone-soft: var(--fd-error-soft)}.fd-lines-table [data-tone=muted]{--fd-line-tone: var(--fd-muted);--fd-tone: var(--fd-muted);--fd-tone-soft: color-mix(in srgb, var(--fd-muted) 14%, transparent)}.fd-lines-table [data-tone] :is(input,select,textarea,.fd-input,.fd-display){color:var(--fd-line-tone);-webkit-text-fill-color:var(--fd-line-tone)}.fd-lines-table :is(.fd-line-bold,.fd-cell-bold) :is(input,select,textarea,.fd-input,.fd-display){font-weight:600}.fd-lines-table td.fd-lines-tools{white-space:nowrap}.fd-lines-table:has(.fd-line-button) td.fd-lines-tools{text-align:end;padding-inline-end:4px}.fd-line-button{padding:2px 6px;font-size:12.5px;vertical-align:middle}.fd-line-button-icon{padding:4px;color:var(--fd-muted)}.fd-line-button-icon:hover{color:var(--fd-accent)}.fd-line-button svg{width:15px;height:15px;display:block}.fd-lines-totals td{padding:8px;font-weight:600;border-block-start:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-lines-adds{display:flex;flex-wrap:wrap;gap:4px 16px;justify-self:start}.fd-lines-control{display:inline-flex;align-items:center;gap:6px}.fd-lines-control svg,.fd-lines-chosen-button svg{width:15px;height:15px}.fd-line-lead{display:inline-flex;align-items:center;gap:4px;margin-block-start:6px}.fd-line-lead .fd-line-grip{margin-block-start:0}.fd-lines-table th.fd-lines-grip:has(.fd-line-pick-all){padding-block:4px}.fd-lines-chosen{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:6px 10px;border-radius:var(--fd-radius);background:var(--fd-accent-soft)}.fd-lines-chosen[hidden]{display:none}.fd-lines-chosen-count{font-weight:600;font-size:13px;margin-inline-end:6px}.fd-lines-chosen-button{display:inline-flex;align-items:center;gap:6px;padding-block:3px}.fd-lines-table .fd-line-open{border:none;background:none;cursor:pointer;color:var(--fd-accent);font-size:14px;line-height:1;padding:4px 6px;border-radius:4px}.fd-lines-table .fd-line-open:hover{background:var(--fd-accent-soft)}.fd-links-table td{vertical-align:middle}.fd-links-table .fd-value-text{padding-block:4px}.fd-lines[data-fit=content] .fd-lines-table{width:auto;max-width:100%}.fd-lines[data-fit=content] .fd-lines-table td{min-width:0}.fd-lines[data-cards]{container:fd-lines / inline-size}@container fd-lines (max-width: 520px){.fd-lines[data-cards=narrow] .fd-lines-table,.fd-lines[data-cards=narrow] .fd-lines-table :is(tbody,tfoot){display:block}.fd-lines[data-cards=narrow] .fd-lines-table thead{display:none}.fd-lines[data-cards=narrow] .fd-lines-table tr{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;position:relative;padding:10px 12px;margin-block-end:8px;border:1px solid var(--fd-border);border-radius:var(--fd-radius);background:var(--fd-surface)}.fd-lines[data-cards=narrow] .fd-lines-table td{display:block;border:none;padding:0;min-width:0}.fd-lines[data-cards=narrow] .fd-lines-table td[data-label]:not([colspan]:not([colspan="1"])):before{content:attr(data-label);display:block;font-size:12px;font-weight:600;color:var(--fd-muted)}.fd-lines[data-cards=narrow] .fd-lines-table td.fd-lines-grip{position:absolute;inset-block-start:6px;inset-inline-start:6px;padding:0}.fd-lines[data-cards=narrow] .fd-lines-table td.fd-lines-grip .fd-line-grip{display:none}.fd-lines[data-cards=narrow] .fd-lines-table tr:has(.fd-line-pick){padding-inline-start:36px}.fd-lines[data-cards=narrow] .fd-lines-table td.fd-lines-tools{width:auto;text-align:end}.fd-lines[data-cards=narrow] .fd-lines-totals td:empty{display:none}}.fd-lines[data-cards=always] .fd-lines-table,.fd-lines[data-cards=always] .fd-lines-table :is(tbody,tfoot){display:block}.fd-lines[data-cards=always] .fd-lines-table thead{display:none}.fd-lines[data-cards=always] .fd-lines-table tr{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px 12px;position:relative;padding:10px 12px;margin-block-end:8px;border:1px solid var(--fd-border);border-radius:var(--fd-radius);background:var(--fd-surface)}.fd-lines[data-cards=always] .fd-lines-table td{display:block;border:none;padding:0;min-width:0}.fd-lines[data-cards=always] .fd-lines-table td[data-label]:not([colspan]:not([colspan="1"])):before{content:attr(data-label);display:block;font-size:12px;font-weight:600;color:var(--fd-muted)}.fd-lines[data-cards=always] .fd-lines-table td.fd-lines-grip,.fd-lines[data-cards=always] .fd-lines-table td.fd-lines-tools{grid-column:1 / -1;width:auto}.fd-lines[data-cards=always] .fd-lines-table td.fd-lines-tools{text-align:end}.fd-line-copy{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:15px;line-height:1;padding:4px 6px;border-radius:4px}.fd-line-copy:hover{color:var(--fd-accent);background:var(--fd-accent-soft)}.fd-line-section td{background:var(--fd-page)}.fd-line-section .fd-input{font-weight:600}.fd-line-note .fd-input{font-style:italic}.fd-cell-error{color:var(--fd-error);font-size:12px}.fd-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-file{display:grid;gap:8px;justify-items:start;padding:6px 0;border-radius:var(--fd-control-radius);min-width:0}.fd-file.fd-dragging{outline:2px dashed var(--fd-accent);outline-offset:4px}.fd-file-pick{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;cursor:pointer}.fd-file input:focus-visible+.fd-file-pick{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-files-list .fd-file-pick{justify-self:stretch;padding:10px 14px;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-file-pick:hover,.fd-dragging .fd-file-pick{border-color:var(--fd-accent)}.fd-files{list-style:none;margin:0;padding:0;display:grid;gap:6px;justify-self:stretch;min-width:0}.fd-files:empty{display:none}.fd-file-item{position:relative;display:flex;align-items:center;gap:2px;min-width:0}.fd-file-open{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:5px 8px;font:inherit;color:inherit;text-align:start;cursor:pointer;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-control-radius)}.fd-file-open:hover{border-color:var(--fd-accent)}.fd-file-thumb,.fd-file-icon{flex:none;width:36px;height:36px;border-radius:3px;object-fit:cover}.fd-file-icon{display:grid;place-items:end center;padding-block-end:4px;font-size:9px;font-weight:700;color:#fff;background:var(--fd-kind, #5b6573);clip-path:polygon(0 0,68% 0,100% 28%,100% 100%,0 100%)}.fd-file-icon[data-kind=pdf]{--fd-kind: #c62828}.fd-file-icon[data-kind=doc]{--fd-kind: #1f5fbf}.fd-file-icon[data-kind=sheet]{--fd-kind: #1d7a3e}.fd-file-icon[data-kind=zip]{--fd-kind: #8a5300}.fd-file-name{flex:1;display:flex;min-width:0;white-space:pre}.fd-file-name>span{overflow:hidden;text-overflow:ellipsis}.fd-file-size{color:var(--fd-muted);font-size:12.5px;font-variant-numeric:tabular-nums;unicode-bidi:plaintext}.fd-file-remove{flex:none;width:32px;height:32px;border:none;border-radius:999px;background:none;color:var(--fd-muted);font-size:20px;line-height:1;cursor:pointer}.fd-file-remove:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-file-confirm:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px}.fd-file-note:empty{display:none}.fd-file-note{color:var(--fd-warning)}.fd-file-bar{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;justify-self:stretch}.fd-file-views{display:flex;gap:2px;margin-inline-start:auto;padding:2px;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-file-views button{display:flex;align-items:center;gap:6px;min-height:28px;padding:2px 10px;font:inherit;font-size:13px;color:var(--fd-muted);cursor:pointer;border:none;border-radius:calc(var(--fd-control-radius) - 2px);background:none}.fd-file-views [aria-pressed=true]{color:var(--fd-text);background:var(--fd-surface);box-shadow:0 0 0 1px var(--fd-border)}.fd-files-thumbs{display:flex;flex-wrap:wrap;align-items:flex-start}.fd-files-thumbs>*{flex-basis:100%}:is(.fd-files-thumbs,.fd-files-cards)>.fd-files{display:contents}.fd-files-thumbs .fd-file-item,.fd-image-pick{flex:none;width:96px;height:96px}.fd-files-thumbs .fd-file-open{height:100%;padding:6px;flex-direction:column;justify-content:center;gap:4px;overflow:hidden;font-size:12px}:is(.fd-files-thumbs,.fd-files-cards) .fd-file-thumb{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit}.fd-files-thumbs .fd-file-name{flex:none;max-width:100%}.fd-files-thumbs .fd-file-size,.fd-files-thumbs .fd-file-thumb~*{display:none}:is(.fd-files-thumbs,.fd-files-cards) .fd-file-remove{position:absolute;inset-block-start:4px;inset-inline-end:4px;width:26px;height:26px;font-size:17px;background:#0f14199e;color:#fff;opacity:0}.fd-file-item:is(:hover,:focus-within) .fd-file-remove{opacity:1}@media(hover:none){.fd-file-item .fd-file-remove{opacity:1}}.fd-image-pick{display:grid;place-content:center;justify-items:center;gap:2px;padding:6px;text-align:center;font-size:12px;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-files-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr))}.fd-files-cards>*{grid-column:1 / -1}.fd-files-cards>.fd-image-pick{grid-column:auto;justify-self:stretch;width:auto;height:auto;min-height:96px}.fd-files-cards .fd-file-item{justify-self:stretch;align-items:stretch}.fd-files-cards .fd-file-open{flex-direction:column;align-items:stretch;gap:2px;padding:0 0 8px;overflow:hidden}.fd-file-picture{position:relative;display:grid;place-items:center;aspect-ratio:4 / 3;margin-block-end:6px;background:var(--fd-page);border-block-end:1px solid var(--fd-border)}.fd-file-picture .fd-file-icon{width:44px;height:56px;padding-block-end:8px;font-size:12px}.fd-files-cards :is(.fd-file-name,.fd-file-size){padding-inline:8px}.fd-files-cards .fd-file-name{flex:none;flex-wrap:wrap;font-size:13px;line-height:1.35}.fd-files-cards .fd-file-name>span{max-width:100%}.fd-image-pick .fd-button{border:none;background:none;color:var(--fd-accent);padding:0;min-height:0;font-size:13px}.fd-file-viewer{max-width:1000px;height:min(88vh,100%);background:var(--fd-surface)}.fd-file-viewer>:first-child{position:relative;flex-wrap:wrap;justify-content:start;gap:6px 10px;padding-block:8px;padding-inline-end:52px}.fd-file-viewer .fd-dialog-close{position:absolute;inset-block-start:10px;inset-inline-end:10px}.fd-file-viewer h2{flex:1 1 10em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-file-step{font-size:18px;line-height:1;min-width:34px}.fd-file-viewer a{text-decoration:none}.fd-file-viewer-body{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:auto;background:var(--fd-page)}.fd-file-viewer-body img{max-width:100%;max-height:100%;object-fit:contain}.fd-file-viewer-body :is(iframe,pre){flex:1;align-self:stretch;margin:0;border:0;background:var(--fd-surface)}.fd-file-viewer-body pre{padding:14px 16px;overflow:auto;font:13px/1.5 monospace;white-space:pre-wrap;overflow-wrap:anywhere}.fd-file-none{display:grid;justify-items:center;gap:4px;padding:24px;text-align:center;color:var(--fd-muted)}.fd-file-none strong{color:var(--fd-text);overflow-wrap:anywhere}.fd-file-none .fd-file-icon{width:64px;height:64px;font-size:14px;padding-block-end:8px}.fd-richtext{min-height:96px;line-height:1.5;overflow-wrap:anywhere}.fd-richtext-box{display:grid;gap:0;min-width:0}.fd-richtext-box>.fd-richtext{border-start-start-radius:0;border-start-end-radius:0}.fd-richtext-bar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:4px;min-width:0;border:1px solid var(--fd-border);border-block-end:none;border-start-start-radius:var(--fd-control-radius);border-start-end-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-richtext-style{font:inherit;font-size:12.5px;padding:3px 6px;margin-inline-end:4px;border:1px solid var(--fd-border);border-radius:4px;background:var(--fd-surface);color:var(--fd-text)}.fd-richtext-tool{display:grid;place-items:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:none;cursor:pointer;color:var(--fd-text);font:inherit;font-size:14px}.fd-richtext-tool:hover{background:var(--fd-surface)}.fd-richtext-tool[aria-pressed=true]{background:var(--fd-accent-soft);color:var(--fd-accent)}.fd-richtext-tool svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round}.fd-richtext-tool svg circle{fill:currentColor;stroke:none}.fd-link-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px;border:1px solid var(--fd-border);border-block-end:none;background:var(--fd-surface)}.fd-link-row>.fd-input{flex:1 1 200px;min-width:0}.fd-richtext.fd-blank[contenteditable=true]:before{content:attr(data-placeholder);position:absolute;color:var(--fd-muted);opacity:.8;pointer-events:none}.fd-richtext[contenteditable=false]{background:transparent;border-color:transparent;padding-inline:0;min-height:0}.fd-richtext p{margin:0 0 6px}.fd-code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12.5px;min-height:96px}.fd-sections{display:grid;gap:var(--fd-gap-block, 24px)}.fd-section{border:0;margin:0;padding:0;min-width:0;display:grid;gap:14px}.fd-section-title{font-size:15px;font-weight:650;padding:0;margin:0;float:inline-start;width:100%}.fd-section-title+*{clear:both}.fd-form[data-fd-skin=underline] .fd-section-title{text-transform:uppercase;letter-spacing:.05em;font-size:12.5px;color:var(--fd-muted);border-block-end:1px solid var(--fd-border);padding-block-end:6px;width:100%}.fd-section-description{color:var(--fd-muted);margin:0}.fd-section-toggle{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;display:inline-flex;align-items:center;gap:8px;text-align:start}.fd-section-toggle:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px;border-radius:2px}.fd-section-chevron{width:.5em;height:.5em;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-block-start:-.2em;transition:transform .15s ease;flex:none}.fd-section-folded .fd-section-chevron{transform:rotate(-45deg);margin-block-start:0}[dir=rtl] .fd-section-folded .fd-section-chevron{transform:rotate(135deg)}.fd-form[data-fd-skin=outlined] :is(.fd-sections>.fd-section:not([data-style]),.fd-section[data-style=card][data-on-page]){background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);padding:var(--fd-group-pad, 20px 24px)}.fd-form-part-note{margin:0;color:var(--fd-muted);font-size:13px}.fd-form-part-problem{padding:10px 12px;border:1px dashed var(--fd-border);border-radius:var(--fd-radius)}.fd-tablist{display:flex;gap:2px;border-block-end:1px solid var(--fd-border);overflow-x:auto;scrollbar-width:none}.fd-tablist::-webkit-scrollbar{display:none}.fd-tabbar{position:relative;min-width:0;--fd-fade: to right}[dir=rtl] .fd-tabbar{--fd-fade: to left}.fd-tabbar[data-more=start]>.fd-tablist{mask-image:linear-gradient(var(--fd-fade),transparent 28px,#000 64px)}.fd-tabbar[data-more=end]>.fd-tablist{mask-image:linear-gradient(var(--fd-fade),#000 calc(100% - 64px),transparent calc(100% - 28px))}.fd-tabbar[data-more="start end"]>.fd-tablist{mask-image:linear-gradient(var(--fd-fade),transparent 28px,#000 64px,#000 calc(100% - 64px),transparent calc(100% - 28px))}.fd-tabs-scroll{position:absolute;inset-block:0 1px;z-index:1;width:28px;padding:0;border:none;background:none;cursor:pointer;color:var(--fd-muted);display:grid;place-items:center}.fd-tabs-scroll[hidden]{display:none}.fd-tabs-scroll:hover{color:var(--fd-accent)}.fd-tabs-scroll:before{content:"";width:7px;height:7px;border:solid currentColor;border-width:0 0 2px 2px}.fd-tabs-before{inset-inline-start:0}.fd-tabs-after{inset-inline-end:0}.fd-tabs-before:before{transform:translate(2px) rotate(45deg)}.fd-tabs-after:before{transform:translate(-2px) rotate(-135deg)}[dir=rtl] .fd-tabs-before:before{transform:translate(-2px) rotate(-135deg)}[dir=rtl] .fd-tabs-after:before{transform:translate(2px) rotate(45deg)}.fd-tab{font:inherit;background:none;border:none;cursor:pointer;padding:8px 14px;color:var(--fd-muted);border-block-end:2px solid transparent;margin-block-end:-1px;white-space:nowrap}.fd-tab[aria-selected=true]{color:var(--fd-accent);border-block-end-color:var(--fd-accent);font-weight:600}.fd-tab[data-problem]:after{content:"";display:inline-block;width:6px;height:6px;margin-inline-start:6px;border-radius:50%;background:var(--fd-error);vertical-align:.15em}.fd-tabpanel{padding-block:16px;display:grid;gap:16px}.fd-button{font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px;justify-content:center;min-height:var(--fd-control-height, 32px);padding:4px 14px;border-radius:var(--fd-control-radius);border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-text)}.fd-button:hover{border-color:var(--fd-accent);color:var(--fd-accent)}.fd-button-primary{background:var(--fd-accent);border-color:var(--fd-accent);color:var(--fd-accent-text)}.fd-button-primary:hover{color:var(--fd-accent-text);filter:brightness(1.12)}.fd-button-danger{color:var(--fd-error);border-color:var(--fd-error)}.fd-button-danger:hover{background:var(--fd-error);color:#fff}.fd-button-link{border-color:transparent;background:none;color:var(--fd-accent);padding-inline:4px}.fd-form[data-fd-skin=underline] .fd-button{border-radius:3px}.fd-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.fd-actions-end{justify-content:flex-end;margin-block-start:24px}.fd-sheet-page{background:var(--fd-page);padding:0 0 32px;min-width:0}.fd-header{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;background:var(--fd-surface);border-block-end:1px solid var(--fd-border);padding:8px 16px}.fd-statusbar{display:flex;list-style:none;margin:0;padding:0;overflow-x:auto}.fd-statusbar li{display:flex}.fd-statusbar li>*{font:inherit;font-size:13px;border:none;background:var(--fd-page);color:var(--fd-muted);padding:5px 18px 5px 22px;margin-inline-start:-6px;white-space:nowrap;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%,10px 50%)}.fd-statusbar li:first-child>*{margin-inline-start:0;padding-inline-start:14px;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%)}.fd-statusbar li>button{cursor:pointer}.fd-statusbar li>[aria-current=step]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}[dir=rtl] .fd-statusbar li>*{transform:scaleX(-1)}[dir=rtl] .fd-statusbar li>*>*{display:inline-block;transform:scaleX(-1)}.fd-sheet-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;max-width:var(--fd-page-max, 1180px);margin:16px auto 0;padding-inline:16px}.fd-sheet-layout{align-items:start}.fd-sheet-foot{margin:4px -28px -28px;padding:12px 28px;border-block-start:1px solid var(--fd-border);border-end-start-radius:inherit;border-end-end-radius:inherit}.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr) minmax(260px,360px)}@container (max-width: 1000px){.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr)}}.fd-form{container-name:fd-form}@container fd-form (max-width: 520px){.fd-form [data-hide-on~=narrow]{display:none!important}}@container fd-form (min-width: 521px) and (max-width: 760px){.fd-form [data-hide-on~=medium]{display:none!important}}@container fd-form (min-width: 761px){.fd-form [data-hide-on~=wide]{display:none!important}}.fd-card{position:relative;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);padding:24px 28px 28px;display:grid;gap:18px;min-width:0;container-type:inline-size}.fd-ribbon-frame{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}.fd-ribbon{position:absolute;inset-block-start:18px;inset-inline-end:-42px;transform:rotate(45deg);width:160px;text-align:center;font-size:12px;font-weight:700;padding:4px 0;color:#fff;background:#5f6670;text-transform:uppercase;letter-spacing:.06em;pointer-events:none}[dir=rtl] .fd-ribbon{transform:rotate(-45deg)}.fd-ribbon.fd-tone-danger{background:#c63c3d}.fd-ribbon.fd-tone-success{background:#2e7d32}.fd-ribbon.fd-tone-warning{background:#a14f00}.fd-ribbon.fd-tone-info{background:#1365d9}.fd-alert{padding:10px 14px;border-radius:var(--fd-control-radius);border:1px solid;font-size:13.5px;display:flex;align-items:flex-start;gap:10px}.fd-alert-message{flex:1 1 auto;min-width:0}.fd-alert-close{border:none;background:none;color:inherit;cursor:pointer;font:inherit;font-size:18px;line-height:1;padding:0 4px;border-radius:4px;opacity:.75}.fd-alert-close:hover{opacity:1}.fd-alert-close:focus-visible{outline:2px solid var(--fd-focus);opacity:1}.fd-alert.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-alert.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-alert.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-alert.fd-tone-info,.fd-alert:not([class*=fd-tone-]){background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-stats{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0;margin:-24px -28px 0;border-block-end:1px solid var(--fd-border)}.fd-stats:empty{display:none}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden])) .fd-stats{padding-inline-end:104px}.fd-stat{font:inherit;background:none;border:none;border-inline-start:1px solid var(--fd-border);cursor:pointer;padding:8px 18px;display:grid;justify-items:start;line-height:1.2;color:var(--fd-text);min-width:120px}.fd-stat:hover{background:var(--fd-page)}.fd-stat:has(>.fd-icon){grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:10px}.fd-stat>.fd-icon{width:22px;height:22px;color:var(--fd-muted)}.fd-stat-words{display:grid;justify-items:start}.fd-stat-value{font-weight:700;font-size:15px;color:var(--fd-accent);font-variant-numeric:tabular-nums}.fd-stat-label{font-size:12.5px;color:var(--fd-muted)}.fd-title-row{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.fd-title{display:grid;gap:4px;flex:1 1 auto;min-width:0}.fd-avatar{flex:none}.fd-avatar>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-form[data-fd-skin=underline] .fd-avatar{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-avatar>*{grid-column:1!important}.fd-avatar .fd-file{justify-items:center;gap:4px 8px;padding:0;justify-content:center}.fd-avatar :is(.fd-file-item,.fd-image-pick){width:88px;height:88px}.fd-avatar :is(.fd-image-pick .fd-help,.fd-file-limits){display:none}.fd-avatar .fd-button-link{flex-basis:auto;font-size:12.5px}.fd-title>.fd-field .fd-input{font-size:24px;font-weight:600;min-height:40px}.fd-form[data-fd-skin=underline] .fd-title>.fd-field{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-title>.fd-field>*{grid-column:1}.fd-title>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-above,.fd-title-below{display:flex;flex-wrap:wrap;align-items:center;gap:6px 24px}.fd-title-above{margin-block-end:4px}.fd-title-below{margin-block-start:6px}.fd-form .fd-title-above>.fd-field,.fd-form .fd-title-below>.fd-field{display:flex;align-items:center;gap:8px;grid-template-columns:none}.fd-form .fd-title-above>.fd-field>*,.fd-form .fd-title-below>.fd-field>*{grid-column:auto!important}.fd-title-above .fd-label:empty,.fd-title-below .fd-label:empty{display:none}.fd-title-above>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-statusbar{display:flex}.fd-badges{display:flex;flex-wrap:wrap;gap:6px}.fd-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;line-height:1;padding:5px 10px;border-radius:999px;border:1px solid var(--fd-border);background:var(--fd-page);color:var(--fd-muted)}.fd-badge .fd-icon{width:13px;height:13px}.fd-badge.fd-tone-info{background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-badge.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-badge.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-badge.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-side{display:grid;gap:12px;align-content:start;min-width:0}.fd-wizard{display:grid;gap:20px}.fd-progress{display:grid;gap:8px}.fd-progress-text{color:var(--fd-muted);font-size:13px}.fd-value-text{display:block;padding-block:6px;font-variant-numeric:tabular-nums}.fd-field[data-tone=info]{--fd-tone: var(--fd-info);--fd-tone-soft: var(--fd-info-soft)}.fd-field[data-tone=success]{--fd-tone: var(--fd-success);--fd-tone-soft: var(--fd-success-soft)}.fd-field[data-tone=warning]{--fd-tone: var(--fd-warning);--fd-tone-soft: var(--fd-warning-soft)}.fd-field[data-tone=danger]{--fd-tone: var(--fd-error);--fd-tone-soft: var(--fd-error-soft)}.fd-field[data-tone=muted]{--fd-tone: var(--fd-muted);--fd-tone-soft: color-mix(in srgb, var(--fd-muted) 14%, transparent)}.fd-field[data-tone] :is(input,select,textarea,.fd-value-text,.fd-pending){color:var(--fd-tone);-webkit-text-fill-color:var(--fd-tone)}.fd-field.fd-value-bold :is(input,select,textarea,.fd-value-text,.fd-pending,.fd-value-badge){font-weight:700}.fd-value-badge{justify-self:start;align-self:center;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 10px;border-radius:999px;font-size:12.5px;line-height:18px;font-weight:500;color:var(--fd-tone, var(--fd-muted));background:var(--fd-tone-soft, color-mix(in srgb, var(--fd-tone, var(--fd-muted)) 14%, transparent))}.fd-value-badge[hidden]{display:none}.fd-value-badge[data-tone=info]{--fd-tone: var(--fd-info);--fd-tone-soft: var(--fd-info-soft)}.fd-value-badge[data-tone=success]{--fd-tone: var(--fd-success);--fd-tone-soft: var(--fd-success-soft)}.fd-value-badge[data-tone=warning]{--fd-tone: var(--fd-warning);--fd-tone-soft: var(--fd-warning-soft)}.fd-value-badge[data-tone=danger]{--fd-tone: var(--fd-error);--fd-tone-soft: var(--fd-error-soft)}.fd-value-badge[data-tone=muted]{--fd-tone: var(--fd-muted);--fd-tone-soft: color-mix(in srgb, var(--fd-muted) 14%, transparent)}.fd-date-pick{position:relative;display:flex;align-items:center;gap:6px;min-width:0}.fd-date-pick>.fd-input{flex:1 1 auto;min-width:0}.fd-calendar-button{flex:0 0 auto;display:grid;place-items:center;width:32px;height:32px;padding:0;cursor:pointer;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-surface);color:var(--fd-muted)}.fd-calendar-button:hover,.fd-calendar-button[aria-expanded=true]{color:var(--fd-text);background:var(--fd-page)}.fd-calendar-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.fd-calendar{position:absolute;inset-block-start:calc(100% + 4px);inset-inline-end:0;z-index:30;padding:8px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);box-shadow:0 8px 24px #0f141924}.fd-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 6px}.fd-calendar-head button{border:none;background:none;cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;border-radius:4px;color:var(--fd-text)}.fd-calendar-head button:hover{background:var(--fd-page)}.fd-calendar-title{font-weight:600}.fd-calendar-grid{border-collapse:collapse;font-variant-numeric:tabular-nums}.fd-calendar-grid th{font-size:11.5px;font-weight:600;color:var(--fd-muted);padding:4px 0;width:34px;text-align:center}.fd-calendar-grid .fd-week{color:var(--fd-accent);font-weight:600;border-inline-end:1px solid var(--fd-border)}.fd-calendar-grid td{padding:1px}.fd-calendar-grid td button{width:32px;height:30px;border:none;border-radius:4px;background:none;cursor:pointer;color:var(--fd-text);font:inherit;font-size:13px}.fd-calendar-grid td button:hover{background:var(--fd-accent-soft)}.fd-calendar-grid td button.fd-outside{color:var(--fd-muted);opacity:.6}.fd-calendar-grid td button[aria-current=date]{box-shadow:inset 0 0 0 1px var(--fd-accent)}.fd-calendar-grid td button[aria-selected=true]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}.fd-calendar-grid td button:focus-visible{outline:2px solid var(--fd-focus);outline-offset:1px}.fd-properties{display:grid;gap:8px;min-width:0}.fd-property{display:grid;grid-template-columns:minmax(120px,30%) minmax(0,1fr);align-items:center;gap:12px;min-width:0}.fd-property>label{color:var(--fd-muted);font-size:13px}.fd-property[data-type=boolean]>:last-child{justify-self:start}@container (max-width: 520px){.fd-property{grid-template-columns:minmax(0,1fr);gap:4px}}.fd-progressbar{position:relative;height:22px;min-width:120px;border-radius:999px;overflow:hidden;background:var(--fd-page);border:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-progressbar-fill{height:100%;background:var(--fd-success);transition:width .2s ease}.fd-progressbar[data-tone=warning] .fd-progressbar-fill{background:#d97706}.fd-progressbar[data-tone=danger] .fd-progressbar-fill{background:var(--fd-error)}.fd-progressbar[data-tone=info] .fd-progressbar-fill{background:var(--fd-info)}.fd-progressbar-text{position:absolute;inset-block:2px;left:50%;translate:-50% 0;display:grid;place-items:center;padding-inline:7px;border-radius:999px;background:var(--fd-surface);font-size:12px;line-height:1;font-weight:600;color:var(--fd-text)}.fd-progressbar-text:empty{display:none}.fd-progressbar-edit{display:flex;align-items:center;gap:12px;min-width:0}.fd-progressbar-edit>.fd-progressbar{flex:1 1 auto}.fd-progressbar-edit>.fd-input{flex:0 0 96px}.fd-progress-bar{height:4px;background:var(--fd-border);border-radius:999px;overflow:hidden}.fd-progress-bar>span{display:block;height:100%;background:var(--fd-accent);transition:width .25s ease}.fd-step{display:grid;gap:18px}.fd-step-title{font-size:18px;font-weight:650;margin:0}.fd-wizard-nav{display:flex;gap:8px;justify-content:space-between}.fd-steps-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0;counter-reset:fd-step}.fd-steps-list>li{counter-increment:fd-step}.fd-step-link{font:inherit;font-size:13.5px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-muted);border-radius:999px;padding:4px 12px 4px 6px}.fd-step-link:before{content:counter(fd-step);display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--fd-page);color:var(--fd-muted);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.fd-step-link:hover{border-color:var(--fd-accent);color:var(--fd-text)}.fd-step-link:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-step-link.fd-step-done{color:var(--fd-text)}.fd-step-link.fd-step-done:before{content:"\u2713";background:var(--fd-accent-soft);color:var(--fd-accent)}.fd-step-link.fd-step-skipped{border-style:dashed;color:var(--fd-muted)}.fd-step-link.fd-step-skipped:before{content:"\u2013";background:var(--fd-page);color:var(--fd-muted)}.fd-step-link[aria-current=step]{border-color:var(--fd-accent);color:var(--fd-accent);font-weight:600}.fd-step-link[aria-current=step]:before{content:counter(fd-step);background:var(--fd-accent);color:var(--fd-accent-text)}.fd-wizard-nav .fd-spacer{flex:1}.fd-text-heading{font-size:16px;font-weight:650;margin:0}.fd-matrix{overflow-x:auto;max-width:100%}.fd-matrix-table{border-collapse:collapse;min-width:100%}.fd-matrix-table th,.fd-matrix-table td{padding:6px 10px;text-align:center;border-bottom:1px solid var(--fd-border)}.fd-matrix-table thead th{font-weight:500;font-size:13px;color:var(--fd-muted)}.fd-matrix-table tbody th{text-align:start;font-weight:500}.fd-matrix-table input{accent-color:var(--fd-accent);width:16px;height:16px;margin:0}.fd-divider{grid-column:1 / -1;width:100%;border:0;border-top:1px solid var(--fd-border);margin:4px 0}.fd-block{min-width:0}.fd-spacer{min-height:24px}.fd-image{display:block;max-width:100%;height:auto;border-radius:var(--fd-radius)}.fd-figure{display:grid;justify-items:start;gap:6px;margin:0}.fd-figure[data-align=center]{justify-items:center}.fd-figure[data-align=end]{justify-items:end}.fd-figure>a,.fd-figure .fd-image{width:var(--fd-image-width, auto);max-width:100%}.fd-figure>a{display:block;border-radius:var(--fd-radius)}.fd-caption{font-size:13px;color:var(--fd-muted)}.fd-text-paragraph{margin:0}.fd-text-note{margin:0;color:var(--fd-muted);font-size:13px}.fd-status{min-height:1.4em;color:var(--fd-muted);font-size:13px}.fd-status-box{display:inline-flex;align-items:center;gap:6px;min-width:0}.fd-status-box .fd-retry{font-size:13px}.fd-announce{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 14px;margin-block-end:16px;border:1px solid #f0c47a;border-radius:var(--fd-control-radius);background:var(--fd-warning-soft);color:var(--fd-warning);font-size:13.5px}.fd-banner-text{flex:1 1 16em;min-width:0}.fd-content>.fd-banner:has(+.fd-draft+.fd-sheet-page),.fd-content>.fd-banner:has(+.fd-sheet-page){margin:12px 16px 0}.fd-status-box.fd-toast{position:fixed;inset-block-end:max(20px,env(safe-area-inset-bottom,0px));inset-inline-end:20px;z-index:900;padding:10px 16px;border-radius:8px;background:var(--fd-text);box-shadow:0 8px 24px #0f141940}.fd-toast .fd-status,.fd-toast .fd-status.fd-status-saved,.fd-toast .fd-status.fd-status-error{color:var(--fd-surface);font-size:13.5px;min-height:0}.fd-toast .fd-retry{color:var(--fd-surface);text-decoration:underline}.fd-toast:has(.fd-status-error){background:var(--fd-error)}.fd-status-box.fd-status-bar{display:flex;justify-content:center;min-height:32px;padding:6px 16px;background:var(--fd-surface);border-block-end:1px solid var(--fd-border)}.fd-status-bar .fd-status-error,.fd-status.fd-status-error{color:var(--fd-error)}.fd-status.fd-status-saved{color:var(--fd-success)}.fd-draft{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:10px 14px;margin-block-end:16px;background:var(--fd-info-soft);border:1px solid #a9c8ef;border-radius:var(--fd-control-radius)}.fd-done{padding:40px 0;text-align:center;display:grid;gap:12px;justify-items:center}.fd-done-title{font-size:20px;font-weight:650;margin:0}.fd-dialog-backdrop{position:fixed;inset:0;background:#0f141973;display:grid;place-items:center;z-index:1000;padding:16px}.fd-dialog{background:var(--fd-surface);color:var(--fd-text);border-radius:max(var(--fd-radius),6px);max-width:420px;width:100%;padding:20px 22px;display:grid;gap:16px;box-shadow:0 10px 30px #0003;font-family:var(--fd-font);border:1px solid var(--fd-edge, transparent)}.fd-dialog p{margin:0}.fd-says{position:fixed;inset-inline:16px;inset-block-end:max(20px,env(safe-area-inset-bottom,0px));z-index:1100;display:grid;justify-items:center;gap:8px;pointer-events:none}.fd-say{pointer-events:auto;display:flex;align-items:center;gap:8px;max-width:420px;padding-block:8px;padding-inline:14px 6px;border:1px solid var(--fd-border);border-inline-start:4px solid var(--fd-tone);border-radius:max(var(--fd-control-radius),6px);background:var(--fd-surface);color:var(--fd-text);box-shadow:0 8px 24px #0f141940;font-size:13.5px}.fd-say>span{flex:1 1 auto;min-width:0}.fd-button[aria-busy=true],.fd-stat[aria-busy=true]{cursor:progress}.fd-button[aria-busy=true]:after{content:"";width:.85em;height:.85em;border:2px solid currentColor;border-inline-end-color:transparent;border-radius:50%;animation:fd-spin .8s linear infinite}@keyframes fd-spin{to{rotate:1turn}}.fd-back{margin:8px 12px}.fd-back:before{content:"\u2190"}.fd-back:dir(rtl):before{content:"\u2192"}.fd-form[data-scheme]>.fd-back{margin:12px 20px 0}.fd-form-dialog{display:flex;flex-direction:column;width:100%;max-height:min(90vh,100%);min-height:0;background:var(--fd-page);color:var(--fd-text);border-radius:max(var(--fd-radius),8px);box-shadow:0 24px 64px #0f14194d;overflow:hidden}.fd-form-dialog:focus{outline:none}.fd-form-dialog.fd-size-small{max-width:440px}.fd-form-dialog.fd-size-medium{max-width:760px}.fd-form-dialog.fd-size-large{max-width:1080px}.fd-form-dialog-backdrop:has(>.fd-size-full),.fd-form-panel-backdrop{padding:0}.fd-form-dialog:is(.fd-size-full,.fd-form-panel){max-height:none;height:100%;border-radius:0}.fd-size-full{max-width:none}.fd-form-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-block-end:1px solid var(--fd-border);background:var(--fd-surface)}.fd-form-dialog-title{margin:0;font-size:16px;font-weight:600}.fd-dialog-close{border:none;background:none;cursor:pointer;font-size:22px;line-height:1;padding:2px 8px;border-radius:4px;color:var(--fd-muted)}.fd-dialog-close:hover{background:var(--fd-page);color:var(--fd-text)}.fd-form-dialog-body{flex:1 1 auto;min-height:0;overflow:auto;container-type:inline-size}.fd-form-dialog-body .fd-sheet-layout{margin-block-start:12px}.fd-form-dialog-body .fd-page-title{display:none}.fd-form-dialog-body .fd-page-head:not(:has(.fd-page-description)){display:none}.fd-form-dialog-body .fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr)}.fd-form-dialog-body .fd-side{display:none}.fd-search-body{display:grid;gap:12px;align-content:start}.fd-search-list{list-style:none;margin:0;padding:0;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);overflow:auto;max-height:min(60vh,520px)}.fd-search-list .fd-option{padding:8px 12px}.fd-search-list .fd-option+.fd-option{border-block-start:1px solid var(--fd-border)}.fd-search-list .fd-empty{padding:10px 12px;color:var(--fd-muted)}.fd-form-dialog-body:not(:has(.fd-sheet-layout)){background:var(--fd-surface);padding:16px 20px 20px}.fd-form-dialog-foot{padding:12px 16px;border-block-start:1px solid var(--fd-border);background:var(--fd-surface);margin:0}.fd-form-panel-backdrop{justify-items:end}.fd-form-panel{max-width:560px;position:relative}.fd-form-panel>.fd-dialog-backdrop{position:absolute}.fd-width-narrow{max-width:420px}.fd-width-wide{max-width:720px}.fd-form-panel[data-side=start]{justify-self:start}.fd-form-panel[data-side=left]{justify-self:left}.fd-form-panel[data-side=right]{justify-self:right}.fd-form-panel[data-side=top]{align-self:start;--fd-from: 0 -100%;--fd-back: 48px 0 0}.fd-form-panel[data-side=bottom]{align-self:end;--fd-from: 0 100%;--fd-back: 0 0 48px}.fd-form-panel[data-side=end]:dir(rtl),.fd-form-panel[data-side=start]:dir(ltr),.fd-form-panel[data-side=left]{--fd-from: -100% 0;--fd-back: 0 0 0 48px}.fd-form-panel:is([data-side=top],[data-side=bottom]){max-width:none;height:60%}.fd-form-panel.fd-height-short{height:40%}.fd-form-panel.fd-height-tall{height:85%}.fd-form-panel[data-behind]{margin:var(--fd-back, 0 48px 0 0)}@media(max-width:600px){.fd-form-dialog.fd-form-panel[data-side]{max-width:none;height:100%;margin:0;--fd-from: 0 100%}.fd-form-dialog.fd-form-panel[data-side=top]{--fd-from: 0 -100%}}@media(prefers-reduced-motion:no-preference){.fd-form-panel{animation:fd-slide .25s ease-out;transition:margin .2s}}@keyframes fd-slide{0%{translate:var(--fd-from, 100% 0)}}@media(prefers-reduced-motion:reduce){.fd-form *,.fd-form *:before,.fd-form *:after{transition:none!important}.fd-button[aria-busy=true]:after{animation:none}}',Js=Sc+Ks+Bs+_s+Us+Hs+zs+qs,Gs="fieldia-styles";function xo(e){if(e.getElementById(Gs))return;let t=e.createElement("style");t.id=Gs,t.textContent=Js,(e.head??e.documentElement).append(t)}function wo(e){let t=()=>{try{return e??globalThis.localStorage??null}catch{return null}};return{get(n){try{let r=t()?.getItem(`fieldia:${n}`);return r==null?null:JSON.parse(r)}catch{return null}},set(n,r){try{t()?.setItem(`fieldia:${n}`,JSON.stringify(r))}catch{}}}}function Lc(){let e=new Map;return{get:t=>e.has(t)?Ys(e.get(t)):null,set:(t,n)=>{e.set(t,Ys(n))}}}var Ys=e=>JSON.parse(JSON.stringify(e));function ko(e,t){let n=t.widget;switch(e.type){case"char":return!n||n==="email"||n==="phone"||n==="url";case"selection":return!n&&!e.multiple&&!e.optionsFrom;case"text":case"integer":case"float":return!n||n==="duration"||n==="percentage";case"monetary":case"date":case"datetime":case"many2one":case"reference":return!n;default:return!1}}var Ec={email:[/^[^\s@]+@[^\s@]+$/,"mailto:"],phone:[/^\+?[\d\s().-]{3,}$/,"tel:"],url:[/^https?:\/\/\S+$/i,""]};function Rc(e,t,n,r){if(t.type!=="integer"&&t.type!=="float"||n.widget||r===null||r===void 0||e==="")return e;let i=o=>typeof n.options?.[o]=="string"?n.options[o].trim():"";return[i("prefix"),e,i("suffix")].filter(Boolean).join(" ")}function So(e){let{document:t,field:n,node:r,locale:i="en",labels:o=Ke.en,dialogs:a}=e,d=t.createElement("div");d.className="fd-read-text",d.id=`${e.id}-text`;let s=n.type==="many2one"?n.relation:null,l=s!==null&&r.options?.open!==!1&&!!a?.canOpen(s),f="";return{element:d,update(c,x){let b=Rc(or(n,c,x,i,void 0,{widget:r.widget,options:r.options}),n,r,c),y=JSON.stringify([b,c??null]);if(y===f)return;f=y;let S=r.widget?Ec[r.widget]:void 0,m=s!==null&&c&&typeof c=="object"&&"id"in c?c:null,k;if(S&&typeof c=="string"&&S[0].test(c.trim())){let L=t.createElement("a");L.href=`${S[1]}${c.trim()}`,r.widget==="url"&&Object.assign(L,{target:"_blank",rel:"noopener noreferrer"}),L.textContent=b,k=L}else if(l&&m){let L=t.createElement("button");L.type="button",L.className="fd-read-link",L.textContent=b,L.setAttribute("aria-label",o.openNamed.replace("{name}",m.label)),L.addEventListener("click",()=>{a?.openRecord(s,{recordId:m.id,title:m.label})}),k=L}else k=t.createTextNode(b);let h=m&&r.options?.avatar===!0?[In(t,m)]:[],E=[];if(m?.details?.trim()&&r.options?.details===!0){let L=t.createElement("div");L.className="fd-link-details",_r(L,m.details.trim()),E.push(L)}d.replaceChildren(...h,k,...E)}}}var Xs={};var Fc={save:"Save",edit:"Edit",done:"Done",discard:"Discard",saving:"Saving\u2026",saved:"Saved",submit:"Submit",next:"Next",back:"Back",skip:"Skip",steps:"Steps",stepOf:"Step {n} of {total}",submitted:"Thank you. Your answers were sent.",submitAnother:"Submit another response",draftFound:"You have unsaved answers from {time}.",restore:"Restore",discardDraft:"Discard",ok:"OK",cancel:"Cancel",loading:"Loading\u2026",saveClose:"Save & Close",close:"Close",discardChanges:"Discard your changes?",dismiss:"Dismiss",helpFor:"Help for {label}",retry:"Retry",notSaved:"Not saved",notSent:"Not sent",checkFields:"{what}. Check: {fields}",offline:"Could not reach the server. Your changes are still here.",previousPage:"Previous page",nextPage:"Next page",range:"{from}\u2013{to} / {total}",selected:"{n} selected",clearSelection:"Clear",selectAll:"Select all",selectRecord:"Select {name}",noRecords:"No records match.",loadFailed:"Could not load the records.",search:"Search\u2026",searchLabel:"Search",searchFor:"Search {field} for: {text}",searchOptions:"Search options",filters:"Filters",groupBy:"Group By",favourites:"Favourites",or:"or",removeFacet:"Remove {label}",addCustomFilter:"Add a custom filter",field:"Field",condition:"Condition",value:"Value",apply:"Apply",saveSearch:"Save current search",searchName:"Name of the search",useByDefault:"Use by default",deleteFavourite:"Delete {name}",noFavourites:"No saved searches yet.",opIs:"is",opIsNot:"is not",opContains:"contains",opGreater:"greater than",opLess:"less than",opSet:"is set",opNotSet:"is not set",yes:"Yes",no:"No",none:"None",loadMore:"Show {n} more",formMissing:"The saved form \u201C{page}\u201D cannot be found.",formInItself:"The saved form \u201C{page}\u201D is not shown here: it would be placed inside itself ({chain}).",formNotPlaceable:"The saved form \u201C{page}\u201D cannot be placed here: only a form of sections or tabs can.",formBroken:"The saved form \u201C{page}\u201D cannot be shown.",pageMissing:"The page \u201C{page}\u201D cannot be found.",actions:"Actions",print:"Print",archive:"Archive",unarchive:"Unarchive",duplicate:"Duplicate",delete:"Delete",breadcrumbs:"Breadcrumbs",newRecord:"New",records:"Records",recordAt:"{n} / {total}",previousRecord:"Previous record",nextRecord:"Next record",attachment:"Attachment: {name}",openAttachment:"Open",previousAttachment:"Previous attachment",nextAttachment:"Next attachment"},Ct={en:Fc,...Xs},Qs=Ct.en,Ac=new Map([["ar","Arabic"],["de","German"],["fr","French"]]),Zs=new Set;function cr(e="en"){let t=e.split("-")[0];if(Object.prototype.hasOwnProperty.call(Ct,t))return t;let n=Ac.get(t);return n&&!Zs.has(t)&&(Zs.add(t),console.warn(`Fieldia: this page is in ${n}, but only English words are loaded, so Fieldia's own words show in English. Load the ${n} ones after fieldia.js: <script src="https://cdn.jsdelivr.net/npm/@fieldia/viewer/bundle/fieldia.${t}.js"><\/script>`)),"en"}var Lo="#111418",rd="#1f2329",Tc="#f2f3f5";var Eo=e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)),$c=e=>`#${e.map(t=>Math.round(t).toString(16).padStart(2,"0")).join("")}`;function ed(e){let[t,n,r]=Eo(e).map(i=>{let o=i/255;return o<=.03928?o/12.92:((o+.055)/1.055)**2.4});return .2126*t+.7152*n+.0722*r}function kn(e,t){let[n,r]=[ed(e),ed(t)].sort((i,o)=>o-i);return(n+.05)/(r+.05)}var Mc=e=>kn(e,"#ffffff")>=4.5?"#ffffff":Lo,Nc=e=>kn(e,Lo)>=kn(e,"#ffffff")?Lo:"#ffffff",id=(e,t,n)=>$c(Eo(e).map((r,i)=>r+(Eo(t)[i]-r)*n)),Cc=(e,t)=>id(t,e,.12),td=(e,t)=>[...t,Cc(e,t[0])].every(n=>kn(e,n)>=4.5);function gi(e,t,n){let r=e;for(let i=1;i<=40&&!n(r);i++)r=id(e,t,i/40);return r}function fr(e,t={light:[],dark:[]}){let n=e.toLowerCase(),r=gi(n,"#000000",o=>td(o,["#ffffff",Tc,...t.light])),i=gi(n,"#ffffff",o=>td(o,[rd,...t.dark]));return{accent:r,accentText:Mc(r),dark:i,darkText:Nc(i)}}var Oc=["#212529","#636976","#c63c3d"],Vc=["#e8eaed","#a3a9b2","#ff8a7a"],Pc={accent:"#1365d9",dark:"#5aa2ff"},nd={background:"bg",border:"border",corners:"radius",textSize:"size",accent:"accent"},Ic={small:"13px",large:"16px"},Dc={square:[0,0],soft:[6,10],round:[12,16]};function Wc(e,t){let n=(s,l)=>t.scheme==="dark"?l:t.scheme==="auto"?`light-dark(${s}, ${l})`:s,r=t.accent?fr(t.accent):Pc,i=Object.entries(t.parts??{}),o=(s,l,f)=>e.style.setProperty(`--fd-${s}-${l}`,f),a={light:[],dark:[]},d=s=>l=>s.every(f=>kn(f,l)>=4.5);for(let[s,l]of i){let f=l.background?.toLowerCase();if(!f)continue;let c=gi(f,"#ffffff",d([...Oc,r.accent])),x=gi(f,rd,d([...Vc,r.dark]));a.light.push(c),a.dark.push(x),o(s,"bg",n(c,x))}for(let[s,l]of i){let f=Object.keys(nd).filter(c=>l[c]).map(c=>nd[c]);if(f.length&&e.setAttribute(`data-${s}`,f.join(" ")),l.border&&o(s,"border",l.border),l.corners&&o(s,"radius",`${Dc[l.corners][s==="groups"?1:0]}px`),l.textSize&&o(s,"size",Ic[l.textSize]),l.accent){let c=fr(l.accent,a);o(s,"accent",n(c.accent,c.dark)),o(s,"accent-text",n(c.accentText,c.darkText))}}}function Sn(e,t){if(t){for(let n of["font","density","corners","scheme"]){let r=t[n];r&&e.setAttribute(`data-${n}`,r)}if(t.labelWidth&&e.style.setProperty("--fd-label-width",`${t.labelWidth}px`),t.accent){let n=fr(t.accent);e.setAttribute("data-accent",""),e.style.setProperty("--fd-look-accent",n.accent),e.style.setProperty("--fd-look-accent-text",n.accentText),e.style.setProperty("--fd-look-accent-dark",n.dark),e.style.setProperty("--fd-look-accent-dark-text",n.darkText)}Wc(e,t)}}function Ln(e,t,n){let r=Mn(t);e.setAttribute("data-hotkey",t),e.setAttribute("aria-keyshortcuts",r),e.title=`${n} (${r})`;let i=e.ownerDocument.createElement("kbd");i.className="fd-hotkey",i.setAttribute("aria-hidden","true"),i.dir="ltr",i.textContent=`${t.startsWith("shift+")?"\u21E7":""}${t.slice(-1).toUpperCase()}`,e.append(i)}function hi(e){if(!e.altKey||e.ctrlKey||e.metaKey||e.defaultPrevented)return null;let t=/^(?:Key([A-Z])|Digit([0-9]))$/.exec(e.code);return t?`${e.shiftKey?"shift+":""}${(t[1]??t[2]).toLowerCase()}`:null}var od=0,ur='input:not([type="hidden"]), select, textarea, [contenteditable="true"]';function bi(e){return[...e.querySelectorAll(".fd-field[data-focus]")].find(n=>!n.closest("[hidden]"))?.querySelector(ur)??null}var ad=e=>(t,n={},r)=>{let i=e.createElement(t);for(let[o,a]of Object.entries(n))i.setAttribute(o,a);return r!==void 0&&(i.textContent=r),i};function Bn(e){return sd(e,`fd-size-${e.size??"medium"}`)}function Ro(e){let t=e.side??"end";return sd(e,`fd-form-panel ${t==="top"||t==="bottom"?`fd-height-${e.height??"medium"}`:`fd-width-${e.width??"medium"}`}`,t)}function sd(e,t,n){let r=!!n,i=e.container?.ownerDocument??document,o=e.container??i.body,a=i.activeElement instanceof i.defaultView.HTMLElement?i.activeElement:null,d={...Ct[cr(e.locale)],...e.labels},s=`fd-dialog-${++od}`,l=ad(i),f=l("h2",{id:`${s}-title`,class:"fd-form-dialog-title"},e.title),c=l("button",{type:"button",class:"fd-dialog-close","aria-label":d.close},"\xD7"),x=l("div",{class:"fd-form-dialog-body"}),b=l("button",{type:"button",class:"fd-button"},d.discard),y=l("button",{type:"button",class:"fd-button fd-button-primary"},r&&e.mode==="values"?d.done:d.saveClose),S=l("div",{class:`fd-theme fd-form-dialog ${t}`,"data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":f.id,tabindex:"-1"});n&&S.setAttribute("data-side",n),e.dir&&S.setAttribute("dir",e.dir);let m=e.page.look??e.look;Sn(S,m),S.append(l("div",{class:"fd-form-dialog-head"}),x,l("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"})),S.firstElementChild?.append(f,c);let h=(e.page.layout.type==="sections"||e.page.layout.type==="sheet"?e.page.layout.footer??[]:[]).map(p=>({node:p,button:l("button",{type:"button",class:`fd-button fd-button-${p.style??"secondary"}`,"data-node":p.id},p.label)}));for(let{node:p,button:T}of h)p.hotkey&&Ln(T,p.hotkey,p.label);S.lastElementChild?.append(...h.length?h.map(p=>p.button):[b,y]);let E=l("div",{class:`fd-dialog-backdrop fd-form-dialog-backdrop${r?" fd-form-panel-backdrop":""}`});E.append(S);let L=r?[...i.querySelectorAll(".fd-form-panel")].pop():void 0;L?.setAttribute("data-behind",""),o.append(E);let v=pr(x,{...e,page:m&&!e.page.look?{...e.page,look:m}:e.page,showActions:!1,records:void 0,breadcrumbs:void 0,host:{...e.host,close:()=>b.click()}});r&&v.element.dir&&(E.dir=v.element.dir);let R=!1;e.recompute&&jc(v.form,e.page.fields,e.recompute,()=>R);let w=()=>bi(x)??x.querySelector(ur);return(w()??S).focus(),v.form.settled().then(()=>{(i.activeElement===S||!S.contains(i.activeElement))&&w()?.focus()}),new Promise(p=>{let T=M=>{if(R)return;R=!0;let P=v.form.getState(),j={saved:M,recordId:P.recordId??null,values:P.values};v.destroy(),E.remove(),L?.removeAttribute("data-behind"),a?.focus(),p(j)},C=()=>new Promise(M=>{let P=i.activeElement,j=l("p",{id:`${s}-ask`},d.discardChanges),_=l("button",{type:"button",class:"fd-button"},d.cancel),D=l("button",{type:"button",class:"fd-button fd-button-primary"},d.discard),V=l("div",{class:"fd-actions fd-actions-end"}),z=l("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":j.id}),$=l("div",{class:"fd-dialog-backdrop"});V.append(_,D),z.append(j,V),$.append(z);let ee=Z=>{$.remove(),P?.focus(),M(Z)};_.addEventListener("click",()=>ee(!1)),D.addEventListener("click",()=>ee(!0)),$.addEventListener("keydown",Z=>{Z.stopPropagation(),Z.key==="Escape"?ee(!1):Bt(z,Z)}),S.append($),_.focus()}),W=async()=>{(!r||!v.form.getState().dirty.length||await C())&&T(!1)};y.addEventListener("click",async()=>{y.disabled=!0;let M=e.mode==="values"?v.check():await v.save();y.disabled=!1,M&&T(!0)}),b.addEventListener("click",()=>T(!1));let O=!1;v.on("save",()=>O=!0),v.on("send",()=>O=!0);let H=()=>{for(let{node:M,button:P}of h)P.hidden=v.form.node(M.id).invisible};h.length&&(H(),v.form.subscribe(H));for(let{node:M,button:P}of h)P.addEventListener("click",async()=>{if(P.hasAttribute("aria-busy"))return;P.setAttribute("aria-busy","true"),O=!1;let j=await v.form.runAction(M.id);P.removeAttribute("aria-busy"),!R&&(O?T(!0):(j.reason==="check"||j.reason==="save")&&v.check())});c.addEventListener("click",W),S.addEventListener("keyup",M=>M.key==="Alt"&&S.removeAttribute("data-hotkeys")),S.addEventListener("keydown",M=>{M.key==="Alt"&&S.setAttribute("data-hotkeys","");let P=hi(M),j=P?h.find(({node:_,button:D})=>_.hotkey===P&&!D.hidden&&!D.disabled)?.button:void 0;if(j){M.preventDefault(),S.removeAttribute("data-hotkeys"),j.click();return}if(M.key==="Enter"&&(M.ctrlKey||M.metaKey)&&!M.isComposing){if(M.target.closest(".ag-root-wrapper"))return;M.preventDefault(),i.activeElement?.dispatchEvent(new Event("change",{bubbles:!0})),h.length?h.find(({node:_,button:D})=>_.style==="primary"&&!D.hidden)?.button.click():y.click();return}M.defaultPrevented||(M.key==="Escape"?(M.preventDefault(),W()):Bt(S,M))})})}function jc(e,t,n,r){let i=JSON.stringify(e.getState().values),o=!1;e.subscribe(()=>{let a=e.getState().values,d=JSON.stringify(a);o||d===i||(i=d,n(a).then(s=>{if(r()||JSON.stringify(e.getState().values)!==d)return;o=!0;let l=Object.fromEntries(Object.entries(s).filter(([f,c])=>f in t&&JSON.stringify(a[f]??null)!==JSON.stringify(c??null)));Object.keys(l).length&&e.setValues(l),o=!1,i=JSON.stringify(e.getState().values)},()=>{}))})}function Fo(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,r=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,i=cr(e.locale),o=Ct[i],a=Ke[i],d=`fd-dialog-${++od}`,s=ad(t),l=s("h2",{id:`${d}-title`,class:"fd-form-dialog-title"},e.title),f=s("button",{type:"button",class:"fd-dialog-close","aria-label":o.close},"\xD7"),c=s("input",{type:"search",class:"fd-input","aria-label":a.search,placeholder:a.search,"aria-controls":`${d}-list`,autocomplete:"off"}),x=s("ul",{id:`${d}-list`,class:"fd-search-list",role:"listbox","aria-labelledby":l.id}),b=s("button",{type:"button",class:"fd-button"},o.cancel),y=s("div",{class:"fd-theme fd-form-dialog fd-search-dialog fd-size-small","data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":l.id});e.dir&&y.setAttribute("dir",e.dir),Sn(y,e.look);let S=s("div",{class:"fd-form-dialog-head"});S.append(l,f);let m=s("div",{class:"fd-form-dialog-body fd-search-body"});m.append(c,x);let k=s("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"});k.append(b),y.append(S,m,k);let h=s("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});return h.append(y),n.append(h),c.focus(),new Promise(E=>{let L=[],v=-1,R=0,w,p=W=>{clearTimeout(w),R++,h.remove(),r?.focus(),E(W)},T=()=>{x.replaceChildren(...L.map((W,O)=>{let H=s("li",{id:`${d}-option-${O}`,role:"option",class:`fd-option${O===v?" fd-active":""}`,"aria-selected":String(O===v)},W.label);return H.addEventListener("click",()=>p(W)),H})),L.length||x.append(s("li",{class:"fd-empty"},a.noResults)),v>=0?c.setAttribute("aria-activedescendant",`${d}-option-${v}`):c.removeAttribute("aria-activedescendant")},C=()=>{clearTimeout(w);let W=++R;w=setTimeout(async()=>{let O=await e.search(c.value,80).catch(()=>[]);W===R&&(L=O,v=-1,T())},180)};c.addEventListener("input",C),c.addEventListener("keydown",W=>{if(W.key==="ArrowDown"||W.key==="ArrowUp"){if(W.preventDefault(),!L.length)return;v=(v+(W.key==="ArrowDown"?1:-1)+L.length)%L.length,T(),x.children[v]?.scrollIntoView?.({block:"nearest"})}else W.key==="Enter"&&v>=0&&(W.preventDefault(),p(L[v]))}),b.addEventListener("click",()=>p(null)),f.addEventListener("click",()=>p(null)),y.addEventListener("keydown",W=>{W.key==="Escape"?(W.preventDefault(),p(null)):Bt(y,W)}),C()})}function Ao(e){return e.layout.type==="sheet"&&e.layout.title?.field?e.layout.title.field:e.fields.name?"name":Object.entries(e.fields).find(([,t])=>t.type==="char")?.[0]??null}function Hc(e,t,n,r){let i=Object.fromEntries(Object.entries(e).map(([o,a])=>[o,n?{...a,readonly:!0}:a]));return{fieldia:"0.1",id:"values",title:t,data:{kind:"record",model:"values"},fields:i,layout:{type:"sections",id:"values",children:r??[{type:"section",id:"values-section",columns:2,children:Object.keys(i).map(o=>({type:"field",id:`values-${o}`,field:o}))}]}}}function mr(e,t){let{pages:n,relatedPages:r}=e,i="model"in t?t.model:t.version===void 0?t.id:`${t.id}@${t.version}`,o=typeof n=="function"?n(t):n&&Object.prototype.hasOwnProperty.call(n,i)?n[i]:null;return o instanceof Promise?o.then(a=>a??null):o||!("model"in t)?o??null:(typeof r=="function"?r(t.model):r?.[t.model])??null}function zc(e){if(e)return{...e.search?{search:t=>e.search(t)}:{},...e.create?{create:t=>e.create(t)}:{}}}function dd(e,t){let n=i=>mr(e,{model:i}),r={locale:e.locale,skin:e.skin,dir:e.dir,widgets:e.widgets,preferences:e.preferences,pages:e.pages,relatedPages:e.relatedPages,translate:e.translate,look:e.page.look,user:e.user,context:e.context};return{canOpen:i=>n(i)!==null,async openRecord(i,o){let a=await n(i);if(!a)return null;let d=Ao(a),s=await Bn({...r,page:a,dataSource:e.dataSource,recordId:o.recordId??null,values:o.name||o.values?{...o.values??{},...o.name&&d?{[d]:o.name}:{}}:void 0,title:o.title,size:"large",...t?{host:{say:t}}:{}});if(!s.saved||s.recordId===null)return null;let l=d?s.values[d]:null,f=typeof l=="string"&&l?l:o.name??o.title;return o.withValues?{id:s.recordId,label:f,values:s.values}:{id:s.recordId,label:f}},searchMore:i=>Fo({title:i.title,search:i.search,locale:e.locale,skin:e.skin,dir:e.dir,look:e.page.look}),async editValues(i){let o=await Bn({...r,page:Hc(i.fields,i.title,i.readonly===!0,i.layout),...i.parent?{parent:i.parent}:{},dataSource:zc(e.dataSource),values:i.values,title:i.title,...i.layout?{size:"large"}:{},mode:"values",...i.recompute?{recompute:i.recompute}:{},...t?{host:{say:t}}:{}});return o.saved?o.values:null}}}var ld=e=>`favourites:${e.id}`;function yi(e,t){let n=e.get(ld(t));return Array.isArray(n)?n:[]}function cd(e,t,n){let r=yi(t,n).find(i=>i.isDefault);return r?r.facets:e.defaultFilters?.length?[{kind:"filters",ids:[...e.defaultFilters],labels:e.defaultFilters.map(i=>e.filters?.find(o=>o.id===i)?.label??i)}]:[]}function fd(e){let{page:t,el:n,labels:r,fill:i,preferences:o}=e,a=n("ul",{class:"fd-favourite-list"}),d=n("p",{class:"fd-favourites-none"},r.noFavourites),s=n("input",{class:"fd-input","aria-label":r.searchName,placeholder:r.searchName}),l=n("input",{type:"checkbox"}),f=n("button",{type:"button",class:"fd-button fd-button-primary"},r.save),c=n("div",{class:"fd-favourite-form",hidden:""},s,n("label",{class:"fd-favourite-default"},l,r.useByDefault),f),x=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.saveSearch),b=S=>o.set(ld(t),S);function y(){let S=yi(o,t);d.hidden=S.length>0,a.replaceChildren(...S.map(m=>{let k=n("button",{type:"button",class:"fd-search-option","data-default":m.isDefault?"true":void 0},m.name);k.addEventListener("click",()=>e.apply(m.facets));let h=n("button",{type:"button",class:"fd-favourite-remove","aria-label":i(r.deleteFavourite,{name:m.name})},"\xD7");return h.addEventListener("click",()=>{b(yi(o,t).filter(E=>E.name!==m.name)),y()}),n("li",{class:"fd-favourite"},k,h)}))}return x.addEventListener("click",()=>{c.hidden=!c.hidden,x.setAttribute("aria-expanded",String(!c.hidden)),c.hidden||s.focus()}),f.addEventListener("click",()=>{let S=s.value.trim();if(!S)return s.focus();let m={name:S,facets:e.current(),...l.checked?{isDefault:!0}:{}},k=yi(o,t).filter(h=>h.name!==S).map(h=>l.checked?{name:h.name,facets:h.facets}:h);b([...k,m]),s.value="",l.checked=!1,c.hidden=!0,x.setAttribute("aria-expanded","false"),y()}),y(),{list:a,none:d,open:x,form:c}}function Bc(e,t,n){let r=e.page.fields[t];return n.value===null?e.labels.none:r.type==="selection"?r.options.find(i=>i.value===n.value)?.label??n.label:r.type==="boolean"?n.value?e.labels.yes:e.labels.no:n.label||String(n.value)}function qc(e){let t=Number(e.dataset.level),n=e.nextElementSibling;for(;n&&Number(n.dataset.level??0)>t;){let r=n.nextElementSibling;n.remove(),n=r}}function To(e,t,n,r,i){let{el:o,labels:a}=e,d=i[n],s=[...r,t.value===null?{field:d,op:"notset",value:null}:{field:d,op:"=",value:t.value}],l=o("button",{type:"button",class:"fd-group-toggle","aria-expanded":"false"},o("span",{class:"fd-group-label"},Bc(e,d,t))," ",o("span",{class:"fd-group-count"},`(${t.count})`)),f=o("tr",{class:"fd-list-group","data-level":String(n),"aria-level":String(n+1)},o("td",{colspan:String(e.columns)},l));f.style.setProperty("--fd-level",String(n));let c=!1;async function x(){c=!0;try{let y=n+1<i.length?(await e.dataSource.groups?.({model:e.model,field:i[n+1],filter:s}))?.map(S=>To(e,S,n+1,s,i))??[]:await b(0);if(!f.isConnected||l.getAttribute("aria-expanded")!=="true")return;f.after(...y),e.changed()}finally{c=!1}}async function b(y){let S=await e.dataSource.list({model:e.model,fields:e.fields,filter:s,sort:e.sort(),offset:y,limit:e.pageSize}),m=S.records.map(L=>e.recordRow(L,n+1)),k=S.total-y-S.records.length;if(k<=0)return m;let h=o("button",{type:"button",class:"fd-button fd-button-link"},e.fill(a.loadMore,{n:k})),E=o("tr",{class:"fd-list-more","data-level":String(n+1)},o("td",{colspan:String(e.columns)},h));return E.style.setProperty("--fd-level",String(n)),h.addEventListener("click",async()=>{h.disabled=!0;let L=await b(y+S.records.length);E.isConnected&&(E.replaceWith(...L),e.changed())}),[...m,E]}return l.addEventListener("click",()=>{let y=l.getAttribute("aria-expanded")==="true";l.setAttribute("aria-expanded",String(!y)),y?(qc(f),e.changed()):c||x()}),f}var _c='.fd-list{display:grid;gap:10px;min-width:0}.fd-list [hidden]{display:none!important}.fd-list-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-height:34px}.fd-search{position:relative;flex:1 1 360px;max-width:680px;min-width:0;container:fd-search / inline-size}.fd-search-field{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:34px;box-sizing:border-box;padding:2px 2px 2px 8px;padding-inline:8px 2px;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-surface)}.fd-search-field:focus-within{border-color:var(--fd-focus);box-shadow:var(--fd-focus-ring)}.fd-search-field>.fd-icon,.fd-search-field>svg{width:16px;height:16px;color:var(--fd-muted);flex:none}.fd-facets{display:contents}.fd-facet{display:inline-flex;align-items:center;gap:4px;max-width:100%;min-width:0;min-height:24px;padding-block:0;padding-inline:6px 0;border-radius:3px;background:var(--fd-accent-soft);color:var(--fd-accent);font-size:13px;line-height:18px}.fd-facet svg{width:13px;height:13px;flex:none}.fd-facet[data-kind=groupBy]{background:var(--fd-success-soft);color:var(--fd-success)}.fd-facet-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-facet-remove{all:unset;cursor:pointer;display:grid;place-items:center;width:24px;height:24px;border-radius:2px;font-size:15px;line-height:1;opacity:.7}.fd-facet-remove:hover,.fd-facet-remove:focus-visible{opacity:1;background:var(--fd-surface)}.fd-search-input{flex:1 1 140px;min-width:100px;border:none;outline:none;background:none;font:inherit;font-size:14px;color:var(--fd-text);padding:5px 4px}.fd-form .fd-search-input:focus-visible{outline:none}.fd-search-toggle{all:unset;cursor:pointer;display:grid;place-items:center;width:30px;height:28px;border-radius:3px;color:var(--fd-muted)}.fd-search-toggle:before{content:"";width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg)}.fd-search-toggle[aria-expanded=true]:before{transform:translateY(2px) rotate(-135deg)}.fd-search-toggle:hover,.fd-search-toggle[aria-expanded=true]{background:var(--fd-page);color:var(--fd-text)}.fd-search-toggle:focus-visible{outline:2px solid var(--fd-focus)}.fd-search-suggestions,.fd-search-panel{position:absolute;z-index:30;inset-inline:0;top:calc(100% + 4px);box-sizing:border-box;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);box-shadow:0 10px 28px #0f172a24}.fd-search-suggestions{list-style:none;margin:0;padding:4px 0}.fd-search-suggestions [role=option]{padding:7px 12px;cursor:pointer;font-size:14px}.fd-search-suggestions [role=option][aria-selected=true]{background:var(--fd-accent-soft)}.fd-search-panel{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);padding-block:6px}.fd-search-group{display:flex;flex-direction:column;align-items:stretch;gap:1px;padding:4px 10px 8px;min-width:0}.fd-search-group+.fd-search-group{border-inline-start:1px solid var(--fd-border)}@container fd-search (max-width: 540px){.fd-search-panel{grid-auto-flow:row}.fd-search-group+.fd-search-group{border-inline-start:none;border-block-start:1px solid var(--fd-border);padding-block-start:8px}}.fd-search-heading{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13.5px;padding:4px 6px 6px}.fd-search-heading svg{width:15px;height:15px}.fd-search-group[data-group-kind=filters] .fd-search-heading svg{color:var(--fd-accent)}.fd-search-group[data-group-kind=groupBy] .fd-search-heading svg{color:var(--fd-success)}.fd-search-group[data-group-kind=favourites] .fd-search-heading svg{color:var(--fd-warning)}.fd-search-option{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:4px;font-size:14px;color:var(--fd-text)}.fd-search-option:before{content:"";width:14px;flex:none;text-align:center;color:var(--fd-accent);font-weight:700}.fd-search-option[aria-pressed=true]:before{content:"\u2713"}.fd-search-option:hover,.fd-search-option:focus-visible{background:var(--fd-page)}.fd-search-add{color:var(--fd-muted);margin-block-start:4px}.fd-search-add:before{content:"+";color:var(--fd-muted);font-weight:400}.fd-custom-filter,.fd-favourite-form{display:grid;gap:6px;padding:6px}.fd-custom-filter .fd-input,.fd-favourite-form .fd-input{width:100%;box-sizing:border-box;min-height:30px;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);padding:3px 6px;font:inherit;font-size:13.5px;background:var(--fd-surface);color:var(--fd-text)}.fd-favourite-default{display:flex;align-items:center;gap:6px;font-size:13.5px}.fd-favourite-list{list-style:none;margin:0;padding:0}.fd-favourite{display:flex;align-items:center}.fd-favourite .fd-search-option{flex:1;min-width:0}.fd-favourite .fd-search-option[data-default=true]:before{content:"\u2605";color:var(--fd-warning)}.fd-favourite-remove{all:unset;cursor:pointer;width:24px;height:24px;display:grid;place-items:center;border-radius:4px;color:var(--fd-muted)}.fd-favourite-remove:hover{background:var(--fd-page);color:var(--fd-error)}.fd-favourites-none{margin:0;padding:4px 6px;color:var(--fd-muted);font-size:13px}.fd-list-selection{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:3px 4px 3px 10px;border-radius:var(--fd-control-radius);background:var(--fd-accent-soft)}.fd-list-count{font-weight:600;font-size:13.5px;color:var(--fd-accent);font-variant-numeric:tabular-nums}.fd-pager{display:flex;align-items:center;gap:4px;margin-inline-start:auto}.fd-pager-text{color:var(--fd-muted);font-size:13.5px;font-variant-numeric:tabular-nums;margin-inline-end:6px;white-space:nowrap}.fd-pager-button{min-width:32px;padding-inline:0;font-size:18px;line-height:1}.fd-list-scroll{overflow-x:auto;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius)}.fd-list-table{width:100%;border-collapse:collapse;font-size:14px}.fd-list-table th{text-align:start;font-weight:600;font-size:13px;color:var(--fd-text);padding:8px 10px;border-block-end:1px solid var(--fd-border-strong);white-space:nowrap;background:var(--fd-surface)}.fd-list-table td{padding:7px 10px;border-block-end:1px solid var(--fd-border);max-width:28em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-list-table tbody tr:last-child td{border-block-end:none}.fd-list-table .fd-num{text-align:end;font-variant-numeric:tabular-nums}.fd-list-table th.fd-list-check,.fd-list-table td.fd-list-check{width:36px;padding-inline:10px 0}.fd-list-checkbox{width:16px;height:16px;margin:0;vertical-align:middle;accent-color:var(--fd-accent);cursor:pointer}.fd-list-sort{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:center;gap:4px;font:inherit;color:inherit}.fd-list-sort:after{content:"";width:0;height:0;border-inline:4px solid transparent;opacity:0}.fd-list-sort:hover:after{opacity:.35;border-block-start:5px solid currentColor}.fd-list-table th[aria-sort=ascending] .fd-list-sort:after{opacity:1;border-block-start:none;border-block-end:5px solid currentColor}.fd-list-table th[aria-sort=descending] .fd-list-sort:after{opacity:1;border-block-end:none;border-block-start:5px solid currentColor}.fd-list-table th.fd-num .fd-list-sort{justify-content:flex-end}.fd-list-table th.fd-num .fd-list-sort:after{order:-1}.fd-list-sort:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-list-row:hover td{background:var(--fd-page)}.fd-list-openable{cursor:pointer}.fd-list-row[aria-selected=true] td{background:var(--fd-accent-soft)}.fd-list-row:focus-visible{outline:2px solid var(--fd-focus);outline-offset:-2px}.fd-list-table[aria-busy=true] tbody{opacity:.6;transition:opacity .2s .15s}.fd-list-group td{padding:0;background:var(--fd-page)}.fd-group-toggle{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;padding-inline-start:calc(12px + var(--fd-level, 0) * 22px);font-weight:600;font-size:13.5px;color:var(--fd-text)}.fd-group-toggle:before{content:"";flex:none;width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg);transition:transform .12s}.fd-group-toggle:dir(rtl):before{transform:rotate(-135deg)}.fd-group-toggle[aria-expanded=true]:before{transform:rotate(135deg)}.fd-group-toggle:hover{background:var(--fd-accent-soft)}.fd-group-toggle:focus-visible{outline:2px solid var(--fd-focus);outline-offset:-2px}.fd-group-count{color:var(--fd-muted);font-weight:400;font-variant-numeric:tabular-nums}.fd-list-more td{padding:4px 10px;padding-inline-start:calc(46px + var(--fd-level, 0) * 22px)}.fd-list-empty,.fd-list-failed{margin:0;padding:28px 12px;text-align:center;color:var(--fd-muted)}.fd-list-failed{color:var(--fd-error)}';function vi(e){if(e.getElementById("fd-list-styles"))return;let t=e.createElement("style");t.id="fd-list-styles",t.textContent=_c,e.head.append(t)}var Uc=[["ilike","opContains"],["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],Kc=[["ilike","opContains"],["set","opSet"],["notset","opNotSet"]],Gc=[["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],Jc=[["=","opIs"],["!=","opIsNot"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]],Yc=[["=","opIs"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]];function $o(e){switch(e.type){case"char":case"text":case"html":return Uc;case"many2one":case"many2many":return Kc;case"selection":return Gc;case"integer":case"float":case"monetary":return Jc;case"date":case"datetime":return Yc;case"boolean":return[["=","opIs"]];default:return[]}}function ud(e){let{page:t,el:n,labels:r}=e,i=Object.entries(t.fields).filter(([,S])=>$o(S).length),o=n("select",{class:"fd-input","aria-label":r.field},...i.map(([S,m])=>n("option",{value:S},m.label))),a=n("select",{class:"fd-input","aria-label":r.condition}),d=n("span",{class:"fd-custom-filter-value"}),s=n("button",{type:"button",class:"fd-button fd-button-primary"},r.apply),l=n("div",{class:"fd-custom-filter",hidden:""},o,a,d,s),f=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.addCustomFilter),c=n("input",{class:"fd-input","aria-label":r.value}),x=()=>t.fields[o.value];function b(){a.replaceChildren(...$o(x()).map(([S,m])=>n("option",{value:S},r[m]))),y()}function y(){let S=x();if(S.type==="selection")c=n("select",{class:"fd-input","aria-label":r.value},...S.options.map(m=>n("option",{value:String(m.value)},m.label)));else if(S.type==="boolean")c=n("select",{class:"fd-input","aria-label":r.value},n("option",{value:"true"},r.yes),n("option",{value:"false"},r.no));else{let m=["integer","float","monetary"].includes(S.type)?"number":S.type==="date"?"date":S.type==="datetime"?"datetime-local":"text";c=n("input",{class:"fd-input",type:m,"aria-label":r.value})}d.replaceChildren(c),d.hidden=a.value==="set"||a.value==="notset"}return o.addEventListener("change",b),a.addEventListener("change",()=>d.hidden=a.value==="set"||a.value==="notset"),f.addEventListener("click",()=>{l.hidden=!l.hidden,f.setAttribute("aria-expanded",String(!l.hidden)),l.hidden||o.focus()}),s.addEventListener("click",()=>{let S=x(),m=a.value,k=r[$o(S).find(([L])=>L===m)?.[1]??"opIs"],h=null,E="";if(!d.hidden){let L=c.value.trim();if(!L)return c.focus();if(S.type==="selection"){let v=S.options.find(R=>String(R.value)===L);h=v?.value??L,E=v?.label??L}else if(S.type==="boolean")h=L==="true",E=h?r.yes:r.no;else if(["integer","float","monetary"].includes(S.type)){if(h=Number(L),!Number.isFinite(h))return c.focus();E=L}else h=L,E=L}e.add({kind:"custom",label:[S.label,k,E].filter(Boolean).join(" "),filter:[{field:o.value,op:m,value:h}]}),l.hidden=!0,f.setAttribute("aria-expanded","false")}),b(),{button:f,form:l}}function Xc(e,t){let n=` ${t.or} `;switch(e.kind){case"field":return`${e.label}: ${e.values.map(r=>r.label).join(n)}`;case"filters":return e.labels.join(n);case"groupBy":return e.labels.join(" > ");case"custom":return e.label}}function pd(e){let{page:t,node:n,doc:r,el:i,labels:o,fill:a,uid:d}=e,s=e.facets,l=V=>{let z=bt(r,V,e.icons);return z?.setAttribute("aria-hidden","true"),z?[z]:[]};function f(V){s=V,E(),P(),e.onChange(s)}let c=d(`${n.id}-suggestions`),x=d(`${n.id}-search-panel`),b=i("input",{class:"fd-search-input",role:"combobox",autocomplete:"off",placeholder:o.search,"aria-label":o.searchLabel,"aria-autocomplete":"list","aria-expanded":"false","aria-controls":c}),y=i("div",{class:"fd-facets"}),S=i("ul",{class:"fd-search-suggestions",role:"listbox",id:c,"aria-label":o.searchLabel,hidden:""}),m=i("button",{type:"button",class:"fd-search-toggle","aria-label":o.searchOptions,"aria-expanded":"false","aria-controls":x}),k=[],h=0;function E(){y.replaceChildren(...s.map((V,z)=>{let $=Xc(V,o),ee=i("button",{type:"button",class:"fd-facet-remove","aria-label":a(o.removeFacet,{label:$})},"\xD7");ee.addEventListener("click",()=>{f(s.filter((J,B)=>B!==z)),b.focus()});let Z=V.kind==="groupBy"?"layers":V.kind==="field"?"":"filter";return i("span",{class:"fd-facet","data-kind":V.kind},...Z?l(Z):[],i("span",{class:"fd-facet-text"},$),ee)}))}function L(){S.replaceChildren(...k.map((V,z)=>{let $=i("li",{role:"option",id:`${c}-${z}`,"aria-selected":String(z===h)},V.label);return $.addEventListener("mousedown",ee=>ee.preventDefault()),$.addEventListener("click",()=>R(V)),$})),S.hidden=k.length===0,b.setAttribute("aria-expanded",String(!S.hidden)),S.hidden?b.removeAttribute("aria-activedescendant"):b.setAttribute("aria-activedescendant",`${c}-${h}`)}function v(){k=[],L()}function R(V){let z={op:V.op,value:V.value,label:V.valueLabel},$=s.findIndex(Z=>Z.kind==="field"&&Z.field===V.field),ee=[...s];if($<0)ee.push({kind:"field",field:V.field,label:V.fieldLabel,values:[z]});else{let Z=ee[$];Z.values.some(B=>B.op===z.op&&JSON.stringify(B.value)===JSON.stringify(z.value))||(ee[$]={...Z,values:[...Z.values,z]})}b.value="",v(),f(ee)}b.addEventListener("input",()=>{k=Or(b.value,t,n,{searchFor:o.searchFor}),h=0,L()}),b.addEventListener("blur",v),b.addEventListener("keydown",V=>{V.isComposing||((V.key==="ArrowDown"||V.key==="ArrowUp")&&k.length?(V.preventDefault(),h=(h+(V.key==="ArrowDown"?1:k.length-1))%k.length,L()):V.key==="Enter"?(V.preventDefault(),k.length&&R(k[h])):V.key==="Backspace"&&!b.value&&s.length?f(s.slice(0,-1)):V.key==="Escape"&&!S.hidden&&(V.preventDefault(),v()))});let w=(V,z,$)=>i("div",{class:"fd-search-heading",id:$},...l(V),z),p=(V,z)=>{let $=s.findIndex(te=>te.kind===V),ee=$<0?[]:V==="filters"?s[$].ids:s[$].fields,Z=ee.includes(z)?ee.filter(te=>te!==z):[...ee,z],J=V==="filters"?{kind:V,ids:Z,labels:Z.map(te=>n.filters?.find(Ee=>Ee.id===te)?.label??te)}:{kind:V,fields:Z,labels:Z.map(te=>t.fields[te]?.label??te)},B=[...s];$<0?B.push(J):Z.length?B[$]=J:B.splice($,1),f(B)},T=(n.filters??[]).map(V=>{let z=i("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-filter":V.id},V.label);return z.addEventListener("click",()=>p("filters",V.id)),z}),C=(n.groupBy??[]).map(V=>{let z=i("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-group":V},t.fields[V].label);return z.addEventListener("click",()=>p("groupBy",V)),z}),W=ud({page:t,el:i,labels:o,add:V=>f([...s,V])}),O=fd({page:t,el:i,labels:o,fill:a,preferences:e.preferences,current:()=>s,apply:f}),H=(V,z,$,...ee)=>i("div",{class:"fd-search-group","data-group-kind":V,role:"group","aria-labelledby":`${x}-${V}`},w(z,$,`${x}-${V}`),...ee),M=i("div",{class:"fd-search-panel",id:x,hidden:""},H("filters","filter",o.filters,...T,W.button,W.form),...C.length?[H("groupBy","layers",o.groupBy,...C)]:[],H("favourites","star",o.favourites,O.list,O.none,O.open,O.form));function P(){let V=s.find($=>$.kind==="filters")?.ids??[],z=s.find($=>$.kind==="groupBy")?.fields??[];for(let $ of T)$.setAttribute("aria-pressed",String(V.includes($.dataset.filter??"")));for(let $ of C)$.setAttribute("aria-pressed",String(z.includes($.dataset.group??"")))}function j(V){M.hidden=!V,m.setAttribute("aria-expanded",String(V)),V&&v()}m.addEventListener("click",()=>j(M.hidden)),M.addEventListener("keydown",V=>{V.key==="Escape"&&(V.preventDefault(),j(!1),m.focus())});let _=i("div",{class:"fd-search"},i("div",{class:"fd-search-field"},...l("search"),y,b,m),S,M),D=V=>{!M.hidden&&!_.contains(V.target)&&j(!1)};return r.addEventListener("pointerdown",D),E(),P(),{element:_,destroy:()=>r.removeEventListener("pointerdown",D)}}var md=new Set(["integer","float","monetary"]),Zc=new Set(["one2many","many2many","binary","image","html","json","properties"]);function gd(e){let{page:t,node:n,form:r,el:i,labels:o,fill:a,locale:d,doc:s}=e;vi(s);let l=n.pageSize??40,f=n.sort??[],c=f,x=0,b=0,y=[],S=new WeakMap,m=()=>[...C.querySelectorAll(".fd-list-row")].map(Y=>S.get(Y)),k=t.data.kind==="record"?t.data.model:"",h=cd(n,e.preferences,t),E=new Set,L=0,v=!1,R=[...new Set(n.columns.flatMap(Y=>{let ne=t.fields[Y];return ne.type==="monetary"&&ne.currencyField?[Y,ne.currencyField]:[Y]}))],w=(Y,ne)=>vt(t.fields[Y],ne[Y],ne,d),p=i("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":o.selectAll}),T=n.columns.map(Y=>{let ne=t.fields[Y],le=i("th",{scope:"col","data-field":Y,class:md.has(ne.type)?"fd-num":void 0});if(Zc.has(ne.type))le.append(ne.label);else{let K=i("button",{type:"button",class:"fd-list-sort"},ne.label);K.addEventListener("click",()=>{let U=c[0]?.field===Y?!c[0].desc:!1;c=[{field:Y,...U?{desc:U}:{}},...f.filter(Q=>Q.field!==Y)],x=0,ke()}),le.append(K)}return le}),C=i("tbody"),W=i("table",{class:"fd-list-table","aria-label":t.title},i("thead",{},i("tr",{},i("th",{class:"fd-list-check",scope:"col"},p),...T)),C),O=i("p",{class:"fd-list-empty",hidden:""},o.noRecords),H=i("button",{type:"button",class:"fd-button fd-button-link"},o.retry),M=i("p",{class:"fd-list-failed",role:"alert",hidden:""},o.loadFailed," ",H);H.addEventListener("click",()=>{ke()});function P(Y,ne=0){let le=w(n.columns[0],Y.values)||String(Y.id),K=i("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":a(o.selectRecord,{name:le})});K.checked=E.has(Y.id),K.addEventListener("change",()=>{K.checked?E.add(Y.id):E.delete(Y.id),z()});let U=i("tr",{class:e.onOpenRecord?"fd-list-row fd-list-openable":"fd-list-row",tabindex:"0","data-id":String(Y.id),"data-level":ne?String(ne):void 0},i("td",{class:"fd-list-check"},K),...n.columns.map(Q=>i("td",{class:md.has(t.fields[Q].type)?"fd-num":void 0},i("bdi",{},w(Q,Y.values)))));return U.addEventListener("click",Q=>{let ce=Q.target.closest("td");if(ce?.classList.contains("fd-list-check")){Q.target===ce&&K.click();return}e.onOpenRecord?.(Y.id)}),U.addEventListener("keydown",Q=>{Q.target===U&&(Q.key==="Enter"?(Q.preventDefault(),e.onOpenRecord?.(Y.id)):Q.key===" "?(Q.preventDefault(),K.click()):(Q.key==="ArrowDown"||Q.key==="ArrowUp")&&(Q.preventDefault(),(Q.key==="ArrowDown"?U.nextElementSibling:U.previousElementSibling)?.focus()))}),S.set(U,Y),U}let j=i("span",{class:"fd-list-count",role:"status"}),_=i("button",{type:"button",class:"fd-button fd-button-link"},o.clearSelection),D=(n.actions??[]).map(Y=>{let ne=i("button",{type:"button",class:`fd-button fd-button-${Y.style??"secondary"}`,"data-node":Y.id},...e.withIcon(Y.icon,Y.label));return ne.addEventListener("click",()=>{e.press(ne,async()=>{let le=await r.runAction(Y.id,{recordIds:[...E]});return await ke(),le})}),ne}),V=i("div",{class:"fd-list-selection",hidden:""},j,...D,_);_.addEventListener("click",()=>{E.clear();for(let Y of C.querySelectorAll(".fd-list-checkbox"))Y.checked=!1;z()}),p.addEventListener("change",()=>{for(let Y of m())p.checked?E.add(Y.id):E.delete(Y.id);for(let Y of C.querySelectorAll(".fd-list-checkbox"))Y.checked=p.checked;z()});function z(){let Y=m(),ne=Y.filter(le=>E.has(le.id)).length;p.checked=Y.length>0&&ne===Y.length,p.indeterminate=ne>0&&ne<Y.length,V.hidden=E.size===0,j.textContent=a(o.selected,{n:E.size});for(let le of C.querySelectorAll(".fd-list-row"))le.setAttribute("aria-selected",String([...E].some(K=>String(K)===le.dataset.id)))}let $=i("span",{class:"fd-pager-text"}),ee=i("button",{type:"button",class:"fd-button fd-pager-button","aria-label":o.previousPage},"\u2039"),Z=i("button",{type:"button",class:"fd-button fd-pager-button","aria-label":o.nextPage},"\u203A"),J=i("div",{class:"fd-pager",role:"group"},$,ee,Z);ee.addEventListener("click",()=>{x=Math.max(0,x-l),ke()}),Z.addEventListener("click",()=>{x+=l,ke()});function B(){J.hidden=b===0,$.textContent=a(o.range,{from:x+1,to:Math.min(x+y.length,b),total:b}),ee.disabled=x===0,Z.disabled=x+l>=b}function te(){for(let Y of T){let ne=c[0]?.field===Y.dataset.field?c[0]:null;ne?Y.setAttribute("aria-sort",ne.desc?"descending":"ascending"):Y.removeAttribute("aria-sort")}}function Ee(){let Y=new Set(m().map(ne=>ne.id));for(let ne of[...E])Y.has(ne)||E.delete(ne);z()}let he=Y=>({page:t,el:i,labels:o,fill:a,dataSource:Y,model:k,fields:R,columns:n.columns.length+1,pageSize:l,sort:()=>c,recordRow:P,changed:Ee});async function ke(){let Y=++L;te(),W.setAttribute("aria-busy","true");let ne=[];try{let le=[...e.fixedFilter??[],...Vr(h,n)],K=Pr(h),U=e.dataSource;if(K.length&&U?.groups&&U.list){let Q=await U.groups({model:k,field:K[0],filter:le});if(Y!==L||v)return;y=[],b=0,ne=Q.map(ce=>To(he(U),ce,0,le,K))}else{let Q=U?.list?await U.list({model:k,fields:R,filter:le,sort:c,offset:x,limit:l}):{records:[],total:0};if(Y!==L||v)return;if(!Q.records.length&&Q.total>0&&x>0)return x=Math.floor((Q.total-1)/l)*l,ke();y=Q.records,b=Q.total,ne=y.map(ce=>P(ce))}M.hidden=!0}catch{if(Y!==L||v)return;y=[],b=0,M.hidden=!1}C.replaceChildren(...ne),O.hidden=ne.length>0||!M.hidden,W.removeAttribute("aria-busy"),B(),Ee()}let se=pd({page:t,node:n,doc:s,el:i,labels:o,fill:a,uid:e.uid,icons:e.icons,preferences:e.preferences,facets:h,onChange(Y){h=Y,x=0,ke()}}),re=i("div",{class:"fd-list","data-node":n.id},i("div",{class:"fd-list-bar"},se.element,J),V,i("div",{class:"fd-list-scroll"},W),O,M);return ke(),{element:re,reload:ke,destroy(){v=!0,se.destroy()}}}function xi(e,t){let n=e.style??"card",r=n==="plain"&&!e.title,i=dn(e.columns),o=e.colspan??1,a=r&&t.columns>1?o===1&&i>1?"shared":"tracks":void 0;return{style:n,arrangement:r,at:a,inner:{columns:a==="tracks"?Math.min(o,t.columns):i,onPage:t.onPage&&(n==="plain"||n==="line"),labels:e.labels??t.labels}}}var Qc=new Set(["one2many","matrix"]);function gr(e,t,n){if(t==="boolean"&&e.widget==="tick")return"after";let r=e.labels??n;return r==="beside"&&Qc.has(t)?"above":r}function _e(e,t){e.hidden!==t&&(e.hidden=t)}function xt(e,t){e.textContent!==t&&(e.textContent=t)}function St(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}async function hd(e,t){let{options:n}=e,r=n.onOpen?.(t);if(r)return r;let i=await mr(n,t.version===void 0?{id:t.page}:{id:t.page,version:t.version});if(!i)throw new Error(e.missing(t.page));let o=n.page.look,a={...n,page:o&&!i.look?{...i,look:o}:i,form:void 0,recordId:t.recordId??null,values:t.values,listFilter:t.filter,drafts:void 0,autosave:void 0,readonly:void 0,editSwitch:void 0,saveStatus:void 0,records:void 0,breadcrumbs:void 0},d=t.title??e.title(i),s={...a,host:{...n.host,say:e.say,post:e.post}},l=t.as==="page"?await ef(e,{...a,host:{...n.host,post:e.post}}):t.as==="panel"?await Ro({...s,title:d,side:t.side}):await Bn({...s,title:d,size:i.layout.type==="sheet"?"large":"medium"}),f=Ao(i),c=f?l.values[f]:void 0;return{...l,...typeof c=="string"&&c?{label:c}:{}}}function ef(e,t){let{place:n,root:r}=e,i=n.ownerDocument,o=i.activeElement;return new Promise(a=>{let d=!1,s=b=>{if(d)return;d=!0;let y=f.form.getState();f.destroy(),r.hidden=!1,o?.isConnected&&o.focus(),a({saved:b,recordId:y.recordId??null,values:y.values})};r.hidden=!0;let l=e.options.breadcrumbs?[...e.options.breadcrumbs,{label:e.name(),open:()=>s(!1)}]:void 0,f=pr(n,{...t,breadcrumbs:l,host:{...t.host,close:()=>s(!1)}}),c=i.createElement("button");c.type="button",c.className="fd-button fd-button-link fd-back",c.textContent=e.back,c.addEventListener("click",()=>s(!1)),f.element.querySelector(".fd-breadcrumbs")||f.element.prepend(c);let x=()=>{f.form.settled().then(()=>s(!0))};f.on("save",x),f.on("send",x),(bi(f.element)??f.element.querySelector(ur)??c).focus()})}function bd(e,t,n){let r=t("div",{class:"fd-says",role:"status","aria-live":"polite"});return e.append(r),(i,o)=>{let a=t("button",{type:"button",class:"fd-alert-close","aria-label":n},"\xD7"),d=t("div",{class:"fd-say","data-tone":o},t("span",{},i),a);d.style.setProperty("--fd-tone",`var(--fd-${o==="danger"?"error":o})`);let s,l=()=>clearTimeout(s),f=()=>{l(),d.remove()},c=()=>{l(),s=setTimeout(f,o==="warning"||o==="danger"?1e4:6e3)};for(a.addEventListener("click",f),d.addEventListener("mouseenter",l),d.addEventListener("focusin",l),d.addEventListener("mouseleave",c),d.addEventListener("focusout",c),r.append(d);r.children.length>4;)r.firstElementChild?.remove();tf(r,t,i),c()}}function tf(e,t,n){let r=[...e.ownerDocument.querySelectorAll('[aria-modal="true"]')].filter(a=>!a.contains(e)),i=r[r.length-1];if(!i)return;let o=i.querySelector(":scope > .fd-says-echo");o||(o=t("div",{class:"fd-says-echo fd-sr-only",role:"status","aria-live":"polite"}),i.append(o)),o.textContent=n}var qn=64;function yd(e,t){let n=()=>e.closest("[dir]")?.getAttribute("dir")==="rtl",r=x=>t("button",{type:"button",class:`fd-tabs-scroll fd-tabs-${x}`,tabindex:"-1","aria-hidden":"true",hidden:""}),i=r("before"),o=r("after"),a=t("div",{class:"fd-tabbar"},i,e,o),d=x=>e.scrollBy({left:x*(n()?-1:1)*Math.max(e.clientWidth-2*qn,qn),behavior:"smooth"});i.addEventListener("click",()=>d(-1)),o.addEventListener("click",()=>d(1));function s(){let x=Math.abs(e.scrollLeft),b=x>1,y=x+e.clientWidth<e.scrollWidth-1;_e(i,!b),_e(o,!y);let S=[b&&"start",y&&"end"].filter(Boolean).join(" ");St(a,"data-more",S||null)}function l(x){if(!e.clientWidth||e.scrollWidth<=e.clientWidth)return;let b=e.getBoundingClientRect(),y=x.getBoundingClientRect();y.left<b.left+qn?e.scrollLeft+=y.left-b.left-qn:y.right>b.right-qn&&(e.scrollLeft+=y.right-b.right+qn),s()}e.addEventListener("scroll",s,{passive:!0});let f=e.ownerDocument.defaultView,c=f&&"ResizeObserver"in f?new f.ResizeObserver(()=>s()):null;return c?.observe(e),{element:a,measure:s,reveal:l,destroy:()=>c?.disconnect()}}function Mo(e,t,n,r){let i=$n(n);if(!i.some(d=>d.field))return{nodes:[n],update:()=>{}};let o=[];return{nodes:i.map(d=>{if(!d.field)return d.text;let s=e.createElement("bdi");return s.className="fd-value",s.dataset.field=d.field,o.push({field:d.field,span:s}),s}),update(d){for(let{field:s,span:l}of o){let f=t[s],c=f?vt(f,d[s],d,r):"";l.textContent!==c&&(l.textContent=c)}}}}var nf={gear:'<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/>'},hr=(e,t)=>e!=null&&t!=null&&String(e)===String(t);function vd(e){let{el:t,labels:n,toolbar:r}=e,i=r?.menu??[],o=r?.breadcrumbs===!1?void 0:e.breadcrumbs,a=r?.pager===!1?void 0:e.records;if(!i.length&&!o?.length&&!a)return null;let d=[],s=[],l=t("div",{class:"fd-record-bar"});if(o?.length){let f=t("span",{class:"fd-crumb-current","aria-current":"page"}),c=t("ol",{},...o.map(x=>{let b=x.href!==void 0?t("a",{class:"fd-crumb",href:x.href},x.label):t("button",{type:"button",class:"fd-crumb"},x.label);return x.open&&b.addEventListener("click",y=>{y.preventDefault(),x.open?.()}),t("li",{},b)}),t("li",{},f));l.append(t("nav",{class:"fd-breadcrumbs","aria-label":n.breadcrumbs},c)),d.push(()=>xt(f,e.name()||n.newRecord))}return i.length&&l.append(rf(e,i,d,s)),a&&l.append(of(e,a,o,d,s)),{element:l,update:()=>{for(let f of d)f()},destroy:()=>{for(let f of s)f()}}}function rf(e,t,n,r){let{doc:i,el:o,form:a,labels:d}=e,s=e.uid("record-menu"),l=o("button",{type:"button",class:"fd-button fd-record-gear",id:`${s}-button`,"aria-haspopup":"menu","aria-expanded":"false","aria-controls":s,title:d.actions}),f=bt(i,"gear",nf);f&&l.append(f),l.append(o("span",{class:"fd-record-gear-words"},d.actions));let c=o("div",{class:"fd-record-menu",role:"menu",id:s,"aria-labelledby":l.id,hidden:""}),x=t.map(w=>{let p=w.label??(w.builtin?d[w.builtin]:w.id),T=o("button",{type:"button",role:"menuitem",tabindex:"-1",class:"fd-record-menu-item","data-node":w.id},...e.withIcon(w.icon,p));return w.builtin==="delete"&&T.classList.add("fd-record-menu-danger"),T.addEventListener("click",()=>{R(!0),e.press(l,()=>a.runAction(w.id))}),{item:w,button:T}}),b=x.filter(w=>w.item.group==="print"),y=x.filter(w=>w.item.group!=="print"),S=o("div",{class:"fd-record-menu-heading",role:"presentation"},d.print),m=o("div",{role:"group","aria-label":d.print},S,...b.map(w=>w.button)),k=o("div",{class:"fd-record-menu-rule",role:"separator"});c.append(...b.length?[m]:[],...b.length&&y.length?[k]:[],...y.map(w=>w.button));let h=o("div",{class:"fd-record-actions"},l,c),E=()=>x.filter(w=>!w.button.hidden).map(w=>w.button),L=w=>{h.contains(w.target)||R(!1)};function v(w){if(!c.hidden)return;c.hidden=!1,c.removeAttribute("data-end");let p=c.getBoundingClientRect();(p.right>i.documentElement.clientWidth-4||p.left<4)&&c.setAttribute("data-end",""),l.setAttribute("aria-expanded","true"),i.addEventListener("pointerdown",L,!0);let T=E();(w==="first"?T[0]:T[T.length-1])?.focus()}function R(w){c.hidden||(c.hidden=!0,l.setAttribute("aria-expanded","false"),i.removeEventListener("pointerdown",L,!0),w&&l.focus())}return r.push(()=>i.removeEventListener("pointerdown",L,!0)),l.addEventListener("click",()=>c.hidden?v("first"):R(!1)),l.addEventListener("keydown",w=>{(w.key==="ArrowDown"||w.key==="ArrowUp")&&(w.preventDefault(),v(w.key==="ArrowDown"?"first":"last"))}),c.addEventListener("keydown",w=>{let p=E(),T=p.indexOf(i.activeElement),C={ArrowDown:T+1,ArrowUp:T-1,Home:0,End:p.length-1}[w.key];C!==void 0?(w.preventDefault(),p[(C+p.length)%p.length]?.focus()):w.key==="Escape"?(w.preventDefault(),w.stopPropagation(),R(!0)):w.key==="Tab"&&R(!1)}),n.push(()=>{for(let{item:w,button:p}of x)_e(p,a.node(w.id).invisible);_e(m,!b.some(w=>!w.button.hidden)),_e(k,m.hidden||!y.some(w=>!w.button.hidden)),_e(h,!x.some(w=>!w.button.hidden))}),h}function of(e,t,n,r,i){let{el:o,form:a,labels:d}=e,s=Array.isArray(t)?[...t]:null,l=Array.isArray(t)?null:t,f=s?s.length:l.total,c=s?-1:l.at,x=s?null:a.getState().recordId,b=!1,y=()=>{let v=a.getState().recordId;return s?s.findIndex(R=>hr(R,v)):hr(x,v)?c:-1},S=o("span",{class:"fd-record-pager-text",dir:"ltr"}),m=o("button",{type:"button",class:"fd-button fd-record-step","aria-label":d.previousRecord},o("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u2039")),k=o("button",{type:"button",class:"fd-button fd-record-step","aria-label":d.nextRecord},o("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u203A"));Ln(m,"p",d.previousRecord),Ln(k,"n",d.nextRecord);let h=o("div",{class:"fd-record-pager",role:"group","aria-label":d.records},S,m,k),E=async v=>s?s[v]:l.id(v);async function L(v){let R=y();if(!(b||R===-1||f<2)){b=!0;try{let w=(R+v+f)%f;if(!await e.leave())return;let p=await E(w);c=w,x=p,await a.openRecord(p)}finally{b=!1}}}return m.addEventListener("click",()=>{L(-1)}),k.addEventListener("click",()=>{L(1)}),i.push(a.on("duplicate",({from:v,recordId:R})=>{if(!s)return;let w=s.findIndex(p=>hr(p,v));s.splice(w+1,0,R),f=s.length,e.render()}),a.on("delete",({recordId:v})=>{let R=s?s.findIndex(T=>hr(T,v)):hr(x,v)?c:-1;if(R===-1)return;if(s&&s.splice(R,1),f=s?s.length:f-1,f<1)return void n?.[n.length-1]?.open?.();c=Math.min(R,f-1);let w=T=>{x=T,a.openRecord(T)},p=s?s[c]:l.id(c);p instanceof Promise?p.then(w):w(p)})),r.push(()=>{let v=y();_e(h,v===-1),xt(S,e.fill(d.recordAt,{n:v+1,total:f}));let R=f<2;St(m,"aria-disabled",R?"true":null),St(k,"aria-disabled",R?"true":null)}),h}var af=e=>/^image\//.test(e.type)||/pdf/i.test(e.type)||/\.pdf$/i.test(e.name),sf=e=>(Array.isArray(e)?e:e?[e]:[]).filter(t=>t&&typeof t=="object"&&"name"in t);function xd(e){let{el:t,form:n,labels:r,node:i}=e,o=t("span",{class:"fd-attachment-name",dir:"auto"}),a=t("span",{class:"fd-attachment-count",dir:"ltr"}),d=t("button",{type:"button",class:"fd-button fd-record-step","aria-label":r.previousAttachment},t("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u2039")),s=t("button",{type:"button",class:"fd-button fd-record-step","aria-label":r.nextAttachment},t("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u203A")),l=t("a",{class:"fd-button fd-button-link fd-attachment-open",target:"_blank",rel:"noopener"},r.openAttachment),f=t("div",{class:"fd-attachment-body"}),c=t("aside",{class:"fd-attachment-preview",hidden:""},t("div",{class:"fd-attachment-head"},o,a,d,s,l),f),x=[],b=0,y=null,S,m=0,k,h;function E(){y?.free(),y=null;let p=x[b];if(!p)return f.replaceChildren();let T=Zi(e.doc,p);y=T,f.replaceChildren(...T?[T.element]:[]),xt(o,p.name),xt(a,x.length>1?e.fill(r.recordAt,{n:b+1,total:x.length}):""),_e(d,x.length<2),_e(s,x.length<2),St(l,"href",T?.url??null),St(c,"aria-label",e.fill(r.attachment,{name:p.name}))}let L=p=>{b=(b+p+x.length)%x.length,E()};d.addEventListener("click",()=>L(-1)),s.addEventListener("click",()=>L(1));let v=p=>{x=p.filter(af),b=0,E(),R()},R=()=>_e(c,n.node("#preview").invisible||!x.length);function w(p){let T=e.dataSource,C=++m;if(S=p.recordId,p.recordId==null||!T?.attachments||e.page.data.kind!=="record")return v([]);T.attachments({model:e.page.data.model,id:p.recordId,fields:e.page.fields}).then(W=>C===m&&v(W),()=>C===m&&v([]))}return{element:c,update(p){if(i.field){let T=p.values[i.field];T!==h&&(h=T,v(sf(T)))}else p.status!=="loading"&&p.status!=="idle"&&(p.recordId!==S||p.status==="saved"&&k!=="saved")&&w(p);k=p.status,R()},destroy:()=>y?.free()}}var df='.fd-record-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-height:46px;box-sizing:border-box;padding:6px 16px;background:var(--fd-surface);border-block-end:1px solid var(--fd-border)}.fd-form>.fd-content>.fd-record-bar{margin:-4px 0 12px;border-radius:var(--fd-radius);border:1px solid var(--fd-border)}.fd-breadcrumbs{min-width:0}.fd-breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;font-size:17px;line-height:1.3}.fd-breadcrumbs li{display:flex;align-items:center;min-width:0}.fd-breadcrumbs li+li:before{content:"/";color:var(--fd-muted);padding-inline:8px}.fd-crumb{all:unset;cursor:pointer;color:var(--fd-accent);border-radius:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-crumb:hover{text-decoration:underline}.fd-crumb:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-crumb-current{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-record-actions{position:relative}.fd-record-actions[hidden]{display:none}.fd-record-gear{display:inline-flex;align-items:center;gap:6px}.fd-record-gear svg{width:16px;height:16px;flex:none}.fd-record-menu{position:absolute;z-index:40;inset-block-start:calc(100% + 4px);inset-inline-start:0;display:grid;min-width:220px;max-width:min(320px,90vw);padding:4px;box-sizing:border-box;background:var(--fd-surface);color:var(--fd-text);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),4px);box-shadow:0 8px 24px #00000029}.fd-record-menu[data-end]{inset-inline-start:auto;inset-inline-end:0}.fd-record-menu[hidden],.fd-record-menu [hidden]{display:none}.fd-record-menu [role=group]{display:grid}.fd-record-menu-heading{padding:6px 12px 2px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--fd-muted)}.fd-record-menu-rule{margin:4px 0;border-block-start:1px solid var(--fd-border)}.fd-record-menu-item{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:8px;min-height:34px;padding:6px 12px;border-radius:3px;cursor:pointer;color:var(--fd-text)}.fd-record-menu-item svg{width:16px;height:16px;flex:none;color:var(--fd-muted)}.fd-record-menu-item:hover,.fd-record-menu-item:focus{background:var(--fd-accent-soft)}.fd-record-menu-item:focus-visible{outline:2px solid var(--fd-focus);outline-offset:-2px}.fd-record-menu-danger{color:var(--fd-error)}.fd-record-pager{display:flex;align-items:center;gap:4px;margin-inline-start:auto}.fd-record-pager[hidden]{display:none}.fd-record-pager-text{padding-inline-end:6px;font-variant-numeric:tabular-nums;color:var(--fd-muted);white-space:nowrap}.fd-record-step{min-width:34px;padding-inline:8px;font-size:18px;line-height:1}.fd-record-step[aria-disabled=true]{opacity:.5;cursor:default}@container fd-form (max-width: 520px){.fd-record-bar{padding-inline:12px;gap:6px 8px}.fd-record-gear-words{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-breadcrumbs ol{flex-wrap:nowrap;font-size:15px}.fd-breadcrumbs li:not(:nth-last-child(-n+2)){display:none}.fd-breadcrumbs li:nth-last-child(2):before{content:"\u2039";padding-inline:0 6px;font-size:20px;color:var(--fd-accent)}}.fd-attachment-preview{display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);overflow:hidden}.fd-attachment-preview[hidden]{display:none}.fd-attachment-head{display:flex;align-items:center;gap:6px;padding:6px 8px 6px 12px;padding-inline:12px 8px;border-block-end:1px solid var(--fd-border);min-width:0}.fd-attachment-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.fd-attachment-count{color:var(--fd-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.fd-attachment-head [hidden]{display:none}.fd-attachment-body{display:grid;min-height:0;background:var(--fd-page)}.fd-attachment-body>iframe{width:100%;height:100%;min-height:70vh;border:0;background:#fff}.fd-attachment-body>img{display:block;max-width:100%;max-height:80vh;margin:auto;object-fit:contain}.fd-sheet-layout.fd-has-preview:has(>.fd-attachment-preview:not([hidden])){max-width:none;grid-template-columns:minmax(0,3fr) minmax(320px,2fr);grid-template-rows:auto 1fr}.fd-sheet-layout.fd-has-preview:has(>.fd-attachment-preview:not([hidden]))>:is(.fd-card,.fd-side){grid-column:1}.fd-sheet-layout.fd-has-preview>.fd-attachment-preview{grid-column:2;grid-row:1 / span 2;position:sticky;top:8px;height:calc(100vh - 16px);max-height:1200px}@container (max-width: 1000px){.fd-sheet-layout.fd-has-preview:has(>.fd-attachment-preview:not([hidden])){grid-template-columns:minmax(0,1fr)}.fd-sheet-layout.fd-has-preview>.fd-attachment-preview{grid-column:1;grid-row:auto;position:static;height:auto}.fd-attachment-body>iframe{min-height:60vh}}@container (max-width: 1000px){.fd-sheet-layout.fd-has-side[data-side-beside=always]:not(:has(>.fd-attachment-preview:not([hidden]))){grid-template-columns:minmax(0,1fr) minmax(240px,300px)}}@container (max-width: 600px){.fd-sheet-layout.fd-has-side[data-side-beside=always]:not(:has(>.fd-attachment-preview:not([hidden]))){grid-template-columns:minmax(0,1fr)}}';function wd(e){if(e.getElementById("fd-record-styles"))return;let t=e.createElement("style");t.id="fd-record-styles",t.textContent=df,(e.head??e.documentElement).append(t)}var lf=0;function pr(e,t){let n=e.ownerDocument,r=Zn(t.page,t.parent?{parent:t.parent.fields}:{});if(!r.ok)throw new Error(`This page cannot be shown:
|
|
5
|
+
${r.issues.map(N=>` ${N.path}: ${N.message}`).join(`
|
|
6
|
+
`)}`);let i=t.locale??r.page.language,o=i?Qn(r.page,i):r.page,a=t.translate?Cn(o,t.translate):o,d=N=>{let X=i?Qn(N,i):N;return t.translate?Cn(X,t.translate):X},s=cr(i),l=t.preferences??wo(),f=dd(t,(N,X)=>b.say(N,X)),c=!t.form,x={...Ct[s],...t.labels},b={open:N=>hd({options:t,place:e,root:C,title:X=>d(X).title||X.id,back:x.back,missing:X=>w(x.pageMissing,{page:X}),say:(X,de)=>b.say(X,de),post:X=>y.post(X),name:()=>Ut()||x.newRecord},N),say:(N,X)=>O(N,X),ask:N=>W(N),show:N=>{if(!H.get(N)?.())throw new Error(`No tab "${N}" can be shown here`)},openUrl:(N,X)=>X?n.defaultView?.open(N,"_blank","noopener,noreferrer"):n.defaultView?.location.assign(N),...t.host},y=t.form??jr({...t,page:a,host:b,messages:t.messages??wt[s]}),S=Ke[s],m=t.dir??(i&&$r(i)?"rtl":void 0),k=`fd${++lf}`,h=[],E=h,L=[],v=N=>`${k}-${N.replace(/[^A-Za-z0-9_-]/g,"_")}`,R=v,w=(N,X)=>N.replace(/\{(\w+)\}/g,(de,ge)=>String(X[ge]??""));xo(n),wd(n);function p(N,X={},...de){let ge=n.createElement(N);for(let[Le,Re]of Object.entries(X))Re!==void 0&&ge.setAttribute(Le,Re);return ge.append(...de),ge}function T(N,X){let de=bt(n,N,t.icons),ge=p("bdi",{},X);return de?[de,ge]:[ge]}let C=p("form",{class:"fd-form",novalidate:"","data-fd-skin":t.skin??"underline",dir:m,lang:i,"data-max-width":a.maxWidth});Sn(C,a.look);let W=t.confirm??jt,O=bd(C,p,x.dismiss),H=new Map,M=new Map;async function P(N,X){if(!N.hasAttribute("aria-busy")){N.setAttribute("aria-busy","true"),N.setAttribute("aria-disabled","true");try{let{reason:de}=await X();(de==="check"||de==="save")&&(y.getState().saveProblem||$e(U(y.getState())),be())}finally{N.removeAttribute("aria-busy"),N.removeAttribute("aria-disabled")}}}let j=[],_=new Map,D=()=>an(y.getState()),V=!1,z=!1;function $(N,X){X&&N.style.setProperty("--fd-span",String(X))}let ee=N=>({columns:1,onPage:N,labels:a.look?.labels});function Z(N){let{form:X,page:de}=N,ge=u=>v(N.prefix+u),Le=u=>E.push(N.root?u:()=>u(X.getState()));function Re(u,F){let A=de.fields[u.field],I=ge(u.id),q=gr(u,A.type,F),G=p("div",{class:"fd-field","data-node":u.id,"data-field":u.field,"data-path":N.path+u.field,"data-type":A.type,"data-labels":q,"data-focus":u.focus&&N.root?"":void 0});u.colspan&&G.style.setProperty("--fd-span",String(u.colspan));let ae=u.label??A.label,ie=p("label",{class:"fd-label",id:`${I}-label`,for:I},ae),xe=t.showValid&&!cf.has(A.type)?bt(n,"check"):null;xe&&(xe.classList.add("fd-valid-mark"),ie.append(xe));let fe=$t({form:X,name:u.field,field:A,node:u,id:I,document:n,labels:S,preferences:l,locale:s,dialogs:f},t.widgets);u.focus&&N.root&&j.push({wrapper:G,focus:()=>fe.focus()});let Ze=fe.element.matches(kd)?fe.element:fe.element.querySelector(kd);q==="hidden"&&!u.placeholder&&Ze?.setAttribute("placeholder",ae);let Pe=Ze?.getAttribute("placeholder")??null,ct=u.placeholderWhen?.length?Ze:null;["INPUT","SELECT","TEXTAREA"].includes(fe.element.tagName)||((fe.element.getAttribute("role")?fe.element:fe.element.querySelector(`[id="${I}"][role]`))?.setAttribute("aria-labelledby",ie.id),ie.addEventListener("click",()=>fe.focus()));let Ie=u.help??A.help,ot=u.helpShown??de.look?.helpShown??"below",ht=Ie&&ot!=="tooltip"?p("div",{class:"fd-help",id:`${I}-help`},Ie):null,et=Ie&&ot!=="below"?it(`${I}-tip`,Ie,w(x.helpFor,{label:ae})):null;et&&q==="hidden"?fe.element.after(et.element):et&&ie.append(et.element);let He=p("div",{class:"fd-error",id:`${I}-error`,hidden:""}),Rt=p("div",{class:"fd-warning",id:`${I}-warning`,role:"status",hidden:""});G.append(...q==="after"?[fe.element,ie]:[ie,fe.element],...ht?[ht]:[],He,Rt);let Mt=de.look?.readonlyShown==="text"&&ko(A,u)?So({document:n,field:A,node:u,id:I,locale:s,labels:S,dialogs:f}):null;Mt&&fe.element.after(Mt.element),fe.destroy&&L.push(()=>fe.destroy?.());let Fn=!1,hn="";G.addEventListener("focusin",()=>Fn=!0),G.addEventListener("focusout",Ft=>{G.contains(Ft.relatedTarget)||(Fn=!1,queueMicrotask(()=>No(X.getState())))});let Ld=u.tones!==void 0||u.bold!==void 0,No=Ft=>{let Gn=X.node(u.id);if(_e(G,Gn.invisible),G.classList.toggle("fd-required",Gn.required),Ld){let sn=X.fieldTone(u.id);St(G,"data-tone",sn.tone),G.classList.toggle("fd-value-bold",sn.bold)}ct&&St(ct,"placeholder",X.placeholder(u.id)??Pe);let An=Ft.errors[u.field];_e(He,!An),xt(He,An??"");let Co=Ft.warnings[u.field]??"";(!Fn||!Co)&&(hn=Co);let Ri=[An?"":hn,Ft.warning&&Ft.warningField===u.field?Ft.warning:""].filter(Boolean).join(" ");if(_e(Rt,!Ri),xt(Rt,Ri),xe){let sn=Ft.values[u.field],Ed=sn!=null&&sn!==""&&!(Array.isArray(sn)&&!sn.length),Oo=!Gn.readonly&&!An&&Ed&&Ft.dirty.includes(u.field)&&X.problem(u.field)===null;G.classList.toggle("fd-valid",Oo),xe.toggleAttribute("hidden",!Oo)}let Jn=Gn.readonly||se||N.locked();Mt&&(_e(fe.element,Jn),_e(Mt.element,!Jn),St(G,"data-read-text",Jn?"":null),Jn&&Mt.update(Ft.values[u.field],Ft.values)),fe.update({value:Ft.values[u.field],values:Ft.values,readonly:Jn,required:Gn.required,invalid:!!An,describedBy:[ht?.id??et?.bubble.id,An?He.id:void 0,Ri?Rt.id:void 0].filter(Boolean).join(" ")||void 0})};return Le(No),G}function it(u,F,A){let I=p("span",{class:"fd-help-bubble",role:"tooltip",id:u,hidden:""},F),q=p("button",{type:"button",class:"fd-help-tip","aria-label":A,"aria-expanded":"false","aria-controls":u},"?"),G=!1,ae=ie=>{I.hidden=!ie,q.setAttribute("aria-expanded",String(ie))};return q.addEventListener("mouseenter",()=>ae(!0)),q.addEventListener("mouseleave",()=>ae(G)),q.addEventListener("focus",()=>ae(!0)),q.addEventListener("blur",()=>(G=!1,ae(!1))),q.addEventListener("click",ie=>{ie.preventDefault(),G=!G,ae(G)}),q.addEventListener("keydown",ie=>{ie.key!=="Escape"||I.hidden||(ie.stopPropagation(),G=!1,ae(!1))}),{element:p("span",{class:"fd-help-tip-wrap"},q,I),bubble:I}}function qe(u,F){Le(()=>_e(u,X.node(F).invisible))}function pt(u){let F=p("button",{type:"button",class:`fd-button fd-button-${u.style??"secondary"}`,"data-node":u.id},...T(u.icon,u.label));return u.hotkey&&Ln(F,u.hotkey,u.label),$(F,u.colspan),F.addEventListener("click",()=>{P(F,()=>X.runAction(u.id))}),qe(F,u.id),Ue(u,F)}function yt(u,F=!1){let A=u.style??"paragraph",I=Mo(n,de.fields,u.text,s),q=F?p("span",{class:`fd-oneline-words fd-text-${A}`,"data-node":u.id},...I.nodes):A==="alert"?p("div",{class:`fd-alert fd-text-alert fd-tone-${u.tone??"info"}`,role:"status","data-node":u.id},p("span",{class:"fd-alert-message"},...I.nodes)):p(A==="heading"?"h3":"p",{class:`fd-text-${A}`,"data-node":u.id},...I.nodes);return $(q,u.colspan),qe(q,u.id),Le(G=>I.update(G.values)),q}function Me(u){let F=p("div",{class:"fd-slot","data-slot":u.name,"data-node":u.id}),A=t.slots?.[u.name]?.(F,{form:X,name:u.name});return A&&L.push(A),qe(F,u.id),F}function Qe(u,F,A){let I=p("div",{class:"fd-grid"});if(F!==null&&(I.style.setProperty("--fd-columns",String(dn(F))),dn(F)===12&&I.setAttribute("data-twelfths",""),typeof F=="object"))for(let q of["medium","narrow"]){let G=F[q];G!==void 0&&(I.setAttribute(`data-columns-${q}`,String(G)),I.style.setProperty(`--fd-columns-${q}`,String(G)))}return I.append(...u.map(q=>Ve(q,A))),I}function Ce(u,F){let[A]=u.children;if(!F.arrangement||F.at==="tracks"||dn(u.columns)!==12||u.children.length<2||A?.type!=="field"||u.children.reduce((G,ae)=>G+(ae.colspan??1),0)>12)return null;let I=de.fields[A.field]?.type,q=I?gr(A,I,F.inner.labels):"hidden";return q===void 0?"skin":q==="beside"?"beside":null}function Xe(u,F){let A=p("div",{class:"fd-field fd-oneline","data-node":u.id,"data-style":"inline","data-labels":F.labels});$(A,u.colspan);let I=p("div",{class:"fd-oneline-row",role:"group"},...u.children.map(q=>Ve(q,{columns:1,onPage:!1,inline:!0})));if(u.title){let q=p("span",{class:"fd-label",id:ge(`${u.id}-label`)},u.title);I.setAttribute("aria-labelledby",q.id),A.append(q)}return A.append(I),qe(A,u.id),A}function pe(u,F){if(u.style==="inline")return Xe(u,F);let A=xi(u,F),I=p(A.arrangement?"div":"fieldset",{class:"fd-section","data-node":u.id,"data-style":A.style,"data-place":A.at,"data-on-page":A.style==="card"&&F.onPage?"":void 0});$(I,u.colspan);let q=Ce(u,A);q&&I.setAttribute("data-row",q),u.labelWidth&&I.style.setProperty("--fd-label-width",`${u.labelWidth}px`);let G=u.description?p("p",{class:"fd-section-description"},u.description):null,ae=Qe(u.children,A.at==="tracks"?null:u.columns,A.inner);if(u.title&&u.collapsible){ae.id=ge(`${u.id}-content`);let ie=p("button",{type:"button",class:"fd-section-toggle","aria-controls":ae.id},p("span",{class:"fd-section-chevron","aria-hidden":"true"}),...T(u.icon,u.title)),xe=u.collapsed!==!0,fe=Ze=>{xe=Ze,ie.setAttribute("aria-expanded",String(xe)),ae.hidden=!xe,G&&(G.hidden=!xe),I.classList.toggle("fd-section-folded",!xe)};ie.addEventListener("click",()=>fe(!xe)),_.set(I,()=>fe(!0)),fe(xe),I.append(p("legend",{class:"fd-section-title"},ie))}else u.title&&I.append(p("legend",{class:"fd-section-title"},...T(u.icon,u.title)));return G&&I.append(G),I.append(ae),qe(I,u.id),I}function De(u,F){let A=p("div",{class:"fd-tabs","data-node":u.id});$(A,u.colspan);let I=p("div",{class:"fd-tablist",role:"tablist"}),q=null,G=u.children[0].id,ae=Pe=>{q=G=Pe,D(),X.shown(Pe)},ie=u.children.map(Pe=>{let ct=ge(`${Pe.id}-tab`),Ie=ge(`${Pe.id}-panel`),ot=p("button",{type:"button",class:"fd-tab",role:"tab",id:ct,"aria-controls":Ie,"data-node":Pe.id},...T(Pe.icon,Pe.label)),ht=p("div",{class:"fd-tabpanel",role:"tabpanel",id:Ie,"aria-labelledby":ct}),et=[],He=!1,Rt=()=>{if(He)return;He=!0;let hn=E;E=et;try{ht.append(Qe(Pe.children,1,{columns:1,onPage:F.onPage,labels:F.labels}))}finally{E=hn}},Mt=()=>!X.node(Pe.id).invisible&&(ae(Pe.id),!0);ot.addEventListener("click",()=>ae(Pe.id)),H.has(Pe.id)||H.set(Pe.id,Mt);let Fn=ue(Pe.children);if(N.root)for(let hn of Fn)M.has(hn)||M.set(hn,Mt);return I.append(ot),{tab:Pe,button:ot,panel:ht,own:et,build:Rt,fields:Fn}});I.addEventListener("keydown",Pe=>{let ct=ie.filter(He=>!He.button.hidden),Ie=ct.findIndex(He=>He.tab.id===G),ot={ArrowRight:1,ArrowLeft:-1,Home:-Ie,End:ct.length-1-Ie}[Pe.key];if(ot===void 0||Ie===-1)return;Pe.preventDefault();let ht=C.getAttribute("dir")==="rtl"&&(Pe.key==="ArrowRight"||Pe.key==="ArrowLeft"),et=ct[(Ie+(ht?-ot:ot)+ct.length)%ct.length];ae(et.tab.id),et.button.focus()});let xe=yd(I,p);L.push(xe.destroy),A.append(xe.element,...ie.map(Pe=>Pe.panel));let fe="",Ze="";return Le(Pe=>{let ct=X.node(u.id).invisible;_e(A,ct);let Ie=ie.filter(He=>!X.node(He.tab.id).invisible);q!==null&&Ie.some(He=>He.tab.id===q)?G=q:Ie.length&&(G=Ie[0].tab.id);let ht=X.getState().errors;for(let He of ie){let Rt=He.tab.id===G;if(_e(He.button,!Ie.includes(He)),St(He.button,"aria-selected",String(Rt)),He.button.tabIndex!==(Rt?0:-1)&&(He.button.tabIndex=Rt?0:-1),St(He.button,"data-problem",He.fields.some(Mt=>ht[Mt])?"":null),_e(He.panel,!Rt),Rt&&!ct){He.build();for(let Mt of He.own)Mt(Pe)}}let et=Ie.map(He=>He.tab.id).join(" ");if(et!==fe&&(fe=et,xe.measure()),G!==Ze&&I.clientWidth){Ze=G;let He=ie.find(Rt=>Rt.tab.id===G);He&&xe.reveal(He.button)}}),A}function ue(u){return u.flatMap(F=>F.type==="field"?[F.field]:F.type==="section"?ue(F.children):F.type==="tabs"?F.children.flatMap(A=>ue(A.children)):[])}function Ve(u,F){return Ue(u,Oe(u,F))}function Ue(u,F){return u.hideOn?.length&&(F.dataset.hideOn=u.hideOn.join(" ")),F}function Oe(u,F){switch(u.type){case"field":return Re(u,F.labels);case"button":return pt(u);case"text":return yt(u,F.inline);case"slot":return Me(u);case"section":return pe(u,F);case"tabs":return De(u,F);case"divider":case"spacer":case"image":return lt(u);case"form":return g(u,F)}}function lt(u){let F=u.type==="divider"?p("hr",{class:"fd-divider","data-node":u.id}):u.type==="spacer"?p("div",{class:"fd-block fd-spacer","aria-hidden":"true","data-node":u.id}):rt(u);return u.type!=="divider"&&u.colspan&&F.style.setProperty("--fd-span",String(u.colspan)),qe(F,u.id),F}function rt(u){let F=p("img",{class:"fd-image",src:u.src,alt:u.alt,loading:"lazy"}),A=u.href&&/^(https?:\/\/|mailto:)/i.test(u.href)?u.href:void 0,I=p("figure",{class:"fd-block fd-figure","data-node":u.id,"data-align":u.align},A?p("a",{href:A,target:"_blank",rel:"noopener noreferrer"},F):F,...u.caption?[p("figcaption",{class:"fd-caption"},u.caption)]:[]),q=typeof u.width=="number"?`${u.width}px`:u.width&&{small:"160px",medium:"320px",large:"480px",full:"100%"}[u.width];return q&&I.style.setProperty("--fd-image-width",q),I}function g(u,F){let A=p("fieldset",{class:"fd-section fd-form-part","data-node":u.id,"data-style":"card","data-on-page":F.onPage?"":void 0,"aria-busy":"true"});$(A,u.colspan);let I=p("p",{class:"fd-form-part-note"},x.loading);A.append(I),qe(A,u.id);let q=ie=>{A.removeAttribute("aria-busy"),I.textContent=ie,I.classList.add("fd-form-part-problem")},G=ie=>{if(z)return;if(!ie)return q(w(x.formMissing,{page:u.page}));let xe=d(ie),fe=xe.title||ie.id,Ze=N.chain.findIndex(et=>et.id===ie.id);if(Ze!==-1)return q(w(x.formInItself,{page:fe,chain:[...N.chain.slice(Ze).map(et=>et.title),fe].join(" \u2192 ")}));if(ie.layout.type!=="sections"&&ie.layout.type!=="tabs")return q(w(x.formNotPlaceable,{page:fe}));let Pe=Zn(xe),ct;try{if(!Pe.ok)throw new Error(Pe.issues.map(et=>`${et.path}: ${et.message}`).join("; "));ct=X.embed(u.id,xe)}catch(et){return console.warn(`Fieldia: the saved form "${ie.id}" cannot be shown: ${et.message}`),q(w(x.formBroken,{page:fe}))}let Ie=u.title??xe.title??"";A.setAttribute("data-title",Ie),Ie&&A.prepend(p("legend",{class:"fd-section-title"},...T(void 0,Ie)));let ot=Z({root:!1,form:ct,page:xe,prefix:`${N.prefix}${u.id}-`,chain:[...N.chain,{id:ie.id,title:fe}],locked:()=>N.locked()||X.node(u.id).readonly,path:`${N.path}${u.name}.`}),ht=xe.layout;I.replaceWith(ot.grid(ht.type==="tabs"?[ht]:ht.children,1,{columns:1,onPage:!1,labels:F.labels})),A.removeAttribute("aria-busy"),L.push(ct.subscribe(D)),V&&D()},ae;try{ae=mr(t,u.version===void 0?{id:u.page}:{id:u.page,version:u.version})}catch{ae=null}return ae instanceof Promise?ae.then(G,()=>G(null)):G(ae),A}return{item:Ve,grid:Qe,fieldItem:Re,buttonItem:pt,hideWhen:qe,slotItem:Me}}let{item:J,grid:B,fieldItem:te,buttonItem:Ee,hideWhen:he,slotItem:ke}=Z({root:!0,form:y,page:a,prefix:"",chain:[{id:a.id,title:a.title||a.id}],locked:()=>!1,path:""}),se=t.readonly===!0,re=t.editSwitch?p("button",{type:"button",class:"fd-button fd-edit-switch"}):null;re?.addEventListener("click",async()=>{if(se)se=!1;else{if(y.getState().dirty.length&&!await y.save()){y.getState().saveProblem||$e(U(y.getState())),be();return}se=!0}C.toggleAttribute("data-readonly",se),y.setEditing(!se),an(y.getState())}),C.toggleAttribute("data-readonly",se),y.setEditing(!se),h.push(()=>{re&&(re.textContent=se?x.edit:x.done,re.classList.toggle("fd-button-primary",se))});let Y=p("div",{class:"fd-status",role:"status","aria-live":"polite"}),ne=p("button",{type:"button",class:"fd-button fd-button-link fd-retry",hidden:""},x.retry);ne.addEventListener("click",()=>{dt()});let le=p("div",{class:"fd-status-box"},Y,ne),K=()=>a.data.kind==="responses"?x.notSent:x.notSaved;function U(N){let X=[...C.querySelectorAll(".fd-field[data-path]")],de=[];for(let Le of Object.keys(N.errors)){let Re;for(let Me=Le;Me&&!Re;Me=Me.slice(0,Math.max(0,Me.lastIndexOf("."))))Re=X.find(Qe=>Qe.getAttribute("data-path")===Me&&!Qe.hidden);let it=Le.split(".")[0],qe=Re?.querySelector(":scope > .fd-label")?.firstChild?.textContent??a.fields[it]?.label??it,pt=Re?.closest(".fd-form-part")?.getAttribute("data-title"),yt=pt?`${qe} (${pt})`:qe;de.some(Me=>Me.name===yt)||de.push({name:yt,at:Re?X.indexOf(Re):1/0})}let ge=de.sort((Le,Re)=>Le.at-Re.at).map(Le=>Le.name);return ge.length?w(x.checkFields,{what:K(),fields:ge.join(", ")}):K()}let Q;h.push(N=>{let X=N.saveProblem,de=N.status==="saving"?x.saving:N.status==="saved"?x.saved:N.status==="loading"?x.loading:N.status==="error"&&X?X.kind==="fields"?U(N):X.kind==="other"?X.message:K():N.status==="error"?N.error??"":"";St(Y,"aria-live",N.status==="error"&&X?"off":"polite"),xt(Y,de),_e(ne,!(N.status==="error"&&X?.kind==="other")),Y.classList.toggle("fd-status-error",N.status==="error"),Y.classList.toggle("fd-status-saved",N.status==="saved"),t.saveStatus==="toast"&&(clearTimeout(Q),le.hidden=!de,N.status==="saved"&&(Q=setTimeout(()=>le.hidden=!0,2500)))});let ce=p("button",{type:"button",class:"fd-button fd-retry"},x.retry);ce.addEventListener("click",()=>{dt()});let We=p("div",{class:"fd-banner fd-tone-warning",role:"alert",hidden:""},p("span",{class:"fd-banner-text"},x.offline),ce),Se=p("div",{class:"fd-announce",role:"alert","aria-live":"assertive"});function $e(N){Se.textContent="",setTimeout(()=>Se.textContent=N,0)}let me=null;h.push(N=>{N.saveProblem!==me&&(me=N.saveProblem,We.hidden=me?.kind!=="network",me&&(me.kind==="rule"?jt(me.message,!1):me.kind==="fields"?$e(U(N)):me.kind==="other"&&$e(me.message)))});let Be=p("div",{class:"fd-draft",hidden:""}),at=p("span"),Ne=p("button",{type:"button",class:"fd-button fd-button-primary"},x.restore),we=p("button",{type:"button",class:"fd-button fd-button-link"},x.discardDraft);Ne.addEventListener("click",()=>y.restoreDraft()),we.addEventListener("click",()=>y.discardDraft()),Be.append(at,Ne,we),h.push(N=>{_e(Be,!N.draft),N.draft&&(at.textContent=w(x.draftFound,{time:new Date(N.draft.savedAt).toLocaleString()}))});function be(){if(![...C.querySelectorAll('[aria-invalid="true"]')].find(ge=>!ge.closest(".fd-tabpanel[hidden]"))){let ge=y.getState().errors,Le=[...M.keys()].find(Re=>ge[Re]);Le&&M.get(Le)?.()}let X=[...C.querySelectorAll('[aria-invalid="true"]')].find(ge=>!ge.closest(".fd-tabpanel[hidden]"))??null;if(!X)return;for(let ge=X.closest(".fd-section-folded");ge;ge=ge.parentElement?.closest(".fd-section-folded")??null)_.get(ge)?.();if(!X.dispatchEvent(new CustomEvent("fd-focus-problem",{cancelable:!0})))return;(X.matches("input, select, textarea, button")?X:X.querySelector("input, select, textarea, button"))?.focus()}let oe=p("div",{class:"fd-done",hidden:""},p("p",{class:"fd-done-title"},x.submitted)),Je=p("button",{type:"button",class:"fd-button"},x.submitAnother);oe.append(Je);let st=p("div",{class:"fd-content"});async function dt(){if(!await y.save()){y.getState().saveProblem||$e(U(y.getState())),be();return}a.data.kind==="responses"&&(st.hidden=!0,oe.hidden=!1)}Je.addEventListener("click",()=>{y.reset(),st.hidden=!1,oe.hidden=!0});function Ut(){let N=y.getState();if(N.recordId==null)return"";let X=a.layout.type==="sheet"?a.layout.title?.field:void 0;return(X?vt(a.fields[X],N.values[X],N.values,s):"")||a.title||""}function Ot(N){if(a.data.kind!=="record")return null;let X=vd({doc:n,el:p,form:y,toolbar:N,records:t.records,breadcrumbs:t.breadcrumbs,labels:x,icons:t.icons,uid:R,fill:w,withIcon:T,press:P,name:Ut,render:D,async leave(){if(!y.getState().dirty.length)return!0;let de=await y.save();return de||(y.getState().saveProblem||$e(U(y.getState())),be()),de}});return X?(h.push(X.update),L.push(X.destroy),X.element):null}function nn(){if(!a.title&&!a.description)return null;let N=p("header",{class:"fd-page-head"});return a.title&&N.append(p("h1",{class:"fd-page-title"},a.title)),a.description&&N.append(p("p",{class:"fd-page-description"},a.description)),N}function En(N){return!N?.length||t.showActions===!1?null:p("div",{class:"fd-actions fd-actions-end fd-page-footer"},le,...N.map(Ee))}function _n(N){let X=p("div",{class:"fd-sections","data-node":N.id},...N.children.map(Re=>J(Re,ee(!0)))),de=En(N.footer);if(de)return p("div",{},X,de);let ge=p("button",{type:"submit",class:"fd-button fd-button-primary"},a.data.kind==="responses"?x.submit:x.save),Le=p("div",{class:"fd-actions fd-actions-end"},le,ge);if(a.data.kind==="record"){let Re=p("button",{type:"button",class:"fd-button"},x.discard);Re.addEventListener("click",()=>y.reset()),Le.insertBefore(Re,ge),h.push(it=>{let qe=it.dirty.length>0&&it.status!=="saving"&&!se;_e(ge,!qe),_e(Re,!qe)})}else h.push(()=>_e(ge,se));return re&&Le.prepend(re),t.showActions===!1?p("div",{},X):a.actionsPosition==="top"?(Le.classList.add("fd-actions-top"),p("div",{},Le,X)):p("div",{},X,Le)}function ki(N){let X=p("div",{class:"fd-wizard","data-node":N.id}),de=p("div",{class:"fd-progress-text"}),ge=p("span");X.append(p("div",{class:"fd-progress"},de,p("div",{class:"fd-progress-bar"},ge)));let Le=N.clickable?p("ol",{class:"fd-steps-list"}):null,Re=new Map;if(Le){for(let Ce of N.children){let Xe=p("button",{type:"button",class:"fd-step-link"},...T(Ce.icon,Ce.label));Xe.addEventListener("click",()=>{y.goTo(Ce.id)?Qe():be()}),Re.set(Ce.id,Xe),Le.append(p("li",{},Xe))}X.append(p("nav",{class:"fd-steps","aria-label":x.steps},Le))}let it=N.children.map(Ce=>{let Xe=p("section",{class:"fd-step","data-node":Ce.id,"aria-labelledby":R(`${Ce.id}-title`)});return Xe.append(p("h2",{class:"fd-step-title",id:R(`${Ce.id}-title`)},...T(Ce.icon,Ce.label))),Ce.description&&Xe.append(p("p",{class:"fd-section-description"},Ce.description)),Xe.append(B(Ce.children,1,ee(!1))),X.append(Xe),{step:Ce,panel:Xe}}),qe=p("button",{type:"button",class:"fd-button"},N.backLabel??x.back),pt=p("button",{type:"button",class:"fd-button fd-button-link"},x.skip),yt=p("button",{type:"submit",class:"fd-button fd-button-primary"});X.append(p("div",{class:"fd-wizard-nav"},qe,p("span",{class:"fd-spacer"}),le,pt,yt)),qe.addEventListener("click",()=>{y.back()&&Qe()}),pt.addEventListener("click",()=>{y.skip()&&Qe()});let Me=()=>{let Ce=y.steps();return Ce.indexOf(y.getState().step??"")===Ce.length-1};Lt=async()=>{if(Me())return dt();y.next()?Qe():be()};function Qe(){it.find(Xe=>Xe.step.id===y.getState().step)?.panel.querySelector("input, select, textarea, [role=radio]")?.focus()}return h.push(Ce=>{let Xe=y.steps(),pe=Math.max(0,Xe.indexOf(Ce.step??""));de.textContent=w(x.stepOf,{n:pe+1,total:Xe.length}),ge.style.width=`${(pe+1)/Math.max(1,Xe.length)*100}%`;for(let{step:ue,panel:Ve}of it)Ve.hidden=ue.id!==Ce.step;let De=pe===Xe.length-1;qe.hidden=pe===0,pt.hidden=De||!N.children.find(ue=>ue.id===Ce.step)?.optional,yt.textContent=De?N.finishLabel??x.submit:N.nextLabel??x.next;for(let[ue,Ve]of Re){let Ue=Xe.indexOf(ue);Ve.parentElement.hidden=Ue===-1,Ve.classList.toggle("fd-step-done",Ue!==-1&&Ue<pe),Ve.classList.toggle("fd-step-skipped",Ce.skipped.includes(ue)),ue===Ce.step?Ve.setAttribute("aria-current","step"):Ve.removeAttribute("aria-current")}}),X}function Kt(N){let X=p("div",{class:"fd-sheet-page","data-node":N.id}),de=p("div",{class:"fd-actions"}),ge=p("button",{type:"submit",class:"fd-button fd-button-primary"},x.save),Le=p("button",{type:"button",class:"fd-button"},x.discard);Le.addEventListener("click",()=>y.reset());let Re=a.actionsPosition==="bottom",it=p("div",{class:"fd-actions fd-actions-end fd-sheet-foot"}),qe=En(N.footer);t.showActions===!1||qe?de.append(...(N.buttons??[]).map(Ee)):Re?(de.append(...(N.buttons??[]).map(Ee)),it.append(le,Le,ge)):de.append(ge,Le,...(N.buttons??[]).map(Ee),le),re&&t.showActions!==!1&&de.prepend(re),h.push(pe=>{let De=pe.dirty.length>0&&pe.status!=="saving"&&!se;ge.hidden=!De,Le.hidden=!De});let pt=p("div",{class:"fd-header"},de),yt=N.statusbar?.position==="title";N.statusbar&&!yt&&pt.append(Wt(N.statusbar));let Me=p("div",{class:"fd-card"}),Qe=[...N.ribbon?[N.ribbon]:[],...N.ribbons??[]];if(Qe.length){let pe=p("div",{class:"fd-ribbon-frame"}),De=Qe.map(ue=>{let Ve=p("div",{class:`fd-ribbon fd-tone-${ue.tone??"muted"}`,"data-node":ue.id,title:ue.tooltip},ue.label);return pe.append(Ve),{ribbon:ue,element:Ve}});h.push(ue=>{let Ve=!1;for(let{ribbon:Ue,element:Oe}of De){let lt=!Ve&&!y.node(Ue.id).invisible;if(Ve||(Ve=lt),_e(Oe,!lt),!lt)continue;let rt=Ue.labelField?vt(a.fields[Ue.labelField],ue.values[Ue.labelField],ue.values,s):"";xt(Oe,rt||Ue.label)}}),Me.append(pe)}if(N.statButtons?.length){let pe=p("div",{class:"fd-stats"}),De=(ue,Ve)=>ue&&a.fields[ue]?vt(a.fields[ue],Ve[ue],Ve,s):"";for(let ue of N.statButtons){let Ve=p("span",{class:"fd-stat-value"}),Ue=p("span",{class:"fd-stat-label"},ue.label),Oe=ue.secondField&&ue.secondLabel!==void 0?{value:p("span",{class:"fd-stat-value"}),label:p("span",{class:"fd-stat-label"},ue.secondLabel)}:null,lt=bt(n,ue.icon,t.icons),rt=Oe?p("span",{class:"fd-stat-words fd-stat-pair"},p("span",{class:"fd-stat-row"},Ue,Ve),p("span",{class:"fd-stat-row"},Oe.label,Oe.value)):p("span",{class:"fd-stat-words"},Ve,Ue),g=ue.help?R(`${ue.id}-help`):void 0,u=p("button",{type:"button",class:"fd-stat","data-node":ue.id,title:ue.help||void 0,"aria-describedby":g},...lt?[lt,rt]:[rt]);g&&pe.append(p("span",{class:"fd-sr-only",id:g},ue.help)),u.addEventListener("click",()=>{P(u,()=>y.runAction(ue.id))}),h.push(F=>{u.hidden=y.node(ue.id).invisible;let A=F.values,I=De(ue.unitField,A)||ue.unit||"",q=De(ue.field,A),G=De(ue.secondField,A);Oe?(xt(Ve,q),xt(Oe.value,[G,I].filter(Boolean).join(" "))):xt(Ve,[[q,G].filter(Boolean).join(" / "),q||G?I:""].filter(Boolean).join(" ")),xt(Ue,De(ue.labelField,A)||ue.label)}),pe.append(u)}h.push(()=>{pe.hidden=[...pe.querySelectorAll(":scope > .fd-stat")].every(ue=>ue.hidden)}),Me.append(pe)}for(let pe of N.alerts??[]){let De=Mo(n,a.fields,pe.message,s),ue=p("span",{class:"fd-alert-message"},...De.nodes),Ve=!1,Ue=p("div",{class:`fd-alert fd-tone-${pe.tone??"info"}`,role:"status","data-node":pe.id},ue);if(pe.buttons?.length&&Ue.append(p("span",{class:"fd-alert-actions"},...pe.buttons.map(Oe=>Ee({...Oe,style:Oe.style??"link"})))),h.push(Oe=>{De.update(Oe.values);let lt=pe.messageField?Oe.values[pe.messageField]:null,rt=typeof lt=="string"?lt.trim():"";rt?xt(ue,rt):Ve&&ue.replaceChildren(...De.nodes),Ve=!!rt}),pe.dismissible){let Oe=!1,lt=p("button",{type:"button",class:"fd-alert-close","aria-label":x.dismiss},"\xD7");lt.addEventListener("click",()=>{Oe=!0,Ue.hidden=!0}),Ue.append(lt),h.push(()=>{Ue.hidden=Oe||y.node(pe.id).invisible})}else he(Ue,pe.id);Me.append(Ue)}if(N.badges?.length){let pe=p("div",{class:"fd-badges"});for(let De of N.badges){let ue=p("span",{class:`fd-badge fd-tone-${De.tone??"muted"}`,"data-node":De.id},...T(De.icon,De.label));he(ue,De.id),pe.append(ue)}h.push(()=>{pe.hidden=[...pe.children].every(De=>De.hidden)}),Me.append(pe)}if(N.title){let pe=p("div",{class:"fd-title"});N.title.label&&pe.append(p("label",{class:"fd-title-label",for:R("#title")},N.title.label)),N.title.above?.length&&pe.append(p("div",{class:"fd-title-above"},...N.title.above.map(Oe=>te(Oe))));let De=te({type:"field",id:"#title",field:N.title.field,placeholder:N.title.placeholder,...N.title.placeholderWhen?{placeholderWhen:N.title.placeholderWhen}:{},...N.title.focus?{focus:!0}:{}}),ue=N.title.before??[],Ve=N.title.after??[];if(ue.length||Ve.length){De.classList.add("fd-title-name");let Oe=lt=>{let rt=te(lt);return rt.classList.add("fd-title-side"),rt};pe.append(p("div",{class:"fd-title-line"},...ue.map(Oe),De,...Ve.map(Oe)))}else pe.append(De);N.title.subtitleField&&pe.append(te({type:"field",id:"#subtitle",field:N.title.subtitleField})),N.title.below?.length&&pe.append(p("div",{class:"fd-title-below"},...N.title.below.map(Oe=>te(Oe))));let Ue=p("div",{class:"fd-title-row"},pe);if(N.title.avatarField){let Oe=te({type:"field",id:"#avatar",field:N.title.avatarField});Oe.classList.add("fd-avatar"),Ue.append(Oe)}Me.append(Ue)}N.statusbar&&yt&&Me.append(p("div",{class:"fd-title-statusbar"},Wt(N.statusbar))),Me.append(B(N.children,1,ee(!1))),qe&&Me.append(qe),Re&&t.showActions!==!1&&(Me.append(it),h.push(pe=>{it.hidden=pe.dirty.length===0&&!Y.textContent}));let Ce=p("div",{class:"fd-sheet-layout"},Me);if(N.attachmentPreview){let pe=xd({doc:n,el:p,form:y,page:a,node:N.attachmentPreview,dataSource:t.dataSource,labels:x,fill:w});Ce.classList.add("fd-has-preview"),Ce.append(pe.element),h.push(pe.update),L.push(pe.destroy)}N.sidePanel&&(Ce.classList.add("fd-has-side"),N.sidePanelBeside&&Ce.setAttribute("data-side-beside",N.sidePanelBeside),Ce.append(p("aside",{class:"fd-side"},ke(N.sidePanel))));let Xe=Ot(N.toolbar);return X.append(...Xe?[Xe]:[],pt,Ce),X}function Wt(N){let X=a.fields[N.field],de={clickable:N.clickable===!0};N.visibleStates&&(de.visibleStates=N.visibleStates);for(let Re of["durationsField","fold","saves"])N[Re]!==void 0&&(de[Re]=N[Re]);let ge={type:"field",id:"#statusbar",field:N.field,widget:"statusbar",options:de},Le=$t({form:y,name:N.field,field:X,node:ge,id:R("statusbar"),document:n,labels:S,preferences:l,locale:s,dialogs:f},t.widgets);return Le.destroy&&L.push(()=>Le.destroy?.()),h.push(Re=>{_e(Le.element,y.node("#statusbar").invisible),Le.update({value:Re.values[N.field],values:Re.values,readonly:y.node("#statusbar").readonly||se,required:!1,invalid:!1})}),Le.element}let Lt=null,nt=a.layout,rn;if(nt.type==="sheet")rn=Kt(nt);else if(nt.type==="wizard")rn=ki(nt);else if(nt.type==="tabs")rn=_n({id:`${nt.id}-page`,children:[nt]});else if(nt.type==="list"){let N=gd({page:a,node:nt,form:y,dataSource:t.dataSource,doc:n,el:p,labels:x,locale:s,fill:w,press:P,withIcon:T,uid:R,icons:t.icons,preferences:l,onOpenRecord:t.onOpenRecord,...t.listFilter?{fixedFilter:t.listFilter}:{}});L.push(N.destroy),rn=N.element}else rn=_n(nt);let on=nt.type==="sheet"?null:nn(),Et=nt.type==="sections"||nt.type==="tabs"?Ot(void 0):null;st.append(...Et?[Et]:[],...on?[on]:[],We,Be,rn),C.append(st,oe,Se),t.saveStatus==="toast"?(le.classList.add("fd-toast"),C.append(le)):t.saveStatus==="bar"&&(le.classList.add("fd-status-bar"),st.prepend(le)),C.addEventListener("submit",N=>{N.preventDefault(),nt.type!=="list"&&(Lt?Lt():dt())});function Si(){let N=n.activeElement;N&&C.contains(N)&&(N.tagName==="INPUT"||N.tagName==="TEXTAREA")&&N.dispatchEvent(new Event("change",{bubbles:!0}))}function Li(N){let X=[...C.querySelectorAll(".fd-field")].filter(Le=>!Le.closest('[hidden], [data-type="one2many"] .fd-field, .fd-form-dialog')&&!Le.parentElement?.closest('[data-type="one2many"]')),de=N.closest(".fd-field"),ge=X.slice(X.indexOf(de)+1);for(let Le of ge){let Re=Le.querySelector('input:not([type="hidden"]):not([readonly]):not([disabled]), select:not([disabled]), textarea:not([readonly]), [contenteditable="true"]');if(Re)return Re}return null}C.addEventListener("keydown",N=>{if(N.isComposing||N.key!=="Enter"||nt.type==="list"||N.target.closest(".fd-slot"))return;let X=t.keys??{};if(N.ctrlKey||N.metaKey){if(X.saveWithCtrlEnter===!1||t.showActions===!1||N.target.closest(".ag-root-wrapper"))return;N.preventDefault(),Si(),Lt?Lt():dt();return}if(N.defaultPrevented||!X.enterMovesToNext||N.shiftKey||N.altKey)return;let de=N.target;de.tagName!=="INPUT"&&de.tagName!=="SELECT"||de.closest('[data-type="one2many"]')||["button","submit","reset","file"].includes(de.type)||(N.preventDefault(),Li(de)?.focus())});function gn(N){let X=N instanceof Element?N.closest(".fd-form"):null;if(X)return X===C&&!C.querySelector(":scope > .fd-dialog-backdrop");let de=[...n.querySelectorAll('[aria-modal="true"]')].filter(Le=>!Le.closest("[hidden]"));return(de[de.length-1]??n).querySelector(".fd-form")===C}let Rn=N=>{if(N.key==="Alt"){gn(N.target)&&C.setAttribute("data-hotkeys","");return}let X=hi(N);if(!X||!gn(N.target))return;let de=[...C.querySelectorAll(`button[data-hotkey="${X}"]`)].find(ge=>ge.closest(".fd-form")===C&&!ge.closest("[hidden]")&&!ge.disabled&&!ge.hasAttribute("aria-busy"));de&&(N.preventDefault(),C.removeAttribute("data-hotkeys"),de.click())},Un=()=>C.removeAttribute("data-hotkeys"),br=N=>N.key==="Alt"&&Un();n.addEventListener("keydown",Rn),n.addEventListener("keyup",br),n.defaultView?.addEventListener("blur",Un),L.push(()=>{n.removeEventListener("keydown",Rn),n.removeEventListener("keyup",br),n.defaultView?.removeEventListener("blur",Un)});function jt(N,X=!0){return new Promise(de=>{let ge=p("p",{id:`${k}-confirm`},N),Le=p("button",{type:"button",class:"fd-button"},x.cancel),Re=p("button",{type:"button",class:"fd-button fd-button-primary"},x.ok),it=p("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":ge.id},ge,p("div",{class:"fd-actions fd-actions-end"},...X?[Le,Re]:[Re])),qe=p("div",{class:"fd-dialog-backdrop"},it),pt=C.ownerDocument,yt=pt.activeElement,Me=Qe=>{qe.remove(),((pe=>!!pe&&pe!==pt.body&&pe.isConnected&&!pe.closest("[hidden]"))(yt)?yt:C.querySelector('button[type="submit"]:not([hidden])'))?.focus(),de(Qe)};Le.addEventListener("click",()=>Me(!1)),Re.addEventListener("click",()=>Me(!0)),qe.addEventListener("keydown",Qe=>{Qe.stopPropagation(),Qe.key==="Escape"?(Qe.preventDefault(),Me(!1)):Bt(it,Qe)}),C.append(qe),Re.focus()})}function an(N){for(let X of h)X(N)}e.append(C);let Ei=y.subscribe(an);L.push(y.on("run",({result:N})=>{(N.reason==="cannot"||N.reason==="app"&&N.error!==void 0)&&b.say(N.message??"",N.reason==="app"?"danger":"warning")})),an(y.getState()),V=!0;let Kn=!1;return j.length&&L.push(y.on("open",()=>{let N=!Kn;Kn=!0,queueMicrotask(()=>{if(z||!C.isConnected||C.closest("[hidden]")||typeof C.checkVisibility=="function"&&!C.checkVisibility())return;let X=n.activeElement;!(!X||X===n.body||X===n.documentElement)&&!(N&&C.contains(X))||j.find(ge=>!ge.wrapper.closest("[hidden]"))?.focus()})})),y.getState().status==="idle"&&y.load(),{form:y,element:C,setSkin(N){C.setAttribute("data-fd-skin",N)},async save(){let N=await y.save();return N||be(),N},check(){let N=y.validate();return N||be(),N},setReadonly(N){se=N,C.toggleAttribute("data-readonly",se),y.setEditing(!se),an(y.getState())},isReadonly:()=>se,on:(N,X)=>{let de=y.on(N,X);return L.push(de),de},setValues:N=>y.setValues(N),run:(N,X)=>y.run(N,X),destroy(){z=!0,Ei();for(let N of L)N();C.remove(),c&&y.dispose()}}}var kd='input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]), textarea',cf=new Set(["boolean","one2many","binary","image","html","json","properties"]);function wi(e,t){wt[e]={...wt.en,...t.messages},Ke[e]={...Ke.en,...t.widgets},Ct[e]={...Ct.en,...t.viewer}}var ff="0.12.0",Sd=globalThis;for(let[e,t]of Sd.FieldiaLanguages??[])wi(e,t);delete Sd.FieldiaLanguages;return Nd(uf);})();
|
|
5
7
|
//# sourceMappingURL=fieldia.js.map
|