dockview-core 1.9.2 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/dist/cjs/api/component.api.d.ts +35 -8
  2. package/dist/cjs/api/component.api.js +37 -7
  3. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +7 -1
  4. package/dist/cjs/api/dockviewGroupPanelApi.js +22 -3
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +24 -7
  6. package/dist/cjs/api/dockviewPanelApi.js +60 -14
  7. package/dist/cjs/api/gridviewPanelApi.d.ts +0 -1
  8. package/dist/cjs/api/gridviewPanelApi.js +1 -4
  9. package/dist/cjs/api/panelApi.d.ts +10 -8
  10. package/dist/cjs/api/panelApi.js +19 -29
  11. package/dist/cjs/api/paneviewPanelApi.d.ts +0 -1
  12. package/dist/cjs/api/paneviewPanelApi.js +0 -1
  13. package/dist/cjs/api/splitviewPanelApi.d.ts +0 -1
  14. package/dist/cjs/api/splitviewPanelApi.js +0 -1
  15. package/dist/cjs/array.d.ts +0 -1
  16. package/dist/cjs/array.js +0 -1
  17. package/dist/cjs/constants.d.ts +0 -1
  18. package/dist/cjs/constants.js +0 -1
  19. package/dist/cjs/dnd/abstractDragHandler.d.ts +0 -1
  20. package/dist/cjs/dnd/abstractDragHandler.js +0 -1
  21. package/dist/cjs/dnd/dataTransfer.d.ts +0 -1
  22. package/dist/cjs/dnd/dataTransfer.js +0 -1
  23. package/dist/cjs/dnd/dnd.d.ts +0 -1
  24. package/dist/cjs/dnd/dnd.js +0 -1
  25. package/dist/cjs/dnd/droptarget.d.ts +20 -9
  26. package/dist/cjs/dnd/droptarget.js +71 -14
  27. package/dist/cjs/dnd/ghost.d.ts +0 -1
  28. package/dist/cjs/dnd/ghost.js +0 -1
  29. package/dist/cjs/dnd/groupDragHandler.d.ts +0 -1
  30. package/dist/cjs/dnd/groupDragHandler.js +1 -2
  31. package/dist/cjs/dnd/overlay.d.ts +0 -1
  32. package/dist/cjs/dnd/overlay.js +0 -1
  33. package/dist/cjs/dockview/components/panel/content.d.ts +0 -1
  34. package/dist/cjs/dockview/components/panel/content.js +6 -7
  35. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -1
  36. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -1
  37. package/dist/cjs/dockview/components/tab/tab.d.ts +5 -13
  38. package/dist/cjs/dockview/components/tab/tab.js +5 -6
  39. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +17 -14
  40. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +26 -22
  41. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +3 -3
  42. package/dist/cjs/dockview/components/titlebar/voidContainer.js +5 -6
  43. package/dist/cjs/dockview/components/watermark/watermark.d.ts +0 -1
  44. package/dist/cjs/dockview/components/watermark/watermark.js +0 -1
  45. package/dist/cjs/dockview/deserializer.d.ts +0 -1
  46. package/dist/cjs/dockview/deserializer.js +0 -1
  47. package/dist/cjs/dockview/dockviewComponent.d.ts +86 -25
  48. package/dist/cjs/dockview/dockviewComponent.js +586 -198
  49. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +0 -1
  50. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -1
  51. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +1 -1
  52. package/dist/cjs/dockview/dockviewGroupPanel.js +6 -1
  53. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +81 -37
  54. package/dist/cjs/dockview/dockviewGroupPanelModel.js +226 -57
  55. package/dist/cjs/dockview/dockviewPanel.d.ts +8 -3
  56. package/dist/cjs/dockview/dockviewPanel.js +39 -12
  57. package/dist/cjs/dockview/dockviewPanelModel.d.ts +1 -4
  58. package/dist/cjs/dockview/dockviewPanelModel.js +2 -22
  59. package/dist/cjs/dockview/options.d.ts +10 -6
  60. package/dist/cjs/dockview/options.js +0 -1
  61. package/dist/cjs/dockview/types.d.ts +0 -11
  62. package/dist/cjs/dockview/types.js +0 -9
  63. package/dist/cjs/dom.d.ts +0 -1
  64. package/dist/cjs/dom.js +0 -1
  65. package/dist/cjs/events.d.ts +10 -1
  66. package/dist/cjs/events.js +25 -2
  67. package/dist/cjs/gridview/baseComponentGridview.d.ts +15 -16
  68. package/dist/cjs/gridview/baseComponentGridview.js +37 -27
  69. package/dist/cjs/gridview/basePanelView.d.ts +0 -1
  70. package/dist/cjs/gridview/basePanelView.js +7 -2
  71. package/dist/cjs/gridview/branchNode.d.ts +3 -2
  72. package/dist/cjs/gridview/branchNode.js +12 -2
  73. package/dist/cjs/gridview/gridview.d.ts +5 -3
  74. package/dist/cjs/gridview/gridview.js +54 -21
  75. package/dist/cjs/gridview/gridviewComponent.d.ts +10 -2
  76. package/dist/cjs/gridview/gridviewComponent.js +14 -1
  77. package/dist/cjs/gridview/gridviewPanel.d.ts +3 -3
  78. package/dist/cjs/gridview/gridviewPanel.js +2 -3
  79. package/dist/cjs/gridview/leafNode.d.ts +0 -1
  80. package/dist/cjs/gridview/leafNode.js +0 -1
  81. package/dist/cjs/gridview/options.d.ts +1 -2
  82. package/dist/cjs/gridview/options.js +0 -1
  83. package/dist/cjs/gridview/types.d.ts +0 -1
  84. package/dist/cjs/gridview/types.js +0 -1
  85. package/dist/cjs/index.d.ts +2 -2
  86. package/dist/cjs/index.js +0 -2
  87. package/dist/cjs/lifecycle.d.ts +3 -4
  88. package/dist/cjs/lifecycle.js +5 -2
  89. package/dist/cjs/math.d.ts +0 -1
  90. package/dist/cjs/math.js +0 -1
  91. package/dist/cjs/overlayRenderContainer.d.ts +1 -1
  92. package/dist/cjs/overlayRenderContainer.js +8 -4
  93. package/dist/cjs/panel/componentFactory.d.ts +0 -1
  94. package/dist/cjs/panel/componentFactory.js +0 -1
  95. package/dist/cjs/panel/types.d.ts +1 -2
  96. package/dist/cjs/panel/types.js +0 -1
  97. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +0 -1
  98. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -1
  99. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +0 -1
  100. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -1
  101. package/dist/cjs/paneview/options.d.ts +1 -2
  102. package/dist/cjs/paneview/options.js +0 -1
  103. package/dist/cjs/paneview/paneview.d.ts +1 -1
  104. package/dist/cjs/paneview/paneview.js +3 -1
  105. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -1
  106. package/dist/cjs/paneview/paneviewComponent.js +6 -1
  107. package/dist/cjs/paneview/paneviewPanel.d.ts +2 -1
  108. package/dist/cjs/paneview/paneviewPanel.js +5 -2
  109. package/dist/cjs/popoutWindow.d.ts +15 -4
  110. package/dist/cjs/popoutWindow.js +140 -56
  111. package/dist/cjs/resizable.d.ts +1 -2
  112. package/dist/cjs/resizable.js +1 -10
  113. package/dist/cjs/splitview/options.d.ts +3 -7
  114. package/dist/cjs/splitview/options.js +0 -1
  115. package/dist/cjs/splitview/splitview.d.ts +3 -1
  116. package/dist/cjs/splitview/splitview.js +12 -1
  117. package/dist/cjs/splitview/splitviewComponent.d.ts +1 -2
  118. package/dist/cjs/splitview/splitviewComponent.js +5 -6
  119. package/dist/cjs/splitview/splitviewPanel.d.ts +2 -3
  120. package/dist/cjs/splitview/splitviewPanel.js +1 -2
  121. package/dist/cjs/splitview/viewItem.d.ts +0 -1
  122. package/dist/cjs/splitview/viewItem.js +0 -1
  123. package/dist/cjs/svg.d.ts +0 -1
  124. package/dist/cjs/svg.js +0 -1
  125. package/dist/cjs/types.d.ts +0 -1
  126. package/dist/cjs/types.js +0 -1
  127. package/dist/dockview-core.amd.js +1298 -531
  128. package/dist/dockview-core.amd.js.map +1 -1
  129. package/dist/dockview-core.amd.min.js +2 -2
  130. package/dist/dockview-core.amd.min.js.map +1 -1
  131. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  132. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  133. package/dist/dockview-core.amd.noStyle.js +1297 -530
  134. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  135. package/dist/dockview-core.cjs.js +1298 -531
  136. package/dist/dockview-core.cjs.js.map +1 -1
  137. package/dist/dockview-core.esm.js +1296 -532
  138. package/dist/dockview-core.esm.js.map +1 -1
  139. package/dist/dockview-core.esm.min.js +2 -2
  140. package/dist/dockview-core.esm.min.js.map +1 -1
  141. package/dist/dockview-core.js +1298 -531
  142. package/dist/dockview-core.js.map +1 -1
  143. package/dist/dockview-core.min.js +2 -2
  144. package/dist/dockview-core.min.js.map +1 -1
  145. package/dist/dockview-core.min.noStyle.js +2 -2
  146. package/dist/dockview-core.min.noStyle.js.map +1 -1
  147. package/dist/dockview-core.noStyle.js +1297 -530
  148. package/dist/dockview-core.noStyle.js.map +1 -1
  149. package/dist/esm/api/component.api.d.ts +35 -8
  150. package/dist/esm/api/component.api.js +29 -7
  151. package/dist/esm/api/dockviewGroupPanelApi.d.ts +7 -1
  152. package/dist/esm/api/dockviewGroupPanelApi.js +22 -3
  153. package/dist/esm/api/dockviewPanelApi.d.ts +24 -7
  154. package/dist/esm/api/dockviewPanelApi.js +56 -14
  155. package/dist/esm/api/gridviewPanelApi.d.ts +0 -1
  156. package/dist/esm/api/gridviewPanelApi.js +1 -4
  157. package/dist/esm/api/panelApi.d.ts +10 -8
  158. package/dist/esm/api/panelApi.js +16 -29
  159. package/dist/esm/api/paneviewPanelApi.d.ts +0 -1
  160. package/dist/esm/api/paneviewPanelApi.js +0 -1
  161. package/dist/esm/api/splitviewPanelApi.d.ts +0 -1
  162. package/dist/esm/api/splitviewPanelApi.js +0 -1
  163. package/dist/esm/array.d.ts +0 -1
  164. package/dist/esm/array.js +0 -1
  165. package/dist/esm/constants.d.ts +0 -1
  166. package/dist/esm/constants.js +0 -1
  167. package/dist/esm/dnd/abstractDragHandler.d.ts +0 -1
  168. package/dist/esm/dnd/abstractDragHandler.js +0 -1
  169. package/dist/esm/dnd/dataTransfer.d.ts +0 -1
  170. package/dist/esm/dnd/dataTransfer.js +0 -1
  171. package/dist/esm/dnd/dnd.d.ts +0 -1
  172. package/dist/esm/dnd/dnd.js +0 -1
  173. package/dist/esm/dnd/droptarget.d.ts +20 -9
  174. package/dist/esm/dnd/droptarget.js +59 -14
  175. package/dist/esm/dnd/ghost.d.ts +0 -1
  176. package/dist/esm/dnd/ghost.js +0 -1
  177. package/dist/esm/dnd/groupDragHandler.d.ts +0 -1
  178. package/dist/esm/dnd/groupDragHandler.js +1 -2
  179. package/dist/esm/dnd/overlay.d.ts +0 -1
  180. package/dist/esm/dnd/overlay.js +0 -1
  181. package/dist/esm/dockview/components/panel/content.d.ts +0 -1
  182. package/dist/esm/dockview/components/panel/content.js +6 -7
  183. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -1
  184. package/dist/esm/dockview/components/tab/defaultTab.js +0 -1
  185. package/dist/esm/dockview/components/tab/tab.d.ts +5 -13
  186. package/dist/esm/dockview/components/tab/tab.js +6 -7
  187. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +17 -14
  188. package/dist/esm/dockview/components/titlebar/tabsContainer.js +24 -20
  189. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +3 -3
  190. package/dist/esm/dockview/components/titlebar/voidContainer.js +6 -7
  191. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -1
  192. package/dist/esm/dockview/components/watermark/watermark.js +0 -1
  193. package/dist/esm/dockview/deserializer.d.ts +0 -1
  194. package/dist/esm/dockview/deserializer.js +0 -1
  195. package/dist/esm/dockview/dockviewComponent.d.ts +86 -25
  196. package/dist/esm/dockview/dockviewComponent.js +529 -163
  197. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -1
  198. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -1
  199. package/dist/esm/dockview/dockviewGroupPanel.d.ts +1 -1
  200. package/dist/esm/dockview/dockviewGroupPanel.js +6 -1
  201. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +81 -37
  202. package/dist/esm/dockview/dockviewGroupPanelModel.js +169 -53
  203. package/dist/esm/dockview/dockviewPanel.d.ts +8 -3
  204. package/dist/esm/dockview/dockviewPanel.js +39 -12
  205. package/dist/esm/dockview/dockviewPanelModel.d.ts +1 -4
  206. package/dist/esm/dockview/dockviewPanelModel.js +2 -22
  207. package/dist/esm/dockview/options.d.ts +10 -6
  208. package/dist/esm/dockview/options.js +0 -1
  209. package/dist/esm/dockview/types.d.ts +0 -11
  210. package/dist/esm/dockview/types.js +1 -8
  211. package/dist/esm/dom.d.ts +0 -1
  212. package/dist/esm/dom.js +0 -1
  213. package/dist/esm/events.d.ts +10 -1
  214. package/dist/esm/events.js +14 -1
  215. package/dist/esm/gridview/baseComponentGridview.d.ts +15 -16
  216. package/dist/esm/gridview/baseComponentGridview.js +33 -27
  217. package/dist/esm/gridview/basePanelView.d.ts +0 -1
  218. package/dist/esm/gridview/basePanelView.js +7 -2
  219. package/dist/esm/gridview/branchNode.d.ts +3 -2
  220. package/dist/esm/gridview/branchNode.js +8 -2
  221. package/dist/esm/gridview/gridview.d.ts +5 -3
  222. package/dist/esm/gridview/gridview.js +49 -20
  223. package/dist/esm/gridview/gridviewComponent.d.ts +10 -2
  224. package/dist/esm/gridview/gridviewComponent.js +14 -1
  225. package/dist/esm/gridview/gridviewPanel.d.ts +3 -3
  226. package/dist/esm/gridview/gridviewPanel.js +2 -3
  227. package/dist/esm/gridview/leafNode.d.ts +0 -1
  228. package/dist/esm/gridview/leafNode.js +0 -1
  229. package/dist/esm/gridview/options.d.ts +1 -2
  230. package/dist/esm/gridview/options.js +0 -1
  231. package/dist/esm/gridview/types.d.ts +0 -1
  232. package/dist/esm/gridview/types.js +0 -1
  233. package/dist/esm/index.d.ts +2 -2
  234. package/dist/esm/index.js +0 -2
  235. package/dist/esm/lifecycle.d.ts +3 -4
  236. package/dist/esm/lifecycle.js +5 -2
  237. package/dist/esm/math.d.ts +0 -1
  238. package/dist/esm/math.js +0 -1
  239. package/dist/esm/overlayRenderContainer.d.ts +1 -1
  240. package/dist/esm/overlayRenderContainer.js +8 -4
  241. package/dist/esm/panel/componentFactory.d.ts +0 -1
  242. package/dist/esm/panel/componentFactory.js +0 -1
  243. package/dist/esm/panel/types.d.ts +1 -2
  244. package/dist/esm/panel/types.js +0 -1
  245. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -1
  246. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -1
  247. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -1
  248. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -1
  249. package/dist/esm/paneview/options.d.ts +1 -2
  250. package/dist/esm/paneview/options.js +0 -1
  251. package/dist/esm/paneview/paneview.d.ts +1 -1
  252. package/dist/esm/paneview/paneview.js +3 -1
  253. package/dist/esm/paneview/paneviewComponent.d.ts +2 -1
  254. package/dist/esm/paneview/paneviewComponent.js +6 -1
  255. package/dist/esm/paneview/paneviewPanel.d.ts +2 -1
  256. package/dist/esm/paneview/paneviewPanel.js +5 -2
  257. package/dist/esm/popoutWindow.d.ts +15 -4
  258. package/dist/esm/popoutWindow.js +105 -52
  259. package/dist/esm/resizable.d.ts +1 -2
  260. package/dist/esm/resizable.js +1 -10
  261. package/dist/esm/splitview/options.d.ts +3 -7
  262. package/dist/esm/splitview/options.js +0 -1
  263. package/dist/esm/splitview/splitview.d.ts +3 -1
  264. package/dist/esm/splitview/splitview.js +8 -1
  265. package/dist/esm/splitview/splitviewComponent.d.ts +1 -2
  266. package/dist/esm/splitview/splitviewComponent.js +5 -6
  267. package/dist/esm/splitview/splitviewPanel.d.ts +2 -3
  268. package/dist/esm/splitview/splitviewPanel.js +1 -2
  269. package/dist/esm/splitview/viewItem.d.ts +0 -1
  270. package/dist/esm/splitview/viewItem.js +0 -1
  271. package/dist/esm/svg.d.ts +0 -1
  272. package/dist/esm/svg.js +0 -1
  273. package/dist/esm/types.d.ts +0 -1
  274. package/dist/esm/types.js +0 -1
  275. package/dist/styles/dockview.css +20 -6
  276. package/package.json +3 -3
  277. package/dist/cjs/api/component.api.d.ts.map +0 -1
  278. package/dist/cjs/api/component.api.js.map +0 -1
  279. package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +0 -1
  280. package/dist/cjs/api/dockviewGroupPanelApi.js.map +0 -1
  281. package/dist/cjs/api/dockviewPanelApi.d.ts.map +0 -1
  282. package/dist/cjs/api/dockviewPanelApi.js.map +0 -1
  283. package/dist/cjs/api/gridviewPanelApi.d.ts.map +0 -1
  284. package/dist/cjs/api/gridviewPanelApi.js.map +0 -1
  285. package/dist/cjs/api/panelApi.d.ts.map +0 -1
  286. package/dist/cjs/api/panelApi.js.map +0 -1
  287. package/dist/cjs/api/paneviewPanelApi.d.ts.map +0 -1
  288. package/dist/cjs/api/paneviewPanelApi.js.map +0 -1
  289. package/dist/cjs/api/splitviewPanelApi.d.ts.map +0 -1
  290. package/dist/cjs/api/splitviewPanelApi.js.map +0 -1
  291. package/dist/cjs/array.d.ts.map +0 -1
  292. package/dist/cjs/array.js.map +0 -1
  293. package/dist/cjs/constants.d.ts.map +0 -1
  294. package/dist/cjs/constants.js.map +0 -1
  295. package/dist/cjs/dnd/abstractDragHandler.d.ts.map +0 -1
  296. package/dist/cjs/dnd/abstractDragHandler.js.map +0 -1
  297. package/dist/cjs/dnd/dataTransfer.d.ts.map +0 -1
  298. package/dist/cjs/dnd/dataTransfer.js.map +0 -1
  299. package/dist/cjs/dnd/dnd.d.ts.map +0 -1
  300. package/dist/cjs/dnd/dnd.js.map +0 -1
  301. package/dist/cjs/dnd/droptarget.d.ts.map +0 -1
  302. package/dist/cjs/dnd/droptarget.js.map +0 -1
  303. package/dist/cjs/dnd/ghost.d.ts.map +0 -1
  304. package/dist/cjs/dnd/ghost.js.map +0 -1
  305. package/dist/cjs/dnd/groupDragHandler.d.ts.map +0 -1
  306. package/dist/cjs/dnd/groupDragHandler.js.map +0 -1
  307. package/dist/cjs/dnd/overlay.d.ts.map +0 -1
  308. package/dist/cjs/dnd/overlay.js.map +0 -1
  309. package/dist/cjs/dockview/components/panel/content.d.ts.map +0 -1
  310. package/dist/cjs/dockview/components/panel/content.js.map +0 -1
  311. package/dist/cjs/dockview/components/tab/defaultTab.d.ts.map +0 -1
  312. package/dist/cjs/dockview/components/tab/defaultTab.js.map +0 -1
  313. package/dist/cjs/dockview/components/tab/tab.d.ts.map +0 -1
  314. package/dist/cjs/dockview/components/tab/tab.js.map +0 -1
  315. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +0 -1
  316. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +0 -1
  317. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts.map +0 -1
  318. package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +0 -1
  319. package/dist/cjs/dockview/components/watermark/watermark.d.ts.map +0 -1
  320. package/dist/cjs/dockview/components/watermark/watermark.js.map +0 -1
  321. package/dist/cjs/dockview/deserializer.d.ts.map +0 -1
  322. package/dist/cjs/dockview/deserializer.js.map +0 -1
  323. package/dist/cjs/dockview/dockviewComponent.d.ts.map +0 -1
  324. package/dist/cjs/dockview/dockviewComponent.js.map +0 -1
  325. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts.map +0 -1
  326. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +0 -1
  327. package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +0 -1
  328. package/dist/cjs/dockview/dockviewGroupPanel.js.map +0 -1
  329. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +0 -1
  330. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +0 -1
  331. package/dist/cjs/dockview/dockviewPanel.d.ts.map +0 -1
  332. package/dist/cjs/dockview/dockviewPanel.js.map +0 -1
  333. package/dist/cjs/dockview/dockviewPanelModel.d.ts.map +0 -1
  334. package/dist/cjs/dockview/dockviewPanelModel.js.map +0 -1
  335. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts +0 -16
  336. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts.map +0 -1
  337. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js +0 -50
  338. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js.map +0 -1
  339. package/dist/cjs/dockview/options.d.ts.map +0 -1
  340. package/dist/cjs/dockview/options.js.map +0 -1
  341. package/dist/cjs/dockview/types.d.ts.map +0 -1
  342. package/dist/cjs/dockview/types.js.map +0 -1
  343. package/dist/cjs/dom.d.ts.map +0 -1
  344. package/dist/cjs/dom.js.map +0 -1
  345. package/dist/cjs/events.d.ts.map +0 -1
  346. package/dist/cjs/events.js.map +0 -1
  347. package/dist/cjs/gridview/baseComponentGridview.d.ts.map +0 -1
  348. package/dist/cjs/gridview/baseComponentGridview.js.map +0 -1
  349. package/dist/cjs/gridview/basePanelView.d.ts.map +0 -1
  350. package/dist/cjs/gridview/basePanelView.js.map +0 -1
  351. package/dist/cjs/gridview/branchNode.d.ts.map +0 -1
  352. package/dist/cjs/gridview/branchNode.js.map +0 -1
  353. package/dist/cjs/gridview/gridview.d.ts.map +0 -1
  354. package/dist/cjs/gridview/gridview.js.map +0 -1
  355. package/dist/cjs/gridview/gridviewComponent.d.ts.map +0 -1
  356. package/dist/cjs/gridview/gridviewComponent.js.map +0 -1
  357. package/dist/cjs/gridview/gridviewPanel.d.ts.map +0 -1
  358. package/dist/cjs/gridview/gridviewPanel.js.map +0 -1
  359. package/dist/cjs/gridview/leafNode.d.ts.map +0 -1
  360. package/dist/cjs/gridview/leafNode.js.map +0 -1
  361. package/dist/cjs/gridview/options.d.ts.map +0 -1
  362. package/dist/cjs/gridview/options.js.map +0 -1
  363. package/dist/cjs/gridview/types.d.ts.map +0 -1
  364. package/dist/cjs/gridview/types.js.map +0 -1
  365. package/dist/cjs/index.d.ts.map +0 -1
  366. package/dist/cjs/index.js.map +0 -1
  367. package/dist/cjs/lifecycle.d.ts.map +0 -1
  368. package/dist/cjs/lifecycle.js.map +0 -1
  369. package/dist/cjs/math.d.ts.map +0 -1
  370. package/dist/cjs/math.js.map +0 -1
  371. package/dist/cjs/overlayRenderContainer.d.ts.map +0 -1
  372. package/dist/cjs/overlayRenderContainer.js.map +0 -1
  373. package/dist/cjs/panel/componentFactory.d.ts.map +0 -1
  374. package/dist/cjs/panel/componentFactory.js.map +0 -1
  375. package/dist/cjs/panel/types.d.ts.map +0 -1
  376. package/dist/cjs/panel/types.js.map +0 -1
  377. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts.map +0 -1
  378. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +0 -1
  379. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts.map +0 -1
  380. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +0 -1
  381. package/dist/cjs/paneview/options.d.ts.map +0 -1
  382. package/dist/cjs/paneview/options.js.map +0 -1
  383. package/dist/cjs/paneview/paneview.d.ts.map +0 -1
  384. package/dist/cjs/paneview/paneview.js.map +0 -1
  385. package/dist/cjs/paneview/paneviewComponent.d.ts.map +0 -1
  386. package/dist/cjs/paneview/paneviewComponent.js.map +0 -1
  387. package/dist/cjs/paneview/paneviewPanel.d.ts.map +0 -1
  388. package/dist/cjs/paneview/paneviewPanel.js.map +0 -1
  389. package/dist/cjs/popoutWindow.d.ts.map +0 -1
  390. package/dist/cjs/popoutWindow.js.map +0 -1
  391. package/dist/cjs/resizable.d.ts.map +0 -1
  392. package/dist/cjs/resizable.js.map +0 -1
  393. package/dist/cjs/splitview/options.d.ts.map +0 -1
  394. package/dist/cjs/splitview/options.js.map +0 -1
  395. package/dist/cjs/splitview/splitview.d.ts.map +0 -1
  396. package/dist/cjs/splitview/splitview.js.map +0 -1
  397. package/dist/cjs/splitview/splitviewComponent.d.ts.map +0 -1
  398. package/dist/cjs/splitview/splitviewComponent.js.map +0 -1
  399. package/dist/cjs/splitview/splitviewPanel.d.ts.map +0 -1
  400. package/dist/cjs/splitview/splitviewPanel.js.map +0 -1
  401. package/dist/cjs/splitview/viewItem.d.ts.map +0 -1
  402. package/dist/cjs/splitview/viewItem.js.map +0 -1
  403. package/dist/cjs/svg.d.ts.map +0 -1
  404. package/dist/cjs/svg.js.map +0 -1
  405. package/dist/cjs/types.d.ts.map +0 -1
  406. package/dist/cjs/types.js.map +0 -1
  407. package/dist/esm/api/component.api.d.ts.map +0 -1
  408. package/dist/esm/api/component.api.js.map +0 -1
  409. package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +0 -1
  410. package/dist/esm/api/dockviewGroupPanelApi.js.map +0 -1
  411. package/dist/esm/api/dockviewPanelApi.d.ts.map +0 -1
  412. package/dist/esm/api/dockviewPanelApi.js.map +0 -1
  413. package/dist/esm/api/gridviewPanelApi.d.ts.map +0 -1
  414. package/dist/esm/api/gridviewPanelApi.js.map +0 -1
  415. package/dist/esm/api/panelApi.d.ts.map +0 -1
  416. package/dist/esm/api/panelApi.js.map +0 -1
  417. package/dist/esm/api/paneviewPanelApi.d.ts.map +0 -1
  418. package/dist/esm/api/paneviewPanelApi.js.map +0 -1
  419. package/dist/esm/api/splitviewPanelApi.d.ts.map +0 -1
  420. package/dist/esm/api/splitviewPanelApi.js.map +0 -1
  421. package/dist/esm/array.d.ts.map +0 -1
  422. package/dist/esm/array.js.map +0 -1
  423. package/dist/esm/constants.d.ts.map +0 -1
  424. package/dist/esm/constants.js.map +0 -1
  425. package/dist/esm/dnd/abstractDragHandler.d.ts.map +0 -1
  426. package/dist/esm/dnd/abstractDragHandler.js.map +0 -1
  427. package/dist/esm/dnd/dataTransfer.d.ts.map +0 -1
  428. package/dist/esm/dnd/dataTransfer.js.map +0 -1
  429. package/dist/esm/dnd/dnd.d.ts.map +0 -1
  430. package/dist/esm/dnd/dnd.js.map +0 -1
  431. package/dist/esm/dnd/droptarget.d.ts.map +0 -1
  432. package/dist/esm/dnd/droptarget.js.map +0 -1
  433. package/dist/esm/dnd/ghost.d.ts.map +0 -1
  434. package/dist/esm/dnd/ghost.js.map +0 -1
  435. package/dist/esm/dnd/groupDragHandler.d.ts.map +0 -1
  436. package/dist/esm/dnd/groupDragHandler.js.map +0 -1
  437. package/dist/esm/dnd/overlay.d.ts.map +0 -1
  438. package/dist/esm/dnd/overlay.js.map +0 -1
  439. package/dist/esm/dockview/components/panel/content.d.ts.map +0 -1
  440. package/dist/esm/dockview/components/panel/content.js.map +0 -1
  441. package/dist/esm/dockview/components/tab/defaultTab.d.ts.map +0 -1
  442. package/dist/esm/dockview/components/tab/defaultTab.js.map +0 -1
  443. package/dist/esm/dockview/components/tab/tab.d.ts.map +0 -1
  444. package/dist/esm/dockview/components/tab/tab.js.map +0 -1
  445. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +0 -1
  446. package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +0 -1
  447. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts.map +0 -1
  448. package/dist/esm/dockview/components/titlebar/voidContainer.js.map +0 -1
  449. package/dist/esm/dockview/components/watermark/watermark.d.ts.map +0 -1
  450. package/dist/esm/dockview/components/watermark/watermark.js.map +0 -1
  451. package/dist/esm/dockview/deserializer.d.ts.map +0 -1
  452. package/dist/esm/dockview/deserializer.js.map +0 -1
  453. package/dist/esm/dockview/dockviewComponent.d.ts.map +0 -1
  454. package/dist/esm/dockview/dockviewComponent.js.map +0 -1
  455. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts.map +0 -1
  456. package/dist/esm/dockview/dockviewFloatingGroupPanel.js.map +0 -1
  457. package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +0 -1
  458. package/dist/esm/dockview/dockviewGroupPanel.js.map +0 -1
  459. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +0 -1
  460. package/dist/esm/dockview/dockviewGroupPanelModel.js.map +0 -1
  461. package/dist/esm/dockview/dockviewPanel.d.ts.map +0 -1
  462. package/dist/esm/dockview/dockviewPanel.js.map +0 -1
  463. package/dist/esm/dockview/dockviewPanelModel.d.ts.map +0 -1
  464. package/dist/esm/dockview/dockviewPanelModel.js.map +0 -1
  465. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts +0 -16
  466. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts.map +0 -1
  467. package/dist/esm/dockview/dockviewPopoutGroupPanel.js +0 -28
  468. package/dist/esm/dockview/dockviewPopoutGroupPanel.js.map +0 -1
  469. package/dist/esm/dockview/options.d.ts.map +0 -1
  470. package/dist/esm/dockview/options.js.map +0 -1
  471. package/dist/esm/dockview/types.d.ts.map +0 -1
  472. package/dist/esm/dockview/types.js.map +0 -1
  473. package/dist/esm/dom.d.ts.map +0 -1
  474. package/dist/esm/dom.js.map +0 -1
  475. package/dist/esm/events.d.ts.map +0 -1
  476. package/dist/esm/events.js.map +0 -1
  477. package/dist/esm/gridview/baseComponentGridview.d.ts.map +0 -1
  478. package/dist/esm/gridview/baseComponentGridview.js.map +0 -1
  479. package/dist/esm/gridview/basePanelView.d.ts.map +0 -1
  480. package/dist/esm/gridview/basePanelView.js.map +0 -1
  481. package/dist/esm/gridview/branchNode.d.ts.map +0 -1
  482. package/dist/esm/gridview/branchNode.js.map +0 -1
  483. package/dist/esm/gridview/gridview.d.ts.map +0 -1
  484. package/dist/esm/gridview/gridview.js.map +0 -1
  485. package/dist/esm/gridview/gridviewComponent.d.ts.map +0 -1
  486. package/dist/esm/gridview/gridviewComponent.js.map +0 -1
  487. package/dist/esm/gridview/gridviewPanel.d.ts.map +0 -1
  488. package/dist/esm/gridview/gridviewPanel.js.map +0 -1
  489. package/dist/esm/gridview/leafNode.d.ts.map +0 -1
  490. package/dist/esm/gridview/leafNode.js.map +0 -1
  491. package/dist/esm/gridview/options.d.ts.map +0 -1
  492. package/dist/esm/gridview/options.js.map +0 -1
  493. package/dist/esm/gridview/types.d.ts.map +0 -1
  494. package/dist/esm/gridview/types.js.map +0 -1
  495. package/dist/esm/index.d.ts.map +0 -1
  496. package/dist/esm/index.js.map +0 -1
  497. package/dist/esm/lifecycle.d.ts.map +0 -1
  498. package/dist/esm/lifecycle.js.map +0 -1
  499. package/dist/esm/math.d.ts.map +0 -1
  500. package/dist/esm/math.js.map +0 -1
  501. package/dist/esm/overlayRenderContainer.d.ts.map +0 -1
  502. package/dist/esm/overlayRenderContainer.js.map +0 -1
  503. package/dist/esm/panel/componentFactory.d.ts.map +0 -1
  504. package/dist/esm/panel/componentFactory.js.map +0 -1
  505. package/dist/esm/panel/types.d.ts.map +0 -1
  506. package/dist/esm/panel/types.js.map +0 -1
  507. package/dist/esm/paneview/defaultPaneviewHeader.d.ts.map +0 -1
  508. package/dist/esm/paneview/defaultPaneviewHeader.js.map +0 -1
  509. package/dist/esm/paneview/draggablePaneviewPanel.d.ts.map +0 -1
  510. package/dist/esm/paneview/draggablePaneviewPanel.js.map +0 -1
  511. package/dist/esm/paneview/options.d.ts.map +0 -1
  512. package/dist/esm/paneview/options.js.map +0 -1
  513. package/dist/esm/paneview/paneview.d.ts.map +0 -1
  514. package/dist/esm/paneview/paneview.js.map +0 -1
  515. package/dist/esm/paneview/paneviewComponent.d.ts.map +0 -1
  516. package/dist/esm/paneview/paneviewComponent.js.map +0 -1
  517. package/dist/esm/paneview/paneviewPanel.d.ts.map +0 -1
  518. package/dist/esm/paneview/paneviewPanel.js.map +0 -1
  519. package/dist/esm/popoutWindow.d.ts.map +0 -1
  520. package/dist/esm/popoutWindow.js.map +0 -1
  521. package/dist/esm/resizable.d.ts.map +0 -1
  522. package/dist/esm/resizable.js.map +0 -1
  523. package/dist/esm/splitview/options.d.ts.map +0 -1
  524. package/dist/esm/splitview/options.js.map +0 -1
  525. package/dist/esm/splitview/splitview.d.ts.map +0 -1
  526. package/dist/esm/splitview/splitview.js.map +0 -1
  527. package/dist/esm/splitview/splitviewComponent.d.ts.map +0 -1
  528. package/dist/esm/splitview/splitviewComponent.js.map +0 -1
  529. package/dist/esm/splitview/splitviewPanel.d.ts.map +0 -1
  530. package/dist/esm/splitview/splitviewPanel.js.map +0 -1
  531. package/dist/esm/splitview/viewItem.d.ts.map +0 -1
  532. package/dist/esm/splitview/viewItem.js.map +0 -1
  533. package/dist/esm/svg.d.ts.map +0 -1
  534. package/dist/esm/svg.js.map +0 -1
  535. package/dist/esm/types.d.ts.map +0 -1
  536. package/dist/esm/types.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 1.9.2
