@simai-studio/ui 5.20261023.212 → 5.20261025.207

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 (50) hide show
  1. package/README.md +4 -4
  2. package/distr/component/button-group/css/button-group.min.css +1 -1
  3. package/distr/core/contracts/public-variables.v1.json +88 -0
  4. package/distr/core/contracts/third-party-notices.v1.json +1 -1
  5. package/distr/core/css/core.css +3 -2
  6. package/distr/core/js/composition/overlay.mjs +472 -24
  7. package/distr/core/js/composition/sortable-inserter.mjs +534 -0
  8. package/distr/core/js/core-loader.js +1 -1
  9. package/distr/core/js/core-loader.min.js +1 -1
  10. package/distr/core/js/core-rules.js +242 -185
  11. package/distr/core/js/core-rules.min.js +1 -1
  12. package/distr/core/js/open-surface-mark.js +88 -0
  13. package/distr/core/js/template-utilities.generated.json +3 -0
  14. package/distr/rule/js/rule.min.js +1 -1
  15. package/distr/rule/rule.json +47 -1
  16. package/distr/smart/color/css/color.min.css +1 -0
  17. package/distr/smart/color/js/color.min.js +36 -17
  18. package/distr/smart/color/smart.manifest.json +45 -4
  19. package/distr/smart/color/template/default.js +13 -2
  20. package/distr/smart/composition-overlay/css/composition-overlay.min.css +1 -1
  21. package/distr/smart/composition-overlay/js/composition-overlay.min.js +1 -1
  22. package/distr/smart/composition-overlay/smart.manifest.json +178 -11
  23. package/distr/smart/dropdown/css/dropdown.min.css +1 -0
  24. package/distr/smart/dropdown/js/dropdown.min.js +41 -21
  25. package/distr/smart/dropdown/smart.manifest.json +62 -3
  26. package/distr/smart/dropdown/template/default.js +5 -1
  27. package/distr/smart/field-renderers/js/field-renderers.min.js +54 -42
  28. package/distr/smart/image-field/css/image-field.min.css +1 -0
  29. package/distr/smart/image-field/js/image-field.min.js +62 -0
  30. package/distr/smart/image-field/smart.manifest.json +519 -0
  31. package/distr/smart/image-field/studio.fixture.json +15 -0
  32. package/distr/smart/image-field/studio.scenario.json +22 -0
  33. package/distr/smart/image-field/template/default.js +125 -0
  34. package/distr/smart/inputs/css/inputs.min.css +1 -0
  35. package/distr/smart/inputs/js/inputs.min.js +93 -75
  36. package/distr/smart/inputs/smart.manifest.json +62 -3
  37. package/distr/smart/inputs/template/default.js +8 -2
  38. package/distr/smart/sortable/css/sortable.min.css +1 -1
  39. package/distr/smart/sortable/js/sortable.min.js +1 -1
  40. package/distr/smart/sortable/smart.manifest.json +101 -14
  41. package/distr/smart/switch/css/switch.min.css +1 -0
  42. package/distr/smart/switch/js/switch.min.js +31 -13
  43. package/distr/smart/switch/smart.manifest.json +62 -3
  44. package/distr/smart/switch/template/default.js +2 -0
  45. package/distr/smart/textarea/css/textarea.min.css +1 -0
  46. package/distr/smart/textarea/js/textarea.min.js +51 -32
  47. package/distr/smart/textarea/smart.manifest.json +62 -3
  48. package/distr/smart/textarea/template/default.js +8 -1
  49. package/package-manifest.json +50 -39
  50. package/package.json +4 -4
@@ -144,10 +144,10 @@
144
144
  @click=${()=>t.loadEndpointFilterPage(e,r.nextCursor,i)}></sf-button>`:""}
145
145
  `:""}
146
146
  </div>
147
- `}function g(e,t){return m(e,t)}function h(e,t){const r=e.filter?.options??["image","document","archive","other"].map(e=>({value:e,label:be(t,`fileKind_${e}`)}));return m({...e,filter:{...e.filter||{},options:r,defaultOperator:e.filter?.defaultOperator??"in"}},t)}function $(e,t){const r=e.filter?.options??(Array.isArray(e.swatches)?e.swatches:[]).map(e=>"string"==typeof e?{value:e,label:e}:e).filter(e=>e?.value).map(e=>({value:e.value,label:e.label??e.value,color:e.value}));return r.length?m({...e,filter:{...e.filter||{},options:r,optionRenderer:e.filter?.optionRenderer??"swatch",defaultOperator:e.filter?.defaultOperator??"in"}},t):d(e,t)}const v={text:d,string:d,number:p,integer:p,date:f,datetime:f,range:c,"date-range":f,"multi-select":m,"single-select":m,choice:m,choices:m,boolean:m,user:m,"entity-multi-select":g,"entity-single-select":g,record:g,relation:g,lookup:g,file:h,color:$};function y(e={},t){const r=e.filter?.control||e.propertyType||e.type||e.dataType||"text";return(v[r]||v.text)(e,t)}const b="1/2",S="tonal",x=[[/^image\//u,"image"],[/^video\//u,"movie"],[/^audio\//u,"audiotrack"],[/^text\/(csv|tab-separated-values)$/u,"table"],[/^text\//u,"description"],[/pdf$/u,"picture_as_pdf"],[/(zip|compressed|tar|rar|7z)/u,"folder_zip"],[/(sheet|excel|spreadsheet)/u,"table"],[/(word|document)$/u,"description"],[/(presentation|powerpoint)/u,"slideshow"]];function w(e){const t=String(e||"").toLowerCase(),r=x.find(([e])=>e.test(t));return r?r[1]:"attach_file"}function k(e,t){const r=qe(t);return r?a.html`
147
+ `}function g(e,t){return m(e,t)}function h(e,t){const r=e.filter?.options??["image","document","archive","other"].map(e=>({value:e,label:be(t,`fileKind_${e}`)}));return m({...e,filter:{...e.filter||{},options:r,defaultOperator:e.filter?.defaultOperator??"in"}},t)}function $(e,t){const r=e.filter?.options??(Array.isArray(e.swatches)?e.swatches:[]).map(e=>"string"==typeof e?{value:e,label:e}:e).filter(e=>e?.value).map(e=>({value:e.value,label:e.label??e.value,color:e.value}));return r.length?m({...e,filter:{...e.filter||{},options:r,optionRenderer:e.filter?.optionRenderer??"swatch",defaultOperator:e.filter?.defaultOperator??"in"}},t):d(e,t)}const v={text:d,string:d,number:p,integer:p,date:f,datetime:f,range:c,"date-range":f,"multi-select":m,"single-select":m,choice:m,choices:m,boolean:m,user:m,"entity-multi-select":g,"entity-single-select":g,record:g,relation:g,lookup:g,file:h,color:$};function y(e={},t){const r=e.filter?.control||e.propertyType||e.type||e.dataType||"text";return(v[r]||v.text)(e,t)}const b="1/2",S="tonal",x=[[/^image\//u,"image"],[/^video\//u,"movie"],[/^audio\//u,"audiotrack"],[/^text\/(csv|tab-separated-values)$/u,"table"],[/^text\//u,"description"],[/pdf$/u,"picture_as_pdf"],[/(zip|compressed|tar|rar|7z)/u,"folder_zip"],[/(sheet|excel|spreadsheet)/u,"table"],[/(word|document)$/u,"description"],[/(presentation|powerpoint)/u,"slideshow"]];function w(e){const t=String(e||"").toLowerCase(),r=x.find(([e])=>e.test(t));return r?r[1]:"attach_file"}function k(e,t){const r=Ve(t);return r?a.html`
148
148
  <sf-color size="1/2" appearance="plain" value=${String(r)}
149
149
  label=${e.label||e.key||""} disabled></sf-color>
150
- `:a.nothing}function F(e,t){const r=qe(t),n=e.inheritedValue??"";return r||n?a.html`
150
+ `:a.nothing}function F(e,t){const r=Ve(t),n=e.inheritedValue??"";return r||n?a.html`
151
151
  <sf-color
152
152
  size="1"
153
153
  appearance="plain"
@@ -156,11 +156,11 @@
156
156
  label=${e.label||e.key||""}
157
157
  disabled
158
158
  ></sf-color>
159
- `:a.nothing}function T(e,t,r){const n=qe(t),l=e.inheritedValue??"";return a.html`
159
+ `:a.nothing}function T(e,t,r){const n=Ve(t),l=e.inheritedValue??"";return a.html`
160
160
  <sf-color
161
161
  size=${N}
162
162
  appearance="bordered"
163
- name=${U(e)}
163
+ name=${K(e)}
164
164
  value=${n?String(n):a.nothing}
165
165
  inherited-value=${l?String(l):a.nothing}
166
166
  swatches=${e.swatches?String(e.swatches):a.nothing}
@@ -169,11 +169,11 @@
169
169
  label=${e.label||e.key||""}
170
170
  @change=${t=>r.setFieldValue(e,t.detail?.value??"")}
171
171
  ></sf-color>
