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
  */
@@ -37,7 +37,7 @@
37
37
  }
38
38
  }
39
39
 
40
- 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}";
40
+ 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}";
41
41
  styleInject(css_248z);
42
42
 
43
43
  class TransferObject {
@@ -122,6 +122,17 @@
122
122
  };
123
123
  };
124
124
  })(exports.DockviewEvent || (exports.DockviewEvent = {}));
125
+ class DockviewEvent {
126
+ constructor() {
127
+ this._defaultPrevented = false;
128
+ }
129
+ get defaultPrevented() {
130
+ return this._defaultPrevented;
131
+ }
132
+ preventDefault() {
133
+ this._defaultPrevented = true;
134
+ }
135
+ }
125
136
  class LeakageMonitor {
126
137
  constructor() {
127
138
  this.events = new Map();
@@ -165,6 +176,9 @@
165
176
  }
166
177
  Emitter.ENABLE_TRACKING = isEnabled;
167
178
  }
179
+ get value() {
180
+ return this._last;
181
+ }
168
182
  constructor(options) {
169
183
  this.options = options;
170
184
  this._listeners = [];
@@ -287,8 +301,12 @@
287
301
  args.forEach((arg) => this._disposables.push(arg));
288
302
  }
289
303
  dispose() {
290
- this._disposables.forEach((arg) => arg.dispose());
304
+ if (this._isDisposed) {
305
+ return;
306
+ }
291
307
  this._isDisposed = true;
308
+ this._disposables.forEach((arg) => arg.dispose());
309
+ this._disposables = [];
292
310
  }
293
311
  }
294
312
  class MutableDisposable {
@@ -772,6 +790,13 @@
772
790
  this._endSnappingEnabled = endSnappingEnabled;
773
791
  this.updateSashEnablement();
774
792
  }
793
+ get disabled() {
794
+ return this._disabled;
795
+ }
796
+ set disabled(value) {
797
+ this._disabled = value;
798
+ toggleClass(this.element, 'dv-splitview-disabled', value);
799
+ }
775
800
  constructor(container, options) {
776
801
  this.container = container;
777
802
  this.viewItems = [];
@@ -782,6 +807,7 @@
782
807
  this._proportions = undefined;
783
808
  this._startSnappingEnabled = true;
784
809
  this._endSnappingEnabled = true;
810
+ this._disabled = false;
785
811
  this._onDidSashEnd = new Emitter();
786
812
  this.onDidSashEnd = this._onDidSashEnd.event;
787
813
  this._onDidAddView = new Emitter();
@@ -1456,6 +1482,9 @@
1456
1482
  this._onDidChange.fire();
1457
1483
  }));
1458
1484
  }
1485
+ setViewVisible(index, visible) {
1486
+ this.splitview.setViewVisible(index, visible);
1487
+ }
1459
1488
  addPane(pane, size, index = this.splitview.length, skipLayout = false) {
1460
1489
  const disposable = pane.onDidChangeExpansionState(() => {
1461
1490
  this.setupAnimation();
@@ -1709,7 +1738,13 @@
1709
1738
  }
1710
1739
  return exports.LayoutPriority.Normal;
1711
1740
  }
1712
- constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {
1741
+ get disabled() {
1742
+ return this.splitview.disabled;
1743
+ }
1744
+ set disabled(value) {
1745
+ this.splitview.disabled = value;
1746
+ }
1747
+ constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {
1713
1748
  super();
1714
1749
  this.orientation = orientation;
1715
1750
  this.proportionalLayout = proportionalLayout;
@@ -1754,6 +1789,7 @@
1754
1789
  styles,
1755
1790
  });
1756
1791
  }
1792
+ this.disabled = disabled;
1757
1793
  this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
1758
1794
  this._onDidChange.fire({});
1759
1795
  }));
@@ -1887,7 +1923,7 @@
1887
1923
  }
1888
1924
  function flipNode(node, size, orthogonalSize) {
1889
1925
  if (node instanceof BranchNode) {
1890
- const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
1926
+ const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);
1891
1927
  let totalSize = 0;
1892
1928
  for (let i = node.children.length - 1; i >= 0; i--) {
1893
1929
  const child = node.children[i];
@@ -2023,31 +2059,57 @@
2023
2059
  get maximumHeight() {
2024
2060
  return this.root.maximumHeight;
2025
2061
  }
2062
+ get locked() {
2063
+ return this._locked;
2064
+ }
2065
+ set locked(value) {
2066
+ this._locked = value;
2067
+ const branch = [this.root];
2068
+ /**
2069
+ * simple depth-first-search to cover all nodes
2070
+ *
2071
+ * @see https://en.wikipedia.org/wiki/Depth-first_search
2072
+ */
2073
+ while (branch.length > 0) {
2074
+ const node = branch.pop();
2075
+ if (node instanceof BranchNode) {
2076
+ node.disabled = value;
2077
+ branch.push(...node.children);
2078
+ }
2079
+ }
2080
+ }
2026
2081
  maximizedView() {
2027
2082
  var _a;
2028
- return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
2083
+ return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;
2029
2084
  }
2030
2085
  hasMaximizedView() {
2031
2086
  return this._maximizedNode !== undefined;
2032
2087
  }
2033
2088
  maximizeView(view) {
2089
+ var _a;
2034
2090
  const location = getGridLocation(view.element);
2035
2091
  const [_, node] = this.getNode(location);
2036
2092
  if (!(node instanceof LeafNode)) {
2037
2093
  return;
2038
2094
  }
2039
- if (this._maximizedNode === node) {
2095
+ if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {
2040
2096
  return;
2041
2097
  }
2042
2098
  if (this.hasMaximizedView()) {
2043
2099
  this.exitMaximizedView();
2044
2100
  }
2101
+ const hiddenOnMaximize = [];
2045
2102
  function hideAllViewsBut(parent, exclude) {
2046
2103
  for (let i = 0; i < parent.children.length; i++) {
2047
2104
  const child = parent.children[i];
2048
2105
  if (child instanceof LeafNode) {
2049
2106
  if (child !== exclude) {
2050
- parent.setChildVisible(i, false);
2107
+ if (parent.isChildVisible(i)) {
2108
+ parent.setChildVisible(i, false);
2109
+ }
2110
+ else {
2111
+ hiddenOnMaximize.push(child);
2112
+ }
2051
2113
  }
2052
2114
  }
2053
2115
  else {
@@ -2056,18 +2118,21 @@
2056
2118
  }
2057
2119
  }
2058
2120
  hideAllViewsBut(this.root, node);
2059
- this._maximizedNode = node;
2060
- this._onDidMaxmizedNodeChange.fire();
2121
+ this._maximizedNode = { leaf: node, hiddenOnMaximize };
2122
+ this._onDidMaximizedNodeChange.fire();
2061
2123
  }
2062
2124
  exitMaximizedView() {
2063
2125
  if (!this._maximizedNode) {
2064
2126
  return;
2065
2127
  }
2128
+ const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;
2066
2129
  function showViewsInReverseOrder(parent) {
2067
2130
  for (let index = parent.children.length - 1; index >= 0; index--) {
2068
2131
  const child = parent.children[index];
2069
2132
  if (child instanceof LeafNode) {
2070
- parent.setChildVisible(index, true);
2133
+ if (!hiddenOnMaximize.includes(child)) {
2134
+ parent.setChildVisible(index, true);
2135
+ }
2071
2136
  }
2072
2137
  else {
2073
2138
  showViewsInReverseOrder(child);
@@ -2076,13 +2141,13 @@
2076
2141
  }
2077
2142
  showViewsInReverseOrder(this.root);
2078
2143
  this._maximizedNode = undefined;
2079
- this._onDidMaxmizedNodeChange.fire();
2144
+ this._onDidMaximizedNodeChange.fire();
2080
2145
  }
2081
2146
  serialize() {
2082
2147
  if (this.hasMaximizedView()) {
2083
2148
  /**
2084
- * do not persist maximized view state but we must first exit any maximized views
2085
- * before serialization to ensure the correct dimensions are persisted
2149
+ * do not persist maximized view state
2150
+ * firstly exit any maximized views to ensure the correct dimensions are persisted
2086
2151
  */
2087
2152
  this.exitMaximizedView();
2088
2153
  }
@@ -2097,14 +2162,14 @@
2097
2162
  dispose() {
2098
2163
  this.disposable.dispose();
2099
2164
  this._onDidChange.dispose();
2100
- this._onDidMaxmizedNodeChange.dispose();
2165
+ this._onDidMaximizedNodeChange.dispose();
2101
2166
  this.root.dispose();
2102
2167
  this._maximizedNode = undefined;
2103
2168
  this.element.remove();
2104
2169
  }
2105
2170
  clear() {
2106
2171
  const orientation = this.root.orientation;
2107
- this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);
2172
+ this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);
2108
2173
  }
2109
2174
  deserialize(json, deserializer) {
2110
2175
  const orientation = json.orientation;
@@ -2125,8 +2190,8 @@
2125
2190
  };
2126
2191
  });
2127
2192
  result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth
2128
- orthogonalSize, // <- size - flips at each depth
2129
- children);
2193
+ orthogonalSize, // <- size - flips at each depth,
2194
+ this._locked, children);
2130
2195
  }
2131
2196
  else {
2132
2197
  result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
@@ -2159,7 +2224,7 @@
2159
2224
  }
2160
2225
  const oldRoot = this.root;
2161
2226
  oldRoot.element.remove();
2162
- this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);
2227
+ this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);
2163
2228
  if (oldRoot.children.length === 0) ;
2164
2229
  else if (oldRoot.children.length === 1) {
2165
2230
  // can remove one level of redundant branching if there is only a single child
@@ -2227,15 +2292,16 @@
2227
2292
  constructor(proportionalLayout, styles, orientation) {
2228
2293
  this.proportionalLayout = proportionalLayout;
2229
2294
  this.styles = styles;
2295
+ this._locked = false;
2230
2296
  this._maximizedNode = undefined;
2231
2297
  this.disposable = new MutableDisposable();
2232
2298
  this._onDidChange = new Emitter();
2233
2299
  this.onDidChange = this._onDidChange.event;
2234
- this._onDidMaxmizedNodeChange = new Emitter();
2235
- this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
2300
+ this._onDidMaximizedNodeChange = new Emitter();
2301
+ this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2236
2302
  this.element = document.createElement('div');
2237
2303
  this.element.className = 'grid-view';
2238
- this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
2304
+ this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);
2239
2305
  }
2240
2306
  isViewVisible(location) {
2241
2307
  const [rest, index] = tail(location);
@@ -2286,7 +2352,7 @@
2286
2352
  }
2287
2353
  const child = grandParent.removeChild(parentIndex);
2288
2354
  child.dispose();
2289
- const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);
2355
+ const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);
2290
2356
  grandParent.addChild(newParent, parent.size, parentIndex);
2291
2357
  const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);
2292
2358
  newParent.addChild(newSibling, newSiblingSize, 0);
@@ -2914,13 +2980,36 @@
2914
2980
  return this.component.onDidDrop;
2915
2981
  }
2916
2982
  /**
2917
- * Invoked before a group is dragged. Exposed for custom Drag'n'Drop functionality.
2983
+ * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and
2984
+ * prevent the event from occuring using the standard `preventDefault()` syntax.
2985
+ *
2986
+ * Preventing certain events may causes unexpected behaviours, use carefully.
2987
+ */
2988
+ get onWillDrop() {
2989
+ return this.component.onWillDrop;
2990
+ }
2991
+ /**
2992
+ * Invoked before an overlay is shown indicating a drop target.
2993
+ *
2994
+ * Calling `event.preventDefault()` will prevent the overlay being shown and prevent
2995
+ * the any subsequent drop event.
2996
+ */
2997
+ get onWillShowOverlay() {
2998
+ return this.component.onWillShowOverlay;
2999
+ }
3000
+ /**
3001
+ * Invoked before a group is dragged.
3002
+ *
3003
+ * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.
3004
+ *
2918
3005
  */
2919
3006
  get onWillDragGroup() {
2920
3007
  return this.component.onWillDragGroup;
2921
3008
  }
2922
3009
  /**
2923
- * Invoked before a panel is dragged. Exposed for custom Drag'n'Drop functionality.
3010
+ * Invoked before a panel is dragged.
3011
+ *
3012
+ * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.
2924
3013
  */
2925
3014
  get onWillDragPanel() {
2926
3015
  return this.component.onWillDragPanel;
@@ -3048,17 +3137,17 @@
3048
3137
  hasMaximizedGroup() {
3049
3138
  return this.component.hasMaximizedGroup();
3050
3139
  }
3051
- exitMaxmizedGroup() {
3140
+ exitMaximizedGroup() {
3052
3141
  this.component.exitMaximizedGroup();
3053
3142
  }
3054
- get onDidMaxmizedGroupChange() {
3055
- return this.component.onDidMaxmizedGroupChange;
3143
+ get onDidMaximizedGroupChange() {
3144
+ return this.component.onDidMaximizedGroupChange;
3056
3145
  }
3057
3146
  /**
3058
3147
  * Add a popout group in a new Window
3059
3148
  */
3060
3149
  addPopoutGroup(item, options) {
3061
- this.component.addPopoutGroup(item, options);
3150
+ return this.component.addPopoutGroup(item, options);
3062
3151
  }
3063
3152
  }
3064
3153
 
@@ -3112,6 +3201,18 @@
3112
3201
  }
3113
3202
  }
3114
3203
 
3204
+ class WillShowOverlayEvent extends DockviewEvent {
3205
+ get nativeEvent() {
3206
+ return this.options.nativeEvent;
3207
+ }
3208
+ get position() {
3209
+ return this.options.position;
3210
+ }
3211
+ constructor(options) {
3212
+ super();
3213
+ this.options = options;
3214
+ }
3215
+ }
3115
3216
  function directionToPosition(direction) {
3116
3217
  switch (direction) {
3117
3218
  case 'above':
@@ -3164,6 +3265,8 @@
3164
3265
  this.options = options;
3165
3266
  this._onDrop = new Emitter();
3166
3267
  this.onDrop = this._onDrop.event;
3268
+ this._onWillShowOverlay = new Emitter();
3269
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3167
3270
  // use a set to take advantage of #<set>.has
3168
3271
  this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
3169
3272
  this.dnd = new DragAndDropObserver(this.element, {
@@ -3192,6 +3295,19 @@
3192
3295
  this.removeDropTarget();
3193
3296
  return;
3194
3297
  }
3298
+ const willShowOverlayEvent = new WillShowOverlayEvent({
3299
+ nativeEvent: e,
3300
+ position: quadrant,
3301
+ });
3302
+ /**
3303
+ * Provide an opportunity to prevent the overlay appearing and in turn
3304
+ * any dnd behaviours
3305
+ */
3306
+ this._onWillShowOverlay.fire(willShowOverlayEvent);
3307
+ if (willShowOverlayEvent.defaultPrevented) {
3308
+ this.removeDropTarget();
3309
+ return;
3310
+ }
3195
3311
  if (typeof this.options.canDisplayOverlay === 'boolean') {
3196
3312
  if (!this.options.canDisplayOverlay) {
3197
3313
  this.removeDropTarget();
@@ -3234,7 +3350,7 @@
3234
3350
  }
3235
3351
  },
3236
3352
  });
3237
- this.addDisposables(this._onDrop, this.dnd);
3353
+ this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);
3238
3354
  }
3239
3355
  setTargetZones(acceptedTargetZones) {
3240
3356
  this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
@@ -3287,25 +3403,44 @@
3287
3403
  size = clamp(0, sizeOptions.value, height) / height;
3288
3404
  }
