@fieldia/viewer 0.9.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +145 -1
  2. package/bundle/fieldia.ar.js +3 -0
  3. package/bundle/fieldia.ar.js.map +7 -0
  4. package/bundle/fieldia.de.js +3 -0
  5. package/bundle/fieldia.de.js.map +7 -0
  6. package/bundle/fieldia.fr.js +3 -0
  7. package/bundle/fieldia.fr.js.map +7 -0
  8. package/bundle/fieldia.js +4 -4
  9. package/bundle/fieldia.js.map +4 -4
  10. package/package.json +6 -3
  11. package/src/index.d.mts +4 -0
  12. package/src/index.d.ts +4 -0
  13. package/src/index.js +12 -0
  14. package/src/index.js.map +1 -1
  15. package/src/index.mjs +4 -0
  16. package/src/index.mjs.map +1 -1
  17. package/src/lib/add-language.d.mts +20 -0
  18. package/src/lib/add-language.d.ts +20 -0
  19. package/src/lib/add-language.js +19 -0
  20. package/src/lib/add-language.js.map +1 -0
  21. package/src/lib/add-language.mjs +16 -0
  22. package/src/lib/add-language.mjs.map +1 -0
  23. package/src/lib/dialog.d.mts +35 -3
  24. package/src/lib/dialog.d.ts +35 -3
  25. package/src/lib/dialog.js +109 -47
  26. package/src/lib/dialog.js.map +1 -1
  27. package/src/lib/dialog.mjs +107 -47
  28. package/src/lib/dialog.mjs.map +1 -1
  29. package/src/lib/dom.d.mts +10 -0
  30. package/src/lib/dom.d.ts +10 -0
  31. package/src/lib/dom.js +26 -0
  32. package/src/lib/dom.js.map +1 -1
  33. package/src/lib/dom.mjs +23 -1
  34. package/src/lib/dom.mjs.map +1 -1
  35. package/src/lib/focus-trap.d.mts +2 -0
  36. package/src/lib/focus-trap.d.ts +2 -0
  37. package/src/lib/focus-trap.js +7 -0
  38. package/src/lib/focus-trap.js.map +1 -0
  39. package/src/lib/focus-trap.mjs +3 -0
  40. package/src/lib/focus-trap.mjs.map +1 -0
  41. package/src/lib/labels.d.mts +27 -0
  42. package/src/lib/labels.d.ts +27 -0
  43. package/src/lib/labels.js +109 -277
  44. package/src/lib/labels.js.map +1 -1
  45. package/src/lib/labels.mjs +108 -277
  46. package/src/lib/labels.mjs.map +1 -1
  47. package/src/lib/list-styles.d.mts +1 -1
  48. package/src/lib/list-styles.d.ts +1 -1
  49. package/src/lib/list-styles.js +3 -2
  50. package/src/lib/list-styles.js.map +1 -1
  51. package/src/lib/list-styles.mjs +3 -2
  52. package/src/lib/list-styles.mjs.map +1 -1
  53. package/src/lib/list.d.mts +3 -2
  54. package/src/lib/list.d.ts +3 -2
  55. package/src/lib/list.js +5 -5
  56. package/src/lib/list.js.map +1 -1
  57. package/src/lib/list.mjs +5 -5
  58. package/src/lib/list.mjs.map +1 -1
  59. package/src/lib/locales/all.d.mts +8 -0
  60. package/src/lib/locales/all.d.ts +8 -0
  61. package/src/lib/locales/all.js +13 -0
  62. package/src/lib/locales/all.js.map +1 -0
  63. package/src/lib/locales/all.mjs +10 -0
  64. package/src/lib/locales/all.mjs.map +1 -0
  65. package/src/lib/locales/ar.d.mts +3 -0
  66. package/src/lib/locales/ar.d.ts +3 -0
  67. package/src/lib/locales/ar.js +80 -0
  68. package/src/lib/locales/ar.js.map +1 -0
  69. package/src/lib/locales/ar.mjs +77 -0
  70. package/src/lib/locales/ar.mjs.map +1 -0
  71. package/src/lib/locales/de.d.mts +3 -0
  72. package/src/lib/locales/de.d.ts +3 -0
  73. package/src/lib/locales/de.js +80 -0
  74. package/src/lib/locales/de.js.map +1 -0
  75. package/src/lib/locales/de.mjs +77 -0
  76. package/src/lib/locales/de.mjs.map +1 -0
  77. package/src/lib/locales/fr.d.mts +3 -0
  78. package/src/lib/locales/fr.d.ts +3 -0
  79. package/src/lib/locales/fr.js +80 -0
  80. package/src/lib/locales/fr.js.map +1 -0
  81. package/src/lib/locales/fr.mjs +77 -0
  82. package/src/lib/locales/fr.mjs.map +1 -0
  83. package/src/lib/look.d.mts +25 -0
  84. package/src/lib/look.d.ts +25 -0
  85. package/src/lib/look.js +141 -0
  86. package/src/lib/look.js.map +1 -0
  87. package/src/lib/look.mjs +136 -0
  88. package/src/lib/look.mjs.map +1 -0
  89. package/src/lib/open.d.mts +24 -0
  90. package/src/lib/open.d.ts +24 -0
  91. package/src/lib/open.js +81 -0
  92. package/src/lib/open.js.map +1 -0
  93. package/src/lib/open.mjs +78 -0
  94. package/src/lib/open.mjs.map +1 -0
  95. package/src/lib/place.d.mts +35 -0
  96. package/src/lib/place.d.ts +35 -0
  97. package/src/lib/place.js +37 -0
  98. package/src/lib/place.js.map +1 -0
  99. package/src/lib/place.mjs +33 -0
  100. package/src/lib/place.mjs.map +1 -0
  101. package/src/lib/related.d.mts +19 -0
  102. package/src/lib/related.d.ts +19 -0
  103. package/src/lib/related.js +17 -3
  104. package/src/lib/related.js.map +1 -1
  105. package/src/lib/related.mjs +16 -3
  106. package/src/lib/related.mjs.map +1 -1
  107. package/src/lib/say.d.mts +9 -0
  108. package/src/lib/say.d.ts +9 -0
  109. package/src/lib/say.js +45 -0
  110. package/src/lib/say.js.map +1 -0
  111. package/src/lib/say.mjs +42 -0
  112. package/src/lib/say.mjs.map +1 -0
  113. package/src/lib/viewer.d.mts +43 -7
  114. package/src/lib/viewer.d.ts +43 -7
  115. package/src/lib/viewer.js +513 -225
  116. package/src/lib/viewer.js.map +1 -1
  117. package/src/lib/viewer.mjs +516 -228
  118. package/src/lib/viewer.mjs.map +1 -1
package/bundle/fieldia.js CHANGED
@@ -1,5 +1,5 @@
1
- /*! Fieldia 0.9.2 · MIT · https://fieldia.dev */
2
- "use strict";var Fieldia=(()=>{var it=Object.defineProperty;var tr=Object.getOwnPropertyDescriptor;var nr=Object.getOwnPropertyNames;var rr=Object.prototype.hasOwnProperty;var ir=(e,t,n)=>t in e?it(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ar=(e,t)=>{for(var n in t)it(e,n,{get:t[n],enumerable:!0})},or=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of nr(t))!rr.call(e,a)&&a!==n&&it(e,a,{get:()=>t[a],enumerable:!(i=tr(t,a))||i.enumerable});return e};var sr=e=>or(it({},"__esModule",{value:!0}),e);var Ve=(e,t,n)=>ir(e,typeof t!="symbol"?t+"":t,n);var mi={};ar(mi,{DEFAULT_LABELS:()=>Zn,FIELDIA_CSS:()=>Pn,FIELD_NAME:()=>rn,FIELD_TYPES:()=>at,FORMAT_VERSION:()=>st,ICONS:()=>Wn,MESSAGES:()=>Te,VERSION:()=>gi,VIEWER_LABELS:()=>Ce,WIDGET_LABELS:()=>ge,binaryWidget:()=>Wt,browserPreferences:()=>Yt,builtInWidgets:()=>On,charTagsWidget:()=>Ot,checkPage:()=>ct,checkValue:()=>Ue,compileModifier:()=>Ae,createForm:()=>ht,createMemoryDataSource:()=>mn,createWidget:()=>Ee,displayValue:()=>et,drawIcon:()=>ze,emptyValue:()=>Ye,evaluateModifier:()=>sn,expressionContext:()=>Ze,facetsToFilter:()=>gt,fill:()=>Je,formatBytes:()=>Xe,formatNumber:()=>Pe,groupByFields:()=>mt,hostScheduler:()=>Qe,htmlWidget:()=>Ut,imageWidget:()=>Bt,initialValues:()=>He,installStyles:()=>Kt,isEmpty:()=>qe,isModifierValid:()=>dn,isoWeek:()=>An,jsonWidget:()=>_t,kindTextField:()=>kn,labelWidget:()=>nt,lineForm:()=>Sn,lineKind:()=>Me,linesWidget:()=>zt,linkAddress:()=>Tn,linkCheckboxesWidget:()=>Dt,many2oneWidget:()=>It,matchesFilter:()=>_e,memoryPreferences:()=>Kr,mountViewer:()=>Xt,normalizeNumber:()=>Vt,openFormDialog:()=>Ft,openSearchDialog:()=>Zt,progressbarWidget:()=>tt,propertiesWidget:()=>qt,referenceWidget:()=>Pt,sanitizeHtml:()=>Jt,saveProblemOf:()=>ut,saveRefused:()=>un,statusbarWidget:()=>kt,suggestions:()=>pt,summary:()=>wt,tagsWidget:()=>xt,translatePage:()=>ft,wait:()=>bt,wideColumns:()=>ot,withCalendar:()=>Lt});var rn=/^[A-Za-z_][A-Za-z0-9_]*$/,at=["char","text","html","integer","float","monetary","boolean","date","datetime","selection","binary","image","many2one","many2many","one2many","reference","properties","json"];function ot(e){return typeof e=="object"?e.wide:e??1}var st="0.1";function Ie(e,t){switch(e.type){case"BinaryOp":return dr(e,t);case"UnaryOp":return lr(e,t);case"Literal":return e.value;case"Identifier":return cr(t,e.name);default:throw new Error(`Unknown AST node type: ${e.type}`)}}function dr(e,t){let n=an(Ie(e.left,t)),i=an(Ie(e.right,t)),a=e.operator.toLowerCase(),r=n!==null&&i!==null;switch(a){case"==":return n===i;case"!=":case"<>":return n!==i;case"<":return r&&n<i;case">":return r&&n>i;case"<=":return r&&n<=i;case">=":return r&&n>=i;case"in":return Array.isArray(i)&&i.includes(n);case"not in":return Array.isArray(i)&&!i.includes(n);case"and":return Fe(n)&&Fe(i);case"or":return Fe(n)||Fe(i);default:throw new Error(`Unknown binary operator: ${e.operator}`)}}function lr(e,t){let n=Ie(e.operand,t);if(e.operator.toLowerCase()==="not")return!Fe(n);throw new Error(`Unknown unary operator: ${e.operator}`)}function an(e){return e===void 0?null:e}function Fe(e){return Array.isArray(e)?e.length>0:e!==null&&typeof e=="object"?Object.keys(e).length>0:!!e}function cr(e,t){let n=t.split("."),i=e;for(let a of n){if(i==null)return;i=i[a]}return i}var Tt=new Map([["True",!0],["False",!1],["None",null],["true",!0],["false",!1],["null",null]]);function Ke(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,i=/\s*/y,a=0;for(;;){if(i.lastIndex=a,i.exec(e),a=i.lastIndex,a>=e.length)return t;n.lastIndex=a;let r=n.exec(e);if(!r)throw new Error(`Unexpected "${e[a]}" at character ${a+1} of: ${e}`);t.push({type:fr(r[0]),value:r[0],position:t.length}),a=n.lastIndex}}function fr(e){let t=e.toLowerCase().trim();return Tt.has(e)?"CONSTANT":t==="and"||t==="or"||t==="not"?"LOGICAL":["==","!=","<>","<",">","<=",">="].includes(e)||t==="in"||t==="not in"?"OPERATOR":e==="("||e===")"?"PAREN":e.startsWith("[")?"LIST":e.startsWith("'")||e.startsWith('"')?"STRING":/^-?\d+\.?\d*$/.test(e)?"NUMBER":"IDENTIFIER"}var Oe=class{constructor(t){Ve(this,"tokens");Ve(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,i=this.parseAnd();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:i}}return t}parseAnd(){let t=this.parseNot();for(;this.matchLogical("and");){let n=this.previous().value,i=this.parseNot();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:i}}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.parseValue(),n=["==","!=","<>","<",">","<=",">=","in","not in"];if(this.matchOperator(...n)){let i=this.previous().value,a=this.parseValue();return{type:"BinaryOp",operator:i.toLowerCase(),left:t,right:a}}return t}parseValue(){if(this.match("PAREN","(")){let t=this.parseOr();return this.consume("PAREN",")","Expected closing parenthesis"),t}if(this.check("STRING"))return{type:"Literal",value:this.advance().value.slice(1,-1)};if(this.check("CONSTANT")){let t=this.advance();return{type:"Literal",value:Tt.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:ur(t.value)}}if(this.check("IDENTIFIER"))return{type:"Identifier",name:this.advance().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 i=this.peek();if(i&&n.includes(i.value))return this.advance(),!0}return!1}matchLogical(...t){let n=this.peek();if(n&&n.type==="LOGICAL"){let i=n.value.toLowerCase();if(t.map(a=>a.toLowerCase()).includes(i))return this.advance(),!0}return!1}matchOperator(...t){let n=this.peek();if(n&&n.type==="OPERATOR"){let i=n.value.toLowerCase();if(t.map(a=>a.toLowerCase()).includes(i))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,i){if(this.check(t)){let a=this.peek();if(a&&a.value===n)return this.advance()}throw new Error(i)}};function ur(e){try{let t=e.slice(1,-1).trim();if(!t)return[];let n=[],i="",a=!1,r="";for(let o=0;o<t.length;o++){let d=t[o];(d==="'"||d==='"')&&(o===0||t[o-1]!=="\\")&&(a?d===r&&(a=!1,r=""):(a=!0,r=d)),d===","&&!a?(n.push(on(i.trim())),i=""):i+=d}return i.trim()&&n.push(on(i.trim())),n}catch(t){throw new Error(`Cannot read the list ${e}`,{cause:t})}}function on(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 Ae(e){if(typeof e!="string"){let n=e===!0;return{source:e,fields:[],evaluate:()=>n}}let t=new Oe(Ke(e)).parse();return{source:e,fields:pr(t),evaluate(n){try{return Fe(Ie(t,n))}catch{return!1}}}}function pr(e){let t=[],n=i=>{switch(i.type){case"Identifier":{let a=i.name.split(".")[0];t.includes(a)||t.push(a);return}case"BinaryOp":n(i.left),n(i.right);return;case"UnaryOp":n(i.operand);return;default:return}};return n(e),t}var dt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),lt=class{constructor(t){Ve(this,"page",t);Ve(this,"issues",[]);Ve(this,"ids",new Map)}run(){return this.checkFields(this.page.fields,"fields"),this.walkRoot(this.page.layout,"layout"),this.issues}report(t,n){this.issues.push({path:t,message:n})}claim(t,n){let i=this.ids.get(t);i!==void 0?this.report(n,`duplicate id "${t}", also used at ${i}`):this.ids.set(t,n)}need(t,n,i=this.page.fields){if(dt(i,t))return i[t];this.report(n,`no field "${t}"`)}checkModifiers(t,n,i=["invisible"]){for(let a of i){let r=t[a];if(typeof r!="string")continue;let o;try{o=Ae(r).fields}catch(d){this.report(`${n}.${a}`,`cannot read "${r}": ${d.message}`);continue}for(let d of o)dt(this.page.fields,d)||this.report(`${n}.${a}`,`"${r}" reads "${d}", which is not a field of this page`)}}checkFields(t,n){for(let[i,a]of Object.entries(t)){let r=`${n}.${i}`;if(a.type==="monetary"&&a.currencyField!==void 0){let o=this.need(a.currencyField,`${r}.currencyField`,t);o&&!["many2one","selection","char"].includes(o.type)&&this.report(`${r}.currencyField`,`"${a.currencyField}" is a ${o.type}; a currency field must be a many2one, selection or char`)}if((a.type==="many2one"||a.type==="many2many")&&a.filter){let o=(d,s)=>{if("any"in d)return d.any.forEach((l,u)=>o(l,`${s}.any[${u}]`));if("all"in d)return d.all.forEach((l,u)=>o(l,`${s}.all[${u}]`));d.valueFrom!==void 0&&this.need(d.valueFrom,`${s}.valueFrom`,t)};a.filter.forEach((d,s)=>{o(d,`${r}.filter[${s}]`)})}if(a.type==="properties"&&a.definitions){let o=new Set;a.definitions.forEach((d,s)=>{d.type==="selection"&&!d.options&&this.report(`${r}.definitions[${s}].options`,"a choice property needs its choices"),o.has(d.name)&&this.report(`${r}.definitions[${s}].name`,`"${d.name}" is named twice`),o.add(d.name)})}if(a.type==="one2many"&&(this.checkFields(a.fields,`${r}.fields`),a.lineKinds&&this.checkLineKinds(i,a.lineKinds,a.fields,`${r}.lineKinds`),a.sequenceField!==void 0)){let o=a.fields[a.sequenceField];o?o.type!=="integer"&&this.report(`${r}.sequenceField`,`"${a.sequenceField}" is a ${o.type}; the field that keeps the order of lines must be an integer`):this.report(`${r}.sequenceField`,`"${a.sequenceField}" is not a field of the lines of "${i}"`)}}}checkLineKinds(t,n,i,a){let r=i[n.field];if(!r)this.report(`${a}.field`,`"${n.field}" is not a field of the lines of "${t}"`);else if(r.type!=="selection"&&r.type!=="char")this.report(`${a}.field`,`"${n.field}" is a ${r.type}; the field that says what a line is must be a selection or char`);else if(r.type==="selection")for(let d of["section","note"]){let s=n[d]??d;r.options.some(l=>l.value===s)||this.report(`${a}.${d}`,`"${n.field}" has no option "${s}"`)}let o=i[n.text];o?o.type!=="char"&&o.type!=="text"&&this.report(`${a}.text`,`"${n.text}" is a ${o.type}; a section's or note's text must be a char or text field`):this.report(`${a}.text`,`"${n.text}" is not a field of the lines of "${t}"`)}walkRoot(t,n){if(t.type==="tabs")return this.walkNode(t,n);if(this.claim(t.id,n),t.type==="sheet")return this.walkSheet(t,n);if(t.type==="sections")return this.walkChildren(t.children,n);if(t.type==="list")return this.walkList(t,n);t.children.forEach((i,a)=>{let r=`${n}.children[${a}]`;this.claim(i.id,r),this.checkModifiers(i,r),this.walkChildren(i.children,r)})}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((r,o)=>this.need(r,`${n}.columns[${o}]`)),t.sort?.forEach((r,o)=>this.need(r.field,`${n}.sort[${o}].field`)),t.searchFields?.forEach((r,o)=>this.need(r,`${n}.searchFields[${o}]`)),t.groupBy?.forEach((r,o)=>this.need(r,`${n}.groupBy[${o}]`));let i=(r,o)=>{if("any"in r)return r.any.forEach((d,s)=>i(d,`${o}.any[${s}]`));if("all"in r)return r.all.forEach((d,s)=>i(d,`${o}.all[${s}]`));this.need(r.field,`${o}.field`),r.valueFrom!==void 0&&this.report(`${o}.valueFrom`,"a list's filter compares with values, not with another field")},a=new Set;t.filters?.forEach((r,o)=>{this.claim(r.id,`${n}.filters[${o}]`),a.add(r.id),r.filter.forEach((d,s)=>i(d,`${n}.filters[${o}].filter[${s}]`))}),t.defaultFilters?.forEach((r,o)=>{a.has(r)||this.report(`${n}.defaultFilters[${o}]`,`no filter "${r}" in this list`)}),t.actions?.forEach((r,o)=>this.claim(r.id,`${n}.actions[${o}]`))}walkChildren(t,n){t.forEach((i,a)=>this.walkNode(i,`${n}.children[${a}]`))}walkNode(t,n){switch(this.claim(t.id,n),this.checkModifiers(t,n,t.type==="field"?["invisible","readonly","required"]:t.type==="section"?["invisible","readonly"]:["invisible"]),t.type){case"field":return this.checkFieldNode(t,n);case"section":return t.collapsible&&!t.title&&this.report(n,"a collapsible section needs a title to fold it by"),t.collapsed&&!t.collapsible&&this.report(n,"collapsed needs collapsible: true"),this.walkChildren(t.children,n);case"tabs":return this.walkTabs(t,n);default:return}}walkTabs(t,n){t.children.forEach((i,a)=>{let r=`${n}.children[${a}]`;this.claim(i.id,r),this.checkModifiers(i,r),this.walkChildren(i.children,r)})}walkSheet(t,n){if(t.title&&(this.need(t.title.field,`${n}.title.field`),t.title.subtitleField!==void 0&&this.need(t.title.subtitleField,`${n}.title.subtitleField`),t.title.avatarField!==void 0&&this.need(t.title.avatarField,`${n}.title.avatarField`)),t.statusbar){let{field:i,visibleStates:a}=t.statusbar,r=this.need(i,`${n}.statusbar.field`);if(r&&r.type!=="selection"&&r.type!=="many2one"&&this.report(`${n}.statusbar.field`,`"${i}" is a ${r.type}; a statusbar needs a selection or many2one`),r?.type==="selection"&&a){let o=new Set(r.options.map(d=>d.value));a.forEach((d,s)=>{o.has(d)||this.report(`${n}.statusbar.visibleStates[${s}]`,`"${d}" is not an option of "${i}"`)})}}t.buttons?.forEach((i,a)=>{this.claim(i.id,`${n}.buttons[${a}]`),this.checkModifiers(i,`${n}.buttons[${a}]`)}),t.statButtons?.forEach((i,a)=>{this.claim(i.id,`${n}.statButtons[${a}]`),this.checkModifiers(i,`${n}.statButtons[${a}]`),i.field!==void 0&&this.need(i.field,`${n}.statButtons[${a}].field`)}),t.ribbon&&(this.claim(t.ribbon.id,`${n}.ribbon`),this.checkModifiers(t.ribbon,`${n}.ribbon`)),t.badges?.forEach((i,a)=>{this.claim(i.id,`${n}.badges[${a}]`),this.checkModifiers(i,`${n}.badges[${a}]`)});for(let i of["above","below"])t.title?.[i]?.forEach((a,r)=>this.walkNode(a,`${n}.title.${i}[${r}]`));t.alerts?.forEach((i,a)=>{this.claim(i.id,`${n}.alerts[${a}]`),this.checkModifiers(i,`${n}.alerts[${a}]`)}),this.walkChildren(t.children,n),t.sidePanel&&(this.claim(t.sidePanel.id,`${n}.sidePanel`),this.checkModifiers(t.sidePanel,`${n}.sidePanel`))}checkFieldNode(t,n){let i=this.need(t.field,`${n}.field`);i&&t.totals&&(i.type!=="one2many"?this.report(`${n}.totals`,`totals only apply to one2many fields; "${t.field}" is a ${i.type}`):t.totals.forEach((a,r)=>{let o=dt(i.fields,a)?i.fields[a]:void 0;o?["integer","float","monetary"].includes(o.type)||this.report(`${n}.totals[${r}]`,`"${a}" is a ${o.type}; only integer, float and monetary columns add up`):this.report(`${n}.totals[${r}]`,`"${a}" is not a field of the lines of "${t.field}"`)}));for(let[a,r]of Object.entries(t.options??{}))a.endsWith("Field")&&typeof r=="string"&&this.need(r,`${n}.options.${a}`);if(i&&t.editMode&&i.type!=="one2many"&&this.report(`${n}.editMode`,`editMode only applies to one2many fields; "${t.field}" is a ${i.type}`),i&&t.optionalColumns)if(i.type!=="one2many")this.report(`${n}.optionalColumns`,`optional columns only apply to one2many fields; "${t.field}" is a ${i.type}`);else{let a=t.columns??Object.keys(i.fields).filter(r=>r!==i.lineKinds?.field&&r!==i.sequenceField);for(let r of Object.keys(t.optionalColumns))a.includes(r)||this.report(`${n}.optionalColumns.${r}`,`"${r}" is not a column of "${t.field}"`)}!i||!t.columns||(i.type==="one2many"?t.columns.forEach((a,r)=>{dt(i.fields,a)||this.report(`${n}.columns[${r}]`,`"${a}" is not a field of the lines of "${t.field}"`)}):i.type!=="many2many"&&this.report(`${n}.columns`,`columns only apply to one2many and many2many fields; "${t.field}" is a ${i.type}`))}};var je=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),gr=["sheet","sections","tabs","wizard"];function ct(e){if(!je(e))return{ok:!1,issues:[{path:"(page)",message:"a page is a JSON object"}]};let t=[],n=(s,l)=>t.push({path:s,message:l});e.fieldia!=="0.1"&&n("fieldia",`this build reads format ${"0.1"}`),(typeof e.id!="string"||!e.id)&&n("id","a page needs an id");let i=e.data;(!je(i)||!(i.kind==="responses"||i.kind==="record"&&typeof i.model=="string"&&i.model))&&n("data",'data is { "kind": "record", "model": \u2026 } or { "kind": "responses" }');let a=e.fields;if(!je(a))n("fields","fields is an object of field definitions, by name");else for(let[s,l]of Object.entries(a))(!je(l)||!at.includes(l.type)||typeof l.label!="string")&&n(`fields.${s}`,"a field needs a type Fieldia knows and a label");let r=e.layout,o=je(r)&&r.type==="list";if((!je(r)||(o?!Array.isArray(r.columns):!gr.includes(r.type)||!Array.isArray(r.children)))&&n("layout","the layout is a sheet, sections, tabs or wizard, with children, or a list with columns"),t.length)return{ok:!1,issues:t};let d=e;try{let s=new lt(d).run();return s.length?{ok:!1,issues:s}:{ok:!0,page:d}}catch(s){return{ok:!1,issues:[{path:"(page)",message:`a part of this page cannot be read: ${s.message}`}]}}}var mr=new Set(["title","description","label","help","placeholder","message","text","confirm","nextLabel","backLabel","finishLabel"]),br=new Set(["lineKinds","filter","default","data"]);function ft(e,t){let n=(i,a)=>{if(typeof i=="string")return a!==null&&mr.has(a)?t(i):i;if(Array.isArray(i))return i.map(o=>n(o,null));if(i===null||typeof i!="object")return i;let r={};for(let[o,d]of Object.entries(i)){let s=o==="options"&&!Array.isArray(d);r[o]=br.has(o)||s?d:n(d,o)}return r};return n(e,null)}function sn(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=Ke(e);if(n.length===0)return!1;let a=new Oe(n).parse(),r=Ie(a,t);return Fe(r)}catch{return!1}}function dn(e){if(e===void 0||typeof e=="boolean"||e==="")return!0;try{let t=Ke(e);return t.length===0||new Oe(t).parse(),!0}catch{return!1}}function Ye(e){switch(e.type){case"boolean":return!1;case"many2many":case"one2many":return[];case"selection":return e.multiple?[]:null;default:return null}}function He(e){let t={};for(let[n,i]of Object.entries(e))t[n]=i.default!==void 0?le(i.default):Ye(i);return t}function qe(e,t){return t==null?!0:typeof t=="string"?t.trim()==="":Array.isArray(t)?t.length===0:!1}function Ze(e,t){let n={};for(let[i,a]of Object.entries(e)){let r=t[i];n[i]=r?hr(r,a):a}return n}function hr(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 t.name;default:return t}}function Me(e,t){let n=e.lineKinds;if(!n)return null;let i=t[n.field];return i===(n.section??"section")?"section":i===(n.note??"note")?"note":null}function le(e){return e===void 0?e:JSON.parse(JSON.stringify(e))}var Te={en:{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}",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",or:"or"},ar:{required:"{label} \u0645\u0637\u0644\u0648\u0628",maxLength:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 {max} \u062D\u0631\u0641\u064B\u0627",pattern:"\u0635\u064A\u063A\u0629 {label} \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629",text:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0646\u0635\u064B\u0627",number:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0631\u0642\u0645\u064B\u0627",integer:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0631\u0642\u0645\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",min:"\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0642\u0644 {label} \u0639\u0646 {min}",max:"\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0632\u064A\u062F {label} \u0639\u0646 {max}",decimals:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 {digits} \u0645\u0646\u0627\u0632\u0644 \u0639\u0634\u0631\u064A\u0629",boolean:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0646\u0639\u0645 \u0623\u0648 \u0644\u0627",dateFormat:"\u0635\u064A\u063A\u0629 \u0627\u0644\u062A\u0627\u0631\u064A\u062E \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629 (\u0627\u0644\u0645\u062A\u0648\u0642\u0639 YYYY-MM-DD)",dateInvalid:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u063A\u064A\u0631 \u0635\u062D\u064A\u062D (\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0634\u0647\u0631 \u0648\u0627\u0644\u064A\u0648\u0645)",datetimeFormat:"\u0635\u064A\u063A\u0629 \u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0648\u0627\u0644\u0648\u0642\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629 (\u0627\u0644\u0645\u062A\u0648\u0642\u0639 YYYY-MM-DDTHH:MM:SS)",datetimeInvalid:"\u0627\u0644\u062A\u0627\u0631\u064A\u062E \u0648\u0627\u0644\u0648\u0642\u062A \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u064A\u0646",choice:"\u064A\u062C\u0628 \u0623\u0646 \u062A\u0643\u0648\u0646 \u0627\u0644\u0642\u064A\u0645\u0629 \u0648\u0627\u062D\u062F\u0629 \u0645\u0646: {options}",choices:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0642\u0627\u0626\u0645\u0629 \u0627\u062E\u062A\u064A\u0627\u0631\u0627\u062A",record:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0633\u062C\u0644\u064B\u0627",records:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0642\u0627\u0626\u0645\u0629 \u0633\u062C\u0644\u0627\u062A",reference:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0634\u064A\u0631 {label} \u0625\u0644\u0649 {models}",file:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0645\u0644\u0641\u064B\u0627",fileSize:"\u062D\u062C\u0645 {label} \u0623\u0643\u0628\u0631 \u0645\u0646 {size}",fileType:"\u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 {label} \u0645\u0644\u0641 {types}",or:"\u0623\u0648"},de:{required:"{label} ist erforderlich",maxLength:"Maximal {max} Zeichen erlaubt",pattern:"{label} hat nicht das erwartete Format",text:"{label} muss Text sein",number:"{label} muss eine Zahl sein",integer:"{label} muss eine ganze Zahl sein",min:"{label} muss mindestens {min} sein",max:"{label} darf h\xF6chstens {max} sein",decimals:"Maximal {digits} Nachkommastellen erlaubt",boolean:"{label} muss ja oder nein sein",dateFormat:"Ung\xFCltiges Datumsformat (erwartet JJJJ-MM-TT)",dateInvalid:"Ung\xFCltiges Datum (Monat und Tag pr\xFCfen)",datetimeFormat:"Ung\xFCltiges Datums- und Zeitformat (erwartet JJJJ-MM-TTTHH:MM:SS)",datetimeInvalid:"Ung\xFCltiges Datum oder ung\xFCltige Uhrzeit",choice:"Muss eines davon sein: {options}",choices:"{label} muss eine Liste von Optionen sein",record:"{label} muss ein Datensatz sein",records:"{label} muss eine Liste von Datens\xE4tzen sein",reference:"{label} muss auf {models} verweisen",file:"{label} muss eine Datei sein",fileSize:"{label} ist gr\xF6\xDFer als {size}",fileType:"{label} muss eine {types}-Datei sein",or:"oder"},fr:{required:"{label} est obligatoire",maxLength:"{max} caract\xE8res au maximum",pattern:"{label} n'a pas le format attendu",text:"{label} doit \xEAtre du texte",number:"{label} doit \xEAtre un nombre",integer:"{label} doit \xEAtre un nombre entier",min:"{label} doit \xEAtre au moins {min}",max:"{label} doit \xEAtre au plus {max}",decimals:"{digits} d\xE9cimales au maximum",boolean:"{label} doit \xEAtre oui ou non",dateFormat:"Format de date invalide (attendu AAAA-MM-JJ)",dateInvalid:"Date invalide (v\xE9rifiez le mois et le jour)",datetimeFormat:"Format de date et heure invalide (attendu AAAA-MM-JJTHH:MM:SS)",datetimeInvalid:"Date ou heure invalide",choice:"Doit \xEAtre parmi : {options}",choices:"{label} doit \xEAtre une liste de choix",record:"{label} doit \xEAtre un enregistrement",records:"{label} doit \xEAtre une liste d'enregistrements",reference:"{label} doit pointer vers {models}",file:"{label} doit \xEAtre un fichier",fileSize:"{label} d\xE9passe {size}",fileType:"{label} doit \xEAtre un fichier {types}",or:"ou"}};function Je(e,t){return e.replace(/\{(\w+)\}/g,(n,i)=>i in t?String(t[i]):n)}function Ue(e,t,n,i=Te.en){let a=e.label||"This field",r=(o,d={})=>Je(i[o],{label:a,...d});if(qe(e,t))return n?r("required"):void 0;switch(e.type){case"char":case"text":case"html":return typeof t!="string"?r("text"):(e.type==="char"||e.type==="text")&&e.size!==void 0&&t.length>e.size?r("maxLength",{max:e.size}):e.type==="char"&&e.pattern!==void 0&&!new RegExp(e.pattern).test(t)?r("pattern"):void 0;case"integer":case"float":case"monetary":return typeof t!="number"||!Number.isFinite(t)?r("number"):e.type==="integer"&&!Number.isInteger(t)?r("integer"):e.min!==void 0&&t<e.min?r("min",{min:e.min}):e.max!==void 0&&t>e.max?r("max",{max:e.max}):e.type!=="integer"&&e.digits&&yr(t)>e.digits[1]?r("decimals",{digits:e.digits[1]}):void 0;case"boolean":return typeof t=="boolean"?void 0:r("boolean");case"date":return vr(t,r);case"datetime":return wr(t,r);case"selection":{let o=new Set(e.options.map(s=>s.value)),d=r("choice",{options:e.options.map(s=>s.label).join(", ")});return e.multiple?Array.isArray(t)?t.every(s=>o.has(s))?void 0:d:r("choices"):o.has(t)?void 0:d}case"many2one":return Ct(t)?void 0:r("record");case"many2many":return Array.isArray(t)&&t.every(Ct)?void 0:r("records");case"reference":{let o=t;if(!Ct(t)||typeof o.model!="string")return r("record");if(!e.models.some(d=>d.value===o.model)){let d=cn(e.models.map(s=>s.label),i.or);return r("reference",{models:d,aModels:fn(d)})}return}case"binary":case"image":return kr(e,t,r,i);default:return}}function yr(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 Ct(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&(typeof e.id=="number"||typeof e.id=="string")&&typeof e.label=="string"}function vr(e,t){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return t("dateFormat");let[n,i,a]=e.split("-").map(Number);return ln(n,i,a)?void 0:t("dateInvalid")}var xr=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2})?$/;function wr(e,t){let n=typeof e=="string"?xr.exec(e):null;if(!n)return t("datetimeFormat");let[i,a,r,o,d,s]=n.slice(1).map(l=>Number(l??0));return ln(i,a,r)&&o<24&&d<60&&s<60?void 0:t("datetimeInvalid")}function ln(e,t,n){if(t<1||t>12||n<1)return!1;let i=[31,e%4===0&&(e%100!==0||e%400===0)?29:28,31,30,31,30,31,31,30,31,30,31];return n<=i[t-1]}function kr(e,t,n,i){let a=t;if(!Sr(t))return n("file");if("maxSize"in e&&e.maxSize!==void 0&&a.size>e.maxSize)return n("fileSize",{size:Xe(e.maxSize)});if(e.type==="binary"&&e.accept&&!e.accept.some(r=>Lr(r,a.type))){let r=cn(e.accept.map(Er),i.or);return n("fileType",{types:r,aTypes:fn(r)})}}function Sr(e){let t=e;return e!==null&&typeof e=="object"&&typeof t.name=="string"&&typeof t.size=="number"}function Lr(e,t){return e.endsWith("/*")?t.startsWith(e.slice(0,-1)):e===t}function Er(e){return e.endsWith("/*")?e.slice(0,-2):e==="application/pdf"?"PDF":(e.split("/")[1]??e).toUpperCase()}function cn(e,t){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`}function fn(e){return/^[aeiou]/i.test(e)?`an ${e}`:`a ${e}`}function Xe(e){let t=["bytes","KB","MB","GB"],n=e,i=0;for(;n>=1024&&i<t.length-1;)n/=1024,i++;return`${Number(n.toFixed(1))} ${t[i]}`}function un(e){return Object.assign(new Error(e.message),{problem:e})}function ut(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 _e(e,t){return t.every(n=>$t(e,n))}function $t(e,t){return"any"in t?t.any.some(n=>$t(e,n)):"all"in t?t.all.every(n=>$t(e,n)):Rr(e,t)}function De(e){return e!=null&&e!==""&&e!==!1&&!(Array.isArray(e)&&!e.length)}function Rr(e,t){let n=e[t.field],i=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"id"in n?n.id:n,a=t.value,r=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"label"in n?String(n.label):String(i??"");switch(t.op){case"=":return i===a;case"!=":return i!==a;case"<":return De(i)&&i<a;case">":return De(i)&&i>a;case"<=":return De(i)&&i<=a;case">=":return De(i)&&i>=a;case"in":return Array.isArray(a)&&a.includes(i);case"not in":return Array.isArray(a)&&!a.includes(i);case"like":return r.includes(String(a));case"ilike":return r.toLowerCase().includes(String(a).toLowerCase());case"startswith":return r.toLowerCase().startsWith(String(a).toLowerCase());case"endswith":return r.toLowerCase().endsWith(String(a).toLowerCase());case"set":return De(n);case"notset":return!De(n);case"between":{if(!De(i)||!Array.isArray(a))return!1;let[o,d]=a;return i>=o&&i<=d}}}var pn=new Set(["char","text","html"]),gn=new Set(["integer","float","monetary"]),Fr=new Set(["many2one","many2many"]);function pt(e,t,n,i={searchFor:"Search {field} for: {text}"}){let a=e.trim();if(!a)return[];let r=[];for(let d of n.searchFields??n.columns){let s=t.fields[d];if(!s)continue;let l=(u,h,x,g)=>r.push({field:d,fieldLabel:s.label,op:u,value:h,valueLabel:x,label:g??Je(i.searchFor,{field:s.label,text:a})});if(pn.has(s.type)||Fr.has(s.type))l("ilike",a,a);else if(s.type==="selection"){let u=a.toLowerCase();for(let h of s.options)h.label.toLowerCase().includes(u)&&l("=",h.value,h.label,`${s.label}: ${h.label}`)}else if(gn.has(s.type)){let u=Number(a.replace(/[\s,]/g,""));a&&Number.isFinite(u)&&l("=",u,a)}}let o=d=>{let s=t.fields[d.field]?.type??"";return pn.has(s)?0:s==="selection"?1:gn.has(s)?2:3};return r.map((d,s)=>({s:d,i:s})).sort((d,s)=>o(d.s)-o(s.s)||d.i-s.i).map(({s:d})=>d)}function gt(e,t){let n=[];for(let i of e)if(i.kind==="field"){let a=i.values.map(r=>({field:i.field,op:r.op,value:r.value}));n.push(a.length===1?a[0]:{any:a})}else if(i.kind==="filters"){let a=i.ids.map(r=>t.filters?.find(o=>o.id===r)?.filter??[]).filter(r=>r.length);a.length===1?n.push(...a[0]):a.length>1&&n.push({any:a.map(r=>r.length===1?r[0]:{all:r})})}else i.kind==="custom"&&n.push(...i.filter);return n}function mt(e){return e.find(t=>t.kind==="groupBy")?.fields??[]}var Qe={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function bt(e,t=Qe){return new Promise(n=>{t.setTimeout(n,e)})}function mn(e={}){let t=le(e.records??{}),n=[],i=[],a=1e3,r=()=>e.delayMs?bt(e.delayMs,e.scheduler):Promise.resolve(),o=g=>t[g]??(t[g]={}),d=(g,m)=>{let c=o(g)[String(m)]?.[e.labelField?.[g]??"name"];return typeof c=="string"?c:String(m)},s=g=>Math.max(0,...Object.keys(o(g)).map(Number).filter(Number.isFinite))+1,l=g=>Number.isFinite(Number(g))?Number(g):g;function u(g,m){let c=[...g];for(let v of m)v.op==="create"?c.push({key:v.key,id:++a,values:le(v.values)}):v.op==="update"?c=c.map(b=>b.id===v.id?{...b,values:{...b.values,...le(v.values)}}:b):c=c.filter(b=>b.id!==v.id);return c}function h(g,m,c){let v=[...g],b=f=>({id:f,label:d(c,f)});for(let f of m)f.op==="link"&&!v.some(L=>L.id===f.id)?v.push(b(f.id)):f.op==="unlink"?v=v.filter(L=>L.id!==f.id):f.op==="set"?v=f.ids.map(b):f.op==="clear"&&(v=[]);return v}function x(g,m){let c=g[m];return c&&"relation"in c?c.relation:m}return{records:t,responses:n,calls:i,async load(g){i.push({method:"load",request:g}),await r();let m=o(g.model)[String(g.id)];if(!m)throw new Error(`No ${g.model} record with id ${g.id}`);return le(m)},async save(g){i.push({method:"save",request:g}),await r();let m=g.id??s(g.model),c={...o(g.model)[String(m)]??{},...le(g.changes.values)};for(let[v,b]of Object.entries(g.changes.lines))c[v]=u(c[v]??[],b);for(let[v,b]of Object.entries(g.changes.links))c[v]=h(c[v]??[],b,x(g.fields,v));return o(g.model)[String(m)]=c,{id:m,values:le(c)}},async onchange(g){i.push({method:"onchange",request:g}),await r();let m=e.onchange?.[g.model]?.[g.changed],c=e.warnings?.[g.model]?.[g.changed],v=m?{values:m(le(g.values))}:{},b=c?.(le(g.values));return b?{...v,warning:b}:v},async search(g){i.push({method:"search",request:g}),await r();let m=g.query.trim().toLowerCase();return Object.entries(o(g.model)).filter(([,c])=>_e(c,g.filter??[])).map(([c])=>({id:l(c),label:d(g.model,l(c))})).filter(c=>c.label.toLowerCase().includes(m)).slice(0,g.limit??8)},async list(g){i.push({method:"list",request:g}),await r();let m=Object.entries(o(g.model)).filter(([,c])=>_e(c,g.filter)).map(([c,v])=>({id:l(c),values:v}));return m.sort((c,v)=>{for(let b of g.sort){let f=Nr(c.values[b.field],v.values[b.field]);if(f.empty)return f.result;if(f.result)return b.desc?-f.result:f.result}return 0}),{total:m.length,records:m.slice(g.offset,g.offset+g.limit).map(({id:c,values:v})=>({id:c,values:Object.fromEntries(g.fields.map(b=>[b,le(v[b]??null)]))}))}},async groups(g){i.push({method:"groups",request:g}),await r();let m=new Map;for(let c of Object.values(o(g.model))){if(!_e(c,g.filter))continue;let v=c[g.field]??null,b=v!==null&&typeof v=="object"&&!Array.isArray(v)&&"id"in v?v:null,f=b?b.id:v,L=JSON.stringify(f),w=m.get(L)??{value:f,label:b?b.label:v===null||v===""?"":String(v),count:0};w.count++,m.set(L,w)}return[...m.values()].sort((c,v)=>c.value===null==(v.value===null)?c.label.localeCompare(v.label):c.value===null?1:-1)},async create(g){i.push({method:"create",request:g}),await r();let m=o(g.model),c=Object.keys(m).reduce((v,b)=>Math.max(v,Number(b)||0),0)+1;return m[String(c)]={name:g.name},{id:c,label:g.name}},async submit(g){return i.push({method:"submit",request:g}),await r(),n.push(le(g)),{id:n.length}}}}function Nr(e,t){let n=o=>o==null||o==="";if(n(e)||n(t))return{result:n(e)===n(t)?0:n(e)?1:-1,empty:n(e)!==n(t)};let i=o=>typeof o=="object"&&o!==null&&"label"in o?o.label:o,[a,r]=[i(e),i(t)];return typeof a=="number"&&typeof r=="number"?{result:a-r,empty:!1}:{result:String(a).localeCompare(String(r)),empty:!1}}function ht(e){let{page:t}=e,n=e.scheduler??Qe,i=e.messages??Te.en,a=Tr(t.layout),r=t.layout.type==="wizard"?t.layout.children.map(y=>y.id):[],o=()=>`fieldia:draft:${t.id}:${s.recordId??"new"}`,d={...He(t.fields),...le(e.values??{})},s={status:e.recordId!=null?"idle":"ready",recordId:e.recordId??null,values:le(d),errors:{},dirty:[],warning:null,warningField:null,error:null,draft:null,step:r[0]??null,skipped:[],saveProblem:null},l={},u=0,h=0,x=null,g=null,m=new Set,c=new Set,v=null;function b(y){s={...s,...y};for(let S of[...c])S(s)}function f(y){m.add(y);let S=()=>m.delete(y);return y.then(S,S),y}function L(){return v?.values!==s.values&&(v={values:s.values,context:Ze(s.values,t.fields)}),v.context}function w(y){let S=t.fields[y];if(!S)throw new Error(`The page has no field "${y}"`);return S}function N(y){return Object.keys(t.fields).filter(S=>JSON.stringify(y[S]??null)!==JSON.stringify(d[S]??null))}function O(y){let S=a.get(y);if(!S)throw new Error(`The page has no element "${y}"`);let A=L(),R=S.invisible.evaluate(A);for(let I=S.parent;!R&&I;I=a.get(I)?.parent??null)R=a.get(I)?.invisible.evaluate(A)??!1;let k=S.readonly.evaluate(A);for(let I=S.parent;!k&&I;I=a.get(I)?.parent??null)k=a.get(I)?.readonly.evaluate(A)??!1;let E=S.field?t.fields[S.field]:void 0;return{invisible:R,readonly:k||E?.readonly===!0,required:S.required.evaluate(A)||E?.required===!0}}function T(y){let S=R=>{if(!y)return!0;for(let k=R.id;k;k=a.get(k)?.parent??null)if(k===y)return!0;return!1},A=R=>{if(y||!s.skipped.length)return!1;for(let k=R.id;k;k=a.get(k)?.parent??null)if(s.skipped.includes(k))return!0;return!1};return[...a.values()].filter(R=>R.kind==="field"&&S(R)&&!A(R)&&!O(R.id).invisible)}function z(y){let S={};for(let A of T(y)){let R=A.field;if(S[R])continue;let k=t.fields[R],E=Ue(k,s.values[R],O(A.id).required,i);if(E&&(S[R]=E),k.type==="one2many")for(let I of s.values[R]??[]){let te=Me(k,I.values);for(let[X,Y]of Object.entries(k.fields)){if(te&&X!==k.lineKinds?.text)continue;let ae=Ue(Y,I.values[X],Y.required===!0,i);ae&&(S[`${R}.${I.key}.${X}`]=ae)}}}return S}function B(y,S={}){let A=Object.keys(s.errors).length?J(y):s.errors;b({values:y,dirty:N(y),errors:A,...S})}function J(y){let S=s;s={...s,values:y};let A=z(s.step??void 0);s=S;let R={};for(let k of Object.keys(s.errors))A[k]&&(R[k]=A[k]);for(let[k,E]of Object.entries(l))JSON.stringify(y[k]??null)===E.value?R[k]??(R[k]=E.message):delete l[k];return R}function de(){let y=e.drafts;y&&(x!==null&&n.clearTimeout(x),x=n.setTimeout(()=>{x=null,y.store.setItem(o(),JSON.stringify({savedAt:new Date().toISOString(),values:s.values}))},y.delayMs??400))}function _(){x!==null&&n.clearTimeout(x),x=null,e.drafts?.store.removeItem(o())}function K(){let y=e.drafts;if(!y)return;let S=y.store.getItem(o());if(!S)return;let A;try{A=JSON.parse(S)}catch{y.store.removeItem(o());return}y.restore==="auto"?B({...s.values,...A.values},{draft:null}):b({draft:{savedAt:A.savedAt}})}function Q(){let y=e.autosave;!y||t.data.kind!=="record"||(g!==null&&n.clearTimeout(g),g=n.setTimeout(()=>{g=null,s.dirty.length&&Object.keys(z()).length===0&&f(F())},y.delayMs))}function ee(y){let S=e.dataSource;if(!S?.onchange||t.data.kind!=="record")return;let A=++h,R={model:t.data.model,id:s.recordId,changed:y,values:le(s.values)};f(S.onchange(R).then(k=>{if(A!==h)return;let E={...s.values,...k.values??{}};B(E,{warning:k.warning??null,warningField:k.warning?y:null})},()=>{}))}function $(y){de(),Q(),ee(y)}function V(){let y={values:{},lines:{},links:{}},S=s.recordId===null||s.recordId===void 0,A=S?Object.keys(t.fields).filter(R=>s.dirty.includes(R)||!qe(t.fields[R],s.values[R])):s.dirty;for(let R of A){let k=t.fields[R],E=s.values[R],I=S?Ye(k):d[R];k.type==="one2many"?y.lines[R]=Ar(I??[],E??[]):k.type==="many2many"?y.links[R]=Mr(I??[],E??[]):y.values[R]=le(E)}return y}function W(){let y={};for(let S of T()){let A=S.field;y[A]=le(s.values[A])}return y}async function F(){let y=z();if(Object.keys(y).length)return b({errors:y}),!1;let S=e.dataSource;l={},b({status:"saving",errors:{},error:null,saveProblem:null});try{if(t.data.kind==="responses"){if(!S?.submit)throw new Error("This page has no data source to send its answers to");return await S.submit({pageId:t.id,values:W()}),_(),b({status:"saved"}),!0}if(!S?.save)throw new Error("This page has no data source to save to");let A=await S.save({model:t.data.model,id:s.recordId,fields:t.fields,changes:V(),values:le(s.values)});_();let R=A.values?{...s.values,...A.values}:s.values;return d=le(R),b({status:"saved",recordId:A.id,values:R,dirty:[]}),!0}catch(A){let R=ut(A),k=R.kind==="fields"?R.fields??{}:{};return l=Object.fromEntries(Object.entries(k).map(([E,I])=>[E,{message:I,value:JSON.stringify(s.values[E]??null)}])),b({status:"error",error:R.message,saveProblem:R,errors:{...k}}),!1}}function D(y){return!e.dataSource?.create||!y||y.readonly?null:y.type==="many2one"||y.type==="many2many"?y.relation:null}async function H(y,S,A){let R=D(y),k=e.dataSource;if(!R||!k?.create)throw new Error(`"${S}" cannot make records: its data source has no create, or it is not a link`);return f(k.create({model:R,name:A.trim()}))}async function ne(y,S,A,R,k,E){if(y.type!=="many2one"&&y.type!=="many2many"&&y.type!=="reference")throw new Error(`"${S}" is not a many2one, many2many or reference`);if(y.type==="reference"&&!E)throw new Error(`Searching "${S}" needs a model`);let I=e.dataSource;if(!I?.search)return[];let te=ae=>"any"in ae?{any:ae.any.map(te)}:"all"in ae?{all:ae.all.map(te)}:{field:ae.field,op:ae.op,value:ae.valueFrom!==void 0?A[ae.valueFrom]??null:ae.value??null},X=y.type==="reference"?void 0:y.filter?.map(te),Y=y.type==="reference"?E:y.relation;return f(I.search({model:Y,query:R,...X?{filter:X}:{},limit:k}))}function re(y){let S=w(y);if(S.type!=="one2many")throw new Error(`"${y}" is a ${S.type}, not a one2many`);return S}function me(){return s.step?r.indexOf(s.step):-1}function ue(y){return a.get(y)?.source?.optional===!0}async function pe(){let y=e.dataSource;if(!(s.recordId==null||t.data.kind!=="record")){if(!y?.load){b({status:"error",error:"This page has no data source to load from"});return}b({status:"loading",error:null});try{let S=await y.load({model:t.data.model,id:s.recordId,fields:t.fields});d={...He(t.fields),...S},b({status:"ready",values:le(d),dirty:[],errors:{}}),K()}catch(S){b({status:"error",error:S.message})}}}let ce={page:t,getState:()=>s,subscribe(y){return c.add(y),()=>c.delete(y)},load:()=>f(pe()),setValue(y,S){w(y),B({...s.values,[y]:le(S)}),$(y)},node:O,fieldReadonly:y=>w(y).readonly===!0,problem(y){let S=w(y),A=T().filter(R=>R.field===y);return A.length?Ue(S,s.values[y],A.some(R=>O(R.id).required),i)??null:null},validate(){let y=z();return b({errors:y}),Object.keys(y).length===0},save:()=>f(F()),reset(){_(),l={},b({values:le(d),dirty:[],errors:{},warning:null,warningField:null,draft:null,step:r[0]??null,skipped:[],saveProblem:null})},changes:V,addLine(y,S={}){let A=re(y),R=`new-${++u}`,k=s.values[y]??[],E={key:R,values:{...He(A.fields),...le(S)}};if(A.sequenceField&&E.values[A.sequenceField]==null){let te=k.map(X=>X.values[A.sequenceField]).filter(X=>typeof X=="number");E.values[A.sequenceField]=te.length?Math.max(...te)+1:1}let I=[...k,E];return B({...s.values,[y]:I}),$(y),R},updateLine(y,S,A,R){if(!re(y).fields[A])throw new Error(`The lines of "${y}" have no field "${A}"`);let E=(s.values[y]??[]).map(I=>I.key===S?{...I,values:{...I.values,[A]:le(R)}}:I);B({...s.values,[y]:E}),$(y)},moveLine(y,S,A){let k=re(y).sequenceField;if(!k)throw new Error(`The lines of "${y}" keep no order: give the field a sequenceField`);let E=[...s.values[y]??[]],I=E.findIndex(ye=>ye.key===S);if(I<0)throw new Error(`"${y}" has no line "${S}"`);let te=Math.max(0,Math.min(A,E.length-1));if(te===I)return;let X=E.map(ye=>ye.values[k]),Y=X.every((ye,xe)=>typeof ye=="number"&&(xe===0||ye>X[xe-1]));E.splice(te,0,...E.splice(I,1));let ae=Math.min(I,te),Ge=Math.max(I,te),At=Y?X.slice(ae,Ge+1):[],Mt=E.map((ye,xe)=>{let he=Y?xe>=ae&&xe<=Ge?At[xe-ae]:ye.values[k]:xe+1;return he===ye.values[k]?ye:{...ye,values:{...ye.values,[k]:he}}});B({...s.values,[y]:Mt}),$(y)},removeLine(y,S){re(y);let A=(s.values[y]??[]).filter(R=>R.key!==S);B({...s.values,[y]:A}),$(y)},async search(y,S,A=8,R={}){return ne(w(y),y,L(),S,A,R.model)},async previewLine(y,S,A){re(y);let R=s.values[y]??[],k=R.find(ae=>ae.key===S);if(!k)throw new Error(`"${y}" has no line "${S}"`);let E={...k.values,...A},I=e.dataSource;if(!I?.onchange||t.data.kind!=="record")return E;let te=R.map(ae=>ae.key===S?{...ae,values:E}:ae),Y=((await I.onchange({model:t.data.model,id:s.recordId,changed:y,values:le({...s.values,[y]:te})})).values?.[y]??[]).find(ae=>ae.key===S);return Y?{...E,...Y.values}:E},async searchLine(y,S,A,R,k=8){let E=re(y),I=E.fields[A];if(!I)throw new Error(`The lines of "${y}" have no field "${A}"`);let te=(s.values[y]??[]).find(X=>X.key===S);if(!te)throw new Error(`"${y}" has no line "${S}"`);return ne(I,A,Ze(te.values,E.fields),R,k)},canCreate:y=>D(t.fields[y])!==null,quickCreate:(y,S)=>H(t.fields[y],y,S),canCreateLine:(y,S)=>D(re(y).fields[S])!==null,quickCreateLine:(y,S,A)=>H(re(y).fields[S],S,A),steps:()=>r.filter(y=>!O(y).invisible),next(){if(!s.step)return!1;s.skipped.includes(s.step)&&b({skipped:s.skipped.filter(R=>R!==s.step)});let y=z(s.step);if(Object.keys(y).length)return b({errors:y}),!1;let S=ce.steps(),A=r.slice(me()+1).find(R=>S.includes(R));return A?(b({step:A,errors:{}}),!0):!1},back(){if(!s.step)return!1;let y=ce.steps(),S=r.slice(0,me()).reverse().find(A=>y.includes(A));return S?(b({step:S,errors:{}}),!0):!1},skip(){let y=s.step;if(!y||!ue(y))return!1;let S=ce.steps(),A=S[S.indexOf(y)+1];return A?(b({step:A,errors:{},skipped:[...s.skipped.filter(R=>R!==y),y]}),!0):!1},goTo(y){let S=ce.steps(),A=S.indexOf(y),R=s.step?S.indexOf(s.step):-1;if(A===-1||R===-1)return!1;if(A<=R)return b({step:y,errors:{}}),!0;let k=[...s.skipped];for(let E of S.slice(R,A)){if(k.includes(E))continue;let I=z(E);if(Object.keys(I).length){if(ue(E)){k.push(E);continue}return b({step:E,errors:I,skipped:k}),!1}}return b({step:y,errors:{},skipped:k}),!0},async runAction(y,S){let A=a.get(y);if(!A||A.kind!=="button"&&A.kind!=="stat")throw new Error(`The page has no button "${y}"`);if(O(y).invisible)return;let R=A.source;await f(Promise.resolve(e.onAction?.({id:y,action:R.action,..."params"in R&&R.params?{params:R.params}:{},recordId:s.recordId,values:le(s.values),...S?{recordIds:[...S.recordIds]}:{}})))},restoreDraft(){let y=e.drafts?.store.getItem(o());if(!y)return;let S=JSON.parse(y);B({...s.values,...S.values},{draft:null})},discardDraft(){_(),b({draft:null})},async settled(){for(;m.size;)await Promise.allSettled([...m])},dispose(){x!==null&&n.clearTimeout(x),g!==null&&n.clearTimeout(g),c.clear()}};return s.recordId==null&&K(),ce}function Ar(e,t){let n=[],i=new Map(e.filter(r=>r.id!==void 0).map(r=>[r.key,r]));for(let r of t){let o=i.get(r.key);if(r.id===void 0||!o){n.push({op:"create",key:r.key,values:le(r.values)});continue}let d={};for(let[s,l]of Object.entries(r.values))JSON.stringify(l)!==JSON.stringify(o.values[s])&&(d[s]=le(l));Object.keys(d).length&&n.push({op:"update",id:r.id,values:d})}let a=new Set(t.map(r=>r.key));for(let r of e)r.id!==void 0&&!a.has(r.key)&&n.push({op:"delete",id:r.id});return n}function Mr(e,t){let n=new Set(e.map(a=>a.id)),i=new Set(t.map(a=>a.id));return[...t.filter(a=>!n.has(a.id)).map(a=>({op:"link",id:a.id})),...e.filter(a=>!i.has(a.id)).map(a=>({op:"unlink",id:a.id}))]}function Tr(e){let t=new Map,n=(a,r,o,d)=>{t.set(a.id,{id:a.id,parent:r,kind:o,field:d.field,invisible:Ae(d.invisible),readonly:Ae(d.readonly),required:Ae(d.required),source:a})},i=(a,r)=>{for(let o of a)if(o.type==="field")n(o,r,"field",{invisible:o.invisible,readonly:o.readonly,required:o.required,field:o.field});else if(o.type==="button")n(o,r,"button",{invisible:o.invisible});else if(o.type==="tabs"){n(o,r,"other",{invisible:o.invisible});for(let d of o.children)n(d,o.id,"other",{invisible:d.invisible}),i(d.children,d.id)}else o.type==="section"?(n(o,r,"other",{invisible:o.invisible,readonly:o.readonly}),i(o.children,o.id)):n(o,r,"other",{invisible:o.invisible})};if(e.type==="tabs")return i([e],""),t.get(e.id).parent=null,t;if(n(e,null,"other",{}),e.type==="wizard")for(let a of e.children)n(a,e.id,"step",{invisible:a.invisible}),i(a.children,a.id);else if(e.type==="sections")i(e.children,e.id);else if(e.type==="list")for(let a of e.actions??[])n(a,e.id,"button",{invisible:a.invisible});else{let a=(r,o)=>{o&&n({id:r},e.id,"field",{field:o})};a("#title",e.title?.field),a("#subtitle",e.title?.subtitleField),a("#avatar",e.title?.avatarField),a("#statusbar",e.statusbar?.field);for(let r of e.buttons??[])n(r,e.id,"button",{invisible:r.invisible});for(let r of e.statButtons??[])n(r,e.id,"stat",{invisible:r.invisible});e.ribbon&&n(e.ribbon,e.id,"other",{invisible:e.ribbon.invisible});for(let r of e.alerts??[])n(r,e.id,"other",{invisible:r.invisible});for(let r of e.badges??[])n(r,e.id,"other",{invisible:r.invisible});i([...e.title?.above??[],...e.title?.below??[]],e.id),i(e.children,e.id),e.sidePanel&&n(e.sidePanel,e.id,"other",{invisible:e.sidePanel.invisible})}return t}var bn=new Map;function hn(e,t){let n=`${e}:${t}`,i=bn.get(n);return i||(i=new Intl.NumberFormat(e,{numberingSystem:"latn",minimumFractionDigits:t,maximumFractionDigits:t}),bn.set(n,i)),i}function Cr(e){let t=hn(e,1).formatToParts(12345.6);return{group:t.find(n=>n.type==="group")?.value??",",decimal:t.find(n=>n.type==="decimal")?.value??"."}}function Pe(e,t,n="en"){return hn(n,t).format(e)}function Vt(e,t="en"){let{group:n,decimal:i}=Cr(t),a=e.replace(/[٠-٩]/g,r=>String(r.charCodeAt(0)-1632)).replace(/[۰-۹]/g,r=>String(r.charCodeAt(0)-1776)).replace(/٫/g,i).replace(/٬/g,n);return a=a.replace(/[\s\u00a0\u202f]/g,""),n.trim()&&(a=a.split(n).join("")),i==="."?a:a.split(i).join(".")}var ge={en:{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",total:"Total",lineProblem:"Line {n}: {message}",moreProblems:"and {n} more",chooseColumns:"Choose columns",createNamed:"Create \u201C{name}\u201D",createAndEdit:"Create and edit\u2026",searchMore:"Search more\u2026",openNamed:"Open {name}",openLine:"Open line",chooseDate:"Choose a date",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",invalidJson:"Not valid JSON"},ar:{search:"\u0628\u062D\u062B\u2026",noResults:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",remove:"\u0625\u0632\u0627\u0644\u0629 {name}",clear:"\u0645\u0633\u062D {label}",addLine:"\u0625\u0636\u0627\u0641\u0629 \u0633\u0637\u0631",addSection:"\u0625\u0636\u0627\u0641\u0629 \u0642\u0633\u0645",addNote:"\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0627\u062D\u0638\u0629",deleteLine:"\u062D\u0630\u0641 \u0627\u0644\u0633\u0637\u0631",total:"\u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A",lineProblem:"\u0627\u0644\u0633\u0637\u0631 {n}: {message}",moreProblems:"\u0648{n} \u0623\u062E\u0631\u0649",chooseColumns:"\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0623\u0639\u0645\u062F\u0629",createNamed:"\u0625\u0646\u0634\u0627\u0621 \xAB{name}\xBB",createAndEdit:"\u0625\u0646\u0634\u0627\u0621 \u0648\u062A\u0639\u062F\u064A\u0644\u2026",searchMore:"\u0628\u062D\u062B \u0645\u0648\u0633\u0651\u0639\u2026",openNamed:"\u0641\u062A\u062D {name}",openLine:"\u0641\u062A\u062D \u0627\u0644\u0633\u0637\u0631",chooseDate:"\u0627\u062E\u062A\u064A\u0627\u0631 \u062A\u0627\u0631\u064A\u062E",previousMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0633\u0627\u0628\u0642",nextMonth:"\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u062A\u0627\u0644\u064A",weekShort:"\u0623\u0633\u0628\u0648\u0639",week:"\u0627\u0644\u0623\u0633\u0628\u0648\u0639",formatting:"\u0627\u0644\u062A\u0646\u0633\u064A\u0642",bold:"\u063A\u0627\u0645\u0642",italic:"\u0645\u0627\u0626\u0644",underline:"\u062A\u0633\u0637\u064A\u0631",textStyle:"\u0646\u0645\u0637 \u0627\u0644\u0646\u0635",paragraph:"\u0641\u0642\u0631\u0629",heading:"\u0639\u0646\u0648\u0627\u0646",subheading:"\u0639\u0646\u0648\u0627\u0646 \u0641\u0631\u0639\u064A",bulletList:"\u0642\u0627\u0626\u0645\u0629 \u0646\u0642\u0637\u064A\u0629",numberList:"\u0642\u0627\u0626\u0645\u0629 \u0645\u0631\u0642\u0645\u0629",alignLeft:"\u0645\u062D\u0627\u0630\u0627\u0629 \u0644\u0644\u064A\u0633\u0627\u0631",alignCenter:"\u062A\u0648\u0633\u064A\u0637",alignRight:"\u0645\u062D\u0627\u0630\u0627\u0629 \u0644\u0644\u064A\u0645\u064A\u0646",link:"\u0631\u0627\u0628\u0637",linkAddress:"\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0631\u0627\u0628\u0637",applyLink:"\u062A\u0637\u0628\u064A\u0642",removeLink:"\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0631\u0627\u0628\u0637",upload:"\u0631\u0641\u0639 \u0645\u0644\u0641",uploadImage:"\u0625\u0636\u0627\u0641\u0629 \u0635\u0648\u0631\u0629",replace:"\u0627\u0633\u062A\u0628\u062F\u0627\u0644",removeFile:"\u0625\u0632\u0627\u0644\u0629",dropHere:"\u0623\u0648 \u0623\u0641\u0644\u062A\u0647 \u0647\u0646\u0627",invalidJson:"\u0644\u064A\u0633 JSON \u0635\u0627\u0644\u062D\u064B\u0627"},de:{search:"Suchen\u2026",noResults:"Keine Ergebnisse",remove:"{name} entfernen",clear:"{label} leeren",addLine:"Zeile hinzuf\xFCgen",addSection:"Abschnitt hinzuf\xFCgen",addNote:"Notiz hinzuf\xFCgen",deleteLine:"Zeile l\xF6schen",total:"Summe",lineProblem:"Zeile {n}: {message}",moreProblems:"und {n} weitere",chooseColumns:"Spalten ausw\xE4hlen",createNamed:"\u201E{name}\u201C anlegen",createAndEdit:"Anlegen und bearbeiten\u2026",searchMore:"Weitere suchen\u2026",openNamed:"{name} \xF6ffnen",openLine:"Zeile \xF6ffnen",chooseDate:"Datum ausw\xE4hlen",previousMonth:"Vorheriger Monat",nextMonth:"N\xE4chster Monat",weekShort:"KW",week:"Kalenderwoche",formatting:"Formatierung",bold:"Fett",italic:"Kursiv",underline:"Unterstrichen",textStyle:"Textstil",paragraph:"Absatz",heading:"\xDCberschrift",subheading:"Unter\xFCberschrift",bulletList:"Aufz\xE4hlung",numberList:"Nummerierte Liste",alignLeft:"Linksb\xFCndig",alignCenter:"Zentriert",alignRight:"Rechtsb\xFCndig",link:"Link",linkAddress:"Linkadresse",applyLink:"\xDCbernehmen",removeLink:"Link entfernen",upload:"Datei hochladen",uploadImage:"Foto hinzuf\xFCgen",replace:"Ersetzen",removeFile:"Entfernen",dropHere:"oder hier ablegen",invalidJson:"Kein g\xFCltiges JSON"},fr:{search:"Rechercher\u2026",noResults:"Aucun r\xE9sultat",remove:"Retirer {name}",clear:"Effacer {label}",addLine:"Ajouter une ligne",addSection:"Ajouter une section",addNote:"Ajouter une note",deleteLine:"Supprimer la ligne",total:"Total",lineProblem:"Ligne {n} : {message}",moreProblems:"et {n} de plus",chooseColumns:"Choisir les colonnes",createNamed:"Cr\xE9er \xAB {name} \xBB",createAndEdit:"Cr\xE9er et modifier\u2026",searchMore:"Rechercher plus\u2026",openNamed:"Ouvrir {name}",openLine:"Ouvrir la ligne",chooseDate:"Choisir une date",previousMonth:"Mois pr\xE9c\xE9dent",nextMonth:"Mois suivant",weekShort:"Sem.",week:"Semaine",formatting:"Mise en forme",bold:"Gras",italic:"Italique",underline:"Soulign\xE9",textStyle:"Style du texte",paragraph:"Paragraphe",heading:"Titre",subheading:"Sous-titre",bulletList:"Liste \xE0 puces",numberList:"Liste num\xE9rot\xE9e",alignLeft:"Aligner \xE0 gauche",alignCenter:"Centrer",alignRight:"Aligner \xE0 droite",link:"Lien",linkAddress:"Adresse du lien",applyLink:"Appliquer",removeLink:"Supprimer le lien",upload:"T\xE9l\xE9verser un fichier",uploadImage:"Ajouter une photo",replace:"Remplacer",removeFile:"Retirer",dropHere:"ou d\xE9posez-le ici",invalidJson:"JSON invalide"}};var $r=180,yn=8;function yt(e,t){return e.replace(/\{(\w+)\}/g,(n,i)=>t[i]??n)}function vt(e){let{document:t,id:n,labels:i}=e,a=`${n}-list`,r=t.createElement("input");Object.assign(r,{id:n,className:"fd-input fd-combo-input",autocomplete:"off"}),r.setAttribute("role","combobox"),r.setAttribute("aria-autocomplete","list"),r.setAttribute("aria-expanded","false"),r.setAttribute("aria-controls",a),r.placeholder=i.search;let o=t.createElement("ul");o.id=a,o.className="fd-listbox",o.setAttribute("role","listbox"),o.hidden=!0;let d=t.createElement("div");d.className="fd-combo",d.append(r,o);let s="",l=null,u="",h=new Map,x=!1,g=[],m=-1,c=0,v,b=!1;function f(){if(o.replaceChildren(),g.forEach((T,z)=>{let B=t.createElement("li");B.id=`${a}-${z}`,B.setAttribute("role","option"),B.setAttribute("aria-selected",String(z===m)),B.className=`fd-option${z===m?" fd-active":""}${T===l||h.has(T)?" fd-option-create":""}`,B.textContent=T.label,B.addEventListener("mousedown",J=>J.preventDefault()),B.addEventListener("click",()=>N(z)),o.append(B)}),!g.length){let T=t.createElement("li");T.className="fd-empty",T.textContent=i.noResults,o.append(T)}m>=0?r.setAttribute("aria-activedescendant",`${a}-${m}`):r.removeAttribute("aria-activedescendant")}function L(){o.hidden=!1,r.setAttribute("aria-expanded","true")}function w(){clearTimeout(v),c++,o.hidden=!0,r.setAttribute("aria-expanded","false"),r.removeAttribute("aria-activedescendant"),m=-1}function N(T){let z=g[T];if(!z)return;let B=u;if(w(),x=!1,z===l&&e.create){e.create(B).then(e.pick,()=>{});return}let J=h.get(z);if(J){J(B).then(de=>de&&e.pick(de),()=>{});return}e.pick(z)}function O(T){clearTimeout(v);let z=++c;v=setTimeout(async()=>{let B=await e.search(T).catch(()=>[]);if(z!==c||t.activeElement!==r)return;let J=g[m],de=J&&J!==l&&!h.has(J)?J.id:void 0,_=e.exclude?.()??new Set,K=B.filter($=>!_.has($.id)),Q=e.shown!==void 0&&K.length>e.shown;g=Q?K.slice(0,e.shown):K;let ee=T.trim();l=null,e.create&&ee&&!B.some($=>$.label.trim().toLowerCase()===ee.toLowerCase())&&(u=ee,l={id:"__create__",label:yt(i.createNamed,{name:ee})},g=[...g,l]),u=ee,h=new Map((e.more?.(ee,Q)??[]).map(($,V)=>[{id:`__more_${V}__`,label:$.label},$.act])),g=[...g,...h.keys()],m=de===void 0?-1:g.findIndex($=>$.id===de),f(),L()},$r)}return r.addEventListener("input",()=>{x=!0,b||O(r.value)}),r.addEventListener("focus",()=>{b||O("")}),r.addEventListener("keydown",T=>{if(!b)switch(T.key){case"ArrowDown":case"ArrowUp":{if(T.preventDefault(),o.hidden)return O(r.value);if(!g.length)return;m=(m+(T.key==="ArrowDown"?1:-1)+g.length)%g.length,f(),o.children[m]?.scrollIntoView?.({block:"nearest"});return}case"Enter":!o.hidden&&m>=0&&(T.preventDefault(),N(m));return;case"Escape":o.hidden||T.preventDefault(),w(),x=!1,r.value=s;return;case"Backspace":r.value===""&&e.onEmptyBackspace?.();return}}),r.addEventListener("blur",()=>{c++,clearTimeout(v),w();let T=x&&r.value.trim()===""&&s!=="";x=!1,T?e.onCommitEmpty?.():r.value=s}),{element:d,input:r,setText(T){s=T,x||(r.value=T)},setReadonly(T){b=T,r.readOnly=T,T&&w()},close:w}}function vn(e,t,n){return n.options?.create!==!1&&e.canCreate(t)?i=>e.quickCreate(t,i):void 0}var It=({form:e,name:t,field:n,node:i,id:a,document:r,labels:o=ge.en,dialogs:d})=>{let s=n.type==="many2one"?n.relation:"",l=!!d&&d.canOpen(s),u=!1,h=vt({document:r,id:a,labels:o,search:m=>e.search(t,m,yn+1),shown:yn,pick:m=>e.setValue(t,m),onCommitEmpty:()=>e.setValue(t,null),create:vn(e,t,i),more:(m,c)=>{if(!d||u)return[];let v=[];return m&&l&&i.options?.create!==!1&&v.push({label:o.createAndEdit,act:b=>d.openRecord(s,{name:b,title:n.label})}),c&&v.push({label:o.searchMore,act:()=>d.searchMore({title:n.label,search:(b,f)=>e.search(t,b,f)})}),v}}),x=l?r.createElement("button"):null;x&&(x.type="button",x.className="fd-combo-open",x.textContent="\u2197",x.hidden=!0,x.addEventListener("click",async()=>{let m=e.getState().values[t];if(!m||!d)return;let c=await d.openRecord(s,{recordId:m.id,title:m.label});c&&c.label!==m.label&&e.setValue(t,c)}));let g=r.createElement("button");return g.type="button",g.className="fd-combo-clear",g.textContent="\xD7",g.setAttribute("aria-label",yt(o.clear,{label:n.label})),g.addEventListener("click",()=>{e.setValue(t,null),h.input.focus()}),h.element.append(g,...x?[x]:[]),{element:h.element,focus:()=>h.input.focus(),update(m){let c=m.value;u=m.readonly,h.setText(c?.label??""),h.setReadonly(m.readonly),g.hidden=!c||m.readonly,x&&(x.hidden=!c,c&&x.setAttribute("aria-label",yt(o.openNamed,{name:c.label}))),h.input.setAttribute("aria-invalid",String(m.invalid)),h.input.setAttribute("aria-required",String(m.required)),m.describedBy&&h.input.setAttribute("aria-describedby",m.describedBy)}}},xt=({form:e,name:t,node:n,id:i,document:a,labels:r=ge.en})=>{let o=()=>e.getState().values[t]??[],d=a.createElement("div");d.className="fd-tags",d.setAttribute("role","group");let s=a.createElement("ul");s.className="fd-chips";let l=vt({document:a,id:i,labels:r,search:x=>e.search(t,x),pick:x=>{e.setValue(t,[...o(),x]),l.input.value=""},exclude:()=>new Set(o().map(x=>x.id)),onEmptyBackspace:()=>{let x=o();x.length&&e.setValue(t,x.slice(0,-1))},create:vn(e,t,n)});d.append(s,l.element);let u=!1,h="";return{element:d,focus:()=>l.input.focus(),update(x){let g=x.value??[],m=JSON.stringify([x.readonly,g]);u=x.readonly,l.setReadonly(u),l.element.hidden=u,l.input.setAttribute("aria-invalid",String(x.invalid)),x.describedBy&&l.input.setAttribute("aria-describedby",x.describedBy),m!==h&&(h=m,xn(s,g,u,r,c=>e.setValue(t,o().filter(v=>v.id!==c.id))),l.setText(""))}}};function xn(e,t,n,i,a){let r=e.ownerDocument;e.replaceChildren(...t.map(o=>{let d=r.createElement("li");d.className="fd-chip";let s=r.createElement("span");if(s.className="fd-chip-label",s.textContent=o.label,d.append(s),!n){let l=r.createElement("button");l.type="button",l.className="fd-chip-remove",l.textContent="\xD7",l.setAttribute("aria-label",yt(i.remove,{name:o.label})),l.addEventListener("click",()=>a(o)),d.append(l)}return d}))}var Ot=({form:e,name:t,node:n,id:i,document:a,labels:r=ge.en})=>{let o=n.options??{},d=typeof o.separator=="string"&&o.separator?o.separator:",",s=Array.isArray(o.suggestions)?o.suggestions.filter(b=>typeof b=="string"):[],l=b=>typeof b=="string"?b.split(d).map(f=>f.trim()).filter(f=>f!==""):[],u=()=>l(e.getState().values[t]),h=b=>e.setValue(t,b.length?b.join(`${d} `):null),x=b=>{let f=b.trim(),L=u();f&&!L.some(w=>w.toLowerCase()===f.toLowerCase())&&h([...L,f])},g=a.createElement("div");g.className="fd-tags",g.setAttribute("role","group");let m=a.createElement("ul");m.className="fd-chips";let c=vt({document:a,id:i,labels:r,search:async b=>{let f=new Set(u().map(w=>w.toLowerCase())),L=b.trim().toLowerCase();return s.filter(w=>!f.has(w.toLowerCase())&&w.toLowerCase().includes(L)).map(w=>({id:w,label:w}))},pick:b=>{x(b.label),c.input.value=""},onEmptyBackspace:()=>{let b=u();b.length&&h(b.slice(0,-1))}});c.input.addEventListener("keydown",b=>{b.key!=="Enter"||b.defaultPrevented||c.input.value.trim()===""||(b.preventDefault(),x(c.input.value),c.input.value="",c.close())}),c.input.addEventListener("input",()=>{let b=c.input.value.split(d);if(!(b.length<2)){for(let f of b.slice(0,-1))x(f);c.input.value=b[b.length-1].trimStart()}}),c.input.addEventListener("change",()=>{c.input.value.trim()&&x(c.input.value)}),g.append(m,c.element);let v="";return{element:g,focus:()=>c.input.focus(),update(b){let f=l(b.value);c.setReadonly(b.readonly),c.element.hidden=b.readonly,c.input.setAttribute("aria-invalid",String(b.invalid)),b.describedBy&&c.input.setAttribute("aria-describedby",b.describedBy);let L=JSON.stringify([b.readonly,f]);L!==v&&(v=L,xn(m,f.map(w=>({id:w,label:w})),b.readonly,r,w=>h(u().filter(N=>N!==w.label))),c.setText(""))}}},Dt=({form:e,name:t,id:n,document:i})=>{let a=i.createElement("div");a.id=n,a.className="fd-choices fd-choices-checkbox",a.setAttribute("role","group");let r=[],o={readonly:!1,value:[]},d=()=>{let s=new Set(o.value.map(l=>l.id));for(let{record:l,box:u}of r)u.checked=s.has(l.id),u.disabled=o.readonly};return e.search(t,"",50).then(s=>{r=s.map((l,u)=>{let h=i.createElement("input");h.type="checkbox",h.id=`${n}-${u}`,h.addEventListener("change",()=>{let m=e.getState().values[t]??[];e.setValue(t,h.checked?[...m,l]:m.filter(c=>c.id!==l.id))});let x=i.createElement("label");x.className="fd-choice",x.htmlFor=h.id;let g=i.createElement("span");return g.textContent=l.label,x.append(h,g),a.append(x),{record:l,box:h}}),d()}),{element:a,focus:()=>a.querySelector("input")?.focus(),update(s){o={readonly:s.readonly,value:s.value??[]},d()}}},Pt=e=>{let{form:t,name:n,field:i,id:a,document:r,labels:o=ge.en}=e,d=i.type==="reference"?i.models:[],s=r.createElement("div");s.className="fd-reference";let l=r.createElement("select");l.className="fd-input fd-select",l.setAttribute("aria-label",i.label),l.append(r.createElement("option"));for(let x of d){let g=r.createElement("option");g.value=String(x.value),g.textContent=x.label,l.append(g)}let u="";l.addEventListener("change",()=>{u=l.value,t.setValue(n,null)});let h=vt({document:r,id:a,labels:o,search:x=>u?t.search(n,x,8,{model:u}):Promise.resolve([]),pick:x=>t.setValue(n,{model:u,id:x.id,label:x.label}),onCommitEmpty:()=>t.setValue(n,null)});return s.append(l,h.element),{element:s,focus:()=>u?h.input.focus():l.focus(),update(x){let g=x.value;g&&(u=g.model),l.value=u,l.disabled=x.readonly,h.setText(g?.label??""),h.setReadonly(x.readonly||!u)}}};function wn(e){let t=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(e);if(!t)return null;let[,n,i,a,r,o]=t;return new Date(Number(n),Number(i)-1,Number(a),Number(r??0),Number(o??0))}function et(e,t,n={},i="en"){let a=(r,o)=>Pe(r,o,i);if(t==null||t==="")return"";switch(e.type){case"many2one":case"reference":return t.label??"";case"many2many":return(t??[]).map(r=>r.label).join(", ");case"selection":{let r=o=>e.options.find(d=>d.value===o)?.label??String(o);return Array.isArray(t)?t.map(r).join(", "):r(t)}case"integer":return a(Number(t),0);case"float":return a(Number(t),e.digits?.[1]??2);case"monetary":{let r=e.currency??(e.currencyField?n[e.currencyField]?.label:void 0),o=a(Number(t),e.digits?.[1]??2);return r?`${r} ${o}`:o}case"date":{let r=wn(String(t));return r?new Intl.DateTimeFormat(i==="en"?"en-GB":i,{day:"numeric",month:"short",year:"numeric",numberingSystem:"latn"}).format(r):String(t)}case"datetime":{let r=wn(String(t));return r?new Intl.DateTimeFormat(i==="en"?"en-GB":i,{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",numberingSystem:"latn"}).format(r):String(t)}case"html":return String(t).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();case"binary":case"image":return t.name??"";case"boolean":return t?"\u2713":"";default:return String(t)}}function kn(e,t){return t==="section"?{...e,type:"char"}:{...e,type:"text"}}function Sn(e,t,n){let i=()=>(e.getState().values[t]??[]).find(a=>a.key===n)?.values??{};return{...e,getState:()=>({...e.getState(),values:i()}),setValue:(a,r)=>e.updateLine(t,n,a,r),search:(a,r,o)=>e.searchLine(t,n,a,r,o),canCreate:a=>e.canCreateLine(t,a),quickCreate:(a,r)=>e.quickCreateLine(t,a,r)}}var zt=({form:e,name:t,field:n,node:i,id:a,document:r,labels:o=ge.en,locale:d,dialogs:s})=>{let l=n,u=l.lineKinds,h=(i.columns??Object.keys(l.fields)).filter(_=>l.fields[_]&&_!==u?.field&&_!==l.sequenceField&&i.optionalColumns?.[_]!=="hide"),x=r.createElement("div");x.className="fd-lines",x.id=a,x.setAttribute("role","group");let g=r.createElement("div");g.className="fd-lines-scroll";let m=r.createElement("table");m.className="fd-lines-table";let c=r.createElement("thead"),v=r.createElement("tr");for(let _ of h){let K=r.createElement("th");K.scope="col",K.textContent=l.fields[_].label,v.append(K)}let b=r.createElement("th");b.className="fd-lines-tools",v.append(b),c.append(v);let f=r.createElement("tbody");m.append(c,f);let L=(i.totals??[]).filter(_=>h.includes(_)),w=new Map;if(L.length){let _=r.createElement("tfoot"),K=r.createElement("tr");K.className="fd-lines-totals",h.forEach((Q,ee)=>{let $=r.createElement("td");L.includes(Q)?w.set(Q,$):ee===0&&($.textContent=o.total),K.append($)}),K.append(r.createElement("td")),_.append(K),m.append(_)}g.append(m);let N=r.createElement("div");N.className="fd-lines-adds";let O=(_,K,Q)=>{let ee=r.createElement("button");ee.type="button",ee.className="fd-button fd-button-link fd-lines-add",ee.dataset.add=Q,ee.textContent=`+ ${_}`,ee.addEventListener("click",()=>{z=e.addLine(t,K);let $=T.get(z);$&&($.cells[0]?.widget.focus(),z=null)}),N.append(ee)};O(o.addLine,{},"line"),u&&(O(o.addSection,{[u.field]:u.section??"section"},"section"),O(o.addNote,{[u.field]:u.note??"note"},"note")),x.append(g,N);let T=new Map,z=null,B=!1;function J(_,K,Q,ee,$=1){let V=`${a}-${K.key}-${Q}`,W={type:"field",id:`${i.id}.${K.key}.${Q}`,field:Q},F=Ee({form:Sn(e,t,K.key),name:Q,field:ee,node:W,id:V,document:r,labels:o,locale:d,dialogs:s}),D=r.createElement("td");D.colSpan=$;let H=r.createElement("label");H.className="fd-sr-only",H.htmlFor=V,H.textContent=ee.label;let ne=r.createElement("div");return ne.className="fd-cell-error",ne.hidden=!0,D.append(H,F.element,ne),_.append(D),{name:Q,def:ee,widget:F,error:ne}}function de(_){let K=r.createElement("tr");K.dataset.line=_.key;let Q=Me(l,_.values);Q&&(K.className=`fd-line-${Q}`);let ee=Q&&u?[J(K,_,u.text,kn(l.fields[u.text],Q),h.length)]:h.map(W=>J(K,_,W,l.fields[W])),$=r.createElement("td");$.className="fd-lines-tools";let V=r.createElement("button");return V.type="button",V.className="fd-line-delete",V.textContent="\xD7",V.setAttribute("aria-label",o.deleteLine),V.addEventListener("click",()=>e.removeLine(t,_.key)),$.append(V),K.append($),{element:K,kind:Q,cells:ee,remove:V}}return{element:x,focus:()=>(f.querySelector("input, select, textarea")??N.querySelector("button"))?.focus(),update(_){B=_.readonly,N.hidden=B;let K=_.value??[],Q=e.getState().errors,ee=new Set(K.map($=>$.key));for(let[$,V]of T)ee.has($)||(V.element.remove(),T.delete($));K.forEach(($,V)=>{let W=T.get($.key);W&&W.kind!==Me(l,$.values)&&(W.element.remove(),W=void 0),W||(W=de($),T.set($.key,W)),f.children[V]!==W.element&&f.insertBefore(W.element,f.children[V]??null),W.remove.hidden=B,B?W.remove.remove():W.remove.isConnected||W.element.lastElementChild?.append(W.remove);for(let F of W.cells){let D=Q[`${t}.${$.key}.${F.name}`];F.error.hidden=!D,F.error.textContent=D??"",F.widget.update({value:$.values[F.name],values:$.values,readonly:B||F.def.readonly===!0,required:F.def.required===!0,invalid:!!D})}});for(let[$,V]of w){let W=K.filter(F=>!Me(l,F.values)).reduce((F,D)=>F+Number(D.values[$]??0),0);V.textContent=et(l.fields[$],W,K[0]?.values??{},d)}z&&T.has(z)&&(T.get(z)?.cells[0]?.widget.focus(),z=null)}}};function Vr(e){return new Promise((t,n)=>{let i=new FileReader;i.onload=()=>{let a=String(i.result??"");t({name:e.name,type:e.type,size:e.size,data:a.slice(a.indexOf(",")+1)})},i.onerror=()=>n(i.error),i.readAsDataURL(e)})}function Ln(e){return({form:t,name:n,field:i,id:a,document:r,labels:o=ge.en})=>{let d=r.createElement("div");d.className=`fd-file fd-file-${e}`;let s=r.createElement("input");s.type="file",s.id=a,s.className="fd-sr-only";let l=i.type==="binary"?i.accept:e==="image"?["image/*"]:void 0;l&&(s.accept=l.join(","));let u=r.createElement("img");u.className="fd-image-preview",u.alt=i.label,u.hidden=!0;let h=r.createElement("label");h.className=e==="image"?"fd-file-pick fd-image-pick":"fd-file-pick",h.htmlFor=a;let x=r.createElement("span");x.className="fd-button",x.textContent=e==="image"?o.uploadImage:o.upload;let g=r.createElement("span");g.className="fd-help",g.textContent=o.dropHere,h.append(x,g);let m=r.createElement("div");m.className="fd-file-chosen";let c=r.createElement("span");c.className="fd-file-name";let v=r.createElement("button");v.type="button",v.className="fd-button fd-button-link",v.textContent=o.replace,v.addEventListener("click",()=>s.click());let b=r.createElement("button");b.type="button",b.className="fd-button fd-button-link",b.textContent=o.removeFile,b.addEventListener("click",()=>t.setValue(n,null)),m.append(c,v,b),d.append(s,...e==="image"?[u]:[],h,m);let f=!1,L=async w=>{!w||f||t.setValue(n,await Vr(w))};return s.addEventListener("change",()=>{L(s.files?.[0]),s.value=""}),d.addEventListener("dragover",w=>{f||(w.preventDefault(),d.classList.add("fd-dragging"))}),d.addEventListener("dragleave",()=>d.classList.remove("fd-dragging")),d.addEventListener("drop",w=>{w.preventDefault(),d.classList.remove("fd-dragging"),L(w.dataTransfer?.files?.[0])}),{element:d,focus:()=>(h.hidden?v:s).focus(),update(w){f=w.readonly;let N=w.value;if(h.hidden=!!N||f,m.hidden=!N,v.hidden=b.hidden=f,s.disabled=f,s.setAttribute("aria-invalid",String(w.invalid)),w.describedBy&&s.setAttribute("aria-describedby",w.describedBy),c.textContent=N?`${N.name} \xB7 ${Xe(N.size)}`:"",e==="image"){let O=N?N.data?`data:${N.type};base64,${N.data}`:N.url??"":"";u.hidden=!O,u.getAttribute("src")!==O&&(O?u.src=O:u.removeAttribute("src"))}}}}}var Wt=Ln("binary"),Bt=Ln("image");var En=new Map;function Rn(e,t){let n=En.get(t);return n||(n=new Intl.NumberFormat(t,{style:"percent",maximumFractionDigits:0,numberingSystem:"latn"}),En.set(t,n)),n.format(e/100)}var tt=e=>{let{node:t,id:n,document:i,locale:a="en"}=e,r=t.options??{},o=typeof r.min=="number"?r.min:0,d=typeof r.max=="number"?r.max:100,s=typeof r.maxField=="string"?r.maxField:null,l=typeof r.color=="string"?r.color:"auto",u=r.showPercent!==!1,h=i.createElement("div");h.className="fd-progressbar",h.setAttribute("role","progressbar");let x=i.createElement("div");x.className="fd-progressbar-fill";let g=i.createElement("span");g.className="fd-progressbar-text",h.append(x,g);let m=null,c=h;return r.editable===!0?(m=Ee({...e,node:{...t,widget:void 0}}),h.setAttribute("aria-hidden","true"),c=i.createElement("div"),c.className="fd-progressbar-edit",c.append(h,m.element)):h.id=n,{element:c,focus:()=>m?.focus(),update(v){let b=typeof v.value=="number"?v.value:0,f=s?Number(v.values[s]??0):d,L=f>o?Math.min(100,Math.max(0,(b-o)/(f-o)*100)):0,w=Math.round(L*10)/10;x.style.width=`${w}%`,h.setAttribute("aria-valuenow",String(b)),h.setAttribute("aria-valuemin",String(o)),h.setAttribute("aria-valuemax",String(f)),h.setAttribute("aria-valuetext",Rn(L,a)),g.textContent=u?Rn(L,a):"",h.dataset.tone=l!=="auto"?l:L<30?"danger":L<70?"warning":"success",m?.update(v)}}};function Fn(e){return e==null?"":typeof e=="object"&&"label"in e?e.label:String(e)}var nt=({field:e,node:t,id:n,document:i,locale:a="en"})=>{let r=t.options??{},o=u=>typeof r[u]=="string"?r[u]:"",d=u=>typeof r[u]=="string"?r[u]:null,s=e.type==="integer"?0:e.type==="float"||e.type==="monetary"?e.digits?.[1]??2:null,l=i.createElement("output");return l.id=n,l.className="fd-value-text",{element:l,focus:()=>{},update({value:u,values:h}){if(u==null||u===""){l.textContent="";return}let x=s!==null&&typeof u=="number"?Pe(u,s,a):wt(u,e),g=d("prefixField"),m=d("suffixField"),c=g?Fn(h[g]):o("prefix"),v=m?Fn(h[m]):o("suffix");l.textContent=[c,x,v].filter(b=>b!=="").join(" ")}}};var kt=({form:e,name:t,field:n,node:i,id:a,document:r})=>{let o=i.options??{},d=o.clickable===!0,s=Array.isArray(o.visibleStates)?o.visibleStates:null,l=r.createElement("ol");l.className="fd-statusbar",l.id=a,l.setAttribute("aria-label",n.label);let u=c=>c&&typeof c=="object"&&"id"in c?`id:${String(c.id)}`:`v:${String(c)}`,h=n.type==="selection"?n.options.map(c=>({key:u(c.value),label:c.label,value:c.value})):[],x=n.type==="selection",g={value:void 0,readonly:!1};function m(){let{value:c,readonly:v}=g,b=c==null?null:u(c),f=h.filter(L=>!s||s.some(w=>u(w)===L.key)||L.key===b);b&&!f.some(L=>L.key===b)&&c&&typeof c=="object"&&(f=[...f,{key:b,label:c.label,value:c}]),l.replaceChildren(...f.map(L=>{let w=r.createElement("span");w.textContent=L.label;let N=r.createElement(d?"button":"span");N instanceof HTMLButtonElement&&(N.type="button",N.disabled=v,N.addEventListener("click",()=>e.setValue(t,L.value))),N.append(w),L.key===b&&N.setAttribute("aria-current","step");let O=r.createElement("li");return O.append(N),O}))}return{element:l,focus:()=>l.querySelector("button:not([disabled])")?.focus(),update(c){g={value:c.value,readonly:c.readonly},m(),x||(x=!0,e.search(t,"",20).then(v=>{h=v.map(b=>({key:u(b),label:b.label,value:b})),m()}).catch(()=>{}))}}};function An(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 Nn=e=>String(e).padStart(2,"0"),jt=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate(),Re=(e,t)=>new Date(e.getFullYear(),e.getMonth(),e.getDate()+t);function St(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 Ht(e,t){if(typeof t!="string"||!t)return null;if(e==="date"){let i=/^(\d{4})-(\d{2})-(\d{2})/.exec(t);return i?new Date(Number(i[1]),Number(i[2])-1,Number(i[3])):null}let n=new Date(t);return Number.isNaN(n.getTime())?null:n}function Lt(e,t,n){let{form:i,name:a,id:r,document:o,locale:d="en"}=t,s=t.labels??ge.en,l=d==="en"?"en-GB":d,u=new Intl.DateTimeFormat(l,{month:"long",year:"numeric",numberingSystem:"latn"}),h=new Intl.DateTimeFormat(l,{weekday:"long",day:"numeric",month:"long",year:"numeric",numberingSystem:"latn"}),x=new Intl.DateTimeFormat(l,{weekday:"short"}),g=new Intl.DateTimeFormat(l,{weekday:"long"}),m=o.createElement("button");m.type="button",m.className="fd-calendar-button";let c="http://www.w3.org/2000/svg",v=o.createElementNS(c,"svg");v.setAttribute("viewBox","0 0 16 16"),v.setAttribute("aria-hidden","true");for(let[V,W]of[["rect",{x:"2",y:"3",width:"12",height:"11",rx:"1.5"}],["path",{d:"M2 6.5h12M5 1.5v3M11 1.5v3"}]]){let F=o.createElementNS(c,V);for(let[D,H]of Object.entries(W))F.setAttribute(D,H);v.append(F)}m.append(v),m.setAttribute("aria-label",s.chooseDate),m.setAttribute("aria-haspopup","dialog"),m.setAttribute("aria-expanded","false"),m.setAttribute("aria-controls",`${r}-calendar`);let b=o.createElement("div");b.className="fd-calendar",b.id=`${r}-calendar`,b.setAttribute("role","dialog"),b.hidden=!0;let f=o.createElement("div");f.className="fd-calendar-head";let L=o.createElement("button");L.type="button",L.textContent="\u2039",L.setAttribute("aria-label",s.previousMonth);let w=o.createElement("span");w.className="fd-calendar-title",w.setAttribute("aria-live","polite");let N=o.createElement("button");N.type="button",N.textContent="\u203A",N.setAttribute("aria-label",s.nextMonth),f.append(L,w,N);let O=o.createElement("table");O.className="fd-calendar-grid",O.setAttribute("role","grid"),b.append(f,O);let T=o.createElement("span");T.className="fd-date-pick",T.append(e.element,m,b);let z=new Date,B=!1;function J(V){if(n==="date")i.setValue(a,`${V.getFullYear()}-${Nn(V.getMonth()+1)}-${Nn(V.getDate())}`);else{let W=Ht("datetime",i.getState().values[a]),F=new Date(V.getFullYear(),V.getMonth(),V.getDate(),W?.getHours()??0,W?.getMinutes()??0);i.setValue(a,F.toISOString())}ee()}function de(V){let W=Ht(n,i.getState().values[a]),F=new Date,D=u.format(z);w.textContent=D,b.setAttribute("aria-label",D);let H=new Date(z.getFullYear(),z.getMonth(),1),ne=Re(H,-((H.getDay()+6)%7)),re=o.createElement("tr"),me=o.createElement("th");me.scope="col",me.textContent=s.weekShort,me.setAttribute("abbr",s.week),re.append(me);for(let ce=0;ce<7;ce++){let y=Re(ne,ce),S=o.createElement("th");S.scope="col",S.textContent=x.format(y).replace(/\.$/,""),S.setAttribute("abbr",g.format(y)),re.append(S)}let ue=o.createElement("thead");ue.append(re);let pe=o.createElement("tbody");for(let ce=ne;ce<=new Date(z.getFullYear(),z.getMonth()+1,0);ce=Re(ce,7)){let y=o.createElement("tr"),S=o.createElement("th");S.scope="row",S.className="fd-week",S.textContent=String(An(ce)),y.append(S);for(let A=0;A<7;A++){let R=Re(ce,A),k=o.createElement("td"),E=o.createElement("button");E.type="button",E.textContent=String(R.getDate()),E.setAttribute("aria-label",h.format(R)),E.tabIndex=jt(R,z)?0:-1,R.getMonth()!==z.getMonth()&&E.classList.add("fd-outside"),W&&jt(R,W)&&E.setAttribute("aria-selected","true"),jt(R,F)&&E.setAttribute("aria-current","date"),E.disabled=B,E.addEventListener("click",()=>J(R)),E.addEventListener("keydown",I=>K(I,R)),k.append(E),y.append(k)}pe.append(y)}O.replaceChildren(ue,pe),V&&O.querySelector('button[tabindex="0"]')?.focus()}function _(V){z=V,de(!0)}function K(V,W){let F={ArrowLeft:()=>Re(W,-1),ArrowRight:()=>Re(W,1),ArrowUp:()=>Re(W,-7),ArrowDown:()=>Re(W,7),PageUp:()=>St(W,-1),PageDown:()=>St(W,1),Home:()=>Re(W,-((W.getDay()+6)%7)),End:()=>Re(W,6-(W.getDay()+6)%7)};F[V.key]?(V.preventDefault(),_(F[V.key]())):(V.key==="Enter"||V.key===" ")&&(V.preventDefault(),J(W))}function Q(){z=Ht(n,i.getState().values[a])??new Date,b.hidden=!1,m.setAttribute("aria-expanded","true"),de(!0)}function ee(){b.hidden||(b.hidden=!0,m.setAttribute("aria-expanded","false"),m.focus())}m.addEventListener("click",()=>b.hidden?Q():ee()),L.addEventListener("click",()=>{z=St(z,-1),de(!1)}),N.addEventListener("click",()=>{z=St(z,1),de(!1)}),b.addEventListener("keydown",V=>{V.key==="Escape"&&(V.preventDefault(),V.stopPropagation(),ee())});let $=V=>{!b.hidden&&!T.contains(V.target)&&(b.hidden=!0,m.setAttribute("aria-expanded","false"))};return o.addEventListener("mousedown",$),{element:T,focus:()=>e.focus(),update(V){B=V.readonly,m.hidden=V.readonly,V.readonly&&(b.hidden=!0),e.update(V)},destroy(){o.removeEventListener("mousedown",$),e.destroy?.()}}}var Ir=e=>{let t=e.replace(/_/g," ").trim();return t.charAt(0).toUpperCase()+t.slice(1)};function Or(e,t){let n=Ir(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 qt=e=>{let{form:t,name:n,field:i,node:a,id:r,document:o}=e,d=i.type==="properties"?i.definitions:void 0,s=()=>{let m=t.getState().values[n];return m&&typeof m=="object"&&!Array.isArray(m)?m:{}},l={...t,getState:()=>({...t.getState(),values:s()}),setValue:(m,c)=>t.setValue(n,{...s(),[m]:c})},u=o.createElement("div");u.className="fd-properties",u.setAttribute("role","group");let h=[],x="";function g(m){for(let c of h)c.widget.destroy?.();h=m.map(c=>{let v=`${r}-${c.name}`,b={type:c.type,label:c.label,...c.options?{options:c.options}:{}},f={type:"field",id:`${a.id}.${c.name}`,field:c.name},L=Ee({...e,form:l,name:c.name,field:b,node:f,id:v});return{definition:c,widget:L}}),u.replaceChildren(...h.map(({definition:c,widget:v})=>{let b=o.createElement("div");b.className="fd-property",b.dataset.type=c.type;let f=o.createElement("label");return f.htmlFor=`${r}-${c.name}`,f.textContent=c.label,b.append(f,v.element),b}))}return{element:u,focus:()=>h[0]?.widget.focus(),destroy:()=>h.forEach(m=>m.widget.destroy?.()),update(m){let c=s(),v=d??Object.keys(c).map(f=>Or(f,c[f])),b=JSON.stringify(v);b!==x&&(x=b,g(v));for(let{definition:f,widget:L}of h)L.update({value:c[f.name]??null,values:c,readonly:m.readonly,required:!1,invalid:!1})}}};var Dr=new Set(["P","BR","B","STRONG","I","EM","U","S","UL","OL","LI","A","H1","H2","H3","H4","BLOCKQUOTE","CODE","PRE","SPAN","DIV"]),Pr=new Set(["SCRIPT","STYLE","IFRAME","OBJECT","EMBED","TEMPLATE","NOSCRIPT","SVG","MATH"]),zr=new Set(["P","DIV","H1","H2","H3","H4","LI","BLOCKQUOTE","PRE"]),Wr=new Set(["left","center","right","justify","start","end"]);function Jt(e,t=globalThis.document){let n=t.createElement("template");n.innerHTML=e;let i=r=>{for(let o of[...r.childNodes]){if(o.nodeType===Node.TEXT_NODE)continue;if(o.nodeType!==Node.ELEMENT_NODE){o.remove();continue}let d=o;if(Pr.has(d.tagName)){d.remove();continue}if(i(d),!Dr.has(d.tagName)){d.replaceWith(...d.childNodes);continue}let s=d.tagName==="A"?d.getAttribute("href"):null,l=zr.has(d.tagName)?d.style?.textAlign?.trim().toLowerCase():"";for(let u of[...d.attributes])d.removeAttribute(u.name);s&&/^(https?:|mailto:)/i.test(s.trim())&&d.setAttribute("href",s.trim()),l&&Wr.has(l)&&d.setAttribute("style",`text-align: ${l};`)}};i(n.content);let a=t.createElement("div");return a.append(n.content),a.innerHTML}function Tn(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 Mn=[["bold","bold","<b>B</b>"],["italic","italic","<i>I</i>"],["underline","underline","<u>U</u>"],["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>']],Ut=({form:e,name:t,node:n,id:i,document:a,labels:r=ge.en})=>{let o=a.createElement("div");o.id=i,o.className="fd-input fd-richtext",o.setAttribute("role","textbox"),o.setAttribute("aria-multiline","true"),o.setAttribute("contenteditable","true");let d=n.options?.toolbar!==!1,s="";o.addEventListener("input",()=>{let h=Jt(o.innerHTML,a);s=h,e.setValue(t,h.trim()===""?null:h)}),o.addEventListener("blur",()=>{o.innerHTML!==s&&(o.innerHTML=s)});let l=d?Br(o,a,r):null,u=o;return l&&(u=a.createElement("div"),u.className="fd-richtext-box",u.setAttribute("role","group"),o.setAttribute("aria-labelledby",`${i}-label`),u.append(l.bar,l.linkRow,o)),{element:u,focus:()=>o.focus(),destroy:()=>l?.destroy(),update(h){l&&(l.bar.hidden=h.readonly,h.readonly&&(l.linkRow.hidden=!0));let x=Jt(typeof h.value=="string"?h.value:"",a);(x!==s||a.activeElement!==o)&&(o.innerHTML!==x&&(o.innerHTML=x),s=x),o.setAttribute("contenteditable",String(!h.readonly)),o.setAttribute("aria-readonly",String(h.readonly)),o.setAttribute("aria-invalid",String(h.invalid)),h.describedBy&&o.setAttribute("aria-describedby",h.describedBy)}}};function Br(e,t,n){let i=t.createElement("div");i.className="fd-richtext-bar",i.setAttribute("role","toolbar"),i.setAttribute("aria-label",n.formatting);let a=null,r=()=>{e.focus();let c=t.getSelection();a&&c&&(c.removeAllRanges(),c.addRange(a))},o=(c,v)=>{r(),t.execCommand?.(c,!1,v)},d=t.createElement("select");d.className="fd-richtext-style",d.setAttribute("aria-label",n.textStyle);for(let[c,v]of[["p","paragraph"],["h2","heading"],["h3","subheading"]]){let b=t.createElement("option");b.value=c,b.textContent=n[v],d.append(b)}d.addEventListener("change",()=>o("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 u=t.createElement("button");u.type="button",u.className="fd-button fd-link-apply",u.textContent=n.applyLink;let h=t.createElement("button");h.type="button",h.className="fd-button fd-button-link fd-link-remove",h.textContent=n.removeLink,s.append(l,u,h),u.addEventListener("click",()=>{let c=Tn(l.value);if(!c){l.setAttribute("aria-invalid","true");return}l.setAttribute("aria-invalid","false"),r(),t.execCommand?.("createLink",!1,c),s.hidden=!0}),h.addEventListener("click",()=>{r(),t.execCommand?.("unlink",!1),s.hidden=!0}),l.addEventListener("keydown",c=>{c.key==="Enter"?(c.preventDefault(),u.click()):c.key==="Escape"&&(c.preventDefault(),s.hidden=!0,r())});let x=Mn.map(([c,v,b])=>{let f=t.createElement("button");return f.type="button",f.className="fd-richtext-tool",f.setAttribute("aria-label",n[c]),f.title=n[c],f.innerHTML=b,f.querySelector("svg")?.setAttribute("aria-hidden","true"),["bold","italic","underline"].includes(v)&&f.setAttribute("aria-pressed","false"),f.addEventListener("mousedown",L=>L.preventDefault()),f.addEventListener("click",()=>{if(v!=="createLink")return o(v);s.hidden=!1,l.value="",l.focus()}),f});i.append(d,...x);let g=[d,...x];g.forEach((c,v)=>c.tabIndex=v===0?0:-1),i.addEventListener("keydown",c=>{if(c.key!=="ArrowRight"&&c.key!=="ArrowLeft")return;let v=g.indexOf(t.activeElement);if(v<0)return;let b=getComputedStyle(i).direction==="rtl",f=c.key==="ArrowRight"!==b?1:-1,L=g[(v+f+g.length)%g.length];c.preventDefault(),g.forEach(w=>w.tabIndex=w===L?0:-1),L.focus()});let m=()=>{let c=t.getSelection();if(!c||!c.rangeCount||!e.contains(c.anchorNode))return;a=c.getRangeAt(0).cloneRange();for(let b of x){let f=Mn[x.indexOf(b)][1];b.hasAttribute("aria-pressed")&&b.setAttribute("aria-pressed",String(t.queryCommandState?.(f)??!1))}let v=String(t.queryCommandValue?.("formatBlock")??"").toLowerCase().replace(/[<>]/g,"");d.value=v==="h2"||v==="h3"?v:"p"};return t.addEventListener("selectionchange",m),{bar:i,linkRow:s,destroy:()=>t.removeEventListener("selectionchange",m)}}var _t=({form:e,name:t,id:n,document:i,labels:a=ge.en})=>{let r=i.createElement("div");r.className="fd-json";let o=i.createElement("textarea");o.id=n,o.className="fd-input fd-textarea fd-code",o.spellcheck=!1;let d=i.createElement("div");return d.className="fd-cell-error",d.hidden=!0,r.append(o,d),o.addEventListener("input",()=>{if(o.value.trim()===""){d.hidden=!0,e.setValue(t,null);return}try{let s=JSON.parse(o.value);d.hidden=!0,e.setValue(t,s)}catch{d.hidden=!1,d.textContent=a.invalidJson}}),{element:r,focus:()=>o.focus(),update(s){if(i.activeElement!==o){let l=s.value===null||s.value===void 0?"":JSON.stringify(s.value,null,2);o.value!==l&&(o.value=l)}o.readOnly=s.readonly,o.setAttribute("aria-invalid",String(s.invalid||!d.hidden))}}};function Ee(e,t={}){let{field:n,node:i}=e,a=[i.widget?`${n.type}.${i.widget}`:null,n.type==="selection"&&n.multiple?"selection.checkboxes":null,n.type].filter(r=>r!==null);for(let r of a){let o=t[r]??On[r];if(o)return o(e)}return Gr(e)}function be(e,t,n={},...i){let a=e.createElement(t);for(let[r,o]of Object.entries(n))o!==void 0&&a.setAttribute(r,o);return a.append(...i),a}function Ne(e,t){e.setAttribute("aria-invalid",String(t.invalid)),e.setAttribute("aria-required",String(t.required)),t.describedBy?e.setAttribute("aria-describedby",t.describedBy):e.removeAttribute("aria-describedby")}var Rt=e=>e==null?"":String(e);function rt(e){return({form:t,name:n,field:i,node:a,id:r,document:o})=>{let d=be(o,"input",{id:r,type:e,class:"fd-input",autocomplete:"off"});return i.type==="char"&&i.size!==void 0&&(d.maxLength=i.size),a.placeholder&&(d.placeholder=a.placeholder),d.addEventListener("input",()=>t.setValue(n,d.value===""?null:d.value)),{element:d,focus:()=>d.focus(),update(s){let l=Rt(s.value);d.value!==l&&(d.value=l),d.readOnly=s.readonly,Ne(d,s)}}}}var jr=({form:e,name:t,field:n,node:i,id:a,document:r})=>{let o=be(r,"textarea",{id:a,class:"fd-input fd-textarea",rows:"3"});return n.type==="text"&&n.size!==void 0&&(o.maxLength=n.size),i.placeholder&&(o.placeholder=i.placeholder),o.addEventListener("input",()=>e.setValue(t,o.value===""?null:o.value)),{element:o,focus:()=>o.focus(),update(d){let s=Rt(d.value);o.value!==s&&(o.value=s),o.readOnly=d.readonly,Ne(o,d)}}},Hr=/^-?(\d+\.?\d*|\.\d+)$/,qr=/^-?\.?$/,Gt=e=>{let{form:t,name:n,field:i,node:a,id:r,document:o,locale:d="en"}=e,s=i.type==="integer",l=s?0:(i.type==="float"||i.type==="monetary"?i.digits?.[1]:void 0)??2,u=N=>typeof N=="number"?Pe(N,l,d):Rt(N),h=be(o,"input",{id:r,type:"text",class:"fd-input fd-number-input",autocomplete:"off"});h.inputMode=s?"numeric":"decimal",a.placeholder&&(h.placeholder=a.placeholder);let x=N=>{let O=Vt(N.trim(),d);if(O==="")return null;if(Hr.test(O))return Number(O);if(!qr.test(O))return O};h.addEventListener("input",()=>{let N=x(h.value);N!==void 0&&t.setValue(n,N)}),h.addEventListener("blur",()=>{h.value=u(t.getState().values[n])});let g=a.options??{},m=i.type==="monetary"?i.currencyField:void 0,c=m?t.page.fields[m]:void 0,v=m&&c&&g.pickCurrency===!0?Ee({...e,name:m,field:c,node:{type:"field",id:`${a.id}.currency`,field:m},id:`${r}-currency`}):null;v&&c&&v.element.querySelector("input, select")?.setAttribute("aria-label",c.label),v?.element.matches("input, select")&&c&&v.element.setAttribute("aria-label",c.label);let b=i.type==="monetary"&&!v?be(o,"span",{class:"fd-currency","aria-hidden":"true"}):null,f=v?.element??b,L=g.symbol==="after";return{element:f?be(o,"span",{class:`fd-number${L?" fd-currency-after":""}${v?" fd-currency-picked":""}`},...L?[h,f]:[f,h]):h,focus:()=>h.focus(),update(N){let O=o.activeElement===h,T=x(h.value),z=T===void 0||T===N.value;if(!(O&&z)){let B=u(N.value);h.value!==B&&(h.value=B)}if(h.readOnly=N.readonly,Ne(h,N),v&&m&&v.update({value:N.values[m],values:N.values,readonly:N.readonly,required:!1,invalid:!1}),b&&i.type==="monetary"){let B=i.currencyField?N.values[i.currencyField]:null;b.textContent=B&&typeof B=="object"&&"label"in B?B.label:typeof B=="string"?B:i.currency??""}}}};function Cn(e){return({form:t,name:n,id:i,document:a})=>{let r=be(a,"input",{id:i,type:"checkbox",class:e?"fd-switch":"fd-checkbox",role:e});return r.addEventListener("change",()=>t.setValue(n,r.checked)),{element:r,focus:()=>r.focus(),update(o){r.checked=o.value===!0,r.disabled=o.readonly,Ne(r,o)}}}}function In(e){return e.type==="selection"?e.options:[]}var Jr=({form:e,name:t,field:n,id:i,document:a})=>{let r=In(n),o=be(a,"select",{id:i,class:"fd-input fd-select"},be(a,"option",{value:""}));return r.forEach((d,s)=>o.append(be(a,"option",{value:String(s)},d.label))),o.addEventListener("change",()=>e.setValue(t,o.value===""?null:r[Number(o.value)].value)),{element:o,focus:()=>o.focus(),update(d){let s=r.findIndex(l=>l.value===d.value);o.value=s===-1?"":String(s),o.disabled=d.readonly,Ne(o,d)}}};function $n(e){return({form:t,name:n,field:i,id:a,document:r})=>{let o=In(i),d=be(r,"div",{id:a,class:`fd-choices fd-choices-${e}`,role:e==="radio"?"radiogroup":"group"}),s=o.map((l,u)=>{let h=be(r,"input",{type:e,name:a,value:String(u),id:`${a}-${u}`});return d.append(be(r,"label",{class:"fd-choice",for:`${a}-${u}`},h,be(r,"span",{},l.label))),h});return d.addEventListener("change",()=>{if(e==="radio"){let l=s.findIndex(u=>u.checked);t.setValue(n,l===-1?null:o[l].value)}else t.setValue(n,o.filter((l,u)=>s[u].checked).map(l=>l.value))}),{element:d,focus:()=>(s.find(l=>l.checked)??s[0])?.focus(),update(l){let u=Array.isArray(l.value)?l.value:[l.value];s.forEach((h,x)=>{h.checked=u.includes(o[x].value),h.disabled=l.readonly}),Ne(d,l)}}}}function Vn(e){return({form:t,name:n,field:i,id:a,document:r})=>{let o="min"in i&&i.min!==void 0?i.min:e==="rating"?1:0,d="max"in i&&i.max!==void 0?i.max:e==="rating"?5:10,s=be(r,"div",{id:a,class:`fd-points fd-${e}`,role:"radiogroup"}),l=[];for(let u=o;u<=d;u++){let h=be(r,"button",{type:"button",role:"radio","aria-label":`${u} of ${d}`,"data-value":String(u)},e==="rating"?"\u2605":String(u));e==="scale"&&h.removeAttribute("aria-label"),h.addEventListener("click",()=>t.setValue(n,u)),l.push(h),s.append(h)}return s.addEventListener("keydown",u=>{let h=t.getState().values[n],x=typeof h=="number"?h:o-1,g=u.key==="ArrowRight"||u.key==="ArrowUp"?1:u.key==="ArrowLeft"||u.key==="ArrowDown"?-1:0;if(!g)return;u.preventDefault();let m=Math.min(d,Math.max(o,x+g));t.setValue(n,m),l[m-o]?.focus()}),{element:s,focus:()=>(l.find(u=>u.getAttribute("aria-checked")==="true")??l[0])?.focus(),update(u){let h=typeof u.value=="number"?u.value:null;l.forEach((x,g)=>{let m=o+g;x.setAttribute("aria-checked",String(m===h)),x.classList.toggle("fd-on",e==="rating"?h!==null&&m<=h:m===h),x.tabIndex=m===h||h===null&&g===0?0:-1,x.disabled=u.readonly}),Ne(s,u)}}}}var Ur=e=>{let{form:t,name:n,id:i,document:a,node:r}=e,o=be(a,"input",{id:i,type:"date",class:"fd-input fd-date"});o.addEventListener("input",()=>t.setValue(n,o.value||null));let d={element:o,focus:()=>o.focus(),update(s){let l=Rt(s.value);o.value!==l&&(o.value=l),o.readOnly=s.readonly,Ne(o,s)}};return r.options?.weekNumbers===!0?Lt(d,e,"date"):d},Et=e=>String(e).padStart(2,"0"),_r=e=>{let{form:t,name:n,id:i,document:a,node:r}=e,o=be(a,"input",{id:i,type:"datetime-local",class:"fd-input fd-datetime"}),d=l=>{if(typeof l!="string"||!l)return"";let u=new Date(l);return Number.isNaN(u.getTime())?"":`${u.getFullYear()}-${Et(u.getMonth()+1)}-${Et(u.getDate())}T${Et(u.getHours())}:${Et(u.getMinutes())}`};o.addEventListener("input",()=>{if(!o.value)return t.setValue(n,null);let l=new Date(o.value);Number.isNaN(l.getTime())||t.setValue(n,l.toISOString())});let s={element:o,focus:()=>o.focus(),update(l){let u=d(l.value);o.value!==u&&(o.value=u),o.readOnly=l.readonly,Ne(o,l)}};return r.options?.weekNumbers===!0?Lt(s,e,"datetime"):s};function Gr({field:e,id:t,document:n}){let i=be(n,"span",{id:t,class:"fd-pending","data-fd-pending":e.type});return{element:i,focus:()=>{},update(a){i.textContent=wt(a.value,e)}}}function wt(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.name;case"html":return String(e).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();default:return typeof e=="object"?JSON.stringify(e):String(e)}}var On={char:rt("text"),"char.email":rt("email"),"char.phone":rt("tel"),"char.url":rt("url"),"char.password":rt("password"),"char.tags":Ot,text:jr,integer:Gt,float:Gt,monetary:Gt,"integer.rating":Vn("rating"),"integer.scale":Vn("scale"),"integer.progressbar":tt,"integer.label":nt,"float.label":nt,"monetary.label":nt,"float.progressbar":tt,"monetary.progressbar":tt,boolean:Cn(),"boolean.toggle":Cn("switch"),selection:Jr,"selection.radio":$n("radio"),"selection.checkboxes":$n("checkbox"),"selection.statusbar":kt,date:Ur,datetime:_r,many2one:It,"many2one.statusbar":kt,many2many:xt,"many2many.tags":xt,"many2many.checkboxes":Dt,reference:Pt,one2many:zt,binary:Wt,image:Bt,html:Ut,json:_t,properties:qt};var Pn='.fd-form,.fd-theme{--fd-font: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Arabic", sans-serif;--fd-text: #212529;--fd-muted: #6b7280;--fd-page: #f2f3f5;--fd-surface: #ffffff;--fd-border: #cfd4da;--fd-border-strong: #9aa3ad;--fd-accent: #002855;--fd-accent-text: #ffffff;--fd-accent-soft: #e6ebf2;--fd-focus: #002855;--fd-focus-ring: none;--fd-error: #c62828;--fd-error-soft: #fdecea;--fd-success: #2e7d32;--fd-success-soft: #e8f5e9;--fd-warning: #8a5300;--fd-warning-soft: #fff4e0;--fd-info: #0b5cad;--fd-info-soft: #e7f0fb;--fd-radius: 0px;--fd-control-radius: 0px;--fd-pad-y: 3px;--fd-pad-x: 4px;--fd-input-border: 0 0 1px 0;--fd-label-weight: 600;--fd-gap-x: 32px;--fd-gap-y: 14px;container-type:inline-size;font-family:var(--fd-font);font-size:14px;line-height:1.45;color:var(--fd-text);-webkit-text-size-adjust:100%}.fd-form[data-fd-skin=outlined],.fd-theme[data-fd-skin=outlined]{--fd-text: rgba(0, 0, 0, .88);--fd-muted: rgba(0, 0, 0, .55);--fd-page: #f5f5f5;--fd-border: #d9d9d9;--fd-border-strong: #bfbfbf;--fd-accent: #1677ff;--fd-accent-soft: #e6f4ff;--fd-focus: #1677ff;--fd-focus-ring: 0 0 0 2px rgba(5, 145, 255, .12);--fd-error: #ff4d4f;--fd-error-soft: #fff2f0;--fd-radius: 8px;--fd-control-radius: 6px;--fd-pad-y: 4px;--fd-pad-x: 11px;--fd-input-border: 1px;--fd-label-weight: 400;--fd-gap-x: 24px;--fd-gap-y: 18px}.fd-form *,.fd-form *:before,.fd-form *:after{box-sizing:border-box}.fd-form [hidden]{display:none!important}.fd-page-head{display:grid;gap:4px;margin-block-end:20px}.fd-page-title{font-size:22px;font-weight:650;margin:0;line-height:1.25}.fd-page-description{color:var(--fd-muted);margin:0}.fd-form[data-max-width=narrow]{--fd-page-max: 640px}.fd-form[data-max-width=medium]{--fd-page-max: 900px}.fd-form[data-max-width=wide]{--fd-page-max: 1180px}.fd-form[data-max-width=full]{--fd-page-max: none}.fd-form[data-max-width]>.fd-content:not(:has(>.fd-sheet-page)){max-width:var(--fd-page-max);margin-inline:auto}.fd-actions.fd-actions-top{margin-block-start:0;padding-block-end:14px;margin-block-end:18px;border-block-end:1px solid var(--fd-border)}.fd-icon{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}.fd-section-title .fd-icon,.fd-tab .fd-icon,.fd-button .fd-icon,.fd-step-title .fd-icon{margin-inline-end:.4em}.fd-section-title .fd-icon{color:var(--fd-muted)}.fd-grid{display:grid;grid-template-columns:repeat(var(--fd-columns, 1),minmax(0,1fr));gap:var(--fd-gap-y) var(--fd-gap-x);align-items:start}.fd-field{display:grid;gap:4px;min-width:0;grid-column:span min(var(--fd-span, 1),var(--fd-columns, 1))}.fd-label{font-weight:var(--fd-label-weight);color:var(--fd-text)}.fd-valid-mark{color:var(--fd-success);width:1em;height:1em;margin-inline-start:6px;vertical-align:-.15em;stroke-width:2.4}.fd-field.fd-required>.fd-label:after{content:" *";color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:after{content:""}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:before{content:"* ";color:var(--fd-error)}.fd-help{color:var(--fd-muted);font-size:12.5px}.fd-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{grid-template-columns:var(--fd-label-width, 11em) minmax(0,1fr);column-gap:12px;align-items:baseline}.fd-form[data-fd-skin=underline] .fd-field>.fd-label{grid-column:1}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]>*{grid-column:1!important}.fd-form[data-fd-skin=underline] .fd-field>:not(.fd-label){grid-column:2}@container (max-width: 760px){.fd-form[data-fd-skin=underline] .fd-grid{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field{grid-column:auto}.fd-form .fd-grid[data-columns-medium]{grid-template-columns:repeat(var(--fd-columns-medium),minmax(0,1fr))}.fd-form .fd-grid[data-columns-medium]>.fd-field{grid-column:span min(var(--fd-span, 1),var(--fd-columns-medium))}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field>*{grid-column:1!important}}@container (max-width: 520px){.fd-grid{grid-template-columns:minmax(0,1fr)}.fd-field{grid-column:auto}.fd-form[data-fd-skin=underline] .fd-field{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field>*{grid-column:1!important}.fd-form .fd-grid[data-columns-medium],.fd-form .fd-grid[data-columns-narrow]{grid-template-columns:repeat(var(--fd-columns-narrow, 1),minmax(0,1fr))}.fd-form .fd-grid[data-columns-medium]>.fd-field,.fd-form .fd-grid[data-columns-narrow]>.fd-field{grid-column:span min(var(--fd-span, 1),var(--fd-columns-narrow, 1))}}.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:30px;transition:border-color .15s ease,box-shadow .15s ease}.fd-input::placeholder{color:var(--fd-muted);opacity:.8}.fd-input:hover{border-color:var(--fd-border-strong)}.fd-input:focus{outline:none;border-color:var(--fd-focus);box-shadow:var(--fd-focus-ring)}.fd-form[data-fd-skin=underline] .fd-input{background:transparent}.fd-form[data-fd-skin=underline] .fd-input:focus{box-shadow:0 1px 0 0 var(--fd-focus)}.fd-form[data-fd-skin=underline] .fd-field.fd-required .fd-input{border-color:var(--fd-accent)}.fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0}.fd-form[data-fd-skin=outlined] .fd-input[readonly]{background:#0000000a;border-color:var(--fd-border);padding-inline:var(--fd-pad-x);color:var(--fd-muted)}.fd-form[data-readonly] .fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text)}.fd-form[data-readonly] .fd-input::placeholder{color:transparent}.fd-form[data-readonly] select.fd-input:disabled{appearance:none;background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text);opacity:1}.fd-input[aria-invalid=true]{border-color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-input[aria-invalid=true]:focus{box-shadow:0 0 0 2px #ff26050f}.fd-textarea{resize:vertical;min-height:64px}.fd-select{appearance:auto}.fd-number{display:flex;align-items:baseline;gap:6px}.fd-number-input{font-variant-numeric:tabular-nums}.fd-currency{color:var(--fd-muted);font-size:12.5px;font-weight:600}.fd-currency-after>.fd-number-input{text-align:end}.fd-currency-picked{align-items:center}.fd-currency-picked>:not(.fd-number-input){flex:0 0 104px;min-width:0}.fd-currency-picked>.fd-number-input{flex:1 1 auto;min-width:0}.fd-pending{color:var(--fd-muted);font-style:italic}.fd-pending:empty:before{content:"\u2014"}.fd-checkbox,.fd-choice input{width:16px;height:16px;accent-color:var(--fd-accent);margin:0}.fd-switch{appearance:none;width:34px;height:20px;margin:0;border-radius:999px;position:relative;background:var(--fd-border-strong);cursor:pointer;transition:background .2s ease}.fd-switch:after{content:"";position:absolute;inset-block-start:2px;inset-inline-start:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s ease;box-shadow:0 1px 2px #00000040}.fd-switch:checked{background:var(--fd-accent)}.fd-switch:checked:after{transform:translate(14px)}[dir=rtl] .fd-switch:checked:after{transform:translate(-14px)}.fd-choices{display:flex;flex-wrap:wrap;gap:6px 18px}.fd-choice{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.fd-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:28px}.fd-combo-clear{position:absolute;inset-inline-end:4px;border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:2px 6px;border-radius:4px}.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:52px}.fd-combo-open{position:absolute;inset-inline-end:28px;border:none;background:none;cursor:pointer;color:var(--fd-accent);font-size:14px;line-height:1;padding:2px 6px;border-radius:4px}.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}.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-line-delete{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:4px 6px;border-radius:4px}.fd-line-delete:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-lines-totals td{padding:8px;font-weight:600;border-block-start:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-lines-adds{display:flex;flex-wrap:wrap;gap:4px 16px;justify-self:start}.fd-line-section td{background:var(--fd-page)}.fd-line-section .fd-input{font-weight:600}.fd-line-note .fd-input{font-style:italic}.fd-cell-error{color:var(--fd-error);font-size:12px}.fd-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-file{display:grid;gap:8px;justify-items:start;padding:6px 0;border-radius:var(--fd-control-radius)}.fd-file.fd-dragging{outline:2px dashed var(--fd-accent);outline-offset:4px}.fd-file-pick{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center;cursor:pointer}.fd-file-chosen{display:inline-flex;flex-wrap:wrap;gap:4px 10px;align-items:center}.fd-file-name{font-variant-numeric:tabular-nums}.fd-image-pick{width:120px;height:120px;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);display:grid;place-content:center;justify-items:center;text-align:center;padding:8px;background:var(--fd-page)}.fd-avatar .fd-image-pick{width:88px;height:88px}.fd-image-preview{max-width:160px;max-height:160px;border-radius:var(--fd-control-radius);border:1px solid var(--fd-border);object-fit:cover;background:var(--fd-page)}.fd-richtext{min-height:96px;line-height:1.5;overflow-wrap:anywhere}.fd-richtext-box{display:grid;gap:0;min-width:0}.fd-richtext-box>.fd-richtext{border-start-start-radius:0;border-start-end-radius:0}.fd-richtext-bar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:4px;min-width:0;border:1px solid var(--fd-border);border-block-end:none;border-start-start-radius:var(--fd-control-radius);border-start-end-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-richtext-style{font:inherit;font-size:12.5px;padding:3px 6px;margin-inline-end:4px;border:1px solid var(--fd-border);border-radius:4px;background:var(--fd-surface);color:var(--fd-text)}.fd-richtext-tool{display:grid;place-items:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:none;cursor:pointer;color:var(--fd-text);font:inherit;font-size:14px}.fd-richtext-tool:hover{background:var(--fd-surface)}.fd-richtext-tool[aria-pressed=true]{background:var(--fd-accent-soft);color:var(--fd-accent)}.fd-richtext-tool svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round}.fd-richtext-tool svg circle{fill:currentColor;stroke:none}.fd-link-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px;border:1px solid var(--fd-border);border-block-end:none;background:var(--fd-surface)}.fd-link-row>.fd-input{flex:1 1 200px;min-width:0}.fd-richtext[contenteditable=false]{background:transparent;border-color:transparent;padding-inline:0;min-height:0}.fd-richtext p{margin:0 0 6px}.fd-code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12.5px;min-height:96px}.fd-sections{display:grid;gap: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] .fd-sections>.fd-section{background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);padding:20px 24px}.fd-tablist{display:flex;gap:2px;border-block-end:1px solid var(--fd-border);overflow-x:auto}.fd-tab{font:inherit;background:none;border:none;cursor:pointer;padding:8px 14px;color:var(--fd-muted);border-block-end:2px solid transparent;margin-block-end:-1px;white-space:nowrap}.fd-tab[aria-selected=true]{color:var(--fd-accent);border-block-end-color:var(--fd-accent);font-weight:600}.fd-tabpanel{padding-block:16px;display:grid;gap:16px}.fd-button{font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px;justify-content:center;min-height:32px;padding:4px 14px;border-radius:var(--fd-control-radius);border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-text)}.fd-button:hover{border-color:var(--fd-accent);color:var(--fd-accent)}.fd-button-primary{background:var(--fd-accent);border-color:var(--fd-accent);color:var(--fd-accent-text)}.fd-button-primary:hover{color:var(--fd-accent-text);filter:brightness(1.12)}.fd-button-danger{color:var(--fd-error);border-color:var(--fd-error)}.fd-button-danger:hover{background:var(--fd-error);color:#fff}.fd-button-link{border-color:transparent;background:none;color:var(--fd-accent);padding-inline:4px}.fd-form[data-fd-skin=underline] .fd-button{border-radius:3px}.fd-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.fd-actions-end{justify-content:flex-end;margin-block-start:24px}.fd-sheet-page{background:var(--fd-page);padding:0 0 32px;min-width:0}.fd-header{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;background:var(--fd-surface);border-block-end:1px solid var(--fd-border);padding:8px 16px}.fd-statusbar{display:flex;list-style:none;margin:0;padding:0;overflow-x:auto}.fd-statusbar li{display:flex}.fd-statusbar li>*{font:inherit;font-size:13px;border:none;background:var(--fd-page);color:var(--fd-muted);padding:5px 18px 5px 22px;margin-inline-start:-6px;white-space:nowrap;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%,10px 50%)}.fd-statusbar li:first-child>*{margin-inline-start:0;padding-inline-start:14px;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%)}.fd-statusbar li>button{cursor:pointer}.fd-statusbar li>[aria-current=step]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}[dir=rtl] .fd-statusbar li>*{transform:scaleX(-1)}[dir=rtl] .fd-statusbar li>*>*{display:inline-block;transform:scaleX(-1)}.fd-sheet-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;max-width:var(--fd-page-max, 1180px);margin:16px auto 0;padding-inline:16px}.fd-sheet-layout{align-items:start}.fd-sheet-foot{margin:4px -28px -28px;padding:12px 28px;border-block-start:1px solid var(--fd-border);border-end-start-radius:inherit;border-end-end-radius:inherit}.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr) minmax(260px,360px)}@container (max-width: 1000px){.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr)}}.fd-card{position:relative;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);padding:24px 28px 28px;display:grid;gap:18px;min-width:0;container-type:inline-size}.fd-ribbon-frame{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}.fd-ribbon{position:absolute;inset-block-start:18px;inset-inline-end:-42px;transform:rotate(45deg);width:160px;text-align:center;font-size:12px;font-weight:700;padding:4px 0;color:#fff;background:var(--fd-muted);text-transform:uppercase;letter-spacing:.06em;pointer-events:none}[dir=rtl] .fd-ribbon{transform:rotate(-45deg)}.fd-ribbon.fd-tone-danger{background:var(--fd-error)}.fd-ribbon.fd-tone-success{background:var(--fd-success)}.fd-ribbon.fd-tone-warning{background:#d97706}.fd-ribbon.fd-tone-info{background:var(--fd-info)}.fd-alert{padding:10px 14px;border-radius:var(--fd-control-radius);border:1px solid;font-size:13.5px;display:flex;align-items:flex-start;gap:10px}.fd-alert-message{flex:1 1 auto;min-width:0}.fd-alert-close{border:none;background:none;color:inherit;cursor:pointer;font:inherit;font-size:18px;line-height:1;padding:0 4px;border-radius:4px;opacity:.75}.fd-alert-close:hover{opacity:1}.fd-alert-close:focus-visible{outline:2px solid var(--fd-focus);opacity:1}.fd-alert.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-alert.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-alert.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-alert.fd-tone-info,.fd-alert:not([class*=fd-tone-]){background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-stats{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0;margin:-24px -28px 0;border-block-end:1px solid var(--fd-border)}.fd-stats:empty{display:none}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden])) .fd-stats{padding-inline-end:104px}.fd-stat{font:inherit;background:none;border:none;border-inline-start:1px solid var(--fd-border);cursor:pointer;padding:8px 18px;display:grid;justify-items:start;line-height:1.2;color:var(--fd-text);min-width:120px}.fd-stat:hover{background:var(--fd-page)}.fd-stat:has(>.fd-icon){grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:10px}.fd-stat>.fd-icon{width:22px;height:22px;color:var(--fd-muted)}.fd-stat-words{display:grid;justify-items:start}.fd-stat-value{font-weight:700;font-size:15px;color:var(--fd-accent);font-variant-numeric:tabular-nums}.fd-stat-label{font-size:12.5px;color:var(--fd-muted)}.fd-title-row{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.fd-title{display:grid;gap:4px;flex:1 1 auto;min-width:0}.fd-avatar{flex:none}.fd-avatar>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-form[data-fd-skin=underline] .fd-avatar{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-avatar>*{grid-column:1!important}.fd-avatar .fd-image-pick{width:120px;height:120px;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);display:grid;place-content:center;justify-items:center;text-align:center;padding:8px;background:var(--fd-page)}.fd-image-pick .fd-button{border:none;background:none;color:var(--fd-accent);padding:0;min-height:0}.fd-image-pick:hover{border-color:var(--fd-accent)}.fd-avatar .fd-image-pick,.fd-image-preview{width:88px;height:88px}.fd-avatar .fd-file-pick .fd-help,.fd-avatar .fd-file-name{display:none}.fd-avatar .fd-file{justify-items:center;gap:2px;padding:0}.fd-avatar .fd-file-chosen{gap:2px 8px;justify-content:center;font-size:12.5px}.fd-title>.fd-field .fd-input{font-size:24px;font-weight:600;min-height:40px}.fd-form[data-fd-skin=underline] .fd-title>.fd-field{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-title>.fd-field>*{grid-column:1}.fd-title>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-above,.fd-title-below{display:flex;flex-wrap:wrap;align-items:center;gap:6px 24px}.fd-title-above{margin-block-end:4px}.fd-title-below{margin-block-start:6px}.fd-form .fd-title-above>.fd-field,.fd-form .fd-title-below>.fd-field{display:flex;align-items:center;gap:8px;grid-template-columns:none}.fd-form .fd-title-above>.fd-field>*,.fd-form .fd-title-below>.fd-field>*{grid-column:auto!important}.fd-title-above .fd-label:empty,.fd-title-below .fd-label:empty{display:none}.fd-title-above>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-statusbar{display:flex}.fd-badges{display:flex;flex-wrap:wrap;gap:6px}.fd-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;line-height:1;padding:5px 10px;border-radius:999px;border:1px solid var(--fd-border);background:var(--fd-page);color:var(--fd-muted)}.fd-badge .fd-icon{width:13px;height:13px}.fd-badge.fd-tone-info{background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-badge.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-badge.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-badge.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-side{display:grid;gap:12px;align-content:start;min-width:0}.fd-wizard{display:grid;gap:20px}.fd-progress{display:grid;gap:8px}.fd-progress-text{color:var(--fd-muted);font-size:13px}.fd-value-text{display:block;padding-block:6px;font-variant-numeric:tabular-nums}.fd-date-pick{position:relative;display:flex;align-items:center;gap:6px;min-width:0}.fd-date-pick>.fd-input{flex:1 1 auto;min-width:0}.fd-calendar-button{flex:0 0 auto;display:grid;place-items:center;width:32px;height:32px;padding:0;cursor:pointer;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-surface);color:var(--fd-muted)}.fd-calendar-button:hover,.fd-calendar-button[aria-expanded=true]{color:var(--fd-text);background:var(--fd-page)}.fd-calendar-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.fd-calendar{position:absolute;inset-block-start:calc(100% + 4px);inset-inline-end:0;z-index:30;padding:8px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);box-shadow:0 8px 24px #0f141924}.fd-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 6px}.fd-calendar-head button{border:none;background:none;cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;border-radius:4px;color:var(--fd-text)}.fd-calendar-head button:hover{background:var(--fd-page)}.fd-calendar-title{font-weight:600}.fd-calendar-grid{border-collapse:collapse;font-variant-numeric:tabular-nums}.fd-calendar-grid th{font-size:11.5px;font-weight:600;color:var(--fd-muted);padding:4px 0;width:34px;text-align:center}.fd-calendar-grid .fd-week{color:var(--fd-accent);font-weight:600;border-inline-end:1px solid var(--fd-border)}.fd-calendar-grid td{padding:1px}.fd-calendar-grid td button{width:32px;height:30px;border:none;border-radius:4px;background:none;cursor:pointer;color:var(--fd-text);font:inherit;font-size:13px}.fd-calendar-grid td button:hover{background:var(--fd-accent-soft)}.fd-calendar-grid td button.fd-outside{color:var(--fd-muted);opacity:.6}.fd-calendar-grid td button[aria-current=date]{box-shadow:inset 0 0 0 1px var(--fd-accent)}.fd-calendar-grid td button[aria-selected=true]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}.fd-calendar-grid td button:focus-visible{outline:2px solid var(--fd-focus);outline-offset:1px}.fd-properties{display:grid;gap:8px;min-width:0}.fd-property{display:grid;grid-template-columns:minmax(120px,30%) minmax(0,1fr);align-items:center;gap:12px;min-width:0}.fd-property>label{color:var(--fd-muted);font-size:13px}.fd-property[data-type=boolean]>:last-child{justify-self:start}@container (max-width: 520px){.fd-property{grid-template-columns:minmax(0,1fr);gap:4px}}.fd-progressbar{position:relative;height:22px;min-width:120px;border-radius:999px;overflow:hidden;background:var(--fd-page);border:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-progressbar-fill{height:100%;background:var(--fd-success);transition:width .2s ease}.fd-progressbar[data-tone=warning] .fd-progressbar-fill{background:#d97706}.fd-progressbar[data-tone=danger] .fd-progressbar-fill{background:var(--fd-error)}.fd-progressbar[data-tone=info] .fd-progressbar-fill{background:var(--fd-info)}.fd-progressbar-text{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;font-weight:600;color:var(--fd-text)}.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-text-paragraph{margin:0}.fd-text-note{margin:0;color:var(--fd-muted);font-size:13px}.fd-status{min-height:1.4em;color:var(--fd-muted);font-size:13px}.fd-status-box{display:inline-flex;align-items:center;gap:6px;min-width:0}.fd-status-box .fd-retry{font-size:13px}.fd-announce{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 14px;margin-block-end:16px;border:1px solid #f0c47a;border-radius:var(--fd-control-radius);background:var(--fd-warning-soft);color:var(--fd-warning);font-size:13.5px}.fd-banner-text{flex:1 1 16em;min-width:0}.fd-content>.fd-banner:has(+.fd-draft+.fd-sheet-page),.fd-content>.fd-banner:has(+.fd-sheet-page){margin:12px 16px 0}.fd-status-box.fd-toast{position:fixed;inset-block-end:max(20px,env(safe-area-inset-bottom,0px));inset-inline-end:20px;z-index:900;padding:10px 16px;border-radius:8px;background:var(--fd-text);box-shadow:0 8px 24px #0f141940}.fd-toast .fd-status,.fd-toast .fd-status.fd-status-saved,.fd-toast .fd-status.fd-status-error{color:var(--fd-surface);font-size:13.5px;min-height:0}.fd-toast .fd-retry{color:var(--fd-surface);text-decoration:underline}.fd-toast:has(.fd-status-error){background:var(--fd-error)}.fd-status-box.fd-status-bar{display:flex;justify-content:center;min-height:32px;padding:6px 16px;background:var(--fd-surface);border-block-end:1px solid var(--fd-border)}.fd-status-bar .fd-status-error,.fd-status.fd-status-error{color:var(--fd-error)}.fd-status.fd-status-saved{color:var(--fd-success)}.fd-draft{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:10px 14px;margin-block-end:16px;background:var(--fd-info-soft);border:1px solid #a9c8ef;border-radius:var(--fd-control-radius)}.fd-done{padding:40px 0;text-align:center;display:grid;gap:12px;justify-items:center}.fd-done-title{font-size:20px;font-weight:650;margin:0}.fd-dialog-backdrop{position:fixed;inset:0;background:#0f141973;display:grid;place-items:center;z-index:1000;padding:16px}.fd-dialog{background:var(--fd-surface);color:var(--fd-text);border-radius:max(var(--fd-radius),6px);max-width:420px;width:100%;padding:20px 22px;display:grid;gap:16px;box-shadow:0 10px 30px #0003;font-family:var(--fd-font)}.fd-dialog p{margin:0}.fd-form-dialog{display:flex;flex-direction:column;width:100%;max-height:min(90vh,100%);min-height:0;background:var(--fd-page);color:var(--fd-text);border-radius:max(var(--fd-radius),8px);box-shadow:0 24px 64px #0f14194d;overflow:hidden}.fd-form-dialog:focus{outline:none}.fd-form-dialog.fd-size-small{max-width:440px}.fd-form-dialog.fd-size-medium{max-width:760px}.fd-form-dialog.fd-size-large{max-width:1080px}.fd-form-dialog-backdrop:has(>.fd-size-full){padding:0}.fd-form-dialog.fd-size-full{max-width:none;max-height:none;height:100%;border-radius:0}.fd-form-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-block-end:1px solid var(--fd-border);background:var(--fd-surface)}.fd-form-dialog-title{margin:0;font-size:16px;font-weight:600}.fd-dialog-close{border:none;background:none;cursor:pointer;font-size:22px;line-height:1;padding:2px 8px;border-radius:4px;color:var(--fd-muted)}.fd-dialog-close:hover{background:var(--fd-page);color:var(--fd-text)}.fd-form-dialog-body{flex:1 1 auto;min-height:0;overflow:auto;container-type:inline-size}.fd-form-dialog-body .fd-sheet-layout{margin-block-start:12px}.fd-form-dialog-body .fd-page-title{display:none}.fd-form-dialog-body .fd-page-head:not(:has(.fd-page-description)){display:none}.fd-form-dialog-body .fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr)}.fd-form-dialog-body .fd-side{display:none}.fd-search-body{display:grid;gap:12px;align-content:start}.fd-search-list{list-style:none;margin:0;padding:0;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);overflow:auto;max-height:min(60vh,520px)}.fd-search-list .fd-option{padding:8px 12px}.fd-search-list .fd-option+.fd-option{border-block-start:1px solid var(--fd-border)}.fd-search-list .fd-empty{padding:10px 12px;color:var(--fd-muted)}.fd-form-dialog-body:not(:has(.fd-sheet-layout)){background:var(--fd-surface);padding:16px 20px 20px}.fd-form-dialog-foot{padding:12px 16px;border-block-start:1px solid var(--fd-border);background:var(--fd-surface);margin:0}@media(prefers-reduced-motion:reduce){.fd-form *,.fd-form *:before,.fd-form *:after{transition:none!important}}',Dn="fieldia-styles";function Kt(e){if(e.getElementById(Dn))return;let t=e.createElement("style");t.id=Dn,t.textContent=Pn,(e.head??e.documentElement).append(t)}function Yt(e){let t=()=>{try{return e??globalThis.localStorage??null}catch{return null}};return{get(n){try{let i=t()?.getItem(`fieldia:${n}`);return i==null?null:JSON.parse(i)}catch{return null}},set(n,i){try{t()?.setItem(`fieldia:${n}`,JSON.stringify(i))}catch{}}}}function Kr(){let e=new Map;return{get:t=>e.has(t)?zn(e.get(t)):null,set:(t,n)=>{e.set(t,zn(n))}}}var zn=e=>JSON.parse(JSON.stringify(e));var Yr="http://www.w3.org/2000/svg",Wn={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"/>'};function ze(e,t,n){let i=t?n?.[t]??Wn[t]:void 0;if(i===void 0)return null;let a=e.createElementNS(Yr,"svg");for(let[r,o]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}))a.setAttribute(r,o);return a.innerHTML=i,a}var Bn=0,Zr='button, [href], input, select, textarea, [contenteditable="true"], [tabindex]:not([tabindex="-1"])';function Ft(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,i=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,a={...Ce[e.locale??"en"],...e.labels},r=`fd-dialog-${++Bn}`,o=(f,L={},w)=>{let N=t.createElement(f);for(let[O,T]of Object.entries(L))N.setAttribute(O,T);return w!==void 0&&(N.textContent=w),N},d=o("h2",{id:`${r}-title`,class:"fd-form-dialog-title"},e.title),s=o("button",{type:"button",class:"fd-dialog-close","aria-label":a.close},"\xD7"),l=o("div",{class:"fd-form-dialog-body"}),u=o("button",{type:"button",class:"fd-button"},a.discard),h=o("button",{type:"button",class:"fd-button fd-button-primary"},a.saveClose),x=o("div",{class:`fd-theme fd-form-dialog fd-size-${e.size??"medium"}`,"data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":d.id,tabindex:"-1"});e.dir&&x.setAttribute("dir",e.dir),x.append(o("div",{class:"fd-form-dialog-head"}),l,o("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"})),x.firstElementChild?.append(d,s),x.lastElementChild?.append(u,h);let g=o("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});g.append(x),n.append(g);let m=Xt(l,{...e,showActions:!1}),c=!1;e.recompute&&Xr(m.form,e.page.fields,e.recompute,()=>c);let v=()=>[...x.querySelectorAll(Zr)].filter(f=>!f.closest("[hidden], [inert]")&&!f.disabled),b=()=>l.querySelector('input:not([type="hidden"]), select, textarea, [contenteditable="true"]');return(b()??x).focus(),m.form.settled().then(()=>{(t.activeElement===x||!x.contains(t.activeElement))&&b()?.focus()}),new Promise(f=>{let L=w=>{if(c)return;c=!0;let N=m.form.getState(),O={saved:w,recordId:N.recordId??null,values:N.values};m.destroy(),g.remove(),i?.focus(),f(O)};h.addEventListener("click",async()=>{h.disabled=!0;let w=e.mode==="values"?m.check():await m.save();h.disabled=!1,w&&L(!0)}),u.addEventListener("click",()=>L(!1)),s.addEventListener("click",()=>L(!1)),x.addEventListener("keydown",w=>{if(w.key==="Enter"&&(w.ctrlKey||w.metaKey)&&!w.isComposing){if(w.target.closest(".ag-root-wrapper"))return;w.preventDefault(),t.activeElement?.dispatchEvent(new Event("change",{bubbles:!0})),h.click();return}if(!w.defaultPrevented){if(w.key==="Escape")w.preventDefault(),L(!1);else if(w.key==="Tab"){let N=v();if(!N.length)return;let O=N[0],T=N[N.length-1];w.shiftKey&&t.activeElement===O?(w.preventDefault(),T.focus()):!w.shiftKey&&t.activeElement===T&&(w.preventDefault(),O.focus())}}})})}function Xr(e,t,n,i){let a=JSON.stringify(e.getState().values),r=!1;e.subscribe(()=>{let o=e.getState().values,d=JSON.stringify(o);r||d===a||(a=d,n(o).then(s=>{if(!(i()||JSON.stringify(e.getState().values)!==d)){r=!0;for(let[l,u]of Object.entries(s))l in t&&JSON.stringify(o[l]??null)!==JSON.stringify(u??null)&&e.setValue(l,u);r=!1,a=JSON.stringify(e.getState().values)}},()=>{}))})}function Zt(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,i=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,a=Ce[e.locale??"en"],r=ge[e.locale??"en"],o=`fd-dialog-${++Bn}`,d=(f,L={},w)=>{let N=t.createElement(f);for(let[O,T]of Object.entries(L))N.setAttribute(O,T);return w!==void 0&&(N.textContent=w),N},s=d("h2",{id:`${o}-title`,class:"fd-form-dialog-title"},e.title),l=d("button",{type:"button",class:"fd-dialog-close","aria-label":a.close},"\xD7"),u=d("input",{type:"search",class:"fd-input","aria-label":r.search,placeholder:r.search,"aria-controls":`${o}-list`,autocomplete:"off"}),h=d("ul",{id:`${o}-list`,class:"fd-search-list",role:"listbox","aria-labelledby":s.id}),x=d("button",{type:"button",class:"fd-button"},a.cancel),g=d("div",{class:"fd-theme fd-form-dialog fd-search-dialog fd-size-small","data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":s.id});e.dir&&g.setAttribute("dir",e.dir);let m=d("div",{class:"fd-form-dialog-head"});m.append(s,l);let c=d("div",{class:"fd-form-dialog-body fd-search-body"});c.append(u,h);let v=d("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"});v.append(x),g.append(m,c,v);let b=d("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});return b.append(g),n.append(b),u.focus(),new Promise(f=>{let L=[],w=-1,N=0,O,T=J=>{clearTimeout(O),N++,b.remove(),i?.focus(),f(J)},z=()=>{h.replaceChildren(...L.map((J,de)=>{let _=d("li",{id:`${o}-option-${de}`,role:"option",class:`fd-option${de===w?" fd-active":""}`,"aria-selected":String(de===w)},J.label);return _.addEventListener("click",()=>T(J)),_})),L.length||h.append(d("li",{class:"fd-empty"},r.noResults)),w>=0?u.setAttribute("aria-activedescendant",`${o}-option-${w}`):u.removeAttribute("aria-activedescendant")},B=()=>{clearTimeout(O);let J=++N;O=setTimeout(async()=>{let de=await e.search(u.value,80).catch(()=>[]);J===N&&(L=de,w=-1,z())},180)};u.addEventListener("input",B),u.addEventListener("keydown",J=>{if(J.key==="ArrowDown"||J.key==="ArrowUp"){if(J.preventDefault(),!L.length)return;w=(w+(J.key==="ArrowDown"?1:-1)+L.length)%L.length,z(),h.children[w]?.scrollIntoView?.({block:"nearest"})}else J.key==="Enter"&&w>=0&&(J.preventDefault(),T(L[w]))}),x.addEventListener("click",()=>T(null)),l.addEventListener("click",()=>T(null)),g.addEventListener("keydown",J=>{J.key==="Escape"&&(J.preventDefault(),T(null))}),B()})}function Qr(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 ei(e,t,n){let i=Object.fromEntries(Object.entries(e).map(([a,r])=>[a,n?{...r,readonly:!0}:r]));return{fieldia:"0.1",id:"values",title:t,data:{kind:"record",model:"values"},fields:i,layout:{type:"sections",id:"values",children:[{type:"section",id:"values-section",columns:2,children:Object.keys(i).map(a=>({type:"field",id:`values-${a}`,field:a}))}]}}}function ti(e){if(e)return{...e.search?{search:t=>e.search(t)}:{},...e.create?{create:t=>e.create(t)}:{}}}function jn(e){let t=i=>(typeof e.relatedPages=="function"?e.relatedPages(i):e.relatedPages?.[i])??null,n={locale:e.locale,skin:e.skin,dir:e.dir,widgets:e.widgets,preferences:e.preferences,relatedPages:e.relatedPages,translate:e.translate};return{canOpen:i=>t(i)!==null,async openRecord(i,a){let r=t(i);if(!r)return null;let o=Qr(r),d=await Ft({...n,page:r,dataSource:e.dataSource,recordId:a.recordId??null,values:a.name&&o?{[o]:a.name}:void 0,title:a.title,size:"large"});if(!d.saved||d.recordId===null)return null;let s=o?d.values[o]:null;return{id:d.recordId,label:typeof s=="string"&&s?s:a.name??a.title}},searchMore:i=>Zt({title:i.title,search:i.search,locale:e.locale,skin:e.skin,dir:e.dir}),async editValues(i){let a=await Ft({...n,page:ei(i.fields,i.title,i.readonly===!0),dataSource:ti(e.dataSource),values:i.values,title:i.title,mode:"values",...i.recompute?{recompute:i.recompute}:{}});return a.saved?a.values:null}}}var Hn=e=>`favourites:${e.id}`;function Nt(e,t){let n=e.get(Hn(t));return Array.isArray(n)?n:[]}function qn(e,t,n){let i=Nt(t,n).find(a=>a.isDefault);return i?i.facets:e.defaultFilters?.length?[{kind:"filters",ids:[...e.defaultFilters],labels:e.defaultFilters.map(a=>e.filters?.find(r=>r.id===a)?.label??a)}]:[]}function Jn(e){let{page:t,el:n,labels:i,fill:a,preferences:r}=e,o=n("ul",{class:"fd-favourite-list"}),d=n("p",{class:"fd-favourites-none"},i.noFavourites),s=n("input",{class:"fd-input","aria-label":i.searchName,placeholder:i.searchName}),l=n("input",{type:"checkbox"}),u=n("button",{type:"button",class:"fd-button fd-button-primary"},i.save),h=n("div",{class:"fd-favourite-form",hidden:""},s,n("label",{class:"fd-favourite-default"},l,i.useByDefault),u),x=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},i.saveSearch),g=c=>r.set(Hn(t),c);function m(){let c=Nt(r,t);d.hidden=c.length>0,o.replaceChildren(...c.map(v=>{let b=n("button",{type:"button",class:"fd-search-option","data-default":v.isDefault?"true":void 0},v.name);b.addEventListener("click",()=>e.apply(v.facets));let f=n("button",{type:"button",class:"fd-favourite-remove","aria-label":a(i.deleteFavourite,{name:v.name})},"\xD7");return f.addEventListener("click",()=>{g(Nt(r,t).filter(L=>L.name!==v.name)),m()}),n("li",{class:"fd-favourite"},b,f)}))}return x.addEventListener("click",()=>{h.hidden=!h.hidden,x.setAttribute("aria-expanded",String(!h.hidden)),h.hidden||s.focus()}),u.addEventListener("click",()=>{let c=s.value.trim();if(!c)return s.focus();let v={name:c,facets:e.current(),...l.checked?{isDefault:!0}:{}},b=Nt(r,t).filter(f=>f.name!==c).map(f=>l.checked?{name:f.name,facets:f.facets}:f);g([...b,v]),s.value="",l.checked=!1,h.hidden=!0,x.setAttribute("aria-expanded","false"),m()}),m(),{list:o,none:d,open:x,form:h}}function ni(e,t,n){let i=e.page.fields[t];return n.value===null?e.labels.none:i.type==="selection"?i.options.find(a=>a.value===n.value)?.label??n.label:i.type==="boolean"?n.value?e.labels.yes:e.labels.no:n.label||String(n.value)}function ri(e){let t=Number(e.dataset.level),n=e.nextElementSibling;for(;n&&Number(n.dataset.level??0)>t;){let i=n.nextElementSibling;n.remove(),n=i}}function Qt(e,t,n,i,a){let{el:r,labels:o}=e,d=a[n],s=[...i,t.value===null?{field:d,op:"notset",value:null}:{field:d,op:"=",value:t.value}],l=r("button",{type:"button",class:"fd-group-toggle","aria-expanded":"false"},r("span",{class:"fd-group-label"},ni(e,d,t))," ",r("span",{class:"fd-group-count"},`(${t.count})`)),u=r("tr",{class:"fd-list-group","data-level":String(n),"aria-level":String(n+1)},r("td",{colspan:String(e.columns)},l));u.style.setProperty("--fd-level",String(n));let h=!1;async function x(){h=!0;try{let m=n+1<a.length?(await e.dataSource.groups?.({model:e.model,field:a[n+1],filter:s}))?.map(c=>Qt(e,c,n+1,s,a))??[]:await g(0);if(!u.isConnected||l.getAttribute("aria-expanded")!=="true")return;u.after(...m),e.changed()}finally{h=!1}}async function g(m){let c=await e.dataSource.list({model:e.model,fields:e.fields,filter:s,sort:e.sort(),offset:m,limit:e.pageSize}),v=c.records.map(w=>e.recordRow(w,n+1)),b=c.total-m-c.records.length;if(b<=0)return v;let f=r("button",{type:"button",class:"fd-button fd-button-link"},e.fill(o.loadMore,{n:b})),L=r("tr",{class:"fd-list-more","data-level":String(n+1)},r("td",{colspan:String(e.columns)},f));return L.style.setProperty("--fd-level",String(n)),f.addEventListener("click",async()=>{f.disabled=!0;let w=await g(m+c.records.length);L.isConnected&&(L.replaceWith(...w),e.changed())}),[...v,L]}return l.addEventListener("click",()=>{let m=l.getAttribute("aria-expanded")==="true";l.setAttribute("aria-expanded",String(!m)),m?(ri(u),e.changed()):h||x()}),u}var ii='.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;padding-block:2px;padding-inline:6px 2px;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:18px;height:18px;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 Un(e){if(e.getElementById("fd-list-styles"))return;let t=e.createElement("style");t.id="fd-list-styles",t.textContent=ii,e.head.append(t)}var ai=[["ilike","opContains"],["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],oi=[["ilike","opContains"],["set","opSet"],["notset","opNotSet"]],si=[["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],di=[["=","opIs"],["!=","opIsNot"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]],li=[["=","opIs"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]];function en(e){switch(e.type){case"char":case"text":case"html":return ai;case"many2one":case"many2many":return oi;case"selection":return si;case"integer":case"float":case"monetary":return di;case"date":case"datetime":return li;case"boolean":return[["=","opIs"]];default:return[]}}function _n(e){let{page:t,el:n,labels:i}=e,a=Object.entries(t.fields).filter(([,c])=>en(c).length),r=n("select",{class:"fd-input","aria-label":i.field},...a.map(([c,v])=>n("option",{value:c},v.label))),o=n("select",{class:"fd-input","aria-label":i.condition}),d=n("span",{class:"fd-custom-filter-value"}),s=n("button",{type:"button",class:"fd-button fd-button-primary"},i.apply),l=n("div",{class:"fd-custom-filter",hidden:""},r,o,d,s),u=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},i.addCustomFilter),h=n("input",{class:"fd-input","aria-label":i.value}),x=()=>t.fields[r.value];function g(){o.replaceChildren(...en(x()).map(([c,v])=>n("option",{value:c},i[v]))),m()}function m(){let c=x();if(c.type==="selection")h=n("select",{class:"fd-input","aria-label":i.value},...c.options.map(v=>n("option",{value:String(v.value)},v.label)));else if(c.type==="boolean")h=n("select",{class:"fd-input","aria-label":i.value},n("option",{value:"true"},i.yes),n("option",{value:"false"},i.no));else{let v=["integer","float","monetary"].includes(c.type)?"number":c.type==="date"?"date":c.type==="datetime"?"datetime-local":"text";h=n("input",{class:"fd-input",type:v,"aria-label":i.value})}d.replaceChildren(h),d.hidden=o.value==="set"||o.value==="notset"}return r.addEventListener("change",g),o.addEventListener("change",()=>d.hidden=o.value==="set"||o.value==="notset"),u.addEventListener("click",()=>{l.hidden=!l.hidden,u.setAttribute("aria-expanded",String(!l.hidden)),l.hidden||r.focus()}),s.addEventListener("click",()=>{let c=x(),v=o.value,b=i[en(c).find(([w])=>w===v)?.[1]??"opIs"],f=null,L="";if(!d.hidden){let w=h.value.trim();if(!w)return h.focus();if(c.type==="selection"){let N=c.options.find(O=>String(O.value)===w);f=N?.value??w,L=N?.label??w}else if(c.type==="boolean")f=w==="true",L=f?i.yes:i.no;else if(["integer","float","monetary"].includes(c.type)){if(f=Number(w),!Number.isFinite(f))return h.focus();L=w}else f=w,L=w}e.add({kind:"custom",label:[c.label,b,L].filter(Boolean).join(" "),filter:[{field:r.value,op:v,value:f}]}),l.hidden=!0,u.setAttribute("aria-expanded","false")}),g(),{button:u,form:l}}function ci(e,t){let n=` ${t.or} `;switch(e.kind){case"field":return`${e.label}: ${e.values.map(i=>i.label).join(n)}`;case"filters":return e.labels.join(n);case"groupBy":return e.labels.join(" > ");case"custom":return e.label}}function Gn(e){let{page:t,node:n,doc:i,el:a,labels:r,fill:o,uid:d}=e,s=e.facets,l=F=>{let D=ze(i,F,e.icons);return D?.setAttribute("aria-hidden","true"),D?[D]:[]};function u(F){s=F,L(),ee(),e.onChange(s)}let h=d(`${n.id}-suggestions`),x=d(`${n.id}-search-panel`),g=a("input",{class:"fd-search-input",role:"combobox",autocomplete:"off",placeholder:r.search,"aria-label":r.searchLabel,"aria-autocomplete":"list","aria-expanded":"false","aria-controls":h}),m=a("div",{class:"fd-facets"}),c=a("ul",{class:"fd-search-suggestions",role:"listbox",id:h,"aria-label":r.searchLabel,hidden:""}),v=a("button",{type:"button",class:"fd-search-toggle","aria-label":r.searchOptions,"aria-expanded":"false","aria-controls":x}),b=[],f=0;function L(){m.replaceChildren(...s.map((F,D)=>{let H=ci(F,r),ne=a("button",{type:"button",class:"fd-facet-remove","aria-label":o(r.removeFacet,{label:H})},"\xD7");ne.addEventListener("click",()=>{u(s.filter((me,ue)=>ue!==D)),g.focus()});let re=F.kind==="groupBy"?"layers":F.kind==="field"?"":"filter";return a("span",{class:"fd-facet","data-kind":F.kind},...re?l(re):[],a("span",{class:"fd-facet-text"},H),ne)}))}function w(){c.replaceChildren(...b.map((F,D)=>{let H=a("li",{role:"option",id:`${h}-${D}`,"aria-selected":String(D===f)},F.label);return H.addEventListener("mousedown",ne=>ne.preventDefault()),H.addEventListener("click",()=>O(F)),H})),c.hidden=b.length===0,g.setAttribute("aria-expanded",String(!c.hidden)),c.hidden?g.removeAttribute("aria-activedescendant"):g.setAttribute("aria-activedescendant",`${h}-${f}`)}function N(){b=[],w()}function O(F){let D={op:F.op,value:F.value,label:F.valueLabel},H=s.findIndex(re=>re.kind==="field"&&re.field===F.field),ne=[...s];if(H<0)ne.push({kind:"field",field:F.field,label:F.fieldLabel,values:[D]});else{let re=ne[H];re.values.some(ue=>ue.op===D.op&&JSON.stringify(ue.value)===JSON.stringify(D.value))||(ne[H]={...re,values:[...re.values,D]})}g.value="",N(),u(ne)}g.addEventListener("input",()=>{b=pt(g.value,t,n,{searchFor:r.searchFor}),f=0,w()}),g.addEventListener("blur",N),g.addEventListener("keydown",F=>{F.isComposing||((F.key==="ArrowDown"||F.key==="ArrowUp")&&b.length?(F.preventDefault(),f=(f+(F.key==="ArrowDown"?1:b.length-1))%b.length,w()):F.key==="Enter"?(F.preventDefault(),b.length&&O(b[f])):F.key==="Backspace"&&!g.value&&s.length?u(s.slice(0,-1)):F.key==="Escape"&&!c.hidden&&(F.preventDefault(),N()))});let T=(F,D,H)=>a("div",{class:"fd-search-heading",id:H},...l(F),D),z=(F,D)=>{let H=s.findIndex(pe=>pe.kind===F),ne=H<0?[]:F==="filters"?s[H].ids:s[H].fields,re=ne.includes(D)?ne.filter(pe=>pe!==D):[...ne,D],me=F==="filters"?{kind:F,ids:re,labels:re.map(pe=>n.filters?.find(ce=>ce.id===pe)?.label??pe)}:{kind:F,fields:re,labels:re.map(pe=>t.fields[pe]?.label??pe)},ue=[...s];H<0?ue.push(me):re.length?ue[H]=me:ue.splice(H,1),u(ue)},B=(n.filters??[]).map(F=>{let D=a("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-filter":F.id},F.label);return D.addEventListener("click",()=>z("filters",F.id)),D}),J=(n.groupBy??[]).map(F=>{let D=a("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-group":F},t.fields[F].label);return D.addEventListener("click",()=>z("groupBy",F)),D}),de=_n({page:t,el:a,labels:r,add:F=>u([...s,F])}),_=Jn({page:t,el:a,labels:r,fill:o,preferences:e.preferences,current:()=>s,apply:u}),K=(F,D,H,...ne)=>a("div",{class:"fd-search-group","data-group-kind":F,role:"group","aria-labelledby":`${x}-${F}`},T(D,H,`${x}-${F}`),...ne),Q=a("div",{class:"fd-search-panel",id:x,hidden:""},K("filters","filter",r.filters,...B,de.button,de.form),...J.length?[K("groupBy","layers",r.groupBy,...J)]:[],K("favourites","star",r.favourites,_.list,_.none,_.open,_.form));function ee(){let F=s.find(H=>H.kind==="filters")?.ids??[],D=s.find(H=>H.kind==="groupBy")?.fields??[];for(let H of B)H.setAttribute("aria-pressed",String(F.includes(H.dataset.filter??"")));for(let H of J)H.setAttribute("aria-pressed",String(D.includes(H.dataset.group??"")))}function $(F){Q.hidden=!F,v.setAttribute("aria-expanded",String(F)),F&&N()}v.addEventListener("click",()=>$(Q.hidden)),Q.addEventListener("keydown",F=>{F.key==="Escape"&&(F.preventDefault(),$(!1),v.focus())});let V=a("div",{class:"fd-search"},a("div",{class:"fd-search-field"},...l("search"),m,g,v),c,Q),W=F=>{!Q.hidden&&!V.contains(F.target)&&$(!1)};return i.addEventListener("pointerdown",W),L(),ee(),{element:V,destroy:()=>i.removeEventListener("pointerdown",W)}}var Kn=new Set(["integer","float","monetary"]),fi=new Set(["one2many","many2many","binary","image","html","json","properties"]);function Yn(e){let{page:t,node:n,form:i,el:a,labels:r,fill:o,locale:d,doc:s}=e;Un(s);let l=n.pageSize??40,u=n.sort??[],h=u,x=0,g=0,m=[],c=new WeakMap,v=()=>[...J.querySelectorAll(".fd-list-row")].map(k=>c.get(k)),b=t.data.kind==="record"?t.data.model:"",f=qn(n,e.preferences,t),L=new Set,w=0,N=!1,O=[...new Set(n.columns.flatMap(k=>{let E=t.fields[k];return E.type==="monetary"&&E.currencyField?[k,E.currencyField]:[k]}))],T=(k,E)=>et(t.fields[k],E[k],E,d),z=a("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":r.selectAll}),B=n.columns.map(k=>{let E=t.fields[k],I=a("th",{scope:"col","data-field":k,class:Kn.has(E.type)?"fd-num":void 0});if(fi.has(E.type))I.append(E.label);else{let te=a("button",{type:"button",class:"fd-list-sort"},E.label);te.addEventListener("click",()=>{let X=h[0]?.field===k?!h[0].desc:!1;h=[{field:k,...X?{desc:X}:{}},...u.filter(Y=>Y.field!==k)],x=0,S()}),I.append(te)}return I}),J=a("tbody"),de=a("table",{class:"fd-list-table","aria-label":t.title},a("thead",{},a("tr",{},a("th",{class:"fd-list-check",scope:"col"},z),...B)),J),_=a("p",{class:"fd-list-empty",hidden:""},r.noRecords),K=a("button",{type:"button",class:"fd-button fd-button-link"},r.retry),Q=a("p",{class:"fd-list-failed",role:"alert",hidden:""},r.loadFailed," ",K);K.addEventListener("click",()=>{S()});function ee(k,E=0){let I=T(n.columns[0],k.values)||String(k.id),te=a("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":o(r.selectRecord,{name:I})});te.checked=L.has(k.id),te.addEventListener("change",()=>{te.checked?L.add(k.id):L.delete(k.id),D()});let X=a("tr",{class:e.onOpenRecord?"fd-list-row fd-list-openable":"fd-list-row",tabindex:"0","data-id":String(k.id),"data-level":E?String(E):void 0},a("td",{class:"fd-list-check"},te),...n.columns.map(Y=>a("td",{class:Kn.has(t.fields[Y].type)?"fd-num":void 0},a("bdi",{},T(Y,k.values)))));return X.addEventListener("click",Y=>{let ae=Y.target.closest("td");if(ae?.classList.contains("fd-list-check")){Y.target===ae&&te.click();return}e.onOpenRecord?.(k.id)}),X.addEventListener("keydown",Y=>{Y.target===X&&(Y.key==="Enter"?(Y.preventDefault(),e.onOpenRecord?.(k.id)):Y.key===" "?(Y.preventDefault(),te.click()):(Y.key==="ArrowDown"||Y.key==="ArrowUp")&&(Y.preventDefault(),(Y.key==="ArrowDown"?X.nextElementSibling:X.previousElementSibling)?.focus()))}),c.set(X,k),X}let $=a("span",{class:"fd-list-count",role:"status"}),V=a("button",{type:"button",class:"fd-button fd-button-link"},r.clearSelection),W=(n.actions??[]).map(k=>{let E=a("button",{type:"button",class:`fd-button fd-button-${k.style??"secondary"}`,"data-node":k.id},...e.withIcon(k.icon,k.label));return E.addEventListener("click",async()=>{k.confirm&&!await e.confirm(k.confirm)||(await i.runAction(k.id,{recordIds:[...L]}),await S())}),E}),F=a("div",{class:"fd-list-selection",hidden:""},$,...W,V);V.addEventListener("click",()=>{L.clear();for(let k of J.querySelectorAll(".fd-list-checkbox"))k.checked=!1;D()}),z.addEventListener("change",()=>{for(let k of v())z.checked?L.add(k.id):L.delete(k.id);for(let k of J.querySelectorAll(".fd-list-checkbox"))k.checked=z.checked;D()});function D(){let k=v(),E=k.filter(I=>L.has(I.id)).length;z.checked=k.length>0&&E===k.length,z.indeterminate=E>0&&E<k.length,F.hidden=L.size===0,$.textContent=o(r.selected,{n:L.size});for(let I of J.querySelectorAll(".fd-list-row"))I.setAttribute("aria-selected",String([...L].some(te=>String(te)===I.dataset.id)))}let H=a("span",{class:"fd-pager-text"}),ne=a("button",{type:"button",class:"fd-button fd-pager-button","aria-label":r.previousPage},"\u2039"),re=a("button",{type:"button",class:"fd-button fd-pager-button","aria-label":r.nextPage},"\u203A"),me=a("div",{class:"fd-pager",role:"group"},H,ne,re);ne.addEventListener("click",()=>{x=Math.max(0,x-l),S()}),re.addEventListener("click",()=>{x+=l,S()});function ue(){me.hidden=g===0,H.textContent=o(r.range,{from:x+1,to:Math.min(x+m.length,g),total:g}),ne.disabled=x===0,re.disabled=x+l>=g}function pe(){for(let k of B){let E=h[0]?.field===k.dataset.field?h[0]:null;E?k.setAttribute("aria-sort",E.desc?"descending":"ascending"):k.removeAttribute("aria-sort")}}function ce(){let k=new Set(v().map(E=>E.id));for(let E of[...L])k.has(E)||L.delete(E);D()}let y=k=>({page:t,el:a,labels:r,fill:o,dataSource:k,model:b,fields:O,columns:n.columns.length+1,pageSize:l,sort:()=>h,recordRow:ee,changed:ce});async function S(){let k=++w;pe(),de.setAttribute("aria-busy","true");let E=[];try{let I=gt(f,n),te=mt(f),X=e.dataSource;if(te.length&&X?.groups&&X.list){let Y=await X.groups({model:b,field:te[0],filter:I});if(k!==w||N)return;m=[],g=0,E=Y.map(ae=>Qt(y(X),ae,0,I,te))}else{let Y=X?.list?await X.list({model:b,fields:O,filter:I,sort:h,offset:x,limit:l}):{records:[],total:0};if(k!==w||N)return;if(!Y.records.length&&Y.total>0&&x>0)return x=Math.floor((Y.total-1)/l)*l,S();m=Y.records,g=Y.total,E=m.map(ae=>ee(ae))}Q.hidden=!0}catch{if(k!==w||N)return;m=[],g=0,Q.hidden=!1}J.replaceChildren(...E),_.hidden=E.length>0||!Q.hidden,de.removeAttribute("aria-busy"),ue(),ce()}let A=Gn({page:t,node:n,doc:s,el:a,labels:r,fill:o,uid:e.uid,icons:e.icons,preferences:e.preferences,facets:f,onChange(k){f=k,x=0,S()}}),R=a("div",{class:"fd-list","data-node":n.id},a("div",{class:"fd-list-bar"},A.element,me),F,a("div",{class:"fd-list-scroll"},de),_,Q);return S(),{element:R,reload:S,destroy(){N=!0,A.destroy()}}}var Ce={en:{save:"Save",edit:"Edit",done:"Done",discard:"Discard",saving:"Saving\u2026",saved:"Saved",submit:"Submit",next:"Next",back:"Back",skip:"Skip",steps:"Steps",stepOf:"Step {n} of {total}",submitted:"Thank you. Your answers were sent.",submitAnother:"Submit another response",draftFound:"You have unsaved answers from {time}.",restore:"Restore",discardDraft:"Discard",ok:"OK",cancel:"Cancel",loading:"Loading\u2026",saveClose:"Save & Close",close:"Close",dismiss:"Dismiss",retry:"Retry",notSaved:"Not saved",notSent:"Not sent",checkFields:"{what}. Check: {fields}",offline:"Could not reach the server. Your changes are still here.",previousPage:"Previous page",nextPage:"Next page",range:"{from}\u2013{to} / {total}",selected:"{n} selected",clearSelection:"Clear",selectAll:"Select all",selectRecord:"Select {name}",noRecords:"No records match.",loadFailed:"Could not load the records.",search:"Search\u2026",searchLabel:"Search",searchFor:"Search {field} for: {text}",searchOptions:"Search options",filters:"Filters",groupBy:"Group By",favourites:"Favourites",or:"or",removeFacet:"Remove {label}",addCustomFilter:"Add a custom filter",field:"Field",condition:"Condition",value:"Value",apply:"Apply",saveSearch:"Save current search",searchName:"Name of the search",useByDefault:"Use by default",deleteFavourite:"Delete {name}",noFavourites:"No saved searches yet.",opIs:"is",opIsNot:"is not",opContains:"contains",opGreater:"greater than",opLess:"less than",opSet:"is set",opNotSet:"is not set",yes:"Yes",no:"No",none:"None",loadMore:"Show {n} more"},ar:{save:"\u062D\u0641\u0638",edit:"\u062A\u0639\u062F\u064A\u0644",done:"\u062A\u0645",discard:"\u062A\u062C\u0627\u0647\u0644",saving:"\u062C\u0627\u0631\u064D \u0627\u0644\u062D\u0641\u0638\u2026",saved:"\u062A\u0645 \u0627\u0644\u062D\u0641\u0638",submit:"\u0625\u0631\u0633\u0627\u0644",next:"\u0627\u0644\u062A\u0627\u0644\u064A",back:"\u0631\u062C\u0648\u0639",skip:"\u062A\u062E\u0637\u064D\u0651",steps:"\u0627\u0644\u062E\u0637\u0648\u0627\u062A",stepOf:"\u0627\u0644\u062E\u0637\u0648\u0629 {n} \u0645\u0646 {total}",submitted:"\u0634\u0643\u0631\u064B\u0627 \u0644\u0643. \u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0625\u062C\u0627\u0628\u0627\u062A\u0643.",submitAnother:"\u0625\u0631\u0633\u0627\u0644 \u0625\u062C\u0627\u0628\u0629 \u0623\u062E\u0631\u0649",draftFound:"\u0644\u062F\u064A\u0643 \u0625\u062C\u0627\u0628\u0627\u062A \u063A\u064A\u0631 \u0645\u062D\u0641\u0648\u0638\u0629 \u0645\u0646 {time}.",restore:"\u0627\u0633\u062A\u0639\u0627\u062F\u0629",discardDraft:"\u062A\u062C\u0627\u0647\u0644",ok:"\u0645\u0648\u0627\u0641\u0642",cancel:"\u0625\u0644\u063A\u0627\u0621",loading:"\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",saveClose:"\u062D\u0641\u0638 \u0648\u0625\u063A\u0644\u0627\u0642",close:"\u0625\u063A\u0644\u0627\u0642",dismiss:"\u0625\u062E\u0641\u0627\u0621",retry:"\u0623\u0639\u062F \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",notSaved:"\u0644\u0645 \u064A\u064F\u062D\u0641\u0638",notSent:"\u0644\u0645 \u064A\u064F\u0631\u0633\u0644",checkFields:"{what}. \u0631\u0627\u062C\u0650\u0639: {fields}",offline:"\u062A\u0639\u0630\u0651\u0631 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u062E\u0627\u062F\u0645. \u062A\u0639\u062F\u064A\u0644\u0627\u062A\u0643 \u0645\u0627 \u0632\u0627\u0644\u062A \u0647\u0646\u0627.",previousPage:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",nextPage:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629",range:"{from}\u2013{to} \u0645\u0646 {total}",selected:"\u062A\u0645 \u062A\u062D\u062F\u064A\u062F {n}",clearSelection:"\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u062D\u062F\u064A\u062F",selectAll:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",selectRecord:"\u062A\u062D\u062F\u064A\u062F {name}",noRecords:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0633\u062C\u0644\u0627\u062A \u0645\u0637\u0627\u0628\u0642\u0629.",loadFailed:"\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0633\u062C\u0644\u0627\u062A.",search:"\u0628\u062D\u062B\u2026",searchLabel:"\u0628\u062D\u062B",searchFor:"\u0627\u0628\u062D\u062B \u0641\u064A {field} \u0639\u0646: {text}",searchOptions:"\u062E\u064A\u0627\u0631\u0627\u062A \u0627\u0644\u0628\u062D\u062B",filters:"\u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629",groupBy:"\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628",favourites:"\u0627\u0644\u0645\u0641\u0636\u0644\u0629",or:"\u0623\u0648",removeFacet:"\u0625\u0632\u0627\u0644\u0629 {label}",addCustomFilter:"\u0625\u0636\u0627\u0641\u0629 \u0639\u0627\u0645\u0644 \u062A\u0635\u0641\u064A\u0629 \u0645\u062E\u0635\u0635",field:"\u0627\u0644\u062D\u0642\u0644",condition:"\u0627\u0644\u0634\u0631\u0637",value:"\u0627\u0644\u0642\u064A\u0645\u0629",apply:"\u062A\u0637\u0628\u064A\u0642",saveSearch:"\u062D\u0641\u0638 \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u062D\u0627\u0644\u064A",searchName:"\u0627\u0633\u0645 \u0627\u0644\u0628\u062D\u062B",useByDefault:"\u0627\u0633\u062A\u062E\u062F\u0627\u0645\u0647 \u0627\u0641\u062A\u0631\u0627\u0636\u064A\u064B\u0627",deleteFavourite:"\u062D\u0630\u0641 {name}",noFavourites:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0639\u0645\u0644\u064A\u0627\u062A \u0628\u062D\u062B \u0645\u062D\u0641\u0648\u0638\u0629 \u0628\u0639\u062F.",opIs:"\u064A\u0633\u0627\u0648\u064A",opIsNot:"\u0644\u0627 \u064A\u0633\u0627\u0648\u064A",opContains:"\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649",opGreater:"\u0623\u0643\u0628\u0631 \u0645\u0646",opLess:"\u0623\u0635\u063A\u0631 \u0645\u0646",opSet:"\u0645\u062D\u062F\u062F",opNotSet:"\u063A\u064A\u0631 \u0645\u062D\u062F\u062F",yes:"\u0646\u0639\u0645",no:"\u0644\u0627",none:"\u0628\u0644\u0627 \u0642\u064A\u0645\u0629",loadMore:"\u0639\u0631\u0636 {n} \u0623\u062E\u0631\u0649"},de:{save:"Speichern",edit:"Bearbeiten",done:"Fertig",discard:"Verwerfen",saving:"Wird gespeichert\u2026",saved:"Gespeichert",submit:"Absenden",next:"Weiter",back:"Zur\xFCck",skip:"\xDCberspringen",steps:"Schritte",stepOf:"Schritt {n} von {total}",submitted:"Vielen Dank. Ihre Antworten wurden gesendet.",submitAnother:"Weitere Antwort senden",draftFound:"Sie haben ungespeicherte Antworten vom {time}.",restore:"Wiederherstellen",discardDraft:"Verwerfen",ok:"OK",cancel:"Abbrechen",loading:"Wird geladen\u2026",saveClose:"Speichern und schlie\xDFen",close:"Schlie\xDFen",dismiss:"Ausblenden",retry:"Erneut versuchen",notSaved:"Nicht gespeichert",notSent:"Nicht gesendet",checkFields:"{what}. Bitte pr\xFCfen: {fields}",offline:"Der Server ist nicht erreichbar. Ihre \xC4nderungen sind noch da.",previousPage:"Vorherige Seite",nextPage:"N\xE4chste Seite",range:"{from}\u2013{to} / {total}",selected:"{n} ausgew\xE4hlt",clearSelection:"Auswahl aufheben",selectAll:"Alle ausw\xE4hlen",selectRecord:"{name} ausw\xE4hlen",noRecords:"Keine passenden Eintr\xE4ge.",loadFailed:"Die Eintr\xE4ge konnten nicht geladen werden.",search:"Suchen\u2026",searchLabel:"Suchen",searchFor:"{field} durchsuchen nach: {text}",searchOptions:"Suchoptionen",filters:"Filter",groupBy:"Gruppieren nach",favourites:"Favoriten",or:"oder",removeFacet:"{label} entfernen",addCustomFilter:"Eigenen Filter hinzuf\xFCgen",field:"Feld",condition:"Bedingung",value:"Wert",apply:"Anwenden",saveSearch:"Aktuelle Suche speichern",searchName:"Name der Suche",useByDefault:"Standardm\xE4\xDFig verwenden",deleteFavourite:"{name} l\xF6schen",noFavourites:"Noch keine gespeicherten Suchen.",opIs:"ist",opIsNot:"ist nicht",opContains:"enth\xE4lt",opGreater:"gr\xF6\xDFer als",opLess:"kleiner als",opSet:"ist gesetzt",opNotSet:"ist nicht gesetzt",yes:"Ja",no:"Nein",none:"Ohne Angabe",loadMore:"{n} weitere anzeigen"},fr:{save:"Enregistrer",edit:"Modifier",done:"Termin\xE9",discard:"Annuler les modifications",saving:"Enregistrement\u2026",saved:"Enregistr\xE9",submit:"Envoyer",next:"Suivant",back:"Retour",skip:"Passer",steps:"\xC9tapes",stepOf:"\xC9tape {n} sur {total}",submitted:"Merci. Vos r\xE9ponses ont \xE9t\xE9 envoy\xE9es.",submitAnother:"Envoyer une autre r\xE9ponse",draftFound:"Vous avez des r\xE9ponses non enregistr\xE9es du {time}.",restore:"Restaurer",discardDraft:"Ignorer",ok:"OK",cancel:"Annuler",loading:"Chargement\u2026",saveClose:"Enregistrer et fermer",close:"Fermer",dismiss:"Masquer",retry:"R\xE9essayer",notSaved:"Non enregistr\xE9",notSent:"Non envoy\xE9",checkFields:"{what}. \xC0 v\xE9rifier : {fields}",offline:"Le serveur est injoignable. Vos modifications sont toujours l\xE0.",previousPage:"Page pr\xE9c\xE9dente",nextPage:"Page suivante",range:"{from}\u2013{to} / {total}",selected:"{n} s\xE9lectionn\xE9(s)",clearSelection:"D\xE9s\xE9lectionner",selectAll:"Tout s\xE9lectionner",selectRecord:"S\xE9lectionner {name}",noRecords:"Aucun enregistrement ne correspond.",loadFailed:"Impossible de charger les enregistrements.",search:"Rechercher\u2026",searchLabel:"Rechercher",searchFor:"Rechercher {field} : {text}",searchOptions:"Options de recherche",filters:"Filtres",groupBy:"Regrouper par",favourites:"Favoris",or:"ou",removeFacet:"Retirer {label}",addCustomFilter:"Ajouter un filtre personnalis\xE9",field:"Champ",condition:"Condition",value:"Valeur",apply:"Appliquer",saveSearch:"Enregistrer la recherche",searchName:"Nom de la recherche",useByDefault:"Utiliser par d\xE9faut",deleteFavourite:"Supprimer {name}",noFavourites:"Aucune recherche enregistr\xE9e.",opIs:"est",opIsNot:"n\u2019est pas",opContains:"contient",opGreater:"sup\xE9rieur \xE0",opLess:"inf\xE9rieur \xE0",opSet:"est d\xE9fini",opNotSet:"n\u2019est pas d\xE9fini",yes:"Oui",no:"Non",none:"Aucun",loadMore:"Afficher {n} de plus"}},Zn=Ce.en;var ui=0;function Xt(e,t){let n=e.ownerDocument,i=ct(t.page);if(!i.ok)throw new Error(`This page cannot be shown:
3
- ${i.issues.map(p=>` ${p.path}: ${p.message}`).join(`
4
- `)}`);let a=t.translate?ft(i.page,t.translate):i.page,r=t.locale??"en",o=t.preferences??Yt(),d=jn(t),s=!t.form,l=t.form??ht({...t,page:a,messages:t.messages??Te[r]}),u={...Ce[r],...t.labels},h=ge[r],x=t.dir??(r==="ar"?"rtl":void 0),g=`fd${++ui}`,m=[],c=[],v=p=>`${g}-${p.replace(/[^A-Za-z0-9_-]/g,"_")}`,b=(p,M)=>p.replace(/\{(\w+)\}/g,(C,j)=>String(M[j]??""));Kt(n);function f(p,M={},...C){let j=n.createElement(p);for(let[q,Z]of Object.entries(M))Z!==void 0&&j.setAttribute(q,Z);return j.append(...C),j}function L(p,M){let C=ze(n,p,t.icons);return C?[C,M]:[M]}let w=f("form",{class:"fd-form",novalidate:"","data-fd-skin":t.skin??"underline",dir:x,lang:t.locale,"data-max-width":a.maxWidth}),N=t.confirm??nn;function O(p){let M=a.fields[p.field],C=v(p.id),j=f("div",{class:"fd-field","data-node":p.id,"data-field":p.field,"data-type":M.type});p.colspan&&j.style.setProperty("--fd-span",String(p.colspan));let q=f("label",{class:"fd-label",id:`${C}-label`,for:C},p.label??M.label),Z=t.showValid&&!pi.has(M.type)?ze(n,"check"):null;Z&&(Z.classList.add("fd-valid-mark"),q.append(Z));let U=Ee({form:l,name:p.field,field:M,node:p,id:C,document:n,labels:h,preferences:o,locale:r,dialogs:d},t.widgets);["INPUT","SELECT","TEXTAREA"].includes(U.element.tagName)||(U.element.getAttribute("role")&&U.element.setAttribute("aria-labelledby",q.id),q.addEventListener("click",()=>U.focus()));let fe=p.help??M.help,oe=fe?f("div",{class:"fd-help",id:`${C}-help`},fe):null,se=f("div",{class:"fd-error",id:`${C}-error`,hidden:""}),we=f("div",{class:"fd-warning",role:"status",hidden:""});return j.append(q,U.element,...oe?[oe]:[],se,we),U.destroy&&c.push(()=>U.destroy?.()),m.push(G=>{let P=l.node(p.id);j.hidden=P.invisible,j.classList.toggle("fd-required",P.required);let ie=G.errors[p.field];se.hidden=!ie,se.textContent=ie??"";let ve=G.warning&&G.warningField===p.field?G.warning:"";if(we.hidden=!ve,we.textContent=ve,Z){let Le=G.values[p.field],ke=Le!=null&&Le!==""&&!(Array.isArray(Le)&&!Le.length),Se=!P.readonly&&!ie&&ke&&G.dirty.includes(p.field)&&l.problem(p.field)===null;j.classList.toggle("fd-valid",Se),Z.toggleAttribute("hidden",!Se)}U.update({value:G.values[p.field],values:G.values,readonly:P.readonly||$,required:P.required,invalid:!!ie,describedBy:[oe?.id,ie?se.id:void 0].filter(Boolean).join(" ")||void 0})}),j}function T(p,M){m.push(()=>{p.hidden=l.node(M).invisible})}function z(p){let M=f("button",{type:"button",class:`fd-button fd-button-${p.style??"secondary"}`,"data-node":p.id},...L(p.icon,p.label));return M.addEventListener("click",async()=>{p.confirm&&!await N(p.confirm)||await l.runAction(p.id)}),T(M,p.id),M}function B(p){let M=p.style??"paragraph",C=f(M==="heading"?"h3":"p",{class:`fd-text-${M}`,"data-node":p.id},p.text);return T(C,p.id),C}function J(p){let M=f("div",{class:"fd-slot","data-slot":p.name,"data-node":p.id}),C=t.slots?.[p.name]?.(M,{form:l,name:p.name});return C&&c.push(C),T(M,p.id),M}function de(p,M=1){let C=f("div",{class:"fd-grid"});if(C.style.setProperty("--fd-columns",String(ot(M))),typeof M=="object")for(let j of["medium","narrow"]){let q=M[j];q!==void 0&&(C.setAttribute(`data-columns-${j}`,String(q)),C.style.setProperty(`--fd-columns-${j}`,String(q)))}return C.append(...p.map(ee)),C}let _=new Map;function K(p){let M=f("fieldset",{class:"fd-section","data-node":p.id}),C=p.description?f("p",{class:"fd-section-description"},p.description):null,j=de(p.children,p.columns);if(p.title&&p.collapsible){j.id=v(`${p.id}-content`);let q=f("button",{type:"button",class:"fd-section-toggle","aria-controls":j.id},f("span",{class:"fd-section-chevron","aria-hidden":"true"}),...L(p.icon,p.title)),Z=p.collapsed!==!0,U=fe=>{Z=fe,q.setAttribute("aria-expanded",String(Z)),j.hidden=!Z,C&&(C.hidden=!Z),M.classList.toggle("fd-section-folded",!Z)};q.addEventListener("click",()=>U(!Z)),_.set(M,()=>U(!0)),U(Z),M.append(f("legend",{class:"fd-section-title"},q))}else p.title&&M.append(f("legend",{class:"fd-section-title"},...L(p.icon,p.title)));return C&&M.append(C),M.append(j),T(M,p.id),M}function Q(p){let M=f("div",{class:"fd-tabs","data-node":p.id}),C=f("div",{class:"fd-tablist",role:"tablist"}),j=null,q=p.children[0].id,Z=p.children.map(U=>{let fe=v(`${U.id}-tab`),oe=v(`${U.id}-panel`),se=f("button",{type:"button",class:"fd-tab",role:"tab",id:fe,"aria-controls":oe,"data-node":U.id},...L(U.icon,U.label)),we=f("div",{class:"fd-tabpanel",role:"tabpanel",id:oe,"aria-labelledby":fe},de(U.children));return se.addEventListener("click",()=>{j=q=U.id,Be(l.getState())}),C.append(se),{tab:U,button:se,panel:we}});return C.addEventListener("keydown",U=>{let fe=Z.filter(P=>!P.button.hidden),oe=fe.findIndex(P=>P.tab.id===q),se={ArrowRight:1,ArrowLeft:-1,Home:-oe,End:fe.length-1-oe}[U.key];if(se===void 0||oe===-1)return;U.preventDefault();let we=w.getAttribute("dir")==="rtl"&&(U.key==="ArrowRight"||U.key==="ArrowLeft"),G=fe[(oe+(we?-se:se)+fe.length)%fe.length];j=q=G.tab.id,Be(l.getState()),G.button.focus()}),M.append(C,...Z.map(U=>U.panel)),m.push(()=>{M.hidden=l.node(p.id).invisible;let U=Z.filter(oe=>!l.node(oe.tab.id).invisible);j!==null&&U.some(oe=>oe.tab.id===j)?q=j:U.length&&(q=U[0].tab.id);for(let oe of Z){let se=oe.tab.id===q;oe.button.hidden=!U.includes(oe),oe.button.setAttribute("aria-selected",String(se)),oe.button.tabIndex=se?0:-1,oe.panel.hidden=!se}}),M}function ee(p){switch(p.type){case"field":return O(p);case"button":return z(p);case"text":return B(p);case"slot":return J(p);case"section":return K(p);case"tabs":return Q(p)}}let $=t.readonly===!0,V=t.editSwitch?f("button",{type:"button",class:"fd-button fd-edit-switch"}):null;V?.addEventListener("click",async()=>{if($)$=!1;else{if(l.getState().dirty.length&&!await l.save()){l.getState().saveProblem||ce(ne(l.getState())),E();return}$=!0}w.toggleAttribute("data-readonly",$),Be(l.getState())}),w.toggleAttribute("data-readonly",$),m.push(()=>{V&&(V.textContent=$?u.edit:u.done,V.classList.toggle("fd-button-primary",$))});let W=f("div",{class:"fd-status",role:"status","aria-live":"polite"}),F=f("button",{type:"button",class:"fd-button fd-button-link fd-retry",hidden:""},u.retry);F.addEventListener("click",()=>{Y()});let D=f("div",{class:"fd-status-box"},W,F),H=()=>a.data.kind==="responses"?u.notSent:u.notSaved;function ne(p){let M=[];for(let j of Object.keys(p.errors)){let q=j.split(".")[0],U=w.querySelector(`.fd-field[data-field="${q}"]:not([hidden]) > .fd-label`)?.firstChild?.textContent??a.fields[q]?.label??q;M.includes(U)||M.push(U)}let C=[...w.querySelectorAll(".fd-field[data-field] > .fd-label")].map(j=>j.firstChild?.textContent??"");return M.sort((j,q)=>(C.indexOf(j)+1||1/0)-(C.indexOf(q)+1||1/0)),M.length?b(u.checkFields,{what:H(),fields:M.join(", ")}):H()}let re;m.push(p=>{let M=p.saveProblem,C=p.status==="saving"?u.saving:p.status==="saved"?u.saved:p.status==="loading"?u.loading:p.status==="error"&&M?M.kind==="fields"?ne(p):M.kind==="other"?M.message:H():p.status==="error"?p.error??"":"";W.textContent=C,F.hidden=!(p.status==="error"&&M?.kind==="other"),W.classList.toggle("fd-status-error",p.status==="error"),W.classList.toggle("fd-status-saved",p.status==="saved"),t.saveStatus==="toast"&&(clearTimeout(re),D.hidden=!C,p.status==="saved"&&(re=setTimeout(()=>D.hidden=!0,2500)))});let me=f("button",{type:"button",class:"fd-button fd-retry"},u.retry);me.addEventListener("click",()=>{Y()});let ue=f("div",{class:"fd-banner fd-tone-warning",role:"alert",hidden:""},f("span",{class:"fd-banner-text"},u.offline),me),pe=f("div",{class:"fd-announce",role:"alert","aria-live":"assertive"});function ce(p){pe.textContent="",setTimeout(()=>pe.textContent=p,0)}let y=null;m.push(p=>{p.saveProblem!==y&&(y=p.saveProblem,ue.hidden=y?.kind!=="network",y&&(y.kind==="rule"?nn(y.message,!1):y.kind==="fields"?ce(ne(p)):y.kind==="other"&&ce(y.message)))});let S=f("div",{class:"fd-draft",hidden:""}),A=f("span"),R=f("button",{type:"button",class:"fd-button fd-button-primary"},u.restore),k=f("button",{type:"button",class:"fd-button fd-button-link"},u.discardDraft);R.addEventListener("click",()=>l.restoreDraft()),k.addEventListener("click",()=>l.discardDraft()),S.append(A,R,k),m.push(p=>{S.hidden=!p.draft,p.draft&&(A.textContent=b(u.draftFound,{time:new Date(p.draft.savedAt).toLocaleString()}))});function E(){let p=w.querySelector('[aria-invalid="true"]');if(!p)return;for(let C=p.closest(".fd-section-folded");C;C=C.parentElement?.closest(".fd-section-folded")??null)_.get(C)?.();if(!p.dispatchEvent(new CustomEvent("fd-focus-problem",{cancelable:!0})))return;(p.matches("input, select, textarea, button")?p:p.querySelector("input, select, textarea, button"))?.focus()}let I=f("div",{class:"fd-done",hidden:""},f("p",{class:"fd-done-title"},u.submitted)),te=f("button",{type:"button",class:"fd-button"},u.submitAnother);I.append(te);let X=f("div",{class:"fd-content"});async function Y(){if(!await l.save()){l.getState().saveProblem||ce(ne(l.getState())),E();return}a.data.kind==="responses"&&(X.hidden=!0,I.hidden=!1)}te.addEventListener("click",()=>{l.reset(),X.hidden=!1,I.hidden=!0});function ae(){if(!a.title&&!a.description)return null;let p=f("header",{class:"fd-page-head"});return a.title&&p.append(f("h1",{class:"fd-page-title"},a.title)),a.description&&p.append(f("p",{class:"fd-page-description"},a.description)),p}function Ge(p){let M=f("div",{class:"fd-sections","data-node":p.id},...p.children.map(ee)),C=f("button",{type:"submit",class:"fd-button fd-button-primary"},a.data.kind==="responses"?u.submit:u.save),j=f("div",{class:"fd-actions fd-actions-end"},D,C);if(a.data.kind==="record"){let q=f("button",{type:"button",class:"fd-button"},u.discard);q.addEventListener("click",()=>l.reset()),j.insertBefore(q,C),m.push(Z=>{let U=Z.dirty.length>0&&Z.status!=="saving"&&!$;C.hidden=!U,q.hidden=!U})}else m.push(()=>C.hidden=$);return V&&j.prepend(V),t.showActions===!1?f("div",{},M):a.actionsPosition==="top"?(j.classList.add("fd-actions-top"),f("div",{},j,M)):f("div",{},M,j)}function At(p){let M=f("div",{class:"fd-wizard","data-node":p.id}),C=f("div",{class:"fd-progress-text"}),j=f("span");M.append(f("div",{class:"fd-progress"},C,f("div",{class:"fd-progress-bar"},j)));let q=p.clickable?f("ol",{class:"fd-steps-list"}):null,Z=new Map;if(q){for(let P of p.children){let ie=f("button",{type:"button",class:"fd-step-link"},...L(P.icon,P.label));ie.addEventListener("click",()=>{l.goTo(P.id)?G():E()}),Z.set(P.id,ie),q.append(f("li",{},ie))}M.append(f("nav",{class:"fd-steps","aria-label":u.steps},q))}let U=p.children.map(P=>{let ie=f("section",{class:"fd-step","data-node":P.id,"aria-labelledby":v(`${P.id}-title`)});return ie.append(f("h2",{class:"fd-step-title",id:v(`${P.id}-title`)},...L(P.icon,P.label))),P.description&&ie.append(f("p",{class:"fd-section-description"},P.description)),ie.append(de(P.children)),M.append(ie),{step:P,panel:ie}}),fe=f("button",{type:"button",class:"fd-button"},p.backLabel??u.back),oe=f("button",{type:"button",class:"fd-button fd-button-link"},u.skip),se=f("button",{type:"submit",class:"fd-button fd-button-primary"});M.append(f("div",{class:"fd-wizard-nav"},fe,f("span",{class:"fd-spacer"}),D,oe,se)),fe.addEventListener("click",()=>{l.back()&&G()}),oe.addEventListener("click",()=>{l.skip()&&G()});let we=()=>{let P=l.steps();return P.indexOf(l.getState().step??"")===P.length-1};xe=async()=>{if(we())return Y();l.next()?G():E()};function G(){U.find(ie=>ie.step.id===l.getState().step)?.panel.querySelector("input, select, textarea, [role=radio]")?.focus()}return m.push(P=>{let ie=l.steps(),ve=Math.max(0,ie.indexOf(P.step??""));C.textContent=b(u.stepOf,{n:ve+1,total:ie.length}),j.style.width=`${(ve+1)/Math.max(1,ie.length)*100}%`;for(let{step:ke,panel:Se}of U)Se.hidden=ke.id!==P.step;let Le=ve===ie.length-1;fe.hidden=ve===0,oe.hidden=Le||!p.children.find(ke=>ke.id===P.step)?.optional,se.textContent=Le?p.finishLabel??u.submit:p.nextLabel??u.next;for(let[ke,Se]of Z){let $e=ie.indexOf(ke);Se.parentElement.hidden=$e===-1,Se.classList.toggle("fd-step-done",$e!==-1&&$e<ve),Se.classList.toggle("fd-step-skipped",P.skipped.includes(ke)),ke===P.step?Se.setAttribute("aria-current","step"):Se.removeAttribute("aria-current")}}),M}function Mt(p){let M=f("div",{class:"fd-sheet-page","data-node":p.id}),C=f("div",{class:"fd-actions"}),j=f("button",{type:"submit",class:"fd-button fd-button-primary"},u.save),q=f("button",{type:"button",class:"fd-button"},u.discard);q.addEventListener("click",()=>l.reset());let Z=a.actionsPosition==="bottom",U=f("div",{class:"fd-actions fd-actions-end fd-sheet-foot"});t.showActions===!1?C.append(...(p.buttons??[]).map(z)):Z?(C.append(...(p.buttons??[]).map(z)),U.append(D,q,j)):C.append(j,q,...(p.buttons??[]).map(z),D),V&&t.showActions!==!1&&C.prepend(V),m.push(G=>{let P=G.dirty.length>0&&G.status!=="saving"&&!$;j.hidden=!P,q.hidden=!P});let fe=f("div",{class:"fd-header"},C),oe=p.statusbar?.position==="title";p.statusbar&&!oe&&fe.append(ye(p.statusbar));let se=f("div",{class:"fd-card"});if(p.ribbon){let G=f("div",{class:`fd-ribbon fd-tone-${p.ribbon.tone??"muted"}`,"data-node":p.ribbon.id},p.ribbon.label);T(G,p.ribbon.id),se.append(f("div",{class:"fd-ribbon-frame"},G))}if(p.statButtons?.length){let G=f("div",{class:"fd-stats"});for(let P of p.statButtons){let ie=f("span",{class:"fd-stat-value"}),ve=ze(n,P.icon,t.icons),Le=f("span",{class:"fd-stat-words"},ie,f("span",{class:"fd-stat-label"},P.label)),ke=f("button",{type:"button",class:"fd-stat","data-node":P.id},...ve?[ve,Le]:[Le]);ke.addEventListener("click",()=>{l.runAction(P.id)}),m.push(Se=>{ke.hidden=l.node(P.id).invisible;let $e=P.field?Se.values[P.field]:null;ie.textContent=$e==null?"":String($e)}),G.append(ke)}se.append(G)}for(let G of p.alerts??[]){let P=f("div",{class:`fd-alert fd-tone-${G.tone??"info"}`,role:"status","data-node":G.id},f("span",{class:"fd-alert-message"},G.message));if(G.dismissible){let ie=!1,ve=f("button",{type:"button",class:"fd-alert-close","aria-label":u.dismiss},"\xD7");ve.addEventListener("click",()=>{ie=!0,P.hidden=!0}),P.append(ve),m.push(()=>{P.hidden=ie||l.node(G.id).invisible})}else T(P,G.id);se.append(P)}if(p.badges?.length){let G=f("div",{class:"fd-badges"});for(let P of p.badges){let ie=f("span",{class:`fd-badge fd-tone-${P.tone??"muted"}`,"data-node":P.id},...L(P.icon,P.label));T(ie,P.id),G.append(ie)}m.push(()=>{G.hidden=[...G.children].every(P=>P.hidden)}),se.append(G)}if(p.title){let G=f("div",{class:"fd-title"});p.title.above?.length&&G.append(f("div",{class:"fd-title-above"},...p.title.above.map(O))),G.append(O({type:"field",id:"#title",field:p.title.field,placeholder:p.title.placeholder})),p.title.subtitleField&&G.append(O({type:"field",id:"#subtitle",field:p.title.subtitleField})),p.title.below?.length&&G.append(f("div",{class:"fd-title-below"},...p.title.below.map(O)));let P=f("div",{class:"fd-title-row"},G);if(p.title.avatarField){let ie=O({type:"field",id:"#avatar",field:p.title.avatarField});ie.classList.add("fd-avatar"),P.append(ie)}se.append(P)}p.statusbar&&oe&&se.append(f("div",{class:"fd-title-statusbar"},ye(p.statusbar))),se.append(de(p.children)),Z&&t.showActions!==!1&&(se.append(U),m.push(G=>{U.hidden=G.dirty.length===0&&!W.textContent}));let we=f("div",{class:"fd-sheet-layout"},se);return p.sidePanel&&(we.classList.add("fd-has-side"),we.append(f("aside",{class:"fd-side"},J(p.sidePanel)))),M.append(fe,we),M}function ye(p){let M=a.fields[p.field],C={clickable:p.clickable===!0};p.visibleStates&&(C.visibleStates=p.visibleStates);let j={type:"field",id:"#statusbar",field:p.field,widget:"statusbar",options:C},q=Ee({form:l,name:p.field,field:M,node:j,id:v("statusbar"),document:n,labels:h,preferences:o,locale:r,dialogs:d},t.widgets);return m.push(Z=>q.update({value:Z.values[p.field],values:Z.values,readonly:l.node("#statusbar").readonly||$,required:!1,invalid:!1})),q.element}let xe=null,he=a.layout,We;if(he.type==="sheet")We=Mt(he);else if(he.type==="wizard")We=At(he);else if(he.type==="tabs")We=Ge({id:`${he.id}-page`,children:[he]});else if(he.type==="list"){let p=Yn({page:a,node:he,form:l,dataSource:t.dataSource,doc:n,el:f,labels:u,locale:r,fill:b,confirm:N,withIcon:L,uid:v,icons:t.icons,preferences:o,onOpenRecord:t.onOpenRecord});c.push(p.destroy),We=p.element}else We=Ge(he);let tn=he.type==="sheet"?null:ae();X.append(...tn?[tn]:[],ue,S,We),w.append(X,I,pe),t.saveStatus==="toast"?(D.classList.add("fd-toast"),w.append(D)):t.saveStatus==="bar"&&(D.classList.add("fd-status-bar"),X.prepend(D)),w.addEventListener("submit",p=>{p.preventDefault(),he.type!=="list"&&(xe?xe():Y())});function Xn(){let p=n.activeElement;p&&w.contains(p)&&(p.tagName==="INPUT"||p.tagName==="TEXTAREA")&&p.dispatchEvent(new Event("change",{bubbles:!0}))}function Qn(p){let M=[...w.querySelectorAll(".fd-field")].filter(q=>!q.closest('[hidden], [data-type="one2many"] .fd-field, .fd-form-dialog')&&!q.parentElement?.closest('[data-type="one2many"]')),C=p.closest(".fd-field"),j=M.slice(M.indexOf(C)+1);for(let q of j){let Z=q.querySelector('input:not([type="hidden"]):not([readonly]):not([disabled]), select:not([disabled]), textarea:not([readonly]), [contenteditable="true"]');if(Z)return Z}return null}w.addEventListener("keydown",p=>{if(p.isComposing||p.key!=="Enter"||he.type==="list"||p.target.closest(".fd-slot"))return;let M=t.keys??{};if(p.ctrlKey||p.metaKey){if(M.saveWithCtrlEnter===!1||t.showActions===!1||p.target.closest(".ag-root-wrapper"))return;p.preventDefault(),Xn(),xe?xe():Y();return}if(p.defaultPrevented||!M.enterMovesToNext||p.shiftKey||p.altKey)return;let C=p.target;C.tagName!=="INPUT"&&C.tagName!=="SELECT"||C.closest('[data-type="one2many"]')||["button","submit","reset","file"].includes(C.type)||(p.preventDefault(),Qn(C)?.focus())});function nn(p,M=!0){return new Promise(C=>{let j=f("p",{id:`${g}-confirm`},p),q=f("button",{type:"button",class:"fd-button"},u.cancel),Z=f("button",{type:"button",class:"fd-button fd-button-primary"},u.ok),U=f("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":j.id},j,f("div",{class:"fd-actions fd-actions-end"},...M?[q,Z]:[Z])),fe=f("div",{class:"fd-dialog-backdrop"},U),oe=se=>{fe.remove(),C(se)};q.addEventListener("click",()=>oe(!1)),Z.addEventListener("click",()=>oe(!0)),fe.addEventListener("keydown",se=>{se.key==="Escape"&&oe(!1)}),w.append(fe),Z.focus()})}function Be(p){for(let M of m)M(p)}e.append(w);let er=l.subscribe(Be);return Be(l.getState()),l.getState().status==="idle"&&l.load(),{form:l,element:w,setSkin(p){w.setAttribute("data-fd-skin",p)},async save(){let p=await l.save();return p||E(),p},check(){let p=l.validate();return p||E(),p},setReadonly(p){$=p,w.toggleAttribute("data-readonly",$),Be(l.getState())},isReadonly:()=>$,destroy(){er();for(let p of c)p();w.remove(),s&&l.dispose()}}}var pi=new Set(["boolean","one2many","binary","image","html","json","properties"]);var gi="0.9.2";return sr(mi);})();
1
+ /*! Fieldia 0.11.0 · MIT · https://fieldia.dev */
2
+ "use strict";var Fieldia=(()=>{var Fn=Object.defineProperty;var pa=Object.getOwnPropertyDescriptor;var ma=Object.getOwnPropertyNames;var ga=Object.prototype.hasOwnProperty;var ha=(e,t,n)=>t in e?Fn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ba=(e,t)=>{for(var n in t)Fn(e,n,{get:t[n],enumerable:!0})},ya=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ma(t))!ga.call(e,i)&&i!==n&&Fn(e,i,{get:()=>t[i],enumerable:!(r=pa(t,i))||r.enumerable});return e};var va=e=>ya(Fn({},"__esModule",{value:!0}),e);var ct=(e,t,n)=>ha(e,typeof t!="symbol"?t+"":t,n);var yd={};ba(yd,{ADDRESS_PARTS:()=>Hn,DEFAULT_LABELS:()=>qo,FIELDIA_CSS:()=>zo,FIELD_NAME:()=>An,FIELD_TYPES:()=>Tn,FIRST_FIELD:()=>fr,FORMAT_VERSION:()=>Mn,FORM_WIDTHS:()=>Ds,ICONS:()=>ro,MESSAGES:()=>Ge,PART_LOOKS:()=>di,VERSION:()=>bd,VIEWER_LABELS:()=>tt,WIDGET_LABELS:()=>Pe,accentShades:()=>Sn,addLanguage:()=>br,applyLook:()=>Ht,binaryWidget:()=>Ir,browserPreferences:()=>Zr,builtInWidgets:()=>Co,charTagsWidget:()=>Nr,checkPage:()=>cn,checkValue:()=>Jt,compileModifier:()=>_e,contrast:()=>jt,countriesIn:()=>_r,createForm:()=>qn,createMemoryDataSource:()=>Ii,createWidget:()=>Ze,dayOf:()=>Pt,describeTypes:()=>pn,displayValue:()=>bn,drawIcon:()=>dt,emptyValue:()=>Wt,evaluateModifier:()=>xi,expressionContext:()=>et,facetsToFilter:()=>Wn,fileProblem:()=>un,fill:()=>Ee,formatBytes:()=>kt,formatMoney:()=>Ar,formatNumber:()=>pt,groupByFields:()=>zn,hostScheduler:()=>mn,htmlWidget:()=>Hr,imageWidget:()=>Vr,initialValues:()=>It,installListStyles:()=>pr,installStyles:()=>Xr,isEmpty:()=>ut,isModifierValid:()=>wi,isRightToLeft:()=>Pn,isoWeek:()=>po,jsonWidget:()=>Br,keepTabIn:()=>mt,kindTextField:()=>no,labelPlace:()=>gr,labelWidget:()=>xn,lineForm:()=>Xn,lineKind:()=>Ye,linesWidget:()=>Or,linkAddress:()=>go,linkCheckboxesWidget:()=>$r,localizePage:()=>fn,many2oneWidget:()=>Mr,matchesFilter:()=>Yt,memoryPreferences:()=>zs,mountViewer:()=>En,normalizeNumber:()=>Tr,openFormDialog:()=>en,openFormPanel:()=>ti,openSearchDialog:()=>ni,pageWords:()=>vi,planSection:()=>mr,progressbarWidget:()=>vn,propertiesWidget:()=>zr,readFile:()=>Zn,referenceWidget:()=>Cr,sanitizeHtml:()=>jr,saveProblemOf:()=>Vn,saveRefused:()=>Ci,scoreOf:()=>$i,statusbarWidget:()=>er,suggestions:()=>Dn,summary:()=>Qn,tagsWidget:()=>Yn,translatePage:()=>Kt,wait:()=>jn,wideColumns:()=>Ut,withCalendar:()=>nr});var An=/^[A-Za-z_][A-Za-z0-9_]*$/,Tn=["char","text","html","integer","float","monetary","boolean","date","datetime","selection","binary","image","many2one","many2many","one2many","reference","properties","json","matrix"];function Ut(e){return typeof e=="object"?e.wide:e??1}var Mn="0.1";var di={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 ze=e=>typeof e=="number"&&Number.isFinite(e);function vt(e){return Number.isFinite(e)?Number(e.toPrecision(15)):null}function ci(e,t,n){if(e==="+"&&(typeof t=="string"||typeof n=="string")){let r=li(t),i=li(n);return r===null||i===null?null:r+i}if(!ze(t)||!ze(n))return null;switch(e){case"+":return vt(t+n);case"-":return vt(t-n);case"*":return vt(t*n);case"/":return vt(t/n);case"%":return vt(t-n*Math.floor(t/n));default:return null}}function li(e){return e==null?"":typeof e=="string"?e:ze(e)?String(e):null}function fi(e){return ze(e)?vt(-e):null}function Ue(e){return Array.isArray(e)?e.length>0:e!==null&&typeof e=="object"?Object.keys(e).length>0:!!e}function dn(e,t){let n=10**Math.trunc(t),r=Number((Math.abs(e)*n).toPrecision(15));return vt(Math.sign(e)*Math.round(r)/n)}function Ct(e){let t=n=>String(n).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function ui(e){let t=e.args[0];return(t.type==="Identifier"?e.env.lines?.(t.name):void 0)??e.value(t)}function pi(e,t){let n=e.args.flatMap(i=>{let o=e.value(i);return Array.isArray(o)?o:[o]}).filter(i=>i!=null);return!n.length||!n.every(ze)&&!n.every(i=>typeof i=="string")?null:n.reduce((i,o)=>(t?o<i:o>i)?o:i)}var ln=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 ze(n)&&ze(r)?dn(n,r):null}}],["abs",{takes:[1,1],call({args:e,value:t}){let n=t(e[0]);return ze(n)?Math.abs(n):null}}],["min",{takes:[1,1/0],call:e=>pi(e,!0)}],["max",{takes:[1,1/0],call:e=>pi(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?.()??Ct(new Date)}],["sum",{takes:[1,2],check(e){let t=e[1];if(t&&!(t.type==="Literal"&&typeof t.value=="string"))return"sum takes the name of a field, in quotes, after the lines: sum(lines, 'subtotal')"},call(e){let t=ui(e);if(t==null)return 0;if(!Array.isArray(t))return null;let n=e.args[1]?.type==="Literal"?e.args[1].value:void 0,r=0;for(let i of t){let o=n===void 0?i:i?.[n];ze(o)&&(r+=o)}return vt(r)}}],["count",{takes:[1,1],call(e){let t=ui(e);return t==null?0:Array.isArray(t)?t.length:null}}],["if",{takes:[3,3],call:({args:e,value:t})=>Ue(t(e[0]))?t(e[1]):t(e[2])}]]);function mi(e,[t,n]){return n===0?`${e} takes no values`:t===n?`${e} takes ${t} value${t===1?"":"s"}`:n===1/0?`${e} takes ${t} or more values`:`${e} takes ${t} or ${n} values`}function ft(e,t,n={}){switch(e.type){case"BinaryOp":return xa(e,t,n);case"UnaryOp":return wa(e,t,n);case"Call":return ka(e,t,n);case"Literal":return e.value;case"Identifier":return Sa(t,e.name);default:throw new Error(`Unknown AST node type: ${e.type}`)}}function xa(e,t,n){let r=gi(ft(e.left,t,n)),i=gi(ft(e.right,t,n)),o=e.operator.toLowerCase(),a=r!==null&&i!==null;switch(o){case"==":return r===i;case"!=":case"<>":return r!==i;case"<":return a&&r<i;case">":return a&&r>i;case"<=":return a&&r<=i;case">=":return a&&r>=i;case"in":return Array.isArray(i)&&i.includes(r);case"not in":return Array.isArray(i)&&!i.includes(r);case"+":case"-":case"*":case"/":case"%":return ci(o,r,i);case"and":return Ue(r)&&Ue(i);case"or":return Ue(r)||Ue(i);default:throw new Error(`Unknown binary operator: ${e.operator}`)}}function wa(e,t,n){let r=ft(e.operand,t,n);switch(e.operator.toLowerCase()){case"not":return!Ue(r);case"-":return fi(r);default:throw new Error(`Unknown unary operator: ${e.operator}`)}}function ka(e,t,n){let r=ln.get(e.name);if(!r)throw new Error(`Unknown function: ${e.name}`);return r.call({args:e.args,value:i=>ft(i,t,n),env:n})}function gi(e){return e===void 0?null:e}function Sa(e,t){let n=t.split("."),r=e;for(let i of n){if(r==null)return;r=r[i]}return r}var vr=new Map([["True",!0],["False",!1],["None",null],["true",!0],["false",!1],["null",null]]),Ea=new Set(["+","-","*","/","%"]);function Dt(e){let t=[];if(!e)return t;let n=/(\(|\)|,|==|!=|<=|>=|<>|<|>|[-+*/%]|not\s+in\b|in\b|and\b|or\b|not\b|\[[^\]]*\]|'[^']*'|"[^"]*"|\d+\.?\d*|\w+(?:\.\w+)*)/iy,r=/\s*/y,i=0;for(;;){if(r.lastIndex=i,r.exec(e),i=r.lastIndex,i>=e.length)return t;n.lastIndex=i;let o=n.exec(e);if(!o)throw new Error(`Unexpected "${e[i]}" at character ${i+1} of: ${e}`);t.push({type:La(o[0]),value:o[0],position:t.length}),i=n.lastIndex}}function La(e){let t=e.toLowerCase().trim();return vr.has(e)?"CONSTANT":t==="and"||t==="or"||t==="not"?"LOGICAL":["==","!=","<>","<",">","<=",">="].includes(e)||t==="in"||t==="not in"?"OPERATOR":e==="("||e===")"?"PAREN":Ea.has(e)?"ARITHMETIC":e===","?"COMMA":e.startsWith("[")?"LIST":e.startsWith("'")||e.startsWith('"')?"STRING":/^\d+\.?\d*$/.test(e)?"NUMBER":"IDENTIFIER"}var xt=class{constructor(t){ct(this,"tokens");ct(this,"position",0);this.tokens=t}parse(){if(this.tokens.length===0)throw new Error("Cannot parse empty expression");let t=this.parseOr();if(!this.isAtEnd())throw new Error(`Unexpected token at position ${this.position}: ${this.peek()?.value}`);return t}parseOr(){let t=this.parseAnd();for(;this.matchLogical("or");){let n=this.previous().value,r=this.parseAnd();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:r}}return t}parseAnd(){let t=this.parseNot();for(;this.matchLogical("and");){let n=this.previous().value,r=this.parseNot();t={type:"BinaryOp",operator:n.toLowerCase(),left:t,right:r}}return t}parseNot(){if(this.matchLogical("not")){let t=this.previous().value,n=this.parseComparison();return{type:"UnaryOp",operator:t.toLowerCase(),operand:n}}return this.parseComparison()}parseComparison(){let t=this.parseSum(),n=["==","!=","<>","<",">","<=",">=","in","not in"];if(this.matchOperator(...n)){let r=this.previous().value,i=this.parseSum();return{type:"BinaryOp",operator:r.toLowerCase(),left:t,right:i}}return t}parseSum(){let t=this.parseProduct();for(;this.match("ARITHMETIC","+","-");)t={type:"BinaryOp",operator:this.previous().value,left:t,right:this.parseProduct()};return t}parseProduct(){let t=this.parseUnary();for(;this.match("ARITHMETIC","*","/","%");)t={type:"BinaryOp",operator:this.previous().value,left:t,right:this.parseUnary()};return t}parseUnary(){return this.match("ARITHMETIC","-")?{type:"UnaryOp",operator:"-",operand:this.parseUnary()}:this.parseValue()}parseCall(t){let n=ln.get(t);if(!n)throw new Error(`no function "${t}": the functions are ${[...ln.keys()].join(", ")}`);this.advance();let r=[];if(!this.match("PAREN",")")){do r.push(this.parseOr());while(this.match("COMMA"));this.consume("PAREN",")",`Expected "," or ")" after a value of ${t}(\u2026)`)}let[i,o]=n.takes;if(r.length<i||r.length>o)throw new Error(mi(t,n.takes));let a=n.check?.(r);if(a)throw new Error(a);return{type:"Call",name:t,args:r}}parseValue(){if(this.match("PAREN","(")){let t=this.parseOr();return this.consume("PAREN",")","Expected closing parenthesis"),t}if(this.check("STRING"))return{type:"Literal",value:this.advance().value.slice(1,-1)};if(this.check("CONSTANT")){let t=this.advance();return{type:"Literal",value:vr.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:Ra(t.value)}}if(this.check("IDENTIFIER")){let t=this.advance(),n=this.peek();return n?.type==="PAREN"&&n.value==="("?this.parseCall(t.value):{type:"Identifier",name:t.value}}throw new Error(`Unexpected token: ${this.peek()?.value||"EOF"}`)}match(t,...n){if(this.check(t)){if(n.length===0)return this.advance(),!0;let r=this.peek();if(r&&n.includes(r.value))return this.advance(),!0}return!1}matchLogical(...t){let n=this.peek();if(n&&n.type==="LOGICAL"){let r=n.value.toLowerCase();if(t.map(i=>i.toLowerCase()).includes(r))return this.advance(),!0}return!1}matchOperator(...t){let n=this.peek();if(n&&n.type==="OPERATOR"){let r=n.value.toLowerCase();if(t.map(i=>i.toLowerCase()).includes(r))return this.advance(),!0}return!1}check(t){return this.peek()?.type===t}advance(){return this.isAtEnd()||this.position++,this.previous()}peek(){return this.isAtEnd()?null:this.tokens[this.position]}previous(){return this.tokens[this.position-1]}isAtEnd(){return this.position>=this.tokens.length}consume(t,n,r){if(this.check(t)){let i=this.peek();if(i&&i.value===n)return this.advance()}throw new Error(r)}};function Ra(e){try{let t=e.slice(1,-1).trim();if(!t)return[];let n=[],r="",i=!1,o="";for(let a=0;a<t.length;a++){let d=t[a];(d==="'"||d==='"')&&(a===0||t[a-1]!=="\\")&&(i?d===o&&(i=!1,o=""):(i=!0,o=d)),d===","&&!i?(n.push(hi(r.trim())),r=""):r+=d}return r.trim()&&n.push(hi(r.trim())),n}catch(t){throw new Error(`Cannot read the list ${e}`,{cause:t})}}function hi(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 _t(e,t){switch(t(e),e.type){case"BinaryOp":_t(e.left,t),_t(e.right,t);return;case"UnaryOp":_t(e.operand,t);return;case"Call":for(let n of e.args)_t(n,t);return;default:return}}function Nn(e){let t=[];return _t(e,n=>{if(n.type!=="Identifier")return;let r=n.name.split(".")[0];t.includes(r)||t.push(r)}),t}function bi(e){let t=[];return _t(e,n=>{if(n.type!=="Call"||n.name!=="sum")return;let[r,i]=n.args;r.type==="Identifier"&&i?.type==="Literal"&&t.push({lines:r.name,field:i.value})}),t}function _e(e){if(typeof e!="string"){let n=e===!0;return{source:e,fields:[],evaluate:()=>n}}let t=new xt(Dt(e)).parse();return{source:e,fields:Nn(t),evaluate(n,r){try{return Ue(ft(t,n,r))}catch{return!1}}}}function wt(e){let t=new xt(Dt(e)).parse();return{source:e,fields:Nn(t),sums:bi(t),evaluate(n,r={}){try{return ft(t,n,r)??null}catch{return null}}}}function $n(e){let t=[],n=[],r=new Set,i=[],o=a=>{if(r.has(a))return;let d=i.indexOf(a);if(d!==-1){n.push([...i.slice(d),a]);return}i.push(a);for(let s of e.get(a)??[])e.has(s)&&o(s);i.pop(),r.add(a),t.push(a)};for(let a of e.keys())o(a);return{order:t,cycles:n}}var Ot=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),yi=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),xr="text, numbers, yes or no, dates, choices and json can",Fa=e=>{let t=e.map(n=>`"${n}"`);return t.length<2?t.join(""):`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`},Cn=class{constructor(t){ct(this,"page",t);ct(this,"issues",[]);ct(this,"ids",new Map);ct(this,"formNames",new Map);ct(this,"places",new Set);ct(this,"goingTo",[])}run(){this.checkFields(this.page.fields,"fields"),this.walkRoot(this.page.layout,"layout"),this.page.on&&this.checkEvents(this.page.on,"on");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`);return this.issues}checkEvents(t,n){for(let r of["open","beforeSave","afterSave"]){let i=t[r];i&&this.checkSteps(i,`${n}.${r}`)}for(let[r,i]of Object.entries(t.change??{}))this.formNames.has(r)||this.need(r,`${n}.change.${r}`),this.checkSteps(i,`${n}.change.${r}`);for(let[r,i]of Object.entries(t.show??{}))this.goingTo.push({target:r,path:`${n}.show.${r}`}),this.checkSteps(i,`${n}.show.${r}`)}checkPress(t,n){!t.steps&&t.action===void 0&&this.report(n,"a button needs steps, an action, or both"),t.steps&&this.checkSteps(t.steps,`${n}.steps`)}checkSteps(t,n){let r={fields:this.page.fields};t.forEach((i,o)=>{let a=`${n}[${o}]`;switch(this.checkModifiers(i,a,["when"]),i.do){case"set":{let d=this.need(i.field,`${a}.field`);d&&!yi.has(d.type)&&this.report(`${a}.field`,`a ${d.type} cannot be set from an expression; ${xr}`),this.checkExpression(i.value,`${a}.value`,r);return}case"clear":this.need(i.field,`${a}.field`);return;case"addLine":{let d=this.need(i.field,`${a}.field`);if(d&&d.type!=="one2many")return this.report(`${a}.field`,`"${i.field}" is a ${d.type}; a line is added to a one2many`);for(let[s,l]of Object.entries(i.values??{}))d?.type==="one2many"&&!Ot(d.fields,s)&&this.report(`${a}.values.${s}`,`"${s}" is not a field of the lines of "${i.field}"`),this.checkExpression(l,`${a}.values.${s}`,r);return}case"check":i.fields?.forEach((d,s)=>this.need(d,`${a}.fields[${s}]`));return;case"goTo":this.goingTo.push({target:i.target,path:`${a}.target`});return;case"open":i.page===this.page.id&&i.as==="page"&&this.report(`${a}.page`,"a page cannot open itself in its own place"),i.side!==void 0&&i.as!=="panel"&&this.report(`${a}.side`,`a side is where a panel comes from; this opens ${i.as==="page"?"in its place":"in a dialog"}`),i.record!==void 0&&this.checkExpression(i.record,`${a}.record`,r);for(let[d,s]of Object.entries(i.values??{}))this.checkExpression(s,`${a}.values.${d}`,r);for(let[d,s]of Object.entries(i.into??{})){this.need(d,`${a}.into.${d}`);try{wt(s)}catch(l){this.report(`${a}.into.${d}`,`cannot read "${s}": ${l.message}`)}}i.then&&this.checkSteps(i.then,`${a}.then`);return;default:return}})}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(Ot(r,t))return r[t];this.report(n,`no field "${t}"`)}checkModifiers(t,n,r=["invisible"],i={fields:this.page.fields}){for(let o of r){let a=t[o];if(typeof a!="string")continue;let d;try{d=_e(a).fields}catch(s){this.report(`${n}.${o}`,`cannot read "${a}": ${s.message}`);continue}this.checkReads(a,d,`${n}.${o}`,i)}}checkReads(t,n,r,i){for(let o of n){if(Ot(i.fields,o))continue;let a=i.lines===void 0?"of this page":`of the lines of "${i.lines}"`;this.report(r,`"${t}" reads "${o}", which is not a field ${a}`)}}checkExpression(t,n,r){let i;try{i=wt(t)}catch(o){return this.report(n,`cannot read "${t}": ${o.message}`),null}this.checkReads(t,i.fields,n,r);for(let o of i.sums){if(!Ot(r.fields,o.lines))continue;let a=r.fields[o.lines];a.type!=="one2many"?this.report(n,`sum adds up the lines of a one2many; "${o.lines}" is a ${a.type}`):Ot(a.fields,o.field)||this.report(n,`"${o.field}" is not a field of the lines of "${o.lines}"`)}return i.fields}checkWorkedOut(t,n,r){let i=new Map;for(let[o,a]of Object.entries(t)){let d=`${n}.${o}`;if((a.compute!==void 0||a.setWhen)&&!yi.has(a.type)){a.compute!==void 0&&this.report(`${d}.compute`,`a ${a.type} cannot be worked out; ${xr}`),a.setWhen&&this.report(`${d}.setWhen`,`a ${a.type} cannot be set by a condition; ${xr}`);continue}if(a.compute!==void 0){let s=this.checkExpression(a.compute,`${d}.compute`,r);s&&i.set(o,s)}a.setWhen?.forEach((s,l)=>{this.checkModifiers(s,`${d}.setWhen[${l}]`,["when"],r),this.checkExpression(s.value,`${d}.setWhen[${l}].value`,r)})}for(let o of $n(i).cycles){let a=o.slice(0,-1),d=a.length===1?`"${a[0]}" is worked out from itself`:`${Fa(a)} are worked out from each other: ${o.join(" \u2192 ")}`;this.report(`${n}.${o[0]}.compute`,d)}}checkFields(t,n,r){this.checkWorkedOut(t,n,{fields:t,lines:r});for(let[i,o]of Object.entries(t)){let a=`${n}.${i}`;if(o.type==="monetary"&&o.currencyField!==void 0){let d=this.need(o.currencyField,`${a}.currencyField`,t);d&&!["many2one","selection","char"].includes(d.type)&&this.report(`${a}.currencyField`,`"${o.currencyField}" is a ${d.type}; a currency field must be a many2one, selection or char`)}if((o.type==="many2one"||o.type==="many2many")&&o.filter){let d=(s,l)=>{if("any"in s)return s.any.forEach((m,f)=>d(m,`${l}.any[${f}]`));if("all"in s)return s.all.forEach((m,f)=>d(m,`${l}.all[${f}]`));s.valueFrom!==void 0&&this.need(s.valueFrom,`${l}.valueFrom`,t)};o.filter.forEach((s,l)=>{d(s,`${a}.filter[${l}]`)})}if(o.type==="selection"&&o.optionsFrom?.dependsOn?.forEach((d,s)=>this.need(d,`${a}.optionsFrom.dependsOn[${s}]`,t)),o.type==="properties"&&o.definitions){let d=new Set;o.definitions.forEach((s,l)=>{s.type==="selection"&&!s.options&&this.report(`${a}.definitions[${l}].options`,"a choice property needs its choices"),d.has(s.name)&&this.report(`${a}.definitions[${l}].name`,`"${s.name}" is named twice`),d.add(s.name)})}if(o.type==="one2many"&&(this.checkFields(o.fields,`${a}.fields`,i),o.lineKinds&&this.checkLineKinds(i,o.lineKinds,o.fields,`${a}.lineKinds`),o.sequenceField!==void 0)){let d=o.fields[o.sequenceField];d?d.type!=="integer"&&this.report(`${a}.sequenceField`,`"${o.sequenceField}" is a ${d.type}; the field that keeps the order of lines must be an integer`):this.report(`${a}.sequenceField`,`"${o.sequenceField}" is not a field of the lines of "${i}"`)}}}checkLineKinds(t,n,r,i){let o=r[n.field];if(!o)this.report(`${i}.field`,`"${n.field}" is not a field of the lines of "${t}"`);else if(o.type!=="selection"&&o.type!=="char")this.report(`${i}.field`,`"${n.field}" is a ${o.type}; the field that says what a line is must be a selection or char`);else if(o.type==="selection")for(let d of["section","note"]){let s=n[d]??d;o.options.some(l=>l.value===s)||this.report(`${i}.${d}`,`"${n.field}" has no option "${s}"`)}let a=r[n.text];a?a.type!=="char"&&a.type!=="text"&&this.report(`${i}.text`,`"${n.text}" is a ${a.type}; a section's or note's text must be a char or text field`):this.report(`${i}.text`,`"${n.text}" is not a field of the lines of "${t}"`)}walkRoot(t,n){if(t.type==="tabs")return this.walkNode(t,n);if(this.claim(t.id,n),t.type==="sheet")return this.walkSheet(t,n);if(t.type==="sections")return this.walkChildren(t.children,n);if(t.type==="list")return this.walkList(t,n);t.children.forEach((r,i)=>{let o=`${n}.children[${i}]`;this.places.add(r.id),this.claim(r.id,o),this.checkModifiers(r,o),this.walkChildren(r.children,o)})}walkList(t,n){this.page.data.kind!=="record"&&this.report("data",'a list shows records: its data needs kind "record" and a model'),t.columns.forEach((o,a)=>this.need(o,`${n}.columns[${a}]`)),t.sort?.forEach((o,a)=>this.need(o.field,`${n}.sort[${a}].field`)),t.searchFields?.forEach((o,a)=>this.need(o,`${n}.searchFields[${a}]`)),t.groupBy?.forEach((o,a)=>this.need(o,`${n}.groupBy[${a}]`));let r=(o,a)=>{if("any"in o)return o.any.forEach((d,s)=>r(d,`${a}.any[${s}]`));if("all"in o)return o.all.forEach((d,s)=>r(d,`${a}.all[${s}]`));this.need(o.field,`${a}.field`),o.valueFrom!==void 0&&this.report(`${a}.valueFrom`,"a list's filter compares with values, not with another field")},i=new Set;t.filters?.forEach((o,a)=>{this.claim(o.id,`${n}.filters[${a}]`),i.add(o.id),o.filter.forEach((d,s)=>r(d,`${n}.filters[${a}].filter[${s}]`))}),t.defaultFilters?.forEach((o,a)=>{i.has(o)||this.report(`${n}.defaultFilters[${a}]`,`no filter "${o}" in this list`)}),t.actions?.forEach((o,a)=>{this.claim(o.id,`${n}.actions[${a}]`),this.checkPress(o,`${n}.actions[${a}]`)})}walkChildren(t,n){t.forEach((r,i)=>this.walkNode(r,`${n}.children[${i}]`))}walkNode(t,n){switch(this.claim(t.id,n),this.checkModifiers(t,n,t.type==="field"?["invisible","readonly","required"]:t.type==="section"||t.type==="form"?["invisible","readonly"]:["invisible"]),t.type){case"field":return this.checkFieldNode(t,n);case"section":return t.collapsible&&!t.title&&this.report(n,"a collapsible section needs a title to fold it by"),t.collapsed&&!t.collapsible&&this.report(n,"collapsed needs collapsible: true"),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);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);Ot(this.page.fields,t.name)?this.report(`${n}.name`,`"${t.name}" is a field of this page: the saved form\u2019s answers need a name of their own`):r!==void 0?this.report(`${n}.name`,`the answers of the saved form at ${r} go under "${t.name}" already: give each copy a name of its own`):this.formNames.set(t.name,n)}walkTabs(t,n){t.children.forEach((r,i)=>{let o=`${n}.children[${i}]`;this.places.add(r.id),this.claim(r.id,o),this.checkModifiers(r,o),this.walkChildren(r.children,o)})}walkSheet(t,n){if(t.title&&(this.need(t.title.field,`${n}.title.field`),t.title.subtitleField!==void 0&&this.need(t.title.subtitleField,`${n}.title.subtitleField`),t.title.avatarField!==void 0&&this.need(t.title.avatarField,`${n}.title.avatarField`)),t.statusbar){let{field:r,visibleStates:i}=t.statusbar,o=this.need(r,`${n}.statusbar.field`);if(o&&o.type!=="selection"&&o.type!=="many2one"&&this.report(`${n}.statusbar.field`,`"${r}" is a ${o.type}; a statusbar needs a selection or many2one`),o?.type==="selection"&&i){let a=new Set(o.options.map(d=>d.value));i.forEach((d,s)=>{a.has(d)||this.report(`${n}.statusbar.visibleStates[${s}]`,`"${d}" is not an option of "${r}"`)})}}t.buttons?.forEach((r,i)=>{this.claim(r.id,`${n}.buttons[${i}]`),this.checkModifiers(r,`${n}.buttons[${i}]`),this.checkPress(r,`${n}.buttons[${i}]`)}),t.statButtons?.forEach((r,i)=>{this.claim(r.id,`${n}.statButtons[${i}]`),this.checkModifiers(r,`${n}.statButtons[${i}]`),this.checkPress(r,`${n}.statButtons[${i}]`),r.field!==void 0&&this.need(r.field,`${n}.statButtons[${i}].field`)}),t.ribbon&&(this.claim(t.ribbon.id,`${n}.ribbon`),this.checkModifiers(t.ribbon,`${n}.ribbon`)),t.badges?.forEach((r,i)=>{this.claim(r.id,`${n}.badges[${i}]`),this.checkModifiers(r,`${n}.badges[${i}]`)});for(let r of["above","below"])t.title?.[r]?.forEach((i,o)=>this.walkNode(i,`${n}.title.${r}[${o}]`));t.alerts?.forEach((r,i)=>{this.claim(r.id,`${n}.alerts[${i}]`),this.checkModifiers(r,`${n}.alerts[${i}]`)}),this.walkChildren(t.children,n),t.sidePanel&&(this.claim(t.sidePanel.id,`${n}.sidePanel`),this.checkModifiers(t.sidePanel,`${n}.sidePanel`))}checkFieldNode(t,n){let r=this.need(t.field,`${n}.field`);t.validate?.forEach((i,o)=>{let a=`${n}.validate[${o}]`;if(this.checkModifiers(i,a,["when","holds"]),i.pattern!==void 0)try{new RegExp(i.pattern)}catch{this.report(`${a}.pattern`,`"${i.pattern}" is not a regular expression`)}}),r&&t.totals&&(r.type!=="one2many"?this.report(`${n}.totals`,`totals only apply to one2many fields; "${t.field}" is a ${r.type}`):t.totals.forEach((i,o)=>{let a=Ot(r.fields,i)?r.fields[i]:void 0;a?["integer","float","monetary"].includes(a.type)||this.report(`${n}.totals[${o}]`,`"${i}" is a ${a.type}; only integer, float and monetary columns add up`):this.report(`${n}.totals[${o}]`,`"${i}" is not a field of the lines of "${t.field}"`)}));for(let[i,o]of Object.entries(t.options??{}))i.endsWith("Field")&&typeof o=="string"&&this.need(o,`${n}.options.${i}`);if(r&&t.editMode&&r.type!=="one2many"&&this.report(`${n}.editMode`,`editMode only applies to one2many fields; "${t.field}" is a ${r.type}`),r&&t.optionalColumns)if(r.type!=="one2many")this.report(`${n}.optionalColumns`,`optional columns only apply to one2many fields; "${t.field}" is a ${r.type}`);else{let i=t.columns??Object.keys(r.fields).filter(o=>o!==r.lineKinds?.field&&o!==r.sequenceField);for(let o of Object.keys(t.optionalColumns))i.includes(o)||this.report(`${n}.optionalColumns.${o}`,`"${o}" is not a column of "${t.field}"`)}!r||!t.columns||(r.type==="one2many"?t.columns.forEach((i,o)=>{Ot(r.fields,i)||this.report(`${n}.columns[${o}]`,`"${i}" is not a field of the lines of "${t.field}"`)}):r.type!=="many2many"&&this.report(`${n}.columns`,`columns only apply to one2many and many2many fields; "${t.field}" is a ${r.type}`))}};var Gt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Aa=["sheet","sections","tabs","wizard"];function cn(e){if(!Gt(e))return{ok:!1,issues:[{path:"(page)",message:"a page is a JSON object"}]};let t=[],n=(s,l)=>t.push({path:s,message:l});e.fieldia!=="0.1"&&n("fieldia",`this build reads format ${"0.1"}`),(typeof e.id!="string"||!e.id)&&n("id","a page needs an id");let r=e.data;(!Gt(r)||!(r.kind==="responses"||r.kind==="record"&&typeof r.model=="string"&&r.model))&&n("data",'data is { "kind": "record", "model": \u2026 } or { "kind": "responses" }');let i=e.fields;if(!Gt(i))n("fields","fields is an object of field definitions, by name");else for(let[s,l]of Object.entries(i))(!Gt(l)||!Tn.includes(l.type)||typeof l.label!="string")&&n(`fields.${s}`,"a field needs a type Fieldia knows and a label");let o=e.layout,a=Gt(o)&&o.type==="list";if((!Gt(o)||(a?!Array.isArray(o.columns):!Aa.includes(o.type)||!Array.isArray(o.children)))&&n("layout","the layout is a sheet, sections, tabs or wizard, with children, or a list with columns"),t.length)return{ok:!1,issues:t};let d=e;try{let s=new Cn(d).run();return s.length?{ok:!1,issues:s}:{ok:!0,page:d}}catch(s){return{ok:!1,issues:[{path:"(page)",message:`a part of this page cannot be read: ${s.message}`}]}}}var Ta=new Set(["title","description","label","help","placeholder","message","text","confirm","alt","caption"]),Ma=new Set(["lineKinds","filter","default","data","translations"]);function On(e,t,n,r,i=!1){if(typeof e=="string")return t!==null&&(t.endsWith("Label")||!i&&Ta.has(t))?n(e):e;if(Array.isArray(e))return e.map(a=>On(a,null,n,r,i));if(e===null||typeof e!="object")return e;r?.(e);let o={};for(let[a,d]of Object.entries(e))o[a]=Ma.has(a)?d:On(d,a,n,r,i||a==="options"&&!Array.isArray(d));return o}function Kt(e,t){return On(e,null,t)}function vi(e){let t=new Set,n=e.fields,r=(i,o=null)=>On(i,o,a=>(a.trim()&&t.add(a),a),a=>{a.type==="wizard"&&r(a.children);let 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 fn(e,t){let n=e.translations?.[t]??e.translations?.[t.split("-")[0]];return n?Kt(e,r=>n[r]??r):e}function Pn(e){let[t,...n]=e.toLowerCase().split("-"),r=n.find(i=>i.length===4&&!/\d/.test(i));return r?/^(arab|hebr|syrc|thaa|nkoo|adlm|rohg)$/.test(r):/^(ar|he|iw|fa|ur|ps|sd|yi|dv|ckb|ug|ks|syr|prs|pnb|azb)$/.test(t)}function xi(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=Dt(e);if(n.length===0)return!1;let i=new xt(n).parse(),o=ft(i,t);return Ue(o)}catch{return!1}}function wi(e){if(e===void 0||typeof e=="boolean"||e==="")return!0;try{let t=Dt(e);return t.length===0||new xt(t).parse(),!0}catch{return!1}}var ki={};var Na={required:"{label} is required",maxLength:"Maximum {max} characters allowed",pattern:"{label} is not in the expected format",text:"{label} must be text",number:"{label} must be a number",integer:"{label} must be a whole number",min:"{label} must be at least {min}",max:"{label} must be at most {max}",decimals:"Maximum {digits} decimal places allowed",boolean:"{label} must be yes or no",dateFormat:"Invalid date format (expected YYYY-MM-DD)",dateInvalid:"Invalid date (check month/day values)",datetimeFormat:"Invalid date and time format (expected YYYY-MM-DDTHH:MM:SS)",datetimeInvalid:"Invalid date and time (check the values)",choice:"Must be one of: {options}",choiceOrOther:"Must be one of: {options}, or an answer of its own",matrix:"{label} takes an answer for each row",matrixRow:"Rows are: {rows}",matrixRows:"Answer every row of {label}",choices:"{label} must be a list of choices",record:"{label} must be a record",records:"{label} must be a list of records",reference:"{label} must point to {aModels}",file:"{label} must be a file",fileSize:"{label} is larger than {size}",fileType:"{label} must be {aTypes} file",minFiles:"Add at least {min} files to {label}",maxFiles:"Too many files for {label}: at most {max}",minLength:"{label} must be at least {min} characters",endsWith:"{label} must end with {ending}",atLeast:"Choose at least {min} for {label}",atMost:"Choose at most {max} for {label}",datePast:"{label} must be in the past",dateFuture:"{label} must be in the future",holds:"{label} does not agree with the other answers",or:"or",tick:"Tick this box to go on",email:"Enter an email address, like name@example.com",url:"Enter a web address, like example.com",phone:"Enter a phone number, like +20 100 123 4567",time:"Enter a time, like 14:30",before:"{label} can\u2019t be before {min}",after:"{label} can\u2019t be after {max}",weekday:"{label} can\u2019t be on a {days}",minLines:"Add at least {min} to {label}",maxLines:"Too many in {label}: at most {max}",addressParts:"Street address|Address line 2|City|State or region|Postcode|Country",locale:"en"},Ge={en:Na,...ki};function Ee(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>r in t?String(t[r]):n)}function Pt(e,t=Ct(new Date)){let n=/^today([+-]\d+)?$/.exec(e);if(!n)return e;let[r,i,o]=t.split("-").map(Number);return new Date(Date.UTC(r,i-1,o+Number(n[1]??0))).toISOString().slice(0,10)}var Si=(e,t,n)=>new Intl.DateTimeFormat(t.locale,{...e,timeZone:"UTC",numberingSystem:"latn"}).format(n);function wr(e,t,n,r){if(e.type!=="date"&&e.type!=="datetime")return;let i=e.type==="date"?t:Ct(new Date(t)),o=(m,f)=>Ee(r[m],{label:e.label,min:f,max:f,days:f}),a=m=>Si({day:"numeric",month:"long",year:"numeric"},r,Date.parse(m)),d=e.min&&Pt(e.min,n),s=e.max&&Pt(e.max,n);if(d&&i<d)return o("before",a(d));if(s&&i>s)return o("after",a(s));let l=e.days;if(l&&!l.includes(new Date(Date.parse(i)).getUTCDay()||7)){let m=[1,2,3,4,5,6,7].filter(f=>!l.includes(f)).map(f=>Si({weekday:"long"},r,Date.UTC(2024,0,f)));return o("weekday",m.length>1?`${m.slice(0,-1).join(", ")} ${r.or} ${m[m.length-1]}`:m[0])}}function Wt(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 It(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=i.default;n[r]=o===void 0?Wt(i):i.type==="date"&&typeof o=="string"&&o.startsWith("today")?Pt(o,t):ve(o)}return n}function ut(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 et(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=t[r];n[r]=o?$a(o,i):i}return n}function $a(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 Ye(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 In(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 Jt(e,t,n,r=Ge.en,i){let o=e.label||"This field",a=(d,s={})=>Ee(r[d],{label:o,...s});if(ut(e,t))return n?a("required"):void 0;if(e.type==="matrix")return Ca(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&&Oa(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 Pa(t,a)??wr(e,t,i,r);case"datetime":return Va(t,a)??wr(e,t,i,r);case"selection":{if(e.optionsFrom)return;let d=new Set(e.options.map(m=>m.value)),s=a(e.other?"choiceOrOther":"choice",{options:e.options.map(m=>m.label).join(", ")}),l=m=>(e.other===!0||e.ownAnswers===!0)&&typeof m=="string"&&m.trim()!==""&&!d.has(m);return e.multiple?Array.isArray(t)?(t.filter(f=>!d.has(f)).length<=1||e.ownAnswers)&&t.every(f=>d.has(f)||l(f))?void 0:s:a("choices"):d.has(t)||l(t)?void 0:s}case"many2one":return kr(t)?void 0:a("record");case"many2many":return Array.isArray(t)&&t.every(kr)?void 0:a("records");case"reference":{let d=t;if(!kr(t)||typeof d.model!="string")return a("record");if(!e.models.some(s=>s.value===d.model)){let s=Li(e.models.map(l=>l.label),r.or);return a("reference",{models:s,aModels:Ri(s)})}return}case"binary":case"image":return Da(e,t,a,r);default:return}}function Ca(e,t,n,r){if(t===null||typeof t!="object"||Array.isArray(t))return r("matrix");let i=new Set(e.rows.map(s=>String(s.value))),o=new Set(e.columns.map(s=>s.value)),a=r("choice",{options:e.columns.map(s=>s.label).join(", ")});for(let[s,l]of Object.entries(t)){if(!i.has(s))return r("matrixRow",{rows:e.rows.map(f=>f.label).join(", ")});let m=e.multiple&&Array.isArray(l)?l:[l];if(!e.multiple&&Array.isArray(l)||m.some(f=>f!=null&&!o.has(f)))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 Oa(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 kr(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&(typeof e.id=="number"||typeof e.id=="string")&&typeof e.label=="string"}function Pa(e,t){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return t("dateFormat");let[n,r,i]=e.split("-").map(Number);return Ei(n,r,i)?void 0:t("dateInvalid")}var Ia=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,9})?)?(?:Z|[+-]\d{2}:\d{2})?$/;function Va(e,t){let n=typeof e=="string"?Ia.exec(e):null;if(!n)return t("datetimeFormat");let[r,i,o,a,d,s]=n.slice(1).map(l=>Number(l??0));return Ei(r,i,o)&&a<24&&d<60&&s<60?void 0:t("datetimeInvalid")}function Ei(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 Da(e,t,n,r){let i=e.multiple?Array.isArray(t)?t:[t]:[t];if(e.multiple&&e.minFiles!==void 0&&i.length<e.minFiles)return n("minFiles",{min:e.minFiles});if(e.multiple&&e.maxFiles!==void 0&&i.length>e.maxFiles)return n("maxFiles",{max:e.maxFiles});for(let o of i){if(!Wa(o))return n("file");let a=un(e,o,r,e.multiple?o.name:e.label||"This field");if(a)return a}}function un(e,t,n=Ge.en,r=t.name){if(e.maxSize!==void 0&&t.size>e.maxSize)return Ee(n.fileSize,{label:r,size:kt(e.maxSize)});let i=e.type==="image"?["image/*"]:e.accept;if(i&&!za(i,t.type)){let o=pn(i,n.or);return Ee(n.fileType,{label:r,types:o,aTypes:Ri(o)})}}function Wa(e){let t=e;return e!==null&&typeof e=="object"&&typeof t.name=="string"&&typeof t.size=="number"}function za(e,t){return e.some(n=>n.endsWith("/*")?t.startsWith(n.slice(0,-1)):n===t)}var ja="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 Ha(e){if(e.endsWith("/*"))return e.slice(0,-2);let t=e.split("/")[1]??e;return ja.find(([n])=>t.includes(n))?.[1]??t.toUpperCase()}function pn(e,t){return Li([...new Set(e.map(Ha))],t)}function Li(e,t){return e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`}function Ri(e){return/^[aeiou]/i.test(e)?`an ${e}`:`a ${e}`}function kt(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 Fi=e=>Math.round(e*1e9)/1e9,Ai=(e,t)=>e.find(n=>n.value===t)?.score??0,Ti=e=>e.reduce((t,n)=>Math.max(t,n.score??0),0),Mi=e=>e.reduce((t,n)=>t+Math.max(0,n.score??0),0),Ni=(e,t,n)=>n?Array.isArray(t)?t.reduce((r,i)=>r+Ai(e,i),0):0:Ai(e,t);function $i(e,t){let n=0,r=0,i=!1;for(let[o,a]of Object.entries(e.fields))if(a.type==="selection"&&a.options.some(d=>d.score!==void 0)){i=!0;let d=a.multiple===!0;n+=Ni(a.options,t[o],d),r+=d?Mi(a.options):Ti(a.options)}else if(a.type==="matrix"&&a.columns.some(d=>d.score!==void 0)){i=!0;let d=a.multiple===!0,s=t[o],l=s&&typeof s=="object"&&!Array.isArray(s)?s:{};for(let m of a.rows)n+=Ni(a.columns,l[String(m.value)],d),r+=d?Mi(a.columns):Ti(a.columns)}return i?{score:Fi(n),max:Fi(r)}:null}function Ci(e){return Object.assign(new Error(e.message),{problem:e})}function Vn(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 Yt(e,t){return t.every(n=>Sr(e,n))}function Sr(e,t){return"any"in t?t.any.some(n=>Sr(e,n)):"all"in t?t.all.every(n=>Sr(e,n)):Ba(e,t)}function zt(e){return e!=null&&e!==""&&e!==!1&&!(Array.isArray(e)&&!e.length)}function Ba(e,t){let n=e[t.field],r=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"id"in n?n.id:n,i=t.value,o=n!==null&&typeof n=="object"&&!Array.isArray(n)&&"label"in n?String(n.label):String(r??"");switch(t.op){case"=":return r===i;case"!=":return r!==i;case"<":return zt(r)&&r<i;case">":return zt(r)&&r>i;case"<=":return zt(r)&&r<=i;case">=":return zt(r)&&r>=i;case"in":return Array.isArray(i)&&i.includes(r);case"not in":return Array.isArray(i)&&!i.includes(r);case"like":return o.includes(String(i));case"ilike":return o.toLowerCase().includes(String(i).toLowerCase());case"startswith":return o.toLowerCase().startsWith(String(i).toLowerCase());case"endswith":return o.toLowerCase().endsWith(String(i).toLowerCase());case"set":return zt(n);case"notset":return!zt(n);case"between":{if(!zt(r)||!Array.isArray(i))return!1;let[a,d]=i;return r>=a&&r<=d}}}var Oi=new Set(["char","text","html"]),Pi=new Set(["integer","float","monetary"]),qa=new Set(["many2one","many2many"]);function Dn(e,t,n,r={searchFor:"Search {field} for: {text}"}){let i=e.trim();if(!i)return[];let o=[];for(let d of n.searchFields??n.columns){let s=t.fields[d];if(!s)continue;let l=(m,f,w,c)=>o.push({field:d,fieldLabel:s.label,op:m,value:f,valueLabel:w,label:c??Ee(r.searchFor,{field:s.label,text:i})});if(Oi.has(s.type)||qa.has(s.type))l("ilike",i,i);else if(s.type==="selection"){let m=i.toLowerCase();for(let f of s.options)f.label.toLowerCase().includes(m)&&l("=",f.value,f.label,`${s.label}: ${f.label}`)}else if(Pi.has(s.type)){let m=Number(i.replace(/[\s,]/g,""));i&&Number.isFinite(m)&&l("=",m,i)}}let a=d=>{let s=t.fields[d.field]?.type??"";return Oi.has(s)?0:s==="selection"?1:Pi.has(s)?2:3};return o.map((d,s)=>({s:d,i:s})).sort((d,s)=>a(d.s)-a(s.s)||d.i-s.i).map(({s:d})=>d)}function Wn(e,t){let n=[];for(let r of e)if(r.kind==="field"){let i=r.values.map(o=>({field:r.field,op:o.op,value:o.value}));n.push(i.length===1?i[0]:{any:i})}else if(r.kind==="filters"){let i=r.ids.map(o=>t.filters?.find(a=>a.id===o)?.filter??[]).filter(o=>o.length);i.length===1?n.push(...i[0]):i.length>1&&n.push({any:i.map(o=>o.length===1?o[0]:{all:o})})}else r.kind==="custom"&&n.push(...r.filter);return n}function zn(e){return e.find(t=>t.kind==="groupBy")?.fields??[]}var mn={setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function jn(e,t=mn){return new Promise(n=>{t.setTimeout(n,e)})}function Ii(e={}){let t=ve(e.records??{}),n=[],r=[],i=1e3,o=()=>e.delayMs?jn(e.delayMs,e.scheduler):Promise.resolve(),a=c=>t[c]??(t[c]={}),d=(c,h)=>{let u=a(c)[String(h)]?.[e.labelField?.[c]??"name"];return typeof u=="string"?u:String(h)},s=c=>Math.max(0,...Object.keys(a(c)).map(Number).filter(Number.isFinite))+1,l=c=>Number.isFinite(Number(c))?Number(c):c;function m(c,h){let u=[...c];for(let y of h)y.op==="create"?u.push({key:y.key,id:++i,values:ve(y.values)}):y.op==="update"?u=u.map(v=>v.id===y.id?{...v,values:{...v.values,...ve(y.values)}}:v):u=u.filter(v=>v.id!==y.id);return u}function f(c,h,u){let y=[...c],v=b=>({id:b,label:d(u,b)});for(let b of h)b.op==="link"&&!y.some(p=>p.id===b.id)?y.push(v(b.id)):b.op==="unlink"?y=y.filter(p=>p.id!==b.id):b.op==="set"?y=b.ids.map(v):b.op==="clear"&&(y=[]);return y}function w(c,h){let u=c[h];return u&&"relation"in u?u.relation:h}return{records:t,responses:n,calls:r,async load(c){r.push({method:"load",request:c}),await o();let h=a(c.model)[String(c.id)];if(!h)throw new Error(`No ${c.model} record with id ${c.id}`);return ve(h)},async save(c){r.push({method:"save",request:c}),await o();let h=c.id??s(c.model),u={...a(c.model)[String(h)]??{},...ve(c.changes.values)};for(let[y,v]of Object.entries(c.changes.lines))u[y]=m(u[y]??[],v);for(let[y,v]of Object.entries(c.changes.links))u[y]=f(u[y]??[],v,w(c.fields,y));return a(c.model)[String(h)]=u,{id:h,values:ve(u)}},async onchange(c){r.push({method:"onchange",request:c}),await o();let h=e.onchange?.[c.model]?.[c.changed],u=e.warnings?.[c.model]?.[c.changed],y=h?{values:h(ve(c.values))}:{},v=u?.(ve(c.values));return v?{...y,warning:v}:y},async search(c){r.push({method:"search",request:c}),await o();let h=c.query.trim().toLowerCase();return Object.entries(a(c.model)).filter(([,u])=>Yt(u,c.filter??[])).map(([u])=>({id:l(u),label:d(c.model,l(u))})).filter(u=>u.label.toLowerCase().includes(h)).slice(0,c.limit??8)},async list(c){r.push({method:"list",request:c}),await o();let h=Object.entries(a(c.model)).filter(([,u])=>Yt(u,c.filter)).map(([u,y])=>({id:l(u),values:y}));return h.sort((u,y)=>{for(let v of c.sort){let b=Ua(u.values[v.field],y.values[v.field]);if(b.empty)return b.result;if(b.result)return v.desc?-b.result:b.result}return 0}),{total:h.length,records:h.slice(c.offset,c.offset+c.limit).map(({id:u,values:y})=>({id:u,values:Object.fromEntries(c.fields.map(v=>[v,ve(y[v]??null)]))}))}},async groups(c){r.push({method:"groups",request:c}),await o();let h=new Map;for(let u of Object.values(a(c.model))){if(!Yt(u,c.filter))continue;let y=u[c.field]??null,v=y!==null&&typeof y=="object"&&!Array.isArray(y)&&"id"in y?y:null,b=v?v.id:y,p=JSON.stringify(b),k=h.get(p)??{value:b,label:v?v.label:y===null||y===""?"":String(y),count:0};k.count++,h.set(p,k)}return[...h.values()].sort((u,y)=>u.value===null==(y.value===null)?u.label.localeCompare(y.label):u.value===null?1:-1)},async create(c){r.push({method:"create",request:c}),await o();let h=a(c.model),u=Object.keys(h).reduce((y,v)=>Math.max(y,Number(v)||0),0)+1;return h[String(u)]={name:c.name},{id:u,label:c.name}},async submit(c){return r.push({method:"submit",request:c}),await o(),n.push(ve(c)),{id:n.length}},async options(c){r.push({method:"options",request:c}),await o();let h=e.lists?.[c.list];if(!h)throw new Error(`No list "${c.list}"`);return ve(typeof h=="function"?await h(c.values):h)}}}function Ua(e,t){let n=a=>a==null||a==="";if(n(e)||n(t))return{result:n(e)===n(t)?0:n(e)?1:-1,empty:n(e)!==n(t)};let r=a=>typeof a=="object"&&a!==null&&"label"in a?a.label:a,[i,o]=[r(e),r(t)];return typeof i=="number"&&typeof o=="number"?{result:i-o,empty:!1}:{result:String(i).localeCompare(String(o)),empty:!1}}var Hn=["street","line2","city","region","postcode","country"];function Vi(e,t,n,r){let i=t.options??{},o=t.label??e.label;if(e.type==="one2many"&&Array.isArray(n)&&n.length){if(typeof i.min=="number"&&n.length<i.min)return Ee(r.minLines,{label:o,min:i.min});if(typeof i.max=="number"&&n.length>i.max)return Ee(r.maxLines,{label:o,max:i.max})}let a=i.requiredParts;if(t.widget!=="address"||!Array.isArray(a)||!n||typeof n!="object"||Array.isArray(n))return;let d=Array.isArray(i.parts)?i.parts:Hn,s=n,l=Hn.findIndex(m=>a.includes(m)&&d.includes(m)&&!String(s[m]??"").trim());return l<0?void 0:Ee(r.required,{label:r.addressParts.split("|")[l]})}var _a={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 Er(e,t,n,r){let i=t.widget??"";if(e.type!=="char")return Vi(e,t,n,r);if(typeof n!="string"||!n.trim())return;let o=n.trim(),a=t.options??{},d=t.label??e.label,s=_a[i],l=o.match(/\p{Nd}/gu)?.length??0;if(s&&(!s.test(o)||i==="phone"&&(l<7||l>15)))return r[i];if(i==="time"){if(typeof a.min=="string"&&o<a.min)return Ee(r.before,{label:d,min:a.min});if(typeof a.max=="string"&&o>a.max)return Ee(r.after,{label:d,max:a.max})}if(i==="tags"&&typeof a.max=="number"&&o.split(typeof a.separator=="string"&&a.separator?a.separator:",").filter(f=>f.trim()).length>a.max)return Ee(r.atMost,{label:d,max:a.max})}function Xt(e,t,n){let r=new Map;return{today:n,lines(i){let o=t[i];if(o?.type!=="one2many")return;let a=r.get(i);return a||(a=(e[i]??[]).filter(s=>Ye(o,s.values)===null).map(s=>et(s.values,o.fields)),r.set(i,a)),a}}}function Di(e){let t=new Map;for(let[r,i]of Object.entries(e))i.compute!==void 0&&t.set(r,wt(i.compute));let{order:n}=$n(new Map([...t].map(([r,i])=>[r,i.fields])));return n.map(r=>[r,t.get(r),e[r]])}function gn(e,t){if(e.type==="boolean")return Ue(t);if(t==null)return null;switch(e.type){case"integer":return ze(t)?dn(t,0):null;case"float":case"monetary":return ze(t)?e.digits?dn(t,e.digits[1]):t:null;case"char":case"text":case"html":return typeof t=="string"?t:ze(t)?String(t):null;case"date":case"datetime":return typeof t=="string"?t:null;default:return t}}function Wi(e,t){let n=Di(e.fields),r=new Map;for(let[d,s]of Object.entries(e.fields)){if(s.type!=="one2many")continue;let l=Di(s.fields);l.length&&r.set(d,{def:s,steps:l})}let i={today:t};function o(d,s,l,m){let f=d,w=et(d,l);for(let[c,h,u]of s){let y=gn(u,h.evaluate(w,m));In(y,f[c])||(f={...f,[c]:y},Object.assign(w,et({[c]:y},l)))}return f}function a(d,s){let l=r.get(d);return!l||Ye(l.def,s)!==null?s:o(s,l.steps,l.def.fields,i)}return{line:a,apply(d){let s=d;for(let l of r.keys()){let m=s[l];if(!Array.isArray(m))continue;let f=!1,w=m.map(c=>{let h=a(l,c.values);return h===c.values?c:(f=!0,{...c,values:h})});f&&(s={...s,[l]:w})}return n.length?o(s,n,e.fields,Xt(s,e.fields,t)):s}}}function zi(e){return Object.entries(e).flatMap(([t,n])=>(n.setWhen??[]).map((r,i)=>({key:`${t}#${i}`,name:t,def:n,when:_e(r.when),value:wt(r.value)})))}var Ga={has:()=>!0};function ji(e,t){let n=zi(e.fields),r=new Map;for(let[d,s]of Object.entries(e.fields)){if(s.type!=="one2many")continue;let l=zi(s.fields);l.length&&r.set(d,{def:s,rules:l})}let i={today:t};function o(d,s,l,m,f,w,c){let h=d,u=et(d,l);for(let y of s){if(!y.when.evaluate(u,m))continue;let v=f+y.key;if(c.add(v),w.has(v))continue;let b=gn(y.def,y.value.evaluate(u,m));In(b,h[y.name])||(h={...h,[y.name]:b})}return h}function a(d,s){let l=new Set,m=n.length?o(d,n,e.fields,Xt(d,e.fields,t),"",s,l):d;for(let[f,{def:w,rules:c}]of r){let h=d[f];if(!Array.isArray(h))continue;let u=!1,y=h.map(v=>{if(Ye(w,v.values)!==null)return v;let b=o(v.values,c,w.fields,i,`${f}.${v.key}.`,s,l);return b===v.values?v:(u=!0,{...v,values:b})});u&&(m={...m,[f]:y})}return{values:m,holding:l}}return{apply:a,holding:d=>a(d,Ga).holding}}function Hi(e){return(e??[]).map(t=>({rule:t,when:_e(t.when??!0),pattern:t.pattern===void 0?null:new RegExp(`^(?:${t.pattern})$`),holds:t.holds===void 0?null:_e(t.holds)}))}function Bi(e,t,n,r,i){let o={};if(!r.length||ut(e,n))return o;for(let a of r){let d=a.rule.level??"error";if(o[d]!==void 0||!a.when.evaluate(i.context,i.env))continue;let s=Ka(a,e,n,i.now)??Ya(a,i);s&&(o[d]=a.rule.message??Ee(i.messages[s.say],{label:t,...s.values}))}return o}function Ka({rule:e,pattern:t},n,r,i){let o=typeof r=="string"?r:null;if(o!==null&&e.minLength!==void 0&&o.length<e.minLength)return{say:"minLength",values:{min:e.minLength}};if(o!==null&&e.maxLength!==void 0&&o.length>e.maxLength)return{say:"maxLength",values:{max:e.maxLength}};if(t&&(o!==null||ze(r))&&!t.test(String(r)))return{say:"pattern"};if(o!==null&&e.endsWith!==void 0&&!o.trim().toLowerCase().endsWith(e.endsWith.toLowerCase()))return{say:"endsWith",values:{ending:e.endsWith}};if(ze(r)&&e.min!==void 0&&r<e.min)return{say:"min",values:{min:e.min}};if(ze(r)&&e.max!==void 0&&r>e.max)return{say:"max",values:{max:e.max}};let a=Array.isArray(r)?r.length:null;if(a!==null&&e.atLeast!==void 0&&a<e.atLeast)return{say:"atLeast",values:{min:e.atLeast}};if(a!==null&&e.atMost!==void 0&&a>e.atMost)return{say:"atMost",values:{max:e.atMost}};if(o!==null&&e.date!==void 0){let d=Xa(n,o,i);if(e.date==="past"&&d>=0)return{say:"datePast"};if(e.date==="future"&&d<=0)return{say:"dateFuture"}}}var Ja=e=>e==null||typeof e=="string"&&!e.trim()||Array.isArray(e)&&!e.length;function Ya({holds:e},t){if(!(!e||e.fields.some(n=>Ja(t.context[n]))))return e.evaluate(t.context,t.env)?void 0:{say:"holds"}}function Xa(e,t,n){if(e.type==="datetime")return Math.sign(Date.parse(t)-n.getTime());let r=Ct(n);return t<r?-1:t>r?1:0}var Bn=Object.freeze({done:!0}),Lr=new Set(["char","text","html","integer","float","monetary","boolean","date","datetime","selection","json"]),Rr=e=>e instanceof Error?e.message:String(e);function qi(e){let t=new Map,n=new Map,r=b=>{let p=t.get(b);return p||t.set(b,p=wt(b)),p};function i(b){if(typeof b=="boolean")return b;let p=n.get(b);p||n.set(b,p=_e(b));let{context:k,env:E}=e.reading();return p.evaluate(k,E)}let o=b=>{let p=b.trim();return An.test(p)?p:null};function a(b,p){let k=o(b);if(p&&k!==null&&k in e.fields)return ve(e.values()[k]);let{context:E,env:L}=e.reading();return r(b).evaluate(E,L)}function d(b,p){let k=e.values();for(let[E,L]of Object.entries(e.fields)){if(L.type!=="many2one"&&L.type!=="many2many"||L.relation!==b)continue;let x=k[E],P=(Array.isArray(x)?x:x?[x]:[]).find(O=>O&&O.id===p);if(P)return P.label}}function s(b,p,k=()=>{}){let E=L=>{if(L==null||L===!1||L==="")return null;let x=b.relation,A=P=>k(P)??d(x,P)??String(P);if(typeof L=="number"||typeof L=="string")return{id:L,label:A(L)};if(typeof L=="object"&&!Array.isArray(L)&&"id"in L){let P=L;return{id:P.id,label:typeof P.label=="string"?P.label:A(P.id)}}return null};return b.type==="many2one"?E(p):b.type==="many2many"?(Array.isArray(p)?p:[p]).map(E).filter(L=>L!==null):gn(b,p)}function l(b){let p=e.fields[b];if(!p)throw new Error(`The page has no field "${b}"`);return p}async function m(b){return e.host?e.host.ask(b):e.confirm?e.confirm(b):!0}function f(b){return{reason:"cannot",message:b}}async function w(b,p){let k=e.host;if(!k)return f(`Nothing can open "${b.page}" here: the form has no host`);let E=b.record!==void 0?a(b.record,!1):null,L={page:b.page,...b.version!==void 0?{version:b.version}:{},as:b.as??"dialog",...b.side&&b.as==="panel"?{side:b.side}:{},...b.title!==void 0?{title:b.title}:{},recordId:typeof E=="number"||typeof E=="string"&&E!==""?E:null,...b.values?{values:c(b.values)}:{}},x;try{x=await k.open(L)}catch(P){return{reason:"cannot",message:Rr(P),error:P}}if(!x.saved)return{reason:"closed"};if(b.into&&e.write(h(b.into,x)),!b.then)return null;let A=await v(b.then,p);return A.done?null:{reason:A.reason,message:A.message,step:A.step,error:A.error}}function c(b){let p={};for(let[k,E]of Object.entries(b))p[k]=a(E,!0)??null;return p}function h(b,p){let k=p.values??{},E=p.recordId??null,L={...Za(k),id:E},x=[p.label,k.display_name,k.name].find(O=>typeof O=="string"&&O!==""),A=O=>O===E?x:void 0,P={};for(let[O,q]of Object.entries(b)){let V=l(O),G=o(q),T=G==="id"?E:G!==null&&!Lr.has(V.type)&&G in k?k[G]:r(q).evaluate(L,{today:e.today});P[O]=s(V,T,A)}return P}async function u(b,p){let k={id:p.id,action:b.action,...b.params?{params:ve(b.params)}:{},recordId:e.recordId(),values:ve(e.values()),...p.recordIds?{recordIds:[...p.recordIds]}:{}};if(!e.onAction)return null;let E;try{E=await e.onAction(k)??void 0}catch(L){return{reason:"app",message:Rr(L),error:L}}if(e.answered(k,E),!E)return null;if(E.values){let L={};for(let[x,A]of Object.entries(E.values))x in e.fields&&(L[x]=s(e.fields[x],A));e.write(L)}if(E.say!==void 0){let L=typeof E.say=="string"?{message:E.say}:E.say;e.host?.say(L.message,L.tone??"info")}if(E.open){let L=await w(E.open,p);if(L)return L}return E.stop?(typeof E.stop=="string"&&e.host?.say(E.stop,"warning"),{reason:"app",...typeof E.stop=="string"?{message:E.stop}:{}}):null}async function y(b,p){switch(b.do){case"set":{let k=l(b.field);return e.write({[b.field]:s(k,a(b.value,!Lr.has(k.type)))}),null}case"clear":return e.write({[b.field]:Wt(l(b.field))}),null;case"addLine":{let k=l(b.field);if(k.type!=="one2many")return f(`"${b.field}" is a ${k.type}; a line is added to a one2many`);let E={};for(let[L,x]of Object.entries(b.values??{})){let A=k.fields[L];if(!A)return f(`The lines of "${b.field}" have no field "${L}"`);E[L]=s(A,a(x,!Lr.has(A.type)))}return e.addLine(b.field,E),null}case"check":return e.check(b.fields);case"save":return e.save(p.chain);case"reset":return e.reset(),null;case"goTo":{let k=e.goTo(b.target,p.chain);if(k!==void 0)return k;let E=e.host?.show;return E?(e.showing(p.chain,()=>E.call(e.host,b.target)),null):f(`Nothing can show "${b.target}" here: the form has no host that shows tabs`)}case"say":return e.host?.say(b.message,b.tone??"info"),null;case"ask":return await m(b.message)?null:{reason:"no",message:b.message};case"call":return u(b,p);case"open":return w(b,p);case"close":{let k=e.host?.close;return k?(k.call(e.host),null):f("Nothing can close this form: it has no host, or was not opened in a dialog or panel")}}}async function v(b,p){for(let k=0;k<b.length;k++){let E=b[k],L;try{if(E.when!==void 0&&!i(E.when))continue;L=await y(E,p)}catch(x){L={reason:"cannot",message:Rr(x),error:x}}if(L)return{done:!1,stoppedAt:k,step:L.step??E,reason:L.reason,...L.message!==void 0?{message:L.message}:{},...L.error!==void 0?{error:L.error}:{}}}return Bn}return{runSteps:v,ask:m}}function Za(e){let t={},n=r=>{if(r===null||typeof r!="object")return r;let i=r;return"key"in i&&"values"in i?i.key:"model"in i&&"id"in i?`${i.model},${i.id}`:"id"in i?i.id:"name"in i&&"type"in i&&"size"in i?i.name:r};for(let[r,i]of Object.entries(e))t[r]=Array.isArray(i)?i.map(n):n(i);return t}function Ui(e){let t=new Map;return function(r,i,o,a){if(!i?.length||o.includes(r))return Promise.resolve(Bn);let d=l=>{let m,f=new Promise(w=>m=w).finally(()=>{l.running===f&&!l.queued&&t.delete(r)});return l.running=f,m(e(r,i,[...o,r])),f},s=t.get(r);if(!s){let l={running:Promise.resolve(Bn)};return t.set(r,l),d(l)}if(!a)return Promise.resolve(Bn);if(!s.queued){let l=()=>(s.queued=void 0,d(s));s.queued=s.running.then(l,l)}return s.queued}}function qn(e){return Ki(e,[]).form}var _i=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Fr=e=>e;function Ki(e,t){let{page:n}=e,r=e.scheduler??mn,i=e.messages??Ge.en,o=ns(n.layout),a=new Map;for(let g of o.values()){let S=g.source.validate;g.kind==="field"&&S&&a.set(g.id,Hi(S))}let d=[...a.values()].some(g=>g.some(S=>S.rule.level==="warning")),s=n.layout.type==="wizard"?n.layout.children.map(g=>g.id):[],l=()=>`fieldia:draft:${n.id}:${p.recordId??"new"}`,m=()=>Ct(e.now?.()??new Date),f=Wi(n,m),w=ji(n,m),c=new Map;for(let g of o.values())g.kind==="form"&&c.set(g.id,g.source);let h=new Map,u={...n.fields};for(let g of c.values())u[g.name]={type:"json",label:g.title||g.name};let y=!1,v=f.apply({...It(u,m()),...ve(e.values??{})}),b=w.holding(v),p={status:e.recordId!=null?"idle":"ready",recordId:e.recordId??null,values:ve(v),errors:{},dirty:[],warnings:{},warning:null,warningField:null,error:null,draft:null,step:s[0]??null,skipped:[],saveProblem:null,choices:{}},k={},E=0,L=0,x=null,A=null,P=new Set,O=new Set,q=new Map,V=[],G=!1,T=null,B=null,X={};function I(g){let S=p.values,M=p.errors;if(p={...p,...g},p.errors!==M)for(let F of h.values())F.inner.show(Qa(p.errors,F.name));for(let F of[...O])F(p);if(p.values!==S)for(let F in p.choices)ie(F).dependsOn?.some(j=>S[j]!==p.values[j])&&J(F);G&&p.step!==T&&K(V)}function Y(g,S){let M=q.get(g);if(M)for(let F of[...M])F(S)}function N(g,S){Y("change",{field:g,value:p.values[g],values:p.values,by:S});let M=n.on?.change?.[g];S==="person"&&M&&D(fe(`on.change.${g}`,M,[],!0))}function K(g){let S=p.step;if(S===T||S===null)return;T=S,Y("step",{step:S});let M=n.on?.show?.[S];M&&D(fe(`on.show.${S}`,M,g,!0))}function Z(g,S){let M=V;V=g;try{S()}finally{V=M}}let ie=g=>n.fields[g].optionsFrom;function J(g){let{list:S}=ie(g),M=X[g]=(X[g]??0)+1,F=z=>M===X[g]&&I({choices:{...p.choices,[g]:z}}),j=p.choices[g]?.options??null;F({options:j,loading:!0});let W=e.dataSource;D((W?.options?W.options({list:S,values:ve(p.values)}):Promise.reject(new Error(`No list "${S}"`))).then(z=>F({options:z}),z=>F({options:j,error:z.message??String(z)})))}function $(g){let S=n.fields[g],M=p.choices[g]?.options;return S.type==="selection"&&S.optionsFrom&&M?{...S,options:M,optionsFrom:void 0}:S}function D(g){P.add(g);let S=()=>P.delete(g);return g.then(S,S),g}function ne(){if(B?.values!==p.values){let g=p.values;B={values:g,context:et(g,n.fields),env:Xt(g,n.fields,m)}}return B}let Q=()=>ne().context;function se(g){let S=u[g];if(!S)throw new Error(`The page has no field "${g}"`);return S}function re(g){return Object.keys(u).filter(S=>JSON.stringify(g[S]??null)!==JSON.stringify(v[S]??null))}function le(g){let S=o.get(g);if(!S)throw new Error(`The page has no element "${g}"`);let{context:M,env:F}=ne(),j=S.invisible.evaluate(M,F);for(let te=S.parent;!j&&te;te=o.get(te)?.parent??null)j=o.get(te)?.invisible.evaluate(M,F)??!1;let W=S.readonly.evaluate(M,F);for(let te=S.parent;!W&&te;te=o.get(te)?.parent??null)W=o.get(te)?.readonly.evaluate(M,F)??!1;let z=S.field?n.fields[S.field]:void 0;return{invisible:j,readonly:W||z!==void 0&&Gi(z),required:S.required.evaluate(M,F)||z?.required===!0}}function _(g,S="field"){let M=j=>{if(!g)return!0;for(let W=j.id;W;W=o.get(W)?.parent??null)if(W===g)return!0;return!1},F=j=>{if(g||!p.skipped.length)return!1;for(let W=j.id;W;W=o.get(W)?.parent??null)if(p.skipped.includes(W))return!0;return!1};return[...o.values()].filter(j=>j.kind===S&&M(j)&&!F(j)&&!le(j.id).invisible)}function H(g){let S=a.get(g.id);if(!S)return{};let M=g.field,F=n.fields[M],j=g.source.label??F.label,{context:W,env:z}=ne();return Bi(F,j,p.values[M],S,{context:W,env:z,now:e.now?.()??new Date,messages:i})}function U(g){let S=g.field;return g.source.widget==="tick"&&n.fields[S].type==="boolean"&&p.values[S]!==!0&&le(g.id).required?i.tick:void 0}function me(g){let S=g.field;return U(g)??Er(n.fields[S],g.source,p.values[S],i)??Jt($(S),p.values[S],le(g.id).required,i,m())??H(g).error}function xe(){var S;let g={};if(!d)return g;for(let M of _()){let F=a.has(M.id)?H(M).warning:void 0;F&&(g[S=M.field]??(g[S]=F))}return g}function we(g,S){let M=p;p={...p,values:g};try{return S()}finally{p=M}}function ce(g){let S={};for(let M of _(g)){let F=M.field;if(S[F])continue;let j=n.fields[F],W=me(M);if(W&&(S[F]=W),j.type==="one2many")for(let z of p.values[F]??[]){let te=Ye(j,z.values);for(let[ye,Te]of Object.entries(j.fields)){if(te&&ye!==j.lineKinds?.text)continue;let be=Jt(Te,z.values[ye],Te.required===!0,i,m());be&&(S[`${F}.${z.key}.${ye}`]=be)}}}for(let M of _(g,"form")){let F=h.get(M.id);if(F)for(let[j,W]of Object.entries(F.inner.errorsNow()))S[`${F.name}.${j}`]=W}return S}function Ne(g,S){let M=g;for(let F of h.values())if(!(S!=="start"&&M[F.name]===F.inner.form.getState().values)){y=!0;try{F.inner.take(_i(M[F.name])?M[F.name]:{},S)}finally{y=!1}M={...M,[F.name]:Fr(F.inner.form.getState().values)}}return M}function Ke(g){let S=f.apply(g);for(let M=0;M<8;M++){let F=w.apply(S,b);if(b=F.holding,F.values===S)break;S=f.apply(F.values)}return S}function Je(g){let S=f.apply(g);return b=w.holding(S),S}function De(g,S={},M=!1){let F=Ne(M?Je(g):Ke(g),M?"fresh":"edit"),j=Object.keys(p.errors).length?bt(F):p.errors;I({values:F,dirty:re(F),errors:j,warnings:we(F,xe),...S})}function bt(g){let S=we(g,()=>ce(p.step??void 0)),M={};for(let F of Object.keys(p.errors))S[F]&&(M[F]=S[F]);for(let[F,j]of Object.entries(k))JSON.stringify(g[F]??null)===j.value?M[F]??(M[F]=j.message):delete k[F];return M}function Vt(){let g=e.drafts;g&&(x!==null&&r.clearTimeout(x),x=r.setTimeout(()=>{x=null,g.store.setItem(l(),JSON.stringify({savedAt:new Date().toISOString(),values:p.values}))},g.delayMs??400))}function qe(){x!==null&&r.clearTimeout(x),x=null,e.drafts?.store.removeItem(l())}function nt(){let g=e.drafts;if(!g)return;let S=g.store.getItem(l());if(!S)return;let M;try{M=JSON.parse(S)}catch{g.store.removeItem(l());return}g.restore==="auto"?De({...p.values,...M.values},{draft:null},!0):I({draft:{savedAt:M.savedAt}})}function Ft(){let g=e.autosave;!g||n.data.kind!=="record"||(A!==null&&r.clearTimeout(A),A=r.setTimeout(()=>{A=null,p.dirty.length&&Object.keys(ce()).length===0&&D(At())},g.delayMs))}function Ie(g){let S=e.dataSource;if(!S?.onchange||n.data.kind!=="record")return;let M=++L,F={model:n.data.model,id:p.recordId,changed:g,values:ve(p.values)};D(S.onchange(F).then(j=>{if(M!==L)return;let W={...p.values,...j.values??{}};De(W,{warning:j.warning??null,warningField:j.warning?g:null})},()=>{}))}function Se(g){Vt(),Ft(),Ie(g)}function rt(){let g={values:{},lines:{},links:{}},S=p.recordId===null||p.recordId===void 0,M=S?Object.keys(u).filter(F=>p.dirty.includes(F)||!ut(u[F],p.values[F])):p.dirty;for(let F of M){let j=u[F],W=p.values[F],z=S?Wt(j):v[F];j.type==="one2many"?g.lines[F]=es(z??[],W??[]):j.type==="many2many"?g.links[F]=ts(z??[],W??[]):g.values[F]=ve(W)}return g}function it(){let g={};for(let S of _()){let M=S.field;g[M]=ve(p.values[M])}for(let S of _(void 0,"form")){let M=h.get(S.id);M&&(g[M.name]=ve(p.values[M.name]))}return g}async function At(g=[]){return await Tt(g)===null}async function Tt(g){if(n.on?.beforeSave){let F=await fe("on.beforeSave",n.on.beforeSave,g,!1);if(!F.done){if(F.reason!=="check"&&F.reason!=="save"){let j={kind:"stopped",reason:F.reason,message:F.message??""};I({status:"error",error:j.message||null,saveProblem:j})}return{reason:"save",...F.message!==void 0?{message:F.message}:{}}}}let S=ce();if(Object.keys(S).length)return I({errors:S}),{reason:"save",message:Object.values(S)[0]};let M=e.dataSource;k={},I({status:"saving",errors:{},error:null,saveProblem:null});try{if(n.data.kind==="responses"){if(!M?.submit)throw new Error("This page has no data source to send its answers to");let W=it();return await M.submit({pageId:n.id,values:W}),qe(),I({status:"saved"}),Y("send",{values:W}),D(fe("on.afterSave",n.on?.afterSave,g,!1)),null}if(!M?.save)throw new Error("This page has no data source to save to");let F=await M.save({model:n.data.model,id:p.recordId,fields:u,changes:rt(),values:ve(p.values)});qe();let j=Ne(Je(F.values?{...p.values,...F.values}:p.values),"start");return v=ve(j),I({status:"saved",recordId:F.id,values:j,dirty:[],warnings:we(j,xe)}),Y("save",{recordId:p.recordId,values:p.values}),D(fe("on.afterSave",n.on?.afterSave,g,!1)),null}catch(F){let j=Vn(F),W=j.kind==="fields"?j.fields??{}:{};return k=Object.fromEntries(Object.entries(W).map(([z,te])=>[z,{message:te,value:JSON.stringify(p.values[z]??null)}])),I({status:"error",error:j.message,saveProblem:j,errors:{...W}}),{reason:"save",message:j.message}}}async function tn(){Y("open",{recordId:p.recordId,values:p.values}),await fe("on.open",n.on?.open,[],!0),G=!0,K([])}function Mt(g,S){let M=Object.keys(g);if(M.forEach(se),!!M.length){De({...p.values,...ve(g)});for(let F of M)Se(F);for(let F of M)N(F,S)}}function He(g,S,M){let F=lt(g),j=`new-${++E}`,W=p.values[g]??[],z={key:j,values:{...It(F.fields,m()),...ve(S)}};if(F.sequenceField&&z.values[F.sequenceField]==null){let ye=W.map(Te=>Te.values[F.sequenceField]).filter(Te=>typeof Te=="number");z.values[F.sequenceField]=ye.length?Math.max(...ye)+1:1}let te=[...W,z];return De({...p.values,[g]:te}),Se(g),N(g,M),j}function Nt(g){g?.forEach(se);let S=ce(),M=g?Object.fromEntries(Object.entries(S).filter(([j])=>g.some(W=>j===W||j.startsWith(`${W}.`)))):S;I({errors:M});let F=Object.values(M)[0];return F===void 0?null:{reason:"check",message:F}}function Rn(g,S){if(!s.includes(g))return;if(!pe.steps().includes(g))return{reason:"cannot",message:`The step "${g}" does not apply now`};let M=!1;return Z(S,()=>M=pe.goTo(g)),M?null:{reason:"check",message:Object.values(p.errors)[0]}}async function nn(g,S){let M=await he.runSteps(g,S);return Y("run",{id:S.id,steps:g,result:M}),M}function rn(g){return!e.dataSource?.create||!g||g.readonly?null:g.type==="many2one"||g.type==="many2many"?g.relation:null}async function on(g,S,M){let F=rn(g),j=e.dataSource;if(!F||!j?.create)throw new Error(`"${S}" cannot make records: its data source has no create, or it is not a link`);return D(j.create({model:F,name:M.trim()}))}async function $t(g,S,M,F,j,W){if(g.type!=="many2one"&&g.type!=="many2many"&&g.type!=="reference")throw new Error(`"${S}" is not a many2one, many2many or reference`);if(g.type==="reference"&&!W)throw new Error(`Searching "${S}" needs a model`);let z=e.dataSource;if(!z?.search)return[];let te=be=>"any"in be?{any:be.any.map(te)}:"all"in be?{all:be.all.map(te)}:{field:be.field,op:be.op,value:be.valueFrom!==void 0?M[be.valueFrom]??null:be.value??null},ye=g.type==="reference"?void 0:g.filter?.map(te),Te=g.type==="reference"?W:g.relation;return D(z.search({model:Te,query:F,...ye?{filter:ye}:{},limit:j}))}function lt(g){let S=se(g);if(S.type!=="one2many")throw new Error(`"${g}" is a ${S.type}, not a one2many`);return S}function R(){return p.step?s.indexOf(p.step):-1}function ee(g){return o.get(g)?.source?.optional===!0}async function oe(){let g=e.dataSource;if(!(p.recordId==null||n.data.kind!=="record")){if(!g?.load){I({status:"error",error:"This page has no data source to load from"});return}I({status:"loading",error:null});try{let S=await g.load({model:n.data.model,id:p.recordId,fields:u});v=Ne(Je({...It(u,m()),...S}),"start"),I({status:"ready",values:ve(v),dirty:[],errors:{},warnings:we(v,xe)}),nt(),D(tn())}catch(S){I({status:"error",error:S.message})}}}let he=qi({fields:u,values:()=>p.values,recordId:()=>p.recordId,reading:ne,today:m,write:g=>Mt(g,"step"),addLine:(g,S)=>{He(g,S,"step")},check:Nt,save:Tt,reset:()=>pe.reset(),goTo:Rn,showing:Z,host:e.host,confirm:e.confirm,onAction:e.onAction,answered:(g,S)=>Y("action",{request:g,result:S})}),fe=Ui((g,S,M)=>nn(S,{id:g,chain:M})),pe={page:n,getState:()=>p,subscribe(g){return O.add(g),()=>O.delete(g)},load:()=>D(oe()),setValue(g,S,M){se(g),De({...p.values,[g]:ve(S)}),Se(g),N(g,M?.by??"person")},setValues:g=>Mt(g,"app"),node:le,fieldReadonly:g=>Gi(se(g)),loadChoices:J,problem(g){se(g);let S=_().filter(F=>F.field===g);return S.length?S.map(U).find(Boolean)??S.map(F=>Er(n.fields[g],F.source,p.values[g],i)).find(Boolean)??Jt($(g),p.values[g],S.some(F=>le(F.id).required),i,m())??S.map(F=>H(F).error).find(F=>F!==void 0)??null:null},validate(){let g=ce();return I({errors:g}),Object.keys(g).length===0},save:()=>D(At()),reset(){qe(),k={},b=w.holding(v);let g=Ne(ve(v),"start");I({values:g,dirty:[],errors:{},warnings:we(g,xe),warning:null,warningField:null,draft:null,step:s[0]??null,skipped:[],saveProblem:null})},changes:rt,addLine:(g,S={})=>He(g,S,"person"),updateLine(g,S,M,F){if(!lt(g).fields[M])throw new Error(`The lines of "${g}" have no field "${M}"`);let W=(p.values[g]??[]).map(z=>z.key===S?{...z,values:{...z.values,[M]:ve(F)}}:z);De({...p.values,[g]:W}),Se(g),N(g,"person")},moveLine(g,S,M){let j=lt(g).sequenceField;if(!j)throw new Error(`The lines of "${g}" keep no order: give the field a sequenceField`);let W=[...p.values[g]??[]],z=W.findIndex(de=>de.key===S);if(z<0)throw new Error(`"${g}" has no line "${S}"`);let te=Math.max(0,Math.min(M,W.length-1));if(te===z)return;let ye=W.map(de=>de.values[j]),Te=ye.every((de,ke)=>typeof de=="number"&&(ke===0||de>ye[ke-1]));W.splice(te,0,...W.splice(z,1));let be=Math.min(z,te),C=Math.max(z,te),ae=Te?ye.slice(be,C+1):[],ge=W.map((de,ke)=>{let Le=Te?ke>=be&&ke<=C?ae[ke-be]:de.values[j]:ke+1;return Le===de.values[j]?de:{...de,values:{...de.values,[j]:Le}}});De({...p.values,[g]:ge}),Se(g),N(g,"person")},removeLine(g,S){lt(g);let M=(p.values[g]??[]).filter(F=>F.key!==S);De({...p.values,[g]:M}),Se(g),N(g,"person")},async search(g,S,M=8,F={}){return $t(se(g),g,Q(),S,M,F.model)},async previewLine(g,S,M){lt(g);let F=p.values[g]??[],j=F.find(be=>be.key===S);if(!j)throw new Error(`"${g}" has no line "${S}"`);let W=f.line(g,{...j.values,...M}),z=e.dataSource;if(!z?.onchange||n.data.kind!=="record")return W;let te=F.map(be=>be.key===S?{...be,values:W}:be),Te=((await z.onchange({model:n.data.model,id:p.recordId,changed:g,values:ve({...p.values,[g]:te})})).values?.[g]??[]).find(be=>be.key===S);return Te?f.line(g,{...W,...Te.values}):W},async searchLine(g,S,M,F,j=8){let W=lt(g),z=W.fields[M];if(!z)throw new Error(`The lines of "${g}" have no field "${M}"`);let te=(p.values[g]??[]).find(ye=>ye.key===S);if(!te)throw new Error(`"${g}" has no line "${S}"`);return $t(z,M,et(te.values,W.fields),F,j)},canCreate:g=>rn(n.fields[g])!==null,quickCreate:(g,S)=>on(n.fields[g],g,S),canCreateLine:(g,S)=>rn(lt(g).fields[S])!==null,quickCreateLine:(g,S,M)=>on(lt(g).fields[S],S,M),steps:()=>s.filter(g=>!le(g).invisible),next(){if(!p.step)return!1;p.skipped.includes(p.step)&&I({skipped:p.skipped.filter(F=>F!==p.step)});let g=ce(p.step);if(Object.keys(g).length)return I({errors:g}),!1;let S=pe.steps(),M=s.slice(R()+1).find(F=>S.includes(F));return M?(I({step:M,errors:{}}),!0):!1},back(){if(!p.step)return!1;let g=pe.steps(),S=s.slice(0,R()).reverse().find(M=>g.includes(M));return S?(I({step:S,errors:{}}),!0):!1},skip(){let g=p.step;if(!g||!ee(g))return!1;let S=pe.steps(),M=S[S.indexOf(g)+1];return M?(I({step:M,errors:{},skipped:[...p.skipped.filter(F=>F!==g),g]}),!0):!1},goTo(g){let S=pe.steps(),M=S.indexOf(g),F=p.step?S.indexOf(p.step):-1;if(M===-1||F===-1)return!1;if(M<=F)return I({step:g,errors:{}}),!0;let j=[...p.skipped];for(let W of S.slice(F,M)){if(j.includes(W))continue;let z=ce(W);if(Object.keys(z).length){if(ee(W)){j.push(W);continue}return I({step:W,errors:z,skipped:j}),!1}}return I({step:g,errors:{},skipped:j}),!0},async runAction(g,S){let M=o.get(g);if(!M||M.kind!=="button"&&M.kind!=="stat")throw new Error(`The page has no button "${g}"`);if(le(g).invisible)return{done:!1,reason:"cannot",message:`The button "${g}" is hidden`};let F=M.source,j=[...F.steps??[]];F.action!==void 0&&j.push({do:"call",action:F.action,..."params"in F&&F.params?{params:F.params}:{}});let W={id:g,chain:[],...S?{recordIds:[...S.recordIds]}:{}},z="confirm"in F?F.confirm:void 0;return D((async()=>{if(z&&!await he.ask(z)){let te={done:!1,reason:"no",message:z};return Y("run",{id:g,steps:j,result:te}),te}return nn(j,W)})())},run:(g,S={})=>D(nn(g,{id:S.id??"run",chain:[],...S.recordIds?{recordIds:[...S.recordIds]}:{}})),shown(g){s.includes(g)||D(fe(`on.show.${g}`,n.on?.show?.[g],V,!0))},on(g,S){let M=q.get(g);return M||q.set(g,M=new Set),M.add(S),()=>{M.delete(S)}},restoreDraft(){let g=e.drafts?.store.getItem(l());if(!g)return;let S=JSON.parse(g);De({...p.values,...S.values},{draft:null},!0)},discardDraft(){qe(),I({draft:null})},async settled(){for(;P.size;)await Promise.allSettled([...P])},embed(g,S){let M=h.get(g);if(M)return M.inner.form;let F=c.get(g);if(!F)throw new Error(`"${g}" is not a saved form placed on this page`);let j=[...t,n.id];if(j.includes(S.id))throw new Error(`a page cannot be placed inside itself: ${[...j.slice(j.indexOf(S.id)),S.id].join(" \u2192 ")}`);let W=p.values[F.name],z=Ki({page:{...S,data:{kind:"responses"}},dataSource:e.dataSource,values:_i(W)?W:{},onAction:e.onAction,host:e.host,confirm:e.confirm,scheduler:r,messages:i,now:e.now},j);h.set(g,{name:F.name,inner:z}),z.form.on("change",({by:Te})=>{y||N(F.name,Te)}),z.form.subscribe(Te=>{y||Te.values===p.values[F.name]||(De({...p.values,[F.name]:Fr(Te.values)}),Se(F.name))});let te=Fr(z.form.getState().values);p.dirty.includes(F.name)||(v={...v,[F.name]:te});let ye={...p.values,[F.name]:te};return I({values:ye,dirty:re(ye)}),z.form},embedded:g=>h.get(g)?.inner.form??null,dispose(){x!==null&&r.clearTimeout(x),A!==null&&r.clearTimeout(A),O.clear(),q.clear();for(let g of h.values())g.inner.form.dispose()}};return p={...p,warnings:xe()},p.recordId==null&&nt(),p.recordId==null&&D(Promise.resolve().then(tn)),{form:pe,take(g,S){if(S!=="start")return De({...It(n.fields,m()),...g},{},S==="fresh");v=Je({...It(n.fields,m()),...ve(g)});let M=Ne(ve(v),"start");I({values:M,dirty:[],errors:{},warnings:we(M,xe),warning:null,warningField:null})},errorsNow:()=>ce(),show(g){JSON.stringify(g)!==JSON.stringify(p.errors)&&I({errors:g})}}}function Qa(e,t){let n={};for(let[r,i]of Object.entries(e))r.startsWith(`${t}.`)&&(n[r.slice(t.length+1)]=i);return n}function Gi(e){return e.readonly===!0||e.compute!==void 0}function es(e,t){let n=[],r=new Map(e.filter(o=>o.id!==void 0).map(o=>[o.key,o]));for(let o of t){let a=r.get(o.key);if(o.id===void 0||!a){n.push({op:"create",key:o.key,values:ve(o.values)});continue}let d={};for(let[s,l]of Object.entries(o.values))JSON.stringify(l)!==JSON.stringify(a.values[s])&&(d[s]=ve(l));Object.keys(d).length&&n.push({op:"update",id:o.id,values:d})}let i=new Set(t.map(o=>o.key));for(let o of e)o.id!==void 0&&!i.has(o.key)&&n.push({op:"delete",id:o.id});return n}function ts(e,t){let n=new Set(e.map(i=>i.id)),r=new Set(t.map(i=>i.id));return[...t.filter(i=>!n.has(i.id)).map(i=>({op:"link",id:i.id})),...e.filter(i=>!r.has(i.id)).map(i=>({op:"unlink",id:i.id}))]}function ns(e){let t=new Map,n=(i,o,a,d)=>{t.set(i.id,{id:i.id,parent:o,kind:a,field:d.field,invisible:_e(d.invisible),readonly:_e(d.readonly),required:_e(d.required),source:i})},r=(i,o)=>{for(let a of i)if(a.type==="field")n(a,o,"field",{invisible:a.invisible,readonly:a.readonly,required:a.required,field:a.field});else if(a.type==="button")n(a,o,"button",{invisible:a.invisible});else if(a.type==="tabs"){n(a,o,"other",{invisible:a.invisible});for(let d of a.children)n(d,a.id,"other",{invisible:d.invisible}),r(d.children,d.id)}else a.type==="section"?(n(a,o,"other",{invisible:a.invisible,readonly:a.readonly}),r(a.children,a.id)):a.type==="form"?n(a,o,"form",{invisible:a.invisible,readonly:a.readonly}):n(a,o,"other",{invisible:a.invisible})};if(e.type==="tabs")return r([e],""),t.get(e.id).parent=null,t;if(n(e,null,"other",{}),e.type==="wizard")for(let i of e.children)n(i,e.id,"step",{invisible:i.invisible}),r(i.children,i.id);else if(e.type==="sections")r(e.children,e.id);else if(e.type==="list")for(let i of e.actions??[])n(i,e.id,"button",{invisible:i.invisible});else{let i=(o,a)=>{a&&n({id:o},e.id,"field",{field:a})};i("#title",e.title?.field),i("#subtitle",e.title?.subtitleField),i("#avatar",e.title?.avatarField),i("#statusbar",e.statusbar?.field);for(let o of e.buttons??[])n(o,e.id,"button",{invisible:o.invisible});for(let o of e.statButtons??[])n(o,e.id,"stat",{invisible:o.invisible});e.ribbon&&n(e.ribbon,e.id,"other",{invisible:e.ribbon.invisible});for(let o of e.alerts??[])n(o,e.id,"other",{invisible:o.invisible});for(let o of e.badges??[])n(o,e.id,"other",{invisible:o.invisible});r([...e.title?.above??[],...e.title?.below??[]],e.id),r(e.children,e.id),e.sidePanel&&n(e.sidePanel,e.id,"other",{invisible:e.sidePanel.invisible})}return t}var Ji=new Map;function Yi(e,t){let n=`${e}:${t}`,r=Ji.get(n);return r||(r=new Intl.NumberFormat(e,{numberingSystem:"latn",minimumFractionDigits:t,maximumFractionDigits:t}),Ji.set(n,r)),r}function Ar(e,t,n,r="en"){try{return new Intl.NumberFormat(r,{style:"currency",currency:t,currencyDisplay:"narrowSymbol",numberingSystem:"latn",minimumFractionDigits:n,maximumFractionDigits:n}).format(e)}catch{return`${t} ${pt(e,n,r)}`}}function rs(e){let t=Yi(e,1).formatToParts(12345.6);return{group:t.find(n=>n.type==="group")?.value??",",decimal:t.find(n=>n.type==="decimal")?.value??"."}}function pt(e,t,n="en"){return Yi(n,t).format(e)}function Tr(e,t="en"){let{group:n,decimal:r}=rs(t),i=e.replace(/[٠-٩]/g,o=>String(o.charCodeAt(0)-1632)).replace(/[۰-۹]/g,o=>String(o.charCodeAt(0)-1776)).replace(/٫/g,r).replace(/٬/g,n);return i=i.replace(/[\s\u00a0\u202f]/g,""),n.trim()&&(i=i.split(n).join("")),r==="."?i:i.split(r).join(".")}var Xi={};var is={search:"Search\u2026",noResults:"No results",remove:"Remove {name}",clear:"Clear {label}",addLine:"Add a line",addSection:"Add a section",addNote:"Add a note",deleteLine:"Delete line",lineN:"line {n}",total:"Total",lineProblem:"Line {n}: {message}",moreProblems:"and {n} more",chooseColumns:"Choose columns",createNamed:"Create \u201C{name}\u201D",createAndEdit:"Create and edit\u2026",searchMore:"Search more\u2026",openNamed:"Open {name}",openLine:"Open line",chooseDate:"Choose a date",other:"Other:",otherAnswer:"Your own answer",clearSelection:"Clear selection",previousMonth:"Previous month",nextMonth:"Next month",weekShort:"Wk",week:"Week",formatting:"Formatting",bold:"Bold",italic:"Italic",underline:"Underline",textStyle:"Text style",paragraph:"Paragraph",heading:"Heading",subheading:"Subheading",bulletList:"Bulleted list",numberList:"Numbered list",alignLeft:"Align left",alignCenter:"Align centre",alignRight:"Align right",link:"Link",linkAddress:"Link address",applyLink:"Apply",removeLink:"Remove link",upload:"Upload a file",uploadImage:"Add a photo",replace:"Replace",removeFile:"Remove",dropHere:"or drop it here",addFiles:"Add files",addPhotos:"Add photos",dropThem:"or drop them here",upToSize:"up to {size}",upToEach:"up to {size} each",upToFiles:"up to {max} files",fileCount:"{n} files",oneFile:"1 file",fileCountOf:"{n} of {max} files",tooMany:"Up to {max} files: {n} not added",alreadyAdded:"{name}: already added",removeAsk:"Remove {name}?",keep:"Keep",previous:"Previous",next:"Next",download:"Download",close:"Close",fileAt:"{n} of {total}",noPreview:"No preview for this kind of file",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}"},Pe={en:is,...Xi};function $e(e){return(t,n={},...r)=>{let i=e.createElement(t);for(let[o,a]of Object.entries(n))a!==void 0&&i.setAttribute(o,a);return i.append(...r),i}}var Ce=(e,t)=>e??Pe[t??"en"]??Pe.en,Me=(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 st(e,t){e.hidden!==t&&(e.hidden=t)}function St(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 Un(e){let t=e("div",{class:"fd-announce",role:"status","aria-live":"polite"});return{element:t,say(n){t.textContent="",t.textContent=n}}}var _n=e=>e.closest("[dir]")?.getAttribute("dir")==="rtl";function Et(e,t,n){let r=$e(e)("button",{type:"button",class:"fd-choice-clear",hidden:""},t.clearSelection);r.addEventListener("click",n);let i=!1;return{button:r,allow(o){i=!o.required&&!o.readonly},show(o){st(r,!(i&&o))}}}function Gn(e,t){let n=e("span"),r=e("button",{type:"button",class:"fd-button fd-button-link"},t.removeFile),i=e("button",{type:"button",class:"fd-button fd-button-link"},t.keep),o=e("div",{class:"fd-file-confirm",hidden:""},n,r,i),a=s=>{},d=s=>{o.hidden=!0,a(s)};return r.addEventListener("click",()=>d(!0)),i.addEventListener("click",()=>d(!1)),o.addEventListener("keydown",s=>s.key==="Escape"&&d(!1)),{element:o,ask(s,l){n.textContent=s,a=l,o.hidden=!1,i.focus()}}}var os=180,Kn=8;function hn(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>t[r]??n)}function Jn(e){let{document:t,id:n,labels:r}=e,i=`${n}-list`,o=t.createElement("input");Object.assign(o,{id:n,className:"fd-input fd-combo-input",autocomplete:"off"}),o.setAttribute("role","combobox"),o.setAttribute("aria-autocomplete","list"),o.setAttribute("aria-expanded","false"),o.setAttribute("aria-controls",i),o.placeholder=r.search;let a=t.createElement("ul");a.id=i,a.className="fd-listbox",a.setAttribute("role","listbox"),a.hidden=!0;let d=t.createElement("div");d.className="fd-combo",d.append(o,a);let s="",l=null,m="",f=new Map,w=!1,c=[],h=-1,u=0,y,v=!1;function b(){if(a.replaceChildren(),c.forEach((x,A)=>{let P=t.createElement("li");P.id=`${i}-${A}`,P.setAttribute("role","option"),P.setAttribute("aria-selected",String(A===h)),P.className=`fd-option${A===h?" fd-active":""}${x===l||f.has(x)?" fd-option-create":""}`,P.textContent=x.label,P.addEventListener("mousedown",O=>O.preventDefault()),P.addEventListener("click",()=>E(A)),a.append(P)}),!c.length){let x=t.createElement("li");x.className="fd-empty",x.textContent=r.noResults,a.append(x)}h>=0?o.setAttribute("aria-activedescendant",`${i}-${h}`):o.removeAttribute("aria-activedescendant")}function p(){a.hidden=!1,o.setAttribute("aria-expanded","true")}function k(){clearTimeout(y),u++,a.hidden=!0,o.setAttribute("aria-expanded","false"),o.removeAttribute("aria-activedescendant"),h=-1}function E(x){let A=c[x];if(!A)return;let P=m;if(k(),w=!1,A===l&&e.create){e.create(P).then(e.pick,()=>{});return}let O=f.get(A);if(O){O(P).then(q=>q&&e.pick(q),()=>{});return}e.pick(A)}function L(x){clearTimeout(y);let A=++u;y=setTimeout(async()=>{let P=await e.search(x).catch(()=>[]);if(A!==u||t.activeElement!==o)return;let O=c[h],q=O&&O!==l&&!f.has(O)?O.id:void 0,V=e.exclude?.()??new Set,G=P.filter(X=>!V.has(X.id)),T=e.shown!==void 0&&G.length>e.shown;c=T?G.slice(0,e.shown):G;let B=x.trim();l=null,e.create&&B&&!P.some(X=>X.label.trim().toLowerCase()===B.toLowerCase())&&(m=B,l={id:"__create__",label:hn(r.createNamed,{name:B})},c=[...c,l]),m=B,f=new Map((e.more?.(B,T)??[]).map((X,I)=>[{id:`__more_${I}__`,label:X.label},X.act])),c=[...c,...f.keys()],h=q===void 0?-1:c.findIndex(X=>X.id===q),b(),p()},os)}return o.addEventListener("input",()=>{w=!0,v||L(o.value)}),o.addEventListener("focus",()=>{v||L("")}),o.addEventListener("keydown",x=>{if(!v)switch(x.key){case"ArrowDown":case"ArrowUp":{if(x.preventDefault(),a.hidden)return L(o.value);if(!c.length)return;h=(h+(x.key==="ArrowDown"?1:-1)+c.length)%c.length,b(),a.children[h]?.scrollIntoView?.({block:"nearest"});return}case"Enter":!a.hidden&&h>=0&&(x.preventDefault(),E(h));return;case"Escape":a.hidden||x.preventDefault(),k(),w=!1,o.value=s;return;case"Backspace":o.value===""&&e.onEmptyBackspace?.();return}}),o.addEventListener("blur",()=>{u++,clearTimeout(y),k();let x=w&&o.value.trim()===""&&s!=="";w=!1,x?e.onCommitEmpty?.():o.value=s}),{element:d,input:o,setText(x){s=x,!w&&o.value!==x&&(o.value=x)},setReadonly(x){v=x,o.readOnly!==x&&(o.readOnly=x),x&&k()},close:k}}function Zi(e,t,n){return n.options?.create!==!1&&e.canCreate(t)?r=>e.quickCreate(t,r):void 0}var Mr=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Pe.en,dialogs:d})=>{let s=n.type==="many2one"?n.relation:"",l=!!d&&d.canOpen(s),m=!1,f=Jn({document:o,id:i,labels:a,search:h=>e.search(t,h,Kn+1),shown:Kn,pick:h=>e.setValue(t,h),onCommitEmpty:()=>e.setValue(t,null),create:Zi(e,t,r),more:(h,u)=>{if(!d||m)return[];let y=[];return h&&l&&r.options?.create!==!1&&y.push({label:a.createAndEdit,act:v=>d.openRecord(s,{name:v,title:n.label})}),u&&y.push({label:a.searchMore,act:()=>d.searchMore({title:n.label,search:(v,b)=>e.search(t,v,b)})}),y}}),w=l?o.createElement("button"):null;w&&(w.type="button",w.className="fd-combo-open",w.textContent="\u2197",w.hidden=!0,w.addEventListener("click",async()=>{let h=e.getState().values[t];if(!h||!d)return;let u=await d.openRecord(s,{recordId:h.id,title:h.label});u&&u.label!==h.label&&e.setValue(t,u)}));let c=o.createElement("button");return c.type="button",c.className="fd-combo-clear",c.textContent="\xD7",c.setAttribute("aria-label",hn(a.clear,{label:n.label})),c.addEventListener("click",()=>{e.setValue(t,null),f.input.focus()}),f.element.append(c,...w?[w]:[]),{element:f.element,focus:()=>f.input.focus(),update(h){let u=h.value;m=h.readonly,f.setText(u?.label??""),f.setReadonly(h.readonly),st(c,!u||h.readonly),w&&(st(w,!u),u&&Ve(w,"aria-label",hn(a.openNamed,{name:u.label}))),Ve(f.input,"aria-invalid",String(h.invalid)),Ve(f.input,"aria-required",String(h.required)),h.describedBy&&Ve(f.input,"aria-describedby",h.describedBy)}}},Yn=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Pe.en,dialogs:d})=>{let s=n.type==="many2many"?n.relation:"",l=()=>e.getState().values[t]??[],m=o.createElement("div");m.className="fd-tags",m.setAttribute("role","group");let f=o.createElement("ul");f.className="fd-chips";let w=Jn({document:o,id:i,labels:a,search:y=>e.search(t,y,Kn+1+l().length),shown:Kn,pick:y=>{l().some(v=>v.id===y.id)||e.setValue(t,[...l(),y]),w.input.value=""},exclude:()=>new Set(l().map(y=>y.id)),onEmptyBackspace:()=>{let y=l();y.length&&e.setValue(t,y.slice(0,-1))},create:Zi(e,t,r),more:(y,v)=>d&&v?[{label:a.searchMore,act:()=>d.searchMore({title:n.label,search:(b,p)=>e.search(t,b,p)})}]:[]}),c=d&&d.canOpen(s)?async y=>{let v=await d.openRecord(s,{recordId:y.id,title:y.label});v&&v.label!==y.label&&e.setValue(t,l().map(b=>b.id===y.id?v:b))}:void 0;m.append(f,w.element);let h=!1,u="";return{element:m,focus:()=>w.input.focus(),update(y){let v=y.value??[],b=JSON.stringify([y.readonly,v]);h=y.readonly,w.setReadonly(h),w.element.hidden=h,w.input.setAttribute("aria-invalid",String(y.invalid)),y.describedBy&&w.input.setAttribute("aria-describedby",y.describedBy),b!==u&&(u=b,Qi(f,v,h,a,p=>e.setValue(t,l().filter(k=>k.id!==p.id)),c),w.setText(""))}}};function Qi(e,t,n,r,i,o){let a=e.ownerDocument;e.replaceChildren(...t.map(d=>{let s=a.createElement("li");s.className="fd-chip";let l=a.createElement(o?"button":"span");if(l.className="fd-chip-label",l.textContent=d.label,o&&(l.type="button",l.setAttribute("aria-label",hn(r.openNamed,{name:d.label})),l.addEventListener("click",()=>o(d))),s.append(l),!n){let m=a.createElement("button");m.type="button",m.className="fd-chip-remove",m.textContent="\xD7",m.setAttribute("aria-label",hn(r.remove,{name:d.label})),m.addEventListener("click",()=>i(d)),s.append(m)}return s}))}var Nr=({form:e,name:t,node:n,id:r,document:i,labels:o=Pe.en})=>{let a=n.options??{},d=typeof a.separator=="string"&&a.separator?a.separator:",",s=Array.isArray(a.suggestions)?a.suggestions.filter(v=>typeof v=="string"):[],l=v=>typeof v=="string"?v.split(d).map(b=>b.trim()).filter(b=>b!==""):[],m=()=>l(e.getState().values[t]),f=v=>e.setValue(t,v.length?v.join(`${d} `):null),w=v=>{let b=v.trim(),p=m();b&&!p.some(k=>k.toLowerCase()===b.toLowerCase())&&!(p.length>=a.max)&&f([...p,b])},c=i.createElement("div");c.className="fd-tags",c.setAttribute("role","group");let h=i.createElement("ul");h.className="fd-chips";let u=Jn({document:i,id:r,labels:o,search:async v=>{let b=new Set(m().map(k=>k.toLowerCase())),p=v.trim().toLowerCase();return s.filter(k=>!b.has(k.toLowerCase())&&k.toLowerCase().includes(p)).map(k=>({id:k,label:k}))},pick:v=>{w(v.label),u.input.value=""},onEmptyBackspace:()=>{let v=m();v.length&&f(v.slice(0,-1))}});u.input.addEventListener("keydown",v=>{v.key!=="Enter"||v.defaultPrevented||u.input.value.trim()===""||(v.preventDefault(),w(u.input.value),u.input.value="",u.close())}),u.input.addEventListener("input",()=>{let v=u.input.value.split(d);if(!(v.length<2)){for(let b of v.slice(0,-1))w(b);u.input.value=v[v.length-1].trimStart()}}),u.input.addEventListener("change",()=>{u.input.value.trim()&&w(u.input.value)}),c.append(h,u.element);let y="";return{element:c,focus:()=>u.input.focus(),update(v){let b=l(v.value);u.setReadonly(v.readonly),u.element.hidden=v.readonly||b.length>=a.max,u.input.setAttribute("aria-invalid",String(v.invalid)),v.describedBy&&u.input.setAttribute("aria-describedby",v.describedBy);let p=JSON.stringify([v.readonly,b]);if(p===y)return;y=p;let k=i.activeElement===u.input;Qi(h,b.map(E=>({id:E,label:E})),v.readonly,o,E=>f(m().filter(L=>L!==E.label))),u.setText(""),k&&u.element.hidden&&h.querySelector("li:last-child button")?.focus()}}},$r=({form:e,name:t,id:n,document:r})=>{let i=r.createElement("div");i.id=n,i.className="fd-choices fd-choices-checkbox",i.setAttribute("role","group");let o=[],a={readonly:!1,value:[]},d=()=>{let s=new Set(a.value.map(l=>l.id));for(let{record:l,box:m}of o)m.checked=s.has(l.id),m.disabled=a.readonly};return e.search(t,"",50).then(s=>{o=s.map((l,m)=>{let f=r.createElement("input");f.type="checkbox",f.id=`${n}-${m}`,f.addEventListener("change",()=>{let h=e.getState().values[t]??[];e.setValue(t,f.checked?[...h,l]:h.filter(u=>u.id!==l.id))});let w=r.createElement("label");w.className="fd-choice",w.htmlFor=f.id;let c=r.createElement("span");return c.textContent=l.label,w.append(f,c),i.append(w),{record:l,box:f}}),d()}),{element:i,focus:()=>i.querySelector("input")?.focus(),update(s){a={readonly:s.readonly,value:s.value??[]},d()}}},Cr=e=>{let{form:t,name:n,field:r,id:i,document:o,labels:a=Pe.en}=e,d=r.type==="reference"?r.models:[],s=o.createElement("div");s.className="fd-reference";let l=o.createElement("select");l.className="fd-input fd-select",l.setAttribute("aria-label",r.label),l.append(o.createElement("option"));for(let w of d){let c=o.createElement("option");c.value=String(w.value),c.textContent=w.label,l.append(c)}let m="";l.addEventListener("change",()=>{m=l.value,t.setValue(n,null)});let f=Jn({document:o,id:i,labels:a,search:w=>m?t.search(n,w,8,{model:m}):Promise.resolve([]),pick:w=>t.setValue(n,{model:m,id:w.id,label:w.label}),onCommitEmpty:()=>t.setValue(n,null)});return s.append(l,f.element),{element:s,focus:()=>m?f.input.focus():l.focus(),update(w){let c=w.value;c&&(m=c.model),l.value=m,l.disabled=w.readonly,f.setText(c?.label??""),f.setReadonly(w.readonly||!m)}}};function eo(e){let t=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(e);if(!t)return null;let[,n,r,i,o,a]=t;return new Date(Number(n),Number(r)-1,Number(i),Number(o??0),Number(a??0))}function bn(e,t,n={},r="en"){let i=(o,a)=>pt(o,a,r);if(t==null||t==="")return"";switch(e.type){case"many2one":case"reference":return t.label??"";case"many2many":return(t??[]).map(o=>o.label).join(", ");case"selection":{let o=a=>e.options.find(d=>d.value===a)?.label??String(a);return Array.isArray(t)?t.map(o).join(", "):o(t)}case"integer":return i(Number(t),0);case"float":return i(Number(t),e.digits?.[1]??2);case"monetary":{let o=e.currency??(e.currencyField?n[e.currencyField]?.label:void 0);return o?Ar(Number(t),o,e.digits?.[1]??2,r):i(Number(t),e.digits?.[1]??2)}case"date":{let o=eo(String(t));return o?new Intl.DateTimeFormat(r==="en"?"en-GB":r,{day:"numeric",month:"short",year:"numeric",numberingSystem:"latn"}).format(o):String(t)}case"datetime":{let o=eo(String(t));return o?new Intl.DateTimeFormat(r==="en"?"en-GB":r,{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",numberingSystem:"latn"}).format(o):String(t)}case"html":return String(t).replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();case"binary":case"image":return[t].flat().map(o=>o.name??"").join(", ");case"boolean":return t?"\u2713":"";default:return String(t)}}function yn(e,t,n,r,i){if(n.type==="one2many"&&n.sequenceField)return e.moveLine(t,r,i);let o=[...e.getState().values[t]??[]],a=o.findIndex(d=>d.key===r);a<0||i<0||i>=o.length||i===a||(o.splice(i,0,...o.splice(a,1)),e.setValue(t,o))}var to=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0;function no(e,t){return t==="section"?{...e,type:"char"}:{...e,type:"text"}}function Xn(e,t,n){let r=()=>(e.getState().values[t]??[]).find(i=>i.key===n)?.values??{};return{...e,getState:()=>({...e.getState(),values:r()}),setValue:(i,o)=>e.updateLine(t,n,i,o),search:(i,o,a)=>e.searchLine(t,n,i,o,a),canCreate:i=>e.canCreateLine(t,i),quickCreate:(i,o)=>e.quickCreateLine(t,i,o)}}var Or=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a=Pe.en,locale:d,dialogs:s})=>{let l=n,m=l.lineKinds,f=$e(o),w=r.options??{},c=to(w.min)??0,h=to(w.max)??1/0,u=J=>typeof w[J]=="string"&&w[J].trim()?w[J]:null,y=(r.columns??Object.keys(l.fields)).filter(J=>l.fields[J]&&J!==m?.field&&J!==l.sequenceField&&r.optionalColumns?.[J]!=="hide"),v=o.createElement("div");v.className="fd-lines",v.id=i,v.setAttribute("role","group");let b=o.createElement("div");b.className="fd-lines-scroll";let p=o.createElement("table");p.className="fd-lines-table";let k=o.createElement("thead"),E=o.createElement("tr");E.append(f("th",{class:"fd-lines-grip"}));for(let J of y){let $=o.createElement("th");$.scope="col",$.textContent=l.fields[J].label,E.append($)}let L=o.createElement("th");L.className="fd-lines-tools",E.append(L),k.append(E);let x=o.createElement("tbody");p.append(k,x);let A=(r.totals??[]).filter(J=>y.includes(J)),P=new Map;if(A.length){let J=o.createElement("tfoot"),$=o.createElement("tr");$.className="fd-lines-totals",$.append(o.createElement("td")),y.forEach((D,ne)=>{let Q=o.createElement("td");A.includes(D)?P.set(D,Q):ne===0&&(Q.textContent=a.total),$.append(Q)}),$.append(o.createElement("td")),J.append($),p.append(J)}b.append(p);let O=o.createElement("div");O.className="fd-lines-adds";let q=(J,$,D)=>{let ne=o.createElement("button");ne.type="button",ne.className="fd-button fd-button-link fd-lines-add",ne.dataset.add=D,ne.textContent=`+ ${J}`,ne.addEventListener("click",()=>{I=e.addLine(t,$);let Q=X.get(I);Q&&(Q.cells[0]?.widget.focus(),I=null)}),O.append(ne)};q(u("addLabel")??a.addLine,{},"line"),m&&(q(a.addSection,{[m.field]:m.section??"section"},"section"),q(a.addNote,{[m.field]:m.note??"note"},"note"));let V=u("emptyLabel"),G=V?f("div",{class:"fd-help fd-lines-empty"},V):null,T=Gn(f,a),B=f("div",{class:"fd-sr-only",role:"status"});v.append(b,...G?[G]:[],O,T.element,B);let X=new Map,I=null,Y=!1,N=()=>e.getState().values[t]??[];for(let J=N().length;J<c;J++)e.addLine(t);function K(J,$){let D=N().findIndex(se=>se.key===J);if(Y||$===D||$<0||$>=N().length)return;let ne=o.activeElement,Q=N()[D].values[y[0]];yn(e,t,l,J,$),ne&&ne!==o.activeElement&&ne.focus(),B.textContent=Me(a.movedTo,{label:typeof Q=="string"&&Q.trim()?Q:Me(a.lineN,{n:D+1}),n:$+1,total:N().length})}x.addEventListener("keydown",J=>{let $=J.target.closest("tr")?.dataset.line;!$||!J.altKey||J.key!=="ArrowUp"&&J.key!=="ArrowDown"||(J.preventDefault(),K($,N().findIndex(D=>D.key===$)+(J.key==="ArrowUp"?-1:1)))});function Z(J,$,D,ne,Q=1){let se=`${i}-${$.key}-${D}`,re={type:"field",id:`${r.id}.${$.key}.${D}`,field:D},le=Ze({form:Xn(e,t,$.key),name:D,field:ne,node:re,id:se,document:o,labels:a,locale:d,dialogs:s}),_=o.createElement("td");_.colSpan=Q;let H=o.createElement("label");H.className="fd-sr-only",H.htmlFor=se,H.textContent=ne.label;let U=o.createElement("div");return U.className="fd-cell-error",U.hidden=!0,_.append(H,le.element,U),J.append(_),{name:D,def:ne,widget:le,error:U}}function ie(J){let $=o.createElement("tr");$.dataset.line=J.key;let D=Ye(l,J.values);D&&($.className=`fd-line-${D}`);let ne=f("span",{class:"fd-line-grip fd-rank-grip","aria-hidden":"true"}),Q=!1;ne.addEventListener("pointerdown",_=>{Y||_.button!==0||(_.preventDefault(),ne.setPointerCapture?.(_.pointerId),Q=!0)}),ne.addEventListener("pointermove",_=>{Q&&K(J.key,[...x.children].filter(H=>H!==$&&H.getBoundingClientRect().top+H.getBoundingClientRect().height/2<_.clientY).length)});for(let _ of["pointerup","pointercancel"])ne.addEventListener(_,()=>Q=!1);$.append(f("td",{class:"fd-lines-grip"},ne));let se=D&&m?[Z($,J,m.text,no(l.fields[m.text],D),y.length)]:y.map(_=>Z($,J,_,l.fields[_])),re=o.createElement("td");re.className="fd-lines-tools";let le=o.createElement("button");return le.type="button",le.className="fd-line-delete",le.textContent="\xD7",le.setAttribute("aria-label",a.deleteLine),le.addEventListener("click",()=>{let _=N().findIndex(U=>U.key===J.key),H=N()[_]?.values??{};if(w.confirmDelete!==!0||se.every(U=>ut(U.def,H[U.name])||H[U.name]===!1))return e.removeLine(t,J.key);T.ask(Me(a.removeAsk,{name:Me(a.lineN,{n:_+1})}),U=>{U&&e.removeLine(t,J.key);let me=N(),xe=me[U?Math.min(_,me.length-1):_];(xe?X.get(xe.key)?.remove:O.querySelector("button"))?.focus()})}),re.append(le),$.append(re),{element:$,kind:D,cells:se,remove:le,grip:ne}}return{element:v,focus:()=>(x.querySelector("input, select, textarea")??O.querySelector("button"))?.focus(),update(J){Y=J.readonly;let $=J.value??[];O.hidden=Y||$.length>=h,Y&&(T.element.hidden=!0),G&&(G.hidden=$.length>0);let D=e.getState().errors,ne=new Set($.map(Q=>Q.key));for(let[Q,se]of X)ne.has(Q)||(se.element.remove(),X.delete(Q));$.forEach((Q,se)=>{let re=X.get(Q.key);re&&re.kind!==Ye(l,Q.values)&&(re.element.remove(),re=void 0),re||(re=ie(Q),X.set(Q.key,re)),x.children[se]!==re.element&&x.insertBefore(re.element,x.children[se]??null),re.remove.hidden=Y||$.length<=c,re.grip.hidden=Y,Y?re.remove.remove():re.remove.isConnected||re.element.lastElementChild?.append(re.remove);for(let le of re.cells){let _=D[`${t}.${Q.key}.${le.name}`];le.error.hidden=!_,le.error.textContent=_??"",le.widget.update({value:Q.values[le.name],values:Q.values,readonly:Y||le.def.readonly===!0||le.def.compute!==void 0,required:le.def.required===!0,invalid:!!_})}});for(let[Q,se]of P){let re=$.filter(le=>!Ye(l,le.values)).reduce((le,_)=>le+Number(_.values[Q]??0),0);se.textContent=bn(l.fields[Q],re,$[0]?.values??{},d)}I&&X.has(I)&&(X.get(I)?.cells[0]?.widget.focus(),I=null)}}};var as='a[href], button, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';function mt(e,t){if(t.key!=="Tab")return;let n=[...e.querySelectorAll(as)].filter(a=>!a.closest("[hidden], [inert]")&&!a.disabled);if(!n.length)return;let r=n[0],i=n[n.length-1],o=e.ownerDocument.activeElement;(t.shiftKey?o===r||!e.contains(o):o===i)&&(t.preventDefault(),(t.shiftKey?i:r).focus())}var ss="http://www.w3.org/2000/svg",ro={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 dt(e,t,n){let r=t?n?.[t]??ro[t]:void 0;if(r===void 0)return null;let i=e.createElementNS(ss,"svg");for(let[o,a]of Object.entries({viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",class:"fd-icon","data-icon":t}))i.setAttribute(o,a);return i.innerHTML=r,i}var Zn=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let i=String(r.result??"");t({name:e.name,type:e.type,size:e.size,data:i.slice(i.indexOf(",")+1)})},r.onerror=()=>n(r.error),r.readAsDataURL(e)}),ao=e=>(/\.(\w{1,5})$/.exec(e)?.[1]??"").toUpperCase();function Pr(e){let t=`${e.type} ${ao(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 ds=e=>/^text\/|json|xml|csv/.test(e.type),io=e=>e.data?`data:${e.type};base64,${e.data}`:e.url??"",ls=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),oo=(e,t)=>e("span",{class:"fd-file-icon","data-kind":Pr(t),"aria-hidden":"true"},ao(t.name)||"?"),cs={cards:'<path d="M3 3h8v8H3zM13 3h8v8h-8zM3 15h8M13 15h8M3 19h5M13 19h5"/>',thumbnails:'<path d="M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"/>'},fs=(e,t)=>e("span",{class:"fd-file-name",dir:"auto",title:t},e("span",{},t.slice(0,-9)),t.slice(-9));function us(e,t){let n=t.length/2,[r,i]=[Math.round(n),n/2];for(let a=t.indexOf(" ");a>=0;a=t.indexOf(" ",a+1))Math.abs(a+1-n)<i&&([r,i]=[a+1,Math.abs(a+1-n)]);let o=/^\P{L}*[\p{sc=Arabic}\p{sc=Hebrew}]/u.test(t);return e("span",{class:"fd-file-name",dir:o?"rtl":"ltr",title:t},e("span",{},t.slice(0,r)),e("span",{dir:o?"ltr":"rtl"},e("bdi",{},t.slice(r))))}function so(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:d,locale:s="en",preferences:l})=>{let m=r,f=Ce(d,s),w=Ge[s]??Ge.en,c=$e(a),h=m.multiple===!0,u=h?m.maxFiles??1/0:1,y=e==="image",v=String(i.options?.files??(y?"thumbnails":"list")),b=v==="thumbnails"?v:"cards",p=i.options?.filesSwitch===!0,k=`${t.page.id}.${i.id}.files`,E=p?l?.get(k):null,L=i.options?.camera,x=m.type==="binary"?m.accept:["image/*"],A=c("div"),P=c("input",{type:"file",id:o,class:"fd-sr-only",accept:x?.join(","),capture:L?L==="user"?"user":"environment":void 0});P.multiple=h;let O=[!y&&x?pn(x,w.or):"",m.maxSize?Ee(h?f.upToEach:f.upToSize,{size:kt(m.maxSize)}):"",h&&m.maxFiles?Ee(f.upToFiles,{max:m.maxFiles}):""].filter(Boolean),q=c("label",{class:"fd-file-pick",for:o},c("span",{class:"fd-button"},h?y?f.addPhotos:f.addFiles:y?f.uploadImage:f.upload),c("span",{class:"fd-help"},h?f.dropThem:f.dropHere)),V=c("span",{class:"fd-help fd-file-limits"},O.join(" \xB7 ")),G=h?c("span",{class:"fd-help fd-file-count"}):null,T=c("ul",{class:"fd-files",role:"list"}),B=c("button",{type:"button",class:"fd-button fd-button-link"},f.replace);B.addEventListener("click",()=>P.click());let X=Gn(c,f),I=c("div",{class:"fd-help fd-file-note",role:"status"}),Y=(_,H)=>{let U=c("button",{type:"button","data-view":_},dt(a,_,cs),H);return U.addEventListener("click",()=>(J(_),l?.set(k,_))),U},N=p?c("div",{class:"fd-file-views",role:"group","aria-label":f.showFilesAs},Y("list",f.asList),Y(b,b==="cards"?f.asCards:f.asThumbnails)):null,K=G||N?c("div",{class:"fd-file-bar"},...G?[G]:[],...N?[N]:[]):null,Z=[P,q,...O.length?[V]:[]];A.append(...K?[K]:[],T,B,X.element,I);let ie=v;function J(_){ie=_;let H=_!=="list";A.className=`fd-file fd-file-${e} fd-files-${_==="thumbnails"?"thumbs":_}`,q.classList.toggle("fd-image-pick",H),H?T.after(...Z):(K??T).before(...Z),N?.querySelectorAll("button").forEach(U=>U.setAttribute("aria-pressed",String(U.dataset.view===_))),re()}let $=!1,D=[],ne,Q=_=>I.replaceChildren(..._.map(H=>c("div",{},H))),se=async _=>{if($||!_.length)return;let H=[],U=[],me=0;for(let we of _){let ce=un(m,we,w)??(h&&[...D,...H].some(Ne=>Ne.name===we.name)?Ee(f.alreadyAdded,{name:we.name}):void 0);ce?U.push(ce):(h?D.length:0)+H.length<u?H.push(we):me++}if(me&&h&&U.push(Ee(f.tooMany,{max:u,n:me})),Q(U),!H.length)return;let xe=await Promise.all(H.map(Zn));t.setValue(n,h?[...D,...xe]:xe[0])};P.addEventListener("change",()=>{se([...P.files??[]]),P.value=""}),A.addEventListener("dragover",_=>{$||(_.preventDefault(),A.classList.add("fd-dragging"))}),A.addEventListener("dragleave",()=>A.classList.remove("fd-dragging")),A.addEventListener("drop",_=>{_.preventDefault(),A.classList.remove("fd-dragging"),se([..._.dataTransfer?.files??[]])}),T.addEventListener("click",_=>{let H=_.target.closest("button"),U=Number(H?.dataset.at);if(H){if(H.classList.contains("fd-file-open"))return le(U,H);X.ask(Ee(f.removeAsk,{name:D[U].name}),me=>{let xe=D[U];me&&(t.setValue(n,h?D.filter((we,ce)=>ce!==U):null),Q([Ee(f.removed,{name:xe.name})])),(T.querySelectorAll(".fd-file-remove")[me?Math.min(U,D.length-1):U]??(q.hidden?B:P)).focus()})}});function re(){T.replaceChildren(...D.map((_,H)=>c("li",{class:"fd-file-item"},c("button",{type:"button",class:"fd-file-open","data-at":String(H),"aria-haspopup":"dialog","aria-label":`${_.name}, ${kt(_.size)}`},...[Pr(_)==="image"&&io(_)?c("img",{class:"fd-file-thumb",src:io(_),alt:""}):oo(c,_)].map(U=>ie==="cards"?c("span",{class:"fd-file-picture"},U):U),(ie==="cards"?us:fs)(c,_.name),c("span",{class:"fd-file-size"},kt(_.size))),...$?[]:[c("button",{type:"button",class:"fd-file-remove","data-at":String(H),"aria-label":Ee(f.remove,{name:_.name})},"\xD7")])))}J(E==="list"||E===b?E:v===b?v:"list");function le(_,H){let U=D,me="",xe=c("h2",{id:`${o}-view`,class:"fd-form-dialog-title"}),we=c("span",{class:"fd-help"}),ce=(Ie,Se,rt)=>{let it=c("button",{type:"button",class:"fd-button fd-file-step","aria-label":Se},rt);return it.hidden=U.length<2,it.addEventListener("click",()=>nt(_+Ie)),it},Ne=c("a",{class:"fd-button"},f.download),Ke=c("button",{type:"button",class:"fd-dialog-close","aria-label":f.close},"\xD7"),Je=c("div",{class:"fd-file-viewer-body"}),De=c("div",{class:"fd-form-dialog fd-file-viewer",role:"dialog","aria-modal":"true","aria-labelledby":xe.id,tabindex:"-1"},c("div",{class:"fd-form-dialog-head"},xe,we,ce(-1,f.previous,"\u2039"),ce(1,f.next,"\u203A"),Ne,Ke),Je),bt=c("div",{class:"fd-dialog-backdrop"},De),Vt=()=>me.startsWith("blob:")&&URL.revokeObjectURL(me),qe=Ie=>c("div",{class:"fd-file-none"},oo(c,Ie),c("strong",{},Ie.name),kt(Ie.size),c("p",{},f.noPreview));function nt(Ie){_=(Ie+U.length)%U.length;let Se=U[_];Vt();let rt=Se.data?ls(Se.data):null;me=rt?URL.createObjectURL(new Blob([rt],{type:Se.type})):Se.url??"",xe.textContent=Se.name,we.replaceChildren(c("span",{class:"fd-file-size"},kt(Se.size)),U.length>1?` \xB7 ${Ee(f.fileAt,{n:_+1,total:U.length})}`:""),Ne.href=me,Ne.download=Se.name;let it=Pr(Se);if(it==="image")return Je.replaceChildren(c("img",{src:me,alt:Se.name}));if(it==="pdf")return Je.replaceChildren(c("iframe",{src:me,title:Se.name}));if(!ds(Se))return Je.replaceChildren(qe(Se));let At=c("pre",{tabindex:"0"});Je.replaceChildren(At),(rt?Promise.resolve(new TextDecoder().decode(rt.subarray(0,2e5))):fetch(me).then(Tt=>Tt.text())).then(Tt=>At.textContent=Tt.slice(0,2e5),()=>At.replaceWith(qe(Se)))}let Ft=()=>{Vt(),bt.remove(),(H.isConnected?H:T.querySelectorAll(".fd-file-open")[_])?.focus()};Ke.addEventListener("click",Ft),bt.addEventListener("click",Ie=>Ie.target===bt&&Ft()),De.addEventListener("keydown",Ie=>{let Se={ArrowLeft:-1,ArrowRight:1}[Ie.key];Ie.key==="Escape"?Ft():Se&&U.length>1&&Ie.target.tagName!=="PRE"?nt(_+(_n(A)?-Se:Se)):mt(De,Ie)}),nt(_),(A.closest(".fd-form")??a.body).append(bt),De.focus()}return{element:A,focus:()=>(T.querySelector("button")??(q.hidden?B:P)).focus(),update(_){$=_.readonly;let H=_.value;D=Array.isArray(H)?H:H?[H]:[];let U=D.length>=u;st(q,U||$),st(V,$),P.disabled=$,P.hidden=q.hidden,st(B,h||!D.length||$),K&&st(K,!D.length),G&&St(G,D.length?h&&m.maxFiles?Ee(f.fileCountOf,{n:D.length,max:m.maxFiles}):D.length===1?f.oneFile:Ee(f.fileCount,{n:D.length}):""),je(P,_),!(ne===H&&T.dataset.readonly===String($))&&(ne=H,T.dataset.readonly=String($),re())}}}}var Ir=so("binary"),Vr=so("image");var lo=new Map;function co(e,t){let n=lo.get(t);return n||(n=new Intl.NumberFormat(t,{style:"percent",maximumFractionDigits:0,numberingSystem:"latn"}),lo.set(t,n)),n.format(e/100)}var vn=e=>{let{field:t,node:n,id:r,document:i,locale:o="en"}=e,a=n.options??{},d=(b,p)=>{let k=a[b]??t[b];return typeof k=="number"?k:p},s=d("min",0),l=d("max",100),m=typeof a.maxField=="string"?a.maxField:null,f=typeof a.color=="string"?a.color:"auto",w=a.showPercent!==!1,c=i.createElement("div");c.className="fd-progressbar",c.setAttribute("role","progressbar");let h=i.createElement("div");h.className="fd-progressbar-fill";let u=i.createElement("span");u.className="fd-progressbar-text",c.append(h,u);let y=null,v=c;return a.editable===!0?(y=Ze({...e,node:{...n,widget:void 0}}),c.setAttribute("aria-hidden","true"),v=i.createElement("div"),v.className="fd-progressbar-edit",v.append(c,y.element)):c.id=r,{element:v,focus:()=>y?.focus(),update(b){let p=typeof b.value=="number"?b.value:0,k=m?Number(b.values[m]??0):l,E=k>s?Math.min(100,Math.max(0,(p-s)/(k-s)*100)):0,L=Math.round(E*10)/10;h.style.width=`${L}%`,c.setAttribute("aria-valuenow",String(p)),c.setAttribute("aria-valuemin",String(s)),c.setAttribute("aria-valuemax",String(k)),c.setAttribute("aria-valuetext",co(E,o)),u.textContent=w?co(E,o):"",c.dataset.tone=f!=="auto"?f:E<30?"danger":E<70?"warning":"success",y?.update(b)}}};function fo(e){return e==null?"":typeof e=="object"&&"label"in e?e.label:String(e)}var xn=({field:e,node:t,id:n,document:r,locale:i="en"})=>{let o=t.options??{},a=m=>typeof o[m]=="string"?o[m]:"",d=m=>typeof o[m]=="string"?o[m]: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:m,values:f}){if(m==null||m===""){l.textContent="";return}let w=s!==null&&typeof m=="number"?pt(m,s,i):Qn(m,e),c=d("prefixField"),h=d("suffixField"),u=c?fo(f[c]):a("prefix"),y=h?fo(f[h]):a("suffix");l.textContent=[u,w,y].filter(v=>v!=="").join(" ")}}};var er=({form:e,name:t,field:n,node:r,id:i,document:o})=>{let a=r.options??{},d=a.clickable===!0,s=Array.isArray(a.visibleStates)?a.visibleStates:null,l=o.createElement("ol");l.className="fd-statusbar",l.id=i,l.setAttribute("aria-label",n.label);let m=u=>u&&typeof u=="object"&&"id"in u?`id:${String(u.id)}`:`v:${String(u)}`,f=n.type==="selection"?n.options.map(u=>({key:m(u.value),label:u.label,value:u.value})):[],w=n.type==="selection",c={value:void 0,readonly:!1};function h(){let{value:u,readonly:y}=c,v=u==null?null:m(u),b=f.filter(p=>!s||s.some(k=>m(k)===p.key)||p.key===v);v&&!b.some(p=>p.key===v)&&u&&typeof u=="object"&&(b=[...b,{key:v,label:u.label,value:u}]),l.replaceChildren(...b.map(p=>{let k=o.createElement("span");k.textContent=p.label;let E=o.createElement(d?"button":"span");E instanceof HTMLButtonElement&&(E.type="button",E.disabled=y,E.addEventListener("click",()=>e.setValue(t,p.value))),E.append(k),p.key===v&&E.setAttribute("aria-current","step");let L=o.createElement("li");return L.append(E),L}))}return{element:l,focus:()=>l.querySelector("button:not([disabled])")?.focus(),update(u){c={value:u.value,readonly:u.readonly},h(),w||(w=!0,e.search(t,"",20).then(y=>{f=y.map(v=>({key:m(v),label:v.label,value:v})),h()}).catch(()=>{}))}}};function po(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 uo=e=>String(e).padStart(2,"0"),Dr=(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 tr(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 Wr(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 nr(e,t,n){let{form:r,name:i,id:o,document:a,locale:d="en"}=t,s=t.labels??Pe.en,l=d==="en"?"en-GB":d,m=new Intl.DateTimeFormat(l,{month:"long",year:"numeric",numberingSystem:"latn"}),f=new Intl.DateTimeFormat(l,{weekday:"long",day:"numeric",month:"long",year:"numeric",numberingSystem:"latn"}),w=new Intl.DateTimeFormat(l,{weekday:"short"}),c=new Intl.DateTimeFormat(l,{weekday:"long"}),h=a.createElement("button");h.type="button",h.className="fd-calendar-button";let u="http://www.w3.org/2000/svg",y=a.createElementNS(u,"svg");y.setAttribute("viewBox","0 0 16 16"),y.setAttribute("aria-hidden","true");for(let[I,Y]of[["rect",{x:"2",y:"3",width:"12",height:"11",rx:"1.5"}],["path",{d:"M2 6.5h12M5 1.5v3M11 1.5v3"}]]){let N=a.createElementNS(u,I);for(let[K,Z]of Object.entries(Y))N.setAttribute(K,Z);y.append(N)}h.append(y),h.setAttribute("aria-label",s.chooseDate),h.setAttribute("aria-haspopup","dialog"),h.setAttribute("aria-expanded","false"),h.setAttribute("aria-controls",`${o}-calendar`);let v=a.createElement("div");v.className="fd-calendar",v.id=`${o}-calendar`,v.setAttribute("role","dialog"),v.hidden=!0;let b=a.createElement("div");b.className="fd-calendar-head";let p=a.createElement("button");p.type="button",p.textContent="\u2039",p.setAttribute("aria-label",s.previousMonth);let k=a.createElement("span");k.className="fd-calendar-title",k.setAttribute("aria-live","polite");let E=a.createElement("button");E.type="button",E.textContent="\u203A",E.setAttribute("aria-label",s.nextMonth),b.append(p,k,E);let L=a.createElement("table");L.className="fd-calendar-grid",L.setAttribute("role","grid"),v.append(b,L);let x=a.createElement("span");x.className="fd-date-pick",x.append(e.element,h,v);let A=new Date,P=!1;function O(I){if(n==="date")r.setValue(i,`${I.getFullYear()}-${uo(I.getMonth()+1)}-${uo(I.getDate())}`);else{let Y=Wr("datetime",r.getState().values[i]),N=new Date(I.getFullYear(),I.getMonth(),I.getDate(),Y?.getHours()??0,Y?.getMinutes()??0);r.setValue(i,N.toISOString())}B()}function q(I){let Y=Wr(n,r.getState().values[i]),N=new Date,K=m.format(A);k.textContent=K,v.setAttribute("aria-label",K);let Z=new Date(A.getFullYear(),A.getMonth(),1),ie=gt(Z,-((Z.getDay()+6)%7)),J=a.createElement("tr"),$=a.createElement("th");$.scope="col",$.textContent=s.weekShort,$.setAttribute("abbr",s.week),J.append($);for(let Q=0;Q<7;Q++){let se=gt(ie,Q),re=a.createElement("th");re.scope="col",re.textContent=w.format(se).replace(/\.$/,""),re.setAttribute("abbr",c.format(se)),J.append(re)}let D=a.createElement("thead");D.append(J);let ne=a.createElement("tbody");for(let Q=ie;Q<=new Date(A.getFullYear(),A.getMonth()+1,0);Q=gt(Q,7)){let se=a.createElement("tr"),re=a.createElement("th");re.scope="row",re.className="fd-week",re.textContent=String(po(Q)),se.append(re);for(let le=0;le<7;le++){let _=gt(Q,le),H=a.createElement("td"),U=a.createElement("button");U.type="button",U.textContent=String(_.getDate()),U.setAttribute("aria-label",f.format(_)),U.tabIndex=Dr(_,A)?0:-1,_.getMonth()!==A.getMonth()&&U.classList.add("fd-outside"),Y&&Dr(_,Y)&&U.setAttribute("aria-selected","true"),Dr(_,N)&&U.setAttribute("aria-current","date"),U.disabled=P,U.addEventListener("click",()=>O(_)),U.addEventListener("keydown",me=>G(me,_)),H.append(U),se.append(H)}ne.append(se)}L.replaceChildren(D,ne),I&&L.querySelector('button[tabindex="0"]')?.focus()}function V(I){A=I,q(!0)}function G(I,Y){let N={ArrowLeft:()=>gt(Y,-1),ArrowRight:()=>gt(Y,1),ArrowUp:()=>gt(Y,-7),ArrowDown:()=>gt(Y,7),PageUp:()=>tr(Y,-1),PageDown:()=>tr(Y,1),Home:()=>gt(Y,-((Y.getDay()+6)%7)),End:()=>gt(Y,6-(Y.getDay()+6)%7)};N[I.key]?(I.preventDefault(),V(N[I.key]())):(I.key==="Enter"||I.key===" ")&&(I.preventDefault(),O(Y))}function T(){A=Wr(n,r.getState().values[i])??new Date,v.hidden=!1,h.setAttribute("aria-expanded","true"),q(!0)}function B(){v.hidden||(v.hidden=!0,h.setAttribute("aria-expanded","false"),h.focus())}h.addEventListener("click",()=>v.hidden?T():B()),p.addEventListener("click",()=>{A=tr(A,-1),q(!1)}),E.addEventListener("click",()=>{A=tr(A,1),q(!1)}),v.addEventListener("keydown",I=>{I.key==="Escape"&&(I.preventDefault(),I.stopPropagation(),B())});let X=I=>{!v.hidden&&!x.contains(I.target)&&(v.hidden=!0,h.setAttribute("aria-expanded","false"))};return a.addEventListener("mousedown",X),{element:x,focus:()=>e.focus(),update(I){P=I.readonly,h.hidden=I.readonly,I.readonly&&(v.hidden=!0),e.update(I)},destroy(){a.removeEventListener("mousedown",X),e.destroy?.()}}}var ps=e=>{let t=e.replace(/_/g," ").trim();return t.charAt(0).toUpperCase()+t.slice(1)};function ms(e,t){let n=ps(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 zr=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,d=r.type==="properties"?r.definitions:void 0,s=()=>{let h=t.getState().values[n];return h&&typeof h=="object"&&!Array.isArray(h)?h:{}},l={...t,getState:()=>({...t.getState(),values:s()}),setValue:(h,u)=>t.setValue(n,{...s(),[h]:u})},m=a.createElement("div");m.className="fd-properties",m.setAttribute("role","group");let f=[],w="";function c(h){for(let u of f)u.widget.destroy?.();f=h.map(u=>{let y=`${o}-${u.name}`,v={type:u.type,label:u.label,...u.options?{options:u.options}:{}},b={type:"field",id:`${i.id}.${u.name}`,field:u.name},p=Ze({...e,form:l,name:u.name,field:v,node:b,id:y});return{definition:u,widget:p}}),m.replaceChildren(...f.map(({definition:u,widget:y})=>{let v=a.createElement("div");v.className="fd-property",v.dataset.type=u.type;let b=a.createElement("label");return b.htmlFor=`${o}-${u.name}`,b.textContent=u.label,v.append(b,y.element),v}))}return{element:m,focus:()=>f[0]?.widget.focus(),destroy:()=>f.forEach(h=>h.widget.destroy?.()),update(h){let u=s(),y=d??Object.keys(u).map(b=>ms(b,u[b])),v=JSON.stringify(y);v!==w&&(w=v,c(y));for(let{definition:b,widget:p}of f)p.update({value:u[b.name]??null,values:u,readonly:h.readonly,required:!1,invalid:!1})}}};var gs=new Set(["P","BR","B","STRONG","I","EM","U","S","UL","OL","LI","A","H1","H2","H3","H4","BLOCKQUOTE","CODE","PRE","SPAN","DIV"]),hs=new Set(["SCRIPT","STYLE","IFRAME","OBJECT","EMBED","TEMPLATE","NOSCRIPT","SVG","MATH"]),bs=new Set(["P","DIV","H1","H2","H3","H4","LI","BLOCKQUOTE","PRE"]),ys=new Set(["left","center","right","justify","start","end"]);function jr(e,t=globalThis.document){let n=t.createElement("template");n.innerHTML=e;let r=o=>{for(let a of[...o.childNodes]){if(a.nodeType===Node.TEXT_NODE)continue;if(a.nodeType!==Node.ELEMENT_NODE){a.remove();continue}let d=a;if(hs.has(d.tagName)){d.remove();continue}if(r(d),!gs.has(d.tagName)){d.replaceWith(...d.childNodes);continue}let s=d.tagName==="A"?d.getAttribute("href"):null,l=bs.has(d.tagName)?d.style?.textAlign?.trim().toLowerCase():"";for(let m of[...d.attributes])d.removeAttribute(m.name);s&&/^(https?:|mailto:)/i.test(s.trim())&&d.setAttribute("href",s.trim()),l&&ys.has(l)&&d.setAttribute("style",`text-align: ${l};`)}};r(n.content);let i=t.createElement("div");return i.append(n.content),i.innerHTML}function go(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 mo=[["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>']],Hr=({form:e,name:t,node:n,id:r,document:i,labels:o=Pe.en})=>{let a=i.createElement("div");a.id=r,a.className="fd-input fd-richtext",a.setAttribute("role","textbox"),a.setAttribute("aria-multiline","true"),a.setAttribute("contenteditable","true");let d=n.options?.toolbar!==!1,s="";a.addEventListener("input",()=>{let f=jr(a.innerHTML,i);s=f,e.setValue(t,f.trim()===""?null:f)}),a.addEventListener("blur",()=>{a.innerHTML!==s&&(a.innerHTML=s)});let l=d?vs(a,i,o):null,m=a;return l&&(m=i.createElement("div"),m.className="fd-richtext-box",m.setAttribute("role","group"),a.setAttribute("aria-labelledby",`${r}-label`),m.append(l.bar,l.linkRow,a)),{element:m,focus:()=>a.focus(),destroy:()=>l?.destroy(),update(f){l&&(l.bar.hidden=f.readonly,f.readonly&&(l.linkRow.hidden=!0));let w=jr(typeof f.value=="string"?f.value:"",i);(w!==s||i.activeElement!==a)&&(a.innerHTML!==w&&(a.innerHTML=w),s=w),a.setAttribute("contenteditable",String(!f.readonly)),a.setAttribute("aria-readonly",String(f.readonly)),a.setAttribute("aria-invalid",String(f.invalid)),f.describedBy&&a.setAttribute("aria-describedby",f.describedBy)}}};function vs(e,t,n){let r=t.createElement("div");r.className="fd-richtext-bar",r.setAttribute("role","toolbar"),r.setAttribute("aria-label",n.formatting);let i=null,o=()=>{e.focus();let u=t.getSelection();i&&u&&(u.removeAllRanges(),u.addRange(i))},a=(u,y)=>{o(),t.execCommand?.(u,!1,y)},d=t.createElement("select");d.className="fd-richtext-style",d.setAttribute("aria-label",n.textStyle);for(let[u,y]of[["p","paragraph"],["h2","heading"],["h3","subheading"]]){let v=t.createElement("option");v.value=u,v.textContent=n[y],d.append(v)}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 m=t.createElement("button");m.type="button",m.className="fd-button fd-link-apply",m.textContent=n.applyLink;let f=t.createElement("button");f.type="button",f.className="fd-button fd-button-link fd-link-remove",f.textContent=n.removeLink,s.append(l,m,f),m.addEventListener("click",()=>{let u=go(l.value);if(!u){l.setAttribute("aria-invalid","true");return}l.setAttribute("aria-invalid","false"),o(),t.execCommand?.("createLink",!1,u),s.hidden=!0}),f.addEventListener("click",()=>{o(),t.execCommand?.("unlink",!1),s.hidden=!0}),l.addEventListener("keydown",u=>{u.key==="Enter"?(u.preventDefault(),m.click()):u.key==="Escape"&&(u.preventDefault(),s.hidden=!0,o())});let w=mo.map(([u,y,v])=>{let b=t.createElement("button");return b.type="button",b.className="fd-richtext-tool",b.setAttribute("aria-label",n[u]),b.title=n[u],b.innerHTML=v,b.querySelector("svg")?.setAttribute("aria-hidden","true"),["bold","italic","underline","heading"].includes(y)&&b.setAttribute("aria-pressed","false"),b.addEventListener("mousedown",p=>p.preventDefault()),b.addEventListener("click",()=>{if(y==="heading")return a("formatBlock",d.value==="h2"?"<p>":"<h2>");if(y!=="createLink")return a(y);s.hidden=!1,l.value="",l.focus()}),b});r.append(d,...w);let c=[d,...w];c.forEach((u,y)=>u.tabIndex=y===0?0:-1),r.addEventListener("keydown",u=>{if(u.key!=="ArrowRight"&&u.key!=="ArrowLeft")return;let y=c.indexOf(t.activeElement);if(y<0)return;let v=getComputedStyle(r).direction==="rtl",b=u.key==="ArrowRight"!==v?1:-1,p=c[(y+b+c.length)%c.length];u.preventDefault(),c.forEach(k=>k.tabIndex=k===p?0:-1),p.focus()});let h=()=>{let u=t.getSelection();if(!u||!u.rangeCount||!e.contains(u.anchorNode))return;i=u.getRangeAt(0).cloneRange();let y=String(t.queryCommandValue?.("formatBlock")??"").toLowerCase().replace(/[<>]/g,"");d.value=y==="h2"||y==="h3"?y:"p";for(let v of w){let b=mo[w.indexOf(v)][1];v.hasAttribute("aria-pressed")&&v.setAttribute("aria-pressed",String(b==="heading"?y==="h2":t.queryCommandState?.(b)??!1))}};return t.addEventListener("selectionchange",h),{bar:r,linkRow:s,destroy:()=>t.removeEventListener("selectionchange",h)}}var Br=({form:e,name:t,id:n,document:r,labels:i=Pe.en})=>{let o=r.createElement("div");o.className="fd-json";let a=r.createElement("textarea");a.id=n,a.className="fd-input fd-textarea fd-code",a.spellcheck=!1;let d=r.createElement("div");return d.className="fd-cell-error",d.hidden=!0,o.append(a,d),a.addEventListener("input",()=>{if(a.value.trim()===""){d.hidden=!0,e.setValue(t,null);return}try{let s=JSON.parse(a.value);d.hidden=!0,e.setValue(t,s)}catch{d.hidden=!1,d.textContent=i.invalidJson}}),{element:o,focus:()=>a.focus(),update(s){if(r.activeElement!==a){let l=s.value===null||s.value===void 0?"":JSON.stringify(s.value,null,2);a.value!==l&&(a.value=l)}a.readOnly=s.readonly,a.setAttribute("aria-invalid",String(s.invalid||!d.hidden))}}};var ho=new WeakMap;function xs(e){let t=ho.get(e);return t===void 0&&(t=Math.floor(Math.random()*4294967296)>>>0,ho.set(e,t)),t}function ws(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 ks(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 Lt(e,t,n,r){if(r.options?.shuffle!==!0)return[...e];let i=(d,s)=>d[s]===!0,o=e.filter(d=>!i(d,"fixed")&&!i(d,"exclusive")),a=ks(ws(xs(t),n));for(let d=o.length-1;d>0;d--){let s=Math.floor(a()*(d+1));[o[d],o[s]]=[o[s],o[d]]}return o.push(...e.filter(d=>!i(d,"fixed")&&i(d,"exclusive"))),e.map(d=>i(d,"fixed")?d:o.shift())}var bo=({form:e,name:t,field:n,node:r,id:i,document:o})=>{let a=n,d=a.multiple?"checkbox":"radio",s=(y,v={},...b)=>{let p=o.createElement(y);for(let[k,E]of Object.entries(v))p.setAttribute(k,E);return p.append(...b),p},l=s("table",{id:i,class:"fd-matrix-table"});l.append(s("thead",{},s("tr",{},s("th",{scope:"col"}),...a.columns.map(y=>s("th",{scope:"col"},y.label)))));let m=s("tbody"),f=[],w=[];for(let y of Lt(a.rows,e,t,r)){let v=s("tr",{role:d==="radio"?"radiogroup":"group","aria-label":y.label});w.push(v),v.append(s("th",{scope:"row"},y.label));for(let b of a.columns){let p=s("input",{type:d,name:`${i}-${y.value}`,value:String(b.value),"data-row":String(y.value),"aria-label":`${y.label}: ${b.label}`});p.addEventListener("change",()=>{if(a.onePerColumn&&p.checked)for(let k of f)k.value===p.value&&k!==p&&(k.checked=!1);u()}),f.push(p),v.append(s("td",{},s("label",{class:"fd-matrix-pick"},p,s("span",{class:"fd-matrix-column"},b.label))))}m.append(v)}l.append(m);let c=s("div",{class:"fd-matrix"},l),h=y=>a.columns.find(v=>String(v.value)===y)?.value??y;function u(){let y={};for(let v of a.rows){let b=f.filter(p=>p.dataset.row===String(v.value)&&p.checked).map(p=>h(p.value));(a.multiple?b.length:b.length===1)&&(y[String(v.value)]=a.multiple?b:b[0])}e.setValue(t,Object.keys(y).length?y:null)}return{element:c,focus:()=>(f.find(y=>y.checked)??f[0])?.focus(),update(y){let v=y.value&&typeof y.value=="object"&&!Array.isArray(y.value)?y.value:{};for(let b of f){let p=v[b.dataset.row??""],k=Array.isArray(p)?p.map(String):p==null?[]:[String(p)];b.checked=k.includes(b.value),b.disabled=y.readonly}if(l.setAttribute("aria-invalid",String(y.invalid)),d==="radio")for(let b of w)Ve(b,"aria-required",String(y.required));y.describedBy?l.setAttribute("aria-describedby",y.describedBy):l.removeAttribute("aria-describedby")}}};var Zt=600,wn=180,Ss="#1b2a5c",Es='"Segoe Script", "Snell Roundhand", "Brush Script MT", "Apple Chancery", cursive',Ls=e=>Math.floor(e.length*3/4)-(e.endsWith("==")?2:e.endsWith("=")?1:0),Rs=e=>e.data??e.url??"",yo=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=Ce(a,d),l=$e(o),m=r.options??{},f=m.color,w=typeof f=="string"&&/^#[\da-f]{6}$/i.test(f)?f:Ss,c=m.penWidth,h=typeof c=="number"&&c>0?c:3,u=m.footerLabel,y=l("canvas",{class:"fd-signature-pad",width:String(Zt),height:String(wn),role:"img","aria-label":s.signaturePad}),v=l("span",{class:"fd-signature-hint","aria-hidden":"true"},r.placeholder||s.signHere),b=l("img",{class:"fd-signature-image",alt:n.label,hidden:""}),p=l("input",{type:"text",class:"fd-input fd-signature-typed","aria-label":s.typeSignature,placeholder:s.typeSignature,autocomplete:"name"}),k=$=>l("button",{type:"button",class:"fd-button fd-button-link",hidden:""},$),E=k(s.undo),L=k(s.clearDrawing);L.classList.add("fd-signature-clear");let x=m.upload===!0?k(s.uploadSignature):null,A=l("input",{type:"file",accept:"image/*",class:"fd-sr-only",tabindex:"-1","aria-hidden":"true"}),P=l("div",{id:i,class:"fd-signature",role:"group"},l("div",{class:"fd-signature-box"},y,b,v),...typeof u=="string"&&u?[l("span",{class:"fd-signature-footer"},u)]:[],l("div",{class:"fd-signature-tools"},p,E,...x?[x,A]:[],L)),O=()=>{let $=y.getContext("2d");return $&&($.strokeStyle=$.fillStyle=w,$.lineWidth=h,$.lineCap=$.lineJoin="round"),$},q=null,V=!1,G=null,T=[],B=null,X=()=>!T.length&&!G;function I(){let $=O();if($){$.clearRect(0,0,Zt,wn),G&&($.font=`italic 64px ${Es}`,$.textAlign="center",$.textBaseline="middle",$.fillText(G,Zt/2,wn/2,Zt-40));for(let D of T){$.beginPath(),$.arc(D[0].x,D[0].y,h/2,0,Math.PI*2),$.fill();for(let ne=1;ne<D.length;ne++)Y(D[ne-1],D[ne])}}}function Y($,D){let ne=O();ne?.beginPath(),ne?.moveTo($.x,$.y),ne?.lineTo(D.x,D.y),ne?.stroke()}function N(){T=[],G=null,I()}function K(){if(v.hidden=!X(),X())return q=null,e.setValue(t,null);let $;try{$=y.toDataURL("image/png")}catch{return}if(!$)return;let D=$.slice($.indexOf(",")+1);q=D,e.setValue(t,{name:"signature.png",type:"image/png",size:Ls(D),data:D,...G&&!T.length?{text:G}:{}})}function Z($){let D=y.getBoundingClientRect();return{x:($.clientX-D.left)*Zt/(D.width||Zt),y:($.clientY-D.top)*wn/(D.height||wn)}}y.addEventListener("pointerdown",$=>{V||$.button!==0||($.preventDefault(),y.setPointerCapture?.($.pointerId),B=Z($),T.push([B]),v.hidden=!0,I())}),y.addEventListener("pointermove",$=>{if(!B)return;let D=Z($);Y(B,D),T[T.length-1].push(D),B=D});let ie=()=>{B&&(B=null,K())};y.addEventListener("pointerup",ie),y.addEventListener("pointercancel",ie),p.addEventListener("input",()=>{J(),T=[],G=p.value.trim()||null,I(),K()}),E.addEventListener("click",()=>{T.pop(),I(),K()}),x?.addEventListener("click",()=>A.click()),A.addEventListener("change",()=>{let $=A.files?.[0];A.value="",$&&Zn($).then(D=>e.setValue(t,D))}),L.addEventListener("click",()=>{N(),q=null,p.value="",J(),e.setValue(t,null),p.focus()});function J(){b.hidden=!0,y.hidden=!1}return{element:P,focus:()=>(p.hidden?L:p).focus(),update($){V=$.readonly;let D=$.value&&typeof $.value=="object"&&!Array.isArray($.value)?$.value:null,ne=o.activeElement!==p;if(D&&Rs(D)!==q){let Q=D.data?`data:${D.type};base64,${D.data}`:D.url??"";b.getAttribute("src")!==Q&&(b.src=Q),b.hidden=!1,y.hidden=!0,q=null,N(),ne&&(p.value=D.text??"")}else D||((q!==null||!b.hidden)&&(q=null,N(),ne&&(p.value="")),J());v.hidden=V||!X()||!b.hidden,p.hidden=V,p.readOnly=V,L.hidden=V||!D,E.hidden=V||!T.length||!b.hidden,x&&(x.hidden=V),y.classList.toggle("fd-signature-locked",V),je(P,$),p.setAttribute("aria-invalid",String($.invalid))}}};var qr=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d="en"})=>{let s=Ce(a,d),l=$e(o),m=x=>x in n&&typeof n[x]=="number"?n[x]:void 0,f=m("min")??0,w=m("max")??100,c=typeof r.options?.step=="number"&&r.options.step>0?r.options.step:1,h=n.type==="integer"?0:n.type==="float"&&n.digits?n.digits[1]:Math.max(0,-Math.floor(Math.log10(c))),u=x=>pt(x,h,d),y=l("input",{id:i,type:"range",class:"fd-slider-input",min:String(f),max:String(w),step:String(c)}),v=l("output",{class:"fd-slider-value",for:i,"aria-hidden":"true"}),b=[r.options?.startLabel,r.options?.endLabel].map(x=>typeof x=="string"?x:""),p=(x,A)=>l("span",{class:A?"fd-slider-last":void 0},u(x),...b[A]?[l("span",{class:"fd-slider-word"},b[A])]:[]),k=l("div",{class:"fd-slider-ends","aria-hidden":"true"},p(f,0),p(w,1)),E=Et(o,s,()=>{e.setValue(t,null),y.focus()}),L=l("div",{class:"fd-slider"},l("div",{class:"fd-slider-track"},y,v),k,E.button);return b.some(Boolean)&&y.setAttribute("aria-description",b.filter(Boolean).join(" \u2026 ")),y.addEventListener("input",()=>e.setValue(t,Number(y.value))),{element:L,focus:()=>y.focus(),update(x){let A=typeof x.value=="number"?x.value:null;L.classList.toggle("fd-slider-empty",A===null);let P=String(A??(f+w)/2);y.value!==P&&(y.value=P),v.textContent=A===null?"\u2013":u(A),y.setAttribute("aria-valuetext",A===null?s.notAnswered:u(A)),y.disabled=x.readonly,E.allow(x),E.show(A!==null),je(y,x)}}};function rr(e,t,n){let r=i=>e.some(o=>o.exclusive&&o.value===i);return r(n)?[n]:[...t.filter(i=>!r(i)),n]}function ir(e,t,n){let r=n.validate?.find(o=>o.atMost!==void 0&&(o.when??!0)===!0&&o.level!=="warning")?.atMost,i=r?e("span",{class:"fd-choice-limit",role:"status"}):null;return{element:i,full(o){let a=!!r&&o>=r;return i&&St(i,a?Me(t.upTo,{n:r}):""),a}}}function or(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 vo=e=>wo(e,!1),xo=e=>wo(e,!0);function wo({form:e,name:t,field:n,id:r,document:i,labels:o,locale:a},d){let s=Ce(o,a),l=$e(i),m=n.type==="selection"?n.options:[],f=n.type==="selection"&&n.ownAnswers===!0&&!d,w=`${r}-list`,c=l("input",{id:r,type:"text",class:"fd-input fd-combo-input",role:"combobox","aria-autocomplete":"list","aria-expanded":"false","aria-controls":w,autocomplete:"off",placeholder:s.search}),h=l("ul",{id:w,class:"fd-listbox",role:"listbox",hidden:""}),u=l("ul",{class:"fd-chips"}),y=l("div",{class:"fd-combo"},c,h),v=d?l("div",{class:"fd-choice-search"},y):l("div",{class:"fd-tags fd-choice-tags"},u,y),b=()=>e.getState().values[t],p=()=>Array.isArray(b())?b():[],k=T=>e.setValue(t,T),E=T=>m.find(B=>B.value===T)?.label??(T==null?"":String(T)),L=[],x=-1,A=!1;function P(){h.replaceChildren(...L.map((T,B)=>{let X=l("li",{id:`${w}-${B}`,role:"option",class:`fd-option${B===x?" fd-active":""}`,"aria-selected":String(B===x)},T.label);return X.addEventListener("mousedown",I=>I.preventDefault()),X.addEventListener("click",()=>V(T)),X})),L.length||h.append(l("li",{class:"fd-empty"},s.noResults)),Ve(c,"aria-activedescendant",x>=0?`${w}-${x}`:null)}function O(){let T=c.value.trim(),B=d&&T===E(b())?"":T.toLowerCase(),X=new Set(p());L=m.filter(I=>!X.has(I.value)&&I.label.toLowerCase().includes(B)),f&&B&&!X.has(T)&&!m.some(I=>I.label.toLowerCase()===B)&&L.push({value:T,label:Me(s.createNamed,{name:T})}),x=-1,P(),h.hidden=!1,c.setAttribute("aria-expanded","true")}function q(){h.hidden=!0,x=-1,c.setAttribute("aria-expanded","false"),c.removeAttribute("aria-activedescendant")}function V(T){if(d)return c.value=T.label,k(T.value),q();c.value="",k(rr(m,p(),T.value)),i.activeElement===c?O():q()}d||c.addEventListener("focus",()=>!A&&O()),c.addEventListener("click",()=>!A&&h.hidden&&O()),c.addEventListener("input",()=>!A&&O()),c.addEventListener("blur",()=>{q(),d&&!A&&(c.value.trim()?c.value=E(b()):k(null))}),c.addEventListener("keydown",T=>{if(!A)switch(T.key){case"ArrowDown":case"ArrowUp":{if(T.preventDefault(),h.hidden)return O();if(!L.length)return;let B=T.key==="ArrowDown";x=x===-1?B?0:L.length-1:(x+(B?1:-1)+L.length)%L.length,P(),h.children[x]?.scrollIntoView?.({block:"nearest"});return}case"Enter":{let B=L[x]??(c.value.trim()?L[0]:void 0);if(h.hidden||!B)return;T.preventDefault(),V(B);return}case"Escape":h.hidden||T.preventDefault(),q();return;case"Backspace":!d&&c.value===""&&p().length&&k(p().slice(0,-1));return}});let G="";return{element:v,focus:()=>c.focus(),update(T){if(A=T.readonly,A&&q(),je(c,T),Ve(c,"aria-required",String(T.required)),d){c.readOnly=A,i.activeElement!==c&&(c.value=E(T.value));return}let B=Array.isArray(T.value)?T.value:[];c.hidden=A;let X=JSON.stringify([A,B]);X!==G&&(G=X,u.replaceChildren(...B.map(I=>{let Y=E(I),N=l("li",{class:"fd-chip"},l("span",{class:"fd-chip-label"},Y));if(!A){let K=l("button",{type:"button",class:"fd-chip-remove","aria-label":Me(s.remove,{name:Y})},"\xD7");K.addEventListener("click",()=>k(p().filter(Z=>Z!==I))),N.append(K)}return N})),h.hidden||O())}}}var Fs='<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>',ko=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=Ce(a,d),l=$e(o),m=n.type==="selection"&&n.multiple===!0,f=n.type==="selection"?n.options:[],w=Lt(f,e,t,r),c=r.options??{},h=c.showLabels===!1,u=l("div",{id:i,class:`fd-image-choices${h?" fd-image-choices-bare":""}`,role:m?"group":"radiogroup","data-size":c.imageSize,"data-fit":c.imageFit});or(u,r);let y=m?ir(l,s,r):null,v=w.map(L=>{let x=L.image?l("img",{src:L.image,alt:L.alt??"",loading:"lazy",draggable:"false"}):l("span",{class:"fd-image-card-blank"});L.image||(x.innerHTML=Fs);let A=l("button",{type:"button",class:"fd-image-card",role:m?"checkbox":"radio","aria-checked":"false","aria-label":h?L.label:void 0},l("span",{class:"fd-image-card-picture"},x),l("span",{class:"fd-image-card-words"},L.label));return A.addEventListener("click",()=>p(L)),u.append(A),A}),b=()=>e.getState().values[t];function p(L){if(!m)return e.setValue(t,L.value);let x=Array.isArray(b())?b():[],A=new Set(x.includes(L.value)?x.filter(P=>P!==L.value):rr(f,x,L.value));e.setValue(t,f.filter(P=>A.has(P.value)).map(P=>P.value))}let k=!1;m||u.addEventListener("keydown",L=>{if(k)return;let x=v.indexOf(L.target);if(x===-1)return;let A=_n(u),P={ArrowDown:1,ArrowUp:-1,ArrowRight:A?-1:1,ArrowLeft:A?1:-1},O=L.key==="Home"?0:L.key==="End"?v.length-1:L.key in P?(x+P[L.key]+v.length)%v.length:-1;O!==-1&&(L.preventDefault(),p(w[O]),v[O].focus())});let E=m?null:Et(o,s,()=>{e.setValue(t,null),v[0]?.focus()});return y?.element&&u.append(y.element),{element:E?l("div",{class:"fd-choices-box"},u,E.button):u,focus:()=>(v.find(L=>L.getAttribute("aria-checked")==="true")??v[0])?.focus(),update(L){k=L.readonly;let x=new Set(Array.isArray(L.value)?L.value:[L.value]),A=m?-1:Math.max(0,w.findIndex(O=>x.has(O.value))),P=!!y?.full(Array.isArray(L.value)?L.value.length:0);v.forEach((O,q)=>{let V=x.has(w[q].value);O.setAttribute("aria-checked",String(V)),O.tabIndex=m||q===A?0:-1,O.disabled=k||P&&!V&&!w[q].exclusive}),E?.allow(L),E?.show(w.some(O=>x.has(O.value))),je(u,L)}}};var As=4,So=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d})=>{let s=Ce(a,d),l=$e(o),m=Lt(n.type==="selection"?n.options:[],e,t,r),f=l("ol",{class:"fd-rank-list"}),w=Un(l),c=r.options?.top,h=typeof c=="number"&&c>=1&&c<m.length?Math.floor(c):0,u=l("div",{class:"fd-rank-pool"}),y=l("button",{type:"button",class:"fd-button fd-rank-keep"},s.keepOrder);y.addEventListener("click",()=>e.setValue(t,k.map(V=>V.option.value)));let v=l("div",{id:i,class:"fd-ranking",role:"group"},...h?[l("div",{class:"fd-choice-limit"},Me(s.upTo,{n:h})),u,f]:[f,y],w.element),b=m.map(V=>{let G=V.label,T=l("span",{class:"fd-rank-place","aria-hidden":"true"}),B=l("button",{type:"button",class:"fd-rank-move fd-rank-up","aria-label":Me(s.moveUp,{label:G})},"\u2191"),X=l("button",{type:"button",class:"fd-rank-move fd-rank-down","aria-label":Me(s.moveDown,{label:G})},"\u2193"),I=l("span",{class:"fd-rank-grip","aria-hidden":"true"}),Y=l("span",{class:"fd-rank-tools"},B,X),N=l("li",{class:"fd-rank-item","data-value":String(V.value)},I,T,l("span",{class:"fd-rank-words"},G),Y),K={option:V,element:N,place:T,up:B,down:X};if(h){let Z=l("button",{type:"button",class:"fd-rank-pick"},G);Z.addEventListener("click",()=>!p&&k.length<h&&x([...k,K],K));let ie=l("button",{type:"button",class:"fd-rank-move fd-rank-out","aria-label":Me(s.remove,{name:G})},"\xD7");ie.addEventListener("click",()=>{w.say(Me(s.removed,{name:G})),e.setValue(t,k.filter(J=>J!==K).map(J=>J.option.value))}),Y.append(ie),u.append(Z),K.pick=Z}return B.addEventListener("click",()=>A(K,-1,"up")),X.addEventListener("click",()=>A(K,1,"down")),N.addEventListener("pointerdown",Z=>O(K,Z)),K}),p=!1,k=[...b],E=null;function L(V){for(k=V,V.forEach((G,T)=>{f.children[T]!==G.element&&f.insertBefore(G.element,f.children[T]??null),G.place.textContent=String(T+1),G.up.disabled=T===0,G.down.disabled=T===V.length-1});f.children.length>V.length;)f.lastElementChild?.remove()}function x(V,G){w.say(Me(s.movedTo,{label:G.option.label,n:V.indexOf(G)+1,total:V.length})),e.setValue(t,V.map(T=>T.option.value))}function A(V,G,T){let B=k.indexOf(V),X=B+G;if(p||X<0||X>=k.length)return;let I=[...k];I.splice(B,1),I.splice(X,0,V),E=V.element.contains(o.activeElement)?{item:V,which:T==="up"&&X===0||T==="down"&&X===I.length-1?T==="up"?"down":"up":T}:null,x(I,V),P()}function P(){if(!E)return;let{item:V,which:G}=E;E=null,V[G].focus()}f.addEventListener("keydown",V=>{if(p||!V.altKey||V.key!=="ArrowUp"&&V.key!=="ArrowDown")return;let G=b.find(T=>T.element.contains(V.target));G&&(V.preventDefault(),A(G,V.key==="ArrowUp"?-1:1,V.key==="ArrowUp"?"up":"down"))});function O(V,G){if(p||G.button!==0||G.target.closest("button")||G.pointerType==="touch"&&!G.target.closest(".fd-rank-grip"))return;let T=G.clientY,B=[...k],X=!1;V.element.setPointerCapture?.(G.pointerId);let I=N=>{if(!X&&Math.abs(N.clientY-T)<As)return;X||(X=!0,V.element.classList.add("fd-rank-lifted")),N.preventDefault();let K=k.filter(ie=>ie!==V),Z=K.filter(ie=>{let J=ie.element.getBoundingClientRect();return J.top+J.height/2<N.clientY}).length;k.indexOf(V)!==Z&&L([...K.slice(0,Z),V,...K.slice(Z)])},Y=()=>{V.element.removeEventListener("pointermove",I),V.element.removeEventListener("pointerup",Y),V.element.removeEventListener("pointercancel",Y),V.element.classList.remove("fd-rank-lifted"),k.some((N,K)=>N!==B[K])&&x(k,V)};V.element.addEventListener("pointermove",I),V.element.addEventListener("pointerup",Y),V.element.addEventListener("pointercancel",Y)}function q(V){let G=(Array.isArray(V)?V:[]).map(T=>b.find(B=>B.option.value===T)).filter(T=>!!T);return h?G.slice(0,h):Array.isArray(V)?[...new Set([...G,...k])]:k}return L(h?[]:k),{element:v,focus:()=>(b.find(V=>V.pick&&!V.pick.hidden&&!V.pick.disabled)?.pick??(k[0]?.down.disabled?k[0]?.up:k[0]?.down))?.focus(),update(V){p=V.readonly,v.classList.toggle("fd-ranking-locked",p);let G=q(V.value);(G.length!==k.length||G.some((T,B)=>T!==k[B])||!h&&!f.children.length)&&L(G);for(let T of b)T.up.hidden=T.down.hidden=p,T.pick&&(T.pick.hidden=k.includes(T),T.pick.disabled=p||k.length>=h,T.element.querySelector(".fd-rank-out").hidden=p);y.hidden=p||Array.isArray(V.value)&&V.value.length>0,P(),je(v,V)}}};var Eo={street:["addressStreet","street-address"],line2:["addressLine2","address-line2"],city:["addressCity","address-level2"],region:["addressRegion","address-level1"],postcode:["addressPostcode","postal-code"],country:["addressCountry","country"]},Ts=e=>typeof e=="string"&&e in Eo,Ms="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",Ur={};function _r(e){if(!Ur[e]){let t=new Intl.DisplayNames([e],{type:"region",fallback:"none"}),n=[];for(let r=65;r<91;r++)for(let i=65;i<91;i++){let o=String.fromCharCode(r,i),a=!Ms.includes(o)&&t.of(o);a&&n.push([o,a])}Ur[e]=n.sort((r,i)=>r[1].localeCompare(i[1],e))}return Ur[e]}var Lo=({form:e,name:t,node:n,id:r,document:i,labels:o,locale:a="en"})=>{let d=Ce(o,a),s=$e(i),l=n.options??{},m=l.parts,f=Array.isArray(m)?m.filter(Ts):["street","city","postcode","country"],w=Array.isArray(l.requiredParts)?l.requiredParts:[],c=typeof l.country=="string"?l.country:"",h=s("div",{id:r,class:"fd-address",role:"group"}),u=(v,b)=>{let p=e.getState().values[t],k=p&&typeof p=="object"&&!Array.isArray(p)?{...p}:{};k[v]=b,c&&f.includes("country")&&k.country===void 0&&(k.country=c);let E=Object.fromEntries(Object.entries(k).filter(([,x])=>typeof x!="string"||x.trim()!=="")),L=Object.keys(E);e.setValue(t,L.length&&(v==="country"||L.join()!=="country"||E.country!==c)?E:null)},y=f.map(v=>{let[b,p]=Eo[v],k={id:`${r}-${v}`,class:"fd-input","data-part":v,autocomplete:v==="street"&&f.includes("line2")?"address-line1":p,"aria-required":w.includes(v)?"true":void 0},E=v==="country"?s("select",k,s("option",{value:""}),..._r(a).map(([L,x])=>s("option",{value:L},x))):s("input",{type:"text",...k});return E.addEventListener(v==="country"?"change":"input",()=>u(v,E.value)),v==="country"&&E.classList.add("fd-select"),h.append(s("div",{class:`fd-address-part fd-address-${v}${w.includes(v)?" fd-required":""}`},s("label",{class:"fd-address-label",for:E.id},d[b]),E)),{part:v,input:E}});return{element:h,focus:()=>y[0]?.input.focus(),update(v){let b=v.value&&typeof v.value=="object"&&!Array.isArray(v.value)?v.value:{};for(let{part:p,input:k}of y){let E=typeof b[p]=="string"?b[p]:p==="country"&&b.country===void 0?c:"";k instanceof HTMLSelectElement?(E&&![...k.options].some(L=>L.value===E)&&k.append(s("option",{value:E},E)),k.disabled=v.readonly):k.readOnly=v.readonly,i.activeElement!==k&&k.value!==E&&(k.value=E),k.setAttribute("aria-invalid",String(v.invalid&&(!w.length||w.includes(p)&&!E.trim())))}je(h,v)}}};var Ro=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0,Fo=({form:e,name:t,field:n,node:r,id:i,document:o,labels:a,locale:d,dialogs:s})=>{let l=Ce(a,d),m=$e(o),f=n,w=r.options??{},c=Ro(w.min)??0,h=Ro(w.max)??1/0,u=typeof w.itemLabel=="string"&&w.itemLabel.trim()?w.itemLabel.trim():null,y=T=>u?`${u} ${T}`:Me(l.entry,{n:T}),v=(r.columns??Object.keys(f.fields)).filter(T=>f.fields[T]&&T!==f.sequenceField&&T!==f.lineKinds?.field),b=m("div",{class:"fd-repeat-list"}),p=m("button",{type:"button",class:"fd-button fd-repeat-add"},typeof w.addLabel=="string"&&w.addLabel?w.addLabel:l.addAnother),k=Un(m),E=m("div",{id:i,class:"fd-repeat",role:"group"},b,p,k.element),L=new Map,x=()=>e.getState().values[t]??[],A=!1,P=null;for(let T=x().length;T<c;T++)e.addLine(t);p.addEventListener("click",()=>{if(A||x().length>=h)return;let T=e.addLine(t);P=()=>L.get(T)?.fields[0]?.widget.focus(),G()});function O(T){let B=`${i}-${T.key}-title`,X=m("span",{id:B,class:"fd-repeat-title"}),I=m("button",{type:"button",class:"fd-repeat-remove"},"\xD7"),Y=($,D,ne)=>{let Q=m("button",{type:"button",class:"fd-repeat-tool"},$);return Q.addEventListener("click",ne),[Q,D]},N=()=>x().findIndex($=>$.key===T.key),K=[Y("\u2191","moveUp",()=>q(T.key,N()-1)),Y("\u2193","moveDown",()=>q(T.key,N()+1)),Y("\u29C9","copy",()=>V(T.key))],Z=m("div",{class:"fd-repeat-fields"}),ie=m("div",{class:"fd-repeat-card",role:"group","aria-labelledby":B,"data-line":T.key},m("div",{class:"fd-repeat-head"},X,...K.map(([$])=>$),I),Z),J=v.map($=>{let D=f.fields[$],ne=`${i}-${T.key}-${$}`,Q={type:"field",id:`${r.id}.${T.key}.${$}`,field:$},se=Ze({form:Xn(e,t,T.key),name:$,field:D,node:Q,id:ne,document:o,labels:a,locale:d,dialogs:s}),re=m("label",{class:"fd-repeat-label",for:ne},D.label);["INPUT","SELECT","TEXTAREA"].includes(se.element.tagName)||re.addEventListener("click",()=>se.focus());let le=m("div",{class:"fd-cell-error",hidden:""});return Z.append(m("div",{class:"fd-repeat-field"},re,se.element,le)),{name:$,def:D,widget:se,error:le}});return I.addEventListener("click",()=>{let $=x(),D=$.findIndex(re=>re.key===T.key);if(A||D===-1||$.length<=c)return;let ne=X.textContent??"";e.removeLine(t,T.key),k.say(Me(l.removed,{name:ne}));let Q=x(),se=Q[Math.min(D,Q.length-1)];P=()=>se?L.get(se.key)?.fields[0]?.widget.focus():p.focus(),G()}),{element:ie,title:X,remove:I,tools:K,fields:J}}function q(T,B){let X=x().findIndex(N=>N.key===T);if(A||B<0||B>=x().length||B===X)return;let I=L.get(T)?.title.textContent??"";yn(e,t,f,T,B);let Y=X>B&&B>0||B===x().length-1?0:1;L.get(T)?.tools[Y][0].focus(),k.say(Me(l.movedTo,{label:I,n:B+1,total:x().length}))}function V(T){let B=x(),X=B.findIndex(N=>N.key===T);if(A||X<0||B.length>=h)return;let I={...B[X].values};f.sequenceField&&delete I[f.sequenceField];let Y=e.addLine(t,I);yn(e,t,f,Y,X+1),L.get(Y)?.fields[0]?.widget.focus()}function G(){let T=P;P=null,T?.()}return{element:E,focus:()=>([...L.values()].find(T=>T.element===b.firstElementChild)?.fields[0]?.widget??p).focus(),update(T){A=T.readonly;let B=T.value??[],X=e.getState().errors,I=new Set(B.map(Y=>Y.key));for(let[Y,N]of L)if(!I.has(Y)){N.element.remove();for(let K of N.fields)K.widget.destroy?.();L.delete(Y)}B.forEach((Y,N)=>{let K=L.get(Y.key);K||L.set(Y.key,K=O(Y)),b.children[N]!==K.element&&b.insertBefore(K.element,b.children[N]??null),K.title.textContent=y(N+1),K.remove.setAttribute("aria-label",Me(l.remove,{name:K.title.textContent})),K.remove.hidden=A||B.length<=c;for(let[Z,ie]of K.tools)Z.setAttribute("aria-label",Me(l[ie],{label:K.title.textContent,name:K.title.textContent})),Z.hidden=A||(ie==="moveUp"?N===0:ie==="moveDown"?N===B.length-1:B.length>=h);for(let Z of K.fields){let ie=X[`${t}.${Y.key}.${Z.name}`];Z.error.hidden=!ie,Z.error.textContent=ie??"",Z.widget.update({value:Y.values[Z.name],values:Y.values,readonly:A||Z.def.readonly===!0,required:Z.def.required===!0,invalid:!!ie})}}),p.hidden=A||B.length>=h,je(E,T)}}};function Gr(e,{form:t,name:n,field:r,document:i,labels:o,locale:a},d){let s=r.type==="char"||r.type==="text"?r.size:void 0;if(!s||t.page.fields[n]!==r)return e;let l=$e(i),m=l("div",{class:"fd-count","aria-hidden":"true"}),f=l("div",{class:"fd-sr-only","aria-live":"polite"}),w;return{...e,element:l("div",{class:"fd-counted"},e.element,m,f),update(c){e.update(c);let h=d.value.length;St(m,`${h} / ${s}`),m.classList.toggle("fd-count-near",h>=s*.9),st(m,c.readonly),i.activeElement===d&&(clearTimeout(w),w=setTimeout(()=>St(f,Me(Ce(o,a).charactersLeft,{n:s-h})),700))}}}function Ao(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 ar(e,t,n){let r=n.options??{},i=t.type==="char";(i?[r.min,r.max]:"min"in t?[t.min,t.max]:[]).forEach((a,d)=>{typeof a=="string"&&(e[d?"max":"min"]=i?a:Pt(a)+(t.type==="datetime"?d?"T23:59":"T00:00":""))}),typeof r.step=="number"&&(e.step=String(r.step*60))}function Kr(e,t){try{let n=new Intl.NumberFormat(t,{style:"currency",currency:e,currencyDisplay:"narrowSymbol"}).formatToParts(1),r=n.findIndex(i=>i.type==="currency");return{text:n[r].value,after:r>n.findIndex(i=>i.type==="integer")}}catch{return{text:e,after:!1}}}function To(e,t){let{form:n,name:r,document:i}=t,o=Ce(t.labels,t.locale),a=i.createElement("div"),d=i.createElement("div"),s=i.createElement("button");s.type="button",s.className="fd-button fd-button-link",s.textContent=o.choicesFailed,s.onclick=()=>n.loadChoices(r),d.setAttribute("role","status"),a.style.cssText="display:grid;gap:4px";let l=new Map,m,f=null,w=c=>{m?.destroy?.(),m=e({...t,field:{...t.field,options:c}}),m.element.getAttribute("role")&&m.element.setAttribute("aria-labelledby",`${t.id}-label`),a.replaceChildren(m.element,d,s)};return w([]),n.getState().choices[r]||n.loadChoices(r),{element:a,focus:()=>m.focus(),destroy:()=>m.destroy?.(),update(c){let h=n.getState().choices[r];if(h?.options&&h.options!==f){f=h.options;for(let y of f)l.set(y.value,y.label);w(f)}m.update(c);let u=f&&!t.field.other?[c.value].flat().filter(y=>y!=null&&!f?.some(v=>v.value===y)):[];d.className=h?.loading?"fd-help":"fd-warning",d.textContent=h?.loading?o.loadingChoices:u.length?Ee(o.notOffered,{name:u.map(y=>l.get(y)??String(y)).join(", ")}):"",d.hidden=!d.textContent,s.hidden=!h?.error}}}var Mo=({form:e,name:t,node:n,id:r,document:i,labels:o,locale:a})=>{let d=Ce(o,a),s=$e(i),l=s("div",{id:r,class:"fd-points fd-yes-no",role:"radiogroup"}),m=!1,f=[!0,!1].map(c=>{let h=n.options?.[c?"yesLabel":"noLabel"],u=s("button",{type:"button",role:"radio"},typeof h=="string"&&h?h:c?d.yes:d.no);return u.addEventListener("click",()=>e.setValue(t,c)),l.append(u),u});l.addEventListener("keydown",c=>{let h=f.indexOf(c.target);m||h===-1||!c.key.startsWith("Arrow")||(c.preventDefault(),e.setValue(t,h===1),f[1-h].focus())});let w=Et(i,d,()=>{e.setValue(t,null),f[0].focus()});return{element:s("div",{class:"fd-choices-box"},l,w.button),focus:()=>(f.find(c=>c.getAttribute("aria-checked")==="true")??f[0]).focus(),update(c){m=c.readonly;let h=c.value===!0?0:c.value===!1?1:-1;f.forEach((u,y)=>{Ve(u,"aria-checked",String(y===h)),u.classList.toggle("fd-on",y===h),u.tabIndex=y===Math.max(0,h)?0:-1,u.disabled=m}),Ve(l,"aria-required",String(c.required)),w.allow(c),w.show(h!==-1),je(l,c)}}};function Ze(e,t={}){let{field:n,node:r}=e,i=[r.widget?`${n.type}.${r.widget}`:null,n.type==="selection"&&n.multiple?"selection.checkboxes":null,n.type].filter(o=>o!==null);for(let o of i){let a=t[o]??Co[o];if(a)return n.type==="selection"&&n.optionsFrom?To(a,e):a(e)}return Vs(e)}function Ae(e,t,n={},...r){let i=e.createElement(t);for(let[o,a]of Object.entries(n))a!==void 0&&i.setAttribute(o,a);return i.append(...r),i}function Rt(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 lr=e=>e==null?"":String(e);function Qt(e){return t=>{let{form:n,name:r,field:i,node:o,id:a,document:d}=t,s=Ae(d,"input",{id:a,type:e,class:"fd-input",autocomplete:/^(email|tel|url)$/.test(e)?e:"off"});return i.type==="char"&&i.size!==void 0&&(s.maxLength=i.size),e==="time"&&ar(s,i,o),o.placeholder&&(s.placeholder=o.placeholder),s.addEventListener("input",()=>n.setValue(r,s.value===""?null:s.value)),Gr({element:s,focus:()=>s.focus(),update(l){let m=lr(l.value);s.value!==m&&(s.value=m),s.readOnly!==l.readonly&&(s.readOnly=l.readonly),Rt(s,l)}},t,s)}}var Ns=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,d=Ae(a,"textarea",{id:o,class:"fd-input fd-textarea",rows:"3"});r.type==="text"&&r.size!==void 0&&(d.maxLength=r.size),i.placeholder&&(d.placeholder=i.placeholder);let s=Ao(d,i);return d.addEventListener("input",()=>{s(),t.setValue(n,d.value===""?null:d.value)}),Gr({element:d,focus:()=>d.focus(),update(l){let m=lr(l.value);d.value!==m&&(d.value=m,s()),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),Rt(d,l)}},e,d)},$s=/^-?(\d+\.?\d*|\.\d+)$/,Cs=/^-?\.?$/,Jr=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a,locale:d="en"}=e,s=r.type==="integer",l=s?0:(r.type==="float"||r.type==="monetary"?r.digits?.[1]:void 0)??2,m=O=>typeof O=="number"?pt(O,l,d):lr(O),f=Ae(a,"input",{id:o,type:"text",class:"fd-input fd-number-input",autocomplete:"off"});f.inputMode=s?"numeric":"decimal",i.placeholder&&(f.placeholder=i.placeholder);let w=O=>{let q=Tr(O.trim(),d);if(q==="")return null;if($s.test(q))return Number(q);if(!Cs.test(q))return q};f.addEventListener("input",()=>{let O=w(f.value);O!==void 0&&t.setValue(n,O)}),f.addEventListener("blur",()=>{f.value=m(t.getState().values[n])});let c=i.options??{},h=r.type==="monetary"?r.currencyField:void 0,u=h?t.page.fields[h]:void 0,y=h&&u&&c.pickCurrency===!0?Ze({...e,name:h,field:u,node:{type:"field",id:`${i.id}.currency`,field:h},id:`${o}-currency`}):null;y&&u&&y.element.querySelector("input, select")?.setAttribute("aria-label",u.label),y?.element.matches("input, select")&&u&&y.element.setAttribute("aria-label",u.label);let v=c.symbol?c.symbol==="after":r.type==="monetary"&&Kr(r.currency??"USD",d).after,b=(O,q)=>Ae(a,"span",{class:`fd-unit${r.type==="monetary"?" fd-currency":""}`,id:`${o}-unit${q}`},O),p=r.type==="monetary"&&!y?b("",0):null,[k,E]=["prefix","suffix"].map((O,q)=>typeof c[O]=="string"&&c[O]?b(c[O],q+1):null),L=(v?null:y?.element??p)??k,x=(v?y?.element??p:null)??E,A=[L,x].filter(O=>!!O&&O!==y?.element);return{element:L||x?Ae(a,"span",{class:`fd-number${v?" fd-currency-after":""}${y?" fd-currency-picked":""}`},...[L,f,x].filter(O=>!!O)):f,focus:()=>f.focus(),update(O){let q=a.activeElement===f,V=w(f.value),G=V===void 0||V===O.value;if(!(q&&G)){let T=m(O.value);f.value!==T&&(f.value=T)}if(f.readOnly!==O.readonly&&(f.readOnly=O.readonly),Rt(f,{...O,describedBy:[O.describedBy,...A.map(T=>T.id)].filter(Boolean).join(" ")}),y&&h&&y.update({value:O.values[h],values:O.values,readonly:O.readonly,required:!1,invalid:!1}),p&&r.type==="monetary"){let T=r.currencyField?O.values[r.currencyField]:null,B=T&&typeof T=="object"&&"label"in T?T.label:typeof T=="string"?T:r.currency??"";St(p,/^[A-Z]{3}$/.test(B)?Kr(B,d).text:B)}for(let[T,B]of[[L,"start"],[x,"end"]])T&&A.includes(T)&&f.style.setProperty(`padding-inline-${B}`,`calc(var(--fd-pad-x) + ${T.textContent?.length??0}ch + 4px)`)}}};function Yr(e="box"){let t=e==="switch"?{class:"fd-switch",role:"switch"}:{class:e==="tick"?"fd-checkbox fd-tick":"fd-checkbox"};return({form:n,name:r,id:i,document:o})=>{let a=Ae(o,"input",{id:i,type:"checkbox",...t});return a.addEventListener("change",()=>n.setValue(r,a.checked)),{element:a,focus:()=>a.focus(),update(d){a.checked=d.value===!0,a.disabled!==d.readonly&&(a.disabled=d.readonly),Rt(a,d)}}}}function dr(e){return e.type==="selection"?e.options:[]}var Os=e=>{let{form:t,name:n,field:r,node:i,id:o,document:a}=e,d=i.options?.search;if(d===!0||d!==!1&&dr(r).length>15)return xo(e);let s=Lt(dr(r),t,n,i),l=Ae(a,"select",{id:o,class:"fd-input fd-select"},Ae(a,"option",{value:""}));return s.forEach((m,f)=>l.append(Ae(a,"option",{value:String(f)},m.label))),l.addEventListener("change",()=>t.setValue(n,l.value===""?null:s[Number(l.value)].value)),{element:l,focus:()=>l.focus(),update(m){let f=s.findIndex(w=>w.value===m.value);l.value=f===-1?"":String(f),l.disabled!==m.readonly&&(l.disabled=m.readonly),Rt(l,m)}}};function No(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:d,locale:s})=>{let l=Lt(dr(r),t,n,i),m=Ce(d,s),f=Ae(a,"div",{id:o,class:`fd-choices fd-choices-${e}`,role:e==="radio"?"radiogroup":"group"});or(f,i);let w=e==="checkbox"?ir($e(a),m,i):null,c=l.map((E,L)=>{let x=Ae(a,"input",{type:e,name:o,value:String(L),id:`${o}-${L}`});return f.append(Ae(a,"label",{class:"fd-choice",for:`${o}-${L}`},x,Ae(a,"span",{},E.label))),x}),h=r.type==="selection"&&r.other===!0,u=h?Ae(a,"input",{type:e,name:o,value:"other",id:`${o}-other`}):null,y=h?Ae(a,"input",{type:"text",class:"fd-input fd-other-input","aria-label":m.otherAnswer,autocomplete:"off"}):null;u&&y&&(f.append(Ae(a,"div",{class:"fd-choice fd-choice-other"},Ae(a,"label",{class:"fd-choice-other-pick",for:`${o}-other`},u,Ae(a,"span",{},m.other)),y)),y.addEventListener("input",()=>{u.checked||(u.checked=!0),v(u)}),u.addEventListener("change",()=>{u.checked&&y.focus()})),w?.element&&f.append(w.element);function v(E){if(e==="checkbox"&&E instanceof HTMLInputElement&&E.checked){let x=l[c.indexOf(E)]?.exclusive===!0;c.forEach((A,P)=>A!==E&&(x||l[P].exclusive)&&(A.checked=!1)),x&&u&&(u.checked=!1)}let L=u?.checked&&y&&y.value.trim()?y.value:null;if(e==="radio"){let x=c.findIndex(A=>A.checked);t.setValue(n,x!==-1?l[x].value:L)}else{let x=new Set(l.filter((A,P)=>c[P].checked));t.setValue(n,[...dr(r).filter(A=>x.has(A)).map(A=>A.value),...L!==null?[L]:[]])}}f.addEventListener("change",E=>{E.target!==y&&v(E.target)});let b=new Set(l.map(E=>E.value)),p=()=>c.some(E=>E.checked)||u?.checked===!0,k=e==="radio"?Et(a,m,()=>{for(let E of[...c,u])E&&(E.checked=!1);t.setValue(n,null),(c[0]??u)?.focus()}):null;return{element:k?Ae(a,"div",{class:"fd-choices-box"},f,k.button):f,focus:()=>(c.find(E=>E.checked)??(u?.checked?y:null)??c[0])?.focus(),update(E){let L=Array.isArray(E.value)?E.value:[E.value],x=!!w?.full(Array.isArray(E.value)?E.value.length:0);if(c.forEach((A,P)=>{A.checked=L.includes(l[P].value);let O=E.readonly||x&&!A.checked&&!l[P].exclusive;A.disabled!==O&&(A.disabled=O)}),u&&y){let A=L.find(q=>typeof q=="string"&&!b.has(q)),P=u.checked&&!y.value.trim()&&(e==="checkbox"||L.every(q=>q==null));u.checked=A!==void 0||P,A!==void 0&&a.activeElement!==y&&(y.value=A);let O=E.readonly||x&&!u.checked;u.disabled!==O&&(u.disabled=y.disabled=O)}k?.allow(E),k?.show(p()),Rt(f,E)}}}}function $o(e){return({form:t,name:n,field:r,node:i,id:o,document:a,labels:d,locale:s})=>{let l=Ce(d,s),m="min"in r&&typeof r.min=="number"?r.min:e==="rating"?1:0,f="max"in r&&typeof r.max=="number"?r.max:e==="rating"?5:10,w=e==="rating"?i.options?.icon:"number",c=w!=="number",h=e==="scale"&&i.options?.nps===!0&&m===0&&f===10,u=Ae(a,"div",{id:o,class:`fd-points fd-${c?"rating":"scale"}${c?` fd-rating-${w??"star"}`:""}${h?" fd-nps":""}`,role:"radiogroup"}),y=[];for(let k=m;k<=f;k++){let E=Ae(a,"button",{type:"button",role:"radio","aria-label":Me(l.ofMax,{n:k,max:f}),"data-value":String(k)},w==="thumb"?dt(a,"thumb"):w==="heart"?"\u2665":c?"\u2605":String(k));e==="scale"&&E.removeAttribute("aria-label"),h&&(E.dataset.tone=k<7?"low":k<9?"mid":"high"),E.addEventListener("click",()=>t.setValue(n,k)),y.push(E),u.append(E)}u.addEventListener("keydown",k=>{let E=t.getState().values[n],L=typeof E=="number"?E:m-1,x=k.key==="ArrowRight"||k.key==="ArrowUp"?1:k.key==="ArrowLeft"||k.key==="ArrowDown"?-1:0;if(!x)return;k.preventDefault();let A=Math.min(f,Math.max(m,L+x));t.setValue(n,A),y[A-m]?.focus()});let v=[i.options?.startLabel,i.options?.endLabel].map(k=>typeof k=="string"?k:""),b=Et(a,l,()=>{t.setValue(n,null),y[0]?.focus()}),p=v.some(Boolean)?Ae(a,"div",{class:"fd-scale-box"},u,Ae(a,"div",{class:"fd-scale-ends","aria-hidden":"true"},Ae(a,"span",{},v[0]),Ae(a,"span",{},v[1]))):u;return v.some(Boolean)&&u.setAttribute("aria-description",v.filter(Boolean).join(" \u2026 ")),{element:Ae(a,"div",{class:"fd-choices-box"},p,b.button),focus:()=>(y.find(k=>k.getAttribute("aria-checked")==="true")??y[0])?.focus(),update(k){let E=typeof k.value=="number"?k.value:null;y.forEach((L,x)=>{let A=m+x;Ve(L,"aria-checked",String(A===E)),L.classList.toggle("fd-on",c?E!==null&&A<=E:A===E);let P=A===E||E===null&&x===0?0:-1;L.tabIndex!==P&&(L.tabIndex=P),L.disabled!==k.readonly&&(L.disabled=k.readonly)}),b.allow(k),b.show(E!==null),Rt(u,k)}}}}var Ps=e=>{let{form:t,name:n,field:r,id:i,document:o,node:a}=e,d=Ae(o,"input",{id:i,type:"date",class:"fd-input fd-date"});ar(d,r,a),d.addEventListener("input",()=>t.setValue(n,d.value||null));let s={element:d,focus:()=>d.focus(),update(l){let m=lr(l.value);d.value!==m&&(d.value=m),d.readOnly!==l.readonly&&(d.readOnly=l.readonly),Rt(d,l)}};return a.options?.weekNumbers===!0?nr(s,e,"date"):s},sr=e=>String(e).padStart(2,"0"),Is=e=>{let{form:t,name:n,field:r,id:i,document:o,node:a}=e,d=Ae(o,"input",{id:i,type:"datetime-local",class:"fd-input fd-datetime"});ar(d,r,a);let s=m=>{if(typeof m!="string"||!m)return"";let f=new Date(m);return Number.isNaN(f.getTime())?"":`${f.getFullYear()}-${sr(f.getMonth()+1)}-${sr(f.getDate())}T${sr(f.getHours())}:${sr(f.getMinutes())}`};d.addEventListener("input",()=>{if(!d.value)return t.setValue(n,null);let m=new Date(d.value);Number.isNaN(m.getTime())||t.setValue(n,m.toISOString())});let l={element:d,focus:()=>d.focus(),update(m){let f=s(m.value);d.value!==f&&(d.value=f),d.readOnly!==m.readonly&&(d.readOnly=m.readonly),Rt(d,m)}};return a.options?.weekNumbers===!0?nr(l,e,"datetime"):l};function Vs({field:e,id:t,document:n}){let r=Ae(n,"span",{id:t,class:"fd-pending","data-fd-pending":e.type});return{element:r,focus:()=>{},update(i){r.textContent=Qn(i.value,e)}}}function Qn(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 Co={char:Qt("text"),"char.email":Qt("email"),"char.phone":Qt("tel"),"char.url":Qt("url"),"char.password":Qt("password"),"char.time":Qt("time"),"char.tags":Nr,text:Ns,integer:Jr,float:Jr,monetary:Jr,"integer.rating":$o("rating"),"integer.scale":$o("scale"),"integer.slider":qr,"float.slider":qr,"integer.progressbar":vn,"integer.label":xn,"float.label":xn,"monetary.label":xn,"float.progressbar":vn,"monetary.progressbar":vn,boolean:Yr(),"boolean.toggle":Yr("switch"),"boolean.tick":Yr("tick"),"boolean.buttons":Mo,selection:Os,"selection.radio":No("radio"),"selection.checkboxes":No("checkbox"),"selection.tags":vo,"selection.image-choice":ko,"selection.ranking":So,"selection.statusbar":er,date:Ps,datetime:Is,many2one:Mr,"many2one.statusbar":er,many2many:Yn,"many2many.tags":Yn,"many2many.checkboxes":$r,reference:Cr,one2many:Or,"one2many.cards":Fo,binary:Ir,"binary.signature":yo,image:Vr,html:Hr,json:Br,"json.address":Lo,properties:zr,matrix:bo};var Oo=`.fd-signature{display:grid;gap:8px;justify-items:start;width:100%;max-width:480px;min-width:0}.fd-signature-box{position:relative;width:100%;aspect-ratio:10 / 3;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:#fff;overflow:hidden}.fd-signature-box:has(.fd-signature-pad:not([hidden]):not(.fd-signature-locked)):hover{border-color:var(--fd-accent)}.fd-signature-pad,.fd-signature-image{display:block;width:100%;height:100%}.fd-signature-pad{touch-action:none;cursor:crosshair}.fd-signature-pad.fd-signature-locked{cursor:default}.fd-signature-image{object-fit:contain}.fd-signature-hint{position:absolute;inset-inline:18px;inset-block-end:16px;padding-block-start:4px;pointer-events:none;border-block-start:1px solid var(--fd-border-strong);color:var(--fd-muted);font-size:12.5px}.fd-signature-tools{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;width:100%}.fd-signature-typed{flex:1 1 200px;min-width:0}.fd-signature-footer{margin-block-start:-4px;color:var(--fd-muted);font-size:12.5px}.fd-slider{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;row-gap:0;align-items:center;width:100%;max-width:440px;min-width:0}.fd-slider-track{display:contents}.fd-slider-input{width:100%;min-width:0;height:26px;margin:0;accent-color:var(--fd-accent);cursor:pointer}.fd-slider-input:disabled{cursor:default}.fd-slider-value{min-width:2.5em;text-align:start;font-variant-numeric:tabular-nums;font-weight:600}.fd-slider-ends{grid-column:1;display:flex;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--fd-muted);font-variant-numeric:tabular-nums}.fd-slider-empty .fd-slider-input{filter:grayscale(1);opacity:.55}.fd-slider-empty .fd-slider-value{color:var(--fd-muted);font-weight:400}.fd-slider .fd-choice-clear{grid-column:1 / -1}.fd-image-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,130px),1fr));gap:12px;width:100%;min-width:0}.fd-image-card{position:relative;display:grid;grid-template-rows:auto 1fr;padding:0;margin:0;overflow:hidden;cursor:pointer;font:inherit;color:var(--fd-text);text-align:start;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);transition:border-color .15s ease,box-shadow .15s ease}.fd-image-card:hover:not(:disabled){border-color:var(--fd-accent)}.fd-image-card:disabled{cursor:default}.fd-image-card:disabled:not([aria-checked=true]){opacity:.6}.fd-image-card[aria-checked=true]{border-color:var(--fd-accent);box-shadow:0 0 0 1px var(--fd-accent)}.fd-image-card-picture{display:block;aspect-ratio:4 / 3;background:var(--fd-page);border-block-end:1px solid var(--fd-border)}.fd-image-card-picture img{display:block;width:100%;height:100%;object-fit:cover}.fd-image-card-blank{display:grid;place-items:center;width:100%;height:100%;color:var(--fd-border-strong)}.fd-image-card-blank svg{width:36%;height:36%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.fd-image-card-words{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;font-size:13.5px;line-height:1.35}.fd-image-card-words:before{content:"";flex:none;width:16px;height:16px;margin-block-start:1px;box-sizing:border-box;border:1.5px solid var(--fd-border-strong);border-radius:50%;background:var(--fd-surface)}.fd-image-card[role=checkbox] .fd-image-card-words:before{border-radius:4px}.fd-image-card[aria-checked=true] .fd-image-card-words:before{border-color:var(--fd-accent);background:var(--fd-accent);box-shadow:inset 0 0 0 3px var(--fd-surface)}.fd-image-card[role=checkbox][aria-checked=true] .fd-image-card-words:before{box-shadow:none;background:var(--fd-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 13px no-repeat}.fd-image-choices+.fd-choice-clear{justify-self:end}.fd-ranking{width:100%;max-width:480px;min-width:0}.fd-rank-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.fd-rank-item{display:flex;align-items:center;gap:10px;padding-block:5px;padding-inline:8px 5px;min-height:40px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);cursor:grab;user-select:none;-webkit-user-select:none}.fd-rank-item.fd-rank-lifted{position:relative;z-index:1;cursor:grabbing;border-color:var(--fd-accent);box-shadow:0 6px 18px #0f141929}.fd-ranking-locked .fd-rank-item{cursor:default}.fd-rank-grip{flex:none;width:10px;height:16px;touch-action:none;background:radial-gradient(circle,var(--fd-border-strong) 1.3px,transparent 1.7px) 0 0 / 5px 5.33px}.fd-ranking-locked .fd-rank-grip{visibility:hidden}.fd-rank-place{flex:none;display:grid;place-items:center;min-width:24px;height:24px;padding-inline:4px;border-radius:999px;background:var(--fd-accent-soft);color:var(--fd-accent);font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}.fd-rank-words{flex:1;min-width:0;overflow-wrap:anywhere}.fd-rank-tools{flex:none;display:inline-flex;gap:2px}.fd-rank-move{width:30px;height:30px;padding:0;font:inherit;font-size:15px;line-height:1;color:var(--fd-muted);background:none;border:1px solid transparent;border-radius:4px;cursor:pointer}.fd-rank-move:hover:not(:disabled){background:var(--fd-page);border-color:var(--fd-border);color:var(--fd-text)}.fd-rank-move:disabled{opacity:.3;cursor:default}.fd-address{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;width:100%;max-width:560px;min-width:0}.fd-address-part{display:grid;gap:3px;min-width:0;align-content:start}.fd-address-street,.fd-address-line2{grid-column:1 / -1}.fd-address-part.fd-required>.fd-address-label:after{content:" *";color:var(--fd-error)}.fd-address-label{font-size:12.5px;color:var(--fd-muted)}@container (max-width: 420px){.fd-address{grid-template-columns:minmax(0,1fr)}}.fd-repeat{display:grid;gap:10px;justify-items:start;width:100%;min-width:0}.fd-repeat-list{display:grid;gap:10px;width:100%;min-width:0}.fd-repeat-list:empty{display:none}.fd-repeat-card{display:grid;gap:8px;min-width:0;padding:10px 14px 14px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-radius),6px)}.fd-repeat-head{display:flex;align-items:center;gap:2px;min-height:28px}.fd-repeat-title{font-weight:600;font-size:13.5px;margin-inline-end:auto}.fd-repeat-remove,.fd-repeat-tool{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:18px;line-height:1;padding:4px 8px;border-radius:4px}.fd-repeat-remove:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-repeat-tool{font-size:15px}.fd-repeat-tool:hover{color:var(--fd-accent);background:var(--fd-accent-soft)}.fd-repeat-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px 14px}.fd-repeat-field{display:grid;gap:3px;min-width:0;align-content:start}.fd-repeat-label{font-size:12.5px;color:var(--fd-muted)}.fd-repeat-add{border-style:dashed}`;var Po='.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 Io='.fd-counted{display:grid;gap:2px;min-width:0}.fd-count{justify-self:end;direction:ltr;unicode-bidi:isolate;font-size:12px;color:var(--fd-muted);font-variant-numeric:tabular-nums}.fd-count-near{color:var(--fd-warning);font-weight:600}.fd-number:not(.fd-currency-picked){position:relative;display:block}.fd-number>.fd-unit{position:absolute;inset-block:0;display:flex;align-items:center;pointer-events:none;color:var(--fd-muted)}.fd-number>.fd-unit:first-child{inset-inline-start:var(--fd-pad-x)}.fd-number>.fd-unit:last-child{inset-inline-end:var(--fd-pad-x)}.fd-rating-heart button.fd-on{color:#e5484d}.fd-rating-thumb button.fd-on{color:var(--fd-accent)}.fd-rating .fd-icon{display:block;width:1em;height:1em}.fd-rating .fd-on .fd-icon{fill:currentColor}.fd-slider-word{display:block;max-width:12em}.fd-slider-last{text-align:end}.fd-nps [data-tone=low]{--fd-tone: var(--fd-error);--fd-tone-soft: var(--fd-error-soft)}.fd-nps [data-tone=mid]{--fd-tone: var(--fd-warning);--fd-tone-soft: var(--fd-warning-soft)}.fd-nps [data-tone=high]{--fd-tone: var(--fd-success);--fd-tone-soft: var(--fd-success-soft)}.fd-nps button{background:var(--fd-tone-soft);border-color:var(--fd-tone);color:var(--fd-tone);font-weight:600}.fd-nps button.fd-on{background:var(--fd-tone);border-color:var(--fd-tone);color:var(--fd-surface)}.fd-nps [data-value="7"],.fd-nps [data-value="9"]{margin-inline-start:8px}.fd-choices-box>.fd-scale-box{justify-self:start}';var Vo=".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 Do='.fd-grid>.fd-section[data-place=tracks]{--fd-tracks: min(var(--fd-span, 1), var(--fd-cols));grid-template-columns:subgrid;column-gap:var(--fd-gap-x)}.fd-form .fd-section[data-place=tracks]>.fd-grid{--fd-cols: var(--fd-tracks);grid-column:1 / -1;grid-template-columns:subgrid}.fd-section[data-place]>.fd-section-description{grid-column:1 / -1}.fd-grid>.fd-section[data-place=shared]{container-type:inline-size}.fd-form .fd-section[data-place=shared]>.fd-grid{--fd-cols: var(--fd-columns, 1)}@container (max-width: 330px){.fd-form .fd-section[data-place=shared]>.fd-grid{--fd-cols: 1}}.fd-form{--fd-ground: transparent}.fd-card,.fd-form[data-fd-skin=outlined] .fd-section[data-style=card][data-on-page]{--fd-ground: var(--fd-surface)}fieldset.fd-section[data-style]{background-color:var(--fd-ground)}.fd-form .fd-section[data-style=line]>.fd-section-title{border-block-end:1px solid var(--fd-border);padding-block-end:8px}.fd-form .fd-section[data-style=plain]>.fd-section-title{border-block-end:0;padding-block-end:0}.fd-form .fd-section[data-style=framed]{border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);padding:6px 18px 18px}.fd-form .fd-section[data-style=framed]>.fd-section-title{float:none;width:auto;max-width:100%;padding:0 6px;margin-inline-start:-6px;border:0}.fd-form .fd-field[data-labels]{grid-template-columns:minmax(0,1fr)}.fd-form .fd-field[data-labels]>*{grid-column:1 / -1}.fd-form .fd-field[data-labels=beside]{container-type:inline-size;grid-template-columns:minmax(0,var(--fd-label-width, 140px)) minmax(0,1fr);column-gap:14px}@container (min-width: 300px){.fd-form .fd-field[data-labels=beside]>.fd-label{grid-column:1;align-self:start;padding-block-start:max(0px,calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-field[data-labels=beside]>:not(.fd-label){grid-column:2}}.fd-form .fd-field[data-labels=hidden]>.fd-label{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-form .fd-field[data-labels=after]{grid-template-columns:auto minmax(0,1fr);column-gap:9px;align-items:start;--fd-tick-drop: max(0px, calc((var(--fd-control-height, 30px) - 1.45em) / 2))}.fd-form .fd-field[data-labels=after]>:is(.fd-tick,:has(>.fd-tick)){grid-column:1;grid-row:1;display:flex;margin-block-start:calc(var(--fd-tick-drop) + (1.45em - 17px) / 2)}.fd-form .fd-field[data-labels=after] .fd-tick{width:17px;height:17px}.fd-form .fd-field[data-labels=after]>:not(.fd-tick,:has(>.fd-tick)){grid-column:2}.fd-form .fd-field[data-labels=after]>.fd-label{grid-row:1;margin-block-start:var(--fd-tick-drop);font-weight:inherit;line-height:1.45;cursor:pointer}.fd-form .fd-field[data-labels=beside]:focus-within,.fd-grid>.fd-section[data-place=shared]:focus-within{z-index:3}:is(.fd-grid,.fd-sections)>.fd-button{justify-self:start}.fd-form .fd-text-note{background:color-mix(in srgb,var(--fd-text) 6%,transparent);color:var(--fd-text);border-radius:var(--fd-control-radius, 6px);padding:10px 12px}:is(.fd-form,.fd-form-dialog)[data-font=serif]{--fd-font: "Source Serif 4", Georgia, serif}:is(.fd-form,.fd-form-dialog)[data-font=rounded]{--fd-font: Nunito, "Varela Round", system-ui}:is(.fd-form,.fd-form-dialog)[data-density=compact]{--fd-gap-y: 10px;--fd-gap-x: 16px;--fd-control-height: 30px;--fd-gap-block: 16px;--fd-group-pad: 14px 16px}:is(.fd-form,.fd-form-dialog)[data-density=comfortable]{--fd-gap-y: 16px;--fd-gap-x: 20px;--fd-control-height: 36px;--fd-gap-block: 22px;--fd-group-pad: 18px 22px}:is(.fd-form,.fd-form-dialog)[data-density=roomy]{--fd-gap-y: 22px;--fd-gap-x: 28px;--fd-control-height: 42px;--fd-gap-block: 30px;--fd-group-pad: 24px 30px}:is(.fd-form,.fd-form-dialog)[data-corners=square]{--fd-radius: 0px;--fd-control-radius: 0px}:is(.fd-form,.fd-form-dialog)[data-corners=soft]{--fd-radius: 10px;--fd-control-radius: 6px}:is(.fd-form,.fd-form-dialog)[data-corners=round]{--fd-radius: 16px;--fd-control-radius: 12px}.fd-form[data-scheme]{color-scheme:light;background:var(--fd-page);color:var(--fd-text);border-radius:var(--fd-radius);--fd-ground: var(--fd-page)}.fd-form[data-scheme]>.fd-content:not(:has(>.fd-sheet-page)){padding:20px}.fd-form-dialog-body>.fd-form[data-scheme]{background:none;border-radius:0}.fd-form-dialog-body>.fd-form[data-scheme]>.fd-content:not(:has(>.fd-sheet-page)){padding:0}:is(.fd-form,.fd-form-dialog)[data-scheme=dark]{color-scheme:dark;--fd-text: #e8eaed;--fd-muted: #a3a9b2;--fd-page: #16191e;--fd-surface: #1f2329;--fd-border: #3a4048;--fd-border-strong: #59616c;--fd-accent: #5aa2ff;--fd-accent-text: #0b1220;--fd-accent-soft: rgba(90, 162, 255, .16);--fd-focus: #5aa2ff;--fd-error: #ff8a7a;--fd-error-soft: rgba(255, 138, 122, .13);--fd-success: #6fd08e;--fd-success-soft: rgba(111, 208, 142, .14);--fd-warning: #f2b55c;--fd-warning-soft: rgba(242, 181, 92, .13);--fd-info: #7db7ff;--fd-info-soft: rgba(90, 162, 255, .14);--fd-edge: #59616c}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto]{color-scheme:dark;--fd-text: #e8eaed;--fd-muted: #a3a9b2;--fd-page: #16191e;--fd-surface: #1f2329;--fd-border: #3a4048;--fd-border-strong: #59616c;--fd-accent: #5aa2ff;--fd-accent-text: #0b1220;--fd-accent-soft: rgba(90, 162, 255, .16);--fd-focus: #5aa2ff;--fd-error: #ff8a7a;--fd-error-soft: rgba(255, 138, 122, .13);--fd-success: #6fd08e;--fd-success-soft: rgba(111, 208, 142, .14);--fd-warning: #f2b55c;--fd-warning-soft: rgba(242, 181, 92, .13);--fd-info: #7db7ff;--fd-info-soft: rgba(90, 162, 255, .14);--fd-edge: #59616c}}:is(.fd-form,.fd-form-dialog)[data-accent]{--fd-accent: var(--fd-look-accent);--fd-accent-text: var(--fd-look-accent-text);--fd-focus: var(--fd-look-accent);--fd-accent-soft: color-mix(in srgb, var(--fd-accent) 12%, var(--fd-surface));--fd-accent-hover: color-mix(in srgb, var(--fd-accent) 84%, var(--fd-text))}:is(.fd-form,.fd-form-dialog)[data-scheme=dark][data-accent]{--fd-accent: var(--fd-look-accent-dark);--fd-accent-text: var(--fd-look-accent-dark-text);--fd-focus: var(--fd-look-accent-dark)}@media(prefers-color-scheme:dark){:is(.fd-form,.fd-form-dialog)[data-scheme=auto][data-accent]{--fd-accent: var(--fd-look-accent-dark);--fd-accent-text: var(--fd-look-accent-dark-text);--fd-focus: var(--fd-look-accent-dark)}}:is(.fd-form,.fd-form-dialog)[data-fd-skin=outlined][data-accent]{--fd-focus-ring: 0 0 0 2px color-mix(in srgb, var(--fd-accent) 22%, transparent)}:is(.fd-form,.fd-form-dialog)[data-accent] .fd-button-primary:hover{filter:none;background:var(--fd-accent-hover);border-color:var(--fd-accent-hover)}.fd-form[data-accent] .fd-page-head{border-block-end:3px solid var(--fd-accent);padding-block-end:14px}';var Ds={medium:760,narrow:520},Ws='.fd-form,.fd-theme:is([data-fd-skin],:not(.fd-form *)){--fd-font: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "Noto Sans Arabic", sans-serif;--fd-text: #212529;--fd-muted: #636976;--fd-page: #f2f3f5;--fd-surface: #ffffff;--fd-border: #cfd4da;--fd-border-strong: #9aa3ad;--fd-accent: #002855;--fd-accent-text: #ffffff;--fd-accent-soft: #e6ebf2;--fd-focus: #002855;--fd-focus-ring: none;--fd-error: #c62828;--fd-error-soft: #fdecea;--fd-success: #2e7d32;--fd-success-soft: #e8f5e9;--fd-warning: #8a5300;--fd-warning-soft: #fff4e0;--fd-info: #0b5cad;--fd-info-soft: #e7f0fb;--fd-radius: 0px;--fd-control-radius: 0px;--fd-pad-y: 3px;--fd-pad-x: 4px;--fd-input-border: 0 0 1px 0;--fd-label-weight: 600;--fd-gap-x: 32px;--fd-gap-y: 14px;container-type:inline-size;font-family:var(--fd-font);font-size:14px;line-height:1.45;color:var(--fd-text);-webkit-text-size-adjust:100%}.fd-form[data-fd-skin=outlined],.fd-theme[data-fd-skin=outlined]{--fd-text: rgba(0, 0, 0, .88);--fd-muted: rgba(0, 0, 0, .55);--fd-page: #f5f5f5;--fd-border: #d9d9d9;--fd-border-strong: #bfbfbf;--fd-accent: #1365d9;--fd-accent-soft: #e6f4ff;--fd-focus: #1365d9;--fd-focus-ring: 0 0 0 2px rgba(5, 145, 255, .12);--fd-error: #c63c3d;--fd-error-soft: #fff2f0;--fd-radius: 8px;--fd-control-radius: 6px;--fd-pad-y: 4px;--fd-pad-x: 11px;--fd-input-border: 1px;--fd-label-weight: 400;--fd-gap-x: 24px;--fd-gap-y: 18px}.fd-form *,.fd-form *:before,.fd-form *:after{box-sizing:border-box}.fd-form [hidden]{display:none!important}.fd-page-head{display:grid;gap:4px;margin-block-end:20px}.fd-page-title{font-size:22px;font-weight:650;margin:0;line-height:1.25}.fd-page-description{color:var(--fd-muted);margin:0}.fd-form[data-max-width=narrow]{--fd-page-max: 640px}.fd-form[data-max-width=medium]{--fd-page-max: 900px}.fd-form[data-max-width=wide]{--fd-page-max: 1180px}.fd-form[data-max-width=full]{--fd-page-max: none}.fd-form[data-max-width]>.fd-content:not(:has(>.fd-sheet-page)){max-width:var(--fd-page-max);margin-inline:auto}.fd-actions.fd-actions-top{margin-block-start:0;padding-block-end:14px;margin-block-end:18px;border-block-end:1px solid var(--fd-border)}.fd-icon{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em}.fd-section-title .fd-icon,.fd-tab .fd-icon,.fd-button .fd-icon,.fd-step-title .fd-icon{margin-inline-end:.4em}.fd-section-title .fd-icon{color:var(--fd-muted)}.fd-grid{--fd-cols: var(--fd-columns, 1);--fd-span: 1;display:grid;grid-template-columns:repeat(var(--fd-cols),minmax(0,1fr));gap:var(--fd-gap-y) var(--fd-gap-x);align-items:start}.fd-grid>*{grid-column:span min(var(--fd-span, 1),var(--fd-cols))}.fd-field{display:grid;gap:4px;min-width:0}.fd-label{font-weight:var(--fd-label-weight);color:var(--fd-text)}.fd-valid-mark{color:var(--fd-success);width:1em;height:1em;margin-inline-start:6px;vertical-align:-.15em;stroke-width:2.4}.fd-field.fd-required>.fd-label:after{content:" *";color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:after{content:""}.fd-form[data-fd-skin=outlined] .fd-field.fd-required>.fd-label:before{content:"* ";color:var(--fd-error)}.fd-help{color:var(--fd-muted);font-size:12.5px}.fd-page-title,.fd-page-description,.fd-section-description,.fd-label,.fd-help,.fd-text-heading,.fd-text-paragraph,.fd-text-note,.fd-choice>span{unicode-bidi:plaintext;text-align:match-parent;text-align:-webkit-match-parent}.fd-error{color:var(--fd-error);font-size:12.5px}.fd-warning{color:var(--fd-warning);background:var(--fd-warning-soft);font-size:12.5px;padding:3px 8px;border-radius:var(--fd-control-radius);justify-self:start}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels])){grid-template-columns:var(--fd-label-width, 11em) minmax(0,1fr);column-gap:12px;align-items:baseline}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>.fd-label{grid-column:1}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field[data-type=one2many]>*{grid-column:1!important}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>:not(.fd-label){grid-column:2}@container (max-width: 760px){.fd-form[data-fd-skin=underline] .fd-grid{--fd-cols: 1}.fd-form .fd-grid[data-columns-medium]{--fd-cols: var(--fd-columns-medium)}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field:where(:not([data-labels])){grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-grid[data-columns-medium]:not([data-columns-medium="1"]) .fd-field:where(:not([data-labels]))>*{grid-column:1!important}}@container (max-width: 520px){.fd-grid{--fd-cols: 1}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels])){grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-field:where(:not([data-labels]))>*{grid-column:1!important}.fd-form .fd-grid[data-columns-medium],.fd-form .fd-grid[data-columns-narrow]{--fd-cols: var(--fd-columns-narrow, 1)}.fd-form .fd-file-viewer>:first-child{padding-inline-end:16px}.fd-form .fd-file-viewer h2{flex-basis:100%;margin-inline-end:36px}}.fd-input{width:100%;min-width:0;font:inherit;color:inherit;background:var(--fd-surface);border:solid var(--fd-border);border-width:var(--fd-input-border);border-radius:var(--fd-control-radius);padding:var(--fd-pad-y) var(--fd-pad-x);min-height:var(--fd-control-height, 30px);transition:border-color .15s ease,box-shadow .15s ease}.fd-input::placeholder{color:var(--fd-muted);opacity:.8}.fd-input:hover{border-color:var(--fd-border-strong)}.fd-input:focus{outline:none;border-color:var(--fd-focus);box-shadow:var(--fd-focus-ring)}.fd-form[data-fd-skin=underline] .fd-input{background:transparent}.fd-form[data-fd-skin=underline] .fd-input:focus{box-shadow:0 1px 0 0 var(--fd-focus)}.fd-form[data-fd-skin=underline] .fd-field.fd-required .fd-input{border-color:var(--fd-accent)}.fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0}.fd-form[data-fd-skin=outlined] .fd-input[readonly]{background:#0000000a;border-color:var(--fd-border);padding-inline:var(--fd-pad-x);color:var(--fd-muted)}.fd-form[data-readonly] .fd-input[readonly]{background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text)}.fd-form[data-readonly] .fd-input::placeholder{color:transparent}.fd-form[data-readonly] select.fd-input:disabled{appearance:none;background:transparent;border-color:transparent;padding-inline:0;color:var(--fd-text);opacity:1}.fd-input[aria-invalid=true]{border-color:var(--fd-error)}.fd-form[data-fd-skin=outlined] .fd-input[aria-invalid=true]:focus{box-shadow:0 0 0 2px #ff26050f}.fd-textarea{resize:vertical;min-height:64px}.fd-select{appearance:auto}.fd-number{display:flex;align-items:baseline;gap:6px}.fd-number-input{font-variant-numeric:tabular-nums}.fd-currency{color:var(--fd-muted);font-size:12.5px;font-weight:600}.fd-currency-after>.fd-number-input{text-align:end}.fd-currency-picked{align-items:center}.fd-currency-picked>:not(.fd-number-input){flex:0 0 104px;min-width:0}.fd-currency-picked>.fd-number-input{flex:1 1 auto;min-width:0}.fd-pending{color:var(--fd-muted);font-style:italic}.fd-pending:empty:before{content:"\u2014"}.fd-checkbox,.fd-choice input{width:16px;height:16px;accent-color:var(--fd-accent);margin:0}.fd-switch{appearance:none;width:34px;height:20px;margin:0;border-radius:999px;position:relative;background:var(--fd-border-strong);cursor:pointer;transition:background .2s ease}.fd-switch:after{content:"";position:absolute;inset-block-start:2px;inset-inline-start:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s ease;box-shadow:0 1px 2px #00000040}.fd-switch:checked{background:var(--fd-accent)}.fd-switch:checked:after{transform:translate(14px)}[dir=rtl] .fd-switch:checked:after{transform:translate(-14px)}.fd-choices{display:flex;flex-wrap:wrap;gap:6px 18px}.fd-choice{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.fd-choice-other{cursor:default;flex:1 1 260px;max-width:420px;min-width:0}.fd-choice-other-pick{display:inline-flex;align-items:center;gap:8px;cursor:pointer;flex:none}.fd-choice-other .fd-other-input{flex:1;min-width:6em;width:auto;min-height:30px;padding-block:2px}.fd-scale-box{display:inline-grid;gap:4px;max-width:100%}.fd-scale-ends{display:flex;justify-content:space-between;gap:16px;font-size:12.5px;color:var(--fd-muted)}.fd-choices-box{display:grid;gap:6px;min-width:0}.fd-choice-clear{justify-self:end;font:inherit;font-size:13px;color:var(--fd-muted);background:none;border:0;padding:2px 4px;border-radius:4px;cursor:pointer}.fd-choice-clear:hover{color:var(--fd-text);text-decoration:underline;text-underline-offset:3px}.fd-lines-table .fd-choice-clear,.fd-grid-editor .fd-choice-clear{display:none}.fd-points{display:flex;flex-wrap:wrap;gap:6px}.fd-points button{font:inherit;cursor:pointer;border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-text);border-radius:var(--fd-control-radius);min-width:34px;height:34px;padding:0 8px}.fd-points button.fd-on{background:var(--fd-accent);color:var(--fd-accent-text);border-color:var(--fd-accent)}.fd-rating button{border:none;background:none;font-size:24px;color:var(--fd-border-strong);padding:0 2px;min-width:0}.fd-rating button.fd-on{background:none;color:#f5a623}.fd-points button:disabled,.fd-choice input:disabled{cursor:default}.fd-form :focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-form .fd-input:focus-visible{outline:none}.fd-combo{position:relative;display:flex;align-items:center;min-width:0}.fd-combo-input{padding-inline-end:30px}.fd-combo-clear{position:absolute;inset-inline-end:3px;border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:0 4px;border-radius:4px;min-width:24px;min-height:24px;display:inline-grid;place-items:center}.fd-combo-clear:hover{color:var(--fd-text);background:var(--fd-page)}.fd-combo:has(>.fd-combo-open:not([hidden])) .fd-combo-input{padding-inline-end:56px}.fd-combo-open{position:absolute;inset-inline-end:29px;border:none;background:none;cursor:pointer;color:var(--fd-accent);font-size:14px;line-height:1;padding:0 4px;border-radius:4px;min-width:24px;min-height:24px;display:inline-grid;place-items:center}.fd-combo-open:hover{background:var(--fd-page)}.fd-listbox{position:absolute;inset-inline:0;inset-block-start:calc(100% + 2px);z-index:20;margin:0;padding:4px 0;list-style:none;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),4px);box-shadow:0 8px 24px #0f14191f;max-height:240px;overflow-y:auto}.fd-option{padding:6px 12px;cursor:pointer}.fd-option:hover,.fd-option.fd-active{background:var(--fd-accent-soft)}.fd-option-create{color:var(--fd-accent);border-block-start:1px solid var(--fd-border)}.fd-empty{padding:6px 12px;color:var(--fd-muted);font-style:italic}.fd-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0}.fd-chips{display:contents;list-style:none;margin:0;padding:0}.fd-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 4px 1px 10px;border-radius:999px;background:var(--fd-accent-soft);color:var(--fd-text);font-size:13px;line-height:22px}button.fd-chip-label{border:none;padding:0;background:none;font:inherit;color:inherit;cursor:pointer}button.fd-chip-label:hover{text-decoration:underline}.fd-chip-remove{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:15px;line-height:1;padding:0 4px;border-radius:999px}.fd-chip-remove:hover{color:var(--fd-error)}.fd-tags .fd-combo{flex:1 1 140px}.fd-reference{display:grid;grid-template-columns:minmax(7em,34%) minmax(0,1fr);gap:8px}.fd-lines{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0}.fd-lines-scroll{overflow-x:auto;min-width:0;position:relative}.fd-lines-table{width:100%;border-collapse:collapse;font-size:13.5px}.fd-lines-table th{text-align:start;font-weight:600;color:var(--fd-muted);font-size:12.5px;padding:6px 8px;border-block-end:1px solid var(--fd-border);white-space:nowrap}.fd-lines-table td{padding:4px 8px;border-block-end:1px solid var(--fd-border);vertical-align:top;min-width:7em}.fd-lines-table td.fd-lines-tools,.fd-lines-table th.fd-lines-tools{width:32px;min-width:32px;padding-inline:0;text-align:center}.fd-lines-table .fd-input{min-height:28px}.fd-lines-table td>.fd-checkbox,.fd-lines-table td>.fd-switch{margin-block-start:6px}.fd-lines-table .fd-lines-grip{width:1px;min-width:0;padding-inline:6px 2px}.fd-line-grip{display:block;margin-block-start:7px;cursor:grab}.fd-line-delete{border:none;background:none;cursor:pointer;color:var(--fd-muted);font-size:16px;line-height:1;padding:4px 6px;border-radius:4px}.fd-line-delete:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-lines-totals td{padding:8px;font-weight:600;border-block-start:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-lines-adds{display:flex;flex-wrap:wrap;gap:4px 16px;justify-self:start}.fd-line-section td{background:var(--fd-page)}.fd-line-section .fd-input{font-weight:600}.fd-line-note .fd-input{font-style:italic}.fd-cell-error{color:var(--fd-error);font-size:12px}.fd-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-file{display:grid;gap:8px;justify-items:start;padding:6px 0;border-radius:var(--fd-control-radius);min-width:0}.fd-file.fd-dragging{outline:2px dashed var(--fd-accent);outline-offset:4px}.fd-file-pick{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;cursor:pointer}.fd-file input:focus-visible+.fd-file-pick{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-files-list .fd-file-pick{justify-self:stretch;padding:10px 14px;border:1px dashed var(--fd-border-strong);border-radius:var(--fd-control-radius);background:var(--fd-page)}.fd-file-pick:hover,.fd-dragging .fd-file-pick{border-color:var(--fd-accent)}.fd-files{list-style:none;margin:0;padding:0;display:grid;gap:6px;justify-self:stretch;min-width:0}.fd-files:empty{display:none}.fd-file-item{position:relative;display:flex;align-items:center;gap:2px;min-width:0}.fd-file-open{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:5px 8px;font:inherit;color:inherit;text-align:start;cursor:pointer;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-control-radius)}.fd-file-open:hover{border-color:var(--fd-accent)}.fd-file-thumb,.fd-file-icon{flex:none;width:36px;height:36px;border-radius:3px;object-fit:cover}.fd-file-icon{display:grid;place-items:end center;padding-block-end:4px;font-size:9px;font-weight:700;color:#fff;background:var(--fd-kind, #5b6573);clip-path:polygon(0 0,68% 0,100% 28%,100% 100%,0 100%)}.fd-file-icon[data-kind=pdf]{--fd-kind: #c62828}.fd-file-icon[data-kind=doc]{--fd-kind: #1f5fbf}.fd-file-icon[data-kind=sheet]{--fd-kind: #1d7a3e}.fd-file-icon[data-kind=zip]{--fd-kind: #8a5300}.fd-file-name{flex:1;display:flex;min-width:0;white-space:pre}.fd-file-name>span{overflow:hidden;text-overflow:ellipsis}.fd-file-size{color:var(--fd-muted);font-size:12.5px;font-variant-numeric:tabular-nums;unicode-bidi:plaintext}.fd-file-remove{flex:none;width:32px;height:32px;border:none;border-radius:999px;background:none;color:var(--fd-muted);font-size:20px;line-height:1;cursor:pointer}.fd-file-remove:hover{color:var(--fd-error);background:var(--fd-error-soft)}.fd-file-confirm:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px}.fd-file-note:empty{display:none}.fd-file-note{color:var(--fd-warning)}.fd-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[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}.fd-tab{font:inherit;background:none;border:none;cursor:pointer;padding:8px 14px;color:var(--fd-muted);border-block-end:2px solid transparent;margin-block-end:-1px;white-space:nowrap}.fd-tab[aria-selected=true]{color:var(--fd-accent);border-block-end-color:var(--fd-accent);font-weight:600}.fd-tabpanel{padding-block:16px;display:grid;gap:16px}.fd-button{font:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px;justify-content:center;min-height:var(--fd-control-height, 32px);padding:4px 14px;border-radius:var(--fd-control-radius);border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-text)}.fd-button:hover{border-color:var(--fd-accent);color:var(--fd-accent)}.fd-button-primary{background:var(--fd-accent);border-color:var(--fd-accent);color:var(--fd-accent-text)}.fd-button-primary:hover{color:var(--fd-accent-text);filter:brightness(1.12)}.fd-button-danger{color:var(--fd-error);border-color:var(--fd-error)}.fd-button-danger:hover{background:var(--fd-error);color:#fff}.fd-button-link{border-color:transparent;background:none;color:var(--fd-accent);padding-inline:4px}.fd-form[data-fd-skin=underline] .fd-button{border-radius:3px}.fd-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.fd-actions-end{justify-content:flex-end;margin-block-start:24px}.fd-sheet-page{background:var(--fd-page);padding:0 0 32px;min-width:0}.fd-header{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;background:var(--fd-surface);border-block-end:1px solid var(--fd-border);padding:8px 16px}.fd-statusbar{display:flex;list-style:none;margin:0;padding:0;overflow-x:auto}.fd-statusbar li{display:flex}.fd-statusbar li>*{font:inherit;font-size:13px;border:none;background:var(--fd-page);color:var(--fd-muted);padding:5px 18px 5px 22px;margin-inline-start:-6px;white-space:nowrap;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%,10px 50%)}.fd-statusbar li:first-child>*{margin-inline-start:0;padding-inline-start:14px;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%)}.fd-statusbar li>button{cursor:pointer}.fd-statusbar li>[aria-current=step]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}[dir=rtl] .fd-statusbar li>*{transform:scaleX(-1)}[dir=rtl] .fd-statusbar li>*>*{display:inline-block;transform:scaleX(-1)}.fd-sheet-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;max-width:var(--fd-page-max, 1180px);margin:16px auto 0;padding-inline:16px}.fd-sheet-layout{align-items:start}.fd-sheet-foot{margin:4px -28px -28px;padding:12px 28px;border-block-start:1px solid var(--fd-border);border-end-start-radius:inherit;border-end-end-radius:inherit}.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr) minmax(260px,360px)}@container (max-width: 1000px){.fd-sheet-layout.fd-has-side{grid-template-columns:minmax(0,1fr)}}.fd-card{position:relative;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:var(--fd-radius);padding:24px 28px 28px;display:grid;gap:18px;min-width:0;container-type:inline-size}.fd-ribbon-frame{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}.fd-ribbon{position:absolute;inset-block-start:18px;inset-inline-end:-42px;transform:rotate(45deg);width:160px;text-align:center;font-size:12px;font-weight:700;padding:4px 0;color:#fff;background:var(--fd-muted);text-transform:uppercase;letter-spacing:.06em;pointer-events:none}[dir=rtl] .fd-ribbon{transform:rotate(-45deg)}.fd-ribbon.fd-tone-danger{background:var(--fd-error)}.fd-ribbon.fd-tone-success{background:var(--fd-success)}.fd-ribbon.fd-tone-warning{background:#d97706}.fd-ribbon.fd-tone-info{background:var(--fd-info)}.fd-alert{padding:10px 14px;border-radius:var(--fd-control-radius);border:1px solid;font-size:13.5px;display:flex;align-items:flex-start;gap:10px}.fd-alert-message{flex:1 1 auto;min-width:0}.fd-alert-close{border:none;background:none;color:inherit;cursor:pointer;font:inherit;font-size:18px;line-height:1;padding:0 4px;border-radius:4px;opacity:.75}.fd-alert-close:hover{opacity:1}.fd-alert-close:focus-visible{outline:2px solid var(--fd-focus);opacity:1}.fd-alert.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-alert.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-alert.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-alert.fd-tone-info,.fd-alert:not([class*=fd-tone-]){background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-stats{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0;margin:-24px -28px 0;border-block-end:1px solid var(--fd-border)}.fd-stats:empty{display:none}.fd-card:has(>.fd-ribbon-frame>.fd-ribbon:not([hidden])) .fd-stats{padding-inline-end:104px}.fd-stat{font:inherit;background:none;border:none;border-inline-start:1px solid var(--fd-border);cursor:pointer;padding:8px 18px;display:grid;justify-items:start;line-height:1.2;color:var(--fd-text);min-width:120px}.fd-stat:hover{background:var(--fd-page)}.fd-stat:has(>.fd-icon){grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:10px}.fd-stat>.fd-icon{width:22px;height:22px;color:var(--fd-muted)}.fd-stat-words{display:grid;justify-items:start}.fd-stat-value{font-weight:700;font-size:15px;color:var(--fd-accent);font-variant-numeric:tabular-nums}.fd-stat-label{font-size:12.5px;color:var(--fd-muted)}.fd-title-row{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.fd-title{display:grid;gap:4px;flex:1 1 auto;min-width:0}.fd-avatar{flex:none}.fd-avatar>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-form[data-fd-skin=underline] .fd-avatar{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-avatar>*{grid-column:1!important}.fd-avatar .fd-file{justify-items:center;gap:4px 8px;padding:0;justify-content:center}.fd-avatar :is(.fd-file-item,.fd-image-pick){width:88px;height:88px}.fd-avatar :is(.fd-image-pick .fd-help,.fd-file-limits){display:none}.fd-avatar .fd-button-link{flex-basis:auto;font-size:12.5px}.fd-title>.fd-field .fd-input{font-size:24px;font-weight:600;min-height:40px}.fd-form[data-fd-skin=underline] .fd-title>.fd-field{grid-template-columns:minmax(0,1fr)}.fd-form[data-fd-skin=underline] .fd-title>.fd-field>*{grid-column:1}.fd-title>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-above,.fd-title-below{display:flex;flex-wrap:wrap;align-items:center;gap:6px 24px}.fd-title-above{margin-block-end:4px}.fd-title-below{margin-block-start:6px}.fd-form .fd-title-above>.fd-field,.fd-form .fd-title-below>.fd-field{display:flex;align-items:center;gap:8px;grid-template-columns:none}.fd-form .fd-title-above>.fd-field>*,.fd-form .fd-title-below>.fd-field>*{grid-column:auto!important}.fd-title-above .fd-label:empty,.fd-title-below .fd-label:empty{display:none}.fd-title-above>.fd-field>.fd-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-title-statusbar{display:flex}.fd-badges{display:flex;flex-wrap:wrap;gap:6px}.fd-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;line-height:1;padding:5px 10px;border-radius:999px;border:1px solid var(--fd-border);background:var(--fd-page);color:var(--fd-muted)}.fd-badge .fd-icon{width:13px;height:13px}.fd-badge.fd-tone-info{background:var(--fd-info-soft);border-color:#a9c8ef;color:var(--fd-info)}.fd-badge.fd-tone-success{background:var(--fd-success-soft);border-color:#a7d7ab;color:var(--fd-success)}.fd-badge.fd-tone-warning{background:var(--fd-warning-soft);border-color:#f0c47a;color:var(--fd-warning)}.fd-badge.fd-tone-danger{background:var(--fd-error-soft);border-color:#f1a7a7;color:var(--fd-error)}.fd-side{display:grid;gap:12px;align-content:start;min-width:0}.fd-wizard{display:grid;gap:20px}.fd-progress{display:grid;gap:8px}.fd-progress-text{color:var(--fd-muted);font-size:13px}.fd-value-text{display:block;padding-block:6px;font-variant-numeric:tabular-nums}.fd-date-pick{position:relative;display:flex;align-items:center;gap:6px;min-width:0}.fd-date-pick>.fd-input{flex:1 1 auto;min-width:0}.fd-calendar-button{flex:0 0 auto;display:grid;place-items:center;width:32px;height:32px;padding:0;cursor:pointer;border:1px solid var(--fd-border);border-radius:var(--fd-control-radius);background:var(--fd-surface);color:var(--fd-muted)}.fd-calendar-button:hover,.fd-calendar-button[aria-expanded=true]{color:var(--fd-text);background:var(--fd-page)}.fd-calendar-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.fd-calendar{position:absolute;inset-block-start:calc(100% + 4px);inset-inline-end:0;z-index:30;padding:8px;background:var(--fd-surface);border:1px solid var(--fd-border);border-radius:max(var(--fd-control-radius),6px);box-shadow:0 8px 24px #0f141924}.fd-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 6px}.fd-calendar-head button{border:none;background:none;cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;border-radius:4px;color:var(--fd-text)}.fd-calendar-head button:hover{background:var(--fd-page)}.fd-calendar-title{font-weight:600}.fd-calendar-grid{border-collapse:collapse;font-variant-numeric:tabular-nums}.fd-calendar-grid th{font-size:11.5px;font-weight:600;color:var(--fd-muted);padding:4px 0;width:34px;text-align:center}.fd-calendar-grid .fd-week{color:var(--fd-accent);font-weight:600;border-inline-end:1px solid var(--fd-border)}.fd-calendar-grid td{padding:1px}.fd-calendar-grid td button{width:32px;height:30px;border:none;border-radius:4px;background:none;cursor:pointer;color:var(--fd-text);font:inherit;font-size:13px}.fd-calendar-grid td button:hover{background:var(--fd-accent-soft)}.fd-calendar-grid td button.fd-outside{color:var(--fd-muted);opacity:.6}.fd-calendar-grid td button[aria-current=date]{box-shadow:inset 0 0 0 1px var(--fd-accent)}.fd-calendar-grid td button[aria-selected=true]{background:var(--fd-accent);color:var(--fd-accent-text);font-weight:600}.fd-calendar-grid td button:focus-visible{outline:2px solid var(--fd-focus);outline-offset:1px}.fd-properties{display:grid;gap:8px;min-width:0}.fd-property{display:grid;grid-template-columns:minmax(120px,30%) minmax(0,1fr);align-items:center;gap:12px;min-width:0}.fd-property>label{color:var(--fd-muted);font-size:13px}.fd-property[data-type=boolean]>:last-child{justify-self:start}@container (max-width: 520px){.fd-property{grid-template-columns:minmax(0,1fr);gap:4px}}.fd-progressbar{position:relative;height:22px;min-width:120px;border-radius:999px;overflow:hidden;background:var(--fd-page);border:1px solid var(--fd-border);font-variant-numeric:tabular-nums}.fd-progressbar-fill{height:100%;background:var(--fd-success);transition:width .2s ease}.fd-progressbar[data-tone=warning] .fd-progressbar-fill{background:#d97706}.fd-progressbar[data-tone=danger] .fd-progressbar-fill{background:var(--fd-error)}.fd-progressbar[data-tone=info] .fd-progressbar-fill{background:var(--fd-info)}.fd-progressbar-text{position:absolute;inset-block:2px;left:50%;translate:-50% 0;display:grid;place-items:center;padding-inline:7px;border-radius:999px;background:var(--fd-surface);font-size:12px;line-height:1;font-weight:600;color:var(--fd-text)}.fd-progressbar-text:empty{display:none}.fd-progressbar-edit{display:flex;align-items:center;gap:12px;min-width:0}.fd-progressbar-edit>.fd-progressbar{flex:1 1 auto}.fd-progressbar-edit>.fd-input{flex:0 0 96px}.fd-progress-bar{height:4px;background:var(--fd-border);border-radius:999px;overflow:hidden}.fd-progress-bar>span{display:block;height:100%;background:var(--fd-accent);transition:width .25s ease}.fd-step{display:grid;gap:18px}.fd-step-title{font-size:18px;font-weight:650;margin:0}.fd-wizard-nav{display:flex;gap:8px;justify-content:space-between}.fd-steps-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0;counter-reset:fd-step}.fd-steps-list>li{counter-increment:fd-step}.fd-step-link{font:inherit;font-size:13.5px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;border:1px solid var(--fd-border);background:var(--fd-surface);color:var(--fd-muted);border-radius:999px;padding:4px 12px 4px 6px}.fd-step-link:before{content:counter(fd-step);display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--fd-page);color:var(--fd-muted);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.fd-step-link:hover{border-color:var(--fd-accent);color:var(--fd-text)}.fd-step-link:focus-visible{outline:2px solid var(--fd-focus);outline-offset:2px}.fd-step-link.fd-step-done{color:var(--fd-text)}.fd-step-link.fd-step-done:before{content:"\u2713";background:var(--fd-accent-soft);color:var(--fd-accent)}.fd-step-link.fd-step-skipped{border-style:dashed;color:var(--fd-muted)}.fd-step-link.fd-step-skipped:before{content:"\u2013";background:var(--fd-page);color:var(--fd-muted)}.fd-step-link[aria-current=step]{border-color:var(--fd-accent);color:var(--fd-accent);font-weight:600}.fd-step-link[aria-current=step]:before{content:counter(fd-step);background:var(--fd-accent);color:var(--fd-accent-text)}.fd-wizard-nav .fd-spacer{flex:1}.fd-text-heading{font-size:16px;font-weight:650;margin:0}.fd-matrix{overflow-x:auto;max-width:100%}.fd-matrix-table{border-collapse:collapse;min-width:100%}.fd-matrix-table th,.fd-matrix-table td{padding:6px 10px;text-align:center;border-bottom:1px solid var(--fd-border)}.fd-matrix-table thead th{font-weight:500;font-size:13px;color:var(--fd-muted)}.fd-matrix-table tbody th{text-align:start;font-weight:500}.fd-matrix-table input{accent-color:var(--fd-accent);width:16px;height:16px;margin:0}.fd-divider{grid-column:1 / -1;width:100%;border:0;border-top:1px solid var(--fd-border);margin:4px 0}.fd-block{min-width:0}.fd-spacer{min-height:24px}.fd-image{display:block;max-width:100%;height:auto;border-radius:var(--fd-radius)}.fd-figure{display:grid;justify-items:start;gap:6px;margin:0}.fd-figure[data-align=center]{justify-items:center}.fd-figure[data-align=end]{justify-items:end}.fd-figure>a,.fd-figure .fd-image{width:var(--fd-image-width, auto);max-width:100%}.fd-figure>a{display:block;border-radius:var(--fd-radius)}.fd-caption{font-size:13px;color:var(--fd-muted)}.fd-text-paragraph{margin:0}.fd-text-note{margin:0;color:var(--fd-muted);font-size:13px}.fd-status{min-height:1.4em;color:var(--fd-muted);font-size:13px}.fd-status-box{display:inline-flex;align-items:center;gap:6px;min-width:0}.fd-status-box .fd-retry{font-size:13px}.fd-announce{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fd-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 14px;margin-block-end:16px;border:1px solid #f0c47a;border-radius:var(--fd-control-radius);background:var(--fd-warning-soft);color:var(--fd-warning);font-size:13.5px}.fd-banner-text{flex:1 1 16em;min-width:0}.fd-content>.fd-banner:has(+.fd-draft+.fd-sheet-page),.fd-content>.fd-banner:has(+.fd-sheet-page){margin:12px 16px 0}.fd-status-box.fd-toast{position:fixed;inset-block-end:max(20px,env(safe-area-inset-bottom,0px));inset-inline-end:20px;z-index:900;padding:10px 16px;border-radius:8px;background:var(--fd-text);box-shadow:0 8px 24px #0f141940}.fd-toast .fd-status,.fd-toast .fd-status.fd-status-saved,.fd-toast .fd-status.fd-status-error{color:var(--fd-surface);font-size:13.5px;min-height:0}.fd-toast .fd-retry{color:var(--fd-surface);text-decoration:underline}.fd-toast:has(.fd-status-error){background:var(--fd-error)}.fd-status-box.fd-status-bar{display:flex;justify-content:center;min-height:32px;padding:6px 16px;background:var(--fd-surface);border-block-end:1px solid var(--fd-border)}.fd-status-bar .fd-status-error,.fd-status.fd-status-error{color:var(--fd-error)}.fd-status.fd-status-saved{color:var(--fd-success)}.fd-draft{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:10px 14px;margin-block-end:16px;background:var(--fd-info-soft);border:1px solid #a9c8ef;border-radius:var(--fd-control-radius)}.fd-done{padding:40px 0;text-align:center;display:grid;gap:12px;justify-items:center}.fd-done-title{font-size:20px;font-weight:650;margin:0}.fd-dialog-backdrop{position:fixed;inset:0;background:#0f141973;display:grid;place-items:center;z-index:1000;padding:16px}.fd-dialog{background:var(--fd-surface);color:var(--fd-text);border-radius:max(var(--fd-radius),6px);max-width:420px;width:100%;padding:20px 22px;display:grid;gap:16px;box-shadow:0 10px 30px #0003;font-family:var(--fd-font);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:990;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}}',zo=Ws+Do+Io+Oo+Po+Vo,Wo="fieldia-styles";function Xr(e){if(e.getElementById(Wo))return;let t=e.createElement("style");t.id=Wo,t.textContent=zo,(e.head??e.documentElement).append(t)}function Zr(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 zs(){let e=new Map;return{get:t=>e.has(t)?jo(e.get(t)):null,set:(t,n)=>{e.set(t,jo(n))}}}var jo=e=>JSON.parse(JSON.stringify(e));var Ho={};var js={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",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."},tt={en:js,...Ho},qo=tt.en,Hs=new Map([["ar","Arabic"],["de","German"],["fr","French"]]),Bo=new Set;function kn(e="en"){let t=e.split("-")[0];if(Object.prototype.hasOwnProperty.call(tt,t))return t;let n=Hs.get(t);return n&&!Bo.has(t)&&(Bo.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 Qr="#111418",Ko="#1f2329",Bs="#f2f3f5";var ei=e=>[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)),qs=e=>`#${e.map(t=>Math.round(t).toString(16).padStart(2,"0")).join("")}`;function Uo(e){let[t,n,r]=ei(e).map(i=>{let o=i/255;return o<=.03928?o/12.92:((o+.055)/1.055)**2.4});return .2126*t+.7152*n+.0722*r}function jt(e,t){let[n,r]=[Uo(e),Uo(t)].sort((i,o)=>o-i);return(n+.05)/(r+.05)}var Us=e=>jt(e,"#ffffff")>=4.5?"#ffffff":Qr,_s=e=>jt(e,Qr)>=jt(e,"#ffffff")?Qr:"#ffffff",Jo=(e,t,n)=>qs(ei(e).map((r,i)=>r+(ei(t)[i]-r)*n)),Gs=(e,t)=>Jo(t,e,.12),_o=(e,t)=>[...t,Gs(e,t[0])].every(n=>jt(e,n)>=4.5);function cr(e,t,n){let r=e;for(let i=1;i<=40&&!n(r);i++)r=Jo(e,t,i/40);return r}function Sn(e,t={light:[],dark:[]}){let n=e.toLowerCase(),r=cr(n,"#000000",o=>_o(o,["#ffffff",Bs,...t.light])),i=cr(n,"#ffffff",o=>_o(o,[Ko,...t.dark]));return{accent:r,accentText:Us(r),dark:i,darkText:_s(i)}}var Ks=["#212529","#636976","#c63c3d"],Js=["#e8eaed","#a3a9b2","#ff8a7a"],Ys={accent:"#1365d9",dark:"#5aa2ff"},Go={background:"bg",border:"border",corners:"radius",textSize:"size",accent:"accent"},Xs={small:"13px",large:"16px"},Zs={square:[0,0],soft:[6,10],round:[12,16]};function Qs(e,t){let n=(s,l)=>t.scheme==="dark"?l:t.scheme==="auto"?`light-dark(${s}, ${l})`:s,r=t.accent?Sn(t.accent):Ys,i=Object.entries(t.parts??{}),o=(s,l,m)=>e.style.setProperty(`--fd-${s}-${l}`,m),a={light:[],dark:[]},d=s=>l=>s.every(m=>jt(m,l)>=4.5);for(let[s,l]of i){let m=l.background?.toLowerCase();if(!m)continue;let f=cr(m,"#ffffff",d([...Ks,r.accent])),w=cr(m,Ko,d([...Js,r.dark]));a.light.push(f),a.dark.push(w),o(s,"bg",n(f,w))}for(let[s,l]of i){let m=Object.keys(Go).filter(f=>l[f]).map(f=>Go[f]);if(m.length&&e.setAttribute(`data-${s}`,m.join(" ")),l.border&&o(s,"border",l.border),l.corners&&o(s,"radius",`${Zs[l.corners][s==="groups"?1:0]}px`),l.textSize&&o(s,"size",Xs[l.textSize]),l.accent){let f=Sn(l.accent,a);o(s,"accent",n(f.accent,f.dark)),o(s,"accent-text",n(f.accentText,f.darkText))}}}function Ht(e,t){if(t){for(let n of["font","density","corners","scheme"]){let r=t[n];r&&e.setAttribute(`data-${n}`,r)}if(t.labelWidth&&e.style.setProperty("--fd-label-width",`${t.labelWidth}px`),t.accent){let n=Sn(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)}Qs(e,t)}}var Yo=0,fr='input:not([type="hidden"]), select, textarea, [contenteditable="true"]',Xo=e=>(t,n={},r)=>{let i=e.createElement(t);for(let[o,a]of Object.entries(n))i.setAttribute(o,a);return r!==void 0&&(i.textContent=r),i};function en(e){return Zo(e,`fd-size-${e.size??"medium"}`)}function ti(e){let t=e.side??"end";return Zo(e,`fd-form-panel ${t==="top"||t==="bottom"?`fd-height-${e.height??"medium"}`:`fd-width-${e.width??"medium"}`}`,t)}function Zo(e,t,n){let r=!!n,i=e.container?.ownerDocument??document,o=e.container??i.body,a=i.activeElement instanceof i.defaultView.HTMLElement?i.activeElement:null,d={...tt[kn(e.locale)],...e.labels},s=`fd-dialog-${++Yo}`,l=Xo(i),m=l("h2",{id:`${s}-title`,class:"fd-form-dialog-title"},e.title),f=l("button",{type:"button",class:"fd-dialog-close","aria-label":d.close},"\xD7"),w=l("div",{class:"fd-form-dialog-body"}),c=l("button",{type:"button",class:"fd-button"},d.discard),h=l("button",{type:"button",class:"fd-button fd-button-primary"},r&&e.mode==="values"?d.done:d.saveClose),u=l("div",{class:`fd-theme fd-form-dialog ${t}`,"data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":m.id,tabindex:"-1"});n&&u.setAttribute("data-side",n),e.dir&&u.setAttribute("dir",e.dir);let y=e.page.look??e.look;Ht(u,y),u.append(l("div",{class:"fd-form-dialog-head"}),w,l("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"})),u.firstElementChild?.append(m,f),u.lastElementChild?.append(c,h);let v=l("div",{class:`fd-dialog-backdrop fd-form-dialog-backdrop${r?" fd-form-panel-backdrop":""}`});v.append(u);let b=r?[...i.querySelectorAll(".fd-form-panel")].pop():void 0;b?.setAttribute("data-behind",""),o.append(v);let p=En(w,{...e,page:y&&!e.page.look?{...e.page,look:y}:e.page,showActions:!1,host:{...e.host,close:()=>c.click()}});r&&p.element.dir&&(v.dir=p.element.dir);let k=!1;e.recompute&&ed(p.form,e.page.fields,e.recompute,()=>k);let E=()=>w.querySelector(fr);return(E()??u).focus(),p.form.settled().then(()=>{(i.activeElement===u||!u.contains(i.activeElement))&&E()?.focus()}),new Promise(L=>{let x=O=>{if(k)return;k=!0;let q=p.form.getState(),V={saved:O,recordId:q.recordId??null,values:q.values};p.destroy(),v.remove(),b?.removeAttribute("data-behind"),a?.focus(),L(V)},A=()=>new Promise(O=>{let q=i.activeElement,V=l("p",{id:`${s}-ask`},d.discardChanges),G=l("button",{type:"button",class:"fd-button"},d.cancel),T=l("button",{type:"button",class:"fd-button fd-button-primary"},d.discard),B=l("div",{class:"fd-actions fd-actions-end"}),X=l("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":V.id}),I=l("div",{class:"fd-dialog-backdrop"});B.append(G,T),X.append(V,B),I.append(X);let Y=N=>{I.remove(),q?.focus(),O(N)};G.addEventListener("click",()=>Y(!1)),T.addEventListener("click",()=>Y(!0)),I.addEventListener("keydown",N=>{N.stopPropagation(),N.key==="Escape"?Y(!1):mt(X,N)}),u.append(I),G.focus()}),P=async()=>{(!r||!p.form.getState().dirty.length||await A())&&x(!1)};h.addEventListener("click",async()=>{h.disabled=!0;let O=e.mode==="values"?p.check():await p.save();h.disabled=!1,O&&x(!0)}),c.addEventListener("click",()=>x(!1)),f.addEventListener("click",P),u.addEventListener("keydown",O=>{if(O.key==="Enter"&&(O.ctrlKey||O.metaKey)&&!O.isComposing){if(O.target.closest(".ag-root-wrapper"))return;O.preventDefault(),i.activeElement?.dispatchEvent(new Event("change",{bubbles:!0})),h.click();return}O.defaultPrevented||(O.key==="Escape"?(O.preventDefault(),P()):mt(u,O))})})}function ed(e,t,n,r){let i=JSON.stringify(e.getState().values),o=!1;e.subscribe(()=>{let a=e.getState().values,d=JSON.stringify(a);o||d===i||(i=d,n(a).then(s=>{if(r()||JSON.stringify(e.getState().values)!==d)return;o=!0;let l=Object.fromEntries(Object.entries(s).filter(([m,f])=>m in t&&JSON.stringify(a[m]??null)!==JSON.stringify(f??null)));Object.keys(l).length&&e.setValues(l),o=!1,i=JSON.stringify(e.getState().values)},()=>{}))})}function ni(e){let t=e.container?.ownerDocument??document,n=e.container??t.body,r=t.activeElement instanceof t.defaultView.HTMLElement?t.activeElement:null,i=kn(e.locale),o=tt[i],a=Pe[i],d=`fd-dialog-${++Yo}`,s=Xo(t),l=s("h2",{id:`${d}-title`,class:"fd-form-dialog-title"},e.title),m=s("button",{type:"button",class:"fd-dialog-close","aria-label":o.close},"\xD7"),f=s("input",{type:"search",class:"fd-input","aria-label":a.search,placeholder:a.search,"aria-controls":`${d}-list`,autocomplete:"off"}),w=s("ul",{id:`${d}-list`,class:"fd-search-list",role:"listbox","aria-labelledby":l.id}),c=s("button",{type:"button",class:"fd-button"},o.cancel),h=s("div",{class:"fd-theme fd-form-dialog fd-search-dialog fd-size-small","data-fd-skin":e.skin??"underline",role:"dialog","aria-modal":"true","aria-labelledby":l.id});e.dir&&h.setAttribute("dir",e.dir),Ht(h,e.look);let u=s("div",{class:"fd-form-dialog-head"});u.append(l,m);let y=s("div",{class:"fd-form-dialog-body fd-search-body"});y.append(f,w);let v=s("div",{class:"fd-actions fd-actions-end fd-form-dialog-foot"});v.append(c),h.append(u,y,v);let b=s("div",{class:"fd-dialog-backdrop fd-form-dialog-backdrop"});return b.append(h),n.append(b),f.focus(),new Promise(p=>{let k=[],E=-1,L=0,x,A=q=>{clearTimeout(x),L++,b.remove(),r?.focus(),p(q)},P=()=>{w.replaceChildren(...k.map((q,V)=>{let G=s("li",{id:`${d}-option-${V}`,role:"option",class:`fd-option${V===E?" fd-active":""}`,"aria-selected":String(V===E)},q.label);return G.addEventListener("click",()=>A(q)),G})),k.length||w.append(s("li",{class:"fd-empty"},a.noResults)),E>=0?f.setAttribute("aria-activedescendant",`${d}-option-${E}`):f.removeAttribute("aria-activedescendant")},O=()=>{clearTimeout(x);let q=++L;x=setTimeout(async()=>{let V=await e.search(f.value,80).catch(()=>[]);q===L&&(k=V,E=-1,P())},180)};f.addEventListener("input",O),f.addEventListener("keydown",q=>{if(q.key==="ArrowDown"||q.key==="ArrowUp"){if(q.preventDefault(),!k.length)return;E=(E+(q.key==="ArrowDown"?1:-1)+k.length)%k.length,P(),w.children[E]?.scrollIntoView?.({block:"nearest"})}else q.key==="Enter"&&E>=0&&(q.preventDefault(),A(k[E]))}),c.addEventListener("click",()=>A(null)),m.addEventListener("click",()=>A(null)),h.addEventListener("keydown",q=>{q.key==="Escape"?(q.preventDefault(),A(null)):mt(h,q)}),O()})}function ri(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 td(e,t,n){let r=Object.fromEntries(Object.entries(e).map(([i,o])=>[i,n?{...o,readonly:!0}:o]));return{fieldia:"0.1",id:"values",title:t,data:{kind:"record",model:"values"},fields:r,layout:{type:"sections",id:"values",children:[{type:"section",id:"values-section",columns:2,children:Object.keys(r).map(i=>({type:"field",id:`values-${i}`,field:i}))}]}}}function Ln(e,t){let{pages:n,relatedPages:r}=e,i="model"in t?t.model:t.version===void 0?t.id:`${t.id}@${t.version}`,o=typeof n=="function"?n(t):n&&Object.prototype.hasOwnProperty.call(n,i)?n[i]:null;return o instanceof Promise?o.then(a=>a??null):o||!("model"in t)?o??null:(typeof r=="function"?r(t.model):r?.[t.model])??null}function nd(e){if(e)return{...e.search?{search:t=>e.search(t)}:{},...e.create?{create:t=>e.create(t)}:{}}}function Qo(e){let t=r=>Ln(e,{model:r}),n={locale:e.locale,skin:e.skin,dir:e.dir,widgets:e.widgets,preferences:e.preferences,pages:e.pages,relatedPages:e.relatedPages,translate:e.translate,look:e.page.look};return{canOpen:r=>t(r)!==null,async openRecord(r,i){let o=await t(r);if(!o)return null;let a=ri(o),d=await en({...n,page:o,dataSource:e.dataSource,recordId:i.recordId??null,values:i.name&&a?{[a]:i.name}:void 0,title:i.title,size:"large"});if(!d.saved||d.recordId===null)return null;let s=a?d.values[a]:null;return{id:d.recordId,label:typeof s=="string"&&s?s:i.name??i.title}},searchMore:r=>ni({title:r.title,search:r.search,locale:e.locale,skin:e.skin,dir:e.dir,look:e.page.look}),async editValues(r){let i=await en({...n,page:td(r.fields,r.title,r.readonly===!0),dataSource:nd(e.dataSource),values:r.values,title:r.title,mode:"values",...r.recompute?{recompute:r.recompute}:{}});return i.saved?i.values:null}}}var ea=e=>`favourites:${e.id}`;function ur(e,t){let n=e.get(ea(t));return Array.isArray(n)?n:[]}function ta(e,t,n){let r=ur(t,n).find(i=>i.isDefault);return r?r.facets:e.defaultFilters?.length?[{kind:"filters",ids:[...e.defaultFilters],labels:e.defaultFilters.map(i=>e.filters?.find(o=>o.id===i)?.label??i)}]:[]}function na(e){let{page:t,el:n,labels:r,fill:i,preferences:o}=e,a=n("ul",{class:"fd-favourite-list"}),d=n("p",{class:"fd-favourites-none"},r.noFavourites),s=n("input",{class:"fd-input","aria-label":r.searchName,placeholder:r.searchName}),l=n("input",{type:"checkbox"}),m=n("button",{type:"button",class:"fd-button fd-button-primary"},r.save),f=n("div",{class:"fd-favourite-form",hidden:""},s,n("label",{class:"fd-favourite-default"},l,r.useByDefault),m),w=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.saveSearch),c=u=>o.set(ea(t),u);function h(){let u=ur(o,t);d.hidden=u.length>0,a.replaceChildren(...u.map(y=>{let v=n("button",{type:"button",class:"fd-search-option","data-default":y.isDefault?"true":void 0},y.name);v.addEventListener("click",()=>e.apply(y.facets));let b=n("button",{type:"button",class:"fd-favourite-remove","aria-label":i(r.deleteFavourite,{name:y.name})},"\xD7");return b.addEventListener("click",()=>{c(ur(o,t).filter(p=>p.name!==y.name)),h()}),n("li",{class:"fd-favourite"},v,b)}))}return w.addEventListener("click",()=>{f.hidden=!f.hidden,w.setAttribute("aria-expanded",String(!f.hidden)),f.hidden||s.focus()}),m.addEventListener("click",()=>{let u=s.value.trim();if(!u)return s.focus();let y={name:u,facets:e.current(),...l.checked?{isDefault:!0}:{}},v=ur(o,t).filter(b=>b.name!==u).map(b=>l.checked?{name:b.name,facets:b.facets}:b);c([...v,y]),s.value="",l.checked=!1,f.hidden=!0,w.setAttribute("aria-expanded","false"),h()}),h(),{list:a,none:d,open:w,form:f}}function rd(e,t,n){let r=e.page.fields[t];return n.value===null?e.labels.none:r.type==="selection"?r.options.find(i=>i.value===n.value)?.label??n.label:r.type==="boolean"?n.value?e.labels.yes:e.labels.no:n.label||String(n.value)}function id(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 ii(e,t,n,r,i){let{el:o,labels:a}=e,d=i[n],s=[...r,t.value===null?{field:d,op:"notset",value:null}:{field:d,op:"=",value:t.value}],l=o("button",{type:"button",class:"fd-group-toggle","aria-expanded":"false"},o("span",{class:"fd-group-label"},rd(e,d,t))," ",o("span",{class:"fd-group-count"},`(${t.count})`)),m=o("tr",{class:"fd-list-group","data-level":String(n),"aria-level":String(n+1)},o("td",{colspan:String(e.columns)},l));m.style.setProperty("--fd-level",String(n));let f=!1;async function w(){f=!0;try{let h=n+1<i.length?(await e.dataSource.groups?.({model:e.model,field:i[n+1],filter:s}))?.map(u=>ii(e,u,n+1,s,i))??[]:await c(0);if(!m.isConnected||l.getAttribute("aria-expanded")!=="true")return;m.after(...h),e.changed()}finally{f=!1}}async function c(h){let u=await e.dataSource.list({model:e.model,fields:e.fields,filter:s,sort:e.sort(),offset:h,limit:e.pageSize}),y=u.records.map(k=>e.recordRow(k,n+1)),v=u.total-h-u.records.length;if(v<=0)return y;let b=o("button",{type:"button",class:"fd-button fd-button-link"},e.fill(a.loadMore,{n:v})),p=o("tr",{class:"fd-list-more","data-level":String(n+1)},o("td",{colspan:String(e.columns)},b));return p.style.setProperty("--fd-level",String(n)),b.addEventListener("click",async()=>{b.disabled=!0;let k=await c(h+u.records.length);p.isConnected&&(p.replaceWith(...k),e.changed())}),[...y,p]}return l.addEventListener("click",()=>{let h=l.getAttribute("aria-expanded")==="true";l.setAttribute("aria-expanded",String(!h)),h?(id(m),e.changed()):f||w()}),m}var od='.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 pr(e){if(e.getElementById("fd-list-styles"))return;let t=e.createElement("style");t.id="fd-list-styles",t.textContent=od,e.head.append(t)}var ad=[["ilike","opContains"],["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],sd=[["ilike","opContains"],["set","opSet"],["notset","opNotSet"]],dd=[["=","opIs"],["!=","opIsNot"],["set","opSet"],["notset","opNotSet"]],ld=[["=","opIs"],["!=","opIsNot"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]],cd=[["=","opIs"],[">","opGreater"],["<","opLess"],["set","opSet"],["notset","opNotSet"]];function oi(e){switch(e.type){case"char":case"text":case"html":return ad;case"many2one":case"many2many":return sd;case"selection":return dd;case"integer":case"float":case"monetary":return ld;case"date":case"datetime":return cd;case"boolean":return[["=","opIs"]];default:return[]}}function ra(e){let{page:t,el:n,labels:r}=e,i=Object.entries(t.fields).filter(([,u])=>oi(u).length),o=n("select",{class:"fd-input","aria-label":r.field},...i.map(([u,y])=>n("option",{value:u},y.label))),a=n("select",{class:"fd-input","aria-label":r.condition}),d=n("span",{class:"fd-custom-filter-value"}),s=n("button",{type:"button",class:"fd-button fd-button-primary"},r.apply),l=n("div",{class:"fd-custom-filter",hidden:""},o,a,d,s),m=n("button",{type:"button",class:"fd-search-option fd-search-add","aria-expanded":"false"},r.addCustomFilter),f=n("input",{class:"fd-input","aria-label":r.value}),w=()=>t.fields[o.value];function c(){a.replaceChildren(...oi(w()).map(([u,y])=>n("option",{value:u},r[y]))),h()}function h(){let u=w();if(u.type==="selection")f=n("select",{class:"fd-input","aria-label":r.value},...u.options.map(y=>n("option",{value:String(y.value)},y.label)));else if(u.type==="boolean")f=n("select",{class:"fd-input","aria-label":r.value},n("option",{value:"true"},r.yes),n("option",{value:"false"},r.no));else{let y=["integer","float","monetary"].includes(u.type)?"number":u.type==="date"?"date":u.type==="datetime"?"datetime-local":"text";f=n("input",{class:"fd-input",type:y,"aria-label":r.value})}d.replaceChildren(f),d.hidden=a.value==="set"||a.value==="notset"}return o.addEventListener("change",c),a.addEventListener("change",()=>d.hidden=a.value==="set"||a.value==="notset"),m.addEventListener("click",()=>{l.hidden=!l.hidden,m.setAttribute("aria-expanded",String(!l.hidden)),l.hidden||o.focus()}),s.addEventListener("click",()=>{let u=w(),y=a.value,v=r[oi(u).find(([k])=>k===y)?.[1]??"opIs"],b=null,p="";if(!d.hidden){let k=f.value.trim();if(!k)return f.focus();if(u.type==="selection"){let E=u.options.find(L=>String(L.value)===k);b=E?.value??k,p=E?.label??k}else if(u.type==="boolean")b=k==="true",p=b?r.yes:r.no;else if(["integer","float","monetary"].includes(u.type)){if(b=Number(k),!Number.isFinite(b))return f.focus();p=k}else b=k,p=k}e.add({kind:"custom",label:[u.label,v,p].filter(Boolean).join(" "),filter:[{field:o.value,op:y,value:b}]}),l.hidden=!0,m.setAttribute("aria-expanded","false")}),c(),{button:m,form:l}}function fd(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 ia(e){let{page:t,node:n,doc:r,el:i,labels:o,fill:a,uid:d}=e,s=e.facets,l=N=>{let K=dt(r,N,e.icons);return K?.setAttribute("aria-hidden","true"),K?[K]:[]};function m(N){s=N,p(),B(),e.onChange(s)}let f=d(`${n.id}-suggestions`),w=d(`${n.id}-search-panel`),c=i("input",{class:"fd-search-input",role:"combobox",autocomplete:"off",placeholder:o.search,"aria-label":o.searchLabel,"aria-autocomplete":"list","aria-expanded":"false","aria-controls":f}),h=i("div",{class:"fd-facets"}),u=i("ul",{class:"fd-search-suggestions",role:"listbox",id:f,"aria-label":o.searchLabel,hidden:""}),y=i("button",{type:"button",class:"fd-search-toggle","aria-label":o.searchOptions,"aria-expanded":"false","aria-controls":w}),v=[],b=0;function p(){h.replaceChildren(...s.map((N,K)=>{let Z=fd(N,o),ie=i("button",{type:"button",class:"fd-facet-remove","aria-label":a(o.removeFacet,{label:Z})},"\xD7");ie.addEventListener("click",()=>{m(s.filter(($,D)=>D!==K)),c.focus()});let J=N.kind==="groupBy"?"layers":N.kind==="field"?"":"filter";return i("span",{class:"fd-facet","data-kind":N.kind},...J?l(J):[],i("span",{class:"fd-facet-text"},Z),ie)}))}function k(){u.replaceChildren(...v.map((N,K)=>{let Z=i("li",{role:"option",id:`${f}-${K}`,"aria-selected":String(K===b)},N.label);return Z.addEventListener("mousedown",ie=>ie.preventDefault()),Z.addEventListener("click",()=>L(N)),Z})),u.hidden=v.length===0,c.setAttribute("aria-expanded",String(!u.hidden)),u.hidden?c.removeAttribute("aria-activedescendant"):c.setAttribute("aria-activedescendant",`${f}-${b}`)}function E(){v=[],k()}function L(N){let K={op:N.op,value:N.value,label:N.valueLabel},Z=s.findIndex(J=>J.kind==="field"&&J.field===N.field),ie=[...s];if(Z<0)ie.push({kind:"field",field:N.field,label:N.fieldLabel,values:[K]});else{let J=ie[Z];J.values.some(D=>D.op===K.op&&JSON.stringify(D.value)===JSON.stringify(K.value))||(ie[Z]={...J,values:[...J.values,K]})}c.value="",E(),m(ie)}c.addEventListener("input",()=>{v=Dn(c.value,t,n,{searchFor:o.searchFor}),b=0,k()}),c.addEventListener("blur",E),c.addEventListener("keydown",N=>{N.isComposing||((N.key==="ArrowDown"||N.key==="ArrowUp")&&v.length?(N.preventDefault(),b=(b+(N.key==="ArrowDown"?1:v.length-1))%v.length,k()):N.key==="Enter"?(N.preventDefault(),v.length&&L(v[b])):N.key==="Backspace"&&!c.value&&s.length?m(s.slice(0,-1)):N.key==="Escape"&&!u.hidden&&(N.preventDefault(),E()))});let x=(N,K,Z)=>i("div",{class:"fd-search-heading",id:Z},...l(N),K),A=(N,K)=>{let Z=s.findIndex(ne=>ne.kind===N),ie=Z<0?[]:N==="filters"?s[Z].ids:s[Z].fields,J=ie.includes(K)?ie.filter(ne=>ne!==K):[...ie,K],$=N==="filters"?{kind:N,ids:J,labels:J.map(ne=>n.filters?.find(Q=>Q.id===ne)?.label??ne)}:{kind:N,fields:J,labels:J.map(ne=>t.fields[ne]?.label??ne)},D=[...s];Z<0?D.push($):J.length?D[Z]=$:D.splice(Z,1),m(D)},P=(n.filters??[]).map(N=>{let K=i("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-filter":N.id},N.label);return K.addEventListener("click",()=>A("filters",N.id)),K}),O=(n.groupBy??[]).map(N=>{let K=i("button",{type:"button",class:"fd-search-option","aria-pressed":"false","data-group":N},t.fields[N].label);return K.addEventListener("click",()=>A("groupBy",N)),K}),q=ra({page:t,el:i,labels:o,add:N=>m([...s,N])}),V=na({page:t,el:i,labels:o,fill:a,preferences:e.preferences,current:()=>s,apply:m}),G=(N,K,Z,...ie)=>i("div",{class:"fd-search-group","data-group-kind":N,role:"group","aria-labelledby":`${w}-${N}`},x(K,Z,`${w}-${N}`),...ie),T=i("div",{class:"fd-search-panel",id:w,hidden:""},G("filters","filter",o.filters,...P,q.button,q.form),...O.length?[G("groupBy","layers",o.groupBy,...O)]:[],G("favourites","star",o.favourites,V.list,V.none,V.open,V.form));function B(){let N=s.find(Z=>Z.kind==="filters")?.ids??[],K=s.find(Z=>Z.kind==="groupBy")?.fields??[];for(let Z of P)Z.setAttribute("aria-pressed",String(N.includes(Z.dataset.filter??"")));for(let Z of O)Z.setAttribute("aria-pressed",String(K.includes(Z.dataset.group??"")))}function X(N){T.hidden=!N,y.setAttribute("aria-expanded",String(N)),N&&E()}y.addEventListener("click",()=>X(T.hidden)),T.addEventListener("keydown",N=>{N.key==="Escape"&&(N.preventDefault(),X(!1),y.focus())});let I=i("div",{class:"fd-search"},i("div",{class:"fd-search-field"},...l("search"),h,c,y),u,T),Y=N=>{!T.hidden&&!I.contains(N.target)&&X(!1)};return r.addEventListener("pointerdown",Y),p(),B(),{element:I,destroy:()=>r.removeEventListener("pointerdown",Y)}}var oa=new Set(["integer","float","monetary"]),ud=new Set(["one2many","many2many","binary","image","html","json","properties"]);function aa(e){let{page:t,node:n,form:r,el:i,labels:o,fill:a,locale:d,doc:s}=e;pr(s);let l=n.pageSize??40,m=n.sort??[],f=m,w=0,c=0,h=[],u=new WeakMap,y=()=>[...O.querySelectorAll(".fd-list-row")].map(H=>u.get(H)),v=t.data.kind==="record"?t.data.model:"",b=ta(n,e.preferences,t),p=new Set,k=0,E=!1,L=[...new Set(n.columns.flatMap(H=>{let U=t.fields[H];return U.type==="monetary"&&U.currencyField?[H,U.currencyField]:[H]}))],x=(H,U)=>bn(t.fields[H],U[H],U,d),A=i("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":o.selectAll}),P=n.columns.map(H=>{let U=t.fields[H],me=i("th",{scope:"col","data-field":H,class:oa.has(U.type)?"fd-num":void 0});if(ud.has(U.type))me.append(U.label);else{let xe=i("button",{type:"button",class:"fd-list-sort"},U.label);xe.addEventListener("click",()=>{let we=f[0]?.field===H?!f[0].desc:!1;f=[{field:H,...we?{desc:we}:{}},...m.filter(ce=>ce.field!==H)],w=0,re()}),me.append(xe)}return me}),O=i("tbody"),q=i("table",{class:"fd-list-table","aria-label":t.title},i("thead",{},i("tr",{},i("th",{class:"fd-list-check",scope:"col"},A),...P)),O),V=i("p",{class:"fd-list-empty",hidden:""},o.noRecords),G=i("button",{type:"button",class:"fd-button fd-button-link"},o.retry),T=i("p",{class:"fd-list-failed",role:"alert",hidden:""},o.loadFailed," ",G);G.addEventListener("click",()=>{re()});function B(H,U=0){let me=x(n.columns[0],H.values)||String(H.id),xe=i("input",{type:"checkbox",class:"fd-list-checkbox","aria-label":a(o.selectRecord,{name:me})});xe.checked=p.has(H.id),xe.addEventListener("change",()=>{xe.checked?p.add(H.id):p.delete(H.id),K()});let we=i("tr",{class:e.onOpenRecord?"fd-list-row fd-list-openable":"fd-list-row",tabindex:"0","data-id":String(H.id),"data-level":U?String(U):void 0},i("td",{class:"fd-list-check"},xe),...n.columns.map(ce=>i("td",{class:oa.has(t.fields[ce].type)?"fd-num":void 0},i("bdi",{},x(ce,H.values)))));return we.addEventListener("click",ce=>{let Ne=ce.target.closest("td");if(Ne?.classList.contains("fd-list-check")){ce.target===Ne&&xe.click();return}e.onOpenRecord?.(H.id)}),we.addEventListener("keydown",ce=>{ce.target===we&&(ce.key==="Enter"?(ce.preventDefault(),e.onOpenRecord?.(H.id)):ce.key===" "?(ce.preventDefault(),xe.click()):(ce.key==="ArrowDown"||ce.key==="ArrowUp")&&(ce.preventDefault(),(ce.key==="ArrowDown"?we.nextElementSibling:we.previousElementSibling)?.focus()))}),u.set(we,H),we}let X=i("span",{class:"fd-list-count",role:"status"}),I=i("button",{type:"button",class:"fd-button fd-button-link"},o.clearSelection),Y=(n.actions??[]).map(H=>{let U=i("button",{type:"button",class:`fd-button fd-button-${H.style??"secondary"}`,"data-node":H.id},...e.withIcon(H.icon,H.label));return U.addEventListener("click",()=>{e.press(U,async()=>{let me=await r.runAction(H.id,{recordIds:[...p]});return await re(),me})}),U}),N=i("div",{class:"fd-list-selection",hidden:""},X,...Y,I);I.addEventListener("click",()=>{p.clear();for(let H of O.querySelectorAll(".fd-list-checkbox"))H.checked=!1;K()}),A.addEventListener("change",()=>{for(let H of y())A.checked?p.add(H.id):p.delete(H.id);for(let H of O.querySelectorAll(".fd-list-checkbox"))H.checked=A.checked;K()});function K(){let H=y(),U=H.filter(me=>p.has(me.id)).length;A.checked=H.length>0&&U===H.length,A.indeterminate=U>0&&U<H.length,N.hidden=p.size===0,X.textContent=a(o.selected,{n:p.size});for(let me of O.querySelectorAll(".fd-list-row"))me.setAttribute("aria-selected",String([...p].some(xe=>String(xe)===me.dataset.id)))}let Z=i("span",{class:"fd-pager-text"}),ie=i("button",{type:"button",class:"fd-button fd-pager-button","aria-label":o.previousPage},"\u2039"),J=i("button",{type:"button",class:"fd-button fd-pager-button","aria-label":o.nextPage},"\u203A"),$=i("div",{class:"fd-pager",role:"group"},Z,ie,J);ie.addEventListener("click",()=>{w=Math.max(0,w-l),re()}),J.addEventListener("click",()=>{w+=l,re()});function D(){$.hidden=c===0,Z.textContent=a(o.range,{from:w+1,to:Math.min(w+h.length,c),total:c}),ie.disabled=w===0,J.disabled=w+l>=c}function ne(){for(let H of P){let U=f[0]?.field===H.dataset.field?f[0]:null;U?H.setAttribute("aria-sort",U.desc?"descending":"ascending"):H.removeAttribute("aria-sort")}}function Q(){let H=new Set(y().map(U=>U.id));for(let U of[...p])H.has(U)||p.delete(U);K()}let se=H=>({page:t,el:i,labels:o,fill:a,dataSource:H,model:v,fields:L,columns:n.columns.length+1,pageSize:l,sort:()=>f,recordRow:B,changed:Q});async function re(){let H=++k;ne(),q.setAttribute("aria-busy","true");let U=[];try{let me=Wn(b,n),xe=zn(b),we=e.dataSource;if(xe.length&&we?.groups&&we.list){let ce=await we.groups({model:v,field:xe[0],filter:me});if(H!==k||E)return;h=[],c=0,U=ce.map(Ne=>ii(se(we),Ne,0,me,xe))}else{let ce=we?.list?await we.list({model:v,fields:L,filter:me,sort:f,offset:w,limit:l}):{records:[],total:0};if(H!==k||E)return;if(!ce.records.length&&ce.total>0&&w>0)return w=Math.floor((ce.total-1)/l)*l,re();h=ce.records,c=ce.total,U=h.map(Ne=>B(Ne))}T.hidden=!0}catch{if(H!==k||E)return;h=[],c=0,T.hidden=!1}O.replaceChildren(...U),V.hidden=U.length>0||!T.hidden,q.removeAttribute("aria-busy"),D(),Q()}let le=ia({page:t,node:n,doc:s,el:i,labels:o,fill:a,uid:e.uid,icons:e.icons,preferences:e.preferences,facets:b,onChange(H){b=H,w=0,re()}}),_=i("div",{class:"fd-list","data-node":n.id},i("div",{class:"fd-list-bar"},le.element,$),N,i("div",{class:"fd-list-scroll"},q),V,T);return re(),{element:_,reload:re,destroy(){E=!0,le.destroy()}}}function mr(e,t){let n=e.style??"card",r=n==="plain"&&!e.title,i=Ut(e.columns),o=e.colspan??1,a=r&&t.columns>1?o===1&&i>1?"shared":"tracks":void 0;return{style:n,arrangement:r,at:a,inner:{columns:a==="tracks"?Math.min(o,t.columns):i,onPage:t.onPage&&(n==="plain"||n==="line"),labels:e.labels??t.labels}}}var pd=new Set(["one2many","matrix"]);function gr(e,t,n){if(t==="boolean"&&e.widget==="tick")return"after";let r=e.labels??n;return r==="beside"&&pd.has(t)?"above":r}function ht(e,t){e.hidden!==t&&(e.hidden=t)}function hr(e,t){e.textContent!==t&&(e.textContent=t)}function sa(e,t,n){e.getAttribute(t)!==n&&(n===null?e.removeAttribute(t):e.setAttribute(t,n))}async function da(e,t){let{options:n}=e,r=n.onOpen?.(t);if(r)return r;let i=await Ln(n,t.version===void 0?{id:t.page}:{id:t.page,version:t.version});if(!i)throw new Error(e.missing(t.page));let o=n.page.look,a={...n,page:o&&!i.look?{...i,look:o}:i,form:void 0,recordId:t.recordId??null,values:t.values,drafts:void 0,autosave:void 0,readonly:void 0,editSwitch:void 0,saveStatus:void 0},d=t.title??e.title(i),s=t.as==="page"?await md(e,a):t.as==="panel"?await ti({...a,title:d,side:t.side}):await en({...a,title:d,size:i.layout.type==="sheet"?"large":"medium"}),l=ri(i),m=l?s.values[l]:void 0;return{...s,...typeof m=="string"&&m?{label:m}:{}}}function md(e,t){let{place:n,root:r}=e,i=n.ownerDocument,o=i.activeElement;return new Promise(a=>{let d=!1,s=w=>{if(d)return;d=!0;let c=l.form.getState();l.destroy(),r.hidden=!1,o?.isConnected&&o.focus(),a({saved:w,recordId:c.recordId??null,values:c.values})};r.hidden=!0;let l=En(n,{...t,host:{...t.host,close:()=>s(!1)}}),m=i.createElement("button");m.type="button",m.className="fd-button fd-button-link fd-back",m.textContent=e.back,m.addEventListener("click",()=>s(!1)),l.element.prepend(m);let f=()=>{l.form.settled().then(()=>s(!0))};l.on("save",f),l.on("send",f),(l.element.querySelector(fr)??m).focus()})}function la(e,t,n){let r=t("div",{class:"fd-says",role:"status","aria-live":"polite"});return e.append(r),(i,o)=>{let a=t("button",{type:"button",class:"fd-alert-close","aria-label":n},"\xD7"),d=t("div",{class:"fd-say","data-tone":o},t("span",{},i),a);d.style.setProperty("--fd-tone",`var(--fd-${o==="danger"?"error":o})`);let s,l=()=>clearTimeout(s),m=()=>{l(),d.remove()},f=()=>{l(),s=setTimeout(m,o==="warning"||o==="danger"?1e4:6e3)};for(a.addEventListener("click",m),d.addEventListener("mouseenter",l),d.addEventListener("focusin",l),d.addEventListener("mouseleave",f),d.addEventListener("focusout",f),r.append(d);r.children.length>4;)r.firstElementChild?.remove();f()}}var gd=0;function En(e,t){let n=e.ownerDocument,r=cn(t.page);if(!r.ok)throw new Error(`This page cannot be shown:
3
+ ${r.issues.map(R=>` ${R.path}: ${R.message}`).join(`
4
+ `)}`);let i=t.locale??r.page.language,o=i?fn(r.page,i):r.page,a=t.translate?Kt(o,t.translate):o,d=R=>{let ee=i?fn(R,i):R;return t.translate?Kt(ee,t.translate):ee},s=kn(i),l=t.preferences??Zr(),m=Qo(t),f=!t.form,w={...tt[s],...t.labels},c={open:R=>da({options:t,place:e,root:P,title:ee=>d(ee).title||ee.id,back:w.back,missing:ee=>L(w.pageMissing,{page:ee})},R),say:(R,ee)=>q(R,ee),ask:R=>O(R),show:R=>{if(!V.get(R)?.())throw new Error(`No tab "${R}" can be shown here`)},...t.host},h=t.form??qn({...t,page:a,host:c,messages:t.messages??Ge[s]}),u=Pe[s],y=t.dir??(i&&Pn(i)?"rtl":void 0),v=`fd${++gd}`,b=[],p=[],k=R=>`${v}-${R.replace(/[^A-Za-z0-9_-]/g,"_")}`,E=k,L=(R,ee)=>R.replace(/\{(\w+)\}/g,(oe,he)=>String(ee[he]??""));Xr(n);function x(R,ee={},...oe){let he=n.createElement(R);for(let[fe,pe]of Object.entries(ee))pe!==void 0&&he.setAttribute(fe,pe);return he.append(...oe),he}function A(R,ee){let oe=dt(n,R,t.icons),he=x("bdi",{},ee);return oe?[oe,he]:[he]}let P=x("form",{class:"fd-form",novalidate:"","data-fd-skin":t.skin??"underline",dir:y,lang:i,"data-max-width":a.maxWidth});Ht(P,a.look);let O=t.confirm??on,q=la(P,x,w.dismiss),V=new Map;async function G(R,ee){if(!R.hasAttribute("aria-busy")){R.setAttribute("aria-busy","true"),R.setAttribute("aria-disabled","true");try{let{reason:oe}=await ee();(oe==="check"||oe==="save")&&(h.getState().saveProblem||Ne(U(h.getState())),qe())}finally{R.removeAttribute("aria-busy"),R.removeAttribute("aria-disabled")}}}let T=new Map,B=()=>$t(h.getState()),X=!1,I=!1;function Y(R,ee){ee&&R.style.setProperty("--fd-span",String(ee))}let N=R=>({columns:1,onPage:R,labels:a.look?.labels});function K(R){let{form:ee,page:oe}=R,he=C=>k(R.prefix+C),fe=C=>b.push(R.root?C:()=>C(ee.getState()));function pe(C,ae){let ge=oe.fields[C.field],de=he(C.id),ke=gr(C,ge.type,ae),Le=x("div",{class:"fd-field","data-node":C.id,"data-field":C.field,"data-path":R.path+C.field,"data-type":ge.type,"data-labels":ke});C.colspan&&Le.style.setProperty("--fd-span",String(C.colspan));let Be=C.label??ge.label,Fe=x("label",{class:"fd-label",id:`${de}-label`,for:de},Be),ue=t.showValid&&!hd.has(ge.type)?dt(n,"check"):null;ue&&(ue.classList.add("fd-valid-mark"),Fe.append(ue));let Re=Ze({form:ee,name:C.field,field:ge,node:C,id:de,document:n,labels:u,preferences:l,locale:s,dialogs:m},t.widgets);ke==="hidden"&&!C.placeholder&&(Re.element.matches(ca)?Re.element:Re.element.querySelector(ca))?.setAttribute("placeholder",Be),["INPUT","SELECT","TEXTAREA"].includes(Re.element.tagName)||((Re.element.getAttribute("role")?Re.element:Re.element.querySelector(`[id="${de}"][role]`))?.setAttribute("aria-labelledby",Fe.id),Fe.addEventListener("click",()=>Re.focus()));let Oe=C.help??ge.help,We=Oe?x("div",{class:"fd-help",id:`${de}-help`},Oe):null,Qe=x("div",{class:"fd-error",id:`${de}-error`,hidden:""}),ot=x("div",{class:"fd-warning",id:`${de}-warning`,role:"status",hidden:""});Le.append(...ke==="after"?[Re.element,Fe]:[Fe,Re.element],...We?[We]:[],Qe,ot),Re.destroy&&p.push(()=>Re.destroy?.());let yt=!1,Bt="";Le.addEventListener("focusin",()=>yt=!0),Le.addEventListener("focusout",Xe=>{Le.contains(Xe.relatedTarget)||(yt=!1,queueMicrotask(()=>at(ee.getState())))});let at=Xe=>{let an=ee.node(C.id);ht(Le,an.invisible),Le.classList.toggle("fd-required",an.required);let qt=Xe.errors[C.field];ht(Qe,!qt),hr(Qe,qt??"");let ai=Xe.warnings[C.field]??"";(!yt||!ai)&&(Bt=ai);let yr=[qt?"":Bt,Xe.warning&&Xe.warningField===C.field?Xe.warning:""].filter(Boolean).join(" ");if(ht(ot,!yr),hr(ot,yr),ue){let sn=Xe.values[C.field],ua=sn!=null&&sn!==""&&!(Array.isArray(sn)&&!sn.length),si=!an.readonly&&!qt&&ua&&Xe.dirty.includes(C.field)&&ee.problem(C.field)===null;Le.classList.toggle("fd-valid",si),ue.toggleAttribute("hidden",!si)}Re.update({value:Xe.values[C.field],values:Xe.values,readonly:an.readonly||Q||R.locked(),required:an.required,invalid:!!qt,describedBy:[We?.id,qt?Qe.id:void 0,yr?ot.id:void 0].filter(Boolean).join(" ")||void 0})};return fe(at),Le}function g(C,ae){fe(()=>ht(C,ee.node(ae).invisible))}function S(C){let ae=x("button",{type:"button",class:`fd-button fd-button-${C.style??"secondary"}`,"data-node":C.id},...A(C.icon,C.label));return Y(ae,C.colspan),ae.addEventListener("click",()=>{G(ae,()=>ee.runAction(C.id))}),g(ae,C.id),ae}function M(C){let ae=C.style??"paragraph",ge=x(ae==="heading"?"h3":"p",{class:`fd-text-${ae}`,"data-node":C.id},C.text);return Y(ge,C.colspan),g(ge,C.id),ge}function F(C){let ae=x("div",{class:"fd-slot","data-slot":C.name,"data-node":C.id}),ge=t.slots?.[C.name]?.(ae,{form:ee,name:C.name});return ge&&p.push(ge),g(ae,C.id),ae}function j(C,ae,ge){let de=x("div",{class:"fd-grid"});if(ae!==null&&(de.style.setProperty("--fd-columns",String(Ut(ae))),typeof ae=="object"))for(let ke of["medium","narrow"]){let Le=ae[ke];Le!==void 0&&(de.setAttribute(`data-columns-${ke}`,String(Le)),de.style.setProperty(`--fd-columns-${ke}`,String(Le)))}return de.append(...C.map(ke=>te(ke,ge))),de}function W(C,ae){let ge=mr(C,ae),de=x(ge.arrangement?"div":"fieldset",{class:"fd-section","data-node":C.id,"data-style":ge.style,"data-place":ge.at,"data-on-page":ge.style==="card"&&ae.onPage?"":void 0});Y(de,C.colspan),C.labelWidth&&de.style.setProperty("--fd-label-width",`${C.labelWidth}px`);let ke=C.description?x("p",{class:"fd-section-description"},C.description):null,Le=j(C.children,ge.at==="tracks"?null:C.columns,ge.inner);if(C.title&&C.collapsible){Le.id=he(`${C.id}-content`);let Be=x("button",{type:"button",class:"fd-section-toggle","aria-controls":Le.id},x("span",{class:"fd-section-chevron","aria-hidden":"true"}),...A(C.icon,C.title)),Fe=C.collapsed!==!0,ue=Re=>{Fe=Re,Be.setAttribute("aria-expanded",String(Fe)),Le.hidden=!Fe,ke&&(ke.hidden=!Fe),de.classList.toggle("fd-section-folded",!Fe)};Be.addEventListener("click",()=>ue(!Fe)),T.set(de,()=>ue(!0)),ue(Fe),de.append(x("legend",{class:"fd-section-title"},Be))}else C.title&&de.append(x("legend",{class:"fd-section-title"},...A(C.icon,C.title)));return ke&&de.append(ke),de.append(Le),g(de,C.id),de}function z(C,ae){let ge=x("div",{class:"fd-tabs","data-node":C.id});Y(ge,C.colspan);let de=x("div",{class:"fd-tablist",role:"tablist"}),ke=null,Le=C.children[0].id,Be=ue=>{ke=Le=ue,B(),ee.shown(ue)},Fe=C.children.map(ue=>{let Re=he(`${ue.id}-tab`),Oe=he(`${ue.id}-panel`),We=x("button",{type:"button",class:"fd-tab",role:"tab",id:Re,"aria-controls":Oe,"data-node":ue.id},...A(ue.icon,ue.label)),Qe=x("div",{class:"fd-tabpanel",role:"tabpanel",id:Oe,"aria-labelledby":Re},j(ue.children,1,{columns:1,onPage:ae.onPage,labels:ae.labels}));return We.addEventListener("click",()=>Be(ue.id)),V.has(ue.id)||V.set(ue.id,()=>!ee.node(ue.id).invisible&&(Be(ue.id),!0)),de.append(We),{tab:ue,button:We,panel:Qe}});return de.addEventListener("keydown",ue=>{let Re=Fe.filter(yt=>!yt.button.hidden),Oe=Re.findIndex(yt=>yt.tab.id===Le),We={ArrowRight:1,ArrowLeft:-1,Home:-Oe,End:Re.length-1-Oe}[ue.key];if(We===void 0||Oe===-1)return;ue.preventDefault();let Qe=P.getAttribute("dir")==="rtl"&&(ue.key==="ArrowRight"||ue.key==="ArrowLeft"),ot=Re[(Oe+(Qe?-We:We)+Re.length)%Re.length];Be(ot.tab.id),ot.button.focus()}),ge.append(de,...Fe.map(ue=>ue.panel)),fe(()=>{ge.hidden=ee.node(C.id).invisible;let ue=Fe.filter(Oe=>!ee.node(Oe.tab.id).invisible);ke!==null&&ue.some(Oe=>Oe.tab.id===ke)?Le=ke:ue.length&&(Le=ue[0].tab.id);for(let Oe of Fe){let We=Oe.tab.id===Le;Oe.button.hidden=!ue.includes(Oe),Oe.button.setAttribute("aria-selected",String(We)),Oe.button.tabIndex=We?0:-1,Oe.panel.hidden=!We}}),ge}function te(C,ae){switch(C.type){case"field":return pe(C,ae.labels);case"button":return S(C);case"text":return M(C);case"slot":return F(C);case"section":return W(C,ae);case"tabs":return z(C,ae);case"divider":case"spacer":case"image":return ye(C);case"form":return be(C,ae)}}function ye(C){let ae=C.type==="divider"?x("hr",{class:"fd-divider","data-node":C.id}):C.type==="spacer"?x("div",{class:"fd-block fd-spacer","aria-hidden":"true","data-node":C.id}):Te(C);return C.type!=="divider"&&C.colspan&&ae.style.setProperty("--fd-span",String(C.colspan)),g(ae,C.id),ae}function Te(C){let ae=x("img",{class:"fd-image",src:C.src,alt:C.alt,loading:"lazy"}),ge=C.href&&/^(https?:\/\/|mailto:)/i.test(C.href)?C.href:void 0,de=x("figure",{class:"fd-block fd-figure","data-node":C.id,"data-align":C.align},ge?x("a",{href:ge,target:"_blank",rel:"noopener noreferrer"},ae):ae,...C.caption?[x("figcaption",{class:"fd-caption"},C.caption)]:[]),ke=typeof C.width=="number"?`${C.width}px`:C.width&&{small:"160px",medium:"320px",large:"480px",full:"100%"}[C.width];return ke&&de.style.setProperty("--fd-image-width",ke),de}function be(C,ae){let ge=x("fieldset",{class:"fd-section fd-form-part","data-node":C.id,"data-style":"card","data-on-page":ae.onPage?"":void 0,"aria-busy":"true"});Y(ge,C.colspan);let de=x("p",{class:"fd-form-part-note"},w.loading);ge.append(de),g(ge,C.id);let ke=Fe=>{ge.removeAttribute("aria-busy"),de.textContent=Fe,de.classList.add("fd-form-part-problem")},Le=Fe=>{if(I)return;if(!Fe)return ke(L(w.formMissing,{page:C.page}));let ue=d(Fe),Re=ue.title||Fe.id,Oe=R.chain.findIndex(at=>at.id===Fe.id);if(Oe!==-1)return ke(L(w.formInItself,{page:Re,chain:[...R.chain.slice(Oe).map(at=>at.title),Re].join(" \u2192 ")}));if(Fe.layout.type!=="sections"&&Fe.layout.type!=="tabs")return ke(L(w.formNotPlaceable,{page:Re}));let We=cn(ue),Qe;try{if(!We.ok)throw new Error(We.issues.map(at=>`${at.path}: ${at.message}`).join("; "));Qe=ee.embed(C.id,ue)}catch(at){return console.warn(`Fieldia: the saved form "${Fe.id}" cannot be shown: ${at.message}`),ke(L(w.formBroken,{page:Re}))}let ot=C.title??ue.title??"";ge.setAttribute("data-title",ot),ot&&ge.prepend(x("legend",{class:"fd-section-title"},...A(void 0,ot)));let yt=K({root:!1,form:Qe,page:ue,prefix:`${R.prefix}${C.id}-`,chain:[...R.chain,{id:Fe.id,title:Re}],locked:()=>R.locked()||ee.node(C.id).readonly,path:`${R.path}${C.name}.`}),Bt=ue.layout;de.replaceWith(yt.grid(Bt.type==="tabs"?[Bt]:Bt.children,1,{columns:1,onPage:!1,labels:ae.labels})),ge.removeAttribute("aria-busy"),p.push(Qe.subscribe(B)),X&&B()},Be;try{Be=Ln(t,C.version===void 0?{id:C.page}:{id:C.page,version:C.version})}catch{Be=null}return Be instanceof Promise?Be.then(Le,()=>Le(null)):Le(Be),ge}return{item:te,grid:j,fieldItem:pe,buttonItem:S,hideWhen:g,slotItem:F}}let{item:Z,grid:ie,fieldItem:J,buttonItem:$,hideWhen:D,slotItem:ne}=K({root:!0,form:h,page:a,prefix:"",chain:[{id:a.id,title:a.title||a.id}],locked:()=>!1,path:""}),Q=t.readonly===!0,se=t.editSwitch?x("button",{type:"button",class:"fd-button fd-edit-switch"}):null;se?.addEventListener("click",async()=>{if(Q)Q=!1;else{if(h.getState().dirty.length&&!await h.save()){h.getState().saveProblem||Ne(U(h.getState())),qe();return}Q=!0}P.toggleAttribute("data-readonly",Q),$t(h.getState())}),P.toggleAttribute("data-readonly",Q),b.push(()=>{se&&(se.textContent=Q?w.edit:w.done,se.classList.toggle("fd-button-primary",Q))});let re=x("div",{class:"fd-status",role:"status","aria-live":"polite"}),le=x("button",{type:"button",class:"fd-button fd-button-link fd-retry",hidden:""},w.retry);le.addEventListener("click",()=>{Se()});let _=x("div",{class:"fd-status-box"},re,le),H=()=>a.data.kind==="responses"?w.notSent:w.notSaved;function U(R){let ee=[...P.querySelectorAll(".fd-field[data-path]")],oe=[];for(let fe of Object.keys(R.errors)){let pe;for(let j=fe;j&&!pe;j=j.slice(0,Math.max(0,j.lastIndexOf("."))))pe=ee.find(W=>W.getAttribute("data-path")===j&&!W.hidden);let g=fe.split(".")[0],S=pe?.querySelector(":scope > .fd-label")?.firstChild?.textContent??a.fields[g]?.label??g,M=pe?.closest(".fd-form-part")?.getAttribute("data-title"),F=M?`${S} (${M})`:S;oe.some(j=>j.name===F)||oe.push({name:F,at:pe?ee.indexOf(pe):1/0})}let he=oe.sort((fe,pe)=>fe.at-pe.at).map(fe=>fe.name);return he.length?L(w.checkFields,{what:H(),fields:he.join(", ")}):H()}let me;b.push(R=>{let ee=R.saveProblem,oe=R.status==="saving"?w.saving:R.status==="saved"?w.saved:R.status==="loading"?w.loading:R.status==="error"&&ee?ee.kind==="fields"?U(R):ee.kind==="other"?ee.message:H():R.status==="error"?R.error??"":"";sa(re,"aria-live",R.status==="error"&&ee?"off":"polite"),hr(re,oe),ht(le,!(R.status==="error"&&ee?.kind==="other")),re.classList.toggle("fd-status-error",R.status==="error"),re.classList.toggle("fd-status-saved",R.status==="saved"),t.saveStatus==="toast"&&(clearTimeout(me),_.hidden=!oe,R.status==="saved"&&(me=setTimeout(()=>_.hidden=!0,2500)))});let xe=x("button",{type:"button",class:"fd-button fd-retry"},w.retry);xe.addEventListener("click",()=>{Se()});let we=x("div",{class:"fd-banner fd-tone-warning",role:"alert",hidden:""},x("span",{class:"fd-banner-text"},w.offline),xe),ce=x("div",{class:"fd-announce",role:"alert","aria-live":"assertive"});function Ne(R){ce.textContent="",setTimeout(()=>ce.textContent=R,0)}let Ke=null;b.push(R=>{R.saveProblem!==Ke&&(Ke=R.saveProblem,we.hidden=Ke?.kind!=="network",Ke&&(Ke.kind==="rule"?on(Ke.message,!1):Ke.kind==="fields"?Ne(U(R)):Ke.kind==="other"&&Ne(Ke.message)))});let Je=x("div",{class:"fd-draft",hidden:""}),De=x("span"),bt=x("button",{type:"button",class:"fd-button fd-button-primary"},w.restore),Vt=x("button",{type:"button",class:"fd-button fd-button-link"},w.discardDraft);bt.addEventListener("click",()=>h.restoreDraft()),Vt.addEventListener("click",()=>h.discardDraft()),Je.append(De,bt,Vt),b.push(R=>{ht(Je,!R.draft),R.draft&&(De.textContent=L(w.draftFound,{time:new Date(R.draft.savedAt).toLocaleString()}))});function qe(){let R=P.querySelector('[aria-invalid="true"]');if(!R)return;for(let oe=R.closest(".fd-section-folded");oe;oe=oe.parentElement?.closest(".fd-section-folded")??null)T.get(oe)?.();if(!R.dispatchEvent(new CustomEvent("fd-focus-problem",{cancelable:!0})))return;(R.matches("input, select, textarea, button")?R:R.querySelector("input, select, textarea, button"))?.focus()}let nt=x("div",{class:"fd-done",hidden:""},x("p",{class:"fd-done-title"},w.submitted)),Ft=x("button",{type:"button",class:"fd-button"},w.submitAnother);nt.append(Ft);let Ie=x("div",{class:"fd-content"});async function Se(){if(!await h.save()){h.getState().saveProblem||Ne(U(h.getState())),qe();return}a.data.kind==="responses"&&(Ie.hidden=!0,nt.hidden=!1)}Ft.addEventListener("click",()=>{h.reset(),Ie.hidden=!1,nt.hidden=!0});function rt(){if(!a.title&&!a.description)return null;let R=x("header",{class:"fd-page-head"});return a.title&&R.append(x("h1",{class:"fd-page-title"},a.title)),a.description&&R.append(x("p",{class:"fd-page-description"},a.description)),R}function it(R){let ee=x("div",{class:"fd-sections","data-node":R.id},...R.children.map(fe=>Z(fe,N(!0)))),oe=x("button",{type:"submit",class:"fd-button fd-button-primary"},a.data.kind==="responses"?w.submit:w.save),he=x("div",{class:"fd-actions fd-actions-end"},_,oe);if(a.data.kind==="record"){let fe=x("button",{type:"button",class:"fd-button"},w.discard);fe.addEventListener("click",()=>h.reset()),he.insertBefore(fe,oe),b.push(pe=>{let g=pe.dirty.length>0&&pe.status!=="saving"&&!Q;ht(oe,!g),ht(fe,!g)})}else b.push(()=>ht(oe,Q));return se&&he.prepend(se),t.showActions===!1?x("div",{},ee):a.actionsPosition==="top"?(he.classList.add("fd-actions-top"),x("div",{},he,ee)):x("div",{},ee,he)}function At(R){let ee=x("div",{class:"fd-wizard","data-node":R.id}),oe=x("div",{class:"fd-progress-text"}),he=x("span");ee.append(x("div",{class:"fd-progress"},oe,x("div",{class:"fd-progress-bar"},he)));let fe=R.clickable?x("ol",{class:"fd-steps-list"}):null,pe=new Map;if(fe){for(let z of R.children){let te=x("button",{type:"button",class:"fd-step-link"},...A(z.icon,z.label));te.addEventListener("click",()=>{h.goTo(z.id)?W():qe()}),pe.set(z.id,te),fe.append(x("li",{},te))}ee.append(x("nav",{class:"fd-steps","aria-label":w.steps},fe))}let g=R.children.map(z=>{let te=x("section",{class:"fd-step","data-node":z.id,"aria-labelledby":E(`${z.id}-title`)});return te.append(x("h2",{class:"fd-step-title",id:E(`${z.id}-title`)},...A(z.icon,z.label))),z.description&&te.append(x("p",{class:"fd-section-description"},z.description)),te.append(ie(z.children,1,N(!1))),ee.append(te),{step:z,panel:te}}),S=x("button",{type:"button",class:"fd-button"},R.backLabel??w.back),M=x("button",{type:"button",class:"fd-button fd-button-link"},w.skip),F=x("button",{type:"submit",class:"fd-button fd-button-primary"});ee.append(x("div",{class:"fd-wizard-nav"},S,x("span",{class:"fd-spacer"}),_,M,F)),S.addEventListener("click",()=>{h.back()&&W()}),M.addEventListener("click",()=>{h.skip()&&W()});let j=()=>{let z=h.steps();return z.indexOf(h.getState().step??"")===z.length-1};Mt=async()=>{if(j())return Se();h.next()?W():qe()};function W(){g.find(te=>te.step.id===h.getState().step)?.panel.querySelector("input, select, textarea, [role=radio]")?.focus()}return b.push(z=>{let te=h.steps(),ye=Math.max(0,te.indexOf(z.step??""));oe.textContent=L(w.stepOf,{n:ye+1,total:te.length}),he.style.width=`${(ye+1)/Math.max(1,te.length)*100}%`;for(let{step:be,panel:C}of g)C.hidden=be.id!==z.step;let Te=ye===te.length-1;S.hidden=ye===0,M.hidden=Te||!R.children.find(be=>be.id===z.step)?.optional,F.textContent=Te?R.finishLabel??w.submit:R.nextLabel??w.next;for(let[be,C]of pe){let ae=te.indexOf(be);C.parentElement.hidden=ae===-1,C.classList.toggle("fd-step-done",ae!==-1&&ae<ye),C.classList.toggle("fd-step-skipped",z.skipped.includes(be)),be===z.step?C.setAttribute("aria-current","step"):C.removeAttribute("aria-current")}}),ee}function Tt(R){let ee=x("div",{class:"fd-sheet-page","data-node":R.id}),oe=x("div",{class:"fd-actions"}),he=x("button",{type:"submit",class:"fd-button fd-button-primary"},w.save),fe=x("button",{type:"button",class:"fd-button"},w.discard);fe.addEventListener("click",()=>h.reset());let pe=a.actionsPosition==="bottom",g=x("div",{class:"fd-actions fd-actions-end fd-sheet-foot"});t.showActions===!1?oe.append(...(R.buttons??[]).map($)):pe?(oe.append(...(R.buttons??[]).map($)),g.append(_,fe,he)):oe.append(he,fe,...(R.buttons??[]).map($),_),se&&t.showActions!==!1&&oe.prepend(se),b.push(W=>{let z=W.dirty.length>0&&W.status!=="saving"&&!Q;he.hidden=!z,fe.hidden=!z});let S=x("div",{class:"fd-header"},oe),M=R.statusbar?.position==="title";R.statusbar&&!M&&S.append(tn(R.statusbar));let F=x("div",{class:"fd-card"});if(R.ribbon){let W=x("div",{class:`fd-ribbon fd-tone-${R.ribbon.tone??"muted"}`,"data-node":R.ribbon.id},R.ribbon.label);D(W,R.ribbon.id),F.append(x("div",{class:"fd-ribbon-frame"},W))}if(R.statButtons?.length){let W=x("div",{class:"fd-stats"});for(let z of R.statButtons){let te=x("span",{class:"fd-stat-value"}),ye=dt(n,z.icon,t.icons),Te=x("span",{class:"fd-stat-words"},te,x("span",{class:"fd-stat-label"},z.label)),be=x("button",{type:"button",class:"fd-stat","data-node":z.id},...ye?[ye,Te]:[Te]);be.addEventListener("click",()=>{G(be,()=>h.runAction(z.id))}),b.push(C=>{be.hidden=h.node(z.id).invisible;let ae=z.field?C.values[z.field]:null;te.textContent=ae==null?"":String(ae)}),W.append(be)}F.append(W)}for(let W of R.alerts??[]){let z=x("div",{class:`fd-alert fd-tone-${W.tone??"info"}`,role:"status","data-node":W.id},x("span",{class:"fd-alert-message"},W.message));if(W.dismissible){let te=!1,ye=x("button",{type:"button",class:"fd-alert-close","aria-label":w.dismiss},"\xD7");ye.addEventListener("click",()=>{te=!0,z.hidden=!0}),z.append(ye),b.push(()=>{z.hidden=te||h.node(W.id).invisible})}else D(z,W.id);F.append(z)}if(R.badges?.length){let W=x("div",{class:"fd-badges"});for(let z of R.badges){let te=x("span",{class:`fd-badge fd-tone-${z.tone??"muted"}`,"data-node":z.id},...A(z.icon,z.label));D(te,z.id),W.append(te)}b.push(()=>{W.hidden=[...W.children].every(z=>z.hidden)}),F.append(W)}if(R.title){let W=x("div",{class:"fd-title"});R.title.above?.length&&W.append(x("div",{class:"fd-title-above"},...R.title.above.map(te=>J(te)))),W.append(J({type:"field",id:"#title",field:R.title.field,placeholder:R.title.placeholder})),R.title.subtitleField&&W.append(J({type:"field",id:"#subtitle",field:R.title.subtitleField})),R.title.below?.length&&W.append(x("div",{class:"fd-title-below"},...R.title.below.map(te=>J(te))));let z=x("div",{class:"fd-title-row"},W);if(R.title.avatarField){let te=J({type:"field",id:"#avatar",field:R.title.avatarField});te.classList.add("fd-avatar"),z.append(te)}F.append(z)}R.statusbar&&M&&F.append(x("div",{class:"fd-title-statusbar"},tn(R.statusbar))),F.append(ie(R.children,1,N(!1))),pe&&t.showActions!==!1&&(F.append(g),b.push(W=>{g.hidden=W.dirty.length===0&&!re.textContent}));let j=x("div",{class:"fd-sheet-layout"},F);return R.sidePanel&&(j.classList.add("fd-has-side"),j.append(x("aside",{class:"fd-side"},ne(R.sidePanel)))),ee.append(S,j),ee}function tn(R){let ee=a.fields[R.field],oe={clickable:R.clickable===!0};R.visibleStates&&(oe.visibleStates=R.visibleStates);let he={type:"field",id:"#statusbar",field:R.field,widget:"statusbar",options:oe},fe=Ze({form:h,name:R.field,field:ee,node:he,id:E("statusbar"),document:n,labels:u,preferences:l,locale:s,dialogs:m},t.widgets);return b.push(pe=>fe.update({value:pe.values[R.field],values:pe.values,readonly:h.node("#statusbar").readonly||Q,required:!1,invalid:!1})),fe.element}let Mt=null,He=a.layout,Nt;if(He.type==="sheet")Nt=Tt(He);else if(He.type==="wizard")Nt=At(He);else if(He.type==="tabs")Nt=it({id:`${He.id}-page`,children:[He]});else if(He.type==="list"){let R=aa({page:a,node:He,form:h,dataSource:t.dataSource,doc:n,el:x,labels:w,locale:s,fill:L,press:G,withIcon:A,uid:E,icons:t.icons,preferences:l,onOpenRecord:t.onOpenRecord});p.push(R.destroy),Nt=R.element}else Nt=it(He);let Rn=He.type==="sheet"?null:rt();Ie.append(...Rn?[Rn]:[],we,Je,Nt),P.append(Ie,nt,ce),t.saveStatus==="toast"?(_.classList.add("fd-toast"),P.append(_)):t.saveStatus==="bar"&&(_.classList.add("fd-status-bar"),Ie.prepend(_)),P.addEventListener("submit",R=>{R.preventDefault(),He.type!=="list"&&(Mt?Mt():Se())});function nn(){let R=n.activeElement;R&&P.contains(R)&&(R.tagName==="INPUT"||R.tagName==="TEXTAREA")&&R.dispatchEvent(new Event("change",{bubbles:!0}))}function rn(R){let ee=[...P.querySelectorAll(".fd-field")].filter(fe=>!fe.closest('[hidden], [data-type="one2many"] .fd-field, .fd-form-dialog')&&!fe.parentElement?.closest('[data-type="one2many"]')),oe=R.closest(".fd-field"),he=ee.slice(ee.indexOf(oe)+1);for(let fe of he){let pe=fe.querySelector('input:not([type="hidden"]):not([readonly]):not([disabled]), select:not([disabled]), textarea:not([readonly]), [contenteditable="true"]');if(pe)return pe}return null}P.addEventListener("keydown",R=>{if(R.isComposing||R.key!=="Enter"||He.type==="list"||R.target.closest(".fd-slot"))return;let ee=t.keys??{};if(R.ctrlKey||R.metaKey){if(ee.saveWithCtrlEnter===!1||t.showActions===!1||R.target.closest(".ag-root-wrapper"))return;R.preventDefault(),nn(),Mt?Mt():Se();return}if(R.defaultPrevented||!ee.enterMovesToNext||R.shiftKey||R.altKey)return;let oe=R.target;oe.tagName!=="INPUT"&&oe.tagName!=="SELECT"||oe.closest('[data-type="one2many"]')||["button","submit","reset","file"].includes(oe.type)||(R.preventDefault(),rn(oe)?.focus())});function on(R,ee=!0){return new Promise(oe=>{let he=x("p",{id:`${v}-confirm`},R),fe=x("button",{type:"button",class:"fd-button"},w.cancel),pe=x("button",{type:"button",class:"fd-button fd-button-primary"},w.ok),g=x("div",{class:"fd-dialog",role:"alertdialog","aria-modal":"true","aria-labelledby":he.id},he,x("div",{class:"fd-actions fd-actions-end"},...ee?[fe,pe]:[pe])),S=x("div",{class:"fd-dialog-backdrop"},g),M=P.ownerDocument,F=M.activeElement,j=W=>{S.remove(),((ye=>!!ye&&ye!==M.body&&ye.isConnected&&!ye.closest("[hidden]"))(F)?F:P.querySelector('button[type="submit"]:not([hidden])'))?.focus(),oe(W)};fe.addEventListener("click",()=>j(!1)),pe.addEventListener("click",()=>j(!0)),S.addEventListener("keydown",W=>{W.stopPropagation(),W.key==="Escape"?(W.preventDefault(),j(!1)):mt(g,W)}),P.append(S),pe.focus()})}function $t(R){for(let ee of b)ee(R)}e.append(P);let lt=h.subscribe($t);return p.push(h.on("run",({result:R})=>{(R.reason==="cannot"||R.reason==="app"&&R.error!==void 0)&&c.say(R.message??"",R.reason==="app"?"danger":"warning")})),$t(h.getState()),X=!0,h.getState().status==="idle"&&h.load(),{form:h,element:P,setSkin(R){P.setAttribute("data-fd-skin",R)},async save(){let R=await h.save();return R||qe(),R},check(){let R=h.validate();return R||qe(),R},setReadonly(R){Q=R,P.toggleAttribute("data-readonly",Q),$t(h.getState())},isReadonly:()=>Q,on:(R,ee)=>{let oe=h.on(R,ee);return p.push(oe),oe},setValues:R=>h.setValues(R),run:(R,ee)=>h.run(R,ee),destroy(){I=!0,lt();for(let R of p)R();P.remove(),f&&h.dispose()}}}var ca='input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]), textarea',hd=new Set(["boolean","one2many","binary","image","html","json","properties"]);function br(e,t){Ge[e]={...Ge.en,...t.messages},Pe[e]={...Pe.en,...t.widgets},tt[e]={...tt.en,...t.viewer}}var bd="0.11.0",fa=globalThis;for(let[e,t]of fa.FieldiaLanguages??[])br(e,t);delete fa.FieldiaLanguages;return va(yd);})();
5
5
  //# sourceMappingURL=fieldia.js.map