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
  */
@@ -37,7 +37,7 @@
37
37
  }
38
38
  }
39
39
 
40
- var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit.dv-dockview {\n padding: 3px;\n}\n.dockview-theme-replit .view:has(> .groupview) {\n padding: 3px;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
40
+ var css_248z = ".dv-render-overlay {\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: 999;\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-group-gap-size: 3px;\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: ##fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n position: absolute;\n z-index: 997;\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-bring-to-front {\n z-index: 998;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: 999;\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: 999;\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: 999;\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: 999;\n position: absolute;\n cursor: se-resize;\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n.dv-dockview .split-view-container.horizontal > .view-container > .view:not(:last-child) {\n border-right: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.horizontal > .view-container > .view:not(:first-child) {\n border-left: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.vertical > .view-container > .view:not(:last-child) {\n border-bottom: var(--dv-group-gap-size) solid transparent;\n}\n.dv-dockview .split-view-container.vertical > .view-container > .view:not(:first-child) {\n border-top: var(--dv-group-gap-size) solid transparent;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.dv-root-wrapper {\n height: 100%;\n width: 100%;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.dv-splitview-disabled > .sash-container > .sash {\n pointer-events: none;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
41
41
  styleInject(css_248z);
42
42
 
43
43
  class TransferObject {
@@ -122,6 +122,17 @@
122
122
  };
123
123
  };
124
124
  })(exports.DockviewEvent || (exports.DockviewEvent = {}));
125
+ class DockviewEvent {
126
+ constructor() {
127
+ this._defaultPrevented = false;
128
+ }
129
+ get defaultPrevented() {
130
+ return this._defaultPrevented;
131
+ }
132
+ preventDefault() {
133
+ this._defaultPrevented = true;
134
+ }
135
+ }
125
136
  class LeakageMonitor {
126
137
  constructor() {
127
138
  this.events = new Map();
@@ -165,6 +176,9 @@
165
176
  }
166
177
  Emitter.ENABLE_TRACKING = isEnabled;
167
178
  }
179
+ get value() {
180
+ return this._last;
181
+ }
168
182
  constructor(options) {
169
183
  this.options = options;
170
184
  this._listeners = [];
@@ -287,8 +301,12 @@
287
301
  args.forEach((arg) => this._disposables.push(arg));
288
302
  }
289
303
  dispose() {
290
- this._disposables.forEach((arg) => arg.dispose());
304
+ if (this._isDisposed) {
305
+ return;
306
+ }
291
307
  this._isDisposed = true;
308
+ this._disposables.forEach((arg) => arg.dispose());
309
+ this._disposables = [];
292
310
  }
293
311
  }
294
312
  class MutableDisposable {
@@ -772,6 +790,13 @@
772
790
  this._endSnappingEnabled = endSnappingEnabled;
773
791
  this.updateSashEnablement();
774
792
  }
793
+ get disabled() {
794
+ return this._disabled;
795
+ }
796
+ set disabled(value) {
797
+ this._disabled = value;
798
+ toggleClass(this.element, 'dv-splitview-disabled', value);
799
+ }
775
800
  constructor(container, options) {
776
801
  this.container = container;
777
802
  this.viewItems = [];
@@ -782,6 +807,7 @@
782
807
  this._proportions = undefined;
783
808
  this._startSnappingEnabled = true;
784
809
  this._endSnappingEnabled = true;
810
+ this._disabled = false;
785
811
  this._onDidSashEnd = new Emitter();
786
812
  this.onDidSashEnd = this._onDidSashEnd.event;
787
813
  this._onDidAddView = new Emitter();
@@ -1709,7 +1735,13 @@
1709
1735
  }
1710
1736
  return exports.LayoutPriority.Normal;
1711
1737
  }
1712
- constructor(orientation, proportionalLayout, styles, size, orthogonalSize, childDescriptors) {
1738
+ get disabled() {
1739
+ return this.splitview.disabled;
1740
+ }
1741
+ set disabled(value) {
1742
+ this.splitview.disabled = value;
1743
+ }
1744
+ constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, childDescriptors) {
1713
1745
  super();
1714
1746
  this.orientation = orientation;
1715
1747
  this.proportionalLayout = proportionalLayout;
@@ -1754,6 +1786,7 @@
1754
1786
  styles,
1755
1787
  });
1756
1788
  }
1789
+ this.disabled = disabled;
1757
1790
  this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {
1758
1791
  this._onDidChange.fire({});
1759
1792
  }));
@@ -1887,7 +1920,7 @@
1887
1920
  }
1888
1921
  function flipNode(node, size, orthogonalSize) {
1889
1922
  if (node instanceof BranchNode) {
1890
- const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
1923
+ const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled);
1891
1924
  let totalSize = 0;
1892
1925
  for (let i = node.children.length - 1; i >= 0; i--) {
1893
1926
  const child = node.children[i];
@@ -2023,31 +2056,57 @@
2023
2056
  get maximumHeight() {
2024
2057
  return this.root.maximumHeight;
2025
2058
  }
2059
+ get locked() {
2060
+ return this._locked;
2061
+ }
2062
+ set locked(value) {
2063
+ this._locked = value;
2064
+ const branch = [this.root];
2065
+ /**
2066
+ * simple depth-first-search to cover all nodes
2067
+ *
2068
+ * @see https://en.wikipedia.org/wiki/Depth-first_search
2069
+ */
2070
+ while (branch.length > 0) {
2071
+ const node = branch.pop();
2072
+ if (node instanceof BranchNode) {
2073
+ node.disabled = value;
2074
+ branch.push(...node.children);
2075
+ }
2076
+ }
2077
+ }
2026
2078
  maximizedView() {
2027
2079
  var _a;
2028
- return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.view;
2080
+ return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;
2029
2081
  }
2030
2082
  hasMaximizedView() {
2031
2083
  return this._maximizedNode !== undefined;
2032
2084
  }
2033
2085
  maximizeView(view) {
2086
+ var _a;
2034
2087
  const location = getGridLocation(view.element);
2035
2088
  const [_, node] = this.getNode(location);
2036
2089
  if (!(node instanceof LeafNode)) {
2037
2090
  return;
2038
2091
  }
2039
- if (this._maximizedNode === node) {
2092
+ if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {
2040
2093
  return;
2041
2094
  }
2042
2095
  if (this.hasMaximizedView()) {
2043
2096
  this.exitMaximizedView();
2044
2097
  }
2098
+ const hiddenOnMaximize = [];
2045
2099
  function hideAllViewsBut(parent, exclude) {
2046
2100
  for (let i = 0; i < parent.children.length; i++) {
2047
2101
  const child = parent.children[i];
2048
2102
  if (child instanceof LeafNode) {
2049
2103
  if (child !== exclude) {
2050
- parent.setChildVisible(i, false);
2104
+ if (parent.isChildVisible(i)) {
2105
+ parent.setChildVisible(i, false);
2106
+ }
2107
+ else {
2108
+ hiddenOnMaximize.push(child);
2109
+ }
2051
2110
  }
2052
2111
  }
2053
2112
  else {
@@ -2056,18 +2115,21 @@
2056
2115
  }
2057
2116
  }
2058
2117
  hideAllViewsBut(this.root, node);
2059
- this._maximizedNode = node;
2060
- this._onDidMaxmizedNodeChange.fire();
2118
+ this._maximizedNode = { leaf: node, hiddenOnMaximize };
2119
+ this._onDidMaximizedNodeChange.fire();
2061
2120
  }
2062
2121
  exitMaximizedView() {
2063
2122
  if (!this._maximizedNode) {
2064
2123
  return;
2065
2124
  }
2125
+ const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;
2066
2126
  function showViewsInReverseOrder(parent) {
2067
2127
  for (let index = parent.children.length - 1; index >= 0; index--) {
2068
2128
  const child = parent.children[index];
2069
2129
  if (child instanceof LeafNode) {
2070
- parent.setChildVisible(index, true);
2130
+ if (!hiddenOnMaximize.includes(child)) {
2131
+ parent.setChildVisible(index, true);
2132
+ }
2071
2133
  }
2072
2134
  else {
2073
2135
  showViewsInReverseOrder(child);
@@ -2076,13 +2138,13 @@
2076
2138
  }
2077
2139
  showViewsInReverseOrder(this.root);
2078
2140
  this._maximizedNode = undefined;
2079
- this._onDidMaxmizedNodeChange.fire();
2141
+ this._onDidMaximizedNodeChange.fire();
2080
2142
  }
2081
2143
  serialize() {
2082
2144
  if (this.hasMaximizedView()) {
2083
2145
  /**
2084
- * do not persist maximized view state but we must first exit any maximized views
2085
- * before serialization to ensure the correct dimensions are persisted
2146
+ * do not persist maximized view state
2147
+ * firstly exit any maximized views to ensure the correct dimensions are persisted
2086
2148
  */
2087
2149
  this.exitMaximizedView();
2088
2150
  }
@@ -2097,14 +2159,14 @@
2097
2159
  dispose() {
2098
2160
  this.disposable.dispose();
2099
2161
  this._onDidChange.dispose();
2100
- this._onDidMaxmizedNodeChange.dispose();
2162
+ this._onDidMaximizedNodeChange.dispose();
2101
2163
  this.root.dispose();
2102
2164
  this._maximizedNode = undefined;
2103
2165
  this.element.remove();
2104
2166
  }
2105
2167
  clear() {
2106
2168
  const orientation = this.root.orientation;
2107
- this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);
2169
+ this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this._locked);
2108
2170
  }
2109
2171
  deserialize(json, deserializer) {
2110
2172
  const orientation = json.orientation;
@@ -2125,8 +2187,8 @@
2125
2187
  };
2126
2188
  });
2127
2189
  result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth
2128
- orthogonalSize, // <- size - flips at each depth
2129
- children);
2190
+ orthogonalSize, // <- size - flips at each depth,
2191
+ this._locked, children);
2130
2192
  }
2131
2193
  else {
2132
2194
  result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
@@ -2159,7 +2221,7 @@
2159
2221
  }
2160
2222
  const oldRoot = this.root;
2161
2223
  oldRoot.element.remove();
2162
- this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);
2224
+ this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this._locked);
2163
2225
  if (oldRoot.children.length === 0) ;
2164
2226
  else if (oldRoot.children.length === 1) {
2165
2227
  // can remove one level of redundant branching if there is only a single child
@@ -2227,15 +2289,16 @@
2227
2289
  constructor(proportionalLayout, styles, orientation) {
2228
2290
  this.proportionalLayout = proportionalLayout;
2229
2291
  this.styles = styles;
2292
+ this._locked = false;
2230
2293
  this._maximizedNode = undefined;
2231
2294
  this.disposable = new MutableDisposable();
2232
2295
  this._onDidChange = new Emitter();
2233
2296
  this.onDidChange = this._onDidChange.event;
2234
- this._onDidMaxmizedNodeChange = new Emitter();
2235
- this.onDidMaxmizedNodeChange = this._onDidMaxmizedNodeChange.event;
2297
+ this._onDidMaximizedNodeChange = new Emitter();
2298
+ this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2236
2299
  this.element = document.createElement('div');
2237
2300
  this.element.className = 'grid-view';
2238
- this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0);
2301
+ this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this._locked);
2239
2302
  }
2240
2303
  isViewVisible(location) {
2241
2304
  const [rest, index] = tail(location);
@@ -2286,7 +2349,7 @@
2286
2349
  }
2287
2350
  const child = grandParent.removeChild(parentIndex);
2288
2351
  child.dispose();
2289
- const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);
2352
+ const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this._locked);
2290
2353
  grandParent.addChild(newParent, parent.size, parentIndex);
2291
2354
  const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);
2292
2355
  newParent.addChild(newSibling, newSiblingSize, 0);
@@ -2913,6 +2976,21 @@
2913
2976
  get onDidDrop() {
2914
2977
  return this.component.onDidDrop;
2915
2978
  }
2979
+ /**
2980
+ * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and
2981
+ * prevent the event from occuring using the standard `preventDefault()` syntax.
2982
+ *
2983
+ * Preventing certain events may causes unexpected behaviours, use carefully.
2984
+ */
2985
+ get onWillDrop() {
2986
+ return this.component.onWillDrop;
2987
+ }
2988
+ /**
2989
+ *
2990
+ */
2991
+ get onWillShowOverlay() {
2992
+ return this.component.onWillShowOverlay;
2993
+ }
2916
2994
  /**
2917
2995
  * Invoked before a group is dragged. Exposed for custom Drag'n'Drop functionality.
2918
2996
  */
@@ -3048,17 +3126,17 @@
3048
3126
  hasMaximizedGroup() {
3049
3127
  return this.component.hasMaximizedGroup();
3050
3128
  }
3051
- exitMaxmizedGroup() {
3129
+ exitMaximizedGroup() {
3052
3130
  this.component.exitMaximizedGroup();
3053
3131
  }
3054
- get onDidMaxmizedGroupChange() {
3055
- return this.component.onDidMaxmizedGroupChange;
3132
+ get onDidMaximizedGroupChange() {
3133
+ return this.component.onDidMaximizedGroupChange;
3056
3134
  }
3057
3135
  /**
3058
3136
  * Add a popout group in a new Window
3059
3137
  */
3060
3138
  addPopoutGroup(item, options) {
3061
- this.component.addPopoutGroup(item, options);
3139
+ return this.component.addPopoutGroup(item, options);
3062
3140
  }
3063
3141
  }
3064
3142
 
@@ -3112,6 +3190,18 @@
3112
3190
  }
3113
3191
  }
3114
3192
 
3193
+ class WillShowOverlayEvent extends DockviewEvent {
3194
+ get nativeEvent() {
3195
+ return this.options.nativeEvent;
3196
+ }
3197
+ get position() {
3198
+ return this.options.position;
3199
+ }
3200
+ constructor(options) {
3201
+ super();
3202
+ this.options = options;
3203
+ }
3204
+ }
3115
3205
  function directionToPosition(direction) {
3116
3206
  switch (direction) {
3117
3207
  case 'above':
@@ -3164,6 +3254,8 @@
3164
3254
  this.options = options;
3165
3255
  this._onDrop = new Emitter();
3166
3256
  this.onDrop = this._onDrop.event;
3257
+ this._onWillShowOverlay = new Emitter();
3258
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3167
3259
  // use a set to take advantage of #<set>.has
3168
3260
  this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
3169
3261
  this.dnd = new DragAndDropObserver(this.element, {
@@ -3192,6 +3284,19 @@
3192
3284
  this.removeDropTarget();
3193
3285
  return;
3194
3286
  }
3287
+ const willShowOverlayEvent = new WillShowOverlayEvent({
3288
+ nativeEvent: e,
3289
+ position: quadrant,
3290
+ });
3291
+ /**
3292
+ * Provide an opportunity to prevent the overlay appearing and in turn
3293
+ * any dnd behaviours
3294
+ */
3295
+ this._onWillShowOverlay.fire(willShowOverlayEvent);
3296
+ if (willShowOverlayEvent.defaultPrevented) {
3297
+ this.removeDropTarget();
3298
+ return;
3299
+ }
3195
3300
  if (typeof this.options.canDisplayOverlay === 'boolean') {
3196
3301
  if (!this.options.canDisplayOverlay) {
3197
3302
  this.removeDropTarget();
@@ -3234,7 +3339,7 @@
3234
3339
  }
3235
3340
  },
3236
3341
  });
3237
- this.addDisposables(this._onDrop, this.dnd);
3342
+ this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);
3238
3343
  }