3289
3405
  }
3290
- const translate = (1 - size) / 2;
3291
- const scale = size;
3292
- let transform;
3406
+ const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
3407
+ /**
3408
+ * You can also achieve the overlay placement using the transform CSS property
3409
+ * to translate and scale the element however this has the undesired effect of
3410
+ * 'skewing' the element. Comment left here for anybody that ever revisits this.
3411
+ *
3412
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform
3413
+ *
3414
+ * right
3415
+ * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})
3416
+ *
3417
+ * left
3418
+ * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})
3419
+ *
3420
+ * top
3421
+ * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})
3422
+ *
3423
+ * bottom
3424
+ * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})
3425
+ */
3293
3426
  if (rightClass) {
3294
- transform = `translateX(${100 * translate}%) scaleX(${scale})`;
3427
+ box.left = `${100 * (1 - size)}%`;
3428
+ box.width = `${100 * size}%`;
3295
3429
  }
3296
3430
  else if (leftClass) {
3297
- transform = `translateX(-${100 * translate}%) scaleX(${scale})`;
3431
+ box.width = `${100 * size}%`;
3298
3432
  }
3299
3433
  else if (topClass) {
3300
- transform = `translateY(-${100 * translate}%) scaleY(${scale})`;
3434
+ box.height = `${100 * size}%`;
3301
3435
  }
3302
3436
  else if (bottomClass) {
3303
- transform = `translateY(${100 * translate}%) scaleY(${scale})`;
3304
- }
3305
- else {
3306
- transform = '';
3437
+ box.top = `${100 * (1 - size)}%`;
3438
+ box.height = `${100 * size}%`;
3307
3439
  }
3308
- this.overlayElement.style.transform = transform;
3440
+ this.overlayElement.style.top = box.top;
3441
+ this.overlayElement.style.left = box.left;
3442
+ this.overlayElement.style.width = box.width;
3443
+ this.overlayElement.style.height = box.height;
3309
3444
  toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
3310
3445
  toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
3311
3446
  toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
@@ -3373,14 +3508,6 @@
3373
3508
  return 'center';
3374
3509
  }
3375
3510
 
3376
- exports.DockviewDropTargets = void 0;
3377
- (function (DockviewDropTargets) {
3378
- DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
3379
- DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
3380
- DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
3381
- DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
3382
- })(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
3383
-
3384
3511
  class ContentContainer extends CompositeDisposable {
3385
3512
  get element() {
3386
3513
  return this._element;
@@ -3408,7 +3535,7 @@
3408
3535
  const data = getPanelData();
3409
3536
  if (!data &&
3410
3537
  event.shiftKey &&
3411
- this.group.location !== 'floating') {
3538
+ this.group.location.type !== 'floating') {
3412
3539
  return false;
3413
3540
  }
3414
3541
  if (data && data.viewId === this.accessor.id) {
@@ -3426,7 +3553,7 @@
3426
3553
  data.groupId === this.group.id;
3427
3554
  return !groupHasOnePanelAndIsActiveDragElement;
3428
3555
  }
3429
- return this.group.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
3556
+ return this.group.canDisplayOverlay(event, position, 'content');
3430
3557
  },
3431
3558
  });
3432
3559
  this.addDisposables(this.dropTarget);
@@ -3451,7 +3578,7 @@
3451
3578
  let container;
3452
3579
  switch (panel.api.renderer) {
3453
3580
  case 'onlyWhenVisibile':
3454
- this.accessor.overlayRenderContainer.detatch(panel);
3581
+ this.group.renderContainer.detatch(panel);
3455
3582
  if (this.panel) {
3456
3583
  if (doRender) {
3457
3584
  this._element.appendChild(this.panel.view.content.element);
@@ -3463,7 +3590,7 @@
3463
3590
  if (panel.view.content.element.parentElement === this._element) {
3464
3591
  this._element.removeChild(panel.view.content.element);
3465
3592
  }
3466
- container = this.accessor.overlayRenderContainer.attach({
3593
+ container = this.group.renderContainer.attach({
3467
3594
  panel,
3468
3595
  referenceContainer: this,
3469
3596
  });
@@ -3494,9 +3621,10 @@
3494
3621
  // noop
3495
3622
  }
3496
3623
  closePanel() {
3624
+ var _a;
3497
3625
  if (this.panel) {
3498
3626
  if (this.panel.api.renderer === 'onlyWhenVisibile') {
3499
- this._element.removeChild(this.panel.view.content.element);
3627
+ (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
3500
3628
  }
3501
3629
  }
3502
3630
  this.panel = undefined;
@@ -3607,7 +3735,7 @@
3607
3735
  this._element.draggable = true;
3608
3736
  toggleClass(this.element, 'inactive-tab', true);
3609
3737
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
3610
- this.droptarget = new Droptarget(this._element, {
3738
+ this.dropTarget = new Droptarget(this._element, {
3611
3739
  acceptedTargetZones: ['center'],
3612
3740
  canDisplayOverlay: (event, position) => {
3613
3741
  if (this.group.locked) {
@@ -3622,9 +3750,10 @@
3622
3750
  }
3623
3751
  return this.panel.id !== data.panelId;
3624
3752
  }
3625
- return this.group.model.canDisplayOverlay(event, position, exports.DockviewDropTargets.Tab);
3753
+ return this.group.model.canDisplayOverlay(event, position, 'tab');
3626
3754
  },
3627
3755
  });
3756
+ this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
3628
3757
  this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
3629
3758
  this._onDragStart.fire(event);
3630
3759
  }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {
@@ -3632,9 +3761,9 @@
3632
3761
  return;
3633
3762
  }
3634
3763
  this._onChanged.fire(event);
3635
- }), this.droptarget.onDrop((event) => {
3764
+ }), this.dropTarget.onDrop((event) => {
3636
3765
  this._onDropped.fire(event);
3637
- }), this.droptarget);
3766
+ }), this.dropTarget);
3638
3767
  }
3639
3768
  setActive(isActive) {
3640
3769
  toggleClass(this.element, 'active-tab', isActive);
@@ -3681,7 +3810,7 @@
3681
3810
  }, true));
3682
3811
  }
3683
3812
  isCancelled(_event) {
3684
- if (this.group.api.location === 'floating' && !_event.shiftKey) {
3813
+ if (this.group.api.location.type === 'floating' && !_event.shiftKey) {
3685
3814
  return true;
3686
3815
  }
3687
3816
  return false;
@@ -3733,7 +3862,7 @@
3733
3862
  this.accessor.doSetGroupActive(this.group);
3734
3863
  }));
3735
3864
  const handler = new GroupDragHandler(this._element, accessor, group);
3736
- this.voidDropTarget = new Droptarget(this._element, {
3865
+ this.dropTraget = new Droptarget(this._element, {
3737
3866
  acceptedTargetZones: ['center'],
3738
3867
  canDisplayOverlay: (event, position) => {
3739
3868
  var _a;
@@ -3747,14 +3876,15 @@
3747
3876
  // don't show the overlay if the tab being dragged is the last panel of this group
3748
3877
  return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
3749
3878
  }
3750
- return group.model.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
3879
+ return group.model.canDisplayOverlay(event, position, 'header_space');
3751
3880
  },
3752
3881
  });
3882
+ this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
3753
3883
  this.addDisposables(handler, handler.onDragStart((event) => {
3754
3884
  this._onDragStart.fire(event);
3755
- }), this.voidDropTarget.onDrop((event) => {
3885
+ }), this.dropTraget.onDrop((event) => {
3756
3886
  this._onDrop.fire(event);
3757
- }), this.voidDropTarget);
3887
+ }), this.dropTraget);
3758
3888
  }
3759
3889
  }
3760
3890
 
@@ -3842,19 +3972,11 @@
3842
3972
  this.onTabDragStart = this._onTabDragStart.event;
3843
3973
  this._onGroupDragStart = new Emitter();
3844
3974
  this.onGroupDragStart = this._onGroupDragStart.event;
3845
- this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);
3975
+ this._onWillShowOverlay = new Emitter();
3976
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3846
3977
  this._element = document.createElement('div');
3847
3978
  this._element.className = 'tabs-and-actions-container';
3848
3979
  toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
3849
- this.addDisposables(this.accessor.onDidAddPanel((e) => {
3850
- if (e.api.group === this.group) {
3851
- toggleClass(this._element, 'dv-single-tab', this.size === 1);
3852
- }
3853
- }), this.accessor.onDidRemovePanel((e) => {
3854
- if (e.api.group === this.group) {
3855
- toggleClass(this._element, 'dv-single-tab', this.size === 1);
3856
- }
3857
- }));
3858
3980
  this.rightActionsContainer = document.createElement('div');
3859
3981
  this.rightActionsContainer.className = 'right-actions-container';
3860
3982
  this.leftActionsContainer = document.createElement('div');
@@ -3869,7 +3991,15 @@
3869
3991
  this._element.appendChild(this.leftActionsContainer);
3870
3992
  this._element.appendChild(this.voidContainer.element);
3871
3993
  this._element.appendChild(this.rightActionsContainer);
3872
- this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {
3994
+ this.addDisposables(this.accessor.onDidAddPanel((e) => {
3995
+ if (e.api.group === this.group) {
3996
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
3997
+ }
3998
+ }), this.accessor.onDidRemovePanel((e) => {
3999
+ if (e.api.group === this.group) {
4000
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
4001
+ }
4002
+ }), this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
3873
4003
  this._onGroupDragStart.fire({
3874
4004
  nativeEvent: event,
3875
4005
  group: this.group,
@@ -3879,11 +4009,15 @@
3879
4009
  event: event.nativeEvent,
3880
4010
  index: this.tabs.length,
3881
4011
  });
4012
+ }), this.voidContainer.onWillShowOverlay((event) => {
4013
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
4014
+ kind: 'header_space',
4015
+ }));
3882
4016
  }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {
3883
4017
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3884
4018
  if (isFloatingGroupsEnabled &&
3885
4019
  event.shiftKey &&
3886
- this.group.api.location !== 'floating') {
4020
+ this.group.api.location.type !== 'floating') {
3887
4021
  event.preventDefault();
3888
4022
  const { top, left } = this.element.getBoundingClientRect();
3889
4023
  const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
@@ -3946,9 +4080,9 @@
3946
4080
  const disposable = new CompositeDisposable(tab.onDragStart((event) => {
3947
4081
  this._onTabDragStart.fire({ nativeEvent: event, panel });
3948
4082
  }), tab.onChanged((event) => {
3949
- var _a;
3950
4083
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3951
- const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
4084
+ const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
4085
+ this.size === 1;
3952
4086
  if (isFloatingGroupsEnabled &&
3953
4087
  !isFloatingWithOnePanel &&
3954
4088
  event.shiftKey) {
@@ -3962,20 +4096,20 @@
3962
4096
  }, { inDragMode: true });
3963
4097
  return;
3964
4098
  }
3965
- const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&
3966
- this.group.model.isContentFocused;
3967
4099
  const isLeftClick = event.button === 0;
3968
4100
  if (!isLeftClick || event.defaultPrevented) {
3969
4101
  return;
3970
4102
  }
3971
- this.group.model.openPanel(panel, {
3972
- skipFocus: alreadyFocused,
3973
- });
4103
+ if (this.group.activePanel !== panel) {
4104
+ this.group.model.openPanel(panel);
4105
+ }
3974
4106
  }), tab.onDrop((event) => {
3975
4107
  this._onDrop.fire({
3976
4108
  event: event.nativeEvent,
3977
4109
  index: this.tabs.findIndex((x) => x.value === tab),
3978
4110
  });
4111
+ }), tab.onWillShowOverlay((event) => {
4112
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));
3979
4113
  }));
3980
4114
  const value = { value: tab, disposable };
3981
4115
  this.addTab(value, index);
@@ -3993,6 +4127,60 @@
3993
4127
  }
3994
4128
  }
3995
4129
 
4130
+ class DockviewDidDropEvent extends DockviewEvent {
4131
+ get nativeEvent() {
4132
+ return this.options.nativeEvent;
4133
+ }
4134
+ get position() {
4135
+ return this.options.position;
4136
+ }
4137
+ get panel() {
4138
+ return this.options.panel;
4139
+ }
4140
+ get group() {
4141
+ return this.options.group;
4142
+ }
4143
+ get api() {
4144
+ return this.options.api;
4145
+ }
4146
+ constructor(options) {
4147
+ super();
4148
+ this.options = options;
4149
+ }
4150
+ getData() {
4151
+ return this.options.getData();
4152
+ }
4153
+ }
4154
+ class DockviewWillDropEvent extends DockviewDidDropEvent {
4155
+ get kind() {
4156
+ return this._kind;
4157
+ }
4158
+ constructor(options) {
4159
+ super(options);
4160
+ this._kind = options.kind;
4161
+ }
4162
+ }
4163
+ class WillShowOverlayLocationEvent {
4164
+ get kind() {
4165
+ return this._kind;
4166
+ }
4167
+ get nativeEvent() {
4168
+ return this.event.nativeEvent;
4169
+ }
4170
+ get position() {
4171
+ return this.event.position;
4172
+ }
4173
+ get defaultPrevented() {
4174
+ return this.event.defaultPrevented;
4175
+ }
4176
+ preventDefault() {
4177
+ this.event.preventDefault();
4178
+ }
4179
+ constructor(event, options) {
4180
+ this.event = event;
4181
+ this._kind = options.kind;
4182
+ }
4183
+ }
3996
4184
  class DockviewGroupPanelModel extends CompositeDisposable {
3997
4185
  get element() {
3998
4186
  throw new Error('not supported');
@@ -4038,7 +4226,7 @@
4038
4226
  this._location = value;
4039
4227
  toggleClass(this.container, 'dv-groupview-floating', false);
4040
4228
  toggleClass(this.container, 'dv-groupview-popout', false);
4041
- switch (value) {
4229
+ switch (value.type) {
4042
4230
  case 'grid':
4043
4231
  this.contentContainer.dropTarget.setTargetZones([
4044
4232
  'top',
@@ -4074,7 +4262,7 @@
4074
4262
  this.groupPanel = groupPanel;
4075
4263
  this._isGroupActive = false;
4076
4264
  this._locked = false;
4077
- this._location = 'grid';
4265
+ this._location = { type: 'grid' };
4078
4266
  this.mostRecentlyUsed = [];
4079
4267
  this._onDidChange = new Emitter();
4080
4268
  this.onDidChange = this._onDidChange.event;
@@ -4085,6 +4273,10 @@
4085
4273
  this.onMove = this._onMove.event;
4086
4274
  this._onDidDrop = new Emitter();
4087
4275
  this.onDidDrop = this._onDidDrop.event;
4276
+ this._onWillDrop = new Emitter();
4277
+ this.onWillDrop = this._onWillDrop.event;
4278
+ this._onWillShowOverlay = new Emitter();
4279
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
4088
4280
  this._onTabDragStart = new Emitter();
4089
4281
  this.onTabDragStart = this._onTabDragStart.event;
4090
4282
  this._onGroupDragStart = new Emitter();
@@ -4095,46 +4287,69 @@
4095
4287
  this.onDidRemovePanel = this._onDidRemovePanel.event;
4096
4288
  this._onDidActivePanelChange = new Emitter();
4097
4289
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
4290
+ this._overwriteRenderContainer = null;
4098
4291
  toggleClass(this.container, 'groupview', true);
4292
+ this._api = new DockviewApi(this.accessor);
4099
4293
  this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
4100
4294
  this.contentContainer = new ContentContainer(this.accessor, this);
4101
4295
  container.append(this.tabsContainer.element, this.contentContainer.element);
4102
4296
  this.header.hidden = !!options.hideHeader;
4103
4297
  this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
4104
- this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {
4298
+ this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {
4105
4299
  this._onTabDragStart.fire(event);
4106
4300
  }), this.tabsContainer.onGroupDragStart((event) => {
4107
4301
  this._onGroupDragStart.fire(event);
4108
4302
  }), this.tabsContainer.onDrop((event) => {
4109
- this.handleDropEvent(event.event, 'center', event.index);
4303
+ this.handleDropEvent('header', event.event, 'center', event.index);
4110
4304
  }), this.contentContainer.onDidFocus(() => {
4111
- this.accessor.doSetGroupActive(this.groupPanel, true);
4305
+ this.accessor.doSetGroupActive(this.groupPanel);
4112
4306
  }), this.contentContainer.onDidBlur(() => {
4113
4307
  // noop
4114
4308
  }), this.contentContainer.dropTarget.onDrop((event) => {
4115
- this.handleDropEvent(event.nativeEvent, event.position);
4116
- }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
4309
+ this.handleDropEvent('content', event.nativeEvent, event.position);
4310
+ }), this.tabsContainer.onWillShowOverlay((event) => {
4311
+ this._onWillShowOverlay.fire(event);
4312
+ }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
4313
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
4314
+ kind: 'content',
4315
+ }));
4316
+ }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
4317
+ }
4318
+ focusContent() {
4319
+ this.contentContainer.element.focus();
4320
+ }
4321
+ set renderContainer(value) {
4322
+ this.panels.forEach((panel) => {
4323
+ this.renderContainer.detatch(panel);
4324
+ });
4325
+ this._overwriteRenderContainer = value;
4326
+ this.panels.forEach((panel) => {
4327
+ this.rerender(panel);
4328
+ });
4329
+ }
4330
+ get renderContainer() {
4331
+ var _a;
4332
+ return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
4117
4333
  }
4118
4334
  initialize() {
4119
- var _a, _b;
4120
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
4335
+ if (this.options.panels) {
4121
4336
  this.options.panels.forEach((panel) => {
4122
4337
  this.doAddPanel(panel);
4123
4338
  });
4124
4339
  }
4125
- if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {
4340
+ if (this.options.activePanel) {
4126
4341
  this.openPanel(this.options.activePanel);
4127
4342
  }
4128
4343
  // must be run after the constructor otherwise this.parent may not be
4129
4344
  // correctly initialized
4130
- this.setActive(this.isActive, true, true);
4345
+ this.setActive(this.isActive, true);
4131
4346
  this.updateContainer();
4132
4347
  if (this.accessor.options.createRightHeaderActionsElement) {
4133
4348
  this._rightHeaderActions =
4134
4349
  this.accessor.options.createRightHeaderActionsElement(this.groupPanel);
4135
4350
  this.addDisposables(this._rightHeaderActions);
4136
4351
  this._rightHeaderActions.init({
4137
- containerApi: new DockviewApi(this.accessor),
4352
+ containerApi: this._api,
4138
4353
  api: this.groupPanel.api,
4139
4354
  });
4140
4355
  this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);
@@ -4144,7 +4359,7 @@
4144
4359
  this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);
4145
4360
  this.addDisposables(this._leftHeaderActions);
4146
4361
  this._leftHeaderActions.init({
4147
- containerApi: new DockviewApi(this.accessor),
4362
+ containerApi: this._api,
4148
4363
  api: this.groupPanel.api,
4149
4364
  });
4150
4365
  this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);
@@ -4154,7 +4369,7 @@
4154
4369
  this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);
