dockview-core 1.9.2 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/dist/cjs/api/component.api.d.ts +35 -8
  2. package/dist/cjs/api/component.api.js +37 -7
  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 +24 -7
  6. package/dist/cjs/api/dockviewPanelApi.js +60 -14
  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 +10 -8
  10. package/dist/cjs/api/panelApi.js +19 -29
  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 +586 -198
  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 +81 -37
  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 +10 -6
  60. package/dist/cjs/dockview/options.js +0 -1
  61. package/dist/cjs/dockview/types.d.ts +0 -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 +2 -3
  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 +3 -4
  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 +1 -1
  104. package/dist/cjs/paneview/paneview.js +3 -1
  105. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -1
  106. package/dist/cjs/paneview/paneviewComponent.js +6 -1
  107. package/dist/cjs/paneview/paneviewPanel.d.ts +2 -1
  108. package/dist/cjs/paneview/paneviewPanel.js +5 -2
  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 +1 -2
  118. package/dist/cjs/splitview/splitviewComponent.js +5 -6
  119. package/dist/cjs/splitview/splitviewPanel.d.ts +2 -3
  120. package/dist/cjs/splitview/splitviewPanel.js +1 -2
  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 +1298 -531
  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 +1297 -530
  134. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  135. package/dist/dockview-core.cjs.js +1298 -531
  136. package/dist/dockview-core.cjs.js.map +1 -1
  137. package/dist/dockview-core.esm.js +1296 -532
  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 +1298 -531
  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 +1297 -530
  148. package/dist/dockview-core.noStyle.js.map +1 -1
  149. package/dist/esm/api/component.api.d.ts +35 -8
  150. package/dist/esm/api/component.api.js +29 -7
  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 +24 -7
  154. package/dist/esm/api/dockviewPanelApi.js +56 -14
  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 +10 -8
  158. package/dist/esm/api/panelApi.js +16 -29
  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 +529 -163
  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 +81 -37
  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 +10 -6
  208. package/dist/esm/dockview/options.js +0 -1
  209. package/dist/esm/dockview/types.d.ts +0 -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 +2 -3
  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 +3 -4
  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 +1 -1
  252. package/dist/esm/paneview/paneview.js +3 -1
  253. package/dist/esm/paneview/paneviewComponent.d.ts +2 -1
  254. package/dist/esm/paneview/paneviewComponent.js +6 -1
  255. package/dist/esm/paneview/paneviewPanel.d.ts +2 -1
  256. package/dist/esm/paneview/paneviewPanel.js +5 -2
  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 +1 -2
  266. package/dist/esm/splitview/splitviewComponent.js +5 -6
  267. package/dist/esm/splitview/splitviewPanel.d.ts +2 -3
  268. package/dist/esm/splitview/splitviewPanel.js +1 -2
  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, WillShowOverlayLocationEvent, } 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
  }
@@ -229,88 +269,259 @@ export class DockviewComponent extends BaseGrid {
229
269
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
230
270
  overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
231
271
  });
232
- this.addDisposables(this._rootDropTarget.onDrop((event) => {
272
+ this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
273
+ if (this.gridview.length > 0 && event.position === 'center') {
274
+ // option only available when no panels in primary grid
275
+ return;
276
+ }
277
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
278
+ kind: 'edge',
279
+ }));
280
+ }), this._rootDropTarget.onDrop((event) => {
233
281
  var _a;
282
+ const willDropEvent = new DockviewWillDropEvent({
283
+ nativeEvent: event.nativeEvent,
284
+ position: event.position,
285
+ panel: undefined,
286
+ api: this._api,
287
+ group: undefined,
288
+ getData: getPanelData,
289
+ kind: 'edge',
290
+ });
291
+ this._onWillDrop.fire(willDropEvent);
292
+ if (willDropEvent.defaultPrevented) {
293
+ return;
294
+ }
234
295
  const data = getPanelData();
235
296
  if (data) {
236
- this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined, 'center');
297
+ this.moveGroupOrPanel({
298
+ from: {
299
+ groupId: data.groupId,
300
+ panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,
301
+ },
302
+ to: {
303
+ group: this.orthogonalize(event.position),
304
+ position: 'center',
305
+ },
306
+ });
237
307
  }
238
308
  else {
239
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
309
+ this._onDidDrop.fire(new DockviewDidDropEvent({
310
+ nativeEvent: event.nativeEvent,
311
+ position: event.position,
312
+ panel: undefined,
313
+ api: this._api,
314
+ group: undefined,
315
+ getData: getPanelData,
316
+ }));
240
317
  }
241
318
  }), this._rootDropTarget);
242
319
  this._api = new DockviewApi(this);
