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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 1.9.2
3
+ * @version 1.10.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -31,7 +31,7 @@ function styleInject(css, ref) {
31
31
  }
32
32
  }
33
33
 
34
- var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit.dv-dockview {\n padding: 3px;\n}\n.dockview-theme-replit .view:has(> .groupview) {\n padding: 3px;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
34
+ var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-gap-size: 3px;\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n.dv-dockview .split-view-container.horizontal > .view-container > .view:not(:last-child) {\n border-right: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.horizontal > .view-container > .view:not(:first-child) {\n border-left: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.vertical > .view-container > .view:not(:last-child) {\n border-bottom: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.vertical > .view-container > .view:not(:first-child) {\n border-top: var(--dv-group-gap-size) solid transparent;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.dv-root-wrapper {\n height: 100%;\n width: 100%;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.dv-splitview-disabled > .sash-container > .sash {\n pointer-events: none;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
35
35
  styleInject(css_248z);
36
36
 
37
37
  class TransferObject {
@@ -116,6 +116,17 @@ var Event;
116
116
  };
117
117
  };
118
118
  })(Event || (Event = {}));
119
+ class DockviewEvent {
120
+ constructor() {
121
+ this._defaultPrevented = false;
122
+ }
123
+ get defaultPrevented() {
124
+ return this._defaultPrevented;
125
+ }
126
+ preventDefault() {
127
+ this._defaultPrevented = true;
128
+ }
129
+ }
119
130
  class LeakageMonitor {
120
131
  constructor() {
121
132
  this.events = new Map();
@@ -159,6 +170,9 @@ class Emitter {
159
170
  }
160
171
  Emitter.ENABLE_TRACKING = isEnabled;
161
172
  }
173
+ get value() {
174
+ return this._last;
175
+ }
162
176
  constructor(options) {
163
177
  this.options = options;
164
178
  this._listeners = [];
@@ -281,8 +295,12 @@ class CompositeDisposable {
281
295
  args.forEach((arg) => this._disposables.push(arg));
282
296
  }
283
297
  dispose() {
284
- this._disposables.forEach((arg) => arg.dispose());
298
+ if (this._isDisposed) {
299
+ return;
300
+ }
285
301
  this._isDisposed = true;
302
+ this._disposables.forEach((arg) => arg.dispose());
303
+ this._disposables = [];
286
304
  }
287
305
  }
288
306
  class MutableDisposable {
@@ -766,6 +784,13 @@ class Splitview {
766
784
  this._endSnappingEnabled = endSnappingEnabled;
767
785
  this.updateSashEnablement();
768
786
  }
787
+ get disabled() {
788
+ return this._disabled;
789
+ }
790
+ set disabled(value) {
791
+ this._disabled = value;
792
+ toggleClass(this.element, 'dv-splitview-disabled', value);
793
+ }
769
794
  constructor(container, options) {
770
795
  this.container = container;
771
796
  this.viewItems = [];
@@ -776,6 +801,7 @@ class Splitview {
776
801
  this._proportions = undefined;
777
802
  this._startSnappingEnabled = true;
778
803
  this._endSnappingEnabled = true;
804
+ this._disabled = false;
779
805
  this._onDidSashEnd = new Emitter();
780
806
  this.onDidSashEnd = this._onDidSashEnd.event;
781
807
  this._onDidAddView = new Emitter();
@@ -1703,7 +1729,13 @@ class BranchNode extends CompositeDisposable {
1703
1729
  }
1704
1730
  return LayoutPriority.Normal;
1705
1731
  }
1706
- constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {
1732
+ get disabled() {
1733
+ return this.splitview.disabled;
1734
+ }
1735
+ set disabled(value) {
1736
+ this.splitview.disabled = value;
1737
+ }
1738
+ constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {
1707
1739
  super();
1708
1740
  this.orientation = orientation;
1709
1741
  this.proportionalLayout = proportionalLayout;
@@ -1748,6 +1780,7 @@ class BranchNode extends CompositeDisposable {
1748
1780
  styles,
1749
1781
  });
1750
1782
  }
1783
+ this.disabled = disabled;
1751
1784
  this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
1752
1785
  this._onDidChange.fire({});
1753
1786
  }));
@@ -1881,7 +1914,7 @@ function findLeaf(candiateNode, last) {
1881
1914
  }
1882
1915
  function flipNode(node, size, orthogonalSize) {
1883
1916
  if (node instanceof BranchNode) {
1884
- const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
1917
+ const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);
1885
1918
  let totalSize = 0;
1886
1919
  for (let i = node.children.length - 1; i >= 0; i--) {
1887
1920
  const child = node.children[i];
@@ -2017,31 +2050,57 @@ class Gridview {
2017
2050
  get maximumHeight() {
2018
2051
  return this.root.maximumHeight;
2019
2052
  }
2053
+ get locked() {
2054
+ return this._locked;
2055
+ }
2056
+ set locked(value) {
2057
+ this._locked = value;
2058
+ const branch = [this.root];
2059
+ /**
2060
+ * simple depth-first-search to cover all nodes
2061
+ *
2062
+ * @see https://en.wikipedia.org/wiki/Depth-first_search
2063
+ */
2064
+ while (branch.length > 0) {
2065
+ const node = branch.pop();
2066
+ if (node instanceof BranchNode) {
2067
+ node.disabled = value;
2068
+ branch.push(...node.children);
2069
+ }
2070
+ }
2071
+ }
2020
2072
  maximizedView() {
2021
2073
  var _a;
2022
- return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
2074
+ return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;
2023
2075
  }
2024
2076
  hasMaximizedView() {
2025
2077
  return this._maximizedNode !== undefined;
2026
2078
  }
2027
2079
  maximizeView(view) {
2080
+ var _a;
2028
2081
  const location = getGridLocation(view.element);
2029
2082
  const [_, node] = this.getNode(location);
2030
2083
  if (!(node instanceof LeafNode)) {
2031
2084
  return;
2032
2085
  }
2033
- if (this._maximizedNode === node) {
2086
+ if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {
2034
2087
  return;
2035
2088
  }
2036
2089
  if (this.hasMaximizedView()) {
2037
2090
  this.exitMaximizedView();
2038
2091
  }
2092
+ const hiddenOnMaximize = [];
2039
2093
  function hideAllViewsBut(parent, exclude) {
2040
2094
  for (let i = 0; i < parent.children.length; i++) {
2041
2095
  const child = parent.children[i];
2042
2096
  if (child instanceof LeafNode) {
2043
2097
  if (child !== exclude) {
2044
- parent.setChildVisible(i, false);
2098
+ if (parent.isChildVisible(i)) {
2099
+ parent.setChildVisible(i, false);
2100
+ }
2101
+ else {
2102
+ hiddenOnMaximize.push(child);
2103
+ }
2045
2104
  }
2046
2105
  }
2047
2106
  else {
@@ -2050,18 +2109,21 @@ class Gridview {
2050
2109
  }
2051
2110
  }
2052
2111
  hideAllViewsBut(this.root, node);
2053
- this._maximizedNode = node;
2054
- this._onDidMaxmizedNodeChange.fire();
2112
+ this._maximizedNode = { leaf: node, hiddenOnMaximize };
2113
+ this._onDidMaximizedNodeChange.fire();
2055
2114
  }
2056
2115
  exitMaximizedView() {
2057
2116
  if (!this._maximizedNode) {
2058
2117
  return;
2059
2118
  }
2119
+ const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;
2060
2120
  function showViewsInReverseOrder(parent) {
2061
2121
  for (let index = parent.children.length - 1; index >= 0; index--) {
2062
2122
  const child = parent.children[index];
2063
2123
  if (child instanceof LeafNode) {
2064
- parent.setChildVisible(index, true);
2124
+ if (!hiddenOnMaximize.includes(child)) {
2125
+ parent.setChildVisible(index, true);
2126
+ }
2065
2127
  }
2066
2128
  else {
2067
2129
  showViewsInReverseOrder(child);
@@ -2070,13 +2132,13 @@ class Gridview {
2070
2132
  }
2071
2133
  showViewsInReverseOrder(this.root);
2072
2134
  this._maximizedNode = undefined;
2073
- this._onDidMaxmizedNodeChange.fire();
2135
+ this._onDidMaximizedNodeChange.fire();
2074
2136
  }
2075
2137
  serialize() {
2076
2138
  if (this.hasMaximizedView()) {
2077
2139
  /**
2078
- * do not persist maximized view state but we must first exit any maximized views
2079
- * before serialization to ensure the correct dimensions are persisted
2140
+ * do not persist maximized view state
2141
+ * firstly exit any maximized views to ensure the correct dimensions are persisted
2080
2142
  */
2081
2143
  this.exitMaximizedView();
2082
2144
  }
@@ -2091,14 +2153,14 @@ class Gridview {
2091
2153
  dispose() {
2092
2154
  this.disposable.dispose();
2093
2155
  this._onDidChange.dispose();
2094
- this._onDidMaxmizedNodeChange.dispose();
2156
+ this._onDidMaximizedNodeChange.dispose();
2095
2157
  this.root.dispose();
2096
2158
  this._maximizedNode = undefined;
2097
2159
  this.element.remove();
2098
2160
  }
2099
2161
  clear() {
2100
2162
  const orientation = this.root.orientation;
2101
- this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);
2163
+ this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);
2102
2164
  }
2103
2165
  deserialize(json, deserializer) {
2104
2166
  const orientation = json.orientation;
@@ -2119,8 +2181,8 @@ class Gridview {
2119
2181
  };
2120
2182
  });
2121
2183
  result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth
2122
- orthogonalSize, // <- size - flips at each depth
2123
- children);
2184
+ orthogonalSize, // <- size - flips at each depth,
2185
+ this._locked, children);
2124
2186
  }
2125
2187
  else {
2126
2188
  result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
@@ -2153,7 +2215,7 @@ class Gridview {
2153
2215
  }
2154
2216
  const oldRoot = this.root;
2155
2217
  oldRoot.element.remove();
2156
- this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);
2218
+ this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);
2157
2219
  if (oldRoot.children.length === 0) ;
2158
2220
  else if (oldRoot.children.length === 1) {
2159
2221
  // can remove one level of redundant branching if there is only a single child
@@ -2221,15 +2283,16 @@ class Gridview {
2221
2283
  constructor(proportionalLayout, styles, orientation) {
2222
2284
  this.proportionalLayout = proportionalLayout;
2223
2285
  this.styles = styles;
2286
+ this._locked = false;
2224
2287
  this._maximizedNode = undefined;
2225
2288
  this.disposable = new MutableDisposable();
2226
2289
  this._onDidChange = new Emitter();
2227
2290
  this.onDidChange = this._onDidChange.event;
2228
- this._onDidMaxmizedNodeChange = new Emitter();
2229
- this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
2291
+ this._onDidMaximizedNodeChange = new Emitter();
2292
+ this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2230
2293
  this.element = document.createElement('div');
2231
2294
  this.element.className = 'grid-view';
2232
- this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
2295
+ this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);
2233
2296
  }
2234
2297
  isViewVisible(location) {
2235
2298
  const [rest, index] = tail(location);
@@ -2280,7 +2343,7 @@ class Gridview {
2280
2343
  }
2281
2344
  const child = grandParent.removeChild(parentIndex);
2282
2345
  child.dispose();
2283
- const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);
2346
+ const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);
2284
2347
  grandParent.addChild(newParent, parent.size, parentIndex);
2285
2348
  const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);
2286
2349
  newParent.addChild(newSibling, newSiblingSize, 0);
@@ -2907,6 +2970,21 @@ class DockviewApi {
2907
2970
  get onDidDrop() {
2908
2971
  return this.component.onDidDrop;
2909
2972
  }
2973
+ /**
2974
+ * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and
2975
+ * prevent the event from occuring using the standard `preventDefault()` syntax.
2976
+ *
2977
+ * Preventing certain events may causes unexpected behaviours, use carefully.
2978
+ */
2979
+ get onWillDrop() {
2980
+ return this.component.onWillDrop;
2981
+ }
2982
+ /**
2983
+ *
2984
+ */
2985
+ get onWillShowOverlay() {
2986
+ return this.component.onWillShowOverlay;
2987
+ }
2910
2988
  /**
2911
2989
  * Invoked before a group is dragged. Exposed for custom Drag'n'Drop functionality.
2912
2990
  */
@@ -3042,17 +3120,17 @@ class DockviewApi {
3042
3120
  hasMaximizedGroup() {
3043
3121
  return this.component.hasMaximizedGroup();
3044
3122
  }
3045
- exitMaxmizedGroup() {
3123
+ exitMaximizedGroup() {
3046
3124
  this.component.exitMaximizedGroup();
3047
3125
  }
3048
- get onDidMaxmizedGroupChange() {
3049
- return this.component.onDidMaxmizedGroupChange;
3126
+ get onDidMaximizedGroupChange() {
3127
+ return this.component.onDidMaximizedGroupChange;
3050
3128
  }
3051
3129
  /**
3052
3130
  * Add a popout group in a new Window
3053
3131
  */
3054
3132
  addPopoutGroup(item, options) {
3055
- this.component.addPopoutGroup(item, options);
3133
+ return this.component.addPopoutGroup(item, options);
3056
3134
  }
3057
3135
  }
3058
3136
 
@@ -3106,6 +3184,18 @@ class DragAndDropObserver extends CompositeDisposable {
3106
3184
  }
3107
3185
  }
3108
3186
 
3187
+ class WillShowOverlayEvent extends DockviewEvent {
3188
+ get nativeEvent() {
3189
+ return this.options.nativeEvent;
3190
+ }
3191
+ get position() {
3192
+ return this.options.position;
3193
+ }
3194
+ constructor(options) {
3195
+ super();
3196
+ this.options = options;
3197
+ }
3198
+ }
3109
3199
  function directionToPosition(direction) {
3110
3200
  switch (direction) {
3111
3201
  case 'above':
@@ -3158,6 +3248,8 @@ class Droptarget extends CompositeDisposable {
3158
3248
  this.options = options;
3159
3249
  this._onDrop = new Emitter();
3160
3250
  this.onDrop = this._onDrop.event;
3251
+ this._onWillShowOverlay = new Emitter();
3252
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3161
3253
  // use a set to take advantage of #<set>.has
3162
3254
  this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
3163
3255
  this.dnd = new DragAndDropObserver(this.element, {
@@ -3186,6 +3278,19 @@ class Droptarget extends CompositeDisposable {
3186
3278
  this.removeDropTarget();
3187
3279
  return;
3188
3280
  }
3281
+ const willShowOverlayEvent = new WillShowOverlayEvent({
3282
+ nativeEvent: e,
3283
+ position: quadrant,
3284
+ });
3285
+ /**
3286
+ * Provide an opportunity to prevent the overlay appearing and in turn
3287
+ * any dnd behaviours
3288
+ */
3289
+ this._onWillShowOverlay.fire(willShowOverlayEvent);
3290
+ if (willShowOverlayEvent.defaultPrevented) {
3291
+ this.removeDropTarget();
3292
+ return;
3293
+ }
3189
3294
  if (typeof this.options.canDisplayOverlay === 'boolean') {
3190
3295
  if (!this.options.canDisplayOverlay) {
3191
3296
  this.removeDropTarget();
@@ -3228,7 +3333,7 @@ class Droptarget extends CompositeDisposable {
3228
3333
  }
3229
3334
  },
3230
3335
  });
3231
- this.addDisposables(this._onDrop, this.dnd);
3336
+ this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);
3232
3337
  }
3233
3338
  setTargetZones(acceptedTargetZones) {
3234
3339
  this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
@@ -3281,25 +3386,44 @@ class Droptarget extends CompositeDisposable {
3281
3386
  size = clamp(0, sizeOptions.value, height) / height;
3282
3387
  }
3283
3388
  }
3284
- const translate = (1 - size) / 2;
3285
- const scale = size;
3286
- let transform;
3389
+ const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
3390
+ /**
3391
+ * You can also achieve the overlay placement using the transform CSS property
3392
+ * to translate and scale the element however this has the undesired effect of
3393
+ * 'skewing' the element. Comment left here for anybody that ever revisits this.
3394
+ *
3395
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform
3396
+ *
3397
+ * right
3398
+ * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})
3399
+ *
3400
+ * left
3401
+ * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})
3402
+ *
3403
+ * top
3404
+ * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})
3405
+ *
3406
+ * bottom
3407
+ * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})
3408
+ */
3287
3409
  if (rightClass) {
3288
- transform = `translateX(${100 * translate}%) scaleX(${scale})`;
3410
+ box.left = `${100 * (1 - size)}%`;
3411
+ box.width = `${100 * size}%`;
3289
3412
  }
3290
3413
  else if (leftClass) {
3291
- transform = `translateX(-${100 * translate}%) scaleX(${scale})`;
3414
+ box.width = `${100 * size}%`;
3292
3415
  }
3293
3416
  else if (topClass) {
3294
- transform = `translateY(-${100 * translate}%) scaleY(${scale})`;
3417
+ box.height = `${100 * size}%`;
3295
3418
  }
3296
3419
  else if (bottomClass) {
3297
- transform = `translateY(${100 * translate}%) scaleY(${scale})`;
3298
- }
3299
- else {
3300
- transform = '';
3420
+ box.top = `${100 * (1 - size)}%`;
3421
+ box.height = `${100 * size}%`;
3301
3422
  }
3302
- this.overlayElement.style.transform = transform;
3423
+ this.overlayElement.style.top = box.top;
3424
+ this.overlayElement.style.left = box.left;
3425
+ this.overlayElement.style.width = box.width;
3426
+ this.overlayElement.style.height = box.height;
3303
3427
  toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
3304
3428
  toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
3305
3429
  toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
@@ -3367,14 +3491,6 @@ function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold)
3367
3491
  return 'center';
3368
3492
  }
3369
3493
 
3370
- var DockviewDropTargets;
3371
- (function (DockviewDropTargets) {
3372
- DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
3373
- DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
3374
- DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
3375
- DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
3376
- })(DockviewDropTargets || (DockviewDropTargets = {}));
3377
-
3378
3494
  class ContentContainer extends CompositeDisposable {
3379
3495
  get element() {
3380
3496
  return this._element;
@@ -3402,7 +3518,7 @@ class ContentContainer extends CompositeDisposable {
3402
3518
  const data = getPanelData();
3403
3519
  if (!data &&
3404
3520
  event.shiftKey &&
3405
- this.group.location !== 'floating') {
3521
+ this.group.location.type !== 'floating') {
3406
3522
  return false;
3407
3523
  }
3408
3524
  if (data && data.viewId === this.accessor.id) {
@@ -3420,7 +3536,7 @@ class ContentContainer extends CompositeDisposable {
3420
3536
  data.groupId === this.group.id;
3421
3537
  return !groupHasOnePanelAndIsActiveDragElement;
3422
3538
  }
3423
- return this.group.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
3539
+ return this.group.canDisplayOverlay(event, position, 'panel');
3424
3540
  },
3425
3541
  });
3426
3542
  this.addDisposables(this.dropTarget);
@@ -3445,7 +3561,7 @@ class ContentContainer extends CompositeDisposable {
3445
3561
  let container;
3446
3562
  switch (panel.api.renderer) {
3447
3563
  case 'onlyWhenVisibile':
3448
- this.accessor.overlayRenderContainer.detatch(panel);
3564
+ this.group.renderContainer.detatch(panel);
3449
3565
  if (this.panel) {
3450
3566
  if (doRender) {
3451
3567
  this._element.appendChild(this.panel.view.content.element);
@@ -3457,7 +3573,7 @@ class ContentContainer extends CompositeDisposable {
3457
3573
  if (panel.view.content.element.parentElement === this._element) {
3458
3574
  this._element.removeChild(panel.view.content.element);
3459
3575
  }
3460
- container = this.accessor.overlayRenderContainer.attach({
3576
+ container = this.group.renderContainer.attach({
3461
3577
  panel,
3462
3578
  referenceContainer: this,
3463
3579
  });
@@ -3488,9 +3604,10 @@ class ContentContainer extends CompositeDisposable {
3488
3604
  // noop
3489
3605
  }
3490
3606
  closePanel() {
3607
+ var _a;
3491
3608
  if (this.panel) {
3492
3609
  if (this.panel.api.renderer === 'onlyWhenVisibile') {
3493
- this._element.removeChild(this.panel.view.content.element);
3610
+ (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
3494
3611
  }
3495
3612
  }
3496
3613
  this.panel = undefined;
@@ -3601,7 +3718,7 @@ class Tab extends CompositeDisposable {
3601
3718
  this._element.draggable = true;
3602
3719
  toggleClass(this.element, 'inactive-tab', true);
3603
3720
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
3604
- this.droptarget = new Droptarget(this._element, {
3721
+ this.dropTarget = new Droptarget(this._element, {
3605
3722
  acceptedTargetZones: ['center'],
3606
3723
  canDisplayOverlay: (event, position) => {
3607
3724
  if (this.group.locked) {
@@ -3616,9 +3733,10 @@ class Tab extends CompositeDisposable {
3616
3733
  }
3617
3734
  return this.panel.id !== data.panelId;
3618
3735
  }
3619
- return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);
3736
+ return this.group.model.canDisplayOverlay(event, position, 'tab');
3620
3737
  },
3621
3738
  });
3739
+ this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
3622
3740
  this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
3623
3741
  this._onDragStart.fire(event);
3624
3742
  }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {
@@ -3626,9 +3744,9 @@ class Tab extends CompositeDisposable {
3626
3744
  return;
3627
3745
  }
3628
3746
  this._onChanged.fire(event);
3629
- }), this.droptarget.onDrop((event) => {
3747
+ }), this.dropTarget.onDrop((event) => {
3630
3748
  this._onDropped.fire(event);
3631
- }), this.droptarget);
3749
+ }), this.dropTarget);
3632
3750
  }
3633
3751
  setActive(isActive) {
3634
3752
  toggleClass(this.element, 'active-tab', isActive);
@@ -3675,7 +3793,7 @@ class GroupDragHandler extends DragHandler {
3675
3793
  }, true));
3676
3794
  }
3677
3795
  isCancelled(_event) {
3678
- if (this.group.api.location === 'floating' && !_event.shiftKey) {
3796
+ if (this.group.api.location.type === 'floating' && !_event.shiftKey) {
3679
3797
  return true;
3680
3798
  }
3681
3799
  return false;
@@ -3727,7 +3845,7 @@ class VoidContainer extends CompositeDisposable {
3727
3845
  this.accessor.doSetGroupActive(this.group);
3728
3846
  }));
3729
3847
  const handler = new GroupDragHandler(this._element, accessor, group);
3730
- this.voidDropTarget = new Droptarget(this._element, {
3848
+ this.dropTraget = new Droptarget(this._element, {
3731
3849
  acceptedTargetZones: ['center'],
3732
3850
  canDisplayOverlay: (event, position) => {
3733
3851
  var _a;
@@ -3741,14 +3859,15 @@ class VoidContainer extends CompositeDisposable {
3741
3859
  // don't show the overlay if the tab being dragged is the last panel of this group
3742
3860
  return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
3743
3861
  }
3744
- return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
3862
+ return group.model.canDisplayOverlay(event, position, 'panel');
3745
3863
  },
3746
3864
  });
3865
+ this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
3747
3866
  this.addDisposables(handler, handler.onDragStart((event) => {
3748
3867
  this._onDragStart.fire(event);
3749
- }), this.voidDropTarget.onDrop((event) => {
3868
+ }), this.dropTraget.onDrop((event) => {
3750
3869
  this._onDrop.fire(event);
3751
- }), this.voidDropTarget);
3870
+ }), this.dropTraget);
3752
3871
  }
3753
3872
  }
3754
3873
 
@@ -3836,19 +3955,11 @@ class TabsContainer extends CompositeDisposable {
3836
3955
  this.onTabDragStart = this._onTabDragStart.event;
3837
3956
  this._onGroupDragStart = new Emitter();
3838
3957
  this.onGroupDragStart = this._onGroupDragStart.event;
3839
- this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);
3958
+ this._onWillShowOverlay = new Emitter();
3959
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3840
3960
  this._element = document.createElement('div');
3841
3961
  this._element.className = 'tabs-and-actions-container';
3842
3962
  toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
3843
- this.addDisposables(this.accessor.onDidAddPanel((e) => {
3844
- if (e.api.group === this.group) {
3845
- toggleClass(this._element, 'dv-single-tab', this.size === 1);
3846
- }
3847
- }), this.accessor.onDidRemovePanel((e) => {
3848
- if (e.api.group === this.group) {
3849
- toggleClass(this._element, 'dv-single-tab', this.size === 1);
3850
- }
3851
- }));
3852
3963
  this.rightActionsContainer = document.createElement('div');
3853
3964
  this.rightActionsContainer.className = 'right-actions-container';
3854
3965
  this.leftActionsContainer = document.createElement('div');
@@ -3863,7 +3974,15 @@ class TabsContainer extends CompositeDisposable {
3863
3974
  this._element.appendChild(this.leftActionsContainer);
3864
3975
  this._element.appendChild(this.voidContainer.element);
3865
3976
  this._element.appendChild(this.rightActionsContainer);
3866
- this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {
3977
+ this.addDisposables(this.accessor.onDidAddPanel((e) => {
3978
+ if (e.api.group === this.group) {
3979
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
3980
+ }
3981
+ }), this.accessor.onDidRemovePanel((e) => {
3982
+ if (e.api.group === this.group) {
3983
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
3984
+ }
3985
+ }), this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
3867
3986
  this._onGroupDragStart.fire({
3868
3987
  nativeEvent: event,
3869
3988
  group: this.group,
@@ -3873,11 +3992,15 @@ class TabsContainer extends CompositeDisposable {
3873
3992
  event: event.nativeEvent,
3874
3993
  index: this.tabs.length,
3875
3994
  });
3995
+ }), this.voidContainer.onWillShowOverlay((event) => {
3996
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
3997
+ kind: 'header_space',
3998
+ }));
3876
3999
  }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {
3877
4000
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3878
4001
  if (isFloatingGroupsEnabled &&
3879
4002
  event.shiftKey &&
3880
- this.group.api.location !== 'floating') {
4003
+ this.group.api.location.type !== 'floating') {
3881
4004
  event.preventDefault();
3882
4005
  const { top, left } = this.element.getBoundingClientRect();
3883
4006
  const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
@@ -3940,9 +4063,9 @@ class TabsContainer extends CompositeDisposable {
3940
4063
  const disposable = new CompositeDisposable(tab.onDragStart((event) => {
3941
4064
  this._onTabDragStart.fire({ nativeEvent: event, panel });
3942
4065
  }), tab.onChanged((event) => {
3943
- var _a;
3944
4066
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3945
- const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
4067
+ const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
4068
+ this.size === 1;
3946
4069
  if (isFloatingGroupsEnabled &&
3947
4070
  !isFloatingWithOnePanel &&
3948
4071
  event.shiftKey) {
@@ -3956,20 +4079,20 @@ class TabsContainer extends CompositeDisposable {
3956
4079
  }, { inDragMode: true });
3957
4080
  return;
3958
4081
  }
3959
- const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&
3960
- this.group.model.isContentFocused;
3961
4082
  const isLeftClick = event.button === 0;
3962
4083
  if (!isLeftClick || event.defaultPrevented) {
3963
4084
  return;
3964
4085
  }
3965
- this.group.model.openPanel(panel, {
3966
- skipFocus: alreadyFocused,
3967
- });
4086
+ if (this.group.activePanel !== panel) {
4087
+ this.group.model.openPanel(panel);
4088
+ }
3968
4089
  }), tab.onDrop((event) => {
3969
4090
  this._onDrop.fire({
3970
4091
  event: event.nativeEvent,
3971
4092
  index: this.tabs.findIndex((x) => x.value === tab),
3972
4093
  });
4094
+ }), tab.onWillShowOverlay((event) => {
4095
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));
3973
4096
  }));
3974
4097
  const value = { value: tab, disposable };
3975
4098
  this.addTab(value, index);
@@ -3987,6 +4110,60 @@ class TabsContainer extends CompositeDisposable {
3987
4110
  }
3988
4111
  }
3989
4112
 
4113
+ class DockviewDidDropEvent extends DockviewEvent {
4114
+ get nativeEvent() {
4115
+ return this.options.nativeEvent;
4116
+ }
4117
+ get position() {
4118
+ return this.options.position;
4119
+ }
4120
+ get panel() {
4121
+ return this.options.panel;
4122
+ }
4123
+ get group() {
4124
+ return this.options.group;
4125
+ }
4126
+ get api() {
4127
+ return this.options.api;
4128
+ }
4129
+ constructor(options) {
4130
+ super();
4131
+ this.options = options;
4132
+ }
4133
+ getData() {
4134
+ return this.options.getData();
4135
+ }
4136
+ }
4137
+ class DockviewWillDropEvent extends DockviewDidDropEvent {
4138
+ get kind() {
4139
+ return this._kind;
4140
+ }
4141
+ constructor(options) {
4142
+ super(options);
4143
+ this._kind = options.kind;
4144
+ }
4145
+ }
4146
+ class WillShowOverlayLocationEvent {
4147
+ get kind() {
4148
+ return this._kind;
4149
+ }
4150
+ get nativeEvent() {
4151
+ return this.event.nativeEvent;
4152
+ }
4153
+ get position() {
4154
+ return this.event.position;
4155
+ }
4156
+ get defaultPrevented() {
4157
+ return this.event.defaultPrevented;
4158
+ }
4159
+ preventDefault() {
4160
+ this.event.preventDefault();
4161
+ }
4162
+ constructor(event, options) {
4163
+ this.event = event;
4164
+ this._kind = options.kind;
4165
+ }
4166
+ }
3990
4167
  class DockviewGroupPanelModel extends CompositeDisposable {
3991
4168
  get element() {
3992
4169
  throw new Error('not supported');
@@ -4032,7 +4209,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4032
4209
  this._location = value;
4033
4210
  toggleClass(this.container, 'dv-groupview-floating', false);
4034
4211
  toggleClass(this.container, 'dv-groupview-popout', false);
4035
- switch (value) {
4212
+ switch (value.type) {
4036
4213
  case 'grid':
4037
4214
  this.contentContainer.dropTarget.setTargetZones([
4038
4215
  'top',
@@ -4068,7 +4245,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4068
4245
  this.groupPanel = groupPanel;
4069
4246
  this._isGroupActive = false;
4070
4247
  this._locked = false;
4071
- this._location = 'grid';
4248
+ this._location = { type: 'grid' };
4072
4249
  this.mostRecentlyUsed = [];
4073
4250
  this._onDidChange = new Emitter();
4074
4251
  this.onDidChange = this._onDidChange.event;
@@ -4079,6 +4256,10 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4079
4256
  this.onMove = this._onMove.event;
4080
4257
  this._onDidDrop = new Emitter();
4081
4258
  this.onDidDrop = this._onDidDrop.event;
4259
+ this._onWillDrop = new Emitter();
4260
+ this.onWillDrop = this._onWillDrop.event;
4261
+ this._onWillShowOverlay = new Emitter();
4262
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
4082
4263
  this._onTabDragStart = new Emitter();
4083
4264
  this.onTabDragStart = this._onTabDragStart.event;
4084
4265
  this._onGroupDragStart = new Emitter();
@@ -4089,46 +4270,69 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4089
4270
  this.onDidRemovePanel = this._onDidRemovePanel.event;
4090
4271
  this._onDidActivePanelChange = new Emitter();
4091
4272
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
4273
+ this._overwriteRenderContainer = null;
4092
4274
  toggleClass(this.container, 'groupview', true);
4275
+ this._api = new DockviewApi(this.accessor);
4093
4276
  this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
4094
4277
  this.contentContainer = new ContentContainer(this.accessor, this);
4095
4278
  container.append(this.tabsContainer.element, this.contentContainer.element);
4096
4279
  this.header.hidden = !!options.hideHeader;
4097
4280
  this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
4098
- this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {
4281
+ this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {
4099
4282
  this._onTabDragStart.fire(event);
4100
4283
  }), this.tabsContainer.onGroupDragStart((event) => {
4101
4284
  this._onGroupDragStart.fire(event);
4102
4285
  }), this.tabsContainer.onDrop((event) => {
4103
- this.handleDropEvent(event.event, 'center', event.index);
4286
+ this.handleDropEvent('header', event.event, 'center', event.index);
4104
4287
  }), this.contentContainer.onDidFocus(() => {
4105
- this.accessor.doSetGroupActive(this.groupPanel, true);
4288
+ this.accessor.doSetGroupActive(this.groupPanel);
4106
4289
  }), this.contentContainer.onDidBlur(() => {
4107
4290
  // noop
4108
4291
  }), this.contentContainer.dropTarget.onDrop((event) => {
4109
- this.handleDropEvent(event.nativeEvent, event.position);
4110
- }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
4292
+ this.handleDropEvent('content', event.nativeEvent, event.position);
4293
+ }), this.tabsContainer.onWillShowOverlay((event) => {
4294
+ this._onWillShowOverlay.fire(event);
4295
+ }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
4296
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
4297
+ kind: 'content',
4298
+ }));
4299
+ }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
4300
+ }
4301
+ focusContent() {
4302
+ this.contentContainer.element.focus();
4303
+ }
4304
+ set renderContainer(value) {
4305
+ this.panels.forEach((panel) => {
4306
+ this.renderContainer.detatch(panel);
4307
+ });
4308
+ this._overwriteRenderContainer = value;
4309
+ this.panels.forEach((panel) => {
4310
+ this.rerender(panel);
4311
+ });
4312
+ }
4313
+ get renderContainer() {
4314
+ var _a;
4315
+ return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
4111
4316
  }
4112
4317
  initialize() {
4113
- var _a, _b;
4114
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
4318
+ if (this.options.panels) {
4115
4319
  this.options.panels.forEach((panel) => {
4116
4320
  this.doAddPanel(panel);
4117
4321
  });
4118
4322
  }
4119
- if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {
4323
+ if (this.options.activePanel) {
4120
4324
  this.openPanel(this.options.activePanel);
4121
4325
  }
4122
4326
  // must be run after the constructor otherwise this.parent may not be
4123
4327
  // correctly initialized
4124
- this.setActive(this.isActive, true, true);
4328
+ this.setActive(this.isActive, true);
4125
4329
  this.updateContainer();
4126
4330
  if (this.accessor.options.createRightHeaderActionsElement) {
4127
4331
  this._rightHeaderActions =
4128
4332
  this.accessor.options.createRightHeaderActionsElement(this.groupPanel);
4129
4333
  this.addDisposables(this._rightHeaderActions);
4130
4334
  this._rightHeaderActions.init({
4131
- containerApi: new DockviewApi(this.accessor),
4335
+ containerApi: this._api,
4132
4336
  api: this.groupPanel.api,
4133
4337
  });
4134
4338
  this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);
@@ -4138,7 +4342,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4138
4342
  this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);
4139
4343
  this.addDisposables(this._leftHeaderActions);
4140
4344
  this._leftHeaderActions.init({
4141
- containerApi: new DockviewApi(this.accessor),
4345
+ containerApi: this._api,
4142
4346
  api: this.groupPanel.api,
4143
4347
  });
4144
4348
  this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);
@@ -4148,7 +4352,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4148
4352
  this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);
4149
4353
  this.addDisposables(this._prefixHeaderActions);
4150
4354
  this._prefixHeaderActions.init({
4151
- containerApi: new DockviewApi(this.accessor),
4355
+ containerApi: this._api,
4152
4356
  api: this.groupPanel.api,
4153
4357
  });
4154
4358
  this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
@@ -4228,35 +4432,45 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4228
4432
  //noop
4229
4433
  }
4230
4434
  focus() {
4231
- var _a, _b;
4232
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4435
+ var _a;
4436
+ (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
4233
4437
  }
4234
4438
  openPanel(panel, options = {}) {
4439
+ /**
4440
+ * set the panel group
4441
+ * add the panel
4442
+ * check if group active
4443
+ * check if panel active
4444
+ */
4235
4445
  if (typeof options.index !== 'number' ||
4236
4446
  options.index > this.panels.length) {
4237
4447
  options.index = this.panels.length;
4238
4448
  }
4239
- const skipSetPanelActive = !!options.skipSetPanelActive;
4240
- const skipSetGroupActive = !!options.skipSetGroupActive;
4449
+ const skipSetActive = !!options.skipSetActive;
4241
4450
  // ensure the group is updated before we fire any events
4242
- panel.updateParentGroup(this.groupPanel, true);
4451
+ panel.updateParentGroup(this.groupPanel, {
4452
+ skipSetActive: options.skipSetActive,
4453
+ });
4454
+ this.doAddPanel(panel, options.index, {
4455
+ skipSetActive: skipSetActive,
4456
+ });
4243
4457
  if (this._activePanel === panel) {
4244
- if (!skipSetGroupActive) {
4245
- this.accessor.doSetGroupActive(this.groupPanel);
4246
- }
4247
4458
  this.contentContainer.renderPanel(panel, { asActive: true });
4248
4459
  return;
4249
4460
  }
4250
- this.doAddPanel(panel, options.index, skipSetPanelActive);
4251
- if (!skipSetPanelActive) {
4461
+ if (!skipSetActive) {
4252
4462
  this.doSetActivePanel(panel);
4253
4463
  }
4254
- if (!skipSetGroupActive) {
4255
- this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);
4464
+ if (!options.skipSetGroupActive) {
4465
+ this.accessor.doSetGroupActive(this.groupPanel);
4466
+ }
4467
+ if (!options.skipSetActive) {
4468
+ this.updateContainer();
4256
4469
  }
4257
- this.updateContainer();
4258
4470
  }
4259
- removePanel(groupItemOrId) {
4471
+ removePanel(groupItemOrId, options = {
4472
+ skipSetActive: false,
4473
+ }) {
4260
4474
  const id = typeof groupItemOrId === 'string'
4261
4475
  ? groupItemOrId
4262
4476
  : groupItemOrId.id;
@@ -4264,7 +4478,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4264
4478
  if (!panelToRemove) {
4265
4479
  throw new Error('invalid operation');
4266
4480
  }
4267
- return this._removePanel(panelToRemove);
4481
+ return this._removePanel(panelToRemove, options);
4268
4482
  }
4269
4483
  closeAllPanels() {
4270
4484
  if (this.panels.length > 0) {
@@ -4290,12 +4504,8 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4290
4504
  updateActions(element) {
4291
4505
  this.tabsContainer.setRightActionsElement(element);
4292
4506
  }
4293
- setActive(isGroupActive, skipFocus = false, force = false) {
4294
- var _a, _b, _c, _d;
4507
+ setActive(isGroupActive, force = false) {
4295
4508
  if (!force && this.isActive === isGroupActive) {
4296
- if (!skipFocus) {
4297
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4298
- }
4299
4509
  return;
4300
4510
  }
4301
4511
  this._isGroupActive = isGroupActive;
@@ -4306,11 +4516,6 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4306
4516
  this.doSetActivePanel(this.panels[0]);
4307
4517
  }
4308
4518
  this.updateContainer();
4309
- if (isGroupActive) {
4310
- if (!skipFocus) {
4311
- (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);
4312
- }
4313
- }
4314
4519
  }
4315
4520
  layout(width, height) {
4316
4521
  var _a;
@@ -4321,17 +4526,22 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4321
4526
  this._activePanel.layout(this._width, this._height);
4322
4527
  }
4323
4528
  }
4324
- _removePanel(panel) {
4529
+ _removePanel(panel, options) {
4325
4530
  const isActivePanel = this._activePanel === panel;
4326
4531
  this.doRemovePanel(panel);
4327
4532
  if (isActivePanel && this.panels.length > 0) {
4328
4533
  const nextPanel = this.mostRecentlyUsed[0];
4329
- this.openPanel(nextPanel);
4534
+ this.openPanel(nextPanel, {
4535
+ skipSetActive: options.skipSetActive,
4536
+ skipSetGroupActive: options.skipSetActiveGroup,
4537
+ });
4330
4538
  }
4331
4539
  if (this._activePanel && this.panels.length === 0) {
4332
4540
  this.doSetActivePanel(undefined);
4333
4541
  }
4334
- this.updateContainer();
4542
+ if (!options.skipSetActive) {
4543
+ this.updateContainer();
4544
+ }
4335
4545
  return panel;
4336
4546
  }
4337
4547
  doRemovePanel(panel) {
@@ -4346,13 +4556,13 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4346
4556
  }
4347
4557
  this._onDidRemovePanel.fire({ panel });
4348
4558
  }
4349
- doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
4559
+ doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
4350
4560
  const existingPanel = this._panels.indexOf(panel);
4351
4561
  const hasExistingPanel = existingPanel > -1;
4352
4562
  this.tabsContainer.show();
4353
4563
  this.contentContainer.show();
4354
4564
  this.tabsContainer.openPanel(panel, index);
4355
- if (!skipSetActive) {
4565
+ if (!options.skipSetActive) {
4356
4566
  this.contentContainer.openPanel(panel);
4357
4567
  }
4358
4568
  if (hasExistingPanel) {
@@ -4364,12 +4574,17 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4364
4574
  this._onDidAddPanel.fire({ panel });
4365
4575
  }
4366
4576
  doSetActivePanel(panel) {
4577
+ if (this._activePanel === panel) {
4578
+ return;
4579
+ }
4367
4580
  this._activePanel = panel;
4368
4581
  if (panel) {
4369
4582
  this.tabsContainer.setActivePanel(panel);
4370
4583
  panel.layout(this._width, this._height);
4371
4584
  this.updateMru(panel);
4372
- this._onDidActivePanelChange.fire({ panel });
4585
+ this._onDidActivePanelChange.fire({
4586
+ panel,
4587
+ });
4373
4588
  }
4374
4589
  }
4375
4590
  updateMru(panel) {
@@ -4381,11 +4596,11 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4381
4596
  updateContainer() {
4382
4597
  var _a, _b;
4383
4598
  toggleClass(this.container, 'empty', this.isEmpty);
4384
- this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));
4599
+ this.panels.forEach((panel) => panel.runEvents());
4385
4600
  if (this.isEmpty && !this.watermark) {
4386
4601
  const watermark = this.accessor.createWatermarkComponent();
4387
4602
  watermark.init({
4388
- containerApi: new DockviewApi(this.accessor),
4603
+ containerApi: this._api,
4389
4604
  group: this.groupPanel,
4390
4605
  });
4391
4606
  this.watermark = watermark;
@@ -4418,10 +4633,32 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4418
4633
  }
4419
4634
  return false;
4420
4635
  }
4421
- handleDropEvent(event, position, index) {
4636
+ handleDropEvent(type, event, position, index) {
4422
4637
  if (this.locked === 'no-drop-target') {
4423
4638
  return;
4424
4639
  }
4640
+ function getKind() {
4641
+ switch (type) {
4642
+ case 'header':
4643
+ return typeof index === 'number' ? 'tab' : 'header_space';
4644
+ case 'content':
4645
+ return 'content';
4646
+ }
4647
+ }
4648
+ const panel = typeof index === 'number' ? this.panels[index] : undefined;
4649
+ const willDropEvent = new DockviewWillDropEvent({
4650
+ nativeEvent: event,
4651
+ position,
4652
+ panel,
4653
+ getData: () => getPanelData(),
4654
+ kind: getKind(),
4655
+ group: this.groupPanel,
4656
+ api: this._api,
4657
+ });
4658
+ this._onWillDrop.fire(willDropEvent);
4659
+ if (willDropEvent.defaultPrevented) {
4660
+ return;
4661
+ }
4425
4662
  const data = getPanelData();
4426
4663
  if (data && data.viewId === this.accessor.id) {
4427
4664
  if (data.panelId === null) {
@@ -4454,12 +4691,14 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4454
4691
  });
4455
4692
  }
4456
4693
  else {
4457
- this._onDidDrop.fire({
4694
+ this._onDidDrop.fire(new DockviewDidDropEvent({
4458
4695
  nativeEvent: event,
4459
4696
  position,
4460
- index,
4697
+ panel,
4461
4698
  getData: () => getPanelData(),
4462
- });
4699
+ group: this.groupPanel,
4700
+ api: this._api,
4701
+ }));
4463
4702
  }
4464
4703
  }
4465
4704
  dispose() {
@@ -4467,6 +4706,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4467
4706
  super.dispose();
4468
4707
  (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();
4469
4708
  (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);
4709
+ this.watermark = undefined;
4470
4710
  for (const panel of this.panels) {
4471
4711
  panel.dispose();
4472
4712
  }
@@ -4488,15 +4728,7 @@ class Resizable extends CompositeDisposable {
4488
4728
  constructor(parentElement, disableResizing = false) {
4489
4729
  super();
4490
4730
  this._disableResizing = disableResizing;
4491
- if (parentElement) {
4492
- this._element = parentElement;
4493
- }
4494
- else {
4495
- this._element = document.createElement('div');
4496
- this._element.style.height = '100%';
4497
- this._element.style.width = '100%';
4498
- this._element.className = 'dv-resizable-container';
4499
- }
4731
+ this._element = parentElement;
4500
4732
  this.addDisposables(watchElementResize(this._element, (entry) => {
4501
4733
  if (this.isDisposed) {
4502
4734
  /**
@@ -4584,25 +4816,38 @@ class BaseGrid extends Resizable {
4584
4816
  get activeGroup() {
4585
4817
  return this._activeGroup;
4586
4818
  }
4819
+ get locked() {
4820
+ return this.gridview.locked;
4821
+ }
4822
+ set locked(value) {
4823
+ this.gridview.locked = value;
4824
+ }
4587
4825
  constructor(options) {
4588
- super(options.parentElement, options.disableAutoResizing);
4826
+ super(document.createElement('div'), options.disableAutoResizing);
4589
4827
  this._id = nextLayoutId$1.next();
4590
4828
  this._groups = new Map();
4591
4829
  this._onDidLayoutChange = new Emitter();
4592
4830
  this.onDidLayoutChange = this._onDidLayoutChange.event;
4593
- this._onDidRemoveGroup = new Emitter();
4594
- this.onDidRemoveGroup = this._onDidRemoveGroup.event;
4595
- this._onDidAddGroup = new Emitter();
4596
- this.onDidAddGroup = this._onDidAddGroup.event;
4597
- this._onDidActiveGroupChange = new Emitter();
4598
- this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
4831
+ this._onDidRemove = new Emitter();
4832
+ this.onDidRemove = this._onDidRemove.event;
4833
+ this._onDidAdd = new Emitter();
4834
+ this.onDidAdd = this._onDidAdd.event;
4835
+ this._onDidActiveChange = new Emitter();
4836
+ this.onDidActiveChange = this._onDidActiveChange.event;
4599
4837
  this._bufferOnDidLayoutChange = new TickDelayedEvent();
4838
+ this.element.style.height = '100%';
4839
+ this.element.style.width = '100%';
4840
+ options.parentElement.appendChild(this.element);
4600
4841
  this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
4842
+ this.gridview.locked = !!options.locked;
4601
4843
  this.element.appendChild(this.gridview.element);
4602
4844
  this.layout(0, 0, true); // set some elements height/widths
4603
- this.addDisposables(this.gridview.onDidChange(() => {
4845
+ this.addDisposables(Disposable.from(() => {
4846
+ var _a;
4847
+ (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);
4848
+ }), this.gridview.onDidChange(() => {
4604
4849
  this._bufferOnDidLayoutChange.fire();
4605
- }), Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
4850
+ }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {
4606
4851
  this._bufferOnDidLayoutChange.fire();
4607
4852
  }), this._bufferOnDidLayoutChange.onEvent(() => {
4608
4853
  this._onDidLayoutChange.fire();
@@ -4617,6 +4862,7 @@ class BaseGrid extends Resizable {
4617
4862
  }
4618
4863
  maximizeGroup(panel) {
4619
4864
  this.gridview.maximizeView(panel);
4865
+ this.doSetGroupActive(panel);
4620
4866
  }
4621
4867
  isMaximizedGroup(panel) {
4622
4868
  return this.gridview.maximizedView() === panel;
@@ -4627,13 +4873,12 @@ class BaseGrid extends Resizable {
4627
4873
  hasMaximizedGroup() {
4628
4874
  return this.gridview.hasMaximizedView();
4629
4875
  }
4630
- get onDidMaxmizedGroupChange() {
4631
- return this.gridview.onDidMaxmizedNodeChange;
4876
+ get onDidMaximizedGroupChange() {
4877
+ return this.gridview.onDidMaximizedNodeChange;
4632
4878
  }
4633
4879
  doAddGroup(group, location = [0], size) {
4634
4880
  this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
4635
- this._onDidAddGroup.fire(group);
4636
- this.doSetGroupActive(group);
4881
+ this._onDidAdd.fire(group);
4637
4882
  }
4638
4883
  doRemoveGroup(group, options) {
4639
4884
  if (!this._groups.has(group.id)) {
@@ -4645,8 +4890,8 @@ class BaseGrid extends Resizable {
4645
4890
  item.disposable.dispose();
4646
4891
  item.value.dispose();
4647
4892
  this._groups.delete(group.id);
4893
+ this._onDidRemove.fire(group);
4648
4894
  }
4649
- this._onDidRemoveGroup.fire(group);
4650
4895
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
4651
4896
  const groups = Array.from(this._groups.values());
4652
4897
  this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
@@ -4657,25 +4902,18 @@ class BaseGrid extends Resizable {
4657
4902
  var _a;
4658
4903
  return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
4659
4904
  }
4660
- doSetGroupActive(group, skipFocus) {
4661
- var _a, _b, _c;
4905
+ doSetGroupActive(group) {
4662
4906
  if (this._activeGroup === group) {
4663
4907
  return;
4664
4908
  }
4665
4909
  if (this._activeGroup) {
4666
4910
  this._activeGroup.setActive(false);
4667
- if (!skipFocus) {
4668
- (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4669
- }
4670
4911
  }
4671
4912
  if (group) {
4672
4913
  group.setActive(true);
4673
- if (!skipFocus) {
4674
- (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);
4675
- }
4676
4914
  }
4677
4915
  this._activeGroup = group;
4678
- this._onDidActiveGroupChange.fire(group);
4916
+ this._onDidActiveChange.fire(group);
4679
4917
  }
4680
4918
  removeGroup(group) {
4681
4919
  this.doRemoveGroup(group);
@@ -4720,9 +4958,9 @@ class BaseGrid extends Resizable {
4720
4958
  this.gridview.layout(width, height);
4721
4959
  }
4722
4960
  dispose() {
4723
- this._onDidActiveGroupChange.dispose();
4724
- this._onDidAddGroup.dispose();
4725
- this._onDidRemoveGroup.dispose();
4961
+ this._onDidActiveChange.dispose();
4962
+ this._onDidAdd.dispose();
4963
+ this._onDidRemove.dispose();
4726
4964
  this._onDidLayoutChange.dispose();
4727
4965
  for (const group of this.groups) {
4728
4966
  group.dispose();
@@ -4732,11 +4970,15 @@ class BaseGrid extends Resizable {
4732
4970
  }
4733
4971
  }
4734
4972
 
4973
+ class WillFocusEvent extends DockviewEvent {
4974
+ constructor() {
4975
+ super();
4976
+ }
4977
+ }
4735
4978
  /**
4736
4979
  * A core api implementation that should be used across all panel-like objects
4737
4980
  */
4738
4981
  class PanelApiImpl extends CompositeDisposable {
4739
- //
4740
4982
  get isFocused() {
4741
4983
  return this._isFocused;
4742
4984
  }
@@ -4746,6 +4988,9 @@ class PanelApiImpl extends CompositeDisposable {
4746
4988
  get isVisible() {
4747
4989
  return this._isVisible;
4748
4990
  }
4991
+ get isHidden() {
4992
+ return this._isHidden;
4993
+ }
4749
4994
  get width() {
4750
4995
  return this._width;
4751
4996
  }
@@ -4758,38 +5003,26 @@ class PanelApiImpl extends CompositeDisposable {
4758
5003
  this._isFocused = false;
4759
5004
  this._isActive = false;
4760
5005
  this._isVisible = true;
5006
+ this._isHidden = false;
4761
5007
  this._width = 0;
4762
5008
  this._height = 0;
4763
5009
  this.panelUpdatesDisposable = new MutableDisposable();
4764
- this._onDidDimensionChange = new Emitter({
4765
- replay: true,
4766
- });
5010
+ this._onDidDimensionChange = new Emitter();
4767
5011
  this.onDidDimensionsChange = this._onDidDimensionChange.event;
4768
- //
4769
- this._onDidChangeFocus = new Emitter({
4770
- replay: true,
4771
- });
5012
+ this._onDidChangeFocus = new Emitter();
4772
5013
  this.onDidFocusChange = this._onDidChangeFocus.event;
4773
5014
  //
4774
- this._onFocusEvent = new Emitter();
4775
- this.onFocusEvent = this._onFocusEvent.event;
5015
+ this._onWillFocus = new Emitter();
5016
+ this.onWillFocus = this._onWillFocus.event;
4776
5017
  //
4777
- this._onDidVisibilityChange = new Emitter({
4778
- replay: true,
4779
- });
5018
+ this._onDidVisibilityChange = new Emitter();
4780
5019
  this.onDidVisibilityChange = this._onDidVisibilityChange.event;
4781
- //
4782
- this._onVisibilityChange = new Emitter();
4783
- this.onVisibilityChange = this._onVisibilityChange.event;
4784
- //
4785
- this._onDidActiveChange = new Emitter({
4786
- replay: true,
4787
- });
5020
+ this._onDidHiddenChange = new Emitter();
5021
+ this.onDidHiddenChange = this._onDidHiddenChange.event;
5022
+ this._onDidActiveChange = new Emitter();
4788
5023
  this.onDidActiveChange = this._onDidActiveChange.event;
4789
- //
4790
5024
  this._onActiveChange = new Emitter();
4791
5025
  this.onActiveChange = this._onActiveChange.event;
4792
- //
4793
5026
  this._onUpdateParameters = new Emitter();
4794
5027
  this.onUpdateParameters = this._onUpdateParameters.event;
4795
5028
  this.addDisposables(this.onDidFocusChange((event) => {
@@ -4798,10 +5031,12 @@ class PanelApiImpl extends CompositeDisposable {
4798
5031
  this._isActive = event.isActive;
4799
5032
  }), this.onDidVisibilityChange((event) => {
4800
5033
  this._isVisible = event.isVisible;
5034
+ }), this.onDidHiddenChange((event) => {
5035
+ this._isHidden = event.isHidden;
4801
5036
  }), this.onDidDimensionsChange((event) => {
4802
5037
  this._width = event.width;
4803
5038
  this._height = event.height;
4804
- }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);
5039
+ }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onDidHiddenChange, this._onUpdateParameters);
4805
5040
  }
4806
5041
  initialize(panel) {
4807
5042
  this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
@@ -4810,8 +5045,8 @@ class PanelApiImpl extends CompositeDisposable {
4810
5045
  });
4811
5046
  });
4812
5047
  }
4813
- setVisible(isVisible) {
4814
- this._onVisibilityChange.fire({ isVisible });
5048
+ setHidden(isHidden) {
5049
+ this._onDidHiddenChange.fire({ isHidden });
4815
5050
  }
4816
5051
  setActive() {
4817
5052
  this._onActiveChange.fire();
@@ -4819,9 +5054,6 @@ class PanelApiImpl extends CompositeDisposable {
4819
5054
  updateParameters(parameters) {
4820
5055
  this._onUpdateParameters.fire(parameters);
4821
5056
  }
4822
- dispose() {
4823
- super.dispose();
4824
- }
4825
5057
  }
4826
5058
 
4827
5059
  class SplitviewPanelApiImpl extends PanelApiImpl {
@@ -4909,7 +5141,12 @@ class BasePanelView extends CompositeDisposable {
4909
5141
  }), focusTracker);
4910
5142
  }
4911
5143
  focus() {
4912
- this.api._onFocusEvent.fire();
5144
+ const event = new WillFocusEvent();
5145
+ this.api._onWillFocus.fire(event);
5146
+ if (event.defaultPrevented) {
5147
+ return;
5148
+ }
5149
+ this._element.focus();
4913
5150
  }
4914
5151
  layout(width, height) {
4915
5152
  this._width = width;
@@ -5238,9 +5475,7 @@ class GridviewPanelApiImpl extends PanelApiImpl {
5238
5475
  super(id);
5239
5476
  this._onDidConstraintsChangeInternal = new Emitter();
5240
5477
  this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
5241
- this._onDidConstraintsChange = new Emitter({
5242
- replay: true,
5243
- });
5478
+ this._onDidConstraintsChange = new Emitter();
5244
5479
  this.onDidConstraintsChange = this._onDidConstraintsChange.event;
5245
5480
  this._onDidSizeChange = new Emitter();
5246
5481
  this.onDidSizeChange = this._onDidSizeChange.event;
@@ -5333,13 +5568,13 @@ class GridviewPanel extends BasePanelView {
5333
5568
  this._maximumHeight = options.maximumHeight;
5334
5569
  }
5335
5570
  this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
5336
- this.addDisposables(this.api.onVisibilityChange((event) => {
5337
- const { isVisible } = event;
5571
+ this.addDisposables(this.api.onDidHiddenChange((event) => {
5572
+ const { isHidden } = event;
5338
5573
  const { accessor } = this._params;
5339
- accessor.setVisible(this, isVisible);
5574
+ accessor.setVisible(this, !isHidden);
5340
5575
  }), this.api.onActiveChange(() => {
5341
5576
  const { accessor } = this._params;
5342
- accessor.setActive(this);
5577
+ accessor.doSetGroupActive(this);
5343
5578
  }), this.api.onDidConstraintsChangeInternal((event) => {
5344
5579
  if (typeof event.minimumWidth === 'number' ||
5345
5580
  typeof event.minimumWidth === 'function') {
@@ -5422,6 +5657,17 @@ class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
5422
5657
  this.onDidLocationChange = this._onDidLocationChange.event;
5423
5658
  this.addDisposables(this._onDidLocationChange);
5424
5659
  }
5660
+ close() {
5661
+ if (!this._group) {
5662
+ return;
5663
+ }
5664
+ return this.accessor.removeGroup(this._group);
5665
+ }
5666
+ getWindow() {
5667
+ return this.location.type === 'popout'
5668
+ ? this.location.getWindow()
5669
+ : window;
5670
+ }
5425
5671
  moveTo(options) {
5426
5672
  var _a, _b, _c;
5427
5673
  if (!this._group) {
@@ -5429,14 +5675,23 @@ class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
5429
5675
  }
5430
5676
  const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
5431
5677
  direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
5678
+ skipSetActive: true,
5679
+ });
5680
+ this.accessor.moveGroupOrPanel({
5681
+ from: { groupId: this._group.id },
5682
+ to: {
5683
+ group,
5684
+ position: options.group
5685
+ ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
5686
+ : 'center',
5687
+ },
5432
5688
  });
5433
- this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
5434
5689
  }
5435
5690
  maximize() {
5436
5691
  if (!this._group) {
5437
5692
  throw new Error(NOT_INITIALIZED_MESSAGE);
5438
5693
  }
5439
- if (this.location !== 'grid') {
5694
+ if (this.location.type !== 'grid') {
5440
5695
  // only grid groups can be maximized
5441
5696
  return;
5442
5697
  }
@@ -5493,6 +5748,12 @@ class DockviewGroupPanel extends GridviewPanel {
5493
5748
  this.api.initialize(this); // cannot use 'this' after after 'super' call
5494
5749
  this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
5495
5750
  }
5751
+ focus() {
5752
+ if (!this.api.isActive) {
5753
+ this.api.setActive();
5754
+ }
5755
+ super.focus();
5756
+ }
5496
5757
  initialize() {
5497
5758
  this._model.initialize();
5498
5759
  }
@@ -5538,6 +5799,9 @@ function isGroupOptionsWithGroup(data) {
5538
5799
  }
5539
5800
 
5540
5801
  class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5802
+ get location() {
5803
+ return this.group.api.location;
5804
+ }
5541
5805
  get title() {
5542
5806
  return this.panel.title;
5543
5807
  }
@@ -5549,15 +5813,34 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5549
5813
  }
5550
5814
  set group(value) {
5551
5815
  const isOldGroupActive = this.isGroupActive;
5552
- this._group = value;
5553
- this._onDidGroupChange.fire();
5554
- if (this._group) {
5555
- this.disposable.value = this._group.api.onDidActiveChange(() => {
5556
- this._onDidActiveGroupChange.fire();
5816
+ if (this._group !== value) {
5817
+ this._group = value;
5818
+ this._onDidGroupChange.fire({});
5819
+ let _trackGroupActive = isOldGroupActive; // prevent duplicate events with same state
5820
+ this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidLocationChange((event) => {
5821
+ if (this.group !== this.panel.group) {
5822
+ return;
5823
+ }
5824
+ this._onDidLocationChange.fire(event);
5825
+ }), this.group.api.onDidActiveChange(() => {
5826
+ if (this.group !== this.panel.group) {
5827
+ return;
5828
+ }
5829
+ if (_trackGroupActive !== this.isGroupActive) {
5830
+ _trackGroupActive = this.isGroupActive;
5831
+ this._onDidActiveGroupChange.fire({
5832
+ isActive: this.isGroupActive,
5833
+ });
5834
+ }
5835
+ }));
5836
+ // if (this.isGroupActive !== isOldGroupActive) {
5837
+ // this._onDidActiveGroupChange.fire({
5838
+ // isActive: this.isGroupActive,
5839
+ // });
5840
+ // }
5841
+ this._onDidLocationChange.fire({
5842
+ location: this.group.api.location,
5557
5843
  });
5558
- if (this.isGroupActive !== isOldGroupActive) {
5559
- this._onDidActiveGroupChange.fire();
5560
- }
5561
5844
  }
5562
5845
  }
5563
5846
  get group() {
@@ -5575,14 +5858,26 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5575
5858
  this.onDidGroupChange = this._onDidGroupChange.event;
5576
5859
  this._onDidRendererChange = new Emitter();
5577
5860
  this.onDidRendererChange = this._onDidRendererChange.event;
5578
- this.disposable = new MutableDisposable();
5861
+ this._onDidLocationChange = new Emitter();
5862
+ this.onDidLocationChange = this._onDidLocationChange.event;
5863
+ this.groupEventsDisposable = new MutableDisposable();
5579
5864
  this.initialize(panel);
5580
5865
  this._group = group;
5581
- this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
5866
+ this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);
5867
+ }
5868
+ getWindow() {
5869
+ return this.group.api.getWindow();
5582
5870
  }
5583
5871
  moveTo(options) {
5584
5872
  var _a;
5585
- this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);
5873
+ this.accessor.moveGroupOrPanel({
5874
+ from: { groupId: this._group.id, panelId: this.panel.id },
5875
+ to: {
5876
+ group: options.group,
5877
+ position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
5878
+ index: options.index,
5879
+ },
5880
+ });
5586
5881
  }
5587
5882
  setTitle(title) {
5588
5883
  this.panel.setTitle(title);
@@ -5643,7 +5938,14 @@ class DockviewPanel extends CompositeDisposable {
5643
5938
  this.setTitle(params.title);
5644
5939
  }
5645
5940
  focus() {
5646
- this.api._onFocusEvent.fire();
5941
+ const event = new WillFocusEvent();
5942
+ this.api._onWillFocus.fire(event);
5943
+ if (event.defaultPrevented) {
5944
+ return;
5945
+ }
5946
+ if (!this.api.isActive) {
5947
+ this.api.setActive();
5948
+ }
5647
5949
  }
5648
5950
  toJSON() {
5649
5951
  return {
@@ -5700,20 +6002,40 @@ class DockviewPanel extends CompositeDisposable {
5700
6002
  },
5701
6003
  });
5702
6004
  }
5703
- updateParentGroup(group, isGroupActive) {
6005
+ updateParentGroup(group, options) {
5704
6006
  this._group = group;
5705
- this.api.group = group;
6007
+ this.api.group = this._group;
5706
6008
  const isPanelVisible = this._group.model.isPanelActive(this);
5707
- this.api._onDidActiveChange.fire({
5708
- isActive: isGroupActive && isPanelVisible,
5709
- });
5710
- this.api._onDidVisibilityChange.fire({
5711
- isVisible: isPanelVisible,
5712
- });
5713
- this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));
6009
+ const isActive = this.group.api.isActive && isPanelVisible;
6010
+ if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {
6011
+ if (this.api.isActive !== isActive) {
6012
+ this.api._onDidActiveChange.fire({
6013
+ isActive: this.group.api.isActive && isPanelVisible,
6014
+ });
6015
+ }
6016
+ }
6017
+ if (this.api.isVisible !== isPanelVisible) {
6018
+ this.api._onDidVisibilityChange.fire({
6019
+ isVisible: isPanelVisible,
6020
+ });
6021
+ }
6022
+ }
6023
+ runEvents() {
6024
+ const isPanelVisible = this._group.model.isPanelActive(this);
6025
+ const isActive = this.group.api.isActive && isPanelVisible;
6026
+ if (this.api.isActive !== isActive) {
6027
+ this.api._onDidActiveChange.fire({
6028
+ isActive: this.group.api.isActive && isPanelVisible,
6029
+ });
6030
+ }
6031
+ if (this.api.isVisible !== isPanelVisible) {
6032
+ this.api._onDidVisibilityChange.fire({
6033
+ isVisible: isPanelVisible,
6034
+ });
6035
+ }
5714
6036
  }
5715
6037
  layout(width, height) {
5716
- // the obtain the correct dimensions of the content panel we must deduct the tab height
6038
+ // TODO: Can we somehow do height without header height or indicate what the header height is?
5717
6039
  this.api._onDidDimensionChange.fire({
5718
6040
  width,
5719
6041
  height: height,
@@ -5835,8 +6157,6 @@ class DockviewPanelModel {
5835
6157
  this.id = id;
5836
6158
  this.contentComponent = contentComponent;
5837
6159
  this.tabComponent = tabComponent;
5838
- this._group = null;
5839
- this._isPanelVisible = null;
5840
6160
  this._content = this.createContentComponent(this.id, contentComponent);
5841
6161
  this._tab = this.createTabComponent(this.id, tabComponent);
5842
6162
  }
@@ -5844,25 +6164,8 @@ class DockviewPanelModel {
5844
6164
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
5845
6165
  this.tab.init(params);
5846
6166
  }
5847
- updateParentGroup(group, isPanelVisible) {
5848
- if (group !== this._group) {
5849
- this._group = group;
5850
- if (this._content.onGroupChange) {
5851
- this._content.onGroupChange(group);
5852
- }
5853
- if (this._tab.onGroupChange) {
5854
- this._tab.onGroupChange(group);
5855
- }
5856
- }
5857
- if (isPanelVisible !== this._isPanelVisible) {
5858
- this._isPanelVisible = isPanelVisible;
5859
- if (this._content.onPanelVisibleChange) {
5860
- this._content.onPanelVisibleChange(isPanelVisible);
5861
- }
5862
- if (this._tab.onPanelVisibleChange) {
5863
- this._tab.onPanelVisibleChange(isPanelVisible);
5864
- }
5865
- }
6167
+ updateParentGroup(_group, _isPanelVisible) {
6168
+ // noop
5866
6169
  }
5867
6170
  layout(width, height) {
5868
6171
  var _a, _b;
@@ -6295,117 +6598,6 @@ class DockviewFloatingGroupPanel extends CompositeDisposable {
6295
6598
  }
6296
6599
  }
6297
6600
 
6298
- class PopoutWindow extends CompositeDisposable {
6299
- constructor(id, className, options) {
6300
- super();
6301
- this.id = id;
6302
- this.className = className;
6303
- this.options = options;
6304
- this._onDidClose = new Emitter();
6305
- this.onDidClose = this._onDidClose.event;
6306
- this._window = null;
6307
- this.addDisposables(this._onDidClose, {
6308
- dispose: () => {
6309
- this.close();
6310
- },
6311
- });
6312
- }
6313
- dimensions() {
6314
- if (!this._window) {
6315
- return null;
6316
- }
6317
- const left = this._window.value.screenX;
6318
- const top = this._window.value.screenY;
6319
- const width = this._window.value.innerWidth;
6320
- const height = this._window.value.innerHeight;
6321
- return { top, left, width, height };
6322
- }
6323
- close() {
6324
- if (this._window) {
6325
- this._window.disposable.dispose();
6326
- this._window.value.close();
6327
- this._window = null;
6328
- }
6329
- }
6330
- open(content) {
6331
- if (this._window) {
6332
- throw new Error('instance of popout window is already open');
6333
- }
6334
- const url = `${this.options.url}`;
6335
- const features = Object.entries({
6336
- top: this.options.top,
6337
- left: this.options.left,
6338
- width: this.options.width,
6339
- height: this.options.height,
6340
- })
6341
- .map(([key, value]) => `${key}=${value}`)
6342
- .join(',');
6343
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6344
- const externalWindow = window.open(url, this.id, features);
6345
- if (!externalWindow) {
6346
- return;
6347
- }
6348
- const disposable = new CompositeDisposable();
6349
- this._window = { value: externalWindow, disposable };
6350
- const cleanUp = () => {
6351
- this._onDidClose.fire();
6352
- this._window = null;
6353
- };
6354
- // prevent any default content from loading
6355
- // externalWindow.document.body.replaceWith(document.createElement('div'));
6356
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6357
- cleanUp();
6358
- this.close();
6359
- }));
6360
- externalWindow.addEventListener('load', () => {
6361
- const externalDocument = externalWindow.document;
6362
- externalDocument.title = document.title;
6363
- const div = document.createElement('div');
6364
- div.classList.add('dv-popout-window');
6365
- div.style.position = 'absolute';
6366
- div.style.width = '100%';
6367
- div.style.height = '100%';
6368
- div.style.top = '0px';
6369
- div.style.left = '0px';
6370
- div.classList.add(this.className);
6371
- div.appendChild(content);
6372
- externalDocument.body.replaceChildren(div);
6373
- externalDocument.body.classList.add(this.className);
6374
- addStyles(externalDocument, window.document.styleSheets);
6375
- externalWindow.addEventListener('beforeunload', () => {
6376
- // TODO: indicate external window is closing
6377
- cleanUp();
6378
- });
6379
- });
6380
- }
6381
- }
6382
-
6383
- class DockviewPopoutGroupPanel extends CompositeDisposable {
6384
- constructor(id, group, options) {
6385
- var _a;
6386
- super();
6387
- this.id = id;
6388
- this.group = group;
6389
- this.options = options;
6390
- this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
6391
- url: this.options.popoutUrl,
6392
- left: this.options.box.left,
6393
- top: this.options.box.top,
6394
- width: this.options.box.width,
6395
- height: this.options.box.height,
6396
- });
6397
- group.model.location = 'popout';
6398
- this.addDisposables(this.window, {
6399
- dispose: () => {
6400
- group.model.location = 'grid';
6401
- },
6402
- }, this.window.onDidClose(() => {
6403
- this.dispose();
6404
- }));
6405
- this.window.open(group.element);
6406
- }
6407
- }
6408
-
6409
6601
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6410
6602
  const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6411
6603
 
@@ -6419,11 +6611,13 @@ class OverlayRenderContainer extends CompositeDisposable {
6419
6611
  super();
6420
6612
  this.element = element;
6421
6613
  this.map = {};
6614
+ this._disposed = false;
6422
6615
  this.addDisposables(Disposable.from(() => {
6423
6616
  for (const value of Object.values(this.map)) {
6424
6617
  value.disposable.dispose();
6425
6618
  value.destroy.dispose();
6426
6619
  }
6620
+ this._disposed = true;
6427
6621
  }));
6428
6622
  }
6429
6623
  detatch(panel) {
@@ -6463,7 +6657,7 @@ class OverlayRenderContainer extends CompositeDisposable {
6463
6657
  focusContainer.style.top = `${box.top - box2.top}px`;
6464
6658
  focusContainer.style.width = `${box.width}px`;
6465
6659
  focusContainer.style.height = `${box.height}px`;
6466
- toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
6660
+ toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
6467
6661
  };
6468
6662
  const visibilityChanged = () => {
6469
6663
  if (panel.api.isVisible) {
@@ -6509,8 +6703,11 @@ class OverlayRenderContainer extends CompositeDisposable {
6509
6703
  resize();
6510
6704
  }));
6511
6705
  this.map[panel.api.id].destroy = Disposable.from(() => {
6512
- focusContainer.removeChild(panel.view.content.element);
6513
- this.element.removeChild(focusContainer);
6706
+ var _a;
6707
+ if (panel.view.content.element.parentElement === focusContainer) {
6708
+ focusContainer.removeChild(panel.view.content.element);
6709
+ }
6710
+ (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);
6514
6711
  });
6515
6712
  queueMicrotask(() => {
6516
6713
  if (this.isDisposed) {
@@ -6531,11 +6728,187 @@ class OverlayRenderContainer extends CompositeDisposable {
6531
6728
  }
6532
6729
  }
6533
6730
 
6731
+ /******************************************************************************
6732
+ Copyright (c) Microsoft Corporation.
6733
+
6734
+ Permission to use, copy, modify, and/or distribute this software for any
6735
+ purpose with or without fee is hereby granted.
6736
+
6737
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6738
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6739
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6740
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6741
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6742
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6743
+ PERFORMANCE OF THIS SOFTWARE.
6744
+ ***************************************************************************** */
6745
+ /* global Reflect, Promise, SuppressedError, Symbol */
6746
+
6747
+
6748
+ function __awaiter(thisArg, _arguments, P, generator) {
6749
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6750
+ return new (P || (P = Promise))(function (resolve, reject) {
6751
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6752
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6753
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
6754
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
6755
+ });
6756
+ }
6757
+
6758
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
6759
+ var e = new Error(message);
6760
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
6761
+ };
6762
+
6763
+ class PopoutWindow extends CompositeDisposable {
6764
+ get window() {
6765
+ var _a, _b;
6766
+ return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
6767
+ }
6768
+ constructor(target, className, options) {
6769
+ super();
6770
+ this.target = target;
6771
+ this.className = className;
6772
+ this.options = options;
6773
+ this._onWillClose = new Emitter();
6774
+ this.onWillClose = this._onWillClose.event;
6775
+ this._onDidClose = new Emitter();
6776
+ this.onDidClose = this._onDidClose.event;
6777
+ this._window = null;
6778
+ this.addDisposables(this._onWillClose, this._onDidClose, {
6779
+ dispose: () => {
6780
+ this.close();
6781
+ },
6782
+ });
6783
+ }
6784
+ dimensions() {
6785
+ if (!this._window) {
6786
+ return null;
6787
+ }
6788
+ const left = this._window.value.screenX;
6789
+ const top = this._window.value.screenY;
6790
+ const width = this._window.value.innerWidth;
6791
+ const height = this._window.value.innerHeight;
6792
+ return { top, left, width, height };
6793
+ }
6794
+ close() {
6795
+ var _a, _b;
6796
+ if (this._window) {
6797
+ this._onWillClose.fire();
6798
+ (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {
6799
+ id: this.target,
6800
+ window: this._window.value,
6801
+ });
6802
+ this._window.disposable.dispose();
6803
+ this._window.value.close();
6804
+ this._window = null;
6805
+ this._onDidClose.fire();
6806
+ }
6807
+ }
6808
+ open() {
6809
+ var _a, _b;
6810
+ return __awaiter(this, void 0, void 0, function* () {
6811
+ if (this._window) {
6812
+ throw new Error('instance of popout window is already open');
6813
+ }
6814
+ const url = `${this.options.url}`;
6815
+ const features = Object.entries({
6816
+ top: this.options.top,
6817
+ left: this.options.left,
6818
+ width: this.options.width,
6819
+ height: this.options.height,
6820
+ })
6821
+ .map(([key, value]) => `${key}=${value}`)
6822
+ .join(',');
6823
+ /**
6824
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6825
+ */
6826
+ const externalWindow = window.open(url, this.target, features);
6827
+ if (!externalWindow) {
6828
+ /**
6829
+ * Popup blocked
6830
+ */
6831
+ return null;
6832
+ }
6833
+ const disposable = new CompositeDisposable();
6834
+ this._window = { value: externalWindow, disposable };
6835
+ disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6836
+ /**
6837
+ * before the main window closes we should close this popup too
6838
+ * to be good citizens
6839
+ *
6840
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6841
+ */
6842
+ this.close();
6843
+ }));
6844
+ const container = this.createPopoutWindowContainer();
6845
+ if (this.className) {
6846
+ container.classList.add(this.className);
6847
+ }
6848
+ (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {
6849
+ id: this.target,
6850
+ window: externalWindow,
6851
+ });
6852
+ return new Promise((resolve) => {
6853
+ externalWindow.addEventListener('unload', (e) => {
6854
+ // if page fails to load before unloading
6855
+ // this.close();
6856
+ });
6857
+ externalWindow.addEventListener('load', () => {
6858
+ /**
6859
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
6860
+ */
6861
+ const externalDocument = externalWindow.document;
6862
+ externalDocument.title = document.title;
6863
+ externalDocument.body.appendChild(container);
6864
+ addStyles(externalDocument, window.document.styleSheets);
6865
+ /**
6866
+ * beforeunload must be registered after load for reasons I could not determine
6867
+ * otherwise the beforeunload event will not fire when the window is closed
6868
+ */
6869
+ addDisposableWindowListener(externalWindow, 'beforeunload', () => {
6870
+ /**
6871
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6872
+ */
6873
+ this.close();
6874
+ });
6875
+ resolve(container);
6876
+ });
6877
+ });
6878
+ });
6879
+ }
6880
+ createPopoutWindowContainer() {
6881
+ const el = document.createElement('div');
6882
+ el.classList.add('dv-popout-window');
6883
+ el.id = 'dv-popout-window';
6884
+ el.style.position = 'absolute';
6885
+ el.style.width = '100%';
6886
+ el.style.height = '100%';
6887
+ el.style.top = '0px';
6888
+ el.style.left = '0px';
6889
+ return el;
6890
+ }
6891
+ }
6892
+
6534
6893
  const DEFAULT_ROOT_OVERLAY_MODEL = {
6535
6894
  activationSize: { type: 'pixels', value: 10 },
6536
6895
  size: { type: 'pixels', value: 20 },
6537
6896
  };
6538
- function getTheme(element) {
6897
+ function moveGroupWithoutDestroying(options) {
6898
+ const activePanel = options.from.activePanel;
6899
+ const panels = [...options.from.panels].map((panel) => {
6900
+ const removedPanel = options.from.model.removePanel(panel);
6901
+ options.from.model.renderContainer.detatch(panel);
6902
+ return removedPanel;
6903
+ });
6904
+ panels.forEach((panel) => {
6905
+ options.to.model.openPanel(panel, {
6906
+ skipSetActive: activePanel !== panel,
6907
+ skipSetGroupActive: true,
6908
+ });
6909
+ });
6910
+ }
6911
+ function getDockviewTheme(element) {
6539
6912
  function toClassList(element) {
6540
6913
  const list = [];
6541
6914
  for (let i = 0; i < element.classList.length; i++) {
@@ -6586,6 +6959,7 @@ class DockviewComponent extends BaseGrid {
6586
6959
  styles: options.styles,
6587
6960
  parentElement: options.parentElement,
6588
6961
  disableAutoResizing: options.disableAutoResizing,
6962
+ locked: options.locked,
6589
6963
  });
6590
6964
  this.nextGroupId = sequentialNumberGenerator();
6591
6965
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -6596,6 +6970,10 @@ class DockviewComponent extends BaseGrid {
6596
6970
  this.onWillDragGroup = this._onWillDragGroup.event;
6597
6971
  this._onDidDrop = new Emitter();
6598
6972
  this.onDidDrop = this._onDidDrop.event;
6973
+ this._onWillDrop = new Emitter();
6974
+ this.onWillDrop = this._onWillDrop.event;
6975
+ this._onWillShowOverlay = new Emitter();
6976
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
6599
6977
  this._onDidRemovePanel = new Emitter();
6600
6978
  this.onDidRemovePanel = this._onDidRemovePanel.event;
6601
6979
  this._onDidAddPanel = new Emitter();
@@ -6604,15 +6982,36 @@ class DockviewComponent extends BaseGrid {
6604
6982
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
6605
6983
  this._onDidActivePanelChange = new Emitter();
6606
6984
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
6985
+ this._onDidMovePanel = new Emitter();
6607
6986
  this._floatingGroups = [];
6608
6987
  this._popoutGroups = [];
6988
+ this._ignoreEvents = 0;
6989
+ this._onDidRemoveGroup = new Emitter();
6990
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
6991
+ this._onDidAddGroup = new Emitter();
6992
+ this.onDidAddGroup = this._onDidAddGroup.event;
6993
+ this._onDidActiveGroupChange = new Emitter();
6994
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
6995
+ this._moving = false;
6609
6996
  const gready = document.createElement('div');
6610
6997
  gready.className = 'dv-overlay-render-container';
6611
6998
  this.gridview.element.appendChild(gready);
6612
6999
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
6613
7000
  toggleClass(this.gridview.element, 'dv-dockview', true);
6614
7001
  toggleClass(this.element, 'dv-debug', !!options.debug);
6615
- this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
7002
+ 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) => {
7003
+ if (!this._moving) {
7004
+ this._onDidAddGroup.fire(event);
7005
+ }
7006
+ }), this.onDidRemove((event) => {
7007
+ if (!this._moving) {
7008
+ this._onDidRemoveGroup.fire(event);
7009
+ }
7010
+ }), this.onDidActiveChange((event) => {
7011
+ if (!this._moving) {
7012
+ this._onDidActiveGroupChange.fire(event);
7013
+ }
7014
+ }), Event.any(this.onDidAdd, this.onDidRemove)(() => {
6616
7015
  this.updateWatermark();
6617
7016
  }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
6618
7017
  this._bufferOnDidLayoutChange.fire();
@@ -6623,7 +7022,7 @@ class DockviewComponent extends BaseGrid {
6623
7022
  }
6624
7023
  // iterate over a copy of the array since .dispose() mutates the original array
6625
7024
  for (const group of [...this._popoutGroups]) {
6626
- group.dispose();
7025
+ group.disposable.dispose();
6627
7026
  }
6628
7027
  }));
6629
7028
  this._options = options;
@@ -6669,7 +7068,7 @@ class DockviewComponent extends BaseGrid {
6669
7068
  return this.options.showDndOverlay({
6670
7069
  nativeEvent: event,
6671
7070
  position: position,
6672
- target: DockviewDropTargets.Edge,
7071
+ target: 'edge',
6673
7072
  getData: getPanelData,
6674
7073
  });
6675
7074
  }
@@ -6680,86 +7079,249 @@ class DockviewComponent extends BaseGrid {
6680
7079
  });
6681
7080
  this.addDisposables(this._rootDropTarget.onDrop((event) => {
6682
7081
  var _a;
7082
+ const willDropEvent = new DockviewWillDropEvent({
7083
+ nativeEvent: event.nativeEvent,
7084
+ position: event.position,
7085
+ panel: undefined,
7086
+ api: this._api,
7087
+ group: undefined,
7088
+ getData: getPanelData,
7089
+ kind: 'content',
7090
+ });
7091
+ this._onWillDrop.fire(willDropEvent);
7092
+ if (willDropEvent.defaultPrevented) {
7093
+ return;
7094
+ }
6683
7095
  const data = getPanelData();
6684
7096
  if (data) {
6685
- this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined, 'center');
7097
+ this.moveGroupOrPanel({
7098
+ from: {
7099
+ groupId: data.groupId,
7100
+ panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,
7101
+ },
7102
+ to: {
7103
+ group: this.orthogonalize(event.position),
7104
+ position: 'center',
7105
+ },
7106
+ });
6686
7107
  }
6687
7108
  else {
6688
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
7109
+ this._onDidDrop.fire(new DockviewDidDropEvent({
7110
+ nativeEvent: event.nativeEvent,
7111
+ position: event.position,
7112
+ panel: undefined,
7113
+ api: this._api,
7114
+ group: undefined,
7115
+ getData: getPanelData,
7116
+ }));
6689
7117
  }
6690
7118
  }), this._rootDropTarget);
6691
7119
  this._api = new DockviewApi(this);
6692
7120
  this.updateWatermark();
6693
7121
  }
6694
- addPopoutGroup(item, options) {
6695
- var _a;
6696
- let group;
6697
- let box = options === null || options === void 0 ? void 0 : options.position;
6698
- if (item instanceof DockviewPanel) {
6699
- group = this.createGroup();
6700
- this.removePanel(item, {
6701
- removeEmptyGroup: true,
6702
- skipDispose: true,
6703
- });
6704
- group.model.openPanel(item);
6705
- if (!box) {
6706
- box = this.element.getBoundingClientRect();
7122
+ addPopoutGroup(itemToPopout, options) {
7123
+ var _a, _b, _c;
7124
+ if (itemToPopout instanceof DockviewPanel &&
7125
+ itemToPopout.group.size === 1) {
7126
+ return this.addPopoutGroup(itemToPopout.group);
7127
+ }
7128
+ const theme = getDockviewTheme(this.gridview.element);
7129
+ const element = this.element;
7130
+ function getBox() {
7131
+ if (options === null || options === void 0 ? void 0 : options.position) {
7132
+ return options.position;
7133
+ }
7134
+ if (itemToPopout instanceof DockviewGroupPanel) {
7135
+ return itemToPopout.element.getBoundingClientRect();
7136
+ }
7137
+ if (itemToPopout.group) {
7138
+ return itemToPopout.group.element.getBoundingClientRect();
7139
+ }
7140
+ return element.getBoundingClientRect();
7141
+ }
7142
+ const box = getBox();
7143
+ 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;
7144
+ if (itemToPopout.api.location.type === 'grid') {
7145
+ itemToPopout.api.setHidden(true);
7146
+ }
7147
+ const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7148
+ theme !== null && theme !== void 0 ? theme : '', {
7149
+ url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
7150
+ left: window.screenX + box.left,
7151
+ top: window.screenY + box.top,
7152
+ width: box.width,
7153
+ height: box.height,
7154
+ onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
7155
+ onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
7156
+ });
7157
+ const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {
7158
+ popoutWindowDisposable.dispose();
7159
+ }));
7160
+ return _window
7161
+ .open()
7162
+ .then((popoutContainer) => {
7163
+ var _a;
7164
+ if (_window.isDisposed) {
7165
+ return;
6707
7166
  }
6708
- }
6709
- else {
6710
- group = item;
6711
- if (!box) {
6712
- box = group.element.getBoundingClientRect();
7167
+ if (popoutContainer === null) {
7168
+ popoutWindowDisposable.dispose();
7169
+ return;
6713
7170
  }
6714
- const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6715
- options.skipRemoveGroup;
6716
- if (!skip) {
6717
- this.doRemoveGroup(item, { skipDispose: true });
6718
- }
6719
- }
6720
- const theme = getTheme(this.gridview.element);
6721
- const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
6722
- group, {
6723
- className: theme !== null && theme !== void 0 ? theme : '',
6724
- popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
6725
- box: {
6726
- left: window.screenX + box.left,
6727
- top: window.screenY + box.top,
6728
- width: box.width,
6729
- height: box.height,
6730
- },
7171
+ const gready = document.createElement('div');
7172
+ gready.className = 'dv-overlay-render-container';
7173
+ const overlayRenderContainer = new OverlayRenderContainer(gready);
7174
+ const referenceGroup = itemToPopout instanceof DockviewPanel
7175
+ ? itemToPopout.group
7176
+ : itemToPopout;
7177
+ const referenceLocation = itemToPopout.api.location.type;
7178
+ const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
7179
+ group.model.renderContainer = overlayRenderContainer;
7180
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
7181
+ this._onDidAddGroup.fire(group);
7182
+ }
7183
+ if (itemToPopout instanceof DockviewPanel) {
7184
+ this.movingLock(() => {
7185
+ const panel = referenceGroup.model.removePanel(itemToPopout);
7186
+ group.model.openPanel(panel);
7187
+ });
7188
+ }
7189
+ else {
7190
+ this.movingLock(() => moveGroupWithoutDestroying({
7191
+ from: referenceGroup,
7192
+ to: group,
7193
+ }));
7194
+ switch (referenceLocation) {
7195
+ case 'grid':
7196
+ referenceGroup.api.setHidden(true);
7197
+ break;
7198
+ case 'floating':
7199
+ case 'popout':
7200
+ this.removeGroup(referenceGroup);
7201
+ break;
7202
+ }
7203
+ }
7204
+ popoutContainer.classList.add('dv-dockview');
7205
+ popoutContainer.style.overflow = 'hidden';
7206
+ popoutContainer.appendChild(gready);
7207
+ popoutContainer.appendChild(group.element);
7208
+ group.model.location = {
7209
+ type: 'popout',
7210
+ getWindow: () => _window.window,
7211
+ };
7212
+ this.doSetGroupAndPanelActive(group);
7213
+ popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
7214
+ var _a;
7215
+ if (event.isActive) {
7216
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7217
+ }
7218
+ }), group.api.onWillFocus(() => {
7219
+ var _a;
7220
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7221
+ }));
7222
+ let returnedGroup;
7223
+ const value = {
7224
+ window: _window,
7225
+ popoutGroup: group,
7226
+ referenceGroup: this.getPanel(referenceGroup.id)
7227
+ ? referenceGroup.id
7228
+ : undefined,
7229
+ disposable: {
7230
+ dispose: () => {
7231
+ popoutWindowDisposable.dispose();
7232
+ return returnedGroup;
7233
+ },
7234
+ },
7235
+ };
7236
+ popoutWindowDisposable.addDisposables(
7237
+ /**
7238
+ * ResizeObserver seems slow here, I do not know why but we don't need it
7239
+ * since we can reply on the window resize event as we will occupy the full
7240
+ * window dimensions
7241
+ */
7242
+ addDisposableWindowListener(_window.window, 'resize', () => {
7243
+ group.layout(window.innerWidth, window.innerHeight);
7244
+ }), overlayRenderContainer, Disposable.from(() => {
7245
+ if (this.getPanel(referenceGroup.id)) {
7246
+ this.movingLock(() => moveGroupWithoutDestroying({
7247
+ from: group,
7248
+ to: referenceGroup,
7249
+ }));
7250
+ if (referenceGroup.api.isHidden) {
7251
+ referenceGroup.api.setHidden(false);
7252
+ }
7253
+ if (this.getPanel(group.id)) {
7254
+ this.doRemoveGroup(group, {
7255
+ skipPopoutAssociated: true,
7256
+ });
7257
+ }
7258
+ }
7259
+ else {
7260
+ if (this.getPanel(group.id)) {
7261
+ const removedGroup = this.doRemoveGroup(group, {
7262
+ skipDispose: true,
7263
+ skipActive: true,
7264
+ });
7265
+ removedGroup.model.renderContainer =
7266
+ this.overlayRenderContainer;
7267
+ removedGroup.model.location = { type: 'grid' };
7268
+ returnedGroup = removedGroup;
7269
+ }
7270
+ }
7271
+ }));
7272
+ this._popoutGroups.push(value);
7273
+ this.updateWatermark();
7274
+ })
7275
+ .catch((err) => {
7276
+ console.error(err);
6731
7277
  });
6732
- popoutWindow.addDisposables({
6733
- dispose: () => {
6734
- remove(this._popoutGroups, popoutWindow);
6735
- this.updateWatermark();
6736
- },
6737
- }, popoutWindow.window.onDidClose(() => {
6738
- this.doAddGroup(group, [0]);
6739
- }));
6740
- this._popoutGroups.push(popoutWindow);
6741
- this.updateWatermark();
6742
7278
  }
6743
7279
  addFloatingGroup(item, coord, options) {
6744
- var _a, _b, _c, _d, _e, _f;
7280
+ var _a, _b, _c, _d, _e, _f, _g;
6745
7281
  let group;
6746
7282
  if (item instanceof DockviewPanel) {
6747
7283
  group = this.createGroup();
6748
- this.removePanel(item, {
7284
+ this._onDidAddGroup.fire(group);
7285
+ this.movingLock(() => this.removePanel(item, {
6749
7286
  removeEmptyGroup: true,
6750
7287
  skipDispose: true,
6751
- });
6752
- group.model.openPanel(item);
7288
+ skipSetActiveGroup: true,
7289
+ }));
7290
+ group.model.openPanel(item, { skipSetGroupActive: true });
6753
7291
  }
6754
7292
  else {
6755
7293
  group = item;
7294
+ const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;
7295
+ const popoutReferenceGroup = popoutReferenceGroupId
7296
+ ? this.getPanel(popoutReferenceGroupId)
7297
+ : undefined;
6756
7298
  const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6757
7299
  options.skipRemoveGroup;
6758
7300
  if (!skip) {
6759
- this.doRemoveGroup(item, { skipDispose: true });
7301
+ if (popoutReferenceGroup) {
7302
+ this.movingLock(() => moveGroupWithoutDestroying({
7303
+ from: item,
7304
+ to: popoutReferenceGroup,
7305
+ }));
7306
+ this.doRemoveGroup(item, {
7307
+ skipPopoutReturn: true,
7308
+ skipPopoutAssociated: true,
7309
+ });
7310
+ this.doRemoveGroup(popoutReferenceGroup, {
7311
+ skipDispose: true,
7312
+ });
7313
+ group = popoutReferenceGroup;
7314
+ }
7315
+ else {
7316
+ this.doRemoveGroup(item, {
7317
+ skipDispose: true,
7318
+ skipPopoutReturn: true,
7319
+ skipPopoutAssociated: !!popoutReferenceGroup,
7320
+ });
7321
+ }
6760
7322
  }
6761
7323
  }
6762
- group.model.location = 'floating';
7324
+ group.model.location = { type: 'floating' };
6763
7325
  const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
6764
7326
  ? Math.max(coord.x, 0)
6765
7327
  : DEFAULT_FLOATING_GROUP_POSITION.left;
@@ -6769,16 +7331,16 @@ class DockviewComponent extends BaseGrid {
6769
7331
  const overlay = new Overlay({
6770
7332
  container: this.gridview.element,
6771
7333
  content: group.element,
6772
- height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
6773
- width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
7334
+ height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
7335
+ width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
6774
7336
  left: overlayLeft,
6775
7337
  top: overlayTop,
6776
7338
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
6777
7339
  ? undefined
6778
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7340
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6779
7341
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
6780
7342
  ? undefined
6781
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7343
+ : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6782
7344
  });
6783
7345
  const el = group.element.querySelector('.void-container');
6784
7346
  if (!el) {
@@ -6809,12 +7371,15 @@ class DockviewComponent extends BaseGrid {
6809
7371
  }), {
6810
7372
  dispose: () => {
6811
7373
  disposable.dispose();
6812
- group.model.location = 'grid';
7374
+ group.model.location = { type: 'grid' };
6813
7375
  remove(this._floatingGroups, floatingGroupPanel);
6814
7376
  this.updateWatermark();
6815
7377
  },
6816
7378
  });
6817
7379
  this._floatingGroups.push(floatingGroupPanel);
7380
+ if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
7381
+ this.doSetGroupAndPanelActive(group);
7382
+ }
6818
7383
  this.updateWatermark();
6819
7384
  }
6820
7385
  orthogonalize(position) {
@@ -6904,8 +7469,8 @@ class DockviewComponent extends BaseGrid {
6904
7469
  return this.panels.find((panel) => panel.id === id);
6905
7470
  }
6906
7471
  setActivePanel(panel) {
6907
- this.doSetGroupActive(panel.group);
6908
7472
  panel.group.model.openPanel(panel);
7473
+ this.doSetGroupAndPanelActive(panel.group);
6909
7474
  }
6910
7475
  moveToNext(options = {}) {
6911
7476
  var _a;
@@ -6966,7 +7531,8 @@ class DockviewComponent extends BaseGrid {
6966
7531
  });
6967
7532
  const popoutGroups = this._popoutGroups.map((group) => {
6968
7533
  return {
6969
- data: group.group.toJSON(),
7534
+ data: group.popoutGroup.toJSON(),
7535
+ gridReferenceGroup: group.referenceGroup,
6970
7536
  position: group.window.dimensions(),
6971
7537
  };
6972
7538
  });
@@ -6984,7 +7550,7 @@ class DockviewComponent extends BaseGrid {
6984
7550
  return result;
6985
7551
  }
6986
7552
  fromJSON(data) {
6987
- var _a, _b;
7553
+ var _a, _b, _c;
6988
7554
  this.clear();
6989
7555
  if (typeof data !== 'object' || data === null) {
6990
7556
  throw new Error('serialized layout must be a non-null object');
@@ -7023,7 +7589,7 @@ class DockviewComponent extends BaseGrid {
7023
7589
  const isActive = typeof activeView === 'string' &&
7024
7590
  activeView === panel.id;
7025
7591
  group.model.openPanel(panel, {
7026
- skipSetPanelActive: !isActive,
7592
+ skipSetActive: !isActive,
7027
7593
  skipSetGroupActive: true,
7028
7594
  });
7029
7595
  }
@@ -7053,11 +7619,16 @@ class DockviewComponent extends BaseGrid {
7053
7619
  }
7054
7620
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7055
7621
  for (const serializedPopoutGroup of serializedPopoutGroups) {
7056
- const { data, position } = serializedPopoutGroup;
7622
+ const { data, position, gridReferenceGroup } = serializedPopoutGroup;
7057
7623
  const group = createGroupFromSerializedState(data);
7058
- this.addPopoutGroup(group, {
7624
+ this.addPopoutGroup((_c = (gridReferenceGroup
7625
+ ? this.getPanel(gridReferenceGroup)
7626
+ : undefined)) !== null && _c !== void 0 ? _c : group, {
7059
7627
  skipRemoveGroup: true,
7060
7628
  position: position !== null && position !== void 0 ? position : undefined,
7629
+ overridePopoutGroup: gridReferenceGroup
7630
+ ? group
7631
+ : undefined,
7061
7632
  });
7062
7633
  }
7063
7634
  for (const floatingGroup of this._floatingGroups) {
@@ -7104,12 +7675,13 @@ class DockviewComponent extends BaseGrid {
7104
7675
  */
7105
7676
  throw err;
7106
7677
  }
7678
+ this.updateWatermark();
7107
7679
  this._onDidLayoutFromJSON.fire();
7108
7680
  }
7109
7681
  clear() {
7110
7682
  const groups = Array.from(this._groups.values()).map((_) => _.value);
7111
7683
  const hasActiveGroup = !!this.activeGroup;
7112
- const hasActivePanel = !!this.activePanel;
7684
+ !!this.activePanel;
7113
7685
  for (const group of groups) {
7114
7686
  // remove the group will automatically remove the panels
7115
7687
  this.removeGroup(group, { skipActive: true });
@@ -7117,9 +7689,6 @@ class DockviewComponent extends BaseGrid {
7117
7689
  if (hasActiveGroup) {
7118
7690
  this.doSetGroupAndPanelActive(undefined);
7119
7691
  }
7120
- if (hasActivePanel) {
7121
- this._onDidActivePanelChange.fire(undefined);
7122
- }
7123
7692
  this.gridview.clear();
7124
7693
  }
7125
7694
  closeAllGroups() {
@@ -7160,6 +7729,7 @@ class DockviewComponent extends BaseGrid {
7160
7729
  const group = this.orthogonalize(directionToPosition(options.position.direction));
7161
7730
  const panel = this.createPanel(options, group);
7162
7731
  group.model.openPanel(panel);
7732
+ this.doSetGroupAndPanelActive(group);
7163
7733
  return panel;
7164
7734
  }
7165
7735
  }
@@ -7171,6 +7741,7 @@ class DockviewComponent extends BaseGrid {
7171
7741
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
7172
7742
  if (options.floating) {
7173
7743
  const group = this.createGroup();
7744
+ this._onDidAddGroup.fire(group);
7174
7745
  const o = typeof options.floating === 'object' &&
7175
7746
  options.floating !== null
7176
7747
  ? options.floating
@@ -7178,16 +7749,16 @@ class DockviewComponent extends BaseGrid {
7178
7749
  this.addFloatingGroup(group, o, {
7179
7750
  inDragMode: false,
7180
7751
  skipRemoveGroup: true,
7752
+ skipActiveGroup: true,
7181
7753
  });
7182
- this._onDidAddGroup.fire(group);
7183
7754
  panel = this.createPanel(options, group);
7184
7755
  group.model.openPanel(panel);
7185
- this.doSetGroupAndPanelActive(group);
7186
7756
  }
7187
- else if (referenceGroup.api.location === 'floating' ||
7757
+ else if (referenceGroup.api.location.type === 'floating' ||
7188
7758
  target === 'center') {
7189
7759
  panel = this.createPanel(options, referenceGroup);
7190
7760
  referenceGroup.model.openPanel(panel);
7761
+ this.doSetGroupAndPanelActive(referenceGroup);
7191
7762
  }
7192
7763
  else {
7193
7764
  const location = getGridLocation(referenceGroup.element);
@@ -7195,10 +7766,12 @@ class DockviewComponent extends BaseGrid {
7195
7766
  const group = this.createGroupAtLocation(relativeLocation);
7196
7767
  panel = this.createPanel(options, group);
7197
7768
  group.model.openPanel(panel);
7769
+ this.doSetGroupAndPanelActive(group);
7198
7770
  }
7199
7771
  }
7200
7772
  else if (options.floating) {
7201
7773
  const group = this.createGroup();
7774
+ this._onDidAddGroup.fire(group);
7202
7775
  const o = typeof options.floating === 'object' &&
7203
7776
  options.floating !== null
7204
7777
  ? options.floating
@@ -7206,16 +7779,16 @@ class DockviewComponent extends BaseGrid {
7206
7779
  this.addFloatingGroup(group, o, {
7207
7780
  inDragMode: false,
7208
7781
  skipRemoveGroup: true,
7782
+ skipActiveGroup: true,
7209
7783
  });
7210
- this._onDidAddGroup.fire(group);
7211
7784
  panel = this.createPanel(options, group);
7212
7785
  group.model.openPanel(panel);
7213
- this.doSetGroupAndPanelActive(group);
7214
7786
  }
7215
7787
  else {
7216
7788
  const group = this.createGroupAtLocation();
7217
7789
  panel = this.createPanel(options, group);
7218
7790
  group.model.openPanel(panel);
7791
+ this.doSetGroupAndPanelActive(group);
7219
7792
  }
7220
7793
  return panel;
7221
7794
  }
@@ -7227,13 +7800,15 @@ class DockviewComponent extends BaseGrid {
7227
7800
  if (!group) {
7228
7801
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
7229
7802
  }
7230
- group.model.removePanel(panel);
7803
+ group.model.removePanel(panel, {
7804
+ skipSetActiveGroup: options.skipSetActiveGroup,
7805
+ });
7231
7806
  if (!options.skipDispose) {
7232
- this.overlayRenderContainer.detatch(panel);
7807
+ panel.group.model.renderContainer.detatch(panel);
7233
7808
  panel.dispose();
7234
7809
  }
7235
7810
  if (group.size === 0 && options.removeEmptyGroup) {
7236
- this.removeGroup(group);
7811
+ this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
7237
7812
  }
7238
7813
  }
7239
7814
  createWatermarkComponent() {
@@ -7246,7 +7821,7 @@ class DockviewComponent extends BaseGrid {
7246
7821
  }
7247
7822
  updateWatermark() {
7248
7823
  var _a, _b;
7249
- if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
7824
+ if (this.groups.filter((x) => x.api.location.type === 'grid' && !x.api.isHidden).length === 0) {
7250
7825
  if (!this.watermark) {
7251
7826
  this.watermark = this.createWatermarkComponent();
7252
7827
  this.watermark.init({
@@ -7292,36 +7867,42 @@ class DockviewComponent extends BaseGrid {
7292
7867
  }
7293
7868
  else {
7294
7869
  const group = this.orthogonalize(directionToPosition(options.direction));
7870
+ if (!options.skipSetActive) {
7871
+ this.doSetGroupAndPanelActive(group);
7872
+ }
7295
7873
  return group;
7296
7874
  }
7297
7875
  const target = toTarget(options.direction || 'within');
7298
7876
  const location = getGridLocation(referenceGroup.element);
7299
7877
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
7300
7878
  this.doAddGroup(group, relativeLocation);
7879
+ if (!options.skipSetActive) {
7880
+ this.doSetGroupAndPanelActive(group);
7881
+ }
7301
7882
  return group;
7302
7883
  }
7303
7884
  else {
7304
7885
  this.doAddGroup(group);
7886
+ this.doSetGroupAndPanelActive(group);
7305
7887
  return group;
7306
7888
  }
7307
7889
  }
7308
7890
  removeGroup(group, options) {
7891
+ this.doRemoveGroup(group, options);
7892
+ }
7893
+ doRemoveGroup(group, options) {
7309
7894
  var _a;
7310
7895
  const panels = [...group.panels]; // reassign since group panels will mutate
7311
- for (const panel of panels) {
7312
- this.removePanel(panel, {
7313
- removeEmptyGroup: false,
7314
- skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7315
- });
7896
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7897
+ for (const panel of panels) {
7898
+ this.removePanel(panel, {
7899
+ removeEmptyGroup: false,
7900
+ skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7901
+ });
7902
+ }
7316
7903
  }
7317
7904
  const activePanel = this.activePanel;
7318
- this.doRemoveGroup(group, options);
7319
- if (this.activePanel !== activePanel) {
7320
- this._onDidActivePanelChange.fire(this.activePanel);
7321
- }
7322
- }
7323
- doRemoveGroup(group, options) {
7324
- if (group.api.location === 'floating') {
7905
+ if (group.api.location.type === 'floating') {
7325
7906
  const floatingGroup = this._floatingGroups.find((_) => _.group === group);
7326
7907
  if (floatingGroup) {
7327
7908
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -7333,60 +7914,124 @@ class DockviewComponent extends BaseGrid {
7333
7914
  floatingGroup.dispose();
7334
7915
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7335
7916
  const groups = Array.from(this._groups.values());
7336
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7917
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7337
7918
  }
7338
7919
  return floatingGroup.group;
7339
7920
  }
7340
7921
  throw new Error('failed to find floating group');
7341
7922
  }
7342
- if (group.api.location === 'popout') {
7343
- const selectedGroup = this._popoutGroups.find((_) => _.group === group);
7923
+ if (group.api.location.type === 'popout') {
7924
+ const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
7344
7925
  if (selectedGroup) {
7345
7926
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7346
- selectedGroup.group.dispose();
7927
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {
7928
+ const refGroup = selectedGroup.referenceGroup
7929
+ ? this.getPanel(selectedGroup.referenceGroup)
7930
+ : undefined;
7931
+ if (refGroup) {
7932
+ this.removeGroup(refGroup);
7933
+ }
7934
+ }
7935
+ selectedGroup.popoutGroup.dispose();
7347
7936
  this._groups.delete(group.id);
7348
7937
  this._onDidRemoveGroup.fire(group);
7349
7938
  }
7350
- selectedGroup.dispose();
7939
+ const removedGroup = selectedGroup.disposable.dispose();
7940
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
7941
+ this.doAddGroup(removedGroup, [0]);
7942
+ this.doSetGroupAndPanelActive(removedGroup);
7943
+ }
7351
7944
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7352
7945
  const groups = Array.from(this._groups.values());
7353
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7946
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7354
7947
  }
7355
- return selectedGroup.group;
7948
+ this.updateWatermark();
7949
+ return selectedGroup.popoutGroup;
7356
7950
  }
7357
7951
  throw new Error('failed to find popout group');
7358
7952
  }
7359
- return super.doRemoveGroup(group, options);
7953
+ const re = super.doRemoveGroup(group, options);
7954
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {
7955
+ if (this.activePanel !== activePanel) {
7956
+ this._onDidActivePanelChange.fire(this.activePanel);
7957
+ }
7958
+ }
7959
+ return re;
7360
7960
  }
7361
- moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
7362
- var _a, _b, _c;
7961
+ movingLock(func) {
7962
+ const isMoving = this._moving;
7963
+ try {
7964
+ this._moving = true;
7965
+ return func();
7966
+ }
7967
+ finally {
7968
+ this._moving = isMoving;
7969
+ }
7970
+ }
7971
+ moveGroupOrPanel(options) {
7972
+ var _a;
7973
+ const destinationGroup = options.to.group;
7974
+ const sourceGroupId = options.from.groupId;
7975
+ const sourceItemId = options.from.panelId;
7976
+ const destinationTarget = options.to.position;
7977
+ const destinationIndex = options.to.index;
7363
7978
  const sourceGroup = sourceGroupId
7364
7979
  ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
7365
7980
  : undefined;
7981
+ if (!sourceGroup) {
7982
+ throw new Error(`Failed to find group id ${sourceGroupId}`);
7983
+ }
7366
7984
  if (sourceItemId === undefined) {
7367
- if (sourceGroup) {
7368
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
7369
- }
7985
+ /**
7986
+ * Moving an entire group into another group
7987
+ */
7988
+ this.moveGroup({
7989
+ from: { group: sourceGroup },
7990
+ to: {
7991
+ group: destinationGroup,
7992
+ position: destinationTarget,
7993
+ },
7994
+ });
7370
7995
  return;
7371
7996
  }
7372
7997
  if (!destinationTarget || destinationTarget === 'center') {
7373
- 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);
7374
- if (!groupItem) {
7998
+ /**
7999
+ * Dropping a panel within another group
8000
+ */
8001
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8002
+ skipSetActive: false,
8003
+ skipSetActiveGroup: true,
8004
+ }));
8005
+ if (!removedPanel) {
7375
8006
  throw new Error(`No panel with id ${sourceItemId}`);
7376
8007
  }
7377
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7378
- this.doRemoveGroup(sourceGroup);
8008
+ if (sourceGroup.model.size === 0) {
8009
+ // remove the group and do not set a new group as active
8010
+ this.doRemoveGroup(sourceGroup, { skipActive: true });
7379
8011
  }
7380
- destinationGroup.model.openPanel(groupItem, {
8012
+ this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
7381
8013
  index: destinationIndex,
8014
+ skipSetGroupActive: true,
8015
+ }));
8016
+ this.doSetGroupAndPanelActive(destinationGroup);
8017
+ this._onDidMovePanel.fire({
8018
+ panel: removedPanel,
7382
8019
  });
7383
8020
  }
7384
8021
  else {
8022
+ /**
8023
+ * Dropping a panel to the extremities of a group which will place that panel
8024
+ * into an adjacent group
8025
+ */
7385
8026
  const referenceLocation = getGridLocation(destinationGroup.element);
7386
8027
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7387
- if (sourceGroup && sourceGroup.size < 2) {
8028
+ if (sourceGroup.size < 2) {
8029
+ /**
8030
+ * If we are moving from a group which only has one panel left we will consider
8031
+ * moving the group itself rather than moving the panel into a newly created group
8032
+ */
7388
8033
  const [targetParentLocation, to] = tail(targetLocation);
7389
- if (sourceGroup.api.location === 'grid') {
8034
+ if (sourceGroup.api.location.type === 'grid') {
7390
8035
  const sourceLocation = getGridLocation(sourceGroup.element);
7391
8036
  const [sourceParentLocation, from] = tail(sourceLocation);
7392
8037
  if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
@@ -7394,78 +8039,123 @@ class DockviewComponent extends BaseGrid {
7394
8039
  // if a group has one tab - we are essentially moving the 'group'
7395
8040
  // which is equivalent to swapping two views in this case
7396
8041
  this.gridview.moveView(sourceParentLocation, from, to);
8042
+ return;
7397
8043
  }
7398
8044
  }
7399
8045
  // source group will become empty so delete the group
7400
- const targetGroup = this.doRemoveGroup(sourceGroup, {
8046
+ const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
7401
8047
  skipActive: true,
7402
8048
  skipDispose: true,
7403
- });
8049
+ }));
7404
8050
  // after deleting the group we need to re-evaulate the ref location
7405
8051
  const updatedReferenceLocation = getGridLocation(destinationGroup.element);
7406
8052
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
7407
- this.doAddGroup(targetGroup, location);
8053
+ this.movingLock(() => this.doAddGroup(targetGroup, location));
8054
+ this.doSetGroupAndPanelActive(targetGroup);
7408
8055
  }
7409
8056
  else {
7410
- 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);
7411
- if (!groupItem) {
8057
+ /**
8058
+ * The group we are removing from has many panels, we need to remove the panels we are moving,
8059
+ * create a new group, add the panels to that new group and add the new group in an appropiate position
8060
+ */
8061
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8062
+ skipSetActive: false,
8063
+ skipSetActiveGroup: true,
8064
+ }));
8065
+ if (!removedPanel) {
7412
8066
  throw new Error(`No panel with id ${sourceItemId}`);
7413
8067
  }
7414
8068
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7415
8069
  const group = this.createGroupAtLocation(dropLocation);
7416
- group.model.openPanel(groupItem);
8070
+ this.movingLock(() => group.model.openPanel(removedPanel, {
8071
+ skipSetGroupActive: true,
8072
+ }));
8073
+ this.doSetGroupAndPanelActive(group);
7417
8074
  }
7418
8075
  }
7419
8076
  }
7420
- moveGroup(sourceGroup, referenceGroup, target) {
7421
- if (sourceGroup) {
7422
- if (!target || target === 'center') {
7423
- const activePanel = sourceGroup.activePanel;
7424
- const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));
7425
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7426
- this.doRemoveGroup(sourceGroup);
7427
- }
8077
+ moveGroup(options) {
8078
+ const from = options.from.group;
8079
+ const to = options.to.group;
8080
+ const target = options.to.position;
8081
+ if (target === 'center') {
8082
+ const activePanel = from.activePanel;
8083
+ const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {
8084
+ skipSetActive: true,
8085
+ })));
8086
+ if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {
8087
+ this.doRemoveGroup(from, { skipActive: true });
8088
+ }
8089
+ this.movingLock(() => {
7428
8090
  for (const panel of panels) {
7429
- referenceGroup.model.openPanel(panel, {
7430
- skipSetPanelActive: panel !== activePanel,
8091
+ to.model.openPanel(panel, {
8092
+ skipSetActive: panel !== activePanel,
8093
+ skipSetGroupActive: true,
7431
8094
  });
7432
8095
  }
7433
- }
7434
- else {
7435
- switch (sourceGroup.api.location) {
7436
- case 'grid':
7437
- this.gridview.removeView(getGridLocation(sourceGroup.element));
7438
- break;
7439
- case 'floating': {
7440
- const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
7441
- if (!selectedFloatingGroup) {
7442
- throw new Error('failed to find floating group');
7443
- }
7444
- selectedFloatingGroup.dispose();
7445
- break;
8096
+ });
8097
+ this.doSetGroupAndPanelActive(to);
8098
+ panels.forEach((panel) => {
8099
+ this._onDidMovePanel.fire({ panel });
8100
+ });
8101
+ }
8102
+ else {
8103
+ switch (from.api.location.type) {
8104
+ case 'grid':
8105
+ this.gridview.removeView(getGridLocation(from.element));
8106
+ break;
8107
+ case 'floating': {
8108
+ const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);
8109
+ if (!selectedFloatingGroup) {
8110
+ throw new Error('failed to find floating group');
7446
8111
  }
7447
- case 'popout': {
7448
- const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
7449
- if (!selectedPopoutGroup) {
7450
- throw new Error('failed to find popout group');
7451
- }
7452
- selectedPopoutGroup.dispose();
8112
+ selectedFloatingGroup.dispose();
8113
+ break;
8114
+ }
8115
+ case 'popout': {
8116
+ const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);
8117
+ if (!selectedPopoutGroup) {
8118
+ throw new Error('failed to find popout group');
7453
8119
  }
8120
+ selectedPopoutGroup.disposable.dispose();
7454
8121
  }
7455
- const referenceLocation = getGridLocation(referenceGroup.element);
7456
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
7457
- this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);
7458
8122
  }
8123
+ const referenceLocation = getGridLocation(to.element);
8124
+ const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8125
+ this.gridview.addView(from, Sizing.Distribute, dropLocation);
8126
+ from.panels.forEach((panel) => {
8127
+ this._onDidMovePanel.fire({ panel });
8128
+ });
7459
8129
  }
7460
8130
  }
7461
- doSetGroupAndPanelActive(group, skipFocus) {
7462
- var _a, _b;
8131
+ doSetGroupActive(group) {
8132
+ super.doSetGroupActive(group);
8133
+ const activePanel = this.activePanel;
8134
+ if (!this._moving &&
8135
+ activePanel !== this._onDidActivePanelChange.value) {
8136
+ this._onDidActivePanelChange.fire(activePanel);
8137
+ }
8138
+ }
8139
+ doSetGroupAndPanelActive(group) {
8140
+ super.doSetGroupActive(group);
7463
8141
  const activePanel = this.activePanel;
7464
- super.doSetGroupActive(group, skipFocus);
7465
- if (((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel) !== activePanel) {
7466
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
8142
+ if (group &&
8143
+ this.hasMaximizedGroup() &&
8144
+ !this.isMaximizedGroup(group)) {
8145
+ this.exitMaximizedGroup();
8146
+ }
8147
+ if (!this._moving &&
8148
+ activePanel !== this._onDidActivePanelChange.value) {
8149
+ this._onDidActivePanelChange.fire(activePanel);
7467
8150
  }
7468
8151
  }
8152
+ getNextGroupId() {
8153
+ let id = this.nextGroupId.next();
8154
+ while (this._groups.has(id)) {
8155
+ id = this.nextGroupId.next();
8156
+ }
8157
+ return id;
8158
+ }
7469
8159
  createGroup(options) {
7470
8160
  if (!options) {
7471
8161
  options = {};
@@ -7482,7 +8172,7 @@ class DockviewComponent extends BaseGrid {
7482
8172
  }
7483
8173
  }
7484
8174
  const view = new DockviewGroupPanel(this, id, options);
7485
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
8175
+ view.init({ params: {}, accessor: this });
7486
8176
  if (!this._groups.has(view.id)) {
7487
8177
  const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
7488
8178
  this._onWillDragPanel.fire(event);
@@ -7490,20 +8180,48 @@ class DockviewComponent extends BaseGrid {
7490
8180
  this._onWillDragGroup.fire(event);
7491
8181
  }), view.model.onMove((event) => {
7492
8182
  const { groupId, itemId, target, index } = event;
7493
- this.moveGroupOrPanel(view, groupId, itemId, target, index);
8183
+ this.moveGroupOrPanel({
8184
+ from: { groupId: groupId, panelId: itemId },
8185
+ to: {
8186
+ group: view,
8187
+ position: target,
8188
+ index,
8189
+ },
8190
+ });
7494
8191
  }), view.model.onDidDrop((event) => {
7495
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
8192
+ this._onDidDrop.fire(event);
8193
+ }), view.model.onWillDrop((event) => {
8194
+ this._onWillDrop.fire(event);
8195
+ }), view.model.onWillShowOverlay((event) => {
8196
+ if (this.options.disableDnd) {
8197
+ event.preventDefault();
8198
+ return;
8199
+ }
8200
+ this._onWillShowOverlay.fire(event);
7496
8201
  }), view.model.onDidAddPanel((event) => {
8202
+ if (this._moving) {
8203
+ return;
8204
+ }
7497
8205
  this._onDidAddPanel.fire(event.panel);
7498
8206
  }), view.model.onDidRemovePanel((event) => {
8207
+ if (this._moving) {
8208
+ return;
8209
+ }
7499
8210
  this._onDidRemovePanel.fire(event.panel);
7500
8211
  }), view.model.onDidActivePanelChange((event) => {
7501
- this._onDidActivePanelChange.fire(event.panel);
8212
+ if (this._moving) {
8213
+ return;
8214
+ }
8215
+ if (event.panel !== this.activePanel) {
8216
+ return;
8217
+ }
8218
+ if (this._onDidActivePanelChange.value !== event.panel) {
8219
+ this._onDidActivePanelChange.fire(event.panel);
8220
+ }
7502
8221
  }));
7503
8222
  this._groups.set(view.id, { value: view, disposable });
7504
8223
  }
7505
- // TODO: must be called after the above listeners have been setup,
7506
- // not an ideal pattern
8224
+ // TODO: must be called after the above listeners have been setup, not an ideal pattern
7507
8225
  view.initialize();
7508
8226
  return view;
7509
8227
  }
@@ -7556,7 +8274,20 @@ class GridviewComponent extends BaseGrid {
7556
8274
  });
7557
8275
  this._onDidLayoutfromJSON = new Emitter();
7558
8276
  this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
8277
+ this._onDidRemoveGroup = new Emitter();
8278
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
8279
+ this._onDidAddGroup = new Emitter();
8280
+ this.onDidAddGroup = this._onDidAddGroup.event;
8281
+ this._onDidActiveGroupChange = new Emitter();
8282
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7559
8283
  this._options = options;
8284
+ this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {
8285
+ this._onDidAddGroup.fire(event);
8286
+ }), this.onDidRemove((event) => {
8287
+ this._onDidRemoveGroup.fire(event);
8288
+ }), this.onDidActiveChange((event) => {
8289
+ this._onDidActiveGroupChange.fire(event);
8290
+ }));
7560
8291
  if (!this.options.components) {
7561
8292
  this.options.components = {};
7562
8293
  }
@@ -7731,6 +8462,7 @@ class GridviewComponent extends BaseGrid {
7731
8462
  });
7732
8463
  this.registerPanel(view);
7733
8464
  this.doAddGroup(view, relativeLocation, options.size);
8465
+ this.doSetGroupActive(view);
7734
8466
  return view;
7735
8467
  }
7736
8468
  registerPanel(panel) {
@@ -8416,10 +9148,10 @@ class SplitviewPanel extends BasePanelView {
8416
9148
  this._onDidChange = new Emitter();
8417
9149
  this.onDidChange = this._onDidChange.event;
8418
9150
  this.api.initialize(this);
8419
- this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
8420
- const { isVisible } = event;
9151
+ this.addDisposables(this._onDidChange, this.api.onDidHiddenChange((event) => {
9152
+ const { isHidden } = event;
8421
9153
  const { accessor } = this._params;
8422
- accessor.setVisible(this, isVisible);
9154
+ accessor.setVisible(this, !isHidden);
8423
9155
  }), this.api.onActiveChange(() => {
8424
9156
  const { accessor } = this._params;
8425
9157
  accessor.setActive(this);
@@ -8478,5 +9210,5 @@ class SplitviewPanel extends BasePanelView {
8478
9210
  }
8479
9211
  }
8480
9212
 
8481
- export { BaseGrid, ContentContainer, DefaultDockviewDeserialzier, DefaultTab, DockviewApi, DockviewComponent, CompositeDisposable as DockviewCompositeDisposable, DockviewDropTargets, Emitter as DockviewEmitter, Event as DockviewEvent, DockviewGroupPanel, DockviewGroupPanelModel, MutableDisposable as DockviewMutableDisposable, DockviewPanel, DraggablePaneviewPanel, Gridview, GridviewApi, GridviewComponent, GridviewPanel, LayoutPriority, LocalSelectionTransfer, Orientation, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, Tab, createComponent, directionToPosition, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, orthogonal, positionToDirection, toTarget };
9213
+ export { BaseGrid, ContentContainer, DefaultDockviewDeserialzier, DefaultTab, DockviewApi, DockviewComponent, CompositeDisposable as DockviewCompositeDisposable, DockviewDidDropEvent, Emitter as DockviewEmitter, Event as DockviewEvent, DockviewGroupPanel, DockviewGroupPanelModel, MutableDisposable as DockviewMutableDisposable, DockviewPanel, DockviewWillDropEvent, DraggablePaneviewPanel, Gridview, GridviewApi, GridviewComponent, GridviewPanel, LayoutPriority, LocalSelectionTransfer, Orientation, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, Tab, WillShowOverlayLocationEvent, createComponent, directionToPosition, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, orthogonal, positionToDirection, toTarget };
8482
9214
  //# sourceMappingURL=dockview-core.esm.js.map