3
+ * @version 1.10.1
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();
@@ -1450,6 +1476,9 @@ class Paneview extends CompositeDisposable {
1450
1476
  this._onDidChange.fire();
1451
1477
  }));
1452
1478
  }
1479
+ setViewVisible(index, visible) {
1480
+ this.splitview.setViewVisible(index, visible);
1481
+ }
1453
1482
  addPane(pane, size, index = this.splitview.length, skipLayout = false) {
1454
1483
  const disposable = pane.onDidChangeExpansionState(() => {
1455
1484
  this.setupAnimation();
@@ -1703,7 +1732,13 @@ class BranchNode extends CompositeDisposable {
1703
1732
  }
1704
1733
  return LayoutPriority.Normal;
1705
1734
  }
1706
- constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {
1735
+ get disabled() {
1736
+ return this.splitview.disabled;
1737
+ }
1738
+ set disabled(value) {
1739
+ this.splitview.disabled = value;
1740
+ }
1741
+ constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {
1707
1742
  super();
1708
1743
  this.orientation = orientation;
1709
1744
  this.proportionalLayout = proportionalLayout;
@@ -1748,6 +1783,7 @@ class BranchNode extends CompositeDisposable {
1748
1783
  styles,
1749
1784
  });
1750
1785
  }
1786
+ this.disabled = disabled;
1751
1787
  this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
1752
1788
  this._onDidChange.fire({});
1753
1789
  }));
@@ -1881,7 +1917,7 @@ function findLeaf(candiateNode, last) {
1881
1917
  }
