@jimka/typescript-ui 0.7.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 (296) 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-iZhsvMlT.js → Anchor-DdYgyn2V.js} +2 -2
  6. package/dist/lib/{Anchor-iZhsvMlT.js.map → Anchor-DdYgyn2V.js.map} +1 -1
  7. package/dist/lib/{AnimatedDropdown-D0RhVgv3.js → AnimatedDropdown-_KhHzX5D.js} +2 -2
  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-C20k2YHU.js → Card-CAp7LcB5.js} +2 -2
  14. package/dist/lib/{Card-C20k2YHU.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-FWRjgF6T.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-DyPX8CFh.js → FieldDecorator-37IgKHHm.js} +2 -2
  34. package/dist/lib/{FieldDecorator-DyPX8CFh.js.map → FieldDecorator-37IgKHHm.js.map} +1 -1
  35. package/dist/lib/{Fit-CaPMj7Up.js → Fit-amTWlJM2.js} +2 -2
  36. package/dist/lib/{Fit-CaPMj7Up.js.map → Fit-amTWlJM2.js.map} +1 -1
  37. package/dist/lib/{FloatingPanel-Dsy_vJxi.js → FloatingPanel-CwsFPYbc.js} +2 -2
  38. package/dist/lib/{FloatingPanel-Dsy_vJxi.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-ft_UUpj8.js → Grid-BQZ4UIUH.js} +2 -2
  42. package/dist/lib/{Grid-ft_UUpj8.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-Osm3IjDw.js → Header-Cj33ABP1.js} +2 -2
  46. package/dist/lib/{Header-Osm3IjDw.js.map → Header-Cj33ABP1.js.map} +1 -1
  47. package/dist/lib/{IconText-BBaYJ2Fx.js → IconText-Dp64iq_q.js} +2 -2
  48. package/dist/lib/{IconText-BBaYJ2Fx.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-BqCT-1yv.js → MenuButton-BO4y3jf2.js} +2 -2
  64. package/dist/lib/{MenuButton-BqCT-1yv.js.map → MenuButton-BO4y3jf2.js.map} +1 -1
  65. package/dist/lib/{OverlayFade-CuEXgimf.js → OverlayFade-C1yQKffL.js} +2 -2
  66. package/dist/lib/{OverlayFade-CuEXgimf.js.map → OverlayFade-C1yQKffL.js.map} +1 -1
  67. package/dist/lib/{Panel-CtViePqY.js → Panel-DlsVVuvn.js} +2 -2
  68. package/dist/lib/{Panel-CtViePqY.js.map → Panel-DlsVVuvn.js.map} +1 -1
  69. package/dist/lib/{Position-BIEU1Eze.js → Position-DWR1nIpA.js} +2 -2
  70. package/dist/lib/{Position-BIEU1Eze.js.map → Position-DWR1nIpA.js.map} +1 -1
  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--w28AnXc.js → RovingTabIndex-BttlsARv.js} +2 -2
  78. package/dist/lib/{RovingTabIndex--w28AnXc.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-DVe4UXwX.js → VBox-hFIZAEpT.js} +2 -2
  102. package/dist/lib/{VBox-DVe4UXwX.js.map → VBox-hFIZAEpT.js.map} +1 -1
  103. package/dist/lib/{VirtualScroller-ggPTCQb0.js → VirtualScroller-Csa3GBSM.js} +2 -2
  104. package/dist/lib/{VirtualScroller-ggPTCQb0.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-C7MrKMQr.js.map → selectionsEqual-DWdW5pxP.js.map} +1 -1
  146. package/dist/lib/types/component/button/Button.d.ts +6 -14
  147. package/dist/lib/types/component/button/TabButton.d.ts +3 -5
  148. package/dist/lib/types/component/button/TabCloseButton.d.ts +3 -0
  149. package/dist/lib/types/component/button/ToggleButton.d.ts +2 -5
  150. package/dist/lib/types/component/chart/AbstractChart.d.ts +2 -2
  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/input/AbstractCalendarDropdown.d.ts +4 -4
  167. package/dist/lib/types/component/input/AbstractInput.d.ts +1 -0
  168. package/dist/lib/types/component/input/AbstractPickerField.d.ts +4 -2
  169. package/dist/lib/types/component/input/AutoCompleteDropdown.d.ts +2 -2
  170. package/dist/lib/types/component/input/AutoCompleteField.d.ts +1 -0
  171. package/dist/lib/types/component/input/ComboBox.d.ts +5 -2
  172. package/dist/lib/types/component/input/Link.d.ts +2 -2
  173. package/dist/lib/types/component/input/PasswordField.d.ts +2 -2
  174. package/dist/lib/types/component/input/PickerButton.d.ts +5 -2
  175. package/dist/lib/types/component/input/PickerInput.d.ts +2 -2
  176. package/dist/lib/types/component/input/SelectableText.d.ts +2 -2
  177. package/dist/lib/types/component/input/SpinButton.d.ts +3 -2
  178. package/dist/lib/types/component/input/Text.d.ts +3 -7
  179. package/dist/lib/types/component/input/TextArea.d.ts +2 -2
  180. package/dist/lib/types/component/input/TextField.d.ts +2 -2
  181. package/dist/lib/types/component/input/TextInput.d.ts +4 -2
  182. package/dist/lib/types/component/input/TimePickerDropdown.d.ts +2 -2
  183. package/dist/lib/types/component/input/UsernameField.d.ts +2 -2
  184. package/dist/lib/types/component/list/AbstractMarkerList.d.ts +2 -0
  185. package/dist/lib/types/component/list/AbstractSelectableList.d.ts +4 -2
  186. package/dist/lib/types/component/list/ListItem.d.ts +2 -1
  187. package/dist/lib/types/component/menubar/MenuBarButton.d.ts +3 -0
  188. package/dist/lib/types/component/menubar/ToolBar.d.ts +2 -0
  189. package/dist/lib/types/component/table/Body.d.ts +14 -6
  190. package/dist/lib/types/component/table/Column.d.ts +2 -0
  191. package/dist/lib/types/component/table/ColumnConfig.d.ts +1 -0
  192. package/dist/lib/types/component/table/Footer.d.ts +2 -0
  193. package/dist/lib/types/component/table/Header.d.ts +7 -0
  194. package/dist/lib/types/component/table/Row.d.ts +2 -0
  195. package/dist/lib/types/component/table/Table.d.ts +4 -1
  196. package/dist/lib/types/component/table/TablePanel.d.ts +5 -0
  197. package/dist/lib/types/component/table/TreeTablePanel.d.ts +5 -0
  198. package/dist/lib/types/component/table/cell/Cell.d.ts +3 -2
  199. package/dist/lib/types/component/table/cell/Header.d.ts +4 -3
  200. package/dist/lib/types/component/table/cell/ParentHeader.d.ts +4 -0
  201. package/dist/lib/types/component/tree/TreeRow.d.ts +2 -0
  202. package/dist/lib/types/core/AnimatedDropdown.d.ts +2 -2
  203. package/dist/lib/types/core/Binding.d.ts +1 -0
  204. package/dist/lib/types/core/ClassStyleRules.d.ts +44 -22
  205. package/dist/lib/types/core/Component.d.ts +55 -28
  206. package/dist/lib/types/core/DOM.d.ts +6 -0
  207. package/dist/lib/types/core/Diagnostics.d.ts +22 -0
  208. package/dist/lib/types/core/Event.d.ts +7 -0
  209. package/dist/lib/types/core/LayerManager.d.ts +2 -0
  210. package/dist/lib/types/core/ListenerBag.d.ts +1 -0
  211. package/dist/lib/types/core/StyleTarget.d.ts +12 -0
  212. package/dist/lib/types/core/StyleTraits.d.ts +4 -0
  213. package/dist/lib/types/core/Theme.d.ts +5 -2
  214. package/dist/lib/types/core/index.d.ts +5 -2
  215. package/dist/lib/types/diagnostics/DiagnosticsOverlay.d.ts +29 -0
  216. package/dist/lib/types/diagnostics/DiagnosticsSampler.d.ts +61 -0
  217. package/dist/lib/types/diagnostics/StyleAudit.d.ts +19 -0
  218. package/dist/lib/types/diagnostics/StyleAuditOverlay.d.ts +12 -0
  219. package/dist/lib/types/diagnostics/StyleAuditView.d.ts +13 -0
  220. package/dist/lib/types/diagnostics/index.d.ts +7 -0
  221. package/dist/lib/types/layout/LayoutManager.d.ts +3 -0
  222. package/dist/lib/types/layout/Table.d.ts +1 -0
  223. package/dist/lib/types/overlay/AbstractWindow.d.ts +35 -2
  224. package/dist/lib/types/overlay/ButtonGroup.d.ts +1 -0
  225. package/dist/lib/types/overlay/Dialog.d.ts +1 -0
  226. package/dist/lib/types/overlay/Menu.d.ts +2 -0
  227. package/dist/lib/types/overlay/Notification.d.ts +0 -1
  228. package/dist/lib/types/overlay/PopupPanel.d.ts +2 -2
  229. package/dist/lib/types/overlay/RailHandle.d.ts +4 -5
  230. package/dist/lib/types/overlay/TabWindow.d.ts +3 -0
  231. package/dist/lib/types/overlay/Tooltip.d.ts +1 -0
  232. package/dist/lib/types/overlay/Window.d.ts +4 -1
  233. package/dist/lib/validation.es.js +1 -1
  234. package/llms.txt +2 -0
  235. package/package.json +5 -1
  236. package/dist/lib/AbstractInput-W2PLJV5_.js +0 -2
  237. package/dist/lib/AbstractInput-W2PLJV5_.js.map +0 -1
  238. package/dist/lib/AnimatedDropdown-D0RhVgv3.js.map +0 -1
  239. package/dist/lib/Border-6GsTNV-2.js +0 -2
  240. package/dist/lib/Border-6GsTNV-2.js.map +0 -1
  241. package/dist/lib/Button-CnFAiQuV.js +0 -2
  242. package/dist/lib/Button-CnFAiQuV.js.map +0 -1
  243. package/dist/lib/Checkbox-CM1z8keM.js +0 -2
  244. package/dist/lib/Checkbox-CM1z8keM.js.map +0 -1
  245. package/dist/lib/CheckboxMenuRow-C1h4LPHR.js +0 -2
  246. package/dist/lib/CheckboxMenuRow-C1h4LPHR.js.map +0 -1
  247. package/dist/lib/CodeEditor-CTL2WjF8.js +0 -2
  248. package/dist/lib/CodeEditor-CTL2WjF8.js.map +0 -1
  249. package/dist/lib/ComboBox-PZ5YPL0X.js +0 -2
  250. package/dist/lib/ComboBox-PZ5YPL0X.js.map +0 -1
  251. package/dist/lib/Component-D99-15Zt.js +0 -2
  252. package/dist/lib/Component-D99-15Zt.js.map +0 -1
  253. package/dist/lib/Container-FWRjgF6T.js +0 -2
  254. package/dist/lib/DOM-Cjh7_7TF.js +0 -2
  255. package/dist/lib/DOM-Cjh7_7TF.js.map +0 -1
  256. package/dist/lib/Dialog-DN78RaVH.js +0 -2
  257. package/dist/lib/Dialog-DN78RaVH.js.map +0 -1
  258. package/dist/lib/Glyph-DiEpD3gy.js +0 -2
  259. package/dist/lib/Glyph-DiEpD3gy.js.map +0 -1
  260. package/dist/lib/GridConstraints-CvZ0Nzaw.js +0 -2
  261. package/dist/lib/GridConstraints-CvZ0Nzaw.js.map +0 -1
  262. package/dist/lib/LayoutSerialization-BC64__O7.js +0 -2
  263. package/dist/lib/LayoutSerialization-BC64__O7.js.map +0 -1
  264. package/dist/lib/List-CQbZK_pT.js +0 -2
  265. package/dist/lib/List-CQbZK_pT.js.map +0 -1
  266. package/dist/lib/ListenerBag-WPdKuuds.js +0 -2
  267. package/dist/lib/ListenerBag-WPdKuuds.js.map +0 -1
  268. package/dist/lib/Menu-CwHluLGT.js +0 -2
  269. package/dist/lib/Menu-CwHluLGT.js.map +0 -1
  270. package/dist/lib/ProgressSpinner-BuBvC1FY.js +0 -2
  271. package/dist/lib/ProgressSpinner-BuBvC1FY.js.map +0 -1
  272. package/dist/lib/RadioButton-Df5J-H6m.js +0 -2
  273. package/dist/lib/RadioButton-Df5J-H6m.js.map +0 -1
  274. package/dist/lib/RadioMenuRow-Cfv0x6Qj.js +0 -2
  275. package/dist/lib/RadioMenuRow-Cfv0x6Qj.js.map +0 -1
  276. package/dist/lib/Scrollbar-DcnueNJd.js +0 -2
  277. package/dist/lib/Scrollbar-DcnueNJd.js.map +0 -1
  278. package/dist/lib/SelectableText-DZNxjKXR.js +0 -2
  279. package/dist/lib/SelectableText-DZNxjKXR.js.map +0 -1
  280. package/dist/lib/Slider-DNfd8Lxz.js +0 -2
  281. package/dist/lib/Slider-DNfd8Lxz.js.map +0 -1
  282. package/dist/lib/Spacer-BznfGbwG.js +0 -2
  283. package/dist/lib/Spacer-BznfGbwG.js.map +0 -1
  284. package/dist/lib/TabButton-CAACsMov.js +0 -2
  285. package/dist/lib/TabButton-CAACsMov.js.map +0 -1
  286. package/dist/lib/TabCloseButton-CCiqsX3y.js +0 -2
  287. package/dist/lib/TabCloseButton-CCiqsX3y.js.map +0 -1
  288. package/dist/lib/Text-O-FWa5Cy.js +0 -2
  289. package/dist/lib/Text-O-FWa5Cy.js.map +0 -1
  290. package/dist/lib/Tooltip-CyICVu15.js +0 -3
  291. package/dist/lib/Tooltip-CyICVu15.js.map +0 -1
  292. package/dist/lib/Tree-CSEguhlk.js +0 -2
  293. package/dist/lib/Tree-CSEguhlk.js.map +0 -1
  294. package/dist/lib/core.es.js.map +0 -1
  295. package/dist/lib/primitive.es.js.map +0 -1
  296. package/dist/lib/selectionsEqual-C7MrKMQr.js +0 -2