3239
3344
  setTargetZones(acceptedTargetZones) {
3240
3345
  this._acceptedTargetZonesSet = new Set(acceptedTargetZones);
@@ -3287,25 +3392,44 @@
3287
3392
  size = clamp(0, sizeOptions.value, height) / height;
3288
3393
  }
3289
3394
  }
3290
- const translate = (1 - size) / 2;
3291
- const scale = size;
3292
- let transform;
3395
+ const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
3396
+ /**
3397
+ * You can also achieve the overlay placement using the transform CSS property
3398
+ * to translate and scale the element however this has the undesired effect of
3399
+ * 'skewing' the element. Comment left here for anybody that ever revisits this.
3400
+ *
3401
+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform
3402
+ *
3403
+ * right
3404
+ * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})
3405
+ *
3406
+ * left
3407
+ * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})
3408
+ *
3409
+ * top
3410
+ * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})
3411
+ *
3412
+ * bottom
3413
+ * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})
3414
+ */
3293
3415
  if (rightClass) {
3294
- transform = `translateX(${100 * translate}%) scaleX(${scale})`;
3416
+ box.left = `${100 * (1 - size)}%`;
3417
+ box.width = `${100 * size}%`;
3295
3418
  }
3296
3419
  else if (leftClass) {
3297
- transform = `translateX(-${100 * translate}%) scaleX(${scale})`;
3420
+ box.width = `${100 * size}%`;
3298
3421
  }
3299
3422
  else if (topClass) {
3300
- transform = `translateY(-${100 * translate}%) scaleY(${scale})`;
3423
+ box.height = `${100 * size}%`;
3301
3424
  }
3302
3425
  else if (bottomClass) {
3303
- transform = `translateY(${100 * translate}%) scaleY(${scale})`;
3304
- }
3305
- else {
3306
- transform = '';
3426
+ box.top = `${100 * (1 - size)}%`;
3427
+ box.height = `${100 * size}%`;
3307
3428
  }
3308
- this.overlayElement.style.transform = transform;
3429
+ this.overlayElement.style.top = box.top;
3430
+ this.overlayElement.style.left = box.left;
3431
+ this.overlayElement.style.width = box.width;
3432
+ this.overlayElement.style.height = box.height;
3309
3433
  toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);
3310
3434
  toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);
3311
3435
  toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);
@@ -3373,14 +3497,6 @@
3373
3497
  return 'center';
3374
3498
  }
3375
3499
 
3376
- exports.DockviewDropTargets = void 0;
3377
- (function (DockviewDropTargets) {
3378
- DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
3379
- DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
3380
- DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
3381
- DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
3382
- })(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
3383
-
3384
3500
  class ContentContainer extends CompositeDisposable {
3385
3501
  get element() {
3386
3502
  return this._element;
@@ -3408,7 +3524,7 @@
3408
3524
  const data = getPanelData();
3409
3525
  if (!data &&
3410
3526
  event.shiftKey &&
3411
- this.group.location !== 'floating') {
3527
+ this.group.location.type !== 'floating') {
3412
3528
  return false;
3413
3529
  }
3414
3530
  if (data && data.viewId === this.accessor.id) {
@@ -3426,7 +3542,7 @@
3426
3542
  data.groupId === this.group.id;
3427
3543
  return !groupHasOnePanelAndIsActiveDragElement;
3428
3544
  }
3429
- return this.group.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
3545
+ return this.group.canDisplayOverlay(event, position, 'panel');
3430
3546
  },
3431
3547
  });
3432
3548
  this.addDisposables(this.dropTarget);
@@ -3451,7 +3567,7 @@
3451
3567
  let container;
3452
3568
  switch (panel.api.renderer) {
3453
3569
  case 'onlyWhenVisibile':
3454
- this.accessor.overlayRenderContainer.detatch(panel);
3570
+ this.group.renderContainer.detatch(panel);
3455
3571
  if (this.panel) {
3456
3572
  if (doRender) {
3457
3573
  this._element.appendChild(this.panel.view.content.element);
@@ -3463,7 +3579,7 @@
3463
3579
  if (panel.view.content.element.parentElement === this._element) {
3464
3580
  this._element.removeChild(panel.view.content.element);
3465
3581
  }
3466
- container = this.accessor.overlayRenderContainer.attach({
3582
+ container = this.group.renderContainer.attach({
3467
3583
  panel,
3468
3584
  referenceContainer: this,
3469
3585
  });
@@ -3494,12 +3610,13 @@
3494
3610
  // noop
3495
3611
  }
3496
3612
  closePanel() {
3613
+ var _a;
3497
3614
  if (this.panel) {
3498
- if (this.accessor.options.defaultRenderer === 'onlyWhenVisibile') {
3499
- this._element.removeChild(this.panel.view.content.element);
3615
+ if (this.panel.api.renderer === 'onlyWhenVisibile') {
3616
+ (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
3500
3617
  }
3501
- this.panel = undefined;
3502
3618
  }
3619
+ this.panel = undefined;
3503
3620
  }
3504
3621
  dispose() {
3505
3622
  this.disposable.dispose();
@@ -3607,7 +3724,7 @@
3607
3724
  this._element.draggable = true;
3608
3725
  toggleClass(this.element, 'inactive-tab', true);
3609
3726
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
3610
- this.droptarget = new Droptarget(this._element, {
3727
+ this.dropTarget = new Droptarget(this._element, {
3611
3728
  acceptedTargetZones: ['center'],
3612
3729
  canDisplayOverlay: (event, position) => {
3613
3730
  if (this.group.locked) {
@@ -3622,9 +3739,10 @@
3622
3739
  }
3623
3740
  return this.panel.id !== data.panelId;
3624
3741
  }
3625
- return this.group.model.canDisplayOverlay(event, position, exports.DockviewDropTargets.Tab);
3742
+ return this.group.model.canDisplayOverlay(event, position, 'tab');
3626
3743
  },
3627
3744
  });
3745
+ this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
3628
3746
  this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
3629
3747
  this._onDragStart.fire(event);
3630
3748
  }), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {
@@ -3632,9 +3750,9 @@
3632
3750
  return;
3633
3751
  }
3634
3752
  this._onChanged.fire(event);
3635
- }), this.droptarget.onDrop((event) => {
3753
+ }), this.dropTarget.onDrop((event) => {
3636
3754
  this._onDropped.fire(event);
3637
- }), this.droptarget);
3755
+ }), this.dropTarget);
3638
3756
  }
3639
3757
  setActive(isActive) {
3640
3758
  toggleClass(this.element, 'active-tab', isActive);
@@ -3681,7 +3799,7 @@
3681
3799
  }, true));
3682
3800
  }
3683
3801
  isCancelled(_event) {
3684
- if (this.group.api.location === 'floating' && !_event.shiftKey) {
3802
+ if (this.group.api.location.type === 'floating' && !_event.shiftKey) {
3685
3803
  return true;
3686
3804
  }
3687
3805
  return false;
@@ -3733,7 +3851,7 @@
3733
3851
  this.accessor.doSetGroupActive(this.group);
3734
3852
  }));
3735
3853
  const handler = new GroupDragHandler(this._element, accessor, group);
3736
- this.voidDropTarget = new Droptarget(this._element, {
3854
+ this.dropTraget = new Droptarget(this._element, {
3737
3855
  acceptedTargetZones: ['center'],
3738
3856
  canDisplayOverlay: (event, position) => {
3739
3857
  var _a;
@@ -3747,14 +3865,15 @@
3747
3865
  // don't show the overlay if the tab being dragged is the last panel of this group
3748
3866
  return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
3749
3867
  }
3750
- return group.model.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
3868
+ return group.model.canDisplayOverlay(event, position, 'panel');
3751
3869
  },
3752
3870
  });
3871
+ this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
3753
3872
  this.addDisposables(handler, handler.onDragStart((event) => {
3754
3873
  this._onDragStart.fire(event);
3755
- }), this.voidDropTarget.onDrop((event) => {
3874
+ }), this.dropTraget.onDrop((event) => {
3756
3875
  this._onDrop.fire(event);
3757
- }), this.voidDropTarget);
3876
+ }), this.dropTraget);
3758
3877
  }
3759
3878
  }
3760
3879
 
@@ -3842,19 +3961,11 @@
3842
3961
  this.onTabDragStart = this._onTabDragStart.event;
3843
3962
  this._onGroupDragStart = new Emitter();
3844
3963
  this.onGroupDragStart = this._onGroupDragStart.event;
3845
- this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);
3964
+ this._onWillShowOverlay = new Emitter();
3965
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
3846
3966
  this._element = document.createElement('div');
3847
3967
  this._element.className = 'tabs-and-actions-container';
3848
3968
  toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
3849
- this.addDisposables(this.accessor.onDidAddPanel((e) => {
3850
- if (e.api.group === this.group) {
3851
- toggleClass(this._element, 'dv-single-tab', this.size === 1);
3852
- }
3853
- }), this.accessor.onDidRemovePanel((e) => {
3854
- if (e.api.group === this.group) {
3855
- toggleClass(this._element, 'dv-single-tab', this.size === 1);
3856
- }
3857
- }));
3858
3969
  this.rightActionsContainer = document.createElement('div');
3859
3970
  this.rightActionsContainer.className = 'right-actions-container';
3860
3971
  this.leftActionsContainer = document.createElement('div');
@@ -3869,7 +3980,15 @@
3869
3980
  this._element.appendChild(this.leftActionsContainer);
3870
3981
  this._element.appendChild(this.voidContainer.element);
3871
3982
  this._element.appendChild(this.rightActionsContainer);
3872
- this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {
3983
+ this.addDisposables(this.accessor.onDidAddPanel((e) => {
3984
+ if (e.api.group === this.group) {
3985
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
3986
+ }
3987
+ }), this.accessor.onDidRemovePanel((e) => {
3988
+ if (e.api.group === this.group) {
3989
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
3990
+ }
3991
+ }), this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
3873
3992
  this._onGroupDragStart.fire({
3874
3993
  nativeEvent: event,
3875
3994
  group: this.group,
@@ -3879,11 +3998,15 @@
3879
3998
  event: event.nativeEvent,
3880
3999
  index: this.tabs.length,
3881
4000
  });
4001
+ }), this.voidContainer.onWillShowOverlay((event) => {
4002
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
4003
+ kind: 'header_space',
4004
+ }));
3882
4005
  }), addDisposableListener(this.voidContainer.element, 'mousedown', (event) => {
3883
4006
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3884
4007
  if (isFloatingGroupsEnabled &&
3885
4008
  event.shiftKey &&
3886
- this.group.api.location !== 'floating') {
4009
+ this.group.api.location.type !== 'floating') {
3887
4010
  event.preventDefault();
3888
4011
  const { top, left } = this.element.getBoundingClientRect();
3889
4012
  const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
@@ -3946,9 +4069,9 @@
3946
4069
  const disposable = new CompositeDisposable(tab.onDragStart((event) => {
3947
4070
  this._onTabDragStart.fire({ nativeEvent: event, panel });
3948
4071
  }), tab.onChanged((event) => {
3949
- var _a;
3950
4072
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
3951
- const isFloatingWithOnePanel = this.group.api.location === 'floating' && this.size === 1;
4073
+ const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
4074
+ this.size === 1;
3952
4075
  if (isFloatingGroupsEnabled &&
3953
4076
  !isFloatingWithOnePanel &&
3954
4077
  event.shiftKey) {
@@ -3962,20 +4085,20 @@
3962
4085
  }, { inDragMode: true });
3963
4086
  return;
3964
4087
  }
3965
- const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&
3966
- this.group.model.isContentFocused;
3967
4088
  const isLeftClick = event.button === 0;
3968
4089
  if (!isLeftClick || event.defaultPrevented) {
3969
4090
  return;
3970
4091
  }
3971
- this.group.model.openPanel(panel, {
3972
- skipFocus: alreadyFocused,
3973
- });
4092
+ if (this.group.activePanel !== panel) {
4093
+ this.group.model.openPanel(panel);
4094
+ }
3974
4095
  }), tab.onDrop((event) => {
3975
4096
  this._onDrop.fire({
3976
4097
  event: event.nativeEvent,
3977
4098
  index: this.tabs.findIndex((x) => x.value === tab),
3978
4099
  });
4100
+ }), tab.onWillShowOverlay((event) => {
4101
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, { kind: 'tab' }));
3979
4102
  }));
3980
4103
  const value = { value: tab, disposable };
3981
4104
  this.addTab(value, index);
@@ -3993,6 +4116,60 @@
3993
4116
  }
3994
4117
  }
3995
4118
 
4119
+ class DockviewDidDropEvent extends DockviewEvent {
4120
+ get nativeEvent() {
4121
+ return this.options.nativeEvent;
4122
+ }
4123
+ get position() {
4124
+ return this.options.position;
4125
+ }
4126
+ get panel() {
4127
+ return this.options.panel;
4128
+ }
4129
+ get group() {
4130
+ return this.options.group;
4131
+ }
4132
+ get api() {
4133
+ return this.options.api;
4134
+ }
4135
+ constructor(options) {
4136
+ super();
4137
+ this.options = options;
4138
+ }
4139
+ getData() {
4140
+ return this.options.getData();
4141
+ }
4142
+ }
4143
+ class DockviewWillDropEvent extends DockviewDidDropEvent {
4144
+ get kind() {
4145
+ return this._kind;
4146
+ }
4147
+ constructor(options) {
4148
+ super(options);
4149
+ this._kind = options.kind;
4150
+ }
4151
+ }
4152
+ class WillShowOverlayLocationEvent {
4153
+ get kind() {
4154
+ return this._kind;
4155
+ }
4156
+ get nativeEvent() {
4157
+ return this.event.nativeEvent;
4158
+ }
4159
+ get position() {
4160
+ return this.event.position;
4161
+ }
4162
+ get defaultPrevented() {
4163
+ return this.event.defaultPrevented;
4164
+ }
4165
+ preventDefault() {
4166
+ this.event.preventDefault();
4167
+ }
4168
+ constructor(event, options) {
4169
+ this.event = event;
4170
+ this._kind = options.kind;
4171
+ }
4172
+ }
3996
4173
  class DockviewGroupPanelModel extends CompositeDisposable {
3997
4174
  get element() {
3998
4175
  throw new Error('not supported');
@@ -4038,7 +4215,7 @@
4038
4215
  this._location = value;
4039
4216
  toggleClass(this.container, 'dv-groupview-floating', false);
4040
4217
  toggleClass(this.container, 'dv-groupview-popout', false);
4041
- switch (value) {
4218
+ switch (value.type) {
4042
4219
  case 'grid':
4043
4220
  this.contentContainer.dropTarget.setTargetZones([
4044
4221
  'top',
@@ -4074,7 +4251,7 @@
4074
4251
  this.groupPanel = groupPanel;
4075
4252
  this._isGroupActive = false;
4076
4253
  this._locked = false;
4077
- this._location = 'grid';
4254
+ this._location = { type: 'grid' };
4078
4255
  this.mostRecentlyUsed = [];
4079
4256
  this._onDidChange = new Emitter();
4080
4257
  this.onDidChange = this._onDidChange.event;
@@ -4085,6 +4262,10 @@
4085
4262
  this.onMove = this._onMove.event;
4086
4263
  this._onDidDrop = new Emitter();
4087
4264
  this.onDidDrop = this._onDidDrop.event;
4265
+ this._onWillDrop = new Emitter();
4266
+ this.onWillDrop = this._onWillDrop.event;
4267
+ this._onWillShowOverlay = new Emitter();
4268
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
4088
4269
  this._onTabDragStart = new Emitter();
4089
4270
  this.onTabDragStart = this._onTabDragStart.event;
4090
4271
  this._onGroupDragStart = new Emitter();
@@ -4095,46 +4276,69 @@
4095
4276
  this.onDidRemovePanel = this._onDidRemovePanel.event;
4096
4277
  this._onDidActivePanelChange = new Emitter();
4097
4278
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
4279
+ this._overwriteRenderContainer = null;
4098
4280
  toggleClass(this.container, 'groupview', true);
4281
+ this._api = new DockviewApi(this.accessor);
4099
4282
  this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
4100
4283
  this.contentContainer = new ContentContainer(this.accessor, this);
4101
4284
  container.append(this.tabsContainer.element, this.contentContainer.element);
4102
4285
  this.header.hidden = !!options.hideHeader;
4103
4286
  this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
4104
- this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {
4287
+ this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {
4105
4288
  this._onTabDragStart.fire(event);
4106
4289
  }), this.tabsContainer.onGroupDragStart((event) => {
4107
4290
  this._onGroupDragStart.fire(event);
4108
4291
  }), this.tabsContainer.onDrop((event) => {
4109
- this.handleDropEvent(event.event, 'center', event.index);
4292
+ this.handleDropEvent('header', event.event, 'center', event.index);
4110
4293
  }), this.contentContainer.onDidFocus(() => {
4111
- this.accessor.doSetGroupActive(this.groupPanel, true);
4294
+ this.accessor.doSetGroupActive(this.groupPanel);
4112
4295
  }), this.contentContainer.onDidBlur(() => {
4113
4296
  // noop
4114
4297
  }), this.contentContainer.dropTarget.onDrop((event) => {
4115
- this.handleDropEvent(event.nativeEvent, event.position);
4116
- }), this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
4298
+ this.handleDropEvent('content', event.nativeEvent, event.position);
4299
+ }), this.tabsContainer.onWillShowOverlay((event) => {
4300
+ this._onWillShowOverlay.fire(event);
4301
+ }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
4302
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
4303
+ kind: 'content',
4304
+ }));
4305
+ }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange);
4306
+ }
4307
+ focusContent() {
4308
+ this.contentContainer.element.focus();
4309
+ }
4310
+ set renderContainer(value) {
4311
+ this.panels.forEach((panel) => {
4312
+ this.renderContainer.detatch(panel);
4313
+ });
4314
+ this._overwriteRenderContainer = value;
4315
+ this.panels.forEach((panel) => {
4316
+ this.rerender(panel);
4317
+ });
4318
+ }
4319
+ get renderContainer() {
4320
+ var _a;
4321
+ return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
4117
4322
  }