172
- `}function A(e,t){return t&&"object"==typeof t&&t.label?ee(e)?z(t):{component:{type:"reference-link",props:{line:b,label:String(t.label),icon:w(t.mime),...t.href?{href:String(t.href)}:{}}}}:null}function z(e){const t=String(e.mime??e.mimeType??""),r=Boolean(e.href)&&/^image\//u.test(t);return{component:{type:"file-preview",props:{compact:!0,fileName:String(e.label),mimeType:t,icon:w(t),...e.href?{href:String(e.href)}:{},...r?{imageUrl:String(e.href),kind:"image"}:{kind:"icon"},actions:!1,downloadAction:!1,removeAction:!1}}}}function _(e,t){if(!Array.isArray(t)||!t.length)return null;if("badges"===String(e.variant??""))return q(e,t);const r=e.options||e.filter?.options||e.constraints?.options,a=e=>{const t=Array.isArray(r)?r.find(t=>String(t?.value)===String(e)):null;return String(t?.label??t?.text??e)};return t.map(e=>({component:{type:"tag",props:{line:b,kind:"default",text:a(e)}}}))}function q(e,t){const r=e.options||e.filter?.options||e.constraints?.options;return t.map(t=>{const a=t&&"object"==typeof t?t.value:t,l=Array.isArray(r)?r.find(e=>String(e?.value)===String(a)):null,i=l?(0,n.f)(l):null,o=t&&"object"==typeof t&&void 0!==t.text?String(t.text):String(l?.label??l?.text??a);return{component:{type:"badge",props:{line:b,text:o,appearance:e.badgeAppearance??S,...i?.scheme?{scheme:i.scheme}:{},...i?.rootStyle?{rootStyle:i.rootStyle}:{}}}}})}const O={string:Q,date:E,datetime:E,boolean:P,choices:_,file:A,color:k,include:ae,choice:j,integer:C,number:C,user:M,record:R,relation:R,lookup:L};function V(e,t){return{yes:e.trueText??e.labels?.true??be(t,"yes"),no:e.falseText??e.labels?.false??be(t,"no")}}function P(e,t,r){if("boolean"!=typeof t)return null;const a=V(e,r);return t?a.yes:a.no}function j(e,t){const r=e.options||e.filter?.options||e.constraints?.options;if(!Array.isArray(r))return null;const a=r.find(e=>String(e?.value)===String(t));if(!a)return null;const l=(0,n.f)(a);return{component:{type:"badge",props:{line:b,text:a.label??a.text??String(t),appearance:e.badgeAppearance??S,...l?.scheme?{scheme:l.scheme}:{},...l?.rootStyle?{rootStyle:l.rootStyle}:{}}}}}function E(e,t,r){const a=r?.formatFieldValue?.(e,t);return"string"==typeof a&&""!==a?a:null}function C(e,t,r){const a=e.variant||e.filter?.variant,n=Number(qe(t));return"scale"===a&&Number.isFinite(n)?n<0||n>100?null:{component:{type:"progress-scale",props:{line:b,value:String(n)}}}:E(e,t,r)}function B(e){return{component:{type:"reference-link",props:{line:b,appearance:"plain",icon:"",label:String(e.label),...e.href?{href:String(e.href)}:{}}}}}function M(e,t){return t&&"object"==typeof t&&t.label?[{component:{type:"avatar",props:{line:b,text:t.avatarText||""}}},t.href?B(t):String(t.label)]:null}function R(e,t){return t&&"object"==typeof t&&t.label?B(t):null}function L(e,t){const r=xe(e,t);return r.length?r.map(e=>e.label).join(", "):null}function I(e={},t,r){const a=e.propertyType||e.type||e.dataType,n=O[a];if(!n)return null;const l=n(e,t,r);return l??null}let N="1";const K={record:Se,relation:Se,user:Se,lookup:we,string:ne,text:le,integer:ie,number:ie,date:ue,datetime:ce,boolean:pe,choice:me,choices:$e,file:Fe,color:T,include:re};function U(e){return`sf_field_${e.key||"value"}`}function D(e,t,r){return a.html`
172
+ `}function A(e,t){return t&&"object"==typeof t&&t.label?ee(e)?z(t):{component:{type:"reference-link",props:{line:b,label:String(t.label),icon:w(t.mime),...t.href?{href:String(t.href)}:{}}}}:null}function z(e){const t=String(e.mime??e.mimeType??""),r=Boolean(e.href)&&/^image\//u.test(t);return{component:{type:"file-preview",props:{compact:!0,fileName:String(e.label),mimeType:t,icon:w(t),...e.href?{href:String(e.href)}:{},...r?{imageUrl:String(e.href),kind:"image"}:{kind:"icon"},actions:!1,downloadAction:!1,removeAction:!1}}}}function _(e,t){if(!Array.isArray(t)||!t.length)return null;if("badges"===String(e.variant??""))return q(e,t);const r=e.options||e.filter?.options||e.constraints?.options,a=e=>{const t=Array.isArray(r)?r.find(t=>String(t?.value)===String(e)):null;return String(t?.label??t?.text??e)};return t.map(e=>({component:{type:"tag",props:{line:b,kind:"default",text:a(e)}}}))}function q(e,t){const r=e.options||e.filter?.options||e.constraints?.options;return t.map(t=>{const a=t&&"object"==typeof t?t.value:t,l=Array.isArray(r)?r.find(e=>String(e?.value)===String(a)):null,i=l?(0,n.f)(l):null,o=t&&"object"==typeof t&&void 0!==t.text?String(t.text):String(l?.label??l?.text??a);return{component:{type:"badge",props:{line:b,text:o,appearance:e.badgeAppearance??S,...i?.scheme?{scheme:i.scheme}:{},...i?.rootStyle?{rootStyle:i.rootStyle}:{}}}}})}const O={string:Q,date:E,datetime:E,boolean:P,choices:_,file:A,color:k,include:ae,choice:j,integer:B,number:B,user:M,record:R,relation:R,lookup:L};function V(e,t){return{yes:e.trueText??e.labels?.true??be(t,"yes"),no:e.falseText??e.labels?.false??be(t,"no")}}function P(e,t,r){if("boolean"!=typeof t)return null;const a=V(e,r);return t?a.yes:a.no}function j(e,t){const r=e.options||e.filter?.options||e.constraints?.options;if(!Array.isArray(r))return null;const a=r.find(e=>String(e?.value)===String(t));if(!a)return null;const l=(0,n.f)(a);return{component:{type:"badge",props:{line:b,text:a.label??a.text??String(t),appearance:e.badgeAppearance??S,...l?.scheme?{scheme:l.scheme}:{},...l?.rootStyle?{rootStyle:l.rootStyle}:{}}}}}function E(e,t,r){const a=r?.formatFieldValue?.(e,t);return"string"==typeof a&&""!==a?a:null}function B(e,t,r){const a=e.variant||e.filter?.variant,n=Number(Ve(t));return"scale"===a&&Number.isFinite(n)?n<0||n>100?null:{component:{type:"progress-scale",props:{line:b,value:String(n)}}}:E(e,t,r)}function C(e){return{component:{type:"reference-link",props:{line:b,appearance:"plain",icon:"",label:String(e.label),...e.href?{href:String(e.href)}:{}}}}}function M(e,t){return t&&"object"==typeof t&&t.label?[{component:{type:"avatar",props:{line:b,text:t.avatarText||""}}},t.href?C(t):String(t.label)]:null}function R(e,t){return t&&"object"==typeof t&&t.label?C(t):null}function L(e,t){const r=xe(e,t);return r.length?r.map(e=>e.label).join(", "):null}function I(e={},t,r){const a=e.propertyType||e.type||e.dataType,n=O[a];if(!n)return null;const l=n(e,t,r);return l??null}let N="1";const U={record:Se,relation:Se,user:Se,lookup:we,string:ne,text:le,integer:ie,number:ie,date:ue,datetime:ce,boolean:pe,choice:me,choices:$e,file:Ae,color:T,include:re};function K(e){return`sf_field_${e.key||"value"}`}function D(e,t,r){return a.html`
173
173
  <sf-country-code
174
174
  size=${N}
175
- name=${U(e)}
176
- value=${qe(t)??""}
175
+ name=${K(e)}
176
+ value=${Ve(t)??""}
177
177
  aria-label=${e.label||e.key||""}
178
178
  ?required=${Boolean(e.required)}
179
179
  ?disabled=${!0===e.readonly}
@@ -189,7 +189,7 @@
189
189
  root-class="flex-1 min-w-0"
190
190
  input-type="password"
191
191
  autocomplete="new-password"
192
- name=${U(e)}
192
+ name=${K(e)}
193
193
  placeholder=${l||a.nothing}
194
194
  ?required=${Boolean(e.required)&&!n}
195
195
  aria-label=${e.label||e.key||""}
@@ -206,15 +206,15 @@
206
206
  @click=${J}
207
207
  ></sf-icon-button>
208
208
  </span>
209
- `}function Q(e,t,r){return H(e)?Z(r,t):null}function W(e,t,r){return H(e)?a.html`<span class="sf-field-view">${Z(r,t)}</span>`:Ve(e,t,r)}const X=new Set(["image","image-card","image-list"]);function ee(e){return X.has(String(e.variant??""))}function te(e,t){const r=qe(t);return r?a.html`
209
+ `}function Q(e,t,r){return H(e)?Z(r,t):null}function W(e,t,r){return H(e)?a.html`<span class="sf-field-view">${Z(r,t)}</span>`:je(e,t,r)}const X=new Set(["image","image-card","image-list"]);function ee(e){return X.has(String(e.variant??""))}function te(e,t){const r=Ve(t);return r?a.html`
210
210
  <pre class="sf-field-include" data-language=${e.language?String(e.language):a.nothing}><code>${String(r)}</code></pre>
211
211
  `:a.nothing}function re(e,t,r){return a.html`
212
212
  <sf-textarea
213
213
  size=${N}
214
214
  appearance="bordered"
215
215
  class="sf-field-include-edit"
216
- name=${U(e)}
217
- value=${qe(t)??""}
216
+ name=${K(e)}
217
+ value=${Ve(t)??""}
218
218
  rows="8"
219
219
  spellcheck="false"
220
220
  ?required=${Boolean(e.required)}
@@ -223,11 +223,11 @@
223
223
  @change=${t=>r.setFieldValue(e,t.target?.value??"")}
224
224
  @input=${t=>r.setFieldValue(e,t.target?.value??"")}
225
225
  ></sf-textarea>
226
- `}function ae(e,t){const r=qe(t);if(!r)return a.nothing;const n=String(r).split("\n")[0];return a.html`<code>${n.length>60?`${n.slice(0,60)}…`:n}</code>`}function ne(e,t,r){return"phone"===String(e.variant??"")?D(e,t,r):H(e)?G(e,t,r):(t=qe(t),a.html`
226
+ `}function ae(e,t){const r=Ve(t);if(!r)return a.nothing;const n=String(r).split("\n")[0];return a.html`<code>${n.length>60?`${n.slice(0,60)}…`:n}</code>`}function ne(e,t,r){return"phone"===String(e.variant??"")?D(e,t,r):H(e)?G(e,t,r):(t=Ve(t),a.html`
227
227
  <sf-input
228
228
  size=${N}
229
229
  appearance="bordered"
230
- name=${U(e)}
230
+ name=${K(e)}
231
231
  value=${t??""}
232
232
  placeholder=${e.placeholder||a.nothing}
233
233
  ?required=${Boolean(e.required)}
@@ -235,11 +235,11 @@
235
235
  @input=${t=>r.setFieldValue(e,t.target?.value??"")}
236
236
  @change=${t=>r.setFieldValue(e,t.target?.value??"")}
237
237
  ></sf-input>
238
- `)}function le(e,t,r){return t=qe(t),a.html`
238
+ `)}function le(e,t,r){return t=Ve(t),a.html`
239
239
  <sf-textarea
240
240
  size=${N}
241
241
  appearance="bordered"
242
- name=${U(e)}
242
+ name=${K(e)}
243
243
  value=${t??""}
244
244
  placeholder=${e.placeholder||a.nothing}
245
245
  ?required=${Boolean(e.required)}
@@ -247,11 +247,11 @@
247
247
  @input=${t=>r.setFieldValue(e,t.target?.value??"")}
248
248
  @change=${t=>r.setFieldValue(e,t.target?.value??"")}
249
249
  ></sf-textarea>