1882
1918
  function flipNode(node, size, orthogonalSize) {
1883
1919
  if (node instanceof BranchNode) {
1884
- const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
1920
+ const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);
1885
1921
  let totalSize = 0;
1886
1922
  for (let i = node.children.length - 1; i >= 0; i--) {
1887
1923
  const child = node.children[i];
@@ -2017,31 +2053,57 @@ class Gridview {
2017
2053
  get maximumHeight() {
2018
2054
  return this.root.maximumHeight;
2019
2055
  }
2056
+ get locked() {
2057
+ return this._locked;
2058
+ }
2059
+ set locked(value) {
2060
+ this._locked = value;
2061
+ const branch = [this.root];
2062
+ /**
2063
+ * simple depth-first-search to cover all nodes
2064
+ *
2065
+ * @see https://en.wikipedia.org/wiki/Depth-first_search
2066
+ */
2067
+ while (branch.length > 0) {
2068
+ const node = branch.pop();
2069
+ if (node instanceof BranchNode) {
2070
+ node.disabled = value;
2071
+ branch.push(...node.children);
2072
+ }
2073
+ }
2074
+ }
2020
2075
  maximizedView() {
2021
2076
  var _a;
2022
- return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
2077
+ return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;
2023
2078
  }
2024
2079
  hasMaximizedView() {
2025
2080
  return this._maximizedNode !== undefined;
2026
2081
  }
2027
2082
  maximizeView(view) {
2083
+ var _a;
2028
2084
  const location = getGridLocation(view.element);
2029
2085
  const [_, node] = this.getNode(location);
2030
2086
  if (!(node instanceof LeafNode)) {
2031
2087
  return;
2032
2088
  }
2033
- if (this._maximizedNode === node) {
2089
+ if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {
2034
2090
  return;
2035
2091
  }
2036
2092
  if (this.hasMaximizedView()) {
2037
2093
  this.exitMaximizedView();
2038
2094
  }
2095
+ const hiddenOnMaximize = [];
2039
2096
  function hideAllViewsBut(parent, exclude) {
2040
2097
  for (let i = 0; i < parent.children.length; i++) {
2041
2098
  const child = parent.children[i];
2042
2099
  if (child instanceof LeafNode) {
2043
2100
  if (child !== exclude) {
2044
- parent.setChildVisible(i, false);
2101
+ if (parent.isChildVisible(i)) {
2102
+ parent.setChildVisible(i, false);
2103
+ }
2104
+ else {
2105
+ hiddenOnMaximize.push(child);
2106
+ }
2045
2107
  }
2046
2108
  }
2047
2109
  else {
@@ -2050,18 +2112,21 @@ class Gridview {
2050
2112
  }
2051
2113
  }
2052
2114
  hideAllViewsBut(this.root, node);
2053
- this._maximizedNode = node;
2054
- this._onDidMaxmizedNodeChange.fire();
2115
+ this._maximizedNode = { leaf: node, hiddenOnMaximize };
2116
+ this._onDidMaximizedNodeChange.fire();
2055
2117
  }
2056
2118
  exitMaximizedView() {
2057
2119
  if (!this._maximizedNode) {
2058
2120
  return;
2059
2121
  }
2122
+ const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;
2060
2123
  function showViewsInReverseOrder(parent) {
2061
2124
  for (let index = parent.children.length - 1; index >= 0; index--) {
2062
2125
  const child = parent.children[index];
2063
2126
  if (child instanceof LeafNode) {
2064
- parent.setChildVisible(index, true);
2127
+ if (!hiddenOnMaximize.includes(child)) {
2128
+ parent.setChildVisible(index, true);
2129
+ }
2065
2130
  }
2066
2131
  else {
2067
2132
  showViewsInReverseOrder(child);
@@ -2070,13 +2135,13 @@ class Gridview {
2070
2135
  }
2071
2136
  showViewsInReverseOrder(this.root);
2072
2137
  this._maximizedNode = undefined;
2073
- this._onDidMaxmizedNodeChange.fire();
2138
+ this._onDidMaximizedNodeChange.fire();
2074
2139
  }
2075
2140
  serialize() {
2076
2141
  if (this.hasMaximizedView()) {
2077
2142
  /**
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
2143
+ * do not persist maximized view state
2144
+ * firstly exit any maximized views to ensure the correct dimensions are persisted
2080
2145
  */
2081
2146
  this.exitMaximizedView();
2082
2147
  }
@@ -2091,14 +2156,14 @@ class Gridview {
2091
2156
  dispose() {
2092
2157
  this.disposable.dispose();
2093
2158
  this._onDidChange.dispose();
2094
- this._onDidMaxmizedNodeChange.dispose();
2159
+ this._onDidMaximizedNodeChange.dispose();
2095
2160
  this.root.dispose();
2096
2161
  this._maximizedNode = undefined;
2097
2162
  this.element.remove();
2098
2163
  }
2099
2164
  clear() {
2100
2165
  const orientation = this.root.orientation;
2101
- this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);
2166
+ this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);
2102
2167
  }
2103
2168
  deserialize(json, deserializer) {
2104
2169
  const orientation = json.orientation;
@@ -2119,8 +2184,8 @@ class Gridview {
2119
2184
  };
2120
2185
  });
2121
2186
  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);
2187
+ orthogonalSize, // <- size - flips at each depth,
2188
+ this._locked, children);
2124
2189
  }
2125
2190
  else {
2126
2191
  result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
@@ -2153,7 +2218,7 @@ class Gridview {
2153
2218
  }
2154
2219
  const oldRoot = this.root;
2155
2220
  oldRoot.element.remove();
2156
- this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);
2221
+ this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);
2157
2222
  if (oldRoot.children.length === 0) ;
2158
2223
  else if (oldRoot.children.length === 1) {
2159
2224
  // can remove one level of redundant branching if there is only a single child
@@ -2221,15 +2286,16 @@ class Gridview {
2221
2286
  constructor(proportionalLayout, styles, orientation) {
2222
2287
  this.proportionalLayout = proportionalLayout;
2223
2288
  this.styles = styles;
2289
+ this._locked = false;
2224
2290
  this._maximizedNode = undefined;
2225
2291
  this.disposable = new MutableDisposable();
2226
2292
  this._onDidChange = new Emitter();
2227
2293
  this.onDidChange = this._onDidChange.event;
2228
- this._onDidMaxmizedNodeChange = new Emitter();
2229
- this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
2294
+ this._onDidMaximizedNodeChange = new Emitter();
2295
+ this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2230
2296
  this.element = document.createElement('div');
2231
2297
  this.element.className = 'grid-view';
2232
- this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
2298
+ this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);
2233
2299
  }
2234
2300
  isViewVisible(location) {
2235
2301
  const [rest, index] = tail(location);
@@ -2280,7 +2346,7 @@ class Gridview {
2280
2346
  }
2281
2347
  const child = grandParent.removeChild(parentIndex);
2282
2348
  child.dispose();
2283
- const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);
2349
+ const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);
2284
2350
  grandParent.addChild(newParent, parent.size, parentIndex);
2285
2351
  const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);
2286
2352
  newParent.addChild(newSibling, newSiblingSize, 0);
@@ -2908,13 +2974,36 @@ class DockviewApi {
2908
2974
  return this.component.onDidDrop;
2909
2975
  }
2910
2976
  /**
2911
- * Invoked before a group is dragged. Exposed for custom Drag'n'Drop functionality.
2977
+ * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and
2978
+ * prevent the event from occuring using the standard `preventDefault()` syntax.
2979
+ *
2980
+ * Preventing certain events may causes unexpected behaviours, use carefully.
2981
+ */
2982
+ get onWillDrop() {
2983
+ return this.component.onWillDrop;
2984
+ }
2985
+ /**
2986
+ * Invoked before an overlay is shown indicating a drop target.
2987
+ *
2988
+ * Calling `event.preventDefault()` will prevent the overlay being shown and prevent
2989
+ * the any subsequent drop event.
2990
+ */
2991
+ get onWillShowOverlay() {
2992
+ return this.component.onWillShowOverlay;
2993
+ }
2994
+ /**
2995
+ * Invoked before a group is dragged.
2996
+ *
2997
+ * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.
2998
+ *
2912
2999
  */
2913
3000
  get onWillDragGroup() {
2914
3001
  return this.component.onWillDragGroup;
2915
3002
  }
2916
3003
  /**
2917
- * Invoked before a panel is dragged. Exposed for custom Drag'n'Drop functionality.
3004
+ * Invoked before a panel is dragged.
3005
+ *
3006
+ * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.
2918
3007
  */
2919
3008
  get onWillDragPanel() {
2920
3009
  return this.component.onWillDragPanel;
@@ -3042,17 +3131,17 @@ class DockviewApi {
3042
3131
  hasMaximizedGroup() {
3043
3132
  return this.component.hasMaximizedGroup();
3044
3133
  }
3045
- exitMaxmizedGroup() {
3134
+ exitMaximizedGroup() {
3046
3135
  this.component.exitMaximizedGroup();
3047
3136
  }
3048
- get onDidMaxmizedGroupChange() {
3049
- return this.component.onDidMaxmizedGroupChange;
3137
+ get onDidMaximizedGroupChange() {
3138
+ return this.component.onDidMaximizedGroupChange;
3050
3139
  }
3051
3140
  /**
3052
3141
  * Add a popout group in a new Window
3053
3142
  */
3054
3143
  addPopoutGroup(item, options) {
3055
- this.component.addPopoutGroup(item, options);
3144
+ return this.component.addPopoutGroup(item, options);
3056
3145
  }
3057
3146
  }
3058
3147
 
@@ -3106,6 +3195,18 @@ class DragAndDropObserver extends CompositeDisposable {
3106
3195
  }
3107
3196
  }
3108
3197
 
3198
+ class WillShowOverlayEvent extends DockviewEvent {
3199
+ get nativeEvent() {
3200
+ return this.options.nativeEvent;
3201
+ }
3202
+ get position() {
3203
+ return this.options.position;
3204
+ }
3205
+ constructor(options) {
3206
+ super();
3207
+ this.options = options;
3208
+ }
3209
+ }
3109
3210
  function directionToPosition(direction) {
3110
3211
  switch (direction) {
3111
3212
  case 'above':
@@ -3158,6 +3259,8 @@ class Droptarget extends CompositeDisposable {
3158
3259
  this.options = options;
3159
3260
  this._onDrop = new Emitter();
3160
3261
  this.onDrop = this._onDrop.event;
3262
+ this._onWillShowOverlay = new Emitter();
3263
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3161
3264
  // use a set to take advantage of #<set>.has
3162
3265
  this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
3163
3266
  this.dnd = new DragAndDropObserver(this.element, {
@@ -3186,6 +3289,19 @@ class Droptarget extends CompositeDisposable {
3186
3289
  this.removeDropTarget();
3187
3290
  return;
3188
3291
  }
3292
+ const willShowOverlayEvent = new WillShowOverlayEvent({
3293
+ nativeEvent: e,
3294
+ position: quadrant,
3295
+ });
3296
+ /**
3297
+ * Provide an opportunity to prevent the overlay appearing and in turn
3298
+ * any dnd behaviours
3299
+ */
3300
+ this._onWillShowOverlay.fire(willShowOverlayEvent);
3301
+ if (willShowOverlayEvent.defaultPrevented) {
3302
+ this.removeDropTarget();
3303
+ return;
3304
+ }
3189
3305
  if (typeof this.options.canDisplayOverlay === 'boolean') {
3190
3306
  if (!this.options.canDisplayOverlay) {
3191
3307
  this.removeDropTarget();
@@ -3228,7 +3344,7 @@ class Droptarget extends CompositeDisposable {
3228
3344
  }
3229
3345
  },
3230
3346
  });
3231
- this.addDisposables(this._onDrop, this.dnd);
3347
+ this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);
3232
3348
  }
3233
3349
  setTargetZones(acceptedTargetZones) {
3234
3350
  this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
@@ -3281,25 +3397,44 @@ class Droptarget extends CompositeDisposable {
3281
3397
  size = clamp(0, sizeOptions.value, height) / height;
3282
3398
  }
3283
3399
  }
3284
- const translate = (1 - size) / 2;
3285
- const scale = size;
3286
- let transform;
3400
+ const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
3401
+ /**
3402
+ * You can also achieve the overlay placement using the transform CSS property
3403
+ * to translate and scale the element however this has the undesired effect of
3404
+ * 'skewing' the element. Comment left here for anybody that ever revisits this.
3405
+ *
3406
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform
3407
+ *
3408
+ * right
3409
+ * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})
3410
+ *
3411
+ * left
3412
+ * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})
3413
+ *
3414
+ * top
3415
+ * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})
3416
+ *
3417
+ * bottom
3418
+ * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})
3419
+ */
3287
3420
  if (rightClass) {
3288
- transform = `translateX(${100 * translate}%) scaleX(${scale})`;
3421
+ box.left = `${100 * (1 - size)}%`;
3422
+ box.width = `${100 * size}%`;
3289
3423
  }
3290
3424
  else if (leftClass) {
3291
- transform = `translateX(-${100 * translate}%) scaleX(${scale})`;
3425
+ box.width = `${100 * size}%`;
3292
3426
  }
3293
3427
  else if (topClass) {
3294
- transform = `translateY(-${100 * translate}%) scaleY(${scale})`;
3428
+ box.height = `${100 * size}%`;
3295
3429
  }
3296
3430
  else if (bottomClass) {
3297
- transform = `translateY(${100 * translate}%) scaleY(${scale})`;
3298
- }
3299
- else {
3300
- transform = '';
3431
+ box.top = `${100 * (1 - size)}%`;
3432
+ box.height = `${100 * size}%`;
3301
3433
  }
3302
- this.overlayElement.style.transform = transform;
3434
+ this.overlayElement.style.top = box.top;
3435
+ this.overlayElement.style.left = box.left;
3436
+ this.overlayElement.style.width = box.width;
3437
+ this.overlayElement.style.height = box.height;
3303
3438
  toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
3304
3439
  toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
3305
3440
  toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
@@ -3367,14 +3502,6 @@ function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold)
3367
3502
  return 'center';
3368
3503
  }
3369
3504
 
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
3505
  class ContentContainer extends CompositeDisposable {
3379
3506
  get element() {
3380
3507
  return this._element;
@@ -3402,7 +3529,7 @@ class ContentContainer extends CompositeDisposable {
3402
3529
  const data = getPanelData();
3403
3530
  if (!data &&
3404
3531
  event.shiftKey &&
3405
- this.group.location !== 'floating') {
3532
+ this.group.location.type !== 'floating') {
3406
3533
  return false;
3407
3534
  }
3408
3535
  if (data && data.viewId === this.accessor.id) {
@@ -3420,7 +3547,7 @@ class ContentContainer extends CompositeDisposable {
3420
3547
  data.groupId === this.group.id;
3421
3548
  return !groupHasOnePanelAndIsActiveDragElement;
3422
3549
  }
3423
- return this.group.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
3550
+ return this.group.canDisplayOverlay(event, position, 'content');
3424
3551
  },
3425
3552
  });
3426
3553
  this.addDisposables(this.dropTarget);
@@ -3445,7 +3572,7 @@ class ContentContainer extends CompositeDisposable {
3445
3572
  let container;
3446
3573
  switch (panel.api.renderer) {
3447
3574
  case 'onlyWhenVisibile':
3448
- this.accessor.overlayRenderContainer.detatch(panel);
3575
+ this.group.renderContainer.detatch(panel);
3449
3576
  if (this.panel) {
3450
3577
  if (doRender) {
3451
3578
  this._element.appendChild(this.panel.view.content.element);
@@ -3457,7 +3584,7 @@ class ContentContainer extends CompositeDisposable {
3457
3584
  if (panel.view.content.element.parentElement === this._element) {
3458
3585
  this._element.removeChild(panel.view.content.element);
3459
3586
  }
3460
- container = this.accessor.overlayRenderContainer.attach({
3587
+ container = this.group.renderContainer.attach({
3461
3588
  panel,
3462
3589
  referenceContainer: this,
3463
3590
  });
@@ -3488,9 +3615,10 @@ class ContentContainer extends CompositeDisposable {
3488
3615
  // noop
3489
3616
  }
3490
3617
  closePanel() {
3618
+ var _a;
3491
3619
  if (this.panel) {
3492
3620
  if (this.panel.api.renderer === 'onlyWhenVisibile') {
3493
- this._element.removeChild(this.panel.view.content.element);
3621
+ (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
3494
3622
  }
3495
3623
  }
3496
3624
  this.panel = undefined;
@@ -3601,7 +3729,7 @@ class Tab extends CompositeDisposable {
3601
3729
  this._element.draggable = true;
3602
3730
  toggleClass(this.element, 'inactive-tab', true);
3603
3731
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
3604
- this.droptarget = new Droptarget(this._element, {
3732
+ this.dropTarget = new Droptarget(this._element, {
3605
3733
  acceptedTargetZones: ['center'],
3606
3734
  canDisplayOverlay: (event, position) => {
3607
3735
  if (this.group.locked) {
@@ -3616,9 +3744,10 @@ class Tab extends CompositeDisposable {
3616
3744
  }
3617
3745
  return this.panel.id !== data.panelId;
3618
3746
  }
3619
- return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);
3747
+ return this.group.model.canDisplayOverlay(event, position, 'tab');
3620
3748
  },
3621
3749
  });
3750
+ this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
3622
3751
  this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
3623
3752
  this._onDragStart.fire(event);
3624
3753
  }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {
@@ -3626,9 +3755,9 @@ class Tab extends CompositeDisposable {
3626
3755
  return;
3627
3756
  }
3628
3757
  this._onChanged.fire(event);
3629
- }), this.droptarget.onDrop((event) => {
3758
+ }), this.dropTarget.onDrop((event) => {
3630
3759
  this._onDropped.fire(event);
3631
- }), this.droptarget);
3760
+ }), this.dropTarget);
3632
3761
  }
3633
3762
  setActive(isActive) {
3634
3763
  toggleClass(this.element, 'active-tab', isActive);
@@ -3675,7 +3804,7 @@ class GroupDragHandler extends DragHandler {
3675
3804
  }, true));
3676
3805
  }
3677
3806
  isCancelled(_event) {
3678
- if (this.group.api.location === 'floating' && !_event.shiftKey) {
3807
+ if (this.group.api.location.type === 'floating' && !_event.shiftKey) {
3679
3808
  return true;
3680
3809
  }
3681
3810
  return false;
@@ -3727,7 +3856,7 @@ class VoidContainer extends CompositeDisposable {
3727
3856
  this.accessor.doSetGroupActive(this.group);
3728
3857
  }));
3729
3858
  const handler = new GroupDragHandler(this._element, accessor, group);
3730
- this.voidDropTarget = new Droptarget(this._element, {
3859
+ this.dropTraget = new Droptarget(this._element, {
3731
3860
  acceptedTargetZones: ['center'],
3732
3861
  canDisplayOverlay: (event, position) => {
3733
3862
  var _a;
@@ -3741,14 +3870,15 @@ class VoidContainer extends CompositeDisposable {
3741
3870
  // don't show the overlay if the tab being dragged is the last panel of this group
3742
3871
  return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
3743
3872
  }
3744
- return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
3873
+ return group.model.canDisplayOverlay(event, position, 'header_space');
3745
3874
  },
3746
3875
  });
3876
+ this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
3747
3877
  this.addDisposables(handler, handler.onDragStart((event) => {
3748
3878
  this._onDragStart.fire(event);
3749
- }), this.voidDropTarget.onDrop((event) => {
3879
+ }), this.dropTraget.onDrop((event) => {
3750
3880
  this._onDrop.fire(event);
3751
- }), this.voidDropTarget);
3881
+ }), this.dropTraget);
3752
3882
  }
3753
3883
  }
3754
3884
 
@@ -3836,19 +3966,11 @@ class TabsContainer extends CompositeDisposable {
3836
3966
  this.onTabDragStart = this._onTabDragStart.event;
3837
3967
  this._onGroupDragStart = new Emitter();
3838
3968
  this.onGroupDragStart = this._onGroupDragStart.event;
3839
- this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);
3969
+ this._onWillShowOverlay = new Emitter();
3970
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3840
3971
  this._element = document.createElement('div');
3841
3972
  this._element.className = 'tabs-and-actions-container';
3842
3973
  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
3974
  this.rightActionsContainer = document.createElement('div');
3853
3975
  this.rightActionsContainer.className = 'right-actions-container';
3854
3976
  this.leftActionsContainer = document.createElement('div');
@@ -3863,7 +3985,15 @@ class TabsContainer extends CompositeDisposable {
3863
3985
  this._element.appendChild(this.leftActionsContainer);
3864
3986
  this._element.appendChild(this.voidContainer.element);
3865
3987
  this._element.appendChild(this.rightActionsContainer);
3866
- this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {
3988
+ this.addDisposables(this.accessor.onDidAddPanel((e) => {
3989
+ if (e.api.group === this.group) {
3990
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
3991
+ }
3992
+ }), this.accessor.onDidRemovePanel((e) => {
3993
+ if (e.api.group === this.group) {
3994
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
3995
+ }
3996
+ }), this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
3867
3997
  this._onGroupDragStart.fire({
3868
3998
  nativeEvent: event,
3869
3999
  group: this.group,
@@ -3873,11 +4003,15 @@ class TabsContainer extends CompositeDisposable {
3873
4003
  event: event.nativeEvent,
3874
4004
  index: this.tabs.length,
3875
4005
  });
4006
+ }), this.voidContainer.onWillShowOverlay((event) => {
4007
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
4008
+ kind: 'header_space',
4009
+ }));
3876
4010
  }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {
3877
4011
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3878
4012
  if (isFloatingGroupsEnabled &&
3879
4013
  event.shiftKey &&
3880
- this.group.api.location !== 'floating') {
4014
+ this.group.api.location.type !== 'floating') {
3881
4015
  event.preventDefault();
3882
4016
  const { top, left } = this.element.getBoundingClientRect();
3883
4017
  const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
@@ -3940,9 +4074,9 @@ class TabsContainer extends CompositeDisposable {
3940
4074
  const disposable = new CompositeDisposable(tab.onDragStart((event) => {
3941
4075
  this._onTabDragStart.fire({ nativeEvent: event, panel });
3942
4076
  }), tab.onChanged((event) => {
3943
- var _a;
3944
4077
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3945
- const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
4078
+ const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
4079
+ this.size === 1;
3946
4080
  if (isFloatingGroupsEnabled &&
3947
4081
  !isFloatingWithOnePanel &&
3948
4082
  event.shiftKey) {
@@ -3956,20 +4090,20 @@ class TabsContainer extends CompositeDisposable {
3956
4090
  }, { inDragMode: true });
3957
4091
  return;
3958
4092
  }
3959
- const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&
3960
- this.group.model.isContentFocused;
3961
4093
  const isLeftClick = event.button === 0;
3962
4094
  if (!isLeftClick || event.defaultPrevented) {
3963
4095
  return;
3964
4096
  }
3965
- this.group.model.openPanel(panel, {
3966
- skipFocus: alreadyFocused,
3967
- });
4097
+ if (this.group.activePanel !== panel) {
4098
+ this.group.model.openPanel(panel);
4099
+ }
3968
4100
  }), tab.onDrop((event) => {
3969
4101
  this._onDrop.fire({
3970
4102
  event: event.nativeEvent,
3971
4103
  index: this.tabs.findIndex((x) => x.value === tab),
3972
4104
  });
4105
+ }), tab.onWillShowOverlay((event) => {
4106
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));
3973
4107
  }));
3974
4108
  const value = { value: tab, disposable };
3975
4109
  this.addTab(value, index);
@@ -3987,6 +4121,60 @@ class TabsContainer extends CompositeDisposable {
3987
4121
  }
3988
4122
  }
3989
4123
 
4124
+ class DockviewDidDropEvent extends DockviewEvent {
4125
+ get nativeEvent() {
4126
+ return this.options.nativeEvent;
4127
+ }
4128
+ get position() {
4129
+ return this.options.position;
4130
+ }
4131
+ get panel() {
4132
+ return this.options.panel;
4133
+ }
4134
+ get group() {
4135
+ return this.options.group;
4136
+ }
4137
+ get api() {
4138
+ return this.options.api;
4139
+ }
4140
+ constructor(options) {
4141
+ super();
4142
+ this.options = options;
4143
+ }
4144
+ getData() {
4145
+ return this.options.getData();
4146
+ }
4147
+ }
4148
+ class DockviewWillDropEvent extends DockviewDidDropEvent {
4149
+ get kind() {
4150
+ return this._kind;
4151
+ }
4152
+ constructor(options) {
4153
+ super(options);
4154
+ this._kind = options.kind;
4155
+ }
4156
+ }
4157
+ class WillShowOverlayLocationEvent {
4158
+ get kind() {
4159
+ return this._kind;
4160
+ }
4161
+ get nativeEvent() {
4162
+ return this.event.nativeEvent;
4163
+ }
4164
+ get position() {
4165
+ return this.event.position;
4166
+ }
4167
+ get defaultPrevented() {
4168
+ return this.event.defaultPrevented;
4169
+ }
4170
+ preventDefault() {
4171
+ this.event.preventDefault();
4172
+ }
4173
+ constructor(event, options) {
4174
+ this.event = event;
4175
+ this._kind = options.kind;
4176
+ }
4177
+ }
3990
4178
  class DockviewGroupPanelModel extends CompositeDisposable {
3991
4179
  get element() {
3992
4180
  throw new Error('not supported');
@@ -4032,7 +4220,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4032
4220
  this._location = value;
4033
4221
  toggleClass(this.container, 'dv-groupview-floating', false);
4034
4222
  toggleClass(this.container, 'dv-groupview-popout', false);
4035
- switch (value) {
4223
+ switch (value.type) {
4036
4224
  case 'grid':
4037
4225
  this.contentContainer.dropTarget.setTargetZones([
4038
4226
  'top',
@@ -4068,7 +4256,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4068
4256
  this.groupPanel = groupPanel;
4069
4257
  this._isGroupActive = false;
4070
4258
  this._locked = false;
4071
- this._location = 'grid';
4259
+ this._location = { type: 'grid' };
4072
4260
  this.mostRecentlyUsed = [];
4073
4261
  this._onDidChange = new Emitter();
4074
4262
  this.onDidChange = this._onDidChange.event;
@@ -4079,6 +4267,10 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4079
4267
  this.onMove = this._onMove.event;
4080
4268
  this._onDidDrop = new Emitter();
4081
4269
  this.onDidDrop = this._onDidDrop.event;
4270
+ this._onWillDrop = new Emitter();
4271
+ this.onWillDrop = this._onWillDrop.event;
4272
+ this._onWillShowOverlay = new Emitter();
4273
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
4082
4274
  this._onTabDragStart = new Emitter();
4083
4275
  this.onTabDragStart = this._onTabDragStart.event;
4084
4276
  this._onGroupDragStart = new Emitter();
@@ -4089,46 +4281,69 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4089
4281
  this.onDidRemovePanel = this._onDidRemovePanel.event;
4090
4282
  this._onDidActivePanelChange = new Emitter();
4091
4283
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
4284
+ this._overwriteRenderContainer = null;
4092
4285
  toggleClass(this.container, 'groupview', true);
4286
+ this._api = new DockviewApi(this.accessor);
4093
4287
  this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
4094
4288
  this.contentContainer = new ContentContainer(this.accessor, this);
4095
4289
  container.append(this.tabsContainer.element, this.contentContainer.element);
4096
4290
  this.header.hidden = !!options.hideHeader;
4097
4291
  this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
4098
- this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {
4292
+ this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {
4099
4293
  this._onTabDragStart.fire(event);
4100
4294
  }), this.tabsContainer.onGroupDragStart((event) => {
4101
4295
  this._onGroupDragStart.fire(event);
4102
4296
  }), this.tabsContainer.onDrop((event) => {
4103
- this.handleDropEvent(event.event, 'center', event.index);
4297
+ this.handleDropEvent('header', event.event, 'center', event.index);
4104
4298
  }), this.contentContainer.onDidFocus(() => {
4105
- this.accessor.doSetGroupActive(this.groupPanel, true);
4299
+ this.accessor.doSetGroupActive(this.groupPanel);
4106
4300
  }), this.contentContainer.onDidBlur(() => {
4107
4301
  // noop
4108
4302
  }), 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);
4303
+ this.handleDropEvent('content', event.nativeEvent, event.position);
4304
+ }), this.tabsContainer.onWillShowOverlay((event) => {
4305
+ this._onWillShowOverlay.fire(event);
4306
+ }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
4307
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
4308
+ kind: 'content',
4309
+ }));
4310
+ }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
4311
+ }
4312
+ focusContent() {
4313
+ this.contentContainer.element.focus();
4314
+ }
4315
+ set renderContainer(value) {
4316
+ this.panels.forEach((panel) => {
4317
+ this.renderContainer.detatch(panel);
4318
+ });
4319
+ this._overwriteRenderContainer = value;
4320
+ this.panels.forEach((panel) => {
4321
+ this.rerender(panel);
4322
+ });
4323
+ }
4324
+ get renderContainer() {
4325
+ var _a;
4326
+ return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
4111
4327
  }
4112
4328
  initialize() {
4113
- var _a, _b;
4114
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
4329
+ if (this.options.panels) {
4115
4330
  this.options.panels.forEach((panel) => {
4116
4331
  this.doAddPanel(panel);
4117
4332
  });
4118
4333
  }
4119
- if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {
4334
+ if (this.options.activePanel) {
4120
4335
  this.openPanel(this.options.activePanel);
4121
4336
  }
4122
4337
  // must be run after the constructor otherwise this.parent may not be
4123
4338
  // correctly initialized
4124
- this.setActive(this.isActive, true, true);
4339
+ this.setActive(this.isActive, true);
4125
4340
  this.updateContainer();
4126
4341
  if (this.accessor.options.createRightHeaderActionsElement) {
4127
4342
  this._rightHeaderActions =
4128
4343
  this.accessor.options.createRightHeaderActionsElement(this.groupPanel);
4129
4344
  this.addDisposables(this._rightHeaderActions);
4130
4345
  this._rightHeaderActions.init({
4131
- containerApi: new DockviewApi(this.accessor),
4346
+ containerApi: this._api,
4132
4347
  api: this.groupPanel.api,
4133
4348
  });
4134
4349
  this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);
@@ -4138,7 +4353,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4138
4353
  this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);
4139
4354
  this.addDisposables(this._leftHeaderActions);
4140
4355
  this._leftHeaderActions.init({
4141
- containerApi: new DockviewApi(this.accessor),
4356
+ containerApi: this._api,
4142
4357
  api: this.groupPanel.api,
4143
4358
  });
4144
4359
  this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);
@@ -4148,7 +4363,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4148
4363
  this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);
4149
4364
  this.addDisposables(this._prefixHeaderActions);
4150
4365
  this._prefixHeaderActions.init({
4151
- containerApi: new DockviewApi(this.accessor),
4366
+ containerApi: this._api,
4152
4367
  api: this.groupPanel.api,
4153
4368
  });
4154
4369
  this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
@@ -4228,35 +4443,45 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4228
4443
  //noop
4229
4444
  }
4230
4445
  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);
