dockview-core 1.9.2 → 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 +6 -7
  35. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -1
  36. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -1
  37. package/dist/cjs/dockview/components/tab/tab.d.ts +5 -13
  38. package/dist/cjs/dockview/components/tab/tab.js +5 -6
  39. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +17 -14
  40. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +26 -22
  41. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +3 -3
  42. package/dist/cjs/dockview/components/titlebar/voidContainer.js +5 -6
  43. package/dist/cjs/dockview/components/watermark/watermark.d.ts +0 -1
  44. package/dist/cjs/dockview/components/watermark/watermark.js +0 -1
  45. package/dist/cjs/dockview/deserializer.d.ts +0 -1
  46. package/dist/cjs/dockview/deserializer.js +0 -1
  47. package/dist/cjs/dockview/dockviewComponent.d.ts +86 -25
  48. package/dist/cjs/dockview/dockviewComponent.js +577 -197
  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 +226 -57
  55. package/dist/cjs/dockview/dockviewPanel.d.ts +8 -3
  56. package/dist/cjs/dockview/dockviewPanel.js +39 -12
  57. package/dist/cjs/dockview/dockviewPanelModel.d.ts +1 -4
  58. package/dist/cjs/dockview/dockviewPanelModel.js +2 -22
  59. package/dist/cjs/dockview/options.d.ts +7 -3
  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 +1261 -526
  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 +1260 -525
  134. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  135. package/dist/dockview-core.cjs.js +1261 -526
  136. package/dist/dockview-core.cjs.js.map +1 -1
  137. package/dist/dockview-core.esm.js +1259 -527
  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 +1261 -526
  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 +1260 -525
  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 +6 -7
  183. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -1
  184. package/dist/esm/dockview/components/tab/defaultTab.js +0 -1
  185. package/dist/esm/dockview/components/tab/tab.d.ts +5 -13
  186. package/dist/esm/dockview/components/tab/tab.js +6 -7
  187. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +17 -14
  188. package/dist/esm/dockview/components/titlebar/tabsContainer.js +24 -20
  189. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +3 -3
  190. package/dist/esm/dockview/components/titlebar/voidContainer.js +6 -7
  191. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -1
  192. package/dist/esm/dockview/components/watermark/watermark.js +0 -1
  193. package/dist/esm/dockview/deserializer.d.ts +0 -1
  194. package/dist/esm/dockview/deserializer.js +0 -1
  195. package/dist/esm/dockview/dockviewComponent.d.ts +86 -25
  196. package/dist/esm/dockview/dockviewComponent.js +520 -162
  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 +169 -53
  203. package/dist/esm/dockview/dockviewPanel.d.ts +8 -3
  204. package/dist/esm/dockview/dockviewPanel.js +39 -12
  205. package/dist/esm/dockview/dockviewPanelModel.d.ts +1 -4
  206. package/dist/esm/dockview/dockviewPanelModel.js +2 -22
  207. package/dist/esm/dockview/options.d.ts +7 -3
  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.2
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,9 +3610,10 @@
3494
3610
  // noop
3495
3611
  }
3496
3612
  closePanel() {
3613
+ var _a;
3497
3614
  if (this.panel) {
3498
3615
  if (this.panel.api.renderer === 'onlyWhenVisibile') {
3499
- this._element.removeChild(this.panel.view.content.element);
3616
+ (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);
3500
3617
  }
3501
3618
  }
3502
3619
  this.panel = undefined;
@@ -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,35 +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
- }
4253
4464
  this.contentContainer.renderPanel(panel, { asActive: true });
4254
4465
  return;
4255
4466
  }
4256
- this.doAddPanel(panel, options.index, skipSetPanelActive);
4257
- if (!skipSetPanelActive) {
4467
+ if (!skipSetActive) {
4258
4468
  this.doSetActivePanel(panel);
4259
4469
  }
4260
- if (!skipSetGroupActive) {
4261
- 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();
4262
4475
  }
4263
- this.updateContainer();
4264
4476
  }