250
- `}function ie(e,t,r){const n="number"===(e.propertyType||e.type);return t=qe(t),a.html`
250
+ `}function ie(e,t,r){const n="number"===(e.propertyType||e.type);return t=Ve(t),a.html`
251
251
  <sf-input
252
252
  size=${N}
253
253
  appearance="bordered"
254
- name=${U(e)}
254
+ name=${K(e)}
255
255
  value=${t??""}
256
256
  inputmode=${n?"decimal":"numeric"}
257
257
  ?required=${Boolean(e.required)}
@@ -259,16 +259,16 @@
259
259
  @input=${t=>{const a=t.target?.value??"";r.setFieldValue(e,""===a?null:Number(a))}}
260
260
  @change=${t=>{const a=t.target?.value??"";r.setFieldValue(e,""===a?null:Number(a))}}
261
261
  ></sf-input>
262
- `}const oe=/^(\d{4}-\d{2}-\d{2})[T ](\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?)(Z|[+-]\d{2}:?\d{2})?$/;function se(e){const t="string"==typeof e?e.trim().match(oe):null;return t?{date:t[1],suffix:`T${t[2]}${t[3]||""}`}:{date:e,suffix:""}}function ue(e,t,r){t=qe(t);const{date:n,suffix:l}=se(t);return a.html`
262
+ `}const oe=/^(\d{4}-\d{2}-\d{2})[T ](\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?)(Z|[+-]\d{2}:?\d{2})?$/;function se(e){const t="string"==typeof e?e.trim().match(oe):null;return t?{date:t[1],suffix:`T${t[2]}${t[3]||""}`}:{date:e,suffix:""}}function ue(e,t,r){t=Ve(t);const{date:n,suffix:l}=se(t);return a.html`
263
263
  <sf-datepicker
264
264
  size=${N}
265
- name=${U(e)}
265
+ name=${K(e)}
266
266
  value=${n??""}
267
267
  aria-label=${e.label||e.key||""}
268
268
  ?required=${Boolean(e.required)}
269
269
  @change=${t=>{const a=t.detail?.value??t.target?.value??null;r.setFieldValue(e,a&&l?`${a}${l}`:a)}}
270
270
  ></sf-datepicker>
271
- `}let de=0;function ce(e,t,r){const n=(0,o.AC)(t),l=String(e.label||e.key||""),i=U(e),s="sf-field-datetime-message-"+ ++de,u=e=>be(r,e).replace("{label}",l),d=(t,a)=>{if("date"===a&&t.target!==t.currentTarget)return;const l=t.currentTarget?.closest?.(".sf-field-datetime");if(!l)return;const i=l.querySelector("sf-datepicker"),s=l.querySelector("sf-input.sf-field-datetime-time"),u=String("date"===a?t.detail?.value??i?.value??"":i?.value??""),d=String(s?.value??""),c=(0,o.cy)(n,{date:u,time:d}),p=c.error?be(r,`dateTime_${c.error}`):"",f=l.querySelector(".sf-field-datetime-message");f&&(f.textContent=p,f.hidden=!p),l.toggleAttribute("data-invalid",Boolean(p));const m="timeMissing"===c.error||"timeInvalid"===c.error;if(s?.toggleAttribute("invalid",m),i?.toggleAttribute("invalid","dateMissing"===c.error||"dateInvalid"===c.error),r.setFieldError?.(e,p||null),c.error)return void r.setFieldValue(e,void 0);const g=(0,o.d2)(d);s&&g&&g!==d&&(s.value=g);const h=null===c.value?n.known&&!n.date:c.value===n.raw;r.setFieldValue(e,h?void 0:c.value)};return a.html`
271
+ `}let de=0;function ce(e,t,r){const n=(0,o.AC)(t),l=String(e.label||e.key||""),i=K(e),s="sf-field-datetime-message-"+ ++de,u=e=>be(r,e).replace("{label}",l),d=(t,a)=>{if("date"===a&&t.target!==t.currentTarget)return;const l=t.currentTarget?.closest?.(".sf-field-datetime");if(!l)return;const i=l.querySelector("sf-datepicker"),s=l.querySelector("sf-input.sf-field-datetime-time"),u=String("date"===a?t.detail?.value??i?.value??"":i?.value??""),d=String(s?.value??""),c=(0,o.cy)(n,{date:u,time:d}),p=c.error?be(r,`dateTime_${c.error}`):"",f=l.querySelector(".sf-field-datetime-message");f&&(f.textContent=p,f.hidden=!p),l.toggleAttribute("data-invalid",Boolean(p));const m="timeMissing"===c.error||"timeInvalid"===c.error;if(s?.toggleAttribute("invalid",m),i?.toggleAttribute("invalid","dateMissing"===c.error||"dateInvalid"===c.error),r.setFieldError?.(e,p||null),c.error)return void r.setFieldValue(e,void 0);const g=(0,o.d2)(d);s&&g&&g!==d&&(s.value=g);const h=null===c.value?n.known&&!n.date:c.value===n.raw;r.setFieldValue(e,h?void 0:c.value)};return a.html`
272
272
  <div class="sf-field-datetime flex flex-col gap-1/4 min-w-0" role="group" aria-label=${l}
273
273
  aria-describedby=${s} data-datetime=${e.key||"value"}>
274
274
  <div class="flex flex-nowrap items-cross-center gap-1/3 min-w-0">
@@ -303,7 +303,7 @@
303
303
  `}function pe(e,t,r){if(!(!0!==e.required))return a.html`
304
304
  <sf-switch
305
305
  size=${N}
306
- name=${U(e)}
306
+ name=${K(e)}
307
307
  ?checked=${!0===t}
308
308
  aria-label=${e.label||e.key||""}
309
309
  @change=${t=>r.setFieldValue(e,Boolean(t.target?.checked))}
@@ -316,13 +316,13 @@
316
316
  aria-label=${e.label||e.key||""}
317
317
  @change=${t=>{const a=t.detail?.value;r.setFieldValue(e,"yes"===a||"no"!==a&&null)}}
318
318
  ></sf-button-group>
319
- `}function fe(e,t,r){const a=e.options||e.filter?.options||e.constraints?.options||[],n=r?new Set((Array.isArray(t)?t:[]).map(e=>String(e))):new Set([String(t??"")]);return a.map(e=>({type:"text",size:"1",text:e.label??e.text??String(e.value),value:String(e.value),selected:n.has(String(e.value))}))}function me(e,t,r){return t=qe(t),a.html`
319
+ `}function fe(e,t,r){const a=e.options||e.filter?.options||e.constraints?.options||[],n=r?new Set((Array.isArray(t)?t:[]).map(e=>String(e))):new Set([String(t??"")]);return a.map(e=>({type:"text",size:"1",text:e.label??e.text??String(e.value),value:String(e.value),selected:n.has(String(e.value))}))}function me(e,t,r){return t=Ve(t),a.html`
320
320
  <sf-dropdown
321
321
  size=${N}
322
322
  appearance="outlined"
323
323
  mode="select"
324
324
  search="false"
325
- name=${U(e)}
325
+ name=${K(e)}
326
326
  ?required=${Boolean(e.required)}
327
327
  value=${t??""}
328
328
  aria-label=${e.label||e.key||""}
@@ -333,7 +333,7 @@
333
333
  <div class="sf-field-checklist grid gap-1/3 w-full min-w-0" role="group" aria-label=${e.label||e.key||""}
334
334
  style="grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr))">
335
335
  ${n.map(t=>a.html`<sf-checkbox size=${N}
336
- name=${U(e)} value=${String(t.value)}
336
+ name=${K(e)} value=${String(t.value)}
337
337
  label=${t.label??t.text??String(t.value)}
338
338
  .checked=${l.has(String(t.value))}
339
339
  @change=${a=>((t,a)=>{const i=n.filter(e=>String(e.value)===String(t.value)?a:l.has(String(e.value))).map(e=>e.value);r.setFieldValue(e,i)})(t,Boolean(a.target?.checked??a.detail?.checked))}></sf-checkbox>`)}
@@ -345,7 +345,7 @@
345
345
  mode="select"
346
346
  multiple
347
347
  search="false"
348
- name=${U(e)}
348
+ name=${K(e)}
349
349
  ?required=${Boolean(e.required)}
350
350
  aria-label=${e.label||e.key||""}
351
351
  .options=${fe(e,t,!0)}
@@ -358,7 +358,7 @@
358
358
  appearance="outlined"
359
359
  mode="select"
360
360
  search="true"
361
- name=${U(e)}
361
+ name=${K(e)}
362
362
  ?required=${Boolean(e.required)}
363
363
  value=${i?String(i.value):""}
364
364
  placeholder=${e.placeholder||be(r,"pickRecord")}
@@ -395,7 +395,7 @@
395
395
  mode="select"
396
396
  ?multiple=${n}
397
397
  search="true"
398
- name=${U(e)}
398
+ name=${K(e)}
399
399
  ?required=${Boolean(e.required)}
400
400
  value=${n?a.nothing:s[0]?String(s[0].value):""}
401
401
  placeholder=${e.placeholder||be(r,"pickFromList")}
@@ -424,7 +424,19 @@
424
424
  </div>