4446
+ var _a;
4447
+ (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
4233
4448
  }
4234
4449
  openPanel(panel, options = {}) {
4450
+ /**
4451
+ * set the panel group
4452
+ * add the panel
4453
+ * check if group active
4454
+ * check if panel active
4455
+ */
4235
4456
  if (typeof options.index !== 'number' ||
4236
4457
  options.index > this.panels.length) {
4237
4458
  options.index = this.panels.length;
4238
4459
  }
4239
- const skipSetPanelActive = !!options.skipSetPanelActive;
4240
- const skipSetGroupActive = !!options.skipSetGroupActive;
4460
+ const skipSetActive = !!options.skipSetActive;
4241
4461
  // ensure the group is updated before we fire any events
4242
- panel.updateParentGroup(this.groupPanel, true);
4462
+ panel.updateParentGroup(this.groupPanel, {
4463
+ skipSetActive: options.skipSetActive,
4464
+ });
4465
+ this.doAddPanel(panel, options.index, {
4466
+ skipSetActive: skipSetActive,
4467
+ });
4243
4468
  if (this._activePanel === panel) {
4244
- if (!skipSetGroupActive) {
4245
- this.accessor.doSetGroupActive(this.groupPanel);
4246
- }
4247
4469
  this.contentContainer.renderPanel(panel, { asActive: true });
4248
4470
  return;
4249
4471
  }
4250
- this.doAddPanel(panel, options.index, skipSetPanelActive);
4251
- if (!skipSetPanelActive) {
4472
+ if (!skipSetActive) {
4252
4473
  this.doSetActivePanel(panel);
4253
4474
  }
4254
- if (!skipSetGroupActive) {
4255
- this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);
4475
+ if (!options.skipSetGroupActive) {
4476
+ this.accessor.doSetGroupActive(this.groupPanel);
4477
+ }
4478
+ if (!options.skipSetActive) {
4479
+ this.updateContainer();
4256
4480
  }
4257
- this.updateContainer();
4258
4481
  }
4259
- removePanel(groupItemOrId) {
4482
+ removePanel(groupItemOrId, options = {
4483
+ skipSetActive: false,
4484
+ }) {
4260
4485
  const id = typeof groupItemOrId === 'string'
4261
4486
  ? groupItemOrId
4262
4487
  : groupItemOrId.id;
@@ -4264,7 +4489,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4264
4489
  if (!panelToRemove) {
4265
4490
  throw new Error('invalid operation');
4266
4491
  }
4267
- return this._removePanel(panelToRemove);
4492
+ return this._removePanel(panelToRemove, options);
4268
4493
  }
4269
4494
  closeAllPanels() {
4270
4495
  if (this.panels.length > 0) {
@@ -4290,12 +4515,8 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4290
4515
  updateActions(element) {
4291
4516
  this.tabsContainer.setRightActionsElement(element);
4292
4517
  }
4293
- setActive(isGroupActive, skipFocus = false, force = false) {
4294
- var _a, _b, _c, _d;
4518
+ setActive(isGroupActive, force = false) {
4295
4519
  if (!force && this.isActive === isGroupActive) {
4296
- if (!skipFocus) {
4297
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4298
- }
4299
4520
  return;
4300
4521
  }
4301
4522
  this._isGroupActive = isGroupActive;
@@ -4306,11 +4527,6 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4306
4527
  this.doSetActivePanel(this.panels[0]);
4307
4528
  }
4308
4529
  this.updateContainer();
4309
- if (isGroupActive) {
4310
- if (!skipFocus) {
4311
- (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);
4312
- }
4313
- }
4314
4530
  }
4315
4531
  layout(width, height) {
4316
4532
  var _a;
@@ -4321,17 +4537,22 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4321
4537
  this._activePanel.layout(this._width, this._height);
4322
4538
  }
4323
4539
  }
4324
- _removePanel(panel) {
4540
+ _removePanel(panel, options) {
4325
4541
  const isActivePanel = this._activePanel === panel;
4326
4542
  this.doRemovePanel(panel);
4327
4543
  if (isActivePanel && this.panels.length > 0) {
4328
4544
  const nextPanel = this.mostRecentlyUsed[0];
4329
- this.openPanel(nextPanel);
4545
+ this.openPanel(nextPanel, {
4546
+ skipSetActive: options.skipSetActive,
4547
+ skipSetGroupActive: options.skipSetActiveGroup,
4548
+ });
4330
4549
  }
4331
4550
  if (this._activePanel && this.panels.length === 0) {
4332
4551
  this.doSetActivePanel(undefined);
4333
4552
  }
4334
- this.updateContainer();
4553
+ if (!options.skipSetActive) {
4554
+ this.updateContainer();
4555
+ }
4335
4556
  return panel;
4336
4557
  }
4337
4558
  doRemovePanel(panel) {
@@ -4346,13 +4567,13 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4346
4567
  }
4347
4568
  this._onDidRemovePanel.fire({ panel });
4348
4569
  }
4349
- doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
4570
+ doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
4350
4571
  const existingPanel = this._panels.indexOf(panel);
4351
4572
  const hasExistingPanel = existingPanel > -1;
4352
4573
  this.tabsContainer.show();
4353
4574
  this.contentContainer.show();
4354
4575
  this.tabsContainer.openPanel(panel, index);
4355
- if (!skipSetActive) {
4576
+ if (!options.skipSetActive) {
4356
4577
  this.contentContainer.openPanel(panel);
4357
4578
  }
4358
4579
  if (hasExistingPanel) {
@@ -4364,12 +4585,17 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4364
4585
  this._onDidAddPanel.fire({ panel });
4365
4586
  }
4366
4587
  doSetActivePanel(panel) {
4588
+ if (this._activePanel === panel) {
4589
+ return;
4590
+ }
4367
4591
  this._activePanel = panel;
4368
4592
  if (panel) {
4369
4593
  this.tabsContainer.setActivePanel(panel);
4370
4594
  panel.layout(this._width, this._height);
4371
4595
  this.updateMru(panel);
4372
- this._onDidActivePanelChange.fire({ panel });
4596
+ this._onDidActivePanelChange.fire({
4597
+ panel,
4598
+ });
4373
4599
  }
4374
4600
  }
4375
4601
  updateMru(panel) {
@@ -4381,11 +4607,11 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4381
4607
  updateContainer() {
4382
4608
  var _a, _b;
4383
4609
  toggleClass(this.container, 'empty', this.isEmpty);
4384
- this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));
4610
+ this.panels.forEach((panel) => panel.runEvents());
4385
4611
  if (this.isEmpty && !this.watermark) {
4386
4612
  const watermark = this.accessor.createWatermarkComponent();
4387
4613
  watermark.init({
4388
- containerApi: new DockviewApi(this.accessor),
4614
+ containerApi: this._api,
4389
4615
  group: this.groupPanel,
4390
4616
  });
4391
4617
  this.watermark = watermark;
@@ -4418,10 +4644,32 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4418
4644
  }
4419
4645
  return false;
4420
4646
  }
4421
- handleDropEvent(event, position, index) {
4647
+ handleDropEvent(type, event, position, index) {
4422
4648
  if (this.locked === 'no-drop-target') {
4423
4649
  return;
4424
4650
  }
4651
+ function getKind() {
4652
+ switch (type) {
4653
+ case 'header':
4654
+ return typeof index === 'number' ? 'tab' : 'header_space';
4655
+ case 'content':
4656
+ return 'content';
4657
+ }
4658
+ }
4659
+ const panel = typeof index === 'number' ? this.panels[index] : undefined;
4660
+ const willDropEvent = new DockviewWillDropEvent({
4661
+ nativeEvent: event,
4662
+ position,
4663
+ panel,
4664
+ getData: () => getPanelData(),
4665
+ kind: getKind(),
4666
+ group: this.groupPanel,
4667
+ api: this._api,
4668
+ });
4669
+ this._onWillDrop.fire(willDropEvent);
4670
+ if (willDropEvent.defaultPrevented) {
4671
+ return;
4672
+ }
4425
4673
  const data = getPanelData();
4426
4674
  if (data && data.viewId === this.accessor.id) {
4427
4675
  if (data.panelId === null) {
@@ -4454,12 +4702,14 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4454
4702
  });
4455
4703
  }
4456
4704
  else {
4457
- this._onDidDrop.fire({
4705
+ this._onDidDrop.fire(new DockviewDidDropEvent({
4458
4706
  nativeEvent: event,
4459
4707
  position,
4460
- index,
4708
+ panel,
4461
4709
  getData: () => getPanelData(),
4462
- });
4710
+ group: this.groupPanel,
4711
+ api: this._api,
4712
+ }));
4463
4713
  }
4464
4714
  }
4465
4715
  dispose() {
@@ -4467,6 +4717,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
4467
4717
  super.dispose();
4468
4718
  (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();
4469
4719
  (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);
4720
+ this.watermark = undefined;
4470
4721
  for (const panel of this.panels) {
4471
4722
  panel.dispose();
4472
4723
  }
@@ -4488,15 +4739,7 @@ class Resizable extends CompositeDisposable {
4488
4739
  constructor(parentElement, disableResizing = false) {
4489
4740
  super();
4490
4741
  this._disableResizing = disableResizing;
4491
- if (parentElement) {
4492
- this._element = parentElement;
4493
- }
4494
- else {
4495
- this._element = document.createElement('div');
4496
- this._element.style.height = '100%';
4497
- this._element.style.width = '100%';
4498
- this._element.className = 'dv-resizable-container';
4499
- }
4742
+ this._element = parentElement;
4500
4743
  this.addDisposables(watchElementResize(this._element, (entry) => {
4501
4744
  if (this.isDisposed) {
4502
4745
  /**
@@ -4584,25 +4827,38 @@ class BaseGrid extends Resizable {
4584
4827
  get activeGroup() {
4585
4828
  return this._activeGroup;
4586
4829
  }
4830
+ get locked() {
4831
+ return this.gridview.locked;
4832
+ }
4833
+ set locked(value) {
4834
+ this.gridview.locked = value;
4835
+ }
4587
4836
  constructor(options) {
4588
- super(options.parentElement, options.disableAutoResizing);
4837
+ super(document.createElement('div'), options.disableAutoResizing);
4589
4838
  this._id = nextLayoutId$1.next();
4590
4839
  this._groups = new Map();
4591
4840
  this._onDidLayoutChange = new Emitter();
4592
4841
  this.onDidLayoutChange = this._onDidLayoutChange.event;
4593
- this._onDidRemoveGroup = new Emitter();
4594
- this.onDidRemoveGroup = this._onDidRemoveGroup.event;
4595
- this._onDidAddGroup = new Emitter();
4596
- this.onDidAddGroup = this._onDidAddGroup.event;
4597
- this._onDidActiveGroupChange = new Emitter();
4598
- this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
4842
+ this._onDidRemove = new Emitter();
4843
+ this.onDidRemove = this._onDidRemove.event;
4844
+ this._onDidAdd = new Emitter();
4845
+ this.onDidAdd = this._onDidAdd.event;
4846
+ this._onDidActiveChange = new Emitter();
4847
+ this.onDidActiveChange = this._onDidActiveChange.event;
4599
4848
  this._bufferOnDidLayoutChange = new TickDelayedEvent();
4849
+ this.element.style.height = '100%';
4850
+ this.element.style.width = '100%';
4851
+ options.parentElement.appendChild(this.element);
4600
4852
  this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
4853
+ this.gridview.locked = !!options.locked;
4601
4854
  this.element.appendChild(this.gridview.element);
4602
4855
  this.layout(0, 0, true); // set some elements height/widths
4603
- this.addDisposables(this.gridview.onDidChange(() => {
4856
+ this.addDisposables(Disposable.from(() => {
4857
+ var _a;
4858
+ (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);
4859
+ }), this.gridview.onDidChange(() => {
4604
4860
  this._bufferOnDidLayoutChange.fire();
4605
- }), Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
4861
+ }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {
4606
4862
  this._bufferOnDidLayoutChange.fire();
4607
4863
  }), this._bufferOnDidLayoutChange.onEvent(() => {
4608
4864
  this._onDidLayoutChange.fire();
@@ -4617,6 +4873,7 @@ class BaseGrid extends Resizable {
4617
4873
  }
4618
4874
  maximizeGroup(panel) {
4619
4875
  this.gridview.maximizeView(panel);
4876
+ this.doSetGroupActive(panel);
4620
4877
  }
4621
4878
  isMaximizedGroup(panel) {
4622
4879
  return this.gridview.maximizedView() === panel;
@@ -4627,13 +4884,12 @@ class BaseGrid extends Resizable {
4627
4884
  hasMaximizedGroup() {
4628
4885
  return this.gridview.hasMaximizedView();
4629
4886
  }
4630
- get onDidMaxmizedGroupChange() {
4631
- return this.gridview.onDidMaxmizedNodeChange;
4887
+ get onDidMaximizedGroupChange() {
4888
+ return this.gridview.onDidMaximizedNodeChange;
4632
4889
  }
4633
4890
  doAddGroup(group, location = [0], size) {
4634
4891
  this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
4635
- this._onDidAddGroup.fire(group);
4636
- this.doSetGroupActive(group);
4892
+ this._onDidAdd.fire(group);
4637
4893
  }
4638
4894
  doRemoveGroup(group, options) {
4639
4895
  if (!this._groups.has(group.id)) {
@@ -4645,8 +4901,8 @@ class BaseGrid extends Resizable {
4645
4901
  item.disposable.dispose();
4646
4902
  item.value.dispose();
4647
4903
  this._groups.delete(group.id);
4904
+ this._onDidRemove.fire(group);
4648
4905
  }
4649
- this._onDidRemoveGroup.fire(group);
4650
4906
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
4651
4907
  const groups = Array.from(this._groups.values());
4652
4908
  this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
@@ -4657,25 +4913,18 @@ class BaseGrid extends Resizable {
4657
4913
  var _a;
4658
4914
  return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
4659
4915
  }
4660
- doSetGroupActive(group, skipFocus) {
4661
- var _a, _b, _c;
4916
+ doSetGroupActive(group) {
4662
4917
  if (this._activeGroup === group) {
4663
4918
  return;
4664
4919
  }
4665
4920
  if (this._activeGroup) {
4666
4921
  this._activeGroup.setActive(false);
4667
- if (!skipFocus) {
4668
- (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4669
- }
4670
4922
  }
4671
4923
  if (group) {
4672
4924
  group.setActive(true);
4673
- if (!skipFocus) {
4674
- (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);
4675
- }
4676
4925
  }
4677
4926
  this._activeGroup = group;
4678
- this._onDidActiveGroupChange.fire(group);
4927
+ this._onDidActiveChange.fire(group);
4679
4928
  }
4680
4929
  removeGroup(group) {
4681
4930
  this.doRemoveGroup(group);
@@ -4720,9 +4969,9 @@ class BaseGrid extends Resizable {
4720
4969
  this.gridview.layout(width, height);
4721
4970
  }
4722
4971
  dispose() {
4723
- this._onDidActiveGroupChange.dispose();
4724
- this._onDidAddGroup.dispose();
4725
- this._onDidRemoveGroup.dispose();
4972
+ this._onDidActiveChange.dispose();
4973
+ this._onDidAdd.dispose();
4974
+ this._onDidRemove.dispose();
4726
4975
  this._onDidLayoutChange.dispose();
4727
4976
  for (const group of this.groups) {
4728
4977
  group.dispose();
@@ -4732,11 +4981,15 @@ class BaseGrid extends Resizable {
4732
4981
  }
4733
4982
  }
4734
4983
 
4984
+ class WillFocusEvent extends DockviewEvent {
4985
+ constructor() {
4986
+ super();
4987
+ }
4988
+ }
4735
4989
  /**
4736
4990
  * A core api implementation that should be used across all panel-like objects
4737
4991
  */
4738
4992
  class PanelApiImpl extends CompositeDisposable {
4739
- //
4740
4993
  get isFocused() {
4741
4994
  return this._isFocused;
4742
4995
  }
@@ -4761,35 +5014,22 @@ class PanelApiImpl extends CompositeDisposable {
4761
5014
  this._width = 0;
4762
5015
  this._height = 0;
4763
5016
  this.panelUpdatesDisposable = new MutableDisposable();
4764
- this._onDidDimensionChange = new Emitter({
4765
- replay: true,
4766
- });
5017
+ this._onDidDimensionChange = new Emitter();
4767
5018
  this.onDidDimensionsChange = this._onDidDimensionChange.event;
4768
- //
4769
- this._onDidChangeFocus = new Emitter({
4770
- replay: true,
4771
- });
5019
+ this._onDidChangeFocus = new Emitter();
4772
5020
  this.onDidFocusChange = this._onDidChangeFocus.event;
4773
5021
  //
4774
- this._onFocusEvent = new Emitter();
4775
- this.onFocusEvent = this._onFocusEvent.event;
5022
+ this._onWillFocus = new Emitter();
5023
+ this.onWillFocus = this._onWillFocus.event;
4776
5024
  //
4777
- this._onDidVisibilityChange = new Emitter({
4778
- replay: true,
4779
- });
5025
+ this._onDidVisibilityChange = new Emitter();
4780
5026
  this.onDidVisibilityChange = this._onDidVisibilityChange.event;
4781
- //
4782
- this._onVisibilityChange = new Emitter();
4783
- this.onVisibilityChange = this._onVisibilityChange.event;
4784
- //
4785
- this._onDidActiveChange = new Emitter({
4786
- replay: true,
4787
- });
5027
+ this._onWillVisibilityChange = new Emitter();
5028
+ this.onWillVisibilityChange = this._onWillVisibilityChange.event;
5029
+ this._onDidActiveChange = new Emitter();
4788
5030
  this.onDidActiveChange = this._onDidActiveChange.event;
4789
- //
4790
5031
  this._onActiveChange = new Emitter();
4791
5032
  this.onActiveChange = this._onActiveChange.event;
4792
- //
4793
5033
  this._onUpdateParameters = new Emitter();
4794
5034
  this.onUpdateParameters = this._onUpdateParameters.event;
4795
5035
  this.addDisposables(this.onDidFocusChange((event) => {
@@ -4801,7 +5041,7 @@ class PanelApiImpl extends CompositeDisposable {
4801
5041
  }), this.onDidDimensionsChange((event) => {
4802
5042
  this._width = event.width;
4803
5043
  this._height = event.height;
4804
- }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);
5044
+ }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onWillVisibilityChange, this._onUpdateParameters);
4805
5045
  }
4806
5046
  initialize(panel) {
4807
5047
  this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
@@ -4811,7 +5051,7 @@ class PanelApiImpl extends CompositeDisposable {
4811
5051
  });
4812
5052
  }
4813
5053
  setVisible(isVisible) {
4814
- this._onVisibilityChange.fire({ isVisible });
5054
+ this._onWillVisibilityChange.fire({ isVisible });
4815
5055
  }
4816
5056
  setActive() {
4817
5057
  this._onActiveChange.fire();
@@ -4819,9 +5059,6 @@ class PanelApiImpl extends CompositeDisposable {
4819
5059
  updateParameters(parameters) {
4820
5060
  this._onUpdateParameters.fire(parameters);
4821
5061
  }
4822
- dispose() {
4823
- super.dispose();
4824
- }
4825
5062
  }
4826
5063
 
4827
5064
  class SplitviewPanelApiImpl extends PanelApiImpl {
@@ -4909,7 +5146,12 @@ class BasePanelView extends CompositeDisposable {
4909
5146
  }), focusTracker);
4910
5147
  }
4911
5148
  focus() {
4912
- this.api._onFocusEvent.fire();
5149
+ const event = new WillFocusEvent();
5150
+ this.api._onWillFocus.fire(event);
5151
+ if (event.defaultPrevented) {
5152
+ return;
5153
+ }
5154
+ this._element.focus();
4913
5155
  }
4914
5156
  layout(width, height) {
4915
5157
  this._width = width;
@@ -5027,7 +5269,11 @@ class PaneviewPanel extends BasePanelView {
5027
5269
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
5028
5270
  this._orientation = orientation;
5029
5271
  this.element.classList.add('pane');
5030
- this.addDisposables(this.api.onDidSizeChange((event) => {
5272
+ this.addDisposables(this.api.onWillVisibilityChange((event) => {
5273
+ const { isVisible } = event;
5274
+ const { accessor } = this._params;
5275
+ accessor.setVisible(this, isVisible);
5276
+ }), this.api.onDidSizeChange((event) => {
5031
5277
  this._onDidChange.fire({ size: event.size });
5032
5278
  }), addDisposableListener(this.element, 'mouseenter', (ev) => {
5033
5279
  this.api._onMouseEnter.fire(ev);
@@ -5238,9 +5484,7 @@ class GridviewPanelApiImpl extends PanelApiImpl {
5238
5484
  super(id);
5239
5485
  this._onDidConstraintsChangeInternal = new Emitter();
5240
5486
  this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
5241
- this._onDidConstraintsChange = new Emitter({
5242
- replay: true,
5243
- });
5487
+ this._onDidConstraintsChange = new Emitter();
5244
5488
  this.onDidConstraintsChange = this._onDidConstraintsChange.event;
5245
5489
  this._onDidSizeChange = new Emitter();
5246
5490
  this.onDidSizeChange = this._onDidSizeChange.event;
@@ -5333,13 +5577,13 @@ class GridviewPanel extends BasePanelView {
5333
5577
  this._maximumHeight = options.maximumHeight;
5334
5578
  }
5335
5579
  this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
5336
- this.addDisposables(this.api.onVisibilityChange((event) => {
5580
+ this.addDisposables(this.api.onWillVisibilityChange((event) => {
5337
5581
  const { isVisible } = event;
5338
5582
  const { accessor } = this._params;
5339
5583
  accessor.setVisible(this, isVisible);
5340
5584
  }), this.api.onActiveChange(() => {
5341
5585
  const { accessor } = this._params;
5342
- accessor.setActive(this);
5586
+ accessor.doSetGroupActive(this);
5343
5587
  }), this.api.onDidConstraintsChangeInternal((event) => {
5344
5588
  if (typeof event.minimumWidth === 'number' ||
5345
5589
  typeof event.minimumWidth === 'function') {
@@ -5422,6 +5666,17 @@ class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
5422
5666
  this.onDidLocationChange = this._onDidLocationChange.event;
5423
5667
  this.addDisposables(this._onDidLocationChange);
5424
5668
  }
5669
+ close() {
5670
+ if (!this._group) {
5671
+ return;
5672
+ }
5673
+ return this.accessor.removeGroup(this._group);
5674
+ }
5675
+ getWindow() {
5676
+ return this.location.type === 'popout'
5677
+ ? this.location.getWindow()
5678
+ : window;
5679
+ }
5425
5680
  moveTo(options) {
5426
5681
  var _a, _b, _c;
5427
5682
  if (!this._group) {
@@ -5429,14 +5684,23 @@ class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
5429
5684
  }
5430
5685
  const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
5431
5686
  direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
5687
+ skipSetActive: true,
5688
+ });
5689
+ this.accessor.moveGroupOrPanel({
5690
+ from: { groupId: this._group.id },
5691
+ to: {
5692
+ group,
5693
+ position: options.group
5694
+ ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
5695
+ : 'center',
5696
+ },
5432
5697
  });
5433
- this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
5434
5698
  }
5435
5699
  maximize() {
5436
5700
  if (!this._group) {
5437
5701
  throw new Error(NOT_INITIALIZED_MESSAGE);
5438
5702
  }
5439
- if (this.location !== 'grid') {
5703
+ if (this.location.type !== 'grid') {
5440
5704
  // only grid groups can be maximized
5441
5705
  return;
5442
5706
  }
@@ -5493,6 +5757,12 @@ class DockviewGroupPanel extends GridviewPanel {
5493
5757
  this.api.initialize(this); // cannot use 'this' after after 'super' call
5494
5758
  this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
5495
5759
  }
5760
+ focus() {
5761
+ if (!this.api.isActive) {
5762
+ this.api.setActive();
5763
+ }
5764
+ super.focus();
5765
+ }
5496
5766
  initialize() {
5497
5767
  this._model.initialize();
5498
5768
  }
@@ -5538,6 +5808,9 @@ function isGroupOptionsWithGroup(data) {
5538
5808
  }
5539
5809
 
5540
5810
  class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5811
+ get location() {
5812
+ return this.group.api.location;
5813
+ }
5541
5814
  get title() {
5542
5815
  return this.panel.title;
5543
5816
  }
@@ -5548,16 +5821,14 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5548
5821
  return this.panel.renderer;
5549
5822
  }
5550
5823
  set group(value) {
5551
- const isOldGroupActive = this.isGroupActive;
5552
- this._group = value;
5553
- this._onDidGroupChange.fire();
5554
- if (this._group) {
5555
- this.disposable.value = this._group.api.onDidActiveChange(() => {
5556
- this._onDidActiveGroupChange.fire();
5824
+ const oldGroup = this._group;
5825
+ if (this._group !== value) {
5826
+ this._group = value;
5827
+ this._onDidGroupChange.fire({});
5828
+ this.setupGroupEventListeners(oldGroup);
5829
+ this._onDidLocationChange.fire({
5830
+ location: this.group.api.location,
5557
5831
  });
5558
- if (this.isGroupActive !== isOldGroupActive) {
5559
- this._onDidActiveGroupChange.fire();
5560
- }
5561
5832
  }
5562
5833
  }
5563
5834
  get group() {
@@ -5575,14 +5846,27 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5575
5846
  this.onDidGroupChange = this._onDidGroupChange.event;
5576
5847
  this._onDidRendererChange = new Emitter();
5577
5848
  this.onDidRendererChange = this._onDidRendererChange.event;
5578
- this.disposable = new MutableDisposable();
5849
+ this._onDidLocationChange = new Emitter();
5850
+ this.onDidLocationChange = this._onDidLocationChange.event;
5851
+ this.groupEventsDisposable = new MutableDisposable();
5579
5852
  this.initialize(panel);
5580
5853
  this._group = group;
5581
- this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
5854
+ this.setupGroupEventListeners();
5855
+ this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);
5856
+ }
5857
+ getWindow() {
5858
+ return this.group.api.getWindow();
5582
5859
  }
5583
5860
  moveTo(options) {
5584
5861
  var _a;
5585
- this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);
5862
+ this.accessor.moveGroupOrPanel({
5863
+ from: { groupId: this._group.id, panelId: this.panel.id },
5864
+ to: {
5865
+ group: options.group,
5866
+ position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
5867
+ index: options.index,
5868
+ },
5869
+ });
5586
5870
  }
5587
5871
  setTitle(title) {
5588
5872
  this.panel.setTitle(title);
@@ -5602,6 +5886,35 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5602
5886
  exitMaximized() {
5603
5887
  this.group.api.exitMaximized();
5604
5888
  }
5889
+ setupGroupEventListeners(previousGroup) {
5890
+ var _a;
5891
+ let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state
5892
+ this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {
5893
+ if (!event.isVisible && this.isVisible) {
5894
+ this._onDidVisibilityChange.fire(event);
5895
+ }
5896
+ else if (event.isVisible &&
5897
+ !this.isVisible &&
5898
+ this.group.model.isPanelActive(this.panel)) {
5899
+ this._onDidVisibilityChange.fire(event);
5900
+ }
5901
+ }), this.group.api.onDidLocationChange((event) => {
5902
+ if (this.group !== this.panel.group) {
5903
+ return;
5904
+ }
5905
+ this._onDidLocationChange.fire(event);
5906
+ }), this.group.api.onDidActiveChange(() => {
5907
+ if (this.group !== this.panel.group) {
5908
+ return;
5909
+ }
5910
+ if (_trackGroupActive !== this.isGroupActive) {
5911
+ _trackGroupActive = this.isGroupActive;
5912
+ this._onDidActiveGroupChange.fire({
5913
+ isActive: this.isGroupActive,
5914
+ });
5915
+ }
5916
+ }));
5917
+ }
5605
5918
  }
5606
5919
 
5607
5920
  class DockviewPanel extends CompositeDisposable {
@@ -5643,7 +5956,14 @@ class DockviewPanel extends CompositeDisposable {
5643
5956
  this.setTitle(params.title);
5644
5957
  }
5645
5958
  focus() {
5646
- this.api._onFocusEvent.fire();
5959
+ const event = new WillFocusEvent();
5960
+ this.api._onWillFocus.fire(event);
5961
+ if (event.defaultPrevented) {
5962
+ return;
5963
+ }
5964
+ if (!this.api.isActive) {
5965
+ this.api.setActive();
5966
+ }
5647
5967
  }
5648
5968
  toJSON() {
5649
5969
  return {
@@ -5700,20 +6020,40 @@ class DockviewPanel extends CompositeDisposable {
5700
6020
  },
5701
6021
  });
5702
6022
  }
5703
- updateParentGroup(group, isGroupActive) {
6023
+ updateParentGroup(group, options) {
5704
6024
  this._group = group;
5705
- this.api.group = group;
6025
+ this.api.group = this._group;
5706
6026
  const isPanelVisible = this._group.model.isPanelActive(this);
5707
- this.api._onDidActiveChange.fire({
5708
- isActive: isGroupActive && isPanelVisible,
5709
- });
5710
- this.api._onDidVisibilityChange.fire({
5711
- isVisible: isPanelVisible,
5712
- });
5713
- this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));
6027
+ const isActive = this.group.api.isActive && isPanelVisible;
6028
+ if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {
6029
+ if (this.api.isActive !== isActive) {
6030
+ this.api._onDidActiveChange.fire({
6031
+ isActive: this.group.api.isActive && isPanelVisible,
6032
+ });
6033
+ }
6034
+ }
6035
+ if (this.api.isVisible !== isPanelVisible) {
6036
+ this.api._onDidVisibilityChange.fire({
6037
+ isVisible: isPanelVisible,
6038
+ });
6039
+ }
6040
+ }
6041
+ runEvents() {
6042
+ const isPanelVisible = this._group.model.isPanelActive(this);
6043
+ const isActive = this.group.api.isActive && isPanelVisible;
6044
+ if (this.api.isActive !== isActive) {
6045
+ this.api._onDidActiveChange.fire({
6046
+ isActive: this.group.api.isActive && isPanelVisible,
6047
+ });
6048
+ }
6049
+ if (this.api.isVisible !== isPanelVisible) {
6050
+ this.api._onDidVisibilityChange.fire({
6051
+ isVisible: isPanelVisible,
6052
+ });
6053
+ }
5714
6054
  }
5715
6055
  layout(width, height) {
5716
- // the obtain the correct dimensions of the content panel we must deduct the tab height
6056
+ // TODO: Can we somehow do height without header height or indicate what the header height is?
5717
6057
  this.api._onDidDimensionChange.fire({
5718
6058
  width,
5719
6059
  height: height,
@@ -5835,8 +6175,6 @@ class DockviewPanelModel {
5835
6175
  this.id = id;
5836
6176
  this.contentComponent = contentComponent;
5837
6177
  this.tabComponent = tabComponent;
5838
- this._group = null;
5839
- this._isPanelVisible = null;
5840
6178
  this._content = this.createContentComponent(this.id, contentComponent);
5841
6179
  this._tab = this.createTabComponent(this.id, tabComponent);
5842
6180
  }
@@ -5844,25 +6182,8 @@ class DockviewPanelModel {
5844
6182
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
5845
6183
  this.tab.init(params);
5846
6184
  }
5847
- updateParentGroup(group, isPanelVisible) {
5848
- if (group !== this._group) {
5849
- this._group = group;
5850
- if (this._content.onGroupChange) {
5851
- this._content.onGroupChange(group);
5852
- }
5853
- if (this._tab.onGroupChange) {
5854
- this._tab.onGroupChange(group);
5855
- }
5856
- }
5857
- if (isPanelVisible !== this._isPanelVisible) {
5858
- this._isPanelVisible = isPanelVisible;
5859
- if (this._content.onPanelVisibleChange) {
5860
- this._content.onPanelVisibleChange(isPanelVisible);
5861
- }
5862
- if (this._tab.onPanelVisibleChange) {
5863
- this._tab.onPanelVisibleChange(isPanelVisible);
5864
- }
5865
- }
6185
+ updateParentGroup(_group, _isPanelVisible) {
6186
+ // noop
5866
6187
  }
5867
6188
  layout(width, height) {
5868
6189
  var _a, _b;
@@ -6295,117 +6616,6 @@ class DockviewFloatingGroupPanel extends CompositeDisposable {
6295
6616
  }
6296
6617
  }
6297
6618
 
6298
- class PopoutWindow extends CompositeDisposable {
6299
- constructor(id, className, options) {
6300
- super();
6301
- this.id = id;
6302
- this.className = className;
6303
- this.options = options;
6304
- this._onDidClose = new Emitter();
6305
- this.onDidClose = this._onDidClose.event;
6306
- this._window = null;
6307
- this.addDisposables(this._onDidClose, {
6308
- dispose: () => {
6309
- this.close();
6310
- },
6311
- });
6312
- }
6313
- dimensions() {
6314
- if (!this._window) {
6315
- return null;
6316
- }
6317
- const left = this._window.value.screenX;
6318
- const top = this._window.value.screenY;
6319
- const width = this._window.value.innerWidth;
6320
- const height = this._window.value.innerHeight;
6321
- return { top, left, width, height };
6322
- }
6323
- close() {
6324
- if (this._window) {
6325
- this._window.disposable.dispose();
6326
- this._window.value.close();
6327
- this._window = null;
6328
- }
6329
- }
6330
- open(content) {
6331
- if (this._window) {
6332
- throw new Error('instance of popout window is already open');
6333
- }
6334
- const url = `${this.options.url}`;
6335
- const features = Object.entries({
6336
- top: this.options.top,
6337
- left: this.options.left,
6338
- width: this.options.width,
6339
- height: this.options.height,
6340
- })
6341
- .map(([key, value]) => `${key}=${value}`)
6342
- .join(',');
6343
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6344
- const externalWindow = window.open(url, this.id, features);
6345
- if (!externalWindow) {
6346
- return;
6347
- }
6348
- const disposable = new CompositeDisposable();
6349
- this._window = { value: externalWindow, disposable };
6350
- const cleanUp = () => {
6351
- this._onDidClose.fire();
6352
- this._window = null;
6353
- };
6354
- // prevent any default content from loading
6355
- // externalWindow.document.body.replaceWith(document.createElement('div'));
6356
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6357
- cleanUp();
6358
- this.close();
6359
- }));
6360
- externalWindow.addEventListener('load', () => {
6361
- const externalDocument = externalWindow.document;
6362
- externalDocument.title = document.title;
6363
- const div = document.createElement('div');
6364
- div.classList.add('dv-popout-window');
6365
- div.style.position = 'absolute';
6366
- div.style.width = '100%';
6367
- div.style.height = '100%';
6368
- div.style.top = '0px';
6369
- div.style.left = '0px';
6370
- div.classList.add(this.className);
6371
- div.appendChild(content);
6372
- externalDocument.body.replaceChildren(div);
6373
- externalDocument.body.classList.add(this.className);
6374
- addStyles(externalDocument, window.document.styleSheets);
6375
- externalWindow.addEventListener('beforeunload', () => {
6376
- // TODO: indicate external window is closing
6377
- cleanUp();
6378
- });
6379
- });
6380
- }
6381
- }
6382
-
6383
- class DockviewPopoutGroupPanel extends CompositeDisposable {
6384
- constructor(id, group, options) {
6385
- var _a;
6386
- super();
6387
- this.id = id;
6388
- this.group = group;
6389
- this.options = options;
6390
- this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
6391
- url: this.options.popoutUrl,
6392
- left: this.options.box.left,
6393
- top: this.options.box.top,
6394
- width: this.options.box.width,
6395
- height: this.options.box.height,
6396
- });
6397
- group.model.location = 'popout';
6398
- this.addDisposables(this.window, {
6399
- dispose: () => {
6400
- group.model.location = 'grid';
6401
- },
6402
- }, this.window.onDidClose(() => {
6403
- this.dispose();
6404
- }));
6405
- this.window.open(group.element);
6406
- }
6407
- }
6408
-
6409
6619
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6410
6620
  const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6411
6621
 
@@ -6419,11 +6629,13 @@ class OverlayRenderContainer extends CompositeDisposable {
6419
6629
  super();
6420
6630
  this.element = element;
6421
6631
  this.map = {};
6632
+ this._disposed = false;
6422
6633
  this.addDisposables(Disposable.from(() => {
6423
6634
  for (const value of Object.values(this.map)) {
6424
6635
  value.disposable.dispose();
6425
6636
  value.destroy.dispose();
6426
6637
  }
6638
+ this._disposed = true;
6427
6639
  }));
6428
6640
  }
6429
6641
  detatch(panel) {
@@ -6463,7 +6675,7 @@ class OverlayRenderContainer extends CompositeDisposable {
6463
6675
  focusContainer.style.top = `${box.top - box2.top}px`;
6464
6676
  focusContainer.style.width = `${box.width}px`;
6465
6677
  focusContainer.style.height = `${box.height}px`;
6466
- toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
6678
+ toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
6467
6679
  };
6468
6680
  const visibilityChanged = () => {
6469
6681
  if (panel.api.isVisible) {
@@ -6509,8 +6721,11 @@ class OverlayRenderContainer extends CompositeDisposable {
6509
6721
  resize();
6510
6722
  }));
6511
6723
  this.map[panel.api.id].destroy = Disposable.from(() => {
6512
- focusContainer.removeChild(panel.view.content.element);
6513
- this.element.removeChild(focusContainer);
6724
+ var _a;
6725
+ if (panel.view.content.element.parentElement === focusContainer) {
6726
+ focusContainer.removeChild(panel.view.content.element);
6727
+ }
6728
+ (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);
6514
6729
  });
6515
6730
  queueMicrotask(() => {
6516
6731
  if (this.isDisposed) {
@@ -6531,11 +6746,187 @@ class OverlayRenderContainer extends CompositeDisposable {
6531
6746
  }
6532
6747
  }
6533
6748
 
6749
+ /******************************************************************************
6750
+ Copyright (c) Microsoft Corporation.
6751
+
6752
+ Permission to use, copy, modify, and/or distribute this software for any
6753
+ purpose with or without fee is hereby granted.
6754
+
6755
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6756
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6757
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6758
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6759
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6760
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6761
+ PERFORMANCE OF THIS SOFTWARE.
6762
+ ***************************************************************************** */
6763
+ /* global Reflect, Promise, SuppressedError, Symbol */
6764
+
6765
+
6766
+ function __awaiter(thisArg, _arguments, P, generator) {
6767
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6768
+ return new (P || (P = Promise))(function (resolve, reject) {
6769
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6770
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6771
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
6772
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
6773
+ });
6774
+ }
6775
+
6776
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
6777
+ var e = new Error(message);
6778
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
6779
+ };
6780
+
6781
+ class PopoutWindow extends CompositeDisposable {
6782
+ get window() {
6783
+ var _a, _b;
6784
+ return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
6785
+ }
6786
+ constructor(target, className, options) {
6787
+ super();
6788
+ this.target = target;
6789
+ this.className = className;
6790
+ this.options = options;
6791
+ this._onWillClose = new Emitter();
6792
+ this.onWillClose = this._onWillClose.event;
6793
+ this._onDidClose = new Emitter();
6794
+ this.onDidClose = this._onDidClose.event;
6795
+ this._window = null;
6796
+ this.addDisposables(this._onWillClose, this._onDidClose, {
6797
+ dispose: () => {
6798
+ this.close();
6799
+ },
6800
+ });
6801
+ }
6802
+ dimensions() {
6803
+ if (!this._window) {
6804
+ return null;
6805
+ }
6806
+ const left = this._window.value.screenX;
6807
+ const top = this._window.value.screenY;
6808
+ const width = this._window.value.innerWidth;
6809
+ const height = this._window.value.innerHeight;
6810
+ return { top, left, width, height };
6811
+ }
6812
+ close() {
6813
+ var _a, _b;
6814
+ if (this._window) {
6815
+ this._onWillClose.fire();
6816
+ (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {
6817
+ id: this.target,
6818
+ window: this._window.value,
6819
+ });
6820
+ this._window.disposable.dispose();
6821
+ this._window.value.close();
6822
+ this._window = null;
6823
+ this._onDidClose.fire();
6824
+ }
6825
+ }
6826
+ open() {
6827
+ var _a, _b;
6828
+ return __awaiter(this, void 0, void 0, function* () {
6829
+ if (this._window) {
6830
+ throw new Error('instance of popout window is already open');
6831
+ }
6832
+ const url = `${this.options.url}`;
6833
+ const features = Object.entries({
6834
+ top: this.options.top,
6835
+ left: this.options.left,
6836
+ width: this.options.width,
6837
+ height: this.options.height,
6838
+ })
6839
+ .map(([key, value]) => `${key}=${value}`)
6840
+ .join(',');
6841
+ /**
6842
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6843
+ */
6844
+ const externalWindow = window.open(url, this.target, features);
6845
+ if (!externalWindow) {
6846
+ /**
6847
+ * Popup blocked
6848
+ */
6849
+ return null;
6850
+ }
6851
+ const disposable = new CompositeDisposable();
6852
+ this._window = { value: externalWindow, disposable };
6853
+ disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6854
+ /**
6855
+ * before the main window closes we should close this popup too
6856
+ * to be good citizens
6857
+ *
6858
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6859
+ */
6860
+ this.close();
6861
+ }));
6862
+ const container = this.createPopoutWindowContainer();
6863
+ if (this.className) {
6864
+ container.classList.add(this.className);
6865
+ }
6866
+ (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {
6867
+ id: this.target,
6868
+ window: externalWindow,
6869
+ });
6870
+ return new Promise((resolve) => {
6871
+ externalWindow.addEventListener('unload', (e) => {
6872
+ // if page fails to load before unloading
6873
+ // this.close();
6874
+ });
6875
+ externalWindow.addEventListener('load', () => {
6876
+ /**
6877
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
6878
+ */
6879
+ const externalDocument = externalWindow.document;
6880
+ externalDocument.title = document.title;
6881
+ externalDocument.body.appendChild(container);
6882
+ addStyles(externalDocument, window.document.styleSheets);
6883
+ /**
6884
+ * beforeunload must be registered after load for reasons I could not determine
6885
+ * otherwise the beforeunload event will not fire when the window is closed
6886
+ */
6887
+ addDisposableWindowListener(externalWindow, 'beforeunload', () => {
6888
+ /**
6889
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6890
+ */
6891
+ this.close();
6892
+ });
6893
+ resolve(container);
6894
+ });
6895
+ });
6896
+ });
6897
+ }
6898
+ createPopoutWindowContainer() {
6899
+ const el = document.createElement('div');
6900
+ el.classList.add('dv-popout-window');
6901
+ el.id = 'dv-popout-window';
6902
+ el.style.position = 'absolute';
6903
+ el.style.width = '100%';
6904
+ el.style.height = '100%';
6905
+ el.style.top = '0px';
6906
+ el.style.left = '0px';
6907
+ return el;
6908
+ }
6909
+ }
6910
+
6534
6911
  const DEFAULT_ROOT_OVERLAY_MODEL = {
6535
6912
  activationSize: { type: 'pixels', value: 10 },
6536
6913
  size: { type: 'pixels', value: 20 },
6537
6914
  };
6538
- function getTheme(element) {
6915
+ function moveGroupWithoutDestroying(options) {
6916
+ const activePanel = options.from.activePanel;
6917
+ const panels = [...options.from.panels].map((panel) => {
6918
+ const removedPanel = options.from.model.removePanel(panel);
6919
+ options.from.model.renderContainer.detatch(panel);
6920
+ return removedPanel;
6921
+ });
6922
+ panels.forEach((panel) => {
6923
+ options.to.model.openPanel(panel, {
6924
+ skipSetActive: activePanel !== panel,
6925
+ skipSetGroupActive: true,
6926
+ });
6927
+ });
6928
+ }
6929
+ function getDockviewTheme(element) {
6539
6930
  function toClassList(element) {
6540
6931
  const list = [];
6541
6932
  for (let i = 0; i < element.classList.length; i++) {
@@ -6586,6 +6977,7 @@ class DockviewComponent extends BaseGrid {
6586
6977
  styles: options.styles,
6587
6978
  parentElement: options.parentElement,
6588
6979
  disableAutoResizing: options.disableAutoResizing,
6980
+ locked: options.locked,
6589
6981
  });
6590
6982
  this.nextGroupId = sequentialNumberGenerator();
6591
6983
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -6596,6 +6988,10 @@ class DockviewComponent extends BaseGrid {
6596
6988
  this.onWillDragGroup = this._onWillDragGroup.event;
6597
6989
  this._onDidDrop = new Emitter();
6598
6990
  this.onDidDrop = this._onDidDrop.event;
6991
+ this._onWillDrop = new Emitter();
6992
+ this.onWillDrop = this._onWillDrop.event;
6993
+ this._onWillShowOverlay = new Emitter();
6994
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
6599
6995
  this._onDidRemovePanel = new Emitter();
6600
6996
  this.onDidRemovePanel = this._onDidRemovePanel.event;
6601
6997
  this._onDidAddPanel = new Emitter();
@@ -6604,15 +7000,36 @@ class DockviewComponent extends BaseGrid {
6604
7000
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
6605
7001
  this._onDidActivePanelChange = new Emitter();
6606
7002
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7003
+ this._onDidMovePanel = new Emitter();
6607
7004
  this._floatingGroups = [];
6608
7005
  this._popoutGroups = [];
7006
+ this._ignoreEvents = 0;
7007
+ this._onDidRemoveGroup = new Emitter();
7008
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
7009
+ this._onDidAddGroup = new Emitter();
7010
+ this.onDidAddGroup = this._onDidAddGroup.event;
7011
+ this._onDidActiveGroupChange = new Emitter();
7012
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7013
+ this._moving = false;
6609
7014
  const gready = document.createElement('div');
6610
7015
  gready.className = 'dv-overlay-render-container';
6611
7016
  this.gridview.element.appendChild(gready);
6612
7017
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
6613
7018
  toggleClass(this.gridview.element, 'dv-dockview', true);
6614
7019
  toggleClass(this.element, 'dv-debug', !!options.debug);
6615
- this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
7020
+ 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) => {
7021
+ if (!this._moving) {
7022
+ this._onDidAddGroup.fire(event);
7023
+ }
7024
+ }), this.onDidRemove((event) => {
7025
+ if (!this._moving) {
7026
+ this._onDidRemoveGroup.fire(event);
7027
+ }
7028
+ }), this.onDidActiveChange((event) => {
7029
+ if (!this._moving) {
7030
+ this._onDidActiveGroupChange.fire(event);
7031
+ }
7032
+ }), Event.any(this.onDidAdd, this.onDidRemove)(() => {
6616
7033
  this.updateWatermark();
6617
7034
  }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
6618
7035
  this._bufferOnDidLayoutChange.fire();
@@ -6623,7 +7040,7 @@ class DockviewComponent extends BaseGrid {
6623
7040
  }
6624
7041
  // iterate over a copy of the array since .dispose() mutates the original array
6625
7042
  for (const group of [...this._popoutGroups]) {
6626
- group.dispose();
7043
+ group.disposable.dispose();
6627
7044
  }
6628
7045
  }));
6629
7046
  this._options = options;
@@ -6669,7 +7086,7 @@ class DockviewComponent extends BaseGrid {
6669
7086
  return this.options.showDndOverlay({
6670
7087
  nativeEvent: event,
6671
7088
  position: position,
6672
- target: DockviewDropTargets.Edge,
7089
+ target: 'edge',
6673
7090
  getData: getPanelData,
6674
7091
  });
6675
7092
  }
@@ -6678,88 +7095,259 @@ class DockviewComponent extends BaseGrid {
6678
7095
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
6679
7096
  overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
6680
7097
  });
6681
- this.addDisposables(this._rootDropTarget.onDrop((event) => {
7098
+ this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
7099
+ if (this.gridview.length > 0 && event.position === 'center') {
7100
+ // option only available when no panels in primary grid
7101
+ return;
7102
+ }
7103
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
7104
+ kind: 'edge',
7105
+ }));
7106
+ }), this._rootDropTarget.onDrop((event) => {
6682
7107
  var _a;
7108
+ const willDropEvent = new DockviewWillDropEvent({
7109
+ nativeEvent: event.nativeEvent,
7110
+ position: event.position,
7111
+ panel: undefined,
7112
+ api: this._api,
7113
+ group: undefined,
7114
+ getData: getPanelData,
7115
+ kind: 'edge',
7116
+ });
7117
+ this._onWillDrop.fire(willDropEvent);
7118
+ if (willDropEvent.defaultPrevented) {
7119
+ return;
7120
+ }
6683
7121
  const data = getPanelData();
6684
7122
  if (data) {
6685
- this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined, 'center');
7123
+ this.moveGroupOrPanel({
7124
+ from: {
7125
+ groupId: data.groupId,
7126
+ panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,
7127
+ },
7128
+ to: {
7129
+ group: this.orthogonalize(event.position),
7130
+ position: 'center',
7131
+ },
7132
+ });
6686
7133
  }
6687
7134
  else {
6688
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
7135
+ this._onDidDrop.fire(new DockviewDidDropEvent({
7136
+ nativeEvent: event.nativeEvent,
7137
+ position: event.position,
7138
+ panel: undefined,
7139
+ api: this._api,
7140
+ group: undefined,
7141
+ getData: getPanelData,
7142
+ }));
6689
7143
  }
6690
7144
  }), this._rootDropTarget);
6691
7145
  this._api = new DockviewApi(this);
6692
7146
  this.updateWatermark();
6693
7147
  }
6694
- addPopoutGroup(item, options) {
6695
- var _a;
6696
- let group;
6697
- let box = options === null || options === void 0 ? void 0 : options.position;
6698
- if (item instanceof DockviewPanel) {
6699
- group = this.createGroup();
6700
- this.removePanel(item, {
6701
- removeEmptyGroup: true,
6702
- skipDispose: true,
6703
- });
6704
- group.model.openPanel(item);
6705
- if (!box) {
6706
- box = this.element.getBoundingClientRect();
7148
+ addPopoutGroup(itemToPopout, options) {
7149
+ var _a, _b, _c;
7150
+ if (itemToPopout instanceof DockviewPanel &&
7151
+ itemToPopout.group.size === 1) {
7152
+ return this.addPopoutGroup(itemToPopout.group);
7153
+ }
7154
+ const theme = getDockviewTheme(this.gridview.element);
7155
+ const element = this.element;
7156
+ function getBox() {
7157
+ if (options === null || options === void 0 ? void 0 : options.position) {
7158
+ return options.position;
7159
+ }
7160
+ if (itemToPopout instanceof DockviewGroupPanel) {
7161
+ return itemToPopout.element.getBoundingClientRect();
7162
+ }
7163
+ if (itemToPopout.group) {
7164
+ return itemToPopout.group.element.getBoundingClientRect();
7165
+ }
7166
+ return element.getBoundingClientRect();
7167
+ }
7168
+ const box = getBox();
7169
+ 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;
7170
+ if (itemToPopout.api.location.type === 'grid') {
7171
+ itemToPopout.api.setVisible(false);
7172
+ }
7173
+ const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7174
+ theme !== null && theme !== void 0 ? theme : '', {
7175
+ url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
7176
+ left: window.screenX + box.left,
7177
+ top: window.screenY + box.top,
7178
+ width: box.width,
7179
+ height: box.height,
7180
+ onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
7181
+ onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
7182
+ });
7183
+ const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {
7184
+ popoutWindowDisposable.dispose();
7185
+ }));
7186
+ return _window
7187
+ .open()
7188
+ .then((popoutContainer) => {
7189
+ var _a;
7190
+ if (_window.isDisposed) {
7191
+ return;
6707
7192
  }
6708
- }
6709
- else {
6710
- group = item;
6711
- if (!box) {
6712
- box = group.element.getBoundingClientRect();
7193
+ if (popoutContainer === null) {
7194
+ popoutWindowDisposable.dispose();
7195
+ return;
6713
7196
  }
6714
- const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6715
- options.skipRemoveGroup;
6716
- if (!skip) {
6717
- this.doRemoveGroup(item, { skipDispose: true });
6718
- }
6719
- }
6720
- const theme = getTheme(this.gridview.element);
6721
- const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
6722
- group, {
6723
- className: theme !== null && theme !== void 0 ? theme : '',
6724
- popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
6725
- box: {
6726
- left: window.screenX + box.left,
6727
- top: window.screenY + box.top,
6728
- width: box.width,
6729
- height: box.height,
6730
- },
7197
+ const gready = document.createElement('div');
7198
+ gready.className = 'dv-overlay-render-container';
7199
+ const overlayRenderContainer = new OverlayRenderContainer(gready);
7200
+ const referenceGroup = itemToPopout instanceof DockviewPanel
7201
+ ? itemToPopout.group
7202
+ : itemToPopout;
7203
+ const referenceLocation = itemToPopout.api.location.type;
7204
+ const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
7205
+ group.model.renderContainer = overlayRenderContainer;
7206
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
7207
+ this._onDidAddGroup.fire(group);
7208
+ }
7209
+ if (itemToPopout instanceof DockviewPanel) {
7210
+ this.movingLock(() => {
7211
+ const panel = referenceGroup.model.removePanel(itemToPopout);
7212
+ group.model.openPanel(panel);
7213
+ });
7214
+ }
7215
+ else {
7216
+ this.movingLock(() => moveGroupWithoutDestroying({
7217
+ from: referenceGroup,
7218
+ to: group,
7219
+ }));
7220
+ switch (referenceLocation) {
7221
+ case 'grid':
7222
+ referenceGroup.api.setVisible(false);
7223
+ break;
7224
+ case 'floating':
7225
+ case 'popout':
7226
+ this.removeGroup(referenceGroup);
7227
+ break;
7228
+ }
7229
+ }
7230
+ popoutContainer.classList.add('dv-dockview');
7231
+ popoutContainer.style.overflow = 'hidden';
7232
+ popoutContainer.appendChild(gready);
7233
+ popoutContainer.appendChild(group.element);
7234
+ group.model.location = {
7235
+ type: 'popout',
7236
+ getWindow: () => _window.window,
7237
+ };
7238
+ this.doSetGroupAndPanelActive(group);
7239
+ popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
7240
+ var _a;
7241
+ if (event.isActive) {
7242
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7243
+ }
7244
+ }), group.api.onWillFocus(() => {
7245
+ var _a;
7246
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7247
+ }));
7248
+ let returnedGroup;
7249
+ const value = {
7250
+ window: _window,
7251
+ popoutGroup: group,
7252
+ referenceGroup: this.getPanel(referenceGroup.id)
7253
+ ? referenceGroup.id
7254
+ : undefined,
7255
+ disposable: {
7256
+ dispose: () => {
7257
+ popoutWindowDisposable.dispose();
7258
+ return returnedGroup;
7259
+ },
7260
+ },
7261
+ };
7262
+ popoutWindowDisposable.addDisposables(
7263
+ /**
7264
+ * ResizeObserver seems slow here, I do not know why but we don't need it
7265
+ * since we can reply on the window resize event as we will occupy the full
7266
+ * window dimensions
7267
+ */
7268
+ addDisposableWindowListener(_window.window, 'resize', () => {
7269
+ group.layout(window.innerWidth, window.innerHeight);
7270
+ }), overlayRenderContainer, Disposable.from(() => {
7271
+ if (this.getPanel(referenceGroup.id)) {
7272
+ this.movingLock(() => moveGroupWithoutDestroying({
7273
+ from: group,
7274
+ to: referenceGroup,
7275
+ }));
7276
+ if (!referenceGroup.api.isVisible) {
7277
+ referenceGroup.api.setVisible(true);
7278
+ }
7279
+ if (this.getPanel(group.id)) {
7280
+ this.doRemoveGroup(group, {
7281
+ skipPopoutAssociated: true,
7282
+ });
7283
+ }
7284
+ }
7285
+ else {
7286
+ if (this.getPanel(group.id)) {
7287
+ const removedGroup = this.doRemoveGroup(group, {
7288
+ skipDispose: true,
7289
+ skipActive: true,
7290
+ });
7291
+ removedGroup.model.renderContainer =
7292
+ this.overlayRenderContainer;
7293
+ removedGroup.model.location = { type: 'grid' };
7294
+ returnedGroup = removedGroup;
7295
+ }
7296
+ }
7297
+ }));
7298
+ this._popoutGroups.push(value);
7299
+ this.updateWatermark();
7300
+ })
7301
+ .catch((err) => {
7302
+ console.error(err);
6731
7303
  });
6732
- popoutWindow.addDisposables({
6733
- dispose: () => {
6734
- remove(this._popoutGroups, popoutWindow);
6735
- this.updateWatermark();
6736
- },
6737
- }, popoutWindow.window.onDidClose(() => {
6738
- this.doAddGroup(group, [0]);
6739
- }));
6740
- this._popoutGroups.push(popoutWindow);
6741
- this.updateWatermark();
6742
7304
  }
6743
7305
  addFloatingGroup(item, coord, options) {
6744
- var _a, _b, _c, _d, _e, _f;
7306
+ var _a, _b, _c, _d, _e, _f, _g;
6745
7307
  let group;
6746
7308
  if (item instanceof DockviewPanel) {
6747
7309
  group = this.createGroup();
6748
- this.removePanel(item, {
7310
+ this._onDidAddGroup.fire(group);
7311
+ this.movingLock(() => this.removePanel(item, {
6749
7312
  removeEmptyGroup: true,
6750
7313
  skipDispose: true,
6751
- });
6752
- group.model.openPanel(item);
7314
+ skipSetActiveGroup: true,
7315
+ }));
7316
+ group.model.openPanel(item, { skipSetGroupActive: true });
6753
7317
  }
6754
7318
  else {
6755
7319
  group = item;
7320
+ const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;
7321
+ const popoutReferenceGroup = popoutReferenceGroupId
7322
+ ? this.getPanel(popoutReferenceGroupId)
7323
+ : undefined;
6756
7324
  const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6757
7325
  options.skipRemoveGroup;
6758
7326
  if (!skip) {
6759
- this.doRemoveGroup(item, { skipDispose: true });
7327
+ if (popoutReferenceGroup) {
7328
+ this.movingLock(() => moveGroupWithoutDestroying({
7329
+ from: item,
7330
+ to: popoutReferenceGroup,
7331
+ }));
7332
+ this.doRemoveGroup(item, {
7333
+ skipPopoutReturn: true,
7334
+ skipPopoutAssociated: true,
7335
+ });
7336
+ this.doRemoveGroup(popoutReferenceGroup, {
7337
+ skipDispose: true,
7338
+ });
7339
+ group = popoutReferenceGroup;
7340
+ }
7341
+ else {
7342
+ this.doRemoveGroup(item, {
7343
+ skipDispose: true,
7344
+ skipPopoutReturn: true,
7345
+ skipPopoutAssociated: !!popoutReferenceGroup,
7346
+ });
7347
+ }
6760
7348
  }
6761
7349
  }
6762
- group.model.location = 'floating';
7350
+ group.model.location = { type: 'floating' };
6763
7351
  const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
6764
7352
  ? Math.max(coord.x, 0)
6765
7353
  : DEFAULT_FLOATING_GROUP_POSITION.left;
@@ -6769,16 +7357,16 @@ class DockviewComponent extends BaseGrid {
6769
7357
  const overlay = new Overlay({
6770
7358
  container: this.gridview.element,
6771
7359
  content: group.element,
6772
- height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
6773
- width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
7360
+ height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
7361
+ width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
6774
7362
  left: overlayLeft,
6775
7363
  top: overlayTop,
6776
7364
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
6777
7365
  ? undefined
6778
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7366
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6779
7367
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
6780
7368
  ? undefined
6781
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7369
+ : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6782
7370
  });
6783
7371
  const el = group.element.querySelector('.void-container');
6784
7372
  if (!el) {
@@ -6809,12 +7397,15 @@ class DockviewComponent extends BaseGrid {
6809
7397
  }), {
6810
7398
  dispose: () => {
6811
7399
  disposable.dispose();
6812
- group.model.location = 'grid';
7400
+ group.model.location = { type: 'grid' };
6813
7401
  remove(this._floatingGroups, floatingGroupPanel);
6814
7402
  this.updateWatermark();
6815
7403
  },
6816
7404
  });
6817
7405
  this._floatingGroups.push(floatingGroupPanel);
7406
+ if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
7407
+ this.doSetGroupAndPanelActive(group);
7408
+ }
6818
7409
  this.updateWatermark();
6819
7410
  }
6820
7411
  orthogonalize(position) {
@@ -6904,8 +7495,8 @@ class DockviewComponent extends BaseGrid {
6904
7495
  return this.panels.find((panel) => panel.id === id);
6905
7496
  }
6906
7497
  setActivePanel(panel) {
6907
- this.doSetGroupActive(panel.group);
6908
7498
  panel.group.model.openPanel(panel);
7499
+ this.doSetGroupAndPanelActive(panel.group);
6909
7500
  }
6910
7501
  moveToNext(options = {}) {
6911
7502
  var _a;
@@ -6966,7 +7557,8 @@ class DockviewComponent extends BaseGrid {
6966
7557
  });
6967
7558
  const popoutGroups = this._popoutGroups.map((group) => {
6968
7559
  return {
6969
- data: group.group.toJSON(),
7560
+ data: group.popoutGroup.toJSON(),
7561
+ gridReferenceGroup: group.referenceGroup,
6970
7562
  position: group.window.dimensions(),
6971
7563
  };
6972
7564
  });
@@ -6984,7 +7576,7 @@ class DockviewComponent extends BaseGrid {
6984
7576
  return result;
6985
7577
  }
6986
7578
  fromJSON(data) {
6987
- var _a, _b;
7579
+ var _a, _b, _c;
6988
7580
  this.clear();
6989
7581
  if (typeof data !== 'object' || data === null) {
6990
7582
  throw new Error('serialized layout must be a non-null object');
@@ -7023,7 +7615,7 @@ class DockviewComponent extends BaseGrid {
7023
7615
  const isActive = typeof activeView === 'string' &&
7024
7616
  activeView === panel.id;
7025
7617
  group.model.openPanel(panel, {
7026
- skipSetPanelActive: !isActive,
7618
+ skipSetActive: !isActive,
7027
7619
  skipSetGroupActive: true,
7028
7620
  });
7029
7621
  }
@@ -7053,11 +7645,16 @@ class DockviewComponent extends BaseGrid {
7053
7645
  }
7054
7646
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7055
7647
  for (const serializedPopoutGroup of serializedPopoutGroups) {
7056
- const { data, position } = serializedPopoutGroup;
7648
+ const { data, position, gridReferenceGroup } = serializedPopoutGroup;
7057
7649
  const group = createGroupFromSerializedState(data);
7058
- this.addPopoutGroup(group, {
7650
+ this.addPopoutGroup((_c = (gridReferenceGroup
7651
+ ? this.getPanel(gridReferenceGroup)
7652
+ : undefined)) !== null && _c !== void 0 ? _c : group, {
7059
7653
  skipRemoveGroup: true,
7060
7654
  position: position !== null && position !== void 0 ? position : undefined,
7655
+ overridePopoutGroup: gridReferenceGroup
7656
+ ? group
7657
+ : undefined,
7061
7658
  });
7062
7659
  }
7063
7660
  for (const floatingGroup of this._floatingGroups) {
@@ -7104,12 +7701,13 @@ class DockviewComponent extends BaseGrid {
7104
7701
  */
7105
7702
  throw err;
7106
7703
  }
7704
+ this.updateWatermark();
7107
7705
  this._onDidLayoutFromJSON.fire();
7108
7706
  }
7109
7707
  clear() {
7110
7708
  const groups = Array.from(this._groups.values()).map((_) => _.value);
7111
7709
  const hasActiveGroup = !!this.activeGroup;
7112
- const hasActivePanel = !!this.activePanel;
7710
+ !!this.activePanel;
7113
7711
  for (const group of groups) {
7114
7712
  // remove the group will automatically remove the panels
7115
7713
  this.removeGroup(group, { skipActive: true });
@@ -7117,9 +7715,6 @@ class DockviewComponent extends BaseGrid {
7117
7715
  if (hasActiveGroup) {
7118
7716
  this.doSetGroupAndPanelActive(undefined);
7119
7717
  }
7120
- if (hasActivePanel) {
7121
- this._onDidActivePanelChange.fire(undefined);
7122
- }
7123
7718
  this.gridview.clear();
7124
7719
  }
7125
7720
  closeAllGroups() {
@@ -7160,6 +7755,7 @@ class DockviewComponent extends BaseGrid {
7160
7755
  const group = this.orthogonalize(directionToPosition(options.position.direction));
7161
7756
  const panel = this.createPanel(options, group);
7162
7757
  group.model.openPanel(panel);
7758
+ this.doSetGroupAndPanelActive(group);
7163
7759
  return panel;
7164
7760
  }
7165
7761
  }
@@ -7171,6 +7767,7 @@ class DockviewComponent extends BaseGrid {
7171
7767
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
7172
7768
  if (options.floating) {
7173
7769
  const group = this.createGroup();
7770
+ this._onDidAddGroup.fire(group);
7174
7771
  const o = typeof options.floating === 'object' &&
7175
7772
  options.floating !== null
7176
7773
  ? options.floating
@@ -7178,16 +7775,16 @@ class DockviewComponent extends BaseGrid {
7178
7775
  this.addFloatingGroup(group, o, {
7179
7776
  inDragMode: false,
7180
7777
  skipRemoveGroup: true,
7778
+ skipActiveGroup: true,
7181
7779
  });
7182
- this._onDidAddGroup.fire(group);
7183
7780
  panel = this.createPanel(options, group);
7184
7781
  group.model.openPanel(panel);
7185
- this.doSetGroupAndPanelActive(group);
7186
7782
  }
7187
- else if (referenceGroup.api.location === 'floating' ||
7783
+ else if (referenceGroup.api.location.type === 'floating' ||
7188
7784
  target === 'center') {
7189
7785
  panel = this.createPanel(options, referenceGroup);
7190
7786
  referenceGroup.model.openPanel(panel);
7787
+ this.doSetGroupAndPanelActive(referenceGroup);
7191
7788
  }
7192
7789
  else {
7193
7790
  const location = getGridLocation(referenceGroup.element);
@@ -7195,10 +7792,12 @@ class DockviewComponent extends BaseGrid {
7195
7792
  const group = this.createGroupAtLocation(relativeLocation);
7196
7793
  panel = this.createPanel(options, group);
7197
7794
  group.model.openPanel(panel);
7795
+ this.doSetGroupAndPanelActive(group);
7198
7796
  }
7199
7797
  }
7200
7798
  else if (options.floating) {
7201
7799
  const group = this.createGroup();
7800
+ this._onDidAddGroup.fire(group);
7202
7801
  const o = typeof options.floating === 'object' &&
7203
7802
  options.floating !== null
7204
7803
  ? options.floating
@@ -7206,16 +7805,16 @@ class DockviewComponent extends BaseGrid {
7206
7805
  this.addFloatingGroup(group, o, {
7207
7806
  inDragMode: false,
7208
7807
  skipRemoveGroup: true,
7808
+ skipActiveGroup: true,
7209
7809
  });
7210
- this._onDidAddGroup.fire(group);
7211
7810
  panel = this.createPanel(options, group);
7212
7811
  group.model.openPanel(panel);
7213
- this.doSetGroupAndPanelActive(group);
7214
7812
  }
7215
7813
  else {
7216
7814
  const group = this.createGroupAtLocation();
7217
7815
  panel = this.createPanel(options, group);
7218
7816
  group.model.openPanel(panel);
7817
+ this.doSetGroupAndPanelActive(group);
7219
7818
  }
7220
7819
  return panel;
7221
7820
  }
@@ -7227,13 +7826,15 @@ class DockviewComponent extends BaseGrid {
7227
7826
  if (!group) {
7228
7827
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
7229
7828
  }
7230
- group.model.removePanel(panel);
7829
+ group.model.removePanel(panel, {
7830
+ skipSetActiveGroup: options.skipSetActiveGroup,
7831
+ });
7231
7832
  if (!options.skipDispose) {
7232
- this.overlayRenderContainer.detatch(panel);
7833
+ panel.group.model.renderContainer.detatch(panel);
7233
7834
  panel.dispose();
7234
7835
  }
7235
7836
  if (group.size === 0 && options.removeEmptyGroup) {
7236
- this.removeGroup(group);
7837
+ this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
7237
7838
  }
7238
7839
  }
7239
7840
  createWatermarkComponent() {
@@ -7246,7 +7847,7 @@ class DockviewComponent extends BaseGrid {
7246
7847
  }
7247
7848
  updateWatermark() {
7248
7849
  var _a, _b;
7249
- if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
7850
+ if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
7250
7851
  if (!this.watermark) {
7251
7852
  this.watermark = this.createWatermarkComponent();
7252
7853
  this.watermark.init({
@@ -7292,36 +7893,42 @@ class DockviewComponent extends BaseGrid {
7292
7893
  }
7293
7894
  else {
7294
7895
  const group = this.orthogonalize(directionToPosition(options.direction));
7896
+ if (!options.skipSetActive) {
7897
+ this.doSetGroupAndPanelActive(group);
7898
+ }
7295
7899
  return group;
7296
7900
  }
7297
7901
  const target = toTarget(options.direction || 'within');
7298
7902
  const location = getGridLocation(referenceGroup.element);
7299
7903
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
7300
7904
  this.doAddGroup(group, relativeLocation);
7905
+ if (!options.skipSetActive) {
7906
+ this.doSetGroupAndPanelActive(group);
7907
+ }
7301
7908
  return group;
7302
7909
  }
7303
7910
  else {
7304
7911
  this.doAddGroup(group);
7912
+ this.doSetGroupAndPanelActive(group);
7305
7913
  return group;
7306
7914
  }
7307
7915
  }
7308
7916
  removeGroup(group, options) {
7917
+ this.doRemoveGroup(group, options);
7918
+ }
7919
+ doRemoveGroup(group, options) {
7309
7920
  var _a;
7310
7921
  const panels = [...group.panels]; // reassign since group panels will mutate
7311
- for (const panel of panels) {
7312
- this.removePanel(panel, {
7313
- removeEmptyGroup: false,
7314
- skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7315
- });
7922
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7923
+ for (const panel of panels) {
7924
+ this.removePanel(panel, {
7925
+ removeEmptyGroup: false,
7926
+ skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7927
+ });
7928
+ }
7316
7929
  }
7317
7930
  const activePanel = this.activePanel;
7318
- this.doRemoveGroup(group, options);
7319
- if (this.activePanel !== activePanel) {
7320
- this._onDidActivePanelChange.fire(this.activePanel);
7321
- }
7322
- }
7323
- doRemoveGroup(group, options) {
7324
- if (group.api.location === 'floating') {
7931
+ if (group.api.location.type === 'floating') {
7325
7932
  const floatingGroup = this._floatingGroups.find((_) => _.group === group);
7326
7933
  if (floatingGroup) {
7327
7934
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -7333,60 +7940,124 @@ class DockviewComponent extends BaseGrid {
7333
7940
  floatingGroup.dispose();
7334
7941
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7335
7942
  const groups = Array.from(this._groups.values());
7336
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7943
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7337
7944
  }
7338
7945
  return floatingGroup.group;
7339
7946
  }
7340
7947
  throw new Error('failed to find floating group');
7341
7948
  }
7342
- if (group.api.location === 'popout') {
7343
- const selectedGroup = this._popoutGroups.find((_) => _.group === group);
7949
+ if (group.api.location.type === 'popout') {
7950
+ const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
7344
7951
  if (selectedGroup) {
7345
7952
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7346
- selectedGroup.group.dispose();
7953
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {
7954
+ const refGroup = selectedGroup.referenceGroup
7955
+ ? this.getPanel(selectedGroup.referenceGroup)
7956
+ : undefined;
7957
+ if (refGroup) {
7958
+ this.removeGroup(refGroup);
7959
+ }
7960
+ }
7961
+ selectedGroup.popoutGroup.dispose();
7347
7962
  this._groups.delete(group.id);
7348
7963
  this._onDidRemoveGroup.fire(group);
7349
7964
  }
7350
- selectedGroup.dispose();
7965
+ const removedGroup = selectedGroup.disposable.dispose();
7966
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
7967
+ this.doAddGroup(removedGroup, [0]);
7968
+ this.doSetGroupAndPanelActive(removedGroup);
7969
+ }
7351
7970
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7352
7971
  const groups = Array.from(this._groups.values());
7353
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7972
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7354
7973
  }
7355
- return selectedGroup.group;
7974
+ this.updateWatermark();
7975
+ return selectedGroup.popoutGroup;
7356
7976
  }
7357
7977
  throw new Error('failed to find popout group');
7358
7978
  }
7359
- return super.doRemoveGroup(group, options);
7979
+ const re = super.doRemoveGroup(group, options);
7980
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {
7981
+ if (this.activePanel !== activePanel) {
7982
+ this._onDidActivePanelChange.fire(this.activePanel);
7983
+ }
7984
+ }
7985
+ return re;
7360
7986
  }
7361
- moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
7362
- var _a, _b, _c;
7987
+ movingLock(func) {
7988
+ const isMoving = this._moving;
7989
+ try {
7990
+ this._moving = true;
7991
+ return func();
7992
+ }
7993
+ finally {
7994
+ this._moving = isMoving;
7995
+ }
7996
+ }
7997
+ moveGroupOrPanel(options) {
7998
+ var _a;
7999
+ const destinationGroup = options.to.group;
8000
+ const sourceGroupId = options.from.groupId;
8001
+ const sourceItemId = options.from.panelId;
8002
+ const destinationTarget = options.to.position;
8003
+ const destinationIndex = options.to.index;
7363
8004
  const sourceGroup = sourceGroupId
7364
8005
  ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
7365
8006
  : undefined;
8007
+ if (!sourceGroup) {
8008
+ throw new Error(`Failed to find group id ${sourceGroupId}`);
8009
+ }
7366
8010
  if (sourceItemId === undefined) {
7367
- if (sourceGroup) {
7368
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
7369
- }
8011
+ /**
8012
+ * Moving an entire group into another group
8013
+ */
8014
+ this.moveGroup({
8015
+ from: { group: sourceGroup },
8016
+ to: {
8017
+ group: destinationGroup,
8018
+ position: destinationTarget,
8019
+ },
8020
+ });
7370
8021
  return;
7371
8022
  }
7372
8023
  if (!destinationTarget || destinationTarget === 'center') {
7373
- const groupItem = (_b = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _b !== void 0 ? _b : this.panels.find((panel) => panel.id === sourceItemId);
7374
- if (!groupItem) {
8024
+ /**
8025
+ * Dropping a panel within another group
8026
+ */
8027
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8028
+ skipSetActive: false,
8029
+ skipSetActiveGroup: true,
8030
+ }));
8031
+ if (!removedPanel) {
7375
8032
  throw new Error(`No panel with id ${sourceItemId}`);
7376
8033
  }
7377
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7378
- this.doRemoveGroup(sourceGroup);
8034
+ if (sourceGroup.model.size === 0) {
8035
+ // remove the group and do not set a new group as active
8036
+ this.doRemoveGroup(sourceGroup, { skipActive: true });
7379
8037
  }
7380
- destinationGroup.model.openPanel(groupItem, {
8038
+ this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
7381
8039
  index: destinationIndex,
8040
+ skipSetGroupActive: true,
8041
+ }));
8042
+ this.doSetGroupAndPanelActive(destinationGroup);
8043
+ this._onDidMovePanel.fire({
8044
+ panel: removedPanel,
7382
8045
  });
7383
8046
  }
7384
8047
  else {
8048
+ /**
8049
+ * Dropping a panel to the extremities of a group which will place that panel
8050
+ * into an adjacent group
8051
+ */
7385
8052
  const referenceLocation = getGridLocation(destinationGroup.element);
7386
8053
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7387
- if (sourceGroup && sourceGroup.size < 2) {
8054
+ if (sourceGroup.size < 2) {
8055
+ /**
8056
+ * If we are moving from a group which only has one panel left we will consider
8057
+ * moving the group itself rather than moving the panel into a newly created group
8058
+ */
7388
8059
  const [targetParentLocation, to] = tail(targetLocation);
7389
- if (sourceGroup.api.location === 'grid') {
8060
+ if (sourceGroup.api.location.type === 'grid') {
7390
8061
  const sourceLocation = getGridLocation(sourceGroup.element);
7391
8062
  const [sourceParentLocation, from] = tail(sourceLocation);
7392
8063
  if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
@@ -7394,77 +8065,122 @@ class DockviewComponent extends BaseGrid {
7394
8065
  // if a group has one tab - we are essentially moving the 'group'
7395
8066
  // which is equivalent to swapping two views in this case
7396
8067
  this.gridview.moveView(sourceParentLocation, from, to);
8068
+ return;
7397
8069
  }
7398
8070
  }
7399
8071
  // source group will become empty so delete the group
7400
- const targetGroup = this.doRemoveGroup(sourceGroup, {
8072
+ const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
7401
8073
  skipActive: true,
7402
8074
  skipDispose: true,
7403
- });
8075
+ }));
7404
8076
  // after deleting the group we need to re-evaulate the ref location
7405
8077
  const updatedReferenceLocation = getGridLocation(destinationGroup.element);
7406
8078
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
7407
- this.doAddGroup(targetGroup, location);
8079
+ this.movingLock(() => this.doAddGroup(targetGroup, location));
8080
+ this.doSetGroupAndPanelActive(targetGroup);
7408
8081
  }
7409
8082
  else {
7410
- const groupItem = (_c = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _c !== void 0 ? _c : this.panels.find((panel) => panel.id === sourceItemId);
7411
- if (!groupItem) {
8083
+ /**
8084
+ * The group we are removing from has many panels, we need to remove the panels we are moving,
8085
+ * create a new group, add the panels to that new group and add the new group in an appropiate position
8086
+ */
8087
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8088
+ skipSetActive: false,
8089
+ skipSetActiveGroup: true,
8090
+ }));
8091
+ if (!removedPanel) {
7412
8092
  throw new Error(`No panel with id ${sourceItemId}`);
7413
8093
  }
7414
8094
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7415
8095
  const group = this.createGroupAtLocation(dropLocation);
7416
- group.model.openPanel(groupItem);
8096
+ this.movingLock(() => group.model.openPanel(removedPanel, {
8097
+ skipSetGroupActive: true,
8098
+ }));
8099
+ this.doSetGroupAndPanelActive(group);
7417
8100
  }
7418
8101
  }
7419
8102
  }
7420
- moveGroup(sourceGroup, referenceGroup, target) {
7421
- if (sourceGroup) {
7422
- if (!target || target === 'center') {
7423
- const activePanel = sourceGroup.activePanel;
7424
- const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));
7425
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7426
- this.doRemoveGroup(sourceGroup);
7427
- }
8103
+ moveGroup(options) {
8104
+ const from = options.from.group;
8105
+ const to = options.to.group;
8106
+ const target = options.to.position;
8107
+ if (target === 'center') {
8108
+ const activePanel = from.activePanel;
8109
+ const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {
8110
+ skipSetActive: true,
8111
+ })));
8112
+ if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {
8113
+ this.doRemoveGroup(from, { skipActive: true });
8114
+ }
8115
+ this.movingLock(() => {
7428
8116
  for (const panel of panels) {
7429
- referenceGroup.model.openPanel(panel, {
7430
- skipSetPanelActive: panel !== activePanel,
8117
+ to.model.openPanel(panel, {
8118
+ skipSetActive: panel !== activePanel,
8119
+ skipSetGroupActive: true,
7431
8120
  });
7432
8121
  }
7433
- }
7434
- else {
7435
- switch (sourceGroup.api.location) {
7436
- case 'grid':
7437
- this.gridview.removeView(getGridLocation(sourceGroup.element));
7438
- break;
7439
- case 'floating': {
7440
- const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
7441
- if (!selectedFloatingGroup) {
7442
- throw new Error('failed to find floating group');
7443
- }
7444
- selectedFloatingGroup.dispose();
7445
- break;
8122
+ });
8123
+ this.doSetGroupAndPanelActive(to);
8124
+ panels.forEach((panel) => {
8125
+ this._onDidMovePanel.fire({ panel });
8126
+ });
8127
+ }
8128
+ else {
8129
+ switch (from.api.location.type) {
8130
+ case 'grid':
8131
+ this.gridview.removeView(getGridLocation(from.element));
8132
+ break;
8133
+ case 'floating': {
8134
+ const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);
8135
+ if (!selectedFloatingGroup) {
8136
+ throw new Error('failed to find floating group');
7446
8137
  }
7447
- case 'popout': {
7448
- const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
7449
- if (!selectedPopoutGroup) {
7450
- throw new Error('failed to find popout group');
7451
- }
7452
- selectedPopoutGroup.dispose();
8138
+ selectedFloatingGroup.dispose();
8139
+ break;
8140
+ }
8141
+ case 'popout': {
8142
+ const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);
8143
+ if (!selectedPopoutGroup) {
8144
+ throw new Error('failed to find popout group');
7453
8145
  }
8146
+ selectedPopoutGroup.disposable.dispose();
7454
8147
  }
7455
- const referenceLocation = getGridLocation(referenceGroup.element);
7456
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
7457
- this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);
7458
8148
  }
8149
+ const referenceLocation = getGridLocation(to.element);
8150
+ const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8151
+ this.gridview.addView(from, Sizing.Distribute, dropLocation);
8152
+ from.panels.forEach((panel) => {
8153
+ this._onDidMovePanel.fire({ panel });
8154
+ });
7459
8155
  }
7460
8156
  }
7461
- doSetGroupAndPanelActive(group, skipFocus) {
7462
- var _a, _b;
8157
+ doSetGroupActive(group) {
8158
+ super.doSetGroupActive(group);
8159
+ const activePanel = this.activePanel;
8160
+ if (!this._moving &&
8161
+ activePanel !== this._onDidActivePanelChange.value) {
8162
+ this._onDidActivePanelChange.fire(activePanel);
8163
+ }
8164
+ }
8165
+ doSetGroupAndPanelActive(group) {
8166
+ super.doSetGroupActive(group);
7463
8167
  const activePanel = this.activePanel;
7464
- super.doSetGroupActive(group, skipFocus);
7465
- if (((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel) !== activePanel) {
7466
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
8168
+ if (group &&
8169
+ this.hasMaximizedGroup() &&
8170
+ !this.isMaximizedGroup(group)) {
8171
+ this.exitMaximizedGroup();
8172
+ }
8173
+ if (!this._moving &&
8174
+ activePanel !== this._onDidActivePanelChange.value) {
8175
+ this._onDidActivePanelChange.fire(activePanel);
8176
+ }
8177
+ }
8178
+ getNextGroupId() {
8179
+ let id = this.nextGroupId.next();
8180
+ while (this._groups.has(id)) {
8181
+ id = this.nextGroupId.next();
7467
8182
  }
8183
+ return id;
7468
8184
  }
7469
8185
  createGroup(options) {
7470
8186
  if (!options) {
@@ -7482,7 +8198,7 @@ class DockviewComponent extends BaseGrid {
7482
8198
  }
7483
8199
  }
7484
8200
  const view = new DockviewGroupPanel(this, id, options);
7485
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
8201
+ view.init({ params: {}, accessor: this });
7486
8202
  if (!this._groups.has(view.id)) {
7487
8203
  const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
7488
8204
  this._onWillDragPanel.fire(event);
@@ -7490,20 +8206,48 @@ class DockviewComponent extends BaseGrid {
7490
8206
  this._onWillDragGroup.fire(event);
7491
8207
  }), view.model.onMove((event) => {
7492
8208
  const { groupId, itemId, target, index } = event;
7493
- this.moveGroupOrPanel(view, groupId, itemId, target, index);
8209
+ this.moveGroupOrPanel({
8210
+ from: { groupId: groupId, panelId: itemId },
8211
+ to: {
8212
+ group: view,
8213
+ position: target,
8214
+ index,
8215
+ },
8216
+ });
7494
8217
  }), view.model.onDidDrop((event) => {
7495
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
8218
+ this._onDidDrop.fire(event);
8219
+ }), view.model.onWillDrop((event) => {
8220
+ this._onWillDrop.fire(event);
8221
+ }), view.model.onWillShowOverlay((event) => {
8222
+ if (this.options.disableDnd) {
8223
+ event.preventDefault();
8224
+ return;
8225
+ }
8226
+ this._onWillShowOverlay.fire(event);
7496
8227
  }), view.model.onDidAddPanel((event) => {
8228
+ if (this._moving) {
8229
+ return;
8230
+ }
7497
8231
  this._onDidAddPanel.fire(event.panel);
7498
8232
  }), view.model.onDidRemovePanel((event) => {
8233
+ if (this._moving) {
8234
+ return;
8235
+ }
7499
8236
  this._onDidRemovePanel.fire(event.panel);
7500
8237
  }), view.model.onDidActivePanelChange((event) => {
7501
- this._onDidActivePanelChange.fire(event.panel);
8238
+ if (this._moving) {
8239
+ return;
8240
+ }
8241
+ if (event.panel !== this.activePanel) {
8242
+ return;
8243
+ }
8244
+ if (this._onDidActivePanelChange.value !== event.panel) {
8245
+ this._onDidActivePanelChange.fire(event.panel);
8246
+ }
7502
8247
  }));
7503
8248
  this._groups.set(view.id, { value: view, disposable });
7504
8249
  }
7505
- // TODO: must be called after the above listeners have been setup,
7506
- // not an ideal pattern
8250
+ // TODO: must be called after the above listeners have been setup, not an ideal pattern
7507
8251
  view.initialize();
7508
8252
  return view;
7509
8253
  }
@@ -7556,7 +8300,20 @@ class GridviewComponent extends BaseGrid {
7556
8300
  });
7557
8301
  this._onDidLayoutfromJSON = new Emitter();
7558
8302
  this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
8303
+ this._onDidRemoveGroup = new Emitter();
8304
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
8305
+ this._onDidAddGroup = new Emitter();
8306
+ this.onDidAddGroup = this._onDidAddGroup.event;
8307
+ this._onDidActiveGroupChange = new Emitter();
8308
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7559
8309
  this._options = options;
8310
+ this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {
8311
+ this._onDidAddGroup.fire(event);
8312
+ }), this.onDidRemove((event) => {
8313
+ this._onDidRemoveGroup.fire(event);
8314
+ }), this.onDidActiveChange((event) => {
8315
+ this._onDidActiveGroupChange.fire(event);
8316
+ }));
7560
8317
  if (!this.options.components) {
7561
8318
  this.options.components = {};
7562
8319
  }
@@ -7731,6 +8488,7 @@ class GridviewComponent extends BaseGrid {
7731
8488
  });
7732
8489
  this.registerPanel(view);
7733
8490
  this.doAddGroup(view, relativeLocation, options.size);
8491
+ this.doSetGroupActive(view);
7734
8492
  return view;
7735
8493
  }
7736
8494
  registerPanel(panel) {
@@ -7872,19 +8630,19 @@ class SplitviewComponent extends Resizable {
7872
8630
  const index = this.panels.indexOf(panel);
7873
8631
  this.splitview.setViewVisible(index, visible);
7874
8632
  }
7875
- setActive(view, skipFocus) {
7876
- this._activePanel = view;
8633
+ setActive(panel, skipFocus) {
8634
+ this._activePanel = panel;
7877
8635
  this.panels
7878
- .filter((v) => v !== view)
8636
+ .filter((v) => v !== panel)
7879
8637
  .forEach((v) => {
7880
8638
  v.api._onDidActiveChange.fire({ isActive: false });
7881
8639
  if (!skipFocus) {
7882
8640
  v.focus();
7883
8641
  }
7884
8642
  });
7885
- view.api._onDidActiveChange.fire({ isActive: true });
8643
+ panel.api._onDidActiveChange.fire({ isActive: true });
7886
8644
  if (!skipFocus) {
7887
- view.focus();
8645
+ panel.focus();
7888
8646
  }
7889
8647
  }
7890
8648
  removePanel(panel, sizing) {
@@ -8183,6 +8941,10 @@ class PaneviewComponent extends Resizable {
8183
8941
  });
8184
8942
  this.addDisposables(this._disposable);
8185
8943
  }
8944
+ setVisible(panel, visible) {
8945
+ const index = this.panels.indexOf(panel);
8946
+ this.paneview.setViewVisible(index, visible);
8947
+ }
8186
8948
  focus() {
8187
8949
  //noop
8188
8950
  }
@@ -8229,6 +8991,7 @@ class PaneviewComponent extends Resizable {
8229
8991
  isExpanded: options.isExpanded,
8230
8992
  title: options.title,
8231
8993
  containerApi: new PaneviewApi(this),
8994
+ accessor: this,
8232
8995
  });
8233
8996
  this.paneview.addPane(view, size, index);
8234
8997
  view.orientation = this.paneview.orientation;
@@ -8328,6 +9091,7 @@ class PaneviewComponent extends Resizable {
8328
9091
  title: data.title,
8329
9092
  isExpanded: !!view.expanded,
8330
9093
  containerApi: new PaneviewApi(this),
9094
+ accessor: this,
8331
9095
  });
8332
9096
  panel.orientation = this.paneview.orientation;
8333
9097
  });
@@ -8416,7 +9180,7 @@ class SplitviewPanel extends BasePanelView {
8416
9180
  this._onDidChange = new Emitter();
8417
9181
  this.onDidChange = this._onDidChange.event;
8418
9182
  this.api.initialize(this);
8419
- this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
9183
+ this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {
8420
9184
  const { isVisible } = event;
8421
9185
  const { accessor } = this._params;
8422
9186
  accessor.setVisible(this, isVisible);
@@ -8478,5 +9242,5 @@ class SplitviewPanel extends BasePanelView {
8478
9242
  }
8479
9243
  }
8480
9244
 
8481
- export { BaseGrid, ContentContainer, DefaultDockviewDeserialzier, DefaultTab, DockviewApi, DockviewComponent, CompositeDisposable as DockviewCompositeDisposable, DockviewDropTargets, Emitter as DockviewEmitter, Event as DockviewEvent, DockviewGroupPanel, DockviewGroupPanelModel, MutableDisposable as DockviewMutableDisposable, DockviewPanel, DraggablePaneviewPanel, Gridview, GridviewApi, GridviewComponent, GridviewPanel, LayoutPriority, LocalSelectionTransfer, Orientation, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, Tab, createComponent, directionToPosition, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, orthogonal, positionToDirection, toTarget };
9245
+ export { BaseGrid, ContentContainer, DefaultDockviewDeserialzier, DefaultTab, DockviewApi, DockviewComponent, CompositeDisposable as DockviewCompositeDisposable, DockviewDidDropEvent, Emitter as DockviewEmitter, Event as DockviewEvent, DockviewGroupPanel, DockviewGroupPanelModel, MutableDisposable as DockviewMutableDisposable, DockviewPanel, DockviewWillDropEvent, DraggablePaneviewPanel, Gridview, GridviewApi, GridviewComponent, GridviewPanel, LayoutPriority, LocalSelectionTransfer, Orientation, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, Tab, WillShowOverlayLocationEvent, createComponent, directionToPosition, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, orthogonal, positionToDirection, toTarget };
8482
9246
  //# sourceMappingURL=dockview-core.esm.js.map