4265
- removePanel(groupItemOrId) {
4477
+ removePanel(groupItemOrId, options = {
4478
+ skipSetActive: false,
4479
+ }) {
4266
4480
  const id = typeof groupItemOrId === 'string'
4267
4481
  ? groupItemOrId
4268
4482
  : groupItemOrId.id;
@@ -4270,7 +4484,7 @@
4270
4484
  if (!panelToRemove) {
4271
4485
  throw new Error('invalid operation');
4272
4486
  }
4273
- return this._removePanel(panelToRemove);
4487
+ return this._removePanel(panelToRemove, options);
4274
4488
  }
4275
4489
  closeAllPanels() {
4276
4490
  if (this.panels.length > 0) {
@@ -4296,12 +4510,8 @@
4296
4510
  updateActions(element) {
4297
4511
  this.tabsContainer.setRightActionsElement(element);
4298
4512
  }
4299
- setActive(isGroupActive, skipFocus = false, force = false) {
4300
- var _a, _b, _c, _d;
4513
+ setActive(isGroupActive, force = false) {
4301
4514
  if (!force && this.isActive === isGroupActive) {
4302
- if (!skipFocus) {
4303
- (_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4304
- }
4305
4515
  return;
4306
4516
  }
4307
4517
  this._isGroupActive = isGroupActive;
@@ -4312,11 +4522,6 @@
4312
4522
  this.doSetActivePanel(this.panels[0]);
4313
4523
  }
4314
4524
  this.updateContainer();
4315
- if (isGroupActive) {
4316
- if (!skipFocus) {
4317
- (_d = (_c = this._activePanel) === null || _c === void 0 ? void 0 : _c.focus) === null || _d === void 0 ? void 0 : _d.call(_c);
4318
- }
4319
- }
4320
4525
  }
4321
4526
  layout(width, height) {
4322
4527
  var _a;
@@ -4327,17 +4532,22 @@
4327
4532
  this._activePanel.layout(this._width, this._height);
4328
4533
  }
4329
4534
  }
4330
- _removePanel(panel) {
4535
+ _removePanel(panel, options) {
4331
4536
  const isActivePanel = this._activePanel === panel;
4332
4537
  this.doRemovePanel(panel);
4333
4538
  if (isActivePanel && this.panels.length > 0) {
4334
4539
  const nextPanel = this.mostRecentlyUsed[0];
4335
- this.openPanel(nextPanel);
4540
+ this.openPanel(nextPanel, {
4541
+ skipSetActive: options.skipSetActive,
4542
+ skipSetGroupActive: options.skipSetActiveGroup,
4543
+ });
4336
4544
  }
4337
4545
  if (this._activePanel && this.panels.length === 0) {
4338
4546
  this.doSetActivePanel(undefined);
4339
4547
  }
4340
- this.updateContainer();
4548
+ if (!options.skipSetActive) {
4549
+ this.updateContainer();
4550
+ }
4341
4551
  return panel;
4342
4552
  }
4343
4553
  doRemovePanel(panel) {
@@ -4352,13 +4562,13 @@
4352
4562
  }
4353
4563
  this._onDidRemovePanel.fire({ panel });
4354
4564
  }
4355
- doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
4565
+ doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
4356
4566
  const existingPanel = this._panels.indexOf(panel);
4357
4567
  const hasExistingPanel = existingPanel > -1;
4358
4568
  this.tabsContainer.show();
4359
4569
  this.contentContainer.show();
4360
4570
  this.tabsContainer.openPanel(panel, index);
4361
- if (!skipSetActive) {
4571
+ if (!options.skipSetActive) {
4362
4572
  this.contentContainer.openPanel(panel);
4363
4573
  }
4364
4574
  if (hasExistingPanel) {
@@ -4370,12 +4580,17 @@
4370
4580
  this._onDidAddPanel.fire({ panel });
4371
4581
  }
4372
4582
  doSetActivePanel(panel) {
4583
+ if (this._activePanel === panel) {
4584
+ return;
4585
+ }
4373
4586
  this._activePanel = panel;
4374
4587
  if (panel) {
4375
4588
  this.tabsContainer.setActivePanel(panel);
4376
4589
  panel.layout(this._width, this._height);
4377
4590
  this.updateMru(panel);
4378
- this._onDidActivePanelChange.fire({ panel });
4591
+ this._onDidActivePanelChange.fire({
4592
+ panel,
4593
+ });
4379
4594
  }
4380
4595
  }
4381
4596
  updateMru(panel) {
@@ -4387,11 +4602,11 @@
4387
4602
  updateContainer() {
4388
4603
  var _a, _b;
4389
4604
  toggleClass(this.container, 'empty', this.isEmpty);
4390
- this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));
4605
+ this.panels.forEach((panel) => panel.runEvents());
4391
4606
  if (this.isEmpty && !this.watermark) {
4392
4607
  const watermark = this.accessor.createWatermarkComponent();
4393
4608
  watermark.init({
4394
- containerApi: new DockviewApi(this.accessor),
4609
+ containerApi: this._api,
4395
4610
  group: this.groupPanel,
4396
4611
  });
4397
4612
  this.watermark = watermark;
@@ -4424,10 +4639,32 @@
4424
4639
  }
4425
4640
  return false;
4426
4641
  }
4427
- handleDropEvent(event, position, index) {
4642
+ handleDropEvent(type, event, position, index) {
4428
4643
  if (this.locked === 'no-drop-target') {
4429
4644
  return;
4430
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
+ }
4431
4668
  const data = getPanelData();
4432
4669
  if (data && data.viewId === this.accessor.id) {
4433
4670
  if (data.panelId === null) {
@@ -4460,12 +4697,14 @@
4460
4697
  });
4461
4698
  }
4462
4699
  else {
4463
- this._onDidDrop.fire({
4700
+ this._onDidDrop.fire(new DockviewDidDropEvent({
4464
4701
  nativeEvent: event,
4465
4702
  position,
4466
- index,
4703
+ panel,
4467
4704
  getData: () => getPanelData(),
4468
- });
4705
+ group: this.groupPanel,
4706
+ api: this._api,
4707
+ }));
4469
4708
  }
4470
4709
  }
4471
4710
  dispose() {
@@ -4473,6 +4712,7 @@
4473
4712
  super.dispose();
4474
4713
  (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();
4475
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;
4476
4716
  for (const panel of this.panels) {
4477
4717
  panel.dispose();
4478
4718
  }
@@ -4494,15 +4734,7 @@
4494
4734
  constructor(parentElement, disableResizing = false) {
4495
4735
  super();
4496
4736
  this._disableResizing = disableResizing;
4497
- if (parentElement) {
4498
- this._element = parentElement;
4499
- }
4500
- else {
4501
- this._element = document.createElement('div');
4502
- this._element.style.height = '100%';
4503
- this._element.style.width = '100%';
4504
- this._element.className = 'dv-resizable-container';
4505
- }
4737
+ this._element = parentElement;
4506
4738
  this.addDisposables(watchElementResize(this._element, (entry) => {
4507
4739
  if (this.isDisposed) {
4508
4740
  /**
@@ -4590,25 +4822,38 @@
4590
4822
  get activeGroup() {
4591
4823
  return this._activeGroup;
4592
4824
  }
4825
+ get locked() {
4826
+ return this.gridview.locked;
4827
+ }
4828
+ set locked(value) {
4829
+ this.gridview.locked = value;
4830
+ }
4593
4831
  constructor(options) {
4594
- super(options.parentElement, options.disableAutoResizing);
4832
+ super(document.createElement('div'), options.disableAutoResizing);
4595
4833
  this._id = nextLayoutId$1.next();
4596
4834
  this._groups = new Map();
4597
4835
  this._onDidLayoutChange = new Emitter();
4598
4836
  this.onDidLayoutChange = this._onDidLayoutChange.event;
4599
- this._onDidRemoveGroup = new Emitter();
4600
- this.onDidRemoveGroup = this._onDidRemoveGroup.event;
4601
- this._onDidAddGroup = new Emitter();
4602
- this.onDidAddGroup = this._onDidAddGroup.event;
4603
- this._onDidActiveGroupChange = new Emitter();
4604
- this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
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;
4605
4843
  this._bufferOnDidLayoutChange = new TickDelayedEvent();
4844
+ this.element.style.height = '100%';
4845
+ this.element.style.width = '100%';
4846
+ options.parentElement.appendChild(this.element);
4606
4847
  this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
4848
+ this.gridview.locked = !!options.locked;
4607
4849
  this.element.appendChild(this.gridview.element);
4608
4850
  this.layout(0, 0, true); // set some elements height/widths
4609
- 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(() => {
4610
4855
  this._bufferOnDidLayoutChange.fire();
4611
- }), exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
4856
+ }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {
4612
4857
  this._bufferOnDidLayoutChange.fire();
4613
4858
  }), this._bufferOnDidLayoutChange.onEvent(() => {
4614
4859
  this._onDidLayoutChange.fire();
@@ -4623,6 +4868,7 @@
4623
4868
  }
4624
4869
  maximizeGroup(panel) {
4625
4870
  this.gridview.maximizeView(panel);
4871
+ this.doSetGroupActive(panel);
4626
4872
  }
4627
4873
  isMaximizedGroup(panel) {
4628
4874
  return this.gridview.maximizedView() === panel;
@@ -4633,13 +4879,12 @@
4633
4879
  hasMaximizedGroup() {
4634
4880
  return this.gridview.hasMaximizedView();
4635
4881
  }
4636
- get onDidMaxmizedGroupChange() {
4637
- return this.gridview.onDidMaxmizedNodeChange;
4882
+ get onDidMaximizedGroupChange() {
4883
+ return this.gridview.onDidMaximizedNodeChange;
4638
4884
  }
4639
4885
  doAddGroup(group, location = [0], size) {
4640
4886
  this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
4641
- this._onDidAddGroup.fire(group);
4642
- this.doSetGroupActive(group);
4887
+ this._onDidAdd.fire(group);
4643
4888
  }
4644
4889
  doRemoveGroup(group, options) {
4645
4890
  if (!this._groups.has(group.id)) {
@@ -4651,8 +4896,8 @@
4651
4896
  item.disposable.dispose();
4652
4897
  item.value.dispose();
4653
4898
  this._groups.delete(group.id);
4899
+ this._onDidRemove.fire(group);
4654
4900
  }
4655
- this._onDidRemoveGroup.fire(group);
4656
4901
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
4657
4902
  const groups = Array.from(this._groups.values());
4658
4903
  this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
@@ -4663,25 +4908,18 @@
4663
4908
  var _a;
4664
4909
  return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;
4665
4910
  }
4666
- doSetGroupActive(group, skipFocus) {
4667
- var _a, _b, _c;
4911
+ doSetGroupActive(group) {
4668
4912
  if (this._activeGroup === group) {
4669
4913
  return;
4670
4914
  }
4671
4915
  if (this._activeGroup) {
4672
4916
  this._activeGroup.setActive(false);
4673
- if (!skipFocus) {
4674
- (_b = (_a = this._activeGroup).focus) === null || _b === void 0 ? void 0 : _b.call(_a);
4675
- }
4676
4917
  }
4677
4918
  if (group) {
4678
4919
  group.setActive(true);
4679
- if (!skipFocus) {
4680
- (_c = group.focus) === null || _c === void 0 ? void 0 : _c.call(group);
4681
- }
4682
4920
  }
4683
4921
  this._activeGroup = group;
4684
- this._onDidActiveGroupChange.fire(group);
4922
+ this._onDidActiveChange.fire(group);
4685
4923
  }
4686
4924
  removeGroup(group) {
4687
4925
  this.doRemoveGroup(group);
@@ -4726,9 +4964,9 @@
4726
4964
  this.gridview.layout(width, height);
4727
4965
  }
4728
4966
  dispose() {
4729
- this._onDidActiveGroupChange.dispose();
4730
- this._onDidAddGroup.dispose();
4731
- this._onDidRemoveGroup.dispose();
4967
+ this._onDidActiveChange.dispose();
4968
+ this._onDidAdd.dispose();
4969
+ this._onDidRemove.dispose();
4732
4970
  this._onDidLayoutChange.dispose();
4733
4971
  for (const group of this.groups) {
4734
4972
  group.dispose();
@@ -4738,11 +4976,15 @@
4738
4976
  }
4739
4977
  }
4740
4978
 
4979
+ class WillFocusEvent extends DockviewEvent {
4980
+ constructor() {
4981
+ super();
4982
+ }
4983
+ }
4741
4984
  /**
4742
4985
  * A core api implementation that should be used across all panel-like objects
4743
4986
  */
4744
4987
  class PanelApiImpl extends CompositeDisposable {
4745
- //
4746
4988
  get isFocused() {
4747
4989
  return this._isFocused;
4748
4990
  }
@@ -4752,6 +4994,9 @@
4752
4994
  get isVisible() {
4753
4995
  return this._isVisible;
4754
4996
  }
4997
+ get isHidden() {
4998
+ return this._isHidden;
4999
+ }
4755
5000
  get width() {
4756
5001
  return this._width;
4757
5002
  }
@@ -4764,38 +5009,26 @@
4764
5009
  this._isFocused = false;
4765
5010
  this._isActive = false;
4766
5011
  this._isVisible = true;
5012
+ this._isHidden = false;
4767
5013
  this._width = 0;
4768
5014
  this._height = 0;
4769
5015
  this.panelUpdatesDisposable = new MutableDisposable();
4770
- this._onDidDimensionChange = new Emitter({
4771
- replay: true,
4772
- });
5016
+ this._onDidDimensionChange = new Emitter();
4773
5017
  this.onDidDimensionsChange = this._onDidDimensionChange.event;
4774
- //
4775
- this._onDidChangeFocus = new Emitter({
4776
- replay: true,
4777
- });
5018
+ this._onDidChangeFocus = new Emitter();
4778
5019
  this.onDidFocusChange = this._onDidChangeFocus.event;
4779
5020
  //
4780
- this._onFocusEvent = new Emitter();
4781
- this.onFocusEvent = this._onFocusEvent.event;
5021
+ this._onWillFocus = new Emitter();
5022
+ this.onWillFocus = this._onWillFocus.event;
4782
5023
  //
4783
- this._onDidVisibilityChange = new Emitter({
4784
- replay: true,
4785
- });
5024
+ this._onDidVisibilityChange = new Emitter();
4786
5025
  this.onDidVisibilityChange = this._onDidVisibilityChange.event;
4787
- //
4788
- this._onVisibilityChange = new Emitter();
4789
- this.onVisibilityChange = this._onVisibilityChange.event;
4790
- //
4791
- this._onDidActiveChange = new Emitter({
4792
- replay: true,
4793
- });
5026
+ this._onDidHiddenChange = new Emitter();
5027
+ this.onDidHiddenChange = this._onDidHiddenChange.event;
5028
+ this._onDidActiveChange = new Emitter();
4794
5029
  this.onDidActiveChange = this._onDidActiveChange.event;
4795
- //
4796
5030
  this._onActiveChange = new Emitter();
4797
5031
  this.onActiveChange = this._onActiveChange.event;
4798
- //
4799
5032
  this._onUpdateParameters = new Emitter();
4800
5033
  this.onUpdateParameters = this._onUpdateParameters.event;
4801
5034
  this.addDisposables(this.onDidFocusChange((event) => {
@@ -4804,10 +5037,12 @@
4804
5037
  this._isActive = event.isActive;
4805
5038
  }), this.onDidVisibilityChange((event) => {
4806
5039
  this._isVisible = event.isVisible;
5040
+ }), this.onDidHiddenChange((event) => {
5041
+ this._isHidden = event.isHidden;
4807
5042
  }), this.onDidDimensionsChange((event) => {
4808
5043
  this._width = event.width;
4809
5044
  this._height = event.height;
4810
- }), 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);
4811
5046
  }
4812
5047
  initialize(panel) {
4813
5048
  this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
@@ -4816,8 +5051,8 @@
4816
5051
  });
4817
5052
  });
4818
5053
  }
4819
- setVisible(isVisible) {
4820
- this._onVisibilityChange.fire({ isVisible });
5054
+ setHidden(isHidden) {
5055
+ this._onDidHiddenChange.fire({ isHidden });
4821
5056
  }
4822
5057
  setActive() {
4823
5058
  this._onActiveChange.fire();
@@ -4825,9 +5060,6 @@
4825
5060
  updateParameters(parameters) {
4826
5061
  this._onUpdateParameters.fire(parameters);
4827
5062
  }
4828
- dispose() {
4829
- super.dispose();
4830
- }
4831
5063
  }
4832
5064
 
4833
5065
  class SplitviewPanelApiImpl extends PanelApiImpl {
@@ -4915,7 +5147,12 @@
4915
5147
  }), focusTracker);
4916
5148
  }
4917
5149
  focus() {
4918
- 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();
4919
5156
  }
4920
5157
  layout(width, height) {
4921
5158
  this._width = width;
@@ -5244,9 +5481,7 @@
5244
5481
  super(id);
5245
5482
  this._onDidConstraintsChangeInternal = new Emitter();
5246
5483
  this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
5247
- this._onDidConstraintsChange = new Emitter({
5248
- replay: true,
5249
- });
5484
+ this._onDidConstraintsChange = new Emitter();
5250
5485
  this.onDidConstraintsChange = this._onDidConstraintsChange.event;
5251
5486
  this._onDidSizeChange = new Emitter();
5252
5487
  this.onDidSizeChange = this._onDidSizeChange.event;
@@ -5339,13 +5574,13 @@
5339
5574
  this._maximumHeight = options.maximumHeight;
5340
5575
  }
5341
5576
  this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
5342
- this.addDisposables(this.api.onVisibilityChange((event) => {
5343
- const { isVisible } = event;
5577
+ this.addDisposables(this.api.onDidHiddenChange((event) => {
5578
+ const { isHidden } = event;
5344
5579
  const { accessor } = this._params;
5345
- accessor.setVisible(this, isVisible);
5580
+ accessor.setVisible(this, !isHidden);
5346
5581
  }), this.api.onActiveChange(() => {
5347
5582
  const { accessor } = this._params;
5348
- accessor.setActive(this);
5583
+ accessor.doSetGroupActive(this);
5349
5584
  }), this.api.onDidConstraintsChangeInternal((event) => {
5350
5585
  if (typeof event.minimumWidth === 'number' ||
5351
5586
  typeof event.minimumWidth === 'function') {
@@ -5428,6 +5663,17 @@
5428
5663
  this.onDidLocationChange = this._onDidLocationChange.event;
5429
5664
  this.addDisposables(this._onDidLocationChange);
5430
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
+ }
5431
5677
  moveTo(options) {
5432
5678
  var _a, _b, _c;
5433
5679
  if (!this._group) {
@@ -5435,14 +5681,23 @@
5435
5681
  }
5436
5682
  const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({
5437
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
+ },
5438
5694
  });
5439
- this.accessor.moveGroupOrPanel(group, this._group.id, undefined, options.group ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center' : 'center');
5440
5695
  }
5441
5696
  maximize() {
5442
5697
  if (!this._group) {
5443
5698
  throw new Error(NOT_INITIALIZED_MESSAGE);
5444
5699
  }
5445
- if (this.location !== 'grid') {
5700
+ if (this.location.type !== 'grid') {
5446
5701
  // only grid groups can be maximized
5447
5702
  return;
5448
5703
  }
@@ -5499,6 +5754,12 @@
5499
5754
  this.api.initialize(this); // cannot use 'this' after after 'super' call
5500
5755
  this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);
5501
5756
  }
5757
+ focus() {
5758
+ if (!this.api.isActive) {
5759
+ this.api.setActive();
5760
+ }
5761
+ super.focus();
5762
+ }
5502
5763
  initialize() {
5503
5764
  this._model.initialize();
5504
5765
  }
@@ -5544,6 +5805,9 @@
5544
5805
  }
5545
5806
 
5546
5807
  class DockviewPanelApiImpl extends GridviewPanelApiImpl {
5808
+ get location() {
5809
+ return this.group.api.location;
5810
+ }
5547
5811
  get title() {
5548
5812
  return this.panel.title;
5549
5813
  }
@@ -5555,15 +5819,34 @@
5555
5819
  }
5556
5820
  set group(value) {
5557
5821
  const isOldGroupActive = this.isGroupActive;
5558
- this._group = value;
5559
- this._onDidGroupChange.fire();
5560
- if (this._group) {
5561
- this.disposable.value = this._group.api.onDidActiveChange(() => {
5562
- this._onDidActiveGroupChange.fire();
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,
5563
5849
  });
5564
- if (this.isGroupActive !== isOldGroupActive) {
5565
- this._onDidActiveGroupChange.fire();
5566
- }
5567
5850
  }
5568
5851
  }
5569
5852
  get group() {
@@ -5581,14 +5864,26 @@
5581
5864
  this.onDidGroupChange = this._onDidGroupChange.event;
5582
5865
  this._onDidRendererChange = new Emitter();
5583
5866
  this.onDidRendererChange = this._onDidRendererChange.event;
5584
- this.disposable = new MutableDisposable();
5867
+ this._onDidLocationChange = new Emitter();
5868
+ this.onDidLocationChange = this._onDidLocationChange.event;
5869
+ this.groupEventsDisposable = new MutableDisposable();
5585
5870
  this.initialize(panel);
5586
5871
  this._group = group;
5587
- 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();
5588
5876
  }
5589
5877
  moveTo(options) {
5590
5878
  var _a;
5591
- this.accessor.moveGroupOrPanel(options.group, this._group.id, this.panel.id, (_a = options.position) !== null && _a !== void 0 ? _a : 'center', options.index);
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
+ });
5592
5887
  }
5593
5888
  setTitle(title) {
5594
5889
  this.panel.setTitle(title);
@@ -5649,7 +5944,14 @@
5649
5944
  this.setTitle(params.title);
5650
5945
  }
5651
5946
  focus() {
5652
- 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
+ }
5653
5955
  }
5654
5956
  toJSON() {
5655
5957
  return {
@@ -5706,20 +6008,40 @@
5706
6008
  },
5707
6009
  });
5708
6010
  }
5709
- updateParentGroup(group, isGroupActive) {
6011
+ updateParentGroup(group, options) {
5710
6012
  this._group = group;
5711
- this.api.group = group;
6013
+ this.api.group = this._group;
5712
6014
  const isPanelVisible = this._group.model.isPanelActive(this);
5713
- this.api._onDidActiveChange.fire({
5714
- isActive: isGroupActive && isPanelVisible,
5715
- });
5716
- this.api._onDidVisibilityChange.fire({
5717
- isVisible: isPanelVisible,
5718
- });
5719
- this.view.updateParentGroup(this._group, this._group.model.isPanelActive(this));
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
+ }
5720
6042
  }
5721
6043
  layout(width, height) {
5722
- // 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?
5723
6045
  this.api._onDidDimensionChange.fire({
5724
6046
  width,
5725
6047
  height: height,
@@ -5841,8 +6163,6 @@
5841
6163
  this.id = id;
5842
6164
  this.contentComponent = contentComponent;
5843
6165
  this.tabComponent = tabComponent;
5844
- this._group = null;
5845
- this._isPanelVisible = null;
5846
6166
  this._content = this.createContentComponent(this.id, contentComponent);
5847
6167
  this._tab = this.createTabComponent(this.id, tabComponent);
5848
6168
  }
@@ -5850,25 +6170,8 @@
5850
6170
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
5851
6171
  this.tab.init(params);
5852
6172
  }
5853
- updateParentGroup(group, isPanelVisible) {
5854
- if (group !== this._group) {
5855
- this._group = group;
5856
- if (this._content.onGroupChange) {
5857
- this._content.onGroupChange(group);
5858
- }
5859
- if (this._tab.onGroupChange) {
5860
- this._tab.onGroupChange(group);
5861
- }
5862
- }
5863
- if (isPanelVisible !== this._isPanelVisible) {
5864
- this._isPanelVisible = isPanelVisible;
5865
- if (this._content.onPanelVisibleChange) {
5866
- this._content.onPanelVisibleChange(isPanelVisible);
5867
- }
5868
- if (this._tab.onPanelVisibleChange) {
5869
- this._tab.onPanelVisibleChange(isPanelVisible);
5870
- }
5871
- }
6173
+ updateParentGroup(_group, _isPanelVisible) {
6174
+ // noop
5872
6175
  }
5873
6176
  layout(width, height) {
5874
6177
  var _a, _b;
@@ -6301,117 +6604,6 @@
6301
6604
  }
6302
6605
  }
6303
6606
 
6304
- class PopoutWindow extends CompositeDisposable {
6305
- constructor(id, className, options) {
6306
- super();
6307
- this.id = id;
6308
- this.className = className;
6309
- this.options = options;
6310
- this._onDidClose = new Emitter();
6311
- this.onDidClose = this._onDidClose.event;
6312
- this._window = null;
6313
- this.addDisposables(this._onDidClose, {
6314
- dispose: () => {
6315
- this.close();
6316
- },
6317
- });
6318
- }
6319
- dimensions() {
6320
- if (!this._window) {
6321
- return null;
6322
- }
6323
- const left = this._window.value.screenX;
6324
- const top = this._window.value.screenY;
6325
- const width = this._window.value.innerWidth;
6326
- const height = this._window.value.innerHeight;
6327
- return { top, left, width, height };
6328
- }
6329
- close() {
6330
- if (this._window) {
6331
- this._window.disposable.dispose();
6332
- this._window.value.close();
6333
- this._window = null;
6334
- }
6335
- }
6336
- open(content) {
6337
- if (this._window) {
6338
- throw new Error('instance of popout window is already open');
6339
- }
6340
- const url = `${this.options.url}`;
6341
- const features = Object.entries({
6342
- top: this.options.top,
6343
- left: this.options.left,
6344
- width: this.options.width,
6345
- height: this.options.height,
6346
- })
6347
- .map(([key, value]) => `${key}=${value}`)
6348
- .join(',');
6349
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/open
6350
- const externalWindow = window.open(url, this.id, features);
6351
- if (!externalWindow) {
6352
- return;
6353
- }
6354
- const disposable = new CompositeDisposable();
6355
- this._window = { value: externalWindow, disposable };
6356
- const cleanUp = () => {
6357
- this._onDidClose.fire();
6358
- this._window = null;
6359
- };
6360
- // prevent any default content from loading
6361
- // externalWindow.document.body.replaceWith(document.createElement('div'));
6362
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
6363
- cleanUp();
6364
- this.close();
6365
- }));
6366
- externalWindow.addEventListener('load', () => {
6367
- const externalDocument = externalWindow.document;
6368
- externalDocument.title = document.title;
6369
- const div = document.createElement('div');
6370
- div.classList.add('dv-popout-window');
6371
- div.style.position = 'absolute';
6372
- div.style.width = '100%';
6373
- div.style.height = '100%';
6374
- div.style.top = '0px';
6375
- div.style.left = '0px';
6376
- div.classList.add(this.className);
6377
- div.appendChild(content);
6378
- externalDocument.body.replaceChildren(div);
6379
- externalDocument.body.classList.add(this.className);
6380
- addStyles(externalDocument, window.document.styleSheets);
6381
- externalWindow.addEventListener('beforeunload', () => {
6382
- // TODO: indicate external window is closing
6383
- cleanUp();
6384
- });
6385
- });
6386
- }
6387
- }
6388
-
6389
- class DockviewPopoutGroupPanel extends CompositeDisposable {
6390
- constructor(id, group, options) {
6391
- var _a;
6392
- super();
6393
- this.id = id;
6394
- this.group = group;
6395
- this.options = options;
6396
- this.window = new PopoutWindow(id, (_a = options.className) !== null && _a !== void 0 ? _a : '', {
6397
- url: this.options.popoutUrl,
6398
- left: this.options.box.left,
6399
- top: this.options.box.top,
6400
- width: this.options.box.width,
6401
- height: this.options.box.height,
6402
- });
6403
- group.model.location = 'popout';
6404
- this.addDisposables(this.window, {
6405
- dispose: () => {
6406
- group.model.location = 'grid';
6407
- },
6408
- }, this.window.onDidClose(() => {
6409
- this.dispose();
6410
- }));
6411
- this.window.open(group.element);
6412
- }
6413
- }
6414
-
6415
6607
  const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
6416
6608
  const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100 };
6417
6609
 
@@ -6425,11 +6617,13 @@
6425
6617
  super();
6426
6618
  this.element = element;
6427
6619
  this.map = {};
6620
+ this._disposed = false;
6428
6621
  this.addDisposables(Disposable.from(() => {
6429
6622
  for (const value of Object.values(this.map)) {
6430
6623
  value.disposable.dispose();
6431
6624
  value.destroy.dispose();
6432
6625
  }
6626
+ this._disposed = true;
6433
6627
  }));
6434
6628
  }