243
320
  this.updateWatermark();
244
321
  }
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
- }
322
+ addPopoutGroup(itemToPopout, options) {
323
+ var _a, _b, _c;
324
+ if (itemToPopout instanceof DockviewPanel &&
325
+ itemToPopout.group.size === 1) {
326
+ return this.addPopoutGroup(itemToPopout.group);
259
327
  }
260
- else {
261
- group = item;
262
- if (!box) {
263
- box = group.element.getBoundingClientRect();
328
+ const theme = getDockviewTheme(this.gridview.element);
329
+ const element = this.element;
330
+ function getBox() {
331
+ if (options === null || options === void 0 ? void 0 : options.position) {
332
+ return options.position;
264
333
  }
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 });
334
+ if (itemToPopout instanceof DockviewGroupPanel) {
335
+ return itemToPopout.element.getBoundingClientRect();
336
+ }
337
+ if (itemToPopout.group) {
338
+ return itemToPopout.group.element.getBoundingClientRect();
269
339
  }
340
+ return element.getBoundingClientRect();
270
341
  }
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
- },
342
+ const box = getBox();
343
+ 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;
344
+ if (itemToPopout.api.location.type === 'grid') {
345
+ itemToPopout.api.setVisible(false);
346
+ }
347
+ const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
348
+ theme !== null && theme !== void 0 ? theme : '', {
349
+ url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
350
+ left: window.screenX + box.left,
351
+ top: window.screenY + box.top,
352
+ width: box.width,
353
+ height: box.height,
354
+ onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
355
+ onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
282
356
  });
283
- popoutWindow.addDisposables({
284
- dispose: () => {
285
- remove(this._popoutGroups, popoutWindow);
286
- this.updateWatermark();
287
- },
288
- }, popoutWindow.window.onDidClose(() => {
289
- this.doAddGroup(group, [0]);
357
+ const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {
358
+ popoutWindowDisposable.dispose();
290
359
  }));
291
- this._popoutGroups.push(popoutWindow);
292
- this.updateWatermark();
360
+ return _window
361
+ .open()
362
+ .then((popoutContainer) => {
363
+ var _a;
364
+ if (_window.isDisposed) {
365
+ return;
366
+ }
367
+ if (popoutContainer === null) {
368
+ popoutWindowDisposable.dispose();
369
+ return;
370
+ }
371
+ const gready = document.createElement('div');
372
+ gready.className = 'dv-overlay-render-container';
373
+ const overlayRenderContainer = new OverlayRenderContainer(gready);
374
+ const referenceGroup = itemToPopout instanceof DockviewPanel
375
+ ? itemToPopout.group
376
+ : itemToPopout;
377
+ const referenceLocation = itemToPopout.api.location.type;
378
+ const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
379
+ group.model.renderContainer = overlayRenderContainer;
380
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
381
+ this._onDidAddGroup.fire(group);
382
+ }
383
+ if (itemToPopout instanceof DockviewPanel) {
384
+ this.movingLock(() => {
385
+ const panel = referenceGroup.model.removePanel(itemToPopout);
386
+ group.model.openPanel(panel);
387
+ });
388
+ }
389
+ else {
390
+ this.movingLock(() => moveGroupWithoutDestroying({
391
+ from: referenceGroup,
392
+ to: group,
393
+ }));
394
+ switch (referenceLocation) {
395
+ case 'grid':
396
+ referenceGroup.api.setVisible(false);
397
+ break;
398
+ case 'floating':
399
+ case 'popout':
400
+ this.removeGroup(referenceGroup);
401
+ break;
402
+ }
403
+ }
404
+ popoutContainer.classList.add('dv-dockview');
405
+ popoutContainer.style.overflow = 'hidden';
406
+ popoutContainer.appendChild(gready);
407
+ popoutContainer.appendChild(group.element);
408
+ group.model.location = {
409
+ type: 'popout',
410
+ getWindow: () => _window.window,
411
+ };
412
+ this.doSetGroupAndPanelActive(group);
413
+ popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
414
+ var _a;
415
+ if (event.isActive) {
416
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
417
+ }
418
+ }), group.api.onWillFocus(() => {
419
+ var _a;
420
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
421
+ }));
422
+ let returnedGroup;
423
+ const value = {
424
+ window: _window,
425
+ popoutGroup: group,
426
+ referenceGroup: this.getPanel(referenceGroup.id)
427
+ ? referenceGroup.id
428
+ : undefined,
429
+ disposable: {
430
+ dispose: () => {
431
+ popoutWindowDisposable.dispose();
432
+ return returnedGroup;
433
+ },
434
+ },
435
+ };
436
+ popoutWindowDisposable.addDisposables(
437
+ /**
438
+ * ResizeObserver seems slow here, I do not know why but we don't need it
439
+ * since we can reply on the window resize event as we will occupy the full
440
+ * window dimensions
441
+ */
442
+ addDisposableWindowListener(_window.window, 'resize', () => {
443
+ group.layout(window.innerWidth, window.innerHeight);
444
+ }), overlayRenderContainer, Disposable.from(() => {
445
+ if (this.getPanel(referenceGroup.id)) {
446
+ this.movingLock(() => moveGroupWithoutDestroying({
447
+ from: group,
448
+ to: referenceGroup,
449
+ }));
450
+ if (!referenceGroup.api.isVisible) {
451
+ referenceGroup.api.setVisible(true);
452
+ }
453
+ if (this.getPanel(group.id)) {
454
+ this.doRemoveGroup(group, {
455
+ skipPopoutAssociated: true,
456
+ });
457
+ }
458
+ }
459
+ else {
460
+ if (this.getPanel(group.id)) {
461
+ const removedGroup = this.doRemoveGroup(group, {
462
+ skipDispose: true,
463
+ skipActive: true,
464
+ });
465
+ removedGroup.model.renderContainer =
466
+ this.overlayRenderContainer;
467
+ removedGroup.model.location = { type: 'grid' };
468
+ returnedGroup = removedGroup;
469
+ }
470
+ }
471
+ }));
472
+ this._popoutGroups.push(value);
473
+ this.updateWatermark();
474
+ })
475
+ .catch((err) => {
476
+ console.error(err);
477
+ });
293
478
  }
