@simai-studio/view 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE.md +183 -0
  2. package/README.md +75 -2
  3. package/dist/package-receipt.json +972 -0
  4. package/dist/set.json +141 -0
  5. package/dist/smart/rule.js +278 -0
  6. package/dist/smart/rule.js.gz +0 -0
  7. package/dist/smart/view/aliases.json +129 -0
  8. package/dist/smart/view/aliases.json.gz +0 -0
  9. package/dist/smart/view/component.json +1628 -0
  10. package/dist/smart/view/component.json.gz +0 -0
  11. package/dist/smart/view/css/view.css +208 -0
  12. package/dist/smart/view/css/view.css.gz +0 -0
  13. package/dist/smart/view/css/view.min.css +2 -0
  14. package/dist/smart/view/css/view.min.css.gz +0 -0
  15. package/dist/smart/view/examples.json +668 -0
  16. package/dist/smart/view/examples.json.gz +0 -0
  17. package/dist/smart/view/js/view.js +3955 -0
  18. package/dist/smart/view/js/view.js.gz +0 -0
  19. package/dist/smart/view/js/view.min.js +1 -0
  20. package/dist/smart/view/js/view.min.js.gz +0 -0
  21. package/dist/smart/view/lang/en.json +61 -0
  22. package/dist/smart/view/lang/en.json.gz +0 -0
  23. package/dist/smart/view/lang/ru.json +61 -0
  24. package/dist/smart/view/lang/ru.json.gz +0 -0
  25. package/dist/smart/view/probe.json +165 -0
  26. package/dist/smart/view/probe.json.gz +0 -0
  27. package/dist/smart/view/smart.manifest.json +1577 -0
  28. package/dist/smart/view/smart.manifest.json.gz +0 -0
  29. package/dist/smart/view/static/default/embedded.html +96 -0
  30. package/dist/smart/view/static/default/embedded.html.gz +0 -0
  31. package/dist/smart/view/static/default/open-record.html +242 -0
  32. package/dist/smart/view/static/default/open-record.html.gz +0 -0
  33. package/dist/smart/view/static/default/reference.html +242 -0
  34. package/dist/smart/view/static/default/reference.html.gz +0 -0
  35. package/dist/smart/view/static/sheets.json +282 -0
  36. package/dist/smart/view/static/sheets.json.gz +0 -0
  37. package/dist/smart/view-properties/aliases.json +174 -0
  38. package/dist/smart/view-properties/aliases.json.gz +0 -0
  39. package/dist/smart/view-properties/component.json +1906 -0
  40. package/dist/smart/view-properties/component.json.gz +0 -0
  41. package/dist/smart/view-properties/css/view-properties.css +1158 -0
  42. package/dist/smart/view-properties/css/view-properties.css.gz +0 -0
  43. package/dist/smart/view-properties/css/view-properties.min.css +2 -0
  44. package/dist/smart/view-properties/css/view-properties.min.css.gz +0 -0
  45. package/dist/smart/view-properties/examples.json +841 -0
  46. package/dist/smart/view-properties/examples.json.gz +0 -0
  47. package/dist/smart/view-properties/js/view-properties.js +10551 -0
  48. package/dist/smart/view-properties/js/view-properties.js.gz +0 -0
  49. package/dist/smart/view-properties/js/view-properties.min.js +1392 -0
  50. package/dist/smart/view-properties/js/view-properties.min.js.gz +0 -0
  51. package/dist/smart/view-properties/lang/en.json +89 -0
  52. package/dist/smart/view-properties/lang/en.json.gz +0 -0
  53. package/dist/smart/view-properties/lang/ru.json +89 -0
  54. package/dist/smart/view-properties/lang/ru.json.gz +0 -0
  55. package/dist/smart/view-properties/probe.json +188 -0
  56. package/dist/smart/view-properties/probe.json.gz +0 -0
  57. package/dist/smart/view-properties/skeleton.html +13 -0
  58. package/dist/smart/view-properties/skeleton.html.gz +0 -0
  59. package/dist/smart/view-properties/smart.manifest.json +1593 -0
  60. package/dist/smart/view-properties/smart.manifest.json.gz +0 -0
  61. package/dist/smart/view-properties/static/default/full.html +2 -0
  62. package/dist/smart/view-properties/static/default/full.html.gz +0 -0
  63. package/dist/smart/view-properties/static/default/panel-closed.html +4 -0
  64. package/dist/smart/view-properties/static/default/panel-closed.html.gz +0 -0
  65. package/dist/smart/view-properties/static/default/panel.html +4 -0
  66. package/dist/smart/view-properties/static/default/panel.html.gz +0 -0
  67. package/dist/smart/view-properties/static/default/reference.html +2 -0
  68. package/dist/smart/view-properties/static/default/reference.html.gz +0 -0
  69. package/dist/smart/view-properties/static/sheets.json +426 -0
  70. package/dist/smart/view-properties/static/sheets.json.gz +0 -0
  71. package/dist/smart/view-properties/template/default.css +992 -0
  72. package/dist/smart/view-properties/template/default.css.gz +0 -0
  73. package/dist/smart/view-properties/template/default.js +1658 -0
  74. package/dist/smart/view-properties/template/default.js.gz +0 -0
  75. package/dist/smart/view-table/aliases.json +448 -0
  76. package/dist/smart/view-table/aliases.json.gz +0 -0
  77. package/dist/smart/view-table/component.json +2746 -0
  78. package/dist/smart/view-table/component.json.gz +0 -0
  79. package/dist/smart/view-table/css/view-table.css +3658 -0
  80. package/dist/smart/view-table/css/view-table.css.gz +0 -0
  81. package/dist/smart/view-table/css/view-table.min.css +2 -0
  82. package/dist/smart/view-table/css/view-table.min.css.gz +0 -0
  83. package/dist/smart/view-table/examples.json +499 -0
  84. package/dist/smart/view-table/examples.json.gz +0 -0
  85. package/dist/smart/view-table/js/view-table.js +14166 -0
  86. package/dist/smart/view-table/js/view-table.js.gz +0 -0
  87. package/dist/smart/view-table/js/view-table.min.js +1440 -0
  88. package/dist/smart/view-table/js/view-table.min.js.gz +0 -0
  89. package/dist/smart/view-table/lang/en.json +132 -0
  90. package/dist/smart/view-table/lang/en.json.gz +0 -0
  91. package/dist/smart/view-table/lang/ru.json +132 -0
  92. package/dist/smart/view-table/lang/ru.json.gz +0 -0
  93. package/dist/smart/view-table/probe.json +275 -0
  94. package/dist/smart/view-table/probe.json.gz +0 -0
  95. package/dist/smart/view-table/smart.manifest.json +2531 -0
  96. package/dist/smart/view-table/smart.manifest.json.gz +0 -0
  97. package/dist/smart/view-table/static/default/current.html +141 -0
  98. package/dist/smart/view-table/static/default/current.html.gz +0 -0
  99. package/dist/smart/view-table/static/default/current.skeleton.html +141 -0
  100. package/dist/smart/view-table/static/default/current.skeleton.html.gz +0 -0
  101. package/dist/smart/view-table/static/default/empty.html +149 -0
  102. package/dist/smart/view-table/static/default/empty.html.gz +0 -0
  103. package/dist/smart/view-table/static/default/loading.html +180 -0
  104. package/dist/smart/view-table/static/default/loading.html.gz +0 -0
  105. package/dist/smart/view-table/static/default/many.html +180 -0
  106. package/dist/smart/view-table/static/default/many.html.gz +0 -0
  107. package/dist/smart/view-table/static/default/reference.html +136 -0
  108. package/dist/smart/view-table/static/default/reference.html.gz +0 -0
  109. package/dist/smart/view-table/static/default/reference.skeleton.html +136 -0
  110. package/dist/smart/view-table/static/default/reference.skeleton.html.gz +0 -0
  111. package/dist/smart/view-table/static/default/typed-cells.html +229 -0
  112. package/dist/smart/view-table/static/default/typed-cells.html.gz +0 -0
  113. package/dist/smart/view-table/static/default/typed-cells.skeleton.html +229 -0
  114. package/dist/smart/view-table/static/default/typed-cells.skeleton.html.gz +0 -0
  115. package/dist/smart/view-table/static/sheets.json +480 -0
  116. package/dist/smart/view-table/static/sheets.json.gz +0 -0
  117. package/dist/smart/view-table/studio.fixture.json +17 -0
  118. package/dist/smart/view-table/studio.fixture.json.gz +0 -0
  119. package/dist/smart/view-table/studio.scenario.json +30 -0
  120. package/dist/smart/view-table/studio.scenario.json.gz +0 -0
  121. package/dist/smart/view-table/template/default.css +1301 -0
  122. package/dist/smart/view-table/template/default.css.gz +0 -0
  123. package/dist/smart/view-table/template/default.js +1215 -0
  124. package/dist/smart/view-table/template/default.js.gz +0 -0
  125. package/dist/smart/view-table/template/link-cell-contract.js +48 -0
  126. package/dist/smart/view-table/template/link-cell-contract.js.gz +0 -0
  127. package/package.json +29 -4
