@jimka/typescript-ui 0.4.0 → 0.5.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 (214) hide show
  1. package/dist/lib/{AbstractBooleanInput-DSwKBAic.js → AbstractBooleanInput-CbW7ZrDT.js} +2 -2
  2. package/dist/lib/{AbstractBooleanInput-DSwKBAic.js.map → AbstractBooleanInput-CbW7ZrDT.js.map} +1 -1
  3. package/dist/lib/{AbstractInput-BmWGJTs1.js → AbstractInput-B10DfLOf.js} +2 -2
  4. package/dist/lib/{AbstractInput-BmWGJTs1.js.map → AbstractInput-B10DfLOf.js.map} +1 -1
  5. package/dist/lib/Anchor-BsblS5it.js +2 -0
  6. package/dist/lib/Anchor-BsblS5it.js.map +1 -0
  7. package/dist/lib/AnchorConstraints-Bfkt8019.js +2 -0
  8. package/dist/lib/AnchorConstraints-Bfkt8019.js.map +1 -0
  9. package/dist/lib/{AnimatedDropdown-DKas40B-.js → AnimatedDropdown-kL47HPGP.js} +2 -2
  10. package/dist/lib/{AnimatedDropdown-DKas40B-.js.map → AnimatedDropdown-kL47HPGP.js.map} +1 -1
  11. package/dist/lib/{Border-Bz29z-_7.js → Border-CNS6aEXB.js} +2 -2
  12. package/dist/lib/Border-CNS6aEXB.js.map +1 -0
  13. package/dist/lib/Button-T16zSZip.js +2 -0
  14. package/dist/lib/Button-T16zSZip.js.map +1 -0
  15. package/dist/lib/{Card-BdfbvOD_.js → Card-CD3jxshU.js} +2 -2
  16. package/dist/lib/{Card-BdfbvOD_.js.map → Card-CD3jxshU.js.map} +1 -1
  17. package/dist/lib/CodeEditor-BGlB232h.js +2 -0
  18. package/dist/lib/CodeEditor-BGlB232h.js.map +1 -0
  19. package/dist/lib/ComboBox-C9FYMuLv.js +2 -0
  20. package/dist/lib/ComboBox-C9FYMuLv.js.map +1 -0
  21. package/dist/lib/Component-w65rPK75.js +2 -0
  22. package/dist/lib/Component-w65rPK75.js.map +1 -0
  23. package/dist/lib/Container-C7RPLQEc.js +2 -0
  24. package/dist/lib/{Container-CAQpj4yb.js.map → Container-C7RPLQEc.js.map} +1 -1
  25. package/dist/lib/DOM-Ba8YRVel.js +2 -0
  26. package/dist/lib/{DOM-67StIm5G.js.map → DOM-Ba8YRVel.js.map} +1 -1
  27. package/dist/lib/DragManager-UvPHSoRm.js +2 -0
  28. package/dist/lib/{DragManager-CHWCe3-8.js.map → DragManager-UvPHSoRm.js.map} +1 -1
  29. package/dist/lib/{FieldDecorator-CgAGcqCk.js → FieldDecorator-HG65hEtk.js} +2 -2
  30. package/dist/lib/{FieldDecorator-CgAGcqCk.js.map → FieldDecorator-HG65hEtk.js.map} +1 -1
  31. package/dist/lib/{Fit-DIYt2aQB.js → Fit-Cg3dPyZg.js} +2 -2
  32. package/dist/lib/{Fit-DIYt2aQB.js.map → Fit-Cg3dPyZg.js.map} +1 -1
  33. package/dist/lib/FloatingPanel-D5buuVrQ.js +2 -0
  34. package/dist/lib/FloatingPanel-D5buuVrQ.js.map +1 -0
  35. package/dist/lib/{Glyph-CeAIWyPB.js → Glyph-DeJF_zsR.js} +2 -2
  36. package/dist/lib/{Glyph-CeAIWyPB.js.map → Glyph-DeJF_zsR.js.map} +1 -1
  37. package/dist/lib/{Grid-ViA0joow.js → Grid-BYBohJIA.js} +2 -2
  38. package/dist/lib/{Grid-ViA0joow.js.map → Grid-BYBohJIA.js.map} +1 -1
  39. package/dist/lib/{GridConstraints-B1rxCw9B.js → GridConstraints-Bts284FI.js} +2 -2
  40. package/dist/lib/{GridConstraints-B1rxCw9B.js.map → GridConstraints-Bts284FI.js.map} +1 -1
  41. package/dist/lib/{Header-mKaqgfat.js → Header-BIFJK9nR.js} +2 -2
  42. package/dist/lib/{Header-mKaqgfat.js.map → Header-BIFJK9nR.js.map} +1 -1
  43. package/dist/lib/{IconText-BqwXA82-.js → IconText-Dsb1xS-E.js} +2 -2
  44. package/dist/lib/{IconText-BqwXA82-.js.map → IconText-Dsb1xS-E.js.map} +1 -1
  45. package/dist/lib/LanguageRegistry-CcVnbKuh.js +2 -0
  46. package/dist/lib/LanguageRegistry-CcVnbKuh.js.map +1 -0
  47. package/dist/lib/LayoutConstraints-LIHYYd2F.js +2 -0
  48. package/dist/lib/LayoutConstraints-LIHYYd2F.js.map +1 -0
  49. package/dist/lib/LayoutSerialization-ySzY1h2l.js +2 -0
  50. package/dist/lib/{LayoutSerialization-D82UtnDD.js.map → LayoutSerialization-ySzY1h2l.js.map} +1 -1
  51. package/dist/lib/LayoutSizes-DKDK1Cle.js +2 -0
  52. package/dist/lib/LayoutSizes-DKDK1Cle.js.map +1 -0
  53. package/dist/lib/List-BPd-IXZR.js +2 -0
  54. package/dist/lib/{List-CUntS8ux.js.map → List-BPd-IXZR.js.map} +1 -1
  55. package/dist/lib/MemoryStore-BgP7-Uzn.js +2 -0
  56. package/dist/lib/{MemoryStore-DT6iWWco.js.map → MemoryStore-BgP7-Uzn.js.map} +1 -1
  57. package/dist/lib/Menu-C0roOCY7.js +2 -0
  58. package/dist/lib/Menu-C0roOCY7.js.map +1 -0
  59. package/dist/lib/MenuButton-BR4KOFld.js +2 -0
  60. package/dist/lib/MenuButton-BR4KOFld.js.map +1 -0
  61. package/dist/lib/Panel-CpNQTLNF.js +2 -0
  62. package/dist/lib/{Panel-D2X33qR6.js.map → Panel-CpNQTLNF.js.map} +1 -1
  63. package/dist/lib/{Position-Ck_KD4cR.js → Position-PBVBW1JS.js} +2 -2
  64. package/dist/lib/{Position-Ck_KD4cR.js.map → Position-PBVBW1JS.js.map} +1 -1
  65. package/dist/lib/{ProgressSpinner-DCyq02pd.js → ProgressSpinner-lAsK26C-.js} +2 -2
  66. package/dist/lib/{ProgressSpinner-DCyq02pd.js.map → ProgressSpinner-lAsK26C-.js.map} +1 -1
  67. package/dist/lib/RadioButton-CCcIaL54.js +2 -0
  68. package/dist/lib/RadioButton-CCcIaL54.js.map +1 -0
  69. package/dist/lib/{RovingTabIndex-DFJyoveq.js → RovingTabIndex-C2Vzq0IX.js} +2 -2
  70. package/dist/lib/{RovingTabIndex-DFJyoveq.js.map → RovingTabIndex-C2Vzq0IX.js.map} +1 -1
  71. package/dist/lib/Scrollbar-C3ZZyZ1e.js +2 -0
  72. package/dist/lib/Scrollbar-C3ZZyZ1e.js.map +1 -0
  73. package/dist/lib/Slider-DZ9drUxn.js +2 -0
  74. package/dist/lib/Slider-DZ9drUxn.js.map +1 -0
  75. package/dist/lib/Spacer-SDhOMp2g.js +2 -0
  76. package/dist/lib/{Spacer-D159iJy9.js.map → Spacer-SDhOMp2g.js.map} +1 -1
  77. package/dist/lib/TabButton-DNo4ZgV8.js +2 -0
  78. package/dist/lib/TabButton-DNo4ZgV8.js.map +1 -0
  79. package/dist/lib/Text-CdHf3B-1.js +2 -0
  80. package/dist/lib/Text-CdHf3B-1.js.map +1 -0
  81. package/dist/lib/{Tooltip-DzK6LxUt.js → Tooltip-B_UF5bXD.js} +2 -2
  82. package/dist/lib/{Tooltip-DzK6LxUt.js.map → Tooltip-B_UF5bXD.js.map} +1 -1
  83. package/dist/lib/Tree-C7qLbIYH.js +2 -0
  84. package/dist/lib/Tree-C7qLbIYH.js.map +1 -0
  85. package/dist/lib/VBox-32fxpkDl.js +2 -0
  86. package/dist/lib/VBox-32fxpkDl.js.map +1 -0
  87. package/dist/lib/{Validator-Du8PqS5i.js → Validator-Cjs1EU5Q.js} +2 -2
  88. package/dist/lib/{Validator-Du8PqS5i.js.map → Validator-Cjs1EU5Q.js.map} +1 -1
  89. package/dist/lib/{VirtualScroller-zQr-vKrO.js → VirtualScroller-cvFNMS7U.js} +2 -2
  90. package/dist/lib/{VirtualScroller-zQr-vKrO.js.map → VirtualScroller-cvFNMS7U.js.map} +1 -1
  91. package/dist/lib/component/button.es.js +1 -1
  92. package/dist/lib/component/button.es.js.map +1 -1
  93. package/dist/lib/component/chart.es.js +1 -1
  94. package/dist/lib/component/chart.es.js.map +1 -1
  95. package/dist/lib/component/container.es.js +1 -1
  96. package/dist/lib/component/container.es.js.map +1 -1
  97. package/dist/lib/component/diagram.es.js +1 -1
  98. package/dist/lib/component/diagram.es.js.map +1 -1
  99. package/dist/lib/component/display.es.js +1 -1
  100. package/dist/lib/component/display.es.js.map +1 -1
  101. package/dist/lib/component/editor.es.js +3 -3
  102. package/dist/lib/component/editor.es.js.map +1 -1
  103. package/dist/lib/component/input.es.js +1 -1
  104. package/dist/lib/component/input.es.js.map +1 -1
  105. package/dist/lib/component/list.es.js +1 -1
  106. package/dist/lib/component/list.es.js.map +1 -1
  107. package/dist/lib/component/menubar.es.js +1 -1
  108. package/dist/lib/component/menubar.es.js.map +1 -1
  109. package/dist/lib/component/table.es.js +2 -2
  110. package/dist/lib/component/table.es.js.map +1 -1
  111. package/dist/lib/component/tree.es.js +1 -1
  112. package/dist/lib/component/tree.es.js.map +1 -1
  113. package/dist/lib/core.es.js +1 -1
  114. package/dist/lib/core.es.js.map +1 -1
  115. package/dist/lib/data.es.js +1 -1
  116. package/dist/lib/glyphs/solid/index.es.js +1 -1
  117. package/dist/lib/languages-Dl8qdL8a.js +2 -0
  118. package/dist/lib/languages-Dl8qdL8a.js.map +1 -0
  119. package/dist/lib/layout.es.js +1 -1
  120. package/dist/lib/layout.es.js.map +1 -1
  121. package/dist/lib/overlay.es.js +1 -1
  122. package/dist/lib/overlay.es.js.map +1 -1
  123. package/dist/lib/primitive.es.js +1 -1
  124. package/dist/lib/router.es.js +1 -1
  125. package/dist/lib/router.es.js.map +1 -1
  126. package/dist/lib/selectionsEqual-BrTxPMmK.js +2 -0
  127. package/dist/lib/{selectionsEqual-4r5R7pTK.js.map → selectionsEqual-BrTxPMmK.js.map} +1 -1
  128. package/dist/lib/types/component/button/MenuButton.d.ts +1 -0
  129. package/dist/lib/types/component/button/SplitButton.d.ts +1 -0
  130. package/dist/lib/types/component/button/TabButton.d.ts +2 -1
  131. package/dist/lib/types/component/button/ToggleButton.d.ts +1 -1
  132. package/dist/lib/types/component/chart/ChartLegend.d.ts +1 -2
  133. package/dist/lib/types/component/container/CollapseButton.d.ts +0 -1
  134. package/dist/lib/types/component/container/FloatingPanel.d.ts +23 -0
  135. package/dist/lib/types/component/container/ScrollStrip.d.ts +1 -1
  136. package/dist/lib/types/component/container/Scrollbar.d.ts +1 -3
  137. package/dist/lib/types/component/container/TabBar.d.ts +1 -1
  138. package/dist/lib/types/component/container/TabPanel.d.ts +3 -0
  139. package/dist/lib/types/component/container/index.d.ts +2 -0
  140. package/dist/lib/types/component/diagram/DiagramGroupNode.d.ts +1 -1
  141. package/dist/lib/types/component/display/Markdown.d.ts +42 -1
  142. package/dist/lib/types/component/display/MarkdownMinimap.d.ts +38 -0
  143. package/dist/lib/types/component/display/MarkdownViewer.d.ts +60 -0
  144. package/dist/lib/types/component/display/index.d.ts +6 -0
  145. package/dist/lib/types/component/editor/CodeEditor.d.ts +13 -0
  146. package/dist/lib/types/component/editor/index.d.ts +1 -1
  147. package/dist/lib/types/component/input/Checkbox.d.ts +1 -1
  148. package/dist/lib/types/component/input/Link.d.ts +0 -1
  149. package/dist/lib/types/component/input/RadioButton.d.ts +1 -1
  150. package/dist/lib/types/component/input/Slider.d.ts +1 -1
  151. package/dist/lib/types/component/input/Text.d.ts +0 -2
  152. package/dist/lib/types/component/input/Toggle.d.ts +1 -1
  153. package/dist/lib/types/component/menubar/MenuBar.d.ts +2 -1
  154. package/dist/lib/types/component/menubar/MenuBarButton.d.ts +0 -1
  155. package/dist/lib/types/component/menubar/ToolBar.d.ts +2 -0
  156. package/dist/lib/types/component/table/Body.d.ts +1 -0
  157. package/dist/lib/types/component/table/Table.d.ts +1 -0
  158. package/dist/lib/types/component/table/cell/SortPriorityBadge.d.ts +1 -1
  159. package/dist/lib/types/component/table/cell/editor/CellEditorPool.d.ts +1 -0
  160. package/dist/lib/types/component/table/cell/editor/Date.d.ts +1 -0
  161. package/dist/lib/types/component/table/cell/editor/DateTime.d.ts +1 -0
  162. package/dist/lib/types/component/table/cell/editor/Time.d.ts +1 -0
  163. package/dist/lib/types/component/tree/Tree.d.ts +9 -1
  164. package/dist/lib/types/component/tree/index.d.ts +1 -1
  165. package/dist/lib/types/component/tree/renderer/Label.d.ts +1 -1
  166. package/dist/lib/types/core/BorderWidths.d.ts +12 -0
  167. package/dist/lib/types/core/Component.d.ts +6 -0
  168. package/dist/lib/types/core/Event.d.ts +2 -0
  169. package/dist/lib/types/core/Theme.d.ts +4 -2
  170. package/dist/lib/types/layout/LayoutConstraints.d.ts +1 -0
  171. package/dist/lib/types/layout/LayoutManager.d.ts +8 -0
  172. package/dist/lib/types/layout/LayoutSerialization.d.ts +3 -0
  173. package/dist/lib/types/overlay/Dock.d.ts +1 -0
  174. package/dist/lib/validation.es.js +1 -1
  175. package/llms.txt +3 -0
  176. package/package.json +15 -15
  177. package/dist/lib/AnchorConstraints-CVrMP9rz.js +0 -2
  178. package/dist/lib/AnchorConstraints-CVrMP9rz.js.map +0 -1
  179. package/dist/lib/Border-Bz29z-_7.js.map +0 -1
  180. package/dist/lib/Button-bjpWruNc.js +0 -2
  181. package/dist/lib/Button-bjpWruNc.js.map +0 -1
  182. package/dist/lib/ComboBox-CBw2VLLN.js +0 -2
  183. package/dist/lib/ComboBox-CBw2VLLN.js.map +0 -1
  184. package/dist/lib/Component-DHqrPwAw.js +0 -2
  185. package/dist/lib/Component-DHqrPwAw.js.map +0 -1
  186. package/dist/lib/Container-CAQpj4yb.js +0 -2
  187. package/dist/lib/DOM-67StIm5G.js +0 -2
  188. package/dist/lib/DragManager-CHWCe3-8.js +0 -2
  189. package/dist/lib/LayoutConstraints-DkctJZXB.js +0 -2
  190. package/dist/lib/LayoutConstraints-DkctJZXB.js.map +0 -1
  191. package/dist/lib/LayoutSerialization-D82UtnDD.js +0 -2
  192. package/dist/lib/LayoutSizes-DG9aW9k6.js +0 -2
  193. package/dist/lib/LayoutSizes-DG9aW9k6.js.map +0 -1
  194. package/dist/lib/List-CUntS8ux.js +0 -2
  195. package/dist/lib/MemoryStore-DT6iWWco.js +0 -2
  196. package/dist/lib/Menu-B_-SQj72.js +0 -2
  197. package/dist/lib/Menu-B_-SQj72.js.map +0 -1
  198. package/dist/lib/MenuButton-C79l8Ysf.js +0 -2
  199. package/dist/lib/MenuButton-C79l8Ysf.js.map +0 -1
  200. package/dist/lib/Panel-D2X33qR6.js +0 -2
  201. package/dist/lib/RadioButton-BJIAQkII.js +0 -2
  202. package/dist/lib/RadioButton-BJIAQkII.js.map +0 -1
  203. package/dist/lib/Scrollbar-CSFK-Y57.js +0 -2
  204. package/dist/lib/Scrollbar-CSFK-Y57.js.map +0 -1
  205. package/dist/lib/Slider-C-kQQYCj.js +0 -2
  206. package/dist/lib/Slider-C-kQQYCj.js.map +0 -1
  207. package/dist/lib/Spacer-D159iJy9.js +0 -2
  208. package/dist/lib/TabButton-CHkXBgCj.js +0 -2
  209. package/dist/lib/TabButton-CHkXBgCj.js.map +0 -1
  210. package/dist/lib/Text-D5pg7taZ.js +0 -2
  211. package/dist/lib/Text-D5pg7taZ.js.map +0 -1
  212. package/dist/lib/VBox-BNegDPs_.js +0 -2
  213. package/dist/lib/VBox-BNegDPs_.js.map +0 -1
  214. package/dist/lib/selectionsEqual-4r5R7pTK.js +0 -2
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./DOM-Ba8YRVel.js";import{l as t,n}from"./Position-PBVBW1JS.js";import{S as r,_ as i,f as a,h as o,m as s,p as c,r as l,t as u,v as d}from"./Component-w65rPK75.js";import{t as f}from"./ListenerBag-WPdKuuds.js";import{t as p}from"./Container-C7RPLQEc.js";import{t as m}from"./Glyph-DeJF_zsR.js";import{t as h}from"./Panel-CpNQTLNF.js";import{t as g}from"./RovingTabIndex-C2Vzq0IX.js";import{a as _,t as v}from"./Tooltip-B_UF5bXD.js";import{t as y}from"./Fit-Cg3dPyZg.js";import{n as b,r as x}from"./VBox-32fxpkDl.js";import{t as S}from"./RadioButton-CCcIaL54.js";import{a as C,o as ee,t as te}from"./Border-CNS6aEXB.js";import{t as w}from"./ProgressSpinner-lAsK26C-.js";import{t as T}from"./Placement-7kqdaK4Z.js";import{t as ne}from"./LayoutConstraints-LIHYYd2F.js";import{t as re}from"./Header-BIFJK9nR.js";import{t as E}from"./Button-T16zSZip.js";import{xmark as ie}from"./glyphs/solid/xmark.es.js";import{window_maximize as D}from"./glyphs/solid/window_maximize.es.js";import{window_minimize as O}from"./glyphs/solid/window_minimize.es.js";import{window_restore as k}from"./glyphs/solid/window_restore.es.js";import{n as A,r as j,t as M}from"./DragManager-UvPHSoRm.js";import{t as ae}from"./TabButton-DNo4ZgV8.js";import{angle_left as oe}from"./glyphs/solid/angle_left.es.js";import{angle_right as se}from"./glyphs/solid/angle_right.es.js";import{angle_up as ce}from"./glyphs/solid/angle_up.es.js";import{angle_down as le}from"./glyphs/solid/angle_down.es.js";import{t as ue}from"./Menu-C0roOCY7.js";var ButtonGroup=class{buttons=[];_groupId=`bg-`+Math.random().toString(36).slice(2,10);_allowDeselect=!1;_rovingTabIndex=null;_listeners=new f;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 S&&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 g;for(let e of this.buttons)this._rovingTabIndex.add(e);return r.addSubtreeListener(e,`keydown`,e=>{e.key===`ArrowRight`||e.key===`ArrowDown`?(e.preventDefault(),this._rovingTabIndex.moveNext()):(e.key===`ArrowLeft`||e.key===`ArrowUp`)&&(e.preventDefault(),this._rovingTabIndex.movePrev())}),this}},N=o(ButtonGroup),P=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}({}),F=`snap-target`,de={tag:`div`},WindowBorder=class extends u{_direction=0;_listeners=new f;_dragStartListener;_dragStopListener;_fireDragListener;_snapTarget=!1;get snapTargetStyleRule(){return this._snapTargetStyleRule??=this.createStyleRule(`.snap-target`)}constructor(e,t,n){super(t,{...de,...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`,`var(--ts-ui-window-snap-glow, 0 0 0 2px rgba(30, 100, 200, 0.7))`)}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:{[F]:t}}),this}onDragStart(){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),C(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),ee(),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:[F]}),t}},I=o(WindowBorder),L=new WeakSet;function swallowUnconsumedWheel(e){i(e)&&e.preventDefault()}function trapWheel(e){L.has(e)||(L.add(e),r.addSubtreeListener(e,`wheel`,swallowUnconsumedWheel,{passive:!1}))}function untrapWheel(e){L.has(e)&&(L.delete(e),r.removeSubtreeListener(e,`wheel`,swallowUnconsumedWheel))}function createSpinnerWrap(){let e=new u;return e.setLayoutManager(new y({fill:s.NONE})),e.addComponent(new w(24)),e}var R=4,z=150,B=4,V=200,H=24,U=26,fe={x:50,y:50,width:400,height:300,insets:new n(R,R,R,R),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},pe=10,W=class AbstractWindow extends p{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;_bodyHost=null;_rail=null;_windowListeners=new f;_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,{...fe,...t??{}}),this.subscribeTheme(this._boundOnThemeReflow),this._borderComponents={west:new I(P.WEST),northwest:new I(P.NORTHWEST),north:new I(P.NORTH),northeast:new I(P.NORTHEAST),east:new I(P.EAST),southeast:new I(P.SOUTHEAST),south:new I(P.SOUTH),southwest:new I(P.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(pe);this.setVisible(!1),this.setContain(`layout`),this.getAria().setTabIndex(-1),r.addSubtreeListener(this,`mousedown`,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(_.register(this),trapWheel(this),this.doLayout(),this.bringToFront(),AbstractWindow.openWindows.add(this),_.mount(e),this.setVisible(!0),this._showAnimation?.cancel(),this._showAnimation=d.play(e,{from:{opacity:`0`,transform:`scale(0.97)`},to:{opacity:`1`,transform:`scale(1)`},durationMs:z,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=d.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(){_.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 _.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(),_.unregister(this),untrapWheel(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=d.play(t,{to:{opacity:`0`,transform:`scale(0.97)`},durationMs:z,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()),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{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){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 P.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 P.NORTH:this.setHeight(Math.min(this._resizeOriginH-i,d)),this.setY(o-this.getHeight());break;case P.NORTHEAST:this.setWidth(Math.min(this._resizeOriginW+r,c)),this.setHeight(Math.min(this._resizeOriginH-i,d)),this.setY(o-this.getHeight());break;case P.EAST:this.setWidth(Math.min(this._resizeOriginW+r,c));break;case P.SOUTHEAST:this.setWidth(Math.min(this._resizeOriginW+r,c)),this.setHeight(Math.min(this._resizeOriginH+i,u));break;case P.SOUTH:this.setHeight(Math.min(this._resizeOriginH+i,u));break;case P.SOUTHWEST:this.setWidth(Math.min(this._resizeOriginW-r,l)),this.setHeight(Math.min(this._resizeOriginH+i,u)),this.setX(a-this.getWidth());break;case P.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+B),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===T.EAST||a===T.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 T.EAST:d=e.source.getViewportSize().width-n,f=u;break;case T.WEST:f=u;break;case T.SOUTH:d=u,f=e.source.getViewportSize().height-n;break;case T.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=d.play(t,{from:{transformOrigin:`0 0`,transform:`translate(0, 0) scale(1)`,opacity:`1`},to:{transform:this.railGenieTransform(),opacity:`0`},durationMs:z,properties:[`transform`,`opacity`],onComplete:e})}animateRailExpand(){let e=this.getElement();e&&(this._railExpandAnimation?.cancel(),this._railExpandAnimation=d.play(e,{from:{transformOrigin:`0 0`,transform:this.railGenieTransform(),opacity:`0`},to:{transform:`translate(0, 0) scale(1)`,opacity:`1`},durationMs:z,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 V}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+B),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=d.tween({from:this.currentRect(),to:e,durationMs:z,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(),this._snapTargetBorder=null,!0}},me=[{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(:active)`,styles:{background:`var(--ts-ui-window-control-hover-bg)`}},{suffix:`:active`,styles:{background:`var(--ts-ui-window-control-active-bg)`}}],he=[{suffix:``,styles:{background:`transparent`,border:`1px solid transparent`,boxShadow:`none`}}];function createWindowControlButton(e){return new E({glyph:e,chromeless:!0,styleRules:me,insets:new n(2,2,2,2)})}function createWindowLeadGlyphButton(e){let t=new E({glyph:e,chromeless:!0,styleRules:he,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)}m.register(ie,D,O,k);var WindowHeader=class extends re{_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 u,this._titleRow.setLayoutManager(new x({spacing:8})),this._titleRow.setInsets(new n(0,0,0,5)),this._titleRow.setPointerEvents(`none`),this._titleRow.addComponent(r);let i=new u;i.setLayoutManager(new y({fill:s.HORIZONTAL})),i.setPointerEvents(`none`),i.addComponent(this._titleRow),this.addComponent(i,{placement:T.WEST,anchor:c.WEST,fill:s.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 u,this._trailingRow.setLayoutManager(new x({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:T.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 l.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 m(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()}},G=o(WindowHeader),Window=class extends W{_header;_headerDragShift=!1;_headerDragComponentId=``;_boundCaptureHeaderShift=e=>this.captureHeaderShift(e);constructor(e,t){super(t),this.setLayoutManager(new te);let n=this._options.headerText??e??`Window`;this._header=new G(n),this.addComponent(this._header,{placement:T.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`,e=>this.onMouseDown(e)),r.addSubtreeListener(this._header,`mousedown`,this._boundCaptureHeaderShift),M.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:T.CENTER})}isChromeComponent(e){return e===this._header}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(),j.set(t.getId(),t)}onHeaderDragEnd(e){j.delete(this._headerDragComponentId),this._headerDragComponentId=``,e&&this.findBodyHost()===null&&this.requestClose()}},K=o(Window);m.register(oe,se,ce,le);var ge=24,_e=80,ve={backgroundColor:`transparent`},ScrollStrip=class extends h{_stepProvider=null;_clip=new h;_leadArrow=null;_trailArrow=null;constructor(e,t){super(e,{...ve,...t??{}}),this._orientation??=`horizontal`,this._scrollable??=!0,this._arrowBackground??=null,this._arrowStep??=_e,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 b({mode:`equal`,spacing:0,stretching:!0}):new x({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?ge:0}ensureArrows(){if(this._leadArrow&&this._trailArrow)return;let t=new E({glyph:`angle-left`}),n=new E({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()}},q=o(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 J=120,Y=30,ye=24,be=4,xe=80,TabIndicator=class extends u{_mainPos=0;_mainExtent=0;_side=`north`;constructor(){super(),this.setBackgroundColor(`var(--ts-ui-tab-indicator-color, #1a73e8)`),this.setTransition(`transform ${J}ms ease, width ${J}ms ease, height ${J}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}))}},Se=class TabReorderBar extends u{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 u{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}},Ce={backgroundColor:`var(--ts-ui-tab-toolbar-bg, #eee)`,preferredSize:{width:0,height:Y}},TabBar=class extends p{_tabClip=new q({scrollable:!1});_entries=[];_buttonGroup=new N;_rovingTabIndex=new g({preventScroll:!0});_activeId=null;_listeners=new f;_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 ue;_tools=[];_toolMenuItems=new Map;_toolGroup=new h;_leadGroup=new h;_leadWidget=null;_scrollToSelected=!1;_reorderable=!1;_reorderBar=new Se;_dropTint=new TabDropTint;_dndTeardowns=[];_dragMouseTarget=null;_moveTriggerTeardown=null;_dragShiftHeld=!1;_dragInsertIndex=-1;_springRaiseTimer=null;constructor(e,t){super(e,{...Ce,...t??{}}),this.setLayoutManager(new x({mode:`equal`,spacing:0,stretching:!0})),this._underBorderFullWidth=l.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 x({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 x({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=l.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 u,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 u?e:this.buildDescriptorTool(e);return this._tools.push(t),this._toolGroup.addComponent(t),this.scheduleLayout(),this}buildDescriptorTool(e){let t=new E({glyph:e.glyph});return t.setFlat(!0),v.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}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 ae(t,{glyph:n?.glyph??void 0,closeable:n?.closeable});i.setInsets(this.computeTabButtonInsets(n)),n?.tooltip&&v.attach(i,n.tooltip),i.on(`action`,()=>this.onTabPressed(i));let a=i.getCloseButton()??void 0,onContextMenu=e=>{e.preventDefault(),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`,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),v.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=l.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=l.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?ye:Y;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=l.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 b!==e&&this._toolGroup.setLayoutManager(e?new b({spacing:0,stretching:!0}):new x({spacing:0,stretching:!0})),this._leadGroup.getLayoutManager()instanceof b!==e&&this._leadGroup.setLayoutManager(e?new b({spacing:0,stretching:!0}):new x({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)+be: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.getX();this._indicator.slideTo(r,n,this._side)}positionCloseButtons(){let e=this.isRotatedText(),t=l.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)||xe}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?()=>{}:M.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 M.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,M.isDragging()&&this.emit(`dockhover`)},A))}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.getX())+(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.getX()}if(this._entries.length>0){let e=this._entries[this._entries.length-1].button;return t?e.getY()+e.getHeight():e.getX()+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;e.preventDefault();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;this._entries.forEach(e=>e.button.setSelected(!1)),a.setSelected(!0),this.onTabPressed(a)}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)}},X=o(TabBar),we=480,Te=360,Z=120,Tab=class extends a{_bar=new X;_barVisible=!0;_contents=[];_selectedTabIndex=0;_pendingActiveContent=null;_lastFadedTabIndex=-1;_tabFadeAnimation=null;_listeners=new f;_barIgnoreParentInsets=!1;_detachWindowMode=`strip`;_closeHostWindowWhenEmpty=!1;_idSeq=0;_themeCleanup=null;constructor(e){super(),this._themeCleanup=l.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 u,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 u&&e instanceof E&&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}_onBarDockRequested=(e,t)=>{let n=j.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&&j.set(t.component.getId(),t.component)};_onBarTearOffRequested=(e,t,n,r)=>{let i=this._contents.find(t=>t.id===e);i&&(i.component&&j.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&&j.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 ne,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)}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`,t.materializeAnimation?.cancel(),t.materializeAnimation=d.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=>{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 o=this.getVisibleComponent();!o&&t.length>0&&(o=t[0]),this._bar.setVisible(this._barVisible),this._barVisible&&this._bar.prepareStrip();let c=r??{width:0,height:0},l=i.getLeft(),u=i.getTop(),f=this._barVisible?this._bar.stripThickness():0,p=l,m=u,h=c.width,g=f,_=l,v=u,y=c.width,b=c.height;switch(this._bar.getSide()){case`north`:v=u+f,b=c.height-f;break;case`south`:m=u+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=u+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),!o)return;o.setVisible(!0),o.getAria().setHidden(!1);let x=this.inflateForOverflow({width:y,height:b}),S=x.width,C=x.height;if(this.placeComponent(o,_,v,S,C,s.BOTH),this._contents[this._selectedTabIndex]?.state===`ready`&&this._lastFadedTabIndex!==this._selectedTabIndex){this._lastFadedTabIndex=this._selectedTabIndex;let e=o.getElement();e&&(this._tabFadeAnimation?.cancel(),this._tabFadeAnimation=d.play(e,{from:{opacity:`0`},to:{opacity:`1`},durationMs:Z,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 K(this._bar.getEntryName(e),{closeable:this._bar.isEntryCloseable(e)});o.setX(n),o.setY(r),o.setSize({width:we,height:Te}),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 W);)e=e.getParentComponent();return e instanceof W?e:null}ancestorWindow(){for(let e=this.getContainer();e;e=e.getParentComponent())if(e instanceof W)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=o(Tab),Ee=30,De=120,TabWindow=class extends W{_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 De}chromeHeight(){return Ee}addContent(e){this.moveComponent(e),this._tab.createTab(e)}isChromeComponent(e){return!1}},$=o(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)}export{$ as a,q as c,W as d,trapWheel as f,N as g,I as h,toLayoutSizes as i,K as l,P as m,isRestorableSizes as n,Q as o,untrapWheel as p,normalizeRatios as r,X as s,fromLayoutSizes as t,G as u};
2
+ //# sourceMappingURL=LayoutSizes-DKDK1Cle.js.map