@jimka/typescript-ui 0.1.0 → 0.2.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 (216) hide show
  1. package/README.md +5 -18
  2. package/dist/lib/{AbstractBooleanInput-C3rj7sje.js → AbstractBooleanInput-BGesvIZy.js} +2 -2
  3. package/dist/lib/{AbstractBooleanInput-C3rj7sje.js.map → AbstractBooleanInput-BGesvIZy.js.map} +1 -1
  4. package/dist/lib/{AbstractInput-DD-NpicS.js → AbstractInput-BxOtFrER.js} +2 -2
  5. package/dist/lib/{AbstractInput-DD-NpicS.js.map → AbstractInput-BxOtFrER.js.map} +1 -1
  6. package/dist/lib/AnimatedDropdown-CZQEqQi-.js +2 -0
  7. package/dist/lib/AnimatedDropdown-CZQEqQi-.js.map +1 -0
  8. package/dist/lib/Border-BgaZkc1R.js +2 -0
  9. package/dist/lib/Border-BgaZkc1R.js.map +1 -0
  10. package/dist/lib/{BoxLayout-DgZukB5_.js → BoxLayout-DrKGfsup.js} +2 -2
  11. package/dist/lib/{BoxLayout-DgZukB5_.js.map → BoxLayout-DrKGfsup.js.map} +1 -1
  12. package/dist/lib/Button-U1rsP4v8.js +2 -0
  13. package/dist/lib/Button-U1rsP4v8.js.map +1 -0
  14. package/dist/lib/{Card-UF0fq8cQ.js → Card-BVwOS8AG.js} +2 -2
  15. package/dist/lib/{Card-UF0fq8cQ.js.map → Card-BVwOS8AG.js.map} +1 -1
  16. package/dist/lib/ComboBox-B9EDPu6T.js +2 -0
  17. package/dist/lib/ComboBox-B9EDPu6T.js.map +1 -0
  18. package/dist/lib/Component-DXf5a3g0.js +2 -0
  19. package/dist/lib/Component-DXf5a3g0.js.map +1 -0
  20. package/dist/lib/Container-D5H8VxJK.js +2 -0
  21. package/dist/lib/{Container-3KsvsJ6S.js.map → Container-D5H8VxJK.js.map} +1 -1
  22. package/dist/lib/DOM-CGn7xyTw.js +2 -0
  23. package/dist/lib/DOM-CGn7xyTw.js.map +1 -0
  24. package/dist/lib/DragManager-CI4mZQFy.js +2 -0
  25. package/dist/lib/{DragManager-tPMnbjeO.js.map → DragManager-CI4mZQFy.js.map} +1 -1
  26. package/dist/lib/FieldDecorator-CJs9gwqH.js +2 -0
  27. package/dist/lib/{FieldDecorator-E7WzutjO.js.map → FieldDecorator-CJs9gwqH.js.map} +1 -1
  28. package/dist/lib/{Fit-CFIr4P9R.js → Fit-DjRsiwlg.js} +2 -2
  29. package/dist/lib/{Fit-CFIr4P9R.js.map → Fit-DjRsiwlg.js.map} +1 -1
  30. package/dist/lib/Glyph-KEf4nIv2.js +2 -0
  31. package/dist/lib/Glyph-KEf4nIv2.js.map +1 -0
  32. package/dist/lib/{Grid-Czux--Mr.js → Grid-DdL9TVeJ.js} +2 -2
  33. package/dist/lib/{Grid-Czux--Mr.js.map → Grid-DdL9TVeJ.js.map} +1 -1
  34. package/dist/lib/GridConstraints-DkLueyrf.js +2 -0
  35. package/dist/lib/GridConstraints-DkLueyrf.js.map +1 -0
  36. package/dist/lib/{HBox-Q8y1PHlk.js → HBox-Ce0GTCJP.js} +2 -2
  37. package/dist/lib/{HBox-Q8y1PHlk.js.map → HBox-Ce0GTCJP.js.map} +1 -1
  38. package/dist/lib/{Header-zPdvC2AX.js → Header-BQIVpBte.js} +2 -2
  39. package/dist/lib/{Header-zPdvC2AX.js.map → Header-BQIVpBte.js.map} +1 -1
  40. package/dist/lib/{IconText-BvGfu7eq.js → IconText-Bo4Qcnot.js} +2 -2
  41. package/dist/lib/{IconText-BvGfu7eq.js.map → IconText-Bo4Qcnot.js.map} +1 -1
  42. package/dist/lib/LayoutConstraints-DkctJZXB.js +2 -0
  43. package/dist/lib/LayoutConstraints-DkctJZXB.js.map +1 -0
  44. package/dist/lib/LayoutSerialization-BT66TY83.js +2 -0
  45. package/dist/lib/LayoutSerialization-BT66TY83.js.map +1 -0
  46. package/dist/lib/LayoutSizes-DU3qSq0w.js +2 -0
  47. package/dist/lib/LayoutSizes-DU3qSq0w.js.map +1 -0
  48. package/dist/lib/List-DtTVTyWW.js +2 -0
  49. package/dist/lib/List-DtTVTyWW.js.map +1 -0
  50. package/dist/lib/Menu-Dz4L7EKJ.js +2 -0
  51. package/dist/lib/Menu-Dz4L7EKJ.js.map +1 -0
  52. package/dist/lib/MenuButton-VJ5uC3c1.js +2 -0
  53. package/dist/lib/{MenuButton-JQQaKThJ.js.map → MenuButton-VJ5uC3c1.js.map} +1 -1
  54. package/dist/lib/Panel-DzWdYwq1.js +2 -0
  55. package/dist/lib/Panel-DzWdYwq1.js.map +1 -0
  56. package/dist/lib/Position-A39T7-_1.js +2 -0
  57. package/dist/lib/Position-A39T7-_1.js.map +1 -0
  58. package/dist/lib/ProgressSpinner-zJKtGyNJ.js +2 -0
  59. package/dist/lib/ProgressSpinner-zJKtGyNJ.js.map +1 -0
  60. package/dist/lib/RadioButton-CYSSv4nV.js +2 -0
  61. package/dist/lib/RadioButton-CYSSv4nV.js.map +1 -0
  62. package/dist/lib/{RovingTabIndex-CFIzIjjU.js → RovingTabIndex-BSZ31Vp5.js} +2 -2
  63. package/dist/lib/{RovingTabIndex-CFIzIjjU.js.map → RovingTabIndex-BSZ31Vp5.js.map} +1 -1
  64. package/dist/lib/Scrollbar-BhtOjqkG.js +2 -0
  65. package/dist/lib/Scrollbar-BhtOjqkG.js.map +1 -0
  66. package/dist/lib/Slider-CdXm7E64.js +2 -0
  67. package/dist/lib/Slider-CdXm7E64.js.map +1 -0
  68. package/dist/lib/{Spacer-BVQncB5B.js → Spacer-D9NGW4QG.js} +2 -2
  69. package/dist/lib/{Spacer-BVQncB5B.js.map → Spacer-D9NGW4QG.js.map} +1 -1
  70. package/dist/lib/TabButton-CThevdY_.js +2 -0
  71. package/dist/lib/{TabButton-pZKFYg7b.js.map → TabButton-CThevdY_.js.map} +1 -1
  72. package/dist/lib/Text-gz6qjFfP.js +2 -0
  73. package/dist/lib/Text-gz6qjFfP.js.map +1 -0
  74. package/dist/lib/Tooltip-tkXDk5Bo.js +3 -0
  75. package/dist/lib/Tooltip-tkXDk5Bo.js.map +1 -0
  76. package/dist/lib/{VBox-D5B9ecw0.js → VBox-EIqw85Rh.js} +2 -2
  77. package/dist/lib/{VBox-D5B9ecw0.js.map → VBox-EIqw85Rh.js.map} +1 -1
  78. package/dist/lib/VirtualRowView-BxpHQ_u8.js +2 -0
  79. package/dist/lib/{VirtualRowView-Con9SWiU.js.map → VirtualRowView-BxpHQ_u8.js.map} +1 -1
  80. package/dist/lib/VirtualScroller-DwEEJE1_.js +2 -0
  81. package/dist/lib/{VirtualScroller-BPDmO1ir.js.map → VirtualScroller-DwEEJE1_.js.map} +1 -1
  82. package/dist/lib/component/button.es.js +1 -1
  83. package/dist/lib/component/button.es.js.map +1 -1
  84. package/dist/lib/component/chart.es.js +1 -1
  85. package/dist/lib/component/chart.es.js.map +1 -1
  86. package/dist/lib/component/container.es.js +1 -1
  87. package/dist/lib/component/container.es.js.map +1 -1
  88. package/dist/lib/component/diagram.es.js +1 -1
  89. package/dist/lib/component/diagram.es.js.map +1 -1
  90. package/dist/lib/component/display.es.js +1 -1
  91. package/dist/lib/component/display.es.js.map +1 -1
  92. package/dist/lib/component/editor.es.js +3 -1
  93. package/dist/lib/component/editor.es.js.map +1 -1
  94. package/dist/lib/component/input.es.js +1 -1
  95. package/dist/lib/component/input.es.js.map +1 -1
  96. package/dist/lib/component/list.es.js +1 -1
  97. package/dist/lib/component/list.es.js.map +1 -1
  98. package/dist/lib/component/menubar.es.js +1 -1
  99. package/dist/lib/component/menubar.es.js.map +1 -1
  100. package/dist/lib/component/table.es.js +2 -2
  101. package/dist/lib/component/table.es.js.map +1 -1
  102. package/dist/lib/component/tree.es.js +1 -1
  103. package/dist/lib/component/tree.es.js.map +1 -1
  104. package/dist/lib/core.es.js +1 -1
  105. package/dist/lib/core.es.js.map +1 -1
  106. package/dist/lib/layout.es.js +1 -1
  107. package/dist/lib/overlay.es.js +1 -1
  108. package/dist/lib/overlay.es.js.map +1 -1
  109. package/dist/lib/primitive.es.js +1 -1
  110. package/dist/lib/router.es.js +2 -0
  111. package/dist/lib/router.es.js.map +1 -0
  112. package/dist/lib/types/component/button/Button.d.ts +4 -3
  113. package/dist/lib/types/component/chart/AbstractChart.d.ts +1 -1
  114. package/dist/lib/types/component/chart/ChartLegend.d.ts +1 -1
  115. package/dist/lib/types/component/container/DialogBackdrop.d.ts +2 -1
  116. package/dist/lib/types/component/container/MenuItem.d.ts +1 -1
  117. package/dist/lib/types/component/container/ScrollStrip.d.ts +1 -0
  118. package/dist/lib/types/component/container/SplitGutter.d.ts +3 -2
  119. package/dist/lib/types/component/container/TabBar.d.ts +1 -2
  120. package/dist/lib/types/component/container/TabPanel.d.ts +6 -3
  121. package/dist/lib/types/component/container/WindowBorder.d.ts +2 -1
  122. package/dist/lib/types/component/container/WindowHeader.d.ts +2 -1
  123. package/dist/lib/types/component/display/Glyph.d.ts +2 -1
  124. package/dist/lib/types/component/display/Markdown.d.ts +11 -1
  125. package/dist/lib/types/component/display/PaginationBar.d.ts +1 -1
  126. package/dist/lib/types/component/display/SpinnerWrap.d.ts +2 -0
  127. package/dist/lib/types/component/display/Video.d.ts +1 -1
  128. package/dist/lib/types/component/display/VideoPlayer.d.ts +1 -1
  129. package/dist/lib/types/component/display/index.d.ts +1 -1
  130. package/dist/lib/types/component/editor/CodeEditor.d.ts +2 -1
  131. package/dist/lib/types/component/editor/MarkdownEditor.d.ts +7 -1
  132. package/dist/lib/types/component/editor/markdownTableTransformer.d.ts +2 -0
  133. package/dist/lib/types/component/input/Checkbox.d.ts +2 -1
  134. package/dist/lib/types/component/input/Link.d.ts +1 -1
  135. package/dist/lib/types/component/input/RadioButton.d.ts +2 -1
  136. package/dist/lib/types/component/input/Slider.d.ts +2 -1
  137. package/dist/lib/types/component/input/Text.d.ts +1 -3
  138. package/dist/lib/types/component/input/TextInput.d.ts +3 -2
  139. package/dist/lib/types/component/list/AbstractSelectableList.d.ts +2 -1
  140. package/dist/lib/types/component/menubar/MenuBarButton.d.ts +1 -1
  141. package/dist/lib/types/core/AnimatedDropdown.d.ts +6 -2
  142. package/dist/lib/types/core/Animation.d.ts +9 -6
  143. package/dist/lib/types/core/Component.d.ts +16 -11
  144. package/dist/lib/types/core/DOM.d.ts +14 -0
  145. package/dist/lib/types/core/Event.d.ts +12 -6
  146. package/dist/lib/types/core/index.d.ts +2 -2
  147. package/dist/lib/types/layout/Accordion.d.ts +2 -0
  148. package/dist/lib/types/layout/Border.d.ts +1 -0
  149. package/dist/lib/types/layout/CollapseSupport.d.ts +5 -1
  150. package/dist/lib/types/layout/LayoutConstraints.d.ts +1 -0
  151. package/dist/lib/types/layout/LayoutManager.d.ts +2 -0
  152. package/dist/lib/types/layout/Split.d.ts +1 -0
  153. package/dist/lib/types/layout/Tab.d.ts +10 -3
  154. package/dist/lib/types/overlay/AbstractWindow.d.ts +9 -2
  155. package/dist/lib/types/overlay/Dialog.d.ts +6 -0
  156. package/dist/lib/types/overlay/Dock.d.ts +12 -2
  157. package/dist/lib/types/overlay/Drawer.d.ts +5 -0
  158. package/dist/lib/types/overlay/Menu.d.ts +3 -1
  159. package/dist/lib/types/overlay/Notification.d.ts +3 -0
  160. package/dist/lib/types/overlay/Popover.d.ts +3 -1
  161. package/dist/lib/types/overlay/Rail.d.ts +7 -0
  162. package/dist/lib/types/overlay/Tooltip.d.ts +3 -0
  163. package/dist/lib/types/overlay/index.d.ts +1 -1
  164. package/dist/lib/types/router/RoutePattern.d.ts +18 -0
  165. package/dist/lib/types/router/Router.d.ts +36 -0
  166. package/dist/lib/types/router/index.d.ts +2 -0
  167. package/dist/lib/validation.es.js +1 -1
  168. package/llms.txt +9 -5
  169. package/package.json +6 -1
  170. package/dist/lib/AnimatedDropdown-BbGCs70E.js +0 -2
  171. package/dist/lib/AnimatedDropdown-BbGCs70E.js.map +0 -1
  172. package/dist/lib/Border-oZC_SDy8.js +0 -2
  173. package/dist/lib/Border-oZC_SDy8.js.map +0 -1
  174. package/dist/lib/Button-DEUtBqK4.js +0 -2
  175. package/dist/lib/Button-DEUtBqK4.js.map +0 -1
  176. package/dist/lib/ComboBox-GOBOAJ1N.js +0 -2
  177. package/dist/lib/ComboBox-GOBOAJ1N.js.map +0 -1
  178. package/dist/lib/Component-BR2f0Itb.js +0 -2
  179. package/dist/lib/Component-BR2f0Itb.js.map +0 -1
  180. package/dist/lib/Container-3KsvsJ6S.js +0 -2
  181. package/dist/lib/DragManager-tPMnbjeO.js +0 -2
  182. package/dist/lib/FieldDecorator-E7WzutjO.js +0 -2
  183. package/dist/lib/Glyph-WUqTF_Z9.js +0 -2
  184. package/dist/lib/Glyph-WUqTF_Z9.js.map +0 -1
  185. package/dist/lib/GridConstraints-Q3wvuovN.js +0 -2
  186. package/dist/lib/GridConstraints-Q3wvuovN.js.map +0 -1
  187. package/dist/lib/LayoutConstraints-CHI2lhPd.js +0 -2
  188. package/dist/lib/LayoutConstraints-CHI2lhPd.js.map +0 -1
  189. package/dist/lib/LayoutSerialization-CWU0iEuV.js +0 -2
  190. package/dist/lib/LayoutSerialization-CWU0iEuV.js.map +0 -1
  191. package/dist/lib/LayoutSizes-BW4wyGDI.js +0 -2
  192. package/dist/lib/LayoutSizes-BW4wyGDI.js.map +0 -1
  193. package/dist/lib/List-D-GhoVgB.js +0 -2
  194. package/dist/lib/List-D-GhoVgB.js.map +0 -1
  195. package/dist/lib/Menu-Wz4MK6sA.js +0 -2
  196. package/dist/lib/Menu-Wz4MK6sA.js.map +0 -1
  197. package/dist/lib/MenuButton-JQQaKThJ.js +0 -2
  198. package/dist/lib/Panel-DIsdaqc2.js +0 -2
  199. package/dist/lib/Panel-DIsdaqc2.js.map +0 -1
  200. package/dist/lib/Position-B-WfZYAJ.js +0 -2
  201. package/dist/lib/Position-B-WfZYAJ.js.map +0 -1
  202. package/dist/lib/ProgressSpinner-Dzaka7_c.js +0 -2
  203. package/dist/lib/ProgressSpinner-Dzaka7_c.js.map +0 -1
  204. package/dist/lib/RadioButton-eI3-vXn3.js +0 -2
  205. package/dist/lib/RadioButton-eI3-vXn3.js.map +0 -1
  206. package/dist/lib/Scrollbar-DchfiFKC.js +0 -2
  207. package/dist/lib/Scrollbar-DchfiFKC.js.map +0 -1
  208. package/dist/lib/Slider-xRxNSjFN.js +0 -2
  209. package/dist/lib/Slider-xRxNSjFN.js.map +0 -1
  210. package/dist/lib/TabButton-pZKFYg7b.js +0 -2
  211. package/dist/lib/Text-D1RrBY52.js +0 -2
  212. package/dist/lib/Text-D1RrBY52.js.map +0 -1
  213. package/dist/lib/Tooltip-4lU_tf6r.js +0 -3
  214. package/dist/lib/Tooltip-4lU_tf6r.js.map +0 -1
  215. package/dist/lib/VirtualRowView-Con9SWiU.js +0 -2
  216. package/dist/lib/VirtualScroller-BPDmO1ir.js +0 -2