294
479
  addFloatingGroup(item, coord, options) {
295
- var _a, _b, _c, _d, _e, _f;
480
+ var _a, _b, _c, _d, _e, _f, _g;
296
481
  let group;
297
482
  if (item instanceof DockviewPanel) {
298
483
  group = this.createGroup();
299
- this.removePanel(item, {
484
+ this._onDidAddGroup.fire(group);
485
+ this.movingLock(() => this.removePanel(item, {
300
486
  removeEmptyGroup: true,
301
487
  skipDispose: true,
302
- });
303
- group.model.openPanel(item);
488
+ skipSetActiveGroup: true,
489
+ }));
490
+ group.model.openPanel(item, { skipSetGroupActive: true });
304
491
  }
305
492
  else {
306
493
  group = item;
494
+ const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;
495
+ const popoutReferenceGroup = popoutReferenceGroupId
496
+ ? this.getPanel(popoutReferenceGroupId)
497
+ : undefined;
307
498
  const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
308
499
  options.skipRemoveGroup;
309
500
  if (!skip) {
310
- this.doRemoveGroup(item, { skipDispose: true });
501
+ if (popoutReferenceGroup) {
502
+ this.movingLock(() => moveGroupWithoutDestroying({
503
+ from: item,
504
+ to: popoutReferenceGroup,
505
+ }));
506
+ this.doRemoveGroup(item, {
507
+ skipPopoutReturn: true,
508
+ skipPopoutAssociated: true,
509
+ });
510
+ this.doRemoveGroup(popoutReferenceGroup, {
511
+ skipDispose: true,
512
+ });
513
+ group = popoutReferenceGroup;
514
+ }
515
+ else {
516
+ this.doRemoveGroup(item, {
517
+ skipDispose: true,
518
+ skipPopoutReturn: true,
519
+ skipPopoutAssociated: !!popoutReferenceGroup,
520
+ });
521
+ }
311
522
  }
312
523
  }
313
- group.model.location = 'floating';
524
+ group.model.location = { type: 'floating' };
314
525
  const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
315
526
  ? Math.max(coord.x, 0)
316
527
  : DEFAULT_FLOATING_GROUP_POSITION.left;
@@ -320,16 +531,16 @@ export class DockviewComponent extends BaseGrid {
320
531
  const overlay = new Overlay({
321
532
  container: this.gridview.element,
322
533
  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,
534
+ height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
535
+ width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
325
536
  left: overlayLeft,
326
537
  top: overlayTop,
327
538
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
328
539
  ? 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,
540
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
330
541
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
331
542
  ? 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,
543
+ : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
333
544
  });
334
545
  const el = group.element.querySelector('.void-container');
335
546
  if (!el) {
@@ -360,12 +571,15 @@ export class DockviewComponent extends BaseGrid {
360
571
  }), {
361
572
  dispose: () => {
362
573
  disposable.dispose();
363
- group.model.location = 'grid';
574
+ group.model.location = { type: 'grid' };
364
575
  remove(this._floatingGroups, floatingGroupPanel);
365
576
  this.updateWatermark();
366
577
  },
367
578
  });
368
579
  this._floatingGroups.push(floatingGroupPanel);
580
+ if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
581
+ this.doSetGroupAndPanelActive(group);
582
+ }
369
583
  this.updateWatermark();