4155
4370
  this.addDisposables(this._prefixHeaderActions);
4156
4371
  this._prefixHeaderActions.init({
4157
- containerApi: new DockviewApi(this.accessor),
4372
+ containerApi: this._api,
4158
4373
  api: this.groupPanel.api,
4159
4374
  });
4160
4375
  this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
@@ -4234,35 +4449,45 @@
4234
4449
  //noop
4235
4450
  }
4236
4451
  focus() {
4237
- var _a, _b;
4238
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4452
+ var _a;
4453
+ (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
4239
4454
  }
4240
4455
  openPanel(panel, options = {}) {
4456
+ /**
4457
+ * set the panel group
4458
+ * add the panel
4459
+ * check if group active
4460
+ * check if panel active
4461
+ */
4241
4462
  if (typeof options.index !== 'number' ||
4242
4463
  options.index > this.panels.length) {
4243
4464
  options.index = this.panels.length;
4244
4465
  }
4245
- const skipSetPanelActive = !!options.skipSetPanelActive;
4246
- const skipSetGroupActive = !!options.skipSetGroupActive;
4466
+ const skipSetActive = !!options.skipSetActive;
4247
4467
  // ensure the group is updated before we fire any events
4248
- panel.updateParentGroup(this.groupPanel, true);
4468
+ panel.updateParentGroup(this.groupPanel, {
4469
+ skipSetActive: options.skipSetActive,
4470
+ });
4471
+ this.doAddPanel(panel, options.index, {
4472
+ skipSetActive: skipSetActive,
4473
+ });
4249
4474
  if (this._activePanel === panel) {
4250
- if (!skipSetGroupActive) {
4251
- this.accessor.doSetGroupActive(this.groupPanel);
4252
- }
4253
4475
  this.contentContainer.renderPanel(panel, { asActive: true });
4254
4476
  return;
4255
4477
  }
4256
- this.doAddPanel(panel, options.index, skipSetPanelActive);
4257
- if (!skipSetPanelActive) {
4478
+ if (!skipSetActive) {
4258
4479
  this.doSetActivePanel(panel);
4259
4480
  }
4260
- if (!skipSetGroupActive) {
4261
- this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);
4481
+ if (!options.skipSetGroupActive) {
4482
+ this.accessor.doSetGroupActive(this.groupPanel);
4483
+ }
4484
+ if (!options.skipSetActive) {
4485
+ this.updateContainer();
4262
4486
  }
4263
- this.updateContainer();
4264
4487
  }
4265
- removePanel(groupItemOrId) {
4488
+ removePanel(groupItemOrId, options = {
4489
+ skipSetActive: false,
4490
+ }) {
4266
4491
  const id = typeof groupItemOrId === 'string'
4267
4492
  ? groupItemOrId
4268
4493
  : groupItemOrId.id;
@@ -4270,7 +4495,7 @@
4270
4495
  if (!panelToRemove) {
4271
4496
  throw new Error('invalid operation');
4272
4497
  }
4273
- return this._removePanel(panelToRemove);
4498
+ return this._removePanel(panelToRemove, options);
4274
4499
  }
4275
4500
  closeAllPanels() {
4276
4501
  if (this.panels.length > 0) {
@@ -4296,12 +4521,8 @@
4296
4521
  updateActions(element) {
4297
4522
  this.tabsContainer.setRightActionsElement(element);
4298
4523
  }
4299
- setActive(isGroupActive, skipFocus = false, force = false) {
4300
- var _a, _b, _c, _d;
4524
+ setActive(isGroupActive, force = false) {
4301
4525
  if (!force && this.isActive === isGroupActive) {
4302
- if (!skipFocus) {
4303
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4304
- }
4305
4526
  return;
4306
4527
  }
4307
4528
  this._isGroupActive = isGroupActive;
@@ -4312,11 +4533,6 @@
4312
4533
  this.doSetActivePanel(this.panels[0]);
4313
4534
  }
4314
4535
  this.updateContainer();
4315
- if (isGroupActive) {
4316
- if (!skipFocus) {
4317
- (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);
4318
- }
4319
- }
4320
4536
  }
4321
4537
  layout(width, height) {
4322
4538
  var _a;
@@ -4327,17 +4543,22 @@
4327
4543
  this._activePanel.layout(this._width, this._height);
4328
4544
  }
4329
4545
  }
4330
- _removePanel(panel) {
4546
+ _removePanel(panel, options) {
4331
4547
  const isActivePanel = this._activePanel === panel;
4332
4548
  this.doRemovePanel(panel);
4333
4549
  if (isActivePanel && this.panels.length > 0) {
4334
4550
  const nextPanel = this.mostRecentlyUsed[0];
4335
- this.openPanel(nextPanel);
4551
+ this.openPanel(nextPanel, {
4552
+ skipSetActive: options.skipSetActive,
4553
+ skipSetGroupActive: options.skipSetActiveGroup,
4554
+ });
4336
4555
  }
4337
4556
  if (this._activePanel && this.panels.length === 0) {
4338
4557
  this.doSetActivePanel(undefined);
4339
4558
  }
4340
- this.updateContainer();
4559
+ if (!options.skipSetActive) {
4560
+ this.updateContainer();
4561
+ }
4341
4562
  return panel;
4342
4563
  }
4343
4564
  doRemovePanel(panel) {
@@ -4352,13 +4573,13 @@
4352
4573
  }
4353
4574
  this._onDidRemovePanel.fire({ panel });
4354
4575
  }
4355
- doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
4576
+ doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
4356
4577
  const existingPanel = this._panels.indexOf(panel);
4357
4578
  const hasExistingPanel = existingPanel > -1;
4358
4579
  this.tabsContainer.show();
4359
4580
  this.contentContainer.show();
4360
4581
  this.tabsContainer.openPanel(panel, index);
4361
- if (!skipSetActive) {
4582
+ if (!options.skipSetActive) {
4362
4583
  this.contentContainer.openPanel(panel);
4363
4584
  }
4364
4585
  if (hasExistingPanel) {
@@ -4370,12 +4591,17 @@
4370
4591
  this._onDidAddPanel.fire({ panel });
4371
4592
  }
4372
4593
  doSetActivePanel(panel) {
4594
+ if (this._activePanel === panel) {
4595
+ return;
4596
+ }
4373
4597
  this._activePanel = panel;
4374
4598
  if (panel) {
4375
4599
  this.tabsContainer.setActivePanel(panel);
4376
4600
  panel.layout(this._width, this._height);
4377
4601
  this.updateMru(panel);
4378
- this._onDidActivePanelChange.fire({ panel });
4602
+ this._onDidActivePanelChange.fire({
4603
+ panel,
4604
+ });
4379
4605
  }
4380
4606
  }
4381
4607
  updateMru(panel) {
@@ -4387,11 +4613,11 @@
4387
4613
  updateContainer() {
4388
4614
  var _a, _b;
4389
4615
  toggleClass(this.container, 'empty', this.isEmpty);
4390
- this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));
4616
+ this.panels.forEach((panel) => panel.runEvents());
4391
4617
  if (this.isEmpty && !this.watermark) {
4392
4618
  const watermark = this.accessor.createWatermarkComponent();
4393
4619
  watermark.init({
4394
- containerApi: new DockviewApi(this.accessor),
4620
+ containerApi: this._api,
4395
4621
  group: this.groupPanel,
4396
4622
  });
4397
4623
  this.watermark = watermark;
@@ -4424,10 +4650,32 @@
4424
4650
  }
4425
4651
  return false;
4426
4652
  }
4427
- handleDropEvent(event, position, index) {
4653
+ handleDropEvent(type, event, position, index) {
4428
4654
  if (this.locked === 'no-drop-target') {
4429
4655
  return;
4430
4656
  }
4657
+ function getKind() {
4658
+ switch (type) {
4659
+ case 'header':
4660
+ return typeof index === 'number' ? 'tab' : 'header_space';
4661
+ case 'content':
4662
+ return 'content';
4663
+ }
4664
+ }
4665
+ const panel = typeof index === 'number' ? this.panels[index] : undefined;
4666
+ const willDropEvent = new DockviewWillDropEvent({
4667
+ nativeEvent: event,
4668
+ position,
4669
+ panel,
4670
+ getData: () => getPanelData(),
4671
+ kind: getKind(),
4672
+ group: this.groupPanel,
4673
+ api: this._api,
4674
+ });
4675
+ this._onWillDrop.fire(willDropEvent);
4676
+ if (willDropEvent.defaultPrevented) {
4677
+ return;
4678
+ }
4431
4679
  const data = getPanelData();
4432
4680
  if (data && data.viewId === this.accessor.id) {
4433
4681
  if (data.panelId === null) {
@@ -4460,12 +4708,14 @@
4460
4708
  });
4461
4709
  }
4462
4710
  else {
4463
- this._onDidDrop.fire({
4711
+ this._onDidDrop.fire(new DockviewDidDropEvent({
4464
4712
  nativeEvent: event,
4465
4713
  position,
4466
- index,
4714
+ panel,
4467
4715
  getData: () => getPanelData(),
4468
- });
4716
+ group: this.groupPanel,
4717
+ api: this._api,
4718
+ }));
4469
4719
  }
4470
4720
  }
4471
4721
  dispose() {
@@ -4473,6 +4723,7 @@
4473
4723
  super.dispose();
4474
4724
  (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();
4475
4725
  (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);
4726
+ this.watermark = undefined;
4476
4727
  for (const panel of this.panels) {
4477
4728
  panel.dispose();
4478
4729
  }
@@ -4494,15 +4745,7 @@
4494
4745
  constructor(parentElement, disableResizing = false) {
4495
4746
  super();
4496
4747
  this._disableResizing = disableResizing;
4497
- if (parentElement) {
4498
- this._element = parentElement;
4499
- }
4500
- else {
4501
- this._element = document.createElement('div');
4502
- this._element.style.height = '100%';
4503
- this._element.style.width = '100%';
4504
- this._element.className = 'dv-resizable-container';
4505
- }
4748
+ this._element = parentElement;
4506
4749
  this.addDisposables(watchElementResize(this._element, (entry) => {
4507
4750
  if (this.isDisposed) {
4508
4751
  /**
@@ -4590,25 +4833,38 @@
4590
4833
  get activeGroup() {
4591
4834
  return this._activeGroup;
4592
4835
  }
4836
+ get locked() {
4837
+ return this.gridview.locked;
4838
+ }
4839
+ set locked(value) {
4840
+ this.gridview.locked = value;
4841
+ }
4593
4842
  constructor(options) {
4594
- super(options.parentElement, options.disableAutoResizing);
4843
+ super(document.createElement('div'), options.disableAutoResizing);
4595
4844
  this._id = nextLayoutId$1.next();
4596
4845
  this._groups = new Map();
4597
4846
  this._onDidLayoutChange = new Emitter();
4598
4847
  this.onDidLayoutChange = this._onDidLayoutChange.event;
4599
- this._onDidRemoveGroup = new Emitter();
4600
- this.onDidRemoveGroup = this._onDidRemoveGroup.event;
4601
- this._onDidAddGroup = new Emitter();
4602
- this.onDidAddGroup = this._onDidAddGroup.event;
4603
- this._onDidActiveGroupChange = new Emitter();
4604
- this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
4848
+ this._onDidRemove = new Emitter();
4849
+ this.onDidRemove = this._onDidRemove.event;
4850
+ this._onDidAdd = new Emitter();
4851
+ this.onDidAdd = this._onDidAdd.event;
4852
+ this._onDidActiveChange = new Emitter();
4853
+ this.onDidActiveChange = this._onDidActiveChange.event;
4605
4854
  this._bufferOnDidLayoutChange = new TickDelayedEvent();
4855
+ this.element.style.height = '100%';
4856
+ this.element.style.width = '100%';
4857
+ options.parentElement.appendChild(this.element);
4606
4858
  this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
4859
+ this.gridview.locked = !!options.locked;
4607
4860
  this.element.appendChild(this.gridview.element);
4608
4861
  this.layout(0, 0, true); // set some elements height/widths
4609
- this.addDisposables(this.gridview.onDidChange(() => {
4862
+ this.addDisposables(Disposable.from(() => {
4863
+ var _a;
4864
+ (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);
4865
+ }), this.gridview.onDidChange(() => {
4610
4866
  this._bufferOnDidLayoutChange.fire();
4611
- }), exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
4867
+ }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {
4612
4868
  this._bufferOnDidLayoutChange.fire();
4613
4869
  }), this._bufferOnDidLayoutChange.onEvent(() => {
4614
4870
  this._onDidLayoutChange.fire();
@@ -4623,6 +4879,7 @@
4623
4879
  }
4624
4880
  maximizeGroup(panel) {
4625
4881
  this.gridview.maximizeView(panel);
4882
+ this.doSetGroupActive(panel);
4626
4883
  }
4627
4884
  isMaximizedGroup(panel) {
4628
4885
  return this.gridview.maximizedView() === panel;
@@ -4633,13 +4890,12 @@
4633
4890
  hasMaximizedGroup() {
4634
4891
  return this.gridview.hasMaximizedView();
4635
4892
  }
4636
- get onDidMaxmizedGroupChange() {
4637
- return this.gridview.onDidMaxmizedNodeChange;
4893
+ get onDidMaximizedGroupChange() {
4894
+ return this.gridview.onDidMaximizedNodeChange;
4638
4895
  }
4639
4896
  doAddGroup(group, location = [0], size) {
4640
4897
  this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
4641
- this._onDidAddGroup.fire(group);
4642
- this.doSetGroupActive(group);
4898
+ this._onDidAdd.fire(group);
4643
4899
  }
4644
4900
  doRemoveGroup(group, options) {
4645
4901
  if (!this._groups.has(group.id)) {
@@ -4651,8 +4907,8 @@
4651
4907
  item.disposable.dispose();
4652
4908
  item.value.dispose();
4653
4909
  this._groups.delete(group.id);
4910
+ this._onDidRemove.fire(group);
4654
4911
  }
4655
- this._onDidRemoveGroup.fire(group);
4656
4912
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
4657
4913
  const groups = Array.from(this._groups.values());
4658
4914
  this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
@@ -4663,25 +4919,18 @@
4663
4919
  var _a;
4664
4920
  return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
4665
4921
  }
4666
- doSetGroupActive(group, skipFocus) {
4667
- var _a, _b, _c;
4922
+ doSetGroupActive(group) {
4668
4923
  if (this._activeGroup === group) {
4669
4924
  return;
4670
4925
  }
4671
4926
  if (this._activeGroup) {
4672
4927
  this._activeGroup.setActive(false);
4673
- if (!skipFocus) {
4674
- (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4675
- }
4676
4928
  }
4677
4929
  if (group) {
4678
4930
  group.setActive(true);
4679
- if (!skipFocus) {
4680
- (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);
4681
- }
4682
4931
  }
4683
4932
  this._activeGroup = group;
4684
- this._onDidActiveGroupChange.fire(group);
4933
+ this._onDidActiveChange.fire(group);
4685
4934
  }
4686
4935
  removeGroup(group) {
4687
4936
  this.doRemoveGroup(group);
@@ -4726,9 +4975,9 @@
4726
4975
  this.gridview.layout(width, height);
4727
4976
  }
4728
4977
  dispose() {
4729
- this._onDidActiveGroupChange.dispose();
4730
- this._onDidAddGroup.dispose();
4731
- this._onDidRemoveGroup.dispose();
4978
+ this._onDidActiveChange.dispose();
4979
+ this._onDidAdd.dispose();
4980
+ this._onDidRemove.dispose();
4732
4981
  this._onDidLayoutChange.dispose();
4733
4982
  for (const group of this.groups) {
4734
4983
  group.dispose();
@@ -4738,11 +4987,15 @@
4738
4987
  }
4739
4988
  }
4740
4989
 
4990
+ class WillFocusEvent extends DockviewEvent {
4991
+ constructor() {
4992
+ super();
4993
+ }
4994
+ }
4741
4995
  /**
4742
4996
  * A core api implementation that should be used across all panel-like objects
4743
4997
  */
4744
4998
  class PanelApiImpl extends CompositeDisposable {
4745
- //
4746
4999
  get isFocused() {
4747
5000
  return this._isFocused;
4748
5001
  }
@@ -4767,35 +5020,22 @@
4767
5020
  this._width = 0;
4768
5021
  this._height = 0;
4769
5022
  this.panelUpdatesDisposable = new MutableDisposable();
4770
- this._onDidDimensionChange = new Emitter({
4771
- replay: true,
4772
- });
5023
+ this._onDidDimensionChange = new Emitter();
4773
5024
  this.onDidDimensionsChange = this._onDidDimensionChange.event;
4774
- //
4775
- this._onDidChangeFocus = new Emitter({
4776
- replay: true,
4777
- });
5025
+ this._onDidChangeFocus = new Emitter();
4778
5026
  this.onDidFocusChange = this._onDidChangeFocus.event;
4779
5027
  //
4780
- this._onFocusEvent = new Emitter();
4781
- this.onFocusEvent = this._onFocusEvent.event;
5028
+ this._onWillFocus = new Emitter();
5029
+ this.onWillFocus = this._onWillFocus.event;
4782
5030
  //
4783
- this._onDidVisibilityChange = new Emitter({
4784
- replay: true,
4785
- });
5031
+ this._onDidVisibilityChange = new Emitter();
4786
5032
  this.onDidVisibilityChange = this._onDidVisibilityChange.event;
4787
- //
4788
- this._onVisibilityChange = new Emitter();
4789
- this.onVisibilityChange = this._onVisibilityChange.event;
4790
- //
4791
- this._onDidActiveChange = new Emitter({
4792
- replay: true,
4793
- });
5033
+ this._onWillVisibilityChange = new Emitter();
5034
+ this.onWillVisibilityChange = this._onWillVisibilityChange.event;
5035
+ this._onDidActiveChange = new Emitter();
4794
5036
  this.onDidActiveChange = this._onDidActiveChange.event;
4795
- //
4796
5037
  this._onActiveChange = new Emitter();
4797
5038
  this.onActiveChange = this._onActiveChange.event;
4798
- //
4799
5039
  this._onUpdateParameters = new Emitter();
4800
5040
  this.onUpdateParameters = this._onUpdateParameters.event;
4801
5041
  this.addDisposables(this.onDidFocusChange((event) => {
@@ -4807,7 +5047,7 @@
4807
5047
  }), this.onDidDimensionsChange((event) => {
4808
5048
  this._width = event.width;
4809
5049
  this._height = event.height;
4810
- }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);
5050
+ }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onWillVisibilityChange, this._onUpdateParameters);
4811
5051
  }
4812
5052
  initialize(panel) {
4813
5053
  this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
@@ -4817,7 +5057,7 @@
4817
5057
  });
4818
5058
  }
4819
5059
  setVisible(isVisible) {
4820
- this._onVisibilityChange.fire({ isVisible });
5060
+ this._onWillVisibilityChange.fire({ isVisible });
4821
5061
  }
4822
5062
  setActive() {
4823
5063
  this._onActiveChange.fire();
@@ -4825,9 +5065,6 @@
4825
5065
  updateParameters(parameters) {
4826
5066
  this._onUpdateParameters.fire(parameters);
4827
5067
  }
4828
- dispose() {
4829
- super.dispose();
4830
- }
4831
5068
  }
4832
5069
 
4833
5070
  class SplitviewPanelApiImpl extends PanelApiImpl {
@@ -4915,7 +5152,12 @@
4915
5152
  }), focusTracker);
4916
5153
  }
4917
5154
  focus() {
4918
- this.api._onFocusEvent.fire();
5155
+ const event = new WillFocusEvent();
5156
+ this.api._onWillFocus.fire(event);
5157
+ if (event.defaultPrevented) {
5158
+ return;
5159
+ }
5160
+ this._element.focus();
4919
5161
  }
4920
5162
  layout(width, height) {
4921
5163
  this._width = width;
@@ -5033,7 +5275,11 @@
5033
5275
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
5034
5276
  this._orientation = orientation;
5035
5277
  this.element.classList.add('pane');
5036
- this.addDisposables(this.api.onDidSizeChange((event) => {
5278
+ this.addDisposables(this.api.onWillVisibilityChange((event) => {
5279
+ const { isVisible } = event;
5280
+ const { accessor } = this._params;
5281
+ accessor.setVisible(this, isVisible);
5282
+ }), this.api.onDidSizeChange((event) => {
5037
5283
  this._onDidChange.fire({ size: event.size });
5038
5284
  }), addDisposableListener(this.element, 'mouseenter', (ev) => {
5039
5285
  this.api._onMouseEnter.fire(ev);
@@ -5244,9 +5490,7 @@
5244
5490
  super(id);
5245
5491
  this._onDidConstraintsChangeInternal = new Emitter();
5246
5492
  this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
5247
- this._onDidConstraintsChange = new Emitter({
5248
- replay: true,
5249
- });
5493
+ this._onDidConstraintsChange = new Emitter();
5250
5494
  this.onDidConstraintsChange = this._onDidConstraintsChange.event;
5251
5495
  this._onDidSizeChange = new Emitter();
5252
5496
  this.onDidSizeChange = this._onDidSizeChange.event;
@@ -5339,13 +5583,13 @@
5339
5583
  this._maximumHeight = options.maximumHeight;
5340
5584
  }
5341
5585
  this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
5342
- this.addDisposables(this.api.onVisibilityChange((event) => {
5586
+ this.addDisposables(this.api.onWillVisibilityChange((event) => {
5343
5587
  const { isVisible } = event;
5344
5588
  const { accessor } = this._params;
5345
5589
  accessor.setVisible(this, isVisible);
5346
5590
  }), this.api.onActiveChange(() => {
5347
5591
  const { accessor } = this._params;
5348
- accessor.setActive(this);
5592
+ accessor.doSetGroupActive(this);
5349
5593
  }), this.api.onDidConstraintsChangeInternal((event) => {
5350
5594
  if (typeof event.minimumWidth === 'number' ||
5351
5595
  typeof event.minimumWidth === 'function') {
@@ -5428,6 +5672,17 @@
5428
5672
  this.onDidLocationChange = this._onDidLocationChange.event;
5429
5673
  this.addDisposables(this._onDidLocationChange);
5430
5674
  }
5675
+ close() {
5676
+ if (!this._group) {
5677
+ return;
5678
+ }
5679
+ return this.accessor.removeGroup(this._group);
5680
+ }
5681
+ getWindow() {
5682
+ return this.location.type === 'popout'
5683
+ ? this.location.getWindow()
5684
+ : window;
5685
+ }
5431
5686
  moveTo(options) {
5432
5687
  var _a, _b, _c;
5433
5688
  if (!this._group) {
@@ -5435,14 +5690,23 @@
5435
5690
  }
5436
5691
  const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
5437
5692
  direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
5693
+ skipSetActive: true,
5694
+ });
5695
+ this.accessor.moveGroupOrPanel({
5696
+ from: { groupId: this._group.id },
5697
+ to: {
5698
+ group,
5699
+ position: options.group
5700
+ ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
5701
+ : 'center',
5702
+ },
5438
5703
  });
5439
- this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
5440
5704
  }
5441
5705
  maximize() {
5442
5706
  if (!this._group) {
5443
5707
  throw new Error(NOT_INITIALIZED_MESSAGE);
5444
5708
  }
5445
- if (this.location !== 'grid') {
5709
+ if (this.location.type !== 'grid') {
5446
5710
  // only grid groups can be maximized
5447
5711
  return;
5448
5712
  }
@@ -5499,6 +5763,12 @@
5499
5763
  this.api.initialize(this); // cannot use 'this' after after 'super' call
5500
5764
  this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
5501
5765
  }
5766
+ focus() {
5767
+ if (!this.api.isActive) {
5768
+ this.api.setActive();
5769
+ }
5770
+ super.focus();
5771
+ }
5502
5772
  initialize() {
5503
5773
  this._model.initialize();
5504
5774
  }
@@ -5544,6 +5814,9 @@
5544
5814
  }
5545
5815
 
5546
5816
  class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5817
+ get location() {
5818
+ return this.group.api.location;
5819
+ }
5547
5820
  get title() {
5548
5821
  return this.panel.title;
5549
5822
  }
@@ -5554,16 +5827,14 @@
5554
5827
  return this.panel.renderer;
5555
5828
  }
5556
5829
  set group(value) {
5557
- const isOldGroupActive = this.isGroupActive;
5558
- this._group = value;
5559
- this._onDidGroupChange.fire();
5560
- if (this._group) {
5561
- this.disposable.value = this._group.api.onDidActiveChange(() => {
5562
- this._onDidActiveGroupChange.fire();
5830
+ const oldGroup = this._group;
5831
+ if (this._group !== value) {
5832
+ this._group = value;
5833
+ this._onDidGroupChange.fire({});
5834
+ this.setupGroupEventListeners(oldGroup);
5835
+ this._onDidLocationChange.fire({
5836
+ location: this.group.api.location,
5563
5837
  });
5564
- if (this.isGroupActive !== isOldGroupActive) {
5565
- this._onDidActiveGroupChange.fire();
5566
- }
5567
5838
  }
5568
5839
  }
5569
5840
  get group() {
@@ -5581,14 +5852,27 @@
5581
5852
  this.onDidGroupChange = this._onDidGroupChange.event;
5582
5853
  this._onDidRendererChange = new Emitter();
5583
5854
  this.onDidRendererChange = this._onDidRendererChange.event;
5584
- this.disposable = new MutableDisposable();
5855
+ this._onDidLocationChange = new Emitter();
5856
+ this.onDidLocationChange = this._onDidLocationChange.event;
5857
+ this.groupEventsDisposable = new MutableDisposable();
5585
5858
  this.initialize(panel);
5586
5859
  this._group = group;
5587
- this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
5860
+ this.setupGroupEventListeners();
5861
+ this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);
5862
+ }
5863
+ getWindow() {
5864
+ return this.group.api.getWindow();
5588
5865
  }
5589
5866
  moveTo(options) {
5590
5867
  var _a;
5591
- this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);
5868
+ this.accessor.moveGroupOrPanel({
5869
+ from: { groupId: this._group.id, panelId: this.panel.id },
5870
+ to: {
5871
+ group: options.group,
5872
+ position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
5873
+ index: options.index,
5874
+ },
5875
+ });
5592
5876
  }
5593
5877
  setTitle(title) {
5594
5878
  this.panel.setTitle(title);
@@ -5608,6 +5892,35 @@
5608
5892
  exitMaximized() {
5609
5893
  this.group.api.exitMaximized();
5610
5894
  }
5895
+ setupGroupEventListeners(previousGroup) {
5896
+ var _a;
5897
+ let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state
5898
+ this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {
5899
+ if (!event.isVisible && this.isVisible) {
5900
+ this._onDidVisibilityChange.fire(event);
5901
+ }
5902
+ else if (event.isVisible &&
5903
+ !this.isVisible &&
5904
+ this.group.model.isPanelActive(this.panel)) {
5905
+ this._onDidVisibilityChange.fire(event);
5906
+ }
5907
+ }), this.group.api.onDidLocationChange((event) => {
5908
+ if (this.group !== this.panel.group) {
5909
+ return;
5910
+ }
5911
+ this._onDidLocationChange.fire(event);
5912
+ }), this.group.api.onDidActiveChange(() => {
5913
+ if (this.group !== this.panel.group) {
5914
+ return;
5915
+ }
5916
+ if (_trackGroupActive !== this.isGroupActive) {
5917
+ _trackGroupActive = this.isGroupActive;
5918
+ this._onDidActiveGroupChange.fire({
5919
+ isActive: this.isGroupActive,
5920
+ });
5921
+ }
5922
+ }));
5923
+ }
5611
5924
  }
5612
5925
 
5613
5926
  class DockviewPanel extends CompositeDisposable {
@@ -5649,7 +5962,14 @@
5649
5962
  this.setTitle(params.title);
5650
5963
  }
5651
5964
  focus() {
5652
- this.api._onFocusEvent.fire();
5965
+ const event = new WillFocusEvent();
5966
+ this.api._onWillFocus.fire(event);
5967
+ if (event.defaultPrevented) {
5968
+ return;
5969
+ }
5970
+ if (!this.api.isActive) {
5971
+ this.api.setActive();
5972
+ }
5653
5973
  }
5654
5974
  toJSON() {
5655
5975
  return {
@@ -5706,20 +6026,40 @@
5706
6026
  },
5707
6027
  });
5708
6028
  }
5709
- updateParentGroup(group, isGroupActive) {
6029
+ updateParentGroup(group, options) {
5710
6030
  this._group = group;
5711
- this.api.group = group;
6031
+ this.api.group = this._group;
5712
6032
  const isPanelVisible = this._group.model.isPanelActive(this);
5713
- this.api._onDidActiveChange.fire({
5714
- isActive: isGroupActive && isPanelVisible,
5715
- });
5716
- this.api._onDidVisibilityChange.fire({
5717
- isVisible: isPanelVisible,
5718
- });
5719
- this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));
6033
+ const isActive = this.group.api.isActive && isPanelVisible;
6034
+ if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {
6035
+ if (this.api.isActive !== isActive) {
6036
+ this.api._onDidActiveChange.fire({
6037
+ isActive: this.group.api.isActive && isPanelVisible,
6038
+ });
6039
+ }
6040
+ }
6041
+ if (this.api.isVisible !== isPanelVisible) {
6042
+ this.api._onDidVisibilityChange.fire({
6043
+ isVisible: isPanelVisible,
6044
+ });
6045
+ }
6046
+ }
6047
+ runEvents() {
6048
+ const isPanelVisible = this._group.model.isPanelActive(this);
6049
+ const isActive = this.group.api.isActive && isPanelVisible;
6050
+ if (this.api.isActive !== isActive) {
6051
+ this.api._onDidActiveChange.fire({
6052
+ isActive: this.group.api.isActive && isPanelVisible,
6053
+ });
6054
+ }
6055
+ if (this.api.isVisible !== isPanelVisible) {
6056
+ this.api._onDidVisibilityChange.fire({
6057
+ isVisible: isPanelVisible,
6058
+ });
6059
+ }
5720
6060
  }
5721
6061
  layout(width, height) {
5722
- // the obtain the correct dimensions of the content panel we must deduct the tab height
6062
+ // TODO: Can we somehow do height without header height or indicate what the header height is?
5723
6063
  this.api._onDidDimensionChange.fire({
5724
6064
  width,
5725
6065
  height: height,
@@ -5841,8 +6181,6 @@
5841
6181
  this.id = id;
5842
6182
  this.contentComponent = contentComponent;
5843
6183
  this.tabComponent = tabComponent;
5844
- this._group = null;
5845
- this._isPanelVisible = null;
5846
6184
  this._content = this.createContentComponent(this.id, contentComponent);
5847
6185
  this._tab = this.createTabComponent(this.id, tabComponent);
5848
6186
  }
@@ -5850,25 +6188,8 @@
5850
6188
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
5851
6189
  this.tab.init(params);
5852
6190
  }
5853
- updateParentGroup(group, isPanelVisible) {
5854
- if (group !== this._group) {
5855
- this._group = group;
5856
- if (this._content.onGroupChange) {
5857
- this._content.onGroupChange(group);
5858
- }
5859
- if (this._tab.onGroupChange) {
5860
- this._tab.onGroupChange(group);
5861
- }
5862
- }
5863
- if (isPanelVisible !== this._isPanelVisible) {
5864
- this._isPanelVisible = isPanelVisible;
5865
- if (this._content.onPanelVisibleChange) {
5866
- this._content.onPanelVisibleChange(isPanelVisible);
5867
- }
5868
- if (this._tab.onPanelVisibleChange) {
5869
- this._tab.onPanelVisibleChange(isPanelVisible);
5870
- }
5871
- }
6191
+ updateParentGroup(_group, _isPanelVisible) {
6192
+ // noop
5872
6193
  }
5873
6194
  layout(width, height) {
5874
6195
  var _a, _b;
@@ -6301,117 +6622,6 @@
6301
6622
  }
6302
6623
  }
6303
6624
 
6304
- class PopoutWindow extends CompositeDisposable {
6305
- constructor(id, className, options) {
6306
- super();
6307
- this.id = id;
6308
- this.className = className;
6309
- this.options = options;
6310
- this._onDidClose = new Emitter();
6311
- this.onDidClose = this._onDidClose.event;
6312
- this._window = null;
6313
- this.addDisposables(this._onDidClose, {
6314
- dispose: () => {
6315
- this.close();
6316
- },
6317
- });
6318
- }
6319
- dimensions() {
6320
- if (!this._window) {
6321
- return null;
6322
- }
6323
- const left = this._window.value.screenX;
6324
- const top = this._window.value.screenY;
6325
- const width = this._window.value.innerWidth;
6326
- const height = this._window.value.innerHeight;
6327
- return { top, left, width, height };
6328
- }
6329
- close() {
6330
- if (this._window) {
6331
- this._window.disposable.dispose();
6332
- this._window.value.close();
6333
- this._window = null;
6334
- }
6335
- }
6336
- open(content) {
6337
- if (this._window) {
6338
- throw new Error('instance of popout window is already open');
6339
- }
6340
- const url = `${this.options.url}`;
6341
- const features = Object.entries({
6342
- top: this.options.top,
6343
- left: this.options.left,
6344
- width: this.options.width,
6345
- height: this.options.height,
6346
- })
6347
- .map(([key, value]) => `${key}=${value}`)
6348
- .join(',');
6349
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6350
- const externalWindow = window.open(url, this.id, features);
6351
- if (!externalWindow) {
6352
- return;
6353
- }
6354
- const disposable = new CompositeDisposable();
6355
- this._window = { value: externalWindow, disposable };
6356
- const cleanUp = () => {
6357
- this._onDidClose.fire();
6358
- this._window = null;
6359
- };
6360
- // prevent any default content from loading
6361
- // externalWindow.document.body.replaceWith(document.createElement('div'));
6362
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6363
- cleanUp();
6364
- this.close();
6365
- }));
6366
- externalWindow.addEventListener('load', () => {
6367
- const externalDocument = externalWindow.document;
6368
- externalDocument.title = document.title;
6369
- const div = document.createElement('div');
6370
- div.classList.add('dv-popout-window');
6371
- div.style.position = 'absolute';
6372
- div.style.width = '100%';
6373
- div.style.height = '100%';
6374
- div.style.top = '0px';
6375
- div.style.left = '0px';
6376
- div.classList.add(this.className);
6377
- div.appendChild(content);
6378
- externalDocument.body.replaceChildren(div);
6379
- externalDocument.body.classList.add(this.className);
6380
- addStyles(externalDocument, window.document.styleSheets);
6381
- externalWindow.addEventListener('beforeunload', () => {
6382
- // TODO: indicate external window is closing
6383
- cleanUp();
6384
- });
6385
- });
6386
- }
6387
- }
6388
-
6389
- class DockviewPopoutGroupPanel extends CompositeDisposable {
6390
- constructor(id, group, options) {
6391
- var _a;
6392
- super();
6393
- this.id = id;
6394
- this.group = group;
6395
- this.options = options;
6396
- this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
6397
- url: this.options.popoutUrl,
6398
- left: this.options.box.left,
6399
- top: this.options.box.top,
6400
- width: this.options.box.width,
6401
- height: this.options.box.height,
6402
- });
6403
- group.model.location = 'popout';
6404
- this.addDisposables(this.window, {
6405
- dispose: () => {
6406
- group.model.location = 'grid';
6407
- },
6408
- }, this.window.onDidClose(() => {
6409
- this.dispose();
6410
- }));
6411
- this.window.open(group.element);
6412
- }
6413
- }
6414
-
6415
6625
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6416
6626
  const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6417
6627
 
@@ -6425,11 +6635,13 @@
6425
6635
  super();
6426
6636
  this.element = element;
6427
6637
  this.map = {};
6638
+ this._disposed = false;
6428
6639
  this.addDisposables(Disposable.from(() => {
6429
6640
  for (const value of Object.values(this.map)) {
6430
6641
  value.disposable.dispose();
6431
6642
  value.destroy.dispose();
6432
6643
  }
6644
+ this._disposed = true;
6433
6645
  }));
6434
6646
  }
6435
6647
  detatch(panel) {
@@ -6469,7 +6681,7 @@
6469
6681
  focusContainer.style.top = `${box.top - box2.top}px`;
6470
6682
  focusContainer.style.width = `${box.width}px`;
6471
6683
  focusContainer.style.height = `${box.height}px`;
6472
- toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
6684
+ toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
6473
6685
  };
6474
6686
  const visibilityChanged = () => {
6475
6687
  if (panel.api.isVisible) {
@@ -6515,8 +6727,11 @@
6515
6727
  resize();
6516
6728
  }));
6517
6729
  this.map[panel.api.id].destroy = Disposable.from(() => {
6518
- focusContainer.removeChild(panel.view.content.element);
6519
- this.element.removeChild(focusContainer);
6730
+ var _a;
6731
+ if (panel.view.content.element.parentElement === focusContainer) {
6732
+ focusContainer.removeChild(panel.view.content.element);
6733
+ }
6734
+ (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);
6520
6735
  });
6521
6736
  queueMicrotask(() => {
6522
6737
  if (this.isDisposed) {
@@ -6537,11 +6752,187 @@
6537
6752
  }
6538
6753
  }
6539
6754
 
6755
+ /******************************************************************************
6756
+ Copyright (c) Microsoft Corporation.
6757
+
6758
+ Permission to use, copy, modify, and/or distribute this software for any
6759
+ purpose with or without fee is hereby granted.
6760
+
6761
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6762
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6763
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6764
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6765
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6766
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6767
+ PERFORMANCE OF THIS SOFTWARE.
6768
+ ***************************************************************************** */
6769
+ /* global Reflect, Promise, SuppressedError, Symbol */
6770
+
6771
+
6772
+ function __awaiter(thisArg, _arguments, P, generator) {
6773
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6774
+ return new (P || (P = Promise))(function (resolve, reject) {
6775
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6776
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6777
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
6778
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
6779
+ });
6780
+ }
6781
+
6782
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
6783
+ var e = new Error(message);
6784
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
6785
+ };
6786
+
6787
+ class PopoutWindow extends CompositeDisposable {
6788
+ get window() {
6789
+ var _a, _b;
6790
+ return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
6791
+ }
6792
+ constructor(target, className, options) {
6793
+ super();
6794
+ this.target = target;
6795
+ this.className = className;
6796
+ this.options = options;
6797
+ this._onWillClose = new Emitter();
6798
+ this.onWillClose = this._onWillClose.event;
6799
+ this._onDidClose = new Emitter();
6800
+ this.onDidClose = this._onDidClose.event;
6801
+ this._window = null;
6802
+ this.addDisposables(this._onWillClose, this._onDidClose, {
6803
+ dispose: () => {
6804
+ this.close();
6805
+ },
6806
+ });
6807
+ }
6808
+ dimensions() {
6809
+ if (!this._window) {
6810
+ return null;
6811
+ }
6812
+ const left = this._window.value.screenX;
6813
+ const top = this._window.value.screenY;
6814
+ const width = this._window.value.innerWidth;
6815
+ const height = this._window.value.innerHeight;
6816
+ return { top, left, width, height };
6817
+ }
6818
+ close() {
6819
+ var _a, _b;
6820
+ if (this._window) {
6821
+ this._onWillClose.fire();
6822
+ (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {
6823
+ id: this.target,
6824
+ window: this._window.value,
6825
+ });
6826
+ this._window.disposable.dispose();
6827
+ this._window.value.close();
6828
+ this._window = null;
6829
+ this._onDidClose.fire();
6830
+ }
6831
+ }
6832
+ open() {
6833
+ var _a, _b;
6834
+ return __awaiter(this, void 0, void 0, function* () {
6835
+ if (this._window) {
6836
+ throw new Error('instance of popout window is already open');
6837
+ }
6838
+ const url = `${this.options.url}`;
6839
+ const features = Object.entries({
6840
+ top: this.options.top,
6841
+ left: this.options.left,
6842
+ width: this.options.width,
6843
+ height: this.options.height,
6844
+ })
6845
+ .map(([key, value]) => `${key}=${value}`)
6846
+ .join(',');
6847
+ /**
6848
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6849
+ */
6850
+ const externalWindow = window.open(url, this.target, features);
6851
+ if (!externalWindow) {
6852
+ /**
6853
+ * Popup blocked
6854
+ */
6855
+ return null;
6856
+ }
6857
+ const disposable = new CompositeDisposable();
6858
+ this._window = { value: externalWindow, disposable };
6859
+ disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6860
+ /**
6861
+ * before the main window closes we should close this popup too
6862
+ * to be good citizens
6863
+ *
6864
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6865
+ */
6866
+ this.close();
6867
+ }));
6868
+ const container = this.createPopoutWindowContainer();
6869
+ if (this.className) {
6870
+ container.classList.add(this.className);
6871
+ }
6872
+ (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {
6873
+ id: this.target,
6874
+ window: externalWindow,
6875
+ });
6876
+ return new Promise((resolve) => {
6877
+ externalWindow.addEventListener('unload', (e) => {
6878
+ // if page fails to load before unloading
6879
+ // this.close();
6880
+ });
6881
+ externalWindow.addEventListener('load', () => {
6882
+ /**
6883
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
6884
+ */
6885
+ const externalDocument = externalWindow.document;
6886
+ externalDocument.title = document.title;
6887
+ externalDocument.body.appendChild(container);
6888
+ addStyles(externalDocument, window.document.styleSheets);
6889
+ /**
6890
+ * beforeunload must be registered after load for reasons I could not determine
6891
+ * otherwise the beforeunload event will not fire when the window is closed
6892
+ */
6893
+ addDisposableWindowListener(externalWindow, 'beforeunload', () => {
6894
+ /**
6895
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6896
+ */
6897
+ this.close();
6898
+ });
6899
+ resolve(container);
6900
+ });
6901
+ });
6902
+ });
6903
+ }
6904
+ createPopoutWindowContainer() {
6905
+ const el = document.createElement('div');
6906
+ el.classList.add('dv-popout-window');
6907
+ el.id = 'dv-popout-window';
6908
+ el.style.position = 'absolute';
6909
+ el.style.width = '100%';
6910
+ el.style.height = '100%';
6911
+ el.style.top = '0px';
6912
+ el.style.left = '0px';
6913
+ return el;
6914
+ }
6915
+ }
6916
+
6540
6917
  const DEFAULT_ROOT_OVERLAY_MODEL = {
6541
6918
  activationSize: { type: 'pixels', value: 10 },
6542
6919
  size: { type: 'pixels', value: 20 },
6543
6920
  };
6544
- function getTheme(element) {
6921
+ function moveGroupWithoutDestroying(options) {
6922
+ const activePanel = options.from.activePanel;
6923
+ const panels = [...options.from.panels].map((panel) => {
6924
+ const removedPanel = options.from.model.removePanel(panel);
6925
+ options.from.model.renderContainer.detatch(panel);
6926
+ return removedPanel;
6927
+ });
6928
+ panels.forEach((panel) => {
6929
+ options.to.model.openPanel(panel, {
6930
+ skipSetActive: activePanel !== panel,
6931
+ skipSetGroupActive: true,
6932
+ });
6933
+ });
6934
+ }
6935
+ function getDockviewTheme(element) {
6545
6936
  function toClassList(element) {
6546
6937
  const list = [];
6547
6938
  for (let i = 0; i < element.classList.length; i++) {
@@ -6592,6 +6983,7 @@
6592
6983
  styles: options.styles,
6593
6984
  parentElement: options.parentElement,
6594
6985
  disableAutoResizing: options.disableAutoResizing,
6986
+ locked: options.locked,
6595
6987
  });
6596
6988
  this.nextGroupId = sequentialNumberGenerator();
6597
6989
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -6602,6 +6994,10 @@
6602
6994
  this.onWillDragGroup = this._onWillDragGroup.event;
6603
6995
  this._onDidDrop = new Emitter();
6604
6996
  this.onDidDrop = this._onDidDrop.event;
6997
+ this._onWillDrop = new Emitter();
6998
+ this.onWillDrop = this._onWillDrop.event;
6999
+ this._onWillShowOverlay = new Emitter();
7000
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
6605
7001
  this._onDidRemovePanel = new Emitter();
6606
7002
  this.onDidRemovePanel = this._onDidRemovePanel.event;
6607
7003
  this._onDidAddPanel = new Emitter();
@@ -6610,15 +7006,36 @@
6610
7006
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
6611
7007
  this._onDidActivePanelChange = new Emitter();
6612
7008
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7009
+ this._onDidMovePanel = new Emitter();
6613
7010
  this._floatingGroups = [];
6614
7011
  this._popoutGroups = [];
7012
+ this._ignoreEvents = 0;
7013
+ this._onDidRemoveGroup = new Emitter();
7014
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
7015
+ this._onDidAddGroup = new Emitter();
7016
+ this.onDidAddGroup = this._onDidAddGroup.event;
7017
+ this._onDidActiveGroupChange = new Emitter();
7018
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7019
+ this._moving = false;
6615
7020
  const gready = document.createElement('div');
6616
7021
  gready.className = 'dv-overlay-render-container';
6617
7022
  this.gridview.element.appendChild(gready);
6618
7023
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
6619
7024
  toggleClass(this.gridview.element, 'dv-dockview', true);
6620
7025
  toggleClass(this.element, 'dv-debug', !!options.debug);
6621
- this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
7026
+ 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) => {
7027
+ if (!this._moving) {
7028
+ this._onDidAddGroup.fire(event);
7029
+ }
7030
+ }), this.onDidRemove((event) => {
7031
+ if (!this._moving) {
7032
+ this._onDidRemoveGroup.fire(event);
7033
+ }
7034
+ }), this.onDidActiveChange((event) => {
7035
+ if (!this._moving) {
7036
+ this._onDidActiveGroupChange.fire(event);
7037
+ }
7038
+ }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
6622
7039
  this.updateWatermark();
6623
7040
  }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
6624
7041
  this._bufferOnDidLayoutChange.fire();
@@ -6629,7 +7046,7 @@
6629
7046
  }
