optikos 0.4.0 → 0.5.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 (221) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/build.js +2 -0
  3. package/dist/build.js.map +7 -0
  4. package/dist/chunk-2CVMT3IW.js +3 -0
  5. package/dist/chunk-2CVMT3IW.js.map +7 -0
  6. package/dist/{chunk-JSEI44A7.js → chunk-2I4Y7I7C.js} +2 -2
  7. package/dist/{chunk-U5L76VVB.js → chunk-2I7HDIOU.js} +2 -2
  8. package/dist/{chunk-FCJI2JF7.js → chunk-34KVSA2V.js} +2 -2
  9. package/dist/{chunk-NQV4THNE.js → chunk-37PYJAA2.js} +2 -2
  10. package/dist/{chunk-JJLOUMCJ.js → chunk-3OA3P37P.js} +2 -2
  11. package/dist/chunk-5G5PHOZJ.js +2 -0
  12. package/dist/chunk-5G5PHOZJ.js.map +7 -0
  13. package/dist/{chunk-S2CMWKVB.js → chunk-5GCTM37D.js} +2 -2
  14. package/dist/chunk-632LUU52.js +2 -0
  15. package/dist/chunk-632LUU52.js.map +7 -0
  16. package/dist/{chunk-RG6SHPHF.js → chunk-6NP4AEV4.js} +2 -2
  17. package/dist/{chunk-6LJK4QWF.js → chunk-6PPRYSLN.js} +2 -2
  18. package/dist/{chunk-NNR2FNHG.js → chunk-6TZJO2G2.js} +2 -2
  19. package/dist/{chunk-DWTDNKXX.js → chunk-A36JFIA3.js} +2 -2
  20. package/dist/{chunk-CFGCB37K.js → chunk-ADHKL2GM.js} +2 -2
  21. package/dist/{chunk-CMV3F6HR.js → chunk-AJN66F32.js} +2 -2
  22. package/dist/{chunk-DWA45BWR.js → chunk-BRGT4O6Q.js} +2 -2
  23. package/dist/{chunk-643FOYQB.js → chunk-BTGJ3MP4.js} +2 -2
  24. package/dist/{chunk-AT7VFZRB.js → chunk-CXZKCBQE.js} +2 -2
  25. package/dist/{chunk-PMOXLQ72.js → chunk-DLRGB5NY.js} +2 -2
  26. package/dist/chunk-DY3ZYMXD.js +2 -0
  27. package/dist/chunk-DY3ZYMXD.js.map +7 -0
  28. package/dist/{chunk-M7FNPRV4.js → chunk-EO777UIN.js} +2 -2
  29. package/dist/{chunk-HLS5FI55.js → chunk-ESRS5ZQV.js} +2 -2
  30. package/dist/{chunk-YDX2PCVL.js → chunk-FNZI6MFG.js} +2 -2
  31. package/dist/{chunk-6PZPBPAD.js → chunk-FSR6BDVO.js} +2 -2
  32. package/dist/{chunk-ZSPJZ3ZH.js → chunk-G26R2F3W.js} +2 -2
  33. package/dist/chunk-GLAY4RJF.js +2 -0
  34. package/dist/chunk-GLAY4RJF.js.map +7 -0
  35. package/dist/{chunk-SWCB2GMN.js → chunk-GNKVLJ5H.js} +2 -2
  36. package/dist/chunk-IODSL7KU.js +2 -0
  37. package/dist/chunk-IODSL7KU.js.map +7 -0
  38. package/dist/{chunk-EXIADWI7.js → chunk-J2TCHWYD.js} +2 -2
  39. package/dist/{chunk-IUOEPAWG.js → chunk-J5BZAKC6.js} +2 -2
  40. package/dist/{chunk-5BMG5ZBY.js → chunk-JBOKM5YA.js} +2 -2
  41. package/dist/{chunk-N2LS4JD6.js → chunk-L6DOWGBO.js} +2 -2
  42. package/dist/{chunk-2YRQULDC.js → chunk-LHWY6G6Q.js} +2 -2
  43. package/dist/chunk-LLHDEUIA.js +2 -0
  44. package/dist/chunk-LLHDEUIA.js.map +7 -0
  45. package/dist/chunk-LXWCTCZV.js +2 -0
  46. package/dist/chunk-LXWCTCZV.js.map +7 -0
  47. package/dist/{chunk-FPU53CCV.js → chunk-M7HLHGQV.js} +2 -2
  48. package/dist/{chunk-J5QPFJ7M.js → chunk-MGSCSS7X.js} +2 -2
  49. package/dist/{chunk-NJ5IFOPR.js → chunk-MM2OC66E.js} +2 -2
  50. package/dist/{chunk-MNSDGJKA.js → chunk-MQEALOU3.js} +2 -2
  51. package/dist/{chunk-TQPQ4UEA.js → chunk-NAUSRVB6.js} +2 -2
  52. package/dist/{chunk-JLKIHXZP.js → chunk-NEVDHDJ4.js} +2 -2
  53. package/dist/{chunk-F4HZUAKM.js → chunk-NWHH3CYH.js} +2 -2
  54. package/dist/{chunk-3FCIZKIN.js → chunk-OADWLPSF.js} +2 -2
  55. package/dist/{chunk-4AZ44KV4.js → chunk-OB3VIRQR.js} +2 -2
  56. package/dist/{chunk-4CWYF4O7.js → chunk-QOSTS5I3.js} +2 -2
  57. package/dist/{chunk-XR677UYD.js → chunk-QVBDBGS4.js} +2 -2
  58. package/dist/{chunk-GEBAYD6N.js → chunk-RMATRKXV.js} +2 -2
  59. package/dist/{chunk-Z6L55FTN.js → chunk-S3ILIWSW.js} +2 -2
  60. package/dist/{chunk-P4O57S6N.js → chunk-SEUIIPHS.js} +2 -2
  61. package/dist/{chunk-R32HPK7R.js → chunk-T5OGUCY2.js} +2 -2
  62. package/dist/chunk-TMBGEZSD.js +2 -0
  63. package/dist/chunk-TMBGEZSD.js.map +7 -0
  64. package/dist/{chunk-5PWPAN62.js → chunk-TVO3Z2BM.js} +2 -2
  65. package/dist/{chunk-UQRQH2JW.js → chunk-U25QSLAH.js} +2 -2
  66. package/dist/chunk-UCWICDYG.js +2 -0
  67. package/dist/{chunk-YXOKWCYS.js.map → chunk-UCWICDYG.js.map} +4 -4
  68. package/dist/{chunk-C3MWS7P2.js → chunk-UL364TLO.js} +2 -2
  69. package/dist/chunk-UUAGMZD2.js +2 -0
  70. package/dist/chunk-UUAGMZD2.js.map +7 -0
  71. package/dist/chunk-XFDNXSU5.js +2 -0
  72. package/dist/{chunk-XQHATUKN.js.map → chunk-XFDNXSU5.js.map} +3 -3
  73. package/dist/{chunk-XFIREDWO.js → chunk-XNRZJP4E.js} +2 -2
  74. package/dist/{chunk-JE56CJX2.js → chunk-Z6HZY2YG.js} +2 -2
  75. package/dist/{chunk-3QRA3XOA.js → chunk-ZEIE2OCQ.js} +2 -2
  76. package/dist/{chunk-4S3HRFQB.js → chunk-ZLYZFHEN.js} +2 -2
  77. package/dist/components/breadcrumb.js +1 -1
  78. package/dist/components/button.js +1 -1
  79. package/dist/components/chart.js +1 -1
  80. package/dist/components/chat.js +1 -1
  81. package/dist/components/checkbox.js +1 -1
  82. package/dist/components/checkboxgroup.js +1 -1
  83. package/dist/components/codeviewer.js +1 -1
  84. package/dist/components/columntotals.js +2 -0
  85. package/dist/components/columntotals.js.map +7 -0
  86. package/dist/components/combobox.js +1 -1
  87. package/dist/components/dataview.js +1 -1
  88. package/dist/components/datefield.js +1 -1
  89. package/dist/components/daterangefield.js +1 -1
  90. package/dist/components/datetimefield.js +1 -1
  91. package/dist/components/dial.js +1 -1
  92. package/dist/components/dropdown.js +1 -1
  93. package/dist/components/exportbar.js +2 -0
  94. package/dist/components/exportbar.js.map +7 -0
  95. package/dist/components/fieldgroup.js +1 -1
  96. package/dist/components/fieldlist.js +1 -1
  97. package/dist/components/filterbuilder.js +1 -1
  98. package/dist/components/form.js +1 -1
  99. package/dist/components/formactions.js +1 -1
  100. package/dist/components/grid.js +1 -1
  101. package/dist/components/gridexport.js +1 -1
  102. package/dist/components/grouping.js +1 -1
  103. package/dist/components/imagefield.js +1 -1
  104. package/dist/components/inputgroup.js +1 -1
  105. package/dist/components/lookupfield.js +1 -1
  106. package/dist/components/maskfield.js +1 -1
  107. package/dist/components/menu.js +1 -1
  108. package/dist/components/messagebox.js +1 -1
  109. package/dist/components/navmenu.js +1 -1
  110. package/dist/components/numberfield.js +1 -1
  111. package/dist/components/panel.js +1 -1
  112. package/dist/components/pickerfield.js +1 -1
  113. package/dist/components/radiogroup.js +1 -1
  114. package/dist/components/searchgrid.js +1 -1
  115. package/dist/components/secretfield.js +1 -1
  116. package/dist/components/select.js +1 -1
  117. package/dist/components/shortcuts.js +1 -1
  118. package/dist/components/slider.js +1 -1
  119. package/dist/components/stat.js +1 -1
  120. package/dist/components/stepform.js +1 -1
  121. package/dist/components/suggestfield.js +1 -1
  122. package/dist/components/table.js +1 -1
  123. package/dist/components/textarea.js +1 -1
  124. package/dist/components/textfield.js +1 -1
  125. package/dist/components/timeentry.js +2 -0
  126. package/dist/components/timeentry.js.map +7 -0
  127. package/dist/components/timefield.js +1 -1
  128. package/dist/components/timeline.js +1 -1
  129. package/dist/components/toast.js +1 -1
  130. package/dist/components/toggle.js +1 -1
  131. package/dist/components/viewmanager.js +1 -1
  132. package/dist/components/widget.js +1 -1
  133. package/dist/components/window.js +1 -1
  134. package/dist/core.js +1 -1
  135. package/dist/css/columntotals.css +56 -0
  136. package/dist/css/exportbar.css +9 -0
  137. package/dist/css/grid.css +12 -0
  138. package/dist/css/grouping.css +7 -0
  139. package/dist/css/timeentry.css +116 -0
  140. package/dist/css/timeline.css +45 -0
  141. package/dist/data.js +1 -1
  142. package/dist/dev.js +1 -1
  143. package/dist/dev.js.map +2 -2
  144. package/dist/index.js +4 -4
  145. package/dist/index.js.map +1 -1
  146. package/dist/optikos.css +248 -0
  147. package/dist/types/build/build.d.ts +49 -0
  148. package/dist/types/build/index.d.ts +1 -0
  149. package/dist/types/components/columntotals.d.ts +1 -0
  150. package/dist/types/components/data/columntotals/columntotals.d.ts +24 -0
  151. package/dist/types/components/data/exportbar/exportbar.d.ts +24 -0
  152. package/dist/types/components/data/grid/footer.d.ts +6 -0
  153. package/dist/types/components/data/grouping/controls.d.ts +27 -0
  154. package/dist/types/components/data/grouping/grouping.d.ts +15 -3
  155. package/dist/types/components/data/timeentry/timeentry.d.ts +37 -0
  156. package/dist/types/components/data/timeline/timeline.d.ts +3 -0
  157. package/dist/types/components/exportbar.d.ts +1 -0
  158. package/dist/types/components/timeentry.d.ts +1 -0
  159. package/dist/types/data/column.d.ts +4 -2
  160. package/dist/types/index.d.ts +4 -0
  161. package/dist/ui.js +1 -1
  162. package/package.json +5 -1
  163. package/dist/chunk-2HNQ2XRY.js +0 -2
  164. package/dist/chunk-2HNQ2XRY.js.map +0 -7
  165. package/dist/chunk-BJWREA76.js +0 -2
  166. package/dist/chunk-BJWREA76.js.map +0 -7
  167. package/dist/chunk-GFFZTFQH.js +0 -2
  168. package/dist/chunk-GFFZTFQH.js.map +0 -7
  169. package/dist/chunk-SB4ICXBV.js +0 -2
  170. package/dist/chunk-SB4ICXBV.js.map +0 -7
  171. package/dist/chunk-XQHATUKN.js +0 -2
  172. package/dist/chunk-YXOKWCYS.js +0 -2
  173. /package/dist/{chunk-JSEI44A7.js.map → chunk-2I4Y7I7C.js.map} +0 -0
  174. /package/dist/{chunk-U5L76VVB.js.map → chunk-2I7HDIOU.js.map} +0 -0
  175. /package/dist/{chunk-FCJI2JF7.js.map → chunk-34KVSA2V.js.map} +0 -0
  176. /package/dist/{chunk-NQV4THNE.js.map → chunk-37PYJAA2.js.map} +0 -0
  177. /package/dist/{chunk-JJLOUMCJ.js.map → chunk-3OA3P37P.js.map} +0 -0
  178. /package/dist/{chunk-S2CMWKVB.js.map → chunk-5GCTM37D.js.map} +0 -0
  179. /package/dist/{chunk-RG6SHPHF.js.map → chunk-6NP4AEV4.js.map} +0 -0
  180. /package/dist/{chunk-6LJK4QWF.js.map → chunk-6PPRYSLN.js.map} +0 -0
  181. /package/dist/{chunk-NNR2FNHG.js.map → chunk-6TZJO2G2.js.map} +0 -0
  182. /package/dist/{chunk-DWTDNKXX.js.map → chunk-A36JFIA3.js.map} +0 -0
  183. /package/dist/{chunk-CFGCB37K.js.map → chunk-ADHKL2GM.js.map} +0 -0
  184. /package/dist/{chunk-CMV3F6HR.js.map → chunk-AJN66F32.js.map} +0 -0
  185. /package/dist/{chunk-DWA45BWR.js.map → chunk-BRGT4O6Q.js.map} +0 -0
  186. /package/dist/{chunk-643FOYQB.js.map → chunk-BTGJ3MP4.js.map} +0 -0
  187. /package/dist/{chunk-AT7VFZRB.js.map → chunk-CXZKCBQE.js.map} +0 -0
  188. /package/dist/{chunk-PMOXLQ72.js.map → chunk-DLRGB5NY.js.map} +0 -0
  189. /package/dist/{chunk-M7FNPRV4.js.map → chunk-EO777UIN.js.map} +0 -0
  190. /package/dist/{chunk-HLS5FI55.js.map → chunk-ESRS5ZQV.js.map} +0 -0
  191. /package/dist/{chunk-YDX2PCVL.js.map → chunk-FNZI6MFG.js.map} +0 -0
  192. /package/dist/{chunk-6PZPBPAD.js.map → chunk-FSR6BDVO.js.map} +0 -0
  193. /package/dist/{chunk-ZSPJZ3ZH.js.map → chunk-G26R2F3W.js.map} +0 -0
  194. /package/dist/{chunk-SWCB2GMN.js.map → chunk-GNKVLJ5H.js.map} +0 -0
  195. /package/dist/{chunk-EXIADWI7.js.map → chunk-J2TCHWYD.js.map} +0 -0
  196. /package/dist/{chunk-IUOEPAWG.js.map → chunk-J5BZAKC6.js.map} +0 -0
  197. /package/dist/{chunk-5BMG5ZBY.js.map → chunk-JBOKM5YA.js.map} +0 -0
  198. /package/dist/{chunk-N2LS4JD6.js.map → chunk-L6DOWGBO.js.map} +0 -0
  199. /package/dist/{chunk-2YRQULDC.js.map → chunk-LHWY6G6Q.js.map} +0 -0
  200. /package/dist/{chunk-FPU53CCV.js.map → chunk-M7HLHGQV.js.map} +0 -0
  201. /package/dist/{chunk-J5QPFJ7M.js.map → chunk-MGSCSS7X.js.map} +0 -0
  202. /package/dist/{chunk-NJ5IFOPR.js.map → chunk-MM2OC66E.js.map} +0 -0
  203. /package/dist/{chunk-MNSDGJKA.js.map → chunk-MQEALOU3.js.map} +0 -0
  204. /package/dist/{chunk-TQPQ4UEA.js.map → chunk-NAUSRVB6.js.map} +0 -0
  205. /package/dist/{chunk-JLKIHXZP.js.map → chunk-NEVDHDJ4.js.map} +0 -0
  206. /package/dist/{chunk-F4HZUAKM.js.map → chunk-NWHH3CYH.js.map} +0 -0
  207. /package/dist/{chunk-3FCIZKIN.js.map → chunk-OADWLPSF.js.map} +0 -0
  208. /package/dist/{chunk-4AZ44KV4.js.map → chunk-OB3VIRQR.js.map} +0 -0
  209. /package/dist/{chunk-4CWYF4O7.js.map → chunk-QOSTS5I3.js.map} +0 -0
  210. /package/dist/{chunk-XR677UYD.js.map → chunk-QVBDBGS4.js.map} +0 -0
  211. /package/dist/{chunk-GEBAYD6N.js.map → chunk-RMATRKXV.js.map} +0 -0
  212. /package/dist/{chunk-Z6L55FTN.js.map → chunk-S3ILIWSW.js.map} +0 -0
  213. /package/dist/{chunk-P4O57S6N.js.map → chunk-SEUIIPHS.js.map} +0 -0
  214. /package/dist/{chunk-R32HPK7R.js.map → chunk-T5OGUCY2.js.map} +0 -0
  215. /package/dist/{chunk-5PWPAN62.js.map → chunk-TVO3Z2BM.js.map} +0 -0
  216. /package/dist/{chunk-UQRQH2JW.js.map → chunk-U25QSLAH.js.map} +0 -0
  217. /package/dist/{chunk-C3MWS7P2.js.map → chunk-UL364TLO.js.map} +0 -0
  218. /package/dist/{chunk-XFIREDWO.js.map → chunk-XNRZJP4E.js.map} +0 -0
  219. /package/dist/{chunk-JE56CJX2.js.map → chunk-Z6HZY2YG.js.map} +0 -0
  220. /package/dist/{chunk-3QRA3XOA.js.map → chunk-ZEIE2OCQ.js.map} +0 -0
  221. /package/dist/{chunk-4S3HRFQB.js.map → chunk-ZLYZFHEN.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as f}from"./chunk-BCVOUMJJ.js";import{a as d}from"./chunk-TIPK3SCJ.js";import{c as m}from"./chunk-L5SQQFO7.js";import{e as p}from"./chunk-4AA4FQEM.js";import{f as c}from"./chunk-UDXO3KM3.js";import{b as a}from"./chunk-PZSHOSOS.js";import{f as l}from"./chunk-S4QD5NID.js";var h=class extends c{baseCls="op-dataview";store;itemsEl;emptyEl;pager;selected=new Set;active=0;anchor=-1;offStore;build(){let t=this.config,e=a("div",this.baseCls,{role:"listbox","aria-multiselectable":t.selection==="multi"?"true":null});return this.itemsEl=a("div","op-dataview__items"),this.emptyEl=a("div","op-dataview__empty"),e.append(this.itemsEl,this.emptyEl),t.itemWidth&&e.style.setProperty("--op-dataview-item-width",t.itemWidth),t.gap&&e.style.setProperty("--op-dataview-gap",t.gap),t.paging&&(this.pager=new f({cls:"op-dataview__pager"}),e.append(this.pager.el)),e}onRender(){let t=this.config;this.bindStore(t.store??new m({data:t.data??[]})),this.listen(this.itemsEl,"click",e=>this.onClick(e,"item-click")),this.listen(this.itemsEl,"dblclick",e=>this.onClick(e,"item-dblclick")),this.listen(this.itemsEl,"keydown",e=>this.onKey(e)),this.listen(this.itemsEl,"focusin",e=>{let i=this.indexOf(e);i>=0&&this.setActive(i,!1)}),this.pager&&(this.pager.setStore(this.store),this.store.pageSize||this.store.setPageSize(t.pageSize??24)),this.own(()=>this.pager?.destroy()),this.paint(!0)}notifyMount(){super.notifyMount(),this.pager?.notifyMount()}bindStore(t){this.offStore?.(),this.store=t;let e=t.subscribe(s=>this.rendered&&this.paint(["load","page","filter","sort"].includes(s.type))),i=t.on("loading",s=>this.setLoading(s));this.offStore=()=>(e(),i()),this.own(()=>this.offStore?.())}setStore(t){this.config.store=t,this.selected.clear(),this.active=0,this.rendered&&(this.bindStore(t),this.pager?.setStore(t),this.paint())}getStore(){return this.render(),this.store}paint(t=!1){let e=this.config;for(let s of this.selected)this.store.indexOf(s)<0&&this.selected.delete(s);this.active=Math.min(this.active,Math.max(0,this.store.count-1));let i=e.selection??"single";this.itemsEl.replaceChildren(...this.store.getRange().map((s,o)=>{let n=a("div",`op-dataview__item${this.selected.has(s)?" is-selected":""}${o===this.active?" is-active":""}${e.itemCls?` ${e.itemCls(s)}`:""}`,{role:"option",id:`${this.id}-i${o}`,"data-i":o,tabindex:o===this.active?0:-1,"aria-selected":i==="none"?null:String(this.selected.has(s))});return n.append(e.renderer(s,o)),n})),t&&e.stagger!==!1&&p(this.items(),{dy:8}),this.emptyEl.textContent=e.emptyText??l("empty"),this.emptyEl.hidden=this.store.count>0,this.el.classList.toggle("is-empty",this.store.count===0)}refresh(){this.rendered&&this.paint()}items(){return Array.from(this.itemsEl.children)}indexOf(t){let e=t.target.closest(".op-dataview__item");return e?Number(e.dataset.i):-1}columns(){let t=this.items();return t.length?Math.max(1,t.filter(e=>e.offsetTop===t[0].offsetTop).length):1}getSelection(){return[...this.selected]}select(t,e={}){let i=typeof t=="number"?this.store.getAt(t):t,s=this.config.selection??"single";!i||s==="none"||((s==="single"||!e.add)&&this.selected.clear(),this.selected.add(i),this.changed())}selectAll(){this.config.selection==="multi"&&(this.store.each(t=>this.selected.add(t)),this.changed())}deselectAll(){this.selected.size&&(this.selected.clear(),this.changed())}changed(){this.paintSelection(),this.emit("select",this.getSelection())}paintSelection(){this.items().forEach((t,e)=>{let i=this.selected.has(this.store.getAt(e));t.classList.toggle("is-selected",i),(this.config.selection??"single")!=="none"&&t.setAttribute("aria-selected",String(i))})}pick(t,e){let i=this.config.selection??"single",s=this.store.getAt(t);if(!(!s||i==="none")){if(i==="multi"&&e.shiftKey&&this.anchor>=0){this.selected.clear();for(let o of this.store.getRange(Math.min(this.anchor,t),Math.max(this.anchor,t)+1))this.selected.add(o)}else i==="multi"&&(e.ctrlKey||e.metaKey)?(this.selected.delete(s)||this.selected.add(s),this.anchor=t):(this.selected.clear(),this.selected.add(s),this.anchor=t);this.changed()}}onClick(t,e){let i=this.indexOf(t),s=this.store.getAt(i);if(!s)return;let o=t.target.closest("[data-op-action]");if(o){e==="item-click"&&this.emit("item-action",o.dataset.opAction,s,t);return}e==="item-click"&&(this.setActive(i,!1),this.pick(i,t)),this.emit(e,s,i,t)}setActive(t,e=!0){this.active=t,this.items().forEach((i,s)=>{i.tabIndex=s===t?0:-1,i.classList.toggle("is-active",s===t)}),e&&this.items()[t]?.focus(),this.emit("active-change",t)}focusItem(t){this.render(),this.setActive(Math.max(0,Math.min(t,this.store.count-1)))}onKey(t){let e=this.store.count;if(!e)return;let i=this.columns(),s=Math.max(1,Math.floor(this.el.clientHeight/Math.max(1,this.items()[0]?.offsetHeight??1))||3),o=this.active,n={ArrowRight:Math.min(e-1,o+1),ArrowLeft:Math.max(0,o-1),ArrowDown:Math.min(e-1,o+i),ArrowUp:Math.max(0,o-i),Home:0,End:e-1,PageDown:Math.min(e-1,o+i*s),PageUp:Math.max(0,o-i*s)},r=this.config.selection??"single";t.key in n?(t.preventDefault(),this.setActive(n[t.key]),r==="multi"&&t.shiftKey?this.pick(n[t.key],{shiftKey:!0}):r==="single"&&!t.ctrlKey&&this.pick(n[t.key],{}),r==="multi"&&t.shiftKey&&this.anchor<0&&(this.anchor=o)):t.key===" "?(t.preventDefault(),this.pick(o,r==="multi"?{ctrlKey:!0}:{})):t.key==="Enter"?this.emit("item-activate",this.store.getAt(o),o):(t.key==="a"||t.key==="A")&&(t.ctrlKey||t.metaKey)&&r==="multi"&&(t.preventDefault(),this.selectAll())}onDestroy(){this.pager?.destroy()}};d("dataview",h);export{h as a};