370
584
  }
371
585
  orthogonalize(position) {
@@ -457,8 +671,8 @@ export class DockviewComponent extends BaseGrid {
457
671
  return this.panels.find((panel) => panel.id === id);
458
672
  }
459
673
  setActivePanel(panel) {
460
- this.doSetGroupActive(panel.group);
461
674
  panel.group.model.openPanel(panel);
675
+ this.doSetGroupAndPanelActive(panel.group);
462
676
  }
463
677
  moveToNext(options = {}) {
464
678
  var _a;
@@ -519,7 +733,8 @@ export class DockviewComponent extends BaseGrid {
519
733
  });
520
734
  const popoutGroups = this._popoutGroups.map((group) => {
521
735
  return {
522
- data: group.group.toJSON(),
736
+ data: group.popoutGroup.toJSON(),
737
+ gridReferenceGroup: group.referenceGroup,
523
738
  position: group.window.dimensions(),
524
739
  };
525
740
  });
@@ -537,7 +752,7 @@ export class DockviewComponent extends BaseGrid {
537
752
  return result;
538
753
  }
539
754
  fromJSON(data) {
540
- var _a, _b;
755
+ var _a, _b, _c;
541
756
  this.clear();
542
757
  if (typeof data !== 'object' || data === null) {
543
758
  throw new Error('serialized layout must be a non-null object');
@@ -576,7 +791,7 @@ export class DockviewComponent extends BaseGrid {
576
791
  const isActive = typeof activeView === 'string' &&
577
792
  activeView === panel.id;
578
793
  group.model.openPanel(panel, {
579
- skipSetPanelActive: !isActive,
794
+ skipSetActive: !isActive,
580
795
  skipSetGroupActive: true,
581
796
  });
582
797
  }
@@ -606,11 +821,16 @@ export class DockviewComponent extends BaseGrid {
606
821
  }
607
822
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
608
823
  for (const serializedPopoutGroup of serializedPopoutGroups) {
609
- const { data, position } = serializedPopoutGroup;
824
+ const { data, position, gridReferenceGroup } = serializedPopoutGroup;
610
825
  const group = createGroupFromSerializedState(data);
611
- this.addPopoutGroup(group, {
826
+ this.addPopoutGroup((_c = (gridReferenceGroup
827
+ ? this.getPanel(gridReferenceGroup)
828
+ : undefined)) !== null && _c !== void 0 ? _c : group, {
612
829
  skipRemoveGroup: true,
613
830
  position: position !== null && position !== void 0 ? position : undefined,
831
+ overridePopoutGroup: gridReferenceGroup
832
+ ? group
833
+ : undefined,
614
834
  });
615
835
  }
616
836
  for (const floatingGroup of this._floatingGroups) {
@@ -657,6 +877,7 @@ export class DockviewComponent extends BaseGrid {
657
877
  */
658
878
  throw err;
659
879
  }
880
+ this.updateWatermark();
660
881
  this._onDidLayoutFromJSON.fire();
661
882
  }
662
883
  clear() {
@@ -670,9 +891,6 @@ export class DockviewComponent extends BaseGrid {
670
891
  if (hasActiveGroup) {
671
892
  this.doSetGroupAndPanelActive(undefined);
672
893
  }
673
- if (hasActivePanel) {
674
- this._onDidActivePanelChange.fire(undefined);
675
- }
676
894
  this.gridview.clear();
677
895
  }
678
896
  closeAllGroups() {
@@ -713,6 +931,7 @@ export class DockviewComponent extends BaseGrid {
713
931
  const group = this.orthogonalize(directionToPosition(options.position.direction));
714
932
  const panel = this.createPanel(options, group);
715
933
  group.model.openPanel(panel);
934
+ this.doSetGroupAndPanelActive(group);
716
935
  return panel;
717
936
  }
718
937
  }
@@ -724,6 +943,7 @@ export class DockviewComponent extends BaseGrid {
724
943
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
725
944
  if (options.floating) {
726
945
  const group = this.createGroup();
946
+ this._onDidAddGroup.fire(group);
727
947
  const o = typeof options.floating === 'object' &&
728
948
  options.floating !== null
729
949
  ? options.floating
@@ -731,16 +951,16 @@ export class DockviewComponent extends BaseGrid {
731
951
  this.addFloatingGroup(group, o, {
732
952
  inDragMode: false,
733
953
  skipRemoveGroup: true,
954
+ skipActiveGroup: true,
734
955
  });
735
- this._onDidAddGroup.fire(group);
736
956
  panel = this.createPanel(options, group);
737
957
  group.model.openPanel(panel);
738
- this.doSetGroupAndPanelActive(group);
739
958
  }
740
- else if (referenceGroup.api.location === 'floating' ||
959
+ else if (referenceGroup.api.location.type === 'floating' ||
741
960
  target === 'center') {
742
961
  panel = this.createPanel(options, referenceGroup);
743
962
  referenceGroup.model.openPanel(panel);
963
+ this.doSetGroupAndPanelActive(referenceGroup);
744
964
  }
745
965
  else {
746
966
  const location = getGridLocation(referenceGroup.element);
@@ -748,10 +968,12 @@ export class DockviewComponent extends BaseGrid {
748
968
  const group = this.createGroupAtLocation(relativeLocation);
749
969
  panel = this.createPanel(options, group);
750
970
  group.model.openPanel(panel);
971
+ this.doSetGroupAndPanelActive(group);
751
972
  }
752
973
  }
753
974
  else if (options.floating) {
754
975
  const group = this.createGroup();
976
+ this._onDidAddGroup.fire(group);
755
977
  const o = typeof options.floating === 'object' &&
756
978
  options.floating !== null
757
979
  ? options.floating
@@ -759,16 +981,16 @@ export class DockviewComponent extends BaseGrid {
759
981
  this.addFloatingGroup(group, o, {
760
982
  inDragMode: false,
761
983
  skipRemoveGroup: true,
984
+ skipActiveGroup: true,
762
985
  });
763
- this._onDidAddGroup.fire(group);
764
986
  panel = this.createPanel(options, group);
765
987
  group.model.openPanel(panel);
766
- this.doSetGroupAndPanelActive(group);
767
988
  }
768
989
  else {
769
990
  const group = this.createGroupAtLocation();
770
991
  panel = this.createPanel(options, group);
771
992
  group.model.openPanel(panel);
993
+ this.doSetGroupAndPanelActive(group);
772
994
  }
773
995
  return panel;
774
996
  }
@@ -780,13 +1002,15 @@ export class DockviewComponent extends BaseGrid {
780
1002
  if (!group) {
781
1003
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
782
1004
  }
783
- group.model.removePanel(panel);
1005
+ group.model.removePanel(panel, {
1006
+ skipSetActiveGroup: options.skipSetActiveGroup,
1007
+ });
784
1008
  if (!options.skipDispose) {
785
- this.overlayRenderContainer.detatch(panel);
1009
+ panel.group.model.renderContainer.detatch(panel);
786
1010
  panel.dispose();
787
1011
  }
788
1012
  if (group.size === 0 && options.removeEmptyGroup) {
789
- this.removeGroup(group);
1013
+ this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
790
1014
  }
791
1015
  }
792
1016
  createWatermarkComponent() {
@@ -799,7 +1023,7 @@ export class DockviewComponent extends BaseGrid {
799
1023
  }
800
1024
  updateWatermark() {
801
1025
  var _a, _b;
802
- if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
1026
+ if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
803
1027
  if (!this.watermark) {
804
1028
  this.watermark = this.createWatermarkComponent();
805
1029
  this.watermark.init({
@@ -845,36 +1069,42 @@ export class DockviewComponent extends BaseGrid {
845
1069
  }
846
1070
  else {
847
1071
  const group = this.orthogonalize(directionToPosition(options.direction));
1072
+ if (!options.skipSetActive) {
1073
+ this.doSetGroupAndPanelActive(group);
1074
+ }
848
1075
  return group;
849
1076
  }
850
1077
  const target = toTarget(options.direction || 'within');
851
1078
  const location = getGridLocation(referenceGroup.element);
852
1079
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
853
1080
  this.doAddGroup(group, relativeLocation);
1081
+ if (!options.skipSetActive) {
1082
+ this.doSetGroupAndPanelActive(group);
1083
+ }
854
1084
  return group;
855
1085
  }
856
1086
  else {
857
1087
  this.doAddGroup(group);
1088
+ this.doSetGroupAndPanelActive(group);
858
1089
  return group;
859
1090
  }
860
1091
  }
861
1092
  removeGroup(group, options) {
1093
+ this.doRemoveGroup(group, options);
1094
+ }
1095
+ doRemoveGroup(group, options) {
862
1096
  var _a;
863
1097
  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
- });
1098
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1099
+ for (const panel of panels) {
1100
+ this.removePanel(panel, {
1101
+ removeEmptyGroup: false,
1102
+ skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
1103
+ });
1104
+ }
869
1105
  }
870
1106
  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') {
1107
+ if (group.api.location.type === 'floating') {
878
1108
  const floatingGroup = this._floatingGroups.find((_) => _.group === group);
879
1109
  if (floatingGroup) {
880
1110
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -886,60 +1116,124 @@ export class DockviewComponent extends BaseGrid {
886
1116
  floatingGroup.dispose();
887
1117
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
888
1118
  const groups = Array.from(this._groups.values());
889
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1119
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
890
1120
  }
891
1121
  return floatingGroup.group;
892
1122
  }
893
1123
  throw new Error('failed to find floating group');
894
1124
  }
895
- if (group.api.location === 'popout') {
896
- const selectedGroup = this._popoutGroups.find((_) => _.group === group);
1125
+ if (group.api.location.type === 'popout') {
1126
+ const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
897
1127
  if (selectedGroup) {
898
1128
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
899
- selectedGroup.group.dispose();
1129
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {
1130
+ const refGroup = selectedGroup.referenceGroup
1131
+ ? this.getPanel(selectedGroup.referenceGroup)
1132
+ : undefined;
1133
+ if (refGroup) {
1134
+ this.removeGroup(refGroup);
1135
+ }
1136
+ }
1137
+ selectedGroup.popoutGroup.dispose();
900
1138
  this._groups.delete(group.id);
901
1139
  this._onDidRemoveGroup.fire(group);
902
1140
  }
903
- selectedGroup.dispose();
1141
+ const removedGroup = selectedGroup.disposable.dispose();
1142
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
1143
+ this.doAddGroup(removedGroup, [0]);
1144
+ this.doSetGroupAndPanelActive(removedGroup);
1145
+ }
904
1146
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
905
1147
  const groups = Array.from(this._groups.values());
906
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1148
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
907
1149
  }
908
- return selectedGroup.group;
1150
+ this.updateWatermark();
1151
+ return selectedGroup.popoutGroup;
909
1152
  }
910
1153
  throw new Error('failed to find popout group');
911
1154
  }
912
- return super.doRemoveGroup(group, options);
1155
+ const re = super.doRemoveGroup(group, options);
1156
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {
1157
+ if (this.activePanel !== activePanel) {
1158
+ this._onDidActivePanelChange.fire(this.activePanel);
1159
+ }
1160
+ }
1161
+ return re;
913
1162
  }
914
- moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
915
- var _a, _b, _c;
1163
+ movingLock(func) {
1164
+ const isMoving = this._moving;
1165
+ try {
1166
+ this._moving = true;
1167
+ return func();
1168
+ }
1169
+ finally {
1170
+ this._moving = isMoving;
1171
+ }
1172
+ }
1173
+ moveGroupOrPanel(options) {
1174
+ var _a;
1175
+ const destinationGroup = options.to.group;
1176
+ const sourceGroupId = options.from.groupId;
1177
+ const sourceItemId = options.from.panelId;
1178
+ const destinationTarget = options.to.position;
1179
+ const destinationIndex = options.to.index;
916
1180
  const sourceGroup = sourceGroupId
917
1181
  ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
918
1182
  : undefined;
1183
+ if (!sourceGroup) {
1184
+ throw new Error(`Failed to find group id ${sourceGroupId}`);
1185
+ }
919
1186
  if (sourceItemId === undefined) {
920
- if (sourceGroup) {
921
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
922
- }
1187
+ /**
1188
+ * Moving an entire group into another group
1189
+ */
1190
+ this.moveGroup({
1191
+ from: { group: sourceGroup },
1192
+ to: {
1193
+ group: destinationGroup,
1194
+ position: destinationTarget,
1195
+ },
1196
+ });
923
1197
  return;
924
1198
  }
925
1199
  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) {
1200
+ /**
1201
+ * Dropping a panel within another group
1202
+ */
1203
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
1204
+ skipSetActive: false,
1205
+ skipSetActiveGroup: true,
1206
+ }));
1207
+ if (!removedPanel) {
928
1208
  throw new Error(`No panel with id ${sourceItemId}`);
929
1209
  }
930
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
931
- this.doRemoveGroup(sourceGroup);
1210
+ if (sourceGroup.model.size === 0) {
1211
+ // remove the group and do not set a new group as active
1212
+ this.doRemoveGroup(sourceGroup, { skipActive: true });
932
1213
  }
933
- destinationGroup.model.openPanel(groupItem, {
1214
+ this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
934
1215
  index: destinationIndex,
1216
+ skipSetGroupActive: true,
1217
+ }));
1218
+ this.doSetGroupAndPanelActive(destinationGroup);
1219
+ this._onDidMovePanel.fire({
1220
+ panel: removedPanel,
935
1221
  });
936
1222
  }
937
1223
  else {
1224
+ /**
1225
+ * Dropping a panel to the extremities of a group which will place that panel
1226
+ * into an adjacent group
1227
+ */
938
1228
  const referenceLocation = getGridLocation(destinationGroup.element);
939
1229
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
940
- if (sourceGroup && sourceGroup.size < 2) {
1230
+ if (sourceGroup.size < 2) {
1231
+ /**
1232
+ * If we are moving from a group which only has one panel left we will consider
1233
+ * moving the group itself rather than moving the panel into a newly created group
1234
+ */
941
1235
  const [targetParentLocation, to] = tail(targetLocation);
942
- if (sourceGroup.api.location === 'grid') {
1236
+ if (sourceGroup.api.location.type === 'grid') {
943
1237
  const sourceLocation = getGridLocation(sourceGroup.element);
944
1238
  const [sourceParentLocation, from] = tail(sourceLocation);
945
1239
  if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
@@ -947,78 +1241,123 @@ export class DockviewComponent extends BaseGrid {
947
1241
  // if a group has one tab - we are essentially moving the 'group'
948
1242
  // which is equivalent to swapping two views in this case
949
1243
  this.gridview.moveView(sourceParentLocation, from, to);
1244
+ return;
950
1245
  }
951
1246
  }
952
1247
  // source group will become empty so delete the group
953
- const targetGroup = this.doRemoveGroup(sourceGroup, {
1248
+ const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
954
1249
  skipActive: true,
955
1250
  skipDispose: true,
956
- });
1251
+ }));
957
1252
  // after deleting the group we need to re-evaulate the ref location
958
1253
  const updatedReferenceLocation = getGridLocation(destinationGroup.element);
959
1254
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
960
- this.doAddGroup(targetGroup, location);
1255
+ this.movingLock(() => this.doAddGroup(targetGroup, location));
1256
+ this.doSetGroupAndPanelActive(targetGroup);
961
1257
  }
962
1258
  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) {
1259
+ /**
1260
+ * The group we are removing from has many panels, we need to remove the panels we are moving,
1261
+ * create a new group, add the panels to that new group and add the new group in an appropiate position
1262
+ */
1263
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
1264
+ skipSetActive: false,
1265
+ skipSetActiveGroup: true,
1266
+ }));
1267
+ if (!removedPanel) {
965
1268
  throw new Error(`No panel with id ${sourceItemId}`);
966
1269
  }