6630
7047
  // iterate over a copy of the array since .dispose() mutates the original array
6631
7048
  for (const group of [...this._popoutGroups]) {
6632
- group.dispose();
7049
+ group.disposable.dispose();
6633
7050
  }
6634
7051
  }));
6635
7052
  this._options = options;
@@ -6675,7 +7092,7 @@
6675
7092
  return this.options.showDndOverlay({
6676
7093
  nativeEvent: event,
6677
7094
  position: position,
6678
- target: exports.DockviewDropTargets.Edge,
7095
+ target: 'edge',
6679
7096
  getData: getPanelData,
6680
7097
  });
6681
7098
  }
@@ -6684,88 +7101,259 @@
6684
7101
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
6685
7102
  overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
6686
7103
  });
6687
- this.addDisposables(this._rootDropTarget.onDrop((event) => {
7104
+ this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
7105
+ if (this.gridview.length > 0 && event.position === 'center') {
7106
+ // option only available when no panels in primary grid
7107
+ return;
7108
+ }
7109
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
7110
+ kind: 'edge',
7111
+ }));
7112
+ }), this._rootDropTarget.onDrop((event) => {
6688
7113
  var _a;
7114
+ const willDropEvent = new DockviewWillDropEvent({
7115
+ nativeEvent: event.nativeEvent,
7116
+ position: event.position,
7117
+ panel: undefined,
7118
+ api: this._api,
7119
+ group: undefined,
7120
+ getData: getPanelData,
7121
+ kind: 'edge',
7122
+ });
7123
+ this._onWillDrop.fire(willDropEvent);
7124
+ if (willDropEvent.defaultPrevented) {
7125
+ return;
7126
+ }
6689
7127
  const data = getPanelData();
6690
7128
  if (data) {
6691
- this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined, 'center');
7129
+ this.moveGroupOrPanel({
7130
+ from: {
7131
+ groupId: data.groupId,
7132
+ panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,
7133
+ },
7134
+ to: {
7135
+ group: this.orthogonalize(event.position),
7136
+ position: 'center',
7137
+ },
7138
+ });
6692
7139
  }
6693
7140
  else {
6694
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
7141
+ this._onDidDrop.fire(new DockviewDidDropEvent({
7142
+ nativeEvent: event.nativeEvent,
7143
+ position: event.position,
7144
+ panel: undefined,
7145
+ api: this._api,
7146
+ group: undefined,
7147
+ getData: getPanelData,
7148
+ }));
6695
7149
  }
6696
7150
  }), this._rootDropTarget);