4118
4323
  initialize() {
4119
- var _a, _b;
4120
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
4324
+ if (this.options.panels) {
4121
4325
  this.options.panels.forEach((panel) => {
4122
4326
  this.doAddPanel(panel);
4123
4327
  });
4124
4328
  }
4125
- if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {
4329
+ if (this.options.activePanel) {
4126
4330
  this.openPanel(this.options.activePanel);
4127
4331
  }
4128
4332
  // must be run after the constructor otherwise this.parent may not be
4129
4333
  // correctly initialized
4130
- this.setActive(this.isActive, true, true);
4334
+ this.setActive(this.isActive, true);
4131
4335
  this.updateContainer();
4132
4336
  if (this.accessor.options.createRightHeaderActionsElement) {
4133
4337
  this._rightHeaderActions =
4134
4338
  this.accessor.options.createRightHeaderActionsElement(this.groupPanel);
4135
4339
  this.addDisposables(this._rightHeaderActions);
4136
4340
  this._rightHeaderActions.init({
4137
- containerApi: new DockviewApi(this.accessor),
4341
+ containerApi: this._api,
4138
4342
  api: this.groupPanel.api,
4139
4343
  });
4140
4344
  this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);
@@ -4144,7 +4348,7 @@
4144
4348
  this.accessor.options.createLeftHeaderActionsElement(this.groupPanel);
4145
4349
  this.addDisposables(this._leftHeaderActions);
4146
4350
  this._leftHeaderActions.init({
4147
- containerApi: new DockviewApi(this.accessor),
4351
+ containerApi: this._api,
4148
4352
  api: this.groupPanel.api,
4149
4353
  });
4150
4354
  this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);
@@ -4154,7 +4358,7 @@
4154
4358
  this.accessor.options.createPrefixHeaderActionsElement(this.groupPanel);
4155
4359
  this.addDisposables(this._prefixHeaderActions);
4156
4360
  this._prefixHeaderActions.init({
4157
- containerApi: new DockviewApi(this.accessor),
4361
+ containerApi: this._api,
4158
4362
  api: this.groupPanel.api,
4159
4363
  });
4160
4364
  this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);
@@ -4234,34 +4438,45 @@
4234
4438
  //noop
4235
4439
  }