967
1270
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
968
1271
  const group = this.createGroupAtLocation(dropLocation);
969
- group.model.openPanel(groupItem);
1272
+ this.movingLock(() => group.model.openPanel(removedPanel, {
1273
+ skipSetGroupActive: true,
1274
+ }));
1275
+ this.doSetGroupAndPanelActive(group);
970
1276
  }
971
1277
  }
972
1278
  }
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
- }
1279
+ moveGroup(options) {
1280
+ const from = options.from.group;
1281
+ const to = options.to.group;
1282
+ const target = options.to.position;
1283
+ if (target === 'center') {
1284
+ const activePanel = from.activePanel;
1285
+ const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {
1286
+ skipSetActive: true,
1287
+ })));
1288
+ if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {
1289
+ this.doRemoveGroup(from, { skipActive: true });
1290
+ }
1291
+ this.movingLock(() => {
981
1292
  for (const panel of panels) {
982
- referenceGroup.model.openPanel(panel, {
983
- skipSetPanelActive: panel !== activePanel,
1293
+ to.model.openPanel(panel, {
1294
+ skipSetActive: panel !== activePanel,
1295
+ skipSetGroupActive: true,
984
1296
  });
985
1297
  }
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;
1298
+ });
1299
+ this.doSetGroupAndPanelActive(to);
1300
+ panels.forEach((panel) => {
1301
+ this._onDidMovePanel.fire({ panel });
1302
+ });
1303
+ }
1304
+ else {
1305
+ switch (from.api.location.type) {
1306
+ case 'grid':
1307
+ this.gridview.removeView(getGridLocation(from.element));
1308
+ break;
1309
+ case 'floating': {
1310
+ const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);
1311
+ if (!selectedFloatingGroup) {
1312
+ throw new Error('failed to find floating group');
999
1313
  }
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();
1314
+ selectedFloatingGroup.dispose();
1315
+ break;
1316
+ }
1317
+ case 'popout': {
1318
+ const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);
1319
+ if (!selectedPopoutGroup) {
1320
+ throw new Error('failed to find popout group');
1006
1321
  }
1322
+ selectedPopoutGroup.disposable.dispose();
1007
1323
  }
1008
- const referenceLocation = getGridLocation(referenceGroup.element);
1009
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
1010
- this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);
1011
1324
  }