6697
7151
  this._api = new DockviewApi(this);
6698
7152
  this.updateWatermark();
6699
7153
  }
6700
- addPopoutGroup(item, options) {
6701
- var _a;
6702
- let group;
6703
- let box = options === null || options === void 0 ? void 0 : options.position;
6704
- if (item instanceof DockviewPanel) {
6705
- group = this.createGroup();
6706
- this.removePanel(item, {
6707
- removeEmptyGroup: true,
6708
- skipDispose: true,
6709
- });
6710
- group.model.openPanel(item);
6711
- if (!box) {
6712
- box = this.element.getBoundingClientRect();
7154
+ addPopoutGroup(itemToPopout, options) {
7155
+ var _a, _b, _c;
7156
+ if (itemToPopout instanceof DockviewPanel &&
7157
+ itemToPopout.group.size === 1) {
7158
+ return this.addPopoutGroup(itemToPopout.group);
7159
+ }
7160
+ const theme = getDockviewTheme(this.gridview.element);
7161
+ const element = this.element;
7162
+ function getBox() {
7163
+ if (options === null || options === void 0 ? void 0 : options.position) {
7164
+ return options.position;
7165
+ }
7166
+ if (itemToPopout instanceof DockviewGroupPanel) {
7167
+ return itemToPopout.element.getBoundingClientRect();
7168
+ }
7169
+ if (itemToPopout.group) {
7170
+ return itemToPopout.group.element.getBoundingClientRect();
7171
+ }
7172
+ return element.getBoundingClientRect();
7173
+ }
7174
+ const box = getBox();
7175
+ 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;
7176
+ if (itemToPopout.api.location.type === 'grid') {
7177
+ itemToPopout.api.setVisible(false);
7178
+ }
7179
+ const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7180
+ theme !== null && theme !== void 0 ? theme : '', {
7181
+ url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
7182
+ left: window.screenX + box.left,
7183
+ top: window.screenY + box.top,
7184
+ width: box.width,
7185
+ height: box.height,
7186
+ onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
7187
+ onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
7188
+ });
7189
+ const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {
7190
+ popoutWindowDisposable.dispose();
7191
+ }));
7192
+ return _window
7193
+ .open()
7194
+ .then((popoutContainer) => {
7195
+ var _a;
7196
+ if (_window.isDisposed) {
7197
+ return;
6713
7198
  }
6714
- }
6715
- else {
6716
- group = item;
6717
- if (!box) {
6718
- box = group.element.getBoundingClientRect();
7199
+ if (popoutContainer === null) {
7200
+ popoutWindowDisposable.dispose();
7201
+ return;
6719
7202
  }
6720
- const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6721
- options.skipRemoveGroup;
6722
- if (!skip) {
6723
- this.doRemoveGroup(item, { skipDispose: true });
6724
- }
6725
- }
6726
- const theme = getTheme(this.gridview.element);
6727
- const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
6728
- group, {
6729
- className: theme !== null && theme !== void 0 ? theme : '',
6730
- popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
6731
- box: {
6732
- left: window.screenX + box.left,
6733
- top: window.screenY + box.top,
6734
- width: box.width,
6735
- height: box.height,
6736
- },
7203
+ const gready = document.createElement('div');
7204
+ gready.className = 'dv-overlay-render-container';
7205
+ const overlayRenderContainer = new OverlayRenderContainer(gready);
7206
+ const referenceGroup = itemToPopout instanceof DockviewPanel
7207
+ ? itemToPopout.group
7208
+ : itemToPopout;
7209
+ const referenceLocation = itemToPopout.api.location.type;
7210
+ const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
7211
+ group.model.renderContainer = overlayRenderContainer;
7212
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
7213
+ this._onDidAddGroup.fire(group);
7214
+ }
7215
+ if (itemToPopout instanceof DockviewPanel) {
7216
+ this.movingLock(() => {
7217
+ const panel = referenceGroup.model.removePanel(itemToPopout);
7218
+ group.model.openPanel(panel);
7219
+ });
7220
+ }
7221
+ else {
7222
+ this.movingLock(() => moveGroupWithoutDestroying({
7223
+ from: referenceGroup,
7224
+ to: group,
7225
+ }));
7226
+ switch (referenceLocation) {
7227
+ case 'grid':
7228
+ referenceGroup.api.setVisible(false);
7229
+ break;
7230
+ case 'floating':
7231
+ case 'popout':
7232
+ this.removeGroup(referenceGroup);
7233
+ break;
7234
+ }
7235
+ }
7236
+ popoutContainer.classList.add('dv-dockview');
7237
+ popoutContainer.style.overflow = 'hidden';
7238
+ popoutContainer.appendChild(gready);
7239
+ popoutContainer.appendChild(group.element);
7240
+ group.model.location = {
7241
+ type: 'popout',
7242
+ getWindow: () => _window.window,
7243
+ };
7244
+ this.doSetGroupAndPanelActive(group);
7245
+ popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
7246
+ var _a;
7247
+ if (event.isActive) {
7248
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7249
+ }
7250
+ }), group.api.onWillFocus(() => {
7251
+ var _a;
7252
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7253
+ }));
7254
+ let returnedGroup;
7255
+ const value = {
7256
+ window: _window,
7257
+ popoutGroup: group,
7258
+ referenceGroup: this.getPanel(referenceGroup.id)
7259
+ ? referenceGroup.id
7260
+ : undefined,
7261
+ disposable: {
7262
+ dispose: () => {
7263
+ popoutWindowDisposable.dispose();
7264
+ return returnedGroup;
7265
+ },
7266
+ },
7267
+ };
7268
+ popoutWindowDisposable.addDisposables(
7269
+ /**
7270
+ * ResizeObserver seems slow here, I do not know why but we don't need it
7271
+ * since we can reply on the window resize event as we will occupy the full
7272
+ * window dimensions
7273
+ */
7274
+ addDisposableWindowListener(_window.window, 'resize', () => {
7275
+ group.layout(window.innerWidth, window.innerHeight);
7276
+ }), overlayRenderContainer, Disposable.from(() => {
7277
+ if (this.getPanel(referenceGroup.id)) {
7278
+ this.movingLock(() => moveGroupWithoutDestroying({
7279
+ from: group,
7280
+ to: referenceGroup,
7281
+ }));
7282
+ if (!referenceGroup.api.isVisible) {
7283
+ referenceGroup.api.setVisible(true);
7284
+ }
7285
+ if (this.getPanel(group.id)) {
7286
+ this.doRemoveGroup(group, {
7287
+ skipPopoutAssociated: true,
7288
+ });
7289
+ }
7290
+ }
7291
+ else {
7292
+ if (this.getPanel(group.id)) {
7293
+ const removedGroup = this.doRemoveGroup(group, {
7294
+ skipDispose: true,
7295
+ skipActive: true,
7296
+ });
7297
+ removedGroup.model.renderContainer =
7298
+ this.overlayRenderContainer;
7299
+ removedGroup.model.location = { type: 'grid' };
7300
+ returnedGroup = removedGroup;
7301
+ }
7302
+ }
7303
+ }));
7304
+ this._popoutGroups.push(value);
7305
+ this.updateWatermark();
7306
+ })
7307
+ .catch((err) => {
7308
+ console.error(err);
6737
7309
  });
