dockview-core 1.9.1 → 1.10.0

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