optikos 0.3.0 → 0.4.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 (432) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/dist/bind.js +1 -1
  3. package/dist/bind.js.map +4 -4
  4. package/dist/{chunk-5JEXM5S7.js → chunk-2GKIF7A6.js} +2 -2
  5. package/dist/chunk-2HNQ2XRY.js +2 -0
  6. package/dist/chunk-2HNQ2XRY.js.map +7 -0
  7. package/dist/chunk-2QMI2RRB.js +2 -0
  8. package/dist/chunk-2QMI2RRB.js.map +7 -0
  9. package/dist/{chunk-W3H7GTJY.js → chunk-2YRQULDC.js} +2 -2
  10. package/dist/{chunk-ZPPELYNJ.js → chunk-3BG75P7T.js} +2 -2
  11. package/dist/{chunk-GNU4VOOE.js → chunk-3F4MN2BU.js} +2 -2
  12. package/dist/chunk-3FCIZKIN.js +2 -0
  13. package/dist/chunk-3FCIZKIN.js.map +7 -0
  14. package/dist/{chunk-5DJTP53N.js → chunk-3FK52VQX.js} +2 -2
  15. package/dist/chunk-3QRA3XOA.js +2 -0
  16. package/dist/chunk-3QRA3XOA.js.map +7 -0
  17. package/dist/chunk-3TCITFUU.js +2 -0
  18. package/dist/chunk-3TCITFUU.js.map +7 -0
  19. package/dist/chunk-3VDLX7ET.js +2 -0
  20. package/dist/chunk-3VDLX7ET.js.map +7 -0
  21. package/dist/{chunk-3TAW4AKH.js → chunk-4AZ44KV4.js} +2 -2
  22. package/dist/{chunk-TZOQWCVH.js → chunk-4CWYF4O7.js} +2 -2
  23. package/dist/{chunk-REW4LR46.js → chunk-4OB2IM5L.js} +2 -2
  24. package/dist/{chunk-2YZB6XQR.js → chunk-4S3HRFQB.js} +2 -2
  25. package/dist/chunk-5BMG5ZBY.js +2 -0
  26. package/dist/{chunk-KLLAY2IM.js.map → chunk-5BMG5ZBY.js.map} +2 -2
  27. package/dist/chunk-5PWPAN62.js +2 -0
  28. package/dist/chunk-5PWPAN62.js.map +7 -0
  29. package/dist/chunk-5PYJ6FJK.js +2 -0
  30. package/dist/chunk-5PYJ6FJK.js.map +7 -0
  31. package/dist/{chunk-OGRFQTXA.js → chunk-643FOYQB.js} +2 -2
  32. package/dist/{chunk-JOFQJGZK.js → chunk-6BOM5KZR.js} +2 -2
  33. package/dist/chunk-6LJK4QWF.js +2 -0
  34. package/dist/chunk-6LJK4QWF.js.map +7 -0
  35. package/dist/{chunk-JK74QK3M.js → chunk-6PZPBPAD.js} +2 -2
  36. package/dist/chunk-7Y2GHQRB.js +2 -0
  37. package/dist/{chunk-YHEMA56R.js → chunk-AQ3RTHG5.js} +2 -2
  38. package/dist/{chunk-M242VYZA.js → chunk-AT7VFZRB.js} +2 -2
  39. package/dist/{chunk-ZVK4L5GK.js → chunk-BCVOUMJJ.js} +2 -2
  40. package/dist/{chunk-HOF4JGMQ.js → chunk-BIGL3ZVD.js} +2 -2
  41. package/dist/chunk-BJWREA76.js +2 -0
  42. package/dist/chunk-BJWREA76.js.map +7 -0
  43. package/dist/{chunk-ZWNQREWS.js → chunk-BQEFLPDA.js} +2 -2
  44. package/dist/{chunk-ZWNQREWS.js.map → chunk-BQEFLPDA.js.map} +2 -2
  45. package/dist/{chunk-FEHGU6EP.js → chunk-C3MWS7P2.js} +2 -2
  46. package/dist/{chunk-G2KUK6AT.js → chunk-CFGCB37K.js} +2 -2
  47. package/dist/{chunk-JI265XFO.js → chunk-CMV3F6HR.js} +2 -2
  48. package/dist/{chunk-TOLTUOZS.js → chunk-CWIE74NX.js} +2 -2
  49. package/dist/{chunk-4EZJ5FKJ.js → chunk-DIOJGTUN.js} +2 -2
  50. package/dist/chunk-DJUSVBD5.js +2 -0
  51. package/dist/chunk-DJUSVBD5.js.map +7 -0
  52. package/dist/{chunk-HXDTGP2K.js → chunk-DWA45BWR.js} +2 -2
  53. package/dist/chunk-DWTDNKXX.js +2 -0
  54. package/dist/chunk-DWTDNKXX.js.map +7 -0
  55. package/dist/chunk-ESCLDVFS.js +2 -0
  56. package/dist/{chunk-YBAYEU25.js.map → chunk-ESCLDVFS.js.map} +1 -1
  57. package/dist/chunk-EXIADWI7.js +2 -0
  58. package/dist/chunk-EXIADWI7.js.map +7 -0
  59. package/dist/{chunk-5QUY72FX.js → chunk-F4HZUAKM.js} +2 -2
  60. package/dist/chunk-FCJI2JF7.js +3 -0
  61. package/dist/chunk-FCJI2JF7.js.map +7 -0
  62. package/dist/{chunk-Q26YZYTD.js → chunk-FPU53CCV.js} +2 -2
  63. package/dist/{chunk-3S24ZRPK.js → chunk-GEBAYD6N.js} +2 -2
  64. package/dist/{chunk-G2DAD3MQ.js → chunk-GEJKFE4X.js} +2 -2
  65. package/dist/chunk-GFFZTFQH.js +2 -0
  66. package/dist/chunk-GFFZTFQH.js.map +7 -0
  67. package/dist/chunk-GFJRGBQR.js +2 -0
  68. package/dist/chunk-GFJRGBQR.js.map +7 -0
  69. package/dist/chunk-GZIDE5K2.js +2 -0
  70. package/dist/chunk-GZIDE5K2.js.map +7 -0
  71. package/dist/{chunk-5Q76ACVI.js → chunk-H25XXQVH.js} +2 -2
  72. package/dist/chunk-HG7OOHGD.js +2 -0
  73. package/dist/chunk-HG7OOHGD.js.map +7 -0
  74. package/dist/{chunk-2ZUZ5HDL.js → chunk-HLS5FI55.js} +2 -2
  75. package/dist/chunk-HRW25TMU.js +2 -0
  76. package/dist/chunk-HX6TWXTX.js +2 -0
  77. package/dist/chunk-HX6TWXTX.js.map +7 -0
  78. package/dist/chunk-I5A74NMJ.js +2 -0
  79. package/dist/chunk-I5A74NMJ.js.map +7 -0
  80. package/dist/chunk-IUOEPAWG.js +2 -0
  81. package/dist/chunk-IUOEPAWG.js.map +7 -0
  82. package/dist/{chunk-IHE2MQ3W.js → chunk-J5QPFJ7M.js} +2 -2
  83. package/dist/chunk-JE56CJX2.js +2 -0
  84. package/dist/chunk-JE56CJX2.js.map +7 -0
  85. package/dist/chunk-JJLOUMCJ.js +2 -0
  86. package/dist/chunk-JJLOUMCJ.js.map +7 -0
  87. package/dist/chunk-JLKIHXZP.js +3 -0
  88. package/dist/chunk-JLKIHXZP.js.map +7 -0
  89. package/dist/{chunk-5BC72727.js → chunk-JSEI44A7.js} +2 -2
  90. package/dist/chunk-L5SQQFO7.js +2 -0
  91. package/dist/chunk-L5SQQFO7.js.map +7 -0
  92. package/dist/chunk-M2ZRKHE4.js +2 -0
  93. package/dist/chunk-M2ZRKHE4.js.map +7 -0
  94. package/dist/chunk-M7FNPRV4.js +2 -0
  95. package/dist/chunk-M7FNPRV4.js.map +7 -0
  96. package/dist/chunk-MNSDGJKA.js +3 -0
  97. package/dist/chunk-MNSDGJKA.js.map +7 -0
  98. package/dist/{chunk-DBMWS3O5.js → chunk-MQ5BYGFY.js} +2 -2
  99. package/dist/chunk-N2LS4JD6.js +2 -0
  100. package/dist/chunk-N2LS4JD6.js.map +7 -0
  101. package/dist/chunk-NJ5IFOPR.js +4 -0
  102. package/dist/{chunk-XX2MVWFS.js.map → chunk-NJ5IFOPR.js.map} +1 -1
  103. package/dist/{chunk-NXSTUFS7.js → chunk-NNR2FNHG.js} +2 -2
  104. package/dist/chunk-NQV4THNE.js +2 -0
  105. package/dist/{chunk-UXXJOU5J.js.map → chunk-NQV4THNE.js.map} +1 -1
  106. package/dist/{chunk-XHOBNSBO.js → chunk-P4O57S6N.js} +2 -2
  107. package/dist/{chunk-MB3MU6HR.js → chunk-PGVLRMTQ.js} +2 -2
  108. package/dist/chunk-PMOXLQ72.js +2 -0
  109. package/dist/chunk-PMOXLQ72.js.map +7 -0
  110. package/dist/chunk-Q6FY4L2F.js +2 -0
  111. package/dist/chunk-Q6FY4L2F.js.map +7 -0
  112. package/dist/chunk-R32HPK7R.js +2 -0
  113. package/dist/chunk-R32HPK7R.js.map +7 -0
  114. package/dist/{chunk-Z2JBUHKA.js → chunk-RG6SHPHF.js} +2 -2
  115. package/dist/{chunk-EDUMAMK4.js → chunk-S2CMWKVB.js} +2 -2
  116. package/dist/chunk-S4QD5NID.js +2 -0
  117. package/dist/chunk-S4QD5NID.js.map +7 -0
  118. package/dist/chunk-SB4ICXBV.js +2 -0
  119. package/dist/chunk-SB4ICXBV.js.map +7 -0
  120. package/dist/{chunk-23XLG2EM.js → chunk-SEW5OCQF.js} +2 -2
  121. package/dist/chunk-SWCB2GMN.js +2 -0
  122. package/dist/chunk-SWCB2GMN.js.map +7 -0
  123. package/dist/chunk-TQPQ4UEA.js +2 -0
  124. package/dist/chunk-TQPQ4UEA.js.map +7 -0
  125. package/dist/{chunk-Z2Z52GFT.js → chunk-U5L76VVB.js} +2 -2
  126. package/dist/chunk-UDXO3KM3.js +2 -0
  127. package/dist/chunk-UDXO3KM3.js.map +7 -0
  128. package/dist/{chunk-LQRFNQ2N.js → chunk-UQRQH2JW.js} +2 -2
  129. package/dist/chunk-V5G5JECN.js +2 -0
  130. package/dist/chunk-V5G5JECN.js.map +7 -0
  131. package/dist/{chunk-JBLRAM7Z.js → chunk-XFIREDWO.js} +2 -2
  132. package/dist/chunk-XQHATUKN.js +2 -0
  133. package/dist/{chunk-LW2WRUVL.js.map → chunk-XQHATUKN.js.map} +4 -4
  134. package/dist/chunk-XR677UYD.js +2 -0
  135. package/dist/chunk-XR677UYD.js.map +7 -0
  136. package/dist/{chunk-RNN55473.js → chunk-YDX2PCVL.js} +2 -2
  137. package/dist/{chunk-RNN55473.js.map → chunk-YDX2PCVL.js.map} +1 -1
  138. package/dist/chunk-YJTUFK4P.js +2 -0
  139. package/dist/chunk-YLFSCQL3.js +2 -0
  140. package/dist/chunk-YLFSCQL3.js.map +7 -0
  141. package/dist/chunk-YXOKWCYS.js +2 -0
  142. package/dist/chunk-YXOKWCYS.js.map +7 -0
  143. package/dist/{chunk-I4SP6JTU.js → chunk-Z6L55FTN.js} +2 -2
  144. package/dist/{chunk-6VBK2I5B.js → chunk-ZSPJZ3ZH.js} +2 -2
  145. package/dist/components/avatar.js +2 -0
  146. package/dist/components/avatar.js.map +7 -0
  147. package/dist/components/badge.js +1 -1
  148. package/dist/components/breadcrumb.js +1 -1
  149. package/dist/components/button.js +1 -1
  150. package/dist/components/calendar.js +1 -1
  151. package/dist/components/carousel.js +2 -0
  152. package/dist/components/carousel.js.map +7 -0
  153. package/dist/components/cellediting.js +1 -1
  154. package/dist/components/chart.js +2 -0
  155. package/dist/components/chart.js.map +7 -0
  156. package/dist/components/chat.js +1 -1
  157. package/dist/components/checkbox.js +1 -1
  158. package/dist/components/checkboxgroup.js +1 -1
  159. package/dist/components/chip.js +1 -1
  160. package/dist/components/codeviewer.js +1 -1
  161. package/dist/components/combobox.js +1 -1
  162. package/dist/components/commandpalette.js +1 -1
  163. package/dist/components/container.js +1 -1
  164. package/dist/components/dataview.js +1 -1
  165. package/dist/components/datefield.js +1 -1
  166. package/dist/components/daterangefield.js +1 -1
  167. package/dist/components/datetimefield.js +2 -0
  168. package/dist/components/datetimefield.js.map +7 -0
  169. package/dist/components/dial.js +1 -1
  170. package/dist/components/dropdown.js +1 -1
  171. package/dist/components/fieldgroup.js +1 -1
  172. package/dist/components/fieldlist.js +1 -1
  173. package/dist/components/fieldset.js +1 -1
  174. package/dist/components/filterbuilder.js +1 -1
  175. package/dist/components/form.js +1 -1
  176. package/dist/components/formactions.js +1 -1
  177. package/dist/components/formerrors.js +1 -1
  178. package/dist/components/formsection.js +1 -1
  179. package/dist/components/grid.js +1 -1
  180. package/dist/components/gridexport.js +2 -0
  181. package/dist/components/gridexport.js.map +7 -0
  182. package/dist/components/gridstate.js +2 -0
  183. package/dist/components/gridstate.js.map +7 -0
  184. package/dist/components/grouping.js +2 -0
  185. package/dist/components/grouping.js.map +7 -0
  186. package/dist/components/icon.js +1 -1
  187. package/dist/components/image.js +2 -0
  188. package/dist/components/image.js.map +7 -0
  189. package/dist/components/imagecanvas.js +2 -0
  190. package/dist/components/imagecanvas.js.map +7 -0
  191. package/dist/components/imagefield.js +2 -0
  192. package/dist/components/imagefield.js.map +7 -0
  193. package/dist/components/inputgroup.js +1 -1
  194. package/dist/components/label.js +1 -1
  195. package/dist/components/listbox.js +1 -1
  196. package/dist/components/lookupfield.js +1 -1
  197. package/dist/components/maskfield.js +2 -0
  198. package/dist/components/maskfield.js.map +7 -0
  199. package/dist/components/menu.js +1 -1
  200. package/dist/components/messagebox.js +1 -1
  201. package/dist/components/navmenu.js +1 -1
  202. package/dist/components/numberfield.js +1 -1
  203. package/dist/components/pagination.js +1 -1
  204. package/dist/components/panel.js +1 -1
  205. package/dist/components/pickerfield.js +1 -1
  206. package/dist/components/radiogroup.js +1 -1
  207. package/dist/components/rowediting.js +2 -0
  208. package/dist/components/rowediting.js.map +7 -0
  209. package/dist/components/searchgrid.js +1 -1
  210. package/dist/components/secretfield.js +1 -1
  211. package/dist/components/select.js +1 -1
  212. package/dist/components/shortcuts.js +2 -0
  213. package/dist/components/shortcuts.js.map +7 -0
  214. package/dist/components/slider.js +1 -1
  215. package/dist/components/spacer.js +1 -1
  216. package/dist/components/spinner.js +1 -1
  217. package/dist/components/stat.js +2 -0
  218. package/dist/components/stat.js.map +7 -0
  219. package/dist/components/stepform.js +1 -1
  220. package/dist/components/stepper.js +1 -1
  221. package/dist/components/suggestfield.js +1 -1
  222. package/dist/components/table.js +1 -1
  223. package/dist/components/tabs.js +1 -1
  224. package/dist/components/textarea.js +1 -1
  225. package/dist/components/textfield.js +1 -1
  226. package/dist/components/timefield.js +2 -0
  227. package/dist/components/timefield.js.map +7 -0
  228. package/dist/components/timeline.js +2 -0
  229. package/dist/components/timeline.js.map +7 -0
  230. package/dist/components/toast.js +1 -1
  231. package/dist/components/toggle.js +1 -1
  232. package/dist/components/toolbar.js +1 -1
  233. package/dist/components/tree.js +1 -1
  234. package/dist/components/treegrid.js +2 -0
  235. package/dist/components/treegrid.js.map +7 -0
  236. package/dist/components/viewmanager.js +1 -1
  237. package/dist/components/viewport.js +1 -1
  238. package/dist/components/widget.js +1 -1
  239. package/dist/components/window.js +1 -1
  240. package/dist/core.js +1 -1
  241. package/dist/css/avatar.css +68 -0
  242. package/dist/css/base.css +9 -0
  243. package/dist/css/carousel.css +119 -0
  244. package/dist/css/chart.css +168 -0
  245. package/dist/css/core.css +36 -0
  246. package/dist/css/datetimefield.css +15 -0
  247. package/dist/css/grid.css +40 -0
  248. package/dist/css/gridexport.css +35 -0
  249. package/dist/css/grouping.css +49 -0
  250. package/dist/css/image.css +46 -0
  251. package/dist/css/imagecanvas.css +75 -0
  252. package/dist/css/imagefield.css +103 -0
  253. package/dist/css/rowediting.css +39 -0
  254. package/dist/css/shortcuts.css +34 -0
  255. package/dist/css/stat.css +64 -0
  256. package/dist/css/stepform.css +1 -0
  257. package/dist/css/timeline.css +140 -0
  258. package/dist/css/treegrid.css +35 -0
  259. package/dist/css/window.css +2 -2
  260. package/dist/data.js +1 -1
  261. package/dist/dev.js +2 -0
  262. package/dist/dev.js.map +7 -0
  263. package/dist/index.js +16 -5
  264. package/dist/index.js.map +4 -4
  265. package/dist/optikos.css +1111 -21
  266. package/dist/testing.js +2 -0
  267. package/dist/testing.js.map +7 -0
  268. package/dist/themes/dark.css +7 -0
  269. package/dist/types/bind/index.d.ts +1 -1
  270. package/dist/types/bind/viewmodel.d.ts +33 -0
  271. package/dist/types/components/avatar.d.ts +1 -0
  272. package/dist/types/components/base/avatar/avatar.d.ts +22 -0
  273. package/dist/types/components/base/image/image.d.ts +25 -0
  274. package/dist/types/components/base/imagecanvas/imagecanvas.d.ts +39 -0
  275. package/dist/types/components/carousel.d.ts +1 -0
  276. package/dist/types/components/chart.d.ts +1 -0
  277. package/dist/types/components/charts/chart/chart.d.ts +64 -0
  278. package/dist/types/components/charts/stat/stat.d.ts +34 -0
  279. package/dist/types/components/data/cellediting/cellediting.d.ts +3 -0
  280. package/dist/types/components/data/grid/grid.d.ts +37 -0
  281. package/dist/types/components/data/gridexport/gridexport.d.ts +29 -0
  282. package/dist/types/components/data/gridstate/gridstate.d.ts +23 -0
  283. package/dist/types/components/data/grouping/grouping.d.ts +31 -0
  284. package/dist/types/components/data/rowediting/rowediting.d.ts +13 -0
  285. package/dist/types/components/data/searchgrid/searchgrid.d.ts +9 -2
  286. package/dist/types/components/data/timeline/timeline.d.ts +60 -0
  287. package/dist/types/components/data/treegrid/treegrid.d.ts +32 -0
  288. package/dist/types/components/datetimefield.d.ts +1 -0
  289. package/dist/types/components/fields/datetimefield/datetimefield.d.ts +28 -0
  290. package/dist/types/components/fields/imagefield/imagefield.d.ts +48 -0
  291. package/dist/types/components/fields/maskfield/maskfield.d.ts +28 -0
  292. package/dist/types/components/fields/numberfield/numberfield.d.ts +9 -0
  293. package/dist/types/components/fields/pickerfield/pickerfield.d.ts +3 -0
  294. package/dist/types/components/fields/timefield/timefield.d.ts +24 -0
  295. package/dist/types/components/form/fieldlist/fieldlist.d.ts +2 -0
  296. package/dist/types/components/form/form/form.d.ts +5 -0
  297. package/dist/types/components/form/stepform/stepform.d.ts +1 -1
  298. package/dist/types/components/gridexport.d.ts +1 -0
  299. package/dist/types/components/gridstate.d.ts +1 -0
  300. package/dist/types/components/grouping.d.ts +1 -0
  301. package/dist/types/components/image.d.ts +1 -0
  302. package/dist/types/components/imagecanvas.d.ts +1 -0
  303. package/dist/types/components/imagefield.d.ts +1 -0
  304. package/dist/types/components/layout/carousel/carousel.d.ts +58 -0
  305. package/dist/types/components/maskfield.d.ts +1 -0
  306. package/dist/types/components/navigation/navmenu/navmenu.d.ts +2 -0
  307. package/dist/types/components/overlays/commandpalette/commandpalette.d.ts +2 -0
  308. package/dist/types/components/overlays/menu/menu.d.ts +4 -1
  309. package/dist/types/components/overlays/shortcuts/shortcuts.d.ts +27 -0
  310. package/dist/types/components/overlays/window/window.d.ts +14 -1
  311. package/dist/types/components/rowediting.d.ts +1 -0
  312. package/dist/types/components/shortcuts.d.ts +1 -0
  313. package/dist/types/components/stat.d.ts +1 -0
  314. package/dist/types/components/timefield.d.ts +1 -0
  315. package/dist/types/components/timeline.d.ts +1 -0
  316. package/dist/types/components/treegrid.d.ts +1 -0
  317. package/dist/types/core/component.d.ts +7 -0
  318. package/dist/types/core/container.d.ts +10 -1
  319. package/dist/types/core/dev.d.ts +2 -0
  320. package/dist/types/core/field.d.ts +4 -0
  321. package/dist/types/core/i18n.d.ts +2 -0
  322. package/dist/types/core/index.d.ts +4 -1
  323. package/dist/types/core/path.d.ts +2 -0
  324. package/dist/types/core/permission.d.ts +11 -0
  325. package/dist/types/core/state.d.ts +9 -0
  326. package/dist/types/data/column.d.ts +8 -0
  327. package/dist/types/data/index.d.ts +1 -1
  328. package/dist/types/data/model.d.ts +2 -0
  329. package/dist/types/data/store.d.ts +21 -0
  330. package/dist/types/dev/index.d.ts +2 -0
  331. package/dist/types/dev/keys.d.ts +1 -0
  332. package/dist/types/index.d.ts +17 -0
  333. package/dist/types/testing/index.d.ts +25 -0
  334. package/dist/types/themes/color.d.ts +14 -0
  335. package/dist/types/themes/contrast.d.ts +15 -0
  336. package/dist/types/themes/define.d.ts +25 -3
  337. package/dist/types/themes/index.d.ts +3 -1
  338. package/dist/types/themes/seeds.d.ts +11 -0
  339. package/dist/types/ui/ui.d.ts +6 -0
  340. package/dist/ui.js +1 -1
  341. package/package.json +9 -1
  342. package/dist/chunk-2ZRNGG2N.js +0 -2
  343. package/dist/chunk-2ZRNGG2N.js.map +0 -7
  344. package/dist/chunk-4EQEHJB3.js +0 -2
  345. package/dist/chunk-4EQEHJB3.js.map +0 -7
  346. package/dist/chunk-4LZZ244E.js +0 -2
  347. package/dist/chunk-4LZZ244E.js.map +0 -7
  348. package/dist/chunk-4SYIIX5A.js +0 -2
  349. package/dist/chunk-4SYIIX5A.js.map +0 -7
  350. package/dist/chunk-7KMIFXHZ.js +0 -2
  351. package/dist/chunk-7KMIFXHZ.js.map +0 -7
  352. package/dist/chunk-A2NKDOYN.js +0 -2
  353. package/dist/chunk-A2NKDOYN.js.map +0 -7
  354. package/dist/chunk-CKXS375P.js +0 -2
  355. package/dist/chunk-CKXS375P.js.map +0 -7
  356. package/dist/chunk-EJGWCKE4.js +0 -2
  357. package/dist/chunk-EJGWCKE4.js.map +0 -7
  358. package/dist/chunk-ELYARUCN.js +0 -2
  359. package/dist/chunk-EV73ADN2.js +0 -2
  360. package/dist/chunk-EV73ADN2.js.map +0 -7
  361. package/dist/chunk-GD5JGKM7.js +0 -2
  362. package/dist/chunk-GD5JGKM7.js.map +0 -7
  363. package/dist/chunk-GZ7X34QP.js +0 -2
  364. package/dist/chunk-KCEUD232.js +0 -2
  365. package/dist/chunk-KCEUD232.js.map +0 -7
  366. package/dist/chunk-KLLAY2IM.js +0 -2
  367. package/dist/chunk-LBJSMXLV.js +0 -2
  368. package/dist/chunk-LBJSMXLV.js.map +0 -7
  369. package/dist/chunk-LW2WRUVL.js +0 -2
  370. package/dist/chunk-MW3RWBZ7.js +0 -2
  371. package/dist/chunk-MW3RWBZ7.js.map +0 -7
  372. package/dist/chunk-OEAXCCVM.js +0 -2
  373. package/dist/chunk-OEAXCCVM.js.map +0 -7
  374. package/dist/chunk-UB5RYS7T.js +0 -2
  375. package/dist/chunk-UB5RYS7T.js.map +0 -7
  376. package/dist/chunk-UXXJOU5J.js +0 -2
  377. package/dist/chunk-VU3GIDZ3.js +0 -2
  378. package/dist/chunk-VU3GIDZ3.js.map +0 -7
  379. package/dist/chunk-W2BAFOCN.js +0 -3
  380. package/dist/chunk-W2BAFOCN.js.map +0 -7
  381. package/dist/chunk-WFGTQZIQ.js +0 -2
  382. package/dist/chunk-WFGTQZIQ.js.map +0 -7
  383. package/dist/chunk-XX2MVWFS.js +0 -4
  384. package/dist/chunk-XYZ6VZ5T.js +0 -2
  385. package/dist/chunk-YBAYEU25.js +0 -2
  386. package/dist/chunk-YF75HKL6.js +0 -2
  387. package/dist/chunk-YF75HKL6.js.map +0 -7
  388. /package/dist/{chunk-5JEXM5S7.js.map → chunk-2GKIF7A6.js.map} +0 -0
  389. /package/dist/{chunk-W3H7GTJY.js.map → chunk-2YRQULDC.js.map} +0 -0
  390. /package/dist/{chunk-ZPPELYNJ.js.map → chunk-3BG75P7T.js.map} +0 -0
  391. /package/dist/{chunk-GNU4VOOE.js.map → chunk-3F4MN2BU.js.map} +0 -0
  392. /package/dist/{chunk-5DJTP53N.js.map → chunk-3FK52VQX.js.map} +0 -0
  393. /package/dist/{chunk-3TAW4AKH.js.map → chunk-4AZ44KV4.js.map} +0 -0
  394. /package/dist/{chunk-TZOQWCVH.js.map → chunk-4CWYF4O7.js.map} +0 -0
  395. /package/dist/{chunk-REW4LR46.js.map → chunk-4OB2IM5L.js.map} +0 -0
  396. /package/dist/{chunk-2YZB6XQR.js.map → chunk-4S3HRFQB.js.map} +0 -0
  397. /package/dist/{chunk-OGRFQTXA.js.map → chunk-643FOYQB.js.map} +0 -0
  398. /package/dist/{chunk-JOFQJGZK.js.map → chunk-6BOM5KZR.js.map} +0 -0
  399. /package/dist/{chunk-JK74QK3M.js.map → chunk-6PZPBPAD.js.map} +0 -0
  400. /package/dist/{chunk-GZ7X34QP.js.map → chunk-7Y2GHQRB.js.map} +0 -0
  401. /package/dist/{chunk-YHEMA56R.js.map → chunk-AQ3RTHG5.js.map} +0 -0
  402. /package/dist/{chunk-M242VYZA.js.map → chunk-AT7VFZRB.js.map} +0 -0
  403. /package/dist/{chunk-ZVK4L5GK.js.map → chunk-BCVOUMJJ.js.map} +0 -0
  404. /package/dist/{chunk-HOF4JGMQ.js.map → chunk-BIGL3ZVD.js.map} +0 -0
  405. /package/dist/{chunk-FEHGU6EP.js.map → chunk-C3MWS7P2.js.map} +0 -0
  406. /package/dist/{chunk-G2KUK6AT.js.map → chunk-CFGCB37K.js.map} +0 -0
  407. /package/dist/{chunk-JI265XFO.js.map → chunk-CMV3F6HR.js.map} +0 -0
  408. /package/dist/{chunk-TOLTUOZS.js.map → chunk-CWIE74NX.js.map} +0 -0
  409. /package/dist/{chunk-4EZJ5FKJ.js.map → chunk-DIOJGTUN.js.map} +0 -0
  410. /package/dist/{chunk-HXDTGP2K.js.map → chunk-DWA45BWR.js.map} +0 -0
  411. /package/dist/{chunk-5QUY72FX.js.map → chunk-F4HZUAKM.js.map} +0 -0
  412. /package/dist/{chunk-Q26YZYTD.js.map → chunk-FPU53CCV.js.map} +0 -0
  413. /package/dist/{chunk-3S24ZRPK.js.map → chunk-GEBAYD6N.js.map} +0 -0
  414. /package/dist/{chunk-G2DAD3MQ.js.map → chunk-GEJKFE4X.js.map} +0 -0
  415. /package/dist/{chunk-5Q76ACVI.js.map → chunk-H25XXQVH.js.map} +0 -0
  416. /package/dist/{chunk-2ZUZ5HDL.js.map → chunk-HLS5FI55.js.map} +0 -0
  417. /package/dist/{chunk-XYZ6VZ5T.js.map → chunk-HRW25TMU.js.map} +0 -0
  418. /package/dist/{chunk-IHE2MQ3W.js.map → chunk-J5QPFJ7M.js.map} +0 -0
  419. /package/dist/{chunk-5BC72727.js.map → chunk-JSEI44A7.js.map} +0 -0
  420. /package/dist/{chunk-DBMWS3O5.js.map → chunk-MQ5BYGFY.js.map} +0 -0
  421. /package/dist/{chunk-NXSTUFS7.js.map → chunk-NNR2FNHG.js.map} +0 -0
  422. /package/dist/{chunk-XHOBNSBO.js.map → chunk-P4O57S6N.js.map} +0 -0
  423. /package/dist/{chunk-MB3MU6HR.js.map → chunk-PGVLRMTQ.js.map} +0 -0
  424. /package/dist/{chunk-Z2JBUHKA.js.map → chunk-RG6SHPHF.js.map} +0 -0
  425. /package/dist/{chunk-EDUMAMK4.js.map → chunk-S2CMWKVB.js.map} +0 -0
  426. /package/dist/{chunk-23XLG2EM.js.map → chunk-SEW5OCQF.js.map} +0 -0
  427. /package/dist/{chunk-Z2Z52GFT.js.map → chunk-U5L76VVB.js.map} +0 -0
  428. /package/dist/{chunk-LQRFNQ2N.js.map → chunk-UQRQH2JW.js.map} +0 -0
  429. /package/dist/{chunk-JBLRAM7Z.js.map → chunk-XFIREDWO.js.map} +0 -0
  430. /package/dist/{chunk-ELYARUCN.js.map → chunk-YJTUFK4P.js.map} +0 -0
  431. /package/dist/{chunk-I4SP6JTU.js.map → chunk-Z6L55FTN.js.map} +0 -0
  432. /package/dist/{chunk-6VBK2I5B.js.map → chunk-ZSPJZ3ZH.js.map} +0 -0