6738
- popoutWindow.addDisposables({
6739
- dispose: () => {
6740
- remove(this._popoutGroups, popoutWindow);
6741
- this.updateWatermark();
6742
- },
6743
- }, popoutWindow.window.onDidClose(() => {
6744
- this.doAddGroup(group, [0]);
6745
- }));
6746
- this._popoutGroups.push(popoutWindow);
6747
- this.updateWatermark();
6748
7310
  }
6749
7311
  addFloatingGroup(item, coord, options) {
6750
- var _a, _b, _c, _d, _e, _f;
7312
+ var _a, _b, _c, _d, _e, _f, _g;
6751
7313
  let group;
6752
7314
  if (item instanceof DockviewPanel) {
6753
7315
  group = this.createGroup();
6754
- this.removePanel(item, {
7316
+ this._onDidAddGroup.fire(group);
7317
+ this.movingLock(() => this.removePanel(item, {
6755
7318
  removeEmptyGroup: true,
6756
7319
  skipDispose: true,
6757
- });
6758
- group.model.openPanel(item);
7320
+ skipSetActiveGroup: true,
7321
+ }));
7322
+ group.model.openPanel(item, { skipSetGroupActive: true });
6759
7323
  }
6760
7324
  else {
6761
7325
  group = item;
7326
+ const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;
7327
+ const popoutReferenceGroup = popoutReferenceGroupId
7328
+ ? this.getPanel(popoutReferenceGroupId)
7329
+ : undefined;
6762
7330
  const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6763
7331
  options.skipRemoveGroup;
6764
7332
  if (!skip) {
6765
- this.doRemoveGroup(item, { skipDispose: true });
7333
+ if (popoutReferenceGroup) {
7334
+ this.movingLock(() => moveGroupWithoutDestroying({
7335
+ from: item,
7336
+ to: popoutReferenceGroup,
7337
+ }));
7338
+ this.doRemoveGroup(item, {
7339
+ skipPopoutReturn: true,
7340
+ skipPopoutAssociated: true,
7341
+ });
7342
+ this.doRemoveGroup(popoutReferenceGroup, {
7343
+ skipDispose: true,
7344
+ });
7345
+ group = popoutReferenceGroup;
7346
+ }
7347
+ else {
7348
+ this.doRemoveGroup(item, {
7349
+ skipDispose: true,
7350
+ skipPopoutReturn: true,
7351
+ skipPopoutAssociated: !!popoutReferenceGroup,
7352
+ });
7353
+ }
6766
7354
  }
6767
7355
  }
6768
- group.model.location = 'floating';
7356
+ group.model.location = { type: 'floating' };
6769
7357
  const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
6770
7358
  ? Math.max(coord.x, 0)
6771
7359
  : DEFAULT_FLOATING_GROUP_POSITION.left;
@@ -6775,16 +7363,16 @@
6775
7363
  const overlay = new Overlay({
6776
7364
  container: this.gridview.element,
6777
7365
  content: group.element,
6778
- height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
6779
- width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
7366
+ height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
7367
+ width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
6780
7368
  left: overlayLeft,
6781
7369
  top: overlayTop,
6782
7370
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
6783
7371
  ? undefined
6784
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7372
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6785
7373
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
6786
7374
  ? undefined
6787
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7375
+ : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6788
7376
  });
6789
7377
  const el = group.element.querySelector('.void-container');
6790
7378
  if (!el) {
@@ -6815,12 +7403,15 @@
6815
7403
  }), {
6816
7404
  dispose: () => {
6817
7405
  disposable.dispose();
6818
- group.model.location = 'grid';
7406
+ group.model.location = { type: 'grid' };
6819
7407
  remove(this._floatingGroups, floatingGroupPanel);
6820
7408
  this.updateWatermark();
6821
7409
  },
6822
7410
  });
