dockview-core 1.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 (294) hide show
  1. package/README.md +52 -0
  2. package/dist/cjs/api/component.api.d.ts +145 -0
  3. package/dist/cjs/api/component.api.js +579 -0
  4. package/dist/cjs/api/component.api.js.map +1 -0
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +34 -0
  6. package/dist/cjs/api/dockviewPanelApi.js +84 -0
  7. package/dist/cjs/api/dockviewPanelApi.js.map +1 -0
  8. package/dist/cjs/api/gridviewPanelApi.d.ts +37 -0
  9. package/dist/cjs/api/gridviewPanelApi.js +48 -0
  10. package/dist/cjs/api/gridviewPanelApi.js.map +1 -0
  11. package/dist/cjs/api/panelApi.d.ts +88 -0
  12. package/dist/cjs/api/panelApi.js +138 -0
  13. package/dist/cjs/api/panelApi.js.map +1 -0
  14. package/dist/cjs/api/paneviewPanelApi.d.ts +26 -0
  15. package/dist/cjs/api/paneviewPanelApi.js +58 -0
  16. package/dist/cjs/api/paneviewPanelApi.js.map +1 -0
  17. package/dist/cjs/api/splitviewPanelApi.d.ts +32 -0
  18. package/dist/cjs/api/splitviewPanelApi.js +48 -0
  19. package/dist/cjs/api/splitviewPanelApi.js.map +1 -0
  20. package/dist/cjs/array.d.ts +12 -0
  21. package/dist/cjs/array.js +59 -0
  22. package/dist/cjs/array.js.map +1 -0
  23. package/dist/cjs/dnd/abstractDragHandler.d.ts +11 -0
  24. package/dist/cjs/dnd/abstractDragHandler.js +126 -0
  25. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -0
  26. package/dist/cjs/dnd/dataTransfer.d.ts +31 -0
  27. package/dist/cjs/dnd/dataTransfer.js +101 -0
  28. package/dist/cjs/dnd/dataTransfer.js.map +1 -0
  29. package/dist/cjs/dnd/dnd.d.ts +27 -0
  30. package/dist/cjs/dnd/dnd.js +60 -0
  31. package/dist/cjs/dnd/dnd.js.map +1 -0
  32. package/dist/cjs/dnd/droptarget.d.ts +42 -0
  33. package/dist/cjs/dnd/droptarget.js +281 -0
  34. package/dist/cjs/dnd/droptarget.js.map +1 -0
  35. package/dist/cjs/dnd/ghost.d.ts +1 -0
  36. package/dist/cjs/dnd/ghost.js +16 -0
  37. package/dist/cjs/dnd/ghost.js.map +1 -0
  38. package/dist/cjs/dnd/groupDragHandler.d.ts +11 -0
  39. package/dist/cjs/dnd/groupDragHandler.js +62 -0
  40. package/dist/cjs/dnd/groupDragHandler.js.map +1 -0
  41. package/dist/cjs/dockview/components/panel/content.d.ts +30 -0
  42. package/dist/cjs/dockview/components/panel/content.js +101 -0
  43. package/dist/cjs/dockview/components/panel/content.js.map +1 -0
  44. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +21 -0
  45. package/dist/cjs/dockview/components/tab/defaultTab.js +106 -0
  46. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -0
  47. package/dist/cjs/dockview/components/tab/tab.d.ts +31 -0
  48. package/dist/cjs/dockview/components/tab/tab.js +125 -0
  49. package/dist/cjs/dockview/components/tab/tab.js.map +1 -0
  50. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +63 -0
  51. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +248 -0
  52. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -0
  53. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +15 -0
  54. package/dist/cjs/dockview/components/titlebar/voidContainer.js +74 -0
  55. package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +1 -0
  56. package/dist/cjs/dockview/components/watermark/watermark.d.ts +18 -0
  57. package/dist/cjs/dockview/components/watermark/watermark.js +87 -0
  58. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -0
  59. package/dist/cjs/dockview/deserializer.d.ts +12 -0
  60. package/dist/cjs/dockview/deserializer.js +46 -0
  61. package/dist/cjs/dockview/deserializer.js.map +1 -0
  62. package/dist/cjs/dockview/dockviewComponent.d.ts +126 -0
  63. package/dist/cjs/dockview/dockviewComponent.js +772 -0
  64. package/dist/cjs/dockview/dockviewComponent.js.map +1 -0
  65. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +31 -0
  66. package/dist/cjs/dockview/dockviewGroupPanel.js +97 -0
  67. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -0
  68. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +176 -0
  69. package/dist/cjs/dockview/dockviewGroupPanelModel.js +579 -0
  70. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -0
  71. package/dist/cjs/dockview/dockviewPanel.d.ts +40 -0
  72. package/dist/cjs/dockview/dockviewPanel.js +150 -0
  73. package/dist/cjs/dockview/dockviewPanel.js.map +1 -0
  74. package/dist/cjs/dockview/dockviewPanelModel.d.ts +34 -0
  75. package/dist/cjs/dockview/dockviewPanelModel.js +93 -0
  76. package/dist/cjs/dockview/dockviewPanelModel.js.map +1 -0
  77. package/dist/cjs/dockview/options.d.ts +116 -0
  78. package/dist/cjs/dockview/options.js +32 -0
  79. package/dist/cjs/dockview/options.js.map +1 -0
  80. package/dist/cjs/dockview/types.d.ts +67 -0
  81. package/dist/cjs/dockview/types.js +11 -0
  82. package/dist/cjs/dockview/types.js.map +1 -0
  83. package/dist/cjs/dom.d.ts +14 -0
  84. package/dist/cjs/dom.js +183 -0
  85. package/dist/cjs/dom.js.map +1 -0
  86. package/dist/cjs/events.d.ts +30 -0
  87. package/dist/cjs/events.js +130 -0
  88. package/dist/cjs/events.js.map +1 -0
  89. package/dist/cjs/gridview/baseComponentGridview.d.ts +87 -0
  90. package/dist/cjs/gridview/baseComponentGridview.js +280 -0
  91. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -0
  92. package/dist/cjs/gridview/basePanelView.d.ts +40 -0
  93. package/dist/cjs/gridview/basePanelView.js +124 -0
  94. package/dist/cjs/gridview/basePanelView.js.map +1 -0
  95. package/dist/cjs/gridview/branchNode.d.ts +49 -0
  96. package/dist/cjs/gridview/branchNode.js +343 -0
  97. package/dist/cjs/gridview/branchNode.js.map +1 -0
  98. package/dist/cjs/gridview/gridview.d.ts +133 -0
  99. package/dist/cjs/gridview/gridview.js +511 -0
  100. package/dist/cjs/gridview/gridview.js.map +1 -0
  101. package/dist/cjs/gridview/gridviewComponent.d.ts +80 -0
  102. package/dist/cjs/gridview/gridviewComponent.js +325 -0
  103. package/dist/cjs/gridview/gridviewComponent.js.map +1 -0
  104. package/dist/cjs/gridview/gridviewPanel.d.ts +65 -0
  105. package/dist/cjs/gridview/gridviewPanel.js +215 -0
  106. package/dist/cjs/gridview/gridviewPanel.js.map +1 -0
  107. package/dist/cjs/gridview/leafNode.d.ts +34 -0
  108. package/dist/cjs/gridview/leafNode.js +171 -0
  109. package/dist/cjs/gridview/leafNode.js.map +1 -0
  110. package/dist/cjs/gridview/options.d.ts +18 -0
  111. package/dist/cjs/gridview/options.js +3 -0
  112. package/dist/cjs/gridview/options.js.map +1 -0
  113. package/dist/cjs/gridview/types.d.ts +3 -0
  114. package/dist/cjs/gridview/types.js +3 -0
  115. package/dist/cjs/gridview/types.js.map +1 -0
  116. package/dist/cjs/index.d.ts +41 -0
  117. package/dist/cjs/index.js +64 -0
  118. package/dist/cjs/index.js.map +1 -0
  119. package/dist/cjs/lifecycle.d.ts +22 -0
  120. package/dist/cjs/lifecycle.js +89 -0
  121. package/dist/cjs/lifecycle.js.map +1 -0
  122. package/dist/cjs/math.d.ts +5 -0
  123. package/dist/cjs/math.js +35 -0
  124. package/dist/cjs/math.js.map +1 -0
  125. package/dist/cjs/panel/componentFactory.d.ts +10 -0
  126. package/dist/cjs/panel/componentFactory.js +31 -0
  127. package/dist/cjs/panel/componentFactory.js.map +1 -0
  128. package/dist/cjs/panel/types.d.ts +33 -0
  129. package/dist/cjs/panel/types.js +3 -0
  130. package/dist/cjs/panel/types.js.map +1 -0
  131. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +21 -0
  132. package/dist/cjs/paneview/defaultPaneviewHeader.js +91 -0
  133. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -0
  134. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +21 -0
  135. package/dist/cjs/paneview/draggablePaneviewPanel.js +132 -0
  136. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -0
  137. package/dist/cjs/paneview/options.d.ts +27 -0
  138. package/dist/cjs/paneview/options.js +3 -0
  139. package/dist/cjs/paneview/options.js.map +1 -0
  140. package/dist/cjs/paneview/paneview.d.ts +40 -0
  141. package/dist/cjs/paneview/paneview.js +202 -0
  142. package/dist/cjs/paneview/paneview.js.map +1 -0
  143. package/dist/cjs/paneview/paneviewComponent.d.ts +129 -0
  144. package/dist/cjs/paneview/paneviewComponent.js +395 -0
  145. package/dist/cjs/paneview/paneviewComponent.js.map +1 -0
  146. package/dist/cjs/paneview/paneviewPanel.d.ts +92 -0
  147. package/dist/cjs/paneview/paneviewPanel.js +276 -0
  148. package/dist/cjs/paneview/paneviewPanel.js.map +1 -0
  149. package/dist/cjs/splitview/options.d.ts +26 -0
  150. package/dist/cjs/splitview/options.js +3 -0
  151. package/dist/cjs/splitview/options.js.map +1 -0
  152. package/dist/cjs/splitview/splitview.d.ts +127 -0
  153. package/dist/cjs/splitview/splitview.js +909 -0
  154. package/dist/cjs/splitview/splitview.js.map +1 -0
  155. package/dist/cjs/splitview/splitviewComponent.d.ts +101 -0
  156. package/dist/cjs/splitview/splitviewComponent.js +374 -0
  157. package/dist/cjs/splitview/splitviewComponent.js.map +1 -0
  158. package/dist/cjs/splitview/splitviewPanel.d.ts +45 -0
  159. package/dist/cjs/splitview/splitviewPanel.js +180 -0
  160. package/dist/cjs/splitview/splitviewPanel.js.map +1 -0
  161. package/dist/cjs/splitview/viewItem.d.ts +25 -0
  162. package/dist/cjs/splitview/viewItem.js +120 -0
  163. package/dist/cjs/splitview/viewItem.js.map +1 -0
  164. package/dist/cjs/svg.d.ts +3 -0
  165. package/dist/cjs/svg.js +44 -0
  166. package/dist/cjs/svg.js.map +1 -0
  167. package/dist/cjs/types.d.ts +2 -0
  168. package/dist/cjs/types.js +3 -0
  169. package/dist/cjs/types.js.map +1 -0
  170. package/dist/dockview-core.amd.js +6492 -0
  171. package/dist/dockview-core.amd.min.js +7 -0
  172. package/dist/dockview-core.amd.min.noStyle.js +7 -0
  173. package/dist/dockview-core.amd.noStyle.js +6462 -0
  174. package/dist/dockview-core.cjs.js +6490 -0
  175. package/dist/dockview-core.esm.js +6441 -0
  176. package/dist/dockview-core.esm.min.js +7 -0
  177. package/dist/dockview-core.js +6496 -0
  178. package/dist/dockview-core.min.js +7 -0
  179. package/dist/dockview-core.min.noStyle.js +7 -0
  180. package/dist/dockview-core.noStyle.js +6466 -0
  181. package/dist/esm/api/component.api.d.ts +145 -0
  182. package/dist/esm/api/component.api.js +329 -0
  183. package/dist/esm/api/dockviewPanelApi.d.ts +34 -0
  184. package/dist/esm/api/dockviewPanelApi.js +48 -0
  185. package/dist/esm/api/gridviewPanelApi.d.ts +37 -0
  186. package/dist/esm/api/gridviewPanelApi.js +25 -0
  187. package/dist/esm/api/panelApi.d.ts +88 -0
  188. package/dist/esm/api/panelApi.js +95 -0
  189. package/dist/esm/api/paneviewPanelApi.d.ts +26 -0
  190. package/dist/esm/api/paneviewPanelApi.js +27 -0
  191. package/dist/esm/api/splitviewPanelApi.d.ts +32 -0
  192. package/dist/esm/api/splitviewPanelApi.js +25 -0
  193. package/dist/esm/array.d.ts +12 -0
  194. package/dist/esm/array.js +49 -0
  195. package/dist/esm/dnd/abstractDragHandler.d.ts +11 -0
  196. package/dist/esm/dnd/abstractDragHandler.js +47 -0
  197. package/dist/esm/dnd/dataTransfer.d.ts +31 -0
  198. package/dist/esm/dnd/dataTransfer.js +69 -0
  199. package/dist/esm/dnd/dnd.d.ts +27 -0
  200. package/dist/esm/dnd/dnd.js +36 -0
  201. package/dist/esm/dnd/droptarget.d.ts +42 -0
  202. package/dist/esm/dnd/droptarget.js +250 -0
  203. package/dist/esm/dnd/ghost.d.ts +1 -0
  204. package/dist/esm/dnd/ghost.js +11 -0
  205. package/dist/esm/dnd/groupDragHandler.d.ts +11 -0
  206. package/dist/esm/dnd/groupDragHandler.js +38 -0
  207. package/dist/esm/dockview/components/panel/content.d.ts +30 -0
  208. package/dist/esm/dockview/components/panel/content.js +73 -0
  209. package/dist/esm/dockview/components/tab/defaultTab.d.ts +21 -0
  210. package/dist/esm/dockview/components/tab/defaultTab.js +67 -0
  211. package/dist/esm/dockview/components/tab/tab.d.ts +31 -0
  212. package/dist/esm/dockview/components/tab/tab.js +94 -0
  213. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +63 -0
  214. package/dist/esm/dockview/components/titlebar/tabsContainer.js +179 -0
  215. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +15 -0
  216. package/dist/esm/dockview/components/titlebar/voidContainer.js +47 -0
  217. package/dist/esm/dockview/components/watermark/watermark.d.ts +18 -0
  218. package/dist/esm/dockview/components/watermark/watermark.js +60 -0
  219. package/dist/esm/dockview/deserializer.d.ts +12 -0
  220. package/dist/esm/dockview/deserializer.js +40 -0
  221. package/dist/esm/dockview/dockviewComponent.d.ts +126 -0
  222. package/dist/esm/dockview/dockviewComponent.js +612 -0
  223. package/dist/esm/dockview/dockviewGroupPanel.d.ts +31 -0
  224. package/dist/esm/dockview/dockviewGroupPanel.js +50 -0
  225. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +176 -0
  226. package/dist/esm/dockview/dockviewGroupPanelModel.js +449 -0
  227. package/dist/esm/dockview/dockviewPanel.d.ts +40 -0
  228. package/dist/esm/dockview/dockviewPanel.js +104 -0
  229. package/dist/esm/dockview/dockviewPanelModel.d.ts +34 -0
  230. package/dist/esm/dockview/dockviewPanelModel.js +68 -0
  231. package/dist/esm/dockview/options.d.ts +116 -0
  232. package/dist/esm/dockview/options.js +24 -0
  233. package/dist/esm/dockview/types.d.ts +67 -0
  234. package/dist/esm/dockview/types.js +7 -0
  235. package/dist/esm/dom.d.ts +14 -0
  236. package/dist/esm/dom.js +113 -0
  237. package/dist/esm/events.d.ts +30 -0
  238. package/dist/esm/events.js +88 -0
  239. package/dist/esm/gridview/baseComponentGridview.d.ts +87 -0
  240. package/dist/esm/gridview/baseComponentGridview.js +189 -0
  241. package/dist/esm/gridview/basePanelView.d.ts +40 -0
  242. package/dist/esm/gridview/basePanelView.js +74 -0
  243. package/dist/esm/gridview/branchNode.d.ts +49 -0
  244. package/dist/esm/gridview/branchNode.js +218 -0
  245. package/dist/esm/gridview/gridview.d.ts +133 -0
  246. package/dist/esm/gridview/gridview.js +423 -0
  247. package/dist/esm/gridview/gridviewComponent.d.ts +80 -0
  248. package/dist/esm/gridview/gridviewComponent.js +237 -0
  249. package/dist/esm/gridview/gridviewPanel.d.ts +65 -0
  250. package/dist/esm/gridview/gridviewPanel.js +151 -0
  251. package/dist/esm/gridview/leafNode.d.ts +34 -0
  252. package/dist/esm/gridview/leafNode.js +103 -0
  253. package/dist/esm/gridview/options.d.ts +18 -0
  254. package/dist/esm/gridview/options.js +1 -0
  255. package/dist/esm/gridview/types.d.ts +3 -0
  256. package/dist/esm/gridview/types.js +1 -0
  257. package/dist/esm/index.d.ts +41 -0
  258. package/dist/esm/index.js +35 -0
  259. package/dist/esm/lifecycle.d.ts +22 -0
  260. package/dist/esm/lifecycle.js +39 -0
  261. package/dist/esm/math.d.ts +5 -0
  262. package/dist/esm/math.js +28 -0
  263. package/dist/esm/panel/componentFactory.d.ts +10 -0
  264. package/dist/esm/panel/componentFactory.js +24 -0
  265. package/dist/esm/panel/types.d.ts +33 -0
  266. package/dist/esm/panel/types.js +1 -0
  267. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +21 -0
  268. package/dist/esm/paneview/defaultPaneviewHeader.js +63 -0
  269. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +21 -0
  270. package/dist/esm/paneview/draggablePaneviewPanel.js +92 -0
  271. package/dist/esm/paneview/options.d.ts +27 -0
  272. package/dist/esm/paneview/options.js +1 -0
  273. package/dist/esm/paneview/paneview.d.ts +40 -0
  274. package/dist/esm/paneview/paneview.js +145 -0
  275. package/dist/esm/paneview/paneviewComponent.d.ts +129 -0
  276. package/dist/esm/paneview/paneviewComponent.js +270 -0
  277. package/dist/esm/paneview/paneviewPanel.d.ts +92 -0
  278. package/dist/esm/paneview/paneviewPanel.js +192 -0
  279. package/dist/esm/splitview/options.d.ts +26 -0
  280. package/dist/esm/splitview/options.js +1 -0
  281. package/dist/esm/splitview/splitview.d.ts +127 -0
  282. package/dist/esm/splitview/splitview.js +689 -0
  283. package/dist/esm/splitview/splitviewComponent.d.ts +101 -0
  284. package/dist/esm/splitview/splitviewComponent.js +249 -0
  285. package/dist/esm/splitview/splitviewPanel.d.ts +45 -0
  286. package/dist/esm/splitview/splitviewPanel.js +108 -0
  287. package/dist/esm/splitview/viewItem.d.ts +25 -0
  288. package/dist/esm/splitview/viewItem.js +74 -0
  289. package/dist/esm/svg.d.ts +3 -0
  290. package/dist/esm/svg.js +31 -0
  291. package/dist/esm/types.d.ts +2 -0
  292. package/dist/esm/types.js +1 -0
  293. package/dist/styles/dockview.css +615 -0
  294. package/package.json +68 -0