4236
4440
  focus() {
4237
- var _a, _b;
4238
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4441
+ var _a;
4442
+ (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
4239
4443
  }
4240
4444
  openPanel(panel, options = {}) {
4445
+ /**
4446
+ * set the panel group
4447
+ * add the panel
4448
+ * check if group active
4449
+ * check if panel active
4450
+ */
4241
4451
  if (typeof options.index !== 'number' ||
4242
4452
  options.index > this.panels.length) {
4243
4453
  options.index = this.panels.length;
4244
4454
  }
4245
- const skipSetPanelActive = !!options.skipSetPanelActive;
4246
- const skipSetGroupActive = !!options.skipSetGroupActive;
4455
+ const skipSetActive = !!options.skipSetActive;
4247
4456
  // ensure the group is updated before we fire any events
4248
- panel.updateParentGroup(this.groupPanel, true);
4457
+ panel.updateParentGroup(this.groupPanel, {
4458
+ skipSetActive: options.skipSetActive,
4459
+ });
4460
+ this.doAddPanel(panel, options.index, {
4461
+ skipSetActive: skipSetActive,
4462
+ });
4249
4463
  if (this._activePanel === panel) {
4250
- if (!skipSetGroupActive) {
4251
- this.accessor.doSetGroupActive(this.groupPanel);
4252
- }
4464
+ this.contentContainer.renderPanel(panel, { asActive: true });
4253
4465
  return;
4254
4466
  }
4255
- this.doAddPanel(panel, options.index, skipSetPanelActive);
4256
- if (!skipSetPanelActive) {
4467
+ if (!skipSetActive) {
4257
4468
  this.doSetActivePanel(panel);
4258
4469
  }
4259
- if (!skipSetGroupActive) {
4260
- this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);
4470
+ if (!options.skipSetGroupActive) {
4471
+ this.accessor.doSetGroupActive(this.groupPanel);
4472
+ }
4473
+ if (!options.skipSetActive) {
4474
+ this.updateContainer();
4261
4475
  }
4262
- this.updateContainer();
4263
4476
  }
4264
- removePanel(groupItemOrId) {
4477
+ removePanel(groupItemOrId, options = {
4478
+ skipSetActive: false,
4479
+ }) {
4265
4480
  const id = typeof groupItemOrId === 'string'
4266
4481
  ? groupItemOrId
4267
4482
  : groupItemOrId.id;
@@ -4269,7 +4484,7 @@
4269
4484
  if (!panelToRemove) {
4270
4485
  throw new Error('invalid operation');
4271
4486
  }
4272
- return this._removePanel(panelToRemove);
4487
+ return this._removePanel(panelToRemove, options);
4273
4488
  }
4274
4489
  closeAllPanels() {
4275
4490
  if (this.panels.length > 0) {
@@ -4295,12 +4510,8 @@
4295
4510
  updateActions(element) {
4296
4511
  this.tabsContainer.setRightActionsElement(element);
4297
4512
  }
4298
- setActive(isGroupActive, skipFocus = false, force = false) {
4299
- var _a, _b, _c, _d;
4513
+ setActive(isGroupActive, force = false) {
4300
4514
  if (!force && this.isActive === isGroupActive) {
4301
- if (!skipFocus) {
4302
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4303
- }
4304
4515
  return;
4305
4516
  }
4306
4517
  this._isGroupActive = isGroupActive;
@@ -4311,11 +4522,6 @@
4311
4522
  this.doSetActivePanel(this.panels[0]);
4312
4523
  }
4313
4524
  this.updateContainer();
4314
- if (isGroupActive) {
4315
- if (!skipFocus) {
4316
- (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);
4317
- }
4318
- }
4319
4525
  }
4320
4526
  layout(width, height) {
4321
4527
  var _a;
@@ -4326,17 +4532,22 @@
4326
4532
  this._activePanel.layout(this._width, this._height);
4327
4533
  }
4328
4534
  }
4329
- _removePanel(panel) {
4535
+ _removePanel(panel, options) {
4330
4536
  const isActivePanel = this._activePanel === panel;
4331
4537
  this.doRemovePanel(panel);
4332
4538
  if (isActivePanel && this.panels.length > 0) {
4333
4539
  const nextPanel = this.mostRecentlyUsed[0];
4334
- this.openPanel(nextPanel);
4540
+ this.openPanel(nextPanel, {
4541
+ skipSetActive: options.skipSetActive,
4542
+ skipSetGroupActive: options.skipSetActiveGroup,
4543
+ });
4335
4544
  }
4336
4545
  if (this._activePanel && this.panels.length === 0) {
4337
4546
  this.doSetActivePanel(undefined);
4338
4547
  }
4339
- this.updateContainer();
4548
+ if (!options.skipSetActive) {
4549
+ this.updateContainer();
4550
+ }
4340
4551
  return panel;
4341
4552
  }
4342
4553
  doRemovePanel(panel) {
@@ -4351,13 +4562,13 @@
4351
4562
  }
4352
4563
  this._onDidRemovePanel.fire({ panel });
4353
4564
  }
4354
- doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
4565
+ doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
4355
4566
  const existingPanel = this._panels.indexOf(panel);
4356
4567
  const hasExistingPanel = existingPanel > -1;
4357
4568
  this.tabsContainer.show();
4358
4569
  this.contentContainer.show();
4359
4570
  this.tabsContainer.openPanel(panel, index);
4360
- if (!skipSetActive) {
4571
+ if (!options.skipSetActive) {
4361
4572
  this.contentContainer.openPanel(panel);
4362
4573
  }
4363
4574
  if (hasExistingPanel) {
@@ -4369,12 +4580,17 @@
4369
4580
  this._onDidAddPanel.fire({ panel });
4370
4581
  }
4371
4582
  doSetActivePanel(panel) {
4583
+ if (this._activePanel === panel) {
4584
+ return;
4585
+ }
4372
4586
  this._activePanel = panel;
4373
4587
  if (panel) {
4374
4588
  this.tabsContainer.setActivePanel(panel);
4375
4589
  panel.layout(this._width, this._height);
4376
4590
  this.updateMru(panel);
4377
- this._onDidActivePanelChange.fire({ panel });
4591
+ this._onDidActivePanelChange.fire({
4592
+ panel,
4593
+ });
4378
4594
  }
4379
4595
  }
4380
4596
  updateMru(panel) {
@@ -4386,11 +4602,11 @@
4386
4602
  updateContainer() {
4387
4603
  var _a, _b;
4388
4604
  toggleClass(this.container, 'empty', this.isEmpty);
4389
- this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));
4605
+ this.panels.forEach((panel) => panel.runEvents());
4390
4606
  if (this.isEmpty && !this.watermark) {
4391
4607
  const watermark = this.accessor.createWatermarkComponent();
4392
4608
  watermark.init({
4393
- containerApi: new DockviewApi(this.accessor),
4609
+ containerApi: this._api,
4394
4610
  group: this.groupPanel,
4395
4611
  });
4396
4612
  this.watermark = watermark;
@@ -4423,10 +4639,32 @@
4423
4639
  }
4424
4640
  return false;
4425
4641
  }
4426
- handleDropEvent(event, position, index) {
4642
+ handleDropEvent(type, event, position, index) {
4427
4643
  if (this.locked === 'no-drop-target') {
4428
4644
  return;
4429
4645
  }
4646
+ function getKind() {
4647
+ switch (type) {
4648
+ case 'header':
4649
+ return typeof index === 'number' ? 'tab' : 'header_space';
4650
+ case 'content':
4651
+ return 'content';
4652
+ }
4653
+ }
4654
+ const panel = typeof index === 'number' ? this.panels[index] : undefined;
4655
+ const willDropEvent = new DockviewWillDropEvent({
4656
+ nativeEvent: event,
4657
+ position,
4658
+ panel,
4659
+ getData: () => getPanelData(),
4660
+ kind: getKind(),
4661
+ group: this.groupPanel,
4662
+ api: this._api,
4663
+ });
4664
+ this._onWillDrop.fire(willDropEvent);
4665
+ if (willDropEvent.defaultPrevented) {
4666
+ return;
4667
+ }
4430
4668
  const data = getPanelData();
4431
4669
  if (data && data.viewId === this.accessor.id) {
4432
4670
  if (data.panelId === null) {
@@ -4459,12 +4697,14 @@
4459
4697
  });
4460
4698
  }
4461
4699
  else {
4462
- this._onDidDrop.fire({
4700
+ this._onDidDrop.fire(new DockviewDidDropEvent({
4463
4701
  nativeEvent: event,
4464
4702
  position,
4465
- index,
4703
+ panel,
4466
4704
  getData: () => getPanelData(),
4467
- });
4705
+ group: this.groupPanel,
4706
+ api: this._api,
4707
+ }));
4468
4708
  }
4469
4709
  }
4470
4710
  dispose() {
@@ -4472,6 +4712,7 @@
4472
4712
  super.dispose();
4473
4713
  (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();
4474
4714
  (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);
4715
+ this.watermark = undefined;
4475
4716
  for (const panel of this.panels) {
4476
4717
  panel.dispose();
4477
4718
  }
@@ -4493,15 +4734,7 @@
4493
4734
  constructor(parentElement, disableResizing = false) {
4494
4735
  super();
4495
4736
  this._disableResizing = disableResizing;
4496
- if (parentElement) {
4497
- this._element = parentElement;
4498
- }
4499
- else {
4500
- this._element = document.createElement('div');
4501
- this._element.style.height = '100%';
4502
- this._element.style.width = '100%';
4503
- this._element.className = 'dv-resizable-container';
4504
- }
4737
+ this._element = parentElement;
4505
4738
  this.addDisposables(watchElementResize(this._element, (entry) => {
4506
4739
  if (this.isDisposed) {
4507
4740
  /**
@@ -4589,25 +4822,38 @@
4589
4822
  get activeGroup() {
4590
4823
  return this._activeGroup;
4591
4824
  }
4825
+ get locked() {
4826
+ return this.gridview.locked;
4827
+ }
4828
+ set locked(value) {
4829
+ this.gridview.locked = value;
4830
+ }
4592
4831
  constructor(options) {
4593
- super(options.parentElement, options.disableAutoResizing);
4832
+ super(document.createElement('div'), options.disableAutoResizing);
4594
4833
  this._id = nextLayoutId$1.next();
4595
4834
  this._groups = new Map();
4596
4835
  this._onDidLayoutChange = new Emitter();
4597
4836
  this.onDidLayoutChange = this._onDidLayoutChange.event;
4598
- this._onDidRemoveGroup = new Emitter();
4599
- this.onDidRemoveGroup = this._onDidRemoveGroup.event;
4600
- this._onDidAddGroup = new Emitter();
4601
- this.onDidAddGroup = this._onDidAddGroup.event;
4602
- this._onDidActiveGroupChange = new Emitter();
4603
- this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
4837
+ this._onDidRemove = new Emitter();
4838
+ this.onDidRemove = this._onDidRemove.event;
4839
+ this._onDidAdd = new Emitter();
4840
+ this.onDidAdd = this._onDidAdd.event;
4841
+ this._onDidActiveChange = new Emitter();
4842
+ this.onDidActiveChange = this._onDidActiveChange.event;
4604
4843
  this._bufferOnDidLayoutChange = new TickDelayedEvent();
4844
+ this.element.style.height = '100%';
4845
+ this.element.style.width = '100%';
4846
+ options.parentElement.appendChild(this.element);
4605
4847
  this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
4848
+ this.gridview.locked = !!options.locked;
4606
4849
  this.element.appendChild(this.gridview.element);
4607
4850
  this.layout(0, 0, true); // set some elements height/widths
4608
- this.addDisposables(this.gridview.onDidChange(() => {
4851
+ this.addDisposables(Disposable.from(() => {
4852
+ var _a;
4853
+ (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);
4854
+ }), this.gridview.onDidChange(() => {
4609
4855
  this._bufferOnDidLayoutChange.fire();
4610
- }), exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
4856
+ }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {
4611
4857
  this._bufferOnDidLayoutChange.fire();
4612
4858
  }), this._bufferOnDidLayoutChange.onEvent(() => {
4613
4859
  this._onDidLayoutChange.fire();
@@ -4622,6 +4868,7 @@
4622
4868
  }
4623
4869
  maximizeGroup(panel) {
4624
4870
  this.gridview.maximizeView(panel);
4871
+ this.doSetGroupActive(panel);
4625
4872
  }
4626
4873
  isMaximizedGroup(panel) {
4627
4874
  return this.gridview.maximizedView() === panel;
@@ -4632,13 +4879,12 @@
4632
4879
  hasMaximizedGroup() {
4633
4880
  return this.gridview.hasMaximizedView();
4634
4881
  }
4635
- get onDidMaxmizedGroupChange() {
4636
- return this.gridview.onDidMaxmizedNodeChange;
4882
+ get onDidMaximizedGroupChange() {
4883
+ return this.gridview.onDidMaximizedNodeChange;
4637
4884
  }
4638
4885
  doAddGroup(group, location = [0], size) {
4639
4886
  this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
4640
- this._onDidAddGroup.fire(group);
4641
- this.doSetGroupActive(group);
4887
+ this._onDidAdd.fire(group);
4642
4888
  }
4643
4889
  doRemoveGroup(group, options) {
4644
4890
  if (!this._groups.has(group.id)) {
@@ -4650,8 +4896,8 @@
4650
4896
  item.disposable.dispose();
4651
4897
  item.value.dispose();
4652
4898
  this._groups.delete(group.id);
4899
+ this._onDidRemove.fire(group);
4653
4900
  }
4654
- this._onDidRemoveGroup.fire(group);
4655
4901
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
4656
4902
  const groups = Array.from(this._groups.values());
4657
4903
  this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
@@ -4662,25 +4908,18 @@
4662
4908
  var _a;
4663
4909
  return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
4664
4910
  }
4665
- doSetGroupActive(group, skipFocus) {
4666
- var _a, _b, _c;
4911
+ doSetGroupActive(group) {
4667
4912
  if (this._activeGroup === group) {
4668
4913
  return;
4669
4914
  }
4670
4915
  if (this._activeGroup) {
4671
4916
  this._activeGroup.setActive(false);
4672
- if (!skipFocus) {
4673
- (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4674
- }
4675
4917
  }
4676
4918
  if (group) {
4677
4919
  group.setActive(true);
4678
- if (!skipFocus) {
4679
- (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);
4680
- }
4681
4920
  }
4682
4921
  this._activeGroup = group;
4683
- this._onDidActiveGroupChange.fire(group);
4922
+ this._onDidActiveChange.fire(group);
4684
4923
  }
4685
4924
  removeGroup(group) {
4686
4925
  this.doRemoveGroup(group);
@@ -4725,9 +4964,9 @@
4725
4964
  this.gridview.layout(width, height);
4726
4965
  }
4727
4966
  dispose() {
4728
- this._onDidActiveGroupChange.dispose();
4729
- this._onDidAddGroup.dispose();
4730
- this._onDidRemoveGroup.dispose();
4967
+ this._onDidActiveChange.dispose();
4968
+ this._onDidAdd.dispose();
4969
+ this._onDidRemove.dispose();
4731
4970
  this._onDidLayoutChange.dispose();
4732
4971
  for (const group of this.groups) {
4733
4972
  group.dispose();
@@ -4737,11 +4976,15 @@
4737
4976
  }
4738
4977
  }
4739
4978
 
4979
+ class WillFocusEvent extends DockviewEvent {
4980
+ constructor() {
4981
+ super();
4982
+ }
4983
+ }
4740
4984
  /**
4741
4985
  * A core api implementation that should be used across all panel-like objects
4742
4986
  */
4743
4987
  class PanelApiImpl extends CompositeDisposable {
4744
- //
4745
4988
  get isFocused() {
4746
4989
  return this._isFocused;
4747
4990
  }
@@ -4751,6 +4994,9 @@
4751
4994
  get isVisible() {
4752
4995
  return this._isVisible;
4753
4996
  }
4997
+ get isHidden() {
4998
+ return this._isHidden;
4999
+ }
4754
5000
  get width() {
4755
5001
  return this._width;
4756
5002
  }
@@ -4763,38 +5009,26 @@
4763
5009
  this._isFocused = false;
4764
5010
  this._isActive = false;
4765
5011
  this._isVisible = true;
5012
+ this._isHidden = false;
4766
5013
  this._width = 0;
4767
5014
  this._height = 0;
4768
5015
  this.panelUpdatesDisposable = new MutableDisposable();
4769
- this._onDidDimensionChange = new Emitter({
4770
- replay: true,
4771
- });
5016
+ this._onDidDimensionChange = new Emitter();
4772
5017
  this.onDidDimensionsChange = this._onDidDimensionChange.event;
4773
- //
4774
- this._onDidChangeFocus = new Emitter({
4775
- replay: true,
4776
- });
5018
+ this._onDidChangeFocus = new Emitter();
4777
5019
  this.onDidFocusChange = this._onDidChangeFocus.event;
4778
5020
  //
4779
- this._onFocusEvent = new Emitter();
4780
- this.onFocusEvent = this._onFocusEvent.event;
5021
+ this._onWillFocus = new Emitter();
5022
+ this.onWillFocus = this._onWillFocus.event;
4781
5023
  //
4782
- this._onDidVisibilityChange = new Emitter({
4783
- replay: true,
4784
- });
5024
+ this._onDidVisibilityChange = new Emitter();
4785
5025
  this.onDidVisibilityChange = this._onDidVisibilityChange.event;
4786
- //
4787
- this._onVisibilityChange = new Emitter();
4788
- this.onVisibilityChange = this._onVisibilityChange.event;
4789
- //
4790
- this._onDidActiveChange = new Emitter({
4791
- replay: true,
4792
- });
5026
+ this._onDidHiddenChange = new Emitter();
5027
+ this.onDidHiddenChange = this._onDidHiddenChange.event;
5028
+ this._onDidActiveChange = new Emitter();
4793
5029
  this.onDidActiveChange = this._onDidActiveChange.event;
4794
- //
4795
5030
  this._onActiveChange = new Emitter();
4796
5031
  this.onActiveChange = this._onActiveChange.event;
4797
- //
4798
5032
  this._onUpdateParameters = new Emitter();
4799
5033
  this.onUpdateParameters = this._onUpdateParameters.event;
4800
5034
  this.addDisposables(this.onDidFocusChange((event) => {
@@ -4803,10 +5037,12 @@
4803
5037
  this._isActive = event.isActive;
4804
5038
  }), this.onDidVisibilityChange((event) => {
4805
5039
  this._isVisible = event.isVisible;
5040
+ }), this.onDidHiddenChange((event) => {
5041
+ this._isHidden = event.isHidden;
4806
5042
  }), this.onDidDimensionsChange((event) => {
4807
5043
  this._width = event.width;
4808
5044
  this._height = event.height;
4809
- }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this._onUpdateParameters);
5045
+ }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onDidHiddenChange, this._onUpdateParameters);
4810
5046
  }
4811
5047
  initialize(panel) {
4812
5048
  this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
@@ -4815,8 +5051,8 @@
4815
5051
  });
4816
5052
  });
4817
5053
  }
4818
- setVisible(isVisible) {
4819
- this._onVisibilityChange.fire({ isVisible });
5054
+ setHidden(isHidden) {
5055
+ this._onDidHiddenChange.fire({ isHidden });
4820
5056
  }
4821
5057
  setActive() {
4822
5058
  this._onActiveChange.fire();
@@ -4824,9 +5060,6 @@
4824
5060
  updateParameters(parameters) {
4825
5061
  this._onUpdateParameters.fire(parameters);
4826
5062
  }
4827
- dispose() {
4828
- super.dispose();
4829
- }
4830
5063
  }
4831
5064
 
4832
5065
  class SplitviewPanelApiImpl extends PanelApiImpl {
@@ -4914,7 +5147,12 @@
4914
5147
  }), focusTracker);
4915
5148
  }
4916
5149
  focus() {
4917
- this.api._onFocusEvent.fire();
5150
+ const event = new WillFocusEvent();
5151
+ this.api._onWillFocus.fire(event);
5152
+ if (event.defaultPrevented) {
5153
+ return;
5154
+ }
5155
+ this._element.focus();
4918
5156
  }
4919
5157
  layout(width, height) {
4920
5158
  this._width = width;
@@ -5243,9 +5481,7 @@
5243
5481
  super(id);
5244
5482
  this._onDidConstraintsChangeInternal = new Emitter();
5245
5483
  this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
5246
- this._onDidConstraintsChange = new Emitter({
5247
- replay: true,
5248
- });
5484
+ this._onDidConstraintsChange = new Emitter();
5249
5485
  this.onDidConstraintsChange = this._onDidConstraintsChange.event;
5250
5486
  this._onDidSizeChange = new Emitter();
5251
5487
  this.onDidSizeChange = this._onDidSizeChange.event;
@@ -5338,13 +5574,13 @@
5338
5574
  this._maximumHeight = options.maximumHeight;
5339
5575
  }
5340
5576
  this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
5341
- this.addDisposables(this.api.onVisibilityChange((event) => {
5342
- const { isVisible } = event;
5577
+ this.addDisposables(this.api.onDidHiddenChange((event) => {
5578
+ const { isHidden } = event;
5343
5579
  const { accessor } = this._params;
5344
- accessor.setVisible(this, isVisible);
5580
+ accessor.setVisible(this, !isHidden);
5345
5581
  }), this.api.onActiveChange(() => {
5346
5582
  const { accessor } = this._params;
5347
- accessor.setActive(this);
5583
+ accessor.doSetGroupActive(this);
5348
5584
  }), this.api.onDidConstraintsChangeInternal((event) => {
5349
5585
  if (typeof event.minimumWidth === 'number' ||
5350
5586
  typeof event.minimumWidth === 'function') {
@@ -5427,6 +5663,17 @@
5427
5663
  this.onDidLocationChange = this._onDidLocationChange.event;
5428
5664
  this.addDisposables(this._onDidLocationChange);
5429
5665
  }
5666
+ close() {
5667
+ if (!this._group) {
5668
+ return;
5669
+ }
5670
+ return this.accessor.removeGroup(this._group);
5671
+ }
5672
+ getWindow() {
5673
+ return this.location.type === 'popout'
5674
+ ? this.location.getWindow()
5675
+ : window;
5676
+ }
5430
5677
  moveTo(options) {
5431
5678
  var _a, _b, _c;
5432
5679
  if (!this._group) {
@@ -5434,14 +5681,23 @@
5434
5681
  }
5435
5682
  const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
5436
5683
  direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),
5684
+ skipSetActive: true,
5685
+ });
5686
+ this.accessor.moveGroupOrPanel({
5687
+ from: { groupId: this._group.id },
5688
+ to: {
5689
+ group,
5690
+ position: options.group
5691
+ ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
5692
+ : 'center',
5693
+ },
5437
5694
  });
5438
- this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
5439
5695
  }
5440
5696
  maximize() {
5441
5697
  if (!this._group) {
5442
5698
  throw new Error(NOT_INITIALIZED_MESSAGE);
5443
5699
  }
5444
- if (this.location !== 'grid') {
5700
+ if (this.location.type !== 'grid') {
5445
5701
  // only grid groups can be maximized
5446
5702
  return;
5447
5703
  }
@@ -5498,6 +5754,12 @@
5498
5754
  this.api.initialize(this); // cannot use 'this' after after 'super' call
5499
5755
  this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
5500
5756
  }
5757
+ focus() {
5758
+ if (!this.api.isActive) {
5759
+ this.api.setActive();
5760
+ }
5761
+ super.focus();
5762
+ }
5501
5763
  initialize() {
5502
5764
  this._model.initialize();
5503
5765
  }
@@ -5543,6 +5805,9 @@
5543
5805
  }
5544
5806
 
5545
5807
  class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5808
+ get location() {
5809
+ return this.group.api.location;
5810
+ }
5546
5811
  get title() {
5547
5812
  return this.panel.title;
5548
5813
  }
@@ -5554,15 +5819,34 @@
5554
5819
  }
5555
5820
  set group(value) {
5556
5821
  const isOldGroupActive = this.isGroupActive;
5557
- this._group = value;
5558
- this._onDidGroupChange.fire();
5559
- if (this._group) {
5560
- this.disposable.value = this._group.api.onDidActiveChange(() => {
5561
- this._onDidActiveGroupChange.fire();
5822
+ if (this._group !== value) {
5823
+ this._group = value;
5824
+ this._onDidGroupChange.fire({});
5825
+ let _trackGroupActive = isOldGroupActive; // prevent duplicate events with same state
5826
+ this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidLocationChange((event) => {
5827
+ if (this.group !== this.panel.group) {
5828
+ return;
5829
+ }
5830
+ this._onDidLocationChange.fire(event);
5831
+ }), this.group.api.onDidActiveChange(() => {
5832
+ if (this.group !== this.panel.group) {
5833
+ return;
5834
+ }
5835
+ if (_trackGroupActive !== this.isGroupActive) {
5836
+ _trackGroupActive = this.isGroupActive;
5837
+ this._onDidActiveGroupChange.fire({
5838
+ isActive: this.isGroupActive,
5839
+ });
5840
+ }
5841
+ }));
5842
+ // if (this.isGroupActive !== isOldGroupActive) {
5843
+ // this._onDidActiveGroupChange.fire({
5844
+ // isActive: this.isGroupActive,
5845
+ // });
5846
+ // }
5847
+ this._onDidLocationChange.fire({
5848
+ location: this.group.api.location,
5562
5849
  });
5563
- if (this.isGroupActive !== isOldGroupActive) {
5564
- this._onDidActiveGroupChange.fire();
5565
- }
5566
5850
  }
5567
5851
  }
5568
5852
  get group() {
@@ -5580,14 +5864,26 @@
5580
5864
  this.onDidGroupChange = this._onDidGroupChange.event;
5581
5865
  this._onDidRendererChange = new Emitter();
5582
5866
  this.onDidRendererChange = this._onDidRendererChange.event;
5583
- this.disposable = new MutableDisposable();
5867
+ this._onDidLocationChange = new Emitter();
5868
+ this.onDidLocationChange = this._onDidLocationChange.event;
5869
+ this.groupEventsDisposable = new MutableDisposable();
5584
5870
  this.initialize(panel);
5585
5871
  this._group = group;
5586
- this.addDisposables(this.disposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange);
5872
+ this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);
5873
+ }
5874
+ getWindow() {
5875
+ return this.group.api.getWindow();
5587
5876
  }
5588
5877
  moveTo(options) {
5589
5878
  var _a;
5590
- this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);
5879
+ this.accessor.moveGroupOrPanel({
5880
+ from: { groupId: this._group.id, panelId: this.panel.id },
5881
+ to: {
5882
+ group: options.group,
5883
+ position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
5884
+ index: options.index,
5885
+ },
5886
+ });
5591
5887
  }
5592
5888
  setTitle(title) {
5593
5889
  this.panel.setTitle(title);
@@ -5648,7 +5944,14 @@
5648
5944
  this.setTitle(params.title);
5649
5945
  }
5650
5946
  focus() {
5651
- this.api._onFocusEvent.fire();
5947
+ const event = new WillFocusEvent();
5948
+ this.api._onWillFocus.fire(event);
5949
+ if (event.defaultPrevented) {
5950
+ return;
5951
+ }
5952
+ if (!this.api.isActive) {
5953
+ this.api.setActive();
5954
+ }
5652
5955
  }
5653
5956
  toJSON() {
5654
5957
  return {
@@ -5705,20 +6008,40 @@
5705
6008
  },
5706
6009
  });
5707
6010
  }
5708
- updateParentGroup(group, isGroupActive) {
6011
+ updateParentGroup(group, options) {
5709
6012
  this._group = group;
5710
- this.api.group = group;
6013
+ this.api.group = this._group;
5711
6014
  const isPanelVisible = this._group.model.isPanelActive(this);
5712
- this.api._onDidActiveChange.fire({
5713
- isActive: isGroupActive && isPanelVisible,
5714
- });
5715
- this.api._onDidVisibilityChange.fire({
5716
- isVisible: isPanelVisible,
5717
- });
5718
- this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));
6015
+ const isActive = this.group.api.isActive && isPanelVisible;
6016
+ if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {
6017
+ if (this.api.isActive !== isActive) {
6018
+ this.api._onDidActiveChange.fire({
6019
+ isActive: this.group.api.isActive && isPanelVisible,
6020
+ });
6021
+ }
6022
+ }
6023
+ if (this.api.isVisible !== isPanelVisible) {
6024
+ this.api._onDidVisibilityChange.fire({
6025
+ isVisible: isPanelVisible,
6026
+ });
6027
+ }
6028
+ }
6029
+ runEvents() {
6030
+ const isPanelVisible = this._group.model.isPanelActive(this);
6031
+ const isActive = this.group.api.isActive && isPanelVisible;
6032
+ if (this.api.isActive !== isActive) {
6033
+ this.api._onDidActiveChange.fire({
6034
+ isActive: this.group.api.isActive && isPanelVisible,
6035
+ });
6036
+ }
6037
+ if (this.api.isVisible !== isPanelVisible) {
6038
+ this.api._onDidVisibilityChange.fire({
6039
+ isVisible: isPanelVisible,
6040
+ });
6041
+ }
5719
6042
  }
5720
6043
  layout(width, height) {
5721
- // the obtain the correct dimensions of the content panel we must deduct the tab height
6044
+ // TODO: Can we somehow do height without header height or indicate what the header height is?
5722
6045
  this.api._onDidDimensionChange.fire({
5723
6046
  width,
5724
6047
  height: height,
@@ -5840,8 +6163,6 @@
5840
6163
  this.id = id;
5841
6164
  this.contentComponent = contentComponent;
5842
6165
  this.tabComponent = tabComponent;
5843
- this._group = null;
5844
- this._isPanelVisible = null;
5845
6166
  this._content = this.createContentComponent(this.id, contentComponent);
5846
6167
  this._tab = this.createTabComponent(this.id, tabComponent);
5847
6168
  }
@@ -5849,25 +6170,8 @@
5849
6170
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
5850
6171
  this.tab.init(params);
5851
6172
  }
5852
- updateParentGroup(group, isPanelVisible) {
5853
- if (group !== this._group) {
5854
- this._group = group;
5855
- if (this._content.onGroupChange) {
5856
- this._content.onGroupChange(group);
5857
- }
5858
- if (this._tab.onGroupChange) {
5859
- this._tab.onGroupChange(group);
5860
- }
5861
- }
5862
- if (isPanelVisible !== this._isPanelVisible) {
5863
- this._isPanelVisible = isPanelVisible;
5864
- if (this._content.onPanelVisibleChange) {
5865
- this._content.onPanelVisibleChange(isPanelVisible);
5866
- }
5867
- if (this._tab.onPanelVisibleChange) {
5868
- this._tab.onPanelVisibleChange(isPanelVisible);
5869
- }
5870
- }
6173
+ updateParentGroup(_group, _isPanelVisible) {
6174
+ // noop
5871
6175
  }
5872
6176
  layout(width, height) {
5873
6177
  var _a, _b;
@@ -6300,117 +6604,6 @@
6300
6604
  }
6301
6605
  }
6302
6606
 
6303
- class PopoutWindow extends CompositeDisposable {
6304
- constructor(id, className, options) {
6305
- super();
6306
- this.id = id;
6307
- this.className = className;
6308
- this.options = options;
6309
- this._onDidClose = new Emitter();
6310
- this.onDidClose = this._onDidClose.event;
6311
- this._window = null;
6312
- this.addDisposables(this._onDidClose, {
6313
- dispose: () => {
6314
- this.close();
6315
- },
6316
- });
6317
- }
6318
- dimensions() {
6319
- if (!this._window) {
6320
- return null;
6321
- }
6322
- const left = this._window.value.screenX;
6323
- const top = this._window.value.screenY;
6324
- const width = this._window.value.innerWidth;
6325
- const height = this._window.value.innerHeight;
6326
- return { top, left, width, height };
6327
- }
6328
- close() {
6329
- if (this._window) {
6330
- this._window.disposable.dispose();
6331
- this._window.value.close();
6332
- this._window = null;
6333
- }
6334
- }
6335
- open(content) {
6336
- if (this._window) {
6337
- throw new Error('instance of popout window is already open');
6338
- }
6339
- const url = `${this.options.url}`;
6340
- const features = Object.entries({
6341
- top: this.options.top,
6342
- left: this.options.left,
6343
- width: this.options.width,
6344
- height: this.options.height,
6345
- })
6346
- .map(([key, value]) => `${key}=${value}`)
6347
- .join(',');
6348
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6349
- const externalWindow = window.open(url, this.id, features);
6350
- if (!externalWindow) {
6351
- return;
6352
- }
6353
- const disposable = new CompositeDisposable();
6354
- this._window = { value: externalWindow, disposable };
6355
- const cleanUp = () => {
6356
- this._onDidClose.fire();
6357
- this._window = null;
6358
- };
6359
- // prevent any default content from loading
6360
- // externalWindow.document.body.replaceWith(document.createElement('div'));
6361
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6362
- cleanUp();
6363
- this.close();
6364
- }));
6365
- externalWindow.addEventListener('load', () => {
6366
- const externalDocument = externalWindow.document;
6367
- externalDocument.title = document.title;
6368
- const div = document.createElement('div');
6369
- div.classList.add('dv-popout-window');
6370
- div.style.position = 'absolute';
6371
- div.style.width = '100%';
6372
- div.style.height = '100%';
6373
- div.style.top = '0px';
6374
- div.style.left = '0px';
6375
- div.classList.add(this.className);
6376
- div.appendChild(content);
6377
- externalDocument.body.replaceChildren(div);
6378
- externalDocument.body.classList.add(this.className);
6379
- addStyles(externalDocument, window.document.styleSheets);
6380
- externalWindow.addEventListener('beforeunload', () => {
6381
- // TODO: indicate external window is closing
6382
- cleanUp();
6383
- });
6384
- });
6385
- }
6386
- }
6387
-
6388
- class DockviewPopoutGroupPanel extends CompositeDisposable {
6389
- constructor(id, group, options) {
6390
- var _a;
6391
- super();
6392
- this.id = id;
6393
- this.group = group;
6394
- this.options = options;
6395
- this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
6396
- url: this.options.popoutUrl,
6397
- left: this.options.box.left,
6398
- top: this.options.box.top,
6399
- width: this.options.box.width,
6400
- height: this.options.box.height,
6401
- });
6402
- group.model.location = 'popout';
6403
- this.addDisposables(this.window, {
6404
- dispose: () => {
6405
- group.model.location = 'grid';
6406
- },
6407
- }, this.window.onDidClose(() => {
6408
- this.dispose();
6409
- }));
6410
- this.window.open(group.element);
6411
- }
6412
- }
6413
-
6414
6607
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6415
6608
  const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6416