1325
+ const referenceLocation = getGridLocation(to.element);
1326
+ const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
1327
+ this.gridview.addView(from, Sizing.Distribute, dropLocation);
1328
+ from.panels.forEach((panel) => {
1329
+ this._onDidMovePanel.fire({ panel });
1330
+ });
1012
1331
  }
1013
1332
  }
1014
- doSetGroupAndPanelActive(group, skipFocus) {
1015
- var _a, _b;
1333
+ doSetGroupActive(group) {
1334
+ super.doSetGroupActive(group);
1016
1335
  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);
1336
+ if (!this._moving &&
1337
+ activePanel !== this._onDidActivePanelChange.value) {
1338
+ this._onDidActivePanelChange.fire(activePanel);
1339
+ }
1340
+ }
1341
+ doSetGroupAndPanelActive(group) {
1342
+ super.doSetGroupActive(group);
1343
+ const activePanel = this.activePanel;
1344
+ if (group &&
1345
+ this.hasMaximizedGroup() &&
1346
+ !this.isMaximizedGroup(group)) {
1347
+ this.exitMaximizedGroup();
1348
+ }
1349
+ if (!this._moving &&
1350
+ activePanel !== this._onDidActivePanelChange.value) {
1351
+ this._onDidActivePanelChange.fire(activePanel);
1020
1352
  }
1021
1353
  }
