@jimka/typescript-ui 0.5.0 → 0.6.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 (252) hide show
  1. package/dist/lib/{AbstractInput-B10DfLOf.js → AbstractInput-sRNPzWel.js} +2 -2
  2. package/dist/lib/{AbstractInput-B10DfLOf.js.map → AbstractInput-sRNPzWel.js.map} +1 -1
  3. package/dist/lib/Anchor-CwRhdP2J.js +2 -0
  4. package/dist/lib/Anchor-CwRhdP2J.js.map +1 -0
  5. package/dist/lib/AnimatedDropdown-H3Rh-YMZ.js +2 -0
  6. package/dist/lib/AnimatedDropdown-H3Rh-YMZ.js.map +1 -0
  7. package/dist/lib/Border-0DJFDiij.js +2 -0
  8. package/dist/lib/Border-0DJFDiij.js.map +1 -0
  9. package/dist/lib/Button-MpMIYBYJ.js +2 -0
  10. package/dist/lib/Button-MpMIYBYJ.js.map +1 -0
  11. package/dist/lib/{Card-CD3jxshU.js → Card-QYo27r5b.js} +2 -2
  12. package/dist/lib/{Card-CD3jxshU.js.map → Card-QYo27r5b.js.map} +1 -1
  13. package/dist/lib/Checkbox-D0JYK-wc.js +2 -0
  14. package/dist/lib/Checkbox-D0JYK-wc.js.map +1 -0
  15. package/dist/lib/CheckboxMenuRow-CesLhSnp.js +2 -0
  16. package/dist/lib/CheckboxMenuRow-CesLhSnp.js.map +1 -0
  17. package/dist/lib/{CodeEditor-BGlB232h.js → CodeEditor-N1FQodcF.js} +2 -2
  18. package/dist/lib/CodeEditor-N1FQodcF.js.map +1 -0
  19. package/dist/lib/ComboBox-Dx8Tk9yg.js +2 -0
  20. package/dist/lib/ComboBox-Dx8Tk9yg.js.map +1 -0
  21. package/dist/lib/Component-B0ShfPVi.js +2 -0
  22. package/dist/lib/Component-B0ShfPVi.js.map +1 -0
  23. package/dist/lib/Container-abY5Ww3W.js +2 -0
  24. package/dist/lib/{Container-C7RPLQEc.js.map → Container-abY5Ww3W.js.map} +1 -1
  25. package/dist/lib/{DOM-Ba8YRVel.js → DOM-C-Edb3tA.js} +2 -2
  26. package/dist/lib/DOM-C-Edb3tA.js.map +1 -0
  27. package/dist/lib/Dialog-cbA9V17e.js +2 -0
  28. package/dist/lib/Dialog-cbA9V17e.js.map +1 -0
  29. package/dist/lib/{FieldDecorator-HG65hEtk.js → FieldDecorator-BlYMfZ9L.js} +2 -2
  30. package/dist/lib/{FieldDecorator-HG65hEtk.js.map → FieldDecorator-BlYMfZ9L.js.map} +1 -1
  31. package/dist/lib/{Fit-Cg3dPyZg.js → Fit-BhlB-HAo.js} +2 -2
  32. package/dist/lib/{Fit-Cg3dPyZg.js.map → Fit-BhlB-HAo.js.map} +1 -1
  33. package/dist/lib/{FloatingPanel-D5buuVrQ.js → FloatingPanel-DkJXsZ2D.js} +2 -2
  34. package/dist/lib/{FloatingPanel-D5buuVrQ.js.map → FloatingPanel-DkJXsZ2D.js.map} +1 -1
  35. package/dist/lib/{Glyph-DeJF_zsR.js → Glyph-_VeBacS2.js} +2 -2
  36. package/dist/lib/{Glyph-DeJF_zsR.js.map → Glyph-_VeBacS2.js.map} +1 -1
  37. package/dist/lib/{Grid-BYBohJIA.js → Grid-Daiz7F5d.js} +2 -2
  38. package/dist/lib/Grid-Daiz7F5d.js.map +1 -0
  39. package/dist/lib/GridConstraints-C58LuTqM.js +2 -0
  40. package/dist/lib/{GridConstraints-Bts284FI.js.map → GridConstraints-C58LuTqM.js.map} +1 -1
  41. package/dist/lib/{Header-BIFJK9nR.js → Header-Dql3Zxc6.js} +2 -2
  42. package/dist/lib/{Header-BIFJK9nR.js.map → Header-Dql3Zxc6.js.map} +1 -1
  43. package/dist/lib/{IconText-Dsb1xS-E.js → IconText-PUjhTLlp.js} +2 -2
  44. package/dist/lib/{IconText-Dsb1xS-E.js.map → IconText-PUjhTLlp.js.map} +1 -1
  45. package/dist/lib/LayoutSerialization-CMxunLfV.js +2 -0
  46. package/dist/lib/LayoutSerialization-CMxunLfV.js.map +1 -0
  47. package/dist/lib/List-nx8220Fi.js +2 -0
  48. package/dist/lib/{List-BPd-IXZR.js.map → List-nx8220Fi.js.map} +1 -1
  49. package/dist/lib/MemoryStore-DhPoU-7X.js +2 -0
  50. package/dist/lib/MemoryStore-DhPoU-7X.js.map +1 -0
  51. package/dist/lib/Menu-Q0bpXXze.js +2 -0
  52. package/dist/lib/Menu-Q0bpXXze.js.map +1 -0
  53. package/dist/lib/{MenuButton-BR4KOFld.js → MenuButton-DCXi0tsP.js} +2 -2
  54. package/dist/lib/{MenuButton-BR4KOFld.js.map → MenuButton-DCXi0tsP.js.map} +1 -1
  55. package/dist/lib/OverlayFade-3pof2AJH.js +2 -0
  56. package/dist/lib/OverlayFade-3pof2AJH.js.map +1 -0
  57. package/dist/lib/{Panel-CpNQTLNF.js → Panel-Cy1pdlWO.js} +2 -2
  58. package/dist/lib/{Panel-CpNQTLNF.js.map → Panel-Cy1pdlWO.js.map} +1 -1
  59. package/dist/lib/{Position-PBVBW1JS.js → Position-BwtxouxK.js} +2 -2
  60. package/dist/lib/{Position-PBVBW1JS.js.map → Position-BwtxouxK.js.map} +1 -1
  61. package/dist/lib/{ProgressSpinner-lAsK26C-.js → ProgressSpinner-DK8xEQ9y.js} +2 -2
  62. package/dist/lib/{ProgressSpinner-lAsK26C-.js.map → ProgressSpinner-DK8xEQ9y.js.map} +1 -1
  63. package/dist/lib/RadioButton-BEwpqg1k.js +2 -0
  64. package/dist/lib/{RadioButton-CCcIaL54.js.map → RadioButton-BEwpqg1k.js.map} +1 -1
  65. package/dist/lib/RadioMenuRow-DP5qPyFR.js +2 -0
  66. package/dist/lib/RadioMenuRow-DP5qPyFR.js.map +1 -0
  67. package/dist/lib/{RovingTabIndex-C2Vzq0IX.js → RovingTabIndex-pHEv5oLD.js} +2 -2
  68. package/dist/lib/{RovingTabIndex-C2Vzq0IX.js.map → RovingTabIndex-pHEv5oLD.js.map} +1 -1
  69. package/dist/lib/Scrollbar-t8fFrUVQ.js +2 -0
  70. package/dist/lib/Scrollbar-t8fFrUVQ.js.map +1 -0
  71. package/dist/lib/{Slider-DZ9drUxn.js → Slider-CTbwR6HR.js} +2 -2
  72. package/dist/lib/{Slider-DZ9drUxn.js.map → Slider-CTbwR6HR.js.map} +1 -1
  73. package/dist/lib/{Spacer-SDhOMp2g.js → Spacer-srdN2d2b.js} +2 -2
  74. package/dist/lib/{Spacer-SDhOMp2g.js.map → Spacer-srdN2d2b.js.map} +1 -1
  75. package/dist/lib/TabButton-DLoMQzky.js +2 -0
  76. package/dist/lib/TabButton-DLoMQzky.js.map +1 -0
  77. package/dist/lib/TabCloseButton-CY7BGitY.js +2 -0
  78. package/dist/lib/TabCloseButton-CY7BGitY.js.map +1 -0
  79. package/dist/lib/{Text-CdHf3B-1.js → Text-CMKnK9uB.js} +2 -2
  80. package/dist/lib/{Text-CdHf3B-1.js.map → Text-CMKnK9uB.js.map} +1 -1
  81. package/dist/lib/{Tooltip-B_UF5bXD.js → Tooltip-CUOJOqQi.js} +3 -3
  82. package/dist/lib/Tooltip-CUOJOqQi.js.map +1 -0
  83. package/dist/lib/Tree-C64JNPWJ.js +2 -0
  84. package/dist/lib/Tree-C64JNPWJ.js.map +1 -0
  85. package/dist/lib/VBox-DfJPWXqc.js +2 -0
  86. package/dist/lib/VBox-DfJPWXqc.js.map +1 -0
  87. package/dist/lib/VirtualScroller-DTIn19o1.js +2 -0
  88. package/dist/lib/VirtualScroller-DTIn19o1.js.map +1 -0
  89. package/dist/lib/assets/StoreWorker-B5NwRM2I.js +2 -0
  90. package/dist/lib/assets/StoreWorker-B5NwRM2I.js.map +1 -0
  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/container.es.js +1 -1
  95. package/dist/lib/component/container.es.js.map +1 -1
  96. package/dist/lib/component/diagram.es.js +1 -1
  97. package/dist/lib/component/diagram.es.js.map +1 -1
  98. package/dist/lib/component/display.es.js +1 -1
  99. package/dist/lib/component/display.es.js.map +1 -1
  100. package/dist/lib/component/editor.es.js +2 -2
  101. package/dist/lib/component/editor.es.js.map +1 -1
  102. package/dist/lib/component/input.es.js +1 -1
  103. package/dist/lib/component/input.es.js.map +1 -1
  104. package/dist/lib/component/list.es.js +1 -1
  105. package/dist/lib/component/list.es.js.map +1 -1
  106. package/dist/lib/component/menubar.es.js +1 -1
  107. package/dist/lib/component/menubar.es.js.map +1 -1
  108. package/dist/lib/component/table.es.js +6 -3
  109. package/dist/lib/component/table.es.js.map +1 -1
  110. package/dist/lib/component/tree.es.js +1 -1
  111. package/dist/lib/core.es.js +1 -1
  112. package/dist/lib/core.es.js.map +1 -1
  113. package/dist/lib/data.es.js +1 -1
  114. package/dist/lib/glyphs/solid/index.es.js +1 -1
  115. package/dist/lib/layout.es.js +1 -1
  116. package/dist/lib/layout.es.js.map +1 -1
  117. package/dist/lib/overlay.es.js +1 -1
  118. package/dist/lib/overlay.es.js.map +1 -1
  119. package/dist/lib/primitive.es.js +1 -1
  120. package/dist/lib/router.es.js +1 -1
  121. package/dist/lib/router.es.js.map +1 -1
  122. package/dist/lib/selectionsEqual-gMG7gCVI.js +2 -0
  123. package/dist/lib/selectionsEqual-gMG7gCVI.js.map +1 -0
  124. package/dist/lib/types/component/button/Button.d.ts +13 -0
  125. package/dist/lib/types/component/button/MenuButton.d.ts +1 -0
  126. package/dist/lib/types/component/button/PopupButton.d.ts +22 -0
  127. package/dist/lib/types/component/button/TabButton.d.ts +4 -0
  128. package/dist/lib/types/component/button/index.d.ts +2 -0
  129. package/dist/lib/types/component/container/CheckboxMenuRow.d.ts +33 -0
  130. package/dist/lib/types/component/container/CollapseButton.d.ts +11 -3
  131. package/dist/lib/types/component/container/MenuItem.d.ts +15 -5
  132. package/dist/lib/types/component/container/MenuRow.d.ts +24 -0
  133. package/dist/lib/types/component/container/MenuSeparator.d.ts +4 -2
  134. package/dist/lib/types/component/container/RadioMenuRow.d.ts +33 -0
  135. package/dist/lib/types/component/container/Scrollbar.d.ts +5 -0
  136. package/dist/lib/types/component/container/SplitGutter.d.ts +7 -2
  137. package/dist/lib/types/component/container/TabBar.d.ts +2 -0
  138. package/dist/lib/types/component/container/WindowBorder.d.ts +1 -1
  139. package/dist/lib/types/component/container/index.d.ts +6 -1
  140. package/dist/lib/types/component/display/WebGLCanvas.d.ts +1 -0
  141. package/dist/lib/types/component/input/AbstractCalendarDropdown.d.ts +2 -0
  142. package/dist/lib/types/component/input/AbstractPickerField.d.ts +3 -2
  143. package/dist/lib/types/component/list/AbstractSelectableList.d.ts +1 -1
  144. package/dist/lib/types/component/list/MultiSelectList.d.ts +2 -1
  145. package/dist/lib/types/component/shared/VirtualRowView.d.ts +2 -0
  146. package/dist/lib/types/component/table/Body.d.ts +22 -1
  147. package/dist/lib/types/component/table/Column.d.ts +3 -1
  148. package/dist/lib/types/component/table/ColumnConfig.d.ts +2 -0
  149. package/dist/lib/types/component/table/ColumnFilter.d.ts +27 -0
  150. package/dist/lib/types/component/table/Header.d.ts +30 -3
  151. package/dist/lib/types/component/table/Row.d.ts +4 -0
  152. package/dist/lib/types/component/table/Table.d.ts +29 -0
  153. package/dist/lib/types/component/table/TableExporter.d.ts +4 -3
  154. package/dist/lib/types/component/table/TreeBody.d.ts +2 -1
  155. package/dist/lib/types/component/table/cell/CellText.d.ts +9 -0
  156. package/dist/lib/types/component/table/cell/Filter.d.ts +54 -0
  157. package/dist/lib/types/component/table/cell/FilterClauseBadge.d.ts +21 -0
  158. package/dist/lib/types/component/table/cell/GroupSeparator.d.ts +9 -0
  159. package/dist/lib/types/component/table/cell/Header.d.ts +1 -0
  160. package/dist/lib/types/component/table/cell/editor/CellEditor.d.ts +1 -0
  161. package/dist/lib/types/component/table/cell/renderer/CellRenderer.d.ts +1 -0
  162. package/dist/lib/types/component/table/cell/renderer/Combo.d.ts +2 -0
  163. package/dist/lib/types/component/table/cell/renderer/Date.d.ts +2 -0
  164. package/dist/lib/types/component/table/cell/renderer/DateTime.d.ts +2 -0
  165. package/dist/lib/types/component/table/cell/renderer/Filter.d.ts +16 -0
  166. package/dist/lib/types/component/table/cell/renderer/Glyph.d.ts +1 -0
  167. package/dist/lib/types/component/table/cell/renderer/Link.d.ts +2 -0
  168. package/dist/lib/types/component/table/cell/renderer/Number.d.ts +3 -1
  169. package/dist/lib/types/component/table/cell/renderer/String.d.ts +2 -0
  170. package/dist/lib/types/component/table/cell/renderer/Time.d.ts +2 -0
  171. package/dist/lib/types/component/table/cell/renderer/TreeCell.d.ts +1 -0
  172. package/dist/lib/types/component/table/index.d.ts +6 -0
  173. package/dist/lib/types/component/tree/Tree.d.ts +17 -1
  174. package/dist/lib/types/component/tree/index.d.ts +1 -1
  175. package/dist/lib/types/core/AnimatedDropdown.d.ts +0 -9
  176. package/dist/lib/types/core/Body.d.ts +4 -0
  177. package/dist/lib/types/core/ClassStyleRules.d.ts +1 -0
  178. package/dist/lib/types/core/DOM.d.ts +10 -0
  179. package/dist/lib/types/core/Event.d.ts +11 -2
  180. package/dist/lib/types/core/OverlayFade.d.ts +12 -0
  181. package/dist/lib/types/core/OverlayPosition.d.ts +6 -0
  182. package/dist/lib/types/core/Theme.d.ts +8 -0
  183. package/dist/lib/types/core/index.d.ts +5 -3
  184. package/dist/lib/types/data/AbstractStore.d.ts +3 -0
  185. package/dist/lib/types/data/FilterDescriptor.d.ts +13 -0
  186. package/dist/lib/types/data/index.d.ts +2 -1
  187. package/dist/lib/types/data/temporalText.d.ts +2 -0
  188. package/dist/lib/types/layout/BoxLayout.d.ts +6 -1
  189. package/dist/lib/types/layout/Grid.d.ts +1 -0
  190. package/dist/lib/types/layout/HFlow.d.ts +1 -1
  191. package/dist/lib/types/layout/Split.d.ts +10 -1
  192. package/dist/lib/types/layout/Tab.d.ts +7 -1
  193. package/dist/lib/types/layout/VFlow.d.ts +1 -1
  194. package/dist/lib/types/layout/index.d.ts +1 -1
  195. package/dist/lib/types/overlay/Dock.d.ts +1 -0
  196. package/dist/lib/types/overlay/Menu.d.ts +1 -1
  197. package/dist/lib/types/overlay/Popover.d.ts +3 -0
  198. package/dist/lib/types/overlay/PopupPanel.d.ts +17 -0
  199. package/dist/lib/types/overlay/Window.d.ts +2 -0
  200. package/dist/lib/types/overlay/index.d.ts +2 -0
  201. package/dist/lib/types/router/RoutePattern.d.ts +7 -0
  202. package/dist/lib/types/router/Router.d.ts +6 -2
  203. package/dist/lib/types/router/index.d.ts +1 -1
  204. package/dist/lib/validation.es.js +1 -1
  205. package/llms.txt +4 -0
  206. package/package.json +1 -1
  207. package/dist/lib/AbstractBooleanInput-CbW7ZrDT.js +0 -2
  208. package/dist/lib/AbstractBooleanInput-CbW7ZrDT.js.map +0 -1
  209. package/dist/lib/Anchor-BsblS5it.js +0 -2
  210. package/dist/lib/Anchor-BsblS5it.js.map +0 -1
  211. package/dist/lib/AnimatedDropdown-kL47HPGP.js +0 -2
  212. package/dist/lib/AnimatedDropdown-kL47HPGP.js.map +0 -1
  213. package/dist/lib/Border-CNS6aEXB.js +0 -2
  214. package/dist/lib/Border-CNS6aEXB.js.map +0 -1
  215. package/dist/lib/Button-T16zSZip.js +0 -2
  216. package/dist/lib/Button-T16zSZip.js.map +0 -1
  217. package/dist/lib/CodeEditor-BGlB232h.js.map +0 -1
  218. package/dist/lib/ComboBox-C9FYMuLv.js +0 -2
  219. package/dist/lib/ComboBox-C9FYMuLv.js.map +0 -1
  220. package/dist/lib/Component-w65rPK75.js +0 -2
  221. package/dist/lib/Component-w65rPK75.js.map +0 -1
  222. package/dist/lib/Container-C7RPLQEc.js +0 -2
  223. package/dist/lib/DOM-Ba8YRVel.js.map +0 -1
  224. package/dist/lib/DragManager-UvPHSoRm.js +0 -2
  225. package/dist/lib/DragManager-UvPHSoRm.js.map +0 -1
  226. package/dist/lib/Grid-BYBohJIA.js.map +0 -1
  227. package/dist/lib/GridConstraints-Bts284FI.js +0 -2
  228. package/dist/lib/LayoutSerialization-ySzY1h2l.js +0 -2
  229. package/dist/lib/LayoutSerialization-ySzY1h2l.js.map +0 -1
  230. package/dist/lib/LayoutSizes-DKDK1Cle.js +0 -2
  231. package/dist/lib/LayoutSizes-DKDK1Cle.js.map +0 -1
  232. package/dist/lib/List-BPd-IXZR.js +0 -2
  233. package/dist/lib/MemoryStore-BgP7-Uzn.js +0 -2
  234. package/dist/lib/MemoryStore-BgP7-Uzn.js.map +0 -1
  235. package/dist/lib/Menu-C0roOCY7.js +0 -2
  236. package/dist/lib/Menu-C0roOCY7.js.map +0 -1
  237. package/dist/lib/RadioButton-CCcIaL54.js +0 -2
  238. package/dist/lib/Scrollbar-C3ZZyZ1e.js +0 -2
  239. package/dist/lib/Scrollbar-C3ZZyZ1e.js.map +0 -1
  240. package/dist/lib/TabButton-DNo4ZgV8.js +0 -2
  241. package/dist/lib/TabButton-DNo4ZgV8.js.map +0 -1
  242. package/dist/lib/Tooltip-B_UF5bXD.js.map +0 -1
  243. package/dist/lib/Tree-C7qLbIYH.js +0 -2
  244. package/dist/lib/Tree-C7qLbIYH.js.map +0 -1
  245. package/dist/lib/VBox-32fxpkDl.js +0 -2
  246. package/dist/lib/VBox-32fxpkDl.js.map +0 -1
  247. package/dist/lib/VirtualScroller-cvFNMS7U.js +0 -2
  248. package/dist/lib/VirtualScroller-cvFNMS7U.js.map +0 -1
  249. package/dist/lib/assets/StoreWorker-CgOBYoai.js +0 -2
  250. package/dist/lib/assets/StoreWorker-CgOBYoai.js.map +0 -1
  251. package/dist/lib/selectionsEqual-BrTxPMmK.js +0 -2
  252. package/dist/lib/selectionsEqual-BrTxPMmK.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{n as e}from"./Position-PBVBW1JS.js";import{h as t,m as n,p as r}from"./Component-w65rPK75.js";import{t as i}from"./Container-C7RPLQEc.js";import{t as a}from"./Text-CdHf3B-1.js";import{t as o}from"./Border-CNS6aEXB.js";import{t as s}from"./Placement-7kqdaK4Z.js";var c={insets:new e(4,4,4,4)},Header=class extends i{_text;constructor(e,t,i){super(t,{...c,tag:`header`,...i??{}}),this.setLayoutManager(new o),this._text=new a(e),this._options.fontWeight===void 0&&this._text.setFontWeight(`bold`),this._options.fontSize===void 0&&this._text.setFontSize(`--ts-ui-header-font-size`),this._text.setPointerEvents(`none`),this.addComponent(this._text,{placement:s.WEST,anchor:r.WEST,fill:n.HORIZONTAL}),this.subscribeTheme(()=>{this.updatePreferredSize()}),this._options.preferredSize===void 0&&this.updatePreferredSize(),this._options.text!==void 0&&this._text.setText(this._options.text),this._options.textAlign!==void 0&&this._text.setTextAlign(this._options.textAlign),this._options.textShadow!==void 0&&this._text.setTextShadow(this._options.textShadow),this._options.fontFamily!==void 0&&this._text.setFontFamily(this._options.fontFamily),this._options.fontSize!==void 0&&this._text.setFontSize(this._options.fontSize),this._options.fontWeight!==void 0&&this._text.setFontWeight(this._options.fontWeight),this._options.fontStyle!==void 0&&this._text.setFontStyle(this._options.fontStyle),this._options.fontVariant!==void 0&&this._text.setFontVariant(this._options.fontVariant),this._options.fontStretch!==void 0&&this._text.setFontStretch(this._options.fontStretch),this._options.fontKerning!==void 0&&this._text.setFontKerning(this._options.fontKerning),this._options.fontSizeAdjust!==void 0&&this._text.setFontSizeAdjust(this._options.fontSizeAdjust),this._options.lineHeight!==void 0&&this._text.setLineHeight(this._options.lineHeight),this._options.textOverflow!==void 0&&this._text.setTextOverflow(this._options.textOverflow)}applyOptions(e){return super.applyOptions(e),e.text!==void 0&&(this._options.text=e.text),e.textAlign!==void 0&&(this._options.textAlign=e.textAlign),e.textShadow!==void 0&&(this._options.textShadow=e.textShadow),e.fontFamily!==void 0&&(this._options.fontFamily=e.fontFamily),e.fontSize!==void 0&&(this._options.fontSize=e.fontSize),e.fontWeight!==void 0&&(this._options.fontWeight=e.fontWeight),e.fontStyle!==void 0&&(this._options.fontStyle=e.fontStyle),e.fontVariant!==void 0&&(this._options.fontVariant=e.fontVariant),e.fontStretch!==void 0&&(this._options.fontStretch=e.fontStretch),e.fontKerning!==void 0&&(this._options.fontKerning=e.fontKerning),e.fontSizeAdjust!==void 0&&(this._options.fontSizeAdjust=e.fontSizeAdjust),e.lineHeight!==void 0&&(this._options.lineHeight=e.lineHeight),e.textOverflow!==void 0&&(this._options.textOverflow=e.textOverflow),this}updatePreferredSize(){let e=this._text.getPreferredSize(),t=this.getInsets(),n=(e?e.height:20)+t.getTop()+t.getBottom();this.setPreferredSize({width:100,height:n})}getText(){return this._text}getBaseline(){return this.wrapInnerBaseline(this._text.getBaseline())}},l=t(Header);export{l as t};