6435
6629
  detatch(panel) {
@@ -6469,7 +6663,7 @@
6469
6663
  focusContainer.style.top = `${box.top - box2.top}px`;
6470
6664
  focusContainer.style.width = `${box.width}px`;
6471
6665
  focusContainer.style.height = `${box.height}px`;
6472
- toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location === 'floating');
6666
+ toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');
6473
6667
  };
6474
6668
  const visibilityChanged = () => {
6475
6669
  if (panel.api.isVisible) {
@@ -6515,8 +6709,11 @@
6515
6709
  resize();
6516
6710
  }));
6517
6711
  this.map[panel.api.id].destroy = Disposable.from(() => {
6518
- focusContainer.removeChild(panel.view.content.element);
6519
- 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);
6520
6717
  });
6521
6718
  queueMicrotask(() => {
6522
6719
  if (this.isDisposed) {
@@ -6537,11 +6734,187 @@
6537
6734
  }
6538
6735
  }
6539
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
+
6540
6899
  const DEFAULT_ROOT_OVERLAY_MODEL = {
6541
6900
  activationSize: { type: 'pixels', value: 10 },
6542
6901
  size: { type: 'pixels', value: 20 },
6543
6902
  };
6544
- 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) {
6545
6918
  function toClassList(element) {
6546
6919
  const list = [];
6547
6920
  for (let i = 0; i < element.classList.length; i++) {
@@ -6592,6 +6965,7 @@
6592
6965
  styles: options.styles,
6593
6966
  parentElement: options.parentElement,
6594
6967
  disableAutoResizing: options.disableAutoResizing,
6968
+ locked: options.locked,
6595
6969
  });
6596
6970
  this.nextGroupId = sequentialNumberGenerator();
6597
6971
  this._deserializer = new DefaultDockviewDeserialzier(this);
@@ -6602,6 +6976,10 @@
6602
6976
  this.onWillDragGroup = this._onWillDragGroup.event;
6603
6977
  this._onDidDrop = new Emitter();
6604
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;
6605
6983
  this._onDidRemovePanel = new Emitter();
6606
6984
  this.onDidRemovePanel = this._onDidRemovePanel.event;
6607
6985
  this._onDidAddPanel = new Emitter();
@@ -6610,15 +6988,36 @@
6610
6988
  this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
6611
6989
  this._onDidActivePanelChange = new Emitter();
6612
6990
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
6991
+ this._onDidMovePanel = new Emitter();
6613
6992
  this._floatingGroups = [];
6614
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;
6615
7002
  const gready = document.createElement('div');
6616
7003
  gready.className = 'dv-overlay-render-container';
6617
7004
  this.gridview.element.appendChild(gready);
6618
7005
  this.overlayRenderContainer = new OverlayRenderContainer(gready);
6619
7006
  toggleClass(this.gridview.element, 'dv-dockview', true);
6620
7007
  toggleClass(this.element, 'dv-debug', !!options.debug);
6621
- this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
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)(() => {
6622
7021
  this.updateWatermark();
6623
7022
  }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
6624
7023
  this._bufferOnDidLayoutChange.fire();
@@ -6629,7 +7028,7 @@
6629
7028
  }
