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