@jimka/typescript-ui 0.5.0 → 0.7.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 (293) hide show
  1. package/dist/lib/{AbstractInput-B10DfLOf.js → AbstractInput-W2PLJV5_.js} +2 -2
  2. package/dist/lib/{AbstractInput-B10DfLOf.js.map → AbstractInput-W2PLJV5_.js.map} +1 -1
  3. package/dist/lib/Anchor-iZhsvMlT.js +2 -0
  4. package/dist/lib/Anchor-iZhsvMlT.js.map +1 -0
  5. package/dist/lib/AnimatedDropdown-D0RhVgv3.js +2 -0
  6. package/dist/lib/AnimatedDropdown-D0RhVgv3.js.map +1 -0
  7. package/dist/lib/Border-6GsTNV-2.js +2 -0
  8. package/dist/lib/Border-6GsTNV-2.js.map +1 -0
  9. package/dist/lib/Button-CnFAiQuV.js +2 -0
  10. package/dist/lib/Button-CnFAiQuV.js.map +1 -0
  11. package/dist/lib/{Card-CD3jxshU.js → Card-C20k2YHU.js} +2 -2
  12. package/dist/lib/{Card-CD3jxshU.js.map → Card-C20k2YHU.js.map} +1 -1
  13. package/dist/lib/Checkbox-CM1z8keM.js +2 -0
  14. package/dist/lib/Checkbox-CM1z8keM.js.map +1 -0
  15. package/dist/lib/CheckboxMenuRow-C1h4LPHR.js +2 -0
  16. package/dist/lib/CheckboxMenuRow-C1h4LPHR.js.map +1 -0
  17. package/dist/lib/{CodeEditor-BGlB232h.js → CodeEditor-CTL2WjF8.js} +2 -2
  18. package/dist/lib/CodeEditor-CTL2WjF8.js.map +1 -0
  19. package/dist/lib/ComboBox-PZ5YPL0X.js +2 -0
  20. package/dist/lib/ComboBox-PZ5YPL0X.js.map +1 -0
  21. package/dist/lib/Component-D99-15Zt.js +2 -0
  22. package/dist/lib/Component-D99-15Zt.js.map +1 -0
  23. package/dist/lib/Container-FWRjgF6T.js +2 -0
  24. package/dist/lib/{Container-C7RPLQEc.js.map → Container-FWRjgF6T.js.map} +1 -1
  25. package/dist/lib/DOM-Cjh7_7TF.js +2 -0
  26. package/dist/lib/DOM-Cjh7_7TF.js.map +1 -0
  27. package/dist/lib/Dialog-DN78RaVH.js +2 -0
  28. package/dist/lib/Dialog-DN78RaVH.js.map +1 -0
  29. package/dist/lib/{FieldDecorator-HG65hEtk.js → FieldDecorator-DyPX8CFh.js} +2 -2
  30. package/dist/lib/{FieldDecorator-HG65hEtk.js.map → FieldDecorator-DyPX8CFh.js.map} +1 -1
  31. package/dist/lib/{Fit-Cg3dPyZg.js → Fit-CaPMj7Up.js} +2 -2
  32. package/dist/lib/{Fit-Cg3dPyZg.js.map → Fit-CaPMj7Up.js.map} +1 -1
  33. package/dist/lib/{FloatingPanel-D5buuVrQ.js → FloatingPanel-Dsy_vJxi.js} +2 -2
  34. package/dist/lib/{FloatingPanel-D5buuVrQ.js.map → FloatingPanel-Dsy_vJxi.js.map} +1 -1
  35. package/dist/lib/Glyph-DiEpD3gy.js +2 -0
  36. package/dist/lib/Glyph-DiEpD3gy.js.map +1 -0
  37. package/dist/lib/{Grid-BYBohJIA.js → Grid-ft_UUpj8.js} +2 -2
  38. package/dist/lib/Grid-ft_UUpj8.js.map +1 -0
  39. package/dist/lib/GridConstraints-CvZ0Nzaw.js +2 -0
  40. package/dist/lib/{GridConstraints-Bts284FI.js.map → GridConstraints-CvZ0Nzaw.js.map} +1 -1
  41. package/dist/lib/{Header-BIFJK9nR.js → Header-Osm3IjDw.js} +2 -2
  42. package/dist/lib/{Header-BIFJK9nR.js.map → Header-Osm3IjDw.js.map} +1 -1
  43. package/dist/lib/{IconText-Dsb1xS-E.js → IconText-BBaYJ2Fx.js} +2 -2
  44. package/dist/lib/{IconText-Dsb1xS-E.js.map → IconText-BBaYJ2Fx.js.map} +1 -1
  45. package/dist/lib/LayoutSerialization-BC64__O7.js +2 -0
  46. package/dist/lib/LayoutSerialization-BC64__O7.js.map +1 -0
  47. package/dist/lib/List-CQbZK_pT.js +2 -0
  48. package/dist/lib/List-CQbZK_pT.js.map +1 -0
  49. package/dist/lib/MemoryStore-DhPoU-7X.js +2 -0
  50. package/dist/lib/MemoryStore-DhPoU-7X.js.map +1 -0
  51. package/dist/lib/Menu-CwHluLGT.js +2 -0
  52. package/dist/lib/Menu-CwHluLGT.js.map +1 -0
  53. package/dist/lib/{MenuButton-BR4KOFld.js → MenuButton-BqCT-1yv.js} +2 -2
  54. package/dist/lib/{MenuButton-BR4KOFld.js.map → MenuButton-BqCT-1yv.js.map} +1 -1
  55. package/dist/lib/OverlayFade-CuEXgimf.js +2 -0
  56. package/dist/lib/OverlayFade-CuEXgimf.js.map +1 -0
  57. package/dist/lib/{Panel-CpNQTLNF.js → Panel-CtViePqY.js} +2 -2
  58. package/dist/lib/{Panel-CpNQTLNF.js.map → Panel-CtViePqY.js.map} +1 -1
  59. package/dist/lib/{Position-PBVBW1JS.js → Position-BIEU1Eze.js} +2 -2
  60. package/dist/lib/Position-BIEU1Eze.js.map +1 -0
  61. package/dist/lib/{ProgressSpinner-lAsK26C-.js → ProgressSpinner-BuBvC1FY.js} +2 -2
  62. package/dist/lib/{ProgressSpinner-lAsK26C-.js.map → ProgressSpinner-BuBvC1FY.js.map} +1 -1
  63. package/dist/lib/RadioButton-Df5J-H6m.js +2 -0
  64. package/dist/lib/RadioButton-Df5J-H6m.js.map +1 -0
  65. package/dist/lib/RadioMenuRow-Cfv0x6Qj.js +2 -0
  66. package/dist/lib/RadioMenuRow-Cfv0x6Qj.js.map +1 -0
  67. package/dist/lib/{RovingTabIndex-C2Vzq0IX.js → RovingTabIndex--w28AnXc.js} +2 -2
  68. package/dist/lib/{RovingTabIndex-C2Vzq0IX.js.map → RovingTabIndex--w28AnXc.js.map} +1 -1
  69. package/dist/lib/Scrollbar-DcnueNJd.js +2 -0
  70. package/dist/lib/Scrollbar-DcnueNJd.js.map +1 -0
  71. package/dist/lib/SelectableText-DZNxjKXR.js +2 -0
  72. package/dist/lib/SelectableText-DZNxjKXR.js.map +1 -0
  73. package/dist/lib/{Slider-DZ9drUxn.js → Slider-DNfd8Lxz.js} +2 -2
  74. package/dist/lib/{Slider-DZ9drUxn.js.map → Slider-DNfd8Lxz.js.map} +1 -1
  75. package/dist/lib/{Spacer-SDhOMp2g.js → Spacer-BznfGbwG.js} +2 -2
  76. package/dist/lib/{Spacer-SDhOMp2g.js.map → Spacer-BznfGbwG.js.map} +1 -1
  77. package/dist/lib/TabButton-CAACsMov.js +2 -0
  78. package/dist/lib/TabButton-CAACsMov.js.map +1 -0
  79. package/dist/lib/TabCloseButton-CCiqsX3y.js +2 -0
  80. package/dist/lib/TabCloseButton-CCiqsX3y.js.map +1 -0
  81. package/dist/lib/Text-O-FWa5Cy.js +2 -0
  82. package/dist/lib/Text-O-FWa5Cy.js.map +1 -0
  83. package/dist/lib/Tooltip-CyICVu15.js +3 -0
  84. package/dist/lib/Tooltip-CyICVu15.js.map +1 -0
  85. package/dist/lib/Tree-CSEguhlk.js +2 -0
  86. package/dist/lib/Tree-CSEguhlk.js.map +1 -0
  87. package/dist/lib/VBox-DVe4UXwX.js +2 -0
  88. package/dist/lib/VBox-DVe4UXwX.js.map +1 -0
  89. package/dist/lib/VirtualScroller-ggPTCQb0.js +2 -0
  90. package/dist/lib/VirtualScroller-ggPTCQb0.js.map +1 -0
  91. package/dist/lib/assets/StoreWorker-B5NwRM2I.js +2 -0
  92. package/dist/lib/assets/StoreWorker-B5NwRM2I.js.map +1 -0
  93. package/dist/lib/component/button.es.js +1 -1
  94. package/dist/lib/component/button.es.js.map +1 -1
  95. package/dist/lib/component/chart.es.js +1 -1
  96. package/dist/lib/component/chart.es.js.map +1 -1
  97. package/dist/lib/component/container.es.js +1 -1
  98. package/dist/lib/component/container.es.js.map +1 -1
  99. package/dist/lib/component/diagram.es.js +1 -1
  100. package/dist/lib/component/diagram.es.js.map +1 -1
  101. package/dist/lib/component/display.es.js +1 -1
  102. package/dist/lib/component/display.es.js.map +1 -1
  103. package/dist/lib/component/editor.es.js +2 -2
  104. package/dist/lib/component/editor.es.js.map +1 -1
  105. package/dist/lib/component/input.es.js +1 -1
  106. package/dist/lib/component/input.es.js.map +1 -1
  107. package/dist/lib/component/list.es.js +1 -1
  108. package/dist/lib/component/list.es.js.map +1 -1
  109. package/dist/lib/component/menubar.es.js +1 -1
  110. package/dist/lib/component/menubar.es.js.map +1 -1
  111. package/dist/lib/component/table.es.js +6 -3
  112. package/dist/lib/component/table.es.js.map +1 -1
  113. package/dist/lib/component/tree.es.js +1 -1
  114. package/dist/lib/core.es.js +1 -1
  115. package/dist/lib/core.es.js.map +1 -1
  116. package/dist/lib/data.es.js +1 -1
  117. package/dist/lib/glyphs/solid/index.es.js +1 -1
  118. package/dist/lib/layout.es.js +1 -1
  119. package/dist/lib/layout.es.js.map +1 -1
  120. package/dist/lib/overlay.es.js +1 -1
  121. package/dist/lib/overlay.es.js.map +1 -1
  122. package/dist/lib/primitive.es.js +1 -1
  123. package/dist/lib/router.es.js +1 -1
  124. package/dist/lib/router.es.js.map +1 -1
  125. package/dist/lib/selectionsEqual-C7MrKMQr.js +2 -0
  126. package/dist/lib/selectionsEqual-C7MrKMQr.js.map +1 -0
  127. package/dist/lib/types/component/button/Button.d.ts +22 -0
  128. package/dist/lib/types/component/button/MenuButton.d.ts +1 -0
  129. package/dist/lib/types/component/button/PopupButton.d.ts +22 -0
  130. package/dist/lib/types/component/button/TabButton.d.ts +9 -0
  131. package/dist/lib/types/component/button/ToggleButton.d.ts +3 -0
  132. package/dist/lib/types/component/button/index.d.ts +2 -0
  133. package/dist/lib/types/component/chart/AbstractChart.d.ts +2 -0
  134. package/dist/lib/types/component/container/CheckboxMenuRow.d.ts +33 -0
  135. package/dist/lib/types/component/container/CollapseButton.d.ts +11 -3
  136. package/dist/lib/types/component/container/MenuItem.d.ts +15 -5
  137. package/dist/lib/types/component/container/MenuRow.d.ts +24 -0
  138. package/dist/lib/types/component/container/MenuSeparator.d.ts +4 -2
  139. package/dist/lib/types/component/container/RadioMenuRow.d.ts +33 -0
  140. package/dist/lib/types/component/container/Scrollbar.d.ts +5 -0
  141. package/dist/lib/types/component/container/SplitGutter.d.ts +7 -2
  142. package/dist/lib/types/component/container/TabBar.d.ts +2 -0
  143. package/dist/lib/types/component/container/WindowBorder.d.ts +1 -1
  144. package/dist/lib/types/component/container/index.d.ts +6 -1
  145. package/dist/lib/types/component/display/Markdown.d.ts +2 -1
  146. package/dist/lib/types/component/display/WebGLCanvas.d.ts +1 -0
  147. package/dist/lib/types/component/input/AbstractCalendarDropdown.d.ts +4 -0
  148. package/dist/lib/types/component/input/AbstractPickerField.d.ts +5 -2
  149. package/dist/lib/types/component/input/AutoCompleteDropdown.d.ts +2 -0
  150. package/dist/lib/types/component/input/ComboBox.d.ts +3 -1
  151. package/dist/lib/types/component/input/Link.d.ts +2 -0
  152. package/dist/lib/types/component/input/PasswordField.d.ts +2 -0
  153. package/dist/lib/types/component/input/PickerInput.d.ts +2 -0
  154. package/dist/lib/types/component/input/SelectableText.d.ts +11 -0
  155. package/dist/lib/types/component/input/SpinButton.d.ts +2 -0
  156. package/dist/lib/types/component/input/Text.d.ts +16 -2
  157. package/dist/lib/types/component/input/TextArea.d.ts +2 -0
  158. package/dist/lib/types/component/input/TextField.d.ts +2 -0
  159. package/dist/lib/types/component/input/TextInput.d.ts +2 -0
  160. package/dist/lib/types/component/input/TimePickerDropdown.d.ts +3 -1
  161. package/dist/lib/types/component/input/UsernameField.d.ts +2 -0
  162. package/dist/lib/types/component/input/index.d.ts +2 -0
  163. package/dist/lib/types/component/list/AbstractSelectableList.d.ts +5 -3
  164. package/dist/lib/types/component/list/MultiSelectList.d.ts +2 -1
  165. package/dist/lib/types/component/shared/VirtualRowView.d.ts +2 -0
  166. package/dist/lib/types/component/table/Body.d.ts +52 -5
  167. package/dist/lib/types/component/table/Column.d.ts +3 -1
  168. package/dist/lib/types/component/table/ColumnConfig.d.ts +2 -0
  169. package/dist/lib/types/component/table/ColumnFilter.d.ts +27 -0
  170. package/dist/lib/types/component/table/Header.d.ts +31 -4
  171. package/dist/lib/types/component/table/Row.d.ts +24 -2
  172. package/dist/lib/types/component/table/Table.d.ts +31 -0
  173. package/dist/lib/types/component/table/TableExporter.d.ts +7 -3
  174. package/dist/lib/types/component/table/TablePanel.d.ts +1 -0
  175. package/dist/lib/types/component/table/TreeBody.d.ts +2 -1
  176. package/dist/lib/types/component/table/TreeTablePanel.d.ts +1 -0
  177. package/dist/lib/types/component/table/cell/Cell.d.ts +7 -2
  178. package/dist/lib/types/component/table/cell/CellText.d.ts +9 -0
  179. package/dist/lib/types/component/table/cell/Default.d.ts +1 -1
  180. package/dist/lib/types/component/table/cell/Filter.d.ts +54 -0
  181. package/dist/lib/types/component/table/cell/FilterClauseBadge.d.ts +21 -0
  182. package/dist/lib/types/component/table/cell/GroupSeparator.d.ts +9 -0
  183. package/dist/lib/types/component/table/cell/Header.d.ts +4 -0
  184. package/dist/lib/types/component/table/cell/ResizeHandle.d.ts +1 -1
  185. package/dist/lib/types/component/table/cell/editor/CellEditor.d.ts +1 -0
  186. package/dist/lib/types/component/table/cell/renderer/CellRenderer.d.ts +3 -2
  187. package/dist/lib/types/component/table/cell/renderer/Combo.d.ts +2 -0
  188. package/dist/lib/types/component/table/cell/renderer/Date.d.ts +2 -0
  189. package/dist/lib/types/component/table/cell/renderer/DateTime.d.ts +2 -0
  190. package/dist/lib/types/component/table/cell/renderer/Filter.d.ts +16 -0
  191. package/dist/lib/types/component/table/cell/renderer/Glyph.d.ts +1 -0
  192. package/dist/lib/types/component/table/cell/renderer/Link.d.ts +2 -0
  193. package/dist/lib/types/component/table/cell/renderer/Number.d.ts +3 -1
  194. package/dist/lib/types/component/table/cell/renderer/String.d.ts +5 -1
  195. package/dist/lib/types/component/table/cell/renderer/Time.d.ts +2 -0
  196. package/dist/lib/types/component/table/cell/renderer/TreeCell.d.ts +1 -0
  197. package/dist/lib/types/component/table/index.d.ts +7 -1
  198. package/dist/lib/types/component/tree/Tree.d.ts +17 -1
  199. package/dist/lib/types/component/tree/index.d.ts +1 -1
  200. package/dist/lib/types/core/AnimatedDropdown.d.ts +2 -9
  201. package/dist/lib/types/core/Body.d.ts +4 -0
  202. package/dist/lib/types/core/ClassStyleRules.d.ts +47 -3
  203. package/dist/lib/types/core/Component.d.ts +30 -2
  204. package/dist/lib/types/core/DOM.d.ts +15 -1
  205. package/dist/lib/types/core/Event.d.ts +11 -2
  206. package/dist/lib/types/core/LayerManager.d.ts +1 -0
  207. package/dist/lib/types/core/OverlayFade.d.ts +12 -0
  208. package/dist/lib/types/core/OverlayPosition.d.ts +6 -0
  209. package/dist/lib/types/core/StyleTarget.d.ts +2 -0
  210. package/dist/lib/types/core/Theme.d.ts +9 -0
  211. package/dist/lib/types/core/Util.d.ts +4 -0
  212. package/dist/lib/types/core/index.d.ts +6 -4
  213. package/dist/lib/types/data/AbstractStore.d.ts +3 -0
  214. package/dist/lib/types/data/FilterDescriptor.d.ts +13 -0
  215. package/dist/lib/types/data/index.d.ts +2 -1
  216. package/dist/lib/types/data/temporalText.d.ts +2 -0
  217. package/dist/lib/types/layout/BoxLayout.d.ts +6 -1
  218. package/dist/lib/types/layout/Grid.d.ts +1 -0
  219. package/dist/lib/types/layout/HFlow.d.ts +1 -1
  220. package/dist/lib/types/layout/Split.d.ts +10 -1
  221. package/dist/lib/types/layout/Tab.d.ts +7 -1
  222. package/dist/lib/types/layout/Table.d.ts +2 -0
  223. package/dist/lib/types/layout/VFlow.d.ts +1 -1
  224. package/dist/lib/types/layout/index.d.ts +1 -1
  225. package/dist/lib/types/overlay/AbstractWindow.d.ts +3 -0
  226. package/dist/lib/types/overlay/Dock.d.ts +1 -0
  227. package/dist/lib/types/overlay/Menu.d.ts +1 -1
  228. package/dist/lib/types/overlay/Popover.d.ts +3 -0
  229. package/dist/lib/types/overlay/PopupPanel.d.ts +19 -0
  230. package/dist/lib/types/overlay/Window.d.ts +2 -0
  231. package/dist/lib/types/overlay/index.d.ts +2 -0
  232. package/dist/lib/types/router/RoutePattern.d.ts +7 -0
  233. package/dist/lib/types/router/Router.d.ts +6 -2
  234. package/dist/lib/types/router/index.d.ts +1 -1
  235. package/dist/lib/validation.es.js +1 -1
  236. package/llms.txt +4 -0
  237. package/package.json +1 -1
  238. package/dist/lib/AbstractBooleanInput-CbW7ZrDT.js +0 -2
  239. package/dist/lib/AbstractBooleanInput-CbW7ZrDT.js.map +0 -1
  240. package/dist/lib/Anchor-BsblS5it.js +0 -2
  241. package/dist/lib/Anchor-BsblS5it.js.map +0 -1
  242. package/dist/lib/AnimatedDropdown-kL47HPGP.js +0 -2
  243. package/dist/lib/AnimatedDropdown-kL47HPGP.js.map +0 -1
  244. package/dist/lib/Border-CNS6aEXB.js +0 -2
  245. package/dist/lib/Border-CNS6aEXB.js.map +0 -1
  246. package/dist/lib/Button-T16zSZip.js +0 -2
  247. package/dist/lib/Button-T16zSZip.js.map +0 -1
  248. package/dist/lib/CodeEditor-BGlB232h.js.map +0 -1
  249. package/dist/lib/ComboBox-C9FYMuLv.js +0 -2
  250. package/dist/lib/ComboBox-C9FYMuLv.js.map +0 -1
  251. package/dist/lib/Component-w65rPK75.js +0 -2
  252. package/dist/lib/Component-w65rPK75.js.map +0 -1
  253. package/dist/lib/Container-C7RPLQEc.js +0 -2
  254. package/dist/lib/DOM-Ba8YRVel.js +0 -2
  255. package/dist/lib/DOM-Ba8YRVel.js.map +0 -1
  256. package/dist/lib/DragManager-UvPHSoRm.js +0 -2
  257. package/dist/lib/DragManager-UvPHSoRm.js.map +0 -1
  258. package/dist/lib/Glyph-DeJF_zsR.js +0 -2
  259. package/dist/lib/Glyph-DeJF_zsR.js.map +0 -1
  260. package/dist/lib/Grid-BYBohJIA.js.map +0 -1
  261. package/dist/lib/GridConstraints-Bts284FI.js +0 -2
  262. package/dist/lib/LayoutSerialization-ySzY1h2l.js +0 -2
  263. package/dist/lib/LayoutSerialization-ySzY1h2l.js.map +0 -1
  264. package/dist/lib/LayoutSizes-DKDK1Cle.js +0 -2
  265. package/dist/lib/LayoutSizes-DKDK1Cle.js.map +0 -1
  266. package/dist/lib/List-BPd-IXZR.js +0 -2
  267. package/dist/lib/List-BPd-IXZR.js.map +0 -1
  268. package/dist/lib/MemoryStore-BgP7-Uzn.js +0 -2
  269. package/dist/lib/MemoryStore-BgP7-Uzn.js.map +0 -1
  270. package/dist/lib/Menu-C0roOCY7.js +0 -2
  271. package/dist/lib/Menu-C0roOCY7.js.map +0 -1
  272. package/dist/lib/Position-PBVBW1JS.js.map +0 -1
  273. package/dist/lib/RadioButton-CCcIaL54.js +0 -2
  274. package/dist/lib/RadioButton-CCcIaL54.js.map +0 -1
  275. package/dist/lib/Scrollbar-C3ZZyZ1e.js +0 -2
  276. package/dist/lib/Scrollbar-C3ZZyZ1e.js.map +0 -1
  277. package/dist/lib/TabButton-DNo4ZgV8.js +0 -2
  278. package/dist/lib/TabButton-DNo4ZgV8.js.map +0 -1
  279. package/dist/lib/Text-CdHf3B-1.js +0 -2
  280. package/dist/lib/Text-CdHf3B-1.js.map +0 -1
  281. package/dist/lib/Tooltip-B_UF5bXD.js +0 -3
  282. package/dist/lib/Tooltip-B_UF5bXD.js.map +0 -1
  283. package/dist/lib/Tree-C7qLbIYH.js +0 -2
  284. package/dist/lib/Tree-C7qLbIYH.js.map +0 -1
  285. package/dist/lib/VBox-32fxpkDl.js +0 -2
  286. package/dist/lib/VBox-32fxpkDl.js.map +0 -1
  287. package/dist/lib/VirtualScroller-cvFNMS7U.js +0 -2
  288. package/dist/lib/VirtualScroller-cvFNMS7U.js.map +0 -1
  289. package/dist/lib/assets/StoreWorker-CgOBYoai.js +0 -2
  290. package/dist/lib/assets/StoreWorker-CgOBYoai.js.map +0 -1
  291. package/dist/lib/selectionsEqual-BrTxPMmK.js +0 -2
  292. package/dist/lib/selectionsEqual-BrTxPMmK.js.map +0 -1
  293. package/dist/lib/types/component/table/CellGeometry.d.ts +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioButton-Df5J-H6m.js","names":[],"sources":["../../src/typescript/lib/component/input/RadioButton.ts"],"sourcesContent":["// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0\n\nimport { Animation } from \"~/core/Animation.js\";\nimport { AbstractBooleanInput, AbstractBooleanInputOptions } from \"~/component/input/AbstractBooleanInput.js\";\nimport { Component, ComponentOptions } from \"~/core/Component.js\";\nimport { DOM, type Handle } from \"~/core/DOM.js\";\nimport { Event } from \"~/core/Event.js\";\nimport { Glyph, GlyphOptions } from \"~/component/display/Glyph.js\";\nimport { HBox } from \"~/layout/HBox.js\";\nimport { type StateStyleRule } from \"~/core/ClassStyleRules.js\";\nimport { borderToStyle } from \"~/primitive/Border.js\";\nimport { callable } from \"~/core/Callable.js\";\nimport { circle } from \"~/glyphs/solid/circle.js\";\n\n// Idempotent registration: makes the `\"circle\"` glyph available for the dot\n// regardless of which control imports first.\nGlyph.register(circle);\n\nconst _defaultRadioButtonRingOptions: Partial<ComponentOptions> = {\n preferredSize: { width: 16, height: 16 },\n minSize: { width: 16, height: 16 },\n maxSize: { width: 16, height: 16 },\n cursor: \"pointer\",\n backgroundColor: \"var(--ts-ui-radio-bg, var(--ts-ui-form-bg, rgb(255, 255, 255)))\",\n border: \"1px solid var(--ts-ui-form-border, rgb(160, 160, 160))\",\n};\n\n/** `_ring`'s selected-state declarations. Read by both `getSelectedClassDeclarations` and `applyState`. */\nconst RADIO_SELECTED_DECLARATIONS: Readonly<Record<string, string>> = Object.freeze({\n backgroundColor: \"var(--ts-ui-radio-bg-selected, rgb(30, 100, 200))\",\n border: \"1px solid var(--ts-ui-radio-bg-selected, rgb(30, 100, 200))\",\n});\n\n/**\n * The ring graphic behind a {@link RadioButton}. See `CheckboxBox`'s doc\n * comment (Checkbox.ts) for the shape this mirrors — static geometry/cursor\n * and the resting backgroundColor/border are class defaults; the selected\n * background and border write through a `createStateStyleRule`-backed state\n * rule — see `plans/implemented/checkbox-radio-delegate-state-style-defaults.md`.\n */\nclass RadioButtonRing extends Component {\n private _selected: boolean = false;\n\n private declare _selectedStyleRule?: StateStyleRule;\n private get selectedStyleRule(): StateStyleRule {\n return this._selectedStyleRule ??= this.createStateStyleRule(\".selected\", () => this.getSelectedClassDeclarations());\n }\n\n constructor() {\n super(undefined, _defaultRadioButtonRingOptions);\n }\n\n protected getSelectedClassDeclarations(): Record<string, string | null> {\n return {\n backgroundColor: RADIO_SELECTED_DECLARATIONS.backgroundColor,\n ...borderToStyle({ border: RADIO_SELECTED_DECLARATIONS.border }),\n };\n }\n\n protected override getRestingExclusionSuffixes(): readonly string[] {\n return [\".selected\"];\n }\n\n /** See `CheckboxBox.applyState`'s doc comment (Checkbox.ts) — identical reasoning, one state instead of two. */\n applyState(selected: boolean): void {\n this._selected = selected;\n\n const element = this.getElement();\n if (element) {\n DOM.sink.apply(element, { toggleClass: { selected } });\n }\n\n if (selected) {\n this.selectedStyleRule.setMany({\n backgroundColor: RADIO_SELECTED_DECLARATIONS.backgroundColor,\n ...borderToStyle({ border: RADIO_SELECTED_DECLARATIONS.border }),\n });\n }\n }\n\n protected render(): Handle {\n const element = super.render();\n DOM.sink.apply(element, { toggleClass: { selected: this._selected } });\n return element;\n }\n}\n\n// The dot glyph's fitted size inside the ring (14×14 padding box, 1px\n// border): shared with RadioButton's own constructor below so the class\n// default and the imperative override can never drift apart.\nconst RADIO_DOT_SIZE = { width: 8, height: 8 };\n\nconst _defaultRadioButtonDotOptions: Partial<GlyphOptions> = {\n foregroundColor: \"var(--ts-ui-radio-dot-color, rgb(255, 255, 255))\",\n minSize: RADIO_DOT_SIZE,\n maxSize: RADIO_DOT_SIZE,\n};\n\n/**\n * The filled dot inside a {@link RadioButton}'s ring. `foregroundColor` and\n * `minSize`/`maxSize` are class defaults, so every instance shares one\n * `.RadioButtonDot` CSS rule instead of repeating them. `RadioButton`'s own\n * constructor still calls `setPreferredSize`/`setMaxSize` imperatively (a\n * `Glyph`'s construction-time size pin cannot itself be deferred to a\n * defaults bag — see `Glyph.applyOptions`), but that call now resolves to\n * the same value this class already defaults, so `Component.applyStyle`'s\n * render-time reconciliation (`reconcileRuleDeclaration`, since\n * `plans/implemented/reconciled-write-path-widening.md`) turns it into a\n * removal instead of a redundant per-instance declaration.\n */\nclass RadioButtonDot extends Glyph {\n constructor() {\n super(\"circle\", undefined, _defaultRadioButtonDotOptions);\n }\n}\n\n/**\n * Construction-time options for {@link RadioButton}.\n *\n * @category Components\n */\nexport interface RadioButtonOptions extends AbstractBooleanInputOptions {\n selected?: boolean;\n value?: boolean;\n text?: string;\n radioName?: string;\n /**\n * Construction-time listener bag — the declarative form of `on()`. Adds the\n * radio button's `action` shorthand to the inherited `change` / `binding`.\n */\n listeners?: {\n action?: () => void;\n change?: (value: boolean) => void;\n binding?: () => void;\n };\n}\n\nconst _defaultRadioButtonOptions: Partial<RadioButtonOptions> = {\n outline: \"none\",\n};\n\n/**\n * A custom-drawn radio button rendered as a focusable `<div>` with\n * `role=\"radio\"`. The ring + dot is drawn with framework primitives; the\n * native `<input type=\"radio\">` is intentionally not used. Group selection\n * is coordinated by [`ButtonGroup`](/api/overlay/classes/ButtonGroup); keyboard\n * navigation within a group is provided by\n * [`RovingTabIndex`](/api/core/classes/RovingTabIndex).\n *\n * @category Components\n */\nclass RadioButton<TOptions extends RadioButtonOptions = RadioButtonOptions>\n extends AbstractBooleanInput<TOptions>\n{\n private _ring: RadioButtonRing;\n private _dot: Glyph;\n\n /**\n * Constructs a RadioButton.\n *\n * @param text - Optional label text. Equivalent to `options.label`; kept\n * positional for back-compat with consumers that wrote\n * `new RadioButton(\"Hello\")`.\n * @param options - Optional construction-time options bag.\n * @param subclassDefaults - Per-subclass default bag layered over this\n * class's defaults; subclasses forward their `_defaultXxxOptions`\n * constant here.\n */\n constructor(text?: string, options?: RadioButtonOptions, subclassDefaults?: Partial<RadioButtonOptions>);\n constructor(text?: string, options?: TOptions, subclassDefaults?: Partial<TOptions>) {\n super(\n { ...(options ?? {}) } as TOptions,\n { ..._defaultRadioButtonOptions, ...(subclassDefaults ?? {}) } as Partial<TOptions>,\n );\n\n this.setLayoutManager(new HBox());\n\n this._ring = new RadioButtonRing();\n // Min = preferred = max so the outer HBox shrink-on-overallocation\n // can't collapse the ring graphic when the radio is packed into a\n // tight container with siblings that have flexible widths.\n this._ring.setSize({ width: 16, height: 16 });\n this._ring.setBorderRadius(\"50%\");\n\n this._dot = new RadioButtonDot();\n this._dot.setPreferredSize(RADIO_DOT_SIZE);\n this._dot.setMaxSize(RADIO_DOT_SIZE);\n this._dot.setX(3);\n this._dot.setY(3);\n this._dot.setOpacity(0);\n // Pass-through so clicks on the dot still hit the ring underneath.\n this._dot.setPointerEvents(\"none\");\n\n if (!Animation.isReducedMotion()) {\n this._dot.setTransition(\"opacity 120ms ease-out\");\n this._ring.setTransition(\"background-color 120ms ease-out, border-color 120ms ease-out\");\n }\n\n this._ring.addComponent(this._dot);\n super.addComponent(this._ring);\n\n this.getAria().setRole(\"radio\");\n this.getAria().setTabIndex(0);\n this.getAria().setChecked(false);\n\n // The ring owns the user-select click so the pointer/click + cursor\n // surface is exactly the visible 16 × 16 graphic — clicks on a label or\n // in any stretched empty area pass through to the root, which has no\n // listener of its own. This pointer line stays per-subclass (a closure\n // over the widget `this`) because a listener registered on the child\n // ring would otherwise bind `this` to the ring; only the keyboard path,\n // registered on the root, moves into the base.\n Event.addListener(this._ring, \"click\", () => this.activateFromPointer());\n this.installKeyboard();\n\n // The positional `text` arg wins only when `options.label` (or\n // `options.text`) was not provided.\n if (this._options.label === undefined && this._options.text === undefined && text !== undefined) {\n this._options.label = text;\n } else if (this._options.label === undefined && this._options.text !== undefined) {\n this._options.label = this._options.text;\n }\n\n if (this._options.value !== undefined && this._options.selected === undefined) {\n this._options.selected = this._options.value;\n }\n\n if (this._options.selected !== undefined) {\n this.applySelected(this._options.selected);\n }\n\n if (this._options.label !== undefined) {\n this.applyLabel(this._options.label);\n }\n\n if (this._options.enabled !== undefined) {\n this.applyEnabled(this._options.enabled);\n }\n\n if (this._options.readOnly !== undefined) {\n this.applyReadOnly(this._options.readOnly);\n }\n }\n\n /**\n * Applies a {@link RadioButtonOptions} bag. Inherited Component fields\n * cascade through `super.applyOptions`; radio-button-specific fields are\n * stored pure on `_options` so the constructor body can dispatch them\n * after children are built.\n *\n * @param options - The options bag carrying the values to apply.\n *\n * @returns This component, for method chaining.\n */\n protected applyOptions(options: TOptions): this {\n super.applyOptions(options);\n\n if (options.selected !== undefined) this._options.selected = options.selected;\n if (options.value !== undefined) this._options.value = options.value;\n if (options.label !== undefined) this._options.label = options.label;\n if (options.text !== undefined) this._options.text = options.text;\n if (options.radioName !== undefined) this._options.radioName = options.radioName;\n if (options.enabled !== undefined) this._options.enabled = options.enabled;\n if (options.readOnly !== undefined) this._options.readOnly = options.readOnly;\n\n return this;\n }\n\n /**\n * Activates the radio button from a click or key: radio buttons can only be\n * selected, never directly deselected by the user (the `ButtonGroup`\n * deselects siblings on change), so this selects and fires the DOM `change`\n * only on a real off→on transition. The enabled/read-only guard is applied\n * by the base before this runs.\n */\n protected activate(): void {\n if (!this.isSelected()) {\n this.setSelected(true);\n Event.fireEvent(this, \"change\");\n }\n }\n\n /**\n * Returns the inner ring graphic — the click + cursor surface.\n *\n * @returns The ring component.\n */\n protected getInteractiveSurface(): Component {\n return this._ring;\n }\n\n /**\n * Returns whether the radio button is currently selected.\n *\n * @returns `true` when selected.\n */\n isSelected(): boolean {\n return this._options.selected ?? false;\n }\n\n /**\n * Sets the selected state and updates the visual + ARIA cache. Used both\n * by user-driven selection and by `ButtonGroup` when it deselects\n * siblings.\n *\n * @param value - `true` to select, `false` to deselect.\n *\n * @returns This component, for method chaining.\n */\n setSelected(value: boolean): this {\n const next = !!value;\n if (next === this.isSelected()) {\n return this;\n }\n\n this._options.selected = next;\n this.applySelected(next);\n this.notifyChange(next);\n\n return this;\n }\n\n /**\n * Returns the current value (alias for {@link isSelected}, satisfies\n * [`Bindable`](/api/core/interfaces/Bindable)).\n *\n * @returns `true` when selected.\n */\n getValue(): boolean {\n return this.isSelected();\n }\n\n /**\n * Sets the value (alias for {@link setSelected}, satisfies [`Bindable`](/api/core/interfaces/Bindable)).\n *\n * @param value - The new selected state.\n *\n * @returns This component, for method chaining.\n */\n setValue(value: boolean): this {\n return this.setSelected(value);\n }\n\n /**\n * Back-compat shim that stores the supplied group name on `_options` but\n * does not emit a `name` attribute (the host element is no longer\n * `<input>`). Consumers that read the group name through\n * {@link getRadioName} keep working.\n *\n * @param name - Group name string.\n *\n * @returns This component, for method chaining.\n */\n setRadioName(name: string): this {\n this._options.radioName = name;\n\n return this;\n }\n\n /**\n * Clears the back-compat radio-name field.\n *\n * @returns This component, for method chaining.\n */\n clearRadioName(): this {\n this._options.radioName = undefined;\n\n return this;\n }\n\n /**\n * Returns the group name set via {@link setRadioName}, or `null`.\n *\n * @returns The group name string, or `null`.\n */\n getRadioName(): string | null {\n return this._options.radioName ?? null;\n }\n\n /**\n * Registers a listener for one of this radio button's events.\n * `\"action\"` is a typed semantic shorthand over {@link Event.addListener}\n * for the DOM change event — fired on user-driven selection and used by\n * [`ButtonGroup`](/api/overlay/classes/ButtonGroup) to enforce mutual\n * exclusivity. `\"change\"` and `\"binding\"` are the inherited\n * {@link AbstractInput} listener-bag events.\n *\n * @param event - The event name.\n * @param listener - The callback to invoke when the event fires.\n *\n * @returns This component, for method chaining.\n */\n on(event: \"action\", listener: Event.Listener): this;\n on(event: \"change\", listener: (value: boolean) => void): this;\n on(event: \"binding\", listener: () => void): this;\n on(event: \"action\" | \"change\" | \"binding\", listener: Function): this {\n if (event === \"action\") {\n Event.addListener(this, \"change\", listener as Event.Listener);\n\n return this;\n }\n\n return super.on(event as \"change\", listener as (value: boolean) => void);\n }\n\n /**\n * Removes a previously registered listener. The exact callback\n * reference must match the one passed to {@link on}.\n *\n * @param event - The event the listener was registered for.\n * @param listener - The callback to remove.\n *\n * @returns This component, for method chaining.\n */\n off(event: \"action\" | \"change\" | \"binding\", listener: Function): this {\n if (event === \"action\") {\n Event.removeListener(this, \"change\", listener as Event.Listener);\n\n return this;\n }\n\n return super.off(event, listener);\n }\n\n /**\n * Updates the visual + ARIA state for the given selected flag.\n */\n private applySelected(selected: boolean): void {\n this.getAria().setChecked(selected);\n\n this._ring.applyState(selected);\n\n this._dot.setOpacity(selected ? 1 : 0);\n }\n\n}\n\nconst RadioButtonCallable = callable(RadioButton);\ntype RadioButtonCallable<TOptions extends RadioButtonOptions = RadioButtonOptions> = RadioButton<TOptions>;\nexport {\n RadioButton as _RadioButton,\n RadioButtonCallable as RadioButton\n};\n"],"mappings":"iUAgBA,EAAM,SAAS,CAAM,EAErB,IAAM,EAA4D,CAC9D,cAAiB,CAAE,MAAO,GAAI,OAAQ,EAAG,EACzC,QAAiB,CAAE,MAAO,GAAI,OAAQ,EAAG,EACzC,QAAiB,CAAE,MAAO,GAAI,OAAQ,EAAG,EACzC,OAAiB,UACjB,gBAAiB,kEACjB,OAAiB,wDACrB,EAGM,EAAgE,OAAO,OAAO,CAChF,gBAAiB,oDACjB,OAAiB,6DACrB,CAAC,EASK,gBAAN,cAA8B,CAAU,CACpC,UAA6B,GAG7B,IAAY,mBAAoC,CAC5C,MAAO,MAAK,qBAAuB,KAAK,qBAAqB,gBAAmB,KAAK,6BAA6B,CAAC,CACvH,CAEA,aAAc,CACV,MAAM,IAAA,GAAW,CAA8B,CACnD,CAEA,8BAAwE,CACpE,MAAO,CACH,gBAAiB,EAA4B,gBAC7C,GAAG,EAAc,CAAE,OAAQ,EAA4B,MAAO,CAAC,CACnE,CACJ,CAEA,6BAAoE,CAChE,MAAO,CAAC,WAAW,CACvB,CAGA,WAAW,EAAyB,CAChC,KAAK,UAAY,EAEjB,IAAM,EAAU,KAAK,WAAW,EAC5B,GACA,EAAI,KAAK,MAAM,EAAS,CAAE,YAAa,CAAE,UAAS,CAAE,CAAC,EAGrD,GACA,KAAK,kBAAkB,QAAQ,CAC3B,gBAAiB,EAA4B,gBAC7C,GAAG,EAAc,CAAE,OAAQ,EAA4B,MAAO,CAAC,CACnE,CAAC,CAET,CAEA,QAA2B,CACvB,IAAM,EAAU,MAAM,OAAO,EAE7B,OADA,EAAI,KAAK,MAAM,EAAS,CAAE,YAAa,CAAE,SAAU,KAAK,SAAU,CAAE,CAAC,EAC9D,CACX,CACJ,EAKM,EAAiB,CAAE,MAAO,EAAG,OAAQ,CAAE,EAEvC,EAAuD,CACzD,gBAAiB,mDACjB,QAAiB,EACjB,QAAiB,CACrB,EAcM,eAAN,cAA6B,CAAM,CAC/B,aAAc,CACV,MAAM,SAAU,IAAA,GAAW,CAA6B,CAC5D,CACJ,EAuBM,EAA0D,CAC5D,QAAS,MACb,EAYM,YAAN,cACY,CACZ,CACI,MACA,KAcA,YAAY,EAAe,EAAoB,EAAsC,CACjF,MACI,CAAE,GAAI,GAAW,CAAC,CAAG,EACrB,CAAE,GAAG,EAA4B,GAAI,GAAoB,CAAC,CAAG,CACjE,EAEA,KAAK,iBAAiB,IAAI,CAAM,EAEhC,KAAK,MAAQ,IAAI,gBAIjB,KAAK,MAAM,QAAQ,CAAE,MAAO,GAAI,OAAQ,EAAG,CAAC,EAC5C,KAAK,MAAM,gBAAgB,KAAK,EAEhC,KAAK,KAAO,IAAI,eAChB,KAAK,KAAK,iBAAiB,CAAc,EACzC,KAAK,KAAK,WAAW,CAAc,EACnC,KAAK,KAAK,KAAK,CAAC,EAChB,KAAK,KAAK,KAAK,CAAC,EAChB,KAAK,KAAK,WAAW,CAAC,EAEtB,KAAK,KAAK,iBAAiB,MAAM,EAE5B,EAAU,gBAAgB,IAC3B,KAAK,KAAK,cAAc,wBAAwB,EAChD,KAAK,MAAM,cAAc,8DAA8D,GAG3F,KAAK,MAAM,aAAa,KAAK,IAAI,EACjC,MAAM,aAAa,KAAK,KAAK,EAE7B,KAAK,QAAQ,CAAC,CAAC,QAAQ,OAAO,EAC9B,KAAK,QAAQ,CAAC,CAAC,YAAY,CAAC,EAC5B,KAAK,QAAQ,CAAC,CAAC,WAAW,EAAK,EAS/B,EAAM,YAAY,KAAK,MAAO,YAAe,KAAK,oBAAoB,CAAC,EACvE,KAAK,gBAAgB,EAIjB,KAAK,SAAS,QAAU,IAAA,IAAa,KAAK,SAAS,OAAS,IAAA,IAAa,IAAS,IAAA,GAClF,KAAK,SAAS,MAAQ,EACf,KAAK,SAAS,QAAU,IAAA,IAAa,KAAK,SAAS,OAAS,IAAA,KACnE,KAAK,SAAS,MAAQ,KAAK,SAAS,MAGpC,KAAK,SAAS,QAAU,IAAA,IAAa,KAAK,SAAS,WAAa,IAAA,KAChE,KAAK,SAAS,SAAW,KAAK,SAAS,OAGvC,KAAK,SAAS,WAAa,IAAA,IAC3B,KAAK,cAAc,KAAK,SAAS,QAAQ,EAGzC,KAAK,SAAS,QAAU,IAAA,IACxB,KAAK,WAAW,KAAK,SAAS,KAAK,EAGnC,KAAK,SAAS,UAAY,IAAA,IAC1B,KAAK,aAAa,KAAK,SAAS,OAAO,EAGvC,KAAK,SAAS,WAAa,IAAA,IAC3B,KAAK,cAAc,KAAK,SAAS,QAAQ,CAEjD,CAYA,aAAuB,EAAyB,CAW5C,OAVA,MAAM,aAAa,CAAO,EAEtB,EAAQ,WAAc,IAAA,KAAW,KAAK,SAAS,SAAY,EAAQ,UACnE,EAAQ,QAAc,IAAA,KAAW,KAAK,SAAS,MAAY,EAAQ,OACnE,EAAQ,QAAc,IAAA,KAAW,KAAK,SAAS,MAAY,EAAQ,OACnE,EAAQ,OAAc,IAAA,KAAW,KAAK,SAAS,KAAY,EAAQ,MACnE,EAAQ,YAAc,IAAA,KAAW,KAAK,SAAS,UAAY,EAAQ,WACnE,EAAQ,UAAc,IAAA,KAAW,KAAK,SAAS,QAAY,EAAQ,SACnE,EAAQ,WAAc,IAAA,KAAW,KAAK,SAAS,SAAY,EAAQ,UAEhE,IACX,CASA,UAA2B,CAClB,KAAK,WAAW,IACjB,KAAK,YAAY,EAAI,EACrB,EAAM,UAAU,KAAM,QAAQ,EAEtC,CAOA,uBAA6C,CACzC,OAAO,KAAK,KAChB,CAOA,YAAsB,CAClB,OAAO,KAAK,SAAS,UAAY,EACrC,CAWA,YAAY,EAAsB,CAC9B,IAAM,EAAO,CAAC,CAAC,EASf,OARI,IAAS,KAAK,WAAW,EAClB,MAGX,KAAK,SAAS,SAAW,EACzB,KAAK,cAAc,CAAI,EACvB,KAAK,aAAa,CAAI,EAEf,KACX,CAQA,UAAoB,CAChB,OAAO,KAAK,WAAW,CAC3B,CASA,SAAS,EAAsB,CAC3B,OAAO,KAAK,YAAY,CAAK,CACjC,CAYA,aAAa,EAAoB,CAG7B,MAFA,MAAK,SAAS,UAAY,EAEnB,IACX,CAOA,gBAAuB,CAGnB,MAFA,MAAK,SAAS,UAAY,IAAA,GAEnB,IACX,CAOA,cAA8B,CAC1B,OAAO,KAAK,SAAS,WAAa,IACtC,CAkBA,GAAG,EAAwC,EAA0B,CAOjE,OANI,IAAU,UACV,EAAM,YAAY,KAAM,SAAU,CAA0B,EAErD,MAGJ,MAAM,GAAG,EAAmB,CAAoC,CAC3E,CAWA,IAAI,EAAwC,EAA0B,CAOlE,OANI,IAAU,UACV,EAAM,eAAe,KAAM,SAAU,CAA0B,EAExD,MAGJ,MAAM,IAAI,EAAO,CAAQ,CACpC,CAKA,cAAsB,EAAyB,CAC3C,KAAK,QAAQ,CAAC,CAAC,WAAW,CAAQ,EAElC,KAAK,MAAM,WAAW,CAAQ,EAE9B,KAAK,KAAK,WAAW,IAAgB,CACzC,CAEJ,EAEM,EAAsB,EAAS,WAAW"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./DOM-Cjh7_7TF.js";import{l as t,n}from"./Position-BIEU1Eze.js";import{S as r,f as i,h as a,m as o,p as s,r as c,t as l,v as u}from"./Component-D99-15Zt.js";import{t as d}from"./ListenerBag-WPdKuuds.js";import{i as f,r as p}from"./Scrollbar-DcnueNJd.js";import{t as m}from"./Container-FWRjgF6T.js";import{t as h}from"./Glyph-DiEpD3gy.js";import{t as g}from"./Panel-CtViePqY.js";import{t as _}from"./RovingTabIndex--w28AnXc.js";import{a as v,t as y}from"./Tooltip-CyICVu15.js";import{t as b}from"./Fit-CaPMj7Up.js";import{n as x,r as S}from"./VBox-DVe4UXwX.js";import{t as C}from"./RadioButton-Df5J-H6m.js";import{c as w,i as T,l as E,n as D,r as ee}from"./CheckboxMenuRow-C1h4LPHR.js";import{t as te}from"./ProgressSpinner-BuBvC1FY.js";import{t as O}from"./Placement-7kqdaK4Z.js";import{t as k}from"./LayoutConstraints-LIHYYd2F.js";import{t as A}from"./Border-6GsTNV-2.js";import{t as ne}from"./Header-Osm3IjDw.js";import{t as j}from"./Button-CnFAiQuV.js";import{xmark as re}from"./glyphs/solid/xmark.es.js";import{window_maximize as ie}from"./glyphs/solid/window_maximize.es.js";import{window_minimize as ae}from"./glyphs/solid/window_minimize.es.js";import{window_restore as oe}from"./glyphs/solid/window_restore.es.js";import{t as se}from"./TabButton-CAACsMov.js";import{angle_left as ce}from"./glyphs/solid/angle_left.es.js";import{angle_right as M}from"./glyphs/solid/angle_right.es.js";import{angle_up as le}from"./glyphs/solid/angle_up.es.js";import{angle_down as ue}from"./glyphs/solid/angle_down.es.js";import{i as de,r as N,t as fe}from"./Menu-CwHluLGT.js";var ButtonGroup=class{buttons=[];_groupId=`bg-`+Math.random().toString(36).slice(2,10);_allowDeselect=!1;_rovingTabIndex=null;_listeners=new d;constructor(e){if(e?.allowDeselect!==void 0&&(this._allowDeselect=e.allowDeselect),e?.buttons!==void 0&&this.addButtons(e.buttons),e?.listeners!==void 0){let t=e.listeners;for(let e of Object.keys(t)){let n=t[e];n!==void 0&&this.on(e,n)}}}updateButtonStates(e){e.isSelected()?this.buttons.forEach(t=>{t!==e&&t.setSelected(!1)}):this._allowDeselect||e.setSelected(!0),this.emit(`selection`,e)}setAllowDeselect(e){return this._allowDeselect=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)}getButtons(){return this.buttons.slice()}addButtons(...e){for(let t of e){let e=Array.isArray(t)?t:[t];for(let t of e)this.addButton(t)}return this}addButton(e){return this.buttons.push(e),e.on(`action`,()=>{this.updateButtonStates(e)}),e instanceof C&&e.setRadioName(this._groupId),this._rovingTabIndex!==null&&this._rovingTabIndex.add(e),this}removeButton(e){let t=this.buttons.indexOf(e);return t<0?this:(this.buttons.splice(t,1),this._rovingTabIndex!==null&&this._rovingTabIndex.remove(e),this)}setContainer(e){this._rovingTabIndex=new _;for(let e of this.buttons)this._rovingTabIndex.add(e);return r.addSubtreeListener(e,`keydown`,e=>{if(e.key===`ArrowRight`||e.key===`ArrowDown`)this._rovingTabIndex.moveNext();else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)this._rovingTabIndex.movePrev();else return;return{prevent:!0}}),this}},P=a(ButtonGroup),F=function(e){return e[e.NORTH=0]=`NORTH`,e[e.SOUTH=1]=`SOUTH`,e[e.WEST=2]=`WEST`,e[e.EAST=3]=`EAST`,e[e.NORTHWEST=4]=`NORTHWEST`,e[e.SOUTHEAST=5]=`SOUTHEAST`,e[e.SOUTHWEST=6]=`SOUTHWEST`,e[e.NORTHEAST=7]=`NORTHEAST`,e}({}),I=`snap-target`,pe={tag:`div`},L=Object.freeze({boxShadow:`var(--ts-ui-window-snap-glow, 0 0 0 2px rgba(30, 100, 200, 0.7))`}),WindowBorder=class extends l{_direction=0;_listeners=new d;_dragStartListener;_dragStopListener;_fireDragListener;_snapTarget=!1;get snapTargetStyleRule(){return this._snapTargetStyleRule??=this.createStateStyleRule(`.snap-target`,()=>({boxShadow:L.boxShadow}))}constructor(e,t,n){super(t,{...pe,...n??{}}),e&&(this._direction=e),this._dragStartListener=this.onDragStart.bind(this),this._dragStopListener=this.onDragStop.bind(this),this._fireDragListener=this._dispatchDrag.bind(this),r.addListener(this,`mousedown`,this._dragStartListener),this.applyListeners(t?.listeners),this.snapTargetStyleRule.set(`boxShadow`,L.boxShadow)}getDirection(){return this._direction}setDirection(e){return e||=0,this._direction=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)}_dispatchDrag(e){return this.emit(`drag`,this,e),!0}isSnapTarget(){return this._snapTarget}setSnapTarget(t){if(this._snapTarget===t)return this;this._snapTarget=t;let n=this.getElement();return n&&e.sink.apply(n,{toggleClass:{[I]:t}}),this}onDragStart(e){e&&!r.isPrimaryButton(e)||(r.addViewportListener(this,`mouseup`,this._dragStopListener),r.addViewportListener(this,`touchend`,this._dragStopListener),r.addViewportListener(this,`touchcancel`,this._dragStopListener),r.addViewportListener(this,`mousemove`,this._fireDragListener),r.addViewportListener(this,`touchmove`,this._fireDragListener),p(this.dragCursor()??`default`))}onDragStop(){return r.removeViewportListener(this,`mouseup`,this._dragStopListener),r.removeViewportListener(this,`touchend`,this._dragStopListener),r.removeViewportListener(this,`touchcancel`,this._dragStopListener),r.removeViewportListener(this,`mousemove`,this._fireDragListener),r.removeViewportListener(this,`touchmove`,this._fireDragListener),f(),this.setSnapTarget(!1),!0}dragCursor(){switch(this._direction){case 0:case 1:return`ns-resize`;case 2:case 3:return`ew-resize`;case 4:case 5:return`nwse-resize`;case 6:case 7:return`nesw-resize`}}render(){let t=super.render(),n=this.dragCursor();return n&&this.setCursor(n),this._snapTarget&&e.sink.apply(t,{addClass:[I]}),t}},R=a(WindowBorder);function createSpinnerWrap(){let e=new l;return e.setLayoutManager(new b({fill:o.NONE})),e.addComponent(new te(24)),e}var z=4,B=150,V=4,me=200,H=24,U=26,W={x:50,y:50,width:400,height:300,insets:new n(z,z,z,z),border:`1px solid var(--ts-ui-border-color, black)`,borderRadius:`var(--ts-ui-border-radius, 4px)`,shadow:`var(--ts-ui-window-shadow, 3px 3px 2px rgba(0, 0, 0, 0.4))`,backgroundColor:`var(--ts-ui-body-bg, rgb(241, 241, 241))`,closeable:!0,minimizable:!0,maximizable:!0,maximizeBounds:`viewport`,windowState:`normal`,snapResizeEnabled:!0,snapThreshold:12,snapModifier:`ctrl`,constrainToViewport:!0},he=10,G=class AbstractWindow extends m{static ownClassStyleDefaults=W;static openWindows=new Set;_borderComponents;_animationFrameId=null;_pendingClientX=0;_pendingClientY=0;_pendingBorder=null;_resizeSessionActive=!1;_resizeOriginClientX=0;_resizeOriginClientY=0;_resizeOriginX=0;_resizeOriginY=0;_resizeOriginW=0;_resizeOriginH=0;_resizeFps=60;_lastFlushTime=0;_dragStartLeft=0;_dragStartTop=0;_dragOriginClientX=0;_dragOriginClientY=0;_dragDX=0;_dragDY=0;_dragReachMinX=0;_dragReachMaxX=0;_dragReachMinY=0;_dragReachMaxY=0;_contentFactory=null;_contentReadyCallback=null;_preMinimizeState=`normal`;_restoreRect=null;_normalMinSize=null;_bodyHost=null;_rail=null;_windowListeners=new d;_stateAnimHandle=null;_showAnimation=null;_materializeAnimation=null;_closeAnimation=null;_railCollapseAnimation=null;_railExpandAnimation=null;_viewportResizeBound=!1;_snapEnabled=!1;_snapKeysAttached=!1;_snapMoveAttached=!1;_snapTargetBorder=null;_boundOnDrag=e=>this.onDrag(e);_boundOnMouseUp=()=>this.onMouseUp();_boundOnResizeEnd=()=>this.onResizeEnd();_boundOnSnapKeyDown=e=>this.onSnapKeyDown(e);_boundOnSnapKeyUp=e=>this.onSnapKeyUp(e);_boundOnSnapMouseMove=e=>this.onSnapMouseMove(e);_boundOnSnapMouseDown=e=>this.onSnapMouseDown(e);_boundOnViewportResize=()=>this.onViewportResize();_boundOnSnapBlur=()=>this.clearSnapState();_boundOnBorderResize=(e,t)=>this.onResize(e,t);_boundOnBringToFront=()=>this.bringToFront();_boundOnThemeReflow=()=>this.scheduleLayout();constructor(e,t){super(e,{...W,...t??{}}),this.subscribeTheme(this._boundOnThemeReflow),this._borderComponents={west:new R(F.WEST),northwest:new R(F.NORTHWEST),north:new R(F.NORTH),northeast:new R(F.NORTHEAST),east:new R(F.EAST),southeast:new R(F.SOUTHEAST),south:new R(F.SOUTH),southwest:new R(F.SOUTHWEST)},this._borderComponents.west.on(`drag`,this._boundOnBorderResize),this._borderComponents.northwest.on(`drag`,this._boundOnBorderResize),this._borderComponents.north.on(`drag`,this._boundOnBorderResize),this._borderComponents.northeast.on(`drag`,this._boundOnBorderResize),this._borderComponents.east.on(`drag`,this._boundOnBorderResize),this._borderComponents.southeast.on(`drag`,this._boundOnBorderResize),this._borderComponents.south.on(`drag`,this._boundOnBorderResize),this._borderComponents.southwest.on(`drag`,this._boundOnBorderResize);for(let e of Object.values(this._borderComponents))e.setZIndex(he);this.setVisible(!1),this.setContain(`layout`),this.getAria().setTabIndex(-1),r.addSubtreeListener(this,`mousedown`,{button:`any`,handler:this._boundOnBringToFront})}initChrome(e){this._options.contentFactory!==void 0&&this.setContentFactory(this._options.contentFactory,this._options.onReady),this.setCloseable(this.isCloseable()),this.setMinimizable(this.isMinimizable()),this.setMaximizable(this.isMaximizable()),this.setMaximizeBounds(this.getMaximizeBounds()),this.setWindowState(this.getWindowState()),this.wireMoveTrigger(),e?.minSize===void 0&&this.setMinSize({width:this.minContentWidthSeed(),height:200})}applyOptions(e){return super.applyOptions(e),e.headerText!==void 0&&(this._options.headerText=e.headerText),e.glyph!==void 0&&(this._options.glyph=e.glyph),e.contentFactory!==void 0&&(this._options.contentFactory=e.contentFactory),e.onReady!==void 0&&(this._options.onReady=e.onReady),this.setX(e.x??this._defaultOptions.x),this.setY(e.y??this._defaultOptions.y),this.setWidth(e.width??this._defaultOptions.width),this.setHeight(e.height??this._defaultOptions.height),e.closeable!==void 0&&(this._options.closeable=e.closeable),e.minimizable!==void 0&&(this._options.minimizable=e.minimizable),e.maximizable!==void 0&&(this._options.maximizable=e.maximizable),e.maximizeBounds!==void 0&&(this._options.maximizeBounds=e.maximizeBounds),e.windowState!==void 0&&(this._options.windowState=e.windowState),this.setSnapResizeEnabled(e.snapResizeEnabled??this.isSnapResizeEnabled()),this.setSnapThreshold(e.snapThreshold??this.getSnapThreshold()),this.setSnapModifier(e.snapModifier??this.getSnapModifier()),this.setConstrainToViewport(e.constrainToViewport??this.isConstrainToViewport()),this}chromeHeight(){return 0}chromeMinSize(){let e=this.getBorderSize(),t=this.getInsets(),n=(Number(e.left)||0)+(Number(e.right)||0)+t.getLeft(),r=(Number(e.top)||0)+(Number(e.bottom)||0)+t.getTop();return{width:this.minContentWidthSeed()+n,height:(this.chromeHeight()||U)+r}}isChromeComponent(e){return!1}setWidth(e){if(this.getElement()){let t=this.chromeMinSize();e<t.width&&(e=t.width)}return super.setWidth(e)}setHeight(e){if(this.getElement()){let t=this.chromeMinSize();e<t.height&&(e=t.height)}return super.setHeight(e)}show(){let e=this.getElement(!0);if(v.register(this),w(this),this.doLayout(),this.bringToFront(),AbstractWindow.openWindows.add(this),v.mount(e),this.setVisible(!0),this._showAnimation?.cancel(),this._showAnimation=u.play(e,{from:{opacity:`0`,transform:`scale(0.97)`},to:{opacity:`1`,transform:`scale(1)`},durationMs:B,properties:[`opacity`,`transform`]}),this._contentFactory){let e=this._contentFactory,t=this._contentReadyCallback;this._contentFactory=null,this._contentReadyCallback=null;let n=createSpinnerWrap();this._materializeAnimation?.cancel(),this._materializeAnimation=u.materialize({host:this,factory:e,spinnerComponent:n,onReady:e=>{this._bodyHost=e,t&&t(e)}})}else this._bodyHost=this.findBodyHost();return this.isSnapResizeEnabled()&&this.attachSnapKeyboardListeners(),this}setContentFactory(e,t){return this._contentFactory=e,this._contentReadyCallback=t??null,this}bringToFront(){v.bringToFront(this)}getLayerElement(){return this.getElement()??null}getDismissMode(){return`manual`}onActivate(e){this.paintActive(e),e&&(this.focusSelf(),this.emit(`activate`))}focusSelf(){let t=this.getElement();!t||e.source.contains(t,e.source.getActiveElement())||this.focus(!0)}requestClose(){this.onExitAction()}getBand(){return v.Band.Window}isLayerRoot(){return!0}onZIndexChanged(e){this.setZIndex(e)}onExitAction(){this.emit(`close`),this._animationFrameId!==null&&(e.sink.cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null),this._stateAnimHandle?.cancel(),this._stateAnimHandle=null,this._contentFactory=null,this._contentReadyCallback=null,this.detachSnapKeyboardListeners(),this.detachSnapMouseListeners(),this.detachViewportResizeListener(),this.clearSnapTargetBorder(),v.unregister(this),E(this),AbstractWindow.openWindows.delete(this),AbstractWindow.relayoutMinimizedStack();let t=this.getElement(),finalize=()=>{this.setVisible(!1),this.destructor()};if(!t){finalize();return}this._closeAnimation?.cancel(),this._closeAnimation=u.play(t,{to:{opacity:`0`,transform:`scale(0.97)`},durationMs:B,properties:[`opacity`,`transform`],onComplete:finalize})}destructor(){this._stateAnimHandle?.cancel(),this._stateAnimHandle=null,this._showAnimation?.cancel(),this._showAnimation=null,this._materializeAnimation?.cancel(),this._materializeAnimation=null,this._closeAnimation?.cancel(),this._closeAnimation=null,this._railCollapseAnimation?.cancel(),this._railCollapseAnimation=null,this._railExpandAnimation?.cancel(),this._railExpandAnimation=null;for(let e of Object.values(this._borderComponents))e.dispose();super.destructor()}getWindowState(){return this._options.windowState??this._defaultOptions.windowState}static getOpenWindows(){return Array.from(AbstractWindow.openWindows)}getRect(){return this.currentRect()}applyRect(e){return this.setX(e.x),this.setY(e.y),this.setWidth(e.width),this.setHeight(e.height),this}getRestoreRect(){return this._restoreRect}setWindowState(t){let n=this.getWindowState();if(n===t)return this;if(this._animationFrameId!==null&&(e.sink.cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null),this._options.windowState=t,n===`minimized`&&this._rail!==null&&(this.setDisplayed(!0),this.animateRailExpand()),n===`minimized`&&this._normalMinSize!==null&&(this.setMinSize(this._normalMinSize),this._normalMinSize=null),t===`normal`){this.setBodyHostDisplayed(!0),this.reflectMaximizeState(`normal`);let e=this._restoreRect??this.currentRect();this._restoreRect=null,this.detachViewportResizeListener(),this.animateRect(e,()=>AbstractWindow.relayoutMinimizedStack())}else if(t===`minimized`){if(n===`normal`&&(this._restoreRect=this.currentRect()),this._preMinimizeState=n===`maximized`?`maximized`:`normal`,this.reflectMaximizeState(`minimized`),this.detachViewportResizeListener(),this._rail!==null)this.animateRailCollapse(()=>{this.setDisplayed(!1),this.emit(`minimize`)});else{this._normalMinSize=this.getMinSizeConstraint(),this.setMinSize({width:0,height:0});let e=this.computeDockRect();this.animateRect(e,()=>{this.setBodyHostDisplayed(!1),AbstractWindow.relayoutMinimizedStack()}),this.emit(`minimize`)}}else{n===`normal`&&(this._restoreRect=this.currentRect()),this.setBodyHostDisplayed(!0),this.reflectMaximizeState(`maximized`);let e=this.computeMaximizeRect();this.animateRect(e,()=>{this.attachViewportResizeListener(),AbstractWindow.relayoutMinimizedStack()})}return n===`minimized`&&t!==`minimized`&&this.emit(`restore`),this}isMaximized(){return this.getWindowState()===`maximized`}isMinimized(){return this.getWindowState()===`minimized`}toggleMinimize(){this.isMinimizable()&&(this.getWindowState()===`minimized`?this.setWindowState(`normal`):this.setWindowState(`minimized`))}minimize(){return this.setWindowState(`minimized`)}restore(){return this.isMinimized()?(this.setWindowState(this._preMinimizeState),this.bringToFront(),this.focus(!0),this):this}setRail(e){return this._rail===e?this:(this._rail!==null&&this._rail.unregisterWindow(this),this._rail=e,e!==null&&e.registerWindow(this),this)}getRail(){return this._rail}getGlyph(){return this._options.glyph}on(e,t){return this._windowListeners.add(e,t),this}off(e,t){return this._windowListeners.remove(e,t),this}emit(e){this._windowListeners.fire(e)}toggleMaximize(){this.isMaximizable()&&(this.getWindowState()===`maximized`?this.setWindowState(`normal`):this.setWindowState(`maximized`))}setCloseable(e){return this._options.closeable=e,this.reflectCloseable(e),this}isCloseable(){return this._options.closeable??this._defaultOptions.closeable}setMinimizable(e){return this._options.minimizable=e,this.reflectMinimizable(e),this}isMinimizable(){return this._options.minimizable??this._defaultOptions.minimizable}setMaximizable(e){return this._options.maximizable=e,this.reflectMaximizable(e),this}isMaximizable(){return this._options.maximizable??this._defaultOptions.maximizable}setMaximizeBounds(e){return this._options.maximizeBounds=e,this}getMaximizeBounds(){return this._options.maximizeBounds??this._defaultOptions.maximizeBounds}setSnapResizeEnabled(e){return this._options.snapResizeEnabled===e?this:(this._options.snapResizeEnabled=e,e?this.getElement()&&this.attachSnapKeyboardListeners():(this.clearSnapState(),this.detachSnapKeyboardListeners()),this)}isSnapResizeEnabled(){return this._options.snapResizeEnabled??this._defaultOptions.snapResizeEnabled}setConstrainToViewport(e){return this._options.constrainToViewport=e,this}isConstrainToViewport(){return this._options.constrainToViewport??this._defaultOptions.constrainToViewport}setSnapThreshold(e){return this._options.snapThreshold=e,this}getSnapThreshold(){return this._options.snapThreshold??this._defaultOptions.snapThreshold}setSnapModifier(e){return this._options.snapModifier=e,this}getSnapModifier(){return this._options.snapModifier??this._defaultOptions.snapModifier}onMouseDown(e){this.startMoveFrom(e)}startMoveFrom(e){r.isPrimaryButton(e)&&(e.shiftKey||this.getWindowState()===`normal`&&(this._dragStartLeft=this.getX(),this._dragStartTop=this.getY(),this._dragOriginClientX=e.clientX,this._dragOriginClientY=e.clientY,this._dragDX=0,this._dragDY=0,this._dragReachMinX=this._dragStartLeft,this._dragReachMaxX=this._dragStartLeft,this._dragReachMinY=this._dragStartTop,this._dragReachMaxY=this._dragStartTop,this.setWillChange(`transform`),r.addViewportListener(this,`mouseup`,this._boundOnMouseUp),r.addViewportListener(this,`mousemove`,this._boundOnDrag)))}onResize(t,n){this.getWindowState()===`normal`&&(n.preventDefault(),this._resizeSessionActive||(this._resizeSessionActive=!0,this._resizeOriginClientX=n.clientX,this._resizeOriginClientY=n.clientY,this._resizeOriginX=this.getX(),this._resizeOriginY=this.getY(),this._resizeOriginW=this.getWidth(),this._resizeOriginH=this.getHeight(),r.addViewportListener(this,`mouseup`,this._boundOnResizeEnd),r.addViewportListener(this,`touchend`,this._boundOnResizeEnd),r.addViewportListener(this,`touchcancel`,this._boundOnResizeEnd)),this._pendingClientX=n.clientX,this._pendingClientY=n.clientY,this._pendingBorder=t,this._animationFrameId===null&&(this._animationFrameId=e.sink.requestAnimationFrame(e=>this.flushResize(e))))}onResizeEnd(){return this._resizeSessionActive=!1,r.removeViewportListener(this,`mouseup`,this._boundOnResizeEnd),r.removeViewportListener(this,`touchend`,this._boundOnResizeEnd),r.removeViewportListener(this,`touchcancel`,this._boundOnResizeEnd),!0}getResizeFps(){return this._resizeFps}setResizeFps(e){return this._resizeFps=e,this}flushResize(t){if(t-this._lastFlushTime<1e3/this._resizeFps){this._animationFrameId=e.sink.requestAnimationFrame(e=>this.flushResize(e));return}this._lastFlushTime=t,this._animationFrameId=null;let n=this._pendingBorder;if(this._pendingBorder=null,!n)return;let r=this._pendingClientX-this._resizeOriginClientX,i=this._pendingClientY-this._resizeOriginClientY,a=this._resizeOriginX+this._resizeOriginW,o=this._resizeOriginY+this._resizeOriginH,s=e.source.getViewportSize(),c=s.width-this._resizeOriginX,l=a,u=s.height-this._resizeOriginY,d=o;switch(this.setAutoCommitStyle(!1),n.getDirection()){case F.NORTHWEST:this.setWidth(Math.min(this._resizeOriginW-r,l)),this.setHeight(Math.min(this._resizeOriginH-i,d)),this.setX(a-this.getWidth()),this.setY(o-this.getHeight());break;case F.NORTH:this.setHeight(Math.min(this._resizeOriginH-i,d)),this.setY(o-this.getHeight());break;case F.NORTHEAST:this.setWidth(Math.min(this._resizeOriginW+r,c)),this.setHeight(Math.min(this._resizeOriginH-i,d)),this.setY(o-this.getHeight());break;case F.EAST:this.setWidth(Math.min(this._resizeOriginW+r,c));break;case F.SOUTHEAST:this.setWidth(Math.min(this._resizeOriginW+r,c)),this.setHeight(Math.min(this._resizeOriginH+i,u));break;case F.SOUTH:this.setHeight(Math.min(this._resizeOriginH+i,u));break;case F.SOUTHWEST:this.setWidth(Math.min(this._resizeOriginW-r,l)),this.setHeight(Math.min(this._resizeOriginH+i,u)),this.setX(a-this.getWidth());break;case F.WEST:this.setWidth(Math.min(this._resizeOriginW-r,l)),this.setX(a-this.getWidth())}this.doLayout(),this.setAutoCommitStyle(!0)}viewportPositionBounds(){let t=this.getWidth(),n=e.source.getViewportSize(),r=n.width,i=n.height;if(this.isConstrainToViewport())return{minX:0,maxX:r-t,minY:0,maxY:i-this.getHeight()};let a=this.chromeHeight()||U;return{minX:H-t,maxX:r-H,minY:0,maxY:i-a}}clampDragDelta(){let{minX:e,maxX:n,minY:r,maxY:i}=this.viewportPositionBounds(),a=Math.max(n,this._dragReachMinX),o=Math.min(e,this._dragReachMaxX),s=Math.max(i,this._dragReachMinY),c=Math.min(r,this._dragReachMaxY),l=this._dragStartLeft+this._dragDX,u=this._dragStartTop+this._dragDY,d=t.clamp(l,o,a),f=t.clamp(u,c,s);this._dragReachMinX=Math.min(this._dragReachMinX,d),this._dragReachMaxX=Math.max(this._dragReachMaxX,d),this._dragReachMinY=Math.min(this._dragReachMinY,f),this._dragReachMaxY=Math.max(this._dragReachMaxY,f),this._dragDX=d-this._dragStartLeft,this._dragDY=f-this._dragStartTop}clampPositionToViewport(){let{minX:e,maxX:t,minY:n,maxY:r}=this.viewportPositionBounds();return this.setX(Math.max(Math.min(this.getX(),t),e)),this.setY(Math.max(Math.min(this.getY(),r),n)),this}onDrag(e){return this._dragDX=e.clientX-this._dragOriginClientX,this._dragDY=e.clientY-this._dragOriginClientY,this.clampDragDelta(),this.setTranslate(this._dragDX,this._dragDY),{stop:!0,prevent:!0}}onMouseUp(){return this.setX(this._dragStartLeft+this._dragDX),this.setY(this._dragStartTop+this._dragDY),this.setTranslate(0,0),this.setWillChange(null),r.removeViewportListener(this,`mouseup`,this._boundOnMouseUp),r.removeViewportListener(this,`mousemove`,this._boundOnDrag),!0}doLayout(){super.doLayout();let e=this.getBorderSize(),t=this.getInsets(),n=(Number(e.left)||0)+(Number(e.right)||0)+t.getLeft(),r=(Number(e.top)||0)+(Number(e.bottom)||0)+t.getTop(),i=this.getSize();if(!i)throw Error(`Component doesn't seem to be rendered.`);let a=this.getInnerSize();if(!a)throw Error(`Component doesn't seem to be rendered.`);return this._borderComponents.west.setAutoCommitStyle(!1),this._borderComponents.northwest.setAutoCommitStyle(!1),this._borderComponents.north.setAutoCommitStyle(!1),this._borderComponents.northeast.setAutoCommitStyle(!1),this._borderComponents.east.setAutoCommitStyle(!1),this._borderComponents.southeast.setAutoCommitStyle(!1),this._borderComponents.south.setAutoCommitStyle(!1),this._borderComponents.southwest.setAutoCommitStyle(!1),this._borderComponents.west.setX(0),this._borderComponents.west.setY(t.getTop()),this._borderComponents.west.setWidth(t.getLeft()),this._borderComponents.west.setHeight(a.height),this._borderComponents.northwest.setX(0),this._borderComponents.northwest.setY(0),this._borderComponents.northwest.setWidth(t.getLeft()),this._borderComponents.northwest.setHeight(t.getTop()),this._borderComponents.north.setX(t.getLeft()),this._borderComponents.north.setY(0),this._borderComponents.north.setWidth(a.width),this._borderComponents.north.setHeight(t.getTop()),this._borderComponents.northeast.setX(i.width-n),this._borderComponents.northeast.setY(0),this._borderComponents.northeast.setWidth(t.getRight()),this._borderComponents.northeast.setHeight(t.getTop()),this._borderComponents.east.setX(i.width-n),this._borderComponents.east.setY(t.getTop()),this._borderComponents.east.setWidth(t.getRight()),this._borderComponents.east.setHeight(a.height),this._borderComponents.southeast.setX(i.width-n),this._borderComponents.southeast.setY(i.height-r),this._borderComponents.southeast.setWidth(t.getRight()),this._borderComponents.southeast.setHeight(t.getBottom()),this._borderComponents.south.setX(t.getLeft()),this._borderComponents.south.setY(i.height-r),this._borderComponents.south.setWidth(a.width),this._borderComponents.south.setHeight(t.getRight()),this._borderComponents.southwest.setX(0),this._borderComponents.southwest.setY(i.height-r),this._borderComponents.southwest.setWidth(t.getLeft()),this._borderComponents.southwest.setHeight(t.getBottom()),this._borderComponents.west.setAutoCommitStyle(!0),this._borderComponents.northwest.setAutoCommitStyle(!0),this._borderComponents.north.setAutoCommitStyle(!0),this._borderComponents.northeast.setAutoCommitStyle(!0),this._borderComponents.east.setAutoCommitStyle(!0),this._borderComponents.southeast.setAutoCommitStyle(!0),this._borderComponents.south.setAutoCommitStyle(!0),this._borderComponents.southwest.setAutoCommitStyle(!0),this}render(){let t=super.render();return e.sink.appendChild(t,this._borderComponents.west.getElement(!0)),e.sink.appendChild(t,this._borderComponents.northwest.getElement(!0)),e.sink.appendChild(t,this._borderComponents.north.getElement(!0)),e.sink.appendChild(t,this._borderComponents.northeast.getElement(!0)),e.sink.appendChild(t,this._borderComponents.east.getElement(!0)),e.sink.appendChild(t,this._borderComponents.southeast.getElement(!0)),e.sink.appendChild(t,this._borderComponents.south.getElement(!0)),e.sink.appendChild(t,this._borderComponents.southwest.getElement(!0)),t}currentRect(){return{x:this.getX(),y:this.getY(),width:this.getWidth(),height:this.getHeight()}}findBodyHost(){let e=this.getComponents();for(let t of e)if(!this.isChromeComponent(t))return t;return null}setBodyHostDisplayed(e){this._bodyHost||=this.findBodyHost(),this._bodyHost&&this._bodyHost.setDisplayed(e)}computeMaximizeRect(){if(this.getMaximizeBounds()===`parent`){let t=this.getElement(),n=t?e.source.getParentElement(t):null;if(n&&n!==e.source.getDocumentElement()){let t=e.source.getElementRect(n);return{x:0,y:0,width:t.width,height:t.height}}}let t=e.source.getViewportSize();return{x:0,y:0,width:t.width,height:t.height}}computeDockRect(){let t=this.getMinDockWidth(),n=this.computeDockSlotIndex(),r=this.chromeHeight()||U;return{x:n*(t+V),y:e.source.getViewportSize().height-r,width:t,height:r}}railGenieTransform(){let t=this._rail,n=t.getThickness(),r=this.currentRect(),i=Math.min(.5,n/Math.max(r.width,1)),a=t.getEdge(),o=a===O.EAST||a===O.WEST,s=t.handleMainAxisOffset(this),c=t.handleMainAxisExtent(this),l=(o?r.height:r.width)*i,u=c>0?s+(c-l)/2:s,d=0,f=0;switch(a){case O.EAST:d=e.source.getViewportSize().width-n,f=u;break;case O.WEST:f=u;break;case O.SOUTH:d=u,f=e.source.getViewportSize().height-n;break;case O.NORTH:d=u;break;default:f=u}return`translate(${d-r.x}px, ${f-r.y}px) scale(${i})`}animateRailCollapse(e){let t=this.getElement();if(!t){e();return}this._railCollapseAnimation?.cancel(),this._railCollapseAnimation=u.play(t,{from:{transformOrigin:`0 0`,transform:`translate(0, 0) scale(1)`,opacity:`1`},to:{transform:this.railGenieTransform(),opacity:`0`},durationMs:B,properties:[`transform`,`opacity`],onComplete:e})}animateRailExpand(){let e=this.getElement();e&&(this._railExpandAnimation?.cancel(),this._railExpandAnimation=u.play(e,{from:{transformOrigin:`0 0`,transform:this.railGenieTransform(),opacity:`0`},to:{transform:`translate(0, 0) scale(1)`,opacity:`1`},durationMs:B,properties:[`transform`,`opacity`]}))}getMinDockWidth(){let t=e.source.getThemeVar(`--ts-ui-window-min-dock-width`);if(t){let e=parseFloat(t);if(!isNaN(e)&&e>0)return e}return me}computeDockSlotIndex(){let e=0;for(let t of AbstractWindow.openWindows){if(t===this)return e;t.getWindowState()===`minimized`&&e++}return e}static relayoutMinimizedStack(){let t=0;for(let n of AbstractWindow.openWindows){if(n.getWindowState()!==`minimized`)continue;let r=n.getMinDockWidth(),i=n.chromeHeight()||U,a=t*(r+V),o=e.source.getViewportSize().height-i;n.setAutoCommitStyle(!1),n.setX(a),n.setY(o),n.setWidth(r),n.setHeight(i),n.doLayout(),n.setAutoCommitStyle(!0),t++}}animateRect(e,t){this._stateAnimHandle?.cancel(),this._stateAnimHandle=null;let commit=e=>{this.setAutoCommitStyle(!1),this.setX(e.x),this.setY(e.y),this.setWidth(e.width),this.setHeight(e.height),this.doLayout(),this.setAutoCommitStyle(!0)};this._stateAnimHandle=u.tween({from:this.currentRect(),to:e,durationMs:B,onStep:commit,onComplete:()=>{this._stateAnimHandle=null,t?.()}})}attachViewportResizeListener(){this._viewportResizeBound||=(r.addViewportListener(this,`resize`,this._boundOnViewportResize),!0)}detachViewportResizeListener(){this._viewportResizeBound&&=(r.removeViewportListener(this,`resize`,this._boundOnViewportResize),!1)}onViewportResize(){if(this.getWindowState()!==`maximized`)return;let e=this.computeMaximizeRect();this.setAutoCommitStyle(!1),this.setX(e.x),this.setY(e.y),this.setWidth(e.width),this.setHeight(e.height),this.doLayout(),this.setAutoCommitStyle(!0),AbstractWindow.relayoutMinimizedStack()}attachSnapKeyboardListeners(){this._snapKeysAttached||=(r.addViewportListener(this,`keydown`,this._boundOnSnapKeyDown),r.addViewportListener(this,`keyup`,this._boundOnSnapKeyUp),r.addViewportListener(this,`blur`,this._boundOnSnapBlur),!0)}detachSnapKeyboardListeners(){this._snapKeysAttached&&=(r.removeViewportListener(this,`keydown`,this._boundOnSnapKeyDown),r.removeViewportListener(this,`keyup`,this._boundOnSnapKeyUp),r.removeViewportListener(this,`blur`,this._boundOnSnapBlur),!1)}attachSnapMouseListeners(){this._snapMoveAttached||=(r.addViewportListener(this,`mousemove`,this._boundOnSnapMouseMove),r.addViewportListener(this,`mousedown`,this._boundOnSnapMouseDown),!0)}detachSnapMouseListeners(){this._snapMoveAttached&&=(r.removeViewportListener(this,`mousemove`,this._boundOnSnapMouseMove),r.removeViewportListener(this,`mousedown`,this._boundOnSnapMouseDown),!1)}clearSnapTargetBorder(){this._snapTargetBorder&&=(this._snapTargetBorder.setSnapTarget(!1),null)}clearSnapState(){this._snapEnabled=!1,this.detachSnapMouseListeners(),this.clearSnapTargetBorder()}onSnapKeyDown(e){this.isSnapResizeEnabled()&&this.getWindowState()===`normal`&&this.modifierMatches(e)&&(this._snapEnabled||(this._snapEnabled=!0,this.attachSnapMouseListeners()))}onSnapKeyUp(e){this._snapEnabled&&(this.modifierStillHeld(e)||this.clearSnapState())}modifierMatches(e){switch(this.getSnapModifier()){case`ctrl`:return e.ctrlKey;case`meta`:return e.metaKey;case`alt`:return e.altKey;case`shift`:return e.shiftKey}}modifierStillHeld(e){return this.modifierMatches(e)}onSnapMouseMove(e){if(!this._snapEnabled)return;let t=this.pickSnapBorder(e.clientX,e.clientY);t!==this._snapTargetBorder&&(this._snapTargetBorder&&this._snapTargetBorder.setSnapTarget(!1),this._snapTargetBorder=t,t&&t.setSnapTarget(!0))}pickSnapBorder(t,n){let r=[this._borderComponents.northwest,this._borderComponents.northeast,this._borderComponents.southeast,this._borderComponents.southwest,this._borderComponents.north,this._borderComponents.east,this._borderComponents.south,this._borderComponents.west],i=null,a=this.getSnapThreshold();for(let o of r){let r=o.getElement();if(!r)continue;let s=e.source.getElementRect(r),c=Math.max(s.left-t,0,t-s.right),l=Math.max(s.top-n,0,n-s.bottom),u=Math.hypot(c,l);u<=a&&(i=o,a=u)}return i}onSnapMouseDown(t){let n=this._snapTargetBorder;if(!n)return;let r=n.getElement();if(r&&e.source.isNode(t.target)&&e.source.contains(r,e.source.intern(t.target))){this._snapTargetBorder=null;return}return n.onDragStart(t),this._snapTargetBorder=null,!0}},ge=[{suffix:``,styles:{background:`var(--ts-ui-window-control-bg)`,border:`var(--ts-ui-window-control-border)`,boxShadow:`var(--ts-ui-window-control-shadow)`}},{suffix:`:hover:not(.pressed)`,styles:{background:`var(--ts-ui-window-control-hover-bg)`}},{suffix:`.pressed`,styles:{background:`var(--ts-ui-window-control-active-bg)`}}],_e=[{suffix:``,styles:{background:`transparent`,border:`1px solid transparent`,boxShadow:`none`}}];function createWindowControlButton(e){return new j({glyph:e,chromeless:!0,styleRules:ge,insets:new n(2,2,2,2)})}function createWindowLeadGlyphButton(e){let t=new j({glyph:e,chromeless:!0,styleRules:_e,insets:new n(2,2,2,2)});return t.setPointerEvents(`none`),t}function setWindowControlsActive(e,t){let n=t?`var(--ts-ui-window-control-bg)`:`transparent`;for(let t of e)t.setBackground(n)}h.register(re,ie,ae,oe);var WindowHeader=class extends ne{_exitButton;_minimizeButton;_maximizeButton;_trailingRow;_activeBackground;_titleGlyph=null;_titleRow;_closeable=!0;_minimizable=!0;_maximizable=!0;constructor(e,t){super(e),this._activeBackground=`var(--ts-ui-window-header-bg, #eee)`,this.setBackgroundColor(this._activeBackground),this.setInsets(new n(0,4,0,4));let r=this.getText();this.removeComponent(r),this._titleRow=new l,this._titleRow.setLayoutManager(new S({spacing:8})),this._titleRow.setInsets(new n(0,0,0,5)),this._titleRow.setPointerEvents(`none`),this._titleRow.addComponent(r);let i=new l;i.setLayoutManager(new b({fill:o.HORIZONTAL})),i.setPointerEvents(`none`),i.addComponent(this._titleRow),this.addComponent(i,{placement:O.WEST,anchor:s.WEST,fill:o.HORIZONTAL}),this._minimizeButton=createWindowControlButton(`window-minimize`),this._maximizeButton=createWindowControlButton(`window-maximize`),this._exitButton=createWindowControlButton(`xmark`);for(let e of[this._minimizeButton,this._maximizeButton,this._exitButton])e.setInsets(new n(0,4,0,4));this._trailingRow=new l,this._trailingRow.setLayoutManager(new S({spacing:0,stretching:!0})),this._trailingRow.setInsets(new n(0,0,0,0)),this._trailingRow.addComponent(this._minimizeButton),this._trailingRow.addComponent(this._maximizeButton),this._trailingRow.addComponent(this._exitButton),this.addComponent(this._trailingRow,{placement:O.EAST}),t?.glyph===void 0&&this.setGlyph(`window-maximize`),t&&this.applyOptions(t)}updatePreferredSize(){let e=this.getText().getPreferredSize(),t=e?e.height:20;if(this.setPreferredSize({width:100,height:t+8}),this._titleGlyph){let e=this.resolveTitleGlyphInk();this._titleGlyph.setPreferredSize({width:e,height:e})}}resolveTitleGlyphInk(){return c.getResolvedScale().titleGlyph}applyOptions(e){return super.applyOptions(e),e.closeable!==void 0&&this.setCloseable(e.closeable),e.minimizable!==void 0&&this.setMinimizable(e.minimizable),e.maximizable!==void 0&&this.setMaximizable(e.maximizable),e.glyph!==void 0&&this.setGlyph(e.glyph),this}setGlyph(e){this._titleGlyph&&=(this._titleRow.removeComponent(this._titleGlyph),null);let t=new h(e),n=this.resolveTitleGlyphInk();return t.setPreferredSize({width:n,height:n}),t.setPointerEvents(`none`),this._titleGlyph=t,this._titleRow.insertComponent(t,0),this}clearGlyph(){return this._titleGlyph&&=(this._titleRow.removeComponent(this._titleGlyph),null),this}getGlyph(){return this._titleGlyph}setActive(e){return this.setBackgroundColor(e?this._activeBackground:`var(--ts-ui-gutter-bg, rgb(200, 200, 200))`),setWindowControlsActive([this._minimizeButton,this._maximizeButton,this._exitButton],e),this}setCloseable(e){return this._closeable=e,this._exitButton.setEnabled(e),this}isCloseable(){return this._closeable}setMinimizable(e){return this._minimizable=e,this._minimizeButton.setVisible(e),this}isMinimizable(){return this._minimizable}setMaximizable(e){return this._maximizable=e,this._maximizeButton.setVisible(e),this}isMaximizable(){return this._maximizable}setMaximizeButtonGlyph(e){return this._maximizeButton.setGlyph(e),this}setMinimizeButtonGlyph(e){return this._minimizeButton.setGlyph(e),this}addExitButtonListener(e){return this._exitButton.on(`action`,e),this}addMinimizeButtonListener(e){return this._minimizeButton.on(`action`,e),this}addMaximizeButtonListener(e){return this._maximizeButton.on(`action`,e),this}addHeaderDoubleClickListener(e){return r.addSubtreeListener(this,`dblclick`,e),this}getMinContentWidth(e=100){let t=this._titleGlyph?.getPreferredSize()?.width??0,n=this._trailingRow.getPreferredSize()?.width??0;return t+e+n}getMinimizeButtonElement(){return this._minimizeButton.getElement()}getMaximizeButtonElement(){return this._maximizeButton.getElement()}getExitButtonElement(){return this._exitButton.getElement()}},K=a(WindowHeader),Window=class extends G{_header;_headerDragShift=!1;_headerDragComponentId=``;_boundCaptureHeaderShift=e=>this.captureHeaderShift(e);_boundOnHeaderMouseDown=e=>this.onHeaderMouseDown(e);constructor(e,t){super(t),this.setLayoutManager(new A);let n=this._options.headerText??e??`Window`;this._header=new K(n),this.addComponent(this._header,{placement:O.NORTH,ignoreParentInsets:!0}),this._header.addExitButtonListener(()=>this.onExitAction()),this._header.addMinimizeButtonListener(()=>this.toggleMinimize()),this._header.addMaximizeButtonListener(()=>this.toggleMaximize()),this._header.addHeaderDoubleClickListener(e=>this.onHeaderDoubleClick(e)),this._options.glyph!==void 0&&this._header.setGlyph(this._options.glyph),this.initChrome(t)}getHeader(){return this._header}setHeaderText(e){if(!this._header)throw Error(`Window does not have a header.`);return this._header.getText().setText(e),this}setGlyph(e){return this._options.glyph=e,this._header.setGlyph(e),this}wireMoveTrigger(){r.addSubtreeListener(this._header,`mousedown`,this._boundOnHeaderMouseDown),r.addSubtreeListener(this._header,`mousedown`,this._boundCaptureHeaderShift),D.makeDragSource(this._header,{dragData:()=>this.buildHeaderDragData(),onDragStart:()=>this.onHeaderDragStart(),onDragEnd:(e,t)=>this.onHeaderDragEnd(t)})}reflectCloseable(e){this._header.setCloseable(e)}reflectMinimizable(e){this._header.setMinimizable(e)}reflectMaximizable(e){this._header.setMaximizable(e)}reflectMaximizeState(e){this._header.setMaximizeButtonGlyph(e===`maximized`?`window-restore`:`window-maximize`),this._header.setMinimizeButtonGlyph(e===`minimized`?`window-restore`:`window-minimize`)}paintActive(e){this._header.setActive(e)}getTitle(){return String(this._header.getText().getText())}minContentWidthSeed(){return this._header.getMinContentWidth()}chromeHeight(){return this._header.getHeight()}addContent(e){this.addComponent(e,{placement:O.CENTER})}isChromeComponent(e){return e===this._header}onHeaderMouseDown(t){let n=t.target===null?null:e.source.intern(t.target);n&&this.targetIsInTrailingButton(n)||this.onMouseDown(t)}onHeaderDoubleClick(t){let n=t.target===null?null:e.source.intern(t.target);if(!(n&&this.targetIsInTrailingButton(n))){if(this.getWindowState()===`minimized`){this.setWindowState(this._preMinimizeState);return}this.isMaximizable()&&this.toggleMaximize()}}targetIsInTrailingButton(t){let n=[this._header.getMinimizeButtonElement(),this._header.getMaximizeButtonElement(),this._header.getExitButtonElement()];for(let r of n)if(r&&e.source.contains(r,t))return!0;return!1}captureHeaderShift(e){this._headerDragShift=e.shiftKey}buildHeaderDragData(){let e=this.findBodyHost();return{tabDrag:!0,sourceTabId:this.getId(),componentId:e?e.getId():``,label:String(this._header.getText().getText())}}onHeaderDragStart(){let e=this._headerDragShift;this._headerDragShift=!1;let t=this.findBodyHost();if(!e||!t)return!1;this._headerDragComponentId=t.getId(),T.set(t.getId(),t)}onHeaderDragEnd(e){T.delete(this._headerDragComponentId),this._headerDragComponentId=``,e&&this.findBodyHost()===null&&this.requestClose()}},q=a(Window);h.register(ce,M,le,ue);var ve=24,ye=80,be={backgroundColor:`transparent`},ScrollStrip=class extends g{_stepProvider=null;_clip=new g;_leadArrow=null;_trailArrow=null;constructor(e,t){super(e,{...be,...t??{}}),this._orientation??=`horizontal`,this._scrollable??=!0,this._arrowBackground??=null,this._arrowStep??=ye,this.setScrollbarStyle(`native`),this.clearInsets(),this._clip.setOverflow(`hidden`),this._clip.setBackgroundColor(`transparent`),this._clip.clearInsets(),this.installBox(this._orientation)}init(t){super.init(t);let n=t??this.getElement(!0);return e.sink.appendChild(n,this._clip.getElement(!0)),this}applyOptions(e){return super.applyOptions(e),e.orientation!==void 0&&this.setOrientation(e.orientation),e.scrollable!==void 0&&this.setScrollable(e.scrollable),e.arrowBackground!==void 0&&this.setArrowBackground(e.arrowBackground),e.arrowStep!==void 0&&this.setArrowStep(e.arrowStep),this}installBox(e){if(!this._clip)return;let t=e===`vertical`?new x({mode:`equal`,spacing:0,stretching:!0}):new S({mode:`equal`,spacing:0,stretching:!0});this._clip.setLayoutManager(t)}isVertical(){return this._orientation===`vertical`}setOrientation(e){return this._orientation===e?this:(this._orientation=e,this.installBox(e),this)}getOrientation(){return this._orientation}setScrollable(e){return this._scrollable=e,this}isScrollable(){return this._scrollable}setArrowBackground(e){return this._arrowBackground=e,this._leadArrow?.setBackgroundColor(e),this._trailArrow?.setBackgroundColor(e),this}setArrowStep(e){return this._arrowStep=e,this}setStepProvider(e){return this._stepProvider=e,this}resolveStep(){return this._stepProvider?this._stepProvider():this._arrowStep}addItem(e){return this._clip.addComponent(e),this}removeItem(e){return this._clip.removeComponent(e),this}moveItem(e,t){return this._clip.moveComponent(e,t),this}getItems(){return this._clip.getComponents()}getContentBox(){return this._clip.getLayoutManager()}layoutItems(){return this._clip.doLayout(),this._clip.syncScrollOffsets(),this}getClipElement(e){return this._clip.getElement(e)??null}arrowReserve(e,t){return this._scrollable&&e>t+1?ve:0}ensureArrows(){if(this._leadArrow&&this._trailArrow)return;let t=new j({glyph:`angle-left`}),n=new j({glyph:`angle-right`});for(let e of[t,n])this._arrowBackground!==null&&e.setBackgroundColor(this._arrowBackground),e.setBackgroundImage(`none`),e.clearBorder(),e.clearShadow(),e.setBorderRadius(`0`),e.clearInsets(),e.setZIndex(3);t.on(`action`,this.leadClicked),n.on(`action`,this.trailClicked);let r=this.getElement(!0);e.sink.appendChild(r,t.getElement(!0)),e.sink.appendChild(r,n.getElement(!0)),this._leadArrow=t,this._trailArrow=n}layoutContent(e,t){let r=this.getContentBounds()??{x:0,y:0,width:this.getWidth()||0,height:this.getHeight()||0},i=this.isVertical(),a=i?r.height:r.width,o=i?r.width:r.height,s=a-2*e;return i?(this._clip.setX(r.x),this._clip.setY(r.y+e),this._clip.setWidth(o),this._clip.setHeight(s),this._clip.setInsets(new n(t,0,0,0))):(this._clip.setX(r.x+e),this._clip.setY(r.y),this._clip.setWidth(s),this._clip.setHeight(o),this._clip.setInsets(new n(0,0,0,t))),this.layoutItems(),this.layoutArrows(r,e),this}layoutArrows(e,t){if(!this._scrollable||t<=0){this.hideArrows();return}this.ensureArrows();let n=this._leadArrow,r=this._trailArrow,i=this.isVertical(),a=i?e.height:e.width,o=i?e.width:e.height;n.setGlyph(i?`angle-up`:`angle-left`),r.setGlyph(i?`angle-down`:`angle-right`),n.setVisible(!0),r.setVisible(!0),this.refreshArrows();let s=(i?e.y:e.x)+a-t;for(let a of[n,r])i?(a.setMinSize({width:0,height:t}),a.setMaxSize({width:Number.MAX_VALUE,height:t}),a.setX(e.x),a.setWidth(o),a.setHeight(t)):(a.setMinSize({width:t,height:0}),a.setMaxSize({width:t,height:Number.MAX_VALUE}),a.setY(e.y),a.setHeight(o),a.setWidth(t));i?(n.setY(e.y),r.setY(s)):(n.setX(e.x),r.setX(s))}hideArrows(){this._leadArrow?.setVisible(!1),this._trailArrow?.setVisible(!1)}mainScroll(){return this.isVertical()?this._clip.getScrollTop():this._clip.getScrollLeft()}mainScrollMax(){return this.isVertical()?this._clip.getMaxScrollTop():this._clip.getMaxScrollLeft()}setMainScroll(e){this.isVertical()?this._clip.setScrollTop(e):this._clip.setScrollLeft(e)}resetScroll(){return this._clip.setScrollLeft(0),this._clip.setScrollTop(0),this}refreshArrows(){let e=this._leadArrow,t=this._trailArrow;if(!e||!t)return;let n=this.mainScroll();e.setEnabled(n>0),t.setEnabled(n<this.mainScrollMax()-1)}scrollBy(e){this.setMainScroll(this.mainScroll()+e),this.refreshArrows()}leadClicked=()=>{this.scrollBy(-this.resolveStep())};trailClicked=()=>{this.scrollBy(this.resolveStep())};revealItem(t){let n=this._clip.getElement();if(!n)return;let r=this.isVertical(),i=e.source.getElementRect(n),a=e.source.getElementRect(t),o=r?i.top:i.left,s=r?i.bottom:i.right,c=r?a.top:a.left,l=r?a.bottom:a.right,u=0;c<o?u=c-o:l>s&&(u=l-s),u!==0&&(this.setMainScroll(this.mainScroll()+u),this.refreshArrows())}containsArrow(t){if(!e.source.isNode(t))return!1;let n=e.source.intern(t);for(let t of[this._leadArrow,this._trailArrow]){let r=t?.getElement()??null;if(r&&e.source.contains(r,n))return!0}return!1}destructor(){this._clip.dispose(),this._leadArrow?.dispose(),this._trailArrow?.dispose(),super.destructor()}},J=a(ScrollStrip);function computeBulkCloseIds(e,t,n,r){return e.filter((e,n)=>{switch(r){case`all`:return!0;case`others`:return n!==t;case`right`:return n>t;case`left`:return n<t}}).filter(n)}var Y=120,X=30,xe=24,Se=4,Ce=80,TabIndicator=class extends l{_mainPos=0;_mainExtent=0;_side=`north`;constructor(){super(),this.setBackgroundColor(`var(--ts-ui-tab-indicator-color, #1a73e8)`),this.setTransition(`transform ${Y}ms ease, width ${Y}ms ease, height ${Y}ms ease`),this.setPointerEvents(`none`),this.setZIndex(2)}slideTo(e,t,n){return this._mainPos=e,this._mainExtent=t,this._side=n,this.getElement()&&this.applyBarGeometry(),this}applyStyle(e){return super.applyStyle(e),this.applyBarGeometry(),this}applyBarGeometry(){let e=`var(--ts-ui-tab-indicator-thickness, 2px)`;return this._side===`west`||this._side===`east`?(this.setTranslate(0,this._mainPos),this.setElementStyles({top:`0`,bottom:`auto`,left:this._side===`east`?`0`:`auto`,right:this._side===`west`?`0`:`auto`,width:e,height:this._mainExtent+`px`})):(this.setTranslate(this._mainPos,0),this.setElementStyles({left:`0`,right:`auto`,top:this._side===`south`?`0`:`auto`,bottom:this._side===`north`?`0`:`auto`,width:this._mainExtent+`px`,height:e}))}},we=class TabReorderBar extends l{static THICKNESS=2;constructor(){super(),this.setBackgroundColor(`var(--ts-ui-drag-reorder-color, #1a73e8)`),this.setPointerEvents(`none`),this.setZIndex(2),this.setVisible(!1)}placeAt(e,t,n){return n?(this.setX(0),this.setY(e),this.setWidth(t),this.setHeight(TabReorderBar.THICKNESS)):(this.setX(e),this.setY(0),this.setWidth(TabReorderBar.THICKNESS),this.setHeight(t)),this.setVisible(!0),this}hide(){return this.setVisible(!1),this}},TabDropTint=class extends l{constructor(){super(),this.setBackgroundColor(`var(--ts-ui-drag-dropzone-bg)`),this.setPointerEvents(`none`),this.setZIndex(1),this.setVisible(!1)}showOver(e){return this.setX(0),this.setY(0),this.setWidth(e.getWidth()),this.setHeight(e.getHeight()),this.setVisible(!0),this}hide(){return this.setVisible(!1),this}},Te={backgroundColor:`var(--ts-ui-tab-toolbar-bg, #eee)`,preferredSize:{width:0,height:X}},TabBar=class extends m{_tabClip=new J({scrollable:!1});_entries=[];_buttonGroup=new P;_rovingTabIndex=new _({preventScroll:!0});_activeId=null;_listeners=new d;_widthMode=`equal`;_maxWidth=null;_fixedWidth=120;_underBorderFullWidth=!0;_underBorderFromTheme=!0;_indicator=new TabIndicator;_side=`north`;_align=`start`;_orientation=`horizontal`;_scrollable=!1;_compact=!1;_textAlign=`center`;_contextMenu=new fe;_tools=[];_toolMenuItems=new Map;_toolGroup=new g;_leadGroup=new g;_leadWidget=null;_scrollToSelected=!1;_reorderable=!1;_reorderBar=new we;_dropTint=new TabDropTint;_dndTeardowns=[];_dragMouseTarget=null;_moveTriggerTeardown=null;_dragShiftHeld=!1;_dragInsertIndex=-1;_springRaiseTimer=null;constructor(e,t){super(e,{...Te,...t??{}}),this.setLayoutManager(new S({mode:`equal`,spacing:0,stretching:!0})),this._underBorderFullWidth=c.getTheme().tab.underBorderFullWidth,this.applyUnderBorder(e),this.getAria().setRole(`tablist`),this._tabClip.setArrowBackground(`var(--ts-ui-tab-toolbar-bg, #eee)`),this._tabClip.setStepProvider(()=>this.scrollStepExtent()),this._toolGroup.setLayoutManager(new S({spacing:0,stretching:!0})),this._toolGroup.setBackgroundColor(`var(--ts-ui-tab-toolbar-bg, #eee)`),this._toolGroup.clearInsets(),this._toolGroup.setZIndex(1),this._leadGroup.setLayoutManager(new S({spacing:0,stretching:!0})),this._leadGroup.setBackgroundColor(`transparent`),this._leadGroup.clearInsets(),this._leadGroup.setZIndex(1),this._leadGroup.setPointerEvents(`none`),this.subscribeTheme(()=>{this._underBorderFromTheme&&(this._underBorderFullWidth=c.getTheme().tab.underBorderFullWidth,this.applyUnderBorder())}),this.dispatchBarOptions(e)}dispatchBarOptions(e){if(e){if(e.widthMode!==void 0&&this.setWidthMode(e.widthMode),e.maxWidth!==void 0&&this.setMaxWidth(e.maxWidth),e.fixedWidth!==void 0&&this.setFixedWidth(e.fixedWidth),e.underBorderFullWidth!==void 0&&this.setUnderBorderFullWidth(e.underBorderFullWidth),e.side!==void 0&&this.setSide(e.side),e.align!==void 0&&this.setAlign(e.align),e.orientation!==void 0&&this.setOrientation(e.orientation),e.scrollable!==void 0&&this.setScrollable(e.scrollable),e.compact!==void 0&&this.setCompact(e.compact),e.reorderable!==void 0&&this.setReorderable(e.reorderable),e.textAlign!==void 0&&this.setTextAlign(e.textAlign),e.tools!==void 0)for(let t of e.tools)t instanceof l,this.addTool(t);this.applyListeners(e?.listeners)}}setBarSurfaceColor(e){return this.setBackgroundColor(e),this._toolGroup.setBackgroundColor(e),this._tabClip.setArrowBackground(e),this}init(t){super.init(t);let n=t??this.getElement(!0);e.sink.appendChild(n,this._tabClip.getElement(!0)),e.sink.appendChild(n,this._toolGroup.getElement(!0)),e.sink.appendChild(n,this._leadGroup.getElement(!0));let i=this._tabClip.getClipElement(!0);return e.sink.appendChild(i,this._indicator.getElement(!0)),e.sink.appendChild(i,this._dropTint.getElement(!0)),e.sink.appendChild(i,this._reorderBar.getElement(!0)),r.addSubtreeListener(this,`keydown`,this.onToolbarKeyDown),this._reorderable&&this.installTabDnD(),this}destructor(){this.teardownTabDnD(),this.clearSpringRaise(),this._moveTriggerTeardown?.(),this._moveTriggerTeardown=null,this._tabClip.dispose(),this._toolGroup.dispose(),this._leadGroup.dispose(),this._indicator.dispose(),this._dropTint.dispose(),this._reorderBar.dispose(),this._contextMenu.dispose(),super.destructor()}applyUnderBorder(e){if(e?.border!==void 0){this.setBorder(e.border);return}if(!this._underBorderFullWidth){this.clearBorder();return}let t=`1px solid var(--ts-ui-tab-toolbar-border, #e1e1e8)`;this.setBorder({borderTop:this._side===`south`?t:`none`,borderBottom:this._side===`north`?t:`none`,borderLeft:this._side===`east`?t:`none`,borderRight:this._side===`west`?t:`none`})}setWidthMode(e){return this._widthMode=e,this.scheduleLayout(),this}getWidthMode(){return this._widthMode}setMaxWidth(e){return this._maxWidth=e,this.scheduleLayout(),this}getMaxWidth(){return this._maxWidth}setFixedWidth(e){return this._fixedWidth=e,this.scheduleLayout(),this}getFixedWidth(){return this._fixedWidth}setUnderBorderFullWidth(e){return this._underBorderFromTheme=!1,this._underBorderFullWidth=e,this.applyUnderBorder(),this.scheduleLayout(),this}isUnderBorderFullWidth(){return this._underBorderFullWidth}setSide(e){return this._side=e,this._tabClip.resetScroll(),this._scrollable&&(this._scrollToSelected=!0),this.applyUnderBorder(),this.scheduleLayout(),this}getSide(){return this._side}setAlign(e){return this._align=e,this.scheduleLayout(),this}getAlign(){return this._align}setOrientation(e){return this._orientation=e,this.scheduleLayout(),this}getOrientation(){return this._orientation}setTextAlign(e){return this._textAlign=e,this.scheduleLayout(),this}getTextAlign(){return this._textAlign}setScrollable(e){return e&&!this._scrollable&&(this._scrollToSelected=!0),this._scrollable=e,this._tabClip.setScrollable(e),this.scheduleLayout(),this}isScrollable(){return this._scrollable}setCompact(e){return this._compact=e,this._scrollable&&(this._scrollToSelected=!0),this.scheduleLayout(),this}isCompact(){return this._compact}setReorderable(e){return this._reorderable===e||(this._reorderable=e,!this.getElement())||(e?this.installTabDnD():this.teardownTabDnD()),this}isReorderable(){return this._reorderable}addTool(e){let t=e instanceof l?e:this.buildDescriptorTool(e);return this._tools.push(t),this._toolGroup.addComponent(t),this.scheduleLayout(),this}buildDescriptorTool(e){let t=new j({glyph:e.glyph});return t.setFlat(!0),y.attach(t,e.label),t.on(`action`,e.action),this._toolMenuItems.set(t,e),t}removeTool(e){let t=this._tools.indexOf(e);return t<0?this:(this._tools.splice(t,1),this._toolMenuItems.delete(e),this._toolGroup.removeComponent(e),this.scheduleLayout(),this)}setLeadingWidget(e){return this._leadWidget&&this._leadGroup.removeComponent(this._leadWidget),this._leadWidget=e,e&&this._leadGroup.addComponent(e),this.scheduleLayout(),this}getLeadingWidget(){return this._leadWidget}isBarChromeTarget(t){if(!e.source.isNode(t))return!1;let n=e.source.intern(t);for(let t of this._entries){let r=t.button.getElement();if(r&&e.source.contains(r,n))return!0}let r=this._toolGroup.getElement();return!!(r&&e.source.contains(r,n)||this._tabClip.containsArrow(t))}installMoveTrigger(e,t){this._moveTriggerTeardown?.(),this._moveTriggerTeardown=null;let onBarMouseDown=t=>{t.shiftKey||this.isBarChromeTarget(t.target)||e(t)};r.addSubtreeListener(this,`mousedown`,onBarMouseDown);let n=[()=>r.removeSubtreeListener(this,`mousedown`,onBarMouseDown)];if(t){let onBarDoubleClick=e=>{this.isBarChromeTarget(e.target)||t(e)};r.addSubtreeListener(this,`dblclick`,onBarDoubleClick),n.push(()=>r.removeSubtreeListener(this,`dblclick`,onBarDoubleClick))}return this._moveTriggerTeardown=()=>{for(let e of n)e()},this}getEntryIds(){return this._entries.map(e=>e.id)}getActiveEntryId(){return this._activeId}isEntryCloseable(e){return this.entryById(e)?.constraints?.closeable===!0}getEntryName(e){return this.entryById(e)?.name??``}setEntryContentId(e,t){let n=this.entryById(e);return n&&(n.contentId=t,n.button.getAria().setControls(t)),this}setEntryBusy(e,t){return this.entryById(e)?.button.setBusy(t),this}isEntryBusy(e){return this.entryById(e)?.button.isBusy()??!1}getEntryButtonId(e){return this.entryById(e)?.button.getId()??``}entryById(e){return this._entries.find(t=>t.id===e)??null}activeEntry(){return this._activeId===null?null:this.entryById(this._activeId)}createBarEntry(e,t,n){let i=new se(t,{glyph:n?.glyph??void 0,closeable:n?.closeable});i.setInsets(this.computeTabButtonInsets(n)),n?.tooltip&&y.attach(i,n.tooltip),i.on(`action`,()=>this.onTabPressed(i));let a=i.getCloseButton()??void 0,onContextMenu=e=>{this.openTabMenu(o,e.clientX,e.clientY)},o={id:e,button:i,closeButton:a,name:t,constraints:n,contextMenuListener:onContextMenu,contentId:``};a&&a.on(`action`,()=>this.emit(`tabclose`,e)),r.addSubtreeListener(i,`contextmenu`,{prevent:!0,handler:onContextMenu}),this._entries.push(o);let s=this._activeId===null;return s&&(i.setSelected(!0),this._activeId=e),this._buttonGroup.addButton(i),this._rovingTabIndex.add(i),this._tabClip.addItem(i),i.getAria().setRole(`tab`),i.getAria().setSelected(s),this._reorderable&&this.getElement()&&this._dndTeardowns.push(this.makeTabDragSource(o)),this}removeBarEntry(e){let t=this._entries.findIndex(t=>t.id===e);if(t<0)return this;let n=this._entries[t];return this._buttonGroup.removeButton(n.button),this._rovingTabIndex.remove(n.button),this._entries.splice(t,1),this._tabClip.removeItem(n.button),y.detach(n.button),this._activeId===e&&(this._activeId=null),n.button.dispose(),this}moveBarEntry(e,t){let n=this._entries.findIndex(t=>t.id===e);if(n<0)return this;let r=Math.max(0,Math.min(t,this._entries.length-1));if(r===n)return this;let i=this._entries.splice(n,1)[0];return this._entries.splice(r,0,i),this._tabClip.moveItem(i.button,r),this}setActiveEntry(e){let t=this._entries.findIndex(t=>t.id===e);return t<0?this:(this._entries.forEach(e=>e.button.setSelected(!1)),this._entries[t].button.setSelected(!0),this.onTabPressed(this._entries[t].button),this)}setActiveVisual(e){let t=this._entries.findIndex(t=>t.id===e);return t<0?this:(this._entries.forEach(e=>e.button.setSelected(!1)),this._entries[t].button.setSelected(!0),this._activeId=e,this)}openTabMenu(e,t,n){let r=this.activeEntry(),i=this.getEntryIds(),a=i.indexOf(e.id),closeable=e=>this.isEntryCloseable(e),o=this._entries.map(e=>({text:e.name,enabled:e!==r,action:()=>this.setActiveEntry(e.id)})),s=this._side===`west`||this._side===`east`,c=s?`Close all above`:`Close all to the left`,l=s?`Close all below`:`Close all to the right`,u=[{text:`Switch to`,submenu:{label:`Switch to`,items:o}},{separator:!0},{text:`Close`,enabled:e.constraints?.closeable===!0,action:()=>this.emit(`tabclose`,e.id)},this.bulkCloseItem(`Close others`,i,a,closeable,`others`),this.bulkCloseItem(c,i,a,closeable,`left`),this.bulkCloseItem(l,i,a,closeable,`right`),this.bulkCloseItem(`Close all`,i,a,closeable,`all`)],d=this._tools.filter(e=>this._toolMenuItems.has(e)).map(e=>{let t=this._toolMenuItems.get(e);return{text:t.label,glyph:t.glyph,action:t.action}});d.length>0&&(u.push({separator:!0}),u.push({text:`Tools`,submenu:{label:`Tools`,items:d}})),this._contextMenu.show(t,n,u)}bulkCloseItem(e,t,n,r,i){let a=computeBulkCloseIds(t,n,r,i);return{text:e,enabled:a.length>0,action:()=>{for(let e of a)this.emit(`tabclose`,e)}}}onTabPressed(e){let t=this._entries.findIndex(t=>t.button===e);t>=0&&(this._activeId=this._entries[t].id,this._rovingTabIndex.moveTo(t),this._scrollable&&(this._scrollToSelected=!0),this.emit(`tabpressed`,this._entries[t].id))}computeTabButtonInsets(e){let t=c.getResolvedScale(),r=this._compact?Math.round(t.tabButtonInset/2):t.tabButtonInset,i=e?.closeable?t.tabClose:0;return this.isRotatedText()?this._orientation===`vertical-ccw`?new n(i+r*2,r*2,r*2,r*2):new n(r*2,r*2,i+r*2,r*2):this.isVertical()?new n(r*2,i+r*2,r*2,r*2):new n(0,i+r*2,0,r*2)}computeToolButtonInsets(){let e=c.getResolvedScale().tabButtonInset,t=this._compact?Math.round(e/2):e;return this.isVertical()?new n(t*2,0,t*2,0):new n(0,t*2,0,t*2)}clampWrapperMain(e,t,n){this.isVertical()?(e.setMinSize({width:0,height:t}),e.setMaxSize({width:Number.MAX_VALUE,height:n})):(e.setMinSize({width:t,height:0}),e.setMaxSize({width:n,height:Number.MAX_VALUE}))}isRotatedText(){return this.isVertical()&&this._orientation!==`horizontal`}buttonMainExtent(e){let t=e.getPreferredSize();return t?this.isVertical()?t.height:t.width:0}buttonCrossExtent(e){let t=e.getPreferredSize();return t?this.isVertical()?t.width:t.height:0}stripThickness(){let e=this._compact?xe:X;if(!this.isVertical()){let t=e;for(let e of this._entries)t=Math.max(t,this.buttonCrossExtent(e.button)+this.stripChrome());return t}if(this._widthMode===`fixed`&&!this.isRotatedText())return Math.max(e,this._fixedWidth);let t=e;for(let e of this._entries)t=Math.max(t,this.buttonCrossExtent(e.button));let n=this._tools.length>0?this._toolGroup.getPreferredSize():null;return n&&(t=Math.max(t,n.width)),t}stripChrome(){let e=c.getResolvedScale().tabButtonInset;return(this._compact?Math.round(e/2):e)*2*2}tabModeExtent(e){switch(this._widthMode){case`fixed`:return this.isVertical()&&!this.isRotatedText()?0:this._fixedWidth;case`equal`:{let e=0;for(let t of this._entries)e=Math.max(e,this.buttonMainExtent(t.button));return Math.min(e,this._maxWidth??Number.MAX_VALUE)}case`content`:return Math.min(this.buttonMainExtent(e),this._maxWidth??Number.MAX_VALUE);default:return 0}}applyTabWidths(e){let t=this._tabClip.getContentBox();if(this._scrollable){t.setMode(`preferred`),t.setOverflowing(!this.isVertical(),this.isVertical());for(let e of this._entries){let t=this.tabModeExtent(e.button);if(t>0)this.clampWrapperMain(e.button,t,t);else{let t=this.isRotatedText()?this.buttonMainExtent(e.button):0;this.clampWrapperMain(e.button,t,Number.MAX_VALUE)}}return}if(t.setOverflowing(!1,!1),this._widthMode===`fill`){t.setMode(`equal`);for(let e of this._entries)this.clampWrapperMain(e.button,0,Number.MAX_VALUE);return}if(t.setMode(`preferred`),this._widthMode===`content`){let e=this._maxWidth??Number.MAX_VALUE;for(let t of this._entries)if(this.isRotatedText()){let n=Math.min(this.buttonMainExtent(t.button),e);this.clampWrapperMain(t.button,n,n)}else this.clampWrapperMain(t.button,0,e);return}let n=this._entries.length>0?this.tabModeExtent(this._entries[0].button):0;if(n<=0){for(let e of this._entries)this.clampWrapperMain(e.button,0,Number.MAX_VALUE);return}if(this._widthMode===`equal`&&this._entries.length>0&&n*this._entries.length>e){t.setMode(`equal`);for(let e of this._entries)this.clampWrapperMain(e.button,0,Number.MAX_VALUE);return}for(let e of this._entries)this.clampWrapperMain(e.button,n,n)}isVertical(){return this._side===`west`||this._side===`east`}syncToolbarOrientation(){let e=this.isVertical();this._tabClip.setOrientation(e?`vertical`:`horizontal`),this._toolGroup.getLayoutManager()instanceof x!==e&&this._toolGroup.setLayoutManager(e?new x({spacing:0,stretching:!0}):new S({spacing:0,stretching:!0})),this._leadGroup.getLayoutManager()instanceof x!==e&&this._leadGroup.setLayoutManager(e?new x({spacing:0,stretching:!0}):new S({spacing:0,stretching:!0}))}toolGroupMainExtent(){let e=this._toolGroup.getPreferredSize();return e?this.isVertical()?e.height:e.width:0}leadWidgetMainExtent(){if(!this._leadWidget)return 0;let e=this._leadGroup.getPreferredSize();return e?(this.isVertical()?e.height:e.width)+Se:0}predictTabsExtent(){let e=0;for(let t of this._entries)e+=this.predictedTabExtent(t.button);return e}predictedTabExtent(e){let t=this.tabModeExtent(e);return t>0?t:this.buttonMainExtent(e)}positionClipFrame(e,t,n,r,i,a){let o=this._align===`end`,s=t+(o?e:0),c=o?0:e,l=r-s-c;this.isVertical()?(this._tabClip.setX(i),this._tabClip.setY(s+a),this._tabClip.setWidth(n),this._tabClip.setHeight(l)):(this._tabClip.setX(s+a),this._tabClip.setY(i),this._tabClip.setWidth(l),this._tabClip.setHeight(n))}applyTabButtonStyles(){let e=this._orientation===`vertical-cw`?`sideways-rl`:this._orientation===`vertical-ccw`?`sideways-lr`:null;for(let t of this._entries)t.button.setInsets(this.computeTabButtonInsets(t.constraints)),this.isVertical()&&e?t.button.setWritingMode(e):t.button.clearWritingMode(),t.button.setTextAlign(this._textAlign);let t=this.computeToolButtonInsets();for(let e of this._tools)e.setInsets(t);this._leadWidget&&this._leadWidget.setInsets(t)}endAlignGap(e){return this._align!==`end`||this._widthMode===`fill`||this._entries.length===0?0:Math.max(0,e-this.predictTabsExtent())}positionToolGroup(e,t,n,r,i){if(this._tools.length===0||t<=0){this._toolGroup.setVisible(!1);return}this._toolGroup.setVisible(!0);let a=(this._align===`end`?0:e-t)+i;this.isVertical()?(this._toolGroup.setX(r),this._toolGroup.setY(a),this._toolGroup.setWidth(n),this._toolGroup.setHeight(t)):(this._toolGroup.setX(a),this._toolGroup.setY(r),this._toolGroup.setWidth(t),this._toolGroup.setHeight(n)),this._toolGroup.doLayout()}positionLeadGroup(e,t,n){let r=this._leadWidget?this._leadGroup.getPreferredSize():null,i=r?this.isVertical()?r.height:r.width:0;if(i<=0){this._leadGroup.setVisible(!1);return}this._leadGroup.setVisible(!0),this.isVertical()?(this._leadGroup.setX(t),this._leadGroup.setY(n),this._leadGroup.setWidth(e),this._leadGroup.setHeight(i)):(this._leadGroup.setX(n),this._leadGroup.setY(t),this._leadGroup.setWidth(i),this._leadGroup.setHeight(e)),this._leadGroup.doLayout()}positionIndicator(){let e=this.activeEntry()?.button;if(!e)return;let t=this.isVertical(),n=t?e.getHeight():e.getWidth();if(n<=0)return;let r=t?e.getY()+e.getTranslateY():e.getX()+e.getTranslateX();this._indicator.slideTo(r,n,this._side)}positionCloseButtons(){let e=this.isRotatedText(),t=c.getResolvedScale(),n=t.tabClose,r=t.tabCloseGlyph;for(let t of this._entries){let i=t.closeButton;!i||t.button.getWidth()<=0||(i.setWidth(n),i.setHeight(n),i.pinGlyphSize(r),e?(i.setX(Math.round((t.button.getWidth()-n)/2)),i.setY(this._orientation===`vertical-ccw`?2:t.button.getHeight()-n-2)):(i.setX(t.button.getWidth()-n-2),i.setY(Math.round((t.button.getHeight()-n)/2))))}}scrollStepExtent(){return this._entries.length>0&&this.predictedTabExtent(this._entries[0].button)||Ce}revealSelectedIfRequested(){if(!this._scrollToSelected||(this._scrollToSelected=!1,!this._scrollable))return;let e=this.activeEntry()?.button.getElement();e&&this._tabClip.revealItem(e)}prepareStrip(){this.syncToolbarOrientation(),this.applyTabButtonStyles();for(let e of this._entries)e.button.getAria().setSelected(e.id===this._activeId);return this}placeStrip(e,t,n,r){return this.setX(e),this.setY(t),this.setWidth(n),this.setHeight(r),this.layoutChrome(n,r),this}layoutChrome(e,t){let n=this.getContentInsets(),r=this.isVertical(),i=r?n.getLeft():n.getTop(),a=r?n.getTop():n.getLeft(),o=r?n.getBottom():n.getRight(),s=this._tools.length>0?this.toolGroupMainExtent():0,c=this.stripThickness(),l=this.leadWidgetMainExtent(),u=(r?t:e)-a-o,d=this._tabClip.arrowReserve(this.predictTabsExtent(),u-s-l),f=u-s-l-2*d,p=this.endAlignGap(f);this.positionClipFrame(s,l,c,u,i,a),this.applyTabWidths(f),this._tabClip.layoutContent(d,p),this.revealSelectedIfRequested(),this.positionToolGroup(u,s,c,i,a),this.positionLeadGroup(c,i,a),this.positionIndicator(),this.positionCloseButtons()}installTabDnD(){this.teardownTabDnD();let recordMouseTarget=e=>{this._dragMouseTarget=e.target,this._dragShiftHeld=e.shiftKey};r.addSubtreeListener(this,`mousedown`,recordMouseTarget),this._dndTeardowns.push(()=>r.removeSubtreeListener(this,`mousedown`,recordMouseTarget));for(let e of this._entries)this._dndTeardowns.push(this.makeTabDragSource(e));this._dndTeardowns.push(this.makeTabDropTarget())}makeTabDragSource(t){return t.constraints?.transient?()=>{}:D.makeDragSource(t.button,{dragData:()=>({tabDrag:!0,sourceTabId:this.stripId(),componentId:t.contentId,label:t.name}),onDragStart:()=>{let n=this._dragMouseTarget;this._dragMouseTarget=null;let r=t.closeButton?.getElement();if(r&&e.source.isNode(n)&&e.source.contains(r,e.source.intern(n)))return!1;this.emit(`tabdragstart`,t.id)},onDragEnd:(e,n)=>this.onTabDragEnd(t,e,n)})}makeTabDropTarget(){return D.makeDropTarget(this._tabClip,{suppressValidityTint:!0,accepts:e=>this.isTabHeaderDrag(e),onDragOver:e=>(this._dropTint.showOver(this._tabClip),this.updateReorderSlot(e),e.dragData.sourceTabId!==this.stripId()&&this.scheduleSpringRaise(),null),onDragLeave:()=>{this.clearSpringRaise(),this.hideDropAffordance()},onDrop:e=>{this.clearSpringRaise(),this.dropTabHeader(e)}})}scheduleSpringRaise(){this._springRaiseTimer===null&&(this._springRaiseTimer=setTimeout(()=>{this._springRaiseTimer=null,D.isDragging()&&this.emit(`dockhover`)},ee))}clearSpringRaise(){this._springRaiseTimer!==null&&(clearTimeout(this._springRaiseTimer),this._springRaiseTimer=null)}hideDropAffordance(){this._reorderBar.hide(),this._dropTint.hide()}isTabHeaderDrag(e){return e.dragData.tabDrag===!0}dropTabHeader(e){if(e.dragData.sourceTabId===this.stripId()){this.dropReorder(e);return}this.emit(`dockrequested`,e.dragData.componentId,this._dragInsertIndex),this.hideDropAffordance(),this._dragInsertIndex=-1}stripId(){return this.getId()}onTabDragEnd(e,t,n){if(!n){this.emit(`tearoffrequested`,e.id,t.clientX,t.clientY,this._dragShiftHeld);return}this.emit(`detach`,e.id)}updateReorderSlot(t){let n=this._tabClip.getClipElement();if(!n)return;let r=e.source.getElementRect(n),i=this.isVertical(),a=(i?t.clientY-r.top:t.clientX-r.left)+this._tabClip.mainScroll(),o=this._entries.length;for(let e=0;e<this._entries.length;e++){let t=this._entries[e].button;if(a<(i?t.getY()+t.getTranslateY():t.getX()+t.getTranslateX())+(i?t.getHeight():t.getWidth())/2){o=e;break}}this._dragInsertIndex=o;let s=this.slotBoundary(o,i),c=i?this._tabClip.getWidth():this._tabClip.getHeight();this._reorderBar.placeAt(s,c,i)}slotBoundary(e,t){if(e<this._entries.length){let n=this._entries[e].button;return t?n.getY()+n.getTranslateY():n.getX()+n.getTranslateX()}if(this._entries.length>0){let e=this._entries[this._entries.length-1].button;return t?e.getY()+e.getTranslateY()+e.getHeight():e.getX()+e.getTranslateX()+e.getWidth()}return 0}dropReorder(e){this.hideDropAffordance();let t=this._entries.findIndex(t=>t.button.getId()===e.sourceId);t<0||this._dragInsertIndex<0||(this.reorderTab(t,this._dragInsertIndex),this._dragInsertIndex=-1)}reorderTab(e,t){if(e<0||e>=this._entries.length)return;let n=t>e?t-1:t;if(n=Math.max(0,Math.min(n,this._entries.length-1)),n===e)return;let r=this._entries[e].id,i=this._entries[e];this._entries.splice(e,1),this._entries.splice(n,0,i),this._tabClip.moveItem(i.button,n),this.emit(`reorder`,r,n)}teardownTabDnD(){for(let e of this._dndTeardowns)e();this._dndTeardowns=[],this.hideDropAffordance()}onToolbarKeyDown(e){if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;let t=this._entries.length;if(t===0)return;let n=this._entries.findIndex(e=>e.id===this._activeId),r=n>=0?n:0,i=e.key===`ArrowRight`?(r+1)%t:(r-1+t)%t,a=this._entries[i].button;return this._entries.forEach(e=>e.button.setSelected(!1)),a.setSelected(!0),this.onTabPressed(a),{prevent:!0}}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)}},Z=a(TabBar),Ee=480,De=360,Oe=120,Tab=class extends i{_bar=new Z;_barVisible=!0;_contents=[];_selectedTabIndex=0;_pendingActiveContent=null;_lastFadedTabIndex=-1;_tabFadeAnimation=null;_listeners=new d;_barIgnoreParentInsets=!1;_detachWindowMode=`strip`;_closeHostWindowWhenEmpty=!1;_idSeq=0;_themeCleanup=null;constructor(e){super(),this._themeCleanup=c.onThemeChange(()=>{this.getContainer()?.scheduleLayout()}),e&&this.applyOptions(e)}applyOptions(e){if(super.applyOptions(e),e.listeners!==void 0){let t=e.listeners;for(let e of Object.keys(t)){let n=t[e];n!==void 0&&this.on(e,n)}}if(e.widthMode!==void 0&&this.setWidthMode(e.widthMode),e.maxWidth!==void 0&&this.setMaxWidth(e.maxWidth),e.fixedWidth!==void 0&&this.setFixedWidth(e.fixedWidth),e.underBorderFullWidth!==void 0&&this.setUnderBorderFullWidth(e.underBorderFullWidth),e.side!==void 0&&this.setSide(e.side),e.align!==void 0&&this.setAlign(e.align),e.orientation!==void 0&&this.setOrientation(e.orientation),e.scrollable!==void 0&&this.setScrollable(e.scrollable),e.compact!==void 0&&this.setCompact(e.compact),e.reorderable!==void 0&&this.setReorderable(e.reorderable),e.barIgnoreParentInsets!==void 0&&this.setBarIgnoreParentInsets(e.barIgnoreParentInsets),e.detachWindowMode!==void 0&&this.setDetachWindowMode(e.detachWindowMode),e.textAlign!==void 0&&this.setTextAlign(e.textAlign),e.tools!==void 0)for(let t of e.tools)t instanceof l,this.addTool(t)}setWidthMode(e){return this._bar.setWidthMode(e),this.getContainer()?.scheduleLayout(),this}getWidthMode(){return this._bar.getWidthMode()}setMaxWidth(e){return this._bar.setMaxWidth(e),this.getContainer()?.scheduleLayout(),this}getMaxWidth(){return this._bar.getMaxWidth()}setFixedWidth(e){return this._bar.setFixedWidth(e),this.getContainer()?.scheduleLayout(),this}getFixedWidth(){return this._bar.getFixedWidth()}setUnderBorderFullWidth(e){return this._bar.setUnderBorderFullWidth(e),this.getContainer()?.scheduleLayout(),this}isUnderBorderFullWidth(){return this._bar.isUnderBorderFullWidth()}setSide(e){return this._bar.setSide(e),this.getContainer()?.scheduleLayout(),this}getSide(){return this._bar.getSide()}setAlign(e){return this._bar.setAlign(e),this.getContainer()?.scheduleLayout(),this}getAlign(){return this._bar.getAlign()}setOrientation(e){return this._bar.setOrientation(e),this.getContainer()?.scheduleLayout(),this}getOrientation(){return this._bar.getOrientation()}setTextAlign(e){return this._bar.setTextAlign(e),this.getContainer()?.scheduleLayout(),this}getTextAlign(){return this._bar.getTextAlign()}setScrollable(e){return this._bar.setScrollable(e),this.getContainer()?.scheduleLayout(),this}isScrollable(){return this._bar.isScrollable()}setCompact(e){return this._bar.setCompact(e),this.getContainer()?.scheduleLayout(),this}isCompact(){return this._bar.isCompact()}setReorderable(e){return this._bar.setReorderable(e),this}isReorderable(){return this._bar.isReorderable()}setBarVisible(e){return this._barVisible===e?this:(this._barVisible=e,this.getContainer()?.scheduleLayout(),this)}isBarVisible(){return this._barVisible}isEmpty(){return this._contents.length===0}setBarIgnoreParentInsets(e){return this._barIgnoreParentInsets=e,this.getContainer()?.scheduleLayout(),this}isBarIgnoreParentInsets(){return this._barIgnoreParentInsets}setDetachWindowMode(e){return this._detachWindowMode=e,this}getDetachWindowMode(){return this._detachWindowMode}setCloseHostWindowWhenEmpty(e){return this._closeHostWindowWhenEmpty=e,this}addTool(e){return e instanceof l&&e instanceof j&&e.setFlat(!0),this._bar.addTool(e),this.getContainer()?.scheduleLayout(),this}removeTool(e){return this._bar.removeTool(e),this.getContainer()?.scheduleLayout(),this}setBarLeadingWidget(e){return this._bar.setLeadingWidget(e),this.getContainer()?.scheduleLayout(),this}setBarBackgroundColor(e){return this._bar.setBarSurfaceColor(e),this}installBarMoveTrigger(e,t){return this._bar.installMoveTrigger(e,t),this}mintId(){return`tab-`+this._idSeq++}attach(t){return super.attach(t),e.sink.appendChild(t.getElement(!0),this._bar.getElement(!0)),this._bar.on(`tabpressed`,this._onBarTabPressed),this._bar.on(`reorder`,this._onBarReordered),this._bar.on(`tabclose`,this._onBarTabClose),this._bar.on(`dockrequested`,this._onBarDockRequested),this._bar.on(`tabdragstart`,this._onBarTabDragStart),this._bar.on(`tearoffrequested`,this._onBarTearOffRequested),this._bar.on(`detach`,this._onBarDetached),this._bar.on(`dockhover`,this._onBarDockHover),this}detach(){this._tabFadeAnimation?.cancel(),this._tabFadeAnimation=null;for(let e of this._contents)e.materializeAnimation?.cancel(),e.materializeAnimation=null;return super.detach(),this._themeCleanup&&=(this._themeCleanup(),null),this._bar.off(`tabpressed`,this._onBarTabPressed),this._bar.off(`reorder`,this._onBarReordered),this._bar.off(`tabclose`,this._onBarTabClose),this._bar.off(`dockrequested`,this._onBarDockRequested),this._bar.off(`tabdragstart`,this._onBarTabDragStart),this._bar.off(`tearoffrequested`,this._onBarTearOffRequested),this._bar.off(`detach`,this._onBarDetached),this._bar.off(`dockhover`,this._onBarDockHover),this._bar.dispose(),this}_onBarTabPressed=e=>{let t=this._contents.findIndex(t=>t.id===e);if(t>=0){this._selectedTabIndex=t;let e=this._contents[t];this.emit(`select`,t,this._bar.getEntryName(e.id)),e.state===`lazy`&&this.materializeAsync(t),e.component?this.emit(`activate`,e.component,t):e.announceActivation=!0}this.getContainer()?.scheduleLayout()};_onBarReordered=(e,t)=>{let n=this._bar.getEntryIds(),r=this._contents[this._selectedTabIndex]??null;if(this._contents.sort((e,t)=>n.indexOf(e.id)-n.indexOf(t.id)),r){let e=this._contents.indexOf(r);e>=0&&(this._selectedTabIndex=e)}this.getContainer()?.scheduleLayout()};_onBarTabClose=e=>{this.closeEntry(e)};closeEntry(e){let t=this.getContainer();if(!t)return;let n=this._contents.findIndex(t=>t.id===e);if(n<0)return;let r=this._selectedTabIndex===n,i=this._contents[n].component,a=this._contents[n].spinner;this._contents[n].materializeAnimation?.cancel(),this._bar.removeBarEntry(e),this._contents.splice(n,1);let o;i&&(o=t.removeComponent(i)),a&&(t.removeComponent(a),a.dispose()),i&&(this.emit(`tabclose`,i),o?.disposeOnClose!==!1&&i.getParentComponent()===null&&i.dispose()),this.selectNextContent(n,r),this.getContainer()?.scheduleLayout(),this.syncHostWindowCloseable(),this.closeHostWindowIfEmpty(),this._contents.length===0&&this.emit(`empty`)}closeTab(e){let t=this._contents.find(t=>t.component===e);return t?(this.closeEntry(t.id),!0):!1}setTabBusy(e,t){let n=this._contents.find(t=>t.component===e);return n?(this.setEntryBusy(n,t),!0):!1}isTabBusy(e){let t=this._contents.find(t=>t.component===e);return t?this._bar.isEntryBusy(t.id):!1}_onBarDockRequested=(e,t)=>{let n=T.get(e);n&&(this.dockComponent(n,t),this.ancestorWindow()?.bringToFront(),this.emit(`dock`,n))};_onBarDockHover=()=>{this.ancestorWindow()?.bringToFront()};_onBarTabDragStart=e=>{let t=this._contents.find(t=>t.id===e);t&&t.state===`ready`&&t.component&&T.set(t.component.getId(),t.component)};_onBarTearOffRequested=(e,t,n,r)=>{let i=this._contents.find(t=>t.id===e);i&&(i.component&&T.delete(i.component.getId()),!(i.state!==`ready`||!i.component)&&this.detachTabToWindow(e,i.component,t,n,r))};_onBarDetached=e=>{let t=this._contents.find(t=>t.id===e);if(!t)return;let n=t.component;n&&T.delete(n.getId()),!(t.state!==`ready`||!n)&&((this.getContainer()?.getComponents().includes(n)??!1)||this.removeEntryKeepingContent(e))};getVisibleComponent(){let e=this.getContainer();if(!e)return null;let t=this._contents[this._selectedTabIndex];return t?t.state===`building`&&t.spinner?t.spinner:t.component?t.component:null:e.getComponents()[this._selectedTabIndex]??null}getPreferredSize(){return this.composeSize(this.getVisibleComponent()?.getPreferredSize())}getMinSize(){return this.composeSize(this.getVisibleComponent()?.getMinSize())}getMaxSize(){return this.composeSize(this.getVisibleComponent()?.getMaxSize())}isVertical(){let e=this._bar.getSide();return e===`west`||e===`east`}composeSize(e){let t=this.getContainer();if(!t||!e)return null;let n=t.getPerimeterSize(),r=n.left+n.right,i=n.top+n.bottom,a=this._bar.stripThickness();return this.isVertical()?{width:e.width+a+r,height:e.height+i}:{width:e.width+r,height:e.height+a+i}}createTab(e){let t=this.getLayoutConstraints(e),n=t?.name??e.getName()??e.getId(),r=this.mintId();this._bar.createBarEntry(r,n,t),this._contents.push({id:r,component:e,factory:null,spinner:null,state:`ready`,materializeAnimation:null,announceActivation:!1}),this.wireComponentAria(r,e),this.syncHostWindowCloseable()}wireComponentAria(e,t){this._bar.setEntryContentId(e,t.getId()),t.getAria().setRole(`tabpanel`),t.getAria().setTabIndex(-1),t.getAria().setLabelledBy(this._bar.getEntryButtonId(e))}addDeferredComponent(e,t){if(t?.lazy===!1)return!1;this.syncUntabbedChildren();let n=this.mintId();return this._bar.createBarEntry(n,t?.name??n,t),this._contents.push({id:n,component:null,factory:e,spinner:null,state:`lazy`,materializeAnimation:null,announceActivation:!1}),this.getContainer()?.scheduleLayout(),!0}addLazyTab(e,t,n){this.addDeferredComponent(e,Object.assign(new k,n,{name:t,lazy:!0}))}syncUntabbedChildren(){let e=this.getContainer();if(!e)return;let t=new Set;for(let e of this._contents)e.component&&t.add(e.component),e.spinner&&t.add(e.spinner);for(let n of e.getComponents())t.has(n)||this.createTab(n)}setEntryBusy(e,t){this._bar.isEntryBusy(e.id)!==t&&(this._bar.setEntryBusy(e.id,t),this.emit(`busychange`,t,this._bar.getEntryName(e.id)))}materializeAsync(e){let t=this._contents[e];if(!t||t.state!==`lazy`)return;let n=t.factory;if(!n)return;let r=this.getContainer();if(!r)return;let i=createSpinnerWrap();t.spinner=i,t.state=`building`,this.setEntryBusy(t,!0),t.materializeAnimation?.cancel(),t.materializeAnimation=u.materialize({host:r,factory:()=>{let e=n();return e instanceof Promise?e.then(e=>(t.component=e,e)):(t.component=e,e)},spinnerComponent:i,isStale:()=>!this._contents.includes(t),onError:e=>this.failEntry(t,e),onReady:e=>{this.setEntryBusy(t,!1),t.component=e,t.factory=null,t.spinner=null,t.state=`ready`,this.wireComponentAria(t.id,e),r.scheduleLayout(),this.announcePendingActivation(t)}})}announcePendingActivation(e){!e.announceActivation||!e.component||(e.announceActivation=!1,this._contents[this._selectedTabIndex]===e&&this.emit(`activate`,e.component,this._selectedTabIndex))}failEntry(e,t){let n=this._bar.getEntryName(e.id);e.spinner=null,e.factory=null,this.closeEntry(e.id),this.emit(`exception`,t,n)}computeTotalMinSize(){let e=this.getContainer();return e?(this.getVisibleComponent()??e.getComponents()[0])?.getMinSize()??{width:0,height:0}:{width:0,height:0}}doLayout(){let e=this.getContainer();if(!e)return;let t=e.getComponents(),r=e.getInnerSize(),i=e.getContentInsets();if(this.syncUntabbedChildren(),this._pendingActiveContent){let e=this.indexOfContent(this._pendingActiveContent);e>=0&&(this._pendingActiveContent=null,this.setActiveTabIndex(e))}let a=this._contents[this._selectedTabIndex];a&&a.state===`lazy`&&this.materializeAsync(this._selectedTabIndex);for(let e of t)e.setVisible(!1),e.getAria().setHidden(!0);let s=this.getVisibleComponent();!s&&t.length>0&&(s=t[0]),this._bar.setVisible(this._barVisible),this._barVisible&&this._bar.prepareStrip();let c=r??{width:0,height:0},l=i.getLeft(),d=i.getTop(),f=this._barVisible?this._bar.stripThickness():0,p=l,m=d,h=c.width,g=f,_=l,v=d,y=c.width,b=c.height;switch(this._bar.getSide()){case`north`:v=d+f,b=c.height-f;break;case`south`:m=d+c.height-f,b=c.height-f;break;case`west`:h=f,g=c.height,_=l+f,y=c.width-f;break;case`east`:p=l+c.width-f,h=f,g=c.height,y=c.width-f}if(this._barIgnoreParentInsets){let e=i.getLeft(),t=i.getTop(),r=i.getRight(),a=i.getBottom();switch(this._bar.getSide()){case`north`:p=0,m=0,h=c.width+e+r,g=f+t,this._bar.setInsets(new n(t,r,0,e));break;case`south`:p=0,m=d+c.height-f,h=c.width+e+r,g=f+a,this._bar.setInsets(new n(0,r,a,e));break;case`west`:p=0,m=0,h=f+e,g=c.height+t+a,this._bar.setInsets(new n(t,0,a,e));break;case`east`:p=l+c.width-f,m=0,h=f+r,g=c.height+t+a,this._bar.setInsets(new n(t,r,a,0))}}else this._bar.clearInsets();if(this._barVisible&&this._bar.placeStrip(p,m,h,g),!s)return;s.setVisible(!0),s.getAria().setHidden(!1);let x=this.inflateForOverflow({width:y,height:b}),S=x.width,C=x.height;if(this.placeComponent(s,_,v,S,C,o.BOTH),this._contents[this._selectedTabIndex]?.state===`ready`&&this._lastFadedTabIndex!==this._selectedTabIndex){this._lastFadedTabIndex=this._selectedTabIndex;let e=s.getElement();e&&(this._tabFadeAnimation?.cancel(),this._tabFadeAnimation=u.play(e,{from:{opacity:`0`},to:{opacity:`1`},durationMs:Oe,properties:[`opacity`]}))}}getActiveTabIndex(){return this._selectedTabIndex}getActiveContent(){return this._contents[this._selectedTabIndex]?.component??null}indexOfContent(e){return this._contents.findIndex(t=>t.component===e)}getActiveTabLabel(){let e=this._bar.getActiveEntryId();return e===null?null:this._bar.getEntryName(e)}setActiveContent(e){let t=this.indexOfContent(e);return t>=0?(this._pendingActiveContent=null,this.setActiveTabIndex(t)):this._pendingActiveContent=e,this}setActiveTabIndex(e){if(this._contents.length===0)return this;let n=t.clamp(e,0,this._contents.length-1);return this._bar.setActiveEntry(this._contents[n].id),this}dockComponent(e,n){let r=this.getContainer();if(!r)return;r.moveComponent(e,n),this.createTab(e);let i=this._contents.length-1,a=t.clamp(n,0,i);if(a!==i){let e=this._contents[i];this._contents.splice(i,1),this._contents.splice(a,0,e),this._bar.moveBarEntry(e.id,a)}this.setActiveTabIndex(a),r.scheduleLayout()}removeEntryKeepingContent(e){let t=this._contents.findIndex(t=>t.id===e);if(t<0)return;let n=this._selectedTabIndex===t;this._contents[t].materializeAnimation?.cancel(),this._bar.removeBarEntry(e),this._contents.splice(t,1),this.selectNextContent(t,n),this.getContainer()?.scheduleLayout(),this.syncHostWindowCloseable(),this.closeHostWindowIfEmpty(),this._contents.length===0&&this.emit(`empty`)}detachTabToWindow(e,t,n,r,i){let a=!i&&this._detachWindowMode===`strip`,o=a?new $({closeable:this._bar.isEntryCloseable(e)}):new q(this._bar.getEntryName(e),{closeable:this._bar.isEntryCloseable(e)});o.setX(n),o.setY(r),o.setSize({width:Ee,height:De}),o.clampPositionToViewport(),a?this.fillWindowWithStrip(o,t):(o.moveComponent(t),o.show()),this.removeEntryKeepingContent(e),o.bringToFront(),this.emit(`detach`,o)}fillWindowWithStrip(e,t){e.createTab(t),e.show()}hostWindow(){if(!this._closeHostWindowWhenEmpty)return null;let e=this.getContainer();for(;e&&!(e instanceof G);)e=e.getParentComponent();return e instanceof G?e:null}ancestorWindow(){for(let e=this.getContainer();e;e=e.getParentComponent())if(e instanceof G)return e;return null}closeHostWindowIfEmpty(){this._contents.length>0||this.hostWindow()?.requestClose()}syncHostWindowCloseable(){let e=this.hostWindow();e&&e.setCloseable(this._bar.getEntryIds().every(e=>this._bar.isEntryCloseable(e)))}selectNextContent(e,t){if(this._contents.length===0){this._selectedTabIndex=0;return}if(!t){this._selectedTabIndex>e&&--this._selectedTabIndex;return}let n=e>0?e-1:0;this._selectedTabIndex=n,this._bar.setActiveVisual(this._contents[n].id)}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)}},Q=a(Tab),ke=30,Ae=120,TabWindow=class extends G{_tab;_closeTool;_minTool;_maxTool;_leadGlyphBtn;constructor(e){super(e),this._tab=new Q({reorderable:!0,widthMode:`fixed`,textAlign:`start`,compact:!0,barIgnoreParentInsets:!0}),this._tab.setCloseHostWindowWhenEmpty(!0),this.setLayoutManager(this._tab),this._minTool=createWindowControlButton(`window-minimize`),this._maxTool=createWindowControlButton(`window-maximize`),this._closeTool=createWindowControlButton(`xmark`),this._minTool.on(`action`,()=>this.toggleMinimize()),this._maxTool.on(`action`,()=>this.toggleMaximize()),this._closeTool.on(`action`,()=>this.requestClose()),this._tab.addTool(this._minTool),this._tab.addTool(this._maxTool),this._tab.addTool(this._closeTool),this._leadGlyphBtn=createWindowLeadGlyphButton(this._options.glyph??`window-maximize`),this._tab.setBarLeadingWidget(this._leadGlyphBtn),this.initChrome(e)}createTab(e){return this.addContent(e),this}setGlyph(e){return this._leadGlyphBtn.setGlyph(e),this}wireMoveTrigger(){this._tab.installBarMoveTrigger(e=>this.startMoveFrom(e),()=>this.onBarDoubleClick())}onBarDoubleClick(){if(this.getWindowState()===`minimized`){this.setWindowState(this._preMinimizeState);return}this.isMaximizable()&&this.toggleMaximize()}reflectCloseable(e){this._closeTool.setEnabled(e)}reflectMinimizable(e){this._minTool.setVisible(e)}reflectMaximizable(e){this._maxTool.setVisible(e)}reflectMaximizeState(e){}paintActive(e){this._tab.setBarBackgroundColor(e?`var(--ts-ui-tab-toolbar-bg, #eee)`:`var(--ts-ui-gutter-bg, rgb(200, 200, 200))`),this.setControlsActive(e)}setControlsActive(e){setWindowControlsActive([this._minTool,this._maxTool,this._closeTool],e)}getTitle(){return this._tab.getActiveTabLabel()??``}minContentWidthSeed(){return Ae}chromeHeight(){return ke}addContent(e){this.moveComponent(e),this._tab.createTab(e)}isChromeComponent(e){return!1}},$=a(TabWindow);function toLayoutSizes(e,t){let clean=e=>Number.isFinite(e)&&e>0?e:0,n=e.filter(e=>e===`ratio`).length,r=0;for(let n=0;n<e.length;n+=1)e[n]===`ratio`&&(r+=clean(t[n]));return e.map((e,i)=>e===`px`?{unit:e,value:clean(t[i])}:{unit:e,value:r>0?clean(t[i])/r:1/n})}function fromLayoutSizes(e,t){let n=0,r=0,i=0;for(let t of e)t.unit===`px`?n+=t.value:(r+=t.value,i+=1);let a=t>0?Math.max(0,t-n):0,o=a>0?a:1;return e.map(e=>e.unit===`px`?e.value:r>0?e.value/r*o:o/i)}function isRestorableSizes(e,t){return t.length===0||e.length!==t.length?!1:e.every((e,n)=>e!=null&&e.unit===t[n]&&Number.isFinite(e.value)&&e.value>=0)&&e.some(e=>e.value>0)}function normalizeRatios(e,t){let n=[];for(let r=0;r<t;r+=1){let t=e[r];n.push(Number.isFinite(t)&&t>0?t:0)}let r=n.reduce((e,t)=>e+t,0);return r>0?n.map(e=>e/r):n.map(()=>1/t)}var je=.5,RadioMenuRow=class extends de{_radio;_iconStart=null;_checkZone=null;_onMouseOver;_onMouseOut;_onClick;constructor(e,t){super(e,t),this._radio=new C(e?.text??``,{selected:e?.checked??!1,enabled:e?.enabled??!0}),this._radio.setPointerEvents(`none`),this.addComponent(this._radio),e?.enabled===!1&&(this.setPointerEvents(`none`),this.setOpacity(je)),this._onMouseOver=()=>{this.setFocused(!0)},this._onMouseOut=()=>{this.setFocused(!1)},this._onClick=()=>{this.activate()},r.addListener(this,`mouseover`,this._onMouseOver),r.addListener(this,`mouseout`,this._onMouseOut),r.addListener(this,`click`,this._onClick),this.applyListeners(e?.listeners)}isChecked(){return this._radio.isSelected()}setChecked(e){return this._radio.setSelected(e),this}isNavigable(){return!0}isEnabled(){return this._radio.isEnabled()}activate(){this.isEnabled()&&this.setChecked(!0)}getContentWidth(){return Math.ceil(this._radio.getPreferredSize()?.width??0)+N.RIGHT_PAD}setColumns(e,t,n){this._checkZone=e,this._iconStart=t,this.scheduleLayout()}doLayout(){super.doLayout();let e=this.getContentBounds();if(!e)return this;let t=this._radio.getPreferredSize()??{width:0,height:0},n=this._checkZone??0,r=this._iconStart!==null&&this._iconStart-n===N.ICON_ZONE?n+4:this._iconStart??N.TEXT_INSET,i=Math.max(0,Math.floor((e.height-t.height)/2));return this._radio.setX(e.x+r),this._radio.setY(e.y+i),this._radio.setWidth(Math.max(0,e.width-r-N.RIGHT_PAD)),this._radio.setHeight(t.height),this}on(e,t){return r.addListener(this,`click`,t),this}off(e,t){return r.removeListener(this,`click`,t),this}},Me=a(RadioMenuRow);export{toLayoutSizes as a,Z as c,K as d,G as f,P as h,normalizeRatios as i,J as l,R as m,fromLayoutSizes as n,$ as o,F as p,isRestorableSizes as r,Q as s,Me as t,q as u};
2
+ //# sourceMappingURL=RadioMenuRow-Cfv0x6Qj.js.map