6630
7029
  // iterate over a copy of the array since .dispose() mutates the original array
6631
7030
  for (const group of [...this._popoutGroups]) {
6632
- group.dispose();
7031
+ group.disposable.dispose();
6633
7032
  }
6634
7033
  }));
6635
7034
  this._options = options;
@@ -6675,7 +7074,7 @@
6675
7074
  return this.options.showDndOverlay({
6676
7075
  nativeEvent: event,
6677
7076
  position: position,
6678
- target: exports.DockviewDropTargets.Edge,
7077
+ target: 'edge',
6679
7078
  getData: getPanelData,
6680
7079
  });
6681
7080
  }
@@ -6686,86 +7085,249 @@
6686
7085
  });
6687
7086
  this.addDisposables(this._rootDropTarget.onDrop((event) => {
6688
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
+ }
6689
7101
  const data = getPanelData();
6690
7102
  if (data) {
6691
- 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
+ });
6692
7113
  }
6693
7114
  else {
6694
- 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
+ }));
6695
7123
  }
6696
7124
  }), this._rootDropTarget);
6697
7125
  this._api = new DockviewApi(this);
6698
7126
  this.updateWatermark();
6699
7127
  }
6700
- addPopoutGroup(item, options) {
6701
- var _a;
6702
- let group;
6703
- let box = options === null || options === void 0 ? void 0 : options.position;
6704
- if (item instanceof DockviewPanel) {
6705
- group = this.createGroup();
6706
- this.removePanel(item, {
6707
- removeEmptyGroup: true,
6708
- skipDispose: true,
6709
- });
6710
- group.model.openPanel(item);
6711
- if (!box) {
6712
- box = this.element.getBoundingClientRect();
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;
6713
7172
  }
6714
- }
6715
- else {
6716
- group = item;
6717
- if (!box) {
6718
- box = group.element.getBoundingClientRect();
7173
+ if (popoutContainer === null) {
7174
+ popoutWindowDisposable.dispose();
7175
+ return;
6719
7176
  }
6720
- const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6721
- options.skipRemoveGroup;
6722
- if (!skip) {
6723
- this.doRemoveGroup(item, { skipDispose: true });
6724
- }
6725
- }
6726
- const theme = getTheme(this.gridview.element);
6727
- const popoutWindow = new DockviewPopoutGroupPanel(`${this.id}-${group.id}`, // globally unique within dockview
6728
- group, {
6729
- className: theme !== null && theme !== void 0 ? theme : '',
6730
- popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
6731
- box: {
6732
- left: window.screenX + box.left,
6733
- top: window.screenY + box.top,
6734
- width: box.width,
6735
- height: box.height,
6736
- },
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);
6737
7283
  });
6738
- popoutWindow.addDisposables({
6739
- dispose: () => {
6740
- remove(this._popoutGroups, popoutWindow);
6741
- this.updateWatermark();
6742
- },
6743
- }, popoutWindow.window.onDidClose(() => {
6744
- this.doAddGroup(group, [0]);
6745
- }));
6746
- this._popoutGroups.push(popoutWindow);
6747
- this.updateWatermark();
6748
7284
  }
