dockview-core 1.9.2 → 1.10.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 (536) hide show
  1. package/dist/cjs/api/component.api.d.ts +25 -6
  2. package/dist/cjs/api/component.api.js +27 -5
  3. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +7 -1
  4. package/dist/cjs/api/dockviewGroupPanelApi.js +22 -3
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +23 -7
  6. package/dist/cjs/api/dockviewPanelApi.js +49 -12
  7. package/dist/cjs/api/gridviewPanelApi.d.ts +0 -1
  8. package/dist/cjs/api/gridviewPanelApi.js +1 -4
  9. package/dist/cjs/api/panelApi.d.ts +20 -9
  10. package/dist/cjs/api/panelApi.js +30 -30
  11. package/dist/cjs/api/paneviewPanelApi.d.ts +0 -1
  12. package/dist/cjs/api/paneviewPanelApi.js +0 -1
  13. package/dist/cjs/api/splitviewPanelApi.d.ts +0 -1
  14. package/dist/cjs/api/splitviewPanelApi.js +0 -1
  15. package/dist/cjs/array.d.ts +0 -1
  16. package/dist/cjs/array.js +0 -1
  17. package/dist/cjs/constants.d.ts +0 -1
  18. package/dist/cjs/constants.js +0 -1
  19. package/dist/cjs/dnd/abstractDragHandler.d.ts +0 -1
  20. package/dist/cjs/dnd/abstractDragHandler.js +0 -1
  21. package/dist/cjs/dnd/dataTransfer.d.ts +0 -1
  22. package/dist/cjs/dnd/dataTransfer.js +0 -1
  23. package/dist/cjs/dnd/dnd.d.ts +0 -1
  24. package/dist/cjs/dnd/dnd.js +0 -1
  25. package/dist/cjs/dnd/droptarget.d.ts +20 -9
  26. package/dist/cjs/dnd/droptarget.js +71 -14
  27. package/dist/cjs/dnd/ghost.d.ts +0 -1
  28. package/dist/cjs/dnd/ghost.js +0 -1
  29. package/dist/cjs/dnd/groupDragHandler.d.ts +0 -1
  30. package/dist/cjs/dnd/groupDragHandler.js +1 -2
  31. package/dist/cjs/dnd/overlay.d.ts +0 -1
  32. package/dist/cjs/dnd/overlay.js +0 -1
  33. package/dist/cjs/dockview/components/panel/content.d.ts +0 -1
  34. package/dist/cjs/dockview/components/panel/content.js +6 -7
  35. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -1
  36. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -1
  37. package/dist/cjs/dockview/components/tab/tab.d.ts +5 -13
  38. package/dist/cjs/dockview/components/tab/tab.js +5 -6
  39. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +17 -14
  40. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +26 -22
  41. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +3 -3
  42. package/dist/cjs/dockview/components/titlebar/voidContainer.js +5 -6
  43. package/dist/cjs/dockview/components/watermark/watermark.d.ts +0 -1
  44. package/dist/cjs/dockview/components/watermark/watermark.js +0 -1
  45. package/dist/cjs/dockview/deserializer.d.ts +0 -1
  46. package/dist/cjs/dockview/deserializer.js +0 -1
  47. package/dist/cjs/dockview/dockviewComponent.d.ts +86 -25
  48. package/dist/cjs/dockview/dockviewComponent.js +577 -197
  49. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +0 -1
  50. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -1
  51. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +1 -1
  52. package/dist/cjs/dockview/dockviewGroupPanel.js +6 -1
  53. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +79 -34
  54. package/dist/cjs/dockview/dockviewGroupPanelModel.js +226 -57
  55. package/dist/cjs/dockview/dockviewPanel.d.ts +8 -3
  56. package/dist/cjs/dockview/dockviewPanel.js +39 -12
  57. package/dist/cjs/dockview/dockviewPanelModel.d.ts +1 -4
  58. package/dist/cjs/dockview/dockviewPanelModel.js +2 -22
  59. package/dist/cjs/dockview/options.d.ts +7 -3
  60. package/dist/cjs/dockview/options.js +0 -1
  61. package/dist/cjs/dockview/types.d.ts +1 -11
  62. package/dist/cjs/dockview/types.js +0 -9
  63. package/dist/cjs/dom.d.ts +0 -1
  64. package/dist/cjs/dom.js +0 -1
  65. package/dist/cjs/events.d.ts +10 -1
  66. package/dist/cjs/events.js +25 -2
  67. package/dist/cjs/gridview/baseComponentGridview.d.ts +15 -16
  68. package/dist/cjs/gridview/baseComponentGridview.js +37 -27
  69. package/dist/cjs/gridview/basePanelView.d.ts +0 -1
  70. package/dist/cjs/gridview/basePanelView.js +7 -2
  71. package/dist/cjs/gridview/branchNode.d.ts +3 -2
  72. package/dist/cjs/gridview/branchNode.js +12 -2
  73. package/dist/cjs/gridview/gridview.d.ts +5 -3
  74. package/dist/cjs/gridview/gridview.js +54 -21
  75. package/dist/cjs/gridview/gridviewComponent.d.ts +10 -2
  76. package/dist/cjs/gridview/gridviewComponent.js +14 -1
  77. package/dist/cjs/gridview/gridviewPanel.d.ts +3 -3
  78. package/dist/cjs/gridview/gridviewPanel.js +4 -5
  79. package/dist/cjs/gridview/leafNode.d.ts +0 -1
  80. package/dist/cjs/gridview/leafNode.js +0 -1
  81. package/dist/cjs/gridview/options.d.ts +1 -2
  82. package/dist/cjs/gridview/options.js +0 -1
  83. package/dist/cjs/gridview/types.d.ts +0 -1
  84. package/dist/cjs/gridview/types.js +0 -1
  85. package/dist/cjs/index.d.ts +2 -2
  86. package/dist/cjs/index.js +0 -2
  87. package/dist/cjs/lifecycle.d.ts +2 -3
  88. package/dist/cjs/lifecycle.js +5 -2
  89. package/dist/cjs/math.d.ts +0 -1
  90. package/dist/cjs/math.js +0 -1
  91. package/dist/cjs/overlayRenderContainer.d.ts +1 -1
  92. package/dist/cjs/overlayRenderContainer.js +8 -4
  93. package/dist/cjs/panel/componentFactory.d.ts +0 -1
  94. package/dist/cjs/panel/componentFactory.js +0 -1
  95. package/dist/cjs/panel/types.d.ts +1 -2
  96. package/dist/cjs/panel/types.js +0 -1
  97. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +0 -1
  98. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -1
  99. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +0 -1
  100. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -1
  101. package/dist/cjs/paneview/options.d.ts +1 -2
  102. package/dist/cjs/paneview/options.js +0 -1
  103. package/dist/cjs/paneview/paneview.d.ts +0 -1
  104. package/dist/cjs/paneview/paneview.js +0 -1
  105. package/dist/cjs/paneview/paneviewComponent.d.ts +0 -1
  106. package/dist/cjs/paneview/paneviewComponent.js +0 -1
  107. package/dist/cjs/paneview/paneviewPanel.d.ts +0 -1
  108. package/dist/cjs/paneview/paneviewPanel.js +0 -1
  109. package/dist/cjs/popoutWindow.d.ts +15 -4
  110. package/dist/cjs/popoutWindow.js +140 -56
  111. package/dist/cjs/resizable.d.ts +1 -2
  112. package/dist/cjs/resizable.js +1 -10
  113. package/dist/cjs/splitview/options.d.ts +3 -7
  114. package/dist/cjs/splitview/options.js +0 -1
  115. package/dist/cjs/splitview/splitview.d.ts +3 -1
  116. package/dist/cjs/splitview/splitview.js +12 -1
  117. package/dist/cjs/splitview/splitviewComponent.d.ts +0 -1
  118. package/dist/cjs/splitview/splitviewComponent.js +0 -1
  119. package/dist/cjs/splitview/splitviewPanel.d.ts +2 -3
  120. package/dist/cjs/splitview/splitviewPanel.js +3 -4
  121. package/dist/cjs/splitview/viewItem.d.ts +0 -1
  122. package/dist/cjs/splitview/viewItem.js +0 -1
  123. package/dist/cjs/svg.d.ts +0 -1
  124. package/dist/cjs/svg.js +0 -1
  125. package/dist/cjs/types.d.ts +0 -1
  126. package/dist/cjs/types.js +0 -1
  127. package/dist/dockview-core.amd.js +1261 -526
  128. package/dist/dockview-core.amd.js.map +1 -1
  129. package/dist/dockview-core.amd.min.js +2 -2
  130. package/dist/dockview-core.amd.min.js.map +1 -1
  131. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  132. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  133. package/dist/dockview-core.amd.noStyle.js +1260 -525
  134. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  135. package/dist/dockview-core.cjs.js +1261 -526
  136. package/dist/dockview-core.cjs.js.map +1 -1
  137. package/dist/dockview-core.esm.js +1259 -527
  138. package/dist/dockview-core.esm.js.map +1 -1
  139. package/dist/dockview-core.esm.min.js +2 -2
  140. package/dist/dockview-core.esm.min.js.map +1 -1
  141. package/dist/dockview-core.js +1261 -526
  142. package/dist/dockview-core.js.map +1 -1
  143. package/dist/dockview-core.min.js +2 -2
  144. package/dist/dockview-core.min.js.map +1 -1
  145. package/dist/dockview-core.min.noStyle.js +2 -2
  146. package/dist/dockview-core.min.noStyle.js.map +1 -1
  147. package/dist/dockview-core.noStyle.js +1260 -525
  148. package/dist/dockview-core.noStyle.js.map +1 -1
  149. package/dist/esm/api/component.api.d.ts +25 -6
  150. package/dist/esm/api/component.api.js +19 -5
  151. package/dist/esm/api/dockviewGroupPanelApi.d.ts +7 -1
  152. package/dist/esm/api/dockviewGroupPanelApi.js +22 -3
  153. package/dist/esm/api/dockviewPanelApi.d.ts +23 -7
  154. package/dist/esm/api/dockviewPanelApi.js +46 -13
  155. package/dist/esm/api/gridviewPanelApi.d.ts +0 -1
  156. package/dist/esm/api/gridviewPanelApi.js +1 -4
  157. package/dist/esm/api/panelApi.d.ts +20 -9
  158. package/dist/esm/api/panelApi.js +23 -30
  159. package/dist/esm/api/paneviewPanelApi.d.ts +0 -1
  160. package/dist/esm/api/paneviewPanelApi.js +0 -1
  161. package/dist/esm/api/splitviewPanelApi.d.ts +0 -1
  162. package/dist/esm/api/splitviewPanelApi.js +0 -1
  163. package/dist/esm/array.d.ts +0 -1
  164. package/dist/esm/array.js +0 -1
  165. package/dist/esm/constants.d.ts +0 -1
  166. package/dist/esm/constants.js +0 -1
  167. package/dist/esm/dnd/abstractDragHandler.d.ts +0 -1
  168. package/dist/esm/dnd/abstractDragHandler.js +0 -1
  169. package/dist/esm/dnd/dataTransfer.d.ts +0 -1
  170. package/dist/esm/dnd/dataTransfer.js +0 -1
  171. package/dist/esm/dnd/dnd.d.ts +0 -1
  172. package/dist/esm/dnd/dnd.js +0 -1
  173. package/dist/esm/dnd/droptarget.d.ts +20 -9
  174. package/dist/esm/dnd/droptarget.js +59 -14
  175. package/dist/esm/dnd/ghost.d.ts +0 -1
  176. package/dist/esm/dnd/ghost.js +0 -1
  177. package/dist/esm/dnd/groupDragHandler.d.ts +0 -1
  178. package/dist/esm/dnd/groupDragHandler.js +1 -2
  179. package/dist/esm/dnd/overlay.d.ts +0 -1
  180. package/dist/esm/dnd/overlay.js +0 -1
  181. package/dist/esm/dockview/components/panel/content.d.ts +0 -1
  182. package/dist/esm/dockview/components/panel/content.js +6 -7
  183. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -1
  184. package/dist/esm/dockview/components/tab/defaultTab.js +0 -1
  185. package/dist/esm/dockview/components/tab/tab.d.ts +5 -13
  186. package/dist/esm/dockview/components/tab/tab.js +6 -7
  187. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +17 -14
  188. package/dist/esm/dockview/components/titlebar/tabsContainer.js +24 -20
  189. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +3 -3
  190. package/dist/esm/dockview/components/titlebar/voidContainer.js +6 -7
  191. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -1
  192. package/dist/esm/dockview/components/watermark/watermark.js +0 -1
  193. package/dist/esm/dockview/deserializer.d.ts +0 -1
  194. package/dist/esm/dockview/deserializer.js +0 -1
  195. package/dist/esm/dockview/dockviewComponent.d.ts +86 -25
  196. package/dist/esm/dockview/dockviewComponent.js +520 -162
  197. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -1
  198. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -1
  199. package/dist/esm/dockview/dockviewGroupPanel.d.ts +1 -1
  200. package/dist/esm/dockview/dockviewGroupPanel.js +6 -1
  201. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +79 -34
  202. package/dist/esm/dockview/dockviewGroupPanelModel.js +169 -53
  203. package/dist/esm/dockview/dockviewPanel.d.ts +8 -3
  204. package/dist/esm/dockview/dockviewPanel.js +39 -12
  205. package/dist/esm/dockview/dockviewPanelModel.d.ts +1 -4
  206. package/dist/esm/dockview/dockviewPanelModel.js +2 -22
  207. package/dist/esm/dockview/options.d.ts +7 -3
  208. package/dist/esm/dockview/options.js +0 -1
  209. package/dist/esm/dockview/types.d.ts +1 -11
  210. package/dist/esm/dockview/types.js +1 -8
  211. package/dist/esm/dom.d.ts +0 -1
  212. package/dist/esm/dom.js +0 -1
  213. package/dist/esm/events.d.ts +10 -1
  214. package/dist/esm/events.js +14 -1
  215. package/dist/esm/gridview/baseComponentGridview.d.ts +15 -16
  216. package/dist/esm/gridview/baseComponentGridview.js +33 -27
  217. package/dist/esm/gridview/basePanelView.d.ts +0 -1
  218. package/dist/esm/gridview/basePanelView.js +7 -2
  219. package/dist/esm/gridview/branchNode.d.ts +3 -2
  220. package/dist/esm/gridview/branchNode.js +8 -2
  221. package/dist/esm/gridview/gridview.d.ts +5 -3
  222. package/dist/esm/gridview/gridview.js +49 -20
  223. package/dist/esm/gridview/gridviewComponent.d.ts +10 -2
  224. package/dist/esm/gridview/gridviewComponent.js +14 -1
  225. package/dist/esm/gridview/gridviewPanel.d.ts +3 -3
  226. package/dist/esm/gridview/gridviewPanel.js +4 -5
  227. package/dist/esm/gridview/leafNode.d.ts +0 -1
  228. package/dist/esm/gridview/leafNode.js +0 -1
  229. package/dist/esm/gridview/options.d.ts +1 -2
  230. package/dist/esm/gridview/options.js +0 -1
  231. package/dist/esm/gridview/types.d.ts +0 -1
  232. package/dist/esm/gridview/types.js +0 -1
  233. package/dist/esm/index.d.ts +2 -2
  234. package/dist/esm/index.js +0 -2
  235. package/dist/esm/lifecycle.d.ts +2 -3
  236. package/dist/esm/lifecycle.js +5 -2
  237. package/dist/esm/math.d.ts +0 -1
  238. package/dist/esm/math.js +0 -1
  239. package/dist/esm/overlayRenderContainer.d.ts +1 -1
  240. package/dist/esm/overlayRenderContainer.js +8 -4
  241. package/dist/esm/panel/componentFactory.d.ts +0 -1
  242. package/dist/esm/panel/componentFactory.js +0 -1
  243. package/dist/esm/panel/types.d.ts +1 -2
  244. package/dist/esm/panel/types.js +0 -1
  245. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -1
  246. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -1
  247. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -1
  248. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -1
  249. package/dist/esm/paneview/options.d.ts +1 -2
  250. package/dist/esm/paneview/options.js +0 -1
  251. package/dist/esm/paneview/paneview.d.ts +0 -1
  252. package/dist/esm/paneview/paneview.js +0 -1
  253. package/dist/esm/paneview/paneviewComponent.d.ts +0 -1
  254. package/dist/esm/paneview/paneviewComponent.js +0 -1
  255. package/dist/esm/paneview/paneviewPanel.d.ts +0 -1
  256. package/dist/esm/paneview/paneviewPanel.js +0 -1
  257. package/dist/esm/popoutWindow.d.ts +15 -4
  258. package/dist/esm/popoutWindow.js +105 -52
  259. package/dist/esm/resizable.d.ts +1 -2
  260. package/dist/esm/resizable.js +1 -10
  261. package/dist/esm/splitview/options.d.ts +3 -7
  262. package/dist/esm/splitview/options.js +0 -1
  263. package/dist/esm/splitview/splitview.d.ts +3 -1
  264. package/dist/esm/splitview/splitview.js +8 -1
  265. package/dist/esm/splitview/splitviewComponent.d.ts +0 -1
  266. package/dist/esm/splitview/splitviewComponent.js +0 -1
  267. package/dist/esm/splitview/splitviewPanel.d.ts +2 -3
  268. package/dist/esm/splitview/splitviewPanel.js +3 -4
  269. package/dist/esm/splitview/viewItem.d.ts +0 -1
  270. package/dist/esm/splitview/viewItem.js +0 -1
  271. package/dist/esm/svg.d.ts +0 -1
  272. package/dist/esm/svg.js +0 -1
  273. package/dist/esm/types.d.ts +0 -1
  274. package/dist/esm/types.js +0 -1
  275. package/dist/styles/dockview.css +20 -6
  276. package/package.json +3 -3
  277. package/dist/cjs/api/component.api.d.ts.map +0 -1
  278. package/dist/cjs/api/component.api.js.map +0 -1
  279. package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +0 -1
  280. package/dist/cjs/api/dockviewGroupPanelApi.js.map +0 -1
  281. package/dist/cjs/api/dockviewPanelApi.d.ts.map +0 -1
  282. package/dist/cjs/api/dockviewPanelApi.js.map +0 -1
  283. package/dist/cjs/api/gridviewPanelApi.d.ts.map +0 -1
  284. package/dist/cjs/api/gridviewPanelApi.js.map +0 -1
  285. package/dist/cjs/api/panelApi.d.ts.map +0 -1
  286. package/dist/cjs/api/panelApi.js.map +0 -1
  287. package/dist/cjs/api/paneviewPanelApi.d.ts.map +0 -1
  288. package/dist/cjs/api/paneviewPanelApi.js.map +0 -1
  289. package/dist/cjs/api/splitviewPanelApi.d.ts.map +0 -1
  290. package/dist/cjs/api/splitviewPanelApi.js.map +0 -1
  291. package/dist/cjs/array.d.ts.map +0 -1
  292. package/dist/cjs/array.js.map +0 -1
  293. package/dist/cjs/constants.d.ts.map +0 -1
  294. package/dist/cjs/constants.js.map +0 -1
  295. package/dist/cjs/dnd/abstractDragHandler.d.ts.map +0 -1
  296. package/dist/cjs/dnd/abstractDragHandler.js.map +0 -1
  297. package/dist/cjs/dnd/dataTransfer.d.ts.map +0 -1
  298. package/dist/cjs/dnd/dataTransfer.js.map +0 -1
  299. package/dist/cjs/dnd/dnd.d.ts.map +0 -1
  300. package/dist/cjs/dnd/dnd.js.map +0 -1
  301. package/dist/cjs/dnd/droptarget.d.ts.map +0 -1
  302. package/dist/cjs/dnd/droptarget.js.map +0 -1
  303. package/dist/cjs/dnd/ghost.d.ts.map +0 -1
  304. package/dist/cjs/dnd/ghost.js.map +0 -1
  305. package/dist/cjs/dnd/groupDragHandler.d.ts.map +0 -1
  306. package/dist/cjs/dnd/groupDragHandler.js.map +0 -1
  307. package/dist/cjs/dnd/overlay.d.ts.map +0 -1
  308. package/dist/cjs/dnd/overlay.js.map +0 -1
  309. package/dist/cjs/dockview/components/panel/content.d.ts.map +0 -1
  310. package/dist/cjs/dockview/components/panel/content.js.map +0 -1
  311. package/dist/cjs/dockview/components/tab/defaultTab.d.ts.map +0 -1
  312. package/dist/cjs/dockview/components/tab/defaultTab.js.map +0 -1
  313. package/dist/cjs/dockview/components/tab/tab.d.ts.map +0 -1
  314. package/dist/cjs/dockview/components/tab/tab.js.map +0 -1
  315. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +0 -1
  316. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +0 -1
  317. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts.map +0 -1
  318. package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +0 -1
  319. package/dist/cjs/dockview/components/watermark/watermark.d.ts.map +0 -1
  320. package/dist/cjs/dockview/components/watermark/watermark.js.map +0 -1
  321. package/dist/cjs/dockview/deserializer.d.ts.map +0 -1
  322. package/dist/cjs/dockview/deserializer.js.map +0 -1
  323. package/dist/cjs/dockview/dockviewComponent.d.ts.map +0 -1
  324. package/dist/cjs/dockview/dockviewComponent.js.map +0 -1
  325. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts.map +0 -1
  326. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +0 -1
  327. package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +0 -1
  328. package/dist/cjs/dockview/dockviewGroupPanel.js.map +0 -1
  329. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +0 -1
  330. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +0 -1
  331. package/dist/cjs/dockview/dockviewPanel.d.ts.map +0 -1
  332. package/dist/cjs/dockview/dockviewPanel.js.map +0 -1
  333. package/dist/cjs/dockview/dockviewPanelModel.d.ts.map +0 -1
  334. package/dist/cjs/dockview/dockviewPanelModel.js.map +0 -1
  335. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts +0 -16
  336. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts.map +0 -1
  337. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js +0 -50
  338. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js.map +0 -1
  339. package/dist/cjs/dockview/options.d.ts.map +0 -1
  340. package/dist/cjs/dockview/options.js.map +0 -1
  341. package/dist/cjs/dockview/types.d.ts.map +0 -1
  342. package/dist/cjs/dockview/types.js.map +0 -1
  343. package/dist/cjs/dom.d.ts.map +0 -1
  344. package/dist/cjs/dom.js.map +0 -1
  345. package/dist/cjs/events.d.ts.map +0 -1
  346. package/dist/cjs/events.js.map +0 -1
  347. package/dist/cjs/gridview/baseComponentGridview.d.ts.map +0 -1
  348. package/dist/cjs/gridview/baseComponentGridview.js.map +0 -1
  349. package/dist/cjs/gridview/basePanelView.d.ts.map +0 -1
  350. package/dist/cjs/gridview/basePanelView.js.map +0 -1
  351. package/dist/cjs/gridview/branchNode.d.ts.map +0 -1
  352. package/dist/cjs/gridview/branchNode.js.map +0 -1
  353. package/dist/cjs/gridview/gridview.d.ts.map +0 -1
  354. package/dist/cjs/gridview/gridview.js.map +0 -1
  355. package/dist/cjs/gridview/gridviewComponent.d.ts.map +0 -1
  356. package/dist/cjs/gridview/gridviewComponent.js.map +0 -1
  357. package/dist/cjs/gridview/gridviewPanel.d.ts.map +0 -1
  358. package/dist/cjs/gridview/gridviewPanel.js.map +0 -1
  359. package/dist/cjs/gridview/leafNode.d.ts.map +0 -1
  360. package/dist/cjs/gridview/leafNode.js.map +0 -1
  361. package/dist/cjs/gridview/options.d.ts.map +0 -1
  362. package/dist/cjs/gridview/options.js.map +0 -1
  363. package/dist/cjs/gridview/types.d.ts.map +0 -1
  364. package/dist/cjs/gridview/types.js.map +0 -1
  365. package/dist/cjs/index.d.ts.map +0 -1
  366. package/dist/cjs/index.js.map +0 -1
  367. package/dist/cjs/lifecycle.d.ts.map +0 -1
  368. package/dist/cjs/lifecycle.js.map +0 -1
  369. package/dist/cjs/math.d.ts.map +0 -1
  370. package/dist/cjs/math.js.map +0 -1
  371. package/dist/cjs/overlayRenderContainer.d.ts.map +0 -1
  372. package/dist/cjs/overlayRenderContainer.js.map +0 -1
  373. package/dist/cjs/panel/componentFactory.d.ts.map +0 -1
  374. package/dist/cjs/panel/componentFactory.js.map +0 -1
  375. package/dist/cjs/panel/types.d.ts.map +0 -1
  376. package/dist/cjs/panel/types.js.map +0 -1
  377. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts.map +0 -1
  378. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +0 -1
  379. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts.map +0 -1
  380. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +0 -1
  381. package/dist/cjs/paneview/options.d.ts.map +0 -1
  382. package/dist/cjs/paneview/options.js.map +0 -1
  383. package/dist/cjs/paneview/paneview.d.ts.map +0 -1
  384. package/dist/cjs/paneview/paneview.js.map +0 -1
  385. package/dist/cjs/paneview/paneviewComponent.d.ts.map +0 -1
  386. package/dist/cjs/paneview/paneviewComponent.js.map +0 -1
  387. package/dist/cjs/paneview/paneviewPanel.d.ts.map +0 -1
  388. package/dist/cjs/paneview/paneviewPanel.js.map +0 -1
  389. package/dist/cjs/popoutWindow.d.ts.map +0 -1
  390. package/dist/cjs/popoutWindow.js.map +0 -1
  391. package/dist/cjs/resizable.d.ts.map +0 -1
  392. package/dist/cjs/resizable.js.map +0 -1
  393. package/dist/cjs/splitview/options.d.ts.map +0 -1
  394. package/dist/cjs/splitview/options.js.map +0 -1
  395. package/dist/cjs/splitview/splitview.d.ts.map +0 -1
  396. package/dist/cjs/splitview/splitview.js.map +0 -1
  397. package/dist/cjs/splitview/splitviewComponent.d.ts.map +0 -1
  398. package/dist/cjs/splitview/splitviewComponent.js.map +0 -1
  399. package/dist/cjs/splitview/splitviewPanel.d.ts.map +0 -1
  400. package/dist/cjs/splitview/splitviewPanel.js.map +0 -1
  401. package/dist/cjs/splitview/viewItem.d.ts.map +0 -1
  402. package/dist/cjs/splitview/viewItem.js.map +0 -1
  403. package/dist/cjs/svg.d.ts.map +0 -1
  404. package/dist/cjs/svg.js.map +0 -1
  405. package/dist/cjs/types.d.ts.map +0 -1
  406. package/dist/cjs/types.js.map +0 -1
  407. package/dist/esm/api/component.api.d.ts.map +0 -1
  408. package/dist/esm/api/component.api.js.map +0 -1
  409. package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +0 -1
  410. package/dist/esm/api/dockviewGroupPanelApi.js.map +0 -1
  411. package/dist/esm/api/dockviewPanelApi.d.ts.map +0 -1
  412. package/dist/esm/api/dockviewPanelApi.js.map +0 -1
  413. package/dist/esm/api/gridviewPanelApi.d.ts.map +0 -1
  414. package/dist/esm/api/gridviewPanelApi.js.map +0 -1
  415. package/dist/esm/api/panelApi.d.ts.map +0 -1
  416. package/dist/esm/api/panelApi.js.map +0 -1
  417. package/dist/esm/api/paneviewPanelApi.d.ts.map +0 -1
  418. package/dist/esm/api/paneviewPanelApi.js.map +0 -1
  419. package/dist/esm/api/splitviewPanelApi.d.ts.map +0 -1
  420. package/dist/esm/api/splitviewPanelApi.js.map +0 -1
  421. package/dist/esm/array.d.ts.map +0 -1
  422. package/dist/esm/array.js.map +0 -1
  423. package/dist/esm/constants.d.ts.map +0 -1
  424. package/dist/esm/constants.js.map +0 -1
  425. package/dist/esm/dnd/abstractDragHandler.d.ts.map +0 -1
  426. package/dist/esm/dnd/abstractDragHandler.js.map +0 -1
  427. package/dist/esm/dnd/dataTransfer.d.ts.map +0 -1
  428. package/dist/esm/dnd/dataTransfer.js.map +0 -1
  429. package/dist/esm/dnd/dnd.d.ts.map +0 -1
  430. package/dist/esm/dnd/dnd.js.map +0 -1
  431. package/dist/esm/dnd/droptarget.d.ts.map +0 -1
  432. package/dist/esm/dnd/droptarget.js.map +0 -1
  433. package/dist/esm/dnd/ghost.d.ts.map +0 -1
  434. package/dist/esm/dnd/ghost.js.map +0 -1
  435. package/dist/esm/dnd/groupDragHandler.d.ts.map +0 -1
  436. package/dist/esm/dnd/groupDragHandler.js.map +0 -1
  437. package/dist/esm/dnd/overlay.d.ts.map +0 -1
  438. package/dist/esm/dnd/overlay.js.map +0 -1
  439. package/dist/esm/dockview/components/panel/content.d.ts.map +0 -1
  440. package/dist/esm/dockview/components/panel/content.js.map +0 -1
  441. package/dist/esm/dockview/components/tab/defaultTab.d.ts.map +0 -1
  442. package/dist/esm/dockview/components/tab/defaultTab.js.map +0 -1
  443. package/dist/esm/dockview/components/tab/tab.d.ts.map +0 -1
  444. package/dist/esm/dockview/components/tab/tab.js.map +0 -1
  445. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +0 -1
  446. package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +0 -1
  447. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts.map +0 -1
  448. package/dist/esm/dockview/components/titlebar/voidContainer.js.map +0 -1
  449. package/dist/esm/dockview/components/watermark/watermark.d.ts.map +0 -1
  450. package/dist/esm/dockview/components/watermark/watermark.js.map +0 -1
  451. package/dist/esm/dockview/deserializer.d.ts.map +0 -1
  452. package/dist/esm/dockview/deserializer.js.map +0 -1
  453. package/dist/esm/dockview/dockviewComponent.d.ts.map +0 -1
  454. package/dist/esm/dockview/dockviewComponent.js.map +0 -1
  455. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts.map +0 -1
  456. package/dist/esm/dockview/dockviewFloatingGroupPanel.js.map +0 -1
  457. package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +0 -1
  458. package/dist/esm/dockview/dockviewGroupPanel.js.map +0 -1
  459. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +0 -1
  460. package/dist/esm/dockview/dockviewGroupPanelModel.js.map +0 -1
  461. package/dist/esm/dockview/dockviewPanel.d.ts.map +0 -1
  462. package/dist/esm/dockview/dockviewPanel.js.map +0 -1
  463. package/dist/esm/dockview/dockviewPanelModel.d.ts.map +0 -1
  464. package/dist/esm/dockview/dockviewPanelModel.js.map +0 -1
  465. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts +0 -16
  466. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts.map +0 -1
  467. package/dist/esm/dockview/dockviewPopoutGroupPanel.js +0 -28
  468. package/dist/esm/dockview/dockviewPopoutGroupPanel.js.map +0 -1
  469. package/dist/esm/dockview/options.d.ts.map +0 -1
  470. package/dist/esm/dockview/options.js.map +0 -1
  471. package/dist/esm/dockview/types.d.ts.map +0 -1
  472. package/dist/esm/dockview/types.js.map +0 -1
  473. package/dist/esm/dom.d.ts.map +0 -1
  474. package/dist/esm/dom.js.map +0 -1
  475. package/dist/esm/events.d.ts.map +0 -1
  476. package/dist/esm/events.js.map +0 -1
  477. package/dist/esm/gridview/baseComponentGridview.d.ts.map +0 -1
  478. package/dist/esm/gridview/baseComponentGridview.js.map +0 -1
  479. package/dist/esm/gridview/basePanelView.d.ts.map +0 -1
  480. package/dist/esm/gridview/basePanelView.js.map +0 -1
  481. package/dist/esm/gridview/branchNode.d.ts.map +0 -1
  482. package/dist/esm/gridview/branchNode.js.map +0 -1
  483. package/dist/esm/gridview/gridview.d.ts.map +0 -1
  484. package/dist/esm/gridview/gridview.js.map +0 -1
  485. package/dist/esm/gridview/gridviewComponent.d.ts.map +0 -1
  486. package/dist/esm/gridview/gridviewComponent.js.map +0 -1
  487. package/dist/esm/gridview/gridviewPanel.d.ts.map +0 -1
  488. package/dist/esm/gridview/gridviewPanel.js.map +0 -1
  489. package/dist/esm/gridview/leafNode.d.ts.map +0 -1
  490. package/dist/esm/gridview/leafNode.js.map +0 -1
  491. package/dist/esm/gridview/options.d.ts.map +0 -1
  492. package/dist/esm/gridview/options.js.map +0 -1
  493. package/dist/esm/gridview/types.d.ts.map +0 -1
  494. package/dist/esm/gridview/types.js.map +0 -1
  495. package/dist/esm/index.d.ts.map +0 -1
  496. package/dist/esm/index.js.map +0 -1
  497. package/dist/esm/lifecycle.d.ts.map +0 -1
  498. package/dist/esm/lifecycle.js.map +0 -1
  499. package/dist/esm/math.d.ts.map +0 -1
  500. package/dist/esm/math.js.map +0 -1
  501. package/dist/esm/overlayRenderContainer.d.ts.map +0 -1
  502. package/dist/esm/overlayRenderContainer.js.map +0 -1
  503. package/dist/esm/panel/componentFactory.d.ts.map +0 -1
  504. package/dist/esm/panel/componentFactory.js.map +0 -1
  505. package/dist/esm/panel/types.d.ts.map +0 -1
  506. package/dist/esm/panel/types.js.map +0 -1
  507. package/dist/esm/paneview/defaultPaneviewHeader.d.ts.map +0 -1
  508. package/dist/esm/paneview/defaultPaneviewHeader.js.map +0 -1
  509. package/dist/esm/paneview/draggablePaneviewPanel.d.ts.map +0 -1
  510. package/dist/esm/paneview/draggablePaneviewPanel.js.map +0 -1
  511. package/dist/esm/paneview/options.d.ts.map +0 -1
  512. package/dist/esm/paneview/options.js.map +0 -1
  513. package/dist/esm/paneview/paneview.d.ts.map +0 -1
  514. package/dist/esm/paneview/paneview.js.map +0 -1
  515. package/dist/esm/paneview/paneviewComponent.d.ts.map +0 -1
  516. package/dist/esm/paneview/paneviewComponent.js.map +0 -1
  517. package/dist/esm/paneview/paneviewPanel.d.ts.map +0 -1
  518. package/dist/esm/paneview/paneviewPanel.js.map +0 -1
  519. package/dist/esm/popoutWindow.d.ts.map +0 -1
  520. package/dist/esm/popoutWindow.js.map +0 -1
  521. package/dist/esm/resizable.d.ts.map +0 -1
  522. package/dist/esm/resizable.js.map +0 -1
  523. package/dist/esm/splitview/options.d.ts.map +0 -1
  524. package/dist/esm/splitview/options.js.map +0 -1
  525. package/dist/esm/splitview/splitview.d.ts.map +0 -1
  526. package/dist/esm/splitview/splitview.js.map +0 -1
  527. package/dist/esm/splitview/splitviewComponent.d.ts.map +0 -1
  528. package/dist/esm/splitview/splitviewComponent.js.map +0 -1
  529. package/dist/esm/splitview/splitviewPanel.d.ts.map +0 -1
  530. package/dist/esm/splitview/splitviewPanel.js.map +0 -1
  531. package/dist/esm/splitview/viewItem.d.ts.map +0 -1
  532. package/dist/esm/splitview/viewItem.js.map +0 -1
  533. package/dist/esm/svg.d.ts.map +0 -1
  534. package/dist/esm/svg.js.map +0 -1
  535. package/dist/esm/types.d.ts.map +0 -1
  536. package/dist/esm/types.js.map +0 -1
