@mmlogic/components 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/cjs/{cell-renderer-CmaO0CZT.js → cell-renderer-7KX9Qbml.js} +122 -1
  2. package/dist/cjs/{client-layout-RZ3Ix-4a.js → client-layout-CqVuJumR.js} +9 -0
  3. package/dist/cjs/{index-DzRfoAPz.js → index-DVbdkYO3.js} +468 -6
  4. package/dist/cjs/index.cjs.js +4 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/mosterdcomponents.cjs.js +2 -2
  7. package/dist/cjs/{mrd-boolean-field_23.cjs.entry.js → mrd-boolean-field_25.cjs.entry.js} +5618 -5225
  8. package/dist/cjs/mrd-merge-view.cjs.entry.js +5 -5
  9. package/dist/collection/collection-manifest.json +2 -0
  10. package/dist/collection/components/documents/mrd-document-view/mrd-document-view.js +7 -8
  11. package/dist/collection/components/email/mrd-email-view/mrd-email-view.css +126 -0
  12. package/dist/collection/components/email/mrd-email-view/mrd-email-view.js +247 -0
  13. package/dist/collection/components/fields/file-upload-common.js +23 -7
  14. package/dist/collection/components/fields/mrd-boolean-field/mrd-boolean-field.js +1 -1
  15. package/dist/collection/components/fields/mrd-currency-field/mrd-currency-field.js +1 -1
  16. package/dist/collection/components/fields/mrd-date-field/mrd-date-field.js +1 -1
  17. package/dist/collection/components/fields/mrd-datetime-field/mrd-datetime-field.js +1 -1
  18. package/dist/collection/components/fields/mrd-email-field/mrd-email-field.js +1 -1
  19. package/dist/collection/components/fields/mrd-file-field/mrd-file-field.css +20 -1
  20. package/dist/collection/components/fields/mrd-file-field/mrd-file-field.js +108 -47
  21. package/dist/collection/components/fields/mrd-image-field/mrd-image-field.css +44 -0
  22. package/dist/collection/components/fields/mrd-image-field/mrd-image-field.js +126 -58
  23. package/dist/collection/components/fields/mrd-longtext-field/mrd-longtext-field.js +1 -1
  24. package/dist/collection/components/fields/mrd-number-field/mrd-number-field.js +1 -1
  25. package/dist/collection/components/fields/mrd-secret-field/mrd-secret-field.js +2 -2
  26. package/dist/collection/components/fields/mrd-text-field/mrd-text-field.js +1 -1
  27. package/dist/collection/components/fields/mrd-textarea-field/mrd-textarea-field.js +1 -1
  28. package/dist/collection/components/fields/mrd-time-field/mrd-time-field.js +1 -1
  29. package/dist/collection/components/form/mrd-field/mrd-field.js +5 -5
  30. package/dist/collection/components/form/mrd-form/mrd-form.js +55 -6
  31. package/dist/collection/components/invoice/mrd-invoice-view/mrd-invoice-view.css +145 -0
  32. package/dist/collection/components/invoice/mrd-invoice-view/mrd-invoice-view.js +281 -0
  33. package/dist/collection/components/layout/mrd-layout-section/field-value.js +5 -1
  34. package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.css +10 -0
  35. package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.js +38 -8
  36. package/dist/collection/components/merge/mrd-merge-view/mrd-merge-view.js +2 -2
  37. package/dist/collection/dev/api.js +20 -5
  38. package/dist/collection/dev/app.js +51 -13
  39. package/dist/collection/dev/example-data.js +126 -2
  40. package/dist/collection/types/client-layout.js +6 -0
  41. package/dist/collection/utils/document-attachments.js +27 -14
  42. package/dist/collection/utils/i18n.js +120 -0
  43. package/dist/components/cell-renderer.js +1 -1
  44. package/dist/components/client-layout.js +1 -1
  45. package/dist/components/document-attachments.js +1 -1
  46. package/dist/components/file-upload-common.js +1 -1
  47. package/dist/components/format.js +1 -1
  48. package/dist/components/i18n.js +1 -1
  49. package/dist/components/index.js +1 -1
  50. package/dist/components/mrd-boolean-field2.js +1 -1
  51. package/dist/components/mrd-currency-field2.js +1 -1
  52. package/dist/components/mrd-date-field2.js +1 -1
  53. package/dist/components/mrd-datetime-field2.js +1 -1
  54. package/dist/components/mrd-document-view2.js +1 -1
  55. package/dist/components/mrd-email-field2.js +1 -1
  56. package/dist/components/mrd-email-view.d.ts +11 -0
  57. package/dist/components/mrd-email-view.js +1 -0
  58. package/dist/components/mrd-email-view2.js +1 -0
  59. package/dist/components/mrd-field2.js +1 -1
  60. package/dist/components/mrd-file-field2.js +1 -1
  61. package/dist/components/mrd-form.js +1 -1
  62. package/dist/components/mrd-image-field2.js +1 -1
  63. package/dist/components/mrd-invoice-view.d.ts +11 -0
  64. package/dist/components/mrd-invoice-view.js +1 -0
  65. package/dist/components/mrd-invoice-view2.js +1 -0
  66. package/dist/components/mrd-layout-section.js +1 -1
  67. package/dist/components/mrd-longtext-field2.js +1 -1
  68. package/dist/components/mrd-merge-view.js +1 -1
  69. package/dist/components/mrd-number-field2.js +1 -1
  70. package/dist/components/mrd-secret-field2.js +1 -1
  71. package/dist/components/mrd-table2.js +1 -1
  72. package/dist/components/mrd-text-field2.js +1 -1
  73. package/dist/components/mrd-textarea-field2.js +1 -2
  74. package/dist/components/mrd-time-field2.js +1 -1
  75. package/dist/components/purify.es.js +2 -0
  76. package/dist/esm/{cell-renderer-D63AUZxa.js → cell-renderer-DIsNX9D7.js} +122 -2
  77. package/dist/esm/{client-layout-DCOAAH92.js → client-layout-Bc42CfJB.js} +7 -1
  78. package/dist/esm/{index-DiSe6vjv.js → index-CDiBvvJU.js} +468 -6
  79. package/dist/esm/index.js +1 -1
  80. package/dist/esm/loader.js +3 -3
  81. package/dist/esm/mosterdcomponents.js +3 -3
  82. package/dist/esm/{mrd-boolean-field_23.entry.js → mrd-boolean-field_25.entry.js} +5617 -5226
  83. package/dist/esm/mrd-merge-view.entry.js +5 -5
  84. package/dist/mosterdcomponents/index.esm.js +1 -1
  85. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
  86. package/dist/mosterdcomponents/{p-2e16a7d0.entry.js → p-4e061416.entry.js} +1 -1
  87. package/dist/mosterdcomponents/p-910ebfee.entry.js +3 -0
  88. package/dist/mosterdcomponents/{p-DCOAAH92.js → p-Bc42CfJB.js} +1 -1
  89. package/dist/mosterdcomponents/p-CDiBvvJU.js +2 -0
  90. package/dist/mosterdcomponents/p-Ce2QDq0t.js +1 -0
  91. package/dist/types/components/documents/mrd-document-view/mrd-document-view.d.ts +2 -2
  92. package/dist/types/components/email/mrd-email-view/mrd-email-view.d.ts +52 -0
  93. package/dist/types/components/fields/file-upload-common.d.ts +19 -1
  94. package/dist/types/components/fields/mrd-file-field/mrd-file-field.d.ts +24 -10
  95. package/dist/types/components/fields/mrd-image-field/mrd-image-field.d.ts +27 -11
  96. package/dist/types/components/form/mrd-form/mrd-form.d.ts +16 -1
  97. package/dist/types/components/invoice/mrd-invoice-view/mrd-invoice-view.d.ts +60 -0
  98. package/dist/types/components/layout/mrd-layout-section/mrd-layout-section.d.ts +13 -0
  99. package/dist/types/components.d.ts +294 -19
  100. package/dist/types/types/client-layout.d.ts +6 -0
  101. package/dist/types/utils/document-attachments.d.ts +12 -5
  102. package/package.json +1 -1
  103. package/dist/mosterdcomponents/p-CnqDM0Gb.js +0 -1
  104. package/dist/mosterdcomponents/p-DiSe6vjv.js +0 -2
  105. package/dist/mosterdcomponents/p-b5f38707.entry.js +0 -3