6823
7411
  this._floatingGroups.push(floatingGroupPanel);
7412
+ if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
7413
+ this.doSetGroupAndPanelActive(group);
7414
+ }
6824
7415
  this.updateWatermark();
6825
7416
  }
6826
7417
  orthogonalize(position) {
@@ -6910,8 +7501,8 @@
6910
7501
  return this.panels.find((panel) => panel.id === id);
6911
7502
  }
6912
7503
  setActivePanel(panel) {
6913
- this.doSetGroupActive(panel.group);
6914
7504
  panel.group.model.openPanel(panel);
7505
+ this.doSetGroupAndPanelActive(panel.group);
6915
7506
  }
6916
7507
  moveToNext(options = {}) {
6917
7508
  var _a;
@@ -6972,7 +7563,8 @@
6972
7563
  });
6973
7564
  const popoutGroups = this._popoutGroups.map((group) => {
6974
7565
  return {
6975
- data: group.group.toJSON(),
7566
+ data: group.popoutGroup.toJSON(),
7567
+ gridReferenceGroup: group.referenceGroup,
6976
7568
  position: group.window.dimensions(),
6977
7569
  };
6978
7570
  });
@@ -6990,7 +7582,7 @@
6990
7582
  return result;
6991
7583
  }
6992
7584
  fromJSON(data) {
6993
- var _a, _b;
7585
+ var _a, _b, _c;
6994
7586
  this.clear();
6995
7587
  if (typeof data !== 'object' || data === null) {
6996
7588
  throw new Error('serialized layout must be a non-null object');
@@ -7029,7 +7621,7 @@
7029
7621
  const isActive = typeof activeView === 'string' &&
7030
7622
  activeView === panel.id;
7031
7623
  group.model.openPanel(panel, {
7032
- skipSetPanelActive: !isActive,
7624
+ skipSetActive: !isActive,
7033
7625
  skipSetGroupActive: true,
7034
7626
  });
7035
7627
  }
@@ -7059,11 +7651,16 @@
7059
7651
  }
7060
7652
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7061
7653
  for (const serializedPopoutGroup of serializedPopoutGroups) {
7062
- const { data, position } = serializedPopoutGroup;
7654
+ const { data, position, gridReferenceGroup } = serializedPopoutGroup;
7063
7655
  const group = createGroupFromSerializedState(data);
7064
- this.addPopoutGroup(group, {
7656
+ this.addPopoutGroup((_c = (gridReferenceGroup
7657
+ ? this.getPanel(gridReferenceGroup)
7658
+ : undefined)) !== null && _c !== void 0 ? _c : group, {
7065
7659
  skipRemoveGroup: true,
7066
7660
  position: position !== null && position !== void 0 ? position : undefined,
7661
+ overridePopoutGroup: gridReferenceGroup
7662
+ ? group
7663
+ : undefined,
7067
7664
  });
7068
7665
  }
7069
7666
  for (const floatingGroup of this._floatingGroups) {
@@ -7110,12 +7707,13 @@
7110
7707
  */
7111
7708
  throw err;
7112
7709
  }
7710
+ this.updateWatermark();
7113
7711
  this._onDidLayoutFromJSON.fire();
7114
7712
  }
7115
7713
  clear() {
7116
7714
  const groups = Array.from(this._groups.values()).map((_) => _.value);
7117
7715
  const hasActiveGroup = !!this.activeGroup;
7118
- const hasActivePanel = !!this.activePanel;
7716
+ !!this.activePanel;
7119
7717
  for (const group of groups) {
7120
7718
  // remove the group will automatically remove the panels
7121
7719
  this.removeGroup(group, { skipActive: true });
@@ -7123,9 +7721,6 @@
7123
7721
  if (hasActiveGroup) {
7124
7722
  this.doSetGroupAndPanelActive(undefined);
7125
7723
  }
7126
- if (hasActivePanel) {
7127
- this._onDidActivePanelChange.fire(undefined);
7128
- }
7129
7724
  this.gridview.clear();
7130
7725
  }
7131
7726
  closeAllGroups() {
@@ -7166,6 +7761,7 @@
7166
7761
  const group = this.orthogonalize(directionToPosition(options.position.direction));
7167
7762
  const panel = this.createPanel(options, group);
7168
7763
  group.model.openPanel(panel);
7764
+ this.doSetGroupAndPanelActive(group);
7169
7765
  return panel;
7170
7766
  }
7171
7767
  }
@@ -7177,6 +7773,7 @@
7177
7773
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
7178
7774
  if (options.floating) {
7179
7775
  const group = this.createGroup();
7776
+ this._onDidAddGroup.fire(group);
7180
7777
  const o = typeof options.floating === 'object' &&
7181
7778
  options.floating !== null
7182
7779
  ? options.floating
@@ -7184,16 +7781,16 @@
7184
7781
  this.addFloatingGroup(group, o, {
7185
7782
  inDragMode: false,
7186
7783
  skipRemoveGroup: true,
7784
+ skipActiveGroup: true,
7187
7785
  });
7188
- this._onDidAddGroup.fire(group);
7189
7786
  panel = this.createPanel(options, group);
7190
7787
  group.model.openPanel(panel);
7191
- this.doSetGroupAndPanelActive(group);
7192
7788
  }
7193
- else if (referenceGroup.api.location === 'floating' ||
7789
+ else if (referenceGroup.api.location.type === 'floating' ||
7194
7790
  target === 'center') {
7195
7791
  panel = this.createPanel(options, referenceGroup);
7196
7792
  referenceGroup.model.openPanel(panel);
7793
+ this.doSetGroupAndPanelActive(referenceGroup);
7197
7794
  }
7198
7795
  else {
7199
7796
  const location = getGridLocation(referenceGroup.element);
@@ -7201,10 +7798,12 @@
7201
7798
  const group = this.createGroupAtLocation(relativeLocation);
7202
7799
  panel = this.createPanel(options, group);
7203
7800
  group.model.openPanel(panel);
7801
+ this.doSetGroupAndPanelActive(group);
7204
7802
  }
7205
7803
  }
7206
7804
  else if (options.floating) {
7207
7805
  const group = this.createGroup();
7806
+ this._onDidAddGroup.fire(group);
7208
7807
  const o = typeof options.floating === 'object' &&
7209
7808
  options.floating !== null
7210
7809
  ? options.floating
@@ -7212,16 +7811,16 @@
7212
7811
  this.addFloatingGroup(group, o, {
7213
7812
  inDragMode: false,
7214
7813
  skipRemoveGroup: true,
7814
+ skipActiveGroup: true,
7215
7815
  });
7216
- this._onDidAddGroup.fire(group);
7217
7816
  panel = this.createPanel(options, group);
7218
7817
  group.model.openPanel(panel);
7219
- this.doSetGroupAndPanelActive(group);
7220
7818
  }
7221
7819
  else {
7222
7820
  const group = this.createGroupAtLocation();
7223
7821
  panel = this.createPanel(options, group);
7224
7822
  group.model.openPanel(panel);
7823
+ this.doSetGroupAndPanelActive(group);
7225
7824
  }
7226
7825
  return panel;
7227
7826
  }
@@ -7233,13 +7832,15 @@
7233
7832
  if (!group) {
7234
7833
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
7235
7834
  }
7236
- group.model.removePanel(panel);
7835
+ group.model.removePanel(panel, {
7836
+ skipSetActiveGroup: options.skipSetActiveGroup,
7837
+ });
7237
7838
  if (!options.skipDispose) {
7238
- this.overlayRenderContainer.detatch(panel);
7839
+ panel.group.model.renderContainer.detatch(panel);
7239
7840
  panel.dispose();
7240
7841
  }
7241
7842
  if (group.size === 0 && options.removeEmptyGroup) {
7242
- this.removeGroup(group);
7843
+ this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
7243
7844
  }
7244
7845
  }
7245
7846
  createWatermarkComponent() {
@@ -7252,7 +7853,7 @@
7252
7853
  }
7253
7854
  updateWatermark() {
7254
7855
  var _a, _b;
7255
- if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
7856
+ if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
7256
7857
  if (!this.watermark) {
7257
7858
  this.watermark = this.createWatermarkComponent();
7258
7859
  this.watermark.init({
@@ -7298,36 +7899,42 @@
7298
7899
  }
7299
7900
  else {
7300
7901
  const group = this.orthogonalize(directionToPosition(options.direction));
7902
+ if (!options.skipSetActive) {
7903
+ this.doSetGroupAndPanelActive(group);
7904
+ }
7301
7905
  return group;
7302
7906
  }
7303
7907
  const target = toTarget(options.direction || 'within');
7304
7908
  const location = getGridLocation(referenceGroup.element);
7305
7909
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
7306
7910
  this.doAddGroup(group, relativeLocation);
7911
+ if (!options.skipSetActive) {
7912
+ this.doSetGroupAndPanelActive(group);
7913
+ }
7307
7914
  return group;
7308
7915
  }
7309
7916
  else {
7310
7917
  this.doAddGroup(group);
7918
+ this.doSetGroupAndPanelActive(group);
7311
7919
  return group;
7312
7920
  }
7313
7921
  }
7314
7922
  removeGroup(group, options) {
7923
+ this.doRemoveGroup(group, options);
7924
+ }
7925
+ doRemoveGroup(group, options) {
7315
7926
  var _a;
7316
7927
  const panels = [...group.panels]; // reassign since group panels will mutate
7317
- for (const panel of panels) {
7318
- this.removePanel(panel, {
7319
- removeEmptyGroup: false,
7320
- skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7321
- });
7928
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7929
+ for (const panel of panels) {
7930
+ this.removePanel(panel, {
7931
+ removeEmptyGroup: false,
7932
+ skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7933
+ });
7934
+ }
7322
7935
  }
7323
7936
  const activePanel = this.activePanel;
7324
- this.doRemoveGroup(group, options);
7325
- if (this.activePanel !== activePanel) {
7326
- this._onDidActivePanelChange.fire(this.activePanel);
7327
- }
7328
- }
7329
- doRemoveGroup(group, options) {
7330
- if (group.api.location === 'floating') {
7937
+ if (group.api.location.type === 'floating') {
7331
7938
  const floatingGroup = this._floatingGroups.find((_) => _.group === group);
7332
7939
  if (floatingGroup) {
7333
7940
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -7339,60 +7946,124 @@
7339
7946
  floatingGroup.dispose();
7340
7947
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7341
7948
  const groups = Array.from(this._groups.values());
7342
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7949
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7343
7950
  }
7344
7951
  return floatingGroup.group;
7345
7952
  }
7346
7953
  throw new Error('failed to find floating group');
7347
7954
  }
7348
- if (group.api.location === 'popout') {
7349
- const selectedGroup = this._popoutGroups.find((_) => _.group === group);
7955
+ if (group.api.location.type === 'popout') {
7956
+ const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
7350
7957
  if (selectedGroup) {
7351
7958
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7352
- selectedGroup.group.dispose();
7959
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {
7960
+ const refGroup = selectedGroup.referenceGroup
7961
+ ? this.getPanel(selectedGroup.referenceGroup)
7962
+ : undefined;
7963
+ if (refGroup) {
7964
+ this.removeGroup(refGroup);
7965
+ }
7966
+ }
7967
+ selectedGroup.popoutGroup.dispose();
7353
7968
  this._groups.delete(group.id);
7354
7969
  this._onDidRemoveGroup.fire(group);
7355
7970
  }
7356
- selectedGroup.dispose();
7971
+ const removedGroup = selectedGroup.disposable.dispose();
7972
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
7973
+ this.doAddGroup(removedGroup, [0]);
7974
+ this.doSetGroupAndPanelActive(removedGroup);
7975
+ }
7357
7976
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7358
7977
  const groups = Array.from(this._groups.values());
7359
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7978
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7360
7979
  }
7361
- return selectedGroup.group;
7980
+ this.updateWatermark();
7981
+ return selectedGroup.popoutGroup;
7362
7982
  }
7363
7983
  throw new Error('failed to find popout group');
7364
7984
  }
7365
- return super.doRemoveGroup(group, options);
7985
+ const re = super.doRemoveGroup(group, options);
7986
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {
7987
+ if (this.activePanel !== activePanel) {
7988
+ this._onDidActivePanelChange.fire(this.activePanel);
7989
+ }
7990
+ }
7991
+ return re;
7366
7992
  }
7367
- moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
7368
- var _a, _b, _c;
7993
+ movingLock(func) {
7994
+ const isMoving = this._moving;
7995
+ try {
7996
+ this._moving = true;
7997
+ return func();
7998
+ }
7999
+ finally {
8000
+ this._moving = isMoving;
8001
+ }
8002
+ }
8003
+ moveGroupOrPanel(options) {
8004
+ var _a;
8005
+ const destinationGroup = options.to.group;
8006
+ const sourceGroupId = options.from.groupId;
8007
+ const sourceItemId = options.from.panelId;
8008
+ const destinationTarget = options.to.position;
8009
+ const destinationIndex = options.to.index;
7369
8010
  const sourceGroup = sourceGroupId
7370
8011
  ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
7371
8012
  : undefined;
8013
+ if (!sourceGroup) {
8014
+ throw new Error(`Failed to find group id ${sourceGroupId}`);
8015
+ }
7372
8016
  if (sourceItemId === undefined) {
7373
- if (sourceGroup) {
7374
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
7375
- }
8017
+ /**
8018
+ * Moving an entire group into another group
8019
+ */
8020
+ this.moveGroup({
8021
+ from: { group: sourceGroup },
8022
+ to: {
8023
+ group: destinationGroup,
8024
+ position: destinationTarget,
8025
+ },
8026
+ });
7376
8027
  return;
7377
8028
  }
7378
8029
  if (!destinationTarget || destinationTarget === 'center') {
7379
- 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);
7380
- if (!groupItem) {
8030
+ /**
8031
+ * Dropping a panel within another group
8032
+ */
8033
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8034
+ skipSetActive: false,
8035
+ skipSetActiveGroup: true,
8036
+ }));
8037
+ if (!removedPanel) {
7381
8038
  throw new Error(`No panel with id ${sourceItemId}`);
7382
8039
  }
7383
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7384
- this.doRemoveGroup(sourceGroup);
8040
+ if (sourceGroup.model.size === 0) {
8041
+ // remove the group and do not set a new group as active
8042
+ this.doRemoveGroup(sourceGroup, { skipActive: true });
7385
8043
  }