@@ -0,0 +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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/fields/pickerfield/pickerfield.ts"],
4
+ "sourcesContent": ["import { TextField, type TextFieldConfig } from '../textfield/textfield';\nimport { h } from '../../../core/dom';\nimport { iconEl } from '../../base/icon/icon';\nimport { Dropdown } from '../../overlays/dropdown/dropdown';\nimport { ListBox, type ListItem } from '../listbox/listbox';\nimport type { Store } from '../../../data/store';\nimport { getPath } from '../../../core/path';\n\nexport type { ListItem };\nexport type Option = string | number | Record<string, any>;\n\nexport interface PickerConfig<V = unknown> extends TextFieldConfig<V> {\n options?: Option[];\n store?: Store<any>;\n valueField?: string;\n displayField?: string;\n /** Text that does not match an item is discarded on blur. Default true. */\n forceSelection?: boolean;\n emptyText?: string;\n openOnFocus?: boolean;\n maxHeight?: number | string;\n /** Show the record's value (its id) as a badge inside the field and as a hint in every list row. Default false. */\n showValue?: boolean;\n}\n\n/**\n * Shared base of Select, ComboBox and SuggestField: an input that owns a Dropdown with a ListBox,\n * the ARIA combobox wiring and the keyboard model. Subclasses decide what typing does (`onType`)\n * and whether the input is editable.\n */\nexport abstract class PickerField<V = unknown, C extends PickerConfig<V> = PickerConfig<V>> extends TextField<V, C> {\n protected override baseCls = 'op-field op-textfield op-picker';\n protected items: ListItem[] = [];\n protected selection?: ListItem;\n /** The user typed since the last selection/blur; the input text is a search term, not the value's label. */\n protected typed = false;\n protected list!: ListBox;\n protected dd!: Dropdown;\n private triggerEl?: HTMLButtonElement;\n private idEl?: HTMLElement;\n private wrapEl?: HTMLElement;\n private buffer = '';\n private bufferTimer?: ReturnType<typeof setTimeout>;\n\n protected editable(): boolean {\n return true;\n }\n protected hasTrigger(): boolean {\n return true;\n }\n /** Called when the user types in an editable picker. */\n protected onType(_text: string): void {}\n\n // ---- items ---------------------------------------------------------------------------------\n\n protected toItem(o: Option): ListItem {\n if (typeof o !== 'object') return { value: o, label: String(o) };\n const vf = this.config.valueField ?? 'value';\n const df = this.config.displayField ?? 'label';\n return { value: o[vf], label: String(o[df] ?? o[vf] ?? ''), disabled: !!o.disabled, raw: o, hint: this.config.showValue ? String(o[vf]) : undefined };\n }\n\n protected loadItems(): void {\n const c = this.config;\n this.items = c.store ? c.store.getData().map((r) => this.toItem(r)) : (c.options ?? []).map((o) => this.toItem(o));\n }\n\n setOptions(options: Option[]): void {\n this.config.options = options;\n this.loadItems();\n this.refreshList();\n if (this.rendered) this.applyValue(this.value);\n }\n\n setStore(store: Store<any>): void {\n this.config.store = store;\n this.bindStore();\n this.loadItems();\n this.refreshList();\n }\n\n private offStore?: () => void;\n private bindStore(): void {\n this.offStore?.();\n this.offStore = this.config.store?.subscribe(() => {\n this.loadItems();\n this.refreshList();\n if (this.rendered) this.applyValue(this.value);\n });\n }\n\n protected findItem(value: unknown): ListItem | undefined {\n return this.items.find((i) => i.value === value) ?? (this.selection?.value === value ? this.selection : undefined);\n }\n\n getSelection(): ListItem | undefined {\n return this.selection;\n }\n\n /** Also takes `{ value, label }`: the value with the text to show, for a record that is not in the list. */\n override setValue(v: V, silent = false): void {\n const o = v as any;\n if (o && typeof o === 'object' && 'value' in o && 'label' in o) this.setSelection({ value: o.value, label: String(o.label) }, silent);\n else super.setValue(v, silent);\n }\n\n override fillFrom(record: Record<string, any>): void {\n const text = this.config.displayFrom ? getPath(record, this.config.displayFrom) : undefined;\n const v = this.name ? getPath(record, this.name) : undefined;\n if (text != null && v != null) this.setSelection({ value: v, label: String(text) }, true);\n else super.fillFrom(record);\n }\n\n /** Selects an item object directly (needed when the list does not contain it, e.g. a remote value). */\n setSelection(item: ListItem | undefined, silent = false): void {\n this.selection = item;\n this.setValue((item ? item.value : this.emptyValue()) as V, silent);\n }\n\n /** The items to display for the current search state. Default: all. */\n protected visibleItems(): ListItem[] {\n return this.items;\n }\n\n protected refreshList(): void {\n if (!this.list) return;\n const shown = this.visibleItems();\n this.list.setItems(shown);\n this.list.setSelected(this.value);\n const sel = shown.findIndex((i) => i.value === this.value && !i.disabled);\n this.list.setActive(this.typed || sel < 0 ? shown.findIndex((i) => !i.disabled) : sel);\n this.syncActive();\n }\n\n private syncActive(): void {\n if (!this.rendered) return;\n const id = this.list.getActiveId();\n if (id && this.dd.isOpen()) this.input.setAttribute('aria-activedescendant', id);\n else this.input.removeAttribute('aria-activedescendant');\n }\n\n // ---- rendering -----------------------------------------------------------------------------\n\n protected override createControl() {\n const wrap = super.createControl();\n const input = this.input;\n this.wrapEl = wrap;\n if (this.config.showValue) {\n this.idEl = h('span', 'op-picker__id');\n this.idEl.hidden = true;\n wrap.prepend(this.idEl);\n }\n this.list = new ListBox({ emptyText: this.config.emptyText, maxHeight: this.config.maxHeight, highlight: '' });\n input.setAttribute('role', 'combobox');\n input.setAttribute('aria-haspopup', 'listbox');\n input.setAttribute('aria-expanded', 'false');\n input.setAttribute('aria-autocomplete', this.editable() ? 'list' : 'none');\n input.setAttribute('aria-controls', this.list.id);\n input.autocomplete = 'off';\n if (this.hasTrigger()) {\n this.triggerEl = h('button', 'op-picker__trigger', { type: 'button', tabindex: -1, 'aria-hidden': 'true' }, iconEl('chevron-down'));\n this.listen(this.triggerEl, 'mousedown', (e: Event) => e.preventDefault());\n this.listen(this.triggerEl, 'click', () => {\n if (this.config.disabled || this.config.readonly) return;\n input.focus();\n this.toggle();\n });\n wrap.append(this.triggerEl);\n }\n this.dd = new Dropdown({ anchor: wrap, content: this.list, matchWidth: true, role: 'presentation' });\n this.dd.on('open', () => {\n input.setAttribute('aria-expanded', 'true');\n this.el.classList.add('is-open');\n this.list.refresh();\n this.syncActive();\n this.emit('expand');\n });\n this.dd.on('close', () => {\n input.setAttribute('aria-expanded', 'false');\n this.el.classList.remove('is-open');\n input.removeAttribute('aria-activedescendant');\n this.emit('collapse');\n });\n this.list.on('select', (item: ListItem) => this.pick(item));\n this.list.on('active-change', () => this.syncActive());\n this.own(() => {\n this.offStore?.();\n this.dd.destroy();\n });\n return wrap;\n }\n\n protected override onRender(): void {\n this.bindStore();\n this.loadItems();\n super.onRender();\n if (!this.editable()) {\n this.input.readOnly = true;\n this.listen(this.input, 'click', () => this.toggle());\n } else if (this.config.openOnFocus) {\n this.listen(this.input, 'focus', () => this.open());\n }\n this.on('blur', () => this.settle());\n this.refreshList();\n }\n\n protected override onReadonly(readonly: boolean): void {\n this.input.readOnly = readonly || !this.editable();\n if (readonly) this.dd?.close();\n }\n protected override onDisabled(disabled: boolean): void {\n super.onDisabled(disabled);\n if (this.triggerEl) this.triggerEl.disabled = disabled;\n if (disabled) this.dd?.close();\n }\n\n protected override applyValue(v: V): void {\n const it = this.findItem(v);\n if (it) this.selection = it;\n else if (this.selection && this.selection.value !== v) this.selection = undefined;\n this.typed = false;\n this.input.value = it ? it.label : this.display(v);\n this.el.classList.toggle('has-value', !!this.input.value);\n this.list?.setSelected(v);\n this.paintId();\n }\n\n /** The id badge (`showValue`): visible while a record is selected, and the input makes room for it. */\n protected paintId(): void {\n const el = this.idEl;\n if (!el) return;\n const sel = this.selection;\n el.hidden = !sel || this.typed || this.isEmpty(this.value);\n el.textContent = el.hidden ? '' : String(sel!.value);\n this.wrapEl!.style.setProperty('--op-picker-id-width', el.hidden ? '0px' : `${el.offsetWidth}px`);\n this.wrapEl!.classList.toggle('has-id', !el.hidden);\n }\n\n override getDisplayText(): string {\n return this.rendered ? this.input.value : (this.findItem(this.value)?.label ?? this.display(this.value));\n }\n\n // ---- behavior ------------------------------------------------------------------------------\n\n open(): void {\n if (this.config.disabled || this.config.readonly || !this.rendered) return;\n if (!this.typed) this.refreshList();\n this.dd.open();\n }\n close(): void {\n this.dd?.close();\n }\n toggle(): void {\n if (this.dd.isOpen()) this.close();\n else this.open();\n }\n expand(): void {\n this.open();\n }\n collapse(): void {\n this.close();\n }\n\n protected pick(item: ListItem): void {\n if (item.disabled) return;\n this.selection = item;\n this.typed = false;\n this.input.value = item.label;\n this.el.classList.add('has-value');\n this.commit(item.value as V);\n this.paintId();\n this.close();\n this.emit('select', item);\n }\n\n /** Called on blur: commits free text or reverts to the selected label. */\n protected settle(): void {\n this.close();\n if (!this.editable() || !this.typed) return;\n this.typed = false;\n const text = this.input.value;\n if (!text && this.config.forceSelection !== false) {\n this.selection = undefined;\n this.commit(this.emptyValue());\n } else if (this.config.forceSelection === false) {\n this.selection = undefined;\n this.commit(text as V);\n } else {\n this.input.value = this.selection?.label ?? '';\n }\n this.el.classList.toggle('has-value', !!this.input.value);\n this.paintId();\n this.refreshList();\n }\n\n protected override onInput(): void {\n this.el.classList.toggle('has-value', !!this.input.value);\n if (!this.editable()) return;\n this.typed = true;\n this.paintId();\n if (this.config.forceSelection === false) this.commit(this.input.value as V);\n this.onType(this.input.value);\n }\n\n protected override onKey(e: KeyboardEvent): void {\n const open = this.dd.isOpen();\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowUp': {\n e.preventDefault();\n if (!open) return this.open();\n this.list.moveActive(e.key === 'ArrowDown' ? 1 : -1);\n return;\n }\n case 'Enter':\n if (open) {\n e.preventDefault();\n if (this.list.getActive()) this.list.activate();\n else this.close();\n } else super.onKey(e);\n return;\n case 'Home':\n case 'End':\n if (open && !this.editable()) {\n e.preventDefault();\n this.list.setActive(e.key === 'Home' ? this.items.findIndex((i) => !i.disabled) : this.items.length - 1 - [...this.items].reverse().findIndex((i) => !i.disabled));\n }\n return;\n case 'Tab':\n if (open && this.typed && this.config.forceSelection !== false && this.list.getActive()) this.list.activate();\n return;\n case ' ':\n if (!this.editable()) {\n e.preventDefault();\n if (open && this.list.getActive()) this.list.activate();\n else this.open();\n }\n return;\n default:\n if (!this.editable() && e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) this.typeahead(e.key);\n else super.onKey(e);\n }\n }\n\n /** Select-style type-ahead: letters jump to the next label that starts with them. */\n private typeahead(ch: string): void {\n clearTimeout(this.bufferTimer);\n this.buffer += ch.toLowerCase();\n this.bufferTimer = setTimeout(() => (this.buffer = ''), 600);\n this.own(() => clearTimeout(this.bufferTimer));\n const list = this.visibleItems();\n const from = this.dd.isOpen() ? this.list.getActiveIndex() : list.findIndex((i) => i.value === this.value);\n const order = [...list.keys()].map((_, k) => (from + (this.buffer.length > 1 ? 0 : 1) + k) % list.length);\n const hit = order.find((i) => !list[i].disabled && list[i].label.toLowerCase().startsWith(this.buffer));\n if (hit == null) return;\n if (this.dd.isOpen()) this.list.setActive(hit);\n else this.pick(list[hit]);\n }\n\n setEmptyText(text: string): void {\n this.config.emptyText = text;\n this.list?.setEmptyText(text);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["PickerField", "TextField", "_text", "o", "vf", "df", "c", "r", "options", "store", "value", "i", "v", "silent", "record", "text", "getPath", "item", "shown", "sel", "id", "wrap", "input", "h", "ListBox", "iconEl", "e", "Dropdown", "readonly", "disabled", "it", "el", "open", "ch", "list", "from", "hit", "_", "k"]
7
+ }
@@ -0,0 +1,4 @@
1
+ import{a as b}from"./chunk-HLS5FI55.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{f}from"./chunk-UDXO3KM3.js";import{b as r}from"./chunk-PZSHOSOS.js";import{e as g,f as p}from"./chunk-S4QD5NID.js";g("en",{codeCopy:"Copy",codeCopied:"Copied"});g("pt-BR",{codeCopy:"Copiar",codeCopied:"Copiado"});var w={ts:"TypeScript",js:"JavaScript",json:"JSON",css:"CSS",html:"HTML",sh:"Shell",text:"Text"},y="import|from|export|default|function|return|const|let|var|new|await|async|if|else|for|of|in|while|do|switch|case|break|continue|throw|try|catch|finally|class|extends|implements|interface|type|enum|as|typeof|instanceof|keyof|readonly|public|private|protected|static|this|void|true|false|null|undefined",c=`'(?:[^'\\\\\\n]|\\\\.)*'|"(?:[^"\\\\\\n]|\\\\.)*"`,l={ts:[new RegExp(`(\\/\\/[^\\n]*|\\/\\*[\\s\\S]*?\\*\\/)|(${c}|\`(?:[^\`\\\\]|\\\\.)*\`)|\\b(${y})\\b|\\b(\\d+(?:\\.\\d+)?)\\b`,"g"),["comment","string","keyword","number"]],js:[/./g,[]],json:[new RegExp(`("(?:[^"\\\\\\n]|\\\\.)*")(?=\\s*:)|(${c})|\\b(true|false|null)\\b|(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)`,"g"),["property","string","keyword","number"]],css:[new RegExp(`(\\/\\*[\\s\\S]*?\\*\\/)|(${c})|(@[\\w-]+)|([\\w-]+)(?=\\s*:[^:{;]*[;}\\n])|(#[0-9a-fA-F]{3,8}\\b|-?\\d*\\.?\\d+(?:%|[a-z]+)?)`,"g"),["comment","string","keyword","property","number"]],html:[new RegExp(`(<!--[\\s\\S]*?-->)|(<\\/?[\\w-]+|\\/?>)|([\\w:-]+)(?==)|(${c})`,"g"),["comment","tag","attr","string"]],sh:[new RegExp(`(#[^\\n]*)|(${c})|\\b(if|then|else|fi|for|in|do|done|case|esac|while|function|export|return|sudo)\\b|(\\$\\{?[\\w]+\\}?|--?[\\w-]+)`,"g"),["comment","string","keyword","attr"]]};l.js=l.ts;function x(s,e="ts"){if(e==="text"||!l[e])return[["",s]];let[t,a]=l[e],i=[],n=0;for(let o of s.matchAll(t))o.index>n&&i.push(["",s.slice(n,o.index)]),i.push([a[o.slice(1).findIndex(d=>d!==void 0)]??"",o[0]]),n=o.index+o[0].length;return n<s.length&&i.push(["",s.slice(n)]),i}var v=s=>{if(Array.isArray(s))return new Set(s);let e=new Set;for(let t of(s??"").split(",")){let[a,i]=t.split("-").map(n=>Number(n.trim()));if(Number.isFinite(a))for(let n=a;n<=(Number.isFinite(i)?i:a);n++)e.add(n)}return e},u=class extends f{baseCls="op-codeviewer";titleEl;bar;pre;codeEl;status;copyBtn;build(){return this.titleEl=r("span","op-codeviewer__title"),this.copyBtn=new b({text:p("codeCopy"),icon:"file",variant:"ghost",handler:()=>{this.copy()}}),this.status=r("span","op-sr-only op-codeviewer__status",{"aria-live":"polite"}),this.bar=r("div","op-codeviewer__bar",{},this.titleEl,this.copyBtn.el,this.status),this.codeEl=r("code","op-codeviewer__code"),this.pre=r("pre","op-codeviewer__pre",{tabindex:0},this.codeEl),r("div","op-codeviewer",{},this.bar,this.pre)}onRender(){this.own(()=>this.copyBtn.destroy()),this.paintBar(),this.paintCode(),this.setWrap(!!this.config.wrap),this.setMaxHeight(this.config.maxHeight)}get language(){return this.config.language??"ts"}paintBar(){let e=this.config,t=e.title??w[this.language]??this.language;this.titleEl.textContent=t,this.pre.setAttribute("aria-label",t),this.bar.hidden=e.bar===!1,this.copyBtn.el.hidden=e.copyable===!1}paintCode(){let e=this.config,t=e.startLine??1,a=v(e.highlight),i=[r("span","op-codeviewer__line")];for(let[o,d]of x(e.code??"",this.language))d.split(`
2
+ `).forEach((h,C)=>{C&&i.push(r("span","op-codeviewer__line")),h&&i[i.length-1].append(o?r("span",`op-codeviewer__tok--${o}`,{},h):h)});i.forEach((o,d)=>{a.has(t+d)&&o.classList.add("is-marked"),d<i.length-1&&o.append(`
3
+ `)}),this.codeEl.replaceChildren(...i);let n=e.lineNumbers!==!1;this.el.classList.toggle("has-numbers",n),this.codeEl.style.counterReset=`op-codeline ${t-1}`,this.codeEl.style.setProperty("--op-codeviewer-gutter",`${String(t+i.length-1).length}ch`)}getCode(){return this.config.code??""}async copy(){let e=this.getCode();try{await navigator.clipboard.writeText(e)}catch{let t=document.createRange();return t.selectNodeContents(this.codeEl),getSelection()?.removeAllRanges(),getSelection()?.addRange(t),!1}return this.copyBtn.setText(p("codeCopied")),this.copyBtn.setIcon("check"),this.status.textContent=p("codeCopied"),this.later(()=>{this.copyBtn.setText(p("codeCopy")),this.copyBtn.setIcon("file"),this.status.textContent=""},1600),this.emit("copy",e),!0}update(e,t=!1){Object.assign(this.config,e),this.rendered&&(t&&this.paintBar(),this.paintCode())}setCode(e){this.update({code:e})}setLanguage(e){this.update({language:e},!0)}setTitle(e){this.update({title:e},!0)}setLineNumbers(e){this.update({lineNumbers:e})}setStartLine(e){this.update({startLine:e})}setHighlight(e){this.update({highlight:e})}setWrap(e){this.config.wrap=e,this.rendered&&this.el.classList.toggle("is-wrapped",e)}setMaxHeight(e){this.config.maxHeight=e,this.rendered&&(this.pre.style.maxBlockSize=e==null?"":typeof e=="number"?`${e}px`:e)}};m("codeviewer",u);export{x as a,u as b};
4
+ //# sourceMappingURL=chunk-NJ5IFOPR.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/base/codeviewer/codeviewer.ts"],
4
4
  "sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { addMessages, t } from '../../../core/i18n';\nimport { Button } from '../button/button';\n\nexport type CodeLanguage = 'ts' | 'js' | 'json' | 'css' | 'html' | 'sh' | 'text';\n\nexport interface CodeViewerConfig extends ComponentConfig {\n code?: string;\n language?: CodeLanguage;\n /** The bar text. Default: the language name. */\n title?: string;\n lineNumbers?: boolean;\n startLine?: number;\n /** Lines to mark: `[3, 4]` or `'3-5,8'` (numbers as shown, so they follow `startLine`). */\n highlight?: number[] | string;\n wrap?: boolean;\n copyable?: boolean;\n bar?: boolean;\n maxHeight?: number | string;\n}\n\naddMessages('en', { codeCopy: 'Copy', codeCopied: 'Copied' });\naddMessages('pt-BR', { codeCopy: 'Copiar', codeCopied: 'Copiado' });\n\nconst NAMES: Record<CodeLanguage, string> = { ts: 'TypeScript', js: 'JavaScript', json: 'JSON', css: 'CSS', html: 'HTML', sh: 'Shell', text: 'Text' };\n\n// One regex per language: each capture group is a token kind, in the order of KINDS[lang]. Anything else is plain text.\nconst JS_WORDS = 'import|from|export|default|function|return|const|let|var|new|await|async|if|else|for|of|in|while|do|switch|case|break|continue|throw|try|catch|finally|class|extends|implements|interface|type|enum|as|typeof|instanceof|keyof|readonly|public|private|protected|static|this|void|true|false|null|undefined';\nconst STR = `'(?:[^'\\\\\\\\\\\\n]|\\\\\\\\.)*'|\"(?:[^\"\\\\\\\\\\\\n]|\\\\\\\\.)*\"`;\nconst RULES: Record<Exclude<CodeLanguage, 'text'>, [RegExp, string[]]> = {\n ts: [new RegExp(`(\\\\/\\\\/[^\\\\n]*|\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)|(${STR}|\\`(?:[^\\`\\\\\\\\]|\\\\\\\\.)*\\`)|\\\\b(${JS_WORDS})\\\\b|\\\\b(\\\\d+(?:\\\\.\\\\d+)?)\\\\b`, 'g'), ['comment', 'string', 'keyword', 'number']],\n js: [/./g, []], // same as ts (filled below)\n json: [new RegExp(`(\"(?:[^\"\\\\\\\\\\\\n]|\\\\\\\\.)*\")(?=\\\\s*:)|(${STR})|\\\\b(true|false|null)\\\\b|(-?\\\\d+(?:\\\\.\\\\d+)?(?:[eE][+-]?\\\\d+)?)`, 'g'), ['property', 'string', 'keyword', 'number']],\n css: [new RegExp(`(\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)|(${STR})|(@[\\\\w-]+)|([\\\\w-]+)(?=\\\\s*:[^:{;]*[;}\\\\n])|(#[0-9a-fA-F]{3,8}\\\\b|-?\\\\d*\\\\.?\\\\d+(?:%|[a-z]+)?)`, 'g'), ['comment', 'string', 'keyword', 'property', 'number']],\n html: [new RegExp(`(<!--[\\\\s\\\\S]*?-->)|(<\\\\/?[\\\\w-]+|\\\\/?>)|([\\\\w:-]+)(?==)|(${STR})`, 'g'), ['comment', 'tag', 'attr', 'string']],\n sh: [new RegExp(`(#[^\\\\n]*)|(${STR})|\\\\b(if|then|else|fi|for|in|do|done|case|esac|while|function|export|return|sudo)\\\\b|(\\\\$\\\\{?[\\\\w]+\\\\}?|--?[\\\\w-]+)`, 'g'), ['comment', 'string', 'keyword', 'attr']],\n};\nRULES.js = RULES.ts;\n\ntype Tok = [kind: string, text: string];\n\n/** Splits code into tokens (kind '' = plain). Pure: no DOM. */\nexport function tokenize(code: string, language: CodeLanguage = 'ts'): Tok[] {\n if (language === 'text' || !RULES[language]) return [['', code]];\n const [re, kinds] = RULES[language];\n const out: Tok[] = [];\n let last = 0;\n for (const m of code.matchAll(re)) {\n if (m.index! > last) out.push(['', code.slice(last, m.index)]);\n out.push([kinds[m.slice(1).findIndex((g) => g !== undefined)] ?? '', m[0]]);\n last = m.index! + m[0].length;\n }\n if (last < code.length) out.push(['', code.slice(last)]);\n return out;\n}\n\n/** `'3-5,8'` or `[3, 4]` \u2192 a set of line numbers. */\nconst lineSet = (v: CodeViewerConfig['highlight']): Set<number> => {\n if (Array.isArray(v)) return new Set(v);\n const out = new Set<number>();\n for (const part of (v ?? '').split(',')) {\n const [a, b] = part.split('-').map((x) => Number(x.trim()));\n if (Number.isFinite(a)) for (let n = a; n <= (Number.isFinite(b) ? b : a); n++) out.add(n);\n }\n return out;\n};\n\n/** Read-only code: syntax colors, line numbers (CSS counters, never copied), marked lines and a copy button. */\nexport class CodeViewer extends Component<CodeViewerConfig> {\n protected override baseCls = 'op-codeviewer';\n private titleEl!: HTMLElement;\n private bar!: HTMLElement;\n private pre!: HTMLElement;\n private codeEl!: HTMLElement;\n private status!: HTMLElement;\n private copyBtn!: Button;\n\n protected override build() {\n this.titleEl = h('span', 'op-codeviewer__title');\n this.copyBtn = new Button({ text: t('codeCopy'), icon: 'file', variant: 'ghost', handler: () => void this.copy() });\n this.status = h('span', 'op-sr-only op-codeviewer__status', { 'aria-live': 'polite' });\n this.bar = h('div', 'op-codeviewer__bar', {}, this.titleEl, this.copyBtn.el, this.status);\n this.codeEl = h('code', 'op-codeviewer__code');\n this.pre = h('pre', 'op-codeviewer__pre', { tabindex: 0 }, this.codeEl);\n return h('div', 'op-codeviewer', {}, this.bar, this.pre);\n }\n\n protected override onRender() {\n this.own(() => this.copyBtn.destroy());\n this.paintBar();\n this.paintCode();\n this.setWrap(!!this.config.wrap);\n this.setMaxHeight(this.config.maxHeight);\n }\n\n private get language(): CodeLanguage {\n return this.config.language ?? 'ts';\n }\n\n private paintBar() {\n const c = this.config;\n const title = c.title ?? NAMES[this.language] ?? this.language;\n this.titleEl.textContent = title;\n this.pre.setAttribute('aria-label', title);\n this.bar.hidden = c.bar === false;\n this.copyBtn.el.hidden = c.copyable === false;\n }\n\n /** One line element per line, tokens split at line breaks so a comment or string can span lines. */\n private paintCode() {\n const c = this.config;\n const start = c.startLine ?? 1;\n const marks = lineSet(c.highlight);\n const lines: HTMLElement[] = [h('span', 'op-codeviewer__line')];\n for (const [kind, text] of tokenize(c.code ?? '', this.language)) {\n text.split('\\n').forEach((piece, i) => {\n if (i) lines.push(h('span', 'op-codeviewer__line'));\n if (piece) lines[lines.length - 1].append(kind ? h('span', `op-codeviewer__tok--${kind}`, {}, piece) : piece);\n });\n }\n lines.forEach((l, i) => {\n if (marks.has(start + i)) l.classList.add('is-marked');\n if (i < lines.length - 1) l.append('\\n');\n });\n this.codeEl.replaceChildren(...lines);\n const numbers = c.lineNumbers !== false;\n this.el.classList.toggle('has-numbers', numbers);\n this.codeEl.style.counterReset = `op-codeline ${start - 1}`;\n this.codeEl.style.setProperty('--op-codeviewer-gutter', `${String(start + lines.length - 1).length}ch`);\n }\n\n getCode(): string {\n return this.config.code ?? '';\n }\n\n /** Copies the code. Without a clipboard (an insecure page) it selects the code instead and resolves false. */\n async copy(): Promise<boolean> {\n const code = this.getCode();\n try {\n await navigator.clipboard.writeText(code);\n } catch {\n const range = document.createRange();\n range.selectNodeContents(this.codeEl);\n getSelection()?.removeAllRanges();\n getSelection()?.addRange(range);\n return false;\n }\n this.copyBtn.setText(t('codeCopied'));\n this.copyBtn.setIcon('check');\n this.status.textContent = t('codeCopied');\n this.later(() => {\n this.copyBtn.setText(t('codeCopy'));\n this.copyBtn.setIcon('file');\n this.status.textContent = '';\n }, 1600);\n this.emit('copy', code);\n return true;\n }\n\n private update(patch: Partial<CodeViewerConfig>, bar = false) {\n Object.assign(this.config, patch);\n if (!this.rendered) return;\n if (bar) this.paintBar();\n this.paintCode();\n }\n setCode(code: string) {\n this.update({ code });\n }\n setLanguage(language: CodeLanguage) {\n this.update({ language }, true);\n }\n setTitle(title: string) {\n this.update({ title }, true);\n }\n setLineNumbers(lineNumbers: boolean) {\n this.update({ lineNumbers });\n }\n setStartLine(startLine: number) {\n this.update({ startLine });\n }\n setHighlight(highlight: CodeViewerConfig['highlight']) {\n this.update({ highlight });\n }\n setWrap(wrap: boolean) {\n this.config.wrap = wrap;\n if (this.rendered) this.el.classList.toggle('is-wrapped', wrap);\n }\n setMaxHeight(maxHeight: CodeViewerConfig['maxHeight']) {\n this.config.maxHeight = maxHeight;\n if (this.rendered) this.pre.style.maxBlockSize = maxHeight == null ? '' : typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\n }\n}\nregister('codeviewer', CodeViewer);\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["addMessages", "NAMES", "JS_WORDS", "STR", "RULES", "tokenize", "code", "language", "re", "kinds", "out", "last", "m", "g", "lineSet", "v", "part", "b", "x", "CodeViewer", "Component", "h", "Button", "t", "c", "title", "start", "marks", "lines", "kind", "text", "piece", "i", "l", "numbers", "range", "patch", "bar", "lineNumbers", "startLine", "highlight", "wrap", "maxHeight", "register"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{a as h}from"./chunk-KLLAY2IM.js";import{a as d}from"./chunk-W3H7GTJY.js";import{c as n}from"./chunk-4EZJ5FKJ.js";import{b as i}from"./chunk-PZSHOSOS.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{e as o,f as s}from"./chunk-MW3RWBZ7.js";o("en",{secretShow:"Show value",secretHide:"Hide value",secretStored:"A value is saved. It cannot be shown again.",secretReplace:"Replace",secretKeep:"Keep current",secretWarnTitle:"Replace the saved value?",secretWarn:"The saved value cannot be displayed and will be discarded as soon as you replace it. Type the new value next; it takes effect when you save."});o("pt-BR",{secretShow:"Mostrar valor",secretHide:"Ocultar valor",secretStored:"H\xE1 um valor salvo. Ele n\xE3o pode ser exibido novamente.",secretReplace:"Substituir",secretKeep:"Manter o atual",secretWarnTitle:"Substituir o valor salvo?",secretWarn:"O valor salvo n\xE3o pode ser exibido e ser\xE1 descartado assim que voc\xEA o substituir. Digite o novo valor em seguida; ele s\xF3 vale quando voc\xEA salvar."});var p="\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",a=class extends d{baseCls="op-field op-textfield op-secret";stored=!1;initialStored=!1;replacing=!1;revealed=!1;eyeBtn;replaceBtn;keepBtn;hint;constructor(e={}){super({autocomplete:"new-password",...e,inputType:"password"}),this.stored=this.initialStored=!!e.stored}emptyValue(){return null}isEmpty(e){return!this.stored&&(e==null||e==="")}createControl(){let e=super.createControl(),t=this.input;return t.spellcheck=!1,this.eyeBtn=i("button","op-secret__eye",{type:"button","aria-pressed":"false"}),this.replaceBtn=i("button","op-secret__replace",{type:"button"},s("secretReplace")),this.keepBtn=i("button","op-secret__keep",{type:"button"},s("secretKeep")),this.hint=i("div","op-secret__hint",{id:`${this.id}-hint`},i("span","op-secret__note",{},s("secretStored")),this.keepBtn),this.listen(this.eyeBtn,"mousedown",r=>r.preventDefault()),this.listen(this.eyeBtn,"click",()=>this.setRevealed(!this.revealed)),this.listen(this.replaceBtn,"click",()=>{this.replace()}),this.listen(this.keepBtn,"click",()=>this.keep()),this.listen(t,"click",()=>this.stored&&void this.replace()),this.listen(t,"keydown",r=>{this.stored&&(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),this.replace())}),this.on("blur",()=>this.config.autoHide!==!1&&this.setRevealed(!1)),e.append(this.eyeBtn,this.replaceBtn),i("div","op-secret__box",{},e,this.hint)}onRender(){super.onRender(),this.paint()}isStored(){return this.stored}isReplacing(){return this.replacing}isRevealed(){return this.revealed}setStored(e){this.stored=e,this.replacing=!1,this.revealed=!1,super.setValue(null,!0),this.paint(),this.emit("stored-change",e)}setValue(e,t=!1){if(e===!0)return this.setStored(!0);e===!1&&(e=null),this.stored&&e!=null&&(this.stored=!1,this.replacing=!0),super.setValue(e,t),this.paint()}markClean(){super.markClean(),this.initialStored=this.stored}reset(){this.setStored(this.initialStored),super.reset()}async replace(){return!this.stored||this.config.readonly||this.config.disabled||this.emit("before-replace")===!1||this.config.confirmReplace!==!1&&!await h.confirm(this.config.replaceText??s("secretWarn"),{danger:!0,title:this.config.replaceTitle??s("secretWarnTitle"),okText:s("secretReplace")})?!1:(this.stored=!1,this.replacing=!0,super.setValue("",!1),this.paint(),this.input.focus(),this.emit("replace"),!0)}keep(){this.replacing&&(this.stored=!0,this.replacing=!1,this.revealed=!1,super.setValue(null,!1),this.paint(),this.emit("keep"))}setRevealed(e){this.stored&&(e=!1),this.revealed=e,this.paint()}getDisplayText(){return this.stored||(this.value??"")!==""?p:""}paint(){if(!this.rendered)return;let e=this.input,t=this.revealed&&!this.stored;e.type=t?"text":"password",e.readOnly=this.stored||!!this.config.readonly,e.placeholder=this.stored?p:this.config.placeholder??"",this.stored&&(e.value=""),e.setAttribute("aria-describedby",this.stored||this.replacing?this.hint.id:""),!this.stored&&!this.replacing&&e.removeAttribute("aria-describedby"),this.eyeBtn.hidden=this.stored,this.eyeBtn.setAttribute("aria-pressed",String(t)),this.eyeBtn.setAttribute("aria-label",s(t?"secretHide":"secretShow")),this.eyeBtn.replaceChildren(n(t?"eye-off":"eye")),this.replaceBtn.hidden=!this.stored,this.hint.hidden=!this.stored&&!this.replacing,this.hint.querySelector(".op-secret__note").hidden=!this.stored,this.keepBtn.hidden=!this.replacing,this.el.classList.toggle("is-stored",this.stored),this.el.classList.toggle("is-replacing",this.replacing),this.el.classList.toggle("is-revealed",t),this.el.classList.toggle("has-value",this.stored||!!e.value)}};l("secretfield",a);export{a};