@@ -1 +1 @@
1
- var E,A,T,O,R,n;!function(E){E.OBJECT_FORM_DASHBOARD="OBJECT_FORM_DASHBOARD",E.CLASS_DASHBOARD="CLASS_DASHBOARD",E.GENERAL_DASHBOARD="GENERAL_DASHBOARD",E.NAVIGATION_PANE="NAVIGATION_PANE"}(E||(E={})),function(E){E.FIELD="FIELD",E.RELATION="RELATION",E.SECTION="SECTION",E.GROUP="GROUP",E.HEADER="HEADER",E.TEXT="TEXT",E.NAVIGATE="NAVIGATE",E.ACTION="ACTION",E.SEARCH="SEARCH",E.VIEW="VIEW",E.RELATED_VIEW="RELATED_VIEW",E.RELATED_OBJECT="RELATED_OBJECT"}(A||(A={})),function(E){E.TEXT="TEXT",E.TEXTBLOCK="TEXTBLOCK",E.INTEGER="INTEGER",E.DECIMAL="DECIMAL",E.PERCENTAGE="PERCENTAGE",E.CURRENCY="CURRENCY",E.BOOLEAN="BOOLEAN",E.DATE="DATE",E.DATETIME="DATETIME",E.TIME="TIME",E.EMAIL="EMAIL",E.HYPERLINK="HYPERLINK",E.LIST="LIST",E.FILE="FILE",E.IMAGE="IMAGE",E.LONGTEXT="LONGTEXT",E.JSON="JSON",E.SECRET="SECRET"}(T||(T={})),function(E){E.SEARCH="SEARCH",E.DROPDOWN="DROPDOWN",E.CHECKBOX="CHECKBOX"}(O||(O={})),function(E){E.SEARCH="SEARCH",E.DROPDOWN="DROPDOWN",E.CHECKBOX="CHECKBOX"}(R||(R={})),function(E){E.PAGE="PAGE",E.OVERLAY_PAGE="OVERLAY_PAGE"}(n||(n={}));const C="commons.document";function I(E,A){return(null!=E?E:[]).find((E=>E.archetype===A))}export{C as A,E as C,A as a,T as b,O as c,R as d,n as e,I as r}
1
+ var E,A,n,T,O,R;!function(E){E.OBJECT_FORM_DASHBOARD="OBJECT_FORM_DASHBOARD",E.CLASS_DASHBOARD="CLASS_DASHBOARD",E.GENERAL_DASHBOARD="GENERAL_DASHBOARD",E.NAVIGATION_PANE="NAVIGATION_PANE"}(E||(E={})),function(E){E.FIELD="FIELD",E.RELATION="RELATION",E.SECTION="SECTION",E.GROUP="GROUP",E.HEADER="HEADER",E.TEXT="TEXT",E.NAVIGATE="NAVIGATE",E.ACTION="ACTION",E.SEARCH="SEARCH",E.VIEW="VIEW",E.RELATED_VIEW="RELATED_VIEW",E.RELATED_OBJECT="RELATED_OBJECT"}(A||(A={})),function(E){E.TEXT="TEXT",E.TEXTBLOCK="TEXTBLOCK",E.INTEGER="INTEGER",E.DECIMAL="DECIMAL",E.PERCENTAGE="PERCENTAGE",E.CURRENCY="CURRENCY",E.BOOLEAN="BOOLEAN",E.DATE="DATE",E.DATETIME="DATETIME",E.TIME="TIME",E.EMAIL="EMAIL",E.HYPERLINK="HYPERLINK",E.LIST="LIST",E.FILE="FILE",E.IMAGE="IMAGE",E.LONGTEXT="LONGTEXT",E.JSON="JSON",E.SECRET="SECRET"}(n||(n={})),function(E){E.SEARCH="SEARCH",E.DROPDOWN="DROPDOWN",E.CHECKBOX="CHECKBOX"}(T||(T={})),function(E){E.SEARCH="SEARCH",E.DROPDOWN="DROPDOWN",E.CHECKBOX="CHECKBOX"}(O||(O={})),function(E){E.PAGE="PAGE",E.OVERLAY_PAGE="OVERLAY_PAGE"}(R||(R={}));const o="commons.document",C="commons.invoice",I="commons.email",D="commons.invoiceLine";function N(E,A){return(null!=E?E:[]).find((E=>E.archetype===A))}export{o as A,E as C,A as a,n as b,T as c,O as d,R as e,C as f,I as g,D as h,N as r}
@@ -0,0 +1,2 @@
1
+ function t(t,n,e){const o="undefined"!=typeof HTMLElement?HTMLElement.prototype:null;for(;t&&t!==o;){const o=Object.getOwnPropertyDescriptor(t,n);if(o&&(!e||o.get))return o;t=Object.getPrototypeOf(t)}}var n=(n,e)=>{var o;Object.entries(null!=(o=e.o.t)?o:{}).map((([o,[l]])=>{if(31&l||32&l){const l=n[o],s=t(Object.getPrototypeOf(n),o,!0)||Object.getOwnPropertyDescriptor(n,o);s&&Object.defineProperty(n,o,{get(){return s.get.call(this)},set(t){s.set.call(this,t)},configurable:!0,enumerable:!0}),e.l.has(o)?n[o]=e.l.get(o):void 0!==l&&(n[o]=l)}}))},e=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},o=(t,e)=>{e&&(t.__stencil__getHostRef=()=>e,e.i=t,512&e.o.u&&n(t,e))},l=(t,n)=>n in t,s=(t,n)=>(0,console.error)(t,n),i=new Map,r=new Map,c="slot-fb{display:contents}slot-fb[hidden]{display:none}",u="http://www.w3.org/1999/xlink",f="undefined"!=typeof window?window:{},a={u:0,p:"",jmp:t=>t(),raf:t=>requestAnimationFrame(t),ael:(t,n,e,o)=>t.addEventListener(n,e,o),rel:(t,n,e,o)=>t.removeEventListener(n,e,o),ce:(t,n)=>new CustomEvent(t,n)},d=t=>Promise.resolve(t),p=(()=>{try{return!!f.document.adoptedStyleSheets&&(new CSSStyleSheet,"function"==typeof(new CSSStyleSheet).replaceSync)}catch(t){}return!1})(),v=!!p&&(()=>!!f.document&&Object.getOwnPropertyDescriptor(f.document.adoptedStyleSheets,"length").writable)(),h=!1,m=[],y=[],b=(t,n)=>e=>{t.push(e),h||(h=!0,n&&4&a.u?g(w):a.raf(w))},$=t=>{for(let n=0;n<t.length;n++)try{t[n](performance.now())}catch(t){s(t)}t.length=0},w=()=>{$(m),$(y),(h=m.length>0)&&a.raf(w)},g=t=>d().then(t),j=b(y,!0),O=t=>{const n=C(t,"childNodes");t.tagName&&t.tagName.includes("-")&&t["s-cr"]&&"SLOT-FB"!==t.tagName&&S(n,t.tagName).forEach((t=>{1===t.nodeType&&"SLOT-FB"===t.tagName&&(t.hidden=!!k(t,E(t),!1).length)}));let e=0;for(e=0;e<n.length;e++){const t=n[e];1===t.nodeType&&C(t,"childNodes").length&&O(t)}};function S(t,n,e){let o,l=0,s=[];for(;l<t.length;l++){if(o=t[l],o["s-sr"]&&(!n||o["s-hn"]===n)&&(void 0===e||E(o)===e)&&(s.push(o),void 0!==e))return s;s=[...s,...S(o.childNodes,n,e)]}return s}var k=(t,n,e=!0)=>{const o=[];(e&&t["s-sr"]||!t["s-sr"])&&o.push(t);let l=t;for(;l=l.nextSibling;)E(l)!==n||!e&&l["s-sr"]||o.push(l);return o},N=(t,n)=>1===t.nodeType?null===t.getAttribute("slot")&&""===n||t.getAttribute("slot")===n:t["s-sn"]===n||""===n,E=t=>"string"==typeof t["s-sn"]?t["s-sn"]:1===t.nodeType&&t.getAttribute("slot")||void 0;function C(t,n){if("__"+n in t){const e=t["__"+n];return"function"!=typeof e?e:e.bind(t)}return"function"!=typeof t[n]?t[n]:t[n].bind(t)}function M(t){var n,e,o;return null!=(o=null==(e=null==(n=t.head)?void 0:n.querySelector('meta[name="csp-nonce"]'))?void 0:e.getAttribute("content"))?o:void 0}var T,x,L,R=new WeakMap,A=t=>"sc-"+t.v,F=t=>"object"==(t=typeof t)||"function"===t,P=(t,n,...e)=>{let o=null,l=null,s=null,i=!1,r=!1;const c=[],u=n=>{for(let e=0;e<n.length;e++)o=n[e],Array.isArray(o)?u(o):null!=o&&"boolean"!=typeof o&&((i="function"!=typeof t&&!F(o))&&(o+=""),i&&r?c[c.length-1].h+=o:c.push(i?D(null,o):o),r=i)};if(u(e),n){n.key&&(l=n.key),n.name&&(s=n.name);{const t=n.className||n.class;t&&(n.class="object"!=typeof t?t:Object.keys(t).filter((n=>t[n])).join(" "))}}if("function"==typeof t)return t(null===n?{}:n,c,_);const f=D(t,null);return f.m=n,c.length>0&&(f.$=c),f.j=l,f.O=s,f},D=(t,n)=>({u:0,S:t,h:null!=n?n:null,k:null,$:null,m:null,j:null,O:null}),H={},_={forEach:(t,n)=>t.map(U).forEach(n),map:(t,n)=>t.map(U).map(n).map(W)},U=t=>({vattrs:t.m,vchildren:t.$,vkey:t.j,vname:t.O,vtag:t.S,vtext:t.h}),W=t=>{if("function"==typeof t.vtag){const n={...t.vattrs};return t.vkey&&(n.key=t.vkey),t.vname&&(n.name=t.vname),P(t.vtag,n,...t.vchildren||[])}const n=D(t.vtag,t.vtext);return n.m=t.vattrs,n.$=t.vchildren,n.j=t.vkey,n.O=t.vname,n},z=t=>{if(!t)return;const n=Object.keys(t);if(0===n.length)return;let e=!1;for(const o of n){if(e)break;for(const n of t[o])if("string"==typeof n){e=!0;break}}if(!e)return t;const o={};for(const e of n)o[e]=t[e].map((t=>"string"==typeof t?{[t]:0}:t));return o},B=(t,n)=>null==t||F(t)?t:4&n?"false"!==t&&(""===t||!!t):2&n?"string"==typeof t?parseFloat(t):"number"==typeof t?t:NaN:1&n?t+"":t,V=t=>{var n;return null==(n=e(t))?void 0:n.$hostElement$},q=(t,n)=>{const e=V(t);return{emit:t=>Y(e,n,{bubbles:!0,composed:!0,cancelable:!0,detail:t})}},Y=(t,n,e)=>{const o=a.ce(n,e);return t.dispatchEvent(o),o},G=(t,n,o,s,i,r)=>{if(o===s)return;let c=l(t,n),d=n.toLowerCase();if("class"===n){const n=t.classList,e=Z(o);let l=Z(s);n.remove(...e.filter((t=>t&&!l.includes(t)))),n.add(...l.filter((t=>t&&!e.includes(t))))}else if("style"===n){for(const n in o)s&&null!=s[n]||(n.includes("-")?t.style.removeProperty(n):t.style[n]="");for(const n in s)o&&s[n]===o[n]||(n.includes("-")?t.style.setProperty(n,s[n]):t.style[n]=s[n])}else if("key"===n);else if("ref"===n)s&&yt(s,t);else if(c||"o"!==n[0]||"n"!==n[1]){if("a"===n[0]&&n.startsWith("attr:")){const o=n.slice(5);let l;{const n=e(t);if(n&&n.o&&n.o.t){const t=n.o.t[o];t&&t[1]&&(l=t[1])}}return l||(l=o.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),void(null==s||!1===s?!1===s&&""!==t.getAttribute(l)||t.removeAttribute(l):t.setAttribute(l,!0===s?"":s))}if("p"===n[0]&&n.startsWith("prop:")){const e=n.slice(5);try{t[e]=s}catch(t){}return}{const e=F(s);if((c||e&&null!==s)&&!i)try{if(t.tagName.includes("-"))t[n]!==s&&(t[n]=s);else{const e=null==s?"":s;"list"===n?c=!1:null!=o&&t[n]===e||("function"==typeof t.__lookupSetter__(n)?t[n]=e:t.setAttribute(n,e))}}catch(t){}let l=!1;d!==(d=d.replace(/^xlink\:?/,""))&&(n=d,l=!0),null==s||!1===s?!1===s&&""!==t.getAttribute(n)||(l?t.removeAttributeNS(u,n):t.removeAttribute(n)):(!c||4&r||i)&&!e&&1===t.nodeType&&(s=!0===s?"":s,l?t.setAttributeNS(u,n,s):t.setAttribute(n,s))}}else if(n="-"===n[2]?n.slice(3):l(f,d)?d.slice(2):d[2]+n.slice(3),o||s){const e=n.endsWith(J);n=n.replace(K,""),o&&a.rel(t,n,o,e),s&&a.ael(t,n,s,e)}},I=/\s/,Z=t=>("object"==typeof t&&t&&"baseVal"in t&&(t=t.baseVal),t&&"string"==typeof t?t.split(I):[]),J="Capture",K=RegExp(J+"$"),Q=(t,n,e)=>{const o=11===n.k.nodeType&&n.k.host?n.k.host:n.k,l=t&&t.m||{},s=n.m||{};for(const t of X(Object.keys(l)))t in s||G(o,t,l[t],void 0,e,n.u);for(const t of X(Object.keys(s)))G(o,t,l[t],s[t],e,n.u)};function X(t){return t.includes("ref")?[...t.filter((t=>"ref"!==t)),"ref"]:t}var tt=!1,nt=!1,et=!1,ot=!1,lt=[],st=[],it=(t,n,e)=>{var o;const l=n.$[e];let s,i,r,c=0;if(tt||(et=!0,"slot"===l.S&&(l.u|=l.$?2:1)),null!=l.h)s=l.k=f.document.createTextNode(l.h);else if(1&l.u)s=l.k=f.document.createTextNode(""),Q(null,l,ot);else{if(ot||(ot="svg"===l.S),!f.document)throw Error("You are trying to render a Stencil component in an environment that doesn't support the DOM.");if(s=l.k=f.document.createElementNS(ot?"http://www.w3.org/2000/svg":"http://www.w3.org/1999/xhtml",!tt&&2&l.u?"slot-fb":l.S),ot&&"foreignObject"===l.S&&(ot=!1),Q(null,l,ot),null!=T&&void 0!==T&&s["s-si"]!==T&&s.classList.add(s["s-si"]=T),l.$){const n="template"===l.S?s.content:s;for(c=0;c<l.$.length;++c)i=it(t,l,c),i&&n.appendChild(i)}"svg"===l.S?ot=!1:"foreignObject"===s.tagName&&(ot=!0)}return s["s-hn"]=L,3&l.u&&(s["s-sr"]=!0,s["s-cr"]=x,s["s-sn"]=l.O||"",s["s-rf"]=null==(o=l.m)?void 0:o.ref,function(t){if(t.assignedElements||t.assignedNodes||!t["s-sr"])return;const n=n=>function(t){const e=[],o=this["s-sn"];(null==t?void 0:t.flatten)&&console.error("\n Flattening is not supported for Stencil non-shadow slots.\n You can use `.childNodes` to nested slot fallback content.\n If you have a particular use case, please open an issue on the Stencil repo.\n ");const l=this["s-cr"].parentElement;return(l.__childNodes?l.childNodes:(t=>{const n=[];for(let e=0;e<t.length;e++){const o=t[e]["s-nr"]||void 0;o&&o.isConnected&&n.push(o)}return n})(l.childNodes)).forEach((t=>{o===E(t)&&e.push(t)})),n?e.filter((t=>1===t.nodeType)):e}.bind(t);t.assignedElements=n(!0),t.assignedNodes=n(!1)}(s),r=t&&t.$&&t.$[e],r&&r.S===l.S&&t.k&&rt(t.k),$t(x,s,n.k,null==t?void 0:t.k)),s},rt=t=>{a.u|=1;const n=t.closest(L.toLowerCase());if(null!=n){const e=Array.from(n.__childNodes||n.childNodes).find((t=>t["s-cr"])),o=Array.from(t.__childNodes||t.childNodes);for(const t of e?o.reverse():o)null!=t["s-sh"]&&(bt(n,t,null!=e?e:null),t["s-sh"]=void 0,et=!0)}a.u&=-2},ct=(t,n)=>{a.u|=1;const e=Array.from(t.__childNodes||t.childNodes);if(t["s-sr"]){let n=t;for(;n=n.nextSibling;)n&&n["s-sn"]===t["s-sn"]&&n["s-sh"]===L&&e.push(n)}for(let t=e.length-1;t>=0;t--){const o=e[t];o["s-hn"]!==L&&o["s-ol"]&&(bt(dt(o).parentNode,o,dt(o)),o["s-ol"].remove(),o["s-ol"]=void 0,o["s-sh"]=void 0,et=!0),n&&ct(o,n)}a.u&=-2},ut=(t,n,e,o,l,s)=>{let i,r=t["s-cr"]&&t["s-cr"].parentNode||t;for("template"===e.S&&(r=r.content);l<=s;++l)o[l]&&(i=it(null,e,l),i&&(o[l].k=i,bt(r,i,dt(n))))},ft=(t,n,e)=>{for(let o=n;o<=e;++o){const n=t[o];if(n){const t=n.k;mt(n),t&&(nt=!0,t["s-ol"]?t["s-ol"].remove():ct(t,!0),t.remove())}}},at=(t,n,e=!1)=>t.S===n.S&&("slot"===t.S?t.O===n.O:e?(e&&!t.j&&n.j&&(t.j=n.j),!0):t.j===n.j),dt=t=>t&&t["s-ol"]||t,pt=(t,n,e=!1)=>{const o=n.k=t.k,l=t.$,s=n.$,i=n.S,r=n.h;let c;null==r?(ot="svg"===i||"foreignObject"!==i&&ot,"slot"!==i||tt||t.O!==n.O&&(n.k["s-sn"]=n.O||"",rt(n.k.parentElement)),Q(t,n,ot),null!==l&&null!==s?((t,n,e,o,l=!1)=>{let s,i,r=0,c=0,u=0,f=0,a=n.length-1,d=n[0],p=n[a],v=o.length-1,h=o[0],m=o[v];const y="template"===e.S?t.content:t;for(;r<=a&&c<=v;)if(null==d)d=n[++r];else if(null==p)p=n[--a];else if(null==h)h=o[++c];else if(null==m)m=o[--v];else if(at(d,h,l))pt(d,h,l),d=n[++r],h=o[++c];else if(at(p,m,l))pt(p,m,l),p=n[--a],m=o[--v];else if(at(d,m,l))"slot"!==d.S&&"slot"!==m.S||ct(d.k.parentNode,!1),pt(d,m,l),bt(y,d.k,p.k.nextSibling),d=n[++r],m=o[--v];else if(at(p,h,l))"slot"!==d.S&&"slot"!==m.S||ct(p.k.parentNode,!1),pt(p,h,l),bt(y,p.k,d.k),p=n[--a],h=o[++c];else{for(u=-1,f=r;f<=a;++f)if(n[f]&&null!==n[f].j&&n[f].j===h.j){u=f;break}u>=0?(i=n[u],i.S!==h.S?s=it(n&&n[c],e,u):(pt(i,h,l),n[u]=void 0,s=i.k),h=o[++c]):(s=it(n&&n[c],e,c),h=o[++c]),s&&bt(dt(d.k).parentNode,s,dt(d.k))}r>a?ut(t,null==o[v+1]?null:o[v+1].k,e,o,c,v):c>v&&ft(n,r,a)})(o,l,n,s,e):null!==s?(null!==t.h&&(o.textContent=""),ut(o,null,n,s,0,s.length-1)):!e&&null!==l&&ft(l,0,l.length-1),ot&&"svg"===i&&(ot=!1)):(c=o["s-cr"])?c.parentNode.textContent=r:t.h!==r&&(o.data=r)},vt=[],ht=t=>{let n,e,o;const l=t.__childNodes||t.childNodes;for(const t of l){if(t["s-sr"]&&(n=t["s-cr"])&&n.parentNode){e=n.parentNode.__childNodes||n.parentNode.childNodes;const l=t["s-sn"];for(o=e.length-1;o>=0;o--)if(n=e[o],!(n["s-cn"]||n["s-nr"]||n["s-hn"]===t["s-hn"]||n["s-sh"]&&n["s-sh"]===t["s-hn"]))if(N(n,l)){let e=vt.find((t=>t.N===n));nt=!0,n["s-sn"]=n["s-sn"]||l,e?(e.N["s-sh"]=t["s-hn"],e.C=t):(n["s-sh"]=t["s-hn"],vt.push({C:t,N:n})),n["s-sr"]&&vt.map((t=>{N(t.N,n["s-sn"])&&(e=vt.find((t=>t.N===n)),e&&!t.C&&(t.C=e.C))}))}else vt.some((t=>t.N===n))||vt.push({N:n})}1===t.nodeType&&ht(t)}},mt=t=>{t.m&&t.m.ref&&lt.push((()=>t.m.ref(null))),t.$&&t.$.map(mt)},yt=(t,n)=>{st.push((()=>t(n)))},bt=(t,n,e,o)=>{if("string"==typeof n["s-sn"]&&n["s-sr"]&&n["s-cr"])$t(n["s-cr"],n,t,n.parentElement);else if("string"==typeof n["s-sn"]){t.insertBefore(n,e);const{slotNode:l}=function(t,n){var e;if(!(n=n||(null==(e=t["s-ol"])?void 0:e.parentElement)))return{slotNode:null,slotName:""};const o=t["s-sn"]=E(t)||"";return{slotNode:S(C(n,"childNodes"),n.tagName,o)[0],slotName:o}}(n);return l&&!o&&function(t){t.dispatchEvent(new CustomEvent("slotchange",{bubbles:!1,cancelable:!1,composed:!1}))}(l),n}return t.__insertBefore?t.__insertBefore(n,e):null==t?void 0:t.insertBefore(n,e)};function $t(t,n,e,o){var l,s;let i;if(t&&"string"==typeof n["s-sn"]&&n["s-sr"]&&t.parentNode&&t.parentNode["s-sc"]&&(i=n["s-si"]||t.parentNode["s-sc"])){const t=n["s-sn"],r=n["s-hn"];if(null==(l=e.classList)||l.add(i+"-s"),o&&(null==(s=o.classList)?void 0:s.contains(i+"-s"))){let n=(o.__childNodes||o.childNodes)[0],e=!1;for(;n;){if(n["s-sn"]!==t&&n["s-hn"]===r&&n["s-sr"]){e=!0;break}n=n.nextSibling}e||o.classList.remove(i+"-s")}}}var wt=(t,n)=>{if(n&&!t.M&&n["s-p"]){const e=n["s-p"].push(new Promise((o=>t.M=()=>{n["s-p"].splice(e-1,1),o()})))}},gt=(t,n)=>{if(t.u|=16,4&t.u)return void(t.u|=512);wt(t,t.T);const e=()=>jt(t,n);if(!n)return j(e);queueMicrotask((()=>{e()}))},jt=(t,n)=>{const e=t.$hostElement$,o=t.i;if(!o)throw Error(`Can't render component <${e.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`);let l;return n?(t.L&&(t.L=!1,Mt(o,"connectedCallback",void 0,e)),t.R.length&&t.R.forEach((t=>t(e))),l=Mt(o,"componentWillLoad",void 0,e)):l=Mt(o,"componentWillUpdate",void 0,e),l=Ot(l,(()=>Mt(o,"componentWillRender",void 0,e))),Ot(l,(()=>kt(t,o,n)))},Ot=(t,n)=>St(t)?t.then(n).catch((t=>{console.error(t),n()})):n(),St=t=>t instanceof Promise||t&&t.then&&"function"==typeof t.then,kt=async(t,n,e)=>{var o;const l=t.$hostElement$,s=l["s-rc"];e&&(t=>{const n=t.o,e=t.$hostElement$,o=n.u,l=((t,n)=>{var e,o,l;const s=A(n),i=r.get(s);if(!f.document)return s;if(t=11===t.nodeType?t:f.document,i)if("string"==typeof i){let l,r=R.get(t=t.head||t);if(r||R.set(t,r=new Set),!r.has(s)){l=f.document.createElement("style"),l.textContent=i;const u=null!=(e=a.A)?e:M(f.document);if(null!=u&&l.setAttribute("nonce",u),!(1&n.u))if("HEAD"===t.nodeName){const n=t.querySelectorAll("link[rel=preconnect]"),e=n.length>0?n[n.length-1].nextSibling:t.querySelector("style");t.insertBefore(l,(null==e?void 0:e.parentNode)===t?e:null)}else if("host"in t)if(p){const n=new(null!=(o=t.defaultView)?o:t.ownerDocument.defaultView).CSSStyleSheet;n.replaceSync(i),v?t.adoptedStyleSheets.unshift(n):t.adoptedStyleSheets=[n,...t.adoptedStyleSheets]}else{const n=t.querySelector("style");n?n.textContent=i+n.textContent:t.prepend(l)}else t.append(l);1&n.u&&t.insertBefore(l,null),4&n.u&&(l.textContent+=c),r&&r.add(s)}}else{let n=R.get(t);if(n||R.set(t,n=new Set),!n.has(s)){const e=null!=(l=t.defaultView)?l:t.ownerDocument.defaultView;let o;if(i.constructor===e.CSSStyleSheet)o=i;else{o=new e.CSSStyleSheet;for(let t=0;t<i.cssRules.length;t++)o.insertRule(i.cssRules[t].cssText,t)}v?t.adoptedStyleSheets.push(o):t.adoptedStyleSheets=[...t.adoptedStyleSheets,o],n.add(s)}}return s})(e.getRootNode(),n);10&o&&(e["s-sc"]=l,e.classList.add(l+"-h"))})(t);Nt(t,n,l,e),s&&(s.map((t=>t())),l["s-rc"]=void 0);{const n=null!=(o=l["s-p"])?o:[],e=()=>Et(t);0===n.length?e():(Promise.all(n).then(e).catch(e),t.u|=4,n.length=0)}},Nt=(t,n,e,o)=>{try{n=n.render(),t.u&=-17,t.u|=2,((t,n,e=!1)=>{var o,l,s,i,r;const c=t.$hostElement$,u=t.o,d=t.F||D(null,null),p=(t=>t&&t.S===H)(n)?n:P(null,null,n);if(L=c.tagName,e&&p.m)for(const t of Object.keys(p.m))c.hasAttribute(t)&&!["key","ref","style","class"].includes(t)&&(p.m[t]=c[t]);if(p.S=null,p.u|=4,t.F=p,p.k=d.k=c,T=c["s-sc"],tt=!1,x=c["s-cr"],nt=!1,pt(d,p,e),a.u|=1,et){ht(p.k);for(const t of vt){const n=t.N;if(!n["s-ol"]&&f.document){const t=f.document.createTextNode("");t["s-nr"]=n,bt(n.parentNode,n["s-ol"]=t,n,e)}}for(const t of vt){const n=t.N,r=t.C;if(1===n.nodeType&&e&&(n["s-ih"]=null!=(o=n.hidden)&&o),r){const t=r.parentNode;let o=r.nextSibling;if(o&&1===o.nodeType){let e=null==(l=n["s-ol"])?void 0:l.previousSibling;for(;e;){let l=null!=(s=e["s-nr"])?s:null;if(l&&l["s-sn"]===n["s-sn"]&&t===(l.__parentNode||l.parentNode)){for(l=l.nextSibling;l===n||(null==l?void 0:l["s-sr"]);)l=null==l?void 0:l.nextSibling;if(!l||!l["s-nr"]){o=l;break}}e=e.previousSibling}}if((!o&&t!==(n.__parentNode||n.parentNode)||(n.__nextSibling||n.nextSibling)!==o)&&n!==o){if(bt(t,n,o,e),8===n.nodeType&&n.nodeValue.startsWith("s-nt-")){const t=f.document.createTextNode(n.nodeValue.replace(/^s-nt-/,""));t["s-hn"]=n["s-hn"],t["s-sn"]=n["s-sn"],t["s-sh"]=n["s-sh"],t["s-sr"]=n["s-sr"],t["s-ol"]=n["s-ol"],t["s-ol"]["s-nr"]=t,bt(n.parentNode,t,n,e),n.parentNode.removeChild(n)}1===n.nodeType&&"SLOT-FB"!==n.tagName&&(n.hidden=null!=(i=n["s-ih"])&&i)}n&&"function"==typeof r["s-rf"]&&r["s-rf"](r)}else 1===n.nodeType&&(n.hidden=!0)}}if(nt&&O(p.k),a.u&=-2,vt.length=0,!tt&&!(1&u.u)&&c["s-cr"]){const t=p.k.__childNodes||p.k.childNodes;for(const n of t)if(n["s-hn"]!==L&&!n["s-sh"])if(e&&null==n["s-ih"]&&(n["s-ih"]=null!=(r=n.hidden)&&r),1===n.nodeType)n.hidden=!0;else if(3===n.nodeType&&n.nodeValue.trim()){const t=f.document.createComment("s-nt-"+n.nodeValue);t["s-sn"]=n["s-sn"],bt(n.parentNode,t,n,e),n.parentNode.removeChild(n)}}x=void 0,lt.forEach((t=>t())),lt.length=0,st.forEach((t=>t())),st.length=0})(t,n,o)}catch(n){s(n,t.$hostElement$)}return null},Et=t=>{const n=t.$hostElement$,e=t.i,o=t.T;Mt(e,"componentDidRender",void 0,n),64&t.u?Mt(e,"componentDidUpdate",void 0,n):(t.u|=64,Tt(n),Mt(e,"componentDidLoad",void 0,n),t.P(n),o||Ct()),t.D(n),t.M&&(t.M(),t.M=void 0),512&t.u&&g((()=>gt(t,!1))),t.u&=-517},Ct=()=>{g((()=>Y(f,"appload",{detail:{namespace:"mosterdcomponents"}})))},Mt=(t,n,e,o)=>{if(t&&t[n])try{return t[n](e)}catch(t){s(t,o)}},Tt=t=>t.classList.add("hydrated"),xt=(t,n,o,l)=>{const i=e(t);if(!i)return;if(!i)throw Error(`Couldn't find host element for "${l.v}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`);const r=i.$hostElement$,c=i.l.get(n),u=i.u,f=i.i;if(o=B(o,l.t[n][0]),!(8&u&&void 0!==c||o===c||Number.isNaN(c)&&Number.isNaN(o))){if(i.l.set(n,o),l.H){const t=l.H[n];t&&t.map((t=>{try{const[[e,l]]=Object.entries(t);(128&u||1&l)&&(f?f[e](o,c,n):i.R.push((()=>{i.i[e](o,c,n)})))}catch(t){s(t,r)}}))}if(2&u){if(f.componentShouldUpdate&&!1===f.componentShouldUpdate(o,c,n)&&!(16&u))return;16&u||gt(i,!1)}}},Lt=(n,o,l)=>{var s,i;const r=n.prototype;{n.watchers&&!o.H&&(o.H=z(n.watchers)),n.deserializers&&!o._&&(o._=n.deserializers),n.serializers&&!o.U&&(o.U=n.serializers);const c=Object.entries(null!=(s=o.t)?s:{});if(c.map((([n,[s]])=>{if(31&s||2&l&&32&s){const{get:i,set:c}=t(r,n)||{};i&&(o.t[n][0]|=2048),c&&(o.t[n][0]|=4096),(1&l||!i)&&Object.defineProperty(r,n,{get(){{if(!(2048&o.t[n][0]))return((t,n)=>e(this).l.get(n))(0,n);const t=e(this),l=t?t.i:r;if(!l)return;return l[n]}},configurable:!0,enumerable:!0}),Object.defineProperty(r,n,{set(t){const i=e(this);if(i){if(c)return void 0===(32&s?this[n]:i.$hostElement$[n])&&i.l.get(n)&&(t=i.l.get(n)),c.call(this,B(t,s)),void xt(this,n,t=32&s?this[n]:i.$hostElement$[n],o);{if(!(1&l&&4096&o.t[n][0]))return xt(this,n,t,o),void(1&l&&!i.i&&i.R.push((()=>{4096&o.t[n][0]&&i.i[n]!==i.l.get(n)&&(i.i[n]=t)})));const e=()=>{const e=i.i[n];!i.l.get(n)&&e&&i.l.set(n,e),i.i[n]=B(t,s),xt(this,n,i.i[n],o)};i.i?e():i.R.push((()=>{e()}))}}}})}else 1&l&&64&s&&Object.defineProperty(r,n,{value(...t){var o;const l=e(this);return null==(o=null==l?void 0:l.W)?void 0:o.then((()=>{var e;return null==(e=l.i)?void 0:e[n](...t)}))}})})),1&l){const t=new Map;r.attributeChangedCallback=function(n,l,s){a.jmp((()=>{var i;const u=t.get(n),f=e(this);if(this.hasOwnProperty(u)&&(s=this[u],delete this[u]),r.hasOwnProperty(u)&&"number"==typeof this[u]&&this[u]==s)return;if(null==u){const t=null==f?void 0:f.u;if(f&&t&&!(8&t)&&s!==l){const e=f.i,r=null==(i=o.H)?void 0:i[n];null==r||r.forEach((o=>{const[[i,r]]=Object.entries(o);null!=e[i]&&(128&t||1&r)&&e[i].call(e,s,l,n)}))}return}const a=c.find((([t])=>t===u)),d=a&&4&a[1][0],p=d&&null===s&&void 0===this[u];d&&(s=null!==s&&"false"!==s);const v=Object.getOwnPropertyDescriptor(r,u);p||s==this[u]||v.get&&!v.set||(this[u]=s)}))},n.observedAttributes=Array.from(new Set([...Object.keys(null!=(i=o.H)?i:{}),...c.filter((([t,n])=>31&n[0])).map((([n,e])=>{const o=e[1]||n;return t.set(o,n),o}))]))}}return n},Rt=(t,n)=>{Mt(t,"connectedCallback",void 0,n)},At=(t,n)=>{Mt(t,"disconnectedCallback",void 0,n||t)},Ft=(t,n={})=>{var o;if(!f.document)return void console.warn("Stencil: No document found. Skipping bootstrapping lazy components.");const l=[],u=n.exclude||[],d=f.customElements,v=f.document.head,h=v.querySelector("meta[charset]"),m=f.document.createElement("style"),y=[];let b,$=!0;Object.assign(a,n),a.p=new URL(n.resourcesUrl||"./",f.document.baseURI).href;let w=!1;if(t.map((t=>{t[1].map((n=>{var o,c;const v={u:n[0],v:n[1],t:n[2],B:n[3]};4&v.u&&(w=!0),v.t=n[2],v.H=z(n[4]),v.U=null!=(o=n[5])?o:{},v._=null!=(c=n[6])?c:{};const h=v.v,m=class extends HTMLElement{"s-p";"s-rc";hasRegisteredEventListeners=!1;constructor(t){super(t),((t,n)=>{const e={u:0,$hostElement$:t,o:n,l:new Map,V:new Map};e.W=new Promise((t=>e.D=t)),e.q=new Promise((t=>e.P=t)),t["s-p"]=[],t["s-rc"]=[],e.R=[];const o=e;t.__stencil__getHostRef=()=>o})(t=this,v)}connectedCallback(){e(this)&&(this.hasRegisteredEventListeners||(this.hasRegisteredEventListeners=!0),b&&(clearTimeout(b),b=null),$?y.push(this):a.jmp((()=>(t=>{if(!(1&a.u)){const n=e(t);if(!n)return;const o=n.o,l=()=>{};if(1&n.u)(null==n?void 0:n.i)?Rt(n.i,t):(null==n?void 0:n.q)&&n.q.then((()=>Rt(n.i,t)));else{n.u|=1,12&o.u&&(t=>{if(!f.document)return;const n=t["s-cr"]=f.document.createComment("");n["s-cn"]=!0,bt(t,n,t.firstChild)})(t);{let e=t;for(;e=e.parentNode||e.host;)if(e["s-p"]){wt(n,n.T=e);break}}o.t&&Object.entries(o.t).map((([n,[e]])=>{if(31&e&&Object.prototype.hasOwnProperty.call(t,n)){const e=t[n];delete t[n],t[n]=e}})),(async(t,n,e)=>{let o;try{if(!(32&n.u)){if(n.u|=32,e.Y){const l=((t,n)=>{const e=t.v.replace(/-/g,"_"),o=t.Y;if(!o)return;const l=i.get(o);return l?l[e]:import(`./${o}.entry.js`).then((t=>(i.set(o,t),t[e])),(t=>{s(t,n.$hostElement$)}))
2
+ /*!__STENCIL_STATIC_IMPORT_SWITCH__*/})(e,n);if(l&&"then"in l){const t=()=>{};o=await l,t()}else o=l;if(!o)throw Error(`Constructor for "${e.v}#${n.G}" was not found`);o.isProxied||(e.H=z(o.watchers),e.U=o.serializers,e._=o.deserializers,Lt(o,e,2),o.isProxied=!0);const r=()=>{};n.u|=8;try{new o(n)}catch(n){s(n,t)}n.u&=-9,n.u|=128,r(),4&e.u?n.L=!0:Rt(n.i,t)}else o=t.constructor,customElements.whenDefined(t.localName).then((()=>n.u|=128));if(o&&o.style){let t;"string"==typeof o.style&&(t=o.style);const n=A(e);if(!r.has(n)){const o=()=>{};((t,n,e)=>{let o=r.get(t);p&&e?(o=o||new CSSStyleSheet,"string"==typeof o?o=n:o.replaceSync(n)):o=n,r.set(t,o)})(n,t,!!(1&e.u)),o()}}}const l=n.T,c=()=>gt(n,!0);l&&l["s-rc"]?l["s-rc"].push(c):c()}catch(e){s(e,t),n.M&&(n.M(),n.M=void 0),n.P&&n.P(t)}})(t,n,o)}l()}})(this))))}disconnectedCallback(){a.jmp((()=>(async t=>{if(!(1&a.u)){const n=e(t);(null==n?void 0:n.i)?At(n.i,t):(null==n?void 0:n.q)&&n.q.then((()=>At(n.i,t)))}R.has(t)&&R.delete(t),t.shadowRoot&&R.has(t.shadowRoot)&&R.delete(t.shadowRoot)})(this))),a.raf((()=>{var t;const n=e(this);if(!n)return;const o=y.findIndex((t=>t===this));o>-1&&y.splice(o,1),(null==(t=null==n?void 0:n.F)?void 0:t.k)instanceof Node&&!n.F.k.isConnected&&delete n.F.k}))}componentOnReady(){var t;return null==(t=e(this))?void 0:t.q}};v.Y=t[0],u.includes(h)||d.get(h)||(l.push(h),d.define(h,Lt(m,v,1)))}))})),l.length>0&&(w&&(m.textContent+=c),m.textContent+=l.sort()+"{visibility:hidden}.hydrated{visibility:inherit}",m.innerHTML.length)){m.setAttribute("data-styles","");const t=null!=(o=a.A)?o:M(f.document);null!=t&&m.setAttribute("nonce",t),v.insertBefore(m,h?h.nextSibling:v.firstChild)}$=!1,y.length?y.map((t=>t.connectedCallback())):a.jmp((()=>b=setTimeout(Ct,30)))},Pt=t=>a.A=t;export{H,Ft as b,q as c,V as g,P as h,d as p,o as r,Pt as s,j as w}
@@ -0,0 +1 @@
1
+ import{a as e}from"./p-Bc42CfJB.js";function i(e,i,t){return null==e||isNaN(e)?"":new Intl.NumberFormat(i,t).format(e)}function t(e,i,t){return null==e||isNaN(e)?"":new Intl.NumberFormat(t,{style:"currency",currency:i,minimumFractionDigits:2,maximumFractionDigits:2}).format(e)}function r(e,i,t=2){return null==e||isNaN(e)?"":new Intl.NumberFormat(i,{style:"percent",minimumFractionDigits:t,maximumFractionDigits:t}).format(e)}function l(e,i){if(!e)return"";const t="string"==typeof e?new Date(e):e;return isNaN(t.getTime())?"":new Intl.DateTimeFormat(i,{year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function a(e,i){if(!e)return"";const t="string"==typeof e?new Date(e):e;return isNaN(t.getTime())?"":new Intl.DateTimeFormat(i,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(t)}function n(e,i){var t,r,l,a;if(!e||!e.trim())return null;const n=new Intl.NumberFormat(i).formatToParts(1234567.89),o=null!==(r=null===(t=n.find((e=>"group"===e.type)))||void 0===t?void 0:t.value)&&void 0!==r?r:",",_=null!==(a=null===(l=n.find((e=>"decimal"===e.type)))||void 0===l?void 0:l.value)&&void 0!==a?a:".",c=e.replace(new RegExp(`\\${o}`,"g"),"").replace(new RegExp(`\\${_}`),".").replace("%","").trim(),s=parseFloat(c);return isNaN(s)?null:s}const o={nl:{required:"Dit veld is verplicht",select_placeholder:"Selecteer een optie",search_placeholder:"Zoeken...",upload_file:"Bestand uploaden",choose_file:"Bestand kiezen",clear:"Wissen",today:"Vandaag",invalid_email:"Voer een geldig e-mailadres in",invalid_url:"Voer een geldige URL in",invalid_number:"Voer een geldig getal in",drop_file_here:"Sleep bestand hierheen of",browse:"bladeren",file_too_large:"Bestand is te groot",invalid_image:"Selecteer een afbeeldingsbestand",search_results:"Zoekresultaten",no_results:"Geen resultaten gevonden",load_failed_retry:"Laden mislukt — opnieuw proberen",loading:"Laden...",submit:"Opslaan",cancel:"Annuleren",remove:"Verwijderen",add:"Toevoegen",yes:"Ja",no:"Nee",table_of:"van",download:"Downloaden",table_filter:"Filteren",table_filter_hide:"Filter verbergen",table_filter_active:"actief",table_filter_clear_all:"Alle filters wissen",table_new_record:"Nieuw record",table_export_excel:"Exporteer naar Excel",doc_view_switch:"Weergave wisselen",doc_view_tree:"Boomweergave",doc_view_list:"Lijstweergave",filter_sorting:"Sortering",filter_ascending:"Oplopend",filter_descending:"Aflopend",filter_section:"Filter",filter_apply:"Toepassen",filter_clear:"Wissen",filter_contains:"Bevat",filter_starts_with:"Begint met",filter_equals:"Gelijk aan",filter_has_value:"Heeft waarde",filter_is_empty:"Is leeg",filter_is_not_empty:"Is niet leeg",filter_exact:"Exact",filter_range:"Bereik",filter_from:"Van",filter_to:"Tot",filter_all:"Alle",filter_select_all:"Alles",filter_select_none:"Geen",filter_search_value:"Zoekwaarde...",filter_no_support:"Geen filtering beschikbaar voor dit veldtype.",textblock_show_more:"Meer tonen",close:"Sluiten",history_until:"tot",history_badge_tooltip:"Vorige waarden",hyperlink_name:"Linktekst (optioneel)",new_folder:"Nieuwe folder",folder_name_placeholder:"Foldernaam",folder_no_slash:"Een foldernaam mag geen '/' bevatten",folder_duplicate:"Er bestaat al een folder met deze naam",doc_empty_drop:"Nog geen documenten — sleep bestanden hierheen",merge_search_hint:"Zoek het duplicaat waarmee je wilt samenvoegen",merge_select:"Selecteer",merge_compare_heading:"Los conflicten op",merge_column_a:"Huidig (blijft behouden)",merge_column_b:"Kandidaat (wordt verwijderd)",merge_auto_heading:"Deze velden worden automatisch overgenomen van de kandidaat:",merge_no_conflicts:"Geen conflicterende velden gevonden",merge_continue:"Doorgaan",merge_back:"Terug",merge_confirm_heading:"Bevestig samenvoegen",merge_confirm_warning:"Dit kan niet ongedaan worden gemaakt: de kandidaat wordt definitief verwijderd.",merge_confirm_button:"Samenvoegen bevestigen",invoice_title:"Factuur",invoice_date:"Factuurdatum",invoice_due_date:"Vervaldatum",invoice_subtotal:"Subtotaal",invoice_tax:"BTW",invoice_total:"Totaal",invoice_customer:"Klant",invoice_supplier:"Leverancier",email_from:"Van",email_to:"Aan",email_cc:"Cc",email_date:"Datum",email_show_headers:"Toon technische headers"},en:{required:"This field is required",select_placeholder:"Select an option",search_placeholder:"Search...",upload_file:"Upload file",choose_file:"Choose file",clear:"Clear",today:"Today",invalid_email:"Please enter a valid email address",invalid_url:"Please enter a valid URL",invalid_number:"Please enter a valid number",drop_file_here:"Drop file here or",browse:"browse",file_too_large:"File is too large",invalid_image:"Please select an image file",search_results:"Search results",no_results:"No results found",load_failed_retry:"Failed to load — retry",loading:"Loading...",submit:"Save",cancel:"Cancel",remove:"Remove",add:"Add",yes:"Yes",no:"No",table_of:"of",download:"Download",table_filter:"Filter",table_filter_hide:"Hide filter",table_filter_active:"active",table_filter_clear_all:"Clear all filters",table_new_record:"New record",table_export_excel:"Export to Excel",doc_view_switch:"Switch view",doc_view_tree:"Tree view",doc_view_list:"List view",filter_sorting:"Sorting",filter_ascending:"Ascending",filter_descending:"Descending",filter_section:"Filter",filter_apply:"Apply",filter_clear:"Clear",filter_contains:"Contains",filter_starts_with:"Starts with",filter_equals:"Equals",filter_has_value:"Has value",filter_is_empty:"Is empty",filter_is_not_empty:"Is not empty",filter_exact:"Exact",filter_range:"Range",filter_from:"From",filter_to:"To",filter_all:"All",filter_select_all:"All",filter_select_none:"None",filter_search_value:"Search value...",filter_no_support:"Filtering is not available for this field type.",textblock_show_more:"Show more",close:"Close",history_until:"until",history_badge_tooltip:"Previous values",hyperlink_name:"Link text (optional)",new_folder:"New folder",folder_name_placeholder:"Folder name",folder_no_slash:"A folder name cannot contain '/'",folder_duplicate:"A folder with this name already exists",doc_empty_drop:"No documents yet — drop files here",merge_search_hint:"Search for the duplicate to merge with",merge_select:"Select",merge_compare_heading:"Resolve conflicts",merge_column_a:"Current (kept)",merge_column_b:"Candidate (will be deleted)",merge_auto_heading:"These fields will be taken from the candidate automatically:",merge_no_conflicts:"No conflicting fields found",merge_continue:"Continue",merge_back:"Back",merge_confirm_heading:"Confirm merge",merge_confirm_warning:"This cannot be undone: the candidate will be permanently deleted.",merge_confirm_button:"Confirm merge",invoice_title:"Invoice",invoice_date:"Invoice date",invoice_due_date:"Due date",invoice_subtotal:"Subtotal",invoice_tax:"Tax",invoice_total:"Total",invoice_customer:"Customer",invoice_supplier:"Supplier",email_from:"From",email_to:"To",email_cc:"Cc",email_date:"Date",email_show_headers:"Show technical headers"},ar:{required:"هذا الحقل مطلوب",select_placeholder:"اختر خياراً",search_placeholder:"بحث...",upload_file:"رفع ملف",choose_file:"اختر ملفاً",clear:"مسح",today:"اليوم",invalid_email:"يرجى إدخال عنوان بريد إلكتروني صحيح",invalid_url:"يرجى إدخال رابط صحيح",invalid_number:"يرجى إدخال رقم صحيح",drop_file_here:"اسحب الملف هنا أو",browse:"تصفح",file_too_large:"الملف كبير جداً",invalid_image:"يرجى اختيار ملف صورة",search_results:"نتائج البحث",no_results:"لم يتم العثور على نتائج",load_failed_retry:"فشل التحميل — إعادة المحاولة",loading:"جار التحميل...",submit:"حفظ",cancel:"إلغاء",remove:"إزالة",add:"إضافة",yes:"نعم",no:"لا",table_of:"من أصل",download:"تنزيل",table_filter:"تصفية",table_filter_hide:"إخفاء التصفية",table_filter_active:"نشط",table_filter_clear_all:"مسح جميع الفلاتر",table_new_record:"سجل جديد",table_export_excel:"تصدير إلى Excel",doc_view_switch:"تبديل العرض",doc_view_tree:"عرض شجري",doc_view_list:"عرض القائمة",filter_sorting:"الترتيب",filter_ascending:"تصاعدي",filter_descending:"تنازلي",filter_section:"تصفية",filter_apply:"تطبيق",filter_clear:"مسح",filter_contains:"يحتوي على",filter_starts_with:"يبدأ بـ",filter_equals:"يساوي",filter_has_value:"له قيمة",filter_is_empty:"فارغ",filter_is_not_empty:"ليس فارغاً",filter_exact:"دقيق",filter_range:"نطاق",filter_from:"من",filter_to:"إلى",filter_all:"الكل",filter_select_all:"الكل",filter_select_none:"لا شيء",filter_search_value:"قيمة البحث...",filter_no_support:"التصفية غير متاحة لهذا النوع من الحقول.",textblock_show_more:"عرض المزيد",close:"إغلاق",history_until:"حتى",history_badge_tooltip:"القيم السابقة",hyperlink_name:"نص الرابط (اختياري)",merge_search_hint:"ابحث عن السجل المكرر للدمج معه",merge_select:"اختر",merge_compare_heading:"حل التعارضات",merge_column_a:"الحالي (سيتم الاحتفاظ به)",merge_column_b:"المرشح (سيتم حذفه)",merge_auto_heading:"سيتم أخذ هذه الحقول من المرشح تلقائياً:",merge_no_conflicts:"لم يتم العثور على حقول متعارضة",merge_continue:"متابعة",merge_back:"رجوع",merge_confirm_heading:"تأكيد الدمج",merge_confirm_warning:"لا يمكن التراجع عن هذا الإجراء: سيتم حذف المرشح نهائياً.",merge_confirm_button:"تأكيد الدمج",invoice_title:"فاتورة",invoice_date:"تاريخ الفاتورة",invoice_due_date:"تاريخ الاستحقاق",invoice_subtotal:"المجموع الفرعي",invoice_tax:"الضريبة",invoice_total:"الإجمالي",invoice_customer:"العميل",invoice_supplier:"المورد",email_from:"من",email_to:"إلى",email_cc:"نسخة",email_date:"التاريخ",email_show_headers:"إظهار الترويسات التقنية"},fr:{required:"Ce champ est obligatoire",select_placeholder:"Sélectionner une option",search_placeholder:"Rechercher...",upload_file:"Télécharger un fichier",choose_file:"Choisir un fichier",clear:"Effacer",today:"Aujourd'hui",invalid_email:"Veuillez saisir une adresse e-mail valide",invalid_url:"Veuillez saisir une URL valide",invalid_number:"Veuillez saisir un nombre valide",drop_file_here:"Déposez le fichier ici ou",browse:"parcourir",file_too_large:"Le fichier est trop volumineux",invalid_image:"Veuillez sélectionner un fichier image",search_results:"Résultats de recherche",no_results:"Aucun résultat trouvé",load_failed_retry:"Échec du chargement — réessayer",loading:"Chargement...",submit:"Enregistrer",cancel:"Annuler",remove:"Supprimer",add:"Ajouter",yes:"Oui",no:"Non",table_of:"sur",download:"Télécharger",table_filter:"Filtrer",table_filter_hide:"Masquer le filtre",table_filter_active:"actif",table_filter_clear_all:"Effacer tous les filtres",table_new_record:"Nouvel enregistrement",table_export_excel:"Exporter vers Excel",doc_view_switch:"Changer de vue",doc_view_tree:"Vue arborescente",doc_view_list:"Vue liste",filter_sorting:"Tri",filter_ascending:"Croissant",filter_descending:"Décroissant",filter_section:"Filtre",filter_apply:"Appliquer",filter_clear:"Effacer",filter_contains:"Contient",filter_starts_with:"Commence par",filter_equals:"Égal à",filter_has_value:"A une valeur",filter_is_empty:"Est vide",filter_is_not_empty:"N'est pas vide",filter_exact:"Exact",filter_range:"Plage",filter_from:"De",filter_to:"À",filter_all:"Tous",filter_select_all:"Tous",filter_select_none:"Aucun",filter_search_value:"Valeur de recherche...",filter_no_support:"Le filtrage n'est pas disponible pour ce type de champ.",textblock_show_more:"Voir plus",close:"Fermer",history_until:"jusqu'au",history_badge_tooltip:"Valeurs précédentes",hyperlink_name:"Texte du lien (optionnel)",merge_search_hint:"Rechercher le doublon à fusionner",merge_select:"Sélectionner",merge_compare_heading:"Résoudre les conflits",merge_column_a:"Actuel (conservé)",merge_column_b:"Candidat (sera supprimé)",merge_auto_heading:"Ces champs seront repris automatiquement du candidat :",merge_no_conflicts:"Aucun champ en conflit trouvé",merge_continue:"Continuer",merge_back:"Retour",merge_confirm_heading:"Confirmer la fusion",merge_confirm_warning:"Cette action est irréversible : le candidat sera définitivement supprimé.",merge_confirm_button:"Confirmer la fusion",invoice_title:"Facture",invoice_date:"Date de facture",invoice_due_date:"Date d'échéance",invoice_subtotal:"Sous-total",invoice_tax:"TVA",invoice_total:"Total",invoice_customer:"Client",invoice_supplier:"Fournisseur",email_from:"De",email_to:"À",email_cc:"Cc",email_date:"Date",email_show_headers:"Afficher les en-têtes techniques"},de:{required:"Dieses Feld ist erforderlich",select_placeholder:"Option auswählen",search_placeholder:"Suchen...",upload_file:"Datei hochladen",choose_file:"Datei auswählen",clear:"Löschen",today:"Heute",invalid_email:"Bitte geben Sie eine gültige E-Mail-Adresse ein",invalid_url:"Bitte geben Sie eine gültige URL ein",invalid_number:"Bitte geben Sie eine gültige Zahl ein",drop_file_here:"Datei hier ablegen oder",browse:"durchsuchen",file_too_large:"Datei ist zu groß",invalid_image:"Bitte eine Bilddatei auswählen",search_results:"Suchergebnisse",no_results:"Keine Ergebnisse gefunden",load_failed_retry:"Laden fehlgeschlagen — erneut versuchen",loading:"Laden...",submit:"Speichern",cancel:"Abbrechen",remove:"Entfernen",add:"Hinzufügen",yes:"Ja",no:"Nein",table_of:"von",download:"Herunterladen",table_filter:"Filtern",table_filter_hide:"Filter ausblenden",table_filter_active:"aktiv",table_filter_clear_all:"Alle Filter löschen",table_new_record:"Neuer Eintrag",table_export_excel:"Als Excel exportieren",doc_view_switch:"Ansicht wechseln",doc_view_tree:"Baumansicht",doc_view_list:"Listenansicht",filter_sorting:"Sortierung",filter_ascending:"Aufsteigend",filter_descending:"Absteigend",filter_section:"Filter",filter_apply:"Anwenden",filter_clear:"Löschen",filter_contains:"Enthält",filter_starts_with:"Beginnt mit",filter_equals:"Gleich",filter_has_value:"Hat Wert",filter_is_empty:"Ist leer",filter_is_not_empty:"Ist nicht leer",filter_exact:"Genau",filter_range:"Bereich",filter_from:"Von",filter_to:"Bis",filter_all:"Alle",filter_select_all:"Alle",filter_select_none:"Keine",filter_search_value:"Suchwert...",filter_no_support:"Filterung ist für diesen Feldtyp nicht verfügbar.",textblock_show_more:"Mehr anzeigen",close:"Schließen",history_until:"bis",history_badge_tooltip:"Vorherige Werte",hyperlink_name:"Linktext (optional)",merge_search_hint:"Suchen Sie das Duplikat, mit dem zusammengeführt werden soll",merge_select:"Auswählen",merge_compare_heading:"Konflikte lösen",merge_column_a:"Aktuell (bleibt erhalten)",merge_column_b:"Kandidat (wird gelöscht)",merge_auto_heading:"Diese Felder werden automatisch vom Kandidaten übernommen:",merge_no_conflicts:"Keine widersprüchlichen Felder gefunden",merge_continue:"Weiter",merge_back:"Zurück",merge_confirm_heading:"Zusammenführung bestätigen",merge_confirm_warning:"Dies kann nicht rückgängig gemacht werden: der Kandidat wird endgültig gelöscht.",merge_confirm_button:"Zusammenführung bestätigen",invoice_title:"Rechnung",invoice_date:"Rechnungsdatum",invoice_due_date:"Fälligkeitsdatum",invoice_subtotal:"Zwischensumme",invoice_tax:"MwSt.",invoice_total:"Gesamt",invoice_customer:"Kunde",invoice_supplier:"Lieferant",email_from:"Von",email_to:"An",email_cc:"Cc",email_date:"Datum",email_show_headers:"Technische Header anzeigen"},es:{required:"Este campo es obligatorio",select_placeholder:"Seleccionar una opción",search_placeholder:"Buscar...",upload_file:"Subir archivo",choose_file:"Elegir archivo",clear:"Borrar",today:"Hoy",invalid_email:"Por favor, introduzca una dirección de correo electrónico válida",invalid_url:"Por favor, introduzca una URL válida",invalid_number:"Por favor, introduzca un número válido",drop_file_here:"Suelte el archivo aquí o",browse:"explorar",file_too_large:"El archivo es demasiado grande",invalid_image:"Seleccione un archivo de imagen",search_results:"Resultados de búsqueda",no_results:"No se encontraron resultados",load_failed_retry:"Error al cargar — reintentar",loading:"Cargando...",submit:"Guardar",cancel:"Cancelar",remove:"Eliminar",add:"Añadir",yes:"Sí",no:"No",table_of:"de",download:"Descargar",table_filter:"Filtrar",table_filter_hide:"Ocultar filtro",table_filter_active:"activo",table_filter_clear_all:"Borrar todos los filtros",table_new_record:"Nuevo registro",table_export_excel:"Exportar a Excel",doc_view_switch:"Cambiar vista",doc_view_tree:"Vista de árbol",doc_view_list:"Vista de lista",filter_sorting:"Ordenación",filter_ascending:"Ascendente",filter_descending:"Descendente",filter_section:"Filtro",filter_apply:"Aplicar",filter_clear:"Borrar",filter_contains:"Contiene",filter_starts_with:"Empieza por",filter_equals:"Igual a",filter_has_value:"Tiene valor",filter_is_empty:"Está vacío",filter_is_not_empty:"No está vacío",filter_exact:"Exacto",filter_range:"Rango",filter_from:"Desde",filter_to:"Hasta",filter_all:"Todos",filter_select_all:"Todos",filter_select_none:"Ninguno",filter_search_value:"Valor de búsqueda...",filter_no_support:"El filtrado no está disponible para este tipo de campo.",textblock_show_more:"Mostrar más",close:"Cerrar",history_until:"hasta",history_badge_tooltip:"Valores anteriores",hyperlink_name:"Texto del enlace (opcional)",merge_search_hint:"Busque el duplicado con el que fusionar",merge_select:"Seleccionar",merge_compare_heading:"Resolver conflictos",merge_column_a:"Actual (se conserva)",merge_column_b:"Candidato (se eliminará)",merge_auto_heading:"Estos campos se tomarán automáticamente del candidato:",merge_no_conflicts:"No se encontraron campos en conflicto",merge_continue:"Continuar",merge_back:"Atrás",merge_confirm_heading:"Confirmar fusión",merge_confirm_warning:"Esto no se puede deshacer: el candidato se eliminará permanentemente.",merge_confirm_button:"Confirmar fusión",invoice_title:"Factura",invoice_date:"Fecha de factura",invoice_due_date:"Fecha de vencimiento",invoice_subtotal:"Subtotal",invoice_tax:"Impuesto",invoice_total:"Total",invoice_customer:"Cliente",invoice_supplier:"Proveedor",email_from:"De",email_to:"Para",email_cc:"Cc",email_date:"Fecha",email_show_headers:"Mostrar encabezados técnicos"},it:{required:"Questo campo è obbligatorio",select_placeholder:"Seleziona un'opzione",search_placeholder:"Cerca...",upload_file:"Carica file",choose_file:"Scegli file",clear:"Cancella",today:"Oggi",invalid_email:"Inserisci un indirizzo email valido",invalid_url:"Inserisci un URL valido",invalid_number:"Inserisci un numero valido",drop_file_here:"Trascina il file qui o",browse:"sfoglia",file_too_large:"Il file è troppo grande",invalid_image:"Seleziona un file immagine",search_results:"Risultati della ricerca",no_results:"Nessun risultato trovato",load_failed_retry:"Caricamento non riuscito — riprova",loading:"Caricamento...",submit:"Salva",cancel:"Annulla",remove:"Rimuovi",add:"Aggiungi",yes:"Sì",no:"No",table_of:"di",download:"Scarica",table_filter:"Filtra",table_filter_hide:"Nascondi filtro",table_filter_active:"attivo",table_filter_clear_all:"Cancella tutti i filtri",table_new_record:"Nuovo record",table_export_excel:"Esporta in Excel",doc_view_switch:"Cambia vista",doc_view_tree:"Vista ad albero",doc_view_list:"Vista elenco",filter_sorting:"Ordinamento",filter_ascending:"Crescente",filter_descending:"Decrescente",filter_section:"Filtro",filter_apply:"Applica",filter_clear:"Cancella",filter_contains:"Contiene",filter_starts_with:"Inizia con",filter_equals:"Uguale a",filter_has_value:"Ha valore",filter_is_empty:"È vuoto",filter_is_not_empty:"Non è vuoto",filter_exact:"Esatto",filter_range:"Intervallo",filter_from:"Da",filter_to:"A",filter_all:"Tutti",filter_select_all:"Tutti",filter_select_none:"Nessuno",filter_search_value:"Valore di ricerca...",filter_no_support:"Il filtro non è disponibile per questo tipo di campo.",textblock_show_more:"Mostra altro",close:"Chiudi",history_until:"fino a",history_badge_tooltip:"Valori precedenti",hyperlink_name:"Testo del collegamento (opzionale)",merge_search_hint:"Cerca il duplicato con cui unire",merge_select:"Seleziona",merge_compare_heading:"Risolvi i conflitti",merge_column_a:"Attuale (viene mantenuto)",merge_column_b:"Candidato (verrà eliminato)",merge_auto_heading:"Questi campi verranno ripresi automaticamente dal candidato:",merge_no_conflicts:"Nessun campo in conflitto trovato",merge_continue:"Continua",merge_back:"Indietro",merge_confirm_heading:"Conferma unione",merge_confirm_warning:"Questa azione non può essere annullata: il candidato verrà eliminato definitivamente.",merge_confirm_button:"Conferma unione",invoice_title:"Fattura",invoice_date:"Data fattura",invoice_due_date:"Data di scadenza",invoice_subtotal:"Subtotale",invoice_tax:"IVA",invoice_total:"Totale",invoice_customer:"Cliente",invoice_supplier:"Fornitore",email_from:"Da",email_to:"A",email_cc:"Cc",email_date:"Data",email_show_headers:"Mostra intestazioni tecniche"},uk:{required:"Це поле обов'язкове",select_placeholder:"Виберіть варіант",search_placeholder:"Пошук...",upload_file:"Завантажити файл",choose_file:"Вибрати файл",clear:"Очистити",today:"Сьогодні",invalid_email:"Будь ласка, введіть дійсну адресу електронної пошти",invalid_url:"Будь ласка, введіть дійсну URL-адресу",invalid_number:"Будь ласка, введіть дійсне число",drop_file_here:"Перетягніть файл сюди або",browse:"огляд",file_too_large:"Файл занадто великий",invalid_image:"Будь ласка, виберіть файл зображення",search_results:"Результати пошуку",no_results:"Результатів не знайдено",load_failed_retry:"Не вдалося завантажити — повторити",loading:"Завантаження...",submit:"Зберегти",cancel:"Скасувати",remove:"Видалити",add:"Додати",yes:"Так",no:"Ні",table_of:"з",download:"Завантажити",table_filter:"Фільтрувати",table_filter_hide:"Сховати фільтр",table_filter_active:"активний",table_filter_clear_all:"Очистити всі фільтри",table_new_record:"Новий запис",table_export_excel:"Експортувати до Excel",doc_view_switch:"Змінити вигляд",doc_view_tree:"Деревоподібний вигляд",doc_view_list:"Список",filter_sorting:"Сортування",filter_ascending:"За зростанням",filter_descending:"За спаданням",filter_section:"Фільтр",filter_apply:"Застосувати",filter_clear:"Очистити",filter_contains:"Містить",filter_starts_with:"Починається з",filter_equals:"Дорівнює",filter_has_value:"Має значення",filter_is_empty:"Порожнє",filter_is_not_empty:"Не порожнє",filter_exact:"Точно",filter_range:"Діапазон",filter_from:"Від",filter_to:"До",filter_all:"Всі",filter_select_all:"Всі",filter_select_none:"Жодного",filter_search_value:"Значення для пошуку...",filter_no_support:"Фільтрування недоступне для цього типу поля.",textblock_show_more:"Показати більше",close:"Закрити",history_until:"до",history_badge_tooltip:"Попередні значення",hyperlink_name:"Текст посилання (необов'язково)",merge_search_hint:"Знайдіть дублікат для об'єднання",merge_select:"Вибрати",merge_compare_heading:"Вирішити конфлікти",merge_column_a:"Поточний (залишається)",merge_column_b:"Кандидат (буде видалено)",merge_auto_heading:"Ці поля будуть автоматично взяті з кандидата:",merge_no_conflicts:"Конфліктних полів не знайдено",merge_continue:"Продовжити",merge_back:"Назад",merge_confirm_heading:"Підтвердити об'єднання",merge_confirm_warning:"Цю дію не можна скасувати: кандидат буде остаточно видалено.",merge_confirm_button:"Підтвердити об'єднання",invoice_title:"Рахунок-фактура",invoice_date:"Дата рахунку",invoice_due_date:"Термін оплати",invoice_subtotal:"Проміжний підсумок",invoice_tax:"ПДВ",invoice_total:"Разом",invoice_customer:"Клієнт",invoice_supplier:"Постачальник",email_from:"Від",email_to:"Кому",email_cc:"Копія",email_date:"Дата",email_show_headers:"Показати технічні заголовки"}};function _(e,i){var t,r,l;const a=(null!=i?i:"en").split("-")[0].toLowerCase();return null!==(l=null!==(r=(null!==(t=o[a])&&void 0!==t?t:o.en)[e])&&void 0!==r?r:o.en[e])&&void 0!==l?l:e}class c{static render(i,t,r){var l,a,n,o;if(i.type===e.RELATION){const e=null!==(l=i.name)&&void 0!==l?l:"",r=null===(a=null==t?void 0:t._links)||void 0===a?void 0:a[e];return r?Array.isArray(r)?r.map((e=>{var i;return null!==(i=e.name)&&void 0!==i?i:""})).filter(Boolean).join(", "):null!==(n=r.name)&&void 0!==n?n:"":""}if(i.type!==e.FIELD)return"";const _=null!==(o=i.name)&&void 0!==o?o:"",s=i.dataType,d=i.listItems;let u=null==t?void 0:t[_];return i.historyEnabled&&null!=u&&"object"==typeof u&&!Array.isArray(u)&&"current"in u&&(u=u.current),null==u||""===u?"":(Array.isArray(u)?u:[u]).map((e=>c.renderValue(null!=s?s:"TEXT",e,null!=d?d:[],r))).filter((e=>""!==e)).join(", ")}static renderValue(e,n,o,_){var c,s;switch(e){case"INTEGER":return i(Number(n),_,{maximumFractionDigits:0});case"DECIMAL":return i(Number(n),_);case"PERCENTAGE":return r(Number(n),_);case"CURRENCY":{const{amount:e,currency:r}="object"==typeof n&&null!==n?n:{amount:n,currency:""};return r?t(Number(e),r,_):i(Number(e),_)}case"DATE":return l(n,_);case"DATETIME":return a(n,_);case"TIME":return function(e,i){if(!e)return"";const[t,r]=e.split(":").map(Number),l=new Date;return l.setHours(t,r,0,0),new Intl.DateTimeFormat(i,{hour:"2-digit",minute:"2-digit"}).format(l)}(n,_);case"BOOLEAN":return n?"✓":"";case"FILE":case"IMAGE":return"object"==typeof n&&null!==n&&null!==(c=n.fileName)&&void 0!==c?c:"";case"LIST":{const e=o.find((e=>e.key===String(n)));return null!==(s=null==e?void 0:e.label)&&void 0!==s?s:String(n)}case"TEXTBLOCK":{const e=String(n).replace(/<[^>]*>/g,""),i=document.createElement("textarea");return i.innerHTML=e,i.value.trim()}case"LONGTEXT":return String(n).replace(/[\r\n]+/g," ").trim();case"JSON":return("object"==typeof n?JSON.stringify(n):String(n)).replace(/[\r\n]+/g," ").trim();case"SECRET":return n?"••••••••":"";default:return String(n)}}static formatJson(e,i=!1){try{const t="string"==typeof e?JSON.parse(e):e;return(i?JSON.stringify(t):JSON.stringify(t,null,2)).replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,(e=>{let i="color:#2aa198";return/^"/.test(e)?i=/:$/.test(e)?"color:#881391":"color:#268bd2":/true|false/.test(e)?i="color:#b58900":/null/.test(e)&&(i="color:#dc322f"),`<span style="${i}">${e}</span>`}))}catch(i){return String(e)}}}export{c as C,a,t as b,i as c,r as d,l as f,n as p,_ as t}
@@ -41,9 +41,9 @@ export declare class MrdDocumentView {
41
41
  mrdAttachments: EventEmitter<{
42
42
  attachments: DocumentAttachment[];
43
43
  }>;
44
- /** Tracks the href attachments were last emitted for, so componentDidLoad and
44
+ /** Tracks the key attachments were last emitted for, so componentDidLoad and
45
45
  * the data watcher don't emit duplicate events for the same file. */
46
- private lastAttachmentHref;
46
+ private lastAttachmentKey;
47
47
  componentDidLoad(): void;
48
48
  dataChanged(): void;
49
49
  private emitAttachmentsIfNeeded;
@@ -0,0 +1,52 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ import { ClientArchetype, DocumentAttachment } from '../../../types/client-layout';
3
+ /**
4
+ * Archetype-driven single-email view. Given a `commons.email` binding and a data
5
+ * record, renders the message the way an Outlook printout would — subject, a
6
+ * compact From/To/CC/Date header block, the body and attachments — instead of a
7
+ * generic field form. Fully read-only: emails arrive through other channels (mail
8
+ * ingestion gateways), never edited here.
9
+ *
10
+ * Like `mrd-document-view`/`mrd-invoice-view`, this component never resolves file
11
+ * hrefs itself — it only exposes attachment references via `mrdAttachments` (an
12
+ * email can have several) and plain download buttons; the host decides how/whether
13
+ * to render them.
14
+ */
15
+ export declare class MrdEmailView {
16
+ /** Resolved `commons.email` binding: slot name → concrete field/relation name. */
17
+ archetype: ClientArchetype;
18
+ /** The data record from the /data endpoint. Fields keyed by name; relations under `_links`. */
19
+ data: Record<string, unknown>;
20
+ locale: string;
21
+ /** Navigate to a sender/recipient or the container. Host resolves the href and routes. */
22
+ mrdNavigate: EventEmitter<{
23
+ href?: string;
24
+ label: string;
25
+ }>;
26
+ /** Download an attachment. Host resolves the href to a signed URL. */
27
+ mrdDownload: EventEmitter<{
28
+ href: string;
29
+ fileName: string;
30
+ }>;
31
+ /** The file(s) belonging to this email, fired once on load and again whenever the
32
+ * attachments slot's value changes. The host resolves the href(s) itself. */
33
+ mrdAttachments: EventEmitter<{
34
+ attachments: DocumentAttachment[];
35
+ }>;
36
+ /** Tracks the key attachments were last emitted for, so componentDidLoad and the
37
+ * data watcher don't emit duplicate events for the same set of files. */
38
+ private lastAttachmentKey;
39
+ componentDidLoad(): void;
40
+ dataChanged(): void;
41
+ private emitAttachmentsIfNeeded;
42
+ /** Value of a value-slot: reads data[field] via the slot→field map. */
43
+ private slotValue;
44
+ /** Relation link for a relation-slot: reads data._links[field]. */
45
+ private slotLink;
46
+ private renderAddressRow;
47
+ private renderContainer;
48
+ private renderBody;
49
+ private renderHeaders;
50
+ private renderAttachments;
51
+ render(): any;
52
+ }
@@ -2,6 +2,24 @@
2
2
  * Shared upload behaviour for mrd-file-field and mrd-image-field:
3
3
  * file validation, drop-zone class building and drag-drop wiring.
4
4
  */
5
+ /** A resolved file/image value, matching the shape the API returns for an already-persisted
6
+ * file (mrd-table cell renderer, mrd-document-view, mrd-layout-section all read `.href` /
7
+ * `.fileName` the same way) — also what a freshly-completed upload resolves to (host builds
8
+ * `{ href: uri, fileName: file.name }` client-side). May carry extra metadata (`contentType`,
9
+ * `size`, …) that this library ignores. */
10
+ export interface UploadedFileRef {
11
+ href: string;
12
+ fileName: string;
13
+ [key: string]: unknown;
14
+ }
15
+ /** A single field entry: a pending `File` (upload in progress), a resolved `UploadedFileRef`,
16
+ * or a bare href string (legacy shape — still supported so older hosts keep working unchanged). */
17
+ export type FileEntry = File | UploadedFileRef | string;
18
+ /** True while the entry is still a local `File` awaiting upload resolution. */
19
+ export declare function isPending(entry: FileEntry): boolean;
20
+ /** Display name for an entry: the `File`'s own name, the resolved `fileName`, or — for the
21
+ * legacy bare-href shape — a best-effort basename of the URI. */
22
+ export declare function entryLabel(entry: FileEntry): string;
5
23
  /** Validates a selected/dropped file; returns a localised error message or '' when accepted. */
6
24
  export declare function validateUploadFile(file: File, maxSize: number, locale: string, requireImage?: boolean): string;
7
25
  /** BEM class string for the drop zone, e.g. base 'mrd-file-field' → 'mrd-file-field__zone …'. */
@@ -11,7 +29,7 @@ export declare function uploadZoneClass(base: string, opts: {
11
29
  disabled: boolean;
12
30
  }): string;
13
31
  /** Drag-drop handlers for the drop zone; the component owns the dragging state and file handling. */
14
- export declare function makeDragHandlers(setDragging: (dragging: boolean) => void, onFile: (file: File | null) => void): {
32
+ export declare function makeDragHandlers(setDragging: (dragging: boolean) => void, onFiles: (files: File[]) => void): {
15
33
  onDragOver: (e: DragEvent) => void;
16
34
  onDragLeave: () => void;
17
35
  onDrop: (e: DragEvent) => void;
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from '../../../stencil-public-runtime';
2
+ import { FileEntry } from '../file-upload-common';
2
3
  export declare class MrdFileField {
3
4
  name: string;
4
5
  label: string;
@@ -8,31 +9,44 @@ export declare class MrdFileField {
8
9
  locale: string;
9
10
  accept: string;
10
11
  maxSize: number;
11
- fileName: string;
12
+ multiple: boolean;
13
+ /** Working copy of the field's files, kept in sync with `value`. Entries still
14
+ * a `File` are pending upload; resolved entries are `{ href, fileName }` (or a
15
+ * bare href string for older hosts). */
16
+ entries: FileEntry[];
12
17
  isDragging: boolean;
13
- uploading: boolean;
14
18
  error: string;
15
19
  mrdChange: EventEmitter<{
16
20
  name: string;
17
- value: File | null;
21
+ value: FileEntry | FileEntry[] | null;
18
22
  }>;
19
23
  mrdBlur: EventEmitter<{
20
24
  name: string;
21
- value: File | null;
25
+ value: FileEntry | FileEntry[] | null;
22
26
  }>;
23
- /** Emitted when a file is selected and needs to be uploaded.
24
- * Host should upload the file and call form.setFieldValue(name, uri) with the result. */
27
+ /** Emitted once per selected/dropped file that needs to be uploaded.
28
+ * Host should upload the file and call form.setFieldValue(name, { href, fileName: file.name }, file)
29
+ * with the result — passing `file` back lets mrd-form resolve the right entry in a `multiple` field. */
25
30
  mrdUpload: EventEmitter<{
26
31
  name: string;
27
32
  file: File;
28
33
  }>;
29
34
  private fileInputRef;
30
- /** When the host provides a URI back via setFieldValue, the upload is done. */
31
- valueChanged(newVal: unknown): void;
32
- private handleFile;
35
+ componentWillLoad(): void;
36
+ /** The host (via mrd-form.setFieldValue) is the source of truth once a value round-trips back. */
37
+ valueChanged(): void;
38
+ private syncEntriesFromValue;
39
+ private emitValue;
40
+ private addFiles;
33
41
  private handleInputChange;
34
42
  private drag;
43
+ /** In single mode, block re-selection while the one file is still uploading;
44
+ * in multiple mode, more files can always be added alongside pending uploads. */
45
+ private get zoneBusy();
35
46
  private handleZoneClick;
36
- private handleClear;
47
+ private handleRemove;
48
+ /** Icon/spinner + filename + remove button — the caller supplies the wrapping element
49
+ * (a plain row for single mode, an `<li>` for the multi-mode list). */
50
+ private renderEntry;
37
51
  render(): any;
38
52
  }
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from '../../../stencil-public-runtime';
2
+ import { FileEntry } from '../file-upload-common';
2
3
  export declare class MrdImageField {
3
4
  name: string;
4
5
  label: string;
@@ -8,32 +9,47 @@ export declare class MrdImageField {
8
9
  locale: string;
9
10
  accept: string;
10
11
  maxSize: number;
11
- previewUrl: string;
12
- fileName: string;
12
+ multiple: boolean;
13
+ /** Working copy of the field's files, kept in sync with `value`. Entries still
14
+ * a `File` are pending upload; resolved entries are `{ href, fileName }` (or a
15
+ * bare href string for older hosts). */
16
+ entries: FileEntry[];
13
17
  isDragging: boolean;
14
- uploading: boolean;
15
18
  error: string;
16
19
  mrdChange: EventEmitter<{
17
20
  name: string;
18
- value: File | null;
21
+ value: FileEntry | FileEntry[] | null;
19
22
  }>;
20
23
  mrdBlur: EventEmitter<{
21
24
  name: string;
22
- value: File | null;
25
+ value: FileEntry | FileEntry[] | null;
23
26
  }>;
24
- /** Emitted when an image is selected and needs to be uploaded.
25
- * Host should upload the file and call form.setFieldValue(name, uri) with the result. */
27
+ /** Emitted once per selected/dropped image that needs to be uploaded.
28
+ * Host should upload the file and call form.setFieldValue(name, { href, fileName: file.name }, file)
29
+ * with the result — passing `file` back lets mrd-form resolve the right entry in a `multiple` field. */
26
30
  mrdUpload: EventEmitter<{
27
31
  name: string;
28
32
  file: File;
29
33
  }>;
30
34
  private fileInputRef;
31
- /** When the host provides a URI back via setFieldValue, the upload is done. */
32
- valueChanged(newVal: unknown): void;
33
- private handleFile;
35
+ /** Local data-URL previews for pending File entries, keyed by File reference. */
36
+ private previewCache;
37
+ componentWillLoad(): void;
38
+ /** The host (via mrd-form.setFieldValue) is the source of truth once a value round-trips back. */
39
+ valueChanged(): void;
40
+ private syncEntriesFromValue;
41
+ private emitValue;
42
+ private readPreview;
43
+ private addFiles;
34
44
  private handleInputChange;
35
45
  private drag;
46
+ /** In single mode, block re-selection while the one image is still uploading;
47
+ * in multiple mode, more images can always be added alongside pending uploads. */
48
+ private get zoneBusy();
36
49
  private handleZoneClick;
37
- private handleClear;
50
+ private handleRemove;
51
+ private renderThumb;
52
+ private renderSingle;
53
+ private renderGridItem;
38
54
  render(): any;
39
55
  }
@@ -78,7 +78,15 @@ export declare class MrdForm {
78
78
  */
79
79
  private applyReferenceValue;
80
80
  private resolveReferenceFieldName;
81
- setFieldValue(name: string, value: unknown): Promise<void>;
81
+ /**
82
+ * Inject a value from outside (e.g. after a file upload completes).
83
+ * `file` is optional and only meaningful for `multiple` FILE/IMAGE fields: when
84
+ * the field's current value is an array, mrd-form replaces the array entry that
85
+ * `=== file` with `value`, leaving other pending/resolved entries untouched —
86
+ * this is how mrd-file-field/mrd-image-field resolve concurrent per-file uploads.
87
+ * Pass the `file` from the originating mrdUpload event back unchanged.
88
+ */
89
+ setFieldValue(name: string, value: unknown, file?: File): Promise<void>;
82
90
  /** Collect all RELATION items that use editBehavior=DROPDOWN with a commonRelation. */
83
91
  private collectDependentDropdowns;
84
92
  /** Emit mrdFetchAll for every dependent DROPDOWN whose filter value is currently set. */
@@ -93,6 +101,13 @@ export declare class MrdForm {
93
101
  private collectFields;
94
102
  private validate;
95
103
  private normalizeFieldValue;
104
+ /** FILE/IMAGE entries render as `{ href, fileName, contentType?, size? }` — the same
105
+ * shape the API returns for an already-persisted file — or a bare href string for
106
+ * freshly-resolved uploads. Only `href` is meaningful to the API, so unwrap before
107
+ * submit (mirrors normalizeRelationValue). Do NOT fall back to any other key (e.g.
108
+ * `id`) as a stand-in for `href` — a bare id is not a valid/complete reference on its
109
+ * own; if `href` is ever missing that's an API bug to fix upstream, not to paper over here. */
110
+ private normalizeFileFieldValue;
96
111
  private normalizeRelationValue;
97
112
  private deepEqual;
98
113
  /** Build a submit payload containing only fields that changed relative to
@@ -0,0 +1,60 @@
1
+ import { EventEmitter } from '../../../stencil-public-runtime';
2
+ import { ClientArchetype, ClientListValue, DocumentAttachment } from '../../../types/client-layout';
3
+ /**
4
+ * Archetype-driven single-invoice view. Given a `commons.invoice` binding and a data
5
+ * record, renders a clear, recognisable invoice summary — number, status, dates,
6
+ * customer/supplier, totals and attachments — instead of a generic field form.
7
+ *
8
+ * The line items (`lines` slot, the `commons.invoiceLine` sub-archetype) are NOT
9
+ * rendered here: this component only reserves a `slot="lines"` at the right spot in
10
+ * the layout. The host (`mrd-layout-section`) still owns all the actual RELATED_VIEW
11
+ * table data-loading/event wiring — via its existing `renderRelatedView()` — and
12
+ * projects the resulting `<mrd-table>` into that slot, so line editing keeps using
13
+ * the same generic create/edit-navigation mechanism every other relation already has.
14
+ *
15
+ * Like `mrd-document-view`, this component never resolves file hrefs itself — it only
16
+ * exposes the attachment references via `mrdAttachments` (now possibly more than one)
17
+ * and a plain download button; the host decides how/whether to render them.
18
+ */
19
+ export declare class MrdInvoiceView {
20
+ /** Resolved `commons.invoice` binding: slot name → concrete field/relation name. */
21
+ archetype: ClientArchetype;
22
+ /** The data record from the /data endpoint. Fields keyed by name; relations under `_links`. */
23
+ data: Record<string, unknown>;
24
+ locale: string;
25
+ /** listItems of the FIELD bound to the `status` slot, resolved by mrd-layout-section
26
+ * from its own items array (archetype metadata does not publish listItems), so the
27
+ * status badge can get a real label/color instead of the raw stored key. */
28
+ statusListItems: ClientListValue[] | null;
29
+ /** Navigate to the customer/supplier/container. Host resolves the href and routes. */
30
+ mrdNavigate: EventEmitter<{
31
+ href?: string;
32
+ label: string;
33
+ }>;
34
+ /** Download an attachment. Host resolves the href to a signed URL. */
35
+ mrdDownload: EventEmitter<{
36
+ href: string;
37
+ fileName: string;
38
+ }>;
39
+ /** The file(s) belonging to this invoice, fired once on load and again whenever the
40
+ * attachments slot's value changes. The host resolves the href(s) itself. */
41
+ mrdAttachments: EventEmitter<{
42
+ attachments: DocumentAttachment[];
43
+ }>;
44
+ /** Tracks the key attachments were last emitted for, so componentDidLoad and the
45
+ * data watcher don't emit duplicate events for the same set of files. */
46
+ private lastAttachmentKey;
47
+ componentDidLoad(): void;
48
+ dataChanged(): void;
49
+ private emitAttachmentsIfNeeded;
50
+ /** Value of a value-slot: reads data[field] via the slot→field map. */
51
+ private slotValue;
52
+ /** Relation link for a relation-slot: reads data._links[field]. */
53
+ private slotLink;
54
+ private renderPartyLink;
55
+ private renderContainer;
56
+ private renderStatus;
57
+ private renderAmounts;
58
+ private renderAttachments;
59
+ render(): any;
60
+ }
@@ -155,9 +155,22 @@ export declare class MrdLayoutSection {
155
155
  private renderTable;
156
156
  private renderItem;
157
157
  private renderImageModal;
158
+ /** Related VIEW/RELATED_VIEW/SEARCH items to keep rendering below an archetype's
159
+ * single-object view, excluding any item already consumed by that view itself
160
+ * (e.g. invoice's `lines`, see renderInvoiceObject). */
161
+ private relatedItems;
158
162
  /** Single-document view: the record's own type carries commons.document. Renders
159
163
  * a recognisable document instead of generic fields, keeping any related views/
160
164
  * searches below it. */
161
165
  private renderDocumentObject;
166
+ /** Single-invoice view: the record's own type carries commons.invoice. The `lines`
167
+ * RELATED_VIEW (matched generically by the commons.invoiceLine archetype on the
168
+ * item, not by name) is rendered *inside* mrd-invoice-view via its `slot="lines"` —
169
+ * reusing the existing renderRelatedView()/renderTable() wiring unchanged, so all
170
+ * page/sort/aggregation state stays owned here, only the DOM placement moves. */
171
+ private renderInvoiceObject;
172
+ /** Single-email view: the record's own type carries commons.email. Fully read-only —
173
+ * emails have no editable child collection, so this mirrors renderDocumentObject. */
174
+ private renderEmailObject;
162
175
  render(): any;
163
176
  }