7386
- destinationGroup.model.openPanel(groupItem, {
8044
+ this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
7387
8045
  index: destinationIndex,
8046
+ skipSetGroupActive: true,
8047
+ }));
8048
+ this.doSetGroupAndPanelActive(destinationGroup);
8049
+ this._onDidMovePanel.fire({
8050
+ panel: removedPanel,
7388
8051
  });
7389
8052
  }
7390
8053
  else {
8054
+ /**
8055
+ * Dropping a panel to the extremities of a group which will place that panel
8056
+ * into an adjacent group
8057
+ */
7391
8058
  const referenceLocation = getGridLocation(destinationGroup.element);
7392
8059
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7393
- if (sourceGroup && sourceGroup.size < 2) {
8060
+ if (sourceGroup.size < 2) {
8061
+ /**
8062
+ * If we are moving from a group which only has one panel left we will consider
8063
+ * moving the group itself rather than moving the panel into a newly created group
8064
+ */
7394
8065
  const [targetParentLocation, to] = tail(targetLocation);
7395
- if (sourceGroup.api.location === 'grid') {
8066
+ if (sourceGroup.api.location.type === 'grid') {
7396
8067
  const sourceLocation = getGridLocation(sourceGroup.element);
7397
8068
  const [sourceParentLocation, from] = tail(sourceLocation);
7398
8069
  if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
@@ -7400,77 +8071,122 @@
7400
8071
  // if a group has one tab - we are essentially moving the 'group'
7401
8072
  // which is equivalent to swapping two views in this case
7402
8073
  this.gridview.moveView(sourceParentLocation, from, to);
8074
+ return;
7403
8075
  }
7404
8076
  }
7405
8077
  // source group will become empty so delete the group
7406
- const targetGroup = this.doRemoveGroup(sourceGroup, {
8078
+ const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
7407
8079
  skipActive: true,
7408
8080
  skipDispose: true,
7409
- });
8081
+ }));
7410
8082
  // after deleting the group we need to re-evaulate the ref location
7411
8083
  const updatedReferenceLocation = getGridLocation(destinationGroup.element);
7412
8084
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
7413
- this.doAddGroup(targetGroup, location);
8085
+ this.movingLock(() => this.doAddGroup(targetGroup, location));
8086
+ this.doSetGroupAndPanelActive(targetGroup);
7414
8087
  }
7415
8088
  else {
7416
- 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);
7417
- if (!groupItem) {
8089
+ /**
8090
+ * The group we are removing from has many panels, we need to remove the panels we are moving,
8091
+ * create a new group, add the panels to that new group and add the new group in an appropiate position
8092
+ */
8093
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8094
+ skipSetActive: false,
8095
+ skipSetActiveGroup: true,
8096
+ }));
8097
+ if (!removedPanel) {
7418
8098
  throw new Error(`No panel with id ${sourceItemId}`);
7419
8099
  }
7420
8100
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7421
8101
  const group = this.createGroupAtLocation(dropLocation);
7422
- group.model.openPanel(groupItem);
8102
+ this.movingLock(() => group.model.openPanel(removedPanel, {
8103
+ skipSetGroupActive: true,
8104
+ }));
8105
+ this.doSetGroupAndPanelActive(group);
7423
8106
  }
7424
8107
  }
7425
8108
  }
7426
- moveGroup(sourceGroup, referenceGroup, target) {
7427
- if (sourceGroup) {
7428
- if (!target || target === 'center') {
7429
- const activePanel = sourceGroup.activePanel;
7430
- const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));
7431
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7432
- this.doRemoveGroup(sourceGroup);
7433
- }
8109
+ moveGroup(options) {
8110
+ const from = options.from.group;
8111
+ const to = options.to.group;
8112
+ const target = options.to.position;
8113
+ if (target === 'center') {
8114
+ const activePanel = from.activePanel;
8115
+ const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {
8116
+ skipSetActive: true,
8117
+ })));
8118
+ if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {
8119
+ this.doRemoveGroup(from, { skipActive: true });
8120
+ }
8121
+ this.movingLock(() => {
7434
8122
  for (const panel of panels) {
7435
- referenceGroup.model.openPanel(panel, {
7436
- skipSetPanelActive: panel !== activePanel,
8123
+ to.model.openPanel(panel, {
8124
+ skipSetActive: panel !== activePanel,
8125
+ skipSetGroupActive: true,
7437
8126
  });
7438
8127
  }
7439
- }
7440
- else {
7441
- switch (sourceGroup.api.location) {
7442
- case 'grid':
7443
- this.gridview.removeView(getGridLocation(sourceGroup.element));
7444
- break;
7445
- case 'floating': {
7446
- const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
7447
- if (!selectedFloatingGroup) {
7448
- throw new Error('failed to find floating group');
7449
- }
7450
- selectedFloatingGroup.dispose();
7451
- break;
8128
+ });
8129
+ this.doSetGroupAndPanelActive(to);
8130
+ panels.forEach((panel) => {
8131
+ this._onDidMovePanel.fire({ panel });
8132
+ });
8133
+ }
8134
+ else {
8135
+ switch (from.api.location.type) {
8136
+ case 'grid':
8137
+ this.gridview.removeView(getGridLocation(from.element));
8138
+ break;
8139
+ case 'floating': {
8140
+ const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);
8141
+ if (!selectedFloatingGroup) {
8142
+ throw new Error('failed to find floating group');
7452
8143
  }
7453
- case 'popout': {
7454
- const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
7455
- if (!selectedPopoutGroup) {
7456
- throw new Error('failed to find popout group');
7457
- }
7458
- selectedPopoutGroup.dispose();
8144
+ selectedFloatingGroup.dispose();
8145
+ break;
8146
+ }
8147
+ case 'popout': {
8148
+ const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);
8149
+ if (!selectedPopoutGroup) {
8150
+ throw new Error('failed to find popout group');
7459
8151
  }
8152
+ selectedPopoutGroup.disposable.dispose();
7460
8153
  }
7461
- const referenceLocation = getGridLocation(referenceGroup.element);
7462
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
7463
- this.gridview.addView(sourceGroup, exports.Sizing.Distribute, dropLocation);
7464
8154
  }
8155
+ const referenceLocation = getGridLocation(to.element);
8156
+ const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8157
+ this.gridview.addView(from, exports.Sizing.Distribute, dropLocation);
8158
+ from.panels.forEach((panel) => {
8159
+ this._onDidMovePanel.fire({ panel });
8160
+ });
7465
8161
  }
7466
8162
  }
7467
- doSetGroupAndPanelActive(group, skipFocus) {
7468
- var _a, _b;
8163
+ doSetGroupActive(group) {
8164
+ super.doSetGroupActive(group);
8165
+ const activePanel = this.activePanel;
8166
+ if (!this._moving &&
8167
+ activePanel !== this._onDidActivePanelChange.value) {
8168
+ this._onDidActivePanelChange.fire(activePanel);
8169
+ }
8170
+ }
8171
+ doSetGroupAndPanelActive(group) {
8172
+ super.doSetGroupActive(group);
7469
8173
  const activePanel = this.activePanel;
7470
- super.doSetGroupActive(group, skipFocus);
7471
- if (((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel) !== activePanel) {
7472
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
8174
+ if (group &&
8175
+ this.hasMaximizedGroup() &&
8176
+ !this.isMaximizedGroup(group)) {
8177
+ this.exitMaximizedGroup();
8178
+ }
8179
+ if (!this._moving &&
8180
+ activePanel !== this._onDidActivePanelChange.value) {
8181
+ this._onDidActivePanelChange.fire(activePanel);
8182
+ }
8183
+ }
8184
+ getNextGroupId() {
8185
+ let id = this.nextGroupId.next();
8186
+ while (this._groups.has(id)) {
8187
+ id = this.nextGroupId.next();
7473
8188
  }
8189
+ return id;
7474
8190
  }
7475
8191
  createGroup(options) {
7476
8192
  if (!options) {
@@ -7488,7 +8204,7 @@
7488
8204
  }
7489
8205
  }
7490
8206
  const view = new DockviewGroupPanel(this, id, options);
7491
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
8207
+ view.init({ params: {}, accessor: this });
7492
8208
  if (!this._groups.has(view.id)) {
7493
8209
  const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
7494
8210
  this._onWillDragPanel.fire(event);
@@ -7496,20 +8212,48 @@
7496
8212
  this._onWillDragGroup.fire(event);
7497
8213
  }), view.model.onMove((event) => {
7498
8214
  const { groupId, itemId, target, index } = event;
7499
- this.moveGroupOrPanel(view, groupId, itemId, target, index);
8215
+ this.moveGroupOrPanel({
8216
+ from: { groupId: groupId, panelId: itemId },
8217
+ to: {
8218
+ group: view,
8219
+ position: target,
8220
+ index,
8221
+ },
8222
+ });
7500
8223
  }), view.model.onDidDrop((event) => {
7501
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
8224
+ this._onDidDrop.fire(event);
8225
+ }), view.model.onWillDrop((event) => {
8226
+ this._onWillDrop.fire(event);
8227
+ }), view.model.onWillShowOverlay((event) => {
8228
+ if (this.options.disableDnd) {
8229
+ event.preventDefault();
8230
+ return;
8231
+ }
8232
+ this._onWillShowOverlay.fire(event);
7502
8233
  }), view.model.onDidAddPanel((event) => {
8234
+ if (this._moving) {
8235
+ return;
8236
+ }
7503
8237
  this._onDidAddPanel.fire(event.panel);
7504
8238
  }), view.model.onDidRemovePanel((event) => {
8239
+ if (this._moving) {
8240
+ return;
8241
+ }
7505
8242
  this._onDidRemovePanel.fire(event.panel);
7506
8243
  }), view.model.onDidActivePanelChange((event) => {
7507
- this._onDidActivePanelChange.fire(event.panel);
8244
+ if (this._moving) {
8245
+ return;
8246
+ }
8247
+ if (event.panel !== this.activePanel) {
8248
+ return;
8249
+ }
8250
+ if (this._onDidActivePanelChange.value !== event.panel) {
8251
+ this._onDidActivePanelChange.fire(event.panel);
8252
+ }
7508
8253
  }));
7509
8254
  this._groups.set(view.id, { value: view, disposable });
7510
8255
  }
7511
- // TODO: must be called after the above listeners have been setup,
7512
- // not an ideal pattern
8256
+ // TODO: must be called after the above listeners have been setup, not an ideal pattern
7513
8257
  view.initialize();
7514
8258
  return view;
7515
8259
  }
@@ -7562,7 +8306,20 @@
7562
8306
  });
7563
8307
  this._onDidLayoutfromJSON = new Emitter();
7564
8308
  this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
8309
+ this._onDidRemoveGroup = new Emitter();
8310
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
8311
+ this._onDidAddGroup = new Emitter();
8312
+ this.onDidAddGroup = this._onDidAddGroup.event;
8313
+ this._onDidActiveGroupChange = new Emitter();
8314
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7565
8315
  this._options = options;
8316
+ this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {
8317
+ this._onDidAddGroup.fire(event);
8318
+ }), this.onDidRemove((event) => {
8319
+ this._onDidRemoveGroup.fire(event);
8320
+ }), this.onDidActiveChange((event) => {
8321
+ this._onDidActiveGroupChange.fire(event);
8322
+ }));
7566
8323
  if (!this.options.components) {
7567
8324
  this.options.components = {};
7568
8325
  }
@@ -7737,6 +8494,7 @@
7737
8494
  });
7738
8495
  this.registerPanel(view);
7739
8496
  this.doAddGroup(view, relativeLocation, options.size);
8497
+ this.doSetGroupActive(view);
7740
8498
  return view;
7741
8499
  }
7742
8500
  registerPanel(panel) {
@@ -7878,19 +8636,19 @@
7878
8636
  const index = this.panels.indexOf(panel);
7879
8637
  this.splitview.setViewVisible(index, visible);
7880
8638
  }
7881
- setActive(view, skipFocus) {
7882
- this._activePanel = view;
8639
+ setActive(panel, skipFocus) {
8640
+ this._activePanel = panel;
7883
8641
  this.panels
7884
- .filter((v) => v !== view)
8642
+ .filter((v) => v !== panel)
7885
8643
  .forEach((v) => {
7886
8644
  v.api._onDidActiveChange.fire({ isActive: false });
7887
8645
  if (!skipFocus) {
7888
8646
  v.focus();
7889
8647
  }
7890
8648
  });
7891
- view.api._onDidActiveChange.fire({ isActive: true });
8649
+ panel.api._onDidActiveChange.fire({ isActive: true });
7892
8650
  if (!skipFocus) {
7893
- view.focus();
8651
+ panel.focus();
7894
8652
  }
7895
8653
  }
7896
8654
  removePanel(panel, sizing) {
@@ -8189,6 +8947,10 @@
8189
8947
  });
8190
8948
  this.addDisposables(this._disposable);
8191
8949
  }
8950
+ setVisible(panel, visible) {
8951
+ const index = this.panels.indexOf(panel);
8952
+ this.paneview.setViewVisible(index, visible);
8953
+ }
8192
8954
  focus() {
8193
8955
  //noop
8194
8956
  }
@@ -8235,6 +8997,7 @@
8235
8997
  isExpanded: options.isExpanded,
8236
8998
  title: options.title,
8237
8999
  containerApi: new PaneviewApi(this),
9000
+ accessor: this,
8238
9001
  });
8239
9002
  this.paneview.addPane(view, size, index);
8240
9003
  view.orientation = this.paneview.orientation;
@@ -8334,6 +9097,7 @@
8334
9097
  title: data.title,
8335
9098
  isExpanded: !!view.expanded,
8336
9099
  containerApi: new PaneviewApi(this),
9100
+ accessor: this,
8337
9101
  });
8338
9102
  panel.orientation = this.paneview.orientation;
8339
9103
  });
@@ -8422,7 +9186,7 @@
8422
9186
  this._onDidChange = new Emitter();
8423
9187
  this.onDidChange = this._onDidChange.event;
8424
9188
  this.api.initialize(this);
8425
- this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
9189
+ this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {
8426
9190
  const { isVisible } = event;
8427
9191
  const { accessor } = this._params;
8428
9192
  accessor.setVisible(this, isVisible);
@@ -8491,11 +9255,13 @@
8491
9255
  exports.DockviewApi = DockviewApi;
8492
9256
  exports.DockviewComponent = DockviewComponent;
8493
9257
  exports.DockviewCompositeDisposable = CompositeDisposable;
9258
+ exports.DockviewDidDropEvent = DockviewDidDropEvent;
8494
9259
  exports.DockviewEmitter = Emitter;
8495
9260
  exports.DockviewGroupPanel = DockviewGroupPanel;
8496
9261
  exports.DockviewGroupPanelModel = DockviewGroupPanelModel;
8497
9262
  exports.DockviewMutableDisposable = MutableDisposable;
8498
9263
  exports.DockviewPanel = DockviewPanel;
9264
+ exports.DockviewWillDropEvent = DockviewWillDropEvent;
8499
9265
  exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
8500
9266
  exports.Gridview = Gridview;
8501
9267
  exports.GridviewApi = GridviewApi;
@@ -8514,6 +9280,7 @@
8514
9280
  exports.SplitviewComponent = SplitviewComponent;
8515
9281
  exports.SplitviewPanel = SplitviewPanel;
8516
9282
  exports.Tab = Tab;
9283
+ exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
8517
9284
  exports.createComponent = createComponent;
8518
9285
  exports.directionToPosition = directionToPosition;
8519
9286
  exports.getDirectionOrientation = getDirectionOrientation;