dockview-core 1.6.0 → 1.7.1

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 (428) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -52
  3. package/dist/cjs/api/component.api.d.ts +144 -145
  4. package/dist/cjs/api/component.api.d.ts.map +1 -0
  5. package/dist/cjs/api/component.api.js +572 -578
  6. package/dist/cjs/api/component.api.js.map +1 -1
  7. package/dist/cjs/api/dockviewPanelApi.d.ts +35 -34
  8. package/dist/cjs/api/dockviewPanelApi.d.ts.map +1 -0
  9. package/dist/cjs/api/dockviewPanelApi.js +83 -83
  10. package/dist/cjs/api/gridviewPanelApi.d.ts +38 -37
  11. package/dist/cjs/api/gridviewPanelApi.d.ts.map +1 -0
  12. package/dist/cjs/api/gridviewPanelApi.js +47 -47
  13. package/dist/cjs/api/panelApi.d.ts +89 -88
  14. package/dist/cjs/api/panelApi.d.ts.map +1 -0
  15. package/dist/cjs/api/panelApi.js +137 -137
  16. package/dist/cjs/api/paneviewPanelApi.d.ts +27 -26
  17. package/dist/cjs/api/paneviewPanelApi.d.ts.map +1 -0
  18. package/dist/cjs/api/paneviewPanelApi.js +57 -57
  19. package/dist/cjs/api/splitviewPanelApi.d.ts +33 -32
  20. package/dist/cjs/api/splitviewPanelApi.d.ts.map +1 -0
  21. package/dist/cjs/api/splitviewPanelApi.js +47 -47
  22. package/dist/cjs/array.d.ts +13 -12
  23. package/dist/cjs/array.d.ts.map +1 -0
  24. package/dist/cjs/array.js +58 -58
  25. package/dist/cjs/dnd/abstractDragHandler.d.ts +12 -11
  26. package/dist/cjs/dnd/abstractDragHandler.d.ts.map +1 -0
  27. package/dist/cjs/dnd/abstractDragHandler.js +125 -125
  28. package/dist/cjs/dnd/dataTransfer.d.ts +32 -31
  29. package/dist/cjs/dnd/dataTransfer.d.ts.map +1 -0
  30. package/dist/cjs/dnd/dataTransfer.js +100 -100
  31. package/dist/cjs/dnd/dnd.d.ts +28 -27
  32. package/dist/cjs/dnd/dnd.d.ts.map +1 -0
  33. package/dist/cjs/dnd/dnd.js +59 -59
  34. package/dist/cjs/dnd/droptarget.d.ts +43 -42
  35. package/dist/cjs/dnd/droptarget.d.ts.map +1 -0
  36. package/dist/cjs/dnd/droptarget.js +280 -280
  37. package/dist/cjs/dnd/ghost.d.ts +2 -1
  38. package/dist/cjs/dnd/ghost.d.ts.map +1 -0
  39. package/dist/cjs/dnd/ghost.js +15 -15
  40. package/dist/cjs/dnd/groupDragHandler.d.ts +12 -11
  41. package/dist/cjs/dnd/groupDragHandler.d.ts.map +1 -0
  42. package/dist/cjs/dnd/groupDragHandler.js +61 -61
  43. package/dist/cjs/dockview/components/panel/content.d.ts +31 -30
  44. package/dist/cjs/dockview/components/panel/content.d.ts.map +1 -0
  45. package/dist/cjs/dockview/components/panel/content.js +100 -100
  46. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +22 -21
  47. package/dist/cjs/dockview/components/tab/defaultTab.d.ts.map +1 -0
  48. package/dist/cjs/dockview/components/tab/defaultTab.js +105 -105
  49. package/dist/cjs/dockview/components/tab/tab.d.ts +32 -31
  50. package/dist/cjs/dockview/components/tab/tab.d.ts.map +1 -0
  51. package/dist/cjs/dockview/components/tab/tab.js +124 -124
  52. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +60 -63
  53. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +1 -0
  54. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +230 -247
  55. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
  56. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +16 -15
  57. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts.map +1 -0
  58. package/dist/cjs/dockview/components/titlebar/voidContainer.js +73 -73
  59. package/dist/cjs/dockview/components/watermark/watermark.d.ts +19 -18
  60. package/dist/cjs/dockview/components/watermark/watermark.d.ts.map +1 -0
  61. package/dist/cjs/dockview/components/watermark/watermark.js +87 -86
  62. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  63. package/dist/cjs/dockview/deserializer.d.ts +13 -12
  64. package/dist/cjs/dockview/deserializer.d.ts.map +1 -0
  65. package/dist/cjs/dockview/deserializer.js +45 -45
  66. package/dist/cjs/dockview/dockviewComponent.d.ts +121 -126
  67. package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -0
  68. package/dist/cjs/dockview/dockviewComponent.js +749 -771
  69. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  70. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +32 -31
  71. package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -0
  72. package/dist/cjs/dockview/dockviewGroupPanel.js +96 -96
  73. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +175 -176
  74. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -0
  75. package/dist/cjs/dockview/dockviewGroupPanelModel.js +578 -578
  76. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
  77. package/dist/cjs/dockview/dockviewPanel.d.ts +41 -40
  78. package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -0
  79. package/dist/cjs/dockview/dockviewPanel.js +146 -149
  80. package/dist/cjs/dockview/dockviewPanel.js.map +1 -1
  81. package/dist/cjs/dockview/dockviewPanelModel.d.ts +35 -34
  82. package/dist/cjs/dockview/dockviewPanelModel.d.ts.map +1 -0
  83. package/dist/cjs/dockview/dockviewPanelModel.js +92 -92
  84. package/dist/cjs/dockview/options.d.ts +117 -116
  85. package/dist/cjs/dockview/options.d.ts.map +1 -0
  86. package/dist/cjs/dockview/options.js +31 -31
  87. package/dist/cjs/dockview/types.d.ts +68 -67
  88. package/dist/cjs/dockview/types.d.ts.map +1 -0
  89. package/dist/cjs/dockview/types.js +10 -10
  90. package/dist/cjs/dom.d.ts +15 -14
  91. package/dist/cjs/dom.d.ts.map +1 -0
  92. package/dist/cjs/dom.js +189 -182
  93. package/dist/cjs/dom.js.map +1 -1
  94. package/dist/cjs/events.d.ts +31 -30
  95. package/dist/cjs/events.d.ts.map +1 -0
  96. package/dist/cjs/events.js +129 -129
  97. package/dist/cjs/gridview/baseComponentGridview.d.ts +88 -87
  98. package/dist/cjs/gridview/baseComponentGridview.d.ts.map +1 -0
  99. package/dist/cjs/gridview/baseComponentGridview.js +271 -279
  100. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  101. package/dist/cjs/gridview/basePanelView.d.ts +41 -40
  102. package/dist/cjs/gridview/basePanelView.d.ts.map +1 -0
  103. package/dist/cjs/gridview/basePanelView.js +123 -123
  104. package/dist/cjs/gridview/branchNode.d.ts +50 -49
  105. package/dist/cjs/gridview/branchNode.d.ts.map +1 -0
  106. package/dist/cjs/gridview/branchNode.js +342 -342
  107. package/dist/cjs/gridview/gridview.d.ts +134 -133
  108. package/dist/cjs/gridview/gridview.d.ts.map +1 -0
  109. package/dist/cjs/gridview/gridview.js +517 -510
  110. package/dist/cjs/gridview/gridview.js.map +1 -1
  111. package/dist/cjs/gridview/gridviewComponent.d.ts +81 -80
  112. package/dist/cjs/gridview/gridviewComponent.d.ts.map +1 -0
  113. package/dist/cjs/gridview/gridviewComponent.js +325 -324
  114. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  115. package/dist/cjs/gridview/gridviewPanel.d.ts +66 -65
  116. package/dist/cjs/gridview/gridviewPanel.d.ts.map +1 -0
  117. package/dist/cjs/gridview/gridviewPanel.js +214 -214
  118. package/dist/cjs/gridview/leafNode.d.ts +35 -34
  119. package/dist/cjs/gridview/leafNode.d.ts.map +1 -0
  120. package/dist/cjs/gridview/leafNode.js +170 -170
  121. package/dist/cjs/gridview/options.d.ts +19 -18
  122. package/dist/cjs/gridview/options.d.ts.map +1 -0
  123. package/dist/cjs/gridview/options.js +2 -2
  124. package/dist/cjs/gridview/types.d.ts +4 -3
  125. package/dist/cjs/gridview/types.d.ts.map +1 -0
  126. package/dist/cjs/gridview/types.js +2 -2
  127. package/dist/cjs/index.d.ts +42 -41
  128. package/dist/cjs/index.d.ts.map +1 -0
  129. package/dist/cjs/index.js +63 -63
  130. package/dist/cjs/lifecycle.d.ts +25 -22
  131. package/dist/cjs/lifecycle.d.ts.map +1 -0
  132. package/dist/cjs/lifecycle.js +97 -88
  133. package/dist/cjs/lifecycle.js.map +1 -1
  134. package/dist/cjs/math.d.ts +6 -5
  135. package/dist/cjs/math.d.ts.map +1 -0
  136. package/dist/cjs/math.js +34 -34
  137. package/dist/cjs/panel/componentFactory.d.ts +11 -10
  138. package/dist/cjs/panel/componentFactory.d.ts.map +1 -0
  139. package/dist/cjs/panel/componentFactory.js +30 -30
  140. package/dist/cjs/panel/types.d.ts +34 -33
  141. package/dist/cjs/panel/types.d.ts.map +1 -0
  142. package/dist/cjs/panel/types.js +2 -2
  143. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +22 -21
  144. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts.map +1 -0
  145. package/dist/cjs/paneview/defaultPaneviewHeader.js +90 -90
  146. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +22 -21
  147. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts.map +1 -0
  148. package/dist/cjs/paneview/draggablePaneviewPanel.js +131 -131
  149. package/dist/cjs/paneview/options.d.ts +29 -27
  150. package/dist/cjs/paneview/options.d.ts.map +1 -0
  151. package/dist/cjs/paneview/options.js +2 -2
  152. package/dist/cjs/paneview/paneview.d.ts +41 -40
  153. package/dist/cjs/paneview/paneview.d.ts.map +1 -0
  154. package/dist/cjs/paneview/paneview.js +201 -201
  155. package/dist/cjs/paneview/paneviewComponent.d.ts +130 -129
  156. package/dist/cjs/paneview/paneviewComponent.d.ts.map +1 -0
  157. package/dist/cjs/paneview/paneviewComponent.js +394 -394
  158. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  159. package/dist/cjs/paneview/paneviewPanel.d.ts +93 -92
  160. package/dist/cjs/paneview/paneviewPanel.d.ts.map +1 -0
  161. package/dist/cjs/paneview/paneviewPanel.js +275 -275
  162. package/dist/cjs/resizable.d.ts +8 -0
  163. package/dist/cjs/resizable.d.ts.map +1 -0
  164. package/dist/cjs/resizable.js +57 -0
  165. package/dist/cjs/resizable.js.map +1 -0
  166. package/dist/cjs/splitview/options.d.ts +28 -26
  167. package/dist/cjs/splitview/options.d.ts.map +1 -0
  168. package/dist/cjs/splitview/options.js +2 -2
  169. package/dist/cjs/splitview/splitview.d.ts +128 -127
  170. package/dist/cjs/splitview/splitview.d.ts.map +1 -0
  171. package/dist/cjs/splitview/splitview.js +908 -908
  172. package/dist/cjs/splitview/splitviewComponent.d.ts +102 -101
  173. package/dist/cjs/splitview/splitviewComponent.d.ts.map +1 -0
  174. package/dist/cjs/splitview/splitviewComponent.js +373 -373
  175. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  176. package/dist/cjs/splitview/splitviewPanel.d.ts +46 -45
  177. package/dist/cjs/splitview/splitviewPanel.d.ts.map +1 -0
  178. package/dist/cjs/splitview/splitviewPanel.js +179 -179
  179. package/dist/cjs/splitview/viewItem.d.ts +26 -25
  180. package/dist/cjs/splitview/viewItem.d.ts.map +1 -0
  181. package/dist/cjs/splitview/viewItem.js +119 -119
  182. package/dist/cjs/svg.d.ts +4 -3
  183. package/dist/cjs/svg.d.ts.map +1 -0
  184. package/dist/cjs/svg.js +43 -43
  185. package/dist/cjs/types.d.ts +3 -2
  186. package/dist/cjs/types.d.ts.map +1 -0
  187. package/dist/cjs/types.js +2 -2
  188. package/dist/dockview-core.amd.js +6343 -6339
  189. package/dist/dockview-core.amd.min.js +2 -2
  190. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  191. package/dist/dockview-core.amd.noStyle.js +6310 -6306
  192. package/dist/dockview-core.cjs.js +6339 -6335
  193. package/dist/dockview-core.esm.js +6339 -6335
  194. package/dist/dockview-core.esm.min.js +2 -2
  195. package/dist/dockview-core.js +6343 -6339
  196. package/dist/dockview-core.min.js +2 -2
  197. package/dist/dockview-core.min.noStyle.js +2 -2
  198. package/dist/dockview-core.noStyle.js +6310 -6306
  199. package/dist/esm/api/component.api.d.ts +144 -145
  200. package/dist/esm/api/component.api.d.ts.map +1 -0
  201. package/dist/esm/api/component.api.js +324 -329
  202. package/dist/esm/api/component.api.js.map +1 -0
  203. package/dist/esm/api/dockviewPanelApi.d.ts +35 -34
  204. package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -0
  205. package/dist/esm/api/dockviewPanelApi.js +49 -48
  206. package/dist/esm/api/dockviewPanelApi.js.map +1 -0
  207. package/dist/esm/api/gridviewPanelApi.d.ts +38 -37
  208. package/dist/esm/api/gridviewPanelApi.d.ts.map +1 -0
  209. package/dist/esm/api/gridviewPanelApi.js +26 -25
  210. package/dist/esm/api/gridviewPanelApi.js.map +1 -0
  211. package/dist/esm/api/panelApi.d.ts +89 -88
  212. package/dist/esm/api/panelApi.d.ts.map +1 -0
  213. package/dist/esm/api/panelApi.js +96 -95
  214. package/dist/esm/api/panelApi.js.map +1 -0
  215. package/dist/esm/api/paneviewPanelApi.d.ts +27 -26
  216. package/dist/esm/api/paneviewPanelApi.d.ts.map +1 -0
  217. package/dist/esm/api/paneviewPanelApi.js +28 -27
  218. package/dist/esm/api/paneviewPanelApi.js.map +1 -0
  219. package/dist/esm/api/splitviewPanelApi.d.ts +33 -32
  220. package/dist/esm/api/splitviewPanelApi.d.ts.map +1 -0
  221. package/dist/esm/api/splitviewPanelApi.js +26 -25
  222. package/dist/esm/api/splitviewPanelApi.js.map +1 -0
  223. package/dist/esm/array.d.ts +13 -12
  224. package/dist/esm/array.d.ts.map +1 -0
  225. package/dist/esm/array.js +50 -49
  226. package/dist/esm/array.js.map +1 -0
  227. package/dist/esm/dnd/abstractDragHandler.d.ts +12 -11
  228. package/dist/esm/dnd/abstractDragHandler.d.ts.map +1 -0
  229. package/dist/esm/dnd/abstractDragHandler.js +48 -47
  230. package/dist/esm/dnd/abstractDragHandler.js.map +1 -0
  231. package/dist/esm/dnd/dataTransfer.d.ts +32 -31
  232. package/dist/esm/dnd/dataTransfer.d.ts.map +1 -0
  233. package/dist/esm/dnd/dataTransfer.js +70 -69
  234. package/dist/esm/dnd/dataTransfer.js.map +1 -0
  235. package/dist/esm/dnd/dnd.d.ts +28 -27
  236. package/dist/esm/dnd/dnd.d.ts.map +1 -0
  237. package/dist/esm/dnd/dnd.js +37 -36
  238. package/dist/esm/dnd/dnd.js.map +1 -0
  239. package/dist/esm/dnd/droptarget.d.ts +43 -42
  240. package/dist/esm/dnd/droptarget.d.ts.map +1 -0
  241. package/dist/esm/dnd/droptarget.js +251 -250
  242. package/dist/esm/dnd/droptarget.js.map +1 -0
  243. package/dist/esm/dnd/ghost.d.ts +2 -1
  244. package/dist/esm/dnd/ghost.d.ts.map +1 -0
  245. package/dist/esm/dnd/ghost.js +12 -11
  246. package/dist/esm/dnd/ghost.js.map +1 -0
  247. package/dist/esm/dnd/groupDragHandler.d.ts +12 -11
  248. package/dist/esm/dnd/groupDragHandler.d.ts.map +1 -0
  249. package/dist/esm/dnd/groupDragHandler.js +39 -38
  250. package/dist/esm/dnd/groupDragHandler.js.map +1 -0
  251. package/dist/esm/dockview/components/panel/content.d.ts +31 -30
  252. package/dist/esm/dockview/components/panel/content.d.ts.map +1 -0
  253. package/dist/esm/dockview/components/panel/content.js +74 -73
  254. package/dist/esm/dockview/components/panel/content.js.map +1 -0
  255. package/dist/esm/dockview/components/tab/defaultTab.d.ts +22 -21
  256. package/dist/esm/dockview/components/tab/defaultTab.d.ts.map +1 -0
  257. package/dist/esm/dockview/components/tab/defaultTab.js +68 -67
  258. package/dist/esm/dockview/components/tab/defaultTab.js.map +1 -0
  259. package/dist/esm/dockview/components/tab/tab.d.ts +32 -31
  260. package/dist/esm/dockview/components/tab/tab.d.ts.map +1 -0
  261. package/dist/esm/dockview/components/tab/tab.js +95 -94
  262. package/dist/esm/dockview/components/tab/tab.js.map +1 -0
  263. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +60 -63
  264. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +1 -0
  265. package/dist/esm/dockview/components/titlebar/tabsContainer.js +167 -179
  266. package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -0
  267. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +16 -15
  268. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts.map +1 -0
  269. package/dist/esm/dockview/components/titlebar/voidContainer.js +48 -47
  270. package/dist/esm/dockview/components/titlebar/voidContainer.js.map +1 -0
  271. package/dist/esm/dockview/components/watermark/watermark.d.ts +19 -18
  272. package/dist/esm/dockview/components/watermark/watermark.d.ts.map +1 -0
  273. package/dist/esm/dockview/components/watermark/watermark.js +62 -60
  274. package/dist/esm/dockview/components/watermark/watermark.js.map +1 -0
  275. package/dist/esm/dockview/deserializer.d.ts +13 -12
  276. package/dist/esm/dockview/deserializer.d.ts.map +1 -0
  277. package/dist/esm/dockview/deserializer.js +41 -40
  278. package/dist/esm/dockview/deserializer.js.map +1 -0
  279. package/dist/esm/dockview/dockviewComponent.d.ts +121 -126
  280. package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -0
  281. package/dist/esm/dockview/dockviewComponent.js +595 -612
  282. package/dist/esm/dockview/dockviewComponent.js.map +1 -0
  283. package/dist/esm/dockview/dockviewGroupPanel.d.ts +32 -31
  284. package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -0
  285. package/dist/esm/dockview/dockviewGroupPanel.js +51 -50
  286. package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -0
  287. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +175 -176
  288. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -0
  289. package/dist/esm/dockview/dockviewGroupPanelModel.js +450 -449
  290. package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -0
  291. package/dist/esm/dockview/dockviewPanel.d.ts +41 -40
  292. package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -0
  293. package/dist/esm/dockview/dockviewPanel.js +102 -104
  294. package/dist/esm/dockview/dockviewPanel.js.map +1 -0
  295. package/dist/esm/dockview/dockviewPanelModel.d.ts +35 -34
  296. package/dist/esm/dockview/dockviewPanelModel.d.ts.map +1 -0
  297. package/dist/esm/dockview/dockviewPanelModel.js +69 -68
  298. package/dist/esm/dockview/dockviewPanelModel.js.map +1 -0
  299. package/dist/esm/dockview/options.d.ts +117 -116
  300. package/dist/esm/dockview/options.d.ts.map +1 -0
  301. package/dist/esm/dockview/options.js +25 -24
  302. package/dist/esm/dockview/options.js.map +1 -0
  303. package/dist/esm/dockview/types.d.ts +68 -67
  304. package/dist/esm/dockview/types.d.ts.map +1 -0
  305. package/dist/esm/dockview/types.js +8 -7
  306. package/dist/esm/dockview/types.js.map +1 -0
  307. package/dist/esm/dom.d.ts +15 -14
  308. package/dist/esm/dom.d.ts.map +1 -0
  309. package/dist/esm/dom.js +121 -113
  310. package/dist/esm/dom.js.map +1 -0
  311. package/dist/esm/events.d.ts +31 -30
  312. package/dist/esm/events.d.ts.map +1 -0
  313. package/dist/esm/events.js +89 -88
  314. package/dist/esm/events.js.map +1 -0
  315. package/dist/esm/gridview/baseComponentGridview.d.ts +88 -87
  316. package/dist/esm/gridview/baseComponentGridview.d.ts.map +1 -0
  317. package/dist/esm/gridview/baseComponentGridview.js +186 -189
  318. package/dist/esm/gridview/baseComponentGridview.js.map +1 -0
  319. package/dist/esm/gridview/basePanelView.d.ts +41 -40
  320. package/dist/esm/gridview/basePanelView.d.ts.map +1 -0
  321. package/dist/esm/gridview/basePanelView.js +75 -74
  322. package/dist/esm/gridview/basePanelView.js.map +1 -0
  323. package/dist/esm/gridview/branchNode.d.ts +50 -49
  324. package/dist/esm/gridview/branchNode.d.ts.map +1 -0
  325. package/dist/esm/gridview/branchNode.js +219 -218
  326. package/dist/esm/gridview/branchNode.js.map +1 -0
  327. package/dist/esm/gridview/gridview.d.ts +134 -133
  328. package/dist/esm/gridview/gridview.d.ts.map +1 -0
  329. package/dist/esm/gridview/gridview.js +431 -423
  330. package/dist/esm/gridview/gridview.js.map +1 -0
  331. package/dist/esm/gridview/gridviewComponent.d.ts +81 -80
  332. package/dist/esm/gridview/gridviewComponent.d.ts.map +1 -0
  333. package/dist/esm/gridview/gridviewComponent.js +239 -237
  334. package/dist/esm/gridview/gridviewComponent.js.map +1 -0
  335. package/dist/esm/gridview/gridviewPanel.d.ts +66 -65
  336. package/dist/esm/gridview/gridviewPanel.d.ts.map +1 -0
  337. package/dist/esm/gridview/gridviewPanel.js +152 -151
  338. package/dist/esm/gridview/gridviewPanel.js.map +1 -0
  339. package/dist/esm/gridview/leafNode.d.ts +35 -34
  340. package/dist/esm/gridview/leafNode.d.ts.map +1 -0
  341. package/dist/esm/gridview/leafNode.js +104 -103
  342. package/dist/esm/gridview/leafNode.js.map +1 -0
  343. package/dist/esm/gridview/options.d.ts +19 -18
  344. package/dist/esm/gridview/options.d.ts.map +1 -0
  345. package/dist/esm/gridview/options.js +2 -1
  346. package/dist/esm/gridview/options.js.map +1 -0
  347. package/dist/esm/gridview/types.d.ts +4 -3
  348. package/dist/esm/gridview/types.d.ts.map +1 -0
  349. package/dist/esm/gridview/types.js +2 -1
  350. package/dist/esm/gridview/types.js.map +1 -0
  351. package/dist/esm/index.d.ts +42 -41
  352. package/dist/esm/index.d.ts.map +1 -0
  353. package/dist/esm/index.js +36 -35
  354. package/dist/esm/index.js.map +1 -0
  355. package/dist/esm/lifecycle.d.ts +25 -22
  356. package/dist/esm/lifecycle.d.ts.map +1 -0
  357. package/dist/esm/lifecycle.js +45 -39
  358. package/dist/esm/lifecycle.js.map +1 -0
  359. package/dist/esm/math.d.ts +6 -5
  360. package/dist/esm/math.d.ts.map +1 -0
  361. package/dist/esm/math.js +29 -28
  362. package/dist/esm/math.js.map +1 -0
  363. package/dist/esm/panel/componentFactory.d.ts +11 -10
  364. package/dist/esm/panel/componentFactory.d.ts.map +1 -0
  365. package/dist/esm/panel/componentFactory.js +25 -24
  366. package/dist/esm/panel/componentFactory.js.map +1 -0
  367. package/dist/esm/panel/types.d.ts +34 -33
  368. package/dist/esm/panel/types.d.ts.map +1 -0
  369. package/dist/esm/panel/types.js +2 -1
  370. package/dist/esm/panel/types.js.map +1 -0
  371. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +22 -21
  372. package/dist/esm/paneview/defaultPaneviewHeader.d.ts.map +1 -0
  373. package/dist/esm/paneview/defaultPaneviewHeader.js +64 -63
  374. package/dist/esm/paneview/defaultPaneviewHeader.js.map +1 -0
  375. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +22 -21
  376. package/dist/esm/paneview/draggablePaneviewPanel.d.ts.map +1 -0
  377. package/dist/esm/paneview/draggablePaneviewPanel.js +93 -92
  378. package/dist/esm/paneview/draggablePaneviewPanel.js.map +1 -0
  379. package/dist/esm/paneview/options.d.ts +29 -27
  380. package/dist/esm/paneview/options.d.ts.map +1 -0
  381. package/dist/esm/paneview/options.js +2 -1
  382. package/dist/esm/paneview/options.js.map +1 -0
  383. package/dist/esm/paneview/paneview.d.ts +41 -40
  384. package/dist/esm/paneview/paneview.d.ts.map +1 -0
  385. package/dist/esm/paneview/paneview.js +146 -145
  386. package/dist/esm/paneview/paneview.js.map +1 -0
  387. package/dist/esm/paneview/paneviewComponent.d.ts +130 -129
  388. package/dist/esm/paneview/paneviewComponent.d.ts.map +1 -0
  389. package/dist/esm/paneview/paneviewComponent.js +271 -270
  390. package/dist/esm/paneview/paneviewComponent.js.map +1 -0
  391. package/dist/esm/paneview/paneviewPanel.d.ts +93 -92
  392. package/dist/esm/paneview/paneviewPanel.d.ts.map +1 -0
  393. package/dist/esm/paneview/paneviewPanel.js +193 -192
  394. package/dist/esm/paneview/paneviewPanel.js.map +1 -0
  395. package/dist/esm/resizable.d.ts +8 -0
  396. package/dist/esm/resizable.d.ts.map +1 -0
  397. package/dist/esm/resizable.js +31 -0
  398. package/dist/esm/resizable.js.map +1 -0
  399. package/dist/esm/splitview/options.d.ts +28 -26
  400. package/dist/esm/splitview/options.d.ts.map +1 -0
  401. package/dist/esm/splitview/options.js +2 -1
  402. package/dist/esm/splitview/options.js.map +1 -0
  403. package/dist/esm/splitview/splitview.d.ts +128 -127
  404. package/dist/esm/splitview/splitview.d.ts.map +1 -0
  405. package/dist/esm/splitview/splitview.js +690 -689
  406. package/dist/esm/splitview/splitview.js.map +1 -0
  407. package/dist/esm/splitview/splitviewComponent.d.ts +102 -101
  408. package/dist/esm/splitview/splitviewComponent.d.ts.map +1 -0
  409. package/dist/esm/splitview/splitviewComponent.js +250 -249
  410. package/dist/esm/splitview/splitviewComponent.js.map +1 -0
  411. package/dist/esm/splitview/splitviewPanel.d.ts +46 -45
  412. package/dist/esm/splitview/splitviewPanel.d.ts.map +1 -0
  413. package/dist/esm/splitview/splitviewPanel.js +109 -108
  414. package/dist/esm/splitview/splitviewPanel.js.map +1 -0
  415. package/dist/esm/splitview/viewItem.d.ts +26 -25
  416. package/dist/esm/splitview/viewItem.d.ts.map +1 -0
  417. package/dist/esm/splitview/viewItem.js +75 -74
  418. package/dist/esm/splitview/viewItem.js.map +1 -0
  419. package/dist/esm/svg.d.ts +4 -3
  420. package/dist/esm/svg.d.ts.map +1 -0
  421. package/dist/esm/svg.js +32 -31
  422. package/dist/esm/svg.js.map +1 -0
  423. package/dist/esm/types.d.ts +3 -2
  424. package/dist/esm/types.d.ts.map +1 -0
  425. package/dist/esm/types.js +2 -1
  426. package/dist/esm/types.js.map +1 -0
  427. package/dist/styles/dockview.css +54 -54
  428. package/package.json +6 -5
@@ -1,909 +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;
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
909
  //# sourceMappingURL=splitview.js.map