425
425
  `:a.nothing}
426
426
  </div>
427
- `}function ke(e){return Array.isArray(e)?e.filter(e=>e&&"object"==typeof e):e&&"object"==typeof e?[e]:[]}function Fe(e,t,r){const n=ke(t),l=!0===e.multiple||Array.isArray(t),i=Boolean(r.startFieldUpload&&r.getFieldUploads),o=i?r.getFieldUploads(e):null,s=Array.isArray(o)?o:[];return a.html`
427
+ `}function ke(e){return Array.isArray(e)?e.filter(e=>e&&"object"==typeof e):e&&"object"==typeof e?[e]:[]}function Fe(e,t){return"image"===String(e.variant??"")&&!0!==e.multiple&&ke(t).length<=1}function Te(e,t,r){const n=ke(t)[0]??null,l=Array.isArray(t);return a.html`
428
+ <sf-image-field
429
+ size=${N}
430
+ name=${K(e)}
431
+ accept=${e.accept?String(e.accept):a.nothing}
432
+ hint=${e.uploadSupportingText||a.nothing}
433
+ .value=${n}
434
+ aria-label=${e.label||e.key||""}
435
+ ?required=${Boolean(e.required)}
436
+ ?disabled=${!0===e.readonly}
437
+ @change=${t=>{const a=t.detail?.value??null;r.setFieldValue(e,l?a?[a]:[]:a);const n=t.detail?.file;n&&r.startFieldUpload&&r.startFieldUpload(e,[{name:n.name,state:"process",progress:0,file:n}])}}
438
+ ></sf-image-field>
439
+ `}function Ae(e,t,r){if(Fe(e,t))return Te(e,t,r);const n=ke(t),l=!0===e.multiple||Array.isArray(t),i=Boolean(r.startFieldUpload&&r.getFieldUploads),o=i?r.getFieldUploads(e):null,s=Array.isArray(o)?o:[];return a.html`
428
440
  <div class="sf-field-file flex flex-col">
429
441
  ${n.map((t,i)=>a.html`
430
442
  <sf-file-preview
@@ -443,7 +455,7 @@
443
455
  ${i?a.html`
444
456
  <sf-file-upload
445
457
  size=${N}
446
- name=${U(e)}
458
+ name=${K(e)}
447
459
  accept=${String(e.accept??"")}
448
460
  formats=${String(e.formats??"")}
449
461
  link-text=${e.uploadText||a.nothing}
@@ -458,37 +470,37 @@
458
470
  ></sf-file-upload>
459
471
  `:a.nothing}
460
472
  </div>
461
- `}const Te=e=>"1/2"===e?.size?"1/2":"1";function Ae(e={},t,r,a={}){const n=e.propertyType||e.type||e.dataType;if(!0===e.readonly&&Ne[n])return Ke(e,t,r,a);const l=K[n];if(!l||!r?.setFieldValue)return null;const i=N;N=Te(a);try{return l(e,t,r)}finally{N=i}}let ze="1";function _e(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.text}function qe(e){return _e(e)?e.value:e}function Oe(e,t,r){const a=r?.formatFieldValue?.(e,t);if("string"==typeof a)return a;if(_e(t))return t.text;const n=qe(t);return null==n?"":String(n)}function Ve(e,t,r){const n=Oe(e,t,r);return n?a.html`<span class="sf-field-view">${n}</span>`:a.nothing}function Pe(e,t,r){if(null==t||""===t)return a.nothing;const n=e.variant||e.filter?.variant,l=Number(qe(t));if("scale"===n&&Number.isFinite(l)&&l>=0&&l<=100)return a.html`<sf-progress-scale size="1" value=${String(l)}></sf-progress-scale>`;const i=Oe(e,t,r);return a.html`<span class="sf-field-view">${e.unit?`${i} ${e.unit}`:i}</span>`}function je(e,t,r){const n=Oe(e,t,r);return n?a.html`<span class="sf-field-view">${n}</span>`:a.nothing}function Ee(e,t,r){if("boolean"!=typeof t)return a.nothing;const n=V(e,r);return a.html`<span class="sf-field-view">${t?n.yes:n.no}</span>`}function Ce(e,t){const r=e.options||e.filter?.options||e.constraints?.options,l=Array.isArray(r)?r.find(e=>String(e?.value)===String(t)):null;if(!l)return a.nothing;const i=(0,n.f)(l);return a.html`
473
+ `}const ze=e=>"1/2"===e?.size?"1/2":"1";function _e(e={},t,r,a={}){const n=e.propertyType||e.type||e.dataType;if(!0===e.readonly&&Ke[n])return De(e,t,r,a);const l=U[n];if(!l||!r?.setFieldValue)return null;const i=N;N=ze(a);try{return l(e,t,r)}finally{N=i}}let qe="1";function Oe(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.text}function Ve(e){return Oe(e)?e.value:e}function Pe(e,t,r){const a=r?.formatFieldValue?.(e,t);if("string"==typeof a)return a;if(Oe(t))return t.text;const n=Ve(t);return null==n?"":String(n)}function je(e,t,r){const n=Pe(e,t,r);return n?a.html`<span class="sf-field-view">${n}</span>`:a.nothing}function Ee(e,t,r){if(null==t||""===t)return a.nothing;const n=e.variant||e.filter?.variant,l=Number(Ve(t));if("scale"===n&&Number.isFinite(l)&&l>=0&&l<=100)return a.html`<sf-progress-scale size="1" value=${String(l)}></sf-progress-scale>`;const i=Pe(e,t,r);return a.html`<span class="sf-field-view">${e.unit?`${i} ${e.unit}`:i}</span>`}function Be(e,t,r){const n=Pe(e,t,r);return n?a.html`<span class="sf-field-view">${n}</span>`:a.nothing}function Ce(e,t,r){if("boolean"!=typeof t)return a.nothing;const n=V(e,r);return a.html`<span class="sf-field-view">${t?n.yes:n.no}</span>`}function Me(e,t){const r=e.options||e.filter?.options||e.constraints?.options,l=Array.isArray(r)?r.find(e=>String(e?.value)===String(t)):null;if(!l)return a.nothing;const i=(0,n.f)(l);return a.html`
462
474
  <sf-badge
463
- line=${ze}
475
+ line=${qe}
464
476
  appearance=${e.badgeAppearance??S}
465
477
  scheme=${i.scheme}
466
478
  style=${i.rootStyle||a.nothing}
467
479
  text=${String(l.label??l.text??t)}
468
480
  ></sf-badge>
469
- `}function Be(e,t){if(!Array.isArray(t)||!t.length)return a.nothing;const r=e.options||e.filter?.options||e.constraints?.options;return a.html`
481
+ `}function Re(e,t){if(!Array.isArray(t)||!t.length)return a.nothing;const r=e.options||e.filter?.options||e.constraints?.options;return a.html`
470
482
  <span class="sf-field-view flex flex-wrap items-cross-center gap-1/3 min-w-0">
471
- ${t.map(e=>a.html`<sf-tag root-class="flex-none" line=${ze} kind="default" text=${(e=>{const t=Array.isArray(r)?r.find(t=>String(t?.value)===String(e)):null;return String(t?.label??t?.text??e)})(e)}></sf-tag>`)}
483
+ ${t.map(e=>a.html`<sf-tag root-class="flex-none" line=${qe} kind="default" text=${(e=>{const t=Array.isArray(r)?r.find(t=>String(t?.value)===String(e)):null;return String(t?.label??t?.text??e)})(e)}></sf-tag>`)}
472
484
  </span>
473
- `}function Me(e,t){return t&&"object"==typeof t&&t.label?a.html`
485
+ `}function Le(e,t){return t&&"object"==typeof t&&t.label?a.html`
474
486
  <span class="sf-field-view flex items-cross-center gap-1/3">
475
- <sf-avatar line=${ze} text=${t.avatarText||""}></sf-avatar>
476
- ${t.href?a.html`<sf-reference-link appearance="plain" icon="" line=${ze}
487
+ <sf-avatar line=${qe} text=${t.avatarText||""}></sf-avatar>
488
+ ${t.href?a.html`<sf-reference-link appearance="plain" icon="" line=${qe}
477
489
  label=${String(t.label)} href=${String(t.href)}></sf-reference-link>`:a.html`<span>${String(t.label)}</span>`}
478
490
  </span>
479
- `:a.nothing}function Re(e,t){return t&&"object"==typeof t&&t.label?a.html`
491
+ `:a.nothing}function Ie(e,t){return t&&"object"==typeof t&&t.label?a.html`
480
492
  <sf-reference-link
481
493
  appearance="plain"
482
494
  icon=""
483
- line=${ze}
495
+ line=${qe}
484
496
  label=${String(t.label)}
485
497
  href=${t.href?String(t.href):a.nothing}
486
498
  ></sf-reference-link>
487
- `:a.nothing}function Le(e,t){const r=xe(e,t);return r.length?1===r.length&&!0!==e.multiple?a.html`<span class="sf-field-view">${r[0].label}</span>`:a.html`
499
+ `:a.nothing}function Ne(e,t){const r=xe(e,t);return r.length?1===r.length&&!0!==e.multiple?a.html`<span class="sf-field-view">${r[0].label}</span>`:a.html`
488
500
  <span class="sf-field-view flex flex-wrap items-cross-center gap-1/3 min-w-0">
489
- ${r.map(e=>a.html`<sf-tag root-class="flex-none" line=${ze} kind="default" text=${e.label}></sf-tag>`)}
501
+ ${r.map(e=>a.html`<sf-tag root-class="flex-none" line=${qe} kind="default" text=${e.label}></sf-tag>`)}
490
502
  </span>
491
- `:a.nothing}function Ie(e,t){const r=ke(t);if(!r.length)return a.nothing;const n=ee(e),l="image-card"===String(e.variant??"");return a.html`
503
+ `:a.nothing}function Ue(e,t){const r=ke(t);if(!r.length)return a.nothing;const n=ee(e),l="image-card"===String(e.variant??"");return a.html`
492
504
  <span class="sf-field-view flex ${l?"flex-row":"flex-col"} gap-1/3">
493
505
  ${r.map(e=>a.html`
494
506
  <sf-file-preview
@@ -504,4 +516,4 @@
504
516
  ></sf-file-preview>
505
517
  `)}
506
518
  </span>
507
- `}const Ne={string:W,text:Ve,integer:Pe,number:Pe,date:je,datetime:je,boolean:Ee,choice:Ce,choices:Be,user:Me,record:Re,relation:Re,lookup:Le,file:Ie,color:F,include:te};function Ke(e={},t,r,a={}){const n=e.propertyType||e.type||e.dataType,l=Ne[n];if(!l)return null;const i=ze;ze=Te(a);try{return l(e,t,r)}finally{ze=i}}"undefined"!=typeof window&&(window.SF=window.SF||{},window.SF.fieldRenderers={...window.SF.fieldRenderers||{},renderCellField:I,renderEditField:Ae,renderFilterField:y,renderViewField:Ke,FILTER_RENDERERS:v,dateTime:{split:o.AC,compose:o.cy,normalizeTime:o.d2},registry:i.u.map(e=>{return{...e,modes:(t=e.type,(0,i.U)(t,{view:Ne,edit:K,cell:O,filter:v}))};var t})},globalThis.document?.dispatchEvent?.(new CustomEvent("sf-field-renderers-ready"))),t()}catch(Ue){t(Ue)}})},fc654eb7fab0(e,t,r){r.d(t,{U:()=>n});const a=Object.freeze([{type:"string",label:{ru:"Строка",en:"String"},variants:[{id:"phone",label:{ru:"Телефон",en:"Phone"}},{id:"password",label:{ru:"Пароль",en:"Password"},writeOnly:!0}],params:["placeholder","required","readonly"]},{type:"text",label:{ru:"Текст",en:"Text"},variants:[],params:["placeholder","required","readonly"]},{type:"integer",label:{ru:"Целое число",en:"Integer"},variants:[],params:["unit","required","readonly"]},{type:"number",label:{ru:"Число",en:"Number"},variants:[{id:"scale",label:{ru:"Шкала 0–100",en:"Scale 0–100"}}],params:["unit","required","readonly"]},{type:"date",label:{ru:"Дата",en:"Date"},variants:[],params:["required","readonly"]},{type:"datetime",label:{ru:"Дата и время",en:"Date and time"},variants:[],params:["required","readonly"]},{type:"boolean",label:{ru:"Да или нет",en:"Yes or no"},variants:[],params:["trueText","falseText","required","readonly"]},{type:"choice",label:{ru:"Одно из списка",en:"One of a list"},variants:[],params:["options","badgeAppearance","required","readonly"]},{type:"choices",label:{ru:"Несколько из списка",en:"Several of a list"},variants:[{id:"badges",label:{ru:"Значками",en:"As badges"}},{id:"checklist",label:{ru:"Флажками",en:"As a checklist"}},{id:"select",label:{ru:"Выпадающим списком",en:"As a dropdown"}}],params:["options","badgeAppearance","required","readonly"]},{type:"user",label:{ru:"Пользователь",en:"User"},variants:[],params:["placeholder","searchPlaceholder","required","readonly"]},{type:"record",label:{ru:"Запись",en:"Record"},variants:[],params:["placeholder","searchPlaceholder","required","readonly"]},{type:"relation",label:{ru:"Связь",en:"Relation"},variants:[],params:["placeholder","searchPlaceholder","required","readonly"]},{type:"lookup",label:{ru:"Из справочника",en:"From a reference list"},variants:[],params:["options","multiple","placeholder","searchPlaceholder","required","readonly"]},{type:"file",label:{ru:"Файл",en:"File"},variants:[{id:"image",label:{ru:"Изображение",en:"Image"}},{id:"image-card",label:{ru:"Изображение карточкой",en:"Image card"}},{id:"image-list",label:{ru:"Изображения списком",en:"Image list"}}],params:["accept","multiple","formats","uploadText","uploadSupportingText","uploadHint","readonly"]},{type:"color",label:{ru:"Цвет",en:"Colour"},variants:[],params:["swatches","required","readonly"]},{type:"include",label:{ru:"Код",en:"Code"},variants:[],params:["language","required","readonly"]}]);function n(e,t){return{view:Boolean(t.view?.[e]),edit:Boolean(t.edit?.[e]),cell:t.cell?.[e]?"own":"text",filter:t.filter?.[e]?"own":"text"}}r.d(t,["u",0,a])},"5961360f41f4"(e,t,r){r.d(t,{f:()=>o});const a=Object.freeze(["main","tonal","outline"]),n=Object.freeze(["neutral","primary","secondary","tertiary","info","success","warning","danger","on-surface"]),l=Object.freeze(["1/3","1/2","1"]);Object.freeze(n.flatMap(e=>a.filter(t=>!("on-surface"===e&&"tonal"===t)).flatMap(t=>l.map(r=>Object.freeze({type:t,scheme:e,size:r})))));const i=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;function o(e={}){const t=e?.scheme??e?.color,r="string"==typeof t?t.trim():"",a=r.toLowerCase();return n.includes(a)?{scheme:a,rootStyle:""}:i.test(r)?{scheme:"neutral",rootStyle:`--sf-badge--background-color: color-mix(in srgb, ${r} 24%, transparent); --sf-badge--color: var(--sf-on-surface)`}:{scheme:"neutral",rootStyle:""}}},ddf1cdb42ecc(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("lit"):new Promise(e=>globalThis.addEventListener("sf-runtime-ready",()=>e(globalThis.SF.runtimeModule("lit")),{once:!0}))},"0d662e4d7d63"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("page-language"):new Promise(e=>globalThis.addEventListener("sf-runtime-ready",()=>e(globalThis.SF.runtimeModule("page-language")),{once:!0}))}};const t={};function r(a){const n=t[a];if(void 0!==n)return n.exports;const l=t[a]={exports:{}};return e[a](l,l.exports,r),l.exports}(()=>{const e="function"==typeof Symbol,t=e?Symbol("webpack queues"):"__webpack_queues__",a=e?Symbol("webpack exports"):"__webpack_exports__",n=e?Symbol("webpack error"):"__webpack_error__",l=e=>{e?.d<1&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))};r.a=(e,r,i)=>{let o;i&&((o=[]).d=-1);const s=new Set,u=e.exports;let d,c,p;const f=new Promise((e,t)=>{p=t,c=e});f[a]=u,f[t]=e=>(o&&e(o),s.forEach(e),f.catch(e=>{})),e.exports=f;r(e=>{let r;d=(e=>e.map(e=>{if(null!==e&&"object"==typeof e){if(e[t])return e;if(e.then){const r=[];r.d=0,e.then(e=>{i[a]=e,l(r)},e=>{i[n]=e,l(r)});const i={};return i[t]=e=>e(r),i}}const r={};return r[t]=e=>{},r[a]=e,r}))(e);const i=()=>d.map(e=>{if(e[n])throw e[n];return e[a]}),u=new Promise(e=>{r=()=>e(i),r.r=0;const a=e=>e!==o&&!s.has(e)&&(s.add(e),e&&!e.d&&(r.r++,e.push(r)));d.map(e=>e[t](a))});return r.r?u:i()},e=>(e?p(f[n]=e):c(u),l(o))),o?.d<0&&(o.d=0)}})(),r.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{if(Array.isArray(t))for(var a=0;a<t.length;){var n=t[a++],l=t[a++];r.o(e,n)?0===l&&a++:0===l?Object.defineProperty(e,n,{enumerable:!0,value:t[a++]}):Object.defineProperty(e,n,{enumerable:!0,get:l})}else for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);r("e5483002f3ea")})();
519
+ `}const Ke={string:W,text:je,integer:Ee,number:Ee,date:Be,datetime:Be,boolean:Ce,choice:Me,choices:Re,user:Le,record:Ie,relation:Ie,lookup:Ne,file:Ue,color:F,include:te};function De(e={},t,r,a={}){const n=e.propertyType||e.type||e.dataType,l=Ke[n];if(!l)return null;const i=qe;qe=ze(a);try{return l(e,t,r)}finally{qe=i}}"undefined"!=typeof window&&(window.SF=window.SF||{},window.SF.fieldRenderers={...window.SF.fieldRenderers||{},renderCellField:I,renderEditField:_e,renderFilterField:y,renderViewField:De,FILTER_RENDERERS:v,dateTime:{split:o.AC,compose:o.cy,normalizeTime:o.d2},registry:i.u.map(e=>{return{...e,modes:(t=e.type,(0,i.U)(t,{view:Ke,edit:U,cell:O,filter:v}))};var t})},globalThis.document?.dispatchEvent?.(new CustomEvent("sf-field-renderers-ready"))),t()}catch(He){t(He)}})},fc654eb7fab0(e,t,r){r.d(t,{U:()=>n});const a=Object.freeze([{type:"string",label:{ru:"Строка",en:"String"},variants:[{id:"phone",label:{ru:"Телефон",en:"Phone"}},{id:"password",label:{ru:"Пароль",en:"Password"},writeOnly:!0}],params:["placeholder","required","readonly"]},{type:"text",label:{ru:"Текст",en:"Text"},variants:[],params:["placeholder","required","readonly"]},{type:"integer",label:{ru:"Целое число",en:"Integer"},variants:[],params:["unit","required","readonly"]},{type:"number",label:{ru:"Число",en:"Number"},variants:[{id:"scale",label:{ru:"Шкала 0–100",en:"Scale 0–100"}}],params:["unit","required","readonly"]},{type:"date",label:{ru:"Дата",en:"Date"},variants:[],params:["required","readonly"]},{type:"datetime",label:{ru:"Дата и время",en:"Date and time"},variants:[],params:["required","readonly"]},{type:"boolean",label:{ru:"Да или нет",en:"Yes or no"},variants:[],params:["trueText","falseText","required","readonly"]},{type:"choice",label:{ru:"Одно из списка",en:"One of a list"},variants:[],params:["options","badgeAppearance","required","readonly"]},{type:"choices",label:{ru:"Несколько из списка",en:"Several of a list"},variants:[{id:"badges",label:{ru:"Значками",en:"As badges"}},{id:"checklist",label:{ru:"Флажками",en:"As a checklist"}},{id:"select",label:{ru:"Выпадающим списком",en:"As a dropdown"}}],params:["options","badgeAppearance","required","readonly"]},{type:"user",label:{ru:"Пользователь",en:"User"},variants:[],params:["placeholder","searchPlaceholder","required","readonly"]},{type:"record",label:{ru:"Запись",en:"Record"},variants:[],params:["placeholder","searchPlaceholder","required","readonly"]},{type:"relation",label:{ru:"Связь",en:"Relation"},variants:[],params:["placeholder","searchPlaceholder","required","readonly"]},{type:"lookup",label:{ru:"Из справочника",en:"From a reference list"},variants:[],params:["options","multiple","placeholder","searchPlaceholder","required","readonly"]},{type:"file",label:{ru:"Файл",en:"File"},variants:[{id:"image",label:{ru:"Изображение",en:"Image"}},{id:"image-card",label:{ru:"Изображение карточкой",en:"Image card"}},{id:"image-list",label:{ru:"Изображения списком",en:"Image list"}}],params:["accept","multiple","formats","uploadText","uploadSupportingText","uploadHint","required","readonly"]},{type:"color",label:{ru:"Цвет",en:"Colour"},variants:[],params:["swatches","required","readonly"]},{type:"include",label:{ru:"Код",en:"Code"},variants:[],params:["language","required","readonly"]}]);function n(e,t){return{view:Boolean(t.view?.[e]),edit:Boolean(t.edit?.[e]),cell:t.cell?.[e]?"own":"text",filter:t.filter?.[e]?"own":"text"}}r.d(t,["u",0,a])},"5961360f41f4"(e,t,r){r.d(t,{f:()=>o});const a=Object.freeze(["main","tonal","outline"]),n=Object.freeze(["neutral","primary","secondary","tertiary","info","success","warning","danger","on-surface"]),l=Object.freeze(["1/3","1/2","1"]);Object.freeze(n.flatMap(e=>a.filter(t=>!("on-surface"===e&&"tonal"===t)).flatMap(t=>l.map(r=>Object.freeze({type:t,scheme:e,size:r})))));const i=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;function o(e={}){const t=e?.scheme??e?.color,r="string"==typeof t?t.trim():"",a=r.toLowerCase();return n.includes(a)?{scheme:a,rootStyle:""}:i.test(r)?{scheme:"neutral",rootStyle:`--sf-badge--background-color: color-mix(in srgb, ${r} 24%, transparent); --sf-badge--color: var(--sf-on-surface)`}:{scheme:"neutral",rootStyle:""}}},ddf1cdb42ecc(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("lit"):new Promise(e=>globalThis.addEventListener("sf-runtime-ready",()=>e(globalThis.SF.runtimeModule("lit")),{once:!0}))},"0d662e4d7d63"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("page-language"):new Promise(e=>globalThis.addEventListener("sf-runtime-ready",()=>e(globalThis.SF.runtimeModule("page-language")),{once:!0}))}};const t={};function r(a){const n=t[a];if(void 0!==n)return n.exports;const l=t[a]={exports:{}};return e[a](l,l.exports,r),l.exports}(()=>{const e="function"==typeof Symbol,t=e?Symbol("webpack queues"):"__webpack_queues__",a=e?Symbol("webpack exports"):"__webpack_exports__",n=e?Symbol("webpack error"):"__webpack_error__",l=e=>{e?.d<1&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))};r.a=(e,r,i)=>{let o;i&&((o=[]).d=-1);const s=new Set,u=e.exports;let d,c,p;const f=new Promise((e,t)=>{p=t,c=e});f[a]=u,f[t]=e=>(o&&e(o),s.forEach(e),f.catch(e=>{})),e.exports=f;r(e=>{let r;d=(e=>e.map(e=>{if(null!==e&&"object"==typeof e){if(e[t])return e;if(e.then){const r=[];r.d=0,e.then(e=>{i[a]=e,l(r)},e=>{i[n]=e,l(r)});const i={};return i[t]=e=>e(r),i}}const r={};return r[t]=e=>{},r[a]=e,r}))(e);const i=()=>d.map(e=>{if(e[n])throw e[n];return e[a]}),u=new Promise(e=>{r=()=>e(i),r.r=0;const a=e=>e!==o&&!s.has(e)&&(s.add(e),e&&!e.d&&(r.r++,e.push(r)));d.map(e=>e[t](a))});return r.r?u:i()},e=>(e?p(f[n]=e):c(u),l(o))),o?.d<0&&(o.d=0)}})(),r.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{if(Array.isArray(t))for(var a=0;a<t.length;){var n=t[a++],l=t[a++];r.o(e,n)?0===l&&a++:0===l?Object.defineProperty(e,n,{enumerable:!0,value:t[a++]}):Object.defineProperty(e,n,{enumerable:!0,get:l})}else for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);r("e5483002f3ea")})();
@@ -0,0 +1 @@
1
+ @layer sf.components{.sf-image-field{container:sf-image-field/inline-size;position:relative;display:flex;flex-direction:column;gap:var(--sf-space-1\/4);min-width:0;min-inline-size:0;--sf-image-field--border-color: var(--sf-image-field-border-color, var(--sf-outline));--sf-image-field--background-color: var(--sf-image-field-background-color, var(--sf-surface-0));--sf-image-field--border-style: solid}.sf-image-field--size-1\/2{--sf-image-field--inset: calc(var(--sf-ui-1\/2--space-y-tightness-default) - var(--sf-px));--sf-image-field--thumb: var(--sf-ui-1--control-height);--sf-image-field--icon: var(--sf-text-height-1\/2);--sf-image-field--name-size: var(--sf-text-size-1\/2);--sf-image-field--name-height: var(--sf-text-height-1\/2);--sf-image-field--small-size: var(--sf-text-size-1\/3);--sf-image-field--small-height: var(--sf-text-height-1\/3)}.sf-image-field--size-1{--sf-image-field--inset: calc(var(--sf-ui-1--space-y-tightness-default) - var(--sf-px));--sf-image-field--thumb: var(--sf-ui-2--control-height);--sf-image-field--icon: var(--sf-text-height-1);--sf-image-field--name-size: var(--sf-text-size-1);--sf-image-field--name-height: var(--sf-text-height-1);--sf-image-field--small-size: var(--sf-text-size-1\/2);--sf-image-field--small-height: var(--sf-text-height-1\/2)}.sf-image-field--size-2{--sf-image-field--inset: calc(var(--sf-ui-2--space-y-tightness-default) - var(--sf-px));--sf-image-field--thumb: var(--sf-ui-3--control-height);--sf-image-field--icon: var(--sf-text-height-2);--sf-image-field--name-size: var(--sf-text-size-2);--sf-image-field--name-height: var(--sf-text-height-2);--sf-image-field--small-size: var(--sf-text-size-1);--sf-image-field--small-height: var(--sf-text-height-1)}.sf-image-field-label{display:flex;gap:var(--sf-space-1\/4);color:var(--sf-on-surface-variant);font-family:var(--sf-text--family);font-size:var(--sf-image-field--small-size);line-height:var(--sf-image-field--small-height)}.sf-image-field-required{color:var(--sf-error)}.sf-image-field-well{display:grid;grid-template-columns:auto minmax(0, 1fr) auto;grid-template-areas:"thumb body actions";align-items:center;grid-column-gap:var(--sf-image-field--inset);-webkit-column-gap:var(--sf-image-field--inset);-moz-column-gap:var(--sf-image-field--inset);column-gap:var(--sf-image-field--inset);grid-column-gap:var(--sf-image-field--inset);grid-column-gap:var(--sf-image-field-gap, var(--sf-image-field--inset));-webkit-column-gap:var(--sf-image-field-gap, var(--sf-image-field--inset));-moz-column-gap:var(--sf-image-field-gap, var(--sf-image-field--inset));column-gap:var(--sf-image-field-gap, var(--sf-image-field--inset));grid-row-gap:var(--sf-space-1\/4);row-gap:var(--sf-space-1\/4);padding-top:var(--sf-image-field--inset);padding-bottom:var(--sf-image-field--inset);padding-block:var(--sf-image-field--inset);padding-top:var(--sf-image-field--inset);padding-top:var(--sf-image-field-padding-block, var(--sf-image-field--inset));padding-bottom:var(--sf-image-field--inset);padding-bottom:var(--sf-image-field-padding-block, var(--sf-image-field--inset));padding-block:var(--sf-image-field-padding-block, var(--sf-image-field--inset));padding-left:var(--sf-image-field--inset);padding-right:var(--sf-image-field--inset);padding-inline:var(--sf-image-field--inset);padding-left:var(--sf-image-field--inset);padding-left:var(--sf-image-field-padding-inline, var(--sf-image-field--inset));padding-right:var(--sf-image-field--inset);padding-right:var(--sf-image-field-padding-inline, var(--sf-image-field--inset));padding-inline:var(--sf-image-field-padding-inline, var(--sf-image-field--inset));border:var(--sf-px) var(--sf-image-field--border-style) var(--sf-image-field--border-color);border:var(--sf-image-field-border-width, var(--sf-px)) var(--sf-image-field--border-style) var(--sf-image-field--border-color);border-radius:var(--sf-radius--ui);border-radius:var(--sf-image-field-radius, var(--sf-radius--ui));background-color:var(--sf-image-field--background-color);color:var(--sf-on-surface);transition-duration:var(--sf-duration-fast);transition-property:background-color,border-color;transition-timing-function:var(--sf-animation)}.sf-image-field--empty{--sf-image-field--border-style: dashed}.sf-image-field-thumb{grid-area:thumb;display:flex;align-items:center;justify-content:center;width:var(--sf-image-field--thumb);inline-size:var(--sf-image-field--thumb);width:var(--sf-image-field--thumb);width:var(--sf-image-field-thumbnail-size, var(--sf-image-field--thumb));inline-size:var(--sf-image-field-thumbnail-size, var(--sf-image-field--thumb));height:var(--sf-image-field--thumb);block-size:var(--sf-image-field--thumb);height:var(--sf-image-field--thumb);height:var(--sf-image-field-thumbnail-size, var(--sf-image-field--thumb));block-size:var(--sf-image-field-thumbnail-size, var(--sf-image-field--thumb));overflow:hidden;border-radius:var(--sf-radius--ui);border-radius:var(--sf-image-field-thumbnail-radius, var(--sf-radius--ui));background-color:var(--sf-surface-container);background-color:var(--sf-image-field-thumbnail-background-color, var(--sf-surface-container));--sf-on-surface-variant: var(--sf-on-surface-container--variant);--sf-icon--color: var(--sf-on-surface-variant)}.sf-image-field-thumb .sf-icon{color:var(--sf-icon--color);font-size:var(--sf-image-field--icon);width:var(--sf-image-field--icon);inline-size:var(--sf-image-field--icon);height:var(--sf-image-field--icon);block-size:var(--sf-image-field--icon)}.sf-image-field-image{display:block;width:100%;inline-size:100%;height:100%;block-size:100%;-o-object-fit:contain;object-fit:contain}.sf-image-field-body{grid-area:body;display:flex;flex-direction:column;min-width:0;min-inline-size:0;font-family:var(--sf-text--family)}.sf-image-field-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sf-on-surface);font-size:var(--sf-image-field--name-size);line-height:var(--sf-image-field--name-height)}.sf-image-field-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sf-on-surface-variant);font-size:var(--sf-image-field--small-size);line-height:var(--sf-image-field--small-height)}.sf-image-field--empty .sf-image-field-name{color:var(--sf-on-surface-variant)}.sf-image-field-actions{grid-area:actions;display:flex;align-items:center;gap:var(--sf-space-1\/4)}.sf-image-field.dragover{--sf-image-field--background-color: var(--sf-primary-transparent-select);--sf-image-field--border-color: var(--sf-outline-primary);--sf-image-field--border-style: solid}.sf-image-field.error{--sf-image-field--border-color: var(--sf-error)}.sf-image-field.disabled{--sf-image-field--background-color: var(--sf-disable);--sf-image-field--border-color: var(--sf-outline-disable)}.sf-image-field.disabled .sf-image-field-name,.sf-image-field.disabled .sf-image-field-meta,.sf-image-field.disabled .sf-image-field-label{color:var(--sf-on-disable)}.sf-image-field.disabled .sf-image-field-thumb{--sf-icon--color: var(--sf-on-disable)}.sf-image-field-message{color:var(--sf-on-surface-variant);font-family:var(--sf-text--family);font-size:var(--sf-image-field--small-size);line-height:var(--sf-image-field--small-height)}.sf-image-field.error .sf-image-field-message[data-field-message=error]{color:var(--sf-error)}.sf-image-field-input,.sf-image-field-live{position:absolute;width:var(--sf-px);inline-size:var(--sf-px);height:var(--sf-px);block-size:var(--sf-px);overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.sf-image-field-input{opacity:0;pointer-events:none}@container sf-image-field (inline-size < 24rem){.sf-image-field-well{grid-template-columns:auto minmax(0, 1fr);grid-template-areas:"thumb body" "thumb actions"}}@media(forced-colors: active){.sf-image-field-well{border-color:CanvasText}.sf-image-field.dragover .sf-image-field-well{border-color:Highlight}}}
@@ -0,0 +1,62 @@
1
+ (()=>{"use strict";var e={e138a730fd7c(e,t,i){i.d(t,{h:()=>n});let a=0;const r=new WeakMap;function n(e,{prefix:t="sf-field",required:i=!1,invalid:n=!1,hint:s="",errorMessage:o=""}={}){const l=function(e,t){if(e&&r.has(e))return r.get(e);const i=(e?.id?String(e.id).trim():"")||`${t}-${++a}`,n={controlId:`${i}-control`,messageId:`${i}-message`};return!e||"object"!=typeof e&&"function"!=typeof e||r.set(e,n),n}(e,t),c=Boolean(n),u=c&&o?o:s;return{...l,required:Boolean(i),invalid:c,message:u,describedBy:u?l.messageId:"",errorMessageId:c&&o?l.messageId:""}}},"98e26702f55a"(e,t,i){function a(){const e=globalThis.SF=globalThis.SF||{};return e.__deprecationNotes instanceof Map||Object.defineProperty(e,"__deprecationNotes",{value:new Map,configurable:!0}),e.__deprecationNotes}function r({component:e="",kind:t="attribute",attribute:i="",from:r,to:n=null}={}){if(!r)return;const s=[e,t,i,r].join("|"),o=a(),l=o.get(s);if(l)l.count+=1;else if(o.set(s,{component:e,kind:t,attribute:i,from:r,to:n,count:1}),function(){const e=globalThis.document?.documentElement;return"warn"===e?.dataset?.sfDeprecations||!0===globalThis.SF?.deprecations?.warn}()){const a=e?`${e}: `:"",s="value"===t?`${i}="${r}"`:`${t} ${r}`;globalThis.console?.warn?.(`[SIMAI Framework] ${a}${s} is a legacy name${n?`; write ${n}`:""}. See contracts/changes/journal.json.`)}}if(i.d(t,{cS:()=>n,id:()=>l}),"undefined"!=typeof globalThis){globalThis.SF=globalThis.SF||{};const e=globalThis.SF.deprecations||{};e.list=function(){return[...a().values()].map(e=>({...e}))},e.clear=function(){a().clear()},e.note=r,globalThis.SF.deprecations=e}const n=Object.freeze(["1/2","1","2"]),s=Object.freeze({"1/3":"1/2",3:"2"}),o=new Set;function l(e,t="field",i="1"){const a=String(e??"").trim().toLowerCase();if(n.includes(a))return a;if(Object.hasOwn(s,a)){const e=s[a];r({component:t,kind:"value",attribute:"size",from:a,to:e});const i=`${t}:${a}`;return o.has(i)||"undefined"==typeof console||(o.add(i),console.warn(`[SIMAI Framework] ${t}: size ${a} is retired for form fields; rendering size ${e}.`)),e}return i}},"3ee997e7a076"(e,t,i){i.a(e,async(e,t)=>{try{var a=i("fbe0570fcc69"),r=i("0d662e4d7d63"),n=i("e138a730fd7c"),s=i("98e26702f55a"),o=i("4a9754c1c12d"),l=i("c22743d41d10"),c=e([a,r,o]);[a,r,o]=c.then?(await c)():c;var u=i.n(a);const d={en:{group:"Image",choose:"Choose…",chooseName:"Choose an image",replace:"Replace…",replaceName:"Replace the image",remove:"Remove",removeName:"Remove the image",empty:"No image chosen",emptyHint:"Drop a file here or choose one",drop:"Drop the file to use it",chosen:"Image chosen",removed:"Image removed",rejected:"This file is not accepted",quoted:"“%s”",bytes:"B",kilobytes:"KB",megabytes:"MB",gigabytes:"GB"},ru:{group:"Изображение",choose:"Выбрать…",chooseName:"Выбрать изображение",replace:"Заменить…",replaceName:"Заменить изображение",remove:"Убрать",removeName:"Убрать изображение",empty:"Изображение не выбрано",emptyHint:"Перетащите файл сюда или выберите его",drop:"Отпустите файл, чтобы поставить его",chosen:"Выбрано изображение",removed:"Изображение убрано",rejected:"Этот файл не подходит",quoted:"«%s»",bytes:"Б",kilobytes:"КБ",megabytes:"МБ",gigabytes:"ГБ"}},h="image/*";let m=0;class f extends(u()){static get props(){return{templateName:{attribute:"template",default:"default"},value:{default:""},name:{default:""},label:{default:""},hint:{default:""},accept:{default:h},size:{default:"1",values:s.cS},meta:{default:""},emptyText:{attribute:"empty-text",default:""},required:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},error:{type:Boolean,default:!1},invalid:{type:Boolean,default:!1},errorMessage:{attribute:"error-message",default:""},ariaLabel:{attribute:"aria-label",default:""},rootClass:{default:""}}}constructor(){if(super(),this._id="sf-image-field-"+ ++m,this._value=void 0,Object.prototype.hasOwnProperty.call(this,"value")){const e=this.value;delete this.value,this._value=(0,l.pn)(e)}this._objectUrl="",this._dimensions=new Map,this._failed=new Set,this.dragging=!1,this.announcement="",this._focusAfterRender=""}attributeChangedCallback(e,t,i){"value"!==e||t===i||this._writingValue||(this._value=void 0,this._releaseObjectUrl()),super.attributeChangedCallback(e,t,i)}get size(){return(0,s.id)(this.getAttribute("size")||"1","sf-image-field")}get name(){return this.getAttribute("name")||""}get label(){return this.getAttribute("label")||""}get hint(){return this.getAttribute("hint")||""}get accept(){return this.hasAttribute("accept")?this.getAttribute("accept")||"":h}get meta(){return this.getAttribute("meta")||""}get emptyText(){return this.getAttribute("empty-text")||""}get required(){return this.getBooleanAttr("required",!1)}get disabled(){return this.getBooleanAttr("disabled",!1)}get readonly(){return this.getBooleanAttr("readonly",!1)}get error(){return this.getBooleanAttr("error",!1)}get invalid(){return this.getBooleanAttr("invalid",!1)}get errorMessage(){return this.getAttribute("error-message")||""}get ariaLabel(){return this.getProp("ariaLabel")||""}get value(){return void 0!==this._value?this._value:(0,l.pn)(this.getAttribute("value"))}set value(e){this.setValue(e)}setValue(e){const t=(0,l.pn)(e);return t?.href!==this._objectUrl&&this._releaseObjectUrl(),this._value=t,this.requestComponentUpdate("value"),this}clear(){return this.setValue(null)}setError(e=""){const t=String(e??"");return t?(this.setAttribute("error-message",t),this.setAttribute("invalid","")):(this.removeAttribute("error-message"),this.removeAttribute("invalid")),this}get interactive(){return!this.disabled&&!this.readonly}text(e){return(0,r.pageText)(d,e,this,"sf-image-field")}quote(e){return this.text("quoted").replace("%s",e)}formatSize(e){const t=["bytes","kilobytes","megabytes","gigabytes"].map(e=>this.text(e));return(0,l.v7)(e,t,(0,r.pageLocale)(this))}metaText(e){if(this.meta)return this.meta;if(!e)return"";const t=e.href?this._dimensions.get(e.href):null;return[t?`${t.width}×${t.height}`:"",this.formatSize(e.size)].filter(Boolean).join(" · ")}input(){return this.querySelector(":scope .sf-image-field-input")}focusDelegate(){return this.querySelector(":scope .sf-image-field-actions button:not([disabled])")}choose(){if(!this.interactive)return!1;const e=this.input();return!!e&&(e.click(),!0)}takeFile(e,t="input"){if(!e||!this.interactive)return!1;if(!(0,l.cP)(this.accept,e))return this.reject([e],t),!1;this._releaseObjectUrl();let i="";try{i=URL.createObjectURL(e),this._objectUrl=i}catch{i=""}const a={value:"",label:e.name,mime:e.type||"",size:e.size,href:i,file:e};return this._value=a,this.announce(`${this.text("chosen")} ${this.quote(e.name)}`),this.requestComponentUpdate("value"),this._emitValue({value:a,file:e,source:t}),this.dispatchEvent(new CustomEvent("sf-image-field:select",{bubbles:!0,composed:!0,detail:{file:e,source:t,value:a,name:this.name}})),!0}removeImage(){const e=this.value;if(!e||!this.interactive)return!1;this._releaseObjectUrl(),this._value=null;const t=this.input();return t&&(t.value=""),this._focusAfterRender="choose",this.announce(this.text("removed")),this.requestComponentUpdate("value"),this._emitValue({value:null,file:null,source:"remove"}),this.dispatchEvent(new CustomEvent("sf-image-field:remove",{bubbles:!0,composed:!0,detail:{value:e,name:this.name}})),!0}reject(e,t){const i=e.map(e=>this.quote(e.name)).join(", ");this.announce(`${this.text("rejected")}: ${i}`),this.dispatchEvent(new CustomEvent("sf-image-field:reject",{bubbles:!0,composed:!0,detail:{files:e,accept:this.accept,source:t}}))}announce(e){this.announcement="",this.requestComponentUpdate("announce-clear"),clearTimeout(this._announceTimer),this._announceTimer=setTimeout(()=>{this.announcement=e,this.requestComponentUpdate("announce")},50)}_emitValue({value:e,file:t,source:i}){for(const a of["input","change"])this.dispatchEvent(new CustomEvent(a,{bubbles:!0,composed:!0,detail:{value:e,file:t,source:i,name:this.name}}))}_releaseObjectUrl(){if(this._objectUrl){try{URL.revokeObjectURL(this._objectUrl)}catch{}this._dimensions.delete(this._objectUrl),this._objectUrl=""}}onInputChange(e){e.stopPropagation();const t=e.target?.files?.[0];t&&this.takeFile(t,"input")}onInputEvent(e){e.stopPropagation()}onDragOver(e){Array.from(e.dataTransfer?.types||[]).includes("Files")&&(e.preventDefault(),this.interactive?(e.dataTransfer.dropEffect="copy",this.dragging||(this.dragging=!0,this.requestComponentUpdate("drag"))):e.dataTransfer.dropEffect="none")}onDragLeave(e){const t=e.currentTarget;e.relatedTarget&&t.contains(e.relatedTarget)||this.dragging&&(this.dragging=!1,this.requestComponentUpdate("drag"))}onDrop(e){const t=Array.from(e.dataTransfer?.types||[]),i=Array.from(e.dataTransfer?.files||[]);if(!i.length&&!t.includes("Files"))return;if(e.preventDefault(),this.dragging&&(this.dragging=!1,this.requestComponentUpdate("drag")),!this.interactive||!i.length)return;const a=i.find(e=>(0,l.cP)(this.accept,e)),r=i.filter(e=>!(0,l.cP)(this.accept,e));if(r.length&&this.reject(r,"drop"),!a)return;const n=this.input();if(n&&"function"==typeof DataTransfer)try{const e=new DataTransfer;e.items.add(a),n.files=e.files}catch{}this.takeFile(a,"drop")}onImageLoad(e,t){const i=e.target;if(!t||!i?.naturalWidth)return;const a=this._dimensions.get(t);a&&a.width===i.naturalWidth&&a.height===i.naturalHeight||(this._dimensions.set(t,{width:i.naturalWidth,height:i.naturalHeight}),this.requestComponentUpdate("dimensions"))}onImageError(e){e&&!this._failed.has(e)&&(this._failed.add(e),this.requestComponentUpdate("image-error"))}afterRender(e){if("function"==typeof e)return super.afterRender(e);this._focusAfterRender&&(this._focusAfterRender="",this.querySelector(":scope .sf-image-field-actions sf-button:not([disabled])")?.focus({preventScroll:!0}))}onDisconnected(){clearTimeout(this._announceTimer)}templateContext(){const e=this.getPropsContext(),t=this.value,i=(0,n.h)(this,{prefix:"sf-image-field",required:this.required,invalid:this.invalid||this.error,hint:this.hint,errorMessage:this.errorMessage}),a=this.hasSlotContent?.("error")?this.getSlotContent("error"):this.errorMessage,r=this.hasSlotContent?.("hint")?this.getSlotContent("hint"):this.hint,s=t?.label||"",o=Object.fromEntries(Object.keys(d.en).map(e=>[e,this.text(e)]));return this.createTemplateContext({...e,component:this,id:this._id,field:i,value:t,size:this.size,accept:this.accept,fileName:s,metaText:this.metaText(t),broken:Boolean(t?.href&&this._failed.has(t.href)),dragging:this.dragging&&this.interactive,interactive:this.interactive,announcement:this.announcement,message:i.invalid&&a?a:r,messageKind:i.invalid&&a?"error":"hint",words:o,names:{group:this.label||this.ariaLabel||o.group,choose:o.chooseName,replace:s?`${o.replaceName} ${this.quote(s)}`:o.replaceName,remove:s?`${o.removeName} ${this.quote(s)}`:o.removeName},rootClass:this.getRootClass()})}template(){return(0,o.Q)(this.templateContext())}}f.define("sf-image-field"),t()}catch(e){t(e)}})},"4a9754c1c12d"(e,t,i){i.a(e,async(e,a)=>{try{i.d(t,{Q:()=>d});var r=i("ddf1cdb42ecc"),n=e([r]),s=n.then?(await n)():n;r=s[0];const o={"1/2":"1/3",1:"1/2",2:"1"};function l(e){return e.value?e.broken?"broken_image":"image":"add_photo_alternate"}function c(e){const{value:t,component:i}=e,a=t?.href||"";return a&&!e.broken?r.html`<img class="sf-image-field-image" src=${a} alt=${e.fileName}
2
+ @load=${e=>i.onImageLoad(e,a)}
3
+ @error=${()=>i.onImageError(a)}>`:r.html`<i class="sf-icon" aria-hidden="true">${l(e)}</i>`}function u(e){const{component:t,value:i,words:a,names:n,field:s}=e;if(e.readonly)return r.nothing;const l=o[e.size]??"1/2",c=e.message?s.messageId:r.nothing;return r.html`
4
+ <span class="sf-image-field-actions">
5
+ ${i?r.html`
6
+ <sf-button class="sf-image-field-replace" size=${l} appearance="outline" scheme="on-surface"
7
+ text=${a.replace} aria-label=${n.replace} aria-describedby=${c}
8
+ ?disabled=${e.disabled}
9
+ @click=${()=>t.choose()}></sf-button>
10
+ <sf-button class="sf-image-field-remove" size=${l} appearance="link" scheme="on-surface"
11
+ text=${a.remove} aria-label=${n.remove}
12
+ ?disabled=${e.disabled}
13
+ @click=${()=>t.removeImage()}></sf-button>`:r.html`
14
+ <sf-button class="sf-image-field-choose" size=${l} appearance="outline" scheme="on-surface"
15
+ text=${a.choose} aria-label=${n.choose} aria-describedby=${c}
16
+ ?disabled=${e.disabled}
17
+ @click=${()=>t.choose()}></sf-button>`}
18
+ </span>
19
+ `}function d(e){const{component:t,field:i,value:a,words:n}=e,s=`${e.id}-label`,o=["sf-image-field",`sf-image-field--size-${e.size}`,a?"sf-image-field--filled":"sf-image-field--empty",i.invalid?"error":"",e.dragging?"dragover":"",e.disabled?"disabled":"",e.readonly?"readonly":"",e.rootClass].filter(Boolean),l=e.dragging?n.drop:a?e.fileName||n.group:e.emptyText||n.empty,d=e.dragging?"":a?e.metaText:e.interactive?n.emptyHint:"";return r.html`
20
+ <div class=${o.join(" ")} style=${e.rootStyle||r.nothing}>
21
+ ${e.label?r.html`
22
+ <span class="sf-image-field-label" id=${s}>
23
+ <span class="sf-image-field-label-text">${e.label}</span>
24
+ ${i.required?r.html`<span class="sf-image-field-required">*</span>`:r.nothing}
25
+ </span>`:r.nothing}
26
+
27
+ <div class="sf-image-field-well"
28
+ role="group"
29
+ aria-labelledby=${e.label?s:r.nothing}
30
+ aria-label=${e.label?r.nothing:e.names.group}
31
+ aria-describedby=${e.message?i.messageId:r.nothing}
32
+ aria-invalid=${i.invalid?"true":r.nothing}
33
+ @dragenter=${e=>t.onDragOver(e)}
34
+ @dragover=${e=>t.onDragOver(e)}
35
+ @dragleave=${e=>t.onDragLeave(e)}
36
+ @drop=${e=>t.onDrop(e)}>
37
+ <span class="sf-image-field-thumb">${c(e)}</span>
38
+ <span class="sf-image-field-body">
39
+ <span class="sf-image-field-name">${l}</span>
40
+ ${d?r.html`<span class="sf-image-field-meta">${d}</span>`:r.nothing}
41
+ </span>
42
+ ${u(e)}
43
+ </div>
44
+
45
+ <input type="file"
46
+ class="sf-image-field-input"
47
+ id=${i.controlId}
48
+ name=${e.name||r.nothing}
49
+ accept=${e.accept||r.nothing}
50
+ tabindex="-1"
51
+ aria-hidden="true"
52
+ ?required=${i.required&&!a}
53
+ ?disabled=${e.disabled||e.readonly}
54
+ @change=${e=>t.onInputChange(e)}
55
+ @input=${e=>t.onInputEvent(e)}>
56
+
57
+ ${e.message?r.html`<span id=${i.messageId} class="sf-image-field-message"
58
+ data-field-message=${e.messageKind}>${e.message}</span>`:r.nothing}
59
+
60
+ <span class="sf-image-field-live" role="status" aria-live="polite" aria-atomic="true">${e.announcement}</span>
61
+ </div>
62
+ `}a()}catch(h){a(h)}})},ddf1cdb42ecc(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("lit"):new Promise(e=>globalThis.addEventListener("sf-runtime-ready",()=>e(globalThis.SF.runtimeModule("lit")),{once:!0}))},"0d662e4d7d63"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("page-language"):new Promise(e=>globalThis.addEventListener("sf-runtime-ready",()=>e(globalThis.SF.runtimeModule("page-language")),{once:!0}))},fbe0570fcc69(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("smart-base"):new Promise(e=>globalThis.addEventListener("sf-runtime-ready",()=>e(globalThis.SF.runtimeModule("smart-base")),{once:!0}))},c22743d41d10(e,t,i){function a(e,t){const i=String(e||"").split(",").map(e=>e.trim().toLowerCase()).filter(Boolean);if(!i.length)return!0;const a=String(t?.name||"").toLowerCase(),r=String(t?.type||"").toLowerCase();return i.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?r.startsWith(e.slice(0,-1)):r===e)}function r(e){if(null==e||""===e)return null;let t=e;if("string"==typeof t){const e=t.trim();if(!e)return null;if(e.startsWith("{"))try{t=JSON.parse(e)}catch{return null}else t={href:e}}if("object"!=typeof t||Array.isArray(t))return null;const i=t.href?String(t.href):"",a=String(t.label??t.name??(i?function(e){const t=String(e).split(/[?#]/u)[0].split("/").pop()||"";try{return decodeURIComponent(t)}catch{return t}}(i):"")),r=void 0===t.value||null===t.value?"":String(t.value);if(!i&&!a&&!r)return null;const n={value:r,label:a,mime:String(t.mime??t.mimeType??""),size:"number"==typeof t.size?t.size:String(t.size??""),href:i};return t.file&&(n.file=t.file),n}function n(e,t=["B","KB","MB","GB"],i="en"){if("string"==typeof e)return e;const a=Number(e);if(null==e||!Number.isFinite(a)||a<0)return"";let r=a,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;const s=0===n||r>=10?0:1;let o;try{o=new Intl.NumberFormat(i,{maximumFractionDigits:s}).format(r)}catch{o=r.toFixed(s)}return`${o} ${t[n]}`}i.d(t,{cP:()=>a,pn:()=>r,v7:()=>n})}};const t={};function i(a){const r=t[a];if(void 0!==r)return r.exports;const n=t[a]={exports:{}};return e[a](n,n.exports,i),n.exports}(()=>{const e="function"==typeof Symbol,t=e?Symbol("webpack queues"):"__webpack_queues__",a=e?Symbol("webpack exports"):"__webpack_exports__",r=e?Symbol("webpack error"):"__webpack_error__",n=e=>{e?.d<1&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))};i.a=(e,i,s)=>{let o;s&&((o=[]).d=-1);const l=new Set,c=e.exports;let u,d,h;const m=new Promise((e,t)=>{h=t,d=e});m[a]=c,m[t]=e=>(o&&e(o),l.forEach(e),m.catch(e=>{})),e.exports=m;i(e=>{let i;u=(e=>e.map(e=>{if(null!==e&&"object"==typeof e){if(e[t])return e;if(e.then){const i=[];i.d=0,e.then(e=>{s[a]=e,n(i)},e=>{s[r]=e,n(i)});const s={};return s[t]=e=>e(i),s}}const i={};return i[t]=e=>{},i[a]=e,i}))(e);const s=()=>u.map(e=>{if(e[r])throw e[r];return e[a]}),c=new Promise(e=>{i=()=>e(s),i.r=0;const a=e=>e!==o&&!l.has(e)&&(l.add(e),e&&!e.d&&(i.r++,e.push(i)));u.map(e=>e[t](a))});return i.r?c:s()},e=>(e?h(m[r]=e):d(c),n(o))),o?.d<0&&(o.d=0)}})(),i.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{if(Array.isArray(t))for(var a=0;a<t.length;){var r=t[a++],n=t[a++];i.o(e,r)?0===n&&a++:0===n?Object.defineProperty(e,r,{enumerable:!0,value:t[a++]}):Object.defineProperty(e,r,{enumerable:!0,get:n})}else for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);i("3ee997e7a076")})();