6609
 
@@ -6424,11 +6617,13 @@
6424
6617
  super();
6425
6618
  this.element = element;
6426
6619
  this.map = {};
6620
+ this._disposed = false;
6427
6621
  this.addDisposables(Disposable.from(() => {
6428
6622
  for (const value of Object.values(this.map)) {
6429
6623
  value.disposable.dispose();
6430
6624
  value.destroy.dispose();
6431
6625
  }
6626
+ this._disposed = true;
6432
6627
  }));
6433
6628
  }
6434
6629
  detatch(panel) {
@@ -6468,7 +6663,7 @@
6468
6663
  focusContainer.style.top = `${box.top - box2.top}px`;
6469
6664
  focusContainer.style.width = `${box.width}px`;
6470
6665
  focusContainer.style.height = `${box.height}px`;
6471
- toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
6666
+ toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
6472
6667
  };
6473
6668
  const visibilityChanged = () => {
6474
6669
  if (panel.api.isVisible) {
@@ -6514,8 +6709,11 @@
6514
6709
  resize();
6515
6710
  }));
6516
6711
  this.map[panel.api.id].destroy = Disposable.from(() => {
6517
- focusContainer.removeChild(panel.view.content.element);
6518
- this.element.removeChild(focusContainer);
6712
+ var _a;
6713
+ if (panel.view.content.element.parentElement === focusContainer) {
6714
+ focusContainer.removeChild(panel.view.content.element);
6715
+ }
6716
+ (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);
6519
6717
  });
6520
6718
  queueMicrotask(() => {
6521
6719
  if (this.isDisposed) {
@@ -6536,11 +6734,187 @@
6536
6734
  }
6537
6735
  }
6538
6736
 
6737
+ /******************************************************************************
6738
+ Copyright (c) Microsoft Corporation.
6739
+
6740
+ Permission to use, copy, modify, and/or distribute this software for any
6741
+ purpose with or without fee is hereby granted.
6742
+
6743
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6744
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6745
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6746
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6747
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6748
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6749
+ PERFORMANCE OF THIS SOFTWARE.
6750
+ ***************************************************************************** */
6751
+ /* global Reflect, Promise, SuppressedError, Symbol */
6752
+
6753
+
6754
+ function __awaiter(thisArg, _arguments, P, generator) {
6755
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6756
+ return new (P || (P = Promise))(function (resolve, reject) {
6757
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6758
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6759
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
6760
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
6761
+ });
6762
+ }
6763
+
6764
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
6765
+ var e = new Error(message);
6766
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
6767
+ };
6768
+
6769
+ class PopoutWindow extends CompositeDisposable {
6770
+ get window() {
6771
+ var _a, _b;
6772
+ return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
6773
+ }
6774
+ constructor(target, className, options) {
6775
+ super();
6776
+ this.target = target;
6777
+ this.className = className;
6778
+ this.options = options;
6779
+ this._onWillClose = new Emitter();
6780
+ this.onWillClose = this._onWillClose.event;
6781
+ this._onDidClose = new Emitter();
6782
+ this.onDidClose = this._onDidClose.event;
6783
+ this._window = null;
6784
+ this.addDisposables(this._onWillClose, this._onDidClose, {
6785
+ dispose: () => {
6786
+ this.close();
6787
+ },
6788
+ });
6789
+ }
6790
+ dimensions() {
6791
+ if (!this._window) {
6792
+ return null;
6793
+ }
6794
+ const left = this._window.value.screenX;
6795
+ const top = this._window.value.screenY;
6796
+ const width = this._window.value.innerWidth;
6797
+ const height = this._window.value.innerHeight;
6798
+ return { top, left, width, height };
6799
+ }
6800
+ close() {
6801
+ var _a, _b;
6802
+ if (this._window) {
6803
+ this._onWillClose.fire();
6804
+ (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {
6805
+ id: this.target,
6806
+ window: this._window.value,
6807
+ });
6808
+ this._window.disposable.dispose();
6809
+ this._window.value.close();
6810
+ this._window = null;
6811
+ this._onDidClose.fire();
6812
+ }
6813
+ }
6814
+ open() {
6815
+ var _a, _b;
6816
+ return __awaiter(this, void 0, void 0, function* () {
6817
+ if (this._window) {
6818
+ throw new Error('instance of popout window is already open');
6819
+ }
6820
+ const url = `${this.options.url}`;
6821
+ const features = Object.entries({
6822
+ top: this.options.top,
6823
+ left: this.options.left,
6824
+ width: this.options.width,
6825
+ height: this.options.height,
6826
+ })
6827
+ .map(([key, value]) => `${key}=${value}`)
6828
+ .join(',');
6829
+ /**
6830
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6831
+ */
6832
+ const externalWindow = window.open(url, this.target, features);
6833
+ if (!externalWindow) {
6834
+ /**
6835
+ * Popup blocked
6836
+ */
6837
+ return null;
6838
+ }
6839
+ const disposable = new CompositeDisposable();
6840
+ this._window = { value: externalWindow, disposable };
6841
+ disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6842
+ /**
6843
+ * before the main window closes we should close this popup too
6844
+ * to be good citizens
6845
+ *
6846
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6847
+ */
6848
+ this.close();
6849
+ }));
6850
+ const container = this.createPopoutWindowContainer();
6851
+ if (this.className) {
6852
+ container.classList.add(this.className);
6853
+ }
6854
+ (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {
6855
+ id: this.target,
6856
+ window: externalWindow,
6857
+ });
6858
+ return new Promise((resolve) => {
6859
+ externalWindow.addEventListener('unload', (e) => {
6860
+ // if page fails to load before unloading
6861
+ // this.close();
6862
+ });
6863
+ externalWindow.addEventListener('load', () => {
6864
+ /**
6865
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
6866
+ */
6867
+ const externalDocument = externalWindow.document;
6868
+ externalDocument.title = document.title;
6869
+ externalDocument.body.appendChild(container);
6870
+ addStyles(externalDocument, window.document.styleSheets);
6871
+ /**
6872
+ * beforeunload must be registered after load for reasons I could not determine
6873
+ * otherwise the beforeunload event will not fire when the window is closed
6874
+ */
6875
+ addDisposableWindowListener(externalWindow, 'beforeunload', () => {
6876
+ /**
6877
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
6878
+ */
6879
+ this.close();
6880
+ });
6881
+ resolve(container);
6882
+ });
6883
+ });
6884
+ });
6885
+ }
6886
+ createPopoutWindowContainer() {
6887
+ const el = document.createElement('div');
6888
+ el.classList.add('dv-popout-window');
6889
+ el.id = 'dv-popout-window';
6890
+ el.style.position = 'absolute';
6891
+ el.style.width = '100%';
6892
+ el.style.height = '100%';
6893
+ el.style.top = '0px';
6894
+ el.style.left = '0px';
6895
+ return el;
6896
+ }
6897
+ }
6898
+
6539
6899
  const DEFAULT_ROOT_OVERLAY_MODEL = {
6540
6900
  activationSize: { type: 'pixels', value: 10 },
6541
6901
  size: { type: 'pixels', value: 20 },
6542
6902
  };
