@jimka/typescript-ui 0.6.0 → 0.8.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 (306) hide show
  1. package/dist/lib/AbstractInput-Dt9ooHjo.js +2 -0
  2. package/dist/lib/AbstractInput-Dt9ooHjo.js.map +1 -0
  3. package/dist/lib/AccordionConstraints-DahZEfEp.js +2 -0
  4. package/dist/lib/AccordionConstraints-DahZEfEp.js.map +1 -0
  5. package/dist/lib/{Anchor-CwRhdP2J.js → Anchor-DdYgyn2V.js} +2 -2
  6. package/dist/lib/{Anchor-CwRhdP2J.js.map → Anchor-DdYgyn2V.js.map} +1 -1
  7. package/dist/lib/AnimatedDropdown-_KhHzX5D.js +2 -0
  8. package/dist/lib/AnimatedDropdown-_KhHzX5D.js.map +1 -0
  9. package/dist/lib/Border-BELbqMDJ.js +2 -0
  10. package/dist/lib/Border-BELbqMDJ.js.map +1 -0
  11. package/dist/lib/Button-CKzjQyqA.js +2 -0
  12. package/dist/lib/Button-CKzjQyqA.js.map +1 -0
  13. package/dist/lib/{Card-QYo27r5b.js → Card-CAp7LcB5.js} +2 -2
  14. package/dist/lib/{Card-QYo27r5b.js.map → Card-CAp7LcB5.js.map} +1 -1
  15. package/dist/lib/Checkbox-CvAZJ4_T.js +2 -0
  16. package/dist/lib/Checkbox-CvAZJ4_T.js.map +1 -0
  17. package/dist/lib/CodeEditor-DoGGdL1Y.js +2 -0
  18. package/dist/lib/CodeEditor-DoGGdL1Y.js.map +1 -0
  19. package/dist/lib/ComboBox-DgjMnpdh.js +2 -0
  20. package/dist/lib/ComboBox-DgjMnpdh.js.map +1 -0
  21. package/dist/lib/Component-YrLXKJZS.js +2 -0
  22. package/dist/lib/Component-YrLXKJZS.js.map +1 -0
  23. package/dist/lib/Container-C5cxnioS.js +2 -0
  24. package/dist/lib/{Container-abY5Ww3W.js.map → Container-C5cxnioS.js.map} +1 -1
  25. package/dist/lib/DOM-DDhDN8lQ.js +2 -0
  26. package/dist/lib/DOM-DDhDN8lQ.js.map +1 -0
  27. package/dist/lib/Diagnostics-MI6Yw-3E.js +2 -0
  28. package/dist/lib/Diagnostics-MI6Yw-3E.js.map +1 -0
  29. package/dist/lib/Dialog-CXQXRQQK.js +2 -0
  30. package/dist/lib/Dialog-CXQXRQQK.js.map +1 -0
  31. package/dist/lib/DragManager-D5pBaPPg.js +2 -0
  32. package/dist/lib/DragManager-D5pBaPPg.js.map +1 -0
  33. package/dist/lib/{FieldDecorator-BlYMfZ9L.js → FieldDecorator-37IgKHHm.js} +2 -2
  34. package/dist/lib/{FieldDecorator-BlYMfZ9L.js.map → FieldDecorator-37IgKHHm.js.map} +1 -1
  35. package/dist/lib/{Fit-BhlB-HAo.js → Fit-amTWlJM2.js} +2 -2
  36. package/dist/lib/{Fit-BhlB-HAo.js.map → Fit-amTWlJM2.js.map} +1 -1
  37. package/dist/lib/{FloatingPanel-DkJXsZ2D.js → FloatingPanel-CwsFPYbc.js} +2 -2
  38. package/dist/lib/{FloatingPanel-DkJXsZ2D.js.map → FloatingPanel-CwsFPYbc.js.map} +1 -1
  39. package/dist/lib/Glyph-Cof7BxfJ.js +2 -0
  40. package/dist/lib/Glyph-Cof7BxfJ.js.map +1 -0
  41. package/dist/lib/{Grid-Daiz7F5d.js → Grid-BQZ4UIUH.js} +2 -2
  42. package/dist/lib/{Grid-Daiz7F5d.js.map → Grid-BQZ4UIUH.js.map} +1 -1
  43. package/dist/lib/GridConstraints-BkXa62z0.js +2 -0
  44. package/dist/lib/GridConstraints-BkXa62z0.js.map +1 -0
  45. package/dist/lib/{Header-Dql3Zxc6.js → Header-Cj33ABP1.js} +2 -2
  46. package/dist/lib/{Header-Dql3Zxc6.js.map → Header-Cj33ABP1.js.map} +1 -1
  47. package/dist/lib/{IconText-PUjhTLlp.js → IconText-Dp64iq_q.js} +2 -2
  48. package/dist/lib/{IconText-PUjhTLlp.js.map → IconText-Dp64iq_q.js.map} +1 -1
  49. package/dist/lib/LabeledGrid-Dpelrc1k.js +2 -0
  50. package/dist/lib/LabeledGrid-Dpelrc1k.js.map +1 -0
  51. package/dist/lib/LayoutSerialization-DgLJSuew.js +2 -0
  52. package/dist/lib/LayoutSerialization-DgLJSuew.js.map +1 -0
  53. package/dist/lib/Link-DE8tE3u3.js +2 -0
  54. package/dist/lib/Link-DE8tE3u3.js.map +1 -0
  55. package/dist/lib/List-TfgHScl3.js +2 -0
  56. package/dist/lib/List-TfgHScl3.js.map +1 -0
  57. package/dist/lib/ListenerBag-DYRl4TSb.js +2 -0
  58. package/dist/lib/ListenerBag-DYRl4TSb.js.map +1 -0
  59. package/dist/lib/{MemoryStore-DhPoU-7X.js → MemoryStore-ByGDEKYI.js} +2 -2
  60. package/dist/lib/{MemoryStore-DhPoU-7X.js.map → MemoryStore-ByGDEKYI.js.map} +1 -1
  61. package/dist/lib/Menu-BCQISKiQ.js +2 -0
  62. package/dist/lib/Menu-BCQISKiQ.js.map +1 -0
  63. package/dist/lib/{MenuButton-DCXi0tsP.js → MenuButton-BO4y3jf2.js} +2 -2
  64. package/dist/lib/{MenuButton-DCXi0tsP.js.map → MenuButton-BO4y3jf2.js.map} +1 -1
  65. package/dist/lib/{OverlayFade-3pof2AJH.js → OverlayFade-C1yQKffL.js} +2 -2
  66. package/dist/lib/{OverlayFade-3pof2AJH.js.map → OverlayFade-C1yQKffL.js.map} +1 -1
  67. package/dist/lib/{Panel-Cy1pdlWO.js → Panel-DlsVVuvn.js} +2 -2
  68. package/dist/lib/{Panel-Cy1pdlWO.js.map → Panel-DlsVVuvn.js.map} +1 -1
  69. package/dist/lib/{Position-BwtxouxK.js → Position-DWR1nIpA.js} +2 -2
  70. package/dist/lib/Position-DWR1nIpA.js.map +1 -0
  71. package/dist/lib/ProgressSpinner-BI9tFIVm.js +2 -0
  72. package/dist/lib/ProgressSpinner-BI9tFIVm.js.map +1 -0
  73. package/dist/lib/RadioButton-BxcuFChp.js +2 -0
  74. package/dist/lib/RadioButton-BxcuFChp.js.map +1 -0
  75. package/dist/lib/RadioMenuRow-B2bthoxj.js +2 -0
  76. package/dist/lib/RadioMenuRow-B2bthoxj.js.map +1 -0
  77. package/dist/lib/{RovingTabIndex-pHEv5oLD.js → RovingTabIndex-BttlsARv.js} +2 -2
  78. package/dist/lib/{RovingTabIndex-pHEv5oLD.js.map → RovingTabIndex-BttlsARv.js.map} +1 -1
  79. package/dist/lib/Scrollbar-orAWHWap.js +2 -0
  80. package/dist/lib/Scrollbar-orAWHWap.js.map +1 -0
  81. package/dist/lib/SelectableText-BbS_lRzY.js +2 -0
  82. package/dist/lib/SelectableText-BbS_lRzY.js.map +1 -0
  83. package/dist/lib/Slider-BvXc-cx5.js +2 -0
  84. package/dist/lib/Slider-BvXc-cx5.js.map +1 -0
  85. package/dist/lib/Spacer-C6faKe1V.js +2 -0
  86. package/dist/lib/Spacer-C6faKe1V.js.map +1 -0
  87. package/dist/lib/StyleTraits-CAtzeyRR.js +2 -0
  88. package/dist/lib/StyleTraits-CAtzeyRR.js.map +1 -0
  89. package/dist/lib/TabButton-BQDaBszs.js +2 -0
  90. package/dist/lib/TabButton-BQDaBszs.js.map +1 -0
  91. package/dist/lib/TabCloseButton-B-iLVPGZ.js +2 -0
  92. package/dist/lib/TabCloseButton-B-iLVPGZ.js.map +1 -0
  93. package/dist/lib/Table-3McEw5gr.js +7 -0
  94. package/dist/lib/Table-3McEw5gr.js.map +1 -0
  95. package/dist/lib/Text-CGFXPhHD.js +2 -0
  96. package/dist/lib/Text-CGFXPhHD.js.map +1 -0
  97. package/dist/lib/Tooltip-DgRHQZhL.js +3 -0
  98. package/dist/lib/Tooltip-DgRHQZhL.js.map +1 -0
  99. package/dist/lib/Tree-Bq2pjjAz.js +2 -0
  100. package/dist/lib/Tree-Bq2pjjAz.js.map +1 -0
  101. package/dist/lib/{VBox-DfJPWXqc.js → VBox-hFIZAEpT.js} +2 -2
  102. package/dist/lib/{VBox-DfJPWXqc.js.map → VBox-hFIZAEpT.js.map} +1 -1
  103. package/dist/lib/{VirtualScroller-DTIn19o1.js → VirtualScroller-Csa3GBSM.js} +2 -2
  104. package/dist/lib/{VirtualScroller-DTIn19o1.js.map → VirtualScroller-Csa3GBSM.js.map} +1 -1
  105. package/dist/lib/Window-CQ14_65z.js +2 -0
  106. package/dist/lib/Window-CQ14_65z.js.map +1 -0
  107. package/dist/lib/component/button.es.js +1 -1
  108. package/dist/lib/component/button.es.js.map +1 -1
  109. package/dist/lib/component/chart.es.js +1 -1
  110. package/dist/lib/component/chart.es.js.map +1 -1
  111. package/dist/lib/component/container.es.js +1 -1
  112. package/dist/lib/component/container.es.js.map +1 -1
  113. package/dist/lib/component/diagram.es.js +1 -1
  114. package/dist/lib/component/diagram.es.js.map +1 -1
  115. package/dist/lib/component/display.es.js +1 -1
  116. package/dist/lib/component/display.es.js.map +1 -1
  117. package/dist/lib/component/editor.es.js +2 -2
  118. package/dist/lib/component/editor.es.js.map +1 -1
  119. package/dist/lib/component/input.es.js +1 -1
  120. package/dist/lib/component/input.es.js.map +1 -1
  121. package/dist/lib/component/list.es.js +1 -1
  122. package/dist/lib/component/list.es.js.map +1 -1
  123. package/dist/lib/component/menubar.es.js +1 -1
  124. package/dist/lib/component/menubar.es.js.map +1 -1
  125. package/dist/lib/component/table.es.js +1 -6
  126. package/dist/lib/component/table.es.js.map +1 -1
  127. package/dist/lib/component/tree.es.js +1 -1
  128. package/dist/lib/component/tree.es.js.map +1 -1
  129. package/dist/lib/core-DpzpKLWE.js +2 -0
  130. package/dist/lib/core-DpzpKLWE.js.map +1 -0
  131. package/dist/lib/core.es.js +1 -2
  132. package/dist/lib/data.es.js +1 -1
  133. package/dist/lib/diagnostics.es.js +24 -0
  134. package/dist/lib/diagnostics.es.js.map +1 -0
  135. package/dist/lib/glyphs/solid/index.es.js +1 -1
  136. package/dist/lib/layout.es.js +1 -1
  137. package/dist/lib/layout.es.js.map +1 -1
  138. package/dist/lib/overlay.es.js +1 -1
  139. package/dist/lib/overlay.es.js.map +1 -1
  140. package/dist/lib/primitive-8YvORgGS.js +2 -0
  141. package/dist/lib/primitive-8YvORgGS.js.map +1 -0
  142. package/dist/lib/primitive.es.js +1 -2
  143. package/dist/lib/router.es.js +1 -1
  144. package/dist/lib/selectionsEqual-DWdW5pxP.js +2 -0
  145. package/dist/lib/{selectionsEqual-gMG7gCVI.js.map → selectionsEqual-DWdW5pxP.js.map} +1 -1
  146. package/dist/lib/types/component/button/Button.d.ts +7 -6
  147. package/dist/lib/types/component/button/TabButton.d.ts +3 -0
  148. package/dist/lib/types/component/button/TabCloseButton.d.ts +3 -0
  149. package/dist/lib/types/component/button/ToggleButton.d.ts +2 -2
  150. package/dist/lib/types/component/chart/AbstractChart.d.ts +2 -0
  151. package/dist/lib/types/component/container/AccordionHeader.d.ts +6 -1
  152. package/dist/lib/types/component/container/AccordionIndicator.d.ts +2 -0
  153. package/dist/lib/types/component/container/FieldSet.d.ts +2 -0
  154. package/dist/lib/types/component/container/LabeledFieldSet.d.ts +1 -1
  155. package/dist/lib/types/component/container/LabeledGrid.d.ts +4 -1
  156. package/dist/lib/types/component/container/Legend.d.ts +2 -2
  157. package/dist/lib/types/component/container/MenuItem.d.ts +1 -0
  158. package/dist/lib/types/component/container/WindowBorder.d.ts +2 -2
  159. package/dist/lib/types/component/container/WindowHeader.d.ts +6 -0
  160. package/dist/lib/types/component/diagram/DiagramEdgeLayer.d.ts +10 -0
  161. package/dist/lib/types/component/diagram/DiagramGroupNode.d.ts +2 -0
  162. package/dist/lib/types/component/diagram/DiagramNode.d.ts +6 -2
  163. package/dist/lib/types/component/diagram/DiagramNodeLayer.d.ts +25 -0
  164. package/dist/lib/types/component/diagram/DiagramResidency.d.ts +11 -0
  165. package/dist/lib/types/component/diagram/DiagramView.d.ts +22 -0
  166. package/dist/lib/types/component/display/Markdown.d.ts +2 -1
  167. package/dist/lib/types/component/input/AbstractCalendarDropdown.d.ts +4 -2
  168. package/dist/lib/types/component/input/AbstractInput.d.ts +1 -0
  169. package/dist/lib/types/component/input/AbstractPickerField.d.ts +4 -0
  170. package/dist/lib/types/component/input/AutoCompleteDropdown.d.ts +2 -0
  171. package/dist/lib/types/component/input/AutoCompleteField.d.ts +1 -0
  172. package/dist/lib/types/component/input/ComboBox.d.ts +6 -1
  173. package/dist/lib/types/component/input/Link.d.ts +2 -0
  174. package/dist/lib/types/component/input/PasswordField.d.ts +2 -0
  175. package/dist/lib/types/component/input/PickerButton.d.ts +5 -2
  176. package/dist/lib/types/component/input/PickerInput.d.ts +2 -0
  177. package/dist/lib/types/component/input/SelectableText.d.ts +11 -0
  178. package/dist/lib/types/component/input/SpinButton.d.ts +3 -0
  179. package/dist/lib/types/component/input/Text.d.ts +12 -2
  180. package/dist/lib/types/component/input/TextArea.d.ts +2 -0
  181. package/dist/lib/types/component/input/TextField.d.ts +2 -0
  182. package/dist/lib/types/component/input/TextInput.d.ts +4 -0
  183. package/dist/lib/types/component/input/TimePickerDropdown.d.ts +3 -1
  184. package/dist/lib/types/component/input/UsernameField.d.ts +2 -0
  185. package/dist/lib/types/component/input/index.d.ts +2 -0
  186. package/dist/lib/types/component/list/AbstractMarkerList.d.ts +2 -0
  187. package/dist/lib/types/component/list/AbstractSelectableList.d.ts +6 -2
  188. package/dist/lib/types/component/list/ListItem.d.ts +2 -1
  189. package/dist/lib/types/component/menubar/MenuBarButton.d.ts +3 -0
  190. package/dist/lib/types/component/menubar/ToolBar.d.ts +2 -0
  191. package/dist/lib/types/component/table/Body.d.ts +54 -20
  192. package/dist/lib/types/component/table/Column.d.ts +2 -0
  193. package/dist/lib/types/component/table/ColumnConfig.d.ts +1 -0
  194. package/dist/lib/types/component/table/Footer.d.ts +2 -0
  195. package/dist/lib/types/component/table/Header.d.ts +8 -1
  196. package/dist/lib/types/component/table/Row.d.ts +22 -2
  197. package/dist/lib/types/component/table/Table.d.ts +6 -1
  198. package/dist/lib/types/component/table/TableExporter.d.ts +3 -0
  199. package/dist/lib/types/component/table/TablePanel.d.ts +6 -0
  200. package/dist/lib/types/component/table/TreeTablePanel.d.ts +6 -0
  201. package/dist/lib/types/component/table/cell/Cell.d.ts +8 -2
  202. package/dist/lib/types/component/table/cell/Default.d.ts +1 -1
  203. package/dist/lib/types/component/table/cell/Header.d.ts +4 -0
  204. package/dist/lib/types/component/table/cell/ParentHeader.d.ts +4 -0
  205. package/dist/lib/types/component/table/cell/ResizeHandle.d.ts +1 -1
  206. package/dist/lib/types/component/table/cell/renderer/CellRenderer.d.ts +2 -2
  207. package/dist/lib/types/component/table/cell/renderer/String.d.ts +3 -1
  208. package/dist/lib/types/component/table/index.d.ts +1 -1
  209. package/dist/lib/types/component/tree/TreeRow.d.ts +2 -0
  210. package/dist/lib/types/core/AnimatedDropdown.d.ts +2 -0
  211. package/dist/lib/types/core/Binding.d.ts +1 -0
  212. package/dist/lib/types/core/ClassStyleRules.d.ts +69 -4
  213. package/dist/lib/types/core/Component.d.ts +69 -14
  214. package/dist/lib/types/core/DOM.d.ts +11 -1
  215. package/dist/lib/types/core/Diagnostics.d.ts +22 -0
  216. package/dist/lib/types/core/Event.d.ts +7 -0
  217. package/dist/lib/types/core/LayerManager.d.ts +3 -0
  218. package/dist/lib/types/core/ListenerBag.d.ts +1 -0
  219. package/dist/lib/types/core/StyleTarget.d.ts +14 -0
  220. package/dist/lib/types/core/StyleTraits.d.ts +4 -0
  221. package/dist/lib/types/core/Theme.d.ts +6 -2
  222. package/dist/lib/types/core/Util.d.ts +4 -0
  223. package/dist/lib/types/core/index.d.ts +6 -3
  224. package/dist/lib/types/diagnostics/DiagnosticsOverlay.d.ts +29 -0
  225. package/dist/lib/types/diagnostics/DiagnosticsSampler.d.ts +61 -0
  226. package/dist/lib/types/diagnostics/StyleAudit.d.ts +19 -0
  227. package/dist/lib/types/diagnostics/StyleAuditOverlay.d.ts +12 -0
  228. package/dist/lib/types/diagnostics/StyleAuditView.d.ts +13 -0
  229. package/dist/lib/types/diagnostics/index.d.ts +7 -0
  230. package/dist/lib/types/layout/LayoutManager.d.ts +3 -0
  231. package/dist/lib/types/layout/Table.d.ts +3 -0
  232. package/dist/lib/types/overlay/AbstractWindow.d.ts +36 -0
  233. package/dist/lib/types/overlay/ButtonGroup.d.ts +1 -0
  234. package/dist/lib/types/overlay/Dialog.d.ts +1 -0
  235. package/dist/lib/types/overlay/Menu.d.ts +2 -0
  236. package/dist/lib/types/overlay/Notification.d.ts +0 -1
  237. package/dist/lib/types/overlay/PopupPanel.d.ts +2 -0
  238. package/dist/lib/types/overlay/RailHandle.d.ts +4 -5
  239. package/dist/lib/types/overlay/TabWindow.d.ts +3 -0
  240. package/dist/lib/types/overlay/Tooltip.d.ts +1 -0
  241. package/dist/lib/types/overlay/Window.d.ts +4 -1
  242. package/dist/lib/validation.es.js +1 -1
  243. package/llms.txt +2 -0
  244. package/package.json +5 -1
  245. package/dist/lib/AbstractInput-sRNPzWel.js +0 -2
  246. package/dist/lib/AbstractInput-sRNPzWel.js.map +0 -1
  247. package/dist/lib/AnimatedDropdown-H3Rh-YMZ.js +0 -2
  248. package/dist/lib/AnimatedDropdown-H3Rh-YMZ.js.map +0 -1
  249. package/dist/lib/Border-0DJFDiij.js +0 -2
  250. package/dist/lib/Border-0DJFDiij.js.map +0 -1
  251. package/dist/lib/Button-MpMIYBYJ.js +0 -2
  252. package/dist/lib/Button-MpMIYBYJ.js.map +0 -1
  253. package/dist/lib/Checkbox-D0JYK-wc.js +0 -2
  254. package/dist/lib/Checkbox-D0JYK-wc.js.map +0 -1
  255. package/dist/lib/CheckboxMenuRow-CesLhSnp.js +0 -2
  256. package/dist/lib/CheckboxMenuRow-CesLhSnp.js.map +0 -1
  257. package/dist/lib/CodeEditor-N1FQodcF.js +0 -2
  258. package/dist/lib/CodeEditor-N1FQodcF.js.map +0 -1
  259. package/dist/lib/ComboBox-Dx8Tk9yg.js +0 -2
  260. package/dist/lib/ComboBox-Dx8Tk9yg.js.map +0 -1
  261. package/dist/lib/Component-B0ShfPVi.js +0 -2
  262. package/dist/lib/Component-B0ShfPVi.js.map +0 -1
  263. package/dist/lib/Container-abY5Ww3W.js +0 -2
  264. package/dist/lib/DOM-C-Edb3tA.js +0 -2
  265. package/dist/lib/DOM-C-Edb3tA.js.map +0 -1
  266. package/dist/lib/Dialog-cbA9V17e.js +0 -2
  267. package/dist/lib/Dialog-cbA9V17e.js.map +0 -1
  268. package/dist/lib/Glyph-_VeBacS2.js +0 -2
  269. package/dist/lib/Glyph-_VeBacS2.js.map +0 -1
  270. package/dist/lib/GridConstraints-C58LuTqM.js +0 -2
  271. package/dist/lib/GridConstraints-C58LuTqM.js.map +0 -1
  272. package/dist/lib/LayoutSerialization-CMxunLfV.js +0 -2
  273. package/dist/lib/LayoutSerialization-CMxunLfV.js.map +0 -1
  274. package/dist/lib/List-nx8220Fi.js +0 -2
  275. package/dist/lib/List-nx8220Fi.js.map +0 -1
  276. package/dist/lib/ListenerBag-WPdKuuds.js +0 -2
  277. package/dist/lib/ListenerBag-WPdKuuds.js.map +0 -1
  278. package/dist/lib/Menu-Q0bpXXze.js +0 -2
  279. package/dist/lib/Menu-Q0bpXXze.js.map +0 -1
  280. package/dist/lib/Position-BwtxouxK.js.map +0 -1
  281. package/dist/lib/ProgressSpinner-DK8xEQ9y.js +0 -2
  282. package/dist/lib/ProgressSpinner-DK8xEQ9y.js.map +0 -1
  283. package/dist/lib/RadioButton-BEwpqg1k.js +0 -2
  284. package/dist/lib/RadioButton-BEwpqg1k.js.map +0 -1
  285. package/dist/lib/RadioMenuRow-DP5qPyFR.js +0 -2
  286. package/dist/lib/RadioMenuRow-DP5qPyFR.js.map +0 -1
  287. package/dist/lib/Scrollbar-t8fFrUVQ.js +0 -2
  288. package/dist/lib/Scrollbar-t8fFrUVQ.js.map +0 -1
  289. package/dist/lib/Slider-CTbwR6HR.js +0 -2
  290. package/dist/lib/Slider-CTbwR6HR.js.map +0 -1
  291. package/dist/lib/Spacer-srdN2d2b.js +0 -2
  292. package/dist/lib/Spacer-srdN2d2b.js.map +0 -1
  293. package/dist/lib/TabButton-DLoMQzky.js +0 -2
  294. package/dist/lib/TabButton-DLoMQzky.js.map +0 -1
  295. package/dist/lib/TabCloseButton-CY7BGitY.js +0 -2
  296. package/dist/lib/TabCloseButton-CY7BGitY.js.map +0 -1
  297. package/dist/lib/Text-CMKnK9uB.js +0 -2
  298. package/dist/lib/Text-CMKnK9uB.js.map +0 -1
  299. package/dist/lib/Tooltip-CUOJOqQi.js +0 -3
  300. package/dist/lib/Tooltip-CUOJOqQi.js.map +0 -1
  301. package/dist/lib/Tree-C64JNPWJ.js +0 -2
  302. package/dist/lib/Tree-C64JNPWJ.js.map +0 -1
  303. package/dist/lib/core.es.js.map +0 -1
  304. package/dist/lib/primitive.es.js.map +0 -1
  305. package/dist/lib/selectionsEqual-gMG7gCVI.js +0 -2
  306. package/dist/lib/types/component/table/CellGeometry.d.ts +0 -6