@@ -1,4 +1,4 @@
1
- import{a as e,l as t,n,u as r}from"../Position-B-WfZYAJ.js";import{_ as i,c as a,d as o,f as s,l as c,n as l,t as u,u as d,y as f}from"../Component-BR2f0Itb.js";import{t as p}from"../ListenerBag-WPdKuuds.js";import{t as m}from"../Container-3KsvsJ6S.js";import{t as h}from"../Glyph-WUqTF_Z9.js";import{a as g,t as _}from"../Tooltip-4lU_tf6r.js";import{t as v}from"../Fit-CFIr4P9R.js";import{t as y}from"../Text-D1RrBY52.js";import{t as ee}from"../HBox-Q8y1PHlk.js";import{a as te,o as ne,t as b}from"../Border-oZC_SDy8.js";import{t as x}from"../ProgressSpinner-Dzaka7_c.js";import{t as S}from"../Placement-7kqdaK4Z.js";import{t as C}from"../Button-DEUtBqK4.js";import{t as w}from"../DragManager-tPMnbjeO.js";import{t as re}from"../Menu-Wz4MK6sA.js";import{t as ie}from"../Card-UF0fq8cQ.js";import{a as ae,g as oe,n as se,o as ce,r as le,t as ue,u as T}from"../ComboBox-GOBOAJ1N.js";import{caret_down as de}from"../glyphs/solid/caret_down.es.js";import{t as fe}from"../reduceModifierSelection-DTo8HyFl.js";import{caret_right as pe}from"../glyphs/solid/caret_right.es.js";import{t as me}from"../VirtualRowView-Con9SWiU.js";import{plus as he}from"../glyphs/solid/plus.es.js";import{minus as ge}from"../glyphs/solid/minus.es.js";import{arrows_rotate as _e}from"../glyphs/solid/arrows_rotate.es.js";import{ban as ve}from"../glyphs/solid/ban.es.js";var ye=60,be=90,xe=110,Se=8,Ce=16,Table$1=class extends c{constructor(e){super(),e&&this.applyOptions(e)}attach(e){let t=e.getClassName();if(t!=`Table`&&t!=`TreeTable`)throw Error(`Container must be a Table or TreeTable.`);return super.attach(e),this}doLayout(){let e=this.getContainer();if(!e)return;let n=e.getInnerSize();if(!n)return;let i=e.getContentInsets(),a=e.getColumns(),o=e.getHeader().getColumns().length,s=n.width-r.source.getScrollBarWidth(),c=e.getColumnWidths();c.length===o?(c=this.rescaleWidths(a,c,s),e.setColumnWidths(c)):(c=this.initializeWidths(a,s),e.setColumnWidths(c));let u=e.getHeader(),d=e.getBody(),f=e.getFooter();if(e.isHeaderVisible()&&u&&u.isDisplayed()){let e=l.getTheme(),a=t.lineHeightPx()+2*(e.table.cell.padding??2),o=u.hasParentRow(),s=o?a:0,d=s+a,f=c.reduce((e,t)=>e+t,0),p=Math.max(n.width,f);u.setAutoCommitStyle(!1),u.setX(i.getLeft()),u.setY(i.getTop()),u.setWidth(n.width),u.setHeight(d),u.setAutoCommitStyle(!0);let m=u.getParentRow();m.setAutoCommitStyle(!1),m.setX(0),m.setY(0),m.setWidth(p),m.setHeight(s),m.setAutoCommitStyle(!0),o&&m.getComponents().forEach(e=>{let t=m.getLayoutConstraints(e)?.data,n=t?.spanFrom??0,r=t?.spanTo??0,i=0;for(let e=0;e<n;e++)i+=c[e];let a=0;for(let e=n;e<=r;e++)a+=c[e];e.setAutoCommitStyle(!1),e.setX(i),e.setY(0),e.setWidth(a),e.setHeight(s),e.setAutoCommitStyle(!0),e.doLayout()});let h=u.getComponents()[1];h.setAutoCommitStyle(!1),h.setX(0),h.setY(s),h.setWidth(p),h.setHeight(a),h.setAutoCommitStyle(!0);let g=u.getColumns(),_=0;g.forEach((e,t)=>{e.setAutoCommitStyle(!1),e.setX(_),e.setY(0),e.setWidth(c[t]),e.setHeight(a),e.setAutoCommitStyle(!0),e.doLayout(),_+=c[t]});let v=r.source.getScrollBarWidth(),y=u.getScrollbarCover();r.sink.apply(y,{style:{left:n.width-v+`px`,width:v+`px`,height:d+`px`}})}if(e.isFooterVisible()&&f&&f.isDisplayed()){let e=l.getTheme(),r=t.lineHeightPx()+2*(e.table.cell.padding??2),a=f.getColumns();f.setAutoCommitStyle(!1),f.setX(i.getLeft()),f.setY(i.getTop()+n.height-r),f.setWidth(n.width),f.setHeight(r),f.setAutoCommitStyle(!0);let o=0;a.forEach((e,t)=>{e.setAutoCommitStyle(!1),e.setX(o),e.setY(0),e.setWidth(c[t]),e.setHeight(r),e.setAutoCommitStyle(!0),e.doLayout(),o+=c[t]})}if(e.isBodyVisible()&&d&&d.isDisplayed()){let t=e.isHeaderVisible()&&u&&u.isDisplayed()?u.getHeight():0,r=e.isFooterVisible()&&f&&f.isDisplayed()?f.getHeight():0;d.setAutoCommitStyle(!1),d.setX(i.getLeft()),d.setY(i.getTop()+t),d.setWidth(n.width),d.setHeight(n.height-t-r),d.setAutoCommitStyle(!0),d.renderWindow(s,c)}}initializeWidths(n,r){let i=n.map(e=>{let t=e.getField(),n=t.getDescription().length*Se+Ce;switch(t.getType()){case`boolean`:return this.clamp(Math.max(ye,n),e);case`number`:return this.clamp(Math.max(be,n),e);case`date`:return this.clamp(Math.max(xe,n),e);default:return null}}),a=i.reduce((e,t)=>e+(t??0),0),o=i.filter(e=>e===null).length,s=o>0?(r-a)/o:0;return i.map((r,i)=>{if(r!==null)return r;let a=n[i],o=a.getMinWidth()??30,c=a.getMaxWidth()??e;return t.clamp(s,o,c)})}rescaleWidths(e,t,n){let r=e.map(e=>{let t=e.getField().getType();return t===`boolean`||t===`number`||t===`date`}),i=t.reduce((e,t,n)=>e+(r[n]?t:0),0),a=t.reduce((e,t,n)=>e+(r[n]?0:t),0),o=n-i;if(a<=0||Math.abs(a-o)<=.5)return t;let s=o/a;return t.map((t,n)=>r[n]?t:this.clamp(t*s,e[n]))}clamp(n,r){let i=r.getMinWidth()??30,a=r.getMaxWidth()??e;return t.clamp(n,i,a)}},we=s(Table$1);function blurRelatedTargetHandle(e){return e.relatedTarget?r.source.intern(e.relatedTarget):null}var CellEditor=class extends u{_onCommitRequested=null;constructor(e=`div`){super({tag:e}),this.setLayoutManager(new v);let applyPadding=()=>{let e=l.getTheme().table.cell.padding;this.setInsets(new n(0,e,0,e))};applyPadding(),this.subscribeTheme(applyPadding)}retainsFocus(e){return!1}setCommitRequestHandler(e){this._onCommitRequested=e}requestCommit(){this._onCommitRequested?.()}getContentX(){return 0}},Cell=class extends u{_readOnly;_requiredEmpty=!1;_baseBackground=`var(--ts-ui-table-cell-bg, transparent)`;_renderer;_editor;_editorPool=null;_scrollIntoView=null;_activeEditor=null;_listeners=new p;constructor(e,t,r,i,a){super({tag:e||`td`}),this.setLayoutManager(new ie),this.getAria().setRole(`gridcell`),this._readOnly=!1,this._renderer=t,this._editor=r,this.setInsets(new n(0,0,0,0)),this.setBackgroundColor(`var(--ts-ui-table-cell-bg, transparent)`),this.setForegroundColor(`var(--ts-ui-table-cell-color, inherit)`),this.setBorder(`var(--ts-ui-table-cell-border, none)`),this.subscribeTheme(()=>this.setBorder(`var(--ts-ui-table-cell-border, none)`)),this.addComponent(t,i),r&&(this.addComponent(r,a),r.setCommitRequestHandler(()=>this.commitEdit()),f.addListener(r,`blur`,e=>{r.retainsFocus(blurRelatedTargetHandle(e))||this.commitEdit()}),f.addListener(r,`keydown`,e=>this.onKeyDown(e))),f.addListener(t,`dblclick`,()=>this.startEdit())}clampsToContentSize(){return!1}getEditorKey(){return null}setEditorPool(e){return this._editorPool=e,this}setScrollIntoViewHandler(e){return this._scrollIntoView=e,this}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}isReadOnly(){return!!this._readOnly}setReadOnly(e){if(this._readOnly===e)return this;if(this._readOnly=e,e&&this._activeEditor){let e=this._activeEditor.getValue();this._renderer.setValue(e),this.emit(`commit`,e),this.detachEditor()}return this._applyStateTint(),this}setRequiredEmpty(e){return this._requiredEmpty===e?this:(this._requiredEmpty=e,this._applyStateTint(),this)}setBaseBackground(e){return this._baseBackground=e,this._applyStateTint(),this}_applyStateTint(){this._readOnly?(this.setBackgroundColor(`var(--ts-ui-table-cell-readonly-bg, rgba(0, 0, 0, 0.04))`),this.setCursor(`default`)):(this.setBackgroundColor(this._baseBackground),this.clearCursor()),this._requiredEmpty&&!this._readOnly?this.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-required-outline, rgba(220, 60, 60, 0.6))`):this.clearShadow()}onKeyDown(e){let t=e.detail?.keyCode;t==13?(this.commitEdit(),this.emit(`editend`)):t==27&&(this.cancelEdit(),this.emit(`editend`))}isEditing(){return this._activeEditor!==null}getLayoutManager(){return super.getLayoutManager()}startEdit(){if(this.isReadOnly()||this.isEditing())return;if(this._scrollIntoView?.(),this._editor)this._activeEditor=this._editor;else{let e=this.getEditorKey();if(!e||!this._editorPool)return;let t=this._editorPool.acquire(e,this);if(!t)return;this._activeEditor=t,this.addComponent(this._activeEditor)}let e=this._activeEditor,t=this._renderer;this.prepareEditor(e),e.setValue(t.getValue()),this.getLayoutManager().setVisibleComponentId(e.getId()),this.doLayout(),e.focus(!0)}commitEdit(){if(this.isReadOnly()||!this.isEditing())return this;let e=this._activeEditor.getValue();return this._renderer.setValue(e),this.emit(`commit`,e),this.detachEditor(),this}cancelEdit(){this.isReadOnly()||!this.isEditing()||this.detachEditor()}detachEditor(){let e=this._activeEditor;e&&(this._activeEditor=null,this.getLayoutManager().setVisibleComponentId(this._renderer.getId()),this.doLayout(),this._editor!==e&&(this.removeComponent(e),this._editorPool?.release()))}setValue(e){return this._renderer.setValue(e),this}getRenderer(){return this._renderer}doLayout(){return super.doLayout(),this.alignEditorWithContent(),this}alignEditorWithContent(){let e=this._activeEditor;if(!e)return;let t=this._renderer.getContentX();if(t<=0)return;let n=this.getWidth()??0,r=Math.max(0,n-t);e.setAutoCommitStyle(!1),e.setX(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),f.addListener(e,`dblclick`,()=>this.startEdit())),this._renderer=e,this.getLayoutManager().setVisibleComponentId(e.getId())}prepareEditor(e){}},BooleanEditor=class extends CellEditor{_checkBox=new se;_value=null;_listeners=new p;_suppressCommit=!1;constructor(){super(),this._checkBox.setIndeterminate(!0),this._checkBox.setAnimated(!1),this.addComponent(this._checkBox),this._checkBox.on(`action`,()=>{this._suppressCommit||(this._value=this._checkBox.isSelected(),this.emit(`change`,this._value))})}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}getValue(){return this._value}setValue(e){this._value=e??null,this._suppressCommit=!0;try{this._value===null?this._checkBox.setIndeterminate(!0):(this._checkBox.setIndeterminate(!1),this._checkBox.setSelected(this._value))}finally{this._suppressCommit=!1}return this}setReadOnly(e){return this._checkBox.setReadOnly(e),this}isReadOnly(){return this._checkBox.isReadOnly()}toggle(){let e=!this._checkBox.isSelected();return this._checkBox.setIndeterminate(!1),this._checkBox.setSelected(e),this._value=e,this.emit(`change`,this._value),this}},E=s(BooleanEditor),CellRenderer=class extends u{constructor(){super(),this.setLayoutManager(new v);let applyPadding=()=>{let e=l.getTheme().table.cell.padding;this.setInsets(new n(0,e,0,e))};applyPadding(),this.subscribeTheme(applyPadding)}getContentX(){return 0}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}},StringRenderer=class extends CellRenderer{_text=new y;_value=null;constructor(){super(),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){return this._value=e??null,this._text.setText(this._value===null?``:String(this._value)),this}},D=s(StringRenderer),NumberRenderer=class extends CellRenderer{_text=new y;_value=null;constructor(){super(),this._text.setPointerEvents(`none`),this._text.setTextAlign(`right`),this._text.setText(``),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){return this._value=e??null,this._text.setText(this._value===null?``:String(this._value)),this}},O=s(NumberRenderer),DateRenderer=class extends CellRenderer{_text=new y;_value=null;constructor(){super(),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._text.setText(e?e.toLocaleDateString():``),this}},k=s(DateRenderer),TimeRenderer=class extends CellRenderer{_text=new y;_value=null;_showSeconds;constructor(e=!1){super(),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){this._value=e??null;let t=this._showSeconds?{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}:{hour:`2-digit`,minute:`2-digit`};return this._text.setText(e?e.toLocaleTimeString(void 0,t):``),this}},A=s(TimeRenderer),DateTimeRenderer=class extends CellRenderer{_text=new y;_value=null;_showSeconds;constructor(e=!1){super(),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){this._value=e??null;let t=this._showSeconds?{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}:{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`};return this._text.setText(e?e.toLocaleString(void 0,t):``),this}},j=s(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 h(t),this._glyph.setPointerEvents(`none`),this.addComponent(this._glyph)),this)}},M=s(GlyphRenderer);function normalizeComboOptions(e){return e.map(e=>typeof e==`string`?{value:e,label:e}:{value:e.value,label:e.label??e.value})}var ComboRenderer=class extends CellRenderer{_text=new y;_map=new Map;_value=null;constructor(e){super();for(let t of normalizeComboOptions(e))this._map.set(t.value,t.label);this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getText(){return this._text}getValue(){return this._value}setValue(e){if(this._value=e??null,this._value===null)this._text.setText(``);else{let e=String(this._value);this._text.setText(this._map.get(e)??e)}return this}setOptions(e){this._map.clear();for(let t of normalizeComboOptions(e))this._map.set(t.value,t.label);return this.setValue(this._value),this}},N=s(ComboRenderer),P=s(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 D;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){switch(e){case`number`:return new O;case`date`:return new k;case`time`:return new A(t);case`datetime`:return new j(t);case`combo`:return new N([]);case`glyph`:return new M;default:return new D}}ensureCheckbox(){if(this._checkbox)return this._justCreated=!1,this._checkbox;let e=new E;return e.on(`change`,e=>this.emitCommit(e)),this._checkbox=e,this._justCreated=!0,e}emitCommit(e){this.emit(`commit`,e)}}),DefaultCell=class extends Cell{constructor(e){let t=new D;super(e||`td`,t)}getRenderer(){return super.getRenderer()}setValue(e){return this.getRenderer().setValue(e),this}},F=s(DefaultCell),StringCell=class extends Cell{constructor(){let e=new D;super(`td`,e)}getEditorKey(){return`string`}setValue(e){return this.getRenderer().setValue(e),this}},I=s(StringCell),BooleanCell=class extends Cell{_checkbox;constructor(){let e=new E;super(`td`,e,void 0,{fill:o.NONE,anchor:d.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}},L=s(BooleanCell),NumberCell=class extends Cell{constructor(){let e=new O;super(`td`,e)}getEditorKey(){return`number`}setValue(e){return this.getRenderer().setValue(e),this}},R=s(NumberCell),DateCell=class extends Cell{constructor(){let e=new k;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)}},Te=s(DateCell),TimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new A(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)}},z=s(TimeCell),DateTimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new j(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)}},Ee=s(DateTimeCell),GlyphCell=class extends Cell{constructor(){let e=new M;super(`td`,e)}setValue(e){return this.getRenderer().setValue(e),this}},De=s(GlyphCell),ComboCell=class extends Cell{_field;constructor(e,t){super(`td`,new N(t)),this._field=e}getEditorKey(){return`combo:${this._field}`}setValue(e){return this.getRenderer().setValue(e),this}},B=s(ComboCell);h.register(de,pe);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 n(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}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 h(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.getWidth()||0,t=this.getHeight()||0,n=this._depth*this._indentPx;if(this._toggle){let e=this._toggle.getPreferredSize()?.height??t;this._toggle.setAutoCommitStyle(!1),this._toggle.setX(n),this._toggle.setY(Math.max(0,(t-e)/2)),this._toggle.setWidth(20),this._toggle.setHeight(e),this._toggle.setAutoCommitStyle(!0)}let r=n+20,i=Math.max(0,e-r);return this._delegate.setAutoCommitStyle(!1),this._delegate.setX(r),this._delegate.setY(0),this._delegate.setWidth(i),this._delegate.setHeight(t),this._delegate.setAutoCommitStyle(!0),super.doLayout(),this}},V=s(TreeCellRenderer),H=s(class Row extends u{_model;_data;_onCellCommit;_fieldNames=[];_treeCell=null;_stripe=!1;constructor(e,t,n=new Set,r=new Map,i,a){if(super({tag:`tr`}),this.getAria().setRole(`row`),this._model=e,this._data=t,this._onCellCommit=i,this._model){let e=this._model.getFields().filter(e=>!n.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder());this._fieldNames=e.map(e=>e.getName());for(let t in e){let n=e[t],i=Row.createCellForField(n,r);this.bindCell(i,this._data,n.getName()),i.on(`commit`,e=>{this._data&&(this._data.set(n.getName(),e),this._onCellCommit?.(this._data)),this.updateVisualState()});let o=r.get(n.getName())?.groupColor;o&&i.setBaseBackground(o),r.get(n.getName())?.readOnly&&i.setReadOnly(!0),a!==void 0&&n.getName()===a&&(i.wrapRenderer(e=>new V(e)),this._treeCell=i),this.addComponent(i,{data:n})}}}getTreeCell(){return this._treeCell}getFieldNames(){return this._fieldNames}getData(){return this._data}setData(e){this._data=e;let t=this.getComponents(),n=this._fieldNames;for(let r=0;r<n.length;r++)this.bindCell(t[r],e,n[r]);return this.updateVisualState(),this}setStripe(e){this._stripe=e}updateVisualState(){let e=this.getElement();e&&(this._data?.isNew()?r.sink.apply(e,{style:{"background-color":`var(--ts-ui-table-row-new, rgba(70, 200, 70, 0.15))`}}):this._data?.isDirty()?r.sink.apply(e,{style:{"background-color":`var(--ts-ui-table-row-dirty, rgba(255, 165, 0, 0.15))`}}):this._stripe?r.sink.apply(e,{style:{"background-color":`var(--ts-ui-table-row-stripe, rgba(0, 0, 0, 0.035))`}}):r.sink.apply(e,{style:{"background-color":null}}))}addColumn(e,t){return this.addComponent(e,t),this}addComponent(e,t){return super.addComponent(e,t),this}syncCells(e,t,n,r){this._model=e;let i=e.getFields().filter(e=>!t.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()),a=this.getComponents().slice(),o=new Map;for(let e of a){let t=this.getLayoutConstraints(e)?.data;t&&o.set(t.getName(),e)}let s=new Set(i.map(e=>e.getName()));for(let e of a){let t=this.getLayoutConstraints(e)?.data;(!t||!s.has(t.getName()))&&(e.isEditing()&&e.commitEdit(),this.removeComponent(e))}this._treeCell=null;for(let e of i){let t=e.getName(),i=o.get(t),a=(n.get(t)?.values?.length??0)>0,s=!!n.get(t)?.cellType;i&&(a!==i instanceof B||s!==i instanceof P)&&(i.isEditing()&&i.commitEdit(),this.removeComponent(i),i=void 0);let c=!i;i||=Row.createCellForField(e,n),i.on(`commit`,e=>{this._data&&(this._data.set(t,e),this._onCellCommit?.(this._data)),this.updateVisualState()});let l=n.get(t)?.groupColor;l&&i.setBaseBackground(l),c&&r!==void 0&&t===r&&i.wrapRenderer(e=>new V(e)),r!==void 0&&t===r&&(this._treeCell=i),c&&(this.addComponent(i,{data:e}),this.bindCell(i,this._data,t))}return this.sortComponents((e,t)=>(this.getLayoutConstraints(e)?.data).getOrder()-(this.getLayoutConstraints(t)?.data).getOrder()),this._fieldNames=i.map(e=>e.getName()),this}bindCell(e,t,n){e instanceof P&&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 P(e.getName(),e.getType(),n);let r=n?.values;if(r&&r.length>0)return new B(e.getName(),r);switch(e.getType()){case`string`:return new I;case`number`:return new R;case`boolean`:return new L;case`date`:return new Te;case`time`:return new z(t.get(e.getName())?.showSeconds??!1);case`datetime`:return new Ee(t.get(e.getName())?.showSeconds??!1);case`glyph`:return new De;default:return new F}}doLayout(){return this}}),Oe=`var(--ts-ui-table-resize-handle-cursor, ew-resize)`,ke=null;function ensureResizeHandleClassRule(){ke||=new i({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 u{_listeners=new p;constructor(e){ensureResizeHandleClassRule(),super({tag:`div`,...e??{}}),this.setCursor(Oe),this.setBackgroundImage(`linear-gradient(to right,transparent 80%,var(--ts-ui-table-resize-handle-color,rgba(0,0,0,0.2)) 80%)`),this.setZIndex(1),this.applyListeners(e?.listeners)}init(e){return super.init(e),f.addListener(this,`mousedown`,this._onMouseDown),f.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)};_onClick=e=>{e.stopPropagation()}},Ae=s(ResizeHandle),je=null;function ensureSortBadgeClassRule(){je||=new i({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 SortPriorityBadge=class extends u{constructor(e){ensureSortBadgeClassRule(),super({tag:`span`,...e??{}}),this._priority??=null,this.setBackgroundColor(`var(--ts-ui-sort-badge-bg, rgba(0,0,0,0.15))`),this.setForegroundColor(`var(--ts-ui-sort-badge-color, inherit)`),this.setVisible(this._shouldShow(this._priority))}applyOptions(e){return super.applyOptions(e),e.priority!==void 0&&(this._priority=e.priority),this}render(){let e=super.render();return r.sink.apply(e,{text:this._priorityText()}),e}getPriority(){return this._priority}setPriority(e){this._priority=e;let t=this.getElement();return t&&r.sink.apply(t,{text:this._priorityText()}),this.setVisible(this._shouldShow(e)),this}clearPriority(){return this.setPriority(null)}_priorityText(){return this._shouldShow(this._priority)?String(this._priority):``}_shouldShow(e){return e!=null&&e>=2}},Me=s(SortPriorityBadge),Ne=16,Pe=16,Fe=null;function ensureHeaderCellGlyphClassRule(){Fe||=new i({scope:`class`,name:`HeaderCellGlyph`,styles:{position:`absolute`,left:`var(--ts-ui-table-header-glyph-gap, 4px)`,top:`50%`}})}var HeaderCell=class extends F{_text;_fieldName;_isDragging=!1;_tooltipText=``;_sortState=null;_headerGlyph=null;_headerGlyphInstance=null;_columnFocused=!1;_required=!1;constructor(e,t,n){super(`th`),this.getAria().setRole(`columnheader`),this.getAria().setSort(`none`),this._text=e,this._fieldName=t,this._headerGlyph=n??null;let r=this.getRenderer();r.getText().setFontSize(`--ts-ui-table-header-font-size`),r.getText().setFontWeight(`bold`),r.getText().setText(e),this.createStyleRule(`:active`).set(`boxShadow`,`var(--ts-ui-button-pressed-shadow, 1px 2px 5px 0 rgba(0,0,0,0.2) inset)`),this._resizeHandle=new Ae({listeners:{dragstart:e=>this.onResizeDragStart(e),dragmove:e=>this.emit(`resizedrag`,e)}}),this._priorityBadge=new Me}init(e){super.init(e);let t=e||this.getElement();return t?(f.addSubtreeListener(this,`click`,e=>this.onSortClick(e.shiftKey)),f.addSubtreeListener(this,`contextmenu`,e=>{e.preventDefault(),this.emit(`contextmenu`,this._fieldName,e.clientX,e.clientY)}),r.sink.appendChild(t,this._resizeHandle.getElement(!0)),r.sink.appendChild(t,this._priorityBadge.getElement(!0)),this._tooltipText&&_.attachToElement(t,this._tooltipText),this._headerGlyph&&this.setHeaderGlyph(this._headerGlyph),this):this}getHeaderGlyph(){return this._headerGlyph}setHeaderGlyph(e){return this._headerGlyph=e,this._mountHeaderGlyph(this.getElement()),this}_mountHeaderGlyph(e){if(this._headerGlyphInstance){let e=this._headerGlyphInstance.getElement();e&&r.sink.removeElement(e),this._headerGlyphInstance=null}let t=l.getTheme().table.cell.padding,i=this._headerGlyph;if(!i||!e){this.getRenderer().setInsets(new n(0,t,0,t));return}ensureHeaderCellGlyphClassRule();let a=new h(i);a.setTransform(`translateY(-50%)`),a.setSize({width:Ne,height:Pe}),a.setForegroundColor(`var(--ts-ui-table-header-glyph-color, currentColor)`),a.setPointerEvents(`none`);let o=a.getElement(!0);r.sink.apply(o,{addClass:[`HeaderCellGlyph`]}),r.sink.appendChild(e,o),this._headerGlyphInstance=a;let s=20+t;this.getRenderer().setInsets(new n(0,t,0,s))}setSortState(e,t){return this._sortState={state:e,priority:t??null},this._renderTitle(),this.getAria().setSort(e===`asc`?`ascending`:`descending`),this._priorityBadge.setPriority(t??null),this}getSortState(){return this._sortState}clearSortState(){return this._sortState=null,this._renderTitle(),this.getAria().setSort(`none`),this._priorityBadge.clearPriority(),this}setRequired(e){return this._required=e,this._renderTitle(),this}_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&&_.attachToElement(t,e),this}getTooltip(){return this._tooltipText}onSortClick(e){if(this._isDragging){this._isDragging=!1;return}this.emit(`sortclick`,this._fieldName,e)}onResizeDragStart(e){e.stopPropagation(),this._isDragging=!0,this.emit(`resizestart`,e.clientX),f.addViewportListener(this,`mousemove`,this.onResizeDrag),f.addViewportListener(this,`mouseup`,this.onResizeDragStop),te(Oe)}onResizeDrag(e){this._resizeHandle.dragMove(e.clientX)}onResizeDragStop(){f.removeViewportListener(this,`mousemove`,this.onResizeDrag),f.removeViewportListener(this,`mouseup`,this.onResizeDragStop),ne(),this._resizeHandle.dragEnd(),setTimeout(()=>{this._isDragging=!1},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}},Ie=s(HeaderCell),ParentHeaderCell=class extends F{_text;_color;_tooltipText=``;constructor(e,t){super(`th`),this._text=e,this._color=t,this.getAria().setRole(`columnheader`);let n=this.getRenderer();n.getText().setFontSize(`--ts-ui-table-header-font-size`),n.getText().setFontWeight(`bold`),n.getText().setTextAlign(`center`),n.getText().setText(e),this.setBackgroundColor(t??`transparent`),this.setShadow([`inset -1px 0 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`,`inset 0 -1px 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`].join(`, `))}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}setTooltip(e){this._tooltipText=e;let t=this.getElement();return t&&_.attachToElement(t,e),this}getTooltip(){return this._tooltipText}getText(){return this._text}getColor(){return this._color}init(e){super.init(e);let t=e||this.getElement();return t?(f.addSubtreeListener(this,`contextmenu`,this.onContextMenu),this._tooltipText&&_.attachToElement(t,this._tooltipText),this):this}onContextMenu(e){e.preventDefault(),this.emit(`contextmenu`,e.clientX,e.clientY)}},Le=s(ParentHeaderCell),U=`var(--ts-ui-table-header-bg, var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200))))`,TableHeader=class extends u{_model;_store;_hiddenColumns=new Set;_columns=[];_listeners=new p;_scrollbarCover=null;constructor(e,t){super({tag:`thead`}),this.getAria().setRole(`rowgroup`),this.setBorder({borderBottom:`1px solid var(--ts-ui-table-header-border, black)`}),this.setBackgroundColor(U),this.setBackgroundImage(U),this.setOverflow(`hidden`),this._model=e,this._store=t;let n=new H,r=new H;this.addRow(n),this.addRow(r),this.rebuildCells(),this.rebuildParentCells()}getModel(){return this._model}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}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()}getParentRow(){return this.getComponents()[0]}hasParentRow(){return this._columns.filter(e=>!this._hiddenColumns.has(e.getField().getName())).some(e=>e.getGroup()!==null)}getScrollbarCover(){if(this._scrollbarCover===null){let e=r.sink.createElement(`div`);r.sink.apply(e,{style:{position:`absolute`,top:`0`,boxSizing:`border-box`,zIndex:`1`,pointerEvents:`none`,backgroundColor:U,backgroundImage:U,borderLeft:`1px solid var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`}}),r.sink.appendChild(this.getElement(!0),e),this.trackHandle(e),this._scrollbarCover=e}return this._scrollbarCover}sortColumns(){let e=this.getComponents()[1];e.sortComponents((t,n)=>{let r=e.getLayoutConstraints(t),i=e.getLayoutConstraints(n);return r?i?r.data.getOrder()-i.data.getOrder():1:-1})}addRow(e){return this.addComponent(e),this}addComponent(e){return super.addComponent(e),this}setWidth(e){super.setWidth(e);let t=this.getComponents();return t[0].setWidth(e),t[1].setWidth(e),this}setHeight(e){return super.setHeight(e),this}rebuildCells(){let e=this.getComponents()[1],t=this._model.getFields().slice().filter(e=>!this._hiddenColumns.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()),n=new Map(this._columns.map(e=>[e.getField().getName(),e])),r=e.getComponents().slice(),i=new Map;for(let t of r){let n=e.getLayoutConstraints(t)?.data;n&&i.set(n.getName(),t)}let a=new Set(t.map(e=>e.getName()));for(let t of r){let n=e.getLayoutConstraints(t)?.data;(!n||!a.has(n.getName()))&&e.removeComponent(t)}for(let r=0;r<t.length;r++){let a=t[r],o=n.get(a.getName()),s=i.get(a.getName());if(!s){let t=o?.getHeaderGlyph()??null;s=new Ie(a.getName(),a.getName(),t),s.setTooltip(a.getDescription()),e.addComponent(s,{data:a}),this.wireCell(s)}let c=o?.getGroupColor();c&&s.setBackgroundColor(c),s.setRequired(o?.isRequired()??!1)}e.sortComponents((t,n)=>(e.getLayoutConstraints(t)?.data).getOrder()-(e.getLayoutConstraints(n)?.data).getOrder()),this.syncSortIndicators()}rebuildParentCells(){let e=this.getParentRow();e.removeAllComponents();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 Le(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();r!==null&&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.getColumns().indexOf(e),t)),e.on(`resizedrag`,t=>this.emit(`columnresize`,this.getColumns().indexOf(e),t)),e.on(`contextmenu`,(e,t,n)=>this.emit(`columncontextmenu`,e,t,n))}handleSortClick(e,t){if(t){let t=this._store.getActiveSorters(),n=t.findIndex(t=>t.field===e),r;r=n===-1?[...t,{field:e,dir:`asc`}]:t[n].dir===`asc`?t.map((e,t)=>t===n?{field:e.field,dir:`desc`}:e):t.filter((e,t)=>t!==n),r.length===0?this._store.clearSort():this._store.sort(r)}else{let t=this._store.getActiveSorters(),n=t.length===1&&t[0].field===e?t[0]:null;n?n.dir===`asc`?this._store.sort(e,`desc`):this._store.clearSort():this._store.sort(e,`asc`)}this.syncSortIndicators()}syncSortIndicators(){let e=this.getColumns(),t=this._model.getFields().slice().filter(e=>!this._hiddenColumns.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()),n=this._store.getActiveSorters(),r=new Map(n.map((e,t)=>[e.field,{dir:e.dir,priority:t+1}])),i=n.length>1;e.forEach((e,n)=>{let a=t[n]?.getName(),o=a?r.get(a):void 0;o?e.setSortState(o.dir,i?o.priority:null):e.clearSortState()})}},W=s(TableHeader),StringEditor=class extends CellEditor{_textField=new T;_value=null;constructor(){super(),f.addListener(this._textField,`blur`,e=>{f.fireEvent(this,`blur`,e)}),f.addListener(this._textField,`keydown`,e=>{f.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}})}),f.addListener(this._textField,`input`,()=>this.onInput()),this._textField.setMaxSize(2**53-1,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}},Re=s(StringEditor),NumberEditor=class extends CellEditor{_textField=new T;_value=null;constructor(){super(),f.addListener(this._textField,`blur`,e=>{f.fireEvent(this,`blur`,e)}),f.addListener(this._textField,`keydown`,e=>{f.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}})}),f.addListener(this._textField,`input`,()=>this.onInput()),this.setMaxSize(2**53-1,2**53-1),this._textField.clearPadding(),this.setBorderRadius(`0`),this._textField.setBorder({border:`0px solid transparent`}),this._textField.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this._textField.setOutline(`none`),this._textField.setTextAlign(`right`),this._textField.setText(``),this.addComponent(this._textField,{anchor:d.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}},ze=s(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(e){super.init(e);let t=e||this.getElement();return this._type!==null&&r.sink.apply(t,{setAttr:{type:this._type}}),this._inputMode!==null&&r.sink.apply(t,{setAttr:{inputmode:this._inputMode}}),this._autoComplete!==null&&r.sink.apply(t,{setAttr:{autocomplete:this._autoComplete}}),this}},DateEditor=class extends TextInputCellEditor{_value=null;_dropdown=null;_animated=!0;_text=``;constructor(){super(),this.setMaxSize(2**53-1,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`),f.addListener(this,`focus`,()=>this.openDropdown()),f.addListener(this,`blur`,()=>this.closeDropdown()),f.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}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(e){this._text=e;let t=this.getElement();return t&&r.sink.setValue(t,e),this}getText(){return this._text}syncTextFromDom(){let e=this.getElement();this._text=e?r.source.getValue(e):``}setDropdownAnimated(e){return this._animated=e,this._dropdown&&this._dropdown.setAnimated(e),this}isDropdownAnimated(){return this._animated}ensureDropdown(){return this._dropdown||(this._dropdown=new ce(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(e){this.setValue(e),this._dropdown?.hideAnimated();let t=this.getElement();t&&r.sink.blur(t)}toInputString(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}},Be=s(DateEditor),TimeEditor=class extends TextInputCellEditor{_showSeconds;_value=null;_dropdown=null;_animated=!0;_text=``;constructor(e=!1){super(),this._showSeconds=e,this.setMaxSize(2**53-1,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`),f.addListener(this,`focus`,()=>this.openDropdown()),f.addListener(this,`blur`,()=>this.closeDropdown()),f.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}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(e){this._text=e;let t=this.getElement();return t&&r.sink.setValue(t,e),this}getText(){return this._text}syncTextFromDom(){let e=this.getElement();this._text=e?r.source.getValue(e):``}setDropdownAnimated(e){return this._animated=e,this._dropdown&&this._dropdown.setAnimated(e),this}isDropdownAnimated(){return this._animated}ensureDropdown(){return this._dropdown||(this._dropdown=new ae((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}`}},G=s(TimeEditor),DateTimeEditor=class extends TextInputCellEditor{_showSeconds;_value=null;_dropdown=null;_animated=!0;_text=``;constructor(e=!1){super(),this._showSeconds=e,this.setMaxSize(2**53-1,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`),f.addListener(this,`focus`,()=>this.openDropdown()),f.addListener(this,`blur`,e=>this.onEditorBlur(e)),f.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}retainsFocus(e){return this._dropdown!==null&&this._dropdown.isOpen()&&g.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(e){this._text=e;let t=this.getElement();return t&&r.sink.setValue(t,e),this}getText(){return this._text}syncTextFromDom(){let e=this.getElement();this._text=e?r.source.getValue(e):``}setDropdownAnimated(e){return this._animated=e,this._dropdown&&this._dropdown.setAnimated(e),this}isDropdownAnimated(){return this._animated}ensureDropdown(){return this._dropdown||(this._dropdown=new le(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}`}},K=s(DateTimeEditor),CellEditorPool=class{_editors=new Map;_factories=new Map;_activeCell=null;constructor(){this._factories.set(`string`,()=>new Re),this._factories.set(`number`,()=>new ze),this._factories.set(`date`,()=>new Be),this._factories.set(`time`,()=>new G(!1)),this._factories.set(`time:seconds`,()=>new G(!0)),this._factories.set(`datetime`,()=>new K(!1)),this._factories.set(`datetime:seconds`,()=>new K(!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}wireListeners(e){e.setCommitRequestHandler(()=>this._activeCell?.commitEdit()),f.addListener(e,`blur`,t=>{e.retainsFocus(blurRelatedTargetHandle(t))||this._activeCell?.commitEdit()}),f.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 ue,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()),f.addListener(this._combo,`blur`,()=>this.commitFromCombo()),f.addListener(this._combo,`keydown`,e=>{f.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()}},q=s(ComboEditor);function resolveClickedColumn(e,t){for(let n=0;n<e.length;n++){let i=e[n].getElement();if(i&&(i===t||r.source.contains(i,t)))return n}return-1}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}var Ve=class Body extends me{_store;_hiddenColumns=new Set;_columns=[];_columnConfigs=new Map;_rowReadOnly=null;_cellGeom=[];_lastBodyWidth=0;_lastColumnWidths=[];_lastAriaRowCount=-1;_rowHeight;_storeRefresh=null;_selectedRecords=new Set;_anchorRecord=null;_focusedColIndex=0;_editorPool=new CellEditorPool;_header=null;_listeners=new p;constructor(e){super({tag:`tbody`}),this.setOverflow(`hidden`),this.setBackgroundColor(`var(--ts-ui-input-bg, rgb(255, 255, 255))`),this.getAria().setTabIndex(0),this.getAria().setRole(`rowgroup`),this._store=e,this.bindStore(e),this._rowHeight=this.computeRowHeight(),this.subscribeTheme(()=>{this._rowHeight=this.computeRowHeight(),this._boundIndices.fill(-1),this.invalidateGeom(),this.renderWindow()})}computeRowHeight(){let e=l.getTheme();return t.lineHeightPx()+2*(e.table.cell.padding??2)}getRowHeight(){return this._rowHeight}createPoolRow(){let e=this.createRow();for(let t of e.getComponents())t.setEditorPool(this._editorPool),t.setScrollIntoViewHandler(()=>this.scrollColumnIntoView(this._focusedColIndex));return e}onPoolRowAdded(){this._cellGeom.push([])}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(){return this._store.getRecords()}createRow(){return new H(this._store.model,void 0,this._hiddenColumns,this._columnConfigs,e=>this._store.notifyRecordChanged(e))}getTreeFieldName(){}computeRowAria(e,t){e.getAria().setRowIndex(t+2)}afterRowBound(e,t,n){}invalidateRowBindings(){this._boundIndices.fill(-1)}getStore(){return this._store}getHiddenColumns(){return this._hiddenColumns}getColumnConfigs(){return this._columnConfigs}getRowPool(){return this._rowPool}invalidateGeom(){super.invalidateGeom();for(let e=0;e<this._cellGeom.length;e++)this._cellGeom[e]=[]}setHiddenColumns(e){let t=new Set;for(let n of e){let e=this._columns.find(e=>e.getField().getName()===n);(!e||!e.isUnhideable())&&t.add(n)}return this._hiddenColumns=t,this.syncPoolCells(),this.renderWindow(),this}setColumns(e){return this._columns=e,this.syncPoolCells(),this.renderWindow(),this}setRowReadOnly(e){return this._rowReadOnly=e,this}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 q(e)):n.cellValues&&this._editorPool.register(`combo:${t}`,()=>new q([]))}}syncPoolCells(){let e=this.getTreeFieldName();for(let t=0;t<this._rowPool.length;t++){let n=this._rowPool[t];n.syncCells(this._store.model,this._hiddenColumns,this._columnConfigs,e);for(let e of n.getComponents())e.setEditorPool(this._editorPool),e.setScrollIntoViewHandler(()=>this.scrollColumnIntoView(this._focusedColIndex));this._rowGeom[t]=null,this._cellGeom[t]=[]}}setStore(e){if(this._storeRefresh){let e=this._store;[`load`,`add`,`remove`,`datachange`,`beforesync`,`sync`].forEach(t=>e.off(t,this._storeRefresh))}return this._store=e,this.bindStore(e),this.invalidateGeom(),this.getElement()&&this.onStoreChange(),this}init(e){super.init(e);let t=e||this.getElement();return t?(this.initScroller(t),f.addListener(this,`focus`,this.onFocus),f.addListener(this,`keydown`,this.onKeyDown),f.addSubtreeListener(this,`click`,this.onSubtreeClick),this.renderWindow(),this):this}onScrollerTick(){this.renderWindow(),this._scroller&&(this.emit(`verticalscroll`,this._scroller.getScrollY()),this.emit(`horizontalscroll`,this._scroller.getScrollX()))}onFocus(){this._updateActiveDescendant(),this._updateFocusStyle()}getEditorPool(){return this._editorPool}renderWindow(e,t){if(!this.getElement()||!this._scroller)return;let n=this._scroller,r=this.getVisibleRecords(),i=r.length,a=n.getScrollX(),o=n.getScrollY();this.updateColumnWidthCache(e,t);let s=i*this._rowHeight,c=this._lastColumnWidths.reduce((e,t)=>e+t,0),l=Math.max(this._lastBodyWidth,c);n.clampToContent(l,s);let u=this.getHeight()||0,d=this.computeVisibleWindow(n.getScrollY(),u,i),f=this.computePoolTarget(d.windowSize,u,i);this.growRowPool(f);let p=Math.max(this._lastBodyWidth,c),m=this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).length,h=m>0?p/m:p;this.bindAndPositionRows(d.firstRow,d.windowSize,p,h,r),this.hideExcessPoolRows(d.windowSize),i!==this._lastAriaRowCount&&(this.getAria().setRowCount(i),this._lastAriaRowCount=i),n.layoutScrollbars(l,s);let g=n.getScrollX(),_=n.getScrollY();g!==a&&this.emit(`horizontalscroll`,g),_!==o&&this.emit(`verticalscroll`,_),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()}bindAndPositionRows(e,t,n,r,i){let a=this._rowHeight;for(let o=0;o<t;o++){let t=this._rowPool[o],s=e+o,c=this._boundIndices[o]!==s;c&&(t.setData(i[s]),this._boundIndices[o]=s,t.setStripe(s%2==1),this.updateRowVisualState(o),this.computeRowAria(t,s),this.applyReadOnlyState(t,i[s])),this.afterRowBound(t,s,c),this.applyRequiredEmptyState(t,i[s]),this.positionRow(o,s*a,n);let l=t.getComponents(),u=this._cellGeom[o],d=0;for(let e=0;e<l.length;e++){let t=l[e],n=this._lastColumnWidths[e]??r,i=u[e];(!i||i.x!==d||i.w!==n||i.h!==a)&&(t.setAutoCommitStyle(!1),t.setX(d),t.setY(0),t.setWidth(n),t.setHeight(a),t.setAutoCommitStyle(!0),u[e]={x:d,w:n,h:a},i||t.getAria().setColIndex(e+1),t.doLayout()),d+=n}}}onSubtreeClick(e){if(!(e instanceof MouseEvent))return;let t=e.target===null?null:r.source.intern(e.target);for(;t;){let n=this._rowPool.find(e=>e.getElement()===t);if(n){this.onRowClick(n,e);return}t=r.source.getParentElement(t)}}onRowClick(e,t){let n=e.getData()??null;if(!n)return;let i=this.getVisibleRecords();this._anchorRecord=fe(this._selectedRecords,this._anchorRecord,n,e=>i.indexOf(e),e=>i[e],{ctrl:t.ctrlKey||t.metaKey,shift:t.shiftKey}),this._boundIndices.forEach((e,t)=>{e!==-1&&this.updateRowVisualState(t)}),this.notifySelectionChange();let a=t.target===null?null:r.source.intern(t.target),o=resolveClickedColumn(e.getComponents(),a);o>=0&&(this._focusedColIndex=o);let s=a===null?``:r.source.getTagName(a);if(s!==`INPUT`&&s!==`TEXTAREA`&&s!==`SELECT`&&this.focus(),this._updateFocusStyle(),this._updateActiveDescendant(),o>=0){let r=e.getFieldNames()[o];this.emit(`cellclick`,{record:n,field:r,columnIndex:o,value:n.get(r),rowIndex:this.getVisibleRecords().indexOf(n),event:t})}}selectRecord(e){this._selectedRecords.clear(),this._anchorRecord=e,e&&this._selectedRecords.add(e),this._boundIndices.forEach((e,t)=>{e!==-1&&this.updateRowVisualState(t)}),this.notifySelectionChange()}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){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()}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(){this.emit(`selection`,this.getSelectedRecords())}scrollToRecord(e){let t=this.getVisibleRecords().indexOf(e);t!==-1&&this.setScrollY(t*this._rowHeight)}applyReadOnlyState(e,t){let n=this._rowReadOnly?.(t)===!0,r=e.getComponents(),i=e.getFieldNames();for(let e=0;e<r.length;e++){let a=r[e],o=i[e],s=this._columnConfigs.get(o),c=s?.readOnly===!0,l=s?.cellReadOnly?.(t)===!0,u=c||n||l;a.setReadOnly(u)}}static isEmptyValue(e){return e==null||e===``}applyRequiredEmptyState(e,t){let n=e.getComponents(),r=e.getFieldNames();for(let e=0;e<n.length;e++){let i=r[e],a=this._columnConfigs.get(i),o=a?.required===!0||a?.requiredPredicate?.(t)===!0,s=Body.isEmptyValue(t.get(i));n[e].setRequiredEmpty(o&&s)}}updateRowVisualState(e){let t=this._boundIndices[e];if(t===-1)return;let n=this.getVisibleRecords()[t];if(!n)return;let i=this._rowPool[e],a=i.getElement(),o=this._selectedRecords.has(n);o?r.sink.apply(a,{style:{"background-color":`var(--ts-ui-table-row-selected, rgba(30, 100, 200, 0.15))`,"box-shadow":`var(--ts-ui-table-row-selected-border, none)`}}):(r.sink.apply(a,{style:{"box-shadow":null}}),i.updateVisualState()),i.getAria().setSelected(o)}setHeader(e){return this._header=e,this}_updateFocusStyle(){for(let e of this._rowPool)for(let t of e.getComponents()){let e=t.getElement();e&&r.sink.apply(e,{style:{outline:null,"outline-offset":null}})}let e=this._header===null?null:this._header.getColumns();if(e!==null)for(let t of e)t.setColumnFocused(!1);if(!this._anchorRecord)return;if(e!==null)for(let t=0;t<e.length;t++)e[t].setColumnFocused(t===this._focusedColIndex);let t=this.getVisibleRecords().indexOf(this._anchorRecord),n=this._boundIndices.indexOf(t);if(n<0)return;let i=this._rowPool[n].getComponents()[this._focusedColIndex];if(i){let e=i.getElement();e&&r.sink.apply(e,{style:{outline:`var(--ts-ui-indicator-selection, 1px dashed rgb(120, 170, 240))`,"outline-offset":`-1px`}})}}_updateActiveDescendant(){if(!this._anchorRecord){this.getAria().setActiveDescendant(``);return}let e=this.getVisibleRecords().indexOf(this._anchorRecord),t=this._boundIndices.indexOf(e);if(t<0){this.getAria().setActiveDescendant(``);return}let n=this._rowPool[t].getComponents()[this._focusedColIndex];n?this.getAria().setActiveDescendant(n.getId()):this.getAria().setActiveDescendant(this._rowPool[t].getId())}onKeyDown(e){let t=this.getVisibleRecords();if(t.length===0||!new Set([`ArrowDown`,`ArrowUp`,`Home`,`End`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Enter`,` `]).has(e.key))return;if(e.preventDefault(),e.key===`ArrowLeft`||e.key===`ArrowRight`){let t=this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).length;e.key===`ArrowLeft`?this._focusedColIndex=Math.max(0,this._focusedColIndex-1):this._focusedColIndex=Math.min(t-1,this._focusedColIndex+1),this._updateActiveDescendant(),this._updateFocusStyle();return}if(e.key===`Enter`||e.key===` `){if(!this._anchorRecord)return;let e=t.indexOf(this._anchorRecord),n=this._boundIndices.indexOf(e);if(n<0)return;let r=this._rowPool[n].getComponents()[this._focusedColIndex];if(r instanceof Cell){let e=r;e.on(`editend`,()=>{this.focus(),this._updateFocusStyle(),this._updateActiveDescendant()}),e.startEdit()}return}let n=this._anchorRecord?t.indexOf(this._anchorRecord):-1,r=this.computePageSize(),i;i=e.key===`ArrowDown`?n<0?0:Math.min(n+1,t.length-1):e.key===`ArrowUp`?n<0?0:Math.max(n-1,0):e.key===`PageDown`?n<0?0:Math.min(n+r,t.length-1):e.key===`PageUp`?n<0?0:Math.max(n-r,0):e.key===`Home`?0:t.length-1;let a=t[i];this.selectRecord(a),this.scrollRecordIntoView(a),this.renderWindow(),this._updateActiveDescendant()}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)}},J=s(Ve),FooterRow=class extends u{constructor(){super({tag:`tfoot`}),this.setBorder({borderTop:`1px solid var(--ts-ui-border-color, black)`});let e=`var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200)))`;this.setBackgroundColor(e),this.setBackgroundImage(e);let t=new H;this.addRow(t)}getColumns(){return this.getComponents()[0].getComponents()}addRow(e){return this.addComponent(e),this}addComponent(e){return super.addComponent(e),this}setWidth(e){return super.setWidth(e),this.getComponents()[0].setWidth(e),this}setHeight(e){return super.setHeight(e),this.getComponents()[0].setHeight(e),this}},Y=s(FooterRow),X=class Column{_field;_minWidth;_maxWidth;_hidden;_unhideable;_readOnly;_headerGlyph;_group;_groupColor;_required;constructor(e,t){this._field=e,this._minWidth=t?.minWidth,this._maxWidth=t?.maxWidth,this._hidden=t?.hidden??!1,this._unhideable=t?.unhideable??!1,this._readOnly=t?.readOnly??!1,this._headerGlyph=t?.headerGlyph??null,this._group=t?.group??null,this._groupColor=t?.groupColor??null,this._required=t?.required??!1}getField(){return this._field}getMinWidth(){return this._minWidth}getMaxWidth(){return this._maxWidth}isInitiallyHidden(){return this._hidden}isUnhideable(){return this._unhideable}isReadOnly(){return this._readOnly}getHeaderGlyph(){return this._headerGlyph}setHeaderGlyph(e){return this._headerGlyph=e,this}clearHeaderGlyph(){return this.setHeaderGlyph(null)}getGroup(){return this._group}getGroupColor(){return this._groupColor}isRequired(){return this._required}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()))):n.map(e=>new Column(e,r.get(e.getName())))}},Z=class TableExporter{static exportCSV(e,t,n,r){let i=[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))).join(`,`))].join(`\r
1
+ import{t as e}from"../DOM-CGn7xyTw.js";import{a as t,l as n,n as r}from"../Position-A39T7-_1.js";import{_ as i,c as a,d as o,f as s,l as c,n as l,t as u,u as d,y as f}from"../Component-DXf5a3g0.js";import{t as p}from"../ListenerBag-WPdKuuds.js";import{t as m}from"../Container-D5H8VxJK.js";import{t as h}from"../Glyph-KEf4nIv2.js";import{a as g,t as _}from"../Tooltip-tkXDk5Bo.js";import{t as v}from"../Fit-DjRsiwlg.js";import{t as y}from"../Text-gz6qjFfP.js";import{t as ee}from"../HBox-Ce0GTCJP.js";import{a as te,o as ne,t as b}from"../Border-BgaZkc1R.js";import{t as x}from"../ProgressSpinner-zJKtGyNJ.js";import{t as S}from"../Placement-7kqdaK4Z.js";import{t as C}from"../Button-U1rsP4v8.js";import{t as w}from"../DragManager-CI4mZQFy.js";import{t as re}from"../Menu-Dz4L7EKJ.js";import{t as ie}from"../Card-BVwOS8AG.js";import{a as ae,g as oe,n as se,o as ce,r as le,t as ue,u as T}from"../ComboBox-B9EDPu6T.js";import{caret_down as de}from"../glyphs/solid/caret_down.es.js";import{t as fe}from"../reduceModifierSelection-DTo8HyFl.js";import{caret_right as pe}from"../glyphs/solid/caret_right.es.js";import{t as me}from"../VirtualRowView-BxpHQ_u8.js";import{plus as he}from"../glyphs/solid/plus.es.js";import{minus as ge}from"../glyphs/solid/minus.es.js";import{arrows_rotate as _e}from"../glyphs/solid/arrows_rotate.es.js";import{ban as ve}from"../glyphs/solid/ban.es.js";var ye=60,be=90,xe=110,Se=8,Ce=16,Table$1=class extends c{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 t=this.getContainer();if(!t)return;let r=t.getInnerSize();if(!r)return;let i=t.getContentInsets(),a=t.getColumns(),o=t.getHeader().getColumns().length,s=r.width-e.source.getScrollBarWidth(),c=t.getColumnWidths();c.length===o?(c=this.rescaleWidths(a,c,s),t.setColumnWidths(c)):(c=this.initializeWidths(a,s),t.setColumnWidths(c));let u=t.getHeader(),d=t.getBody(),f=t.getFooter();if(t.isHeaderVisible()&&u&&u.isDisplayed()){let t=l.getTheme(),a=n.lineHeightPx()+2*(t.table.cell.padding??2),o=u.hasParentRow(),s=o?a:0,d=s+a,f=c.reduce((e,t)=>e+t,0),p=Math.max(r.width,f);u.setAutoCommitStyle(!1),u.setX(i.getLeft()),u.setY(i.getTop()),u.setWidth(r.width),u.setHeight(d),u.setAutoCommitStyle(!0);let m=u.getParentRow();m.setAutoCommitStyle(!1),m.setX(0),m.setY(0),m.setWidth(p),m.setHeight(s),m.setAutoCommitStyle(!0),o&&m.getComponents().forEach(e=>{let t=m.getLayoutConstraints(e)?.data,n=t?.spanFrom??0,r=t?.spanTo??0,i=0;for(let e=0;e<n;e++)i+=c[e];let a=0;for(let e=n;e<=r;e++)a+=c[e];e.setAutoCommitStyle(!1),e.setX(i),e.setY(0),e.setWidth(a),e.setHeight(s),e.setAutoCommitStyle(!0),e.doLayout()});let h=u.getComponents()[1];h.setAutoCommitStyle(!1),h.setX(0),h.setY(s),h.setWidth(p),h.setHeight(a),h.setAutoCommitStyle(!0);let g=u.getColumns(),_=0;g.forEach((e,t)=>{e.setAutoCommitStyle(!1),e.setX(_),e.setY(0),e.setWidth(c[t]),e.setHeight(a),e.setAutoCommitStyle(!0),e.doLayout(),_+=c[t]});let v=e.source.getScrollBarWidth(),y=u.getScrollbarCover();e.sink.apply(y,{style:{left:r.width-v+`px`,width:v+`px`,height:d+`px`}})}if(t.isFooterVisible()&&f&&f.isDisplayed()){let e=l.getTheme(),t=n.lineHeightPx()+2*(e.table.cell.padding??2),a=f.getColumns();f.setAutoCommitStyle(!1),f.setX(i.getLeft()),f.setY(i.getTop()+r.height-t),f.setWidth(r.width),f.setHeight(t),f.setAutoCommitStyle(!0);let o=0;a.forEach((e,n)=>{e.setAutoCommitStyle(!1),e.setX(o),e.setY(0),e.setWidth(c[n]),e.setHeight(t),e.setAutoCommitStyle(!0),e.doLayout(),o+=c[n]})}if(t.isBodyVisible()&&d&&d.isDisplayed()){let e=t.isHeaderVisible()&&u&&u.isDisplayed()?u.getHeight():0,n=t.isFooterVisible()&&f&&f.isDisplayed()?f.getHeight():0;d.setAutoCommitStyle(!1),d.setX(i.getLeft()),d.setY(i.getTop()+e),d.setWidth(r.width),d.setHeight(r.height-e-n),d.setAutoCommitStyle(!0),d.renderWindow(s,c)}}initializeWidths(e,r){let i=e.map(e=>{let t=e.getField(),n=t.getDescription().length*Se+Ce;switch(t.getType()){case`boolean`:return this.clamp(Math.max(ye,n),e);case`number`:return this.clamp(Math.max(be,n),e);case`date`:return this.clamp(Math.max(xe,n),e);default:return null}}),a=i.reduce((e,t)=>e+(t??0),0),o=i.filter(e=>e===null).length,s=o>0?(r-a)/o:0;return i.map((r,i)=>{if(r!==null)return r;let a=e[i],o=a.getMinWidth()??30,c=a.getMaxWidth()??t;return n.clamp(s,o,c)})}rescaleWidths(e,t,n){let r=e.map(e=>{let t=e.getField().getType();return t===`boolean`||t===`number`||t===`date`}),i=t.reduce((e,t,n)=>e+(r[n]?t:0),0),a=t.reduce((e,t,n)=>e+(r[n]?0:t),0),o=n-i;if(a<=0||Math.abs(a-o)<=.5)return t;let s=o/a;return t.map((t,n)=>r[n]?t:this.clamp(t*s,e[n]))}clamp(e,r){let i=r.getMinWidth()??30,a=r.getMaxWidth()??t;return n.clamp(e,i,a)}},we=s(Table$1);function blurRelatedTargetHandle(t){return t.relatedTarget?e.source.intern(t.relatedTarget):null}var CellEditor=class extends u{_onCommitRequested=null;constructor(e=`div`){super({tag:e}),this.setLayoutManager(new v);let applyPadding=()=>{let e=l.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}},Cell=class extends u{_readOnly;_requiredEmpty=!1;_baseBackground=`var(--ts-ui-table-cell-bg, transparent)`;_renderer;_editor;_editorPool=null;_scrollIntoView=null;_activeEditor=null;_listeners=new p;constructor(e,t,n,i,a){super({tag:e||`td`}),this.setLayoutManager(new ie),this.getAria().setRole(`gridcell`),this._readOnly=!1,this._renderer=t,this._editor=n,this.setInsets(new r(0,0,0,0)),this.setBackgroundColor(`var(--ts-ui-table-cell-bg, transparent)`),this.setForegroundColor(`var(--ts-ui-table-cell-color, inherit)`),this.setBorder(`var(--ts-ui-table-cell-border, none)`),this.subscribeTheme(()=>this.setBorder(`var(--ts-ui-table-cell-border, none)`)),this.addComponent(t,i),n&&(this.addComponent(n,a),n.setCommitRequestHandler(()=>this.commitEdit()),f.addListener(n,`blur`,e=>{n.retainsFocus(blurRelatedTargetHandle(e))||this.commitEdit()}),f.addListener(n,`keydown`,e=>this.onKeyDown(e))),f.addListener(t,`dblclick`,()=>this.startEdit())}clampsToContentSize(){return!1}getEditorKey(){return null}setEditorPool(e){return this._editorPool=e,this}setScrollIntoViewHandler(e){return this._scrollIntoView=e,this}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}isReadOnly(){return!!this._readOnly}setReadOnly(e){if(this._readOnly===e)return this;if(this._readOnly=e,e&&this._activeEditor){let e=this._activeEditor.getValue();this._renderer.setValue(e),this.emit(`commit`,e),this.detachEditor()}return this._applyStateTint(),this}setRequiredEmpty(e){return this._requiredEmpty===e?this:(this._requiredEmpty=e,this._applyStateTint(),this)}setBaseBackground(e){return this._baseBackground=e,this._applyStateTint(),this}_applyStateTint(){this._readOnly?(this.setBackgroundColor(`var(--ts-ui-table-cell-readonly-bg, rgba(0, 0, 0, 0.04))`),this.setCursor(`default`)):(this.setBackgroundColor(this._baseBackground),this.clearCursor()),this._requiredEmpty&&!this._readOnly?this.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-required-outline, rgba(220, 60, 60, 0.6))`):this.clearShadow()}onKeyDown(e){let t=e.detail?.keyCode;t==13?(this.commitEdit(),this.emit(`editend`)):t==27&&(this.cancelEdit(),this.emit(`editend`))}isEditing(){return this._activeEditor!==null}getLayoutManager(){return super.getLayoutManager()}startEdit(){if(this.isReadOnly()||this.isEditing())return;if(this._scrollIntoView?.(),this._editor)this._activeEditor=this._editor;else{let e=this.getEditorKey();if(!e||!this._editorPool)return;let t=this._editorPool.acquire(e,this);if(!t)return;this._activeEditor=t,this.addComponent(this._activeEditor)}let e=this._activeEditor,t=this._renderer;this.prepareEditor(e),e.setValue(t.getValue()),this.getLayoutManager().setVisibleComponentId(e.getId()),this.doLayout(),e.focus(!0)}commitEdit(){if(this.isReadOnly()||!this.isEditing())return this;let e=this._activeEditor.getValue();return this._renderer.setValue(e),this.emit(`commit`,e),this.detachEditor(),this}cancelEdit(){this.isReadOnly()||!this.isEditing()||this.detachEditor()}detachEditor(){let e=this._activeEditor;e&&(this._activeEditor=null,this.getLayoutManager().setVisibleComponentId(this._renderer.getId()),this.doLayout(),this._editor!==e&&(this.removeComponent(e),this._editorPool?.release()))}setValue(e){return this._renderer.setValue(e),this}getRenderer(){return this._renderer}doLayout(){return super.doLayout(),this.alignEditorWithContent(),this}alignEditorWithContent(){let e=this._activeEditor;if(!e)return;let t=this._renderer.getContentX();if(t<=0)return;let n=this.getWidth()??0,r=Math.max(0,n-t);e.setAutoCommitStyle(!1),e.setX(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),f.addListener(e,`dblclick`,()=>this.startEdit())),this._renderer=e,this.getLayoutManager().setVisibleComponentId(e.getId())}prepareEditor(e){}},BooleanEditor=class extends CellEditor{_checkBox=new se;_value=null;_listeners=new p;_suppressCommit=!1;constructor(){super(),this._checkBox.setIndeterminate(!0),this._checkBox.setAnimated(!1),this.addComponent(this._checkBox),this._checkBox.on(`action`,()=>{this._suppressCommit||(this._value=this._checkBox.isSelected(),this.emit(`change`,this._value))})}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}getValue(){return this._value}setValue(e){this._value=e??null,this._suppressCommit=!0;try{this._value===null?this._checkBox.setIndeterminate(!0):(this._checkBox.setIndeterminate(!1),this._checkBox.setSelected(this._value))}finally{this._suppressCommit=!1}return this}setReadOnly(e){return this._checkBox.setReadOnly(e),this}isReadOnly(){return this._checkBox.isReadOnly()}toggle(){let e=!this._checkBox.isSelected();return this._checkBox.setIndeterminate(!1),this._checkBox.setSelected(e),this._value=e,this.emit(`change`,this._value),this}},E=s(BooleanEditor),CellRenderer=class extends u{constructor(){super(),this.setLayoutManager(new v);let applyPadding=()=>{let e=l.getTheme().table.cell.padding;this.setInsets(new r(0,e,0,e))};applyPadding(),this.subscribeTheme(applyPadding)}getContentX(){return 0}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}},StringRenderer=class extends CellRenderer{_text=new y;_value=null;constructor(){super(),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){return this._value=e??null,this._text.setText(this._value===null?``:String(this._value)),this}},D=s(StringRenderer),NumberRenderer=class extends CellRenderer{_text=new y;_value=null;constructor(){super(),this._text.setPointerEvents(`none`),this._text.setTextAlign(`right`),this._text.setText(``),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){return this._value=e??null,this._text.setText(this._value===null?``:String(this._value)),this}},O=s(NumberRenderer),DateRenderer=class extends CellRenderer{_text=new y;_value=null;constructor(){super(),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._text.setText(e?e.toLocaleDateString():``),this}},k=s(DateRenderer),TimeRenderer=class extends CellRenderer{_text=new y;_value=null;_showSeconds;constructor(e=!1){super(),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){this._value=e??null;let t=this._showSeconds?{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}:{hour:`2-digit`,minute:`2-digit`};return this._text.setText(e?e.toLocaleTimeString(void 0,t):``),this}},A=s(TimeRenderer),DateTimeRenderer=class extends CellRenderer{_text=new y;_value=null;_showSeconds;constructor(e=!1){super(),this._showSeconds=e,this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getValue(){return this._value}setValue(e){this._value=e??null;let t=this._showSeconds?{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}:{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`};return this._text.setText(e?e.toLocaleString(void 0,t):``),this}},j=s(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 h(t),this._glyph.setPointerEvents(`none`),this.addComponent(this._glyph)),this)}},M=s(GlyphRenderer);function normalizeComboOptions(e){return e.map(e=>typeof e==`string`?{value:e,label:e}:{value:e.value,label:e.label??e.value})}var ComboRenderer=class extends CellRenderer{_text=new y;_map=new Map;_value=null;constructor(e){super();for(let t of normalizeComboOptions(e))this._map.set(t.value,t.label);this._text.setText(``),this._text.setPointerEvents(`none`),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getText(){return this._text}getValue(){return this._value}setValue(e){if(this._value=e??null,this._value===null)this._text.setText(``);else{let e=String(this._value);this._text.setText(this._map.get(e)??e)}return this}setOptions(e){this._map.clear();for(let t of normalizeComboOptions(e))this._map.set(t.value,t.label);return this.setValue(this._value),this}},N=s(ComboRenderer),P=s(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 D;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){switch(e){case`number`:return new O;case`date`:return new k;case`time`:return new A(t);case`datetime`:return new j(t);case`combo`:return new N([]);case`glyph`:return new M;default:return new D}}ensureCheckbox(){if(this._checkbox)return this._justCreated=!1,this._checkbox;let e=new E;return e.on(`change`,e=>this.emitCommit(e)),this._checkbox=e,this._justCreated=!0,e}emitCommit(e){this.emit(`commit`,e)}}),DefaultCell=class extends Cell{constructor(e){let t=new D;super(e||`td`,t)}getRenderer(){return super.getRenderer()}setValue(e){return this.getRenderer().setValue(e),this}},F=s(DefaultCell),StringCell=class extends Cell{constructor(){let e=new D;super(`td`,e)}getEditorKey(){return`string`}setValue(e){return this.getRenderer().setValue(e),this}},I=s(StringCell),BooleanCell=class extends Cell{_checkbox;constructor(){let e=new E;super(`td`,e,void 0,{fill:o.NONE,anchor:d.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}},L=s(BooleanCell),NumberCell=class extends Cell{constructor(){let e=new O;super(`td`,e)}getEditorKey(){return`number`}setValue(e){return this.getRenderer().setValue(e),this}},R=s(NumberCell),DateCell=class extends Cell{constructor(){let e=new k;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)}},Te=s(DateCell),TimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new A(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)}},z=s(TimeCell),DateTimeCell=class extends Cell{_showSeconds;constructor(e=!1){let t=new j(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)}},Ee=s(DateTimeCell),GlyphCell=class extends Cell{constructor(){let e=new M;super(`td`,e)}setValue(e){return this.getRenderer().setValue(e),this}},De=s(GlyphCell),ComboCell=class extends Cell{_field;constructor(e,t){super(`td`,new N(t)),this._field=e}getEditorKey(){return`combo:${this._field}`}setValue(e){return this.getRenderer().setValue(e),this}},B=s(ComboCell);h.register(de,pe);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}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 h(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.getWidth()||0,t=this.getHeight()||0,n=this._depth*this._indentPx;if(this._toggle){let e=this._toggle.getPreferredSize()?.height??t;this._toggle.setAutoCommitStyle(!1),this._toggle.setX(n),this._toggle.setY(Math.max(0,(t-e)/2)),this._toggle.setWidth(20),this._toggle.setHeight(e),this._toggle.setAutoCommitStyle(!0)}let r=n+20,i=Math.max(0,e-r);return this._delegate.setAutoCommitStyle(!1),this._delegate.setX(r),this._delegate.setY(0),this._delegate.setWidth(i),this._delegate.setHeight(t),this._delegate.setAutoCommitStyle(!0),super.doLayout(),this}},V=s(TreeCellRenderer),H=s(class Row extends u{_model;_data;_onCellCommit;_fieldNames=[];_treeCell=null;_stripe=!1;constructor(e,t,n=new Set,r=new Map,i,a){if(super({tag:`tr`}),this.getAria().setRole(`row`),this._model=e,this._data=t,this._onCellCommit=i,this._model){let e=this._model.getFields().filter(e=>!n.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder());this._fieldNames=e.map(e=>e.getName());for(let t in e){let n=e[t],i=Row.createCellForField(n,r);this.bindCell(i,this._data,n.getName()),i.on(`commit`,e=>{this._data&&(this._data.set(n.getName(),e),this._onCellCommit?.(this._data)),this.updateVisualState()});let o=r.get(n.getName())?.groupColor;o&&i.setBaseBackground(o),r.get(n.getName())?.readOnly&&i.setReadOnly(!0),a!==void 0&&n.getName()===a&&(i.wrapRenderer(e=>new V(e)),this._treeCell=i),this.addComponent(i,{data:n})}}}getTreeCell(){return this._treeCell}getFieldNames(){return this._fieldNames}getData(){return this._data}setData(e){this._data=e;let t=this.getComponents(),n=this._fieldNames;for(let r=0;r<n.length;r++)this.bindCell(t[r],e,n[r]);return this.updateVisualState(),this}setStripe(e){this._stripe=e}updateVisualState(){let t=this.getElement();t&&(this._data?.isNew()?e.sink.apply(t,{style:{"background-color":`var(--ts-ui-table-row-new, rgba(70, 200, 70, 0.15))`}}):this._data?.isDirty()?e.sink.apply(t,{style:{"background-color":`var(--ts-ui-table-row-dirty, rgba(255, 165, 0, 0.15))`}}):this._stripe?e.sink.apply(t,{style:{"background-color":`var(--ts-ui-table-row-stripe, rgba(0, 0, 0, 0.035))`}}):e.sink.apply(t,{style:{"background-color":null}}))}addColumn(e,t){return this.addComponent(e,t),this}addComponent(e,t){return super.addComponent(e,t),this}syncCells(e,t,n,r){this._model=e;let i=e.getFields().filter(e=>!t.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()),a=this.getComponents().slice(),o=new Map;for(let e of a){let t=this.getLayoutConstraints(e)?.data;t&&o.set(t.getName(),e)}let s=new Set(i.map(e=>e.getName()));for(let e of a){let t=this.getLayoutConstraints(e)?.data;(!t||!s.has(t.getName()))&&(e.isEditing()&&e.commitEdit(),this.removeComponent(e))}this._treeCell=null;for(let e of i){let t=e.getName(),i=o.get(t),a=(n.get(t)?.values?.length??0)>0,s=!!n.get(t)?.cellType;i&&(a!==i instanceof B||s!==i instanceof P)&&(i.isEditing()&&i.commitEdit(),this.removeComponent(i),i=void 0);let c=!i;i||=Row.createCellForField(e,n),i.on(`commit`,e=>{this._data&&(this._data.set(t,e),this._onCellCommit?.(this._data)),this.updateVisualState()});let l=n.get(t)?.groupColor;l&&i.setBaseBackground(l),c&&r!==void 0&&t===r&&i.wrapRenderer(e=>new V(e)),r!==void 0&&t===r&&(this._treeCell=i),c&&(this.addComponent(i,{data:e}),this.bindCell(i,this._data,t))}return this.sortComponents((e,t)=>(this.getLayoutConstraints(e)?.data).getOrder()-(this.getLayoutConstraints(t)?.data).getOrder()),this._fieldNames=i.map(e=>e.getName()),this}bindCell(e,t,n){e instanceof P&&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 P(e.getName(),e.getType(),n);let r=n?.values;if(r&&r.length>0)return new B(e.getName(),r);switch(e.getType()){case`string`:return new I;case`number`:return new R;case`boolean`:return new L;case`date`:return new Te;case`time`:return new z(t.get(e.getName())?.showSeconds??!1);case`datetime`:return new Ee(t.get(e.getName())?.showSeconds??!1);case`glyph`:return new De;default:return new F}}doLayout(){return this}}),Oe=`var(--ts-ui-table-resize-handle-cursor, ew-resize)`,ke=null;function ensureResizeHandleClassRule(){ke||=new i({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 u{_listeners=new p;constructor(e){ensureResizeHandleClassRule(),super({tag:`div`,...e??{}}),this.setCursor(Oe),this.setBackgroundImage(`linear-gradient(to right,transparent 80%,var(--ts-ui-table-resize-handle-color,rgba(0,0,0,0.2)) 80%)`),this.setZIndex(1),this.applyListeners(e?.listeners)}init(e){return super.init(e),f.addListener(this,`mousedown`,this._onMouseDown),f.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},Ae=s(ResizeHandle),je=null;function ensureSortBadgeClassRule(){je||=new i({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 SortPriorityBadge=class extends u{constructor(e){ensureSortBadgeClassRule(),super({tag:`span`,...e??{}}),this._priority??=null,this.setBackgroundColor(`var(--ts-ui-sort-badge-bg, rgba(0,0,0,0.15))`),this.setForegroundColor(`var(--ts-ui-sort-badge-color, inherit)`),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}},Me=s(SortPriorityBadge),Ne=16,Pe=16,Fe=null;function ensureHeaderCellGlyphClassRule(){Fe||=new i({scope:`class`,name:`HeaderCellGlyph`,styles:{position:`absolute`,left:`var(--ts-ui-table-header-glyph-gap, 4px)`,top:`50%`}})}var HeaderCell=class extends F{_text;_fieldName;_isDragging=!1;_tooltipText=``;_sortState=null;_headerGlyph=null;_headerGlyphInstance=null;_columnFocused=!1;_required=!1;constructor(e,t,n){super(`th`),this.getAria().setRole(`columnheader`),this.getAria().setSort(`none`),this._text=e,this._fieldName=t,this._headerGlyph=n??null;let r=this.getRenderer();r.getText().setFontSize(`--ts-ui-table-header-font-size`),r.getText().setFontWeight(`bold`),r.getText().setText(e),this.createStyleRule(`:active`).set(`boxShadow`,`var(--ts-ui-button-pressed-shadow, 1px 2px 5px 0 rgba(0,0,0,0.2) inset)`),this._resizeHandle=new Ae({listeners:{dragstart:e=>this.onResizeDragStart(e),dragmove:e=>this.emit(`resizedrag`,e)}}),this._priorityBadge=new Me}init(t){super.init(t);let n=t||this.getElement();return n?(f.addSubtreeListener(this,`click`,e=>this.onSortClick(e.shiftKey)),f.addSubtreeListener(this,`contextmenu`,e=>{e.preventDefault(),this.emit(`contextmenu`,this._fieldName,e.clientX,e.clientY)}),e.sink.appendChild(n,this._resizeHandle.getElement(!0)),e.sink.appendChild(n,this._priorityBadge.getElement(!0)),this._tooltipText&&_.attachToElement(n,this._tooltipText),this._headerGlyph&&this.setHeaderGlyph(this._headerGlyph),this):this}getHeaderGlyph(){return this._headerGlyph}setHeaderGlyph(e){return this._headerGlyph=e,this._mountHeaderGlyph(this.getElement()),this}_mountHeaderGlyph(t){if(this._headerGlyphInstance){let t=this._headerGlyphInstance.getElement();t&&e.sink.removeElement(t),this._headerGlyphInstance=null}let n=l.getTheme().table.cell.padding,i=this._headerGlyph;if(!i||!t){this.getRenderer().setInsets(new r(0,n,0,n));return}ensureHeaderCellGlyphClassRule();let a=new h(i);a.setTransform(`translateY(-50%)`),a.setSize({width:Ne,height:Pe}),a.setForegroundColor(`var(--ts-ui-table-header-glyph-color, currentColor)`),a.setPointerEvents(`none`);let o=a.getElement(!0);e.sink.apply(o,{addClass:[`HeaderCellGlyph`]}),e.sink.appendChild(t,o),this._headerGlyphInstance=a;let s=20+n;this.getRenderer().setInsets(new r(0,n,0,s))}setSortState(e,t){return this._sortState={state:e,priority:t??null},this._renderTitle(),this.getAria().setSort(e===`asc`?`ascending`:`descending`),this._priorityBadge.setPriority(t??null),this}getSortState(){return this._sortState}clearSortState(){return this._sortState=null,this._renderTitle(),this.getAria().setSort(`none`),this._priorityBadge.clearPriority(),this}setRequired(e){return this._required=e,this._renderTitle(),this}_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&&_.attachToElement(t,e),this}getTooltip(){return this._tooltipText}onSortClick(e){if(this._isDragging){this._isDragging=!1;return}this.emit(`sortclick`,this._fieldName,e)}onResizeDragStart(e){e.stopPropagation(),this._isDragging=!0,this.emit(`resizestart`,e.clientX),f.addViewportListener(this,`mousemove`,this.onResizeDrag),f.addViewportListener(this,`mouseup`,this.onResizeDragStop),te(Oe)}onResizeDrag(e){return this._resizeHandle.dragMove(e.clientX),!0}onResizeDragStop(){return f.removeViewportListener(this,`mousemove`,this.onResizeDrag),f.removeViewportListener(this,`mouseup`,this.onResizeDragStop),ne(),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}},Ie=s(HeaderCell),ParentHeaderCell=class extends F{_text;_color;_tooltipText=``;constructor(e,t){super(`th`),this._text=e,this._color=t,this.getAria().setRole(`columnheader`);let n=this.getRenderer();n.getText().setFontSize(`--ts-ui-table-header-font-size`),n.getText().setFontWeight(`bold`),n.getText().setTextAlign(`center`),n.getText().setText(e),this.setBackgroundColor(t??`transparent`),this.setShadow([`inset -1px 0 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`,`inset 0 -1px 0 0 var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`].join(`, `))}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,...t){this._listeners.fire(e,...t)}setTooltip(e){this._tooltipText=e;let t=this.getElement();return t&&_.attachToElement(t,e),this}getTooltip(){return this._tooltipText}getText(){return this._text}getColor(){return this._color}init(e){super.init(e);let t=e||this.getElement();return t?(f.addSubtreeListener(this,`contextmenu`,this.onContextMenu),this._tooltipText&&_.attachToElement(t,this._tooltipText),this):this}onContextMenu(e){e.preventDefault(),this.emit(`contextmenu`,e.clientX,e.clientY)}},Le=s(ParentHeaderCell),U=`var(--ts-ui-table-header-bg, var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200))))`,TableHeader=class extends u{_model;_store;_hiddenColumns=new Set;_columns=[];_listeners=new p;_scrollbarCover=null;constructor(e,t){super({tag:`thead`}),this.getAria().setRole(`rowgroup`),this.setBorder({borderBottom:`1px solid var(--ts-ui-table-header-border, black)`}),this.setBackgroundColor(U),this.setBackgroundImage(U),this.setOverflow(`hidden`),this._model=e,this._store=t;let n=new H,r=new H;this.addRow(n),this.addRow(r),this.rebuildCells(),this.rebuildParentCells()}getModel(){return this._model}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}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()}getParentRow(){return this.getComponents()[0]}hasParentRow(){return this._columns.filter(e=>!this._hiddenColumns.has(e.getField().getName())).some(e=>e.getGroup()!==null)}getScrollbarCover(){if(this._scrollbarCover===null){let t=e.sink.createElement(`div`);e.sink.apply(t,{style:{position:`absolute`,top:`0`,boxSizing:`border-box`,zIndex:`1`,pointerEvents:`none`,backgroundColor:U,backgroundImage:U,borderLeft:`1px solid var(--ts-ui-table-resize-handle-color, rgba(0, 0, 0, 0.2))`}}),e.sink.appendChild(this.getElement(!0),t),this.trackHandle(t),this._scrollbarCover=t}return this._scrollbarCover}sortColumns(){let e=this.getComponents()[1];e.sortComponents((t,n)=>{let r=e.getLayoutConstraints(t),i=e.getLayoutConstraints(n);return r?i?r.data.getOrder()-i.data.getOrder():1:-1})}addRow(e){return this.addComponent(e),this}addComponent(e){return super.addComponent(e),this}setWidth(e){super.setWidth(e);let t=this.getComponents();return t[0].setWidth(e),t[1].setWidth(e),this}setHeight(e){return super.setHeight(e),this}rebuildCells(){let e=this.getComponents()[1],t=this._model.getFields().slice().filter(e=>!this._hiddenColumns.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()),n=new Map(this._columns.map(e=>[e.getField().getName(),e])),r=e.getComponents().slice(),i=new Map;for(let t of r){let n=e.getLayoutConstraints(t)?.data;n&&i.set(n.getName(),t)}let a=new Set(t.map(e=>e.getName()));for(let t of r){let n=e.getLayoutConstraints(t)?.data;(!n||!a.has(n.getName()))&&e.removeComponent(t)}for(let r=0;r<t.length;r++){let a=t[r],o=n.get(a.getName()),s=i.get(a.getName());if(!s){let t=o?.getHeaderGlyph()??null;s=new Ie(a.getName(),a.getName(),t),s.setTooltip(a.getDescription()),e.addComponent(s,{data:a}),this.wireCell(s)}let c=o?.getGroupColor();c&&s.setBackgroundColor(c),s.setRequired(o?.isRequired()??!1)}e.sortComponents((t,n)=>(e.getLayoutConstraints(t)?.data).getOrder()-(e.getLayoutConstraints(n)?.data).getOrder()),this.syncSortIndicators()}rebuildParentCells(){let e=this.getParentRow();e.removeAllComponents();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 Le(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();r!==null&&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.getColumns().indexOf(e),t)),e.on(`resizedrag`,t=>this.emit(`columnresize`,this.getColumns().indexOf(e),t)),e.on(`contextmenu`,(e,t,n)=>this.emit(`columncontextmenu`,e,t,n))}handleSortClick(e,t){if(t){let t=this._store.getActiveSorters(),n=t.findIndex(t=>t.field===e),r;r=n===-1?[...t,{field:e,dir:`asc`}]:t[n].dir===`asc`?t.map((e,t)=>t===n?{field:e.field,dir:`desc`}:e):t.filter((e,t)=>t!==n),r.length===0?this._store.clearSort():this._store.sort(r)}else{let t=this._store.getActiveSorters(),n=t.length===1&&t[0].field===e?t[0]:null;n?n.dir===`asc`?this._store.sort(e,`desc`):this._store.clearSort():this._store.sort(e,`asc`)}this.syncSortIndicators()}syncSortIndicators(){let e=this.getColumns(),t=this._model.getFields().slice().filter(e=>!this._hiddenColumns.has(e.getName())).sort((e,t)=>e.getOrder()-t.getOrder()),n=this._store.getActiveSorters(),r=new Map(n.map((e,t)=>[e.field,{dir:e.dir,priority:t+1}])),i=n.length>1;e.forEach((e,n)=>{let a=t[n]?.getName(),o=a?r.get(a):void 0;o?e.setSortState(o.dir,i?o.priority:null):e.clearSortState()})}},W=s(TableHeader),StringEditor=class extends CellEditor{_textField=new T;_value=null;constructor(){super(),f.addListener(this._textField,`blur`,e=>{f.fireEvent(this,`blur`,e)}),f.addListener(this._textField,`keydown`,e=>{f.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}})}),f.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}},Re=s(StringEditor),NumberEditor=class extends CellEditor{_textField=new T;_value=null;constructor(){super(),f.addListener(this._textField,`blur`,e=>{f.fireEvent(this,`blur`,e)}),f.addListener(this._textField,`keydown`,e=>{f.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}})}),f.addListener(this._textField,`input`,()=>this.onInput()),this.setMaxSize({width:2**53-1,height:2**53-1}),this._textField.clearPadding(),this.setBorderRadius(`0`),this._textField.setBorder({border:`0px solid transparent`}),this._textField.setShadow(`inset 0 0 0 1px var(--ts-ui-table-cell-editor-border, rgba(30, 100, 200, 0.6))`),this._textField.setOutline(`none`),this._textField.setTextAlign(`right`),this._textField.setText(``),this.addComponent(this._textField,{anchor:d.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}},ze=s(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`),f.addListener(this,`focus`,()=>this.openDropdown()),f.addListener(this,`blur`,()=>this.closeDropdown()),f.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}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 ce(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`)}`}},Be=s(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`),f.addListener(this,`focus`,()=>this.openDropdown()),f.addListener(this,`blur`,()=>this.closeDropdown()),f.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}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 ae((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}`}},G=s(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`),f.addListener(this,`focus`,()=>this.openDropdown()),f.addListener(this,`blur`,e=>this.onEditorBlur(e)),f.addListener(this,`input`,()=>this.onInput()),this.setType(`text`),this.setInputMode(`none`),this.setAutoComplete(`off`)}retainsFocus(e){return this._dropdown!==null&&this._dropdown.isOpen()&&g.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 le(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}`}},K=s(DateTimeEditor),CellEditorPool=class{_editors=new Map;_factories=new Map;_activeCell=null;constructor(){this._factories.set(`string`,()=>new Re),this._factories.set(`number`,()=>new ze),this._factories.set(`date`,()=>new Be),this._factories.set(`time`,()=>new G(!1)),this._factories.set(`time:seconds`,()=>new G(!0)),this._factories.set(`datetime`,()=>new K(!1)),this._factories.set(`datetime:seconds`,()=>new K(!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}wireListeners(e){e.setCommitRequestHandler(()=>this._activeCell?.commitEdit()),f.addListener(e,`blur`,t=>{e.retainsFocus(blurRelatedTargetHandle(t))||this._activeCell?.commitEdit()}),f.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 ue,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()),f.addListener(this._combo,`blur`,()=>this.commitFromCombo()),f.addListener(this._combo,`keydown`,e=>{f.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()}},q=s(ComboEditor);function resolveClickedColumn(t,n){for(let r=0;r<t.length;r++){let i=t[r].getElement();if(i&&(i===n||e.source.contains(i,n)))return r}return-1}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}var Ve=class Body extends me{_store;_hiddenColumns=new Set;_columns=[];_columnConfigs=new Map;_rowReadOnly=null;_cellGeom=[];_lastBodyWidth=0;_lastColumnWidths=[];_lastAriaRowCount=-1;_rowHeight;_storeRefresh=null;_selectedRecords=new Set;_anchorRecord=null;_focusedColIndex=0;_editorPool=new CellEditorPool;_header=null;_listeners=new p;constructor(e){super({tag:`tbody`}),this.setOverflow(`hidden`),this.setBackgroundColor(`var(--ts-ui-input-bg, rgb(255, 255, 255))`),this.getAria().setTabIndex(0),this.getAria().setRole(`rowgroup`),this._store=e,this.bindStore(e),this._rowHeight=this.computeRowHeight(),this.subscribeTheme(()=>{this._rowHeight=this.computeRowHeight(),this._boundIndices.fill(-1),this.invalidateGeom(),this.renderWindow()})}computeRowHeight(){let e=l.getTheme();return n.lineHeightPx()+2*(e.table.cell.padding??2)}getRowHeight(){return this._rowHeight}createPoolRow(){let e=this.createRow();for(let t of e.getComponents())t.setEditorPool(this._editorPool),t.setScrollIntoViewHandler(()=>this.scrollColumnIntoView(this._focusedColIndex));return e}onPoolRowAdded(){this._cellGeom.push([])}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(){return this._store.getRecords()}createRow(){return new H(this._store.model,void 0,this._hiddenColumns,this._columnConfigs,e=>this._store.notifyRecordChanged(e))}getTreeFieldName(){}computeRowAria(e,t){e.getAria().setRowIndex(t+2)}afterRowBound(e,t,n){}invalidateRowBindings(){this._boundIndices.fill(-1)}getStore(){return this._store}getHiddenColumns(){return this._hiddenColumns}getColumnConfigs(){return this._columnConfigs}getRowPool(){return this._rowPool}invalidateGeom(){super.invalidateGeom();for(let e=0;e<this._cellGeom.length;e++)this._cellGeom[e]=[]}setHiddenColumns(e){let t=new Set;for(let n of e){let e=this._columns.find(e=>e.getField().getName()===n);(!e||!e.isUnhideable())&&t.add(n)}return this._hiddenColumns=t,this.syncPoolCells(),this.renderWindow(),this}setColumns(e){return this._columns=e,this.syncPoolCells(),this.renderWindow(),this}setRowReadOnly(e){return this._rowReadOnly=e,this}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 q(e)):n.cellValues&&this._editorPool.register(`combo:${t}`,()=>new q([]))}}syncPoolCells(){let e=this.getTreeFieldName();for(let t=0;t<this._rowPool.length;t++){let n=this._rowPool[t];n.syncCells(this._store.model,this._hiddenColumns,this._columnConfigs,e);for(let e of n.getComponents())e.setEditorPool(this._editorPool),e.setScrollIntoViewHandler(()=>this.scrollColumnIntoView(this._focusedColIndex));this._rowGeom[t]=null,this._cellGeom[t]=[]}}setStore(e){if(this._storeRefresh){let e=this._store;[`load`,`add`,`remove`,`datachange`,`beforesync`,`sync`].forEach(t=>e.off(t,this._storeRefresh))}return this._store=e,this.bindStore(e),this.invalidateGeom(),this.getElement()&&this.onStoreChange(),this}init(e){super.init(e);let t=e||this.getElement();return t?(this.initScroller(t),f.addListener(this,`focus`,this.onFocus),f.addListener(this,`keydown`,this.onKeyDown),f.addSubtreeListener(this,`click`,this.onSubtreeClick),this.renderWindow(),this):this}onScrollerTick(){this.renderWindow(),this._scroller&&(this.emit(`verticalscroll`,this._scroller.getScrollY()),this.emit(`horizontalscroll`,this._scroller.getScrollX()))}onFocus(){this._updateActiveDescendant(),this._updateFocusStyle()}getEditorPool(){return this._editorPool}renderWindow(e,t){if(!this.getElement()||!this._scroller)return;let n=this._scroller,r=this.getVisibleRecords(),i=r.length,a=n.getScrollX(),o=n.getScrollY();this.updateColumnWidthCache(e,t);let s=i*this._rowHeight,c=this._lastColumnWidths.reduce((e,t)=>e+t,0),l=Math.max(this._lastBodyWidth,c);n.clampToContent(l,s);let u=this.getHeight()||0,d=this.computeVisibleWindow(n.getScrollY(),u,i),f=this.computePoolTarget(d.windowSize,u,i);this.growRowPool(f);let p=Math.max(this._lastBodyWidth,c),m=this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).length,h=m>0?p/m:p;this.bindAndPositionRows(d.firstRow,d.windowSize,p,h,r),this.hideExcessPoolRows(d.windowSize),i!==this._lastAriaRowCount&&(this.getAria().setRowCount(i),this._lastAriaRowCount=i),n.layoutScrollbars(l,s);let g=n.getScrollX(),_=n.getScrollY();g!==a&&this.emit(`horizontalscroll`,g),_!==o&&this.emit(`verticalscroll`,_),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()}bindAndPositionRows(e,t,n,r,i){let a=this._rowHeight;for(let o=0;o<t;o++){let t=this._rowPool[o],s=e+o,c=this._boundIndices[o]!==s;c&&(t.setData(i[s]),this._boundIndices[o]=s,t.setStripe(s%2==1),this.updateRowVisualState(o),this.computeRowAria(t,s),this.applyReadOnlyState(t,i[s])),this.afterRowBound(t,s,c),this.applyRequiredEmptyState(t,i[s]),this.positionRow(o,s*a,n);let l=t.getComponents(),u=this._cellGeom[o],d=0;for(let e=0;e<l.length;e++){let t=l[e],n=this._lastColumnWidths[e]??r,i=u[e];(!i||i.x!==d||i.w!==n||i.h!==a)&&(t.setAutoCommitStyle(!1),t.setX(d),t.setY(0),t.setWidth(n),t.setHeight(a),t.setAutoCommitStyle(!0),u[e]={x:d,w:n,h:a},i||t.getAria().setColIndex(e+1),t.doLayout()),d+=n}}}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){let r=t.getData()??null;if(!r)return;let i=this.getVisibleRecords();this._anchorRecord=fe(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();let a=n.target===null?null:e.source.intern(n.target),o=resolveClickedColumn(t.getComponents(),a);o>=0&&(this._focusedColIndex=o);let s=a===null?``:e.source.getTagName(a);if(s!==`INPUT`&&s!==`TEXTAREA`&&s!==`SELECT`&&this.focus(),this._updateFocusStyle(),this._updateActiveDescendant(),o>=0){let e=t.getFieldNames()[o];this.emit(`cellclick`,{record:r,field:e,columnIndex:o,value:r.get(e),rowIndex:this.getVisibleRecords().indexOf(r),event:n})}}selectRecord(e){this._selectedRecords.clear(),this._anchorRecord=e,e&&this._selectedRecords.add(e),this._boundIndices.forEach((e,t)=>{e!==-1&&this.updateRowVisualState(t)}),this.notifySelectionChange()}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){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()}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(){this.emit(`selection`,this.getSelectedRecords())}scrollToRecord(e){let t=this.getVisibleRecords().indexOf(e);t!==-1&&this.setScrollY(t*this._rowHeight)}applyReadOnlyState(e,t){let n=this._rowReadOnly?.(t)===!0,r=e.getComponents(),i=e.getFieldNames();for(let e=0;e<r.length;e++){let a=r[e],o=i[e],s=this._columnConfigs.get(o),c=s?.readOnly===!0,l=s?.cellReadOnly?.(t)===!0,u=c||n||l;a.setReadOnly(u)}}static isEmptyValue(e){return e==null||e===``}applyRequiredEmptyState(e,t){let n=e.getComponents(),r=e.getFieldNames();for(let e=0;e<n.length;e++){let i=r[e],a=this._columnConfigs.get(i),o=a?.required===!0||a?.requiredPredicate?.(t)===!0,s=Body.isEmptyValue(t.get(i));n[e].setRequiredEmpty(o&&s)}}updateRowVisualState(t){let n=this._boundIndices[t];if(n===-1)return;let r=this.getVisibleRecords()[n];if(!r)return;let i=this._rowPool[t],a=i.getElement(),o=this._selectedRecords.has(r);o?e.sink.apply(a,{style:{"background-color":`var(--ts-ui-table-row-selected, rgba(30, 100, 200, 0.15))`,"box-shadow":`var(--ts-ui-table-row-selected-border, none)`}}):(e.sink.apply(a,{style:{"box-shadow":null}}),i.updateVisualState()),i.getAria().setSelected(o)}setHeader(e){return this._header=e,this}_updateFocusStyle(){for(let t of this._rowPool)for(let n of t.getComponents()){let t=n.getElement();t&&e.sink.apply(t,{style:{outline:null,"outline-offset":null}})}let t=this._header===null?null:this._header.getColumns();if(t!==null)for(let e of t)e.setColumnFocused(!1);if(!this._anchorRecord)return;if(t!==null)for(let e=0;e<t.length;e++)t[e].setColumnFocused(e===this._focusedColIndex);let n=this.getVisibleRecords().indexOf(this._anchorRecord),r=this._boundIndices.indexOf(n);if(r<0)return;let i=this._rowPool[r].getComponents()[this._focusedColIndex];if(i){let t=i.getElement();t&&e.sink.apply(t,{style:{outline:`var(--ts-ui-indicator-selection, 1px dashed rgb(120, 170, 240))`,"outline-offset":`-1px`}})}}_updateActiveDescendant(){if(!this._anchorRecord){this.getAria().setActiveDescendant(``);return}let e=this.getVisibleRecords().indexOf(this._anchorRecord),t=this._boundIndices.indexOf(e);if(t<0){this.getAria().setActiveDescendant(``);return}let n=this._rowPool[t].getComponents()[this._focusedColIndex];n?this.getAria().setActiveDescendant(n.getId()):this.getAria().setActiveDescendant(this._rowPool[t].getId())}onKeyDown(e){let t=this.getVisibleRecords();if(t.length===0||!new Set([`ArrowDown`,`ArrowUp`,`Home`,`End`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Enter`,` `]).has(e.key))return;if(e.preventDefault(),e.key===`ArrowLeft`||e.key===`ArrowRight`){let t=this._store.model.getFields().filter(e=>!this._hiddenColumns.has(e.getName())).length;e.key===`ArrowLeft`?this._focusedColIndex=Math.max(0,this._focusedColIndex-1):this._focusedColIndex=Math.min(t-1,this._focusedColIndex+1),this._updateActiveDescendant(),this._updateFocusStyle();return}if(e.key===`Enter`||e.key===` `){if(!this._anchorRecord)return;let e=t.indexOf(this._anchorRecord),n=this._boundIndices.indexOf(e);if(n<0)return;let r=this._rowPool[n].getComponents()[this._focusedColIndex];if(r instanceof Cell){let e=r;e.on(`editend`,()=>{this.focus(),this._updateFocusStyle(),this._updateActiveDescendant()}),e.startEdit()}return}let n=this._anchorRecord?t.indexOf(this._anchorRecord):-1,r=this.computePageSize(),i;i=e.key===`ArrowDown`?n<0?0:Math.min(n+1,t.length-1):e.key===`ArrowUp`?n<0?0:Math.max(n-1,0):e.key===`PageDown`?n<0?0:Math.min(n+r,t.length-1):e.key===`PageUp`?n<0?0:Math.max(n-r,0):e.key===`Home`?0:t.length-1;let a=t[i];this.selectRecord(a),this.scrollRecordIntoView(a),this.renderWindow(),this._updateActiveDescendant()}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)}},J=s(Ve),FooterRow=class extends u{constructor(){super({tag:`tfoot`}),this.setBorder({borderTop:`1px solid var(--ts-ui-border-color, black)`});let e=`var(--ts-ui-button-bg, linear-gradient(rgb(241, 241, 241), rgb(200, 200, 200)))`;this.setBackgroundColor(e),this.setBackgroundImage(e);let t=new H;this.addRow(t)}getColumns(){return this.getComponents()[0].getComponents()}addRow(e){return this.addComponent(e),this}addComponent(e){return super.addComponent(e),this}setWidth(e){return super.setWidth(e),this.getComponents()[0].setWidth(e),this}setHeight(e){return super.setHeight(e),this.getComponents()[0].setHeight(e),this}},Y=s(FooterRow),X=class Column{_field;_minWidth;_maxWidth;_hidden;_unhideable;_readOnly;_headerGlyph;_group;_groupColor;_required;constructor(e,t){this._field=e,this._minWidth=t?.minWidth,this._maxWidth=t?.maxWidth,this._hidden=t?.hidden??!1,this._unhideable=t?.unhideable??!1,this._readOnly=t?.readOnly??!1,this._headerGlyph=t?.headerGlyph??null,this._group=t?.group??null,this._groupColor=t?.groupColor??null,this._required=t?.required??!1}getField(){return this._field}getMinWidth(){return this._minWidth}getMaxWidth(){return this._maxWidth}isInitiallyHidden(){return this._hidden}isUnhideable(){return this._unhideable}isReadOnly(){return this._readOnly}getHeaderGlyph(){return this._headerGlyph}setHeaderGlyph(e){return this._headerGlyph=e,this}clearHeaderGlyph(){return this.setHeaderGlyph(null)}getGroup(){return this._group}getGroupColor(){return this._groupColor}isRequired(){return this._required}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()))):n.map(e=>new Column(e,r.get(e.getName())))}},Z=class TableExporter{static exportCSV(e,t,n,r){let i=[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))).join(`,`))].join(`\r
2
2
  `);TableExporter.download(i,r?.filename??`table-export.csv`,`text/csv;charset=utf-8;`)}static exportJSON(e,t,n,r){let i=t.map(t=>Object.fromEntries(e.map(e=>[e.getField().getName(),TableExporter.formatValue(e,t.get(e.getField().getName()),n)]))),a=JSON.stringify(i,null,2);TableExporter.download(a,r?.filename??`table-export.json`,`application/json`)}static formatValue(e,t,n){if(t==null||!(t instanceof Date))return t;let r=e.getField().getType(),i=n.get(e.getField().getName())?.showSeconds??!1;switch(r){case`date`:return t.toLocaleDateString();case`time`:return t.toLocaleTimeString(void 0,i?{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}:{hour:`2-digit`,minute:`2-digit`});case`datetime`:return t.toLocaleString(void 0,i?{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`}:{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`});default:return t}}static escapeCSVField(e){let t=String(e??``);return t.includes(`,`)||t.includes(`"`)||t.includes(`
3
- `)?`"`+t.replace(/"/g,`""`)+`"`:t}static download(e,t,n){let i=new Blob([e],{type:n}),a=URL.createObjectURL(i),o=r.sink.createElement(`a`);r.sink.apply(o,{setAttr:{href:a,download:t}}),r.sink.appendChild(r.source.getBody(),o),r.sink.click(o),r.sink.removeChild(r.source.getBody(),o),r.sink.release(o),URL.revokeObjectURL(a)}},Table=class extends u{_store;_spec;_resolvedColumns=[];_hiddenColumns=new Set;_columnContextMenu=new re;_headerVisible;_header;_body;_bodyVisible;_footer;_footerVisible;_columnWidths=[];_resizeOriginClientX=0;_resizeOriginW0=0;_resizeOriginW1=0;_savedColumnWidths=new Map;_columnConfigs=new Map;_exportMenuEnabled=!1;_listeners=new p;constructor(e,t,r){super({tag:`table`}),this.setLayoutManager(new we),this.getAria().setRole(`grid`),this.setBorder({border:`1px solid var(--ts-ui-border-color, black)`}),this.setInsets(new n(0,0,0,0)),this.setOverflow(`hidden`),this.setMinSize(100,100),this._store=e,this._spec=t,this._headerVisible=!0,this._bodyVisible=!0,this._footerVisible=!1,this._resolvedColumns=X.resolve(e.model.getFields(),t),this.initHiddenFromSpec(),this._header=new W(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=r?r(e):new J(e),this._body.setHeader(this._header),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._body.setRowReadOnly(t?.rowReadOnly??null),this.getAria().setColCount(this.getColumns().length),this._body.on(`horizontalscroll`,e=>{this._header.getParentRow().setTranslate(-e,0),this._header.getComponents()[1].setTranslate(-e,0)}),this._body.on(`selection`,e=>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(){let e=this.getEffectiveHiddenSet();return this._resolvedColumns.filter(t=>!e.has(t.getField().getName()))}getStore(){return this._store}getModel(){return this._store.model}setStore(e){return this._store=e,this._columnWidths=[],this._savedColumnWidths=new Map,this._resolvedColumns=X.resolve(e.model.getFields(),this._spec),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.getAria().setColCount(this.getColumns().length),this}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}setColumnVisible(e,t){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);let n=this.getColumns(),r=n.map(e=>this._savedColumnWidths.get(e.getField().getName())??this.defaultColumnWidth(e)),i=this._columnWidths.reduce((e,t)=>e+t,0),a=r.reduce((e,t)=>e+t,0);this._columnWidths=a>i+.5&&i>0?this.trimToTarget(n,r,i,e):r;let o=this.getEffectiveHiddenSet();return this._header.setHiddenColumns(o),this._body.setHiddenColumns(o),this.getAria().setColCount(this.getColumns().length),this.doLayout(),this}getHeader(){return this._header}isHeaderVisible(){return this._headerVisible}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._body.scrollToRecord(t),this._body.selectRecord(t),t}removeSelectedRow(){let e=this._body.getSelectedRecord();return e?(this._body.selectRecord(null),this._store.remove(e),this):this}selectRecord(e){return e&&this._body.scrollToRecord(e),this._body.selectRecord(e),this}async sync(){return this._store.sync()}reject(){this._store.reject()}getSelectedRecord(){return this._body.getSelectedRecord()}getSelectedRecords(){return this._body.getSelectedRecords()}addComponent(e,t){return e instanceof W?this._header=e:e instanceof J?this._body=e:e instanceof Y&&(this._footer=e),super.addComponent(e,t),this}defaultColumnWidth(e){let n=e.getField(),r=t.measureTextWidth(n.getName(),{fontSize:`var(--ts-ui-table-header-font-size, var(--ts-ui-font-size))`,fontWeight:`bold`})+21;switch(n.getType()){case`boolean`:return Math.max(60,r);case`number`:return Math.max(90,r);case`date`:return Math.max(110,r);default:return Math.max(100,r)}}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,e[n].getMinWidth()??30);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]-(e.getMinWidth()??30):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}showColumnMenu(e,t){let n=this._resolvedColumns.slice().sort((e,t)=>e.getField().getOrder()-t.getField().getOrder()),r=[],i;n.forEach(e=>{let t=e.getField().getName(),n=!this._hiddenColumns.has(t),a=e.getGroup();a!==null&&a!==i&&r.push({text:a,enabled:!1});let o=a===null?``:`\xA0\xA0\xA0\xA0`,s=!e.isUnhideable();r.push({text:o+(n?`✓ `:` `)+t,action:()=>this.setColumnVisible(t,!n),enabled:s}),i=a}),r.push({separator:!0},{text:`Reset columns`,action:()=>this.resetColumns()}),this._exportMenuEnabled&&r.push({separator:!0},{text:`Export as CSV`,action:()=>this.exportCSV()},{text:`Export as JSON`,action:()=>this.exportJSON()}),this._columnContextMenu.show(e,t,r)}setExportMenuEnabled(e){return this._exportMenuEnabled=e,this}exportCSV(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();Z.exportCSV(t,n,this._columnConfigs,e)}exportJSON(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();Z.exportJSON(t,n,this._columnConfigs,e)}getExportColumns(e){return e?this._resolvedColumns.slice():this.getColumns()}onColumnResizeStart(e,t){let n=this._columnWidths.length;n===0||e>=n-1||(this._resizeOriginClientX=t,this._resizeOriginW0=this._columnWidths[e],this._resizeOriginW1=this._columnWidths[e+1])}onColumnResize(e,t){let n=this._columnWidths.length;if(n===0||e>=n-1)return;let r=this.getColumns(),i=r[e]?.getMinWidth()??30,a=r[e]?.getMaxWidth()??1/0,o=r[e+1]?.getMinWidth()??30,s=r[e+1]?.getMaxWidth()??1/0,c=t-this._resizeOriginClientX,l=this._resizeOriginW0+c,u=this._resizeOriginW1-c;l<i&&(u+=l-i,l=i),u<o&&(l+=u-o,u=o),!(l<i||u<o||l>a||u>s)&&(this._columnWidths[e]=l,this._columnWidths[e+1]=u,this.doLayout())}resetColumns(){this._hiddenColumns=new Set,this.initHiddenFromSpec(),this._savedColumnWidths=new Map,this._columnWidths=this.getColumns().map(e=>this.defaultColumnWidth(e));let e=this.getEffectiveHiddenSet();this._header.setHiddenColumns(e),this._body.setHiddenColumns(e),this.doLayout()}},Q=s(Table);h.register(he,ge,_e,ve);var TablePanel=class extends m{_table;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;constructor(e){super(),this.setLayoutManager(new b),this._toolbar=new u,this._toolbar.setLayoutManager(new ee);let t=new C({glyph:`plus`});t.setPreferredSize(28,28),t.on(`action`,()=>this._table.addRow()),_.attach(t,`Add row`),this._toolbar.addComponent(t);let n=new C({glyph:`minus`});n.setPreferredSize(28,28),n.on(`action`,()=>this._table.removeSelectedRow()),_.attach(n,`Remove selected row`),this._toolbar.addComponent(n),this._syncBtn=new C({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize(28,28),this._syncBtn.on(`action`,()=>this._table.sync()),_.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new C({glyph:`ban`}),this._rejectBtn.setPreferredSize(28,28),this._rejectBtn.on(`action`,()=>this._table.reject()),_.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._table=new Q(e),super.addComponent(this._toolbar,{placement:S.NORTH}),super.addComponent(this._table,{placement:S.CENTER}),e.on(`loadingchange`,e=>{this._spinner||=new x(24),e.loading?this._spinner.showOverlay(this._table):this._spinner.hideOverlay()});let refreshSyncButtons=()=>this.refreshSyncButtons();e.on(`add`,refreshSyncButtons),e.on(`remove`,refreshSyncButtons),e.on(`datachange`,refreshSyncButtons),e.on(`sync`,refreshSyncButtons),e.on(`load`,refreshSyncButtons),this.refreshSyncButtons()}refreshSyncButtons(){let e=this._table.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTable(){return this._table}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._table.setExportMenuEnabled(e),this}exportCSV(e){this._table.exportCSV(e)}exportJSON(e){this._table.exportJSON(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:S.SOUTH}),this}getPaginationBar(){return this._paginationBar}},He=s(TablePanel),TreeBody=class extends Ve{_byId=new Map;_childIds=new Map;_expanded=new Set;_flatRows=[];_rowDnDTeardowns=new Map;_emptyAreaDropTeardown=null;_reparentHandler=null;_reparentValidator=null;constructor(e,t){super(e),this._idField=t.idField,this._parentField=t.parentField,this._treeColumn=t.treeColumn,this._indentPx=t.indentPx,this.rebuildIndex(),this.flatten()}getIdField(){return this._idField}getParentField(){return this._parentField}getTreeColumn(){return this._treeColumn}getFlatRecords(){return this._flatRows}getRecordById(e){return this._byId.get(e)}getChildrenOf(e){return this._childIds.get(e)??[]}isDirectoryRecord(e){return this.getChildrenOf(e.get(this._idField)).length>0}isAncestorOf(e,t){if(e===t)return!0;let n=e.get(this._idField),r=t,i=new Set;for(;r;){let e=r.get(this._parentField);if(e==null)return!1;if(e===n)return!0;if(i.has(e))return!1;i.add(e),r=this._byId.get(e)}return!1}isExpanded(e){let t=e.get(this._idField),n=this._childIds.get(t);return!!n&&n.length>0&&this._expanded.has(t)}setExpanded(e,t){let n=e.get(this._idField),r=this._childIds.get(n);if(!r||r.length===0)return this;if(t){if(this._expanded.has(n))return this;this._expanded.add(n)}else{if(!this._expanded.has(n))return this;this._expanded.delete(n)}return this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}expandToDepth(e){this._expanded.clear();let recurse=(t,n)=>{if(!(n>e))for(let e of t){let t=e.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&(this._expanded.add(t),recurse(r,n+1))}};return recurse(this._childIds.get(null)??[],0),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}collapseAll(){return this._expanded.size===0?this:(this._expanded.clear(),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this)}expandAll(){let e=new Set;for(let[t,n]of this._childIds)t!==null&&n.length>0&&e.add(t);let t=this._childIds.get(null)??[];for(let n of t){let t=n.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&e.add(t)}return this._expanded=e,this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}getToggleElement(e){let t=e.getTreeCell();if(!t)return null;let n=t.getRenderer();if(!(n instanceof V))return null;let r=n.getToggle();return r?r.getElement()??null:null}init(e){return super.init(e),this.ensureEmptyAreaDropTarget(),this}onStoreChange(){this.rebuildIndex(),this.flatten(),super.onStoreChange()}getVisibleRecords(){return this._flatRows.map(e=>e.record)}createRow(){return new H(this.getStore().model,void 0,this.getHiddenColumns(),this.getColumnConfigs(),e=>this.getStore().notifyRecordChanged(e),this._treeColumn)}getTreeFieldName(){return this._treeColumn}computeRowAria(e,t){super.computeRowAria(e,t);let n=this._flatRows[t];n&&(e.getAria().setLevel(n.depth+1),e.getAria().setExpanded(n.hasChildren?n.expanded:null),e.getAria().setSetSize(n.siblingCount),e.getAria().setPosInSet(n.posInSet))}afterRowBound(e,t,n){let r=e.getTreeCell(),i=this._flatRows[t];if(r&&i&&r.getRenderer().setTreeState(i.depth,i.hasChildren,i.expanded),this._reparentHandler!==null){if(!i){this.teardownRowDnD(e);return}(n||!this._rowDnDTeardowns.has(e))&&this.installRowDnD(e,i.record)}}installRowDnD(e,t){this.teardownRowDnD(e);let n=w.makeDragSource(e,{dragData:{recordId:t.get(this._idField)}}),dropTargetForRow=e=>this.resolveDragged(e)?this.resolveDropParentForRow(t):null,r=w.makeDropTarget(e,{accepts:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentValidator?.(t,n)??!1},onDrop:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentHandler?.(t,n)??!1}});this._rowDnDTeardowns.set(e,()=>{n(),r()})}resolveDragged(e){let t=e.dragData.recordId;return this._byId.get(t)}resolveDropParentForRow(e){if(this.isDirectoryRecord(e))return e;let t=e.get(this._parentField);return t==null?null:this._byId.get(t)??null}teardownRowDnD(e){let t=this._rowDnDTeardowns.get(e);t&&(t(),this._rowDnDTeardowns.delete(e))}setReparentHandlers(e,t){return this._reparentValidator=e,this._reparentHandler=t,this.getElement()&&this.ensureEmptyAreaDropTarget(),this}ensureEmptyAreaDropTarget(){this._emptyAreaDropTeardown===null&&this._reparentHandler!==null&&(this._emptyAreaDropTeardown=w.makeDropTarget(this,{accepts:e=>{let t=this.resolveDragged(e);return t?this._reparentValidator?.(t,null)??!1:!1},onDrop:e=>{let t=this.resolveDragged(e);return t?this._reparentHandler?.(t,null)??!1:!1}}))}onSubtreeClick(e){let t=e.target===null?null:r.source.intern(e.target);for(let e of this.getRowPool()){let n=this.getToggleElement(e);if(n&&t!==null&&(t===n||r.source.contains(n,t))){let t=e.getData();t&&this.setExpanded(t,!this.isExpanded(t));return}}super.onSubtreeClick(e)}onKeyDown(e){if(e.key!==`ArrowRight`&&e.key!==`ArrowLeft`){super.onKeyDown(e);return}let t=this.getSelectedRecord();if(!t){super.onKeyDown(e);return}let n=this._flatRows.findIndex(e=>e.record===t);if(n<0){e.preventDefault();return}e.preventDefault();let r=this._flatRows[n];e.key===`ArrowRight`?this.handleArrowRight(r,n):this.handleArrowLeft(r,n)}handleArrowRight(e,t){if(!e.hasChildren)return;if(!e.expanded){this.setExpanded(e.record,!0);return}let n=this._flatRows[t+1];n&&n.depth===e.depth+1&&this.moveFocusTo(n.record)}handleArrowLeft(e,t){if(e.hasChildren&&e.expanded){this.setExpanded(e.record,!1);return}if(e.depth!==0){for(let n=t-1;n>=0;n--)if(this._flatRows[n].depth===e.depth-1){this.moveFocusTo(this._flatRows[n].record);return}}}moveFocusTo(e){this.selectRecord(e),this.scrollRecordIntoView(e),this.renderWindow(),this._updateActiveDescendant(),this._updateFocusStyle()}rebuildIndex(){this._byId.clear(),this._childIds.clear();let e=this.getStore().getRecords();for(let t of e){let e=t.get(this._idField);this._byId.set(e,t)}for(let t of e){let e=t.get(this._parentField),n=e!=null&&this._byId.has(e)?e:null,r=this._childIds.get(n);r?r.push(t):this._childIds.set(n,[t])}}flatten(){let e=[],recurse=(t,n)=>{let r=t.length;for(let i=0;i<t.length;i++){let a=t[i],o=a.get(this._idField),s=this._childIds.get(o),c=!!s&&s.length>0,l=c&&this._expanded.has(o);e.push({record:a,depth:n,hasChildren:c,expanded:l,siblingCount:r,posInSet:i+1}),l&&recurse(s,n+1)}};recurse(this._childIds.get(null)??[],0),this._flatRows=e}},Ue=s(TreeBody),We=16,$=s(class TreeTable extends Q{_treeSpec;_treeBody;_rowReparentWrappers=new Map;constructor(e,t){let n=t.indentPx??We,r=TreeTable.markTreeColumnUnhideable(t);super(e,r,e=>new Ue(e,{idField:t.idField,parentField:t.parentField,treeColumn:t.treeColumn,indentPx:n})),this._treeSpec=t,this._treeBody=this.getBody(),this.getAria().setRole(`treegrid`),this._treeBody.setReparentHandlers((e,t)=>this.canReparent(e,t),(e,t)=>this.reparentRow(e,t))}static markTreeColumnUnhideable(e){let t=e.columns.find(t=>t.field===e.treeColumn)?e.columns.map(t=>t.field===e.treeColumn?{...t,unhideable:!0}:t):[...e.columns,{field:e.treeColumn,unhideable:!0}];return{...e,columns:t}}getBody(){return super.getBody()}getTreeSpec(){return this._treeSpec}setExpanded(e,t){return this._treeBody.setExpanded(e,t),this}isExpanded(e){return this._treeBody.isExpanded(e)}expandToDepth(e){return this._treeBody.expandToDepth(e),this}collapseAll(){return this._treeBody.collapseAll(),this}expandAll(){return this._treeBody.expandAll(),this}addRow(e={},t){let n=t?{...e,[this._treeSpec.parentField]:t.get(this._treeSpec.idField)}:e;return super.addRow(n)}getRecordById(e){return this._treeBody.getRecordById(e)}isDirectoryRecord(e){return this._treeBody.isDirectoryRecord(e)}reparentRow(e,t){if(!this.canReparent(e,t))return!1;let n=this._treeSpec.parentField,r=this._treeSpec.idField,i=e.get(n),a=i==null?null:this._treeBody.getRecordById(i)??null;e.set(n,t===null?null:t.get(r)),this.getStore().notifyRecordChanged(e);let o={record:e,newParent:t,oldParent:a};return f.fireEvent(this,`rowreparent`,{detail:o}),!0}canReparent(e,t){return!(!this._treeBody.getRecordById(e.get(this._treeSpec.idField))||e.get(this._treeSpec.parentField)===(t===null?null:t.get(this._treeSpec.idField))||t!==null&&this._treeBody.isAncestorOf(e,t))}addRowReparentListener(e){if(this._rowReparentWrappers.has(e))return this;let wrapper=t=>e(t.detail);return this._rowReparentWrappers.set(e,wrapper),f.addListener(this,`rowreparent`,wrapper),this}removeRowReparentListener(e){let t=this._rowReparentWrappers.get(e);return t?(f.removeListener(this,`rowreparent`,t),this._rowReparentWrappers.delete(e),this):this}});h.register(he,ge,_e,ve);var TreeTablePanel=class extends m{_treeTable;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;constructor(e,t){super(),this.setLayoutManager(new b),this._toolbar=new u,this._toolbar.setLayoutManager(new ee);let n=new C({glyph:`plus`});n.setPreferredSize(28,28),n.on(`action`,()=>this.addRowUnderSelection()),_.attach(n,`Add row`),this._toolbar.addComponent(n);let r=new C({glyph:`minus`});r.setPreferredSize(28,28),r.on(`action`,()=>this._treeTable.removeSelectedRow()),_.attach(r,`Remove selected row`),this._toolbar.addComponent(r),this._syncBtn=new C({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize(28,28),this._syncBtn.on(`action`,()=>this._treeTable.sync()),_.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new C({glyph:`ban`}),this._rejectBtn.setPreferredSize(28,28),this._rejectBtn.on(`action`,()=>this._treeTable.reject()),_.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._treeTable=new $(e,t),super.addComponent(this._toolbar,{placement:S.NORTH}),super.addComponent(this._treeTable,{placement:S.CENTER}),e.on(`loadingchange`,e=>{this._spinner||=new x(24),e.loading?this._spinner.showOverlay(this._treeTable):this._spinner.hideOverlay()});let refreshSyncButtons=()=>this.refreshSyncButtons();e.on(`add`,refreshSyncButtons),e.on(`remove`,refreshSyncButtons),e.on(`datachange`,refreshSyncButtons),e.on(`sync`,refreshSyncButtons),e.on(`load`,refreshSyncButtons),this.refreshSyncButtons()}addRowUnderSelection(){let e=this._treeTable.getSelectedRecord();if(e===null)return this._treeTable.addRow();if(this._treeTable.isDirectoryRecord(e))return this._treeTable.addRow({},e);let t=e.get(this._treeTable.getTreeSpec().parentField),n=t==null?void 0:this._treeTable.getRecordById(t);return this._treeTable.addRow({},n)}refreshSyncButtons(){let e=this._treeTable.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTreeTable(){return this._treeTable}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._treeTable.setExportMenuEnabled(e),this}exportCSV(e){this._treeTable.exportCSV(e)}exportJSON(e){this._treeTable.exportJSON(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:S.SOUTH}),this}getPaginationBar(){return this._paginationBar}},Ge=s(TreeTablePanel),LinkCellRenderer=class extends CellRenderer{_text;_value=null;constructor(e){super(),this._text=new oe(``,{interactive:!1,foregroundColor:e?.color}),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getText(){return this._text}getValue(){return this._value}setValue(e){this._value=e??null,this._text.setText(this._value===null?``:String(this._value))}},Ke=s(LinkCellRenderer);export{J as Body,L as BooleanCell,E as BooleanEditor,Cell,CellEditor,CellEditorPool,CellRenderer,X as Column,B as ComboCell,q as ComboEditor,N as ComboRenderer,Te as DateCell,Be as DateEditor,k as DateRenderer,Ee as DateTimeCell,K as DateTimeEditor,j as DateTimeRenderer,F as DefaultCell,P as DynamicCell,Y as FooterRow,De as GlyphCell,M as GlyphRenderer,Ie as HeaderCell,Ke as LinkCellRenderer,R as NumberCell,ze as NumberEditor,O as NumberRenderer,Le as ParentHeaderCell,H as Row,I as StringCell,Re as StringEditor,D as StringRenderer,Q as Table,Z as TableExporter,W as TableHeader,He as TablePanel,z as TimeCell,G as TimeEditor,A as TimeRenderer,Ue as TreeBody,V as TreeCellRenderer,$ as TreeTable,Ge as TreeTablePanel};
3
+ `)?`"`+t.replace(/"/g,`""`)+`"`:t}static download(t,n,r){let i=new Blob([t],{type:r}),a=URL.createObjectURL(i),o=e.sink.createElement(`a`);e.sink.apply(o,{setAttr:{href:a,download:n}}),e.sink.appendChild(e.source.getBody(),o),e.sink.click(o),e.sink.removeChild(e.source.getBody(),o),e.sink.release(o),URL.revokeObjectURL(a)}},Table=class extends u{_store;_spec;_resolvedColumns=[];_hiddenColumns=new Set;_columnContextMenu=new re;_headerVisible;_header;_body;_bodyVisible;_footer;_footerVisible;_columnWidths=[];_resizeOriginClientX=0;_resizeOriginW0=0;_resizeOriginW1=0;_savedColumnWidths=new Map;_columnConfigs=new Map;_exportMenuEnabled=!1;_listeners=new p;constructor(e,t,n){super({tag:`table`}),this.setLayoutManager(new we),this.getAria().setRole(`grid`),this.setBorder({border:`1px solid var(--ts-ui-border-color, black)`}),this.setInsets(new r(0,0,0,0)),this.setOverflow(`hidden`),this.setMinSize({width:100,height:100}),this._store=e,this._spec=t,this._headerVisible=!0,this._bodyVisible=!0,this._footerVisible=!1,this._resolvedColumns=X.resolve(e.model.getFields(),t),this.initHiddenFromSpec(),this._header=new W(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 J(e),this._body.setHeader(this._header),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._body.setRowReadOnly(t?.rowReadOnly??null),this.getAria().setColCount(this.getColumns().length),this._body.on(`horizontalscroll`,e=>{this._header.getParentRow().setTranslate(-e,0),this._header.getComponents()[1].setTranslate(-e,0)}),this._body.on(`selection`,e=>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(){let e=this.getEffectiveHiddenSet();return this._resolvedColumns.filter(t=>!e.has(t.getField().getName()))}getStore(){return this._store}getModel(){return this._store.model}setStore(e){return this._store=e,this._columnWidths=[],this._savedColumnWidths=new Map,this._resolvedColumns=X.resolve(e.model.getFields(),this._spec),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.getAria().setColCount(this.getColumns().length),this}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}setColumnVisible(e,t){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);let n=this.getColumns(),r=n.map(e=>this._savedColumnWidths.get(e.getField().getName())??this.defaultColumnWidth(e)),i=this._columnWidths.reduce((e,t)=>e+t,0),a=r.reduce((e,t)=>e+t,0);this._columnWidths=a>i+.5&&i>0?this.trimToTarget(n,r,i,e):r;let o=this.getEffectiveHiddenSet();return this._header.setHiddenColumns(o),this._body.setHiddenColumns(o),this.getAria().setColCount(this.getColumns().length),this.doLayout(),this}getHeader(){return this._header}isHeaderVisible(){return this._headerVisible}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._body.scrollToRecord(t),this._body.selectRecord(t),t}removeSelectedRow(){let e=this._body.getSelectedRecord();return e?(this._body.selectRecord(null),this._store.remove(e),this):this}selectRecord(e){return e&&this._body.scrollToRecord(e),this._body.selectRecord(e),this}async sync(){return this._store.sync()}reject(){this._store.reject()}getSelectedRecord(){return this._body.getSelectedRecord()}getSelectedRecords(){return this._body.getSelectedRecords()}addComponent(e,t){return e instanceof W?this._header=e:e instanceof J?this._body=e:e instanceof Y&&(this._footer=e),super.addComponent(e,t),this}defaultColumnWidth(e){let t=e.getField(),r=n.measureTextWidth(t.getName(),{fontSize:`var(--ts-ui-table-header-font-size, var(--ts-ui-font-size))`,fontWeight:`bold`})+21;switch(t.getType()){case`boolean`:return Math.max(60,r);case`number`:return Math.max(90,r);case`date`:return Math.max(110,r);default:return Math.max(100,r)}}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,e[n].getMinWidth()??30);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]-(e.getMinWidth()??30):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}showColumnMenu(e,t){let n=this._resolvedColumns.slice().sort((e,t)=>e.getField().getOrder()-t.getField().getOrder()),r=[],i;n.forEach(e=>{let t=e.getField().getName(),n=!this._hiddenColumns.has(t),a=e.getGroup();a!==null&&a!==i&&r.push({text:a,enabled:!1});let o=a===null?``:`\xA0\xA0\xA0\xA0`,s=!e.isUnhideable();r.push({text:o+(n?`✓ `:` `)+t,action:()=>this.setColumnVisible(t,!n),enabled:s}),i=a}),r.push({separator:!0},{text:`Reset columns`,action:()=>this.resetColumns()}),this._exportMenuEnabled&&r.push({separator:!0},{text:`Export as CSV`,action:()=>this.exportCSV()},{text:`Export as JSON`,action:()=>this.exportJSON()}),this._columnContextMenu.show(e,t,r)}setExportMenuEnabled(e){return this._exportMenuEnabled=e,this}exportCSV(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();Z.exportCSV(t,n,this._columnConfigs,e)}exportJSON(e){let t=this.getExportColumns(e?.includeHidden??!1),n=this._store.getRecords();Z.exportJSON(t,n,this._columnConfigs,e)}getExportColumns(e){return e?this._resolvedColumns.slice():this.getColumns()}onColumnResizeStart(e,t){let n=this._columnWidths.length;n===0||e>=n-1||(this._resizeOriginClientX=t,this._resizeOriginW0=this._columnWidths[e],this._resizeOriginW1=this._columnWidths[e+1])}onColumnResize(e,t){let n=this._columnWidths.length;if(n===0||e>=n-1)return;let r=this.getColumns(),i=r[e]?.getMinWidth()??30,a=r[e]?.getMaxWidth()??1/0,o=r[e+1]?.getMinWidth()??30,s=r[e+1]?.getMaxWidth()??1/0,c=t-this._resizeOriginClientX,l=this._resizeOriginW0+c,u=this._resizeOriginW1-c;l<i&&(u+=l-i,l=i),u<o&&(l+=u-o,u=o),!(l<i||u<o||l>a||u>s)&&(this._columnWidths[e]=l,this._columnWidths[e+1]=u,this.doLayout())}resetColumns(){this._hiddenColumns=new Set,this.initHiddenFromSpec(),this._savedColumnWidths=new Map,this._columnWidths=this.getColumns().map(e=>this.defaultColumnWidth(e));let e=this.getEffectiveHiddenSet();this._header.setHiddenColumns(e),this._body.setHiddenColumns(e),this.doLayout()}},Q=s(Table);h.register(he,ge,_e,ve);var TablePanel=class extends m{_table;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;constructor(e){super(),this.setLayoutManager(new b),this._toolbar=new u,this._toolbar.setLayoutManager(new ee);let t=new C({glyph:`plus`});t.setPreferredSize({width:28,height:28}),t.on(`action`,()=>{this._table.addRow()}),_.attach(t,`Add row`),this._toolbar.addComponent(t);let n=new C({glyph:`minus`});n.setPreferredSize({width:28,height:28}),n.on(`action`,()=>{this._table.removeSelectedRow()}),_.attach(n,`Remove selected row`),this._toolbar.addComponent(n),this._syncBtn=new C({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize({width:28,height:28}),this._syncBtn.on(`action`,()=>{this._table.sync()}),_.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new C({glyph:`ban`}),this._rejectBtn.setPreferredSize({width:28,height:28}),this._rejectBtn.on(`action`,()=>this._table.reject()),_.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._table=new Q(e),super.addComponent(this._toolbar,{placement:S.NORTH}),super.addComponent(this._table,{placement:S.CENTER}),e.on(`loadingchange`,e=>{this._spinner||=new x(24),e.loading?this._spinner.showOverlay(this._table):this._spinner.hideOverlay()});let refreshSyncButtons=()=>this.refreshSyncButtons();e.on(`add`,refreshSyncButtons),e.on(`remove`,refreshSyncButtons),e.on(`datachange`,refreshSyncButtons),e.on(`sync`,refreshSyncButtons),e.on(`load`,refreshSyncButtons),this.refreshSyncButtons()}refreshSyncButtons(){let e=this._table.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTable(){return this._table}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._table.setExportMenuEnabled(e),this}exportCSV(e){this._table.exportCSV(e)}exportJSON(e){this._table.exportJSON(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:S.SOUTH}),this}getPaginationBar(){return this._paginationBar}},He=s(TablePanel),TreeBody=class extends Ve{_byId=new Map;_childIds=new Map;_expanded=new Set;_flatRows=[];_rowDnDTeardowns=new Map;_emptyAreaDropTeardown=null;_reparentHandler=null;_reparentValidator=null;constructor(e,t){super(e),this._idField=t.idField,this._parentField=t.parentField,this._treeColumn=t.treeColumn,this._indentPx=t.indentPx,this.rebuildIndex(),this.flatten()}getIdField(){return this._idField}getParentField(){return this._parentField}getTreeColumn(){return this._treeColumn}getFlatRecords(){return this._flatRows}getRecordById(e){return this._byId.get(e)}getChildrenOf(e){return this._childIds.get(e)??[]}isDirectoryRecord(e){return this.getChildrenOf(e.get(this._idField)).length>0}isAncestorOf(e,t){if(e===t)return!0;let n=e.get(this._idField),r=t,i=new Set;for(;r;){let e=r.get(this._parentField);if(e==null)return!1;if(e===n)return!0;if(i.has(e))return!1;i.add(e),r=this._byId.get(e)}return!1}isExpanded(e){let t=e.get(this._idField),n=this._childIds.get(t);return!!n&&n.length>0&&this._expanded.has(t)}setExpanded(e,t){let n=e.get(this._idField),r=this._childIds.get(n);if(!r||r.length===0)return this;if(t){if(this._expanded.has(n))return this;this._expanded.add(n)}else{if(!this._expanded.has(n))return this;this._expanded.delete(n)}return this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}expandToDepth(e){this._expanded.clear();let recurse=(t,n)=>{if(!(n>e))for(let e of t){let t=e.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&(this._expanded.add(t),recurse(r,n+1))}};return recurse(this._childIds.get(null)??[],0),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}collapseAll(){return this._expanded.size===0?this:(this._expanded.clear(),this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this)}expandAll(){let e=new Set;for(let[t,n]of this._childIds)t!==null&&n.length>0&&e.add(t);let t=this._childIds.get(null)??[];for(let n of t){let t=n.get(this._idField),r=this._childIds.get(t);r&&r.length>0&&e.add(t)}return this._expanded=e,this.flatten(),this.invalidateRowBindings(),this.renderWindow(),this}getToggleElement(e){let t=e.getTreeCell();if(!t)return null;let n=t.getRenderer();if(!(n instanceof V))return null;let r=n.getToggle();return r?r.getElement()??null:null}init(e){return super.init(e),this.ensureEmptyAreaDropTarget(),this}onStoreChange(){this.rebuildIndex(),this.flatten(),super.onStoreChange()}getVisibleRecords(){return this._flatRows.map(e=>e.record)}createRow(){return new H(this.getStore().model,void 0,this.getHiddenColumns(),this.getColumnConfigs(),e=>this.getStore().notifyRecordChanged(e),this._treeColumn)}getTreeFieldName(){return this._treeColumn}computeRowAria(e,t){super.computeRowAria(e,t);let n=this._flatRows[t];n&&(e.getAria().setLevel(n.depth+1),e.getAria().setExpanded(n.hasChildren?n.expanded:null),e.getAria().setSetSize(n.siblingCount),e.getAria().setPosInSet(n.posInSet))}afterRowBound(e,t,n){let r=e.getTreeCell(),i=this._flatRows[t];if(r&&i&&r.getRenderer().setTreeState(i.depth,i.hasChildren,i.expanded),this._reparentHandler!==null){if(!i){this.teardownRowDnD(e);return}(n||!this._rowDnDTeardowns.has(e))&&this.installRowDnD(e,i.record)}}installRowDnD(e,t){this.teardownRowDnD(e);let n=w.makeDragSource(e,{dragData:{recordId:t.get(this._idField)}}),dropTargetForRow=e=>this.resolveDragged(e)?this.resolveDropParentForRow(t):null,r=w.makeDropTarget(e,{accepts:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentValidator?.(t,n)??!1},onDrop:e=>{let t=this.resolveDragged(e);if(!t)return!1;let n=dropTargetForRow(e);return this._reparentHandler?.(t,n)??!1}});this._rowDnDTeardowns.set(e,()=>{n(),r()})}resolveDragged(e){let t=e.dragData.recordId;return this._byId.get(t)}resolveDropParentForRow(e){if(this.isDirectoryRecord(e))return e;let t=e.get(this._parentField);return t==null?null:this._byId.get(t)??null}teardownRowDnD(e){let t=this._rowDnDTeardowns.get(e);t&&(t(),this._rowDnDTeardowns.delete(e))}setReparentHandlers(e,t){return this._reparentValidator=e,this._reparentHandler=t,this.getElement()&&this.ensureEmptyAreaDropTarget(),this}ensureEmptyAreaDropTarget(){this._emptyAreaDropTeardown===null&&this._reparentHandler!==null&&(this._emptyAreaDropTeardown=w.makeDropTarget(this,{accepts:e=>{let t=this.resolveDragged(e);return t?this._reparentValidator?.(t,null)??!1:!1},onDrop:e=>{let t=this.resolveDragged(e);return t?this._reparentHandler?.(t,null)??!1:!1}}))}onSubtreeClick(t){let n=t.target===null?null:e.source.intern(t.target);for(let t of this.getRowPool()){let r=this.getToggleElement(t);if(r&&n!==null&&(n===r||e.source.contains(r,n))){let e=t.getData();e&&this.setExpanded(e,!this.isExpanded(e));return}}super.onSubtreeClick(t)}onKeyDown(e){if(e.key!==`ArrowRight`&&e.key!==`ArrowLeft`){super.onKeyDown(e);return}let t=this.getSelectedRecord();if(!t){super.onKeyDown(e);return}let n=this._flatRows.findIndex(e=>e.record===t);if(n<0){e.preventDefault();return}e.preventDefault();let r=this._flatRows[n];e.key===`ArrowRight`?this.handleArrowRight(r,n):this.handleArrowLeft(r,n)}handleArrowRight(e,t){if(!e.hasChildren)return;if(!e.expanded){this.setExpanded(e.record,!0);return}let n=this._flatRows[t+1];n&&n.depth===e.depth+1&&this.moveFocusTo(n.record)}handleArrowLeft(e,t){if(e.hasChildren&&e.expanded){this.setExpanded(e.record,!1);return}if(e.depth!==0){for(let n=t-1;n>=0;n--)if(this._flatRows[n].depth===e.depth-1){this.moveFocusTo(this._flatRows[n].record);return}}}moveFocusTo(e){this.selectRecord(e),this.scrollRecordIntoView(e),this.renderWindow(),this._updateActiveDescendant(),this._updateFocusStyle()}rebuildIndex(){this._byId.clear(),this._childIds.clear();let e=this.getStore().getRecords();for(let t of e){let e=t.get(this._idField);this._byId.set(e,t)}for(let t of e){let e=t.get(this._parentField),n=e!=null&&this._byId.has(e)?e:null,r=this._childIds.get(n);r?r.push(t):this._childIds.set(n,[t])}}flatten(){let e=[],recurse=(t,n)=>{let r=t.length;for(let i=0;i<t.length;i++){let a=t[i],o=a.get(this._idField),s=this._childIds.get(o),c=!!s&&s.length>0,l=c&&this._expanded.has(o);e.push({record:a,depth:n,hasChildren:c,expanded:l,siblingCount:r,posInSet:i+1}),l&&recurse(s,n+1)}};recurse(this._childIds.get(null)??[],0),this._flatRows=e}},Ue=s(TreeBody),We=16,$=s(class TreeTable extends Q{_treeSpec;_treeBody;_rowReparentWrappers=new Map;constructor(e,t){let n=t.indentPx??We,r=TreeTable.markTreeColumnUnhideable(t);super(e,r,e=>new Ue(e,{idField:t.idField,parentField:t.parentField,treeColumn:t.treeColumn,indentPx:n})),this._treeSpec=t,this._treeBody=this.getBody(),this.getAria().setRole(`treegrid`),this._treeBody.setReparentHandlers((e,t)=>this.canReparent(e,t),(e,t)=>this.reparentRow(e,t))}static markTreeColumnUnhideable(e){let t=e.columns.find(t=>t.field===e.treeColumn)?e.columns.map(t=>t.field===e.treeColumn?{...t,unhideable:!0}:t):[...e.columns,{field:e.treeColumn,unhideable:!0}];return{...e,columns:t}}getBody(){return super.getBody()}getTreeSpec(){return this._treeSpec}setExpanded(e,t){return this._treeBody.setExpanded(e,t),this}isExpanded(e){return this._treeBody.isExpanded(e)}expandToDepth(e){return this._treeBody.expandToDepth(e),this}collapseAll(){return this._treeBody.collapseAll(),this}expandAll(){return this._treeBody.expandAll(),this}addRow(e={},t){let n=t?{...e,[this._treeSpec.parentField]:t.get(this._treeSpec.idField)}:e;return super.addRow(n)}getRecordById(e){return this._treeBody.getRecordById(e)}isDirectoryRecord(e){return this._treeBody.isDirectoryRecord(e)}reparentRow(e,t){if(!this.canReparent(e,t))return!1;let n=this._treeSpec.parentField,r=this._treeSpec.idField,i=e.get(n),a=i==null?null:this._treeBody.getRecordById(i)??null;e.set(n,t===null?null:t.get(r)),this.getStore().notifyRecordChanged(e);let o={record:e,newParent:t,oldParent:a};return f.fireEvent(this,`rowreparent`,{detail:o}),!0}canReparent(e,t){return!(!this._treeBody.getRecordById(e.get(this._treeSpec.idField))||e.get(this._treeSpec.parentField)===(t===null?null:t.get(this._treeSpec.idField))||t!==null&&this._treeBody.isAncestorOf(e,t))}addRowReparentListener(e){if(this._rowReparentWrappers.has(e))return this;let wrapper=t=>e(t.detail);return this._rowReparentWrappers.set(e,wrapper),f.addListener(this,`rowreparent`,wrapper),this}removeRowReparentListener(e){let t=this._rowReparentWrappers.get(e);return t?(f.removeListener(this,`rowreparent`,t),this._rowReparentWrappers.delete(e),this):this}});h.register(he,ge,_e,ve);var TreeTablePanel=class extends m{_treeTable;_toolbar;_syncBtn;_rejectBtn;_spinner=null;_paginationBar=void 0;constructor(e,t){super(),this.setLayoutManager(new b),this._toolbar=new u,this._toolbar.setLayoutManager(new ee);let n=new C({glyph:`plus`});n.setPreferredSize({width:28,height:28}),n.on(`action`,()=>{this.addRowUnderSelection()}),_.attach(n,`Add row`),this._toolbar.addComponent(n);let r=new C({glyph:`minus`});r.setPreferredSize({width:28,height:28}),r.on(`action`,()=>{this._treeTable.removeSelectedRow()}),_.attach(r,`Remove selected row`),this._toolbar.addComponent(r),this._syncBtn=new C({glyph:`arrows-rotate`}),this._syncBtn.setPreferredSize({width:28,height:28}),this._syncBtn.on(`action`,()=>{this._treeTable.sync()}),_.attach(this._syncBtn,`Sync pending changes`),this._toolbar.addComponent(this._syncBtn),this._rejectBtn=new C({glyph:`ban`}),this._rejectBtn.setPreferredSize({width:28,height:28}),this._rejectBtn.on(`action`,()=>this._treeTable.reject()),_.attach(this._rejectBtn,`Reject pending changes`),this._toolbar.addComponent(this._rejectBtn),this._treeTable=new $(e,t),super.addComponent(this._toolbar,{placement:S.NORTH}),super.addComponent(this._treeTable,{placement:S.CENTER}),e.on(`loadingchange`,e=>{this._spinner||=new x(24),e.loading?this._spinner.showOverlay(this._treeTable):this._spinner.hideOverlay()});let refreshSyncButtons=()=>this.refreshSyncButtons();e.on(`add`,refreshSyncButtons),e.on(`remove`,refreshSyncButtons),e.on(`datachange`,refreshSyncButtons),e.on(`sync`,refreshSyncButtons),e.on(`load`,refreshSyncButtons),this.refreshSyncButtons()}addRowUnderSelection(){let e=this._treeTable.getSelectedRecord();if(e===null)return this._treeTable.addRow();if(this._treeTable.isDirectoryRecord(e))return this._treeTable.addRow({},e);let t=e.get(this._treeTable.getTreeSpec().parentField),n=t==null?void 0:this._treeTable.getRecordById(t);return this._treeTable.addRow({},n)}refreshSyncButtons(){let e=this._treeTable.getStore().hasPendingChanges();this._syncBtn.setEnabled(e),this._rejectBtn.setEnabled(e)}getTreeTable(){return this._treeTable}getToolbar(){return this._toolbar}setExportMenuEnabled(e){return this._treeTable.setExportMenuEnabled(e),this}exportCSV(e){this._treeTable.exportCSV(e)}exportJSON(e){this._treeTable.exportJSON(e)}setPaginationBar(e){return this._paginationBar&&(this.removeComponent(this._paginationBar),this._paginationBar.dispose()),this._paginationBar=e,super.addComponent(e,{placement:S.SOUTH}),this}getPaginationBar(){return this._paginationBar}},Ge=s(TreeTablePanel),LinkCellRenderer=class extends CellRenderer{_text;_value=null;constructor(e){super(),this._text=new oe(``,{interactive:!1,foregroundColor:e?.color}),this._text.setAutoMeasure(!1),this.addComponent(this._text)}getText(){return this._text}getValue(){return this._value}setValue(e){this._value=e??null,this._text.setText(this._value===null?``:String(this._value))}},Ke=s(LinkCellRenderer);export{J as Body,L as BooleanCell,E as BooleanEditor,Cell,CellEditor,CellEditorPool,CellRenderer,X as Column,B as ComboCell,q as ComboEditor,N as ComboRenderer,Te as DateCell,Be as DateEditor,k as DateRenderer,Ee as DateTimeCell,K as DateTimeEditor,j as DateTimeRenderer,F as DefaultCell,P as DynamicCell,Y as FooterRow,De as GlyphCell,M as GlyphRenderer,Ie as HeaderCell,Ke as LinkCellRenderer,R as NumberCell,ze as NumberEditor,O as NumberRenderer,Le as ParentHeaderCell,H as Row,I as StringCell,Re as StringEditor,D as StringRenderer,Q as Table,Z as TableExporter,W as TableHeader,He as TablePanel,z as TimeCell,G as TimeEditor,A as TimeRenderer,Ue as TreeBody,V as TreeCellRenderer,$ as TreeTable,Ge as TreeTablePanel};
4
4
  //# sourceMappingURL=table.es.js.map