@@ -0,0 +1,7 @@
1
+ import{t as e}from"./DOM-DDhDN8lQ.js";import{a as t,l as n,n as r}from"./Position-DWR1nIpA.js";import{T as i,f as a,g as o,h as s,i as c,m as l,p as u,t as d,x as f}from"./Component-YrLXKJZS.js";import{t as p}from"./ListenerBag-DYRl4TSb.js";import{i as m,r as h}from"./Scrollbar-orAWHWap.js";import{t as g}from"./Glyph-Cof7BxfJ.js";import{a as _,t as v}from"./Tooltip-DgRHQZhL.js";import{t as ee}from"./Fit-amTWlJM2.js";import{t as y}from"./Text-CGFXPhHD.js";import{t as te}from"./Checkbox-CvAZJ4_T.js";import{n as ne,r as b}from"./VBox-hFIZAEpT.js";import{s as re}from"./DragManager-D5pBaPPg.js";import{t as ie}from"./Menu-BCQISKiQ.js";import{t as ae}from"./Button-CKzjQyqA.js";import{t as oe}from"./TabCloseButton-B-iLVPGZ.js";import{n as se,o as ce,r as le}from"./Dialog-CXQXRQQK.js";import{t as x}from"./SelectableText-BbS_lRzY.js";import{circle_check as ue}from"./glyphs/solid/circle_check.es.js";import{t as de}from"./MenuButton-BO4y3jf2.js";import{n as S,r as fe}from"./DragChain-CYGuT7OA.js";import{t as pe}from"./Card-CAp7LcB5.js";import{f as C,i as me,t as he}from"./MemoryStore-ByGDEKYI.js";import{caret_down as ge}from"./glyphs/solid/caret_down.es.js";import{caret_right as _e}from"./glyphs/solid/caret_right.es.js";import{c as ve,l as ye,m as be,n as xe,p as w,t as Se}from"./ComboBox-DgjMnpdh.js";import{magnifying_glass as Ce}from"./glyphs/solid/magnifying_glass.es.js";import{align_left as we}from"./glyphs/solid/align_left.es.js";import{align_right as Te}from"./glyphs/solid/align_right.es.js";import{equals as Ee}from"./glyphs/solid/equals.es.js";import{not_equal as De}from"./glyphs/solid/not_equal.es.js";import{greater_than as Oe}from"./glyphs/solid/greater_than.es.js";import{greater_than_equal as ke}from"./glyphs/solid/greater_than_equal.es.js";import{less_than as Ae}from"./glyphs/solid/less_than.es.js";import{less_than_equal as je}from"./glyphs/solid/less_than_equal.es.js";import{ban as Me}from"./glyphs/solid/ban.es.js";import{plus as Ne}from"./glyphs/solid/plus.es.js";import{n as Pe,t as Fe}from"./selectionsEqual-DWdW5pxP.js";import{t as Ie}from"./reduceModifierSelection-DTo8HyFl.js";import{ellipsis_v as Le}from"./glyphs/solid/ellipsis_v.es.js";import{table_columns as Re}from"./glyphs/solid/table_columns.es.js";import{undo as ze}from"./glyphs/solid/undo.es.js";import{file_csv as Be}from"./glyphs/solid/file_csv.es.js";import{file_code as Ve}from"./glyphs/solid/file_code.es.js";import{file_lines as He}from"./glyphs/solid/file_lines.es.js";import{clipboard as Ue}from"./glyphs/solid/clipboard.es.js";var We=new r(3,3,3,3),Ge=new r(0,0,0,0),Table$1=class extends u{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.calculate();e&&this.commit(e)}calculate(){let e=this.getContainer();if(!e)return null;let t=e.getInnerSize();if(!t||!Number.isFinite(t.width)||!Number.isFinite(t.height))return null;let r=e.getContentInsets(),i=e.getColumns(),a=e.getColumns().length,o=e.getAvailableColumnWidth(),s=Math.max(o,e.getColumnWidthTarget()),l=e.getColumnWidths();l=l.length===a?this.rescaleWidths(e,i,l,s):this.initializeWidths(e,i,o);let u=e.getHeader(),d=e.getFooter(),f=e.getBody(),p=null;if(e.isHeaderVisible()&&u&&u.isDisplayed()){let e=c.getTheme(),i=n.lineHeightPx()+2*(e.table.cell.padding??2),a=u.hasParentRow()?i:0,o=u.hasFilterRow()?n.singleLineBoxHeight(Ge,We,{top:0,bottom:0}):0,s=u.getPerimeterSize(),l=a+i+o+s.top+s.bottom;p={band:{x:r.getLeft(),y:r.getTop(),width:t.width,height:l},columnHeight:i,parentRowHeight:a,filterRowHeight:o}}let m=null;if(e.isFooterVisible()&&d&&d.isDisplayed()){let e=c.getTheme(),i=n.lineHeightPx()+2*(e.table.cell.padding??2),a=d.getPerimeterSize(),o=i+a.top+a.bottom;m={band:{x:r.getLeft(),y:r.getTop()+t.height-o,width:t.width,height:o},columnHeight:i}}let h=e.isBodyVisible()&&!!f&&f.isDisplayed();return{columnWidths:l,availableWidth:o,header:p,footer:m,bodyVisible:h,containerInsets:r,containerSize:t}}commit(e){let t=this.getContainer();if(!t)return;t.setColumnWidths(e.columnWidths);let n=t.getHeader(),r=t.getFooter(),i=t.getBody();if(e.header&&n){let{band:t,columnHeight:r,parentRowHeight:i,filterRowHeight:a}=e.header;n.setBounds(t.x,t.y,t.width,t.height);let o=n.getContentBounds()??{x:0,y:0,width:e.containerSize.width,height:t.height},s=e.columnWidths.reduce((e,t)=>e+t,0),c=Math.max(o.width,s);n.getParentRow().setBounds(o.x,o.y,c,i),n.getComponents()[1].setBounds(o.x,o.y+i,c,r),n.getFilterRow().setBounds(o.x,o.y+i+r,c,a),n.renderColumnWindow({columnWidths:e.columnWidths,viewportWidth:e.availableWidth,columnHeight:r,parentRowHeight:i,filterRowHeight:a});let l=n.getMenuButton(),u={width:12,height:o.height};l.setPreferredSize(u),l.applyBounds(o.x+o.width-12,o.y,u.width,u.height)}if(e.footer&&r){let{band:t,columnHeight:n}=e.footer;r.setBounds(t.x,t.y,t.width,t.height);let i=r.getContentBounds()??{x:0,y:0,width:e.containerSize.width,height:n},a=0;r.getColumns().forEach((t,n)=>{t.applyBounds(a,0,e.columnWidths[n],i.height),a+=e.columnWidths[n]})}if(e.bodyVisible&&i){let t=e.header&&n?n.getHeight():0,a=e.footer&&r?r.getHeight():0;i.setBounds(e.containerInsets.getLeft(),e.containerInsets.getTop()+t,e.containerSize.width,e.containerSize.height-t-a),i.renderWindow(e.availableWidth,e.columnWidths)}}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=>this.isFixedColumn(e)),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)=>{!this.isFixedColumn(e)&&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}isFixedColumn(e){let t=e.getField().getType();return t===`boolean`||t===`number`||t===`date`||e.isWidthPreserved()}clamp(e,r,i){let a=i.getColumnMinWidth(r),o=r.getMaxWidth()??t;return n.clamp(e,a,o)}},Ke=o(Table$1);function blurRelatedTargetHandle(t){return t.relatedTarget?e.source.intern(t.relatedTarget):null}var CellEditor=class extends d{_onCommitRequested=null;constructor(e=`div`){super({tag:e}),this.setLayoutManager(new ee);let applyPadding=()=>{let e=c.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``}},qe={foregroundColor:`var(--ts-ui-table-cell-color, inherit)`,backgroundColor:`var(--ts-ui-table-cell-bg, transparent)`,border:`var(--ts-ui-table-cell-border, none)`},Cell=class extends d{static ownClassStyleDefaults=qe;static ownStyleStates=[{selector:`.rangeSelected`,extract:()=>({backgroundColor:`var(--ts-ui-table-cell-range-selected, rgba(30, 100, 200, 0.15))`})},{selector:`.readOnly`,extract:()=>({backgroundColor:`var(--ts-ui-table-cell-readonly-bg, rgba(0, 0, 0, 0.04))`,cursor:`default`,shadow:null})},{selector:`.requiredEmpty`,extract:()=>({shadow:`inset 0 0 0 1px var(--ts-ui-table-cell-required-outline, rgba(220, 60, 60, 0.6))`})}];_readOnly;_requiredEmpty=!1;_rangeSelected=!1;_baseBackground=`var(--ts-ui-table-cell-bg, transparent)`;_renderer;_editor;_editorPool=null;_scrollIntoView=null;_activeEditor=null;_listeners=this.registerListenerBag(new p);constructor(e,t,n,a,o,s){super({tag:e||`td`},{...qe,...s??{}}),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.ensureSharedStateRule(`.focused`,{outline:`var(--ts-ui-indicator-selection, 1px dashed rgb(120, 170, 240))`,outlineOffset:`-1px`}),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}canSkipUnchangedLayout(){return!0}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)}setRangeSelected(e){return this._rangeSelected===e?this:(this._rangeSelected=e,this._applyStateTint(),this)}setBaseBackground(e){let t=e??`var(--ts-ui-table-cell-bg, transparent)`;return this._baseBackground===t?this:(this._baseBackground=t,this.cacheStyleValue(`backgroundColor`,t),e===null?this.clearValueStyleState(`bg`):this.setValueStyleState(`bg`,e,{backgroundColor:e}),this)}_applyStateTint(){this.setStyleState(`.rangeSelected`,this._rangeSelected),this.setStyleState(`.readOnly`,this._readOnly),this.setStyleState(`.requiredEmpty`,this._requiredEmpty)}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 te;_value=null;_listeners=this.registerListenerBag(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}},T=o(BooleanEditor),CellRenderer=class extends d{constructor(e){super(void 0,e),this.setLayoutManager(new ee);let applyPadding=()=>{let e=c.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 y))return this;let n=t.getHeight();return n>0&&t.setLineHeight(n),this}},Je={cursor:`text`,userSelect:`text`},StringRenderer=class extends CellRenderer{_text=this.createText();_value=null;_display=``;constructor(e){super({...Je,...e??{}}),this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}createText(){return new x}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}},E=o(StringRenderer),Ye={cursor:`text`,userSelect:`text`},Xe=`right`,Ze={textAlign:Xe},NumberRendererText=class extends x{static ownClassStyleDefaults={font:{...y.ownClassStyleDefaults.font,textAlign:Xe}};constructor(){super(void 0,void 0,Ze)}},NumberRenderer=class extends CellRenderer{_text;_value=null;_display=``;constructor(e=`right`){super(Ye),this._text=e===`right`?new NumberRendererText:new x,this._text.setPointerEvents(`none`),this._text.setText(``),this._text.setAutoMeasure(!1),this.addComponent(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}},D=o(NumberRenderer),Qe={cursor:`text`,userSelect:`text`},DateRenderer=class extends CellRenderer{_text=new x;_value=null;_display=``;constructor(){super(Qe),this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=e?C(`date`,!1,e):``,this._text.setText(this._display),this}getDisplayText(){return this._display}},O=o(DateRenderer),$e={cursor:`text`,userSelect:`text`},TimeRenderer=class extends CellRenderer{_text=new x;_value=null;_showSeconds;_display=``;constructor(e=!1){super($e),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=e?C(`time`,this._showSeconds,e):``,this._text.setText(this._display),this}getDisplayText(){return this._display}},k=o(TimeRenderer),et={cursor:`text`,userSelect:`text`},DateTimeRenderer=class extends CellRenderer{_text=new x;_value=null;_showSeconds;_display=``;constructor(e=!1){super(et),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){return this._value=e??null,this._display=e?C(`datetime`,this._showSeconds,e):``,this._text.setText(this._display),this}getDisplayText(){return this._display}},A=o(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 g(t),this._glyph.setPointerEvents(`none`),this.addComponent(this._glyph)),this.doLayout(),this)}getDisplayText(){return this._value===null?``:String(this._value)}},j=o(GlyphRenderer);function normalizeComboOptions(e){return e.map(e=>typeof e==`string`?{value:e,label:e}:{value:e.value,label:e.label??e.value})}var tt={cursor:`text`,userSelect:`text`},ComboRenderer=class extends CellRenderer{_text=new x;_map=new Map;_value=null;_display=``;constructor(e){super(tt);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)}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}},M=o(ComboRenderer);function buildCellRenderer(e,t,n=`right`){switch(e){case`number`:return new D(n);case`date`:return new O;case`time`:return new k(t);case`datetime`:return new A(t);case`combo`:return new M([]);case`glyph`:return new j;default:return new E}}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}},N=o(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 E;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 T;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,t){super(e||`td`,t??new E)}getRenderer(){return super.getRenderer()}setValue(e){return this.getRenderer().setValue(e),this}},P=o(DefaultCell),GroupSeparatorCell=class extends P{_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}},nt=o(GroupSeparatorCell),StringCell=class extends Cell{constructor(){let e=new E;super(`td`,e)}getEditorKey(){return`string`}setValue(e){return this.getRenderer().setValue(e),this}},rt=o(StringCell),BooleanCell=class extends Cell{_checkbox;constructor(){let e=new T;super(`td`,e,void 0,{fill:s.NONE,anchor:l.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}},it=o(BooleanCell),NumberCell=class extends Cell{constructor(){let e=new D;super(`td`,e)}getEditorKey(){return`number`}setValue(e){return this.getRenderer().setValue(e),this}},at=o(NumberCell),DateCell=class extends Cell{constructor(){let e=new O;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)}},ot=o(DateCell),TimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new k(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)}},st=o(TimeCell),DateTimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new A(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)}},F=o(DateTimeCell),GlyphCell=class extends Cell{constructor(){let e=new j;super(`td`,e)}setValue(e){return this.getRenderer().setValue(e),this}},ct=o(GlyphCell),ComboCell=class extends Cell{_field;constructor(e,t){super(`td`,new M(t)),this._field=e}getEditorKey(){return`combo:${this._field}`}setValue(e){return this.getRenderer().setValue(e),this}},lt=o(ComboCell);g.register(ge,_e);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 a),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 g(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}},I=o(TreeCellRenderer);function range$2(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}var L=o(class Row extends d{static ownStyleStates=[{selector:`.selected`,extract:()=>({backgroundColor:`var(--ts-ui-table-row-selected, rgba(30, 100, 200, 0.15))`,shadow:`var(--ts-ui-table-row-selected-border, none)`})},{selector:`.new`,extract:()=>({backgroundColor:`var(--ts-ui-table-row-new, rgba(70, 200, 70, 0.15))`})},{selector:`.dirty`,extract:()=>({backgroundColor:`var(--ts-ui-table-row-dirty, rgba(255, 165, 0, 0.15))`})},{selector:`.stripe`,extract:()=>({backgroundColor:`var(--ts-ui-table-row-stripe, rgba(0, 0, 0, 0.035))`})}];_model;_data;_onCellCommit;_treeCell=null;_stripe=!1;_visibleFields=[];_columnConfigs=new Map;_treeFieldName;_windowFirst=0;_cellKeys=[];_fieldNames=[];_cellCache=new Map;_lastRetargeted=[];_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}getRetargetedCells(){return this._lastRetargeted}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(){this.setStyleState(`.new`,!!this._data?.isNew()),this.setStyleState(`.dirty`,!this._data?.isNew()&&!!this._data?.isDirty()),this.setStyleState(`.stripe`,!this._data?.isNew()&&!this._data?.isDirty()&&this._stripe)}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.disposeCellCache(),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){let n=[...this.getComponents()];for(let e=0;e<n.length;e++)this.retireCell(n[e],this._cellKeys[e]);this.addComponent(new nt(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,n){this._lastRetargeted=[];let r=this._columnsDirty;this._separatorMode&&(this.disposeAllComponents(),this._separatorMode=!1,this._columnsDirty=!0,this.getAria().setRole(`row`));let i=this._visibleFields.length-1;t=Math.min(t,i),e>t&&(e=t+1);let a=this._windowFirst+this.getComponents().length-1;if(!this._columnsDirty&&e===this._windowFirst&&t===a)return!1;let o=t-e+1;if(n&&!this._columnsDirty&&this._windowFirst===n.prevFirstCol&&a===n.prevLastCol&&o===n.prevLastCol-n.prevFirstCol+1)return this.reconcileWindowSlide(e,t,n),!0;let s=this.getComponents(),c=new Map;for(let e=0;e<s.length;e++){let t=this._fieldNames[e];t!==void 0&&c.set(t,{cell:s[e],key:this._cellKeys[e]})}let l=t-e+1,u=Array(l).fill(void 0),d=new Set;for(let n=e;n<=t;n++){let t=this._visibleFields[n],r=this.cellKeyFor(t),i=c.get(t.getName());i&&i.key===r&&(u[n-e]=i.cell,c.delete(t.getName()))}let f=new Map;for(let e of c.values()){let t=f.get(e.key);t?t.push(e.cell):f.set(e.key,[e.cell])}for(let n=e;n<=t;n++){let t=n-e;if(u[t]!==void 0)continue;let r=this._visibleFields[n],i=this.cellKeyFor(r),a=f.get(i),o=this._cellCache.get(i),s;if(a&&a.length>0)s=a.pop(),this.setLayoutConstraints(s,{data:r});else if(o&&o.length>0)s=o.pop(),o.length===0&&this._cellCache.delete(i),this.addComponent(s,{data:r}),s.invalidateLayout();else{s=Row.createCellForField(r,this._columnConfigs),this._treeFieldName!==void 0&&r.getName()===this._treeFieldName&&s.wrapRenderer(e=>new I(e));let e=s;s.on(`commit`,t=>this.commitCellValue(e,t)),this.addComponent(s,{data:r})}u[t]=s,d.add(n)}for(let n=e;n<=t;n++){let t=u[n-e],i=this._visibleFields[n];t.setBaseBackground(this._columnConfigs.get(i.getName())?.groupColor??null),d.has(n)&&this.bindCell(t,this._data,i.getName()),(d.has(n)||r)&&(t.getAria().setColIndex(n+1),this._lastRetargeted.push({cell:t,fieldName:i.getName()}))}for(let[e,t]of f)for(let n of t)this.retireCell(n,e);let p=new Map(u.map((e,t)=>[e,t]));this.sortComponents((e,t)=>(p.get(e)??0)-(p.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=u[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}reconcileWindowSlide(e,t,n){let r=n.delta,i=t-e+1,a=Math.abs(r),o=[...this.getComponents()],s=r>0?this._fieldNames.slice(a):this._fieldNames.slice(0,i-a),c=r>0?this._cellKeys.slice(a):this._cellKeys.slice(0,i-a),l=r>0?o.slice(a):o.slice(0,i-a),u=r>0?range$2(0,a-1):range$2(i-a,i-1);for(let e of u)this.retireCell(o[e],this._cellKeys[e]);let d=r>0?range$2(t-a+1,t):range$2(e,e+a-1),f=[],p=[],m=[];for(let e of d){let t=this._visibleFields[e],r=n.enteringKeys.get(e)??this.cellKeyFor(t),i=this._cellCache.get(r),a;if(i&&i.length>0)a=i.pop(),i.length===0&&this._cellCache.delete(r),this.addComponent(a,{data:t}),a.invalidateLayout();else{a=Row.createCellForField(t,this._columnConfigs),this._treeFieldName!==void 0&&t.getName()===this._treeFieldName&&a.wrapRenderer(e=>new I(e));let e=a;a.on(`commit`,t=>this.commitCellValue(e,t)),this.addComponent(a,{data:t})}a.getAria().setColIndex(e+1),a.setBaseBackground(this._columnConfigs.get(t.getName())?.groupColor??null),this.bindCell(a,this._data,t.getName()),f.push(a),p.push(t.getName()),m.push(r),this._lastRetargeted.push({cell:a,fieldName:t.getName()})}let h=new Map;if(l.forEach((e,t)=>h.set(e,r>0?t:t+a)),f.forEach((e,t)=>h.set(e,r>0?i-a+t:t)),this.sortComponents((e,t)=>(h.get(e)??0)-(h.get(t)??0)),this._fieldNames=r>0?[...s,...p]:[...p,...s],this._cellKeys=r>0?[...c,...m]:[...m,...c],this._windowFirst=e,this._treeFieldName!==void 0){let e=this._fieldNames.indexOf(this._treeFieldName);this._treeCell=e===-1?null:this.getComponents()[e]}this._columnsDirty=!1}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 N&&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 N(e.getName(),e.getType(),n);let r=n?.values;if(r&&r.length>0)return new lt(e.getName(),r);switch(e.getType()){case`string`:return new rt;case`number`:return new at;case`boolean`:return new it;case`date`:return new ot;case`time`:return new st(t.get(e.getName())?.showSeconds??!1);case`datetime`:return new F(t.get(e.getName())?.showSeconds??!1);case`glyph`:return new ct;default:return new P}}retireCell(e,t){if(e.isEditing()&&e.commitEdit(),e.setStyleState(`.focused`,!1),this.removeComponent(e),t===void 0){e.dispose();return}let n=this._cellCache.get(t);n?n.push(e):this._cellCache.set(t,[e])}disposeCellCache(){for(let e of this._cellCache.values())for(let t of e)t.dispose();this._cellCache.clear()}doLayout(){return this}destructor(){this.disposeCellCache(),super.destructor()}}),ut=`var(--ts-ui-table-resize-handle-cursor, ew-resize)`,dt={cursor:ut,backgroundImage:`linear-gradient(to right,transparent 80%,var(--ts-ui-table-resize-handle-color,rgba(0,0,0,0.2)) 80%)`},ft=null;function ensureResizeHandleClassRule(){ft||=new f({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 d{_listeners=this.registerListenerBag(new p);constructor(e,t){ensureResizeHandleClassRule(),super({tag:`div`,...e??{}},{...dt,...t??{}}),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},pt=o(ResizeHandle),mt=null;function ensureSortBadgeClassRule(){mt||=new f({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 ht={backgroundColor:`var(--ts-ui-sort-badge-bg, rgba(0,0,0,0.15))`,foregroundColor:`var(--ts-ui-sort-badge-color, inherit)`},SortPriorityBadge=class extends d{constructor(e,t){ensureSortBadgeClassRule(),super({tag:`span`,...e??{}},{...ht,...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}},gt=o(SortPriorityBadge);function headerGlyphPx(){return c.getResolvedScale().glyphLg}var _t=4,vt=null;function ensureHeaderCellGlyphClassRule(){vt||=new f({scope:`class`,name:`HeaderCellGlyph`,styles:{position:`absolute`,left:`var(--ts-ui-table-header-glyph-gap, 4px)`,top:`50%`}})}var yt={cursor:`default`,userSelect:`none`},bt=Object.freeze({boxShadow:`var(--ts-ui-button-pressed-shadow, 1px 2px 5px 0 rgba(0,0,0,0.2) inset)`}),R=`--ts-ui-table-header-font-size`,xt=`var(${R}, 14px)`,St={userSelect:`none`,fontWeight:`bold`},HeaderCellText=class extends x{static ownClassStyleDefaults={userSelect:`none`,font:{...y.ownClassStyleDefaults.font,fontWeight:`bold`,fontSize:xt}};constructor(){super(void 0,void 0,St),this.setFontSize(R)}},HeaderCellRenderer=class extends E{constructor(){super(yt)}createText(){return new HeaderCellText}},HeaderCell=class extends P{static ownStyleStates=[...Cell.ownStyleStates,{selector:`:active`,extract:()=>({shadow:bt.boxShadow})}];_text;_fieldName;_isDragging=!1;_tooltipText=``;_tooltipTeardownWired=!1;_sortState=null;_headerGlyph=null;_headerGlyphInstance=null;_columnFocused=!1;_required=!1;constructor(e,t,n){super(`th`,new HeaderCellRenderer),this.getAria().setRole(`columnheader`),this.getAria().setSort(`none`),this._text=e,this._fieldName=t,this._headerGlyph=n??null,this.getRenderer().getText().setText(e),this._resizeHandle=new pt({listeners:{dragstart:e=>this.onResizeDragStart(e),dragmove:e=>this.emit(`resizedrag`,e)}}),this._priorityBadge=new gt}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&&this.attachTooltip(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=c.getTheme().table.cell.padding,i=this._headerGlyph;if(!i||!t){this.getRenderer().setInsets(new r(0,n,0,n));return}ensureHeaderCellGlyphClassRule();let a=headerGlyphPx(),o=new g(i);o.setTransform(`translateY(-50%)`),o.setSize({width:a,height:a}),o.setForegroundColor(`var(--ts-ui-table-header-glyph-color, currentColor)`),o.setPointerEvents(`none`);let s=o.getElement(!0);e.sink.apply(s,{addClass:[`HeaderCellGlyph`]}),e.sink.appendChild(t,s),this._headerGlyphInstance=o;let l=a+_t+n;this.getRenderer().setInsets(new r(0,n,0,l))}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&&this.attachTooltip(t,e),this}attachTooltip(e,t){v.attachToElement(e,t),this._tooltipTeardownWired||(this._tooltipTeardownWired=!0,this.onDestroy(()=>v.detachElement(e)))}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(ut)}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()}},Ct=o(HeaderCell),wt=`--ts-ui-table-header-font-size`,Tt=`var(${wt}, 14px)`,Et={userSelect:`none`,fontWeight:`bold`,textAlign:`center`},ParentHeaderCellText=class extends x{static ownClassStyleDefaults={userSelect:`none`,font:{...y.ownClassStyleDefaults.font,fontWeight:`bold`,fontSize:Tt,textAlign:`center`}};constructor(){super(void 0,void 0,Et),this.setFontSize(wt)}},Dt={cursor:`default`,userSelect:`none`},ParentHeaderCellRenderer=class extends E{constructor(){super(Dt)}createText(){return new ParentHeaderCellText}},Ot=[`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(`, `),ParentHeaderCell=class extends P{static ownClassStyleDefaults={backgroundColor:`transparent`,shadow:Ot};_text;_color;_tooltipText=``;_tooltipTeardownWired=!1;constructor(e,t){super(`th`,new ParentHeaderCellRenderer),this._text=e,this._color=t,this.getAria().setRole(`columnheader`),this.getRenderer().getText().setText(e),this.setBackgroundColor(t??`transparent`),this.setShadow(Ot)}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&&this.attachTooltip(t,e),this}attachTooltip(e,t){v.attachToElement(e,t),this._tooltipTeardownWired||(this._tooltipTeardownWired=!0,this.onDestroy(()=>v.detachElement(e)))}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&&this.attachTooltip(t,this._tooltipText),this):this}onContextMenu(e){this.emit(`contextmenu`,e.clientX,e.clientY)}},kt=o(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 w;_operatorButton=new FilterOperatorButton;constructor(){super(),this.setLayoutManager(new b({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??``)}},At=o(FilterCellRenderer),jt=null;function ensureFilterClauseBadgeClassRule(){jt||=new f({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 d{_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}},Nt=o(FilterClauseBadge),Pt=[`contains`,`startsWith`,`endsWith`,`eq`,`neq`,`isEmpty`,`isNotEmpty`],Ft=[`contains`,`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`isEmpty`,`isNotEmpty`],It=[`contains`,`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`startsWith`,`endsWith`,`isEmpty`,`isNotEmpty`],Lt=[`eq`,`neq`,`isEmpty`,`isNotEmpty`],Rt={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`},zt={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 Pt;case`boolean`:return Lt;case`number`:return Ft;case`date`:case`time`:case`datetime`:return It}}function columnFilterOperatorLabel(e){return Rt[e]}function columnFilterOperatorGlyph(e){return zt[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 Bt=/^[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||Bt.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)}g.register(Ce,we,Te,Ee,De,Oe,ke,Ae,je,Me,ue,Ne);var Vt=`No value needed`,FilterCell=class extends Cell{_fieldName;_operators=[];_numericOnly=!1;_clauses=[{operator:`contains`,text:``}];_clausesPopover=null;_columnLabel=``;constructor(e,t){super(`th`,new At),this._fieldName=e,this._badge=new Nt,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(Vt)}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 d({layoutManager:new ne({spacing:4})});this._clauses.forEach((t,n)=>e.addComponent(this.buildClauseRow(n)));let t=new ae(`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 w;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 d({layoutManager:new b({spacing:4,itemAlign:`stretch`})});if(i.addComponent(n),i.addComponent(r,{weight:1}),e>0){let t=new oe;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()}},Ht=o(FilterCell),StringEditor=class extends CellEditor{_textField=new w;_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}},Ut=o(StringEditor),Wt=`right`,NumberEditorField=class extends w{static ownClassStyleDefaults={font:{...be.ownClassStyleDefaults.font,textAlign:Wt}}},NumberEditor=class extends CellEditor{_textField=new NumberEditorField;_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.setText(``),this.addComponent(this._textField,{anchor:l.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}},Gt=o(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 ye(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`)}`}},Kt=o(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}`}},z=o(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()&&_.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 xe(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}`}},B=o(DateTimeEditor),CellEditorPool=class{_editors=new Map;_factories=new Map;_activeCell=null;constructor(){this._factories.set(`string`,()=>new Ut),this._factories.set(`number`,()=>new Gt),this._factories.set(`date`,()=>new Kt),this._factories.set(`time`,()=>new z(!1)),this._factories.set(`time:seconds`,()=>new z(!0)),this._factories.set(`datetime`,()=>new B(!1)),this._factories.set(`datetime:seconds`,()=>new B(!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 Se,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()}},V=o(ComboEditor),H=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
2
+ `);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 exportTSV(e,t,n,r,i){let a=e.map(e=>e.getField().getName()),o=t.map(t=>e.map(e=>String(TableExporter.formatValue(e,t.get(e.getField().getName()),n,r)??``))),s=TableExporter.buildRectangularTSV([a,...o]);TableExporter.download(s,i?.filename??`table-export.tsv`,`text/tab-separated-values;charset=utf-8;`)}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(`
3
+ `)?`"`+t.replace(/"/g,`""`)+`"`:t}static buildRectangularTSV(e){return e.map(e=>e.map(TableExporter.escapeTSVField).join(` `)).join(`
4
+ `)}static escapeTSVField(e){return e.includes(` `)||e.includes(`"`)||e.includes(`
5
+ `)?`"`+e.replace(/"/g,`""`)+`"`:e}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)}};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 qt=2;function computeColumnWindowSize(e,t){let n=e.length;if(n===0)return 0;let r=1,i=0;for(let a=0;a<n;a++){for(;i<a&&e[a]-e[i]>t;)i++;a-i+1>r&&(r=a-i+1)}return Math.min(n,r+1+4)}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;for(let n=0;n<r;n++)if(i[n]+e[n]>=t&&i[n]<=o){s=n;break}s===-1&&(s=0);let c=computeColumnWindowSize(i,n),l=Math.min(Math.max(s-qt,0),r-c);return{firstCol:l,lastCol:l+c-1,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 range$1(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}var Jt={backgroundColor:`var(--ts-ui-input-bg, rgb(255, 255, 255))`},Yt=class TableBody extends Pe{static ownClassStyleDefaults=Jt;_store;_hiddenColumns=new Set;_columns=[];_columnConfigs=new Map;_rowReadOnly=null;_rowVisible=null;_rowSeparator=null;_rowIndented=null;_lastBodyWidth=0;_lastColumnWidths=[];_lastAriaRowCount=-1;_rowHeight;_colWindow={firstCol:0,lastCol:-1,widths:[],lefts:[]};_reconciling=!1;_storeRefresh=null;_selectedRecords=new Set;_anchorRecord=null;_focusedColIndex=0;_previousFocusedCell=null;_rangeAnchor=null;_rangeFocus=null;_rangeDragWidened=!1;_contextMenuCell=null;_cellText=new CellTextResolver;_editorPool=new CellEditorPool;_header=null;_listeners=this.registerListenerBag(new p);constructor(e,t){super({tag:`tbody`},{...Jt,...t??{}}),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();for(let e of this._rowPool)for(let t of e.getComponents())t.invalidateLayout();super.onThemeReflow()}computeRowHeight(){let e=c.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,t){for(let n of t??e.getComponents())n.setEditorPool(this._editorPool),n.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}computeVisibleFields(){return this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder())}createRow(){return new L(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}setHiddenColumns(e){return this._hiddenColumns=this.filterUnhideable(e),this.syncPoolCells(),this.renderWindow(),this}filterUnhideable(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 t}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 V(e)):n.cellValues&&this._editorPool.register(`combo:${t}`,()=>new V([]))}}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){return this.rebindStore(e),this.getElement()&&this.onStoreChange(),this}rebindStore(e){this.unbindStore(this._store),this._store=e,this.bindStore(e),this.invalidateGeom()}unbindStore(e){this._storeRefresh&&[`load`,`add`,`remove`,`datachange`,`beforesync`,`sync`].forEach(t=>e.off(t,this._storeRefresh))}bindViewState(e){return this.rebindStore(e.store),this._columns=e.columns,this._columnConfigs=e.columnConfigs,this._hiddenColumns=this.filterUnhideable(e.hiddenColumns),this._rowReadOnly=e.rowReadOnly,this._rowVisible=e.rowVisible,this._rowSeparator=e.rowSeparator,this._rowIndented=e.rowIndented,this.registerComboEditors(e.columnConfigs),this.syncPoolCells(),this.invalidateRowBindings(),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,`mousedown`,this.onCellMouseDown),i.addSubtreeListener(this,`contextmenu`,this.onCellContextMenu),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.unbindStore(this._store),this._editorPool.dispose(),this._cellText.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()}}computeColumnWindowSlidePlan(e,t){if(e.lastCol===-1||t.lastCol===-1)return;let n=e.lastCol-e.firstCol+1,r=t.lastCol-t.firstCol+1;if(n!==r)return;let i=t.firstCol-e.firstCol;if(i===0||Math.abs(i)>=r)return;let a=this.computeVisibleFields(),o=this.getTreeFieldName(),s=new Map,c=i>0?range$1(t.lastCol-i+1,t.lastCol):range$1(t.firstCol,t.firstCol-i-1);for(let e of c){let t=a[e];if(!t)return;let n=this._columnConfigs.get(t.getName());s.set(e,L.cellKey(t,n,t.getName()===o))}return{prevFirstCol:e.firstCol,prevLastCol:e.lastCol,delta:i,enteringKeys:s}}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),f=this._colWindow;this._colWindow=computeColumnWindow(d,e.getScrollX(),this.getWidth()||0);let p=this.computeColumnWindowSlidePlan(f,this._colWindow);this.commitEditsOutsideWindow(this._colWindow)&&(t=this.getVisibleRecords(),n=t.length,a=n*this._rowHeight);let m=this.getHeight()||0,h=this.computeVisibleWindow(e.getScrollY(),m,n),g=this.computePoolTarget(h.windowSize,m,n);this.growRowPool(g),this.bindAndPositionRows(h.firstRow,h.windowSize,c,t,this._colWindow,p),this.hideExcessPoolRows(h.windowSize),n!==this._lastAriaRowCount&&(this.getAria().setRowCount(n),this._lastAriaRowCount=n),e.layoutScrollbars(s,a);let _=e.getScrollX(),v=e.getScrollY();_!==r&&this.emit(`horizontalscroll`,_),v!==i&&this.emit(`verticalscroll`,v),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,a){let o=this._rowHeight;this.alignPoolWindow(e);for(let s=0;s<t;s++){let t=this._rowPool[s],c=e+s,l=this._rowSeparator?.(r[c])??null;if(l){(this._boundIndices[s]!==c||!t.isSeparator())&&(t.renderSeparator(l.label,l.color),this._boundIndices[s]=c,this.computeRowAria(t,c)),this.positionRow(s,c*o,n),t.getComponents()[0].applyBounds(0,0,n,o);continue}let u=t.setColumnWindow(i.firstCol,i.lastCol,a),d=u?t.getRetargetedCells():void 0;u&&this.wireRowCells(t,d.map(e=>e.cell));let f=this._boundIndices[s]!==c;f&&(t.setData(r[c]),this._boundIndices[s]=c,t.setStripe(c%2==1),this.updateRowVisualState(s),this.computeRowAria(t,c)),f?(this.applyReadOnlyState(t,r[c]),t.setFieldIndent(this._rowIndented?.(r[c])??!1)):u&&(this.applyReadOnlyState(t,r[c],d),t.setFieldIndent(this._rowIndented?.(r[c])??!1)),(f||u)&&this.updateCellRangeVisualState(s),this.afterRowBound(t,c,f),this.applyRequiredEmptyState(t,r[c]),this.positionRow(s,c*o,n);let p=t.getComponents(),m=i.lefts[i.firstCol]??0;for(let e=0;e<p.length;e++){let t=i.widths[i.firstCol+e]??0;p[e].applyBounds(m,0,t,o),m+=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=Ie(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})}}locateCellFromTarget(t){let n=t;for(;n;){let r=this._rowPool.find(e=>e.getElement()===n);if(r){if(r.isSeparator())return null;let e=r.getData();if(!e)return null;let n=r.getComponents(),i=resolveClickedColumn(n,t);return i<0?null:{row:r,cell:n[i],record:e,col:i+r.getColumnWindowStart()}}n=e.source.getParentElement(n)}return null}getCellRangeBounds(e,t){if(!e||!t)return null;let n=this.getVisibleRecords(),r=n.indexOf(e.record),i=n.indexOf(t.record);return r===-1||i===-1?null:{minRow:Math.min(r,i),maxRow:Math.max(r,i),minCol:Math.min(e.col,t.col),maxCol:Math.max(e.col,t.col)}}isCellWithinBounds(e,t){if(!t)return!1;let n=this.getVisibleRecords().indexOf(e.record);return n>=t.minRow&&n<=t.maxRow&&e.col>=t.minCol&&e.col<=t.maxCol}refreshCellRangeHighlight(){this._boundIndices.forEach((e,t)=>{e!==-1&&this.updateCellRangeVisualState(t)})}updateCellRangeVisualState(e){let t=this._rowPool[e];if(t.isSeparator())return;let n=this._boundIndices[e];if(!this.getVisibleRecords()[n])return;let r=this.getCellRangeBounds(this._rangeAnchor,this._rangeFocus),i=t.getComponents(),a=t.getColumnWindowStart();for(let e=0;e<i.length;e++){let t=a+e,o=!!r&&n>=r.minRow&&n<=r.maxRow&&t>=r.minCol&&t<=r.maxCol;i[e].setRangeSelected(o)}}buildCopyText(e){let t=this.getVisibleRecords(),n=this.computeVisibleFields(),r=[];for(let i=e.minRow;i<=e.maxRow;i++){let a=t[i];if(this._rowSeparator?.(a))continue;let o=[];for(let t=e.minCol;t<=e.maxCol;t++){let e=n[t],r=this._columns.find(t=>t.getField().getName()===e.getName()),i=r?H.formatValue(r,a.get(e.getName()),this._columnConfigs,this._cellText):a.get(e.getName());o.push(String(i??``))}r.push(o)}return H.buildRectangularTSV(r)}copySelectionToClipboard(){let t=this.getCellRangeBounds(this._rangeAnchor,this._rangeFocus);t&&e.sink.writeClipboardText(this.buildCopyText(t))}copyContextMenuSelection(){if(!this._contextMenuCell)return;let t=this.getCellRangeBounds(this._rangeAnchor,this._rangeFocus),n=this.isCellWithinBounds(this._contextMenuCell,t)?t:this.getCellRangeBounds(this._contextMenuCell,this._contextMenuCell);n&&e.sink.writeClipboardText(this.buildCopyText(n))}onCellMouseDown(t){let n=t.target===null?null:e.source.intern(t.target),r=this.locateCellFromTarget(n);if(!r||r.cell.isEditing())return;let a={record:r.record,col:r.col};t.shiftKey&&this._rangeAnchor||(this._rangeAnchor=a),this._rangeFocus=a,this.refreshCellRangeHighlight(),this.focus(),this.resetRangeDragWidening(),i.addViewportListener(this,`mousemove`,this.onCellDragMove),i.addViewportListener(this,`mouseup`,this.onCellDragEnd),this.widenRangeDragIfMultiCell()}onCellDragMove(t){this._rangeDragWidened&&e.sink.clearDocumentSelection();let n=t.target===null?null:e.source.intern(t.target),r=this.locateCellFromTarget(n);if(!r)return;let i=this._rangeFocus;i&&i.record===r.record&&i.col===r.col||(this._rangeFocus={record:r.record,col:r.col},this.refreshCellRangeHighlight(),this.widenRangeDragIfMultiCell())}onCellDragEnd(){i.removeViewportListener(this,`mousemove`,this.onCellDragMove),i.removeViewportListener(this,`mouseup`,this.onCellDragEnd),this.resetRangeDragWidening()}onCellDragSelectStart(){return{stop:!0,prevent:!0}}widenRangeDragIfMultiCell(){if(this._rangeDragWidened)return;let t=this.getCellRangeBounds(this._rangeAnchor,this._rangeFocus);!t||t.minRow===t.maxRow&&t.minCol===t.maxCol||(this._rangeDragWidened=!0,e.sink.clearDocumentSelection(),i.addViewportListener(this,`selectstart`,this.onCellDragSelectStart))}resetRangeDragWidening(){i.removeViewportListener(this,`selectstart`,this.onCellDragSelectStart),this._rangeDragWidened=!1}onCellContextMenu(t){let n=t.target===null?null:e.source.intern(t.target),r=this.locateCellFromTarget(n);if(!(!r||r.cell.isEditing()))return this._contextMenuCell={record:r.record,col:r.col},this.emit(`cellcontextmenu`,t.clientX,t.clientY),{prevent:!0}}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){Fe(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,n){let r=this._rowReadOnly?.(t)===!0,i=n??e.getComponents().map((t,n)=>({cell:t,fieldName:e.getFieldNames()[n]}));for(let{cell:e,fieldName:n}of i){let i=this._columnConfigs.get(n),a=i?.readOnly===!0,o=i?.cellReadOnly?.(t)===!0,s=a||r||o;e.setReadOnly(s)}}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=TableBody.isEmptyValue(t.get(i));n[e].setRequiredEmpty(o&&s)}}updateRowVisualState(e){let t=this._boundIndices[e];if(t===-1)return;let n=this.getVisibleRecords()[t];if(!n)return;let r=this._rowPool[e],i=this._selectedRecords.has(n);r.setStyleState(`.selected`,i),r.updateVisualState(),r.getAria().setSelected(i)}setHeader(e){return this._header=e,this}_updateFocusStyle(){if(this._previousFocusedCell?.getParentComponent())this._previousFocusedCell.setStyleState(`.focused`,!1);else for(let e of this._rowPool)for(let t of e.getComponents())t.setStyleState(`.focused`,!1);if(this._previousFocusedCell=null,this._header?.setFocusedColumn(this._anchorRecord?this._focusedColIndex:null),!this._anchorRecord)return;let e=this.getVisibleRecords().indexOf(this._anchorRecord),t=this._boundIndices.indexOf(e);if(t<0)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&&(a.setStyleState(`.focused`,!0),this._previousFocusedCell=a)}_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(t){let n=this.getVisibleRecords();if(n.length===0)return;if((t.ctrlKey||t.metaKey)&&t.key.toLowerCase()===`c`)return e.source.getDocumentSelection()?void 0:(this.copySelectionToClipboard(),{prevent:!0});if(!new Set([`ArrowDown`,`ArrowUp`,`Home`,`End`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Enter`,` `]).has(t.key))return;if(t.key===`ArrowLeft`||t.key===`ArrowRight`){let e=this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).length;return this._focusedColIndex=t.key===`ArrowLeft`?Math.max(0,this._focusedColIndex-1):Math.min(e-1,this._focusedColIndex+1),this.scrollColumnIntoView(this._focusedColIndex),this.renderWindow(),this._updateActiveDescendant(),this._updateFocusStyle(),{prevent:!0}}if(t.key===`Enter`||t.key===` `){if(!this._anchorRecord)return{prevent:!0};this.scrollColumnIntoView(this._focusedColIndex),this.renderWindow();let e=n.indexOf(this._anchorRecord),t=this._boundIndices.indexOf(e);if(t<0)return{prevent:!0};let r=this._rowPool[t],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 r=this._anchorRecord?n.indexOf(this._anchorRecord):-1,i=this.computePageSize(),a,o;t.key===`ArrowDown`?(a=r<0?0:Math.min(r+1,n.length-1),o=1):t.key===`ArrowUp`?(a=r<0?0:Math.max(r-1,0),o=-1):t.key===`PageDown`?(a=r<0?0:Math.min(r+i,n.length-1),o=1):t.key===`PageUp`?(a=r<0?0:Math.max(r-i,0),o=-1):t.key===`Home`?(a=0,o=1):(a=n.length-1,o=-1),this._rowSeparator&&(a=this.skipSeparators(n,a,o));let s=n[a];return this.selectRecord(s),this.scrollRecordIntoView(s),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)}},U=o(Yt);g.register(Le);var Xt=`ellipsis-v`,Zt=`Column options`,W=8,Qt={name:`table-header-menu-glyph`,declarations:{minSize:{width:W,height:W},maxSize:{width:W,height:W}}},$t=1,en=200;function range(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}var G=`var(--ts-ui-table-header-bg, var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200))))`,K=`inset 1px 0 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`,tn=`var(--ts-ui-button-hover-bg, rgb(252, 252, 252))`,nn=`var(--ts-ui-button-pressed-bg, rgb(200, 200, 200))`,rn={border:`none`,borderRadius:void 0,backgroundColor:G,backgroundImage:G,shadow:K},TableHeaderMenuButton=class extends ae{static ownClassStyleDefaults=rn;static ownStyleStates=[{selector:`.pressed`,extract:()=>({backgroundColor:nn,backgroundImage:nn,shadow:K})},{selector:`:hover`,extract:()=>({backgroundColor:tn,backgroundImage:tn,shadow:K})}];constructor(e,t){super(void 0,{glyph:Xt,text:Zt,showText:!1,compact:!0,zIndex:$t},{...rn,...t??{}}),this.on(`action`,e),this.pinGlyphSize(W),this.getGlyph()?.setStyleTrait(Qt),this.getAria().setHasPopup(`menu`)}},TableHeader=class extends d{static ownClassStyleDefaults={border:{borderBottom:`1px solid var(--ts-ui-table-header-border, black)`},backgroundColor:G,backgroundImage:G};_model;_store;_hiddenColumns=new Set;_columns=[];_listeners=this.registerListenerBag(new p);_menuButton;_boundOnMenuButtonAction=()=>this.onMenuButtonAction();_visibleFields=[];_windowFirst=0;_scrollX=0;_focusedCol=null;_boundOnStoreSortChange=()=>this.onStoreSortChange();_columnsDirty=!0;_lastEnteredCells=void 0;_geometry={columnWidths:[],viewportWidth:0,columnHeight:0,parentRowHeight:0,filterRowHeight:0};_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`},{backgroundColor:G,backgroundImage:G}),this.getAria().setRole(`rowgroup`),this.setBorder({borderBottom:`1px solid var(--ts-ui-table-header-border, black)`}),this.setBackgroundColor(G),this.setBackgroundImage(G),this.setOverflow(`hidden`),this._model=e,this._store=t,this._store.on(`filterchange`,this._boundOnStoreFilterChange),this._store.on(`sortchange`,this._boundOnStoreSortChange);let n=new L,r=new L,i=new L;this.addRow(n),this.addRow(r),this.addRow(i),this._menuButton=new TableHeaderMenuButton(this._boundOnMenuButtonAction),super.addComponent(this._menuButton),this.rebuildCells(),this.rebuildParentCells(),this.subscribeTheme(()=>this.invalidateCellLayouts())}getModel(){return this._model}setStore(e){return this._store.off(`filterchange`,this._boundOnStoreFilterChange),this._store.off(`sortchange`,this._boundOnStoreSortChange),this._store=e,this._store.on(`filterchange`,this._boundOnStoreFilterChange),this._store.on(`sortchange`,this._boundOnStoreSortChange),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];this._lastEnteredCells=void 0;let r=this._windowFirst,i=n.getComponents().length,a=r+i-1;if(!this._columnsDirty&&e===r&&t===a)return!1;let o=t-e+1,s=e-r;if(!this._columnsDirty&&o===i&&s!==0&&Math.abs(s)<o)return this._lastEnteredCells=this.reconcileColumnWindowSlide(n,e,t,s),this._windowFirst=e,!0;let c=new Map(this._columns.map(e=>[e.getField().getName(),e])),l=n.getComponents().slice(),u=new Map;for(let e of l){let t=n.getLayoutConstraints(e)?.data;t&&u.set(t.getName(),e)}let d=t-e+1,f=Array(d).fill(void 0),p=new Set;for(let n=e;n<=t;n++){let t=this._visibleFields[n].getName(),r=u.get(t);r&&(f[n-e]=r,u.delete(t))}let m=Array.from(u.values());for(let r=e;r<=t;r++){let t=r-e;if(f[t]!==void 0)continue;let i=this._visibleFields[r],a=m.pop();a?n.setLayoutConstraints(a,{data:i}):(a=new Ct(i.getName(),i.getName(),null),n.addComponent(a,{data:i}),this.wireCell(a)),f[t]=a,p.add(r)}for(let n=e;n<=t;n++){let t=f[n-e],r=this._visibleFields[n],i=c.get(r.getName());t.setFieldName(r.getName()),t.setHeaderText(i?.getHeaderText()??r.getName());let a=r.getDescription();t.getTooltip()!==a&&t.setTooltip(a);let o=i?.getHeaderGlyph()??null;t.getHeaderGlyph()!==o&&t.setHeaderGlyph(o),t.setBaseBackground(i?.getGroupColor()??null),t.setRequired(i?.isRequired()??!1),(p.has(n)||this._columnsDirty)&&t.getAria().setColIndex(n+1)}for(let e of m)n.removeComponent(e),e.dispose();let h=new Map(f.map((e,t)=>[e,t]));return n.sortComponents((e,t)=>(h.get(e)??0)-(h.get(t)??0)),this._windowFirst=e,this._columnsDirty=!1,!0}reconcileColumnWindowSlide(e,t,n,r){let i=n-t+1,a=Math.abs(r),o=[...e.getComponents()],s=r>0?o.slice(a):o.slice(0,i-a),c=r>0?o.slice(0,a):o.slice(i-a);(r>0?range(n-a+1,n):range(t,t+a-1)).forEach((t,n)=>{let r=c[n],i=this._visibleFields[t],a=this._columns.find(e=>e.getField().getName()===i.getName());e.setLayoutConstraints(r,{data:i}),r.setFieldName(i.getName()),r.setHeaderText(a?.getHeaderText()??i.getName());let o=i.getDescription();r.getTooltip()!==o&&r.setTooltip(o);let s=a?.getHeaderGlyph()??null;r.getHeaderGlyph()!==s&&r.setHeaderGlyph(s),r.setBaseBackground(a?.getGroupColor()??null),r.setRequired(a?.isRequired()??!1),r.getAria().setColIndex(t+1)});let l=new Map;return s.forEach((e,t)=>l.set(e,r>0?t:t+a)),c.forEach((e,t)=>l.set(e,r>0?i-a+t:t)),e.sortComponents((e,t)=>(l.get(e)??0)-(l.get(t)??0)),c}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 kt(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(e){let t=this._store.getActiveSorters(),n=new Map(t.map((e,t)=>[e.field,{dir:e.dir,priority:t+1}])),r=t.length>1;for(let t of e??this.getColumns()){let e=n.get(t.getFieldName());e?t.setSortState(e.dir,r?e.priority:null):t.clearSortState()}}onStoreSortChange(){this.syncSortIndicators()}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(),en))}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}let r=this._filterWindowFirst,i=n.getComponents().length,a=r+i-1;if(!this._filterCellsDirty&&e===r&&t===a)return!1;let o=t-e+1,s=e-r;if(!this._filterCellsDirty&&o===i&&s!==0&&Math.abs(s)<o)return this.reconcileFilterWindowSlide(n,e,t,s),this._filterWindowFirst=e,!0;let c=new Map(this._columns.map(e=>[e.getField().getName(),e])),l=n.getComponents().slice(),u=new Map;for(let e of l){let t=n.getLayoutConstraints(e)?.data;t&&u.set(t.getName(),e)}let d=t-e+1,f=Array(d).fill(void 0);for(let n=e;n<=t;n++){let t=this._visibleFields[n].getName(),r=u.get(t);r&&(f[n-e]=r,u.delete(t))}let p=Array.from(u.values());for(let r=e;r<=t;r++){let t=r-e;if(f[t]!==void 0)continue;let i=this._visibleFields[r],a=c.get(i.getName())?.isFilterable()?columnFilterOperators(i.getType()):[],o=p.pop();o?n.setLayoutConstraints(o,{data:i}):(o=new Ht(i.getName(),a),n.addComponent(o,{data:i}),this.wireFilterCell(o)),f[t]=o}for(let n=e;n<=t;n++){let t=f[n-e],r=this._visibleFields[n],i=c.get(r.getName()),a=i?.isFilterable()?columnFilterOperators(r.getType()):[];t.setFieldName(r.getName()),t.setColumnLabel(i?.getHeaderText()??r.getName()),t.setOperators(a);let o=this.filterTarget(r.getName());t.setNumericOnly(o!==null&&columnFilterTakesNumericOperand(o)),t.getAria().setColIndex(n+1),a.length>0&&t.setFilterState(this.filterState().get(r.getName())??{clauses:[{operator:a[0],text:``}]})}for(let e of p)n.removeComponent(e),e.dispose();let m=new Map(f.map((e,t)=>[e,t]));return n.sortComponents((e,t)=>(m.get(e)??0)-(m.get(t)??0)),this._filterWindowFirst=e,this._filterCellsDirty=!1,!0}reconcileFilterWindowSlide(e,t,n,r){let i=n-t+1,a=Math.abs(r),o=[...e.getComponents()],s=r>0?o.slice(a):o.slice(0,i-a),c=r>0?o.slice(0,a):o.slice(i-a);(r>0?range(n-a+1,n):range(t,t+a-1)).forEach((t,n)=>{let r=c[n],i=this._visibleFields[t],a=this._columns.find(e=>e.getField().getName()===i.getName()),o=a?.isFilterable()?columnFilterOperators(i.getType()):[];e.setLayoutConstraints(r,{data:i}),r.setFieldName(i.getName()),r.setColumnLabel(a?.getHeaderText()??i.getName()),r.setOperators(o);let s=this.filterTarget(i.getName());r.setNumericOnly(s!==null&&columnFilterTakesNumericOperand(s)),r.getAria().setColIndex(t+1),o.length>0&&r.setFilterState(this.filterState().get(i.getName())??{clauses:[{operator:o[0],text:``}]})});let l=new Map;s.forEach((e,t)=>l.set(e,r>0?t:t+a)),c.forEach((e,t)=>l.set(e,r>0?i-a+t:t)),e.sortComponents((e,t)=>(l.get(e)??0)-(l.get(t)??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._lastEnteredCells),this.applyFocusedColumn()),this.positionColumnCells(n,t.columnHeight),this.positionParentCells(n,t.parentRowHeight),this.reconcileFilterCells(n.firstCol,n.lastCol),this.positionFilterCells(n,t.filterRowHeight),this}invalidateCellLayouts(){for(let e of this.getParentRow().getComponents())e.invalidateLayout();for(let e of this.getComponents()[1].getComponents())e.invalidateLayout();for(let e of this.getFilterRow().getComponents())e.invalidateLayout()}positionFilterCells(e,t){let n=this.getFilterRow().getComponents();for(let r=0;r<n.length;r++){let i=e.firstCol+r;n[r].applyBounds(e.lefts[i]??0,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;n[r].applyBounds(e.lefts[i]??0,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;r.applyBounds(s,0,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._store.off(`sortchange`,this._boundOnStoreSortChange),this._cellText.dispose(),super.destructor()}},q=o(TableHeader),J=`var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200)))`,FooterRow=class extends d{static ownClassStyleDefaults={border:{borderTop:`1px solid var(--ts-ui-border-color, black)`},backgroundColor:J,backgroundImage:J};constructor(){super({tag:`tfoot`},{backgroundColor:J,backgroundImage:J}),this.setBorder({borderTop:`1px solid var(--ts-ui-border-color, black)`}),this.setBackgroundColor(J),this.setBackgroundImage(J);let e=new L;this.addRow(e)}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}},Y=o(FooterRow),X=class Column{_field;_minWidth;_maxWidth;_width;_maxContentLength;_preserveWidth;_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._preserveWidth=t?.preserveWidth??!1,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}isWidthPreserved(){return this._preserveWidth}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))}};g.register(Re,ze,Be,Ve,He,Ue);var an=new me([{name:`field`,type:`string`,order:0},{name:`value`,type:`auto`,order:1},{name:`filler`,type:`string`,order:2}]),on=30,sn=4,cn=8,ln=8,un=100,dn=21,Z=6,fn=400,pn=50,Q=3,mn=60,hn=new Date(2e3,11,31,23,59,59),gn=.5,_n=20,vn=15,yn=24,$=16,bn=16,Table=class extends d{static ownClassStyleDefaults={border:{border:`1px solid var(--ts-ui-border-color, black)`},minSize:{width:100,height:100}};_store;_spec;_resolvedColumns=[];_hiddenColumns=new Set;_columnContextMenu=new ie;_columnDialog=null;_headerVisible;_header;_body;_bodyVisible;_footer;_footerVisible;_columnWidths=[];_dragEdgeIndex=null;_dragLastClientX=0;_columnWidthTarget=0;_savedColumnWidths=new Map;_pinnedColumnWidths=new Map;_columnConfigs=new Map;_exportMenuEnabled=!0;_filterRowVisible=!1;_listeners=this.registerListenerBag(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;_widthRefs=null;_sampledCandidates=new Map;_cellText=new CellTextResolver;constructor(e,t,n){super({tag:`table`}),this.setLayoutManager(new Ke),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=X.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 U(e),this._body.setHeader(this._header),this._body.on(`cellcontextmenu`,(e,t)=>this.showCellMenu(e,t)),this.addComponent(this._body),this._body.setColumns(this._resolvedColumns),this._footer=new Y,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._pinnedColumnWidths=new Map,this._columnWidthTarget=0,this._widthRefs=null,this._sampledCandidates=new Map,this._resolvedColumns=X.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 U?this._body=e:e instanceof Y&&(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(an,[]),this._rotatedStore.on(`sortchange`,()=>this.rebuildRotatedStore()),this._rotatedColumns=X.resolve(an.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._header.setColumnConfigs(n),this._body.bindViewState({store:e,columns:t,columnConfigs:n,hiddenColumns:r,rowReadOnly:i,rowVisible:a,rowSeparator:o,rowIndented:s}),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.unbindSourceStore(this._store),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()},{text:`Export as TSV`,glyph:`file-lines`,action:()=>this.exportTSV()}]);return}let n=this.columnsInMenuOrder(),r=[];n.length>0&&r.push(n.length>_n?{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 re({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()},{text:`Export as TSV`,glyph:`file-lines`,action:()=>this.exportTSV()}),this._columnContextMenu.show(e,t,r)}showCellMenu(e,t){this._columnContextMenu.show(e,t,[{text:`Copy`,glyph:`clipboard`,action:()=>this._body.copyContextMenuSelection()}])}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 re({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/vn))}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 d({layoutManager:new b({itemAlign:`start`,justify:`center`,spacing:yn}),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 y(o,{fontWeight:`bold`});n.push(e)}n.push(new te({label:e,selected:!t.has(e),enabled:!a.isUnhideable(),insets:o===null?void 0:new r(0,0,0,bn),listeners:{change:n=>{n?t.delete(e):t.add(e)}}})),i=o}return new d({layoutManager:new ne({itemAlign:`stretch`}),components:n})}setExportMenuEnabled(e){return this._exportMenuEnabled=e,this}exportCSV(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();H.exportCSV(t,n,this._columnConfigs,this._cellText,e)}exportJSON(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();H.exportJSON(t,n,this._columnConfigs,this._cellText,e)}exportTSV(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();H.exportTSV(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(H.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()??on),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,S(o,n,1,i,a)):Math.min(-c,S(o,n,-1,i,a),S(s,n,1,i,a)+f);if(p<=1e-6)return;let m=l>0?f>gn?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._displayMode!==`rotated`&&h.forEach((e,t)=>{e!==n[t]&&this._pinnedColumnWidths.set(r[t].getField().getName(),e)}),this._dragLastClientX+=l*p,this._columnWidths=h;let g=h.reduce((e,t)=>e+t,0);this._columnWidthTarget=g>u+gn?g:0,this.scheduleLayout()}resetColumns(){this._hiddenColumns=new Set,this.initHiddenFromSpec(),this._savedColumnWidths=new Map,this._pinnedColumnWidths=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.pinnedWidth(e);if(i!==null)return i;let a=this.columnWidthPolicy(e,t[r],n[r]),o=e.getWidth()??a.preferred;return o===null?null:this.clampColumnWidth(o,e,a)})}pinnedWidth(e){return this._displayMode===`rotated`?null:this._pinnedColumnWidths.get(e.getField().getName())??null}clampColumnWidth(e,t,r){return n.clamp(e,t.getMinWidth()??r.min,t.getMaxWidth()??fn)}flexColumnWidth(e){let t=this.measureHeaders([e])[0],n=this.columnWidthPolicy(e,t,null);return this.clampColumnWidth(Math.max(un,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+dn)}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,mn))]}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(H.formatValue(r,e.get(`value`),new Map,this._cellText)??``):null}collectCandidates(e){let t=e.map(e=>this.samplesRecordText(e)),n=Math.min(pn,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(H.formatValue(e,o,this._columnConfigs,this._cellText)??``),c=r.get(a)??[];this.keepLongest(c,s),r.set(a,c)})}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*sn+Z,i=e.getMaxContentLength()??this.sampledDigits(e)??cn;return{min:n,preferred:Math.max(n,r.digitPx*i+Z,t)}}default:{let i=Math.max(on,r.digitPx*ln+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(H.formatValue(n,hn,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._store.getCount()===0||(this._columnWidths=[],this._savedColumnWidths=new Map,this.scheduleLayout())}},xn=o(Table);export{ct as A,M as B,isClauseEffective as C,L as D,Ct as E,it as F,D as G,A as H,rt as I,T as J,E as K,nt as L,st as M,ot as N,I as O,at as P,P as R,effectiveClauseCount as S,kt as T,k as U,j as V,O as W,CellEditor as X,Cell as Y,columnFilterOperatorGlyph as _,U as a,columnFilterStatesEqual as b,V as c,z as d,Kt as f,buildColumnFilter as g,Ht as h,q as i,F as j,lt as k,CellEditorPool as l,Ut as m,X as n,Yt as o,Gt as p,CellRenderer as q,Y as r,H as s,xn as t,B as u,columnFilterOperatorLabel as v,At as w,columnFilterTakesOperand as x,columnFilterOperators as y,N as z};
7
+ //# sourceMappingURL=Table-3McEw5gr.js.map