@@ -0,0 +1,1392 @@
1
+ (()=>{"use strict";var e={e577837dd70a(e,t,i){i.a(e,async(e,r)=>{try{i.d(t,{Yq:()=>l});var n=i("15b4e93ff6ed"),s=e([n]),o=s.then?(await s)():s;n=o[0];function a(e){return"short"===e||"medium"===e||"long"===e||"full"===e}function l(e,{date:t="medium",time:i=null,intl:r=null,gap:s="",...o}={}){const l=(0,n.ay)(e);if(!l)return s;let c=r;return c||(c={},a(t)&&(c.dateStyle=t),a(i)&&(c.timeStyle=i),c.dateStyle||c.timeStyle||(c.dateStyle="medium")),(0,n.Qz)("DateTimeFormat",(0,n.OE)(o),c).format(l)}r()}catch(c){r(c)}})},"15b4e93ff6ed"(e,t,i){i.a(e,async(e,r)=>{try{i.d(t,{OE:()=>a,Qz:()=>u,ay:()=>l});var n=i("43090d1c8307"),s=e([n]),o=s.then?(await s)():s;n=o[0];function a({locale:e,node:t}={}){return String(e||"").trim()||(0,n.pageLocale)(t)}function l(e){if(null==e||""===e)return null;const t=e instanceof Date?new Date(e.getTime()):new Date("string"==typeof e&&/^\d+$/u.test(e)?Number(e):e);return Number.isNaN(t.getTime())?null:t}function c(){const e="undefined"!=typeof globalThis?globalThis:{};return e.__sfFormat||(e.__sfFormat={formatters:new Map}),e.__sfFormat.formatters}function u(e,t,i){const r=`${e}|${t}|${JSON.stringify(i)}`,n=c();if(n.has(r))return n.get(r);const s=Intl[e];let o;try{o=new s(t||void 0,i)}catch{try{o=new s(void 0,i)}catch{o=new s(t||void 0,"NumberFormat"===e?{maximumFractionDigits:2}:{})}}return n.size>=256&&n.delete(n.keys().next().value),n.set(r,o),o}r()}catch(d){r(d)}})},"1b42c5117087"(e,t,i){const r=Object.freeze(["folder","folder_open","topic","home","dashboard","apartment","store","storefront","business_center","work","badge","person","group","groups","account_circle","manage_accounts","supervisor_account","contacts","school","menu_book","assignment","task","description","article","note_alt","edit_note","draft","receipt","receipt_long","request_quote","inventory_2","category","label","sell","local_offer","shopping_cart","shopping_bag","payments","savings","credit_card","account_balance","calculate","percent","trending_up","analytics","insights","monitoring","bar_chart","pie_chart","table_chart","schedule","event","today","calendar_month","date_range","history","alarm","timer","update","hourglass_top","mail","outgoing_mail","chat","forum","sms","call","phone_in_talk","contact_support","campaign","notifications","language","public","place","map","location_on","travel_explore","flight","local_shipping","route","directions","settings","tune","build","construction","handyman","code","terminal","data_object","api","bug_report","database","storage","cloud","backup","sync","folder_zip","upload_file","download","attach_file","link","lock","lock_open","shield","verified_user","key","admin_panel_settings","policy","gavel","fingerprint","visibility","palette","format_paint","image","photo_library","collections","movie","play_circle","mic","headphones","brush"]);"undefined"!=typeof globalThis&&(globalThis.SF=globalThis.SF||{},globalThis.SF.icons=globalThis.SF.icons||{},globalThis.SF.icons.choices||(globalThis.SF.icons.choices=r));i.d(t,["x",0,r])},"9ce1a42b2a85"(e,t,i){i.d(t,{AC:()=>o,MC:()=>d,SB:()=>u,cy:()=>l,d2:()=>a});const r=/^(\d{4}-\d{2}-\d{2})(?:[T ](\d{2}):(\d{2})((?::\d{2})(?:\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?)?$/u,n=/^\d{4}-\d{2}-\d{2}$/u;function s(e){return e&&"object"==typeof e&&!Array.isArray(e)&&"value"in e?e.value:e}function o(e){const t=s(e);if(null==t||""===t)return{raw:t??null,known:!0,date:"",time:"",rest:"",zone:""};const i="string"==typeof t?t.trim().match(r):null;return i?{raw:t,known:!0,date:i[1],time:i[2]?`${i[2]}:${i[3]}`:"",rest:i[4]||"",zone:i[5]||""}:{raw:t,known:!1,date:"",time:"",rest:"",zone:""}}function a(e){const t=String(e??"").trim().replace(/[_\s]/gu,"");if(""===t||":"===t)return"";const i=t.match(/^(\d{1,2})[:.]?(\d{2})$/u);if(!i)return null;const r=Number(i[1]),n=Number(i[2]);return r>23||n>59?null:`${String(r).padStart(2,"0")}:${i[2]}`}function l(e,t){const i=String(t?.date??"").trim(),r=a(t?.time);if(null===r)return{error:"timeInvalid"};if(!i&&!r)return{value:null};if(!n.test(i))return{error:i?"dateInvalid":"dateMissing"};if(!r)return{error:"timeMissing"};const s=e?.known?e:null;if(s&&s.date===i&&s.time===r)return{value:s.raw};return{value:`${i}T${r}${s&&s.time===r?s.rest:":00"}${s&&s.time?s.zone:""}`}}const c=/^(\d{2}):(\d{2})((?::\d{2})(?:\.\d+)?)?$/u;function u(e){const t=s(e);if(null==t||""===t)return{raw:t??null,known:!0,time:"",rest:""};const i="string"==typeof t?t.trim().match(c):null;return i&&null!==a(`${i[1]}:${i[2]}`)?{raw:t,known:!0,time:`${i[1]}:${i[2]}`,rest:i[3]||""}:{raw:t,known:!1,time:"",rest:""}}function d(e,t){const i=a(t);if(null===i)return{error:"timeInvalid"};if(!i)return{value:null};const r=e?.known?e:null;return r&&r.time===i?{value:r.raw}:{value:r?.rest?`${i}:00`:i}}},eb06ad68f8d3(e,t,i){i.d(t,{b:()=>R,j:()=>M});Object.freeze(["p","h2","h3","h4","strong","em","a","ul","ol","li","blockquote","br"]);const r=Object.freeze(["p","h2","h3","h4"]),n=Object.freeze(["https:","mailto:","tel:"]),s=Object.freeze(["html","paste"]),o=(Object.freeze(["pre","table"]),new Set(["script","style","template","head","title","meta","link","base","noscript","iframe","frame","frameset","noembed","noframes","object","embed","applet","svg","math","canvas","video","audio","img","picture","source","track","input","select","textarea","xmp","plaintext"])),a=new Set(["address","article","aside","body","caption","center","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h5","h6","header","hgroup","hr","html","legend","listing","main","menu","nav","optgroup","option","pre","section","summary","table","tbody","td","tfoot","th","thead","tr"]),l=new Set(["ul","ol"]),c=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),u=new Set(["script","style","textarea","title","xmp","iframe","noembed","noframes","noscript"]),d=new Set(["td","th","table","caption","button"]),p=/[\u0000-\u001f\u007f-\u009f]/gu,h=/[\u0000- \u007f-\u009f\u00a0\u1680\u2000-\u200b\u2028\u2029\u202f\u205f\u3000\ufeff]/gu;const f={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" ",shy:"­",hellip:"…",mdash:"—",ndash:"–",minus:"−",laquo:"«",raquo:"»",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",bull:"•",middot:"·",copy:"©",reg:"®",trade:"™",deg:"°",times:"×",divide:"÷",plusmn:"±",euro:"€",pound:"£",yen:"¥",cent:"¢",sect:"§",para:"¶",thinsp:" ",ensp:" ",emsp:" ",zwj:"‍",zwnj:"‌",larr:"←",rarr:"→",uarr:"↑",darr:"↓",numero:"№",prime:"′",Prime:"″"};function g(e){return String(e).replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/giu,(e,t)=>{if("#"===t[0]){const e="x"===t[1]||"X"===t[1]?Number.parseInt(t.slice(2),16):Number.parseInt(t.slice(1),10);return!Number.isFinite(e)||e<=0||e>1114111||e>=55296&&e<=57343?"�":String.fromCodePoint(e)}return Object.hasOwn(f,t)&&e.endsWith(";")?f[t]:e})}function m(e){const t="string"==typeof e?e:"",i={type:"element",name:"#root",attrs:{},children:[]},n=[i],s=()=>n[n.length-1],o=e=>s().children.push(e),p=e=>{if(!e)return;const t=s().children.at(-1);"text"===t?.type?t.value+=e:o({type:"text",value:e})},h=(e,t=null)=>{for(let i=n.length-1;i>0;i-=1){const r=n[i].name;if(t&&t.has(r))return!1;if(r===e)return n.length=i,!0}return!1};let f=0;const m=t.length;for(;f<m;){const e=t.indexOf("<",f);if(e<0){p(g(t.slice(f)));break}if(e>f&&p(g(t.slice(f,e))),f=e,t.startsWith("\x3c!--",f)){const e=t.indexOf("--\x3e",f+4);f=e<0?m:e+3;continue}const i=t[f+1]??"";if("!"===i||"?"===i){const e=t.indexOf(">",f+2);f=e<0?m:e+1;continue}if("/"===i){const e=/^<\/([a-z][a-z0-9-]*)[^>]*>?/iu.exec(t.slice(f));if(!e){const e=t.indexOf(">",f+2);f=e<0?m:e+1;continue}f+=e[0].length;const i=e[1].toLowerCase();"br"===i?o({type:"element",name:"br",attrs:{},children:[]}):"p"!==i||h("p",d)?h(i):o({type:"element",name:"p",attrs:{},children:[]});continue}const s=/^<([a-z][a-z0-9-]*)/iu.exec(t.slice(f));if(!s){p("<"),f+=1;continue}f+=s[0].length;const v=s[1].toLowerCase(),b={};let y=!1;for(;f<m;){const e=/^[\s/]+/u.exec(t.slice(f));if(e){e[0].includes("/")&&">"===t[f+e[0].length]&&(y=!0),f+=e[0].length;continue}if(">"===t[f]){f+=1;break}const i=/^([^\s/>"'=][^\s/>"'=]*)(?:\s*=\s*(?:"([^"]*)"?|'([^']*)'?|([^\s>]*)))?/u.exec(t.slice(f));if(!i){f+=1;continue}f+=i[0].length;const r=i[1].toLowerCase();Object.hasOwn(b,r)||(b[r]=g(i[2]??i[3]??i[4]??""))}const w={type:"element",name:v,attrs:b,children:[]};if("li"===v&&h("li",l),(r.includes(v)||l.has(v)||"blockquote"===v||a.has(v))&&h("p",d),o(w),"plaintext"===v){f=m;break}if(u.has(v)){const e=new RegExp(`</${v}[\\s/>]`,"iu").exec(t.slice(f)),i=e?f+e.index:m;"textarea"===v||"title"===v?w.children.push({type:"text",value:g(t.slice(f,i))}):w.children.push({type:"text",value:t.slice(f,i)});const r=e?t.indexOf(">",i):-1;f=r<0?m:r+1;continue}c.has(v)||y||n.push(w)}return i}function v(e){const t=e=>{if(3===e.nodeType)return{type:"text",value:e.data};if(11===e.nodeType)return{type:"element",name:"#root",attrs:{},children:[...e.childNodes].map(t).filter(Boolean)};if(1!==e.nodeType)return null;if(e.namespaceURI&&"http://www.w3.org/1999/xhtml"!==e.namespaceURI)return null;const i=e.localName;if(o.has(i))return null;const r={},n=e.getAttribute("href");null!==n&&(r.href=n);const s=e.getAttribute("style");null!==s&&(r.style=s);return{type:"element",name:i,attrs:r,children:"template"===i?[]:[...e.childNodes].map(t).filter(Boolean)}},i=t(e);return i&&"element"===i.type?{...i,name:"#root"}:{type:"element",name:"#root",attrs:{},children:i?[i]:[]}}function b(e,t){const i={...t};"strong"!==e.name&&"b"!==e.name||(i.strong=!0),"em"!==e.name&&"i"!==e.name||(i.em=!0);const r=function(e){const t={};if(!e)return t;const i=/(?:^|;)\s*font-weight\s*:\s*([^;!]+)/iu.exec(e)?.[1]?.trim().toLowerCase();i&&("bold"===i||"bolder"===i||Number(i)>=600?t.strong=!0:("normal"===i||"lighter"===i||Number(i)<600)&&(t.strong=!1));const r=/(?:^|;)\s*font-style\s*:\s*([^;!]+)/iu.exec(e)?.[1]?.trim().toLowerCase();return r&&("italic"===r||r.startsWith("oblique")?t.em=!0:"normal"===r&&(t.em=!1)),t}(e.attrs?.style);return void 0!==r.strong&&(i.strong=r.strong),void 0!==r.em&&(i.em=r.em),i}const y=(e,t,i)=>({kind:e,value:t,strong:Boolean(i.marks.strong),em:Boolean(i.marks.em),href:i.href||null});class w{constructor(e){this.kind=e,this.blocks=[],this.run=[],this.types=["p"],this.starts=[0],this.needBreak=!1}inline(e){"item"===this.kind&&this.needBreak&&this.run.length>0&&("text"!==e.kind||e.value.trim())&&(this.run.push({kind:"br",strong:!1,em:!1,href:null}),this.needBreak=!1),this.run.push(e)}flush(){this.run.length&&("item"===this.kind?this.blocks.push({type:"inline",leaves:this.run}):this.blocks.push({type:this.types[this.types.length-1],leaves:this.run}),this.run=[])}open(e){"item"!==this.kind?(this.flush(),this.types.push(e),this.starts.push(this.blocks.length)):this.needBreak=!0}close(e=!1){if("item"===this.kind)return void(this.needBreak=!0);const t=this.starts[this.starts.length-1];e&&!this.run.length&&this.blocks.length===t&&this.blocks.push({type:this.types[this.types.length-1],leaves:[]}),this.flush(),this.types.length>1&&(this.types.pop(),this.starts.pop())}block(e){this.flush(),this.blocks.push(e),this.needBreak=!1}}function x(e,t,i){for(const r of e)$(r,t,i)}function $(e,t,i){if("text"===e.type)return void function(e,t,i){if(i.pre)return void e.replace(/\r\n?/gu,"\n").split("\n").forEach((e,r)=>{r>0&&t.inline(y("br","",i)),e&&t.inline(y("text",e.replace(/[\t\f]/gu," "),i))});const r=e.replace(/[\t\n\r\f ]+/gu," ");r&&(" "!==r||t.run.length)&&t.inline(y("text",r,i))}(e.value,t,i);const s=e.name;if(o.has(s))return;if("br"===s)return void t.inline(y("br","",i));const c={...i,marks:b(e,i.marks)};if("a"===s){const r=function(e){if("string"!=typeof e)return null;const t=e.trim();if(!t||t.length>2048)return null;const i=t.replace(h,"");if(!i)return null;if(i.startsWith("/")){if(/^\/[/\\]/u.test(i))return null;const e=t.replace(p,"");return/^\/[/\\]/u.test(e)?null:e}const r=/^([a-z][a-z0-9+.-]*):/iu.exec(i)?.[1]?.toLowerCase();if(!r||!n.includes(`${r}:`))return null;let s;try{s=new globalThis.URL(t.replace(p,""))}catch{return null}return s.protocol!==`${r}:`?null:"https:"!==s.protocol||s.hostname?"https:"!==s.protocol&&s.href.length<=s.protocol.length?null:s.href:null}(e.attrs?.href);return void x(e.children,t,r&&!i.href?{...c,href:r}:c)}if(r.includes(s))return t.open(s),x(e.children,t,c),void t.close(!0);if(l.has(s)){const i=_(e,c,s);return void(i.items.length&&t.block(i))}if("blockquote"===s){if("item"===t.kind)return t.open("p"),x(e.children,t,c),void t.close();const i=new w("flow");return x(e.children,i,c),i.flush(),void t.block({type:"blockquote",blocks:i.blocks})}if("li"===s)return t.open("p"),x(e.children,t,c),void t.close();if(!i.paste||"item"===t.kind||"pre"!==s&&"listing"!==s){if(!i.paste||"item"===t.kind||"table"!==s)return a.has(s)?(t.open("p"),x(e.children,t,"pre"===s||"listing"===s?{...c,pre:!0}:c),void t.close()):void x(e.children,t,c);t.block(function(e,t){const i={type:"table",caption:[],rows:[]},r=(e,r)=>{const n=[];for(const i of e.children){if("element"!==i.type||"td"!==i.name&&"th"!==i.name)continue;const e=new w("item");x(i.children,e,{...t,marks:b(i,t.marks)}),e.flush(),n.push({header:"th"===i.name,leaves:T(e.blocks)})}n.length&&i.rows.push({head:r,cells:n})},n=(e,t)=>{for(const i of e.children)"element"===i.type&&"tr"===i.name&&r(i,t)};for(const s of e.children)if("element"===s.type)if("caption"===s.name){const e=new w("item");x(s.children,e,t),e.flush(),i.caption=T(e.blocks)}else"thead"===s.name?n(s,!0):"tbody"===s.name||"tfoot"===s.name?n(s,!1):"tr"===s.name&&r(s,!1);return i}(e,c))}else t.block({type:"pre",text:S(e)})}function S(e){const t=e=>"text"===e.type?e.value:o.has(e.name)?"":"br"===e.name?"\n":e.children.map(t).join("");return e.children.map(t).join("").replace(/\r\n?/gu,"\n").replace(/\u00a0/gu," ").replace(/^\n/u,"").replace(/\s+$/u,"")}function T(e){const t=[],i=e=>{if("inline"===e.type)(r=e.leaves).length&&(t.length&&t.push({kind:"br",strong:!1,em:!1,href:null}),t.push(...r));else for(const t of e.items)t.children.forEach(i);var r};return e.forEach(i),t}function k(e,t){const i=new w("item");return x(e.children,i,t),i.flush(),{children:i.blocks}}function _(e,t,i){const r={type:i,items:[]};let n=null;const s=()=>{n&&(n.flush(),r.items.push({children:n.blocks}),n=null)};for(const i of e.children)if("element"!==i.type||"li"!==i.name){if("element"===i.type&&l.has(i.name)){s();const e=_(i,{...t,marks:b(i,t.marks)},i.name);if(!e.items.length)continue;const n=r.items.at(-1);n?n.children.push(e):r.items.push({children:[e]});continue}("text"!==i.type||i.value.trim())&&("element"===i.type&&o.has(i.name)||(n??=new w("item"),$(i,n,t)))}else s(),r.items.push(k(i,t));return s(),r}const A=" ",F=(e,t)=>e.strong===t.strong&&e.em===t.em&&e.href===t.href;function C(e,t){const i=[];for(const t of e){if("text"===t.kind&&!t.value)continue;const e=i.at(-1);"text"===t.kind&&"text"===e?.kind&&F(e,t)?e.value+=t.value:i.push({...t})}for(let e=0;e<i.length;e+=1){const t=i[e];if("text"!==t.kind)continue;t.value=t.value.replace(/ {2,}/gu,A);const r=i[e-1];t.value.startsWith(A)&&(!r||"br"===r.kind||"text"===r.kind&&r.value.endsWith(A))&&(t.value=t.value.slice(1));const n=i[e+1];!t.value.endsWith(A)||n&&"br"!==n.kind||(t.value=t.value.slice(0,-1))}let r=i.filter(e=>"br"===e.kind||e.value);if("value"===t){for(;"br"===r[0]?.kind;)r.shift();for(;"br"===r.at(-1)?.kind;)r.pop();"text"===r[0]?.kind&&(r[0].value=r[0].value.replace(/^[\s\u00a0]+/u,""));const e=r.at(-1);"text"===e?.kind&&(e.value=e.value.replace(/[\s\u00a0]+$/u,"")),r=r.filter(e=>"br"===e.kind||e.value)}const n=new Map;for(const e of r)e.href&&n.set(e.href,(n.get(e.href)||"")+("text"===e.kind?e.value:"x"));for(const e of r)e.href&&!n.get(e.href).trim()&&(e.href=null);const s=[];for(const e of r){const t=s.at(-1);"text"===e.kind&&"text"===t?.kind&&F(t,e)?t.value+=e.value:s.push(e)}return s}const z=e=>e.some(e=>"text"===e.kind&&""!==e.value.replace(/[\s\u00a0]+/gu,""));function E(e,t){const i=e.items.map(e=>function(e,t){const i=[];for(const r of e.children)if("inline"===r.type){const e=C(r.leaves,t);if(!e.length)continue;const n=i.at(-1);"inline"===n?.type?n.leaves=C([...n.leaves,{kind:"br",strong:!1,em:!1,href:null},...e],t):i.push({type:"inline",leaves:e})}else{const e=E(r,t);if(!e)continue;const n=i.at(-1);n&&n.type===e.type?n.items.push(...e.items):i.push(e)}if("value"===t){const e=i.filter(e=>"inline"!==e.type||z(e.leaves));return e.length?{children:e}:null}return i.length&&"inline"===i[0].type||i.unshift({type:"inline",leaves:[{kind:"br",strong:!1,em:!1,href:null}]}),{children:i}}(e,t)).filter(Boolean);return i.length?{type:e.type,items:i}:null}function q(e,t){const i=[];for(const r of e){let e=null;if("blockquote"===r.type){const i=q(r.blocks,t);i.length?e={type:"blockquote",blocks:i}:"editor"===t&&(e={type:"blockquote",blocks:[{type:"p",leaves:[{kind:"br",strong:!1,em:!1,href:null}]}]})}else if(l.has(r.type))e=E(r,t);else if("pre"===r.type)r.text.trim()&&(e={type:"pre",text:r.text});else if("table"===r.type){const t=r.rows.map(e=>({head:e.head,cells:e.cells.map(e=>({header:e.header,leaves:C(e.leaves,"value")}))})).filter(e=>e.cells.some(e=>z(e.leaves)));t.length&&(e={type:"table",caption:C(r.caption,"value"),rows:t})}else{const i=C(r.leaves,t);"value"===t?z(i)&&(e={type:r.type,leaves:i}):e={type:r.type,leaves:i.length?i:[{kind:"br",strong:!1,em:!1,href:null}]}}if(!e)continue;const n=i.at(-1);n&&l.has(e.type)&&n.type===e.type?n.items.push(...e.items):i.push(e)}return i}function V(e,{mode:t="value",profile:i="html"}={}){if(!s.includes(i))throw new TypeError(`rich_text_profile_unknown: ${i}`);const r=new w("flow");x(e.children??[],r,{marks:{},href:null,pre:!1,paste:"paste"===i}),r.flush();const n=q(r.blocks,t);return"editor"!==t||n.length?n:[{type:"p",leaves:[{kind:"br",strong:!1,em:!1,href:null}]}]}const L=e=>e.replace(/&/gu,"&amp;").replace(/"/gu,"&quot;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/\u00a0/gu,"&nbsp;");function P(e){const t=(e,i)=>{let r="",n=0;const s=["href","strong","em"][i];for(;n<e.length;){const o=s?e[n][s]:null;let a=n+1;for(;a<e.length&&s&&e[a][s]===o;)a+=1;const l=e.slice(n,a);r+=s?"href"===s&&o?`<a href="${L(o)}">${t(l,i+1)}</a>`:"href"!==s&&o?`<${s}>${t(l,i+1)}</${s}>`:t(l,i+1):l.map(e=>"br"===e.kind?"<br>":e.value.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/\u00a0/gu,"&nbsp;")).join(""),n=a}return r};return t(e,0)}function O(e){return`<${e.type}>${e.items.map(e=>`<li>${e.children.map(e=>"inline"===e.type?P(e.leaves):O(e)).join("")}</li>`).join("")}</${e.type}>`}function D(e){return e.map(e=>{if("blockquote"===e.type)return`<blockquote>${D(e.blocks)}</blockquote>`;if(l.has(e.type))return O(e);if("pre"===e.type){return`<p>${P(C(e.text.split("\n").flatMap((e,t)=>[...t?[{kind:"br",strong:!1,em:!1,href:null}]:[],{kind:"text",value:e.replace(/[\t\f]/gu," "),strong:!1,em:!1,href:null}]),"value"))}</p>`}if("table"===e.type){return[{leaves:e.caption},...e.rows.flatMap(e=>e.cells)].filter(e=>z(e.leaves)).map(e=>`<p>${P(e.leaves)}</p>`).join("")}return`<${e.type}>${P(e.leaves)}</${e.type}>`}).join("")}const I=e=>{const t=e&&"object"==typeof e&&!Array.isArray(e)&&"value"in e?e.value:e;return"string"==typeof t?t:""};function R(e){const t=I(e);return t?function(e,{mode:t="value",document:i}={}){let r;if(e&&"object"==typeof e&&"number"==typeof e.nodeType)r=v(e);else{const t="string"==typeof e?e:"",n=void 0===i?globalThis.document:i;if(t&&n?.createElement){const e=n.createElement("template");e.innerHTML=t,r=v(e.content)}else r=m(t)}return D(V(r,{mode:t}))}(t,{mode:"value"}):""}function M(e){const t=I(e);return t?function(e){const t=V(m(e),{mode:"value"}),i=e=>e.map(e=>"br"===e.kind?"\n":e.value).join(""),r=e=>e.items.map(e=>e.children.map(e=>"inline"===e.type?i(e.leaves):r(e)).join("\n")).join("\n"),n=e=>e.map(e=>"blockquote"===e.type?n(e.blocks):l.has(e.type)?r(e):i(e.leaves)).join("\n\n");return n(t)}(t).replace(/\s+/gu," ").trim():""}},e5483002f3ea(e,t,i){i.a(e,async(e,r)=>{try{i.d(t,{oX:()=>ct,z4:()=>He});var n=i("2a080a730149"),s=i("073f05ff1a81"),o=i("5961360f41f4"),a=i("43090d1c8307"),l=i("fc654eb7fab0"),c=i("9ce1a42b2a85"),u=i("dd6973f77245"),d=i("eb06ad68f8d3"),p=e([n,s,a]);[n,s,a]=p.then?(await p)():p;function h(e){return String(e?.size||"").trim()||"1"}function f(e,t){const i=t.getFilterControlValue(e.key);return n.html`
2
+ <sf-input
3
+ size=${h(t)}
4
+ appearance="filled"
5
+ placeholder="${Pe(t,"containsText")}"
6
+ value="${i.value||""}"
7
+ name="sf_filter_${e.key||"text"}"
8
+ @change=${r=>{t.patchTempFilterValue(e.key,{value:r.target?.value||"",operator:i.operator||e.filter?.defaultOperator||"contains"})}}
9
+ ></sf-input>
10
+ `}function g(e,t){const i=t.getFilterControlValue(e.key),r=e.filter?.operators||["eq"],s=i.operator||e.filter?.defaultOperator||r[0],o="between"===s,a=o?i.value:Array.isArray(i.value)?i.value[0]:i.value;return n.html`
11
+ <div class="flex gap-1/3 flex-col">
12
+ <div class="sf-filter-operator-range flex gap-1/3 items-cross-center">
13
+ <sf-slider-range
14
+ id="smart-range-slider-single"
15
+ min="0"
16
+ label="tooltip"
17
+ suffix="%"
18
+ max="100"
19
+ multiple=${String(o)}
20
+ .value=${a}
21
+ @onSliderEnd=${i=>{t.patchTempFilterValue(e.key,{value:o?i.detail.values||[]:i.detail.value,operator:s})}}
22
+ ></sf-slider-range>
23
+ </div>
24
+ <sf-dropdown
25
+ size=${h(t)}
26
+ appearance="outlined"
27
+ mode="select"
28
+ placeholder="${Pe(t,"operator")}"
29
+ root-class="flex-1"
30
+ search="false"
31
+ @change=${i=>{const r=i.detail?.values?.[0]||i.detail?.value||s;t.patchTempFilterValue(e.key,{operator:r})}}
32
+ >
33
+ ${r.map(e=>n.html`
34
+ <sf-list-item
35
+ kind="text"
36
+ size=${h(t)}
37
+ text="${t.getFilterOperatorLabel(e)}"
38
+ value="${e}"
39
+ ?selected=${e===s}
40
+ ></sf-list-item>
41
+ `)}
42
+ </sf-dropdown>
43
+ </div>
44
+ `}function m(e,t){const i=t.getFilterControlValue(e.key),r=e.filter?.operators||["eq"],s=i.operator||e.filter?.defaultOperator||r[0],o="between"===s,a=i.value,l=Array.isArray(a)?a:[a||"",""],c=(i,r)=>{if(!o)return void t.patchTempFilterValue(e.key,{value:r||"",operator:s});const n=[...l];n[i]=r||"",t.patchTempFilterValue(e.key,{value:n,operator:s})};return n.html`
45
+ <div class="flex gap-1/3 flex-col">
46
+ <div class="sf-filter-operator-inputs flex gap-1/3 items-cross-center">
47
+ <sf-input
48
+ size=${h(t)}
49
+ appearance="bordered"
50
+ root-class="flex-1 min-w-0"
51
+ label="${o?Pe(t,"rangeFrom"):t.getFilterOperatorLabel(s)}"
52
+ value="${o?l[0]||"":a||""}"
53
+ name="sf_filter_${e.key||"number"}"
54
+ @change=${e=>{c(0,e.target?.value)}}
55
+ ></sf-input>
56
+ ${o?n.html`
57
+ <sf-input
58
+ size=${h(t)}
59
+ appearance="bordered"
60
+ label="${Pe(t,"rangeTo")}"
61
+ root-class="flex-1 min-w-0"
62
+ value="${l[1]||""}"
63
+ name="sf_filter_${e.key||"number"}_second"
64
+ @change=${e=>{c(1,e.target?.value)}}
65
+ ></sf-input>`:n.nothing}
66
+ </div>
67
+ <sf-dropdown
68
+ size=${h(t)}
69
+ appearance="outlined"
70
+ mode="select"
71
+ placeholder="${Pe(t,"operator")}"
72
+ root-class="flex-1"
73
+ search="false"
74
+ @change=${i=>{const r=i.detail?.values?.[0]||i.detail?.value||s;t.patchTempFilterValue(e.key,{operator:r})}}
75
+ >
76
+ ${r.map(e=>n.html`
77
+ <sf-list-item
78
+ kind="text"
79
+ size=${h(t)}
80
+ text="${t.getFilterOperatorLabel(e)}"
81
+ value="${e}"
82
+ ?selected=${e===s}
83
+ ></sf-list-item>
84
+ `)}
85
+ </sf-dropdown>
86
+ </div>
87
+ `}function v(e,t){const i=t.getFilterControlValue(e.key),r=e.filter?.operators||["eq"],s=i.operator||e.filter?.defaultOperator||r[0],o="between"===s,a=o&&Array.isArray(i.value)?i.value:o?["",""]:i.value||"";return n.html`
88
+ <div class="flex flex-col gap-1/3">
89
+ <sf-input-date
90
+ .value=${a}
91
+ ?range=${o}
92
+ name="sf_filter_${e.key||"date"}"
93
+ locale="ru-Ru"
94
+ @change=${i=>{t.patchTempFilterValue(e.key,{value:i.detail.value,operator:s})}}
95
+ ></sf-input-date>
96
+ <sf-dropdown
97
+ size=${h(t)}
98
+ appearance="outlined"
99
+ mode="select"
100
+ placeholder="${Pe(t,"operator")}"
101
+ root-class="flex-1"
102
+ search="false"
103
+ @change=${i=>{const r=i.detail?.values?.[0]||i.detail?.value||s;t.patchTempFilterValue(e.key,{operator:r})}}
104
+ >
105
+ ${r.map(e=>n.html`
106
+ <sf-list-item
107
+ kind="text"
108
+ size=${h(t)}
109
+ text="${t.getFilterOperatorLabel(e)}"
110
+ value="${e}"
111
+ ?selected=${e===s}
112
+ ></sf-list-item>
113
+ `)}
114
+ </sf-dropdown>
115
+ </div>
116
+ `}function b(e,t){const i=t.getEndpointFilterPage(e),r=t.getVisibleFilterOptions(e),s=t.getFilterControlValue(e.key),o=t.getFilterOptionSearch(e.key),a=new Set(s.values||[]);return n.html`
117
+ <div class="flex flex-col gap-1/2 overflow-x-hidden">
118
+ ${!e.filter?.searchable||i&&!i.searchable?"":n.html`
119
+ <sf-input
120
+ size=${h(t)}
121
+ appearance="filled"
122
+ placeholder="${Pe(t,"searchInList")}"
123
+ value="${o}"
124
+ name="sf_filter_${e.key||"list"}_search"
125
+ @input=${i=>{t.patchTempFilterOptionSearch(e.key,i.target?.value||"")}}
126
+ @change=${i=>{t.patchTempFilterOptionSearch(e.key,i.target?.value||"")}}
127
+ ></sf-input>
128
+ `}
129
+ <div class="flex flex-col gap-1/2 overflow-x-hidden" data-size="4.5">
130
+ ${r.map(i=>t.renderFilterOption(e,i,a))}
131
+ </div>
132
+ ${r.length||"loading"===i?.status||"error"===i?.status?"":n.html`
133
+ <!-- A list with nothing in it says why, in one line, as every
134
+ list does (simai.interaction-rules, five states). -->
135
+ <sf-empty-state layout="inline" size="1/2" kind=${o?"nothing-found":"no-data"}></sf-empty-state>`}
136
+ ${i?n.html`
137
+ <div role="status" aria-live="polite" class="sf-text-1">
138
+ ${"loading"===i.status?Pe(t,"loadingOptions"):""}
139
+ </div>
140
+ ${"error"===i.status?n.html`<sf-empty-state layout="inline" size="1/2" kind="error" text=${Pe(t,"optionsError")}
141
+ @sf-empty-state-action=${i=>{"retry"===i.detail?.id&&t.loadEndpointFilterPage(e,null,o)}}></sf-empty-state>`:""}
142
+ ${i.nextCursor&&"error"!==i.status?n.html`<sf-button appearance="outline" size=${h(t)} text="${Pe(t,"loadMore")}"
143
+ ?disabled=${"loading"===i.status}
144
+ @click=${()=>t.loadEndpointFilterPage(e,i.nextCursor,o)}></sf-button>`:""}
145
+ `:""}
146
+ </div>
147
+ `}function y(e,t){return b(e,t)}function w(e,t){const i=e.filter?.options??["image","document","archive","other"].map(e=>({value:e,label:Pe(t,`fileKind_${e}`)}));return b({...e,filter:{...e.filter||{},options:i,defaultOperator:e.filter?.defaultOperator??"in"}},t)}function x(e,t){const i=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 i.length?b({...e,filter:{...e.filter||{},options:i,optionRenderer:e.filter?.optionRenderer??"swatch",defaultOperator:e.filter?.defaultOperator??"in"}},t):f(e,t)}const $={text:f,string:f,number:m,integer:m,date:v,datetime:v,range:g,"date-range":v,"multi-select":b,"single-select":b,choice:b,choices:b,boolean:b,user:b,"entity-multi-select":y,"entity-single-select":y,record:y,relation:y,lookup:y,file:w,color:x};function S(e={},t){const i=e.filter?.control||e.propertyType||e.type||e.dataType||"text";return($[i]||$.text)(e,t)}const T="1/2",k="tonal",_=[[/^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 A(e){const t=String(e||"").toLowerCase(),i=_.find(([e])=>e.test(t));return i?i[1]:"attach_file"}function F(e,t){const i=Je(t);return i?n.html`
148
+ <sf-input-color size="1/2" appearance="plain" value=${String(i)}
149
+ label=${e.label||e.key||""} disabled></sf-input-color>
150
+ `:n.nothing}function C(e,t){const i=Je(t),r=e.inheritedValue??"";return i||r?n.html`
151
+ <sf-input-color
152
+ size="1"
153
+ appearance="plain"
154
+ value=${i?String(i):n.nothing}
155
+ inherited-value=${r?String(r):n.nothing}
156
+ label=${e.label||e.key||""}
157
+ disabled
158
+ ></sf-input-color>
159
+ `:n.nothing}function z(e,t,i){const r=Je(t),s=e.inheritedValue??"";return n.html`
160
+ <sf-input-color
161
+ size=${W}
162
+ appearance="bordered"
163
+ name=${J(e)}
164
+ value=${r?String(r):n.nothing}
165
+ inherited-value=${s?String(s):n.nothing}
166
+ swatches=${e.swatches?String(e.swatches):n.nothing}
167
+ ?clearable=${Boolean(s)||!0!==e.required}
168
+ ?disabled=${!0===e.readonly}
169
+ label=${e.label||e.key||""}
170
+ @change=${t=>i.setFieldValue(e,t.detail?.value??"")}
171
+ ></sf-input-color>
172
+ `}function E(e,t){return t&&"object"==typeof t&&t.label?se(e)?q(t):{component:{type:"reference-link",props:{line:T,label:String(t.label),icon:A(t.mime),...t.href?{href:String(t.href)}:{}}}}:null}function q(e){const t=String(e.mime??e.mimeType??""),i=Boolean(e.href)&&/^image\//u.test(t);return{component:{type:"file-preview",props:{compact:!0,fileName:String(e.label),mimeType:t,icon:A(t),...e.href?{href:String(e.href)}:{},...i?{imageUrl:String(e.href),kind:"image"}:{kind:"icon"},actions:!1,downloadAction:!1,removeAction:!1}}}}function V(e,t){if(!Array.isArray(t)||!t.length)return null;if("badges"===String(e.variant??""))return L(e,t);const i=e.options||e.filter?.options||e.constraints?.options,r=e=>{const t=Array.isArray(i)?i.find(t=>String(t?.value)===String(e)):null;return String(t?.label??t?.text??e)};return t.map(e=>({component:{type:"tag",props:{line:T,kind:"default",text:r(e)}}}))}function L(e,t){const i=e.options||e.filter?.options||e.constraints?.options;return t.map(t=>{const r=t&&"object"==typeof t?t.value:t,n=Array.isArray(i)?i.find(e=>String(e?.value)===String(r)):null,s=n?(0,o.f)(n):null,a=t&&"object"==typeof t&&void 0!==t.text?String(t.text):String(n?.label??n?.text??r);return{component:{type:"badge",props:{line:T,text:a,appearance:e.badgeAppearance??k,...s?.scheme?{scheme:s.scheme}:{},...s?.rootStyle?{rootStyle:s.rootStyle}:{}}}}})}const P={string:ie,date:R,datetime:R,time:R,boolean:D,choices:V,file:E,color:F,include:le,choice:I,integer:M,number:M,user:U,record:j,relation:j,lookup:B,html:G};function O(e,t){return{yes:e.trueText??e.labels?.true??Pe(t,"yes"),no:e.falseText??e.labels?.false??Pe(t,"no")}}function D(e,t,i){if("boolean"!=typeof t)return null;const r=O(e,i);return t?r.yes:r.no}function I(e,t){const i=e.options||e.filter?.options||e.constraints?.options;if(!Array.isArray(i))return null;const r=i.find(e=>String(e?.value)===String(t));if(!r)return null;const n=(0,o.f)(r);return{component:{type:"badge",props:{line:T,text:r.label??r.text??String(t),appearance:e.badgeAppearance??k,...n?.scheme?{scheme:n.scheme}:{},...n?.rootStyle?{rootStyle:n.rootStyle}:{}}}}}function R(e,t,i){const r=i?.formatFieldValue?.(e,t);return"string"==typeof r&&""!==r?r:null}function M(e,t,i){const r=e.variant||e.filter?.variant,n=Number(Je(t));return"scale"===r&&Number.isFinite(n)?n<0||n>100?null:{component:{type:"progress-scale",props:{line:T,value:String(n)}}}:R(e,t,i)}function N(e){return{component:{type:"reference-link",props:{line:T,appearance:"plain",icon:"",label:String(e.label),...e.href?{href:String(e.href)}:{}}}}}function U(e,t){return t&&"object"==typeof t&&t.label?[{component:{type:"avatar",props:{line:T,text:t.avatarText||""}}},t.href?N(t):String(t.label)]:null}function j(e,t){return t&&"object"==typeof t&&t.label?N(t):null}function B(e,t){const i=De(e,t);return i.length?i.map(e=>e.label).join(", "):null}function G(e,t){return(0,d.j)(t)||null}function H(e={},t,i){const r=e.propertyType||e.type||e.dataType,n=P[r];if(!n)return null;const s=n(e,t,i);return s??null}let W="1";const K={record:Oe,relation:Oe,user:Oe,lookup:Ie,string:ce,text:de,html:pe,integer:me,number:me,date:ye,datetime:xe,time:$e,boolean:Se,choice:Ce,choices:qe,file:Ue,color:z,include:ae};function J(e){return`sf_field_${e.key||"value"}`}function Y(e,t,i){return n.html`
173
+ <sf-input-country
174
+ size=${W}
175
+ name=${J(e)}
176
+ value=${Je(t)??""}
177
+ aria-label=${e.label||e.key||""}
178
+ ?required=${Boolean(e.required)}
179
+ ?disabled=${!0===e.readonly}
180
+ use-mask="true"
181
+ show-code="true"
182
+ @change=${t=>i.setFieldValue(e,t.detail?.value??t.target?.value??"")}
183
+ ></sf-input-country>
184
+ `}function X(e){return"password"===String(e.variant??"")}function Z(e){return e&&"object"==typeof e&&!Array.isArray(e)?!0===e.set:"string"==typeof e&&""!==e}function Q(e,t){return Pe(e,Z(t)?"passwordSet":"passwordUnset")}function ee(e){const t=e.currentTarget,i=t?.closest?.(".sf-field-password")?.querySelector?.("sf-input");if(!i)return;const r="false"===t.getAttribute("pressed");i.setAttribute("input-type",r?"text":"password"),t.setAttribute("pressed",r?"":"false"),t.setAttribute("icon",r?"visibility_off":"visibility")}function te(e,t,i){const r=Z(t),s=e.placeholder||(r?Pe(i,"passwordKeep"):""),o=t=>{const r=t.target?.value??"";i.setFieldValue(e,""===r?void 0:r)};return n.html`
185
+ <span class="sf-field-password flex items-cross-center gap-1/3 min-w-0" spellcheck="false">
186
+ <sf-input
187
+ size=${W}
188
+ appearance="bordered"
189
+ root-class="flex-1 min-w-0"
190
+ input-type="password"
191
+ autocomplete="new-password"
192
+ name=${J(e)}
193
+ placeholder=${s||n.nothing}
194
+ ?required=${Boolean(e.required)&&!r}
195
+ aria-label=${e.label||e.key||""}
196
+ @input=${o}
197
+ @change=${o}
198
+ ></sf-input>
199
+ <sf-button-icon
200
+ size=${W}
201
+ appearance="link"
202
+ scheme="on-surface"
203
+ icon="visibility"
204
+ pressed="false"
205
+ aria-label=${Pe(i,"showPassword")}
206
+ @click=${ee}
207
+ ></sf-button-icon>
208
+ </span>
209
+ `}function ie(e,t,i){return X(e)?Q(i,t):null}function re(e,t,i){return X(e)?n.html`<span class="sf-field-view">${Q(i,t)}</span>`:Xe(e,t,i)}const ne=new Set(["image","image-card","image-list"]);function se(e){return ne.has(String(e.variant??""))}function oe(e,t){const i=Je(t);return i?n.html`
210
+ <pre class="sf-field-include" data-language=${e.language?String(e.language):n.nothing}><code>${String(i)}</code></pre>
211
+ `:n.nothing}function ae(e,t,i){return n.html`
212
+ <sf-input-textarea
213
+ size=${W}
214
+ appearance="bordered"
215
+ class="sf-field-include-edit"
216
+ name=${J(e)}
217
+ value=${Je(t)??""}
218
+ rows="8"
219
+ spellcheck="false"
220
+ ?required=${Boolean(e.required)}
221
+ aria-label=${e.label||e.key||""}
222
+ ?disabled=${!0===e.readonly}
223
+ @change=${t=>i.setFieldValue(e,t.target?.value??"")}
224
+ @input=${t=>i.setFieldValue(e,t.target?.value??"")}
225
+ ></sf-input-textarea>
226
+ `}function le(e,t){const i=Je(t);if(!i)return n.nothing;const r=String(i).split("\n")[0];return n.html`<code>${r.length>60?`${r.slice(0,60)}…`:r}</code>`}function ce(e,t,i){const r=(0,u.$)(e);return"phone"===String(e.variant??"")?Y(e,t,i):X(e)?te(e,t,i):r?ue(e,t,i,r):(t=Je(t),n.html`
227
+ <sf-input
228
+ size=${W}
229
+ appearance="bordered"
230
+ name=${J(e)}
231
+ value=${t??""}
232
+ placeholder=${e.placeholder||n.nothing}
233
+ ?required=${Boolean(e.required)}
234
+ aria-label=${e.label||e.key||""}
235
+ @input=${t=>i.setFieldValue(e,t.target?.value??"")}
236
+ @change=${t=>i.setFieldValue(e,t.target?.value??"")}
237
+ ></sf-input>
238
+ `)}function ue(e,t,i,r){t=Je(t);const s=!1===e.nullable?"":null,o=(t,n)=>{const o=t.currentTarget,a=String(o?.value??""),l=(0,u.C)(a,r);if("incomplete"===l){const t=Pe(i,"maskIncomplete");return n&&o&&(o.setAttribute("error-message",t),o.toggleAttribute("invalid",!0)),void("function"==typeof i.setFieldError?(i.setFieldError(e,t),i.setFieldValue(e,a)):i.setFieldValue(e,void 0))}o?.hasAttribute("invalid")&&(o.toggleAttribute("invalid",!1),o.removeAttribute("error-message")),i.setFieldError?.(e,null),i.setFieldValue(e,"empty"===l?s:a)};return n.html`
239
+ <sf-input
240
+ size=${W}
241
+ appearance="bordered"
242
+ name=${J(e)}
243
+ value=${t??""}
244
+ placeholder=${e.placeholder||n.nothing}
245
+ autocomplete="off"
246
+ mask
247
+ mask-pattern=${r}
248
+ ?required=${Boolean(e.required)}
249
+ aria-label=${e.label||e.key||""}
250
+ @input=${e=>o(e,!1)}
251
+ @change=${e=>o(e,!0)}
252
+ ></sf-input>
253
+ `}function de(e,t,i){return t=Je(t),n.html`
254
+ <sf-input-textarea
255
+ size=${W}
256
+ appearance="bordered"
257
+ name=${J(e)}
258
+ value=${t??""}
259
+ placeholder=${e.placeholder||n.nothing}
260
+ ?required=${Boolean(e.required)}
261
+ aria-label=${e.label||e.key||""}
262
+ @input=${t=>i.setFieldValue(e,t.target?.value??"")}
263
+ @change=${t=>i.setFieldValue(e,t.target?.value??"")}
264
+ ></sf-input-textarea>
265
+ `}function pe(e,t,i){t=Je(t);const r=t=>i.setFieldValue(e,t.currentTarget?.value??"");return n.html`
266
+ <sf-input-rich
267
+ size=${W}
268
+ appearance="bordered"
269
+ name=${J(e)}
270
+ value=${"string"==typeof t?t:""}
271
+ placeholder=${e.placeholder||n.nothing}
272
+ ?required=${Boolean(e.required)}
273
+ ?disabled=${Ge}
274
+ aria-label=${e.label||e.key||""}
275
+ @input=${r}
276
+ @change=${r}
277
+ ></sf-input-rich>
278
+ `}function he(e){return"stepper"===String(e.variant??"")}function fe(e){if(null==e||""===e)return"";const t=Number(e);return Number.isFinite(t)?String(t):""}function ge(e,t,i){const r="number"===(e.propertyType||e.type),s=fe(e.step),o=r?fe(e.precision)||(s?"":"2"):"0",a=t=>i.setFieldValue(e,t.detail?.value??null);return n.html`
279
+ <sf-input-quantity
280
+ size=${W}
281
+ name=${J(e)}
282
+ value=${fe(Je(t))}
283
+ min=${fe(e.min)||n.nothing}
284
+ max=${fe(e.max)||n.nothing}
285
+ step=${s||n.nothing}
286
+ precision=${o||n.nothing}
287
+ aria-label=${e.label||e.key||""}
288
+ ?required=${Boolean(e.required)}
289
+ ?disabled=${!0===e.readonly}
290
+ @input=${a}
291
+ @change=${a}
292
+ ></sf-input-quantity>
293
+ `}function me(e,t,i){if(he(e))return ge(e,t,i);const r="number"===(e.propertyType||e.type);return t=Je(t),n.html`
294
+ <sf-input
295
+ size=${W}
296
+ appearance="bordered"
297
+ name=${J(e)}
298
+ value=${t??""}
299
+ inputmode=${r?"decimal":"numeric"}
300
+ ?required=${Boolean(e.required)}
301
+ aria-label=${e.label||e.key||""}
302
+ @input=${t=>{const r=t.target?.value??"";i.setFieldValue(e,""===r?null:Number(r))}}
303
+ @change=${t=>{const r=t.target?.value??"";i.setFieldValue(e,""===r?null:Number(r))}}
304
+ ></sf-input>
305
+ `}const ve=/^(\d{4}-\d{2}-\d{2})[T ](\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?)(Z|[+-]\d{2}:?\d{2})?$/;function be(e){const t="string"==typeof e?e.trim().match(ve):null;return t?{date:t[1],suffix:`T${t[2]}${t[3]||""}`}:{date:e,suffix:""}}function ye(e,t,i){t=Je(t);const{date:r,suffix:s}=be(t);return n.html`
306
+ <sf-input-date
307
+ size=${W}
308
+ name=${J(e)}
309
+ value=${r??""}
310
+ aria-label=${e.label||e.key||""}
311
+ ?required=${Boolean(e.required)}
312
+ @change=${t=>{const r=t.detail?.value??t.target?.value??null;i.setFieldValue(e,r&&s?`${r}${s}`:r)}}
313
+ ></sf-input-date>
314
+ `}function we(e){const t=Number(e.step);return Number.isInteger(t)&&t>=1&&t<=60?String(t):""}function xe(e,t,i){const r=(0,c.AC)(t),s=r.date?`${r.date}${r.time?`T${r.time}`:""}`:"",o="string"==typeof e.min?e.min:"",a="string"==typeof e.max?e.max:"",l=we(e);return n.html`
315
+ <sf-input-date
316
+ class="sf-field-datetime"
317
+ mode="datetime"
318
+ size=${W}
319
+ name=${J(e)}
320
+ .value=${s}
321
+ min-date=${o||n.nothing}
322
+ max-date=${a||n.nothing}
323
+ minute-step=${l||n.nothing}
324
+ aria-label=${e.label||e.key||""}
325
+ ?required=${Boolean(e.required)}
326
+ @change=${t=>{if(t.target!==t.currentTarget)return;const[n="",s=""]=String(t.detail?.value??"").split("T"),o=(0,c.cy)(r,{date:n,time:s});if(o.error)return;const a=null===o.value?r.known&&!r.date:o.value===r.raw;i.setFieldValue(e,a?void 0:o.value)}}
327
+ ></sf-input-date>
328
+ `}function $e(e,t,i){const r=(0,c.SB)(t),s="string"==typeof e.min?e.min:"",o="string"==typeof e.max?e.max:"",a=we(e);return n.html`
329
+ <sf-input-date
330
+ class="sf-field-time"
331
+ mode="time"
332
+ size=${W}
333
+ name=${J(e)}
334
+ .value=${r.time}
335
+ min-time=${s||n.nothing}
336
+ max-time=${o||n.nothing}
337
+ minute-step=${a||n.nothing}
338
+ aria-label=${e.label||e.key||""}
339
+ ?required=${Boolean(e.required)}
340
+ @change=${t=>{if(t.target!==t.currentTarget)return;const n=(0,c.MC)(r,String(t.detail?.value??""));if(n.error)return;const s=null===n.value?r.known&&!r.time:n.value===r.raw;i.setFieldValue(e,s?void 0:n.value)}}
341
+ ></sf-input-date>
342
+ `}function Se(e,t,i){if(!(!0!==e.required))return n.html`
343
+ <sf-switch
344
+ size=${W}
345
+ name=${J(e)}
346
+ ?checked=${!0===t}
347
+ aria-label=${e.label||e.key||""}
348
+ @change=${t=>i.setFieldValue(e,Boolean(t.target?.checked))}
349
+ ></sf-switch>
350
+ `;const r=O(e,i),s=JSON.stringify([{value:"yes",label:r.yes},{value:"no",label:r.no}]);return n.html`
351
+ <sf-button-group
352
+ size=${W}
353
+ items=${s}
354
+ value=${!0===t?"yes":!1===t?"no":n.nothing}
355
+ aria-label=${e.label||e.key||""}
356
+ @change=${t=>{const r=t.detail?.value;i.setFieldValue(e,"yes"===r||"no"!==r&&null)}}
357
+ ></sf-button-group>
358
+ `}function Te(e,t,i){const r=e.options||e.filter?.options||e.constraints?.options||[],n=i?new Set((Array.isArray(t)?t:[]).map(e=>String(e))):new Set([String(t??"")]);return r.map(e=>({type:"text",size:"1",text:e.label??e.text??String(e.value),value:String(e.value),selected:n.has(String(e.value))}))}const ke=new Set(["1/2","1","2"]),_e=new Set(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End"," ","Enter"]);function Ae(e){return"buttons"===String(e.variant??"")}function Fe(e,t,i){t=Je(t);const r=(e.options||e.filter?.options||e.constraints?.options||[]).filter(e=>e&&null!==e.value&&void 0!==e.value&&""!==String(e.value)),s=r.map(e=>({value:String(e.value),label:String(e.label??e.text??e.value),...e.icon?{icon:String(e.icon)}:{},...e.disabled?{disabled:!0}:{}})),o=String(e.size??""),a=ke.has(o)?o:W,l=Ge,c=!l&&!0===e.readonly,u=!0!==e.required&&!c&&!l,d=null==t?"":String(t),p={capture:!0,handleEvent(e){const t=e.currentTarget,i=e.target?.closest?.("[data-sf-button-group-value]");if(t&&i&&t.contains(i))return c?(e.preventDefault(),void e.stopPropagation()):void(u&&!i.disabled&&i.getAttribute("data-sf-button-group-value")===t.value&&(e.preventDefault(),e.stopPropagation(),t.clear?.()))}},h={capture:!0,handleEvent(e){c&&_e.has(e.key)&&(e.preventDefault(),e.stopPropagation())}};return n.html`
359
+ <sf-button-group
360
+ class="sf-field-choice-buttons"
361
+ appearance="segmented"
362
+ size=${a}
363
+ root-class=${c?"flex-wrap pointer-event-none":"flex-wrap"}
364
+ name=${J(e)}
365
+ items=${JSON.stringify(s)}
366
+ value=${d||n.nothing}
367
+ ?disabled=${l}
368
+ data-readonly=${c?"true":n.nothing}
369
+ aria-label=${e.label||e.key||""}
370
+ @click=${p}
371
+ @keydown=${h}
372
+ @change=${t=>{const n=String(t.detail?.value??"");var s;i.setFieldValue(e,""===n?null:(s=n,r.find(e=>String(e.value)===s)?.value??s))}}
373
+ ></sf-button-group>
374
+ `}function Ce(e,t,i){return Ae(e)?Fe(e,t,i):(t=Je(t),n.html`
375
+ <sf-dropdown
376
+ size=${W}
377
+ appearance="outlined"
378
+ mode="select"
379
+ search="false"
380
+ name=${J(e)}
381
+ ?required=${Boolean(e.required)}
382
+ value=${t??""}
383
+ aria-label=${e.label||e.key||""}
384
+ .options=${Te(e,t,!1)}
385
+ @change=${t=>i.setFieldValue(e,t.detail?.value??null)}
386
+ ></sf-dropdown>
387
+ `)}const ze=13;function Ee(e,t,i){const r=e.options||e.filter?.options||e.constraints?.options||[],s=new Set((Array.isArray(t)?t:[]).map(e=>String(e)));return n.html`
388
+ <div class="sf-field-checklist grid gap-1/3 w-full min-w-0" role="group" aria-label=${e.label||e.key||""}
389
+ style="grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr))">
390
+ ${r.map(t=>n.html`<sf-checkbox size=${W}
391
+ name=${J(e)} value=${String(t.value)}
392
+ label=${t.label??t.text??String(t.value)}
393
+ .checked=${s.has(String(t.value))}
394
+ @change=${n=>((t,n)=>{const o=r.filter(e=>String(e.value)===String(t.value)?n:s.has(String(e.value))).map(e=>e.value);i.setFieldValue(e,o)})(t,Boolean(n.target?.checked??n.detail?.checked))}></sf-checkbox>`)}
395
+ </div>
396
+ `}function qe(e,t,i){const r=e.options||e.filter?.options||e.constraints?.options||[],s=String(e.variant??"");return"checklist"===s||"select"!==s&&r.length>=ze?Ee(e,t,i):n.html`
397
+ <sf-dropdown
398
+ size=${W}
399
+ appearance="outlined"
400
+ mode="select"
401
+ multiple
402
+ search="false"
403
+ name=${J(e)}
404
+ ?required=${Boolean(e.required)}
405
+ aria-label=${e.label||e.key||""}
406
+ .options=${Te(e,t,!0)}
407
+ @change=${t=>{const r=t.detail?.values??t.detail?.value;i.setFieldValue(e,Array.isArray(r)?r:r?[r]:[])}}
408
+ ></sf-dropdown>
409
+ `}const Ve={en:{yes:"Yes",no:"No",searchInList:"Find in the list",containsText:"Contains…",fileKind_image:"Images",fileKind_document:"Documents",fileKind_archive:"Archives",fileKind_other:"Other files",operator:"Operator",rangeFrom:"From",rangeTo:"To",loadingOptions:"Loading the options",optionsError:"The options could not be loaded",pickRecord:"Choose a record",pickFromList:"Choose from the list",searchRecords:"Find a record",loadingRecords:"Loading records",recordsError:"The records could not be loaded",retry:"Try again",loadMore:"Load more",removeFile:"Remove",passwordSet:"Set",passwordUnset:"Not set",passwordKeep:"Set; type a new one to replace it",showPassword:"Show password",maskIncomplete:"Complete the field"},ru:{yes:"Да",no:"Нет",searchInList:"Найти в списке",containsText:"Содержит…",fileKind_image:"Изображения",fileKind_document:"Документы",fileKind_archive:"Архивы",fileKind_other:"Прочие файлы",operator:"Оператор",rangeFrom:"От",rangeTo:"До",loadingOptions:"Загрузка вариантов",optionsError:"Не удалось загрузить варианты",pickRecord:"Выберите запись",pickFromList:"Выберите из списка",searchRecords:"Найти запись",loadingRecords:"Загрузка записей",recordsError:"Не удалось загрузить записи",retry:"Повторить",loadMore:"Загрузить ещё",removeFile:"Удалить",passwordSet:"Задан",passwordUnset:"Не задан",passwordKeep:"Задан; введите новый, чтобы заменить",showPassword:"Показать пароль",maskIncomplete:"Заполните поле полностью"}},Le="sf-field-renderers";function Pe(e,t){return e?.getFieldText?.(t)??(0,a.pageText)(Ve,t,e??null,Le)}function Oe(e,t,i){if(!i.loadFieldOptions||!i.getFieldOptionsPage)return null;const r=i.getFieldOptionsPage(e)||null;if("unsupported"===r?.status)return null;const s=i.getFieldOptionSearch?.(e)??"",o=t&&"object"==typeof t?t:null,a=Array.isArray(r?.items)?r.items:[],l=[...o&&!a.some(e=>String(e.value)===String(o.value))?[o]:[],...a].map(e=>({type:"text",size:"1",text:String(e.label??e.value),value:String(e.value),selected:Boolean(o&&String(o.value)===String(e.value))}));return n.html`
410
+ <div class="sf-field-picker flex flex-col gap-1/3" data-field-picker=${e.key||n.nothing}>
411
+ <sf-dropdown
412
+ size=${W}
413
+ appearance="outlined"
414
+ mode="select"
415
+ search="true"
416
+ name=${J(e)}
417
+ ?required=${Boolean(e.required)}
418
+ value=${o?String(o.value):""}
419
+ placeholder=${e.placeholder||Pe(i,"pickRecord")}
420
+ search-placeholder=${e.searchPlaceholder||Pe(i,"searchRecords")}
421
+ aria-label=${e.label||e.key||""}
422
+ .options=${l}
423
+ @change=${t=>(t=>{if(!t)return void i.setFieldValue(e,null);const r=[o,...a].find(e=>e&&String(e.value)===String(t));i.setFieldValue(e,r?{value:r.value,label:r.label}:{value:t})})(t.detail?.value??null)}
424
+ @input=${t=>{const r=t.target?.value??"";i.setFieldOptionSearch?.(e,r),i.loadFieldOptions(e,{cursor:null,search:r})}}
425
+ ></sf-dropdown>
426
+ ${r?n.html`
427
+ <div class="sf-field-picker-state flex items-cross-center gap-1/3">
428
+ <div role="status" aria-live="polite" class="sf-text-1">
429
+ ${"loading"!==r.status||r.quiet?"error"===r.status?Pe(i,"recordsError"):"":Pe(i,"loadingRecords")}
430
+ </div>
431
+ ${"error"===r.status?n.html`
432
+ <sf-button appearance="outline" size="1" text=${Pe(i,"retry")}
433
+ @click=${()=>i.loadFieldOptions(e,{cursor:null,search:s})}
434
+ ></sf-button>
435
+ `:n.nothing}
436
+ ${r.nextCursor&&"error"!==r.status?n.html`
437
+ <sf-button appearance="outline" size="1" text=${Pe(i,"loadMore")}
438
+ ?disabled=${"loading"===r.status}
439
+ @click=${()=>i.loadFieldOptions(e,{cursor:r.nextCursor,search:s})}
440
+ ></sf-button>
441
+ `:n.nothing}
442
+ </div>
443
+ `:n.nothing}
444
+ </div>
445
+ `}function De(e,t){const i=Array.isArray(t)?t:[t],r=Array.isArray(e.options)?e.options:[];return i.filter(e=>null!=e&&""!==e).map(e=>{if("object"==typeof e)return{value:e.value,label:String(e.label??e.value??"")};const t=r.find(t=>String(t?.value)===String(e));return{value:e,label:String(t?.label??t?.text??e)}})}function Ie(e,t,i){const r=!0===e.multiple,s=Array.isArray(e.options)&&e.options.length>0;if(!(s||i.loadFieldOptions&&i.getFieldOptionsPage))return null;const o=s?null:i.getFieldOptionsPage(e)||null;if("unsupported"===o?.status)return null;const a=s?"":i.getFieldOptionSearch?.(e)??"",l=De(e,t),c=(s?e.options:Array.isArray(o?.items)?o.items:[]).filter(e=>e&&"object"==typeof e).map(e=>({value:e.value,label:String(e.label??e.text??e.value)})),u=e=>l.some(t=>String(t.value)===String(e.value)),d=[...l.filter(e=>!c.some(t=>String(t.value)===String(e.value))),...c].map(e=>({type:"text",size:"1",text:e.label,value:String(e.value),selected:u(e)})),p=[...l,...c],h=e=>{const t=p.find(t=>String(t.value)===String(e));return t?{value:t.value,label:t.label}:{value:e,label:String(e)}};return n.html`
446
+ <div class="sf-field-picker flex flex-col gap-1/3" data-field-picker=${e.key||n.nothing}>
447
+ <sf-dropdown
448
+ size=${W}
449
+ appearance="outlined"
450
+ mode="select"
451
+ ?multiple=${r}
452
+ search="true"
453
+ name=${J(e)}
454
+ ?required=${Boolean(e.required)}
455
+ value=${r?n.nothing:l[0]?String(l[0].value):""}
456
+ placeholder=${e.placeholder||Pe(i,"pickFromList")}
457
+ search-placeholder=${e.searchPlaceholder||Pe(i,"searchInList")}
458
+ aria-label=${e.label||e.key||""}
459
+ .options=${d}
460
+ @change=${t=>{if(r){const r=t.detail?.values??t.detail?.value,n=(Array.isArray(r)?r:r?[r]:[]).filter(e=>""!==e);return void i.setFieldValue(e,n.map(h))}const n=t.detail?.value??null;i.setFieldValue(e,null===n||""===n?null:h(n))}}
461
+ @input=${s?n.nothing:t=>{const r=t.target?.value??"";i.setFieldOptionSearch?.(e,r),i.loadFieldOptions(e,{cursor:null,search:r})}}
462
+ ></sf-dropdown>
463
+ ${o?n.html`
464
+ <div class="sf-field-picker-state flex items-cross-center gap-1/3">
465
+ <div role="status" aria-live="polite" class="sf-text-1">
466
+ ${"loading"!==o.status||o.quiet?"error"===o.status?Pe(i,"optionsError"):"":Pe(i,"loadingOptions")}
467
+ </div>
468
+ ${"error"===o.status?n.html`
469
+ <sf-button appearance="outline" size="1" text=${Pe(i,"retry")}
470
+ @click=${()=>i.loadFieldOptions(e,{cursor:null,search:a})}
471
+ ></sf-button>
472
+ `:n.nothing}
473
+ ${o.nextCursor&&"error"!==o.status?n.html`
474
+ <sf-button appearance="outline" size="1" text=${Pe(i,"loadMore")}
475
+ ?disabled=${"loading"===o.status}
476
+ @click=${()=>i.loadFieldOptions(e,{cursor:o.nextCursor,search:a})}
477
+ ></sf-button>
478
+ `:n.nothing}
479
+ </div>
480
+ `:n.nothing}
481
+ </div>
482
+ `}function Re(e){return Array.isArray(e)?e.filter(e=>e&&"object"==typeof e):e&&"object"==typeof e?[e]:[]}function Me(e,t){return"image"===String(e.variant??"")&&!0!==e.multiple&&Re(t).length<=1}function Ne(e,t,i){const r=Re(t)[0]??null,s=Array.isArray(t);return n.html`
483
+ <sf-input-image
484
+ size=${W}
485
+ name=${J(e)}
486
+ accept=${e.accept?String(e.accept):n.nothing}
487
+ hint=${e.uploadSupportingText||n.nothing}
488
+ .value=${r}
489
+ aria-label=${e.label||e.key||""}
490
+ ?required=${Boolean(e.required)}
491
+ ?disabled=${!0===e.readonly}
492
+ @change=${t=>{const r=t.detail?.value??null;i.setFieldValue(e,s?r?[r]:[]:r);const n=t.detail?.file;n&&i.startFieldUpload&&i.startFieldUpload(e,[{name:n.name,state:"process",progress:0,file:n}])}}
493
+ ></sf-input-image>
494
+ `}function Ue(e,t,i){if(Me(e,t))return Ne(e,t,i);const r=Re(t),s=!0===e.multiple||Array.isArray(t),o=Boolean(i.startFieldUpload&&i.getFieldUploads),a=o?i.getFieldUploads(e):null,l=Array.isArray(a)?a:[];return n.html`
495
+ <div class="sf-field-file flex flex-col">
496
+ ${r.map((t,o)=>n.html`
497
+ <sf-file-preview
498
+ file-name=${String(t.label??t.name??"File")}
499
+ file-size=${String(t.size??"")}
500
+ icon=${A(t.mime??t.mimeType)}
501
+ mime-type=${String(t.mime??t.mimeType??"")}
502
+ href=${t.href?String(t.href):n.nothing}
503
+ download-action=${t.href?"true":"false"}
504
+ remove-action="true"
505
+ remove-label=${`${Pe(i,"removeFile")} ${t.label??t.name??""}`.trim()}
506
+ @sf-file-preview-detach=${()=>(t=>{const n=r.filter((e,i)=>i!==t);i.setFieldValue(e,s?n:n[0]??null)})(o)}
507
+ ></sf-file-preview>
508
+ `)}
509
+
510
+ ${o?n.html`
511
+ <sf-file-upload
512
+ size=${W}
513
+ name=${J(e)}
514
+ accept=${String(e.accept??"")}
515
+ formats=${String(e.formats??"")}
516
+ link-text=${e.uploadText||n.nothing}
517
+ text=${e.uploadHint||n.nothing}
518
+ supporting-text=${e.uploadSupportingText||n.nothing}
519
+ ?multiple=${s}
520
+ ?disabled=${!0===e.readonly}
521
+ aria-label=${e.label||e.key||""}
522
+ .items=${l}
523
+ @sf-file-upload:select=${t=>{const r=t.detail?.files,n=Array.isArray(r)?r:[];n.length&&i.startFieldUpload(e,n)}}
524
+ @sf-file-upload:retry=${t=>{i.retryFieldUpload?.(e,Number(t.detail?.index??-1))}}
525
+ ></sf-file-upload>
526
+ `:n.nothing}
527
+ </div>
528
+ `}const je=e=>"1/2"===e?.size?"1/2":"1",Be=(e,t)=>"choice"===e&&Ae(t);let Ge=!1;function He(e={},t,i,r={}){const n=e.propertyType||e.type||e.dataType,s=!0===r?.disabled;if((!0===e.readonly||s)&&lt[n]&&!Be(n,e))return ct(e,t,i,r);const o=K[n];if(!o||!i?.setFieldValue)return null;const a=W,l=Ge;W=je(r),Ge=s;try{return o(e,t,i)}finally{W=a,Ge=l}}let We="1";function Ke(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)&&"string"==typeof e.text}function Je(e){return Ke(e)?e.value:e}function Ye(e,t,i){const r=i?.formatFieldValue?.(e,t);if("string"==typeof r)return r;if(Ke(t))return t.text;const n=Je(t);return null==n?"":String(n)}function Xe(e,t,i){const r=Ye(e,t,i);return r?n.html`<span class="sf-field-view">${r}</span>`:n.nothing}function Ze(e,t){const i=(0,d.b)(t);return i?n.html`<div class="sf-field-view sf-field-html">${(0,s.unsafeHTML)(i)}</div>`:n.nothing}function Qe(e,t,i){if(null==t||""===t)return n.nothing;const r=e.variant||e.filter?.variant,s=Number(Je(t));if("scale"===r&&Number.isFinite(s)&&s>=0&&s<=100)return n.html`<sf-progress-scale size="1" value=${String(s)}></sf-progress-scale>`;const o=Ye(e,t,i);return n.html`<span class="sf-field-view">${e.unit?`${o} ${e.unit}`:o}</span>`}function et(e,t,i){const r=Ye(e,t,i);return r?n.html`<span class="sf-field-view">${r}</span>`:n.nothing}function tt(e,t,i){if("boolean"!=typeof t)return n.nothing;const r=O(e,i);return n.html`<span class="sf-field-view">${t?r.yes:r.no}</span>`}function it(e,t){const i=e.options||e.filter?.options||e.constraints?.options,r=Array.isArray(i)?i.find(e=>String(e?.value)===String(t)):null;if(!r)return n.nothing;const s=(0,o.f)(r);return n.html`
529
+ <sf-badge
530
+ line=${We}
531
+ appearance=${e.badgeAppearance??k}
532
+ scheme=${s.scheme}
533
+ style=${s.rootStyle||n.nothing}
534
+ text=${String(r.label??r.text??t)}
535
+ ></sf-badge>
536
+ `}function rt(e,t){if(!Array.isArray(t)||!t.length)return n.nothing;const i=e.options||e.filter?.options||e.constraints?.options;return n.html`
537
+ <span class="sf-field-view flex flex-wrap items-cross-center gap-1/3 min-w-0">
538
+ ${t.map(e=>n.html`<sf-tag root-class="flex-none" line=${We} kind="default" text=${(e=>{const t=Array.isArray(i)?i.find(t=>String(t?.value)===String(e)):null;return String(t?.label??t?.text??e)})(e)}></sf-tag>`)}
539
+ </span>
540
+ `}function nt(e,t){return t&&"object"==typeof t&&t.label?n.html`
541
+ <span class="sf-field-view flex items-cross-center gap-1/3">
542
+ <sf-avatar line=${We} text=${t.avatarText||""}></sf-avatar>
543
+ ${t.href?n.html`<sf-reference-link appearance="plain" icon="" line=${We}
544
+ label=${String(t.label)} href=${String(t.href)}></sf-reference-link>`:n.html`<span>${String(t.label)}</span>`}
545
+ </span>
546
+ `:n.nothing}function st(e,t){return t&&"object"==typeof t&&t.label?n.html`
547
+ <sf-reference-link
548
+ appearance="plain"
549
+ icon=""
550
+ line=${We}
551
+ label=${String(t.label)}
552
+ href=${t.href?String(t.href):n.nothing}
553
+ ></sf-reference-link>
554
+ `:n.nothing}function ot(e,t){const i=De(e,t);return i.length?1===i.length&&!0!==e.multiple?n.html`<span class="sf-field-view">${i[0].label}</span>`:n.html`
555
+ <span class="sf-field-view flex flex-wrap items-cross-center gap-1/3 min-w-0">
556
+ ${i.map(e=>n.html`<sf-tag root-class="flex-none" line=${We} kind="default" text=${e.label}></sf-tag>`)}
557
+ </span>
558
+ `:n.nothing}function at(e,t){const i=Re(t);if(!i.length)return n.nothing;const r=se(e),s="image-card"===String(e.variant??"");return n.html`
559
+ <span class="sf-field-view flex ${s?"flex-row":"flex-col"} gap-1/3">
560
+ ${i.map(e=>n.html`
561
+ <sf-file-preview
562
+ file-name=${String(e.label??e.name??"File")}
563
+ file-size=${String(e.size??"")}
564
+ icon=${A(e.mime??e.mimeType)}
565
+ mime-type=${String(e.mime??e.mimeType??"")}
566
+ href=${e.href?String(e.href):n.nothing}
567
+ image-url=${r&&e.href?String(e.href):n.nothing}
568
+ kind=${r?"image":n.nothing}
569
+ download-action=${e.href?"true":"false"}
570
+ remove-action="false"
571
+ ></sf-file-preview>
572
+ `)}
573
+ </span>
574
+ `}const lt={string:re,text:Xe,html:Ze,integer:Qe,number:Qe,date:et,datetime:et,time:et,boolean:tt,choice:it,choices:rt,user:nt,record:st,relation:st,lookup:ot,file:at,color:C,include:oe};function ct(e={},t,i,r={}){const n=e.propertyType||e.type||e.dataType,s=lt[n];if(!s)return null;const o=We;We=je(r);try{return s(e,t,i)}finally{We=o}}"undefined"!=typeof window&&(window.SF=window.SF||{},window.SF.fieldRenderers={...window.SF.fieldRenderers||{},renderCellField:H,renderEditField:He,renderFilterField:S,renderViewField:ct,FILTER_RENDERERS:$,dateTime:{split:c.AC,compose:c.cy,normalizeTime:c.d2,splitTime:c.SB,composeTime:c.MC},registry:l.u.map(e=>{return{...e,modes:(t=e.type,(0,l.U)(t,{view:lt,edit:K,cell:P,filter:$}))};var t})},globalThis.document?.dispatchEvent?.(new CustomEvent("sf-field-renderers-ready"))),r()}catch(ut){r(ut)}})},dd6973f77245(e,t,i){i.d(t,{$:()=>a,C:()=>l});const r={0:"\\d",a:"\\p{L}","*":"[\\s\\S]"},n={0:e=>/\d/u.test(e),a:e=>/\p{L}/u.test(e),"*":()=>!0},s=e=>e.replace(/[\\^$.*+?()[\]{}|/]/gu,"\\$&");const o=new Map;function a(e){const t=e?.mask;return"string"==typeof t&&""!==t?t:null}function l(e,t,i="_"){const a=String(e??"");o.has(t)||o.set(t,function(e){let t="";const i=[];for(let o=0;o<e.length;o+=1){const a=e[o];"\\"===a?(o+=1,o<e.length&&(t+=s(e[o]),i.push({fixed:e[o]}))):"{"===a||"}"===a||"["===a||"]"===a||(r[a]?(t+=r[a],i.push({test:n[a]})):(t+=s(a),i.push({fixed:a})))}return{complete:new RegExp(`^${t}$`,"u"),tokens:i}}(t));const{complete:l,tokens:c}=o.get(t);return l.test(a)?"complete":0===function(e,t,i){let r=0,n=0;for(const s of e){for(;n<t.length&&void 0!==t[n].fixed&&t[n].fixed!==s;)n+=1;if(n>=t.length)break;const e=t[n];void 0!==e.fixed||s===i?n+=1:e.test(s)&&(r+=1,n+=1)}return r}(a,c,i)?"empty":"incomplete"}},fc654eb7fab0(e,t,i){i.d(t,{U:()=>n});const r=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","mask","nullable","required","readonly"]},{type:"text",label:{ru:"Текст",en:"Text"},variants:[],params:["placeholder","required","readonly"]},{type:"html",label:{ru:"Форматированный текст",en:"Formatted text"},variants:[],params:["placeholder","required","readonly"]},{type:"integer",label:{ru:"Целое число",en:"Integer"},variants:[{id:"stepper",label:{ru:"Кнопками «−» и «+»",en:"With steppers"}}],params:["unit","min","max","step","required","readonly"]},{type:"number",label:{ru:"Число",en:"Number"},variants:[{id:"scale",label:{ru:"Шкала 0–100",en:"Scale 0–100"}},{id:"stepper",label:{ru:"Кнопками «−» и «+»",en:"With steppers"}}],params:["unit","min","max","step","precision","required","readonly"]},{type:"date",label:{ru:"Дата",en:"Date"},variants:[],params:["required","readonly"]},{type:"datetime",label:{ru:"Дата и время",en:"Date and time"},variants:[],params:["min","max","step","required","readonly"]},{type:"time",label:{ru:"Время",en:"Time"},variants:[],params:["min","max","step","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:[{id:"buttons",label:{ru:"Кнопками",en:"As buttons"}}],params:["options","badgeAppearance","size","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"}}i.d(t,["u",0,r])},"5961360f41f4"(e,t,i){i.d(t,{f:()=>c});const r=Object.freeze(["main","tonal","outline"]),n=Object.freeze(["neutral","primary","secondary","tertiary","info","success","warning","error","on-surface"]),s=Object.freeze({danger:"error"}),o=Object.freeze(["1/3","1/2","1"]);function a(e){const t=String(e??"").trim().toLowerCase(),i=s[t]??t;return n.includes(i)?i:""}Object.freeze(n.flatMap(e=>r.filter(t=>!("on-surface"===e&&"tonal"===t)).flatMap(t=>o.map(i=>Object.freeze({type:t,scheme:e,size:i})))));const l=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;function c(e={}){const t=e?.scheme??e?.color,i="string"==typeof t?t.trim():"",r=a(i);return r?{scheme:r,rootStyle:""}:l.test(i)?{scheme:"neutral",rootStyle:`--sf-badge--background-color: color-mix(in srgb, ${i} 24%, transparent); --sf-badge--color: var(--sf-on-surface)`}:{scheme:"neutral",rootStyle:""}}},"7623a90f1816"(e,t,i){i.a(e,async(e,t)=>{try{var r=i("deb1a4d61565"),n=i("5b7d7695b41b"),s=i("17828be41e75"),o=i("3ea81f4c3c20"),a=i("4284cc8c32e1"),l=i("99fb492b7fba"),c=i("d614908e644f"),u=i("1b42c5117087"),d=i("43090d1c8307"),p=i("18003344cff0"),h=i("40b137e60526"),f=i("844bdc4d24eb"),g=i("2f31b00ad99a"),m=e([r,n,d,p,h,g]);[r,n,d,p,h,g]=m.then?(await m)():m;var v=i.n(r);const b=["1.0.0","1.1.0","1.2.0","1.3.0","1.4.0","1.5.0","1.6.0","1.7.0","1.8.0","1.9.0","1.10.0","1.11.0","1.12.0","1.13.0","1.14.0","1.15.0","1.16.0","1.17.0"],y=["view","auto","edit","create"],w=20,x=["record","relation","user","lookup"],$=e=>Number.isInteger(e?.field_count)&&e.field_count>0&&(!Array.isArray(e.fields)||0===e.fields.length),S=(e,t)=>{const i=e=>String(e??"").split(".").map(e=>Number.parseInt(e,10)||0),[r,n]=[i(e),i(t)];for(let e=0;e<3;e+=1)if((r[e]??0)!==(n[e]??0))return(r[e]??0)>(n[e]??0);return!0},T="(min-width: 48rem)",k="14rem",_=5e3,A=[];function F(){return A[A.length-1]??null}function C(){A.forEach((e,t)=>{e.setAttribute("data-stack-depth",String(t)),e.toggleAttribute("data-stack-top",e===F()),e.requestComponentUpdate("stack")})}const z=e=>null===e||["string","number","boolean","undefined"].includes(typeof e)||"object"==typeof e&&(Array.isArray(e)||e.constructor===Object),E=e=>null==e?e:"object"==typeof e&&z(e)?Array.isArray(e)?e.map(e=>E(e)):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,E(t)])):e,q=(e={})=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e.replace(/-([a-z0-9])/gu,(e,t)=>t.toUpperCase()),t])),V={en:q(l.runtime),ru:q(c.runtime)},L=u.x,P=(0,n.elementFromManifest)(o,{base:v(),lang:{en:l,ru:c},source:"ru",aliases:a});class O extends P{static get props(){return{templateName:{attribute:"template",default:"default"},recordId:{attribute:"record-id",default:""},collection:{default:""},showRare:{attribute:"show-rare",type:Boolean,default:!1},size:{default:"1"},mode:{default:"auto"},emptyText:{attribute:"empty-text",default:"not filled in"},emptyRecordText:{attribute:"empty-record-text",default:"This record has nothing to show"},editText:{attribute:"edit-text",default:"edit"},saveText:{attribute:"save-text",default:"Save"},cancelText:{attribute:"cancel-text",default:"Cancel"},deleteText:{attribute:"delete-text",default:"Delete"},changedText:{attribute:"changed-text",default:"Fields changed"},errorsText:{attribute:"errors-text",default:"Errors"},conflictText:{attribute:"conflict-text",default:"The record changed; read it again"},sectionsLabel:{attribute:"sections-label",default:"Sections"},sectionsAs:{attribute:"sections-as",default:"list",values:["list","tabs"]},panel:{type:Boolean,default:!1},panelSize:{attribute:"panel-size",default:"1",values:["1/2","1","2","full"]},panelLabel:{attribute:"panel-label",default:""},panelWidth:{attribute:"panel-width",default:""},closeLabel:{attribute:"close-label",default:"Close"},copyLinkLabel:{attribute:"copy-link-label",default:"Copy link"},linkCopiedLabel:{attribute:"link-copied-label",default:"Link copied"},openFullLabel:{attribute:"open-full-label",default:"Open as a page"},configureText:{attribute:"configure-text",default:"Arrange the view"},doneConfiguringText:{attribute:"done-configuring-text",default:"Done"},resetViewText:{attribute:"reset-view-text",default:"Reset"},resetViewAskText:{attribute:"reset-view-ask-text",default:"Reset the whole view?"},cancelConfiguringText:{attribute:"cancel-configuring-text",default:"Cancel"},personalLayerText:{attribute:"personal-layer-text",default:"Personal"},viewProfileLabel:{attribute:"view-profile-label",default:"View"},addViewText:{attribute:"add-view-text",default:"Add a view"},newViewText:{attribute:"new-view-text",default:"New view"},deleteViewText:{attribute:"delete-view-text",default:"Remove the view"},lastSharedViewText:{attribute:"last-shared-view-text",default:"The only view everyone has"},sharedLayerText:{attribute:"shared-layer-text",default:"Everyone's"},widthText:{attribute:"width-text",default:"Full width"},fieldLabelText:{attribute:"field-label-text",default:"Name"},sectionIconText:{attribute:"section-icon-text",default:"Section glyph"},sectionIcons:{attribute:"section-icons",default:""},variantText:{attribute:"variant-text",default:"Template"},hintText:{attribute:"hint-text",default:"Hint"},hiddenText:{attribute:"hidden-text",default:"Hide"},configureHintText:{attribute:"configure-hint-text",default:"Drag fields between groups and onto a section on the left. Applied at once."},configureHintNarrowText:{attribute:"configure-hint-narrow-text",default:"Drag fields between groups. Applied at once."},fieldSettingsText:{attribute:"field-settings-text",default:"Field settings"},shownText:{attribute:"shown-text",default:"Shown"},showRareText:{attribute:"show-rare-text",default:"Show rare fields"},hideRareText:{attribute:"hide-rare-text",default:"Hide rare fields"},rareText:{attribute:"rare-text",default:"rare"},unplacedTitle:{attribute:"unplaced-title",default:"Not placed"},moveUpText:{attribute:"move-up-text",default:"Move up"},moveDownText:{attribute:"move-down-text",default:"Move down"},addFieldText:{attribute:"add-field-text",default:"Add a field"},inThisGroupText:{attribute:"in-this-group-text",default:"In this area"},renameText:{attribute:"rename-text",default:"Rename"},saveNameText:{attribute:"save-name-text",default:"Save the name"},cancelNameText:{attribute:"cancel-name-text",default:"Leave the name"},removeFieldText:{attribute:"remove-field-text",default:"Remove from this area"},removeGroupText:{attribute:"remove-group-text",default:"Remove this area"},removeSectionText:{attribute:"remove-section-text",default:"Remove this section"},addGroupText:{attribute:"add-group-text",default:"Add an area"},addSectionText:{attribute:"add-section-text",default:"Add a section"},newGroupTitle:{attribute:"new-group-title",default:"New area"},newSectionTitle:{attribute:"new-section-title",default:"New section"},noMatchText:{attribute:"no-match-text",default:"Nothing matches"},unplacedHintText:{attribute:"unplaced-hint-text",default:"Fields this view does not show. Drag one into a group to place it, or drag a field here to take it out."},viewConflictText:{attribute:"view-conflict-text",default:"The view changed and was read again"},viewDeniedText:{attribute:"view-denied-text",default:"You may not change this layer"},backLabel:{attribute:"back-label",default:"Back"},collectionLabel:{attribute:"collection-label",default:""},collectionIcon:{attribute:"collection-icon",default:""},favourite:{type:Boolean,default:!1},favouriteLabel:{attribute:"favourite-label",default:"Favourite"},menuLabel:{attribute:"menu-label",default:"More"},inheritedText:{attribute:"inherited-text",default:"by default"}}}constructor(){super(),this.hostPort=null,this.record=null,this.sections=[],this.selectedSection=null,this.renaming=null,this.namingView=!1,this.arrangementEntered=null,this.resetAsked=!1,this.epoch=0,this.groupReads=new Map,this.groupsReading=new Set,this.groupsRefused=new Map,this.groupEpoch=0,this.message="",this.editing=null,this.changed=new Map,this.errors=new Map,this.inputErrors=new Map,this.controlErrors=new Set,this.conflict=null,this.confirmation=null,this.optionPages=new Map,this.optionSearches=new Map,this.optionEpochs=new Map,this.uploads=new Map,this.view=null,this.configuring=!1,this._openedForDrag=!1,this.viewTarget="personal",this.layerDraft=null,this.entryErrors=new Map,this.viewEpoch=0,this.wide=!0,this.wideMedia=null,this.phoneSection=null}get recordId(){return this.getAttribute("record-id")||""}get collection(){return this.getAttribute("collection")||""}get showRare(){return this.getBooleanAttr("show-rare",!1)}get emptyRecordText(){return this.getAttribute("empty-record-text")||(0,d.pageText)(V,"emptyRecordText",this)}get isEmptyRecord(){if(!this.record)return!1;const e=this.sections??[];return!e.length||!e.some(e=>(e.groups??[]).some(e=>"related"===e.kind||(e.fields??[]).length>0))}get emptyText(){return this.getAttribute("empty-text")||(0,d.pageText)(V,"emptyText",this)}get editText(){return this.getAttribute("edit-text")||(0,d.pageText)(V,"editText",this)}get saveText(){return this.getAttribute("save-text")||(0,d.pageText)(V,"saveText",this)}get cancelText(){return this.getAttribute("cancel-text")||(0,d.pageText)(V,"cancelText",this)}get deleteText(){return this.getAttribute("delete-text")||(0,d.pageText)(V,"deleteText",this)}get unplaced(){const e=this.record?.unplaced;return Array.isArray(e)?e:[]}moveFieldToUnplaced(e,t){if(!this.configuring||!this.layerDraft)return!1;let i=null,r=null;for(const t of this.sections){for(const n of t.groups??[]){const t=(n.fields??[]).findIndex(t=>String(t.key)===String(e));if(t>=0){r=n,[i]=n.fields.splice(t,1);break}}if(i)break}if(!i)return!1;const n=this.record.unplaced??(this.record.unplaced=[]),s=Math.max(0,Math.min(Number.isInteger(t)?t:n.length,n.length));return n.splice(s,0,i),this._writeOrder(this.layerDraft.fields,n,{group:null}),r&&this._writeOrder(this.layerDraft.fields,r.fields??[],{group:String(r.key)}),this.requestComponentUpdate("view-move"),this.saveView()}get recordActions(){const e=this.record?.actions;return Array.isArray(e)?e.map(e=>String(e)):[]}async deleteRecord(){if("view"===this.mode||"create"===this.mode||!this.recordActions.includes("record.delete"))return!1;const e=await this._raise("record.delete",{record_id:this.recordId||null,collection:this.collection||null,revision:this.record?.revision??null});return this.sfEmit("delete",{record_id:this.recordId||null,collection:this.collection||null,revision:this.record?.revision??null,answer:e?.answer??null}),!!e&&("applied"===e.answer?(this.closePanel("deleted"),!0):"cancelled"===e.reason?(this._setState("ready"),!1):(this.message=e.message||e.reason||this.viewDeniedText,this._setState("ready"),this.requestComponentUpdate("delete-refused"),!1))}get changedText(){return this.getAttribute("changed-text")||(0,d.pageText)(V,"changedText",this)}get errorsText(){return this.getAttribute("errors-text")||(0,d.pageText)(V,"errorsText",this)}get conflictText(){return this.getAttribute("conflict-text")||(0,d.pageText)(V,"conflictText",this)}get sectionsAs(){return this.getEnumAttr("sections-as",["list","tabs"],"list")}get sectionsLabel(){return this.getAttribute("sections-label")||(0,d.pageText)(V,"sectionsLabel",this)}get panel(){return this.getBooleanAttr("panel",!1)&&!this.full}get full(){return this.getBooleanAttr("full",!1)}set full(e){this.toggleAttribute("full",Boolean(e))}get panelOpen(){return this.panel&&!this.hidden&&"false"!==this.getAttribute("open")}syncPanelOpen(){const e=A.indexOf(this);this.panelOpen&&this.isConnected&&e<0?(A.push(this),C()):!this.panelOpen&&e>=0&&(A.splice(e,1),C()),this.requestComponentUpdate("panel-open")}get revision(){return void 0===this.record?.revision||null===this.record?.revision?"":String(this.record.revision)}get section(){return this.selectedSection??""}get panelSize(){return this.getAttribute("panel-size")||"1"}get panelLabel(){return this.getAttribute("panel-label")||""}get panelWidth(){return this.getAttribute("panel-width")||""}get size(){return"1/2"===this.getAttribute("size")?"1/2":"1"}get mode(){const e=this.getAttribute("mode");return y.includes(e)?e:"auto"}get mayEdit(){return"view"!==this.mode&&("create"===this.mode||(!S(this.hostPort?.version,"1.12.0")||this.recordActions.includes("record.edit")))}get openAll(){return"create"===this.mode||"edit"===this.mode&&this.mayEdit}get drawerWidth(){const e=this.panelWidth;if(!e)return null;if(!this.wide)return e;return`min(${"list"===this.sectionsAs&&((this.sections??[]).length>=2||this.configuring)?`calc(${e} + ${k} + var(--sf-space-4))`:e}, calc(100vw - ${this.edgeRoom}))`}get edgeControlWidth(){const e="1/2"===this.size?"1\\/2":"1";return`calc(var(--sf-text-height-${e}) + 2 * var(--sf-ui-${e}--space-y-tightness-default))`}get edgeRoom(){return`calc(${this.edgeControlWidth} + 2 * var(--sf-space-1\\/2))`}get edgeControlCount(){return 1+(this.address?1:0)+(this.canOpenFullPage?1:0)}get closeLabel(){return this.getAttribute("close-label")||(0,d.pageText)(V,"closeLabel",this)}get linkCopiedLabel(){return this.getAttribute("link-copied-label")||(0,d.pageText)(V,"linkCopiedLabel",this)}get copyLinkLabel(){return this.getAttribute("copy-link-label")||(0,d.pageText)(V,"copyLinkLabel",this)}get configureText(){return this.getAttribute("configure-text")||(0,d.pageText)(V,"configureText",this)}get resetViewAskText(){return this.getAttribute("reset-view-ask-text")||(0,d.pageText)(V,"resetViewAskText",this)}get cancelConfiguringText(){return this.getAttribute("cancel-configuring-text")||(0,d.pageText)(V,"cancelConfiguringText",this)}get doneConfiguringText(){return this.getAttribute("done-configuring-text")||(0,d.pageText)(V,"doneConfiguringText",this)}get resetViewText(){return this.getAttribute("reset-view-text")||(0,d.pageText)(V,"resetViewText",this)}get addViewText(){return this.getAttribute("add-view-text")||(0,d.pageText)(V,"addViewText",this)}get newViewText(){return this.getAttribute("new-view-text")||(0,d.pageText)(V,"newViewText",this)}get deleteViewText(){return this.getAttribute("delete-view-text")||(0,d.pageText)(V,"deleteViewText",this)}get lastSharedViewText(){return this.getAttribute("last-shared-view-text")||(0,d.pageText)(V,"lastSharedViewText",this)}get viewProfileLabel(){return this.getAttribute("view-profile-label")||(0,d.pageText)(V,"viewProfileLabel",this)}get personalLayerText(){return this.getAttribute("personal-layer-text")||(0,d.pageText)(V,"personalLayerText",this)}get sharedLayerText(){return this.getAttribute("shared-layer-text")||(0,d.pageText)(V,"sharedLayerText",this)}get widthText(){return this.getAttribute("width-text")||(0,d.pageText)(V,"widthText",this)}get variantText(){return this.getAttribute("variant-text")||(0,d.pageText)(V,"variantText",this)}get hintText(){return this.getAttribute("hint-text")||(0,d.pageText)(V,"hintText",this)}get hiddenText(){return this.getAttribute("hidden-text")||(0,d.pageText)(V,"hiddenText",this)}get configureHintText(){return this.getAttribute("configure-hint-text")||(0,d.pageText)(V,"configureHintText",this)}get configureHintNarrowText(){return this.getAttribute("configure-hint-narrow-text")||(0,d.pageText)(V,"configureHintNarrowText",this)}get fieldSettingsText(){return this.getAttribute("field-settings-text")||(0,d.pageText)(V,"fieldSettingsText",this)}get shownText(){return this.getAttribute("shown-text")||(0,d.pageText)(V,"shownText",this)}get showRareText(){return this.getAttribute("show-rare-text")||(0,d.pageText)(V,"showRareText",this)}get hideRareText(){return this.getAttribute("hide-rare-text")||(0,d.pageText)(V,"hideRareText",this)}get rareText(){return this.getAttribute("rare-text")||(0,d.pageText)(V,"rareText",this)}get unplacedTitle(){return this.getAttribute("unplaced-title")||(0,d.pageText)(V,"unplacedTitle",this)}get moveUpText(){return this.getAttribute("move-up-text")||(0,d.pageText)(V,"moveUpText",this)}get moveDownText(){return this.getAttribute("move-down-text")||(0,d.pageText)(V,"moveDownText",this)}get addFieldText(){return this.getAttribute("add-field-text")||(0,d.pageText)(V,"addFieldText",this)}get renameText(){return this.getAttribute("rename-text")||(0,d.pageText)(V,"renameText",this)}get saveNameText(){return this.getAttribute("save-name-text")||(0,d.pageText)(V,"saveNameText",this)}get cancelNameText(){return this.getAttribute("cancel-name-text")||(0,d.pageText)(V,"cancelNameText",this)}get removeFieldText(){return this.getAttribute("remove-field-text")||(0,d.pageText)(V,"removeFieldText",this)}get removeGroupText(){return this.getAttribute("remove-group-text")||(0,d.pageText)(V,"removeGroupText",this)}get removeSectionText(){return this.getAttribute("remove-section-text")||(0,d.pageText)(V,"removeSectionText",this)}get addGroupText(){return this.getAttribute("add-group-text")||(0,d.pageText)(V,"addGroupText",this)}get addSectionText(){return this.getAttribute("add-section-text")||(0,d.pageText)(V,"addSectionText",this)}get newGroupTitle(){return this.getAttribute("new-group-title")||(0,d.pageText)(V,"newGroupTitle",this)}get newSectionTitle(){return this.getAttribute("new-section-title")||(0,d.pageText)(V,"newSectionTitle",this)}get sectionIconText(){return this.getAttribute("section-icon-text")||(0,d.pageText)(V,"sectionIconText",this)}get fieldLabelText(){return this.getAttribute("field-label-text")||(0,d.pageText)(V,"fieldLabelText",this)}get inThisGroupText(){return this.getAttribute("in-this-group-text")||(0,d.pageText)(V,"inThisGroupText",this)}get noMatchText(){return this.getAttribute("no-match-text")||(0,d.pageText)(V,"noMatchText",this)}get currentGroups(){const e=(this.sections??[]).find(e=>String(e.key)===this.selectedSection)??(this.sections??[])[0]??null;return e?.groups??[]}groupAt(e){return this.currentGroups.findIndex(t=>String(t.key)===String(e))}get groupCount(){return this.currentGroups.length}moveGroupBy(e,t){const i=this.groupAt(e);if(i<0)return!1;const r=i+t;if(r<0||r>=this.groupCount)return!1;const n=(this.sections??[]).find(e=>String(e.key)===this.selectedSection)??(this.sections??[])[0]??null;return!!n&&this.moveGroup(e,String(n.key),r)}fieldChoices(e){const t=String(e),i=this._addSession?.group===t?this._addSession:this._buildAddSession(t),r=new Set;for(const e of this._locateGroup(t)?.group?.fields??[])r.add(String(e.key));const n=this.addSearch.trim().toLowerCase(),s=[];for(const e of i.order)(!n||e.label.toLowerCase().includes(n)||e.key.toLowerCase().includes(n))&&s.push({...e,selected:r.has(e.key)});return s}_buildAddSession(e){const t=String(e),i=[],r=new Set,n=(e,t)=>{const n=String(e.key);r.has(n)||(r.add(n),i.push({key:n,label:String(e.label??e.key),group:t}))};for(const e of this._locateGroup(t)?.group?.fields??[])n(e,this.inThisGroupText);for(const e of this.unplaced??[])n(e,this.unplacedTitle);for(const e of this.sections??[])for(const i of e.groups??[]){if(String(i.key)===t||"related"===i.kind)continue;const e=String(i.label??i.key);for(const t of i.fields??[])n(t,e)}return{group:t,order:i}}startAddSession(e){return this._addSearch="",this._addSession=this._buildAddSession(e),this.requestComponentUpdate("add-session"),this._addSession}endAddSession(){this._addSession=null,this._addSearch="",this.requestComponentUpdate("add-session")}get addSearch(){return this._addSearch??""}setAddSearch(e){return this._addSearch=String(e??""),this.requestComponentUpdate("add-search"),this._addSearch}toggleFieldInGroup(e,t,i){return i?this.moveField(e,t,Number.MAX_SAFE_INTEGER):this.moveFieldToUnplaced(e)}get unplacedHintText(){return this.getAttribute("unplaced-hint-text")||(0,d.pageText)(V,"unplacedHintText",this)}get viewConflictText(){return this.getAttribute("view-conflict-text")||(0,d.pageText)(V,"viewConflictText",this)}get collectionLabel(){return this.getAttribute("collection-label")||""}get collectionIcon(){return this.getAttribute("collection-icon")||""}get favourite(){return this.hasAttribute("favourite")}get favouriteLabel(){return this.getAttribute("favourite-label")||(0,d.pageText)(V,"favouriteLabel",this)}get menuLabel(){return this.getAttribute("menu-label")||(0,d.pageText)(V,"menuLabel",this)}get inheritedText(){return this.getAttribute("inherited-text")||(0,d.pageText)(V,"inheritedText",this)}toggleFavourite(){const e=!this.favourite;return this.toggleAttribute("favourite",e),this.requestComponentUpdate("favourite"),this.dispatchEvent(new CustomEvent("sf-view-properties-favourite",{bubbles:!0,composed:!0,detail:{record_id:this.recordId||null,collection:this.collection||null,favourite:e}})),!0}get panelMenuItems(){const e=[];return this.canConfigureView&&!this.configuring&&e.push({id:"configure",name:this.configureText,icon:"tune"}),this.hasRare&&e.push({id:"show-rare",name:this.showRare?this.hideRareText:this.showRareText,icon:this.showRare?"unfold_less":"unfold_more"}),e}async openStandardMenu(e,{label:t,entries:i,select:r,align:n="end"}){if(!(e instanceof Element))return null;await(globalThis.SF?.Loader?.ensure?.(["sf-menu-context"]));let s=this._standardMenu;return s?.isConnected||(s=document.createElement("sf-menu-context"),s.setAttribute("popup",""),s.dataset.sfPropertyViewMenu="",s.addEventListener("sf-menu-context-select",e=>this._standardMenuSelect?.(e.detail?.id)),(this.closest("dialog[open]")||document.body).append(s),this._standardMenu=s),s.isOpen&&this._standardMenuAnchor===e?(s.close(),null):(s.setAttribute("aria-label",t??""),s.entries=i,this._standardMenuSelect=r,this._standardMenuAnchor=e,s.openFor(e,{align:n}))}viewProfileEntries(){const e=this.viewProfile;return this.viewProfiles.map(t=>({id:`view-profile:${t.id}`,text:t.label,kind:"radio",checked:t.id===e,icon:t.shared?"group":"person",caption:t.shared?this.sharedLayerText:this.personalLayerText}))}openPanelMenu(e){const t=[],i=this.viewProfiles;if(i.length>1&&!this.configuring){const e=i.find(e=>e.id===this.viewProfile);t.push({id:"view-profile",text:this.viewProfileLabel,icon:"view_sidebar",value:e?.label??"",submenu:this.viewProfileEntries()})}const r=this.panelMenuItems;t.length&&r.length&&t.push({type:"separator"}),t.push(...r.map(e=>({id:e.id,text:e.name,icon:e.icon})));const n=this.hostMenuEntries();return t.length&&n.length&&t.push({type:"separator"}),t.push(...n),t.length?this.openStandardMenu(e,{label:this.menuLabel,entries:t,select:e=>this._chooseStandardEntry(e)}):null}openViewProfileMenu(e){return this.openStandardMenu(e,{label:this.viewProfileLabel,entries:this.viewProfileEntries(),align:"start",select:e=>this._chooseStandardEntry(e)})}hostMenuElements(){const e=this.querySelector("[data-host-menu]")??this.panelContent?.()?.querySelector?.("[data-host-menu]");return e?[...e.children]:[]}hostMenuEntries(){return this.hostMenuElements().map((e,t)=>{const i=e.matches("a[href], button")?e:e.querySelector("a[href], button")??e,r=(e.getAttribute("text")??e.getAttribute("aria-label")??i.textContent??"").trim(),n=i.matches?.("a[href]")?i.getAttribute("href"):null;return{id:`host:${t}`,text:r,icon:e.getAttribute("icon")??e.getAttribute("icon-start")??e.dataset.icon??void 0,href:n||void 0,danger:"error"===e.getAttribute("scheme")||"true"===e.dataset.danger,disabled:e.hasAttribute("disabled")||!0===i.disabled}}).filter(e=>e.text)}_chooseStandardEntry(e){const t=String(e??"");if(t.startsWith("host:")){const e=this.hostMenuElements()[Number(t.slice(5))],i=e?.matches("a[href], button")?e:e?.querySelector("a[href], button")??e;return i?.matches?.("a[href]")||i?.click?.(),!0}return t.startsWith("view-profile:")?this.selectViewProfile(t.slice(13)):this.chooseMenuItem(t)}chooseMenuItem(e){return"configure"===e?this.startConfiguringView():"reset"===e?this.resetView():"show-rare"===e&&this.toggleShowRare()}get backLabel(){return this.getAttribute("back-label")||(0,d.pageText)(V,"backLabel",this)}get viewDeniedText(){return this.getAttribute("view-denied-text")||(0,d.pageText)(V,"viewDeniedText",this)}get openFullLabel(){return this.getAttribute("open-full-label")||(0,d.pageText)(V,"openFullLabel",this)}get address(){return this.record?.address??null}get canOpenFullPage(){return Boolean(this.address)&&Boolean(this.hostPort?.capabilities?.includes?.("record-open"))}static get observedAttributes(){return[...super.observedAttributes??[],"record-id","hidden","open","full"]}attributeChangedCallback(e,t,i){super.attributeChangedCallback?.(e,t,i),t!==i&&this.isConnected&&("record-id"===e&&this.hostPort&&this.load("record-id-changed"),"hidden"!==e&&"open"!==e&&"full"!==e||this.syncPanelOpen())}onConnected(){super.onConnected?.(),this.hasAttribute("data-state")||this.record||(this.setAttribute("data-state","loading"),this.setAttribute("aria-busy","true")),this.panelOpen&&!A.includes(this)&&(A.push(this),C()),this._onKeyDown=e=>{"Escape"===e.key&&this.panel&&(document.documentElement.dataset.sfPopoverOpen||F()===this&&(e.stopPropagation(),this.closePanel("escape")))},document.addEventListener("keydown",this._onKeyDown,!0),this._onSortableIntent=e=>{if(!this.configuring)return;const t=e.detail??{},[i,r]=String(t.to??"").split(":");r&&("section"===i?this.moveSection(t.item,t.index):"field"===i?this.moveField(t.item,r,t.index):"group"===i?this.moveGroup(t.item,r,t.index):"unplaced"===i&&this.moveFieldToUnplaced(t.item,t.index))},this.addEventListener("sf-sortable-intent",this._onSortableIntent),this._onDocumentSortableIntent=e=>{if(!this.panel||!this.configuring)return;const t=e.target?.closest?.(".sf-property-view-panel");t&&t.getAttribute("data-record-id")===String(this.recordId)&&this._onSortableIntent(e)},document.addEventListener("sf-sortable-intent",this._onDocumentSortableIntent),this._onSortableState=e=>{if(!this.configuring)return;const t=e.detail?.state,i=globalThis.document?.querySelector?.(`.sf-property-view-panel[data-record-id="${this.recordId}"]`),r=i?.querySelector?.('[data-action="toggle-unplaced"]');if(!r)return;const n="true"===r.getAttribute("aria-expanded");if("picked"===t)return this._openedForDrag=!n,void(n||r.click());"dropped"!==t&&"cancelled"!==t||(this._openedForDrag&&"true"===r.getAttribute("aria-expanded")&&r.click(),this._openedForDrag=!1)},document.addEventListener("sf-sortable-state",this._onSortableState),this.wideMedia="function"==typeof globalThis.matchMedia?globalThis.matchMedia(T):null,this.wide=!this.wideMedia||this.wideMedia.matches,this._onWideChange=e=>{this.wide=e.matches,this.wide&&(this.phoneSection=null),this.requestComponentUpdate("viewport")},this.wideMedia?.addEventListener?.("change",this._onWideChange),this.hostPort&&(this.recordId||"create"===this.mode)?this.load("connected"):this.hostPort||this._requestHostPort()}_requestHostPort(){return!this.hostPort&&!this._portRequested&&(this._portRequested=!0,this.dispatchEvent(new CustomEvent("sf-host-port-request",{bubbles:!0,composed:!0,detail:{component:this,context:{owner:"property-view",record:this.recordId||null,group:null}}})),!0)}onDisconnected(){this._standardMenu?.close?.({restoreFocus:!1}),this._standardMenu?.remove(),this._standardMenu=null,this._portRequested=!1;const e=A.indexOf(this);e>=0&&(A.splice(e,1),C()),this._onKeyDown&&document.removeEventListener("keydown",this._onKeyDown,!0),this._onKeyDown=null,this.configuring=!1,this._bindSectionDropTarget(),this._onSortableIntent&&this.removeEventListener("sf-sortable-intent",this._onSortableIntent),this._onSortableIntent=null,this._onDocumentSortableIntent&&document.removeEventListener("sf-sortable-intent",this._onDocumentSortableIntent),this._onSortableState&&document.removeEventListener("sf-sortable-state",this._onSortableState),this._onDocumentSortableIntent=null,this._onWideChange&&this.wideMedia?.removeEventListener?.("change",this._onWideChange),this._onWideChange=null,this.wideMedia=null,super.onDisconnected?.()}panelContent(){const e=this.querySelector("sf-drawer")??this._panelDrawer??null,t=e?.querySelector?.(".sf-property-view-panel");if(t)return t;const i=this.getAttribute("record-id")||"";return[...document.querySelectorAll(".sf-property-view-panel")].find(e=>e.dataset.recordId===i)??null}setHostPort(e){if(!e||"function"!=typeof e.raise||!b.includes(e.version))throw new TypeError(`sf-view-properties requires a declared property-view host port: ${b.join(", ")}`);return this.hostPort=e,this.isConnected&&(this.recordId||"create"===this.mode)&&this.load("host-connected"),this}visible(e,{conditions:t=!0}={}){const i=t?this.fieldValues():null;return(Array.isArray(e)?e:[]).filter(e=>e&&!0!==e.hidden).filter(e=>this.showRare||!0!==e.rare).filter(e=>!i||!e.when||(0,f.tm)(e,i).visible)}fieldValues(){const e=new Map,t=t=>{if(!t||void 0===t.key||null===t.key)return;const i=String(t.key);e.set(i,this.changed.has(i)?this.changed.get(i):t.value)};for(const e of this.sections??[])for(const i of e?.groups??[])(i?.fields??[]).forEach(t);return this.unplaced.forEach(t),e}conditionedField(e,t=this.fieldValues()){if(!e?.when)return e;const i=(0,f.tm)(e,t);return{...e,required:i.required,readonly:!0===e.readonly||!i.enabled}}_hiddenByCondition(){const e=this.fieldValues(),t=new Set,i=i=>{i?.when&&!(0,f.tm)(i,e).visible&&t.add(String(i.key))};for(const e of this.sections??[])for(const t of e?.groups??[])(t?.fields??[]).forEach(i);return this.unplaced.forEach(i),t}_savedValues(){const e=this._hiddenByCondition();return Object.fromEntries([...this.changed].filter(([t])=>!e.has(t)))}get viewHost(){const e=this.hostPort??null;if(this._viewHost?.host===e)return this._viewHost.view;const t=Object.create(e&&"object"==typeof e?e:null);return Object.assign(t,{formatFieldValue:(t,i)=>{const r=e?.formatFieldValue?.(t,i);if("string"==typeof r)return r;const n=t?.propertyType??t?.property_type??t?.type??t?.dataType;return(0,g.x)(n,i,this)||void 0}}),this._viewHost={host:e,view:t},t}templateContext(){const e=this.getPropsContext();return this.createTemplateContext({...e,component:this,hostPort:this.hostPort,viewHost:this.viewHost,size:this.size,mode:this.mode,mayEdit:this.mayEdit,openAll:this.openAll,createText:(0,d.pageText)(V,"createText",this),emptyText:this.emptyText,emptyRecordText:this.emptyRecordText,isEmptyRecord:this.isEmptyRecord,loading:"loading"===this.getAttribute("data-state")&&!this.record,panel:this.panel,panelOpen:this.panelOpen,recordLabel:this.record?.label?String(this.record.label):"",loadFailure:this.record?null:this.loadFailure??null,editText:this.editText,saveText:this.saveText,cancelText:this.cancelText,deleteText:this.deleteText,recordActions:this.recordActions,changedText:this.changedText,errorsText:this.errorsText,sectionsLabel:this.sectionsLabel,sectionsAs:this.sectionsAs,sections:this.sections,selectedSection:this.selectedSection,editing:this.editing,changed:this.changed,errors:this.inputErrors.size?new Map([...this.errors,...this.inputErrors]):this.errors,inputsInvalid:this.inputErrors.size>0,controlErrors:this.controlErrors,canPickRecords:this.canPickRecords,canUploadFiles:this.canUploadFiles,hostSlot:e=>this.getSlotContent(e),hasHostSlot:e=>this.hasSlotContent(e),address:this.address,stackDepth:this.stackDepth,drawerWidth:this.drawerWidth,sectionsWidth:k,isTopPanel:this.isTopPanel,conflict:this.conflict,confirmation:this.confirmation,confirmSaveText:(0,d.pageText)(V,"confirmSaveText",this),keepEditingText:(0,d.pageText)(V,"keepEditingText",this),message:this.message,visible:e=>this.visible(e),conditionedField:e=>this.conditionedField(e),fieldDisabled:e=>this.fieldDisabled(e),canConfigureView:this.canConfigureView,configuring:this.configuring,unplaced:this.unplaced,viewTarget:this.viewTarget,editableLayers:this.editableLayers,viewProfiles:this.viewProfiles,viewProfile:this.viewProfile,canDeleteViewProfile:e=>this.canDeleteViewProfile(e),layerDenied:e=>this.layerDenied(e),canChangeVisibility:e=>this.canChangeVisibility(e),entryError:(e,t)=>this.entryError(e,t),configureText:this.configureText,doneConfiguringText:this.doneConfiguringText,resetViewText:this.resetViewText,resetViewAskText:this.resetViewAskText,cancelConfiguringText:this.cancelConfiguringText,resetAsked:this.resetAsked,personalLayerText:this.personalLayerText,viewProfileLabel:this.viewProfileLabel,addViewText:this.addViewText,newViewText:this.newViewText,deleteViewText:this.deleteViewText,lastSharedViewText:this.lastSharedViewText,sharedLayerText:this.sharedLayerText,widthText:this.widthText,fieldLabelText:this.fieldLabelText,sectionIcons:this.sectionIcons,sectionIconChoices:this.sectionIconChoices,sectionIconText:this.sectionIconText,variantText:this.variantText,hintText:this.hintText,hiddenText:this.hiddenText,configureHintText:this.wide?this.configureHintText:this.configureHintNarrowText,fieldSettingsText:this.fieldSettingsText,shownText:this.shownText,showRareText:this.showRareText,hideRareText:this.hideRareText,rareText:this.rareText,unplacedTitle:this.unplacedTitle,moveUpText:this.moveUpText,moveDownText:this.moveDownText,addFieldText:this.addFieldText,canOpenFullPage:this.canOpenFullPage,groupAt:e=>this.groupAt(e),groupCount:this.groupCount,fieldChoices:e=>this.fieldChoices(e),addSearch:this.addSearch,inThisGroupText:this.inThisGroupText,renameText:this.renameText,saveNameText:this.saveNameText,cancelNameText:this.cancelNameText,removeFieldText:this.removeFieldText,removeGroupText:this.removeGroupText,removeSectionText:this.removeSectionText,addGroupText:this.addGroupText,addSectionText:this.addSectionText,newGroupTitle:this.newGroupTitle,newSectionTitle:this.newSectionTitle,renaming:this.renaming,namingView:this.namingView,noMatchText:this.noMatchText,unplacedHintText:this.unplacedHintText,panelMenuItems:this.panelMenuItems,collectionLabel:this.collectionLabel,collectionIcon:this.collectionIcon,favourite:this.favourite,favouriteLabel:this.favouriteLabel,menuLabel:this.menuLabel,addressUrl:this.addressUrl??this.address,copyFeedbackMs:_,linkCopiedLabel:this.linkCopiedLabel,closeLabel:this.closeLabel,copyLinkLabel:this.copyLinkLabel,openFullLabel:this.openFullLabel,inheritedText:this.inheritedText,wide:this.wide,edgeControlWidth:this.edgeControlWidth,edgeControlCount:this.edgeControlCount,phoneSection:this.phoneSection,phoneSectionLabel:this.phoneSectionLabel,backLabel:this.backLabel})}template(){return(0,h.$)(this.templateContext())}sfAwaitingData(){return"skeleton"===this.getAttribute("data-sf-first-paint")&&!this.panel&&(!this.record&&!this.loadFailure&&"error"!==this.getAttribute("data-state"))}_setState(e,t=""){const i="loading"===e&&"loading"===this.getAttribute("data-state")&&!this.record;this.setAttribute("data-state",e),this.setAttribute("aria-busy","loading"===e?"true":"false"),this.message=t,i||this.requestComponentUpdate("state"),this.dispatchEvent(new CustomEvent("sf-view-properties-state",{bubbles:!0,composed:!0,detail:{state:e,message:t}}))}async _raise(e,t,{stale:i=()=>!1}={}){if(!this.hostPort)return this._setState("error",(0,d.pageText)(V,"statePortNotConnected",this)),{answer:"unavailable",reason:"port-not-connected"};try{const r=await this.hostPort.raise(e,E(t),{});if(!this.isConnected||i())return null;if(!r||!["applied","conflict","refused","unavailable"].includes(r.answer))throw new TypeError("Host answer is not a declared port answer");return"applied"===r.answer&&Array.isArray(r.effects)&&r.effects.length&&globalThis.SF?.Composition?.publishEffects?.(r.effects,{origin:this}),r}catch(e){return!this.isConnected||i()?null:(this._setState("error",(0,d.pageText)(V,"stateLoadFailed",this)),{answer:"unavailable",reason:"host-threw",message:String(e?.message||e)})}}get readsByGroup(){return Boolean(this.hostPort?.capabilities?.includes("group-load"))&&"create"!==this.mode}async load(e="requested"){this._setState("loading",(0,d.pageText)(V,"stateLoading",this)),this.loadFailure=null;const t=++this.epoch,i="create"===this.mode,r=this.readsByGroup;r&&(this.groupEpoch+=1,this.groupReads=new Map,this.groupsReading=new Set);const n=r?await this._raise("group.load",{record_id:this.recordId||null,collection:this.collection||null,group:null,reason:e},{stale:()=>t!==this.epoch}):await this._raise("record.load",{record_id:i?null:this.recordId||null,collection:this.collection||null,reason:e,...i?{mode:"create"}:{}},{stale:()=>t!==this.epoch});if(!n)return null;if("applied"!==n.answer&&!i&&!this.recordId)return n;if("applied"!==n.answer)return this.loadFailure={kind:"refused"===n.answer?"no-access":"error",text:n.message||""},this._setState("error",n.message||(0,d.pageText)(V,"stateUnavailable",this)),this.sfEmit("failed",{reason:String(n.reason??""),message:String(n.message??"")}),n;this.record=r?{...n.record??{},revision:n.revision??n.record?.revision??null}:n.record??null,this.sections=[],this._takeSections(this.record),this.view=n.record?.view??null;const s=this.editableLayers;s.includes(this.viewTarget)||(this.viewTarget=s[0]??"personal"),s.length||(this.configuring=!1),this.layerDraft=this.configuring?this._layerCopy(this.viewTarget):null,this.entryErrors=new Map;const o=this.sections.some(e=>String(e.key)===this.selectedSection),a=r&&void 0!==n.group&&null!==n.group?this.sections.find(e=>(e.groups??[]).some(e=>String(e.key)===String(n.group))):null;return o||(this.selectedSection=a?String(a.key):this.sections.length?String(this.sections[0].key):null),this._setState("ready"),r&&this._readShownGroups("started"),n}_takeSections(e){if(!Array.isArray(e?.sections))return;const t=E(e.sections);if(!this.readsByGroup)return void(this.sections=t);const i=void 0===e.revision||null===e.revision?"":String(e.revision),r=new Map(this.sections.flatMap(e=>(e.groups??[]).map(e=>[String(e.key),e])));for(const e of t){const t=Array.isArray(e.groups)?e.groups:[];t.forEach((e,n)=>{const s=String(e.key);if(!$(e))return void this.groupReads.set(s,i);const o=r.get(s);o&&this.groupReads.has(s)&&(t[n]={...e,fields:o.fields})})}this.sections=t}_shownGroups(){return(this.openAll||this.configuring?this.sections:this.sections.filter(e=>String(e.key)===this.selectedSection)).flatMap(e=>(e.groups??[]).map(t=>({section:String(e.key),group:String(t.key)})))}_readShownGroups(e="started",{force:t=!1}={}){if(!this.readsByGroup||!this.record)return[];const i=this.revision,r=[];for(const{section:n,group:s}of this._shownGroups())this.groupsReading.has(s)||this.groupsRefused.get(s)!==i&&(t||this.groupReads.get(s)!==i)&&r.push(this._readGroup(n,s,e));return r}async _readGroup(e,t,i){const r=this.groupEpoch;this.groupsReading.add(t),this.requestComponentUpdate("group-reading");const n=await this._raise("group.load",{record_id:this.recordId||null,collection:this.collection||null,section:e,group:t,reason:i},{stale:()=>r!==this.groupEpoch});if(r!==this.groupEpoch)return null;if(this.groupsReading.delete(t),!n)return null;if("refused"===n.answer&&"unknown-group"===n.reason){const e=this.revision;return this.groupsRefused.get(t)===e||(this.groupsRefused.set(t,e),await this.load("requested")),n}if("applied"!==n.answer)return this.requestComponentUpdate("group-reading"),n;const s=n.revision??n.record?.revision??this.record?.revision??null;return this.record={...this.record,...n.record??{},revision:s},this._takeSections(this.record),this.requestComponentUpdate("group-read"),n}isGroupReading(e){return this.groupsReading.has(String(e))}async _rereadAfterConflict(e){if(this.readsByGroup)return void 0!==e?.revision&&null!==e.revision&&this.record&&(this.record={...this.record,revision:e.revision}),Promise.all(this._readShownGroups("requested",{force:!0}));const t=this.epoch,i=await this._raise("record.load",{record_id:this.recordId||null,collection:this.collection||null,reason:"requested"},{stale:()=>t!==this.epoch});return i&&"applied"===i.answer&&i.record?(this.record=i.record,this._takeSections(i.record),this.requestComponentUpdate("conflict-reread"),i):i}get canUploadFiles(){return Boolean(this.hostPort?.capabilities?.includes("field-upload"))}getFieldUploads(e){return this.uploads.get(String(e.key??""))??[]}async startFieldUpload(e,t){const i=String(e.key??""),r=Array.isArray(t)?t:[];if(!r.length)return null;this.uploads.set(i,[...this.getFieldUploads(e),...r]),this.requestComponentUpdate("uploads");for(const t of r){const r=await this._raise("field.upload",{record_id:this.recordId||null,collection:this.collection||null,field:i,file:t.file??t},{stale:()=>!this.uploads.has(i)});if(!r)return null;const n=this.getFieldUploads(e);if("applied"===r.answer&&r.file){const s=this.changed.has(i)?this.changed.get(i):e.value,o=Array.isArray(s)?s:s?[s]:[];this.changed.set(i,[...o,r.file]),this.uploads.set(i,n.filter(e=>e!==t)),this.errors.delete(i)}else this.uploads.set(i,n.map(e=>e===t?{...e,state:"error",errorMessage:r.message||r.reason||""}:e)),"refused"===r.answer&&r.reason&&this.errors.set(i,String(r.message||r.reason));this.requestComponentUpdate("uploads")}return this}retryFieldUpload(e,t){const i=String(e.key??""),r=this.getFieldUploads(e),n=r[Number(t)];return n?(this.uploads.set(i,r.filter(e=>e!==n)),this.startFieldUpload(e,[n])):null}async openReference(e,t){if(!t||"object"!=typeof t)return null;const i=await this._raise("record.open",{record_id:this.recordId||null,collection:this.collection||null,field:String(e.key??""),value:t},{stale:()=>!this.isConnected});return this.sfEmit("open",{field:String(e.key??""),value:t,answer:i?.answer??null}),i}get stackDepth(){const e=A.indexOf(this);return e<0?0:e}get isTopPanel(){return F()===this}closePanel(e="close"){this._commitFocusedEntry();const t=this.unsavedFields;return this.sfEmit("close",{reason:e,record_id:this.recordId||null,unsaved_fields:t},{cancelable:!0})?{outcome:"applied"}:{outcome:"refused",reason:"prevented"}}get unsavedFields(){return new Set([...this.changed.keys(),...this.inputErrors.keys()]).size}_commitFocusedEntry(){let e=document.activeElement;for(;e?.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;if(!e||"function"!=typeof e.blur)return;const t=this.panel?this.panelContent():null;(this.contains(e)||t?.contains(e))&&e.blur()}get addressUrl(){const e=this.address;if(!e)return null;try{return new URL(String(e),globalThis.location?.href).href}catch{return String(e)}}copyControl(){return[...document.querySelectorAll('sf-button-copy[data-action="copy-link"]')].find(e=>e.propertyView===this)??null}get addressCopied(){return"success"===this.copyControl()?.state?.phase}announceAddressCopy(e){const t=this.address;return this.dispatchEvent(new CustomEvent("sf-view-properties-address-copy",{bubbles:!0,composed:!0,detail:{address:t,url:this.addressUrl??t,copied:e,record_id:this.recordId||null}})),e}async copyAddress(){if(!this.address)return null;const e=this.copyControl();return e?.copy?Boolean(await e.copy()):null}openFullPage(){const e=this.address;return e?(this.sfEmit("open-full",{id:this.recordId||null,address:e,record_id:this.recordId||null}),this):null}openPhoneSection(e){const t=String(e);return!!this.sections.some(e=>String(e.key)===t)&&(this.phoneSection=t,this.selectSection(t),this.requestComponentUpdate("phone-section"),!0)}closePhoneSection(){return null!==this.phoneSection&&(this.phoneSection=null,this.requestComponentUpdate("phone-section"),!0)}get phoneSectionLabel(){const e=this.sections.find(e=>String(e.key)===this.phoneSection);return e?String(e.label??e.key):""}selectSection(e){return this.selectedSection=String(e),this.requestComponentUpdate("section"),this._readShownGroups("started"),this}get canPickRecords(){return Boolean(this.hostPort?.capabilities?.includes("field-options"))}getFieldOptionsPage(e){return this.optionPages.get(String(e.key??""))??null}getFieldOptionSearch(e){return this.optionSearches.get(String(e.key??""))??""}setFieldOptionSearch(e,t){return this.optionSearches.set(String(e.key??""),String(t??"")),this}async loadFieldOptions(e,{cursor:t=null,search:i="",quiet:r=!1}={}){const n=String(e.key??""),s=this.optionPages.get(n),o=t&&Array.isArray(s?.items)?s.items:[];this.optionPages.set(n,{items:o,status:"loading",quiet:r,nextCursor:s?.nextCursor??null}),this.requestComponentUpdate("options");const a=this.epoch,l=(this.optionEpochs.get(n)??0)+1;this.optionEpochs.set(n,l);const c=await this._raise("field.options",{record_id:this.recordId||null,collection:this.collection||null,field:n,cursor:t,search:String(i??""),...S(this.hostPort?.version,"1.14.0")?{...e.source?{source:String(e.source)}:{},limit:w}:{}},{stale:()=>a!==this.epoch||l!==this.optionEpochs.get(n)});if(!c)return null;if("applied"!==c.answer){const e="refused"===c.answer;return this.optionPages.set(n,{items:o,status:e?"unsupported":"error",quiet:!1,nextCursor:null}),this.requestComponentUpdate("options"),c}const u=c.options_page??{},d=Array.isArray(u.items)?u.items:[];return this.optionPages.set(n,{items:t?[...o,...d]:d,status:"ready",quiet:!1,nextCursor:u.next_cursor??null,total:u.total??null}),this.requestComponentUpdate("options"),c}changeField(e,t){const i=String(e.key??""),r=Object.hasOwn(e??{},"value")&&void 0!==t&&JSON.stringify(t)===JSON.stringify(e.value??null);return void 0===t||r?this.changed.delete(i):this.changed.set(i,t),this.errors.delete(i),this.confirmation=null,this.requestComponentUpdate("changed"),this}_clearInputs(){this.inputErrors.clear(),this.controlErrors.clear()}reportFieldError(e,t){const i=String(e?.key??"");if(!i)return this;const r=this.inputErrors.get(i);return t?(this.inputErrors.set(i,String(t)),this.controlErrors.add(i)):this.controlErrors.has(i)&&(this.inputErrors.delete(i),this.controlErrors.delete(i)),this.inputErrors.get(i)!==r&&this.requestComponentUpdate("errors"),this}fieldDisabled(e,t=this.fieldValues()){return Boolean(e?.when)&&!(0,f.tm)(e,t).enabled}_inputsInvalid(){return this.inputErrors.size?(this.requestComponentUpdate("errors"),{answer:"refused",reason:"input_invalid",errors:Object.fromEntries(this.inputErrors)}):null}_referenceFields(e,t){const i=this.sections.find(t=>String(t.key)===String(e)),r=this.visible(i?.groups).find(e=>String(e.key)===String(t));return this.visible(r?.fields,{conditions:!1}).filter(e=>x.includes(e.propertyType||e.type)).filter(e=>!("lookup"===(e.propertyType||e.type)&&Array.isArray(e.options)&&e.options.length>0))}editGroup(e,t){if(!this.mayEdit)return this;if(this.editing={section:String(e),group:String(t)},this.changed.clear(),this._clearInputs(),this.errors.clear(),this.conflict=null,this.confirmation=null,this.requestComponentUpdate("editing"),this.canPickRecords)for(const i of this._referenceFields(e,t))this.optionPages.has(String(i.key??""))||this.loadFieldOptions(i,{cursor:null,search:"",quiet:!0});return this}cancelEdit(){if(this.openAll)return this.dispatchEvent(new CustomEvent("sf-view-properties-cancel",{bubbles:!0,composed:!0,detail:{mode:this.mode}})),this.panel?(this.closePanel("cancelled"),this):(this.changed.clear(),this._clearInputs(),this.errors.clear(),this.conflict=null,this.confirmation=null,this.requestComponentUpdate("editing"),this);const e=this.editing;return this.editing=null,this.changed.clear(),this._clearInputs(),this.errors.clear(),this.conflict=null,this.confirmation=null,this.requestComponentUpdate("editing"),e&&this.dispatchEvent(new CustomEvent("sf-view-properties-cancel",{bubbles:!0,composed:!0,detail:{mode:this.mode,scope:"group",section:e.section,group:e.group}})),this}announceSaved(e){const t=this.recordId||e?.record_id||e?.record?.record_id||null,i=e?.revision??e?.record?.revision??this.record?.revision??null;this.sfEmit("saved",{id:t,revision:null===i?"":String(i)})}async saveGroup({confirm:e=null}={}){if(this.openAll)return this.saveAll({confirm:e});if(this.editing&&this.inputErrors.size)return this._inputsInvalid();if(!this.editing||0===this.changed.size)return null;const t=this._savedValues();if(!Object.keys(t).length)return null;this.confirmation=null;const i=++this.epoch,r=await this._raise("group.save",{record_id:this.recordId||null,collection:this.collection||null,section:this.editing.section,group:this.editing.group,values:t,revision:this.record?.revision??null,...e?{confirm:e}:{}},{stale:()=>i!==this.epoch});return r?this._askedToConfirm(r)?r:"applied"===r.answer?(this.record=r.record?{...r.record,revision:r.revision??r.record.revision}:{...this.record,revision:r.revision??this.record?.revision??null},this._takeSections(this.record),this.editing=null,this.changed.clear(),this._clearInputs(),this.errors.clear(),this.conflict=null,this._setState("ready"),this.announceSaved(r),r):"conflict"===r.answer?(this.conflict=r.message||this.conflictText,this.requestComponentUpdate("conflict"),await this._rereadAfterConflict(r),r):"refused"===r.answer&&"unknown-group"===r.reason?(await this.load("requested"),r):"refused"===r.answer?(this.errors=new Map(Object.entries(r.errors??{}).map(([e,t])=>[e,String(t)])),this.requestComponentUpdate("errors"),r):(this._setState("error",r.message||(0,d.pageText)(V,"saveFailedText",this)),r):null}async saveAll({confirm:e=null}={}){if(this.inputErrors.size)return this._inputsInvalid();if("create"!==this.mode&&0===this.changed.size)return null;const t="create"===this.mode,i=this._savedValues();if(!t&&!Object.keys(i).length)return null;this.confirmation=null;const r=++this.epoch,n=t?await this._raise("record.create",{collection:this.collection||null,values:i},{stale:()=>r!==this.epoch}):await this._raise("record.save",{record_id:this.recordId||null,collection:this.collection||null,values:i,revision:this.record?.revision??null,...e?{confirm:e}:{}},{stale:()=>r!==this.epoch});if(!n)return null;if(!t&&this._askedToConfirm(n))return n;if("applied"===n.answer){if(this.changed.clear(),this._clearInputs(),this.errors.clear(),this.conflict=null,t){const e=n.record_id??n.record?.record_id??null;return this.dispatchEvent(new CustomEvent("sf-view-properties-created",{bubbles:!0,composed:!0,detail:{record_id:e,collection:this.collection||null}})),null!==e&&(this.setAttribute("record-id",String(e)),this.setAttribute("mode","auto"),n.record?(this.record=n.record,this._takeSections(n.record),this.view=n.record.view??this.view,this._setState("ready")):await this.load("created")),n}return this.record=n.record??this.record,this._takeSections(n.record),this._setState("ready"),this.announceSaved(n),n}return"conflict"===n.answer?(this.conflict=n.message||this.conflictText,this.requestComponentUpdate("conflict"),n):"refused"===n.answer?(this.errors=new Map(Object.entries(n.errors??{}).map(([e,t])=>[e,String(t)])),!this.errors.size&&n.message&&(this.conflict=n.message),this.requestComponentUpdate("errors"),n):(this._setState("error",n.message||(0,d.pageText)(V,"saveFailedText",this)),n)}_askedToConfirm(e){const t=e?.confirm;return!("refused"!==e?.answer||"confirm_required"!==e.reason||!t||"string"!=typeof t.digest||!t.digest)&&(this.confirmation={text:String(t.summary||e.message||""),digest:t.digest},this.requestComponentUpdate("confirmation"),!0)}confirmSave(){const e=this.confirmation?.digest;return e?this.openAll?this.saveAll({confirm:e}):this.saveGroup({confirm:e}):Promise.resolve(null)}cancelConfirmation(){return this.confirmation=null,this.requestComponentUpdate("confirmation"),this}get canConfigureView(){return"view"!==this.mode&&(Boolean(this.hostPort?.capabilities?.includes?.("view-settings"))&&Boolean(this.view)&&this.editableLayers.length>0)}get viewProfiles(){const e=this.view?.profiles;return Array.isArray(e)?e.filter(e=>e&&"string"==typeof e.id&&e.id):[]}get viewProfile(){const e=this.view?.profile;return"string"==typeof e&&e?e:this.viewProfiles[0]?.id??null}canDeleteViewProfile(e){const t=this.viewProfiles,i=t.find(t=>t.id===String(e??""));return!!i&&(!i.shared||t.filter(e=>e.shared).length>1)}createViewProfile(e,{shared:t=!1}={}){const i=String(e??"").trim();return i?(this.namingView&&(this.namingView=!1,this.requestComponentUpdate("view-naming")),this._viewProfileIntent("view.create",{label:i,shared:Boolean(t),view:this.layerDraft??this._layerCopy(this.viewTarget)})):null}startNamingView(){return this.namingView=!0,this.requestComponentUpdate("view-naming"),!0}cancelNamingView(){this.namingView=!1,this.requestComponentUpdate("view-naming")}renameViewProfile(e,t){const i=String(t??"").trim(),r=String(e??"");return i&&r&&this.viewProfiles.some(e=>e.id===r)?this._viewProfileIntent("view.rename",{profile:r,label:i}):null}deleteViewProfile(e){const t=String(e??"");return this.canDeleteViewProfile(t)?this._viewProfileIntent("view.delete",{profile:t}):null}async _viewProfileIntent(e,t){const i=++this.epoch,r=await this._raise(e,{record_id:this.recordId||null,collection:this.collection||null,...t},{stale:()=>i!==this.epoch});return r?"applied"!==r.answer?(this._setState("error",r.message||this.viewDeniedText),r):(this.record=r.record??this.record,this._takeSections(r.record),this.view=r.record?.view??this.view,this.layerDraft=this.configuring?this._layerCopy(this.viewTarget):null,this._setState("ready"),this.requestComponentUpdate("profiles"),r):null}async selectViewProfile(e){const t=String(e??"");if(!t||t===this.viewProfile)return null;if(!this.viewProfiles.some(e=>e.id===t))return null;const i=++this.epoch,r=await this._raise("view.profile",{record_id:this.recordId||null,collection:this.collection||null,profile:t},{stale:()=>i!==this.epoch});return r?"applied"!==r.answer?(this._setState("error",r.message||this.viewDeniedText),r):(this.record=r.record??this.record,this._takeSections(r.record),this.view=r.record?.view??this.view,this.editing=null,this.changed.clear(),this._clearInputs(),this._setState("ready"),this.configuring&&this.setViewTarget(this._layerOfProfile()),this.requestComponentUpdate("profile"),r):null}get editableLayers(){const e=this.view?.editable;return Array.isArray(e)?e.filter(e=>"personal"===e||"shared"===e):[]}layerDenied(e){return this.editableLayers.includes(e)?null:this.view?.denied?.[e]||this.viewDeniedText}_emptyLayer(){return{schema_version:1,sections:{},groups:{},fields:{}}}_layerCopy(e){const t=this.view?.layers?.[e]?.view;return t?E(t):this._emptyLayer()}_layerRevision(e){const t=this.view?.layers?.[e];return t?t.revision??null:null}toggleShowRare(){return this.toggleAttribute("show-rare",!this.showRare),this.requestComponentUpdate("show-rare"),this.showRare}get hasRare(){const e=e=>(e??[]).some(e=>!0===e?.rare);return(this.sections??[]).some(t=>!0===t?.rare||e(t?.groups)||(t?.groups??[]).some(t=>e(t?.fields)))}_layerOfProfile(){const e=this.viewProfiles.find(e=>e.id===this.viewProfile),t=e?.shared?"shared":"personal";return this.editableLayers.includes(t)?t:this.viewTarget}startConfiguringView(){return!!this.canConfigureView&&(this.configuring=!0,this.viewProfiles.length&&(this.viewTarget=this._layerOfProfile()),this.arrangementEntered={kind:this.viewTarget,revision:this._layerRevision(this.viewTarget),view:this._layerCopy(this.viewTarget)},this.resetAsked=!1,this.layerDraft=this._layerCopy(this.viewTarget),this._bindSectionDropTarget(),this.entryErrors=new Map,this.cancelEdit(),this.requestComponentUpdate("configuring"),this._readShownGroups("started"),this._focusAfterRender(['.sf-property-view-configure-bar [data-action="view-profile"]',".sf-property-view-configure-bar"]),!0)}stopConfiguringView(){const e=this.configuring;this.configuring=!1,this._bindSectionDropTarget(),this.layerDraft=null,this.arrangementEntered=null,this.resetAsked=!1,this.entryErrors=new Map,this.requestComponentUpdate("configuring"),e&&this._focusAfterRender('[data-action="menu"]')}_focusAfterRender(e){const t=e=>(e?.matches?.(p.FOCUSABLE)?e:e?.querySelector?.(p.FOCUSABLE))??null;this.whenRendered(()=>requestAnimationFrame(async()=>{const i=this.panelContent?.()??this;let r=null;for(const n of[e].flat()){const e=[...i?.querySelectorAll?.(n)??[]].pop()??null;if(e&&(r=t(e),!r&&e.localName.includes("-")&&(await customElements.whenDefined(e.localName),await(e.whenRendered?.()),await new Promise(e=>requestAnimationFrame(e)),r=t(e)),r))break}if(!r||!r.isConnected)return;const n=document.activeElement;n&&n!==document.body&&i?.contains?.(n)||r.focus({preventScroll:!0})}),{next:!0})}async cancelConfiguringView(){if(!this.configuring)return!1;const e=this.arrangementEntered;if(!e||e.kind!==this.viewTarget)return this.stopConfiguringView(),!0;const t=(e,t)=>JSON.stringify(e)===JSON.stringify(t),i=this._layerCopy(e.kind);if(null!=e.revision&&this._layerRevision(e.kind)===e.revision||t(i,e.view))return t(this.layerDraft,e.view)||await this.load("view-cancel"),this.stopConfiguringView(),!0;this.layerDraft=E(e.view);const r=await this.saveView();return await this.load("view-cancel"),this.stopConfiguringView(),r}askReset(){return!!this.configuring&&(this.resetAsked=!0,this.requestComponentUpdate("reset-ask"),!0)}cancelReset(){return this.resetAsked=!1,this.requestComponentUpdate("reset-ask"),!0}setViewTarget(e){return!(!this.editableLayers.includes(e)||e===this.viewTarget)&&(this.viewTarget=e,this.layerDraft=this._layerCopy(e),this.entryErrors=new Map,this.requestComponentUpdate("view-target"),!0)}canChangeVisibility(e){const t=e?.hiddenBy??null;return!t||"package"!==t&&("shared"!==t||"shared"===this.viewTarget)}entryError(e,t){return this.entryErrors.get(`${e}:${t}`)??null}_groupsOf(e){const t=this.sections.find(t=>String(t.key)===String(e));return Array.isArray(t?.groups)?t.groups:[]}_fieldsOf(e){for(const t of this.sections)for(const i of t.groups??[])if(String(i.key)===String(e))return Array.isArray(i.fields)?i.fields:[];return[]}_locateGroup(e){for(const t of this.sections)for(const i of t.groups??[])if(String(i.key)===String(e))return{section:t,group:i};return null}_writeOrder(e,t,i={}){t.forEach((t,r)=>{const n=String(t.key);e[n]={...e[n]??{},...i,order:r+1}})}moveFieldToSection(e,t){if(!this.configuring||!this.layerDraft)return!1;const i=(this.sections??[]).find(e=>String(e.key)===String(t));if(!i)return!1;const r=(i.groups??[]).find(e=>"related"!==e.kind);return!!r&&this.moveField(e,String(r.key),(r.fields??[]).length)}_bindSectionDropTarget(){if(!this.configuring)return this._releaseSectionTarget?.(),void(this._releaseSectionTarget=null);if(this._releaseSectionTarget)return;const e=globalThis.SF?.Sortable?.registerSortableDropTarget;if("function"!=typeof e)return;const t=(e,t)=>{const i=globalThis.document?.elementFromPoint?.(e,t),r=i?.closest?.("[data-section-tab], .sf-tree-item[data-value]"),n=this.panelContent();return r&&n&&n.contains(r)?r:null};this._releaseSectionTarget=e({resolve:(e,i,r)=>{if(r?.group&&!["field","group"].includes(r.group))return null;const n=t(e,i);if(!n)return null;const s=n.getAttribute("data-section-tab")??n.getAttribute("data-value");if(s===this.selectedSection)return null;return{descriptor:{section:s},rect:(n.matches("[data-section-tab]")?n:n.querySelector(":scope > .sf-tree-item-container")||n).getBoundingClientRect(),label:n.querySelector(":scope > .sf-tree-item-container > .sf-tree-item-name")?.textContent?.trim()||n.textContent?.trim()||s}},drop:(e,t)=>!!t?.section&&("group"===e?.group?this.moveGroup(e?.item,t.section,Number.MAX_SAFE_INTEGER):this.moveFieldToSection(e?.item,t.section))})}moveField(e,t,i){if(!this.configuring||!this.layerDraft)return!1;const r=this._locateGroup(t);if(!r)return!1;let n=null,s=null;for(const t of this.sections){for(const i of t.groups??[]){const t=(i.fields??[]).findIndex(t=>String(t.key)===String(e));if(t>=0){s=i,[n]=i.fields.splice(t,1);break}}if(n)break}let o=!1;if(!n){const t=this.record?.unplaced??[],i=t.findIndex(t=>String(t.key)===String(e));i>=0&&([n]=t.splice(i,1),o=!0)}if(!n)return!1;const a=r.group.fields??(r.group.fields=[]),l=Math.max(0,Math.min(Number.isInteger(i)?i:a.length,a.length));return a.splice(l,0,n),this._writeOrder(this.layerDraft.fields,a,{group:String(t)}),o&&this._writeOrder(this.layerDraft.fields,this.record?.unplaced??[],{group:null}),s&&s!==r.group&&this._writeOrder(this.layerDraft.fields,s.fields??[],{group:String(s.key)}),this.requestComponentUpdate("view-move"),this.saveView()}moveGroup(e,t,i){if(!this.configuring||!this.layerDraft)return!1;const r=this.sections.find(e=>String(e.key)===String(t));if(!r)return!1;let n=null,s=null;for(const t of this.sections){const i=(t.groups??[]).findIndex(t=>String(t.key)===String(e));if(i>=0){s=t,[n]=t.groups.splice(i,1);break}}if(!n)return!1;const o=r.groups??(r.groups=[]),a=Math.max(0,Math.min(Number.isInteger(i)?i:o.length,o.length));return o.splice(a,0,n),this._writeOrder(this.layerDraft.groups,o,{section:String(t)}),s&&s!==r&&this._writeOrder(this.layerDraft.groups,s.groups??[],{section:String(s.key)}),this.requestComponentUpdate("view-move"),this.saveView()}setFieldView(e,t={}){if(!this.configuring||!this.layerDraft)return!1;const i=["width","variant","hint","label"],r=Object.fromEntries(Object.entries(t).filter(([e])=>i.includes(e)));if(!Object.keys(r).length)return!1;const n=String(e);this.layerDraft.fields[n]={...this.layerDraft.fields[n]??{},...r};for(const e of this.sections)for(const t of e.groups??[])for(const e of t.fields??[])String(e.key)===n&&Object.assign(e,r);return this.requestComponentUpdate("view-field"),this.saveView()}get sectionIcons(){return this.getAttribute("section-icons")||""}get sectionIconChoices(){const e=this.sectionIcons;return e?e.split(/[\s,]+/u).filter(Boolean):L}setSectionIcon(e,t){if(!this.configuring||!this.layerDraft)return!1;const i=String(e),r=this.sections.find(e=>String(e.key)===i);if(!r)return!1;const n=String(t??"").trim()||null;return this.layerDraft.sections[i]={...this.layerDraft.sections[i]??{},icon:n},r.icon=n,this.requestComponentUpdate("view-section-icon"),this.saveView()}renameEntry(e,t,i){if(!this.configuring||!this.layerDraft)return!1;const r={section:"sections",group:"groups"}[e];if(!r)return!1;const n=String(i??"").trim();if(!n)return!1;const s=this._findEntry(e,t);if(!s)return!1;const o=String(t);return this.layerDraft[r][o]={...this.layerDraft[r][o]??{},label:n},s.label=n,this.renaming=null,this.requestComponentUpdate("view-rename"),this.saveView()}startRenaming(e,t){return!!this.configuring&&(this.renaming={kind:e,key:String(t)},this.requestComponentUpdate("view-rename"),!0)}cancelRenaming(){this.renaming=null,this.requestComponentUpdate("view-rename")}removeGroup(e){if(!this.configuring||!this.layerDraft)return!1;const t=this._locateGroup(e);if(!t||!this.canChangeVisibility(t.group))return!1;for(const e of[...t.group.fields??[]])this.moveFieldToUnplaced(String(e.key));const i=String(e);this.layerDraft.groups[i]={...this.layerDraft.groups[i]??{},hidden:!0},t.group.hidden=!0;const r=this.sections.find(e=>(e.groups??[]).includes(t.group));return r&&(r.groups=(r.groups??[]).filter(e=>e!==t.group)),this.requestComponentUpdate("view-remove-group"),this.saveView()}removeSection(e){if(!this.configuring||!this.layerDraft)return!1;const t=String(e),i=this.sections.find(e=>String(e.key)===t);if(!i||!this.canChangeVisibility(i))return!1;if(this.sections.length<2)return!1;const r=this.sections.find(e=>e!==i);for(const e of[...i.groups??[]])this.moveGroup(String(e.key),String(r.key),Number.MAX_SAFE_INTEGER);return this.layerDraft.sections[t]={...this.layerDraft.sections[t]??{},hidden:!0},i.hidden=!0,this.sections=this.sections.filter(e=>e!==i),this.selectedSection===t&&(this.selectedSection=String(r.key)),this.requestComponentUpdate("view-remove-section"),this.saveView()}moveSection(e,t){if(!this.configuring||!this.layerDraft)return!1;const i=String(e),r=this.sections.findIndex(e=>String(e.key)===i);if(r<0)return!1;const n=[...this.sections],[s]=n.splice(r,1),o=Math.max(0,Math.min(Number.isInteger(t)?t:n.length,n.length));return n.splice(o,0,s),!n.every((e,t)=>e===this.sections[t])&&(this.sections=n,this._writeOrder(this.layerDraft.sections,this.sections,{}),this.requestComponentUpdate("view-move-section"),this.saveView())}addGroup(e){if(!this.configuring||!this.layerDraft)return!1;const t=this.sections.find(t=>String(t.key)===String(e))??this.sections[0];if(!t)return!1;const i=this._newEntryKey("group"),r={key:i,label:this.newGroupTitle,columns:1,fields:[],hidden:!1,rare:!1,editable:!0};return t.groups=[...t.groups??[],r],this._writeOrder(this.layerDraft.groups,t.groups,{section:String(t.key)}),this.layerDraft.groups[i]={...this.layerDraft.groups[i]??{},label:r.label,section:String(t.key),columns:1,hidden:!1},this.renaming={kind:"group",key:i},this.requestComponentUpdate("view-add-group"),this.saveView()}addSection(){if(!this.configuring||!this.layerDraft)return!1;const e=this._newEntryKey("section"),t={key:e,label:this.newSectionTitle,groups:[],hidden:!1,rare:!1};return this.sections=[...this.sections,t],this._writeOrder(this.layerDraft.sections,this.sections,{}),this.layerDraft.sections[e]={...this.layerDraft.sections[e]??{},label:t.label,hidden:!1},this.selectedSection=e,this.renaming={kind:"section",key:e},this.requestComponentUpdate("view-add-section"),this.saveView()}_newEntryKey(e){return`view-${e}-${Date.now().toString(36)}${Math.floor(46655*Math.random()).toString(36).padStart(3,"0")}`}toggleEntryHidden(e,t){if(!this.configuring||!this.layerDraft)return!1;const i={section:"sections",group:"groups",field:"fields"}[e];if(!i)return!1;const r=this._findEntry(e,t);if(!r||!this.canChangeVisibility(r))return!1;const n=!r.hidden,s=String(t);return this.layerDraft[i][s]={...this.layerDraft[i][s]??{},hidden:n},r.hidden=n,this.requestComponentUpdate("view-hidden"),this.saveView()}_findEntry(e,t){const i=String(t);for(const t of this.sections){if("section"===e&&String(t.key)===i)return t;for(const r of t.groups??[]){if("group"===e&&String(r.key)===i)return r;for(const t of r.fields??[])if("field"===e&&String(t.key)===i)return t}}return null}async saveView(){if(!this.canConfigureView||!this.layerDraft)return null;const e=this._viewWriting??Promise.resolve();let t;this._viewWriting=new Promise(e=>{t=e});try{return await e,await this._saveViewNow()}finally{t()}}async _saveViewNow(){if(!this.canConfigureView||!this.layerDraft)return null;const e=this.viewTarget,t=++this.viewEpoch,i=await this._raise("view.save",{record_id:null,collection:this.collection||null,target:{kind:e,revision:this._layerRevision(e)},view:E(this.layerDraft)},{stale:()=>t!==this.viewEpoch});return i?"applied"===i.answer?(this.entryErrors=new Map,this._storeLayer(e,i.revision??null,i.view??this.layerDraft),i.view?await this.load("view-normalised"):(this._setState("ready"),this.requestComponentUpdate("view-saved")),i):"conflict"===i.answer?(this._storeLayer(e,i.revision??null,i.view??null),this.message=i.message||this.viewConflictText,await this.load("view-conflict"),i):"refused"===i.answer?(this.entryErrors=new Map(Object.entries(i.entry_errors??{}).map(([e,t])=>[e,String(t)])),await this.load("view-refused"),i):(this._setState("error",i.message||(0,d.pageText)(V,"viewSaveFailedText",this)),i):null}_storeLayer(e,t,i){this.view&&(this.view.layers={...this.view.layers??{}},this.view.layers[e]={revision:t,view:i?E(i):null},this.layerDraft=this._layerCopy(e))}async resetView(){if(!this.canConfigureView)return null;this.resetAsked=!1,await(this._viewWriting??Promise.resolve());const e=this.viewTarget,t=++this.viewEpoch,i=await this._raise("view.reset",{record_id:null,collection:this.collection||null,target:{kind:e,revision:this._layerRevision(e)}},{stale:()=>t!==this.viewEpoch});return i?"applied"===i.answer||"conflict"===i.answer?("conflict"===i.answer&&(this.message=i.message||this.viewConflictText),this._storeLayer(e,i.revision??null,null),this.entryErrors=new Map,await this.load("view-reset"),i):(this._setState("error",i.message||(0,d.pageText)(V,"viewResetFailedText",this)),i):null}}(0,s.C3)(O,o),(0,s.l6)(O,o),O.define("sf-view-properties"),t()}catch(D){t(D)}})},"844bdc4d24eb"(e,t,i){i.d(t,{tm:()=>o});const r=Object.freeze(["eq","ne","in","not_in","empty","not_empty"]),n=e=>e&&"object"==typeof e&&!Array.isArray(e)&&"value"in e?e.value:e;function s(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return null;for(const i of["all","any"]){if(!(i in e))continue;const r=e[i];if(!Array.isArray(r)||!r.length)return null;const n=r.map(e=>s(e,t));return n.includes(null)?null:"all"===i?n.every(Boolean):n.some(Boolean)}if("not"in e){const i=s(e.not,t);return null===i?null:!i}if("string"!=typeof e.field||!r.includes(e.op))return null;const i=(o=t.get(e.field),(Array.isArray(o)?o:[o]).map(n).filter(e=>null!=e&&""!==e).map(e=>String(e)));var o;if("empty"===e.op)return 0===i.length;if("not_empty"===e.op)return i.length>0;if("eq"===e.op||"ne"===e.op){const t=i.includes(String(n(e.value)));return"eq"===e.op?t:!t}if(!Array.isArray(e.value))return null;const a=e.value.map(e=>String(n(e))),l=i.some(e=>a.includes(e));return"in"===e.op?l:!l}function o(e,t){const i=e?.when&&"object"==typeof e.when?e.when:null,r=e=>i&&e in i?s(i[e],t):null,n=r("visible"),o=r("required"),a=r("enabled");return{visible:n??!0,required:o??!0===e?.required,enabled:a??!0}}},"40b137e60526"(e,t,i){i.a(e,async(e,r)=>{try{i.d(t,{$:()=>X});var n=i("2a080a730149"),s=i("e5483002f3ea"),o=e([n,s]);[n,s]=o.then?(await o)():o;function a(e,t,i,{disabled:r=!1}={}){const o=String(t.key??""),a={setFieldValue:(t,i)=>e.component.changeField(t,i),setFieldError:(t,i)=>e.component.reportFieldError(t,i),...e.canUploadFiles?{getFieldUploads:t=>e.component.getFieldUploads(t),startFieldUpload:(t,i)=>e.component.startFieldUpload(t,i),retryFieldUpload:(t,i)=>e.component.retryFieldUpload(t,i)}:{},...e.canPickRecords?{getFieldOptionsPage:t=>e.component.getFieldOptionsPage(t),getFieldOptionSearch:t=>e.component.getFieldOptionSearch(t),setFieldOptionSearch:(t,i)=>e.component.setFieldOptionSearch(t,i),loadFieldOptions:(t,i)=>e.component.loadFieldOptions(t,i)}:{}},l=i?(0,s.z4)(t,e.changed.has(o)?e.changed.get(o):t.value,a,{size:e.size,...r?{disabled:!0}:{}}):(0,s.oX)(t,t.value,e.viewHost,{size:e.size}),c=["record","relation","user"].includes(t.propertyType||t.type)&&t.value&&"object"==typeof t.value;if(!i&&c&&l)return n.html`<span
575
+ class="sf-property-view-reference"
576
+ @click=${i=>{i.preventDefault(),i.stopPropagation(),e.component.openReference(t,t.value)}}
577
+ >${l}</span>`;if(i&&(null==l||l===n.nothing)){const i=(0,s.oX)(t,t.value,e.viewHost,{size:e.size});if(null!=i&&i!==n.nothing)return n.html`<span class="sf-property-view-readonly color-on-surface-variant" data-readonly="true">${i}</span>`}return null==l||l===n.nothing?n.html`<span class="sf-property-view-empty color-on-surface-variant">${e.emptyText}</span>`:l}function l(e,t){return e.configuring?t??[]:e.visible(t)}function c(e){if(!e.canConfigureView)return n.nothing;if(!e.configuring)return n.nothing;const t=e.editableLayers??[],i=n.html`
578
+ <sf-profile-picker
579
+ size=${e.size}
580
+ data-action="view-profile"
581
+ label=${e.viewProfileLabel}
582
+ current=${e.viewProfile??""}
583
+ .profiles=${(e.viewProfiles??[]).map(i=>({id:i.id,label:i.label,shared:Boolean(i.shared),editable:t.includes(i.shared?"shared":"personal")&&(!i.shared||e.canDeleteViewProfile(i.id))}))}
584
+ .rights=${{create:{personal:t.includes("personal"),shared:t.includes("shared")}}}
585
+ @sf-profile-picker-select=${t=>e.component.selectViewProfile(t.detail.id)}
586
+ @sf-profile-picker-create=${t=>e.component.createViewProfile(t.detail.label,{shared:t.detail.shared})}
587
+ @sf-profile-picker-rename=${t=>e.component.renameViewProfile(t.detail.id,t.detail.label)}
588
+ @sf-profile-picker-delete=${t=>e.component.deleteViewProfile(t.detail.id)}
589
+ ></sf-profile-picker>`;return n.html`
590
+ <div class="sf-property-view-actions sf-property-view-configure-bar flex items-cross-center gap-2 flex-wrap"
591
+ data-configuring="true" role="group"
592
+ aria-label=${e.configureText}>
593
+ ${i}
594
+ <span class="grow"></span>
595
+ ${e.resetAsked?n.html`
596
+ <span class="sf-property-view-reset-ask color-error">${e.resetViewAskText}</span>
597
+ <sf-button
598
+ appearance="link"
599
+ size=${e.size}
600
+ status="error"
601
+ text=${e.resetViewText}
602
+ data-action="reset-view-confirm"
603
+ @click=${()=>e.component.resetView()}
604
+ ></sf-button>
605
+ <sf-button
606
+ appearance="outline"
607
+ size=${e.size}
608
+ text=${e.cancelConfiguringText}
609
+ data-action="reset-view-cancel"
610
+ @click=${()=>e.component.cancelReset()}
611
+ ></sf-button>`:n.html`
612
+ <!-- Reset, cancel, done: the further a control reaches, the
613
+ quieter it is drawn. Reset takes the whole layer away
614
+ and asks first; cancel puts back the arrangement this
615
+ mode was entered with; done keeps what is there. -->
616
+ <sf-button
617
+ appearance="link"
618
+ size=${e.size}
619
+ text=${e.resetViewText}
620
+ data-action="reset-view"
621
+ @click=${()=>e.component.askReset()}
622
+ ></sf-button>
623
+ <sf-button
624
+ appearance="outline"
625
+ size=${e.size}
626
+ text=${e.cancelConfiguringText}
627
+ data-action="cancel-configuring"
628
+ @click=${()=>e.component.cancelConfiguringView()}
629
+ ></sf-button>
630
+ <sf-button
631
+ appearance="default"
632
+ size=${e.size}
633
+ text=${e.doneConfiguringText}
634
+ data-action="done-configuring"
635
+ @click=${()=>e.component.stopConfiguringView()}
636
+ ></sf-button>`}
637
+ </div>
638
+ `}function u(e,t,i){const r=Array.isArray(t.variantOptions)?t.variantOptions:[];return n.html`
639
+ <sf-popover placement="bottom-end" width="16rem" label=${e.fieldSettingsText}
640
+ data-settings-for=${i}>
641
+ <sf-button-icon
642
+ slot="trigger"
643
+ size="1/2"
644
+ appearance="link"
645
+ scheme="secondary"
646
+ icon="settings"
647
+ data-action="field-settings"
648
+ title=${e.fieldSettingsText}
649
+ aria-label=${e.fieldSettingsText}
650
+ ></sf-button-icon>
651
+ <div slot="content" class="flex flex-col gap-1 p-1">
652
+ <label class="sf-property-view-settings-row sf-property-view-settings-row--stacked flex flex-col gap-1/4">
653
+ <span class="sf-property-view-settings-label color-on-surface-variant">${e.fieldLabelText}</span>
654
+ <sf-input
655
+ size="1/2"
656
+ appearance="bordered"
657
+ data-action="field-label"
658
+ aria-label=${e.fieldLabelText}
659
+ placeholder=${String(t.label??i)}
660
+ value=${String(t.label??"")}
661
+ @change=${t=>e.component.setFieldView(i,{label:String(t.target?.value??"").trim()||null})}
662
+ ></sf-input>
663
+ </label>
664
+ <label class="sf-property-view-settings-row sf-property-view-settings-row--stacked flex flex-col gap-1/4">
665
+ <span class="sf-property-view-settings-label color-on-surface-variant">${e.hintText}</span>
666
+ <sf-input
667
+ size="1/2"
668
+ appearance="bordered"
669
+ data-action="hint"
670
+ aria-label=${e.hintText}
671
+ placeholder=${e.hintText}
672
+ value=${String(t.hint??"")}
673
+ @change=${t=>e.component.setFieldView(i,{hint:t.target?.value??""})}
674
+ ></sf-input>
675
+ </label>
676
+ ${r.length?n.html`
677
+ <label class="sf-property-view-settings-row flex items-cross-center justify-between gap-1">
678
+ <span class="sf-property-view-settings-label color-on-surface-variant">${e.variantText}</span>
679
+ <sf-dropdown
680
+ size="1/2"
681
+ appearance="outlined"
682
+ mode="select"
683
+ search="false"
684
+ data-action="variant"
685
+ aria-label=${e.variantText}
686
+ value=${String(t.variant??"")}
687
+ .options=${r.map(e=>({type:"text",text:e.label??e.text??String(e.value??e),value:String(e.value??e),selected:String(t.variant??"")===String(e.value??e)}))}
688
+ @change=${t=>e.component.setFieldView(i,{variant:t.detail?.value??null})}
689
+ ></sf-dropdown>
690
+ </label>`:n.nothing}
691
+ <label class="sf-property-view-settings-row flex items-cross-center justify-between gap-1">
692
+ <span class="sf-property-view-settings-label color-on-surface-variant">${e.widthText}</span>
693
+ <sf-switch
694
+ size="1/2"
695
+ data-action="width"
696
+ ?checked=${"full"===t.width}
697
+ @change=${t=>e.component.setFieldView(i,{width:t.target?.checked?"full":"half"})}
698
+ ></sf-switch>
699
+ </label>
700
+ </div>
701
+ </sf-popover>
702
+ `}function d(e,t,i){const r=!e.canChangeVisibility(t);return n.html`
703
+ <div class="sf-property-view-field-actions flex items-cross-center gap-1/4">
704
+ <sf-button-icon
705
+ size="1/2"
706
+ appearance="link"
707
+ scheme="secondary"
708
+ icon=${t.hidden?"visibility_off":"close"}
709
+ data-action="remove-field"
710
+ ?disabled=${r}
711
+ title=${r?e.layerDenied("shared")||e.hiddenText:e.removeFieldText}
712
+ aria-label=${e.removeFieldText}
713
+ @click=${()=>e.component.moveFieldToUnplaced(i)}
714
+ ></sf-button-icon>
715
+ ${u(e,t,i)}
716
+ </div>
717
+ `}function p(e,t,i,r,s){const o=e.renaming?.kind===t&&e.renaming?.key===String(i);if(!e.configuring)return n.html`<h3 class=${s}>${r}</h3>`;if(!o)return n.html`
718
+ <h3 class=${s}>
719
+ <button type="button" class="sf-property-view-rename-trigger text-start cursor-pointer"
720
+ data-action="rename"
721
+ title=${e.renameText}
722
+ @click=${()=>e.component.startRenaming(t,i)}
723
+ >${r}</button>
724
+ </h3>
725
+ <sf-button-icon
726
+ size="1/2"
727
+ appearance="link"
728
+ scheme="secondary"
729
+ icon="edit"
730
+ data-action="rename"
731
+ title=${e.renameText}
732
+ aria-label=${e.renameText}
733
+ @click=${()=>e.component.startRenaming(t,i)}
734
+ ></sf-button-icon>
735
+ <span class="grow"></span>
736
+ `;const a=n=>{const s=n.target?.closest?.(".sf-property-view-rename")?.querySelector("sf-input");e.component.renameEntry(t,i,s?.value??r)};return n.html`
737
+ <span class="sf-property-view-rename flex items-cross-center gap-1/4 grow min-w-0">
738
+ <sf-input
739
+ size="1/2"
740
+ appearance="bordered"
741
+ autofocus
742
+ root-class="flex-auto min-w-0"
743
+ data-action="rename-input"
744
+ aria-label=${e.renameText}
745
+ value=${r}
746
+ @keydown=${t=>{"Enter"===t.key&&a(t),"Escape"===t.key&&e.component.cancelRenaming()}}
747
+ ></sf-input>
748
+ <sf-button-icon
749
+ size="1/2"
750
+ appearance="link"
751
+ scheme="on-surface"
752
+ icon="check"
753
+ data-action="rename-save"
754
+ title=${e.saveNameText}
755
+ aria-label=${e.saveNameText}
756
+ @click=${a}
757
+ ></sf-button-icon>
758
+ <sf-button-icon
759
+ size="1/2"
760
+ appearance="link"
761
+ scheme="on-surface"
762
+ icon="close"
763
+ data-action="rename-cancel"
764
+ title=${e.cancelNameText}
765
+ aria-label=${e.cancelNameText}
766
+ @click=${()=>e.component.cancelRenaming()}
767
+ ></sf-button-icon>
768
+ </span>
769
+ `}const h='a[href], button, input, select, textarea, [role="button"], [role="link"]';function f(e,t,i,r="",s=""){const o=!e.configuring&&Boolean(t.when)&&e.fieldDisabled(t);!e.configuring&&t.when&&(t=e.conditionedField(t));const l=String(t.key??""),c=e.controlErrors?.has(l)?null:e.errors.get(l),u=e.configuring?e.entryError("field",l):null;return n.html`
770
+ <div class="sf-property-view-field flex flex-col gap-1 min-w-0 ${"full"===t.width?"sf-property-view-field--full":""}"
771
+ data-field=${l}
772
+ data-sf-sortable-item=${e.configuring?l:n.nothing}
773
+ data-arranging=${e.configuring?"true":n.nothing}
774
+ data-hidden=${e.configuring&&t.hidden?"true":n.nothing}>
775
+ ${e.configuring?n.html`<i class="sf-icon sf-property-view-grip items-cross-center" data-sf-sortable-handle
776
+ aria-hidden="true">drag_indicator</i>`:n.nothing}
777
+ <div class="sf-property-view-field-label flex items-cross-center gap-1/3 color-on-surface-variant">
778
+ ${String(t.label??l)}
779
+ ${t.required&&i?n.html`<span class="sf-property-view-required color-error" aria-hidden="true">*</span>`:n.nothing}
780
+ ${t.hint?n.html`<sf-help-mark class="sf-property-view-hint"
781
+ label=${String(t.hint)}
782
+ text=${String(t.hint)}></sf-help-mark>`:n.nothing}
783
+ ${t.rare?n.html`<span class="sf-property-view-rare color-on-surface-variant">${e.rareText}</span>`:n.nothing}
784
+ ${t.inherited&&!i?n.html`<span class="sf-property-view-inherited color-on-surface-variant">${e.inheritedText}</span>`:n.nothing}
785
+ </div>
786
+ ${i||e.configuring||!0===t.readonly||!e.mayEdit||e.openAll?n.html`<div class="sf-property-view-field-value min-w-0 flex items-cross-center gap-2 flex-wrap">${a(e,t,i,{disabled:o})}</div>`:n.html`
787
+ <button
788
+ type="button"
789
+ class="sf-property-view-field-value sf-property-view-field-open min-w-0 flex items-cross-center gap-1 text-start cursor-pointer"
790
+ data-open-group=${s}
791
+ title=${e.editText}
792
+ @click=${t=>{const i=t.composedPath();i.slice(0,Math.max(0,i.indexOf(t.currentTarget))).some(e=>e.matches?.(h))||e.component.editGroup(r,s)}}
793
+ >
794
+ ${a(e,t,i)}
795
+ <i class="sf-icon sf-icon--size-1/2 sf-property-view-pen" aria-hidden="true">edit</i>
796
+ </button>`}
797
+ ${e.configuring?d(e,t,l):n.nothing}
798
+ ${c||u?n.html`<div class="sf-property-view-field-error color-error" role="alert">${c||u}</div>`:n.nothing}
799
+ </div>
800
+ `}function g(e,t,i){return n.html`
801
+ <sf-view
802
+ class="sf-property-view-related"
803
+ chrome=""
804
+ row-cap=${String(t.rowCap??5)}
805
+ port-owner="property-view"
806
+ port-record=${e.recordId||""}
807
+ port-group=${i}
808
+ aria-label=${String(t.label??i)}
809
+ >
810
+ <sf-view-table
811
+ slot="content"
812
+ toolbar="false"
813
+ aria-label=${String(t.label??i)}
814
+ ></sf-view-table>
815
+ </sf-view>
816
+ `}function m(e,t){const i=e.fieldChoices(t).map(e=>({type:"checkbox",size:"1/2",text:e.label,value:e.key,group:e.group,selected:e.selected,checked:e.selected,ariaLabel:e.label})),r=i.filter(e=>e.selected).map(e=>e.value);return n.html`
817
+ <sf-dropdown
818
+ class="sf-property-view-add"
819
+ size="1/2"
820
+ multiple
821
+ search="true"
822
+ search-placeholder=${e.addFieldText}
823
+ aria-label=${e.addFieldText}
824
+ data-add-for=${t}
825
+ value=${r.join(",")}
826
+ .options=${i}
827
+ @change=${i=>{const r=String(i.detail?.value??"");if(!r)return;const n=Array.isArray(i.detail?.values)?i.detail.values.map(String):[];e.component.toggleFieldInGroup(r,t,n.includes(r))}}
828
+ >
829
+ <sf-button-icon
830
+ slot="trigger"
831
+ size="1/2"
832
+ appearance="link"
833
+ scheme="secondary"
834
+ icon="add"
835
+ data-action="add-field"
836
+ title=${e.addFieldText}
837
+ aria-label=${e.addFieldText}
838
+ ></sf-button-icon>
839
+ </sf-dropdown>
840
+ `}function v(e,t,i){const r=String(i.key??""),s=e.openAll&&"related"!==i.kind&&!1!==i.editable||e.editing?.group===r&&e.editing?.section===String(t.key??""),o=l(e,i.fields),a=e.configuring,c=a?e.entryError("group",r):null,u=a&&!e.canChangeVisibility(i),d=Array.isArray(i.fields)&&0!==i.fields.length?0:Number.isInteger(i.field_count)&&i.field_count>0?i.field_count:0,h=d>0||Boolean(e.component.isGroupReading?.(r)),v=d>0?n.html`${Array.from({length:d},(e,t)=>n.html`<div class="sf-skeleton sf-skeleton--animation-pulse" aria-hidden="true">
841
+ <div class="sf-skeleton-text sf-skeleton-text--size-1 ${G[t%G.length]}"></div></div>`)}`:n.html`${o.map(i=>f(e,i,s,String(t.key??""),r))}`;return n.html`
842
+ <section class="sf-property-view-group bg-surface-0 flex flex-col gap-2 ${s?"sf-property-view-group--editing":""}"
843
+ data-group=${r}
844
+ aria-busy=${h?"true":n.nothing}
845
+ data-sf-sortable-item=${a?r:n.nothing}
846
+ data-hidden=${a&&i.hidden?"true":n.nothing}
847
+ data-columns=${2===i.columns?"2":"1"}>
848
+ <header class="sf-property-view-group-header flex items-cross-center justify-between gap-2">
849
+ ${a?n.html`<i class="sf-icon sf-property-view-grip items-cross-center" data-sf-sortable-handle
850
+ aria-hidden="true">drag_indicator</i>`:n.nothing}
851
+ ${p(e,"group",r,String(i.label??r),"sf-property-view-group-title")}
852
+ ${i.rare?n.html`<span class="sf-property-view-rare color-on-surface-variant">${e.rareText}</span>`:n.nothing}
853
+ ${a?n.html`
854
+ <span class="flex items-cross-center gap-1/4">
855
+ ${m(e,r)}
856
+ <sf-button-icon
857
+ size="1/2"
858
+ appearance="link"
859
+ scheme="secondary"
860
+ icon="keyboard_arrow_up"
861
+ data-action="group-up"
862
+ ?disabled=${0===e.groupAt(r)}
863
+ title=${e.moveUpText}
864
+ aria-label=${e.moveUpText}
865
+ @click=${()=>e.component.moveGroupBy(r,-1)}
866
+ ></sf-button-icon>
867
+ <sf-button-icon
868
+ size="1/2"
869
+ appearance="link"
870
+ scheme="secondary"
871
+ icon="keyboard_arrow_down"
872
+ data-action="group-down"
873
+ ?disabled=${e.groupAt(r)===e.groupCount-1}
874
+ title=${e.moveDownText}
875
+ aria-label=${e.moveDownText}
876
+ @click=${()=>e.component.moveGroupBy(r,1)}
877
+ ></sf-button-icon>
878
+ <sf-button-icon
879
+ size="1/2"
880
+ appearance="link"
881
+ scheme="secondary"
882
+ icon=${i.hidden?"visibility_off":"delete"}
883
+ data-action="remove-group"
884
+ ?disabled=${u}
885
+ title=${u?e.layerDenied("shared")||e.hiddenText:e.removeGroupText}
886
+ aria-label=${e.removeGroupText}
887
+ @click=${()=>e.component.removeGroup(r)}
888
+ ></sf-button-icon>
889
+ </span>`:n.nothing}
890
+ ${a||s||!e.mayEdit||e.openAll||"related"===i.kind||!1===i.editable?n.nothing:n.html`
891
+ <sf-button
892
+ appearance="link"
893
+ size=${e.size}
894
+ text=${e.editText}
895
+ data-action="edit"
896
+ @click=${()=>e.component.editGroup(String(t.key??""),r)}
897
+ ></sf-button>`}
898
+ </header>
899
+ ${c?n.html`<div class="sf-property-view-group-error" role="alert">${c}</div>`:n.nothing}
900
+ ${"related"===i.kind?n.html`<div class="sf-property-view-group-related">${g(e,i,r)}</div>`:a?n.html`
901
+ <sf-sortable
902
+ class="sf-property-view-group-fields min-w-0"
903
+ group="field"
904
+ accepts="field"
905
+ id=${`field:${r}`}
906
+ label=${String(i.label??r)}
907
+ >${v}</sf-sortable>`:n.html`<div class="sf-property-view-group-fields min-w-0">${v}</div>`}
908
+ </section>
909
+ `}function b(e,t){return n.html`
910
+ <nav class="sf-property-view-phone-sections flex flex-col" aria-label=${e.sectionsLabel}>
911
+ ${t.map(t=>n.html`
912
+ <button
913
+ type="button"
914
+ class="sf-property-view-phone-section flex items-cross-center justify-between gap-1"
915
+ data-phone-section=${String(t.key)}
916
+ @click=${()=>e.component.openPhoneSection(String(t.key))}
917
+ >
918
+ <span class="sf-property-view-phone-section-label">${String(t.label??t.key)}</span>
919
+ <i class="sf-icon" aria-hidden="true">chevron_right</i>
920
+ </button>
921
+ `)}
922
+ </nav>
923
+ `}function y(e){return n.html`
924
+ <div class="sf-property-view-phone-head flex items-cross-center gap-2">
925
+ <sf-button-icon
926
+ size=${e.size}
927
+ appearance="link"
928
+ icon="arrow_back"
929
+ data-action="phone-back"
930
+ aria-label=${e.backLabel}
931
+ @click=${()=>e.component.closePhoneSection()}
932
+ ></sf-button-icon>
933
+ <h2 class="sf-property-view-phone-title">${e.phoneSectionLabel}</h2>
934
+ </div>
935
+ `}function w(e,t){return t.length<2&&!e.configuring?n.nothing:n.html`
936
+ <nav class="sf-property-view-sections self-cross-stretch flex flex-col min-w-0" aria-label=${e.sectionsLabel}>
937
+ ${e.configuring?n.html`
938
+ ${$(e,t)}
939
+ <div class="sf-property-view-additions flex">${j(e)}</div>`:x(e,t)}
940
+ </nav>
941
+ `}function x(e,t){const i=t.map(t=>({label:S(e,t),value:String(t.key),selected:String(t.key)===e.selectedSection,openIcon:t.icon?String(t.icon):"",closedIcon:t.icon?String(t.icon):""}));return n.html`
942
+ <sf-tree
943
+ selection="one"
944
+ .items=${i}
945
+ @sf-tree-select=${t=>{const i=t.detail?.id;i&&e.component.selectSection(String(i))}}
946
+ ></sf-tree>
947
+ `}function $(e,t){return n.html`
948
+ <sf-sortable
949
+ class="sf-property-view-section-tabs flex flex-col"
950
+ group="section"
951
+ accepts="section"
952
+ id="section:all"
953
+ label=${e.sectionsLabel}
954
+ >
955
+ ${t.map(t=>n.html`
956
+ <button
957
+ type="button"
958
+ class="sf-property-view-section-tab flex items-cross-center gap-1/3 min-w-0 text-start cursor-pointer"
959
+ data-section-tab=${String(t.key)}
960
+ data-sf-sortable-item=${String(t.key)}
961
+ aria-current=${String(t.key)===e.selectedSection?"true":n.nothing}
962
+ @click=${()=>e.component.selectSection(String(t.key))}
963
+ >
964
+ <i class="sf-icon sf-property-view-section-grip color-on-surface-variant" data-sf-sortable-handle
965
+ aria-hidden="true">drag_indicator</i>
966
+ <i class="sf-icon" aria-hidden="true">${t.icon?String(t.icon):"folder"}</i>
967
+ <span class="sf-property-view-section-tab-label flex-auto min-w-0">${S(e,t)}</span>
968
+ </button>
969
+ `)}
970
+ </sf-sortable>
971
+ `}function S(e,t){const i=String(t.label??t.key);return t.rare?`${i} · ${e.rareText}`:i}function T(e,t){return S(e,t).replace(/\|/gu,"│").replace(/::/gu,":∶")}function k(e,t){const i=Math.max(0,t.findIndex(t=>String(t.key)===e.selectedSection));return n.html`
972
+ <sf-tabs
973
+ class="sf-property-view-tabs"
974
+ size=${e.size}
975
+ active-index=${String(i)}
976
+ aria-label=${e.sectionsLabel}
977
+ items=${t.map(t=>T(e,t)).join("|")}
978
+ @sf-tabs-change=${i=>{const r=t[Number(i.detail?.current)];r&&e.component.selectSection(String(r.key))}}
979
+ ></sf-tabs>
980
+ `}function _(e){return"1/2"!==e.size?"":" --sf-property-view--title-size: var(--sf-heading-5--size); --sf-property-view--title-height: var(--sf-heading-5--height); --sf-property-view--group-size: var(--sf-text-medium--size); --sf-property-view--group-height: var(--sf-text-medium--height); --sf-property-view--label-size: var(--sf-label-medium--size); --sf-property-view--label-height: var(--sf-label-medium--height); --sf-property-view--value-size: var(--sf-text-small--size); --sf-property-view--value-height: var(--sf-text-small--height);"}function A(e){return n.html`
981
+ <div class="sf-property-view-actions flex items-cross-center gap-2 flex-wrap" role="group"
982
+ data-confirming="true">
983
+ <span class="sf-property-view-confirm-text" role="alert">${e.confirmation.text}</span>
984
+ <span class="grow"></span>
985
+ <sf-button
986
+ appearance="default"
987
+ size=${e.size}
988
+ text=${e.confirmSaveText}
989
+ data-action="confirm-save"
990
+ @click=${()=>e.component.confirmSave()}
991
+ ></sf-button>
992
+ <sf-button
993
+ appearance="outline"
994
+ size=${e.size}
995
+ text=${e.keepEditingText}
996
+ data-action="keep-editing"
997
+ @click=${()=>e.component.cancelConfirmation()}
998
+ ></sf-button>
999
+ </div>
1000
+ `}function F(e){if(e.confirmation)return A(e);const t="create"===e.mode;return n.html`
1001
+ <div class="sf-property-view-actions flex items-cross-center gap-2 flex-wrap" role="group">
1002
+ <sf-button
1003
+ appearance="default"
1004
+ size=${e.size}
1005
+ text=${t?e.createText:e.saveText}
1006
+ data-action=${t?"create":"save"}
1007
+ ?disabled=${!t&&0===e.changed.size||e.inputsInvalid}
1008
+ @click=${()=>e.component.saveAll()}
1009
+ ></sf-button>
1010
+ <sf-button
1011
+ appearance="outline"
1012
+ size=${e.size}
1013
+ text=${e.cancelText}
1014
+ data-action="cancel"
1015
+ @click=${()=>e.component.cancelEdit()}
1016
+ ></sf-button>
1017
+ ${e.errors.size?n.html`<span class="sf-property-view-errors color-error">${e.errorsText}: ${e.errors.size}</span>`:n.nothing}
1018
+ ${e.conflict?n.html`<span class="sf-property-view-conflict color-error" role="alert">${e.conflict}</span>`:n.nothing}
1019
+ </div>
1020
+ `}function C(e,{panel:t=!1}={}){if("view"===e.mode)return n.nothing;if(e.openAll)return F(e);const i="create"!==e.mode&&e.recordActions.includes("record.delete");if(e.configuring)return c(e);if(e.editing&&e.confirmation)return A(e);const r=t&&e.hasHostSlot("footer");return e.editing||i||r?n.html`
1021
+ <div class="sf-property-view-actions flex items-cross-center gap-2 flex-wrap" role="group">
1022
+ ${e.editing?n.html`
1023
+ <sf-button
1024
+ appearance="default"
1025
+ size=${e.size}
1026
+ text=${e.saveText}
1027
+ data-action="save"
1028
+ ?disabled=${0===e.changed.size||e.inputsInvalid}
1029
+ @click=${()=>e.component.saveGroup()}
1030
+ ></sf-button>
1031
+ <sf-button
1032
+ appearance="outline"
1033
+ size=${e.size}
1034
+ text=${e.cancelText}
1035
+ data-action="cancel"
1036
+ @click=${()=>e.component.cancelEdit()}
1037
+ ></sf-button>`:n.nothing}
1038
+ ${e.errors.size?n.html`<span class="sf-property-view-errors color-error">${e.errorsText}: ${e.errors.size}</span>`:n.nothing}
1039
+ ${e.conflict?n.html`<span class="sf-property-view-conflict color-error" role="alert">${e.conflict}</span>`:n.nothing}
1040
+ <span class="grow"></span>
1041
+ ${r?n.html`<div class="sf-property-view-host-footer flex flex-wrap items-cross-center gap-2">${e.hostSlot("footer")}</div>`:n.nothing}
1042
+ ${i?n.html`
1043
+ <sf-button-icon
1044
+ appearance="link"
1045
+ status="error"
1046
+ size=${e.size}
1047
+ icon="delete"
1048
+ data-action="delete"
1049
+ title=${e.deleteText}
1050
+ aria-label=${e.deleteText}
1051
+ @click=${()=>e.component.deleteRecord()}
1052
+ ></sf-button-icon>`:n.nothing}
1053
+ </div>
1054
+ `:n.nothing}function z(e,t){const i=String(t.key??"");return n.html`
1055
+ <div class="sf-property-view-field sf-property-view-field--unplaced flex flex-col gap-1 min-w-0"
1056
+ data-field=${i}
1057
+ data-sf-sortable-item=${i}
1058
+ data-arranging="true">
1059
+ <i class="sf-icon sf-property-view-grip items-cross-center" data-sf-sortable-handle aria-hidden="true">drag_indicator</i>
1060
+ <div class="sf-property-view-field-label flex items-cross-center gap-1/3 color-on-surface-variant">
1061
+ ${String(t.label??i)}
1062
+ ${t.rare?n.html`<span class="sf-property-view-rare color-on-surface-variant">${e.rareText}</span>`:n.nothing}
1063
+ </div>
1064
+ </div>
1065
+ `}function E(e){if(!e.configuring)return n.nothing;const t=e.unplaced;return n.html`
1066
+ <article
1067
+ class="sf-accordion sf-accordion--outline sf-property-view-group--unplaced"
1068
+ data-unplaced="true"
1069
+ >
1070
+ <h3 class="sf-accordion-heading">
1071
+ <button
1072
+ type="button"
1073
+ class="sf-accordion-trigger"
1074
+ data-action="toggle-unplaced"
1075
+ aria-expanded="false"
1076
+ >
1077
+ <span class="sf-accordion-title flex items-cross-center gap-1/3">
1078
+ ${e.unplacedTitle}
1079
+ ${t.length?n.html`<sf-tag
1080
+ kind="default"
1081
+ size="1/3"
1082
+ appearance="surface"
1083
+ text=${String(t.length)}
1084
+ ></sf-tag>`:n.nothing}
1085
+ </span>
1086
+ <sf-icon icon="chevron_right" size="1/2"></sf-icon>
1087
+ </button>
1088
+ </h3>
1089
+ <div class="sf-accordion-content" role="region" hidden>
1090
+ <sf-sortable
1091
+ class="sf-property-view-group-fields sf-property-view-unplaced"
1092
+ group="field"
1093
+ accepts="field"
1094
+ id=${`unplaced:${e.recordId||"record"}`}
1095
+ label=${e.unplacedTitle}
1096
+ >${t.map(t=>z(e,t))}</sf-sortable>
1097
+ </div>
1098
+ </article>
1099
+ `}function q(e){const t=e.panelMenuItems,i=e.hasHostSlot("menu")?e.hostSlot("menu"):null,r=!e.configuring&&(e.viewProfiles?.length??0)>1;return t.length||i||r?n.html`
1100
+ <sf-button-icon
1101
+ appearance="link"
1102
+ scheme="on-surface"
1103
+ size=${e.size}
1104
+ icon="more_horiz"
1105
+ data-action="menu"
1106
+ aria-haspopup="menu"
1107
+ aria-expanded="false"
1108
+ aria-label=${e.menuLabel}
1109
+ @click=${t=>e.component.openPanelMenu(t.currentTarget.querySelector("button")??t.currentTarget)}
1110
+ ></sf-button-icon>
1111
+ ${i?n.html`<div class="sf-property-view-host-menu" data-host-menu hidden>${i}</div>`:n.nothing}
1112
+ `:n.nothing}function V(e){return n.html`
1113
+ <header class="sf-property-view-head flex flex-col gap-1">
1114
+ <div class="sf-property-view-title-row flex items-cross-center gap-1 min-w-0">
1115
+ <h2 class="sf-property-view-title min-w-0 overflow-hidden">${e.panelLabel||e.recordLabel||e.recordId||""}</h2>
1116
+ <!-- One glyph, filled when the record is a favourite and outlined
1117
+ when it is not: a star that changes shape as well as fill
1118
+ says two things where one will do (owner, 2026-10-08). The
1119
+ press raises the component's own event; whether the record
1120
+ is a favourite stays the host's to decide and to answer.
1121
+ A record being created is not one yet and cannot be a
1122
+ favourite: no star until it has an id (Larena storage
1123
+ review, 2026-10-28). -->
1124
+ ${e.recordId&&"create"!==e.mode?n.html`<sf-button-icon
1125
+ appearance="link"
1126
+ size=${e.size}
1127
+ icon="star"
1128
+ ?filled=${e.favourite}
1129
+ data-action="favourite"
1130
+ aria-pressed=${e.favourite?"true":"false"}
1131
+ aria-label=${e.favouriteLabel}
1132
+ @click=${()=>e.component.toggleFavourite()}
1133
+ ></sf-button-icon>`:n.nothing}
1134
+ <span class="grow"></span>
1135
+ ${e.hasHostSlot("actions")?e.hostSlot("actions"):n.nothing}
1136
+ ${q(e)}
1137
+ </div>
1138
+ </header>
1139
+ `}const L="--sf-icon-button--background-color: var(--sf-elevation-3--surface); --sf-on-surface-variant: var(--sf-on-elevation-3--variant); box-shadow: var(--sf-elevation-3--shadow)";function P(e){return!e.wide||"full"===e.panelSize}function O(e){return n.html`
1140
+ <div class="sf-property-view-edge flex ${P(e)?"flex-row":"flex-col"} gap-1/2" slot="edge"
1141
+ aria-label=${e.closeLabel}>
1142
+ <sf-button-icon
1143
+ appearance="tonal"
1144
+ scheme="on-surface"
1145
+ root-style=${L}
1146
+ size=${e.size}
1147
+ icon="close"
1148
+ data-action="close"
1149
+ aria-label=${e.closeLabel}
1150
+ title=${e.closeLabel}
1151
+ @click=${()=>e.component.closePanel("close")}
1152
+ ></sf-button-icon>
1153
+ ${e.address?n.html`
1154
+ <sf-button-copy
1155
+ appearance="tonal"
1156
+ root-style=${L}
1157
+ size=${e.size}
1158
+ icon="link"
1159
+ value=${e.addressUrl}
1160
+ label=${e.copyLinkLabel}
1161
+ success-text=${e.linkCopiedLabel}
1162
+ duration=${String(e.copyFeedbackMs)}
1163
+ data-action="copy-link"
1164
+ .propertyView=${e.component}
1165
+ @sf-copy-button-copied=${()=>e.component.announceAddressCopy(!0)}
1166
+ @sf-copy-button-copy-failed=${()=>e.component.announceAddressCopy(!1)}
1167
+ ></sf-button-copy>`:n.nothing}
1168
+ ${e.canOpenFullPage?n.html`
1169
+ <sf-button-icon
1170
+ appearance="tonal"
1171
+ scheme="on-surface"
1172
+ root-style=${L}
1173
+ size=${e.size}
1174
+ icon="open_in_full"
1175
+ aria-label=${e.openFullLabel}
1176
+ title=${e.openFullLabel}
1177
+ data-action="open-full"
1178
+ @click=${()=>e.component.openFullPage()}
1179
+ ></sf-button-icon>`:n.nothing}
1180
+ </div>
1181
+ `}function D(e,t){return!e.wide&&t.length>1&&null===e.phoneSection}function I(e,t,i){return t?n.html`
1182
+ <div class="sf-property-view-section-bar flex items-cross-center gap-1/4"
1183
+ data-section=${String(t.key)}>
1184
+ ${e.configuring?R(e,t):n.html`<i class="sf-icon" aria-hidden="true">${t.icon?String(t.icon):"folder"}</i>`}
1185
+ ${p(e,"section",String(t.key),String(t.label??t.key),"sf-property-view-section-title min-w-0")}
1186
+ <sf-button-icon
1187
+ size="1/2"
1188
+ appearance="link"
1189
+ scheme="secondary"
1190
+ icon="delete"
1191
+ data-action="remove-section"
1192
+ ?disabled=${i<2}
1193
+ title=${e.removeSectionText}
1194
+ aria-label=${e.removeSectionText}
1195
+ @click=${()=>e.component.removeSection(String(t.key))}
1196
+ ></sf-button-icon>
1197
+ </div>
1198
+ `:n.nothing}function R(e,t){const i=t.icon?String(t.icon):"",r=e.sectionIconChoices.map(e=>({kind:"icon",icon:e,text:e,value:e,ariaLabel:e,selected:e===i}));return n.html`
1199
+ <sf-dropdown
1200
+ class="sf-property-view-section-icon"
1201
+ size="1/2"
1202
+ layout="grid"
1203
+ columns="6"
1204
+ search="true"
1205
+ search-placeholder=${e.sectionIconText}
1206
+ aria-label=${e.sectionIconText}
1207
+ data-icon-for=${String(t.key)}
1208
+ value=${i}
1209
+ .options=${r}
1210
+ @change=${i=>e.component.setSectionIcon(String(t.key),i.detail?.value??"")}
1211
+ >
1212
+ <sf-button-icon
1213
+ slot="trigger"
1214
+ size="1/2"
1215
+ appearance="link"
1216
+ scheme="on-surface"
1217
+ icon=${i||"folder"}
1218
+ data-action="section-icon"
1219
+ title=${e.sectionIconText}
1220
+ aria-label=${e.sectionIconText}
1221
+ ></sf-button-icon>
1222
+ </sf-dropdown>
1223
+ `}function M(e){const t=e.viewProfiles??[];return t.length?n.html`
1224
+ <section class="sf-property-view-profiles flex flex-col gap-1/3">
1225
+ <h3 class="sf-property-view-profiles-title">${e.viewProfileLabel}</h3>
1226
+ ${t.map(t=>n.html`
1227
+ <div class="sf-property-view-profile flex items-cross-center gap-1/3" data-profile=${t.id}>
1228
+ <sf-input
1229
+ size="1/2"
1230
+ appearance="bordered"
1231
+ class="flex-auto min-w-0"
1232
+ value=${t.label}
1233
+ aria-label=${t.label}
1234
+ data-action="rename-profile"
1235
+ @change=${i=>e.component.renameViewProfile(t.id,i.detail?.value??i.target?.value??"")}
1236
+ ></sf-input>
1237
+ <span class="sf-property-view-profile-scope color-on-surface-variant">
1238
+ ${t.shared?e.sharedLayerText:e.personalLayerText}
1239
+ </span>
1240
+ <sf-button-icon
1241
+ size="1/2"
1242
+ appearance="link"
1243
+ scheme="secondary"
1244
+ icon="close"
1245
+ data-action="delete-profile"
1246
+ ?disabled=${!e.canDeleteViewProfile(t.id)}
1247
+ title=${e.canDeleteViewProfile(t.id)?e.deleteViewText:e.lastSharedViewText}
1248
+ aria-label=${e.deleteViewText}
1249
+ @click=${()=>e.component.deleteViewProfile(t.id)}
1250
+ ></sf-button-icon>
1251
+ </div>
1252
+ `)}
1253
+ ${e.namingView?N(e):n.html`
1254
+ <sf-button
1255
+ appearance="outline"
1256
+ scheme="on-surface"
1257
+ size="1/2"
1258
+ text=${e.addViewText}
1259
+ data-action="add-profile"
1260
+ @click=${()=>e.component.startNamingView()}
1261
+ ></sf-button>`}
1262
+ </section>
1263
+ `:n.nothing}function N(e){const t=t=>{const i=t.target?.closest?.(".sf-property-view-rename")?.querySelector("sf-input");e.component.createViewProfile(i?.value??"")};return n.html`
1264
+ <span class="sf-property-view-rename flex items-cross-center gap-1/4 min-w-0" data-action="new-profile">
1265
+ <sf-input
1266
+ size="1/2"
1267
+ appearance="bordered"
1268
+ autofocus
1269
+ root-class="flex-auto min-w-0"
1270
+ data-action="new-profile-input"
1271
+ aria-label=${e.addViewText}
1272
+ placeholder=${e.newViewText}
1273
+ @keydown=${i=>{"Enter"===i.key&&t(i),"Escape"===i.key&&e.component.cancelNamingView()}}
1274
+ ></sf-input>
1275
+ <sf-button-icon
1276
+ size="1/2"
1277
+ appearance="link"
1278
+ scheme="on-surface"
1279
+ icon="check"
1280
+ data-action="new-profile-save"
1281
+ title=${e.saveNameText}
1282
+ aria-label=${e.saveNameText}
1283
+ @click=${t}
1284
+ ></sf-button-icon>
1285
+ <sf-button-icon
1286
+ size="1/2"
1287
+ appearance="link"
1288
+ scheme="on-surface"
1289
+ icon="close"
1290
+ data-action="new-profile-cancel"
1291
+ title=${e.cancelNameText}
1292
+ aria-label=${e.cancelNameText}
1293
+ @click=${()=>e.component.cancelNamingView()}
1294
+ ></sf-button-icon>
1295
+ </span>
1296
+ `}function U(e,t){return n.html`
1297
+ <div class="sf-property-view-additions flex flex-col items-cross-stretch gap-1">
1298
+ <sf-button
1299
+ appearance="outline"
1300
+ scheme="on-surface"
1301
+ size=${e.size}
1302
+ text=${e.addGroupText}
1303
+ data-action="add-group"
1304
+ @click=${()=>e.component.addGroup(t?String(t.key):"")}
1305
+ ></sf-button>
1306
+ ${B(e)?n.nothing:j(e)}
1307
+ ${M(e)}
1308
+ </div>
1309
+ `}function j(e){return n.html`
1310
+ <sf-button
1311
+ appearance="outline"
1312
+ scheme="on-surface"
1313
+ size="1/2"
1314
+ text=${e.addSectionText}
1315
+ data-action="add-section"
1316
+ @click=${()=>e.component.addSection()}
1317
+ ></sf-button>
1318
+ `}function B(e){const t=l(e,e.sections);return Boolean(e.wide&&"list"===e.sectionsAs&&(t.length>1||e.configuring))}const G=["w-1/3","w-2/3","w-1/2","w-3/4","w-2/5"],H=3,W=3;function K(e){const t=e=>n.html`<div class="sf-skeleton sf-skeleton--animation-pulse" aria-hidden="true"><div class="sf-skeleton-text sf-skeleton-text--size-1 ${G[e%G.length]}"></div></div>`,i=n.html`<div class="sf-property-view-tabs sf-property-view-tabs--skeleton flex items-cross-center gap-2" aria-hidden="true" data-sf-skeleton="tabs" data-sections-as=${e.sectionsAs}>${[0,1,2].map(e=>n.html`<div class="flex-none" style="inline-size: 6rem">${t(e+3)}</div>`)}</div>`;return n.html`${i}<div class="sf-property-view-loading flex flex-col gap-4" data-state="loading">${Array.from({length:H},(e,i)=>n.html`<section class="sf-property-view-group bg-surface-0 flex flex-col gap-2" aria-busy="true"><header class="sf-property-view-group-header flex items-cross-center content-main-between gap-2"><div class="flex-1">${t(i)}</div></header>${Array.from({length:W},(e,r)=>t(i+r+1))}</section>`)}<span class="sr-only" role="status">${e.message}</span></div>`}function J(e){const t=e.loadFailure;return n.html`<sf-empty-state kind=${t.kind} size=${"1/2"===e.size?"1/2":"1"} heading-level="2"
1319
+ text=${t.text||n.nothing}
1320
+ .actions=${"error"===t.kind?null:[]}
1321
+ @sf-empty-state-action=${t=>{"retry"===t.detail?.id&&e.component.load("retry")}}></sf-empty-state>`}function Y(e,t=!1,i=!0){if(e.loading)return K(e);if(e.loadFailure)return J(e);const r=l(e,e.sections),s=r.find(t=>String(t.key)===e.selectedSection)??r[0]??null;return n.html`
1322
+ <div class="sf-property-view-status" role="status" aria-live="polite" ?hidden=${!e.message}>
1323
+ ${e.message}
1324
+ </div>
1325
+ ${!e.panel&&(e.hasHostSlot("actions")||e.hasHostSlot("menu")||e.panelMenuItems.length)?n.html`
1326
+ <div class="sf-property-view-host-actions flex flex-wrap items-cross-center justify-end gap-1">
1327
+ ${e.hasHostSlot("actions")?e.hostSlot("actions"):n.nothing}
1328
+ ${q(e)}
1329
+ </div>`:n.nothing}
1330
+ ${D(e,r)?b(e,r):n.nothing}
1331
+ ${e.wide&&"tabs"===e.sectionsAs&&r.length>1?k(e,r):n.nothing}
1332
+ <div class="sf-property-view-layout"
1333
+ style=${`--sf-property-view--sections-width: ${e.sectionsWidth};${e.panel?"":_(e)}`}
1334
+ data-sections=${String(r.length)}
1335
+ data-screen=${D(e,r)?"sections":"groups"}>
1336
+ ${!e.wide&&r.length>1&&null!==e.phoneSection?y(e):n.nothing}
1337
+ ${B(e)&&!t?w(e,r):n.nothing}
1338
+ ${e.isEmptyRecord&&!e.configuring?n.html`<p class="sf-property-view-empty-record color-on-surface-variant"
1339
+ role="status">${e.emptyRecordText}</p>`:n.nothing}
1340
+ ${D(e,r)?n.nothing:e.configuring?n.html`
1341
+ <div class="sf-property-view-body flex-auto min-w-0 flex flex-col gap-4">
1342
+ ${I(e,s,r.length)}
1343
+ <sf-sortable
1344
+ class="sf-property-view-groups flex flex-col gap-4"
1345
+ group="group"
1346
+ accepts="group"
1347
+ id=${`group:${s?String(s.key):""}`}
1348
+ label=${String(s?.label??s?.key??"")}
1349
+ >${l(e,s?.groups).map(t=>v(e,s,t))}</sf-sortable>
1350
+ ${U(e,s)}
1351
+ ${E(e)}
1352
+ </div>`:n.html`
1353
+ <div class="sf-property-view-body flex-auto min-w-0 flex flex-col gap-4">
1354
+ ${e.visible(s?.groups).map(t=>v(e,s,t))}
1355
+ </div>`}
1356
+ </div>
1357
+ ${i&&e.hasHostSlot("footer")?n.html`<div class="sf-property-view-host-footer flex flex-wrap items-cross-center gap-2">${e.hostSlot("footer")}</div>`:n.nothing}
1358
+ ${i?C(e):n.nothing}
1359
+ `}function X(e){if(!e.panel)return Y(e);const t=B(e);return n.html`
1360
+ <sf-drawer
1361
+ ?open=${e.panelOpen}
1362
+ placement="inline-end"
1363
+ modal="true"
1364
+ overlay="true"
1365
+ size=${e.wide?e.panelSize:"full"}
1366
+ width=${e.wide&&e.drawerWidth||n.nothing}
1367
+ gutter="var(--sf-space-1)"
1368
+ panel-style=${`--sf-drawer-background: var(--sf-surface-1); --sf-property-view--sections-width: ${e.sectionsWidth}; scrollbar-gutter: auto;${_(e)}`}
1369
+ show-close="false"
1370
+ close-label=${e.closeLabel}
1371
+ close-on-esc="false"
1372
+ label=${e.panelLabel||e.recordId||""}
1373
+ >
1374
+ ${O(e)}
1375
+ <div class="sf-property-view-panel relative flex flex-col gap-2${t?" sf-property-view-panel--railed":""}${P(e)?" sf-property-view-panel--fills":""}"
1376
+ style=${P(e)?`--sf-property-view--edge-room: calc(${e.edgeControlCount} * ${e.edgeControlWidth} + ${e.edgeControlCount-1} * var(--sf-space-1\\/2));`:n.nothing}
1377
+ data-record-id=${e.recordId||""}
1378
+ data-stack-depth=${String(e.stackDepth)}
1379
+ data-stacked=${e.isTopPanel?"false":"true"}
1380
+ >
1381
+ ${V(e)}
1382
+ <div class="sf-property-view-scroll flex-auto min-h-0 ${t?"flex":"flex flex-col"}">
1383
+ ${t?n.html`
1384
+ ${w(e,l(e,e.sections))}
1385
+ <div class="sf-property-view-frame flex-auto min-w-0 flex flex-col gap-2">
1386
+ ${Y(e,!0,!1)}
1387
+ </div>`:Y(e,!1,!1)}
1388
+ </div>
1389
+ ${C(e,{panel:!0})}
1390
+ </div>
1391
+ </sf-drawer>
1392
+ `}r()}catch(Z){r(Z)}})},"2f31b00ad99a"(e,t,i){i.a(e,async(e,r)=>{try{i.d(t,{x:()=>p});var n=i("e577837dd70a"),s=e([n]),o=s.then?(await s)():s;n=o[0];const a=/^(\d{4})-(\d{2})-(\d{2})$/u,l=/^(\d{2}):(\d{2})(?::(\d{2})(?:\.\d+)?)?$/u,c=/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.\d+)?)?(Z|[+-]\d{2}:?\d{2})?$/u,u=new Set(["date","datetime","time"]);function d(e,t){const i=a.exec(t);if(i)return new Date(Number(i[1]),Number(i[2])-1,Number(i[3]));const r=l.exec(t);if(r)return"time"===e?new Date(2e3,0,1,Number(r[1]),Number(r[2]),Number(r[3]??0)):null;const n=c.exec(t);if(!n)return null;if(n[7]){const e=new Date(t.replace(" ","T"));return Number.isNaN(e.getTime())?null:e}return new Date(Number(n[1]),Number(n[2])-1,Number(n[3]),Number(n[4]),Number(n[5]),Number(n[6]??0))}function p(e,t,i){if(!u.has(e)||"string"!=typeof t||!t.trim())return"";const r=t.trim(),s=d(e,r);if(!s)return"";const o="date"!==e&&!a.test(r);return"time"===e?(0,n.Yq)(s,{date:null,time:"short",node:i}):(0,n.Yq)(s,{date:"medium",time:o?"short":null,node:i})}r()}catch(h){r(h)}})},"17828be41e75"(e,t,i){i.d(t,{C3:()=>s,l6:()=>o});const r=e=>String(e).replace(/-([a-z0-9])/gu,(e,t)=>t.toUpperCase());function n(e,t){if(null==e||!0===e||e===t)return{outcome:"applied"};if(!1===e)return{outcome:"refused",reason:"refused"};if("object"==typeof e&&"string"==typeof e.outcome)return e;if("object"==typeof e&&"string"==typeof e.answer){const{answer:t,reason:i,message:r}=e;return{...e,outcome:t,...i?{reason:i}:{},...r?{message:r}:{}}}return{outcome:"applied",value:e}}function s(e,t){const i=e.prototype;for(const[e,s]of Object.entries(t.actions||{})){const t=r(e),o=i[t];if("function"!=typeof o||o.sfAction)continue;const a=Object.keys(s?.with||{}),l=function(...e){if(1===e.length&&(null!==(t=e[0])&&"object"==typeof t&&!Array.isArray(t)&&Object.getPrototypeOf(t)===Object.prototype)){const t=Object.keys(e[0]);a.length||t.length?a.length&&t.length&&t.every(e=>a.includes(e)||a.map(r).includes(e))&&(e=a.map(t=>e[0][t]??e[0][r(t)])):e=[]}var t;const i=o.apply(this,e);return i&&"function"==typeof i.then?i.then(e=>n(e,this)):n(i,this)};l.sfAction=!0,Object.defineProperty(i,t,{configurable:!0,writable:!0,value:l})}return e}function o(e,t){const i=e.prototype;for(const[e,n]of Object.entries(t.settings||{})){if(["list","object","state"].includes(n?.type))continue;const t=r(e);let s=i,o=null;for(;s&&s!==globalThis.HTMLElement?.prototype&&s!==Object.prototype&&(o=Object.getOwnPropertyDescriptor(s,t),!o);)s=Object.getPrototypeOf(s);o&&o.get&&!o.set&&Object.defineProperty(s,t,{configurable:!0,get:o.get,set(t){"boolean"===n.type?!0===t||""===t||"true"===t?this.setAttribute(e,""):!1===t&&!0===n.default?this.setAttribute(e,"false"):this.removeAttribute(e):null==t?this.removeAttribute(e):this.setAttribute(e,String(t))}})}return e}},"5b7d7695b41b"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("element-manifest",1):new Promise((e,t)=>globalThis.addEventListener("sf-runtime-ready",()=>globalThis.SF.runtimeModule("element-manifest",1).then(e,t),{once:!0}))},"18003344cff0"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("layer-stack",1):new Promise((e,t)=>globalThis.addEventListener("sf-runtime-ready",()=>globalThis.SF.runtimeModule("layer-stack",1).then(e,t),{once:!0}))},"073f05ff1a81"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("lit/directives/unsafe-html.js",1):new Promise((e,t)=>globalThis.addEventListener("sf-runtime-ready",()=>globalThis.SF.runtimeModule("lit/directives/unsafe-html.js",1).then(e,t),{once:!0}))},"2a080a730149"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("lit",1):new Promise((e,t)=>globalThis.addEventListener("sf-runtime-ready",()=>globalThis.SF.runtimeModule("lit",1).then(e,t),{once:!0}))},"43090d1c8307"(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("page-language",1):new Promise((e,t)=>globalThis.addEventListener("sf-runtime-ready",()=>globalThis.SF.runtimeModule("page-language",1).then(e,t),{once:!0}))},deb1a4d61565(e){e.exports=globalThis.SF&&globalThis.SF.runtimeModule?globalThis.SF.runtimeModule("smart-base",1):new Promise((e,t)=>globalThis.addEventListener("sf-runtime-ready",()=>globalThis.SF.runtimeModule("smart-base",1).then(e,t),{once:!0}))},"4284cc8c32e1"(e){e.exports=JSON.parse('{"$comment":"Dated aliases of sf-view-properties for the shim (core/js/aliases.js, standard §16 item 20).","component":"sf-view-properties","since":"2026-10-27","remove_after":"2026-12-01","aliases":[{"from":"aria-label","to":null,"kind":"attribute","component":"sf-view-properties","since":"2026-10-27","remove_after":"2026-12-01","mode":"host-attribute","section":"§3.1, §4.8","note":"stays a host attribute, read for the accessible name; no shim"},{"from":"sf-property-view-open-record","to":"sf-property-view-open","kind":"event","component":"sf-view-properties","since":"2026-10-27","remove_after":"2026-12-01","mode":"same-detail","cancelable":false,"section":"§8, vocabulary §5 open","note":"ui-admin listens to it (src/polygon.ts:124); the detail {field, value, answer} is unchanged"},{"from":"sf-property-view-delete-record","to":"sf-property-view-delete","kind":"event","component":"sf-view-properties","since":"2026-10-27","remove_after":"2026-12-01","mode":"same-detail","cancelable":false,"section":"§8, vocabulary §5 delete","note":"the detail {record_id, collection, revision, answer} is unchanged"},{"from":"sf-property-view","to":"sf-view-properties","kind":"tag","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","section":"rename plan R2 (ui-control RENAME-PLAN-2026-11-03), naming decision 2026-11-02","note":"the element is sf-view-properties; sf-property-view is a subclass defined beside it until the date"},{"from":"sf-property-view-close","to":"sf-view-properties-close","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-open-full","to":"sf-view-properties-open-full","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-saved","to":"sf-view-properties-saved","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-failed","to":"sf-view-properties-failed","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-open","to":"sf-view-properties-open","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-delete","to":"sf-view-properties-delete","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-created","to":"sf-view-properties-created","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-cancel","to":"sf-view-properties-cancel","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-state","to":"sf-view-properties-state","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-address-copy","to":"sf-view-properties-address-copy","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"},{"from":"sf-property-view-favourite","to":"sf-view-properties-favourite","kind":"event","component":"sf-view-properties","since":"2026-11-03","remove_after":"2027-01-01","mode":"same-detail","section":"§8","note":"the event name carries the tag"}]}')},"3ea81f4c3c20"(e){e.exports=JSON.parse('{"id":"smart.view-properties","tag":"sf-view-properties","version":"1.10.0","kind":"leaf","implements":["record-view@1"],"settings":{"add-field-text":{"type":"string","default-from":"runtime.add-field-text"},"add-group-text":{"type":"string","default-from":"runtime.add-group-text"},"add-section-text":{"type":"string","default-from":"runtime.add-section-text"},"back-label":{"type":"string","default-from":"runtime.back-label"},"cancel-configuring-text":{"type":"string","default-from":"runtime.cancel-configuring-text"},"cancel-name-text":{"type":"string","default-from":"runtime.cancel-name-text"},"cancel-text":{"type":"string","default-from":"runtime.cancel-text"},"changed-text":{"type":"string","default-from":"runtime.changed-text"},"close-label":{"type":"string","default-from":"runtime.close-label"},"collection":{"type":"string","default":""},"collection-icon":{"type":"icon","default":""},"collection-label":{"type":"string","default":""},"configure-hint-narrow-text":{"type":"string","default-from":"runtime.configure-hint-narrow-text"},"configure-hint-text":{"type":"string","default-from":"runtime.configure-hint-text"},"configure-text":{"type":"string","default-from":"runtime.configure-text"},"conflict-text":{"type":"string","default-from":"runtime.conflict-text"},"copy-link-label":{"type":"string","default-from":"runtime.copy-link-label"},"delete-text":{"type":"string","default-from":"runtime.delete-text"},"done-configuring-text":{"type":"string","default-from":"runtime.done-configuring-text"},"edit-text":{"type":"string","default-from":"runtime.edit-text"},"empty-record-text":{"type":"string","default-from":"runtime.empty-record-text"},"empty-text":{"type":"string","default-from":"runtime.empty-text"},"errors-text":{"type":"string","default-from":"runtime.errors-text"},"favourite":{"type":"boolean","default":false},"favourite-label":{"type":"string","default-from":"runtime.favourite-label"},"field-label-text":{"type":"string","default-from":"runtime.field-label-text"},"field-settings-text":{"type":"string","default-from":"runtime.field-settings-text"},"hidden-text":{"type":"string","default-from":"runtime.hidden-text"},"hide-rare-text":{"type":"string","default-from":"runtime.hide-rare-text"},"hint-text":{"type":"string","default-from":"runtime.hint-text"},"in-this-group-text":{"type":"string","default-from":"runtime.in-this-group-text"},"inherited-text":{"type":"string","default-from":"runtime.inherited-text"},"link-copied-label":{"type":"string","default-from":"runtime.link-copied-label"},"menu-label":{"type":"string","default-from":"runtime.menu-label"},"move-down-text":{"type":"string","default-from":"runtime.move-down-text"},"move-up-text":{"type":"string","default-from":"runtime.move-up-text"},"new-group-title":{"type":"string","default-from":"runtime.new-group-title"},"new-section-title":{"type":"string","default-from":"runtime.new-section-title"},"no-match-text":{"type":"string","default-from":"runtime.no-match-text"},"open-full-label":{"type":"string","default-from":"runtime.open-full-label"},"panel":{"type":"boolean","default":false},"panel-label":{"type":"string","default":""},"panel-size":{"type":"enum","values":["1/2","1","2","full"],"default":"1"},"size":{"type":"enum","values":["1","1/2"],"default":"1"},"mode":{"type":"enum","values":["view","auto","edit","create"],"default":"auto"},"panel-width":{"type":"string","default":""},"personal-layer-text":{"type":"string","default-from":"runtime.personal-layer-text"},"rare-text":{"type":"string","default-from":"runtime.rare-text"},"record-id":{"type":"id","default":""},"remove-field-text":{"type":"string","default-from":"runtime.remove-field-text"},"remove-group-text":{"type":"string","default-from":"runtime.remove-group-text"},"remove-section-text":{"type":"string","default-from":"runtime.remove-section-text"},"rename-text":{"type":"string","default-from":"runtime.rename-text"},"reset-view-ask-text":{"type":"string","default-from":"runtime.reset-view-ask-text"},"reset-view-text":{"type":"string","default-from":"runtime.reset-view-text"},"save-name-text":{"type":"string","default-from":"runtime.save-name-text"},"save-text":{"type":"string","default-from":"runtime.save-text"},"section-icon-text":{"type":"string","default-from":"runtime.section-icon-text"},"section-icons":{"type":"string","default":""},"sections-as":{"type":"enum","values":["list","tabs"],"default":"list"},"sections-label":{"type":"string","default-from":"runtime.sections-label"},"shared-layer-text":{"type":"string","default-from":"runtime.shared-layer-text"},"show-rare":{"type":"boolean","default":false},"show-rare-text":{"type":"string","default-from":"runtime.show-rare-text"},"shown-text":{"type":"string","default-from":"runtime.shown-text"},"unplaced-hint-text":{"type":"string","default-from":"runtime.unplaced-hint-text"},"unplaced-title":{"type":"string","default-from":"runtime.unplaced-title"},"variant-text":{"type":"string","default-from":"runtime.variant-text"},"view-conflict-text":{"type":"string","default-from":"runtime.view-conflict-text"},"view-denied-text":{"type":"string","default-from":"runtime.view-denied-text"},"width-text":{"type":"string","default-from":"runtime.width-text"},"view-profile-label":{"type":"string","default-from":"runtime.view-profile-label"},"add-view-text":{"type":"string","default-from":"runtime.add-view-text"},"new-view-text":{"type":"string","default-from":"runtime.new-view-text"},"delete-view-text":{"type":"string","default-from":"runtime.delete-view-text"},"last-shared-view-text":{"type":"string","default-from":"runtime.last-shared-view-text"},"full":{"type":"boolean","default":false},"open":{"type":"boolean","default":true}},"values":{"revision":{"type":"string"},"section":{"type":"string"}},"events":{"close":{"carries":{"reason":{"type":"enum","values":["close","escape","cancelled","deleted","api"]},"record_id":{"type":"id","nullable":true},"unsaved_fields":{"type":"list"}},"cancelable":true},"open-full":{"carries":{"id":"id","address":"string","record_id":{"type":"id","nullable":true}}},"saved":{"carries":{"id":"id","revision":{"type":"string","optional":true}}},"failed":{"carries":{"reason":"string","message":{"type":"string","optional":true}}},"open":{"carries":{"field":"string","value":"object","answer":"string"}},"delete":{"carries":{"collection":"string","revision":"string","answer":"string","record_id":{"type":"id","nullable":true}}},"created":{"carries":{"collection":{"type":"string","nullable":true},"record_id":{"type":"id","nullable":true}}},"cancel":{"carries":{"mode":{"type":"enum","values":["auto","edit","create"]},"scope":{"type":"enum","values":["group"],"optional":true},"section":{"type":"string","optional":true},"group":{"type":"string","optional":true}}},"state":{"carries":{"state":"string","message":"string"},"own-verb":true},"address-copy":{"carries":{},"own-verb":true},"favourite":{"carries":{"collection":{"type":"string","nullable":true},"favourite":"boolean","record_id":{"type":"id","nullable":true}},"own-verb":true}},"actions":{"refresh":{},"load":{"with":{"reason":{"type":"string","optional":true}}},"edit-group":{"with":{"section":"string","group":"string"}},"cancel-edit":{},"save-group":{"with":{"options":{"type":"object","optional":true}},"concurrency":"drop"},"select-section":{"with":{"key":"string"}},"close-panel":{"with":{"reason":{"type":"string","optional":true}}},"copy-address":{},"open-full-page":{},"confirm-save":{},"cancel-confirmation":{}},"port":{"id":"simai.property-view-port","version":"1.17.0","contract":"src/core/contracts/ports/simai.property-view-port/1.17.0/port.json"},"presentation":{"skeleton":{"file":"skeleton.html","late":[]}},"css-variables":{"--sf-property-view--sections-width":{"type":"length","state":"default"},"--sf-property-view--title-size":{"type":"length","state":"default"},"--sf-property-view--label-size":{"type":"length","state":"default"},"--sf-property-view--value-size":{"type":"length","state":"default"},"--sf-property-view--group-size":{"type":"length","state":"default"},"--sf-property-view--edge-room":{"type":"length","state":"open"}},"host-states":{"data-state":"string","aria-busy":"string"}}')},"99fb492b7fba"(e){e.exports=JSON.parse('{"title":"Property view","events":{"state":{"label":"Record state"},"address-copy":{"label":"Address copied"},"favourite":{"label":"Favourite"}},"runtime":{"add-field-text":"Add a field","add-group-text":"Add an area","add-section-text":"Add a section","add-view-text":"Add a view","back-label":"Back","cancel-configuring-text":"Cancel","cancel-name-text":"Leave the name","cancel-text":"Cancel","changed-text":"Fields changed","close-label":"Close","configure-hint-narrow-text":"Drag fields between groups. Applied at once.","configure-hint-text":"Drag fields between groups and onto a section on the left. Applied at once.","configure-text":"Arrange the view","confirm-save-text":"Confirm and save","conflict-text":"The record changed; read it again","copy-link-label":"Copy link","create-text":"Create","delete-text":"Delete","delete-view-text":"Remove the view","done-configuring-text":"Done","edit-text":"edit","empty-record-text":"This record has nothing to show","empty-text":"not filled in","errors-text":"Errors","favourite-label":"Favourite","field-label-text":"Name","field-settings-text":"Field settings","hidden-text":"Hide","hide-rare-text":"Hide rare fields","hint-text":"Hint","in-this-group-text":"In this area","inherited-text":"by default","keep-editing-text":"Keep editing","last-shared-view-text":"The only view everyone has","link-copied-label":"Link copied","menu-label":"More","move-down-text":"Move down","move-up-text":"Move up","new-group-title":"New area","new-section-title":"New section","new-view-text":"New view","no-match-text":"Nothing matches","open-full-label":"Open as a page","personal-layer-text":"Personal","rare-text":"rare","read-only-text":"You can only view this record","remove-field-text":"Remove from this area","remove-group-text":"Remove this area","remove-section-text":"Remove this section","rename-text":"Rename","reset-view-ask-text":"Reset the whole view?","reset-view-text":"Reset","save-failed-text":"The save failed","save-name-text":"Save the name","save-text":"Save","section-icon-text":"Section glyph","sections-label":"Sections","shared-layer-text":"Everyone\'s","show-rare-text":"Show rare fields","shown-text":"Shown","state-load-failed":"The record could not be read","state-loading":"Reading the record","state-port-not-connected":"The record port is not connected","state-unavailable":"The record is unavailable","unplaced-hint-text":"Fields this view does not show. Drag one into a group to place it, or drag a field here to take it out.","unplaced-title":"Not placed","variant-text":"Template","view-conflict-text":"The view changed and was read again","view-denied-text":"You may not change this layer","view-profile-label":"View","view-reset-failed-text":"The view could not be reset","view-save-failed-text":"The view could not be saved","width-text":"Full width"}}')},d614908e644f(e){e.exports=JSON.parse('{"title":"Запись","events":{"state":{"label":"Состояние записи"},"address-copy":{"label":"Адрес скопирован"},"favourite":{"label":"Избранное"}},"runtime":{"add-field-text":"Добавить поле","add-group-text":"Добавить область","add-section-text":"Добавить раздел","add-view-text":"Добавить вид","back-label":"Назад","cancel-configuring-text":"Отменить","cancel-name-text":"Оставить название","cancel-text":"Отменить","changed-text":"Изменено полей","close-label":"Закрыть","configure-hint-narrow-text":"Перетаскивайте поля между группами. Применяется сразу.","configure-hint-text":"Перетаскивайте поля между группами и на разделы слева. Применяется сразу.","configure-text":"Настроить вид","confirm-save-text":"Подтвердить и сохранить","conflict-text":"Запись изменилась, обновите её","copy-link-label":"Копировать ссылку","create-text":"Создать","delete-text":"Удалить","delete-view-text":"Удалить вид","done-configuring-text":"Готово","edit-text":"изменить","empty-record-text":"В этой записи нечего показать","empty-text":"не заполнено","errors-text":"Ошибок","favourite-label":"В избранное","field-label-text":"Название","field-settings-text":"Настройки поля","hidden-text":"Скрыть","hide-rare-text":"Скрыть редкие поля","hint-text":"Подсказка","in-this-group-text":"В этой области","inherited-text":"по умолчанию","keep-editing-text":"Вернуться к правке","last-shared-view-text":"Единственный общий вид","link-copied-label":"Ссылка скопирована","menu-label":"Ещё","move-down-text":"Ниже","move-up-text":"Выше","new-group-title":"Новая область","new-section-title":"Новый раздел","new-view-text":"Новый вид","no-match-text":"Ничего не найдено","open-full-label":"Открыть на всю страницу","personal-layer-text":"Персональный","rare-text":"редкое","read-only-text":"Эту запись можно только смотреть","remove-field-text":"Убрать из области","remove-group-text":"Удалить область","remove-section-text":"Удалить раздел","rename-text":"Переименовать","reset-view-ask-text":"Сбросить весь вид?","reset-view-text":"Сбросить","save-failed-text":"Не удалось сохранить","save-name-text":"Сохранить название","save-text":"Сохранить","section-icon-text":"Значок раздела","sections-label":"Разделы","shared-layer-text":"Для всех","show-rare-text":"Показать редкие поля","shown-text":"Показывать","state-load-failed":"Не удалось загрузить запись","state-loading":"Загрузка записи","state-port-not-connected":"Порт записи не подключён","state-unavailable":"Запись недоступна","unplaced-hint-text":"Поля, которых нет в этом виде. Перетащите поле в группу, чтобы разместить, или сюда, чтобы убрать.","unplaced-title":"Не размещённые","variant-text":"Вид","view-conflict-text":"Вид изменился, он перезагружен","view-denied-text":"Нет права менять этот слой","view-profile-label":"Вид","view-reset-failed-text":"Не удалось сбросить вид","view-save-failed-text":"Не удалось сохранить вид","width-text":"На всю ширину"}}')}};const t={};function i(r){const n=t[r];if(void 0!==n)return n.exports;const s=t[r]={exports:{}};return e[r](s,s.exports,i),s.exports}(()=>{const e="function"==typeof Symbol,t=e?Symbol("webpack queues"):"__webpack_queues__",r=e?Symbol("webpack exports"):"__webpack_exports__",n=e?Symbol("webpack error"):"__webpack_error__",s=e=>{e?.d<1&&(e.d=1,e.forEach(e=>e.r--),e.forEach(e=>e.r--?e.r++:e()))};i.a=(e,i,o)=>{let a;o&&((a=[]).d=-1);const l=new Set,c=e.exports;let u,d,p;const h=new Promise((e,t)=>{p=t,d=e});h[r]=c,h[t]=e=>(a&&e(a),l.forEach(e),h.catch(e=>{})),e.exports=h;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=>{o[r]=e,s(i)},e=>{o[n]=e,s(i)});const o={};return o[t]=e=>e(i),o}}const i={};return i[t]=e=>{},i[r]=e,i}))(e);const o=()=>u.map(e=>{if(e[n])throw e[n];return e[r]}),c=new Promise(e=>{i=()=>e(o),i.r=0;const r=e=>e!==a&&!l.has(e)&&(l.add(e),e&&!e.d&&(i.r++,e.push(i)));u.map(e=>e[t](r))});return i.r?c:o()},e=>(e?p(h[n]=e):d(c),s(a))),a?.d<0&&(a.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 r=0;r<t.length;){var n=t[r++],s=t[r++];i.o(e,n)?0===s&&r++:0===s?Object.defineProperty(e,n,{enumerable:!0,value:t[r++]}):Object.defineProperty(e,n,{enumerable:!0,get:s})}else for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);i("7623a90f1816")})();