6749
7285
  addFloatingGroup(item, coord, options) {
6750
- var _a, _b, _c, _d, _e, _f;
7286
+ var _a, _b, _c, _d, _e, _f, _g;
6751
7287
  let group;
6752
7288
  if (item instanceof DockviewPanel) {
6753
7289
  group = this.createGroup();
6754
- this.removePanel(item, {
7290
+ this._onDidAddGroup.fire(group);
7291
+ this.movingLock(() => this.removePanel(item, {
6755
7292
  removeEmptyGroup: true,
6756
7293
  skipDispose: true,
6757
- });
6758
- group.model.openPanel(item);
7294
+ skipSetActiveGroup: true,
7295
+ }));
7296
+ group.model.openPanel(item, { skipSetGroupActive: true });
6759
7297
  }
6760
7298
  else {
6761
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;
6762
7304
  const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
6763
7305
  options.skipRemoveGroup;
6764
7306
  if (!skip) {
6765
- 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
+ }
6766
7328
  }
6767
7329
  }
6768
- group.model.location = 'floating';
7330
+ group.model.location = { type: 'floating' };
6769
7331
  const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
6770
7332
  ? Math.max(coord.x, 0)
6771
7333
  : DEFAULT_FLOATING_GROUP_POSITION.left;
@@ -6775,16 +7337,16 @@
6775
7337
  const overlay = new Overlay({
6776
7338
  container: this.gridview.element,
6777
7339
  content: group.element,
6778
- height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
6779
- width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
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,
6780
7342
  left: overlayLeft,
6781
7343
  top: overlayTop,
6782
7344
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
6783
7345
  ? undefined
6784
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7346
+ : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumWidthWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6785
7347
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
6786
7348
  ? undefined
6787
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
7349
+ : (_g = (_f = this.options.floatingGroupBounds) === null || _f === void 0 ? void 0 : _f.minimumHeightWithinViewport) !== null && _g !== void 0 ? _g : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
6788
7350
  });