6543
- function getTheme(element) {
6903
+ function moveGroupWithoutDestroying(options) {
6904
+ const activePanel = options.from.activePanel;
6905
+ const panels = [...options.from.panels].map((panel) => {
6906
+ const removedPanel = options.from.model.removePanel(panel);
6907
+ options.from.model.renderContainer.detatch(panel);
6908
+ return removedPanel;
6909
+ });
6910
+ panels.forEach((panel) => {
6911
+ options.to.model.openPanel(panel, {
6912
+ skipSetActive: activePanel !== panel,
6913
+ skipSetGroupActive: true,
6914
+ });
6915
+ });
6916
+ }
6917
+ function getDockviewTheme(element) {
6544
6918
  function toClassList(element) {
6545
6919
  const list = [];
6546
6920
  for (let i = 0; i < element.classList.length; i++) {
@@ -6591,6 +6965,7 @@
6591
6965
  styles: options.styles,
6592
6966
  parentElement: options.parentElement,
6593
6967
  disableAutoResizing: options.disableAutoResizing,
6968
+ locked: options.locked,
6594
6969
  });
6595
6970
  this.nextGroupId = sequentialNumberGenerator();
6596
6971
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -6601,6 +6976,10 @@
6601
6976
  this.onWillDragGroup = this._onWillDragGroup.event;
6602
6977
  this._onDidDrop = new Emitter();
6603
6978
  this.onDidDrop = this._onDidDrop.event;
6979
+ this._onWillDrop = new Emitter();
6980
+ this.onWillDrop = this._onWillDrop.event;
6981
+ this._onWillShowOverlay = new Emitter();
6982
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
6604
6983
  this._onDidRemovePanel = new Emitter();
6605
6984
  this.onDidRemovePanel = this._onDidRemovePanel.event;
6606
6985
  this._onDidAddPanel = new Emitter();
@@ -6609,15 +6988,36 @@
6609
6988
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
6610
6989
  this._onDidActivePanelChange = new Emitter();
6611
6990
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
6991
+ this._onDidMovePanel = new Emitter();
6612
6992
  this._floatingGroups = [];
6613
6993
  this._popoutGroups = [];
6994
+ this._ignoreEvents = 0;
6995
+ this._onDidRemoveGroup = new Emitter();
6996
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
6997
+ this._onDidAddGroup = new Emitter();
6998
+ this.onDidAddGroup = this._onDidAddGroup.event;
6999
+ this._onDidActiveGroupChange = new Emitter();
7000
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7001
+ this._moving = false;
6614
7002
  const gready = document.createElement('div');
6615
7003
  gready.className = 'dv-overlay-render-container';
6616
7004
  this.gridview.element.appendChild(gready);
6617
7005
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
6618
7006
  toggleClass(this.gridview.element, 'dv-dockview', true);
6619
7007
  toggleClass(this.element, 'dv-debug', !!options.debug);
6620
- 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)(() => {
7008
+ 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) => {
7009
+ if (!this._moving) {
7010
+ this._onDidAddGroup.fire(event);
7011
+ }
7012
+ }), this.onDidRemove((event) => {
7013
+ if (!this._moving) {
7014
+ this._onDidRemoveGroup.fire(event);
7015
+ }
7016
+ }), this.onDidActiveChange((event) => {
7017
+ if (!this._moving) {
7018
+ this._onDidActiveGroupChange.fire(event);
7019
+ }
7020
+ }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
6621
7021
  this.updateWatermark();
6622
7022
  }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
6623
7023
  this._bufferOnDidLayoutChange.fire();
@@ -6628,7 +7028,7 @@
6628
7028
  }
6629
7029
  // iterate over a copy of the array since .dispose() mutates the original array
6630
7030
  for (const group of [...this._popoutGroups]) {
6631
- group.dispose();
7031
+ group.disposable.dispose();
6632
7032
  }
6633
7033
  }));
6634
7034
  this._options = options;
@@ -6674,7 +7074,7 @@
6674
7074
  return this.options.showDndOverlay({
6675
7075
  nativeEvent: event,
6676
7076
  position: position,
6677
- target: exports.DockviewDropTargets.Edge,
7077
+ target: 'edge',
6678
7078
  getData: getPanelData,
6679
7079
  });
6680
7080
  }
@@ -6685,86 +7085,249 @@
6685
7085
  });
6686
7086
  this.addDisposables(this._rootDropTarget.onDrop((event) => {
6687
7087
  var _a;
7088
+ const willDropEvent = new DockviewWillDropEvent({
7089
+ nativeEvent: event.nativeEvent,
7090
+ position: event.position,
7091
+ panel: undefined,
7092
+ api: this._api,
7093
+ group: undefined,
7094
+ getData: getPanelData,
7095
+ kind: 'content',
7096
+ });
7097
+ this._onWillDrop.fire(willDropEvent);
7098
+ if (willDropEvent.defaultPrevented) {
7099
+ return;
7100
+ }
6688
7101
  const data = getPanelData();
6689
7102
  if (data) {
6690
- this.moveGroupOrPanel(this.orthogonalize(event.position), data.groupId, (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined, 'center');
7103
+ this.moveGroupOrPanel({
7104
+ from: {
7105
+ groupId: data.groupId,
7106
+ panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,
7107
+ },
7108
+ to: {
7109
+ group: this.orthogonalize(event.position),
7110
+ position: 'center',
7111
+ },
7112
+ });
6691
7113
  }
6692
7114
  else {
6693
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: null, getData: getPanelData }));
7115
+ this._onDidDrop.fire(new DockviewDidDropEvent({
7116
+ nativeEvent: event.nativeEvent,
7117
+ position: event.position,
7118
+ panel: undefined,
7119
+ api: this._api,
7120
+ group: undefined,
7121
+ getData: getPanelData,
7122
+ }));
6694
7123
  }
6695
7124
  }), this._rootDropTarget);
6696
7125
  this._api = new DockviewApi(this);
6697
7126
  this.updateWatermark();
6698
7127
  }
6699
- addPopoutGroup(item, options) {
6700
- var _a;
6701
- let group;
6702
- let box = options === null || options === void 0 ? void 0 : options.position;
6703
- if (item instanceof DockviewPanel) {
6704
- group = this.createGroup();
6705
- this.removePanel(item, {
6706
- removeEmptyGroup: true,
6707
- skipDispose: true,
6708
- });
6709
- group.model.openPanel(item);
6710
- if (!box) {
6711
- box = this.element.getBoundingClientRect();
7128
+ addPopoutGroup(itemToPopout, options) {
7129
+ var _a, _b, _c;
7130
+ if (itemToPopout instanceof DockviewPanel &&
7131
+ itemToPopout.group.size === 1) {
7132
+ return this.addPopoutGroup(itemToPopout.group);
7133
+ }
7134
+ const theme = getDockviewTheme(this.gridview.element);
7135
+ const element = this.element;
7136
+ function getBox() {
7137
+ if (options === null || options === void 0 ? void 0 : options.position) {
7138
+ return options.position;
7139
+ }
7140
+ if (itemToPopout instanceof DockviewGroupPanel) {
7141
+ return itemToPopout.element.getBoundingClientRect();
7142
+ }
7143
+ if (itemToPopout.group) {
7144
+ return itemToPopout.group.element.getBoundingClientRect();
7145
+ }
7146
+ return element.getBoundingClientRect();
7147
+ }
7148
+ const box = getBox();
7149
+ 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;
7150
+ if (itemToPopout.api.location.type === 'grid') {
7151
+ itemToPopout.api.setHidden(true);
7152
+ }
7153
+ const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7154
+ theme !== null && theme !== void 0 ? theme : '', {
7155
+ url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
7156
+ left: window.screenX + box.left,
7157
+ top: window.screenY + box.top,
7158
+ width: box.width,
7159
+ height: box.height,
7160
+ onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,
7161
+ onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,
7162
+ });
7163
+ const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {
7164
+ popoutWindowDisposable.dispose();
7165
+ }));
7166
+ return _window
7167
+ .open()
7168
+ .then((popoutContainer) => {
7169
+ var _a;
7170
+ if (_window.isDisposed) {
7171
+ return;
6712
7172
  }
6713
- }
6714
- else {
6715
- group = item;
6716
- if (!box) {
6717
- box = group.element.getBoundingClientRect();
7173
+ if (popoutContainer === null) {
7174
+ popoutWindowDisposable.dispose();
7175
+ return;
6718
7176
  }
6719
- const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6720
- options.skipRemoveGroup;
6721
- if (!skip) {
6722
- this.doRemoveGroup(item, { skipDispose: true });
6723
- }
6724
- }
6725
- const theme = getTheme(this.gridview.element);
6726
- const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
6727
- group, {
6728
- className: theme !== null && theme !== void 0 ? theme : '',
6729
- popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
6730
- box: {
6731
- left: window.screenX + box.left,
6732
- top: window.screenY + box.top,
6733
- width: box.width,
6734
- height: box.height,
6735
- },
7177
+ const gready = document.createElement('div');
7178
+ gready.className = 'dv-overlay-render-container';
7179
+ const overlayRenderContainer = new OverlayRenderContainer(gready);
7180
+ const referenceGroup = itemToPopout instanceof DockviewPanel
7181
+ ? itemToPopout.group
7182
+ : itemToPopout;
7183
+ const referenceLocation = itemToPopout.api.location.type;
7184
+ const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
7185
+ group.model.renderContainer = overlayRenderContainer;
7186
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
7187
+ this._onDidAddGroup.fire(group);
7188
+ }
7189
+ if (itemToPopout instanceof DockviewPanel) {
7190
+ this.movingLock(() => {
7191
+ const panel = referenceGroup.model.removePanel(itemToPopout);
7192
+ group.model.openPanel(panel);
7193
+ });
7194
+ }
7195
+ else {
7196
+ this.movingLock(() => moveGroupWithoutDestroying({
7197
+ from: referenceGroup,
7198
+ to: group,
7199
+ }));
7200
+ switch (referenceLocation) {
7201
+ case 'grid':
7202
+ referenceGroup.api.setHidden(true);
7203
+ break;
7204
+ case 'floating':
7205
+ case 'popout':
7206
+ this.removeGroup(referenceGroup);
7207
+ break;
7208
+ }
7209
+ }
7210
+ popoutContainer.classList.add('dv-dockview');
7211
+ popoutContainer.style.overflow = 'hidden';
7212
+ popoutContainer.appendChild(gready);
7213
+ popoutContainer.appendChild(group.element);
7214
+ group.model.location = {
7215
+ type: 'popout',
7216
+ getWindow: () => _window.window,
7217
+ };
7218
+ this.doSetGroupAndPanelActive(group);
7219
+ popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
7220
+ var _a;
7221
+ if (event.isActive) {
7222
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7223
+ }
7224
+ }), group.api.onWillFocus(() => {
7225
+ var _a;
7226
+ (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7227
+ }));
7228
+ let returnedGroup;
7229
+ const value = {
7230
+ window: _window,
7231
+ popoutGroup: group,
7232
+ referenceGroup: this.getPanel(referenceGroup.id)
7233
+ ? referenceGroup.id
7234
+ : undefined,
7235
+ disposable: {
7236
+ dispose: () => {
7237
+ popoutWindowDisposable.dispose();
7238
+ return returnedGroup;
7239
+ },
7240
+ },
7241
+ };
7242
+ popoutWindowDisposable.addDisposables(
7243
+ /**
7244
+ * ResizeObserver seems slow here, I do not know why but we don't need it
7245
+ * since we can reply on the window resize event as we will occupy the full
7246
+ * window dimensions
7247
+ */
7248
+ addDisposableWindowListener(_window.window, 'resize', () => {
7249
+ group.layout(window.innerWidth, window.innerHeight);
7250
+ }), overlayRenderContainer, Disposable.from(() => {
7251
+ if (this.getPanel(referenceGroup.id)) {
7252
+ this.movingLock(() => moveGroupWithoutDestroying({
7253
+ from: group,
7254
+ to: referenceGroup,
7255
+ }));
7256
+ if (referenceGroup.api.isHidden) {
7257
+ referenceGroup.api.setHidden(false);
7258
+ }
7259
+ if (this.getPanel(group.id)) {
7260
+ this.doRemoveGroup(group, {
7261
+ skipPopoutAssociated: true,
7262
+ });
7263
+ }
7264
+ }
7265
+ else {
7266
+ if (this.getPanel(group.id)) {
7267
+ const removedGroup = this.doRemoveGroup(group, {
7268
+ skipDispose: true,
7269
+ skipActive: true,
7270
+ });
7271
+ removedGroup.model.renderContainer =
7272
+ this.overlayRenderContainer;
7273
+ removedGroup.model.location = { type: 'grid' };
7274
+ returnedGroup = removedGroup;
7275
+ }
7276
+ }
7277
+ }));
7278
+ this._popoutGroups.push(value);
7279
+ this.updateWatermark();
7280
+ })
7281
+ .catch((err) => {
7282
+ console.error(err);
6736
7283
  });
6737
- popoutWindow.addDisposables({
6738
- dispose: () => {
6739
- remove(this._popoutGroups, popoutWindow);
6740
- this.updateWatermark();
6741
- },
6742
- }, popoutWindow.window.onDidClose(() => {
6743
- this.doAddGroup(group, [0]);
6744
- }));
6745
- this._popoutGroups.push(popoutWindow);
6746
- this.updateWatermark();
6747
7284
  }