2
- //# sourceMappingURL=chunk-NXSTUFS7.js.map
1
+ import{a as h}from"./chunk-5BMG5ZBY.js";import{a as d}from"./chunk-2YRQULDC.js";import{c as n}from"./chunk-DIOJGTUN.js";import{a as l}from"./chunk-TIPK3SCJ.js";import{b as i}from"./chunk-PZSHOSOS.js";import{e as o,f as s}from"./chunk-S4QD5NID.js";o("en",{secretShow:"Show value",secretHide:"Hide value",secretStored:"A value is saved. It cannot be shown again.",secretReplace:"Replace",secretKeep:"Keep current",secretWarnTitle:"Replace the saved value?",secretWarn:"The saved value cannot be displayed and will be discarded as soon as you replace it. Type the new value next; it takes effect when you save."});o("pt-BR",{secretShow:"Mostrar valor",secretHide:"Ocultar valor",secretStored:"H\xE1 um valor salvo. Ele n\xE3o pode ser exibido novamente.",secretReplace:"Substituir",secretKeep:"Manter o atual",secretWarnTitle:"Substituir o valor salvo?",secretWarn:"O valor salvo n\xE3o pode ser exibido e ser\xE1 descartado assim que voc\xEA o substituir. Digite o novo valor em seguida; ele s\xF3 vale quando voc\xEA salvar."});var p="\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",a=class extends d{baseCls="op-field op-textfield op-secret";stored=!1;initialStored=!1;replacing=!1;revealed=!1;eyeBtn;replaceBtn;keepBtn;hint;constructor(e={}){super({autocomplete:"new-password",...e,inputType:"password"}),this.stored=this.initialStored=!!e.stored}emptyValue(){return null}isEmpty(e){return!this.stored&&(e==null||e==="")}createControl(){let e=super.createControl(),t=this.input;return t.spellcheck=!1,this.eyeBtn=i("button","op-secret__eye",{type:"button","aria-pressed":"false"}),this.replaceBtn=i("button","op-secret__replace",{type:"button"},s("secretReplace")),this.keepBtn=i("button","op-secret__keep",{type:"button"},s("secretKeep")),this.hint=i("div","op-secret__hint",{id:`${this.id}-hint`},i("span","op-secret__note",{},s("secretStored")),this.keepBtn),this.listen(this.eyeBtn,"mousedown",r=>r.preventDefault()),this.listen(this.eyeBtn,"click",()=>this.setRevealed(!this.revealed)),this.listen(this.replaceBtn,"click",()=>{this.replace()}),this.listen(this.keepBtn,"click",()=>this.keep()),this.listen(t,"click",()=>this.stored&&void this.replace()),this.listen(t,"keydown",r=>{this.stored&&(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),this.replace())}),this.on("blur",()=>this.config.autoHide!==!1&&this.setRevealed(!1)),e.append(this.eyeBtn,this.replaceBtn),i("div","op-secret__box",{},e,this.hint)}onRender(){super.onRender(),this.paint()}isStored(){return this.stored}isReplacing(){return this.replacing}isRevealed(){return this.revealed}setStored(e){this.stored=e,this.replacing=!1,this.revealed=!1,super.setValue(null,!0),this.paint(),this.emit("stored-change",e)}setValue(e,t=!1){if(e===!0)return this.setStored(!0);e===!1&&(e=null),this.stored&&e!=null&&(this.stored=!1,this.replacing=!0),super.setValue(e,t),this.paint()}markClean(){super.markClean(),this.initialStored=this.stored}reset(){this.setStored(this.initialStored),super.reset()}async replace(){return!this.stored||this.config.readonly||this.config.disabled||this.emit("before-replace")===!1||this.config.confirmReplace!==!1&&!await h.confirm(this.config.replaceText??s("secretWarn"),{danger:!0,title:this.config.replaceTitle??s("secretWarnTitle"),okText:s("secretReplace")})?!1:(this.stored=!1,this.replacing=!0,super.setValue("",!1),this.paint(),this.input.focus(),this.emit("replace"),!0)}keep(){this.replacing&&(this.stored=!0,this.replacing=!1,this.revealed=!1,super.setValue(null,!1),this.paint(),this.emit("keep"))}setRevealed(e){this.stored&&(e=!1),this.revealed=e,this.paint()}getDisplayText(){return this.stored||(this.value??"")!==""?p:""}paint(){if(!this.rendered)return;let e=this.input,t=this.revealed&&!this.stored;e.type=t?"text":"password",e.readOnly=this.stored||!!this.config.readonly,e.placeholder=this.stored?p:this.config.placeholder??"",this.stored&&(e.value=""),e.setAttribute("aria-describedby",this.stored||this.replacing?this.hint.id:""),!this.stored&&!this.replacing&&e.removeAttribute("aria-describedby"),this.eyeBtn.hidden=this.stored,this.eyeBtn.setAttribute("aria-pressed",String(t)),this.eyeBtn.setAttribute("aria-label",s(t?"secretHide":"secretShow")),this.eyeBtn.replaceChildren(n(t?"eye-off":"eye")),this.replaceBtn.hidden=!this.stored,this.hint.hidden=!this.stored&&!this.replacing,this.hint.querySelector(".op-secret__note").hidden=!this.stored,this.keepBtn.hidden=!this.replacing,this.el.classList.toggle("is-stored",this.stored),this.el.classList.toggle("is-replacing",this.replacing),this.el.classList.toggle("is-revealed",t),this.el.classList.toggle("has-value",this.stored||!!e.value)}};l("secretfield",a);export{a};
2
+ //# sourceMappingURL=chunk-NNR2FNHG.js.map
@@ -0,0 +1,2 @@
1
+ import{a as v}from"./chunk-5BMG5ZBY.js";import{a as m}from"./chunk-MNSDGJKA.js";import{a as w}from"./chunk-HLS5FI55.js";import{a as c}from"./chunk-TIPK3SCJ.js";import{f}from"./chunk-UDXO3KM3.js";import{b as u}from"./chunk-PZSHOSOS.js";import{e as d,f as n}from"./chunk-S4QD5NID.js";d("en",{views:"Views",viewsName:"Name for this view",viewsSave:"Save view",viewsSaveAs:"Save as new view\u2026",viewsDefault:"Open with this view",viewsDelete:"Delete view",viewsConfirmDelete:'Delete the view "{n}"?',viewsReset:"Reset to initial"});d("pt-BR",{views:"Vis\xF5es",viewsName:"Nome desta vis\xE3o",viewsSave:"Salvar vis\xE3o",viewsSaveAs:"Salvar como nova vis\xE3o\u2026",viewsDefault:"Abrir com esta vis\xE3o",viewsDelete:"Excluir vis\xE3o",viewsConfirmDelete:'Excluir a vis\xE3o "{n}"?',viewsReset:"Voltar ao inicial"});var g=()=>globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function M(a,e=localStorage){let t=()=>{try{let s=JSON.parse(e.getItem(a)??"[]");return Array.isArray(s)?s:[]}catch{return[]}},i=s=>e.setItem(a,JSON.stringify(s));return{list:t,save(s){let r={...s,id:s.id??g()},o=t(),h=o.findIndex(p=>p.id===r.id);return h<0?o.push(r):o[h]=r,i(o),r},remove(s){i(t().filter(r=>r.id!==s.id))}}}function P(a){let e=async(t,i="",s)=>{let r=await(a.fetch??fetch)(a.url+i,{method:t,headers:{"Content-Type":"application/json",...a.headers},body:s===void 0?void 0:JSON.stringify(s)});if(!r.ok)throw new Error(`Optikos views: ${t} ${a.url+i} \u2192 ${r.status}`);return r.status===204?void 0:r.json().catch(()=>{})};return{list:()=>e("GET"),save:t=>t.id?e("PUT",`/${encodeURIComponent(t.id)}`,t):e("POST","",t),remove:t=>e("DELETE",`/${encodeURIComponent(t.id)}`).then(()=>{})}}var l=class extends f{baseCls="op-viewmanager";btn;menu;views=[];current;initial={};build(){return this.btn=new w({text:n("views"),icon:"menu",variant:"ghost",handler:()=>this.openMenu()}),this.btn.el.setAttribute("aria-haspopup","menu"),this.own(()=>(this.btn.destroy(),this.menu?.destroy())),u("span",this.baseCls,{},this.btn.el)}onRender(){this.config.grid.render(),this.config.filters?.render(),this.initial=this.getState(),this.config.autoLoad!==!1&&this.reload()}notifyMount(){super.notifyMount(),this.btn.notifyMount()}getState(){let{grid:e,filters:t,extra:i}=this.config,s={columns:e.getColumnState(),filter:t?.getFilter()??null,sorters:[...e.getStore().getSorters()]};return i&&(s.extra=Object.fromEntries(Object.entries(i).map(([r,o])=>[r,o.get()]))),s}setState(e){let{grid:t,filters:i,extra:s}=this.config;e.columns&&t.setColumnState(e.columns);let r=e.sorters?.[0];t.getStore().sort(r?.field??null,r?.dir),i&&(i.setFilter(e.filter??null),i.apply());for(let o in e.extra)s?.[o]?.set(e.extra[o])}getViews(){return this.views}getCurrent(){return this.current}async reload(){await this.run(async()=>{this.views=await this.config.storage.list()??[],this.current=this.current&&this.views.find(t=>t.id===this.current.id);let e=this.views.find(t=>t.default);!this.current&&e&&this.config.autoLoad!==!1&&this.apply(e),this.paint()}),this.emit("load",this.views)}apply(e){let t=typeof e=="string"?this.views.find(i=>i.id===e):e;!t||this.emit("before-apply",t)===!1||(this.current=t,this.setState(t.state),this.paint(),this.emit("apply",t))}async save(){if(!this.current)return this.saveAs();await this.store({...this.current,state:this.getState()})}async saveAs(e){if(e??=await v.prompt(n("viewsName"),{title:n("viewsSaveAs")})??"",e=e.trim(),!e)return;let t=this.views.find(i=>i.name.toLowerCase()===e.toLowerCase());await this.store({...t,name:e,state:this.getState()})}async setDefault(e=!0){if(this.current){for(let t of this.views)t!==this.current&&t.default&&await this.store({...t,default:!1},!1);await this.store({...this.current,default:e})}}async remove(e=this.current){!e||!await v.confirm(n("viewsConfirmDelete",{n:e.name}),{danger:!0,okText:n("viewsDelete")})||await this.run(async()=>{await this.config.storage.remove(e),this.views=this.views.filter(t=>t!==e&&t.id!==e.id),this.current?.id===e.id&&(this.current=void 0),this.paint(),this.emit("remove",e)})}reset(){this.current=void 0,this.setState(this.initial),this.paint(),this.emit("reset")}async store(e,t=!0){await this.run(async()=>{let i=await this.config.storage.save(e)||e,s=this.views.findIndex(r=>i.id&&r.id===i.id||r===e);s<0?this.views.push(i):this.views[s]=i,t&&(this.current=i),this.paint(),this.emit("save",i)})}async run(e){try{await e()}catch(t){this.emit("error",t)}}paint(){this.btn.setText(this.current?.name??n("views"))}openMenu(){let e=this.current,t=[...this.views.map(i=>({text:i.default?`${i.name} \u2605`:i.name,checked:i===e||!!e?.id&&i.id===e.id,handler:()=>this.apply(i)})),...this.views.length?["-"]:[],{text:n("viewsSave"),handler:()=>{this.save()}},{text:n("viewsSaveAs"),handler:()=>{this.saveAs()}},...e?[{text:n("viewsDefault"),checked:!!e.default,handler:()=>{this.setDefault(!e.default)}},{text:n("viewsDelete"),handler:()=>{this.remove()}}]:[],"-",{text:n("viewsReset"),handler:()=>this.reset()}];this.menu??=new m({}),this.menu.setItems(t),this.menu.showBy(this.btn.el)}};c("viewmanager",l);export{M as a,P as b,l as c};
2
+ //# sourceMappingURL=chunk-NQV4THNE.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/components/data/viewmanager/viewmanager.ts"],
4
4
  "sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { t, addMessages } from '../../../core/i18n';\nimport type { FilterGroup, Sorter } from '../../../data/proxy';\nimport { Button } from '../../base/button/button';\nimport { Menu, type MenuEntry } from '../../overlays/menu/menu';\nimport { MessageBox } from '../../overlays/messagebox/messagebox';\nimport type { Grid, ColumnState } from '../grid/grid';\nimport type { FilterBuilder } from '../filterbuilder/filterbuilder';\n\naddMessages('en', {\n views: 'Views',\n viewsName: 'Name for this view',\n viewsSave: 'Save view',\n viewsSaveAs: 'Save as new view\u2026',\n viewsDefault: 'Open with this view',\n viewsDelete: 'Delete view',\n viewsConfirmDelete: 'Delete the view \"{n}\"?',\n viewsReset: 'Reset to initial',\n});\naddMessages('pt-BR', {\n views: 'Vis\u00F5es',\n viewsName: 'Nome desta vis\u00E3o',\n viewsSave: 'Salvar vis\u00E3o',\n viewsSaveAs: 'Salvar como nova vis\u00E3o\u2026',\n viewsDefault: 'Abrir com esta vis\u00E3o',\n viewsDelete: 'Excluir vis\u00E3o',\n viewsConfirmDelete: 'Excluir a vis\u00E3o \"{n}\"?',\n viewsReset: 'Voltar ao inicial',\n});\n\n/** Everything a view remembers: plain JSON, so it can travel to any backend. */\nexport interface ViewState {\n columns?: ColumnState[];\n filter?: FilterGroup | null;\n sorters?: Sorter[];\n /** Whatever the app registered in `extra` (panel collapsed, density...). */\n extra?: Record<string, unknown>;\n}\nexport interface SavedView {\n id?: string;\n name: string;\n default?: boolean;\n state: ViewState;\n}\n\n/** Where views live. Implement it for your endpoint; `localViewStorage` and `restViewStorage` are ready-made. */\nexport interface ViewStorage {\n list(): Promise<SavedView[]> | SavedView[];\n /** Create (no `id`) or update. May return the stored view (with the id the server gave it). */\n save(view: SavedView): Promise<SavedView | void> | SavedView | void;\n remove(view: SavedView): Promise<void> | void;\n}\n\nconst newId = () => globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n\n/** Views in the browser (`localStorage` by default) under one key. */\nexport function localViewStorage(key: string, storage: Storage = localStorage): ViewStorage {\n const read = (): SavedView[] => {\n try {\n const v = JSON.parse(storage.getItem(key) ?? '[]');\n return Array.isArray(v) ? v : [];\n } catch {\n return [];\n }\n };\n const write = (v: SavedView[]) => storage.setItem(key, JSON.stringify(v));\n return {\n list: read,\n save(view) {\n const saved = { ...view, id: view.id ?? newId() };\n const all = read();\n const i = all.findIndex((x) => x.id === saved.id);\n if (i < 0) all.push(saved);\n else all[i] = saved;\n write(all);\n return saved;\n },\n remove(view) {\n write(read().filter((x) => x.id !== view.id));\n },\n };\n}\n\nexport interface RestViewStorageConfig {\n /** `GET url` lists, `POST url` creates, `PUT url/:id` updates, `DELETE url/:id` removes. JSON in and out. */\n url: string;\n headers?: Record<string, string>;\n fetch?: typeof fetch;\n}\n\n/** Views on your server. Responses must be JSON (the list as an array, create/update returning the stored view). */\nexport function restViewStorage(cfg: RestViewStorageConfig): ViewStorage {\n const call = async (method: string, path = '', body?: unknown) => {\n const res = await (cfg.fetch ?? fetch)(cfg.url + path, { method, headers: { 'Content-Type': 'application/json', ...cfg.headers }, body: body === undefined ? undefined : JSON.stringify(body) });\n if (!res.ok) throw new Error(`Optikos views: ${method} ${cfg.url + path} \u2192 ${res.status}`);\n return res.status === 204 ? undefined : res.json().catch(() => undefined);\n };\n return {\n list: () => call('GET'),\n save: (v) => (v.id ? call('PUT', `/${encodeURIComponent(v.id)}`, v) : call('POST', '', v)),\n remove: (v) => call('DELETE', `/${encodeURIComponent(v.id!)}`).then(() => undefined),\n };\n}\n\nexport interface ViewManagerConfig extends ComponentConfig {\n grid: Grid;\n /** Its filter tree is part of the view. */\n filters?: FilterBuilder;\n storage: ViewStorage;\n /** Extra things to remember: `{ density: { get: () => ..., set: (v) => ... } }`. Stored in `state.extra`. */\n extra?: Record<string, { get(): unknown; set(value: unknown): void }>;\n /** Apply the default view when it opens. Default true. */\n autoLoad?: boolean;\n}\n\n/**\n * \"Views\" button for a Grid (and its FilterBuilder): saves and restores the visible columns and their order, the filters\n * (including nested AND/OR groups) and the sort, under a name, in the storage you give it.\n */\nexport class ViewManager extends Component<ViewManagerConfig> {\n protected override baseCls = 'op-viewmanager';\n private btn!: Button;\n private menu?: Menu;\n private views: SavedView[] = [];\n private current?: SavedView;\n private initial: ViewState = {};\n\n protected override build() {\n this.btn = new Button({ text: t('views'), icon: 'menu', variant: 'ghost', handler: () => this.openMenu() });\n this.btn.el.setAttribute('aria-haspopup', 'menu');\n this.own(() => (this.btn.destroy(), this.menu?.destroy()));\n return h('span', this.baseCls, {}, this.btn.el);\n }\n\n protected override onRender() {\n this.config.grid.render();\n this.config.filters?.render();\n this.initial = this.getState();\n if (this.config.autoLoad !== false) void this.reload();\n }\n\n override notifyMount() {\n super.notifyMount();\n this.btn.notifyMount();\n }\n\n // ---- state ---------------------------------------------------------------------------------\n\n /** The grid's and filter's current setup. */\n getState(): ViewState {\n const { grid, filters, extra } = this.config;\n const state: ViewState = { columns: grid.getColumnState(), filter: filters?.getFilter() ?? null, sorters: [...grid.getStore().getSorters()] };\n if (extra) state.extra = Object.fromEntries(Object.entries(extra).map(([k, e]) => [k, e.get()]));\n return state;\n }\n\n /** Puts a setup on the grid and the filter. */\n setState(s: ViewState): void {\n const { grid, filters, extra } = this.config;\n if (s.columns) grid.setColumnState(s.columns);\n const sort = s.sorters?.[0];\n grid.getStore().sort(sort?.field ?? null, sort?.dir);\n if (filters) {\n filters.setFilter(s.filter ?? null);\n filters.apply();\n }\n for (const k in s.extra) extra?.[k]?.set(s.extra[k]);\n }\n\n // ---- views ---------------------------------------------------------------------------------\n\n getViews(): SavedView[] {\n return this.views;\n }\n getCurrent(): SavedView | undefined {\n return this.current;\n }\n\n /** Reads the views from the storage and applies the default one (unless a view is already active). */\n async reload(): Promise<void> {\n await this.run(async () => {\n this.views = (await this.config.storage.list()) ?? [];\n this.current = this.current && this.views.find((v) => v.id === this.current!.id);\n const def = this.views.find((v) => v.default);\n if (!this.current && def && this.config.autoLoad !== false) this.apply(def);\n this.paint();\n });\n this.emit('load', this.views);\n }\n\n /** Applies a saved view (object or id). */\n apply(view: SavedView | string): void {\n const v = typeof view === 'string' ? this.views.find((x) => x.id === view) : view;\n if (!v || this.emit('before-apply', v) === false) return;\n this.current = v;\n this.setState(v.state);\n this.paint();\n this.emit('apply', v);\n }\n\n /** Saves the current setup into the active view; with none active, asks for a name first. */\n async save(): Promise<void> {\n if (!this.current) return this.saveAs();\n await this.store({ ...this.current, state: this.getState() });\n }\n\n /** Saves the current setup as a view with that name (asked for when omitted); an existing name is overwritten. */\n async saveAs(name?: string): Promise<void> {\n name ??= (await MessageBox.prompt(t('viewsName'), { title: t('viewsSaveAs') })) ?? '';\n name = name.trim();\n if (!name) return;\n const same = this.views.find((v) => v.name.toLowerCase() === name!.toLowerCase());\n await this.store({ ...same, name, state: this.getState() });\n }\n\n /** Marks the active view as the one applied on open (and unmarks the others). */\n async setDefault(on = true): Promise<void> {\n if (!this.current) return;\n for (const v of this.views) if (v !== this.current && v.default) await this.store({ ...v, default: false }, false);\n await this.store({ ...this.current, default: on });\n }\n\n async remove(view = this.current): Promise<void> {\n if (!view || !(await MessageBox.confirm(t('viewsConfirmDelete', { n: view.name }), { danger: true, okText: t('viewsDelete') }))) return;\n await this.run(async () => {\n await this.config.storage.remove(view);\n this.views = this.views.filter((v) => v !== view && v.id !== view.id);\n if (this.current?.id === view.id) this.current = undefined;\n this.paint();\n this.emit('remove', view);\n });\n }\n\n /** Back to the setup the grid had when the manager opened. */\n reset(): void {\n this.current = undefined;\n this.setState(this.initial);\n this.paint();\n this.emit('reset');\n }\n\n private async store(view: SavedView, makeCurrent = true): Promise<void> {\n await this.run(async () => {\n const saved = (await this.config.storage.save(view)) || view;\n const i = this.views.findIndex((v) => (saved.id && v.id === saved.id) || v === view);\n if (i < 0) this.views.push(saved);\n else this.views[i] = saved;\n if (makeCurrent) this.current = saved;\n this.paint();\n this.emit('save', saved);\n });\n }\n\n private async run(fn: () => Promise<void>): Promise<void> {\n try {\n await fn();\n } catch (err) {\n this.emit('error', err);\n }\n }\n\n // ---- UI ------------------------------------------------------------------------------------\n\n private paint(): void {\n this.btn.setText(this.current?.name ?? t('views'));\n }\n\n private openMenu(): void {\n const cur = this.current;\n const items: MenuEntry[] = [\n ...this.views.map((v) => ({ text: v.default ? `${v.name} \u2605` : v.name, checked: v === cur || (!!cur?.id && v.id === cur.id), handler: () => this.apply(v) })),\n ...(this.views.length ? (['-'] as const) : []),\n { text: t('viewsSave'), handler: () => void this.save() },\n { text: t('viewsSaveAs'), handler: () => void this.saveAs() },\n ...(cur ? [{ text: t('viewsDefault'), checked: !!cur.default, handler: () => void this.setDefault(!cur.default) }, { text: t('viewsDelete'), handler: () => void this.remove() }] : []),\n '-',\n { text: t('viewsReset'), handler: () => this.reset() },\n ];\n this.menu ??= new Menu({});\n this.menu.setItems(items);\n this.menu.showBy(this.btn.el);\n }\n}\nregister('viewmanager', ViewManager);\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["addMessages", "newId", "localViewStorage", "key", "storage", "read", "v", "write", "view", "saved", "all", "i", "x", "restViewStorage", "cfg", "call", "method", "path", "body", "res", "ViewManager", "Component", "Button", "t", "h", "grid", "filters", "extra", "state", "k", "e", "s", "sort", "def", "name", "MessageBox", "same", "on", "makeCurrent", "fn", "err", "cur", "items", "Menu", "register"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{a as p}from"./chunk-W3H7GTJY.js";import{b as a}from"./chunk-OWEQT2HN.js";import{b as i,f as n}from"./chunk-PZSHOSOS.js";import{a as s}from"./chunk-TIPK3SCJ.js";var o=class extends p{baseCls="op-field op-textfield op-textarea";createInput(){return i("textarea","op-textfield__input op-textarea__input",{rows:this.config.rows??3})}onKey(e){if(e.key==="Enter"){(e.ctrlKey||e.metaKey)&&this.emit("enter",this.getValue());return}super.onKey(e)}onInput(){super.onInput(),this.grow()}applyValue(e){super.applyValue(e),this.grow()}notifyMount(){super.notifyMount(),this.grow()}grow(){let e=this.config;if(!e.autoGrow||!this.rendered)return;let t=this.input;t.style.height="auto";let r=t.scrollHeight;if(e.maxRows){let l=a(t,"1lh")||t.scrollHeight/(t.rows||1);r=Math.min(r,l*e.maxRows)}r&&(t.style.height=`${n(r,0,1/0)}px`)}setRows(e){this.config.rows=e,this.rendered&&(this.input.rows=e)}};s("textarea",o);export{o as a};