6789
7351
  const el = group.element.querySelector('.void-container');
6790
7352
  if (!el) {
@@ -6815,12 +7377,15 @@
6815
7377
  }), {
6816
7378
  dispose: () => {
6817
7379
  disposable.dispose();
6818
- group.model.location = 'grid';
7380
+ group.model.location = { type: 'grid' };
6819
7381
  remove(this._floatingGroups, floatingGroupPanel);
6820
7382
  this.updateWatermark();
6821
7383
  },
6822
7384
  });
6823
7385
  this._floatingGroups.push(floatingGroupPanel);
7386
+ if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
7387
+ this.doSetGroupAndPanelActive(group);
7388
+ }
6824
7389
  this.updateWatermark();
6825
7390
  }
6826
7391
  orthogonalize(position) {
@@ -6910,8 +7475,8 @@
6910
7475
  return this.panels.find((panel) => panel.id === id);
6911
7476
  }
6912
7477
  setActivePanel(panel) {
6913
- this.doSetGroupActive(panel.group);
6914
7478
  panel.group.model.openPanel(panel);
7479
+ this.doSetGroupAndPanelActive(panel.group);
6915
7480
  }
6916
7481
  moveToNext(options = {}) {
6917
7482
  var _a;
@@ -6972,7 +7537,8 @@
6972
7537
  });
6973
7538
  const popoutGroups = this._popoutGroups.map((group) => {
6974
7539
  return {
6975
- data: group.group.toJSON(),
7540
+ data: group.popoutGroup.toJSON(),
7541
+ gridReferenceGroup: group.referenceGroup,
6976
7542
  position: group.window.dimensions(),
6977
7543
  };
6978
7544
  });
@@ -6990,7 +7556,7 @@
6990
7556
  return result;
6991
7557
  }
6992
7558
  fromJSON(data) {
6993
- var _a, _b;
7559
+ var _a, _b, _c;
6994
7560
  this.clear();
6995
7561
  if (typeof data !== 'object' || data === null) {
6996
7562
  throw new Error('serialized layout must be a non-null object');
@@ -7029,7 +7595,7 @@
7029
7595
  const isActive = typeof activeView === 'string' &&
7030
7596
  activeView === panel.id;
7031
7597
  group.model.openPanel(panel, {
7032
- skipSetPanelActive: !isActive,
7598
+ skipSetActive: !isActive,
7033
7599
  skipSetGroupActive: true,
7034
7600
  });
7035
7601
  }
@@ -7059,11 +7625,16 @@
7059
7625
  }
7060
7626
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
7061
7627
  for (const serializedPopoutGroup of serializedPopoutGroups) {
7062
- const { data, position } = serializedPopoutGroup;
7628
+ const { data, position, gridReferenceGroup } = serializedPopoutGroup;
7063
7629
  const group = createGroupFromSerializedState(data);
7064
- this.addPopoutGroup(group, {
7630
+ this.addPopoutGroup((_c = (gridReferenceGroup
7631
+ ? this.getPanel(gridReferenceGroup)
7632
+ : undefined)) !== null && _c !== void 0 ? _c : group, {
7065
7633
  skipRemoveGroup: true,
7066
7634
  position: position !== null && position !== void 0 ? position : undefined,
7635
+ overridePopoutGroup: gridReferenceGroup
7636
+ ? group
7637
+ : undefined,
7067
7638
  });
7068
7639
  }
7069
7640
  for (const floatingGroup of this._floatingGroups) {
@@ -7110,12 +7681,13 @@
7110
7681
  */
7111
7682
  throw err;
7112
7683
  }
7684
+ this.updateWatermark();
7113
7685
  this._onDidLayoutFromJSON.fire();
7114
7686
  }
7115
7687
  clear() {
7116
7688
  const groups = Array.from(this._groups.values()).map((_) => _.value);
7117
7689
  const hasActiveGroup = !!this.activeGroup;
7118
- const hasActivePanel = !!this.activePanel;
7690
+ !!this.activePanel;
7119
7691
  for (const group of groups) {
7120
7692
  // remove the group will automatically remove the panels
7121
7693
  this.removeGroup(group, { skipActive: true });
@@ -7123,9 +7695,6 @@
7123
7695
  if (hasActiveGroup) {
7124
7696
  this.doSetGroupAndPanelActive(undefined);
7125
7697
  }
7126
- if (hasActivePanel) {
7127
- this._onDidActivePanelChange.fire(undefined);
7128
- }
7129
7698
  this.gridview.clear();
7130
7699
  }
7131
7700
  closeAllGroups() {
@@ -7166,6 +7735,7 @@
7166
7735
  const group = this.orthogonalize(directionToPosition(options.position.direction));
7167
7736
  const panel = this.createPanel(options, group);
7168
7737
  group.model.openPanel(panel);
7738
+ this.doSetGroupAndPanelActive(group);
7169
7739
  return panel;
7170
7740
  }
7171
7741
  }
@@ -7177,6 +7747,7 @@
7177
7747
  const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
7178
7748
  if (options.floating) {
7179
7749
  const group = this.createGroup();
7750
+ this._onDidAddGroup.fire(group);
7180
7751
  const o = typeof options.floating === 'object' &&
7181
7752
  options.floating !== null
7182
7753
  ? options.floating
@@ -7184,16 +7755,16 @@
7184
7755
  this.addFloatingGroup(group, o, {
7185
7756
  inDragMode: false,
7186
7757
  skipRemoveGroup: true,
7758
+ skipActiveGroup: true,
7187
7759
  });
7188
- this._onDidAddGroup.fire(group);
7189
7760
  panel = this.createPanel(options, group);
7190
7761
  group.model.openPanel(panel);
7191
- this.doSetGroupAndPanelActive(group);
7192
7762
  }
7193
- else if (referenceGroup.api.location === 'floating' ||
7763
+ else if (referenceGroup.api.location.type === 'floating' ||
7194
7764
  target === 'center') {
7195
7765
  panel = this.createPanel(options, referenceGroup);
7196
7766
  referenceGroup.model.openPanel(panel);
7767
+ this.doSetGroupAndPanelActive(referenceGroup);
7197
7768
  }
7198
7769
  else {
7199
7770
  const location = getGridLocation(referenceGroup.element);
@@ -7201,10 +7772,12 @@
7201
7772
  const group = this.createGroupAtLocation(relativeLocation);
7202
7773
  panel = this.createPanel(options, group);
7203
7774
  group.model.openPanel(panel);
7775
+ this.doSetGroupAndPanelActive(group);
7204
7776
  }
7205
7777
  }
7206
7778
  else if (options.floating) {
7207
7779
  const group = this.createGroup();
7780
+ this._onDidAddGroup.fire(group);
7208
7781
  const o = typeof options.floating === 'object' &&
7209
7782
  options.floating !== null
7210
7783
  ? options.floating
@@ -7212,16 +7785,16 @@
7212
7785
  this.addFloatingGroup(group, o, {
7213
7786
  inDragMode: false,
7214
7787
  skipRemoveGroup: true,
7788
+ skipActiveGroup: true,
7215
7789
  });
7216
- this._onDidAddGroup.fire(group);
7217
7790
  panel = this.createPanel(options, group);
7218
7791
  group.model.openPanel(panel);
7219
- this.doSetGroupAndPanelActive(group);
7220
7792
  }
7221
7793
  else {
7222
7794
  const group = this.createGroupAtLocation();
7223
7795
  panel = this.createPanel(options, group);
7224
7796
  group.model.openPanel(panel);
7797
+ this.doSetGroupAndPanelActive(group);
7225
7798
  }
7226
7799
  return panel;
7227
7800
  }