6748
7285
  addFloatingGroup(item, coord, options) {
6749
- var _a, _b, _c, _d, _e, _f;
7286
+ var _a, _b, _c, _d, _e, _f, _g;
6750
7287
  let group;
6751
7288
  if (item instanceof DockviewPanel) {
6752
7289
  group = this.createGroup();
6753
- this.removePanel(item, {
7290
+ this._onDidAddGroup.fire(group);
7291
+ this.movingLock(() => this.removePanel(item, {
6754
7292
  removeEmptyGroup: true,
6755
7293
  skipDispose: true,
6756
- });
6757
- group.model.openPanel(item);
7294
+ skipSetActiveGroup: true,
7295
+ }));
7296
+ group.model.openPanel(item, { skipSetGroupActive: true });
6758
7297
  }
6759
7298
  else {
6760
7299
  group = item;
7300
+ const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;
7301
+ const popoutReferenceGroup = popoutReferenceGroupId
7302
+ ? this.getPanel(popoutReferenceGroupId)
7303
+ : undefined;
6761
7304
  const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6762
7305
  options.skipRemoveGroup;
6763
7306
  if (!skip) {
6764
- this.doRemoveGroup(item, { skipDispose: true });
7307
+ if (popoutReferenceGroup) {
7308
+ this.movingLock(() => moveGroupWithoutDestroying({
7309
+ from: item,
7310
+ to: popoutReferenceGroup,
7311
+ }));
7312
+ this.doRemoveGroup(item, {
7313
+ skipPopoutReturn: true,
7314
+ skipPopoutAssociated: true,
7315
+ });
7316
+ this.doRemoveGroup(popoutReferenceGroup, {
7317
+ skipDispose: true,
7318
+ });
7319
+ group = popoutReferenceGroup;
7320
+ }
7321
+ else {
7322
+ this.doRemoveGroup(item, {
7323
+ skipDispose: true,
7324
+ skipPopoutReturn: true,
7325
+ skipPopoutAssociated: !!popoutReferenceGroup,
7326
+ });
7327
+ }
6765
7328
  }
6766
7329
  }
6767
- group.model.location = 'floating';
7330
+ group.model.location = { type: 'floating' };
6768
7331
  const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
6769
7332
  ? Math.max(coord.x, 0)
6770
7333
  : DEFAULT_FLOATING_GROUP_POSITION.left;
@@ -6774,16 +7337,16 @@
6774
7337
  const overlay = new Overlay({
6775
7338
  container: this.gridview.element,
6776
7339
  content: group.element,
6777
- height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
6778
- width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
7340
+ height: (_b = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _b !== void 0 ? _b : 300,
7341
+ width: (_c = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _c !== void 0 ? _c : 300,
6779
7342
  left: overlayLeft,
6780
7343
  top: overlayTop,
6781
7344
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
6782
7345
  ? undefined
6783
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7346
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6784
7347
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
6785
7348
  ? undefined
6786
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7349
+ : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6787
7350
  });
6788
7351
  const el = group.element.querySelector('.void-container');
6789
7352
  if (!el) {
@@ -6814,12 +7377,15 @@
6814
7377
  }), {
6815
7378
  dispose: () => {
6816
7379
  disposable.dispose();
6817
- group.model.location = 'grid';
7380
+ group.model.location = { type: 'grid' };
6818
7381
  remove(this._floatingGroups, floatingGroupPanel);
6819
7382
  this.updateWatermark();
6820
7383
  },
6821
7384
  });
6822
7385
  this._floatingGroups.push(floatingGroupPanel);
7386
+ if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
7387
+ this.doSetGroupAndPanelActive(group);
7388
+ }
6823
7389
  this.updateWatermark();
6824
7390
  }
6825
7391
  orthogonalize(position) {
@@ -6909,8 +7475,8 @@
6909
7475
  return this.panels.find((panel) => panel.id === id);
6910
7476
  }
6911
7477
  setActivePanel(panel) {
6912
- this.doSetGroupActive(panel.group);
6913
7478
  panel.group.model.openPanel(panel);
7479
+ this.doSetGroupAndPanelActive(panel.group);
6914
7480
  }
6915
7481
  moveToNext(options = {}) {
6916
7482
  var _a;
@@ -6971,7 +7537,8 @@
6971
7537
  });
6972
7538
  const popoutGroups = this._popoutGroups.map((group) => {
6973
7539
  return {
6974
- data: group.group.toJSON(),
7540
+ data: group.popoutGroup.toJSON(),
7541
+ gridReferenceGroup: group.referenceGroup,
6975
7542
  position: group.window.dimensions(),
6976
7543
  };
6977
7544
  });
@@ -6989,7 +7556,7 @@
6989
7556
  return result;
6990
7557
  }
6991
7558
  fromJSON(data) {
6992
- var _a, _b;
7559
+ var _a, _b, _c;
6993
7560
  this.clear();
6994
7561
  if (typeof data !== 'object' || data === null) {
6995
7562
  throw new Error('serialized layout must be a non-null object');
@@ -7028,7 +7595,7 @@
7028
7595
  const isActive = typeof activeView === 'string' &&
7029
7596
  activeView === panel.id;
7030
7597
  group.model.openPanel(panel, {
7031
- skipSetPanelActive: !isActive,
7598
+ skipSetActive: !isActive,
7032
7599
  skipSetGroupActive: true,
7033
7600
  });
7034
7601
  }
@@ -7058,11 +7625,16 @@
7058
7625
  }
7059
7626
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7060
7627
  for (const serializedPopoutGroup of serializedPopoutGroups) {
7061
- const { data, position } = serializedPopoutGroup;
7628
+ const { data, position, gridReferenceGroup } = serializedPopoutGroup;
7062
7629
  const group = createGroupFromSerializedState(data);
7063
- this.addPopoutGroup(group, {
7630
+ this.addPopoutGroup((_c = (gridReferenceGroup
7631
+ ? this.getPanel(gridReferenceGroup)
7632
+ : undefined)) !== null && _c !== void 0 ? _c : group, {
7064
7633
  skipRemoveGroup: true,
7065
7634
  position: position !== null && position !== void 0 ? position : undefined,
7635
+ overridePopoutGroup: gridReferenceGroup
7636
+ ? group
7637
+ : undefined,
7066
7638
  });
7067
7639
  }
7068
7640
  for (const floatingGroup of this._floatingGroups) {
@@ -7109,12 +7681,13 @@
7109
7681
  */
7110
7682
  throw err;
7111
7683
  }
7684
+ this.updateWatermark();
7112
7685
  this._onDidLayoutFromJSON.fire();
7113
7686
  }
7114
7687
  clear() {
7115
7688
  const groups = Array.from(this._groups.values()).map((_) => _.value);
7116
7689
  const hasActiveGroup = !!this.activeGroup;
7117
- const hasActivePanel = !!this.activePanel;
7690
+ !!this.activePanel;
7118
7691
  for (const group of groups) {
7119
7692
  // remove the group will automatically remove the panels
7120
7693
  this.removeGroup(group, { skipActive: true });
@@ -7122,9 +7695,6 @@
7122
7695
  if (hasActiveGroup) {
7123
7696
  this.doSetGroupAndPanelActive(undefined);
7124
7697
  }
7125
- if (hasActivePanel) {
7126
- this._onDidActivePanelChange.fire(undefined);
7127
- }
7128
7698
  this.gridview.clear();
7129
7699
  }
7130
7700
  closeAllGroups() {
@@ -7165,6 +7735,7 @@
7165
7735
  const group = this.orthogonalize(directionToPosition(options.position.direction));
7166
7736
  const panel = this.createPanel(options, group);
7167
7737
  group.model.openPanel(panel);
7738
+ this.doSetGroupAndPanelActive(group);
7168
7739
  return panel;
7169
7740
  }
7170
7741
  }
@@ -7176,6 +7747,7 @@
7176
7747
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
7177
7748
  if (options.floating) {
7178
7749
  const group = this.createGroup();
7750
+ this._onDidAddGroup.fire(group);
7179
7751
  const o = typeof options.floating === 'object' &&
7180
7752
  options.floating !== null
7181
7753
  ? options.floating
@@ -7183,16 +7755,16 @@
7183
7755
  this.addFloatingGroup(group, o, {
7184
7756
  inDragMode: false,
7185
7757
  skipRemoveGroup: true,
7758
+ skipActiveGroup: true,
7186
7759
  });
7187
- this._onDidAddGroup.fire(group);
7188
7760
  panel = this.createPanel(options, group);
7189
7761
  group.model.openPanel(panel);
7190
- this.doSetGroupAndPanelActive(group);
7191
7762
  }
7192
- else if (referenceGroup.api.location === 'floating' ||
7763
+ else if (referenceGroup.api.location.type === 'floating' ||
7193
7764
  target === 'center') {
7194
7765
  panel = this.createPanel(options, referenceGroup);
7195
7766
  referenceGroup.model.openPanel(panel);
7767
+ this.doSetGroupAndPanelActive(referenceGroup);
7196
7768
  }
7197
7769
  else {
7198
7770
  const location = getGridLocation(referenceGroup.element);
@@ -7200,10 +7772,12 @@
7200
7772
  const group = this.createGroupAtLocation(relativeLocation);
7201
7773
  panel = this.createPanel(options, group);
7202
7774
  group.model.openPanel(panel);
7775
+ this.doSetGroupAndPanelActive(group);
7203
7776
  }
7204
7777
  }
7205
7778
  else if (options.floating) {
7206
7779
  const group = this.createGroup();
7780
+ this._onDidAddGroup.fire(group);
7207
7781
  const o = typeof options.floating === 'object' &&
7208
7782
  options.floating !== null
7209
7783
  ? options.floating
@@ -7211,16 +7785,16 @@
7211
7785
  this.addFloatingGroup(group, o, {
7212
7786
  inDragMode: false,
7213
7787
  skipRemoveGroup: true,
7788
+ skipActiveGroup: true,
7214
7789
  });
7215
- this._onDidAddGroup.fire(group);
7216
7790
  panel = this.createPanel(options, group);
7217
7791
  group.model.openPanel(panel);
7218
- this.doSetGroupAndPanelActive(group);
7219
7792
  }
7220
7793
  else {
7221
7794
  const group = this.createGroupAtLocation();
7222
7795
  panel = this.createPanel(options, group);
7223
7796
  group.model.openPanel(panel);
7797
+ this.doSetGroupAndPanelActive(group);
7224
7798
  }
7225
7799
  return panel;
7226
7800
  }
@@ -7232,13 +7806,15 @@
7232
7806
  if (!group) {
7233
7807
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
7234
7808
  }
7235
- group.model.removePanel(panel);
7809
+ group.model.removePanel(panel, {
7810
+ skipSetActiveGroup: options.skipSetActiveGroup,
7811
+ });
7236
7812
  if (!options.skipDispose) {
7237
- this.overlayRenderContainer.detatch(panel);
7813
+ panel.group.model.renderContainer.detatch(panel);
7238
7814
  panel.dispose();
7239
7815
  }
7240
7816
  if (group.size === 0 && options.removeEmptyGroup) {
7241
- this.removeGroup(group);
7817
+ this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
7242
7818
  }
7243
7819
  }
7244
7820
  createWatermarkComponent() {
@@ -7251,7 +7827,7 @@
7251
7827
  }
7252
7828
  updateWatermark() {
7253
7829
  var _a, _b;
7254
- if (this.groups.filter((x) => x.api.location === 'grid').length === 0) {
7830
+ if (this.groups.filter((x) => x.api.location.type === 'grid' && !x.api.isHidden).length === 0) {
7255
7831
  if (!this.watermark) {
7256
7832
  this.watermark = this.createWatermarkComponent();
7257
7833
  this.watermark.init({
@@ -7271,7 +7847,7 @@
7271
7847
  }
7272
7848
  addGroup(options) {
7273
7849
  var _a;
7274
- const group = this.createGroup();
7850
+ const group = this.createGroup(options);
7275
7851
  if (options) {
7276
7852
  let referenceGroup;
7277
7853
  if (isGroupOptionsWithPanel(options)) {
@@ -7297,36 +7873,42 @@
7297
7873
  }
7298
7874
  else {
7299
7875
  const group = this.orthogonalize(directionToPosition(options.direction));
7876
+ if (!options.skipSetActive) {
7877
+ this.doSetGroupAndPanelActive(group);
7878
+ }
7300
7879
  return group;
7301
7880
  }
7302
7881
  const target = toTarget(options.direction || 'within');
7303
7882
  const location = getGridLocation(referenceGroup.element);
7304
7883
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
7305
7884
  this.doAddGroup(group, relativeLocation);
7885
+ if (!options.skipSetActive) {
7886
+ this.doSetGroupAndPanelActive(group);
7887
+ }
7306
7888
  return group;
7307
7889
  }
7308
7890
  else {
7309
7891
  this.doAddGroup(group);
7892
+ this.doSetGroupAndPanelActive(group);
7310
7893
  return group;
7311
7894
  }
7312
7895
  }
7313
7896
  removeGroup(group, options) {
7897
+ this.doRemoveGroup(group, options);
7898
+ }
7899
+ doRemoveGroup(group, options) {
7314
7900
  var _a;
7315
7901
  const panels = [...group.panels]; // reassign since group panels will mutate
7316
- for (const panel of panels) {
7317
- this.removePanel(panel, {
7318
- removeEmptyGroup: false,
7319
- skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7320
- });
7902
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7903
+ for (const panel of panels) {
7904
+ this.removePanel(panel, {
7905
+ removeEmptyGroup: false,
7906
+ skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7907
+ });
7908
+ }
7321
7909
  }
7322
7910
  const activePanel = this.activePanel;
7323
- this.doRemoveGroup(group, options);
7324
- if (this.activePanel !== activePanel) {
7325
- this._onDidActivePanelChange.fire(this.activePanel);
7326
- }
7327
- }
7328
- doRemoveGroup(group, options) {
7329
- if (group.api.location === 'floating') {
7911
+ if (group.api.location.type === 'floating') {
7330
7912
  const floatingGroup = this._floatingGroups.find((_) => _.group === group);
7331
7913
  if (floatingGroup) {
7332
7914
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -7338,60 +7920,124 @@
7338
7920
  floatingGroup.dispose();
7339
7921
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7340
7922
  const groups = Array.from(this._groups.values());
7341
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7923
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7342
7924
  }
7343
7925
  return floatingGroup.group;
7344
7926
  }
7345
7927
  throw new Error('failed to find floating group');
7346
7928
  }
7347
- if (group.api.location === 'popout') {
7348
- const selectedGroup = this._popoutGroups.find((_) => _.group === group);
7929
+ if (group.api.location.type === 'popout') {
7930
+ const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
7349
7931
  if (selectedGroup) {
7350
7932
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7351
- selectedGroup.group.dispose();
7933
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {
7934
+ const refGroup = selectedGroup.referenceGroup
7935
+ ? this.getPanel(selectedGroup.referenceGroup)
7936
+ : undefined;
7937
+ if (refGroup) {
7938
+ this.removeGroup(refGroup);
7939
+ }
7940
+ }
7941
+ selectedGroup.popoutGroup.dispose();
7352
7942
  this._groups.delete(group.id);
7353
7943
  this._onDidRemoveGroup.fire(group);
7354
7944
  }
7355
- selectedGroup.dispose();
7945
+ const removedGroup = selectedGroup.disposable.dispose();
7946
+ if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
7947
+ this.doAddGroup(removedGroup, [0]);
7948
+ this.doSetGroupAndPanelActive(removedGroup);
7949
+ }
7356
7950
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7357
7951
  const groups = Array.from(this._groups.values());
7358
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7952
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7359
7953
  }
7360
- return selectedGroup.group;
7954
+ this.updateWatermark();
7955
+ return selectedGroup.popoutGroup;
7361
7956
  }
7362
7957
  throw new Error('failed to find popout group');
7363
7958
  }
7364
- return super.doRemoveGroup(group, options);
7959
+ const re = super.doRemoveGroup(group, options);
7960
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {
7961
+ if (this.activePanel !== activePanel) {
7962
+ this._onDidActivePanelChange.fire(this.activePanel);
7963
+ }
7964
+ }
7965
+ return re;
7365
7966
  }
7366
- moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
7367
- var _a, _b, _c;
7967
+ movingLock(func) {
7968
+ const isMoving = this._moving;
7969
+ try {
7970
+ this._moving = true;
7971
+ return func();
7972
+ }
7973
+ finally {
7974
+ this._moving = isMoving;
7975
+ }
7976
+ }
7977
+ moveGroupOrPanel(options) {
7978
+ var _a;
7979
+ const destinationGroup = options.to.group;
7980
+ const sourceGroupId = options.from.groupId;
7981
+ const sourceItemId = options.from.panelId;
7982
+ const destinationTarget = options.to.position;
7983
+ const destinationIndex = options.to.index;
7368
7984
  const sourceGroup = sourceGroupId
7369
7985
  ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
7370
7986
  : undefined;
7987
+ if (!sourceGroup) {
7988
+ throw new Error(`Failed to find group id ${sourceGroupId}`);
7989
+ }
7371
7990
  if (sourceItemId === undefined) {
7372
- if (sourceGroup) {
7373
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
7374
- }
7991
+ /**
7992
+ * Moving an entire group into another group
7993
+ */
7994
+ this.moveGroup({
7995
+ from: { group: sourceGroup },
7996
+ to: {
7997
+ group: destinationGroup,
7998
+ position: destinationTarget,
7999
+ },
8000
+ });
7375
8001
  return;
7376
8002
  }
7377
8003
  if (!destinationTarget || destinationTarget === 'center') {
7378
- 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);
7379
- if (!groupItem) {
8004
+ /**
8005
+ * Dropping a panel within another group
8006
+ */
8007
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8008
+ skipSetActive: false,
8009
+ skipSetActiveGroup: true,
8010
+ }));
8011
+ if (!removedPanel) {
7380
8012
  throw new Error(`No panel with id ${sourceItemId}`);
7381
8013
  }
7382
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7383
- this.doRemoveGroup(sourceGroup);
8014
+ if (sourceGroup.model.size === 0) {
8015
+ // remove the group and do not set a new group as active
8016
+ this.doRemoveGroup(sourceGroup, { skipActive: true });
7384
8017
  }
7385
- destinationGroup.model.openPanel(groupItem, {
8018
+ this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
7386
8019
  index: destinationIndex,
8020
+ skipSetGroupActive: true,
8021
+ }));
8022
+ this.doSetGroupAndPanelActive(destinationGroup);
8023
+ this._onDidMovePanel.fire({
8024
+ panel: removedPanel,
7387
8025
  });
7388
8026
  }
