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