@@ -7233,13 +7806,15 @@
7233
7806
  if (!group) {
7234
7807
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
7235
7808
  }
7236
- group.model.removePanel(panel);
7809
+ group.model.removePanel(panel, {
7810
+ skipSetActiveGroup: options.skipSetActiveGroup,
7811
+ });
7237
7812
  if (!options.skipDispose) {
7238
- this.overlayRenderContainer.detatch(panel);
7813
+ panel.group.model.renderContainer.detatch(panel);
7239
7814
  panel.dispose();
7240
7815
  }
7241
7816
  if (group.size === 0 && options.removeEmptyGroup) {
7242
- this.removeGroup(group);
7817
+ this.removeGroup(group, { skipActive: options.skipSetActiveGroup });
7243
7818
  }
7244
7819
  }
7245
7820
  createWatermarkComponent() {
@@ -7252,7 +7827,7 @@
7252
7827
  }
7253
7828
  updateWatermark() {
7254
7829
  var _a, _b;
7255
- 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) {
7256
7831
  if (!this.watermark) {
7257
7832
  this.watermark = this.createWatermarkComponent();
7258
7833
  this.watermark.init({
@@ -7298,36 +7873,42 @@
7298
7873
  }
7299
7874
  else {
7300
7875
  const group = this.orthogonalize(directionToPosition(options.direction));
7876
+ if (!options.skipSetActive) {
7877
+ this.doSetGroupAndPanelActive(group);
7878
+ }
7301
7879
  return group;
7302
7880
  }
7303
7881
  const target = toTarget(options.direction || 'within');
7304
7882
  const location = getGridLocation(referenceGroup.element);
7305
7883
  const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);
7306
7884
  this.doAddGroup(group, relativeLocation);
7885
+ if (!options.skipSetActive) {
7886
+ this.doSetGroupAndPanelActive(group);
7887
+ }
7307
7888
  return group;
7308
7889
  }
7309
7890
  else {
7310
7891
  this.doAddGroup(group);
7892
+ this.doSetGroupAndPanelActive(group);
7311
7893
  return group;
7312
7894
  }
7313
7895
  }
7314
7896
  removeGroup(group, options) {
7897
+ this.doRemoveGroup(group, options);
7898
+ }
7899
+ doRemoveGroup(group, options) {
7315
7900
  var _a;
7316
7901
  const panels = [...group.panels]; // reassign since group panels will mutate
7317
- for (const panel of panels) {
7318
- this.removePanel(panel, {
7319
- removeEmptyGroup: false,
7320
- skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
7321
- });
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
+ }
7322
7909
  }
7323
7910
  const activePanel = this.activePanel;
7324
- this.doRemoveGroup(group, options);
7325
- if (this.activePanel !== activePanel) {
7326
- this._onDidActivePanelChange.fire(this.activePanel);
7327
- }
7328
- }
7329
- doRemoveGroup(group, options) {
7330
- if (group.api.location === 'floating') {
7911
+ if (group.api.location.type === 'floating') {
7331
7912
  const floatingGroup = this._floatingGroups.find((_) => _.group === group);
7332
7913
  if (floatingGroup) {
7333
7914
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
@@ -7339,60 +7920,124 @@
7339
7920
  floatingGroup.dispose();
7340
7921
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7341
7922
  const groups = Array.from(this._groups.values());
7342
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7923
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7343
7924
  }
7344
7925
  return floatingGroup.group;
7345
7926
  }
7346
7927
  throw new Error('failed to find floating group');
7347
7928
  }
7348
- if (group.api.location === 'popout') {
7349
- const selectedGroup = this._popoutGroups.find((_) => _.group === group);
7929
+ if (group.api.location.type === 'popout') {
7930
+ const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);
7350
7931
  if (selectedGroup) {
7351
7932
  if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
7352
- 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();
7353
7942
  this._groups.delete(group.id);
7354
7943
  this._onDidRemoveGroup.fire(group);
7355
7944
  }
7356
- 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
+ }
7357
7950
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
7358
7951
  const groups = Array.from(this._groups.values());
7359
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
7952
+ this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);
7360
7953
  }
7361
- return selectedGroup.group;
7954
+ this.updateWatermark();
7955
+ return selectedGroup.popoutGroup;
7362
7956
  }
7363
7957
  throw new Error('failed to find popout group');
7364
7958
  }
7365
- 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;
7366
7966
  }
7367
- moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
7368
- 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;
7369
7984
  const sourceGroup = sourceGroupId
7370
7985
  ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
7371
7986
  : undefined;
7987
+ if (!sourceGroup) {
7988
+ throw new Error(`Failed to find group id ${sourceGroupId}`);
7989
+ }
7372
7990
  if (sourceItemId === undefined) {
7373
- if (sourceGroup) {
7374
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
7375
- }
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
+ });
7376
8001
  return;
7377
8002
  }
7378
8003
  if (!destinationTarget || destinationTarget === 'center') {
7379
- const groupItem = (_b = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _b !== void 0 ? _b : this.panels.find((panel) => panel.id === sourceItemId);
7380
- if (!groupItem) {
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) {
7381
8012
  throw new Error(`No panel with id ${sourceItemId}`);
7382
8013
  }
7383
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7384
- 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 });
7385
8017
  }
7386
- destinationGroup.model.openPanel(groupItem, {
8018
+ this.movingLock(() => destinationGroup.model.openPanel(removedPanel, {
7387
8019
  index: destinationIndex,
8020
+ skipSetGroupActive: true,
8021
+ }));
8022
+ this.doSetGroupAndPanelActive(destinationGroup);
8023
+ this._onDidMovePanel.fire({
8024
+ panel: removedPanel,
7388
8025
  });
7389
8026
  }
7390
8027
  else {
8028
+ /**
8029
+ * Dropping a panel to the extremities of a group which will place that panel
8030
+ * into an adjacent group
8031
+ */
7391
8032
  const referenceLocation = getGridLocation(destinationGroup.element);
7392
8033
  const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7393
- 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
+ */
7394
8039
  const [targetParentLocation, to] = tail(targetLocation);
7395
- if (sourceGroup.api.location === 'grid') {
8040
+ if (sourceGroup.api.location.type === 'grid') {
7396
8041
  const sourceLocation = getGridLocation(sourceGroup.element);
7397
8042
  const [sourceParentLocation, from] = tail(sourceLocation);
7398
8043
  if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
@@ -7400,78 +8045,123 @@
7400
8045
  // if a group has one tab - we are essentially moving the 'group'
7401
8046
  // which is equivalent to swapping two views in this case
7402
8047
  this.gridview.moveView(sourceParentLocation, from, to);
8048
+ return;
7403
8049
  }
7404
8050
  }
7405
8051
  // source group will become empty so delete the group
7406
- const targetGroup = this.doRemoveGroup(sourceGroup, {
8052
+ const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
7407
8053
  skipActive: true,
7408
8054
  skipDispose: true,
7409
- });
8055
+ }));
7410
8056
  // after deleting the group we need to re-evaulate the ref location
