@fieldia/viewer 0.13.0 → 0.13.1

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/bundle/fieldia.js CHANGED
@@ -1,7 +1,7 @@
1
- /*! Fieldia 0.13.0 · MIT · https://fieldia.dev */
2
- "use strict";var Fieldia=(()=>{var Mr=Object.defineProperty;var Gd=Object.getOwnPropertyDescriptor;var Jd=Object.getOwnPropertyNames;var Yd=Object.prototype.hasOwnProperty;var Xd=(e,t,n)=>t in e?Mr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Zd=(e,t)=>{for(var n in t)Mr(e,n,{get:t[n],enumerable:!0})},Qd=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Jd(t))!Yd.call(e,o)&&o!==n&&Mr(e,o,{get:()=>t[o],enumerable:!(r=Gd(t,o))||r.enumerable});return e};var el=e=>Qd(Mr({},"__esModule",{value:!0}),e);var Dt=(e,t,n)=>Xd(e,typeof t!="symbol"?t+"":t,n);var If={};Zd(If,{ADDRESS_PARTS:()=>Xr,BROWSER_HOTKEYS:()=>Hr,DEFAULT_LABELS:()=>vd,DRAWN_IN_CELLS:()=>Ql,FIELDIA_CSS:()=>hd,FIELD_NAME:()=>Vn,FIELD_TYPES:()=>Nr,FIRST_FIELD:()=>yr,FORMAT_VERSION:()=>Cr,FORM_WIDTHS:()=>_c,HOTKEY:()=>fa,ICONS:()=>ms,MESSAGES:()=>Lt,PART_LOOKS:()=>Xi,THEMES:()=>Yi,THEME_SKINS:()=>Wi,TOKEN_NAMES:()=>Hi,VERSION:()=>Pf,VIEWER_LABELS:()=>It,WIDGET_LABELS:()=>Qe,accentShades:()=>br,addLanguage:()=>Vo,applyLook:()=>$n,binaryWidget:()=>fr,browserPreferences:()=>Oi,builtInWidgets:()=>od,cellText:()=>An,charTagsWidget:()=>ri,checkPage:()=>rr,checkValue:()=>gn,compileModifier:()=>tt,contrast:()=>Tn,countriesIn:()=>vi,createForm:()=>eo,createMemoryDataSource:()=>$a,createWidget:()=>Ct,currencyOf:()=>_n,dayOf:()=>un,describeTypes:()=>ar,detailLines:()=>ao,displayValue:()=>St,distributionIds:()=>fs,distributionModel:()=>ai,distributionWords:()=>lo,drawIcon:()=>wt,emptyValue:()=>En,evaluateModifier:()=>ma,expressionContext:()=>mn,facetsToFilter:()=>Gr,fileProblem:()=>ir,fileShown:()=>fi,fill:()=>qe,fillValues:()=>ca,focusField:()=>Co,formatBytes:()=>en,formatMoney:()=>Fn,formatNumber:()=>gt,formatPlain:()=>ni,groupByFields:()=>Jr,hostScheduler:()=>sr,hotkeyWords:()=>Wn,htmlWidget:()=>hi,imageWidget:()=>ci,initialValues:()=>pn,installListStyles:()=>Po,installStyles:()=>Ci,isEmpty:()=>qt,isModifierValid:()=>ga,isRightToLeft:()=>Br,isoWeek:()=>As,jsonWidget:()=>bi,keepTabIn:()=>Ut,kindTextField:()=>ys,labelPlace:()=>wr,labelWidget:()=>pr,lineForm:()=>co,lineKind:()=>pt,linesWidget:()=>di,linkAddress:()=>Ms,linkAvatar:()=>qn,linkCheckboxesWidget:()=>oi,localizePage:()=>or,many2oneWidget:()=>cr,matchesFilter:()=>Bn,memoryPreferences:()=>Kc,mountViewer:()=>xr,normalizeNumber:()=>_t,onelineRuns:()=>qd,openFormDialog:()=>Yn,openFormPanel:()=>ji,openLineDialog:()=>fo,openSearchDialog:()=>zi,ownCurrency:()=>xs,pageWords:()=>pa,planSection:()=>Io,progressbarWidget:()=>ur,propertiesWidget:()=>mi,readFile:()=>po,readText:()=>Ii,readsAsText:()=>Pi,referenceWidget:()=>ii,rolesAllow:()=>Sn,sanitizeHtml:()=>gi,saveProblemOf:()=>_r,saveRefused:()=>Fa,scoreOf:()=>Ra,skinFor:()=>yn,splitValues:()=>Dn,statusbarWidget:()=>go,suggestions:()=>Kr,summary:()=>mo,tagsWidget:()=>so,translatePage:()=>jn,ungroup:()=>dr,valuesIn:()=>Wr,wait:()=>Yr,wearTokens:()=>xn,wideColumns:()=>ln,withCalendar:()=>bo});var Vn=/^[A-Za-z_][A-Za-z0-9_]*$/,Nr=["char","text","html","integer","float","monetary","boolean","date","datetime","selection","binary","image","many2one","many2many","one2many","reference","properties","json","matrix"];function ln(e){return typeof e=="object"?e.wide:e??1}var Cr="0.1";var Yi=["material","fluent","apple","bootstrap","shadcn","ant","odoo","google-forms"];var Xi={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 Wo=["id","user","editing","context"],Ho=["id","name","roles"];var yt=e=>typeof e=="number"&&Number.isFinite(e);function Zt(e){return Number.isFinite(e)?Number(e.toPrecision(15)):null}function Qi(e,t,n){if(e==="+"&&(typeof t=="string"||typeof n=="string")){let r=Zi(t),o=Zi(n);return r===null||o===null?null:r+o}if(!yt(t)||!yt(n))return null;switch(e){case"+":return Zt(t+n);case"-":return Zt(t-n);case"*":return Zt(t*n);case"/":return Zt(t/n);case"%":return Zt(t-n*Math.floor(t/n));default:return null}}function Zi(e){return e==null?"":typeof e=="string"?e:yt(e)?String(e):null}function ea(e){return yt(e)?Zt(-e):null}function Mt(e){return Array.isArray(e)?e.length>0:e!==null&&typeof e=="object"?Object.keys(e).length>0:!!e}function tr(e,t){let n=10**Math.trunc(t),r=Number((Math.abs(e)*n).toPrecision(15));return Zt(Math.sign(e)*Math.round(r)/n)}function cn(e){let t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function ta(e){let t=e.args[0];return(t.type==="Identifier"?e.env.lines?.(t.name):void 0)??e.value(t)}function na(e,t,n,r){let o=e[t];return o&&!(o.type==="Literal"&&typeof o.value=="string")?`${n} takes a condition, in quotes, on the lines: ${r}`:void 0}function ra(e,t,n){let r=e.args[n];if(r?.type!=="Literal"||typeof r.value!="string")return t;let o=r.value;return t.filter(i=>i!==null&&typeof i=="object"&&e.holds(o,i))}function oa(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 ia(e,t){let n=e.args.flatMap(o=>{let i=e.value(o);return Array.isArray(i)?i:[i]}).filter(o=>o!=null);return!n.length||!n.every(yt)&&!n.every(o=>typeof o=="string")?null:n.reduce((o,i)=>(t?i<o:i>o)?i:o)}var nr=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 yt(n)&&yt(r)?tr(n,r):null}}],["abs",{takes:[1,1],call({args:e,value:t}){let n=t(e[0]);return yt(n)?Math.abs(n):null}}],["min",{takes:[1,1/0],call:e=>ia(e,!0)}],["max",{takes:[1,1/0],call:e=>ia(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?.()??cn(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')":na(e,2,"sum",`sum(lines, 'amount', "state == 'done'")`)},call(e){let t=ta(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 o of ra(e,t,2)){let i=n===void 0?o:o?.[n];yt(i)&&(r+=i)}return Zt(r)}}],["count",{takes:[1,2],check:e=>na(e,1,"count",`count(lines, "state == 'done'")`),call(e){let t=ta(e);return t==null?0:Array.isArray(t)?ra(e,t,1).length:null}}],["days",{takes:[2,2],call({args:e,value:t}){let n=oa(t(e[0])),r=oa(t(e[1]));return n===null||r===null?null:r-n}}],["if",{takes:[3,3],call:({args:e,value:t})=>Mt(t(e[0]))?t(e[1]):t(e[2])}]]);function aa(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 jo=new Map([["True",!0],["False",!1],["None",null],["true",!0],["false",!1],["null",null]]),tl=new Set(["+","-","*","/","%"]);function Qt(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,o=0;for(;;){if(r.lastIndex=o,r.exec(e),o=r.lastIndex,o>=e.length)return t;n.lastIndex=o;let i=n.exec(e);if(!i)throw new Error(`Unexpected "${e[o]}" at character ${o+1} of: ${e}`);t.push({type:nl(i[0]),value:i[0],position:t.length}),o=n.lastIndex}}function nl(e){let t=e.toLowerCase().trim();return jo.has(e)?"CONSTANT":t==="and"||t==="or"||t==="not"?"LOGICAL":["==","!=","<>","<",">","<=",">="].includes(e)||t==="in"||t==="not in"?"OPERATOR":e==="("||e===")"?"PAREN":tl.has(e)?"ARITHMETIC":e===","?"COMMA":e.startsWith("[")?"LIST":e.startsWith("'")||e.startsWith('"')?"STRING":/^\d+\.?\d*$/.test(e)?"NUMBER":"IDENTIFIER"}var Wt=class{constructor(t){Dt(this,"tokens");Dt(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,o=this.parseSum();return{type:"BinaryOp",operator:r.toLowerCase(),left:t,right:o}}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(rl)}}parseCall(t){let n=nr.get(t);if(!n)throw new Error(`no function "${t}": the functions are ${[...nr.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[o,i]=n.takes;if(r.length<o||r.length>i)throw new Error(aa(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:jo.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:ol(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(o=>o.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(o=>o.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 o=this.peek();if(o&&o.value===n)return this.advance()}throw new Error(r)}};function rl(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 ol(e){try{let t=e.slice(1,-1).trim();if(!t)return[];let n=[],r="",o=!1,i="";for(let a=0;a<t.length;a++){let d=t[a];(d==="'"||d==='"')&&(a===0||t[a-1]!=="\\")&&(o?d===i&&(o=!1,i=""):(o=!0,i=d)),d===","&&!o?(n.push(sa(r.trim())),r=""):r+=d}return r.trim()&&n.push(sa(r.trim())),n}catch(t){throw new Error(`Cannot read the list ${e}`,{cause:t})}}function sa(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 Nt(e,t,n={}){switch(e.type){case"BinaryOp":return il(e,t,n);case"UnaryOp":return al(e,t,n);case"Call":return sl(e,t,n);case"Literal":return e.value;case"Identifier":return ll(t,e.name);default:throw new Error(`Unknown AST node type: ${e.type}`)}}function il(e,t,n){let r=e.operator.toLowerCase();if(r==="and"||r==="or"){let d=Or(Nt(e.left,t,n));return Mt(d)===(r==="or")?d:Or(Nt(e.right,t,n))}let o=Or(Nt(e.left,t,n)),i=Or(Nt(e.right,t,n)),a=o!==null&&i!==null;switch(r){case"==":return o===i;case"!=":case"<>":return o!==i;case"<":return a&&o<i;case">":return a&&o>i;case"<=":return a&&o<=i;case">=":return a&&o>=i;case"in":return Array.isArray(i)&&i.includes(o);case"not in":return Array.isArray(i)&&!i.includes(o);case"+":case"-":case"*":case"/":case"%":return Qi(r,o,i);default:throw new Error(`Unknown binary operator: ${e.operator}`)}}function al(e,t,n){let r=Nt(e.operand,t,n);switch(e.operator.toLowerCase()){case"not":return!Mt(r);case"-":return ea(r);default:throw new Error(`Unknown unary operator: ${e.operator}`)}}function sl(e,t,n){let r=nr.get(e.name);if(!r)throw new Error(`Unknown function: ${e.name}`);return r.call({args:e.args,value:o=>Nt(o,t,n),env:n,holds:(o,i)=>Mt(Nt(dl(o),i,n))})}var da=new Map;function dl(e){let t=da.get(e);return t||da.set(e,t=new Wt(Qt(e)).parse()),t}function Or(e){return e===void 0?null:e}function ll(e,t){let n=t.split("."),r=e;for(let o of n){if(r==null)return;r=r[o]}return r}function fn(e,t){switch(t(e),e.type){case"BinaryOp":fn(e.left,t),fn(e.right,t);return;case"UnaryOp":fn(e.operand,t);return;case"Call":for(let n of e.args)fn(n,t);return;default:return}}function Pr(e){let t=[];return fn(e,n=>{if(n.type!=="Identifier")return;let r=n.name.split(".")[0];t.includes(r)||t.push(r)}),t}function Ir(e){let t=[];return fn(e,n=>{n.type==="Identifier"&&!t.includes(n.name)&&t.push(n.name)}),t}function Vr(e){let t=[];return fn(e,n=>{if(n.type!=="Call"||n.name!=="count"&&n.name!=="sum")return;let[r,o]=n.name==="count"?[n.args[0],n.args[1]]:[n.args[0],n.args[2]];r.type==="Identifier"&&o?.type==="Literal"&&typeof o.value=="string"&&t.push({lines:r.name,condition:o.value})}),t}function la(e){let t=[];return fn(e,n=>{if(n.type!=="Call"||n.name!=="sum")return;let[r,o]=n.args;r.type==="Identifier"&&o?.type==="Literal"&&t.push({lines:r.name,field:o.value})}),t}function tt(e){if(typeof e!="string"){let n=e===!0;return{source:e,fields:[],paths:[],wheres:[],evaluate:()=>n}}let t=new Wt(Qt(e)).parse();return{source:e,fields:Pr(t),paths:Ir(t),wheres:Vr(t),evaluate(n,r){try{return Mt(Nt(t,n,r))}catch{return!1}}}}function Ht(e){let t=new Wt(Qt(e)).parse();return{source:e,fields:Pr(t),paths:Ir(t),wheres:Vr(t),sums:la(t),evaluate(n,r={}){try{return Nt(t,n,r)??null}catch{return null}}}}function Dr(e){let t=[],n=[],r=new Set,o=[],i=a=>{if(r.has(a))return;let d=o.indexOf(a);if(d!==-1){n.push([...o.slice(d),a]);return}o.push(a);for(let s of e.get(a)??[])e.has(s)&&i(s);o.pop(),r.add(a),t.push(a)};for(let a of e.keys())i(a);return{order:t,cycles:n}}var zo=/\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function Wr(e){return[...e.matchAll(zo)].map(t=>t[1])}function ca(e,t){return e.replace(zo,(n,r)=>t(r))}function Dn(e){let t=[],n=0;for(let r of e.matchAll(zo))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 fa=/^(shift\+)?[a-z0-9]$/,Hr=["d","e","f"],Wn=e=>`Alt+${e.startsWith("shift+")?"Shift+":""}${e.slice(-1).toUpperCase()}`;var xt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ua=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),Bo="text, numbers, yes or no, dates, choices and json can",cl=e=>{let t=e.map(n=>`"${n}"`);return t.length<2?t.join(""):`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`},jr=class e{constructor(t,n){Dt(this,"page",t);Dt(this,"line",n);Dt(this,"issues",[]);Dt(this,"ids",new Map);Dt(this,"formNames",new Map);Dt(this,"places",new Set);Dt(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 o=t.lineForm?.children;if(!Array.isArray(o))return this.report(`${r}.lineForm`,'a line\u2019s form holds its parts: { "children": [...] }');let i={...this.page,fields:n.fields,layout:{type:"sections",id:`${t.id}#line`,children:o},on:void 0},a=new e(i,{name:t.field,parent:this.page.fields});a.walkChildren(o,`${r}.lineForm`),a.checkGoingTo(),this.issues.push(...a.issues)}checkEvents(t,n){for(let r of["open","beforeSave","afterSave"]){let o=t[r];o&&this.checkSteps(o,`${n}.${r}`)}for(let[r,o]of Object.entries(t.change??{}))this.formNames.has(r)||this.need(r,`${n}.change.${r}`),this.checkSteps(o,`${n}.change.${r}`);for(let[r,o]of Object.entries(t.show??{}))this.goingTo.push({target:r,path:`${n}.show.${r}`}),this.checkSteps(o,`${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"&&Hr.includes(r.replace("shift+",""))&&this.report(`${n}.hotkey`,`${Wn(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((o,i)=>{let a=`${n}[${i}]`;switch(this.checkModifiers(o,a,["when"]),o.do){case"set":{let d=this.need(o.field,`${a}.field`);d&&!ua.has(d.type)&&this.report(`${a}.field`,`a ${d.type} cannot be set from an expression; ${Bo}`),this.checkExpression(o.value,`${a}.value`,r);return}case"clear":this.need(o.field,`${a}.field`);return;case"addLine":{let d=this.need(o.field,`${a}.field`);if(d&&d.type!=="one2many")return this.report(`${a}.field`,`"${o.field}" is a ${d.type}; a line is added to a one2many`);for(let[s,l]of Object.entries(o.values??{}))d?.type==="one2many"&&!xt(d.fields,s)&&this.report(`${a}.values.${s}`,`"${s}" is not a field of the lines of "${o.field}"`),this.checkExpression(l,`${a}.values.${s}`,r);return}case"check":o.fields?.forEach((d,s)=>this.need(d,`${a}.fields[${s}]`));return;case"goTo":this.goingTo.push({target:o.target,path:`${a}.target`});return;case"open":o.page===this.page.id&&o.as==="page"&&this.report(`${a}.page`,"a page cannot open itself in its own place"),o.side!==void 0&&o.as!=="panel"&&this.report(`${a}.side`,`a side is where a panel comes from; this opens ${o.as==="page"?"in its place":"in a dialog"}`),o.record!==void 0&&this.checkExpression(o.record,`${a}.record`,r);for(let[d,s]of Object.entries(o.values??{}))this.checkExpression(s,`${a}.values.${d}`,r);o.filter?.forEach((d,s)=>this.checkFilterItem(d,`${a}.filter[${s}]`,r));for(let[d,s]of Object.entries(o.into??{})){this.need(d,`${a}.into.${d}`);try{Ht(s)}catch(l){this.report(`${a}.into.${d}`,`cannot read "${s}": ${l.message}`)}}o.then&&this.checkSteps(o.then,`${a}.then`);return;case"openUrl":this.checkExpression(o.url,`${a}.url`,r);return;default:return}})}checkValuesIn(t,n){for(let r of Wr(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(xt(r,t))return r[t];this.report(n,`no field "${t}"`)}checkFilterItem(t,n,r){if("any"in t)return t.any.forEach((o,i)=>this.checkFilterItem(o,`${n}.any[${i}]`,r));if("all"in t)return t.all.forEach((o,i)=>this.checkFilterItem(o,`${n}.all[${i}]`,r));t.valueFrom!==void 0&&this.checkValueFrom(t.valueFrom,`${n}.valueFrom`,r)}checkValueFrom(t,n,r){let[o,i]=t.split(".");if(i===void 0){if(xt(r.fields,t)||t==="id"&&r.lines===void 0)return;this.need(t,n,r.fields)}else o==="user"?Ho.includes(i)||this.report(n,`"${t}": the person has an id, name or roles`):o==="context"||(r.lines===void 0?this.report(n,`"${t}": only a line's filter reads parent, the record it is on`):!xt(r.parent??this.page.fields,i)&&i!=="id"&&this.report(n,`"${t}": "${i}" is not a field of this page`))}checkModifiers(t,n,r=["invisible"],o=this.here()){for(let i of r){let a=t[i];if(typeof a!="string")continue;let d;try{d=tt(a)}catch(s){this.report(`${n}.${i}`,`cannot read "${a}": ${s.message}`);continue}this.checkReads(a,d,`${n}.${i}`,o)}}checkReads(t,n,r,o){for(let i of n.wheres){let a=o.fields[i.lines];if(a?.type!=="one2many")continue;let d;try{d=tt(i.condition).fields}catch(s){this.report(r,`cannot read the condition "${i.condition}": ${s.message}`);continue}for(let s of d)xt(a.fields,s)||this.report(r,`"${i.condition}" reads "${s}", which is not a field of the lines of "${i.lines}"`)}for(let i of n.fields){if(xt(o.fields,i))continue;if(o.lines===void 0?Wo.includes(i):i==="user"||i==="parent"||i==="id"||i==="context"){for(let s of n.paths){let[l,f]=s.split(".");l!==i||f===void 0||(i==="user"&&!Ho.includes(f)&&this.report(r,`"${t}" reads "${s}": the person has an id, name or roles`),i==="parent"&&!xt(o.parent??this.page.fields,f)&&!Wo.includes(f)&&this.report(r,`"${t}" reads "${s}": "${f}" is not a field of this page`))}continue}let d=o.lines===void 0?"of this page":`of the lines of "${o.lines}"`;this.report(r,`"${t}" reads "${i}", which is not a field ${d}`)}}checkExpression(t,n,r){let o;try{o=Ht(t)}catch(i){return this.report(n,`cannot read "${t}": ${i.message}`),null}this.checkReads(t,o,n,r);for(let i of o.sums){if(!xt(r.fields,i.lines))continue;let a=r.fields[i.lines];a.type!=="one2many"?this.report(n,`sum adds up the lines of a one2many; "${i.lines}" is a ${a.type}`):xt(a.fields,i.field)||this.report(n,`"${i.field}" is not a field of the lines of "${i.lines}"`)}return o.fields}checkWorkedOut(t,n,r){let o=new Map;for(let[i,a]of Object.entries(t)){let d=`${n}.${i}`;if((a.compute!==void 0||a.setWhen)&&!ua.has(a.type)){a.compute!==void 0&&this.report(`${d}.compute`,`a ${a.type} cannot be worked out; ${Bo}`),a.setWhen&&this.report(`${d}.setWhen`,`a ${a.type} cannot be set by a condition; ${Bo}`);continue}if(a.compute!==void 0){let s=this.checkExpression(a.compute,`${d}.compute`,r);s&&o.set(i,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 i of Dr(o).cycles){let a=i.slice(0,-1),d=a.length===1?`"${a[0]}" is worked out from itself`:`${cl(a)} are worked out from each other: ${i.join(" \u2192 ")}`;this.report(`${n}.${i[0]}.compute`,d)}}checkFields(t,n,r,o){let i={fields:t,lines:r,...o?{parent:o}:{}};this.checkWorkedOut(t,n,i);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,o),d.defaultFrom!==void 0&&this.checkExpression(d.defaultFrom,`${s}.defaultFrom`,i),(d.type==="many2one"||d.type==="many2many")&&d.createValues)for(let[l,f]of Object.entries(d.createValues))this.checkExpression(f,`${s}.createValues.${l}`,i);if(d.type==="one2many"&&d.lineDefaults)for(let[l,f]of Object.entries(d.lineDefaults))xt(d.fields,l)?this.checkExpression(f,`${s}.lineDefaults.${l}`,i):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}]`,i)),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,o,i=this.page.fields){let a;if(!t.startsWith("parent."))a=this.need(t,n,r);else{if(o===void 0)return this.report(n,`"${t}": only a line\u2019s money reads parent, the record it is on`);if(xt(i,t.slice(7)))a=i[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,o){let i=r[n.field];if(!i)this.report(`${o}.field`,`"${n.field}" is not a field of the lines of "${t}"`);else if(i.type!=="selection"&&i.type!=="char")this.report(`${o}.field`,`"${n.field}" is a ${i.type}; the field that says what a line is must be a selection or char`);else if(i.type==="selection")for(let d of["section","note"]){let s=n[d]??d;i.options.some(l=>l.value===s)||this.report(`${o}.${d}`,`"${n.field}" has no option "${s}"`)}let a=r[n.text];a?a.type!=="char"&&a.type!=="text"&&this.report(`${o}.text`,`"${n.text}" is a ${a.type}; a section's or note's text must be a char or text field`):this.report(`${o}.text`,`"${n.text}" is not a field of the lines of "${t}"`)}walkFooter(t,n){t?.forEach((r,o)=>{this.claim(r.id,`${n}.footer[${o}]`),this.checkModifiers(r,`${n}.footer[${o}]`),this.checkPress(r,`${n}.footer[${o}]`)})}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,o)=>{let i=`${n}.children[${o}]`;this.places.add(r.id),this.claim(r.id,i),this.checkModifiers(r,i),this.walkChildren(r.children,i)})}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((i,a)=>this.need(i,`${n}.columns[${a}]`)),t.sort?.forEach((i,a)=>this.need(i.field,`${n}.sort[${a}].field`)),t.searchFields?.forEach((i,a)=>this.need(i,`${n}.searchFields[${a}]`)),t.groupBy?.forEach((i,a)=>this.need(i,`${n}.groupBy[${a}]`));let r=(i,a)=>{if("any"in i)return i.any.forEach((d,s)=>r(d,`${a}.any[${s}]`));if("all"in i)return i.all.forEach((d,s)=>r(d,`${a}.all[${s}]`));this.need(i.field,`${a}.field`),i.valueFrom!==void 0&&this.report(`${a}.valueFrom`,"a list's filter compares with values, not with another field")},o=new Set;t.filters?.forEach((i,a)=>{this.claim(i.id,`${n}.filters[${a}]`),o.add(i.id),i.filter.forEach((d,s)=>r(d,`${n}.filters[${a}].filter[${s}]`))}),t.defaultFilters?.forEach((i,a)=>{o.has(i)||this.report(`${n}.defaultFilters[${a}]`,`no filter "${i}" in this list`)}),t.actions?.forEach((i,a)=>{this.claim(i.id,`${n}.actions[${a}]`),this.checkPress(i,`${n}.actions[${a}]`)})}walkChildren(t,n){t.forEach((r,o)=>this.walkNode(r,`${n}.children[${o}]`))}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,o)=>{["field","text","button","spacer"].includes(r.type)||this.report(`${n}.children[${o}]`,`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);xt(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,o)=>{let i=`${n}.children[${o}]`;this.places.add(r.id),this.claim(r.id,i),this.checkModifiers(r,i),this.walkChildren(r.children,i)})}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((i,a)=>this.checkModifiers(i,`${n}.title.placeholderWhen[${a}]`,["when"]))),t.statusbar){let{field:i,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 m=this.need(d,`${c}.durationsField`);m&&m.type!=="json"&&this.report(`${c}.durationsField`,`"${d}" is a ${m.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 k=this.need(i,`${n}.statusbar.field`);if(s&&k&&k.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"),k&&k.type!=="selection"&&k.type!=="many2one"&&this.report(`${n}.statusbar.field`,`"${i}" is a ${k.type}; a statusbar needs a selection or many2one`),k?.type==="selection"&&a){let m=new Set(k.options.map(S=>S.value));a.forEach((S,h)=>{m.has(S)||this.report(`${n}.statusbar.visibleStates[${h}]`,`"${S}" is not an option of "${i}"`)})}}t.buttons?.forEach((i,a)=>{this.claim(i.id,`${n}.buttons[${a}]`),this.checkModifiers(i,`${n}.buttons[${a}]`),this.checkPress(i,`${n}.buttons[${a}]`)}),t.statButtons?.forEach((i,a)=>{this.claim(i.id,`${n}.statButtons[${a}]`),this.checkModifiers(i,`${n}.statButtons[${a}]`),this.checkPress(i,`${n}.statButtons[${a}]`);for(let d of["field","unitField","labelField","secondField"]){let s=i[d];s!==void 0&&this.need(s,`${n}.statButtons[${a}].${d}`)}i.secondLabel!==void 0&&i.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((i,a)=>[i,`${n}.ribbons[${a}]`])];for(let[i,a]of r)this.claim(i.id,a),this.checkModifiers(i,a),i.labelField!==void 0&&this.need(i.labelField,`${a}.labelField`);t.badges?.forEach((i,a)=>{this.claim(i.id,`${n}.badges[${a}]`),this.checkModifiers(i,`${n}.badges[${a}]`)});for(let i of["above","before","after","below"])t.title?.[i]?.forEach((a,d)=>this.walkNode(a,`${n}.title.${i}[${d}]`));t.alerts?.forEach((i,a)=>{let d=`${n}.alerts[${a}]`;this.claim(i.id,d),this.checkModifiers(i,d),this.checkValuesIn(i.message,`${d}.message`),i.messageField!==void 0&&this.need(i.messageField,`${d}.messageField`),i.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((i,a)=>{let d=`${n}.toolbar.menu[${a}]`;this.claim(i.id,d),this.checkModifiers(i,d),!i.steps&&i.action===void 0&&!i.builtin&&this.report(d,"a menu item needs steps, an action, or a built-in"),i.label===void 0&&!i.builtin&&this.report(`${d}.label`,"a menu item needs words, unless it is a built-in"),i.steps&&this.checkSteps(i.steps,`${d}.steps`)});let o=t.attachmentPreview;if(o){this.checkModifiers(o,`${n}.attachmentPreview`);let i=o.field!==void 0?this.need(o.field,`${n}.attachmentPreview.field`):void 0;i&&i.type!=="binary"&&i.type!=="image"&&this.report(`${n}.attachmentPreview.field`,`"${o.field}" is a ${i.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((o,i)=>{let a=`${n}.validate[${i}]`;if(this.checkModifiers(o,a,["when","holds"]),o.distinct!==void 0&&r&&(r.type!=="one2many"?this.report(`${a}.distinct`,`distinct is for a table of lines; "${t.field}" is a ${r.type}`):xt(r.fields,o.distinct)||this.report(`${a}.distinct`,`"${o.distinct}" is not a field of the lines of "${t.field}"`)),o.pattern!==void 0)try{new RegExp(o.pattern)}catch{this.report(`${a}.pattern`,`"${o.pattern}" is not a regular expression`)}}),t.tones?.forEach((o,i)=>this.checkModifiers(o,`${n}.tones[${i}]`,["when"])),t.placeholderWhen?.forEach((o,i)=>this.checkModifiers(o,`${n}.placeholderWhen[${i}]`,["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((o,i)=>{let a=xt(r.fields,o)?r.fields[o]:void 0;a?["integer","float","monetary"].includes(a.type)||this.report(`${n}.totals[${i}]`,`"${o}" is a ${a.type}; only integer, float and monetary columns add up`):this.report(`${n}.totals[${i}]`,`"${o}" is not a field of the lines of "${t.field}"`)}));for(let[o,i]of Object.entries(t.options??{}))o.endsWith("Field")&&typeof i=="string"&&this.need(i,`${n}.options.${o}`);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((o,i)=>!xt(r.fields,o.field)&&this.report(`${n}.order[${i}].field`,`"${o.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 o of["lineOpens","cards","fit"])r&&t[o]&&r.type!=="one2many"&&this.report(`${n}.${o}`,`${o} 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 o={fields:r.fields,lines:t.field};for(let[i,a]of Object.entries(t.cells??{})){if(!xt(r.fields,i)){this.report(`${n}.cells.${i}`,`"${i}" is not a field of the lines of "${t.field}"`);continue}this.checkModifiers(a,`${n}.cells.${i}`,["invisible","readonly","required","bold"],o),this.checkModifiers(a,`${n}.cells.${i}`,["hidden"]),a.tones?.forEach((d,s)=>this.checkModifiers(d,`${n}.cells.${i}.tones[${s}]`,["when"],o));for(let[d,s]of Object.entries(a.options??{}))d.endsWith("Field")&&typeof s=="string"&&this.need(s,`${n}.cells.${i}.options.${d}`,r.fields)}t.rowTones?.forEach((i,a)=>this.checkModifiers(i,`${n}.rowTones[${a}]`,["when"],o)),this.checkModifiers(t,n,["rowBold","lineDelete"],o),t.rowButtons?.forEach((i,a)=>{this.claim(i.id,`${n}.rowButtons[${a}]`),this.checkModifiers(i,`${n}.rowButtons[${a}]`,["invisible"],o),this.checkPress(i,`${n}.rowButtons[${a}]`)})}for(let o of["selectedButtons","controlButtons"])t[o]&&(r&&r.type!=="one2many"&&this.report(`${n}.${o}`,`${o} only apply to one2many fields; "${t.field}" is a ${r.type}`),t[o].forEach((i,a)=>{this.claim(i.id,`${n}.${o}[${a}]`),this.checkModifiers(i,`${n}.${o}[${a}]`),this.checkPress(i,`${n}.${o}[${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 o=t.columns??Object.keys(r.fields).filter(i=>i!==("lineKinds"in r?r.lineKinds?.field:void 0)&&i!==r.sequenceField);for(let i of Object.keys(t.optionalColumns))o.includes(i)||this.report(`${n}.optionalColumns.${i}`,`"${i}" is not a column of "${t.field}"`)}!r||!t.columns||(r.type==="one2many"?t.columns.forEach((o,i)=>{xt(r.fields,o)?r.fields[o].type==="one2many"&&this.report(`${n}.columns[${i}]`,`"${o}" holds lines of its own: they are edited in the line's form (lineForm), not drawn in its row`):this.report(`${n}.columns[${i}]`,`"${o}" is not a field of the lines of "${t.field}"`)}):r.type==="many2many"?t.columns.forEach((o,i)=>{(!r.fields||!xt(r.fields,o))&&this.report(`${n}.columns[${i}]`,`"${o}" 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 Hn=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),fl=["sheet","sections","tabs","wizard"];function rr(e,t={}){if(!Hn(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 o=e.data;(!Hn(o)||!(o.kind==="responses"||o.kind==="record"&&typeof o.model=="string"&&o.model))&&r("data",'data is { "kind": "record", "model": \u2026 } or { "kind": "responses" }');let i=e.fields;if(!Hn(i))r("fields","fields is an object of field definitions, by name");else for(let[l,f]of Object.entries(i))(!Hn(f)||!Nr.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=Hn(a)&&a.type==="list";if((!Hn(a)||(d?!Array.isArray(a.columns):!fl.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 jr(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 ul=new Set(["title","description","label","help","placeholder","message","text","confirm","alt","caption","tooltip","unit"]),pl=new Set(["lineKinds","filter","default","data","translations","optionalColumns","values","into","params"]);function zr(e,t,n,r,o=!1){if(typeof e=="string")return t!==null&&(t.endsWith("Label")||!o&&ul.has(t))?n(e):e;if(Array.isArray(e))return e.map(a=>zr(a,null,n,r,o));if(e===null||typeof e!="object")return e;r?.(e);let i={};for(let[a,d]of Object.entries(e))i[a]=pl.has(a)?d:zr(d,a,n,r,o||a==="options"&&!Array.isArray(d));return i}function jn(e,t){return zr(e,null,t)}function pa(e){let t=new Set,n=e.fields,r=(o,i=null)=>zr(o,i,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 or(e,t){let n=e.translations?.[t]??e.translations?.[t.split("-")[0]];return n?jn(e,r=>n[r]??r):e}function Br(e){let[t,...n]=e.toLowerCase().split("-"),r=n.find(o=>o.length===4&&!/\d/.test(o));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 Sn(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 ma(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=Qt(e);if(n.length===0)return!1;let o=new Wt(n).parse(),i=Nt(o,t);return Mt(i)}catch{return!1}}function ga(e){if(e===void 0||typeof e=="boolean"||e==="")return!0;try{let t=Qt(e);return t.length===0||new Wt(t).parse(),!0}catch{return!1}}var ha={};var ml={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"},Lt={en:ml,...ha};function qe(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n)}function un(e,t=cn(new Date)){let n=/^today([+-]\d+)?$/.exec(e);if(!n)return e;let[r,o,i]=t.split("-").map(Number);return new Date(Date.UTC(r,o-1,i+Number(n[1]??0))).toISOString().slice(0,10)}var ba=(e,t,n)=>new Intl.DateTimeFormat(t.locale,{...e,timeZone:"UTC",numberingSystem:"latn"}).format(n);function qo(e,t,n,r){if(e.type!=="date"&&e.type!=="datetime")return;let o=e.type==="date"?t:cn(new Date(t)),i=(f,c)=>qe(r[f],{label:e.label,min:c,max:c,days:c}),a=f=>ba({day:"numeric",month:"long",year:"numeric"},r,Date.parse(f)),d=e.min&&un(e.min,n),s=e.max&&un(e.max,n);if(d&&o<d)return i("before",a(d));if(s&&o>s)return i("after",a(s));let l=e.days;if(l&&!l.includes(new Date(Date.parse(o)).getUTCDay()||7)){let f=[1,2,3,4,5,6,7].filter(c=>!l.includes(c)).map(c=>ba({weekday:"long"},r,Date.UTC(2024,0,c)));return i("weekday",f.length>1?`${f.slice(0,-1).join(", ")} ${r.or} ${f[f.length-1]}`:f[0])}}function En(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 pn(e,t){let n={};for(let[r,o]of Object.entries(e)){let i=o.default;n[r]=i===void 0?En(o):o.type==="date"&&typeof i=="string"&&i.startsWith("today")?un(i,t):ve(i)}return n}function qt(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 mn(e,t){let n={};for(let[r,o]of Object.entries(e)){let i=t[r];n[r]=i?gl(i,o):o}return n}function gl(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 pt(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 qr(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 gn(e,t,n,r=Lt.en,o){let i=e.label||"This field",a=(d,s={})=>qe(r[d],{label:i,...s});if(qt(e,t))return n?a("required"):void 0;if(e.type==="matrix")return hl(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&&bl(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 yl(t,a)??qo(e,t,o,r);case"datetime":return vl(t,a)??qo(e,t,o,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 _o(t)?void 0:a("record");case"many2many":return Array.isArray(t)&&t.every(_o)?void 0:a("records");case"reference":{let d=t;if(!_o(t)||typeof d.model!="string")return a("record");if(!e.models.some(s=>s.value===d.model)){let s=xa(e.models.map(l=>l.label),r.or);return a("reference",{models:s,aModels:va(s)})}return}case"binary":case"image":return wl(e,t,a,r);default:return}}function hl(e,t,n,r){if(t===null||typeof t!="object"||Array.isArray(t))return r("matrix");let o=new Set(e.rows.map(s=>String(s.value))),i=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(!o.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&&!i.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 bl(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 _o(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&(typeof e.id=="number"||typeof e.id=="string")&&typeof e.label=="string"}function yl(e,t){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return t("dateFormat");let[n,r,o]=e.split("-").map(Number);return ya(n,r,o)?void 0:t("dateInvalid")}var xl=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2})?$/;function vl(e,t){let n=typeof e=="string"?xl.exec(e):null;if(!n)return t("datetimeFormat");let[r,o,i,a,d,s]=n.slice(1).map(l=>Number(l??0));return ya(r,o,i)&&a<24&&d<60&&s<60?void 0:t("datetimeInvalid")}function ya(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 wl(e,t,n,r){let o=e.multiple?Array.isArray(t)?t:[t]:[t];if(e.multiple&&e.minFiles!==void 0&&o.length<e.minFiles)return n("minFiles",{min:e.minFiles});if(e.multiple&&e.maxFiles!==void 0&&o.length>e.maxFiles)return n("maxFiles",{max:e.maxFiles});for(let i of o){if(!kl(i))return n("file");let a=ir(e,i,r,e.multiple?i.name:e.label||"This field");if(a)return a}}function ir(e,t,n=Lt.en,r=t.name){if(e.maxSize!==void 0&&t.size>e.maxSize)return qe(n.fileSize,{label:r,size:en(e.maxSize)});let o=e.type==="image"?["image/*"]:e.accept;if(o&&!Sl(o,t.type)){let i=ar(o,n.or);return qe(n.fileType,{label:r,types:i,aTypes:va(i)})}}function kl(e){let t=e;return e!==null&&typeof e=="object"&&typeof t.name=="string"&&typeof t.size=="number"}function Sl(e,t){return e.some(n=>n.endsWith("/*")?t.startsWith(n.slice(0,-1)):n===t)}var El="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 Ll(e){if(e.endsWith("/*"))return e.slice(0,-2);let t=e.split("/")[1]??e;return El.find(([n])=>t.includes(n))?.[1]??t.toUpperCase()}function ar(e,t){return xa([...new Set(e.map(Ll))],t)}function xa(e,t){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`}function va(e){return/^[aeiou]/i.test(e)?`an ${e}`:`a ${e}`}function en(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 wa=e=>Math.round(e*1e9)/1e9,ka=(e,t)=>e.find(n=>n.value===t)?.score??0,Sa=e=>e.reduce((t,n)=>Math.max(t,n.score??0),0),Ea=e=>e.reduce((t,n)=>t+Math.max(0,n.score??0),0),La=(e,t,n)=>n?Array.isArray(t)?t.reduce((r,o)=>r+ka(e,o),0):0:ka(e,t);function Ra(e,t){let n=0,r=0,o=!1;for(let[i,a]of Object.entries(e.fields))if(a.type==="selection"&&a.options.some(d=>d.score!==void 0)){o=!0;let d=a.multiple===!0;n+=La(a.options,t[i],d),r+=d?Ea(a.options):Sa(a.options)}else if(a.type==="matrix"&&a.columns.some(d=>d.score!==void 0)){o=!0;let d=a.multiple===!0,s=t[i],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?Ea(a.columns):Sa(a.columns)}return o?{score:wa(n),max:wa(r)}:null}function Fa(e){return Object.assign(new Error(e.message),{problem:e})}function _r(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 Bn(e,t){return t.every(n=>Uo(e,n))}function Uo(e,t){return"any"in t?t.any.some(n=>Uo(e,n)):"all"in t?t.all.every(n=>Uo(e,n)):Fl(e,t)}function tn(e){return e!=null&&e!==""&&e!==!1&&!(Array.isArray(e)&&!e.length)}function Rl(e){return Array.isArray(e)?e.map(t=>t!==null&&typeof t=="object"&&"id"in t?t.id:t):[]}function Fl(e,t){let n=e[t.field],r=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"id"in n?n.id:n,o=t.value,i=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"label"in n?String(n.label):String(r??"");switch(t.op){case"=":return r===o;case"=?":return!tn(o)||r===o;case"contains":case"not contains":{let a=Rl(n),s=(Array.isArray(o)?o:[o]).some(l=>a.includes(l));return t.op==="contains"?s:!s}case"!=":return r!==o;case"<":return tn(r)&&r<o;case">":return tn(r)&&r>o;case"<=":return tn(r)&&r<=o;case">=":return tn(r)&&r>=o;case"in":return Array.isArray(o)&&o.includes(r);case"not in":return Array.isArray(o)&&!o.includes(r);case"like":return i.includes(String(o));case"ilike":return i.toLowerCase().includes(String(o).toLowerCase());case"startswith":return i.toLowerCase().startsWith(String(o).toLowerCase());case"endswith":return i.toLowerCase().endsWith(String(o).toLowerCase());case"set":return tn(n);case"notset":return!tn(n);case"between":{if(!tn(r)||!Array.isArray(o))return!1;let[a,d]=o;return r>=a&&r<=d}}}var zn=null;function Ur(e,t){let n=r=>{if("any"in r){let i=r.any.map(n);return i.includes(zn)?zn:{any:i}}if("all"in r){let i=r.all.map(n).filter(a=>a!==zn);return i.length?{all:i}:zn}let o=r.valueFrom!==void 0?Al(t,r.valueFrom):r.value??null;return r.op==="=?"?tn(o)?{field:r.field,op:"=",value:o}:zn:{field:r.field,op:r.op,value:o}};return e.map(n).filter(r=>r!==zn)}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 Aa=new Set(["char","text","html"]),Ta=new Set(["integer","float","monetary"]),Tl=new Set(["many2one","many2many"]);function Kr(e,t,n,r={searchFor:"Search {field} for: {text}"}){let o=e.trim();if(!o)return[];let i=[];for(let d of n.searchFields??n.columns){let s=t.fields[d];if(!s)continue;let l=(f,c,k,m)=>i.push({field:d,fieldLabel:s.label,op:f,value:c,valueLabel:k,label:m??qe(r.searchFor,{field:s.label,text:o})});if(Aa.has(s.type)||Tl.has(s.type))l("ilike",o,o);else if(s.type==="selection"){let f=o.toLowerCase();for(let c of s.options)c.label.toLowerCase().includes(f)&&l("=",c.value,c.label,`${s.label}: ${c.label}`)}else if(Ta.has(s.type)){let f=Number(o.replace(/[\s,]/g,""));o&&Number.isFinite(f)&&l("=",f,o)}}let a=d=>{let s=t.fields[d.field]?.type??"";return Aa.has(s)?0:s==="selection"?1:Ta.has(s)?2:3};return i.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 Gr(e,t){let n=[];for(let r of e)if(r.kind==="field"){let o=r.values.map(i=>({field:r.field,op:i.op,value:i.value}));n.push(o.length===1?o[0]:{any:o})}else if(r.kind==="filters"){let o=r.ids.map(i=>t.filters?.find(a=>a.id===i)?.filter??[]).filter(i=>i.length);o.length===1?n.push(...o[0]):o.length>1&&n.push({any:o.map(i=>i.length===1?i[0]:{all:i})})}else r.kind==="custom"&&n.push(...r.filter);return n}function Jr(e){return e.find(t=>t.kind==="groupBy")?.fields??[]}var sr={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function Yr(e,t=sr){return new Promise(n=>{t.setTimeout(n,e)})}function $a(e={}){let t=ve(e.records??{}),n=[],r=[],o=new Map,i=1e3,a=()=>e.delayMs?Yr(e.delayMs,e.scheduler):Promise.resolve(),d=p=>t[p]??(t[p]={}),s=(p,y)=>{let b=d(p)[String(y)]?.[e.labelField?.[p]??"name"];return typeof b=="string"?b:String(y)},l=(p,y)=>{let b=e.shows?.[p],v=b?d(p)[String(y.id)]:void 0;if(!b||!v)return y;let R={...y};b.avatar&&typeof v[b.avatar]=="string"&&(R.avatar=v[b.avatar]),b.color&&typeof v[b.color]=="number"&&(R.color=v[b.color]),b.folded&&(R.folded=v[b.folded]===!0);let x=(b.details??[]).map(L=>v[L]).map(L=>L&&typeof L=="object"&&"label"in L?L.label:L).filter(L=>typeof L=="string"&&L.trim());return x.length&&(R.details=x.join(`
3
- `)),R},f=p=>Math.max(0,...Object.keys(d(p)).map(Number).filter(Number.isFinite))+1,c=p=>Number.isFinite(Number(p))?Number(p):p,k=(p,y)=>({id:c(p),...y});function m(p,y){let b=[...p];for(let v of y)v.op==="create"?b.push({key:v.key,id:++i,values:ve(v.values)}):v.op==="update"?b=b.map(R=>R.id===v.id?{...R,values:{...R.values,...ve(v.values)}}:R):b=b.filter(R=>R.id!==v.id);return b}function S(p,y,b){let v=[...p],R=x=>({id:x,label:s(b,x)});for(let x of y)x.op==="link"&&!v.some(L=>L.id===x.id)?v.push(R(x.id)):x.op==="unlink"?v=v.filter(L=>L.id!==x.id):x.op==="set"?v=x.ids.map(R):x.op==="clear"&&(v=[]);return v}function h(p,y){let b=p[y];return b&&"relation"in b?b.relation:y}return{records:t,responses:n,calls:r,async load(p){r.push({method:"load",request:p}),await a();let y=d(p.model)[String(p.id)];if(!y)throw new Error(`No ${p.model} record with id ${p.id}`);let b=ve(y);if(e.shows)for(let[v,R]of Object.entries(p.fields)){let x=b[v];R.type==="many2one"&&x&&typeof x=="object"&&"id"in x?b[v]=l(R.relation,x):R.type==="many2many"&&Array.isArray(x)&&(b[v]=x.map(L=>l(R.relation,L)))}return b},async save(p){r.push({method:"save",request:p}),await a();let y=p.id??f(p.model),b={...d(p.model)[String(y)]??{},...ve(p.changes.values)};for(let[v,R]of Object.entries(p.changes.lines))b[v]=m(b[v]??[],R);for(let[v,R]of Object.entries(p.changes.links))b[v]=S(b[v]??[],R,h(p.fields,v));return d(p.model)[String(y)]=b,{id:y,values:ve(b)}},async onchange(p){r.push({method:"onchange",request:p}),await a();let y=e.onchange?.[p.model]?.[p.changed],b=e.warnings?.[p.model]?.[p.changed],v=y?{values:y(ve(p.values))}:{},R=b?.(ve(p.values));return R?{...v,warning:R}:v},async search(p){r.push({method:"search",request:p}),await a();let y=p.query.trim().toLowerCase();return Object.entries(d(p.model)).filter(([b,v])=>Bn(k(b,v),p.filter??[])).map(([b])=>({id:c(b),label:s(p.model,c(b))})).filter(b=>b.label.toLowerCase().includes(y)).slice(0,p.limit??8).map(b=>l(p.model,b))},async list(p){r.push({method:"list",request:p}),await a();let y=Object.entries(d(p.model)).filter(([b,v])=>Bn(k(b,v),p.filter)).map(([b,v])=>({id:c(b),values:v}));return y.sort((b,v)=>{for(let R of p.sort){let x=$l(b.values[R.field],v.values[R.field]);if(x.empty)return x.result;if(x.result)return R.desc?-x.result:x.result}return 0}),{total:y.length,records:y.slice(p.offset,p.offset+p.limit).map(({id:b,values:v})=>({id:b,values:Object.fromEntries(p.fields.map(R=>[R,ve(v[R]??null)]))}))}},async groups(p){r.push({method:"groups",request:p}),await a();let y=new Map;for(let[b,v]of Object.entries(d(p.model))){if(!Bn(k(b,v),p.filter))continue;let R=v[p.field]??null,x=R!==null&&typeof R=="object"&&!Array.isArray(R)&&"id"in R?R:null,L=x?x.id:R,E=JSON.stringify(L),w=y.get(E)??{value:L,label:x?x.label:R===null||R===""?"":String(R),count:0};w.count++,y.set(E,w)}return[...y.values()].sort((b,v)=>b.value===null==(v.value===null)?b.label.localeCompare(v.label):b.value===null?1:-1)},async create(p){r.push({method:"create",request:p}),await a();let y=d(p.model),b=Object.keys(y).reduce((v,R)=>Math.max(v,Number(R)||0),0)+1;return y[String(b)]={...ve(p.values??{}),name:p.name},{id:b,label:p.name}},async submit(p){return r.push({method:"submit",request:p}),await a(),n.push(ve(p)),{id:n.length}},async archive(p){r.push({method:"archive",request:p}),await a();let y=d(p.model)[String(p.id)];if(!y)throw new Error(`No ${p.model} record with id ${p.id}`);y.active=!p.archive},async copy(p){r.push({method:"copy",request:p}),await a();let y=d(p.model)[String(p.id)];if(!y)throw new Error(`No ${p.model} record with id ${p.id}`);let b=f(p.model),v=ve(y),R=e.labelField?.[p.model]??"name";typeof v[R]=="string"&&(v[R]=`${v[R]}${e.copySuffix??" (copy)"}`);for(let[x,L]of Object.entries(v))Array.isArray(L)&&L.every(E=>E&&typeof E=="object"&&"key"in E&&"values"in E)&&(v[x]=L.map(E=>({...E,id:++i})));return d(p.model)[String(b)]=v,{id:b,values:ve(v)}},async delete(p){if(r.push({method:"delete",request:p}),await a(),!d(p.model)[String(p.id)])throw new Error(`No ${p.model} record with id ${p.id}`);delete d(p.model)[String(p.id)]},async attachments(p){return r.push({method:"attachments",request:p}),await a(),ve(e.attachments?.[`${p.model}:${p.id}`]??[])},async options(p){r.push({method:"options",request:p}),await a();let y=e.lists?.[p.list];if(!y)throw new Error(`No list "${p.list}"`);return ve(typeof y=="function"?await y(p.values):y)},async definitions(p){r.push({method:"definitions",request:p}),await a();let y=e.definitions?.[p.list];if(!y)throw new Error(`No definitions "${p.list}"`);let b=y(p.values),v=o.get(`${p.list}:${JSON.stringify(b)}`)??[];return ve([...b,...v.filter(R=>!b.some(x=>x.name===R.name))])},async saveDefinitions(p){r.push({method:"saveDefinitions",request:p}),await a();let y=e.definitions?.[p.list]?.(p.values)??[];o.set(`${p.list}:${JSON.stringify(y)}`,ve(p.definitions.filter(b=>!y.some(v=>v.name===b.name))))}}}function $l(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,[o,i]=[r(e),r(t)];return typeof o=="number"&&typeof i=="number"?{result:o-i,empty:!1}:{result:String(o).localeCompare(String(i)),empty:!1}}var Xr=["street","line2","city","region","postcode","country"];function Ma(e,t,n,r){let o=t.options??{},i=t.label??e.label;if(e.type==="one2many"&&Array.isArray(n)&&n.length){if(typeof o.min=="number"&&n.length<o.min)return qe(r.minLines,{label:i,min:o.min});if(typeof o.max=="number"&&n.length>o.max)return qe(r.maxLines,{label:i,max:o.max})}let a=o.requiredParts;if(t.widget!=="address"||!Array.isArray(a)||!n||typeof n!="object"||Array.isArray(n))return;let d=Array.isArray(o.parts)?o.parts:Xr,s=n,l=Xr.findIndex(f=>a.includes(f)&&d.includes(f)&&!String(s[f]??"").trim());return l<0?void 0:qe(r.required,{label:r.addressParts.split("|")[l]})}var Ml={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 Ko(e,t,n,r){let o=t.widget??"";if(e.type!=="char")return Ma(e,t,n,r);if(typeof n!="string"||!n.trim())return;let i=n.trim(),a=t.options??{},d=t.label??e.label,s=Ml[o],l=i.match(/\p{Nd}/gu)?.length??0;if(s&&(!s.test(i)||o==="phone"&&(l<7||l>15)))return r[o];if(o==="time"){if(typeof a.min=="string"&&i<a.min)return qe(r.before,{label:d,min:a.min});if(typeof a.max=="string"&&i>a.max)return qe(r.after,{label:d,max:a.max})}if(o==="tags"&&typeof a.max=="number"&&i.split(typeof a.separator=="string"&&a.separator?a.separator:",").filter(c=>c.trim()).length>a.max)return qe(r.atMost,{label:d,max:a.max})}function Na(e,t,n,r=!0,o={},i){let a={id:t??null,user:{id:n?.id??null,name:n?.name??null,roles:[...n?.roles??[]]},editing:r,context:o,...i?{parent:i}:{}};for(let d of Object.keys(a))d in e&&delete a[d];return a}function jt(e,t,n){return{...Na(t,n.recordId,n.user,n.editing,n.context,n.parent),...mn(e,t)}}function hn(e,t,n,r=null){let o={parent:n,user:n.user??Na({},null,void 0).user,id:r,context:n.context??{}};for(let i of Object.keys(o))i in t&&delete o[i];return{...o,...mn(e,t)}}function Ln(e,t,n){let r=new Map;return{today:n,lines(o){let i=t[o];if(i?.type!=="one2many")return;let a=r.get(o);return a||(a=(e[o]??[]).filter(s=>pt(i,s.values)===null).map(s=>mn(s.values,i.fields)),r.set(o,a)),a}}}function Ca(e){let t=new Map;for(let[r,o]of Object.entries(e))o.compute!==void 0&&t.set(r,Ht(o.compute));let{order:n}=Dr(new Map([...t].map(([r,o])=>[r,o.fields])));return n.map(r=>[r,t.get(r),e[r]])}function Rn(e,t){if(e.type==="boolean")return Mt(t);if(t==null)return null;switch(e.type){case"integer":return yt(t)?tr(t,0):null;case"float":case"monetary":return yt(t)?e.digits?tr(t,e.digits[1]):t:null;case"char":case"text":case"html":return typeof t=="string"?t:yt(t)?String(t):null;case"date":case"datetime":return typeof t=="string"?t:null;default:return t}}function Oa(e,t,n=()=>({recordId:null})){let r=Ca(e.fields),o=new Map;for(let[s,l]of Object.entries(e.fields)){if(l.type!=="one2many")continue;let f=Ca(l.fields);f.length&&o.set(s,{def:l,steps:f})}let i={today:t};function a(s,l,f,c,k){let m=s,S=k(s);for(let[h,p,y]of l){let b=Rn(y,p.evaluate(S,c));qr(b,m[h])||(m={...m,[h]:b},Object.assign(S,mn({[h]:b},f)))}return m}function d(s,l,f){let c=o.get(s);return!c||pt(c.def,l)!==null?l:a(l,c.steps,c.def.fields,i,k=>hn(k,c.def.fields,f))}return{line:(s,l,f)=>d(s,l,jt(f,e.fields,n())),apply(s){let l=s,f=o.size?jt(s,e.fields,n()):{};for(let c of o.keys()){let k=l[c];if(!Array.isArray(k))continue;let m=!1,S=k.map(h=>{let p=d(c,h.values,f);return p===h.values?h:(m=!0,{...h,values:p})});m&&(l={...l,[c]:S})}return r.length?a(l,r,e.fields,Ln(l,e.fields,t),c=>jt(c,e.fields,n())):l}}}function Pa(e){return Object.entries(e).flatMap(([t,n])=>(n.setWhen??[]).map((r,o)=>({key:`${t}#${o}`,name:t,def:n,when:tt(r.when??!0),value:Ht(r.value),...r.on?{on:r.on}:{}})))}var Nl={has:()=>!0};function Ia(e,t,n=()=>({recordId:null})){let r=Pa(e.fields),o=new Map;for(let[s,l]of Object.entries(e.fields)){if(l.type!=="one2many")continue;let f=Pa(l.fields);f.length&&o.set(s,{def:l,rules:f})}let i={today:t};function a(s,l,f,c,k,m,S){let h=s;for(let p of l){if(p.on){let b=`${k}${p.key}@${JSON.stringify(p.on.map(v=>s[v]??null))}`;if(S.add(b),m.has(b)||!p.when.evaluate(f,c))continue}else{if(!p.when.evaluate(f,c))continue;let b=k+p.key;if(S.add(b),m.has(b))continue}let y=Rn(p.def,p.value.evaluate(f,c));qr(y,h[p.name])||(h={...h,[p.name]:y})}return h}function d(s,l){let f=new Set,c=r.length?a(s,r,jt(s,e.fields,n()),Ln(s,e.fields,t),"",l,f):s,k=o.size?jt(s,e.fields,n()):{};for(let[m,{def:S,rules:h}]of o){let p=s[m];if(!Array.isArray(p))continue;let y=!1,b=p.map(v=>{if(pt(S,v.values)!==null)return v;let R=a(v.values,h,hn(v.values,S.fields,k,v.id??null),i,`${m}.${v.key}.`,l,f);return R===v.values?v:(y=!0,{...v,values:R})});y&&(c={...c,[m]:b})}return{values:c,holding:f}}return{apply:d,holding:s=>d(s,Nl).holding}}function Va(e){return(e??[]).map(t=>({rule:t,when:tt(t.when??!0),pattern:t.pattern===void 0?null:new RegExp(`^(?:${t.pattern})$`),holds:t.holds===void 0?null:tt(t.holds)}))}function Da(e,t,n,r,o){let i={};if(!r.length||qt(e,n))return i;for(let a of r){let d=a.rule.level??"error";if(i[d]!==void 0||!a.when.evaluate(o.context,o.env))continue;let s=Cl(a,e,n,o.now)??Il(a,o);s&&(i[d]=a.rule.message??qe(o.messages[s.say],{label:t,...s.values}))}return i}function Cl({rule:e,pattern:t},n,r,o){let i=typeof r=="string"?r:null;if(i!==null&&e.minLength!==void 0&&i.length<e.minLength)return{say:"minLength",values:{min:e.minLength}};if(i!==null&&e.maxLength!==void 0&&i.length>e.maxLength)return{say:"maxLength",values:{max:e.maxLength}};if(t&&(i!==null||yt(r))&&!t.test(String(r)))return{say:"pattern"};if(i!==null&&e.endsWith!==void 0&&!i.trim().toLowerCase().endsWith(e.endsWith.toLowerCase()))return{say:"endsWith",values:{ending:e.endsWith}};if(yt(r)&&e.min!==void 0&&r<e.min)return{say:"min",values:{min:e.min}};if(yt(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=Ol(n,r,e.distinct);if(d!==null)return{say:"distinct",values:{column:n.fields[e.distinct]?.label??e.distinct,value:d}}}if(i!==null&&e.date!==void 0){let d=Vl(n,i,o);if(e.date==="past"&&d>=0)return{say:"datePast"};if(e.date==="future"&&d<=0)return{say:"dateFuture"}}}function Ol(e,t,n){let r=e.fields[n],o=new Set;for(let i of t){if(pt(e,i.values)!==null)continue;let a=i.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(!o.has(s)){o.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 Il({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 Vl(e,t,n){if(e.type==="datetime")return Math.sign(Date.parse(t)-n.getTime());let r=cn(n);return t<r?-1:t>r?1:0}var Wa=new Map;function Dl(e){let t=Wa.get(e);return t||Wa.set(e,t=Ht(e)),t}function Go(e,t){let n=e.trim();if(Vn.test(n)&&n in t.fields)return ve(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?ve(t.parent.values[r[1]]):Dl(e).evaluate(t.context,t.env)}function Ha(e,t,n){if(e.type!=="many2one"&&e.type!=="many2many")return Rn(e,t);let r=o=>{if(o==null||o===!1||o==="")return null;if(typeof o=="number"||typeof o=="string")return{id:o,label:n.labelOf?.(e.relation,o)??String(o)};if(typeof o=="object"&&!Array.isArray(o)&&"id"in o){let i=o;return{id:i.id,label:typeof i.label=="string"?i.label:n.labelOf?.(e.relation,i.id)??String(i.id)}}return null};return e.type==="many2one"?r(Array.isArray(t)?t[0]:t):(Array.isArray(t)?t:[t]).map(r).filter(o=>o!==null)}function ja(e,t,n){let r={};for(let[o,i]of Object.entries(e)){let a=t[o];a&&(r[o]=Ha(a,Go(i,n),n))}return r}function Jo(e,t){let n={};for(let[r,o]of Object.entries(e))n[r]=Go(o,t)??null;return n}function Yo(e,t){let n={};for(let[r,o]of Object.entries(e))o.defaultFrom!==void 0&&(n[r]=Ha(o,Go(o.defaultFrom,t),t));return n}function za(e){let t=Xo(e.tones),n=tt(e.bold);return(r,o)=>({tone:Zo(t,r,o),bold:n.evaluate(r,o)})}var Xo=e=>(e??[]).map(t=>({tone:t.tone,when:tt(t.when)})),Zo=(e,t,n)=>e.find(r=>r.when.evaluate(t,n))?.tone??null;function Ba(e){let t=new Map;for(let[d,s]of Object.entries(e.cells??{}))t.set(d,{invisible:tt(s.invisible),readonly:tt(s.readonly),required:tt(s.required),hidden:tt(s.hidden),...s.roles?.length?{roles:s.roles}:{},tones:Xo(s.tones),bold:tt(s.bold)});let n=Xo(e.rowTones),r=tt(e.rowBold),o=e.lineDelete===void 0?null:tt(e.lineDelete),i=e.rowButtons??[],a=i.map(d=>({id:d.id,roles:d.roles,invisible:tt(d.invisible)}));return{buttons:i,line(d,s,l){let f={tone:Zo(n,d,s),bold:r.evaluate(d,s),cells:{},buttons:{},deletable:o?.evaluate(d,s)??!0};for(let[c,k]of t)f.cells[c]={invisible:k.invisible.evaluate(d,s),readonly:k.readonly.evaluate(d,s),required:k.required.evaluate(d,s),tone:Zo(k.tones,d,s),bold:k.bold.evaluate(d,s)};for(let c of a)f.buttons[c.id]=Sn(c.roles,l)&&!c.invisible.evaluate(d,s);return f},hidden(d,s,l,f){let c=t.get(d);return!!c&&(!Sn(c.roles,f)||c.hidden.evaluate(s,l))}}}var Zr=Object.freeze({done:!0}),Qo=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),ei=e=>e instanceof Error?e.message:String(e);function qa(e){let t=new Map,n=new Map,r=x=>{let L=t.get(x);return L||t.set(x,L=Ht(x)),L};function o(x){if(typeof x=="boolean")return x;let L=n.get(x);L||n.set(x,L=tt(x));let{context:E,env:w}=e.reading();return L.evaluate(E,w)}let i=x=>{let L=x.trim();return Vn.test(L)?L:null};function a(x,L){let E=i(x);if(L&&E!==null&&E in e.fields)return ve(e.values()[E]);let{context:w,env:g}=e.reading();return r(x).evaluate(w,g)}function d(x,L){let E=e.values();for(let[w,g]of Object.entries(e.fields)){if(g.type!=="many2one"&&g.type!=="many2many"||g.relation!==x)continue;let P=E[w],T=(Array.isArray(P)?P:P?[P]:[]).find(H=>H&&H.id===L);if(T)return T.label}}function s(x,L,E=()=>{}){let w=g=>{if(g==null||g===!1||g==="")return null;let P=x.relation,z=T=>E(T)??d(P,T)??String(T);if(typeof g=="number"||typeof g=="string")return{id:g,label:z(g)};if(typeof g=="object"&&!Array.isArray(g)&&"id"in g){let T=g;return{id:T.id,label:typeof T.label=="string"?T.label:z(T.id)}}return null};return x.type==="many2one"?w(L):x.type==="many2many"?(Array.isArray(L)?L:[L]).map(w).filter(g=>g!==null):Rn(x,L)}function l(x){let L=e.fields[x];if(!L)throw new Error(`The page has no field "${x}"`);return L}async function f(x){return e.host?e.host.ask(x):e.confirm?e.confirm(x):!0}function c(x){return{reason:"cannot",message:x}}async function k(x,L){let E=e.host;if(!E)return c(`Nothing can open "${x.page}" here: the form has no host`);let w=x.record!==void 0?a(x.record,!1):null,g={page:x.page,...x.version!==void 0?{version:x.version}:{},as:x.as??"dialog",...x.side&&x.as==="panel"?{side:x.side}:{},...x.title!==void 0?{title:x.title}:{},recordId:typeof w=="number"||typeof w=="string"&&w!==""?w:null,...x.values?{values:m(x.values)}:{},...x.filter?{filter:Ur(x.filter,e.reading().context)}:{}},P;try{P=await E.open(g)}catch(T){return{reason:"cannot",message:ei(T),error:T}}if(!P.saved)return{reason:"closed"};if(x.into&&e.write(S(x.into,P)),!x.then)return null;let z=await R(x.then,L);return z.done?null:{reason:z.reason,message:z.message,step:z.step,error:z.error}}function m(x){let L={};for(let[E,w]of Object.entries(x))L[E]=a(w,!0)??null;return L}function S(x,L){let E=L.values??{},w=L.recordId??null,g={...Wl(E),id:w},P=[L.label,E.display_name,E.name].find(H=>typeof H=="string"&&H!==""),z=H=>H===w?P:void 0,T={};for(let[H,N]of Object.entries(x)){let j=l(H),V=i(N),B=V==="id"?w:V!==null&&!Qo.has(j.type)&&V in E?E[V]:r(N).evaluate(g,{today:e.today});T[H]=s(j,B,z)}return T}async function h(x,L){let E={id:L.id,action:x.action,...x.params?{params:ve(x.params)}:{},recordId:e.recordId(),values:ve(e.values()),...L.recordIds?{recordIds:[...L.recordIds]}:{},...L.line?{line:ve(L.line)}:{},...L.lines?{lines:ve(L.lines)}:{}};if(!e.onAction)return null;let w;try{w=await e.onAction(E)??void 0}catch(g){return{reason:"app",message:ei(g),error:g}}if(e.answered(E,w),!w)return null;if(w.reload){let g=await e.reload();if(g)return g}if(w.values){let g={};for(let[P,z]of Object.entries(w.values))P in e.fields&&(g[P]=s(e.fields[P],z));e.write(g)}if(w.say!==void 0){let g=typeof w.say=="string"?{message:w.say}:w.say;e.host?.say(g.message,g.tone??"info")}if(w.post!==void 0){let g=typeof w.post=="string"?{message:w.post}:w.post,P=await p(g.message,g.kind??"note",!1);if(P)return P}if(w.record!==void 0){let g=await e.showRecord(w.record);if(g)return g}if(w.open){let g=await k(w.open,L);if(g)return g}return w.stop?(typeof w.stop=="string"&&e.host?.say(w.stop,"warning"),{reason:"app",...typeof w.stop=="string"?{message:w.stop}:{}}):null}async function p(x,L,E){let w=E?Dn(x):[{text:x}],g=w.map(T=>T.field?e.wordsOf(T.field):T.text).join(""),P=w.map(T=>T.field&&e.fields[T.field]?.type==="html"?String(e.values()[T.field]??""):Hl(T.field?e.wordsOf(T.field):T.text)).join("");return await e.post({kind:L,text:g,body:`<p>${P}</p>`})?null:c("Nothing can post a message here: no conversation is beside this record")}async function y(x,L,E){return e.onAction?h({action:x},E):c(`Nothing can ${x} this record here: the data source has no ${L}, and the app takes no actions`)}async function b(x,L){let E=e.recordId();if(E==null)return c(`A new record cannot be ${x==="duplicate"?"duplicated":x==="delete"?"deleted":`${x}d`}: it is not saved yet`);if(x==="archive"||x==="unarchive")return e.archive?(await e.archive(x==="archive"),e.told({archived:x==="archive"},E),e.reload()):y(x,"archive",L);if(x==="duplicate"){if(e.changed()){let P=await e.save(L.chain);if(P)return P}if(!e.copy){let P=await y(x,"copy",L),z=e.recordId();return!P&&z!=null&&z!==E&&e.told({copied:z},E),P}let w=await e.copy(),g=await e.showRecord(w);return g||(e.told({copied:w},E),null)}if(!e.remove){let w=await y(x,"delete",L);return w||e.told({deleted:!0},E),w}return await e.remove(),e.told({deleted:!0},E),null}async function v(x,L){switch(x.do){case"set":{let E=l(x.field);return e.write({[x.field]:s(E,a(x.value,!Qo.has(E.type)))}),null}case"clear":return e.write({[x.field]:En(l(x.field))}),null;case"addLine":{let E=l(x.field);if(E.type!=="one2many")return c(`"${x.field}" is a ${E.type}; a line is added to a one2many`);let w={};for(let[g,P]of Object.entries(x.values??{})){let z=E.fields[g];if(!z)return c(`The lines of "${x.field}" have no field "${g}"`);w[g]=s(z,a(P,!Qo.has(z.type)))}return e.addLine(x.field,w),null}case"check":return e.check(x.fields);case"save":return e.save(L.chain);case"reset":return e.reset(),null;case"goTo":{let E=e.goTo(x.target,L.chain);if(E!==void 0)return E;let w=e.host?.show;return w?(e.showing(L.chain,()=>w.call(e.host,x.target)),null):c(`Nothing can show "${x.target}" here: the form has no host that shows tabs`)}case"say":return e.host?.say(x.message,x.tone??"info"),null;case"ask":return await f(x.message)?null:{reason:"no",message:x.message};case"call":return h(x,L);case"open":return k(x,L);case"close":{let E=e.host?.close;return E?(E.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 E=e.host?.openUrl;if(!E)return c("Nothing can open a web address here: the form has no host that opens one");let w=a(x.url,!1);return typeof w!="string"||!w.trim()?c(`"${x.url}" gives no address to open`):(E.call(e.host,w.trim(),x.newTab??!0),null)}case"archive":case"unarchive":case"duplicate":case"delete":return b(x.do,L);case"post":return p(x.message,x.kind??"note",!0)}}async function R(x,L){for(let E=0;E<x.length;E++){let w=x[E],g;try{if(w.when!==void 0&&!o(w.when))continue;g=await v(w,L)}catch(P){g={reason:"cannot",message:ei(P),error:P}}if(g)return{done:!1,stoppedAt:E,step:g.step??w,reason:g.reason,...g.message!==void 0?{message:g.message}:{},...g.error!==void 0?{error:g.error}:{}}}return Zr}return{runSteps:R,ask:f}}function Wl(e){let t={},n=r=>{if(r===null||typeof r!="object")return r;let o=r;return"key"in o&&"values"in o?o.key:"model"in o&&"id"in o?`${o.model},${o.id}`:"id"in o?o.id:"name"in o&&"type"in o&&"size"in o?o.name:r};for(let[r,o]of Object.entries(e))t[r]=Array.isArray(o)?o.map(n):n(o);return t}function _a(e){let t=new Map;return function(r,o,i,a){if(!o?.length||i.includes(r))return Promise.resolve(Zr);let d=l=>{let f,c=new Promise(k=>f=k).finally(()=>{l.running===c&&!l.queued&&t.delete(r)});return l.running=c,f(e(r,o,[...i,r])),c},s=t.get(r);if(!s){let l={running:Promise.resolve(Zr)};return t.set(r,l),d(l)}if(!a)return Promise.resolve(Zr);if(!s.queued){let l=()=>(s.queued=void 0,d(s));s.queued=s.running.then(l,l)}return s.queued}}function Hl(e){return e.replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t]).replace(/\n/g,"<br>")}function eo(e){return Ga(e,[]).form}var Ua=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ti=e=>e;function Ga(e,t){let{page:n}=e,r=e.scheduler??sr,o=e.messages??Lt.en,i=Ul(n.layout),a=new Map;for(let u of i.values()){let F=u.source.validate;u.kind==="field"&&F&&a.set(u.id,Va(F))}let d=new Map;for(let u of i.values()){let F=u.source;u.kind!=="field"||n.fields[F.field]?.type!=="one2many"||(F.cells||F.rowTones||F.rowBold!==void 0||F.rowButtons||F.lineDelete!==void 0)&&d.set(u.id,{field:F.field,compiled:Ba(F)})}let s=new Map;for(let u of i.values()){let F=u.source;u.kind==="field"&&(F.tones||F.bold!==void 0)&&s.set(u.id,za(F))}let l=new Map;for(let u of i.values()){let F=u.source;u.kind==="field"&&F.order?.length&&n.fields[F.field]?.type==="one2many"&&!l.has(F.field)&&l.set(F.field,F.order)}function f(u,F){let O=u;for(let[C,A]of l){if(F&&!F.includes(C))continue;let W=u[C];if(!Array.isArray(W)||W.length<2)continue;let U=[...W].sort((X,ee)=>Bl(X.values,ee.values,A));U.some((X,ee)=>X!==W[ee])&&(O={...O,[C]:U})}return O}let c=new Map,k=(u,F)=>{F.placeholderWhen?.length&&c.set(u,{fixed:F.placeholder,when:F.placeholderWhen.map(O=>({text:O.text,holds:tt(O.when)}))})};for(let u of i.values())u.kind==="field"&&"type"in u.source&&k(u.id,u.source);n.layout.type==="sheet"&&n.layout.title&&k("#title",n.layout.title);let m=[...a.values()].some(u=>u.some(F=>F.rule.level==="warning")),S=n.layout.type==="wizard"?n.layout.children.map(u=>u.id):[],h=()=>`fieldia:draft:${n.id}:${$.recordId??"new"}`,p=()=>cn(e.now?.()??new Date),y=!1,b=e.editing!==!1,v=e.parent?jt(e.parent.values,e.parent.fields,{recordId:e.parent.id??null,user:e.user,context:e.context}):void 0,R=()=>({recordId:y?$.recordId:e.recordId??null,user:e.user,editing:b,context:e.context,parent:v}),x=Oa(n,p,R),L=Ia(n,p,R),E=new Map;for(let u of i.values())u.kind==="form"&&E.set(u.id,u.source);let w=new Map,g={...n.fields};for(let u of E.values())g[u.name]={type:"json",label:u.title||u.name};let P=!1;function z(u=e.recordId==null,F=!0){let O=pn(g,p());if(u){let C={recordId:null,user:e.user,context:e.context,parent:v};Object.assign(O,Yo(n.fields,H(O,n.fields,jt(O,n.fields,C),Ln(O,n.fields,p))))}return F?f({...O,...ve(e.values??{})}):O}function T(u,F){let O=y?$.values:{};for(let[C,A]of Object.entries(n.fields)){if(A.type!=="many2one"&&A.type!=="many2many"||A.relation!==u)continue;let W=O[C],U=(Array.isArray(W)?W:W?[W]:[]).find(X=>X?.id===F);if(U)return U.label}}function H(u,F,O,C,A){return{values:u,fields:F,context:O,env:C,...A?{parent:A}:{},...e.user?{user:e.user}:{},labelOf:T}}function N(){let{context:u,env:F}=ae();return H($.values,n.fields,u,F)}function j(u,F){let C=ze(u).fields;return H(F,C,hn(F,C,ae().context),{today:p},{values:$.values,fields:n.fields})}function V(u){let F=d.get(u);if(F)return F;let O=i.get(u);if(O?.kind!=="field"||n.fields[O.field]?.type!=="one2many")throw new Error(`"${u}" is not a table of lines`);return null}function B(u,F){let O=V(u);if(!O)return{tone:null,bold:!1,cells:{},buttons:{},deletable:!0};let C=($.values[O.field]??[]).find(W=>W.key===F);if(!C)throw new Error(`"${O.field}" has no line "${F}"`);let A=ze(O.field);return O.compiled.line(hn(C.values,A.fields,ae().context,C.id??null),{today:p},ue)}function D(u,F){if(!F){let A=He(u);return A.type==="many2one"||A.type==="many2many"?A.createValues?Jo(A.createValues,N()):{}:{}}let O=($.values[F.lines]??[]).find(A=>A.key===F.key),C=ze(F.lines).fields[u];return!O||!C||C.type!=="many2one"&&C.type!=="many2many"||!C.createValues?{}:Jo(C.createValues,j(F.lines,O.values))}let I=x.apply(z()),q=L.holding(I),$={status:e.recordId!=null?"idle":"ready",recordId:e.recordId??null,values:ve(I),errors:{},dirty:[],warnings:{},warning:null,warningField:null,error:null,draft:null,step:S[0]??null,skipped:[],saveProblem:null,choices:{},definitions:{}};y=!0;let re={},Z=0,J=0,_=null,ie=null,Me=new Set,me=new Set,we=new Map,Ee=[],ce=!1,G=null,ne=null,ue=[...e.user?.roles??[]],Le={};function oe(u){let F=$.values,O=$.errors;if($={...$,...u},$.errors!==O)for(let C of w.values())C.inner.show(jl($.errors,C.name));for(let C of[...me])C($);if($.values!==F){for(let C in $.choices)Oe(C).dependsOn?.some(A=>F[A]!==$.values[A])&&nt(C);for(let C in $.definitions)Ke(C).dependsOn?.some(A=>F[A]!==$.values[A])&&$e(C)}ce&&$.step!==G&&le(Ee)}function K(u,F){let O=we.get(u);if(O)for(let C of[...O])C(F)}function Q(u,F){K("change",{field:u,value:$.values[u],values:$.values,by:F});let O=n.on?.change?.[u];F==="person"&&O&&te(Pe(`on.change.${u}`,O,[],!0))}function le(u){let F=$.step;if(F===G||F===null)return;G=F,K("step",{step:F});let O=n.on?.show?.[F];O&&te(Pe(`on.show.${F}`,O,u,!0))}function ke(u,F){let O=Ee;Ee=u;try{F()}finally{Ee=O}}let Oe=u=>n.fields[u].optionsFrom;function nt(u){let{list:F}=Oe(u),O=Le[u]=(Le[u]??0)+1,C=U=>O===Le[u]&&oe({choices:{...$.choices,[u]:U}}),A=$.choices[u]?.options??null;C({options:A,loading:!0});let W=e.dataSource;te((W?.options?W.options({list:F,values:ve($.values)}):Promise.reject(new Error(`No list "${F}"`))).then(U=>C({options:U}),U=>C({options:A,error:U.message??String(U)})))}let Ke=u=>n.fields[u].definitionsFrom,pe={};function $e(u){let{list:F}=Ke(u),O=pe[u]=(pe[u]??0)+1,C=U=>O===pe[u]&&oe({definitions:{...$.definitions,[u]:U}}),A=$.definitions[u]?.definitions??null;C({definitions:A,loading:!0});let W=e.dataSource;te((W?.definitions?W.definitions({list:F,values:ve($.values)}):Promise.reject(new Error(`No definitions "${F}"`))).then(U=>C({definitions:U}),U=>C({definitions:A,error:U.message??String(U)})))}async function he(u,F){let{list:O}=Ke(u),C=[...$.definitions[u]?.definitions??[],F];oe({definitions:{...$.definitions,[u]:{definitions:C}}}),await te(e.dataSource?.saveDefinitions?.({list:O,values:ve($.values),definitions:C})??Promise.resolve())}function Ae(u){let F=n.fields[u],O=$.choices[u]?.options;return F.type==="selection"&&F.optionsFrom&&O?{...F,options:O,optionsFrom:void 0}:F}function te(u){Me.add(u);let F=()=>Me.delete(u);return u.then(F,F),u}function ae(){if(ne?.values!==$.values||ne.recordId!==$.recordId||ne.editing!==b){let u=$.values,F=jt(u,n.fields,R());ne={values:u,recordId:$.recordId,editing:b,context:F,env:Ln(u,n.fields,p)}}return ne}let xe=()=>ae().context;function He(u){let F=g[u];if(!F)throw new Error(`The page has no field "${u}"`);return F}function ct(u){return Object.keys(g).filter(F=>JSON.stringify(u[F]??null)!==JSON.stringify(I[F]??null))}function ht(u){let F=i.get(u);if(!F)throw new Error(`The page has no element "${u}"`);let{context:O,env:C}=ae(),A=ee=>ee?!Sn(ee.roles,ue)||ee.invisible.evaluate(O,C):!1,W=A(F);for(let ee=F.parent;!W&&ee;ee=i.get(ee)?.parent??null)W=A(i.get(ee));let U=F.readonly.evaluate(O,C);for(let ee=F.parent;!U&&ee;ee=i.get(ee)?.parent??null)U=i.get(ee)?.readonly.evaluate(O,C)??!1;let X=F.field?n.fields[F.field]:void 0;return{invisible:W,readonly:U||X!==void 0&&Ka(X),required:F.required.evaluate(O,C)||X?.required===!0}}function Jt(u,F="field"){let O=A=>{if(!u)return!0;for(let W=A.id;W;W=i.get(W)?.parent??null)if(W===u)return!0;return!1},C=A=>{if(u||!$.skipped.length)return!1;for(let W=A.id;W;W=i.get(W)?.parent??null)if($.skipped.includes(W))return!0;return!1};return[...i.values()].filter(A=>A.kind===F&&O(A)&&!C(A)&&!ht(A.id).invisible)}function Nn(u){let F=a.get(u.id);if(!F)return{};let O=u.field,C=n.fields[O],A=u.source.label??C.label,{context:W,env:U}=ae();return Da(C,A,$.values[O],F,{context:W,env:U,now:e.now?.()??new Date,messages:o})}function Sr(u){let F=u.field;return u.source.widget==="tick"&&n.fields[F].type==="boolean"&&$.values[F]!==!0&&ht(u.id).required?o.tick:void 0}function Er(u){let F=u.field;return Sr(u)??Ko(n.fields[F],u.source,$.values[F],o)??gn(Ae(F),$.values[F],ht(u.id).required,o,p())??Nn(u).error}function zt(){var F;let u={};if(!m)return u;for(let O of Jt()){let C=a.has(O.id)?Nn(O).warning:void 0;C&&(u[F=O.field]??(u[F]=C))}return u}function Yt(u,F){let O=$;$={...$,values:u};try{return F()}finally{$=O}}function Bt(u){let F={};for(let O of Jt(u)){let C=O.field;if(F[C])continue;let A=n.fields[C],W=Er(O);if(W&&(F[C]=W),A.type==="one2many")for(let U of $.values[C]??[]){let X=pt(A,U.values),ee=d.has(O.id)?B(O.id,U.key).cells:{};for(let[se,fe]of Object.entries(A.fields)){if(X&&se!==A.lineKinds?.text)continue;let Fe=ee[se];if(Fe?.invisible||d.has(O.id)&&d.get(O.id).compiled.hidden(se,ae().context,ae().env,ue))continue;let Ye=gn(fe,U.values[se],fe.required===!0||Fe?.required===!0,o,p());Ye&&(F[`${C}.${U.key}.${se}`]=Ye)}}}for(let O of Jt(u,"form")){let C=w.get(O.id);if(C)for(let[A,W]of Object.entries(C.inner.errorsNow()))F[`${C.name}.${A}`]=W}return F}function Xt(u,F){let O=u;for(let C of w.values())if(!(F!=="start"&&O[C.name]===C.inner.form.getState().values)){P=!0;try{C.inner.take(Ua(O[C.name])?O[C.name]:{},F)}finally{P=!1}O={...O,[C.name]:ti(C.inner.form.getState().values)}}return O}function vn(u){let F=x.apply(u);for(let O=0;O<8;O++){let C=L.apply(F,q);if(q=C.holding,C.values===F)break;F=x.apply(C.values)}return F}function ft(u){let F=x.apply(u);return q=L.holding(F),F}function bt(u,F={},O=!1){let C=Xt(O?ft(u):vn(u),O?"fresh":"edit"),A=Object.keys($.errors).length?Lr(C):$.errors,W={};for(let U of Object.keys(u)){let X=n.fields[U];if(!(u[U]===$.values[U]||!X)&&(Qr(X,u[U])&&(W[U]=gn(X,u[U],!1,o)),X.type==="one2many"))for(let ee of u[U]??[])for(let[se,fe]of Object.entries(ee.values))Qr(X.fields[se],fe)&&(W[`${U}.${ee.key}.${se}`]=gn(X.fields[se],fe,!1,o))}Object.keys(W).length&&(A={...A,...W}),oe({values:C,dirty:ct(C),errors:A,warnings:Yt(C,zt),...F})}function Lr(u){let F=Yt(u,()=>Bt($.step??void 0)),O={};for(let C of Object.keys($.errors))F[C]&&(O[C]=F[C]);for(let[C,A]of Object.entries(re))JSON.stringify(u[C]??null)===A.value?O[C]??(O[C]=A.message):delete re[C];return O}function Rr(){let u=e.drafts;u&&(_!==null&&r.clearTimeout(_),_=r.setTimeout(()=>{_=null,u.store.setItem(h(),JSON.stringify({savedAt:new Date().toISOString(),values:$.values}))},u.delayMs??400))}function Cn(){_!==null&&r.clearTimeout(_),_=null,e.drafts?.store.removeItem(h())}function Zn(){let u=e.drafts;if(!u)return;let F=u.store.getItem(h());if(!F)return;let O;try{O=JSON.parse(F)}catch{u.store.removeItem(h());return}u.restore==="auto"?bt({...$.values,...O.values},{draft:null},!0):oe({draft:{savedAt:O.savedAt}})}function Fr(){let u=e.autosave;!u||n.data.kind!=="record"||(ie!==null&&r.clearTimeout(ie),ie=r.setTimeout(()=>{ie=null,$.dirty.length&&Object.keys(Bt()).length===0&&te(sn())},u.delayMs))}function Ar(u){let F=e.dataSource;if(!F?.onchange||n.data.kind!=="record"||Gl(n.fields[u],$.values[u]))return;let O=++J,C={model:n.data.model,id:$.recordId,changed:u,values:ve($.values)};te(F.onchange(C).then(A=>{if(O!==J)return;let W={...$.values,...A.values??{}};bt(W,{warning:A.warning??null,warningField:A.warning?u:null})},()=>{}))}function Vt(u){Rr(),Fr(),Ar(u)}function Qn(){let u={values:{},lines:{},links:{}},F=$.recordId===null||$.recordId===void 0,O=F?Object.keys(g).filter(C=>$.dirty.includes(C)||!qt(g[C],$.values[C])):$.dirty;for(let C of O){let A=g[C],W=$.values[C],U=F?En(A):I[C];A.type==="one2many"?u.lines[C]=ql(U??[],W??[]):A.type==="many2many"?u.links[C]=_l(U??[],W??[]):u.values[C]=ve(W)}return u}function Tr(){let u={};for(let F of Jt()){let O=F.field;u[O]=ve($.values[O])}for(let F of Jt(void 0,"form")){let O=w.get(F.id);O&&(u[O.name]=ve($.values[O.name]))}return u}async function sn(u=[]){return await $r(u)===null}async function $r(u){if(n.on?.beforeSave){let C=await Pe("on.beforeSave",n.on.beforeSave,u,!1);if(!C.done){if(C.reason!=="check"&&C.reason!=="save"){let A={kind:"stopped",reason:C.reason,message:C.message??""};oe({status:"error",error:A.message||null,saveProblem:A})}return{reason:"save",...C.message!==void 0?{message:C.message}:{}}}}let F=Bt();if(Object.keys(F).length)return oe({errors:F}),{reason:"save",message:Object.values(F)[0]};let O=e.dataSource;re={},oe({status:"saving",errors:{},error:null,saveProblem:null});try{if(n.data.kind==="responses"){if(!O?.submit)throw new Error("This page has no data source to send its answers to");let W=Tr();return await O.submit({pageId:n.id,values:W}),Cn(),oe({status:"saved"}),K("send",{values:W}),te(Pe("on.afterSave",n.on?.afterSave,u,!1)),null}if(!O?.save)throw new Error("This page has no data source to save to");let C=await O.save({model:n.data.model,id:$.recordId,fields:g,changes:Qn(),values:ve($.values)});Cn();let A=Xt(ft(C.values?f({...$.values,...C.values},Object.keys(C.values)):$.values),"start");return I=ve(A),oe({status:"saved",recordId:C.id,values:A,dirty:[],warnings:Yt(A,zt)}),K("save",{recordId:$.recordId,values:$.values}),te(Pe("on.afterSave",n.on?.afterSave,u,!1)),null}catch(C){let A=_r(C),W=A.kind==="fields"?A.fields??{}:{};return re=Object.fromEntries(Object.entries(W).map(([U,X])=>[U,{message:X,value:JSON.stringify($.values[U]??null)}])),oe({status:"error",error:A.message,saveProblem:A,errors:{...W}}),{reason:"save",message:A.message}}}async function On(){K("open",{recordId:$.recordId,values:$.values}),await Pe("on.open",n.on?.open,[],!0),ce=!0,le([])}function M(u,F){let O=Object.keys(u);if(O.forEach(He),!!O.length){bt({...$.values,...ve(u)});for(let C of O)Vt(C);for(let C of O)Q(C,F)}}function Y(u,F,O){let C=ze(u),A=$.values[u]??[],W=`new-${++Z}`;for(;A.some(fe=>fe.key===W);)W=`new-${++Z}`;let U=C.fields,X=pn(U,p());Object.assign(X,Yo(U,j(u,X))),C.lineDefaults&&Object.assign(X,ja(C.lineDefaults,U,N()));let ee={key:W,values:{...X,...ve(F)}};if(C.sequenceField&&ee.values[C.sequenceField]==null){let fe=A.map(Fe=>Fe.values[C.sequenceField]).filter(Fe=>typeof Fe=="number");ee.values[C.sequenceField]=fe.length?Math.max(...fe)+1:1}let se=[...A,ee];return bt({...$.values,[u]:se}),Vt(u),Q(u,O),W}function de(u){u?.forEach(He);let F=Bt(),O=u?Object.fromEntries(Object.entries(F).filter(([A])=>u.some(W=>A===W||A.startsWith(`${W}.`)))):F;oe({errors:O});let C=Object.values(O)[0];return C===void 0?null:{reason:"check",message:C}}function be(u,F){if(!S.includes(u))return;if(!De.steps().includes(u))return{reason:"cannot",message:`The step "${u}" does not apply now`};let O=!1;return ke(F,()=>O=De.goTo(u)),O?null:{reason:"check",message:Object.values($.errors)[0]}}async function Re(u,F){let O=await ye.runSteps(u,F);return K("run",{id:F.id,steps:u,result:O}),O}function Te(u){return!e.dataSource?.create||!u||u.readonly?null:u.type==="many2one"||u.type==="many2many"?u.relation:null}async function mt(u,F,O,C={}){let A=Te(u),W=e.dataSource;if(!A||!W?.create)throw new Error(`"${F}" cannot make records: its data source has no create, or it is not a link`);return te(W.create({model:A,name:O.trim(),...Object.keys(C).length?{values:C}:{}}))}async function dt(u,F,O,C,A,W,U){if(u.type!=="many2one"&&u.type!=="many2many"&&u.type!=="reference"&&u.type!=="json")throw new Error(`"${F}" is not a many2one, many2many, reference or json`);if((u.type==="reference"||u.type==="json")&&!W)throw new Error(`Searching "${F}" needs a model`);let X=e.dataSource;if(!X?.search)return[];let ee=u.type==="reference"||u.type==="json"||!u.filter?void 0:Ur(u.filter,O),se=U?[...ee??[],{field:"id",op:"in",value:U}]:ee,fe=u.type==="reference"||u.type==="json"?W:u.relation;return te(X.search({model:fe,query:C,...se?{filter:se}:{},limit:A}))}function ze(u){let F=He(u);if(F.type!=="one2many")throw new Error(`"${u}" is a ${F.type}, not a one2many`);return F}function vt(){return $.step?S.indexOf($.step):-1}function Ze(u){return i.get(u)?.source?.optional===!0}async function ot(u=!1){let F=e.dataSource;if($.recordId==null||n.data.kind!=="record")return;if(!F?.load){oe({status:"error",error:"This page has no data source to load from"});return}let O=++Ce;oe({status:"loading",error:null});try{let C=await F.load({model:n.data.model,id:$.recordId,fields:g});if(O!==Ce||(I=Xt(ft(f({...pn(g,p()),...C})),"start"),oe({status:"ready",values:ve(I),dirty:[],errors:{},warnings:Yt(I,zt)}),u))return;Zn(),te(On())}catch(C){O===Ce&&oe({status:"error",error:C.message})}}let Ce=0;async function rt(u){_!==null&&r.clearTimeout(_),ie!==null&&r.clearTimeout(ie),_=ie=null,re={},G=null,ce=!1;let F={dirty:[],errors:{},warning:null,warningField:null,error:null,draft:null,step:S[0]??null,skipped:[],saveProblem:null};if(u!=null)return oe({...F,recordId:u,status:"idle"}),ot();Ce++,I=ft(z(!0,!1));let O=Xt(ve(I),"start");oe({...F,recordId:null,status:"ready",values:O,warnings:Yt(O,zt)}),Zn(),await On()}let ge=()=>({model:n.data.model,id:$.recordId,fields:g});async function Be(u){if(e.host?.post)try{return await e.host.post(u)!==!1}catch{return!1}return we.get("post")?.size?(K("post",{recordId:$.recordId,message:u}),!0):!1}let ye=qa({fields:g,values:()=>$.values,recordId:()=>$.recordId,reading:ae,today:p,write:u=>M(u,"step"),addLine:(u,F)=>{Y(u,F,"step")},check:de,save:$r,async reload(){return $.recordId==null?{reason:"cannot",message:"The record is not saved yet: there is nothing to load again"}:(await ot(!0),$.status==="error"?{reason:"cannot",message:$.error??"The record could not be loaded again"}:null)},reset:()=>De.reset(),goTo:be,showing:ke,host:e.host,confirm:e.confirm,onAction:e.onAction,answered:(u,F)=>K("action",{request:u,result:F}),changed:()=>$.dirty.length>0,...e.dataSource?.archive&&n.data.kind==="record"?{archive:u=>te((e.dataSource?.archive)({...ge(),archive:u}))}:{},...e.dataSource?.copy&&n.data.kind==="record"?{copy:async()=>(await te((e.dataSource?.copy)(ge()))).id}:{},...e.dataSource?.delete&&n.data.kind==="record"?{remove:()=>te((e.dataSource?.delete)(ge()))}:{},async showRecord(u){return await rt(u),$.status==="error"?{reason:"cannot",message:$.error??"The record could not be loaded"}:null},told(u,F){"archived"in u?K("archive",{recordId:F,archived:u.archived}):"copied"in u?K("duplicate",{from:F,recordId:u.copied}):(K("delete",{recordId:F}),$.recordId===F&&te(rt(null)))},post:Be,wordsOf:u=>Kl(He(u),$.values[u])}),Pe=_a((u,F,O)=>Re(F,{id:u,chain:O}));function Ge(u,F){let O=[...u.steps??[]];u.action!==void 0&&O.push({do:"call",action:u.action,..."params"in u&&u.params?{params:u.params}:{}});let C="builtin"in u&&!O.length?u.builtin:void 0;C&&O.push({do:C});let A=C==="archive"?o.archiveConfirm:C==="delete"?o.deleteConfirm:void 0,W="confirm"in u&&u.confirm!==void 0?u.confirm:A;return te((async()=>{if(W&&!await ye.ask(W)){let U={done:!1,reason:"no",message:W};return K("run",{id:F.id,steps:O,result:U}),U}return Re(O,F)})())}let De={page:n,getState:()=>$,subscribe(u){return me.add(u),()=>me.delete(u)},load:()=>te(ot()),setValue(u,F,O){He(u),bt({...$.values,[u]:ve(F)}),Vt(u),Q(u,O?.by??"person")},setValues:u=>M(u,"app"),node:ht,openRecord:u=>te(rt(u)),post:Be,setEditing(u){u!==b&&(b=u,oe({}))},fieldReadonly:u=>Ka(He(u)),loadChoices:nt,loadDefinitions:$e,addDefinition:he,problem(u){He(u);let F=Jt().filter(C=>C.field===u);return F.length?F.map(Sr).find(Boolean)??F.map(C=>Ko(n.fields[u],C.source,$.values[u],o)).find(Boolean)??gn(Ae(u),$.values[u],F.some(C=>ht(C.id).required),o,p())??F.map(C=>Nn(C).error).find(C=>C!==void 0)??null:null},validate(){let u=Bt();return oe({errors:u}),Object.keys(u).length===0},save:()=>te(sn()),reset(){Cn(),re={},q=L.holding(I);let u=Xt(ve(I),"start");oe({values:u,dirty:[],errors:{},warnings:Yt(u,zt),warning:null,warningField:null,draft:null,step:S[0]??null,skipped:[],saveProblem:null})},changes:Qn,addLine:(u,F={})=>Y(u,F,"person"),updateLine(u,F,O,C){if(!ze(u).fields[O])throw new Error(`The lines of "${u}" have no field "${O}"`);let W=($.values[u]??[]).map(U=>U.key===F?{...U,values:{...U.values,[O]:ve(C)}}:U);bt({...$.values,[u]:W}),Vt(u),Q(u,"person")},moveLine(u,F,O){let A=ze(u).sequenceField;if(!A)throw new Error(`The lines of "${u}" keep no order: give the field a sequenceField`);let W=[...$.values[u]??[]],U=W.findIndex(it=>it.key===F);if(U<0)throw new Error(`"${u}" has no line "${F}"`);let X=Math.max(0,Math.min(O,W.length-1));if(X===U)return;let ee=W.map(it=>it.values[A]),se=ee.every((it,We)=>typeof it=="number"&&(We===0||it>ee[We-1]));W.splice(X,0,...W.splice(U,1));let fe=Math.min(U,X),Fe=Math.max(U,X),Ye=se?ee.slice(fe,Fe+1):[],_e=W.map((it,We)=>{let ut=se?We>=fe&&We<=Fe?Ye[We-fe]:it.values[A]:We+1;return ut===it.values[A]?it:{...it,values:{...it.values,[A]:ut}}});bt({...$.values,[u]:_e}),Vt(u),Q(u,"person")},removeLine(u,F){ze(u);for(let[C,A]of d)if(!(A.field!==u||(i.get(C)?.source).lineDelete===void 0)&&($.values[u]??[]).some(W=>W.key===F)&&!B(C,F).deletable)throw new Error(`The line "${F}" of "${u}" cannot be deleted now: its table's lineDelete does not hold on it`);let O=($.values[u]??[]).filter(C=>C.key!==F);bt({...$.values,[u]:O}),Vt(u),Q(u,"person")},async search(u,F,O=8,C={}){return dt(He(u),u,xe(),F,O,C.model,C.ids)},async previewLine(u,F,O){ze(u);let C=$.values[u]??[],A=C.find(fe=>fe.key===F);if(!A)throw new Error(`"${u}" has no line "${F}"`);let W=x.line(u,{...A.values,...O},$.values),U=e.dataSource;if(!U?.onchange||n.data.kind!=="record")return W;let X=C.map(fe=>fe.key===F?{...fe,values:W}:fe),se=((await U.onchange({model:n.data.model,id:$.recordId,changed:u,values:ve({...$.values,[u]:X})})).values?.[u]??[]).find(fe=>fe.key===F);return se?x.line(u,{...W,...se.values},$.values):W},async searchLine(u,F,O,C,A=8,W={}){let U=ze(u),X=U.fields[O];if(!X)throw new Error(`The lines of "${u}" have no field "${O}"`);let ee=($.values[u]??[]).find(se=>se.key===F);if(!ee)throw new Error(`"${u}" has no line "${F}"`);return dt(X,O,hn(ee.values,U.fields,xe(),ee.id??null),C,A,W.model,W.ids)},canCreate:u=>Te(n.fields[u])!==null,quickCreate:(u,F)=>mt(n.fields[u],u,F,n.fields[u]?D(u):{}),canCreateLine:(u,F)=>Te(ze(u).fields[F])!==null,quickCreateLine:(u,F,O,C)=>mt(ze(u).fields[F],F,O,C?D(F,{lines:u,key:C}):{}),createValues:(u,F)=>D(u,F),steps:()=>S.filter(u=>!ht(u).invisible),next(){if(!$.step)return!1;$.skipped.includes($.step)&&oe({skipped:$.skipped.filter(C=>C!==$.step)});let u=Bt($.step);if(Object.keys(u).length)return oe({errors:u}),!1;let F=De.steps(),O=S.slice(vt()+1).find(C=>F.includes(C));return O?(oe({step:O,errors:{}}),!0):!1},back(){if(!$.step)return!1;let u=De.steps(),F=S.slice(0,vt()).reverse().find(O=>u.includes(O));return F?(oe({step:F,errors:{}}),!0):!1},skip(){let u=$.step;if(!u||!Ze(u))return!1;let F=De.steps(),O=F[F.indexOf(u)+1];return O?(oe({step:O,errors:{},skipped:[...$.skipped.filter(C=>C!==u),u]}),!0):!1},goTo(u){let F=De.steps(),O=F.indexOf(u),C=$.step?F.indexOf($.step):-1;if(O===-1||C===-1)return!1;if(O<=C)return oe({step:u,errors:{}}),!0;let A=[...$.skipped];for(let W of F.slice(C,O)){if(A.includes(W))continue;let U=Bt(W);if(Object.keys(U).length){if(Ze(W)){A.push(W);continue}return oe({step:W,errors:U,skipped:A}),!1}}return oe({step:u,errors:{},skipped:A}),!0},async runAction(u,F){let O=i.get(u);if(!O||O.kind!=="button"&&O.kind!=="stat")throw new Error(`The page has no button "${u}"`);return ht(u).invisible?{done:!1,reason:"cannot",message:`The button "${u}" is hidden`}:O.parent&&i.get(O.parent)?.source?.selectedButtons?.some(C=>C.id===u)?{done:!1,reason:"cannot",message:`The button "${u}" runs with the lines chosen in its table`}:Ge(O.source,{id:u,chain:[],...F?{recordIds:[...F.recordIds]}:{}})},async linkedValues(u,F,O){let C=He(u);if(C.type!=="many2many")throw new Error(`"${u}" is not a many2many`);let A=e.dataSource;if(!A?.list||!F.length)return[];let W=await A.list({model:C.relation,fields:[...O],filter:[{field:"id",op:"in",value:[...F]}],sort:[],offset:0,limit:F.length}),U=new Map(W.records.map(X=>[String(X.id),X]));return F.flatMap(X=>{let ee=U.get(String(X));return ee?[{id:ee.id,values:ee.values}]:[]})},fieldTone(u){let F=s.get(u);if(F){let{context:O,env:C}=ae();return F(O,C)}if(i.get(u)?.kind!=="field")throw new Error(`"${u}" is not a field on this page`);return{tone:null,bold:!1}},placeholder(u){let F=c.get(u);if(!F){let A=i.get(u);if(A?.kind!=="field")throw new Error(`"${u}" is not a field on this page`);let W=A.source;return u==="#title"&&n.layout.type==="sheet"?n.layout.title?.placeholder:W.placeholder}let{context:O,env:C}=ae();return F.when.find(A=>A.holds.evaluate(O,C))?.text??F.fixed},lineState:(u,F)=>B(u,F),columnHidden(u,F){let O=V(u),{context:C,env:A}=ae();return O?O.compiled.hidden(F,C,A,ue):!1},async runRowAction(u,F,O){let C=V(u),A=C?.compiled.buttons.find(U=>U.id===F);if(!C||!A)throw new Error(`The table "${u}" has no button "${F}"`);if(!B(u,O).buttons[F])return{done:!1,reason:"cannot",message:`The button "${F}" is hidden on this line`};let W=($.values[C.field]??[]).find(U=>U.key===O);return Ge(A,{id:F,chain:[],line:{field:C.field,key:O,values:ve(W.values)}})},async runLinesAction(u,F,O){let C=i.get(u),A=C?.source,W=A?.selectedButtons?.find(fe=>fe.id===F);if(!C||!A||!W)throw new Error(`The table "${u}" has no button "${F}" for its chosen lines`);let U=$.values[A.field]??[],X=O.map(fe=>U.find(Fe=>Fe.key===fe)??null),ee=O.find((fe,Fe)=>!X[Fe]);if(ee!==void 0)throw new Error(`"${A.field}" has no line "${ee}"`);if(ht(F).invisible)return{done:!1,reason:"cannot",message:`The button "${F}" is hidden`};if(!O.length)return{done:!1,reason:"cannot",message:`The button "${F}" runs with lines chosen: none is`};let se=X;return Ge(W,{id:F,chain:[],lines:{field:A.field,keys:[...O],ids:se.flatMap(fe=>fe.id===void 0?[]:[fe.id]),values:se.map(fe=>ve(fe.values))}})},run:(u,F={})=>te(Re(u,{id:F.id??"run",chain:[],...F.recordIds?{recordIds:[...F.recordIds]}:{}})),shown(u){S.includes(u)||te(Pe(`on.show.${u}`,n.on?.show?.[u],Ee,!0))},on(u,F){let O=we.get(u);return O||we.set(u,O=new Set),O.add(F),()=>{O.delete(F)}},restoreDraft(){let u=e.drafts?.store.getItem(h());if(!u)return;let F=JSON.parse(u);bt({...$.values,...F.values},{draft:null},!0)},discardDraft(){Cn(),oe({draft:null})},async settled(){for(;Me.size;)await Promise.allSettled([...Me])},embed(u,F){let O=w.get(u);if(O)return O.inner.form;let C=E.get(u);if(!C)throw new Error(`"${u}" is not a saved form placed on this page`);let A=[...t,n.id];if(A.includes(F.id))throw new Error(`a page cannot be placed inside itself: ${[...A.slice(A.indexOf(F.id)),F.id].join(" \u2192 ")}`);let W=$.values[C.name],U=Ga({page:{...F,data:{kind:"responses"}},dataSource:e.dataSource,values:Ua(W)?W:{},onAction:e.onAction,host:e.host,confirm:e.confirm,scheduler:r,messages:o,now:e.now},A);w.set(u,{name:C.name,inner:U}),U.form.on("change",({by:se})=>{P||Q(C.name,se)}),U.form.subscribe(se=>{P||se.values===$.values[C.name]||(bt({...$.values,[C.name]:ti(se.values)}),Vt(C.name))});let X=ti(U.form.getState().values);$.dirty.includes(C.name)||(I={...I,[C.name]:X});let ee={...$.values,[C.name]:X};return oe({values:ee,dirty:ct(ee)}),U.form},embedded:u=>w.get(u)?.inner.form??null,dispose(){_!==null&&r.clearTimeout(_),ie!==null&&r.clearTimeout(ie),me.clear(),we.clear();for(let u of w.values())u.inner.form.dispose()}};return $={...$,warnings:zt()},$.recordId==null&&Zn(),$.recordId==null&&te(Promise.resolve().then(On)),{form:De,take(u,F){if(F!=="start")return bt({...pn(n.fields,p()),...u},{},F==="fresh");I=ft({...pn(n.fields,p()),...ve(u)});let O=Xt(ve(I),"start");oe({values:O,dirty:[],errors:{},warnings:Yt(O,zt),warning:null,warningField:null})},errorsNow:()=>Bt(),show(u){JSON.stringify(u)!==JSON.stringify($.errors)&&oe({errors:u})}}}function jl(e,t){let n={};for(let[r,o]of Object.entries(e))r.startsWith(`${t}.`)&&(n[r.slice(t.length+1)]=o);return n}function zl(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,o=r(e),i=r(t);return typeof o=="number"&&typeof i=="number"?o-i:typeof o=="boolean"&&typeof i=="boolean"?Number(o)-Number(i):String(o).localeCompare(String(i))}function Bl(e,t,n){for(let r of n){let o=zl(e[r.field],t[r.field]);if(o)return r.desc?-o:o}return 0}function Ka(e){return e.readonly===!0||e.compute!==void 0}function ql(e,t){let n=[],r=new Map(e.filter(i=>i.id!==void 0).map(i=>[i.key,i]));for(let i of t){let a=r.get(i.key);if(i.id===void 0||!a){n.push({op:"create",key:i.key,values:ve(i.values)});continue}let d={};for(let[s,l]of Object.entries(i.values))JSON.stringify(l)!==JSON.stringify(a.values[s])&&(d[s]=ve(l));Object.keys(d).length&&n.push({op:"update",id:i.id,values:d})}let o=new Set(t.map(i=>i.key));for(let i of e)i.id!==void 0&&!o.has(i.key)&&n.push({op:"delete",id:i.id});return n}function _l(e,t){let n=new Set(e.map(o=>o.id)),r=new Set(t.map(o=>o.id));return[...t.filter(o=>!n.has(o.id)).map(o=>({op:"link",id:o.id})),...e.filter(o=>!r.has(o.id)).map(o=>({op:"unlink",id:o.id}))]}function Ul(e){let t=new Map,n=(o,i,a,d)=>{let s=o.roles;t.set(o.id,{id:o.id,parent:i,kind:a,field:d.field,...s?.length?{roles:s}:{},invisible:tt(d.invisible),readonly:tt(d.readonly),required:tt(d.required),source:o})},r=(o,i)=>{for(let a of o)if(a.type==="field"){n(a,i,"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,i,"button",{invisible:a.invisible});else if(a.type==="tabs"){n(a,i,"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,i,"other",{invisible:a.invisible,readonly:a.readonly}),r(a.children,a.id)):a.type==="form"?n(a,i,"form",{invisible:a.invisible,readonly:a.readonly}):n(a,i,"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 o of e.children)n(o,e.id,"step",{invisible:o.invisible}),r(o.children,o.id);else if(e.type==="sections"){r(e.children,e.id);for(let o of e.footer??[])n(o,e.id,"button",{invisible:o.invisible})}else if(e.type==="list")for(let o of e.actions??[])n(o,e.id,"button",{invisible:o.invisible});else{let o=(i,a)=>{a&&n({id:i},e.id,"field",{field:a})};o("#title",e.title?.field),o("#subtitle",e.title?.subtitleField),o("#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 i of[...e.buttons??[],...e.footer??[]])n(i,e.id,"button",{invisible:i.invisible});for(let i of e.statButtons??[])n(i,e.id,"stat",{invisible:i.invisible});for(let i of[...e.ribbon?[e.ribbon]:[],...e.ribbons??[]])n(i,e.id,"other",{invisible:i.invisible});for(let i of e.alerts??[]){n(i,e.id,"other",{invisible:i.invisible});for(let a of i.buttons??[])n(a,i.id,"button",{invisible:a.invisible})}for(let i of e.badges??[])n(i,e.id,"other",{invisible:i.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 i of e.toolbar?.menu??[])if(n(i,e.id,"button",{invisible:i.invisible}),i.builtin==="archive"||i.builtin==="unarchive"){let a=t.get(i.id),d=a.invisible,s=i.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 Kl(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)}function Qr(e,t){return!!e&&(e.type==="integer"||e.type==="float"||e.type==="monetary")&&typeof t=="string"&&t.trim()!==""}function Gl(e,t){return e?.type!=="one2many"?Qr(e,t):(t??[]).some(n=>Object.entries(n.values).some(([r,o])=>Qr(e.fields[r],o)))}var Ja=new Map;function Ya(e,t){let n=`${e}:${t}`,r=Ja.get(n);return r||(r=new Intl.NumberFormat(e,{numberingSystem:"latn",minimumFractionDigits:t,maximumFractionDigits:t}),Ja.set(n,r)),r}function Fn(e,t,n,r="en"){try{let o=new Intl.NumberFormat(r,{style:"currency",currency:t,currencyDisplay:"narrowSymbol",numberingSystem:"latn",minimumFractionDigits:n,maximumFractionDigits:n}).formatToParts(e);return o.map((i,a)=>i.type==="currency"&&/^(integer|minusSign)$/.test(o[a+1]?.type??"")?`${i.value}\xA0`:i.value).join("")}catch{return`${t} ${gt(e,n,r)}`}}function Xa(e){let t=Ya(e,1).formatToParts(12345.6);return{group:t.find(n=>n.type==="group")?.value??",",decimal:t.find(n=>n.type==="decimal")?.value??"."}}function ni(e,t,n="en"){return dr(gt(e,t,n),n)}function dr(e,t="en"){let{group:n}=Xa(t);return e.split(n).join("")}function gt(e,t,n="en"){return Ya(n,t).format(e)}function _t(e,t="en"){let{group:n,decimal:r}=Xa(t),o=e.replace(/[٠-٩]/g,i=>String(i.charCodeAt(0)-1632)).replace(/[۰-۹]/g,i=>String(i.charCodeAt(0)-1776)).replace(/٫/g,r).replace(/٬/g,n);return o=o.replace(/[\s\u00a0\u202f]/g,""),n.trim()&&(o=o.split(n).join("")),r==="."?o:o.split(r).join(".")}var Za={};var Jl={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}",noLines:"No lines yet",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"},Qe={en:Jl,...Za};function to(e,t){let n=e.ownerDocument,r=n.defaultView,o=typeof t.showPopover=="function";o&&t.setAttribute("popover","manual");let i=!1,a="",d=0;function s(){let k=e.getBoundingClientRect(),m=n.documentElement.clientWidth,S=n.documentElement.clientHeight,[h,p]=[S-k.bottom-10,k.top-10],y=h<160&&p>h;Object.assign(t.style,{position:"fixed",inset:"auto",margin:"0",minWidth:`${Math.min(Math.max(k.width,224),m-16)}px`,maxWidth:`${Math.max(k.width,Math.min(448,m-16))}px`,maxHeight:`${Math.max(96,Math.min(240,y?p:h))}px`}),a=`${k.left},${k.top},${k.width},${m},${S}`;let b=t.offsetWidth,v=r?.getComputedStyle(e).direction==="rtl",R=Math.max(8,Math.min(v?k.right-b:k.left,m-b-8));Object.assign(t.style,{left:`${R}px`,top:`${y?k.top-2-t.offsetHeight:k.bottom+2}px`})}let l=()=>{if(i){if(!e.isConnected)return c.hide();s()}},f=()=>{if(!i)return;let k=e.getBoundingClientRect();`${k.left},${k.top},${k.width},${n.documentElement.clientWidth},${n.documentElement.clientHeight}`!==a&&l(),d=r?.requestAnimationFrame(f)??0},c={show(){t.hidden=!1,o&&!t.matches(":popover-open")&&t.showPopover(),s(),i||(n.addEventListener("scroll",l,!0),r?.addEventListener("resize",l)),i=!0,!d&&r?.requestAnimationFrame&&(d=r.requestAnimationFrame(f))},place:l,hide(){o&&t.matches(":popover-open")&&t.hidePopover(),t.hidden=!0,i&&(n.removeEventListener("scroll",l,!0),r?.removeEventListener("resize",l)),d&&r?.cancelAnimationFrame(d),d=0,i=!1}};return c}function Se(e){return(t,n={},...r)=>{let o=e.createElement(t);for(let[i,a]of Object.entries(n))a!==void 0&&o.setAttribute(i,a);return o.append(...r),o}}var Ne=(e,t)=>e??Qe[t??"en"]??Qe.en,Ve=(e,t)=>e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n);function Ie(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}function Rt(e,t){e.hidden!==t&&(e.hidden=t)}function st(e,t){e.textContent!==t&&(e.textContent=t)}function Je(e,t){Ie(e,"aria-invalid",String(t.invalid)),Ie(e,"aria-describedby",t.describedBy||null)}function no(e){let t=e("div",{class:"fd-announce",role:"status","aria-live":"polite"});return{element:t,say(n){t.textContent="",t.textContent=n}}}var Pt=e=>e.closest("[dir]")?.getAttribute("dir")==="rtl";function nn(e,t,n,r,o=!0){let i=Se(e)("button",{type:"button",class:"fd-choice-clear",hidden:""},t.clearSelection);i.addEventListener("click",n);let a=o&&r.options?.clear!==!1,d=!1;return{button:i,allow(s){d=a&&!s.required&&!s.readonly},show(s){Rt(i,!(d&&s))}}}function ro(e,t){let n=e("span"),r=e("button",{type:"button",class:"fd-button fd-button-link"},t.removeFile),o=e("button",{type:"button",class:"fd-button fd-button-link"},t.keep),i=e("div",{class:"fd-file-confirm",hidden:""},n,r,o),a=s=>{},d=s=>{i.hidden=!0,a(s)};return r.addEventListener("click",()=>d(!0)),o.addEventListener("click",()=>d(!1)),i.addEventListener("keydown",s=>s.key==="Escape"&&d(!1)),{element:i,ask(s,l){n.textContent=s,a=l,i.hidden=!1,o.focus()}}}var Yl=180,oo=8;function lr(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>t[r]??n)}function io(e){let{document:t,id:n,labels:r}=e,o=`${n}-list`,i=t.createElement("input");Object.assign(i,{id:n,className:"fd-input fd-combo-input",autocomplete:"off"}),i.setAttribute("role","combobox"),i.setAttribute("aria-autocomplete","list"),i.setAttribute("aria-expanded","false"),i.setAttribute("aria-controls",o),i.placeholder=e.placeholder||r.search;let a=t.createElement("ul");a.id=o,a.className="fd-listbox",a.setAttribute("role","listbox"),a.hidden=!0;let d=t.createElement("div");d.className="fd-combo",d.append(i,a);let s=to(i,a),l="",f=null,c="",k=new Map,m=!1,S=[],h=-1,p=0,y,b=!1;function v(){if(a.replaceChildren(),S.forEach((w,g)=>{let P=t.createElement("li");P.id=`${o}-${g}`,P.setAttribute("role","option"),P.setAttribute("aria-selected",String(g===h)),P.className=`fd-option${g===h?" fd-active":""}${w===f||k.has(w)?" fd-option-create":""}`,P.textContent=w.label,P.addEventListener("mousedown",z=>z.preventDefault()),P.addEventListener("click",()=>L(g)),a.append(P)}),!S.length){let w=t.createElement("li");w.className="fd-empty",w.textContent=r.noResults,a.append(w)}h>=0?i.setAttribute("aria-activedescendant",`${o}-${h}`):i.removeAttribute("aria-activedescendant"),s.place()}function R(){s.show(),i.setAttribute("aria-expanded","true")}function x(){clearTimeout(y),p++,s.hide(),i.setAttribute("aria-expanded","false"),i.removeAttribute("aria-activedescendant"),h=-1}function L(w){let g=S[w];if(!g)return;let P=c;if(x(),m=!1,g===f&&e.create){e.create(P).then(e.pick,()=>{});return}let z=k.get(g);if(z){z(P).then(T=>T&&e.pick(T),()=>{});return}e.pick(g)}function E(w){clearTimeout(y);let g=++p;y=setTimeout(async()=>{let P=await e.search(w).catch(()=>[]);if(g!==p||t.activeElement!==i)return;let z=S[h],T=z&&z!==f&&!k.has(z)?z.id:void 0,H=e.exclude?.()??new Set,N=P.filter(B=>!H.has(B.id)),j=e.shown!==void 0&&N.length>e.shown;S=j?N.slice(0,e.shown):N;let V=w.trim();f=null,e.create&&V&&!P.some(B=>B.label.trim().toLowerCase()===V.toLowerCase())&&(c=V,f={id:"__create__",label:lr(r.createNamed,{name:V})},S=[...S,f]),c=V,k=new Map((e.more?.(V,j)??[]).map((B,D)=>[{id:`__more_${D}__`,label:B.label},B.act])),S=[...S,...k.keys()],h=T===void 0?-1:S.findIndex(B=>B.id===T),v(),R()},Yl)}return i.addEventListener("input",()=>{m=!0,b||E(i.value)}),i.addEventListener("focus",()=>{b||E("")}),i.addEventListener("click",()=>{!b&&a.hidden&&t.activeElement===i&&E(m?i.value:"")}),i.addEventListener("keydown",w=>{if(!b)switch(w.key){case"ArrowDown":case"ArrowUp":{if(w.preventDefault(),a.hidden)return E(i.value);if(!S.length)return;h=(h+(w.key==="ArrowDown"?1:-1)+S.length)%S.length,v(),a.children[h]?.scrollIntoView?.({block:"nearest"});return}case"Enter":!a.hidden&&h>=0&&(w.preventDefault(),L(h));return;case"Escape":a.hidden||w.preventDefault(),x(),m=!1,i.value=l;return;case"Backspace":i.value===""&&e.onEmptyBackspace?.();return}}),i.addEventListener("blur",()=>{p++,clearTimeout(y),x();let w=m&&i.value.trim()===""&&l!=="";m=!1,w?e.onCommitEmpty?.():i.value=l}),{element:d,input:i,setText(w){l=w,!m&&i.value!==w&&(i.value=w)},setReadonly(w){b=w,i.readOnly!==w&&(i.readOnly=w),w&&x()},close:x}}function qn(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 o=e.createElement("img");o.src=t.avatar,o.alt="",r.replaceChildren(o)}else{let o=t.label.trim().split(/\s+/).filter(Boolean);r.textContent=(o.length>1?o[0][0]+o[o.length-1][0]:o[0]?.[0]??"").toUpperCase()}return r}function ao(e,t){let n=e.ownerDocument;e.replaceChildren(...t.split(`
4
- `).map(r=>{let o=n.createElement("div");return o.textContent=r,o}))}function Qa(e){let t=e.options??{};return{avatar:t.avatar===!0,details:t.details===!0,colors:t.colors===!0,opens:t.open!==!1}}function es(e,t,n){return n.options?.create!==!1&&e.canCreate(t)?r=>e.quickCreate(t,r):void 0}var cr=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=Qe.en,dialogs:d})=>{let s=n.type==="many2one"?n.relation:"",l=Qa(r),f=l.opens&&!!d&&d.canOpen(s),c=!1,k=io({document:i,id:o,labels:a,search:b=>e.search(t,b,oo+1),shown:oo,pick:b=>e.setValue(t,b),onCommitEmpty:()=>e.setValue(t,null),create:es(e,t,r),placeholder:r.placeholder,more:(b,v)=>{if(!d||c)return[];let R=[];return b&&f&&r.options?.create!==!1&&R.push({label:a.createAndEdit,act:x=>{let L=e.createValues(t);return d.openRecord(s,{name:x,title:n.label,...Object.keys(L).length?{values:L}:{}})}}),v&&R.push({label:a.searchMore,act:()=>d.searchMore({title:n.label,search:(x,L)=>e.search(t,x,L)})}),R}}),m=f?i.createElement("button"):null;m&&(m.type="button",m.className="fd-combo-open",m.textContent="\u2197",m.hidden=!0,m.addEventListener("click",async()=>{let b=e.getState().values[t];if(!b||!d)return;let v=await d.openRecord(s,{recordId:b.id,title:b.label});v&&v.label!==b.label&&e.setValue(t,v)}));let S=i.createElement("button");S.type="button",S.className="fd-combo-clear",S.textContent="\xD7",S.setAttribute("aria-label",lr(a.clear,{label:n.label})),S.addEventListener("click",()=>{e.setValue(t,null),k.input.focus()}),k.element.append(S,...m?[m]:[]);let h=l.avatar?qn(i,null):null;h&&(k.element.prepend(h),k.element.setAttribute("data-avatar",""));let p=l.details?i.createElement("div"):null,y=k.element;return p&&(p.className="fd-link-details",p.hidden=!0,y=i.createElement("div"),y.className="fd-link",y.append(k.element,p)),{element:y,focus:()=>k.input.focus(),update(b){let v=b.value;if(h&&qn(i,v,h),p){let R=v?.details?.trim()??"";Rt(p,!R),p.textContent!==R.replace(/\n/g,"")&&ao(p,R)}c=b.readonly,k.setText(v?.label??""),k.setReadonly(b.readonly),Rt(S,!v||b.readonly),m&&(Rt(m,!v),v&&Ie(m,"aria-label",lr(a.openNamed,{name:v.label}))),Ie(k.input,"aria-invalid",String(b.invalid)),Ie(k.input,"aria-required",String(b.required)),b.describedBy&&Ie(k.input,"aria-describedby",b.describedBy)}}},so=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=Qe.en,dialogs:d})=>{let s=n.type==="many2many"?n.relation:"",l=Qa(r),f=()=>e.getState().values[t]??[],c=i.createElement("div");c.className="fd-tags",c.setAttribute("role","group");let k=i.createElement("ul");k.className="fd-chips";let m=io({document:i,id:o,labels:a,search:y=>e.search(t,y,oo+1+f().length),shown:oo,pick:y=>{f().some(b=>b.id===y.id)||e.setValue(t,[...f(),y]),m.input.value=""},exclude:()=>new Set(f().map(y=>y.id)),onEmptyBackspace:()=>{let y=f();y.length&&e.setValue(t,y.slice(0,-1))},create:es(e,t,r),placeholder:r.placeholder,more:(y,b)=>d&&b?[{label:a.searchMore,act:()=>d.searchMore({title:n.label,search:(v,R)=>e.search(t,v,R)})}]:[]}),S=l.opens&&d&&d.canOpen(s)?async y=>{let b=await d.openRecord(s,{recordId:y.id,title:y.label});b&&b.label!==y.label&&e.setValue(t,f().map(v=>v.id===y.id?b:v))}:void 0;c.append(k,m.element);let h=!1,p="";return{element:c,focus:()=>m.input.focus(),update(y){let b=y.value??[],v=JSON.stringify([y.readonly,b]);h=y.readonly,m.setReadonly(h),m.element.hidden=h,m.input.setAttribute("aria-invalid",String(y.invalid)),y.describedBy&&m.input.setAttribute("aria-describedby",y.describedBy),v!==p&&(p=v,ts(k,b,h,a,R=>e.setValue(t,f().filter(x=>x.id!==R.id)),S,l),m.setText(""))}}};function ts(e,t,n,r,o,i,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(qn(d,s));let f=d.createElement(i?"button":"span");if(f.className="fd-chip-label",f.textContent=s.label,i&&(f.type="button",f.setAttribute("aria-label",lr(r.openNamed,{name:s.label})),f.addEventListener("click",()=>i(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",lr(r.remove,{name:s.label})),c.addEventListener("click",()=>o(s)),l.append(c)}return l}))}var ri=({form:e,name:t,node:n,id:r,document:o,labels:i=Qe.en})=>{let a=n.options??{},d=typeof a.separator=="string"&&a.separator?a.separator:",",s=Array.isArray(a.suggestions)?a.suggestions.filter(y=>typeof y=="string"):[],l=y=>typeof y=="string"?y.split(d).map(b=>b.trim()).filter(b=>b!==""):[],f=()=>l(e.getState().values[t]),c=y=>e.setValue(t,y.length?y.join(`${d} `):null),k=y=>{let b=y.trim(),v=f();b&&!v.some(R=>R.toLowerCase()===b.toLowerCase())&&!(v.length>=a.max)&&c([...v,b])},m=o.createElement("div");m.className="fd-tags",m.setAttribute("role","group");let S=o.createElement("ul");S.className="fd-chips";let h=io({document:o,id:r,labels:i,placeholder:n.placeholder,search:async y=>{let b=new Set(f().map(R=>R.toLowerCase())),v=y.trim().toLowerCase();return s.filter(R=>!b.has(R.toLowerCase())&&R.toLowerCase().includes(v)).map(R=>({id:R,label:R}))},pick:y=>{k(y.label),h.input.value=""},onEmptyBackspace:()=>{let y=f();y.length&&c(y.slice(0,-1))}});h.input.addEventListener("keydown",y=>{y.key!=="Enter"||y.defaultPrevented||h.input.value.trim()===""||(y.preventDefault(),k(h.input.value),h.input.value="",h.close())}),h.input.addEventListener("input",()=>{let y=h.input.value.split(d);if(!(y.length<2)){for(let b of y.slice(0,-1))k(b);h.input.value=y[y.length-1].trimStart()}}),h.input.addEventListener("change",()=>{h.input.value.trim()&&k(h.input.value)}),m.append(S,h.element);let p="";return{element:m,focus:()=>h.input.focus(),update(y){let b=l(y.value);h.setReadonly(y.readonly),h.element.hidden=y.readonly||b.length>=a.max,h.input.setAttribute("aria-invalid",String(y.invalid)),y.describedBy&&h.input.setAttribute("aria-describedby",y.describedBy);let v=JSON.stringify([y.readonly,b]);if(v===p)return;p=v;let R=o.activeElement===h.input;ts(S,b.map(x=>({id:x,label:x})),y.readonly,i,x=>c(f().filter(L=>L!==x.label))),h.setText(""),R&&h.element.hidden&&S.querySelector("li:last-child button")?.focus()}}},oi=({form:e,name:t,id:n,document:r})=>{let o=r.createElement("div");o.id=n,o.className="fd-choices fd-choices-checkbox",o.setAttribute("role","group");let i=[],a={readonly:!1,value:[]},d=()=>{let s=new Set(a.value.map(l=>l.id));for(let{record:l,box:f}of i)f.checked=s.has(l.id),f.disabled=a.readonly};return e.search(t,"",50).then(s=>{i=s.map((l,f)=>{let c=r.createElement("input");c.type="checkbox",c.id=`${n}-${f}`,c.addEventListener("change",()=>{let S=e.getState().values[t]??[];e.setValue(t,c.checked?[...S,l]:S.filter(h=>h.id!==l.id))});let k=r.createElement("label");k.className="fd-choice",k.htmlFor=c.id;let m=r.createElement("span");return m.textContent=l.label,k.append(c,m),o.append(k),{record:l,box:c}}),d()}),{element:o,focus:()=>o.querySelector("input")?.focus(),update(s){a={readonly:s.readonly,value:s.value??[]},d()}}},ii=e=>{let{form:t,name:n,field:r,id:o,document:i,labels:a=Qe.en}=e,d=r.type==="reference"?r.models:[],s=i.createElement("div");s.className="fd-reference";let l=i.createElement("select");l.className="fd-input fd-select",l.setAttribute("aria-label",r.label),l.append(i.createElement("option"));for(let k of d){let m=i.createElement("option");m.value=String(k.value),m.textContent=k.label,l.append(m)}let f="";l.addEventListener("change",()=>{f=l.value,t.setValue(n,null)});let c=io({document:i,id:o,labels:a,placeholder:e.node.placeholder,search:k=>f?t.search(n,k,8,{model:f}):Promise.resolve([]),pick:k=>t.setValue(n,{model:f,id:k.id,label:k.label}),onCommitEmpty:()=>t.setValue(n,null)});return s.append(l,c.element),{element:s,focus:()=>f?c.input.focus():l.focus(),update(k){let m=k.value;m&&(f=m.model),l.value=f,l.disabled=k.readonly,c.setText(m?.label??""),c.setReadonly(k.readonly||!f)}}};var ns=e=>String(e).padStart(2,"0");function os(e){let t=Math.round(Math.abs(e)*60);return`${e<0&&t?"-":""}${ns(Math.floor(t/60))}:${ns(t%60)}`}function Xl(e,t="en"){let n=_t(e.trim(),t);if(n==="")return null;let r=/^(-?)(\d+):(\d{1,2})$/.exec(n);if(r){let o=Number(r[3]);if(o>59)return e.trim();let i=Number(r[2])+o/60;return r[1]?-i:i}if(/^-?(\d+\.?\d*|\.\d+)$/.test(n))return Number(n);if(!/^-?(\d+:?)?\.?$/.test(n))return e.trim()}var rs=new Map;function is(e,t,n){let r=`${e}:${t}:${n}`,o=rs.get(r);return o||(o=new Intl.NumberFormat(e,{style:n,numberingSystem:"latn",minimumFractionDigits:0,maximumFractionDigits:t}),rs.set(r,o)),o}function Zl(e,t="en",n=2){return is(t,n,"percent").format(e)}var as=e=>e.type==="float"?e.digits?.[1]??2:2;function ss(e,t){let{form:n,name:r,node:o,id:i,document:a}=e,d=Se(a),s=d("input",{id:i,type:"text",class:`fd-input fd-number-input ${t.className}`,autocomplete:"off",inputmode:t.inputMode});o.placeholder&&(s.placeholder=o.placeholder);let l=m=>typeof m=="number"?t.show(m):m==null?"":String(m);s.addEventListener("input",()=>{let m=t.parse(s.value);m!==void 0&&n.setValue(r,m)}),s.addEventListener("blur",()=>{s.value=l(n.getState().values[r])});let f=typeof o.options?.suffix=="string"&&o.options.suffix?o.options.suffix:t.unit,c=f?d("span",{class:"fd-unit",id:`${i}-unit2`},f):null,k=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:k,focus:()=>s.focus(),update(m){let S=a.activeElement===s,h=t.parse(s.value);if(!(S&&(h===void 0||h===m.value))){let p=l(m.value);s.value!==p&&(s.value=p)}s.readOnly!==m.readonly&&(s.readOnly=m.readonly),Ie(s,"aria-required",String(m.required)),Je(s,{...m,describedBy:[m.describedBy,c?.id].filter(Boolean).join(" ")})}}}var ds=e=>{let t=e.locale??"en";return ss(e,{show:os,parse:n=>Xl(n,t),inputMode:"text",className:"fd-duration"})},ls=e=>{let t=e.locale??"en",n=as(e.field);return ss(e,{show:r=>is(t,n,"decimal").format(Math.round(r*100*10**n)/10**n),parse(r){let o=_t(r.trim(),t).replace(/%$/,"");if(o==="")return null;if(/^-?(\d+\.?\d*|\.\d+)$/.test(o))return Math.round(Number(o)/100*1e10)/1e10;if(!/^-?\.?$/.test(o))return r.trim()},unit:"%",inputMode:"decimal",className:"fd-percentage"})};function cs(e,t,n,r,o={}){if(typeof n!="number"||e!=="duration"&&e!=="percentage")return null;let i=typeof o.suffix=="string"&&o.suffix?` ${o.suffix}`:"";return e==="duration"?os(n)+i:Zl(n,r,as(t))}var ai=e=>typeof e?.model=="string"?e.model:"account.analytic.account";function fs(e){return[...new Set(si(e).flatMap(([t])=>t.split(",")))].map(t=>/^\d+$/.test(t)?Number(t):t)}function lo(e,t="en",n){let r=o=>`${gt(o,Number.isInteger(o)?0:2,t)}%`;return si(e).map(([o,i])=>{let a=n?o.split(",").map(d=>n(d)??`#${d}`).join(" \xB7 "):"";return a?`${a} ${r(i)}`:r(i)}).join(n?", ":" \xB7 ")}var si=e=>e&&typeof e=="object"&&!Array.isArray(e)?Object.entries(e).map(([t,n])=>[t,typeof n=="number"?n:Number(n)||0]):[],us=e=>{let{form:t,name:n,node:r,id:o,document:i,labels:a,locale:d="en"}=e,s=Se(i),l=Ne(a,d),f=ai(r.options),c=new Map,k=z=>z.split(",").map(T=>c.get(T)??`#${T}`).join(" \xB7 "),m=z=>`${gt(z,Number.isInteger(z)?0:2,d)}%`,S=s("tbody"),h=s("td",{class:"fd-distribution-total"}),p=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"}))),S,s("tfoot",{},s("tr",{class:"fd-lines-totals"},s("td",{},l.total),h,s("td")))),y=s("button",{type:"button",class:"fd-button fd-button-link fd-lines-add fd-distribution-add"},`+ ${l.addAccount}`),b=s("div",{class:"fd-warning fd-distribution-off",role:"status",hidden:""}),v=s("div",{id:o,class:"fd-distribution",role:"group"},s("div",{class:"fd-lines-scroll"},p),y,b),R=[],x=!1;function L(){let z={};for(let T of R)T.key&&(z[T.key]=T.share);t.setValue(n,R.some(T=>T.key)?z:null)}function E(z,T){let H=R.length,N=`${o}-${H}-${Math.random().toString(36).slice(2,7)}`,j={key:z,share:T},V={...t,getState:()=>({...t.getState(),values:{account:j.key?{id:j.key,label:k(j.key)}:null}}),setValue:(D,I)=>{let q=I;j.key=q?String(q.id):"",q&&c.set(String(q.id),q.label),L()},search:(D,I,q)=>t.search(n,I,q,{model:f}),canCreate:()=>!1},B={type:"many2one",label:l.account,relation:f};return j.account=cr({...e,form:V,name:"account",field:B,node:{type:"field",id:`${r.id}.account`,field:"account",options:{create:!1}},id:N}),j.input=s("input",{type:"text",class:"fd-input fd-number-input fd-share",inputmode:"decimal",autocomplete:"off","aria-label":l.share}),j.input.addEventListener("input",()=>{let D=_t(j.input.value.trim(),d);/^\d+\.?\d*$|^\.\d+$/.test(D)&&(j.share=Number(D),L())}),j.remove=s("button",{type:"button",class:"fd-line-delete","aria-label":l.deleteLine},"\xD7"),j.remove.addEventListener("click",()=>{R=R.filter(D=>D!==j),j.account.destroy?.(),j.element.remove(),L(),P()}),j.element=s("tr",{},s("td",{},s("label",{class:"fd-sr-only",for:N},l.account),j.account.element),s("td",{class:"fd-distribution-share"},s("span",{class:"fd-number"},j.input,s("span",{class:"fd-unit"},"%"))),s("td",{class:"fd-lines-tools"},j.remove)),j}y.addEventListener("click",()=>{let z=Math.max(0,100-R.reduce((H,N)=>H+N.share,0)),T=E("",Math.round(z*100)/100);R.push(T),S.append(T.element),P(),T.account.focus()});let w="";function g(z){let T=[...new Set(z.flatMap(N=>N.split(",")))].filter(N=>!c.has(N));if(!T.length||T.join()===w)return;w=T.join();let H=T.map(N=>/^\d+$/.test(N)?Number(N):N);t.search(n,"",T.length,{model:f,ids:H}).then(N=>{for(let j of N)c.set(String(j.id),j.label);P()},()=>{})}function P(){let z=R.reduce((H,N)=>H+N.share,0);st(h,m(Math.round(z*100)/100));let T=R.some(H=>H.key)&&Math.abs(z-100)>.001;st(b,T?Ve(l.sharesOff,{n:m(Math.round(z*100)/100)}):""),Rt(b,!T),Rt(y,x);for(let H of R){H.account.update({value:H.key?{id:H.key,label:k(H.key)}:null,values:{},readonly:x,required:!1,invalid:!1});let N=gt(H.share,Number.isInteger(H.share)?0:2,d);i.activeElement!==H.input&&H.input.value!==N&&(H.input.value=N),H.input.readOnly=x,x?H.remove.remove():H.remove.isConnected||H.element.lastElementChild?.append(H.remove)}}return{element:v,focus:()=>(R[0]?.input??y).focus(),destroy:()=>R.forEach(z=>z.account.destroy?.()),update(z){x=z.readonly;let T=si(z.value);if(!(T.length===R.filter(N=>N.key).length&&T.every(([N,j],V)=>R.filter(B=>B.key)[V]?.key===N&&R.filter(B=>B.key)[V]?.share===j))){for(let j of R)j.account.destroy?.();let N=R.filter(j=>!j.key);R=T.map(([j,V])=>E(j,V)),R.push(...N.map(j=>E("",j.share))),S.replaceChildren(...R.map(j=>j.element))}g(T.map(([N])=>N)),P()}}};function ps(e){let t=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(e);if(!t)return null;let[,n,r,o,i,a]=t;return new Date(Number(n),Number(r)-1,Number(o),Number(i??0),Number(a??0))}function _n(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 St(e,t,n={},r="en",o){let i=(a,d)=>gt(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 i(Number(t),0);case"float":return i(Number(t),e.digits?.[1]??2);case"monetary":{let a=_n(e,n,o);return a?Fn(Number(t),a,e.digits?.[1]??2,r):i(Number(t),e.digits?.[1]??2)}case"date":{let a=ps(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=ps(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 An(e,t,n={},r="en",o,i={}){return i.widget==="distribution"&&e.type==="json"?lo(t,r):cs(i.widget,e,t,r,i.options)??St(e,t,n,r,o)}var Ql=new Set(["progressbar","priority","dot","color","timer","badge"]);var ec="http://www.w3.org/2000/svg",ms={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 wt(e,t,n){let r=t?n?.[t]??ms[t]:void 0;if(r===void 0)return null;let o=e.createElementNS(ec,"svg");for(let[i,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}))o.setAttribute(i,a);return o.innerHTML=r,o}function Un(e,t,n,r,o){if(n.type==="one2many"&&n.sequenceField)return e.moveLine(t,r,o);let i=[...e.getState().values[t]??[]],a=i.findIndex(d=>d.key===r);a<0||o<0||o>=i.length||o===a||(i.splice(o,0,...i.splice(a,1)),e.setValue(t,i))}var tc=new Set(["integer","float","monetary"]),gs=new Set(["boolean","integer","float","monetary","date","datetime"]),hs=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0;function ys(e,t){return t==="section"?{...e,type:"char"}:{...e,type:"text"}}function co(e,t,n){let r=()=>(e.getState().values[t]??[]).find(o=>o.key===n)?.values??{};return{...e,getState:()=>({...e.getState(),values:r()}),setValue:(o,i)=>e.updateLine(t,n,o,i),search:(o,i,a,d)=>e.searchLine(t,n,o,i,a,d),canCreate:o=>e.canCreateLine(t,o),quickCreate:(o,i)=>e.quickCreateLine(t,o,i,n),createValues:o=>e.createValues(o,{lines:t,key:n})}}function xs(e,t){if(e.type!=="monetary"||!e.currencyField?.startsWith("parent."))return e;let{currencyField:n,...r}=e,o=_n(e,{},t);return o&&/^[A-Z]{3}$/.test(o)?{...r,currency:o}:r}async function fo(e,t,n,r,o,i){let a=e.page.fields[t],d=()=>e.getState().values[t]??[],s=k=>e.setValue(t,d().map(m=>m.key===r.key?{...m,values:{...m.values,...k}}:m));if(n.lineOpens==="record"&&r.id!==void 0&&o.canOpen(a.relation)){let k=await o.openRecord(a.relation,{recordId:r.id,title:a.label,withValues:!0}),m=Object.fromEntries(Object.entries(k?.values??{}).filter(([S])=>S in a.fields&&S!==a.sequenceField));Object.keys(m).length&&s(m);return}let l=Object.fromEntries(Object.entries(a.fields).filter(([k])=>k!==a.lineKinds?.field&&k!==a.sequenceField).map(([k,m])=>[k,xs(m,e.getState().values)])),f=e.getState(),c=await o.editValues({title:a.label,fields:l,values:r.values,readonly:i,recompute:k=>e.previewLine(t,r.key,k),parent:{values:f.values,fields:e.page.fields,id:f.recordId},...n.lineForm?{layout:n.lineForm.children}:{}});c&&s(c)}var di=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=Qe.en,locale:d,dialogs:s})=>{let l=n,f=l.lineKinds,c=Se(i),k=r.options??{},m=hs(k.min)??0,S=hs(k.max)??1/0,h=K=>typeof k[K]=="string"&&k[K].trim()?k[K]:null,p=new Map,y=!!(r.cells||r.rowTones||r.rowBold!==void 0||r.rowButtons||r.lineDelete!==void 0),b=(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"),v=i.createElement("div");v.className="fd-lines",v.id=o,r.cards&&(v.dataset.cards=r.cards),r.fit&&(v.dataset.fit=r.fit),v.setAttribute("role","group");let R=i.createElement("div");R.className="fd-lines-scroll";let x=i.createElement("table");x.className="fd-lines-table";let L=i.createElement("thead"),E=i.createElement("tr"),w=!!r.selectedButtons?.length,g=new Set,P=w?c("input",{type:"checkbox",class:"fd-checkbox fd-line-pick fd-line-pick-all","aria-label":a.chooseAllLines}):null;E.append(c("th",{class:"fd-lines-grip"},...P?[P]:[]));for(let K of b){let Q=i.createElement("th");Q.scope="col",Q.dataset.column=K,Q.textContent=l.fields[K].label;let le=r.cells?.[K]?.width;le?Q.style.width=`${le}ch`:gs.has(l.fields[K].type)&&(Q.dataset.fit=l.fields[K].type),p.set(K,Q),E.append(Q)}let z=i.createElement("th");z.className="fd-lines-tools",E.append(z),L.append(E);let T=i.createElement("tbody");x.append(L,T);let H=(r.totals??[]).filter(K=>b.includes(K)),N=new Map,j=new Map;if(H.length){let K=i.createElement("tfoot"),Q=i.createElement("tr");Q.className="fd-lines-totals",Q.append(i.createElement("td")),b.forEach((le,ke)=>{let Oe=i.createElement("td");Oe.dataset.column=le,j.set(le,Oe),H.includes(le)?N.set(le,Oe):ke===0&&(Oe.textContent=a.total),Q.append(Oe)}),Q.append(i.createElement("td")),K.append(Q),x.append(K)}R.append(x);let V=i.createElement("div");V.className="fd-lines-adds";let B=(K,Q,le)=>{let ke=i.createElement("button");ke.type="button",ke.className="fd-button fd-button-link fd-lines-add",ke.dataset.add=le,ke.textContent=`+ ${K}`,ke.addEventListener("click",()=>{we=e.addLine(t,Q);let Oe=me.get(we);Oe&&(Oe.cells[0]?.widget.focus(),we=null)}),V.append(ke)};B(h("addLabel")??a.addLine,{},"line"),f&&(B(h("addSectionLabel")??a.addSection,{[f.field]:f.section??"section"},"section"),B(h("addNoteLabel")??a.addNote,{[f.field]:f.note??"note"},"note"));let D=(r.controlButtons??[]).map(K=>{let Q=wt(i,K.icon),le=c("button",{type:"button",class:"fd-button fd-button-link fd-lines-add fd-lines-control","data-node":K.id},...Q?[Q]:[],K.label);return le.addEventListener("click",()=>{ie(le,()=>e.runAction(K.id))}),V.append(le),{id:K.id,button:le}}),I=c("span",{class:"fd-lines-chosen-count",role:"status"}),q=(r.selectedButtons??[]).map(K=>{let Q=wt(i,K.icon),le=c("button",{type:"button",class:`fd-button fd-button-${K.style??"secondary"} fd-lines-chosen-button`,"data-node":K.id},...Q?[Q]:[],K.label);return le.addEventListener("click",()=>{ie(le,()=>e.runLinesAction(r.id,K.id,G().filter(ke=>g.has(ke.key)).map(ke=>ke.key)))}),{id:K.id,button:le}}),$=w?c("div",{class:"fd-lines-chosen",hidden:""},I,...q.map(K=>K.button)):null,re=h("emptyLabel"),Z=re?c("div",{class:"fd-help fd-lines-empty"},re):null,J=ro(c,a),_=c("div",{class:"fd-sr-only",role:"status"});v.append(...$?[$]:[],R,...Z?[Z]:[],V,J.element,_);async function ie(K,Q){if(!K.hasAttribute("aria-busy")){K.setAttribute("aria-busy","true");try{await Q()}finally{K.removeAttribute("aria-busy")}}}function Me(){if(!$||!P)return;let K=G().filter(Q=>!pt(l,Q.values));for(let Q of[...g])K.some(le=>le.key===Q)||g.delete(Q);$.hidden=Ee||g.size===0,I.textContent=Ve(a.linesChosen,{n:g.size});for(let{id:Q,button:le}of q)le.hidden=e.node(Q).invisible;P.checked=K.length>0&&g.size===K.length,P.indeterminate=g.size>0&&g.size<K.length,P.disabled=Ee||!K.length;for(let[Q,le]of me)le.pick&&(le.pick.checked=g.has(Q),le.pick.disabled=Ee)}P?.addEventListener("change",()=>{let K=G().filter(Q=>!pt(l,Q.values));if(P.checked)for(let Q of K)g.add(Q.key);else g.clear();Me()});let me=new Map,we=null,Ee=!1,ce=null,G=()=>e.getState().values[t]??[];for(let K=G().length;K<m;K++)e.addLine(t);function ne(K,Q){let le=G().findIndex(nt=>nt.key===K);if(Ee||Q===le||Q<0||Q>=G().length)return;let ke=i.activeElement,Oe=G()[le].values[b[0]];Un(e,t,l,K,Q),ke&&ke!==i.activeElement&&ke.focus(),_.textContent=Ve(a.movedTo,{label:typeof Oe=="string"&&Oe.trim()?Oe:Ve(a.lineN,{n:le+1}),n:Q+1,total:G().length})}function ue(K,Q,le){let ke=[...T.children],Oe=ke.indexOf(K),nt=ke.filter(ae=>ae!==K),Ke=K.getBoundingClientRect(),pe=nt.map(ae=>{let xe=ae.getBoundingClientRect();return xe.top+xe.height/2}),$e=Oe,he=!1,Ae=ae=>{ae.key==="Escape"&&(ae.preventDefault(),te())};function te(){for(let ae of ke)ae.style.transform="";K.classList.remove("fd-line-lifted"),T.classList.remove("fd-lines-dragging"),i.removeEventListener("keydown",Ae,!0),he=!1}return{follow(ae){let xe=ae-le;if(!he){if(Math.abs(xe)<4||Ee)return;he=!0,K.classList.add("fd-line-lifted"),T.classList.add("fd-lines-dragging"),i.addEventListener("keydown",Ae,!0)}K.style.transform=`translateY(${xe}px)`;let He=Ke.top+Ke.height/2+xe;$e=pe.filter(ct=>ct<He).length,nt.forEach((ct,ht)=>{ct.style.transform=ht>=Oe&&ht<$e?`translateY(${-Ke.height}px)`:ht<Oe&&ht>=$e?`translateY(${Ke.height}px)`:""})},drop(){let ae=he&&$e!==Oe;te(),ae&&ne(Q,$e)},settle:te}}T.addEventListener("keydown",K=>{let Q=K.target.closest("tr")?.dataset.line;!Q||!K.altKey||K.key!=="ArrowUp"&&K.key!=="ArrowDown"||(K.preventDefault(),ne(Q,G().findIndex(le=>le.key===Q)+(K.key==="ArrowUp"?-1:1)))});function Le(K,Q,le,ke,Oe=1){let nt=`${o}-${Q.key}-${le}`,Ke=pt(l,Q.values)?void 0:r.cells?.[le],pe=Ke?.badge?{widget:"badge"}:Ke?.widget?{widget:Ke.widget,...Ke.options?{options:Ke.options}:{}}:Ke?.options?{options:Ke.options}:{},$e={type:"field",id:`${r.id}.${Q.key}.${le}`,field:le,...pe},he=Ct({form:co(e,t,Q.key),name:le,field:ke,node:$e,id:nt,document:i,labels:a,locale:d,dialogs:s}),Ae=i.createElement("td");Ae.colSpan=Oe,Ae.dataset.column=le,gs.has(ke.type)&&(Ae.dataset.fit=ke.type),Ae.dataset.label=ke.label;let te=i.createElement("label");te.className="fd-sr-only",te.htmlFor=nt,te.textContent=ke.label;let ae=i.createElement("div");return ae.className="fd-cell-error",ae.hidden=!0,Ae.append(te,he.element,ae),K.append(Ae),{name:le,def:ke,widget:he,error:ae,td:Ae}}function oe(K){let Q=i.createElement("tr");Q.dataset.line=K.key;let le=pt(l,K.values);le&&(Q.className=`fd-line-${le}`);let ke=c("span",{class:"fd-line-grip fd-rank-grip","aria-hidden":"true"}),Oe=null;ke.addEventListener("pointerdown",te=>{Ee||te.button!==0||(te.preventDefault(),ke.setPointerCapture?.(te.pointerId),Oe=ue(Q,K.key,te.clientY))}),ke.addEventListener("pointermove",te=>Oe?.follow(te.clientY)),ke.addEventListener("pointerup",()=>{Oe?.drop(),Oe=null}),ke.addEventListener("pointercancel",()=>{Oe?.settle(),Oe=null});let nt=w&&!le?c("input",{type:"checkbox",class:"fd-checkbox fd-line-pick"}):null;nt?.addEventListener("change",()=>{nt.checked?g.add(K.key):g.delete(K.key),Me()}),Q.append(c("td",{class:"fd-lines-grip"},...nt?[c("span",{class:"fd-line-lead"},nt,ke)]:[ke]));let Ke=le&&f?[Le(Q,K,f.text,ys(l.fields[f.text],le),b.length)]:b.map(te=>Le(Q,K,te,l.fields[te])),pe=i.createElement("td");pe.className="fd-lines-tools";let $e=i.createElement("button");$e.type="button",$e.className="fd-line-delete",$e.textContent="\xD7",$e.setAttribute("aria-label",a.deleteLine),$e.addEventListener("click",()=>{let te=G().findIndex(xe=>xe.key===K.key),ae=G()[te]?.values??{};if(k.confirmDelete!==!0||Ke.every(xe=>qt(xe.def,ae[xe.name])||ae[xe.name]===!1))return e.removeLine(t,K.key);J.ask(Ve(a.removeAsk,{name:Ve(a.lineN,{n:te+1})}),xe=>{xe&&e.removeLine(t,K.key);let He=G(),ct=He[xe?Math.min(te,He.length-1):te];(ct?me.get(ct.key)?.remove:V.querySelector("button"))?.focus()})});let he=new Map;for(let te of le?[]:r.rowButtons??[]){let ae=wt(i,te.icon),xe=c("button",{type:"button",class:`fd-button fd-button-link fd-line-button${ae?" fd-line-button-icon":""}`,"data-row-button":te.id,"aria-label":te.label,title:te.label});xe.append(ae??te.label),xe.addEventListener("click",async()=>{if(!xe.hasAttribute("aria-busy")){xe.setAttribute("aria-busy","true");try{await e.runRowAction(r.id,te.id,K.key)}finally{xe.removeAttribute("aria-busy")}}}),he.set(te.id,xe),pe.append(xe)}let Ae=k.copy===!0&&!le?c("button",{type:"button",class:"fd-line-copy"},"\u29C9"):null;if(Ae?.addEventListener("click",()=>{let te=G(),ae=te.findIndex(ct=>ct.key===K.key);if(Ee||ae<0||te.length>=S)return;let xe={...te[ae].values};l.sequenceField&&delete xe[l.sequenceField];let He=e.addLine(t,xe);Un(e,t,l,He,ae+1),me.get(He)?.cells[0]?.widget.focus()}),Ae&&pe.append(Ae),(r.lineOpens||r.lineForm)&&s&&!le){let te=c("button",{type:"button",class:"fd-line-open","aria-label":a.openLine,title:a.openLine},"\u2197");te.addEventListener("click",()=>{let ae=G().find(xe=>xe.key===K.key);ae&&fo(e,t,r,ae,s,Ee)}),pe.append(te)}return pe.append($e),Q.append(pe),{element:Q,kind:le,cells:Ke,remove:$e,grip:ke,buttons:he,pick:nt,copy:Ae}}return{element:v,focus:()=>(T.querySelector("input, select, textarea")??V.querySelector("button"))?.focus(),update(K){Ee=K.readonly;let Q=K.value??[];V.hidden=Ee||Q.length>=S,Ee&&(J.element.hidden=!0),Z&&(Z.hidden=Q.length>0);let le=e.getState().errors,ke=new Set(y?b.filter(pe=>e.columnHidden(r.id,pe)):[]);for(let[pe,$e]of p)$e.hidden=ke.has(pe);for(let[pe,$e]of j)$e.hidden=ke.has(pe);let Oe=Q.map(pe=>pe.key).join(" "),nt=Oe!==ce;ce=Oe;for(let[pe,$e]of nt?p:new Map){if(r.cells?.[pe]?.width)continue;let he=l.fields[pe];if($e.dataset.fit){if(!tc.has(he.type))continue;let ae=Q.reduce((xe,He)=>pt(l,He.values)?xe:Math.max(xe,An(he,He.values[pe],He.values,d).length),0);$e.style.setProperty("--fd-fit-need",`${ae+4}ch`);continue}let Ae=Q.reduce((ae,xe)=>pt(l,xe.values)?ae:Math.max(ae,An(he,xe.values[pe],xe.values,d).length),0),te=he.type==="many2one"?5:0;$e.style.width=`${Math.min(Math.max(Ae,Math.min(he.label.length,10),6),32)+4+te}ch`,$e.style.minWidth=`${Math.min(Math.max(Ae,6),14)+4}ch`}let Ke=new Set(Q.map(pe=>pe.key));for(let[pe,$e]of me)Ke.has(pe)||($e.element.remove(),me.delete(pe));Q.forEach((pe,$e)=>{let he=me.get(pe.key);he&&he.kind!==pt(l,pe.values)&&(he.element.remove(),he=void 0),he||(he=oe(pe),me.set(pe.key,he)),T.children[$e]!==he.element&&T.insertBefore(he.element,T.children[$e]??null);let Ae=y?e.lineState(r.id,pe.key):null;he.remove.hidden=Ee||Q.length<=m||Ae?.deletable===!1,he.grip.hidden=Ee;let te=Ve(a.lineN,{n:$e+1});he.pick?.setAttribute("aria-label",Ve(a.chooseLine,{name:te})),he.copy&&(he.copy.setAttribute("aria-label",Ve(a.copy,{name:te})),he.copy.title=he.copy.getAttribute("aria-label"),he.copy.hidden=Ee||Q.length>=S),Ee?he.remove.remove():he.remove.isConnected||he.element.lastElementChild?.append(he.remove),bs(he.element,"tone",Ae?.tone),he.element.classList.toggle("fd-line-bold",!!Ae?.bold);for(let[ae,xe]of he.buttons)xe.hidden=!Ae?.buttons[ae];he.kind&&(he.cells[0].td.colSpan=b.length-ke.size);for(let ae of he.cells){let xe=le[`${t}.${pe.key}.${ae.name}`],He=he.kind?void 0:Ae?.cells[ae.name];he.kind||(ae.td.hidden=ke.has(ae.name)),ae.widget.element.hidden=!!He?.invisible,bs(ae.td,"tone",He?.tone),ae.td.classList.toggle("fd-cell-bold",!!He?.bold),ae.error.hidden=!xe,ae.error.textContent=xe??"",ae.widget.update({value:pe.values[ae.name],values:pe.values,parent:K.values,readonly:Ee||ae.def.readonly===!0||ae.def.compute!==void 0||!!He?.readonly,required:ae.def.required===!0||!!He?.required,invalid:!!xe})}});for(let[pe,$e]of N){let he=Q.filter(Ae=>!pt(l,Ae.values)).reduce((Ae,te)=>Ae+Number(te.values[pe]??0),0);$e.textContent=An(l.fields[pe],he,Q[0]?.values??{},d,K.values,r.cells?.[pe])}for(let{id:pe,button:$e}of D)$e.hidden=e.node(pe).invisible;Me(),we&&me.has(we)&&(me.get(we)?.cells[0]?.widget.focus(),we=null)}}};function bs(e,t,n){n?e.dataset[t]=n:delete e.dataset[t]}var nc='a[href], button, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';function Ut(e,t){if(t.key!=="Tab")return;let n=[...e.querySelectorAll(nc)].filter(a=>!a.closest("[hidden], [inert]")&&!a.disabled);if(!n.length)return;let r=n[0],o=n[n.length-1],i=e.ownerDocument.activeElement;(t.shiftKey?i===r||!e.contains(i):i===o)&&(t.preventDefault(),(t.shiftKey?o:r).focus())}var po=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let o=String(r.result??"");t({name:e.name,type:e.type,size:e.size,data:o.slice(o.indexOf(",")+1)})},r.onerror=()=>n(r.error),r.readAsDataURL(e)}),ws=e=>(/\.(\w{1,5})$/.exec(e)?.[1]??"").toUpperCase();function uo(e){let t=`${e.type} ${ws(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 rc=e=>/^text\/|json|xml|csv/.test(e.type),li=e=>e.data?`data:${e.type};base64,${e.data}`:e.url??"",ks=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),vs=(e,t)=>e("span",{class:"fd-file-icon","data-kind":uo(t),"aria-hidden":"true"},ws(t.name)||"?"),oc={cards:'<path d="M3 3h8v8H3zM13 3h8v8h-8zM3 15h8M13 15h8M3 19h5M13 19h5"/>',thumbnails:'<path d="M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"/>'},ic=(e,t)=>e("span",{class:"fd-file-name",dir:"auto",title:t},e("span",{},t.slice(0,-9)),t.slice(-9));function ac(e,t){let n=t.length/2,[r,o]=[Math.round(n),n/2];for(let a=t.indexOf(" ");a>=0;a=t.indexOf(" ",a+1))Math.abs(a+1-n)<o&&([r,o]=[a+1,Math.abs(a+1-n)]);let i=/^\P{L}*[\p{sc=Arabic}\p{sc=Hebrew}]/u.test(t);return e("span",{class:"fd-file-name",dir:i?"rtl":"ltr",title:t},e("span",{},t.slice(0,r)),e("span",{dir:i?"ltr":"rtl"},e("bdi",{},t.slice(r))))}function Ss(e){return({form:t,name:n,field:r,node:o,id:i,document:a,labels:d,locale:s="en",preferences:l})=>{let f=r,c=Ne(d,s),k=Lt[s]??Lt.en,m=Se(a),S=f.multiple===!0,h=S?f.maxFiles??1/0:1,p=e==="image",y=String(o.options?.files??(p?"thumbnails":"list")),b=y==="thumbnails"?y:"cards",v=o.options?.filesSwitch===!0,R=`${t.page.id}.${o.id}.files`,x=v?l?.get(R):null,L=o.options?.camera,E=f.type==="binary"?f.accept:["image/*"],w=m("div"),g=m("input",{type:"file",id:i,class:"fd-sr-only",accept:E?.join(","),capture:L?L==="user"?"user":"environment":void 0});g.multiple=S;let P=[!p&&E?ar(E,k.or):"",f.maxSize?qe(S?c.upToEach:c.upToSize,{size:en(f.maxSize)}):"",S&&f.maxFiles?qe(c.upToFiles,{max:f.maxFiles}):""].filter(Boolean),z=m("label",{class:"fd-file-pick",for:i},m("span",{class:"fd-button"},S?p?c.addPhotos:c.addFiles:p?c.uploadImage:c.upload),m("span",{class:"fd-help"},S?c.dropThem:c.dropHere)),T=m("span",{class:"fd-help fd-file-limits"},P.join(" \xB7 ")),H=S?m("span",{class:"fd-help fd-file-count"}):null,N=m("ul",{class:"fd-files",role:"list"}),j=m("button",{type:"button",class:"fd-button fd-button-link"},c.replace);j.addEventListener("click",()=>g.click());let V=ro(m,c),B=m("div",{class:"fd-help fd-file-note",role:"status"}),D=(ce,G)=>{let ne=m("button",{type:"button","data-view":ce},wt(a,ce,oc),G);return ne.addEventListener("click",()=>(Z(ce),l?.set(R,ce))),ne},I=v?m("div",{class:"fd-file-views",role:"group","aria-label":c.showFilesAs},D("list",c.asList),D(b,b==="cards"?c.asCards:c.asThumbnails)):null,q=H||I?m("div",{class:"fd-file-bar"},...H?[H]:[],...I?[I]:[]):null,$=[g,z,...P.length?[T]:[]];w.append(...q?[q]:[],N,j,V.element,B);let re=y;function Z(ce){re=ce;let G=ce!=="list";w.className=`fd-file fd-file-${e} fd-files-${ce==="thumbnails"?"thumbs":ce}`,z.classList.toggle("fd-image-pick",G),G?N.after(...$):(q??N).before(...$),I?.querySelectorAll("button").forEach(ne=>ne.setAttribute("aria-pressed",String(ne.dataset.view===ce))),we()}let J=!1,_=[],ie,Me=ce=>B.replaceChildren(...ce.map(G=>m("div",{},G))),me=async ce=>{if(J||!ce.length)return;let G=[],ne=[],ue=0;for(let oe of ce){let K=ir(f,oe,k)??(S&&[..._,...G].some(Q=>Q.name===oe.name)?qe(c.alreadyAdded,{name:oe.name}):void 0);K?ne.push(K):(S?_.length:0)+G.length<h?G.push(oe):ue++}if(ue&&S&&ne.push(qe(c.tooMany,{max:h,n:ue})),Me(ne),!G.length)return;let Le=await Promise.all(G.map(po));t.setValue(n,S?[..._,...Le]:Le[0])};g.addEventListener("change",()=>{me([...g.files??[]]),g.value=""}),w.addEventListener("dragover",ce=>{J||(ce.preventDefault(),w.classList.add("fd-dragging"))}),w.addEventListener("dragleave",()=>w.classList.remove("fd-dragging")),w.addEventListener("drop",ce=>{ce.preventDefault(),w.classList.remove("fd-dragging"),me([...ce.dataTransfer?.files??[]])}),N.addEventListener("click",ce=>{let G=ce.target.closest("button"),ne=Number(G?.dataset.at);if(G){if(G.classList.contains("fd-file-open"))return Ee(ne,G);V.ask(qe(c.removeAsk,{name:_[ne].name}),ue=>{let Le=_[ne];ue&&(t.setValue(n,S?_.filter((oe,K)=>K!==ne):null),Me([qe(c.removed,{name:Le.name})])),(N.querySelectorAll(".fd-file-remove")[ue?Math.min(ne,_.length-1):ne]??(z.hidden?j:g)).focus()})}});function we(){N.replaceChildren(..._.map((ce,G)=>m("li",{class:"fd-file-item"},m("button",{type:"button",class:"fd-file-open","data-at":String(G),"aria-haspopup":"dialog","aria-label":`${ce.name}, ${en(ce.size)}`},...[uo(ce)==="image"&&li(ce)?m("img",{class:"fd-file-thumb",src:li(ce),alt:""}):vs(m,ce)].map(ne=>re==="cards"?m("span",{class:"fd-file-picture"},ne):ne),(re==="cards"?ac:ic)(m,ce.name),m("span",{class:"fd-file-size"},en(ce.size))),...J?[]:[m("button",{type:"button",class:"fd-file-remove","data-at":String(G),"aria-label":qe(c.remove,{name:ce.name})},"\xD7")])))}Z(x==="list"||x===b?x:y===b?y:"list");function Ee(ce,G){let ne=_,ue="",Le=m("h2",{id:`${i}-view`,class:"fd-form-dialog-title"}),oe=m("span",{class:"fd-help"}),K=(Ae,te,ae)=>{let xe=m("button",{type:"button",class:"fd-button fd-file-step","aria-label":te},ae);return xe.hidden=ne.length<2,xe.addEventListener("click",()=>$e(ce+Ae)),xe},Q=m("a",{class:"fd-button"},c.download),le=m("button",{type:"button",class:"fd-dialog-close","aria-label":c.close},"\xD7"),ke=m("div",{class:"fd-file-viewer-body"}),Oe=m("div",{class:"fd-form-dialog fd-file-viewer",role:"dialog","aria-modal":"true","aria-labelledby":Le.id,tabindex:"-1"},m("div",{class:"fd-form-dialog-head"},Le,oe,K(-1,c.previous,"\u2039"),K(1,c.next,"\u203A"),Q,le),ke),nt=m("div",{class:"fd-dialog-backdrop"},Oe),Ke=()=>ue.startsWith("blob:")&&URL.revokeObjectURL(ue),pe=Ae=>m("div",{class:"fd-file-none"},vs(m,Ae),m("strong",{},Ae.name),en(Ae.size),m("p",{},c.noPreview));function $e(Ae){ce=(Ae+ne.length)%ne.length;let te=ne[ce];Ke();let ae=te.data?ks(te.data):null;ue=ae?URL.createObjectURL(new Blob([ae],{type:te.type})):te.url??"",Le.textContent=te.name,oe.replaceChildren(m("span",{class:"fd-file-size"},en(te.size)),ne.length>1?` \xB7 ${qe(c.fileAt,{n:ce+1,total:ne.length})}`:""),Q.href=ue,Q.download=te.name;let xe=uo(te);if(xe==="image")return ke.replaceChildren(m("img",{src:ue,alt:te.name}));if(xe==="pdf")return ke.replaceChildren(m("iframe",{src:ue,title:te.name}));if(!rc(te))return ke.replaceChildren(pe(te));let He=m("pre",{tabindex:"0"});ke.replaceChildren(He),(ae?Promise.resolve(new TextDecoder().decode(ae.subarray(0,2e5))):fetch(ue).then(ct=>ct.text())).then(ct=>He.textContent=ct.slice(0,2e5),()=>He.replaceWith(pe(te)))}let he=()=>{Ke(),nt.remove(),(G.isConnected?G:N.querySelectorAll(".fd-file-open")[ce])?.focus()};le.addEventListener("click",he),nt.addEventListener("click",Ae=>Ae.target===nt&&he()),Oe.addEventListener("keydown",Ae=>{let te={ArrowLeft:-1,ArrowRight:1}[Ae.key];Ae.key==="Escape"?he():te&&ne.length>1&&Ae.target.tagName!=="PRE"?$e(ce+(Pt(w)?-te:te)):Ut(Oe,Ae)}),$e(ce),(w.closest(".fd-form")??a.body).append(nt),Oe.focus()}return{element:w,focus:()=>(N.querySelector("button")??(z.hidden?j:g)).focus(),update(ce){J=ce.readonly;let G=ce.value;_=Array.isArray(G)?G:G?[G]:[];let ne=_.length>=h;Rt(z,ne||J),Rt(T,J),g.disabled=J,g.hidden=z.hidden,Rt(j,S||!_.length||J),q&&Rt(q,!_.length),H&&st(H,_.length?S&&f.maxFiles?qe(c.fileCountOf,{n:_.length,max:f.maxFiles}):_.length===1?c.oneFile:qe(c.fileCount,{n:_.length}):""),Je(g,ce),!(ie===G&&N.dataset.readonly===String(J))&&(ie=G,N.dataset.readonly=String(J),we())}}}}var fr=Ss("binary"),ci=Ss("image");function fi(e,t){let n=uo(t);if(n!=="image"&&n!=="pdf")return null;let r=t.data?URL.createObjectURL(new Blob([ks(t.data)],{type:t.type})):li(t),o=e.createElement(n==="image"?"img":"iframe");return o.setAttribute("src",n==="pdf"?`${r}#view=FitH&navpanes=0`:r),o.setAttribute(n==="image"?"alt":"title",t.name),o.setAttribute("data-kind",n),{element:o,url:r,free:()=>{r.startsWith("blob:")&&URL.revokeObjectURL(r)}}}var Es=new Map;function Ls(e,t){let n=Es.get(t);return n||(n=new Intl.NumberFormat(t,{style:"percent",maximumFractionDigits:0,numberingSystem:"latn"}),Es.set(t,n)),n.format(e/100)}var ur=e=>{let{field:t,node:n,id:r,document:o,locale:i="en"}=e,a=n.options??{},d=(b,v)=>{let R=a[b]??t[b];return typeof R=="number"?R:v},s=d("min",0),l=d("max",100),f=typeof a.maxField=="string"?a.maxField:null,c=typeof a.color=="string"?a.color:"auto",k=a.showPercent!==!1,m=o.createElement("div");m.className="fd-progressbar",m.setAttribute("role","progressbar");let S=o.createElement("div");S.className="fd-progressbar-fill";let h=o.createElement("span");h.className="fd-progressbar-text",m.append(S,h);let p=null,y=m;return a.editable===!0?(p=Ct({...e,node:{...n,widget:void 0}}),m.setAttribute("aria-hidden","true"),y=o.createElement("div"),y.className="fd-progressbar-edit",y.append(m,p.element)):(m.id=r,m.setAttribute("aria-label",n.label??t.label)),{element:y,focus:()=>p?.focus(),update(b){let v=typeof b.value=="number"?b.value:0,R=f?Number(b.values[f]??0):l,x=R>s?Math.min(100,Math.max(0,(v-s)/(R-s)*100)):0,L=Math.round(x*10)/10;S.style.width=`${L}%`,m.setAttribute("aria-valuenow",String(v)),m.setAttribute("aria-valuemin",String(s)),m.setAttribute("aria-valuemax",String(R)),m.setAttribute("aria-valuetext",Ls(x,i)),h.textContent=k?Ls(x,i):"",m.dataset.tone=c!=="auto"?c:x<30?"danger":x<70?"warning":"success",p?.update(b)}}};function Rs(e){return e==null?"":typeof e=="object"&&"label"in e?e.label:String(e)}var pr=({field:e,node:t,id:n,document:r,locale:o="en"})=>{let i=t.options??{},a=f=>typeof i[f]=="string"?i[f]:"",d=f=>typeof i[f]=="string"?i[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 k=s!==null&&typeof f=="number"?gt(f,s,o):mo(f,e),m=d("prefixField"),S=d("suffixField"),h=m?Rs(c[m]):a("prefix"),p=S?Rs(c[S]):a("suffix");l.textContent=[h,k,p].filter(y=>y!=="").join(" ")}}};function sc(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 go=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=Qe.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,k=s.fold===!0,m=s.saves===!0,S=i.createElement("ol");S.className="fd-statusbar",S.id=o,S.setAttribute("aria-label",n.label);let h=H=>H&&typeof H=="object"&&"id"in H?`id:${String(H.id)}`:`v:${String(H)}`,p=H=>H&&typeof H=="object"&&"id"in H?String(H.id):String(H),y=n.type==="selection"?n.options.map(H=>({key:h(H.value),label:H.label,value:H.value,folded:!1})):[],b=[],v=H=>H.forEach(N=>"any"in N?v(N.any):"all"in N?v(N.all):N.valueFrom&&b.push(N.valueFrom));n.type==="many2one"&&v(n.filter??[]);let R=n.type==="selection"?"":null,x=0,L={value:void 0,readonly:!1,durations:{}},E="",w=!1,g=H=>{e.setValue(t,H.value),m&&e.settled().then(()=>e.save())};function P(){let{value:H,readonly:N,durations:j}=L,V=S.contains(i.activeElement)?i.activeElement.dataset.key:void 0,B=H==null?null:h(H),D=y.filter(_=>!f||f.some(ie=>h(ie)===_.key)||_.key===B);B&&!D.some(_=>_.key===B)&&H&&typeof H=="object"&&(D=[...D,{key:B,label:H.label,value:H,folded:!1}]);let I=k?D.filter(_=>_.folded&&_.key!==B):[];D=D.filter(_=>!I.includes(_));let q=D.map(_=>c?Number(j[p(_.value)]??0):0),$=JSON.stringify([D.map(_=>[_.key,_.label]),I.map(_=>_.key),q,B,N,w]);if($===E)return;E=$;let re=D.map((_,ie)=>{let Me=i.createElement("span");Me.textContent=_.label;let me=i.createElement(l?"button":"span");if(me instanceof HTMLButtonElement&&(me.type="button",me.disabled=N,me.dataset.key=_.key,me.addEventListener("click",()=>g(_))),me.append(Me),q[ie]>0){let Ee=i.createElement("small");Ee.className="fd-step-time",Ee.textContent=sc(q[ie],d),me.title=a.timeInStep.replace("{time}",Ee.textContent),me.append(Ee)}_.key===B&&me.setAttribute("aria-current","step");let we=i.createElement("li");return we.append(me),we});I.length&&re.push(z(I,N)),S.replaceChildren(...re);let Z=S.querySelector(".fd-step-menu:not([hidden])"),J=Z?.previousElementSibling;if(Z&&J){let _=J.getBoundingClientRect(),ie=i.defaultView,Me=getComputedStyle(S).direction==="rtl";Z.style.top=`${_.bottom+4}px`,Me?Z.style.left=`${_.left}px`:Z.style.right=`${Math.max(0,(ie?.innerWidth??_.right)-_.right)}px`}V&&[...S.querySelectorAll("button")].find(_=>_.dataset.key===V)?.focus()}function z(H,N){let j=i.createElement("li");j.className="fd-step-more";let V=i.createElement("button");V.type="button",V.dataset.key="more",V.setAttribute("aria-haspopup","menu"),V.setAttribute("aria-expanded",String(w)),V.setAttribute("aria-label",a.moreSteps),V.title=a.moreSteps;let B=i.createElement("span");B.textContent="\u22EF",B.setAttribute("aria-hidden","true"),V.append(B);let D=i.createElement("div");D.className="fd-step-menu",D.setAttribute("role","menu"),D.hidden=!w;for(let I of H){let q=i.createElement("button");q.type="button",q.setAttribute("role","menuitem"),q.textContent=I.label,q.disabled=N||!l,q.addEventListener("click",()=>{w=!1,g(I),P()}),D.append(q)}return V.addEventListener("click",()=>{w=!w,P(),w&&S.querySelector(".fd-step-menu button:not([disabled])")?.focus()}),D.addEventListener("keydown",I=>{I.key==="Escape"&&(I.stopPropagation(),w=!1,P(),S.querySelector(".fd-step-more > button")?.focus())}),j.append(V,D),j}let T=H=>{w&&!S.contains(H.target)&&(w=!1,P())};return i.addEventListener("pointerdown",T),i.addEventListener("scroll",T,!0),{element:S,focus:()=>S.querySelector("button:not([disabled])")?.focus(),destroy(){i.removeEventListener("pointerdown",T),i.removeEventListener("scroll",T,!0)},update(H){let N=c?H.values?.[c]:null;L={value:H.value,readonly:H.readonly,durations:N&&typeof N=="object"&&!Array.isArray(N)?N:{}},P();let j=n.type==="selection"?"":JSON.stringify(b.map(V=>H.values?.[V]??null));if(R!==j){R=j;let V=++x;e.search(t,"",20).then(B=>{V===x&&(y=B.map(D=>({key:h(D),label:D.label,value:D,folded:D.folded===!0})),P())}).catch(()=>{})}}}};function As(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 Fs=e=>String(e).padStart(2,"0"),ui=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),Kt=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t);function ho(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 pi(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 bo(e,t,n){let{form:r,name:o,id:i,document:a,locale:d="en"}=t,s=t.labels??Qe.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"}),k=new Intl.DateTimeFormat(l,{weekday:"short"}),m=new Intl.DateTimeFormat(l,{weekday:"long"}),S=a.createElement("button");S.type="button",S.className="fd-calendar-button";let h="http://www.w3.org/2000/svg",p=a.createElementNS(h,"svg");p.setAttribute("viewBox","0 0 16 16"),p.setAttribute("aria-hidden","true");for(let[D,I]of[["rect",{x:"2",y:"3",width:"12",height:"11",rx:"1.5"}],["path",{d:"M2 6.5h12M5 1.5v3M11 1.5v3"}]]){let q=a.createElementNS(h,D);for(let[$,re]of Object.entries(I))q.setAttribute($,re);p.append(q)}S.append(p),S.setAttribute("aria-label",s.chooseDate),S.setAttribute("aria-haspopup","dialog"),S.setAttribute("aria-expanded","false"),S.setAttribute("aria-controls",`${i}-calendar`);let y=a.createElement("div");y.className="fd-calendar",y.id=`${i}-calendar`,y.setAttribute("role","dialog"),y.hidden=!0;let b=a.createElement("div");b.className="fd-calendar-head";let v=a.createElement("button");v.type="button",v.textContent="\u2039",v.setAttribute("aria-label",s.previousMonth);let R=a.createElement("span");R.className="fd-calendar-title",R.setAttribute("aria-live","polite");let x=a.createElement("button");x.type="button",x.textContent="\u203A",x.setAttribute("aria-label",s.nextMonth),b.append(v,R,x);let L=a.createElement("table");L.className="fd-calendar-grid",L.setAttribute("role","grid"),y.append(b,L);let E=a.createElement("span");E.className="fd-date-pick",E.append(e.element,S,y);let w=new Date,g=!1;function P(D){if(n==="date")r.setValue(o,`${D.getFullYear()}-${Fs(D.getMonth()+1)}-${Fs(D.getDate())}`);else{let I=pi("datetime",r.getState().values[o]),q=new Date(D.getFullYear(),D.getMonth(),D.getDate(),I?.getHours()??0,I?.getMinutes()??0);r.setValue(o,q.toISOString())}V(),E.dispatchEvent(new CustomEvent("fd-picked",{bubbles:!0,detail:{value:r.getState().values[o]}}))}function z(D){let I=pi(n,r.getState().values[o]),q=new Date,$=f.format(w);R.textContent=$,y.setAttribute("aria-label",$);let re=new Date(w.getFullYear(),w.getMonth(),1),Z=Kt(re,-((re.getDay()+6)%7)),J=a.createElement("tr"),_=a.createElement("th");_.scope="col",_.textContent=s.weekShort,_.setAttribute("abbr",s.week),J.append(_);for(let me=0;me<7;me++){let we=Kt(Z,me),Ee=a.createElement("th");Ee.scope="col",Ee.textContent=k.format(we).replace(/\.$/,""),Ee.setAttribute("abbr",m.format(we)),J.append(Ee)}let ie=a.createElement("thead");ie.append(J);let Me=a.createElement("tbody");for(let me=Z;me<=new Date(w.getFullYear(),w.getMonth()+1,0);me=Kt(me,7)){let we=a.createElement("tr"),Ee=a.createElement("th");Ee.scope="row",Ee.className="fd-week",Ee.textContent=String(As(me)),we.append(Ee);for(let ce=0;ce<7;ce++){let G=Kt(me,ce),ne=a.createElement("td"),ue=a.createElement("button");ue.type="button",ue.textContent=String(G.getDate()),ue.setAttribute("aria-label",c.format(G)),ue.tabIndex=ui(G,w)?0:-1,G.getMonth()!==w.getMonth()&&ue.classList.add("fd-outside"),I&&ui(G,I)&&ue.setAttribute("aria-selected","true"),ui(G,q)&&ue.setAttribute("aria-current","date"),ue.disabled=g,ue.addEventListener("click",()=>P(G)),ue.addEventListener("keydown",Le=>H(Le,G)),ne.append(ue),we.append(ne)}Me.append(we)}L.replaceChildren(ie,Me),D&&L.querySelector('button[tabindex="0"]')?.focus()}function T(D){w=D,z(!0)}function H(D,I){let q={ArrowLeft:()=>Kt(I,-1),ArrowRight:()=>Kt(I,1),ArrowUp:()=>Kt(I,-7),ArrowDown:()=>Kt(I,7),PageUp:()=>ho(I,-1),PageDown:()=>ho(I,1),Home:()=>Kt(I,-((I.getDay()+6)%7)),End:()=>Kt(I,6-(I.getDay()+6)%7)};q[D.key]?(D.preventDefault(),T(q[D.key]())):(D.key==="Enter"||D.key===" ")&&(D.preventDefault(),P(I))}function N(){w=pi(n,r.getState().values[o])??new Date,y.hidden=!1,S.setAttribute("aria-expanded","true"),z(!0),j()}function j(){y.style.translate="";let D=y.getBoundingClientRect(),I=a.documentElement.clientWidth;if(!D.width||!I)return;let q=D.left<8?8-D.left:D.right>I-8?Math.max(8-D.left,I-8-D.right):0;q&&(y.style.translate=`${Math.round(q)}px 0`)}function V(){y.hidden||(y.hidden=!0,S.setAttribute("aria-expanded","false"),S.focus())}S.addEventListener("click",()=>y.hidden?N():V()),v.addEventListener("click",()=>{w=ho(w,-1),z(!1)}),x.addEventListener("click",()=>{w=ho(w,1),z(!1)}),y.addEventListener("keydown",D=>{D.key==="Escape"&&(D.preventDefault(),D.stopPropagation(),V())});let B=D=>{!y.hidden&&!E.contains(D.target)&&(y.hidden=!0,S.setAttribute("aria-expanded","false"))};return a.addEventListener("mousedown",B),{element:E,focus:()=>e.focus(),update(D){g=D.readonly,S.hidden=D.readonly,D.readonly&&(y.hidden=!0),e.update(D)},destroy(){a.removeEventListener("mousedown",B),e.destroy?.()}}}var dc=e=>{let t=e.replace(/_/g," ").trim();return t.charAt(0).toUpperCase()+t.slice(1)},Ts=e=>e.normalize("NFKD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/^(\d)/,"p_$1")||"property";function lc(e,t){let n=dc(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 cc=["char","text","integer","float","boolean","date"],mi=e=>{let{form:t,name:n,field:r,node:o,id:i,document:a,labels:d,locale:s}=e,l=Se(a),f=Ne(d,s),c=r.type==="properties"?r.definitions:void 0,k=r.type==="properties"&&!!r.definitionsFrom,m=()=>{let B=t.getState().values[n];return B&&typeof B=="object"&&!Array.isArray(B)?B:{}},S={...t,getState:()=>({...t.getState(),values:m()}),setValue:(B,D)=>t.setValue(n,{...m(),[B]:D})},h=l("div",{class:"fd-properties-list"}),p=l("div",{class:"fd-properties",role:"group"},h);o.options?.columns===2&&(p.dataset.columns="2");let b=l("div",{class:"fd-help",role:"status",hidden:""});p.append(b);let v=k&&o.options?.add===!0,R=l("button",{type:"button",class:"fd-button fd-button-link fd-property-add",hidden:""},`+ ${f.addProperty}`),x=l("input",{type:"text",class:"fd-input","aria-label":f.propertyName,placeholder:f.propertyName,autocomplete:"off"}),L=f.propertyTypes.split("|"),E=l("select",{class:"fd-input fd-select","aria-label":f.propertyType},...cc.map((B,D)=>l("option",{value:B},L[D]??B))),w=l("button",{type:"button",class:"fd-button fd-button-primary"},f.add),g=l("button",{type:"button",class:"fd-button"},f.cancel),P=l("div",{class:"fd-property-new",hidden:""},x,E,w,g);v&&p.append(R,P);let z=null,T=()=>{P.hidden=!0,R.hidden=!1};R.addEventListener("click",()=>{P.hidden=!1,R.hidden=!0,x.value="",E.value="char",x.focus()}),g.addEventListener("click",()=>{T(),R.focus()});let H=()=>{let B=x.value.trim();if(!B)return x.focus();let D=new Set(N.map(q=>q.definition.name)),I=Ts(B);for(let q=2;D.has(I);q++)I=`${Ts(B)}_${q}`;z=I,T(),t.addDefinition(n,{name:I,label:B,type:E.value})};w.addEventListener("click",H),P.addEventListener("keydown",B=>{B.key==="Enter"&&B.target===x?(B.preventDefault(),H()):B.key==="Escape"&&(B.preventDefault(),B.stopPropagation(),T(),R.focus())});let N=[],j="";function V(B){for(let D of N)D.widget.destroy?.();N=B.map(D=>{let I=`${i}-${D.name}`,q={type:D.type,label:D.label,...D.options?{options:D.options}:{}},$={type:"field",id:`${o.id}.${D.name}`,field:D.name},re=Ct({...e,form:S,name:D.name,field:q,node:$,id:I});return{definition:D,widget:re}}),h.replaceChildren(...N.map(({definition:D,widget:I})=>{let q=a.createElement("div");q.className="fd-property",q.dataset.type=D.type;let $=a.createElement("label");return $.htmlFor=`${i}-${D.name}`,$.textContent=D.label,q.append($,I.element),q}))}return k&&!t.getState().definitions[n]&&t.loadDefinitions(n),{element:p,focus:()=>(N[0]?.widget??{focus:()=>R.focus()}).focus(),destroy:()=>N.forEach(B=>B.widget.destroy?.()),update(B){let D=m(),I=k?t.getState().definitions[n]:void 0,q=k?I?.definitions??[]:c??Object.keys(D).map(re=>lc(re,D[re])),$=JSON.stringify(q);$!==j&&(j=$,V(q));for(let{definition:re,widget:Z}of N)Z.update({value:D[re.name]??null,values:D,readonly:B.readonly,required:!1,invalid:!1});b.textContent=I?.loading&&!I.definitions?f.loading:I?.error??"",b.hidden=!b.textContent,v&&(B.readonly&&T(),R.hidden=B.readonly||!P.hidden),z&&N.some(re=>re.definition.name===z)&&(N.find(re=>re.definition.name===z)?.widget.focus(),z=null)}}};var fc=new Set(["P","BR","B","STRONG","I","EM","U","S","UL","OL","LI","A","H1","H2","H3","H4","BLOCKQUOTE","CODE","PRE","SPAN","DIV"]),uc=new Set(["SCRIPT","STYLE","IFRAME","OBJECT","EMBED","TEMPLATE","NOSCRIPT","SVG","MATH"]),pc=new Set(["P","DIV","H1","H2","H3","H4","LI","BLOCKQUOTE","PRE"]),mc=new Set(["left","center","right","justify","start","end"]);function gi(e,t=globalThis.document){let n=t.createElement("template");n.innerHTML=e;let r=i=>{for(let a of[...i.childNodes]){if(a.nodeType===Node.TEXT_NODE)continue;if(a.nodeType!==Node.ELEMENT_NODE){a.remove();continue}let d=a;if(uc.has(d.tagName)){d.remove();continue}if(r(d),!fc.has(d.tagName)){d.replaceWith(...d.childNodes);continue}let s=d.tagName==="A"?d.getAttribute("href"):null,l=pc.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&&mc.has(l)&&d.setAttribute("style",`text-align: ${l};`)}};r(n.content);let o=t.createElement("div");return o.append(n.content),o.innerHTML}function Ms(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 $s=[["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>']],hi=({form:e,name:t,node:n,id:r,document:o,labels:i=Qe.en})=>{let a=o.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=gi(a.innerHTML,o);s=c,e.setValue(t,c.trim()===""?null:c)}),a.addEventListener("blur",()=>{a.innerHTML!==s&&(a.innerHTML=s)});let l=d?gc(a,o,i):null,f=a;return l&&(f=o.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 k=gi(typeof c.value=="string"?c.value:"",o);(k!==s||o.activeElement!==a)&&(a.innerHTML!==k&&(a.innerHTML=k),s=k),a.setAttribute("contenteditable",String(!c.readonly)),a.classList.toggle("fd-blank",!k.trim()),a.setAttribute("aria-readonly",String(c.readonly)),a.setAttribute("aria-invalid",String(c.invalid)),c.describedBy&&a.setAttribute("aria-describedby",c.describedBy)}}};function gc(e,t,n){let r=t.createElement("div");r.className="fd-richtext-bar",r.setAttribute("role","toolbar"),r.setAttribute("aria-label",n.formatting);let o=null,i=()=>{e.focus();let h=t.getSelection();o&&h&&(h.removeAllRanges(),h.addRange(o))},a=(h,p)=>{i(),t.execCommand?.(h,!1,p)},d=t.createElement("select");d.className="fd-richtext-style",d.setAttribute("aria-label",n.textStyle);for(let[h,p]of[["p","paragraph"],["h2","heading"],["h3","subheading"]]){let y=t.createElement("option");y.value=h,y.textContent=n[p],d.append(y)}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 h=Ms(l.value);if(!h){l.setAttribute("aria-invalid","true");return}l.setAttribute("aria-invalid","false"),i(),t.execCommand?.("createLink",!1,h),s.hidden=!0}),c.addEventListener("click",()=>{i(),t.execCommand?.("unlink",!1),s.hidden=!0}),l.addEventListener("keydown",h=>{h.key==="Enter"?(h.preventDefault(),f.click()):h.key==="Escape"&&(h.preventDefault(),s.hidden=!0,i())});let k=$s.map(([h,p,y])=>{let b=t.createElement("button");return b.type="button",b.className="fd-richtext-tool",b.setAttribute("aria-label",n[h]),b.title=n[h],b.innerHTML=y,b.querySelector("svg")?.setAttribute("aria-hidden","true"),["bold","italic","underline","heading"].includes(p)&&b.setAttribute("aria-pressed","false"),b.addEventListener("mousedown",v=>v.preventDefault()),b.addEventListener("click",()=>{if(p==="heading")return a("formatBlock",d.value==="h2"?"<p>":"<h2>");if(p!=="createLink")return a(p);s.hidden=!1,l.value="",l.focus()}),b});r.append(d,...k);let m=[d,...k];m.forEach((h,p)=>h.tabIndex=p===0?0:-1),r.addEventListener("keydown",h=>{if(h.key!=="ArrowRight"&&h.key!=="ArrowLeft")return;let p=m.indexOf(t.activeElement);if(p<0)return;let y=getComputedStyle(r).direction==="rtl",b=h.key==="ArrowRight"!==y?1:-1,v=m[(p+b+m.length)%m.length];h.preventDefault(),m.forEach(R=>R.tabIndex=R===v?0:-1),v.focus()});let S=()=>{let h=t.getSelection();if(!h||!h.rangeCount||!e.contains(h.anchorNode))return;o=h.getRangeAt(0).cloneRange();let p=String(t.queryCommandValue?.("formatBlock")??"").toLowerCase().replace(/[<>]/g,"");d.value=p==="h2"||p==="h3"?p:"p";for(let y of k){let b=$s[k.indexOf(y)][1];y.hasAttribute("aria-pressed")&&y.setAttribute("aria-pressed",String(b==="heading"?p==="h2":t.queryCommandState?.(b)??!1))}};return t.addEventListener("selectionchange",S),{bar:r,linkRow:s,destroy:()=>t.removeEventListener("selectionchange",S)}}var bi=({form:e,name:t,id:n,document:r,labels:o=Qe.en})=>{let i=r.createElement("div");i.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,i.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=o.invalidJson}}),{element:i,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 Ns=new WeakMap;function hc(e){let t=Ns.get(e);return t===void 0&&(t=Math.floor(Math.random()*4294967296)>>>0,Ns.set(e,t)),t}function bc(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 yc(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 rn(e,t,n,r){if(r.options?.shuffle!==!0)return[...e];let o=(d,s)=>d[s]===!0,i=e.filter(d=>!o(d,"fixed")&&!o(d,"exclusive")),a=yc(bc(hc(t),n));for(let d=i.length-1;d>0;d--){let s=Math.floor(a()*(d+1));[i[d],i[s]]=[i[s],i[d]]}return i.push(...e.filter(d=>!o(d,"fixed")&&o(d,"exclusive"))),e.map(d=>o(d,"fixed")?d:i.shift())}var Cs=({form:e,name:t,field:n,node:r,id:o,document:i})=>{let a=n,d=a.multiple?"checkbox":"radio",s=(p,y={},...b)=>{let v=i.createElement(p);for(let[R,x]of Object.entries(y))v.setAttribute(R,x);return v.append(...b),v},l=s("table",{id:o,class:"fd-matrix-table"});l.append(s("thead",{},s("tr",{},s("th",{scope:"col"}),...a.columns.map(p=>s("th",{scope:"col"},p.label)))));let f=s("tbody"),c=[],k=[];for(let p of rn(a.rows,e,t,r)){let y=s("tr",{role:d==="radio"?"radiogroup":"group","aria-label":p.label});k.push(y),y.append(s("th",{scope:"row"},p.label));for(let b of a.columns){let v=s("input",{type:d,name:`${o}-${p.value}`,value:String(b.value),"data-row":String(p.value),"aria-label":`${p.label}: ${b.label}`});v.addEventListener("change",()=>{if(a.onePerColumn&&v.checked)for(let R of c)R.value===v.value&&R!==v&&(R.checked=!1);h()}),c.push(v),y.append(s("td",{},s("label",{class:"fd-matrix-pick"},v,s("span",{class:"fd-matrix-column"},b.label))))}f.append(y)}l.append(f);let m=s("div",{class:"fd-matrix"},l),S=p=>a.columns.find(y=>String(y.value)===p)?.value??p;function h(){let p={};for(let y of a.rows){let b=c.filter(v=>v.dataset.row===String(y.value)&&v.checked).map(v=>S(v.value));(a.multiple?b.length:b.length===1)&&(p[String(y.value)]=a.multiple?b:b[0])}e.setValue(t,Object.keys(p).length?p:null)}return{element:m,focus:()=>(c.find(p=>p.checked)??c[0])?.focus(),update(p){let y=p.value&&typeof p.value=="object"&&!Array.isArray(p.value)?p.value:{};for(let b of c){let v=y[b.dataset.row??""],R=Array.isArray(v)?v.map(String):v==null?[]:[String(v)];b.checked=R.includes(b.value),b.disabled=p.readonly}if(l.setAttribute("aria-invalid",String(p.invalid)),d==="radio")for(let b of k)Ie(b,"aria-required",String(p.required));p.describedBy?l.setAttribute("aria-describedby",p.describedBy):l.removeAttribute("aria-describedby")}}};var Kn=600,mr=180,xc="#1b2a5c",vc='"Segoe Script", "Snell Roundhand", "Brush Script MT", "Apple Chancery", cursive',wc=e=>Math.floor(e.length*3/4)-(e.endsWith("==")?2:e.endsWith("=")?1:0),kc=e=>e.data??e.url??"",Os=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d})=>{let s=Ne(a,d),l=Se(i),f=r.options??{},c=f.color,k=typeof c=="string"&&/^#[\da-f]{6}$/i.test(c)?c:xc,m=f.penWidth,S=typeof m=="number"&&m>0?m:3,h=f.footerLabel,p=l("canvas",{class:"fd-signature-pad",width:String(Kn),height:String(mr),role:"img","aria-label":s.signaturePad}),y=l("span",{class:"fd-signature-hint","aria-hidden":"true"},r.placeholder||s.signHere),b=l("img",{class:"fd-signature-image",alt:n.label,hidden:""}),v=l("input",{type:"text",class:"fd-input fd-signature-typed","aria-label":s.typeSignature,placeholder:s.typeSignature,autocomplete:"name"}),R=J=>l("button",{type:"button",class:"fd-button fd-button-link",hidden:""},J),x=R(s.undo),L=R(s.clearDrawing);L.classList.add("fd-signature-clear");let E=f.upload===!0?R(s.uploadSignature):null,w=l("input",{type:"file",accept:"image/*",class:"fd-sr-only",tabindex:"-1","aria-hidden":"true"}),g=l("div",{id:o,class:"fd-signature",role:"group"},l("div",{class:"fd-signature-box"},p,b,y),...typeof h=="string"&&h?[l("span",{class:"fd-signature-footer"},h)]:[],l("div",{class:"fd-signature-tools"},v,x,...E?[E,w]:[],L)),P=()=>{let J=p.getContext("2d");return J&&(J.strokeStyle=J.fillStyle=k,J.lineWidth=S,J.lineCap=J.lineJoin="round"),J},z=null,T=!1,H=null,N=[],j=null,V=()=>!N.length&&!H;function B(){let J=P();if(J){J.clearRect(0,0,Kn,mr),H&&(J.font=`italic 64px ${vc}`,J.textAlign="center",J.textBaseline="middle",J.fillText(H,Kn/2,mr/2,Kn-40));for(let _ of N){J.beginPath(),J.arc(_[0].x,_[0].y,S/2,0,Math.PI*2),J.fill();for(let ie=1;ie<_.length;ie++)D(_[ie-1],_[ie])}}}function D(J,_){let ie=P();ie?.beginPath(),ie?.moveTo(J.x,J.y),ie?.lineTo(_.x,_.y),ie?.stroke()}function I(){N=[],H=null,B()}function q(){if(y.hidden=!V(),V())return z=null,e.setValue(t,null);let J;try{J=p.toDataURL("image/png")}catch{return}if(!J)return;let _=J.slice(J.indexOf(",")+1);z=_,e.setValue(t,{name:"signature.png",type:"image/png",size:wc(_),data:_,...H&&!N.length?{text:H}:{}})}function $(J){let _=p.getBoundingClientRect();return{x:(J.clientX-_.left)*Kn/(_.width||Kn),y:(J.clientY-_.top)*mr/(_.height||mr)}}p.addEventListener("pointerdown",J=>{T||J.button!==0||(J.preventDefault(),p.setPointerCapture?.(J.pointerId),j=$(J),N.push([j]),y.hidden=!0,B())}),p.addEventListener("pointermove",J=>{if(!j)return;let _=$(J);D(j,_),N[N.length-1].push(_),j=_});let re=()=>{j&&(j=null,q())};p.addEventListener("pointerup",re),p.addEventListener("pointercancel",re),v.addEventListener("input",()=>{Z(),N=[],H=v.value.trim()||null,B(),q()}),x.addEventListener("click",()=>{N.pop(),B(),q()}),E?.addEventListener("click",()=>w.click()),w.addEventListener("change",()=>{let J=w.files?.[0];w.value="",J&&po(J).then(_=>e.setValue(t,_))}),L.addEventListener("click",()=>{I(),z=null,v.value="",Z(),e.setValue(t,null),v.focus()});function Z(){b.hidden=!0,p.hidden=!1}return{element:g,focus:()=>(v.hidden?L:v).focus(),update(J){T=J.readonly;let _=J.value&&typeof J.value=="object"&&!Array.isArray(J.value)?J.value:null,ie=i.activeElement!==v;if(_&&kc(_)!==z){let Me=_.data?`data:${_.type};base64,${_.data}`:_.url??"";b.getAttribute("src")!==Me&&(b.src=Me),b.hidden=!1,p.hidden=!0,z=null,I(),ie&&(v.value=_.text??"")}else _||((z!==null||!b.hidden)&&(z=null,I(),ie&&(v.value="")),Z());y.hidden=T||!V()||!b.hidden,v.hidden=T,v.readOnly=T,L.hidden=T||!_,x.hidden=T||!N.length||!b.hidden,E&&(E.hidden=T),p.classList.toggle("fd-signature-locked",T),Je(g,J),v.setAttribute("aria-invalid",String(J.invalid))}}};var yi=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d="en"})=>{let s=Ne(a,d),l=Se(i),f=E=>E in n&&typeof n[E]=="number"?n[E]:void 0,c=f("min")??0,k=f("max")??100,m=typeof r.options?.step=="number"&&r.options.step>0?r.options.step:1,S=n.type==="integer"?0:n.type==="float"&&n.digits?n.digits[1]:Math.max(0,-Math.floor(Math.log10(m))),h=E=>gt(E,S,d),p=l("input",{id:o,type:"range",class:"fd-slider-input",min:String(c),max:String(k),step:String(m)}),y=l("output",{class:"fd-slider-value",for:o,"aria-hidden":"true"}),b=[r.options?.startLabel,r.options?.endLabel].map(E=>typeof E=="string"?E:""),v=(E,w)=>l("span",{class:w?"fd-slider-last":void 0},h(E),...b[w]?[l("span",{class:"fd-slider-word"},b[w])]:[]),R=l("div",{class:"fd-slider-ends","aria-hidden":"true"},v(c,0),v(k,1)),x=nn(i,s,()=>{e.setValue(t,null),p.focus()},r),L=l("div",{class:"fd-slider"},l("div",{class:"fd-slider-track"},p,y),R,x.button);return b.some(Boolean)&&p.setAttribute("aria-description",b.filter(Boolean).join(" \u2026 ")),p.addEventListener("input",()=>e.setValue(t,Number(p.value))),{element:L,focus:()=>p.focus(),update(E){let w=typeof E.value=="number"?E.value:null;L.classList.toggle("fd-slider-empty",w===null);let g=String(w??(c+k)/2);p.value!==g&&(p.value=g),y.textContent=w===null?"\u2013":h(w),p.setAttribute("aria-valuetext",w===null?s.notAnswered:h(w)),p.disabled=E.readonly,x.allow(E),x.show(w!==null),Je(p,E)}}};function yo(e,t,n){let r=o=>e.some(i=>i.exclusive&&i.value===o);return r(n)?[n]:[...t.filter(o=>!r(o)),n]}function xo(e,t,n){let r=n.validate?.find(i=>i.atMost!==void 0&&(i.when??!0)===!0&&i.level!=="warning")?.atMost,o=r?e("span",{class:"fd-choice-limit",role:"status"}):null;return{element:o,full(i){let a=!!r&&i>=r;return o&&st(o,a?Ve(t.upTo,{n:r}):""),a}}}function vo(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 Ps=e=>Vs(e,!1),Is=e=>Vs(e,!0);function Vs({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d},s){let l=Ne(a,d),f=Se(i),c=n.type==="selection"?n.options:[],k=n.type==="selection"&&n.ownAnswers===!0&&!s,m=`${o}-list`,S=f("input",{id:o,type:"text",class:"fd-input fd-combo-input",role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-controls":m,autocomplete:"off",placeholder:r.placeholder||l.search}),h=f("ul",{id:m,class:"fd-listbox",role:"listbox",hidden:""}),p=f("ul",{class:"fd-chips"}),y=f("div",{class:"fd-combo"},S,h),b=to(S,h),v=s?f("div",{class:"fd-choice-search"},y):f("div",{class:"fd-tags fd-choice-tags"},p,y),R=()=>e.getState().values[t],x=()=>Array.isArray(R())?R():[],L=V=>e.setValue(t,V),E=V=>c.find(B=>B.value===V)?.label??(V==null?"":String(V)),w=[],g=-1,P=!1;function z(){h.replaceChildren(...w.map((V,B)=>{let D=f("li",{id:`${m}-${B}`,role:"option",class:`fd-option${B===g?" fd-active":""}`,"aria-selected":String(B===g)},V.label);return D.addEventListener("mousedown",I=>I.preventDefault()),D.addEventListener("click",()=>N(V)),D})),w.length||h.append(f("li",{class:"fd-empty"},l.noResults)),Ie(S,"aria-activedescendant",g>=0?`${m}-${g}`:null)}function T(){let V=S.value.trim(),B=s&&V===E(R())?"":V.toLowerCase(),D=new Set(x());w=c.filter(I=>!D.has(I.value)&&I.label.toLowerCase().includes(B)),k&&B&&!D.has(V)&&!c.some(I=>I.label.toLowerCase()===B)&&w.push({value:V,label:Ve(l.createNamed,{name:V})}),g=-1,z(),b.show(),S.setAttribute("aria-expanded","true")}function H(){b.hide(),g=-1,S.setAttribute("aria-expanded","false"),S.removeAttribute("aria-activedescendant")}function N(V){if(s)return S.value=V.label,L(V.value),H();S.value="",L(yo(c,x(),V.value)),i.activeElement===S?T():H()}s||S.addEventListener("focus",()=>!P&&T()),S.addEventListener("click",()=>!P&&h.hidden&&T()),S.addEventListener("input",()=>!P&&T()),S.addEventListener("blur",()=>{H(),s&&!P&&(S.value.trim()?S.value=E(R()):L(null))}),S.addEventListener("keydown",V=>{if(!P)switch(V.key){case"ArrowDown":case"ArrowUp":{if(V.preventDefault(),h.hidden)return T();if(!w.length)return;let B=V.key==="ArrowDown";g=g===-1?B?0:w.length-1:(g+(B?1:-1)+w.length)%w.length,z(),h.children[g]?.scrollIntoView?.({block:"nearest"});return}case"Enter":{let B=w[g]??(S.value.trim()?w[0]:void 0);if(h.hidden||!B)return;V.preventDefault(),N(B);return}case"Escape":h.hidden||V.preventDefault(),H();return;case"Backspace":!s&&S.value===""&&x().length&&L(x().slice(0,-1));return}});let j="";return{element:v,focus:()=>S.focus(),update(V){if(P=V.readonly,P&&H(),Je(S,V),Ie(S,"aria-required",String(V.required)),s){S.readOnly=P,i.activeElement!==S&&(S.value=E(V.value));return}let B=Array.isArray(V.value)?V.value:[];S.hidden=P;let D=JSON.stringify([P,B]);D!==j&&(j=D,p.replaceChildren(...B.map(I=>{let q=E(I),$=f("li",{class:"fd-chip"},f("span",{class:"fd-chip-label"},q));if(!P){let re=f("button",{type:"button",class:"fd-chip-remove","aria-label":Ve(l.remove,{name:q})},"\xD7");re.addEventListener("click",()=>L(x().filter(Z=>Z!==I))),$.append(re)}return $})),h.hidden||T())}}}var Sc='<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>',Ds=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d})=>{let s=Ne(a,d),l=Se(i),f=n.type==="selection"&&n.multiple===!0,c=n.type==="selection"?n.options:[],k=rn(c,e,t,r),m=r.options??{},S=m.showLabels===!1,h=l("div",{id:o,class:`fd-image-choices${S?" fd-image-choices-bare":""}`,role:f?"group":"radiogroup","data-size":m.imageSize,"data-fit":m.imageFit});vo(h,r);let p=f?xo(l,s,r):null,y=k.map(L=>{let E=L.image?l("img",{src:L.image,alt:L.alt??"",loading:"lazy",draggable:"false"}):l("span",{class:"fd-image-card-blank"});L.image||(E.innerHTML=Sc);let w=l("button",{type:"button",class:"fd-image-card",role:f?"checkbox":"radio","aria-checked":"false","aria-label":S?L.label:void 0},l("span",{class:"fd-image-card-picture"},E),l("span",{class:"fd-image-card-words"},L.label));return w.addEventListener("click",()=>v(L)),h.append(w),w}),b=()=>e.getState().values[t];function v(L){if(!f)return e.setValue(t,L.value);let E=Array.isArray(b())?b():[],w=new Set(E.includes(L.value)?E.filter(g=>g!==L.value):yo(c,E,L.value));e.setValue(t,c.filter(g=>w.has(g.value)).map(g=>g.value))}let R=!1;f||h.addEventListener("keydown",L=>{if(R)return;let E=y.indexOf(L.target);if(E===-1)return;let w=Pt(h),g={ArrowDown:1,ArrowUp:-1,ArrowRight:w?-1:1,ArrowLeft:w?1:-1},P=L.key==="Home"?0:L.key==="End"?y.length-1:L.key in g?(E+g[L.key]+y.length)%y.length:-1;P!==-1&&(L.preventDefault(),v(k[P]),y[P].focus())});let x=f?null:nn(i,s,()=>{e.setValue(t,null),y[0]?.focus()},r);return p?.element&&h.append(p.element),{element:x?l("div",{class:"fd-choices-box"},h,x.button):h,focus:()=>(y.find(L=>L.getAttribute("aria-checked")==="true")??y[0])?.focus(),update(L){R=L.readonly;let E=new Set(Array.isArray(L.value)?L.value:[L.value]),w=f?-1:Math.max(0,k.findIndex(P=>E.has(P.value))),g=!!p?.full(Array.isArray(L.value)?L.value.length:0);y.forEach((P,z)=>{let T=E.has(k[z].value);P.setAttribute("aria-checked",String(T)),P.tabIndex=f||z===w?0:-1,P.disabled=R||g&&!T&&!k[z].exclusive}),x?.allow(L),x?.show(k.some(P=>E.has(P.value))),Je(h,L)}}};var Ec=4,Ws=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d})=>{let s=Ne(a,d),l=Se(i),f=rn(n.type==="selection"?n.options:[],e,t,r),c=l("ol",{class:"fd-rank-list"}),k=no(l),m=r.options?.top,S=typeof m=="number"&&m>=1&&m<f.length?Math.floor(m):0,h=l("div",{class:"fd-rank-pool"}),p=l("button",{type:"button",class:"fd-button fd-rank-keep"},s.keepOrder);p.addEventListener("click",()=>e.setValue(t,R.map(T=>T.option.value)));let y=l("div",{id:o,class:"fd-ranking",role:"group"},...S?[l("div",{class:"fd-choice-limit"},Ve(s.upTo,{n:S})),h,c]:[c,p],k.element),b=f.map(T=>{let H=T.label,N=l("span",{class:"fd-rank-place","aria-hidden":"true"}),j=l("button",{type:"button",class:"fd-rank-move fd-rank-up","aria-label":Ve(s.moveUp,{label:H})},"\u2191"),V=l("button",{type:"button",class:"fd-rank-move fd-rank-down","aria-label":Ve(s.moveDown,{label:H})},"\u2193"),B=l("span",{class:"fd-rank-grip","aria-hidden":"true"}),D=l("span",{class:"fd-rank-tools"},j,V),I=l("li",{class:"fd-rank-item","data-value":String(T.value)},B,N,l("span",{class:"fd-rank-words"},H),D),q={option:T,element:I,place:N,up:j,down:V};if(S){let $=l("button",{type:"button",class:"fd-rank-pick"},H);$.addEventListener("click",()=>!v&&R.length<S&&E([...R,q],q));let re=l("button",{type:"button",class:"fd-rank-move fd-rank-out","aria-label":Ve(s.remove,{name:H})},"\xD7");re.addEventListener("click",()=>{k.say(Ve(s.removed,{name:H})),e.setValue(t,R.filter(Z=>Z!==q).map(Z=>Z.option.value))}),D.append(re),h.append($),q.pick=$}return j.addEventListener("click",()=>w(q,-1,"up")),V.addEventListener("click",()=>w(q,1,"down")),I.addEventListener("pointerdown",$=>P(q,$)),q}),v=!1,R=[...b],x=null;function L(T){for(R=T,T.forEach((H,N)=>{c.children[N]!==H.element&&c.insertBefore(H.element,c.children[N]??null),H.place.textContent=String(N+1),H.up.disabled=N===0,H.down.disabled=N===T.length-1});c.children.length>T.length;)c.lastElementChild?.remove()}function E(T,H){k.say(Ve(s.movedTo,{label:H.option.label,n:T.indexOf(H)+1,total:T.length})),e.setValue(t,T.map(N=>N.option.value))}function w(T,H,N){let j=R.indexOf(T),V=j+H;if(v||V<0||V>=R.length)return;let B=[...R];B.splice(j,1),B.splice(V,0,T),x=T.element.contains(i.activeElement)?{item:T,which:N==="up"&&V===0||N==="down"&&V===B.length-1?N==="up"?"down":"up":N}:null,E(B,T),g()}function g(){if(!x)return;let{item:T,which:H}=x;x=null,T[H].focus()}c.addEventListener("keydown",T=>{if(v||!T.altKey||T.key!=="ArrowUp"&&T.key!=="ArrowDown")return;let H=b.find(N=>N.element.contains(T.target));H&&(T.preventDefault(),w(H,T.key==="ArrowUp"?-1:1,T.key==="ArrowUp"?"up":"down"))});function P(T,H){if(v||H.button!==0||H.target.closest("button")||H.pointerType==="touch"&&!H.target.closest(".fd-rank-grip"))return;let N=H.clientY,j=[...R],V=!1;T.element.setPointerCapture?.(H.pointerId);let B=I=>{if(!V&&Math.abs(I.clientY-N)<Ec)return;V||(V=!0,T.element.classList.add("fd-rank-lifted")),I.preventDefault();let q=R.filter(re=>re!==T),$=q.filter(re=>{let Z=re.element.getBoundingClientRect();return Z.top+Z.height/2<I.clientY}).length;R.indexOf(T)!==$&&L([...q.slice(0,$),T,...q.slice($)])},D=()=>{T.element.removeEventListener("pointermove",B),T.element.removeEventListener("pointerup",D),T.element.removeEventListener("pointercancel",D),T.element.classList.remove("fd-rank-lifted"),R.some((I,q)=>I!==j[q])&&E(R,T)};T.element.addEventListener("pointermove",B),T.element.addEventListener("pointerup",D),T.element.addEventListener("pointercancel",D)}function z(T){let H=(Array.isArray(T)?T:[]).map(N=>b.find(j=>j.option.value===N)).filter(N=>!!N);return S?H.slice(0,S):Array.isArray(T)?[...new Set([...H,...R])]:R}return L(S?[]:R),{element:y,focus:()=>(b.find(T=>T.pick&&!T.pick.hidden&&!T.pick.disabled)?.pick??(R[0]?.down.disabled?R[0]?.up:R[0]?.down))?.focus(),update(T){v=T.readonly,y.classList.toggle("fd-ranking-locked",v);let H=z(T.value);(H.length!==R.length||H.some((N,j)=>N!==R[j])||!S&&!c.children.length)&&L(H);for(let N of b)N.up.hidden=N.down.hidden=v,N.pick&&(N.pick.hidden=R.includes(N),N.pick.disabled=v||R.length>=S,N.element.querySelector(".fd-rank-out").hidden=v);p.hidden=v||Array.isArray(T.value)&&T.value.length>0,g(),Je(y,T)}}};var Hs={street:["addressStreet","street-address"],line2:["addressLine2","address-line2"],city:["addressCity","address-level2"],region:["addressRegion","address-level1"],postcode:["addressPostcode","postal-code"],country:["addressCountry","country"]},Lc=e=>typeof e=="string"&&e in Hs,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",xi={};function vi(e){if(!xi[e]){let t=new Intl.DisplayNames([e],{type:"region",fallback:"none"}),n=[];for(let r=65;r<91;r++)for(let o=65;o<91;o++){let i=String.fromCharCode(r,o),a=!Rc.includes(i)&&t.of(i);a&&n.push([i,a])}xi[e]=n.sort((r,o)=>r[1].localeCompare(o[1],e))}return xi[e]}var js=({form:e,name:t,node:n,id:r,document:o,labels:i,locale:a="en"})=>{let d=Ne(i,a),s=Se(o),l=n.options??{},f=l.parts,c=Array.isArray(f)?f.filter(Lc):["street","city","postcode","country"],k=Array.isArray(l.requiredParts)?l.requiredParts:[],m=typeof l.country=="string"?l.country:"",S=s("div",{id:r,class:"fd-address",role:"group"}),h=(y,b)=>{let v=e.getState().values[t],R=v&&typeof v=="object"&&!Array.isArray(v)?{...v}:{};R[y]=b,m&&c.includes("country")&&R.country===void 0&&(R.country=m);let x=Object.fromEntries(Object.entries(R).filter(([,E])=>typeof E!="string"||E.trim()!=="")),L=Object.keys(x);e.setValue(t,L.length&&(y==="country"||L.join()!=="country"||x.country!==m)?x:null)},p=c.map(y=>{let[b,v]=Hs[y],R={id:`${r}-${y}`,class:"fd-input","data-part":y,autocomplete:y==="street"&&c.includes("line2")?"address-line1":v,"aria-required":k.includes(y)?"true":void 0},x=y==="country"?s("select",R,s("option",{value:""}),...vi(a).map(([L,E])=>s("option",{value:L},E))):s("input",{type:"text",...R});return x.addEventListener(y==="country"?"change":"input",()=>h(y,x.value)),y==="country"&&x.classList.add("fd-select"),S.append(s("div",{class:`fd-address-part fd-address-${y}${k.includes(y)?" fd-required":""}`},s("label",{class:"fd-address-label",for:x.id},d[b]),x)),{part:y,input:x}});return{element:S,focus:()=>p[0]?.input.focus(),update(y){let b=y.value&&typeof y.value=="object"&&!Array.isArray(y.value)?y.value:{};for(let{part:v,input:R}of p){let x=typeof b[v]=="string"?b[v]:v==="country"&&b.country===void 0?m:"";R instanceof HTMLSelectElement?(x&&![...R.options].some(L=>L.value===x)&&R.append(s("option",{value:x},x)),R.disabled=y.readonly):R.readOnly=y.readonly,o.activeElement!==R&&R.value!==x&&(R.value=x),R.setAttribute("aria-invalid",String(y.invalid&&(!k.length||k.includes(v)&&!x.trim())))}Je(S,y)}}};var zs=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0,Bs=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d,dialogs:s})=>{let l=Ne(a,d),f=Se(i),c=n,k=r.options??{},m=zs(k.min)??0,S=zs(k.max)??1/0,h=typeof k.itemLabel=="string"&&k.itemLabel.trim()?k.itemLabel.trim():null,p=N=>h?`${h} ${N}`:Ve(l.entry,{n:N}),y=(r.columns??Object.keys(c.fields)).filter(N=>c.fields[N]&&c.fields[N].type!=="one2many"&&N!==c.sequenceField&&N!==c.lineKinds?.field),b=f("div",{class:"fd-repeat-list"}),v=f("button",{type:"button",class:"fd-button fd-repeat-add"},typeof k.addLabel=="string"&&k.addLabel?k.addLabel:l.addAnother),R=no(f),x=f("div",{id:o,class:"fd-repeat",role:"group"},b,v,R.element),L=new Map,E=()=>e.getState().values[t]??[],w=!1,g=null;for(let N=E().length;N<m;N++)e.addLine(t);v.addEventListener("click",()=>{if(w||E().length>=S)return;let N=e.addLine(t);g=()=>L.get(N)?.fields[0]?.widget.focus(),H()});function P(N){let j=`${o}-${N.key}-title`,V=f("span",{id:j,class:"fd-repeat-title"}),B=f("button",{type:"button",class:"fd-repeat-remove"},"\xD7"),D=(_,ie,Me)=>{let me=f("button",{type:"button",class:"fd-repeat-tool"},_);return me.addEventListener("click",Me),[me,ie]},I=()=>E().findIndex(_=>_.key===N.key),q=[D("\u2191","moveUp",()=>z(N.key,I()-1)),D("\u2193","moveDown",()=>z(N.key,I()+1)),D("\u29C9","copy",()=>T(N.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 _=E().find(ie=>ie.key===N.key);_&&s&&fo(e,t,r,_,s,w)});let re=f("div",{class:"fd-repeat-fields"}),Z=f("div",{class:"fd-repeat-card",role:"group","aria-labelledby":j,"data-line":N.key},f("div",{class:"fd-repeat-head"},V,...q.map(([_])=>_),...$?[$]:[],B),re),J=y.map(_=>{let ie=c.fields[_],Me=`${o}-${N.key}-${_}`,me={type:"field",id:`${r.id}.${N.key}.${_}`,field:_},we=Ct({form:co(e,t,N.key),name:_,field:ie,node:me,id:Me,document:i,labels:a,locale:d,dialogs:s}),Ee=f("label",{class:"fd-repeat-label",for:Me},ie.label);["INPUT","SELECT","TEXTAREA"].includes(we.element.tagName)||Ee.addEventListener("click",()=>we.focus());let ce=f("div",{class:"fd-cell-error",hidden:""});return re.append(f("div",{class:"fd-repeat-field"},Ee,we.element,ce)),{name:_,def:ie,widget:we,error:ce}});return B.addEventListener("click",()=>{let _=E(),ie=_.findIndex(Ee=>Ee.key===N.key);if(w||ie===-1||_.length<=m)return;let Me=V.textContent??"";e.removeLine(t,N.key),R.say(Ve(l.removed,{name:Me}));let me=E(),we=me[Math.min(ie,me.length-1)];g=()=>we?L.get(we.key)?.fields[0]?.widget.focus():v.focus(),H()}),{element:Z,title:V,remove:B,tools:q,fields:J}}function z(N,j){let V=E().findIndex(I=>I.key===N);if(w||j<0||j>=E().length||j===V)return;let B=L.get(N)?.title.textContent??"";Un(e,t,c,N,j);let D=V>j&&j>0||j===E().length-1?0:1;L.get(N)?.tools[D][0].focus(),R.say(Ve(l.movedTo,{label:B,n:j+1,total:E().length}))}function T(N){let j=E(),V=j.findIndex(I=>I.key===N);if(w||V<0||j.length>=S)return;let B={...j[V].values};c.sequenceField&&delete B[c.sequenceField];let D=e.addLine(t,B);Un(e,t,c,D,V+1),L.get(D)?.fields[0]?.widget.focus()}function H(){let N=g;g=null,N?.()}return{element:x,focus:()=>([...L.values()].find(N=>N.element===b.firstElementChild)?.fields[0]?.widget??v).focus(),update(N){w=N.readonly;let j=N.value??[],V=e.getState().errors,B=new Set(j.map(D=>D.key));for(let[D,I]of L)if(!B.has(D)){I.element.remove();for(let q of I.fields)q.widget.destroy?.();L.delete(D)}j.forEach((D,I)=>{let q=L.get(D.key);q||L.set(D.key,q=P(D)),b.children[I]!==q.element&&b.insertBefore(q.element,b.children[I]??null),q.title.textContent=p(I+1),q.remove.setAttribute("aria-label",Ve(l.remove,{name:q.title.textContent})),q.remove.hidden=w||j.length<=m||r.lineDelete!==void 0&&!e.lineState(r.id,D.key).deletable;for(let[$,re]of q.tools)$.setAttribute("aria-label",Ve(l[re],{label:q.title.textContent,name:q.title.textContent})),$.hidden=w||(re==="moveUp"?I===0:re==="moveDown"?I===j.length-1:j.length>=S);for(let $ of q.fields){let re=V[`${t}.${D.key}.${$.name}`];$.error.hidden=!re,$.error.textContent=re??"",$.widget.update({value:D.values[$.name],values:D.values,parent:N.values,readonly:w||$.def.readonly===!0,required:$.def.required===!0,invalid:!!re})}}),v.hidden=w||j.length>=S,Je(x,N)}}};function wi(e,{form:t,name:n,field:r,document:o,labels:i,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=Se(o),f=l("div",{class:"fd-count","aria-hidden":"true"}),c=l("div",{class:"fd-sr-only","aria-live":"polite"}),k;return{...e,element:l("div",{class:"fd-counted"},e.element,f,c),update(m){e.update(m);let S=d.value.length;st(f,`${S} / ${s}`),f.classList.toggle("fd-count-near",S>=s*.9),Rt(f,m.readonly),o.activeElement===d&&(clearTimeout(k),k=setTimeout(()=>st(c,Ve(Ne(i,a).charactersLeft,{n:s-S})),700))}}}function qs(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 wo(e,t,n){let r=n.options??{},o=t.type==="char";(o?[r.min,r.max]:"min"in t?[t.min,t.max]:[]).forEach((a,d)=>{typeof a=="string"&&(e[d?"max":"min"]=o?a:un(a)+(t.type==="datetime"?d?"T23:59":"T00:00":""))}),typeof r.step=="number"&&(e.step=String(r.step*60))}function ki(e,t){try{let n=new Intl.NumberFormat(t,{style:"currency",currency:e,currencyDisplay:"narrowSymbol"}).formatToParts(1),r=n.findIndex(o=>o.type==="currency");return{text:n[r].value,after:r>n.findIndex(o=>o.type==="integer")}}catch{return{text:e,after:!1}}}function _s(e,t){let{form:n,name:r,document:o}=t,i=Ne(t.labels,t.locale),a=o.createElement("div"),d=o.createElement("div"),s=o.createElement("button");s.type="button",s.className="fd-button fd-button-link",s.textContent=i.choicesFailed,s.onclick=()=>n.loadChoices(r),d.setAttribute("role","status"),a.style.cssText="display:grid;gap:4px";let l=new Map,f,c=null,k=m=>{f?.destroy?.(),f=e({...t,field:{...t.field,options:m}}),f.element.getAttribute("role")&&f.element.setAttribute("aria-labelledby",`${t.id}-label`),a.replaceChildren(f.element,d,s)};return k([]),n.getState().choices[r]||n.loadChoices(r),{element:a,focus:()=>f.focus(),destroy:()=>f.destroy?.(),update(m){let S=n.getState().choices[r];if(S?.options&&S.options!==c){c=S.options;for(let p of c)l.set(p.value,p.label);k(c)}f.update(m);let h=c&&!t.field.other?[m.value].flat().filter(p=>p!=null&&!c?.some(y=>y.value===p)):[];d.className=S?.loading?"fd-help":"fd-warning",d.textContent=S?.loading?i.loadingChoices:h.length?qe(i.notOffered,{name:h.map(p=>l.get(p)??String(p)).join(", ")}):"",d.hidden=!d.textContent,s.hidden=!S?.error}}}var Us=({form:e,name:t,node:n,id:r,document:o,labels:i,locale:a})=>{let d=Ne(i,a),s=Se(o),l=s("div",{id:r,class:"fd-points fd-yes-no",role:"radiogroup"}),f=!1,c=[!0,!1].map(m=>{let S=n.options?.[m?"yesLabel":"noLabel"],h=s("button",{type:"button",role:"radio"},typeof S=="string"&&S?S:m?d.yes:d.no);return h.addEventListener("click",()=>e.setValue(t,m)),l.append(h),h});l.addEventListener("keydown",m=>{let S=c.indexOf(m.target);f||S===-1||!m.key.startsWith("Arrow")||(m.preventDefault(),e.setValue(t,S===1),c[1-S].focus())});let k=nn(o,d,()=>{e.setValue(t,null),c[0].focus()},n);return{element:s("div",{class:"fd-choices-box"},l,k.button),focus:()=>(c.find(m=>m.getAttribute("aria-checked")==="true")??c[0]).focus(),update(m){f=m.readonly;let S=m.value===!0?0:m.value===!1?1:-1;c.forEach((h,p)=>{Ie(h,"aria-checked",String(p===S)),h.classList.toggle("fd-on",p===S),h.tabIndex=p===Math.max(0,S)?0:-1,h.disabled=f}),Ie(l,"aria-required",String(m.required)),k.allow(m),k.show(S!==-1),Je(l,m)}}};var Fc=new Set(["info","success","warning","danger","muted"]),ko=({field:e,node:t,id:n,document:r,locale:o="en"})=>{let i=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=St(e,d,s,o);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=i[f];typeof c=="string"&&Fc.has(c)?a.dataset.tone=c:delete a.dataset.tone}}};var Ks=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=Qe.en,locale:d,dialogs:s})=>{let l=n,f=Se(i),c=l.fields??{},k=(r.columns??[]).filter(V=>c[V]),m=V=>typeof r.options?.[V]=="string"&&r.options[V].trim()?r.options[V]:null,S=!!s&&s.canOpen(l.relation),h=f("tr",{},...k.map(V=>f("th",{scope:"col","data-column":V},c[V].label)),f("th",{class:"fd-lines-tools"})),p=f("tbody"),y=f("table",{class:"fd-lines-table fd-links-table"},f("thead",{},h),p),b=f("button",{type:"button",class:"fd-button fd-button-link fd-lines-add","data-add":"line"},`+ ${m("addLabel")??a.addLine}`),v=f("div",{class:"fd-lines-adds"},b),R=m("emptyLabel"),x=R?f("div",{class:"fd-help fd-lines-empty"},R):null,L=f("div",{class:"fd-lines fd-links",id:o,role:"group"},f("div",{class:"fd-lines-scroll"},y),...x?[x]:[],v),E=new Map,w=new Set,g=!1,P=[],z=()=>e.getState().values[t]??[];function T(V,B=!1){let D=V.map(I=>I.id).filter(I=>B||!E.has(String(I))&&!w.has(String(I)));if(D.length){for(let I of D)w.add(String(I));e.linkedValues(t,D,k).then(I=>{for(let{id:q,values:$}of I)E.set(String(q),$);for(let q of D)w.delete(String(q));j()},()=>D.forEach(I=>w.delete(String(I))))}}b.addEventListener("click",async()=>{if(!s||g)return;let V=await s.searchMore({title:l.label,search:(B,D)=>e.search(t,B,D)});!V||z().some(B=>B.id===V.id)||e.setValue(t,[...z(),{id:V.id,label:V.label}])});async function H(V){let B=await s?.openRecord(l.relation,{recordId:V.id,title:V.label});B&&(B.label!==V.label&&e.setValue(t,z().map(D=>D.id===V.id?{id:D.id,label:B.label}:D)),T([V],!0))}function N(V){let B=E.get(String(V.id)),D=k.map((q,$)=>{let re=B?St(c[q],B[q]??null,B,d):$===0?V.label:"";return f("td",{"data-column":q},f("span",{class:"fd-value-text"},re))}),I=f("td",{class:"fd-lines-tools"});if(S){let q=f("button",{type:"button",class:"fd-line-open","aria-label":Ve(a.openNamed,{name:V.label}),title:a.openLine},"\u2197");q.addEventListener("click",()=>{H(V)}),I.append(q)}if(!g){let q=f("button",{type:"button",class:"fd-line-delete","aria-label":Ve(a.remove,{name:V.label})},"\xD7");q.addEventListener("click",()=>e.setValue(t,z().filter($=>$.id!==V.id))),I.append(q)}return f("tr",{"data-record":String(V.id)},...D,I)}function j(){let V=i.activeElement,B=L.contains(V)?V.closest("tr")?.dataset.record:void 0;p.replaceChildren(...P.map(N)),B&&p.querySelector(`tr[data-record="${CSS.escape(B)}"] button`)?.focus()}return{element:L,focus:()=>(p.querySelector("button")??b).focus(),update(V){let B=V.value??[],D=B!==P||V.readonly!==g;g=V.readonly,P=B,v.hidden=g||!s,x&&(x.hidden=B.length>0),Ie(L,"aria-invalid",String(V.invalid)),Ie(L,"aria-describedby",V.describedBy||null),D&&j(),T(B)}}};var Si=({form:e,name:t,field:n,id:r,document:o})=>{let i=Se(o),a=n.type==="selection"?n.options.map(c=>({value:c.value,label:c.label})):[{value:!1,label:""},{value:!0,label:n.label}],d=i("div",{id:r,class:"fd-priority",role:"radiogroup"}),s=a.slice(1).map((c,k)=>{let m=i("button",{type:"button",role:"radio",class:"fd-priority-star","aria-label":c.label,title:c.label,"data-value":String(c.value)},"\u2605");return m.addEventListener("click",()=>e.setValue(t,l(e.getState().values[t])===k+1?a[0].value:c.value)),d.append(m),m}),l=c=>Math.max(0,a.findIndex(k=>k.value===c)),f=!1;return d.addEventListener("keydown",c=>{if(f)return;let k=Pt(d)?"ArrowLeft":"ArrowRight",m=Pt(d)?"ArrowRight":"ArrowLeft",S=c.key===k||c.key==="ArrowUp"?1:c.key===m||c.key==="ArrowDown"?-1:0;if(!S)return;c.preventDefault();let h=Math.min(a.length-1,Math.max(0,l(e.getState().values[t])+S));e.setValue(t,a[h].value),s[Math.max(0,h-1)]?.focus()}),{element:d,focus:()=>(s.find(c=>c.tabIndex===0)??s[0])?.focus(),update(c){f=c.readonly;let k=l(c.value);s.forEach((m,S)=>{Ie(m,"aria-checked",String(k===S+1)),m.classList.toggle("fd-on",S<k);let h=k===S+1||k===0&&S===0?0:-1;m.tabIndex!==h&&(m.tabIndex=h),m.disabled!==c.readonly&&(m.disabled=c.readonly)}),Je(d,c)}}};function Gn(e,t,n,r){let o=e.ownerDocument,i=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],k=getComputedStyle(e).direction==="rtl",m=o.documentElement.clientWidth||c,S=Math.max(8,Math.min(k?l.right-c:l.left,m-c-8));Object.assign(n.style,{top:`${l.bottom-f.top+4}px`,left:`${S-f.left}px`})}o.addEventListener("pointerdown",i,!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)}o.removeEventListener("pointerdown",i,!0),r()}}return{open:a,close:d,isOpen:()=>!n.hidden}}var Ac={normal:"muted",grey:"muted",blocked:"danger",red:"danger",done:"success",green:"success",waiting:"warning"},Gs=["muted","danger","success","warning","info"],Tc=new Set(["info","success","warning","danger","muted"]),Js=({form:e,name:t,field:n,node:r,id:o,document:i})=>{let a=Se(i),d=n.type==="selection"?n.options:[],s=r.options?.tones??{},l=(L,E)=>{let w=s[String(L)];return typeof w=="string"&&Tc.has(w)?w:Ac[String(L)]??Gs[E%Gs.length]},f=()=>a("span",{class:"fd-dot","aria-hidden":"true"}),c=a("button",{type:"button",id:o,class:"fd-dot-button","aria-haspopup":"menu","aria-expanded":"false","aria-controls":`${o}-menu`},f()),k=r.options?.label===!0?a("span",{class:"fd-dot-label"}):null,m=d.map((L,E)=>{let w=a("div",{role:"menuitemradio",class:"fd-dot-item",tabindex:"-1","data-tone":l(L.value,E)},f(),L.label);return w.addEventListener("click",()=>x(E)),w}),S=a("div",{id:`${o}-menu`,role:"menu",class:"fd-dot-menu","aria-label":n.label,hidden:""},...m),h=a("span",{class:"fd-dot-box"},c,...k?[k]:[],S),p=()=>d.findIndex(L=>L.value===e.getState().values[t]),y=!1,b=Gn(h,c,S,()=>{y&&c.focus(),y=!1});function v(L=Math.max(0,p())){b.open(),m[L]?.focus()}function R(L){y=L,b.close()}function x(L){e.setValue(t,d[L].value),R(!0)}return c.addEventListener("click",()=>S.hidden?v():R(!0)),c.addEventListener("keydown",L=>{L.key!=="ArrowDown"&&L.key!=="ArrowUp"&&L.key!=="Enter"&&L.key!==" "||(L.preventDefault(),v(L.key==="ArrowUp"?p()<0?m.length-1:p():void 0))}),S.addEventListener("keydown",L=>{let E=m.indexOf(i.activeElement),w={ArrowDown:E+1,ArrowUp:E-1,Home:0,End:m.length-1}[L.key];w!==void 0?(L.preventDefault(),m[(w+m.length)%m.length]?.focus()):L.key==="Enter"||L.key===" "?(L.preventDefault(),E>=0&&x(E)):L.key==="Escape"?(L.preventDefault(),L.stopPropagation(),R(!0)):L.key==="Tab"&&R(!0)}),{element:h,focus:()=>c.focus(),destroy:()=>R(!1),update(L){let E=d.findIndex(g=>g.value===L.value),w=E<0?"":d[E].label;Ie(c,"aria-label",w?`${n.label}: ${w}`:n.label),Ie(c,"title",w||null),Ie(c,"data-tone",E<0?"muted":l(L.value,E)),k&&st(k,w),m.forEach((g,P)=>Ie(g,"aria-checked",String(P===E))),c.disabled!==L.readonly&&(c.disabled=L.readonly),L.readonly&&R(!1),Je(c,L)}}};var So=["transparent","#f06050","#f4a460","#f7cd1f","#6cc1ed","#814968","#eb7e7f","#2c8397","#475577","#d6145f","#30c381","#9365b8"],$c=({form:e,name:t,field:n,id:r,document:o,labels:i,locale:a})=>{let d=Se(o),s=Ne(i,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=So.map((b,v)=>{let R=d("button",{type:"button",role:"radio",class:"fd-colour","aria-label":s[v]??String(v),title:s[v]??String(v),tabindex:"-1","data-colour":String(v)});return R.style.setProperty("--fd-swatch",b),R.addEventListener("click",()=>y(v)),R}),c=d("div",{id:`${r}-palette`,role:"radiogroup",class:"fd-colour-palette","aria-label":n.label,hidden:""},...f),k=d("span",{class:"fd-colour-box"},l,c),m=!1,S=Gn(k,l,c,()=>{m&&l.focus(),m=!1}),h=()=>{let b=e.getState().values[t];return typeof b=="number"&&b>=0&&b<So.length?b:0};function p(b){m=b,S.close()}function y(b){e.setValue(t,b),p(!0)}return l.addEventListener("click",()=>{if(S.isOpen())return p(!0);S.open(),f[h()].focus()}),c.addEventListener("keydown",b=>{let v=f.indexOf(o.activeElement),R=Pt(k)?"ArrowLeft":"ArrowRight",x=Pt(k)?"ArrowRight":"ArrowLeft",L=b.key===R||b.key==="ArrowDown"?v+1:b.key===x||b.key==="ArrowUp"?v-1:b.key==="Home"?0:b.key==="End"?f.length-1:null;L!==null?(b.preventDefault(),f[(L+f.length)%f.length].focus()):(b.key==="Enter"||b.key===" ")&&v>=0?(b.preventDefault(),y(v)):b.key==="Escape"?(b.preventDefault(),b.stopPropagation(),p(!0)):b.key==="Tab"&&p(!0)}),{element:k,focus:()=>l.focus(),destroy:()=>p(!1),update(b){let v=typeof b.value=="number"&&b.value>=0&&b.value<So.length?b.value:0;l.style.setProperty("--fd-swatch",So[v]),l.classList.toggle("fd-colour-none",v===0),Ie(l,"aria-label",`${n.label}: ${s[v]??v}`),Ie(l,"title",s[v]??String(v)),f.forEach((R,x)=>Ie(R,"aria-checked",String(x===v))),l.disabled!==b.readonly&&(l.disabled=b.readonly),b.readonly&&p(!1),Je(l,b)}}},Mc=({form:e,name:t,id:n,document:r})=>{let o=Se(r),i=o("input",{id:n,type:"color",class:"fd-colour-input"}),a=o("span",{class:"fd-colour-code",dir:"ltr"});return i.addEventListener("input",()=>e.setValue(t,i.value)),{element:o("span",{class:"fd-colour-box"},i,a),focus:()=>i.focus(),update(d){let s=typeof d.value=="string"?d.value:"",l=/^#[0-9a-f]{6}$/i.test(s)?s.toLowerCase():"#000000";i.value!==l&&(i.value=l),st(a,s),i.disabled!==d.readonly&&(i.disabled=d.readonly),Je(i,d)}}},Ei=e=>e.field.type==="char"?Mc(e):$c(e);var Li=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d})=>{let s=Se(i),l=Ne(a,d),f=n.type==="text",c=f?s("textarea",{id:o,class:"fd-input fd-textarea",rows:"3"}):s("input",{id:o,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 k=s("button",{type:"button",class:"fd-button fd-copy-button",hidden:""},l.copyValue),m=s("span",{class:"fd-sr-only",role:"status"}),S;return k.addEventListener("click",async()=>{let h=String(e.getState().values[t]??"");if(h){try{await navigator.clipboard.writeText(h)}catch{c.select(),i.execCommand?.("copy")}st(k,l.copied),st(m,l.copied),clearTimeout(S),S=setTimeout(()=>{st(k,l.copyValue),st(m,"")},2e3)}}),{element:s("span",{class:`fd-copy${f?" fd-copy-long":""}`},c,k,m),focus:()=>c.focus(),destroy:()=>clearTimeout(S),update(h){let p=h.value===null||h.value===void 0?"":String(h.value);c.value!==p&&(c.value=p),c.readOnly!==h.readonly&&(c.readOnly=h.readonly),k.hidden=!p,Je(c,h)}}};var Ro=e=>String(e).padStart(2,"0"),Gt=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t),Eo=(e,t)=>new Date(e.getFullYear(),e.getMonth()+t,Math.min(e.getDate(),new Date(e.getFullYear(),e.getMonth()+t+1,0).getDate())),Lo=(e,t)=>!!e&&!!t&&e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),Nc='<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>',Ri=e=>`${e.getFullYear()}-${Ro(e.getMonth()+1)}-${Ro(e.getDate())}`,Fi=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d="en"})=>{let s=Se(i),l=Ne(a,d),f=n.type==="datetime"?"datetime":"date",c=typeof r.options?.endField=="string"?r.options.endField:null,k=c?e.page.fields[c]?.label??c:"",m=d==="en"?"en-GB":d,S=new Intl.DateTimeFormat(m,{month:"long",year:"numeric",numberingSystem:"latn"}),h=new Intl.DateTimeFormat(m,{weekday:"long",day:"numeric",month:"long",year:"numeric",numberingSystem:"latn"}),p=new Intl.DateTimeFormat(m,{weekday:"short"}),y=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())?"":`${Ri(J)}T${Ro(J.getHours())}:${Ro(J.getMinutes())}`},b=Z=>{let J=y(Z),_=/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}))?/.exec(J);return _?new Date(Number(_[1]),Number(_[2])-1,Number(_[3]),Number(_[4]??0),Number(_[5]??0)):null},v=(Z,J)=>{if(f==="date")return Ri(Z);let _=b(J);return new Date(Z.getFullYear(),Z.getMonth(),Z.getDate(),_?.getHours()??0,_?.getMinutes()??0).toISOString()},R=(Z,J,_)=>{let ie=s("input",{type:f==="date"?"date":"datetime-local",class:"fd-input fd-range-input","aria-label":J,..._?{id:_}:{}});return ie.addEventListener("input",()=>{if(!ie.value)return e.setValue(Z,null);if(f==="date")return e.setValue(Z,ie.value);let Me=new Date(ie.value);Number.isNaN(Me.getTime())||e.setValue(Z,Me.toISOString())}),ie},x=R(t,n.label,o),L=c?R(c,k):null,E=s("button",{type:"button",class:"fd-calendar-button fd-range-button","aria-label":l.chooseDate,"aria-haspopup":"dialog","aria-expanded":"false","aria-controls":`${o}-range`});E.innerHTML=Nc;let w=s("button",{type:"button","aria-label":l.previousMonth},"\u2039"),g=s("button",{type:"button","aria-label":l.nextMonth},"\u203A"),P=s("span",{class:"fd-calendar-title","aria-live":"polite"}),z=s("table",{class:"fd-calendar-grid",role:"grid"}),T=s("div",{id:`${o}-range`,class:"fd-calendar fd-range-calendar",role:"dialog",hidden:""},s("div",{class:"fd-calendar-head"},w,P,g),z),H=s("div",{class:"fd-range",role:"group"},s("span",{class:"fd-range-box"},x,...L?[s("span",{class:"fd-range-arrow","aria-hidden":"true"},"\u2192"),L]:[]),E,T),N=new Date,j=null,V=null;function B(Z){let J=e.getState().values;if(!c)return e.setValue(t,v(Z,J[t])),$();if(!j)return j=Z,N=Z,D(!0);let[_,ie]=Z<j?[Z,j]:[j,Z];j=null,e.setValue(t,v(_,J[t])),e.setValue(c,v(ie,J[c])),$()}function D(Z){let J=e.getState().values,_=j??b(J[t]),ie=j?V&&V>=j?V:null:c?b(J[c]):null,Me=S.format(N);P.textContent=Me,T.setAttribute("aria-label",Me);let me=new Date(N.getFullYear(),N.getMonth(),1),we=Gt(me,-((me.getDay()+6)%7)),Ee=s("tr",{},...Array.from({length:7},(G,ne)=>s("th",{scope:"col"},p.format(Gt(we,ne)).replace(/\.$/,"")))),ce=s("tbody");for(let G=we;G<=new Date(N.getFullYear(),N.getMonth()+1,0);G=Gt(G,7)){let ne=s("tr");for(let ue=0;ue<7;ue++){let Le=Gt(G,ue),oe=s("button",{type:"button","data-day":Ri(Le),"aria-label":h.format(Le),tabindex:Lo(Le,N)?"0":"-1"},String(Le.getDate()));Le.getMonth()!==N.getMonth()&&oe.classList.add("fd-outside");let K=Lo(Le,_)||Lo(Le,ie);K&&oe.setAttribute("aria-selected","true"),_&&ie&&Le>_&&Le<ie&&!K&&oe.classList.add("fd-in-range"),Lo(Le,new Date)&&oe.setAttribute("aria-current","date"),oe.addEventListener("click",()=>B(Le)),oe.addEventListener("pointerenter",()=>{if(j){V=Le;for(let Q of z.querySelectorAll("button[data-day]")){let le=b(Q.dataset.day);Q.classList.toggle("fd-in-range",!!le&&le>j&&le<Le)}}}),oe.addEventListener("keydown",Q=>I(Q,Le)),ne.append(s("td",{},oe))}ce.append(ne)}z.replaceChildren(s("thead",{},Ee),ce),Z&&z.querySelector('button[tabindex="0"]')?.focus()}function I(Z,J){let _=Pt(H),ie={ArrowLeft:()=>Gt(J,_?1:-1),ArrowRight:()=>Gt(J,_?-1:1),ArrowUp:()=>Gt(J,-7),ArrowDown:()=>Gt(J,7),PageUp:()=>Eo(J,-1),PageDown:()=>Eo(J,1),Home:()=>Gt(J,-((J.getDay()+6)%7)),End:()=>Gt(J,6-(J.getDay()+6)%7)};ie[Z.key]?(Z.preventDefault(),N=ie[Z.key](),j&&(V=N),D(!0)):(Z.key==="Enter"||Z.key===" ")&&(Z.preventDefault(),B(J))}function q(){j=null,V=null,N=b(e.getState().values[t])??new Date,T.hidden=!1,E.setAttribute("aria-expanded","true"),D(!0)}function $(){T.hidden||(T.hidden=!0,j=null,E.setAttribute("aria-expanded","false"),E.focus())}E.addEventListener("click",()=>T.hidden?q():$()),w.addEventListener("click",()=>(N=Eo(N,-1),D(!1))),g.addEventListener("click",()=>(N=Eo(N,1),D(!1))),T.addEventListener("keydown",Z=>{Z.key==="Escape"&&(Z.preventDefault(),Z.stopPropagation(),$())});let re=Z=>{T.hidden||H.contains(Z.target)||(T.hidden=!0,j=null,E.setAttribute("aria-expanded","false"))};return i.addEventListener("mousedown",re),{element:H,focus:()=>x.focus(),destroy:()=>i.removeEventListener("mousedown",re),update(Z){for(let[J,_]of[[x,Z.value],...L&&c?[[L,Z.values[c]]]:[]]){let ie=y(_);i.activeElement!==J&&J.value!==ie&&(J.value=ie),J.readOnly!==Z.readonly&&(J.readOnly=Z.readonly),J.classList.toggle("fd-blank",!ie)}E.hidden=Z.readonly,Z.readonly&&(T.hidden=!0),Ie(H,"aria-labelledby",null),Je(x,Z)}}};var Ai=e=>String(e).padStart(2,"0");function Cc(e){let t=Math.max(0,Math.floor(e));return`${Ai(Math.floor(t/3600))}:${Ai(Math.floor(t%3600/60))}:${Ai(t%60)}`}var Ys=e=>{if(typeof e!="string"||!e)return null;let t=new Date(e).getTime();return Number.isNaN(t)?null:t},Ti=({field:e,node:t,id:n,document:r})=>{let o=Se(r),i=e.type==="datetime",a=!i&&typeof t.options?.startField=="string"?t.options.startField:null,d=t.options?.unit==="minutes"?60:3600,s=o("span",{class:"fd-timer-time"}),l=o("span",{id:n,role:"timer",class:"fd-timer"},o("span",{class:"fd-timer-dot","aria-hidden":"true"}),s);Ie(l,"aria-label",e.label);let f=0,c=null,k,m=()=>st(s,Cc(f+(c===null?0:(Date.now()-c)/1e3))),S=()=>{clearInterval(k),k=void 0};return{element:l,focus:()=>{},destroy:S,update(h){f=!i&&typeof h.value=="number"?h.value*d:0,c=i?Ys(h.value):a?Ys(h.values[a]):null,c!==null?l.dataset.running="true":delete l.dataset.running,m(),c===null?S():k||(k=setInterval(()=>l.isConnected?m():S(),1e3))}}};var Xs=e=>typeof e=="number"&&e>0?e:480,Oc=e=>/^https?:\/\//i.test(e);function Pc(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 Zs=e=>{let t=Se(e.document),n=Ne(e.labels,e.locale),r=fr({...e,node:{...e.node,widget:void 0}}),o=t("iframe",{class:"fd-embed-frame"});o.style.height=`${Xs(e.node.options?.height)}px`;let i=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?Pc(c):"",s&&(o.title=c?.name??e.field.label,o.src=s)),a.replaceChildren(...s?[o]:f.readonly?[i]:[])}}},Qs=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:d})=>{let s=Se(i),l=Ne(a,d),f=s("input",{id:o,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=`${Xs(r.options?.height)}px`;let k=s("a",{class:"fd-button fd-button-link fd-embed-open",target:"_blank",rel:"noopener noreferrer",hidden:""},l.openInNewTab),m=s("div",{class:"fd-embed-view"}),S="";return{element:s("div",{class:"fd-embed"},s("div",{class:"fd-embed-bar"},f,k),m),focus:()=>f.focus(),update(h){let p=typeof h.value=="string"?h.value.trim():"";i.activeElement!==f&&f.value!==(typeof h.value=="string"?h.value:"")&&(f.value=typeof h.value=="string"?h.value:""),f.readOnly!==h.readonly&&(f.readOnly=h.readonly),f.hidden=h.readonly;let y=Oc(p)?p:"";y!==S&&(S=y,y&&(c.src=y),m.replaceChildren(...y?[c]:[])),k.hidden=!y,y&&(k.href=y)}}};var on=e=>typeof e=="number"?e:Number(e)||0;function Ic(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 o=n.groups_by_subtotal??{},i=n.subtotals??[{name:t,amount:on(n.amount_untaxed)}];return{subtotals:(n.subtotals_order??i.map(d=>d.name)).map(d=>({name:d,amount:on(i.find(s=>s.name===d)?.amount??n.amount_untaxed),groups:(o[d]??[]).map((s,l)=>({name:String(s.tax_group_name??""),amount:on(s.tax_group_amount),at:[d,l]}))})),total:on(n.amount_total)}}let r=(Array.isArray(n.groups)?n.groups:[]).map((o,i)=>({name:String(o.name??""),amount:on(o.amount),at:i}));return{subtotals:[{name:t,amount:on(n.untaxed),groups:r}],total:on(n.total)}}var ed=({form:e,name:t,node:n,id:r,document:o,labels:i,locale:a="en"})=>{let d=Se(o),s=Ne(i,a),l=n.options??{},f=typeof l.currencyField=="string"?l.currencyField:null,c=typeof l.currency=="string"?l.currency:null,k=d("tbody"),m=d("table",{id:r,class:"fd-tax-totals"},k),S="";function h(p,y){let b=JSON.parse(JSON.stringify(e.getState().values[t])),v=p.amount;if(Array.isArray(p.at)){let[R,x]=p.at;b.groups_by_subtotal[R][x].tax_group_amount=y,b.amount_total=Math.round((on(b.amount_total)+y-v)*100)/100}else b.groups[p.at].amount=y,b.total=Math.round((on(b.total)+y-v)*100)/100;e.setValue(t,b)}return{element:m,focus:()=>m.querySelector("input")?.focus(),update(p){let y=Ic(p.value,s.untaxed),b=f?p.values[f]:null,v=c??(b&&typeof b=="object"&&"label"in b?b.label:typeof b=="string"?b:""),R=g=>/^[A-Z]{3}$/.test(v)?Fn(g,v,2,a):gt(g,2,a),x=l.editable===!0&&!p.readonly,L=JSON.stringify([y,v,x]);if(L===S||m.contains(o.activeElement))return;S=L;let E=(g,P,z)=>d("tr",{class:z},d("th",{scope:"row"},g),d("td",{},P)),w=[];for(let g of y?.subtotals??[]){w.push(E(g.name,R(g.amount),"fd-tax-subtotal"));for(let P of g.groups){if(!x){w.push(E(P.name,R(P.amount),"fd-tax-group"));continue}let z=d("input",{type:"text",class:"fd-input fd-number-input",inputmode:"decimal",autocomplete:"off","aria-label":P.name});z.value=gt(P.amount,2,a),z.addEventListener("change",()=>{let T=_t(z.value.trim(),a);/^-?(\d+\.?\d*|\.\d+)$/.test(T)&&h(P,Number(T))}),w.push(E(P.name,z,"fd-tax-group"))}}y&&w.push(E(s.total,R(y.total),"fd-tax-total")),k.replaceChildren(...w)}}};var Fo=e=>typeof e=="string"?e:typeof e=="number"?String(e):"";function Vc(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:Fo(n.date),amount:typeof n.amount=="number"?n.amount:Number(n.amount)||0,name:Fo(n.name),journal:Fo(n.journal_name??n.journal),memo:Fo(n.ref??n.memo),id:n.account_payment_id??n.payment_id??n.id??null}))}var td=({node:e,id:t,document:n,labels:r,locale:o="en",dialogs:i})=>{let a=Se(n),d=Ne(r,o),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",k=a("ul",{class:"fd-payments-list"}),m=a("div",{class:"fd-payment-due",hidden:""}),S=a("div",{id:t,class:"fd-payments"},k,m),h={type:"date",label:""},p="",y=null;return{element:S,focus:()=>k.querySelector("button")?.focus(),destroy:()=>y?.(),update(b){let v=l?b.values[l]:null,R=v&&typeof v=="object"&&"label"in v?v.label:typeof v=="string"?v:"",x=g=>/^[A-Z]{3}$/.test(R)?Fn(g,R,2,o):gt(g,2,o),L=Vc(b.value),E=f?b.values[f]:null,w=JSON.stringify([L,R,E]);w!==p&&(p=w,y?.(),k.replaceChildren(...L.map((g,P)=>{let z=x(g.amount),T=a("button",{type:"button",class:"fd-payment-info","aria-label":Ve(d.paymentOf,{amount:z}),"aria-haspopup":"dialog","aria-expanded":"false","aria-controls":`${t}-payment-${P}`},"i"),H=(q,$)=>$?[a("dt",{},q),a("dd",{},$)]:[],N=g.id!==null&&i?.canOpen(c)?a("button",{type:"button",class:"fd-button fd-button-link fd-payment-open"},d.openPayment):null,j=a("div",{id:`${t}-payment-${P}`,class:"fd-payment-details",role:"dialog","aria-label":Ve(d.paymentOf,{amount:z}),tabindex:"-1",hidden:""},a("strong",{},g.name||z),a("span",{class:"fd-payment-details-amount"},z),a("dl",{},...H(d.journal,g.journal),...H(d.memo,g.memo)),...N?[N]:[]),V=a("li",{class:"fd-payment"},T,a("span",{class:"fd-payment-date"},Ve(d.paidOn,{date:St(h,g.date,{},o)})),a("span",{class:"fd-payment-amount"},z),j),B=!1,D=Gn(V,T,j,()=>{B&&T.focus(),B=!1,y===I&&(y=null)}),I=()=>D.close();return T.addEventListener("click",()=>{if(D.isOpen())return I();y?.(),D.open(),y=I,(N??j).focus()}),j.addEventListener("keydown",q=>{q.key==="Escape"&&(q.preventDefault(),q.stopPropagation(),B=!0,I())}),N?.addEventListener("click",()=>{I(),i?.openRecord(c,{recordId:g.id,title:g.name||z})}),V})),m.hidden=E==null,m.replaceChildren(a("span",{},d.amountDue),a("strong",{},typeof E=="number"?x(E):"")))}}};function Ct(e,t={}){let{field:n,node:r}=e,o=[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(i=>i!==null);for(let i of o){let a=t[i]??od[i];if(a)return n.type==="selection"&&n.optionsFrom?_s(a,e):a(e)}return qc(e)}function et(e,t,n={},...r){let o=e.createElement(t);for(let[i,a]of Object.entries(n))a!==void 0&&o.setAttribute(i,a);return o.append(...r),o}function an(e,t){Ie(e,"aria-invalid",String(t.invalid)),Ie(e,"aria-required",e.getAttribute("role")==="group"?null:String(t.required)),Ie(e,"aria-describedby",t.describedBy||null)}var $o=e=>e==null?"":String(e);function Jn(e){return t=>{let{form:n,name:r,field:o,node:i,id:a,document:d}=t,s=et(d,"input",{id:a,type:e,class:"fd-input",autocomplete:/^(email|tel|url)$/.test(e)?e:"off"});return o.type==="char"&&o.size!==void 0&&(s.maxLength=o.size),e==="time"&&wo(s,o,i),i.placeholder&&(s.placeholder=i.placeholder),s.addEventListener("input",()=>n.setValue(r,s.value===""?null:s.value)),wi({element:s,focus:()=>s.focus(),update(l){let f=$o(l.value);s.value!==f&&(s.value=f),s.readOnly!==l.readonly&&(s.readOnly=l.readonly),an(s,l)}},t,s)}}var Dc=e=>{let{form:t,name:n,field:r,node:o,id:i,document:a}=e,d=et(a,"textarea",{id:i,class:"fd-input fd-textarea",rows:"3"});r.type==="text"&&r.size!==void 0&&(d.maxLength=r.size),o.placeholder&&(d.placeholder=o.placeholder);let s=qs(d,o);return d.addEventListener("input",()=>{s(),t.setValue(n,d.value===""?null:d.value)}),wi({element:d,focus:()=>d.focus(),update(l){let f=$o(l.value);d.value!==f&&(d.value=f,s()),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),an(d,l)}},e,d)},Wc=/^-?(\d+\.?\d*|\.\d+)$/,Hc=/^-?\.?$/,$i=e=>{let{form:t,name:n,field:r,node:o,id:i,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=P=>typeof P=="number"?gt(P,l,d):$o(P),c=et(a,"input",{id:i,type:"text",class:"fd-input fd-number-input",autocomplete:"off"});c.inputMode=s?"numeric":"decimal",o.placeholder&&(c.placeholder=o.placeholder);let k=P=>{let z=_t(P.trim(),d);if(z==="")return null;if(Wc.test(z))return Number(z);if(!Hc.test(z))return z};c.addEventListener("input",()=>{let P=k(c.value);P!==void 0&&t.setValue(n,P)}),c.addEventListener("focus",()=>{queueMicrotask(()=>{let P=t.getState().values[n];if(a.activeElement!==c||c.readOnly||typeof P!="number"||c.value!==f(P))return;let z=c.value,[T,H]=[c.selectionStart??z.length,c.selectionEnd??z.length],N=j=>dr(z.slice(0,j),d).length;c.value=dr(z,d),c.setSelectionRange(N(T),N(H))})}),c.addEventListener("blur",()=>{c.value=f(t.getState().values[n])});let m=o.options??{},S=r.type==="monetary"?r.currencyField:void 0,h=S?t.page.fields[S]:void 0,p=S&&h&&m.pickCurrency===!0?Ct({...e,name:S,field:h,node:{type:"field",id:`${o.id}.currency`,field:S},id:`${i}-currency`}):null;p&&h&&p.element.querySelector("input, select")?.setAttribute("aria-label",h.label),p?.element.matches("input, select")&&h&&p.element.setAttribute("aria-label",h.label);let y=m.symbol?m.symbol==="after":r.type==="monetary"&&ki(r.currency??"USD",d).after,b=(P,z)=>et(a,"span",{class:`fd-unit${r.type==="monetary"?" fd-currency":""}`,id:`${i}-unit${z}`},P),v=r.type==="monetary"&&!p?b("",0):null,[R,x]=["prefix","suffix"].map((P,z)=>typeof m[P]=="string"&&m[P]?b(m[P],z+1):null),L=(y?null:p?.element??v)??R,E=(y?p?.element??v:null)??x,w=[L,E].filter(P=>!!P&&P!==p?.element);return{element:L||E?et(a,"span",{class:`fd-number${y?" fd-currency-after":""}${p?" fd-currency-picked":""}`},...[L,c,E].filter(P=>!!P)):c,focus:()=>c.focus(),update(P){let z=a.activeElement===c,T=k(c.value),H=T===void 0||T===P.value;if(!(z&&H)){let N=z&&!P.readonly&&typeof P.value=="number"?ni(P.value,l,d):f(P.value);c.value!==N&&(c.value=N)}if(c.readOnly!==P.readonly&&(c.readOnly=P.readonly),an(c,{...P,describedBy:[P.describedBy,...w.map(N=>N.id)].filter(Boolean).join(" ")}),p&&S&&p.update({value:P.values[S],values:P.values,readonly:P.readonly,required:!1,invalid:!1}),v&&r.type==="monetary"){let N=_n(r,P.values,P.parent)??"";st(v,/^[A-Z]{3}$/.test(N)?ki(N,d).text:N)}for(let[N,j]of[[L,"start"],[E,"end"]])N&&w.includes(N)&&c.style.setProperty(`padding-inline-${j}`,`calc(var(--fd-pad-x) + ${N.textContent?.length??0}ch + 4px)`)}}};function Mi(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:o,document:i})=>{let a=et(i,"input",{id:o,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),an(a,d)}}}}function To(e){return e.type==="selection"?e.options:[]}var jc=e=>{let{form:t,name:n,field:r,node:o,id:i,document:a}=e,d=o.options?.search;if(d===!0||d!==!1&&To(r).length>15)return Is(e);let s=rn(To(r),t,n,o),l=et(a,"option",{value:""}),f=et(a,"select",{id:i,class:"fd-input fd-select"},l);return s.forEach((c,k)=>f.append(et(a,"option",{value:String(k)},c.label))),f.addEventListener("change",()=>t.setValue(n,f.value===""?null:s[Number(f.value)].value)),{element:f,focus:()=>f.focus(),update(c){let k=s.findIndex(m=>m.value===c.value);f.value=k===-1?"":String(k),l.hidden=c.required&&k!==-1,f.disabled!==c.readonly&&(f.disabled=c.readonly),an(f,c)}}};function nd(e){return({form:t,name:n,field:r,node:o,id:i,document:a,labels:d,locale:s})=>{let l=rn(To(r),t,n,o),f=Ne(d,s),c=et(a,"div",{id:i,class:`fd-choices fd-choices-${e}`,role:e==="radio"?"radiogroup":"group"});vo(c,o);let k=e==="checkbox"?xo(Se(a),f,o):null,m=l.map((x,L)=>{let E=et(a,"input",{type:e,name:i,value:String(L),id:`${i}-${L}`});return c.append(et(a,"label",{class:"fd-choice",for:`${i}-${L}`},E,et(a,"span",{},x.label))),E}),S=r.type==="selection"&&r.other===!0,h=S?et(a,"input",{type:e,name:i,value:"other",id:`${i}-other`}):null,p=S?et(a,"input",{type:"text",class:"fd-input fd-other-input","aria-label":f.otherAnswer,autocomplete:"off"}):null;h&&p&&(c.append(et(a,"div",{class:"fd-choice fd-choice-other"},et(a,"label",{class:"fd-choice-other-pick",for:`${i}-other`},h,et(a,"span",{},f.other)),p)),p.addEventListener("input",()=>{h.checked||(h.checked=!0),y(h)}),h.addEventListener("change",()=>{h.checked&&p.focus()})),k?.element&&c.append(k.element);function y(x){if(e==="checkbox"&&x instanceof HTMLInputElement&&x.checked){let E=l[m.indexOf(x)]?.exclusive===!0;m.forEach((w,g)=>w!==x&&(E||l[g].exclusive)&&(w.checked=!1)),E&&h&&(h.checked=!1)}let L=h?.checked&&p&&p.value.trim()?p.value:null;if(e==="radio"){let E=m.findIndex(w=>w.checked);t.setValue(n,E!==-1?l[E].value:L)}else{let E=new Set(l.filter((w,g)=>m[g].checked));t.setValue(n,[...To(r).filter(w=>E.has(w)).map(w=>w.value),...L!==null?[L]:[]])}}c.addEventListener("change",x=>{x.target!==p&&y(x.target)});let b=new Set(l.map(x=>x.value)),v=()=>m.some(x=>x.checked)||h?.checked===!0,R=e==="radio"?nn(a,f,()=>{for(let x of[...m,h])x&&(x.checked=!1);t.setValue(n,null),(m[0]??h)?.focus()},o):null;return{element:R?et(a,"div",{class:"fd-choices-box"},c,R.button):c,focus:()=>(m.find(x=>x.checked)??(h?.checked?p:null)??m[0])?.focus(),update(x){let L=Array.isArray(x.value)?x.value:[x.value],E=!!k?.full(Array.isArray(x.value)?x.value.length:0);if(m.forEach((w,g)=>{w.checked=L.includes(l[g].value);let P=x.readonly||E&&!w.checked&&!l[g].exclusive;w.disabled!==P&&(w.disabled=P)}),h&&p){let w=L.find(z=>typeof z=="string"&&!b.has(z)),g=h.checked&&!p.value.trim()&&(e==="checkbox"||L.every(z=>z==null));h.checked=w!==void 0||g,w!==void 0&&a.activeElement!==p&&(p.value=w);let P=x.readonly||E&&!h.checked;h.disabled!==P&&(h.disabled=p.disabled=P)}R?.allow(x),R?.show(v()),an(c,x)}}}}function rd(e){return({form:t,name:n,field:r,node:o,id:i,document:a,labels:d,locale:s})=>{let l=Ne(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,k=e==="rating"?o.options?.icon:"number",m=k!=="number",S=e==="scale"&&o.options?.nps===!0&&f===0&&c===10,h=et(a,"div",{id:i,class:`fd-points fd-${m?"rating":"scale"}${m?` fd-rating-${k??"star"}`:""}${S?" fd-nps":""}`,role:"radiogroup"}),p=[],y=e==="rating"&&f===c,b=e==="rating"&&(y||o.options?.clear===!1),v=!1;for(let E=f;E<=c;E++){let w=et(a,"button",{type:"button",role:"radio","aria-label":Ve(l.ofMax,{n:E,max:c}),"data-value":String(E)},k==="thumb"?wt(a,"thumb"):k==="heart"?"\u2665":m?"\u2605":String(E));e==="scale"&&w.removeAttribute("aria-label"),S&&(w.dataset.tone=E<7?"low":E<9?"mid":"high"),w.addEventListener("click",()=>t.setValue(n,b&&!v&&t.getState().values[n]===E?null:E)),p.push(w),h.append(w)}h.addEventListener("keydown",E=>{let w=t.getState().values[n],g=typeof w=="number"?w:f-1,P=E.key==="ArrowRight"||E.key==="ArrowUp"?1:E.key==="ArrowLeft"||E.key==="ArrowDown"?-1:0;if(!P)return;E.preventDefault();let z=Math.min(c,Math.max(f,g+P));t.setValue(n,z),p[z-f]?.focus()});let R=[o.options?.startLabel,o.options?.endLabel].map(E=>typeof E=="string"?E:""),x=nn(a,l,()=>{t.setValue(n,null),p[0]?.focus()},o,!y),L=R.some(Boolean)?et(a,"div",{class:"fd-scale-box"},h,et(a,"div",{class:"fd-scale-ends","aria-hidden":"true"},et(a,"span",{},R[0]),et(a,"span",{},R[1]))):h;return R.some(Boolean)&&h.setAttribute("aria-description",R.filter(Boolean).join(" \u2026 ")),{element:et(a,"div",{class:"fd-choices-box"},L,x.button),focus:()=>(p.find(E=>E.getAttribute("aria-checked")==="true")??p[0])?.focus(),update(E){let w=typeof E.value=="number"?E.value:null;v=E.required,p.forEach((g,P)=>{let z=f+P;Ie(g,"aria-checked",String(z===w)),g.classList.toggle("fd-on",m?w!==null&&z<=w:z===w);let T=z===w||w===null&&P===0?0:-1;g.tabIndex!==T&&(g.tabIndex=T),g.disabled!==E.readonly&&(g.disabled=E.readonly)}),x.allow(E),x.show(w!==null),an(h,E)}}}}var zc=e=>{let{form:t,name:n,field:r,id:o,document:i,node:a}=e,d=et(i,"input",{id:o,type:"date",class:"fd-input fd-date"});wo(d,r,a),d.addEventListener("input",()=>t.setValue(n,d.value||null));let s={element:d,focus:()=>d.focus(),update(l){let f=$o(l.value);d.value!==f&&(d.value=f),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),d.classList.toggle("fd-blank",!f),an(d,l)}};return a.options?.weekNumbers===!0?bo(s,e,"date"):s},Ao=e=>String(e).padStart(2,"0"),Bc=e=>{let{form:t,name:n,field:r,id:o,document:i,node:a}=e,d=et(i,"input",{id:o,type:"datetime-local",class:"fd-input fd-datetime"});wo(d,r,a);let s=f=>{if(typeof f!="string"||!f)return"";let c=new Date(f);return Number.isNaN(c.getTime())?"":`${c.getFullYear()}-${Ao(c.getMonth()+1)}-${Ao(c.getDate())}T${Ao(c.getHours())}:${Ao(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),an(d,f)}};return a.options?.weekNumbers===!0?bo(l,e,"datetime"):l};function qc({field:e,id:t,document:n}){let r=et(n,"span",{id:t,class:"fd-pending","data-fd-pending":e.type});return{element:r,focus:()=>{},update(o){r.textContent=mo(o.value,e)}}}function mo(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 od={char:Jn("text"),"char.email":Jn("email"),"char.phone":Jn("tel"),"char.url":Jn("url"),"char.password":Jn("password"),"char.time":Jn("time"),"char.tags":ri,text:Dc,integer:$i,float:$i,monetary:$i,"integer.rating":rd("rating"),"integer.scale":rd("scale"),"integer.slider":yi,"float.slider":yi,"integer.progressbar":ur,"integer.label":pr,"float.label":pr,"monetary.label":pr,"float.progressbar":ur,"float.duration":ds,"float.percentage":ls,"monetary.progressbar":ur,boolean:Mi(),"boolean.toggle":Mi("switch"),"boolean.tick":Mi("tick"),"boolean.buttons":Us,"boolean.priority":Si,"selection.priority":Si,"selection.dot":Js,"integer.color":Ei,"char.color":Ei,"char.copy":Li,"text.copy":Li,"date.daterange":Fi,"datetime.daterange":Fi,"float.timer":Ti,"datetime.timer":Ti,"binary.pdf":Zs,"char.embed":Qs,"json.distribution":us,"json.tax-totals":ed,"json.payments":td,selection:jc,"selection.radio":nd("radio"),"selection.checkboxes":nd("checkbox"),"selection.tags":Ps,"selection.image-choice":Ds,"selection.ranking":Ws,"selection.statusbar":go,date:zc,datetime:Bc,many2one:cr,"many2one.statusbar":go,many2many:so,"many2many.tags":so,"many2many.checkboxes":oi,"many2many.table":Ks,reference:ii,one2many:di,"one2many.cards":Bs,binary:fr,"binary.signature":Os,image:ci,html:hi,json:bi,"json.address":js,properties:mi,matrix:Cs,"char.badge":ko,"selection.badge":ko,"many2one.badge":ko};var id=`.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:"*";margin-inline-start:.25em;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 ad='.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 sd='.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-field>.fd-number:not(.fd-currency-picked){align-self:start}.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 dd=".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 ld='.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{padding-inline:var(--fd-pad-x)}.fd-form[data-fd-skin=outlined] .fd-read-text{padding-inline:calc(var(--fd-pad-x) + 1px)}.fd-form :is(.fd-title,.fd-title-line) .fd-read-text{padding-inline:0}.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 :is(.fd-oneline-row,.fd-oneline-pair)>.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 :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field>*{grid-column:auto!important}:is(.fd-oneline-row,.fd-oneline-pair)>.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}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field>:is(.fd-error,.fd-warning){flex-basis:100%}.fd-oneline-row .fd-input{width:12em;max-width:100%}.fd-form .fd-oneline-pair{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:6px 10px;flex:0 1 auto;max-width:100%;min-width:0}.fd-form .fd-oneline-pair:not(:has(>:not([hidden]))){display:none}.fd-form :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field{max-width:100%}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field>*{max-width:100%;min-width:0}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference]) .fd-input{width:15em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=integer],[data-type=float]) .fd-input{width:7em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field[data-type=monetary] .fd-input{width:8.5em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=date],[data-type=datetime]) .fd-input{width:9.5em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field[data-type=datetime] .fd-input{width:14em}.fd-form :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference],[data-type=date],[data-type=datetime]){flex:1 1 auto}.fd-form :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference],[data-type=date],[data-type=datetime])>:not(.fd-label){flex:1 1 auto}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference],[data-type=date],[data-type=datetime]) .fd-input{width:100%;min-width:min(100%,var(--fd-oneline-min, 9.5em))}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field[data-type=datetime]{--fd-oneline-min: 14em}.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}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-button-link{padding-inline:0;min-height:0}:is(.fd-oneline-row,.fd-oneline-pair)>.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 cd='.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:var(--fd-gap-x, 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 fd='.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}@layer fieldia-tokens{: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]{--fd-ground: var(--fd-page)}}.fd-form[data-scheme]{color-scheme:light;background:var(--fd-page);color:var(--fd-text);border-radius:var(--fd-radius)}:is(.fd-form,.fd-form-dialog)[data-scheme=dark]{color-scheme:dark}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto]{color-scheme:dark}}.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}@layer fieldia-tokens{:is(.fd-form,.fd-form-dialog)[data-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]{--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 bn='system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Arabic", sans-serif',ud={material:{light:{font:`Roboto, ${bn}`,text:"#1d1b20",muted:"#49454f",page:"#fef7ff",surface:"#ffffff",border:"#79747e","border-strong":"#49454f",accent:"#6750a4","accent-text":"#ffffff","accent-soft":"#eaddff",focus:"#6750a4","focus-ring":"none",error:"#b3261e","error-soft":"#f9dedc",radius:"12px","control-radius":"4px","control-height":"48px","pad-y":"10px","pad-x":"16px","input-border":"0 0 1px 0","label-weight":"500","gap-x":"24px","gap-y":"20px",fill:"#ece6f0"},dark:{text:"#e6e0e9",muted:"#cac4d0",page:"#141218",surface:"#1d1b20",border:"#938f99","border-strong":"#cac4d0",accent:"#d0bcff","accent-text":"#381e72","accent-soft":"#4f378b",focus:"#d0bcff",error:"#f2b8b5","error-soft":"#601410",fill:"#36343b",edge:"#938f99"}},fluent:{light:{font:`"Segoe UI Variable Text", "Segoe UI", ${bn}`,text:"#242424",muted:"#616161",page:"#f5f5f5",surface:"#ffffff",border:"#d1d1d1","border-strong":"#616161",accent:"#0f6cbd","accent-text":"#ffffff","accent-soft":"#ebf3fc",focus:"#0f6cbd","focus-ring":"none",error:"#c50f1f","error-soft":"#fdf3f4",radius:"8px","control-radius":"4px","control-height":"32px","pad-y":"5px","pad-x":"10px","input-border":"1px","label-weight":"400","gap-x":"24px","gap-y":"16px"},dark:{text:"#ffffff",muted:"#d6d6d6",page:"#1f1f1f",surface:"#292929",border:"#666666","border-strong":"#adadad",accent:"#479ef5","accent-text":"#0a0a0a","accent-soft":"#0e4775",focus:"#479ef5",error:"#e37d80","error-soft":"#3b1012",edge:"#adadad"}},apple:{light:{font:`-apple-system, BlinkMacSystemFont, "SF Pro Text", ${bn}`,text:"#1d1d1f",muted:"#6e6e73",page:"#f2f2f7",surface:"#ffffff",border:"#d1d1d6","border-strong":"#8e8e93",accent:"#0066cc","accent-text":"#ffffff","accent-soft":"#e5f0fb",focus:"#0066cc","focus-ring":"0 0 0 4px rgba(0, 113, 227, 0.25)",error:"#d70015","error-soft":"#ffebec",radius:"12px","control-radius":"10px","control-height":"40px","pad-y":"8px","pad-x":"12px","input-border":"1px","label-weight":"500","gap-x":"20px","gap-y":"16px",fill:"#f2f2f7"},dark:{text:"#f5f5f7",muted:"#a1a1a6",page:"#000000",surface:"#1c1c1e",border:"#38383a","border-strong":"#636366",accent:"#409cff","accent-text":"#000000","accent-soft":"#0f2b4d",focus:"#409cff","focus-ring":"0 0 0 4px rgba(64, 156, 255, 0.3)",error:"#ff6961","error-soft":"#3a1412",fill:"#2c2c2e",edge:"#636366"}},bootstrap:{light:{font:bn,text:"#212529",muted:"#5c636a",page:"#f8f9fa",surface:"#ffffff",border:"#dee2e6","border-strong":"#adb5bd",accent:"#0a58ca","accent-text":"#ffffff","accent-soft":"#cfe2ff",focus:"#86b7fe","focus-ring":"0 0 0 0.25rem rgba(13, 110, 253, 0.25)",error:"#b02a37","error-soft":"#f8d7da",radius:"6px","control-radius":"6px","control-height":"38px","pad-y":"6px","pad-x":"12px","input-border":"1px","label-weight":"400","gap-x":"24px","gap-y":"16px"},dark:{text:"#dee2e6",muted:"#adb5bd",page:"#212529",surface:"#2b3035",border:"#495057","border-strong":"#6c757d",accent:"#6ea8fe","accent-text":"#000000","accent-soft":"#031633",focus:"#6ea8fe","focus-ring":"0 0 0 0.25rem rgba(110, 168, 254, 0.25)",error:"#ea868f","error-soft":"#2c0b0e",edge:"#6c757d"}},shadcn:{light:{font:`Geist, Inter, ${bn}`,text:"#09090b",muted:"#64646c",page:"#fafafa",surface:"#ffffff",border:"#e4e4e7","border-strong":"#a1a1aa",accent:"#18181b","accent-text":"#fafafa","accent-soft":"#f4f4f5",focus:"#a1a1aa","focus-ring":"0 0 0 3px rgba(161, 161, 170, 0.5)",error:"#dc2626","error-soft":"#fef2f2",radius:"10px","control-radius":"8px","control-height":"36px","pad-y":"6px","pad-x":"12px","input-border":"1px","label-weight":"500","gap-x":"24px","gap-y":"16px"},dark:{text:"#fafafa",muted:"#a1a1aa",page:"#09090b",surface:"#18181b",border:"#3f3f46","border-strong":"#71717a",accent:"#e4e4e7","accent-text":"#18181b","accent-soft":"#27272a",focus:"#71717a","focus-ring":"0 0 0 3px rgba(113, 113, 122, 0.5)",error:"#f87171","error-soft":"#450a0a",edge:"#71717a"}},ant:{light:{font:bn,text:"rgba(0, 0, 0, 0.88)",muted:"rgba(0, 0, 0, 0.55)",page:"#f5f5f5",surface:"#ffffff",border:"#d9d9d9","border-strong":"#bfbfbf",accent:"#1365d9","accent-text":"#ffffff","accent-soft":"#e6f4ff",focus:"#1365d9","focus-ring":"0 0 0 2px rgba(5, 145, 255, 0.12)",error:"#c63c3d","error-soft":"#fff2f0",radius:"8px","control-radius":"6px","pad-y":"4px","pad-x":"11px","input-border":"1px","label-weight":"400","gap-x":"24px","gap-y":"18px"},dark:{text:"rgba(255, 255, 255, 0.85)",muted:"rgba(255, 255, 255, 0.6)",page:"#000000",surface:"#141414",border:"#424242","border-strong":"#595959",accent:"#3c89e8","accent-text":"#000000","accent-soft":"#111a2c",focus:"#3c89e8","focus-ring":"0 0 0 2px rgba(60, 137, 232, 0.2)",error:"#e86e6b","error-soft":"#2c1618",edge:"#595959"}},odoo:{light:{font:bn,text:"#1f2937",muted:"#4b5563",page:"#f9fafb",surface:"#ffffff",border:"#d1d5db","border-strong":"#9ca3af",accent:"#714b67","accent-text":"#ffffff","accent-soft":"#f3edf2",focus:"#714b67","focus-ring":"none",error:"#c4161c","error-soft":"#fdecec",radius:"4px","control-radius":"0px","pad-y":"3px","pad-x":"4px","input-border":"0 0 1px 0","label-weight":"600","gap-x":"32px","gap-y":"14px"},dark:{text:"#e5e7eb",muted:"#9ca3af",page:"#111827",surface:"#1f2937",border:"#4b5563","border-strong":"#6b7280",accent:"#c79fbc","accent-text":"#1f1020","accent-soft":"#3b2836",focus:"#c79fbc",error:"#f6878b","error-soft":"#3a1214",edge:"#6b7280"}},"google-forms":{light:{font:`Roboto, Arial, ${bn}`,text:"#202124",muted:"#5f6368",page:"#f0ebf8",surface:"#ffffff",border:"#dadce0","border-strong":"#80868b",accent:"#673ab7","accent-text":"#ffffff","accent-soft":"#ede7f6",focus:"#673ab7","focus-ring":"none",error:"#d93025","error-soft":"#fce8e6",radius:"8px","control-radius":"0px","control-height":"36px","pad-y":"6px","pad-x":"0px","input-border":"0 0 1px 0","label-weight":"400","gap-x":"24px","gap-y":"12px"},dark:{text:"#e8e3ee",muted:"#b8b0c4",page:"#1c1822",surface:"#2a2431",border:"#4a4255","border-strong":"#7b7088",accent:"#c4abf2","accent-text":"#1d1528","accent-soft":"#3b2f52",focus:"#c4abf2",error:"#f28b82","error-soft":"#3c1714",edge:"#7b7088"}}},Ni=e=>Object.entries(e).map(([t,n])=>`--fd-${t}: ${n};`).join(" "),je=e=>`:is(.fd-form, .fd-form-dialog, .fd-theme)[data-fd-theme="${e}"]`,gr=':is(.fd-sections > .fd-section:not([data-style]), .fd-section[data-style="card"][data-on-page])',pd=Object.keys(ud).map(e=>{let{light:t,dark:n}=ud[e],r=`${je(e)}[data-scheme="dark"]`;return`${je(e)} { ${Ni(t)} }
1
+ /*! Fieldia 0.13.1 · MIT · https://fieldia.dev */
2
+ "use strict";var Fieldia=(()=>{var Mr=Object.defineProperty;var Gd=Object.getOwnPropertyDescriptor;var Jd=Object.getOwnPropertyNames;var Yd=Object.prototype.hasOwnProperty;var Xd=(e,t,n)=>t in e?Mr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Zd=(e,t)=>{for(var n in t)Mr(e,n,{get:t[n],enumerable:!0})},Qd=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Jd(t))!Yd.call(e,o)&&o!==n&&Mr(e,o,{get:()=>t[o],enumerable:!(r=Gd(t,o))||r.enumerable});return e};var el=e=>Qd(Mr({},"__esModule",{value:!0}),e);var Wt=(e,t,n)=>Xd(e,typeof t!="symbol"?t+"":t,n);var If={};Zd(If,{ADDRESS_PARTS:()=>Xr,BROWSER_HOTKEYS:()=>Hr,DEFAULT_LABELS:()=>vd,DRAWN_IN_CELLS:()=>Ql,FIELDIA_CSS:()=>hd,FIELD_NAME:()=>Vn,FIELD_TYPES:()=>Nr,FIRST_FIELD:()=>yr,FORMAT_VERSION:()=>Cr,FORM_WIDTHS:()=>_c,HOTKEY:()=>fa,ICONS:()=>ms,MESSAGES:()=>Lt,PART_LOOKS:()=>Xi,THEMES:()=>Yi,THEME_SKINS:()=>Wi,TOKEN_NAMES:()=>Hi,VERSION:()=>Pf,VIEWER_LABELS:()=>Vt,WIDGET_LABELS:()=>tt,accentShades:()=>br,addLanguage:()=>Vo,applyLook:()=>$n,binaryWidget:()=>fr,browserPreferences:()=>Oi,builtInWidgets:()=>od,cellText:()=>An,charTagsWidget:()=>ri,checkPage:()=>rr,checkValue:()=>gn,compileModifier:()=>rt,contrast:()=>Tn,countriesIn:()=>vi,createForm:()=>eo,createMemoryDataSource:()=>$a,createWidget:()=>Ot,currencyOf:()=>_n,dayOf:()=>un,describeTypes:()=>ar,detailLines:()=>ao,displayValue:()=>St,distributionIds:()=>fs,distributionModel:()=>ai,distributionWords:()=>lo,drawIcon:()=>wt,emptyValue:()=>En,evaluateModifier:()=>ma,expressionContext:()=>mn,facetsToFilter:()=>Gr,fileProblem:()=>ir,fileShown:()=>fi,fill:()=>_e,fillValues:()=>ca,focusField:()=>Co,formatBytes:()=>en,formatMoney:()=>Fn,formatNumber:()=>ht,formatPlain:()=>ni,groupByFields:()=>Jr,hostScheduler:()=>sr,hotkeyWords:()=>Wn,htmlWidget:()=>hi,imageWidget:()=>ci,initialValues:()=>pn,installListStyles:()=>Po,installStyles:()=>Ci,isEmpty:()=>_t,isModifierValid:()=>ga,isRightToLeft:()=>Br,isoWeek:()=>As,jsonWidget:()=>bi,keepTabIn:()=>Kt,kindTextField:()=>ys,labelPlace:()=>wr,labelWidget:()=>pr,lineForm:()=>co,lineKind:()=>mt,linesWidget:()=>di,linkAddress:()=>Ms,linkAvatar:()=>qn,linkCheckboxesWidget:()=>oi,localizePage:()=>or,many2oneWidget:()=>cr,matchesFilter:()=>Bn,memoryPreferences:()=>Kc,mountViewer:()=>xr,normalizeNumber:()=>Ut,onelineRuns:()=>qd,openFormDialog:()=>Yn,openFormPanel:()=>ji,openLineDialog:()=>fo,openSearchDialog:()=>zi,ownCurrency:()=>xs,pageWords:()=>pa,planSection:()=>Io,progressbarWidget:()=>ur,propertiesWidget:()=>mi,readFile:()=>po,readText:()=>Ii,readsAsText:()=>Pi,referenceWidget:()=>ii,rolesAllow:()=>Sn,sanitizeHtml:()=>gi,saveProblemOf:()=>_r,saveRefused:()=>Fa,scoreOf:()=>Ra,skinFor:()=>yn,splitValues:()=>Dn,statusbarWidget:()=>go,suggestions:()=>Kr,summary:()=>mo,tagsWidget:()=>so,translatePage:()=>jn,ungroup:()=>dr,valuesIn:()=>Wr,wait:()=>Yr,wearTokens:()=>xn,wideColumns:()=>ln,withCalendar:()=>bo});var Vn=/^[A-Za-z_][A-Za-z0-9_]*$/,Nr=["char","text","html","integer","float","monetary","boolean","date","datetime","selection","binary","image","many2one","many2many","one2many","reference","properties","json","matrix"];function ln(e){return typeof e=="object"?e.wide:e??1}var Cr="0.1";var Yi=["material","fluent","apple","bootstrap","shadcn","ant","odoo","google-forms"];var Xi={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 Wo=["id","user","editing","context"],Ho=["id","name","roles"];var yt=e=>typeof e=="number"&&Number.isFinite(e);function Zt(e){return Number.isFinite(e)?Number(e.toPrecision(15)):null}function Qi(e,t,n){if(e==="+"&&(typeof t=="string"||typeof n=="string")){let r=Zi(t),o=Zi(n);return r===null||o===null?null:r+o}if(!yt(t)||!yt(n))return null;switch(e){case"+":return Zt(t+n);case"-":return Zt(t-n);case"*":return Zt(t*n);case"/":return Zt(t/n);case"%":return Zt(t-n*Math.floor(t/n));default:return null}}function Zi(e){return e==null?"":typeof e=="string"?e:yt(e)?String(e):null}function ea(e){return yt(e)?Zt(-e):null}function Nt(e){return Array.isArray(e)?e.length>0:e!==null&&typeof e=="object"?Object.keys(e).length>0:!!e}function tr(e,t){let n=10**Math.trunc(t),r=Number((Math.abs(e)*n).toPrecision(15));return Zt(Math.sign(e)*Math.round(r)/n)}function cn(e){let t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function ta(e){let t=e.args[0];return(t.type==="Identifier"?e.env.lines?.(t.name):void 0)??e.value(t)}function na(e,t,n,r){let o=e[t];return o&&!(o.type==="Literal"&&typeof o.value=="string")?`${n} takes a condition, in quotes, on the lines: ${r}`:void 0}function ra(e,t,n){let r=e.args[n];if(r?.type!=="Literal"||typeof r.value!="string")return t;let o=r.value;return t.filter(i=>i!==null&&typeof i=="object"&&e.holds(o,i))}function oa(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 ia(e,t){let n=e.args.flatMap(o=>{let i=e.value(o);return Array.isArray(i)?i:[i]}).filter(o=>o!=null);return!n.length||!n.every(yt)&&!n.every(o=>typeof o=="string")?null:n.reduce((o,i)=>(t?i<o:i>o)?i:o)}var nr=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 yt(n)&&yt(r)?tr(n,r):null}}],["abs",{takes:[1,1],call({args:e,value:t}){let n=t(e[0]);return yt(n)?Math.abs(n):null}}],["min",{takes:[1,1/0],call:e=>ia(e,!0)}],["max",{takes:[1,1/0],call:e=>ia(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?.()??cn(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')":na(e,2,"sum",`sum(lines, 'amount', "state == 'done'")`)},call(e){let t=ta(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 o of ra(e,t,2)){let i=n===void 0?o:o?.[n];yt(i)&&(r+=i)}return Zt(r)}}],["count",{takes:[1,2],check:e=>na(e,1,"count",`count(lines, "state == 'done'")`),call(e){let t=ta(e);return t==null?0:Array.isArray(t)?ra(e,t,1).length:null}}],["days",{takes:[2,2],call({args:e,value:t}){let n=oa(t(e[0])),r=oa(t(e[1]));return n===null||r===null?null:r-n}}],["if",{takes:[3,3],call:({args:e,value:t})=>Nt(t(e[0]))?t(e[1]):t(e[2])}]]);function aa(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 jo=new Map([["True",!0],["False",!1],["None",null],["true",!0],["false",!1],["null",null]]),tl=new Set(["+","-","*","/","%"]);function Qt(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,o=0;for(;;){if(r.lastIndex=o,r.exec(e),o=r.lastIndex,o>=e.length)return t;n.lastIndex=o;let i=n.exec(e);if(!i)throw new Error(`Unexpected "${e[o]}" at character ${o+1} of: ${e}`);t.push({type:nl(i[0]),value:i[0],position:t.length}),o=n.lastIndex}}function nl(e){let t=e.toLowerCase().trim();return jo.has(e)?"CONSTANT":t==="and"||t==="or"||t==="not"?"LOGICAL":["==","!=","<>","<",">","<=",">="].includes(e)||t==="in"||t==="not in"?"OPERATOR":e==="("||e===")"?"PAREN":tl.has(e)?"ARITHMETIC":e===","?"COMMA":e.startsWith("[")?"LIST":e.startsWith("'")||e.startsWith('"')?"STRING":/^\d+\.?\d*$/.test(e)?"NUMBER":"IDENTIFIER"}var Ht=class{constructor(t){Wt(this,"tokens");Wt(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,o=this.parseSum();return{type:"BinaryOp",operator:r.toLowerCase(),left:t,right:o}}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(rl)}}parseCall(t){let n=nr.get(t);if(!n)throw new Error(`no function "${t}": the functions are ${[...nr.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[o,i]=n.takes;if(r.length<o||r.length>i)throw new Error(aa(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:jo.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:ol(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(o=>o.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(o=>o.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 o=this.peek();if(o&&o.value===n)return this.advance()}throw new Error(r)}};function rl(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 ol(e){try{let t=e.slice(1,-1).trim();if(!t)return[];let n=[],r="",o=!1,i="";for(let a=0;a<t.length;a++){let s=t[a];(s==="'"||s==='"')&&(a===0||t[a-1]!=="\\")&&(o?s===i&&(o=!1,i=""):(o=!0,i=s)),s===","&&!o?(n.push(sa(r.trim())),r=""):r+=s}return r.trim()&&n.push(sa(r.trim())),n}catch(t){throw new Error(`Cannot read the list ${e}`,{cause:t})}}function sa(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 Ct(e,t,n={}){switch(e.type){case"BinaryOp":return il(e,t,n);case"UnaryOp":return al(e,t,n);case"Call":return sl(e,t,n);case"Literal":return e.value;case"Identifier":return ll(t,e.name);default:throw new Error(`Unknown AST node type: ${e.type}`)}}function il(e,t,n){let r=e.operator.toLowerCase();if(r==="and"||r==="or"){let s=Or(Ct(e.left,t,n));return Nt(s)===(r==="or")?s:Or(Ct(e.right,t,n))}let o=Or(Ct(e.left,t,n)),i=Or(Ct(e.right,t,n)),a=o!==null&&i!==null;switch(r){case"==":return o===i;case"!=":case"<>":return o!==i;case"<":return a&&o<i;case">":return a&&o>i;case"<=":return a&&o<=i;case">=":return a&&o>=i;case"in":return Array.isArray(i)&&i.includes(o);case"not in":return Array.isArray(i)&&!i.includes(o);case"+":case"-":case"*":case"/":case"%":return Qi(r,o,i);default:throw new Error(`Unknown binary operator: ${e.operator}`)}}function al(e,t,n){let r=Ct(e.operand,t,n);switch(e.operator.toLowerCase()){case"not":return!Nt(r);case"-":return ea(r);default:throw new Error(`Unknown unary operator: ${e.operator}`)}}function sl(e,t,n){let r=nr.get(e.name);if(!r)throw new Error(`Unknown function: ${e.name}`);return r.call({args:e.args,value:o=>Ct(o,t,n),env:n,holds:(o,i)=>Nt(Ct(dl(o),i,n))})}var da=new Map;function dl(e){let t=da.get(e);return t||da.set(e,t=new Ht(Qt(e)).parse()),t}function Or(e){return e===void 0?null:e}function ll(e,t){let n=t.split("."),r=e;for(let o of n){if(r==null)return;r=r[o]}return r}function fn(e,t){switch(t(e),e.type){case"BinaryOp":fn(e.left,t),fn(e.right,t);return;case"UnaryOp":fn(e.operand,t);return;case"Call":for(let n of e.args)fn(n,t);return;default:return}}function Pr(e){let t=[];return fn(e,n=>{if(n.type!=="Identifier")return;let r=n.name.split(".")[0];t.includes(r)||t.push(r)}),t}function Ir(e){let t=[];return fn(e,n=>{n.type==="Identifier"&&!t.includes(n.name)&&t.push(n.name)}),t}function Vr(e){let t=[];return fn(e,n=>{if(n.type!=="Call"||n.name!=="count"&&n.name!=="sum")return;let[r,o]=n.name==="count"?[n.args[0],n.args[1]]:[n.args[0],n.args[2]];r.type==="Identifier"&&o?.type==="Literal"&&typeof o.value=="string"&&t.push({lines:r.name,condition:o.value})}),t}function la(e){let t=[];return fn(e,n=>{if(n.type!=="Call"||n.name!=="sum")return;let[r,o]=n.args;r.type==="Identifier"&&o?.type==="Literal"&&t.push({lines:r.name,field:o.value})}),t}function rt(e){if(typeof e!="string"){let n=e===!0;return{source:e,fields:[],paths:[],wheres:[],evaluate:()=>n}}let t=new Ht(Qt(e)).parse();return{source:e,fields:Pr(t),paths:Ir(t),wheres:Vr(t),evaluate(n,r){try{return Nt(Ct(t,n,r))}catch{return!1}}}}function jt(e){let t=new Ht(Qt(e)).parse();return{source:e,fields:Pr(t),paths:Ir(t),wheres:Vr(t),sums:la(t),evaluate(n,r={}){try{return Ct(t,n,r)??null}catch{return null}}}}function Dr(e){let t=[],n=[],r=new Set,o=[],i=a=>{if(r.has(a))return;let s=o.indexOf(a);if(s!==-1){n.push([...o.slice(s),a]);return}o.push(a);for(let d of e.get(a)??[])e.has(d)&&i(d);o.pop(),r.add(a),t.push(a)};for(let a of e.keys())i(a);return{order:t,cycles:n}}var zo=/\{([A-Za-z_][A-Za-z0-9_]*)\}/g;function Wr(e){return[...e.matchAll(zo)].map(t=>t[1])}function ca(e,t){return e.replace(zo,(n,r)=>t(r))}function Dn(e){let t=[],n=0;for(let r of e.matchAll(zo))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 fa=/^(shift\+)?[a-z0-9]$/,Hr=["d","e","f"],Wn=e=>`Alt+${e.startsWith("shift+")?"Shift+":""}${e.slice(-1).toUpperCase()}`;var xt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ua=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),Bo="text, numbers, yes or no, dates, choices and json can",cl=e=>{let t=e.map(n=>`"${n}"`);return t.length<2?t.join(""):`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`},jr=class e{constructor(t,n){Wt(this,"page",t);Wt(this,"line",n);Wt(this,"issues",[]);Wt(this,"ids",new Map);Wt(this,"formNames",new Map);Wt(this,"places",new Set);Wt(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 o=t.lineForm?.children;if(!Array.isArray(o))return this.report(`${r}.lineForm`,'a line\u2019s form holds its parts: { "children": [...] }');let i={...this.page,fields:n.fields,layout:{type:"sections",id:`${t.id}#line`,children:o},on:void 0},a=new e(i,{name:t.field,parent:this.page.fields});a.walkChildren(o,`${r}.lineForm`),a.checkGoingTo(),this.issues.push(...a.issues)}checkEvents(t,n){for(let r of["open","beforeSave","afterSave"]){let o=t[r];o&&this.checkSteps(o,`${n}.${r}`)}for(let[r,o]of Object.entries(t.change??{}))this.formNames.has(r)||this.need(r,`${n}.change.${r}`),this.checkSteps(o,`${n}.change.${r}`);for(let[r,o]of Object.entries(t.show??{}))this.goingTo.push({target:r,path:`${n}.show.${r}`}),this.checkSteps(o,`${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"&&Hr.includes(r.replace("shift+",""))&&this.report(`${n}.hotkey`,`${Wn(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((o,i)=>{let a=`${n}[${i}]`;switch(this.checkModifiers(o,a,["when"]),o.do){case"set":{let s=this.need(o.field,`${a}.field`);s&&!ua.has(s.type)&&this.report(`${a}.field`,`a ${s.type} cannot be set from an expression; ${Bo}`),this.checkExpression(o.value,`${a}.value`,r);return}case"clear":this.need(o.field,`${a}.field`);return;case"addLine":{let s=this.need(o.field,`${a}.field`);if(s&&s.type!=="one2many")return this.report(`${a}.field`,`"${o.field}" is a ${s.type}; a line is added to a one2many`);for(let[d,l]of Object.entries(o.values??{}))s?.type==="one2many"&&!xt(s.fields,d)&&this.report(`${a}.values.${d}`,`"${d}" is not a field of the lines of "${o.field}"`),this.checkExpression(l,`${a}.values.${d}`,r);return}case"check":o.fields?.forEach((s,d)=>this.need(s,`${a}.fields[${d}]`));return;case"goTo":this.goingTo.push({target:o.target,path:`${a}.target`});return;case"open":o.page===this.page.id&&o.as==="page"&&this.report(`${a}.page`,"a page cannot open itself in its own place"),o.side!==void 0&&o.as!=="panel"&&this.report(`${a}.side`,`a side is where a panel comes from; this opens ${o.as==="page"?"in its place":"in a dialog"}`),o.record!==void 0&&this.checkExpression(o.record,`${a}.record`,r);for(let[s,d]of Object.entries(o.values??{}))this.checkExpression(d,`${a}.values.${s}`,r);o.filter?.forEach((s,d)=>this.checkFilterItem(s,`${a}.filter[${d}]`,r));for(let[s,d]of Object.entries(o.into??{})){this.need(s,`${a}.into.${s}`);try{jt(d)}catch(l){this.report(`${a}.into.${s}`,`cannot read "${d}": ${l.message}`)}}o.then&&this.checkSteps(o.then,`${a}.then`);return;case"openUrl":this.checkExpression(o.url,`${a}.url`,r);return;default:return}})}checkValuesIn(t,n){for(let r of Wr(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(xt(r,t))return r[t];this.report(n,`no field "${t}"`)}checkFilterItem(t,n,r){if("any"in t)return t.any.forEach((o,i)=>this.checkFilterItem(o,`${n}.any[${i}]`,r));if("all"in t)return t.all.forEach((o,i)=>this.checkFilterItem(o,`${n}.all[${i}]`,r));t.valueFrom!==void 0&&this.checkValueFrom(t.valueFrom,`${n}.valueFrom`,r)}checkValueFrom(t,n,r){let[o,i]=t.split(".");if(i===void 0){if(xt(r.fields,t)||t==="id"&&r.lines===void 0)return;this.need(t,n,r.fields)}else o==="user"?Ho.includes(i)||this.report(n,`"${t}": the person has an id, name or roles`):o==="context"||(r.lines===void 0?this.report(n,`"${t}": only a line's filter reads parent, the record it is on`):!xt(r.parent??this.page.fields,i)&&i!=="id"&&this.report(n,`"${t}": "${i}" is not a field of this page`))}checkModifiers(t,n,r=["invisible"],o=this.here()){for(let i of r){let a=t[i];if(typeof a!="string")continue;let s;try{s=rt(a)}catch(d){this.report(`${n}.${i}`,`cannot read "${a}": ${d.message}`);continue}this.checkReads(a,s,`${n}.${i}`,o)}}checkReads(t,n,r,o){for(let i of n.wheres){let a=o.fields[i.lines];if(a?.type!=="one2many")continue;let s;try{s=rt(i.condition).fields}catch(d){this.report(r,`cannot read the condition "${i.condition}": ${d.message}`);continue}for(let d of s)xt(a.fields,d)||this.report(r,`"${i.condition}" reads "${d}", which is not a field of the lines of "${i.lines}"`)}for(let i of n.fields){if(xt(o.fields,i))continue;if(o.lines===void 0?Wo.includes(i):i==="user"||i==="parent"||i==="id"||i==="context"){for(let d of n.paths){let[l,f]=d.split(".");l!==i||f===void 0||(i==="user"&&!Ho.includes(f)&&this.report(r,`"${t}" reads "${d}": the person has an id, name or roles`),i==="parent"&&!xt(o.parent??this.page.fields,f)&&!Wo.includes(f)&&this.report(r,`"${t}" reads "${d}": "${f}" is not a field of this page`))}continue}let s=o.lines===void 0?"of this page":`of the lines of "${o.lines}"`;this.report(r,`"${t}" reads "${i}", which is not a field ${s}`)}}checkExpression(t,n,r){let o;try{o=jt(t)}catch(i){return this.report(n,`cannot read "${t}": ${i.message}`),null}this.checkReads(t,o,n,r);for(let i of o.sums){if(!xt(r.fields,i.lines))continue;let a=r.fields[i.lines];a.type!=="one2many"?this.report(n,`sum adds up the lines of a one2many; "${i.lines}" is a ${a.type}`):xt(a.fields,i.field)||this.report(n,`"${i.field}" is not a field of the lines of "${i.lines}"`)}return o.fields}checkWorkedOut(t,n,r){let o=new Map;for(let[i,a]of Object.entries(t)){let s=`${n}.${i}`;if((a.compute!==void 0||a.setWhen)&&!ua.has(a.type)){a.compute!==void 0&&this.report(`${s}.compute`,`a ${a.type} cannot be worked out; ${Bo}`),a.setWhen&&this.report(`${s}.setWhen`,`a ${a.type} cannot be set by a condition; ${Bo}`);continue}if(a.compute!==void 0){let d=this.checkExpression(a.compute,`${s}.compute`,r);d&&o.set(i,d)}a.setWhen?.forEach((d,l)=>{this.checkModifiers(d,`${s}.setWhen[${l}]`,["when"],r),d.on?.forEach((f,c)=>this.need(f,`${s}.setWhen[${l}].on[${c}]`,t)),this.checkExpression(d.value,`${s}.setWhen[${l}].value`,r)})}for(let i of Dr(o).cycles){let a=i.slice(0,-1),s=a.length===1?`"${a[0]}" is worked out from itself`:`${cl(a)} are worked out from each other: ${i.join(" \u2192 ")}`;this.report(`${n}.${i[0]}.compute`,s)}}checkFields(t,n,r,o){let i={fields:t,lines:r,...o?{parent:o}:{}};this.checkWorkedOut(t,n,i);for(let[a,s]of Object.entries(t)){let d=`${n}.${a}`;if(s.type==="monetary"&&s.currencyField!==void 0&&this.checkCurrency(s.currencyField,`${d}.currencyField`,t,r,o),s.defaultFrom!==void 0&&this.checkExpression(s.defaultFrom,`${d}.defaultFrom`,i),(s.type==="many2one"||s.type==="many2many")&&s.createValues)for(let[l,f]of Object.entries(s.createValues))this.checkExpression(f,`${d}.createValues.${l}`,i);if(s.type==="one2many"&&s.lineDefaults)for(let[l,f]of Object.entries(s.lineDefaults))xt(s.fields,l)?this.checkExpression(f,`${d}.lineDefaults.${l}`,i):this.report(`${d}.lineDefaults.${l}`,`"${l}" is not a field of the lines of "${a}"`);if((s.type==="many2one"||s.type==="many2many")&&s.filter&&s.filter.forEach((l,f)=>this.checkFilterItem(l,`${d}.filter[${f}]`,i)),s.type==="selection"&&s.optionsFrom?.dependsOn?.forEach((l,f)=>this.need(l,`${d}.optionsFrom.dependsOn[${f}]`,t)),s.type==="properties"&&s.definitionsFrom?.dependsOn?.forEach((l,f)=>this.need(l,`${d}.definitionsFrom.dependsOn[${f}]`,t)),s.type==="properties"&&s.definitions){let l=new Set;s.definitions.forEach((f,c)=>{f.type==="selection"&&!f.options&&this.report(`${d}.definitions[${c}].options`,"a choice property needs its choices"),l.has(f.name)&&this.report(`${d}.definitions[${c}].name`,`"${f.name}" is named twice`),l.add(f.name)})}if(s.type==="one2many"&&(this.checkFields(s.fields,`${d}.fields`,a,t),"lineKinds"in s&&s.lineKinds&&this.checkLineKinds(a,s.lineKinds,s.fields,`${d}.lineKinds`),s.sequenceField!==void 0)){let l=s.fields[s.sequenceField];l?l.type!=="integer"&&this.report(`${d}.sequenceField`,`"${s.sequenceField}" is a ${l.type}; the field that keeps the order of lines must be an integer`):this.report(`${d}.sequenceField`,`"${s.sequenceField}" is not a field of the lines of "${a}"`)}}}checkCurrency(t,n,r,o,i=this.page.fields){let a;if(!t.startsWith("parent."))a=this.need(t,n,r);else{if(o===void 0)return this.report(n,`"${t}": only a line\u2019s money reads parent, the record it is on`);if(xt(i,t.slice(7)))a=i[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,o){let i=r[n.field];if(!i)this.report(`${o}.field`,`"${n.field}" is not a field of the lines of "${t}"`);else if(i.type!=="selection"&&i.type!=="char")this.report(`${o}.field`,`"${n.field}" is a ${i.type}; the field that says what a line is must be a selection or char`);else if(i.type==="selection")for(let s of["section","note"]){let d=n[s]??s;i.options.some(l=>l.value===d)||this.report(`${o}.${s}`,`"${n.field}" has no option "${d}"`)}let a=r[n.text];a?a.type!=="char"&&a.type!=="text"&&this.report(`${o}.text`,`"${n.text}" is a ${a.type}; a section's or note's text must be a char or text field`):this.report(`${o}.text`,`"${n.text}" is not a field of the lines of "${t}"`)}walkFooter(t,n){t?.forEach((r,o)=>{this.claim(r.id,`${n}.footer[${o}]`),this.checkModifiers(r,`${n}.footer[${o}]`),this.checkPress(r,`${n}.footer[${o}]`)})}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,o)=>{let i=`${n}.children[${o}]`;this.places.add(r.id),this.claim(r.id,i),this.checkModifiers(r,i),this.walkChildren(r.children,i)})}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((i,a)=>this.need(i,`${n}.columns[${a}]`)),t.sort?.forEach((i,a)=>this.need(i.field,`${n}.sort[${a}].field`)),t.searchFields?.forEach((i,a)=>this.need(i,`${n}.searchFields[${a}]`)),t.groupBy?.forEach((i,a)=>this.need(i,`${n}.groupBy[${a}]`));let r=(i,a)=>{if("any"in i)return i.any.forEach((s,d)=>r(s,`${a}.any[${d}]`));if("all"in i)return i.all.forEach((s,d)=>r(s,`${a}.all[${d}]`));this.need(i.field,`${a}.field`),i.valueFrom!==void 0&&this.report(`${a}.valueFrom`,"a list's filter compares with values, not with another field")},o=new Set;t.filters?.forEach((i,a)=>{this.claim(i.id,`${n}.filters[${a}]`),o.add(i.id),i.filter.forEach((s,d)=>r(s,`${n}.filters[${a}].filter[${d}]`))}),t.defaultFilters?.forEach((i,a)=>{o.has(i)||this.report(`${n}.defaultFilters[${a}]`,`no filter "${i}" in this list`)}),t.actions?.forEach((i,a)=>{this.claim(i.id,`${n}.actions[${a}]`),this.checkPress(i,`${n}.actions[${a}]`)})}walkChildren(t,n){t.forEach((r,o)=>this.walkNode(r,`${n}.children[${o}]`))}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,o)=>{["field","text","button","spacer"].includes(r.type)||this.report(`${n}.children[${o}]`,`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);xt(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,o)=>{let i=`${n}.children[${o}]`;this.places.add(r.id),this.claim(r.id,i),this.checkModifiers(r,i),this.walkChildren(r.children,i)})}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((i,a)=>this.checkModifiers(i,`${n}.title.placeholderWhen[${a}]`,["when"]))),t.statusbar){let{field:i,visibleStates:a,durationsField:s,fold:d,saves:l,clickable:f}=t.statusbar,c=`${n}.statusbar`;if(this.checkModifiers(t.statusbar,c),s!==void 0){let m=this.need(s,`${c}.durationsField`);m&&m.type!=="json"&&this.report(`${c}.durationsField`,`"${s}" is a ${m.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 v=this.need(i,`${n}.statusbar.field`);if(d&&v&&v.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"),v&&v.type!=="selection"&&v.type!=="many2one"&&this.report(`${n}.statusbar.field`,`"${i}" is a ${v.type}; a statusbar needs a selection or many2one`),v?.type==="selection"&&a){let m=new Set(v.options.map(S=>S.value));a.forEach((S,g)=>{m.has(S)||this.report(`${n}.statusbar.visibleStates[${g}]`,`"${S}" is not an option of "${i}"`)})}}t.buttons?.forEach((i,a)=>{this.claim(i.id,`${n}.buttons[${a}]`),this.checkModifiers(i,`${n}.buttons[${a}]`),this.checkPress(i,`${n}.buttons[${a}]`)}),t.statButtons?.forEach((i,a)=>{this.claim(i.id,`${n}.statButtons[${a}]`),this.checkModifiers(i,`${n}.statButtons[${a}]`),this.checkPress(i,`${n}.statButtons[${a}]`);for(let s of["field","unitField","labelField","secondField"]){let d=i[s];d!==void 0&&this.need(d,`${n}.statButtons[${a}].${s}`)}i.secondLabel!==void 0&&i.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((i,a)=>[i,`${n}.ribbons[${a}]`])];for(let[i,a]of r)this.claim(i.id,a),this.checkModifiers(i,a),i.labelField!==void 0&&this.need(i.labelField,`${a}.labelField`);t.badges?.forEach((i,a)=>{this.claim(i.id,`${n}.badges[${a}]`),this.checkModifiers(i,`${n}.badges[${a}]`)});for(let i of["above","before","after","below"])t.title?.[i]?.forEach((a,s)=>this.walkNode(a,`${n}.title.${i}[${s}]`));t.alerts?.forEach((i,a)=>{let s=`${n}.alerts[${a}]`;this.claim(i.id,s),this.checkModifiers(i,s),this.checkValuesIn(i.message,`${s}.message`),i.messageField!==void 0&&this.need(i.messageField,`${s}.messageField`),i.buttons?.forEach((d,l)=>{this.claim(d.id,`${s}.buttons[${l}]`),this.checkModifiers(d,`${s}.buttons[${l}]`),this.checkPress(d,`${s}.buttons[${l}]`)})}),t.toolbar?.menu?.forEach((i,a)=>{let s=`${n}.toolbar.menu[${a}]`;this.claim(i.id,s),this.checkModifiers(i,s),!i.steps&&i.action===void 0&&!i.builtin&&this.report(s,"a menu item needs steps, an action, or a built-in"),i.label===void 0&&!i.builtin&&this.report(`${s}.label`,"a menu item needs words, unless it is a built-in"),i.steps&&this.checkSteps(i.steps,`${s}.steps`)});let o=t.attachmentPreview;if(o){this.checkModifiers(o,`${n}.attachmentPreview`);let i=o.field!==void 0?this.need(o.field,`${n}.attachmentPreview.field`):void 0;i&&i.type!=="binary"&&i.type!=="image"&&this.report(`${n}.attachmentPreview.field`,`"${o.field}" is a ${i.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((o,i)=>{let a=`${n}.validate[${i}]`;if(this.checkModifiers(o,a,["when","holds"]),o.distinct!==void 0&&r&&(r.type!=="one2many"?this.report(`${a}.distinct`,`distinct is for a table of lines; "${t.field}" is a ${r.type}`):xt(r.fields,o.distinct)||this.report(`${a}.distinct`,`"${o.distinct}" is not a field of the lines of "${t.field}"`)),o.pattern!==void 0)try{new RegExp(o.pattern)}catch{this.report(`${a}.pattern`,`"${o.pattern}" is not a regular expression`)}}),t.tones?.forEach((o,i)=>this.checkModifiers(o,`${n}.tones[${i}]`,["when"])),t.placeholderWhen?.forEach((o,i)=>this.checkModifiers(o,`${n}.placeholderWhen[${i}]`,["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((o,i)=>{let a=xt(r.fields,o)?r.fields[o]:void 0;a?["integer","float","monetary"].includes(a.type)||this.report(`${n}.totals[${i}]`,`"${o}" is a ${a.type}; only integer, float and monetary columns add up`):this.report(`${n}.totals[${i}]`,`"${o}" is not a field of the lines of "${t.field}"`)}));for(let[o,i]of Object.entries(t.options??{}))o.endsWith("Field")&&typeof i=="string"&&this.need(i,`${n}.options.${o}`);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((o,i)=>!xt(r.fields,o.field)&&this.report(`${n}.order[${i}].field`,`"${o.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 o of["lineOpens","cards","fit"])r&&t[o]&&r.type!=="one2many"&&this.report(`${n}.${o}`,`${o} 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 o={fields:r.fields,lines:t.field};for(let[i,a]of Object.entries(t.cells??{})){if(!xt(r.fields,i)){this.report(`${n}.cells.${i}`,`"${i}" is not a field of the lines of "${t.field}"`);continue}this.checkModifiers(a,`${n}.cells.${i}`,["invisible","readonly","required","bold"],o),this.checkModifiers(a,`${n}.cells.${i}`,["hidden"]),a.tones?.forEach((s,d)=>this.checkModifiers(s,`${n}.cells.${i}.tones[${d}]`,["when"],o));for(let[s,d]of Object.entries(a.options??{}))s.endsWith("Field")&&typeof d=="string"&&this.need(d,`${n}.cells.${i}.options.${s}`,r.fields)}t.rowTones?.forEach((i,a)=>this.checkModifiers(i,`${n}.rowTones[${a}]`,["when"],o)),this.checkModifiers(t,n,["rowBold","lineDelete"],o),t.rowButtons?.forEach((i,a)=>{this.claim(i.id,`${n}.rowButtons[${a}]`),this.checkModifiers(i,`${n}.rowButtons[${a}]`,["invisible"],o),this.checkPress(i,`${n}.rowButtons[${a}]`)})}for(let o of["selectedButtons","controlButtons"])t[o]&&(r&&r.type!=="one2many"&&this.report(`${n}.${o}`,`${o} only apply to one2many fields; "${t.field}" is a ${r.type}`),t[o].forEach((i,a)=>{this.claim(i.id,`${n}.${o}[${a}]`),this.checkModifiers(i,`${n}.${o}[${a}]`),this.checkPress(i,`${n}.${o}[${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 o=t.columns??Object.keys(r.fields).filter(i=>i!==("lineKinds"in r?r.lineKinds?.field:void 0)&&i!==r.sequenceField);for(let i of Object.keys(t.optionalColumns))o.includes(i)||this.report(`${n}.optionalColumns.${i}`,`"${i}" is not a column of "${t.field}"`)}!r||!t.columns||(r.type==="one2many"?t.columns.forEach((o,i)=>{xt(r.fields,o)?r.fields[o].type==="one2many"&&this.report(`${n}.columns[${i}]`,`"${o}" holds lines of its own: they are edited in the line's form (lineForm), not drawn in its row`):this.report(`${n}.columns[${i}]`,`"${o}" is not a field of the lines of "${t.field}"`)}):r.type==="many2many"?t.columns.forEach((o,i)=>{(!r.fields||!xt(r.fields,o))&&this.report(`${n}.columns[${i}]`,`"${o}" 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 Hn=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),fl=["sheet","sections","tabs","wizard"];function rr(e,t={}){if(!Hn(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 o=e.data;(!Hn(o)||!(o.kind==="responses"||o.kind==="record"&&typeof o.model=="string"&&o.model))&&r("data",'data is { "kind": "record", "model": \u2026 } or { "kind": "responses" }');let i=e.fields;if(!Hn(i))r("fields","fields is an object of field definitions, by name");else for(let[l,f]of Object.entries(i))(!Hn(f)||!Nr.includes(f.type)||typeof f.label!="string")&&r(`fields.${l}`,"a field needs a type Fieldia knows and a label");let a=e.layout,s=Hn(a)&&a.type==="list";if((!Hn(a)||(s?!Array.isArray(a.columns):!fl.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 d=e;try{let l=new jr(d,t.parent?{name:d.id,parent:t.parent}:void 0).run();return l.length?{ok:!1,issues:l}:{ok:!0,page:d}}catch(l){return{ok:!1,issues:[{path:"(page)",message:`a part of this page cannot be read: ${l.message}`}]}}}var ul=new Set(["title","description","label","help","placeholder","message","text","confirm","alt","caption","tooltip","unit"]),pl=new Set(["lineKinds","filter","default","data","translations","optionalColumns","values","into","params"]);function zr(e,t,n,r,o=!1){if(typeof e=="string")return t!==null&&(t.endsWith("Label")||!o&&ul.has(t))?n(e):e;if(Array.isArray(e))return e.map(a=>zr(a,null,n,r,o));if(e===null||typeof e!="object")return e;r?.(e);let i={};for(let[a,s]of Object.entries(e))i[a]=pl.has(a)?s:zr(s,a,n,r,o||a==="options"&&!Array.isArray(s));return i}function jn(e,t){return zr(e,null,t)}function pa(e){let t=new Set,n=e.fields,r=(o,i=null)=>zr(o,i,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 or(e,t){let n=e.translations?.[t]??e.translations?.[t.split("-")[0]];return n?jn(e,r=>n[r]??r):e}function Br(e){let[t,...n]=e.toLowerCase().split("-"),r=n.find(o=>o.length===4&&!/\d/.test(o));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 Sn(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 ma(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=Qt(e);if(n.length===0)return!1;let o=new Ht(n).parse(),i=Ct(o,t);return Nt(i)}catch{return!1}}function ga(e){if(e===void 0||typeof e=="boolean"||e==="")return!0;try{let t=Qt(e);return t.length===0||new Ht(t).parse(),!0}catch{return!1}}var ha={};var ml={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"},Lt={en:ml,...ha};function _e(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n)}function un(e,t=cn(new Date)){let n=/^today([+-]\d+)?$/.exec(e);if(!n)return e;let[r,o,i]=t.split("-").map(Number);return new Date(Date.UTC(r,o-1,i+Number(n[1]??0))).toISOString().slice(0,10)}var ba=(e,t,n)=>new Intl.DateTimeFormat(t.locale,{...e,timeZone:"UTC",numberingSystem:"latn"}).format(n);function qo(e,t,n,r){if(e.type!=="date"&&e.type!=="datetime")return;let o=e.type==="date"?t:cn(new Date(t)),i=(f,c)=>_e(r[f],{label:e.label,min:c,max:c,days:c}),a=f=>ba({day:"numeric",month:"long",year:"numeric"},r,Date.parse(f)),s=e.min&&un(e.min,n),d=e.max&&un(e.max,n);if(s&&o<s)return i("before",a(s));if(d&&o>d)return i("after",a(d));let l=e.days;if(l&&!l.includes(new Date(Date.parse(o)).getUTCDay()||7)){let f=[1,2,3,4,5,6,7].filter(c=>!l.includes(c)).map(c=>ba({weekday:"long"},r,Date.UTC(2024,0,c)));return i("weekday",f.length>1?`${f.slice(0,-1).join(", ")} ${r.or} ${f[f.length-1]}`:f[0])}}function En(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 pn(e,t){let n={};for(let[r,o]of Object.entries(e)){let i=o.default;n[r]=i===void 0?En(o):o.type==="date"&&typeof i=="string"&&i.startsWith("today")?un(i,t):ke(i)}return n}function _t(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 mn(e,t){let n={};for(let[r,o]of Object.entries(e)){let i=t[r];n[r]=i?gl(i,o):o}return n}function gl(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 mt(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 qr(e,t){return JSON.stringify(e??null)===JSON.stringify(t??null)}function ke(e){return e===void 0?e:JSON.parse(JSON.stringify(e))}function gn(e,t,n,r=Lt.en,o){let i=e.label||"This field",a=(s,d={})=>_e(r[s],{label:i,...d});if(_t(e,t))return n?a("required"):void 0;if(e.type==="matrix")return hl(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&&bl(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 yl(t,a)??qo(e,t,o,r);case"datetime":return vl(t,a)??qo(e,t,o,r);case"selection":{if(e.optionsFrom)return;let s=new Set(e.options.map(f=>f.value)),d=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()!==""&&!s.has(f);return e.multiple?Array.isArray(t)?(t.filter(c=>!s.has(c)).length<=1||e.ownAnswers)&&t.every(c=>s.has(c)||l(c))?void 0:d:a("choices"):s.has(t)||l(t)?void 0:d}case"many2one":return _o(t)?void 0:a("record");case"many2many":return Array.isArray(t)&&t.every(_o)?void 0:a("records");case"reference":{let s=t;if(!_o(t)||typeof s.model!="string")return a("record");if(!e.models.some(d=>d.value===s.model)){let d=xa(e.models.map(l=>l.label),r.or);return a("reference",{models:d,aModels:va(d)})}return}case"binary":case"image":return wl(e,t,a,r);default:return}}function hl(e,t,n,r){if(t===null||typeof t!="object"||Array.isArray(t))return r("matrix");let o=new Set(e.rows.map(d=>String(d.value))),i=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(!o.has(d))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&&!i.has(c)))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 bl(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 _o(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&(typeof e.id=="number"||typeof e.id=="string")&&typeof e.label=="string"}function yl(e,t){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return t("dateFormat");let[n,r,o]=e.split("-").map(Number);return ya(n,r,o)?void 0:t("dateInvalid")}var xl=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2})?$/;function vl(e,t){let n=typeof e=="string"?xl.exec(e):null;if(!n)return t("datetimeFormat");let[r,o,i,a,s,d]=n.slice(1).map(l=>Number(l??0));return ya(r,o,i)&&a<24&&s<60&&d<60?void 0:t("datetimeInvalid")}function ya(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 wl(e,t,n,r){let o=e.multiple?Array.isArray(t)?t:[t]:[t];if(e.multiple&&e.minFiles!==void 0&&o.length<e.minFiles)return n("minFiles",{min:e.minFiles});if(e.multiple&&e.maxFiles!==void 0&&o.length>e.maxFiles)return n("maxFiles",{max:e.maxFiles});for(let i of o){if(!kl(i))return n("file");let a=ir(e,i,r,e.multiple?i.name:e.label||"This field");if(a)return a}}function ir(e,t,n=Lt.en,r=t.name){if(e.maxSize!==void 0&&t.size>e.maxSize)return _e(n.fileSize,{label:r,size:en(e.maxSize)});let o=e.type==="image"?["image/*"]:e.accept;if(o&&!Sl(o,t.type)){let i=ar(o,n.or);return _e(n.fileType,{label:r,types:i,aTypes:va(i)})}}function kl(e){let t=e;return e!==null&&typeof e=="object"&&typeof t.name=="string"&&typeof t.size=="number"}function Sl(e,t){return e.some(n=>n.endsWith("/*")?t.startsWith(n.slice(0,-1)):n===t)}var El="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 Ll(e){if(e.endsWith("/*"))return e.slice(0,-2);let t=e.split("/")[1]??e;return El.find(([n])=>t.includes(n))?.[1]??t.toUpperCase()}function ar(e,t){return xa([...new Set(e.map(Ll))],t)}function xa(e,t){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`}function va(e){return/^[aeiou]/i.test(e)?`an ${e}`:`a ${e}`}function en(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 wa=e=>Math.round(e*1e9)/1e9,ka=(e,t)=>e.find(n=>n.value===t)?.score??0,Sa=e=>e.reduce((t,n)=>Math.max(t,n.score??0),0),Ea=e=>e.reduce((t,n)=>t+Math.max(0,n.score??0),0),La=(e,t,n)=>n?Array.isArray(t)?t.reduce((r,o)=>r+ka(e,o),0):0:ka(e,t);function Ra(e,t){let n=0,r=0,o=!1;for(let[i,a]of Object.entries(e.fields))if(a.type==="selection"&&a.options.some(s=>s.score!==void 0)){o=!0;let s=a.multiple===!0;n+=La(a.options,t[i],s),r+=s?Ea(a.options):Sa(a.options)}else if(a.type==="matrix"&&a.columns.some(s=>s.score!==void 0)){o=!0;let s=a.multiple===!0,d=t[i],l=d&&typeof d=="object"&&!Array.isArray(d)?d:{};for(let f of a.rows)n+=La(a.columns,l[String(f.value)],s),r+=s?Ea(a.columns):Sa(a.columns)}return o?{score:wa(n),max:wa(r)}:null}function Fa(e){return Object.assign(new Error(e.message),{problem:e})}function _r(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 Bn(e,t){return t.every(n=>Uo(e,n))}function Uo(e,t){return"any"in t?t.any.some(n=>Uo(e,n)):"all"in t?t.all.every(n=>Uo(e,n)):Fl(e,t)}function tn(e){return e!=null&&e!==""&&e!==!1&&!(Array.isArray(e)&&!e.length)}function Rl(e){return Array.isArray(e)?e.map(t=>t!==null&&typeof t=="object"&&"id"in t?t.id:t):[]}function Fl(e,t){let n=e[t.field],r=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"id"in n?n.id:n,o=t.value,i=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"label"in n?String(n.label):String(r??"");switch(t.op){case"=":return r===o;case"=?":return!tn(o)||r===o;case"contains":case"not contains":{let a=Rl(n),d=(Array.isArray(o)?o:[o]).some(l=>a.includes(l));return t.op==="contains"?d:!d}case"!=":return r!==o;case"<":return tn(r)&&r<o;case">":return tn(r)&&r>o;case"<=":return tn(r)&&r<=o;case">=":return tn(r)&&r>=o;case"in":return Array.isArray(o)&&o.includes(r);case"not in":return Array.isArray(o)&&!o.includes(r);case"like":return i.includes(String(o));case"ilike":return i.toLowerCase().includes(String(o).toLowerCase());case"startswith":return i.toLowerCase().startsWith(String(o).toLowerCase());case"endswith":return i.toLowerCase().endsWith(String(o).toLowerCase());case"set":return tn(n);case"notset":return!tn(n);case"between":{if(!tn(r)||!Array.isArray(o))return!1;let[a,s]=o;return r>=a&&r<=s}}}var zn=null;function Ur(e,t){let n=r=>{if("any"in r){let i=r.any.map(n);return i.includes(zn)?zn:{any:i}}if("all"in r){let i=r.all.map(n).filter(a=>a!==zn);return i.length?{all:i}:zn}let o=r.valueFrom!==void 0?Al(t,r.valueFrom):r.value??null;return r.op==="=?"?tn(o)?{field:r.field,op:"=",value:o}:zn:{field:r.field,op:r.op,value:o}};return e.map(n).filter(r=>r!==zn)}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 Aa=new Set(["char","text","html"]),Ta=new Set(["integer","float","monetary"]),Tl=new Set(["many2one","many2many"]);function Kr(e,t,n,r={searchFor:"Search {field} for: {text}"}){let o=e.trim();if(!o)return[];let i=[];for(let s of n.searchFields??n.columns){let d=t.fields[s];if(!d)continue;let l=(f,c,v,m)=>i.push({field:s,fieldLabel:d.label,op:f,value:c,valueLabel:v,label:m??_e(r.searchFor,{field:d.label,text:o})});if(Aa.has(d.type)||Tl.has(d.type))l("ilike",o,o);else if(d.type==="selection"){let f=o.toLowerCase();for(let c of d.options)c.label.toLowerCase().includes(f)&&l("=",c.value,c.label,`${d.label}: ${c.label}`)}else if(Ta.has(d.type)){let f=Number(o.replace(/[\s,]/g,""));o&&Number.isFinite(f)&&l("=",f,o)}}let a=s=>{let d=t.fields[s.field]?.type??"";return Aa.has(d)?0:d==="selection"?1:Ta.has(d)?2:3};return i.map((s,d)=>({s,i:d})).sort((s,d)=>a(s.s)-a(d.s)||s.i-d.i).map(({s})=>s)}function Gr(e,t){let n=[];for(let r of e)if(r.kind==="field"){let o=r.values.map(i=>({field:r.field,op:i.op,value:i.value}));n.push(o.length===1?o[0]:{any:o})}else if(r.kind==="filters"){let o=r.ids.map(i=>t.filters?.find(a=>a.id===i)?.filter??[]).filter(i=>i.length);o.length===1?n.push(...o[0]):o.length>1&&n.push({any:o.map(i=>i.length===1?i[0]:{all:i})})}else r.kind==="custom"&&n.push(...r.filter);return n}function Jr(e){return e.find(t=>t.kind==="groupBy")?.fields??[]}var sr={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function Yr(e,t=sr){return new Promise(n=>{t.setTimeout(n,e)})}function $a(e={}){let t=ke(e.records??{}),n=[],r=[],o=new Map,i=1e3,a=()=>e.delayMs?Yr(e.delayMs,e.scheduler):Promise.resolve(),s=u=>t[u]??(t[u]={}),d=(u,y)=>{let b=s(u)[String(y)]?.[e.labelField?.[u]??"name"];return typeof b=="string"?b:String(y)},l=(u,y)=>{let b=e.shows?.[u],w=b?s(u)[String(y.id)]:void 0;if(!b||!w)return y;let L={...y};b.avatar&&typeof w[b.avatar]=="string"&&(L.avatar=w[b.avatar]),b.color&&typeof w[b.color]=="number"&&(L.color=w[b.color]),b.folded&&(L.folded=w[b.folded]===!0);let x=(b.details??[]).map(R=>w[R]).map(R=>R&&typeof R=="object"&&"label"in R?R.label:R).filter(R=>typeof R=="string"&&R.trim());return x.length&&(L.details=x.join(`
3
+ `)),L},f=u=>Math.max(0,...Object.keys(s(u)).map(Number).filter(Number.isFinite))+1,c=u=>Number.isFinite(Number(u))?Number(u):u,v=(u,y)=>({id:c(u),...y});function m(u,y){let b=[...u];for(let w of y)w.op==="create"?b.push({key:w.key,id:++i,values:ke(w.values)}):w.op==="update"?b=b.map(L=>L.id===w.id?{...L,values:{...L.values,...ke(w.values)}}:L):b=b.filter(L=>L.id!==w.id);return b}function S(u,y,b){let w=[...u],L=x=>({id:x,label:d(b,x)});for(let x of y)x.op==="link"&&!w.some(R=>R.id===x.id)?w.push(L(x.id)):x.op==="unlink"?w=w.filter(R=>R.id!==x.id):x.op==="set"?w=x.ids.map(L):x.op==="clear"&&(w=[]);return w}function g(u,y){let b=u[y];return b&&"relation"in b?b.relation:y}return{records:t,responses:n,calls:r,async load(u){r.push({method:"load",request:u}),await a();let y=s(u.model)[String(u.id)];if(!y)throw new Error(`No ${u.model} record with id ${u.id}`);let b=ke(y);if(e.shows)for(let[w,L]of Object.entries(u.fields)){let x=b[w];L.type==="many2one"&&x&&typeof x=="object"&&"id"in x?b[w]=l(L.relation,x):L.type==="many2many"&&Array.isArray(x)&&(b[w]=x.map(R=>l(L.relation,R)))}return b},async save(u){r.push({method:"save",request:u}),await a();let y=u.id??f(u.model),b={...s(u.model)[String(y)]??{},...ke(u.changes.values)};for(let[w,L]of Object.entries(u.changes.lines))b[w]=m(b[w]??[],L);for(let[w,L]of Object.entries(u.changes.links))b[w]=S(b[w]??[],L,g(u.fields,w));return s(u.model)[String(y)]=b,{id:y,values:ke(b)}},async onchange(u){r.push({method:"onchange",request:u}),await a();let y=e.onchange?.[u.model]?.[u.changed],b=e.warnings?.[u.model]?.[u.changed],w=y?{values:y(ke(u.values))}:{},L=b?.(ke(u.values));return L?{...w,warning:L}:w},async search(u){r.push({method:"search",request:u}),await a();let y=u.query.trim().toLowerCase();return Object.entries(s(u.model)).filter(([b,w])=>Bn(v(b,w),u.filter??[])).map(([b])=>({id:c(b),label:d(u.model,c(b))})).filter(b=>b.label.toLowerCase().includes(y)).slice(0,u.limit??8).map(b=>l(u.model,b))},async list(u){r.push({method:"list",request:u}),await a();let y=Object.entries(s(u.model)).filter(([b,w])=>Bn(v(b,w),u.filter)).map(([b,w])=>({id:c(b),values:w}));return y.sort((b,w)=>{for(let L of u.sort){let x=$l(b.values[L.field],w.values[L.field]);if(x.empty)return x.result;if(x.result)return L.desc?-x.result:x.result}return 0}),{total:y.length,records:y.slice(u.offset,u.offset+u.limit).map(({id:b,values:w})=>({id:b,values:Object.fromEntries(u.fields.map(L=>[L,ke(w[L]??null)]))}))}},async groups(u){r.push({method:"groups",request:u}),await a();let y=new Map;for(let[b,w]of Object.entries(s(u.model))){if(!Bn(v(b,w),u.filter))continue;let L=w[u.field]??null,x=L!==null&&typeof L=="object"&&!Array.isArray(L)&&"id"in L?L:null,R=x?x.id:L,E=JSON.stringify(R),k=y.get(E)??{value:R,label:x?x.label:L===null||L===""?"":String(L),count:0};k.count++,y.set(E,k)}return[...y.values()].sort((b,w)=>b.value===null==(w.value===null)?b.label.localeCompare(w.label):b.value===null?1:-1)},async create(u){r.push({method:"create",request:u}),await a();let y=s(u.model),b=Object.keys(y).reduce((w,L)=>Math.max(w,Number(L)||0),0)+1;return y[String(b)]={...ke(u.values??{}),name:u.name},{id:b,label:u.name}},async submit(u){return r.push({method:"submit",request:u}),await a(),n.push(ke(u)),{id:n.length}},async archive(u){r.push({method:"archive",request:u}),await a();let y=s(u.model)[String(u.id)];if(!y)throw new Error(`No ${u.model} record with id ${u.id}`);y.active=!u.archive},async copy(u){r.push({method:"copy",request:u}),await a();let y=s(u.model)[String(u.id)];if(!y)throw new Error(`No ${u.model} record with id ${u.id}`);let b=f(u.model),w=ke(y),L=e.labelField?.[u.model]??"name";typeof w[L]=="string"&&(w[L]=`${w[L]}${e.copySuffix??" (copy)"}`);for(let[x,R]of Object.entries(w))Array.isArray(R)&&R.every(E=>E&&typeof E=="object"&&"key"in E&&"values"in E)&&(w[x]=R.map(E=>({...E,id:++i})));return s(u.model)[String(b)]=w,{id:b,values:ke(w)}},async delete(u){if(r.push({method:"delete",request:u}),await a(),!s(u.model)[String(u.id)])throw new Error(`No ${u.model} record with id ${u.id}`);delete s(u.model)[String(u.id)]},async attachments(u){return r.push({method:"attachments",request:u}),await a(),ke(e.attachments?.[`${u.model}:${u.id}`]??[])},async options(u){r.push({method:"options",request:u}),await a();let y=e.lists?.[u.list];if(!y)throw new Error(`No list "${u.list}"`);return ke(typeof y=="function"?await y(u.values):y)},async definitions(u){r.push({method:"definitions",request:u}),await a();let y=e.definitions?.[u.list];if(!y)throw new Error(`No definitions "${u.list}"`);let b=y(u.values),w=o.get(`${u.list}:${JSON.stringify(b)}`)??[];return ke([...b,...w.filter(L=>!b.some(x=>x.name===L.name))])},async saveDefinitions(u){r.push({method:"saveDefinitions",request:u}),await a();let y=e.definitions?.[u.list]?.(u.values)??[];o.set(`${u.list}:${JSON.stringify(y)}`,ke(u.definitions.filter(b=>!y.some(w=>w.name===b.name))))}}}function $l(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,[o,i]=[r(e),r(t)];return typeof o=="number"&&typeof i=="number"?{result:o-i,empty:!1}:{result:String(o).localeCompare(String(i)),empty:!1}}var Xr=["street","line2","city","region","postcode","country"];function Ma(e,t,n,r){let o=t.options??{},i=t.label??e.label;if(e.type==="one2many"&&Array.isArray(n)&&n.length){if(typeof o.min=="number"&&n.length<o.min)return _e(r.minLines,{label:i,min:o.min});if(typeof o.max=="number"&&n.length>o.max)return _e(r.maxLines,{label:i,max:o.max})}let a=o.requiredParts;if(t.widget!=="address"||!Array.isArray(a)||!n||typeof n!="object"||Array.isArray(n))return;let s=Array.isArray(o.parts)?o.parts:Xr,d=n,l=Xr.findIndex(f=>a.includes(f)&&s.includes(f)&&!String(d[f]??"").trim());return l<0?void 0:_e(r.required,{label:r.addressParts.split("|")[l]})}var Ml={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 Ko(e,t,n,r){let o=t.widget??"";if(e.type!=="char")return Ma(e,t,n,r);if(typeof n!="string"||!n.trim())return;let i=n.trim(),a=t.options??{},s=t.label??e.label,d=Ml[o],l=i.match(/\p{Nd}/gu)?.length??0;if(d&&(!d.test(i)||o==="phone"&&(l<7||l>15)))return r[o];if(o==="time"){if(typeof a.min=="string"&&i<a.min)return _e(r.before,{label:s,min:a.min});if(typeof a.max=="string"&&i>a.max)return _e(r.after,{label:s,max:a.max})}if(o==="tags"&&typeof a.max=="number"&&i.split(typeof a.separator=="string"&&a.separator?a.separator:",").filter(c=>c.trim()).length>a.max)return _e(r.atMost,{label:s,max:a.max})}function Na(e,t,n,r=!0,o={},i){let a={id:t??null,user:{id:n?.id??null,name:n?.name??null,roles:[...n?.roles??[]]},editing:r,context:o,...i?{parent:i}:{}};for(let s of Object.keys(a))s in e&&delete a[s];return a}function zt(e,t,n){return{...Na(t,n.recordId,n.user,n.editing,n.context,n.parent),...mn(e,t)}}function hn(e,t,n,r=null){let o={parent:n,user:n.user??Na({},null,void 0).user,id:r,context:n.context??{}};for(let i of Object.keys(o))i in t&&delete o[i];return{...o,...mn(e,t)}}function Ln(e,t,n){let r=new Map;return{today:n,lines(o){let i=t[o];if(i?.type!=="one2many")return;let a=r.get(o);return a||(a=(e[o]??[]).filter(d=>mt(i,d.values)===null).map(d=>mn(d.values,i.fields)),r.set(o,a)),a}}}function Ca(e){let t=new Map;for(let[r,o]of Object.entries(e))o.compute!==void 0&&t.set(r,jt(o.compute));let{order:n}=Dr(new Map([...t].map(([r,o])=>[r,o.fields])));return n.map(r=>[r,t.get(r),e[r]])}function Rn(e,t){if(e.type==="boolean")return Nt(t);if(t==null)return null;switch(e.type){case"integer":return yt(t)?tr(t,0):null;case"float":case"monetary":return yt(t)?e.digits?tr(t,e.digits[1]):t:null;case"char":case"text":case"html":return typeof t=="string"?t:yt(t)?String(t):null;case"date":case"datetime":return typeof t=="string"?t:null;default:return t}}function Oa(e,t,n=()=>({recordId:null})){let r=Ca(e.fields),o=new Map;for(let[d,l]of Object.entries(e.fields)){if(l.type!=="one2many")continue;let f=Ca(l.fields);f.length&&o.set(d,{def:l,steps:f})}let i={today:t};function a(d,l,f,c,v){let m=d,S=v(d);for(let[g,u,y]of l){let b=Rn(y,u.evaluate(S,c));qr(b,m[g])||(m={...m,[g]:b},Object.assign(S,mn({[g]:b},f)))}return m}function s(d,l,f){let c=o.get(d);return!c||mt(c.def,l)!==null?l:a(l,c.steps,c.def.fields,i,v=>hn(v,c.def.fields,f))}return{line:(d,l,f)=>s(d,l,zt(f,e.fields,n())),apply(d){let l=d,f=o.size?zt(d,e.fields,n()):{};for(let c of o.keys()){let v=l[c];if(!Array.isArray(v))continue;let m=!1,S=v.map(g=>{let u=s(c,g.values,f);return u===g.values?g:(m=!0,{...g,values:u})});m&&(l={...l,[c]:S})}return r.length?a(l,r,e.fields,Ln(l,e.fields,t),c=>zt(c,e.fields,n())):l}}}function Pa(e){return Object.entries(e).flatMap(([t,n])=>(n.setWhen??[]).map((r,o)=>({key:`${t}#${o}`,name:t,def:n,when:rt(r.when??!0),value:jt(r.value),...r.on?{on:r.on}:{}})))}var Nl={has:()=>!0};function Ia(e,t,n=()=>({recordId:null})){let r=Pa(e.fields),o=new Map;for(let[d,l]of Object.entries(e.fields)){if(l.type!=="one2many")continue;let f=Pa(l.fields);f.length&&o.set(d,{def:l,rules:f})}let i={today:t};function a(d,l,f,c,v,m,S){let g=d;for(let u of l){if(u.on){let b=`${v}${u.key}@${JSON.stringify(u.on.map(w=>d[w]??null))}`;if(S.add(b),m.has(b)||!u.when.evaluate(f,c))continue}else{if(!u.when.evaluate(f,c))continue;let b=v+u.key;if(S.add(b),m.has(b))continue}let y=Rn(u.def,u.value.evaluate(f,c));qr(y,g[u.name])||(g={...g,[u.name]:y})}return g}function s(d,l){let f=new Set,c=r.length?a(d,r,zt(d,e.fields,n()),Ln(d,e.fields,t),"",l,f):d,v=o.size?zt(d,e.fields,n()):{};for(let[m,{def:S,rules:g}]of o){let u=d[m];if(!Array.isArray(u))continue;let y=!1,b=u.map(w=>{if(mt(S,w.values)!==null)return w;let L=a(w.values,g,hn(w.values,S.fields,v,w.id??null),i,`${m}.${w.key}.`,l,f);return L===w.values?w:(y=!0,{...w,values:L})});y&&(c={...c,[m]:b})}return{values:c,holding:f}}return{apply:s,holding:d=>s(d,Nl).holding}}function Va(e){return(e??[]).map(t=>({rule:t,when:rt(t.when??!0),pattern:t.pattern===void 0?null:new RegExp(`^(?:${t.pattern})$`),holds:t.holds===void 0?null:rt(t.holds)}))}function Da(e,t,n,r,o){let i={};if(!r.length||_t(e,n))return i;for(let a of r){let s=a.rule.level??"error";if(i[s]!==void 0||!a.when.evaluate(o.context,o.env))continue;let d=Cl(a,e,n,o.now)??Il(a,o);d&&(i[s]=a.rule.message??_e(o.messages[d.say],{label:t,...d.values}))}return i}function Cl({rule:e,pattern:t},n,r,o){let i=typeof r=="string"?r:null;if(i!==null&&e.minLength!==void 0&&i.length<e.minLength)return{say:"minLength",values:{min:e.minLength}};if(i!==null&&e.maxLength!==void 0&&i.length>e.maxLength)return{say:"maxLength",values:{max:e.maxLength}};if(t&&(i!==null||yt(r))&&!t.test(String(r)))return{say:"pattern"};if(i!==null&&e.endsWith!==void 0&&!i.trim().toLowerCase().endsWith(e.endsWith.toLowerCase()))return{say:"endsWith",values:{ending:e.endsWith}};if(yt(r)&&e.min!==void 0&&r<e.min)return{say:"min",values:{min:e.min}};if(yt(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 s=Ol(n,r,e.distinct);if(s!==null)return{say:"distinct",values:{column:n.fields[e.distinct]?.label??e.distinct,value:s}}}if(i!==null&&e.date!==void 0){let s=Vl(n,i,o);if(e.date==="past"&&s>=0)return{say:"datePast"};if(e.date==="future"&&s<=0)return{say:"dateFuture"}}}function Ol(e,t,n){let r=e.fields[n],o=new Set;for(let i of t){if(mt(e,i.values)!==null)continue;let a=i.values[n];if(a==null||a===""||Array.isArray(a)&&!a.length)continue;let s=typeof a=="object"&&!Array.isArray(a)&&"id"in a?a:null,d=JSON.stringify(s?s.id:a);if(!o.has(d)){o.add(d);continue}return s?s.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 Il({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 Vl(e,t,n){if(e.type==="datetime")return Math.sign(Date.parse(t)-n.getTime());let r=cn(n);return t<r?-1:t>r?1:0}var Wa=new Map;function Dl(e){let t=Wa.get(e);return t||Wa.set(e,t=jt(e)),t}function Go(e,t){let n=e.trim();if(Vn.test(n)&&n in t.fields)return ke(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?ke(t.parent.values[r[1]]):Dl(e).evaluate(t.context,t.env)}function Ha(e,t,n){if(e.type!=="many2one"&&e.type!=="many2many")return Rn(e,t);let r=o=>{if(o==null||o===!1||o==="")return null;if(typeof o=="number"||typeof o=="string")return{id:o,label:n.labelOf?.(e.relation,o)??String(o)};if(typeof o=="object"&&!Array.isArray(o)&&"id"in o){let i=o;return{id:i.id,label:typeof i.label=="string"?i.label:n.labelOf?.(e.relation,i.id)??String(i.id)}}return null};return e.type==="many2one"?r(Array.isArray(t)?t[0]:t):(Array.isArray(t)?t:[t]).map(r).filter(o=>o!==null)}function ja(e,t,n){let r={};for(let[o,i]of Object.entries(e)){let a=t[o];a&&(r[o]=Ha(a,Go(i,n),n))}return r}function Jo(e,t){let n={};for(let[r,o]of Object.entries(e))n[r]=Go(o,t)??null;return n}function Yo(e,t){let n={};for(let[r,o]of Object.entries(e))o.defaultFrom!==void 0&&(n[r]=Ha(o,Go(o.defaultFrom,t),t));return n}function za(e){let t=Xo(e.tones),n=rt(e.bold);return(r,o)=>({tone:Zo(t,r,o),bold:n.evaluate(r,o)})}var Xo=e=>(e??[]).map(t=>({tone:t.tone,when:rt(t.when)})),Zo=(e,t,n)=>e.find(r=>r.when.evaluate(t,n))?.tone??null;function Ba(e){let t=new Map;for(let[s,d]of Object.entries(e.cells??{}))t.set(s,{invisible:rt(d.invisible),readonly:rt(d.readonly),required:rt(d.required),hidden:rt(d.hidden),...d.roles?.length?{roles:d.roles}:{},tones:Xo(d.tones),bold:rt(d.bold)});let n=Xo(e.rowTones),r=rt(e.rowBold),o=e.lineDelete===void 0?null:rt(e.lineDelete),i=e.rowButtons??[],a=i.map(s=>({id:s.id,roles:s.roles,invisible:rt(s.invisible)}));return{buttons:i,line(s,d,l){let f={tone:Zo(n,s,d),bold:r.evaluate(s,d),cells:{},buttons:{},deletable:o?.evaluate(s,d)??!0};for(let[c,v]of t)f.cells[c]={invisible:v.invisible.evaluate(s,d),readonly:v.readonly.evaluate(s,d),required:v.required.evaluate(s,d),tone:Zo(v.tones,s,d),bold:v.bold.evaluate(s,d)};for(let c of a)f.buttons[c.id]=Sn(c.roles,l)&&!c.invisible.evaluate(s,d);return f},hidden(s,d,l,f){let c=t.get(s);return!!c&&(!Sn(c.roles,f)||c.hidden.evaluate(d,l))}}}var Zr=Object.freeze({done:!0}),Qo=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),ei=e=>e instanceof Error?e.message:String(e);function qa(e){let t=new Map,n=new Map,r=x=>{let R=t.get(x);return R||t.set(x,R=jt(x)),R};function o(x){if(typeof x=="boolean")return x;let R=n.get(x);R||n.set(x,R=rt(x));let{context:E,env:k}=e.reading();return R.evaluate(E,k)}let i=x=>{let R=x.trim();return Vn.test(R)?R:null};function a(x,R){let E=i(x);if(R&&E!==null&&E in e.fields)return ke(e.values()[E]);let{context:k,env:h}=e.reading();return r(x).evaluate(k,h)}function s(x,R){let E=e.values();for(let[k,h]of Object.entries(e.fields)){if(h.type!=="many2one"&&h.type!=="many2many"||h.relation!==x)continue;let N=E[k],T=(Array.isArray(N)?N:N?[N]:[]).find(W=>W&&W.id===R);if(T)return T.label}}function d(x,R,E=()=>{}){let k=h=>{if(h==null||h===!1||h==="")return null;let N=x.relation,z=T=>E(T)??s(N,T)??String(T);if(typeof h=="number"||typeof h=="string")return{id:h,label:z(h)};if(typeof h=="object"&&!Array.isArray(h)&&"id"in h){let T=h;return{id:T.id,label:typeof T.label=="string"?T.label:z(T.id)}}return null};return x.type==="many2one"?k(R):x.type==="many2many"?(Array.isArray(R)?R:[R]).map(k).filter(h=>h!==null):Rn(x,R)}function l(x){let R=e.fields[x];if(!R)throw new Error(`The page has no field "${x}"`);return R}async function f(x){return e.host?e.host.ask(x):e.confirm?e.confirm(x):!0}function c(x){return{reason:"cannot",message:x}}async function v(x,R){let E=e.host;if(!E)return c(`Nothing can open "${x.page}" here: the form has no host`);let k=x.record!==void 0?a(x.record,!1):null,h={page:x.page,...x.version!==void 0?{version:x.version}:{},as:x.as??"dialog",...x.side&&x.as==="panel"?{side:x.side}:{},...x.title!==void 0?{title:x.title}:{},recordId:typeof k=="number"||typeof k=="string"&&k!==""?k:null,...x.values?{values:m(x.values)}:{},...x.filter?{filter:Ur(x.filter,e.reading().context)}:{}},N;try{N=await E.open(h)}catch(T){return{reason:"cannot",message:ei(T),error:T}}if(!N.saved)return{reason:"closed"};if(x.into&&e.write(S(x.into,N)),!x.then)return null;let z=await L(x.then,R);return z.done?null:{reason:z.reason,message:z.message,step:z.step,error:z.error}}function m(x){let R={};for(let[E,k]of Object.entries(x))R[E]=a(k,!0)??null;return R}function S(x,R){let E=R.values??{},k=R.recordId??null,h={...Wl(E),id:k},N=[R.label,E.display_name,E.name].find(W=>typeof W=="string"&&W!==""),z=W=>W===k?N:void 0,T={};for(let[W,D]of Object.entries(x)){let V=l(W),I=i(D),B=I==="id"?k:I!==null&&!Qo.has(V.type)&&I in E?E[I]:r(D).evaluate(h,{today:e.today});T[W]=d(V,B,z)}return T}async function g(x,R){let E={id:R.id,action:x.action,...x.params?{params:ke(x.params)}:{},recordId:e.recordId(),values:ke(e.values()),...R.recordIds?{recordIds:[...R.recordIds]}:{},...R.line?{line:ke(R.line)}:{},...R.lines?{lines:ke(R.lines)}:{}};if(!e.onAction)return null;let k;try{k=await e.onAction(E)??void 0}catch(h){return{reason:"app",message:ei(h),error:h}}if(e.answered(E,k),!k)return null;if(k.reload){let h=await e.reload();if(h)return h}if(k.values){let h={};for(let[N,z]of Object.entries(k.values))N in e.fields&&(h[N]=d(e.fields[N],z));e.write(h)}if(k.say!==void 0){let h=typeof k.say=="string"?{message:k.say}:k.say;e.host?.say(h.message,h.tone??"info")}if(k.post!==void 0){let h=typeof k.post=="string"?{message:k.post}:k.post,N=await u(h.message,h.kind??"note",!1);if(N)return N}if(k.record!==void 0){let h=await e.showRecord(k.record);if(h)return h}if(k.open){let h=await v(k.open,R);if(h)return h}return k.stop?(typeof k.stop=="string"&&e.host?.say(k.stop,"warning"),{reason:"app",...typeof k.stop=="string"?{message:k.stop}:{}}):null}async function u(x,R,E){let k=E?Dn(x):[{text:x}],h=k.map(T=>T.field?e.wordsOf(T.field):T.text).join(""),N=k.map(T=>T.field&&e.fields[T.field]?.type==="html"?String(e.values()[T.field]??""):Hl(T.field?e.wordsOf(T.field):T.text)).join("");return await e.post({kind:R,text:h,body:`<p>${N}</p>`})?null:c("Nothing can post a message here: no conversation is beside this record")}async function y(x,R,E){return e.onAction?g({action:x},E):c(`Nothing can ${x} this record here: the data source has no ${R}, and the app takes no actions`)}async function b(x,R){let E=e.recordId();if(E==null)return c(`A new record cannot be ${x==="duplicate"?"duplicated":x==="delete"?"deleted":`${x}d`}: it is not saved yet`);if(x==="archive"||x==="unarchive")return e.archive?(await e.archive(x==="archive"),e.told({archived:x==="archive"},E),e.reload()):y(x,"archive",R);if(x==="duplicate"){if(e.changed()){let N=await e.save(R.chain);if(N)return N}if(!e.copy){let N=await y(x,"copy",R),z=e.recordId();return!N&&z!=null&&z!==E&&e.told({copied:z},E),N}let k=await e.copy(),h=await e.showRecord(k);return h||(e.told({copied:k},E),null)}if(!e.remove){let k=await y(x,"delete",R);return k||e.told({deleted:!0},E),k}return await e.remove(),e.told({deleted:!0},E),null}async function w(x,R){switch(x.do){case"set":{let E=l(x.field);return e.write({[x.field]:d(E,a(x.value,!Qo.has(E.type)))}),null}case"clear":return e.write({[x.field]:En(l(x.field))}),null;case"addLine":{let E=l(x.field);if(E.type!=="one2many")return c(`"${x.field}" is a ${E.type}; a line is added to a one2many`);let k={};for(let[h,N]of Object.entries(x.values??{})){let z=E.fields[h];if(!z)return c(`The lines of "${x.field}" have no field "${h}"`);k[h]=d(z,a(N,!Qo.has(z.type)))}return e.addLine(x.field,k),null}case"check":return e.check(x.fields);case"save":return e.save(R.chain);case"reset":return e.reset(),null;case"goTo":{let E=e.goTo(x.target,R.chain);if(E!==void 0)return E;let k=e.host?.show;return k?(e.showing(R.chain,()=>k.call(e.host,x.target)),null):c(`Nothing can show "${x.target}" here: the form has no host that shows tabs`)}case"say":return e.host?.say(x.message,x.tone??"info"),null;case"ask":return await f(x.message)?null:{reason:"no",message:x.message};case"call":return g(x,R);case"open":return v(x,R);case"close":{let E=e.host?.close;return E?(E.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 E=e.host?.openUrl;if(!E)return c("Nothing can open a web address here: the form has no host that opens one");let k=a(x.url,!1);return typeof k!="string"||!k.trim()?c(`"${x.url}" gives no address to open`):(E.call(e.host,k.trim(),x.newTab??!0),null)}case"archive":case"unarchive":case"duplicate":case"delete":return b(x.do,R);case"post":return u(x.message,x.kind??"note",!0)}}async function L(x,R){for(let E=0;E<x.length;E++){let k=x[E],h;try{if(k.when!==void 0&&!o(k.when))continue;h=await w(k,R)}catch(N){h={reason:"cannot",message:ei(N),error:N}}if(h)return{done:!1,stoppedAt:E,step:h.step??k,reason:h.reason,...h.message!==void 0?{message:h.message}:{},...h.error!==void 0?{error:h.error}:{}}}return Zr}return{runSteps:L,ask:f}}function Wl(e){let t={},n=r=>{if(r===null||typeof r!="object")return r;let o=r;return"key"in o&&"values"in o?o.key:"model"in o&&"id"in o?`${o.model},${o.id}`:"id"in o?o.id:"name"in o&&"type"in o&&"size"in o?o.name:r};for(let[r,o]of Object.entries(e))t[r]=Array.isArray(o)?o.map(n):n(o);return t}function _a(e){let t=new Map;return function(r,o,i,a){if(!o?.length||i.includes(r))return Promise.resolve(Zr);let s=l=>{let f,c=new Promise(v=>f=v).finally(()=>{l.running===c&&!l.queued&&t.delete(r)});return l.running=c,f(e(r,o,[...i,r])),c},d=t.get(r);if(!d){let l={running:Promise.resolve(Zr)};return t.set(r,l),s(l)}if(!a)return Promise.resolve(Zr);if(!d.queued){let l=()=>(d.queued=void 0,s(d));d.queued=d.running.then(l,l)}return d.queued}}function Hl(e){return e.replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t]).replace(/\n/g,"<br>")}function eo(e){return Ga(e,[]).form}var Ua=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ti=e=>e;function Ga(e,t){let{page:n}=e,r=e.scheduler??sr,o=e.messages??Lt.en,i=Ul(n.layout),a=new Map;for(let p of i.values()){let F=p.source.validate;p.kind==="field"&&F&&a.set(p.id,Va(F))}let s=new Map;for(let p of i.values()){let F=p.source;p.kind!=="field"||n.fields[F.field]?.type!=="one2many"||(F.cells||F.rowTones||F.rowBold!==void 0||F.rowButtons||F.lineDelete!==void 0)&&s.set(p.id,{field:F.field,compiled:Ba(F)})}let d=new Map;for(let p of i.values()){let F=p.source;p.kind==="field"&&(F.tones||F.bold!==void 0)&&d.set(p.id,za(F))}let l=new Map;for(let p of i.values()){let F=p.source;p.kind==="field"&&F.order?.length&&n.fields[F.field]?.type==="one2many"&&!l.has(F.field)&&l.set(F.field,F.order)}function f(p,F){let O=p;for(let[C,A]of l){if(F&&!F.includes(C))continue;let H=p[C];if(!Array.isArray(H)||H.length<2)continue;let _=[...H].sort((Z,ee)=>Bl(Z.values,ee.values,A));_.some((Z,ee)=>Z!==H[ee])&&(O={...O,[C]:_})}return O}let c=new Map,v=(p,F)=>{F.placeholderWhen?.length&&c.set(p,{fixed:F.placeholder,when:F.placeholderWhen.map(O=>({text:O.text,holds:rt(O.when)}))})};for(let p of i.values())p.kind==="field"&&"type"in p.source&&v(p.id,p.source);n.layout.type==="sheet"&&n.layout.title&&v("#title",n.layout.title);let m=[...a.values()].some(p=>p.some(F=>F.rule.level==="warning")),S=n.layout.type==="wizard"?n.layout.children.map(p=>p.id):[],g=()=>`fieldia:draft:${n.id}:${$.recordId??"new"}`,u=()=>cn(e.now?.()??new Date),y=!1,b=e.editing!==!1,w=e.parent?zt(e.parent.values,e.parent.fields,{recordId:e.parent.id??null,user:e.user,context:e.context}):void 0,L=()=>({recordId:y?$.recordId:e.recordId??null,user:e.user,editing:b,context:e.context,parent:w}),x=Oa(n,u,L),R=Ia(n,u,L),E=new Map;for(let p of i.values())p.kind==="form"&&E.set(p.id,p.source);let k=new Map,h={...n.fields};for(let p of E.values())h[p.name]={type:"json",label:p.title||p.name};let N=!1;function z(p=e.recordId==null,F=!0){let O=pn(h,u());if(p){let C={recordId:null,user:e.user,context:e.context,parent:w};Object.assign(O,Yo(n.fields,W(O,n.fields,zt(O,n.fields,C),Ln(O,n.fields,u))))}return F?f({...O,...ke(e.values??{})}):O}function T(p,F){let O=y?$.values:{};for(let[C,A]of Object.entries(n.fields)){if(A.type!=="many2one"&&A.type!=="many2many"||A.relation!==p)continue;let H=O[C],_=(Array.isArray(H)?H:H?[H]:[]).find(Z=>Z?.id===F);if(_)return _.label}}function W(p,F,O,C,A){return{values:p,fields:F,context:O,env:C,...A?{parent:A}:{},...e.user?{user:e.user}:{},labelOf:T}}function D(){let{context:p,env:F}=de();return W($.values,n.fields,p,F)}function V(p,F){let C=Be(p).fields;return W(F,C,hn(F,C,de().context),{today:u},{values:$.values,fields:n.fields})}function I(p){let F=s.get(p);if(F)return F;let O=i.get(p);if(O?.kind!=="field"||n.fields[O.field]?.type!=="one2many")throw new Error(`"${p}" is not a table of lines`);return null}function B(p,F){let O=I(p);if(!O)return{tone:null,bold:!1,cells:{},buttons:{},deletable:!0};let C=($.values[O.field]??[]).find(H=>H.key===F);if(!C)throw new Error(`"${O.field}" has no line "${F}"`);let A=Be(O.field);return O.compiled.line(hn(C.values,A.fields,de().context,C.id??null),{today:u},me)}function j(p,F){if(!F){let A=ge(p);return A.type==="many2one"||A.type==="many2many"?A.createValues?Jo(A.createValues,D()):{}:{}}let O=($.values[F.lines]??[]).find(A=>A.key===F.key),C=Be(F.lines).fields[p];return!O||!C||C.type!=="many2one"&&C.type!=="many2many"||!C.createValues?{}:Jo(C.createValues,V(F.lines,O.values))}let P=x.apply(z()),q=R.holding(P),$={status:e.recordId!=null?"idle":"ready",recordId:e.recordId??null,values:ke(P),errors:{},dirty:[],warnings:{},warning:null,warningField:null,error:null,draft:null,step:S[0]??null,skipped:[],saveProblem:null,choices:{},definitions:{}};y=!0;let te={},X=0,G=0,U=null,ne=null,$e=new Set,Le=new Set,xe=new Map,Me=[],ie=!1,K=null,Q=null,me=[...e.user?.roles??[]],Re={};function oe(p){let F=$.values,O=$.errors;if($={...$,...p},$.errors!==O)for(let C of k.values())C.inner.show(jl($.errors,C.name));for(let C of[...Le])C($);if($.values!==F){for(let C in $.choices)Ee(C).dependsOn?.some(A=>F[A]!==$.values[A])&&Oe(C);for(let C in $.definitions)Qe(C).dependsOn?.some(A=>F[A]!==$.values[A])&&we(C)}ie&&$.step!==K&&re(Me)}function ve(p,F){let O=xe.get(p);if(O)for(let C of[...O])C(F)}function Y(p,F){ve("change",{field:p,value:$.values[p],values:$.values,by:F});let O=n.on?.change?.[p];F==="person"&&O&&se(Ie(`on.change.${p}`,O,[],!0))}function re(p){let F=$.step;if(F===K||F===null)return;K=F,ve("step",{step:F});let O=n.on?.show?.[F];O&&se(Ie(`on.show.${F}`,O,p,!0))}function ue(p,F){let O=Me;Me=p;try{F()}finally{Me=O}}let Ee=p=>n.fields[p].optionsFrom;function Oe(p){let{list:F}=Ee(p),O=Re[p]=(Re[p]??0)+1,C=_=>O===Re[p]&&oe({choices:{...$.choices,[p]:_}}),A=$.choices[p]?.options??null;C({options:A,loading:!0});let H=e.dataSource;se((H?.options?H.options({list:F,values:ke($.values)}):Promise.reject(new Error(`No list "${F}"`))).then(_=>C({options:_}),_=>C({options:A,error:_.message??String(_)})))}let Qe=p=>n.fields[p].definitionsFrom,ze={};function we(p){let{list:F}=Qe(p),O=ze[p]=(ze[p]??0)+1,C=_=>O===ze[p]&&oe({definitions:{...$.definitions,[p]:_}}),A=$.definitions[p]?.definitions??null;C({definitions:A,loading:!0});let H=e.dataSource;se((H?.definitions?H.definitions({list:F,values:ke($.values)}):Promise.reject(new Error(`No definitions "${F}"`))).then(_=>C({definitions:_}),_=>C({definitions:A,error:_.message??String(_)})))}async function Ne(p,F){let{list:O}=Qe(p),C=[...$.definitions[p]?.definitions??[],F];oe({definitions:{...$.definitions,[p]:{definitions:C}}}),await se(e.dataSource?.saveDefinitions?.({list:O,values:ke($.values),definitions:C})??Promise.resolve())}function le(p){let F=n.fields[p],O=$.choices[p]?.options;return F.type==="selection"&&F.optionsFrom&&O?{...F,options:O,optionsFrom:void 0}:F}function se(p){$e.add(p);let F=()=>$e.delete(p);return p.then(F,F),p}function de(){if(Q?.values!==$.values||Q.recordId!==$.recordId||Q.editing!==b){let p=$.values,F=zt(p,n.fields,L());Q={values:p,recordId:$.recordId,editing:b,context:F,env:Ln(p,n.fields,u)}}return Q}let fe=()=>de().context;function ge(p){let F=h[p];if(!F)throw new Error(`The page has no field "${p}"`);return F}function Ye(p){return Object.keys(h).filter(F=>JSON.stringify(p[F]??null)!==JSON.stringify(P[F]??null))}function st(p){let F=i.get(p);if(!F)throw new Error(`The page has no element "${p}"`);let{context:O,env:C}=de(),A=ee=>ee?!Sn(ee.roles,me)||ee.invisible.evaluate(O,C):!1,H=A(F);for(let ee=F.parent;!H&&ee;ee=i.get(ee)?.parent??null)H=A(i.get(ee));let _=F.readonly.evaluate(O,C);for(let ee=F.parent;!_&&ee;ee=i.get(ee)?.parent??null)_=i.get(ee)?.readonly.evaluate(O,C)??!1;let Z=F.field?n.fields[F.field]:void 0;return{invisible:H,readonly:_||Z!==void 0&&Ka(Z),required:F.required.evaluate(O,C)||Z?.required===!0}}function Ft(p,F="field"){let O=A=>{if(!p)return!0;for(let H=A.id;H;H=i.get(H)?.parent??null)if(H===p)return!0;return!1},C=A=>{if(p||!$.skipped.length)return!1;for(let H=A.id;H;H=i.get(H)?.parent??null)if($.skipped.includes(H))return!0;return!1};return[...i.values()].filter(A=>A.kind===F&&O(A)&&!C(A)&&!st(A.id).invisible)}function Nn(p){let F=a.get(p.id);if(!F)return{};let O=p.field,C=n.fields[O],A=p.source.label??C.label,{context:H,env:_}=de();return Da(C,A,$.values[O],F,{context:H,env:_,now:e.now?.()??new Date,messages:o})}function Sr(p){let F=p.field;return p.source.widget==="tick"&&n.fields[F].type==="boolean"&&$.values[F]!==!0&&st(p.id).required?o.tick:void 0}function Er(p){let F=p.field;return Sr(p)??Ko(n.fields[F],p.source,$.values[F],o)??gn(le(F),$.values[F],st(p.id).required,o,u())??Nn(p).error}function Bt(){var F;let p={};if(!m)return p;for(let O of Ft()){let C=a.has(O.id)?Nn(O).warning:void 0;C&&(p[F=O.field]??(p[F]=C))}return p}function Yt(p,F){let O=$;$={...$,values:p};try{return F()}finally{$=O}}function qt(p){let F={};for(let O of Ft(p)){let C=O.field;if(F[C])continue;let A=n.fields[C],H=Er(O);if(H&&(F[C]=H),A.type==="one2many")for(let _ of $.values[C]??[]){let Z=mt(A,_.values),ee=s.has(O.id)?B(O.id,_.key).cells:{};for(let[ae,pe]of Object.entries(A.fields)){if(Z&&ae!==A.lineKinds?.text)continue;let Ae=ee[ae];if(Ae?.invisible||s.has(O.id)&&s.get(O.id).compiled.hidden(ae,de().context,de().env,me))continue;let Xe=gn(pe,_.values[ae],pe.required===!0||Ae?.required===!0,o,u());Xe&&(F[`${C}.${_.key}.${ae}`]=Xe)}}}for(let O of Ft(p,"form")){let C=k.get(O.id);if(C)for(let[A,H]of Object.entries(C.inner.errorsNow()))F[`${C.name}.${A}`]=H}return F}function Xt(p,F){let O=p;for(let C of k.values())if(!(F!=="start"&&O[C.name]===C.inner.form.getState().values)){N=!0;try{C.inner.take(Ua(O[C.name])?O[C.name]:{},F)}finally{N=!1}O={...O,[C.name]:ti(C.inner.form.getState().values)}}return O}function vn(p){let F=x.apply(p);for(let O=0;O<8;O++){let C=R.apply(F,q);if(q=C.holding,C.values===F)break;F=x.apply(C.values)}return F}function ut(p){let F=x.apply(p);return q=R.holding(F),F}function bt(p,F={},O=!1){let C=Xt(O?ut(p):vn(p),O?"fresh":"edit"),A=Object.keys($.errors).length?Lr(C):$.errors,H={};for(let _ of Object.keys(p)){let Z=n.fields[_];if(!(p[_]===$.values[_]||!Z)&&(Qr(Z,p[_])&&(H[_]=gn(Z,p[_],!1,o)),Z.type==="one2many"))for(let ee of p[_]??[])for(let[ae,pe]of Object.entries(ee.values))Qr(Z.fields[ae],pe)&&(H[`${_}.${ee.key}.${ae}`]=gn(Z.fields[ae],pe,!1,o))}Object.keys(H).length&&(A={...A,...H}),oe({values:C,dirty:Ye(C),errors:A,warnings:Yt(C,Bt),...F})}function Lr(p){let F=Yt(p,()=>qt($.step??void 0)),O={};for(let C of Object.keys($.errors))F[C]&&(O[C]=F[C]);for(let[C,A]of Object.entries(te))JSON.stringify(p[C]??null)===A.value?O[C]??(O[C]=A.message):delete te[C];return O}function Rr(){let p=e.drafts;p&&(U!==null&&r.clearTimeout(U),U=r.setTimeout(()=>{U=null,p.store.setItem(g(),JSON.stringify({savedAt:new Date().toISOString(),values:$.values}))},p.delayMs??400))}function Cn(){U!==null&&r.clearTimeout(U),U=null,e.drafts?.store.removeItem(g())}function Zn(){let p=e.drafts;if(!p)return;let F=p.store.getItem(g());if(!F)return;let O;try{O=JSON.parse(F)}catch{p.store.removeItem(g());return}p.restore==="auto"?bt({...$.values,...O.values},{draft:null},!0):oe({draft:{savedAt:O.savedAt}})}function Fr(){let p=e.autosave;!p||n.data.kind!=="record"||(ne!==null&&r.clearTimeout(ne),ne=r.setTimeout(()=>{ne=null,$.dirty.length&&Object.keys(qt()).length===0&&se(sn())},p.delayMs))}function Ar(p){let F=e.dataSource;if(!F?.onchange||n.data.kind!=="record"||Gl(n.fields[p],$.values[p]))return;let O=++G,C={model:n.data.model,id:$.recordId,changed:p,values:ke($.values)};se(F.onchange(C).then(A=>{if(O!==G)return;let H={...$.values,...A.values??{}};bt(H,{warning:A.warning??null,warningField:A.warning?p:null})},()=>{}))}function Dt(p){Rr(),Fr(),Ar(p)}function Qn(){let p={values:{},lines:{},links:{}},F=$.recordId===null||$.recordId===void 0,O=F?Object.keys(h).filter(C=>$.dirty.includes(C)||!_t(h[C],$.values[C])):$.dirty;for(let C of O){let A=h[C],H=$.values[C],_=F?En(A):P[C];A.type==="one2many"?p.lines[C]=ql(_??[],H??[]):A.type==="many2many"?p.links[C]=_l(_??[],H??[]):p.values[C]=ke(H)}return p}function Tr(){let p={};for(let F of Ft()){let O=F.field;p[O]=ke($.values[O])}for(let F of Ft(void 0,"form")){let O=k.get(F.id);O&&(p[O.name]=ke($.values[O.name]))}return p}async function sn(p=[]){return await $r(p)===null}async function $r(p){if(n.on?.beforeSave){let C=await Ie("on.beforeSave",n.on.beforeSave,p,!1);if(!C.done){if(C.reason!=="check"&&C.reason!=="save"){let A={kind:"stopped",reason:C.reason,message:C.message??""};oe({status:"error",error:A.message||null,saveProblem:A})}return{reason:"save",...C.message!==void 0?{message:C.message}:{}}}}let F=qt();if(Object.keys(F).length)return oe({errors:F}),{reason:"save",message:Object.values(F)[0]};let O=e.dataSource;te={},oe({status:"saving",errors:{},error:null,saveProblem:null});try{if(n.data.kind==="responses"){if(!O?.submit)throw new Error("This page has no data source to send its answers to");let H=Tr();return await O.submit({pageId:n.id,values:H}),Cn(),oe({status:"saved"}),ve("send",{values:H}),se(Ie("on.afterSave",n.on?.afterSave,p,!1)),null}if(!O?.save)throw new Error("This page has no data source to save to");let C=await O.save({model:n.data.model,id:$.recordId,fields:h,changes:Qn(),values:ke($.values)});Cn();let A=Xt(ut(C.values?f({...$.values,...C.values},Object.keys(C.values)):$.values),"start");return P=ke(A),oe({status:"saved",recordId:C.id,values:A,dirty:[],warnings:Yt(A,Bt)}),ve("save",{recordId:$.recordId,values:$.values}),se(Ie("on.afterSave",n.on?.afterSave,p,!1)),null}catch(C){let A=_r(C),H=A.kind==="fields"?A.fields??{}:{};return te=Object.fromEntries(Object.entries(H).map(([_,Z])=>[_,{message:Z,value:JSON.stringify($.values[_]??null)}])),oe({status:"error",error:A.message,saveProblem:A,errors:{...H}}),{reason:"save",message:A.message}}}async function On(){ve("open",{recordId:$.recordId,values:$.values}),await Ie("on.open",n.on?.open,[],!0),ie=!0,re([])}function M(p,F){let O=Object.keys(p);if(O.forEach(ge),!!O.length){bt({...$.values,...ke(p)});for(let C of O)Dt(C);for(let C of O)Y(C,F)}}function J(p,F,O){let C=Be(p),A=$.values[p]??[],H=`new-${++X}`;for(;A.some(pe=>pe.key===H);)H=`new-${++X}`;let _=C.fields,Z=pn(_,u());Object.assign(Z,Yo(_,V(p,Z))),C.lineDefaults&&Object.assign(Z,ja(C.lineDefaults,_,D()));let ee={key:H,values:{...Z,...ke(F)}};if(C.sequenceField&&ee.values[C.sequenceField]==null){let pe=A.map(Ae=>Ae.values[C.sequenceField]).filter(Ae=>typeof Ae=="number");ee.values[C.sequenceField]=pe.length?Math.max(...pe)+1:1}let ae=[...A,ee];return bt({...$.values,[p]:ae}),Dt(p),Y(p,O),H}function ce(p){p?.forEach(ge);let F=qt(),O=p?Object.fromEntries(Object.entries(F).filter(([A])=>p.some(H=>A===H||A.startsWith(`${H}.`)))):F;oe({errors:O});let C=Object.values(O)[0];return C===void 0?null:{reason:"check",message:C}}function be(p,F){if(!S.includes(p))return;if(!We.steps().includes(p))return{reason:"cannot",message:`The step "${p}" does not apply now`};let O=!1;return ue(F,()=>O=We.goTo(p)),O?null:{reason:"check",message:Object.values($.errors)[0]}}async function Fe(p,F){let O=await ye.runSteps(p,F);return ve("run",{id:F.id,steps:p,result:O}),O}function Te(p){return!e.dataSource?.create||!p||p.readonly?null:p.type==="many2one"||p.type==="many2many"?p.relation:null}async function gt(p,F,O,C={}){let A=Te(p),H=e.dataSource;if(!A||!H?.create)throw new Error(`"${F}" cannot make records: its data source has no create, or it is not a link`);return se(H.create({model:A,name:O.trim(),...Object.keys(C).length?{values:C}:{}}))}async function ct(p,F,O,C,A,H,_){if(p.type!=="many2one"&&p.type!=="many2many"&&p.type!=="reference"&&p.type!=="json")throw new Error(`"${F}" is not a many2one, many2many, reference or json`);if((p.type==="reference"||p.type==="json")&&!H)throw new Error(`Searching "${F}" needs a model`);let Z=e.dataSource;if(!Z?.search)return[];let ee=p.type==="reference"||p.type==="json"||!p.filter?void 0:Ur(p.filter,O),ae=_?[...ee??[],{field:"id",op:"in",value:_}]:ee,pe=p.type==="reference"||p.type==="json"?H:p.relation;return se(Z.search({model:pe,query:C,...ae?{filter:ae}:{},limit:A}))}function Be(p){let F=ge(p);if(F.type!=="one2many")throw new Error(`"${p}" is a ${F.type}, not a one2many`);return F}function vt(){return $.step?S.indexOf($.step):-1}function et(p){return i.get(p)?.source?.optional===!0}async function it(p=!1){let F=e.dataSource;if($.recordId==null||n.data.kind!=="record")return;if(!F?.load){oe({status:"error",error:"This page has no data source to load from"});return}let O=++Pe;oe({status:"loading",error:null});try{let C=await F.load({model:n.data.model,id:$.recordId,fields:h});if(O!==Pe||(P=Xt(ut(f({...pn(h,u()),...C})),"start"),oe({status:"ready",values:ke(P),dirty:[],errors:{},warnings:Yt(P,Bt)}),p))return;Zn(),se(On())}catch(C){O===Pe&&oe({status:"error",error:C.message})}}let Pe=0;async function ot(p){U!==null&&r.clearTimeout(U),ne!==null&&r.clearTimeout(ne),U=ne=null,te={},K=null,ie=!1;let F={dirty:[],errors:{},warning:null,warningField:null,error:null,draft:null,step:S[0]??null,skipped:[],saveProblem:null};if(p!=null)return oe({...F,recordId:p,status:"idle"}),it();Pe++,P=ut(z(!0,!1));let O=Xt(ke(P),"start");oe({...F,recordId:null,status:"ready",values:O,warnings:Yt(O,Bt)}),Zn(),await On()}let he=()=>({model:n.data.model,id:$.recordId,fields:h});async function qe(p){if(e.host?.post)try{return await e.host.post(p)!==!1}catch{return!1}return xe.get("post")?.size?(ve("post",{recordId:$.recordId,message:p}),!0):!1}let ye=qa({fields:h,values:()=>$.values,recordId:()=>$.recordId,reading:de,today:u,write:p=>M(p,"step"),addLine:(p,F)=>{J(p,F,"step")},check:ce,save:$r,async reload(){return $.recordId==null?{reason:"cannot",message:"The record is not saved yet: there is nothing to load again"}:(await it(!0),$.status==="error"?{reason:"cannot",message:$.error??"The record could not be loaded again"}:null)},reset:()=>We.reset(),goTo:be,showing:ue,host:e.host,confirm:e.confirm,onAction:e.onAction,answered:(p,F)=>ve("action",{request:p,result:F}),changed:()=>$.dirty.length>0,...e.dataSource?.archive&&n.data.kind==="record"?{archive:p=>se((e.dataSource?.archive)({...he(),archive:p}))}:{},...e.dataSource?.copy&&n.data.kind==="record"?{copy:async()=>(await se((e.dataSource?.copy)(he()))).id}:{},...e.dataSource?.delete&&n.data.kind==="record"?{remove:()=>se((e.dataSource?.delete)(he()))}:{},async showRecord(p){return await ot(p),$.status==="error"?{reason:"cannot",message:$.error??"The record could not be loaded"}:null},told(p,F){"archived"in p?ve("archive",{recordId:F,archived:p.archived}):"copied"in p?ve("duplicate",{from:F,recordId:p.copied}):(ve("delete",{recordId:F}),$.recordId===F&&se(ot(null)))},post:qe,wordsOf:p=>Kl(ge(p),$.values[p])}),Ie=_a((p,F,O)=>Fe(F,{id:p,chain:O}));function Ge(p,F){let O=[...p.steps??[]];p.action!==void 0&&O.push({do:"call",action:p.action,..."params"in p&&p.params?{params:p.params}:{}});let C="builtin"in p&&!O.length?p.builtin:void 0;C&&O.push({do:C});let A=C==="archive"?o.archiveConfirm:C==="delete"?o.deleteConfirm:void 0,H="confirm"in p&&p.confirm!==void 0?p.confirm:A;return se((async()=>{if(H&&!await ye.ask(H)){let _={done:!1,reason:"no",message:H};return ve("run",{id:F.id,steps:O,result:_}),_}return Fe(O,F)})())}let We={page:n,getState:()=>$,subscribe(p){return Le.add(p),()=>Le.delete(p)},load:()=>se(it()),setValue(p,F,O){ge(p),bt({...$.values,[p]:ke(F)}),Dt(p),Y(p,O?.by??"person")},setValues:p=>M(p,"app"),node:st,openRecord:p=>se(ot(p)),post:qe,setEditing(p){p!==b&&(b=p,oe({}))},fieldReadonly:p=>Ka(ge(p)),loadChoices:Oe,loadDefinitions:we,addDefinition:Ne,problem(p){ge(p);let F=Ft().filter(C=>C.field===p);return F.length?F.map(Sr).find(Boolean)??F.map(C=>Ko(n.fields[p],C.source,$.values[p],o)).find(Boolean)??gn(le(p),$.values[p],F.some(C=>st(C.id).required),o,u())??F.map(C=>Nn(C).error).find(C=>C!==void 0)??null:null},validate(){let p=qt();return oe({errors:p}),Object.keys(p).length===0},save:()=>se(sn()),reset(){Cn(),te={},q=R.holding(P);let p=Xt(ke(P),"start");oe({values:p,dirty:[],errors:{},warnings:Yt(p,Bt),warning:null,warningField:null,draft:null,step:S[0]??null,skipped:[],saveProblem:null})},changes:Qn,addLine:(p,F={})=>J(p,F,"person"),updateLine(p,F,O,C){if(!Be(p).fields[O])throw new Error(`The lines of "${p}" have no field "${O}"`);let H=($.values[p]??[]).map(_=>_.key===F?{..._,values:{..._.values,[O]:ke(C)}}:_);bt({...$.values,[p]:H}),Dt(p),Y(p,"person")},moveLine(p,F,O){let A=Be(p).sequenceField;if(!A)throw new Error(`The lines of "${p}" keep no order: give the field a sequenceField`);let H=[...$.values[p]??[]],_=H.findIndex(at=>at.key===F);if(_<0)throw new Error(`"${p}" has no line "${F}"`);let Z=Math.max(0,Math.min(O,H.length-1));if(Z===_)return;let ee=H.map(at=>at.values[A]),ae=ee.every((at,He)=>typeof at=="number"&&(He===0||at>ee[He-1]));H.splice(Z,0,...H.splice(_,1));let pe=Math.min(_,Z),Ae=Math.max(_,Z),Xe=ae?ee.slice(pe,Ae+1):[],Ue=H.map((at,He)=>{let pt=ae?He>=pe&&He<=Ae?Xe[He-pe]:at.values[A]:He+1;return pt===at.values[A]?at:{...at,values:{...at.values,[A]:pt}}});bt({...$.values,[p]:Ue}),Dt(p),Y(p,"person")},removeLine(p,F){Be(p);for(let[C,A]of s)if(!(A.field!==p||(i.get(C)?.source).lineDelete===void 0)&&($.values[p]??[]).some(H=>H.key===F)&&!B(C,F).deletable)throw new Error(`The line "${F}" of "${p}" cannot be deleted now: its table's lineDelete does not hold on it`);let O=($.values[p]??[]).filter(C=>C.key!==F);bt({...$.values,[p]:O}),Dt(p),Y(p,"person")},async search(p,F,O=8,C={}){return ct(ge(p),p,fe(),F,O,C.model,C.ids)},async previewLine(p,F,O){Be(p);let C=$.values[p]??[],A=C.find(pe=>pe.key===F);if(!A)throw new Error(`"${p}" has no line "${F}"`);let H=x.line(p,{...A.values,...O},$.values),_=e.dataSource;if(!_?.onchange||n.data.kind!=="record")return H;let Z=C.map(pe=>pe.key===F?{...pe,values:H}:pe),ae=((await _.onchange({model:n.data.model,id:$.recordId,changed:p,values:ke({...$.values,[p]:Z})})).values?.[p]??[]).find(pe=>pe.key===F);return ae?x.line(p,{...H,...ae.values},$.values):H},async searchLine(p,F,O,C,A=8,H={}){let _=Be(p),Z=_.fields[O];if(!Z)throw new Error(`The lines of "${p}" have no field "${O}"`);let ee=($.values[p]??[]).find(ae=>ae.key===F);if(!ee)throw new Error(`"${p}" has no line "${F}"`);return ct(Z,O,hn(ee.values,_.fields,fe(),ee.id??null),C,A,H.model,H.ids)},canCreate:p=>Te(n.fields[p])!==null,quickCreate:(p,F)=>gt(n.fields[p],p,F,n.fields[p]?j(p):{}),canCreateLine:(p,F)=>Te(Be(p).fields[F])!==null,quickCreateLine:(p,F,O,C)=>gt(Be(p).fields[F],F,O,C?j(F,{lines:p,key:C}):{}),createValues:(p,F)=>j(p,F),steps:()=>S.filter(p=>!st(p).invisible),next(){if(!$.step)return!1;$.skipped.includes($.step)&&oe({skipped:$.skipped.filter(C=>C!==$.step)});let p=qt($.step);if(Object.keys(p).length)return oe({errors:p}),!1;let F=We.steps(),O=S.slice(vt()+1).find(C=>F.includes(C));return O?(oe({step:O,errors:{}}),!0):!1},back(){if(!$.step)return!1;let p=We.steps(),F=S.slice(0,vt()).reverse().find(O=>p.includes(O));return F?(oe({step:F,errors:{}}),!0):!1},skip(){let p=$.step;if(!p||!et(p))return!1;let F=We.steps(),O=F[F.indexOf(p)+1];return O?(oe({step:O,errors:{},skipped:[...$.skipped.filter(C=>C!==p),p]}),!0):!1},goTo(p){let F=We.steps(),O=F.indexOf(p),C=$.step?F.indexOf($.step):-1;if(O===-1||C===-1)return!1;if(O<=C)return oe({step:p,errors:{}}),!0;let A=[...$.skipped];for(let H of F.slice(C,O)){if(A.includes(H))continue;let _=qt(H);if(Object.keys(_).length){if(et(H)){A.push(H);continue}return oe({step:H,errors:_,skipped:A}),!1}}return oe({step:p,errors:{},skipped:A}),!0},async runAction(p,F){let O=i.get(p);if(!O||O.kind!=="button"&&O.kind!=="stat")throw new Error(`The page has no button "${p}"`);return st(p).invisible?{done:!1,reason:"cannot",message:`The button "${p}" is hidden`}:O.parent&&i.get(O.parent)?.source?.selectedButtons?.some(C=>C.id===p)?{done:!1,reason:"cannot",message:`The button "${p}" runs with the lines chosen in its table`}:Ge(O.source,{id:p,chain:[],...F?{recordIds:[...F.recordIds]}:{}})},async linkedValues(p,F,O){let C=ge(p);if(C.type!=="many2many")throw new Error(`"${p}" is not a many2many`);let A=e.dataSource;if(!A?.list||!F.length)return[];let H=await A.list({model:C.relation,fields:[...O],filter:[{field:"id",op:"in",value:[...F]}],sort:[],offset:0,limit:F.length}),_=new Map(H.records.map(Z=>[String(Z.id),Z]));return F.flatMap(Z=>{let ee=_.get(String(Z));return ee?[{id:ee.id,values:ee.values}]:[]})},fieldTone(p){let F=d.get(p);if(F){let{context:O,env:C}=de();return F(O,C)}if(i.get(p)?.kind!=="field")throw new Error(`"${p}" is not a field on this page`);return{tone:null,bold:!1}},placeholder(p){let F=c.get(p);if(!F){let A=i.get(p);if(A?.kind!=="field")throw new Error(`"${p}" is not a field on this page`);let H=A.source;return p==="#title"&&n.layout.type==="sheet"?n.layout.title?.placeholder:H.placeholder}let{context:O,env:C}=de();return F.when.find(A=>A.holds.evaluate(O,C))?.text??F.fixed},lineState:(p,F)=>B(p,F),columnHidden(p,F){let O=I(p),{context:C,env:A}=de();return O?O.compiled.hidden(F,C,A,me):!1},async runRowAction(p,F,O){let C=I(p),A=C?.compiled.buttons.find(_=>_.id===F);if(!C||!A)throw new Error(`The table "${p}" has no button "${F}"`);if(!B(p,O).buttons[F])return{done:!1,reason:"cannot",message:`The button "${F}" is hidden on this line`};let H=($.values[C.field]??[]).find(_=>_.key===O);return Ge(A,{id:F,chain:[],line:{field:C.field,key:O,values:ke(H.values)}})},async runLinesAction(p,F,O){let C=i.get(p),A=C?.source,H=A?.selectedButtons?.find(pe=>pe.id===F);if(!C||!A||!H)throw new Error(`The table "${p}" has no button "${F}" for its chosen lines`);let _=$.values[A.field]??[],Z=O.map(pe=>_.find(Ae=>Ae.key===pe)??null),ee=O.find((pe,Ae)=>!Z[Ae]);if(ee!==void 0)throw new Error(`"${A.field}" has no line "${ee}"`);if(st(F).invisible)return{done:!1,reason:"cannot",message:`The button "${F}" is hidden`};if(!O.length)return{done:!1,reason:"cannot",message:`The button "${F}" runs with lines chosen: none is`};let ae=Z;return Ge(H,{id:F,chain:[],lines:{field:A.field,keys:[...O],ids:ae.flatMap(pe=>pe.id===void 0?[]:[pe.id]),values:ae.map(pe=>ke(pe.values))}})},run:(p,F={})=>se(Fe(p,{id:F.id??"run",chain:[],...F.recordIds?{recordIds:[...F.recordIds]}:{}})),shown(p){S.includes(p)||se(Ie(`on.show.${p}`,n.on?.show?.[p],Me,!0))},on(p,F){let O=xe.get(p);return O||xe.set(p,O=new Set),O.add(F),()=>{O.delete(F)}},restoreDraft(){let p=e.drafts?.store.getItem(g());if(!p)return;let F=JSON.parse(p);bt({...$.values,...F.values},{draft:null},!0)},discardDraft(){Cn(),oe({draft:null})},async settled(){for(;$e.size;)await Promise.allSettled([...$e])},embed(p,F){let O=k.get(p);if(O)return O.inner.form;let C=E.get(p);if(!C)throw new Error(`"${p}" is not a saved form placed on this page`);let A=[...t,n.id];if(A.includes(F.id))throw new Error(`a page cannot be placed inside itself: ${[...A.slice(A.indexOf(F.id)),F.id].join(" \u2192 ")}`);let H=$.values[C.name],_=Ga({page:{...F,data:{kind:"responses"}},dataSource:e.dataSource,values:Ua(H)?H:{},onAction:e.onAction,host:e.host,confirm:e.confirm,scheduler:r,messages:o,now:e.now},A);k.set(p,{name:C.name,inner:_}),_.form.on("change",({by:ae})=>{N||Y(C.name,ae)}),_.form.subscribe(ae=>{N||ae.values===$.values[C.name]||(bt({...$.values,[C.name]:ti(ae.values)}),Dt(C.name))});let Z=ti(_.form.getState().values);$.dirty.includes(C.name)||(P={...P,[C.name]:Z});let ee={...$.values,[C.name]:Z};return oe({values:ee,dirty:Ye(ee)}),_.form},embedded:p=>k.get(p)?.inner.form??null,dispose(){U!==null&&r.clearTimeout(U),ne!==null&&r.clearTimeout(ne),Le.clear(),xe.clear();for(let p of k.values())p.inner.form.dispose()}};return $={...$,warnings:Bt()},$.recordId==null&&Zn(),$.recordId==null&&se(Promise.resolve().then(On)),{form:We,take(p,F){if(F!=="start")return bt({...pn(n.fields,u()),...p},{},F==="fresh");P=ut({...pn(n.fields,u()),...ke(p)});let O=Xt(ke(P),"start");oe({values:O,dirty:[],errors:{},warnings:Yt(O,Bt),warning:null,warningField:null})},errorsNow:()=>qt(),show(p){JSON.stringify(p)!==JSON.stringify($.errors)&&oe({errors:p})}}}function jl(e,t){let n={};for(let[r,o]of Object.entries(e))r.startsWith(`${t}.`)&&(n[r.slice(t.length+1)]=o);return n}function zl(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,o=r(e),i=r(t);return typeof o=="number"&&typeof i=="number"?o-i:typeof o=="boolean"&&typeof i=="boolean"?Number(o)-Number(i):String(o).localeCompare(String(i))}function Bl(e,t,n){for(let r of n){let o=zl(e[r.field],t[r.field]);if(o)return r.desc?-o:o}return 0}function Ka(e){return e.readonly===!0||e.compute!==void 0}function ql(e,t){let n=[],r=new Map(e.filter(i=>i.id!==void 0).map(i=>[i.key,i]));for(let i of t){let a=r.get(i.key);if(i.id===void 0||!a){n.push({op:"create",key:i.key,values:ke(i.values)});continue}let s={};for(let[d,l]of Object.entries(i.values))JSON.stringify(l)!==JSON.stringify(a.values[d])&&(s[d]=ke(l));Object.keys(s).length&&n.push({op:"update",id:i.id,values:s})}let o=new Set(t.map(i=>i.key));for(let i of e)i.id!==void 0&&!o.has(i.key)&&n.push({op:"delete",id:i.id});return n}function _l(e,t){let n=new Set(e.map(o=>o.id)),r=new Set(t.map(o=>o.id));return[...t.filter(o=>!n.has(o.id)).map(o=>({op:"link",id:o.id})),...e.filter(o=>!r.has(o.id)).map(o=>({op:"unlink",id:o.id}))]}function Ul(e){let t=new Map,n=(o,i,a,s)=>{let d=o.roles;t.set(o.id,{id:o.id,parent:i,kind:a,field:s.field,...d?.length?{roles:d}:{},invisible:rt(s.invisible),readonly:rt(s.readonly),required:rt(s.required),source:o})},r=(o,i)=>{for(let a of o)if(a.type==="field"){n(a,i,"field",{invisible:a.invisible,readonly:a.readonly,required:a.required,field:a.field});for(let s of[...a.selectedButtons??[],...a.controlButtons??[]])n(s,a.id,"button",{invisible:s.invisible})}else if(a.type==="button")n(a,i,"button",{invisible:a.invisible});else if(a.type==="tabs"){n(a,i,"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,i,"other",{invisible:a.invisible,readonly:a.readonly}),r(a.children,a.id)):a.type==="form"?n(a,i,"form",{invisible:a.invisible,readonly:a.readonly}):n(a,i,"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 o of e.children)n(o,e.id,"step",{invisible:o.invisible}),r(o.children,o.id);else if(e.type==="sections"){r(e.children,e.id);for(let o of e.footer??[])n(o,e.id,"button",{invisible:o.invisible})}else if(e.type==="list")for(let o of e.actions??[])n(o,e.id,"button",{invisible:o.invisible});else{let o=(i,a)=>{a&&n({id:i},e.id,"field",{field:a})};o("#title",e.title?.field),o("#subtitle",e.title?.subtitleField),o("#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 i of[...e.buttons??[],...e.footer??[]])n(i,e.id,"button",{invisible:i.invisible});for(let i of e.statButtons??[])n(i,e.id,"stat",{invisible:i.invisible});for(let i of[...e.ribbon?[e.ribbon]:[],...e.ribbons??[]])n(i,e.id,"other",{invisible:i.invisible});for(let i of e.alerts??[]){n(i,e.id,"other",{invisible:i.invisible});for(let a of i.buttons??[])n(a,i.id,"button",{invisible:a.invisible})}for(let i of e.badges??[])n(i,e.id,"other",{invisible:i.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 i of e.toolbar?.menu??[])if(n(i,e.id,"button",{invisible:i.invisible}),i.builtin==="archive"||i.builtin==="unarchive"){let a=t.get(i.id),s=a.invisible,d=i.builtin==="unarchive";a.invisible={...s,evaluate:(l,f)=>l.active===!1!==d||s.evaluate(l,f)}}e.attachmentPreview&&n({id:"#preview",...e.attachmentPreview},e.id,"other",{invisible:e.attachmentPreview.invisible})}return t}function Kl(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)}function Qr(e,t){return!!e&&(e.type==="integer"||e.type==="float"||e.type==="monetary")&&typeof t=="string"&&t.trim()!==""}function Gl(e,t){return e?.type!=="one2many"?Qr(e,t):(t??[]).some(n=>Object.entries(n.values).some(([r,o])=>Qr(e.fields[r],o)))}var Ja=new Map;function Ya(e,t){let n=`${e}:${t}`,r=Ja.get(n);return r||(r=new Intl.NumberFormat(e,{numberingSystem:"latn",minimumFractionDigits:t,maximumFractionDigits:t}),Ja.set(n,r)),r}function Fn(e,t,n,r="en"){try{let o=new Intl.NumberFormat(r,{style:"currency",currency:t,currencyDisplay:"narrowSymbol",numberingSystem:"latn",minimumFractionDigits:n,maximumFractionDigits:n}).formatToParts(e);return o.map((i,a)=>i.type==="currency"&&/^(integer|minusSign)$/.test(o[a+1]?.type??"")?`${i.value}\xA0`:i.value).join("")}catch{return`${t} ${ht(e,n,r)}`}}function Xa(e){let t=Ya(e,1).formatToParts(12345.6);return{group:t.find(n=>n.type==="group")?.value??",",decimal:t.find(n=>n.type==="decimal")?.value??"."}}function ni(e,t,n="en"){return dr(ht(e,t,n),n)}function dr(e,t="en"){let{group:n}=Xa(t);return e.split(n).join("")}function ht(e,t,n="en"){return Ya(n,t).format(e)}function Ut(e,t="en"){let{group:n,decimal:r}=Xa(t),o=e.replace(/[٠-٩]/g,i=>String(i.charCodeAt(0)-1632)).replace(/[۰-۹]/g,i=>String(i.charCodeAt(0)-1776)).replace(/٫/g,r).replace(/٬/g,n);return o=o.replace(/[\s\u00a0\u202f]/g,""),n.trim()&&(o=o.split(n).join("")),r==="."?o:o.split(r).join(".")}var Za={};var Jl={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}",noLines:"No lines yet",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"},tt={en:Jl,...Za};function to(e,t){let n=e.ownerDocument,r=n.defaultView,o=typeof t.showPopover=="function";o&&t.setAttribute("popover","manual");let i=!1,a="",s=0;function d(){let v=e.getBoundingClientRect(),m=n.documentElement.clientWidth,S=n.documentElement.clientHeight,[g,u]=[S-v.bottom-10,v.top-10],y=g<160&&u>g;Object.assign(t.style,{position:"fixed",inset:"auto",margin:"0",minWidth:`${Math.min(Math.max(v.width,224),m-16)}px`,maxWidth:`${Math.max(v.width,Math.min(448,m-16))}px`,maxHeight:`${Math.max(96,Math.min(240,y?u:g))}px`}),a=`${v.left},${v.top},${v.width},${m},${S}`;let b=t.offsetWidth,w=r?.getComputedStyle(e).direction==="rtl",L=Math.max(8,Math.min(w?v.right-b:v.left,m-b-8));Object.assign(t.style,{left:`${L}px`,top:`${y?v.top-2-t.offsetHeight:v.bottom+2}px`})}let l=()=>{if(i){if(!e.isConnected)return c.hide();d()}},f=()=>{if(!i)return;let v=e.getBoundingClientRect();`${v.left},${v.top},${v.width},${n.documentElement.clientWidth},${n.documentElement.clientHeight}`!==a&&l(),s=r?.requestAnimationFrame(f)??0},c={show(){t.hidden=!1,o&&!t.matches(":popover-open")&&t.showPopover(),d(),i||(n.addEventListener("scroll",l,!0),r?.addEventListener("resize",l)),i=!0,!s&&r?.requestAnimationFrame&&(s=r.requestAnimationFrame(f))},place:l,hide(){o&&t.matches(":popover-open")&&t.hidePopover(),t.hidden=!0,i&&(n.removeEventListener("scroll",l,!0),r?.removeEventListener("resize",l)),s&&r?.cancelAnimationFrame(s),s=0,i=!1}};return c}function Se(e){return(t,n={},...r)=>{let o=e.createElement(t);for(let[i,a]of Object.entries(n))a!==void 0&&o.setAttribute(i,a);return o.append(...r),o}}var Ce=(e,t)=>e??tt[t??"en"]??tt.en,De=(e,t)=>e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n);function Ve(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}function Rt(e,t){e.hidden!==t&&(e.hidden=t)}function lt(e,t){e.textContent!==t&&(e.textContent=t)}function Je(e,t){Ve(e,"aria-invalid",String(t.invalid)),Ve(e,"aria-describedby",t.describedBy||null)}function no(e){let t=e("div",{class:"fd-announce",role:"status","aria-live":"polite"});return{element:t,say(n){t.textContent="",t.textContent=n}}}var It=e=>e.closest("[dir]")?.getAttribute("dir")==="rtl";function nn(e,t,n,r,o=!0){let i=Se(e)("button",{type:"button",class:"fd-choice-clear",hidden:""},t.clearSelection);i.addEventListener("click",n);let a=o&&r.options?.clear!==!1,s=!1;return{button:i,allow(d){s=a&&!d.required&&!d.readonly},show(d){Rt(i,!(s&&d))}}}function ro(e,t){let n=e("span"),r=e("button",{type:"button",class:"fd-button fd-button-link"},t.removeFile),o=e("button",{type:"button",class:"fd-button fd-button-link"},t.keep),i=e("div",{class:"fd-file-confirm",hidden:""},n,r,o),a=d=>{},s=d=>{i.hidden=!0,a(d)};return r.addEventListener("click",()=>s(!0)),o.addEventListener("click",()=>s(!1)),i.addEventListener("keydown",d=>d.key==="Escape"&&s(!1)),{element:i,ask(d,l){n.textContent=d,a=l,i.hidden=!1,o.focus()}}}var Yl=180,oo=8;function lr(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>t[r]??n)}function io(e){let{document:t,id:n,labels:r}=e,o=`${n}-list`,i=t.createElement("input");Object.assign(i,{id:n,className:"fd-input fd-combo-input",autocomplete:"off"}),i.setAttribute("role","combobox"),i.setAttribute("aria-autocomplete","list"),i.setAttribute("aria-expanded","false"),i.setAttribute("aria-controls",o),i.placeholder=e.placeholder||r.search;let a=t.createElement("ul");a.id=o,a.className="fd-listbox",a.setAttribute("role","listbox"),a.hidden=!0;let s=t.createElement("div");s.className="fd-combo",s.append(i,a);let d=to(i,a),l="",f=null,c="",v=new Map,m=!1,S=[],g=-1,u=0,y,b=!1;function w(){if(a.replaceChildren(),S.forEach((k,h)=>{let N=t.createElement("li");N.id=`${o}-${h}`,N.setAttribute("role","option"),N.setAttribute("aria-selected",String(h===g)),N.className=`fd-option${h===g?" fd-active":""}${k===f||v.has(k)?" fd-option-create":""}`,N.textContent=k.label,N.addEventListener("mousedown",z=>z.preventDefault()),N.addEventListener("click",()=>R(h)),a.append(N)}),!S.length){let k=t.createElement("li");k.className="fd-empty",k.textContent=r.noResults,a.append(k)}g>=0?i.setAttribute("aria-activedescendant",`${o}-${g}`):i.removeAttribute("aria-activedescendant"),d.place()}function L(){d.show(),i.setAttribute("aria-expanded","true")}function x(){clearTimeout(y),u++,d.hide(),i.setAttribute("aria-expanded","false"),i.removeAttribute("aria-activedescendant"),g=-1}function R(k){let h=S[k];if(!h)return;let N=c;if(x(),m=!1,h===f&&e.create){e.create(N).then(e.pick,()=>{});return}let z=v.get(h);if(z){z(N).then(T=>T&&e.pick(T),()=>{});return}e.pick(h)}function E(k){clearTimeout(y);let h=++u;y=setTimeout(async()=>{let N=await e.search(k).catch(()=>[]);if(h!==u||t.activeElement!==i)return;let z=S[g],T=z&&z!==f&&!v.has(z)?z.id:void 0,W=e.exclude?.()??new Set,D=N.filter(B=>!W.has(B.id)),V=e.shown!==void 0&&D.length>e.shown;S=V?D.slice(0,e.shown):D;let I=k.trim();f=null,e.create&&I&&!N.some(B=>B.label.trim().toLowerCase()===I.toLowerCase())&&(c=I,f={id:"__create__",label:lr(r.createNamed,{name:I})},S=[...S,f]),c=I,v=new Map((e.more?.(I,V)??[]).map((B,j)=>[{id:`__more_${j}__`,label:B.label},B.act])),S=[...S,...v.keys()],g=T===void 0?-1:S.findIndex(B=>B.id===T),w(),L()},Yl)}return i.addEventListener("input",()=>{m=!0,b||E(i.value)}),i.addEventListener("focus",()=>{b||E("")}),i.addEventListener("click",()=>{!b&&a.hidden&&t.activeElement===i&&E(m?i.value:"")}),i.addEventListener("keydown",k=>{if(!b)switch(k.key){case"ArrowDown":case"ArrowUp":{if(k.preventDefault(),a.hidden)return E(i.value);if(!S.length)return;g=(g+(k.key==="ArrowDown"?1:-1)+S.length)%S.length,w(),a.children[g]?.scrollIntoView?.({block:"nearest"});return}case"Enter":!a.hidden&&g>=0&&(k.preventDefault(),R(g));return;case"Escape":a.hidden||k.preventDefault(),x(),m=!1,i.value=l;return;case"Backspace":i.value===""&&e.onEmptyBackspace?.();return}}),i.addEventListener("blur",()=>{u++,clearTimeout(y),x();let k=m&&i.value.trim()===""&&l!=="";m=!1,k?e.onCommitEmpty?.():i.value=l}),{element:s,input:i,setText(k){l=k,!m&&i.value!==k&&(i.value=k)},setReadonly(k){b=k,i.readOnly!==k&&(i.readOnly=k),k&&x()},close:x}}function qn(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 o=e.createElement("img");o.src=t.avatar,o.alt="",r.replaceChildren(o)}else{let o=t.label.trim().split(/\s+/).filter(Boolean);r.textContent=(o.length>1?o[0][0]+o[o.length-1][0]:o[0]?.[0]??"").toUpperCase()}return r}function ao(e,t){let n=e.ownerDocument;e.replaceChildren(...t.split(`
4
+ `).map(r=>{let o=n.createElement("div");return o.textContent=r,o}))}function Qa(e){let t=e.options??{};return{avatar:t.avatar===!0,details:t.details===!0,colors:t.colors===!0,opens:t.open!==!1}}function es(e,t,n){return n.options?.create!==!1&&e.canCreate(t)?r=>e.quickCreate(t,r):void 0}var cr=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=tt.en,dialogs:s})=>{let d=n.type==="many2one"?n.relation:"",l=Qa(r),f=l.opens&&!!s&&s.canOpen(d),c=!1,v=io({document:i,id:o,labels:a,search:b=>e.search(t,b,oo+1),shown:oo,pick:b=>e.setValue(t,b),onCommitEmpty:()=>e.setValue(t,null),create:es(e,t,r),placeholder:r.placeholder,more:(b,w)=>{if(!s||c)return[];let L=[];return b&&f&&r.options?.create!==!1&&L.push({label:a.createAndEdit,act:x=>{let R=e.createValues(t);return s.openRecord(d,{name:x,title:n.label,...Object.keys(R).length?{values:R}:{}})}}),w&&L.push({label:a.searchMore,act:()=>s.searchMore({title:n.label,search:(x,R)=>e.search(t,x,R)})}),L}}),m=f?i.createElement("button"):null;m&&(m.type="button",m.className="fd-combo-open",m.textContent="\u2197",m.hidden=!0,m.addEventListener("click",async()=>{let b=e.getState().values[t];if(!b||!s)return;let w=await s.openRecord(d,{recordId:b.id,title:b.label});w&&w.label!==b.label&&e.setValue(t,w)}));let S=i.createElement("button");S.type="button",S.className="fd-combo-clear",S.textContent="\xD7",S.setAttribute("aria-label",lr(a.clear,{label:n.label})),S.addEventListener("click",()=>{e.setValue(t,null),v.input.focus()}),v.element.append(S,...m?[m]:[]);let g=l.avatar?qn(i,null):null;g&&(v.element.prepend(g),v.element.setAttribute("data-avatar",""));let u=l.details?i.createElement("div"):null,y=v.element;return u&&(u.className="fd-link-details",u.hidden=!0,y=i.createElement("div"),y.className="fd-link",y.append(v.element,u)),{element:y,focus:()=>v.input.focus(),update(b){let w=b.value;if(g&&qn(i,w,g),u){let L=w?.details?.trim()??"";Rt(u,!L),u.textContent!==L.replace(/\n/g,"")&&ao(u,L)}c=b.readonly,v.setText(w?.label??""),v.setReadonly(b.readonly),Rt(S,!w||b.readonly),m&&(Rt(m,!w),w&&Ve(m,"aria-label",lr(a.openNamed,{name:w.label}))),Ve(v.input,"aria-invalid",String(b.invalid)),Ve(v.input,"aria-required",String(b.required)),b.describedBy&&Ve(v.input,"aria-describedby",b.describedBy)}}},so=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=tt.en,dialogs:s})=>{let d=n.type==="many2many"?n.relation:"",l=Qa(r),f=()=>e.getState().values[t]??[],c=i.createElement("div");c.className="fd-tags",c.setAttribute("role","group");let v=i.createElement("ul");v.className="fd-chips";let m=io({document:i,id:o,labels:a,search:y=>e.search(t,y,oo+1+f().length),shown:oo,pick:y=>{f().some(b=>b.id===y.id)||e.setValue(t,[...f(),y]),m.input.value=""},exclude:()=>new Set(f().map(y=>y.id)),onEmptyBackspace:()=>{let y=f();y.length&&e.setValue(t,y.slice(0,-1))},create:es(e,t,r),placeholder:r.placeholder,more:(y,b)=>s&&b?[{label:a.searchMore,act:()=>s.searchMore({title:n.label,search:(w,L)=>e.search(t,w,L)})}]:[]}),S=l.opens&&s&&s.canOpen(d)?async y=>{let b=await s.openRecord(d,{recordId:y.id,title:y.label});b&&b.label!==y.label&&e.setValue(t,f().map(w=>w.id===y.id?b:w))}:void 0;c.append(v,m.element);let g=!1,u="";return{element:c,focus:()=>m.input.focus(),update(y){let b=y.value??[],w=JSON.stringify([y.readonly,b]);g=y.readonly,m.setReadonly(g),m.element.hidden=g,m.input.setAttribute("aria-invalid",String(y.invalid)),y.describedBy&&m.input.setAttribute("aria-describedby",y.describedBy),w!==u&&(u=w,ts(v,b,g,a,L=>e.setValue(t,f().filter(x=>x.id!==L.id)),S,l),m.setText(""))}}};function ts(e,t,n,r,o,i,a={}){let s=e.ownerDocument;e.replaceChildren(...t.map(d=>{let l=s.createElement("li");l.className="fd-chip",a.colors&&typeof d.color=="number"&&d.color>=1&&d.color<=11&&l.setAttribute("data-color",String(Math.trunc(d.color))),a.avatar&&l.append(qn(s,d));let f=s.createElement(i?"button":"span");if(f.className="fd-chip-label",f.textContent=d.label,i&&(f.type="button",f.setAttribute("aria-label",lr(r.openNamed,{name:d.label})),f.addEventListener("click",()=>i(d))),l.append(f),!n){let c=s.createElement("button");c.type="button",c.className="fd-chip-remove",c.textContent="\xD7",c.setAttribute("aria-label",lr(r.remove,{name:d.label})),c.addEventListener("click",()=>o(d)),l.append(c)}return l}))}var ri=({form:e,name:t,node:n,id:r,document:o,labels:i=tt.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(b=>b.trim()).filter(b=>b!==""):[],f=()=>l(e.getState().values[t]),c=y=>e.setValue(t,y.length?y.join(`${s} `):null),v=y=>{let b=y.trim(),w=f();b&&!w.some(L=>L.toLowerCase()===b.toLowerCase())&&!(w.length>=a.max)&&c([...w,b])},m=o.createElement("div");m.className="fd-tags",m.setAttribute("role","group");let S=o.createElement("ul");S.className="fd-chips";let g=io({document:o,id:r,labels:i,placeholder:n.placeholder,search:async y=>{let b=new Set(f().map(L=>L.toLowerCase())),w=y.trim().toLowerCase();return d.filter(L=>!b.has(L.toLowerCase())&&L.toLowerCase().includes(w)).map(L=>({id:L,label:L}))},pick:y=>{v(y.label),g.input.value=""},onEmptyBackspace:()=>{let y=f();y.length&&c(y.slice(0,-1))}});g.input.addEventListener("keydown",y=>{y.key!=="Enter"||y.defaultPrevented||g.input.value.trim()===""||(y.preventDefault(),v(g.input.value),g.input.value="",g.close())}),g.input.addEventListener("input",()=>{let y=g.input.value.split(s);if(!(y.length<2)){for(let b of y.slice(0,-1))v(b);g.input.value=y[y.length-1].trimStart()}}),g.input.addEventListener("change",()=>{g.input.value.trim()&&v(g.input.value)}),m.append(S,g.element);let u="";return{element:m,focus:()=>g.input.focus(),update(y){let b=l(y.value);g.setReadonly(y.readonly),g.element.hidden=y.readonly||b.length>=a.max,g.input.setAttribute("aria-invalid",String(y.invalid)),y.describedBy&&g.input.setAttribute("aria-describedby",y.describedBy);let w=JSON.stringify([y.readonly,b]);if(w===u)return;u=w;let L=o.activeElement===g.input;ts(S,b.map(x=>({id:x,label:x})),y.readonly,i,x=>c(f().filter(R=>R!==x.label))),g.setText(""),L&&g.element.hidden&&S.querySelector("li:last-child button")?.focus()}}},oi=({form:e,name:t,id:n,document:r})=>{let o=r.createElement("div");o.id=n,o.className="fd-choices fd-choices-checkbox",o.setAttribute("role","group");let i=[],a={readonly:!1,value:[]},s=()=>{let d=new Set(a.value.map(l=>l.id));for(let{record:l,box:f}of i)f.checked=d.has(l.id),f.disabled=a.readonly};return e.search(t,"",50).then(d=>{i=d.map((l,f)=>{let c=r.createElement("input");c.type="checkbox",c.id=`${n}-${f}`,c.addEventListener("change",()=>{let S=e.getState().values[t]??[];e.setValue(t,c.checked?[...S,l]:S.filter(g=>g.id!==l.id))});let v=r.createElement("label");v.className="fd-choice",v.htmlFor=c.id;let m=r.createElement("span");return m.textContent=l.label,v.append(c,m),o.append(v),{record:l,box:c}}),s()}),{element:o,focus:()=>o.querySelector("input")?.focus(),update(d){a={readonly:d.readonly,value:d.value??[]},s()}}},ii=e=>{let{form:t,name:n,field:r,id:o,document:i,labels:a=tt.en}=e,s=r.type==="reference"?r.models:[],d=i.createElement("div");d.className="fd-reference";let l=i.createElement("select");l.className="fd-input fd-select",l.setAttribute("aria-label",r.label),l.append(i.createElement("option"));for(let v of s){let m=i.createElement("option");m.value=String(v.value),m.textContent=v.label,l.append(m)}let f="";l.addEventListener("change",()=>{f=l.value,t.setValue(n,null)});let c=io({document:i,id:o,labels:a,placeholder:e.node.placeholder,search:v=>f?t.search(n,v,8,{model:f}):Promise.resolve([]),pick:v=>t.setValue(n,{model:f,id:v.id,label:v.label}),onCommitEmpty:()=>t.setValue(n,null)});return d.append(l,c.element),{element:d,focus:()=>f?c.input.focus():l.focus(),update(v){let m=v.value;m&&(f=m.model),l.value=f,l.disabled=v.readonly,c.setText(m?.label??""),c.setReadonly(v.readonly||!f)}}};var ns=e=>String(e).padStart(2,"0");function os(e){let t=Math.round(Math.abs(e)*60);return`${e<0&&t?"-":""}${ns(Math.floor(t/60))}:${ns(t%60)}`}function Xl(e,t="en"){let n=Ut(e.trim(),t);if(n==="")return null;let r=/^(-?)(\d+):(\d{1,2})$/.exec(n);if(r){let o=Number(r[3]);if(o>59)return e.trim();let i=Number(r[2])+o/60;return r[1]?-i:i}if(/^-?(\d+\.?\d*|\.\d+)$/.test(n))return Number(n);if(!/^-?(\d+:?)?\.?$/.test(n))return e.trim()}var rs=new Map;function is(e,t,n){let r=`${e}:${t}:${n}`,o=rs.get(r);return o||(o=new Intl.NumberFormat(e,{style:n,numberingSystem:"latn",minimumFractionDigits:0,maximumFractionDigits:t}),rs.set(r,o)),o}function Zl(e,t="en",n=2){return is(t,n,"percent").format(e)}var as=e=>e.type==="float"?e.digits?.[1]??2:2;function ss(e,t){let{form:n,name:r,node:o,id:i,document:a}=e,s=Se(a),d=s("input",{id:i,type:"text",class:`fd-input fd-number-input ${t.className}`,autocomplete:"off",inputmode:t.inputMode});o.placeholder&&(d.placeholder=o.placeholder);let l=m=>typeof m=="number"?t.show(m):m==null?"":String(m);d.addEventListener("input",()=>{let m=t.parse(d.value);m!==void 0&&n.setValue(r,m)}),d.addEventListener("blur",()=>{d.value=l(n.getState().values[r])});let f=typeof o.options?.suffix=="string"&&o.options.suffix?o.options.suffix:t.unit,c=f?s("span",{class:"fd-unit",id:`${i}-unit2`},f):null,v=c?s("span",{class:"fd-number"},d,c):d;return c&&d.style.setProperty("padding-inline-end",`calc(var(--fd-pad-x) + ${f?.length??0}ch + 4px)`),{element:v,focus:()=>d.focus(),update(m){let S=a.activeElement===d,g=t.parse(d.value);if(!(S&&(g===void 0||g===m.value))){let u=l(m.value);d.value!==u&&(d.value=u)}d.readOnly!==m.readonly&&(d.readOnly=m.readonly),Ve(d,"aria-required",String(m.required)),Je(d,{...m,describedBy:[m.describedBy,c?.id].filter(Boolean).join(" ")})}}}var ds=e=>{let t=e.locale??"en";return ss(e,{show:os,parse:n=>Xl(n,t),inputMode:"text",className:"fd-duration"})},ls=e=>{let t=e.locale??"en",n=as(e.field);return ss(e,{show:r=>is(t,n,"decimal").format(Math.round(r*100*10**n)/10**n),parse(r){let o=Ut(r.trim(),t).replace(/%$/,"");if(o==="")return null;if(/^-?(\d+\.?\d*|\.\d+)$/.test(o))return Math.round(Number(o)/100*1e10)/1e10;if(!/^-?\.?$/.test(o))return r.trim()},unit:"%",inputMode:"decimal",className:"fd-percentage"})};function cs(e,t,n,r,o={}){if(typeof n!="number"||e!=="duration"&&e!=="percentage")return null;let i=typeof o.suffix=="string"&&o.suffix?` ${o.suffix}`:"";return e==="duration"?os(n)+i:Zl(n,r,as(t))}var ai=e=>typeof e?.model=="string"?e.model:"account.analytic.account";function fs(e){return[...new Set(si(e).flatMap(([t])=>t.split(",")))].map(t=>/^\d+$/.test(t)?Number(t):t)}function lo(e,t="en",n){let r=o=>`${ht(o,Number.isInteger(o)?0:2,t)}%`;return si(e).map(([o,i])=>{let a=n?o.split(",").map(s=>n(s)??`#${s}`).join(" \xB7 "):"";return a?`${a} ${r(i)}`:r(i)}).join(n?", ":" \xB7 ")}var si=e=>e&&typeof e=="object"&&!Array.isArray(e)?Object.entries(e).map(([t,n])=>[t,typeof n=="number"?n:Number(n)||0]):[],us=e=>{let{form:t,name:n,node:r,id:o,document:i,labels:a,locale:s="en"}=e,d=Se(i),l=Ce(a,s),f=ai(r.options),c=new Map,v=z=>z.split(",").map(T=>c.get(T)??`#${T}`).join(" \xB7 "),m=z=>`${ht(z,Number.isInteger(z)?0:2,s)}%`,S=d("tbody"),g=d("td",{class:"fd-distribution-total"}),u=d("table",{class:"fd-lines-table fd-distribution-table"},d("thead",{},d("tr",{},d("th",{scope:"col"},l.account),d("th",{scope:"col",class:"fd-distribution-share"},l.share),d("th",{class:"fd-lines-tools"}))),S,d("tfoot",{},d("tr",{class:"fd-lines-totals"},d("td",{},l.total),g,d("td")))),y=d("button",{type:"button",class:"fd-button fd-button-link fd-lines-add fd-distribution-add"},`+ ${l.addAccount}`),b=d("div",{class:"fd-warning fd-distribution-off",role:"status",hidden:""}),w=d("div",{id:o,class:"fd-distribution",role:"group"},d("div",{class:"fd-lines-scroll"},u),y,b),L=[],x=!1;function R(){let z={};for(let T of L)T.key&&(z[T.key]=T.share);t.setValue(n,L.some(T=>T.key)?z:null)}function E(z,T){let W=L.length,D=`${o}-${W}-${Math.random().toString(36).slice(2,7)}`,V={key:z,share:T},I={...t,getState:()=>({...t.getState(),values:{account:V.key?{id:V.key,label:v(V.key)}:null}}),setValue:(j,P)=>{let q=P;V.key=q?String(q.id):"",q&&c.set(String(q.id),q.label),R()},search:(j,P,q)=>t.search(n,P,q,{model:f}),canCreate:()=>!1},B={type:"many2one",label:l.account,relation:f};return V.account=cr({...e,form:I,name:"account",field:B,node:{type:"field",id:`${r.id}.account`,field:"account",options:{create:!1}},id:D}),V.input=d("input",{type:"text",class:"fd-input fd-number-input fd-share",inputmode:"decimal",autocomplete:"off","aria-label":l.share}),V.input.addEventListener("input",()=>{let j=Ut(V.input.value.trim(),s);/^\d+\.?\d*$|^\.\d+$/.test(j)&&(V.share=Number(j),R())}),V.remove=d("button",{type:"button",class:"fd-line-delete","aria-label":l.deleteLine},"\xD7"),V.remove.addEventListener("click",()=>{L=L.filter(j=>j!==V),V.account.destroy?.(),V.element.remove(),R(),N()}),V.element=d("tr",{},d("td",{},d("label",{class:"fd-sr-only",for:D},l.account),V.account.element),d("td",{class:"fd-distribution-share"},d("span",{class:"fd-number"},V.input,d("span",{class:"fd-unit"},"%"))),d("td",{class:"fd-lines-tools"},V.remove)),V}y.addEventListener("click",()=>{let z=Math.max(0,100-L.reduce((W,D)=>W+D.share,0)),T=E("",Math.round(z*100)/100);L.push(T),S.append(T.element),N(),T.account.focus()});let k="";function h(z){let T=[...new Set(z.flatMap(D=>D.split(",")))].filter(D=>!c.has(D));if(!T.length||T.join()===k)return;k=T.join();let W=T.map(D=>/^\d+$/.test(D)?Number(D):D);t.search(n,"",T.length,{model:f,ids:W}).then(D=>{for(let V of D)c.set(String(V.id),V.label);N()},()=>{})}function N(){let z=L.reduce((W,D)=>W+D.share,0);lt(g,m(Math.round(z*100)/100));let T=L.some(W=>W.key)&&Math.abs(z-100)>.001;lt(b,T?De(l.sharesOff,{n:m(Math.round(z*100)/100)}):""),Rt(b,!T),Rt(y,x);for(let W of L){W.account.update({value:W.key?{id:W.key,label:v(W.key)}:null,values:{},readonly:x,required:!1,invalid:!1});let D=ht(W.share,Number.isInteger(W.share)?0:2,s);i.activeElement!==W.input&&W.input.value!==D&&(W.input.value=D),W.input.readOnly=x,x?W.remove.remove():W.remove.isConnected||W.element.lastElementChild?.append(W.remove)}}return{element:w,focus:()=>(L[0]?.input??y).focus(),destroy:()=>L.forEach(z=>z.account.destroy?.()),update(z){x=z.readonly;let T=si(z.value);if(!(T.length===L.filter(D=>D.key).length&&T.every(([D,V],I)=>L.filter(B=>B.key)[I]?.key===D&&L.filter(B=>B.key)[I]?.share===V))){for(let V of L)V.account.destroy?.();let D=L.filter(V=>!V.key);L=T.map(([V,I])=>E(V,I)),L.push(...D.map(V=>E("",V.share))),S.replaceChildren(...L.map(V=>V.element))}h(T.map(([D])=>D)),N()}}};function ps(e){let t=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(e);if(!t)return null;let[,n,r,o,i,a]=t;return new Date(Number(n),Number(r)-1,Number(o),Number(i??0),Number(a??0))}function _n(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 St(e,t,n={},r="en",o){let i=(a,s)=>ht(a,s,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=s=>e.options.find(d=>d.value===s)?.label??String(s);return Array.isArray(t)?t.map(a).join(", "):a(t)}case"integer":return i(Number(t),0);case"float":return i(Number(t),e.digits?.[1]??2);case"monetary":{let a=_n(e,n,o);return a?Fn(Number(t),a,e.digits?.[1]??2,r):i(Number(t),e.digits?.[1]??2)}case"date":{let a=ps(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=ps(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 An(e,t,n={},r="en",o,i={}){return i.widget==="distribution"&&e.type==="json"?lo(t,r):cs(i.widget,e,t,r,i.options)??St(e,t,n,r,o)}var Ql=new Set(["progressbar","priority","dot","color","timer","badge"]);var ec="http://www.w3.org/2000/svg",ms={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 wt(e,t,n){let r=t?n?.[t]??ms[t]:void 0;if(r===void 0)return null;let o=e.createElementNS(ec,"svg");for(let[i,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}))o.setAttribute(i,a);return o.innerHTML=r,o}function Un(e,t,n,r,o){if(n.type==="one2many"&&n.sequenceField)return e.moveLine(t,r,o);let i=[...e.getState().values[t]??[]],a=i.findIndex(s=>s.key===r);a<0||o<0||o>=i.length||o===a||(i.splice(o,0,...i.splice(a,1)),e.setValue(t,i))}var tc=new Set(["integer","float","monetary"]),gs=new Set(["boolean","integer","float","monetary","date","datetime"]),hs=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0;function ys(e,t){return t==="section"?{...e,type:"char"}:{...e,type:"text"}}function co(e,t,n){let r=()=>(e.getState().values[t]??[]).find(o=>o.key===n)?.values??{};return{...e,getState:()=>({...e.getState(),values:r()}),setValue:(o,i)=>e.updateLine(t,n,o,i),search:(o,i,a,s)=>e.searchLine(t,n,o,i,a,s),canCreate:o=>e.canCreateLine(t,o),quickCreate:(o,i)=>e.quickCreateLine(t,o,i,n),createValues:o=>e.createValues(o,{lines:t,key:n})}}function xs(e,t){if(e.type!=="monetary"||!e.currencyField?.startsWith("parent."))return e;let{currencyField:n,...r}=e,o=_n(e,{},t);return o&&/^[A-Z]{3}$/.test(o)?{...r,currency:o}:r}async function fo(e,t,n,r,o,i){let a=e.page.fields[t],s=()=>e.getState().values[t]??[],d=v=>e.setValue(t,s().map(m=>m.key===r.key?{...m,values:{...m.values,...v}}:m));if(n.lineOpens==="record"&&r.id!==void 0&&o.canOpen(a.relation)){let v=await o.openRecord(a.relation,{recordId:r.id,title:a.label,withValues:!0}),m=Object.fromEntries(Object.entries(v?.values??{}).filter(([S])=>S in a.fields&&S!==a.sequenceField));Object.keys(m).length&&d(m);return}let l=Object.fromEntries(Object.entries(a.fields).filter(([v])=>v!==a.lineKinds?.field&&v!==a.sequenceField).map(([v,m])=>[v,xs(m,e.getState().values)])),f=e.getState(),c=await o.editValues({title:a.label,fields:l,values:r.values,readonly:i,recompute:v=>e.previewLine(t,r.key,v),parent:{values:f.values,fields:e.page.fields,id:f.recordId},...n.lineForm?{layout:n.lineForm.children}:{}});c&&d(c)}var di=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=tt.en,locale:s,dialogs:d,widgets:l})=>{let f=n,c=f.lineKinds,v=Se(i),m=r.options??{},S=hs(m.min)??0,g=hs(m.max)??1/0,u=Y=>typeof m[Y]=="string"&&m[Y].trim()?m[Y]:null,y=new Map,b=!!(r.cells||r.rowTones||r.rowBold!==void 0||r.rowButtons||r.lineDelete!==void 0),w=(r.columns??Object.keys(f.fields)).filter(Y=>f.fields[Y]&&f.fields[Y].type!=="one2many"&&Y!==c?.field&&Y!==f.sequenceField&&r.optionalColumns?.[Y]!=="hide"),L=i.createElement("div");L.className="fd-lines",L.id=o,r.cards&&(L.dataset.cards=r.cards),r.fit&&(L.dataset.fit=r.fit),L.setAttribute("role","group");let x=i.createElement("div");x.className="fd-lines-scroll";let R=i.createElement("table");R.className="fd-lines-table";let E=i.createElement("thead"),k=i.createElement("tr"),h=!!r.selectedButtons?.length,N=new Set,z=h?v("input",{type:"checkbox",class:"fd-checkbox fd-line-pick fd-line-pick-all","aria-label":a.chooseAllLines}):null;k.append(v("th",{class:"fd-lines-grip"},...z?[z]:[]));for(let Y of w){let re=i.createElement("th");re.scope="col",re.dataset.column=Y,re.textContent=f.fields[Y].label;let ue=r.cells?.[Y]?.width;ue?re.style.width=`${ue}ch`:gs.has(f.fields[Y].type)&&(re.dataset.fit=f.fields[Y].type),y.set(Y,re),k.append(re)}let T=i.createElement("th");T.className="fd-lines-tools",k.append(T),E.append(k);let W=i.createElement("tbody");R.append(E,W);let D=(r.totals??[]).filter(Y=>w.includes(Y)),V=new Map,I=new Map;if(D.length){let Y=i.createElement("tfoot"),re=i.createElement("tr");re.className="fd-lines-totals",re.append(i.createElement("td")),w.forEach((ue,Ee)=>{let Oe=i.createElement("td");Oe.dataset.column=ue,I.set(ue,Oe),D.includes(ue)?V.set(ue,Oe):Ee===0&&(Oe.textContent=a.total),re.append(Oe)}),re.append(i.createElement("td")),Y.append(re),R.append(Y)}x.append(R);let B=i.createElement("div");B.className="fd-lines-adds";let j=(Y,re,ue)=>{let Ee=i.createElement("button");Ee.type="button",Ee.className="fd-button fd-button-link fd-lines-add",Ee.dataset.add=ue,Ee.textContent=`+ ${Y}`,Ee.addEventListener("click",()=>{Me=e.addLine(t,re);let Oe=xe.get(Me);Oe&&(Oe.cells[0]?.widget.focus(),Me=null)}),B.append(Ee)};j(u("addLabel")??a.addLine,{},"line"),c&&(j(u("addSectionLabel")??a.addSection,{[c.field]:c.section??"section"},"section"),j(u("addNoteLabel")??a.addNote,{[c.field]:c.note??"note"},"note"));let P=(r.controlButtons??[]).map(Y=>{let re=wt(i,Y.icon),ue=v("button",{type:"button",class:"fd-button fd-button-link fd-lines-add fd-lines-control","data-node":Y.id},...re?[re]:[],Y.label);return ue.addEventListener("click",()=>{$e(ue,()=>e.runAction(Y.id))}),B.append(ue),{id:Y.id,button:ue}}),q=v("span",{class:"fd-lines-chosen-count",role:"status"}),$=(r.selectedButtons??[]).map(Y=>{let re=wt(i,Y.icon),ue=v("button",{type:"button",class:`fd-button fd-button-${Y.style??"secondary"} fd-lines-chosen-button`,"data-node":Y.id},...re?[re]:[],Y.label);return ue.addEventListener("click",()=>{$e(ue,()=>e.runLinesAction(r.id,Y.id,Q().filter(Ee=>N.has(Ee.key)).map(Ee=>Ee.key)))}),{id:Y.id,button:ue}}),te=h?v("div",{class:"fd-lines-chosen",hidden:""},q,...$.map(Y=>Y.button)):null,X=u("emptyLabel"),G=X?v("div",{class:"fd-help fd-lines-empty"},X):null,U=ro(v,a),ne=v("div",{class:"fd-sr-only",role:"status"});L.append(...te?[te]:[],x,...G?[G]:[],B,U.element,ne);async function $e(Y,re){if(!Y.hasAttribute("aria-busy")){Y.setAttribute("aria-busy","true");try{await re()}finally{Y.removeAttribute("aria-busy")}}}function Le(){if(!te||!z)return;let Y=Q().filter(re=>!mt(f,re.values));for(let re of[...N])Y.some(ue=>ue.key===re)||N.delete(re);te.hidden=ie||N.size===0,q.textContent=De(a.linesChosen,{n:N.size});for(let{id:re,button:ue}of $)ue.hidden=e.node(re).invisible;z.checked=Y.length>0&&N.size===Y.length,z.indeterminate=N.size>0&&N.size<Y.length,z.disabled=ie||!Y.length;for(let[re,ue]of xe)ue.pick&&(ue.pick.checked=N.has(re),ue.pick.disabled=ie)}z?.addEventListener("change",()=>{let Y=Q().filter(re=>!mt(f,re.values));if(z.checked)for(let re of Y)N.add(re.key);else N.clear();Le()});let xe=new Map,Me=null,ie=!1,K=null,Q=()=>e.getState().values[t]??[];for(let Y=Q().length;Y<S;Y++)e.addLine(t);function me(Y,re){let ue=Q().findIndex(Qe=>Qe.key===Y);if(ie||re===ue||re<0||re>=Q().length)return;let Ee=i.activeElement,Oe=Q()[ue].values[w[0]];Un(e,t,f,Y,re),Ee&&Ee!==i.activeElement&&Ee.focus(),ne.textContent=De(a.movedTo,{label:typeof Oe=="string"&&Oe.trim()?Oe:De(a.lineN,{n:ue+1}),n:re+1,total:Q().length})}function Re(Y,re,ue){let Ee=[...W.children],Oe=Ee.indexOf(Y),Qe=Ee.filter(fe=>fe!==Y),ze=Y.getBoundingClientRect(),we=Qe.map(fe=>{let ge=fe.getBoundingClientRect();return ge.top+ge.height/2}),Ne=Oe,le=!1,se=fe=>{fe.key==="Escape"&&(fe.preventDefault(),de())};function de(){for(let fe of Ee)fe.style.transform="";Y.classList.remove("fd-line-lifted"),W.classList.remove("fd-lines-dragging"),i.removeEventListener("keydown",se,!0),le=!1}return{follow(fe){let ge=fe-ue;if(!le){if(Math.abs(ge)<4||ie)return;le=!0,Y.classList.add("fd-line-lifted"),W.classList.add("fd-lines-dragging"),i.addEventListener("keydown",se,!0)}Y.style.transform=`translateY(${ge}px)`;let Ye=ze.top+ze.height/2+ge;Ne=we.filter(st=>st<Ye).length,Qe.forEach((st,Ft)=>{st.style.transform=Ft>=Oe&&Ft<Ne?`translateY(${-ze.height}px)`:Ft<Oe&&Ft>=Ne?`translateY(${ze.height}px)`:""})},drop(){let fe=le&&Ne!==Oe;de(),fe&&me(re,Ne)},settle:de}}W.addEventListener("keydown",Y=>{let re=Y.target.closest("tr")?.dataset.line;!re||!Y.altKey||Y.key!=="ArrowUp"&&Y.key!=="ArrowDown"||(Y.preventDefault(),me(re,Q().findIndex(ue=>ue.key===re)+(Y.key==="ArrowUp"?-1:1)))});function oe(Y,re,ue,Ee,Oe=1){let Qe=`${o}-${re.key}-${ue}`,ze=mt(f,re.values)?void 0:r.cells?.[ue],we=ze?.badge?{widget:"badge"}:ze?.widget?{widget:ze.widget,...ze.options?{options:ze.options}:{}}:ze?.options?{options:ze.options}:{},Ne={type:"field",id:`${r.id}.${re.key}.${ue}`,field:ue,...we},le=Ot({form:co(e,t,re.key),name:ue,field:Ee,node:Ne,id:Qe,document:i,labels:a,locale:s,dialogs:d,widgets:l}),se=i.createElement("td");se.colSpan=Oe,se.dataset.column=ue,gs.has(Ee.type)&&(se.dataset.fit=Ee.type),se.dataset.label=Ee.label;let de=i.createElement("label");de.className="fd-sr-only",de.htmlFor=Qe,de.textContent=Ee.label;let fe=i.createElement("div");return fe.className="fd-cell-error",fe.hidden=!0,se.append(de,le.element,fe),Y.append(se),{name:ue,def:Ee,widget:le,error:fe,td:se}}function ve(Y){let re=i.createElement("tr");re.dataset.line=Y.key;let ue=mt(f,Y.values);ue&&(re.className=`fd-line-${ue}`);let Ee=v("span",{class:"fd-line-grip fd-rank-grip","aria-hidden":"true"}),Oe=null;Ee.addEventListener("pointerdown",de=>{ie||de.button!==0||(de.preventDefault(),Ee.setPointerCapture?.(de.pointerId),Oe=Re(re,Y.key,de.clientY))}),Ee.addEventListener("pointermove",de=>Oe?.follow(de.clientY)),Ee.addEventListener("pointerup",()=>{Oe?.drop(),Oe=null}),Ee.addEventListener("pointercancel",()=>{Oe?.settle(),Oe=null});let Qe=h&&!ue?v("input",{type:"checkbox",class:"fd-checkbox fd-line-pick"}):null;Qe?.addEventListener("change",()=>{Qe.checked?N.add(Y.key):N.delete(Y.key),Le()}),re.append(v("td",{class:"fd-lines-grip"},...Qe?[v("span",{class:"fd-line-lead"},Qe,Ee)]:[Ee]));let ze=ue&&c?[oe(re,Y,c.text,ys(f.fields[c.text],ue),w.length)]:w.map(de=>oe(re,Y,de,f.fields[de])),we=i.createElement("td");we.className="fd-lines-tools";let Ne=i.createElement("button");Ne.type="button",Ne.className="fd-line-delete",Ne.textContent="\xD7",Ne.setAttribute("aria-label",a.deleteLine),Ne.addEventListener("click",()=>{let de=Q().findIndex(ge=>ge.key===Y.key),fe=Q()[de]?.values??{};if(m.confirmDelete!==!0||ze.every(ge=>_t(ge.def,fe[ge.name])||fe[ge.name]===!1))return e.removeLine(t,Y.key);U.ask(De(a.removeAsk,{name:De(a.lineN,{n:de+1})}),ge=>{ge&&e.removeLine(t,Y.key);let Ye=Q(),st=Ye[ge?Math.min(de,Ye.length-1):de];(st?xe.get(st.key)?.remove:B.querySelector("button"))?.focus()})});let le=new Map;for(let de of ue?[]:r.rowButtons??[]){let fe=wt(i,de.icon),ge=v("button",{type:"button",class:`fd-button fd-button-link fd-line-button${fe?" fd-line-button-icon":""}`,"data-row-button":de.id,"aria-label":de.label,title:de.label});ge.append(fe??de.label),ge.addEventListener("click",async()=>{if(!ge.hasAttribute("aria-busy")){ge.setAttribute("aria-busy","true");try{await e.runRowAction(r.id,de.id,Y.key)}finally{ge.removeAttribute("aria-busy")}}}),le.set(de.id,ge),we.append(ge)}let se=m.copy===!0&&!ue?v("button",{type:"button",class:"fd-line-copy"},"\u29C9"):null;if(se?.addEventListener("click",()=>{let de=Q(),fe=de.findIndex(st=>st.key===Y.key);if(ie||fe<0||de.length>=g)return;let ge={...de[fe].values};f.sequenceField&&delete ge[f.sequenceField];let Ye=e.addLine(t,ge);Un(e,t,f,Ye,fe+1),xe.get(Ye)?.cells[0]?.widget.focus()}),se&&we.append(se),(r.lineOpens||r.lineForm)&&d&&!ue){let de=v("button",{type:"button",class:"fd-line-open","aria-label":a.openLine,title:a.openLine},"\u2197");de.addEventListener("click",()=>{let fe=Q().find(ge=>ge.key===Y.key);fe&&fo(e,t,r,fe,d,ie)}),we.append(de)}return we.append(Ne),re.append(we),{element:re,kind:ue,cells:ze,remove:Ne,grip:Ee,buttons:le,pick:Qe,copy:se}}return{element:L,focus:()=>(W.querySelector("input, select, textarea")??B.querySelector("button"))?.focus(),update(Y){ie=Y.readonly;let re=Y.value??[];B.hidden=ie||re.length>=g,ie&&(U.element.hidden=!0),G&&(G.hidden=re.length>0);let ue=e.getState().errors,Ee=new Set(b?w.filter(we=>e.columnHidden(r.id,we)):[]);for(let[we,Ne]of y)Ne.hidden=Ee.has(we);for(let[we,Ne]of I)Ne.hidden=Ee.has(we);let Oe=re.map(we=>we.key).join(" "),Qe=Oe!==K;K=Oe;for(let[we,Ne]of Qe?y:new Map){if(r.cells?.[we]?.width)continue;let le=f.fields[we];if(Ne.dataset.fit){if(!tc.has(le.type))continue;let fe=re.reduce((ge,Ye)=>mt(f,Ye.values)?ge:Math.max(ge,An(le,Ye.values[we],Ye.values,s).length),0);Ne.style.setProperty("--fd-fit-need",`${fe+4}ch`);continue}let se=re.reduce((fe,ge)=>mt(f,ge.values)?fe:Math.max(fe,An(le,ge.values[we],ge.values,s).length),0),de=le.type==="many2one"?5:0;Ne.style.width=`${Math.min(Math.max(se,Math.min(le.label.length,10),6),32)+4+de}ch`,Ne.style.minWidth=`${Math.min(Math.max(se,6),14)+4}ch`}let ze=new Set(re.map(we=>we.key));for(let[we,Ne]of xe)ze.has(we)||(Ne.element.remove(),xe.delete(we));re.forEach((we,Ne)=>{let le=xe.get(we.key);le&&le.kind!==mt(f,we.values)&&(le.element.remove(),le=void 0),le||(le=ve(we),xe.set(we.key,le)),W.children[Ne]!==le.element&&W.insertBefore(le.element,W.children[Ne]??null);let se=b?e.lineState(r.id,we.key):null;le.remove.hidden=ie||re.length<=S||se?.deletable===!1,le.grip.hidden=ie;let de=De(a.lineN,{n:Ne+1});le.pick?.setAttribute("aria-label",De(a.chooseLine,{name:de})),le.copy&&(le.copy.setAttribute("aria-label",De(a.copy,{name:de})),le.copy.title=le.copy.getAttribute("aria-label"),le.copy.hidden=ie||re.length>=g),ie?le.remove.remove():le.remove.isConnected||le.element.lastElementChild?.append(le.remove),bs(le.element,"tone",se?.tone),le.element.classList.toggle("fd-line-bold",!!se?.bold);for(let[fe,ge]of le.buttons)ge.hidden=!se?.buttons[fe];le.kind&&(le.cells[0].td.colSpan=w.length-Ee.size);for(let fe of le.cells){let ge=ue[`${t}.${we.key}.${fe.name}`],Ye=le.kind?void 0:se?.cells[fe.name];le.kind||(fe.td.hidden=Ee.has(fe.name)),fe.widget.element.hidden=!!Ye?.invisible,bs(fe.td,"tone",Ye?.tone),fe.td.classList.toggle("fd-cell-bold",!!Ye?.bold),fe.error.hidden=!ge,fe.error.textContent=ge??"",fe.widget.update({value:we.values[fe.name],values:we.values,parent:Y.values,readonly:ie||fe.def.readonly===!0||fe.def.compute!==void 0||!!Ye?.readonly,required:fe.def.required===!0||!!Ye?.required,invalid:!!ge})}});for(let[we,Ne]of V){let le=re.filter(se=>!mt(f,se.values)).reduce((se,de)=>se+Number(de.values[we]??0),0);Ne.textContent=An(f.fields[we],le,re[0]?.values??{},s,Y.values,r.cells?.[we])}for(let{id:we,button:Ne}of P)Ne.hidden=e.node(we).invisible;Le(),Me&&xe.has(Me)&&(xe.get(Me)?.cells[0]?.widget.focus(),Me=null)}}};function bs(e,t,n){n?e.dataset[t]=n:delete e.dataset[t]}var nc='a[href], button, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';function Kt(e,t){if(t.key!=="Tab")return;let n=[...e.querySelectorAll(nc)].filter(a=>!a.closest("[hidden], [inert]")&&!a.disabled);if(!n.length)return;let r=n[0],o=n[n.length-1],i=e.ownerDocument.activeElement;(t.shiftKey?i===r||!e.contains(i):i===o)&&(t.preventDefault(),(t.shiftKey?o:r).focus())}var po=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let o=String(r.result??"");t({name:e.name,type:e.type,size:e.size,data:o.slice(o.indexOf(",")+1)})},r.onerror=()=>n(r.error),r.readAsDataURL(e)}),ws=e=>(/\.(\w{1,5})$/.exec(e)?.[1]??"").toUpperCase();function uo(e){let t=`${e.type} ${ws(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 rc=e=>/^text\/|json|xml|csv/.test(e.type),li=e=>e.data?`data:${e.type};base64,${e.data}`:e.url??"",ks=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),vs=(e,t)=>e("span",{class:"fd-file-icon","data-kind":uo(t),"aria-hidden":"true"},ws(t.name)||"?"),oc={cards:'<path d="M3 3h8v8H3zM13 3h8v8h-8zM3 15h8M13 15h8M3 19h5M13 19h5"/>',thumbnails:'<path d="M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"/>'},ic=(e,t)=>e("span",{class:"fd-file-name",dir:"auto",title:t},e("span",{},t.slice(0,-9)),t.slice(-9));function ac(e,t){let n=t.length/2,[r,o]=[Math.round(n),n/2];for(let a=t.indexOf(" ");a>=0;a=t.indexOf(" ",a+1))Math.abs(a+1-n)<o&&([r,o]=[a+1,Math.abs(a+1-n)]);let i=/^\P{L}*[\p{sc=Arabic}\p{sc=Hebrew}]/u.test(t);return e("span",{class:"fd-file-name",dir:i?"rtl":"ltr",title:t},e("span",{},t.slice(0,r)),e("span",{dir:i?"ltr":"rtl"},e("bdi",{},t.slice(r))))}function Ss(e){return({form:t,name:n,field:r,node:o,id:i,document:a,labels:s,locale:d="en",preferences:l})=>{let f=r,c=Ce(s,d),v=Lt[d]??Lt.en,m=Se(a),S=f.multiple===!0,g=S?f.maxFiles??1/0:1,u=e==="image",y=String(o.options?.files??(u?"thumbnails":"list")),b=y==="thumbnails"?y:"cards",w=o.options?.filesSwitch===!0,L=`${t.page.id}.${o.id}.files`,x=w?l?.get(L):null,R=o.options?.camera,E=f.type==="binary"?f.accept:["image/*"],k=m("div"),h=m("input",{type:"file",id:i,class:"fd-sr-only",accept:E?.join(","),capture:R?R==="user"?"user":"environment":void 0});h.multiple=S;let N=[!u&&E?ar(E,v.or):"",f.maxSize?_e(S?c.upToEach:c.upToSize,{size:en(f.maxSize)}):"",S&&f.maxFiles?_e(c.upToFiles,{max:f.maxFiles}):""].filter(Boolean),z=m("label",{class:"fd-file-pick",for:i},m("span",{class:"fd-button"},S?u?c.addPhotos:c.addFiles:u?c.uploadImage:c.upload),m("span",{class:"fd-help"},S?c.dropThem:c.dropHere)),T=m("span",{class:"fd-help fd-file-limits"},N.join(" \xB7 ")),W=S?m("span",{class:"fd-help fd-file-count"}):null,D=m("ul",{class:"fd-files",role:"list"}),V=m("button",{type:"button",class:"fd-button fd-button-link"},c.replace);V.addEventListener("click",()=>h.click());let I=ro(m,c),B=m("div",{class:"fd-help fd-file-note",role:"status"}),j=(ie,K)=>{let Q=m("button",{type:"button","data-view":ie},wt(a,ie,oc),K);return Q.addEventListener("click",()=>(X(ie),l?.set(L,ie))),Q},P=w?m("div",{class:"fd-file-views",role:"group","aria-label":c.showFilesAs},j("list",c.asList),j(b,b==="cards"?c.asCards:c.asThumbnails)):null,q=W||P?m("div",{class:"fd-file-bar"},...W?[W]:[],...P?[P]:[]):null,$=[h,z,...N.length?[T]:[]];k.append(...q?[q]:[],D,V,I.element,B);let te=y;function X(ie){te=ie;let K=ie!=="list";k.className=`fd-file fd-file-${e} fd-files-${ie==="thumbnails"?"thumbs":ie}`,z.classList.toggle("fd-image-pick",K),K?D.after(...$):(q??D).before(...$),P?.querySelectorAll("button").forEach(Q=>Q.setAttribute("aria-pressed",String(Q.dataset.view===ie))),xe()}let G=!1,U=[],ne,$e=ie=>B.replaceChildren(...ie.map(K=>m("div",{},K))),Le=async ie=>{if(G||!ie.length)return;let K=[],Q=[],me=0;for(let oe of ie){let ve=ir(f,oe,v)??(S&&[...U,...K].some(Y=>Y.name===oe.name)?_e(c.alreadyAdded,{name:oe.name}):void 0);ve?Q.push(ve):(S?U.length:0)+K.length<g?K.push(oe):me++}if(me&&S&&Q.push(_e(c.tooMany,{max:g,n:me})),$e(Q),!K.length)return;let Re=await Promise.all(K.map(po));t.setValue(n,S?[...U,...Re]:Re[0])};h.addEventListener("change",()=>{Le([...h.files??[]]),h.value=""}),k.addEventListener("dragover",ie=>{G||(ie.preventDefault(),k.classList.add("fd-dragging"))}),k.addEventListener("dragleave",()=>k.classList.remove("fd-dragging")),k.addEventListener("drop",ie=>{ie.preventDefault(),k.classList.remove("fd-dragging"),Le([...ie.dataTransfer?.files??[]])}),D.addEventListener("click",ie=>{let K=ie.target.closest("button"),Q=Number(K?.dataset.at);if(K){if(K.classList.contains("fd-file-open"))return Me(Q,K);I.ask(_e(c.removeAsk,{name:U[Q].name}),me=>{let Re=U[Q];me&&(t.setValue(n,S?U.filter((oe,ve)=>ve!==Q):null),$e([_e(c.removed,{name:Re.name})])),(D.querySelectorAll(".fd-file-remove")[me?Math.min(Q,U.length-1):Q]??(z.hidden?V:h)).focus()})}});function xe(){D.replaceChildren(...U.map((ie,K)=>m("li",{class:"fd-file-item"},m("button",{type:"button",class:"fd-file-open","data-at":String(K),"aria-haspopup":"dialog","aria-label":`${ie.name}, ${en(ie.size)}`},...[uo(ie)==="image"&&li(ie)?m("img",{class:"fd-file-thumb",src:li(ie),alt:""}):vs(m,ie)].map(Q=>te==="cards"?m("span",{class:"fd-file-picture"},Q):Q),(te==="cards"?ac:ic)(m,ie.name),m("span",{class:"fd-file-size"},en(ie.size))),...G?[]:[m("button",{type:"button",class:"fd-file-remove","data-at":String(K),"aria-label":_e(c.remove,{name:ie.name})},"\xD7")])))}X(x==="list"||x===b?x:y===b?y:"list");function Me(ie,K){let Q=U,me="",Re=m("h2",{id:`${i}-view`,class:"fd-form-dialog-title"}),oe=m("span",{class:"fd-help"}),ve=(le,se,de)=>{let fe=m("button",{type:"button",class:"fd-button fd-file-step","aria-label":se},de);return fe.hidden=Q.length<2,fe.addEventListener("click",()=>we(ie+le)),fe},Y=m("a",{class:"fd-button"},c.download),re=m("button",{type:"button",class:"fd-dialog-close","aria-label":c.close},"\xD7"),ue=m("div",{class:"fd-file-viewer-body"}),Ee=m("div",{class:"fd-form-dialog fd-file-viewer",role:"dialog","aria-modal":"true","aria-labelledby":Re.id,tabindex:"-1"},m("div",{class:"fd-form-dialog-head"},Re,oe,ve(-1,c.previous,"\u2039"),ve(1,c.next,"\u203A"),Y,re),ue),Oe=m("div",{class:"fd-dialog-backdrop"},Ee),Qe=()=>me.startsWith("blob:")&&URL.revokeObjectURL(me),ze=le=>m("div",{class:"fd-file-none"},vs(m,le),m("strong",{},le.name),en(le.size),m("p",{},c.noPreview));function we(le){ie=(le+Q.length)%Q.length;let se=Q[ie];Qe();let de=se.data?ks(se.data):null;me=de?URL.createObjectURL(new Blob([de],{type:se.type})):se.url??"",Re.textContent=se.name,oe.replaceChildren(m("span",{class:"fd-file-size"},en(se.size)),Q.length>1?` \xB7 ${_e(c.fileAt,{n:ie+1,total:Q.length})}`:""),Y.href=me,Y.download=se.name;let fe=uo(se);if(fe==="image")return ue.replaceChildren(m("img",{src:me,alt:se.name}));if(fe==="pdf")return ue.replaceChildren(m("iframe",{src:me,title:se.name}));if(!rc(se))return ue.replaceChildren(ze(se));let ge=m("pre",{tabindex:"0"});ue.replaceChildren(ge),(de?Promise.resolve(new TextDecoder().decode(de.subarray(0,2e5))):fetch(me).then(Ye=>Ye.text())).then(Ye=>ge.textContent=Ye.slice(0,2e5),()=>ge.replaceWith(ze(se)))}let Ne=()=>{Qe(),Oe.remove(),(K.isConnected?K:D.querySelectorAll(".fd-file-open")[ie])?.focus()};re.addEventListener("click",Ne),Oe.addEventListener("click",le=>le.target===Oe&&Ne()),Ee.addEventListener("keydown",le=>{let se={ArrowLeft:-1,ArrowRight:1}[le.key];le.key==="Escape"?Ne():se&&Q.length>1&&le.target.tagName!=="PRE"?we(ie+(It(k)?-se:se)):Kt(Ee,le)}),we(ie),(k.closest(".fd-form")??a.body).append(Oe),Ee.focus()}return{element:k,focus:()=>(D.querySelector("button")??(z.hidden?V:h)).focus(),update(ie){G=ie.readonly;let K=ie.value;U=Array.isArray(K)?K:K?[K]:[];let Q=U.length>=g;Rt(z,Q||G),Rt(T,G),h.disabled=G,h.hidden=z.hidden,Rt(V,S||!U.length||G),q&&Rt(q,!U.length),W&&lt(W,U.length?S&&f.maxFiles?_e(c.fileCountOf,{n:U.length,max:f.maxFiles}):U.length===1?c.oneFile:_e(c.fileCount,{n:U.length}):""),Je(h,ie),!(ne===K&&D.dataset.readonly===String(G))&&(ne=K,D.dataset.readonly=String(G),xe())}}}}var fr=Ss("binary"),ci=Ss("image");function fi(e,t){let n=uo(t);if(n!=="image"&&n!=="pdf")return null;let r=t.data?URL.createObjectURL(new Blob([ks(t.data)],{type:t.type})):li(t),o=e.createElement(n==="image"?"img":"iframe");return o.setAttribute("src",n==="pdf"?`${r}#view=FitH&navpanes=0`:r),o.setAttribute(n==="image"?"alt":"title",t.name),o.setAttribute("data-kind",n),{element:o,url:r,free:()=>{r.startsWith("blob:")&&URL.revokeObjectURL(r)}}}var Es=new Map;function Ls(e,t){let n=Es.get(t);return n||(n=new Intl.NumberFormat(t,{style:"percent",maximumFractionDigits:0,numberingSystem:"latn"}),Es.set(t,n)),n.format(e/100)}var ur=e=>{let{field:t,node:n,id:r,document:o,locale:i="en"}=e,a=n.options??{},s=(b,w)=>{let L=a[b]??t[b];return typeof L=="number"?L:w},d=s("min",0),l=s("max",100),f=typeof a.maxField=="string"?a.maxField:null,c=typeof a.color=="string"?a.color:"auto",v=a.showPercent!==!1,m=o.createElement("div");m.className="fd-progressbar",m.setAttribute("role","progressbar");let S=o.createElement("div");S.className="fd-progressbar-fill";let g=o.createElement("span");g.className="fd-progressbar-text",m.append(S,g);let u=null,y=m;return a.editable===!0?(u=Ot({...e,node:{...n,widget:void 0}}),m.setAttribute("aria-hidden","true"),y=o.createElement("div"),y.className="fd-progressbar-edit",y.append(m,u.element)):(m.id=r,m.setAttribute("aria-label",n.label??t.label)),{element:y,focus:()=>u?.focus(),update(b){let w=typeof b.value=="number"?b.value:0,L=f?Number(b.values[f]??0):l,x=L>d?Math.min(100,Math.max(0,(w-d)/(L-d)*100)):0,R=Math.round(x*10)/10;S.style.width=`${R}%`,m.setAttribute("aria-valuenow",String(w)),m.setAttribute("aria-valuemin",String(d)),m.setAttribute("aria-valuemax",String(L)),m.setAttribute("aria-valuetext",Ls(x,i)),g.textContent=v?Ls(x,i):"",m.dataset.tone=c!=="auto"?c:x<30?"danger":x<70?"warning":"success",u?.update(b)}}};function Rs(e){return e==null?"":typeof e=="object"&&"label"in e?e.label:String(e)}var pr=({field:e,node:t,id:n,document:r,locale:o="en"})=>{let i=t.options??{},a=f=>typeof i[f]=="string"?i[f]:"",s=f=>typeof i[f]=="string"?i[f]: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:f,values:c}){if(f==null||f===""){l.textContent="";return}let v=d!==null&&typeof f=="number"?ht(f,d,o):mo(f,e),m=s("prefixField"),S=s("suffixField"),g=m?Rs(c[m]):a("prefix"),u=S?Rs(c[S]):a("suffix");l.textContent=[g,v,u].filter(y=>y!=="").join(" ")}}};function sc(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 go=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=tt.en,locale:s="en"})=>{let d=r.options??{},l=d.clickable===!0,f=Array.isArray(d.visibleStates)?d.visibleStates:null,c=typeof d.durationsField=="string"?d.durationsField:null,v=d.fold===!0,m=d.saves===!0,S=i.createElement("ol");S.className="fd-statusbar",S.id=o,S.setAttribute("aria-label",n.label);let g=W=>W&&typeof W=="object"&&"id"in W?`id:${String(W.id)}`:`v:${String(W)}`,u=W=>W&&typeof W=="object"&&"id"in W?String(W.id):String(W),y=n.type==="selection"?n.options.map(W=>({key:g(W.value),label:W.label,value:W.value,folded:!1})):[],b=[],w=W=>W.forEach(D=>"any"in D?w(D.any):"all"in D?w(D.all):D.valueFrom&&b.push(D.valueFrom));n.type==="many2one"&&w(n.filter??[]);let L=n.type==="selection"?"":null,x=0,R={value:void 0,readonly:!1,durations:{}},E="",k=!1,h=W=>{e.setValue(t,W.value),m&&e.settled().then(()=>e.save())};function N(){let{value:W,readonly:D,durations:V}=R,I=S.contains(i.activeElement)?i.activeElement.dataset.key:void 0,B=W==null?null:g(W),j=y.filter(U=>!f||f.some(ne=>g(ne)===U.key)||U.key===B);B&&!j.some(U=>U.key===B)&&W&&typeof W=="object"&&(j=[...j,{key:B,label:W.label,value:W,folded:!1}]);let P=v?j.filter(U=>U.folded&&U.key!==B):[];j=j.filter(U=>!P.includes(U));let q=j.map(U=>c?Number(V[u(U.value)]??0):0),$=JSON.stringify([j.map(U=>[U.key,U.label]),P.map(U=>U.key),q,B,D,k]);if($===E)return;E=$;let te=j.map((U,ne)=>{let $e=i.createElement("span");$e.textContent=U.label;let Le=i.createElement(l?"button":"span");if(Le instanceof HTMLButtonElement&&(Le.type="button",Le.disabled=D,Le.dataset.key=U.key,Le.addEventListener("click",()=>h(U))),Le.append($e),q[ne]>0){let Me=i.createElement("small");Me.className="fd-step-time",Me.textContent=sc(q[ne],s),Le.title=a.timeInStep.replace("{time}",Me.textContent),Le.append(Me)}U.key===B&&Le.setAttribute("aria-current","step");let xe=i.createElement("li");return xe.append(Le),xe});P.length&&te.push(z(P,D)),S.replaceChildren(...te);let X=S.querySelector(".fd-step-menu:not([hidden])"),G=X?.previousElementSibling;if(X&&G){let U=G.getBoundingClientRect(),ne=i.defaultView,$e=getComputedStyle(S).direction==="rtl";X.style.top=`${U.bottom+4}px`,$e?X.style.left=`${U.left}px`:X.style.right=`${Math.max(0,(ne?.innerWidth??U.right)-U.right)}px`}I&&[...S.querySelectorAll("button")].find(U=>U.dataset.key===I)?.focus()}function z(W,D){let V=i.createElement("li");V.className="fd-step-more";let I=i.createElement("button");I.type="button",I.dataset.key="more",I.setAttribute("aria-haspopup","menu"),I.setAttribute("aria-expanded",String(k)),I.setAttribute("aria-label",a.moreSteps),I.title=a.moreSteps;let B=i.createElement("span");B.textContent="\u22EF",B.setAttribute("aria-hidden","true"),I.append(B);let j=i.createElement("div");j.className="fd-step-menu",j.setAttribute("role","menu"),j.hidden=!k;for(let P of W){let q=i.createElement("button");q.type="button",q.setAttribute("role","menuitem"),q.textContent=P.label,q.disabled=D||!l,q.addEventListener("click",()=>{k=!1,h(P),N()}),j.append(q)}return I.addEventListener("click",()=>{k=!k,N(),k&&S.querySelector(".fd-step-menu button:not([disabled])")?.focus()}),j.addEventListener("keydown",P=>{P.key==="Escape"&&(P.stopPropagation(),k=!1,N(),S.querySelector(".fd-step-more > button")?.focus())}),V.append(I,j),V}let T=W=>{k&&!S.contains(W.target)&&(k=!1,N())};return i.addEventListener("pointerdown",T),i.addEventListener("scroll",T,!0),{element:S,focus:()=>S.querySelector("button:not([disabled])")?.focus(),destroy(){i.removeEventListener("pointerdown",T),i.removeEventListener("scroll",T,!0)},update(W){let D=c?W.values?.[c]:null;R={value:W.value,readonly:W.readonly,durations:D&&typeof D=="object"&&!Array.isArray(D)?D:{}},N();let V=n.type==="selection"?"":JSON.stringify(b.map(I=>W.values?.[I]??null));if(L!==V){L=V;let I=++x;e.search(t,"",20).then(B=>{I===x&&(y=B.map(j=>({key:g(j),label:j.label,value:j,folded:j.folded===!0})),N())}).catch(()=>{})}}}};function As(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 Fs=e=>String(e).padStart(2,"0"),ui=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),Gt=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t);function ho(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 pi(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 bo(e,t,n){let{form:r,name:o,id:i,document:a,locale:s="en"}=t,d=t.labels??tt.en,l=s==="en"?"en-GB":s,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"}),v=new Intl.DateTimeFormat(l,{weekday:"short"}),m=new Intl.DateTimeFormat(l,{weekday:"long"}),S=a.createElement("button");S.type="button",S.className="fd-calendar-button";let g="http://www.w3.org/2000/svg",u=a.createElementNS(g,"svg");u.setAttribute("viewBox","0 0 16 16"),u.setAttribute("aria-hidden","true");for(let[j,P]of[["rect",{x:"2",y:"3",width:"12",height:"11",rx:"1.5"}],["path",{d:"M2 6.5h12M5 1.5v3M11 1.5v3"}]]){let q=a.createElementNS(g,j);for(let[$,te]of Object.entries(P))q.setAttribute($,te);u.append(q)}S.append(u),S.setAttribute("aria-label",d.chooseDate),S.setAttribute("aria-haspopup","dialog"),S.setAttribute("aria-expanded","false"),S.setAttribute("aria-controls",`${i}-calendar`);let y=a.createElement("div");y.className="fd-calendar",y.id=`${i}-calendar`,y.setAttribute("role","dialog"),y.hidden=!0;let b=a.createElement("div");b.className="fd-calendar-head";let w=a.createElement("button");w.type="button",w.textContent="\u2039",w.setAttribute("aria-label",d.previousMonth);let L=a.createElement("span");L.className="fd-calendar-title",L.setAttribute("aria-live","polite");let x=a.createElement("button");x.type="button",x.textContent="\u203A",x.setAttribute("aria-label",d.nextMonth),b.append(w,L,x);let R=a.createElement("table");R.className="fd-calendar-grid",R.setAttribute("role","grid"),y.append(b,R);let E=a.createElement("span");E.className="fd-date-pick",E.append(e.element,S,y);let k=new Date,h=!1;function N(j){if(n==="date")r.setValue(o,`${j.getFullYear()}-${Fs(j.getMonth()+1)}-${Fs(j.getDate())}`);else{let P=pi("datetime",r.getState().values[o]),q=new Date(j.getFullYear(),j.getMonth(),j.getDate(),P?.getHours()??0,P?.getMinutes()??0);r.setValue(o,q.toISOString())}I(),E.dispatchEvent(new CustomEvent("fd-picked",{bubbles:!0,detail:{value:r.getState().values[o]}}))}function z(j){let P=pi(n,r.getState().values[o]),q=new Date,$=f.format(k);L.textContent=$,y.setAttribute("aria-label",$);let te=new Date(k.getFullYear(),k.getMonth(),1),X=Gt(te,-((te.getDay()+6)%7)),G=a.createElement("tr"),U=a.createElement("th");U.scope="col",U.textContent=d.weekShort,U.setAttribute("abbr",d.week),G.append(U);for(let Le=0;Le<7;Le++){let xe=Gt(X,Le),Me=a.createElement("th");Me.scope="col",Me.textContent=v.format(xe).replace(/\.$/,""),Me.setAttribute("abbr",m.format(xe)),G.append(Me)}let ne=a.createElement("thead");ne.append(G);let $e=a.createElement("tbody");for(let Le=X;Le<=new Date(k.getFullYear(),k.getMonth()+1,0);Le=Gt(Le,7)){let xe=a.createElement("tr"),Me=a.createElement("th");Me.scope="row",Me.className="fd-week",Me.textContent=String(As(Le)),xe.append(Me);for(let ie=0;ie<7;ie++){let K=Gt(Le,ie),Q=a.createElement("td"),me=a.createElement("button");me.type="button",me.textContent=String(K.getDate()),me.setAttribute("aria-label",c.format(K)),me.tabIndex=ui(K,k)?0:-1,K.getMonth()!==k.getMonth()&&me.classList.add("fd-outside"),P&&ui(K,P)&&me.setAttribute("aria-selected","true"),ui(K,q)&&me.setAttribute("aria-current","date"),me.disabled=h,me.addEventListener("click",()=>N(K)),me.addEventListener("keydown",Re=>W(Re,K)),Q.append(me),xe.append(Q)}$e.append(xe)}R.replaceChildren(ne,$e),j&&R.querySelector('button[tabindex="0"]')?.focus()}function T(j){k=j,z(!0)}function W(j,P){let q={ArrowLeft:()=>Gt(P,-1),ArrowRight:()=>Gt(P,1),ArrowUp:()=>Gt(P,-7),ArrowDown:()=>Gt(P,7),PageUp:()=>ho(P,-1),PageDown:()=>ho(P,1),Home:()=>Gt(P,-((P.getDay()+6)%7)),End:()=>Gt(P,6-(P.getDay()+6)%7)};q[j.key]?(j.preventDefault(),T(q[j.key]())):(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),N(P))}function D(){k=pi(n,r.getState().values[o])??new Date,y.hidden=!1,S.setAttribute("aria-expanded","true"),z(!0),V()}function V(){y.style.translate="";let j=y.getBoundingClientRect(),P=a.documentElement.clientWidth;if(!j.width||!P)return;let q=j.left<8?8-j.left:j.right>P-8?Math.max(8-j.left,P-8-j.right):0;q&&(y.style.translate=`${Math.round(q)}px 0`)}function I(){y.hidden||(y.hidden=!0,S.setAttribute("aria-expanded","false"),S.focus())}S.addEventListener("click",()=>y.hidden?D():I()),w.addEventListener("click",()=>{k=ho(k,-1),z(!1)}),x.addEventListener("click",()=>{k=ho(k,1),z(!1)}),y.addEventListener("keydown",j=>{j.key==="Escape"&&(j.preventDefault(),j.stopPropagation(),I())});let B=j=>{!y.hidden&&!E.contains(j.target)&&(y.hidden=!0,S.setAttribute("aria-expanded","false"))};return a.addEventListener("mousedown",B),{element:E,focus:()=>e.focus(),update(j){h=j.readonly,S.hidden=j.readonly,j.readonly&&(y.hidden=!0),e.update(j)},destroy(){a.removeEventListener("mousedown",B),e.destroy?.()}}}var dc=e=>{let t=e.replace(/_/g," ").trim();return t.charAt(0).toUpperCase()+t.slice(1)},Ts=e=>e.normalize("NFKD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/^(\d)/,"p_$1")||"property";function lc(e,t){let n=dc(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 cc=["char","text","integer","float","boolean","date"],mi=e=>{let{form:t,name:n,field:r,node:o,id:i,document:a,labels:s,locale:d}=e,l=Se(a),f=Ce(s,d),c=r.type==="properties"?r.definitions:void 0,v=r.type==="properties"&&!!r.definitionsFrom,m=()=>{let B=t.getState().values[n];return B&&typeof B=="object"&&!Array.isArray(B)?B:{}},S={...t,getState:()=>({...t.getState(),values:m()}),setValue:(B,j)=>t.setValue(n,{...m(),[B]:j})},g=l("div",{class:"fd-properties-list"}),u=l("div",{class:"fd-properties",role:"group"},g);o.options?.columns===2&&(u.dataset.columns="2");let b=l("div",{class:"fd-help",role:"status",hidden:""});u.append(b);let w=v&&o.options?.add===!0,L=l("button",{type:"button",class:"fd-button fd-button-link fd-property-add",hidden:""},`+ ${f.addProperty}`),x=l("input",{type:"text",class:"fd-input","aria-label":f.propertyName,placeholder:f.propertyName,autocomplete:"off"}),R=f.propertyTypes.split("|"),E=l("select",{class:"fd-input fd-select","aria-label":f.propertyType},...cc.map((B,j)=>l("option",{value:B},R[j]??B))),k=l("button",{type:"button",class:"fd-button fd-button-primary"},f.add),h=l("button",{type:"button",class:"fd-button"},f.cancel),N=l("div",{class:"fd-property-new",hidden:""},x,E,k,h);w&&u.append(L,N);let z=null,T=()=>{N.hidden=!0,L.hidden=!1};L.addEventListener("click",()=>{N.hidden=!1,L.hidden=!0,x.value="",E.value="char",x.focus()}),h.addEventListener("click",()=>{T(),L.focus()});let W=()=>{let B=x.value.trim();if(!B)return x.focus();let j=new Set(D.map(q=>q.definition.name)),P=Ts(B);for(let q=2;j.has(P);q++)P=`${Ts(B)}_${q}`;z=P,T(),t.addDefinition(n,{name:P,label:B,type:E.value})};k.addEventListener("click",W),N.addEventListener("keydown",B=>{B.key==="Enter"&&B.target===x?(B.preventDefault(),W()):B.key==="Escape"&&(B.preventDefault(),B.stopPropagation(),T(),L.focus())});let D=[],V="";function I(B){for(let j of D)j.widget.destroy?.();D=B.map(j=>{let P=`${i}-${j.name}`,q={type:j.type,label:j.label,...j.options?{options:j.options}:{}},$={type:"field",id:`${o.id}.${j.name}`,field:j.name},te=Ot({...e,form:S,name:j.name,field:q,node:$,id:P});return{definition:j,widget:te}}),g.replaceChildren(...D.map(({definition:j,widget:P})=>{let q=a.createElement("div");q.className="fd-property",q.dataset.type=j.type;let $=a.createElement("label");return $.htmlFor=`${i}-${j.name}`,$.textContent=j.label,q.append($,P.element),q}))}return v&&!t.getState().definitions[n]&&t.loadDefinitions(n),{element:u,focus:()=>(D[0]?.widget??{focus:()=>L.focus()}).focus(),destroy:()=>D.forEach(B=>B.widget.destroy?.()),update(B){let j=m(),P=v?t.getState().definitions[n]:void 0,q=v?P?.definitions??[]:c??Object.keys(j).map(te=>lc(te,j[te])),$=JSON.stringify(q);$!==V&&(V=$,I(q));for(let{definition:te,widget:X}of D)X.update({value:j[te.name]??null,values:j,readonly:B.readonly,required:!1,invalid:!1});b.textContent=P?.loading&&!P.definitions?f.loading:P?.error??"",b.hidden=!b.textContent,w&&(B.readonly&&T(),L.hidden=B.readonly||!N.hidden),z&&D.some(te=>te.definition.name===z)&&(D.find(te=>te.definition.name===z)?.widget.focus(),z=null)}}};var fc=new Set(["P","BR","B","STRONG","I","EM","U","S","UL","OL","LI","A","H1","H2","H3","H4","BLOCKQUOTE","CODE","PRE","SPAN","DIV"]),uc=new Set(["SCRIPT","STYLE","IFRAME","OBJECT","EMBED","TEMPLATE","NOSCRIPT","SVG","MATH"]),pc=new Set(["P","DIV","H1","H2","H3","H4","LI","BLOCKQUOTE","PRE"]),mc=new Set(["left","center","right","justify","start","end"]);function gi(e,t=globalThis.document){let n=t.createElement("template");n.innerHTML=e;let r=i=>{for(let a of[...i.childNodes]){if(a.nodeType===Node.TEXT_NODE)continue;if(a.nodeType!==Node.ELEMENT_NODE){a.remove();continue}let s=a;if(uc.has(s.tagName)){s.remove();continue}if(r(s),!fc.has(s.tagName)){s.replaceWith(...s.childNodes);continue}let d=s.tagName==="A"?s.getAttribute("href"):null,l=pc.has(s.tagName)?s.style?.textAlign?.trim().toLowerCase():"";for(let f of[...s.attributes])s.removeAttribute(f.name);d&&/^(https?:|mailto:)/i.test(d.trim())&&s.setAttribute("href",d.trim()),l&&mc.has(l)&&s.setAttribute("style",`text-align: ${l};`)}};r(n.content);let o=t.createElement("div");return o.append(n.content),o.innerHTML}function Ms(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 $s=[["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>']],hi=({form:e,name:t,node:n,id:r,document:o,labels:i=tt.en})=>{let a=o.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 s=n.options?.toolbar!==!1,d="";a.addEventListener("input",()=>{let c=gi(a.innerHTML,o);d=c,e.setValue(t,c.trim()===""?null:c)}),a.addEventListener("blur",()=>{a.innerHTML!==d&&(a.innerHTML=d)});let l=s?gc(a,o,i):null,f=a;return l&&(f=o.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 v=gi(typeof c.value=="string"?c.value:"",o);(v!==d||o.activeElement!==a)&&(a.innerHTML!==v&&(a.innerHTML=v),d=v),a.setAttribute("contenteditable",String(!c.readonly)),a.classList.toggle("fd-blank",!v.trim()),a.setAttribute("aria-readonly",String(c.readonly)),a.setAttribute("aria-invalid",String(c.invalid)),c.describedBy&&a.setAttribute("aria-describedby",c.describedBy)}}};function gc(e,t,n){let r=t.createElement("div");r.className="fd-richtext-bar",r.setAttribute("role","toolbar"),r.setAttribute("aria-label",n.formatting);let o=null,i=()=>{e.focus();let g=t.getSelection();o&&g&&(g.removeAllRanges(),g.addRange(o))},a=(g,u)=>{i(),t.execCommand?.(g,!1,u)},s=t.createElement("select");s.className="fd-richtext-style",s.setAttribute("aria-label",n.textStyle);for(let[g,u]of[["p","paragraph"],["h2","heading"],["h3","subheading"]]){let y=t.createElement("option");y.value=g,y.textContent=n[u],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 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,d.append(l,f,c),f.addEventListener("click",()=>{let g=Ms(l.value);if(!g){l.setAttribute("aria-invalid","true");return}l.setAttribute("aria-invalid","false"),i(),t.execCommand?.("createLink",!1,g),d.hidden=!0}),c.addEventListener("click",()=>{i(),t.execCommand?.("unlink",!1),d.hidden=!0}),l.addEventListener("keydown",g=>{g.key==="Enter"?(g.preventDefault(),f.click()):g.key==="Escape"&&(g.preventDefault(),d.hidden=!0,i())});let v=$s.map(([g,u,y])=>{let b=t.createElement("button");return b.type="button",b.className="fd-richtext-tool",b.setAttribute("aria-label",n[g]),b.title=n[g],b.innerHTML=y,b.querySelector("svg")?.setAttribute("aria-hidden","true"),["bold","italic","underline","heading"].includes(u)&&b.setAttribute("aria-pressed","false"),b.addEventListener("mousedown",w=>w.preventDefault()),b.addEventListener("click",()=>{if(u==="heading")return a("formatBlock",s.value==="h2"?"<p>":"<h2>");if(u!=="createLink")return a(u);d.hidden=!1,l.value="",l.focus()}),b});r.append(s,...v);let m=[s,...v];m.forEach((g,u)=>g.tabIndex=u===0?0:-1),r.addEventListener("keydown",g=>{if(g.key!=="ArrowRight"&&g.key!=="ArrowLeft")return;let u=m.indexOf(t.activeElement);if(u<0)return;let y=getComputedStyle(r).direction==="rtl",b=g.key==="ArrowRight"!==y?1:-1,w=m[(u+b+m.length)%m.length];g.preventDefault(),m.forEach(L=>L.tabIndex=L===w?0:-1),w.focus()});let S=()=>{let g=t.getSelection();if(!g||!g.rangeCount||!e.contains(g.anchorNode))return;o=g.getRangeAt(0).cloneRange();let u=String(t.queryCommandValue?.("formatBlock")??"").toLowerCase().replace(/[<>]/g,"");s.value=u==="h2"||u==="h3"?u:"p";for(let y of v){let b=$s[v.indexOf(y)][1];y.hasAttribute("aria-pressed")&&y.setAttribute("aria-pressed",String(b==="heading"?u==="h2":t.queryCommandState?.(b)??!1))}};return t.addEventListener("selectionchange",S),{bar:r,linkRow:d,destroy:()=>t.removeEventListener("selectionchange",S)}}var bi=({form:e,name:t,id:n,document:r,labels:o=tt.en})=>{let i=r.createElement("div");i.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,i.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=o.invalidJson}}),{element:i,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 Ns=new WeakMap;function hc(e){let t=Ns.get(e);return t===void 0&&(t=Math.floor(Math.random()*4294967296)>>>0,Ns.set(e,t)),t}function bc(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 yc(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 rn(e,t,n,r){if(r.options?.shuffle!==!0)return[...e];let o=(s,d)=>s[d]===!0,i=e.filter(s=>!o(s,"fixed")&&!o(s,"exclusive")),a=yc(bc(hc(t),n));for(let s=i.length-1;s>0;s--){let d=Math.floor(a()*(s+1));[i[s],i[d]]=[i[d],i[s]]}return i.push(...e.filter(s=>!o(s,"fixed")&&o(s,"exclusive"))),e.map(s=>o(s,"fixed")?s:i.shift())}var Cs=({form:e,name:t,field:n,node:r,id:o,document:i})=>{let a=n,s=a.multiple?"checkbox":"radio",d=(u,y={},...b)=>{let w=i.createElement(u);for(let[L,x]of Object.entries(y))w.setAttribute(L,x);return w.append(...b),w},l=d("table",{id:o,class:"fd-matrix-table"});l.append(d("thead",{},d("tr",{},d("th",{scope:"col"}),...a.columns.map(u=>d("th",{scope:"col"},u.label)))));let f=d("tbody"),c=[],v=[];for(let u of rn(a.rows,e,t,r)){let y=d("tr",{role:s==="radio"?"radiogroup":"group","aria-label":u.label});v.push(y),y.append(d("th",{scope:"row"},u.label));for(let b of a.columns){let w=d("input",{type:s,name:`${o}-${u.value}`,value:String(b.value),"data-row":String(u.value),"aria-label":`${u.label}: ${b.label}`});w.addEventListener("change",()=>{if(a.onePerColumn&&w.checked)for(let L of c)L.value===w.value&&L!==w&&(L.checked=!1);g()}),c.push(w),y.append(d("td",{},d("label",{class:"fd-matrix-pick"},w,d("span",{class:"fd-matrix-column"},b.label))))}f.append(y)}l.append(f);let m=d("div",{class:"fd-matrix"},l),S=u=>a.columns.find(y=>String(y.value)===u)?.value??u;function g(){let u={};for(let y of a.rows){let b=c.filter(w=>w.dataset.row===String(y.value)&&w.checked).map(w=>S(w.value));(a.multiple?b.length:b.length===1)&&(u[String(y.value)]=a.multiple?b:b[0])}e.setValue(t,Object.keys(u).length?u:null)}return{element:m,focus:()=>(c.find(u=>u.checked)??c[0])?.focus(),update(u){let y=u.value&&typeof u.value=="object"&&!Array.isArray(u.value)?u.value:{};for(let b of c){let w=y[b.dataset.row??""],L=Array.isArray(w)?w.map(String):w==null?[]:[String(w)];b.checked=L.includes(b.value),b.disabled=u.readonly}if(l.setAttribute("aria-invalid",String(u.invalid)),s==="radio")for(let b of v)Ve(b,"aria-required",String(u.required));u.describedBy?l.setAttribute("aria-describedby",u.describedBy):l.removeAttribute("aria-describedby")}}};var Kn=600,mr=180,xc="#1b2a5c",vc='"Segoe Script", "Snell Roundhand", "Brush Script MT", "Apple Chancery", cursive',wc=e=>Math.floor(e.length*3/4)-(e.endsWith("==")?2:e.endsWith("=")?1:0),kc=e=>e.data??e.url??"",Os=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s})=>{let d=Ce(a,s),l=Se(i),f=r.options??{},c=f.color,v=typeof c=="string"&&/^#[\da-f]{6}$/i.test(c)?c:xc,m=f.penWidth,S=typeof m=="number"&&m>0?m:3,g=f.footerLabel,u=l("canvas",{class:"fd-signature-pad",width:String(Kn),height:String(mr),role:"img","aria-label":d.signaturePad}),y=l("span",{class:"fd-signature-hint","aria-hidden":"true"},r.placeholder||d.signHere),b=l("img",{class:"fd-signature-image",alt:n.label,hidden:""}),w=l("input",{type:"text",class:"fd-input fd-signature-typed","aria-label":d.typeSignature,placeholder:d.typeSignature,autocomplete:"name"}),L=G=>l("button",{type:"button",class:"fd-button fd-button-link",hidden:""},G),x=L(d.undo),R=L(d.clearDrawing);R.classList.add("fd-signature-clear");let E=f.upload===!0?L(d.uploadSignature):null,k=l("input",{type:"file",accept:"image/*",class:"fd-sr-only",tabindex:"-1","aria-hidden":"true"}),h=l("div",{id:o,class:"fd-signature",role:"group"},l("div",{class:"fd-signature-box"},u,b,y),...typeof g=="string"&&g?[l("span",{class:"fd-signature-footer"},g)]:[],l("div",{class:"fd-signature-tools"},w,x,...E?[E,k]:[],R)),N=()=>{let G=u.getContext("2d");return G&&(G.strokeStyle=G.fillStyle=v,G.lineWidth=S,G.lineCap=G.lineJoin="round"),G},z=null,T=!1,W=null,D=[],V=null,I=()=>!D.length&&!W;function B(){let G=N();if(G){G.clearRect(0,0,Kn,mr),W&&(G.font=`italic 64px ${vc}`,G.textAlign="center",G.textBaseline="middle",G.fillText(W,Kn/2,mr/2,Kn-40));for(let U of D){G.beginPath(),G.arc(U[0].x,U[0].y,S/2,0,Math.PI*2),G.fill();for(let ne=1;ne<U.length;ne++)j(U[ne-1],U[ne])}}}function j(G,U){let ne=N();ne?.beginPath(),ne?.moveTo(G.x,G.y),ne?.lineTo(U.x,U.y),ne?.stroke()}function P(){D=[],W=null,B()}function q(){if(y.hidden=!I(),I())return z=null,e.setValue(t,null);let G;try{G=u.toDataURL("image/png")}catch{return}if(!G)return;let U=G.slice(G.indexOf(",")+1);z=U,e.setValue(t,{name:"signature.png",type:"image/png",size:wc(U),data:U,...W&&!D.length?{text:W}:{}})}function $(G){let U=u.getBoundingClientRect();return{x:(G.clientX-U.left)*Kn/(U.width||Kn),y:(G.clientY-U.top)*mr/(U.height||mr)}}u.addEventListener("pointerdown",G=>{T||G.button!==0||(G.preventDefault(),u.setPointerCapture?.(G.pointerId),V=$(G),D.push([V]),y.hidden=!0,B())}),u.addEventListener("pointermove",G=>{if(!V)return;let U=$(G);j(V,U),D[D.length-1].push(U),V=U});let te=()=>{V&&(V=null,q())};u.addEventListener("pointerup",te),u.addEventListener("pointercancel",te),w.addEventListener("input",()=>{X(),D=[],W=w.value.trim()||null,B(),q()}),x.addEventListener("click",()=>{D.pop(),B(),q()}),E?.addEventListener("click",()=>k.click()),k.addEventListener("change",()=>{let G=k.files?.[0];k.value="",G&&po(G).then(U=>e.setValue(t,U))}),R.addEventListener("click",()=>{P(),z=null,w.value="",X(),e.setValue(t,null),w.focus()});function X(){b.hidden=!0,u.hidden=!1}return{element:h,focus:()=>(w.hidden?R:w).focus(),update(G){T=G.readonly;let U=G.value&&typeof G.value=="object"&&!Array.isArray(G.value)?G.value:null,ne=i.activeElement!==w;if(U&&kc(U)!==z){let $e=U.data?`data:${U.type};base64,${U.data}`:U.url??"";b.getAttribute("src")!==$e&&(b.src=$e),b.hidden=!1,u.hidden=!0,z=null,P(),ne&&(w.value=U.text??"")}else U||((z!==null||!b.hidden)&&(z=null,P(),ne&&(w.value="")),X());y.hidden=T||!I()||!b.hidden,w.hidden=T,w.readOnly=T,R.hidden=T||!U,x.hidden=T||!D.length||!b.hidden,E&&(E.hidden=T),u.classList.toggle("fd-signature-locked",T),Je(h,G),w.setAttribute("aria-invalid",String(G.invalid))}}};var yi=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s="en"})=>{let d=Ce(a,s),l=Se(i),f=E=>E in n&&typeof n[E]=="number"?n[E]:void 0,c=f("min")??0,v=f("max")??100,m=typeof r.options?.step=="number"&&r.options.step>0?r.options.step:1,S=n.type==="integer"?0:n.type==="float"&&n.digits?n.digits[1]:Math.max(0,-Math.floor(Math.log10(m))),g=E=>ht(E,S,s),u=l("input",{id:o,type:"range",class:"fd-slider-input",min:String(c),max:String(v),step:String(m)}),y=l("output",{class:"fd-slider-value",for:o,"aria-hidden":"true"}),b=[r.options?.startLabel,r.options?.endLabel].map(E=>typeof E=="string"?E:""),w=(E,k)=>l("span",{class:k?"fd-slider-last":void 0},g(E),...b[k]?[l("span",{class:"fd-slider-word"},b[k])]:[]),L=l("div",{class:"fd-slider-ends","aria-hidden":"true"},w(c,0),w(v,1)),x=nn(i,d,()=>{e.setValue(t,null),u.focus()},r),R=l("div",{class:"fd-slider"},l("div",{class:"fd-slider-track"},u,y),L,x.button);return b.some(Boolean)&&u.setAttribute("aria-description",b.filter(Boolean).join(" \u2026 ")),u.addEventListener("input",()=>e.setValue(t,Number(u.value))),{element:R,focus:()=>u.focus(),update(E){let k=typeof E.value=="number"?E.value:null;R.classList.toggle("fd-slider-empty",k===null);let h=String(k??(c+v)/2);u.value!==h&&(u.value=h),y.textContent=k===null?"\u2013":g(k),u.setAttribute("aria-valuetext",k===null?d.notAnswered:g(k)),u.disabled=E.readonly,x.allow(E),x.show(k!==null),Je(u,E)}}};function yo(e,t,n){let r=o=>e.some(i=>i.exclusive&&i.value===o);return r(n)?[n]:[...t.filter(o=>!r(o)),n]}function xo(e,t,n){let r=n.validate?.find(i=>i.atMost!==void 0&&(i.when??!0)===!0&&i.level!=="warning")?.atMost,o=r?e("span",{class:"fd-choice-limit",role:"status"}):null;return{element:o,full(i){let a=!!r&&i>=r;return o&&lt(o,a?De(t.upTo,{n:r}):""),a}}}function vo(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 Ps=e=>Vs(e,!1),Is=e=>Vs(e,!0);function Vs({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s},d){let l=Ce(a,s),f=Se(i),c=n.type==="selection"?n.options:[],v=n.type==="selection"&&n.ownAnswers===!0&&!d,m=`${o}-list`,S=f("input",{id:o,type:"text",class:"fd-input fd-combo-input",role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-controls":m,autocomplete:"off",placeholder:r.placeholder||l.search}),g=f("ul",{id:m,class:"fd-listbox",role:"listbox",hidden:""}),u=f("ul",{class:"fd-chips"}),y=f("div",{class:"fd-combo"},S,g),b=to(S,g),w=d?f("div",{class:"fd-choice-search"},y):f("div",{class:"fd-tags fd-choice-tags"},u,y),L=()=>e.getState().values[t],x=()=>Array.isArray(L())?L():[],R=I=>e.setValue(t,I),E=I=>c.find(B=>B.value===I)?.label??(I==null?"":String(I)),k=[],h=-1,N=!1;function z(){g.replaceChildren(...k.map((I,B)=>{let j=f("li",{id:`${m}-${B}`,role:"option",class:`fd-option${B===h?" fd-active":""}`,"aria-selected":String(B===h)},I.label);return j.addEventListener("mousedown",P=>P.preventDefault()),j.addEventListener("click",()=>D(I)),j})),k.length||g.append(f("li",{class:"fd-empty"},l.noResults)),Ve(S,"aria-activedescendant",h>=0?`${m}-${h}`:null)}function T(){let I=S.value.trim(),B=d&&I===E(L())?"":I.toLowerCase(),j=new Set(x());k=c.filter(P=>!j.has(P.value)&&P.label.toLowerCase().includes(B)),v&&B&&!j.has(I)&&!c.some(P=>P.label.toLowerCase()===B)&&k.push({value:I,label:De(l.createNamed,{name:I})}),h=-1,z(),b.show(),S.setAttribute("aria-expanded","true")}function W(){b.hide(),h=-1,S.setAttribute("aria-expanded","false"),S.removeAttribute("aria-activedescendant")}function D(I){if(d)return S.value=I.label,R(I.value),W();S.value="",R(yo(c,x(),I.value)),i.activeElement===S?T():W()}d||S.addEventListener("focus",()=>!N&&T()),S.addEventListener("click",()=>!N&&g.hidden&&T()),S.addEventListener("input",()=>!N&&T()),S.addEventListener("blur",()=>{W(),d&&!N&&(S.value.trim()?S.value=E(L()):R(null))}),S.addEventListener("keydown",I=>{if(!N)switch(I.key){case"ArrowDown":case"ArrowUp":{if(I.preventDefault(),g.hidden)return T();if(!k.length)return;let B=I.key==="ArrowDown";h=h===-1?B?0:k.length-1:(h+(B?1:-1)+k.length)%k.length,z(),g.children[h]?.scrollIntoView?.({block:"nearest"});return}case"Enter":{let B=k[h]??(S.value.trim()?k[0]:void 0);if(g.hidden||!B)return;I.preventDefault(),D(B);return}case"Escape":g.hidden||I.preventDefault(),W();return;case"Backspace":!d&&S.value===""&&x().length&&R(x().slice(0,-1));return}});let V="";return{element:w,focus:()=>S.focus(),update(I){if(N=I.readonly,N&&W(),Je(S,I),Ve(S,"aria-required",String(I.required)),d){S.readOnly=N,i.activeElement!==S&&(S.value=E(I.value));return}let B=Array.isArray(I.value)?I.value:[];S.hidden=N;let j=JSON.stringify([N,B]);j!==V&&(V=j,u.replaceChildren(...B.map(P=>{let q=E(P),$=f("li",{class:"fd-chip"},f("span",{class:"fd-chip-label"},q));if(!N){let te=f("button",{type:"button",class:"fd-chip-remove","aria-label":De(l.remove,{name:q})},"\xD7");te.addEventListener("click",()=>R(x().filter(X=>X!==P))),$.append(te)}return $})),g.hidden||T())}}}var Sc='<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>',Ds=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s})=>{let d=Ce(a,s),l=Se(i),f=n.type==="selection"&&n.multiple===!0,c=n.type==="selection"?n.options:[],v=rn(c,e,t,r),m=r.options??{},S=m.showLabels===!1,g=l("div",{id:o,class:`fd-image-choices${S?" fd-image-choices-bare":""}`,role:f?"group":"radiogroup","data-size":m.imageSize,"data-fit":m.imageFit});vo(g,r);let u=f?xo(l,d,r):null,y=v.map(R=>{let E=R.image?l("img",{src:R.image,alt:R.alt??"",loading:"lazy",draggable:"false"}):l("span",{class:"fd-image-card-blank"});R.image||(E.innerHTML=Sc);let k=l("button",{type:"button",class:"fd-image-card",role:f?"checkbox":"radio","aria-checked":"false","aria-label":S?R.label:void 0},l("span",{class:"fd-image-card-picture"},E),l("span",{class:"fd-image-card-words"},R.label));return k.addEventListener("click",()=>w(R)),g.append(k),k}),b=()=>e.getState().values[t];function w(R){if(!f)return e.setValue(t,R.value);let E=Array.isArray(b())?b():[],k=new Set(E.includes(R.value)?E.filter(h=>h!==R.value):yo(c,E,R.value));e.setValue(t,c.filter(h=>k.has(h.value)).map(h=>h.value))}let L=!1;f||g.addEventListener("keydown",R=>{if(L)return;let E=y.indexOf(R.target);if(E===-1)return;let k=It(g),h={ArrowDown:1,ArrowUp:-1,ArrowRight:k?-1:1,ArrowLeft:k?1:-1},N=R.key==="Home"?0:R.key==="End"?y.length-1:R.key in h?(E+h[R.key]+y.length)%y.length:-1;N!==-1&&(R.preventDefault(),w(v[N]),y[N].focus())});let x=f?null:nn(i,d,()=>{e.setValue(t,null),y[0]?.focus()},r);return u?.element&&g.append(u.element),{element:x?l("div",{class:"fd-choices-box"},g,x.button):g,focus:()=>(y.find(R=>R.getAttribute("aria-checked")==="true")??y[0])?.focus(),update(R){L=R.readonly;let E=new Set(Array.isArray(R.value)?R.value:[R.value]),k=f?-1:Math.max(0,v.findIndex(N=>E.has(N.value))),h=!!u?.full(Array.isArray(R.value)?R.value.length:0);y.forEach((N,z)=>{let T=E.has(v[z].value);N.setAttribute("aria-checked",String(T)),N.tabIndex=f||z===k?0:-1,N.disabled=L||h&&!T&&!v[z].exclusive}),x?.allow(R),x?.show(v.some(N=>E.has(N.value))),Je(g,R)}}};var Ec=4,Ws=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s})=>{let d=Ce(a,s),l=Se(i),f=rn(n.type==="selection"?n.options:[],e,t,r),c=l("ol",{class:"fd-rank-list"}),v=no(l),m=r.options?.top,S=typeof m=="number"&&m>=1&&m<f.length?Math.floor(m):0,g=l("div",{class:"fd-rank-pool"}),u=l("button",{type:"button",class:"fd-button fd-rank-keep"},d.keepOrder);u.addEventListener("click",()=>e.setValue(t,L.map(T=>T.option.value)));let y=l("div",{id:o,class:"fd-ranking",role:"group"},...S?[l("div",{class:"fd-choice-limit"},De(d.upTo,{n:S})),g,c]:[c,u],v.element),b=f.map(T=>{let W=T.label,D=l("span",{class:"fd-rank-place","aria-hidden":"true"}),V=l("button",{type:"button",class:"fd-rank-move fd-rank-up","aria-label":De(d.moveUp,{label:W})},"\u2191"),I=l("button",{type:"button",class:"fd-rank-move fd-rank-down","aria-label":De(d.moveDown,{label:W})},"\u2193"),B=l("span",{class:"fd-rank-grip","aria-hidden":"true"}),j=l("span",{class:"fd-rank-tools"},V,I),P=l("li",{class:"fd-rank-item","data-value":String(T.value)},B,D,l("span",{class:"fd-rank-words"},W),j),q={option:T,element:P,place:D,up:V,down:I};if(S){let $=l("button",{type:"button",class:"fd-rank-pick"},W);$.addEventListener("click",()=>!w&&L.length<S&&E([...L,q],q));let te=l("button",{type:"button",class:"fd-rank-move fd-rank-out","aria-label":De(d.remove,{name:W})},"\xD7");te.addEventListener("click",()=>{v.say(De(d.removed,{name:W})),e.setValue(t,L.filter(X=>X!==q).map(X=>X.option.value))}),j.append(te),g.append($),q.pick=$}return V.addEventListener("click",()=>k(q,-1,"up")),I.addEventListener("click",()=>k(q,1,"down")),P.addEventListener("pointerdown",$=>N(q,$)),q}),w=!1,L=[...b],x=null;function R(T){for(L=T,T.forEach((W,D)=>{c.children[D]!==W.element&&c.insertBefore(W.element,c.children[D]??null),W.place.textContent=String(D+1),W.up.disabled=D===0,W.down.disabled=D===T.length-1});c.children.length>T.length;)c.lastElementChild?.remove()}function E(T,W){v.say(De(d.movedTo,{label:W.option.label,n:T.indexOf(W)+1,total:T.length})),e.setValue(t,T.map(D=>D.option.value))}function k(T,W,D){let V=L.indexOf(T),I=V+W;if(w||I<0||I>=L.length)return;let B=[...L];B.splice(V,1),B.splice(I,0,T),x=T.element.contains(i.activeElement)?{item:T,which:D==="up"&&I===0||D==="down"&&I===B.length-1?D==="up"?"down":"up":D}:null,E(B,T),h()}function h(){if(!x)return;let{item:T,which:W}=x;x=null,T[W].focus()}c.addEventListener("keydown",T=>{if(w||!T.altKey||T.key!=="ArrowUp"&&T.key!=="ArrowDown")return;let W=b.find(D=>D.element.contains(T.target));W&&(T.preventDefault(),k(W,T.key==="ArrowUp"?-1:1,T.key==="ArrowUp"?"up":"down"))});function N(T,W){if(w||W.button!==0||W.target.closest("button")||W.pointerType==="touch"&&!W.target.closest(".fd-rank-grip"))return;let D=W.clientY,V=[...L],I=!1;T.element.setPointerCapture?.(W.pointerId);let B=P=>{if(!I&&Math.abs(P.clientY-D)<Ec)return;I||(I=!0,T.element.classList.add("fd-rank-lifted")),P.preventDefault();let q=L.filter(te=>te!==T),$=q.filter(te=>{let X=te.element.getBoundingClientRect();return X.top+X.height/2<P.clientY}).length;L.indexOf(T)!==$&&R([...q.slice(0,$),T,...q.slice($)])},j=()=>{T.element.removeEventListener("pointermove",B),T.element.removeEventListener("pointerup",j),T.element.removeEventListener("pointercancel",j),T.element.classList.remove("fd-rank-lifted"),L.some((P,q)=>P!==V[q])&&E(L,T)};T.element.addEventListener("pointermove",B),T.element.addEventListener("pointerup",j),T.element.addEventListener("pointercancel",j)}function z(T){let W=(Array.isArray(T)?T:[]).map(D=>b.find(V=>V.option.value===D)).filter(D=>!!D);return S?W.slice(0,S):Array.isArray(T)?[...new Set([...W,...L])]:L}return R(S?[]:L),{element:y,focus:()=>(b.find(T=>T.pick&&!T.pick.hidden&&!T.pick.disabled)?.pick??(L[0]?.down.disabled?L[0]?.up:L[0]?.down))?.focus(),update(T){w=T.readonly,y.classList.toggle("fd-ranking-locked",w);let W=z(T.value);(W.length!==L.length||W.some((D,V)=>D!==L[V])||!S&&!c.children.length)&&R(W);for(let D of b)D.up.hidden=D.down.hidden=w,D.pick&&(D.pick.hidden=L.includes(D),D.pick.disabled=w||L.length>=S,D.element.querySelector(".fd-rank-out").hidden=w);u.hidden=w||Array.isArray(T.value)&&T.value.length>0,h(),Je(y,T)}}};var Hs={street:["addressStreet","street-address"],line2:["addressLine2","address-line2"],city:["addressCity","address-level2"],region:["addressRegion","address-level1"],postcode:["addressPostcode","postal-code"],country:["addressCountry","country"]},Lc=e=>typeof e=="string"&&e in Hs,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",xi={};function vi(e){if(!xi[e]){let t=new Intl.DisplayNames([e],{type:"region",fallback:"none"}),n=[];for(let r=65;r<91;r++)for(let o=65;o<91;o++){let i=String.fromCharCode(r,o),a=!Rc.includes(i)&&t.of(i);a&&n.push([i,a])}xi[e]=n.sort((r,o)=>r[1].localeCompare(o[1],e))}return xi[e]}var js=({form:e,name:t,node:n,id:r,document:o,labels:i,locale:a="en"})=>{let s=Ce(i,a),d=Se(o),l=n.options??{},f=l.parts,c=Array.isArray(f)?f.filter(Lc):["street","city","postcode","country"],v=Array.isArray(l.requiredParts)?l.requiredParts:[],m=typeof l.country=="string"?l.country:"",S=d("div",{id:r,class:"fd-address",role:"group"}),g=(y,b)=>{let w=e.getState().values[t],L=w&&typeof w=="object"&&!Array.isArray(w)?{...w}:{};L[y]=b,m&&c.includes("country")&&L.country===void 0&&(L.country=m);let x=Object.fromEntries(Object.entries(L).filter(([,E])=>typeof E!="string"||E.trim()!=="")),R=Object.keys(x);e.setValue(t,R.length&&(y==="country"||R.join()!=="country"||x.country!==m)?x:null)},u=c.map(y=>{let[b,w]=Hs[y],L={id:`${r}-${y}`,class:"fd-input","data-part":y,autocomplete:y==="street"&&c.includes("line2")?"address-line1":w,"aria-required":v.includes(y)?"true":void 0},x=y==="country"?d("select",L,d("option",{value:""}),...vi(a).map(([R,E])=>d("option",{value:R},E))):d("input",{type:"text",...L});return x.addEventListener(y==="country"?"change":"input",()=>g(y,x.value)),y==="country"&&x.classList.add("fd-select"),S.append(d("div",{class:`fd-address-part fd-address-${y}${v.includes(y)?" fd-required":""}`},d("label",{class:"fd-address-label",for:x.id},s[b]),x)),{part:y,input:x}});return{element:S,focus:()=>u[0]?.input.focus(),update(y){let b=y.value&&typeof y.value=="object"&&!Array.isArray(y.value)?y.value:{};for(let{part:w,input:L}of u){let x=typeof b[w]=="string"?b[w]:w==="country"&&b.country===void 0?m:"";L instanceof HTMLSelectElement?(x&&![...L.options].some(R=>R.value===x)&&L.append(d("option",{value:x},x)),L.disabled=y.readonly):L.readOnly=y.readonly,o.activeElement!==L&&L.value!==x&&(L.value=x),L.setAttribute("aria-invalid",String(y.invalid&&(!v.length||v.includes(w)&&!x.trim())))}Je(S,y)}}};var zs=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0,Bs=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s,dialogs:d,widgets:l})=>{let f=Ce(a,s),c=Se(i),v=n,m=r.options??{},S=zs(m.min)??0,g=zs(m.max)??1/0,u=typeof m.itemLabel=="string"&&m.itemLabel.trim()?m.itemLabel.trim():null,y=V=>u?`${u} ${V}`:De(f.entry,{n:V}),b=(r.columns??Object.keys(v.fields)).filter(V=>v.fields[V]&&v.fields[V].type!=="one2many"&&V!==v.sequenceField&&V!==v.lineKinds?.field),w=c("div",{class:"fd-repeat-list"}),L=c("button",{type:"button",class:"fd-button fd-repeat-add"},typeof m.addLabel=="string"&&m.addLabel?m.addLabel:f.addAnother),x=no(c),R=c("div",{id:o,class:"fd-repeat",role:"group"},w,L,x.element),E=new Map,k=()=>e.getState().values[t]??[],h=!1,N=null;for(let V=k().length;V<S;V++)e.addLine(t);L.addEventListener("click",()=>{if(h||k().length>=g)return;let V=e.addLine(t);N=()=>E.get(V)?.fields[0]?.widget.focus(),D()});function z(V){let I=`${o}-${V.key}-title`,B=c("span",{id:I,class:"fd-repeat-title"}),j=c("button",{type:"button",class:"fd-repeat-remove"},"\xD7"),P=(ne,$e,Le)=>{let xe=c("button",{type:"button",class:"fd-repeat-tool"},ne);return xe.addEventListener("click",Le),[xe,$e]},q=()=>k().findIndex(ne=>ne.key===V.key),$=[P("\u2191","moveUp",()=>T(V.key,q()-1)),P("\u2193","moveDown",()=>T(V.key,q()+1)),P("\u29C9","copy",()=>W(V.key))],te=d&&(r.lineOpens||r.lineForm)?c("button",{type:"button",class:"fd-repeat-tool fd-line-open","aria-label":f.openLine,title:f.openLine},"\u2197"):null;te?.addEventListener("click",()=>{let ne=k().find($e=>$e.key===V.key);ne&&d&&fo(e,t,r,ne,d,h)});let X=c("div",{class:"fd-repeat-fields"}),G=c("div",{class:"fd-repeat-card",role:"group","aria-labelledby":I,"data-line":V.key},c("div",{class:"fd-repeat-head"},B,...$.map(([ne])=>ne),...te?[te]:[],j),X),U=b.map(ne=>{let $e=v.fields[ne],Le=`${o}-${V.key}-${ne}`,xe={type:"field",id:`${r.id}.${V.key}.${ne}`,field:ne},Me=Ot({form:co(e,t,V.key),name:ne,field:$e,node:xe,id:Le,document:i,labels:a,locale:s,dialogs:d,widgets:l}),ie=c("label",{class:"fd-repeat-label",for:Le},$e.label);["INPUT","SELECT","TEXTAREA"].includes(Me.element.tagName)||ie.addEventListener("click",()=>Me.focus());let K=c("div",{class:"fd-cell-error",hidden:""});return X.append(c("div",{class:"fd-repeat-field"},ie,Me.element,K)),{name:ne,def:$e,widget:Me,error:K}});return j.addEventListener("click",()=>{let ne=k(),$e=ne.findIndex(ie=>ie.key===V.key);if(h||$e===-1||ne.length<=S)return;let Le=B.textContent??"";e.removeLine(t,V.key),x.say(De(f.removed,{name:Le}));let xe=k(),Me=xe[Math.min($e,xe.length-1)];N=()=>Me?E.get(Me.key)?.fields[0]?.widget.focus():L.focus(),D()}),{element:G,title:B,remove:j,tools:$,fields:U}}function T(V,I){let B=k().findIndex(q=>q.key===V);if(h||I<0||I>=k().length||I===B)return;let j=E.get(V)?.title.textContent??"";Un(e,t,v,V,I);let P=B>I&&I>0||I===k().length-1?0:1;E.get(V)?.tools[P][0].focus(),x.say(De(f.movedTo,{label:j,n:I+1,total:k().length}))}function W(V){let I=k(),B=I.findIndex(q=>q.key===V);if(h||B<0||I.length>=g)return;let j={...I[B].values};v.sequenceField&&delete j[v.sequenceField];let P=e.addLine(t,j);Un(e,t,v,P,B+1),E.get(P)?.fields[0]?.widget.focus()}function D(){let V=N;N=null,V?.()}return{element:R,focus:()=>([...E.values()].find(V=>V.element===w.firstElementChild)?.fields[0]?.widget??L).focus(),update(V){h=V.readonly;let I=V.value??[],B=e.getState().errors,j=new Set(I.map(P=>P.key));for(let[P,q]of E)if(!j.has(P)){q.element.remove();for(let $ of q.fields)$.widget.destroy?.();E.delete(P)}I.forEach((P,q)=>{let $=E.get(P.key);$||E.set(P.key,$=z(P)),w.children[q]!==$.element&&w.insertBefore($.element,w.children[q]??null),$.title.textContent=y(q+1),$.remove.setAttribute("aria-label",De(f.remove,{name:$.title.textContent})),$.remove.hidden=h||I.length<=S||r.lineDelete!==void 0&&!e.lineState(r.id,P.key).deletable;for(let[te,X]of $.tools)te.setAttribute("aria-label",De(f[X],{label:$.title.textContent,name:$.title.textContent})),te.hidden=h||(X==="moveUp"?q===0:X==="moveDown"?q===I.length-1:I.length>=g);for(let te of $.fields){let X=B[`${t}.${P.key}.${te.name}`];te.error.hidden=!X,te.error.textContent=X??"",te.widget.update({value:P.values[te.name],values:P.values,parent:V.values,readonly:h||te.def.readonly===!0,required:te.def.required===!0,invalid:!!X})}}),L.hidden=h||I.length>=g,Je(R,V)}}};function wi(e,{form:t,name:n,field:r,document:o,labels:i,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=Se(o),f=l("div",{class:"fd-count","aria-hidden":"true"}),c=l("div",{class:"fd-sr-only","aria-live":"polite"}),v;return{...e,element:l("div",{class:"fd-counted"},e.element,f,c),update(m){e.update(m);let S=s.value.length;lt(f,`${S} / ${d}`),f.classList.toggle("fd-count-near",S>=d*.9),Rt(f,m.readonly),o.activeElement===s&&(clearTimeout(v),v=setTimeout(()=>lt(c,De(Ce(i,a).charactersLeft,{n:d-S})),700))}}}function qs(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 wo(e,t,n){let r=n.options??{},o=t.type==="char";(o?[r.min,r.max]:"min"in t?[t.min,t.max]:[]).forEach((a,s)=>{typeof a=="string"&&(e[s?"max":"min"]=o?a:un(a)+(t.type==="datetime"?s?"T23:59":"T00:00":""))}),typeof r.step=="number"&&(e.step=String(r.step*60))}function ki(e,t){try{let n=new Intl.NumberFormat(t,{style:"currency",currency:e,currencyDisplay:"narrowSymbol"}).formatToParts(1),r=n.findIndex(o=>o.type==="currency");return{text:n[r].value,after:r>n.findIndex(o=>o.type==="integer")}}catch{return{text:e,after:!1}}}function _s(e,t){let{form:n,name:r,document:o}=t,i=Ce(t.labels,t.locale),a=o.createElement("div"),s=o.createElement("div"),d=o.createElement("button");d.type="button",d.className="fd-button fd-button-link",d.textContent=i.choicesFailed,d.onclick=()=>n.loadChoices(r),s.setAttribute("role","status"),a.style.cssText="display:grid;gap:4px";let l=new Map,f,c=null,v=m=>{f?.destroy?.(),f=e({...t,field:{...t.field,options:m}}),f.element.getAttribute("role")&&f.element.setAttribute("aria-labelledby",`${t.id}-label`),a.replaceChildren(f.element,s,d)};return v([]),n.getState().choices[r]||n.loadChoices(r),{element:a,focus:()=>f.focus(),destroy:()=>f.destroy?.(),update(m){let S=n.getState().choices[r];if(S?.options&&S.options!==c){c=S.options;for(let u of c)l.set(u.value,u.label);v(c)}f.update(m);let g=c&&!t.field.other?[m.value].flat().filter(u=>u!=null&&!c?.some(y=>y.value===u)):[];s.className=S?.loading?"fd-help":"fd-warning",s.textContent=S?.loading?i.loadingChoices:g.length?_e(i.notOffered,{name:g.map(u=>l.get(u)??String(u)).join(", ")}):"",s.hidden=!s.textContent,d.hidden=!S?.error}}}var Us=({form:e,name:t,node:n,id:r,document:o,labels:i,locale:a})=>{let s=Ce(i,a),d=Se(o),l=d("div",{id:r,class:"fd-points fd-yes-no",role:"radiogroup"}),f=!1,c=[!0,!1].map(m=>{let S=n.options?.[m?"yesLabel":"noLabel"],g=d("button",{type:"button",role:"radio"},typeof S=="string"&&S?S:m?s.yes:s.no);return g.addEventListener("click",()=>e.setValue(t,m)),l.append(g),g});l.addEventListener("keydown",m=>{let S=c.indexOf(m.target);f||S===-1||!m.key.startsWith("Arrow")||(m.preventDefault(),e.setValue(t,S===1),c[1-S].focus())});let v=nn(o,s,()=>{e.setValue(t,null),c[0].focus()},n);return{element:d("div",{class:"fd-choices-box"},l,v.button),focus:()=>(c.find(m=>m.getAttribute("aria-checked")==="true")??c[0]).focus(),update(m){f=m.readonly;let S=m.value===!0?0:m.value===!1?1:-1;c.forEach((g,u)=>{Ve(g,"aria-checked",String(u===S)),g.classList.toggle("fd-on",u===S),g.tabIndex=u===Math.max(0,S)?0:-1,g.disabled=f}),Ve(l,"aria-required",String(m.required)),v.allow(m),v.show(S!==-1),Je(l,m)}}};var Fc=new Set(["info","success","warning","danger","muted"]),ko=({field:e,node:t,id:n,document:r,locale:o="en"})=>{let i=t.options?.tones??{},a=r.createElement("span");return a.id=n,a.className="fd-value-badge",a.hidden=!0,{element:a,focus:()=>{},update({value:s,values:d}){let l=St(e,s,d,o);a.textContent!==l&&(a.textContent=l),a.hidden=l==="";let f=s!==null&&typeof s=="object"&&"id"in s?String(s.id):String(s),c=i[f];typeof c=="string"&&Fc.has(c)?a.dataset.tone=c:delete a.dataset.tone}}};var Ks=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a=tt.en,locale:s,dialogs:d})=>{let l=n,f=Se(i),c=l.fields??{},v=(r.columns??[]).filter(I=>c[I]),m=I=>typeof r.options?.[I]=="string"&&r.options[I].trim()?r.options[I]:null,S=!!d&&d.canOpen(l.relation),g=f("tr",{},...v.map(I=>f("th",{scope:"col","data-column":I},c[I].label)),f("th",{class:"fd-lines-tools"})),u=f("tbody"),y=f("table",{class:"fd-lines-table fd-links-table"},f("thead",{},g),u),b=f("button",{type:"button",class:"fd-button fd-button-link fd-lines-add","data-add":"line"},`+ ${m("addLabel")??a.addLine}`),w=f("div",{class:"fd-lines-adds"},b),L=m("emptyLabel"),x=L?f("div",{class:"fd-help fd-lines-empty"},L):null,R=f("div",{class:"fd-lines fd-links",id:o,role:"group"},f("div",{class:"fd-lines-scroll"},y),...x?[x]:[],w),E=new Map,k=new Set,h=!1,N=[],z=()=>e.getState().values[t]??[];function T(I,B=!1){let j=I.map(P=>P.id).filter(P=>B||!E.has(String(P))&&!k.has(String(P)));if(j.length){for(let P of j)k.add(String(P));e.linkedValues(t,j,v).then(P=>{for(let{id:q,values:$}of P)E.set(String(q),$);for(let q of j)k.delete(String(q));V()},()=>j.forEach(P=>k.delete(String(P))))}}b.addEventListener("click",async()=>{if(!d||h)return;let I=await d.searchMore({title:l.label,search:(B,j)=>e.search(t,B,j)});!I||z().some(B=>B.id===I.id)||e.setValue(t,[...z(),{id:I.id,label:I.label}])});async function W(I){let B=await d?.openRecord(l.relation,{recordId:I.id,title:I.label});B&&(B.label!==I.label&&e.setValue(t,z().map(j=>j.id===I.id?{id:j.id,label:B.label}:j)),T([I],!0))}function D(I){let B=E.get(String(I.id)),j=v.map((q,$)=>{let te=B?St(c[q],B[q]??null,B,s):$===0?I.label:"";return f("td",{"data-column":q},f("span",{class:"fd-value-text"},te))}),P=f("td",{class:"fd-lines-tools"});if(S){let q=f("button",{type:"button",class:"fd-line-open","aria-label":De(a.openNamed,{name:I.label}),title:a.openLine},"\u2197");q.addEventListener("click",()=>{W(I)}),P.append(q)}if(!h){let q=f("button",{type:"button",class:"fd-line-delete","aria-label":De(a.remove,{name:I.label})},"\xD7");q.addEventListener("click",()=>e.setValue(t,z().filter($=>$.id!==I.id))),P.append(q)}return f("tr",{"data-record":String(I.id)},...j,P)}function V(){let I=i.activeElement,B=R.contains(I)?I.closest("tr")?.dataset.record:void 0;u.replaceChildren(...N.map(D)),B&&u.querySelector(`tr[data-record="${CSS.escape(B)}"] button`)?.focus()}return{element:R,focus:()=>(u.querySelector("button")??b).focus(),update(I){let B=I.value??[],j=B!==N||I.readonly!==h;h=I.readonly,N=B,w.hidden=h||!d,x&&(x.hidden=B.length>0),Ve(R,"aria-invalid",String(I.invalid)),Ve(R,"aria-describedby",I.describedBy||null),j&&V(),T(B)}}};var Si=({form:e,name:t,field:n,id:r,document:o})=>{let i=Se(o),a=n.type==="selection"?n.options.map(c=>({value:c.value,label:c.label})):[{value:!1,label:""},{value:!0,label:n.label}],s=i("div",{id:r,class:"fd-priority",role:"radiogroup"}),d=a.slice(1).map((c,v)=>{let m=i("button",{type:"button",role:"radio",class:"fd-priority-star","aria-label":c.label,title:c.label,"data-value":String(c.value)},"\u2605");return m.addEventListener("click",()=>e.setValue(t,l(e.getState().values[t])===v+1?a[0].value:c.value)),s.append(m),m}),l=c=>Math.max(0,a.findIndex(v=>v.value===c)),f=!1;return s.addEventListener("keydown",c=>{if(f)return;let v=It(s)?"ArrowLeft":"ArrowRight",m=It(s)?"ArrowRight":"ArrowLeft",S=c.key===v||c.key==="ArrowUp"?1:c.key===m||c.key==="ArrowDown"?-1:0;if(!S)return;c.preventDefault();let g=Math.min(a.length-1,Math.max(0,l(e.getState().values[t])+S));e.setValue(t,a[g].value),d[Math.max(0,g-1)]?.focus()}),{element:s,focus:()=>(d.find(c=>c.tabIndex===0)??d[0])?.focus(),update(c){f=c.readonly;let v=l(c.value);d.forEach((m,S)=>{Ve(m,"aria-checked",String(v===S+1)),m.classList.toggle("fd-on",S<v);let g=v===S+1||v===0&&S===0?0:-1;m.tabIndex!==g&&(m.tabIndex=g),m.disabled!==c.readonly&&(m.disabled=c.readonly)}),Je(s,c)}}};function Gn(e,t,n,r){let o=e.ownerDocument,i=d=>{!n.contains(d.target)&&!t.contains(d.target)&&s()};function a(){n.hidden=!1,t.setAttribute("aria-expanded","true");let d=e.closest(".fd-form");if(d){d.append(n),Object.assign(n.style,{position:"absolute",top:"0px",left:"0px",right:"auto"});let[l,f,c]=[t.getBoundingClientRect(),n.getBoundingClientRect(),n.offsetWidth],v=getComputedStyle(e).direction==="rtl",m=o.documentElement.clientWidth||c,S=Math.max(8,Math.min(v?l.right-c:l.left,m-c-8));Object.assign(n.style,{top:`${l.bottom-f.top+4}px`,left:`${S-f.left}px`})}o.addEventListener("pointerdown",i,!0)}function s(){if(!n.hidden){if(n.hidden=!0,t.setAttribute("aria-expanded","false"),n.parentElement!==e){e.append(n);for(let d of["position","top","left","right"])n.style.removeProperty(d)}o.removeEventListener("pointerdown",i,!0),r()}}return{open:a,close:s,isOpen:()=>!n.hidden}}var Ac={normal:"muted",grey:"muted",blocked:"danger",red:"danger",done:"success",green:"success",waiting:"warning"},Gs=["muted","danger","success","warning","info"],Tc=new Set(["info","success","warning","danger","muted"]),Js=({form:e,name:t,field:n,node:r,id:o,document:i})=>{let a=Se(i),s=n.type==="selection"?n.options:[],d=r.options?.tones??{},l=(R,E)=>{let k=d[String(R)];return typeof k=="string"&&Tc.has(k)?k:Ac[String(R)]??Gs[E%Gs.length]},f=()=>a("span",{class:"fd-dot","aria-hidden":"true"}),c=a("button",{type:"button",id:o,class:"fd-dot-button","aria-haspopup":"menu","aria-expanded":"false","aria-controls":`${o}-menu`},f()),v=r.options?.label===!0?a("span",{class:"fd-dot-label"}):null,m=s.map((R,E)=>{let k=a("div",{role:"menuitemradio",class:"fd-dot-item",tabindex:"-1","data-tone":l(R.value,E)},f(),R.label);return k.addEventListener("click",()=>x(E)),k}),S=a("div",{id:`${o}-menu`,role:"menu",class:"fd-dot-menu","aria-label":n.label,hidden:""},...m),g=a("span",{class:"fd-dot-box"},c,...v?[v]:[],S),u=()=>s.findIndex(R=>R.value===e.getState().values[t]),y=!1,b=Gn(g,c,S,()=>{y&&c.focus(),y=!1});function w(R=Math.max(0,u())){b.open(),m[R]?.focus()}function L(R){y=R,b.close()}function x(R){e.setValue(t,s[R].value),L(!0)}return c.addEventListener("click",()=>S.hidden?w():L(!0)),c.addEventListener("keydown",R=>{R.key!=="ArrowDown"&&R.key!=="ArrowUp"&&R.key!=="Enter"&&R.key!==" "||(R.preventDefault(),w(R.key==="ArrowUp"?u()<0?m.length-1:u():void 0))}),S.addEventListener("keydown",R=>{let E=m.indexOf(i.activeElement),k={ArrowDown:E+1,ArrowUp:E-1,Home:0,End:m.length-1}[R.key];k!==void 0?(R.preventDefault(),m[(k+m.length)%m.length]?.focus()):R.key==="Enter"||R.key===" "?(R.preventDefault(),E>=0&&x(E)):R.key==="Escape"?(R.preventDefault(),R.stopPropagation(),L(!0)):R.key==="Tab"&&L(!0)}),{element:g,focus:()=>c.focus(),destroy:()=>L(!1),update(R){let E=s.findIndex(h=>h.value===R.value),k=E<0?"":s[E].label;Ve(c,"aria-label",k?`${n.label}: ${k}`:n.label),Ve(c,"title",k||null),Ve(c,"data-tone",E<0?"muted":l(R.value,E)),v&&lt(v,k),m.forEach((h,N)=>Ve(h,"aria-checked",String(N===E))),c.disabled!==R.readonly&&(c.disabled=R.readonly),R.readonly&&L(!1),Je(c,R)}}};var So=["transparent","#f06050","#f4a460","#f7cd1f","#6cc1ed","#814968","#eb7e7f","#2c8397","#475577","#d6145f","#30c381","#9365b8"],$c=({form:e,name:t,field:n,id:r,document:o,labels:i,locale:a})=>{let s=Se(o),d=Ce(i,a).colourNames.split("|"),l=s("button",{type:"button",id:r,class:"fd-colour-button","aria-haspopup":"true","aria-expanded":"false","aria-controls":`${r}-palette`}),f=So.map((b,w)=>{let L=s("button",{type:"button",role:"radio",class:"fd-colour","aria-label":d[w]??String(w),title:d[w]??String(w),tabindex:"-1","data-colour":String(w)});return L.style.setProperty("--fd-swatch",b),L.addEventListener("click",()=>y(w)),L}),c=s("div",{id:`${r}-palette`,role:"radiogroup",class:"fd-colour-palette","aria-label":n.label,hidden:""},...f),v=s("span",{class:"fd-colour-box"},l,c),m=!1,S=Gn(v,l,c,()=>{m&&l.focus(),m=!1}),g=()=>{let b=e.getState().values[t];return typeof b=="number"&&b>=0&&b<So.length?b:0};function u(b){m=b,S.close()}function y(b){e.setValue(t,b),u(!0)}return l.addEventListener("click",()=>{if(S.isOpen())return u(!0);S.open(),f[g()].focus()}),c.addEventListener("keydown",b=>{let w=f.indexOf(o.activeElement),L=It(v)?"ArrowLeft":"ArrowRight",x=It(v)?"ArrowRight":"ArrowLeft",R=b.key===L||b.key==="ArrowDown"?w+1:b.key===x||b.key==="ArrowUp"?w-1:b.key==="Home"?0:b.key==="End"?f.length-1:null;R!==null?(b.preventDefault(),f[(R+f.length)%f.length].focus()):(b.key==="Enter"||b.key===" ")&&w>=0?(b.preventDefault(),y(w)):b.key==="Escape"?(b.preventDefault(),b.stopPropagation(),u(!0)):b.key==="Tab"&&u(!0)}),{element:v,focus:()=>l.focus(),destroy:()=>u(!1),update(b){let w=typeof b.value=="number"&&b.value>=0&&b.value<So.length?b.value:0;l.style.setProperty("--fd-swatch",So[w]),l.classList.toggle("fd-colour-none",w===0),Ve(l,"aria-label",`${n.label}: ${d[w]??w}`),Ve(l,"title",d[w]??String(w)),f.forEach((L,x)=>Ve(L,"aria-checked",String(x===w))),l.disabled!==b.readonly&&(l.disabled=b.readonly),b.readonly&&u(!1),Je(l,b)}}},Mc=({form:e,name:t,id:n,document:r})=>{let o=Se(r),i=o("input",{id:n,type:"color",class:"fd-colour-input"}),a=o("span",{class:"fd-colour-code",dir:"ltr"});return i.addEventListener("input",()=>e.setValue(t,i.value)),{element:o("span",{class:"fd-colour-box"},i,a),focus:()=>i.focus(),update(s){let d=typeof s.value=="string"?s.value:"",l=/^#[0-9a-f]{6}$/i.test(d)?d.toLowerCase():"#000000";i.value!==l&&(i.value=l),lt(a,d),i.disabled!==s.readonly&&(i.disabled=s.readonly),Je(i,s)}}},Ei=e=>e.field.type==="char"?Mc(e):$c(e);var Li=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s})=>{let d=Se(i),l=Ce(a,s),f=n.type==="text",c=f?d("textarea",{id:o,class:"fd-input fd-textarea",rows:"3"}):d("input",{id:o,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 v=d("button",{type:"button",class:"fd-button fd-copy-button",hidden:""},l.copyValue),m=d("span",{class:"fd-sr-only",role:"status"}),S;return v.addEventListener("click",async()=>{let g=String(e.getState().values[t]??"");if(g){try{await navigator.clipboard.writeText(g)}catch{c.select(),i.execCommand?.("copy")}lt(v,l.copied),lt(m,l.copied),clearTimeout(S),S=setTimeout(()=>{lt(v,l.copyValue),lt(m,"")},2e3)}}),{element:d("span",{class:`fd-copy${f?" fd-copy-long":""}`},c,v,m),focus:()=>c.focus(),destroy:()=>clearTimeout(S),update(g){let u=g.value===null||g.value===void 0?"":String(g.value);c.value!==u&&(c.value=u),c.readOnly!==g.readonly&&(c.readOnly=g.readonly),v.hidden=!u,Je(c,g)}}};var Ro=e=>String(e).padStart(2,"0"),Jt=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t),Eo=(e,t)=>new Date(e.getFullYear(),e.getMonth()+t,Math.min(e.getDate(),new Date(e.getFullYear(),e.getMonth()+t+1,0).getDate())),Lo=(e,t)=>!!e&&!!t&&e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),Nc='<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>',Ri=e=>`${e.getFullYear()}-${Ro(e.getMonth()+1)}-${Ro(e.getDate())}`,Fi=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s="en"})=>{let d=Se(i),l=Ce(a,s),f=n.type==="datetime"?"datetime":"date",c=typeof r.options?.endField=="string"?r.options.endField:null,v=c?e.page.fields[c]?.label??c:"",m=s==="en"?"en-GB":s,S=new Intl.DateTimeFormat(m,{month:"long",year:"numeric",numberingSystem:"latn"}),g=new Intl.DateTimeFormat(m,{weekday:"long",day:"numeric",month:"long",year:"numeric",numberingSystem:"latn"}),u=new Intl.DateTimeFormat(m,{weekday:"short"}),y=X=>{if(typeof X!="string"||!X)return"";if(f==="date")return X.slice(0,10);let G=new Date(X);return Number.isNaN(G.getTime())?"":`${Ri(G)}T${Ro(G.getHours())}:${Ro(G.getMinutes())}`},b=X=>{let G=y(X),U=/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}))?/.exec(G);return U?new Date(Number(U[1]),Number(U[2])-1,Number(U[3]),Number(U[4]??0),Number(U[5]??0)):null},w=(X,G)=>{if(f==="date")return Ri(X);let U=b(G);return new Date(X.getFullYear(),X.getMonth(),X.getDate(),U?.getHours()??0,U?.getMinutes()??0).toISOString()},L=(X,G,U)=>{let ne=d("input",{type:f==="date"?"date":"datetime-local",class:"fd-input fd-range-input","aria-label":G,...U?{id:U}:{}});return ne.addEventListener("input",()=>{if(!ne.value)return e.setValue(X,null);if(f==="date")return e.setValue(X,ne.value);let $e=new Date(ne.value);Number.isNaN($e.getTime())||e.setValue(X,$e.toISOString())}),ne},x=L(t,n.label,o),R=c?L(c,v):null,E=d("button",{type:"button",class:"fd-calendar-button fd-range-button","aria-label":l.chooseDate,"aria-haspopup":"dialog","aria-expanded":"false","aria-controls":`${o}-range`});E.innerHTML=Nc;let k=d("button",{type:"button","aria-label":l.previousMonth},"\u2039"),h=d("button",{type:"button","aria-label":l.nextMonth},"\u203A"),N=d("span",{class:"fd-calendar-title","aria-live":"polite"}),z=d("table",{class:"fd-calendar-grid",role:"grid"}),T=d("div",{id:`${o}-range`,class:"fd-calendar fd-range-calendar",role:"dialog",hidden:""},d("div",{class:"fd-calendar-head"},k,N,h),z),W=d("div",{class:"fd-range",role:"group"},d("span",{class:"fd-range-box"},x,...R?[d("span",{class:"fd-range-arrow","aria-hidden":"true"},"\u2192"),R]:[]),E,T),D=new Date,V=null,I=null;function B(X){let G=e.getState().values;if(!c)return e.setValue(t,w(X,G[t])),$();if(!V)return V=X,D=X,j(!0);let[U,ne]=X<V?[X,V]:[V,X];V=null,e.setValue(t,w(U,G[t])),e.setValue(c,w(ne,G[c])),$()}function j(X){let G=e.getState().values,U=V??b(G[t]),ne=V?I&&I>=V?I:null:c?b(G[c]):null,$e=S.format(D);N.textContent=$e,T.setAttribute("aria-label",$e);let Le=new Date(D.getFullYear(),D.getMonth(),1),xe=Jt(Le,-((Le.getDay()+6)%7)),Me=d("tr",{},...Array.from({length:7},(K,Q)=>d("th",{scope:"col"},u.format(Jt(xe,Q)).replace(/\.$/,"")))),ie=d("tbody");for(let K=xe;K<=new Date(D.getFullYear(),D.getMonth()+1,0);K=Jt(K,7)){let Q=d("tr");for(let me=0;me<7;me++){let Re=Jt(K,me),oe=d("button",{type:"button","data-day":Ri(Re),"aria-label":g.format(Re),tabindex:Lo(Re,D)?"0":"-1"},String(Re.getDate()));Re.getMonth()!==D.getMonth()&&oe.classList.add("fd-outside");let ve=Lo(Re,U)||Lo(Re,ne);ve&&oe.setAttribute("aria-selected","true"),U&&ne&&Re>U&&Re<ne&&!ve&&oe.classList.add("fd-in-range"),Lo(Re,new Date)&&oe.setAttribute("aria-current","date"),oe.addEventListener("click",()=>B(Re)),oe.addEventListener("pointerenter",()=>{if(V){I=Re;for(let Y of z.querySelectorAll("button[data-day]")){let re=b(Y.dataset.day);Y.classList.toggle("fd-in-range",!!re&&re>V&&re<Re)}}}),oe.addEventListener("keydown",Y=>P(Y,Re)),Q.append(d("td",{},oe))}ie.append(Q)}z.replaceChildren(d("thead",{},Me),ie),X&&z.querySelector('button[tabindex="0"]')?.focus()}function P(X,G){let U=It(W),ne={ArrowLeft:()=>Jt(G,U?1:-1),ArrowRight:()=>Jt(G,U?-1:1),ArrowUp:()=>Jt(G,-7),ArrowDown:()=>Jt(G,7),PageUp:()=>Eo(G,-1),PageDown:()=>Eo(G,1),Home:()=>Jt(G,-((G.getDay()+6)%7)),End:()=>Jt(G,6-(G.getDay()+6)%7)};ne[X.key]?(X.preventDefault(),D=ne[X.key](),V&&(I=D),j(!0)):(X.key==="Enter"||X.key===" ")&&(X.preventDefault(),B(G))}function q(){V=null,I=null,D=b(e.getState().values[t])??new Date,T.hidden=!1,E.setAttribute("aria-expanded","true"),j(!0)}function $(){T.hidden||(T.hidden=!0,V=null,E.setAttribute("aria-expanded","false"),E.focus())}E.addEventListener("click",()=>T.hidden?q():$()),k.addEventListener("click",()=>(D=Eo(D,-1),j(!1))),h.addEventListener("click",()=>(D=Eo(D,1),j(!1))),T.addEventListener("keydown",X=>{X.key==="Escape"&&(X.preventDefault(),X.stopPropagation(),$())});let te=X=>{T.hidden||W.contains(X.target)||(T.hidden=!0,V=null,E.setAttribute("aria-expanded","false"))};return i.addEventListener("mousedown",te),{element:W,focus:()=>x.focus(),destroy:()=>i.removeEventListener("mousedown",te),update(X){for(let[G,U]of[[x,X.value],...R&&c?[[R,X.values[c]]]:[]]){let ne=y(U);i.activeElement!==G&&G.value!==ne&&(G.value=ne),G.readOnly!==X.readonly&&(G.readOnly=X.readonly),G.classList.toggle("fd-blank",!ne)}E.hidden=X.readonly,X.readonly&&(T.hidden=!0),Ve(W,"aria-labelledby",null),Je(x,X)}}};var Ai=e=>String(e).padStart(2,"0");function Cc(e){let t=Math.max(0,Math.floor(e));return`${Ai(Math.floor(t/3600))}:${Ai(Math.floor(t%3600/60))}:${Ai(t%60)}`}var Ys=e=>{if(typeof e!="string"||!e)return null;let t=new Date(e).getTime();return Number.isNaN(t)?null:t},Ti=({field:e,node:t,id:n,document:r})=>{let o=Se(r),i=e.type==="datetime",a=!i&&typeof t.options?.startField=="string"?t.options.startField:null,s=t.options?.unit==="minutes"?60:3600,d=o("span",{class:"fd-timer-time"}),l=o("span",{id:n,role:"timer",class:"fd-timer"},o("span",{class:"fd-timer-dot","aria-hidden":"true"}),d);Ve(l,"aria-label",e.label);let f=0,c=null,v,m=()=>lt(d,Cc(f+(c===null?0:(Date.now()-c)/1e3))),S=()=>{clearInterval(v),v=void 0};return{element:l,focus:()=>{},destroy:S,update(g){f=!i&&typeof g.value=="number"?g.value*s:0,c=i?Ys(g.value):a?Ys(g.values[a]):null,c!==null?l.dataset.running="true":delete l.dataset.running,m(),c===null?S():v||(v=setInterval(()=>l.isConnected?m():S(),1e3))}}};var Xs=e=>typeof e=="number"&&e>0?e:480,Oc=e=>/^https?:\/\//i.test(e);function Pc(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 Zs=e=>{let t=Se(e.document),n=Ce(e.labels,e.locale),r=fr({...e,node:{...e.node,widget:void 0}}),o=t("iframe",{class:"fd-embed-frame"});o.style.height=`${Xs(e.node.options?.height)}px`;let i=t("div",{class:"fd-embed-none"},n.noDocument),a=t("div",{class:"fd-embed-view"}),s,d="",l=()=>d.startsWith("blob:")&&URL.revokeObjectURL(d);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!==s&&(s=c,l(),d=c?Pc(c):"",d&&(o.title=c?.name??e.field.label,o.src=d)),a.replaceChildren(...d?[o]:f.readonly?[i]:[])}}},Qs=({form:e,name:t,field:n,node:r,id:o,document:i,labels:a,locale:s})=>{let d=Se(i),l=Ce(a,s),f=d("input",{id:o,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=d("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=`${Xs(r.options?.height)}px`;let v=d("a",{class:"fd-button fd-button-link fd-embed-open",target:"_blank",rel:"noopener noreferrer",hidden:""},l.openInNewTab),m=d("div",{class:"fd-embed-view"}),S="";return{element:d("div",{class:"fd-embed"},d("div",{class:"fd-embed-bar"},f,v),m),focus:()=>f.focus(),update(g){let u=typeof g.value=="string"?g.value.trim():"";i.activeElement!==f&&f.value!==(typeof g.value=="string"?g.value:"")&&(f.value=typeof g.value=="string"?g.value:""),f.readOnly!==g.readonly&&(f.readOnly=g.readonly),f.hidden=g.readonly;let y=Oc(u)?u:"";y!==S&&(S=y,y&&(c.src=y),m.replaceChildren(...y?[c]:[])),v.hidden=!y,y&&(v.href=y)}}};var on=e=>typeof e=="number"?e:Number(e)||0;function Ic(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 o=n.groups_by_subtotal??{},i=n.subtotals??[{name:t,amount:on(n.amount_untaxed)}];return{subtotals:(n.subtotals_order??i.map(s=>s.name)).map(s=>({name:s,amount:on(i.find(d=>d.name===s)?.amount??n.amount_untaxed),groups:(o[s]??[]).map((d,l)=>({name:String(d.tax_group_name??""),amount:on(d.tax_group_amount),at:[s,l]}))})),total:on(n.amount_total)}}let r=(Array.isArray(n.groups)?n.groups:[]).map((o,i)=>({name:String(o.name??""),amount:on(o.amount),at:i}));return{subtotals:[{name:t,amount:on(n.untaxed),groups:r}],total:on(n.total)}}var ed=({form:e,name:t,node:n,id:r,document:o,labels:i,locale:a="en"})=>{let s=Se(o),d=Ce(i,a),l=n.options??{},f=typeof l.currencyField=="string"?l.currencyField:null,c=typeof l.currency=="string"?l.currency:null,v=s("tbody"),m=s("table",{id:r,class:"fd-tax-totals"},v),S="";function g(u,y){let b=JSON.parse(JSON.stringify(e.getState().values[t])),w=u.amount;if(Array.isArray(u.at)){let[L,x]=u.at;b.groups_by_subtotal[L][x].tax_group_amount=y,b.amount_total=Math.round((on(b.amount_total)+y-w)*100)/100}else b.groups[u.at].amount=y,b.total=Math.round((on(b.total)+y-w)*100)/100;e.setValue(t,b)}return{element:m,focus:()=>m.querySelector("input")?.focus(),update(u){let y=Ic(u.value,d.untaxed),b=f?u.values[f]:null,w=c??(b&&typeof b=="object"&&"label"in b?b.label:typeof b=="string"?b:""),L=h=>/^[A-Z]{3}$/.test(w)?Fn(h,w,2,a):ht(h,2,a),x=l.editable===!0&&!u.readonly,R=JSON.stringify([y,w,x]);if(R===S||m.contains(o.activeElement))return;S=R;let E=(h,N,z)=>s("tr",{class:z},s("th",{scope:"row"},h),s("td",{},N)),k=[];for(let h of y?.subtotals??[]){k.push(E(h.name,L(h.amount),"fd-tax-subtotal"));for(let N of h.groups){if(!x){k.push(E(N.name,L(N.amount),"fd-tax-group"));continue}let z=s("input",{type:"text",class:"fd-input fd-number-input",inputmode:"decimal",autocomplete:"off","aria-label":N.name});z.value=ht(N.amount,2,a),z.addEventListener("change",()=>{let T=Ut(z.value.trim(),a);/^-?(\d+\.?\d*|\.\d+)$/.test(T)&&g(N,Number(T))}),k.push(E(N.name,z,"fd-tax-group"))}}y&&k.push(E(d.total,L(y.total),"fd-tax-total")),v.replaceChildren(...k)}}};var Fo=e=>typeof e=="string"?e:typeof e=="number"?String(e):"";function Vc(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:Fo(n.date),amount:typeof n.amount=="number"?n.amount:Number(n.amount)||0,name:Fo(n.name),journal:Fo(n.journal_name??n.journal),memo:Fo(n.ref??n.memo),id:n.account_payment_id??n.payment_id??n.id??null}))}var td=({node:e,id:t,document:n,labels:r,locale:o="en",dialogs:i})=>{let a=Se(n),s=Ce(r,o),d=e.options??{},l=typeof d.currencyField=="string"?d.currencyField:null,f=typeof d.dueField=="string"?d.dueField:null,c=typeof d.model=="string"?d.model:"account.payment",v=a("ul",{class:"fd-payments-list"}),m=a("div",{class:"fd-payment-due",hidden:""}),S=a("div",{id:t,class:"fd-payments"},v,m),g={type:"date",label:""},u="",y=null;return{element:S,focus:()=>v.querySelector("button")?.focus(),destroy:()=>y?.(),update(b){let w=l?b.values[l]:null,L=w&&typeof w=="object"&&"label"in w?w.label:typeof w=="string"?w:"",x=h=>/^[A-Z]{3}$/.test(L)?Fn(h,L,2,o):ht(h,2,o),R=Vc(b.value),E=f?b.values[f]:null,k=JSON.stringify([R,L,E]);k!==u&&(u=k,y?.(),v.replaceChildren(...R.map((h,N)=>{let z=x(h.amount),T=a("button",{type:"button",class:"fd-payment-info","aria-label":De(s.paymentOf,{amount:z}),"aria-haspopup":"dialog","aria-expanded":"false","aria-controls":`${t}-payment-${N}`},"i"),W=(q,$)=>$?[a("dt",{},q),a("dd",{},$)]:[],D=h.id!==null&&i?.canOpen(c)?a("button",{type:"button",class:"fd-button fd-button-link fd-payment-open"},s.openPayment):null,V=a("div",{id:`${t}-payment-${N}`,class:"fd-payment-details",role:"dialog","aria-label":De(s.paymentOf,{amount:z}),tabindex:"-1",hidden:""},a("strong",{},h.name||z),a("span",{class:"fd-payment-details-amount"},z),a("dl",{},...W(s.journal,h.journal),...W(s.memo,h.memo)),...D?[D]:[]),I=a("li",{class:"fd-payment"},T,a("span",{class:"fd-payment-date"},De(s.paidOn,{date:St(g,h.date,{},o)})),a("span",{class:"fd-payment-amount"},z),V),B=!1,j=Gn(I,T,V,()=>{B&&T.focus(),B=!1,y===P&&(y=null)}),P=()=>j.close();return T.addEventListener("click",()=>{if(j.isOpen())return P();y?.(),j.open(),y=P,(D??V).focus()}),V.addEventListener("keydown",q=>{q.key==="Escape"&&(q.preventDefault(),q.stopPropagation(),B=!0,P())}),D?.addEventListener("click",()=>{P(),i?.openRecord(c,{recordId:h.id,title:h.name||z})}),I})),m.hidden=E==null,m.replaceChildren(a("span",{},s.amountDue),a("strong",{},typeof E=="number"?x(E):"")))}}};function Ot(e,t=e.widgets??{}){let n=e.widgets===t?e:{...e,widgets:t},{field:r,node:o}=n,i=[o.widget?`${r.type}.${o.widget}`:null,r.type==="selection"&&r.multiple?"selection.checkboxes":null,r.type==="many2many"&&o.columns?.length?"many2many.table":null,r.type].filter(a=>a!==null);for(let a of i){let s=t[a]??od[a];if(s)return r.type==="selection"&&r.optionsFrom?_s(s,n):s(n)}return qc(n)}function nt(e,t,n={},...r){let o=e.createElement(t);for(let[i,a]of Object.entries(n))a!==void 0&&o.setAttribute(i,a);return o.append(...r),o}function an(e,t){Ve(e,"aria-invalid",String(t.invalid)),Ve(e,"aria-required",e.getAttribute("role")==="group"?null:String(t.required)),Ve(e,"aria-describedby",t.describedBy||null)}var $o=e=>e==null?"":String(e);function Jn(e){return t=>{let{form:n,name:r,field:o,node:i,id:a,document:s}=t,d=nt(s,"input",{id:a,type:e,class:"fd-input",autocomplete:/^(email|tel|url)$/.test(e)?e:"off"});return o.type==="char"&&o.size!==void 0&&(d.maxLength=o.size),e==="time"&&wo(d,o,i),i.placeholder&&(d.placeholder=i.placeholder),d.addEventListener("input",()=>n.setValue(r,d.value===""?null:d.value)),wi({element:d,focus:()=>d.focus(),update(l){let f=$o(l.value);d.value!==f&&(d.value=f),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),an(d,l)}},t,d)}}var Dc=e=>{let{form:t,name:n,field:r,node:o,id:i,document:a}=e,s=nt(a,"textarea",{id:i,class:"fd-input fd-textarea",rows:"3"});r.type==="text"&&r.size!==void 0&&(s.maxLength=r.size),o.placeholder&&(s.placeholder=o.placeholder);let d=qs(s,o);return s.addEventListener("input",()=>{d(),t.setValue(n,s.value===""?null:s.value)}),wi({element:s,focus:()=>s.focus(),update(l){let f=$o(l.value);s.value!==f&&(s.value=f,d()),s.readOnly!==l.readonly&&(s.readOnly=l.readonly),an(s,l)}},e,s)},Wc=/^-?(\d+\.?\d*|\.\d+)$/,Hc=/^-?\.?$/,$i=e=>{let{form:t,name:n,field:r,node:o,id:i,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,f=N=>typeof N=="number"?ht(N,l,s):$o(N),c=nt(a,"input",{id:i,type:"text",class:"fd-input fd-number-input",autocomplete:"off"});c.inputMode=d?"numeric":"decimal",o.placeholder&&(c.placeholder=o.placeholder);let v=N=>{let z=Ut(N.trim(),s);if(z==="")return null;if(Wc.test(z))return Number(z);if(!Hc.test(z))return z};c.addEventListener("input",()=>{let N=v(c.value);N!==void 0&&t.setValue(n,N)}),c.addEventListener("focus",()=>{queueMicrotask(()=>{let N=t.getState().values[n];if(a.activeElement!==c||c.readOnly||typeof N!="number"||c.value!==f(N))return;let z=c.value,[T,W]=[c.selectionStart??z.length,c.selectionEnd??z.length],D=V=>dr(z.slice(0,V),s).length;c.value=dr(z,s),c.setSelectionRange(D(T),D(W))})}),c.addEventListener("blur",()=>{c.value=f(t.getState().values[n])});let m=o.options??{},S=r.type==="monetary"?r.currencyField:void 0,g=S?t.page.fields[S]:void 0,u=S&&g&&m.pickCurrency===!0?Ot({...e,name:S,field:g,node:{type:"field",id:`${o.id}.currency`,field:S},id:`${i}-currency`}):null;u&&g&&u.element.querySelector("input, select")?.setAttribute("aria-label",g.label),u?.element.matches("input, select")&&g&&u.element.setAttribute("aria-label",g.label);let y=m.symbol?m.symbol==="after":r.type==="monetary"&&ki(r.currency??"USD",s).after,b=(N,z)=>nt(a,"span",{class:`fd-unit${r.type==="monetary"?" fd-currency":""}`,id:`${i}-unit${z}`},N),w=r.type==="monetary"&&!u?b("",0):null,[L,x]=["prefix","suffix"].map((N,z)=>typeof m[N]=="string"&&m[N]?b(m[N],z+1):null),R=(y?null:u?.element??w)??L,E=(y?u?.element??w:null)??x,k=[R,E].filter(N=>!!N&&N!==u?.element);return{element:R||E?nt(a,"span",{class:`fd-number${y?" fd-currency-after":""}${u?" fd-currency-picked":""}`},...[R,c,E].filter(N=>!!N)):c,focus:()=>c.focus(),update(N){let z=a.activeElement===c,T=v(c.value),W=T===void 0||T===N.value;if(!(z&&W)){let D=z&&!N.readonly&&typeof N.value=="number"?ni(N.value,l,s):f(N.value);c.value!==D&&(c.value=D)}if(c.readOnly!==N.readonly&&(c.readOnly=N.readonly),an(c,{...N,describedBy:[N.describedBy,...k.map(D=>D.id)].filter(Boolean).join(" ")}),u&&S&&u.update({value:N.values[S],values:N.values,readonly:N.readonly,required:!1,invalid:!1}),w&&r.type==="monetary"){let D=_n(r,N.values,N.parent)??"";lt(w,/^[A-Z]{3}$/.test(D)?ki(D,s).text:D)}for(let[D,V]of[[R,"start"],[E,"end"]])D&&k.includes(D)&&c.style.setProperty(`padding-inline-${V}`,`calc(var(--fd-pad-x) + ${D.textContent?.length??0}ch + 4px)`)}}};function Mi(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:o,document:i})=>{let a=nt(i,"input",{id:o,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),an(a,s)}}}}function To(e){return e.type==="selection"?e.options:[]}var jc=e=>{let{form:t,name:n,field:r,node:o,id:i,document:a}=e,s=o.options?.search;if(s===!0||s!==!1&&To(r).length>15)return Is(e);let d=rn(To(r),t,n,o),l=nt(a,"option",{value:""}),f=nt(a,"select",{id:i,class:"fd-input fd-select"},l);return d.forEach((c,v)=>f.append(nt(a,"option",{value:String(v)},c.label))),f.addEventListener("change",()=>t.setValue(n,f.value===""?null:d[Number(f.value)].value)),{element:f,focus:()=>f.focus(),update(c){let v=d.findIndex(m=>m.value===c.value);f.value=v===-1?"":String(v),l.hidden=c.required&&v!==-1,f.disabled!==c.readonly&&(f.disabled=c.readonly),an(f,c)}}};function nd(e){return({form:t,name:n,field:r,node:o,id:i,document:a,labels:s,locale:d})=>{let l=rn(To(r),t,n,o),f=Ce(s,d),c=nt(a,"div",{id:i,class:`fd-choices fd-choices-${e}`,role:e==="radio"?"radiogroup":"group"});vo(c,o);let v=e==="checkbox"?xo(Se(a),f,o):null,m=l.map((x,R)=>{let E=nt(a,"input",{type:e,name:i,value:String(R),id:`${i}-${R}`});return c.append(nt(a,"label",{class:"fd-choice",for:`${i}-${R}`},E,nt(a,"span",{},x.label))),E}),S=r.type==="selection"&&r.other===!0,g=S?nt(a,"input",{type:e,name:i,value:"other",id:`${i}-other`}):null,u=S?nt(a,"input",{type:"text",class:"fd-input fd-other-input","aria-label":f.otherAnswer,autocomplete:"off"}):null;g&&u&&(c.append(nt(a,"div",{class:"fd-choice fd-choice-other"},nt(a,"label",{class:"fd-choice-other-pick",for:`${i}-other`},g,nt(a,"span",{},f.other)),u)),u.addEventListener("input",()=>{g.checked||(g.checked=!0),y(g)}),g.addEventListener("change",()=>{g.checked&&u.focus()})),v?.element&&c.append(v.element);function y(x){if(e==="checkbox"&&x instanceof HTMLInputElement&&x.checked){let E=l[m.indexOf(x)]?.exclusive===!0;m.forEach((k,h)=>k!==x&&(E||l[h].exclusive)&&(k.checked=!1)),E&&g&&(g.checked=!1)}let R=g?.checked&&u&&u.value.trim()?u.value:null;if(e==="radio"){let E=m.findIndex(k=>k.checked);t.setValue(n,E!==-1?l[E].value:R)}else{let E=new Set(l.filter((k,h)=>m[h].checked));t.setValue(n,[...To(r).filter(k=>E.has(k)).map(k=>k.value),...R!==null?[R]:[]])}}c.addEventListener("change",x=>{x.target!==u&&y(x.target)});let b=new Set(l.map(x=>x.value)),w=()=>m.some(x=>x.checked)||g?.checked===!0,L=e==="radio"?nn(a,f,()=>{for(let x of[...m,g])x&&(x.checked=!1);t.setValue(n,null),(m[0]??g)?.focus()},o):null;return{element:L?nt(a,"div",{class:"fd-choices-box"},c,L.button):c,focus:()=>(m.find(x=>x.checked)??(g?.checked?u:null)??m[0])?.focus(),update(x){let R=Array.isArray(x.value)?x.value:[x.value],E=!!v?.full(Array.isArray(x.value)?x.value.length:0);if(m.forEach((k,h)=>{k.checked=R.includes(l[h].value);let N=x.readonly||E&&!k.checked&&!l[h].exclusive;k.disabled!==N&&(k.disabled=N)}),g&&u){let k=R.find(z=>typeof z=="string"&&!b.has(z)),h=g.checked&&!u.value.trim()&&(e==="checkbox"||R.every(z=>z==null));g.checked=k!==void 0||h,k!==void 0&&a.activeElement!==u&&(u.value=k);let N=x.readonly||E&&!g.checked;g.disabled!==N&&(g.disabled=u.disabled=N)}L?.allow(x),L?.show(w()),an(c,x)}}}}function rd(e){return({form:t,name:n,field:r,node:o,id:i,document:a,labels:s,locale:d})=>{let l=Ce(s,d),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,v=e==="rating"?o.options?.icon:"number",m=v!=="number",S=e==="scale"&&o.options?.nps===!0&&f===0&&c===10,g=nt(a,"div",{id:i,class:`fd-points fd-${m?"rating":"scale"}${m?` fd-rating-${v??"star"}`:""}${S?" fd-nps":""}`,role:"radiogroup"}),u=[],y=e==="rating"&&f===c,b=e==="rating"&&(y||o.options?.clear===!1),w=!1;for(let E=f;E<=c;E++){let k=nt(a,"button",{type:"button",role:"radio","aria-label":De(l.ofMax,{n:E,max:c}),"data-value":String(E)},v==="thumb"?wt(a,"thumb"):v==="heart"?"\u2665":m?"\u2605":String(E));e==="scale"&&k.removeAttribute("aria-label"),S&&(k.dataset.tone=E<7?"low":E<9?"mid":"high"),k.addEventListener("click",()=>t.setValue(n,b&&!w&&t.getState().values[n]===E?null:E)),u.push(k),g.append(k)}g.addEventListener("keydown",E=>{let k=t.getState().values[n],h=typeof k=="number"?k:f-1,N=E.key==="ArrowRight"||E.key==="ArrowUp"?1:E.key==="ArrowLeft"||E.key==="ArrowDown"?-1:0;if(!N)return;E.preventDefault();let z=Math.min(c,Math.max(f,h+N));t.setValue(n,z),u[z-f]?.focus()});let L=[o.options?.startLabel,o.options?.endLabel].map(E=>typeof E=="string"?E:""),x=nn(a,l,()=>{t.setValue(n,null),u[0]?.focus()},o,!y),R=L.some(Boolean)?nt(a,"div",{class:"fd-scale-box"},g,nt(a,"div",{class:"fd-scale-ends","aria-hidden":"true"},nt(a,"span",{},L[0]),nt(a,"span",{},L[1]))):g;return L.some(Boolean)&&g.setAttribute("aria-description",L.filter(Boolean).join(" \u2026 ")),{element:nt(a,"div",{class:"fd-choices-box"},R,x.button),focus:()=>(u.find(E=>E.getAttribute("aria-checked")==="true")??u[0])?.focus(),update(E){let k=typeof E.value=="number"?E.value:null;w=E.required,u.forEach((h,N)=>{let z=f+N;Ve(h,"aria-checked",String(z===k)),h.classList.toggle("fd-on",m?k!==null&&z<=k:z===k);let T=z===k||k===null&&N===0?0:-1;h.tabIndex!==T&&(h.tabIndex=T),h.disabled!==E.readonly&&(h.disabled=E.readonly)}),x.allow(E),x.show(k!==null),an(g,E)}}}}var zc=e=>{let{form:t,name:n,field:r,id:o,document:i,node:a}=e,s=nt(i,"input",{id:o,type:"date",class:"fd-input fd-date"});wo(s,r,a),s.addEventListener("input",()=>t.setValue(n,s.value||null));let d={element:s,focus:()=>s.focus(),update(l){let f=$o(l.value);s.value!==f&&(s.value=f),s.readOnly!==l.readonly&&(s.readOnly=l.readonly),s.classList.toggle("fd-blank",!f),an(s,l)}};return a.options?.weekNumbers===!0?bo(d,e,"date"):d},Ao=e=>String(e).padStart(2,"0"),Bc=e=>{let{form:t,name:n,field:r,id:o,document:i,node:a}=e,s=nt(i,"input",{id:o,type:"datetime-local",class:"fd-input fd-datetime"});wo(s,r,a);let d=f=>{if(typeof f!="string"||!f)return"";let c=new Date(f);return Number.isNaN(c.getTime())?"":`${c.getFullYear()}-${Ao(c.getMonth()+1)}-${Ao(c.getDate())}T${Ao(c.getHours())}:${Ao(c.getMinutes())}`};s.addEventListener("input",()=>{if(!s.value)return t.setValue(n,null);let f=new Date(s.value);Number.isNaN(f.getTime())||t.setValue(n,f.toISOString())});let l={element:s,focus:()=>s.focus(),update(f){let c=d(f.value);s.value!==c&&(s.value=c),s.readOnly!==f.readonly&&(s.readOnly=f.readonly),s.classList.toggle("fd-blank",!c),an(s,f)}};return a.options?.weekNumbers===!0?bo(l,e,"datetime"):l};function qc({field:e,id:t,document:n}){let r=nt(n,"span",{id:t,class:"fd-pending","data-fd-pending":e.type});return{element:r,focus:()=>{},update(o){r.textContent=mo(o.value,e)}}}function mo(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 od={char:Jn("text"),"char.email":Jn("email"),"char.phone":Jn("tel"),"char.url":Jn("url"),"char.password":Jn("password"),"char.time":Jn("time"),"char.tags":ri,text:Dc,integer:$i,float:$i,monetary:$i,"integer.rating":rd("rating"),"integer.scale":rd("scale"),"integer.slider":yi,"float.slider":yi,"integer.progressbar":ur,"integer.label":pr,"float.label":pr,"monetary.label":pr,"float.progressbar":ur,"float.duration":ds,"float.percentage":ls,"monetary.progressbar":ur,boolean:Mi(),"boolean.toggle":Mi("switch"),"boolean.tick":Mi("tick"),"boolean.buttons":Us,"boolean.priority":Si,"selection.priority":Si,"selection.dot":Js,"integer.color":Ei,"char.color":Ei,"char.copy":Li,"text.copy":Li,"date.daterange":Fi,"datetime.daterange":Fi,"float.timer":Ti,"datetime.timer":Ti,"binary.pdf":Zs,"char.embed":Qs,"json.distribution":us,"json.tax-totals":ed,"json.payments":td,selection:jc,"selection.radio":nd("radio"),"selection.checkboxes":nd("checkbox"),"selection.tags":Ps,"selection.image-choice":Ds,"selection.ranking":Ws,"selection.statusbar":go,date:zc,datetime:Bc,many2one:cr,"many2one.statusbar":go,many2many:so,"many2many.tags":so,"many2many.checkboxes":oi,"many2many.table":Ks,reference:ii,one2many:di,"one2many.cards":Bs,binary:fr,"binary.signature":Os,image:ci,html:hi,json:bi,"json.address":js,properties:mi,matrix:Cs,"char.badge":ko,"selection.badge":ko,"many2one.badge":ko};var id=`.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:"*";margin-inline-start:.25em;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 ad='.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 sd='.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-field>.fd-number:not(.fd-currency-picked){align-self:start}.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 dd=".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 ld='.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{padding-inline:var(--fd-pad-x)}.fd-form[data-fd-skin=outlined] .fd-read-text{padding-inline:calc(var(--fd-pad-x) + 1px)}.fd-form :is(.fd-title,.fd-title-line) .fd-read-text{padding-inline:0}.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 :is(.fd-oneline-row,.fd-oneline-pair)>.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 :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field>*{grid-column:auto!important}:is(.fd-oneline-row,.fd-oneline-pair)>.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}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field>:is(.fd-error,.fd-warning){flex-basis:100%}.fd-oneline-row .fd-input{width:12em;max-width:100%}.fd-form .fd-oneline-pair{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:6px 10px;flex:0 1 auto;max-width:100%;min-width:0}.fd-form .fd-oneline-pair:not(:has(>:not([hidden]))){display:none}.fd-form :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field{max-width:100%}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field>*{max-width:100%;min-width:0}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference]) .fd-input{width:15em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=integer],[data-type=float]) .fd-input{width:7em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field[data-type=monetary] .fd-input{width:8.5em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=date],[data-type=datetime]) .fd-input{width:9.5em}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field[data-type=datetime] .fd-input{width:14em}.fd-form :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference],[data-type=date],[data-type=datetime]){flex:1 1 auto}.fd-form :is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference],[data-type=date],[data-type=datetime])>:not(.fd-label){flex:1 1 auto}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field:is([data-type=many2one],[data-type=reference],[data-type=date],[data-type=datetime]) .fd-input{width:100%;min-width:min(100%,var(--fd-oneline-min, 9.5em))}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-field[data-type=datetime]{--fd-oneline-min: 14em}.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}:is(.fd-oneline-row,.fd-oneline-pair)>.fd-button-link{padding-inline:0;min-height:0}:is(.fd-oneline-row,.fd-oneline-pair)>.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 cd='.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:var(--fd-gap-x, 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 fd='.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}@layer fieldia-tokens{: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]{--fd-ground: var(--fd-page)}}.fd-form[data-scheme]{color-scheme:light;background:var(--fd-page);color:var(--fd-text);border-radius:var(--fd-radius)}:is(.fd-form,.fd-form-dialog)[data-scheme=dark]{color-scheme:dark}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto]{color-scheme:dark}}.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}@layer fieldia-tokens{:is(.fd-form,.fd-form-dialog)[data-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]{--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 bn='system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Arabic", sans-serif',ud={material:{light:{font:`Roboto, ${bn}`,text:"#1d1b20",muted:"#49454f",page:"#fef7ff",surface:"#ffffff",border:"#79747e","border-strong":"#49454f",accent:"#6750a4","accent-text":"#ffffff","accent-soft":"#eaddff",focus:"#6750a4","focus-ring":"none",error:"#b3261e","error-soft":"#f9dedc",radius:"12px","control-radius":"4px","control-height":"48px","pad-y":"10px","pad-x":"16px","input-border":"0 0 1px 0","label-weight":"500","gap-x":"24px","gap-y":"20px",fill:"#ece6f0"},dark:{text:"#e6e0e9",muted:"#cac4d0",page:"#141218",surface:"#1d1b20",border:"#938f99","border-strong":"#cac4d0",accent:"#d0bcff","accent-text":"#381e72","accent-soft":"#4f378b",focus:"#d0bcff",error:"#f2b8b5","error-soft":"#601410",fill:"#36343b",edge:"#938f99"}},fluent:{light:{font:`"Segoe UI Variable Text", "Segoe UI", ${bn}`,text:"#242424",muted:"#616161",page:"#f5f5f5",surface:"#ffffff",border:"#d1d1d1","border-strong":"#616161",accent:"#0f6cbd","accent-text":"#ffffff","accent-soft":"#ebf3fc",focus:"#0f6cbd","focus-ring":"none",error:"#c50f1f","error-soft":"#fdf3f4",radius:"8px","control-radius":"4px","control-height":"32px","pad-y":"5px","pad-x":"10px","input-border":"1px","label-weight":"400","gap-x":"24px","gap-y":"16px"},dark:{text:"#ffffff",muted:"#d6d6d6",page:"#1f1f1f",surface:"#292929",border:"#666666","border-strong":"#adadad",accent:"#479ef5","accent-text":"#0a0a0a","accent-soft":"#0e4775",focus:"#479ef5",error:"#e37d80","error-soft":"#3b1012",edge:"#adadad"}},apple:{light:{font:`-apple-system, BlinkMacSystemFont, "SF Pro Text", ${bn}`,text:"#1d1d1f",muted:"#6e6e73",page:"#f2f2f7",surface:"#ffffff",border:"#d1d1d6","border-strong":"#8e8e93",accent:"#0066cc","accent-text":"#ffffff","accent-soft":"#e5f0fb",focus:"#0066cc","focus-ring":"0 0 0 4px rgba(0, 113, 227, 0.25)",error:"#d70015","error-soft":"#ffebec",radius:"12px","control-radius":"10px","control-height":"40px","pad-y":"8px","pad-x":"12px","input-border":"1px","label-weight":"500","gap-x":"20px","gap-y":"16px",fill:"#f2f2f7"},dark:{text:"#f5f5f7",muted:"#a1a1a6",page:"#000000",surface:"#1c1c1e",border:"#38383a","border-strong":"#636366",accent:"#409cff","accent-text":"#000000","accent-soft":"#0f2b4d",focus:"#409cff","focus-ring":"0 0 0 4px rgba(64, 156, 255, 0.3)",error:"#ff6961","error-soft":"#3a1412",fill:"#2c2c2e",edge:"#636366"}},bootstrap:{light:{font:bn,text:"#212529",muted:"#5c636a",page:"#f8f9fa",surface:"#ffffff",border:"#dee2e6","border-strong":"#adb5bd",accent:"#0a58ca","accent-text":"#ffffff","accent-soft":"#cfe2ff",focus:"#86b7fe","focus-ring":"0 0 0 0.25rem rgba(13, 110, 253, 0.25)",error:"#b02a37","error-soft":"#f8d7da",radius:"6px","control-radius":"6px","control-height":"38px","pad-y":"6px","pad-x":"12px","input-border":"1px","label-weight":"400","gap-x":"24px","gap-y":"16px"},dark:{text:"#dee2e6",muted:"#adb5bd",page:"#212529",surface:"#2b3035",border:"#495057","border-strong":"#6c757d",accent:"#6ea8fe","accent-text":"#000000","accent-soft":"#031633",focus:"#6ea8fe","focus-ring":"0 0 0 0.25rem rgba(110, 168, 254, 0.25)",error:"#ea868f","error-soft":"#2c0b0e",edge:"#6c757d"}},shadcn:{light:{font:`Geist, Inter, ${bn}`,text:"#09090b",muted:"#64646c",page:"#fafafa",surface:"#ffffff",border:"#e4e4e7","border-strong":"#a1a1aa",accent:"#18181b","accent-text":"#fafafa","accent-soft":"#f4f4f5",focus:"#a1a1aa","focus-ring":"0 0 0 3px rgba(161, 161, 170, 0.5)",error:"#dc2626","error-soft":"#fef2f2",radius:"10px","control-radius":"8px","control-height":"36px","pad-y":"6px","pad-x":"12px","input-border":"1px","label-weight":"500","gap-x":"24px","gap-y":"16px"},dark:{text:"#fafafa",muted:"#a1a1aa",page:"#09090b",surface:"#18181b",border:"#3f3f46","border-strong":"#71717a",accent:"#e4e4e7","accent-text":"#18181b","accent-soft":"#27272a",focus:"#71717a","focus-ring":"0 0 0 3px rgba(113, 113, 122, 0.5)",error:"#f87171","error-soft":"#450a0a",edge:"#71717a"}},ant:{light:{font:bn,text:"rgba(0, 0, 0, 0.88)",muted:"rgba(0, 0, 0, 0.55)",page:"#f5f5f5",surface:"#ffffff",border:"#d9d9d9","border-strong":"#bfbfbf",accent:"#1365d9","accent-text":"#ffffff","accent-soft":"#e6f4ff",focus:"#1365d9","focus-ring":"0 0 0 2px rgba(5, 145, 255, 0.12)",error:"#c63c3d","error-soft":"#fff2f0",radius:"8px","control-radius":"6px","pad-y":"4px","pad-x":"11px","input-border":"1px","label-weight":"400","gap-x":"24px","gap-y":"18px"},dark:{text:"rgba(255, 255, 255, 0.85)",muted:"rgba(255, 255, 255, 0.6)",page:"#000000",surface:"#141414",border:"#424242","border-strong":"#595959",accent:"#3c89e8","accent-text":"#000000","accent-soft":"#111a2c",focus:"#3c89e8","focus-ring":"0 0 0 2px rgba(60, 137, 232, 0.2)",error:"#e86e6b","error-soft":"#2c1618",edge:"#595959"}},odoo:{light:{font:bn,text:"#1f2937",muted:"#4b5563",page:"#f9fafb",surface:"#ffffff",border:"#d1d5db","border-strong":"#9ca3af",accent:"#714b67","accent-text":"#ffffff","accent-soft":"#f3edf2",focus:"#714b67","focus-ring":"none",error:"#c4161c","error-soft":"#fdecec",radius:"4px","control-radius":"0px","pad-y":"3px","pad-x":"4px","input-border":"0 0 1px 0","label-weight":"600","gap-x":"32px","gap-y":"14px"},dark:{text:"#e5e7eb",muted:"#9ca3af",page:"#111827",surface:"#1f2937",border:"#4b5563","border-strong":"#6b7280",accent:"#c79fbc","accent-text":"#1f1020","accent-soft":"#3b2836",focus:"#c79fbc",error:"#f6878b","error-soft":"#3a1214",edge:"#6b7280"}},"google-forms":{light:{font:`Roboto, Arial, ${bn}`,text:"#202124",muted:"#5f6368",page:"#f0ebf8",surface:"#ffffff",border:"#dadce0","border-strong":"#80868b",accent:"#673ab7","accent-text":"#ffffff","accent-soft":"#ede7f6",focus:"#673ab7","focus-ring":"none",error:"#d93025","error-soft":"#fce8e6",radius:"8px","control-radius":"0px","control-height":"36px","pad-y":"6px","pad-x":"0px","input-border":"0 0 1px 0","label-weight":"400","gap-x":"24px","gap-y":"12px"},dark:{text:"#e8e3ee",muted:"#b8b0c4",page:"#1c1822",surface:"#2a2431",border:"#4a4255","border-strong":"#7b7088",accent:"#c4abf2","accent-text":"#1d1528","accent-soft":"#3b2f52",focus:"#c4abf2",error:"#f28b82","error-soft":"#3c1714",edge:"#7b7088"}}},Ni=e=>Object.entries(e).map(([t,n])=>`--fd-${t}: ${n};`).join(" "),je=e=>`:is(.fd-form, .fd-form-dialog, .fd-theme)[data-fd-theme="${e}"]`,gr=':is(.fd-sections > .fd-section:not([data-style]), .fd-section[data-style="card"][data-on-page])',pd=Object.keys(ud).map(e=>{let{light:t,dark:n}=ud[e],r=`${je(e)}[data-scheme="dark"]`;return`${je(e)} { ${Ni(t)} }
5
5
  ${r} { ${Ni(n)} }
6
6
  @media (prefers-color-scheme: dark) { ${je(e)}[data-scheme="auto"] { ${Ni(n)} } }`}).join(`
7
7
  `).replace(/^/,`@layer fieldia-tokens {
@@ -57,7 +57,7 @@ ${je("google-forms")} .fd-label { font-size: 16px; }
57
57
  ${je("google-forms")} .fd-input:not([readonly]) { background: transparent; }
58
58
  ${je("google-forms")} .fd-input:focus { box-shadow: inset 0 -1px 0 0 var(--fd-focus); }
59
59
  ${je("google-forms")} .fd-button { border-radius: 4px; font-weight: 500; }
60
- `;var _c={medium:760,narrow:520},Uc='@layer fieldia-tokens{.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}.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-theme:is([data-fd-skin],:not(.fd-form *)){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 *,.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:"*";margin-inline-start:.25em;color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:after{content:none}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:before{content:"*";margin-inline-end:.25em;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-label>.fd-help-tip-wrap{position:absolute;margin-block-start:.15em}.fd-label:has(>.fd-help-tip-wrap){padding-inline-end:22px}.fd-field.fd-required>.fd-label:has(>.fd-help-tip-wrap):after{padding-inline-start:22px}.fd-form:not([data-fd-skin=outlined]) .fd-field.fd-required>.fd-label:has(>.fd-help-tip-wrap){padding-inline-end:0}.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,calc(100vw - 16px));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}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>.fd-label{grid-column:1;align-self:start;padding-block-start:max(0px,calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.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);text-overflow:ellipsis;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:color-mix(in srgb,var(--fd-text) 5%,var(--fd-surface));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:not(.fd-choice-search .fd-combo):has(>.fd-combo-clear[hidden]) .fd-combo-input[readonly]{padding-inline-end:var(--fd-pad-x)}.fd-combo:not(.fd-choice-search .fd-combo):has(>.fd-combo-clear[hidden]):has(>.fd-combo-open:not([hidden])) .fd-combo-input[readonly]{padding-inline-end:30px}.fd-combo:has(>.fd-combo-input[readonly])>.fd-combo-clear[hidden]~.fd-combo-open{inset-inline-end:3px}.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-lines:not([data-cards=always]) .fd-lines-table :is(th,td):is(.fd-lines-grip,.fd-lines-tools){position:sticky;z-index:1;background-color:var(--fd-surface)}.fd-lines:not([data-cards=always]) .fd-lines-table :is(th,td).fd-lines-grip{inset-inline-start:0}.fd-lines:not([data-cards=always]) .fd-lines-table :is(th,td).fd-lines-tools{inset-inline-end:0}.fd-lines-table td[data-fit]{min-width:0}.fd-lines-table thead th:not(.fd-lines-grip,.fd-lines-tools){white-space:normal}.fd-lines-table thead th{vertical-align:bottom}.fd-lines-table th[data-fit=boolean]{width:5em;min-width:5em}.fd-lines-table th[data-fit=integer]{width:max(7em,var(--fd-fit-need, 0px));min-width:max(7em,var(--fd-fit-need, 0px))}.fd-lines-table th[data-fit=float]{width:max(7.5em,var(--fd-fit-need, 0px));min-width:max(7.5em,var(--fd-fit-need, 0px))}.fd-lines-table th[data-fit=monetary]{width:max(11.5em,var(--fd-fit-need, 0px));min-width:max(11.5em,var(--fd-fit-need, 0px))}.fd-lines-table th[data-fit=date]{width:9em;min-width:9em}.fd-lines-table th[data-fit=datetime]{width:12.5em;min-width:12.5em}.fd-lines-table th:is([data-fit=integer],[data-fit=float],[data-fit=monetary]){text-align:end}.fd-lines-table td:is([data-fit=integer],[data-fit=float],[data-fit=monetary]) input{text-align:end}@media(hover:hover)and (pointer:fine){.fd-lines:not([data-cards=always]) .fd-lines-table tbody tr:not(:hover,:focus-within) .fd-input:not([aria-invalid=true]){border-color:transparent;background-color:transparent;box-shadow:none}.fd-lines:not([data-cards=always]) .fd-lines-table tbody tr:not(:hover,:focus-within) :is(.fd-combo-open,.fd-combo-clear){visibility:hidden}}.fd-line-grip{display:block;margin-block-start:7px;cursor:grab}.fd-lines-dragging,.fd-lines-dragging *{cursor:grabbing;user-select:none}.fd-lines-dragging>tr:not(.fd-line-lifted){transition:transform .15s ease}.fd-line-lifted{position:relative;z-index:2;box-shadow:0 6px 18px #0f141929}.fd-line-lifted>td{background:var(--fd-surface)}.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:var(--fd-surface)}.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}@container (min-width: 1534px){.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr) minmax(260px,360px);max-width:calc(var(--fd-page-max, 1180px) + 376px)}}.fd-sheet-layout.fd-has-side[data-side-beside=always]{grid-template-columns:minmax(0,1fr) minmax(260px,360px)}.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}.fd-form[data-fd-skin=underline] .fd-property{grid-template-columns:var(--fd-label-width, 11em) minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-property>label{color:var(--fd-text);font-size:inherit;font-weight:var(--fd-label-weight)}@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}}',hd=Uc+pd+fd+sd+ld+cd+md+id+ad+dd,gd="fieldia-styles";function Ci(e){if(e.getElementById(gd))return;let t=e.createElement("style");t.id=gd,t.textContent=hd,(e.head??e.documentElement).append(t)}function Oi(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 Kc(){let e=new Map;return{get:t=>e.has(t)?bd(e.get(t)):null,set:(t,n)=>{e.set(t,bd(n))}}}var bd=e=>JSON.parse(JSON.stringify(e));function Pi(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 Gc={email:[/^[^\s@]+@[^\s@]+$/,"mailto:"],phone:[/^\+?[\d\s().-]{3,}$/,"tel:"],url:[/^https?:\/\/\S+$/i,""]};function Jc(e,t,n,r){if(t.type!=="integer"&&t.type!=="float"||n.widget||r===null||r===void 0||e==="")return e;let o=i=>typeof n.options?.[i]=="string"?n.options[i].trim():"";return[o("prefix"),e,o("suffix")].filter(Boolean).join(" ")}function Ii(e){let{document:t,field:n,node:r,locale:o="en",labels:i=Qe.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,k){let m=Jc(An(n,c,k,o,void 0,{widget:r.widget,options:r.options}),n,r,c),S=JSON.stringify([m,c??null]);if(S===f)return;f=S;let h=r.widget?Gc[r.widget]:void 0,p=s!==null&&c&&typeof c=="object"&&"id"in c?c:null,y;if(h&&typeof c=="string"&&h[0].test(c.trim())){let R=t.createElement("a");R.href=`${h[1]}${c.trim()}`,r.widget==="url"&&Object.assign(R,{target:"_blank",rel:"noopener noreferrer"}),R.textContent=m,y=R}else if(l&&p){let R=t.createElement("button");R.type="button",R.className="fd-read-link",R.textContent=m,R.setAttribute("aria-label",i.openNamed.replace("{name}",p.label)),R.addEventListener("click",()=>{a?.openRecord(s,{recordId:p.id,title:p.label})}),y=R}else y=t.createTextNode(m);let b=p&&r.options?.avatar===!0?[qn(t,p)]:[],v=[];if(p?.details?.trim()&&r.options?.details===!0){let R=t.createElement("div");R.className="fd-link-details",ao(R,p.details.trim()),v.push(R)}d.replaceChildren(...b,y,...v)}}}var yd={};var Yc={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"},It={en:Yc,...yd},vd=It.en,Xc=new Map([["ar","Arabic"],["de","German"],["fr","French"]]),xd=new Set;function hr(e="en"){let t=e.split("-")[0];if(Object.prototype.hasOwnProperty.call(It,t))return t;let n=Xc.get(t);return n&&!xd.has(t)&&(xd.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 Vi="#111418",Ed="#1f2329",Zc="#f2f3f5";var Di=e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)),Qc=e=>`#${e.map(t=>Math.round(t).toString(16).padStart(2,"0")).join("")}`;function wd(e){let[t,n,r]=Di(e).map(o=>{let i=o/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4});return .2126*t+.7152*n+.0722*r}function Tn(e,t){let[n,r]=[wd(e),wd(t)].sort((o,i)=>i-o);return(n+.05)/(r+.05)}var ef=e=>Tn(e,"#ffffff")>=4.5?"#ffffff":Vi,tf=e=>Tn(e,Vi)>=Tn(e,"#ffffff")?Vi:"#ffffff",Ld=(e,t,n)=>Qc(Di(e).map((r,o)=>r+(Di(t)[o]-r)*n)),nf=(e,t)=>Ld(t,e,.12),kd=(e,t)=>[...t,nf(e,t[0])].every(n=>Tn(e,n)>=4.5);function Mo(e,t,n){let r=e;for(let o=1;o<=40&&!n(r);o++)r=Ld(e,t,o/40);return r}function br(e,t={light:[],dark:[]}){let n=e.toLowerCase(),r=Mo(n,"#000000",i=>kd(i,["#ffffff",Zc,...t.light])),o=Mo(n,"#ffffff",i=>kd(i,[Ed,...t.dark]));return{accent:r,accentText:ef(r),dark:o,darkText:tf(o)}}var rf=["#212529","#636976","#c63c3d"],of=["#e8eaed","#a3a9b2","#ff8a7a"],af={accent:"#1365d9",dark:"#5aa2ff"},Sd={background:"bg",border:"border",corners:"radius",textSize:"size",accent:"accent"},sf={small:"13px",large:"16px"},df={square:[0,0],soft:[6,10],round:[12,16]};function lf(e,t){let n=(s,l)=>t.scheme==="dark"?l:t.scheme==="auto"?`light-dark(${s}, ${l})`:s,r=t.accent?br(t.accent):af,o=Object.entries(t.parts??{}),i=(s,l,f)=>e.style.setProperty(`--fd-${s}-${l}`,f),a={light:[],dark:[]},d=s=>l=>s.every(f=>Tn(f,l)>=4.5);for(let[s,l]of o){let f=l.background?.toLowerCase();if(!f)continue;let c=Mo(f,"#ffffff",d([...rf,r.accent])),k=Mo(f,Ed,d([...of,r.dark]));a.light.push(c),a.dark.push(k),i(s,"bg",n(c,k))}for(let[s,l]of o){let f=Object.keys(Sd).filter(c=>l[c]).map(c=>Sd[c]);if(f.length&&e.setAttribute(`data-${s}`,f.join(" ")),l.border&&i(s,"border",l.border),l.corners&&i(s,"radius",`${df[l.corners][s==="groups"?1:0]}px`),l.textSize&&i(s,"size",sf[l.textSize]),l.accent){let c=br(l.accent,a);i(s,"accent",n(c.accent,c.dark)),i(s,"accent-text",n(c.accentText,c.darkText))}}}var Wi={material:"outlined",fluent:"outlined",apple:"outlined",bootstrap:"outlined",shadcn:"outlined",ant:"outlined",odoo:"underline","google-forms":"outlined"};function yn(e,t){return e??(t?Wi[t]:"underline")}var Hi=["text","muted","page","surface","fill","border","border-strong","edge","accent","accent-text","accent-soft","accent-hover","focus","focus-ring","error","error-soft","success","success-soft","warning","warning-soft","info","info-soft","radius","control-radius","font","label-weight"];function xn(e,t){for(let n of Hi){let r=t?.[n];r?e.style.setProperty(`--fd-${n}`,r):e.style.removeProperty(`--fd-${n}`)}}function $n(e,t){if(t){t.theme&&e.setAttribute("data-fd-theme",t.theme);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=br(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)}lf(e,t)}}function Mn(e,t,n){let r=Wn(t);e.setAttribute("data-hotkey",t),e.setAttribute("aria-keyshortcuts",r),e.title=`${n} (${r})`;let o=e.ownerDocument.createElement("kbd");o.className="fd-hotkey",o.setAttribute("aria-hidden","true"),o.dir="ltr",o.textContent=`${t.startsWith("shift+")?"\u21E7":""}${t.slice(-1).toUpperCase()}`,e.append(o)}function No(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 Rd=0,yr='input:not([type="hidden"]), select, textarea, [contenteditable="true"]';function Co(e){return[...e.querySelectorAll(".fd-field[data-focus]")].find(n=>!n.closest("[hidden]"))?.querySelector(yr)??null}var Fd=e=>(t,n={},r)=>{let o=e.createElement(t);for(let[i,a]of Object.entries(n))o.setAttribute(i,a);return r!==void 0&&(o.textContent=r),o};function Yn(e){return Ad(e,`fd-size-${e.size??"medium"}`)}function ji(e){let t=e.side??"end";return Ad(e,`fd-form-panel ${t==="top"||t==="bottom"?`fd-height-${e.height??"medium"}`:`fd-width-${e.width??"medium"}`}`,t)}function Ad(e,t,n){let r=!!n,o=e.container?.ownerDocument??document,i=e.container??o.body,a=o.activeElement instanceof o.defaultView.HTMLElement?o.activeElement:null,d={...It[hr(e.locale)],...e.labels},s=`fd-dialog-${++Rd}`,l=Fd(o),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"),k=l("div",{class:"fd-form-dialog-body"}),m=l("button",{type:"button",class:"fd-button"},d.discard),S=l("button",{type:"button",class:"fd-button fd-button-primary"},r&&e.mode==="values"?d.done:d.saveClose),h=e.page.look??e.look,p=e.theme??h?.theme,y=l("div",{class:`fd-theme fd-form-dialog ${t}`,"data-fd-skin":yn(e.skin,p),role:"dialog","aria-modal":"true","aria-labelledby":f.id,tabindex:"-1"});n&&y.setAttribute("data-side",n),e.dir&&y.setAttribute("dir",e.dir),$n(y,p?{...h,theme:p}:h),xn(y,e.tokens),y.append(l("div",{class:"fd-form-dialog-head"}),k,l("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"})),y.firstElementChild?.append(f,c);let v=(e.page.layout.type==="sections"||e.page.layout.type==="sheet"?e.page.layout.footer??[]:[]).map(g=>({node:g,button:l("button",{type:"button",class:`fd-button fd-button-${g.style??"secondary"}`,"data-node":g.id},g.label)}));for(let{node:g,button:P}of v)g.hotkey&&Mn(P,g.hotkey,g.label);y.lastElementChild?.append(...v.length?v.map(g=>g.button):[m,S]);let R=l("div",{class:`fd-dialog-backdrop fd-form-dialog-backdrop${r?" fd-form-panel-backdrop":""}`});R.append(y);let x=r?[...o.querySelectorAll(".fd-form-panel")].pop():void 0;x?.setAttribute("data-behind",""),i.append(R);let L=xr(k,{...e,page:h&&!e.page.look?{...e.page,look:h}:e.page,showActions:!1,records:void 0,breadcrumbs:void 0,host:{...e.host,close:()=>m.click()}});r&&L.element.dir&&(R.dir=L.element.dir);let E=!1;e.recompute&&cf(L.form,e.page.fields,e.recompute,()=>E);let w=()=>Co(k)??k.querySelector(yr);return(w()??y).focus(),L.form.settled().then(()=>{(o.activeElement===y||!y.contains(o.activeElement))&&w()?.focus()}),new Promise(g=>{let P=j=>{if(E)return;E=!0;let V=L.form.getState(),B={saved:j,recordId:V.recordId??null,values:V.values};L.destroy(),R.remove(),x?.removeAttribute("data-behind"),a?.focus(),g(B)},z=()=>new Promise(j=>{let V=o.activeElement,B=l("p",{id:`${s}-ask`},d.discardChanges),D=l("button",{type:"button",class:"fd-button"},d.cancel),I=l("button",{type:"button",class:"fd-button fd-button-primary"},d.discard),q=l("div",{class:"fd-actions fd-actions-end"}),$=l("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":B.id}),re=l("div",{class:"fd-dialog-backdrop"});q.append(D,I),$.append(B,q),re.append($);let Z=J=>{re.remove(),V?.focus(),j(J)};D.addEventListener("click",()=>Z(!1)),I.addEventListener("click",()=>Z(!0)),re.addEventListener("keydown",J=>{J.stopPropagation(),J.key==="Escape"?Z(!1):Ut($,J)}),y.append(re),D.focus()}),T=async()=>{(!r||!L.form.getState().dirty.length||await z())&&P(!1)};S.addEventListener("click",async()=>{S.disabled=!0;let j=e.mode==="values"?L.check():await L.save();S.disabled=!1,j&&P(!0)}),m.addEventListener("click",()=>P(!1));let H=!1;L.on("save",()=>H=!0),L.on("send",()=>H=!0);let N=()=>{for(let{node:j,button:V}of v)V.hidden=L.form.node(j.id).invisible};v.length&&(N(),L.form.subscribe(N));for(let{node:j,button:V}of v)V.addEventListener("click",async()=>{if(V.hasAttribute("aria-busy"))return;V.setAttribute("aria-busy","true"),H=!1;let B=await L.form.runAction(j.id);V.removeAttribute("aria-busy"),!E&&(H?P(!0):(B.reason==="check"||B.reason==="save")&&L.check())});c.addEventListener("click",T),y.addEventListener("keyup",j=>j.key==="Alt"&&y.removeAttribute("data-hotkeys")),y.addEventListener("keydown",j=>{j.key==="Alt"&&y.setAttribute("data-hotkeys","");let V=No(j),B=V?v.find(({node:D,button:I})=>D.hotkey===V&&!I.hidden&&!I.disabled)?.button:void 0;if(B){j.preventDefault(),y.removeAttribute("data-hotkeys"),B.click();return}if(j.key==="Enter"&&(j.ctrlKey||j.metaKey)&&!j.isComposing){if(j.target.closest(".ag-root-wrapper"))return;j.preventDefault(),o.activeElement?.dispatchEvent(new Event("change",{bubbles:!0})),v.length?v.find(({node:D,button:I})=>D.style==="primary"&&!I.hidden)?.button.click():S.click();return}j.defaultPrevented||(j.key==="Escape"?(j.preventDefault(),T()):Ut(y,j))})})}function cf(e,t,n,r){let o=JSON.stringify(e.getState().values),i=!1;e.subscribe(()=>{let a=e.getState().values,d=JSON.stringify(a);i||d===o||(o=d,n(a).then(s=>{if(r()||JSON.stringify(e.getState().values)!==d)return;i=!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),i=!1,o=JSON.stringify(e.getState().values)},()=>{}))})}function zi(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,r=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,o=hr(e.locale),i=It[o],a=Qe[o],d=`fd-dialog-${++Rd}`,s=Fd(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":i.close},"\xD7"),c=s("input",{type:"search",class:"fd-input","aria-label":a.search,placeholder:a.search,"aria-controls":`${d}-list`,autocomplete:"off"}),k=s("ul",{id:`${d}-list`,class:"fd-search-list",role:"listbox","aria-labelledby":l.id}),m=s("button",{type:"button",class:"fd-button"},i.cancel),S=s("div",{class:"fd-theme fd-form-dialog fd-search-dialog fd-size-small","data-fd-skin":yn(e.skin,e.theme??e.look?.theme),role:"dialog","aria-modal":"true","aria-labelledby":l.id});e.dir&&S.setAttribute("dir",e.dir);let h=e.theme??e.look?.theme;$n(S,h?{...e.look,theme:h}:e.look),xn(S,e.tokens);let p=s("div",{class:"fd-form-dialog-head"});p.append(l,f);let y=s("div",{class:"fd-form-dialog-body fd-search-body"});y.append(c,k);let b=s("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"});b.append(m),S.append(p,y,b);let v=s("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});return v.append(S),n.append(v),c.focus(),new Promise(R=>{let x=[],L=-1,E=0,w,g=T=>{clearTimeout(w),E++,v.remove(),r?.focus(),R(T)},P=()=>{k.replaceChildren(...x.map((T,H)=>{let N=s("li",{id:`${d}-option-${H}`,role:"option",class:`fd-option${H===L?" fd-active":""}`,"aria-selected":String(H===L)},T.label);return N.addEventListener("click",()=>g(T)),N})),x.length||k.append(s("li",{class:"fd-empty"},a.noResults)),L>=0?c.setAttribute("aria-activedescendant",`${d}-option-${L}`):c.removeAttribute("aria-activedescendant")},z=()=>{clearTimeout(w);let T=++E;w=setTimeout(async()=>{let H=await e.search(c.value,80).catch(()=>[]);T===E&&(x=H,L=-1,P())},180)};c.addEventListener("input",z),c.addEventListener("keydown",T=>{if(T.key==="ArrowDown"||T.key==="ArrowUp"){if(T.preventDefault(),!x.length)return;L=(L+(T.key==="ArrowDown"?1:-1)+x.length)%x.length,P(),k.children[L]?.scrollIntoView?.({block:"nearest"})}else T.key==="Enter"&&L>=0&&(T.preventDefault(),g(x[L]))}),m.addEventListener("click",()=>g(null)),f.addEventListener("click",()=>g(null)),S.addEventListener("keydown",T=>{T.key==="Escape"?(T.preventDefault(),g(null)):Ut(S,T)}),z()})}function Bi(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 ff(e,t,n,r){let o=Object.fromEntries(Object.entries(e).map(([i,a])=>[i,n?{...a,readonly:!0}:a]));return{fieldia:"0.1",id:"values",title:t,data:{kind:"record",model:"values"},fields:o,layout:{type:"sections",id:"values",children:r??[{type:"section",id:"values-section",columns:2,children:Object.keys(o).map(i=>({type:"field",id:`values-${i}`,field:i}))}]}}}function vr(e,t){let{pages:n,relatedPages:r}=e,o="model"in t?t.model:t.version===void 0?t.id:`${t.id}@${t.version}`,i=typeof n=="function"?n(t):n&&Object.prototype.hasOwnProperty.call(n,o)?n[o]:null;return i instanceof Promise?i.then(a=>a??null):i||!("model"in t)?i??null:(typeof r=="function"?r(t.model):r?.[t.model])??null}function uf(e){if(e)return{...e.search?{search:t=>e.search(t)}:{},...e.create?{create:t=>e.create(t)}:{}}}function Td(e,t){let n=o=>vr(e,{model:o}),r={locale:e.locale,skin:e.skin,theme:e.theme??e.page.look?.theme,get tokens(){return e.tokens},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:o=>n(o)!==null,async openRecord(o,i){let a=await n(o);if(!a)return null;let d=Bi(a),s=await Yn({...r,page:a,dataSource:e.dataSource,recordId:i.recordId??null,values:i.name||i.values?{...i.values??{},...i.name&&d?{[d]:i.name}:{}}:void 0,title:i.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:i.name??i.title;return i.withValues?{id:s.recordId,label:f,values:s.values}:{id:s.recordId,label:f}},searchMore:o=>zi({title:o.title,search:o.search,locale:e.locale,skin:e.skin,theme:e.theme,tokens:e.tokens,dir:e.dir,look:e.page.look}),async editValues(o){let i=await Yn({...r,page:ff(o.fields,o.title,o.readonly===!0,o.layout),...o.parent?{parent:o.parent}:{},dataSource:uf(e.dataSource),values:o.values,title:o.title,...o.layout?{size:"large"}:{},mode:"values",...o.recompute?{recompute:o.recompute}:{},...t?{host:{say:t}}:{}});return i.saved?i.values:null}}}var $d=e=>`favourites:${e.id}`;function Oo(e,t){let n=e.get($d(t));return Array.isArray(n)?n:[]}function Md(e,t,n){let r=Oo(t,n).find(o=>o.isDefault);return r?r.facets:e.defaultFilters?.length?[{kind:"filters",ids:[...e.defaultFilters],labels:e.defaultFilters.map(o=>e.filters?.find(i=>i.id===o)?.label??o)}]:[]}function Nd(e){let{page:t,el:n,labels:r,fill:o,preferences:i}=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),k=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.saveSearch),m=h=>i.set($d(t),h);function S(){let h=Oo(i,t);d.hidden=h.length>0,a.replaceChildren(...h.map(p=>{let y=n("button",{type:"button",class:"fd-search-option","data-default":p.isDefault?"true":void 0},p.name);y.addEventListener("click",()=>e.apply(p.facets));let b=n("button",{type:"button",class:"fd-favourite-remove","aria-label":o(r.deleteFavourite,{name:p.name})},"\xD7");return b.addEventListener("click",()=>{m(Oo(i,t).filter(v=>v.name!==p.name)),S()}),n("li",{class:"fd-favourite"},y,b)}))}return k.addEventListener("click",()=>{c.hidden=!c.hidden,k.setAttribute("aria-expanded",String(!c.hidden)),c.hidden||s.focus()}),f.addEventListener("click",()=>{let h=s.value.trim();if(!h)return s.focus();let p={name:h,facets:e.current(),...l.checked?{isDefault:!0}:{}},y=Oo(i,t).filter(b=>b.name!==h).map(b=>l.checked?{name:b.name,facets:b.facets}:b);m([...y,p]),s.value="",l.checked=!1,c.hidden=!0,k.setAttribute("aria-expanded","false"),S()}),S(),{list:a,none:d,open:k,form:c}}function pf(e,t,n){let r=e.page.fields[t];return n.value===null?e.labels.none:r.type==="selection"?r.options.find(o=>o.value===n.value)?.label??n.label:r.type==="boolean"?n.value?e.labels.yes:e.labels.no:n.label||String(n.value)}function mf(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 qi(e,t,n,r,o){let{el:i,labels:a}=e,d=o[n],s=[...r,t.value===null?{field:d,op:"notset",value:null}:{field:d,op:"=",value:t.value}],l=i("button",{type:"button",class:"fd-group-toggle","aria-expanded":"false"},i("span",{class:"fd-group-label"},pf(e,d,t))," ",i("span",{class:"fd-group-count"},`(${t.count})`)),f=i("tr",{class:"fd-list-group","data-level":String(n),"aria-level":String(n+1)},i("td",{colspan:String(e.columns)},l));f.style.setProperty("--fd-level",String(n));let c=!1;async function k(){c=!0;try{let S=n+1<o.length?(await e.dataSource.groups?.({model:e.model,field:o[n+1],filter:s}))?.map(h=>qi(e,h,n+1,s,o))??[]:await m(0);if(!f.isConnected||l.getAttribute("aria-expanded")!=="true")return;f.after(...S),e.changed()}finally{c=!1}}async function m(S){let h=await e.dataSource.list({model:e.model,fields:e.fields,filter:s,sort:e.sort(),offset:S,limit:e.pageSize}),p=h.records.map(R=>e.recordRow(R,n+1)),y=h.total-S-h.records.length;if(y<=0)return p;let b=i("button",{type:"button",class:"fd-button fd-button-link"},e.fill(a.loadMore,{n:y})),v=i("tr",{class:"fd-list-more","data-level":String(n+1)},i("td",{colspan:String(e.columns)},b));return v.style.setProperty("--fd-level",String(n)),b.addEventListener("click",async()=>{b.disabled=!0;let R=await m(S+h.records.length);v.isConnected&&(v.replaceWith(...R),e.changed())}),[...p,v]}return l.addEventListener("click",()=>{let S=l.getAttribute("aria-expanded")==="true";l.setAttribute("aria-expanded",String(!S)),S?(mf(f),e.changed()):c||k()}),f}var gf='.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 Po(e){if(e.getElementById("fd-list-styles"))return;let t=e.createElement("style");t.id="fd-list-styles",t.textContent=gf,e.head.append(t)}var hf=[["ilike","opContains"],["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],bf=[["ilike","opContains"],["set","opSet"],["notset","opNotSet"]],yf=[["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],xf=[["=","opIs"],["!=","opIsNot"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]],vf=[["=","opIs"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]];function _i(e){switch(e.type){case"char":case"text":case"html":return hf;case"many2one":case"many2many":return bf;case"selection":return yf;case"integer":case"float":case"monetary":return xf;case"date":case"datetime":return vf;case"boolean":return[["=","opIs"]];default:return[]}}function Cd(e){let{page:t,el:n,labels:r}=e,o=Object.entries(t.fields).filter(([,h])=>_i(h).length),i=n("select",{class:"fd-input","aria-label":r.field},...o.map(([h,p])=>n("option",{value:h},p.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:""},i,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}),k=()=>t.fields[i.value];function m(){a.replaceChildren(..._i(k()).map(([h,p])=>n("option",{value:h},r[p]))),S()}function S(){let h=k();if(h.type==="selection")c=n("select",{class:"fd-input","aria-label":r.value},...h.options.map(p=>n("option",{value:String(p.value)},p.label)));else if(h.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 p=["integer","float","monetary"].includes(h.type)?"number":h.type==="date"?"date":h.type==="datetime"?"datetime-local":"text";c=n("input",{class:"fd-input",type:p,"aria-label":r.value})}d.replaceChildren(c),d.hidden=a.value==="set"||a.value==="notset"}return i.addEventListener("change",m),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||i.focus()}),s.addEventListener("click",()=>{let h=k(),p=a.value,y=r[_i(h).find(([R])=>R===p)?.[1]??"opIs"],b=null,v="";if(!d.hidden){let R=c.value.trim();if(!R)return c.focus();if(h.type==="selection"){let x=h.options.find(L=>String(L.value)===R);b=x?.value??R,v=x?.label??R}else if(h.type==="boolean")b=R==="true",v=b?r.yes:r.no;else if(["integer","float","monetary"].includes(h.type)){if(b=Number(R),!Number.isFinite(b))return c.focus();v=R}else b=R,v=R}e.add({kind:"custom",label:[h.label,y,v].filter(Boolean).join(" "),filter:[{field:i.value,op:p,value:b}]}),l.hidden=!0,f.setAttribute("aria-expanded","false")}),m(),{button:f,form:l}}function wf(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 Od(e){let{page:t,node:n,doc:r,el:o,labels:i,fill:a,uid:d}=e,s=e.facets,l=I=>{let q=wt(r,I,e.icons);return q?.setAttribute("aria-hidden","true"),q?[q]:[]};function f(I){s=I,v(),j(),e.onChange(s)}let c=d(`${n.id}-suggestions`),k=d(`${n.id}-search-panel`),m=o("input",{class:"fd-search-input",role:"combobox",autocomplete:"off",placeholder:i.search,"aria-label":i.searchLabel,"aria-autocomplete":"list","aria-expanded":"false","aria-controls":c}),S=o("div",{class:"fd-facets"}),h=o("ul",{class:"fd-search-suggestions",role:"listbox",id:c,"aria-label":i.searchLabel,hidden:""}),p=o("button",{type:"button",class:"fd-search-toggle","aria-label":i.searchOptions,"aria-expanded":"false","aria-controls":k}),y=[],b=0;function v(){S.replaceChildren(...s.map((I,q)=>{let $=wf(I,i),re=o("button",{type:"button",class:"fd-facet-remove","aria-label":a(i.removeFacet,{label:$})},"\xD7");re.addEventListener("click",()=>{f(s.filter((J,_)=>_!==q)),m.focus()});let Z=I.kind==="groupBy"?"layers":I.kind==="field"?"":"filter";return o("span",{class:"fd-facet","data-kind":I.kind},...Z?l(Z):[],o("span",{class:"fd-facet-text"},$),re)}))}function R(){h.replaceChildren(...y.map((I,q)=>{let $=o("li",{role:"option",id:`${c}-${q}`,"aria-selected":String(q===b)},I.label);return $.addEventListener("mousedown",re=>re.preventDefault()),$.addEventListener("click",()=>L(I)),$})),h.hidden=y.length===0,m.setAttribute("aria-expanded",String(!h.hidden)),h.hidden?m.removeAttribute("aria-activedescendant"):m.setAttribute("aria-activedescendant",`${c}-${b}`)}function x(){y=[],R()}function L(I){let q={op:I.op,value:I.value,label:I.valueLabel},$=s.findIndex(Z=>Z.kind==="field"&&Z.field===I.field),re=[...s];if($<0)re.push({kind:"field",field:I.field,label:I.fieldLabel,values:[q]});else{let Z=re[$];Z.values.some(_=>_.op===q.op&&JSON.stringify(_.value)===JSON.stringify(q.value))||(re[$]={...Z,values:[...Z.values,q]})}m.value="",x(),f(re)}m.addEventListener("input",()=>{y=Kr(m.value,t,n,{searchFor:i.searchFor}),b=0,R()}),m.addEventListener("blur",x),m.addEventListener("keydown",I=>{I.isComposing||((I.key==="ArrowDown"||I.key==="ArrowUp")&&y.length?(I.preventDefault(),b=(b+(I.key==="ArrowDown"?1:y.length-1))%y.length,R()):I.key==="Enter"?(I.preventDefault(),y.length&&L(y[b])):I.key==="Backspace"&&!m.value&&s.length?f(s.slice(0,-1)):I.key==="Escape"&&!h.hidden&&(I.preventDefault(),x()))});let E=(I,q,$)=>o("div",{class:"fd-search-heading",id:$},...l(I),q),w=(I,q)=>{let $=s.findIndex(ie=>ie.kind===I),re=$<0?[]:I==="filters"?s[$].ids:s[$].fields,Z=re.includes(q)?re.filter(ie=>ie!==q):[...re,q],J=I==="filters"?{kind:I,ids:Z,labels:Z.map(ie=>n.filters?.find(Me=>Me.id===ie)?.label??ie)}:{kind:I,fields:Z,labels:Z.map(ie=>t.fields[ie]?.label??ie)},_=[...s];$<0?_.push(J):Z.length?_[$]=J:_.splice($,1),f(_)},g=(n.filters??[]).map(I=>{let q=o("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-filter":I.id},I.label);return q.addEventListener("click",()=>w("filters",I.id)),q}),P=(n.groupBy??[]).map(I=>{let q=o("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-group":I},t.fields[I].label);return q.addEventListener("click",()=>w("groupBy",I)),q}),z=Cd({page:t,el:o,labels:i,add:I=>f([...s,I])}),T=Nd({page:t,el:o,labels:i,fill:a,preferences:e.preferences,current:()=>s,apply:f}),H=(I,q,$,...re)=>o("div",{class:"fd-search-group","data-group-kind":I,role:"group","aria-labelledby":`${k}-${I}`},E(q,$,`${k}-${I}`),...re),N=o("div",{class:"fd-search-panel",id:k,hidden:""},H("filters","filter",i.filters,...g,z.button,z.form),...P.length?[H("groupBy","layers",i.groupBy,...P)]:[],H("favourites","star",i.favourites,T.list,T.none,T.open,T.form));function j(){let I=s.find($=>$.kind==="filters")?.ids??[],q=s.find($=>$.kind==="groupBy")?.fields??[];for(let $ of g)$.setAttribute("aria-pressed",String(I.includes($.dataset.filter??"")));for(let $ of P)$.setAttribute("aria-pressed",String(q.includes($.dataset.group??"")))}function V(I){N.hidden=!I,p.setAttribute("aria-expanded",String(I)),I&&x()}p.addEventListener("click",()=>V(N.hidden)),N.addEventListener("keydown",I=>{I.key==="Escape"&&(I.preventDefault(),V(!1),p.focus())});let B=o("div",{class:"fd-search"},o("div",{class:"fd-search-field"},...l("search"),S,m,p),h,N),D=I=>{!N.hidden&&!B.contains(I.target)&&V(!1)};return r.addEventListener("pointerdown",D),v(),j(),{element:B,destroy:()=>r.removeEventListener("pointerdown",D)}}var Pd=new Set(["integer","float","monetary"]),kf=new Set(["one2many","many2many","binary","image","html","json","properties"]);function Id(e){let{page:t,node:n,form:r,el:o,labels:i,fill:a,locale:d,doc:s}=e;Po(s);let l=n.pageSize??40,f=n.sort??[],c=f,k=0,m=0,S=[],h=new WeakMap,p=()=>[...P.querySelectorAll(".fd-list-row")].map(G=>h.get(G)),y=t.data.kind==="record"?t.data.model:"",b=Md(n,e.preferences,t),v=new Set,R=0,x=!1,L=[...new Set(n.columns.flatMap(G=>{let ne=t.fields[G];return ne.type==="monetary"&&ne.currencyField?[G,ne.currencyField]:[G]}))],E=(G,ne)=>St(t.fields[G],ne[G],ne,d),w=o("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":i.selectAll}),g=n.columns.map(G=>{let ne=t.fields[G],ue=o("th",{scope:"col","data-field":G,class:Pd.has(ne.type)?"fd-num":void 0});if(kf.has(ne.type))ue.append(ne.label);else{let Le=o("button",{type:"button",class:"fd-list-sort"},ne.label);Le.addEventListener("click",()=>{let oe=c[0]?.field===G?!c[0].desc:!1;c=[{field:G,...oe?{desc:oe}:{}},...f.filter(K=>K.field!==G)],k=0,we()}),ue.append(Le)}return ue}),P=o("tbody"),z=o("table",{class:"fd-list-table","aria-label":t.title},o("thead",{},o("tr",{},o("th",{class:"fd-list-check",scope:"col"},w),...g)),P),T=o("p",{class:"fd-list-empty",hidden:""},i.noRecords),H=o("button",{type:"button",class:"fd-button fd-button-link"},i.retry),N=o("p",{class:"fd-list-failed",role:"alert",hidden:""},i.loadFailed," ",H);H.addEventListener("click",()=>{we()});function j(G,ne=0){let ue=E(n.columns[0],G.values)||String(G.id),Le=o("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":a(i.selectRecord,{name:ue})});Le.checked=v.has(G.id),Le.addEventListener("change",()=>{Le.checked?v.add(G.id):v.delete(G.id),q()});let oe=o("tr",{class:e.onOpenRecord?"fd-list-row fd-list-openable":"fd-list-row",tabindex:"0","data-id":String(G.id),"data-level":ne?String(ne):void 0},o("td",{class:"fd-list-check"},Le),...n.columns.map(K=>o("td",{class:Pd.has(t.fields[K].type)?"fd-num":void 0},o("bdi",{},E(K,G.values)))));return oe.addEventListener("click",K=>{let Q=K.target.closest("td");if(Q?.classList.contains("fd-list-check")){K.target===Q&&Le.click();return}e.onOpenRecord?.(G.id)}),oe.addEventListener("keydown",K=>{K.target===oe&&(K.key==="Enter"?(K.preventDefault(),e.onOpenRecord?.(G.id)):K.key===" "?(K.preventDefault(),Le.click()):(K.key==="ArrowDown"||K.key==="ArrowUp")&&(K.preventDefault(),(K.key==="ArrowDown"?oe.nextElementSibling:oe.previousElementSibling)?.focus()))}),h.set(oe,G),oe}let V=o("span",{class:"fd-list-count",role:"status"}),B=o("button",{type:"button",class:"fd-button fd-button-link"},i.clearSelection),D=(n.actions??[]).map(G=>{let ne=o("button",{type:"button",class:`fd-button fd-button-${G.style??"secondary"}`,"data-node":G.id},...e.withIcon(G.icon,G.label));return ne.addEventListener("click",()=>{e.press(ne,async()=>{let ue=await r.runAction(G.id,{recordIds:[...v]});return await we(),ue})}),ne}),I=o("div",{class:"fd-list-selection",hidden:""},V,...D,B);B.addEventListener("click",()=>{v.clear();for(let G of P.querySelectorAll(".fd-list-checkbox"))G.checked=!1;q()}),w.addEventListener("change",()=>{for(let G of p())w.checked?v.add(G.id):v.delete(G.id);for(let G of P.querySelectorAll(".fd-list-checkbox"))G.checked=w.checked;q()});function q(){let G=p(),ne=G.filter(ue=>v.has(ue.id)).length;w.checked=G.length>0&&ne===G.length,w.indeterminate=ne>0&&ne<G.length,I.hidden=v.size===0,V.textContent=a(i.selected,{n:v.size});for(let ue of P.querySelectorAll(".fd-list-row"))ue.setAttribute("aria-selected",String([...v].some(Le=>String(Le)===ue.dataset.id)))}let $=o("span",{class:"fd-pager-text"}),re=o("button",{type:"button",class:"fd-button fd-pager-button","aria-label":i.previousPage},"\u2039"),Z=o("button",{type:"button",class:"fd-button fd-pager-button","aria-label":i.nextPage},"\u203A"),J=o("div",{class:"fd-pager",role:"group"},$,re,Z);re.addEventListener("click",()=>{k=Math.max(0,k-l),we()}),Z.addEventListener("click",()=>{k+=l,we()});function _(){J.hidden=m===0,$.textContent=a(i.range,{from:k+1,to:Math.min(k+S.length,m),total:m}),re.disabled=k===0,Z.disabled=k+l>=m}function ie(){for(let G of g){let ne=c[0]?.field===G.dataset.field?c[0]:null;ne?G.setAttribute("aria-sort",ne.desc?"descending":"ascending"):G.removeAttribute("aria-sort")}}function Me(){let G=new Set(p().map(ne=>ne.id));for(let ne of[...v])G.has(ne)||v.delete(ne);q()}let me=G=>({page:t,el:o,labels:i,fill:a,dataSource:G,model:y,fields:L,columns:n.columns.length+1,pageSize:l,sort:()=>c,recordRow:j,changed:Me});async function we(){let G=++R;ie(),z.setAttribute("aria-busy","true");let ne=[];try{let ue=[...e.fixedFilter??[],...Gr(b,n)],Le=Jr(b),oe=e.dataSource;if(Le.length&&oe?.groups&&oe.list){let K=await oe.groups({model:y,field:Le[0],filter:ue});if(G!==R||x)return;S=[],m=0,ne=K.map(Q=>qi(me(oe),Q,0,ue,Le))}else{let K=oe?.list?await oe.list({model:y,fields:L,filter:ue,sort:c,offset:k,limit:l}):{records:[],total:0};if(G!==R||x)return;if(!K.records.length&&K.total>0&&k>0)return k=Math.floor((K.total-1)/l)*l,we();S=K.records,m=K.total,ne=S.map(Q=>j(Q))}N.hidden=!0}catch{if(G!==R||x)return;S=[],m=0,N.hidden=!1}P.replaceChildren(...ne),T.hidden=ne.length>0||!N.hidden,z.removeAttribute("aria-busy"),_(),Me()}let Ee=Od({page:t,node:n,doc:s,el:o,labels:i,fill:a,uid:e.uid,icons:e.icons,preferences:e.preferences,facets:b,onChange(G){b=G,k=0,we()}}),ce=o("div",{class:"fd-list","data-node":n.id},o("div",{class:"fd-list-bar"},Ee.element,J),I,o("div",{class:"fd-list-scroll"},z),T,N);return we(),{element:ce,reload:we,destroy(){x=!0,Ee.destroy()}}}function Io(e,t){let n=e.style??"card",r=n==="plain"&&!e.title,o=ln(e.columns),i=e.colspan??1,a=r&&t.columns>1?i===1&&o>1?"shared":"tracks":void 0;return{style:n,arrangement:r,at:a,inner:{columns:a==="tracks"?Math.min(i,t.columns):o,onPage:t.onPage&&(n==="plain"||n==="line"),labels:e.labels??t.labels}}}var Sf=new Set(["one2many","matrix"]);function wr(e,t,n){if(t==="boolean"&&e.widget==="tick")return"after";let r=e.labels??n;return r==="beside"&&Sf.has(t)?"above":r}function Xe(e,t){e.hidden!==t&&(e.hidden=t)}function Et(e,t){e.textContent!==t&&(e.textContent=t)}function kt(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}async function Vd(e,t){let{options:n}=e,r=n.onOpen?.(t);if(r)return r;let o=await vr(n,t.version===void 0?{id:t.page}:{id:t.page,version:t.version});if(!o)throw new Error(e.missing(t.page));let i=n.page.look,a={...n,page:i&&!o.look?{...o,look:i}:o,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(o),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 ji({...s,title:d,side:t.side}):await Yn({...s,title:d,size:o.layout.type==="sheet"?"large":"medium"}),f=Bi(o),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,o=n.ownerDocument,i=o.activeElement;return new Promise(a=>{let d=!1,s=m=>{if(d)return;d=!0;let S=f.form.getState();f.destroy(),r.hidden=!1,i?.isConnected&&i.focus(),a({saved:m,recordId:S.recordId??null,values:S.values})};r.hidden=!0;let l=e.options.breadcrumbs?[...e.options.breadcrumbs,{label:e.name(),open:()=>s(!1)}]:void 0,f=xr(n,{...t,breadcrumbs:l,host:{...t.host,close:()=>s(!1)}}),c=o.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 k=()=>{f.form.settled().then(()=>s(!0))};f.on("save",k),f.on("send",k),(Co(f.element)??f.element.querySelector(yr)??c).focus()})}function Dd(e,t,n){let r=t("div",{class:"fd-says",role:"status","aria-live":"polite"});return e.append(r),(o,i)=>{let a=t("button",{type:"button",class:"fd-alert-close","aria-label":n},"\xD7"),d=t("div",{class:"fd-say","data-tone":i},t("span",{},o),a);d.style.setProperty("--fd-tone",`var(--fd-${i==="danger"?"error":i})`);let s,l=()=>clearTimeout(s),f=()=>{l(),d.remove()},c=()=>{l(),s=setTimeout(f,i==="warning"||i==="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();Lf(r,t,o),c()}}function Lf(e,t,n){let r=[...e.ownerDocument.querySelectorAll('[aria-modal="true"]')].filter(a=>!a.contains(e)),o=r[r.length-1];if(!o)return;let i=o.querySelector(":scope > .fd-says-echo");i||(i=t("div",{class:"fd-says-echo fd-sr-only",role:"status","aria-live":"polite"}),o.append(i)),i.textContent=n}var Xn=64;function Wd(e,t){let n=()=>e.closest("[dir]")?.getAttribute("dir")==="rtl",r=k=>t("button",{type:"button",class:`fd-tabs-scroll fd-tabs-${k}`,tabindex:"-1","aria-hidden":"true",hidden:""}),o=r("before"),i=r("after"),a=t("div",{class:"fd-tabbar"},o,e,i),d=k=>e.scrollBy({left:k*(n()?-1:1)*Math.max(e.clientWidth-2*Xn,Xn),behavior:"smooth"});o.addEventListener("click",()=>d(-1)),i.addEventListener("click",()=>d(1));function s(){let k=Math.abs(e.scrollLeft),m=k>1,S=k+e.clientWidth<e.scrollWidth-1;Xe(o,!m),Xe(i,!S);let h=[m&&"start",S&&"end"].filter(Boolean).join(" ");kt(a,"data-more",h||null)}function l(k){if(!e.clientWidth||e.scrollWidth<=e.clientWidth)return;let m=e.getBoundingClientRect(),S=k.getBoundingClientRect();S.left<m.left+Xn?e.scrollLeft+=S.left-m.left-Xn:S.right>m.right-Xn&&(e.scrollLeft+=S.right-m.right+Xn),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 Ui(e,t,n,r){let o=Dn(n);if(!o.some(d=>d.field))return{nodes:[n],update:()=>{}};let i=[];return{nodes:o.map(d=>{if(!d.field)return d.text;let s=e.createElement("bdi");return s.className="fd-value",s.dataset.field=d.field,i.push({field:d.field,span:s}),s}),update(d){for(let{field:s,span:l}of i){let f=t[s],c=f?St(f,d[s],d,r):"";l.textContent!==c&&(l.textContent=c)}}}}var Rf={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"/>'},kr=(e,t)=>e!=null&&t!=null&&String(e)===String(t);function Hd(e){let{el:t,labels:n,toolbar:r}=e,o=r?.menu??[],i=r?.breadcrumbs===!1?void 0:e.breadcrumbs,a=r?.pager===!1?void 0:e.records;if(!o.length&&!i?.length&&!a)return null;let d=[],s=[],l=t("div",{class:"fd-record-bar"});if(i?.length){let f=t("span",{class:"fd-crumb-current","aria-current":"page"}),c=t("ol",{},...i.map(k=>{let m=k.href!==void 0?t("a",{class:"fd-crumb",href:k.href},k.label):t("button",{type:"button",class:"fd-crumb"},k.label);return k.open&&m.addEventListener("click",S=>{S.preventDefault(),k.open?.()}),t("li",{},m)}),t("li",{},f));l.append(t("nav",{class:"fd-breadcrumbs","aria-label":n.breadcrumbs},c)),d.push(()=>Et(f,e.name()||n.newRecord))}return o.length&&l.append(Ff(e,o,d,s)),a&&l.append(Af(e,a,i,d,s)),{element:l,update:()=>{for(let f of d)f()},destroy:()=>{for(let f of s)f()}}}function Ff(e,t,n,r){let{doc:o,el:i,form:a,labels:d}=e,s=e.uid("record-menu"),l=i("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=wt(o,"gear",Rf);f&&l.append(f),l.append(i("span",{class:"fd-record-gear-words"},d.actions));let c=i("div",{class:"fd-record-menu",role:"menu",id:s,"aria-labelledby":l.id,hidden:""}),k=t.map(E=>{let w=E.label??(E.builtin?d[E.builtin]:E.id),g=i("button",{type:"button",role:"menuitem",tabindex:"-1",class:"fd-record-menu-item","data-node":E.id},...e.withIcon(E.icon,w));return E.builtin==="delete"&&g.classList.add("fd-record-menu-danger"),g.addEventListener("click",()=>{L(!0),e.press(l,()=>a.runAction(E.id))}),{item:E,button:g}}),m=k.filter(E=>E.item.group==="print"),S=k.filter(E=>E.item.group!=="print"),h=i("div",{class:"fd-record-menu-heading",role:"presentation"},d.print),p=i("div",{role:"group","aria-label":d.print},h,...m.map(E=>E.button)),y=i("div",{class:"fd-record-menu-rule",role:"separator"});c.append(...m.length?[p]:[],...m.length&&S.length?[y]:[],...S.map(E=>E.button));let b=i("div",{class:"fd-record-actions"},l,c),v=()=>k.filter(E=>!E.button.hidden).map(E=>E.button),R=E=>{b.contains(E.target)||L(!1)};function x(E){if(!c.hidden)return;c.hidden=!1,c.removeAttribute("data-end");let w=c.getBoundingClientRect();(w.right>o.documentElement.clientWidth-4||w.left<4)&&c.setAttribute("data-end",""),l.setAttribute("aria-expanded","true"),o.addEventListener("pointerdown",R,!0);let g=v();(E==="first"?g[0]:g[g.length-1])?.focus()}function L(E){c.hidden||(c.hidden=!0,l.setAttribute("aria-expanded","false"),o.removeEventListener("pointerdown",R,!0),E&&l.focus())}return r.push(()=>o.removeEventListener("pointerdown",R,!0)),l.addEventListener("click",()=>c.hidden?x("first"):L(!1)),l.addEventListener("keydown",E=>{(E.key==="ArrowDown"||E.key==="ArrowUp")&&(E.preventDefault(),x(E.key==="ArrowDown"?"first":"last"))}),c.addEventListener("keydown",E=>{let w=v(),g=w.indexOf(o.activeElement),P={ArrowDown:g+1,ArrowUp:g-1,Home:0,End:w.length-1}[E.key];P!==void 0?(E.preventDefault(),w[(P+w.length)%w.length]?.focus()):E.key==="Escape"?(E.preventDefault(),E.stopPropagation(),L(!0)):E.key==="Tab"&&L(!1)}),n.push(()=>{for(let{item:E,button:w}of k)Xe(w,a.node(E.id).invisible);Xe(p,!m.some(E=>!E.button.hidden)),Xe(y,p.hidden||!S.some(E=>!E.button.hidden)),Xe(b,!k.some(E=>!E.button.hidden))}),b}function Af(e,t,n,r,o){let{el:i,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,k=s?null:a.getState().recordId,m=!1,S=()=>{let x=a.getState().recordId;return s?s.findIndex(L=>kr(L,x)):kr(k,x)?c:-1},h=i("span",{class:"fd-record-pager-text",dir:"ltr"}),p=i("button",{type:"button",class:"fd-button fd-record-step","aria-label":d.previousRecord},i("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u2039")),y=i("button",{type:"button",class:"fd-button fd-record-step","aria-label":d.nextRecord},i("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u203A"));Mn(p,"p",d.previousRecord),Mn(y,"n",d.nextRecord);let b=i("div",{class:"fd-record-pager",role:"group","aria-label":d.records},h,p,y),v=async x=>s?s[x]:l.id(x);async function R(x){let L=S();if(!(m||L===-1||f<2)){m=!0;try{let E=(L+x+f)%f;if(!await e.leave())return;let w=await v(E);c=E,k=w,await a.openRecord(w)}finally{m=!1}}}return p.addEventListener("click",()=>{R(-1)}),y.addEventListener("click",()=>{R(1)}),o.push(a.on("duplicate",({from:x,recordId:L})=>{if(!s)return;let E=s.findIndex(w=>kr(w,x));s.splice(E+1,0,L),f=s.length,e.render()}),a.on("delete",({recordId:x})=>{let L=s?s.findIndex(g=>kr(g,x)):kr(k,x)?c:-1;if(L===-1)return;if(s&&s.splice(L,1),f=s?s.length:f-1,f<1)return void n?.[n.length-1]?.open?.();c=Math.min(L,f-1);let E=g=>{k=g,a.openRecord(g)},w=s?s[c]:l.id(c);w instanceof Promise?w.then(E):E(w)})),r.push(()=>{let x=S();Xe(b,x===-1),Et(h,e.fill(d.recordAt,{n:x+1,total:f}));let L=f<2;kt(p,"aria-disabled",L?"true":null),kt(y,"aria-disabled",L?"true":null)}),b}var Tf=e=>/^image\//.test(e.type)||/pdf/i.test(e.type)||/\.pdf$/i.test(e.name),$f=e=>(Array.isArray(e)?e:e?[e]:[]).filter(t=>t&&typeof t=="object"&&"name"in t);function jd(e){let{el:t,form:n,labels:r,node:o}=e,i=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"},i,a,d,s,l),f),k=[],m=0,S=null,h,p=0,y,b;function v(){S?.free(),S=null;let w=k[m];if(!w)return f.replaceChildren();let g=fi(e.doc,w);S=g,f.replaceChildren(...g?[g.element]:[]),Et(i,w.name),Et(a,k.length>1?e.fill(r.recordAt,{n:m+1,total:k.length}):""),Xe(d,k.length<2),Xe(s,k.length<2),kt(l,"href",g?.url??null),kt(c,"aria-label",e.fill(r.attachment,{name:w.name}))}let R=w=>{m=(m+w+k.length)%k.length,v()};d.addEventListener("click",()=>R(-1)),s.addEventListener("click",()=>R(1));let x=w=>{k=w.filter(Tf),m=0,v(),L()},L=()=>Xe(c,n.node("#preview").invisible||!k.length);function E(w){let g=e.dataSource,P=++p;if(h=w.recordId,w.recordId==null||!g?.attachments||e.page.data.kind!=="record")return x([]);g.attachments({model:e.page.data.model,id:w.recordId,fields:e.page.fields}).then(z=>P===p&&x(z),()=>P===p&&x([]))}return{element:c,update(w){if(o.field){let g=w.values[o.field];g!==b&&(b=g,x($f(g)))}else w.status!=="loading"&&w.status!=="idle"&&(w.recordId!==h||w.status==="saved"&&y!=="saved")&&E(w);y=w.status,L()},destroy:()=>S?.free()}}var Mf='.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 zd(e){if(e.getElementById("fd-record-styles"))return;let t=e.createElement("style");t.id="fd-record-styles",t.textContent=Mf,(e.head??e.documentElement).append(t)}var Nf=0;function xr(e,t){let n={...t},r=e.ownerDocument,o=rr(n.page,n.parent?{parent:n.parent.fields}:{});if(!o.ok)throw new Error(`This page cannot be shown:
60
+ `;var _c={medium:760,narrow:520},Uc='@layer fieldia-tokens{.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}.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-theme:is([data-fd-skin],:not(.fd-form *)){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 *,.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:"*";margin-inline-start:.25em;color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:after{content:none}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:before{content:"*";margin-inline-end:.25em;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-label>.fd-help-tip-wrap{position:absolute;margin-block-start:.15em}.fd-label:has(>.fd-help-tip-wrap){padding-inline-end:22px}.fd-field.fd-required>.fd-label:has(>.fd-help-tip-wrap):after{padding-inline-start:22px}.fd-form:not([data-fd-skin=outlined]) .fd-field.fd-required>.fd-label:has(>.fd-help-tip-wrap){padding-inline-end:0}.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,calc(100vw - 16px));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}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>.fd-label{grid-column:1;align-self:start;padding-block-start:max(0px,calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.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);text-overflow:ellipsis;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:color-mix(in srgb,var(--fd-text) 5%,var(--fd-surface));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:not(.fd-choice-search .fd-combo):has(>.fd-combo-clear[hidden]) .fd-combo-input[readonly]{padding-inline-end:var(--fd-pad-x)}.fd-combo:not(.fd-choice-search .fd-combo):has(>.fd-combo-clear[hidden]):has(>.fd-combo-open:not([hidden])) .fd-combo-input[readonly]{padding-inline-end:30px}.fd-combo:has(>.fd-combo-input[readonly])>.fd-combo-clear[hidden]~.fd-combo-open{inset-inline-end:3px}.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-lines:not([data-cards=always]) .fd-lines-table :is(th,td):is(.fd-lines-grip,.fd-lines-tools){position:sticky;z-index:1;background-color:var(--fd-surface)}.fd-lines:not([data-cards=always]) .fd-lines-table :is(th,td).fd-lines-grip{inset-inline-start:0}.fd-lines:not([data-cards=always]) .fd-lines-table :is(th,td).fd-lines-tools{inset-inline-end:0}.fd-lines-table td[data-fit]{min-width:0}.fd-lines-table thead th:not(.fd-lines-grip,.fd-lines-tools){white-space:normal}.fd-lines-table thead th{vertical-align:bottom}.fd-lines-table th[data-fit=boolean]{width:5em;min-width:5em}.fd-lines-table th[data-fit=integer]{width:max(7em,var(--fd-fit-need, 0px));min-width:max(7em,var(--fd-fit-need, 0px))}.fd-lines-table th[data-fit=float]{width:max(7.5em,var(--fd-fit-need, 0px));min-width:max(7.5em,var(--fd-fit-need, 0px))}.fd-lines-table th[data-fit=monetary]{width:max(11.5em,var(--fd-fit-need, 0px));min-width:max(11.5em,var(--fd-fit-need, 0px))}.fd-lines-table th[data-fit=date]{width:9em;min-width:9em}.fd-lines-table th[data-fit=datetime]{width:12.5em;min-width:12.5em}.fd-lines-table th:is([data-fit=integer],[data-fit=float],[data-fit=monetary]){text-align:end}.fd-lines-table td:is([data-fit=integer],[data-fit=float],[data-fit=monetary]) input{text-align:end}@media(hover:hover)and (pointer:fine){.fd-lines:not([data-cards=always]) .fd-lines-table tbody tr:not(:hover,:focus-within) .fd-input:not([aria-invalid=true]){border-color:transparent;background-color:transparent;box-shadow:none}.fd-lines:not([data-cards=always]) .fd-lines-table tbody tr:not(:hover,:focus-within) :is(.fd-combo-open,.fd-combo-clear){visibility:hidden}}.fd-line-grip{display:block;margin-block-start:7px;cursor:grab}.fd-lines-dragging,.fd-lines-dragging *{cursor:grabbing;user-select:none}.fd-lines-dragging>tr:not(.fd-line-lifted){transition:transform .15s ease}.fd-line-lifted{position:relative;z-index:2;box-shadow:0 6px 18px #0f141929}.fd-line-lifted>td{background:var(--fd-surface)}.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:var(--fd-surface)}.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}@container (min-width: 1534px){.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr) minmax(260px,360px);max-width:calc(var(--fd-page-max, 1180px) + 376px)}}.fd-sheet-layout.fd-has-side[data-side-beside=always]{grid-template-columns:minmax(0,1fr) minmax(260px,360px)}.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}.fd-form[data-fd-skin=underline] .fd-property{grid-template-columns:var(--fd-label-width, 11em) minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-property>label{color:var(--fd-text);font-size:inherit;font-weight:var(--fd-label-weight)}@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}}',hd=Uc+pd+fd+sd+ld+cd+md+id+ad+dd,gd="fieldia-styles";function Ci(e){if(e.getElementById(gd))return;let t=e.createElement("style");t.id=gd,t.textContent=hd,(e.head??e.documentElement).append(t)}function Oi(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 Kc(){let e=new Map;return{get:t=>e.has(t)?bd(e.get(t)):null,set:(t,n)=>{e.set(t,bd(n))}}}var bd=e=>JSON.parse(JSON.stringify(e));function Pi(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 Gc={email:[/^[^\s@]+@[^\s@]+$/,"mailto:"],phone:[/^\+?[\d\s().-]{3,}$/,"tel:"],url:[/^https?:\/\/\S+$/i,""]};function Jc(e,t,n,r){if(t.type!=="integer"&&t.type!=="float"||n.widget||r===null||r===void 0||e==="")return e;let o=i=>typeof n.options?.[i]=="string"?n.options[i].trim():"";return[o("prefix"),e,o("suffix")].filter(Boolean).join(" ")}function Ii(e){let{document:t,field:n,node:r,locale:o="en",labels:i=tt.en,dialogs:a}=e,s=t.createElement("div");s.className="fd-read-text",s.id=`${e.id}-text`;let d=n.type==="many2one"?n.relation:null,l=d!==null&&r.options?.open!==!1&&!!a?.canOpen(d),f="";return{element:s,update(c,v){let m=Jc(An(n,c,v,o,void 0,{widget:r.widget,options:r.options}),n,r,c),S=JSON.stringify([m,c??null]);if(S===f)return;f=S;let g=r.widget?Gc[r.widget]:void 0,u=d!==null&&c&&typeof c=="object"&&"id"in c?c:null,y;if(g&&typeof c=="string"&&g[0].test(c.trim())){let L=t.createElement("a");L.href=`${g[1]}${c.trim()}`,r.widget==="url"&&Object.assign(L,{target:"_blank",rel:"noopener noreferrer"}),L.textContent=m,y=L}else if(l&&u){let L=t.createElement("button");L.type="button",L.className="fd-read-link",L.textContent=m,L.setAttribute("aria-label",i.openNamed.replace("{name}",u.label)),L.addEventListener("click",()=>{a?.openRecord(d,{recordId:u.id,title:u.label})}),y=L}else y=t.createTextNode(m);let b=u&&r.options?.avatar===!0?[qn(t,u)]:[],w=[];if(u?.details?.trim()&&r.options?.details===!0){let L=t.createElement("div");L.className="fd-link-details",ao(L,u.details.trim()),w.push(L)}s.replaceChildren(...b,y,...w)}}}var yd={};var Yc={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"},Vt={en:Yc,...yd},vd=Vt.en,Xc=new Map([["ar","Arabic"],["de","German"],["fr","French"]]),xd=new Set;function hr(e="en"){let t=e.split("-")[0];if(Object.prototype.hasOwnProperty.call(Vt,t))return t;let n=Xc.get(t);return n&&!xd.has(t)&&(xd.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 Vi="#111418",Ed="#1f2329",Zc="#f2f3f5";var Di=e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)),Qc=e=>`#${e.map(t=>Math.round(t).toString(16).padStart(2,"0")).join("")}`;function wd(e){let[t,n,r]=Di(e).map(o=>{let i=o/255;return i<=.03928?i/12.92:((i+.055)/1.055)**2.4});return .2126*t+.7152*n+.0722*r}function Tn(e,t){let[n,r]=[wd(e),wd(t)].sort((o,i)=>i-o);return(n+.05)/(r+.05)}var ef=e=>Tn(e,"#ffffff")>=4.5?"#ffffff":Vi,tf=e=>Tn(e,Vi)>=Tn(e,"#ffffff")?Vi:"#ffffff",Ld=(e,t,n)=>Qc(Di(e).map((r,o)=>r+(Di(t)[o]-r)*n)),nf=(e,t)=>Ld(t,e,.12),kd=(e,t)=>[...t,nf(e,t[0])].every(n=>Tn(e,n)>=4.5);function Mo(e,t,n){let r=e;for(let o=1;o<=40&&!n(r);o++)r=Ld(e,t,o/40);return r}function br(e,t={light:[],dark:[]}){let n=e.toLowerCase(),r=Mo(n,"#000000",i=>kd(i,["#ffffff",Zc,...t.light])),o=Mo(n,"#ffffff",i=>kd(i,[Ed,...t.dark]));return{accent:r,accentText:ef(r),dark:o,darkText:tf(o)}}var rf=["#212529","#636976","#c63c3d"],of=["#e8eaed","#a3a9b2","#ff8a7a"],af={accent:"#1365d9",dark:"#5aa2ff"},Sd={background:"bg",border:"border",corners:"radius",textSize:"size",accent:"accent"},sf={small:"13px",large:"16px"},df={square:[0,0],soft:[6,10],round:[12,16]};function lf(e,t){let n=(d,l)=>t.scheme==="dark"?l:t.scheme==="auto"?`light-dark(${d}, ${l})`:d,r=t.accent?br(t.accent):af,o=Object.entries(t.parts??{}),i=(d,l,f)=>e.style.setProperty(`--fd-${d}-${l}`,f),a={light:[],dark:[]},s=d=>l=>d.every(f=>Tn(f,l)>=4.5);for(let[d,l]of o){let f=l.background?.toLowerCase();if(!f)continue;let c=Mo(f,"#ffffff",s([...rf,r.accent])),v=Mo(f,Ed,s([...of,r.dark]));a.light.push(c),a.dark.push(v),i(d,"bg",n(c,v))}for(let[d,l]of o){let f=Object.keys(Sd).filter(c=>l[c]).map(c=>Sd[c]);if(f.length&&e.setAttribute(`data-${d}`,f.join(" ")),l.border&&i(d,"border",l.border),l.corners&&i(d,"radius",`${df[l.corners][d==="groups"?1:0]}px`),l.textSize&&i(d,"size",sf[l.textSize]),l.accent){let c=br(l.accent,a);i(d,"accent",n(c.accent,c.dark)),i(d,"accent-text",n(c.accentText,c.darkText))}}}var Wi={material:"outlined",fluent:"outlined",apple:"outlined",bootstrap:"outlined",shadcn:"outlined",ant:"outlined",odoo:"underline","google-forms":"outlined"};function yn(e,t){return e??(t?Wi[t]:"underline")}var Hi=["text","muted","page","surface","fill","border","border-strong","edge","accent","accent-text","accent-soft","accent-hover","focus","focus-ring","error","error-soft","success","success-soft","warning","warning-soft","info","info-soft","radius","control-radius","font","label-weight"];function xn(e,t){for(let n of Hi){let r=t?.[n];r?e.style.setProperty(`--fd-${n}`,r):e.style.removeProperty(`--fd-${n}`)}}function $n(e,t){if(t){t.theme&&e.setAttribute("data-fd-theme",t.theme);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=br(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)}lf(e,t)}}function Mn(e,t,n){let r=Wn(t);e.setAttribute("data-hotkey",t),e.setAttribute("aria-keyshortcuts",r),e.title=`${n} (${r})`;let o=e.ownerDocument.createElement("kbd");o.className="fd-hotkey",o.setAttribute("aria-hidden","true"),o.dir="ltr",o.textContent=`${t.startsWith("shift+")?"\u21E7":""}${t.slice(-1).toUpperCase()}`,e.append(o)}function No(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 Rd=0,yr='input:not([type="hidden"]), select, textarea, [contenteditable="true"]';function Co(e){return[...e.querySelectorAll(".fd-field[data-focus]")].find(n=>!n.closest("[hidden]"))?.querySelector(yr)??null}var Fd=e=>(t,n={},r)=>{let o=e.createElement(t);for(let[i,a]of Object.entries(n))o.setAttribute(i,a);return r!==void 0&&(o.textContent=r),o};function Yn(e){return Ad(e,`fd-size-${e.size??"medium"}`)}function ji(e){let t=e.side??"end";return Ad(e,`fd-form-panel ${t==="top"||t==="bottom"?`fd-height-${e.height??"medium"}`:`fd-width-${e.width??"medium"}`}`,t)}function Ad(e,t,n){let r=!!n,o=e.container?.ownerDocument??document,i=e.container??o.body,a=o.activeElement instanceof o.defaultView.HTMLElement?o.activeElement:null,s={...Vt[hr(e.locale)],...e.labels},d=`fd-dialog-${++Rd}`,l=Fd(o),f=l("h2",{id:`${d}-title`,class:"fd-form-dialog-title"},e.title),c=l("button",{type:"button",class:"fd-dialog-close","aria-label":s.close},"\xD7"),v=l("div",{class:"fd-form-dialog-body"}),m=l("button",{type:"button",class:"fd-button"},s.discard),S=l("button",{type:"button",class:"fd-button fd-button-primary"},r&&e.mode==="values"?s.done:s.saveClose),g=e.page.look??e.look,u=e.theme??g?.theme,y=l("div",{class:`fd-theme fd-form-dialog ${t}`,"data-fd-skin":yn(e.skin,u),role:"dialog","aria-modal":"true","aria-labelledby":f.id,tabindex:"-1"});n&&y.setAttribute("data-side",n),e.dir&&y.setAttribute("dir",e.dir),$n(y,u?{...g,theme:u}:g),xn(y,e.tokens),y.append(l("div",{class:"fd-form-dialog-head"}),v,l("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"})),y.firstElementChild?.append(f,c);let w=(e.page.layout.type==="sections"||e.page.layout.type==="sheet"?e.page.layout.footer??[]:[]).map(h=>({node:h,button:l("button",{type:"button",class:`fd-button fd-button-${h.style??"secondary"}`,"data-node":h.id},h.label)}));for(let{node:h,button:N}of w)h.hotkey&&Mn(N,h.hotkey,h.label);y.lastElementChild?.append(...w.length?w.map(h=>h.button):[m,S]);let L=l("div",{class:`fd-dialog-backdrop fd-form-dialog-backdrop${r?" fd-form-panel-backdrop":""}`});L.append(y);let x=r?[...o.querySelectorAll(".fd-form-panel")].pop():void 0;x?.setAttribute("data-behind",""),i.append(L);let R=xr(v,{...e,page:g&&!e.page.look?{...e.page,look:g}:e.page,showActions:!1,records:void 0,breadcrumbs:void 0,host:{...e.host,close:()=>m.click()}});r&&R.element.dir&&(L.dir=R.element.dir);let E=!1;e.recompute&&cf(R.form,e.page.fields,e.recompute,()=>E);let k=()=>Co(v)??v.querySelector(yr);return(k()??y).focus(),R.form.settled().then(()=>{(o.activeElement===y||!y.contains(o.activeElement))&&k()?.focus()}),new Promise(h=>{let N=V=>{if(E)return;E=!0;let I=R.form.getState(),B={saved:V,recordId:I.recordId??null,values:I.values};R.destroy(),L.remove(),x?.removeAttribute("data-behind"),a?.focus(),h(B)},z=()=>new Promise(V=>{let I=o.activeElement,B=l("p",{id:`${d}-ask`},s.discardChanges),j=l("button",{type:"button",class:"fd-button"},s.cancel),P=l("button",{type:"button",class:"fd-button fd-button-primary"},s.discard),q=l("div",{class:"fd-actions fd-actions-end"}),$=l("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":B.id}),te=l("div",{class:"fd-dialog-backdrop"});q.append(j,P),$.append(B,q),te.append($);let X=G=>{te.remove(),I?.focus(),V(G)};j.addEventListener("click",()=>X(!1)),P.addEventListener("click",()=>X(!0)),te.addEventListener("keydown",G=>{G.stopPropagation(),G.key==="Escape"?X(!1):Kt($,G)}),y.append(te),j.focus()}),T=async()=>{(!r||!R.form.getState().dirty.length||await z())&&N(!1)};S.addEventListener("click",async()=>{S.disabled=!0;let V=e.mode==="values"?R.check():await R.save();S.disabled=!1,V&&N(!0)}),m.addEventListener("click",()=>N(!1));let W=!1;R.on("save",()=>W=!0),R.on("send",()=>W=!0);let D=()=>{for(let{node:V,button:I}of w)I.hidden=R.form.node(V.id).invisible};w.length&&(D(),R.form.subscribe(D));for(let{node:V,button:I}of w)I.addEventListener("click",async()=>{if(I.hasAttribute("aria-busy"))return;I.setAttribute("aria-busy","true"),W=!1;let B=await R.form.runAction(V.id);I.removeAttribute("aria-busy"),!E&&(W?N(!0):(B.reason==="check"||B.reason==="save")&&R.check())});c.addEventListener("click",T),y.addEventListener("keyup",V=>V.key==="Alt"&&y.removeAttribute("data-hotkeys")),y.addEventListener("keydown",V=>{V.key==="Alt"&&y.setAttribute("data-hotkeys","");let I=No(V),B=I?w.find(({node:j,button:P})=>j.hotkey===I&&!P.hidden&&!P.disabled)?.button:void 0;if(B){V.preventDefault(),y.removeAttribute("data-hotkeys"),B.click();return}if(V.key==="Enter"&&(V.ctrlKey||V.metaKey)&&!V.isComposing){if(V.target.closest(".ag-root-wrapper"))return;V.preventDefault(),o.activeElement?.dispatchEvent(new Event("change",{bubbles:!0})),w.length?w.find(({node:j,button:P})=>j.style==="primary"&&!P.hidden)?.button.click():S.click();return}V.defaultPrevented||(V.key==="Escape"?(V.preventDefault(),T()):Kt(y,V))})})}function cf(e,t,n,r){let o=JSON.stringify(e.getState().values),i=!1;e.subscribe(()=>{let a=e.getState().values,s=JSON.stringify(a);i||s===o||(o=s,n(a).then(d=>{if(r()||JSON.stringify(e.getState().values)!==s)return;i=!0;let l=Object.fromEntries(Object.entries(d).filter(([f,c])=>f in t&&JSON.stringify(a[f]??null)!==JSON.stringify(c??null)));Object.keys(l).length&&e.setValues(l),i=!1,o=JSON.stringify(e.getState().values)},()=>{}))})}function zi(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,r=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,o=hr(e.locale),i=Vt[o],a=tt[o],s=`fd-dialog-${++Rd}`,d=Fd(t),l=d("h2",{id:`${s}-title`,class:"fd-form-dialog-title"},e.title),f=d("button",{type:"button",class:"fd-dialog-close","aria-label":i.close},"\xD7"),c=d("input",{type:"search",class:"fd-input","aria-label":a.search,placeholder:a.search,"aria-controls":`${s}-list`,autocomplete:"off"}),v=d("ul",{id:`${s}-list`,class:"fd-search-list",role:"listbox","aria-labelledby":l.id}),m=d("button",{type:"button",class:"fd-button"},i.cancel),S=d("div",{class:"fd-theme fd-form-dialog fd-search-dialog fd-size-small","data-fd-skin":yn(e.skin,e.theme??e.look?.theme),role:"dialog","aria-modal":"true","aria-labelledby":l.id});e.dir&&S.setAttribute("dir",e.dir);let g=e.theme??e.look?.theme;$n(S,g?{...e.look,theme:g}:e.look),xn(S,e.tokens);let u=d("div",{class:"fd-form-dialog-head"});u.append(l,f);let y=d("div",{class:"fd-form-dialog-body fd-search-body"});y.append(c,v);let b=d("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"});b.append(m),S.append(u,y,b);let w=d("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});return w.append(S),n.append(w),c.focus(),new Promise(L=>{let x=[],R=-1,E=0,k,h=T=>{clearTimeout(k),E++,w.remove(),r?.focus(),L(T)},N=()=>{v.replaceChildren(...x.map((T,W)=>{let D=d("li",{id:`${s}-option-${W}`,role:"option",class:`fd-option${W===R?" fd-active":""}`,"aria-selected":String(W===R)},T.label);return D.addEventListener("click",()=>h(T)),D})),x.length||v.append(d("li",{class:"fd-empty"},a.noResults)),R>=0?c.setAttribute("aria-activedescendant",`${s}-option-${R}`):c.removeAttribute("aria-activedescendant")},z=()=>{clearTimeout(k);let T=++E;k=setTimeout(async()=>{let W=await e.search(c.value,80).catch(()=>[]);T===E&&(x=W,R=-1,N())},180)};c.addEventListener("input",z),c.addEventListener("keydown",T=>{if(T.key==="ArrowDown"||T.key==="ArrowUp"){if(T.preventDefault(),!x.length)return;R=(R+(T.key==="ArrowDown"?1:-1)+x.length)%x.length,N(),v.children[R]?.scrollIntoView?.({block:"nearest"})}else T.key==="Enter"&&R>=0&&(T.preventDefault(),h(x[R]))}),m.addEventListener("click",()=>h(null)),f.addEventListener("click",()=>h(null)),S.addEventListener("keydown",T=>{T.key==="Escape"?(T.preventDefault(),h(null)):Kt(S,T)}),z()})}function Bi(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 ff(e,t,n,r){let o=Object.fromEntries(Object.entries(e).map(([i,a])=>[i,n?{...a,readonly:!0}:a]));return{fieldia:"0.1",id:"values",title:t,data:{kind:"record",model:"values"},fields:o,layout:{type:"sections",id:"values",children:r??[{type:"section",id:"values-section",columns:2,children:Object.keys(o).map(i=>({type:"field",id:`values-${i}`,field:i}))}]}}}function vr(e,t){let{pages:n,relatedPages:r}=e,o="model"in t?t.model:t.version===void 0?t.id:`${t.id}@${t.version}`,i=typeof n=="function"?n(t):n&&Object.prototype.hasOwnProperty.call(n,o)?n[o]:null;return i instanceof Promise?i.then(a=>a??null):i||!("model"in t)?i??null:(typeof r=="function"?r(t.model):r?.[t.model])??null}function uf(e){if(e)return{...e.search?{search:t=>e.search(t)}:{},...e.create?{create:t=>e.create(t)}:{}}}function Td(e,t){let n=o=>vr(e,{model:o}),r={locale:e.locale,skin:e.skin,theme:e.theme??e.page.look?.theme,get tokens(){return e.tokens},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:o=>n(o)!==null,async openRecord(o,i){let a=await n(o);if(!a)return null;let s=Bi(a),d=await Yn({...r,page:a,dataSource:e.dataSource,recordId:i.recordId??null,values:i.name||i.values?{...i.values??{},...i.name&&s?{[s]:i.name}:{}}:void 0,title:i.title,size:"large",...t?{host:{say:t}}:{}});if(!d.saved||d.recordId===null)return null;let l=s?d.values[s]:null,f=typeof l=="string"&&l?l:i.name??i.title;return i.withValues?{id:d.recordId,label:f,values:d.values}:{id:d.recordId,label:f}},searchMore:o=>zi({title:o.title,search:o.search,locale:e.locale,skin:e.skin,theme:e.theme,tokens:e.tokens,dir:e.dir,look:e.page.look}),async editValues(o){let i=await Yn({...r,page:ff(o.fields,o.title,o.readonly===!0,o.layout),...o.parent?{parent:o.parent}:{},dataSource:uf(e.dataSource),values:o.values,title:o.title,...o.layout?{size:"large"}:{},mode:"values",...o.recompute?{recompute:o.recompute}:{},...t?{host:{say:t}}:{}});return i.saved?i.values:null}}}var $d=e=>`favourites:${e.id}`;function Oo(e,t){let n=e.get($d(t));return Array.isArray(n)?n:[]}function Md(e,t,n){let r=Oo(t,n).find(o=>o.isDefault);return r?r.facets:e.defaultFilters?.length?[{kind:"filters",ids:[...e.defaultFilters],labels:e.defaultFilters.map(o=>e.filters?.find(i=>i.id===o)?.label??o)}]:[]}function Nd(e){let{page:t,el:n,labels:r,fill:o,preferences:i}=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"}),f=n("button",{type:"button",class:"fd-button fd-button-primary"},r.save),c=n("div",{class:"fd-favourite-form",hidden:""},d,n("label",{class:"fd-favourite-default"},l,r.useByDefault),f),v=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.saveSearch),m=g=>i.set($d(t),g);function S(){let g=Oo(i,t);s.hidden=g.length>0,a.replaceChildren(...g.map(u=>{let y=n("button",{type:"button",class:"fd-search-option","data-default":u.isDefault?"true":void 0},u.name);y.addEventListener("click",()=>e.apply(u.facets));let b=n("button",{type:"button",class:"fd-favourite-remove","aria-label":o(r.deleteFavourite,{name:u.name})},"\xD7");return b.addEventListener("click",()=>{m(Oo(i,t).filter(w=>w.name!==u.name)),S()}),n("li",{class:"fd-favourite"},y,b)}))}return v.addEventListener("click",()=>{c.hidden=!c.hidden,v.setAttribute("aria-expanded",String(!c.hidden)),c.hidden||d.focus()}),f.addEventListener("click",()=>{let g=d.value.trim();if(!g)return d.focus();let u={name:g,facets:e.current(),...l.checked?{isDefault:!0}:{}},y=Oo(i,t).filter(b=>b.name!==g).map(b=>l.checked?{name:b.name,facets:b.facets}:b);m([...y,u]),d.value="",l.checked=!1,c.hidden=!0,v.setAttribute("aria-expanded","false"),S()}),S(),{list:a,none:s,open:v,form:c}}function pf(e,t,n){let r=e.page.fields[t];return n.value===null?e.labels.none:r.type==="selection"?r.options.find(o=>o.value===n.value)?.label??n.label:r.type==="boolean"?n.value?e.labels.yes:e.labels.no:n.label||String(n.value)}function mf(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 qi(e,t,n,r,o){let{el:i,labels:a}=e,s=o[n],d=[...r,t.value===null?{field:s,op:"notset",value:null}:{field:s,op:"=",value:t.value}],l=i("button",{type:"button",class:"fd-group-toggle","aria-expanded":"false"},i("span",{class:"fd-group-label"},pf(e,s,t))," ",i("span",{class:"fd-group-count"},`(${t.count})`)),f=i("tr",{class:"fd-list-group","data-level":String(n),"aria-level":String(n+1)},i("td",{colspan:String(e.columns)},l));f.style.setProperty("--fd-level",String(n));let c=!1;async function v(){c=!0;try{let S=n+1<o.length?(await e.dataSource.groups?.({model:e.model,field:o[n+1],filter:d}))?.map(g=>qi(e,g,n+1,d,o))??[]:await m(0);if(!f.isConnected||l.getAttribute("aria-expanded")!=="true")return;f.after(...S),e.changed()}finally{c=!1}}async function m(S){let g=await e.dataSource.list({model:e.model,fields:e.fields,filter:d,sort:e.sort(),offset:S,limit:e.pageSize}),u=g.records.map(L=>e.recordRow(L,n+1)),y=g.total-S-g.records.length;if(y<=0)return u;let b=i("button",{type:"button",class:"fd-button fd-button-link"},e.fill(a.loadMore,{n:y})),w=i("tr",{class:"fd-list-more","data-level":String(n+1)},i("td",{colspan:String(e.columns)},b));return w.style.setProperty("--fd-level",String(n)),b.addEventListener("click",async()=>{b.disabled=!0;let L=await m(S+g.records.length);w.isConnected&&(w.replaceWith(...L),e.changed())}),[...u,w]}return l.addEventListener("click",()=>{let S=l.getAttribute("aria-expanded")==="true";l.setAttribute("aria-expanded",String(!S)),S?(mf(f),e.changed()):c||v()}),f}var gf='.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 Po(e){if(e.getElementById("fd-list-styles"))return;let t=e.createElement("style");t.id="fd-list-styles",t.textContent=gf,e.head.append(t)}var hf=[["ilike","opContains"],["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],bf=[["ilike","opContains"],["set","opSet"],["notset","opNotSet"]],yf=[["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],xf=[["=","opIs"],["!=","opIsNot"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]],vf=[["=","opIs"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]];function _i(e){switch(e.type){case"char":case"text":case"html":return hf;case"many2one":case"many2many":return bf;case"selection":return yf;case"integer":case"float":case"monetary":return xf;case"date":case"datetime":return vf;case"boolean":return[["=","opIs"]];default:return[]}}function Cd(e){let{page:t,el:n,labels:r}=e,o=Object.entries(t.fields).filter(([,g])=>_i(g).length),i=n("select",{class:"fd-input","aria-label":r.field},...o.map(([g,u])=>n("option",{value:g},u.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:""},i,a,s,d),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}),v=()=>t.fields[i.value];function m(){a.replaceChildren(..._i(v()).map(([g,u])=>n("option",{value:g},r[u]))),S()}function S(){let g=v();if(g.type==="selection")c=n("select",{class:"fd-input","aria-label":r.value},...g.options.map(u=>n("option",{value:String(u.value)},u.label)));else if(g.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 u=["integer","float","monetary"].includes(g.type)?"number":g.type==="date"?"date":g.type==="datetime"?"datetime-local":"text";c=n("input",{class:"fd-input",type:u,"aria-label":r.value})}s.replaceChildren(c),s.hidden=a.value==="set"||a.value==="notset"}return i.addEventListener("change",m),a.addEventListener("change",()=>s.hidden=a.value==="set"||a.value==="notset"),f.addEventListener("click",()=>{l.hidden=!l.hidden,f.setAttribute("aria-expanded",String(!l.hidden)),l.hidden||i.focus()}),d.addEventListener("click",()=>{let g=v(),u=a.value,y=r[_i(g).find(([L])=>L===u)?.[1]??"opIs"],b=null,w="";if(!s.hidden){let L=c.value.trim();if(!L)return c.focus();if(g.type==="selection"){let x=g.options.find(R=>String(R.value)===L);b=x?.value??L,w=x?.label??L}else if(g.type==="boolean")b=L==="true",w=b?r.yes:r.no;else if(["integer","float","monetary"].includes(g.type)){if(b=Number(L),!Number.isFinite(b))return c.focus();w=L}else b=L,w=L}e.add({kind:"custom",label:[g.label,y,w].filter(Boolean).join(" "),filter:[{field:i.value,op:u,value:b}]}),l.hidden=!0,f.setAttribute("aria-expanded","false")}),m(),{button:f,form:l}}function wf(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 Od(e){let{page:t,node:n,doc:r,el:o,labels:i,fill:a,uid:s}=e,d=e.facets,l=P=>{let q=wt(r,P,e.icons);return q?.setAttribute("aria-hidden","true"),q?[q]:[]};function f(P){d=P,w(),V(),e.onChange(d)}let c=s(`${n.id}-suggestions`),v=s(`${n.id}-search-panel`),m=o("input",{class:"fd-search-input",role:"combobox",autocomplete:"off",placeholder:i.search,"aria-label":i.searchLabel,"aria-autocomplete":"list","aria-expanded":"false","aria-controls":c}),S=o("div",{class:"fd-facets"}),g=o("ul",{class:"fd-search-suggestions",role:"listbox",id:c,"aria-label":i.searchLabel,hidden:""}),u=o("button",{type:"button",class:"fd-search-toggle","aria-label":i.searchOptions,"aria-expanded":"false","aria-controls":v}),y=[],b=0;function w(){S.replaceChildren(...d.map((P,q)=>{let $=wf(P,i),te=o("button",{type:"button",class:"fd-facet-remove","aria-label":a(i.removeFacet,{label:$})},"\xD7");te.addEventListener("click",()=>{f(d.filter((G,U)=>U!==q)),m.focus()});let X=P.kind==="groupBy"?"layers":P.kind==="field"?"":"filter";return o("span",{class:"fd-facet","data-kind":P.kind},...X?l(X):[],o("span",{class:"fd-facet-text"},$),te)}))}function L(){g.replaceChildren(...y.map((P,q)=>{let $=o("li",{role:"option",id:`${c}-${q}`,"aria-selected":String(q===b)},P.label);return $.addEventListener("mousedown",te=>te.preventDefault()),$.addEventListener("click",()=>R(P)),$})),g.hidden=y.length===0,m.setAttribute("aria-expanded",String(!g.hidden)),g.hidden?m.removeAttribute("aria-activedescendant"):m.setAttribute("aria-activedescendant",`${c}-${b}`)}function x(){y=[],L()}function R(P){let q={op:P.op,value:P.value,label:P.valueLabel},$=d.findIndex(X=>X.kind==="field"&&X.field===P.field),te=[...d];if($<0)te.push({kind:"field",field:P.field,label:P.fieldLabel,values:[q]});else{let X=te[$];X.values.some(U=>U.op===q.op&&JSON.stringify(U.value)===JSON.stringify(q.value))||(te[$]={...X,values:[...X.values,q]})}m.value="",x(),f(te)}m.addEventListener("input",()=>{y=Kr(m.value,t,n,{searchFor:i.searchFor}),b=0,L()}),m.addEventListener("blur",x),m.addEventListener("keydown",P=>{P.isComposing||((P.key==="ArrowDown"||P.key==="ArrowUp")&&y.length?(P.preventDefault(),b=(b+(P.key==="ArrowDown"?1:y.length-1))%y.length,L()):P.key==="Enter"?(P.preventDefault(),y.length&&R(y[b])):P.key==="Backspace"&&!m.value&&d.length?f(d.slice(0,-1)):P.key==="Escape"&&!g.hidden&&(P.preventDefault(),x()))});let E=(P,q,$)=>o("div",{class:"fd-search-heading",id:$},...l(P),q),k=(P,q)=>{let $=d.findIndex(ne=>ne.kind===P),te=$<0?[]:P==="filters"?d[$].ids:d[$].fields,X=te.includes(q)?te.filter(ne=>ne!==q):[...te,q],G=P==="filters"?{kind:P,ids:X,labels:X.map(ne=>n.filters?.find($e=>$e.id===ne)?.label??ne)}:{kind:P,fields:X,labels:X.map(ne=>t.fields[ne]?.label??ne)},U=[...d];$<0?U.push(G):X.length?U[$]=G:U.splice($,1),f(U)},h=(n.filters??[]).map(P=>{let q=o("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-filter":P.id},P.label);return q.addEventListener("click",()=>k("filters",P.id)),q}),N=(n.groupBy??[]).map(P=>{let q=o("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-group":P},t.fields[P].label);return q.addEventListener("click",()=>k("groupBy",P)),q}),z=Cd({page:t,el:o,labels:i,add:P=>f([...d,P])}),T=Nd({page:t,el:o,labels:i,fill:a,preferences:e.preferences,current:()=>d,apply:f}),W=(P,q,$,...te)=>o("div",{class:"fd-search-group","data-group-kind":P,role:"group","aria-labelledby":`${v}-${P}`},E(q,$,`${v}-${P}`),...te),D=o("div",{class:"fd-search-panel",id:v,hidden:""},W("filters","filter",i.filters,...h,z.button,z.form),...N.length?[W("groupBy","layers",i.groupBy,...N)]:[],W("favourites","star",i.favourites,T.list,T.none,T.open,T.form));function V(){let P=d.find($=>$.kind==="filters")?.ids??[],q=d.find($=>$.kind==="groupBy")?.fields??[];for(let $ of h)$.setAttribute("aria-pressed",String(P.includes($.dataset.filter??"")));for(let $ of N)$.setAttribute("aria-pressed",String(q.includes($.dataset.group??"")))}function I(P){D.hidden=!P,u.setAttribute("aria-expanded",String(P)),P&&x()}u.addEventListener("click",()=>I(D.hidden)),D.addEventListener("keydown",P=>{P.key==="Escape"&&(P.preventDefault(),I(!1),u.focus())});let B=o("div",{class:"fd-search"},o("div",{class:"fd-search-field"},...l("search"),S,m,u),g,D),j=P=>{!D.hidden&&!B.contains(P.target)&&I(!1)};return r.addEventListener("pointerdown",j),w(),V(),{element:B,destroy:()=>r.removeEventListener("pointerdown",j)}}var Pd=new Set(["integer","float","monetary"]),kf=new Set(["one2many","many2many","binary","image","html","json","properties"]);function Id(e){let{page:t,node:n,form:r,el:o,labels:i,fill:a,locale:s,doc:d}=e;Po(d);let l=n.pageSize??40,f=n.sort??[],c=f,v=0,m=0,S=[],g=new WeakMap,u=()=>[...N.querySelectorAll(".fd-list-row")].map(K=>g.get(K)),y=t.data.kind==="record"?t.data.model:"",b=Md(n,e.preferences,t),w=new Set,L=0,x=!1,R=[...new Set(n.columns.flatMap(K=>{let Q=t.fields[K];return Q.type==="monetary"&&Q.currencyField?[K,Q.currencyField]:[K]}))],E=(K,Q)=>St(t.fields[K],Q[K],Q,s),k=o("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":i.selectAll}),h=n.columns.map(K=>{let Q=t.fields[K],me=o("th",{scope:"col","data-field":K,class:Pd.has(Q.type)?"fd-num":void 0});if(kf.has(Q.type))me.append(Q.label);else{let Re=o("button",{type:"button",class:"fd-list-sort"},Q.label);Re.addEventListener("click",()=>{let oe=c[0]?.field===K?!c[0].desc:!1;c=[{field:K,...oe?{desc:oe}:{}},...f.filter(ve=>ve.field!==K)],v=0,xe()}),me.append(Re)}return me}),N=o("tbody"),z=o("table",{class:"fd-list-table","aria-label":t.title},o("thead",{},o("tr",{},o("th",{class:"fd-list-check",scope:"col"},k),...h)),N),T=o("p",{class:"fd-list-empty",hidden:""},i.noRecords),W=o("button",{type:"button",class:"fd-button fd-button-link"},i.retry),D=o("p",{class:"fd-list-failed",role:"alert",hidden:""},i.loadFailed," ",W);W.addEventListener("click",()=>{xe()});function V(K,Q=0){let me=E(n.columns[0],K.values)||String(K.id),Re=o("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":a(i.selectRecord,{name:me})});Re.checked=w.has(K.id),Re.addEventListener("change",()=>{Re.checked?w.add(K.id):w.delete(K.id),q()});let oe=o("tr",{class:e.onOpenRecord?"fd-list-row fd-list-openable":"fd-list-row",tabindex:"0","data-id":String(K.id),"data-level":Q?String(Q):void 0},o("td",{class:"fd-list-check"},Re),...n.columns.map(ve=>o("td",{class:Pd.has(t.fields[ve].type)?"fd-num":void 0},o("bdi",{},E(ve,K.values)))));return oe.addEventListener("click",ve=>{let Y=ve.target.closest("td");if(Y?.classList.contains("fd-list-check")){ve.target===Y&&Re.click();return}e.onOpenRecord?.(K.id)}),oe.addEventListener("keydown",ve=>{ve.target===oe&&(ve.key==="Enter"?(ve.preventDefault(),e.onOpenRecord?.(K.id)):ve.key===" "?(ve.preventDefault(),Re.click()):(ve.key==="ArrowDown"||ve.key==="ArrowUp")&&(ve.preventDefault(),(ve.key==="ArrowDown"?oe.nextElementSibling:oe.previousElementSibling)?.focus()))}),g.set(oe,K),oe}let I=o("span",{class:"fd-list-count",role:"status"}),B=o("button",{type:"button",class:"fd-button fd-button-link"},i.clearSelection),j=(n.actions??[]).map(K=>{let Q=o("button",{type:"button",class:`fd-button fd-button-${K.style??"secondary"}`,"data-node":K.id},...e.withIcon(K.icon,K.label));return Q.addEventListener("click",()=>{e.press(Q,async()=>{let me=await r.runAction(K.id,{recordIds:[...w]});return await xe(),me})}),Q}),P=o("div",{class:"fd-list-selection",hidden:""},I,...j,B);B.addEventListener("click",()=>{w.clear();for(let K of N.querySelectorAll(".fd-list-checkbox"))K.checked=!1;q()}),k.addEventListener("change",()=>{for(let K of u())k.checked?w.add(K.id):w.delete(K.id);for(let K of N.querySelectorAll(".fd-list-checkbox"))K.checked=k.checked;q()});function q(){let K=u(),Q=K.filter(me=>w.has(me.id)).length;k.checked=K.length>0&&Q===K.length,k.indeterminate=Q>0&&Q<K.length,P.hidden=w.size===0,I.textContent=a(i.selected,{n:w.size});for(let me of N.querySelectorAll(".fd-list-row"))me.setAttribute("aria-selected",String([...w].some(Re=>String(Re)===me.dataset.id)))}let $=o("span",{class:"fd-pager-text"}),te=o("button",{type:"button",class:"fd-button fd-pager-button","aria-label":i.previousPage},"\u2039"),X=o("button",{type:"button",class:"fd-button fd-pager-button","aria-label":i.nextPage},"\u203A"),G=o("div",{class:"fd-pager",role:"group"},$,te,X);te.addEventListener("click",()=>{v=Math.max(0,v-l),xe()}),X.addEventListener("click",()=>{v+=l,xe()});function U(){G.hidden=m===0,$.textContent=a(i.range,{from:v+1,to:Math.min(v+S.length,m),total:m}),te.disabled=v===0,X.disabled=v+l>=m}function ne(){for(let K of h){let Q=c[0]?.field===K.dataset.field?c[0]:null;Q?K.setAttribute("aria-sort",Q.desc?"descending":"ascending"):K.removeAttribute("aria-sort")}}function $e(){let K=new Set(u().map(Q=>Q.id));for(let Q of[...w])K.has(Q)||w.delete(Q);q()}let Le=K=>({page:t,el:o,labels:i,fill:a,dataSource:K,model:y,fields:R,columns:n.columns.length+1,pageSize:l,sort:()=>c,recordRow:V,changed:$e});async function xe(){let K=++L;ne(),z.setAttribute("aria-busy","true");let Q=[];try{let me=[...e.fixedFilter??[],...Gr(b,n)],Re=Jr(b),oe=e.dataSource;if(Re.length&&oe?.groups&&oe.list){let ve=await oe.groups({model:y,field:Re[0],filter:me});if(K!==L||x)return;S=[],m=0,Q=ve.map(Y=>qi(Le(oe),Y,0,me,Re))}else{let ve=oe?.list?await oe.list({model:y,fields:R,filter:me,sort:c,offset:v,limit:l}):{records:[],total:0};if(K!==L||x)return;if(!ve.records.length&&ve.total>0&&v>0)return v=Math.floor((ve.total-1)/l)*l,xe();S=ve.records,m=ve.total,Q=S.map(Y=>V(Y))}D.hidden=!0}catch{if(K!==L||x)return;S=[],m=0,D.hidden=!1}N.replaceChildren(...Q),T.hidden=Q.length>0||!D.hidden,z.removeAttribute("aria-busy"),U(),$e()}let Me=Od({page:t,node:n,doc:d,el:o,labels:i,fill:a,uid:e.uid,icons:e.icons,preferences:e.preferences,facets:b,onChange(K){b=K,v=0,xe()}}),ie=o("div",{class:"fd-list","data-node":n.id},o("div",{class:"fd-list-bar"},Me.element,G),P,o("div",{class:"fd-list-scroll"},z),T,D);return xe(),{element:ie,reload:xe,destroy(){x=!0,Me.destroy()}}}function Io(e,t){let n=e.style??"card",r=n==="plain"&&!e.title,o=ln(e.columns),i=e.colspan??1,a=r&&t.columns>1?i===1&&o>1?"shared":"tracks":void 0;return{style:n,arrangement:r,at:a,inner:{columns:a==="tracks"?Math.min(i,t.columns):o,onPage:t.onPage&&(n==="plain"||n==="line"),labels:e.labels??t.labels}}}var Sf=new Set(["one2many","matrix"]);function wr(e,t,n){if(t==="boolean"&&e.widget==="tick")return"after";let r=e.labels??n;return r==="beside"&&Sf.has(t)?"above":r}function Ze(e,t){e.hidden!==t&&(e.hidden=t)}function Et(e,t){e.textContent!==t&&(e.textContent=t)}function kt(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}async function Vd(e,t){let{options:n}=e,r=n.onOpen?.(t);if(r)return r;let o=await vr(n,t.version===void 0?{id:t.page}:{id:t.page,version:t.version});if(!o)throw new Error(e.missing(t.page));let i=n.page.look,a={...n,page:i&&!o.look?{...o,look:i}:o,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},s=t.title??e.title(o),d={...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 ji({...d,title:s,side:t.side}):await Yn({...d,title:s,size:o.layout.type==="sheet"?"large":"medium"}),f=Bi(o),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,o=n.ownerDocument,i=o.activeElement;return new Promise(a=>{let s=!1,d=m=>{if(s)return;s=!0;let S=f.form.getState();f.destroy(),r.hidden=!1,i?.isConnected&&i.focus(),a({saved:m,recordId:S.recordId??null,values:S.values})};r.hidden=!0;let l=e.options.breadcrumbs?[...e.options.breadcrumbs,{label:e.name(),open:()=>d(!1)}]:void 0,f=xr(n,{...t,breadcrumbs:l,host:{...t.host,close:()=>d(!1)}}),c=o.createElement("button");c.type="button",c.className="fd-button fd-button-link fd-back",c.textContent=e.back,c.addEventListener("click",()=>d(!1)),f.element.querySelector(".fd-breadcrumbs")||f.element.prepend(c);let v=()=>{f.form.settled().then(()=>d(!0))};f.on("save",v),f.on("send",v),(Co(f.element)??f.element.querySelector(yr)??c).focus()})}function Dd(e,t,n){let r=t("div",{class:"fd-says",role:"status","aria-live":"polite"});return e.append(r),(o,i)=>{let a=t("button",{type:"button",class:"fd-alert-close","aria-label":n},"\xD7"),s=t("div",{class:"fd-say","data-tone":i},t("span",{},o),a);s.style.setProperty("--fd-tone",`var(--fd-${i==="danger"?"error":i})`);let d,l=()=>clearTimeout(d),f=()=>{l(),s.remove()},c=()=>{l(),d=setTimeout(f,i==="warning"||i==="danger"?1e4:6e3)};for(a.addEventListener("click",f),s.addEventListener("mouseenter",l),s.addEventListener("focusin",l),s.addEventListener("mouseleave",c),s.addEventListener("focusout",c),r.append(s);r.children.length>4;)r.firstElementChild?.remove();Lf(r,t,o),c()}}function Lf(e,t,n){let r=[...e.ownerDocument.querySelectorAll('[aria-modal="true"]')].filter(a=>!a.contains(e)),o=r[r.length-1];if(!o)return;let i=o.querySelector(":scope > .fd-says-echo");i||(i=t("div",{class:"fd-says-echo fd-sr-only",role:"status","aria-live":"polite"}),o.append(i)),i.textContent=n}var Xn=64;function Wd(e,t){let n=()=>e.closest("[dir]")?.getAttribute("dir")==="rtl",r=v=>t("button",{type:"button",class:`fd-tabs-scroll fd-tabs-${v}`,tabindex:"-1","aria-hidden":"true",hidden:""}),o=r("before"),i=r("after"),a=t("div",{class:"fd-tabbar"},o,e,i),s=v=>e.scrollBy({left:v*(n()?-1:1)*Math.max(e.clientWidth-2*Xn,Xn),behavior:"smooth"});o.addEventListener("click",()=>s(-1)),i.addEventListener("click",()=>s(1));function d(){let v=Math.abs(e.scrollLeft),m=v>1,S=v+e.clientWidth<e.scrollWidth-1;Ze(o,!m),Ze(i,!S);let g=[m&&"start",S&&"end"].filter(Boolean).join(" ");kt(a,"data-more",g||null)}function l(v){if(!e.clientWidth||e.scrollWidth<=e.clientWidth)return;let m=e.getBoundingClientRect(),S=v.getBoundingClientRect();S.left<m.left+Xn?e.scrollLeft+=S.left-m.left-Xn:S.right>m.right-Xn&&(e.scrollLeft+=S.right-m.right+Xn),d()}e.addEventListener("scroll",d,{passive:!0});let f=e.ownerDocument.defaultView,c=f&&"ResizeObserver"in f?new f.ResizeObserver(()=>d()):null;return c?.observe(e),{element:a,measure:d,reveal:l,destroy:()=>c?.disconnect()}}function Ui(e,t,n,r){let o=Dn(n);if(!o.some(s=>s.field))return{nodes:[n],update:()=>{}};let i=[];return{nodes:o.map(s=>{if(!s.field)return s.text;let d=e.createElement("bdi");return d.className="fd-value",d.dataset.field=s.field,i.push({field:s.field,span:d}),d}),update(s){for(let{field:d,span:l}of i){let f=t[d],c=f?St(f,s[d],s,r):"";l.textContent!==c&&(l.textContent=c)}}}}var Rf={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"/>'},kr=(e,t)=>e!=null&&t!=null&&String(e)===String(t);function Hd(e){let{el:t,labels:n,toolbar:r}=e,o=r?.menu??[],i=r?.breadcrumbs===!1?void 0:e.breadcrumbs,a=r?.pager===!1?void 0:e.records;if(!o.length&&!i?.length&&!a)return null;let s=[],d=[],l=t("div",{class:"fd-record-bar"});if(i?.length){let f=t("span",{class:"fd-crumb-current","aria-current":"page"}),c=t("ol",{},...i.map(v=>{let m=v.href!==void 0?t("a",{class:"fd-crumb",href:v.href},v.label):t("button",{type:"button",class:"fd-crumb"},v.label);return v.open&&m.addEventListener("click",S=>{S.preventDefault(),v.open?.()}),t("li",{},m)}),t("li",{},f));l.append(t("nav",{class:"fd-breadcrumbs","aria-label":n.breadcrumbs},c)),s.push(()=>Et(f,e.name()||n.newRecord))}return o.length&&l.append(Ff(e,o,s,d)),a&&l.append(Af(e,a,i,s,d)),{element:l,update:()=>{for(let f of s)f()},destroy:()=>{for(let f of d)f()}}}function Ff(e,t,n,r){let{doc:o,el:i,form:a,labels:s}=e,d=e.uid("record-menu"),l=i("button",{type:"button",class:"fd-button fd-record-gear",id:`${d}-button`,"aria-haspopup":"menu","aria-expanded":"false","aria-controls":d,title:s.actions}),f=wt(o,"gear",Rf);f&&l.append(f),l.append(i("span",{class:"fd-record-gear-words"},s.actions));let c=i("div",{class:"fd-record-menu",role:"menu",id:d,"aria-labelledby":l.id,hidden:""}),v=t.map(E=>{let k=E.label??(E.builtin?s[E.builtin]:E.id),h=i("button",{type:"button",role:"menuitem",tabindex:"-1",class:"fd-record-menu-item","data-node":E.id},...e.withIcon(E.icon,k));return E.builtin==="delete"&&h.classList.add("fd-record-menu-danger"),h.addEventListener("click",()=>{R(!0),e.press(l,()=>a.runAction(E.id))}),{item:E,button:h}}),m=v.filter(E=>E.item.group==="print"),S=v.filter(E=>E.item.group!=="print"),g=i("div",{class:"fd-record-menu-heading",role:"presentation"},s.print),u=i("div",{role:"group","aria-label":s.print},g,...m.map(E=>E.button)),y=i("div",{class:"fd-record-menu-rule",role:"separator"});c.append(...m.length?[u]:[],...m.length&&S.length?[y]:[],...S.map(E=>E.button));let b=i("div",{class:"fd-record-actions"},l,c),w=()=>v.filter(E=>!E.button.hidden).map(E=>E.button),L=E=>{b.contains(E.target)||R(!1)};function x(E){if(!c.hidden)return;c.hidden=!1,c.removeAttribute("data-end");let k=c.getBoundingClientRect();(k.right>o.documentElement.clientWidth-4||k.left<4)&&c.setAttribute("data-end",""),l.setAttribute("aria-expanded","true"),o.addEventListener("pointerdown",L,!0);let h=w();(E==="first"?h[0]:h[h.length-1])?.focus()}function R(E){c.hidden||(c.hidden=!0,l.setAttribute("aria-expanded","false"),o.removeEventListener("pointerdown",L,!0),E&&l.focus())}return r.push(()=>o.removeEventListener("pointerdown",L,!0)),l.addEventListener("click",()=>c.hidden?x("first"):R(!1)),l.addEventListener("keydown",E=>{(E.key==="ArrowDown"||E.key==="ArrowUp")&&(E.preventDefault(),x(E.key==="ArrowDown"?"first":"last"))}),c.addEventListener("keydown",E=>{let k=w(),h=k.indexOf(o.activeElement),N={ArrowDown:h+1,ArrowUp:h-1,Home:0,End:k.length-1}[E.key];N!==void 0?(E.preventDefault(),k[(N+k.length)%k.length]?.focus()):E.key==="Escape"?(E.preventDefault(),E.stopPropagation(),R(!0)):E.key==="Tab"&&R(!1)}),n.push(()=>{for(let{item:E,button:k}of v)Ze(k,a.node(E.id).invisible);Ze(u,!m.some(E=>!E.button.hidden)),Ze(y,u.hidden||!S.some(E=>!E.button.hidden)),Ze(b,!v.some(E=>!E.button.hidden))}),b}function Af(e,t,n,r,o){let{el:i,form:a,labels:s}=e,d=Array.isArray(t)?[...t]:null,l=Array.isArray(t)?null:t,f=d?d.length:l.total,c=d?-1:l.at,v=d?null:a.getState().recordId,m=!1,S=()=>{let x=a.getState().recordId;return d?d.findIndex(R=>kr(R,x)):kr(v,x)?c:-1},g=i("span",{class:"fd-record-pager-text",dir:"ltr"}),u=i("button",{type:"button",class:"fd-button fd-record-step","aria-label":s.previousRecord},i("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u2039")),y=i("button",{type:"button",class:"fd-button fd-record-step","aria-label":s.nextRecord},i("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u203A"));Mn(u,"p",s.previousRecord),Mn(y,"n",s.nextRecord);let b=i("div",{class:"fd-record-pager",role:"group","aria-label":s.records},g,u,y),w=async x=>d?d[x]:l.id(x);async function L(x){let R=S();if(!(m||R===-1||f<2)){m=!0;try{let E=(R+x+f)%f;if(!await e.leave())return;let k=await w(E);c=E,v=k,await a.openRecord(k)}finally{m=!1}}}return u.addEventListener("click",()=>{L(-1)}),y.addEventListener("click",()=>{L(1)}),o.push(a.on("duplicate",({from:x,recordId:R})=>{if(!d)return;let E=d.findIndex(k=>kr(k,x));d.splice(E+1,0,R),f=d.length,e.render()}),a.on("delete",({recordId:x})=>{let R=d?d.findIndex(h=>kr(h,x)):kr(v,x)?c:-1;if(R===-1)return;if(d&&d.splice(R,1),f=d?d.length:f-1,f<1)return void n?.[n.length-1]?.open?.();c=Math.min(R,f-1);let E=h=>{v=h,a.openRecord(h)},k=d?d[c]:l.id(c);k instanceof Promise?k.then(E):E(k)})),r.push(()=>{let x=S();Ze(b,x===-1),Et(g,e.fill(s.recordAt,{n:x+1,total:f}));let R=f<2;kt(u,"aria-disabled",R?"true":null),kt(y,"aria-disabled",R?"true":null)}),b}var Tf=e=>/^image\//.test(e.type)||/pdf/i.test(e.type)||/\.pdf$/i.test(e.name),$f=e=>(Array.isArray(e)?e:e?[e]:[]).filter(t=>t&&typeof t=="object"&&"name"in t);function jd(e){let{el:t,form:n,labels:r,node:o}=e,i=t("span",{class:"fd-attachment-name",dir:"auto"}),a=t("span",{class:"fd-attachment-count",dir:"ltr"}),s=t("button",{type:"button",class:"fd-button fd-record-step","aria-label":r.previousAttachment},t("span",{"aria-hidden":"true",class:"fd-record-arrow"},"\u2039")),d=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"},i,a,s,d,l),f),v=[],m=0,S=null,g,u=0,y,b;function w(){S?.free(),S=null;let k=v[m];if(!k)return f.replaceChildren();let h=fi(e.doc,k);S=h,f.replaceChildren(...h?[h.element]:[]),Et(i,k.name),Et(a,v.length>1?e.fill(r.recordAt,{n:m+1,total:v.length}):""),Ze(s,v.length<2),Ze(d,v.length<2),kt(l,"href",h?.url??null),kt(c,"aria-label",e.fill(r.attachment,{name:k.name}))}let L=k=>{m=(m+k+v.length)%v.length,w()};s.addEventListener("click",()=>L(-1)),d.addEventListener("click",()=>L(1));let x=k=>{v=k.filter(Tf),m=0,w(),R()},R=()=>Ze(c,n.node("#preview").invisible||!v.length);function E(k){let h=e.dataSource,N=++u;if(g=k.recordId,k.recordId==null||!h?.attachments||e.page.data.kind!=="record")return x([]);h.attachments({model:e.page.data.model,id:k.recordId,fields:e.page.fields}).then(z=>N===u&&x(z),()=>N===u&&x([]))}return{element:c,update(k){if(o.field){let h=k.values[o.field];h!==b&&(b=h,x($f(h)))}else k.status!=="loading"&&k.status!=="idle"&&(k.recordId!==g||k.status==="saved"&&y!=="saved")&&E(k);y=k.status,R()},destroy:()=>S?.free()}}var Mf='.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 zd(e){if(e.getElementById("fd-record-styles"))return;let t=e.createElement("style");t.id="fd-record-styles",t.textContent=Mf,(e.head??e.documentElement).append(t)}var Nf=0;function xr(e,t){let n={...t},r=e.ownerDocument,o=rr(n.page,n.parent?{parent:n.parent.fields}:{});if(!o.ok)throw new Error(`This page cannot be shown:
61
61
  ${o.issues.map(M=>` ${M.path}: ${M.message}`).join(`
62
- `)}`);let i=n.locale??o.page.language,a=i?or(o.page,i):o.page,d=n.translate?jn(a,n.translate):a,s=M=>{let Y=i?or(M,i):M;return n.translate?jn(Y,n.translate):Y},l=hr(i),f=n.preferences??Oi(),c=Td(n,(M,Y)=>S.say(M,Y)),k=!n.form,m={...It[l],...n.labels},S={open:M=>Vd({options:n,place:e,root:T,title:Y=>s(Y).title||Y.id,back:m.back,missing:Y=>w(m.pageMissing,{page:Y}),say:(Y,de)=>S.say(Y,de),post:Y=>h.post(Y),name:()=>Jt()||m.newRecord},M),say:(M,Y)=>N(M,Y),ask:M=>H(M),show:M=>{if(!j.get(M)?.())throw new Error(`No tab "${M}" can be shown here`)},openUrl:(M,Y)=>Y?r.defaultView?.open(M,"_blank","noopener,noreferrer"):r.defaultView?.location.assign(M),...n.host},h=n.form??eo({...n,page:d,host:S,messages:n.messages??Lt[l]}),p=Qe[l],y=n.dir??(i&&Br(i)?"rtl":void 0),b=`fd${++Nf}`,v=[],R=v,x=[],L=M=>`${b}-${M.replace(/[^A-Za-z0-9_-]/g,"_")}`,E=L,w=(M,Y)=>M.replace(/\{(\w+)\}/g,(de,be)=>String(Y[be]??""));Ci(r),zd(r);function g(M,Y={},...de){let be=r.createElement(M);for(let[Re,Te]of Object.entries(Y))Te!==void 0&&be.setAttribute(Re,Te);return be.append(...de),be}function P(M,Y){let de=wt(r,M,n.icons),be=g("bdi",{},Y);return de?[de,be]:[be]}let z=n.theme??d.look?.theme,T=g("form",{class:"fd-form",novalidate:"","data-fd-skin":yn(n.skin,z),dir:y,lang:i,"data-max-width":d.maxWidth});$n(T,z?{...d.look,theme:z}:d.look),xn(T,n.tokens);let H=n.confirm??Tr,N=Dd(T,g,m.dismiss),j=new Map,V=new Map;async function B(M,Y){if(!M.hasAttribute("aria-busy")){M.setAttribute("aria-busy","true"),M.setAttribute("aria-disabled","true");try{let{reason:de}=await Y();(de==="check"||de==="save")&&(h.getState().saveProblem||Ke(Q(h.getState())),ae())}finally{M.removeAttribute("aria-busy"),M.removeAttribute("aria-disabled")}}}let D=[],I=new Map,q=()=>sn(h.getState()),$=!1,re=!1;function Z(M,Y){Y&&M.style.setProperty("--fd-span",String(Y))}let J=M=>({columns:1,onPage:M,labels:d.look?.labels});function _(M){let{form:Y,page:de}=M,be=A=>L(M.prefix+A),Re=A=>R.push(M.root?A:()=>A(Y.getState()));function Te(A,W){let U=de.fields[A.field],X=be(A.id),ee=wr(A,U.type,W),se=g("div",{class:"fd-field","data-node":A.id,"data-field":A.field,"data-path":M.path+A.field,"data-type":U.type,"data-labels":ee,"data-focus":A.focus&&M.root?"":void 0});A.colspan&&se.style.setProperty("--fd-span",String(A.colspan));let fe=A.label??U.label,Fe=g("label",{class:"fd-label",id:`${X}-label`,for:X},Of(fe)),Ye=n.showValid&&!Cf.has(U.type)?wt(r,"check"):null;Ye&&(Ye.classList.add("fd-valid-mark"),Fe.append(Ye));let _e=Ct({form:Y,name:A.field,field:U,node:A,id:X,document:r,labels:p,preferences:f,locale:l,dialogs:c},n.widgets);A.focus&&M.root&&D.push({wrapper:se,focus:()=>_e.focus()});let it=_e.element.matches(Bd)?_e.element:_e.element.querySelector(Bd);ee==="hidden"&&!A.placeholder&&it?.setAttribute("placeholder",fe);let We=it?.getAttribute("placeholder")??null,ut=A.placeholderWhen?.length?it:null;["INPUT","SELECT","TEXTAREA"].includes(_e.element.tagName)||((_e.element.getAttribute("role")?_e.element:_e.element.querySelector(`[id="${X}"][role]`))?.setAttribute("aria-labelledby",Fe.id),Fe.addEventListener("click",kn=>{kn.target.closest?.(".fd-help-tip-wrap")||_e.focus()}));let lt=A.help??U.help,$t=A.helpShown??de.look?.helpShown??"below",Ft=lt&&$t!=="tooltip"?g("div",{class:"fd-help",id:`${X}-help`},lt):null,at=lt&&$t!=="below"?mt(`${X}-tip`,lt,w(m.helpFor,{label:fe})):null;at&&ee==="hidden"?_e.element.after(at.element):at&&(Fe.append(at.element),Fe.dir="auto");let Ue=g("div",{class:"fd-error",id:`${X}-error`,hidden:""}),At=g("div",{class:"fd-warning",id:`${X}-warning`,role:"status",hidden:""});se.append(...ee==="after"?[_e.element,Fe]:[Fe,_e.element],...Ft?[Ft]:[],Ue,At);let Ot=de.look?.readonlyShown==="text"&&Pi(U,A)?Ii({document:r,field:U,node:A,id:X,locale:l,labels:p,dialogs:c}):null;Ot&&_e.element.after(Ot.element),_e.destroy&&x.push(()=>_e.destroy?.());let Pn=!1,wn="";se.addEventListener("focusin",()=>Pn=!0),se.addEventListener("focusout",Tt=>{se.contains(Tt.relatedTarget)||(Pn=!1,queueMicrotask(()=>Ki(Y.getState())))});let Ud=A.tones!==void 0||A.bold!==void 0,Ki=Tt=>{let kn=Y.node(A.id);if(Xe(se,kn.invisible),se.classList.toggle("fd-required",kn.required),Ud){let dn=Y.fieldTone(A.id);kt(se,"data-tone",dn.tone),se.classList.toggle("fd-value-bold",dn.bold)}ut&&kt(ut,"placeholder",Y.placeholder(A.id)??We);let In=Tt.errors[A.field];Xe(Ue,!In),Et(Ue,In??"");let Gi=Tt.warnings[A.field]??"";(!Pn||!Gi)&&(wn=Gi);let Do=[In?"":wn,Tt.warning&&Tt.warningField===A.field?Tt.warning:""].filter(Boolean).join(" ");if(Xe(At,!Do),Et(At,Do),Ye){let dn=Tt.values[A.field],Kd=dn!=null&&dn!==""&&!(Array.isArray(dn)&&!dn.length),Ji=!kn.readonly&&!In&&Kd&&Tt.dirty.includes(A.field)&&Y.problem(A.field)===null;se.classList.toggle("fd-valid",Ji),Ye.toggleAttribute("hidden",!Ji)}let er=kn.readonly||G||M.locked();Ot&&(Xe(_e.element,er),Xe(Ot.element,!er),kt(se,"data-read-text",er?"":null),er&&Ot.update(Tt.values[A.field],Tt.values)),_e.update({value:Tt.values[A.field],values:Tt.values,readonly:er,required:kn.required,invalid:!!In,describedBy:[Ft?.id??at?.bubble.id,In?Ue.id:void 0,Do?At.id:void 0].filter(Boolean).join(" ")||void 0})};return Re(Ki),se}function mt(A,W,U){let X=g("span",{class:"fd-help-bubble",role:"tooltip",id:A,hidden:""},W),ee=g("button",{type:"button",class:"fd-help-tip","aria-label":U,"aria-expanded":"false","aria-controls":A},"?"),se=!1,fe=Fe=>{X.hidden=!Fe,ee.setAttribute("aria-expanded",String(Fe)),Fe&&dt(X)};return ee.addEventListener("mouseenter",()=>fe(!0)),ee.addEventListener("mouseleave",()=>fe(se)),ee.addEventListener("focus",()=>fe(!0)),ee.addEventListener("blur",()=>(se=!1,fe(!1))),ee.addEventListener("click",Fe=>{Fe.preventDefault(),se=!se,fe(se)}),ee.addEventListener("keydown",Fe=>{Fe.key!=="Escape"||X.hidden||(Fe.stopPropagation(),se=!1,fe(!1))}),{element:g("span",{class:"fd-help-tip-wrap"},ee,X),bubble:X}}function dt(A){A.style.transform="";let W=A.getBoundingClientRect(),U=r.documentElement.clientWidth,X=8,ee=W.right>U-X?U-X-W.right:W.left<X?X-W.left:0;ee&&(A.style.transform=`translateX(${Math.round(ee)}px)`)}function ze(A,W){Re(()=>Xe(A,Y.node(W).invisible))}function vt(A){let W=g("button",{type:"button",class:`fd-button fd-button-${A.style??"secondary"}`,"data-node":A.id},...P(A.icon,A.label));return A.hotkey&&Mn(W,A.hotkey,A.label),Z(W,A.colspan),W.addEventListener("click",()=>{B(W,()=>Y.runAction(A.id))}),ze(W,A.id),De(A,W)}function Ze(A,W=!1){let U=A.style??"paragraph",X=Ui(r,de.fields,A.text,l),ee=W?g("span",{class:`fd-oneline-words fd-text-${U}`,"data-node":A.id},...X.nodes):U==="alert"?g("div",{class:`fd-alert fd-text-alert fd-tone-${A.tone??"info"}`,role:"status","data-node":A.id},g("span",{class:"fd-alert-message"},...X.nodes)):g(U==="heading"?"h3":"p",{class:`fd-text-${U}`,"data-node":A.id},...X.nodes);return Z(ee,A.colspan),ze(ee,A.id),Re(se=>X.update(se.values)),ee}function ot(A){let W=g("div",{class:"fd-slot","data-slot":A.name,"data-node":A.id}),U=n.slots?.[A.name]?.(W,{form:Y,name:A.name});return U&&x.push(U),ze(W,A.id),W}function Ce(A,W,U){let X=g("div",{class:"fd-grid"});if(W!==null&&(X.style.setProperty("--fd-columns",String(ln(W))),ln(W)===12&&X.setAttribute("data-twelfths",""),typeof W=="object"))for(let ee of["medium","narrow"]){let se=W[ee];se!==void 0&&(X.setAttribute(`data-columns-${ee}`,String(se)),X.style.setProperty(`--fd-columns-${ee}`,String(se)))}return X.append(...A.map(ee=>Ge(ee,U))),X}function rt(A,W){let[U]=A.children;if(!W.arrangement||W.at==="tracks"||ln(A.columns)!==12||A.children.length<2||U?.type!=="field"||A.children.reduce((se,fe)=>se+(fe.colspan??1),0)>12)return null;let X=de.fields[U.field]?.type,ee=X?wr(U,X,W.inner.labels):"hidden";return ee===void 0?"skin":ee==="beside"?"beside":null}function ge(A,W){let U=g("div",{class:"fd-field fd-oneline","data-node":A.id,"data-style":"inline","data-labels":W.labels});Z(U,A.colspan);let X=g("div",{class:"fd-oneline-row",role:"group"},...qd(A.children).map(ee=>{let se=ee.map(fe=>Ge(fe,{columns:1,onPage:!1,inline:!0}));return se.length===1?se[0]:g("span",{class:"fd-oneline-pair"},...se)}));if(A.title){let ee=g("span",{class:"fd-label",id:be(`${A.id}-label`)},A.title);X.setAttribute("aria-labelledby",ee.id),U.append(ee)}return U.append(X),ze(U,A.id),U}function Be(A,W){if(A.style==="inline")return ge(A,W);let U=Io(A,W),X=g(U.arrangement?"div":"fieldset",{class:"fd-section","data-node":A.id,"data-style":U.style,"data-place":U.at,"data-on-page":U.style==="card"&&W.onPage?"":void 0});Z(X,A.colspan);let ee=rt(A,U);ee&&X.setAttribute("data-row",ee),A.labelWidth&&X.style.setProperty("--fd-label-width",`${A.labelWidth}px`);let se=A.description?g("p",{class:"fd-section-description"},A.description):null,fe=Ce(A.children,U.at==="tracks"?null:A.columns,U.inner);if(A.title&&A.collapsible){fe.id=be(`${A.id}-content`);let Fe=g("button",{type:"button",class:"fd-section-toggle","aria-controls":fe.id},g("span",{class:"fd-section-chevron","aria-hidden":"true"}),...P(A.icon,A.title)),Ye=A.collapsed!==!0,_e=it=>{Ye=it,Fe.setAttribute("aria-expanded",String(Ye)),fe.hidden=!Ye,se&&(se.hidden=!Ye),X.classList.toggle("fd-section-folded",!Ye)};Fe.addEventListener("click",()=>_e(!Ye)),I.set(X,()=>_e(!0)),_e(Ye),X.append(g("legend",{class:"fd-section-title"},Fe))}else A.title&&X.append(g("legend",{class:"fd-section-title"},...P(A.icon,A.title)));return se&&X.append(se),X.append(fe),ze(X,A.id),X}function ye(A,W){let U=g("div",{class:"fd-tabs","data-node":A.id});Z(U,A.colspan);let X=g("div",{class:"fd-tablist",role:"tablist"}),ee=null,se=A.children[0].id,fe=We=>{ee=se=We,q(),Y.shown(We)},Fe=A.children.map(We=>{let ut=be(`${We.id}-tab`),lt=be(`${We.id}-panel`),$t=g("button",{type:"button",class:"fd-tab",role:"tab",id:ut,"aria-controls":lt,"data-node":We.id},...P(We.icon,We.label)),Ft=g("div",{class:"fd-tabpanel",role:"tabpanel",id:lt,"aria-labelledby":ut}),at=[],Ue=!1,At=()=>{if(Ue)return;Ue=!0;let wn=R;R=at;try{Ft.append(Ce(We.children,1,{columns:1,onPage:W.onPage,labels:W.labels}))}finally{R=wn}},Ot=()=>!Y.node(We.id).invisible&&(fe(We.id),!0);$t.addEventListener("click",()=>fe(We.id)),j.has(We.id)||j.set(We.id,Ot);let Pn=Pe(We.children);if(M.root)for(let wn of Pn)V.has(wn)||V.set(wn,Ot);return X.append($t),{tab:We,button:$t,panel:Ft,own:at,build:At,fields:Pn}});X.addEventListener("keydown",We=>{let ut=Fe.filter(Ue=>!Ue.button.hidden),lt=ut.findIndex(Ue=>Ue.tab.id===se),$t={ArrowRight:1,ArrowLeft:-1,Home:-lt,End:ut.length-1-lt}[We.key];if($t===void 0||lt===-1)return;We.preventDefault();let Ft=T.getAttribute("dir")==="rtl"&&(We.key==="ArrowRight"||We.key==="ArrowLeft"),at=ut[(lt+(Ft?-$t:$t)+ut.length)%ut.length];fe(at.tab.id),at.button.focus()});let Ye=Wd(X,g);x.push(Ye.destroy),U.append(Ye.element,...Fe.map(We=>We.panel));let _e="",it="";return Re(We=>{let ut=Y.node(A.id).invisible;Xe(U,ut);let lt=Fe.filter(Ue=>!Y.node(Ue.tab.id).invisible);ee!==null&&lt.some(Ue=>Ue.tab.id===ee)?se=ee:lt.length&&(se=lt[0].tab.id);let Ft=Y.getState().errors;for(let Ue of Fe){let At=Ue.tab.id===se;if(Xe(Ue.button,!lt.includes(Ue)),kt(Ue.button,"aria-selected",String(At)),Ue.button.tabIndex!==(At?0:-1)&&(Ue.button.tabIndex=At?0:-1),kt(Ue.button,"data-problem",Ue.fields.some(Ot=>Ft[Ot])?"":null),Xe(Ue.panel,!At),At&&!ut){Ue.build();for(let Ot of Ue.own)Ot(We)}}let at=lt.map(Ue=>Ue.tab.id).join(" ");if(at!==_e&&(_e=at,Ye.measure()),se!==it&&X.clientWidth){it=se;let Ue=Fe.find(At=>At.tab.id===se);Ue&&Ye.reveal(Ue.button)}}),U}function Pe(A){return A.flatMap(W=>W.type==="field"?[W.field]:W.type==="section"?Pe(W.children):W.type==="tabs"?W.children.flatMap(U=>Pe(U.children)):[])}function Ge(A,W){return De(A,u(A,W))}function De(A,W){return A.hideOn?.length&&(W.dataset.hideOn=A.hideOn.join(" ")),W}function u(A,W){switch(A.type){case"field":return Te(A,W.labels);case"button":return vt(A);case"text":return Ze(A,W.inline);case"slot":return ot(A);case"section":return Be(A,W);case"tabs":return ye(A,W);case"divider":case"spacer":case"image":return F(A);case"form":return C(A,W)}}function F(A){let W=A.type==="divider"?g("hr",{class:"fd-divider","data-node":A.id}):A.type==="spacer"?g("div",{class:"fd-block fd-spacer","aria-hidden":"true","data-node":A.id}):O(A);return A.type!=="divider"&&A.colspan&&W.style.setProperty("--fd-span",String(A.colspan)),ze(W,A.id),W}function O(A){let W=g("img",{class:"fd-image",src:A.src,alt:A.alt,loading:"lazy"}),U=A.href&&/^(https?:\/\/|mailto:)/i.test(A.href)?A.href:void 0,X=g("figure",{class:"fd-block fd-figure","data-node":A.id,"data-align":A.align},U?g("a",{href:U,target:"_blank",rel:"noopener noreferrer"},W):W,...A.caption?[g("figcaption",{class:"fd-caption"},A.caption)]:[]),ee=typeof A.width=="number"?`${A.width}px`:A.width&&{small:"160px",medium:"320px",large:"480px",full:"100%"}[A.width];return ee&&X.style.setProperty("--fd-image-width",ee),X}function C(A,W){let U=g("fieldset",{class:"fd-section fd-form-part","data-node":A.id,"data-style":"card","data-on-page":W.onPage?"":void 0,"aria-busy":"true"});Z(U,A.colspan);let X=g("p",{class:"fd-form-part-note"},m.loading);U.append(X),ze(U,A.id);let ee=Fe=>{U.removeAttribute("aria-busy"),X.textContent=Fe,X.classList.add("fd-form-part-problem")},se=Fe=>{if(re)return;if(!Fe)return ee(w(m.formMissing,{page:A.page}));let Ye=s(Fe),_e=Ye.title||Fe.id,it=M.chain.findIndex(at=>at.id===Fe.id);if(it!==-1)return ee(w(m.formInItself,{page:_e,chain:[...M.chain.slice(it).map(at=>at.title),_e].join(" \u2192 ")}));if(Fe.layout.type!=="sections"&&Fe.layout.type!=="tabs")return ee(w(m.formNotPlaceable,{page:_e}));let We=rr(Ye),ut;try{if(!We.ok)throw new Error(We.issues.map(at=>`${at.path}: ${at.message}`).join("; "));ut=Y.embed(A.id,Ye)}catch(at){return console.warn(`Fieldia: the saved form "${Fe.id}" cannot be shown: ${at.message}`),ee(w(m.formBroken,{page:_e}))}let lt=A.title??Ye.title??"";U.setAttribute("data-title",lt),lt&&U.prepend(g("legend",{class:"fd-section-title"},...P(void 0,lt)));let $t=_({root:!1,form:ut,page:Ye,prefix:`${M.prefix}${A.id}-`,chain:[...M.chain,{id:Fe.id,title:_e}],locked:()=>M.locked()||Y.node(A.id).readonly,path:`${M.path}${A.name}.`}),Ft=Ye.layout;X.replaceWith($t.grid(Ft.type==="tabs"?[Ft]:Ft.children,1,{columns:1,onPage:!1,labels:W.labels})),U.removeAttribute("aria-busy"),x.push(ut.subscribe(q)),$&&q()},fe;try{fe=vr(n,A.version===void 0?{id:A.page}:{id:A.page,version:A.version})}catch{fe=null}return fe instanceof Promise?fe.then(se,()=>se(null)):se(fe),U}return{item:Ge,grid:Ce,fieldItem:Te,buttonItem:vt,hideWhen:ze,slotItem:ot}}let{item:ie,grid:Me,fieldItem:me,buttonItem:we,hideWhen:Ee,slotItem:ce}=_({root:!0,form:h,page:d,prefix:"",chain:[{id:d.id,title:d.title||d.id}],locked:()=>!1,path:""}),G=n.readonly===!0,ne=n.editSwitch?g("button",{type:"button",class:"fd-button fd-edit-switch"}):null;ne?.addEventListener("click",async()=>{if(G)G=!1;else{if(h.getState().dirty.length&&!await h.save()){h.getState().saveProblem||Ke(Q(h.getState())),ae();return}G=!0}T.toggleAttribute("data-readonly",G),h.setEditing(!G),sn(h.getState())}),T.toggleAttribute("data-readonly",G),h.setEditing(!G),v.push(()=>{ne&&(ne.textContent=G?m.edit:m.done,ne.classList.toggle("fd-button-primary",G))});let ue=g("div",{class:"fd-status",role:"status","aria-live":"polite"}),Le=g("button",{type:"button",class:"fd-button fd-button-link fd-retry",hidden:""},m.retry);Le.addEventListener("click",()=>{ht()});let oe=g("div",{class:"fd-status-box"},ue,Le),K=()=>d.data.kind==="responses"?m.notSent:m.notSaved;function Q(M){let Y=[...T.querySelectorAll(".fd-field[data-path]")],de=[];for(let Re of Object.keys(M.errors)){let Te;for(let Ze=Re;Ze&&!Te;Ze=Ze.slice(0,Math.max(0,Ze.lastIndexOf("."))))Te=Y.find(ot=>ot.getAttribute("data-path")===Ze&&!ot.hidden);let mt=Re.split(".")[0],dt=Te?.querySelector(":scope > .fd-label")?.firstChild?.textContent??d.fields[mt]?.label??mt,ze=Te?.closest(".fd-form-part")?.getAttribute("data-title"),vt=ze?`${dt} (${ze})`:dt;de.some(Ze=>Ze.name===vt)||de.push({name:vt,at:Te?Y.indexOf(Te):1/0})}let be=de.sort((Re,Te)=>Re.at-Te.at).map(Re=>Re.name);return be.length?w(m.checkFields,{what:K(),fields:be.join(", ")}):K()}let le;v.push(M=>{let Y=M.saveProblem,de=M.status==="saving"?m.saving:M.status==="saved"?m.saved:M.status==="loading"?m.loading:M.status==="error"&&Y?Y.kind==="fields"?Q(M):Y.kind==="other"?Y.message:K():M.status==="error"?M.error??"":"";kt(ue,"aria-live",M.status==="error"&&Y?"off":"polite"),Et(ue,de),Xe(Le,!(M.status==="error"&&Y?.kind==="other")),ue.classList.toggle("fd-status-error",M.status==="error"),ue.classList.toggle("fd-status-saved",M.status==="saved"),n.saveStatus==="toast"&&(clearTimeout(le),oe.hidden=!de,M.status==="saved"&&(le=setTimeout(()=>oe.hidden=!0,2500)))});let ke=g("button",{type:"button",class:"fd-button fd-retry"},m.retry);ke.addEventListener("click",()=>{ht()});let Oe=g("div",{class:"fd-banner fd-tone-warning",role:"alert",hidden:""},g("span",{class:"fd-banner-text"},m.offline),ke),nt=g("div",{class:"fd-announce",role:"alert","aria-live":"assertive"});function Ke(M){nt.textContent="",setTimeout(()=>nt.textContent=M,0)}let pe=null;v.push(M=>{M.saveProblem!==pe&&(pe=M.saveProblem,Oe.hidden=pe?.kind!=="network",pe&&(pe.kind==="rule"?Tr(pe.message,!1):pe.kind==="fields"?Ke(Q(M)):pe.kind==="other"&&Ke(pe.message)))});let $e=g("div",{class:"fd-draft",hidden:""}),he=g("span"),Ae=g("button",{type:"button",class:"fd-button fd-button-primary"},m.restore),te=g("button",{type:"button",class:"fd-button fd-button-link"},m.discardDraft);Ae.addEventListener("click",()=>h.restoreDraft()),te.addEventListener("click",()=>h.discardDraft()),$e.append(he,Ae,te),v.push(M=>{Xe($e,!M.draft),M.draft&&(he.textContent=w(m.draftFound,{time:new Date(M.draft.savedAt).toLocaleString()}))});function ae(){if(![...T.querySelectorAll('[aria-invalid="true"]')].find(be=>!be.closest(".fd-tabpanel[hidden]"))){let be=h.getState().errors,Re=[...V.keys()].find(Te=>be[Te]);Re&&V.get(Re)?.()}let Y=[...T.querySelectorAll('[aria-invalid="true"]')].find(be=>!be.closest(".fd-tabpanel[hidden]"))??null;if(!Y)return;for(let be=Y.closest(".fd-section-folded");be;be=be.parentElement?.closest(".fd-section-folded")??null)I.get(be)?.();if(!Y.dispatchEvent(new CustomEvent("fd-focus-problem",{cancelable:!0})))return;(Y.matches("input, select, textarea, button")?Y:Y.querySelector("input, select, textarea, button"))?.focus()}let xe=g("div",{class:"fd-done",hidden:""},g("p",{class:"fd-done-title"},m.submitted)),He=g("button",{type:"button",class:"fd-button"},m.submitAnother);xe.append(He);let ct=g("div",{class:"fd-content"});async function ht(){if(!await h.save()){h.getState().saveProblem||Ke(Q(h.getState())),ae();return}d.data.kind==="responses"&&(ct.hidden=!0,xe.hidden=!1)}He.addEventListener("click",()=>{h.reset(),ct.hidden=!1,xe.hidden=!0});function Jt(){let M=h.getState();if(M.recordId==null)return"";let Y=d.layout.type==="sheet"?d.layout.title?.field:void 0;return(Y?St(d.fields[Y],M.values[Y],M.values,l):"")||d.title||""}function Nn(M){if(d.data.kind!=="record")return null;let Y=Hd({doc:r,el:g,form:h,toolbar:M,records:n.records,breadcrumbs:n.breadcrumbs,labels:m,icons:n.icons,uid:E,fill:w,withIcon:P,press:B,name:Jt,render:q,async leave(){if(!h.getState().dirty.length)return!0;let de=await h.save();return de||(h.getState().saveProblem||Ke(Q(h.getState())),ae()),de}});return Y?(v.push(Y.update),x.push(Y.destroy),Y.element):null}function Sr(){if(!d.title&&!d.description)return null;let M=g("header",{class:"fd-page-head"});return d.title&&M.append(g("h1",{class:"fd-page-title"},d.title)),d.description&&M.append(g("p",{class:"fd-page-description"},d.description)),M}function Er(M){return!M?.length||n.showActions===!1?null:g("div",{class:"fd-actions fd-actions-end fd-page-footer"},oe,...M.map(we))}function zt(M){let Y=g("div",{class:"fd-sections","data-node":M.id},...M.children.map(Te=>ie(Te,J(!0)))),de=Er(M.footer);if(de)return g("div",{},Y,de);let be=g("button",{type:"submit",class:"fd-button fd-button-primary"},d.data.kind==="responses"?m.submit:m.save),Re=g("div",{class:"fd-actions fd-actions-end"},oe,be);if(d.data.kind==="record"){let Te=g("button",{type:"button",class:"fd-button"},m.discard);Te.addEventListener("click",()=>h.reset()),Re.insertBefore(Te,be),v.push(mt=>{let dt=mt.dirty.length>0&&mt.status!=="saving"&&!G;Xe(be,!dt),Xe(Te,!dt)})}else v.push(()=>Xe(be,G));return ne&&Re.prepend(ne),n.showActions===!1?g("div",{},Y):d.actionsPosition==="top"?(Re.classList.add("fd-actions-top"),g("div",{},Re,Y)):g("div",{},Y,Re)}function Yt(M){let Y=g("div",{class:"fd-wizard","data-node":M.id}),de=g("div",{class:"fd-progress-text"}),be=g("span");Y.append(g("div",{class:"fd-progress"},de,g("div",{class:"fd-progress-bar"},be)));let Re=M.clickable?g("ol",{class:"fd-steps-list"}):null,Te=new Map;if(Re){for(let Ce of M.children){let rt=g("button",{type:"button",class:"fd-step-link"},...P(Ce.icon,Ce.label));rt.addEventListener("click",()=>{h.goTo(Ce.id)?ot():ae()}),Te.set(Ce.id,rt),Re.append(g("li",{},rt))}Y.append(g("nav",{class:"fd-steps","aria-label":m.steps},Re))}let mt=M.children.map(Ce=>{let rt=g("section",{class:"fd-step","data-node":Ce.id,"aria-labelledby":E(`${Ce.id}-title`)});return rt.append(g("h2",{class:"fd-step-title",id:E(`${Ce.id}-title`)},...P(Ce.icon,Ce.label))),Ce.description&&rt.append(g("p",{class:"fd-section-description"},Ce.description)),rt.append(Me(Ce.children,1,J(!1))),Y.append(rt),{step:Ce,panel:rt}}),dt=g("button",{type:"button",class:"fd-button"},M.backLabel??m.back),ze=g("button",{type:"button",class:"fd-button fd-button-link"},m.skip),vt=g("button",{type:"submit",class:"fd-button fd-button-primary"});Y.append(g("div",{class:"fd-wizard-nav"},dt,g("span",{class:"fd-spacer"}),oe,ze,vt)),dt.addEventListener("click",()=>{h.back()&&ot()}),ze.addEventListener("click",()=>{h.skip()&&ot()});let Ze=()=>{let Ce=h.steps();return Ce.indexOf(h.getState().step??"")===Ce.length-1};vn=async()=>{if(Ze())return ht();h.next()?ot():ae()};function ot(){mt.find(rt=>rt.step.id===h.getState().step)?.panel.querySelector("input, select, textarea, [role=radio]")?.focus()}return v.push(Ce=>{let rt=h.steps(),ge=Math.max(0,rt.indexOf(Ce.step??""));de.textContent=w(m.stepOf,{n:ge+1,total:rt.length}),be.style.width=`${(ge+1)/Math.max(1,rt.length)*100}%`;for(let{step:ye,panel:Pe}of mt)Pe.hidden=ye.id!==Ce.step;let Be=ge===rt.length-1;dt.hidden=ge===0,ze.hidden=Be||!M.children.find(ye=>ye.id===Ce.step)?.optional,vt.textContent=Be?M.finishLabel??m.submit:M.nextLabel??m.next;for(let[ye,Pe]of Te){let Ge=rt.indexOf(ye);Pe.parentElement.hidden=Ge===-1,Pe.classList.toggle("fd-step-done",Ge!==-1&&Ge<ge),Pe.classList.toggle("fd-step-skipped",Ce.skipped.includes(ye)),ye===Ce.step?Pe.setAttribute("aria-current","step"):Pe.removeAttribute("aria-current")}}),Y}function Bt(M){let Y=g("div",{class:"fd-sheet-page","data-node":M.id}),de=g("div",{class:"fd-actions"}),be=g("button",{type:"submit",class:"fd-button fd-button-primary"},m.save),Re=g("button",{type:"button",class:"fd-button"},m.discard);Re.addEventListener("click",()=>h.reset());let Te=d.actionsPosition==="bottom",mt=g("div",{class:"fd-actions fd-actions-end fd-sheet-foot"}),dt=Er(M.footer);n.showActions===!1||dt?de.append(...(M.buttons??[]).map(we)):Te?(de.append(...(M.buttons??[]).map(we)),mt.append(oe,Re,be)):de.append(be,Re,...(M.buttons??[]).map(we),oe),ne&&n.showActions!==!1&&de.prepend(ne),v.push(ge=>{let Be=ge.dirty.length>0&&ge.status!=="saving"&&!G;be.hidden=!Be,Re.hidden=!Be});let ze=g("div",{class:"fd-header"},de),vt=M.statusbar?.position==="title";M.statusbar&&!vt&&ze.append(Xt(M.statusbar));let Ze=g("div",{class:"fd-card"}),ot=[...M.ribbon?[M.ribbon]:[],...M.ribbons??[]];if(ot.length){let ge=g("div",{class:"fd-ribbon-frame"}),Be=ot.map(ye=>{let Pe=g("div",{class:`fd-ribbon fd-tone-${ye.tone??"muted"}`,"data-node":ye.id,title:ye.tooltip},ye.label);return ge.append(Pe),{ribbon:ye,element:Pe}});v.push(ye=>{let Pe=!1;for(let{ribbon:Ge,element:De}of Be){let u=!Pe&&!h.node(Ge.id).invisible;if(Pe||(Pe=u),Xe(De,!u),!u)continue;let F=Ge.labelField?St(d.fields[Ge.labelField],ye.values[Ge.labelField],ye.values,l):"";Et(De,F||Ge.label)}}),Ze.append(ge)}if(M.statButtons?.length){let ge=g("div",{class:"fd-stats"}),Be=(ye,Pe)=>ye&&d.fields[ye]?St(d.fields[ye],Pe[ye],Pe,l):"";for(let ye of M.statButtons){let Pe=g("span",{class:"fd-stat-value"}),Ge=g("span",{class:"fd-stat-label"},ye.label),De=ye.secondField&&ye.secondLabel!==void 0?{value:g("span",{class:"fd-stat-value"}),label:g("span",{class:"fd-stat-label"},ye.secondLabel)}:null,u=wt(r,ye.icon,n.icons),F=De?g("span",{class:"fd-stat-words fd-stat-pair"},g("span",{class:"fd-stat-row"},Ge,Pe),g("span",{class:"fd-stat-row"},De.label,De.value)):g("span",{class:"fd-stat-words"},Pe,Ge),O=ye.help?E(`${ye.id}-help`):void 0,C=g("button",{type:"button",class:"fd-stat","data-node":ye.id,title:ye.help||void 0,"aria-describedby":O},...u?[u,F]:[F]);O&&ge.append(g("span",{class:"fd-sr-only",id:O},ye.help)),C.addEventListener("click",()=>{B(C,()=>h.runAction(ye.id))}),v.push(A=>{C.hidden=h.node(ye.id).invisible;let W=A.values,U=Be(ye.unitField,W)||ye.unit||"",X=Be(ye.field,W),ee=Be(ye.secondField,W);De?(Et(Pe,X),Et(De.value,[ee,U].filter(Boolean).join(" "))):Et(Pe,[[X,ee].filter(Boolean).join(" / "),X||ee?U:""].filter(Boolean).join(" ")),Et(Ge,Be(ye.labelField,W)||ye.label)}),ge.append(C)}v.push(()=>{ge.hidden=[...ge.querySelectorAll(":scope > .fd-stat")].every(ye=>ye.hidden)}),Ze.append(ge)}for(let ge of M.alerts??[]){let Be=Ui(r,d.fields,ge.message,l),ye=g("span",{class:"fd-alert-message"},...Be.nodes),Pe=!1,Ge=g("div",{class:`fd-alert fd-tone-${ge.tone??"info"}`,role:"status","data-node":ge.id},ye);if(ge.buttons?.length&&Ge.append(g("span",{class:"fd-alert-actions"},...ge.buttons.map(De=>we({...De,style:De.style??"link"})))),v.push(De=>{Be.update(De.values);let u=ge.messageField?De.values[ge.messageField]:null,F=typeof u=="string"?u.trim():"";F?Et(ye,F):Pe&&ye.replaceChildren(...Be.nodes),Pe=!!F}),ge.dismissible){let De=!1,u=g("button",{type:"button",class:"fd-alert-close","aria-label":m.dismiss},"\xD7");u.addEventListener("click",()=>{De=!0,Ge.hidden=!0}),Ge.append(u),v.push(()=>{Ge.hidden=De||h.node(ge.id).invisible})}else Ee(Ge,ge.id);Ze.append(Ge)}if(M.badges?.length){let ge=g("div",{class:"fd-badges"});for(let Be of M.badges){let ye=g("span",{class:`fd-badge fd-tone-${Be.tone??"muted"}`,"data-node":Be.id},...P(Be.icon,Be.label));Ee(ye,Be.id),ge.append(ye)}v.push(()=>{ge.hidden=[...ge.children].every(Be=>Be.hidden)}),Ze.append(ge)}if(M.title){let ge=g("div",{class:"fd-title"});M.title.label&&ge.append(g("label",{class:"fd-title-label",for:E("#title")},M.title.label)),M.title.above?.length&&ge.append(g("div",{class:"fd-title-above"},...M.title.above.map(De=>me(De))));let Be=me({type:"field",id:"#title",field:M.title.field,placeholder:M.title.placeholder,...M.title.placeholderWhen?{placeholderWhen:M.title.placeholderWhen}:{},...M.title.focus?{focus:!0}:{}}),ye=M.title.before??[],Pe=M.title.after??[];if(ye.length||Pe.length){Be.classList.add("fd-title-name");let De=u=>{let F=me(u);return F.classList.add("fd-title-side"),F};ge.append(g("div",{class:"fd-title-line"},...ye.map(De),Be,...Pe.map(De)))}else ge.append(Be);M.title.subtitleField&&ge.append(me({type:"field",id:"#subtitle",field:M.title.subtitleField})),M.title.below?.length&&ge.append(g("div",{class:"fd-title-below"},...M.title.below.map(De=>me(De))));let Ge=g("div",{class:"fd-title-row"},ge);if(M.title.avatarField){let De=me({type:"field",id:"#avatar",field:M.title.avatarField});De.classList.add("fd-avatar"),Ge.append(De)}Ze.append(Ge)}M.statusbar&&vt&&Ze.append(g("div",{class:"fd-title-statusbar"},Xt(M.statusbar))),Ze.append(Me(M.children,1,J(!1))),dt&&Ze.append(dt),Te&&n.showActions!==!1&&(Ze.append(mt),v.push(ge=>{mt.hidden=ge.dirty.length===0&&!ue.textContent}));let Ce=g("div",{class:"fd-sheet-layout"},Ze);if(M.attachmentPreview){let ge=jd({doc:r,el:g,form:h,page:d,node:M.attachmentPreview,dataSource:n.dataSource,labels:m,fill:w});Ce.classList.add("fd-has-preview"),Ce.append(ge.element),v.push(ge.update),x.push(ge.destroy)}M.sidePanel&&(Ce.classList.add("fd-has-side"),M.sidePanelBeside&&Ce.setAttribute("data-side-beside",M.sidePanelBeside),Ce.append(g("aside",{class:"fd-side"},ce(M.sidePanel))));let rt=Nn(M.toolbar);return Y.append(...rt?[rt]:[],ze,Ce),Y}function Xt(M){let Y=d.fields[M.field],de={clickable:M.clickable===!0};M.visibleStates&&(de.visibleStates=M.visibleStates);for(let Te of["durationsField","fold","saves"])M[Te]!==void 0&&(de[Te]=M[Te]);let be={type:"field",id:"#statusbar",field:M.field,widget:"statusbar",options:de},Re=Ct({form:h,name:M.field,field:Y,node:be,id:E("statusbar"),document:r,labels:p,preferences:f,locale:l,dialogs:c},n.widgets);return Re.destroy&&x.push(()=>Re.destroy?.()),v.push(Te=>{Xe(Re.element,h.node("#statusbar").invisible),Re.update({value:Te.values[M.field],values:Te.values,readonly:h.node("#statusbar").readonly||G,required:!1,invalid:!1})}),Re.element}let vn=null,ft=d.layout,bt;if(ft.type==="sheet")bt=Bt(ft);else if(ft.type==="wizard")bt=Yt(ft);else if(ft.type==="tabs")bt=zt({id:`${ft.id}-page`,children:[ft]});else if(ft.type==="list"){let M=Id({page:d,node:ft,form:h,dataSource:n.dataSource,doc:r,el:g,labels:m,locale:l,fill:w,press:B,withIcon:P,uid:E,icons:n.icons,preferences:f,onOpenRecord:n.onOpenRecord,...n.listFilter?{fixedFilter:n.listFilter}:{}});x.push(M.destroy),bt=M.element}else bt=zt(ft);let Lr=ft.type==="sheet"?null:Sr(),Rr=ft.type==="sections"||ft.type==="tabs"?Nn(void 0):null;ct.append(...Rr?[Rr]:[],...Lr?[Lr]:[],Oe,$e,bt),T.append(ct,xe,nt),n.saveStatus==="toast"?(oe.classList.add("fd-toast"),T.append(oe)):n.saveStatus==="bar"&&(oe.classList.add("fd-status-bar"),ct.prepend(oe)),T.addEventListener("mouseover",M=>{let Y=M.target;if(Y.tagName!=="INPUT"||!Y.classList.contains("fd-input")||Y.title&&!Y.hasAttribute("data-cut-title"))return;let de=Y.scrollWidth>Y.clientWidth&&Y.value!=="";kt(Y,"title",de?Y.value:null),kt(Y,"data-cut-title",de?"":null)}),T.addEventListener("submit",M=>{M.preventDefault(),ft.type!=="list"&&(vn?vn():ht())});function Cn(){let M=r.activeElement;M&&T.contains(M)&&(M.tagName==="INPUT"||M.tagName==="TEXTAREA")&&M.dispatchEvent(new Event("change",{bubbles:!0}))}function Zn(M){let Y=[...T.querySelectorAll(".fd-field")].filter(Re=>!Re.closest('[hidden], [data-type="one2many"] .fd-field, .fd-form-dialog')&&!Re.parentElement?.closest('[data-type="one2many"]')),de=M.closest(".fd-field"),be=Y.slice(Y.indexOf(de)+1);for(let Re of be){let Te=Re.querySelector('input:not([type="hidden"]):not([readonly]):not([disabled]), select:not([disabled]), textarea:not([readonly]), [contenteditable="true"]');if(Te)return Te}return null}T.addEventListener("keydown",M=>{if(M.isComposing||M.key!=="Enter"||ft.type==="list"||M.target.closest(".fd-slot"))return;let Y=n.keys??{};if(M.ctrlKey||M.metaKey){if(Y.saveWithCtrlEnter===!1||n.showActions===!1||M.target.closest(".ag-root-wrapper"))return;M.preventDefault(),Cn(),vn?vn():ht();return}if(M.defaultPrevented||!Y.enterMovesToNext||M.shiftKey||M.altKey)return;let de=M.target;de.tagName!=="INPUT"&&de.tagName!=="SELECT"||de.closest('[data-type="one2many"]')||["button","submit","reset","file"].includes(de.type)||(M.preventDefault(),Zn(de)?.focus())});function Fr(M){let Y=M instanceof Element?M.closest(".fd-form"):null;if(Y)return Y===T&&!T.querySelector(":scope > .fd-dialog-backdrop");let de=[...r.querySelectorAll('[aria-modal="true"]')].filter(Re=>!Re.closest("[hidden]"));return(de[de.length-1]??r).querySelector(".fd-form")===T}let Ar=M=>{if(M.key==="Alt"){Fr(M.target)&&T.setAttribute("data-hotkeys","");return}let Y=No(M);if(!Y||!Fr(M.target))return;let de=[...T.querySelectorAll(`button[data-hotkey="${Y}"]`)].find(be=>be.closest(".fd-form")===T&&!be.closest("[hidden]")&&!be.disabled&&!be.hasAttribute("aria-busy"));de&&(M.preventDefault(),T.removeAttribute("data-hotkeys"),de.click())},Vt=()=>T.removeAttribute("data-hotkeys"),Qn=M=>M.key==="Alt"&&Vt();r.addEventListener("keydown",Ar),r.addEventListener("keyup",Qn),r.defaultView?.addEventListener("blur",Vt),x.push(()=>{r.removeEventListener("keydown",Ar),r.removeEventListener("keyup",Qn),r.defaultView?.removeEventListener("blur",Vt)});function Tr(M,Y=!0){return new Promise(de=>{let be=g("p",{id:`${b}-confirm`},M),Re=g("button",{type:"button",class:"fd-button"},m.cancel),Te=g("button",{type:"button",class:"fd-button fd-button-primary"},m.ok),mt=g("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":be.id},be,g("div",{class:"fd-actions fd-actions-end"},...Y?[Re,Te]:[Te])),dt=g("div",{class:"fd-dialog-backdrop"},mt),ze=T.ownerDocument,vt=ze.activeElement,Ze=ot=>{dt.remove(),((ge=>!!ge&&ge!==ze.body&&ge.isConnected&&!ge.closest("[hidden]"))(vt)?vt:T.querySelector('button[type="submit"]:not([hidden])'))?.focus(),de(ot)};Re.addEventListener("click",()=>Ze(!1)),Te.addEventListener("click",()=>Ze(!0)),dt.addEventListener("keydown",ot=>{ot.stopPropagation(),ot.key==="Escape"?(ot.preventDefault(),Ze(!1)):Ut(mt,ot)}),T.append(dt),Te.focus()})}function sn(M){for(let Y of v)Y(M)}e.append(T);let $r=h.subscribe(sn);x.push(h.on("run",({result:M})=>{(M.reason==="cannot"||M.reason==="app"&&M.error!==void 0)&&S.say(M.message??"",M.reason==="app"?"danger":"warning")})),sn(h.getState()),$=!0;let On=!1;return D.length&&x.push(h.on("open",()=>{let M=!On;On=!0,queueMicrotask(()=>{if(re||!T.isConnected||T.closest("[hidden]")||typeof T.checkVisibility=="function"&&!T.checkVisibility())return;let Y=r.activeElement;!(!Y||Y===r.body||Y===r.documentElement)&&!(M&&T.contains(Y))||D.find(be=>!be.wrapper.closest("[hidden]"))?.focus()})})),h.getState().status==="idle"&&h.load(),{form:h,element:T,setSkin(M){T.setAttribute("data-fd-skin",M)},setTheme(M){M?T.setAttribute("data-fd-theme",M):T.removeAttribute("data-fd-theme"),T.setAttribute("data-fd-skin",yn(n.skin,M??void 0))},setTokens(M){n.tokens=M??void 0,xn(T,M)},async save(){let M=await h.save();return M||ae(),M},check(){let M=h.validate();return M||ae(),M},setReadonly(M){G=M,T.toggleAttribute("data-readonly",G),h.setEditing(!G),sn(h.getState())},isReadonly:()=>G,on:(M,Y)=>{let de=h.on(M,Y);return x.push(de),de},setValues:M=>h.setValues(M),run:(M,Y)=>h.run(M,Y),destroy(){re=!0,$r();for(let M of x)M();T.remove(),k&&h.dispose()}}}var Bd='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 Of(e){return e.replace(/\s+([^\p{L}\p{N}\s]{1,3})$/u,"\xA0$1")}function qd(e){let t=[],n=0;for(;n<e.length;){let r=[e[n]],o=e[n].type==="field";if(!o&&e[n].type==="text"&&e[n+1]?.type==="field"&&(r.push(e[++n]),o=!0),n++,o)for(;e[n]?.type==="text"&&e[n+1]?.type!=="field";)r.push(e[n++]);t.push(r)}return t}function Vo(e,t){Lt[e]={...Lt.en,...t.messages},Qe[e]={...Qe.en,...t.widgets},It[e]={...It.en,...t.viewer}}var Pf="0.13.0",_d=globalThis;for(let[e,t]of _d.FieldiaLanguages??[])Vo(e,t);delete _d.FieldiaLanguages;return el(If);})();
62
+ `)}`);let i=n.locale??o.page.language,a=i?or(o.page,i):o.page,s=n.translate?jn(a,n.translate):a,d=M=>{let J=i?or(M,i):M;return n.translate?jn(J,n.translate):J},l=hr(i),f=n.preferences??Oi(),c=Td(n,(M,J)=>S.say(M,J)),v=!n.form,m={...Vt[l],...n.labels},S={open:M=>Vd({options:n,place:e,root:T,title:J=>d(J).title||J.id,back:m.back,missing:J=>k(m.pageMissing,{page:J}),say:(J,ce)=>S.say(J,ce),post:J=>g.post(J),name:()=>Ft()||m.newRecord},M),say:(M,J)=>D(M,J),ask:M=>W(M),show:M=>{if(!V.get(M)?.())throw new Error(`No tab "${M}" can be shown here`)},openUrl:(M,J)=>J?r.defaultView?.open(M,"_blank","noopener,noreferrer"):r.defaultView?.location.assign(M),...n.host},g=n.form??eo({...n,page:s,host:S,messages:n.messages??Lt[l]}),u=tt[l],y=n.dir??(i&&Br(i)?"rtl":void 0),b=`fd${++Nf}`,w=[],L=w,x=[],R=M=>`${b}-${M.replace(/[^A-Za-z0-9_-]/g,"_")}`,E=R,k=(M,J)=>M.replace(/\{(\w+)\}/g,(ce,be)=>String(J[be]??""));Ci(r),zd(r);function h(M,J={},...ce){let be=r.createElement(M);for(let[Fe,Te]of Object.entries(J))Te!==void 0&&be.setAttribute(Fe,Te);return be.append(...ce),be}function N(M,J){let ce=wt(r,M,n.icons),be=h("bdi",{},J);return ce?[ce,be]:[be]}let z=n.theme??s.look?.theme,T=h("form",{class:"fd-form",novalidate:"","data-fd-skin":yn(n.skin,z),dir:y,lang:i,"data-max-width":s.maxWidth});$n(T,z?{...s.look,theme:z}:s.look),xn(T,n.tokens);let W=n.confirm??Tr,D=Dd(T,h,m.dismiss),V=new Map,I=new Map;async function B(M,J){if(!M.hasAttribute("aria-busy")){M.setAttribute("aria-busy","true"),M.setAttribute("aria-disabled","true");try{let{reason:ce}=await J();(ce==="check"||ce==="save")&&(g.getState().saveProblem||Qe(Y(g.getState())),de())}finally{M.removeAttribute("aria-busy"),M.removeAttribute("aria-disabled")}}}let j=[],P=new Map,q=()=>sn(g.getState()),$=!1,te=!1;function X(M,J){J&&M.style.setProperty("--fd-span",String(J))}let G=M=>({columns:1,onPage:M,labels:s.look?.labels});function U(M){let{form:J,page:ce}=M,be=A=>R(M.prefix+A),Fe=A=>L.push(M.root?A:()=>A(J.getState()));function Te(A,H){let _=ce.fields[A.field],Z=be(A.id),ee=wr(A,_.type,H),ae=h("div",{class:"fd-field","data-node":A.id,"data-field":A.field,"data-path":M.path+A.field,"data-type":_.type,"data-labels":ee,"data-focus":A.focus&&M.root?"":void 0});A.colspan&&ae.style.setProperty("--fd-span",String(A.colspan));let pe=A.label??_.label,Ae=h("label",{class:"fd-label",id:`${Z}-label`,for:Z},Of(pe)),Xe=n.showValid&&!Cf.has(_.type)?wt(r,"check"):null;Xe&&(Xe.classList.add("fd-valid-mark"),Ae.append(Xe));let Ue=Ot({form:J,name:A.field,field:_,node:A,id:Z,document:r,labels:u,preferences:f,locale:l,dialogs:c},n.widgets);A.focus&&M.root&&j.push({wrapper:ae,focus:()=>Ue.focus()});let at=Ue.element.matches(Bd)?Ue.element:Ue.element.querySelector(Bd);ee==="hidden"&&!A.placeholder&&at?.setAttribute("placeholder",pe);let He=at?.getAttribute("placeholder")??null,pt=A.placeholderWhen?.length?at:null;["INPUT","SELECT","TEXTAREA"].includes(Ue.element.tagName)||((Ue.element.getAttribute("role")?Ue.element:Ue.element.querySelector(`[id="${Z}"][role]`))?.setAttribute("aria-labelledby",Ae.id),Ae.addEventListener("click",kn=>{kn.target.closest?.(".fd-help-tip-wrap")||Ue.focus()}));let ft=A.help??_.help,Mt=A.helpShown??ce.look?.helpShown??"below",At=ft&&Mt!=="tooltip"?h("div",{class:"fd-help",id:`${Z}-help`},ft):null,dt=ft&&Mt!=="below"?gt(`${Z}-tip`,ft,k(m.helpFor,{label:pe})):null;dt&&ee==="hidden"?Ue.element.after(dt.element):dt&&(Ae.append(dt.element),Ae.dir="auto");let Ke=h("div",{class:"fd-error",id:`${Z}-error`,hidden:""}),Tt=h("div",{class:"fd-warning",id:`${Z}-warning`,role:"status",hidden:""});ae.append(...ee==="after"?[Ue.element,Ae]:[Ae,Ue.element],...At?[At]:[],Ke,Tt);let Pt=ce.look?.readonlyShown==="text"&&Pi(_,A)?Ii({document:r,field:_,node:A,id:Z,locale:l,labels:u,dialogs:c}):null;Pt&&Ue.element.after(Pt.element),Ue.destroy&&x.push(()=>Ue.destroy?.());let Pn=!1,wn="";ae.addEventListener("focusin",()=>Pn=!0),ae.addEventListener("focusout",$t=>{ae.contains($t.relatedTarget)||(Pn=!1,queueMicrotask(()=>Ki(J.getState())))});let Ud=A.tones!==void 0||A.bold!==void 0,Ki=$t=>{let kn=J.node(A.id);if(Ze(ae,kn.invisible),ae.classList.toggle("fd-required",kn.required),Ud){let dn=J.fieldTone(A.id);kt(ae,"data-tone",dn.tone),ae.classList.toggle("fd-value-bold",dn.bold)}pt&&kt(pt,"placeholder",J.placeholder(A.id)??He);let In=$t.errors[A.field];Ze(Ke,!In),Et(Ke,In??"");let Gi=$t.warnings[A.field]??"";(!Pn||!Gi)&&(wn=Gi);let Do=[In?"":wn,$t.warning&&$t.warningField===A.field?$t.warning:""].filter(Boolean).join(" ");if(Ze(Tt,!Do),Et(Tt,Do),Xe){let dn=$t.values[A.field],Kd=dn!=null&&dn!==""&&!(Array.isArray(dn)&&!dn.length),Ji=!kn.readonly&&!In&&Kd&&$t.dirty.includes(A.field)&&J.problem(A.field)===null;ae.classList.toggle("fd-valid",Ji),Xe.toggleAttribute("hidden",!Ji)}let er=kn.readonly||K||M.locked();Pt&&(Ze(Ue.element,er),Ze(Pt.element,!er),kt(ae,"data-read-text",er?"":null),er&&Pt.update($t.values[A.field],$t.values)),Ue.update({value:$t.values[A.field],values:$t.values,readonly:er,required:kn.required,invalid:!!In,describedBy:[At?.id??dt?.bubble.id,In?Ke.id:void 0,Do?Tt.id:void 0].filter(Boolean).join(" ")||void 0})};return Fe(Ki),ae}function gt(A,H,_){let Z=h("span",{class:"fd-help-bubble",role:"tooltip",id:A,hidden:""},H),ee=h("button",{type:"button",class:"fd-help-tip","aria-label":_,"aria-expanded":"false","aria-controls":A},"?"),ae=!1,pe=Ae=>{Z.hidden=!Ae,ee.setAttribute("aria-expanded",String(Ae)),Ae&&ct(Z)};return ee.addEventListener("mouseenter",()=>pe(!0)),ee.addEventListener("mouseleave",()=>pe(ae)),ee.addEventListener("focus",()=>pe(!0)),ee.addEventListener("blur",()=>(ae=!1,pe(!1))),ee.addEventListener("click",Ae=>{Ae.preventDefault(),ae=!ae,pe(ae)}),ee.addEventListener("keydown",Ae=>{Ae.key!=="Escape"||Z.hidden||(Ae.stopPropagation(),ae=!1,pe(!1))}),{element:h("span",{class:"fd-help-tip-wrap"},ee,Z),bubble:Z}}function ct(A){A.style.transform="";let H=A.getBoundingClientRect(),_=r.documentElement.clientWidth,Z=8,ee=H.right>_-Z?_-Z-H.right:H.left<Z?Z-H.left:0;ee&&(A.style.transform=`translateX(${Math.round(ee)}px)`)}function Be(A,H){Fe(()=>Ze(A,J.node(H).invisible))}function vt(A){let H=h("button",{type:"button",class:`fd-button fd-button-${A.style??"secondary"}`,"data-node":A.id},...N(A.icon,A.label));return A.hotkey&&Mn(H,A.hotkey,A.label),X(H,A.colspan),H.addEventListener("click",()=>{B(H,()=>J.runAction(A.id))}),Be(H,A.id),We(A,H)}function et(A,H=!1){let _=A.style??"paragraph",Z=Ui(r,ce.fields,A.text,l),ee=H?h("span",{class:`fd-oneline-words fd-text-${_}`,"data-node":A.id},...Z.nodes):_==="alert"?h("div",{class:`fd-alert fd-text-alert fd-tone-${A.tone??"info"}`,role:"status","data-node":A.id},h("span",{class:"fd-alert-message"},...Z.nodes)):h(_==="heading"?"h3":"p",{class:`fd-text-${_}`,"data-node":A.id},...Z.nodes);return X(ee,A.colspan),Be(ee,A.id),Fe(ae=>Z.update(ae.values)),ee}function it(A){let H=h("div",{class:"fd-slot","data-slot":A.name,"data-node":A.id}),_=n.slots?.[A.name]?.(H,{form:J,name:A.name});return _&&x.push(_),Be(H,A.id),H}function Pe(A,H,_){let Z=h("div",{class:"fd-grid"});if(H!==null&&(Z.style.setProperty("--fd-columns",String(ln(H))),ln(H)===12&&Z.setAttribute("data-twelfths",""),typeof H=="object"))for(let ee of["medium","narrow"]){let ae=H[ee];ae!==void 0&&(Z.setAttribute(`data-columns-${ee}`,String(ae)),Z.style.setProperty(`--fd-columns-${ee}`,String(ae)))}return Z.append(...A.map(ee=>Ge(ee,_))),Z}function ot(A,H){let[_]=A.children;if(!H.arrangement||H.at==="tracks"||ln(A.columns)!==12||A.children.length<2||_?.type!=="field"||A.children.reduce((ae,pe)=>ae+(pe.colspan??1),0)>12)return null;let Z=ce.fields[_.field]?.type,ee=Z?wr(_,Z,H.inner.labels):"hidden";return ee===void 0?"skin":ee==="beside"?"beside":null}function he(A,H){let _=h("div",{class:"fd-field fd-oneline","data-node":A.id,"data-style":"inline","data-labels":H.labels});X(_,A.colspan);let Z=h("div",{class:"fd-oneline-row",role:"group"},...qd(A.children).map(ee=>{let ae=ee.map(pe=>Ge(pe,{columns:1,onPage:!1,inline:!0}));return ae.length===1?ae[0]:h("span",{class:"fd-oneline-pair"},...ae)}));if(A.title){let ee=h("span",{class:"fd-label",id:be(`${A.id}-label`)},A.title);Z.setAttribute("aria-labelledby",ee.id),_.append(ee)}return _.append(Z),Be(_,A.id),_}function qe(A,H){if(A.style==="inline")return he(A,H);let _=Io(A,H),Z=h(_.arrangement?"div":"fieldset",{class:"fd-section","data-node":A.id,"data-style":_.style,"data-place":_.at,"data-on-page":_.style==="card"&&H.onPage?"":void 0});X(Z,A.colspan);let ee=ot(A,_);ee&&Z.setAttribute("data-row",ee),A.labelWidth&&Z.style.setProperty("--fd-label-width",`${A.labelWidth}px`);let ae=A.description?h("p",{class:"fd-section-description"},A.description):null,pe=Pe(A.children,_.at==="tracks"?null:A.columns,_.inner);if(A.title&&A.collapsible){pe.id=be(`${A.id}-content`);let Ae=h("button",{type:"button",class:"fd-section-toggle","aria-controls":pe.id},h("span",{class:"fd-section-chevron","aria-hidden":"true"}),...N(A.icon,A.title)),Xe=A.collapsed!==!0,Ue=at=>{Xe=at,Ae.setAttribute("aria-expanded",String(Xe)),pe.hidden=!Xe,ae&&(ae.hidden=!Xe),Z.classList.toggle("fd-section-folded",!Xe)};Ae.addEventListener("click",()=>Ue(!Xe)),P.set(Z,()=>Ue(!0)),Ue(Xe),Z.append(h("legend",{class:"fd-section-title"},Ae))}else A.title&&Z.append(h("legend",{class:"fd-section-title"},...N(A.icon,A.title)));return ae&&Z.append(ae),Z.append(pe),Be(Z,A.id),Z}function ye(A,H){let _=h("div",{class:"fd-tabs","data-node":A.id});X(_,A.colspan);let Z=h("div",{class:"fd-tablist",role:"tablist"}),ee=null,ae=A.children[0].id,pe=He=>{ee=ae=He,q(),J.shown(He)},Ae=A.children.map(He=>{let pt=be(`${He.id}-tab`),ft=be(`${He.id}-panel`),Mt=h("button",{type:"button",class:"fd-tab",role:"tab",id:pt,"aria-controls":ft,"data-node":He.id},...N(He.icon,He.label)),At=h("div",{class:"fd-tabpanel",role:"tabpanel",id:ft,"aria-labelledby":pt}),dt=[],Ke=!1,Tt=()=>{if(Ke)return;Ke=!0;let wn=L;L=dt;try{At.append(Pe(He.children,1,{columns:1,onPage:H.onPage,labels:H.labels}))}finally{L=wn}},Pt=()=>!J.node(He.id).invisible&&(pe(He.id),!0);Mt.addEventListener("click",()=>pe(He.id)),V.has(He.id)||V.set(He.id,Pt);let Pn=Ie(He.children);if(M.root)for(let wn of Pn)I.has(wn)||I.set(wn,Pt);return Z.append(Mt),{tab:He,button:Mt,panel:At,own:dt,build:Tt,fields:Pn}});Z.addEventListener("keydown",He=>{let pt=Ae.filter(Ke=>!Ke.button.hidden),ft=pt.findIndex(Ke=>Ke.tab.id===ae),Mt={ArrowRight:1,ArrowLeft:-1,Home:-ft,End:pt.length-1-ft}[He.key];if(Mt===void 0||ft===-1)return;He.preventDefault();let At=T.getAttribute("dir")==="rtl"&&(He.key==="ArrowRight"||He.key==="ArrowLeft"),dt=pt[(ft+(At?-Mt:Mt)+pt.length)%pt.length];pe(dt.tab.id),dt.button.focus()});let Xe=Wd(Z,h);x.push(Xe.destroy),_.append(Xe.element,...Ae.map(He=>He.panel));let Ue="",at="";return Fe(He=>{let pt=J.node(A.id).invisible;Ze(_,pt);let ft=Ae.filter(Ke=>!J.node(Ke.tab.id).invisible);ee!==null&&ft.some(Ke=>Ke.tab.id===ee)?ae=ee:ft.length&&(ae=ft[0].tab.id);let At=J.getState().errors;for(let Ke of Ae){let Tt=Ke.tab.id===ae;if(Ze(Ke.button,!ft.includes(Ke)),kt(Ke.button,"aria-selected",String(Tt)),Ke.button.tabIndex!==(Tt?0:-1)&&(Ke.button.tabIndex=Tt?0:-1),kt(Ke.button,"data-problem",Ke.fields.some(Pt=>At[Pt])?"":null),Ze(Ke.panel,!Tt),Tt&&!pt){Ke.build();for(let Pt of Ke.own)Pt(He)}}let dt=ft.map(Ke=>Ke.tab.id).join(" ");if(dt!==Ue&&(Ue=dt,Xe.measure()),ae!==at&&Z.clientWidth){at=ae;let Ke=Ae.find(Tt=>Tt.tab.id===ae);Ke&&Xe.reveal(Ke.button)}}),_}function Ie(A){return A.flatMap(H=>H.type==="field"?[H.field]:H.type==="section"?Ie(H.children):H.type==="tabs"?H.children.flatMap(_=>Ie(_.children)):[])}function Ge(A,H){return We(A,p(A,H))}function We(A,H){return A.hideOn?.length&&(H.dataset.hideOn=A.hideOn.join(" ")),H}function p(A,H){switch(A.type){case"field":return Te(A,H.labels);case"button":return vt(A);case"text":return et(A,H.inline);case"slot":return it(A);case"section":return qe(A,H);case"tabs":return ye(A,H);case"divider":case"spacer":case"image":return F(A);case"form":return C(A,H)}}function F(A){let H=A.type==="divider"?h("hr",{class:"fd-divider","data-node":A.id}):A.type==="spacer"?h("div",{class:"fd-block fd-spacer","aria-hidden":"true","data-node":A.id}):O(A);return A.type!=="divider"&&A.colspan&&H.style.setProperty("--fd-span",String(A.colspan)),Be(H,A.id),H}function O(A){let H=h("img",{class:"fd-image",src:A.src,alt:A.alt,loading:"lazy"}),_=A.href&&/^(https?:\/\/|mailto:)/i.test(A.href)?A.href:void 0,Z=h("figure",{class:"fd-block fd-figure","data-node":A.id,"data-align":A.align},_?h("a",{href:_,target:"_blank",rel:"noopener noreferrer"},H):H,...A.caption?[h("figcaption",{class:"fd-caption"},A.caption)]:[]),ee=typeof A.width=="number"?`${A.width}px`:A.width&&{small:"160px",medium:"320px",large:"480px",full:"100%"}[A.width];return ee&&Z.style.setProperty("--fd-image-width",ee),Z}function C(A,H){let _=h("fieldset",{class:"fd-section fd-form-part","data-node":A.id,"data-style":"card","data-on-page":H.onPage?"":void 0,"aria-busy":"true"});X(_,A.colspan);let Z=h("p",{class:"fd-form-part-note"},m.loading);_.append(Z),Be(_,A.id);let ee=Ae=>{_.removeAttribute("aria-busy"),Z.textContent=Ae,Z.classList.add("fd-form-part-problem")},ae=Ae=>{if(te)return;if(!Ae)return ee(k(m.formMissing,{page:A.page}));let Xe=d(Ae),Ue=Xe.title||Ae.id,at=M.chain.findIndex(dt=>dt.id===Ae.id);if(at!==-1)return ee(k(m.formInItself,{page:Ue,chain:[...M.chain.slice(at).map(dt=>dt.title),Ue].join(" \u2192 ")}));if(Ae.layout.type!=="sections"&&Ae.layout.type!=="tabs")return ee(k(m.formNotPlaceable,{page:Ue}));let He=rr(Xe),pt;try{if(!He.ok)throw new Error(He.issues.map(dt=>`${dt.path}: ${dt.message}`).join("; "));pt=J.embed(A.id,Xe)}catch(dt){return console.warn(`Fieldia: the saved form "${Ae.id}" cannot be shown: ${dt.message}`),ee(k(m.formBroken,{page:Ue}))}let ft=A.title??Xe.title??"";_.setAttribute("data-title",ft),ft&&_.prepend(h("legend",{class:"fd-section-title"},...N(void 0,ft)));let Mt=U({root:!1,form:pt,page:Xe,prefix:`${M.prefix}${A.id}-`,chain:[...M.chain,{id:Ae.id,title:Ue}],locked:()=>M.locked()||J.node(A.id).readonly,path:`${M.path}${A.name}.`}),At=Xe.layout;Z.replaceWith(Mt.grid(At.type==="tabs"?[At]:At.children,1,{columns:1,onPage:!1,labels:H.labels})),_.removeAttribute("aria-busy"),x.push(pt.subscribe(q)),$&&q()},pe;try{pe=vr(n,A.version===void 0?{id:A.page}:{id:A.page,version:A.version})}catch{pe=null}return pe instanceof Promise?pe.then(ae,()=>ae(null)):ae(pe),_}return{item:Ge,grid:Pe,fieldItem:Te,buttonItem:vt,hideWhen:Be,slotItem:it}}let{item:ne,grid:$e,fieldItem:Le,buttonItem:xe,hideWhen:Me,slotItem:ie}=U({root:!0,form:g,page:s,prefix:"",chain:[{id:s.id,title:s.title||s.id}],locked:()=>!1,path:""}),K=n.readonly===!0,Q=n.editSwitch?h("button",{type:"button",class:"fd-button fd-edit-switch"}):null;Q?.addEventListener("click",async()=>{if(K)K=!1;else{if(g.getState().dirty.length&&!await g.save()){g.getState().saveProblem||Qe(Y(g.getState())),de();return}K=!0}T.toggleAttribute("data-readonly",K),g.setEditing(!K),sn(g.getState())}),T.toggleAttribute("data-readonly",K),g.setEditing(!K),w.push(()=>{Q&&(Q.textContent=K?m.edit:m.done,Q.classList.toggle("fd-button-primary",K))});let me=h("div",{class:"fd-status",role:"status","aria-live":"polite"}),Re=h("button",{type:"button",class:"fd-button fd-button-link fd-retry",hidden:""},m.retry);Re.addEventListener("click",()=>{st()});let oe=h("div",{class:"fd-status-box"},me,Re),ve=()=>s.data.kind==="responses"?m.notSent:m.notSaved;function Y(M){let J=[...T.querySelectorAll(".fd-field[data-path]")],ce=[];for(let Fe of Object.keys(M.errors)){let Te;for(let et=Fe;et&&!Te;et=et.slice(0,Math.max(0,et.lastIndexOf("."))))Te=J.find(it=>it.getAttribute("data-path")===et&&!it.hidden);let gt=Fe.split(".")[0],ct=Te?.querySelector(":scope > .fd-label")?.firstChild?.textContent??s.fields[gt]?.label??gt,Be=Te?.closest(".fd-form-part")?.getAttribute("data-title"),vt=Be?`${ct} (${Be})`:ct;ce.some(et=>et.name===vt)||ce.push({name:vt,at:Te?J.indexOf(Te):1/0})}let be=ce.sort((Fe,Te)=>Fe.at-Te.at).map(Fe=>Fe.name);return be.length?k(m.checkFields,{what:ve(),fields:be.join(", ")}):ve()}let re;w.push(M=>{let J=M.saveProblem,ce=M.status==="saving"?m.saving:M.status==="saved"?m.saved:M.status==="loading"?m.loading:M.status==="error"&&J?J.kind==="fields"?Y(M):J.kind==="other"?J.message:ve():M.status==="error"?M.error??"":"";kt(me,"aria-live",M.status==="error"&&J?"off":"polite"),Et(me,ce),Ze(Re,!(M.status==="error"&&J?.kind==="other")),me.classList.toggle("fd-status-error",M.status==="error"),me.classList.toggle("fd-status-saved",M.status==="saved"),n.saveStatus==="toast"&&(clearTimeout(re),oe.hidden=!ce,M.status==="saved"&&(re=setTimeout(()=>oe.hidden=!0,2500)))});let ue=h("button",{type:"button",class:"fd-button fd-retry"},m.retry);ue.addEventListener("click",()=>{st()});let Ee=h("div",{class:"fd-banner fd-tone-warning",role:"alert",hidden:""},h("span",{class:"fd-banner-text"},m.offline),ue),Oe=h("div",{class:"fd-announce",role:"alert","aria-live":"assertive"});function Qe(M){Oe.textContent="",setTimeout(()=>Oe.textContent=M,0)}let ze=null;w.push(M=>{M.saveProblem!==ze&&(ze=M.saveProblem,Ee.hidden=ze?.kind!=="network",ze&&(ze.kind==="rule"?Tr(ze.message,!1):ze.kind==="fields"?Qe(Y(M)):ze.kind==="other"&&Qe(ze.message)))});let we=h("div",{class:"fd-draft",hidden:""}),Ne=h("span"),le=h("button",{type:"button",class:"fd-button fd-button-primary"},m.restore),se=h("button",{type:"button",class:"fd-button fd-button-link"},m.discardDraft);le.addEventListener("click",()=>g.restoreDraft()),se.addEventListener("click",()=>g.discardDraft()),we.append(Ne,le,se),w.push(M=>{Ze(we,!M.draft),M.draft&&(Ne.textContent=k(m.draftFound,{time:new Date(M.draft.savedAt).toLocaleString()}))});function de(){if(![...T.querySelectorAll('[aria-invalid="true"]')].find(be=>!be.closest(".fd-tabpanel[hidden]"))){let be=g.getState().errors,Fe=[...I.keys()].find(Te=>be[Te]);Fe&&I.get(Fe)?.()}let J=[...T.querySelectorAll('[aria-invalid="true"]')].find(be=>!be.closest(".fd-tabpanel[hidden]"))??null;if(!J)return;for(let be=J.closest(".fd-section-folded");be;be=be.parentElement?.closest(".fd-section-folded")??null)P.get(be)?.();if(!J.dispatchEvent(new CustomEvent("fd-focus-problem",{cancelable:!0})))return;(J.matches("input, select, textarea, button")?J:J.querySelector("input, select, textarea, button"))?.focus()}let fe=h("div",{class:"fd-done",hidden:""},h("p",{class:"fd-done-title"},m.submitted)),ge=h("button",{type:"button",class:"fd-button"},m.submitAnother);fe.append(ge);let Ye=h("div",{class:"fd-content"});async function st(){if(!await g.save()){g.getState().saveProblem||Qe(Y(g.getState())),de();return}s.data.kind==="responses"&&(Ye.hidden=!0,fe.hidden=!1)}ge.addEventListener("click",()=>{g.reset(),Ye.hidden=!1,fe.hidden=!0});function Ft(){let M=g.getState();if(M.recordId==null)return"";let J=s.layout.type==="sheet"?s.layout.title?.field:void 0;return(J?St(s.fields[J],M.values[J],M.values,l):"")||s.title||""}function Nn(M){if(s.data.kind!=="record")return null;let J=Hd({doc:r,el:h,form:g,toolbar:M,records:n.records,breadcrumbs:n.breadcrumbs,labels:m,icons:n.icons,uid:E,fill:k,withIcon:N,press:B,name:Ft,render:q,async leave(){if(!g.getState().dirty.length)return!0;let ce=await g.save();return ce||(g.getState().saveProblem||Qe(Y(g.getState())),de()),ce}});return J?(w.push(J.update),x.push(J.destroy),J.element):null}function Sr(){if(!s.title&&!s.description)return null;let M=h("header",{class:"fd-page-head"});return s.title&&M.append(h("h1",{class:"fd-page-title"},s.title)),s.description&&M.append(h("p",{class:"fd-page-description"},s.description)),M}function Er(M){return!M?.length||n.showActions===!1?null:h("div",{class:"fd-actions fd-actions-end fd-page-footer"},oe,...M.map(xe))}function Bt(M){let J=h("div",{class:"fd-sections","data-node":M.id},...M.children.map(Te=>ne(Te,G(!0)))),ce=Er(M.footer);if(ce)return h("div",{},J,ce);let be=h("button",{type:"submit",class:"fd-button fd-button-primary"},s.data.kind==="responses"?m.submit:m.save),Fe=h("div",{class:"fd-actions fd-actions-end"},oe,be);if(s.data.kind==="record"){let Te=h("button",{type:"button",class:"fd-button"},m.discard);Te.addEventListener("click",()=>g.reset()),Fe.insertBefore(Te,be),w.push(gt=>{let ct=gt.dirty.length>0&&gt.status!=="saving"&&!K;Ze(be,!ct),Ze(Te,!ct)})}else w.push(()=>Ze(be,K));return Q&&Fe.prepend(Q),n.showActions===!1?h("div",{},J):s.actionsPosition==="top"?(Fe.classList.add("fd-actions-top"),h("div",{},Fe,J)):h("div",{},J,Fe)}function Yt(M){let J=h("div",{class:"fd-wizard","data-node":M.id}),ce=h("div",{class:"fd-progress-text"}),be=h("span");J.append(h("div",{class:"fd-progress"},ce,h("div",{class:"fd-progress-bar"},be)));let Fe=M.clickable?h("ol",{class:"fd-steps-list"}):null,Te=new Map;if(Fe){for(let Pe of M.children){let ot=h("button",{type:"button",class:"fd-step-link"},...N(Pe.icon,Pe.label));ot.addEventListener("click",()=>{g.goTo(Pe.id)?it():de()}),Te.set(Pe.id,ot),Fe.append(h("li",{},ot))}J.append(h("nav",{class:"fd-steps","aria-label":m.steps},Fe))}let gt=M.children.map(Pe=>{let ot=h("section",{class:"fd-step","data-node":Pe.id,"aria-labelledby":E(`${Pe.id}-title`)});return ot.append(h("h2",{class:"fd-step-title",id:E(`${Pe.id}-title`)},...N(Pe.icon,Pe.label))),Pe.description&&ot.append(h("p",{class:"fd-section-description"},Pe.description)),ot.append($e(Pe.children,1,G(!1))),J.append(ot),{step:Pe,panel:ot}}),ct=h("button",{type:"button",class:"fd-button"},M.backLabel??m.back),Be=h("button",{type:"button",class:"fd-button fd-button-link"},m.skip),vt=h("button",{type:"submit",class:"fd-button fd-button-primary"});J.append(h("div",{class:"fd-wizard-nav"},ct,h("span",{class:"fd-spacer"}),oe,Be,vt)),ct.addEventListener("click",()=>{g.back()&&it()}),Be.addEventListener("click",()=>{g.skip()&&it()});let et=()=>{let Pe=g.steps();return Pe.indexOf(g.getState().step??"")===Pe.length-1};vn=async()=>{if(et())return st();g.next()?it():de()};function it(){gt.find(ot=>ot.step.id===g.getState().step)?.panel.querySelector("input, select, textarea, [role=radio]")?.focus()}return w.push(Pe=>{let ot=g.steps(),he=Math.max(0,ot.indexOf(Pe.step??""));ce.textContent=k(m.stepOf,{n:he+1,total:ot.length}),be.style.width=`${(he+1)/Math.max(1,ot.length)*100}%`;for(let{step:ye,panel:Ie}of gt)Ie.hidden=ye.id!==Pe.step;let qe=he===ot.length-1;ct.hidden=he===0,Be.hidden=qe||!M.children.find(ye=>ye.id===Pe.step)?.optional,vt.textContent=qe?M.finishLabel??m.submit:M.nextLabel??m.next;for(let[ye,Ie]of Te){let Ge=ot.indexOf(ye);Ie.parentElement.hidden=Ge===-1,Ie.classList.toggle("fd-step-done",Ge!==-1&&Ge<he),Ie.classList.toggle("fd-step-skipped",Pe.skipped.includes(ye)),ye===Pe.step?Ie.setAttribute("aria-current","step"):Ie.removeAttribute("aria-current")}}),J}function qt(M){let J=h("div",{class:"fd-sheet-page","data-node":M.id}),ce=h("div",{class:"fd-actions"}),be=h("button",{type:"submit",class:"fd-button fd-button-primary"},m.save),Fe=h("button",{type:"button",class:"fd-button"},m.discard);Fe.addEventListener("click",()=>g.reset());let Te=s.actionsPosition==="bottom",gt=h("div",{class:"fd-actions fd-actions-end fd-sheet-foot"}),ct=Er(M.footer);n.showActions===!1||ct?ce.append(...(M.buttons??[]).map(xe)):Te?(ce.append(...(M.buttons??[]).map(xe)),gt.append(oe,Fe,be)):ce.append(be,Fe,...(M.buttons??[]).map(xe),oe),Q&&n.showActions!==!1&&ce.prepend(Q),w.push(he=>{let qe=he.dirty.length>0&&he.status!=="saving"&&!K;be.hidden=!qe,Fe.hidden=!qe});let Be=h("div",{class:"fd-header"},ce),vt=M.statusbar?.position==="title";M.statusbar&&!vt&&Be.append(Xt(M.statusbar));let et=h("div",{class:"fd-card"}),it=[...M.ribbon?[M.ribbon]:[],...M.ribbons??[]];if(it.length){let he=h("div",{class:"fd-ribbon-frame"}),qe=it.map(ye=>{let Ie=h("div",{class:`fd-ribbon fd-tone-${ye.tone??"muted"}`,"data-node":ye.id,title:ye.tooltip},ye.label);return he.append(Ie),{ribbon:ye,element:Ie}});w.push(ye=>{let Ie=!1;for(let{ribbon:Ge,element:We}of qe){let p=!Ie&&!g.node(Ge.id).invisible;if(Ie||(Ie=p),Ze(We,!p),!p)continue;let F=Ge.labelField?St(s.fields[Ge.labelField],ye.values[Ge.labelField],ye.values,l):"";Et(We,F||Ge.label)}}),et.append(he)}if(M.statButtons?.length){let he=h("div",{class:"fd-stats"}),qe=(ye,Ie)=>ye&&s.fields[ye]?St(s.fields[ye],Ie[ye],Ie,l):"";for(let ye of M.statButtons){let Ie=h("span",{class:"fd-stat-value"}),Ge=h("span",{class:"fd-stat-label"},ye.label),We=ye.secondField&&ye.secondLabel!==void 0?{value:h("span",{class:"fd-stat-value"}),label:h("span",{class:"fd-stat-label"},ye.secondLabel)}:null,p=wt(r,ye.icon,n.icons),F=We?h("span",{class:"fd-stat-words fd-stat-pair"},h("span",{class:"fd-stat-row"},Ge,Ie),h("span",{class:"fd-stat-row"},We.label,We.value)):h("span",{class:"fd-stat-words"},Ie,Ge),O=ye.help?E(`${ye.id}-help`):void 0,C=h("button",{type:"button",class:"fd-stat","data-node":ye.id,title:ye.help||void 0,"aria-describedby":O},...p?[p,F]:[F]);O&&he.append(h("span",{class:"fd-sr-only",id:O},ye.help)),C.addEventListener("click",()=>{B(C,()=>g.runAction(ye.id))}),w.push(A=>{C.hidden=g.node(ye.id).invisible;let H=A.values,_=qe(ye.unitField,H)||ye.unit||"",Z=qe(ye.field,H),ee=qe(ye.secondField,H);We?(Et(Ie,Z),Et(We.value,[ee,_].filter(Boolean).join(" "))):Et(Ie,[[Z,ee].filter(Boolean).join(" / "),Z||ee?_:""].filter(Boolean).join(" ")),Et(Ge,qe(ye.labelField,H)||ye.label)}),he.append(C)}w.push(()=>{he.hidden=[...he.querySelectorAll(":scope > .fd-stat")].every(ye=>ye.hidden)}),et.append(he)}for(let he of M.alerts??[]){let qe=Ui(r,s.fields,he.message,l),ye=h("span",{class:"fd-alert-message"},...qe.nodes),Ie=!1,Ge=h("div",{class:`fd-alert fd-tone-${he.tone??"info"}`,role:"status","data-node":he.id},ye);if(he.buttons?.length&&Ge.append(h("span",{class:"fd-alert-actions"},...he.buttons.map(We=>xe({...We,style:We.style??"link"})))),w.push(We=>{qe.update(We.values);let p=he.messageField?We.values[he.messageField]:null,F=typeof p=="string"?p.trim():"";F?Et(ye,F):Ie&&ye.replaceChildren(...qe.nodes),Ie=!!F}),he.dismissible){let We=!1,p=h("button",{type:"button",class:"fd-alert-close","aria-label":m.dismiss},"\xD7");p.addEventListener("click",()=>{We=!0,Ge.hidden=!0}),Ge.append(p),w.push(()=>{Ge.hidden=We||g.node(he.id).invisible})}else Me(Ge,he.id);et.append(Ge)}if(M.badges?.length){let he=h("div",{class:"fd-badges"});for(let qe of M.badges){let ye=h("span",{class:`fd-badge fd-tone-${qe.tone??"muted"}`,"data-node":qe.id},...N(qe.icon,qe.label));Me(ye,qe.id),he.append(ye)}w.push(()=>{he.hidden=[...he.children].every(qe=>qe.hidden)}),et.append(he)}if(M.title){let he=h("div",{class:"fd-title"});M.title.label&&he.append(h("label",{class:"fd-title-label",for:E("#title")},M.title.label)),M.title.above?.length&&he.append(h("div",{class:"fd-title-above"},...M.title.above.map(We=>Le(We))));let qe=Le({type:"field",id:"#title",field:M.title.field,placeholder:M.title.placeholder,...M.title.placeholderWhen?{placeholderWhen:M.title.placeholderWhen}:{},...M.title.focus?{focus:!0}:{}}),ye=M.title.before??[],Ie=M.title.after??[];if(ye.length||Ie.length){qe.classList.add("fd-title-name");let We=p=>{let F=Le(p);return F.classList.add("fd-title-side"),F};he.append(h("div",{class:"fd-title-line"},...ye.map(We),qe,...Ie.map(We)))}else he.append(qe);M.title.subtitleField&&he.append(Le({type:"field",id:"#subtitle",field:M.title.subtitleField})),M.title.below?.length&&he.append(h("div",{class:"fd-title-below"},...M.title.below.map(We=>Le(We))));let Ge=h("div",{class:"fd-title-row"},he);if(M.title.avatarField){let We=Le({type:"field",id:"#avatar",field:M.title.avatarField});We.classList.add("fd-avatar"),Ge.append(We)}et.append(Ge)}M.statusbar&&vt&&et.append(h("div",{class:"fd-title-statusbar"},Xt(M.statusbar))),et.append($e(M.children,1,G(!1))),ct&&et.append(ct),Te&&n.showActions!==!1&&(et.append(gt),w.push(he=>{gt.hidden=he.dirty.length===0&&!me.textContent}));let Pe=h("div",{class:"fd-sheet-layout"},et);if(M.attachmentPreview){let he=jd({doc:r,el:h,form:g,page:s,node:M.attachmentPreview,dataSource:n.dataSource,labels:m,fill:k});Pe.classList.add("fd-has-preview"),Pe.append(he.element),w.push(he.update),x.push(he.destroy)}M.sidePanel&&(Pe.classList.add("fd-has-side"),M.sidePanelBeside&&Pe.setAttribute("data-side-beside",M.sidePanelBeside),Pe.append(h("aside",{class:"fd-side"},ie(M.sidePanel))));let ot=Nn(M.toolbar);return J.append(...ot?[ot]:[],Be,Pe),J}function Xt(M){let J=s.fields[M.field],ce={clickable:M.clickable===!0};M.visibleStates&&(ce.visibleStates=M.visibleStates);for(let Te of["durationsField","fold","saves"])M[Te]!==void 0&&(ce[Te]=M[Te]);let be={type:"field",id:"#statusbar",field:M.field,widget:"statusbar",options:ce},Fe=Ot({form:g,name:M.field,field:J,node:be,id:E("statusbar"),document:r,labels:u,preferences:f,locale:l,dialogs:c},n.widgets);return Fe.destroy&&x.push(()=>Fe.destroy?.()),w.push(Te=>{Ze(Fe.element,g.node("#statusbar").invisible),Fe.update({value:Te.values[M.field],values:Te.values,readonly:g.node("#statusbar").readonly||K,required:!1,invalid:!1})}),Fe.element}let vn=null,ut=s.layout,bt;if(ut.type==="sheet")bt=qt(ut);else if(ut.type==="wizard")bt=Yt(ut);else if(ut.type==="tabs")bt=Bt({id:`${ut.id}-page`,children:[ut]});else if(ut.type==="list"){let M=Id({page:s,node:ut,form:g,dataSource:n.dataSource,doc:r,el:h,labels:m,locale:l,fill:k,press:B,withIcon:N,uid:E,icons:n.icons,preferences:f,onOpenRecord:n.onOpenRecord,...n.listFilter?{fixedFilter:n.listFilter}:{}});x.push(M.destroy),bt=M.element}else bt=Bt(ut);let Lr=ut.type==="sheet"?null:Sr(),Rr=ut.type==="sections"||ut.type==="tabs"?Nn(void 0):null;Ye.append(...Rr?[Rr]:[],...Lr?[Lr]:[],Ee,we,bt),T.append(Ye,fe,Oe),n.saveStatus==="toast"?(oe.classList.add("fd-toast"),T.append(oe)):n.saveStatus==="bar"&&(oe.classList.add("fd-status-bar"),Ye.prepend(oe)),T.addEventListener("mouseover",M=>{let J=M.target;if(J.tagName!=="INPUT"||!J.classList.contains("fd-input")||J.title&&!J.hasAttribute("data-cut-title"))return;let ce=J.scrollWidth>J.clientWidth&&J.value!=="";kt(J,"title",ce?J.value:null),kt(J,"data-cut-title",ce?"":null)}),T.addEventListener("submit",M=>{M.preventDefault(),ut.type!=="list"&&(vn?vn():st())});function Cn(){let M=r.activeElement;M&&T.contains(M)&&(M.tagName==="INPUT"||M.tagName==="TEXTAREA")&&M.dispatchEvent(new Event("change",{bubbles:!0}))}function Zn(M){let J=[...T.querySelectorAll(".fd-field")].filter(Fe=>!Fe.closest('[hidden], [data-type="one2many"] .fd-field, .fd-form-dialog')&&!Fe.parentElement?.closest('[data-type="one2many"]')),ce=M.closest(".fd-field"),be=J.slice(J.indexOf(ce)+1);for(let Fe of be){let Te=Fe.querySelector('input:not([type="hidden"]):not([readonly]):not([disabled]), select:not([disabled]), textarea:not([readonly]), [contenteditable="true"]');if(Te)return Te}return null}T.addEventListener("keydown",M=>{if(M.isComposing||M.key!=="Enter"||ut.type==="list"||M.target.closest(".fd-slot"))return;let J=n.keys??{};if(M.ctrlKey||M.metaKey){if(J.saveWithCtrlEnter===!1||n.showActions===!1||M.target.closest(".ag-root-wrapper"))return;M.preventDefault(),Cn(),vn?vn():st();return}if(M.defaultPrevented||!J.enterMovesToNext||M.shiftKey||M.altKey)return;let ce=M.target;ce.tagName!=="INPUT"&&ce.tagName!=="SELECT"||ce.closest('[data-type="one2many"]')||["button","submit","reset","file"].includes(ce.type)||(M.preventDefault(),Zn(ce)?.focus())});function Fr(M){let J=M instanceof Element?M.closest(".fd-form"):null;if(J)return J===T&&!T.querySelector(":scope > .fd-dialog-backdrop");let ce=[...r.querySelectorAll('[aria-modal="true"]')].filter(Fe=>!Fe.closest("[hidden]"));return(ce[ce.length-1]??r).querySelector(".fd-form")===T}let Ar=M=>{if(M.key==="Alt"){Fr(M.target)&&T.setAttribute("data-hotkeys","");return}let J=No(M);if(!J||!Fr(M.target))return;let ce=[...T.querySelectorAll(`button[data-hotkey="${J}"]`)].find(be=>be.closest(".fd-form")===T&&!be.closest("[hidden]")&&!be.disabled&&!be.hasAttribute("aria-busy"));ce&&(M.preventDefault(),T.removeAttribute("data-hotkeys"),ce.click())},Dt=()=>T.removeAttribute("data-hotkeys"),Qn=M=>M.key==="Alt"&&Dt();r.addEventListener("keydown",Ar),r.addEventListener("keyup",Qn),r.defaultView?.addEventListener("blur",Dt),x.push(()=>{r.removeEventListener("keydown",Ar),r.removeEventListener("keyup",Qn),r.defaultView?.removeEventListener("blur",Dt)});function Tr(M,J=!0){return new Promise(ce=>{let be=h("p",{id:`${b}-confirm`},M),Fe=h("button",{type:"button",class:"fd-button"},m.cancel),Te=h("button",{type:"button",class:"fd-button fd-button-primary"},m.ok),gt=h("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":be.id},be,h("div",{class:"fd-actions fd-actions-end"},...J?[Fe,Te]:[Te])),ct=h("div",{class:"fd-dialog-backdrop"},gt),Be=T.ownerDocument,vt=Be.activeElement,et=it=>{ct.remove(),((he=>!!he&&he!==Be.body&&he.isConnected&&!he.closest("[hidden]"))(vt)?vt:T.querySelector('button[type="submit"]:not([hidden])'))?.focus(),ce(it)};Fe.addEventListener("click",()=>et(!1)),Te.addEventListener("click",()=>et(!0)),ct.addEventListener("keydown",it=>{it.stopPropagation(),it.key==="Escape"?(it.preventDefault(),et(!1)):Kt(gt,it)}),T.append(ct),Te.focus()})}function sn(M){for(let J of w)J(M)}e.append(T);let $r=g.subscribe(sn);x.push(g.on("run",({result:M})=>{(M.reason==="cannot"||M.reason==="app"&&M.error!==void 0)&&S.say(M.message??"",M.reason==="app"?"danger":"warning")})),sn(g.getState()),$=!0;let On=!1;return j.length&&x.push(g.on("open",()=>{let M=!On;On=!0,queueMicrotask(()=>{if(te||!T.isConnected||T.closest("[hidden]")||typeof T.checkVisibility=="function"&&!T.checkVisibility())return;let J=r.activeElement;!(!J||J===r.body||J===r.documentElement)&&!(M&&T.contains(J))||j.find(be=>!be.wrapper.closest("[hidden]"))?.focus()})})),g.getState().status==="idle"&&g.load(),{form:g,element:T,setSkin(M){T.setAttribute("data-fd-skin",M)},setTheme(M){M?T.setAttribute("data-fd-theme",M):T.removeAttribute("data-fd-theme"),T.setAttribute("data-fd-skin",yn(n.skin,M??void 0))},setTokens(M){n.tokens=M??void 0,xn(T,M)},async save(){let M=await g.save();return M||de(),M},check(){let M=g.validate();return M||de(),M},setReadonly(M){K=M,T.toggleAttribute("data-readonly",K),g.setEditing(!K),sn(g.getState())},isReadonly:()=>K,on:(M,J)=>{let ce=g.on(M,J);return x.push(ce),ce},setValues:M=>g.setValues(M),run:(M,J)=>g.run(M,J),destroy(){te=!0,$r();for(let M of x)M();T.remove(),v&&g.dispose()}}}var Bd='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 Of(e){return e.replace(/\s+([^\p{L}\p{N}\s]{1,3})$/u,"\xA0$1")}function qd(e){let t=[],n=0;for(;n<e.length;){let r=[e[n]],o=e[n].type==="field";if(!o&&e[n].type==="text"&&e[n+1]?.type==="field"&&(r.push(e[++n]),o=!0),n++,o)for(;e[n]?.type==="text"&&e[n+1]?.type!=="field";)r.push(e[n++]);t.push(r)}return t}function Vo(e,t){Lt[e]={...Lt.en,...t.messages},tt[e]={...tt.en,...t.widgets},Vt[e]={...Vt.en,...t.viewer}}var Pf="0.13.1",_d=globalThis;for(let[e,t]of _d.FieldiaLanguages??[])Vo(e,t);delete _d.FieldiaLanguages;return el(If);})();
63
63
  //# sourceMappingURL=fieldia.js.map