dockview-core 1.8.4 → 1.9.0

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