7411
8057
  const updatedReferenceLocation = getGridLocation(destinationGroup.element);
7412
8058
  const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
7413
- this.doAddGroup(targetGroup, location);
8059
+ this.movingLock(() => this.doAddGroup(targetGroup, location));
8060
+ this.doSetGroupAndPanelActive(targetGroup);
7414
8061
  }
7415
8062
  else {
7416
- const groupItem = (_c = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _c !== void 0 ? _c : this.panels.find((panel) => panel.id === sourceItemId);
7417
- if (!groupItem) {
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) {
7418
8072
  throw new Error(`No panel with id ${sourceItemId}`);
7419
8073
  }
7420
8074
  const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
7421
8075
  const group = this.createGroupAtLocation(dropLocation);
7422
- group.model.openPanel(groupItem);
8076
+ this.movingLock(() => group.model.openPanel(removedPanel, {
8077
+ skipSetGroupActive: true,
8078
+ }));
8079
+ this.doSetGroupAndPanelActive(group);
7423
8080
  }
7424
8081
  }
7425
8082
  }
7426
- moveGroup(sourceGroup, referenceGroup, target) {
7427
- if (sourceGroup) {
7428
- if (!target || target === 'center') {
7429
- const activePanel = sourceGroup.activePanel;
7430
- const panels = [...sourceGroup.panels].map((p) => sourceGroup.model.removePanel(p.id));
7431
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
7432
- this.doRemoveGroup(sourceGroup);
7433
- }
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(() => {
7434
8096
  for (const panel of panels) {
7435
- referenceGroup.model.openPanel(panel, {
7436
- skipSetPanelActive: panel !== activePanel,
8097
+ to.model.openPanel(panel, {
8098
+ skipSetActive: panel !== activePanel,
8099
+ skipSetGroupActive: true,
7437
8100
  });
7438
8101
  }
7439
- }
7440
- else {
7441
- switch (sourceGroup.api.location) {
7442
- case 'grid':
7443
- this.gridview.removeView(getGridLocation(sourceGroup.element));
7444
- break;
7445
- case 'floating': {
7446
- const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === sourceGroup);
7447
- if (!selectedFloatingGroup) {
7448
- throw new Error('failed to find floating group');
7449
- }
7450
- selectedFloatingGroup.dispose();
7451
- break;
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');
7452
8117
  }
7453
- case 'popout': {
7454
- const selectedPopoutGroup = this._popoutGroups.find((x) => x.group === sourceGroup);
7455
- if (!selectedPopoutGroup) {
7456
- throw new Error('failed to find popout group');
7457
- }
7458
- selectedPopoutGroup.dispose();
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');
7459
8125
  }
8126
+ selectedPopoutGroup.disposable.dispose();
7460
8127
  }
7461
- const referenceLocation = getGridLocation(referenceGroup.element);
7462
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
7463
- this.gridview.addView(sourceGroup, exports.Sizing.Distribute, dropLocation);
7464
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
+ });
7465
8135
  }
7466
8136
  }
7467
- doSetGroupAndPanelActive(group, skipFocus) {
7468
- 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);
7469
8147
  const activePanel = this.activePanel;
7470
- super.doSetGroupActive(group, skipFocus);
7471
- if (((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel) !== activePanel) {
7472
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
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);
7473
8156
  }
7474
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
+ }
7475
8165
  createGroup(options) {
7476
8166
  if (!options) {
7477
8167
  options = {};
@@ -7488,7 +8178,7 @@
7488
8178
  }
7489
8179
  }
7490
8180
  const view = new DockviewGroupPanel(this, id, options);
7491
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
8181
+ view.init({ params: {}, accessor: this });
7492
8182
  if (!this._groups.has(view.id)) {
7493
8183
  const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
7494
8184
  this._onWillDragPanel.fire(event);
@@ -7496,20 +8186,48 @@
7496
8186
  this._onWillDragGroup.fire(event);
7497
8187
  }), view.model.onMove((event) => {
7498
8188
  const { groupId, itemId, target, index } = event;
7499
- 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
+ });
7500
8197
  }), view.model.onDidDrop((event) => {
7501
- 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);
7502
8207
  }), view.model.onDidAddPanel((event) => {
8208
+ if (this._moving) {
8209
+ return;
8210
+ }
7503
8211
  this._onDidAddPanel.fire(event.panel);
7504
8212
  }), view.model.onDidRemovePanel((event) => {
8213
+ if (this._moving) {
8214
+ return;
8215
+ }
7505
8216
  this._onDidRemovePanel.fire(event.panel);
7506
8217
  }), view.model.onDidActivePanelChange((event) => {
7507
- 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
+ }
7508
8227
  }));
7509
8228
  this._groups.set(view.id, { value: view, disposable });
7510
8229
  }
7511
- // TODO: must be called after the above listeners have been setup,
7512
- // not an ideal pattern
8230
+ // TODO: must be called after the above listeners have been setup, not an ideal pattern
7513
8231
  view.initialize();
7514
8232
  return view;
7515
8233
  }
@@ -7562,7 +8280,20 @@
7562
8280
  });
7563
8281
  this._onDidLayoutfromJSON = new Emitter();
7564
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;
7565
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
+ }));
7566
8297
  if (!this.options.components) {
7567
8298
  this.options.components = {};
7568
8299
  }
@@ -7737,6 +8468,7 @@
7737
8468
  });
7738
8469
  this.registerPanel(view);
7739
8470
  this.doAddGroup(view, relativeLocation, options.size);
8471
+ this.doSetGroupActive(view);
7740
8472
  return view;
7741
8473
  }
7742
8474
  registerPanel(panel) {
@@ -8422,10 +9154,10 @@
8422
9154
  this._onDidChange = new Emitter();
8423
9155
  this.onDidChange = this._onDidChange.event;
8424
9156
  this.api.initialize(this);
8425
- this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
8426
- const { isVisible } = event;
9157
+ this.addDisposables(this._onDidChange, this.api.onDidHiddenChange((event) => {
9158
+ const { isHidden } = event;
8427
9159
  const { accessor } = this._params;
8428
- accessor.setVisible(this, isVisible);
9160
+ accessor.setVisible(this, !isHidden);
8429
9161
  }), this.api.onActiveChange(() => {
8430
9162
  const { accessor } = this._params;
8431
9163
  accessor.setActive(this);
@@ -8491,11 +9223,13 @@
8491
9223
  exports.DockviewApi = DockviewApi;
8492
9224
  exports.DockviewComponent = DockviewComponent;
8493
9225
  exports.DockviewCompositeDisposable = CompositeDisposable;
9226
+ exports.DockviewDidDropEvent = DockviewDidDropEvent;
8494
9227
  exports.DockviewEmitter = Emitter;
8495
9228
  exports.DockviewGroupPanel = DockviewGroupPanel;
8496
9229
  exports.DockviewGroupPanelModel = DockviewGroupPanelModel;
8497
9230
  exports.DockviewMutableDisposable = MutableDisposable;
8498
9231
  exports.DockviewPanel = DockviewPanel;
9232
+ exports.DockviewWillDropEvent = DockviewWillDropEvent;
8499
9233
  exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
8500
9234
  exports.Gridview = Gridview;
8501
9235
  exports.GridviewApi = GridviewApi;
@@ -8514,6 +9248,7 @@
8514
9248
  exports.SplitviewComponent = SplitviewComponent;
8515
9249
  exports.SplitviewPanel = SplitviewPanel;
8516
9250
  exports.Tab = Tab;
9251
+ exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
8517
9252
  exports.createComponent = createComponent;
8518
9253
  exports.directionToPosition = directionToPosition;
8519
9254
  exports.getDirectionOrientation = getDirectionOrientation;