@@ -3,9 +3,8 @@ import { directionToPosition, Droptarget, } from '../dnd/droptarget';
3
3
  import { tail, sequenceEquals, remove } from '../array';
4
4
  import { DockviewPanel } from './dockviewPanel';
5
5
  import { CompositeDisposable, Disposable } from '../lifecycle';
6
- import { Event, Emitter } from '../events';
6
+ import { Event, Emitter, addDisposableWindowListener } from '../events';
7
7
  import { Watermark } from './components/watermark/watermark';
8
- import { DockviewDropTargets, } from './types';
9
8
  import { sequentialNumberGenerator } from '../math';
10
9
  import { DefaultDockviewDeserialzier } from './deserializer';
11
10
  import { createComponent } from '../panel/componentFactory';
@@ -13,20 +12,35 @@ import { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGro
13
12
  import { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';
14
13
  import { DockviewApi } from '../api/component.api';
15
14
  import { Orientation, Sizing } from '../splitview/splitview';
15
+ import { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';
16
16
  import { DockviewGroupPanel } from './dockviewGroupPanel';
17
17
  import { DockviewPanelModel } from './dockviewPanelModel';
18
18
  import { getPanelData } from '../dnd/dataTransfer';
19
19
  import { Overlay } from '../dnd/overlay';
20
20
  import { toggleClass, watchElementResize } from '../dom';
21
21
  import { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';
22
- import { DockviewPopoutGroupPanel } from './dockviewPopoutGroupPanel';
23
22
  import { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, } from '../constants';
24
23
  import { OverlayRenderContainer, } from '../overlayRenderContainer';
24
+ import { PopoutWindow } from '../popoutWindow';
25
25
  const DEFAULT_ROOT_OVERLAY_MODEL = {
26
26
  activationSize: { type: 'pixels', value: 10 },
27
27
  size: { type: 'pixels', value: 20 },
28
28
  };
29
- function getTheme(element) {
29
+ function moveGroupWithoutDestroying(options) {
30
+ const activePanel = options.from.activePanel;
31
+ const panels = [...options.from.panels].map((panel) => {
32
+ const removedPanel = options.from.model.removePanel(panel);
33
+ options.from.model.renderContainer.detatch(panel);
34
+ return removedPanel;
35
+ });
36
+ panels.forEach((panel) => {
37
+ options.to.model.openPanel(panel, {
38
+ skipSetActive: activePanel !== panel,
39
+ skipSetGroupActive: true,
40
+ });
41
+ });
42
+ }
43
+ function getDockviewTheme(element) {
30
44
  function toClassList(element) {
31
45
  const list = [];
32
46
  for (let i = 0; i < element.classList.length; i++) {
@@ -137,6 +151,7 @@ export class DockviewComponent extends BaseGrid {
137
151
  styles: options.styles,
138
152
  parentElement: options.parentElement,
139
153
  disableAutoResizing: options.disableAutoResizing,
154
+ locked: options.locked,
140
155
  });
141
156
  this.nextGroupId = sequentialNumberGenerator();
142
157
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -147,6 +162,10 @@ export class DockviewComponent extends BaseGrid {
147
162
  this.onWillDragGroup = this._onWillDragGroup.event;
148
163
  this._onDidDrop = new Emitter();
149
164
  this.onDidDrop = this._onDidDrop.event;
165
+ this._onWillDrop = new Emitter();
166
+ this.onWillDrop = this._onWillDrop.event;
167
+ this._onWillShowOverlay = new Emitter();
168
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
150
169
  this._onDidRemovePanel = new Emitter();
151
170
  this.onDidRemovePanel = this._onDidRemovePanel.event;
152
171
  this._onDidAddPanel = new Emitter();
@@ -155,15 +174,36 @@ export class DockviewComponent extends BaseGrid {
155
174
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
156
175
  this._onDidActivePanelChange = new Emitter();
157
176
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
177
+ this._onDidMovePanel = new Emitter();
158
178
  this._floatingGroups = [];
159
179
  this._popoutGroups = [];
180
+ this._ignoreEvents = 0;
181
+ this._onDidRemoveGroup = new Emitter();
182
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
183
+ this._onDidAddGroup = new Emitter();
184
+ this.onDidAddGroup = this._onDidAddGroup.event;
185
+ this._onDidActiveGroupChange = new Emitter();
186
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
187
+ this._moving = false;
160
188
  const gready = document.createElement('div');
161
189
  gready.className = 'dv-overlay-render-container';
162
190
  this.gridview.element.appendChild(gready);
163
191
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
164
192
  toggleClass(this.gridview.element, 'dv-dockview', true);
165
193
  toggleClass(this.element, 'dv-debug', !!options.debug);
166
- this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
194
+ this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {
195
+ if (!this._moving) {
196
+ this._onDidAddGroup.fire(event);
197
+ }
198
+ }), this.onDidRemove((event) => {
199
+ if (!this._moving) {
200
+ this._onDidRemoveGroup.fire(event);
201
+ }
202
+ }), this.onDidActiveChange((event) => {
203
+ if (!this._moving) {
204
+ this._onDidActiveGroupChange.fire(event);
205
+ }
206
+ }), Event.any(this.onDidAdd, this.onDidRemove)(() => {
167
207
  this.updateWatermark();
168
208
  }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
169
209
  this._bufferOnDidLayoutChange.fire();
@@ -174,7 +214,7 @@ export class DockviewComponent extends BaseGrid {
174
214
  }
175
215
  // iterate over a copy of the array since .dispose() mutates the original array
176
216
  for (const group of [...this._popoutGroups]) {
177
- group.dispose();
217
+ group.disposable.dispose();
178
218
  }
179
219
  }));
180
220
  this._options = options;
@@ -220,7 +260,7 @@ export class DockviewComponent extends BaseGrid {
220
260
  return this.options.showDndOverlay({
221
261
  nativeEvent: event,
222
262
  position: position,
223
- target: DockviewDropTargets.Edge,
263
+ target: 'edge',
224
264
  getData: getPanelData,
225
265
  });
226
266
  }
@@ -231,86 +271,249 @@ export class DockviewComponent extends BaseGrid {
231
271
  });
232
272
  this.addDisposables(this._rootDropTarget.onDrop((event) => {
233
273
  var _a;
274
+ const willDropEvent = new DockviewWillDropEvent({
275
+ nativeEvent: event.nativeEvent,
276
+ position: event.position,
277
+ panel: undefined,
278
+ api: this._api,
279
+ group: undefined,
280
+ getData: getPanelData,
281
+ kind: 'content',
282
+ });
283
+ this._onWillDrop.fire(willDropEvent);
284
+ if (willDropEvent.defaultPrevented) {
285
+ return;
286
+ }
234
287
  const data = getPanelData();
235
288
  if (data) {
236
- this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined, 'center');
289
+ this.moveGroupOrPanel({
290
+ from: {
291
+ groupId: data.groupId,
292
+ panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,
293
+ },
294
+ to: {
295
+ group: this.orthogonalize(event.position),
296
+ position: 'center',
297
+ },
298
+ });
237
299
  }
238
300
  else {
239
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
301
+ this._onDidDrop.fire(new DockviewDidDropEvent({
302
+ nativeEvent: event.nativeEvent,
303
+ position: event.position,
304
+ panel: undefined,
305
+ api: this._api,
306
+ group: undefined,
307
+ getData: getPanelData,
308
+ }));
240
309
  }
241
310
  }), this._rootDropTarget);
242
311
  this._api = new DockviewApi(this);
243
312
  this.updateWatermark();
244
313
  }
245
- addPopoutGroup(item, options) {
246
- var _a;
247
- let group;
248
- let box = options === null || options === void 0 ? void 0 : options.position;
249
- if (item instanceof DockviewPanel) {
250
- group = this.createGroup();
251
- this.removePanel(item, {
252
- removeEmptyGroup: true,
253
- skipDispose: true,
254
- });
255
- group.model.openPanel(item);
256
- if (!box) {
257
- box = this.element.getBoundingClientRect();
258
- }
314
+ addPopoutGroup(itemToPopout, options) {
315
+ var _a, _b, _c;
316
+ if (itemToPopout instanceof DockviewPanel &&
317
+ itemToPopout.group.size === 1) {
318
+ return this.addPopoutGroup(itemToPopout.group);
259
319
  }
260
- else {
261
- group = item;
262
- if (!box) {
263
- box = group.element.getBoundingClientRect();
320
+ const theme = getDockviewTheme(this.gridview.element);
321
+ const element = this.element;
322
+ function getBox() {
323
+ if (options === null || options === void 0 ? void 0 : options.position) {
324
+ return options.position;
264
325
  }
265
- const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
266
- options.skipRemoveGroup;
267
- if (!skip) {
268
- this.doRemoveGroup(item, { skipDispose: true });
326
+ if (itemToPopout instanceof DockviewGroupPanel) {
327
+ return itemToPopout.element.getBoundingClientRect();
328
+ }
329
+ if (itemToPopout.group) {
330
+ return itemToPopout.group.element.getBoundingClientRect();
269
331
  }
332
+ return element.getBoundingClientRect();
270
333
  }
271
- const theme = getTheme(this.gridview.element);
272
- const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
273
- group, {
274
- className: theme !== null && theme !== void 0 ? theme : '',
275
- popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
276
- box: {
277
- left: window.screenX + box.left,
278
- top: window.screenY + box.top,
279
- width: box.width,
280
- height: box.height,
281
- },
334
+ const box = getBox();
335
+ const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId(); //item.id;
336
+ if (itemToPopout.api.location.type === 'grid') {
337
+ itemToPopout.api.setHidden(true);
338
+ }
339
+ const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
340
+ theme !== null && theme !== void 0 ? theme : '', {
341
+ url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
342
+ left: window.screenX + box.left,
343
+ top: window.screenY + box.top,
344
+ width: box.width,
345
+ height: box.height,
346
+ onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
347
+ onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
282
348
  });
283
- popoutWindow.addDisposables({
284
- dispose: () => {
285
- remove(this._popoutGroups, popoutWindow);
286
- this.updateWatermark();
287
- },
288
- }, popoutWindow.window.onDidClose(() => {
289
- this.doAddGroup(group, [0]);
349
+ const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {
350
+ popoutWindowDisposable.dispose();
290
351
  }));
291
- this._popoutGroups.push(popoutWindow);
292
- this.updateWatermark();
352
+ return _window
353
+ .open()
354
+ .then((popoutContainer) => {
355
+ var _a;
356
+ if (_window.isDisposed) {
357
+ return;
358
+ }
359
+ if (popoutContainer === null) {
360
+ popoutWindowDisposable.dispose();
361
+ return;
362
+ }
363
+ const gready = document.createElement('div');
364
+ gready.className = 'dv-overlay-render-container';
365
+ const overlayRenderContainer = new OverlayRenderContainer(gready);
366
+ const referenceGroup = itemToPopout instanceof DockviewPanel
367
+ ? itemToPopout.group
368
+ : itemToPopout;
369
+ const referenceLocation = itemToPopout.api.location.type;
370
+ const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
371
+ group.model.renderContainer = overlayRenderContainer;
372
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
373
+ this._onDidAddGroup.fire(group);
374
+ }
375
+ if (itemToPopout instanceof DockviewPanel) {
376
+ this.movingLock(() => {
377
+ const panel = referenceGroup.model.removePanel(itemToPopout);
378
+ group.model.openPanel(panel);
379
+ });
380
+ }
381
+ else {
382
+ this.movingLock(() => moveGroupWithoutDestroying({
383
+ from: referenceGroup,
384
+ to: group,
385
+ }));
386
+ switch (referenceLocation) {
387
+ case 'grid':
388
+ referenceGroup.api.setHidden(true);
389
+ break;
390
+ case 'floating':
391
+ case 'popout':
392
+ this.removeGroup(referenceGroup);
393
+ break;
394
+ }
395
+ }
396
+ popoutContainer.classList.add('dv-dockview');
397
+ popoutContainer.style.overflow = 'hidden';
398
+ popoutContainer.appendChild(gready);
399
+ popoutContainer.appendChild(group.element);
400
+ group.model.location = {
401
+ type: 'popout',
402
+ getWindow: () => _window.window,
403
+ };
404
+ this.doSetGroupAndPanelActive(group);
405
+ popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
406
+ var _a;
407
+ if (event.isActive) {
408
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
409
+ }
410
+ }), group.api.onWillFocus(() => {
411
+ var _a;
412
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
413
+ }));
414
+ let returnedGroup;
415
+ const value = {
416
+ window: _window,
417
+ popoutGroup: group,
418
+ referenceGroup: this.getPanel(referenceGroup.id)
419
+ ? referenceGroup.id
420
+ : undefined,
421
+ disposable: {
422
+ dispose: () => {
423
+ popoutWindowDisposable.dispose();
424
+ return returnedGroup;
425
+ },
426
+ },
427
+ };
428
+ popoutWindowDisposable.addDisposables(
429
+ /**
430
+ * ResizeObserver seems slow here, I do not know why but we don't need it
431
+ * since we can reply on the window resize event as we will occupy the full
432
+ * window dimensions
433
+ */
434
+ addDisposableWindowListener(_window.window, 'resize', () => {
435
+ group.layout(window.innerWidth, window.innerHeight);
436
+ }), overlayRenderContainer, Disposable.from(() => {
437
+ if (this.getPanel(referenceGroup.id)) {
438
+ this.movingLock(() => moveGroupWithoutDestroying({
439
+ from: group,
440
+ to: referenceGroup,
441
+ }));
442
+ if (referenceGroup.api.isHidden) {
443
+ referenceGroup.api.setHidden(false);
444
+ }
445
+ if (this.getPanel(group.id)) {
446
+ this.doRemoveGroup(group, {
447
+ skipPopoutAssociated: true,
448
+ });
449
+ }
450
+ }
451
+ else {
452
+ if (this.getPanel(group.id)) {
453
+ const removedGroup = this.doRemoveGroup(group, {
454
+ skipDispose: true,
455
+ skipActive: true,
456
+ });
457
+ removedGroup.model.renderContainer =
458
+ this.overlayRenderContainer;
459
+ removedGroup.model.location = { type: 'grid' };
460
+ returnedGroup = removedGroup;
461
+ }
462
+ }
463
+ }));
464
+ this._popoutGroups.push(value);
465
+ this.updateWatermark();
466
+ })
467
+ .catch((err) => {
468
+ console.error(err);
469
+ });
293
470
  }
294
471
  addFloatingGroup(item, coord, options) {
295
- var _a, _b, _c, _d, _e, _f;
472
+ var _a, _b, _c, _d, _e, _f, _g;
296
473
  let group;
297
474
  if (item instanceof DockviewPanel) {
298
475
  group = this.createGroup();
299
- this.removePanel(item, {
476
+ this._onDidAddGroup.fire(group);
477
+ this.movingLock(() => this.removePanel(item, {
300
478
  removeEmptyGroup: true,
301
479
  skipDispose: true,
302
- });
303
- group.model.openPanel(item);
480
+ skipSetActiveGroup: true,
481
+ }));
482
+ group.model.openPanel(item, { skipSetGroupActive: true });
304
483
  }
305
484
  else {
306
485
  group = item;
486
+ const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;
487
+ const popoutReferenceGroup = popoutReferenceGroupId
488
+ ? this.getPanel(popoutReferenceGroupId)
489
+ : undefined;
307
490
  const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
308
491
  options.skipRemoveGroup;
309
492
  if (!skip) {
310
- this.doRemoveGroup(item, { skipDispose: true });
493
+ if (popoutReferenceGroup) {
494
+ this.movingLock(() => moveGroupWithoutDestroying({
495
+ from: item,
496
+ to: popoutReferenceGroup,
497
+ }));
498
+ this.doRemoveGroup(item, {
499
+ skipPopoutReturn: true,
500
+ skipPopoutAssociated: true,
501
+ });
502
+ this.doRemoveGroup(popoutReferenceGroup, {
503
+ skipDispose: true,
504
+ });
505
+ group = popoutReferenceGroup;
506
+ }
507
+ else {
508
+ this.doRemoveGroup(item, {
509
+ skipDispose: true,
510
+ skipPopoutReturn: true,
511
+ skipPopoutAssociated: !!popoutReferenceGroup,
512
+ });
513
+ }
311
514
  }
312
515
  }
313
- group.model.location = 'floating';
516
+ group.model.location = { type: 'floating' };
314
517
  const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
315
518
  ? Math.max(coord.x, 0)
316
519
  : DEFAULT_FLOATING_GROUP_POSITION.left;
@@ -320,16 +523,16 @@ export class DockviewComponent extends BaseGrid {
320
523
  const overlay = new Overlay({
321
524
  container: this.gridview.element,
322
525
  content: group.element,
323
- height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
324
- width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
526
+ height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
527
+ width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
325
528
  left: overlayLeft,
326
529
  top: overlayTop,
327
530
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
328
531
  ? undefined
329
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
532
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
330
533
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
331
534
  ? undefined
332
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
535
+ : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
333
536
  });
334
537
  const el = group.element.querySelector('.void-container');
335
538
  if (!el) {
@@ -360,12 +563,15 @@ export class DockviewComponent extends BaseGrid {
360
563
  }), {
361
564
  dispose: () => {
362
565
  disposable.dispose();
363
- group.model.location = 'grid';
566
+ group.model.location = { type: 'grid' };
364
567
  remove(this._floatingGroups, floatingGroupPanel);
365
568
  this.updateWatermark();
366
569
  },
367
570
  });
368
571
  this._floatingGroups.push(floatingGroupPanel);
572
+ if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
573
+ this.doSetGroupAndPanelActive(group);
574
+ }
369
575
  this.updateWatermark();
370
576
  }
371
577
  orthogonalize(position) {
@@ -457,8 +663,8 @@ export class DockviewComponent extends BaseGrid {
457
663
  return this.panels.find((panel) => panel.id === id);
458
664
  }
459
665
  setActivePanel(panel) {
460
- this.doSetGroupActive(panel.group);
461
666
  panel.group.model.openPanel(panel);
667
+ this.doSetGroupAndPanelActive(panel.group);
462
668
  }
463
669
  moveToNext(options = {}) {
464
670
  var _a;
@@ -519,7 +725,8 @@ export class DockviewComponent extends BaseGrid {
519
725
  });
520
726
  const popoutGroups = this._popoutGroups.map((group) => {
521
727
  return {
522
- data: group.group.toJSON(),
728
+ data: group.popoutGroup.toJSON(),
729
+ gridReferenceGroup: group.referenceGroup,
523
730
  position: group.window.dimensions(),
524
731
  };
525
732
  });
@@ -537,7 +744,7 @@ export class DockviewComponent extends BaseGrid {
537
744
  return result;
538
745
  }
539
746
  fromJSON(data) {
540
- var _a, _b;
747
+ var _a, _b, _c;
541
748
  this.clear();
542
749
  if (typeof data !== 'object' || data === null) {
543
750
  throw new Error('serialized layout must be a non-null object');
@@ -576,7 +783,7 @@ export class DockviewComponent extends BaseGrid {
576
783
  const isActive = typeof activeView === 'string' &&
577
784
  activeView === panel.id;
578
785
  group.model.openPanel(panel, {
579
- skipSetPanelActive: !isActive,
786
+ skipSetActive: !isActive,
580
787
  skipSetGroupActive: true,
581
788
  });
582
789
  }
@@ -606,11 +813,16 @@ export class DockviewComponent extends BaseGrid {
606
813
  }
607
814
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
608
815
  for (const serializedPopoutGroup of serializedPopoutGroups) {
609
- const { data, position } = serializedPopoutGroup;
816
+ const { data, position, gridReferenceGroup } = serializedPopoutGroup;
610
817
  const group = createGroupFromSerializedState(data);
611
- this.addPopoutGroup(group, {
818
+ this.addPopoutGroup((_c = (gridReferenceGroup
819
+ ? this.getPanel(gridReferenceGroup)
820
+ : undefined)) !== null && _c !== void 0 ? _c : group, {
612
821
  skipRemoveGroup: true,
613
822
  position: position !== null && position !== void 0 ? position : undefined,
823
+ overridePopoutGroup: gridReferenceGroup
824
+ ? group
825
+ : undefined,
614
826
  });
615
827
  }
616
828
  for (const floatingGroup of this._floatingGroups) {
@@ -657,6 +869,7 @@ export class DockviewComponent extends BaseGrid {
657
869
  */
658
870
  throw err;
659
871
  }
872
+ this.updateWatermark();
660
873
  this._onDidLayoutFromJSON.fire();
661
874
  }
662
875
  clear() {
@@ -670,9 +883,6 @@ export class DockviewComponent extends BaseGrid {
670
883
  if (hasActiveGroup) {
671
884
  this.doSetGroupAndPanelActive(undefined);
672
885
  }
673
- if (hasActivePanel) {
674
- this._onDidActivePanelChange.fire(undefined);
675
- }
676
886
  this.gridview.clear();
677
887
  }
678
888
  closeAllGroups() {
@@ -713,6 +923,7 @@ export class DockviewComponent extends BaseGrid {
713
923
  const group = this.orthogonalize(directionToPosition(options.position.direction));
714
924
  const panel = this.createPanel(options, group);
715
925
  group.model.openPanel(panel);
926
+ this.doSetGroupAndPanelActive(group);
716
927
  return panel;
717
928
  }
718
929
  }
@@ -724,6 +935,7 @@ export class DockviewComponent extends BaseGrid {
724
935
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
725
936
  if (options.floating) {
726
937
  const group = this.createGroup();
938
+ this._onDidAddGroup.fire(group);
727
939
  const o = typeof options.floating === 'object' &&
728
940
  options.floating !== null
729
941
  ? options.floating
@@ -731,16 +943,16 @@ export class DockviewComponent extends BaseGrid {
731
943
  this.addFloatingGroup(group, o, {
732
944
  inDragMode: false,
733
945
  skipRemoveGroup: true,
946
+ skipActiveGroup: true,
734
947
  });
735
- this._onDidAddGroup.fire(group);
736
948
  panel = this.createPanel(options, group);
737
949
  group.model.openPanel(panel);
738
- this.doSetGroupAndPanelActive(group);
739
950
  }
740
- else if (referenceGroup.api.location === 'floating' ||
951
+ else if (referenceGroup.api.location.type === 'floating' ||
741
952
  target === 'center') {
742
953
  panel = this.createPanel(options, referenceGroup);
743
954
  referenceGroup.model.openPanel(panel);
955
+ this.doSetGroupAndPanelActive(referenceGroup);
744
956
  }
745
957
  else {
746
958
  const location = getGridLocation(referenceGroup.element);
@@ -748,10 +960,12 @@ export class DockviewComponent extends BaseGrid {
748
960
  const group = this.createGroupAtLocation(relativeLocation);
749
961
  panel = this.createPanel(options, group);
750
962
  group.model.openPanel(panel);
963
+ this.doSetGroupAndPanelActive(group);
751
964
  }
752
965
  }
753
966
  else if (options.floating) {
754
967
  const group = this.createGroup();
968
+ this._onDidAddGroup.fire(group);
755
969
  const o = typeof options.floating === 'object' &&
756
970
  options.floating !== null
757
971
  ? options.floating
@@ -759,16 +973,16 @@ export class DockviewComponent extends BaseGrid {
759
973
  this.addFloatingGroup(group, o, {
760
974
  inDragMode: false,
761
975
  skipRemoveGroup: true,
976
+ skipActiveGroup: true,
762
977
  });
763
- this._onDidAddGroup.fire(group);
764
978
  panel = this.createPanel(options, group);
765
979
  group.model.openPanel(panel);
766
- this.doSetGroupAndPanelActive(group);
767
980
  }
768
981
  else {
769
982
  const group = this.createGroupAtLocation();
770
983
  panel = this.createPanel(options, group);
771
984
  group.model.openPanel(panel);
985
+ this.doSetGroupAndPanelActive(group);
772
986
  }
773
987
  return panel;
774
988
  }
@@ -780,13 +994,15 @@ export class DockviewComponent extends BaseGrid {
780
994
  if (!group) {
781
995
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
782
996
  }
783
- group.model.removePanel(panel);
997
+ group.model.removePanel(panel, {
998
+ skipSetActiveGroup: options.skipSetActiveGroup,
999
+ });
784
1000
  if (!options.skipDispose) {
785
- this.overlayRenderContainer.detatch(panel);
1001
+ panel.group.model.renderContainer.detatch(panel);
786
1002
  panel.dispose();
787
1003
  }
788
1004
  if (group.size === 0 && options.removeEmptyGroup) {
789
- this.removeGroup(group);
1005
+ this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
790
1006
  }
791
1007
  }
792
1008
  createWatermarkComponent() {
@@ -799,7 +1015,7 @@ export class DockviewComponent extends BaseGrid {
799
1015
  }
800
1016
  updateWatermark() {
801
1017
  var _a, _b;
802
- if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
1018
+ if (this.groups.filter((x) => x.api.location.type === 'grid' && !x.api.isHidden).length === 0) {
803
1019
  if (!this.watermark) {
804
1020
  this.watermark = this.createWatermarkComponent();
805
1021
  this.watermark.init({
@@ -845,36 +1061,42 @@ export class DockviewComponent extends BaseGrid {
845
1061
  }
846
1062
  else {
847
1063
  const group = this.orthogonalize(directionToPosition(options.direction));
1064
+ if (!options.skipSetActive) {
1065
+ this.doSetGroupAndPanelActive(group);
1066
+ }
848
1067
  return group;
849
1068
  }
850
1069
  const target = toTarget(options.direction || 'within');
851
1070
  const location = getGridLocation(referenceGroup.element);
852
1071
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
853
1072
  this.doAddGroup(group, relativeLocation);
1073
+ if (!options.skipSetActive) {
1074
+ this.doSetGroupAndPanelActive(group);
1075
+ }
854
1076
  return group;
855
1077
  }
856
1078
  else {
857
1079
  this.doAddGroup(group);
1080
+ this.doSetGroupAndPanelActive(group);
858
1081
  return group;
859
1082
  }
860
1083
  }
861
1084
  removeGroup(group, options) {
1085
+ this.doRemoveGroup(group, options);
1086
+ }
1087
+ doRemoveGroup(group, options) {
862
1088
  var _a;
863
1089
  const panels = [...group.panels]; // reassign since group panels will mutate
864
- for (const panel of panels) {
865
- this.removePanel(panel, {
866
- removeEmptyGroup: false,
867
- skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
868
- });
1090
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1091
+ for (const panel of panels) {
1092
+ this.removePanel(panel, {
1093
+ removeEmptyGroup: false,
1094
+ skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
1095
+ });
1096
+ }
869
1097
  }
870
1098
  const activePanel = this.activePanel;
871
- this.doRemoveGroup(group, options);
872
- if (this.activePanel !== activePanel) {
873
- this._onDidActivePanelChange.fire(this.activePanel);
874
- }
875
- }
876
- doRemoveGroup(group, options) {
877
- if (group.api.location === 'floating') {
1099
+ if (group.api.location.type === 'floating') {
878
1100
  const floatingGroup = this._floatingGroups.find((_) => _.group === group);
879
1101
  if (floatingGroup) {
880
1102
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -886,60 +1108,124 @@ export class DockviewComponent extends BaseGrid {
886
1108
  floatingGroup.dispose();
887
1109
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
888
1110
  const groups = Array.from(this._groups.values());
889
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1111
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
890
1112
  }
891
1113
  return floatingGroup.group;
892
1114
  }
893
1115
  throw new Error('failed to find floating group');
894
1116
  }
895
- if (group.api.location === 'popout') {
896
- const selectedGroup = this._popoutGroups.find((_) => _.group === group);
1117
+ if (group.api.location.type === 'popout') {
1118
+ const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
897
1119
  if (selectedGroup) {
898
1120
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
899
- selectedGroup.group.dispose();
1121
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {
1122
+ const refGroup = selectedGroup.referenceGroup
1123
+ ? this.getPanel(selectedGroup.referenceGroup)
1124
+ : undefined;
1125
+ if (refGroup) {
1126
+ this.removeGroup(refGroup);
1127
+ }
1128
+ }
1129
+ selectedGroup.popoutGroup.dispose();
900
1130
  this._groups.delete(group.id);
901
1131
  this._onDidRemoveGroup.fire(group);
902
1132
  }
903
- selectedGroup.dispose();
1133
+ const removedGroup = selectedGroup.disposable.dispose();
1134
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
1135
+ this.doAddGroup(removedGroup, [0]);
1136
+ this.doSetGroupAndPanelActive(removedGroup);
1137
+ }
904
1138
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
905
1139
  const groups = Array.from(this._groups.values());
906
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1140
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
907
1141
  }
908
- return selectedGroup.group;
1142
+ this.updateWatermark();
1143
+ return selectedGroup.popoutGroup;
909
1144
  }
910
1145
  throw new Error('failed to find popout group');
911
1146
  }
912
- return super.doRemoveGroup(group, options);
1147
+ const re = super.doRemoveGroup(group, options);
1148
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {
1149
+ if (this.activePanel !== activePanel) {
1150
+ this._onDidActivePanelChange.fire(this.activePanel);
1151
+ }
1152
+ }
1153
+ return re;
913
1154
  }
914
- moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
915
- var _a, _b, _c;
1155
+ movingLock(func) {
1156
+ const isMoving = this._moving;
1157
+ try {
1158
+ this._moving = true;
1159
+ return func();
1160
+ }
1161
+ finally {
1162
+ this._moving = isMoving;
1163
+ }
1164
+ }
1165
+ moveGroupOrPanel(options) {
1166
+ var _a;
1167
+ const destinationGroup = options.to.group;
1168
+ const sourceGroupId = options.from.groupId;
1169
+ const sourceItemId = options.from.panelId;
1170
+ const destinationTarget = options.to.position;
1171
+ const destinationIndex = options.to.index;
916
1172
  const sourceGroup = sourceGroupId
917
1173
  ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
918
1174
  : undefined;
1175
+ if (!sourceGroup) {
1176
+ throw new Error(`Failed to find group id ${sourceGroupId}`);
1177
+ }
919
1178
  if (sourceItemId === undefined) {
920
- if (sourceGroup) {
921
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
922
- }
1179
+ /**
1180
+ * Moving an entire group into another group
1181
+ */
1182
+ this.moveGroup({
1183
+ from: { group: sourceGroup },
1184
+ to: {
1185
+ group: destinationGroup,
1186
+ position: destinationTarget,
1187
+ },
1188
+ });
923
1189
  return;
924
1190
  }
925
1191
  if (!destinationTarget || destinationTarget === 'center') {
926
- const groupItem = (_b = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _b !== void 0 ? _b : this.panels.find((panel) => panel.id === sourceItemId);
927
- if (!groupItem) {
1192
+ /**
1193
+ * Dropping a panel within another group
1194
+ */
1195
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
1196
+ skipSetActive: false,
1197
+ skipSetActiveGroup: true,
1198
+ }));
1199
+ if (!removedPanel) {
928
1200
  throw new Error(`No panel with id ${sourceItemId}`);
929
1201
  }
930
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
931
- this.doRemoveGroup(sourceGroup);
1202
+ if (sourceGroup.model.size === 0) {
1203
+ // remove the group and do not set a new group as active
1204
+ this.doRemoveGroup(sourceGroup, { skipActive: true });
932
1205
  }
933
- destinationGroup.model.openPanel(groupItem, {
1206
+ this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
934
1207
  index: destinationIndex,
1208
+ skipSetGroupActive: true,
1209
+ }));
1210
+ this.doSetGroupAndPanelActive(destinationGroup);
1211
+ this._onDidMovePanel.fire({
1212
+ panel: removedPanel,
935
1213
  });
936
1214
  }
937
1215
  else {
1216
+ /**
1217
+ * Dropping a panel to the extremities of a group which will place that panel
1218
+ * into an adjacent group
1219
+ */
938
1220
  const referenceLocation = getGridLocation(destinationGroup.element);
939
1221
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
940
- if (sourceGroup && sourceGroup.size < 2) {
1222
+ if (sourceGroup.size < 2) {
1223
+ /**
1224
+ * If we are moving from a group which only has one panel left we will consider
1225
+ * moving the group itself rather than moving the panel into a newly created group
1226
+ */
941
1227
  const [targetParentLocation, to] = tail(targetLocation);
942
- if (sourceGroup.api.location === 'grid') {
1228
+ if (sourceGroup.api.location.type === 'grid') {
943
1229
  const sourceLocation = getGridLocation(sourceGroup.element);
944
1230
  const [sourceParentLocation, from] = tail(sourceLocation);
945
1231
  if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
@@ -947,78 +1233,123 @@ export class DockviewComponent extends BaseGrid {
947
1233
  // if a group has one tab - we are essentially moving the 'group'
948
1234
  // which is equivalent to swapping two views in this case
949
1235
  this.gridview.moveView(sourceParentLocation, from, to);
1236
+ return;
950
1237
  }
951
1238
  }
952
1239
  // source group will become empty so delete the group
953
- const targetGroup = this.doRemoveGroup(sourceGroup, {
1240
+ const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
954
1241
  skipActive: true,
955
1242
  skipDispose: true,
956
- });
1243
+ }));
957
1244
  // after deleting the group we need to re-evaulate the ref location
958
1245
  const updatedReferenceLocation = getGridLocation(destinationGroup.element);
959
1246
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
960
- this.doAddGroup(targetGroup, location);
1247
+ this.movingLock(() => this.doAddGroup(targetGroup, location));
1248
+ this.doSetGroupAndPanelActive(targetGroup);
961
1249
  }
962
1250
  else {
963
- const groupItem = (_c = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _c !== void 0 ? _c : this.panels.find((panel) => panel.id === sourceItemId);
964
- if (!groupItem) {
1251
+ /**
1252
+ * The group we are removing from has many panels, we need to remove the panels we are moving,
1253
+ * create a new group, add the panels to that new group and add the new group in an appropiate position
1254
+ */
1255
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
1256
+ skipSetActive: false,
1257
+ skipSetActiveGroup: true,
1258
+ }));
1259
+ if (!removedPanel) {
965
1260
  throw new Error(`No panel with id ${sourceItemId}`);
966
1261
  }
967
1262
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
968
1263
  const group = this.createGroupAtLocation(dropLocation);
969
- group.model.openPanel(groupItem);
1264
+ this.movingLock(() => group.model.openPanel(removedPanel, {
1265
+ skipSetGroupActive: true,
1266
+ }));
1267
+ this.doSetGroupAndPanelActive(group);
970
1268
  }
971
1269
  }
972
1270
  }
973
- moveGroup(sourceGroup, referenceGroup, target) {
974
- if (sourceGroup) {
975
- if (!target || target === 'center') {
976
- const activePanel = sourceGroup.activePanel;
977
- const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));
978
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
979
- this.doRemoveGroup(sourceGroup);
980
- }
1271
+ moveGroup(options) {
1272
+ const from = options.from.group;
1273
+ const to = options.to.group;
1274
+ const target = options.to.position;
1275
+ if (target === 'center') {
1276
+ const activePanel = from.activePanel;
1277
+ const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {
1278
+ skipSetActive: true,
1279
+ })));
1280
+ if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {
1281
+ this.doRemoveGroup(from, { skipActive: true });
1282
+ }
1283
+ this.movingLock(() => {
981
1284
  for (const panel of panels) {
982
- referenceGroup.model.openPanel(panel, {
983
- skipSetPanelActive: panel !== activePanel,
1285
+ to.model.openPanel(panel, {
1286
+ skipSetActive: panel !== activePanel,
1287
+ skipSetGroupActive: true,
984
1288
  });
985
1289
  }
986
- }
987
- else {
988
- switch (sourceGroup.api.location) {
989
- case 'grid':
990
- this.gridview.removeView(getGridLocation(sourceGroup.element));
991
- break;
992
- case 'floating': {
993
- const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
994
- if (!selectedFloatingGroup) {
995
- throw new Error('failed to find floating group');
996
- }
997
- selectedFloatingGroup.dispose();
998
- break;
1290
+ });
1291
+ this.doSetGroupAndPanelActive(to);
1292
+ panels.forEach((panel) => {
1293
+ this._onDidMovePanel.fire({ panel });
1294
+ });
1295
+ }
1296
+ else {
1297
+ switch (from.api.location.type) {
1298
+ case 'grid':
1299
+ this.gridview.removeView(getGridLocation(from.element));
1300
+ break;
1301
+ case 'floating': {
1302
+ const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);
1303
+ if (!selectedFloatingGroup) {
1304
+ throw new Error('failed to find floating group');
999
1305
  }
1000
- case 'popout': {
1001
- const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
1002
- if (!selectedPopoutGroup) {
1003
- throw new Error('failed to find popout group');
1004
- }
1005
- selectedPopoutGroup.dispose();
1306
+ selectedFloatingGroup.dispose();
1307
+ break;
1308
+ }
1309
+ case 'popout': {
1310
+ const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);
1311
+ if (!selectedPopoutGroup) {
1312
+ throw new Error('failed to find popout group');
1006
1313
  }
1314
+ selectedPopoutGroup.disposable.dispose();
1007
1315
  }
1008
- const referenceLocation = getGridLocation(referenceGroup.element);
1009
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
1010
- this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);
1011
1316
  }
1317
+ const referenceLocation = getGridLocation(to.element);
1318
+ const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
1319
+ this.gridview.addView(from, Sizing.Distribute, dropLocation);
1320
+ from.panels.forEach((panel) => {
1321
+ this._onDidMovePanel.fire({ panel });
1322
+ });
1012
1323
  }
1013
1324
  }
1014
- doSetGroupAndPanelActive(group, skipFocus) {
1015
- var _a, _b;
1325
+ doSetGroupActive(group) {
1326
+ super.doSetGroupActive(group);
1016
1327
  const activePanel = this.activePanel;
1017
- super.doSetGroupActive(group, skipFocus);
1018
- if (((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel) !== activePanel) {
1019
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
1328
+ if (!this._moving &&
1329
+ activePanel !== this._onDidActivePanelChange.value) {
1330
+ this._onDidActivePanelChange.fire(activePanel);
1020
1331
  }
1021
1332
  }
1333
+ doSetGroupAndPanelActive(group) {
1334
+ super.doSetGroupActive(group);
1335
+ const activePanel = this.activePanel;
1336
+ if (group &&
1337
+ this.hasMaximizedGroup() &&
1338
+ !this.isMaximizedGroup(group)) {
1339
+ this.exitMaximizedGroup();
1340
+ }
1341
+ if (!this._moving &&
1342
+ activePanel !== this._onDidActivePanelChange.value) {
1343
+ this._onDidActivePanelChange.fire(activePanel);
1344
+ }
1345
+ }
1346
+ getNextGroupId() {
1347
+ let id = this.nextGroupId.next();
1348
+ while (this._groups.has(id)) {
1349
+ id = this.nextGroupId.next();
1350
+ }
1351
+ return id;
1352
+ }
1022
1353
  createGroup(options) {
1023
1354
  if (!options) {
1024
1355
  options = {};
@@ -1035,7 +1366,7 @@ export class DockviewComponent extends BaseGrid {
1035
1366
  }
1036
1367
  }
1037
1368
  const view = new DockviewGroupPanel(this, id, options);
1038
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
1369
+ view.init({ params: {}, accessor: this });
1039
1370
  if (!this._groups.has(view.id)) {
1040
1371
  const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
1041
1372
  this._onWillDragPanel.fire(event);
@@ -1043,20 +1374,48 @@ export class DockviewComponent extends BaseGrid {
1043
1374
  this._onWillDragGroup.fire(event);
1044
1375
  }), view.model.onMove((event) => {
1045
1376
  const { groupId, itemId, target, index } = event;
1046
- this.moveGroupOrPanel(view, groupId, itemId, target, index);
1377
+ this.moveGroupOrPanel({
1378
+ from: { groupId: groupId, panelId: itemId },
1379
+ to: {
1380
+ group: view,
1381
+ position: target,
1382
+ index,
1383
+ },
1384
+ });
1047
1385
  }), view.model.onDidDrop((event) => {
1048
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
1386
+ this._onDidDrop.fire(event);
1387
+ }), view.model.onWillDrop((event) => {
1388
+ this._onWillDrop.fire(event);
1389
+ }), view.model.onWillShowOverlay((event) => {
1390
+ if (this.options.disableDnd) {
1391
+ event.preventDefault();
1392
+ return;
1393
+ }
1394
+ this._onWillShowOverlay.fire(event);
1049
1395
  }), view.model.onDidAddPanel((event) => {
1396
+ if (this._moving) {
1397
+ return;
1398
+ }
1050
1399
  this._onDidAddPanel.fire(event.panel);
1051
1400
  }), view.model.onDidRemovePanel((event) => {
1401
+ if (this._moving) {
1402
+ return;
1403
+ }
1052
1404
  this._onDidRemovePanel.fire(event.panel);
1053
1405
  }), view.model.onDidActivePanelChange((event) => {
1054
- this._onDidActivePanelChange.fire(event.panel);
1406
+ if (this._moving) {
1407
+ return;
1408
+ }
1409
+ if (event.panel !== this.activePanel) {
1410
+ return;
1411
+ }
1412
+ if (this._onDidActivePanelChange.value !== event.panel) {
1413
+ this._onDidActivePanelChange.fire(event.panel);
1414
+ }
1055
1415
  }));
1056
1416
  this._groups.set(view.id, { value: view, disposable });
1057
1417
  }
1058
- // TODO: must be called after the above listeners have been setup,
1059
- // not an ideal pattern
1418
+ // TODO: must be called after the above listeners have been setup, not an ideal pattern
1060
1419
  view.initialize();
1061
1420
  return view;
1062
1421
  }
@@ -1082,4 +1441,3 @@ export class DockviewComponent extends BaseGrid {
1082
1441
  return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;
1083
1442
  }
1084
1443
  }
1085
- //# sourceMappingURL=dockviewComponent.js.map