@@ -1,7 +1,2 @@
1
- import{t as e}from"../DOM-C-Edb3tA.js";import{a as t,l as n,n as r}from"../Position-BwtxouxK.js";import{S as i,b as a,d as o,f as s,h as c,m as l,p as u,r as d,t as f}from"../Component-B0ShfPVi.js";import{t as p}from"../ListenerBag-WPdKuuds.js";import{i as m,r as h}from"../Scrollbar-t8fFrUVQ.js";import{t as g}from"../Container-abY5Ww3W.js";import{t as _}from"../Glyph-_VeBacS2.js";import{a as v,t as y}from"../Tooltip-CUOJOqQi.js";import{t as b}from"../Fit-BhlB-HAo.js";import{t as x}from"../Text-CMKnK9uB.js";import{t as ee}from"../Checkbox-D0JYK-wc.js";import{n as te,r as S}from"../VBox-DfJPWXqc.js";import{n as C,t as ne}from"../CheckboxMenuRow-CesLhSnp.js";import{t as re}from"../ProgressSpinner-DK8xEQ9y.js";import{t as w}from"../Placement-7kqdaK4Z.js";import{t as ie}from"../Border-0DJFDiij.js";import{t as T}from"../Button-MpMIYBYJ.js";import{t as ae}from"../TabCloseButton-CY7BGitY.js";import{t as oe}from"../Menu-Q0bpXXze.js";import{n as se,o as ce,r as le}from"../Dialog-cbA9V17e.js";import{circle_check as ue}from"../glyphs/solid/circle_check.es.js";import{t as de}from"../MenuButton-DCXi0tsP.js";import{n as E,r as fe}from"../DragChain-CYGuT7OA.js";import{t as pe}from"../Card-QYo27r5b.js";import{f as D,i as me,t as he}from"../MemoryStore-DhPoU-7X.js";import{a as ge,h as _e,i as ve,l as O,n as ye,t as be}from"../ComboBox-Dx8Tk9yg.js";import{caret_down as xe}from"../glyphs/solid/caret_down.es.js";import{n as Se,t as Ce}from"../selectionsEqual-gMG7gCVI.js";import{caret_right as we}from"../glyphs/solid/caret_right.es.js";import{arrows_rotate as Te}from"../glyphs/solid/arrows_rotate.es.js";import{t as Ee}from"../reduceModifierSelection-DTo8HyFl.js";import{ellipsis_v as De}from"../glyphs/solid/ellipsis_v.es.js";import{magnifying_glass as Oe}from"../glyphs/solid/magnifying_glass.es.js";import{align_left as ke}from"../glyphs/solid/align_left.es.js";import{align_right as Ae}from"../glyphs/solid/align_right.es.js";import{equals as je}from"../glyphs/solid/equals.es.js";import{not_equal as Me}from"../glyphs/solid/not_equal.es.js";import{greater_than as Ne}from"../glyphs/solid/greater_than.es.js";import{greater_than_equal as Pe}from"../glyphs/solid/greater_than_equal.es.js";import{less_than as Fe}from"../glyphs/solid/less_than.es.js";import{less_than_equal as Ie}from"../glyphs/solid/less_than_equal.es.js";import{ban as k}from"../glyphs/solid/ban.es.js";import{plus as A}from"../glyphs/solid/plus.es.js";import{table_columns as Le}from"../glyphs/solid/table_columns.es.js";import{undo as Re}from"../glyphs/solid/undo.es.js";import{file_csv as ze}from"../glyphs/solid/file_csv.es.js";import{file_code as Be}from"../glyphs/solid/file_code.es.js";import{minus as Ve}from"../glyphs/solid/minus.es.js";var He=new r(3,3,3,3),Ue=new r(0,0,0,0),Table$1=class extends s{constructor(e){super(),e&&this.applyOptions(e)}attach(e){let t=e.getClassName();if(t!=`Table`&&t!=`TreeTable`)throw Error(`Container must be a Table or TreeTable.`);return super.attach(e),this}doLayout(){let e=this.getContainer();if(!e)return;let t=e.getInnerSize();if(!t||!Number.isFinite(t.width)||!Number.isFinite(t.height))return;let r=e.getContentInsets(),i=e.getColumns(),a=e.getColumns().length,o=e.getAvailableColumnWidth(),s=Math.max(o,e.getColumnWidthTarget()),c=e.getColumnWidths();c.length===a?(c=this.rescaleWidths(e,i,c,s),e.setColumnWidths(c)):(c=this.initializeWidths(e,i,o),e.setColumnWidths(c));let l=e.getHeader(),u=e.getBody(),f=e.getFooter();if(e.isHeaderVisible()&&l&&l.isDisplayed()){let e=d.getTheme(),i=n.lineHeightPx()+2*(e.table.cell.padding??2),a=l.hasParentRow()?i:0,s=l.hasFilterRow()?n.singleLineBoxHeight(Ue,He,{top:0,bottom:0}):0,u=l.getPerimeterSize(),f=a+i+s+u.top+u.bottom;l.setAutoCommitStyle(!1),l.setX(r.getLeft()),l.setY(r.getTop()),l.setWidth(t.width),l.setHeight(f),l.setAutoCommitStyle(!0);let p=l.getContentBounds()??{x:0,y:0,width:t.width,height:f},m=c.reduce((e,t)=>e+t,0),h=Math.max(p.width,m),g=l.getParentRow();g.setAutoCommitStyle(!1),g.setX(p.x),g.setY(p.y),g.setWidth(h),g.setHeight(a),g.setAutoCommitStyle(!0);let _=l.getComponents()[1];_.setAutoCommitStyle(!1),_.setX(p.x),_.setY(p.y+a),_.setWidth(h),_.setHeight(i),_.setAutoCommitStyle(!0);let v=l.getFilterRow();v.setAutoCommitStyle(!1),v.setX(p.x),v.setY(p.y+a+i),v.setWidth(h),v.setHeight(s),v.setAutoCommitStyle(!0),l.renderColumnWindow({columnWidths:c,viewportWidth:o,columnHeight:i,parentRowHeight:a,filterRowHeight:s});let y=l.getMenuButton(),b={width:12,height:p.height};y.setPreferredSize(b),y.setAutoCommitStyle(!1),y.setX(p.x+p.width-12),y.setY(p.y),y.setWidth(b.width),y.setHeight(b.height),y.doLayout(),y.setAutoCommitStyle(!0)}if(e.isFooterVisible()&&f&&f.isDisplayed()){let e=d.getTheme(),i=n.lineHeightPx()+2*(e.table.cell.padding??2),a=f.getColumns(),o=f.getPerimeterSize(),s=i+o.top+o.bottom;f.setAutoCommitStyle(!1),f.setX(r.getLeft()),f.setY(r.getTop()+t.height-s),f.setWidth(t.width),f.setHeight(s),f.setAutoCommitStyle(!0);let l=f.getContentBounds()??{x:0,y:0,width:t.width,height:i},u=0;a.forEach((e,t)=>{e.setAutoCommitStyle(!1),e.setX(u),e.setY(0),e.setWidth(c[t]),e.setHeight(l.height),e.setAutoCommitStyle(!0),e.doLayout(),u+=c[t]})}if(e.isBodyVisible()&&u&&u.isDisplayed()){let n=e.isHeaderVisible()&&l&&l.isDisplayed()?l.getHeight():0,i=e.isFooterVisible()&&f&&f.isDisplayed()?f.getHeight():0;u.setAutoCommitStyle(!1),u.setX(r.getLeft()),u.setY(r.getTop()+n),u.setWidth(t.width),u.setHeight(t.height-n-i),u.setAutoCommitStyle(!0),u.renderWindow(o,c)}}initializeWidths(e,r,i){let a=e.getIntrinsicColumnWidths(),o=a.reduce((e,t)=>e+(t??0),0),s=a.filter(e=>e===null).length,c=s>0?(i-o)/s:0,l=a.map((i,a)=>{if(i!==null)return i;let o=r[a],s=e.getColumnMinWidth(o),l=o.getMaxWidth()??t;return n.clamp(c,s,l)});return this.absorbSlackIntoGreedy(r,l,i)}rescaleWidths(e,t,n,r){let i=t.map(e=>{let t=e.getField().getType();return t===`boolean`||t===`number`||t===`date`}),a=n.reduce((e,t,n)=>e+(i[n]?t:0),0),o=n.reduce((e,t,n)=>e+(i[n]?0:t),0),s=r-a;if(o<=0||s<=0||Math.abs(o-s)<=.5)return n;let c=s/o,l=n.map((n,r)=>i[r]?n:this.clamp(n*c,t[r],e));return this.absorbSlackIntoGreedy(t,l,r)}absorbSlackIntoGreedy(e,t,n){let r=n-t.reduce((e,t)=>e+t,0);if(r<=.5)return t;let i=[];if(e.forEach((e,t)=>{let n=e.getField().getType();n!==`boolean`&&n!==`number`&&n!==`date`&&e.getMaxWidth()===void 0&&i.push(t)}),i.length===0)return t;let a=r/i.length,o=[...t];for(let e of i)o[e]+=a;return o}clamp(e,r,i){let a=i.getColumnMinWidth(r),o=r.getMaxWidth()??t;return n.clamp(e,a,o)}},We=c(Table$1);function blurRelatedTargetHandle(t){return t.relatedTarget?e.source.intern(t.relatedTarget):null}var CellEditor=class extends f{_onCommitRequested=null;constructor(e=`div`){super({tag:e}),this.setLayoutManager(new b);let applyPadding=()=>{let e=d.getTheme().table.cell.padding;this.setInsets(new r(0,e,0,e))};applyPadding(),this.subscribeTheme(applyPadding)}retainsFocus(e){return!1}setCommitRequestHandler(e){this._onCommitRequested=e}requestCommit(){this._onCommitRequested?.()}getContentX(){return 0}getDisplayText(){return``}},Cell=class extends f{_readOnly;_requiredEmpty=!1;_baseBackground=`var(--ts-ui-table-cell-bg, transparent)`;_renderer;_editor;_editorPool=null;_scrollIntoView=null;_activeEditor=null;_listeners=new p;constructor(e,t,n,a,o){super({tag:e||`td`}),this.setLayoutManager(new pe),this.getAria().setRole(`gridcell`),this._readOnly=!1,this._renderer=t,this._editor=n,this.setInsets(new r(0,0,0,0)),this.setBackgroundColor(`var(--ts-ui-table-cell-bg, transparent)`),this.setForegroundColor(`var(--ts-ui-table-cell-color, inherit)`),this.setBorder(`var(--ts-ui-table-cell-border, none)`),this.subscribeTheme(()=>this.setBorder(`var(--ts-ui-table-cell-border, none)`)),this.addComponent(t,a),n&&(this.addComponent(n,o),n.setCommitRequestHandler(()=>this.commitEdit()),i.addListener(n,`blur`,e=>{n.retainsFocus(blurRelatedTargetHandle(e))||this.commitEdit()}),i.addListener(n,`keydown`,e=>this.onKeyDown(e))),i.addListener(t,`dblclick`,()=>this.startEdit())}clampsToContentSize(){return!1}getEditorKey(){return null}setEditorPool(e){return this._editorPool=e,this}setScrollIntoViewHandler(e){return this._scrollIntoView=e,this}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}isReadOnly(){return!!this._readOnly}setReadOnly(e){if(this._readOnly===e)return this;if(this._readOnly=e,e&&this._activeEditor){let e=this._activeEditor.getValue();this._renderer.setValue(e),this.emit(`commit`,e),this.detachEditor()}return this._applyStateTint(),this}setRequiredEmpty(e){return this._requiredEmpty===e?this:(this._requiredEmpty=e,this._applyStateTint(),this)}setBaseBackground(e){return this._baseBackground=e??`var(--ts-ui-table-cell-bg, transparent)`,this._applyStateTint(),this}_applyStateTint(){this._readOnly?(this.setBackgroundColor(`var(--ts-ui-table-cell-readonly-bg, rgba(0, 0, 0, 0.04))`),this.setCursor(`default`)):(this.setBackgroundColor(this._baseBackground),this.clearCursor()),this._requiredEmpty&&!this._readOnly?this.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-required-outline, rgba(220, 60, 60, 0.6))`):this.clearShadow()}onKeyDown(e){let t=e.detail?.keyCode;t==13?(this.commitEdit(),this.emit(`editend`)):t==27&&(this.cancelEdit(),this.emit(`editend`))}isEditing(){return this._activeEditor!==null}getLayoutManager(){return super.getLayoutManager()}startEdit(){if(this.isReadOnly()||this.isEditing())return;if(this._scrollIntoView?.(),this._editor)this._activeEditor=this._editor;else{let e=this.getEditorKey();if(!e||!this._editorPool)return;let t=this._editorPool.acquire(e,this);if(!t)return;this._activeEditor=t,this.addComponent(this._activeEditor)}let e=this._activeEditor,t=this._renderer;this.prepareEditor(e),e.setValue(t.getValue()),this.getLayoutManager().setVisibleComponentId(e.getId()),this.doLayout(),e.focus(!0)}commitEdit(){if(this.isReadOnly()||!this.isEditing())return this;let e=this._activeEditor.getValue();return this._renderer.setValue(e),this.emit(`commit`,e),this.detachEditor(),this}cancelEdit(){this.isReadOnly()||!this.isEditing()||this.detachEditor()}detachEditor(){let e=this._activeEditor;e&&(this._activeEditor=null,this.getLayoutManager().setVisibleComponentId(this._renderer.getId()),this.doLayout(),this._editor!==e&&(this.removeComponent(e),this._editorPool?.release()))}setValue(e){return this._renderer.setValue(e),this}getRenderer(){return this._renderer}doLayout(){return super.doLayout(),this.alignEditorWithContent(),this}alignEditorWithContent(){let e=this._activeEditor;if(!e)return;let t=this._renderer.getContentX();if(t<=0)return;let n=this.getContentBounds()??{x:0,y:0,width:this.getWidth()??0,height:0},r=Math.max(0,n.width-t);e.setAutoCommitStyle(!1),e.setX(n.x+t),e.setWidth(r),e.setAutoCommitStyle(!0)}wrapRenderer(e){let t=this._renderer;this.removeComponent(t);let n=e(t);return this._renderer=n,this.addComponent(n),this.getLayoutManager().setVisibleComponentId(n.getId()),this}getEditor(){return this._editor}setActiveRenderer(e,t){t&&(this.addComponent(e),i.addListener(e,`dblclick`,()=>this.startEdit()));let n=this._renderer!==e;this._renderer=e,this.getLayoutManager().setVisibleComponentId(e.getId()),n&&this.doLayout()}prepareEditor(e){}},BooleanEditor=class extends CellEditor{_checkBox=new ee;_value=null;_listeners=new p;_suppressCommit=!1;constructor(){super(),this._checkBox.setIndeterminate(!0),this._checkBox.setAnimated(!1),this.addComponent(this._checkBox),this._checkBox.on(`action`,()=>{this._suppressCommit||(this._value=this._checkBox.isSelected(),this.emit(`change`,this._value))})}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}getValue(){return this._value}setValue(e){this._value=e??null,this._suppressCommit=!0;try{this._value===null?this._checkBox.setIndeterminate(!0):(this._checkBox.setIndeterminate(!1),this._checkBox.setSelected(this._value))}finally{this._suppressCommit=!1}return this}setReadOnly(e){return this._checkBox.setReadOnly(e),this}isReadOnly(){return this._checkBox.isReadOnly()}toggle(){let e=!this._checkBox.isSelected();return this._checkBox.setIndeterminate(!1),this._checkBox.setSelected(e),this._value=e,this.emit(`change`,this._value),this}},j=c(BooleanEditor),CellRenderer=class extends f{constructor(){super(),this.setLayoutManager(new b);let applyPadding=()=>{let e=d.getTheme().table.cell.padding;this.setInsets(new r(0,e,0,e))};applyPadding(),this.subscribeTheme(applyPadding)}getContentX(){return 0}getDisplayText(){return``}doLayout(){super.doLayout();let e=this.getComponents();if(e.length!==1)return this;let t=e[0];if(!(t instanceof x))return this;let n=t.getHeight();return n>0&&t.setLineHeight(n),this}},StringRenderer=class extends CellRenderer{_text=new x;_value=null;_display=``;constructor(){super(),this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text),this.setUserSelect(`text`),this._text.setUserSelect(`text`),this.setCursor(`text`)}getText(){return this._text}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=this._value===null?``:String(this._value),this._text.setText(this._display),this}getDisplayText(){return this._display}},M=c(StringRenderer),NumberRenderer=class extends CellRenderer{_text=new x;_value=null;_display=``;constructor(e=`right`){super(),this._text.setPointerEvents(`none`),this._text.setTextAlign(e),this._text.setText(``),this._text.setAutoMeasure(!1),this.addComponent(this._text),this.setUserSelect(`text`),this._text.setUserSelect(`text`),this.setCursor(`text`)}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=this._value===null?``:String(this._value),this._text.setText(this._display),this}getDisplayText(){return this._display}},N=c(NumberRenderer),DateRenderer=class extends CellRenderer{_text=new x;_value=null;_display=``;constructor(){super(),this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text),this.setUserSelect(`text`),this._text.setUserSelect(`text`),this.setCursor(`text`)}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=e?D(`date`,!1,e):``,this._text.setText(this._display),this}getDisplayText(){return this._display}},P=c(DateRenderer),TimeRenderer=class extends CellRenderer{_text=new x;_value=null;_showSeconds;_display=``;constructor(e=!1){super(),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text),this.setUserSelect(`text`),this._text.setUserSelect(`text`),this.setCursor(`text`)}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=e?D(`time`,this._showSeconds,e):``,this._text.setText(this._display),this}getDisplayText(){return this._display}},Ge=c(TimeRenderer),DateTimeRenderer=class extends CellRenderer{_text=new x;_value=null;_showSeconds;_display=``;constructor(e=!1){super(),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text),this.setUserSelect(`text`),this._text.setUserSelect(`text`),this.setCursor(`text`)}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=e?D(`datetime`,this._showSeconds,e):``,this._text.setText(this._display),this}getDisplayText(){return this._display}},F=c(DateTimeRenderer),GlyphRenderer=class extends CellRenderer{_value=null;_glyph=null;getValue(){return this._value}setValue(e){let t=e||null;return t===this._value&&(t===null||this._glyph)?this:(this._glyph&&=(this.removeComponent(this._glyph),null),this._value=t,t!==null&&(this._glyph=new _(t),this._glyph.setPointerEvents(`none`),this.addComponent(this._glyph)),this.doLayout(),this)}getDisplayText(){return this._value===null?``:String(this._value)}},I=c(GlyphRenderer);function normalizeComboOptions(e){return e.map(e=>typeof e==`string`?{value:e,label:e}:{value:e.value,label:e.label??e.value})}var ComboRenderer=class extends CellRenderer{_text=new x;_map=new Map;_value=null;_display=``;constructor(e){super();for(let t of normalizeComboOptions(e))this._map.set(t.value,t.label);this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text),this.setUserSelect(`text`),this._text.setUserSelect(`text`),this.setCursor(`text`)}getText(){return this._text}getValue(){return this._value}setValue(e){if(this._value=e??null,this._value===null)this._display=``;else{let e=String(this._value);this._display=this._map.get(e)??e}return this._text.setText(this._display),this}getDisplayText(){return this._display}setOptions(e){this._map.clear();for(let t of normalizeComboOptions(e))this._map.set(t.value,t.label);return this.setValue(this._value),this}},L=c(ComboRenderer);function buildCellRenderer(e,t,n=`right`){switch(e){case`number`:return new N(n);case`date`:return new P;case`time`:return new Ge(t);case`datetime`:return new F(t);case`combo`:return new L([]);case`glyph`:return new I;default:return new M}}var CellTextResolver=class{_renderers=new Map;_comboOptions=null;text(e,t,n,r){let i=t?`${e}:seconds`:e,a=this._renderers.get(i);return a||(a=buildCellRenderer(e,t),a.pauseLayout(),this._renderers.set(i,a)),e===`combo`&&n&&n!==this._comboOptions&&(a.setOptions(n),this._comboOptions=n),a.setValue(r),a.getDisplayText()}dispose(){for(let e of this._renderers.values())e.dispose();this._renderers.clear(),this._comboOptions=null}},R=c(class DynamicCell extends Cell{_field;_columnType;_showSeconds;_cellType;_cellValues;_renderers=new Map;_activeType=`string`;_currentOptions=[];_checkbox=null;_justCreated=!1;constructor(e,t,n){let r=new M;super(`td`,r),this._field=e,this._columnType=t,this._showSeconds=n.showSeconds??!1,this._cellType=n.cellType,this._cellValues=n.cellValues,this._renderers.set(`string`,r)}bindRecord(e){let t=this._cellType?.(e)??this._columnType;if(this._activeType=t,t===`boolean`){let t=this.ensureCheckbox();this.setActiveRenderer(t,this._justCreated),t.setValue(e.get(this._field));return}if(t===`combo`){this._currentOptions=this._cellValues?.(e)??[];let t=this.ensureRenderer(`combo`);t.setOptions(this._currentOptions),this.setActiveRenderer(t,this._justCreated),t.setValue(e.get(this._field));return}let n=this.ensureRenderer(t);this.setActiveRenderer(n,this._justCreated),n.setValue(e.get(this._field))}getEditorKey(){switch(this._activeType){case`number`:return`number`;case`date`:return`date`;case`time`:return this._showSeconds?`time:seconds`:`time`;case`datetime`:return this._showSeconds?`datetime:seconds`:`datetime`;case`combo`:return`combo:${this._field}`;case`boolean`:case`glyph`:return null;default:return`string`}}startEdit(){if(this._activeType===`boolean`){if(this.isReadOnly())return;this._checkbox?.toggle();return}super.startEdit()}setReadOnly(e){return super.setReadOnly(e),this._activeType===`boolean`&&this._checkbox?.setReadOnly(e),this}prepareEditor(e){this._activeType===`combo`&&e.setOptions(this._currentOptions)}ensureRenderer(e){let t=this._renderers.get(e);if(t)return this._justCreated=!1,t;let n=DynamicCell.buildRenderer(e,this._showSeconds);return this._renderers.set(e,n),this._justCreated=!0,n}static buildRenderer(e,t){return buildCellRenderer(e,t,`left`)}ensureCheckbox(){if(this._checkbox)return this._justCreated=!1,this._checkbox;let e=new j;return e.on(`change`,e=>this.emitCommit(e)),this._checkbox=e,this._justCreated=!0,e}emitCommit(e){this.emit(`commit`,e)}}),DefaultCell=class extends Cell{constructor(e){let t=new M;super(e||`td`,t)}getRenderer(){return super.getRenderer()}setValue(e){return this.getRenderer().setValue(e),this}},z=c(DefaultCell),GroupSeparatorCell=class extends z{_color;constructor(e,t){super(`td`),this._color=t;let n=this.getRenderer();n.getText().setFontWeight(`bold`),n.getText().setText(e),n.setUserSelect(`none`),n.getText().setUserSelect(`none`),n.setCursor(`default`),this.setBackgroundColor(t??`transparent`),this.setShadow(`inset 0 1px 0 0 var(--ts-ui-table-header-border, rgba(0, 0, 0, 0.2))`)}getColor(){return this._color}},Ke=c(GroupSeparatorCell),StringCell=class extends Cell{constructor(){let e=new M;super(`td`,e)}getEditorKey(){return`string`}setValue(e){return this.getRenderer().setValue(e),this}},qe=c(StringCell),BooleanCell=class extends Cell{_checkbox;constructor(){let e=new j;super(`td`,e,void 0,{fill:l.NONE,anchor:u.CENTER},void 0),this._checkbox=e}on(e,t){return e===`commit`?(this._checkbox.on(`change`,t),this):super.on(e,t)}off(e,t){return e===`commit`?(this._checkbox.off(`change`,t),this):super.off(e,t)}setReadOnly(e){return super.setReadOnly(e),this._checkbox.setReadOnly(e),this}startEdit(){this.isReadOnly()||this._checkbox.toggle()}setValue(e){return this.getRenderer().setValue(e),this}},Je=c(BooleanCell),NumberCell=class extends Cell{constructor(){let e=new N;super(`td`,e)}getEditorKey(){return`number`}setValue(e){return this.getRenderer().setValue(e),this}},Ye=c(NumberCell),DateCell=class extends Cell{constructor(){let e=new P;super(`td`,e)}getEditorKey(){return`date`}setValue(e){return this.getRenderer().setValue(e),this}commitEdit(){let e=this._activeEditor;return e&&!e.isEmpty()&&e.getValue()===null?(this.cancelEdit(),this):(super.commitEdit(),this)}},Xe=c(DateCell),TimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new Ge(e);super(`td`,t),this._showSeconds=e}getEditorKey(){return this._showSeconds?`time:seconds`:`time`}setValue(e){return this.getRenderer().setValue(e),this}commitEdit(){let e=this._activeEditor;return e&&!e.isEmpty()&&e.getValue()===null?(this.cancelEdit(),this):(super.commitEdit(),this)}},Ze=c(TimeCell),DateTimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new F(e);super(`td`,t),this._showSeconds=e}getEditorKey(){return this._showSeconds?`datetime:seconds`:`datetime`}setValue(e){return this.getRenderer().setValue(e),this}commitEdit(){let e=this._activeEditor;return e&&!e.isEmpty()&&e.getValue()===null?(this.cancelEdit(),this):(super.commitEdit(),this)}},Qe=c(DateTimeCell),GlyphCell=class extends Cell{constructor(){let e=new I;super(`td`,e)}setValue(e){return this.getRenderer().setValue(e),this}},$e=c(GlyphCell),ComboCell=class extends Cell{_field;constructor(e,t){super(`td`,new L(t)),this._field=e}getEditorKey(){return`combo:${this._field}`}setValue(e){return this.getRenderer().setValue(e),this}},et=c(ComboCell);_.register(xe,we);var TreeCellRenderer=class extends CellRenderer{_toggle=null;_depth=0;_hasChildren=!1;_expanded=!1;constructor(e,t=16){super(),this._delegate=e,this._indentPx=t,this.setLayoutManager(new o),super.setInsets(new r(0,0,0,0)),this.addComponent(e)}getDelegate(){return this._delegate}getToggle(){return this._toggle}getDepth(){return this._depth}getContentX(){return this._depth*this._indentPx+20}getValue(){return this._delegate.getValue()}setValue(e){return this._delegate.setValue(e),this}getDisplayText(){return this._delegate.getDisplayText()}setTreeState(e,t,n){return this._depth===e&&this._hasChildren===t&&this._expanded===n?this:(this._depth=e,this._hasChildren=t,this._expanded=n,this.refreshToggle(),this.doLayout(),this)}setInsets(e){return this._delegate?.setInsets(e),this}refreshToggle(){if(this._toggle&&=(this.removeComponent(this._toggle),null),!this._hasChildren)return;let e=new _(this._expanded?`caret-down`:`caret-right`);e.setCursor(`pointer`),e.clearInsets(),e.getAria().setHidden(!0),this._toggle=e,this.addComponent(e)}doLayout(){let e=this.getContentBounds()??{x:0,y:0,width:0,height:0},t=e.width,n=e.height,r=this._depth*this._indentPx;if(this._toggle){let t=this._toggle.getPreferredSize()?.height??n;this._toggle.setAutoCommitStyle(!1),this._toggle.setX(e.x+r),this._toggle.setY(e.y+Math.max(0,(n-t)/2)),this._toggle.setWidth(20),this._toggle.setHeight(t),this._toggle.setAutoCommitStyle(!0)}let i=r+20,a=Math.max(0,t-i);return this._delegate.setAutoCommitStyle(!1),this._delegate.setX(e.x+i),this._delegate.setY(e.y),this._delegate.setWidth(a),this._delegate.setHeight(n),this._delegate.setAutoCommitStyle(!0),super.doLayout(),this}},B=c(TreeCellRenderer),V=c(class Row extends f{_model;_data;_onCellCommit;_treeCell=null;_stripe=!1;_visibleFields=[];_columnConfigs=new Map;_treeFieldName;_windowFirst=0;_cellKeys=[];_fieldNames=[];_columnsDirty=!1;_separatorMode=!1;constructor(e,t,n=new Set,r=new Map,i,a){super({tag:`tr`}),this.getAria().setRole(`row`),this._model=e,this._data=t,this._onCellCommit=i,this._model&&this.setColumnFields(this._model,n,r,a)}getTreeCell(){return this._treeCell}getColumnWindowStart(){return this._windowFirst}getFieldNames(){return this._fieldNames}isSeparator(){return this._separatorMode}setFieldIndent(e){let t=this._fieldNames.indexOf(`field`);t!==-1&&this.getComponents()[t].setInsets(new r(0,0,0,e?16:0))}getData(){return this._data}setData(e){this._data=e;let t=this.getComponents(),n=this._fieldNames;for(let r=0;r<n.length;r++)this.bindCell(t[r],e,n[r]);return this.updateVisualState(),this}setStripe(e){this._stripe=e}updateVisualState(){let t=this.getElement();t&&(this._data?.isNew()?e.sink.apply(t,{style:{"background-color":`var(--ts-ui-table-row-new, rgba(70, 200, 70, 0.15))`}}):this._data?.isDirty()?e.sink.apply(t,{style:{"background-color":`var(--ts-ui-table-row-dirty, rgba(255, 165, 0, 0.15))`}}):this._stripe?e.sink.apply(t,{style:{"background-color":`var(--ts-ui-table-row-stripe, rgba(0, 0, 0, 0.035))`}}):e.sink.apply(t,{style:{"background-color":null}}))}addColumn(e,t){return this.addComponent(e,t),this}addComponent(e,t){return super.addComponent(e,t),this}setColumnFields(e,t,n,r){return this._model=e,this._visibleFields=e.getFields().filter(e=>!t.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()),this._columnConfigs=n,this._treeFieldName=r,this._columnsDirty=!0,this}renderSeparator(e,t){this.disposeAllComponents(),this.addComponent(new Ke(e,t)),this._separatorMode=!0,this._windowFirst=0,this._fieldNames=[],this._cellKeys=[],this._treeCell=null,this._columnsDirty=!0,this.getAria().setRole(`separator`)}setColumnWindow(e,t){this._separatorMode&&(this.disposeAllComponents(),this._separatorMode=!1,this._columnsDirty=!0,this.getAria().setRole(`row`));let n=this._visibleFields.length-1;t=Math.min(t,n),e>t&&(e=t+1);let r=this._windowFirst+this.getComponents().length-1;if(!this._columnsDirty&&e===this._windowFirst&&t===r)return!1;let i=this.getComponents(),a=new Map;for(let e=0;e<i.length;e++){let t=this._fieldNames[e];t!==void 0&&a.set(t,{cell:i[e],key:this._cellKeys[e]})}let o=t-e+1,s=Array(o).fill(void 0),c=new Set;for(let n=e;n<=t;n++){let t=this._visibleFields[n],r=this.cellKeyFor(t),i=a.get(t.getName());i&&i.key===r&&(s[n-e]=i.cell,a.delete(t.getName()))}let l=new Map;for(let e of a.values()){let t=l.get(e.key);t?t.push(e.cell):l.set(e.key,[e.cell])}for(let n=e;n<=t;n++){let t=n-e;if(s[t]!==void 0)continue;let r=this._visibleFields[n],i=this.cellKeyFor(r),a=l.get(i),o;if(a&&a.length>0)o=a.pop(),this.setLayoutConstraints(o,{data:r});else{o=Row.createCellForField(r,this._columnConfigs),this._treeFieldName!==void 0&&r.getName()===this._treeFieldName&&o.wrapRenderer(e=>new B(e));let e=o;o.on(`commit`,t=>this.commitCellValue(e,t)),this.addComponent(o,{data:r})}s[t]=o,c.add(n)}for(let n=e;n<=t;n++){let t=s[n-e],r=this._visibleFields[n];t.getAria().setColIndex(n+1),t.setBaseBackground(this._columnConfigs.get(r.getName())?.groupColor??null),c.has(n)&&this.bindCell(t,this._data,r.getName())}for(let e of l.values())for(let t of e)t.isEditing()&&t.commitEdit(),this.removeComponent(t),t.dispose();let u=new Map(s.map((e,t)=>[e,t]));this.sortComponents((e,t)=>(u.get(e)??0)-(u.get(t)??0)),this._windowFirst=e,this._fieldNames=[],this._cellKeys=[],this._treeCell=null;for(let n=e;n<=t;n++){let t=this._visibleFields[n],r=s[n-e];this._fieldNames.push(t.getName()),this._cellKeys.push(this.cellKeyFor(t)),this._treeFieldName!==void 0&&t.getName()===this._treeFieldName&&(this._treeCell=r)}return this._columnsDirty=!1,!0}commitCellValue(e,t){let n=this.getLayoutConstraints(e)?.data;n&&(this._data&&(this._data.set(n.getName(),t),this._onCellCommit?.(this._data)),this.updateVisualState())}static cellKey(e,t,n){if(n)return`tree:${e.getName()}`;if(t?.renderer)return`renderer:${e.getName()}`;if(t?.cellType)return`dynamic:${e.getName()}`;if(t?.values&&t.values.length>0)return`combo:${e.getName()}`;let r=e.getType();return r===`time`||r===`datetime`?`${r}:${t?.showSeconds??!1}`:r}cellKeyFor(e){let t=this._treeFieldName!==void 0&&e.getName()===this._treeFieldName;return Row.cellKey(e,this._columnConfigs.get(e.getName()),t)}bindCell(e,t,n){e instanceof R&&t?e.bindRecord(t):e.setValue(t?t.get(n):void 0)}static createCellForField(e,t){let n=t.get(e.getName());if(n?.renderer)return new Cell(`td`,n.renderer());if(n?.cellType)return new R(e.getName(),e.getType(),n);let r=n?.values;if(r&&r.length>0)return new et(e.getName(),r);switch(e.getType()){case`string`:return new qe;case`number`:return new Ye;case`boolean`:return new Je;case`date`:return new Xe;case`time`:return new Ze(t.get(e.getName())?.showSeconds??!1);case`datetime`:return new Qe(t.get(e.getName())?.showSeconds??!1);case`glyph`:return new $e;default:return new z}}doLayout(){return this}}),tt=`var(--ts-ui-table-resize-handle-cursor, ew-resize)`,nt=null;function ensureResizeHandleClassRule(){nt||=new a({scope:`class`,name:`ResizeHandle`,styles:{position:`absolute`,top:`0`,right:`0`,width:`var(--ts-ui-table-resize-handle-width,5px)`,height:`100%`,zIndex:`1`}})}var ResizeHandle=class extends f{_listeners=new p;constructor(e){ensureResizeHandleClassRule(),super({tag:`div`,...e??{}}),this.setCursor(tt),this.setBackgroundImage(`linear-gradient(to right,transparent 80%,var(--ts-ui-table-resize-handle-color,rgba(0,0,0,0.2)) 80%)`),this.setZIndex(1),this.applyListeners(e?.listeners)}init(e){return super.init(e),i.addListener(this,`mousedown`,this._onMouseDown),i.addListener(this,`click`,this._onClick),this}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}dragMove(e){this.emit(`dragmove`,e)}dragEnd(){this.emit(`dragend`)}_onMouseDown=e=>(this.emit(`dragstart`,e),!0);_onClick=()=>!0},rt=c(ResizeHandle),it=null;function ensureSortBadgeClassRule(){it||=new a({scope:`class`,name:`SortPriorityBadge`,styles:{position:`absolute`,top:`2px`,right:`8px`,fontSize:`var(--ts-ui-sort-badge-font-size, var(--ts-ui-font-size))`,lineHeight:`1`,borderRadius:`3px`,padding:`1px 3px`,pointerEvents:`none`}})}var at={backgroundColor:`var(--ts-ui-sort-badge-bg, rgba(0,0,0,0.15))`,foregroundColor:`var(--ts-ui-sort-badge-color, inherit)`},SortPriorityBadge=class extends f{constructor(e,t){ensureSortBadgeClassRule(),super({tag:`span`,...e??{}},{...at,...t??{}}),this._priority??=null,this.setVisible(this._shouldShow(this._priority))}applyOptions(e){return super.applyOptions(e),e.priority!==void 0&&(this._priority=e.priority),this}render(){let t=super.render();return e.sink.apply(t,{text:this._priorityText()}),t}getPriority(){return this._priority}setPriority(t){this._priority=t;let n=this.getElement();return n&&e.sink.apply(n,{text:this._priorityText()}),this.setVisible(this._shouldShow(t)),this}clearPriority(){return this.setPriority(null)}_priorityText(){return this._shouldShow(this._priority)?String(this._priority):``}_shouldShow(e){return e!=null&&e>=2}},ot=c(SortPriorityBadge),st=16,ct=16,lt=null;function ensureHeaderCellGlyphClassRule(){lt||=new a({scope:`class`,name:`HeaderCellGlyph`,styles:{position:`absolute`,left:`var(--ts-ui-table-header-glyph-gap, 4px)`,top:`50%`}})}var HeaderCell=class extends z{_text;_fieldName;_isDragging=!1;_tooltipText=``;_sortState=null;_headerGlyph=null;_headerGlyphInstance=null;_columnFocused=!1;_required=!1;constructor(e,t,n){super(`th`),this.getAria().setRole(`columnheader`),this.getAria().setSort(`none`),this._text=e,this._fieldName=t,this._headerGlyph=n??null;let r=this.getRenderer();r.getText().setFontSize(`--ts-ui-table-header-font-size`),r.getText().setFontWeight(`bold`),r.getText().setText(e),r.setUserSelect(`none`),r.getText().setUserSelect(`none`),r.setCursor(`default`),this.createStyleRule(`:active`).set(`boxShadow`,`var(--ts-ui-button-pressed-shadow, 1px 2px 5px 0 rgba(0,0,0,0.2) inset)`),this._resizeHandle=new rt({listeners:{dragstart:e=>this.onResizeDragStart(e),dragmove:e=>this.emit(`resizedrag`,e)}}),this._priorityBadge=new ot}init(t){super.init(t);let n=t||this.getElement();return n?(i.addSubtreeListener(this,`click`,e=>this.onSortClick(e.shiftKey)),i.addSubtreeListener(this,`contextmenu`,{prevent:!0,handler:this.onContextMenu}),e.sink.appendChild(n,this._resizeHandle.getElement(!0)),e.sink.appendChild(n,this._priorityBadge.getElement(!0)),this._tooltipText&&y.attachToElement(n,this._tooltipText),this._headerGlyph&&this.setHeaderGlyph(this._headerGlyph),this):this}setFieldName(e){return this._fieldName=e,this}getFieldName(){return this._fieldName}getHeaderGlyph(){return this._headerGlyph}setHeaderGlyph(e){return this._headerGlyph=e,this._mountHeaderGlyph(this.getElement()),this.doLayout(),this}_mountHeaderGlyph(t){this._headerGlyphInstance&&=(this._headerGlyphInstance.dispose(),null);let n=d.getTheme().table.cell.padding,i=this._headerGlyph;if(!i||!t){this.getRenderer().setInsets(new r(0,n,0,n));return}ensureHeaderCellGlyphClassRule();let a=new _(i);a.setTransform(`translateY(-50%)`),a.setSize({width:st,height:ct}),a.setForegroundColor(`var(--ts-ui-table-header-glyph-color, currentColor)`),a.setPointerEvents(`none`);let o=a.getElement(!0);e.sink.apply(o,{addClass:[`HeaderCellGlyph`]}),e.sink.appendChild(t,o),this._headerGlyphInstance=a;let s=20+n;this.getRenderer().setInsets(new r(0,n,0,s))}setSortState(e,t){return this._sortState={state:e,priority:t??null},this._renderTitle(),this.getAria().setSort(e===`asc`?`ascending`:`descending`),this._priorityBadge.setPriority(t??null),this}getSortState(){return this._sortState}clearSortState(){return this._sortState=null,this._renderTitle(),this.getAria().setSort(`none`),this._priorityBadge.clearPriority(),this}setRequired(e){return this._required=e,this._renderTitle(),this}setHeaderText(e){return this._text===e?this:(this._text=e,this._renderTitle(),this)}_renderTitle(){let e=this._sortState?this._sortState.state===`asc`?` ▲`:` ▼`:``,t=this._required?` *`:``;this.getRenderer().getText().setText(this._text+t+e)}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}setTooltip(e){this._tooltipText=e;let t=this.getElement();return t&&y.attachToElement(t,e),this}getTooltip(){return this._tooltipText}onSortClick(e){if(this._isDragging){this._isDragging=!1;return}this.emit(`sortclick`,this._fieldName,e)}onContextMenu(e){this.emit(`contextmenu`,this._fieldName,e.clientX,e.clientY)}onResizeDragStart(e){e.stopPropagation(),this._isDragging=!0,this.emit(`resizestart`,e.clientX),i.addViewportListener(this,`mousemove`,this.onResizeDrag),i.addViewportListener(this,`mouseup`,this.onResizeDragStop),h(tt)}onResizeDrag(e){return this._resizeHandle.dragMove(e.clientX),!0}onResizeDragStop(){return i.removeViewportListener(this,`mousemove`,this.onResizeDrag),i.removeViewportListener(this,`mouseup`,this.onResizeDragStop),m(),this._resizeHandle.dragEnd(),setTimeout(()=>{this._isDragging=!1},0),!0}setColumnFocused(e){return this._columnFocused=e,e?this.setShadow(`inset 0 -2px 0 0 var(--ts-ui-focus-ring, rgba(30, 100, 200, 0.6))`):this.clearShadow(),this}isColumnFocused(){return this._columnFocused}destructor(){this._resizeHandle?.dispose(),this._priorityBadge?.dispose(),this._headerGlyphInstance?.dispose(),super.destructor()}},ut=c(HeaderCell),ParentHeaderCell=class extends z{_text;_color;_tooltipText=``;constructor(e,t){super(`th`),this._text=e,this._color=t,this.getAria().setRole(`columnheader`);let n=this.getRenderer();n.getText().setFontSize(`--ts-ui-table-header-font-size`),n.getText().setFontWeight(`bold`),n.getText().setTextAlign(`center`),n.getText().setText(e),n.setUserSelect(`none`),n.getText().setUserSelect(`none`),n.setCursor(`default`),this.setBackgroundColor(t??`transparent`),this.setShadow([`inset -1px 0 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`,`inset 0 -1px 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`].join(`, `))}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}setTooltip(e){this._tooltipText=e;let t=this.getElement();return t&&y.attachToElement(t,e),this}getTooltip(){return this._tooltipText}getText(){return this._text}getColor(){return this._color}init(e){super.init(e);let t=e||this.getElement();return t?(i.addSubtreeListener(this,`contextmenu`,{prevent:!0,handler:this.onContextMenu}),this._tooltipText&&y.attachToElement(t,this._tooltipText),this):this}onContextMenu(e){this.emit(`contextmenu`,e.clientX,e.clientY)}},dt=c(ParentHeaderCell),FilterOperatorButton=class extends de{_menuOpenPredicate=null;setMenuOpenPredicate(e){return this._menuOpenPredicate=e,this}shouldToggleMenu(){return!this._menuOpenPredicate||this._menuOpenPredicate()}},FilterCellRenderer=class extends CellRenderer{_input=new O;_operatorButton=new FilterOperatorButton;constructor(){super(),this.setLayoutManager(new S({spacing:2,itemAlign:`stretch`,mode:`preferred`})),this._input.setBorder({border:`0px solid transparent`}),this._input.setBackgroundColor(`transparent`),this._operatorButton.setFlat(!0),this._operatorButton.setCompact(!0),this._operatorButton.setShowText(!1),this._operatorButton.setShowDescription(!1),this.addComponent(this._input,{weight:1}),this.addComponent(this._operatorButton)}getInput(){return this._input}getOperatorButton(){return this._operatorButton}setMenuOpenPredicate(e){return this._operatorButton.setMenuOpenPredicate(e),this}getValue(){let e=this._input.getValue();return e===``?null:e}setValue(e){this._input.setValue(e??``)}},ft=c(FilterCellRenderer),pt=null;function ensureFilterClauseBadgeClassRule(){pt||=new a({scope:`class`,name:`FilterClauseBadge`,styles:{position:`absolute`,top:`2px`,right:`8px`,fontSize:`var(--ts-ui-filter-clause-badge-font-size, var(--ts-ui-font-size))`,lineHeight:`1`,borderRadius:`3px`,padding:`1px 3px`,pointerEvents:`none`}})}var mt={backgroundColor:`var(--ts-ui-filter-clause-badge-bg, rgba(0,0,0,0.15))`,foregroundColor:`var(--ts-ui-filter-clause-badge-color, inherit)`},FilterClauseBadge=class extends f{_description=null;constructor(e,t){ensureFilterClauseBadgeClassRule(),super({tag:`span`,...e??{}},{...mt,...t??{}}),this._count??=null,this.setVisible(this._shouldShow(this._count))}applyOptions(e){return super.applyOptions(e),e.count!==void 0&&(this._count=e.count),this}render(){let t=super.render();return e.sink.apply(t,{text:this._countText()}),t}getCount(){return this._count}getAccessibleDescription(){return this._description}setAccessibleDescription(e){return this._description=e,e?this.getAria().setLabel(e):this.getAria().clearLabel(),this}setCount(t){this._count=t;let n=this.getElement();return n&&e.sink.apply(n,{text:this._countText()}),this.setVisible(this._shouldShow(t)),this}_countText(){return this._shouldShow(this._count)?String(this._count):``}_shouldShow(e){return e!=null&&e>=2}},ht=c(FilterClauseBadge),gt=[`contains`,`startsWith`,`endsWith`,`eq`,`neq`,`isEmpty`,`isNotEmpty`],_t=[`contains`,`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`isEmpty`,`isNotEmpty`],vt=[`contains`,`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`startsWith`,`endsWith`,`isEmpty`,`isNotEmpty`],yt=[`eq`,`neq`,`isEmpty`,`isNotEmpty`],bt={contains:`Contains`,startsWith:`Starts with`,endsWith:`Ends with`,eq:`Equals`,neq:`Not equals`,gt:`Greater than`,gte:`At least`,lt:`Less than`,lte:`At most`,isEmpty:`Is empty`,isNotEmpty:`Is not empty`},xt={contains:`magnifying-glass`,startsWith:`align-left`,endsWith:`align-right`,eq:`equals`,neq:`not-equal`,gt:`greater-than`,gte:`greater-than-equal`,lt:`less-than`,lte:`less-than-equal`,isEmpty:`ban`,isNotEmpty:`circle-check`};function columnFilterOperators(e){switch(e){case`string`:case`auto`:case`glyph`:return gt;case`boolean`:return yt;case`number`:return _t;case`date`:case`time`:case`datetime`:return vt}}function columnFilterOperatorLabel(e){return bt[e]}function columnFilterOperatorGlyph(e){return xt[e]}function columnFilterTakesOperand(e){return e!==`isEmpty`&&e!==`isNotEmpty`}function isClauseEffective(e){return!columnFilterTakesOperand(e.operator)||e.text!==``}function effectiveClauseCount(e){return e.filter(isClauseEffective).length}var St=/^[0-9.-]$/;function isComboTarget(e){return e.values!==void 0&&e.values.length>0}function columnFilterTakesNumericOperand(e){return e.type===`number`&&!isComboTarget(e)}function columnFilterAcceptsNumericKey(e){return e.length!==1||St.test(e)}function parseTimeOfDay(e){let t=e.trim().match(/^(\d{1,2}):(\d{2})(?::(\d{2}))?\s*(am|pm)?$/i);if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=t[3]?Number(t[3]):0,a=t[4]?.toLowerCase();if(r>59||i>59)return null;if(a){if(n<1||n>12)return null;n=a===`am`?n===12?0:n:n===12?12:n+12}else if(n>23)return null;return new Date(1970,0,1,n,r,i)}function parseOperand(e,t){switch(e){case`number`:{let e=Number(t);return Number.isNaN(e)?null:e}case`boolean`:{let e=t.toLowerCase();return[`true`,`1`,`yes`].includes(e)?!0:![`false`,`0`,`no`].includes(e)&&null}case`time`:{let e=parseTimeOfDay(t);if(e)return e;let n=new Date(t);return Number.isNaN(n.getTime())?null:n}case`date`:case`datetime`:{let e=new Date(t);return Number.isNaN(e.getTime())?null:e}default:return t}}function displayBucket(e,t,n){if(e===`date`)return{lo:new Date(n.getFullYear(),n.getMonth(),n.getDate()),hi:new Date(n.getFullYear(),n.getMonth(),n.getDate()+1)};let r=new Date(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),t?n.getSeconds():0);return{lo:r,hi:new Date(r.getTime()+(t?1e3:6e4))}}function buildComboFilter(e,t,n,r,i){let a=n===`contains`||n===`startsWith`||n===`endsWith`,o=a?r.toLowerCase():r,s={type:`in`,field:e,values:normalizeComboOptions(t).filter(e=>{let r=i.text(`combo`,!1,t,e.value),s=a?r.toLowerCase():r;switch(n){case`contains`:return s.includes(o);case`startsWith`:return s.startsWith(o);case`endsWith`:return s.endsWith(o);case`eq`:case`neq`:return s===o}}).map(e=>e.value)};return n===`neq`?{type:`not`,filter:s}:s}function buildClauseFilter(e,t,n,r){let{operator:i,text:a}=n;if(i===`isEmpty`)return{type:`in`,field:e,values:[null,void 0,``]};if(i===`isNotEmpty`)return{type:`not`,filter:{type:`in`,field:e,values:[null,void 0,``]}};if(!isClauseEffective(n))return null;if(isComboTarget(t)&&(i===`contains`||i===`startsWith`||i===`endsWith`||i===`eq`||i===`neq`))return buildComboFilter(e,t.values,i,a,r);if((t.type===`date`||t.type===`time`||t.type===`datetime`)&&(i===`eq`||i===`neq`)){let n=parseOperand(t.type,a);if(n===null||!(n instanceof Date))return null;let{lo:r,hi:o}=displayBucket(t.type,t.showSeconds??!1,n),s={type:`and`,filters:[{type:`gte`,field:e,value:r},{type:`lt`,field:e,value:o}]};return i===`neq`?{type:`not`,filter:s}:s}if(i===`contains`||i===`startsWith`||i===`endsWith`)return t.type===`date`||t.type===`time`||t.type===`datetime`?{type:i,field:e,value:a,temporal:{type:t.type,showSeconds:t.showSeconds??!1}}:{type:i,field:e,value:a};let o=parseOperand(t.type,a);if(o===null)return null;let s=o;switch(i){case`eq`:return{type:`eq`,field:e,value:o};case`neq`:return{type:`neq`,field:e,value:o};case`gt`:return{type:`gt`,field:e,value:s};case`gte`:return{type:`gte`,field:e,value:s};case`lt`:return{type:`lt`,field:e,value:s};case`lte`:return{type:`lte`,field:e,value:s}}}function buildColumnFilter(e,t,n,r){let i=n.clauses.map(n=>buildClauseFilter(e,t,n,r)).filter(e=>e!==null);return i.length===0?null:i.length===1?i[0]:{type:`and`,filters:i}}function columnFilterStatesEqual(e,t){return e.clauses.length===t.clauses.length&&e.clauses.every((e,n)=>e.operator===t.clauses[n].operator&&e.text===t.clauses[n].text)}_.register(Oe,ke,Ae,je,Me,Ne,Pe,Fe,Ie,k,ue,A);var Ct=`No value needed`,FilterCell=class extends Cell{_fieldName;_operators=[];_numericOnly=!1;_clauses=[{operator:`contains`,text:``}];_clausesPopover=null;_columnLabel=``;constructor(e,t){super(`th`,new ft),this._fieldName=e,this._badge=new ht,this.getAria().setRole(`columnheader`),this.setBackgroundColor(`var(--ts-ui-table-filter-row-bg, rgba(255, 200, 0, 0.2))`),this.setShadow(`inset -1px 0 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`);let n=this.filterRenderer();n.getInput().on(`change`,()=>{this._clauses[0].text=n.getValue()??``,this.syncBadge(),this.fireFilterChange(!1)}),n.getInput().on(`keydown`,e=>this.onInputKeyDown(e)),n.getOperatorButton().setMenuItems(()=>[...this._operators.map(e=>({text:columnFilterOperatorLabel(e),glyph:columnFilterOperatorGlyph(e),checked:e===this._clauses[0].operator,action:()=>this.selectOperator(e)})),{separator:!0},{text:`Add condition…`,glyph:`plus`,action:()=>this.addConditionAndOpenPopover()}]),n.setMenuOpenPredicate(()=>this._clauses.length<2),n.getOperatorButton().on(`action`,()=>this.onOperatorButtonClick()),this.setOperators(t)}filterRenderer(){return this.getRenderer()}applyOperatorFace(e){let t=this.filterRenderer().getOperatorButton();t.setGlyph(columnFilterOperatorGlyph(e)),t.setText(columnFilterOperatorLabel(e))}applyOperandAvailability(e,t){let n=columnFilterTakesOperand(t);e.setEnabled(n),n?e.clearPlaceholder():e.setPlaceholder(Ct)}setFieldName(e){return e!==this._fieldName&&this._clausesPopover?.hide(),this._fieldName=e,this}getFieldName(){return this._fieldName}setOperators(e){this._operators=e;let t=this.filterRenderer(),n=e.length===0;return t.getInput().setDisplayed(!n),t.getOperatorButton().setDisplayed(!n),n?(this._clauses=[{operator:`contains`,text:``}],this._clausesPopover?.hide(),this.syncBadge(),this):(this._clauses=[{operator:e[0],text:``}],this.applyOperatorFace(e[0]),this.applyOperandAvailability(t.getInput(),e[0]),this.syncBadge(),this)}setNumericOnly(e){return this._numericOnly=e,this}setColumnLabel(e){return this._columnLabel=e,this.filterRenderer().getInput().getAria().setLabel(`Filter `+e),this}setFilterState(e){this._clauses=e.clauses.map(e=>({...e}));let t=this.filterRenderer();return this.applyOperatorFace(this._clauses[0].operator),this.applyOperandAvailability(t.getInput(),this._clauses[0].operator),t.setValue(this._clauses[0].text===``?null:this._clauses[0].text),this.syncBadge(),this.doLayout(),this}getFilterState(){return{clauses:this._clauses.map(e=>({...e}))}}selectOperator(e){this._clauses[0].operator=e;let t=this.filterRenderer(),n=columnFilterTakesOperand(e);this.applyOperatorFace(e),this.applyOperandAvailability(t.getInput(),e),n||(t.setValue(null),this._clauses[0].text=``),this.doLayout(),this.syncBadge(),this.fireFilterChange(!0)}numericKeyDisposition(e){return!this._numericOnly||e.ctrlKey||e.metaKey||e.altKey?!1:!columnFilterAcceptsNumericKey(e.key)&&{prevent:!0}}onInputKeyDown(e){return this.numericKeyDisposition(e)||(e.key===`Enter`?this.fireFilterChange(!0):e.key===`Escape`&&(this._clauses[0].text=``,this.filterRenderer().setValue(null),this.syncBadge(),this.fireFilterChange(!0)),!1)}onOperatorButtonClick(){this._clauses.length>=2&&this.openClausesPopover()}addConditionAndOpenPopover(){this._clauses.push({operator:this._operators[0],text:``}),this.openClausesPopover(),this.fireFilterChange(!0)}ensureClausesPopover(){return this._clausesPopover||(this._clausesPopover=new ce({placement:`auto`,dismissOn:`click-outside`,onClose:()=>this.pruneBlankClauses()}),this._clausesPopover.addAction(`Done`,()=>this._clausesPopover.hide())),this._clausesPopover}pruneBlankClauses(){this._clauses=[this._clauses[0],...this._clauses.slice(1).filter(isClauseEffective)]}openClausesPopover(){let e=this.ensureClausesPopover();e.setTitle(this._columnLabel+` filter conditions`),e.setBody(this.buildClausesBody()),e.attachToComponent(this.filterRenderer().getOperatorButton()),e.show(),this.syncBadge()}refreshClausesPopoverBody(){this._clausesPopover?.setBody(this.buildClausesBody())}buildClausesBody(){let e=new f({layoutManager:new te({spacing:4})});this._clauses.forEach((t,n)=>e.addComponent(this.buildClauseRow(n)));let t=new T(`Add condition`,{glyph:`plus`});return t.on(`action`,()=>this.onAddConditionButtonClick()),e.addComponent(t),e}buildClauseRow(e){let t=this._clauses[e],n=new de;n.setCompact(!0),n.setShowText(!1),n.setGlyph(columnFilterOperatorGlyph(t.operator)),n.setText(columnFilterOperatorLabel(t.operator)),n.setMenuItems(()=>this._operators.map(t=>({text:columnFilterOperatorLabel(t),glyph:columnFilterOperatorGlyph(t),checked:t===this._clauses[e].operator,action:()=>this.selectRowOperator(e,t)})));let r=new O;r.setValue(t.text),this.applyOperandAvailability(r,t.operator),r.on(`change`,()=>this.onRowTextChange(e,r.getValue())),r.on(`keydown`,e=>this.numericKeyDisposition(e));let i=new f({layoutManager:new S({spacing:4,itemAlign:`stretch`})});if(i.addComponent(n),i.addComponent(r,{weight:1}),e>0){let t=new ae;t.on(`action`,()=>this.removeClause(e)),i.addComponent(t)}return i}selectRowOperator(e,t){let n=this._clauses[e],r=columnFilterTakesOperand(t);n.operator=t,r||(n.text=``),e===0&&(this.applyOperatorFace(t),this.applyOperandAvailability(this.filterRenderer().getInput(),t),r||this.filterRenderer().setValue(null),this.doLayout()),this.refreshClausesPopoverBody(),this.syncBadge(),this.fireFilterChange(!0)}onRowTextChange(e,t){this._clauses[e].text=t,e===0&&this.filterRenderer().setValue(t===``?null:t),this.syncBadge(),this.fireFilterChange(!1)}onAddConditionButtonClick(){this._clauses.push({operator:this._operators[0],text:``}),this.syncBadge(),this.refreshClausesPopoverBody(),this.fireFilterChange(!0)}removeClause(e){this._clauses.splice(e,1),this.syncBadge(),this.refreshClausesPopoverBody(),this.fireFilterChange(!0)}syncBadge(){let e=effectiveClauseCount(this._clauses),t=e>=2,n=t?this.describeClauses():null,r=this.filterRenderer().getOperatorButton();this._badge.setCount(t?e:null),this._badge.setAccessibleDescription(n),r.setText(t?`${e} conditions`:columnFilterOperatorLabel(this._clauses[0].operator)),n?r.setDescription(n):r.clearDescription()}describeClauses(){let e=this._columnLabel||this._fieldName;return this._clauses.filter(isClauseEffective).map(t=>columnFilterTakesOperand(t.operator)?`${e} ${columnFilterOperatorLabel(t.operator)} "${t.text}"`:`${e} ${columnFilterOperatorLabel(t.operator)}`).join(` AND `)}fireFilterChange(e){this.emit(`filterchange`,this._fieldName,this.getFilterState(),e)}init(t){super.init(t);let n=t||this.getElement();return n&&e.sink.appendChild(n,this._badge.getElement(!0)),this}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}destructor(){this._badge?.dispose(),this._clausesPopover?.dispose(),super.destructor()}},wt=c(FilterCell),CellGeometryCache=class{_geometry=new WeakMap;clear(){this._geometry=new WeakMap}apply(e,t,n,r){let i=this._geometry.get(e);i&&i.x===t&&i.w===n&&i.h===r||(e.setAutoCommitStyle(!1),e.setX(t),e.setY(0),e.setWidth(n),e.setHeight(r),e.setAutoCommitStyle(!0),e.doLayout(),e.getElement()&&this._geometry.set(e,{x:t,w:n,h:r}))}},StringEditor=class extends CellEditor{_textField=new O;_value=null;constructor(){super(),i.addListener(this._textField,`blur`,e=>{i.fireEvent(this,`blur`,e)}),i.addListener(this._textField,`keydown`,e=>{i.fireEvent(this,`keydown`,{detail:{key:e.key,code:e.code,keyCode:e.keyCode,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}})}),i.addListener(this._textField,`input`,()=>this.onInput()),this._textField.setMaxSize({width:2**53-1,height:2**53-1}),this._textField.clearPadding(),this._textField.setBorderRadius(`0`),this._textField.setBorder({border:`0px solid transparent`}),this._textField.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this._textField.setOutline(`none`),this._textField.setText(``),this.addComponent(this._textField)}getValue(){return this._value}setValue(e){return this._value=e??null,this._textField.setText(this._value===null?``:String(this._value)),this}focus(e=!1){return this._textField.focus(e),this._textField.select(),this}onInput(){let e=this._textField.getText();this._value=e||null}},Tt=c(StringEditor),NumberEditor=class extends CellEditor{_textField=new O;_value=null;constructor(){super(),i.addListener(this._textField,`blur`,e=>{i.fireEvent(this,`blur`,e)}),i.addListener(this._textField,`keydown`,e=>{i.fireEvent(this,`keydown`,{detail:{key:e.key,code:e.code,keyCode:e.keyCode,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}})}),i.addListener(this._textField,`input`,()=>this.onInput()),this.setMaxSize({width:2**53-1,height:2**53-1}),this._textField.setMaxSize({width:2**53-1,height:2**53-1}),this._textField.clearPadding(),this.setBorderRadius(`0`),this._textField.setBorder({border:`0px solid transparent`}),this._textField.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this._textField.setOutline(`none`),this._textField.setTextAlign(`right`),this._textField.setText(``),this.addComponent(this._textField,{anchor:u.NORTHEAST})}getValue(){return this._value}setValue(e){return this._value=e??null,this._textField.setText(this._value===null?``:String(this._value)),this}focus(e=!1){return this._textField.focus(e),this._textField.select(),this}onInput(){let e=this._textField.getText();if(!e){this._value=null;return}let t=Number(e);this._value=isNaN(t)?null:t}},Et=c(NumberEditor),TextInputCellEditor=class extends CellEditor{_type=null;_inputMode=null;_autoComplete=null;constructor(){super(`input`)}setType(e){return this._type=e,this.setElementAttribute(`type`,e),this}setInputMode(e){return this._inputMode=e,this.setElementAttribute(`inputmode`,e),this}setAutoComplete(e){return this._autoComplete=e,this.setElementAttribute(`autocomplete`,e),this}init(t){super.init(t);let n=t||this.getElement();return this._type!==null&&e.sink.apply(n,{setAttr:{type:this._type}}),this._inputMode!==null&&e.sink.apply(n,{setAttr:{inputmode:this._inputMode}}),this._autoComplete!==null&&e.sink.apply(n,{setAttr:{autocomplete:this._autoComplete}}),this}},DateEditor=class extends TextInputCellEditor{_value=null;_dropdown=null;_animated=!0;_text=``;constructor(){super(),this.setMaxSize({width:2**53-1,height:2**53-1}),this.setBorderRadius(`0`),this.setBorder({border:`0px solid transparent`}),this.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this.setOutline(`none`),i.addListener(this,`focus`,()=>this.openDropdown()),i.addListener(this,`blur`,()=>this.closeDropdown()),i.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}destructor(){this._dropdown?.dispose(),super.destructor()}isEmpty(){return!this.getText()&&this._value===null}getValue(){return this._value}setValue(e){return this._value=e,this.setText(e?this.toInputString(e):``),this}setText(t){this._text=t;let n=this.getElement();return n&&e.sink.setValue(n,t),this}getText(){return this._text}syncTextFromDom(){let t=this.getElement();this._text=t?e.source.getValue(t):``}setDropdownAnimated(e){return this._animated=e,this._dropdown&&this._dropdown.setAnimated(e),this}isDropdownAnimated(){return this._animated}ensureDropdown(){return this._dropdown||(this._dropdown=new ge(e=>this.onDateSelected(e)),this._dropdown.setAnimated(this._animated)),this._dropdown}openDropdown(){let e=this.ensureDropdown();if(e.isOpen())return;let t=this.getElement();t&&e.showAt(t,this._value)}closeDropdown(){this._dropdown?.isOpen()&&this._dropdown.hideAnimated()}onInput(){this.syncTextFromDom();let e=this.getText();if(!e){this._value=null;return}let t=new Date(e+`T00:00:00`);this._value=isNaN(t.getTime())?null:t}onDateSelected(t){this.setValue(t),this._dropdown?.hideAnimated();let n=this.getElement();n&&e.sink.blur(n)}toInputString(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}},Dt=c(DateEditor),TimeEditor=class extends TextInputCellEditor{_showSeconds;_value=null;_dropdown=null;_animated=!0;_text=``;constructor(e=!1){super(),this._showSeconds=e,this.setMaxSize({width:2**53-1,height:2**53-1}),this.setBorderRadius(`0`),this.setBorder({border:`0px solid transparent`}),this.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this.setOutline(`none`),i.addListener(this,`focus`,()=>this.openDropdown()),i.addListener(this,`blur`,()=>this.closeDropdown()),i.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}destructor(){this._dropdown?.dispose(),super.destructor()}isEmpty(){return!this.getText()&&this._value===null}getValue(){return this._value}setValue(e){return this._value=e,this.setText(e?this.toInputString(e):``),this}setText(t){this._text=t;let n=this.getElement();return n&&e.sink.setValue(n,t),this}getText(){return this._text}syncTextFromDom(){let t=this.getElement();this._text=t?e.source.getValue(t):``}setDropdownAnimated(e){return this._animated=e,this._dropdown&&this._dropdown.setAnimated(e),this}isDropdownAnimated(){return this._animated}ensureDropdown(){return this._dropdown||(this._dropdown=new ve((e,t,n)=>this.onTimeSelected(e,t,n),{showSeconds:this._showSeconds}),this._dropdown.setAnimated(this._animated)),this._dropdown}openDropdown(){let e=this.ensureDropdown();if(e.isOpen())return;let t=this.getElement();t&&e.showAt(t,this._value)}closeDropdown(){this._dropdown?.isOpen()&&this._dropdown.hideAnimated()}onInput(){this.syncTextFromDom();let e=this.getText();if(!e){this._value=null;return}let t=e.split(`:`).map(Number);if(t.some(isNaN)){this._value=null;return}this._value=new Date(1970,0,1,t[0],t[1]??0,t[2]??0)}onTimeSelected(e,t,n){let r=new Date(1970,0,1,e,t,n,0);this.setValue(r)}toInputString(e){let t=String(e.getHours()).padStart(2,`0`),n=String(e.getMinutes()).padStart(2,`0`);return this._showSeconds?`${t}:${n}:${String(e.getSeconds()).padStart(2,`0`)}`:`${t}:${n}`}},H=c(TimeEditor),DateTimeEditor=class extends TextInputCellEditor{_showSeconds;_value=null;_dropdown=null;_animated=!0;_text=``;constructor(e=!1){super(),this._showSeconds=e,this.setMaxSize({width:2**53-1,height:2**53-1}),this.setBorderRadius(`0`),this.setBorder({border:`0px solid transparent`}),this.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this.setOutline(`none`),i.addListener(this,`focus`,()=>this.openDropdown()),i.addListener(this,`blur`,e=>this.onEditorBlur(e)),i.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}destructor(){this._dropdown?.dispose(),super.destructor()}retainsFocus(e){return this._dropdown!==null&&this._dropdown.isOpen()&&v.containsAcrossLayers(this._dropdown,e)}isEmpty(){return!this.getText()&&this._value===null}getValue(){return this._value}setValue(e){return this._value=e,this.setText(e?this.toInputString(e):``),this}setText(t){this._text=t;let n=this.getElement();return n&&e.sink.setValue(n,t),this}getText(){return this._text}syncTextFromDom(){let t=this.getElement();this._text=t?e.source.getValue(t):``}setDropdownAnimated(e){return this._animated=e,this._dropdown&&this._dropdown.setAnimated(e),this}isDropdownAnimated(){return this._animated}ensureDropdown(){return this._dropdown||(this._dropdown=new ye(e=>this.onDateTimeSelected(e),{showSeconds:this._showSeconds}),this._dropdown.setAnimated(this._animated)),this._dropdown}openDropdown(){let e=this.ensureDropdown();if(e.isOpen())return;let t=this.getElement();t&&(e.setCloseHandler(()=>this.onOutsideDismiss()),e.setAnchorElement(t),e.showAt(t,this._value))}closeDropdown(){this._dropdown?.isOpen()&&this._dropdown.hideAnimated()}onOutsideDismiss(){this.closeDropdown(),this.requestCommit()}onEditorBlur(e){this.retainsFocus(blurRelatedTargetHandle(e))||this.closeDropdown()}onInput(){this.syncTextFromDom();let e=this.getText();if(!e){this._value=null;return}let t=new Date(e.replace(` `,`T`));this._value=isNaN(t.getTime())?null:t}onDateTimeSelected(e){this.setValue(e)}toInputString(e){let t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,`0`),r=String(e.getDate()).padStart(2,`0`),i=String(e.getHours()).padStart(2,`0`),a=String(e.getMinutes()).padStart(2,`0`);return this._showSeconds?`${t}-${n}-${r} ${i}:${a}:${String(e.getSeconds()).padStart(2,`0`)}`:`${t}-${n}-${r} ${i}:${a}`}},U=c(DateTimeEditor),CellEditorPool=class{_editors=new Map;_factories=new Map;_activeCell=null;constructor(){this._factories.set(`string`,()=>new Tt),this._factories.set(`number`,()=>new Et),this._factories.set(`date`,()=>new Dt),this._factories.set(`time`,()=>new H(!1)),this._factories.set(`time:seconds`,()=>new H(!0)),this._factories.set(`datetime`,()=>new U(!1)),this._factories.set(`datetime:seconds`,()=>new U(!0))}register(e,t){return this._factories.set(e,t),this._editors.delete(e),this}acquire(e,t){let n=this._factories.get(e);if(!n)return null;let r=this._editors.get(e);return r||(r=n(),this.wireListeners(r),this._editors.set(e,r)),this._activeCell=t,r}release(){this._activeCell=null}dispose(){for(let e of this._editors.values())e.dispose();this._editors.clear()}wireListeners(e){e.setCommitRequestHandler(()=>this._activeCell?.commitEdit()),i.addListener(e,`blur`,t=>{e.retainsFocus(blurRelatedTargetHandle(t))||this._activeCell?.commitEdit()}),i.addListener(e,`keydown`,e=>{this._activeCell?.onKeyDown(e)})}},ComboEditor=class extends CellEditor{_combo;_value=null;constructor(e){super(`div`);let t=normalizeComboOptions(e).map(e=>({key:e.value,label:e.label}));this._combo=new be,this._combo.setItems(t),this._combo.setBorder({border:`0px solid transparent`}),this._combo.setBorderRadius(`0`),this._combo.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this._combo.on(`action`,()=>this.commitFromCombo()),i.addListener(this._combo,`blur`,()=>this.commitFromCombo()),i.addListener(this._combo,`keydown`,e=>{i.fireEvent(this,`keydown`,{detail:{key:e.key,code:e.code,keyCode:e.keyCode,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}})}),this.addComponent(this._combo)}getValue(){return this._value}setValue(e){return this._value=e??null,this._combo.setValue(this._value===null?``:String(this._value)),this}focus(e=!1){return this._combo.focus(e),this._combo.openDropdown(),this}setOptions(e){let t=normalizeComboOptions(e).map(e=>({key:e.value,label:e.label}));return this._combo.setItems(t),this._combo.setValue(this._value===null?``:String(this._value)),this}commitFromCombo(){let e=this._combo.getValue();this._value=e||null,this.requestCommit()}},W=c(ComboEditor);function resolveClickedColumn(t,n){for(let r=0;r<t.length;r++){let i=t[r].getElement();if(i&&(i===n||e.source.contains(i,n)))return r}return-1}var Ot=2;function computeColumnWindow(e,t,n){let r=e.length,i=Array(r),a=0;for(let t=0;t<r;t++)i[t]=a,a+=e[t];if(r===0)return{firstCol:0,lastCol:-1,widths:e,lefts:i};let o=t+n,s=-1,c=-1;for(let n=0;n<r;n++){let r=i[n];r+e[n]>=t&&r<=o&&(s===-1&&(s=n),c=n)}return s===-1&&(s=0,c=0),{firstCol:Math.max(0,s-Ot),lastCol:Math.min(r-1,c+Ot),widths:e,lefts:i}}function columnWidthsEqual(e,t){if(!t)return e.length===0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function buildTsv(e,t,n,r,i,a,o){let s=[];for(let c=t;c<=i;c++){let l=e[c],u=c===t?n:0,d=c===i?a:l.length-1,f=[];for(let e=u;e<=d;e++){let s=c===t&&e===n,u=c===i&&e===a,d=l[e],p=s&&r!==null?r:0,m=u&&o!==null?o:d.length;f.push(escapeTsvField(d.slice(p,m)))}s.push(f.join(` `))}return s.join(`
2
- `)}function escapeTsvField(e){return e.includes(` `)||e.includes(`
3
- `)||e.includes(`"`)?`"`+e.replace(/"/g,`""`)+`"`:e}function locateCellInGrid(t,n){for(let r=0;r<t.length;r++)for(let i=0;i<t[r].length;i++)if(e.source.contains(t[r][i].element,n))return{row:r,col:i};return null}var kt=class Body extends Se{_store;_hiddenColumns=new Set;_columns=[];_columnConfigs=new Map;_rowReadOnly=null;_rowVisible=null;_rowSeparator=null;_rowIndented=null;_cellGeom=new CellGeometryCache;_lastBodyWidth=0;_lastColumnWidths=[];_lastAriaRowCount=-1;_rowHeight;_colWindow={firstCol:0,lastCol:-1,widths:[],lefts:[]};_reconciling=!1;_storeRefresh=null;_selectedRecords=new Set;_anchorRecord=null;_focusedColIndex=0;_editorPool=new CellEditorPool;_header=null;_listeners=new p;constructor(e){super({tag:`tbody`}),this.setOverflow(`hidden`),this.setBackgroundColor(`var(--ts-ui-input-bg, rgb(255, 255, 255))`),this.getAria().setTabIndex(0),this.getAria().setRole(`rowgroup`),this._store=e,this.bindStore(e),this._rowHeight=this.computeRowHeight(),this.subscribeTheme(()=>this.onThemeReflow())}onThemeReflow(){this._rowHeight=this.computeRowHeight(),super.onThemeReflow()}computeRowHeight(){let e=d.getTheme();return n.lineHeightPx()+2*(e.table.cell.padding??2)}getRowHeight(){return this._rowHeight}createPoolRow(){let e=this.createRow();return e.setColumnWindow(this._colWindow.firstCol,this._colWindow.lastCol),this.wireRowCells(e),e}wireRowCells(e){for(let t of e.getComponents())t.setEditorPool(this._editorPool),t.setScrollIntoViewHandler(()=>this.scrollColumnIntoView(this._focusedColIndex))}bindStore(e){let refresh=()=>this.onStoreChange();this._storeRefresh=refresh,e.on(`load`,refresh),e.on(`add`,refresh),e.on(`remove`,refresh),e.on(`datachange`,refresh),e.on(`beforesync`,refresh),e.on(`sync`,refresh)}onStoreChange(){this._boundIndices.fill(-1),this.renderWindow()}getVisibleRecords(){let e=this._store.getRecords();return this._rowVisible?e.filter(this._rowVisible):e}createRow(){return new V(this._store.model,void 0,this._hiddenColumns,this._columnConfigs,e=>this._store.notifyRecordChanged(e))}getTreeFieldName(){}computeRowAria(e,t){e.getAria().setRowIndex(t+2)}afterRowBound(e,t,n){}invalidateRowBindings(){this._boundIndices.fill(-1)}getStore(){return this._store}getHiddenColumns(){return this._hiddenColumns}getColumnConfigs(){return this._columnConfigs}getRowPool(){return this._rowPool}invalidateGeom(){super.invalidateGeom(),this._cellGeom.clear()}setHiddenColumns(e){let t=new Set;for(let n of e){let e=this._columns.find(e=>e.getField().getName()===n);(!e||!e.isUnhideable())&&t.add(n)}return this._hiddenColumns=t,this.syncPoolCells(),this.renderWindow(),this}setColumns(e){return this._columns=e,this.syncPoolCells(),this.renderWindow(),this}setRowReadOnly(e){return this._rowReadOnly=e,this}setRowSeparator(e){return this._rowSeparator=e,this}setRowIndented(e){return this._rowIndented=e,this}setRowVisible(e){return this._rowVisible=e,this.invalidateRowBindings(),this.renderWindow(),this}setColumnConfigs(e){return this._columnConfigs=e,this.registerComboEditors(e),this.syncPoolCells(),this.renderWindow(),this}registerComboEditors(e){for(let[t,n]of e){let e=n.values;e&&e.length>0?this._editorPool.register(`combo:${t}`,()=>new W(e)):n.cellValues&&this._editorPool.register(`combo:${t}`,()=>new W([]))}}syncPoolCells(){if(!this._reconciling){this._reconciling=!0;try{this.commitEditsOutsideWindow(null);let e=this.getTreeFieldName();for(let t=0;t<this._rowPool.length;t++){let n=this._rowPool[t];n.setColumnFields(this._store.model,this._hiddenColumns,this._columnConfigs,e),this.wireRowCells(n),this._rowGeom[t]=null}}finally{this._reconciling=!1}}}setStore(e){if(this._storeRefresh){let e=this._store;[`load`,`add`,`remove`,`datachange`,`beforesync`,`sync`].forEach(t=>e.off(t,this._storeRefresh))}return this._store=e,this.bindStore(e),this.invalidateGeom(),this.getElement()&&this.onStoreChange(),this}init(e){super.init(e);let t=e||this.getElement();return t?(this.initScroller(t),i.addListener(this,`focus`,this.onFocus),i.addListener(this,`keydown`,this.onKeyDown),i.addSubtreeListener(this,`click`,this.onSubtreeClick),i.addSubtreeListener(this,`copy`,this.onCopy),this.renderWindow(),this):this}onScrollerTick(){this.renderWindow(),!this.wasRenderDeferred()&&this._scroller&&(this.emit(`verticalscroll`,this._scroller.getScrollY()),this.emit(`horizontalscroll`,this._scroller.getScrollX()))}onFocus(){this._updateActiveDescendant(),this._updateFocusStyle()}getEditorPool(){return this._editorPool}destructor(){this._editorPool.dispose(),super.destructor()}doLayout(){return super.doLayout(),this.renderWindowIfDeferred(),this}renderWindow(e,t){if(this.updateColumnWidthCache(e,t),!this._reconciling&&!(!this.getElement()||!this._scroller)&&!this.deferRenderWhileFirstLayoutHeld()){this._reconciling=!0;try{this.renderWindowPass()}finally{this._reconciling=!1}this.finishResumedRender()}}renderWindowPass(){let e=this._scroller,t=this.getVisibleRecords(),n=t.length,r=e.getScrollX(),i=e.getScrollY(),a=n*this._rowHeight,o=this._lastColumnWidths.reduce((e,t)=>e+t,0),s=Math.max(this._lastBodyWidth,o);e.clampToContent(s,a);let c=Math.max(this._lastBodyWidth,o),l=this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).length,u=l>0?c/l:c,d=Array.from({length:l},(e,t)=>this._lastColumnWidths[t]??u);this._colWindow=computeColumnWindow(d,e.getScrollX(),this.getWidth()||0),this.commitEditsOutsideWindow(this._colWindow)&&(t=this.getVisibleRecords(),n=t.length,a=n*this._rowHeight);let f=this.getHeight()||0,p=this.computeVisibleWindow(e.getScrollY(),f,n),m=this.computePoolTarget(p.windowSize,f,n);this.growRowPool(m),this.bindAndPositionRows(p.firstRow,p.windowSize,c,t,this._colWindow),this.hideExcessPoolRows(p.windowSize),n!==this._lastAriaRowCount&&(this.getAria().setRowCount(n),this._lastAriaRowCount=n),e.layoutScrollbars(s,a);let h=e.getScrollX(),g=e.getScrollY();h!==r&&this.emit(`horizontalscroll`,h),g!==i&&this.emit(`verticalscroll`,g),this._updateFocusStyle()}updateColumnWidthCache(e,t){if(e===void 0)return;let n=this._lastBodyWidth!==e||!columnWidthsEqual(this._lastColumnWidths,t);this._lastBodyWidth=e,this._lastColumnWidths=t??[],n&&this.invalidateGeom()}commitEditsOutsideWindow(e){let t=!1;for(let n of this._rowPool){let r=n.getComponents(),i=n.getColumnWindowStart();for(let n=0;n<r.length;n++){let a=i+n;(e===null||a<e.firstCol||a>e.lastCol)&&r[n].isEditing()&&(r[n].commitEdit(),t=!0)}}return t}bindAndPositionRows(e,t,n,r,i){let a=this._rowHeight;this.alignPoolWindow(e);for(let o=0;o<t;o++){let t=this._rowPool[o],s=e+o,c=this._rowSeparator?.(r[s])??null;if(c){(this._boundIndices[o]!==s||!t.isSeparator())&&(t.renderSeparator(c.label,c.color),this._boundIndices[o]=s,this.computeRowAria(t,s)),this.positionRow(o,s*a,n),this._cellGeom.apply(t.getComponents()[0],0,n,a);continue}let l=t.setColumnWindow(i.firstCol,i.lastCol);l&&this.wireRowCells(t);let u=this._boundIndices[o]!==s;u&&(t.setData(r[s]),this._boundIndices[o]=s,t.setStripe(s%2==1),this.updateRowVisualState(o),this.computeRowAria(t,s)),(u||l)&&(this.applyReadOnlyState(t,r[s]),t.setFieldIndent(this._rowIndented?.(r[s])??!1)),this.afterRowBound(t,s,u),this.applyRequiredEmptyState(t,r[s]),this.positionRow(o,s*a,n);let d=t.getComponents(),f=i.lefts[i.firstCol]??0;for(let e=0;e<d.length;e++){let t=i.widths[i.firstCol+e]??0;this._cellGeom.apply(d[e],f,t,a),f+=t}}}onSubtreeClick(t){if(!(t instanceof MouseEvent))return;let n=t.target===null?null:e.source.intern(t.target);for(;n;){let r=this._rowPool.find(e=>e.getElement()===n);if(r){this.onRowClick(r,t);return}n=e.source.getParentElement(n)}}onRowClick(t,n){if(t.isSeparator())return;let r=t.getData()??null;if(!r)return;let i=this.getVisibleRecords(),a=new Set(this._selectedRecords);this._anchorRecord=Ee(this._selectedRecords,this._anchorRecord,r,e=>i.indexOf(e),e=>i[e],{ctrl:n.ctrlKey||n.metaKey,shift:n.shiftKey}),this._boundIndices.forEach((e,t)=>{e!==-1&&this.updateRowVisualState(t)}),this.notifySelectionChange(a);let o=n.target===null?null:e.source.intern(n.target),s=resolveClickedColumn(t.getComponents(),o),c=s>=0?s+t.getColumnWindowStart():-1;c>=0&&(this._focusedColIndex=c);let l=o===null?``:e.source.getTagName(o);if(l!==`INPUT`&&l!==`TEXTAREA`&&l!==`SELECT`&&this.focus(),this._updateFocusStyle(),this._updateActiveDescendant(),c>=0){let e=t.getFieldNames()[s];this.emit(`cellclick`,{record:r,field:e,columnIndex:c,value:r.get(e),rowIndex:this.getVisibleRecords().indexOf(r),event:n})}}onCopy(e){let t=this.buildSelectionText();if(t!==null)return e.clipboardData?.setData(`text/plain`,t),{prevent:!0}}buildSelectionText(){let t=e.source.getDocumentSelection();if(!t)return null;let n=this.renderedCellGrid(),r=locateCellInGrid(n,t.startContainer),i=locateCellInGrid(n,t.endContainer);if(!r||!i)return null;let a=t.startOffset,o=t.endOffset;return(r.row>i.row||r.row===i.row&&r.col>i.col)&&([r,i]=[i,r],[a,o]=[o,a]),buildTsv(n.map(e=>e.map(e=>e.text)),r.row,r.col,a,i.row,i.col,o)}renderedCellGrid(){let e=[];for(let t=0;t<this._rowPool.length;t++){if(!this._rowDisplayed[t])continue;let n=this._rowPool[t];if(n.isSeparator())continue;let r=n.getComponents();e.push(r.map(e=>({text:e.getRenderer().getDisplayText(),element:e.getElement()})))}return e}selectRecord(e){let t=new Set(this._selectedRecords);this._selectedRecords.clear(),this._anchorRecord=e,e&&this._selectedRecords.add(e),this._boundIndices.forEach((e,t)=>{e!==-1&&this.updateRowVisualState(t)}),this.notifySelectionChange(t)}getSelectedRecord(){return this._anchorRecord&&this._selectedRecords.has(this._anchorRecord)?this._anchorRecord:this._selectedRecords.size>0?[...this._selectedRecords][0]:null}getSelectedRecords(){return[...this._selectedRecords]}setSelectedRecords(e){let t=new Set(this._selectedRecords);this._selectedRecords.clear(),this._anchorRecord=e.length>0?e[0]:null;for(let t of e)this._selectedRecords.add(t);this._boundIndices.forEach((e,t)=>{e!==-1&&this.updateRowVisualState(t)}),this.notifySelectionChange(t)}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,t){this._listeners.fire(e,t)}notifySelectionChange(e){Ce(e,this._selectedRecords)||this.emit(`selection`,this.getSelectedRecords())}scrollToRecord(e){let t=this.getVisibleRecords().indexOf(e);t!==-1&&this.setScrollY(t*this._rowHeight)}applyReadOnlyState(e,t){let n=this._rowReadOnly?.(t)===!0,r=e.getComponents(),i=e.getFieldNames();for(let e=0;e<r.length;e++){let a=r[e],o=i[e],s=this._columnConfigs.get(o),c=s?.readOnly===!0,l=s?.cellReadOnly?.(t)===!0,u=c||n||l;a.setReadOnly(u)}}static isEmptyValue(e){return e==null||e===``}applyRequiredEmptyState(e,t){let n=e.getComponents(),r=e.getFieldNames();for(let e=0;e<n.length;e++){let i=r[e],a=this._columnConfigs.get(i),o=a?.required===!0||a?.requiredPredicate?.(t)===!0,s=Body.isEmptyValue(t.get(i));n[e].setRequiredEmpty(o&&s)}}updateRowVisualState(t){let n=this._boundIndices[t];if(n===-1)return;let r=this.getVisibleRecords()[n];if(!r)return;let i=this._rowPool[t],a=i.getElement(),o=this._selectedRecords.has(r);o?e.sink.apply(a,{style:{"background-color":`var(--ts-ui-table-row-selected, rgba(30, 100, 200, 0.15))`,"box-shadow":`var(--ts-ui-table-row-selected-border, none)`}}):(e.sink.apply(a,{style:{"box-shadow":null}}),i.updateVisualState()),i.getAria().setSelected(o)}setHeader(e){return this._header=e,this}_updateFocusStyle(){for(let t of this._rowPool)for(let n of t.getComponents()){let t=n.getElement();t&&e.sink.apply(t,{style:{outline:null,"outline-offset":null}})}if(this._header?.setFocusedColumn(this._anchorRecord?this._focusedColIndex:null),!this._anchorRecord)return;let t=this.getVisibleRecords().indexOf(this._anchorRecord),n=this._boundIndices.indexOf(t);if(n<0)return;let r=this._rowPool[n],i=r.getComponents(),a=this._focusedColIndex-r.getColumnWindowStart(),o=a>=0&&a<i.length?i[a]:void 0;if(o){let t=o.getElement();t&&e.sink.apply(t,{style:{outline:`var(--ts-ui-indicator-selection, 1px dashed rgb(120, 170, 240))`,"outline-offset":`-1px`}})}}_updateActiveDescendant(){if(!this._anchorRecord){this.getAria().setActiveDescendant(``);return}let e=this.getVisibleRecords().indexOf(this._anchorRecord),t=this._boundIndices.indexOf(e);if(t<0){this.getAria().setActiveDescendant(``);return}let n=this._rowPool[t],r=n.getComponents(),i=this._focusedColIndex-n.getColumnWindowStart(),a=i>=0&&i<r.length?r[i]:void 0;a?this.getAria().setActiveDescendant(a.getId()):this.getAria().setActiveDescendant(this._rowPool[t].getId())}skipSeparators(e,t,n){let r=t;for(;r>=0&&r<e.length&&this._rowSeparator?.(e[r]);)r+=n;if(r<0||r>=e.length)for(r=t;r<e.length&&this._rowSeparator?.(e[r]);)r++;return Math.max(0,Math.min(r,e.length-1))}onKeyDown(e){let t=this.getVisibleRecords();if(t.length===0||!new Set([`ArrowDown`,`ArrowUp`,`Home`,`End`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Enter`,` `]).has(e.key))return;if(e.key===`ArrowLeft`||e.key===`ArrowRight`){let t=this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).length;return this._focusedColIndex=e.key===`ArrowLeft`?Math.max(0,this._focusedColIndex-1):Math.min(t-1,this._focusedColIndex+1),this.scrollColumnIntoView(this._focusedColIndex),this.renderWindow(),this._updateActiveDescendant(),this._updateFocusStyle(),{prevent:!0}}if(e.key===`Enter`||e.key===` `){if(!this._anchorRecord)return{prevent:!0};this.scrollColumnIntoView(this._focusedColIndex),this.renderWindow();let e=t.indexOf(this._anchorRecord),n=this._boundIndices.indexOf(e);if(n<0)return{prevent:!0};let r=this._rowPool[n],i=r.getComponents(),a=this._focusedColIndex-r.getColumnWindowStart(),o=a>=0&&a<i.length?i[a]:void 0;if(o instanceof Cell){let e=o;e.on(`editend`,()=>{this.focus(),this._updateFocusStyle(),this._updateActiveDescendant()}),e.startEdit()}return{prevent:!0}}let n=this._anchorRecord?t.indexOf(this._anchorRecord):-1,r=this.computePageSize(),i,a;e.key===`ArrowDown`?(i=n<0?0:Math.min(n+1,t.length-1),a=1):e.key===`ArrowUp`?(i=n<0?0:Math.max(n-1,0),a=-1):e.key===`PageDown`?(i=n<0?0:Math.min(n+r,t.length-1),a=1):e.key===`PageUp`?(i=n<0?0:Math.max(n-r,0),a=-1):e.key===`Home`?(i=0,a=1):(i=t.length-1,a=-1),this._rowSeparator&&(i=this.skipSeparators(t,i,a));let o=t[i];return this.selectRecord(o),this.scrollRecordIntoView(o),this.renderWindow(),this._updateActiveDescendant(),{prevent:!0}}scrollRecordIntoView(e){this.scrollRowIntoView(this.getVisibleRecords().indexOf(e))}scrollColumnIntoView(e){let t=this._lastColumnWidths;if(!this._scroller||e<0||e>=t.length)return;let n=0;for(let r=0;r<e;r++)n+=t[r];let r=n+t[e],i=this._scroller.getScrollX(),a=this.getWidth()||0,o=i+a,s=i;n<i?s=n:r>o&&(s=r-a),s!==i&&this.setScrollX(s)}},G=c(kt);_.register(De);var At=`ellipsis-v`,jt=`Column options`,Mt=4,Nt=1,Pt=200,K=`var(--ts-ui-table-header-bg, var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200))))`,TableHeader=class extends f{_model;_store;_hiddenColumns=new Set;_columns=[];_listeners=new p;_menuButton;_boundOnMenuButtonAction=()=>this.onMenuButtonAction();_visibleFields=[];_windowFirst=0;_scrollX=0;_focusedCol=null;_columnsDirty=!0;_geometry={columnWidths:[],viewportWidth:0,columnHeight:0,parentRowHeight:0,filterRowHeight:0};_cellGeom=new CellGeometryCache;_filterRowVisible=!1;_filterStates=new WeakMap;_filterCellsDirty=!0;_filterWindowFirst=0;_pendingFilterField=null;_filterTimer=null;_boundOnStoreFilterChange=()=>this.onStoreFilterChange();_columnConfigs=new Map;_cellText=new CellTextResolver;constructor(e,t){super({tag:`thead`}),this.getAria().setRole(`rowgroup`),this.setBorder({borderBottom:`1px solid var(--ts-ui-table-header-border, black)`}),this.setBackgroundColor(K),this.setBackgroundImage(K),this.setOverflow(`hidden`),this._model=e,this._store=t,this._store.on(`filterchange`,this._boundOnStoreFilterChange);let n=new V,r=new V,i=new V;this.addRow(n),this.addRow(r),this.addRow(i);let a=Math.max(1,12-Mt);this._menuButton=new T({glyph:At,text:jt,showText:!1,flat:!0,compact:!0,zIndex:Nt,listeners:{action:this._boundOnMenuButtonAction}}),this._menuButton.pinGlyphSize(a),this._menuButton.setBackgroundColor(K),this._menuButton.setBackgroundImage(K);let o=`var(--ts-ui-button-hover-bg, rgb(252, 252, 252))`,s=`var(--ts-ui-button-pressed-bg, rgb(200, 200, 200))`;this._menuButton.setHoverBackgroundColor(o),this._menuButton.setHoverBackgroundImage(o),this._menuButton.setPressedBackgroundColor(s),this._menuButton.setPressedBackgroundImage(s),this._menuButton.clearBorder(),this._menuButton.clearHoverBorder(),this._menuButton.clearPressedBorder(),this._menuButton.setShadow(`inset 1px 0 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`),this._menuButton.getAria().setHasPopup(`menu`),super.addComponent(this._menuButton),this.rebuildCells(),this.rebuildParentCells(),this.subscribeTheme(()=>this._cellGeom.clear())}getModel(){return this._model}setStore(e){return this._store.off(`filterchange`,this._boundOnStoreFilterChange),this._store=e,this._store.on(`filterchange`,this._boundOnStoreFilterChange),this}setModel(e){let toNames=e=>e.getFields().slice().filter(e=>!this._hiddenColumns.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()).map(e=>e.getName()),t=toNames(this._model),n=toNames(e);return t.length===n.length&&t.every((e,t)=>e===n[t])||(this._model=e,this.rebuildCells(),this.rebuildParentCells()),this.syncSortIndicators(),this}setHiddenColumns(e){let t=new Set;for(let n of e){let e=this._columns.find(e=>e.getField().getName()===n);(!e||!e.isUnhideable())&&t.add(n)}return this._hiddenColumns=t,this.rebuildCells(),this.rebuildParentCells(),this}setColumns(e){return this._columns=e,this.rebuildCells(),this.rebuildParentCells(),this}setColumnConfigs(e){return this._columnConfigs=e,this}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}getColumns(){return this.getComponents()[1].getComponents()}getColumnWindowStart(){return this._windowFirst}getParentRow(){return this.getComponents()[0]}hasParentRow(){return this._columns.filter(e=>!this._hiddenColumns.has(e.getField().getName())).some(e=>e.getGroup()!==null)}getFilterRow(){return this.getComponents()[2]}hasFilterRow(){return this._filterRowVisible&&this._columns.filter(e=>!this._hiddenColumns.has(e.getField().getName())).some(e=>e.isFilterable())}setFilterRowVisible(e){return e===this._filterRowVisible?this:(this._filterRowVisible=e,this._filterCellsDirty=!0,e||this.clearFilterRowState(),this)}clearFilterRowState(){this._filterTimer!==null&&(clearTimeout(this._filterTimer),this._filterTimer=null),this._pendingFilterField=null;let e=this.filterState(),t=[];for(let n of[...e.keys()])e.delete(n),this._store.getFilter(n)!==null&&t.push([n,null]);t.length>0&&this._store.setFilters(t)}getMenuButton(){return this._menuButton}onMenuButtonAction(){let t=e.source.getViewportRect(this._menuButton);this.emit(`columncontextmenu`,``,t.left,t.bottom)}addRow(e){return this.addComponent(e),this}addComponent(e){return super.addComponent(e),this}setHeight(e){return super.setHeight(e),this}rebuildCells(){this._visibleFields=this.computeVisibleFields(this._model),this._columnsDirty=!0,this._filterCellsDirty=!0,this.syncSortIndicators()}computeVisibleFields(e){return e.getFields().slice().filter(e=>!this._hiddenColumns.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder())}reconcileColumnCells(e,t){let n=this.getComponents()[1];if(!this._columnsDirty&&e===this._windowFirst&&t===this._windowFirst+n.getComponents().length-1)return!1;let r=new Map(this._columns.map(e=>[e.getField().getName(),e])),i=n.getComponents().slice(),a=new Map;for(let e of i){let t=n.getLayoutConstraints(e)?.data;t&&a.set(t.getName(),e)}let o=t-e+1,s=Array(o).fill(void 0);for(let n=e;n<=t;n++){let t=this._visibleFields[n].getName(),r=a.get(t);r&&(s[n-e]=r,a.delete(t))}let c=Array.from(a.values());for(let r=e;r<=t;r++){let t=r-e;if(s[t]!==void 0)continue;let i=this._visibleFields[r],a=c.pop();a?n.setLayoutConstraints(a,{data:i}):(a=new ut(i.getName(),i.getName(),null),n.addComponent(a,{data:i}),this.wireCell(a)),s[t]=a}for(let n=e;n<=t;n++){let t=s[n-e],i=this._visibleFields[n],a=r.get(i.getName());t.setFieldName(i.getName()),t.setHeaderText(a?.getHeaderText()??i.getName());let o=i.getDescription();t.getTooltip()!==o&&t.setTooltip(o);let c=a?.getHeaderGlyph()??null;t.getHeaderGlyph()!==c&&t.setHeaderGlyph(c),t.setBaseBackground(a?.getGroupColor()??null),t.setRequired(a?.isRequired()??!1),t.getAria().setColIndex(n+1)}for(let e of c)n.removeComponent(e),e.dispose();let l=new Map(s.map((e,t)=>[e,t]));return n.sortComponents((e,t)=>(l.get(e)??0)-(l.get(t)??0)),this._windowFirst=e,this._columnsDirty=!1,!0}rebuildParentCells(){let e=this.getParentRow();if(e.disposeAllComponents(),!this.hasParentRow())return;let t=this._columns.filter(e=>!this._hiddenColumns.has(e.getField().getName())).sort((e,t)=>e.getField().getOrder()-t.getField().getOrder());if(t.length===0)return;let n=0,r=t[0].getGroup(),i=t[0].getGroupColor(),flush=a=>{let o=new dt(r??``,i),s=t.slice(n,a).map(e=>e.getField().getName());r!==null&&s.length>0&&o.setTooltip(`${r}: ${s.join(`, `)}`),o.on(`contextmenu`,(e,t)=>{this.emit(`columncontextmenu`,``,e,t)}),e.addComponent(o,{data:{spanFrom:n,spanTo:a-1}})};for(let e=1;e<t.length;e++){let a=t[e].getGroup();a===r?i===null&&t[e].getGroupColor()!==null&&(i=t[e].getGroupColor()):(flush(e),n=e,r=a,i=t[e].getGroupColor())}flush(t.length)}wireCell(e){e.on(`sortclick`,(e,t)=>this.handleSortClick(e,t)),e.on(`resizestart`,t=>this.emit(`columnresizestart`,this.columnIndexOf(e),t)),e.on(`resizedrag`,t=>this.emit(`columnresize`,this.columnIndexOf(e),t)),e.on(`contextmenu`,(e,t,n)=>this.emit(`columncontextmenu`,e,t,n))}columnIndexOf(e){let t=this.getColumns().indexOf(e);return t===-1?-1:this._windowFirst+t}handleSortClick(e,t){if(t){let t=this._store.getActiveSorters(),n=t.findIndex(t=>t.field===e),r;r=n===-1?[...t,{field:e,dir:`asc`}]:t[n].dir===`asc`?t.map((e,t)=>t===n?{field:e.field,dir:`desc`}:e):t.filter((e,t)=>t!==n),r.length===0?this._store.clearSort():this._store.sort(r)}else{let t=this._store.getActiveSorters(),n=t.length===1&&t[0].field===e?t[0]:null;n?n.dir===`asc`?this._store.sort(e,`desc`):this._store.clearSort():this._store.sort(e,`asc`)}this.syncSortIndicators()}syncSortIndicators(){let e=this.getColumns(),t=this._store.getActiveSorters(),n=new Map(t.map((e,t)=>[e.field,{dir:e.dir,priority:t+1}])),r=t.length>1;e.forEach((e,t)=>{let i=this._visibleFields[this._windowFirst+t],a=i?n.get(i.getName()):void 0;a?e.setSortState(a.dir,r?a.priority:null):e.clearSortState()})}filterState(){let e=this._filterStates.get(this._store);return e||(e=new Map,this._filterStates.set(this._store,e)),e}onFilterCellChange(e,t,n){let r=this.filterState().get(e);r&&columnFilterStatesEqual(r,t)&&!n||(this.filterState().set(e,t),this._pendingFilterField!==null&&this._pendingFilterField!==e&&this.applyPendingFilter(),this._filterTimer!==null&&(clearTimeout(this._filterTimer),this._filterTimer=null),this._pendingFilterField=e,n?this.applyPendingFilter():this._filterTimer=setTimeout(()=>this.applyPendingFilter(),Pt))}filterTarget(e){let t=this._model.getField(e);if(!t)return null;let n=this._columnConfigs.get(e);return{type:t.getType(),values:n?.values,showSeconds:n?.showSeconds}}applyPendingFilter(){this._filterTimer!==null&&(clearTimeout(this._filterTimer),this._filterTimer=null);let e=this._pendingFilterField;if(e===null)return;this._pendingFilterField=null;let t=this.filterState().get(e),n=this.filterTarget(e);!t||!n||this._store.setFilter(e,buildColumnFilter(e,n,t,this._cellText))}onStoreFilterChange(){let e=this.filterState();for(let[t,n]of e){if(t===this._pendingFilterField)continue;let r=this.filterTarget(t);r&&buildColumnFilter(t,r,n,this._cellText)!==null&&this._store.getFilter(t)===null&&e.delete(t)}this._filterCellsDirty=!0,this.renderColumnWindow()}wireFilterCell(e){e.on(`filterchange`,(e,t,n)=>this.onFilterCellChange(e,t,n))}reconcileFilterCells(e,t){let n=this.getFilterRow();if(!this.hasFilterRow()){if(n.getComponents().length===0&&!this._filterCellsDirty)return!1;for(let e of n.getComponents().slice())n.removeComponent(e),e.dispose();return this._filterCellsDirty=!1,!0}if(!this._filterCellsDirty&&e===this._filterWindowFirst&&t===this._filterWindowFirst+n.getComponents().length-1)return!1;let r=new Map(this._columns.map(e=>[e.getField().getName(),e])),i=n.getComponents().slice(),a=new Map;for(let e of i){let t=n.getLayoutConstraints(e)?.data;t&&a.set(t.getName(),e)}let o=t-e+1,s=Array(o).fill(void 0);for(let n=e;n<=t;n++){let t=this._visibleFields[n].getName(),r=a.get(t);r&&(s[n-e]=r,a.delete(t))}let c=Array.from(a.values());for(let i=e;i<=t;i++){let t=i-e;if(s[t]!==void 0)continue;let a=this._visibleFields[i],o=r.get(a.getName())?.isFilterable()?columnFilterOperators(a.getType()):[],l=c.pop();l?n.setLayoutConstraints(l,{data:a}):(l=new wt(a.getName(),o),n.addComponent(l,{data:a}),this.wireFilterCell(l)),s[t]=l}for(let n=e;n<=t;n++){let t=s[n-e],i=this._visibleFields[n],a=r.get(i.getName()),o=a?.isFilterable()?columnFilterOperators(i.getType()):[];t.setFieldName(i.getName()),t.setColumnLabel(a?.getHeaderText()??i.getName()),t.setOperators(o);let c=this.filterTarget(i.getName());t.setNumericOnly(c!==null&&columnFilterTakesNumericOperand(c)),t.getAria().setColIndex(n+1),o.length>0&&t.setFilterState(this.filterState().get(i.getName())??{clauses:[{operator:o[0],text:``}]})}for(let e of c)n.removeComponent(e),e.dispose();let l=new Map(s.map((e,t)=>[e,t]));return n.sortComponents((e,t)=>(l.get(e)??0)-(l.get(t)??0)),this._filterWindowFirst=e,this._filterCellsDirty=!1,!0}renderColumnWindow(e){e&&(this._geometry=e);let t=this._geometry,n=computeColumnWindow(this._visibleFields.map((e,n)=>t.columnWidths[n]??0),this._scrollX,t.viewportWidth);return this.reconcileColumnCells(n.firstCol,n.lastCol)&&(this.syncSortIndicators(),this.applyFocusedColumn()),this.positionColumnCells(n,t.columnHeight),this.positionParentCells(n,t.parentRowHeight),this.reconcileFilterCells(n.firstCol,n.lastCol),this.positionFilterCells(n,t.filterRowHeight),this}positionFilterCells(e,t){let n=this.getFilterRow().getComponents();for(let r=0;r<n.length;r++){let i=e.firstCol+r;this._cellGeom.apply(n[r],e.lefts[i]??0,e.widths[i]??0,t)}}positionColumnCells(e,t){let n=this.getColumns();for(let r=0;r<n.length;r++){let i=e.firstCol+r;this._cellGeom.apply(n[r],e.lefts[i]??0,e.widths[i]??0,t)}}positionParentCells(e,t){let n=this.getParentRow();for(let r of n.getComponents()){let i=n.getLayoutConstraints(r)?.data,a=i?.spanFrom??0,o=i?.spanTo??0,s=e.lefts[a]??0,c=(e.lefts[o]??0)+(e.widths[o]??0)-s;this._cellGeom.apply(r,s,c,t)}}setScrollX(e){return e===this._scrollX?this:(this._scrollX=e,this.getParentRow().setTranslate(-e,0),this.getComponents()[1].setTranslate(-e,0),this.getFilterRow().setTranslate(-e,0),this.renderColumnWindow(),this)}getScrollX(){return this._scrollX}setFocusedColumn(e){return this._focusedCol=e,this.applyFocusedColumn(),this}applyFocusedColumn(){let e=this.getColumns();for(let t=0;t<e.length;t++)e[t].setColumnFocused(this._windowFirst+t===this._focusedCol)}destructor(){this._filterTimer!==null&&(clearTimeout(this._filterTimer),this._filterTimer=null),this._store.off(`filterchange`,this._boundOnStoreFilterChange),this._cellText.dispose(),super.destructor()}},q=c(TableHeader),FooterRow=class extends f{constructor(){super({tag:`tfoot`}),this.setBorder({borderTop:`1px solid var(--ts-ui-border-color, black)`});let e=`var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200)))`;this.setBackgroundColor(e),this.setBackgroundImage(e);let t=new V;this.addRow(t)}getColumns(){return this.getComponents()[0].getComponents()}addRow(e){return this.addComponent(e),this}addComponent(e){return super.addComponent(e),this}setWidth(e){return super.setWidth(e),this.getComponents()[0].setWidth(this.getContentBounds()?.width??e),this}setHeight(e){return super.setHeight(e),this.getComponents()[0].setHeight(this.getContentBounds()?.height??e),this}},J=c(FooterRow),Y=class Column{_field;_minWidth;_maxWidth;_width;_maxContentLength;_hidden;_unhideable;_readOnly;_headerGlyph;_headerText;_group;_groupColor;_required;_filterable;constructor(e,t,n){this._field=e,this._minWidth=t?.minWidth,this._maxWidth=t?.maxWidth,this._width=t?.width,this._maxContentLength=t?.maxContentLength,this._hidden=t?.hidden??!1,this._unhideable=t?.unhideable??!1,this._readOnly=t?.readOnly??!1,this._headerGlyph=t?.headerGlyph??null,this._headerText=t?.headerText??null,this._group=t?.group??null,this._groupColor=t?.groupColor??null,this._required=t?.required??!1,this._filterable=t?.filterable??n??!0}getField(){return this._field}getMinWidth(){return this._minWidth}getMaxWidth(){return this._maxWidth}getWidth(){return this._width}getMaxContentLength(){return this._maxContentLength}isInitiallyHidden(){return this._hidden}isUnhideable(){return this._unhideable}isReadOnly(){return this._readOnly}getHeaderGlyph(){return this._headerGlyph}getHeaderText(){return this._headerText}setHeaderGlyph(e){return this._headerGlyph=e,this}clearHeaderGlyph(){return this.setHeaderGlyph(null)}getGroup(){return this._group}getGroupColor(){return this._groupColor}isRequired(){return this._required}isFilterable(){return this._filterable}static resolve(e,t){let n=e.slice().sort((e,t)=>e.getOrder()-t.getOrder());if(!t)return n.map(e=>new Column(e));let r=new Map(t.columns.map(e=>[e.field,e])),i=new Set(t.columns.map(e=>e.field));return t.appendUnlisted===!1?n.filter(e=>i.has(e.getName())).map(e=>new Column(e,r.get(e.getName()),t.filterable)):n.map(e=>new Column(e,r.get(e.getName()),t.filterable))}},X=class TableExporter{static exportCSV(e,t,n,r,i){let a=[e.map(e=>TableExporter.escapeCSVField(e.getField().getName())).join(`,`),...t.map(t=>e.map(e=>TableExporter.escapeCSVField(TableExporter.formatValue(e,t.get(e.getField().getName()),n,r))).join(`,`))].join(`\r
4
- `);TableExporter.download(a,i?.filename??`table-export.csv`,`text/csv;charset=utf-8;`)}static exportJSON(e,t,n,r,i){let a=t.map(t=>Object.fromEntries(e.map(e=>[e.getField().getName(),TableExporter.formatValue(e,t.get(e.getField().getName()),n,r)]))),o=JSON.stringify(a,null,2);TableExporter.download(o,i?.filename??`table-export.json`,`application/json`)}static formatValue(e,t,n,r){if(t==null)return t;let i=n.get(e.getField().getName());if(i?.values&&i.values.length>0)return r.text(`combo`,!1,i.values,t);if(!(t instanceof Date))return t;let a=e.getField().getType();return a!==`date`&&a!==`time`&&a!==`datetime`?t:r.text(a,i?.showSeconds??!1,void 0,t)}static escapeCSVField(e){let t=String(e??``);return t.includes(`,`)||t.includes(`"`)||t.includes(`
5
- `)?`"`+t.replace(/"/g,`""`)+`"`:t}static download(t,n,r){let i=new Blob([t],{type:r}),a=URL.createObjectURL(i),o=e.sink.createElement(`a`);e.sink.apply(o,{setAttr:{href:a,download:n}}),e.sink.appendChild(e.source.getBody(),o),e.sink.click(o),e.sink.removeChild(e.source.getBody(),o),e.sink.release(o),URL.revokeObjectURL(a)}};_.register(Le,Re,ze,Be);var Ft=new me([{name:`field`,type:`string`,order:0},{name:`value`,type:`auto`,order:1},{name:`filler`,type:`string`,order:2}]),It=30,Lt=4,Rt=8,zt=8,Bt=100,Vt=21,Z=6,Ht=400,Ut=50,Q=3,Wt=60,Gt=new Date(2e3,11,31,23,59,59),Kt=.5,qt=20,Jt=15,Yt=24,$=16,Xt=16,Table=class extends f{_store;_spec;_resolvedColumns=[];_hiddenColumns=new Set;_columnContextMenu=new oe;_columnDialog=null;_headerVisible;_header;_body;_bodyVisible;_footer;_footerVisible;_columnWidths=[];_dragEdgeIndex=null;_dragLastClientX=0;_columnWidthTarget=0;_savedColumnWidths=new Map;_columnConfigs=new Map;_exportMenuEnabled=!0;_filterRowVisible=!1;_listeners=new p;_displayMode=`normal`;_rotatedRecord=null;_rowVisible=null;_quickSearch=null;_rotatedStore=null;_rotatedColumns=[];_rotatedConfigs=new Map;_rotatedFieldByName=new Map;_rotatedSeparatorRecords=new Map;_rotatedIndentedRecords=new Set;_sourceRefresh=null;_sourceUpdate=null;_suppressSelectionForward=!1;_autoWidthsSampled=!1;_widthRefs=null;_sampledCandidates=new Map;_cellText=new CellTextResolver;constructor(e,t,n){super({tag:`table`}),this.setLayoutManager(new We),this.getAria().setRole(`grid`),this.setBorder({border:`1px solid var(--ts-ui-border-color, black)`}),this.setInsets(new r(0,0,0,0)),this.setOverflow(`hidden`),this.setMinSize({width:100,height:100}),this._store=e,this._spec=t,this._headerVisible=!0,this._bodyVisible=!0,this._footerVisible=!1,this.bindSourceStore(e),this._resolvedColumns=Y.resolve(e.model.getFields(),t),this.initHiddenFromSpec(),this._header=new q(e.model,e),this._header.on(`columnresizestart`,(e,t)=>this.onColumnResizeStart(e,t)),this._header.on(`columnresize`,(e,t)=>this.onColumnResize(e,t)),this._header.on(`columncontextmenu`,(e,t,n)=>this.showColumnMenu(t,n)),this._header.setWillChange(`transform`),this.addComponent(this._header),this._header.setColumns(this._resolvedColumns),this._body=n?n(e):new G(e),this._body.setHeader(this._header),this.addComponent(this._body),this._body.setColumns(this._resolvedColumns),this._footer=new J,this.addComponent(this._footer);let i=this.getEffectiveHiddenSet();i.size>0&&(this._header.setHiddenColumns(i),this._body.setHiddenColumns(i)),t&&(this._columnConfigs=this.buildColumnConfigs(t),this._body.setColumnConfigs(this._columnConfigs),this._header.setColumnConfigs(this._columnConfigs)),this._body.setRowReadOnly(t?.rowReadOnly??null),this.getAria().setColCount(this.getColumns().length),this._body.on(`horizontalscroll`,e=>{this._header.setScrollX(e)}),this._body.on(`selection`,e=>{this._suppressSelectionForward||this._displayMode===`rotated`||this.emit(`selection`,e)}),this._body.on(`cellclick`,e=>this.emit(`cellclick`,e))}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,t){this._listeners.fire(e,t)}getColumns(){return this._displayMode===`rotated`?this._rotatedColumns:this.getSourceColumns()}getSourceColumns(){let e=this.getEffectiveHiddenSet();return this._resolvedColumns.filter(t=>!e.has(t.getField().getName()))}getDisplayMode(){return this._displayMode}setDisplayMode(e){if(e===this._displayMode)return this;if(this._displayMode=e,e===`rotated`){this._rotatedRecord=this._body.getSelectedRecord()??this._store.getRecords()[0]??null;let e=this.ensureRotatedStore();this.rebuildRotatedStore(),this.bindView(e,this._rotatedColumns,this._rotatedConfigs,new Set,()=>!0,null,e=>this._rotatedSeparatorRecords.get(e)??null,e=>this._rotatedIndentedRecords.has(e)),this.emit(`selection`,this._rotatedRecord?[this._rotatedRecord]:[])}else this.bindView(this._store,this.getSourceColumns(),this._columnConfigs,this.getEffectiveHiddenSet(),this._spec?.rowReadOnly??null,this.composeRowVisible(),null,null),this._body.selectRecord(this._rotatedRecord);return this}setRowVisible(e){return this._rowVisible=e,this.applyRowVisible(),this}setQuickSearch(e,t){let n=(e??``).trim().toLowerCase();return this._quickSearch=n===``?null:{needle:n,requested:t??null,fields:this.resolveSearchFields(t??null),cache:new WeakMap},this.applyRowVisible(),this}resolveSearchFields(e){return e?e.slice():this._resolvedColumns.filter(e=>e.isFilterable()&&columnFilterOperators(e.getField().getType()).includes(`contains`)).map(e=>e.getField().getName())}quickSearchMatches(e,t){let n=e.cache.get(t);return n===void 0&&(n=e.fields.map(e=>this.getCellText(e,t).toLowerCase()).join(`
6
- `),e.cache.set(t,n)),n.includes(e.needle)}composeRowVisible(){let e=this._quickSearch,t=this._rowVisible;if(!e)return t;let matches=t=>this.quickSearchMatches(e,t);return t?e=>matches(e)&&t(e):matches}applyRowVisible(){this._displayMode===`normal`&&this._body.setRowVisible(this.composeRowVisible())}getStore(){return this._store}getModel(){return this._store.model}setStore(e){return this.setDisplayMode(`normal`),this._header.setStore(e),this.unbindSourceStore(this._store),this._store=e,this._columnWidths=[],this._savedColumnWidths=new Map,this._columnWidthTarget=0,this._autoWidthsSampled=!1,this._widthRefs=null,this._sampledCandidates=new Map,this._resolvedColumns=Y.resolve(e.model.getFields(),this._spec),this.bindSourceStore(e),this._body.setStore(e),this._header.setModel(e.model),this._header.setColumns(this._resolvedColumns),this._body.setColumns(this._resolvedColumns),this._header.setHiddenColumns(this.getEffectiveHiddenSet()),this.refreshQuickSearch(),this.getAria().setColCount(this.getColumns().length),this.doLayout(),this}refreshQuickSearch(){this._quickSearch&&(this._quickSearch={needle:this._quickSearch.needle,requested:this._quickSearch.requested,fields:this.resolveSearchFields(this._quickSearch.requested),cache:new WeakMap},this.applyRowVisible())}getColumnWidths(){return this._columnWidths}setColumnWidths(e){this._columnWidths=e;let t=this.getColumns();return e.forEach((e,n)=>{let r=t[n];r&&this._savedColumnWidths.set(r.getField().getName(),e)}),this}getAvailableColumnWidth(){let e=this.getInnerSize();return e?e.width-12:0}getColumnWidthTarget(){return this._columnWidthTarget}setColumnVisible(e,t){if(this._displayMode===`rotated`)return this;if(!t){let t=this._resolvedColumns.find(t=>t.getField().getName()===e);if(t&&t.isUnhideable())return this}t?this._hiddenColumns.delete(e):this._hiddenColumns.add(e),this._widthRefs=null;let n=this.getColumns(),r=null,i=n.map((e,t)=>{let n=this._savedColumnWidths.get(e.getField().getName());return n===void 0?(r??=this.getIntrinsicColumnWidths(),r[t]??this.flexColumnWidth(e)):n}),a=this._columnWidths.reduce((e,t)=>e+t,0),o=i.reduce((e,t)=>e+t,0);this._columnWidths=o>a+.5&&a>0?this.trimToTarget(n,i,a,e):i,this._columnWidthTarget>0&&(this._columnWidthTarget=this._columnWidths.reduce((e,t)=>e+t,0));let s=this.getEffectiveHiddenSet();return this._header.setHiddenColumns(s),this._body.setHiddenColumns(s),this.getAria().setColCount(this.getColumns().length),this.doLayout(),this}getHeader(){return this._header}isHeaderVisible(){return this._headerVisible}isFilterRowVisible(){return this._filterRowVisible}setFilterRowVisible(e){return e===this._filterRowVisible?this:(this._filterRowVisible=e,this._header.setFilterRowVisible(e),this.doLayout(),this)}getBody(){return this._body}isBodyVisible(){return this._bodyVisible}getFooter(){return this._footer}isFooterVisible(){return this._footerVisible}addRow(e={}){let[t]=this._store.add(e);return this._displayMode===`rotated`?(this.selectRecord(t),t):(this._body.scrollToRecord(t),this._body.selectRecord(t),t)}removeSelectedRow(){if(this._displayMode===`rotated`)return this._rotatedRecord&&this._store.remove(this._rotatedRecord),this;let e=this._body.getSelectedRecord();return e?(this._body.selectRecord(null),this._store.remove(e),this):this}selectRecord(e){return this._displayMode===`rotated`?e===this._rotatedRecord?this:(this._rotatedRecord=e,this.rebuildRotatedStore(),this._columnWidths=[],this._savedColumnWidths=new Map,this._columnWidthTarget=0,this.doLayout(),this.emit(`selection`,e?[e]:[]),this):(e&&this._body.scrollToRecord(e),this._body.selectRecord(e),this)}async sync(){return this._store.sync()}reject(){this._store.reject()}getSelectedRecord(){return this._displayMode===`rotated`?this._rotatedRecord:this._body.getSelectedRecord()}getSelectedRecords(){return this._displayMode===`rotated`?this._rotatedRecord?[this._rotatedRecord]:[]:this._body.getSelectedRecords()}addComponent(e,t){return e instanceof q?this._header=e:e instanceof G?this._body=e:e instanceof J&&(this._footer=e),super.addComponent(e,t),this}trimToTarget(e,t,n,r){let i=[...t],isFixedType=e=>{let t=e.getField().getType();return t===`boolean`||t===`number`||t===`date`},trim=(t,n)=>{let r=t.reduce((e,t)=>e+t.room,0);if(r<=0)return n;let a=Math.min(n,r);for(let{i:n,room:o}of t)i[n]=Math.max(i[n]-o/r*a,this.getColumnMinWidth(e[n]));return n-a},pool=t=>e.map((e,n)=>({i:n,room:isFixedType(e)===t&&e.getField().getName()!==r&&this._savedColumnWidths.has(e.getField().getName())?i[n]-this.getColumnMinWidth(e):0})).filter(e=>e.room>.5),a=i.reduce((e,t)=>e+t,0)-n;return a=trim(pool(!1),a),a>.5&&trim(pool(!0),a),i}buildColumnConfigs(e){let t=new Map;for(let n of e.columns)t.set(n.field,n);return t}initHiddenFromSpec(){for(let e of this._resolvedColumns)e.isInitiallyHidden()&&!e.isUnhideable()&&this._hiddenColumns.add(e.getField().getName())}getEffectiveHiddenSet(){let e=new Set(this._resolvedColumns.map(e=>e.getField().getName())),t=new Set(this._hiddenColumns);for(let n of this._store.model.getFields())e.has(n.getName())||t.add(n.getName());return t}bindSourceStore(e){let refresh=()=>this.onSourceStoreChange();this._sourceRefresh=refresh,e.on(`load`,refresh),e.on(`add`,refresh),e.on(`remove`,refresh),e.on(`datachange`,refresh);let invalidate=e=>this.onSourceRecordUpdate(e);this._sourceUpdate=invalidate,e.on(`update`,invalidate)}unbindSourceStore(e){this._sourceRefresh&&([`load`,`add`,`remove`,`datachange`].forEach(t=>e.off(t,this._sourceRefresh)),this._sourceUpdate&&e.off(`update`,this._sourceUpdate))}onSourceStoreChange(){if(this.maybeResampleColumnWidths(),this._displayMode!==`rotated`)return;let e=this._store.getRecords();if(!(this._rotatedRecord!==null&&e.includes(this._rotatedRecord))){let t=this._rotatedRecord;this._rotatedRecord=e[0]??null,this._rotatedRecord!==t&&this.emit(`selection`,this._rotatedRecord?[this._rotatedRecord]:[])}this.rebuildRotatedStore(),this._columnWidths=[],this._savedColumnWidths=new Map,this._columnWidthTarget=0,this.doLayout()}onSourceRecordUpdate(e){this._quickSearch?.cache.delete(e.record)}ensureRotatedStore(){if(this._rotatedStore)return this._rotatedStore;let e={columns:[{field:`field`,minWidth:80,maxWidth:200,unhideable:!0},{field:`value`,minWidth:120,maxWidth:360,unhideable:!0,cellType:e=>this.rotatedCellType(e),cellValues:e=>this.rotatedCellValues(e)},{field:`filler`,headerText:``,minWidth:0,unhideable:!0}],rowReadOnly:()=>!0,filterable:!1};return this._rotatedStore=new he(Ft,[]),this._rotatedStore.on(`sortchange`,()=>this.rebuildRotatedStore()),this._rotatedColumns=Y.resolve(Ft.getFields(),e),this._rotatedConfigs=this.buildColumnConfigs(e),this._rotatedStore}rebuildRotatedStore(){let e=this.ensureRotatedStore(),t=this.getSourceColumns(),n=this._rotatedRecord;this._rotatedFieldByName=new Map(t.map(e=>[e.getField().getName(),e.getField()]));let r=[],i=[],a=[];if(n){let o=e.getActiveSorters().length===0,s=o?this.computeGroupRuns(t):new Map;for(let e=0;e<t.length;e++){let c=s.get(e);c&&(r.push({field:c.label,value:null}),i.push(c),a.push(!1));let l=t[e].getField();r.push({field:l.getName(),value:n.get(l.getName())}),i.push(null),a.push(o&&t[e].getGroup()!==null)}}e.loadData(r),this._rotatedSeparatorRecords=new Map,this._rotatedIndentedRecords=new Set,e.getRecords().forEach((e,t)=>{let n=i[t];n&&this._rotatedSeparatorRecords.set(e,n),a[t]&&this._rotatedIndentedRecords.add(e)})}computeGroupRuns(e){let t=new Map;if(e.length===0)return t;let n=0,r=e[0].getGroup(),i=e[0].getGroupColor(),flush=()=>{r!==null&&t.set(n,{label:r,color:i})};for(let t=1;t<e.length;t++){let a=e[t].getGroup();r===null||a!==r?(flush(),n=t,r=a,i=e[t].getGroupColor()):i===null&&e[t].getGroupColor()!==null&&(i=e[t].getGroupColor())}return flush(),t}rotatedCellType(e){let t=this._rotatedFieldByName.get(e.get(`field`));if(!t)return null;let n=this._columnConfigs.get(t.getName())?.values;return n&&n.length>0?`combo`:t.getType()}rotatedCellValues(e){let t=this._rotatedFieldByName.get(e.get(`field`));return t?this._columnConfigs.get(t.getName())?.values:void 0}bindView(e,t,n,r,i,a,o,s){this._suppressSelectionForward=!0,this._header.setStore(e),this._header.setModel(e.model),this._header.setColumns(t),this._header.setHiddenColumns(r),this._body.selectRecord(null),this._body.setStore(e),this._body.setColumnConfigs(n),this._header.setColumnConfigs(n),this._body.setColumns(t),this._body.setHiddenColumns(r),this._body.setRowReadOnly(i),this._body.setRowVisible(a),this._body.setRowSeparator(o),this._body.setRowIndented(s),this._body.setStore(e),this._suppressSelectionForward=!1,this._columnWidths=[],this._savedColumnWidths=new Map,this._columnWidthTarget=0,this._widthRefs=null,this.getAria().setColCount(this.getColumns().length),this.doLayout()}destructor(){this._columnDialog?.dispose(),this._columnContextMenu.dispose(),this._cellText.dispose(),super.destructor()}showColumnMenu(e,t){if(this._displayMode===`rotated`){if(!this._exportMenuEnabled)return;this._columnContextMenu.show(e,t,[{text:`Export as CSV`,glyph:`file-csv`,action:()=>this.exportCSV()},{text:`Export as JSON`,glyph:`file-code`,action:()=>this.exportJSON()}]);return}let n=this.columnsInMenuOrder(),r=[];n.length>0&&r.push(n.length>qt?{text:`Show/hide columns`,glyph:`table-columns`,action:()=>this.showColumnDialog()}:{text:`Show/hide columns`,glyph:`table-columns`,submenu:{label:`Show/hide columns`,items:this.buildColumnMenuItems(n)}}),r.push({separator:!0},{text:`Reset columns`,glyph:`undo`,action:()=>this.resetColumns()}),this._resolvedColumns.some(e=>e.isFilterable())&&r.push({separator:!0},{row:()=>{let e=new ne({text:`Filter`,checked:this._filterRowVisible});return e.on(`action`,()=>{this.setFilterRowVisible(e.isChecked())}),e}}),this._exportMenuEnabled&&r.push({separator:!0},{text:`Export as CSV`,glyph:`file-csv`,action:()=>this.exportCSV()},{text:`Export as JSON`,glyph:`file-code`,action:()=>this.exportJSON()}),this._columnContextMenu.show(e,t,r)}columnsInMenuOrder(){return this._resolvedColumns.slice().sort((e,t)=>e.getField().getOrder()-t.getField().getOrder())}buildColumnMenuItems(e){let t=[],n;for(let r of e){let e=r.getField().getName(),i=!this._hiddenColumns.has(e),a=r.getGroup();a!==n&&(t.length>0&&t.push({separator:!0}),a!==null&&t.push({text:a,enabled:!1}));let o=(a===null?``:`\xA0\xA0\xA0\xA0`)+e,s=!r.isUnhideable();t.push({row:()=>{let t=new ne({text:o,checked:i,enabled:s});return t.on(`action`,()=>{this.setColumnVisible(e,t.isChecked())}),t}}),n=a}return t}showColumnDialog(){let e=this.columnsInMenuOrder(),t=new Set(this._hiddenColumns),n=new Set(t),r=this.buildColumnDialogBody(e,n),i=Math.ceil(r.getPreferredSize()?.width??0),a=new le({title:`Show/hide columns`,contentComponent:r,width:i,buttons:[se.Cancel,{...se.Confirm,text:`Apply`,primary:!0}]});this._columnDialog=a,a.show().then(r=>{if(this._columnDialog=null,r===`confirm`)for(let r of e){let e=r.getField().getName();n.has(e)!==t.has(e)&&this.setColumnVisible(e,!n.has(e))}})}dialogColumnCount(e){return Math.max(1,Math.ceil(e/Jt))}splitIntoDialogColumns(e){let t=this.dialogColumnCount(e.length),n=Math.floor(e.length/t),r=e.length%t,i=[],a=0;for(let o=0;o<t;o++){let t=n+ +(o<r);i.push(e.slice(a,a+t)),a+=t}return i}buildColumnDialogBody(e,t){let n=this.splitIntoDialogColumns(e).map(e=>this.buildColumnDialogColumn(e,t));return new f({layoutManager:new S({itemAlign:`start`,justify:`center`,spacing:Yt}),insets:new r($,$,$,$),components:n})}buildColumnDialogColumn(e,t){let n=[],i;for(let a of e){let e=a.getField().getName(),o=a.getGroup();if(o!==i&&o!==null){let e=new x(o,{fontWeight:`bold`});n.push(e)}n.push(new ee({label:e,selected:!t.has(e),enabled:!a.isUnhideable(),insets:o===null?void 0:new r(0,0,0,Xt),listeners:{change:n=>{n?t.delete(e):t.add(e)}}})),i=o}return new f({layoutManager:new te({itemAlign:`stretch`}),components:n})}setExportMenuEnabled(e){return this._exportMenuEnabled=e,this}exportCSV(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();X.exportCSV(t,n,this._columnConfigs,this._cellText,e)}exportJSON(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();X.exportJSON(t,n,this._columnConfigs,this._cellText,e)}getExportColumns(e){return e?this._resolvedColumns.slice():this.getSourceColumns()}getCellText(e,t){let n=this._resolvedColumns.find(t=>t.getField().getName()===e);return n?String(X.formatValue(n,t.get(e),this._columnConfigs,this._cellText)??``):``}onColumnResizeStart(e,t){e<0||e>=this._columnWidths.length||(this._dragEdgeIndex=e,this._dragLastClientX=t)}onColumnResize(e,t){if(this._dragEdgeIndex===null||e!==this._dragEdgeIndex)return;let n=this._columnWidths,r=this.getColumns(),i=r.map(e=>e.getMinWidth()??It),a=r.map(e=>e.getMaxWidth()??1/0),o=[],s=[];for(let t=e;t>=0;t--)o.push(t);for(let t=e+1;t<n.length;t++)s.push(t);let c=t-this._dragLastClientX,l=c>=0?1:-1,u=this.getAvailableColumnWidth(),d=n.reduce((e,t)=>e+t,0),f=Math.max(0,d-u),p=l>0?Math.min(c,E(o,n,1,i,a)):Math.min(-c,E(o,n,-1,i,a),E(s,n,1,i,a)+f);if(p<=1e-6)return;let m=l>0?f>Kt?0:p:p-Math.min(p,f),h=n.slice();fe(o,n,p,l,i,a,h),fe(s,n,m,-l,i,a,h),this._dragLastClientX+=l*p,this._columnWidths=h;let g=h.reduce((e,t)=>e+t,0);this._columnWidthTarget=g>u+Kt?g:0,this.scheduleLayout()}resetColumns(){this._hiddenColumns=new Set,this.initHiddenFromSpec(),this._savedColumnWidths=new Map,this._columnWidthTarget=0,this._widthRefs=null;let e=this.getColumns(),t=this.getIntrinsicColumnWidths();this._columnWidths=e.map((e,n)=>t[n]??this.flexColumnWidth(e));let n=this.getEffectiveHiddenSet();this._header.setHiddenColumns(n),this._body.setHiddenColumns(n),this.doLayout()}isAutoSizeColumns(){return(this._spec?.autoSizeColumns??!1)&&this._displayMode!==`rotated`}getColumnMinWidth(e){return e.getMinWidth()??this.columnWidthPolicy(e,0,null).min}getIntrinsicColumnWidths(){let e=this.getColumns(),t=this.measureHeaders(e),n=this.measureContent(e);return e.map((e,r)=>{let i=this.columnWidthPolicy(e,t[r],n[r]),a=e.getWidth()??i.preferred;return a===null?null:this.clampColumnWidth(a,e,i)})}clampColumnWidth(e,t,r){return n.clamp(e,t.getMinWidth()??r.min,t.getMaxWidth()??Ht)}flexColumnWidth(e){let t=this.measureHeaders([e])[0],n=this.columnWidthPolicy(e,t,null);return this.clampColumnWidth(Math.max(Bt,t),e,n)}measureHeaders(e){let t=e.map(e=>e.getHeaderText()??e.getField().getName());return n.measureTextWidths(t,{fontSize:`var(--ts-ui-table-header-font-size, var(--ts-ui-font-size))`,fontWeight:`bold`}).map(e=>e+Vt)}measureContent(e){this.collectCandidates(e);let t=e.map(e=>this.resolveContentCandidates(e)),r=[],i=[];t.forEach((e,t)=>{e?.forEach(e=>{i.push(t),r.push(e)})});let a=n.measureTextWidths(r),o=e.map(()=>null);return a.forEach((e,t)=>{let n=i[t];o[n]=Math.max(o[n]??0,e)}),o}resolveContentCandidates(e){let t=e.getField().getType();if(t!==`string`&&t!==`auto`)return null;if(this._displayMode===`rotated`)return this.resolveRotatedContentCandidates(e);if(!this.isAutoSizeColumns())return null;let n=this._sampledCandidates.get(e.getField().getName());if(n&&n.length>0)return n;let r=this._columnConfigs.get(e.getField().getName());if(r?.values&&r.values.length>0)return normalizeComboOptions(r.values).map(e=>e.label).sort((e,t)=>t.length-e.length).slice(0,Q);let i=e.getMaxContentLength();return i===void 0?null:[`0`.repeat(Math.min(i,Wt))]}resolveRotatedContentCandidates(e){let t=e.getField().getName();if(t!==`field`&&t!==`value`)return null;let n=this.ensureRotatedStore().getRecords(),r=t===`value`?new Map(this.getSourceColumns().map(e=>[e.getField().getName(),e])):null,i=[];for(let e of n){let n=t===`field`?String(e.get(`field`)??``):this.formatRotatedValueText(e,r);n!==null&&this.keepLongest(i,n)}return i.length>0?i:null}formatRotatedValueText(e,t){let n=this.rotatedCellType(e);if(n===`boolean`||n===`glyph`)return null;if(n===`combo`){let t=new Map(normalizeComboOptions(this.rotatedCellValues(e)??[]).map(e=>[e.value,e.label])),n=String(e.get(`value`)??``);return t.get(n)??n}let r=t.get(e.get(`field`));return r?String(X.formatValue(r,e.get(`value`),new Map,this._cellText)??``):null}collectCandidates(e){let t=e.map(e=>this.samplesRecordText(e)),n=Math.min(Ut,this._store.getCount()),r=new Map;for(let i=0;i<n;i++){let n=this._store.getAt(i);e.forEach((e,i)=>{if(!t[i])return;let a=e.getField().getName(),o=n.get(a),s=String(X.formatValue(e,o,this._columnConfigs,this._cellText)??``),c=r.get(a)??[];this.keepLongest(c,s),r.set(a,c)})}n>0&&(this._autoWidthsSampled=!0),this._sampledCandidates=r}keepLongest(e,t){e.includes(t)||(e.push(t),e.sort((e,t)=>t.length-e.length),e.length>Q&&(e.length=Q))}samplesRecordText(e){let t=this._columnConfigs.get(e.getField().getName());if(t?.renderer||t?.values&&t.values.length>0)return!1;let n=e.getField().getType();return n===`number`||(n===`string`||n===`auto`)&&this.isAutoSizeColumns()}sampledDigits(e){let t=this._sampledCandidates.get(e.getField().getName());return!t||t.length===0?null:Math.max(...t.map(e=>e.length))}showsSeconds(e){return this._columnConfigs.get(e.getField().getName())?.showSeconds??!1}columnWidthPolicy(e,t,n){let r=this.ensureWidthReferences(),i=e.getField().getType();switch(i){case`boolean`:return{min:22,preferred:Math.max(22,t)};case`glyph`:return{min:26,preferred:Math.max(26,t)};case`date`:case`time`:case`datetime`:{let n=`${i}:${this.showsSeconds(e)}`,a=(r.datePx.get(n)??0)+Z;return{min:a,preferred:Math.max(a,t)}}case`number`:{let n=r.digitPx*Lt+Z,i=e.getMaxContentLength()??this.sampledDigits(e)??Rt;return{min:n,preferred:Math.max(n,r.digitPx*i+Z,t)}}default:{let i=Math.max(It,r.digitPx*zt+Z);if(n===null)return{min:i,preferred:null};let a=this._displayMode===`rotated`&&e.getField().getName()===`field`&&this._rotatedIndentedRecords.size>0?16:0;return{min:i,preferred:Math.max(i,n+Z+a,t)}}}}ensureWidthReferences(){if(this._widthRefs)return this._widthRefs;let e=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],t=this.dateReferenceKeys(),r=n.measureTextWidths([...e,...t.flatMap(e=>e.texts)]),i=new Map,a=e.length;for(let e of t)i.set(e.key,Math.max(...r.slice(a,a+e.texts.length))),a+=e.texts.length;return this._widthRefs={digitPx:Math.max(...r.slice(0,e.length)),datePx:i},this._widthRefs}dateReferenceKeys(){let e=[`0`,`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],t=new Map;for(let n of this.getColumns()){let r=n.getField().getType();if(r!==`date`&&r!==`time`&&r!==`datetime`)continue;let i=`${r}:${this.showsSeconds(n)}`;if(!t.has(i)){let r=String(X.formatValue(n,Gt,this._columnConfigs,this._cellText)??``);t.set(i,[r,...e.map(e=>r.replace(/\d/g,e))])}}return Array.from(t,([e,t])=>({key:e,texts:t}))}maybeResampleColumnWidths(){!this.isAutoSizeColumns()||this._autoWidthsSampled||this._store.getCount()===0||(this._columnWidths=[],this._savedColumnWidths=new Map,this._columnWidthTarget=0,this._widthRefs=null,this.doLayout())}},Zt=c(Table);_.register(A,Ve,Te,k);var TablePanel=class extends g{_table;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;constructor(e,t){super(),this.setLayoutManager(new ie),this._toolbar=new f,this._toolbar.setLayoutManager(new S);let n=new T({glyph:`plus`});n.setPreferredSize({width:28,height:28}),n.on(`action`,()=>{this._table.addRow()}),y.attach(n,`Add row`),this._toolbar.addComponent(n);let r=new T({glyph:`minus`});r.setPreferredSize({width:28,height:28}),r.on(`action`,()=>{this._table.removeSelectedRow()}),y.attach(r,`Remove selected row`),this._toolbar.addComponent(r),this._syncBtn=new T({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize({width:28,height:28}),this._syncBtn.on(`action`,()=>{this._table.sync()}),y.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new T({glyph:`ban`}),this._rejectBtn.setPreferredSize({width:28,height:28}),this._rejectBtn.on(`action`,()=>this._table.reject()),y.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._table=new Zt(e,t),super.addComponent(this._toolbar,{placement:w.NORTH}),super.addComponent(this._table,{placement:w.CENTER}),e.on(`loadingchange`,e=>{this._spinner||=new re(24),e.loading?this._spinner.showOverlay(this._table):this._spinner.hideOverlay()});let refreshSyncButtons=()=>this.refreshSyncButtons();e.on(`add`,refreshSyncButtons),e.on(`remove`,refreshSyncButtons),e.on(`datachange`,refreshSyncButtons),e.on(`sync`,refreshSyncButtons),e.on(`load`,refreshSyncButtons),this.refreshSyncButtons()}refreshSyncButtons(){let e=this._table.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTable(){return this._table}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._table.setExportMenuEnabled(e),this}exportCSV(e){this._table.exportCSV(e)}exportJSON(e){this._table.exportJSON(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:w.SOUTH}),this}getPaginationBar(){return this._paginationBar}},Qt=c(TablePanel),TreeBody=class extends kt{_byId=new Map;_childIds=new Map;_expanded=new Set;_flatRows=[];_rowDnDTeardowns=new Map;_emptyAreaDropTeardown=null;_reparentHandler=null;_reparentValidator=null;constructor(e,t){super(e),this._idField=t.idField,this._parentField=t.parentField,this._treeColumn=t.treeColumn,this._indentPx=t.indentPx,this.rebuildIndex(),this.flatten()}getIdField(){return this._idField}getParentField(){return this._parentField}getTreeColumn(){return this._treeColumn}getFlatRecords(){return this._flatRows}getRecordById(e){return this._byId.get(e)}getChildrenOf(e){return this._childIds.get(e)??[]}isDirectoryRecord(e){return this.getChildrenOf(e.get(this._idField)).length>0}isAncestorOf(e,t){if(e===t)return!0;let n=e.get(this._idField),r=t,i=new Set;for(;r;){let e=r.get(this._parentField);if(e==null)return!1;if(e===n)return!0;if(i.has(e))return!1;i.add(e),r=this._byId.get(e)}return!1}isExpanded(e){let t=e.get(this._idField),n=this._childIds.get(t);return!!n&&n.length>0&&this._expanded.has(t)}setExpanded(e,t){let n=e.get(this._idField),r=this._childIds.get(n);if(!r||r.length===0)return this;if(t){if(this._expanded.has(n))return this;this._expanded.add(n)}else{if(!this._expanded.has(n))return this;this._expanded.delete(n)}return this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}expandToDepth(e){this._expanded.clear();let recurse=(t,n)=>{if(!(n>e))for(let e of t){let t=e.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&(this._expanded.add(t),recurse(r,n+1))}};return recurse(this._childIds.get(null)??[],0),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}collapseAll(){return this._expanded.size===0?this:(this._expanded.clear(),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this)}expandAll(){let e=new Set;for(let[t,n]of this._childIds)t!==null&&n.length>0&&e.add(t);let t=this._childIds.get(null)??[];for(let n of t){let t=n.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&e.add(t)}return this._expanded=e,this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}getToggleElement(e){let t=e.getTreeCell();if(!t)return null;let n=t.getRenderer();if(!(n instanceof B))return null;let r=n.getToggle();return r?r.getElement()??null:null}init(e){return super.init(e),this.ensureEmptyAreaDropTarget(),this}onStoreChange(){this.rebuildIndex(),this.flatten(),super.onStoreChange()}getVisibleRecords(){return this._flatRows.map(e=>e.record)}createRow(){return new V(this.getStore().model,void 0,this.getHiddenColumns(),this.getColumnConfigs(),e=>this.getStore().notifyRecordChanged(e),this._treeColumn)}getTreeFieldName(){return this._treeColumn}computeRowAria(e,t){super.computeRowAria(e,t);let n=this._flatRows[t];n&&(e.getAria().setLevel(n.depth+1),e.getAria().setExpanded(n.hasChildren?n.expanded:null),e.getAria().setSetSize(n.siblingCount),e.getAria().setPosInSet(n.posInSet))}afterRowBound(e,t,n){let r=e.getTreeCell(),i=this._flatRows[t];if(r&&i&&r.getRenderer().setTreeState(i.depth,i.hasChildren,i.expanded),this._reparentHandler!==null){if(!i){this.teardownRowDnD(e);return}(n||!this._rowDnDTeardowns.has(e))&&this.installRowDnD(e,i.record)}}installRowDnD(e,t){this.teardownRowDnD(e);let n=C.makeDragSource(e,{dragData:{recordId:t.get(this._idField)}}),dropTargetForRow=e=>this.resolveDragged(e)?this.resolveDropParentForRow(t):null,r=C.makeDropTarget(e,{accepts:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentValidator?.(t,n)??!1},onDrop:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentHandler?.(t,n)??!1}});this._rowDnDTeardowns.set(e,()=>{n(),r()})}resolveDragged(e){let t=e.dragData.recordId;return this._byId.get(t)}resolveDropParentForRow(e){if(this.isDirectoryRecord(e))return e;let t=e.get(this._parentField);return t==null?null:this._byId.get(t)??null}teardownRowDnD(e){let t=this._rowDnDTeardowns.get(e);t&&(t(),this._rowDnDTeardowns.delete(e))}setReparentHandlers(e,t){return this._reparentValidator=e,this._reparentHandler=t,this.getElement()&&this.ensureEmptyAreaDropTarget(),this}ensureEmptyAreaDropTarget(){this._emptyAreaDropTeardown===null&&this._reparentHandler!==null&&(this._emptyAreaDropTeardown=C.makeDropTarget(this,{accepts:e=>{let t=this.resolveDragged(e);return t?this._reparentValidator?.(t,null)??!1:!1},onDrop:e=>{let t=this.resolveDragged(e);return t?this._reparentHandler?.(t,null)??!1:!1}}))}onSubtreeClick(t){let n=t.target===null?null:e.source.intern(t.target);for(let t of this.getRowPool()){let r=this.getToggleElement(t);if(r&&n!==null&&(n===r||e.source.contains(r,n))){let e=t.getData();e&&this.setExpanded(e,!this.isExpanded(e));return}}super.onSubtreeClick(t)}onKeyDown(e){if(e.key!==`ArrowRight`&&e.key!==`ArrowLeft`)return super.onKeyDown(e);let t=this.getSelectedRecord();if(!t)return super.onKeyDown(e);let n=this._flatRows.findIndex(e=>e.record===t);if(n<0)return{prevent:!0};let r=this._flatRows[n];return e.key===`ArrowRight`?this.handleArrowRight(r,n):this.handleArrowLeft(r,n),{prevent:!0}}handleArrowRight(e,t){if(!e.hasChildren)return;if(!e.expanded){this.setExpanded(e.record,!0);return}let n=this._flatRows[t+1];n&&n.depth===e.depth+1&&this.moveFocusTo(n.record)}handleArrowLeft(e,t){if(e.hasChildren&&e.expanded){this.setExpanded(e.record,!1);return}if(e.depth!==0){for(let n=t-1;n>=0;n--)if(this._flatRows[n].depth===e.depth-1){this.moveFocusTo(this._flatRows[n].record);return}}}moveFocusTo(e){this.selectRecord(e),this.scrollRecordIntoView(e),this.renderWindow(),this._updateActiveDescendant(),this._updateFocusStyle()}rebuildIndex(){this._byId.clear(),this._childIds.clear();let e=this.getStore().getRecords();for(let t of e){let e=t.get(this._idField);this._byId.set(e,t)}for(let t of e){let e=t.get(this._parentField),n=e!=null&&this._byId.has(e)?e:null,r=this._childIds.get(n);r?r.push(t):this._childIds.set(n,[t])}}flatten(){let e=[],recurse=(t,n)=>{let r=t.length;for(let i=0;i<t.length;i++){let a=t[i],o=a.get(this._idField),s=this._childIds.get(o),c=!!s&&s.length>0,l=c&&this._expanded.has(o);e.push({record:a,depth:n,hasChildren:c,expanded:l,siblingCount:r,posInSet:i+1}),l&&recurse(s,n+1)}};recurse(this._childIds.get(null)??[],0),this._flatRows=e}},$t=c(TreeBody),en=16,tn=c(class TreeTable extends Zt{_treeSpec;_treeBody;_rowReparentWrappers=new Map;constructor(e,t){let n=t.indentPx??en,r=TreeTable.markTreeColumnUnhideable(t);super(e,r,e=>new $t(e,{idField:t.idField,parentField:t.parentField,treeColumn:t.treeColumn,indentPx:n})),this._treeSpec=t,this._treeBody=this.getBody(),this.getAria().setRole(`treegrid`),this._treeBody.setReparentHandlers((e,t)=>this.canReparent(e,t),(e,t)=>this.reparentRow(e,t))}static markTreeColumnUnhideable(e){let t=e.columns.find(t=>t.field===e.treeColumn)?e.columns.map(t=>t.field===e.treeColumn?{...t,unhideable:!0}:t):[...e.columns,{field:e.treeColumn,unhideable:!0}];return{...e,columns:t}}getBody(){return super.getBody()}getTreeSpec(){return this._treeSpec}setExpanded(e,t){return this._treeBody.setExpanded(e,t),this}isExpanded(e){return this._treeBody.isExpanded(e)}expandToDepth(e){return this._treeBody.expandToDepth(e),this}collapseAll(){return this._treeBody.collapseAll(),this}expandAll(){return this._treeBody.expandAll(),this}addRow(e={},t){let n=t?{...e,[this._treeSpec.parentField]:t.get(this._treeSpec.idField)}:e;return super.addRow(n)}getRecordById(e){return this._treeBody.getRecordById(e)}isDirectoryRecord(e){return this._treeBody.isDirectoryRecord(e)}reparentRow(e,t){if(!this.canReparent(e,t))return!1;let n=this._treeSpec.parentField,r=this._treeSpec.idField,a=e.get(n),o=a==null?null:this._treeBody.getRecordById(a)??null;e.set(n,t===null?null:t.get(r)),this.getStore().notifyRecordChanged(e);let s={record:e,newParent:t,oldParent:o};return i.fireEvent(this,`rowreparent`,{detail:s}),!0}canReparent(e,t){return!(!this._treeBody.getRecordById(e.get(this._treeSpec.idField))||e.get(this._treeSpec.parentField)===(t===null?null:t.get(this._treeSpec.idField))||t!==null&&this._treeBody.isAncestorOf(e,t))}addRowReparentListener(e){if(this._rowReparentWrappers.has(e))return this;let wrapper=t=>e(t.detail);return this._rowReparentWrappers.set(e,wrapper),i.addListener(this,`rowreparent`,wrapper),this}removeRowReparentListener(e){let t=this._rowReparentWrappers.get(e);return t?(i.removeListener(this,`rowreparent`,t),this._rowReparentWrappers.delete(e),this):this}});_.register(A,Ve,Te,k);var TreeTablePanel=class extends g{_treeTable;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;constructor(e,t){super(),this.setLayoutManager(new ie),this._toolbar=new f,this._toolbar.setLayoutManager(new S);let n=new T({glyph:`plus`});n.setPreferredSize({width:28,height:28}),n.on(`action`,()=>{this.addRowUnderSelection()}),y.attach(n,`Add row`),this._toolbar.addComponent(n);let r=new T({glyph:`minus`});r.setPreferredSize({width:28,height:28}),r.on(`action`,()=>{this._treeTable.removeSelectedRow()}),y.attach(r,`Remove selected row`),this._toolbar.addComponent(r),this._syncBtn=new T({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize({width:28,height:28}),this._syncBtn.on(`action`,()=>{this._treeTable.sync()}),y.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new T({glyph:`ban`}),this._rejectBtn.setPreferredSize({width:28,height:28}),this._rejectBtn.on(`action`,()=>this._treeTable.reject()),y.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._treeTable=new tn(e,t),super.addComponent(this._toolbar,{placement:w.NORTH}),super.addComponent(this._treeTable,{placement:w.CENTER}),e.on(`loadingchange`,e=>{this._spinner||=new re(24),e.loading?this._spinner.showOverlay(this._treeTable):this._spinner.hideOverlay()});let refreshSyncButtons=()=>this.refreshSyncButtons();e.on(`add`,refreshSyncButtons),e.on(`remove`,refreshSyncButtons),e.on(`datachange`,refreshSyncButtons),e.on(`sync`,refreshSyncButtons),e.on(`load`,refreshSyncButtons),this.refreshSyncButtons()}addRowUnderSelection(){let e=this._treeTable.getSelectedRecord();if(e===null)return this._treeTable.addRow();if(this._treeTable.isDirectoryRecord(e))return this._treeTable.addRow({},e);let t=e.get(this._treeTable.getTreeSpec().parentField),n=t==null?void 0:this._treeTable.getRecordById(t);return this._treeTable.addRow({},n)}refreshSyncButtons(){let e=this._treeTable.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTreeTable(){return this._treeTable}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._treeTable.setExportMenuEnabled(e),this}exportCSV(e){this._treeTable.exportCSV(e)}exportJSON(e){this._treeTable.exportJSON(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:w.SOUTH}),this}getPaginationBar(){return this._paginationBar}},nn=c(TreeTablePanel),LinkCellRenderer=class extends CellRenderer{_text;_value=null;_display=``;constructor(e){super(),this._text=new _e(``,{interactive:!1,foregroundColor:e?.color}),this._text.setAutoMeasure(!1),this.addComponent(this._text),this.setUserSelect(`text`),this._text.setUserSelect(`text`),this.setCursor(`text`)}getText(){return this._text}getValue(){return this._value}setValue(e){this._value=e??null,this._display=this._value===null?``:String(this._value),this._text.setText(this._display)}getDisplayText(){return this._display}},rn=c(LinkCellRenderer);export{G as Body,Je as BooleanCell,j as BooleanEditor,Cell,CellEditor,CellEditorPool,CellRenderer,Y as Column,et as ComboCell,W as ComboEditor,L as ComboRenderer,Xe as DateCell,Dt as DateEditor,P as DateRenderer,Qe as DateTimeCell,U as DateTimeEditor,F as DateTimeRenderer,z as DefaultCell,R as DynamicCell,wt as FilterCell,ft as FilterCellRenderer,J as FooterRow,$e as GlyphCell,I as GlyphRenderer,Ke as GroupSeparatorCell,ut as HeaderCell,rn as LinkCellRenderer,Ye as NumberCell,Et as NumberEditor,N as NumberRenderer,dt as ParentHeaderCell,V as Row,qe as StringCell,Tt as StringEditor,M as StringRenderer,Zt as Table,X as TableExporter,q as TableHeader,Qt as TablePanel,Ze as TimeCell,H as TimeEditor,Ge as TimeRenderer,$t as TreeBody,B as TreeCellRenderer,tn as TreeTable,nn as TreeTablePanel,buildColumnFilter,columnFilterOperatorGlyph,columnFilterOperatorLabel,columnFilterOperators,columnFilterStatesEqual,columnFilterTakesOperand,effectiveClauseCount,isClauseEffective};
1
+ import{t as e}from"../DOM-DDhDN8lQ.js";import{T as t,g as n,t as r}from"../Component-YrLXKJZS.js";import{t as i}from"../Container-C5cxnioS.js";import{t as a}from"../Glyph-Cof7BxfJ.js";import{t as o}from"../Tooltip-DgRHQZhL.js";import{r as s}from"../VBox-hFIZAEpT.js";import{t as c}from"../DragManager-D5pBaPPg.js";import{t as l}from"../ProgressSpinner-BI9tFIVm.js";import{t as u}from"../Placement-7kqdaK4Z.js";import{t as d}from"../Border-BELbqMDJ.js";import{t as f}from"../Button-CKzjQyqA.js";import{A as ee,B as p,C as m,D as h,E as g,F as _,G as te,H as ne,I as re,J as ie,K as ae,L as oe,M as v,N as y,O as b,P as x,R as S,S as C,T as w,U as T,V as E,W as D,X as O,Y as k,_ as A,a as j,b as M,c as N,d as P,f as F,g as I,h as L,i as R,j as z,k as B,l as se,m as V,n as H,o as U,p as W,q as G,r as K,s as ce,t as q,u as le,v as ue,w as de,x as fe,y as pe,z as me}from"../Table-3McEw5gr.js";import{ban as J}from"../glyphs/solid/ban.es.js";import{plus as Y}from"../glyphs/solid/plus.es.js";import{t as he}from"../Link-DE8tE3u3.js";import{arrows_rotate as X}from"../glyphs/solid/arrows_rotate.es.js";import{minus as Z}from"../glyphs/solid/minus.es.js";a.register(Y,Z,X,J);var TablePanel=class extends i{_table;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;_store;_handleLoadingChange;_refreshSyncButtonsBound;constructor(e,t){super(),this._store=e,this._handleLoadingChange=e=>this.handleStoreLoadingChange(e),this._refreshSyncButtonsBound=()=>this.refreshSyncButtons(),this.setLayoutManager(new d),this._toolbar=new r,this._toolbar.setLayoutManager(new s);let n=new f({glyph:`plus`});n.setPreferredSize({width:28,height:28}),n.on(`action`,()=>{this._table.addRow()}),o.attach(n,`Add row`),this._toolbar.addComponent(n);let i=new f({glyph:`minus`});i.setPreferredSize({width:28,height:28}),i.on(`action`,()=>{this._table.removeSelectedRow()}),o.attach(i,`Remove selected row`),this._toolbar.addComponent(i),this._syncBtn=new f({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize({width:28,height:28}),this._syncBtn.on(`action`,()=>{this._table.sync()}),o.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new f({glyph:`ban`}),this._rejectBtn.setPreferredSize({width:28,height:28}),this._rejectBtn.on(`action`,()=>this._table.reject()),o.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._table=new q(e,t),super.addComponent(this._toolbar,{placement:u.NORTH}),super.addComponent(this._table,{placement:u.CENTER}),e.on(`loadingchange`,this._handleLoadingChange),e.on(`add`,this._refreshSyncButtonsBound),e.on(`remove`,this._refreshSyncButtonsBound),e.on(`datachange`,this._refreshSyncButtonsBound),e.on(`sync`,this._refreshSyncButtonsBound),e.on(`load`,this._refreshSyncButtonsBound),this.refreshSyncButtons()}handleStoreLoadingChange(e){this._spinner||=new l(24),e.loading?this._spinner.showOverlay(this._table):this._spinner.hideOverlay()}destructor(){this._store.off(`loadingchange`,this._handleLoadingChange),this._store.off(`add`,this._refreshSyncButtonsBound),this._store.off(`remove`,this._refreshSyncButtonsBound),this._store.off(`datachange`,this._refreshSyncButtonsBound),this._store.off(`sync`,this._refreshSyncButtonsBound),this._store.off(`load`,this._refreshSyncButtonsBound),super.destructor()}refreshSyncButtons(){let e=this._table.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTable(){return this._table}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._table.setExportMenuEnabled(e),this}exportCSV(e){this._table.exportCSV(e)}exportJSON(e){this._table.exportJSON(e)}exportTSV(e){this._table.exportTSV(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:u.SOUTH}),this}getPaginationBar(){return this._paginationBar}},ge=n(TablePanel),TreeBody=class extends U{_byId=new Map;_childIds=new Map;_expanded=new Set;_flatRows=[];_rowDnDTeardowns=new Map;_emptyAreaDropTeardown=null;_reparentHandler=null;_reparentValidator=null;constructor(e,t){super(e),this._idField=t.idField,this._parentField=t.parentField,this._treeColumn=t.treeColumn,this._indentPx=t.indentPx,this.rebuildIndex(),this.flatten()}getIdField(){return this._idField}getParentField(){return this._parentField}getTreeColumn(){return this._treeColumn}getFlatRecords(){return this._flatRows}getRecordById(e){return this._byId.get(e)}getChildrenOf(e){return this._childIds.get(e)??[]}isDirectoryRecord(e){return this.getChildrenOf(e.get(this._idField)).length>0}isAncestorOf(e,t){if(e===t)return!0;let n=e.get(this._idField),r=t,i=new Set;for(;r;){let e=r.get(this._parentField);if(e==null)return!1;if(e===n)return!0;if(i.has(e))return!1;i.add(e),r=this._byId.get(e)}return!1}isExpanded(e){let t=e.get(this._idField),n=this._childIds.get(t);return!!n&&n.length>0&&this._expanded.has(t)}setExpanded(e,t){let n=e.get(this._idField),r=this._childIds.get(n);if(!r||r.length===0)return this;if(t){if(this._expanded.has(n))return this;this._expanded.add(n)}else{if(!this._expanded.has(n))return this;this._expanded.delete(n)}return this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}expandToDepth(e){this._expanded.clear();let recurse=(t,n)=>{if(!(n>e))for(let e of t){let t=e.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&(this._expanded.add(t),recurse(r,n+1))}};return recurse(this._childIds.get(null)??[],0),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}collapseAll(){return this._expanded.size===0?this:(this._expanded.clear(),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this)}expandAll(){let e=new Set;for(let[t,n]of this._childIds)t!==null&&n.length>0&&e.add(t);let t=this._childIds.get(null)??[];for(let n of t){let t=n.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&e.add(t)}return this._expanded=e,this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}getToggleElement(e){let t=e.getTreeCell();if(!t)return null;let n=t.getRenderer();if(!(n instanceof b))return null;let r=n.getToggle();return r?r.getElement()??null:null}init(e){return super.init(e),this.ensureEmptyAreaDropTarget(),this}onStoreChange(){this.rebuildIndex(),this.flatten(),super.onStoreChange()}getVisibleRecords(){return this._flatRows.map(e=>e.record)}createRow(){return new h(this.getStore().model,void 0,this.getHiddenColumns(),this.getColumnConfigs(),e=>this.getStore().notifyRecordChanged(e),this._treeColumn)}getTreeFieldName(){return this._treeColumn}computeRowAria(e,t){super.computeRowAria(e,t);let n=this._flatRows[t];n&&(e.getAria().setLevel(n.depth+1),e.getAria().setExpanded(n.hasChildren?n.expanded:null),e.getAria().setSetSize(n.siblingCount),e.getAria().setPosInSet(n.posInSet))}afterRowBound(e,t,n){let r=e.getTreeCell(),i=this._flatRows[t];if(r&&i&&r.getRenderer().setTreeState(i.depth,i.hasChildren,i.expanded),this._reparentHandler!==null){if(!i){this.teardownRowDnD(e);return}(n||!this._rowDnDTeardowns.has(e))&&this.installRowDnD(e,i.record)}}installRowDnD(e,t){this.teardownRowDnD(e);let n=c.makeDragSource(e,{dragData:{recordId:t.get(this._idField)}}),dropTargetForRow=e=>this.resolveDragged(e)?this.resolveDropParentForRow(t):null,r=c.makeDropTarget(e,{accepts:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentValidator?.(t,n)??!1},onDrop:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentHandler?.(t,n)??!1}});this._rowDnDTeardowns.set(e,()=>{n(),r()})}resolveDragged(e){let t=e.dragData.recordId;return this._byId.get(t)}resolveDropParentForRow(e){if(this.isDirectoryRecord(e))return e;let t=e.get(this._parentField);return t==null?null:this._byId.get(t)??null}teardownRowDnD(e){let t=this._rowDnDTeardowns.get(e);t&&(t(),this._rowDnDTeardowns.delete(e))}setReparentHandlers(e,t){return this._reparentValidator=e,this._reparentHandler=t,this.getElement()&&this.ensureEmptyAreaDropTarget(),this}ensureEmptyAreaDropTarget(){this._emptyAreaDropTeardown===null&&this._reparentHandler!==null&&(this._emptyAreaDropTeardown=c.makeDropTarget(this,{accepts:e=>{let t=this.resolveDragged(e);return t?this._reparentValidator?.(t,null)??!1:!1},onDrop:e=>{let t=this.resolveDragged(e);return t?this._reparentHandler?.(t,null)??!1:!1}}))}onSubtreeClick(t){let n=t.target===null?null:e.source.intern(t.target);for(let t of this.getRowPool()){let r=this.getToggleElement(t);if(r&&n!==null&&(n===r||e.source.contains(r,n))){let e=t.getData();e&&this.setExpanded(e,!this.isExpanded(e));return}}super.onSubtreeClick(t)}onKeyDown(e){if(e.key!==`ArrowRight`&&e.key!==`ArrowLeft`)return super.onKeyDown(e);let t=this.getSelectedRecord();if(!t)return super.onKeyDown(e);let n=this._flatRows.findIndex(e=>e.record===t);if(n<0)return{prevent:!0};let r=this._flatRows[n];return e.key===`ArrowRight`?this.handleArrowRight(r,n):this.handleArrowLeft(r,n),{prevent:!0}}handleArrowRight(e,t){if(!e.hasChildren)return;if(!e.expanded){this.setExpanded(e.record,!0);return}let n=this._flatRows[t+1];n&&n.depth===e.depth+1&&this.moveFocusTo(n.record)}handleArrowLeft(e,t){if(e.hasChildren&&e.expanded){this.setExpanded(e.record,!1);return}if(e.depth!==0){for(let n=t-1;n>=0;n--)if(this._flatRows[n].depth===e.depth-1){this.moveFocusTo(this._flatRows[n].record);return}}}moveFocusTo(e){this.selectRecord(e),this.scrollRecordIntoView(e),this.renderWindow(),this._updateActiveDescendant(),this._updateFocusStyle()}rebuildIndex(){this._byId.clear(),this._childIds.clear();let e=this.getStore().getRecords();for(let t of e){let e=t.get(this._idField);this._byId.set(e,t)}for(let t of e){let e=t.get(this._parentField),n=e!=null&&this._byId.has(e)?e:null,r=this._childIds.get(n);r?r.push(t):this._childIds.set(n,[t])}}flatten(){let e=[],recurse=(t,n)=>{let r=t.length;for(let i=0;i<t.length;i++){let a=t[i],o=a.get(this._idField),s=this._childIds.get(o),c=!!s&&s.length>0,l=c&&this._expanded.has(o);e.push({record:a,depth:n,hasChildren:c,expanded:l,siblingCount:r,posInSet:i+1}),l&&recurse(s,n+1)}};recurse(this._childIds.get(null)??[],0),this._flatRows=e}},Q=n(TreeBody),_e=16,$=n(class TreeTable extends q{_treeSpec;_treeBody;_rowReparentWrappers=new Map;constructor(e,t){let n=t.indentPx??_e,r=TreeTable.markTreeColumnUnhideable(t);super(e,r,e=>new Q(e,{idField:t.idField,parentField:t.parentField,treeColumn:t.treeColumn,indentPx:n})),this._treeSpec=t,this._treeBody=this.getBody(),this.getAria().setRole(`treegrid`),this._treeBody.setReparentHandlers((e,t)=>this.canReparent(e,t),(e,t)=>this.reparentRow(e,t))}static markTreeColumnUnhideable(e){let t=e.columns.find(t=>t.field===e.treeColumn)?e.columns.map(t=>t.field===e.treeColumn?{...t,unhideable:!0}:t):[...e.columns,{field:e.treeColumn,unhideable:!0}];return{...e,columns:t}}getBody(){return super.getBody()}getTreeSpec(){return this._treeSpec}setExpanded(e,t){return this._treeBody.setExpanded(e,t),this}isExpanded(e){return this._treeBody.isExpanded(e)}expandToDepth(e){return this._treeBody.expandToDepth(e),this}collapseAll(){return this._treeBody.collapseAll(),this}expandAll(){return this._treeBody.expandAll(),this}addRow(e={},t){let n=t?{...e,[this._treeSpec.parentField]:t.get(this._treeSpec.idField)}:e;return super.addRow(n)}getRecordById(e){return this._treeBody.getRecordById(e)}isDirectoryRecord(e){return this._treeBody.isDirectoryRecord(e)}reparentRow(e,n){if(!this.canReparent(e,n))return!1;let r=this._treeSpec.parentField,i=this._treeSpec.idField,a=e.get(r),o=a==null?null:this._treeBody.getRecordById(a)??null;e.set(r,n===null?null:n.get(i)),this.getStore().notifyRecordChanged(e);let s={record:e,newParent:n,oldParent:o};return t.fireEvent(this,`rowreparent`,{detail:s}),!0}canReparent(e,t){return!(!this._treeBody.getRecordById(e.get(this._treeSpec.idField))||e.get(this._treeSpec.parentField)===(t===null?null:t.get(this._treeSpec.idField))||t!==null&&this._treeBody.isAncestorOf(e,t))}addRowReparentListener(e){if(this._rowReparentWrappers.has(e))return this;let wrapper=t=>e(t.detail);return this._rowReparentWrappers.set(e,wrapper),t.addListener(this,`rowreparent`,wrapper),this}removeRowReparentListener(e){let n=this._rowReparentWrappers.get(e);return n?(t.removeListener(this,`rowreparent`,n),this._rowReparentWrappers.delete(e),this):this}});a.register(Y,Z,X,J);var TreeTablePanel=class extends i{_treeTable;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;_store;_handleLoadingChange;_refreshSyncButtonsBound;constructor(e,t){super(),this._store=e,this._handleLoadingChange=e=>this.handleStoreLoadingChange(e),this._refreshSyncButtonsBound=()=>this.refreshSyncButtons(),this.setLayoutManager(new d),this._toolbar=new r,this._toolbar.setLayoutManager(new s);let n=new f({glyph:`plus`});n.setPreferredSize({width:28,height:28}),n.on(`action`,()=>{this.addRowUnderSelection()}),o.attach(n,`Add row`),this._toolbar.addComponent(n);let i=new f({glyph:`minus`});i.setPreferredSize({width:28,height:28}),i.on(`action`,()=>{this._treeTable.removeSelectedRow()}),o.attach(i,`Remove selected row`),this._toolbar.addComponent(i),this._syncBtn=new f({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize({width:28,height:28}),this._syncBtn.on(`action`,()=>{this._treeTable.sync()}),o.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new f({glyph:`ban`}),this._rejectBtn.setPreferredSize({width:28,height:28}),this._rejectBtn.on(`action`,()=>this._treeTable.reject()),o.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._treeTable=new $(e,t),super.addComponent(this._toolbar,{placement:u.NORTH}),super.addComponent(this._treeTable,{placement:u.CENTER}),e.on(`loadingchange`,this._handleLoadingChange),e.on(`add`,this._refreshSyncButtonsBound),e.on(`remove`,this._refreshSyncButtonsBound),e.on(`datachange`,this._refreshSyncButtonsBound),e.on(`sync`,this._refreshSyncButtonsBound),e.on(`load`,this._refreshSyncButtonsBound),this.refreshSyncButtons()}handleStoreLoadingChange(e){this._spinner||=new l(24),e.loading?this._spinner.showOverlay(this._treeTable):this._spinner.hideOverlay()}destructor(){this._store.off(`loadingchange`,this._handleLoadingChange),this._store.off(`add`,this._refreshSyncButtonsBound),this._store.off(`remove`,this._refreshSyncButtonsBound),this._store.off(`datachange`,this._refreshSyncButtonsBound),this._store.off(`sync`,this._refreshSyncButtonsBound),this._store.off(`load`,this._refreshSyncButtonsBound),super.destructor()}addRowUnderSelection(){let e=this._treeTable.getSelectedRecord();if(e===null)return this._treeTable.addRow();if(this._treeTable.isDirectoryRecord(e))return this._treeTable.addRow({},e);let t=e.get(this._treeTable.getTreeSpec().parentField),n=t==null?void 0:this._treeTable.getRecordById(t);return this._treeTable.addRow({},n)}refreshSyncButtons(){let e=this._treeTable.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTreeTable(){return this._treeTable}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._treeTable.setExportMenuEnabled(e),this}exportCSV(e){this._treeTable.exportCSV(e)}exportJSON(e){this._treeTable.exportJSON(e)}exportTSV(e){this._treeTable.exportTSV(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:u.SOUTH}),this}getPaginationBar(){return this._paginationBar}},ve=n(TreeTablePanel),ye={cursor:`text`,userSelect:`text`},LinkCellRenderer=class extends G{_text;_value=null;_display=``;constructor(e){super(ye),this._text=new he(``,{interactive:!1,foregroundColor:e?.color}),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getText(){return this._text}getValue(){return this._value}setValue(e){this._value=e??null,this._display=this._value===null?``:String(this._value),this._text.setText(this._display)}getDisplayText(){return this._display}},be=n(LinkCellRenderer);export{j as Body,_ as BooleanCell,ie as BooleanEditor,k as Cell,O as CellEditor,se as CellEditorPool,G as CellRenderer,H as Column,B as ComboCell,N as ComboEditor,p as ComboRenderer,y as DateCell,F as DateEditor,D as DateRenderer,z as DateTimeCell,le as DateTimeEditor,ne as DateTimeRenderer,S as DefaultCell,me as DynamicCell,L as FilterCell,de as FilterCellRenderer,K as FooterRow,ee as GlyphCell,E as GlyphRenderer,oe as GroupSeparatorCell,g as HeaderCell,be as LinkCellRenderer,x as NumberCell,W as NumberEditor,te as NumberRenderer,w as ParentHeaderCell,h as Row,re as StringCell,V as StringEditor,ae as StringRenderer,q as Table,ce as TableExporter,R as TableHeader,ge as TablePanel,v as TimeCell,P as TimeEditor,T as TimeRenderer,Q as TreeBody,b as TreeCellRenderer,$ as TreeTable,ve as TreeTablePanel,I as buildColumnFilter,A as columnFilterOperatorGlyph,ue as columnFilterOperatorLabel,pe as columnFilterOperators,M as columnFilterStatesEqual,fe as columnFilterTakesOperand,C as effectiveClauseCount,m as isClauseEffective};
7
2
  //# sourceMappingURL=table.es.js.map