@@ -0,0 +1,909 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:
4
+ * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview
5
+ *--------------------------------------------------------------------------------------------*/
6
+ var __values = (this && this.__values) || function(o) {
7
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
8
+ if (m) return m.call(o);
9
+ if (o && typeof o.length === "number") return {
10
+ next: function () {
11
+ if (o && i >= o.length) o = void 0;
12
+ return { value: o && o[i++], done: !o };
13
+ }
14
+ };
15
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
16
+ };
17
+ var __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
33
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
35
+ if (ar || !(i in from)) {
36
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
37
+ ar[i] = from[i];
38
+ }
39
+ }
40
+ return to.concat(ar || Array.prototype.slice.call(from));
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.Splitview = exports.Sizing = exports.LayoutPriority = exports.SashState = exports.Orientation = void 0;
44
+ var dom_1 = require("../dom");
45
+ var events_1 = require("../events");
46
+ var array_1 = require("../array");
47
+ var math_1 = require("../math");
48
+ var viewItem_1 = require("./viewItem");
49
+ var Orientation;
50
+ (function (Orientation) {
51
+ Orientation["HORIZONTAL"] = "HORIZONTAL";
52
+ Orientation["VERTICAL"] = "VERTICAL";
53
+ })(Orientation = exports.Orientation || (exports.Orientation = {}));
54
+ var SashState;
55
+ (function (SashState) {
56
+ SashState[SashState["MAXIMUM"] = 0] = "MAXIMUM";
57
+ SashState[SashState["MINIMUM"] = 1] = "MINIMUM";
58
+ SashState[SashState["DISABLED"] = 2] = "DISABLED";
59
+ SashState[SashState["ENABLED"] = 3] = "ENABLED";
60
+ })(SashState = exports.SashState || (exports.SashState = {}));
61
+ var LayoutPriority;
62
+ (function (LayoutPriority) {
63
+ LayoutPriority["Low"] = "low";
64
+ LayoutPriority["High"] = "high";
65
+ LayoutPriority["Normal"] = "normal";
66
+ })(LayoutPriority = exports.LayoutPriority || (exports.LayoutPriority = {}));
67
+ var Sizing;
68
+ (function (Sizing) {
69
+ Sizing.Distribute = { type: 'distribute' };
70
+ function Split(index) {
71
+ return { type: 'split', index: index };
72
+ }
73
+ Sizing.Split = Split;
74
+ function Invisible(cachedVisibleSize) {
75
+ return { type: 'invisible', cachedVisibleSize: cachedVisibleSize };
76
+ }
77
+ Sizing.Invisible = Invisible;
78
+ })(Sizing = exports.Sizing || (exports.Sizing = {}));
79
+ var Splitview = /** @class */ (function () {
80
+ function Splitview(container, options) {
81
+ var _this = this;
82
+ this.container = container;
83
+ this.views = [];
84
+ this.sashes = [];
85
+ this._size = 0;
86
+ this._orthogonalSize = 0;
87
+ this.contentSize = 0;
88
+ this._proportions = undefined;
89
+ this._startSnappingEnabled = true;
90
+ this._endSnappingEnabled = true;
91
+ this._onDidSashEnd = new events_1.Emitter();
92
+ this.onDidSashEnd = this._onDidSashEnd.event;
93
+ this._onDidAddView = new events_1.Emitter();
94
+ this.onDidAddView = this._onDidAddView.event;
95
+ this._onDidRemoveView = new events_1.Emitter();
96
+ this.onDidRemoveView = this._onDidRemoveView.event;
97
+ this.resize = function (index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta, snapBefore, snapAfter) {
98
+ var e_1, _a, e_2, _b;
99
+ if (sizes === void 0) { sizes = _this.views.map(function (x) { return x.size; }); }
100
+ if (overloadMinDelta === void 0) { overloadMinDelta = Number.NEGATIVE_INFINITY; }
101
+ if (overloadMaxDelta === void 0) { overloadMaxDelta = Number.POSITIVE_INFINITY; }
102
+ if (index < 0 || index > _this.views.length) {
103
+ return 0;
104
+ }
105
+ var upIndexes = (0, math_1.range)(index, -1);
106
+ var downIndexes = (0, math_1.range)(index + 1, _this.views.length);
107
+ //
108
+ if (highPriorityIndexes) {
109
+ try {
110
+ for (var highPriorityIndexes_1 = __values(highPriorityIndexes), highPriorityIndexes_1_1 = highPriorityIndexes_1.next(); !highPriorityIndexes_1_1.done; highPriorityIndexes_1_1 = highPriorityIndexes_1.next()) {
111
+ var i = highPriorityIndexes_1_1.value;
112
+ (0, array_1.pushToStart)(upIndexes, i);
113
+ (0, array_1.pushToStart)(downIndexes, i);
114
+ }
115
+ }
116
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
117
+ finally {
118
+ try {
119
+ if (highPriorityIndexes_1_1 && !highPriorityIndexes_1_1.done && (_a = highPriorityIndexes_1.return)) _a.call(highPriorityIndexes_1);
120
+ }
121
+ finally { if (e_1) throw e_1.error; }
122
+ }
123
+ }
124
+ if (lowPriorityIndexes) {
125
+ try {
126
+ for (var lowPriorityIndexes_1 = __values(lowPriorityIndexes), lowPriorityIndexes_1_1 = lowPriorityIndexes_1.next(); !lowPriorityIndexes_1_1.done; lowPriorityIndexes_1_1 = lowPriorityIndexes_1.next()) {
127
+ var i = lowPriorityIndexes_1_1.value;
128
+ (0, array_1.pushToEnd)(upIndexes, i);
129
+ (0, array_1.pushToEnd)(downIndexes, i);
130
+ }
131
+ }
132
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
133
+ finally {
134
+ try {
135
+ if (lowPriorityIndexes_1_1 && !lowPriorityIndexes_1_1.done && (_b = lowPriorityIndexes_1.return)) _b.call(lowPriorityIndexes_1);
136
+ }
137
+ finally { if (e_2) throw e_2.error; }
138
+ }
139
+ }
140
+ //
141
+ var upItems = upIndexes.map(function (i) { return _this.views[i]; });
142
+ var upSizes = upIndexes.map(function (i) { return sizes[i]; });
143
+ //
144
+ var downItems = downIndexes.map(function (i) { return _this.views[i]; });
145
+ var downSizes = downIndexes.map(function (i) { return sizes[i]; });
146
+ //
147
+ var minDeltaUp = upIndexes.reduce(function (_, i) { return _ + _this.views[i].minimumSize - sizes[i]; }, 0);
148
+ var maxDeltaUp = upIndexes.reduce(function (_, i) { return _ + _this.views[i].maximumSize - sizes[i]; }, 0);
149
+ //
150
+ var maxDeltaDown = downIndexes.length === 0
151
+ ? Number.POSITIVE_INFINITY
152
+ : downIndexes.reduce(function (_, i) { return _ + sizes[i] - _this.views[i].minimumSize; }, 0);
153
+ var minDeltaDown = downIndexes.length === 0
154
+ ? Number.NEGATIVE_INFINITY
155
+ : downIndexes.reduce(function (_, i) { return _ + sizes[i] - _this.views[i].maximumSize; }, 0);
156
+ //
157
+ var minDelta = Math.max(minDeltaUp, minDeltaDown);
158
+ var maxDelta = Math.min(maxDeltaDown, maxDeltaUp);
159
+ //
160
+ var snapped = false;
161
+ if (snapBefore) {
162
+ var snapView = _this.views[snapBefore.index];
163
+ var visible = delta >= snapBefore.limitDelta;
164
+ snapped = visible !== snapView.visible;
165
+ snapView.setVisible(visible, snapBefore.size);
166
+ }
167
+ if (!snapped && snapAfter) {
168
+ var snapView = _this.views[snapAfter.index];
169
+ var visible = delta < snapAfter.limitDelta;
170
+ snapped = visible !== snapView.visible;
171
+ snapView.setVisible(visible, snapAfter.size);
172
+ }
173
+ if (snapped) {
174
+ return _this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);
175
+ }
176
+ //
177
+ var tentativeDelta = (0, math_1.clamp)(delta, minDelta, maxDelta);
178
+ var actualDelta = 0;
179
+ //
180
+ var deltaUp = tentativeDelta;
181
+ for (var i = 0; i < upItems.length; i++) {
182
+ var item = upItems[i];
183
+ var size = (0, math_1.clamp)(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);
184
+ var viewDelta = size - upSizes[i];
185
+ actualDelta += viewDelta;
186
+ deltaUp -= viewDelta;
187
+ item.size = size;
188
+ }
189
+ //
190
+ var deltaDown = actualDelta;
191
+ for (var i = 0; i < downItems.length; i++) {
192
+ var item = downItems[i];
193
+ var size = (0, math_1.clamp)(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);
194
+ var viewDelta = size - downSizes[i];
195
+ deltaDown += viewDelta;
196
+ item.size = size;
197
+ }
198
+ //
199
+ return delta;
200
+ };
201
+ this._orientation = options.orientation;
202
+ this.element = this.createContainer();
203
+ this.proportionalLayout =
204
+ options.proportionalLayout === undefined
205
+ ? true
206
+ : !!options.proportionalLayout;
207
+ this.viewContainer = this.createViewContainer();
208
+ this.sashContainer = this.createSashContainer();
209
+ this.element.appendChild(this.sashContainer);
210
+ this.element.appendChild(this.viewContainer);
211
+ this.container.appendChild(this.element);
212
+ this.style(options.styles);
213
+ // We have an existing set of view, add them now
214
+ if (options.descriptor) {
215
+ this._size = options.descriptor.size;
216
+ options.descriptor.views.forEach(function (viewDescriptor, index) {
217
+ var sizing = viewDescriptor.visible === undefined ||
218
+ viewDescriptor.visible
219
+ ? viewDescriptor.size
220
+ : {
221
+ type: 'invisible',
222
+ cachedVisibleSize: viewDescriptor.size,
223
+ };
224
+ var view = viewDescriptor.view;
225
+ _this.addView(view, sizing, index, true
226
+ // true skip layout
227
+ );
228
+ });
229
+ // Initialize content size and proportions for first layout
230
+ this.contentSize = this.views.reduce(function (r, i) { return r + i.size; }, 0);
231
+ this.saveProportions();
232
+ }
233
+ }
234
+ Object.defineProperty(Splitview.prototype, "size", {
235
+ get: function () {
236
+ return this._size;
237
+ },
238
+ set: function (value) {
239
+ this._size = value;
240
+ },
241
+ enumerable: false,
242
+ configurable: true
243
+ });
244
+ Object.defineProperty(Splitview.prototype, "orthogonalSize", {
245
+ get: function () {
246
+ return this._orthogonalSize;
247
+ },
248
+ set: function (value) {
249
+ this._orthogonalSize = value;
250
+ },
251
+ enumerable: false,
252
+ configurable: true
253
+ });
254
+ Object.defineProperty(Splitview.prototype, "length", {
255
+ get: function () {
256
+ return this.views.length;
257
+ },
258
+ enumerable: false,
259
+ configurable: true
260
+ });
261
+ Object.defineProperty(Splitview.prototype, "proportions", {
262
+ get: function () {
263
+ return this._proportions ? __spreadArray([], __read(this._proportions), false) : undefined;
264
+ },
265
+ enumerable: false,
266
+ configurable: true
267
+ });
268
+ Object.defineProperty(Splitview.prototype, "orientation", {
269
+ get: function () {
270
+ return this._orientation;
271
+ },
272
+ set: function (value) {
273
+ this._orientation = value;
274
+ var tmp = this.size;
275
+ this.size = this.orthogonalSize;
276
+ this.orthogonalSize = tmp;
277
+ (0, dom_1.removeClasses)(this.element, 'horizontal', 'vertical');
278
+ this.element.classList.add(this.orientation == Orientation.HORIZONTAL
279
+ ? 'horizontal'
280
+ : 'vertical');
281
+ },
282
+ enumerable: false,
283
+ configurable: true
284
+ });
285
+ Object.defineProperty(Splitview.prototype, "minimumSize", {
286
+ get: function () {
287
+ return this.views.reduce(function (r, item) { return r + item.minimumSize; }, 0);
288
+ },
289
+ enumerable: false,
290
+ configurable: true
291
+ });
292
+ Object.defineProperty(Splitview.prototype, "maximumSize", {
293
+ get: function () {
294
+ return this.length === 0
295
+ ? Number.POSITIVE_INFINITY
296
+ : this.views.reduce(function (r, item) { return r + item.maximumSize; }, 0);
297
+ },
298
+ enumerable: false,
299
+ configurable: true
300
+ });
301
+ Object.defineProperty(Splitview.prototype, "startSnappingEnabled", {
302
+ get: function () {
303
+ return this._startSnappingEnabled;
304
+ },
305
+ set: function (startSnappingEnabled) {
306
+ if (this._startSnappingEnabled === startSnappingEnabled) {
307
+ return;
308
+ }
309
+ this._startSnappingEnabled = startSnappingEnabled;
310
+ this.updateSashEnablement();
311
+ },
312
+ enumerable: false,
313
+ configurable: true
314
+ });
315
+ Object.defineProperty(Splitview.prototype, "endSnappingEnabled", {
316
+ get: function () {
317
+ return this._endSnappingEnabled;
318
+ },
319
+ set: function (endSnappingEnabled) {
320
+ if (this._endSnappingEnabled === endSnappingEnabled) {
321
+ return;
322
+ }
323
+ this._endSnappingEnabled = endSnappingEnabled;
324
+ this.updateSashEnablement();
325
+ },
326
+ enumerable: false,
327
+ configurable: true
328
+ });
329
+ Splitview.prototype.style = function (styles) {
330
+ if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {
331
+ (0, dom_1.removeClasses)(this.element, 'separator-border');
332
+ this.element.style.removeProperty('--dv-separator-border');
333
+ }
334
+ else {
335
+ (0, dom_1.addClasses)(this.element, 'separator-border');
336
+ if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {
337
+ this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);
338
+ }
339
+ }
340
+ };
341
+ Splitview.prototype.isViewVisible = function (index) {
342
+ if (index < 0 || index >= this.views.length) {
343
+ throw new Error('Index out of bounds');
344
+ }
345
+ var viewItem = this.views[index];
346
+ return viewItem.visible;
347
+ };
348
+ Splitview.prototype.setViewVisible = function (index, visible) {
349
+ if (index < 0 || index >= this.views.length) {
350
+ throw new Error('Index out of bounds');
351
+ }
352
+ (0, dom_1.toggleClass)(this.container, 'visible', visible);
353
+ var viewItem = this.views[index];
354
+ (0, dom_1.toggleClass)(this.container, 'visible', visible);
355
+ viewItem.setVisible(visible, viewItem.size);
356
+ this.distributeEmptySpace(index);
357
+ this.layoutViews();
358
+ this.saveProportions();
359
+ };
360
+ Splitview.prototype.getViewSize = function (index) {
361
+ if (index < 0 || index >= this.views.length) {
362
+ return -1;
363
+ }
364
+ return this.views[index].size;
365
+ };
366
+ Splitview.prototype.resizeView = function (index, size) {
367
+ var _this = this;
368
+ if (index < 0 || index >= this.views.length) {
369
+ return;
370
+ }
371
+ var indexes = (0, math_1.range)(this.views.length).filter(function (i) { return i !== index; });
372
+ var lowPriorityIndexes = __spreadArray(__spreadArray([], __read(indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.Low; })), false), [
373
+ index,
374
+ ], false);
375
+ var highPriorityIndexes = indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.High; });
376
+ var item = this.views[index];
377
+ size = Math.round(size);
378
+ size = (0, math_1.clamp)(size, item.minimumSize, Math.min(item.maximumSize, this._size));
379
+ item.size = size;
380
+ this.relayout(lowPriorityIndexes, highPriorityIndexes);
381
+ };
382
+ Splitview.prototype.getViews = function () {
383
+ return this.views.map(function (x) { return x.view; });
384
+ };
385
+ Splitview.prototype.onDidChange = function (item, size) {
386
+ var index = this.views.indexOf(item);
387
+ if (index < 0 || index >= this.views.length) {
388
+ return;
389
+ }
390
+ size = typeof size === 'number' ? size : item.size;
391
+ size = (0, math_1.clamp)(size, item.minimumSize, item.maximumSize);
392
+ item.size = size;
393
+ this.relayout([index]);
394
+ };
395
+ Splitview.prototype.addView = function (view, size, index, skipLayout) {
396
+ var _this = this;
397
+ if (size === void 0) { size = { type: 'distribute' }; }
398
+ if (index === void 0) { index = this.views.length; }
399
+ var container = document.createElement('div');
400
+ container.className = 'view';
401
+ container.appendChild(view.element);
402
+ var viewSize;
403
+ if (typeof size === 'number') {
404
+ viewSize = size;
405
+ }
406
+ else if (size.type === 'split') {
407
+ viewSize = this.getViewSize(size.index) / 2;
408
+ }
409
+ else if (size.type === 'invisible') {
410
+ viewSize = { cachedVisibleSize: size.cachedVisibleSize };
411
+ }
412
+ else {
413
+ viewSize = view.minimumSize;
414
+ }
415
+ var disposable = view.onDidChange(function (newSize) {
416
+ return _this.onDidChange(viewItem, newSize.size);
417
+ });
418
+ var dispose = function () {
419
+ disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
420
+ _this.viewContainer.removeChild(container);
421
+ };
422
+ var viewItem = new viewItem_1.ViewItem(container, view, viewSize, { dispose: dispose });
423
+ if (index === this.views.length) {
424
+ this.viewContainer.appendChild(container);
425
+ }
426
+ else {
427
+ this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));
428
+ }
429
+ this.views.splice(index, 0, viewItem);
430
+ if (this.views.length > 1) {
431
+ //add sash
432
+ var sash_1 = document.createElement('div');
433
+ sash_1.className = 'sash';
434
+ var onStart_1 = function (event) {
435
+ var e_3, _a, e_4, _b;
436
+ try {
437
+ for (var _c = __values(_this.views), _d = _c.next(); !_d.done; _d = _c.next()) {
438
+ var item = _d.value;
439
+ item.enabled = false;
440
+ }
441
+ }
442
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
443
+ finally {
444
+ try {
445
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
446
+ }
447
+ finally { if (e_3) throw e_3.error; }
448
+ }
449
+ var iframes = __spreadArray(__spreadArray([], __read((0, dom_1.getElementsByTagName)('iframe')), false), __read((0, dom_1.getElementsByTagName)('webview')), false);
450
+ try {
451
+ for (var iframes_1 = __values(iframes), iframes_1_1 = iframes_1.next(); !iframes_1_1.done; iframes_1_1 = iframes_1.next()) {
452
+ var iframe = iframes_1_1.value;
453
+ iframe.style.pointerEvents = 'none';
454
+ }
455
+ }
456
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
457
+ finally {
458
+ try {
459
+ if (iframes_1_1 && !iframes_1_1.done && (_b = iframes_1.return)) _b.call(iframes_1);
460
+ }
461
+ finally { if (e_4) throw e_4.error; }
462
+ }
463
+ var start = _this._orientation === Orientation.HORIZONTAL
464
+ ? event.clientX
465
+ : event.clientY;
466
+ var sashIndex = (0, array_1.firstIndex)(_this.sashes, function (s) { return s.container === sash_1; });
467
+ //
468
+ var sizes = _this.views.map(function (x) { return x.size; });
469
+ //
470
+ var snapBefore;
471
+ var snapAfter;
472
+ var upIndexes = (0, math_1.range)(sashIndex, -1);
473
+ var downIndexes = (0, math_1.range)(sashIndex + 1, _this.views.length);
474
+ var minDeltaUp = upIndexes.reduce(function (r, i) { return r + (_this.views[i].minimumSize - sizes[i]); }, 0);
475
+ var maxDeltaUp = upIndexes.reduce(function (r, i) { return r + (_this.views[i].viewMaximumSize - sizes[i]); }, 0);
476
+ var maxDeltaDown = downIndexes.length === 0
477
+ ? Number.POSITIVE_INFINITY
478
+ : downIndexes.reduce(function (r, i) {
479
+ return r + (sizes[i] - _this.views[i].minimumSize);
480
+ }, 0);
481
+ var minDeltaDown = downIndexes.length === 0
482
+ ? Number.NEGATIVE_INFINITY
483
+ : downIndexes.reduce(function (r, i) {
484
+ return r +
485
+ (sizes[i] - _this.views[i].viewMaximumSize);
486
+ }, 0);
487
+ var minDelta = Math.max(minDeltaUp, minDeltaDown);
488
+ var maxDelta = Math.min(maxDeltaDown, maxDeltaUp);
489
+ var snapBeforeIndex = _this.findFirstSnapIndex(upIndexes);
490
+ var snapAfterIndex = _this.findFirstSnapIndex(downIndexes);
491
+ if (typeof snapBeforeIndex === 'number') {
492
+ var snappedViewItem = _this.views[snapBeforeIndex];
493
+ var halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);
494
+ snapBefore = {
495
+ index: snapBeforeIndex,
496
+ limitDelta: snappedViewItem.visible
497
+ ? minDelta - halfSize
498
+ : minDelta + halfSize,
499
+ size: snappedViewItem.size,
500
+ };
501
+ }
502
+ if (typeof snapAfterIndex === 'number') {
503
+ var snappedViewItem = _this.views[snapAfterIndex];
504
+ var halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);
505
+ snapAfter = {
506
+ index: snapAfterIndex,
507
+ limitDelta: snappedViewItem.visible
508
+ ? maxDelta + halfSize
509
+ : maxDelta - halfSize,
510
+ size: snappedViewItem.size,
511
+ };
512
+ }
513
+ //
514
+ var mousemove = function (mousemoveEvent) {
515
+ var current = _this._orientation === Orientation.HORIZONTAL
516
+ ? mousemoveEvent.clientX
517
+ : mousemoveEvent.clientY;
518
+ var delta = current - start;
519
+ _this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);
520
+ _this.distributeEmptySpace();
521
+ _this.layoutViews();
522
+ };
523
+ var end = function () {
524
+ var e_5, _a, e_6, _b;
525
+ try {
526
+ for (var _c = __values(_this.views), _d = _c.next(); !_d.done; _d = _c.next()) {
527
+ var item = _d.value;
528
+ item.enabled = true;
529
+ }
530
+ }
531
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
532
+ finally {
533
+ try {
534
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
535
+ }
536
+ finally { if (e_5) throw e_5.error; }
537
+ }
538
+ try {
539
+ for (var iframes_2 = __values(iframes), iframes_2_1 = iframes_2.next(); !iframes_2_1.done; iframes_2_1 = iframes_2.next()) {
540
+ var iframe = iframes_2_1.value;
541
+ iframe.style.pointerEvents = 'auto';
542
+ }
543
+ }
544
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
545
+ finally {
546
+ try {
547
+ if (iframes_2_1 && !iframes_2_1.done && (_b = iframes_2.return)) _b.call(iframes_2);
548
+ }
549
+ finally { if (e_6) throw e_6.error; }
550
+ }
551
+ _this.saveProportions();
552
+ document.removeEventListener('mousemove', mousemove);
553
+ document.removeEventListener('mouseup', end);
554
+ document.removeEventListener('mouseend', end);
555
+ _this._onDidSashEnd.fire(undefined);
556
+ };
557
+ document.addEventListener('mousemove', mousemove);
558
+ document.addEventListener('mouseup', end);
559
+ document.addEventListener('mouseend', end);
560
+ };
561
+ sash_1.addEventListener('mousedown', onStart_1);
562
+ var sashItem = {
563
+ container: sash_1,
564
+ disposable: function () {
565
+ sash_1.removeEventListener('mousedown', onStart_1);
566
+ _this.sashContainer.removeChild(sash_1);
567
+ },
568
+ };
569
+ this.sashContainer.appendChild(sash_1);
570
+ this.sashes.push(sashItem);
571
+ }
572
+ if (!skipLayout) {
573
+ this.relayout([index]);
574
+ }
575
+ if (!skipLayout &&
576
+ typeof size !== 'number' &&
577
+ size.type === 'distribute') {
578
+ this.distributeViewSizes();
579
+ }
580
+ this._onDidAddView.fire(view);
581
+ };
582
+ Splitview.prototype.distributeViewSizes = function () {
583
+ var e_7, _a, e_8, _b;
584
+ var _this = this;
585
+ var flexibleViewItems = [];
586
+ var flexibleSize = 0;
587
+ try {
588
+ for (var _c = __values(this.views), _d = _c.next(); !_d.done; _d = _c.next()) {
589
+ var item = _d.value;
590
+ if (item.maximumSize - item.minimumSize > 0) {
591
+ flexibleViewItems.push(item);
592
+ flexibleSize += item.size;
593
+ }
594
+ }
595
+ }
596
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
597
+ finally {
598
+ try {
599
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
600
+ }
601
+ finally { if (e_7) throw e_7.error; }
602
+ }
603
+ var size = Math.floor(flexibleSize / flexibleViewItems.length);
604
+ try {
605
+ for (var flexibleViewItems_1 = __values(flexibleViewItems), flexibleViewItems_1_1 = flexibleViewItems_1.next(); !flexibleViewItems_1_1.done; flexibleViewItems_1_1 = flexibleViewItems_1.next()) {
606
+ var item = flexibleViewItems_1_1.value;
607
+ item.size = (0, math_1.clamp)(size, item.minimumSize, item.maximumSize);
608
+ }
609
+ }
610
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
611
+ finally {
612
+ try {
613
+ if (flexibleViewItems_1_1 && !flexibleViewItems_1_1.done && (_b = flexibleViewItems_1.return)) _b.call(flexibleViewItems_1);
614
+ }
615
+ finally { if (e_8) throw e_8.error; }
616
+ }
617
+ var indexes = (0, math_1.range)(this.views.length);
618
+ var lowPriorityIndexes = indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.Low; });
619
+ var highPriorityIndexes = indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.High; });
620
+ this.relayout(lowPriorityIndexes, highPriorityIndexes);
621
+ };
622
+ Splitview.prototype.removeView = function (index, sizing, skipLayout) {
623
+ if (skipLayout === void 0) { skipLayout = false; }
624
+ // Remove view
625
+ var viewItem = this.views.splice(index, 1)[0];
626
+ viewItem.dispose();
627
+ // Remove sash
628
+ if (this.views.length >= 1) {
629
+ var sashIndex = Math.max(index - 1, 0);
630
+ var sashItem = this.sashes.splice(sashIndex, 1)[0];
631
+ sashItem.disposable();
632
+ }
633
+ if (!skipLayout) {
634
+ this.relayout();
635
+ }
636
+ if (sizing && sizing.type === 'distribute') {
637
+ this.distributeViewSizes();
638
+ }
639
+ this._onDidRemoveView.fire(viewItem.view);
640
+ return viewItem.view;
641
+ };
642
+ Splitview.prototype.getViewCachedVisibleSize = function (index) {
643
+ if (index < 0 || index >= this.views.length) {
644
+ throw new Error('Index out of bounds');
645
+ }
646
+ var viewItem = this.views[index];
647
+ return viewItem.cachedVisibleSize;
648
+ };
649
+ Splitview.prototype.moveView = function (from, to) {
650
+ var cachedVisibleSize = this.getViewCachedVisibleSize(from);
651
+ var sizing = typeof cachedVisibleSize === 'undefined'
652
+ ? this.getViewSize(from)
653
+ : Sizing.Invisible(cachedVisibleSize);
654
+ var view = this.removeView(from, undefined, true);
655
+ this.addView(view, sizing, to);
656
+ };
657
+ Splitview.prototype.layout = function (size, orthogonalSize) {
658
+ var _this = this;
659
+ var previousSize = Math.max(this.size, this.contentSize);
660
+ this.size = size;
661
+ this.orthogonalSize = orthogonalSize;
662
+ if (!this.proportions) {
663
+ var indexes = (0, math_1.range)(this.views.length);
664
+ var lowPriorityIndexes = indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.Low; });
665
+ var highPriorityIndexes = indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.High; });
666
+ this.resize(this.views.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);
667
+ }
668
+ else {
669
+ for (var i = 0; i < this.views.length; i++) {
670
+ var item = this.views[i];
671
+ item.size = (0, math_1.clamp)(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);
672
+ }
673
+ }
674
+ this.distributeEmptySpace();
675
+ this.layoutViews();
676
+ };
677
+ Splitview.prototype.relayout = function (lowPriorityIndexes, highPriorityIndexes) {
678
+ var contentSize = this.views.reduce(function (r, i) { return r + i.size; }, 0);
679
+ this.resize(this.views.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);
680
+ this.distributeEmptySpace();
681
+ this.layoutViews();
682
+ this.saveProportions();
683
+ };
684
+ Splitview.prototype.distributeEmptySpace = function (lowPriorityIndex) {
685
+ var e_9, _a, e_10, _b;
686
+ var _this = this;
687
+ var contentSize = this.views.reduce(function (r, i) { return r + i.size; }, 0);
688
+ var emptyDelta = this.size - contentSize;
689
+ var indexes = (0, math_1.range)(this.views.length - 1, -1);
690
+ var lowPriorityIndexes = indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.Low; });
691
+ var highPriorityIndexes = indexes.filter(function (i) { return _this.views[i].priority === LayoutPriority.High; });
692
+ try {
693
+ for (var highPriorityIndexes_2 = __values(highPriorityIndexes), highPriorityIndexes_2_1 = highPriorityIndexes_2.next(); !highPriorityIndexes_2_1.done; highPriorityIndexes_2_1 = highPriorityIndexes_2.next()) {
694
+ var index = highPriorityIndexes_2_1.value;
695
+ (0, array_1.pushToStart)(indexes, index);
696
+ }
697
+ }
698
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
699
+ finally {
700
+ try {
701
+ if (highPriorityIndexes_2_1 && !highPriorityIndexes_2_1.done && (_a = highPriorityIndexes_2.return)) _a.call(highPriorityIndexes_2);
702
+ }
703
+ finally { if (e_9) throw e_9.error; }
704
+ }
705
+ try {
706
+ for (var lowPriorityIndexes_2 = __values(lowPriorityIndexes), lowPriorityIndexes_2_1 = lowPriorityIndexes_2.next(); !lowPriorityIndexes_2_1.done; lowPriorityIndexes_2_1 = lowPriorityIndexes_2.next()) {
707
+ var index = lowPriorityIndexes_2_1.value;
708
+ (0, array_1.pushToEnd)(indexes, index);
709
+ }
710
+ }
711
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
712
+ finally {
713
+ try {
714
+ if (lowPriorityIndexes_2_1 && !lowPriorityIndexes_2_1.done && (_b = lowPriorityIndexes_2.return)) _b.call(lowPriorityIndexes_2);
715
+ }
716
+ finally { if (e_10) throw e_10.error; }
717
+ }
718
+ if (typeof lowPriorityIndex === 'number') {
719
+ (0, array_1.pushToEnd)(indexes, lowPriorityIndex);
720
+ }
721
+ for (var i = 0; emptyDelta !== 0 && i < indexes.length; i++) {
722
+ var item = this.views[indexes[i]];
723
+ var size = (0, math_1.clamp)(item.size + emptyDelta, item.minimumSize, item.maximumSize);
724
+ var viewDelta = size - item.size;
725
+ emptyDelta -= viewDelta;
726
+ item.size = size;
727
+ }
728
+ };
729
+ Splitview.prototype.saveProportions = function () {
730
+ var _this = this;
731
+ if (this.proportionalLayout && this.contentSize > 0) {
732
+ this._proportions = this.views.map(function (i) { return i.size / _this.contentSize; });
733
+ }
734
+ };
735
+ Splitview.prototype.layoutViews = function () {
736
+ var _this = this;
737
+ this.contentSize = this.views.reduce(function (r, i) { return r + i.size; }, 0);
738
+ var sum = 0;
739
+ var x = [];
740
+ this.updateSashEnablement();
741
+ for (var i = 0; i < this.views.length - 1; i++) {
742
+ sum += this.views[i].size;
743
+ x.push(sum);
744
+ var offset = Math.min(Math.max(0, sum - 2), this.size - 4);
745
+ if (this._orientation === Orientation.HORIZONTAL) {
746
+ this.sashes[i].container.style.left = "".concat(offset, "px");
747
+ this.sashes[i].container.style.top = "0px";
748
+ }
749
+ if (this._orientation === Orientation.VERTICAL) {
750
+ this.sashes[i].container.style.left = "0px";
751
+ this.sashes[i].container.style.top = "".concat(offset, "px");
752
+ }
753
+ }
754
+ this.views.forEach(function (view, i) {
755
+ if (_this._orientation === Orientation.HORIZONTAL) {
756
+ view.container.style.width = "".concat(view.size, "px");
757
+ view.container.style.left = i == 0 ? '0px' : "".concat(x[i - 1], "px");
758
+ view.container.style.top = '';
759
+ view.container.style.height = '';
760
+ }
761
+ if (_this._orientation === Orientation.VERTICAL) {
762
+ view.container.style.height = "".concat(view.size, "px");
763
+ view.container.style.top = i == 0 ? '0px' : "".concat(x[i - 1], "px");
764
+ view.container.style.width = '';
765
+ view.container.style.left = '';
766
+ }
767
+ view.view.layout(view.size, _this._orthogonalSize);
768
+ });
769
+ };
770
+ Splitview.prototype.findFirstSnapIndex = function (indexes) {
771
+ var e_11, _a, e_12, _b;
772
+ try {
773
+ // visible views first
774
+ for (var indexes_1 = __values(indexes), indexes_1_1 = indexes_1.next(); !indexes_1_1.done; indexes_1_1 = indexes_1.next()) {
775
+ var index = indexes_1_1.value;
776
+ var viewItem = this.views[index];
777
+ if (!viewItem.visible) {
778
+ continue;
779
+ }
780
+ if (viewItem.snap) {
781
+ return index;
782
+ }
783
+ }
784
+ }
785
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
786
+ finally {
787
+ try {
788
+ if (indexes_1_1 && !indexes_1_1.done && (_a = indexes_1.return)) _a.call(indexes_1);
789
+ }
790
+ finally { if (e_11) throw e_11.error; }
791
+ }
792
+ try {
793
+ // then, hidden views
794
+ for (var indexes_2 = __values(indexes), indexes_2_1 = indexes_2.next(); !indexes_2_1.done; indexes_2_1 = indexes_2.next()) {
795
+ var index = indexes_2_1.value;
796
+ var viewItem = this.views[index];
797
+ if (viewItem.visible &&
798
+ viewItem.maximumSize - viewItem.minimumSize > 0) {
799
+ return undefined;
800
+ }
801
+ if (!viewItem.visible && viewItem.snap) {
802
+ return index;
803
+ }
804
+ }
805
+ }
806
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
807
+ finally {
808
+ try {
809
+ if (indexes_2_1 && !indexes_2_1.done && (_b = indexes_2.return)) _b.call(indexes_2);
810
+ }
811
+ finally { if (e_12) throw e_12.error; }
812
+ }
813
+ return undefined;
814
+ };
815
+ Splitview.prototype.updateSashEnablement = function () {
816
+ var previous = false;
817
+ var collapsesDown = this.views.map(function (i) { return (previous = i.size - i.minimumSize > 0 || previous); });
818
+ previous = false;
819
+ var expandsDown = this.views.map(function (i) { return (previous = i.maximumSize - i.size > 0 || previous); });
820
+ var reverseViews = __spreadArray([], __read(this.views), false).reverse();
821
+ previous = false;
822
+ var collapsesUp = reverseViews
823
+ .map(function (i) { return (previous = i.size - i.minimumSize > 0 || previous); })
824
+ .reverse();
825
+ previous = false;
826
+ var expandsUp = reverseViews
827
+ .map(function (i) { return (previous = i.maximumSize - i.size > 0 || previous); })
828
+ .reverse();
829
+ var position = 0;
830
+ for (var index = 0; index < this.sashes.length; index++) {
831
+ var sash = this.sashes[index];
832
+ var viewItem = this.views[index];
833
+ position += viewItem.size;
834
+ var min = !(collapsesDown[index] && expandsUp[index + 1]);
835
+ var max = !(expandsDown[index] && collapsesUp[index + 1]);
836
+ if (min && max) {
837
+ var upIndexes = (0, math_1.range)(index, -1);
838
+ var downIndexes = (0, math_1.range)(index + 1, this.views.length);
839
+ var snapBeforeIndex = this.findFirstSnapIndex(upIndexes);
840
+ var snapAfterIndex = this.findFirstSnapIndex(downIndexes);
841
+ var snappedBefore = typeof snapBeforeIndex === 'number' &&
842
+ !this.views[snapBeforeIndex].visible;
843
+ var snappedAfter = typeof snapAfterIndex === 'number' &&
844
+ !this.views[snapAfterIndex].visible;
845
+ if (snappedBefore &&
846
+ collapsesUp[index] &&
847
+ (position > 0 || this.startSnappingEnabled)) {
848
+ this.updateSash(sash, SashState.MINIMUM);
849
+ }
850
+ else if (snappedAfter &&
851
+ collapsesDown[index] &&
852
+ (position < this.contentSize || this.endSnappingEnabled)) {
853
+ this.updateSash(sash, SashState.MAXIMUM);
854
+ }
855
+ else {
856
+ this.updateSash(sash, SashState.DISABLED);
857
+ }
858
+ }
859
+ else if (min && !max) {
860
+ this.updateSash(sash, SashState.MINIMUM);
861
+ }
862
+ else if (!min && max) {
863
+ this.updateSash(sash, SashState.MAXIMUM);
864
+ }
865
+ else {
866
+ this.updateSash(sash, SashState.ENABLED);
867
+ }
868
+ }
869
+ };
870
+ Splitview.prototype.updateSash = function (sash, state) {
871
+ (0, dom_1.toggleClass)(sash.container, 'disabled', state === SashState.DISABLED);
872
+ (0, dom_1.toggleClass)(sash.container, 'enabled', state === SashState.ENABLED);
873
+ (0, dom_1.toggleClass)(sash.container, 'maximum', state === SashState.MAXIMUM);
874
+ (0, dom_1.toggleClass)(sash.container, 'minimum', state === SashState.MINIMUM);
875
+ };
876
+ Splitview.prototype.createViewContainer = function () {
877
+ var element = document.createElement('div');
878
+ element.className = 'view-container';
879
+ return element;
880
+ };
881
+ Splitview.prototype.createSashContainer = function () {
882
+ var element = document.createElement('div');
883
+ element.className = 'sash-container';
884
+ return element;
885
+ };
886
+ Splitview.prototype.createContainer = function () {
887
+ var element = document.createElement('div');
888
+ var orientationClassname = this._orientation === Orientation.HORIZONTAL
889
+ ? 'horizontal'
890
+ : 'vertical';
891
+ element.className = "split-view-container ".concat(orientationClassname);
892
+ return element;
893
+ };
894
+ Splitview.prototype.dispose = function () {
895
+ this._onDidSashEnd.dispose();
896
+ this._onDidAddView.dispose();
897
+ this._onDidRemoveView.dispose();
898
+ for (var i = 0; i < this.element.children.length; i++) {
899
+ if (this.element.children.item(i) === this.element) {
900
+ this.element.removeChild(this.element);
901
+ break;
902
+ }
903
+ }
904
+ this.element.remove();
905
+ };
906
+ return Splitview;
907
+ }());
908
+ exports.Splitview = Splitview;
909
+ //# sourceMappingURL=splitview.js.map