7389
8027
  else {
8028
+ /**
8029
+ * Dropping a panel to the extremities of a group which will place that panel
8030
+ * into an adjacent group
8031
+ */
7390
8032
  const referenceLocation = getGridLocation(destinationGroup.element);
7391
8033
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7392
- if (sourceGroup && sourceGroup.size < 2) {
8034
+ if (sourceGroup.size < 2) {
8035
+ /**
8036
+ * If we are moving from a group which only has one panel left we will consider
8037
+ * moving the group itself rather than moving the panel into a newly created group
8038
+ */
7393
8039
  const [targetParentLocation, to] = tail(targetLocation);
7394
- if (sourceGroup.api.location === 'grid') {
8040
+ if (sourceGroup.api.location.type === 'grid') {
7395
8041
  const sourceLocation = getGridLocation(sourceGroup.element);
7396
8042
  const [sourceParentLocation, from] = tail(sourceLocation);
7397
8043
  if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
@@ -7399,78 +8045,123 @@
7399
8045
  // if a group has one tab - we are essentially moving the 'group'
7400
8046
  // which is equivalent to swapping two views in this case
7401
8047
  this.gridview.moveView(sourceParentLocation, from, to);
8048
+ return;
7402
8049
  }
7403
8050
  }
7404
8051
  // source group will become empty so delete the group
7405
- const targetGroup = this.doRemoveGroup(sourceGroup, {
8052
+ const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
7406
8053
  skipActive: true,
7407
8054
  skipDispose: true,
7408
- });
8055
+ }));
7409
8056
  // after deleting the group we need to re-evaulate the ref location
7410
8057
  const updatedReferenceLocation = getGridLocation(destinationGroup.element);
7411
8058
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
7412
- this.doAddGroup(targetGroup, location);
8059
+ this.movingLock(() => this.doAddGroup(targetGroup, location));
8060
+ this.doSetGroupAndPanelActive(targetGroup);
7413
8061
  }
7414
8062
  else {
7415
- 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);
7416
- if (!groupItem) {
8063
+ /**
8064
+ * The group we are removing from has many panels, we need to remove the panels we are moving,
8065
+ * create a new group, add the panels to that new group and add the new group in an appropiate position
8066
+ */
8067
+ const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {
8068
+ skipSetActive: false,
8069
+ skipSetActiveGroup: true,
8070
+ }));
8071
+ if (!removedPanel) {
7417
8072
  throw new Error(`No panel with id ${sourceItemId}`);
7418
8073
  }
7419
8074
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7420
8075
  const group = this.createGroupAtLocation(dropLocation);
7421
- group.model.openPanel(groupItem);
8076
+ this.movingLock(() => group.model.openPanel(removedPanel, {
8077
+ skipSetGroupActive: true,
8078
+ }));
8079
+ this.doSetGroupAndPanelActive(group);
7422
8080
  }
7423
8081
  }
7424
8082
  }
7425
- moveGroup(sourceGroup, referenceGroup, target) {
7426
- if (sourceGroup) {
7427
- if (!target || target === 'center') {
7428
- const activePanel = sourceGroup.activePanel;
7429
- const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));
7430
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7431
- this.doRemoveGroup(sourceGroup);
7432
- }
8083
+ moveGroup(options) {
8084
+ const from = options.from.group;
8085
+ const to = options.to.group;
8086
+ const target = options.to.position;
8087
+ if (target === 'center') {
8088
+ const activePanel = from.activePanel;
8089
+ const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {
8090
+ skipSetActive: true,
8091
+ })));
8092
+ if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {
8093
+ this.doRemoveGroup(from, { skipActive: true });
8094
+ }
8095
+ this.movingLock(() => {
7433
8096
  for (const panel of panels) {
7434
- referenceGroup.model.openPanel(panel, {
7435
- skipSetPanelActive: panel !== activePanel,
8097
+ to.model.openPanel(panel, {
8098
+ skipSetActive: panel !== activePanel,
8099
+ skipSetGroupActive: true,
7436
8100
  });
7437
8101
  }
7438
- }
7439
- else {
7440
- switch (sourceGroup.api.location) {
7441
- case 'grid':
7442
- this.gridview.removeView(getGridLocation(sourceGroup.element));
7443
- break;
7444
- case 'floating': {
7445
- const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
7446
- if (!selectedFloatingGroup) {
7447
- throw new Error('failed to find floating group');
7448
- }
7449
- selectedFloatingGroup.dispose();
7450
- break;
8102
+ });
8103
+ this.doSetGroupAndPanelActive(to);
8104
+ panels.forEach((panel) => {
8105
+ this._onDidMovePanel.fire({ panel });
8106
+ });
8107
+ }
8108
+ else {
8109
+ switch (from.api.location.type) {
8110
+ case 'grid':
8111
+ this.gridview.removeView(getGridLocation(from.element));
8112
+ break;
8113
+ case 'floating': {
8114
+ const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);
8115
+ if (!selectedFloatingGroup) {
8116
+ throw new Error('failed to find floating group');
7451
8117
  }
7452
- case 'popout': {
7453
- const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
7454
- if (!selectedPopoutGroup) {
7455
- throw new Error('failed to find popout group');
7456
- }
7457
- selectedPopoutGroup.dispose();
8118
+ selectedFloatingGroup.dispose();
8119
+ break;
8120
+ }
8121
+ case 'popout': {
8122
+ const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);
8123
+ if (!selectedPopoutGroup) {
8124
+ throw new Error('failed to find popout group');
7458
8125
  }
8126
+ selectedPopoutGroup.disposable.dispose();
7459
8127
  }
7460
- const referenceLocation = getGridLocation(referenceGroup.element);
7461
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
7462
- this.gridview.addView(sourceGroup, exports.Sizing.Distribute, dropLocation);
7463
8128
  }
8129
+ const referenceLocation = getGridLocation(to.element);
8130
+ const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
8131
+ this.gridview.addView(from, exports.Sizing.Distribute, dropLocation);
8132
+ from.panels.forEach((panel) => {
8133
+ this._onDidMovePanel.fire({ panel });
8134
+ });
7464
8135
  }
7465
8136
  }
7466
- doSetGroupAndPanelActive(group, skipFocus) {
7467
- var _a, _b;
8137
+ doSetGroupActive(group) {
8138
+ super.doSetGroupActive(group);
8139
+ const activePanel = this.activePanel;
8140
+ if (!this._moving &&
8141
+ activePanel !== this._onDidActivePanelChange.value) {
8142
+ this._onDidActivePanelChange.fire(activePanel);
8143
+ }
8144
+ }
8145
+ doSetGroupAndPanelActive(group) {
8146
+ super.doSetGroupActive(group);
7468
8147
  const activePanel = this.activePanel;
7469
- super.doSetGroupActive(group, skipFocus);
7470
- if (((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel) !== activePanel) {
7471
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
8148
+ if (group &&
8149
+ this.hasMaximizedGroup() &&
8150
+ !this.isMaximizedGroup(group)) {
8151
+ this.exitMaximizedGroup();
8152
+ }
8153
+ if (!this._moving &&
8154
+ activePanel !== this._onDidActivePanelChange.value) {
8155
+ this._onDidActivePanelChange.fire(activePanel);
7472
8156
  }
7473
8157
  }
8158
+ getNextGroupId() {
8159
+ let id = this.nextGroupId.next();
8160
+ while (this._groups.has(id)) {
8161
+ id = this.nextGroupId.next();
8162
+ }
8163
+ return id;
8164
+ }
7474
8165
  createGroup(options) {
7475
8166
  if (!options) {
7476
8167
  options = {};
@@ -7487,7 +8178,7 @@
7487
8178
  }
7488
8179
  }
7489
8180
  const view = new DockviewGroupPanel(this, id, options);
7490
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
8181
+ view.init({ params: {}, accessor: this });
7491
8182
  if (!this._groups.has(view.id)) {
7492
8183
  const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
7493
8184
  this._onWillDragPanel.fire(event);
@@ -7495,20 +8186,48 @@
7495
8186
  this._onWillDragGroup.fire(event);
7496
8187
  }), view.model.onMove((event) => {
7497
8188
  const { groupId, itemId, target, index } = event;
7498
- this.moveGroupOrPanel(view, groupId, itemId, target, index);
8189
+ this.moveGroupOrPanel({
8190
+ from: { groupId: groupId, panelId: itemId },
8191
+ to: {
8192
+ group: view,
8193
+ position: target,
8194
+ index,
8195
+ },
8196
+ });
7499
8197
  }), view.model.onDidDrop((event) => {
7500
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
8198
+ this._onDidDrop.fire(event);
8199
+ }), view.model.onWillDrop((event) => {
8200
+ this._onWillDrop.fire(event);
8201
+ }), view.model.onWillShowOverlay((event) => {
8202
+ if (this.options.disableDnd) {
8203
+ event.preventDefault();
8204
+ return;
8205
+ }
8206
+ this._onWillShowOverlay.fire(event);
7501
8207
  }), view.model.onDidAddPanel((event) => {
8208
+ if (this._moving) {
8209
+ return;
8210
+ }
7502
8211
  this._onDidAddPanel.fire(event.panel);
7503
8212
  }), view.model.onDidRemovePanel((event) => {
8213
+ if (this._moving) {
8214
+ return;
8215
+ }
7504
8216
  this._onDidRemovePanel.fire(event.panel);
7505
8217
  }), view.model.onDidActivePanelChange((event) => {
7506
- this._onDidActivePanelChange.fire(event.panel);
8218
+ if (this._moving) {
8219
+ return;
8220
+ }
8221
+ if (event.panel !== this.activePanel) {
8222
+ return;
8223
+ }
8224
+ if (this._onDidActivePanelChange.value !== event.panel) {
8225
+ this._onDidActivePanelChange.fire(event.panel);
8226
+ }
7507
8227
  }));
7508
8228
  this._groups.set(view.id, { value: view, disposable });
7509
8229
  }
7510
- // TODO: must be called after the above listeners have been setup,
7511
- // not an ideal pattern
8230
+ // TODO: must be called after the above listeners have been setup, not an ideal pattern
7512
8231
  view.initialize();
7513
8232
  return view;
7514
8233
  }
@@ -7561,7 +8280,20 @@
7561
8280
  });
7562
8281
  this._onDidLayoutfromJSON = new Emitter();
7563
8282
  this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
8283
+ this._onDidRemoveGroup = new Emitter();
8284
+ this.onDidRemoveGroup = this._onDidRemoveGroup.event;
8285
+ this._onDidAddGroup = new Emitter();
8286
+ this.onDidAddGroup = this._onDidAddGroup.event;
8287
+ this._onDidActiveGroupChange = new Emitter();
8288
+ this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7564
8289
  this._options = options;
8290
+ this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {
8291
+ this._onDidAddGroup.fire(event);
8292
+ }), this.onDidRemove((event) => {
8293
+ this._onDidRemoveGroup.fire(event);
8294
+ }), this.onDidActiveChange((event) => {
8295
+ this._onDidActiveGroupChange.fire(event);
8296
+ }));
7565
8297
  if (!this.options.components) {
7566
8298
  this.options.components = {};
7567
8299
  }
@@ -7736,6 +8468,7 @@
7736
8468
  });
7737
8469
  this.registerPanel(view);
7738
8470
  this.doAddGroup(view, relativeLocation, options.size);
8471
+ this.doSetGroupActive(view);
7739
8472
  return view;
7740
8473
  }
7741
8474
  registerPanel(panel) {
@@ -8421,10 +9154,10 @@
8421
9154
  this._onDidChange = new Emitter();
8422
9155
  this.onDidChange = this._onDidChange.event;
8423
9156
  this.api.initialize(this);
8424
- this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
8425
- const { isVisible } = event;
9157
+ this.addDisposables(this._onDidChange, this.api.onDidHiddenChange((event) => {
9158
+ const { isHidden } = event;
8426
9159
  const { accessor } = this._params;
8427
- accessor.setVisible(this, isVisible);
9160
+ accessor.setVisible(this, !isHidden);
8428
9161
  }), this.api.onActiveChange(() => {
8429
9162
  const { accessor } = this._params;
8430
9163
  accessor.setActive(this);
@@ -8490,11 +9223,13 @@
8490
9223
  exports.DockviewApi = DockviewApi;
8491
9224
  exports.DockviewComponent = DockviewComponent;
8492
9225
  exports.DockviewCompositeDisposable = CompositeDisposable;
9226
+ exports.DockviewDidDropEvent = DockviewDidDropEvent;
8493
9227
  exports.DockviewEmitter = Emitter;
8494
9228
  exports.DockviewGroupPanel = DockviewGroupPanel;
8495
9229
  exports.DockviewGroupPanelModel = DockviewGroupPanelModel;
8496
9230
  exports.DockviewMutableDisposable = MutableDisposable;
8497
9231
  exports.DockviewPanel = DockviewPanel;
9232
+ exports.DockviewWillDropEvent = DockviewWillDropEvent;
8498
9233
  exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
8499
9234
  exports.Gridview = Gridview;
8500
9235
  exports.GridviewApi = GridviewApi;
@@ -8513,6 +9248,7 @@
8513
9248
  exports.SplitviewComponent = SplitviewComponent;
8514
9249
  exports.SplitviewPanel = SplitviewPanel;
8515
9250
  exports.Tab = Tab;
9251
+ exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
8516
9252
  exports.createComponent = createComponent;
8517
9253
  exports.directionToPosition = directionToPosition;
8518
9254
  exports.getDirectionOrientation = getDirectionOrientation;