1354
+ getNextGroupId() {
1355
+ let id = this.nextGroupId.next();
1356
+ while (this._groups.has(id)) {
1357
+ id = this.nextGroupId.next();
1358
+ }
1359
+ return id;
1360
+ }
1022
1361
  createGroup(options) {
1023
1362
  if (!options) {
1024
1363
  options = {};
@@ -1035,7 +1374,7 @@ export class DockviewComponent extends BaseGrid {
1035
1374
  }
1036
1375
  }
1037
1376
  const view = new DockviewGroupPanel(this, id, options);
1038
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
1377
+ view.init({ params: {}, accessor: this });
1039
1378
  if (!this._groups.has(view.id)) {
1040
1379
  const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
1041
1380
  this._onWillDragPanel.fire(event);
@@ -1043,20 +1382,48 @@ export class DockviewComponent extends BaseGrid {
1043
1382
  this._onWillDragGroup.fire(event);
1044
1383
  }), view.model.onMove((event) => {
1045
1384
  const { groupId, itemId, target, index } = event;
1046
- this.moveGroupOrPanel(view, groupId, itemId, target, index);
1385
+ this.moveGroupOrPanel({
1386
+ from: { groupId: groupId, panelId: itemId },
1387
+ to: {
1388
+ group: view,
1389
+ position: target,
1390
+ index,
1391
+ },
1392
+ });
1047
1393
  }), view.model.onDidDrop((event) => {
1048
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
1394
+ this._onDidDrop.fire(event);
1395
+ }), view.model.onWillDrop((event) => {
1396
+ this._onWillDrop.fire(event);
1397
+ }), view.model.onWillShowOverlay((event) => {
1398
+ if (this.options.disableDnd) {
1399
+ event.preventDefault();
1400
+ return;
1401
+ }
1402
+ this._onWillShowOverlay.fire(event);
1049
1403
  }), view.model.onDidAddPanel((event) => {
1404
+ if (this._moving) {
1405
+ return;
1406
+ }
1050
1407
  this._onDidAddPanel.fire(event.panel);
1051
1408
  }), view.model.onDidRemovePanel((event) => {
1409
+ if (this._moving) {
1410
+ return;
1411
+ }
1052
1412
  this._onDidRemovePanel.fire(event.panel);
1053
1413
  }), view.model.onDidActivePanelChange((event) => {
1054
- this._onDidActivePanelChange.fire(event.panel);
1414
+ if (this._moving) {
1415
+ return;
1416
+ }
1417
+ if (event.panel !== this.activePanel) {
1418
+ return;
1419
+ }
1420
+ if (this._onDidActivePanelChange.value !== event.panel) {
1421
+ this._onDidActivePanelChange.fire(event.panel);
1422
+ }
1055
1423
  }));
1056
1424
  this._groups.set(view.id, { value: view, disposable });
1057
1425
  }
1058
- // TODO: must be called after the above listeners have been setup,
1059
- // not an ideal pattern
1426
+ // TODO: must be called after the above listeners have been setup, not an ideal pattern
1060
1427
  view.initialize();
1061
1428
  return view;
1062
1429
  }
@@ -1082,4 +1449,3 @@ export class DockviewComponent extends BaseGrid {
1082
1449
  return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;
1083
1450
  }
1084
1451
  }
1085
- //# sourceMappingURL=dockviewComponent.js.map