2
- //# sourceMappingURL=chunk-AT7VFZRB.js.map
1
+ import{a as f}from"./chunk-BCVOUMJJ.js";import{a as d}from"./chunk-TIPK3SCJ.js";import{f as c}from"./chunk-UDXO3KM3.js";import{b as a}from"./chunk-PZSHOSOS.js";import{c as m}from"./chunk-L5SQQFO7.js";import{f as l}from"./chunk-S4QD5NID.js";import{e as p}from"./chunk-4AA4FQEM.js";var h=class extends c{baseCls="op-dataview";store;itemsEl;emptyEl;pager;selected=new Set;active=0;anchor=-1;offStore;build(){let t=this.config,e=a("div",this.baseCls,{role:"listbox","aria-multiselectable":t.selection==="multi"?"true":null});return this.itemsEl=a("div","op-dataview__items"),this.emptyEl=a("div","op-dataview__empty"),e.append(this.itemsEl,this.emptyEl),t.itemWidth&&e.style.setProperty("--op-dataview-item-width",t.itemWidth),t.gap&&e.style.setProperty("--op-dataview-gap",t.gap),t.paging&&(this.pager=new f({cls:"op-dataview__pager"}),e.append(this.pager.el)),e}onRender(){let t=this.config;this.bindStore(t.store??new m({data:t.data??[]})),this.listen(this.itemsEl,"click",e=>this.onClick(e,"item-click")),this.listen(this.itemsEl,"dblclick",e=>this.onClick(e,"item-dblclick")),this.listen(this.itemsEl,"keydown",e=>this.onKey(e)),this.listen(this.itemsEl,"focusin",e=>{let i=this.indexOf(e);i>=0&&this.setActive(i,!1)}),this.pager&&(this.pager.setStore(this.store),this.store.pageSize||this.store.setPageSize(t.pageSize??24)),this.own(()=>this.pager?.destroy()),this.paint(!0)}notifyMount(){super.notifyMount(),this.pager?.notifyMount()}bindStore(t){this.offStore?.(),this.store=t;let e=t.subscribe(s=>this.rendered&&this.paint(["load","page","filter","sort"].includes(s.type))),i=t.on("loading",s=>this.setLoading(s));this.offStore=()=>(e(),i()),this.own(()=>this.offStore?.())}setStore(t){this.config.store=t,this.selected.clear(),this.active=0,this.rendered&&(this.bindStore(t),this.pager?.setStore(t),this.paint())}getStore(){return this.render(),this.store}paint(t=!1){let e=this.config;for(let s of this.selected)this.store.indexOf(s)<0&&this.selected.delete(s);this.active=Math.min(this.active,Math.max(0,this.store.count-1));let i=e.selection??"single";this.itemsEl.replaceChildren(...this.store.getRange().map((s,o)=>{let n=a("div",`op-dataview__item${this.selected.has(s)?" is-selected":""}${o===this.active?" is-active":""}${e.itemCls?` ${e.itemCls(s)}`:""}`,{role:"option",id:`${this.id}-i${o}`,"data-i":o,tabindex:o===this.active?0:-1,"aria-selected":i==="none"?null:String(this.selected.has(s))});return n.append(e.renderer(s,o)),n})),t&&e.stagger!==!1&&p(this.items(),{dy:8}),this.emptyEl.textContent=e.emptyText??l("empty"),this.emptyEl.hidden=this.store.count>0,this.el.classList.toggle("is-empty",this.store.count===0)}refresh(){this.rendered&&this.paint()}items(){return Array.from(this.itemsEl.children)}indexOf(t){let e=t.target.closest(".op-dataview__item");return e?Number(e.dataset.i):-1}columns(){let t=this.items();return t.length?Math.max(1,t.filter(e=>e.offsetTop===t[0].offsetTop).length):1}getSelection(){return[...this.selected]}select(t,e={}){let i=typeof t=="number"?this.store.getAt(t):t,s=this.config.selection??"single";!i||s==="none"||((s==="single"||!e.add)&&this.selected.clear(),this.selected.add(i),this.changed())}selectAll(){this.config.selection==="multi"&&(this.store.each(t=>this.selected.add(t)),this.changed())}deselectAll(){this.selected.size&&(this.selected.clear(),this.changed())}changed(){this.paintSelection(),this.emit("select",this.getSelection())}paintSelection(){this.items().forEach((t,e)=>{let i=this.selected.has(this.store.getAt(e));t.classList.toggle("is-selected",i),(this.config.selection??"single")!=="none"&&t.setAttribute("aria-selected",String(i))})}pick(t,e){let i=this.config.selection??"single",s=this.store.getAt(t);if(!(!s||i==="none")){if(i==="multi"&&e.shiftKey&&this.anchor>=0){this.selected.clear();for(let o of this.store.getRange(Math.min(this.anchor,t),Math.max(this.anchor,t)+1))this.selected.add(o)}else i==="multi"&&(e.ctrlKey||e.metaKey)?(this.selected.delete(s)||this.selected.add(s),this.anchor=t):(this.selected.clear(),this.selected.add(s),this.anchor=t);this.changed()}}onClick(t,e){let i=this.indexOf(t),s=this.store.getAt(i);if(!s)return;let o=t.target.closest("[data-op-action]");if(o){e==="item-click"&&this.emit("item-action",o.dataset.opAction,s,t);return}e==="item-click"&&(this.setActive(i,!1),this.pick(i,t)),this.emit(e,s,i,t)}setActive(t,e=!0){this.active=t,this.items().forEach((i,s)=>{i.tabIndex=s===t?0:-1,i.classList.toggle("is-active",s===t)}),e&&this.items()[t]?.focus(),this.emit("active-change",t)}focusItem(t){this.render(),this.setActive(Math.max(0,Math.min(t,this.store.count-1)))}onKey(t){let e=this.store.count;if(!e)return;let i=this.columns(),s=Math.max(1,Math.floor(this.el.clientHeight/Math.max(1,this.items()[0]?.offsetHeight??1))||3),o=this.active,n={ArrowRight:Math.min(e-1,o+1),ArrowLeft:Math.max(0,o-1),ArrowDown:Math.min(e-1,o+i),ArrowUp:Math.max(0,o-i),Home:0,End:e-1,PageDown:Math.min(e-1,o+i*s),PageUp:Math.max(0,o-i*s)},r=this.config.selection??"single";t.key in n?(t.preventDefault(),this.setActive(n[t.key]),r==="multi"&&t.shiftKey?this.pick(n[t.key],{shiftKey:!0}):r==="single"&&!t.ctrlKey&&this.pick(n[t.key],{}),r==="multi"&&t.shiftKey&&this.anchor<0&&(this.anchor=o)):t.key===" "?(t.preventDefault(),this.pick(o,r==="multi"?{ctrlKey:!0}:{})):t.key==="Enter"?this.emit("item-activate",this.store.getAt(o),o):(t.key==="a"||t.key==="A")&&(t.ctrlKey||t.metaKey)&&r==="multi"&&(t.preventDefault(),this.selectAll())}onDestroy(){this.pager?.destroy()}};d("dataview",h);export{h as a};
2
+ //# sourceMappingURL=chunk-CXZKCBQE.js.map
@@ -1,2 +1,2 @@
1
- import{a as u}from"./chunk-3QRA3XOA.js";import{c as o}from"./chunk-DIOJGTUN.js";import{a as d}from"./chunk-TIPK3SCJ.js";import{b as c}from"./chunk-XQHATUKN.js";import{f as h}from"./chunk-UDXO3KM3.js";import{b as e}from"./chunk-PZSHOSOS.js";import{d as p,e as s,f as a}from"./chunk-S4QD5NID.js";s("en",{statUp:"up {n}",statDown:"down {n}",statFlat:"unchanged"});s("pt-BR",{statUp:"subiu {n}",statDown:"caiu {n}",statFlat:"sem varia\xE7\xE3o"});var l=class extends h{baseCls="op-stat";labelEl;valueEl;deltaEl;captionEl;chart;build(){return this.labelEl=e("div","op-stat__label"),this.valueEl=e("div","op-stat__value"),this.deltaEl=e("span","op-stat__delta"),this.captionEl=e("span","op-stat__caption"),e("div",this.baseCls,{},this.labelEl,e("div","op-stat__row",{},this.valueEl,this.deltaEl),this.captionEl)}onRender(){let t=this.config;this.setLabel(t.label),this.setValue(t.value??null),this.setDelta(t.delta),this.setCaption(t.caption??""),this.setTrend(t.trend)}setLabel(t){this.config.label=t,this.rendered&&this.labelEl.replaceChildren(...this.config.icon?[o(this.config.icon)]:[],t)}setValue(t){this.config.value=t,this.rendered&&(this.valueEl.textContent=t==null?"\u2014":typeof t=="number"?c(this.config.format??"number",t):t)}setDelta(t){if(this.config.delta=t,!this.rendered)return;let i=(t??0)>0,r=(this.config.good??"up")==="up"?i:!i;if(this.deltaEl.hidden=t==null,this.deltaEl.className=`op-stat__delta ${t?r?"is-good":"is-bad":"is-flat"}`,t==null)return;let n=new Intl.NumberFormat(p()._lang,{style:"percent",maximumFractionDigits:1,signDisplay:"exceptZero"}).format(t);this.deltaEl.replaceChildren(o(t?i?"arrow-up":"arrow-down":"minus"),e("span","",{"aria-hidden":"true"},n),e("span","op-sr-only",{},t?a(i?"statUp":"statDown",{n:n.replace(/^[+-]/,"")}):a("statFlat")))}setCaption(t){this.config.caption=t,this.rendered&&(this.captionEl.textContent=t,this.captionEl.hidden=!t)}setTrend(t){if(this.config.trend=t,!this.rendered)return;if(!t?.length)return this.chart?.destroy(),void(this.chart=void 0);let i=t.map((r,n)=>({i:n,v:r}));if(this.chart)return this.chart.setData(i);this.chart=new u({kind:"sparkline",x:"i",series:["v"],data:i,cls:"op-stat__spark",ariaLabel:this.config.label}),this.el.append(this.chart.el),this.chart.notifyMount()}onDestroy(){this.chart?.destroy()}};d("stat",l);export{l as a};
2
- //# sourceMappingURL=chunk-PMOXLQ72.js.map
1
+ import{a as u}from"./chunk-ZEIE2OCQ.js";import{c as o}from"./chunk-DIOJGTUN.js";import{a as d}from"./chunk-TIPK3SCJ.js";import{f as h}from"./chunk-UDXO3KM3.js";import{b as e}from"./chunk-PZSHOSOS.js";import{b as c}from"./chunk-XFDNXSU5.js";import{d as p,e as s,f as a}from"./chunk-S4QD5NID.js";s("en",{statUp:"up {n}",statDown:"down {n}",statFlat:"unchanged"});s("pt-BR",{statUp:"subiu {n}",statDown:"caiu {n}",statFlat:"sem varia\xE7\xE3o"});var l=class extends h{baseCls="op-stat";labelEl;valueEl;deltaEl;captionEl;chart;build(){return this.labelEl=e("div","op-stat__label"),this.valueEl=e("div","op-stat__value"),this.deltaEl=e("span","op-stat__delta"),this.captionEl=e("span","op-stat__caption"),e("div",this.baseCls,{},this.labelEl,e("div","op-stat__row",{},this.valueEl,this.deltaEl),this.captionEl)}onRender(){let t=this.config;this.setLabel(t.label),this.setValue(t.value??null),this.setDelta(t.delta),this.setCaption(t.caption??""),this.setTrend(t.trend)}setLabel(t){this.config.label=t,this.rendered&&this.labelEl.replaceChildren(...this.config.icon?[o(this.config.icon)]:[],t)}setValue(t){this.config.value=t,this.rendered&&(this.valueEl.textContent=t==null?"\u2014":typeof t=="number"?c(this.config.format??"number",t):t)}setDelta(t){if(this.config.delta=t,!this.rendered)return;let i=(t??0)>0,r=(this.config.good??"up")==="up"?i:!i;if(this.deltaEl.hidden=t==null,this.deltaEl.className=`op-stat__delta ${t?r?"is-good":"is-bad":"is-flat"}`,t==null)return;let n=new Intl.NumberFormat(p()._lang,{style:"percent",maximumFractionDigits:1,signDisplay:"exceptZero"}).format(t);this.deltaEl.replaceChildren(o(t?i?"arrow-up":"arrow-down":"minus"),e("span","",{"aria-hidden":"true"},n),e("span","op-sr-only",{},t?a(i?"statUp":"statDown",{n:n.replace(/^[+-]/,"")}):a("statFlat")))}setCaption(t){this.config.caption=t,this.rendered&&(this.captionEl.textContent=t,this.captionEl.hidden=!t)}setTrend(t){if(this.config.trend=t,!this.rendered)return;if(!t?.length)return this.chart?.destroy(),void(this.chart=void 0);let i=t.map((r,n)=>({i:n,v:r}));if(this.chart)return this.chart.setData(i);this.chart=new u({kind:"sparkline",x:"i",series:["v"],data:i,cls:"op-stat__spark",ariaLabel:this.config.label}),this.el.append(this.chart.el),this.chart.notifyMount()}onDestroy(){this.chart?.destroy()}};d("stat",l);export{l as a};
2
+ //# sourceMappingURL=chunk-DLRGB5NY.js.map
@@ -0,0 +1,2 @@
1
+ function l(t,p){let e=t.el.querySelector(".op-grid__footer");if(!e){e=Object.assign(document.createElement("div"),{className:"op-grid__footer"});let r=t.el.querySelector(".op-grid__pager");r?(r.before(e),e.append(r)):t.el.querySelector(".op-grid__table").after(e)}e.append(p);let o=e;return()=>{if(p.remove(),o.querySelector(".op-footer-group"))return;let r=o.querySelector(".op-grid__pager");r&&o.before(r),o.remove()}}export{l as a};
2
+ //# sourceMappingURL=chunk-DY3ZYMXD.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/data/grid/footer.ts"],
4
+ "sourcesContent": ["import type { Grid } from './grid';\n\n/**\n * The row under a grid where the pager and the plugins' icon buttons sit side by side. Each plugin adds its own group;\n * the last one out gives the pager back.\n */\nexport function addFooterGroup(grid: Grid, group: HTMLElement): () => void {\n let row = grid.el.querySelector<HTMLElement>('.op-grid__footer');\n if (!row) {\n row = Object.assign(document.createElement('div'), { className: 'op-grid__footer' });\n const pager = grid.el.querySelector<HTMLElement>('.op-grid__pager');\n if (pager) {\n pager.before(row);\n row.append(pager);\n } else grid.el.querySelector('.op-grid__table')!.after(row);\n }\n row.append(group);\n const mine = row;\n return () => {\n group.remove();\n if (mine.querySelector('.op-footer-group')) return;\n const pager = mine.querySelector<HTMLElement>('.op-grid__pager');\n if (pager) mine.before(pager);\n mine.remove();\n };\n}\n"],
5
+ "mappings": "AAMO,SAASA,EAAeC,EAAYC,EAAgC,CACzE,IAAIC,EAAMF,EAAK,GAAG,cAA2B,kBAAkB,EAC/D,GAAI,CAACE,EAAK,CACRA,EAAM,OAAO,OAAO,SAAS,cAAc,KAAK,EAAG,CAAE,UAAW,iBAAkB,CAAC,EACnF,IAAMC,EAAQH,EAAK,GAAG,cAA2B,iBAAiB,EAC9DG,GACFA,EAAM,OAAOD,CAAG,EAChBA,EAAI,OAAOC,CAAK,GACXH,EAAK,GAAG,cAAc,iBAAiB,EAAG,MAAME,CAAG,CAC5D,CACAA,EAAI,OAAOD,CAAK,EAChB,IAAMG,EAAOF,EACb,MAAO,IAAM,CAEX,GADAD,EAAM,OAAO,EACTG,EAAK,cAAc,kBAAkB,EAAG,OAC5C,IAAMD,EAAQC,EAAK,cAA2B,iBAAiB,EAC3DD,GAAOC,EAAK,OAAOD,CAAK,EAC5BC,EAAK,OAAO,CACd,CACF",
6
+ "names": ["addFooterGroup", "grid", "group", "row", "pager", "mine"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{a as d}from"./chunk-2YRQULDC.js";import{a as c}from"./chunk-TIPK3SCJ.js";import{e as l,f as s}from"./chunk-S4QD5NID.js";l("en",{time:"Enter a time like 09:30"});l("pt-BR",{time:"Informe uma hora, como 09:30"});var p=1440,u=n=>String(n).padStart(2,"0"),a=n=>Number(n.slice(0,2))*60+Number(n.slice(3)),f=n=>`${u(Math.floor(n/60))}:${u(n%60)}`,m=class extends d{baseCls="op-field op-textfield op-timefield";garbage=!1;emptyValue(){return null}isEmpty(e){return e==null}parse(e){this.garbage=!1;let t=e.trim();if(!t)return null;let r=/^(\d{1,2})(?::?(\d{2}))?$/.exec(t)??/^(\d)(\d{2})$/.exec(t),i=r&&Number(r[1]),o=r&&Number(r[2]??0);return!r||i>23||o>59?(this.garbage=!0,null):`${u(i)}:${u(o)}`}createControl(){let e=super.createControl();return this.input.setAttribute("inputmode","numeric"),this.listen(this.input,"blur",()=>{this.garbage||(this.input.value=this.display(this.value))}),e}onInput(){super.onInput(),this.garbage?this.setError(s("time")):this.error&&this.validate()}applyValue(e){super.applyValue(e),this.garbage=!1}check(){if(this.garbage)return s("time");let e=super.check(),t=this.value,{min:r,max:i}=this.config;return e||t==null?e:r&&i&&(t<r||t>i)?s("range",{min:r,max:i}):r&&t<r?s("min",{n:r}):i&&t>i?s("max",{n:i}):""}onKey(e){let t=e.key==="PageUp"||e.key==="PageDown";e.key==="ArrowUp"||e.key==="ArrowDown"||t?(e.preventDefault(),this.bump((e.key.endsWith("Up")?1:-1)*(t?60:this.config.step??1))):super.onKey(e)}bump(e){let{min:t,max:r}=this.config,i=(this.value?a(this.value):t?a(t):0)+e,o=t?a(t):0,g=r?a(r):p-1;this.setValue(f(t||r?Math.min(g,Math.max(o,i)):(i+p)%p))}setMin(e){this.config.min=e}setMax(e){this.config.max=e}};c("timefield",m);export{m as a};
2
- //# sourceMappingURL=chunk-M7FNPRV4.js.map
1
+ import{a as d}from"./chunk-LHWY6G6Q.js";import{a as c}from"./chunk-TIPK3SCJ.js";import{e as l,f as s}from"./chunk-S4QD5NID.js";l("en",{time:"Enter a time like 09:30"});l("pt-BR",{time:"Informe uma hora, como 09:30"});var p=1440,u=n=>String(n).padStart(2,"0"),a=n=>Number(n.slice(0,2))*60+Number(n.slice(3)),f=n=>`${u(Math.floor(n/60))}:${u(n%60)}`,m=class extends d{baseCls="op-field op-textfield op-timefield";garbage=!1;emptyValue(){return null}isEmpty(e){return e==null}parse(e){this.garbage=!1;let t=e.trim();if(!t)return null;let r=/^(\d{1,2})(?::?(\d{2}))?$/.exec(t)??/^(\d)(\d{2})$/.exec(t),i=r&&Number(r[1]),o=r&&Number(r[2]??0);return!r||i>23||o>59?(this.garbage=!0,null):`${u(i)}:${u(o)}`}createControl(){let e=super.createControl();return this.input.setAttribute("inputmode","numeric"),this.listen(this.input,"blur",()=>{this.garbage||(this.input.value=this.display(this.value))}),e}onInput(){super.onInput(),this.garbage?this.setError(s("time")):this.error&&this.validate()}applyValue(e){super.applyValue(e),this.garbage=!1}check(){if(this.garbage)return s("time");let e=super.check(),t=this.value,{min:r,max:i}=this.config;return e||t==null?e:r&&i&&(t<r||t>i)?s("range",{min:r,max:i}):r&&t<r?s("min",{n:r}):i&&t>i?s("max",{n:i}):""}onKey(e){let t=e.key==="PageUp"||e.key==="PageDown";e.key==="ArrowUp"||e.key==="ArrowDown"||t?(e.preventDefault(),this.bump((e.key.endsWith("Up")?1:-1)*(t?60:this.config.step??1))):super.onKey(e)}bump(e){let{min:t,max:r}=this.config,i=(this.value?a(this.value):t?a(t):0)+e,o=t?a(t):0,g=r?a(r):p-1;this.setValue(f(t||r?Math.min(g,Math.max(o,i)):(i+p)%p))}setMin(e){this.config.min=e}setMax(e){this.config.max=e}};c("timefield",m);export{m as a};
2
+ //# sourceMappingURL=chunk-EO777UIN.js.map
@@ -1,2 +1,2 @@
1
- import{c as l}from"./chunk-DIOJGTUN.js";import{a as n}from"./chunk-TIPK3SCJ.js";import{g as r}from"./chunk-4AA4FQEM.js";import{f as o}from"./chunk-UDXO3KM3.js";import{b as i}from"./chunk-PZSHOSOS.js";var s=class extends o{baseCls="op-button";tag="button";textEl;busyTextEl;iconHost;build(){let t=this.config,e=i("button","op-button",{type:t.htmlType??"button"});return this.iconHost=i("span","op-button__icon"),this.textEl=i("span","op-button__text"),this.busyTextEl=i("span","op-button__busy-text"),e.append(i("span","op-button__face",{},this.iconHost,this.textEl),i("span","op-button__busy",{},i("span","op-spinner op-button__spinner",{"aria-hidden":"true"}),this.busyTextEl)),e}onRender(){let t=this.config;this.setText(t.text??""),this.setIcon(t.icon??""),this.setVariant(t.variant??"default"),this.setPressed(!!t.pressed),!t.text&&!t.ariaLabel&&!t.tooltip&&console.warn("Optikos: icon-only Button needs ariaLabel"),this.listen(this.el,"click",e=>{if(t.disabled||t.loading||(t.toggle&&(this.setPressed(!t.pressed),this.emit("toggle",t.pressed)),this.emit("click",e)===!1))return e.preventDefault();t.handler?.(this,e)})}onDisabled(t){this.el.disabled=t}setText(t){this.config.text=t,this.rendered&&(this.textEl.textContent=t,this.textEl.hidden=!t,this.busyTextEl.textContent=this.config.loadingText??t)}setIcon(t){this.config.icon=t,this.rendered&&(this.iconHost.replaceChildren(...t?[l(t)]:[]),this.iconHost.hidden=!t,this.el.classList.toggle("op-button--icon-right",this.config.iconPos==="right"))}setVariant(t){if(this.config.variant=t,!!this.rendered)for(let e of["default","primary","danger","ghost"])this.el.classList.toggle(`op-button--${e}`,e===t)}setPressed(t){this.config.pressed=t,this.rendered&&(this.el.classList.toggle("is-pressed",t),this.config.toggle&&this.el.setAttribute("aria-pressed",String(t)))}setLoading(t){if(this.config.loading=t,typeof t=="string"&&this.setLoadingText(t),!!this.rendered){this.el.classList.toggle("is-loading",!!t);for(let e of["aria-busy","aria-disabled"])t?this.el.setAttribute(e,"true"):this.el.removeAttribute(e)}}setLoadingText(t){this.config.loadingText=t,this.rendered&&(this.busyTextEl.textContent=t)}pulse(){r(this.el)}click(){this.el.click()}};n("button",s);export{s as a};
2
- //# sourceMappingURL=chunk-HLS5FI55.js.map
1
+ import{c as l}from"./chunk-DIOJGTUN.js";import{a as n}from"./chunk-TIPK3SCJ.js";import{f as o}from"./chunk-UDXO3KM3.js";import{b as i}from"./chunk-PZSHOSOS.js";import{g as r}from"./chunk-4AA4FQEM.js";var s=class extends o{baseCls="op-button";tag="button";textEl;busyTextEl;iconHost;build(){let t=this.config,e=i("button","op-button",{type:t.htmlType??"button"});return this.iconHost=i("span","op-button__icon"),this.textEl=i("span","op-button__text"),this.busyTextEl=i("span","op-button__busy-text"),e.append(i("span","op-button__face",{},this.iconHost,this.textEl),i("span","op-button__busy",{},i("span","op-spinner op-button__spinner",{"aria-hidden":"true"}),this.busyTextEl)),e}onRender(){let t=this.config;this.setText(t.text??""),this.setIcon(t.icon??""),this.setVariant(t.variant??"default"),this.setPressed(!!t.pressed),!t.text&&!t.ariaLabel&&!t.tooltip&&console.warn("Optikos: icon-only Button needs ariaLabel"),this.listen(this.el,"click",e=>{if(t.disabled||t.loading||(t.toggle&&(this.setPressed(!t.pressed),this.emit("toggle",t.pressed)),this.emit("click",e)===!1))return e.preventDefault();t.handler?.(this,e)})}onDisabled(t){this.el.disabled=t}setText(t){this.config.text=t,this.rendered&&(this.textEl.textContent=t,this.textEl.hidden=!t,this.busyTextEl.textContent=this.config.loadingText??t)}setIcon(t){this.config.icon=t,this.rendered&&(this.iconHost.replaceChildren(...t?[l(t)]:[]),this.iconHost.hidden=!t,this.el.classList.toggle("op-button--icon-right",this.config.iconPos==="right"))}setVariant(t){if(this.config.variant=t,!!this.rendered)for(let e of["default","primary","danger","ghost"])this.el.classList.toggle(`op-button--${e}`,e===t)}setPressed(t){this.config.pressed=t,this.rendered&&(this.el.classList.toggle("is-pressed",t),this.config.toggle&&this.el.setAttribute("aria-pressed",String(t)))}setLoading(t){if(this.config.loading=t,typeof t=="string"&&this.setLoadingText(t),!!this.rendered){this.el.classList.toggle("is-loading",!!t);for(let e of["aria-busy","aria-disabled"])t?this.el.setAttribute(e,"true"):this.el.removeAttribute(e)}}setLoadingText(t){this.config.loadingText=t,this.rendered&&(this.busyTextEl.textContent=t)}pulse(){r(this.el)}click(){this.el.click()}};n("button",s);export{s as a};
2
+ //# sourceMappingURL=chunk-ESRS5ZQV.js.map
@@ -1,2 +1,2 @@
1
- import{c as n}from"./chunk-BQEFLPDA.js";import{a as d}from"./chunk-XR677UYD.js";import{a as s}from"./chunk-TIPK3SCJ.js";import{b as r,c as o}from"./chunk-PZSHOSOS.js";var l=class extends n{baseCls="op-field op-fieldgroup";labelEl;bodyEl;helpEl;errorEl;error="";constructor(e={}){super(e);for(let t of this.items)t.config.width!=null&&t.config.flex==null&&(t.config.flex="none");for(let t of this.getFields()){t.config.labelPos="top";for(let i of["invalid","valid"])t.on(i,()=>this.paintError())}}getBody(){return this.bodyEl}getFields(){return this.query(e=>e instanceof d)}getError(){return this.error}build(){let e=super.build();return this.labelEl=r("div","op-field__label",{id:o("op-fg")}),this.bodyEl=r("div","op-fieldgroup__body"),this.helpEl=r("div","op-field__help",{id:o("op-fg-help")}),this.errorEl=r("div","op-field__error",{id:o("op-fg-err"),role:"alert"}),e.append(this.labelEl,r("div","op-field__control",{},this.bodyEl),this.helpEl,this.errorEl),e.setAttribute("role","group"),e.setAttribute("aria-labelledby",this.labelEl.id),e}onRender(){let e=this.config;e.layout??={type:"hbox",stackBelow:e.stackBelow},super.onRender();let t=e.labelPos;for(let i=this.parent;!t&&i;i=i.parent)t=i.config.labelPos;this.el.classList.toggle("op-field--label-left",t==="left"),this.setLabel(e.label??""),this.setHelp(e.help??""),this.el.classList.toggle("is-required",!!e.required||this.getFields().some(i=>i.config.required)),this.listen(this.labelEl,"click",()=>this.getFields()[0]?.focus()),this.error="",this.paintError()}paintError(){let e=this.getFields().map(t=>t.getError()).find(Boolean)??"";e!==this.error&&(this.error=e,this.rendered&&(this.errorEl.textContent=e,this.el.classList.toggle("is-invalid",!!e),this.describe(),this.emit(e?"invalid":"valid",e)))}describe(){let e=[this.error&&this.errorEl.id,this.config.help&&this.helpEl.id].filter(Boolean);e.length?this.el.setAttribute("aria-describedby",e.join(" ")):this.el.removeAttribute("aria-describedby")}setLabel(e){this.config.label=e,this.rendered&&(this.labelEl.textContent=e,this.labelEl.hidden=!e)}setHelp(e){this.config.help=e,this.rendered&&(this.helpEl.textContent=e,this.helpEl.hidden=!e,this.describe())}};s("fieldgroup",l);export{l as a};
2
- //# sourceMappingURL=chunk-YDX2PCVL.js.map
1
+ import{c as n}from"./chunk-BQEFLPDA.js";import{a as d}from"./chunk-QVBDBGS4.js";import{a as s}from"./chunk-TIPK3SCJ.js";import{b as r,c as o}from"./chunk-PZSHOSOS.js";var l=class extends n{baseCls="op-field op-fieldgroup";labelEl;bodyEl;helpEl;errorEl;error="";constructor(e={}){super(e);for(let t of this.items)t.config.width!=null&&t.config.flex==null&&(t.config.flex="none");for(let t of this.getFields()){t.config.labelPos="top";for(let i of["invalid","valid"])t.on(i,()=>this.paintError())}}getBody(){return this.bodyEl}getFields(){return this.query(e=>e instanceof d)}getError(){return this.error}build(){let e=super.build();return this.labelEl=r("div","op-field__label",{id:o("op-fg")}),this.bodyEl=r("div","op-fieldgroup__body"),this.helpEl=r("div","op-field__help",{id:o("op-fg-help")}),this.errorEl=r("div","op-field__error",{id:o("op-fg-err"),role:"alert"}),e.append(this.labelEl,r("div","op-field__control",{},this.bodyEl),this.helpEl,this.errorEl),e.setAttribute("role","group"),e.setAttribute("aria-labelledby",this.labelEl.id),e}onRender(){let e=this.config;e.layout??={type:"hbox",stackBelow:e.stackBelow},super.onRender();let t=e.labelPos;for(let i=this.parent;!t&&i;i=i.parent)t=i.config.labelPos;this.el.classList.toggle("op-field--label-left",t==="left"),this.setLabel(e.label??""),this.setHelp(e.help??""),this.el.classList.toggle("is-required",!!e.required||this.getFields().some(i=>i.config.required)),this.listen(this.labelEl,"click",()=>this.getFields()[0]?.focus()),this.error="",this.paintError()}paintError(){let e=this.getFields().map(t=>t.getError()).find(Boolean)??"";e!==this.error&&(this.error=e,this.rendered&&(this.errorEl.textContent=e,this.el.classList.toggle("is-invalid",!!e),this.describe(),this.emit(e?"invalid":"valid",e)))}describe(){let e=[this.error&&this.errorEl.id,this.config.help&&this.helpEl.id].filter(Boolean);e.length?this.el.setAttribute("aria-describedby",e.join(" ")):this.el.removeAttribute("aria-describedby")}setLabel(e){this.config.label=e,this.rendered&&(this.labelEl.textContent=e,this.labelEl.hidden=!e)}setHelp(e){this.config.help=e,this.rendered&&(this.helpEl.textContent=e,this.helpEl.hidden=!e,this.describe())}};s("fieldgroup",l);export{l as a};
2
+ //# sourceMappingURL=chunk-FNZI6MFG.js.map
@@ -1,2 +1,2 @@
1
- import{a as C}from"./chunk-XR677UYD.js";import{a as E}from"./chunk-TIPK3SCJ.js";import{c as S}from"./chunk-6NCXO5ZP.js";import{c as m}from"./chunk-2UPUC4RK.js";import{b as l}from"./chunk-PZSHOSOS.js";var _=.35,w=y=>(String(y).split(".")[1]??"").length,x=class extends C{baseCls="op-field op-dial";face;tape;needle;readout;cache;pos=0;angle=0;shown="";stopGlide;constructor(t={}){super(t),this.value=this.original=this.normalize(this.value)}get isCircle(){return this.config.shape==="circle"}get items(){return this.cache??=this.buildItems()}fmt(t){return this.config.format?this.config.format(t):String(t)}buildItems(){let t=this.config,e;if(t.options)e=t.options.map(a=>typeof a=="object"?a:{value:a});else{let a=t.min??0,h=t.step||1,p=Math.max(1,Math.floor(((t.max??100)-a)/h+1e-9)+1),c=Math.max(w(h),w(a));e=Array.from({length:p},(D,f)=>({value:Number((a+f*h).toFixed(c))}))}let s=t.snap??(t.options?1:10),i=(a,h)=>s===!1?!1:Array.isArray(s)?s.includes(a):t.options?h%s===0:Math.abs(a/s-Math.round(a/s))<1e-9;return e.map((a,h)=>({value:a.value,label:a.label??this.fmt(a.value),major:i(a.value,h)}))}emptyValue(){let t=this.config.options?.[0];return t===void 0?this.config.min??0:typeof t=="object"?t.value:t}isEmpty(){return!1}indexOf(t){let e=this.items;if(this.config.options)return Math.max(0,e.findIndex(i=>i.value===t));let s=Math.round((t-(this.config.min??0))/(this.config.step||1));return Math.max(0,Math.min(e.length-1,Number.isFinite(s)?s:0))}normalize(t){return this.items[this.indexOf(t)].value}get index(){return this.indexOf(this.value)}createControl(){return this.readout=l("div","op-dial__readout",{"aria-hidden":"true"}),this.tape=l("div","op-dial__tape"),this.needle=l("div","op-dial__needle"),this.face=l("div","op-dial__face",{role:"slider",tabindex:0,"aria-orientation":"horizontal"},l("div","op-dial__window",{},this.tape),this.needle),this.listen(this.face,"pointerdown",t=>this.onDown(t)),this.listen(this.face,"keydown",t=>this.onKey(t)),this.paintTicks(),this.inputEl=this.face,l("div","op-dial__box",{},this.readout,this.face)}onRender(){super.onRender();let t=this.el.querySelector(".op-field__label");t.id=`${this.id}-label`,this.config.ariaLabel||this.face.setAttribute("aria-labelledby",t.id)}paintTicks(){let t=this.items,e=this.config.labels??"snap";this.rendered&&(this.el.classList.toggle("op-dial--circle",this.isCircle),this.el.classList.toggle("op-dial--list",!!this.config.options)),this.tape.replaceChildren(...t.map((s,i)=>{let a=l("span",`op-dial__tick${s.major?" is-major":""}`,{"data-i":i});return a.style.setProperty("--i",String(i)),a.style.setProperty("--a",`${i*360/t.length}deg`),(e==="all"||e==="snap"&&s.major)&&a.append(l("span","op-dial__tick-label",{},s.label)),a}))}build(){let t=super.build();return t.classList.toggle("op-dial--circle",this.isCircle),t.classList.toggle("op-dial--list",!!this.config.options),t}spacing(){let[t,e]=this.tape.children;return e&&t&&e.offsetLeft-t.offsetLeft||12}place(){this.needle.style.transform=this.isCircle?`translateX(-50%) rotate(${this.angle}deg)`:"",this.tape.style.setProperty("--pos",String(this.isCircle?0:this.pos))}aim(t){let e=t*360/this.items.length;this.angle+=((e-this.angle)%360+540)%360-180}applyValue(t){let e=this.indexOf(t);this.pos=e,this.aim(e),this.place(),this.paintState(e)}paintState(t){let e=this.items,s=e[t],i=this.face,a=!!this.config.options;i.setAttribute("aria-valuemin",String(a?0:e[0].value)),i.setAttribute("aria-valuemax",String(a?e.length-1:e[e.length-1].value)),i.setAttribute("aria-valuenow",String(a?t:s.value)),i.setAttribute("aria-valuetext",s.label),this.tape.querySelector(".is-current")?.classList.remove("is-current"),this.tape.children[t]?.classList.add("is-current"),this.paintReadout(s.label)}paintReadout(t){let e=this.shown;if(t===e)return;this.shown=t;let s=i=>i.replace(/\d/g,"0");if(e&&s(e)===s(t)){[...t].forEach((i,a)=>/\d/.test(i)&&this.readout.children[a].firstElementChild.setAttribute("style",`--d:${i}`));return}if(this.readout.replaceChildren(...[...t].map(i=>/\d/.test(i)?l("span","op-dial__digit",{},l("span","op-dial__reel",{style:`--d:${i}`},..."0123456789".split("").map(a=>l("span","",{},a)))):l("span","",{},i))),e&&m.isOn()&&typeof this.readout.animate=="function"){let i=this.items.findIndex(a=>a.label===t)>=this.items.findIndex(a=>a.label===e);this.readout.animate([{translate:`0 ${i?35:-35}%`,opacity:0},{translate:"0 0",opacity:1}],{duration:m.ms("swap"),easing:m.easing("enter")})}}choose(t){let e=this.items;t=Math.max(0,Math.min(e.length-1,t)),this.pos=t,this.aim(t),this.place(),this.paintState(t),this.commit(e[t].value)}get locked(){return!!(this.config.disabled||this.config.readonly)}onKey(t){if(this.locked)return;let e=this.index,s=this.items.length,i={ArrowRight:e+1,ArrowUp:e+1,ArrowLeft:e-1,ArrowDown:e-1,PageUp:this.snapFrom(e,1),PageDown:this.snapFrom(e,-1),Home:0,End:s-1};t.key in i&&(t.preventDefault(),this.choose(i[t.key]),this.flushSettled(),this.emit("slide-end",this.value))}snapFrom(t,e){let s=this.items;for(let i=t+e;i>=0&&i<s.length;i+=e)if(s[i].major)return i;return e>0?s.length-1:0}angleAt(t){let e=this.face.getBoundingClientRect();return(Math.atan2(t.clientX-(e.left+e.width/2),e.top+e.height/2-t.clientY)*180/Math.PI+360)%360}onDown(t){if(this.locked||t.button)return;t.preventDefault(),this.stopGlide?.();let e=this.face;e.focus(),e.setPointerCapture?.(t.pointerId);let s=this.items.length,i=this.spacing(),a=t.clientX,h=this.pos,p=!1,c=[{x:t.clientX,t:t.timeStamp}];this.el.classList.add("is-dragging"),this.emit("slide-start");let D=n=>{if(this.isCircle){let d=this.angleAt(n);return this.angle+=((d-this.angle)%360+540)%360-180,this.place(),Math.round(d/360*s)%s}let r=h-(n.clientX-a)/i,o=r<0?r:r>s-1?r-(s-1):0;return this.pos=o?r-o+Math.sign(o)*S(Math.abs(o)*i,i*2)/i:r,this.place(),Math.round(Math.max(0,Math.min(s-1,r)))},f=n=>{(Math.abs(n.clientX-a)>3||this.isCircle)&&(p=!0),c=[...c.filter(o=>n.timeStamp-o.t<100),{x:n.clientX,t:n.timeStamp}];let r=D(n);r!==this.index&&(this.paintState(r),this.commit(this.items[r].value))},L=()=>{e.removeEventListener("pointermove",f),e.removeEventListener("pointerup",g),e.removeEventListener("pointercancel",g)},g=n=>{if(L(),this.el.classList.remove("is-dragging"),n.type==="pointercancel")return this.rest(this.index);if(this.isCircle)return this.rest(p?this.index:Math.round(this.angleAt(n)/360*s)%s);if(!p){let v=e.getBoundingClientRect();return this.rest(Math.round(this.pos+(n.clientX-(v.left+v.width/2))/i))}let r=c[0],o=(n.clientX-r.x)/Math.max(1,n.timeStamp-r.t);if(Math.abs(o)<_)return this.rest(Math.round(Math.max(0,Math.min(s-1,this.pos))));let d=o<0?1:-1,M=this.pos+d*Math.abs(o)*260/i,u=-1;this.items.forEach((v,b)=>v.major&&(d>0?b>this.pos:b<this.pos)&&(u<0||Math.abs(b-M)<Math.abs(u-M))&&(u=b)),this.rest(u>=0?u:Math.round(Math.max(0,Math.min(s-1,M))),!0)};e.addEventListener("pointermove",f),e.addEventListener("pointerup",g),e.addEventListener("pointercancel",g),this.own(L)}rest(t,e=!1){let s=this.pos;this.choose(t);let i=()=>{this.stopGlide=void 0,this.el.classList.remove("is-gliding"),this.tape.style.transitionDuration="",this.flushSettled(),this.emit("slide-end",this.value)};if(!e||!m.isOn())return i();let a=Math.min(900,280+Math.abs(this.pos-s)*this.spacing()*.9);this.el.classList.add("is-gliding"),this.tape.style.transitionDuration=`${a}ms`,this.stopGlide=this.later(i,a)}next(t=1){this.setValue(this.items[Math.max(0,Math.min(this.items.length-1,this.index+t))].value)}prev(t=1){this.next(-t)}nextSnap(){this.setValue(this.items[this.snapFrom(this.index,1)].value)}prevSnap(){this.setValue(this.items[this.snapFrom(this.index,-1)].value)}getDisplayText(){return this.items[this.index].label}rebuild(t){Object.assign(this.config,t),this.cache=void 0,this.value=this.normalize(this.value),this.rendered&&(this.paintTicks(),this.shown="",this.readout.replaceChildren(),this.applyValue(this.value))}setMin(t){this.rebuild({min:t})}setMax(t){this.rebuild({max:t})}setStep(t){this.rebuild({step:t})}setOptions(t){this.rebuild({options:t})}setSnap(t){this.rebuild({snap:t})}setShape(t){this.rebuild({shape:t})}setFormat(t){this.rebuild({format:t})}onDisabled(t){this.face.tabIndex=t?-1:0,this.face.setAttribute("aria-disabled",String(t))}onReadonly(t){this.face.setAttribute("aria-readonly",String(t))}};E("dial",x);export{x as a};
2
- //# sourceMappingURL=chunk-6PZPBPAD.js.map
1
+ import{a as C}from"./chunk-QVBDBGS4.js";import{a as E}from"./chunk-TIPK3SCJ.js";import{b as l}from"./chunk-PZSHOSOS.js";import{c as S}from"./chunk-6NCXO5ZP.js";import{c as m}from"./chunk-2UPUC4RK.js";var _=.35,w=y=>(String(y).split(".")[1]??"").length,x=class extends C{baseCls="op-field op-dial";face;tape;needle;readout;cache;pos=0;angle=0;shown="";stopGlide;constructor(t={}){super(t),this.value=this.original=this.normalize(this.value)}get isCircle(){return this.config.shape==="circle"}get items(){return this.cache??=this.buildItems()}fmt(t){return this.config.format?this.config.format(t):String(t)}buildItems(){let t=this.config,e;if(t.options)e=t.options.map(a=>typeof a=="object"?a:{value:a});else{let a=t.min??0,h=t.step||1,p=Math.max(1,Math.floor(((t.max??100)-a)/h+1e-9)+1),c=Math.max(w(h),w(a));e=Array.from({length:p},(D,f)=>({value:Number((a+f*h).toFixed(c))}))}let s=t.snap??(t.options?1:10),i=(a,h)=>s===!1?!1:Array.isArray(s)?s.includes(a):t.options?h%s===0:Math.abs(a/s-Math.round(a/s))<1e-9;return e.map((a,h)=>({value:a.value,label:a.label??this.fmt(a.value),major:i(a.value,h)}))}emptyValue(){let t=this.config.options?.[0];return t===void 0?this.config.min??0:typeof t=="object"?t.value:t}isEmpty(){return!1}indexOf(t){let e=this.items;if(this.config.options)return Math.max(0,e.findIndex(i=>i.value===t));let s=Math.round((t-(this.config.min??0))/(this.config.step||1));return Math.max(0,Math.min(e.length-1,Number.isFinite(s)?s:0))}normalize(t){return this.items[this.indexOf(t)].value}get index(){return this.indexOf(this.value)}createControl(){return this.readout=l("div","op-dial__readout",{"aria-hidden":"true"}),this.tape=l("div","op-dial__tape"),this.needle=l("div","op-dial__needle"),this.face=l("div","op-dial__face",{role:"slider",tabindex:0,"aria-orientation":"horizontal"},l("div","op-dial__window",{},this.tape),this.needle),this.listen(this.face,"pointerdown",t=>this.onDown(t)),this.listen(this.face,"keydown",t=>this.onKey(t)),this.paintTicks(),this.inputEl=this.face,l("div","op-dial__box",{},this.readout,this.face)}onRender(){super.onRender();let t=this.el.querySelector(".op-field__label");t.id=`${this.id}-label`,this.config.ariaLabel||this.face.setAttribute("aria-labelledby",t.id)}paintTicks(){let t=this.items,e=this.config.labels??"snap";this.rendered&&(this.el.classList.toggle("op-dial--circle",this.isCircle),this.el.classList.toggle("op-dial--list",!!this.config.options)),this.tape.replaceChildren(...t.map((s,i)=>{let a=l("span",`op-dial__tick${s.major?" is-major":""}`,{"data-i":i});return a.style.setProperty("--i",String(i)),a.style.setProperty("--a",`${i*360/t.length}deg`),(e==="all"||e==="snap"&&s.major)&&a.append(l("span","op-dial__tick-label",{},s.label)),a}))}build(){let t=super.build();return t.classList.toggle("op-dial--circle",this.isCircle),t.classList.toggle("op-dial--list",!!this.config.options),t}spacing(){let[t,e]=this.tape.children;return e&&t&&e.offsetLeft-t.offsetLeft||12}place(){this.needle.style.transform=this.isCircle?`translateX(-50%) rotate(${this.angle}deg)`:"",this.tape.style.setProperty("--pos",String(this.isCircle?0:this.pos))}aim(t){let e=t*360/this.items.length;this.angle+=((e-this.angle)%360+540)%360-180}applyValue(t){let e=this.indexOf(t);this.pos=e,this.aim(e),this.place(),this.paintState(e)}paintState(t){let e=this.items,s=e[t],i=this.face,a=!!this.config.options;i.setAttribute("aria-valuemin",String(a?0:e[0].value)),i.setAttribute("aria-valuemax",String(a?e.length-1:e[e.length-1].value)),i.setAttribute("aria-valuenow",String(a?t:s.value)),i.setAttribute("aria-valuetext",s.label),this.tape.querySelector(".is-current")?.classList.remove("is-current"),this.tape.children[t]?.classList.add("is-current"),this.paintReadout(s.label)}paintReadout(t){let e=this.shown;if(t===e)return;this.shown=t;let s=i=>i.replace(/\d/g,"0");if(e&&s(e)===s(t)){[...t].forEach((i,a)=>/\d/.test(i)&&this.readout.children[a].firstElementChild.setAttribute("style",`--d:${i}`));return}if(this.readout.replaceChildren(...[...t].map(i=>/\d/.test(i)?l("span","op-dial__digit",{},l("span","op-dial__reel",{style:`--d:${i}`},..."0123456789".split("").map(a=>l("span","",{},a)))):l("span","",{},i))),e&&m.isOn()&&typeof this.readout.animate=="function"){let i=this.items.findIndex(a=>a.label===t)>=this.items.findIndex(a=>a.label===e);this.readout.animate([{translate:`0 ${i?35:-35}%`,opacity:0},{translate:"0 0",opacity:1}],{duration:m.ms("swap"),easing:m.easing("enter")})}}choose(t){let e=this.items;t=Math.max(0,Math.min(e.length-1,t)),this.pos=t,this.aim(t),this.place(),this.paintState(t),this.commit(e[t].value)}get locked(){return!!(this.config.disabled||this.config.readonly)}onKey(t){if(this.locked)return;let e=this.index,s=this.items.length,i={ArrowRight:e+1,ArrowUp:e+1,ArrowLeft:e-1,ArrowDown:e-1,PageUp:this.snapFrom(e,1),PageDown:this.snapFrom(e,-1),Home:0,End:s-1};t.key in i&&(t.preventDefault(),this.choose(i[t.key]),this.flushSettled(),this.emit("slide-end",this.value))}snapFrom(t,e){let s=this.items;for(let i=t+e;i>=0&&i<s.length;i+=e)if(s[i].major)return i;return e>0?s.length-1:0}angleAt(t){let e=this.face.getBoundingClientRect();return(Math.atan2(t.clientX-(e.left+e.width/2),e.top+e.height/2-t.clientY)*180/Math.PI+360)%360}onDown(t){if(this.locked||t.button)return;t.preventDefault(),this.stopGlide?.();let e=this.face;e.focus(),e.setPointerCapture?.(t.pointerId);let s=this.items.length,i=this.spacing(),a=t.clientX,h=this.pos,p=!1,c=[{x:t.clientX,t:t.timeStamp}];this.el.classList.add("is-dragging"),this.emit("slide-start");let D=n=>{if(this.isCircle){let d=this.angleAt(n);return this.angle+=((d-this.angle)%360+540)%360-180,this.place(),Math.round(d/360*s)%s}let r=h-(n.clientX-a)/i,o=r<0?r:r>s-1?r-(s-1):0;return this.pos=o?r-o+Math.sign(o)*S(Math.abs(o)*i,i*2)/i:r,this.place(),Math.round(Math.max(0,Math.min(s-1,r)))},f=n=>{(Math.abs(n.clientX-a)>3||this.isCircle)&&(p=!0),c=[...c.filter(o=>n.timeStamp-o.t<100),{x:n.clientX,t:n.timeStamp}];let r=D(n);r!==this.index&&(this.paintState(r),this.commit(this.items[r].value))},L=()=>{e.removeEventListener("pointermove",f),e.removeEventListener("pointerup",g),e.removeEventListener("pointercancel",g)},g=n=>{if(L(),this.el.classList.remove("is-dragging"),n.type==="pointercancel")return this.rest(this.index);if(this.isCircle)return this.rest(p?this.index:Math.round(this.angleAt(n)/360*s)%s);if(!p){let v=e.getBoundingClientRect();return this.rest(Math.round(this.pos+(n.clientX-(v.left+v.width/2))/i))}let r=c[0],o=(n.clientX-r.x)/Math.max(1,n.timeStamp-r.t);if(Math.abs(o)<_)return this.rest(Math.round(Math.max(0,Math.min(s-1,this.pos))));let d=o<0?1:-1,M=this.pos+d*Math.abs(o)*260/i,u=-1;this.items.forEach((v,b)=>v.major&&(d>0?b>this.pos:b<this.pos)&&(u<0||Math.abs(b-M)<Math.abs(u-M))&&(u=b)),this.rest(u>=0?u:Math.round(Math.max(0,Math.min(s-1,M))),!0)};e.addEventListener("pointermove",f),e.addEventListener("pointerup",g),e.addEventListener("pointercancel",g),this.own(L)}rest(t,e=!1){let s=this.pos;this.choose(t);let i=()=>{this.stopGlide=void 0,this.el.classList.remove("is-gliding"),this.tape.style.transitionDuration="",this.flushSettled(),this.emit("slide-end",this.value)};if(!e||!m.isOn())return i();let a=Math.min(900,280+Math.abs(this.pos-s)*this.spacing()*.9);this.el.classList.add("is-gliding"),this.tape.style.transitionDuration=`${a}ms`,this.stopGlide=this.later(i,a)}next(t=1){this.setValue(this.items[Math.max(0,Math.min(this.items.length-1,this.index+t))].value)}prev(t=1){this.next(-t)}nextSnap(){this.setValue(this.items[this.snapFrom(this.index,1)].value)}prevSnap(){this.setValue(this.items[this.snapFrom(this.index,-1)].value)}getDisplayText(){return this.items[this.index].label}rebuild(t){Object.assign(this.config,t),this.cache=void 0,this.value=this.normalize(this.value),this.rendered&&(this.paintTicks(),this.shown="",this.readout.replaceChildren(),this.applyValue(this.value))}setMin(t){this.rebuild({min:t})}setMax(t){this.rebuild({max:t})}setStep(t){this.rebuild({step:t})}setOptions(t){this.rebuild({options:t})}setSnap(t){this.rebuild({snap:t})}setShape(t){this.rebuild({shape:t})}setFormat(t){this.rebuild({format:t})}onDisabled(t){this.face.tabIndex=t?-1:0,this.face.setAttribute("aria-disabled",String(t))}onReadonly(t){this.face.setAttribute("aria-readonly",String(t))}};E("dial",x);export{x as a};
2
+ //# sourceMappingURL=chunk-FSR6BDVO.js.map
@@ -1,2 +1,2 @@
1
- import{a as n}from"./chunk-XR677UYD.js";import{a as r}from"./chunk-TIPK3SCJ.js";import{b as e}from"./chunk-PZSHOSOS.js";var s=class extends n{baseCls="op-field op-radiogroup";group;inputs=[];emptyValue(){return null}createControl(){return this.group=e("div","op-radiogroup__options",{role:"radiogroup","aria-labelledby":`${this.id}-label`}),this.listen(this.group,"change",t=>{let i=this.inputs.indexOf(t.target);if(!(i<0)){if(this.config.readonly)return this.applyValue(this.value);this.commit(this.opts()[i].value),this.paintChecked()}}),this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.group}opts(){return(this.config.options??[]).map(t=>typeof t=="object"?t:{value:t,label:t,disabled:!1})}buildOptions(){this.inputs=[],this.group.replaceChildren(...this.opts().map(t=>{let i=e("input","op-radio__input",{type:"radio",name:this.id,value:String(t.value),disabled:!!t.disabled});return this.inputs.push(i),e("label","op-radio",{},i,e("span","op-radio__dot"),e("span","op-radio__text",{},t.label))})),this.group.classList.toggle("op-radiogroup__options--horizontal",this.config.direction==="horizontal")}onRender(){super.onRender(),this.el.querySelector(".op-field__label").id=`${this.id}-label`}applyValue(t){let i=this.opts();this.inputs.forEach((o,p)=>o.checked=t!=null&&i[p].value===t),this.paintChecked()}paintChecked(){for(let t of this.inputs)t.closest("label").classList.toggle("is-checked",t.checked)}getDisplayText(){let t=this.getValue();return this.opts().find(i=>i.value===t)?.label??""}onDisabled(t){this.inputs.forEach((i,o)=>i.disabled=t||!!this.opts()[o].disabled)}setOptions(t){this.config.options=t,this.rendered&&(this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.applyValue(this.value),this.onDisabled(!!this.config.disabled))}};r("radiogroup",s);export{s as a};
2
- //# sourceMappingURL=chunk-ZSPJZ3ZH.js.map
1
+ import{a as n}from"./chunk-QVBDBGS4.js";import{a as r}from"./chunk-TIPK3SCJ.js";import{b as e}from"./chunk-PZSHOSOS.js";var s=class extends n{baseCls="op-field op-radiogroup";group;inputs=[];emptyValue(){return null}createControl(){return this.group=e("div","op-radiogroup__options",{role:"radiogroup","aria-labelledby":`${this.id}-label`}),this.listen(this.group,"change",t=>{let i=this.inputs.indexOf(t.target);if(!(i<0)){if(this.config.readonly)return this.applyValue(this.value);this.commit(this.opts()[i].value),this.paintChecked()}}),this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.group}opts(){return(this.config.options??[]).map(t=>typeof t=="object"?t:{value:t,label:t,disabled:!1})}buildOptions(){this.inputs=[],this.group.replaceChildren(...this.opts().map(t=>{let i=e("input","op-radio__input",{type:"radio",name:this.id,value:String(t.value),disabled:!!t.disabled});return this.inputs.push(i),e("label","op-radio",{},i,e("span","op-radio__dot"),e("span","op-radio__text",{},t.label))})),this.group.classList.toggle("op-radiogroup__options--horizontal",this.config.direction==="horizontal")}onRender(){super.onRender(),this.el.querySelector(".op-field__label").id=`${this.id}-label`}applyValue(t){let i=this.opts();this.inputs.forEach((o,p)=>o.checked=t!=null&&i[p].value===t),this.paintChecked()}paintChecked(){for(let t of this.inputs)t.closest("label").classList.toggle("is-checked",t.checked)}getDisplayText(){let t=this.getValue();return this.opts().find(i=>i.value===t)?.label??""}onDisabled(t){this.inputs.forEach((i,o)=>i.disabled=t||!!this.opts()[o].disabled)}setOptions(t){this.config.options=t,this.rendered&&(this.buildOptions(),this.inputEl=this.inputs[0]??this.group,this.applyValue(this.value),this.onDisabled(!!this.config.disabled))}};r("radiogroup",s);export{s as a};
2
+ //# sourceMappingURL=chunk-G26R2F3W.js.map
@@ -0,0 +1,2 @@
1
+ import{c as v}from"./chunk-DIOJGTUN.js";import{a as C}from"./chunk-TIPK3SCJ.js";import{f as L}from"./chunk-UDXO3KM3.js";import{b as s}from"./chunk-PZSHOSOS.js";import{d as b,e as T,f as u}from"./chunk-S4QD5NID.js";T("en",{timeline:"Timeline",tlNow:"Now",tlFromTo:"{from} to {to}"});T("pt-BR",{timeline:"Linha do tempo",tlNow:"Agora",tlFromTo:"{from} at\xE9 {to}"});var F=/^\d{1,2}:\d{2}$/,c=a=>String(a).padStart(2,"0"),w=864e5,$=(a,e)=>/^\d{4}-\d{2}/.test(a)&&!isNaN(+new Date(a))?new Intl.DateTimeFormat(b()._lang,e).format(new Date(/^\d{4}-\d{2}-\d{2}$/.test(a)?`${a}T00:00`:a)):a,k=class extends L{baseCls="op-timeline";items=[];scale;build(){return s("div",this.baseCls)}onRender(){this.el.classList.add(`op-timeline--${this.config.mode??"list"}`),this.config.mode==="range"&&this.config.direction==="vertical"&&this.el.classList.add("op-timeline--vertical");let e=this.config.store;e&&this.own(e.subscribe(()=>this.setItems(e.getFiltered().map(n=>n.data)))),this.setItems(e?e.getFiltered().map(n=>n.data):this.config.items??[]);for(let n of this.config.plugins??[]){let l=n.init(this);l&&this.own(l)}this.listen(this.el,"click",n=>this.pick(n.target)),this.listen(this.el,"keydown",n=>n.key==="Enter"&&this.pick(n.target))}pick(e){let n=Number(e.closest("[data-i]")?.dataset.i);this.items[n]&&this.emit("select",this.items[n])}getItems(){return this.items}getScale(){return this.scale}setItems(e){this.items=e,this.rendered&&this.paint()}paint(){this.el.setAttribute("role","list"),this.el.setAttribute("aria-label",this.config.ariaLabel??u("timeline")),this.el.replaceChildren(...this.config.mode==="range"?this.range():this.list()),this.emit("paint")}list(){return this.items.map((e,n)=>s("div",`op-timeline__item${e.tone&&e.tone!=="default"?` is-${e.tone}`:""}`,{role:"listitem","data-i":n,tabindex:0},s("div","op-timeline__when",{},e.time?$(e.time,/T/.test(e.time)?{dateStyle:"medium",timeStyle:"short"}:{dateStyle:"medium"}):""),s("div","op-timeline__marker",{"aria-hidden":"true"},e.icon?v(e.icon):null),s("div","op-timeline__body",{},s("div","op-timeline__title",{},e.title),e.text?s("div","op-timeline__text",{},e.text):null)))}range(){let e=this.config,n=F.test(e.from??this.items.find(t=>t.start)?.start??""),l=t=>n?(Number(t.slice(0,-3))*60+Number(t.slice(-2)))*6e4:+new Date(/^\d{4}-\d{2}-\d{2}$/.test(t)?`${t}T00:00`:t),p=this.items.filter(t=>t.start).map(t=>({x:t,a:l(t.start),b:l(t.end??t.start)+(!n&&t.end&&/^\d{4}-\d{2}-\d{2}$/.test(t.end)?w:0)}));if(!p.length&&!(e.from&&e.to))return[];let r=e.from?l(e.from):Math.min(...p.map(t=>t.a)),m=e.to?l(e.to)+(/^\d{4}-\d{2}-\d{2}$/.test(e.to)?w:0):Math.max(...p.map(t=>t.b),r+1),d=e.direction==="vertical",h=t=>`${(Math.min(Math.max((t-r)/(m-r),0),1)*100).toFixed(3)}%`,S=[...e.lanes??[],...p.map(t=>t.x.lane??"").filter((t,o,i)=>i.indexOf(t)===o&&!(e.lanes??[]).includes(t))];this.scale={lo:r,hi:m,clock:n,vertical:d,parse:l,format:t=>n?`${c(Math.floor(t/36e5))}:${c(Math.round(t/6e4)%60)}`:(o=>`${o.getFullYear()}-${c(o.getMonth()+1)}-${c(o.getDate())}T${c(o.getHours())}:${c(o.getMinutes())}`)(new Date(t))};let y=!n&&m-r>62*w,M=[],I=(t,o)=>{let i=s("span","op-timeline__tick",{},o);i.style[d?"insetBlockStart":"insetInlineStart"]=h(t),M.push(i)};if(n)for(let t=Math.ceil(r/36e5)*36e5,o=(m-r)/36e5>14?72e5:36e5;t<m;t+=o)I(t,this.scale.format(t));else for(let t=new Date(r);+t<m;y?t.setMonth(t.getMonth()+1,1):t.setDate(t.getDate()+1))t.setHours(0,0,0,0),!(+t<r)&&I(+t,new Intl.DateTimeFormat(b()._lang,y?{month:"short"}:{day:"numeric",month:"short"}).format(t));let f=[s("div","op-timeline__axis",{},s("span","op-timeline__lane-name"),s("div","op-timeline__track",{"aria-hidden":"true"},...M))];for(let t of S){let o=p.filter(i=>(i.x.lane??"")===t).map(({x:i,a:E,b:D})=>{let g=s("div",`op-timeline__bar${i.tone&&i.tone!=="default"?` is-${i.tone}`:""}`,{role:"listitem",tabindex:0,"data-i":this.items.indexOf(i),"aria-label":`${i.title}, ${u("tlFromTo",{from:$(i.start,{dateStyle:"medium",timeStyle:/T/.test(i.start)?"short":void 0}),to:$(i.end??i.start,{dateStyle:"medium",timeStyle:/T/.test(i.end??"")?"short":void 0})})}`},i.icon?v(i.icon):null,s("span","op-timeline__bar-text",{},i.title));return g.title=i.text??i.title,g.style[d?"insetBlockStart":"insetInlineStart"]=h(E),g.style[d?"insetBlockEnd":"insetInlineEnd"]=`calc(100% - ${h(Math.max(D,E+(m-r)/200))})`,g});f.push(s("div","op-timeline__lane",{role:"group","aria-label":t},s("span","op-timeline__lane-name",{},t),s("div","op-timeline__track",{},...o)))}this.el.style.gridTemplateColumns=d?`var(--op-timeline-axis-width) repeat(${S.length}, minmax(0, 1fr))`:"";let _=Date.now();if(e.now!==!1&&!n&&_>=r&&_<=m){let t=()=>{let o=s("div","op-timeline__now",{"aria-hidden":"true",title:u("tlNow")});return o.style[d?"insetBlockStart":"insetInlineStart"]=h(_),o};if(d)for(let o of f.slice(1).map(i=>i.querySelector(".op-timeline__track")))o.append(t());else f.push(s("div","op-timeline__nowrow",{"aria-hidden":"true"},s("span","op-timeline__lane-name"),s("div","op-timeline__track",{},t())))}return f}};C("timeline",k);export{k as a};
2
+ //# sourceMappingURL=chunk-GLAY4RJF.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/data/timeline/timeline.ts"],
4
+ "sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { t, getLocale, addMessages } from '../../../core/i18n';\nimport type { Store } from '../../../data/store';\nimport { iconEl } from '../../base/icon/icon';\n\naddMessages('en', { timeline: 'Timeline', tlNow: 'Now', tlFromTo: '{from} to {to}' });\naddMessages('pt-BR', { timeline: 'Linha do tempo', tlNow: 'Agora', tlFromTo: '{from} at\u00E9 {to}' });\n\nexport interface TimelineItem {\n id?: string | number;\n title: string;\n text?: string;\n icon?: string;\n tone?: 'default' | 'success' | 'warning' | 'danger' | 'info';\n /** `list`: when it happened (an ISO date or time, or any text). */\n time?: string;\n /** `range`: ISO dates or date-times. */\n start?: string;\n end?: string;\n /** `range`: the row (a person, a room, a phase). */\n lane?: string;\n}\n\nexport interface TimelineConfig extends ComponentConfig {\n /** `list`: events one under the other, with a marker (default). `range`: a schedule: bars over a time axis, one row per `lane`. */\n mode?: 'list' | 'range';\n items?: TimelineItem[];\n /** Items from a Store (its records are `TimelineItem`s). */\n store?: Store<any>;\n /** `range`: the order of the rows. Default: order of appearance. */\n lanes?: string[];\n /** `range`: the window shown. Default: from the first start to the last end. */\n from?: string;\n to?: string;\n /** `range`: a marker at the current time. Default true. */\n now?: boolean;\n /** `range`: `horizontal` (time runs left to right, one row per lane, default) or `vertical` (time runs top to bottom, one column per lane). */\n direction?: 'horizontal' | 'vertical';\n /** Optional features (`timeEntry()`...). See `TimelinePlugin`. */\n plugins?: TimelinePlugin[];\n}\n\n/** Extends a Timeline without growing its base: `init` runs once it is rendered and may return a cleanup. The timeline fires `paint` after every repaint. */\nexport interface TimelinePlugin {\n init(timeline: Timeline): void | (() => void);\n}\n\n/** The time axis of a `range` timeline: its ends in ms, and how to read and write the item dates (`clock`: `'HH:mm'` of one day, else ISO). */\nexport interface TimelineScale {\n lo: number;\n hi: number;\n clock: boolean;\n vertical: boolean;\n parse(v: string): number;\n format(ms: number): string;\n}\n\nconst CLOCK = /^\\d{1,2}:\\d{2}$/;\nconst pad = (n: number) => String(n).padStart(2, '0');\n\nconst DAY = 86400000;\nconst when = (v: string, o: Intl.DateTimeFormatOptions) => (/^\\d{4}-\\d{2}/.test(v) && !isNaN(+new Date(v)) ? new Intl.DateTimeFormat(getLocale()._lang, o).format(new Date(/^\\d{4}-\\d{2}-\\d{2}$/.test(v) ? `${v}T00:00` : v)) : v);\n\n/** Events as a vertical list, or a schedule (phases, staff shifts) as bars on a time axis. Click or Enter on an item fires `select`. */\nexport class Timeline extends Component<TimelineConfig> {\n protected override baseCls = 'op-timeline';\n private items: TimelineItem[] = [];\n private scale?: TimelineScale;\n\n protected override build() {\n return h('div', this.baseCls);\n }\n\n protected override onRender() {\n this.el.classList.add(`op-timeline--${this.config.mode ?? 'list'}`);\n if (this.config.mode === 'range' && this.config.direction === 'vertical') this.el.classList.add('op-timeline--vertical');\n const store = this.config.store;\n if (store) this.own(store.subscribe(() => this.setItems(store.getFiltered().map((r) => r.data))));\n this.setItems(store ? store.getFiltered().map((r) => r.data) : (this.config.items ?? []));\n for (const p of this.config.plugins ?? []) {\n const off = p.init(this);\n if (off) this.own(off);\n }\n this.listen(this.el, 'click', (e: Event) => this.pick(e.target as HTMLElement));\n this.listen(this.el, 'keydown', (e: KeyboardEvent) => e.key === 'Enter' && this.pick(e.target as HTMLElement));\n }\n\n private pick(el: HTMLElement) {\n const i = Number(el.closest<HTMLElement>('[data-i]')?.dataset.i);\n if (this.items[i]) this.emit('select', this.items[i]);\n }\n\n getItems(): TimelineItem[] {\n return this.items;\n }\n\n /** The time axis of a `range` timeline (set by the last paint), for plugins. */\n getScale(): TimelineScale | undefined {\n return this.scale;\n }\n\n setItems(items: TimelineItem[]) {\n this.items = items;\n if (this.rendered) this.paint();\n }\n\n private paint() {\n this.el.setAttribute('role', 'list');\n this.el.setAttribute('aria-label', this.config.ariaLabel ?? t('timeline'));\n this.el.replaceChildren(...(this.config.mode === 'range' ? this.range() : this.list()));\n this.emit('paint');\n }\n\n private list(): HTMLElement[] {\n return this.items.map((it, i) =>\n h('div', `op-timeline__item${it.tone && it.tone !== 'default' ? ` is-${it.tone}` : ''}`, { role: 'listitem', 'data-i': i, tabindex: 0 },\n h('div', 'op-timeline__when', {}, it.time ? when(it.time, /T/.test(it.time) ? { dateStyle: 'medium', timeStyle: 'short' } : { dateStyle: 'medium' }) : ''),\n h('div', 'op-timeline__marker', { 'aria-hidden': 'true' }, it.icon ? iconEl(it.icon) : null),\n h('div', 'op-timeline__body', {}, h('div', 'op-timeline__title', {}, it.title), it.text ? h('div', 'op-timeline__text', {}, it.text) : null),\n ),\n );\n }\n\n private range(): HTMLElement[] {\n const c = this.config;\n const clock = CLOCK.test(c.from ?? this.items.find((x) => x.start)?.start ?? '');\n const ms = (v: string) => (clock ? (Number(v.slice(0, -3)) * 60 + Number(v.slice(-2))) * 60000 : +new Date(/^\\d{4}-\\d{2}-\\d{2}$/.test(v) ? `${v}T00:00` : v));\n const spans = this.items.filter((x) => x.start).map((x) => ({ x, a: ms(x.start!), b: ms(x.end ?? x.start!) + (!clock && x.end && /^\\d{4}-\\d{2}-\\d{2}$/.test(x.end) ? DAY : 0) }));\n if (!spans.length && !(c.from && c.to)) return [];\n const lo = c.from ? ms(c.from) : Math.min(...spans.map((s) => s.a));\n const hi = c.to ? ms(c.to) + (/^\\d{4}-\\d{2}-\\d{2}$/.test(c.to) ? DAY : 0) : Math.max(...spans.map((s) => s.b), lo + 1);\n const vertical = c.direction === 'vertical';\n const pct = (v: number) => `${(Math.min(Math.max((v - lo) / (hi - lo), 0), 1) * 100).toFixed(3)}%`;\n const lanes = [...(c.lanes ?? []), ...spans.map((s) => s.x.lane ?? '').filter((l, i, a) => a.indexOf(l) === i && !(c.lanes ?? []).includes(l))];\n this.scale = { lo, hi, clock, vertical, parse: ms, format: (v) => (clock ? `${pad(Math.floor(v / 3600000))}:${pad(Math.round(v / 60000) % 60)}` : ((d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`)(new Date(v))) };\n const long = !clock && hi - lo > 62 * DAY;\n const tickEls: HTMLElement[] = [];\n const tickAt = (at: number, text: string) => {\n const tick = h('span', 'op-timeline__tick', {}, text);\n tick.style[vertical ? 'insetBlockStart' : 'insetInlineStart'] = pct(at);\n tickEls.push(tick);\n };\n if (clock) for (let at = Math.ceil(lo / 3600000) * 3600000, hop = (hi - lo) / 3600000 > 14 ? 7200000 : 3600000; at < hi; at += hop) tickAt(at, this.scale.format(at));\n else\n for (let d = new Date(lo); +d < hi; long ? d.setMonth(d.getMonth() + 1, 1) : d.setDate(d.getDate() + 1)) {\n d.setHours(0, 0, 0, 0);\n if (+d < lo) continue;\n tickAt(+d, new Intl.DateTimeFormat(getLocale()._lang, long ? { month: 'short' } : { day: 'numeric', month: 'short' }).format(d));\n }\n const out: HTMLElement[] = [h('div', 'op-timeline__axis', {}, h('span', 'op-timeline__lane-name'), h('div', 'op-timeline__track', { 'aria-hidden': 'true' }, ...tickEls))];\n for (const lane of lanes) {\n const bars = spans.filter((s) => (s.x.lane ?? '') === lane).map(({ x, a, b }) => {\n const bar = h('div', `op-timeline__bar${x.tone && x.tone !== 'default' ? ` is-${x.tone}` : ''}`, { role: 'listitem', tabindex: 0, 'data-i': this.items.indexOf(x), 'aria-label': `${x.title}, ${t('tlFromTo', { from: when(x.start!, { dateStyle: 'medium', timeStyle: /T/.test(x.start!) ? 'short' : undefined }), to: when(x.end ?? x.start!, { dateStyle: 'medium', timeStyle: /T/.test(x.end ?? '') ? 'short' : undefined }) })}` }, x.icon ? iconEl(x.icon) : null, h('span', 'op-timeline__bar-text', {}, x.title));\n bar.title = x.text ?? x.title;\n bar.style[vertical ? 'insetBlockStart' : 'insetInlineStart'] = pct(a);\n bar.style[vertical ? 'insetBlockEnd' : 'insetInlineEnd'] = `calc(100% - ${pct(Math.max(b, a + (hi - lo) / 200))})`;\n return bar;\n });\n out.push(h('div', 'op-timeline__lane', { role: 'group', 'aria-label': lane }, h('span', 'op-timeline__lane-name', {}, lane), h('div', 'op-timeline__track', {}, ...bars)));\n }\n this.el.style.gridTemplateColumns = vertical ? `var(--op-timeline-axis-width) repeat(${lanes.length}, minmax(0, 1fr))` : '';\n const now = Date.now();\n if (c.now !== false && !clock && now >= lo && now <= hi) {\n const mark = () => {\n const m = h('div', 'op-timeline__now', { 'aria-hidden': 'true', title: t('tlNow') });\n m.style[vertical ? 'insetBlockStart' : 'insetInlineStart'] = pct(now);\n return m;\n };\n if (vertical) for (const track of out.slice(1).map((l) => l.querySelector('.op-timeline__track')!)) track.append(mark());\n else out.push(h('div', 'op-timeline__nowrow', { 'aria-hidden': 'true' }, h('span', 'op-timeline__lane-name'), h('div', 'op-timeline__track', {}, mark())));\n }\n return out;\n }\n}\nregister('timeline', Timeline);\n"],
5
+ "mappings": "sNAOAA,EAAY,KAAM,CAAE,SAAU,WAAY,MAAO,MAAO,SAAU,gBAAiB,CAAC,EACpFA,EAAY,QAAS,CAAE,SAAU,iBAAkB,MAAO,QAAS,SAAU,oBAAkB,CAAC,EAmDhG,IAAMC,EAAQ,kBACRC,EAAOC,GAAc,OAAOA,CAAC,EAAE,SAAS,EAAG,GAAG,EAE9CC,EAAM,MACNC,EAAO,CAACC,EAAWC,IAAmC,eAAe,KAAKD,CAAC,GAAK,CAAC,MAAM,CAAC,IAAI,KAAKA,CAAC,CAAC,EAAI,IAAI,KAAK,eAAeE,EAAU,EAAE,MAAOD,CAAC,EAAE,OAAO,IAAI,KAAK,sBAAsB,KAAKD,CAAC,EAAI,GAAGA,CAAC,SAAWA,CAAC,CAAC,EAAIA,EAGnNG,EAAN,cAAuBC,CAA0B,CACnC,QAAU,cACrB,MAAwB,CAAC,EACzB,MAEW,OAAQ,CACzB,OAAOC,EAAE,MAAO,KAAK,OAAO,CAC9B,CAEmB,UAAW,CAC5B,KAAK,GAAG,UAAU,IAAI,gBAAgB,KAAK,OAAO,MAAQ,MAAM,EAAE,EAC9D,KAAK,OAAO,OAAS,SAAW,KAAK,OAAO,YAAc,YAAY,KAAK,GAAG,UAAU,IAAI,uBAAuB,EACvH,IAAMC,EAAQ,KAAK,OAAO,MACtBA,GAAO,KAAK,IAAIA,EAAM,UAAU,IAAM,KAAK,SAASA,EAAM,YAAY,EAAE,IAAKC,GAAMA,EAAE,IAAI,CAAC,CAAC,CAAC,EAChG,KAAK,SAASD,EAAQA,EAAM,YAAY,EAAE,IAAKC,GAAMA,EAAE,IAAI,EAAK,KAAK,OAAO,OAAS,CAAC,CAAE,EACxF,QAAWC,KAAK,KAAK,OAAO,SAAW,CAAC,EAAG,CACzC,IAAMC,EAAMD,EAAE,KAAK,IAAI,EACnBC,GAAK,KAAK,IAAIA,CAAG,CACvB,CACA,KAAK,OAAO,KAAK,GAAI,QAAUC,GAAa,KAAK,KAAKA,EAAE,MAAqB,CAAC,EAC9E,KAAK,OAAO,KAAK,GAAI,UAAYA,GAAqBA,EAAE,MAAQ,SAAW,KAAK,KAAKA,EAAE,MAAqB,CAAC,CAC/G,CAEQ,KAAKC,EAAiB,CAC5B,IAAMC,EAAI,OAAOD,EAAG,QAAqB,UAAU,GAAG,QAAQ,CAAC,EAC3D,KAAK,MAAMC,CAAC,GAAG,KAAK,KAAK,SAAU,KAAK,MAAMA,CAAC,CAAC,CACtD,CAEA,UAA2B,CACzB,OAAO,KAAK,KACd,CAGA,UAAsC,CACpC,OAAO,KAAK,KACd,CAEA,SAASC,EAAuB,CAC9B,KAAK,MAAQA,EACT,KAAK,UAAU,KAAK,MAAM,CAChC,CAEQ,OAAQ,CACd,KAAK,GAAG,aAAa,OAAQ,MAAM,EACnC,KAAK,GAAG,aAAa,aAAc,KAAK,OAAO,WAAaC,EAAE,UAAU,CAAC,EACzE,KAAK,GAAG,gBAAgB,GAAI,KAAK,OAAO,OAAS,QAAU,KAAK,MAAM,EAAI,KAAK,KAAK,CAAE,EACtF,KAAK,KAAK,OAAO,CACnB,CAEQ,MAAsB,CAC5B,OAAO,KAAK,MAAM,IAAI,CAACC,EAAIH,IACzBP,EAAE,MAAO,oBAAoBU,EAAG,MAAQA,EAAG,OAAS,UAAY,OAAOA,EAAG,IAAI,GAAK,EAAE,GAAI,CAAE,KAAM,WAAY,SAAUH,EAAG,SAAU,CAAE,EACpIP,EAAE,MAAO,oBAAqB,CAAC,EAAGU,EAAG,KAAOhB,EAAKgB,EAAG,KAAM,IAAI,KAAKA,EAAG,IAAI,EAAI,CAAE,UAAW,SAAU,UAAW,OAAQ,EAAI,CAAE,UAAW,QAAS,CAAC,EAAI,EAAE,EACzJV,EAAE,MAAO,sBAAuB,CAAE,cAAe,MAAO,EAAGU,EAAG,KAAOC,EAAOD,EAAG,IAAI,EAAI,IAAI,EAC3FV,EAAE,MAAO,oBAAqB,CAAC,EAAGA,EAAE,MAAO,qBAAsB,CAAC,EAAGU,EAAG,KAAK,EAAGA,EAAG,KAAOV,EAAE,MAAO,oBAAqB,CAAC,EAAGU,EAAG,IAAI,EAAI,IAAI,CAC7I,CACF,CACF,CAEQ,OAAuB,CAC7B,IAAME,EAAI,KAAK,OACTC,EAAQvB,EAAM,KAAKsB,EAAE,MAAQ,KAAK,MAAM,KAAME,GAAMA,EAAE,KAAK,GAAG,OAAS,EAAE,EACzEC,EAAMpB,GAAekB,GAAS,OAAOlB,EAAE,MAAM,EAAG,EAAE,CAAC,EAAI,GAAK,OAAOA,EAAE,MAAM,EAAE,CAAC,GAAK,IAAQ,CAAC,IAAI,KAAK,sBAAsB,KAAKA,CAAC,EAAI,GAAGA,CAAC,SAAWA,CAAC,EACrJqB,EAAQ,KAAK,MAAM,OAAQF,GAAMA,EAAE,KAAK,EAAE,IAAKA,IAAO,CAAE,EAAAA,EAAG,EAAGC,EAAGD,EAAE,KAAM,EAAG,EAAGC,EAAGD,EAAE,KAAOA,EAAE,KAAM,GAAK,CAACD,GAASC,EAAE,KAAO,sBAAsB,KAAKA,EAAE,GAAG,EAAIrB,EAAM,EAAG,EAAE,EAChL,GAAI,CAACuB,EAAM,QAAU,EAAEJ,EAAE,MAAQA,EAAE,IAAK,MAAO,CAAC,EAChD,IAAMK,EAAKL,EAAE,KAAOG,EAAGH,EAAE,IAAI,EAAI,KAAK,IAAI,GAAGI,EAAM,IAAKE,GAAMA,EAAE,CAAC,CAAC,EAC5DC,EAAKP,EAAE,GAAKG,EAAGH,EAAE,EAAE,GAAK,sBAAsB,KAAKA,EAAE,EAAE,EAAInB,EAAM,GAAK,KAAK,IAAI,GAAGuB,EAAM,IAAKE,GAAMA,EAAE,CAAC,EAAGD,EAAK,CAAC,EAC/GG,EAAWR,EAAE,YAAc,WAC3BS,EAAO1B,GAAc,IAAI,KAAK,IAAI,KAAK,KAAKA,EAAIsB,IAAOE,EAAKF,GAAK,CAAC,EAAG,CAAC,EAAI,KAAK,QAAQ,CAAC,CAAC,IACzFK,EAAQ,CAAC,GAAIV,EAAE,OAAS,CAAC,EAAI,GAAGI,EAAM,IAAKE,GAAMA,EAAE,EAAE,MAAQ,EAAE,EAAE,OAAO,CAACK,EAAGhB,EAAGiB,IAAMA,EAAE,QAAQD,CAAC,IAAMhB,GAAK,EAAEK,EAAE,OAAS,CAAC,GAAG,SAASW,CAAC,CAAC,CAAC,EAC9I,KAAK,MAAQ,CAAE,GAAAN,EAAI,GAAAE,EAAI,MAAAN,EAAO,SAAAO,EAAU,MAAOL,EAAI,OAASpB,GAAOkB,EAAQ,GAAGtB,EAAI,KAAK,MAAMI,EAAI,IAAO,CAAC,CAAC,IAAIJ,EAAI,KAAK,MAAMI,EAAI,GAAK,EAAI,EAAE,CAAC,IAAO8B,GAAM,GAAGA,EAAE,YAAY,CAAC,IAAIlC,EAAIkC,EAAE,SAAS,EAAI,CAAC,CAAC,IAAIlC,EAAIkC,EAAE,QAAQ,CAAC,CAAC,IAAIlC,EAAIkC,EAAE,SAAS,CAAC,CAAC,IAAIlC,EAAIkC,EAAE,WAAW,CAAC,CAAC,IAAI,IAAI,KAAK9B,CAAC,CAAC,CAAG,EACvR,IAAM+B,EAAO,CAACb,GAASM,EAAKF,EAAK,GAAKxB,EAChCkC,EAAyB,CAAC,EAC1BC,EAAS,CAACC,EAAYC,IAAiB,CAC3C,IAAMC,EAAO/B,EAAE,OAAQ,oBAAqB,CAAC,EAAG8B,CAAI,EACpDC,EAAK,MAAMX,EAAW,kBAAoB,kBAAkB,EAAIC,EAAIQ,CAAE,EACtEF,EAAQ,KAAKI,CAAI,CACnB,EACA,GAAIlB,EAAO,QAASgB,EAAK,KAAK,KAAKZ,EAAK,IAAO,EAAI,KAASe,GAAOb,EAAKF,GAAM,KAAU,GAAK,KAAU,KAASY,EAAKV,EAAIU,GAAMG,EAAKJ,EAAOC,EAAI,KAAK,MAAM,OAAOA,CAAE,CAAC,MAElK,SAASJ,EAAI,IAAI,KAAKR,CAAE,EAAG,CAACQ,EAAIN,EAAIO,EAAOD,EAAE,SAASA,EAAE,SAAS,EAAI,EAAG,CAAC,EAAIA,EAAE,QAAQA,EAAE,QAAQ,EAAI,CAAC,EACpGA,EAAE,SAAS,EAAG,EAAG,EAAG,CAAC,EACjB,GAACA,EAAIR,IACTW,EAAO,CAACH,EAAG,IAAI,KAAK,eAAe5B,EAAU,EAAE,MAAO6B,EAAO,CAAE,MAAO,OAAQ,EAAI,CAAE,IAAK,UAAW,MAAO,OAAQ,CAAC,EAAE,OAAOD,CAAC,CAAC,EAEnI,IAAMQ,EAAqB,CAACjC,EAAE,MAAO,oBAAqB,CAAC,EAAGA,EAAE,OAAQ,wBAAwB,EAAGA,EAAE,MAAO,qBAAsB,CAAE,cAAe,MAAO,EAAG,GAAG2B,CAAO,CAAC,CAAC,EACzK,QAAWO,KAAQZ,EAAO,CACxB,IAAMa,EAAOnB,EAAM,OAAQE,IAAOA,EAAE,EAAE,MAAQ,MAAQgB,CAAI,EAAE,IAAI,CAAC,CAAE,EAAApB,EAAG,EAAAU,EAAG,EAAAY,CAAE,IAAM,CAC/E,IAAMC,EAAMrC,EAAE,MAAO,mBAAmBc,EAAE,MAAQA,EAAE,OAAS,UAAY,OAAOA,EAAE,IAAI,GAAK,EAAE,GAAI,CAAE,KAAM,WAAY,SAAU,EAAG,SAAU,KAAK,MAAM,QAAQA,CAAC,EAAG,aAAc,GAAGA,EAAE,KAAK,KAAKL,EAAE,WAAY,CAAE,KAAMf,EAAKoB,EAAE,MAAQ,CAAE,UAAW,SAAU,UAAW,IAAI,KAAKA,EAAE,KAAM,EAAI,QAAU,MAAU,CAAC,EAAG,GAAIpB,EAAKoB,EAAE,KAAOA,EAAE,MAAQ,CAAE,UAAW,SAAU,UAAW,IAAI,KAAKA,EAAE,KAAO,EAAE,EAAI,QAAU,MAAU,CAAC,CAAE,CAAC,CAAC,EAAG,EAAGA,EAAE,KAAOH,EAAOG,EAAE,IAAI,EAAI,KAAMd,EAAE,OAAQ,wBAAyB,CAAC,EAAGc,EAAE,KAAK,CAAC,EACxf,OAAAuB,EAAI,MAAQvB,EAAE,MAAQA,EAAE,MACxBuB,EAAI,MAAMjB,EAAW,kBAAoB,kBAAkB,EAAIC,EAAIG,CAAC,EACpEa,EAAI,MAAMjB,EAAW,gBAAkB,gBAAgB,EAAI,eAAeC,EAAI,KAAK,IAAIe,EAAGZ,GAAKL,EAAKF,GAAM,GAAG,CAAC,CAAC,IACxGoB,CACT,CAAC,EACDJ,EAAI,KAAKjC,EAAE,MAAO,oBAAqB,CAAE,KAAM,QAAS,aAAckC,CAAK,EAAGlC,EAAE,OAAQ,yBAA0B,CAAC,EAAGkC,CAAI,EAAGlC,EAAE,MAAO,qBAAsB,CAAC,EAAG,GAAGmC,CAAI,CAAC,CAAC,CAC3K,CACA,KAAK,GAAG,MAAM,oBAAsBf,EAAW,wCAAwCE,EAAM,MAAM,oBAAsB,GACzH,IAAMgB,EAAM,KAAK,IAAI,EACrB,GAAI1B,EAAE,MAAQ,IAAS,CAACC,GAASyB,GAAOrB,GAAMqB,GAAOnB,EAAI,CACvD,IAAMoB,EAAO,IAAM,CACjB,IAAMC,EAAIxC,EAAE,MAAO,mBAAoB,CAAE,cAAe,OAAQ,MAAOS,EAAE,OAAO,CAAE,CAAC,EACnF,OAAA+B,EAAE,MAAMpB,EAAW,kBAAoB,kBAAkB,EAAIC,EAAIiB,CAAG,EAC7DE,CACT,EACA,GAAIpB,EAAU,QAAWqB,KAASR,EAAI,MAAM,CAAC,EAAE,IAAKV,GAAMA,EAAE,cAAc,qBAAqB,CAAE,EAAGkB,EAAM,OAAOF,EAAK,CAAC,OAClHN,EAAI,KAAKjC,EAAE,MAAO,sBAAuB,CAAE,cAAe,MAAO,EAAGA,EAAE,OAAQ,wBAAwB,EAAGA,EAAE,MAAO,qBAAsB,CAAC,EAAGuC,EAAK,CAAC,CAAC,CAAC,CAC3J,CACA,OAAON,CACT,CACF,EACAS,EAAS,WAAY5C,CAAQ",
6
+ "names": ["addMessages", "CLOCK", "pad", "n", "DAY", "when", "v", "o", "getLocale", "Timeline", "Component", "h", "store", "r", "p", "off", "e", "el", "i", "items", "t", "it", "iconEl", "c", "clock", "x", "ms", "spans", "lo", "s", "hi", "vertical", "pct", "lanes", "l", "a", "d", "long", "tickEls", "tickAt", "at", "text", "tick", "hop", "out", "lane", "bars", "b", "bar", "now", "mark", "m", "track", "register"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{a as v}from"./chunk-MNSDGJKA.js";import{c as p}from"./chunk-DIOJGTUN.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{e as c,f}from"./chunk-UDXO3KM3.js";import{b as a}from"./chunk-PZSHOSOS.js";var m=class extends f{baseCls="op-navmenu";tag="nav";items=[];open=new Set;active;query="";focusId;root;flyout;flyoutOf;hoverTimer;onRender(){let e=this.config;this.items=c(e.items)??[],this.active=e.active;let i=t=>t.forEach(s=>(s.expanded&&this.open.add(s.id),s.items&&i(s.items)));i(this.items),this.active&&this.openParents(this.active),this.root=a("ul","op-navmenu__tree",{role:"tree","aria-label":e.ariaLabel??null}),this.el.append(this.root),this.listen(this.root,"click",t=>{let s=t.target.closest(".op-navmenu__item");s&&this.activate(s.dataset.id)}),this.listen(this.root,"keydown",t=>this.onKey(t)),this.listen(this.root,"pointerover",t=>{let s=t.target.closest(".op-navmenu__item.is-group");this.hoverTimer?.(),!(!this.config.collapsed||!s||s.dataset.id===this.flyoutOf)&&(this.hoverTimer=this.later(()=>this.openFlyout(s.dataset.id,!1),200))}),this.listen(this.root,"pointerleave",()=>this.hoverTimer?.()),this.own(()=>this.flyout?.destroy()),this.listen(this.root,"focusin",t=>{let s=t.target.closest(".op-navmenu__item");s&&(this.focusId=s.dataset.id)}),this.paint()}getItem(e,i=this.items){for(let t of i){if(t.id===e)return t;let s=t.items&&this.getItem(e,t.items);if(s)return s}}parentsOf(e,i=this.items,t=[]){for(let s of i){if(s.id===e)return t;let n=s.items&&this.parentsOf(e,s.items,[...t,s]);if(n)return n}}openParents(e){for(let i of this.parentsOf(e)??[])this.open.add(i.id)}matches(e,i){return e.text.toLowerCase().includes(i)||!!e.items?.some(t=>this.matches(t,i))}visible(e){return e.hidden||this.query&&!this.matches(e,this.query)?!1:!e.items||e.items.some(i=>this.visible(i))}isOpen(e){return this.config.collapsed?!1:this.query?!0:this.open.has(e.id)}paint(){this.el.classList.toggle("is-rail",!!this.config.collapsed),this.root.replaceChildren(...this.items.filter(t=>this.visible(t)).map(t=>this.node(t,1)));let i=this.focusId&&this.root.querySelector(`[data-id="${CSS.escape(this.focusId)}"]`)||this.root.querySelector(".op-navmenu__item.is-active")||this.root.querySelector(".op-navmenu__item");this.root.querySelectorAll(".op-navmenu__item").forEach(t=>t.tabIndex=t===i?0:-1)}node(e,i){let t=!!e.items,s=t&&this.isOpen(e),n=!!this.config.collapsed,r=a("li","op-navmenu__node",{role:"none"}),l=t&&!!this.active&&!!this.parentsOf(this.active)?.some(d=>d.id===e.id),o=n&&t,h=a("div",`op-navmenu__item${t?" is-group":""}${s?" is-expanded":""}${e.id===this.active?" is-active":""}${l&&n?" has-active":""}${e.disabled?" is-disabled":""}`,{role:"treeitem","data-id":e.id,"aria-level":i,"aria-expanded":t?String(o?this.flyoutOf===e.id:s):null,"aria-current":e.id===this.active?"page":null,"aria-haspopup":o?"menu":null,"aria-disabled":e.disabled?"true":null,title:n?e.text:null,tabindex:-1});return h.style.setProperty("--_level",String(i-1)),h.append(a("span","op-navmenu__icon",{},e.icon?p(e.icon):o?e.text.charAt(0).toUpperCase():""),a("span","op-navmenu__text",{},e.text)),e.badge!=null&&e.badge!==""&&h.append(a("span","op-navmenu__badge",{},String(e.badge))),t&&h.append(a("span","op-navmenu__chevron",{"aria-hidden":"true"},p("chevron-down"))),r.append(h),t&&s&&r.append(a("ul","op-navmenu__group",{role:"group"},...e.items.filter(d=>this.visible(d)).map(d=>this.node(d,i+1)))),r}activate(e){let i=this.getItem(e);if(!(!i||i.disabled)){if(i.items&&this.config.collapsed)return this.openFlyout(e,!0);if(i.items)return this.toggle(e);this.select(e)}}select(e){let i=this.getItem(e);!i||i.disabled||this.emit("before-select",i)===!1||(this.setActive(e),this.emit("select",i))}setActive(e){this.active=e,this.config.active=e,e&&(this.openParents(e),this.focusId=e),this.rendered&&this.paint()}getActive(){return this.active?this.getItem(this.active):void 0}expand(e){let i=this.getItem(e);if(!(!i?.items||this.open.has(e))){if(this.config.accordion)for(let t of this.siblings(e))this.open.delete(t.id);this.open.add(e),this.rendered&&this.paint(),this.emit("expand",i)}}collapse(e){let i=this.getItem(e);!i?.items||!this.open.delete(e)||(this.rendered&&this.paint(),this.emit("collapse",i))}toggle(e){this.open.has(e)?this.collapse(e):this.expand(e)}siblings(e){let i=this.parentsOf(e)??[];return(i.length?i[i.length-1].items:this.items).filter(s=>s.id!==e&&s.items)}expandAll(){let e=i=>i.forEach(t=>t.items&&(this.open.add(t.id),e(t.items)));e(this.items),this.rendered&&this.paint()}collapseAll(){this.open.clear(),this.active&&this.openParents(this.active),this.rendered&&this.paint()}setItems(e){this.items=c(e)??[],this.config.items=e,this.rendered&&this.paint()}updateItem(e,i){let t=this.getItem(e);t&&(Object.assign(t,i),this.rendered&&this.paint())}openFlyout(e,i){let t=this.getItem(e),s=this.root.querySelector(`[data-id="${CSS.escape(e)}"]`);if(!t?.items||!s)return;let n=(r,l)=>r.filter(o=>this.visible(o)).map(o=>({text:o.text,icon:o.icon,badge:o.badge,disabled:o.disabled,group:l?t.text:void 0,items:o.items?n(o.items,!1):void 0,handler:o.items?void 0:()=>this.select(o.id)}));this.flyout||(this.flyout=new v({cls:"op-navmenu__flyout"}),this.flyout.on("hide",()=>{let r=this.flyoutOf;this.flyoutOf=void 0,r&&this.root.querySelector(`[data-id="${CSS.escape(r)}"]`)?.setAttribute("aria-expanded","false")}),this.listen(this.flyout.el,"keydown",r=>r.key==="ArrowLeft"&&!r.target.closest('.op-menu__item[aria-expanded="true"]')&&this.flyout.hide())),this.flyout.hide(),this.flyoutOf=e,this.flyout.setItems(n(t.items,!0)),s.setAttribute("aria-expanded","true"),this.flyout.showBy(s,"right-start",i)}setCollapsed(e){this.config.collapsed=e,e||this.flyout?.hide(),this.rendered&&this.paint()}filter(e){this.query=e.trim().toLowerCase(),this.rendered&&this.paint()}rows(){return Array.from(this.root.querySelectorAll(".op-navmenu__item"))}focusRow(e){e&&(this.rows().forEach(i=>i.tabIndex=i===e?0:-1),e.focus())}onKey(e){let i=e.target.closest(".op-navmenu__item");if(!i)return;let t=this.rows(),s=t.indexOf(i),n=this.getItem(i.dataset.id),r=i.getAttribute("aria-expanded")==="true";switch(e.key){case"ArrowDown":this.focusRow(t[s+1]);break;case"ArrowUp":this.focusRow(t[s-1]);break;case"Home":this.focusRow(t[0]);break;case"End":this.focusRow(t[t.length-1]);break;case"ArrowRight":n.items&&this.config.collapsed?this.openFlyout(n.id,!0):n.items&&!r?this.expand(n.id):n.items&&this.focusRow(t[s+1]);break;case"ArrowLeft":if(n.items&&r)this.collapse(n.id);else{let o=this.parentsOf(n.id)?.pop();o&&this.focusRow(this.root.querySelector(`[data-id="${CSS.escape(o.id)}"]`)??void 0)}break;case"Enter":case" ":this.activate(n.id);break;default:return}if(e.preventDefault(),this.flyout?.el.contains(document.activeElement))return;this.focusId=document.activeElement?.dataset?.id??n.id;let l=this.root.querySelector(`[data-id="${CSS.escape(this.focusId)}"]`);l&&document.activeElement!==l&&this.focusRow(l)}};u("navmenu",m);export{m as a};
2
- //# sourceMappingURL=chunk-SWCB2GMN.js.map
1
+ import{a as v}from"./chunk-MQEALOU3.js";import{c as p}from"./chunk-DIOJGTUN.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{e as c,f}from"./chunk-UDXO3KM3.js";import{b as a}from"./chunk-PZSHOSOS.js";var m=class extends f{baseCls="op-navmenu";tag="nav";items=[];open=new Set;active;query="";focusId;root;flyout;flyoutOf;hoverTimer;onRender(){let e=this.config;this.items=c(e.items)??[],this.active=e.active;let i=t=>t.forEach(s=>(s.expanded&&this.open.add(s.id),s.items&&i(s.items)));i(this.items),this.active&&this.openParents(this.active),this.root=a("ul","op-navmenu__tree",{role:"tree","aria-label":e.ariaLabel??null}),this.el.append(this.root),this.listen(this.root,"click",t=>{let s=t.target.closest(".op-navmenu__item");s&&this.activate(s.dataset.id)}),this.listen(this.root,"keydown",t=>this.onKey(t)),this.listen(this.root,"pointerover",t=>{let s=t.target.closest(".op-navmenu__item.is-group");this.hoverTimer?.(),!(!this.config.collapsed||!s||s.dataset.id===this.flyoutOf)&&(this.hoverTimer=this.later(()=>this.openFlyout(s.dataset.id,!1),200))}),this.listen(this.root,"pointerleave",()=>this.hoverTimer?.()),this.own(()=>this.flyout?.destroy()),this.listen(this.root,"focusin",t=>{let s=t.target.closest(".op-navmenu__item");s&&(this.focusId=s.dataset.id)}),this.paint()}getItem(e,i=this.items){for(let t of i){if(t.id===e)return t;let s=t.items&&this.getItem(e,t.items);if(s)return s}}parentsOf(e,i=this.items,t=[]){for(let s of i){if(s.id===e)return t;let n=s.items&&this.parentsOf(e,s.items,[...t,s]);if(n)return n}}openParents(e){for(let i of this.parentsOf(e)??[])this.open.add(i.id)}matches(e,i){return e.text.toLowerCase().includes(i)||!!e.items?.some(t=>this.matches(t,i))}visible(e){return e.hidden||this.query&&!this.matches(e,this.query)?!1:!e.items||e.items.some(i=>this.visible(i))}isOpen(e){return this.config.collapsed?!1:this.query?!0:this.open.has(e.id)}paint(){this.el.classList.toggle("is-rail",!!this.config.collapsed),this.root.replaceChildren(...this.items.filter(t=>this.visible(t)).map(t=>this.node(t,1)));let i=this.focusId&&this.root.querySelector(`[data-id="${CSS.escape(this.focusId)}"]`)||this.root.querySelector(".op-navmenu__item.is-active")||this.root.querySelector(".op-navmenu__item");this.root.querySelectorAll(".op-navmenu__item").forEach(t=>t.tabIndex=t===i?0:-1)}node(e,i){let t=!!e.items,s=t&&this.isOpen(e),n=!!this.config.collapsed,r=a("li","op-navmenu__node",{role:"none"}),l=t&&!!this.active&&!!this.parentsOf(this.active)?.some(d=>d.id===e.id),o=n&&t,h=a("div",`op-navmenu__item${t?" is-group":""}${s?" is-expanded":""}${e.id===this.active?" is-active":""}${l&&n?" has-active":""}${e.disabled?" is-disabled":""}`,{role:"treeitem","data-id":e.id,"aria-level":i,"aria-expanded":t?String(o?this.flyoutOf===e.id:s):null,"aria-current":e.id===this.active?"page":null,"aria-haspopup":o?"menu":null,"aria-disabled":e.disabled?"true":null,title:n?e.text:null,tabindex:-1});return h.style.setProperty("--_level",String(i-1)),h.append(a("span","op-navmenu__icon",{},e.icon?p(e.icon):o?e.text.charAt(0).toUpperCase():""),a("span","op-navmenu__text",{},e.text)),e.badge!=null&&e.badge!==""&&h.append(a("span","op-navmenu__badge",{},String(e.badge))),t&&h.append(a("span","op-navmenu__chevron",{"aria-hidden":"true"},p("chevron-down"))),r.append(h),t&&s&&r.append(a("ul","op-navmenu__group",{role:"group"},...e.items.filter(d=>this.visible(d)).map(d=>this.node(d,i+1)))),r}activate(e){let i=this.getItem(e);if(!(!i||i.disabled)){if(i.items&&this.config.collapsed)return this.openFlyout(e,!0);if(i.items)return this.toggle(e);this.select(e)}}select(e){let i=this.getItem(e);!i||i.disabled||this.emit("before-select",i)===!1||(this.setActive(e),this.emit("select",i))}setActive(e){this.active=e,this.config.active=e,e&&(this.openParents(e),this.focusId=e),this.rendered&&this.paint()}getActive(){return this.active?this.getItem(this.active):void 0}expand(e){let i=this.getItem(e);if(!(!i?.items||this.open.has(e))){if(this.config.accordion)for(let t of this.siblings(e))this.open.delete(t.id);this.open.add(e),this.rendered&&this.paint(),this.emit("expand",i)}}collapse(e){let i=this.getItem(e);!i?.items||!this.open.delete(e)||(this.rendered&&this.paint(),this.emit("collapse",i))}toggle(e){this.open.has(e)?this.collapse(e):this.expand(e)}siblings(e){let i=this.parentsOf(e)??[];return(i.length?i[i.length-1].items:this.items).filter(s=>s.id!==e&&s.items)}expandAll(){let e=i=>i.forEach(t=>t.items&&(this.open.add(t.id),e(t.items)));e(this.items),this.rendered&&this.paint()}collapseAll(){this.open.clear(),this.active&&this.openParents(this.active),this.rendered&&this.paint()}setItems(e){this.items=c(e)??[],this.config.items=e,this.rendered&&this.paint()}updateItem(e,i){let t=this.getItem(e);t&&(Object.assign(t,i),this.rendered&&this.paint())}openFlyout(e,i){let t=this.getItem(e),s=this.root.querySelector(`[data-id="${CSS.escape(e)}"]`);if(!t?.items||!s)return;let n=(r,l)=>r.filter(o=>this.visible(o)).map(o=>({text:o.text,icon:o.icon,badge:o.badge,disabled:o.disabled,group:l?t.text:void 0,items:o.items?n(o.items,!1):void 0,handler:o.items?void 0:()=>this.select(o.id)}));this.flyout||(this.flyout=new v({cls:"op-navmenu__flyout"}),this.flyout.on("hide",()=>{let r=this.flyoutOf;this.flyoutOf=void 0,r&&this.root.querySelector(`[data-id="${CSS.escape(r)}"]`)?.setAttribute("aria-expanded","false")}),this.listen(this.flyout.el,"keydown",r=>r.key==="ArrowLeft"&&!r.target.closest('.op-menu__item[aria-expanded="true"]')&&this.flyout.hide())),this.flyout.hide(),this.flyoutOf=e,this.flyout.setItems(n(t.items,!0)),s.setAttribute("aria-expanded","true"),this.flyout.showBy(s,"right-start",i)}setCollapsed(e){this.config.collapsed=e,e||this.flyout?.hide(),this.rendered&&this.paint()}filter(e){this.query=e.trim().toLowerCase(),this.rendered&&this.paint()}rows(){return Array.from(this.root.querySelectorAll(".op-navmenu__item"))}focusRow(e){e&&(this.rows().forEach(i=>i.tabIndex=i===e?0:-1),e.focus())}onKey(e){let i=e.target.closest(".op-navmenu__item");if(!i)return;let t=this.rows(),s=t.indexOf(i),n=this.getItem(i.dataset.id),r=i.getAttribute("aria-expanded")==="true";switch(e.key){case"ArrowDown":this.focusRow(t[s+1]);break;case"ArrowUp":this.focusRow(t[s-1]);break;case"Home":this.focusRow(t[0]);break;case"End":this.focusRow(t[t.length-1]);break;case"ArrowRight":n.items&&this.config.collapsed?this.openFlyout(n.id,!0):n.items&&!r?this.expand(n.id):n.items&&this.focusRow(t[s+1]);break;case"ArrowLeft":if(n.items&&r)this.collapse(n.id);else{let o=this.parentsOf(n.id)?.pop();o&&this.focusRow(this.root.querySelector(`[data-id="${CSS.escape(o.id)}"]`)??void 0)}break;case"Enter":case" ":this.activate(n.id);break;default:return}if(e.preventDefault(),this.flyout?.el.contains(document.activeElement))return;this.focusId=document.activeElement?.dataset?.id??n.id;let l=this.root.querySelector(`[data-id="${CSS.escape(this.focusId)}"]`);l&&document.activeElement!==l&&this.focusRow(l)}};u("navmenu",m);export{m as a};
2
+ //# sourceMappingURL=chunk-GNKVLJ5H.js.map
@@ -0,0 +1,2 @@
1
+ import{b as s}from"./chunk-XFDNXSU5.js";function f(e,a){let r=a.data[e.field];return e.renderer?e.renderer(r,a,e):e.format?s(e.format,r):r==null?"":String(r)}var l=e=>typeof e=="number"?e:Number(e),u=e=>e instanceof Date?+e:typeof e=="string"&&/^\d{4}-\d{2}-\d{2}/.test(e)?Date.parse(e):NaN;function g(e,a){let r=a.map(n=>n.data[e.field]),i=r.filter(n=>n!=null&&n!==""&&!isNaN(l(n))).map(l),t=e.summary;if(typeof t=="function")return t(r,a);if(t==="count")return r.filter(n=>n!=null&&n!=="").length;if(!i.length){let n=t==="min"||t==="max"?r.filter(o=>!isNaN(u(o))):[];return n.length?n.reduce((o,m)=>(t==="min"?u(m)<u(o):u(m)>u(o))?m:o):null}return t==="sum"?i.reduce((n,o)=>n+o,0):t==="avg"?i.reduce((n,o)=>n+o,0)/i.length:t==="min"?Math.min(...i):Math.max(...i)}export{f as a,g as b};
2
+ //# sourceMappingURL=chunk-IODSL7KU.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/data/column.ts"],
4
+ "sourcesContent": ["import { format, type Formatter } from './format';\nimport type { Model } from './model';\n\n/** A grid/table column. `T` is the record shape: `field` then autocompletes its keys (any string still works). */\nexport interface Column<T extends Record<string, any> = any> {\n field: Extract<keyof T, string> | (string & {});\n header?: string;\n /** Fixed width in px. */\n width?: number;\n /** Share of the free space (like CSS `fr`). Default 1 when there is no `width`. */\n flex?: number;\n /** A label that groups columns (\"Identification\", \"Values\"...): a band over the header and sections in the column menu. */\n group?: string;\n minWidth?: number;\n /** Upper bound when the user resizes it. */\n maxWidth?: number;\n /** `false` keeps a column's width fixed even when the grid has `resizableColumns`. */\n resizable?: boolean;\n align?: 'left' | 'center' | 'right';\n sortable?: boolean;\n hidden?: boolean;\n /** Pinned to the start or the end while the body scrolls sideways (give it a `width`; default 140). The columns of one edge stay together. */\n locked?: 'start' | 'end';\n /** With `grouping()` or `columnTotals()`: what the total shows. Numbers: `sum`, `avg`, `min`, `max`, `count`; dates: `min` (earliest), `max` (latest), `count`; or your own function of the values. */\n summary?: 'sum' | 'avg' | 'min' | 'max' | 'count' | ((values: any[], recs: Model<T>[]) => unknown);\n /** Text for the total of this column (default: the column's `format`, else the plain value). */\n summaryRenderer?: (value: any, col: Column<T>) => string | Node;\n /** Left out while `setPermissionResolver` denies it. */\n permission?: string;\n /** Name registered with `registerFormat` (`money`, `date`, `number`, `percent`, `bool`, `duration`: minutes as `7h 30m`) or a function. */\n format?: string | Formatter;\n /** Full control over the cell content. Text is escaped; return a Node for markup. */\n renderer?: (value: any, rec: Model<T>, col: Column<T>) => string | Node;\n cls?: string;\n /** With the `cellEditing()` grid plugin: `true` (an editor for the value's type), a field type (`'select'`) or a field config. */\n editor?: boolean | string | Record<string, any>;\n /** With `cellEditing()`: whether this record's cell can be edited (default: every record, when `editor` is set). */\n editable?: (rec: Model<T>) => boolean;\n}\n\n/** Cell content for a record: `renderer` first, then `format`, then the plain value. */\nexport function cellContent<T extends Record<string, any>>(col: Column<T>, rec: Model<T>): string | Node {\n const v = rec.data[col.field];\n if (col.renderer) return col.renderer(v, rec, col);\n if (col.format) return format(col.format, v);\n return v == null ? '' : String(v);\n}\n\nconst num = (v: unknown) => (typeof v === 'number' ? v : Number(v));\nconst time = (v: unknown) => (v instanceof Date ? +v : typeof v === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(v) ? Date.parse(v) : NaN);\n\n/** The value of a column's `summary` over some records. */\nexport function summarize(col: Column, recs: Model[]): unknown {\n const values = recs.map((r) => r.data[col.field]);\n const nums = values.filter((v) => v != null && v !== '' && !isNaN(num(v))).map(num);\n const s = col.summary;\n if (typeof s === 'function') return s(values, recs);\n if (s === 'count') return values.filter((v) => v != null && v !== '').length;\n if (!nums.length) {\n // dates have no sum: min/max give the earliest and the latest, as the value the record holds\n const dates = s === 'min' || s === 'max' ? values.filter((v) => !isNaN(time(v))) : [];\n return dates.length ? dates.reduce((a, b) => ((s === 'min' ? time(b) < time(a) : time(b) > time(a)) ? b : a)) : null;\n }\n if (s === 'sum') return nums.reduce((a, b) => a + b, 0);\n if (s === 'avg') return nums.reduce((a, b) => a + b, 0) / nums.length;\n return s === 'min' ? Math.min(...nums) : Math.max(...nums);\n}\n"],
5
+ "mappings": "wCAyCO,SAASA,EAA2CC,EAAgBC,EAA8B,CACvG,IAAMC,EAAID,EAAI,KAAKD,EAAI,KAAK,EAC5B,OAAIA,EAAI,SAAiBA,EAAI,SAASE,EAAGD,EAAKD,CAAG,EAC7CA,EAAI,OAAeG,EAAOH,EAAI,OAAQE,CAAC,EACpCA,GAAK,KAAO,GAAK,OAAOA,CAAC,CAClC,CAEA,IAAME,EAAOF,GAAgB,OAAOA,GAAM,SAAWA,EAAI,OAAOA,CAAC,EAC3DG,EAAQH,GAAgBA,aAAa,KAAO,CAACA,EAAI,OAAOA,GAAM,UAAY,qBAAqB,KAAKA,CAAC,EAAI,KAAK,MAAMA,CAAC,EAAI,IAGxH,SAASI,EAAUN,EAAaO,EAAwB,CAC7D,IAAMC,EAASD,EAAK,IAAKE,GAAMA,EAAE,KAAKT,EAAI,KAAK,CAAC,EAC1CU,EAAOF,EAAO,OAAQN,GAAMA,GAAK,MAAQA,IAAM,IAAM,CAAC,MAAME,EAAIF,CAAC,CAAC,CAAC,EAAE,IAAIE,CAAG,EAC5EO,EAAIX,EAAI,QACd,GAAI,OAAOW,GAAM,WAAY,OAAOA,EAAEH,EAAQD,CAAI,EAClD,GAAII,IAAM,QAAS,OAAOH,EAAO,OAAQN,GAAMA,GAAK,MAAQA,IAAM,EAAE,EAAE,OACtE,GAAI,CAACQ,EAAK,OAAQ,CAEhB,IAAME,EAAQD,IAAM,OAASA,IAAM,MAAQH,EAAO,OAAQN,GAAM,CAAC,MAAMG,EAAKH,CAAC,CAAC,CAAC,EAAI,CAAC,EACpF,OAAOU,EAAM,OAASA,EAAM,OAAO,CAACC,EAAGC,KAAQH,IAAM,MAAQN,EAAKS,CAAC,EAAIT,EAAKQ,CAAC,EAAIR,EAAKS,CAAC,EAAIT,EAAKQ,CAAC,GAAKC,EAAID,CAAE,EAAI,IAClH,CACA,OAAIF,IAAM,MAAcD,EAAK,OAAO,CAACG,EAAGC,IAAMD,EAAIC,EAAG,CAAC,EAClDH,IAAM,MAAcD,EAAK,OAAO,CAACG,EAAGC,IAAMD,EAAIC,EAAG,CAAC,EAAIJ,EAAK,OACxDC,IAAM,MAAQ,KAAK,IAAI,GAAGD,CAAI,EAAI,KAAK,IAAI,GAAGA,CAAI,CAC3D",
6
+ "names": ["cellContent", "col", "rec", "v", "format", "num", "time", "summarize", "recs", "values", "r", "nums", "s", "dates", "a", "b"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{a as g}from"./chunk-JE56CJX2.js";import{a as h}from"./chunk-2QMI2RRB.js";import{b as i}from"./chunk-PZSHOSOS.js";import{e as d,f as l}from"./chunk-S4QD5NID.js";d("en",{shortcuts:"Keyboard shortcuts",shortcutsGlobal:"Everywhere",shortcutsEmpty:"No shortcuts registered"});d("pt-BR",{shortcuts:"Atalhos de teclado",shortcutsGlobal:"Em qualquer tela",shortcutsEmpty:"Nenhum atalho registrado"});var y=()=>/mac|iphone|ipad/i.test(navigator.platform||navigator.userAgent),f=t=>{let s=t.toLowerCase().split("+").map(e=>e.trim()),o=s.pop();return[...s.sort(),o].join("+")};function w(t,s){let o=s.toLowerCase().split("+"),e=o.pop(),r=v=>o.includes(v),c=y(),b=e.length===1&&!/[a-z0-9]/.test(e);return t.key.toLowerCase()===e&&t.ctrlKey===(r("ctrl")||r("mod")&&!c)&&t.metaKey===(r("meta")||r("mod")&&c)&&t.altKey===r("alt")&&(b||t.shiftKey===r("shift"))}function E(t){let s=y(),o=s?{mod:"\u2318",ctrl:"\u2303",alt:"\u2325",shift:"\u21E7",meta:"\u2318"}:{mod:"Ctrl",ctrl:"Ctrl",alt:"Alt",shift:"Shift",meta:"Meta"};return t.split("+").map(e=>o[e.toLowerCase()]??(e.length===1?e.toUpperCase():e[0].toUpperCase()+e.slice(1))).join(s?"":"+")}var n=[],a,m=!1,p,k=t=>t instanceof HTMLElement&&(t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName));function K(t){if(t.defaultPrevented||t.isComposing)return;let s=t.ctrlKey||t.metaKey||t.altKey,o=[...n].sort((e,r)=>+((r.scope??"global")===a)-+((e.scope??"global")===a)).find(e=>((e.scope??"global")==="global"||e.scope===a)&&w(t,e.keys)&&(s||e.inInputs||!k(t.target))&&(e.when?.()??!0));o&&o.handler(t)!==!1&&t.preventDefault()}var u={register(t){let s=Array.isArray(t)?t:[t];!m&&typeof document<"u"&&(m=!0,document.addEventListener("keydown",K),u.register({keys:"shift+?",title:l("shortcuts"),handler:()=>u.help()}));for(let o of s){let e=n.findIndex(r=>(r.scope??"global")===(o.scope??"global")&&f(r.keys)===f(o.keys));e>=0&&(h()&&console.warn(`Optikos: shortcut ${o.keys} is already taken in scope "${o.scope??"global"}" by "${n[e].title}"; "${o.title}" replaces it`),n.splice(e,1)),n.push(o)}return()=>{for(let o of s){let e=n.indexOf(o);e>=0&&n.splice(e,1)}}},setScope(t){a=t},getScope:()=>a,list:()=>n.filter(t=>(t.scope??"global")==="global"||t.scope===a),help(){if(p)return void p.close();let t=new Map;for(let e of u.list()){let r=e.group??((e.scope??"global")==="global"?l("shortcutsGlobal"):e.scope);t.set(r,[...t.get(r)??[],e])}let s=i("div","op-shortcuts");for(let[e,r]of t)s.append(i("h3","op-shortcuts__group",{},e),...r.map(c=>i("div","op-shortcuts__row",{},i("span","",{},c.title),i("kbd","op-shortcuts__kbd",{},E(c.keys)))));t.size||s.append(l("shortcutsEmpty"));let o=p=new g({title:l("shortcuts"),closable:!0,width:420});o.on("destroy",()=>p=void 0),o.show(),o.getBody().replaceChildren(s)}};export{E as a,u as b};
2
- //# sourceMappingURL=chunk-EXIADWI7.js.map
1
+ import{a as h}from"./chunk-2QMI2RRB.js";import{a as g}from"./chunk-Z6HZY2YG.js";import{b as i}from"./chunk-PZSHOSOS.js";import{e as d,f as l}from"./chunk-S4QD5NID.js";d("en",{shortcuts:"Keyboard shortcuts",shortcutsGlobal:"Everywhere",shortcutsEmpty:"No shortcuts registered"});d("pt-BR",{shortcuts:"Atalhos de teclado",shortcutsGlobal:"Em qualquer tela",shortcutsEmpty:"Nenhum atalho registrado"});var y=()=>/mac|iphone|ipad/i.test(navigator.platform||navigator.userAgent),f=t=>{let s=t.toLowerCase().split("+").map(e=>e.trim()),o=s.pop();return[...s.sort(),o].join("+")};function w(t,s){let o=s.toLowerCase().split("+"),e=o.pop(),r=v=>o.includes(v),c=y(),b=e.length===1&&!/[a-z0-9]/.test(e);return t.key.toLowerCase()===e&&t.ctrlKey===(r("ctrl")||r("mod")&&!c)&&t.metaKey===(r("meta")||r("mod")&&c)&&t.altKey===r("alt")&&(b||t.shiftKey===r("shift"))}function E(t){let s=y(),o=s?{mod:"\u2318",ctrl:"\u2303",alt:"\u2325",shift:"\u21E7",meta:"\u2318"}:{mod:"Ctrl",ctrl:"Ctrl",alt:"Alt",shift:"Shift",meta:"Meta"};return t.split("+").map(e=>o[e.toLowerCase()]??(e.length===1?e.toUpperCase():e[0].toUpperCase()+e.slice(1))).join(s?"":"+")}var n=[],a,m=!1,p,k=t=>t instanceof HTMLElement&&(t.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName));function K(t){if(t.defaultPrevented||t.isComposing)return;let s=t.ctrlKey||t.metaKey||t.altKey,o=[...n].sort((e,r)=>+((r.scope??"global")===a)-+((e.scope??"global")===a)).find(e=>((e.scope??"global")==="global"||e.scope===a)&&w(t,e.keys)&&(s||e.inInputs||!k(t.target))&&(e.when?.()??!0));o&&o.handler(t)!==!1&&t.preventDefault()}var u={register(t){let s=Array.isArray(t)?t:[t];!m&&typeof document<"u"&&(m=!0,document.addEventListener("keydown",K),u.register({keys:"shift+?",title:l("shortcuts"),handler:()=>u.help()}));for(let o of s){let e=n.findIndex(r=>(r.scope??"global")===(o.scope??"global")&&f(r.keys)===f(o.keys));e>=0&&(h()&&console.warn(`Optikos: shortcut ${o.keys} is already taken in scope "${o.scope??"global"}" by "${n[e].title}"; "${o.title}" replaces it`),n.splice(e,1)),n.push(o)}return()=>{for(let o of s){let e=n.indexOf(o);e>=0&&n.splice(e,1)}}},setScope(t){a=t},getScope:()=>a,list:()=>n.filter(t=>(t.scope??"global")==="global"||t.scope===a),help(){if(p)return void p.close();let t=new Map;for(let e of u.list()){let r=e.group??((e.scope??"global")==="global"?l("shortcutsGlobal"):e.scope);t.set(r,[...t.get(r)??[],e])}let s=i("div","op-shortcuts");for(let[e,r]of t)s.append(i("h3","op-shortcuts__group",{},e),...r.map(c=>i("div","op-shortcuts__row",{},i("span","",{},c.title),i("kbd","op-shortcuts__kbd",{},E(c.keys)))));t.size||s.append(l("shortcutsEmpty"));let o=p=new g({title:l("shortcuts"),closable:!0,width:420});o.on("destroy",()=>p=void 0),o.show(),o.getBody().replaceChildren(s)}};export{E as a,u as b};
2
+ //# sourceMappingURL=chunk-J2TCHWYD.js.map
@@ -1,2 +1,2 @@
1
- import{a as h}from"./chunk-GFFZTFQH.js";import{a as l}from"./chunk-HLS5FI55.js";import{a as c,c as d}from"./chunk-TIPK3SCJ.js";import{f as s}from"./chunk-UDXO3KM3.js";import{b as n}from"./chunk-PZSHOSOS.js";import{f as a}from"./chunk-S4QD5NID.js";var m=r=>r instanceof s?r.config:r,g=new Map;function A(r,t){g.set(r,t)}function y(r){let t=typeof r=="string"?g.get(r):r;if(!t)throw new Error(`Optikos: unknown lookup "${r}". Did you call registerLookup?`);return t}var v=r=>typeof r.store=="function"?r.store():r.store,k=r=>!r||r==="textfield"||r==="textarea",w=r=>r==null||r===""||Array.isArray(r)&&!r.length,f=class extends s{baseCls="op-searchgrid";def;store;fields=[];grid;form;build(){this.def=y(this.config.lookup),this.store=v(this.def);let t=this.def;this.form=n("div","op-searchgrid__filters",{role:"search"});let i=[new l({text:a("search"),icon:"search",variant:"primary",handler:()=>{this.search()}}),new l({text:a("clear"),handler:()=>this.clear()})];return this.fields=(t.filters??[]).map(e=>{let o=m(e),{op:x,field:C,...u}=o,p=e instanceof s?e:d({...u,renderTo:void 0});return p.on("enter",()=>{this.search()}),{cfg:o,cmp:p,own:!(e instanceof s)}}),this.form.append(...this.fields.map(e=>e.cmp.el),n("div","op-searchgrid__buttons",{},...i.map(e=>e.el))),this.grid=new h({store:this.store,columns:t.columns,selection:t.selection??"single",paging:t.paging!==!1,flex:1}),this.grid.on("select",e=>this.emit("select",e)),this.grid.on("row-activate",()=>this.confirm()),this.grid.on("row-dblclick",()=>this.confirm()),this.own(()=>[...i,this.grid,...this.fields.filter(e=>e.own).map(e=>e.cmp)].forEach(e=>e.destroy())),n("div",this.baseCls,{},this.form,this.grid.el)}onRender(){this.def.autoSearch!==!1&&this.search()}notifyMount(){super.notifyMount(),this.fields.forEach(t=>t.cmp.notifyMount()),this.grid.notifyMount()}confirm(){let t=this.grid.getSelection();t.length&&this.emit("confirm",t)}getFilters(){return this.fields.flatMap(({cfg:t,cmp:i})=>{let e=i.getValue?.();if(w(e))return[];let o=t.field??t.name;return typeof e=="object"&&!Array.isArray(e)&&"start"in e?e.start?[{field:o,op:"between",value:[e.start,e.end??e.start]}]:[]:[{field:o,op:t.op??(k(t.type)?"contains":"eq"),value:e}]})}async search(t){t!=null&&this.setQuery(t);let i=this.getFilters();this.emit("before-search",i)!==!1&&(await(i.length?this.store.filter(i):this.store.clearFilter()),this.emit("search",i))}clear(){this.fields.forEach(t=>t.cmp.clear?.()),this.search()}setQuery(t){let i=this.def.queryField??(this.def.filters?.[0]&&m(this.def.filters[0]).name);this.fields.find(e=>e.cfg.name===i)?.cmp?.setValue?.(t)}getSelection(){return this.grid.getSelection()}getGrid(){return this.grid}getStore(){return this.store}focus(){(this.fields[0]?.cmp??this.grid).focus()}};c("searchgrid",f);export{m as a,A as b,y as c,v as d,f as e};
2
- //# sourceMappingURL=chunk-IUOEPAWG.js.map
1
+ import{a as h}from"./chunk-LXWCTCZV.js";import{a as l}from"./chunk-ESRS5ZQV.js";import{a as c,c as d}from"./chunk-TIPK3SCJ.js";import{f as s}from"./chunk-UDXO3KM3.js";import{b as n}from"./chunk-PZSHOSOS.js";import{f as a}from"./chunk-S4QD5NID.js";var m=r=>r instanceof s?r.config:r,g=new Map;function A(r,t){g.set(r,t)}function y(r){let t=typeof r=="string"?g.get(r):r;if(!t)throw new Error(`Optikos: unknown lookup "${r}". Did you call registerLookup?`);return t}var v=r=>typeof r.store=="function"?r.store():r.store,k=r=>!r||r==="textfield"||r==="textarea",w=r=>r==null||r===""||Array.isArray(r)&&!r.length,f=class extends s{baseCls="op-searchgrid";def;store;fields=[];grid;form;build(){this.def=y(this.config.lookup),this.store=v(this.def);let t=this.def;this.form=n("div","op-searchgrid__filters",{role:"search"});let i=[new l({text:a("search"),icon:"search",variant:"primary",handler:()=>{this.search()}}),new l({text:a("clear"),handler:()=>this.clear()})];return this.fields=(t.filters??[]).map(e=>{let o=m(e),{op:x,field:C,...u}=o,p=e instanceof s?e:d({...u,renderTo:void 0});return p.on("enter",()=>{this.search()}),{cfg:o,cmp:p,own:!(e instanceof s)}}),this.form.append(...this.fields.map(e=>e.cmp.el),n("div","op-searchgrid__buttons",{},...i.map(e=>e.el))),this.grid=new h({store:this.store,columns:t.columns,selection:t.selection??"single",paging:t.paging!==!1,flex:1}),this.grid.on("select",e=>this.emit("select",e)),this.grid.on("row-activate",()=>this.confirm()),this.grid.on("row-dblclick",()=>this.confirm()),this.own(()=>[...i,this.grid,...this.fields.filter(e=>e.own).map(e=>e.cmp)].forEach(e=>e.destroy())),n("div",this.baseCls,{},this.form,this.grid.el)}onRender(){this.def.autoSearch!==!1&&this.search()}notifyMount(){super.notifyMount(),this.fields.forEach(t=>t.cmp.notifyMount()),this.grid.notifyMount()}confirm(){let t=this.grid.getSelection();t.length&&this.emit("confirm",t)}getFilters(){return this.fields.flatMap(({cfg:t,cmp:i})=>{let e=i.getValue?.();if(w(e))return[];let o=t.field??t.name;return typeof e=="object"&&!Array.isArray(e)&&"start"in e?e.start?[{field:o,op:"between",value:[e.start,e.end??e.start]}]:[]:[{field:o,op:t.op??(k(t.type)?"contains":"eq"),value:e}]})}async search(t){t!=null&&this.setQuery(t);let i=this.getFilters();this.emit("before-search",i)!==!1&&(await(i.length?this.store.filter(i):this.store.clearFilter()),this.emit("search",i))}clear(){this.fields.forEach(t=>t.cmp.clear?.()),this.search()}setQuery(t){let i=this.def.queryField??(this.def.filters?.[0]&&m(this.def.filters[0]).name);this.fields.find(e=>e.cfg.name===i)?.cmp?.setValue?.(t)}getSelection(){return this.grid.getSelection()}getGrid(){return this.grid}getStore(){return this.store}focus(){(this.fields[0]?.cmp??this.grid).focus()}};c("searchgrid",f);export{m as a,A as b,y as c,v as d,f as e};
2
+ //# sourceMappingURL=chunk-J5BZAKC6.js.map
@@ -1,2 +1,2 @@
1
- import{a as d}from"./chunk-JE56CJX2.js";import{a as x}from"./chunk-AQ3RTHG5.js";import{a as m}from"./chunk-2YRQULDC.js";import{d as p}from"./chunk-DIOJGTUN.js";import{c}from"./chunk-BQEFLPDA.js";import{f as r}from"./chunk-S4QD5NID.js";function s(t){return new Promise(e=>{let a=!1,l=o=>{a||(a=!0,e(o))},i=t.input?new m({value:t.input.value??"",placeholder:t.input.placeholder,validators:t.input.validators,ariaLabel:t.text}):void 0,u=new x({text:t.text,flex:1}),n=new d({title:t.title,cls:"op-messagebox",closeAction:"destroy",mask:t.mask??!1,autoFocus:!!t.input?.autoFocus,items:[new c({layout:{type:"hbox",gap:12,align:"flex-start"},items:[...t.icon?[new p({name:t.icon,cls:"op-messagebox__icon"})]:[],new c({layout:{type:"vbox"},flex:1,items:[u,...i?[i]:[]]})]})],buttons:t.buttons.map(o=>({text:o.text,variant:o.variant??"default",handler:()=>{t.beforeClose?.(o.id,n,i)!==!1&&(l(o.id),n.close())}}))});n.el.setAttribute("role",t.input?"dialog":"alertdialog"),n.el.setAttribute("aria-describedby",u.id),n.on("close",()=>l(t.cancelId??t.buttons[t.buttons.length-1].id));let g=t.buttons.find(o=>o.variant==="primary"||o.variant==="danger");i?.on("enter",()=>n.el.querySelectorAll(".op-panel__footer button")[t.buttons.indexOf(g??t.buttons[0])].click()),n.show(),i||n.el.querySelector(".op-panel__footer .op-button--primary, .op-panel__footer .op-button--danger")?.focus()})}var b={show:s,async alert(t,e={}){await s({text:t,title:e.title,mask:e.mask,icon:e.icon??"info",buttons:[{id:"ok",text:e.okText??r("ok"),variant:"primary"}],cancelId:"ok"})},async confirm(t,e={}){return await s({text:t,title:e.title,mask:e.mask,icon:e.icon??(e.danger?"alert":"info"),buttons:[{id:"cancel",text:e.cancelText??r("cancel")},{id:"ok",text:e.okText??r("ok"),variant:e.danger?"danger":"primary"}],cancelId:"cancel"})==="ok"},async prompt(t,e={}){let a=null;return await s({text:t,title:e.title,mask:e.mask,input:{value:e.value,placeholder:e.placeholder,validators:e.validators,autoFocus:e.autoFocus},buttons:[{id:"cancel",text:e.cancelText??r("cancel")},{id:"ok",text:e.okText??r("ok"),variant:"primary"}],cancelId:"cancel",beforeClose:(i,u,n)=>{if(i==="ok"){if(!n.validate())return!1;a=n.getValue()}}})==="ok"?a:null}};d.ask=(t,e)=>b.confirm(t,{danger:!0,...e});export{b as a};
2
- //# sourceMappingURL=chunk-5BMG5ZBY.js.map
1
+ import{a as d}from"./chunk-Z6HZY2YG.js";import{a as m}from"./chunk-LHWY6G6Q.js";import{a as x}from"./chunk-AQ3RTHG5.js";import{d as p}from"./chunk-DIOJGTUN.js";import{c}from"./chunk-BQEFLPDA.js";import{f as r}from"./chunk-S4QD5NID.js";function s(t){return new Promise(e=>{let a=!1,l=o=>{a||(a=!0,e(o))},i=t.input?new m({value:t.input.value??"",placeholder:t.input.placeholder,validators:t.input.validators,ariaLabel:t.text}):void 0,u=new x({text:t.text,flex:1}),n=new d({title:t.title,cls:"op-messagebox",closeAction:"destroy",mask:t.mask??!1,autoFocus:!!t.input?.autoFocus,items:[new c({layout:{type:"hbox",gap:12,align:"flex-start"},items:[...t.icon?[new p({name:t.icon,cls:"op-messagebox__icon"})]:[],new c({layout:{type:"vbox"},flex:1,items:[u,...i?[i]:[]]})]})],buttons:t.buttons.map(o=>({text:o.text,variant:o.variant??"default",handler:()=>{t.beforeClose?.(o.id,n,i)!==!1&&(l(o.id),n.close())}}))});n.el.setAttribute("role",t.input?"dialog":"alertdialog"),n.el.setAttribute("aria-describedby",u.id),n.on("close",()=>l(t.cancelId??t.buttons[t.buttons.length-1].id));let g=t.buttons.find(o=>o.variant==="primary"||o.variant==="danger");i?.on("enter",()=>n.el.querySelectorAll(".op-panel__footer button")[t.buttons.indexOf(g??t.buttons[0])].click()),n.show(),i||n.el.querySelector(".op-panel__footer .op-button--primary, .op-panel__footer .op-button--danger")?.focus()})}var b={show:s,async alert(t,e={}){await s({text:t,title:e.title,mask:e.mask,icon:e.icon??"info",buttons:[{id:"ok",text:e.okText??r("ok"),variant:"primary"}],cancelId:"ok"})},async confirm(t,e={}){return await s({text:t,title:e.title,mask:e.mask,icon:e.icon??(e.danger?"alert":"info"),buttons:[{id:"cancel",text:e.cancelText??r("cancel")},{id:"ok",text:e.okText??r("ok"),variant:e.danger?"danger":"primary"}],cancelId:"cancel"})==="ok"},async prompt(t,e={}){let a=null;return await s({text:t,title:e.title,mask:e.mask,input:{value:e.value,placeholder:e.placeholder,validators:e.validators,autoFocus:e.autoFocus},buttons:[{id:"cancel",text:e.cancelText??r("cancel")},{id:"ok",text:e.okText??r("ok"),variant:"primary"}],cancelId:"cancel",beforeClose:(i,u,n)=>{if(i==="ok"){if(!n.validate())return!1;a=n.getValue()}}})==="ok"?a:null}};d.ask=(t,e)=>b.confirm(t,{danger:!0,...e});export{b as a};
2
+ //# sourceMappingURL=chunk-JBOKM5YA.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-H25XXQVH.js";import{a as h}from"./chunk-RG6SHPHF.js";import{a as d}from"./chunk-2YRQULDC.js";import{c as l}from"./chunk-DIOJGTUN.js";import{a as r}from"./chunk-V5G5JECN.js";import{b as n}from"./chunk-PZSHOSOS.js";var p=class extends d{baseCls="op-field op-textfield op-picker";items=[];selection;typed=!1;list;dd;triggerEl;idEl;wrapEl;buffer="";bufferTimer;editable(){return!0}hasTrigger(){return!0}onType(t){}toItem(t){if(typeof t!="object")return{value:t,label:String(t)};let e=this.config.valueField??"value",i=this.config.displayField??"label";return{value:t[e],label:String(t[i]??t[e]??""),disabled:!!t.disabled,raw:t,hint:this.config.showValue?String(t[e]):void 0}}loadItems(){let t=this.config;this.items=t.store?t.store.getData().map(e=>this.toItem(e)):(t.options??[]).map(e=>this.toItem(e))}setOptions(t){this.config.options=t,this.loadItems(),this.refreshList(),this.rendered&&this.applyValue(this.value)}setStore(t){this.config.store=t,this.bindStore(),this.loadItems(),this.refreshList()}offStore;bindStore(){this.offStore?.(),this.offStore=this.config.store?.subscribe(()=>{this.loadItems(),this.refreshList(),this.rendered&&this.applyValue(this.value)})}findItem(t){return this.items.find(e=>e.value===t)??(this.selection?.value===t?this.selection:void 0)}getSelection(){return this.selection}setValue(t,e=!1){let i=t;i&&typeof i=="object"&&"value"in i&&"label"in i?this.setSelection({value:i.value,label:String(i.label)},e):super.setValue(t,e)}fillFrom(t){let e=this.config.displayFrom?r(t,this.config.displayFrom):void 0,i=this.name?r(t,this.name):void 0;e!=null&&i!=null?this.setSelection({value:i,label:String(e)},!0):super.fillFrom(t)}setSelection(t,e=!1){this.selection=t,this.setValue(t?t.value:this.emptyValue(),e)}visibleItems(){return this.items}refreshList(){if(!this.list)return;let t=this.visibleItems();this.list.setItems(t),this.list.setSelected(this.value);let e=t.findIndex(i=>i.value===this.value&&!i.disabled);this.list.setActive(this.typed||e<0?t.findIndex(i=>!i.disabled):e),this.syncActive()}syncActive(){if(!this.rendered)return;let t=this.list.getActiveId();t&&this.dd.isOpen()?this.input.setAttribute("aria-activedescendant",t):this.input.removeAttribute("aria-activedescendant")}createControl(){let t=super.createControl(),e=this.input;return this.wrapEl=t,this.config.showValue&&(this.idEl=n("span","op-picker__id"),this.idEl.hidden=!0,t.prepend(this.idEl)),this.list=new a({emptyText:this.config.emptyText,maxHeight:this.config.maxHeight,highlight:""}),e.setAttribute("role","combobox"),e.setAttribute("aria-haspopup","listbox"),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-autocomplete",this.editable()?"list":"none"),e.setAttribute("aria-controls",this.list.id),e.autocomplete="off",this.hasTrigger()&&(this.triggerEl=n("button","op-picker__trigger",{type:"button",tabindex:-1,"aria-hidden":"true"},l("chevron-down")),this.listen(this.triggerEl,"mousedown",i=>i.preventDefault()),this.listen(this.triggerEl,"click",()=>{this.config.disabled||this.config.readonly||(e.focus(),this.toggle())}),t.append(this.triggerEl)),this.dd=new h({anchor:t,content:this.list,matchWidth:!0,role:"presentation"}),this.dd.on("open",()=>{e.setAttribute("aria-expanded","true"),this.el.classList.add("is-open"),this.list.refresh(),this.syncActive(),this.emit("expand")}),this.dd.on("close",()=>{e.setAttribute("aria-expanded","false"),this.el.classList.remove("is-open"),e.removeAttribute("aria-activedescendant"),this.emit("collapse")}),this.list.on("select",i=>this.pick(i)),this.list.on("active-change",()=>this.syncActive()),this.own(()=>{this.offStore?.(),this.dd.destroy()}),t}onRender(){this.bindStore(),this.loadItems(),super.onRender(),this.editable()?this.config.openOnFocus&&this.listen(this.input,"focus",()=>this.open()):(this.input.readOnly=!0,this.listen(this.input,"click",()=>this.toggle())),this.on("blur",()=>this.settle()),this.refreshList()}onReadonly(t){this.input.readOnly=t||!this.editable(),t&&this.dd?.close()}onDisabled(t){super.onDisabled(t),this.triggerEl&&(this.triggerEl.disabled=t),t&&this.dd?.close()}applyValue(t){let e=this.findItem(t);e?this.selection=e:this.selection&&this.selection.value!==t&&(this.selection=void 0),this.typed=!1,this.input.value=e?e.label:this.display(t),this.el.classList.toggle("has-value",!!this.input.value),this.list?.setSelected(t),this.paintId()}paintId(){let t=this.idEl;if(!t)return;let e=this.selection;t.hidden=!e||this.typed||this.isEmpty(this.value),t.textContent=t.hidden?"":String(e.value),this.wrapEl.style.setProperty("--op-picker-id-width",t.hidden?"0px":`${t.offsetWidth}px`),this.wrapEl.classList.toggle("has-id",!t.hidden)}getDisplayText(){return this.rendered?this.input.value:this.findItem(this.value)?.label??this.display(this.value)}open(){this.config.disabled||this.config.readonly||!this.rendered||(this.typed||this.refreshList(),this.dd.open())}close(){this.dd?.close()}toggle(){this.dd.isOpen()?this.close():this.open()}expand(){this.open()}collapse(){this.close()}pick(t){t.disabled||(this.selection=t,this.typed=!1,this.input.value=t.label,this.el.classList.add("has-value"),this.commit(t.value),this.paintId(),this.close(),this.emit("select",t))}settle(){if(this.close(),!this.editable()||!this.typed)return;this.typed=!1;let t=this.input.value;!t&&this.config.forceSelection!==!1?(this.selection=void 0,this.commit(this.emptyValue())):this.config.forceSelection===!1?(this.selection=void 0,this.commit(t)):this.input.value=this.selection?.label??"",this.el.classList.toggle("has-value",!!this.input.value),this.paintId(),this.refreshList()}onInput(){this.el.classList.toggle("has-value",!!this.input.value),this.editable()&&(this.typed=!0,this.paintId(),this.config.forceSelection===!1&&this.commit(this.input.value),this.onType(this.input.value))}onKey(t){let e=this.dd.isOpen();switch(t.key){case"ArrowDown":case"ArrowUp":{if(t.preventDefault(),!e)return this.open();this.list.moveActive(t.key==="ArrowDown"?1:-1);return}case"Enter":e?(t.preventDefault(),this.list.getActive()?this.list.activate():this.close()):super.onKey(t);return;case"Home":case"End":e&&!this.editable()&&(t.preventDefault(),this.list.setActive(t.key==="Home"?this.items.findIndex(i=>!i.disabled):this.items.length-1-[...this.items].reverse().findIndex(i=>!i.disabled)));return;case"Tab":e&&this.typed&&this.config.forceSelection!==!1&&this.list.getActive()&&this.list.activate();return;case" ":this.editable()||(t.preventDefault(),e&&this.list.getActive()?this.list.activate():this.open());return;default:!this.editable()&&t.key.length===1&&!t.ctrlKey&&!t.metaKey&&!t.altKey?this.typeahead(t.key):super.onKey(t)}}typeahead(t){clearTimeout(this.bufferTimer),this.buffer+=t.toLowerCase(),this.bufferTimer=setTimeout(()=>this.buffer="",600),this.own(()=>clearTimeout(this.bufferTimer));let e=this.visibleItems(),i=this.dd.isOpen()?this.list.getActiveIndex():e.findIndex(s=>s.value===this.value),o=[...e.keys()].map((s,c)=>(i+(this.buffer.length>1?0:1)+c)%e.length).find(s=>!e[s].disabled&&e[s].label.toLowerCase().startsWith(this.buffer));o!=null&&(this.dd.isOpen()?this.list.setActive(o):this.pick(e[o]))}setEmptyText(t){this.config.emptyText=t,this.list?.setEmptyText(t)}};export{p as a};
2
- //# sourceMappingURL=chunk-N2LS4JD6.js.map
1
+ import{a}from"./chunk-H25XXQVH.js";import{a as d}from"./chunk-LHWY6G6Q.js";import{a as h}from"./chunk-6NP4AEV4.js";import{c as l}from"./chunk-DIOJGTUN.js";import{b as n}from"./chunk-PZSHOSOS.js";import{a as r}from"./chunk-V5G5JECN.js";var p=class extends d{baseCls="op-field op-textfield op-picker";items=[];selection;typed=!1;list;dd;triggerEl;idEl;wrapEl;buffer="";bufferTimer;editable(){return!0}hasTrigger(){return!0}onType(t){}toItem(t){if(typeof t!="object")return{value:t,label:String(t)};let e=this.config.valueField??"value",i=this.config.displayField??"label";return{value:t[e],label:String(t[i]??t[e]??""),disabled:!!t.disabled,raw:t,hint:this.config.showValue?String(t[e]):void 0}}loadItems(){let t=this.config;this.items=t.store?t.store.getData().map(e=>this.toItem(e)):(t.options??[]).map(e=>this.toItem(e))}setOptions(t){this.config.options=t,this.loadItems(),this.refreshList(),this.rendered&&this.applyValue(this.value)}setStore(t){this.config.store=t,this.bindStore(),this.loadItems(),this.refreshList()}offStore;bindStore(){this.offStore?.(),this.offStore=this.config.store?.subscribe(()=>{this.loadItems(),this.refreshList(),this.rendered&&this.applyValue(this.value)})}findItem(t){return this.items.find(e=>e.value===t)??(this.selection?.value===t?this.selection:void 0)}getSelection(){return this.selection}setValue(t,e=!1){let i=t;i&&typeof i=="object"&&"value"in i&&"label"in i?this.setSelection({value:i.value,label:String(i.label)},e):super.setValue(t,e)}fillFrom(t){let e=this.config.displayFrom?r(t,this.config.displayFrom):void 0,i=this.name?r(t,this.name):void 0;e!=null&&i!=null?this.setSelection({value:i,label:String(e)},!0):super.fillFrom(t)}setSelection(t,e=!1){this.selection=t,this.setValue(t?t.value:this.emptyValue(),e)}visibleItems(){return this.items}refreshList(){if(!this.list)return;let t=this.visibleItems();this.list.setItems(t),this.list.setSelected(this.value);let e=t.findIndex(i=>i.value===this.value&&!i.disabled);this.list.setActive(this.typed||e<0?t.findIndex(i=>!i.disabled):e),this.syncActive()}syncActive(){if(!this.rendered)return;let t=this.list.getActiveId();t&&this.dd.isOpen()?this.input.setAttribute("aria-activedescendant",t):this.input.removeAttribute("aria-activedescendant")}createControl(){let t=super.createControl(),e=this.input;return this.wrapEl=t,this.config.showValue&&(this.idEl=n("span","op-picker__id"),this.idEl.hidden=!0,t.prepend(this.idEl)),this.list=new a({emptyText:this.config.emptyText,maxHeight:this.config.maxHeight,highlight:""}),e.setAttribute("role","combobox"),e.setAttribute("aria-haspopup","listbox"),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-autocomplete",this.editable()?"list":"none"),e.setAttribute("aria-controls",this.list.id),e.autocomplete="off",this.hasTrigger()&&(this.triggerEl=n("button","op-picker__trigger",{type:"button",tabindex:-1,"aria-hidden":"true"},l("chevron-down")),this.listen(this.triggerEl,"mousedown",i=>i.preventDefault()),this.listen(this.triggerEl,"click",()=>{this.config.disabled||this.config.readonly||(e.focus(),this.toggle())}),t.append(this.triggerEl)),this.dd=new h({anchor:t,content:this.list,matchWidth:!0,role:"presentation"}),this.dd.on("open",()=>{e.setAttribute("aria-expanded","true"),this.el.classList.add("is-open"),this.list.refresh(),this.syncActive(),this.emit("expand")}),this.dd.on("close",()=>{e.setAttribute("aria-expanded","false"),this.el.classList.remove("is-open"),e.removeAttribute("aria-activedescendant"),this.emit("collapse")}),this.list.on("select",i=>this.pick(i)),this.list.on("active-change",()=>this.syncActive()),this.own(()=>{this.offStore?.(),this.dd.destroy()}),t}onRender(){this.bindStore(),this.loadItems(),super.onRender(),this.editable()?this.config.openOnFocus&&this.listen(this.input,"focus",()=>this.open()):(this.input.readOnly=!0,this.listen(this.input,"click",()=>this.toggle())),this.on("blur",()=>this.settle()),this.refreshList()}onReadonly(t){this.input.readOnly=t||!this.editable(),t&&this.dd?.close()}onDisabled(t){super.onDisabled(t),this.triggerEl&&(this.triggerEl.disabled=t),t&&this.dd?.close()}applyValue(t){let e=this.findItem(t);e?this.selection=e:this.selection&&this.selection.value!==t&&(this.selection=void 0),this.typed=!1,this.input.value=e?e.label:this.display(t),this.el.classList.toggle("has-value",!!this.input.value),this.list?.setSelected(t),this.paintId()}paintId(){let t=this.idEl;if(!t)return;let e=this.selection;t.hidden=!e||this.typed||this.isEmpty(this.value),t.textContent=t.hidden?"":String(e.value),this.wrapEl.style.setProperty("--op-picker-id-width",t.hidden?"0px":`${t.offsetWidth}px`),this.wrapEl.classList.toggle("has-id",!t.hidden)}getDisplayText(){return this.rendered?this.input.value:this.findItem(this.value)?.label??this.display(this.value)}open(){this.config.disabled||this.config.readonly||!this.rendered||(this.typed||this.refreshList(),this.dd.open())}close(){this.dd?.close()}toggle(){this.dd.isOpen()?this.close():this.open()}expand(){this.open()}collapse(){this.close()}pick(t){t.disabled||(this.selection=t,this.typed=!1,this.input.value=t.label,this.el.classList.add("has-value"),this.commit(t.value),this.paintId(),this.close(),this.emit("select",t))}settle(){if(this.close(),!this.editable()||!this.typed)return;this.typed=!1;let t=this.input.value;!t&&this.config.forceSelection!==!1?(this.selection=void 0,this.commit(this.emptyValue())):this.config.forceSelection===!1?(this.selection=void 0,this.commit(t)):this.input.value=this.selection?.label??"",this.el.classList.toggle("has-value",!!this.input.value),this.paintId(),this.refreshList()}onInput(){this.el.classList.toggle("has-value",!!this.input.value),this.editable()&&(this.typed=!0,this.paintId(),this.config.forceSelection===!1&&this.commit(this.input.value),this.onType(this.input.value))}onKey(t){let e=this.dd.isOpen();switch(t.key){case"ArrowDown":case"ArrowUp":{if(t.preventDefault(),!e)return this.open();this.list.moveActive(t.key==="ArrowDown"?1:-1);return}case"Enter":e?(t.preventDefault(),this.list.getActive()?this.list.activate():this.close()):super.onKey(t);return;case"Home":case"End":e&&!this.editable()&&(t.preventDefault(),this.list.setActive(t.key==="Home"?this.items.findIndex(i=>!i.disabled):this.items.length-1-[...this.items].reverse().findIndex(i=>!i.disabled)));return;case"Tab":e&&this.typed&&this.config.forceSelection!==!1&&this.list.getActive()&&this.list.activate();return;case" ":this.editable()||(t.preventDefault(),e&&this.list.getActive()?this.list.activate():this.open());return;default:!this.editable()&&t.key.length===1&&!t.ctrlKey&&!t.metaKey&&!t.altKey?this.typeahead(t.key):super.onKey(t)}}typeahead(t){clearTimeout(this.bufferTimer),this.buffer+=t.toLowerCase(),this.bufferTimer=setTimeout(()=>this.buffer="",600),this.own(()=>clearTimeout(this.bufferTimer));let e=this.visibleItems(),i=this.dd.isOpen()?this.list.getActiveIndex():e.findIndex(s=>s.value===this.value),o=[...e.keys()].map((s,c)=>(i+(this.buffer.length>1?0:1)+c)%e.length).find(s=>!e[s].disabled&&e[s].label.toLowerCase().startsWith(this.buffer));o!=null&&(this.dd.isOpen()?this.list.setActive(o):this.pick(e[o]))}setEmptyText(t){this.config.emptyText=t,this.list?.setEmptyText(t)}};export{p as a};
2
+ //# sourceMappingURL=chunk-L6DOWGBO.js.map
@@ -1,2 +1,2 @@
1
- import{c as p}from"./chunk-DIOJGTUN.js";import{a as o}from"./chunk-XR677UYD.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{b as n}from"./chunk-PZSHOSOS.js";import{f as s}from"./chunk-S4QD5NID.js";var r=class extends o{baseCls="op-field op-textfield";clearBtn;createInput(){return n("input","op-textfield__input",{type:this.config.inputType??"text"})}get input(){return this.inputEl}createControl(){let t=this.config,e=this.inputEl=this.createInput(),i=n("div","op-textfield__wrap",{},e);return t.placeholder&&(e.placeholder=t.placeholder),t.maxLength!=null&&(e.maxLength=t.maxLength),t.autocomplete&&(e.autocomplete=t.autocomplete),this.listen(e,"input",()=>this.onInput()),this.listen(e,"keydown",a=>this.onKey(a)),t.selectOnFocus&&this.listen(e,"focus",()=>e.select()),t.clearable&&(this.clearBtn=n("button","op-textfield__clear",{type:"button",tabindex:-1,"aria-label":s("clear")},p("x")),this.listen(this.clearBtn,"click",()=>{this.setValue(this.parse("")),e.focus()}),i.append(this.clearBtn)),i}onInput(){this.el.classList.toggle("has-value",!!this.input.value),this.commit(this.parse(this.input.value))}parse(t){return t}display(t){return t==null?"":String(t)}onKey(t){t.key==="Enter"&&!t.defaultPrevented?(this.flushSettled(),this.emit("enter",this.getValue())):t.key==="Escape"&&this.config.clearable&&this.input.value&&(t.stopPropagation(),this.setValue(this.parse("")))}getDisplayText(){return this.rendered?this.input.value:this.display(this.value)}applyValue(t){this.input.value=this.display(t),this.el.classList.toggle("has-value",!!this.input.value)}onReadonly(t){this.input.readOnly=t}onDisabled(t){this.input.disabled=t,this.clearBtn&&(this.clearBtn.disabled=t)}check(){let t=super.check(),e=this.display(this.value),i=this.config;return t||!e?t:i.minLength!=null&&e.length<i.minLength?s("minLength",{n:i.minLength}):i.pattern&&!new RegExp(i.pattern).test(e)?s("pattern"):""}setPlaceholder(t){this.config.placeholder=t,this.rendered&&(this.input.placeholder=t)}setMaxLength(t){this.config.maxLength=t,this.rendered&&(this.input.maxLength=t)}setInputType(t){this.config.inputType=t,this.rendered&&this.input instanceof HTMLInputElement&&(this.input.type=t)}select(){this.input.select()}getInput(){return this.render(),this.input}};l("textfield",r);export{r as a};
2
- //# sourceMappingURL=chunk-2YRQULDC.js.map
1
+ import{c as p}from"./chunk-DIOJGTUN.js";import{a as o}from"./chunk-QVBDBGS4.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{b as n}from"./chunk-PZSHOSOS.js";import{f as s}from"./chunk-S4QD5NID.js";var r=class extends o{baseCls="op-field op-textfield";clearBtn;createInput(){return n("input","op-textfield__input",{type:this.config.inputType??"text"})}get input(){return this.inputEl}createControl(){let t=this.config,e=this.inputEl=this.createInput(),i=n("div","op-textfield__wrap",{},e);return t.placeholder&&(e.placeholder=t.placeholder),t.maxLength!=null&&(e.maxLength=t.maxLength),t.autocomplete&&(e.autocomplete=t.autocomplete),this.listen(e,"input",()=>this.onInput()),this.listen(e,"keydown",a=>this.onKey(a)),t.selectOnFocus&&this.listen(e,"focus",()=>e.select()),t.clearable&&(this.clearBtn=n("button","op-textfield__clear",{type:"button",tabindex:-1,"aria-label":s("clear")},p("x")),this.listen(this.clearBtn,"click",()=>{this.setValue(this.parse("")),e.focus()}),i.append(this.clearBtn)),i}onInput(){this.el.classList.toggle("has-value",!!this.input.value),this.commit(this.parse(this.input.value))}parse(t){return t}display(t){return t==null?"":String(t)}onKey(t){t.key==="Enter"&&!t.defaultPrevented?(this.flushSettled(),this.emit("enter",this.getValue())):t.key==="Escape"&&this.config.clearable&&this.input.value&&(t.stopPropagation(),this.setValue(this.parse("")))}getDisplayText(){return this.rendered?this.input.value:this.display(this.value)}applyValue(t){this.input.value=this.display(t),this.el.classList.toggle("has-value",!!this.input.value)}onReadonly(t){this.input.readOnly=t}onDisabled(t){this.input.disabled=t,this.clearBtn&&(this.clearBtn.disabled=t)}check(){let t=super.check(),e=this.display(this.value),i=this.config;return t||!e?t:i.minLength!=null&&e.length<i.minLength?s("minLength",{n:i.minLength}):i.pattern&&!new RegExp(i.pattern).test(e)?s("pattern"):""}setPlaceholder(t){this.config.placeholder=t,this.rendered&&(this.input.placeholder=t)}setMaxLength(t){this.config.maxLength=t,this.rendered&&(this.input.maxLength=t)}setInputType(t){this.config.inputType=t,this.rendered&&this.input instanceof HTMLInputElement&&(this.input.type=t)}select(){this.input.select()}getInput(){return this.render(),this.input}};l("textfield",r);export{r as a};
2
+ //# sourceMappingURL=chunk-LHWY6G6Q.js.map
@@ -0,0 +1,2 @@
1
+ var t=e=>e,o=t({Default:"default",Primary:"primary",Danger:"danger",Ghost:"ghost"}),n=t({Top:"top",Left:"left"}),r=t({Vertical:"vertical",Horizontal:"horizontal"}),p=t({North:"north",South:"south",West:"west",East:"east",Center:"center"}),s=t({Right:"right",Left:"left",Top:"top",Bottom:"bottom"}),i=t({Fit:"fit",HBox:"hbox",VBox:"vbox",Border:"border",Grid:"grid",Card:"card"}),a=t({None:"none",Single:"single",Multi:"multi"}),y=t({Info:"info",Success:"success",Warning:"warning",Error:"error"}),f=t({Eq:"eq",Ne:"ne",Contains:"contains",NotContains:"notContains",StartsWith:"startsWith",EndsWith:"endsWith",Gt:"gt",Ge:"ge",Lt:"lt",Le:"le",Between:"between",NotBetween:"notBetween",In:"in",Nin:"nin",Empty:"empty",NotEmpty:"notEmpty"}),c=t({Light:"light",Dark:"dark"});export{o as a,n as b,r as c,p as d,s as e,i as f,a as g,y as h,f as i,c as j};
2
+ //# sourceMappingURL=chunk-LLHDEUIA.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/ui/enums.ts"],
4
+ "sourcesContent": ["// Named values for the options that are plain strings in configs. Each is a const object plus a type of the same name,\n// so `Variant.Primary` and `'primary'` are interchangeable: use whichever you like, the editor completes both.\nconst e = <T extends Record<string, string>>(o: T) => o;\n\nexport const Variant = e({ Default: 'default', Primary: 'primary', Danger: 'danger', Ghost: 'ghost' } as const);\nexport type Variant = (typeof Variant)[keyof typeof Variant];\n\nexport const LabelPos = e({ Top: 'top', Left: 'left' } as const);\nexport type LabelPos = (typeof LabelPos)[keyof typeof LabelPos];\n\nexport const Direction = e({ Vertical: 'vertical', Horizontal: 'horizontal' } as const);\nexport type Direction = (typeof Direction)[keyof typeof Direction];\n\n/** Layout `border` regions. */\nexport const Region = e({ North: 'north', South: 'south', West: 'west', East: 'east', Center: 'center' } as const);\nexport type Region = (typeof Region)[keyof typeof Region];\n\n/** Widget sides. */\nexport const Side = e({ Right: 'right', Left: 'left', Top: 'top', Bottom: 'bottom' } as const);\nexport type Side = (typeof Side)[keyof typeof Side];\n\nexport const LayoutKind = e({ Fit: 'fit', HBox: 'hbox', VBox: 'vbox', Border: 'border', Grid: 'grid', Card: 'card' } as const);\nexport type LayoutKind = (typeof LayoutKind)[keyof typeof LayoutKind];\n\nexport const Selection = e({ None: 'none', Single: 'single', Multi: 'multi' } as const);\nexport type Selection = (typeof Selection)[keyof typeof Selection];\n\nexport const ToastType = e({ Info: 'info', Success: 'success', Warning: 'warning', Error: 'error' } as const);\nexport type ToastType = (typeof ToastType)[keyof typeof ToastType];\n\n/** Filter operators (Store.filter, FilterBuilder, lookup filters). */\nexport const Op = e({\n Eq: 'eq', Ne: 'ne', Contains: 'contains', NotContains: 'notContains', StartsWith: 'startsWith', EndsWith: 'endsWith',\n Gt: 'gt', Ge: 'ge', Lt: 'lt', Le: 'le', Between: 'between', NotBetween: 'notBetween', In: 'in', Nin: 'nin', Empty: 'empty', NotEmpty: 'notEmpty',\n} as const);\nexport type Op = (typeof Op)[keyof typeof Op];\n\n/** The shipped themes (`setTheme(ThemeName.Dark)`; add `' compact'` for the dense variant). */\nexport const ThemeName = e({ Light: 'light', Dark: 'dark' } as const);\nexport type ThemeName = (typeof ThemeName)[keyof typeof ThemeName];\n"],
5
+ "mappings": "AAEA,IAAMA,EAAuCC,GAASA,EAEzCC,EAAUF,EAAE,CAAE,QAAS,UAAW,QAAS,UAAW,OAAQ,SAAU,MAAO,OAAQ,CAAU,EAGjGG,EAAWH,EAAE,CAAE,IAAK,MAAO,KAAM,MAAO,CAAU,EAGlDI,EAAYJ,EAAE,CAAE,SAAU,WAAY,WAAY,YAAa,CAAU,EAIzEK,EAASL,EAAE,CAAE,MAAO,QAAS,MAAO,QAAS,KAAM,OAAQ,KAAM,OAAQ,OAAQ,QAAS,CAAU,EAIpGM,EAAON,EAAE,CAAE,MAAO,QAAS,KAAM,OAAQ,IAAK,MAAO,OAAQ,QAAS,CAAU,EAGhFO,EAAaP,EAAE,CAAE,IAAK,MAAO,KAAM,OAAQ,KAAM,OAAQ,OAAQ,SAAU,KAAM,OAAQ,KAAM,MAAO,CAAU,EAGhHQ,EAAYR,EAAE,CAAE,KAAM,OAAQ,OAAQ,SAAU,MAAO,OAAQ,CAAU,EAGzES,EAAYT,EAAE,CAAE,KAAM,OAAQ,QAAS,UAAW,QAAS,UAAW,MAAO,OAAQ,CAAU,EAI/FU,EAAKV,EAAE,CAClB,GAAI,KAAM,GAAI,KAAM,SAAU,WAAY,YAAa,cAAe,WAAY,aAAc,SAAU,WAC1G,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,QAAS,UAAW,WAAY,aAAc,GAAI,KAAM,IAAK,MAAO,MAAO,QAAS,SAAU,UACxI,CAAU,EAIGW,EAAYX,EAAE,CAAE,MAAO,QAAS,KAAM,MAAO,CAAU",
6
+ "names": ["e", "o", "Variant", "LabelPos", "Direction", "Region", "Side", "LayoutKind", "Selection", "ToastType", "Op", "ThemeName"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as R}from"./chunk-LHWY6G6Q.js";import{a as G}from"./chunk-MQEALOU3.js";import{a as $}from"./chunk-6NP4AEV4.js";import{a as z}from"./chunk-BCVOUMJJ.js";import{a as b}from"./chunk-ESRS5ZQV.js";import{c as C}from"./chunk-DIOJGTUN.js";import{a as x,b as L}from"./chunk-OWEQT2HN.js";import{a as _}from"./chunk-TIPK3SCJ.js";import{c as S,e as E,f as T}from"./chunk-UDXO3KM3.js";import{b as d}from"./chunk-PZSHOSOS.js";import{a as H}from"./chunk-IODSL7KU.js";import{c as A}from"./chunk-L5SQQFO7.js";import{e as w,f as g}from"./chunk-S4QD5NID.js";w("en",{gridSelected:"{n} selected",gridSelectAll:"Select all {n}",gridClearSel:"Clear selection",gridSelectRow:"Select row",gridSelectPage:"Select all rows",gridRowActions:"Row actions",gridColumns:"Columns",gridResize:"Resize column",gridGroupAll:"All",gridOtherCols:"Other",gridGroups:"Column groups",gridColumnSearch:"Search columns",gridNoColumns:"No matching columns"});w("pt-BR",{gridSelected:"{n} selecionado(s)",gridSelectAll:"Selecionar todos os {n}",gridClearSel:"Limpar sele\xE7\xE3o",gridSelectRow:"Selecionar linha",gridSelectPage:"Selecionar todas as linhas",gridRowActions:"A\xE7\xF5es da linha",gridColumns:"Colunas",gridResize:"Redimensionar coluna",gridGroupAll:"Todas",gridOtherCols:"Outras",gridGroups:"Grupos de colunas",gridColumnSearch:"Buscar colunas",gridNoColumns:"Nenhuma coluna encontrada"});var v="__select",m="__actions",K={field:v,width:44,align:"center",cls:"op-grid__selcell",locked:"start"},P={field:m,width:44,align:"center",cls:"op-grid__actcell",locked:"end"},B="var(--op-grid-row-height, var(--op-row-height))",k=class extends T{baseCls="op-grid";store;offStore;headEl;headRow;viewport;emptyEl;table;pager;v;entries;lockEdge=[-1,-1];selected=new Set;active=-1;anchor=-1;justDragged=!1;cv=0;selAll;barEl;bulkEl;bulkCount;bulkBtns=[];selectAllBtn;rowMenu;colDd;colList;colSearch;colChips;colGroup="";cols(){let e=this.config;return[...e.checkboxSelection?[K]:[],...this.userCols(),...e.rowActions?.length?[P]:[]]}userCols(){let e=(this.config.columns??[]).filter(t=>!t.hidden);return[...e.filter(t=>t.locked==="start"),...e.filter(t=>!t.locked),...e.filter(t=>t.locked==="end")]}visibleActions(){return this.config.rowActionsMode==="visible"&&!!this.config.rowActions?.length}mode(){return this.config.checkboxSelection?"multi":this.config.selection??"single"}build(){let e=this.config;e.rowActions=E(e.rowActions),e.bulkActions=E(e.bulkActions),e.columns=e.columns.filter(i=>S(i.permission));let t=d("div",this.baseCls);return this.headRow=d("div","op-grid__row op-grid__header-row",{role:"row"}),this.headEl=d("div","op-grid__header",{},this.headRow),this.viewport=d("div","op-grid__viewport"),this.emptyEl=d("div","op-grid__empty"),(e.columnMenu||e.bulkActions?.length)&&(this.bulkEl=d("div","op-grid__bulk"),this.bulkEl.hidden=!0,this.barEl=d("div","op-grid__bar",{},this.bulkEl),t.append(this.barEl)),this.table=d("div","op-grid__table",{role:"grid",tabindex:0,"aria-multiselectable":e.selection==="multi"||e.checkboxSelection?"true":null},this.headEl,this.viewport,this.emptyEl),t.append(this.table),t.classList.toggle("op-grid--striped",!!e.striped),e.paging&&(this.pager=new z({cls:"op-grid__pager"}),t.append(this.pager.el)),t}onRender(){let e=this.config;if(this.bindStore(e.store??new A({data:e.data??[]})),this.buildHeader(),this.buildBar(),this.v=x({scroller:this.viewport,count:this.count(),rowHeight:e.rowHeight??(L(this.el,B)||36),render:(t,i)=>this.renderRow(t,i),rowCls:"op-grid__row op-grid__body-row"}),this.own(()=>this.v.destroy()),this.sync(),this.listen(this.viewport,"scroll",()=>this.onScrollX(),{passive:!0}),this.listen(this.viewport,"click",t=>this.onRowEvent(t,"row-click")),this.listen(this.viewport,"dblclick",t=>this.onRowEvent(t,"row-dblclick")),this.listen(this.el,"keydown",t=>this.onKey(t)),this.listen(this.headRow,"change",t=>{t.target===this.selAll&&(this.selAll.checked?this.store.each(i=>this.selected.add(i)):this.config.keepSelection?this.store.each(i=>this.selected.delete(i)):this.selected.clear(),this.changed())}),e.reorderableColumns&&this.initColumnDrag(),e.resizableColumns&&this.initColumnResize(),this.listen(this.headRow,"click",t=>{if(this.justDragged||t.target.closest(".op-grid__resizer"))return;let i=t.target.closest("[data-field]"),s=i&&this.userCols().find(r=>r.field===i.dataset.field);s&&(this.emit("column-click",s),s.sortable&&this.sortBy(s))}),typeof ResizeObserver<"u"){let t=new ResizeObserver(()=>this.layout());t.observe(this.viewport),this.own(()=>t.disconnect())}this.pager&&(this.pager.setStore(this.store),this.store.pageSize||this.store.setPageSize(e.pageSize??20)),this.own(()=>this.pager?.destroy());for(let t of e.plugins??[]){let i=t.init(this);i&&this.own(i),t.destroy&&this.own(()=>t.destroy())}}cellAt(e){let t=e?.closest?.(".op-grid__body-row .op-grid__cell"),i=Number(t?.parentElement?.dataset.i),s=t&&this.cols()[Number(t.getAttribute("aria-colindex"))-1],r=t&&this.recAt(i);return s&&r&&![v,m].includes(s.field)?{index:i,record:r,column:s,el:t}:void 0}getCell(e,t){let i=this.cols().findIndex(s=>s.field===t);return document.getElementById(`${this.id}-r${e}`)?.querySelector(`[aria-colindex="${i+1}"]`)??void 0}getColumns(){return this.userCols()}getActive(){return this.active}notifyMount(){super.notifyMount(),this.layout(),this.pager?.notifyMount()}onScrollX(){let e=this.viewport,t=Math.max(0,e.scrollWidth-e.clientWidth-e.scrollLeft);this.headEl.scrollLeft=e.scrollLeft,this.el.style.setProperty("--op-grid-scroll-x",`${e.scrollLeft}px`),this.el.style.setProperty("--op-grid-scroll-end",`${t}px`),this.el.classList.toggle("is-scrolled-start",e.scrollLeft>0),this.el.classList.toggle("is-scrolled-end",t>0)}layout(){if(this.rendered){if(!this.config.rowHeight){let e=L(this.el,B);e&&this.v.setRowHeight(e)}this.headEl.style.paddingInlineEnd=`${this.viewport.offsetWidth-this.viewport.clientWidth}px`,this.v.refresh(),this.onScrollX()}}bindStore(e){this.offStore?.(),this.store=e;let t=e.subscribe(s=>{this.rendered&&(this.sync(),s.type==="sort"&&this.paintSort())}),i=e.on("loading",s=>this.setLoading(s));this.offStore=()=>(t(),i()),this.own(()=>this.offStore?.())}sync(){let e=this.selected.size;if(!this.config.keepSelection)for(let t of this.selected)this.store.indexOf(t)<0&&this.selected.delete(t);this.active=Math.min(this.active,this.count()-1),this.v.setCount(this.count()),this.table.setAttribute("aria-rowcount",String(this.store.totalCount+1)),this.emptyEl.textContent=this.config.emptyText??g("empty"),this.emptyEl.hidden=this.count()>0||!!this.config.loading,this.el.classList.toggle("is-empty",this.count()===0),this.updateActiveDescendant(),this.paintSelection(),this.selected.size!==e&&this.emit("select",this.getSelection())}setStore(e){this.config.store=e,this.selected.clear(),this.active=this.anchor=-1,this.rendered&&(this.bindStore(e),this.pager?.setStore(e),this.paintSort(),this.sync())}getStore(){return this.render(),this.store}count(){return this.entries?this.entries.length:this.store.count}recAt(e){return this.entries?this.entries[e]?.rec:this.store.getAt(e)}setRowLayout(e){this.entries=e,this.rendered&&this.sync()}getRowEntry(e){return this.entries?this.entries[e]:(t=>t&&{rec:t})(this.store.getAt(e))}getRowCount(){return this.count()}layoutColumns(){let e=this.cols(),t=this.visibleActions()?this.config.rowActions.length:1,i=n=>n.field===m?`calc(${t} * var(--op-grid-action-size) + ${t+1} * var(--op-grid-action-gap))`:`${n.width}px`,s=n=>n.field===m?i(n):`${n.width??140}px`,r=e.map(n=>n.locked?s(n):n.width?`${n.width}px`:`minmax(${n.minWidth??96}px, ${n.flex??1}fr)`).join(" "),o=n=>n.reduce((c,[a,h])=>(this.el.style.setProperty(`--op-grid-lock-${a}`,c.length?`calc(${c.join(" + ")})`:"0px"),[...c,s(h)]),[]),l=e.map((n,c)=>[c,n]);o(l.filter(([,n])=>n.locked==="start")),o(l.filter(([,n])=>n.locked==="end").reverse()),this.lockEdge=[e.map(n=>n.locked).lastIndexOf("start"),e.findIndex(n=>n.locked==="end")],this.el.style.setProperty("--op-grid-cols",r),this.el.style.setProperty("--op-grid-min-width",`${e.reduce((n,c)=>n+(c.field===m?t*36:c.width??(c.locked?140:c.minWidth??96)),0)}px`)}lock(e,t,i){t.locked&&(e.classList.add("is-locked",`is-locked-${t.locked}`),e.classList.toggle("is-lock-edge",this.lockEdge[t.locked==="start"?0:1]===i),e.style.setProperty("--_lock",`var(--op-grid-lock-${i})`))}buildHeader(){let e=this.cols();this.layoutColumns(),this.el.classList.toggle("op-grid--actions-visible",this.visibleActions()),this.el.classList.toggle("op-grid--reorderable",!!this.config.reorderableColumns),this.el.classList.toggle("op-grid--resizable",!!this.config.resizableColumns),this.table.setAttribute("aria-colcount",String(e.length)),this.selAll=void 0,this.headRow.replaceChildren(...e.map((i,s)=>{let r=i.header??i.field,o=d("div",`op-grid__cell op-grid__hcell${i.align?` op-grid__cell--${i.align}`:""}${i.sortable?" is-sortable":""}`,{role:"columnheader","aria-colindex":s+1,"data-field":i.field});this.lock(o,i,s),i.field===v?o.append(this.selAll=d("input","op-grid__check",{type:"checkbox","aria-label":g("gridSelectPage")})):i.field===m?o.append(d("span","op-sr-only",{},g("gridRowActions"))):i.sortable?o.append(d("button","op-grid__sort",{type:"button"},d("span","op-grid__label",{},r),d("span","op-grid__arrow",{"aria-hidden":"true"},C("arrow-up")))):o.append(d("span","op-grid__label",{},r));let l=i.field!==v&&i.field!==m;return this.config.reorderableColumns&&l&&o.classList.add("is-reorderable"),this.canResize(i)&&o.append(d("span","op-grid__resizer",{role:"separator","aria-orientation":"vertical","aria-label":`${g("gridResize")} ${r}`})),l&&!i.sortable&&(this.config.reorderableColumns||this.canResize(i))&&(o.tabIndex=0),o}));let t=this.groupBand(e);this.headEl.replaceChildren(...t?[t]:[],this.headRow),this.paintSort(),this.emit("header-paint")}groupBand(e){if(this.config.groupHeaders===!1||!e.some(s=>s.group))return null;let t=[],i=0;for(;i<e.length;){let s=e[i].group??"",r=1;for(;i+r<e.length&&(e[i+r].group??"")===s;)r++;let o=d("div",`op-grid__gcell${s?"":" is-empty"}`,{role:"columnheader","aria-colindex":i+1,"aria-colspan":r},s);o.style.gridColumn=`span ${r}`,t.push(o),i+=r}return d("div","op-grid__row op-grid__group-row",{role:"row"},...t)}getColumnGroups(){return[...new Set(this.config.columns.map(e=>e.group).filter(e=>!!e))]}setColumnGroupVisible(e,t){let i=this.config.columns.filter(s=>(s.group??"")===e);if(i.length){for(let s of i)s.hidden=!t;this.config.columns.some(s=>!s.hidden)||(i[0].hidden=!1),this.setColumns(this.config.columns),this.emit("columns-change",this.getColumnState())}}setColumnLocked(e,t){let i=this.config.columns.find(s=>s.field===e);!i||i.locked===(t??void 0)||(this.setColumns(this.config.columns.map(s=>s===i?{...s,locked:t??void 0}:s)),this.emit("columns-change",this.getColumnState()))}setColumns(e){this.config.columns=e,this.rendered&&(this.cv++,this.buildHeader(),this.paintSelection(),this.v.refresh())}getColumnState(){return this.config.columns.map(e=>({field:e.field,hidden:!!e.hidden,width:e.width,locked:e.locked}))}setColumnState(e){let t=new Map(this.config.columns.map(s=>[s.field,s])),i=e.flatMap(s=>{let r=t.get(s.field);return t.delete(s.field),r?[{...r,hidden:s.hidden,width:s.width??r.width,locked:"locked"in s?s.locked:r.locked}]:[]});this.setColumns([...i,...t.values()]),this.emit("columns-change",this.getColumnState())}canResize(e){return!!this.config.resizableColumns&&e.field!==v&&e.field!==m&&e.resizable!==!1}setColumnWidth(e,t){let i=this.config.columns.find(s=>s.field===e);i&&(i.width=t==null?void 0:Math.round(Math.max(i.minWidth??48,Math.min(t,i.maxWidth??1/0))),this.layoutColumns(),this.emit("column-resize",e,i.width),this.emit("columns-change",this.getColumnState()))}initColumnResize(){let e=this.headRow;this.listen(e,"pointerdown",t=>{let i=t.target.closest(".op-grid__resizer");if(!i||t.button)return;t.preventDefault();let s=i.parentElement,r=s.dataset.field,o=this.config.columns.find(u=>u.field===r),l=t.clientX,n=s.getBoundingClientRect().width||o.width||96;this.el.classList.add("is-resizing");let c=o.width,a=u=>{let p=Math.round(Math.max(o.minWidth??48,Math.min(n+(u.clientX-l)*(this.dir()==="rtl"?-1:1),o.maxWidth??1/0)));o.width=c=p,this.layoutColumns()},h=()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h),this.el.classList.remove("is-resizing"),this.justDragged=!0,setTimeout(()=>this.justDragged=!1),c!==void 0&&(this.emit("column-resize",r,c),this.emit("columns-change",this.getColumnState()))};document.addEventListener("pointermove",a),document.addEventListener("pointerup",h),this.own(()=>(document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h)))}),this.listen(e,"dblclick",t=>{let i=t.target.closest(".op-grid__resizer");i&&this.setColumnWidth(i.parentElement.dataset.field,void 0)}),this.listen(e,"keydown",t=>{if(!(t.altKey&&t.shiftKey)||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;let i=t.target.closest(".op-grid__hcell"),s=i&&this.config.columns.find(o=>o.field===i.dataset.field);if(!i||!s||!this.canResize(s))return;t.preventDefault();let r=i.getBoundingClientRect().width||s.width||96;this.setColumnWidth(s.field,r+(t.key==="ArrowRight"?16:-16))})}dir(){return getComputedStyle(this.el).direction}moveColumn(e,t){let i=this.config.columns,s=i.find(h=>h.field===e);if(!s||e===t)return;let r=this.userCols(),o=r.indexOf(s),l=[...i.filter(h=>h!==s)],n=t==null?void 0:l.find(h=>h.field===t),c=r.filter(h=>h!==s).pop(),a=n?l.indexOf(n):c?l.indexOf(c)+1:l.length;l.splice(a,0,s),!l.every((h,u)=>h===i[u])&&(this.setColumns(l),this.emit("column-move",e,o,this.userCols().indexOf(s)),this.emit("columns-change",this.getColumnState()))}initColumnDrag(){let e=this.headRow,t=()=>Array.from(e.querySelectorAll(".is-reorderable"));this.listen(e,"pointerdown",i=>{let s=i.target.closest(".is-reorderable");if(!s||i.button||i.target.closest(".op-grid__resizer"))return;let r=s.dataset.field,o=i.clientX,l,n,c=null,a=u=>{if(!l){if(Math.abs(u.clientX-o)<6)return;l=d("div","op-grid__ghost",{},s.textContent??""),n=d("div","op-grid__drop"),this.el.append(l),this.headEl.append(n),s.classList.add("is-dragging-col")}l.style.left=`${u.clientX}px`,l.style.top=`${u.clientY}px`;let p=t(),f=p.find(O=>{let M=O.getBoundingClientRect();return u.clientX<M.left+M.width/2});c=f?f.dataset.field:null;let y=(f??p[p.length-1])?.getBoundingClientRect(),D=this.headEl.getBoundingClientRect();y&&n&&(n.style.left=`${(f?y.left:y.right)-D.left+this.headEl.scrollLeft}px`)},h=()=>{document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h),l&&(l.remove(),n?.remove(),s.classList.remove("is-dragging-col"),this.justDragged=!0,setTimeout(()=>this.justDragged=!1),this.moveColumn(r,c))};document.addEventListener("pointermove",a),document.addEventListener("pointerup",h),this.own(()=>(document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",h)))}),this.listen(e,"keydown",i=>{if(!i.altKey||i.shiftKey||i.key!=="ArrowLeft"&&i.key!=="ArrowRight")return;let s=i.target.closest(".is-reorderable");if(!s)return;i.preventDefault();let r=this.userCols(),o=r.findIndex(c=>c.field===s.dataset.field),l=i.key==="ArrowLeft"?o-1:o+1;if(l<0||l>=r.length)return;this.moveColumn(r[o].field,i.key==="ArrowLeft"?r[l].field:r[l+1]?.field??null);let n=e.querySelector(`[data-field="${CSS.escape(r[o].field)}"]`);(n?.querySelector("button")??n)?.focus()})}paintSort(){let e=this.store.getSorters()[0];for(let t of Array.from(this.headRow.children)){let i=!!e&&t.dataset.field===e.field;t.classList.toggle("is-sorted-asc",i&&e.dir==="asc"),t.classList.toggle("is-sorted-desc",i&&e.dir==="desc"),t.classList.contains("is-sortable")&&t.setAttribute("aria-sort",i?e.dir==="asc"?"ascending":"descending":"none")}}sortBy(e){let t=this.store.getSorters()[0],i=t?.field===e.field?t.dir==="asc"?"desc":null:"asc";this.emit("before-sort",e.field,i)!==!1&&(this.store.sort(i?e.field:null,i??void 0),this.emit("sort",e.field,i))}rowIndexOffset(){return this.store.pageSize?(this.store.page-1)*this.store.pageSize:0}renderRow(e,t){let i=this.getRowEntry(t);if(!i)return;let s=i.rec,r=this.cols();e.id=`${this.id}-r${t}`,e.dataset.i=String(t),e.setAttribute("role","row"),e.setAttribute("aria-rowindex",String(this.rowIndexOffset()+t+2));let o=!!s&&this.selected.has(s);e.dataset.ec&&e.classList.remove(...e.dataset.ec.split(" ")),e.dataset.ec=i.cls??"",i.cls&&e.classList.add(...i.cls.split(" "));for(let[n,c]of[["aria-level",i.level],["aria-expanded",i.expanded]])c==null?e.removeAttribute(n):e.setAttribute(n,String(c));e.setAttribute("aria-selected",this.mode()==="none"||!s?"false":String(o)),e.classList.toggle("is-selected",o),e.classList.toggle("is-active",t===this.active),e.classList.toggle("is-odd",t%2===1),(e.dataset.cv!==String(this.cv)||e.dataset.cn!==String(r.length))&&(e.dataset.cv=String(this.cv),e.dataset.cn=String(r.length),e.replaceChildren(...r.map((n,c)=>{let a=d("div",`op-grid__cell${n.align?` op-grid__cell--${n.align}`:""}${n.cls?` ${n.cls}`:""}`,{role:"gridcell","aria-colindex":c+1});return this.lock(a,n,c),a})));let l=Array.from(e.children).filter(n=>n.classList.contains("op-grid__cell"));if(!s){for(let n of l)n.replaceChildren();return i.paint?.(l,e)}r.forEach((n,c)=>{let a=e.children[c];if(a.classList.contains("is-editing"))return;if(n.field===v){let u=a.firstElementChild??a.appendChild(d("input","op-grid__check",{type:"checkbox",tabindex:-1,"aria-label":g("gridSelectRow")}));u.checked=o;return}if(n.field===m){let u=this.config.rowActions??[];if(!this.visibleActions()){a.firstChild||a.append(d("button","op-grid__actbtn",{type:"button",tabindex:-1,"aria-label":g("gridRowActions"),"aria-haspopup":"menu"},C("more")));return}(a.children.length!==u.length||a.firstElementChild?.dataset.a==null)&&a.replaceChildren(...u.map((p,f)=>d("button",`op-grid__actbtn${p.variant==="danger"?" is-danger":""}`,{type:"button",tabindex:-1,"data-a":f,"aria-label":p.text,title:p.text},p.icon?C(p.icon):p.text))),u.forEach((p,f)=>a.children[f].disabled=!!p.disabled?.(s));return}let h=H(n,s);typeof h=="string"?a.textContent=h:a.replaceChildren(h)}),i.paint?.(l,e)}indexOfEvent(e){let t=e.target.closest(".op-grid__body-row");return t?Number(t.dataset.i):-1}onRowEvent(e,t){let i=this.indexOfEvent(e),s=this.recAt(i);if(s){if(t==="row-click"){let r=e.target.closest(".op-grid__actbtn");if(r){if(r.dataset.a==null)return this.openRowMenu(s,r);r.disabled||this.config.rowActions[Number(r.dataset.a)].handler(s,this);return}this.setActive(i,!1),this.pick(i,e)}this.emit(t,s,i,e)}}getSelection(){return[...this.selected]}select(e,t={}){let i=typeof e=="number"?this.recAt(e):e,s=this.mode();!i||s==="none"||((s==="single"||!t.add)&&this.selected.clear(),this.selected.add(i),this.changed())}deselectAll(){this.selected.size&&(this.selected.clear(),this.changed())}changed(){this.v?.refresh(),this.paintSelection(),this.emit("select",this.getSelection())}selectAllFiltered(){if(this.mode()==="multi"){for(let e of this.store.getFiltered())this.selected.add(e);this.changed()}}pick(e,t){let i=this.mode(),s=this.recAt(e);if(!(!s||i==="none")){if(i==="multi"&&t.shiftKey&&this.anchor>=0){this.config.checkboxSelection||this.selected.clear();for(let r=Math.min(this.anchor,e);r<=Math.max(this.anchor,e);r++){let o=this.recAt(r);o&&this.selected.add(o)}}else i==="multi"&&(t.ctrlKey||t.metaKey||this.config.checkboxSelection)?(this.selected.delete(s)||this.selected.add(s),this.anchor=e):(this.selected.clear(),this.selected.add(s),this.anchor=e);this.changed()}}setActive(e,t=!0){this.active=e,t&&e>=0&&this.v.scrollTo(e),this.v.refresh(),this.updateActiveDescendant()}updateActiveDescendant(){this.active>=0&&this.active<this.count()?this.table.setAttribute("aria-activedescendant",`${this.id}-r${this.active}`):this.table.removeAttribute("aria-activedescendant")}focusRow(e){this.render(),this.setActive(Math.max(0,Math.min(e,this.count()-1))),this.table.focus()}focusEl(){return this.table}scrollToRow(e){this.v?.scrollTo(e)}onKey(e){let t=e.target;if(t.closest(".op-grid__header")||t!==this.table&&t.matches("input:not([type=checkbox]),textarea,select,[contenteditable]"))return;let i=this.count();if(!i)return;if((e.key==="ContextMenu"||e.shiftKey&&e.key==="F10")&&this.active>=0&&this.config.rowActions?.length){e.preventDefault();let n=this.recAt(this.active);return n?this.openRowMenu(n,document.getElementById(`${this.id}-r${this.active}`)??this.el):void 0}let s=Math.max(1,Math.floor((this.viewport.clientHeight||400)/this.config.rowHeight||10)),r=this.active<0?0:this.active,o=this.mode(),l={ArrowDown:Math.min(i-1,this.active<0?0:r+1),ArrowUp:Math.max(0,r-1),Home:0,End:i-1,PageDown:Math.min(i-1,r+s),PageUp:Math.max(0,r-s)};if(e.key in l){e.preventDefault();let n=l[e.key];this.setActive(n),(o==="single"||o==="multi"&&!e.ctrlKey&&!e.metaKey&&!this.config.checkboxSelection)&&this.pick(n,e)}else e.key===" "&&this.active>=0?(e.preventDefault(),o==="multi"?this.pick(this.active,{ctrlKey:!0}):this.pick(this.active,e)):e.key==="Enter"&&this.active>=0?this.emit("row-activate",this.recAt(this.active),this.active):(e.key==="a"||e.key==="A")&&(e.ctrlKey||e.metaKey)&&o==="multi"&&(e.preventDefault(),this.store.each(n=>this.selected.add(n)),this.changed())}refresh(){this.v?.refresh()}buildBar(){let e=this.config;if(!this.barEl)return;this.bulkCount=d("span","op-grid__count",{"aria-live":"polite"}),this.selectAllBtn=new b({text:"",variant:"ghost",handler:()=>this.selectAllFiltered()}),this.bulkBtns=(e.bulkActions??[]).map(i=>new b({text:i.text,icon:i.icon,variant:i.variant==="danger"?"danger":"default",handler:()=>i.handler(this.getSelection(),this)}));let t=new b({text:g("gridClearSel"),variant:"ghost",handler:()=>this.deselectAll()});this.bulkEl.append(this.bulkCount,this.selectAllBtn.el,...this.bulkBtns.map(i=>i.el),t.el),this.own(()=>[this.selectAllBtn,...this.bulkBtns,t].forEach(i=>i?.destroy())),e.columnMenu&&this.buildColumnMenu(),this.paintSelection()}paintSelection(){if(!this.rendered)return;let e=this.store.count,t=0;if(this.store.each(r=>this.selected.has(r)&&t++),this.selAll&&(this.selAll.checked=e>0&&t===e,this.selAll.indeterminate=t>0&&t<e),!this.bulkEl)return;let i=this.selected.size;if(this.bulkEl.hidden=!i||!this.config.bulkActions?.length,this.bulkEl.hidden)return;this.bulkCount.textContent=g("gridSelected",{n:i});let s=this.store.getFiltered().length;this.selectAllBtn.el.hidden=!(this.mode()==="multi"&&t===e&&s>e&&i<s),this.selectAllBtn.setText(g("gridSelectAll",{n:s}))}openRowMenu(e,t){this.rowMenu??=new G({}),this.rowMenu.setItems((this.config.rowActions??[]).map(i=>({text:i.text,icon:i.icon,disabled:!!i.disabled?.(e),handler:()=>i.handler(e,this)}))),this.rowMenu.showBy(t)}buildColumnMenu(){let e=new b({text:g("gridColumns"),icon:"columns",variant:"ghost"});this.colSearch=new R({placeholder:g("gridColumnSearch"),clearable:!0}),this.colChips=d("div","op-grid__colchips",{role:"group","aria-label":g("gridGroups")}),this.colList=d("div","op-grid__collist",{role:"group","aria-label":g("gridColumns")});let t=d("div","op-grid__colempty",{},g("gridNoColumns"));t.hidden=!0;let i=d("div","op-grid__colmenu",{},this.colSearch.el,this.colChips,this.colList,t);this.colDd=new $({anchor:e.el,content:i,placement:"bottom-end",role:"dialog",autoFocus:!1}),this.barEl.append(e.el),this.own(()=>e.destroy());let s=()=>{let r=(this.colSearch.getValue()??"").toLowerCase(),o=0,l,n=0,c=()=>l&&(l.hidden=n===0);for(let a of Array.from(this.colList.children)){if(a.classList.contains("op-grid__colgroup")){c(),l=a,n=0;continue}let h=a.dataset.group??"",u=!this.colGroup||h===this.colGroup,p=!r||h.toLowerCase().includes(r)||a.textContent.toLowerCase().includes(r);a.hidden=!(u&&p),a.hidden||(o++,n++)}c(),t.hidden=o>0};this.colSearch.on("change",s),this.listen(this.colChips,"click",r=>{let o=r.target.closest("[data-g]");o&&(this.colGroup=o.dataset.g,this.paintColumnList(),s())}),e.on("click",()=>{if(this.colDd.isOpen())return this.colDd.close();this.colSearch.setValue(""),this.colGroup="",this.paintColumnList(),this.colDd.open(),this.colList.querySelector("input")?.focus()}),this.listen(this.colList,"change",r=>{let o=r.target;if(o.dataset.groupToggle!=null)this.setColumnGroupVisible(o.dataset.groupToggle,o.checked);else{let l=this.config.columns.find(n=>n.field===o.value);if(!l)return;l.hidden=!o.checked,this.setColumns(this.config.columns),this.emit("columns-change",this.getColumnState())}this.paintColumnList(),s()})}paintColumnList(){let e=this.config.columns,t=this.getColumnGroups(),i=this.userCols().length===1?this.userCols()[0]:null,s=o=>{let l=d("input","op-grid__check",{type:"checkbox",value:o.field});return l.checked=!o.hidden,l.disabled=o===i,d("label","op-grid__colitem",{"data-group":o.group??""},l,d("span","",{},o.header??o.field))};if(this.colChips.hidden=t.length<2,this.colChips.replaceChildren(...[["",g("gridGroupAll")],...t.map(o=>[o,o])].map(([o,l])=>d("button",`op-grid__colchip${this.colGroup===o?" is-on":""}`,{type:"button","data-g":o,"aria-pressed":String(this.colGroup===o)},l))),!t.length)return this.colList.replaceChildren(...e.map(s));let r=[];for(let o of[...t,""]){let l=e.filter(a=>(a.group??"")===o);if(!l.length)continue;let n=l.filter(a=>!a.hidden).length,c=d("input","op-grid__check",{type:"checkbox","data-group-toggle":o,"aria-label":o||g("gridOtherCols")});c.checked=n===l.length,c.indeterminate=n>0&&n<l.length,r.push(d("div","op-grid__colgroup",{"data-group":o},d("label","",{},c,d("span","",{},o||g("gridOtherCols"))),d("span","op-grid__colcount",{},`${n}/${l.length}`)),...l.map(s))}this.colList.replaceChildren(...r)}onDestroy(){this.pager?.destroy(),this.rowMenu?.destroy(),this.colDd?.destroy(),this.colSearch?.destroy()}};_("grid",k);export{k as a};
2
+ //# sourceMappingURL=chunk-LXWCTCZV.js.map