2
- //# sourceMappingURL=Header-BIFJK9nR.js.map
1
+ import{n as e}from"./Position-BwtxouxK.js";import{h as t,m as n,p as r}from"./Component-B0ShfPVi.js";import{t as i}from"./Container-abY5Ww3W.js";import{t as a}from"./Text-CMKnK9uB.js";import{t as o}from"./Placement-7kqdaK4Z.js";import{t as s}from"./Border-0DJFDiij.js";var c={insets:new e(4,4,4,4)},Header=class extends i{_text;constructor(e,t,i){super(t,{...c,tag:`header`,...i??{}}),this.setLayoutManager(new s),this._text=new a(e),this._options.fontWeight===void 0&&this._text.setFontWeight(`bold`),this._options.fontSize===void 0&&this._text.setFontSize(`--ts-ui-header-font-size`),this._text.setPointerEvents(`none`),this.addComponent(this._text,{placement:o.WEST,anchor:r.WEST,fill:n.HORIZONTAL}),this.subscribeTheme(()=>{this.updatePreferredSize()}),this._options.preferredSize===void 0&&this.updatePreferredSize(),this._options.text!==void 0&&this._text.setText(this._options.text),this._options.textAlign!==void 0&&this._text.setTextAlign(this._options.textAlign),this._options.textShadow!==void 0&&this._text.setTextShadow(this._options.textShadow),this._options.fontFamily!==void 0&&this._text.setFontFamily(this._options.fontFamily),this._options.fontSize!==void 0&&this._text.setFontSize(this._options.fontSize),this._options.fontWeight!==void 0&&this._text.setFontWeight(this._options.fontWeight),this._options.fontStyle!==void 0&&this._text.setFontStyle(this._options.fontStyle),this._options.fontVariant!==void 0&&this._text.setFontVariant(this._options.fontVariant),this._options.fontStretch!==void 0&&this._text.setFontStretch(this._options.fontStretch),this._options.fontKerning!==void 0&&this._text.setFontKerning(this._options.fontKerning),this._options.fontSizeAdjust!==void 0&&this._text.setFontSizeAdjust(this._options.fontSizeAdjust),this._options.lineHeight!==void 0&&this._text.setLineHeight(this._options.lineHeight),this._options.textOverflow!==void 0&&this._text.setTextOverflow(this._options.textOverflow)}applyOptions(e){return super.applyOptions(e),e.text!==void 0&&(this._options.text=e.text),e.textAlign!==void 0&&(this._options.textAlign=e.textAlign),e.textShadow!==void 0&&(this._options.textShadow=e.textShadow),e.fontFamily!==void 0&&(this._options.fontFamily=e.fontFamily),e.fontSize!==void 0&&(this._options.fontSize=e.fontSize),e.fontWeight!==void 0&&(this._options.fontWeight=e.fontWeight),e.fontStyle!==void 0&&(this._options.fontStyle=e.fontStyle),e.fontVariant!==void 0&&(this._options.fontVariant=e.fontVariant),e.fontStretch!==void 0&&(this._options.fontStretch=e.fontStretch),e.fontKerning!==void 0&&(this._options.fontKerning=e.fontKerning),e.fontSizeAdjust!==void 0&&(this._options.fontSizeAdjust=e.fontSizeAdjust),e.lineHeight!==void 0&&(this._options.lineHeight=e.lineHeight),e.textOverflow!==void 0&&(this._options.textOverflow=e.textOverflow),this}updatePreferredSize(){let e=this._text.getPreferredSize(),t=this.getInsets(),n=(e?e.height:20)+t.getTop()+t.getBottom();this.setPreferredSize({width:100,height:n})}getText(){return this._text}getBaseline(){return this.wrapInnerBaseline(this._text.getBaseline())}},l=t(Header);export{l as t};
2
+ //# sourceMappingURL=Header-Dql3Zxc6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header-BIFJK9nR.js","names":[],"sources":["../../src/typescript/lib/component/display/Header.ts"],"sourcesContent":["// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0\n\nimport { Border as BorderLayout } from \"~/layout/Border.js\";\nimport { Text, TextOptions } from \"~/component/input/Text.js\";\nimport { Insets } from \"~/primitive/Insets.js\";\nimport { AnchorType } from \"~/layout/AnchorType.js\";\nimport { FillType } from \"~/layout/FillType.js\";\nimport { Placement } from \"~/primitive/Placement.js\";\nimport { Container } from \"~/core/Container.js\";\nimport { callable } from \"~/core/Callable.js\";\n\n/**\n * Construction-time options for {@link Header}. Text and font fields target\n * the inner header label, not the header bar itself.\n *\n * @category Components\n */\nexport interface HeaderOptions extends TextOptions {\n}\n\n/**\n * User-overridable defaults forwarded to `super` via the options bag. The\n * cascade in `Container`/`Component` dispatches each present setter once with the\n * final value. Font fields are handled in the constructor body once the inner\n * `text` child exists — they're written into `_options` by `applyOptions` and\n * dispatched from there.\n */\nconst _defaultHeaderOptions: Partial<HeaderOptions> = {\n // Static content padding around the header label — the single source of the\n // bar's padding (WindowHeader subclasses Header without passing its own\n // insets). 4px matches the spacing headers carried implicitly from Panel\n // before the Container reparent; it is not theme-derived, so headers do not\n // reflow their padding on a theme change.\n insets: new Insets(4, 4, 4, 4),\n};\n\n/**\n * A header bar component containing a left-aligned text label.\n *\n * Renders a `<header>` element with a Border layout manager and a bold label\n * anchored to the west side.\n *\n * @category Components\n */\nclass Header<TOptions extends HeaderOptions = HeaderOptions> extends Container<TOptions> {\n\n private _text!: Text;\n\n /**\n * @param text - The header's label text.\n * @param options - Optional construction-time options.\n * @param subclassDefaults - Per-subclass default bag layered over this\n * class's defaults; subclasses forward their `_defaultXxxOptions`\n * constant here.\n */\n constructor(text: string, options?: TOptions, subclassDefaults?: Partial<TOptions>) {\n super(\n options,\n {\n ..._defaultHeaderOptions,\n tag: \"header\",\n ...(subclassDefaults ?? {}),\n } as Partial<TOptions>,\n );\n\n this.setLayoutManager(new BorderLayout());\n\n // Build the inner text label. Font defaults are applied here when the\n // caller didn't supply an override — the cascade can't reach `this.text`\n // because it doesn't exist yet during `super`.\n this._text = new Text(text);\n if (this._options.fontWeight === undefined) {\n this._text.setFontWeight(\"bold\");\n }\n if (this._options.fontSize === undefined) {\n this._text.setFontSize(\"--ts-ui-header-font-size\");\n }\n this._text.setPointerEvents(\"none\");\n\n this.addComponent(this._text, {\n placement: Placement.WEST,\n anchor: AnchorType.WEST,\n fill: FillType.HORIZONTAL\n });\n\n // Recompute the preferred height on theme change: the header font size\n // is theme-bound, so a theme swap can change the label's measured height.\n // The insets are static (see `_defaultHeaderOptions`), so padding is not\n // re-derived here.\n this.subscribeTheme(() => {\n this.updatePreferredSize();\n });\n\n if (this._options.preferredSize === undefined) {\n this.updatePreferredSize();\n }\n\n // Late-built state: font/text fields written pure into `_options` by\n // the super-time cascade. Dispatch them now that `this.text` exists.\n if (this._options.text !== undefined) {\n this._text.setText(this._options.text);\n }\n if (this._options.textAlign !== undefined) {\n this._text.setTextAlign(this._options.textAlign);\n }\n if (this._options.textShadow !== undefined) {\n this._text.setTextShadow(this._options.textShadow);\n }\n if (this._options.fontFamily !== undefined) {\n this._text.setFontFamily(this._options.fontFamily);\n }\n if (this._options.fontSize !== undefined) {\n this._text.setFontSize(this._options.fontSize);\n }\n if (this._options.fontWeight !== undefined) {\n this._text.setFontWeight(this._options.fontWeight);\n }\n if (this._options.fontStyle !== undefined) {\n this._text.setFontStyle(this._options.fontStyle);\n }\n if (this._options.fontVariant !== undefined) {\n this._text.setFontVariant(this._options.fontVariant);\n }\n if (this._options.fontStretch !== undefined) {\n this._text.setFontStretch(this._options.fontStretch);\n }\n if (this._options.fontKerning !== undefined) {\n this._text.setFontKerning(this._options.fontKerning);\n }\n if (this._options.fontSizeAdjust !== undefined) {\n this._text.setFontSizeAdjust(this._options.fontSizeAdjust);\n }\n if (this._options.lineHeight !== undefined) {\n this._text.setLineHeight(this._options.lineHeight);\n }\n if (this._options.textOverflow !== undefined) {\n this._text.setTextOverflow(this._options.textOverflow);\n }\n }\n\n /**\n * Applies a {@link HeaderOptions} bag. Inherited Container/Component fields\n * cascade through `super.applyOptions`; text-targeting fields are written\n * pure into `_options` here and dispatched from the constructor body once\n * `this.text` exists.\n *\n * @param options - The options bag carrying the values to apply.\n */\n protected applyOptions(options: TOptions): this {\n super.applyOptions(options);\n\n if (options.text !== undefined) this._options.text = options.text;\n if (options.textAlign !== undefined) this._options.textAlign = options.textAlign;\n if (options.textShadow !== undefined) this._options.textShadow = options.textShadow;\n if (options.fontFamily !== undefined) this._options.fontFamily = options.fontFamily;\n if (options.fontSize !== undefined) this._options.fontSize = options.fontSize;\n if (options.fontWeight !== undefined) this._options.fontWeight = options.fontWeight;\n if (options.fontStyle !== undefined) this._options.fontStyle = options.fontStyle;\n if (options.fontVariant !== undefined) this._options.fontVariant = options.fontVariant;\n if (options.fontStretch !== undefined) this._options.fontStretch = options.fontStretch;\n if (options.fontKerning !== undefined) this._options.fontKerning = options.fontKerning;\n if (options.fontSizeAdjust !== undefined) this._options.fontSizeAdjust = options.fontSizeAdjust;\n if (options.lineHeight !== undefined) this._options.lineHeight = options.lineHeight;\n if (options.textOverflow !== undefined) this._options.textOverflow = options.textOverflow;\n\n return this;\n }\n\n /**\n * Recalculates the preferred height from the text component's measured preferred size.\n *\n * Called at construction time and after each theme change so that font-size\n * adjustments propagate to the header's layout hint automatically. `protected`\n * so a subclass can override the derivation — `WindowHeader` substitutes a\n * chrome-band thickness so its stretched controls fill the bar.\n */\n protected updatePreferredSize(): void {\n const textSize = this._text.getPreferredSize();\n const insets = this.getInsets();\n const textHeight = textSize ? textSize.height : 20;\n const preferredHeight = textHeight\n + insets.getTop()\n + insets.getBottom();\n\n this.setPreferredSize({ width: 100, height: preferredHeight });\n }\n\n /**\n * Returns the Text child used to display the header text.\n *\n * @returns The internal Text instance.\n */\n getText() {\n return this._text;\n }\n\n /**\n * Returns the offset from the top of the header to the label's text baseline.\n *\n * @returns The baseline offset in pixels, or `null` when the label has no baseline.\n */\n getBaseline(): number | null {\n return this.wrapInnerBaseline(this._text.getBaseline());\n }\n}\n\nconst HeaderCallable = callable(Header);\ntype HeaderCallable<TOptions extends HeaderOptions = HeaderOptions> = Header<TOptions>;\nexport {\n Header as _Header,\n HeaderCallable as Header\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Header-Dql3Zxc6.js","names":[],"sources":["../../src/typescript/lib/component/display/Header.ts"],"sourcesContent":["// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0\n\nimport { Border as BorderLayout } from \"~/layout/Border.js\";\nimport { Text, TextOptions } from \"~/component/input/Text.js\";\nimport { Insets } from \"~/primitive/Insets.js\";\nimport { AnchorType } from \"~/layout/AnchorType.js\";\nimport { FillType } from \"~/layout/FillType.js\";\nimport { Placement } from \"~/primitive/Placement.js\";\nimport { Container } from \"~/core/Container.js\";\nimport { callable } from \"~/core/Callable.js\";\n\n/**\n * Construction-time options for {@link Header}. Text and font fields target\n * the inner header label, not the header bar itself.\n *\n * @category Components\n */\nexport interface HeaderOptions extends TextOptions {\n}\n\n/**\n * User-overridable defaults forwarded to `super` via the options bag. The\n * cascade in `Container`/`Component` dispatches each present setter once with the\n * final value. Font fields are handled in the constructor body once the inner\n * `text` child exists — they're written into `_options` by `applyOptions` and\n * dispatched from there.\n */\nconst _defaultHeaderOptions: Partial<HeaderOptions> = {\n // Static content padding around the header label — the single source of the\n // bar's padding (WindowHeader subclasses Header without passing its own\n // insets). 4px matches the spacing headers carried implicitly from Panel\n // before the Container reparent; it is not theme-derived, so headers do not\n // reflow their padding on a theme change.\n insets: new Insets(4, 4, 4, 4),\n};\n\n/**\n * A header bar component containing a left-aligned text label.\n *\n * Renders a `<header>` element with a Border layout manager and a bold label\n * anchored to the west side.\n *\n * @category Components\n */\nclass Header<TOptions extends HeaderOptions = HeaderOptions> extends Container<TOptions> {\n\n private _text!: Text;\n\n /**\n * @param text - The header's label text.\n * @param options - Optional construction-time options.\n * @param subclassDefaults - Per-subclass default bag layered over this\n * class's defaults; subclasses forward their `_defaultXxxOptions`\n * constant here.\n */\n constructor(text: string, options?: TOptions, subclassDefaults?: Partial<TOptions>) {\n super(\n options,\n {\n ..._defaultHeaderOptions,\n tag: \"header\",\n ...(subclassDefaults ?? {}),\n } as Partial<TOptions>,\n );\n\n this.setLayoutManager(new BorderLayout());\n\n // Build the inner text label. Font defaults are applied here when the\n // caller didn't supply an override — the cascade can't reach `this.text`\n // because it doesn't exist yet during `super`.\n this._text = new Text(text);\n if (this._options.fontWeight === undefined) {\n this._text.setFontWeight(\"bold\");\n }\n if (this._options.fontSize === undefined) {\n this._text.setFontSize(\"--ts-ui-header-font-size\");\n }\n this._text.setPointerEvents(\"none\");\n\n this.addComponent(this._text, {\n placement: Placement.WEST,\n anchor: AnchorType.WEST,\n fill: FillType.HORIZONTAL\n });\n\n // Recompute the preferred height on theme change: the header font size\n // is theme-bound, so a theme swap can change the label's measured height.\n // The insets are static (see `_defaultHeaderOptions`), so padding is not\n // re-derived here.\n this.subscribeTheme(() => {\n this.updatePreferredSize();\n });\n\n if (this._options.preferredSize === undefined) {\n this.updatePreferredSize();\n }\n\n // Late-built state: font/text fields written pure into `_options` by\n // the super-time cascade. Dispatch them now that `this.text` exists.\n if (this._options.text !== undefined) {\n this._text.setText(this._options.text);\n }\n if (this._options.textAlign !== undefined) {\n this._text.setTextAlign(this._options.textAlign);\n }\n if (this._options.textShadow !== undefined) {\n this._text.setTextShadow(this._options.textShadow);\n }\n if (this._options.fontFamily !== undefined) {\n this._text.setFontFamily(this._options.fontFamily);\n }\n if (this._options.fontSize !== undefined) {\n this._text.setFontSize(this._options.fontSize);\n }\n if (this._options.fontWeight !== undefined) {\n this._text.setFontWeight(this._options.fontWeight);\n }\n if (this._options.fontStyle !== undefined) {\n this._text.setFontStyle(this._options.fontStyle);\n }\n if (this._options.fontVariant !== undefined) {\n this._text.setFontVariant(this._options.fontVariant);\n }\n if (this._options.fontStretch !== undefined) {\n this._text.setFontStretch(this._options.fontStretch);\n }\n if (this._options.fontKerning !== undefined) {\n this._text.setFontKerning(this._options.fontKerning);\n }\n if (this._options.fontSizeAdjust !== undefined) {\n this._text.setFontSizeAdjust(this._options.fontSizeAdjust);\n }\n if (this._options.lineHeight !== undefined) {\n this._text.setLineHeight(this._options.lineHeight);\n }\n if (this._options.textOverflow !== undefined) {\n this._text.setTextOverflow(this._options.textOverflow);\n }\n }\n\n /**\n * Applies a {@link HeaderOptions} bag. Inherited Container/Component fields\n * cascade through `super.applyOptions`; text-targeting fields are written\n * pure into `_options` here and dispatched from the constructor body once\n * `this.text` exists.\n *\n * @param options - The options bag carrying the values to apply.\n */\n protected applyOptions(options: TOptions): this {\n super.applyOptions(options);\n\n if (options.text !== undefined) this._options.text = options.text;\n if (options.textAlign !== undefined) this._options.textAlign = options.textAlign;\n if (options.textShadow !== undefined) this._options.textShadow = options.textShadow;\n if (options.fontFamily !== undefined) this._options.fontFamily = options.fontFamily;\n if (options.fontSize !== undefined) this._options.fontSize = options.fontSize;\n if (options.fontWeight !== undefined) this._options.fontWeight = options.fontWeight;\n if (options.fontStyle !== undefined) this._options.fontStyle = options.fontStyle;\n if (options.fontVariant !== undefined) this._options.fontVariant = options.fontVariant;\n if (options.fontStretch !== undefined) this._options.fontStretch = options.fontStretch;\n if (options.fontKerning !== undefined) this._options.fontKerning = options.fontKerning;\n if (options.fontSizeAdjust !== undefined) this._options.fontSizeAdjust = options.fontSizeAdjust;\n if (options.lineHeight !== undefined) this._options.lineHeight = options.lineHeight;\n if (options.textOverflow !== undefined) this._options.textOverflow = options.textOverflow;\n\n return this;\n }\n\n /**\n * Recalculates the preferred height from the text component's measured preferred size.\n *\n * Called at construction time and after each theme change so that font-size\n * adjustments propagate to the header's layout hint automatically. `protected`\n * so a subclass can override the derivation — `WindowHeader` substitutes a\n * chrome-band thickness so its stretched controls fill the bar.\n */\n protected updatePreferredSize(): void {\n const textSize = this._text.getPreferredSize();\n const insets = this.getInsets();\n const textHeight = textSize ? textSize.height : 20;\n const preferredHeight = textHeight\n + insets.getTop()\n + insets.getBottom();\n\n this.setPreferredSize({ width: 100, height: preferredHeight });\n }\n\n /**\n * Returns the Text child used to display the header text.\n *\n * @returns The internal Text instance.\n */\n getText() {\n return this._text;\n }\n\n /**\n * Returns the offset from the top of the header to the label's text baseline.\n *\n * @returns The baseline offset in pixels, or `null` when the label has no baseline.\n */\n getBaseline(): number | null {\n return this.wrapInnerBaseline(this._text.getBaseline());\n }\n}\n\nconst HeaderCallable = callable(Header);\ntype HeaderCallable<TOptions extends HeaderOptions = HeaderOptions> = Header<TOptions>;\nexport {\n Header as _Header,\n HeaderCallable as Header\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{n as e}from"./Position-PBVBW1JS.js";import{h as t,t as n}from"./Component-w65rPK75.js";import{t as r}from"./Glyph-DeJF_zsR.js";import{t as i}from"./Text-CdHf3B-1.js";import{r as a}from"./VBox-32fxpkDl.js";var o={gap:2,insets:new e(0,0,0,0)},IconText=class extends n{_glyph;_text;constructor(e,t,n,s){super(n,{...o,layoutManager:new a,...s??{}}),this._glyph=new r(e),this._text=new i(t),this.addComponent(this._glyph),this.addComponent(this._text),this.getLayoutManager().setComponentSpacing(this.getGap()),this._options.glyph!==void 0&&this.setGlyph(this._options.glyph),this._options.text!==void 0&&this.setText(this._options.text)}applyOptions(e){return super.applyOptions(e),e.gap!==void 0&&(this._options.gap=e.gap),e.glyph!==void 0&&(this._options.glyph=e.glyph),e.text!==void 0&&(this._options.text=e.text),this}setGlyph(e){return this.removeComponent(this._glyph),this._glyph=new r(e),this.insertComponent(this._glyph,0),this}setText(e){return this._text.setText(e),this}setGap(e){return this._options.gap=e,this.getLayoutManager().setComponentSpacing(e),this}getGap(){return this._options.gap??this._defaultOptions.gap}getGlyphComponent(){return this._glyph}getTextComponent(){return this._text}},s=t(IconText);export{s as t};
2
- //# sourceMappingURL=IconText-Dsb1xS-E.js.map
1
+ import{n as e}from"./Position-BwtxouxK.js";import{h as t,t as n}from"./Component-B0ShfPVi.js";import{t as r}from"./Glyph-_VeBacS2.js";import{t as i}from"./Text-CMKnK9uB.js";import{r as a}from"./VBox-DfJPWXqc.js";var o={gap:2,insets:new e(0,0,0,0)},IconText=class extends n{_glyph;_text;constructor(e,t,n,s){super(n,{...o,layoutManager:new a,...s??{}}),this._glyph=new r(e),this._text=new i(t),this.addComponent(this._glyph),this.addComponent(this._text),this.getLayoutManager().setComponentSpacing(this.getGap()),this._options.glyph!==void 0&&this.setGlyph(this._options.glyph),this._options.text!==void 0&&this.setText(this._options.text)}applyOptions(e){return super.applyOptions(e),e.gap!==void 0&&(this._options.gap=e.gap),e.glyph!==void 0&&(this._options.glyph=e.glyph),e.text!==void 0&&(this._options.text=e.text),this}setGlyph(e){return this.removeComponent(this._glyph),this._glyph=new r(e),this.insertComponent(this._glyph,0),this}setText(e){return this._text.setText(e),this}setGap(e){return this._options.gap=e,this.getLayoutManager().setComponentSpacing(e),this}getGap(){return this._options.gap??this._defaultOptions.gap}getGlyphComponent(){return this._glyph}getTextComponent(){return this._text}},s=t(IconText);export{s as t};
2
+ //# sourceMappingURL=IconText-PUjhTLlp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconText-Dsb1xS-E.js","names":[],"sources":["../../src/typescript/lib/component/display/IconText.ts"],"sourcesContent":["// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0\n\nimport { Component, ComponentOptions } from \"~/core/Component.js\";\nimport { HBox } from \"~/layout/HBox.js\";\nimport { Insets } from \"~/primitive/Insets.js\";\nimport { Text } from \"~/component/input/Text.js\";\nimport { Glyph } from \"~/component/display/Glyph.js\";\nimport { callable } from \"~/core/Callable.js\";\n\n/**\n * Construction-time options for {@link IconText}.\n *\n * @category Components\n */\nexport interface IconTextOptions extends ComponentOptions {\n glyph?: string;\n text?: string;\n gap?: number;\n}\n\n/**\n * User-overridable defaults forwarded to `super` via the options bag. The\n * cascade dispatches each present setter once with the final value. `gap`\n * is included even though its setter touches `getLayoutManager()`: it is\n * pure-bag-written by `applyOptions` and dispatched after the HBox is built.\n * `layoutManager` is *not* listed because each instance needs its own fresh\n * HBox — sharing one instance across components would corrupt layout state.\n */\nconst _defaultIconTextOptions: Partial<IconTextOptions> = {\n gap: 2,\n insets: new Insets(0, 0, 0, 0),\n};\n\n/**\n * A small composite pairing a leading [`Glyph`](/api/component/display/classes/Glyph)\n * with a trailing standalone [`Text`](/api/component/input/classes/Text), laid out\n * horizontally with a configurable gap (default 2).\n *\n * For form-control labels that need to be associated with an input element, use\n * [`IconLabel`](/api/component/display/classes/IconLabel) instead — its trailing\n * text is a real `<label for=\"…\">`.\n *\n * @example\n * ```typescript\n * import { IconText } from '@jimka/typescript-ui/component/display';\n *\n * panel.addComponent(new IconText('times', 'Close'));\n * ```\n *\n * @category Components\n */\nclass IconText extends Component<IconTextOptions> {\n\n private _glyph!: Glyph;\n private _text!: Text;\n\n /**\n * Constructs an `IconText` pairing the named glyph with the given label text.\n *\n * @param glyph - Registry glyph name. Must be present in the internal `Glyphs` registry.\n * @param text - Label text shown to the right of the glyph.\n * @param options - Optional configuration bag (gap override, common Component fields).\n * @param subclassDefaults - Per-subclass default bag layered over this\n * class's defaults; subclasses forward their `_defaultXxxOptions`\n * constant here.\n */\n constructor(\n glyph: string,\n text: string,\n options?: IconTextOptions,\n subclassDefaults?: Partial<IconTextOptions>,\n ) {\n // The HBox sits in the defaults bag (under user options) so a caller\n // that wants a different layoutManager can still override it.\n super(options, {\n ..._defaultIconTextOptions,\n layoutManager: new HBox(),\n ...(subclassDefaults ?? {}),\n });\n\n this._glyph = new Glyph(glyph);\n this._text = new Text(text);\n\n this.addComponent(this._glyph);\n this.addComponent(this._text);\n\n // Late-built state: `gap` and `glyph`/`text` setters reach into\n // children that didn't exist during `super`'s cascade. Dispatch from\n // `_options` now that the row is built. `gap` always applies its\n // effective value (caller override, else the class default) since the\n // HBox is seeded without spacing.\n (this.getLayoutManager() as HBox).setComponentSpacing(this.getGap());\n if (this._options.glyph !== undefined) {\n this.setGlyph(this._options.glyph);\n }\n if (this._options.text !== undefined) {\n this.setText(this._options.text);\n }\n }\n\n /**\n * Applies an {@link IconTextOptions} bag. Inherited Component fields cascade\n * through `super.applyOptions`; the gap/glyph/text fields are written pure\n * to `_options` here and dispatched from the constructor body once children\n * exist.\n *\n * @param options - The options bag carrying the values to apply.\n */\n protected applyOptions(options: IconTextOptions): this {\n super.applyOptions(options);\n\n if (options.gap !== undefined) this._options.gap = options.gap;\n if (options.glyph !== undefined) this._options.glyph = options.glyph;\n if (options.text !== undefined) this._options.text = options.text;\n\n return this;\n }\n\n /**\n * Replaces the leading glyph with a fresh instance for the given registry name.\n *\n * @param name - Registry glyph name. Must be present in the internal registry.\n *\n * @returns This component, for method chaining.\n */\n setGlyph(name: string): this {\n this.removeComponent(this._glyph);\n\n this._glyph = new Glyph(name);\n this.insertComponent(this._glyph, 0);\n\n return this;\n }\n\n /**\n * Updates the trailing label text.\n *\n * @param text - The new label string.\n *\n * @returns This component, for method chaining.\n */\n setText(text: string): this {\n this._text.setText(text);\n\n return this;\n }\n\n /**\n * Sets the pixel gap between the glyph and the text.\n *\n * @param px - Gap in pixels.\n *\n * @returns This component, for method chaining.\n */\n setGap(px: number): this {\n this._options.gap = px;\n (this.getLayoutManager() as HBox).setComponentSpacing(px);\n\n return this;\n }\n\n /**\n * Returns the effective gap between the glyph and the text — the\n * caller/setter value, else the class default (2).\n *\n * @returns The gap in pixels.\n */\n getGap(): number {\n return (this._options.gap ?? this._defaultOptions.gap)!;\n }\n\n /**\n * Returns the leading glyph component.\n *\n * @returns The [`Glyph`](/api/component/display/classes/Glyph) instance.\n */\n getGlyphComponent(): Glyph {\n return this._glyph;\n }\n\n /**\n * Returns the trailing text component.\n *\n * @returns The [`Text`](/api/component/input/classes/Text) instance.\n */\n getTextComponent(): Text {\n return this._text;\n }\n}\n\nconst IconTextCallable = callable(IconText);\ntype IconTextCallable = IconText;\nexport {\n IconText as _IconText,\n IconTextCallable as IconText\n};\n"],"mappings":"oNA4BA,IAAM,EAAoD,CACtD,IAAQ,EACR,OAAQ,IAAI,EAAO,EAAG,EAAG,EAAG,CAAC,CACjC,EAoBM,SAAN,cAAuB,CAA2B,CAE9C,OACA,MAYA,YACI,EACA,EACA,EACA,EACF,CAGE,MAAM,EAAS,CACX,GAAG,EACH,cAAe,IAAI,EACnB,GAAI,GAAoB,CAAC,CAC7B,CAAC,EAED,KAAK,OAAS,IAAI,EAAM,CAAK,EAC7B,KAAK,MAAS,IAAI,EAAK,CAAI,EAE3B,KAAK,aAAa,KAAK,MAAM,EAC7B,KAAK,aAAa,KAAK,KAAK,EAO5B,KAAM,iBAAiB,CAAC,CAAU,oBAAoB,KAAK,OAAO,CAAC,EAC/D,KAAK,SAAS,QAAU,IAAA,IACxB,KAAK,SAAS,KAAK,SAAS,KAAK,EAEjC,KAAK,SAAS,OAAS,IAAA,IACvB,KAAK,QAAQ,KAAK,SAAS,IAAI,CAEvC,CAUA,aAAuB,EAAgC,CAOnD,OANA,MAAM,aAAa,CAAO,EAEtB,EAAQ,MAAU,IAAA,KAAW,KAAK,SAAS,IAAQ,EAAQ,KAC3D,EAAQ,QAAU,IAAA,KAAW,KAAK,SAAS,MAAQ,EAAQ,OAC3D,EAAQ,OAAU,IAAA,KAAW,KAAK,SAAS,KAAQ,EAAQ,MAExD,IACX,CASA,SAAS,EAAoB,CAMzB,OALA,KAAK,gBAAgB,KAAK,MAAM,EAEhC,KAAK,OAAS,IAAI,EAAM,CAAI,EAC5B,KAAK,gBAAgB,KAAK,OAAQ,CAAC,EAE5B,IACX,CASA,QAAQ,EAAoB,CAGxB,OAFA,KAAK,MAAM,QAAQ,CAAI,EAEhB,IACX,CASA,OAAO,EAAkB,CAIrB,MAHA,MAAK,SAAS,IAAM,EACpB,KAAM,iBAAiB,CAAC,CAAU,oBAAoB,CAAE,EAEjD,IACX,CAQA,QAAiB,CACb,OAAQ,KAAK,SAAS,KAAO,KAAK,gBAAgB,GACtD,CAOA,mBAA2B,CACvB,OAAO,KAAK,MAChB,CAOA,kBAAyB,CACrB,OAAO,KAAK,KAChB,CACJ,EAEM,EAAmB,EAAS,QAAQ"}
1
+ {"version":3,"file":"IconText-PUjhTLlp.js","names":[],"sources":["../../src/typescript/lib/component/display/IconText.ts"],"sourcesContent":["// SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0\n\nimport { Component, ComponentOptions } from \"~/core/Component.js\";\nimport { HBox } from \"~/layout/HBox.js\";\nimport { Insets } from \"~/primitive/Insets.js\";\nimport { Text } from \"~/component/input/Text.js\";\nimport { Glyph } from \"~/component/display/Glyph.js\";\nimport { callable } from \"~/core/Callable.js\";\n\n/**\n * Construction-time options for {@link IconText}.\n *\n * @category Components\n */\nexport interface IconTextOptions extends ComponentOptions {\n glyph?: string;\n text?: string;\n gap?: number;\n}\n\n/**\n * User-overridable defaults forwarded to `super` via the options bag. The\n * cascade dispatches each present setter once with the final value. `gap`\n * is included even though its setter touches `getLayoutManager()`: it is\n * pure-bag-written by `applyOptions` and dispatched after the HBox is built.\n * `layoutManager` is *not* listed because each instance needs its own fresh\n * HBox — sharing one instance across components would corrupt layout state.\n */\nconst _defaultIconTextOptions: Partial<IconTextOptions> = {\n gap: 2,\n insets: new Insets(0, 0, 0, 0),\n};\n\n/**\n * A small composite pairing a leading [`Glyph`](/api/component/display/classes/Glyph)\n * with a trailing standalone [`Text`](/api/component/input/classes/Text), laid out\n * horizontally with a configurable gap (default 2).\n *\n * For form-control labels that need to be associated with an input element, use\n * [`IconLabel`](/api/component/display/classes/IconLabel) instead — its trailing\n * text is a real `<label for=\"…\">`.\n *\n * @example\n * ```typescript\n * import { IconText } from '@jimka/typescript-ui/component/display';\n *\n * panel.addComponent(new IconText('times', 'Close'));\n * ```\n *\n * @category Components\n */\nclass IconText extends Component<IconTextOptions> {\n\n private _glyph!: Glyph;\n private _text!: Text;\n\n /**\n * Constructs an `IconText` pairing the named glyph with the given label text.\n *\n * @param glyph - Registry glyph name. Must be present in the internal `Glyphs` registry.\n * @param text - Label text shown to the right of the glyph.\n * @param options - Optional configuration bag (gap override, common Component fields).\n * @param subclassDefaults - Per-subclass default bag layered over this\n * class's defaults; subclasses forward their `_defaultXxxOptions`\n * constant here.\n */\n constructor(\n glyph: string,\n text: string,\n options?: IconTextOptions,\n subclassDefaults?: Partial<IconTextOptions>,\n ) {\n // The HBox sits in the defaults bag (under user options) so a caller\n // that wants a different layoutManager can still override it.\n super(options, {\n ..._defaultIconTextOptions,\n layoutManager: new HBox(),\n ...(subclassDefaults ?? {}),\n });\n\n this._glyph = new Glyph(glyph);\n this._text = new Text(text);\n\n this.addComponent(this._glyph);\n this.addComponent(this._text);\n\n // Late-built state: `gap` and `glyph`/`text` setters reach into\n // children that didn't exist during `super`'s cascade. Dispatch from\n // `_options` now that the row is built. `gap` always applies its\n // effective value (caller override, else the class default) since the\n // HBox is seeded without spacing.\n (this.getLayoutManager() as HBox).setComponentSpacing(this.getGap());\n if (this._options.glyph !== undefined) {\n this.setGlyph(this._options.glyph);\n }\n if (this._options.text !== undefined) {\n this.setText(this._options.text);\n }\n }\n\n /**\n * Applies an {@link IconTextOptions} bag. Inherited Component fields cascade\n * through `super.applyOptions`; the gap/glyph/text fields are written pure\n * to `_options` here and dispatched from the constructor body once children\n * exist.\n *\n * @param options - The options bag carrying the values to apply.\n */\n protected applyOptions(options: IconTextOptions): this {\n super.applyOptions(options);\n\n if (options.gap !== undefined) this._options.gap = options.gap;\n if (options.glyph !== undefined) this._options.glyph = options.glyph;\n if (options.text !== undefined) this._options.text = options.text;\n\n return this;\n }\n\n /**\n * Replaces the leading glyph with a fresh instance for the given registry name.\n *\n * @param name - Registry glyph name. Must be present in the internal registry.\n *\n * @returns This component, for method chaining.\n */\n setGlyph(name: string): this {\n this.removeComponent(this._glyph);\n\n this._glyph = new Glyph(name);\n this.insertComponent(this._glyph, 0);\n\n return this;\n }\n\n /**\n * Updates the trailing label text.\n *\n * @param text - The new label string.\n *\n * @returns This component, for method chaining.\n */\n setText(text: string): this {\n this._text.setText(text);\n\n return this;\n }\n\n /**\n * Sets the pixel gap between the glyph and the text.\n *\n * @param px - Gap in pixels.\n *\n * @returns This component, for method chaining.\n */\n setGap(px: number): this {\n this._options.gap = px;\n (this.getLayoutManager() as HBox).setComponentSpacing(px);\n\n return this;\n }\n\n /**\n * Returns the effective gap between the glyph and the text — the\n * caller/setter value, else the class default (2).\n *\n * @returns The gap in pixels.\n */\n getGap(): number {\n return (this._options.gap ?? this._defaultOptions.gap)!;\n }\n\n /**\n * Returns the leading glyph component.\n *\n * @returns The [`Glyph`](/api/component/display/classes/Glyph) instance.\n */\n getGlyphComponent(): Glyph {\n return this._glyph;\n }\n\n /**\n * Returns the trailing text component.\n *\n * @returns The [`Text`](/api/component/input/classes/Text) instance.\n */\n getTextComponent(): Text {\n return this._text;\n }\n}\n\nconst IconTextCallable = callable(IconText);\ntype IconTextCallable = IconText;\nexport {\n IconText as _IconText,\n IconTextCallable as IconText\n};\n"],"mappings":"oNA4BA,IAAM,EAAoD,CACtD,IAAQ,EACR,OAAQ,IAAI,EAAO,EAAG,EAAG,EAAG,CAAC,CACjC,EAoBM,SAAN,cAAuB,CAA2B,CAE9C,OACA,MAYA,YACI,EACA,EACA,EACA,EACF,CAGE,MAAM,EAAS,CACX,GAAG,EACH,cAAe,IAAI,EACnB,GAAI,GAAoB,CAAC,CAC7B,CAAC,EAED,KAAK,OAAS,IAAI,EAAM,CAAK,EAC7B,KAAK,MAAS,IAAI,EAAK,CAAI,EAE3B,KAAK,aAAa,KAAK,MAAM,EAC7B,KAAK,aAAa,KAAK,KAAK,EAO5B,KAAM,iBAAiB,CAAC,CAAU,oBAAoB,KAAK,OAAO,CAAC,EAC/D,KAAK,SAAS,QAAU,IAAA,IACxB,KAAK,SAAS,KAAK,SAAS,KAAK,EAEjC,KAAK,SAAS,OAAS,IAAA,IACvB,KAAK,QAAQ,KAAK,SAAS,IAAI,CAEvC,CAUA,aAAuB,EAAgC,CAOnD,OANA,MAAM,aAAa,CAAO,EAEtB,EAAQ,MAAU,IAAA,KAAW,KAAK,SAAS,IAAQ,EAAQ,KAC3D,EAAQ,QAAU,IAAA,KAAW,KAAK,SAAS,MAAQ,EAAQ,OAC3D,EAAQ,OAAU,IAAA,KAAW,KAAK,SAAS,KAAQ,EAAQ,MAExD,IACX,CASA,SAAS,EAAoB,CAMzB,OALA,KAAK,gBAAgB,KAAK,MAAM,EAEhC,KAAK,OAAS,IAAI,EAAM,CAAI,EAC5B,KAAK,gBAAgB,KAAK,OAAQ,CAAC,EAE5B,IACX,CASA,QAAQ,EAAoB,CAGxB,OAFA,KAAK,MAAM,QAAQ,CAAI,EAEhB,IACX,CASA,OAAO,EAAkB,CAIrB,MAHA,MAAK,SAAS,IAAM,EACpB,KAAM,iBAAiB,CAAC,CAAU,oBAAoB,CAAE,EAEjD,IACX,CAQA,QAAiB,CACb,OAAQ,KAAK,SAAS,KAAO,KAAK,gBAAgB,GACtD,CAOA,mBAA2B,CACvB,OAAO,KAAK,MAChB,CAOA,kBAAyB,CACrB,OAAO,KAAK,KAChB,CACJ,EAEM,EAAmB,EAAS,QAAQ"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./DOM-C-Edb3tA.js";import{a as t,l as n,t as r}from"./Position-BwtxouxK.js";import{f as i,h as a,m as o,t as s}from"./Component-B0ShfPVi.js";import{t as c}from"./ListenerBag-WPdKuuds.js";import{t as l}from"./Container-abY5Ww3W.js";import{a as u}from"./Tooltip-CUOJOqQi.js";import{a as d,f,i as p,n as m,r as h,s as g,t as _,u as v}from"./RadioMenuRow-DP5qPyFR.js";import{i as y,n as b,r as x,t as S}from"./CheckboxMenuRow-CesLhSnp.js";import{t as C}from"./LayoutConstraints-LIHYYd2F.js";import{i as w,n as T}from"./Border-0DJFDiij.js";import{t as E}from"./Menu-Q0bpXXze.js";var D=4,O=1,Split=class extends i{_orientation=`horizontal`;_collapseTrigger=`dblclick`;_sizes=new Map;_gutters=[];_collapsed=new Map;_weights=new Map;_pendingCollapsed=[];_listeners=new c;_contextMenu=null;_pendingSizes=null;_dragOriginPointer=0;_dragOriginLhsSize=0;_dragOriginRhsSize=0;_lastAvailableMain=0;_collapseAnimation=null;_pendingCollapseTransitions=[];constructor(e){super(),e&&this.applyOptions(e)}applyOptions(e){if(super.applyOptions(e),e.orientation!==void 0&&this.setOrientation(e.orientation),e.collapseTrigger!==void 0&&(this._collapseTrigger=e.collapseTrigger),e.collapsedPanes!==void 0&&(this._pendingCollapsed=[...e.collapsedPanes]),e.paneSizes!==void 0&&(this._pendingSizes=e.paneSizes.map(e=>({...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)}}}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)}isPaneCollapsed(e){let t=this.getContainer();if(!t)return!1;let n=t.getLaidOutComponents()[e];return n?this._collapsed.get(n)??!1:!1}collapsesTowardStart(e){return e===`west`||e===`north`}paneDirection(e){return this.getLayoutConstraints(e)?.collapseDirection??(this._orientation===`horizontal`?`west`:`north`)}paneCollapsible(e){return this.getLayoutConstraints(e)?.collapsible!==!1}gutterTargetPane(e,t){let n=t[e+1];if(n&&this.paneCollapsible(n)&&!this.collapsesTowardStart(this.paneDirection(n)))return e+1;let r=t[e];return r&&this.paneCollapsible(r)&&this.collapsesTowardStart(this.paneDirection(r))?e:-1}paneServingGutter(e,t){let n=this.paneDirection(t[e]);return this.collapsesTowardStart(n)?e<t.length-1&&this.gutterTargetPane(e,t)===e?e:-1:e>0&&this.gutterTargetPane(e-1,t)===e?e-1:-1}setPaneCollapsed(e,t){let n=this.getContainer();if(!n)return this;let r=n.getLaidOutComponents(),i=r[e];if(!i||this.paneServingGutter(e,r)<0||(this._collapsed.get(i)??!1)===t)return this;this._collapsed.set(i,t),this.emit(`panecollapse`,e,t);let a=[...r.map(e=>({component:e,relayout:!0})),...this._gutters.map(e=>({component:e,relayout:!1}))];return this._collapseAnimation=w(n,i,a,this._collapseAnimation,this._pendingCollapseTransitions,()=>{this._collapseAnimation=null}),this}getOrientation(){return this._orientation}setOrientation(e){return this._orientation=e,this}setPaneSize(e,t){return this._sizes.set(e,t),this}getPaneSize(e){return this._sizes.get(e)}setPaneResizeWeight(e,t){return t===void 0?this._weights.delete(e):this._weights.set(e,t),this}getPaneResizeWeight(e){return this._weights.get(e)}effectiveResizeWeight(e,t){return this._weights.get(e)??this.getLayoutConstraints(e)?.weight??t}clampMain(e,t,r){let i=e.getMinSize(),a=e.getMaxSize(),o=i?r?i.width:i.height:0,s=a?r?a.width:a.height:1/0;return n.clamp(t,o,s)}isPinnedMain(e,t){let n=e.getMinSize(),r=e.getMaxSize();return(n?t?n.width:n.height:0)===(r?t?r.width:r.height:1/0)}isResizePinnedMain(e){return this.effectiveResizeWeight(e,O)===0}seedFromPreferred(e,t){for(let n of e){if(this._sizes.has(n))continue;let e=n.getPreferredSizeConstraint();if(!e)continue;let r=t?e.width:e.height;this._sizes.set(n,this.clampMain(n,r,t))}}transferPaneSize(e,t){let n=this._sizes.get(e);if(n===void 0)return this;this._sizes.set(t,n),this._sizes.delete(e);let r=this._collapsed.get(e);r!==void 0&&(this._collapsed.set(t,r),this._collapsed.delete(e));let i=this._weights.get(e);return i!==void 0&&(this._weights.set(t,i),this._weights.delete(e)),this}getPaneRatios(){let e=this.getContainer();if(!e)return[];let t=e.getComponents();if(t.length===0)return[];let n=t.map(e=>this._sizes.get(e)??0);return p(n,t.length)}getPreferredSize(){return this.computeContentSize(e=>e.getPreferredSize())}getMinSize(){return this.computeContentSize(e=>e.getMinSize())}getMaxSize(){return{width:t,height:t}}computeContentSize(e){let t=this.getContainer();if(!t)return null;let n=t.getLaidOutComponents(),r=t.getPerimeterSize(),i=this._orientation===`horizontal`,a=0,o=0;for(let t=0;t<n.length;t+=1){let r=e(n[t]);r&&(a+=i?r.width:r.height,o=Math.max(o,i?r.height:r.width))}return a+=this.gutterTotal(n.length),i?{width:a+r.left+r.right,height:o+r.top+r.bottom}:{width:o+r.left+r.right,height:a+r.top+r.bottom}}applyPaneRatios(e){let t=this.getContainer();if(!t)return this;let n=t.getComponents(),r=n.length;if(r===0)return this;let i=p(e,r),a=t.getInnerSize(),o=a?this._orientation===`horizontal`?a.width:a.height:0,s=Math.max(0,o-this.gutterTotal(r)),c=s>0?s:1;return n.forEach((e,t)=>{this._sizes.set(e,i[t]*c)}),this._lastAvailableMain=c,t.scheduleLayout(),this}paneSizeUnits(e){return e.map(e=>this.isResizePinnedMain(e)?`px`:`ratio`)}getPaneSizes(){let e=this.getContainer();if(!e)return[];let t=e.getComponents();if(t.length===0)return[];let n=this.paneSizeUnits(t);return this._pendingSizes!==null&&h(this._pendingSizes,n)?this._pendingSizes.map(e=>({...e})):d(n,t.map(e=>this._sizes.get(e)??0))}applyPaneSizes(e){let t=this.getContainer();if(!t)return this;let n=t.getComponents(),r=this.paneSizeUnits(n);if(!h(e,r))return this;let i=t.getInnerSize(),a=i?this._orientation===`horizontal`?i.width:i.height:0,o=Math.max(0,a-this.gutterTotal(n.length)),s=m(e,o);return n.forEach((e,t)=>this.setPaneSize(e,s[t])),this._lastAvailableMain=o>0?o:1,t.scheduleLayout(),this}setPaneCollapsedImmediate(e,t){let n=this.getContainer();if(!n)return this;let r=n.getLaidOutComponents(),i=r[e];return!i||t&&this.paneServingGutter(e,r)<0?this:(this._collapsed.set(i,t),this.emit(`panecollapse`,e,t),n.scheduleLayout(),this)}onDragStart(e,t,n){let r=this._gutters.indexOf(t),i=e.getLaidOutComponents()[r],a=e.getLaidOutComponents()[r+1];this._dragOriginPointer=n,this._orientation===`horizontal`?(this._dragOriginLhsSize=i.getWidth(),this._dragOriginRhsSize=a.getWidth()):(this._dragOriginLhsSize=i.getHeight(),this._dragOriginRhsSize=a.getHeight())}onDrag(e,t,n){let r=this._gutters.indexOf(t),i=e.getLaidOutComponents()[r],a=e.getLaidOutComponents()[r+1],o=this._orientation===`horizontal`,s=this._dragOriginLhsSize+this._dragOriginRhsSize,c=i.getMinSize(),l=a.getMinSize(),u=i.getMaxSize(),d=a.getMaxSize(),f=c?o?c.width:c.height:0,p=l?o?l.width:l.height:0,m=u?o?u.width:u.height:1/0,h=d?o?d.width:d.height:1/0,g=n-this._dragOriginPointer,_=Math.max(f,s-h),v=Math.min(m,s-p),y=this._dragOriginLhsSize+g;y=Math.max(_,Math.min(v,y));let b=s-y,x=y-(o?i.getWidth():i.getHeight());o?(i.setWidth(y),t.setX(t.getX()+x),a.setX(a.getX()+x),a.setWidth(b)):(i.setHeight(y),t.setY(t.getY()+x),a.setY(a.getY()+x),a.setHeight(b)),this._sizes.set(i,y),this._sizes.set(a,b),i.doLayout(),a.doLayout()}onDragEnd(){this.emit(`paneresize`,this.getPaneSizes())}openGutterMenu(e,t,n,r){let i=this.getContainer();if(!i)return;let a=i.getLaidOutComponents(),o=a[t],s=a[t+1];if(!o||!s)return;let c=this._orientation===`horizontal`,l=c?`left`:`top`,u=c?`right`:`bottom`,d=c?`width`:`height`,f=this.gutterTargetPane(t,a),p=null,m=null,syncCollapseRows=()=>{let e=this.gutterTargetPane(t,a);p?.setChecked(e===t),m?.setChecked(e===t+1)},h=[{row:()=>{let t=new S({text:`Lock gutter`,checked:!e.isMovable()});return t.on(`action`,()=>{e.setMovable(!e.isMovable())}),t}},{separator:!0},{row:()=>{let e=new S({text:`Fix ${l} pane ${d}`,checked:this.getPaneResizeWeight(o)===0});return e.on(`action`,()=>{this.togglePaneResizePin(o)}),e}},{row:()=>{let e=new S({text:`Fix ${u} pane ${d}`,checked:this.getPaneResizeWeight(s)===0});return e.on(`action`,()=>{this.togglePaneResizePin(s)}),e}},{separator:!0},{row:()=>{let n=new _({text:`Collapse ${l} pane`,checked:f===t,enabled:!e.isOpaque()&&this.paneCollapsible(o)});return n.on(`action`,()=>{this.retargetGutterCollapse(t,t),syncCollapseRows()}),p=n,n}},{row:()=>{let n=new _({text:`Collapse ${u} pane`,checked:f===t+1,enabled:!e.isOpaque()&&this.paneCollapsible(s)});return n.on(`action`,()=>{this.retargetGutterCollapse(t,t+1),syncCollapseRows()}),m=n,n}}];this._contextMenu??=new E,this._contextMenu.show(n,r,h)}togglePaneResizePin(e){this.setPaneResizeWeight(e,this.getPaneResizeWeight(e)===0?void 0:0)}retargetGutterCollapse(e,t){let n=this.getContainer();if(!n)return;let r=n.getLaidOutComponents(),i=r[e],a=r[e+1];if(!i||!a)return;let o=this._orientation===`horizontal`?`west`:`north`,s=this._orientation===`horizontal`?`east`:`south`;t===e?(this.setPaneCollapseDirection(i,o),this.setPaneCollapseDirection(a,o)):this.setPaneCollapseDirection(a,s),n.scheduleLayout()}setPaneCollapseDirection(e,t){let n=this.getLayoutConstraints(e)??new C;n.collapseDirection=t,this.setLayoutConstraints(e,n)}detach(){this._collapseAnimation?.(),this._collapseAnimation=null;let t=(this.getContainer()?.getComponents().length??0)>0;for(let e of this._pendingCollapseTransitions)t?e.settle():e.cancel();this._pendingCollapseTransitions.length=0,super.detach();for(let t of this._gutters){let n=t.getElement();e.sink.removeChild(e.source.getParentNode(n),n),t.dispose()}return this._gutters=[],this._contextMenu?.dispose(),this._contextMenu=null,this}gutterTotal(e){return Math.max(0,e-1)*D}computeTotalMinSize(){let e=this.getContainer();if(!e)return{width:0,height:0};let t=e.getLaidOutComponents();if(t.length===0)return{width:0,height:0};let n=t.length-1,r=0,i=0;for(let e=0;e<t.length;e+=1){let a=t[e],o=this._sizes.get(a),s=this._collapsed.get(a)??!1,c=e<n;if(s&&c)r+=18;else{if(!s){if(o!=null)r+=o;else{let e=a.getMinSize();e&&(r+=this._orientation===`horizontal`?e.width:e.height)}}c&&(r+=D)}let l=a.getMinSize();l&&(i=Math.max(i,this._orientation===`horizontal`?l.height:l.width))}return this._orientation===`horizontal`?{width:r,height:i}:{width:i,height:r}}doLayout(){let t=this,n=this.getContainer();if(!n)return;let r=n.getInnerSize();if(!r)return;let i=this._orientation===`horizontal`?r.width:r.height;r=this.inflateForOverflow(r);let a=n.getElement(),s=n.getLaidOutComponents(),c=n.getContentInsets(),l=s.length-1;for(let r=this._gutters.length;r<l;r+=1){let i=new T(this._orientation,{expandedBackground:`transparent`,collapseTrigger:this._collapseTrigger}),o=r;i.on(`dragstart`,function(e){t.onDragStart(n,i,e)}),i.on(`drag`,function(e){t.onDrag(n,i,e)}),i.on(`dragend`,()=>this.onDragEnd()),i.on(`collapse`,function(){let e=t.gutterTargetPane(o,n.getLaidOutComponents());e>=0&&t.setPaneCollapsed(e,!t.isPaneCollapsed(e))}),i.on(`contextmenu`,function(e,n){t.openGutterMenu(i,o,e,n)}),this._gutters.push(i),e.sink.appendChild(a,i.getElement(!0))}let u=c.getLeft(),d=c.getTop();this.recalculateSizes(),this.applyPendingSizes(),this.applyPendingCollapsed(s);let f=this._orientation===`horizontal`,p=f?r.height:r.width,m=this.computeMainAxisSizes(s,i),h=new Set,g=[];for(let e=0;e<s.length;e+=1){let t=s[e],n=this.paneServingGutter(e,s);if((this._collapsed.get(t)??!1)&&n>=0){let e=this._gutters[n];e.setCollapseDirection(this.paneDirection(t)),e.setCollapsible(!0),g.push(this.placeGutterAsStrip(e,t,u,d,p,f,this.paneDirection(t))),h.add(n),f?u+=18:d+=18;continue}let r=m.get(t);if(t.setVisible(!0),g.push({component:t,...this.resolveBounds(t,u,d,f?r:p,f?p:r,o.BOTH),clipPath:n>=0?`inset(0 0 0 0)`:null}),f?u+=r:d+=r,e<l){let t=this._gutters[e],n=this.gutterTargetPane(e,s);!(n>=0&&(this._collapsed.get(s[n])??!1)&&this.paneServingGutter(n,s)===e)&&!h.has(e)&&(t.setOpaque(!1),t.setVisible(!0),t.setCollapsible(n>=0),n>=0&&t.setCollapseDirection(this.paneDirection(s[n])),t.setX(u),t.setY(d),f?(t.setWidth(D),t.setHeight(p),u+=D):(t.setWidth(p),t.setHeight(D),d+=D),h.add(e))}}this.commitPanes(g);for(let e=0;e<this._gutters.length;e+=1)h.has(e)||this._gutters[e].setVisible(!1)}placeGutterAsStrip(e,t,n,r,i,a,s){e.setOpaque(!0),e.setVisible(!0),e.setX(n),e.setY(r),a?(e.setWidth(18),e.setHeight(i)):(e.setWidth(i),e.setHeight(18));let c=this._sizes.get(t)??18,l=this.collapsesTowardStart(s);t.setVisible(!0);let u;if(a){let e=l?n:n+18-c;u={component:t,...this.resolveBounds(t,e,r,c,i,o.BOTH),clipPath:this.paneClipInset(s)}}else{let e=l?r:r+18-c;u={component:t,...this.resolveBounds(t,n,e,i,c,o.BOTH),clipPath:this.paneClipInset(s)}}return u}commitPanes(e){for(let t of e)this.commitBounds(t.component,t.x,t.y,t.width,t.height),t.component.setClipPath(t.clipPath)}paneClipInset(e){switch(e){case`east`:return`inset(0 0 0 100%)`;case`north`:return`inset(0 0 100% 0)`;case`south`:return`inset(100% 0 0 0)`;default:return`inset(0 100% 0 0)`}}applyPendingSizes(){let e=this._pendingSizes;e!==null&&(this._pendingSizes=null,this.applyPaneSizes(e))}applyPendingCollapsed(e){if(this._pendingCollapsed.length!==0){for(let t of this._pendingCollapsed){let n=e[t];n&&this.paneServingGutter(t,e)>=0&&this._collapsed.set(n,!0)}this._pendingCollapsed=[]}}computeMainAxisSizes(e,t){let n=e.length-1,r=0,i=0,a=0;for(let t=0;t<e.length;t+=1){let o=e[t];(this._collapsed.get(o)??!1)&&this.paneServingGutter(t,e)>=0?(i+=1,!this.collapsesTowardStart(this.paneDirection(o))&&t<n&&(a+=1)):r+=this._sizes.get(o)??0}let o=Math.max(0,t-this.gutterTotal(e.length)),s=Math.max(0,o-i*(18-D)+a*D),c=r>0?s/r:0,l=new Map;for(let t=0;t<e.length;t+=1){let n=e[t],r=(this._collapsed.get(n)??!1)&&this.paneServingGutter(t,e)>=0;l.set(n,r?0:(this._sizes.get(n)??0)*c)}return l}recalculateSizes(){let e=this.getContainer();if(!e)return;let t=e.getInnerSize();if(!t)return;let n=e.getComponents();for(let e of[...this._sizes.keys()])n.indexOf(e)<0&&(this._sizes.delete(e),this._collapsed.delete(e));for(let e of[...this._weights.keys()])n.indexOf(e)<0&&this._weights.delete(e);let r=this._orientation===`horizontal`?t.width:t.height,i=Math.max(0,r-this.gutterTotal(n.length)),a=this._orientation===`horizontal`;this.seedFromPreferred(n,a);for(let e of n){let t=this._sizes.get(e);t!==void 0&&this._sizes.set(e,this.clampMain(e,t,a))}if(this._lastAvailableMain>0&&i>0&&i!==this._lastAvailableMain&&this._sizes.size>0){let e=i-this._lastAvailableMain,t=0;for(let e=0;e<n.length;e+=1){let r=n[e];t+=this.effectiveResizeWeight(r,this._sizes.get(r)??0)}if(t>0)for(let r=0;r<n.length;r+=1){let i=n[r],a=this._sizes.get(i);if(a!=null){let n=this.effectiveResizeWeight(i,a);this._sizes.set(i,Math.max(0,a+n/t*e))}}}if(this._lastAvailableMain===0&&i>0&&this._sizes.size>0){let e=0;for(let t=0;t<n.length;t+=1){let r=this.effectiveResizeWeight(n[t],0);r>0&&(e+=r)}if(e>0){let t=0;for(let e=0;e<n.length;e+=1)t+=this._sizes.get(n[e])??0;let r=i-t;for(let t=0;t<n.length;t+=1){let i=n[t],o=this.effectiveResizeWeight(i,0);if(o>0){let t=this._sizes.get(i)??0;this._sizes.set(i,this.clampMain(i,t+o/e*r,a))}}}}let o=0;for(let e=0;e<n.length;e+=1){let t=n[e];this._sizes.has(t)&&(o+=1)}for(let e=0;e<n.length;e+=1){let t=n[e],r=this._sizes.get(t);if(r==null){if(this._sizes.size!=0){r=0;for(let e=0;e<n.length;e+=1){let t=n[e],i=this._sizes.get(t);if(i==null)continue;let a=i*(1/(o+1));r+=a,i-=a,this._sizes.set(t,i)}}else r=i;this._sizes.set(t,r),o+=1}}let s=0,c=0,l=0;for(let e=0;e<n.length;e+=1){let t=n[e],r=this._sizes.get(t)??0;this.isPinnedMain(t,a)?s+=r:this.isResizePinnedMain(t)?c+=r:l+=r}if(i>0){let e=Math.max(0,i-s),t=1,r=1,o=1;l>0&&e>=c?o=(e-c)/l:c>0?(o=0,r=e/c):s>0&&(t=i/s);for(let e=0;e<n.length;e+=1){let i=n[e],s=this._sizes.get(i);if(s==null)continue;let c=this.isPinnedMain(i,a)?t:this.isResizePinnedMain(i)?r:o;c!==1&&this._sizes.set(i,s*c)}}i>0&&(this._lastAvailableMain=i)}},k=a(Split),A=.25,DropZoneHighlight=class extends s{_valid=!0;constructor(){super(),this.setPosition(r.ABSOLUTE),this.setPointerEvents(`none`),this.setBackgroundColor(`var(--ts-ui-drag-dropzone-active-bg)`),this.setVisible(!1)}placeBand(e,t,n,r){this.setX(e),this.setY(t),this.setWidth(n),this.setHeight(r),this.setVisible(!0)}setValid(e){this._valid!==e&&(this._valid=e,this.setBackgroundColor(e?`var(--ts-ui-drag-dropzone-active-bg)`:`var(--ts-ui-drag-dropzone-invalid-bg)`))}hide(){this.setVisible(!1)}},j=u.Band.Window-1,DropZoneOverlay=class extends s{_highlight=new DropZoneHighlight;_zone=null;_valid=!0;constructor(){super(),this.setPosition(r.ABSOLUTE),this.setZIndex(j),this.setPointerEvents(`none`),this.setBackgroundColor(`var(--ts-ui-drag-dropzone-bg)`),this.setBorder({border:`1px solid var(--ts-ui-drag-dropzone-border)`})}attachTo(t){let n=this.getElement(!0);this.setX(0),this.setY(0),this.setWidth(t.getWidth()),this.setHeight(t.getHeight());let r=t.getElement(!0);e.source.getParentElement(n)!==r&&e.sink.appendChild(r,n);let i=this._highlight.getElement(!0);e.source.getParentElement(i)!==n&&e.sink.appendChild(n,i)}setHighlight(e,t=!0){if(e===this._zone&&t===this._valid)return;if(this._zone=e,this._valid=t,e===null){this._highlight.hide();return}this._highlight.setValid(t);let n=this.getWidth(),r=this.getHeight(),i=A,a=0,o=0,s=n,c=r;switch(e){case`top`:a=0,o=0,s=n,c=r*i;break;case`bottom`:a=0,o=r*.75,s=n,c=r*i;break;case`left`:a=0,o=0,s=n*i,c=r;break;case`right`:a=n*.75,o=0,s=n*i,c=r;break;case`center`:a=n*i,o=r*i,s=n*(1-2*i),c=r*(1-2*i)}this._highlight.placeBand(a,o,s,c)}highlightFull(){this._zone=null,this._valid=!0,this._highlight.setValid(!0),this._highlight.placeBand(0,0,this.getWidth(),this.getHeight())}detach(){this._zone=null,this._valid=!0,this.removeElement()}destructor(){this._highlight.dispose(),super.destructor()}},M=a(DropZoneOverlay),DockRegion=class{_region;_overlay=new M;_teardown;_onStructureChanged;_raiseTimer=null;constructor(e,t){this._region=e,this._onStructureChanged=t??null,this._teardown=b.makeDropTarget(e,{accepts:e=>e.dragData.tabDrag===!0,suppressValidityTint:!0,onDragOver:e=>{let t=e.dragData.componentId,n=this.dropZone(e.clientX,e.clientY);return this._overlay.attachTo(this._region),this._overlay.setHighlight(n,this.isLegalDrop(t,n)),this.scheduleSpringRaise(),null},onDragLeave:()=>{this._overlay.detach(),this.clearSpringRaise()},onDrop:e=>{let t=e.dragData.componentId,n=this.dropZone(e.clientX,e.clientY);if(this._overlay.detach(),this.clearSpringRaise(),!this.isLegalDrop(t,n))return!1;let r=y.get(t);if(!r)return!1;n===`center`?this.dockAsTab(r):this.splitOnEdge(r,n),this.raiseHostWindow(),this._onStructureChanged?.()}})}destroy(){this._teardown(),this._overlay.dispose(),this.clearSpringRaise()}hostWindow(){for(let e=this._region;e;e=e.getParentComponent())if(e instanceof f)return e;return null}raiseHostWindow(){this.hostWindow()?.bringToFront()}scheduleSpringRaise(){this._raiseTimer===null&&(this._raiseTimer=setTimeout(()=>{this._raiseTimer=null,b.isDragging()&&this.raiseHostWindow()},x))}clearSpringRaise(){this._raiseTimer!==null&&(clearTimeout(this._raiseTimer),this._raiseTimer=null)}dropZone(e,t){return this.isSeedRegion()?`center`:this.computeZone(e,t)}isSeedRegion(){return this._region.getComponents().every(e=>this._region.getLayoutConstraints(e)?.transient===!0)}computeZone(t,n){let r=e.source.getViewportRect(this._region),i=(t-r.left)/r.width,a=(n-r.top)/r.height,o=A,s=i,c=1-i,l=a,u=1-a,d=Math.min(s,c,l,u);return d>=o?`center`:d===s?`left`:d===c?`right`:d===l?`top`:`bottom`}isLegalDrop(e,t){for(let t=this._region;t;t=t.getParentComponent())if(t.getId()===e)return!1;let n=this._region.getComponents();return n.length===1&&n[0].getId()===e?!1:t===`center`?!this.isRedundantCenterDrop(e):!this.isRedundantEdgeDrop(e,t)}isRedundantCenterDrop(e){let t=y.get(e);if(!t)return!1;let n=t.getParentComponent();if(this._region.getLayoutManager()instanceof g)return n===this._region;let r=this._region.getParentComponent();return r?.getLayoutManager()instanceof g&&n===r}isRedundantEdgeDrop(e,t){let n=y.get(e);if(!n)return!1;let r=n.getParentComponent();if(!r||r.getComponents().length!==1)return!1;let i=t===`left`||t===`right`?`horizontal`:`vertical`,a=t===`top`||t===`left`,o=this._region.getLayoutManager();if(o instanceof k&&String(o.getOrientation())===i){if(r.getParentComponent()!==this._region)return!1;let e=this._region.getComponents();return a?e[0]===r:e[e.length-1]===r}let s=this._region.getParentComponent(),c=s?.getLayoutManager()instanceof g?s:this._region,l=c?.getParentComponent();if(!l)return!1;let u=l.getLayoutManager();if(!(u instanceof k&&String(u.getOrientation())===i)||r.getParentComponent()!==l)return!1;let d=l.getComponents(),f=d.indexOf(c),p=d.indexOf(r);return a?p===f-1:p===f+1}splitOnEdge(e,t){let n=t===`left`||t===`right`?`horizontal`:`vertical`,r=t===`top`||t===`left`,i=this.newStack();i.moveComponent(e);let a=this._region.getLayoutManager();if(a instanceof k&&String(a.getOrientation())===n){this._region.moveComponent(i,r?0:this._region.getComponents().length);return}let o=this._region.getParentComponent(),s=o?.getLayoutManager()instanceof g?o:this._region,c=s.getParentComponent();if(!c)return;let u=c.getLayoutManager(),d=c.getComponents().indexOf(s);if(u instanceof k&&String(u.getOrientation())===n){c.moveComponent(i,r?d:d+1);return}let f=new l({layoutManager:new k({orientation:n})});c.moveComponent(f,d);let p=this.ensureStacked(s);f.moveComponent(i,+!r),f.moveComponent(p,+!!r),u instanceof k&&u.transferPaneSize(s,f)}ensureStacked(e){let t=e.getLayoutManager();if(t instanceof g||t instanceof k)return e;let n=this.newStack();return n.moveComponent(e),n}newStack(){let e=new l({layoutManager:new g({reorderable:!0,compact:!0})});return e.getLayoutManager().on(`empty`,()=>this.pruneEmptyStack(e)),e}pruneEmptyStack(e){let t=e.getParentComponent();t&&t.getLayoutManager()instanceof k&&(t.removeComponent(e),this.collapseIfSinglePaneSplit(t))}collapseIfSinglePaneSplit(e){if(!(e.getLayoutManager()instanceof k))return;let t=e.getComponents();if(t.length!==1)return;let n=e.getParentComponent();if(!n)return;let r=n.getComponents().indexOf(e),i=n.getLayoutManager();i instanceof k&&i.transferPaneSize(e,t[0]),n.moveComponent(t[0],r),n.removeComponent(e)}dockAsTab(e){if(this._region.getLayoutManager()instanceof g){this._region.moveComponent(e),this._region.scheduleLayout();return}let t=this._region.getParentComponent();if(!t)return;if(t.getLayoutManager()instanceof g){t.moveComponent(e),t.scheduleLayout();return}let n=t.getComponents().indexOf(this._region),r=this.newStack();t.moveComponent(r,n),r.moveComponent(this._region),r.moveComponent(e),r.scheduleLayout()}};function managerKind(e){let t=e.getLayoutManager();return t?t.getClassName().replace(/^_/,``):``}function panelIdOf(e){return e.getId()}function serializableChildren(e){return e.getComponents().filter(t=>e.getLayoutConstraints(t)?.transient!==!0)}function nodeFor(e){let t=managerKind(e);if(t===`Split`){let t=e.getLayoutManager(),n=e.getComponents().map(nodeFor);return{kind:`split`,orientation:t.getOrientation()===`vertical`?`vertical`:`horizontal`,children:n,ratios:t.getPaneRatios(),collapsed:n.map((e,n)=>t.isPaneCollapsed(n))}}if(t===`Tab`){let t=e.getLayoutManager();return{kind:`tab`,children:serializableChildren(e).map(nodeFor),activeIndex:t.getActiveTabIndex()}}let n=e.getParentComponent()?.getLayoutConstraints(e),r=n?.glyph??null,i=n?.tooltip??null;return{kind:`panel`,panelId:panelIdOf(e),glyph:r,tooltip:i,closeable:n?.closeable,disposeOnClose:n?.disposeOnClose}}function windowContentOf(e){return e.getComponents().find(t=>!e.isChromeComponent(t))??null}function windowNodeFor(e){let t=windowContentOf(e);return t?{kind:`window`,content:nodeFor(t),header:e.getTitle(),rect:e.getRect(),state:e.getWindowState(),restoreRect:e.getRestoreRect()}:null}function serializeLayout(e){let t=v.getOpenWindows().map(windowNodeFor).filter(e=>e!==null);return{version:1,root:nodeFor(e),windows:t}}function collectLeaves(e,t){e.getComponents().slice().forEach(n=>{if(e.getLayoutConstraints(n)?.transient===!0){e.removeComponent(n);return}let r=managerKind(n);r===`Split`||r===`Tab`?collectLeaves(n,t):t.push(n)})}function parkLeaves(e,t,n){let r=[];collectLeaves(e,r),t.forEach(e=>{let t=windowContentOf(e);if(!t)return;let n=managerKind(t);n===`Split`||n===`Tab`?collectLeaves(t,r):r.push(t)});let i=new Map;return r.forEach(e=>{let t=panelIdOf(e);n(t)===e&&(i.set(t,e),e.getParentComponent()?.removeComponent(e))}),i}function hostsComponent(e,t){for(let n=t;n;n=n.getParentComponent())if(n===e)return!0;return!1}function constraintsFor(e){if(e.kind!==`panel`||e.glyph==null&&e.tooltip==null&&e.closeable===void 0&&e.disposeOnClose===void 0)return;let t=new C;return t.glyph=e.glyph??null,t.tooltip=e.tooltip??null,t.closeable=e.closeable,t.disposeOnClose=e.disposeOnClose,t}function materializeNode(e,t,n){if(e.kind===`panel`){let r=t.get(e.panelId)??n(e.panelId);return r||console.warn(`restoreLayout: no component for panelId "${e.panelId}"; skipping.`),r}let r=new s;return populateContainer(r,e,t,n),r}function populateContainer(e,t,n,r){if(t.kind===`split`){let i=new k({orientation:t.orientation});e.setLayoutManager(i);let a=[];t.children.forEach((i,o)=>{let s=materializeNode(i,n,r);s&&(e.moveComponent(s,void 0,constraintsFor(i)),a.push({ratio:t.ratios[o]??0,collapsed:t.collapsed[o]??!1}))}),i.applyPaneRatios(a.map(e=>e.ratio)),a.forEach((e,t)=>{e.collapsed&&i.setPaneCollapsedImmediate(t,!0)})}else{let i=new g({reorderable:!0,compact:!0});e.setLayoutManager(i),t.children.forEach(t=>{let a=materializeNode(t,n,r);a&&(e.moveComponent(a,void 0,constraintsFor(t)),i.createTab(a))}),i.setActiveTabIndex(t.activeIndex)}}function applyWindow(e,t,n){let r=e.content??(e.panelId?{kind:`panel`,panelId:e.panelId,glyph:null}:null);if(!r){console.warn(`restoreLayout: window node has neither content nor panelId; skipping.`);return}let i=materializeNode(r,t,n);if(!i)return;let a=new v(e.header);a.moveComponent(i,void 0,constraintsFor(r));let o=e.state===`normal`?e.rect:e.restoreRect??e.rect;a.applyRect(o),a.show(),e.state!==`normal`&&a.setWindowState(e.state)}function restoreLayout(e,t,n){let r=v.getOpenWindows().filter(t=>!hostsComponent(t,e)),i=parkLeaves(e,r,n);if(r.forEach(e=>e.onExitAction()),e.disposeAllComponents(),t.root.kind===`panel`){let r=materializeNode(t.root,i,n);r&&e.moveComponent(r,void 0,constraintsFor(t.root))}else populateContainer(e,t.root,i,n);t.windows.forEach(e=>applyWindow(e,i,n))}export{k as a,M as i,serializeLayout as n,DockRegion as r,restoreLayout as t};
2
+ //# sourceMappingURL=LayoutSerialization-CMxunLfV.js.map