2
- //# sourceMappingURL=chunk-XHOBNSBO.js.map
1
+ import{a as p}from"./chunk-2YRQULDC.js";import{b as a}from"./chunk-OWEQT2HN.js";import{a as s}from"./chunk-TIPK3SCJ.js";import{b as i,f as n}from"./chunk-PZSHOSOS.js";var o=class extends p{baseCls="op-field op-textfield op-textarea";createInput(){return i("textarea","op-textfield__input op-textarea__input",{rows:this.config.rows??3})}onKey(e){if(e.key==="Enter"){(e.ctrlKey||e.metaKey)&&this.emit("enter",this.getValue());return}super.onKey(e)}onInput(){super.onInput(),this.grow()}applyValue(e){super.applyValue(e),this.grow()}notifyMount(){super.notifyMount(),this.grow()}grow(){let e=this.config;if(!e.autoGrow||!this.rendered)return;let t=this.input;t.style.height="auto";let r=t.scrollHeight;if(e.maxRows){let l=a(t,"1lh")||t.scrollHeight/(t.rows||1);r=Math.min(r,l*e.maxRows)}r&&(t.style.height=`${n(r,0,1/0)}px`)}setRows(e){this.config.rows=e,this.rendered&&(this.input.rows=e)}};s("textarea",o);export{o as a};
2
+ //# sourceMappingURL=chunk-P4O57S6N.js.map
@@ -1,2 +1,2 @@
1
- import{c as r}from"./chunk-4EZJ5FKJ.js";import{a as o}from"./chunk-A2NKDOYN.js";import{b as t}from"./chunk-PZSHOSOS.js";import{a as i}from"./chunk-TIPK3SCJ.js";var n=class extends o{baseCls="op-badge";tag="span";textEl;onRender(){let e=this.config;e.dot&&this.el.append(t("span","op-badge__dot",{"aria-hidden":"true"})),e.icon&&this.el.append(r(e.icon)),this.textEl=this.el.appendChild(t("span","op-badge__text")),this.setText(e.text??""),this.setTone(e.tone??"neutral")}setText(e){this.config.text=e,this.rendered&&(this.textEl.textContent=String(e))}setTone(e){this.config.tone=e,this.rendered&&(this.el.className=this.el.className.replace(/\bop-badge--\w+/g,"").trim(),this.el.classList.add(`op-badge--${e}`))}};i("badge",n);export{n as a};
2
- //# sourceMappingURL=chunk-MB3MU6HR.js.map
1
+ import{c as r}from"./chunk-DIOJGTUN.js";import{a as i}from"./chunk-TIPK3SCJ.js";import{f as o}from"./chunk-UDXO3KM3.js";import{b as t}from"./chunk-PZSHOSOS.js";var n=class extends o{baseCls="op-badge";tag="span";textEl;onRender(){let e=this.config;e.dot&&this.el.append(t("span","op-badge__dot",{"aria-hidden":"true"})),e.icon&&this.el.append(r(e.icon)),this.textEl=this.el.appendChild(t("span","op-badge__text")),this.setText(e.text??""),this.setTone(e.tone??"neutral")}setText(e){this.config.text=e,this.rendered&&(this.textEl.textContent=String(e))}setTone(e){this.config.tone=e,this.rendered&&(this.el.className=this.el.className.replace(/\bop-badge--\w+/g,"").trim(),this.el.classList.add(`op-badge--${e}`))}};i("badge",n);export{n as a};
2
+ //# sourceMappingURL=chunk-PGVLRMTQ.js.map
@@ -0,0 +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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/charts/stat/stat.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 { format, type Formatter } from '../../../data/format';\nimport { iconEl } from '../../base/icon/icon';\nimport { Chart } from '../chart/chart';\n\naddMessages('en', { statUp: 'up {n}', statDown: 'down {n}', statFlat: 'unchanged' });\naddMessages('pt-BR', { statUp: 'subiu {n}', statDown: 'caiu {n}', statFlat: 'sem varia\u00E7\u00E3o' });\n\nexport interface StatConfig extends ComponentConfig {\n label: string;\n value?: number | string | null;\n /** Name of a registered format (`money`, `percent`...) or a function, for a numeric `value`. */\n format?: string | Formatter;\n /** The change since the last period, as a fraction (`0.125` shows `+12.5%`). */\n delta?: number;\n /** Which way is good news. `down` for costs, errors or waiting times. Default `up`. */\n good?: 'up' | 'down';\n /** Small text under the value (\"vs last week\"). */\n caption?: string;\n icon?: string;\n /** Numbers for a sparkline beside the value. */\n trend?: number[];\n}\n\n/** A KPI tile: a label, a big value, the change since last time and an optional sparkline. */\nexport class Stat extends Component<StatConfig> {\n protected override baseCls = 'op-stat';\n private labelEl!: HTMLElement;\n private valueEl!: HTMLElement;\n private deltaEl!: HTMLElement;\n private captionEl!: HTMLElement;\n private chart?: Chart;\n\n protected override build() {\n this.labelEl = h('div', 'op-stat__label');\n this.valueEl = h('div', 'op-stat__value');\n this.deltaEl = h('span', 'op-stat__delta');\n this.captionEl = h('span', 'op-stat__caption');\n return h('div', this.baseCls, {}, this.labelEl, h('div', 'op-stat__row', {}, this.valueEl, this.deltaEl), this.captionEl);\n }\n\n protected override onRender() {\n const c = this.config;\n this.setLabel(c.label);\n this.setValue(c.value ?? null);\n this.setDelta(c.delta);\n this.setCaption(c.caption ?? '');\n this.setTrend(c.trend);\n }\n\n setLabel(label: string) {\n this.config.label = label;\n if (!this.rendered) return;\n this.labelEl.replaceChildren(...(this.config.icon ? [iconEl(this.config.icon)] : []), label);\n }\n\n setValue(value: number | string | null) {\n this.config.value = value;\n if (this.rendered) this.valueEl.textContent = value == null ? '\u2014' : typeof value === 'number' ? format(this.config.format ?? 'number', value) : value;\n }\n\n setDelta(delta: number | undefined) {\n this.config.delta = delta;\n if (!this.rendered) return;\n const up = (delta ?? 0) > 0;\n const good = (this.config.good ?? 'up') === 'up' ? up : !up;\n this.deltaEl.hidden = delta == null;\n this.deltaEl.className = `op-stat__delta ${!delta ? 'is-flat' : good ? 'is-good' : 'is-bad'}`;\n if (delta == null) return;\n const text = new Intl.NumberFormat(getLocale()._lang, { style: 'percent', maximumFractionDigits: 1, signDisplay: 'exceptZero' }).format(delta);\n this.deltaEl.replaceChildren(iconEl(!delta ? 'minus' : up ? 'arrow-up' : 'arrow-down'), h('span', '', { 'aria-hidden': 'true' }, text), h('span', 'op-sr-only', {}, !delta ? t('statFlat') : t(up ? 'statUp' : 'statDown', { n: text.replace(/^[+-]/, '') })));\n }\n\n setCaption(caption: string) {\n this.config.caption = caption;\n if (this.rendered) {\n this.captionEl.textContent = caption;\n this.captionEl.hidden = !caption;\n }\n }\n\n setTrend(trend: number[] | undefined) {\n this.config.trend = trend;\n if (!this.rendered) return;\n if (!trend?.length) return void (this.chart?.destroy(), (this.chart = undefined));\n const data = trend.map((v, i) => ({ i, v }));\n if (this.chart) return this.chart.setData(data);\n this.chart = new Chart({ kind: 'sparkline', x: 'i', series: ['v'], data, cls: 'op-stat__spark', ariaLabel: this.config.label });\n this.el.append(this.chart.el);\n this.chart.notifyMount();\n }\n\n protected override onDestroy() {\n this.chart?.destroy();\n }\n}\nregister('stat', Stat);\n"],
5
+ "mappings": "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",
6
+ "names": ["addMessages", "Stat", "Component", "h", "c", "label", "iconEl", "value", "format", "delta", "up", "good", "text", "getLocale", "t", "caption", "trend", "data", "v", "i", "Chart", "register"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{c}from"./chunk-DIOJGTUN.js";import{b as g,c as y}from"./chunk-676AKAGF.js";import{b}from"./chunk-VV7CFMPZ.js";import{a as f}from"./chunk-TIPK3SCJ.js";import{c as m,f as v}from"./chunk-UDXO3KM3.js";import{b as o}from"./chunk-PZSHOSOS.js";import{e as d,f as h}from"./chunk-S4QD5NID.js";d("en",{cpPlaceholder:"Type a command or search\u2026",cpLabel:"Command palette",cpFilters:"Categories",cpAll:"All",cpEmpty:"No matching commands",cpHint:"\u2191\u2193 navigate \xB7 Enter run \xB7 Esc close"});d("pt-BR",{cpPlaceholder:"Digite um comando ou pesquise\u2026",cpLabel:"Paleta de comandos",cpFilters:"Categorias",cpAll:"Todas",cpEmpty:"Nenhum comando encontrado",cpHint:"\u2191\u2193 navegar \xB7 Enter executar \xB7 Esc fechar"});var E=()=>/mac|iphone|ipad/i.test(navigator.platform||navigator.userAgent);function C(a,t){let e=t.toLowerCase().split("+"),i=e.pop(),n=r=>e.includes(r),s=E();return a.key.toLowerCase()===i&&a.ctrlKey===(n("ctrl")||n("mod")&&!s)&&a.metaKey===(n("meta")||n("mod")&&s)&&a.shiftKey===n("shift")&&a.altKey===n("alt")}var _=(a,t)=>{let e=0;for(let i of a)if(i===t[e]&&++e===t.length)return!0;return!t.length};function w(a,t){let e=a.title.toLowerCase(),i=[a.category,a.description,...a.keywords??[]].join(" ").toLowerCase(),n=0;for(let s of t.toLowerCase().split(/\s+/).filter(Boolean)){let r=e.indexOf(s),l=r===0?100:r>0?/[\s\-_/]/.test(e[r-1])?80:60:s.length>2&&_(e,s)?30:i.includes(s)?20:0;if(!l)return 0;n+=l}return n}function k(a,t){let e=t.toLowerCase().split(/\s+/).filter(Boolean),i=a.toLowerCase(),n=[];for(let l of e){let p=i.indexOf(l);p>=0&&n.push([p,p+l.length])}n.sort((l,p)=>l[0]-p[0]);let s=[],r=0;for(let[l,p]of n)l<r||(s.push(a.slice(r,l),o("mark","op-palette__mark",{},a.slice(l,p))),r=p);return s.push(a.slice(r)),s.filter(l=>l!=="")}var u=class extends v{baseCls="op-palette-backdrop";commands;levels=[];query="";cat=null;shown=[];active=0;opened=!1;opener=null;release=[];panel;input;filtersEl;listEl;live;crumb;constructor(t={}){super(t),this.commands=[...t.commands??[]];let e=t.hotkey===void 0?"mod+k":t.hotkey;e&&this.listen(document,"keydown",i=>{!C(i,e)||this.destroyed||(i.preventDefault(),this.toggle())},!0)}build(){let t=this.config;this.input=o("input","op-palette__input",{type:"text",role:"combobox","aria-expanded":"true","aria-autocomplete":"list",autocomplete:"off",spellcheck:"false",placeholder:t.placeholder??h("cpPlaceholder")}),this.crumb=o("span","op-palette__crumb"),this.crumb.hidden=!0,this.filtersEl=o("div","op-palette__filters",{role:"group","aria-label":h("cpFilters")}),this.listEl=o("div","op-palette__list",{role:"listbox",id:`${this.id}-list`}),this.input.setAttribute("aria-controls",this.listEl.id),this.live=o("div","op-sr-only",{"aria-live":"polite"}),this.panel=o("div","op-palette",{role:"dialog","aria-modal":"true","aria-label":h("cpLabel")},o("div","op-palette__search",{},c("search"),this.crumb,this.input),this.filtersEl,this.listEl,this.live,o("div","op-palette__hint",{},h("cpHint")));let e=o("div","op-palette-backdrop",{},this.panel);return this.listen(this.input,"input",()=>{this.query=this.input.value,this.active=0,this.paint()}),this.listen(this.panel,"keydown",i=>this.onKey(i)),this.listen(e,"pointerdown",i=>i.target===e&&this.close()),this.listen(this.listEl,"pointermove",i=>{let n=this.indexOf(i);n>=0&&n!==this.active&&this.setActive(n)}),this.listen(this.listEl,"click",i=>{let n=this.indexOf(i);n>=0&&this.choose(this.shown[n])}),this.listen(this.filtersEl,"click",i=>{let n=i.target.closest("[data-cat]");n&&(this.cat=n.dataset.cat||null,this.active=0,this.paint(),this.input.focus())}),e}getCommands(){return this.commands}setCommands(t){this.commands=[...t],this.levels[0]&&(this.levels[0].commands=this.commands),this.opened&&this.paint()}register(t){let e=Array.isArray(t)?t:[t];return this.commands.push(...e),this.opened&&this.paint(),()=>this.setCommands(this.commands.filter(i=>!e.includes(i)))}run(t){let e=this.commands.find(i=>i.id===t);return e?this.exec(e):Promise.resolve()}isOpen(){return this.opened}toggle(){this.opened?this.close():this.open()}open(){if(this.opened||this.destroyed||this.emit("before-open")===!1)return;this.opener=document.activeElement;let t=this.el;this.levels=[{title:"",commands:this.commands}],this.query=this.input.value="",this.cat=null,this.active=0,g(t,this.opener),this.release.push(y(t),b(this.panel)),this.opened=!0,t.classList.add("is-open"),this.notifyMount(),this.paint(),this.input.focus(),this.emit("open")}close(){this.opened&&(this.opened=!1,this.release.splice(0).reverse().forEach(t=>t()),this.el.classList.remove("is-open"),this.el.remove(),this.opener instanceof HTMLElement&&this.opener.isConnected&&this.opener.focus(),this.emit("close"))}onDestroy(){this.opened=!1,this.release.splice(0).forEach(t=>t()),this.panel&&this.el.remove()}level(){return this.levels[this.levels.length-1]}results(){let t=this.level().commands.filter(s=>m(s.permission)&&!s.hidden?.()&&(!this.cat||s.category===this.cat)),e=this.query.trim();if(e)return t.map(s=>({c:s,s:w(s,e)})).filter(s=>s.s>0).sort((s,r)=>r.s-s.s).map(s=>s.c).slice(0,this.config.maxResults??50);let i=this.config.categories??[],n=s=>s.category===void 0?1e6:i.includes(s.category)?i.indexOf(s.category):i.length;return t.map((s,r)=>({c:s,i:r})).sort((s,r)=>n(s.c)-n(r.c)||s.i-r.i).map(s=>s.c).slice(0,this.config.maxResults??50)}paint(){let t=this.level();this.crumb.hidden=this.levels.length<2,this.crumb.textContent=t.title,this.paintFilters(),this.shown=this.results(),this.active=Math.min(this.active,Math.max(0,this.shown.length-1));let e=!!this.query.trim(),i=[],n;this.shown.forEach((s,r)=>{!e&&s.category!==n&&(n=s.category,n&&i.push(o("div","op-palette__group",{role:"presentation"},n)));let l=o("div",`op-palette__item${s.disabled?" is-disabled":""}`,{role:"option",id:`${this.id}-o${r}`,"aria-disabled":s.disabled?"true":null,"data-i":r},s.icon?o("span","op-palette__icon",{},c(s.icon)):o("span","op-palette__icon"),o("span","op-palette__text",{},o("span","op-palette__title",{},...k(s.title,this.query)),s.description?o("span","op-palette__desc",{},s.description):""),e&&s.category?o("span","op-palette__cat",{},s.category):"",s.children?o("span","op-palette__more",{"aria-hidden":"true"},c("chevron-right")):"",s.shortcut?o("kbd","op-palette__kbd",{},s.shortcut):"");i.push(l)}),this.shown.length||i.push(o("div","op-palette__empty",{},this.config.emptyText??h("cpEmpty"))),this.listEl.replaceChildren(...i),this.live.textContent=this.shown.length?h("results",{n:this.shown.length}):h("noResults"),this.setActive(this.active,!1)}paintFilters(){let t=[...new Set(this.level().commands.filter(i=>m(i.permission)&&!i.hidden?.()&&i.category).map(i=>i.category))];this.filtersEl.hidden=this.config.filters===!1||t.length<2,this.cat&&!t.includes(this.cat)&&(this.cat=null);let e=(i,n)=>o("button",`op-palette__chip${(this.cat??"")===n?" is-on":""}`,{type:"button","data-cat":n,"aria-pressed":String((this.cat??"")===n)},i);this.filtersEl.replaceChildren(e(h("cpAll"),""),...t.map(i=>e(i,i)))}indexOf(t){let e=t.target.closest(".op-palette__item");return e?Number(e.dataset.i):-1}setActive(t,e=!0){this.active=t;for(let i of Array.from(this.listEl.querySelectorAll(".op-palette__item"))){let n=Number(i.dataset.i)===t;i.classList.toggle("is-active",n),i.setAttribute("aria-selected",String(n)),n&&(this.input.setAttribute("aria-activedescendant",i.id),e&&i.scrollIntoView?.({block:"nearest"}))}this.shown.length||this.input.removeAttribute("aria-activedescendant")}onKey(t){let e=this.shown.length;switch(t.key){case"ArrowDown":case"ArrowUp":t.preventDefault(),e&&this.setActive((this.active+(t.key==="ArrowDown"?1:e-1))%e);break;case"Home":case"End":t.target===this.input&&!this.input.value&&(t.preventDefault(),e&&this.setActive(t.key==="Home"?0:e-1));break;case"Enter":if(t.target.closest(".op-palette__chip"))return;t.preventDefault(),this.shown[this.active]&&this.choose(this.shown[this.active]);break;case"Escape":t.preventDefault(),t.stopPropagation(),this.levels.length>1?this.back():this.close();break;case"Backspace":!this.input.value&&this.levels.length>1&&(t.preventDefault(),this.back());break}}back(){this.levels.pop(),this.query=this.input.value="",this.cat=null,this.active=0,this.paint(),this.input.focus()}async choose(t){if(!(!t||t.disabled)){if(t.children){try{let e=typeof t.children=="function"?await t.children():t.children;this.levels.push({title:t.title,commands:e}),this.query=this.input.value="",this.cat=null,this.active=0,this.paint(),this.input.focus()}catch(e){this.emit("error",e)}return}this.close(),await this.exec(t)}}async exec(t){try{this.emit("run",t),await t.handler?.({palette:this,command:t})}catch(e){this.emit("error",e)}}};f("commandpalette",u);export{u as a};
2
+ //# sourceMappingURL=chunk-Q6FY4L2F.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/overlays/commandpalette/commandpalette.ts"],
4
+ "sourcesContent": ["import { Component, type ComponentConfig } from '../../../core/component';\nimport { register } from '../../../core/registry';\nimport { h } from '../../../core/dom';\nimport { t, addMessages } from '../../../core/i18n';\nimport { toLayer, lockModal } from '../../../core/layer';\nimport { trapFocus } from '../../../core/focus';\nimport { allowed } from '../../../core/permission';\nimport { iconEl } from '../../base/icon/icon';\n\naddMessages('en', {\n cpPlaceholder: 'Type a command or search\u2026',\n cpLabel: 'Command palette',\n cpFilters: 'Categories',\n cpAll: 'All',\n cpEmpty: 'No matching commands',\n cpHint: '\u2191\u2193 navigate \u00B7 Enter run \u00B7 Esc close',\n});\naddMessages('pt-BR', {\n cpPlaceholder: 'Digite um comando ou pesquise\u2026',\n cpLabel: 'Paleta de comandos',\n cpFilters: 'Categorias',\n cpAll: 'Todas',\n cpEmpty: 'Nenhum comando encontrado',\n cpHint: '\u2191\u2193 navegar \u00B7 Enter executar \u00B7 Esc fechar',\n});\n\nexport interface Command {\n id: string;\n /** The command is left out while `setPermissionResolver` denies it. */\n permission?: string;\n title: string;\n /** Groups the command and gives it a filter chip. */\n category?: string;\n icon?: string;\n description?: string;\n /** Extra words that find the command. */\n keywords?: string[];\n /** Only displayed (the app binds the key itself). */\n shortcut?: string;\n disabled?: boolean;\n hidden?: () => boolean;\n /** Runs after the palette closed. Errors become the palette's `error` event. */\n handler?: (ctx: { palette: CommandPalette; command: Command }) => unknown;\n /** A second level: choosing this command shows these (Backspace on an empty field goes back). */\n children?: Command[] | (() => Command[] | Promise<Command[]>);\n}\n\nexport interface CommandPaletteConfig extends ComponentConfig {\n commands?: Command[];\n /** `mod` is Ctrl on Windows/Linux and \u2318 on macOS. `false` turns the global key off. Default `'mod+k'`. */\n hotkey?: string | false;\n placeholder?: string;\n emptyText?: string;\n maxResults?: number;\n /** Order of the category groups; the others follow. */\n categories?: string[];\n /** Category chips under the field. Default true. */\n filters?: boolean;\n}\n\ntype Level = { title: string; commands: Command[] };\n\nconst isMac = () => /mac|iphone|ipad/i.test(navigator.platform || navigator.userAgent);\n\nfunction matchesKey(e: KeyboardEvent, spec: string): boolean {\n const parts = spec.toLowerCase().split('+');\n const key = parts.pop()!;\n const has = (m: string) => parts.includes(m);\n const mac = isMac();\n return (\n e.key.toLowerCase() === key &&\n e.ctrlKey === (has('ctrl') || (has('mod') && !mac)) &&\n e.metaKey === (has('meta') || (has('mod') && mac)) &&\n e.shiftKey === has('shift') &&\n e.altKey === has('alt')\n );\n}\n\nconst subsequence = (text: string, q: string) => {\n let i = 0;\n for (const ch of text) if (ch === q[i] && ++i === q.length) return true;\n return !q.length;\n};\n\n/** How well a command answers the query (0 = not at all). Every word of the query must match somewhere. */\nfunction score(c: Command, query: string): number {\n const title = c.title.toLowerCase();\n const rest = [c.category, c.description, ...(c.keywords ?? [])].join(' ').toLowerCase();\n let total = 0;\n for (const w of query.toLowerCase().split(/\\s+/).filter(Boolean)) {\n const at = title.indexOf(w);\n const s = at === 0 ? 100 : at > 0 ? (/[\\s\\-_/]/.test(title[at - 1]) ? 80 : 60) : w.length > 2 && subsequence(title, w) ? 30 : rest.includes(w) ? 20 : 0;\n if (!s) return 0;\n total += s;\n }\n return total;\n}\n\n/** Title with the matched words marked. */\nfunction marked(title: string, query: string): Array<string | Node> {\n const words = query.toLowerCase().split(/\\s+/).filter(Boolean);\n const lower = title.toLowerCase();\n const spans: Array<[number, number]> = [];\n for (const w of words) {\n const at = lower.indexOf(w);\n if (at >= 0) spans.push([at, at + w.length]);\n }\n spans.sort((a, b) => a[0] - b[0]);\n const out: Array<string | Node> = [];\n let pos = 0;\n for (const [a, b] of spans) {\n if (a < pos) continue;\n out.push(title.slice(pos, a), h('mark', 'op-palette__mark', {}, title.slice(a, b)));\n pos = b;\n }\n out.push(title.slice(pos));\n return out.filter((x) => x !== '');\n}\n\n/**\n * Command palette: Ctrl/\u2318+K opens a searchable, categorized list of the actions the app registered. Choosing one closes\n * the palette and runs it; a command with `children` opens a second level instead.\n */\nexport class CommandPalette extends Component<CommandPaletteConfig> {\n protected override baseCls = 'op-palette-backdrop';\n private commands: Command[];\n private levels: Level[] = [];\n private query = '';\n private cat: string | null = null;\n private shown: Command[] = [];\n private active = 0;\n private opened = false;\n private opener: Element | null = null;\n private release: Array<() => void> = [];\n private panel!: HTMLElement;\n private input!: HTMLInputElement;\n private filtersEl!: HTMLElement;\n private listEl!: HTMLElement;\n private live!: HTMLElement;\n private crumb!: HTMLElement;\n\n constructor(config: CommandPaletteConfig = {}) {\n super(config);\n this.commands = [...(config.commands ?? [])];\n const key = config.hotkey === undefined ? 'mod+k' : config.hotkey;\n if (key) {\n this.listen(document, 'keydown', (e: KeyboardEvent) => {\n if (!matchesKey(e, key) || this.destroyed) return;\n e.preventDefault();\n this.toggle();\n }, true);\n }\n }\n\n protected override build() {\n const c = this.config;\n this.input = h('input', 'op-palette__input', { type: 'text', role: 'combobox', 'aria-expanded': 'true', 'aria-autocomplete': 'list', autocomplete: 'off', spellcheck: 'false', placeholder: c.placeholder ?? t('cpPlaceholder') });\n this.crumb = h('span', 'op-palette__crumb');\n this.crumb.hidden = true;\n this.filtersEl = h('div', 'op-palette__filters', { role: 'group', 'aria-label': t('cpFilters') });\n this.listEl = h('div', 'op-palette__list', { role: 'listbox', id: `${this.id}-list` });\n this.input.setAttribute('aria-controls', this.listEl.id);\n this.live = h('div', 'op-sr-only', { 'aria-live': 'polite' });\n this.panel = h('div', 'op-palette', { role: 'dialog', 'aria-modal': 'true', 'aria-label': t('cpLabel') },\n h('div', 'op-palette__search', {}, iconEl('search'), this.crumb, this.input),\n this.filtersEl, this.listEl, this.live,\n h('div', 'op-palette__hint', {}, t('cpHint')));\n const el = h('div', 'op-palette-backdrop', {}, this.panel);\n this.listen(this.input, 'input', () => {\n this.query = this.input.value;\n this.active = 0;\n this.paint();\n });\n this.listen(this.panel, 'keydown', (e: KeyboardEvent) => this.onKey(e));\n this.listen(el, 'pointerdown', (e: Event) => e.target === el && this.close());\n this.listen(this.listEl, 'pointermove', (e: Event) => {\n const i = this.indexOf(e);\n if (i >= 0 && i !== this.active) this.setActive(i);\n });\n this.listen(this.listEl, 'click', (e: Event) => {\n const i = this.indexOf(e);\n if (i >= 0) void this.choose(this.shown[i]);\n });\n this.listen(this.filtersEl, 'click', (e: Event) => {\n const b = (e.target as HTMLElement).closest<HTMLElement>('[data-cat]');\n if (!b) return;\n this.cat = b.dataset.cat || null;\n this.active = 0;\n this.paint();\n this.input.focus();\n });\n return el;\n }\n\n // ---- commands ------------------------------------------------------------------------------\n\n getCommands(): Command[] {\n return this.commands;\n }\n setCommands(list: Command[]): void {\n this.commands = [...list];\n if (this.levels[0]) this.levels[0].commands = this.commands;\n if (this.opened) this.paint();\n }\n /** Adds commands; returns the function that removes them again. */\n register(cmd: Command | Command[]): () => void {\n const list = Array.isArray(cmd) ? cmd : [cmd];\n this.commands.push(...list);\n if (this.opened) this.paint();\n return () => this.setCommands(this.commands.filter((c) => !list.includes(c)));\n }\n /** Runs a command by id (searching every level that is not a submenu), without opening the palette. */\n run(id: string): Promise<void> {\n const c = this.commands.find((x) => x.id === id);\n return c ? this.exec(c) : Promise.resolve();\n }\n\n // ---- open / close --------------------------------------------------------------------------\n\n isOpen(): boolean {\n return this.opened;\n }\n toggle(): void {\n if (this.opened) this.close();\n else this.open();\n }\n\n open(): void {\n if (this.opened || this.destroyed || this.emit('before-open') === false) return;\n this.opener = document.activeElement;\n const el = this.el;\n this.levels = [{ title: '', commands: this.commands }];\n this.query = this.input.value = '';\n this.cat = null;\n this.active = 0;\n toLayer(el, this.opener);\n this.release.push(lockModal(el), trapFocus(this.panel));\n this.opened = true;\n el.classList.add('is-open');\n this.notifyMount();\n this.paint();\n this.input.focus();\n this.emit('open');\n }\n\n close(): void {\n if (!this.opened) return;\n this.opened = false;\n this.release.splice(0).reverse().forEach((f) => f());\n this.el.classList.remove('is-open');\n this.el.remove();\n if (this.opener instanceof HTMLElement && this.opener.isConnected) this.opener.focus();\n this.emit('close');\n }\n\n protected override onDestroy(): void {\n this.opened = false;\n this.release.splice(0).forEach((f) => f());\n if (this.panel) this.el.remove();\n }\n\n // ---- rendering -----------------------------------------------------------------------------\n\n private level(): Level {\n return this.levels[this.levels.length - 1];\n }\n\n /** Commands for the current query/filter, in display order. */\n private results(): Command[] {\n const pool = this.level().commands.filter((c) => allowed(c.permission) && !c.hidden?.() && (!this.cat || c.category === this.cat));\n const q = this.query.trim();\n if (q) {\n return pool\n .map((c) => ({ c, s: score(c, q) }))\n .filter((x) => x.s > 0)\n .sort((a, b) => b.s - a.s)\n .map((x) => x.c)\n .slice(0, this.config.maxResults ?? 50);\n }\n const order = this.config.categories ?? [];\n const rank = (c: Command) => (c.category === undefined ? 1e6 : order.includes(c.category) ? order.indexOf(c.category) : order.length);\n return pool.map((c, i) => ({ c, i })).sort((a, b) => rank(a.c) - rank(b.c) || a.i - b.i).map((x) => x.c).slice(0, this.config.maxResults ?? 50);\n }\n\n private paint(): void {\n const lvl = this.level();\n this.crumb.hidden = this.levels.length < 2;\n this.crumb.textContent = lvl.title;\n this.paintFilters();\n this.shown = this.results();\n this.active = Math.min(this.active, Math.max(0, this.shown.length - 1));\n const searching = !!this.query.trim();\n const rows: HTMLElement[] = [];\n let group: string | undefined;\n this.shown.forEach((c, i) => {\n if (!searching && c.category !== group) {\n group = c.category;\n if (group) rows.push(h('div', 'op-palette__group', { role: 'presentation' }, group));\n }\n const item = h('div', `op-palette__item${c.disabled ? ' is-disabled' : ''}`, { role: 'option', id: `${this.id}-o${i}`, 'aria-disabled': c.disabled ? 'true' : null, 'data-i': i },\n c.icon ? h('span', 'op-palette__icon', {}, iconEl(c.icon)) : h('span', 'op-palette__icon'),\n h('span', 'op-palette__text', {}, h('span', 'op-palette__title', {}, ...marked(c.title, this.query)), c.description ? h('span', 'op-palette__desc', {}, c.description) : ''),\n searching && c.category ? h('span', 'op-palette__cat', {}, c.category) : '',\n c.children ? h('span', 'op-palette__more', { 'aria-hidden': 'true' }, iconEl('chevron-right')) : '',\n c.shortcut ? h('kbd', 'op-palette__kbd', {}, c.shortcut) : '');\n rows.push(item);\n });\n if (!this.shown.length) rows.push(h('div', 'op-palette__empty', {}, this.config.emptyText ?? t('cpEmpty')));\n this.listEl.replaceChildren(...rows);\n this.live.textContent = this.shown.length ? t('results', { n: this.shown.length }) : t('noResults');\n this.setActive(this.active, false);\n }\n\n private paintFilters(): void {\n const cats = [...new Set(this.level().commands.filter((c) => allowed(c.permission) && !c.hidden?.() && c.category).map((c) => c.category!))];\n this.filtersEl.hidden = this.config.filters === false || cats.length < 2;\n if (this.cat && !cats.includes(this.cat)) this.cat = null;\n const chip = (label: string, cat: string) => h('button', `op-palette__chip${(this.cat ?? '') === cat ? ' is-on' : ''}`, { type: 'button', 'data-cat': cat, 'aria-pressed': String((this.cat ?? '') === cat) }, label);\n this.filtersEl.replaceChildren(chip(t('cpAll'), ''), ...cats.map((c) => chip(c, c)));\n }\n\n private indexOf(e: Event): number {\n const row = (e.target as HTMLElement).closest<HTMLElement>('.op-palette__item');\n return row ? Number(row.dataset.i) : -1;\n }\n\n private setActive(i: number, scroll = true): void {\n this.active = i;\n for (const row of Array.from(this.listEl.querySelectorAll<HTMLElement>('.op-palette__item'))) {\n const on = Number(row.dataset.i) === i;\n row.classList.toggle('is-active', on);\n row.setAttribute('aria-selected', String(on));\n if (on) {\n this.input.setAttribute('aria-activedescendant', row.id);\n if (scroll) row.scrollIntoView?.({ block: 'nearest' });\n }\n }\n if (!this.shown.length) this.input.removeAttribute('aria-activedescendant');\n }\n\n // ---- behavior ------------------------------------------------------------------------------\n\n private onKey(e: KeyboardEvent): void {\n const n = this.shown.length;\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n e.preventDefault();\n if (n) this.setActive((this.active + (e.key === 'ArrowDown' ? 1 : n - 1)) % n);\n break;\n case 'Home':\n case 'End':\n if (e.target === this.input && !this.input.value) {\n e.preventDefault();\n if (n) this.setActive(e.key === 'Home' ? 0 : n - 1);\n }\n break;\n case 'Enter':\n if ((e.target as HTMLElement).closest('.op-palette__chip')) return;\n e.preventDefault();\n if (this.shown[this.active]) void this.choose(this.shown[this.active]);\n break;\n case 'Escape':\n e.preventDefault();\n e.stopPropagation();\n if (this.levels.length > 1) this.back();\n else this.close();\n break;\n case 'Backspace':\n if (!this.input.value && this.levels.length > 1) {\n e.preventDefault();\n this.back();\n }\n break;\n }\n }\n\n private back(): void {\n this.levels.pop();\n this.query = this.input.value = '';\n this.cat = null;\n this.active = 0;\n this.paint();\n this.input.focus();\n }\n\n private async choose(c: Command | undefined): Promise<void> {\n if (!c || c.disabled) return;\n if (c.children) {\n try {\n const kids = typeof c.children === 'function' ? await c.children() : c.children;\n this.levels.push({ title: c.title, commands: kids });\n this.query = this.input.value = '';\n this.cat = null;\n this.active = 0;\n this.paint();\n this.input.focus();\n } catch (err) {\n this.emit('error', err);\n }\n return;\n }\n this.close();\n await this.exec(c);\n }\n\n private async exec(c: Command): Promise<void> {\n try {\n this.emit('run', c);\n await c.handler?.({ palette: this, command: c });\n } catch (err) {\n this.emit('error', err);\n }\n }\n}\nregister('commandpalette', CommandPalette);\n"],
5
+ "mappings": "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",
6
+ "names": ["addMessages", "isMac", "matchesKey", "e", "spec", "parts", "key", "has", "m", "mac", "subsequence", "text", "q", "i", "ch", "score", "c", "query", "title", "rest", "total", "w", "at", "s", "marked", "words", "lower", "spans", "a", "b", "out", "pos", "h", "x", "CommandPalette", "Component", "config", "t", "iconEl", "el", "list", "cmd", "id", "toLayer", "lockModal", "trapFocus", "f", "pool", "allowed", "order", "rank", "lvl", "searching", "rows", "group", "item", "cats", "chip", "label", "cat", "row", "scroll", "on", "n", "kids", "err", "register"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as p}from"./chunk-2YRQULDC.js";import{a as m}from"./chunk-TIPK3SCJ.js";import{f as c}from"./chunk-PZSHOSOS.js";import{d as u,f as s}from"./chunk-S4QD5NID.js";var o=class extends p{baseCls="op-field op-textfield op-numberfield";garbage=!1;emptyValue(){return null}isEmpty(e){return e==null}get lang(){return this.config.locale??u()._lang}get decimalSep(){return new Intl.NumberFormat(this.lang).formatToParts(1.5).find(e=>e.type==="decimal").value}parse(e){this.garbage=!1;let t=e.trim();if(!t)return null;let{format:r,scale:i=1}=this.config,n=this.decimalSep,l=Number(t.replace(new RegExp(`[^\\d\\-${n==="."?".":","}]`,"g"),"").replace(n,"."))*(r==="percent"?.01:1);return Number.isNaN(l)||!/\d/.test(t)?(this.garbage=!0,null):Math.round(l*i*1e9)/1e9}display(e){if(e==null)return"";let{format:t="decimal",decimals:r,scale:i=1}=this.config,n=e/i;return t==="decimal"&&r==null?String(n).replace(".",this.decimalSep):new Intl.NumberFormat(this.lang,{style:t,currency:t==="currency"?this.config.currency??u()._currency:void 0,...r!=null&&{minimumFractionDigits:r,maximumFractionDigits:r},useGrouping:t!=="decimal"}).format(n)}createControl(){let e=super.createControl(),t=this.input;return t.setAttribute("inputmode","decimal"),t.setAttribute("role","spinbutton"),this.syncAria(),this.listen(t,"blur",()=>{this.garbage||(this.input.value=this.display(this.value))}),e}syncAria(){let{min:e,max:t}=this.config,r=this.inputEl;e!=null?r.setAttribute("aria-valuemin",String(e)):r.removeAttribute("aria-valuemin"),t!=null?r.setAttribute("aria-valuemax",String(t)):r.removeAttribute("aria-valuemax"),this.value!=null?r.setAttribute("aria-valuenow",String(this.value)):r.removeAttribute("aria-valuenow")}onInput(){super.onInput(),this.syncAria(),this.garbage?this.setError(s("number")):this.error&&this.validate()}applyValue(e){super.applyValue(e),this.garbage=!1,this.syncAria()}check(){if(this.garbage)return s("number");let e=super.check(),t=this.value,{min:r,max:i}=this.config;return e||t==null?e:r!=null&&i!=null&&(t<r||t>i)?s("range",{min:r,max:i}):r!=null&&t<r?s("min",{n:r}):i!=null&&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?10:1))):super.onKey(e)}bump(e){let{step:t=1,min:r,max:i,decimals:n,scale:l=1}=this.config,a=(this.value??0)+t*l*e;(r!=null||i!=null)&&(a=c(a,r??-1/0,i??1/0)),a=Number(a.toFixed(n==null?10:Math.max(0,n+Math.log10(l)))),this.setValue(a)}increment(){this.bump(1)}decrement(){this.bump(-1)}setMin(e){this.config.min=e,this.rendered&&this.syncAria()}setMax(e){this.config.max=e,this.rendered&&this.syncAria()}setStep(e){this.config.step=e}setDecimals(e){this.config.decimals=e,this.rendered&&(this.input.value=this.display(this.value))}};m("numberfield",o);export{o as a};
2
+ //# sourceMappingURL=chunk-R32HPK7R.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/components/fields/numberfield/numberfield.ts"],
4
+ "sourcesContent": ["import { TextField, type TextFieldConfig } from '../textfield/textfield';\nimport { register } from '../../../core/registry';\nimport { t, getLocale } from '../../../core/i18n';\nimport { clamp } from '../../../core/dom';\n\nexport interface NumberFieldConfig extends TextFieldConfig<number | null> {\n min?: number;\n max?: number;\n step?: number;\n /** Fixed decimals shown (and applied when the user leaves the field). */\n decimals?: number;\n /** `currency` and `percent` show through `Intl` (`R$ 1.234,56`, `$1,234.56`, `15%`). Default: plain number. */\n format?: 'decimal' | 'currency' | 'percent';\n /** ISO 4217 code for `format: 'currency'`. Default: the locale's (`setCurrency`). */\n currency?: string;\n /** BCP 47 tag for this field's separators. Default: the active locale. */\n locale?: string;\n /** The value is the shown number times `scale`: `scale: 100` with currency keeps cents as an integer (`123456` shows `1.234,56`). */\n scale?: number;\n}\n\nexport class NumberField extends TextField<number | null, NumberFieldConfig> {\n protected override baseCls = 'op-field op-textfield op-numberfield';\n /** Text that is not a number: reported as an error instead of silently dropped. */\n private garbage = false;\n\n protected override emptyValue() {\n return null;\n }\n protected override isEmpty(v: number | null) {\n return v == null;\n }\n\n private get lang() {\n return this.config.locale ?? getLocale()._lang;\n }\n private get decimalSep() {\n return new Intl.NumberFormat(this.lang).formatToParts(1.5).find((p) => p.type === 'decimal')!.value;\n }\n\n protected override parse(text: string): number | null {\n this.garbage = false;\n const s = text.trim();\n if (!s) return null;\n const { format, scale = 1 } = this.config;\n const dec = this.decimalSep;\n // what is neither a digit, a sign nor the decimal mark (currency sign, group separator, %) is dropped\n const n = Number(s.replace(new RegExp(`[^\\\\d\\\\-${dec === '.' ? '.' : ','}]`, 'g'), '').replace(dec, '.')) * (format === 'percent' ? 0.01 : 1);\n if (Number.isNaN(n) || !/\\d/.test(s)) {\n this.garbage = true;\n return null;\n }\n return Math.round(n * scale * 1e9) / 1e9;\n }\n\n protected override display(v: number | null): string {\n if (v == null) return '';\n const { format = 'decimal', decimals: d, scale = 1 } = this.config;\n const n = v / scale;\n if (format === 'decimal' && d == null) return String(n).replace('.', this.decimalSep);\n return new Intl.NumberFormat(this.lang, { style: format, currency: format === 'currency' ? (this.config.currency ?? getLocale()._currency) : undefined, ...(d != null && { minimumFractionDigits: d, maximumFractionDigits: d }), useGrouping: format !== 'decimal' }).format(n);\n }\n\n protected override createControl() {\n const wrap = super.createControl();\n const i = this.input;\n i.setAttribute('inputmode', 'decimal');\n i.setAttribute('role', 'spinbutton');\n this.syncAria();\n // on blur the text is normalized to the configured decimals\n this.listen(i, 'blur', () => {\n if (!this.garbage) this.input.value = this.display(this.value);\n });\n return wrap;\n }\n\n private syncAria() {\n const { min, max } = this.config;\n const i = this.inputEl;\n if (min != null) i.setAttribute('aria-valuemin', String(min)); else i.removeAttribute('aria-valuemin');\n if (max != null) i.setAttribute('aria-valuemax', String(max)); else i.removeAttribute('aria-valuemax');\n if (this.value != null) i.setAttribute('aria-valuenow', String(this.value)); else i.removeAttribute('aria-valuenow');\n }\n\n protected override onInput() {\n super.onInput();\n this.syncAria();\n if (this.garbage) this.setError(t('number'));\n else if (this.error) this.validate();\n }\n protected override applyValue(v: number | null) {\n super.applyValue(v);\n this.garbage = false;\n this.syncAria();\n }\n\n protected override check(): string {\n if (this.garbage) return t('number');\n const base = super.check();\n const v = this.value;\n const { min, max } = this.config;\n if (base || v == null) return base;\n if (min != null && max != null && (v < min || v > max)) return t('range', { min, max });\n if (min != null && v < min) return t('min', { n: min });\n if (max != null && v > max) return t('max', { n: max });\n return '';\n }\n\n protected override onKey(e: KeyboardEvent) {\n const big = e.key === 'PageUp' || e.key === 'PageDown';\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown' || big) {\n e.preventDefault();\n this.bump((e.key.endsWith('Up') ? 1 : -1) * (big ? 10 : 1));\n } else super.onKey(e);\n }\n\n private bump(times: number) {\n const { step = 1, min, max, decimals, scale = 1 } = this.config;\n let n = (this.value ?? 0) + step * scale * times;\n if (min != null || max != null) n = clamp(n, min ?? -Infinity, max ?? Infinity);\n n = Number(n.toFixed(decimals == null ? 10 : Math.max(0, decimals + Math.log10(scale))));\n this.setValue(n);\n }\n increment() {\n this.bump(1);\n }\n decrement() {\n this.bump(-1);\n }\n\n setMin(min: number | undefined) {\n this.config.min = min;\n if (this.rendered) this.syncAria();\n }\n setMax(max: number | undefined) {\n this.config.max = max;\n if (this.rendered) this.syncAria();\n }\n setStep(step: number) {\n this.config.step = step;\n }\n setDecimals(decimals: number | undefined) {\n this.config.decimals = decimals;\n if (this.rendered) this.input.value = this.display(this.value);\n }\n}\nregister('numberfield', NumberField);\n"],
5
+ "mappings": "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",
6
+ "names": ["NumberField", "TextField", "v", "getLocale", "p", "text", "s", "format", "scale", "dec", "n", "d", "wrap", "i", "min", "max", "t", "base", "big", "times", "step", "decimals", "clamp", "register"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{a as m,b as u}from"./chunk-E4VNLYO2.js";import{b as f}from"./chunk-676AKAGF.js";import{a as g}from"./chunk-VV7CFMPZ.js";import{b,c as v}from"./chunk-4AA4FQEM.js";import{a as n}from"./chunk-A2NKDOYN.js";import{b as h,c as l}from"./chunk-PZSHOSOS.js";import{a as d,c as p}from"./chunk-TIPK3SCJ.js";var o=[],s=class extends n{baseCls="op-dropdown";content;open_=!1;release=[];leaving=0;build(){let e=h("div","op-dropdown",{role:this.config.role??"dialog"});e.hidden=!0;let t=this.config.content;return t&&(this.content=t instanceof HTMLElement||t instanceof n?t:p(t),e.append(this.content instanceof n?this.content.el:this.content)),e}getAnchor(){let e=this.config.anchor;return e instanceof n?e.el:e instanceof HTMLElement?e:void 0}isOpen(){return this.open_}open(){if(this.open_||this.destroyed||this.emit("before-open")===!1)return;let e=this.getAnchor();f(this.el,e),e&&this.el.getAttribute("role")==="dialog"&&!this.el.hasAttribute("aria-label")&&!this.el.hasAttribute("aria-labelledby")&&(e.id||=l(),this.el.setAttribute("aria-labelledby",e.id)),this.leaving++,this.el.getAnimations?.().forEach(i=>i.cancel()),this.el.hidden=!1,this.open_=!0,o.push(this),this.el.classList.add("is-open"),this.content instanceof n&&this.content.notifyMount(),this.reposition(),b(this.el,e??this.config.anchor,"dropdown"),e?.setAttribute("aria-expanded","true");let t=this.config,r=i=>{let a=i.target;t.closeOnOutside!==!1&&!this.el.contains(a)&&!e?.contains(a)&&this.close()},c=i=>{i.key==="Escape"&&t.closeOnEsc!==!1&&o[o.length-1]===this&&(i.stopPropagation(),this.close(),(e?.querySelector("input,button")??e)?.focus?.())};document.addEventListener("pointerdown",r,!0),document.addEventListener("keydown",c,!0),this.release=[()=>document.removeEventListener("pointerdown",r,!0),()=>document.removeEventListener("keydown",c,!0),u(()=>this.reposition())],t.autoFocus&&g(this.el)[0]?.focus(),this.emit("open")}close(){if(!this.open_||this.emit("before-close")===!1)return;this.open_=!1,o.splice(o.indexOf(this),1),this.el.classList.remove("is-open");let e=v(this.el,this.getAnchor()??this.config.anchor,"dropdown");if(e){let t=++this.leaving;e.then(()=>t===this.leaving&&!this.open_&&(this.el.hidden=!0))}else this.el.hidden=!0;this.getAnchor()?.setAttribute("aria-expanded","false"),this.release.splice(0).forEach(t=>t()),this.emit("close")}toggle(){this.open_?this.close():this.open()}reposition(){let e=this.getAnchor()??this.config.anchor;if(!this.open_||!e||e instanceof n)return;let t=this.config;m(this.el,e,{placement:t.placement??"bottom-start",offset:t.offset,flip:t.flip,matchWidth:t.matchWidth})}setAnchor(e){this.config.anchor=e,this.reposition()}setPlacement(e){this.config.placement=e,this.reposition()}setContent(e){this.content instanceof n&&this.content!==e&&this.content.destroy(),this.config.content=e,this.content=e,this.el.replaceChildren(e instanceof n?e.el:e),this.reposition()}onDestroy(){this.open_&&o.splice(o.indexOf(this),1),this.open_=!1,this.release.splice(0).forEach(e=>e()),this.getAnchor()?.setAttribute("aria-expanded","false"),this.content instanceof n&&this.content.destroy()}};d("dropdown",s);export{s as a};
2
- //# sourceMappingURL=chunk-Z2JBUHKA.js.map
1
+ import{a as m,b as u}from"./chunk-E4VNLYO2.js";import{b as f}from"./chunk-676AKAGF.js";import{a as g}from"./chunk-VV7CFMPZ.js";import{a as d,c as p}from"./chunk-TIPK3SCJ.js";import{b,c as v}from"./chunk-4AA4FQEM.js";import{f as n}from"./chunk-UDXO3KM3.js";import{b as h,c as l}from"./chunk-PZSHOSOS.js";var o=[],s=class extends n{baseCls="op-dropdown";content;open_=!1;release=[];leaving=0;build(){let e=h("div","op-dropdown",{role:this.config.role??"dialog"});e.hidden=!0;let t=this.config.content;return t&&(this.content=t instanceof HTMLElement||t instanceof n?t:p(t),e.append(this.content instanceof n?this.content.el:this.content)),e}getAnchor(){let e=this.config.anchor;return e instanceof n?e.el:e instanceof HTMLElement?e:void 0}isOpen(){return this.open_}open(){if(this.open_||this.destroyed||this.emit("before-open")===!1)return;let e=this.getAnchor();f(this.el,e),e&&this.el.getAttribute("role")==="dialog"&&!this.el.hasAttribute("aria-label")&&!this.el.hasAttribute("aria-labelledby")&&(e.id||=l(),this.el.setAttribute("aria-labelledby",e.id)),this.leaving++,this.el.getAnimations?.().forEach(i=>i.cancel()),this.el.hidden=!1,this.open_=!0,o.push(this),this.el.classList.add("is-open"),this.content instanceof n&&this.content.notifyMount(),this.reposition(),b(this.el,e??this.config.anchor,"dropdown"),e?.setAttribute("aria-expanded","true");let t=this.config,r=i=>{let a=i.target;t.closeOnOutside!==!1&&!this.el.contains(a)&&!e?.contains(a)&&this.close()},c=i=>{i.key==="Escape"&&t.closeOnEsc!==!1&&o[o.length-1]===this&&(i.stopPropagation(),this.close(),(e?.querySelector("input,button")??e)?.focus?.())};document.addEventListener("pointerdown",r,!0),document.addEventListener("keydown",c,!0),this.release=[()=>document.removeEventListener("pointerdown",r,!0),()=>document.removeEventListener("keydown",c,!0),u(()=>this.reposition())],t.autoFocus&&g(this.el)[0]?.focus(),this.emit("open")}close(){if(!this.open_||this.emit("before-close")===!1)return;this.open_=!1,o.splice(o.indexOf(this),1),this.el.classList.remove("is-open");let e=v(this.el,this.getAnchor()??this.config.anchor,"dropdown");if(e){let t=++this.leaving;e.then(()=>t===this.leaving&&!this.open_&&(this.el.hidden=!0))}else this.el.hidden=!0;this.getAnchor()?.setAttribute("aria-expanded","false"),this.release.splice(0).forEach(t=>t()),this.emit("close")}toggle(){this.open_?this.close():this.open()}reposition(){let e=this.getAnchor()??this.config.anchor;if(!this.open_||!e||e instanceof n)return;let t=this.config;m(this.el,e,{placement:t.placement??"bottom-start",offset:t.offset,flip:t.flip,matchWidth:t.matchWidth})}setAnchor(e){this.config.anchor=e,this.reposition()}setPlacement(e){this.config.placement=e,this.reposition()}setContent(e){this.content instanceof n&&this.content!==e&&this.content.destroy(),this.config.content=e,this.content=e,this.el.replaceChildren(e instanceof n?e.el:e),this.reposition()}onDestroy(){this.open_&&o.splice(o.indexOf(this),1),this.open_=!1,this.release.splice(0).forEach(e=>e()),this.getAnchor()?.setAttribute("aria-expanded","false"),this.content instanceof n&&this.content.destroy()}};d("dropdown",s);export{s as a};
2
+ //# sourceMappingURL=chunk-RG6SHPHF.js.map
@@ -1,2 +1,2 @@
1
- import{a as f}from"./chunk-Z2JBUHKA.js";import{a as g}from"./chunk-W3H7GTJY.js";import{a as m}from"./chunk-G2DAD3MQ.js";import{f as a,g as o}from"./chunk-5JEXM5S7.js";import{c as h}from"./chunk-4EZJ5FKJ.js";import{b as c}from"./chunk-PZSHOSOS.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{f as n}from"./chunk-MW3RWBZ7.js";var b=/\s*(?:–|—|\s-\s|\sto\s|\sa\s)\s*/,d=p=>a(p,{day:"2-digit",month:"2-digit",year:"numeric"}),l=class extends g{baseCls="op-field op-textfield op-picker op-datefield op-daterange";cal;dd;garbage=!1;emptyValue(){return null}isEmpty(e){return!e?.start}parse(e){if(this.garbage=!1,!e.trim())return null;let[r,s]=e.trim().split(b),t=o(r),i=s?o(s):null;return!t||s&&!i?(this.garbage=!0,null):i&&i<t?{start:i,end:t}:{start:t,end:i??t}}display(e){return e?.start?e.end&&e.end!==e.start?`${d(e.start)} \u2013 ${d(e.end)}`:d(e.start):""}createControl(){let e=super.createControl(),r=this.input;r.setAttribute("role","combobox"),r.setAttribute("aria-haspopup","dialog"),r.setAttribute("aria-expanded","false");let s=c("button","op-picker__trigger",{type:"button",tabindex:-1,"aria-label":n("calOpen")},h("calendar"));this.listen(s,"mousedown",i=>i.preventDefault()),this.listen(s,"click",()=>{!this.config.disabled&&!this.config.readonly&&this.toggle()}),e.append(s);let t=this.config;return this.cal=new m({range:!0,value:t.value,min:t.min,max:t.max,firstDay:t.firstDay}),this.dd=new f({anchor:e,content:this.cal,role:"presentation"}),this.cal.on("select",i=>{this.dd.close(),this.setValue(i),r.focus()}),this.dd.on("open",()=>{r.setAttribute("aria-expanded","true"),this.el.classList.add("is-open"),this.cal.setValue(this.value),this.cal.focusDay(),this.emit("expand")}),this.dd.on("close",()=>{r.setAttribute("aria-expanded","false"),this.el.classList.remove("is-open"),this.emit("collapse")}),this.own(()=>this.dd.destroy()),this.on("blur",()=>this.later(()=>{let i=document.activeElement;!this.el.contains(i)&&!this.dd.el.contains(i)&&this.dd.close()},0)),e}onKey(e){e.key==="ArrowDown"&&!this.dd.isOpen()?(e.preventDefault(),this.open()):super.onKey(e)}onInput(){super.onInput(),this.garbage?this.setError(n("date")):this.error&&this.validate()}applyValue(e){super.applyValue(e),this.garbage=!1}onDisabled(e){super.onDisabled(e),this.el.querySelector(".op-picker__trigger").disabled=e}check(){if(this.garbage)return n("date");let e=super.check(),r=this.value;if(e||!r)return e;let{min:s,max:t}=this.config;return s&&r.start<s?n("dateMin",{n:a(s)}):t&&(r.end??r.start)>t?n("dateMax",{n:a(t)}):""}open(){this.config.disabled||this.config.readonly||!this.rendered||this.dd.open()}close(){this.dd?.close()}toggle(){this.dd.isOpen()?this.close():this.open()}setMin(e){this.config.min=e,this.cal?.setMin(e)}setMax(e){this.config.max=e,this.cal?.setMax(e)}};u("daterangefield",l);export{l as a};
2
- //# sourceMappingURL=chunk-EDUMAMK4.js.map
1
+ import{a as m}from"./chunk-GEJKFE4X.js";import{a as f}from"./chunk-RG6SHPHF.js";import{a as g}from"./chunk-2YRQULDC.js";import{c as h}from"./chunk-DIOJGTUN.js";import{f as a,g as o}from"./chunk-2GKIF7A6.js";import{a as u}from"./chunk-TIPK3SCJ.js";import{b as c}from"./chunk-PZSHOSOS.js";import{f as n}from"./chunk-S4QD5NID.js";var b=/\s*(?:–|—|\s-\s|\sto\s|\sa\s)\s*/,d=p=>a(p,{day:"2-digit",month:"2-digit",year:"numeric"}),l=class extends g{baseCls="op-field op-textfield op-picker op-datefield op-daterange";cal;dd;garbage=!1;emptyValue(){return null}isEmpty(e){return!e?.start}parse(e){if(this.garbage=!1,!e.trim())return null;let[r,s]=e.trim().split(b),t=o(r),i=s?o(s):null;return!t||s&&!i?(this.garbage=!0,null):i&&i<t?{start:i,end:t}:{start:t,end:i??t}}display(e){return e?.start?e.end&&e.end!==e.start?`${d(e.start)} \u2013 ${d(e.end)}`:d(e.start):""}createControl(){let e=super.createControl(),r=this.input;r.setAttribute("role","combobox"),r.setAttribute("aria-haspopup","dialog"),r.setAttribute("aria-expanded","false");let s=c("button","op-picker__trigger",{type:"button",tabindex:-1,"aria-label":n("calOpen")},h("calendar"));this.listen(s,"mousedown",i=>i.preventDefault()),this.listen(s,"click",()=>{!this.config.disabled&&!this.config.readonly&&this.toggle()}),e.append(s);let t=this.config;return this.cal=new m({range:!0,value:t.value,min:t.min,max:t.max,firstDay:t.firstDay}),this.dd=new f({anchor:e,content:this.cal,role:"presentation"}),this.cal.on("select",i=>{this.dd.close(),this.setValue(i),r.focus()}),this.dd.on("open",()=>{r.setAttribute("aria-expanded","true"),this.el.classList.add("is-open"),this.cal.setValue(this.value),this.cal.focusDay(),this.emit("expand")}),this.dd.on("close",()=>{r.setAttribute("aria-expanded","false"),this.el.classList.remove("is-open"),this.emit("collapse")}),this.own(()=>this.dd.destroy()),this.on("blur",()=>this.later(()=>{let i=document.activeElement;!this.el.contains(i)&&!this.dd.el.contains(i)&&this.dd.close()},0)),e}onKey(e){e.key==="ArrowDown"&&!this.dd.isOpen()?(e.preventDefault(),this.open()):super.onKey(e)}onInput(){super.onInput(),this.garbage?this.setError(n("date")):this.error&&this.validate()}applyValue(e){super.applyValue(e),this.garbage=!1}onDisabled(e){super.onDisabled(e),this.el.querySelector(".op-picker__trigger").disabled=e}check(){if(this.garbage)return n("date");let e=super.check(),r=this.value;if(e||!r)return e;let{min:s,max:t}=this.config;return s&&r.start<s?n("dateMin",{n:a(s)}):t&&(r.end??r.start)>t?n("dateMax",{n:a(t)}):""}open(){this.config.disabled||this.config.readonly||!this.rendered||this.dd.open()}close(){this.dd?.close()}toggle(){this.dd.isOpen()?this.close():this.open()}setMin(e){this.config.min=e,this.cal?.setMin(e)}setMax(e){this.config.max=e,this.cal?.setMax(e)}};u("daterangefield",l);export{l as a};
2
+ //# sourceMappingURL=chunk-S2CMWKVB.js.map
@@ -0,0 +1,2 @@
1
+ var s={_lang:"en",_currency:"USD",_firstDay:"0",required:"This field is required",minLength:"Enter at least {n} characters",maxLength:"Enter at most {n} characters",pattern:"Invalid format",email:"Enter a valid email address",min:"Must be at least {n}",max:"Must be at most {n}",range:"Must be between {min} and {max}",number:"Enter a valid number",date:"Enter a valid date",loading:"Loading",close:"Close",ok:"OK",cancel:"Cancel",clear:"Clear",collapse:"Collapse",expand:"Expand",empty:"No data",search:"Search",noResults:"No results",results:"{n} results"},c={_lang:"pt-BR",_currency:"BRL",_firstDay:"0",required:"Campo obrigat\xF3rio",minLength:"Informe ao menos {n} caracteres",maxLength:"Informe no m\xE1ximo {n} caracteres",pattern:"Formato inv\xE1lido",email:"Informe um e-mail v\xE1lido",min:"Deve ser no m\xEDnimo {n}",max:"Deve ser no m\xE1ximo {n}",range:"Deve estar entre {min} e {max}",number:"Informe um n\xFAmero v\xE1lido",date:"Informe uma data v\xE1lida",loading:"Carregando",close:"Fechar",ok:"OK",cancel:"Cancelar",clear:"Limpar",collapse:"Recolher",expand:"Expandir",empty:"Sem dados",search:"Pesquisar",noResults:"Nenhum resultado",results:"{n} resultados"},t={en:s,"pt-BR":c},a=s;function l(e){typeof e=="string"?a=t[e]??t[Object.keys(t).find(n=>n.startsWith(e.split("-")[0]))??"en"]:(a={...s,...e},e._lang&&(t[e._lang]=a))}function m(e){a._currency=e}var d=()=>a;function u(e,n){let r=t[e]??={_lang:e};for(let o in n)o in r||(r[o]=n[o])}function g(e,n){let r=a[e]??s[e]??e;return n?r.replace(/\{(\w+)\}/g,(o,i)=>String(n[i]??"")):r}export{t as a,l as b,m as c,d,u as e,g as f};
2
+ //# sourceMappingURL=chunk-S4QD5NID.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/i18n.ts"],
4
+ "sourcesContent": ["export type Locale = Record<string, string>;\n\n// Messages shared by the core and several components. Component-only keys live with the component (addMessages).\nconst en: Locale = {\n _lang: 'en',\n _currency: 'USD',\n _firstDay: '0',\n required: 'This field is required',\n minLength: 'Enter at least {n} characters',\n maxLength: 'Enter at most {n} characters',\n pattern: 'Invalid format',\n email: 'Enter a valid email address',\n min: 'Must be at least {n}',\n max: 'Must be at most {n}',\n range: 'Must be between {min} and {max}',\n number: 'Enter a valid number',\n date: 'Enter a valid date',\n loading: 'Loading',\n close: 'Close',\n ok: 'OK',\n cancel: 'Cancel',\n clear: 'Clear',\n collapse: 'Collapse',\n expand: 'Expand',\n empty: 'No data',\n search: 'Search',\n noResults: 'No results',\n results: '{n} results',\n};\n\nconst ptBR: Locale = {\n _lang: 'pt-BR',\n _currency: 'BRL',\n _firstDay: '0',\n required: 'Campo obrigat\u00F3rio',\n minLength: 'Informe ao menos {n} caracteres',\n maxLength: 'Informe no m\u00E1ximo {n} caracteres',\n pattern: 'Formato inv\u00E1lido',\n email: 'Informe um e-mail v\u00E1lido',\n min: 'Deve ser no m\u00EDnimo {n}',\n max: 'Deve ser no m\u00E1ximo {n}',\n range: 'Deve estar entre {min} e {max}',\n number: 'Informe um n\u00FAmero v\u00E1lido',\n date: 'Informe uma data v\u00E1lida',\n loading: 'Carregando',\n close: 'Fechar',\n ok: 'OK',\n cancel: 'Cancelar',\n clear: 'Limpar',\n collapse: 'Recolher',\n expand: 'Expandir',\n empty: 'Sem dados',\n search: 'Pesquisar',\n noResults: 'Nenhum resultado',\n results: '{n} resultados',\n};\n\nexport const locales: Record<string, Locale> = { en, 'pt-BR': ptBR };\nlet current: Locale = en;\n\n/** Picks a registered locale by name (`'pt-BR'`, or `'pt'` as a prefix) or merges a custom object over English. */\nexport function setLocale(l: string | Locale): void {\n if (typeof l === 'string') {\n current = locales[l] ?? locales[Object.keys(locales).find((k) => k.startsWith(l.split('-')[0])) ?? 'en'];\n } else {\n current = { ...en, ...l };\n if (l._lang) locales[l._lang] = current;\n }\n}\n\n/** The ISO 4217 code that `money` columns and currency fields use (each locale brings its own default). */\nexport function setCurrency(code: string): void {\n current._currency = code;\n}\n\nexport const getLocale = (): Locale => current;\n\n/**\n * Adds messages to a locale (created if missing). Keys already there are kept, so an app's own overrides win.\n * Each component registers its own keys this way, so its messages only ship with it.\n */\nexport function addMessages(lang: string, messages: Locale): void {\n const target = (locales[lang] ??= { _lang: lang });\n for (const k in messages) if (!(k in target)) target[k] = messages[k];\n}\n\n/** Translates a key, replacing `{name}` placeholders. */\nexport function t(key: string, vars?: Record<string, string | number>): string {\n const s = current[key] ?? en[key] ?? key;\n return vars ? s.replace(/\\{(\\w+)\\}/g, (_, k) => String(vars[k] ?? '')) : s;\n}\n"],
5
+ "mappings": "AAGA,IAAMA,EAAa,CACjB,MAAO,KACP,UAAW,MACX,UAAW,IACX,SAAU,yBACV,UAAW,gCACX,UAAW,+BACX,QAAS,iBACT,MAAO,8BACP,IAAK,uBACL,IAAK,sBACL,MAAO,kCACP,OAAQ,uBACR,KAAM,qBACN,QAAS,UACT,MAAO,QACP,GAAI,KACJ,OAAQ,SACR,MAAO,QACP,SAAU,WACV,OAAQ,SACR,MAAO,UACP,OAAQ,SACR,UAAW,aACX,QAAS,aACX,EAEMC,EAAe,CACnB,MAAO,QACP,UAAW,MACX,UAAW,IACX,SAAU,uBACV,UAAW,kCACX,UAAW,sCACX,QAAS,sBACT,MAAO,8BACP,IAAK,4BACL,IAAK,4BACL,MAAO,iCACP,OAAQ,iCACR,KAAM,6BACN,QAAS,aACT,MAAO,SACP,GAAI,KACJ,OAAQ,WACR,MAAO,SACP,SAAU,WACV,OAAQ,WACR,MAAO,YACP,OAAQ,YACR,UAAW,mBACX,QAAS,gBACX,EAEaC,EAAkC,CAAE,GAAAF,EAAI,QAASC,CAAK,EAC/DE,EAAkBH,EAGf,SAASI,EAAUC,EAA0B,CAC9C,OAAOA,GAAM,SACfF,EAAUD,EAAQG,CAAC,GAAKH,EAAQ,OAAO,KAAKA,CAAO,EAAE,KAAMI,GAAMA,EAAE,WAAWD,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAK,IAAI,GAEvGF,EAAU,CAAE,GAAGH,EAAI,GAAGK,CAAE,EACpBA,EAAE,QAAOH,EAAQG,EAAE,KAAK,EAAIF,GAEpC,CAGO,SAASI,EAAYC,EAAoB,CAC9CL,EAAQ,UAAYK,CACtB,CAEO,IAAMC,EAAY,IAAcN,EAMhC,SAASO,EAAYC,EAAcC,EAAwB,CAChE,IAAMC,EAAUX,EAAQS,CAAI,IAAM,CAAE,MAAOA,CAAK,EAChD,QAAWL,KAAKM,EAAgBN,KAAKO,IAASA,EAAOP,CAAC,EAAIM,EAASN,CAAC,EACtE,CAGO,SAASQ,EAAEC,EAAaC,EAAgD,CAC7E,IAAMC,EAAId,EAAQY,CAAG,GAAKf,EAAGe,CAAG,GAAKA,EACrC,OAAOC,EAAOC,EAAE,QAAQ,aAAc,CAACC,EAAGZ,IAAM,OAAOU,EAAKV,CAAC,GAAK,EAAE,CAAC,EAAIW,CAC3E",
6
+ "names": ["en", "ptBR", "locales", "current", "setLocale", "l", "k", "setCurrency", "code", "getLocale", "addMessages", "lang", "messages", "target", "t", "key", "vars", "s", "_"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{c as T}from"./chunk-DIOJGTUN.js";import{a as E}from"./chunk-TIPK3SCJ.js";import{f as I}from"./chunk-UDXO3KM3.js";import{b as s}from"./chunk-PZSHOSOS.js";import{d as _,e as b,f}from"./chunk-S4QD5NID.js";b("en",{timeline:"Timeline",tlNow:"Now",tlFromTo:"{from} to {to}"});b("pt-BR",{timeline:"Linha do tempo",tlNow:"Agora",tlFromTo:"{from} at\xE9 {to}"});var C=/^\d{1,2}:\d{2}$/,d=a=>String(a).padStart(2,"0"),w=864e5,$=(a,e)=>/^\d{4}-\d{2}/.test(a)&&!isNaN(+new Date(a))?new Intl.DateTimeFormat(_()._lang,e).format(new Date(/^\d{4}-\d{2}-\d{2}$/.test(a)?`${a}T00:00`:a)):a,M=class extends I{baseCls="op-timeline";items=[];scale;build(){return s("div",this.baseCls)}onRender(){this.el.classList.add(`op-timeline--${this.config.mode??"list"}`);let e=this.config.store;e&&this.own(e.subscribe(()=>this.setItems(e.getFiltered().map(i=>i.data)))),this.setItems(e?e.getFiltered().map(i=>i.data):this.config.items??[]);for(let i of this.config.plugins??[]){let l=i.init(this);l&&this.own(l)}this.listen(this.el,"click",i=>this.pick(i.target)),this.listen(this.el,"keydown",i=>i.key==="Enter"&&this.pick(i.target))}pick(e){let i=Number(e.closest("[data-i]")?.dataset.i);this.items[i]&&this.emit("select",this.items[i])}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??f("timeline")),this.el.replaceChildren(...this.config.mode==="range"?this.range():this.list()),this.emit("paint")}list(){return this.items.map((e,i)=>s("div",`op-timeline__item${e.tone&&e.tone!=="default"?` is-${e.tone}`:""}`,{role:"listitem","data-i":i,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?T(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,i=C.test(e.from??this.items.find(t=>t.start)?.start??""),l=t=>i?(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),c=this.items.filter(t=>t.start).map(t=>({x:t,a:l(t.start),b:l(t.end??t.start)+(!i&&t.end&&/^\d{4}-\d{2}-\d{2}$/.test(t.end)?w:0)}));if(!c.length&&!(e.from&&e.to))return[];let r=e.from?l(e.from):Math.min(...c.map(t=>t.a)),m=e.to?l(e.to)+(/^\d{4}-\d{2}-\d{2}$/.test(e.to)?w:0):Math.max(...c.map(t=>t.b),r+1),p=t=>`${(Math.min(Math.max((t-r)/(m-r),0),1)*100).toFixed(3)}%`,D=[...e.lanes??[],...c.map(t=>t.x.lane??"").filter((t,o,n)=>n.indexOf(t)===o&&!(e.lanes??[]).includes(t))];this.scale={lo:r,hi:m,clock:i,parse:l,format:t=>i?`${d(Math.floor(t/36e5))}:${d(Math.round(t/6e4)%60)}`:(o=>`${o.getFullYear()}-${d(o.getMonth()+1)}-${d(o.getDate())}T${d(o.getHours())}:${d(o.getMinutes())}`)(new Date(t))};let y=!i&&m-r>62*w,v=[],S=(t,o)=>{let n=s("span","op-timeline__tick",{},o);n.style.insetInlineStart=p(t),v.push(n)};if(i)for(let t=Math.ceil(r/36e5)*36e5,o=(m-r)/36e5>14?72e5:36e5;t<m;t+=o)S(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)&&S(+t,new Intl.DateTimeFormat(_()._lang,y?{month:"short"}:{day:"numeric",month:"short"}).format(t));let g=[s("div","op-timeline__axis",{},s("span","op-timeline__lane-name"),s("div","op-timeline__track",{"aria-hidden":"true"},...v))];for(let t of D){let o=c.filter(n=>(n.x.lane??"")===t).map(({x:n,a:k,b:L})=>{let h=s("div",`op-timeline__bar${n.tone&&n.tone!=="default"?` is-${n.tone}`:""}`,{role:"listitem",tabindex:0,"data-i":this.items.indexOf(n),"aria-label":`${n.title}, ${f("tlFromTo",{from:$(n.start,{dateStyle:"medium",timeStyle:/T/.test(n.start)?"short":void 0}),to:$(n.end??n.start,{dateStyle:"medium",timeStyle:/T/.test(n.end??"")?"short":void 0})})}`},n.icon?T(n.icon):null,s("span","op-timeline__bar-text",{},n.title));return h.title=n.text??n.title,h.style.insetInlineStart=p(k),h.style.insetInlineEnd=`calc(100% - ${p(Math.max(L,k+(m-r)/200))})`,h});g.push(s("div","op-timeline__lane",{role:"group","aria-label":t},s("span","op-timeline__lane-name",{},t),s("div","op-timeline__track",{},...o)))}let u=Date.now();if(e.now!==!1&&!i&&u>=r&&u<=m){let t=s("div","op-timeline__now",{"aria-hidden":"true",title:f("tlNow")});t.style.insetInlineStart=p(u),g.push(s("div","op-timeline__nowrow",{"aria-hidden":"true"},s("span","op-timeline__lane-name"),s("div","op-timeline__track",{},t)))}return g}};E("timeline",M);export{M as a};
2
+ //# sourceMappingURL=chunk-SB4ICXBV.js.map