dockview-core 1.8.5 → 1.9.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 (287) hide show
  1. package/README.md +18 -11
  2. package/dist/cjs/api/component.api.d.ts +12 -0
  3. package/dist/cjs/api/component.api.d.ts.map +1 -1
  4. package/dist/cjs/api/component.api.js +22 -0
  5. package/dist/cjs/api/component.api.js.map +1 -1
  6. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +15 -8
  7. package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +1 -1
  8. package/dist/cjs/api/dockviewGroupPanelApi.js +39 -9
  9. package/dist/cjs/api/dockviewGroupPanelApi.js.map +1 -1
  10. package/dist/cjs/api/dockviewPanelApi.d.ts +19 -2
  11. package/dist/cjs/api/dockviewPanelApi.d.ts.map +1 -1
  12. package/dist/cjs/api/dockviewPanelApi.js +23 -3
  13. package/dist/cjs/api/dockviewPanelApi.js.map +1 -1
  14. package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
  15. package/dist/cjs/api/panelApi.js.map +1 -1
  16. package/dist/cjs/api/paneviewPanelApi.js.map +1 -1
  17. package/dist/cjs/api/splitviewPanelApi.js.map +1 -1
  18. package/dist/cjs/array.js.map +1 -1
  19. package/dist/cjs/constants.d.ts +6 -0
  20. package/dist/cjs/constants.d.ts.map +1 -0
  21. package/dist/cjs/constants.js +6 -0
  22. package/dist/cjs/constants.js.map +1 -0
  23. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  24. package/dist/cjs/dnd/dataTransfer.js.map +1 -1
  25. package/dist/cjs/dnd/dnd.d.ts +5 -0
  26. package/dist/cjs/dnd/dnd.d.ts.map +1 -1
  27. package/dist/cjs/dnd/dnd.js +28 -13
  28. package/dist/cjs/dnd/dnd.js.map +1 -1
  29. package/dist/cjs/dnd/droptarget.d.ts +2 -0
  30. package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
  31. package/dist/cjs/dnd/droptarget.js +3 -2
  32. package/dist/cjs/dnd/droptarget.js.map +1 -1
  33. package/dist/cjs/dnd/groupDragHandler.js +1 -1
  34. package/dist/cjs/dnd/groupDragHandler.js.map +1 -1
  35. package/dist/cjs/dnd/overlay.d.ts +4 -17
  36. package/dist/cjs/dnd/overlay.d.ts.map +1 -1
  37. package/dist/cjs/dnd/overlay.js.map +1 -1
  38. package/dist/cjs/dockview/components/panel/content.d.ts +14 -1
  39. package/dist/cjs/dockview/components/panel/content.d.ts.map +1 -1
  40. package/dist/cjs/dockview/components/panel/content.js +85 -26
  41. package/dist/cjs/dockview/components/panel/content.js.map +1 -1
  42. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  43. package/dist/cjs/dockview/components/tab/tab.js.map +1 -1
  44. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +2 -2
  45. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
  46. package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +1 -1
  47. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  48. package/dist/cjs/dockview/deserializer.d.ts +2 -2
  49. package/dist/cjs/dockview/deserializer.d.ts.map +1 -1
  50. package/dist/cjs/dockview/deserializer.js +6 -4
  51. package/dist/cjs/dockview/deserializer.js.map +1 -1
  52. package/dist/cjs/dockview/dockviewComponent.d.ts +21 -9
  53. package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
  54. package/dist/cjs/dockview/dockviewComponent.js +287 -103
  55. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  56. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +1 -1
  57. package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -1
  58. package/dist/cjs/dockview/dockviewGroupPanel.js +4 -2
  59. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  60. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +5 -4
  61. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
  62. package/dist/cjs/dockview/dockviewGroupPanelModel.js +37 -43
  63. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
  64. package/dist/cjs/dockview/dockviewPanel.d.ts +8 -1
  65. package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -1
  66. package/dist/cjs/dockview/dockviewPanel.js +23 -1
  67. package/dist/cjs/dockview/dockviewPanel.js.map +1 -1
  68. package/dist/cjs/dockview/dockviewPanelModel.js.map +1 -1
  69. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts +16 -0
  70. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts.map +1 -0
  71. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js +50 -0
  72. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js.map +1 -0
  73. package/dist/cjs/dockview/options.d.ts +5 -0
  74. package/dist/cjs/dockview/options.d.ts.map +1 -1
  75. package/dist/cjs/dockview/options.js.map +1 -1
  76. package/dist/cjs/dockview/types.d.ts +2 -0
  77. package/dist/cjs/dockview/types.d.ts.map +1 -1
  78. package/dist/cjs/dockview/types.js.map +1 -1
  79. package/dist/cjs/dom.d.ts +12 -0
  80. package/dist/cjs/dom.d.ts.map +1 -1
  81. package/dist/cjs/dom.js +80 -1
  82. package/dist/cjs/dom.js.map +1 -1
  83. package/dist/cjs/events.js.map +1 -1
  84. package/dist/cjs/gridview/baseComponentGridview.d.ts +10 -0
  85. package/dist/cjs/gridview/baseComponentGridview.d.ts.map +1 -1
  86. package/dist/cjs/gridview/baseComponentGridview.js +19 -0
  87. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  88. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  89. package/dist/cjs/gridview/branchNode.d.ts +2 -0
  90. package/dist/cjs/gridview/branchNode.d.ts.map +1 -1
  91. package/dist/cjs/gridview/branchNode.js +37 -10
  92. package/dist/cjs/gridview/branchNode.js.map +1 -1
  93. package/dist/cjs/gridview/gridview.d.ts +10 -3
  94. package/dist/cjs/gridview/gridview.d.ts.map +1 -1
  95. package/dist/cjs/gridview/gridview.js +80 -0
  96. package/dist/cjs/gridview/gridview.js.map +1 -1
  97. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  98. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  99. package/dist/cjs/gridview/leafNode.d.ts.map +1 -1
  100. package/dist/cjs/gridview/leafNode.js +1 -2
  101. package/dist/cjs/gridview/leafNode.js.map +1 -1
  102. package/dist/cjs/index.d.ts +2 -1
  103. package/dist/cjs/index.d.ts.map +1 -1
  104. package/dist/cjs/index.js.map +1 -1
  105. package/dist/cjs/lifecycle.d.ts +1 -0
  106. package/dist/cjs/lifecycle.d.ts.map +1 -1
  107. package/dist/cjs/lifecycle.js +8 -0
  108. package/dist/cjs/lifecycle.js.map +1 -1
  109. package/dist/cjs/math.js.map +1 -1
  110. package/dist/cjs/overlayRenderContainer.d.ts +19 -0
  111. package/dist/cjs/overlayRenderContainer.d.ts.map +1 -0
  112. package/dist/cjs/overlayRenderContainer.js +170 -0
  113. package/dist/cjs/overlayRenderContainer.js.map +1 -0
  114. package/dist/cjs/panel/componentFactory.js.map +1 -1
  115. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  116. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  117. package/dist/cjs/paneview/paneview.js.map +1 -1
  118. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  119. package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
  120. package/dist/cjs/popoutWindow.d.ts +18 -0
  121. package/dist/cjs/popoutWindow.d.ts.map +1 -0
  122. package/dist/cjs/popoutWindow.js +130 -0
  123. package/dist/cjs/popoutWindow.js.map +1 -0
  124. package/dist/cjs/resizable.js +1 -1
  125. package/dist/cjs/resizable.js.map +1 -1
  126. package/dist/cjs/splitview/splitview.d.ts +5 -4
  127. package/dist/cjs/splitview/splitview.d.ts.map +1 -1
  128. package/dist/cjs/splitview/splitview.js +31 -8
  129. package/dist/cjs/splitview/splitview.js.map +1 -1
  130. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  131. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  132. package/dist/cjs/splitview/viewItem.js.map +1 -1
  133. package/dist/cjs/types.d.ts +6 -0
  134. package/dist/cjs/types.d.ts.map +1 -1
  135. package/dist/dockview-core.amd.js +896 -170
  136. package/dist/dockview-core.amd.js.map +1 -1
  137. package/dist/dockview-core.amd.min.js +2 -2
  138. package/dist/dockview-core.amd.min.js.map +1 -1
  139. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  140. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  141. package/dist/dockview-core.amd.noStyle.js +895 -169
  142. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  143. package/dist/dockview-core.cjs.js +896 -170
  144. package/dist/dockview-core.cjs.js.map +1 -1
  145. package/dist/dockview-core.esm.js +896 -170
  146. package/dist/dockview-core.esm.js.map +1 -1
  147. package/dist/dockview-core.esm.min.js +2 -2
  148. package/dist/dockview-core.esm.min.js.map +1 -1
  149. package/dist/dockview-core.js +896 -170
  150. package/dist/dockview-core.js.map +1 -1
  151. package/dist/dockview-core.min.js +2 -2
  152. package/dist/dockview-core.min.js.map +1 -1
  153. package/dist/dockview-core.min.noStyle.js +2 -2
  154. package/dist/dockview-core.min.noStyle.js.map +1 -1
  155. package/dist/dockview-core.noStyle.js +895 -169
  156. package/dist/dockview-core.noStyle.js.map +1 -1
  157. package/dist/esm/api/component.api.d.ts +12 -0
  158. package/dist/esm/api/component.api.d.ts.map +1 -1
  159. package/dist/esm/api/component.api.js +18 -0
  160. package/dist/esm/api/component.api.js.map +1 -1
  161. package/dist/esm/api/dockviewGroupPanelApi.d.ts +15 -8
  162. package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +1 -1
  163. package/dist/esm/api/dockviewGroupPanelApi.js +39 -9
  164. package/dist/esm/api/dockviewGroupPanelApi.js.map +1 -1
  165. package/dist/esm/api/dockviewPanelApi.d.ts +19 -2
  166. package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -1
  167. package/dist/esm/api/dockviewPanelApi.js +19 -3
  168. package/dist/esm/api/dockviewPanelApi.js.map +1 -1
  169. package/dist/esm/api/gridviewPanelApi.js.map +1 -1
  170. package/dist/esm/array.js.map +1 -1
  171. package/dist/esm/constants.d.ts +6 -0
  172. package/dist/esm/constants.d.ts.map +1 -0
  173. package/dist/esm/constants.js +3 -0
  174. package/dist/esm/constants.js.map +1 -0
  175. package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
  176. package/dist/esm/dnd/dataTransfer.js.map +1 -1
  177. package/dist/esm/dnd/dnd.d.ts +5 -0
  178. package/dist/esm/dnd/dnd.d.ts.map +1 -1
  179. package/dist/esm/dnd/dnd.js +28 -13
  180. package/dist/esm/dnd/dnd.js.map +1 -1
  181. package/dist/esm/dnd/droptarget.d.ts +2 -0
  182. package/dist/esm/dnd/droptarget.d.ts.map +1 -1
  183. package/dist/esm/dnd/droptarget.js +3 -2
  184. package/dist/esm/dnd/droptarget.js.map +1 -1
  185. package/dist/esm/dnd/groupDragHandler.js +1 -1
  186. package/dist/esm/dnd/groupDragHandler.js.map +1 -1
  187. package/dist/esm/dnd/overlay.d.ts +4 -17
  188. package/dist/esm/dnd/overlay.d.ts.map +1 -1
  189. package/dist/esm/dnd/overlay.js.map +1 -1
  190. package/dist/esm/dockview/components/panel/content.d.ts +14 -1
  191. package/dist/esm/dockview/components/panel/content.d.ts.map +1 -1
  192. package/dist/esm/dockview/components/panel/content.js +84 -26
  193. package/dist/esm/dockview/components/panel/content.js.map +1 -1
  194. package/dist/esm/dockview/components/tab/defaultTab.js.map +1 -1
  195. package/dist/esm/dockview/components/tab/tab.js.map +1 -1
  196. package/dist/esm/dockview/components/titlebar/tabsContainer.js +2 -2
  197. package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -1
  198. package/dist/esm/dockview/components/titlebar/voidContainer.js.map +1 -1
  199. package/dist/esm/dockview/components/watermark/watermark.js.map +1 -1
  200. package/dist/esm/dockview/deserializer.d.ts +2 -2
  201. package/dist/esm/dockview/deserializer.d.ts.map +1 -1
  202. package/dist/esm/dockview/deserializer.js +6 -4
  203. package/dist/esm/dockview/deserializer.js.map +1 -1
  204. package/dist/esm/dockview/dockviewComponent.d.ts +21 -9
  205. package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
  206. package/dist/esm/dockview/dockviewComponent.js +188 -42
  207. package/dist/esm/dockview/dockviewComponent.js.map +1 -1
  208. package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -1
  209. package/dist/esm/dockview/dockviewGroupPanel.js +4 -2
  210. package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -1
  211. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +5 -4
  212. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
  213. package/dist/esm/dockview/dockviewGroupPanelModel.js +39 -45
  214. package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -1
  215. package/dist/esm/dockview/dockviewPanel.d.ts +8 -1
  216. package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -1
  217. package/dist/esm/dockview/dockviewPanel.js +19 -1
  218. package/dist/esm/dockview/dockviewPanel.js.map +1 -1
  219. package/dist/esm/dockview/dockviewPanelModel.js.map +1 -1
  220. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts +16 -0
  221. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts.map +1 -0
  222. package/dist/esm/dockview/dockviewPopoutGroupPanel.js +28 -0
  223. package/dist/esm/dockview/dockviewPopoutGroupPanel.js.map +1 -0
  224. package/dist/esm/dockview/options.d.ts +5 -0
  225. package/dist/esm/dockview/options.d.ts.map +1 -1
  226. package/dist/esm/dockview/options.js.map +1 -1
  227. package/dist/esm/dockview/types.d.ts +2 -0
  228. package/dist/esm/dockview/types.d.ts.map +1 -1
  229. package/dist/esm/dockview/types.js.map +1 -1
  230. package/dist/esm/dom.d.ts +12 -0
  231. package/dist/esm/dom.d.ts.map +1 -1
  232. package/dist/esm/dom.js +55 -0
  233. package/dist/esm/dom.js.map +1 -1
  234. package/dist/esm/events.js.map +1 -1
  235. package/dist/esm/gridview/baseComponentGridview.d.ts +10 -0
  236. package/dist/esm/gridview/baseComponentGridview.d.ts.map +1 -1
  237. package/dist/esm/gridview/baseComponentGridview.js +15 -0
  238. package/dist/esm/gridview/baseComponentGridview.js.map +1 -1
  239. package/dist/esm/gridview/basePanelView.js.map +1 -1
  240. package/dist/esm/gridview/branchNode.d.ts +2 -0
  241. package/dist/esm/gridview/branchNode.d.ts.map +1 -1
  242. package/dist/esm/gridview/branchNode.js +26 -5
  243. package/dist/esm/gridview/branchNode.js.map +1 -1
  244. package/dist/esm/gridview/gridview.d.ts +10 -3
  245. package/dist/esm/gridview/gridview.d.ts.map +1 -1
  246. package/dist/esm/gridview/gridview.js +80 -0
  247. package/dist/esm/gridview/gridview.js.map +1 -1
  248. package/dist/esm/gridview/gridviewComponent.js.map +1 -1
  249. package/dist/esm/gridview/gridviewPanel.js.map +1 -1
  250. package/dist/esm/gridview/leafNode.d.ts.map +1 -1
  251. package/dist/esm/gridview/leafNode.js +0 -1
  252. package/dist/esm/gridview/leafNode.js.map +1 -1
  253. package/dist/esm/index.d.ts +2 -1
  254. package/dist/esm/index.d.ts.map +1 -1
  255. package/dist/esm/index.js.map +1 -1
  256. package/dist/esm/lifecycle.d.ts +1 -0
  257. package/dist/esm/lifecycle.d.ts.map +1 -1
  258. package/dist/esm/lifecycle.js +8 -0
  259. package/dist/esm/lifecycle.js.map +1 -1
  260. package/dist/esm/math.js.map +1 -1
  261. package/dist/esm/overlayRenderContainer.d.ts +19 -0
  262. package/dist/esm/overlayRenderContainer.d.ts.map +1 -0
  263. package/dist/esm/overlayRenderContainer.js +125 -0
  264. package/dist/esm/overlayRenderContainer.js.map +1 -0
  265. package/dist/esm/panel/componentFactory.js.map +1 -1
  266. package/dist/esm/paneview/defaultPaneviewHeader.js.map +1 -1
  267. package/dist/esm/paneview/draggablePaneviewPanel.js.map +1 -1
  268. package/dist/esm/paneview/paneview.js.map +1 -1
  269. package/dist/esm/paneview/paneviewComponent.js.map +1 -1
  270. package/dist/esm/paneview/paneviewPanel.js.map +1 -1
  271. package/dist/esm/popoutWindow.d.ts +18 -0
  272. package/dist/esm/popoutWindow.d.ts.map +1 -0
  273. package/dist/esm/popoutWindow.js +88 -0
  274. package/dist/esm/popoutWindow.js.map +1 -0
  275. package/dist/esm/resizable.js +2 -2
  276. package/dist/esm/resizable.js.map +1 -1
  277. package/dist/esm/splitview/splitview.d.ts +5 -4
  278. package/dist/esm/splitview/splitview.d.ts.map +1 -1
  279. package/dist/esm/splitview/splitview.js +25 -8
  280. package/dist/esm/splitview/splitview.js.map +1 -1
  281. package/dist/esm/splitview/splitviewComponent.js.map +1 -1
  282. package/dist/esm/splitview/splitviewPanel.js.map +1 -1
  283. package/dist/esm/splitview/viewItem.js.map +1 -1
  284. package/dist/esm/types.d.ts +6 -0
  285. package/dist/esm/types.d.ts.map +1 -1
  286. package/dist/styles/dockview.css +33 -2
  287. package/package.json +1 -1
@@ -25,17 +25,6 @@ var __assign = (this && this.__assign) || function () {
25
25
  };
26
26
  return __assign.apply(this, arguments);
27
27
  };
28
- var __values = (this && this.__values) || function(o) {
29
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
30
- if (m) return m.call(o);
31
- if (o && typeof o.length === "number") return {
32
- next: function () {
33
- if (o && i >= o.length) o = void 0;
34
- return { value: o && o[i++], done: !o };
35
- }
36
- };
37
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
38
- };
39
28
  var __read = (this && this.__read) || function (o, n) {
40
29
  var m = typeof Symbol === "function" && o[Symbol.iterator];
41
30
  if (!m) return o;
@@ -61,6 +50,17 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
61
50
  }
62
51
  return to.concat(ar || Array.prototype.slice.call(from));
63
52
  };
53
+ var __values = (this && this.__values) || function(o) {
54
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
55
+ if (m) return m.call(o);
56
+ if (o && typeof o.length === "number") return {
57
+ next: function () {
58
+ if (o && i >= o.length) o = void 0;
59
+ return { value: o && o[i++], done: !o };
60
+ }
61
+ };
62
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
63
+ };
64
64
  Object.defineProperty(exports, "__esModule", { value: true });
65
65
  exports.DockviewComponent = void 0;
66
66
  var gridview_1 = require("../gridview/gridview");
@@ -84,7 +84,30 @@ var dataTransfer_1 = require("../dnd/dataTransfer");
84
84
  var overlay_1 = require("../dnd/overlay");
85
85
  var dom_1 = require("../dom");
86
86
  var dockviewFloatingGroupPanel_1 = require("./dockviewFloatingGroupPanel");
87
- var DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
87
+ var dockviewPopoutGroupPanel_1 = require("./dockviewPopoutGroupPanel");
88
+ var constants_1 = require("../constants");
89
+ var overlayRenderContainer_1 = require("../overlayRenderContainer");
90
+ function getTheme(element) {
91
+ function toClassList(element) {
92
+ var list = [];
93
+ for (var i = 0; i < element.classList.length; i++) {
94
+ list.push(element.classList.item(i));
95
+ }
96
+ return list;
97
+ }
98
+ var theme = undefined;
99
+ var parent = element;
100
+ while (parent !== null) {
101
+ theme = toClassList(parent).find(function (cls) {
102
+ return cls.startsWith('dockview-theme-');
103
+ });
104
+ if (typeof theme === 'string') {
105
+ break;
106
+ }
107
+ parent = parent.parentElement;
108
+ }
109
+ return theme;
110
+ }
88
111
  function typeValidate3(data, path) {
89
112
  if (typeof data.id !== 'string') {
90
113
  throw new Error("".concat(path, ".id must be a string"));
@@ -173,12 +196,48 @@ var DockviewComponent = /** @class */ (function (_super) {
173
196
  _this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
174
197
  _this._onDidActivePanelChange = new events_1.Emitter();
175
198
  _this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
176
- _this.floatingGroups = [];
199
+ _this._floatingGroups = [];
200
+ _this._popoutGroups = [];
201
+ var gready = document.createElement('div');
202
+ gready.className = 'dv-overlay-render-container';
203
+ _this.gridview.element.appendChild(gready);
204
+ _this.overlayRenderContainer = new overlayRenderContainer_1.OverlayRenderContainer(gready);
177
205
  (0, dom_1.toggleClass)(_this.gridview.element, 'dv-dockview', true);
178
- _this.addDisposables(_this._onWillDragPanel, _this._onWillDragGroup, _this._onDidActivePanelChange, _this._onDidAddPanel, _this._onDidRemovePanel, _this._onDidLayoutFromJSON, _this._onDidDrop, events_1.Event.any(_this.onDidAddGroup, _this.onDidRemoveGroup)(function () {
206
+ (0, dom_1.toggleClass)(_this.element, 'dv-debug', !!options.debug);
207
+ _this.addDisposables(_this.overlayRenderContainer, _this._onWillDragPanel, _this._onWillDragGroup, _this._onDidActivePanelChange, _this._onDidAddPanel, _this._onDidRemovePanel, _this._onDidLayoutFromJSON, _this._onDidDrop, events_1.Event.any(_this.onDidAddGroup, _this.onDidRemoveGroup)(function () {
179
208
  _this.updateWatermark();
180
209
  }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidActivePanelChange)(function () {
181
210
  _this._bufferOnDidLayoutChange.fire();
211
+ }), lifecycle_1.Disposable.from(function () {
212
+ var e_1, _a, e_2, _b;
213
+ try {
214
+ // iterate over a copy of the array since .dispose() mutates the original array
215
+ for (var _c = __values(__spreadArray([], __read(_this._floatingGroups), false)), _d = _c.next(); !_d.done; _d = _c.next()) {
216
+ var group = _d.value;
217
+ group.dispose();
218
+ }
219
+ }
220
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
221
+ finally {
222
+ try {
223
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
224
+ }
225
+ finally { if (e_1) throw e_1.error; }
226
+ }
227
+ try {
228
+ // iterate over a copy of the array since .dispose() mutates the original array
229
+ for (var _e = __values(__spreadArray([], __read(_this._popoutGroups), false)), _f = _e.next(); !_f.done; _f = _e.next()) {
230
+ var group = _f.value;
231
+ group.dispose();
232
+ }
233
+ }
234
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
235
+ finally {
236
+ try {
237
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
238
+ }
239
+ finally { if (e_2) throw e_2.error; }
240
+ }
182
241
  }));
183
242
  _this._options = options;
184
243
  if (!_this.options.components) {
@@ -288,6 +347,64 @@ var DockviewComponent = /** @class */ (function (_super) {
288
347
  enumerable: false,
289
348
  configurable: true
290
349
  });
350
+ Object.defineProperty(DockviewComponent.prototype, "renderer", {
351
+ get: function () {
352
+ var _a;
353
+ return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
354
+ },
355
+ enumerable: false,
356
+ configurable: true
357
+ });
358
+ DockviewComponent.prototype.addPopoutGroup = function (item, options) {
359
+ var _this = this;
360
+ var _a;
361
+ var group;
362
+ var box = options === null || options === void 0 ? void 0 : options.position;
363
+ if (item instanceof dockviewPanel_1.DockviewPanel) {
364
+ group = this.createGroup();
365
+ this.removePanel(item, {
366
+ removeEmptyGroup: true,
367
+ skipDispose: true,
368
+ });
369
+ group.model.openPanel(item);
370
+ if (!box) {
371
+ box = this.element.getBoundingClientRect();
372
+ }
373
+ }
374
+ else {
375
+ group = item;
376
+ if (!box) {
377
+ box = group.element.getBoundingClientRect();
378
+ }
379
+ var skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
380
+ options.skipRemoveGroup;
381
+ if (!skip) {
382
+ this.doRemoveGroup(item, { skipDispose: true });
383
+ }
384
+ }
385
+ var theme = getTheme(this.gridview.element);
386
+ var popoutWindow = new dockviewPopoutGroupPanel_1.DockviewPopoutGroupPanel("".concat(this.id, "-").concat(group.id), // globally unique within dockview
387
+ group, {
388
+ className: theme !== null && theme !== void 0 ? theme : '',
389
+ popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
390
+ box: {
391
+ left: window.screenX + box.left,
392
+ top: window.screenY + box.top,
393
+ width: box.width,
394
+ height: box.height,
395
+ },
396
+ });
397
+ popoutWindow.addDisposables({
398
+ dispose: function () {
399
+ (0, array_1.remove)(_this._popoutGroups, popoutWindow);
400
+ _this.updateWatermark();
401
+ },
402
+ }, popoutWindow.window.onDidClose(function () {
403
+ _this.doAddGroup(group, [0]);
404
+ }));
405
+ this._popoutGroups.push(popoutWindow);
406
+ this.updateWatermark();
407
+ };
291
408
  DockviewComponent.prototype.addFloatingGroup = function (item, coord, options) {
292
409
  var _this = this;
293
410
  var _a, _b, _c, _d, _e, _f;
@@ -308,9 +425,13 @@ var DockviewComponent = /** @class */ (function (_super) {
308
425
  this.doRemoveGroup(item, { skipDispose: true });
309
426
  }
310
427
  }
311
- group.model.isFloating = true;
312
- var overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;
313
- var overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;
428
+ group.model.location = 'floating';
429
+ var overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
430
+ ? Math.max(coord.x, 0)
431
+ : constants_1.DEFAULT_FLOATING_GROUP_POSITION.left;
432
+ var overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
433
+ ? Math.max(coord.y, 0)
434
+ : constants_1.DEFAULT_FLOATING_GROUP_POSITION.top;
314
435
  var overlay = new overlay_1.Overlay({
315
436
  container: this.gridview.element,
316
437
  content: group.element,
@@ -320,10 +441,10 @@ var DockviewComponent = /** @class */ (function (_super) {
320
441
  top: overlayTop,
321
442
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
322
443
  ? undefined
323
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
444
+ : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
324
445
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
325
446
  ? undefined
326
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
447
+ : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
327
448
  });
328
449
  var el = group.element.querySelector('.void-container');
329
450
  if (!el) {
@@ -354,12 +475,12 @@ var DockviewComponent = /** @class */ (function (_super) {
354
475
  }), {
355
476
  dispose: function () {
356
477
  disposable.dispose();
357
- group.model.isFloating = false;
358
- (0, array_1.remove)(_this.floatingGroups, floatingGroupPanel);
478
+ group.model.location = 'grid';
479
+ (0, array_1.remove)(_this._floatingGroups, floatingGroupPanel);
359
480
  _this.updateWatermark();
360
481
  },
361
482
  });
362
- this.floatingGroups.push(floatingGroupPanel);
483
+ this._floatingGroups.push(floatingGroupPanel);
363
484
  this.updateWatermark();
364
485
  };
365
486
  DockviewComponent.prototype.orthogonalize = function (position) {
@@ -396,7 +517,7 @@ var DockviewComponent = /** @class */ (function (_super) {
396
517
  }
397
518
  };
398
519
  DockviewComponent.prototype.updateOptions = function (options) {
399
- var e_1, _a;
520
+ var e_3, _a;
400
521
  var _b, _c;
401
522
  var hasOrientationChanged = typeof options.orientation === 'string' &&
402
523
  this.gridview.orientation !== options.orientation;
@@ -408,7 +529,7 @@ var DockviewComponent = /** @class */ (function (_super) {
408
529
  }
409
530
  if (hasFloatingGroupOptionsChanged) {
410
531
  try {
411
- for (var _d = __values(this.floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
532
+ for (var _d = __values(this._floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
412
533
  var group = _e.value;
413
534
  switch (this.options.floatingGroupBounds) {
414
535
  case 'boundedWithinViewport':
@@ -417,9 +538,9 @@ var DockviewComponent = /** @class */ (function (_super) {
417
538
  break;
418
539
  case undefined:
419
540
  group.overlay.minimumInViewportHeight =
420
- DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
541
+ constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
421
542
  group.overlay.minimumInViewportWidth =
422
- DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
543
+ constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
423
544
  break;
424
545
  default:
425
546
  group.overlay.minimumInViewportHeight =
@@ -430,33 +551,33 @@ var DockviewComponent = /** @class */ (function (_super) {
430
551
  group.overlay.setBounds({});
431
552
  }
432
553
  }
433
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
554
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
434
555
  finally {
435
556
  try {
436
557
  if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
437
558
  }
438
- finally { if (e_1) throw e_1.error; }
559
+ finally { if (e_3) throw e_3.error; }
439
560
  }
440
561
  }
441
562
  this.layout(this.gridview.width, this.gridview.height, true);
442
563
  };
443
564
  DockviewComponent.prototype.layout = function (width, height, forceResize) {
444
- var e_2, _a;
565
+ var e_4, _a;
445
566
  _super.prototype.layout.call(this, width, height, forceResize);
446
- if (this.floatingGroups) {
567
+ if (this._floatingGroups) {
447
568
  try {
448
- for (var _b = __values(this.floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
569
+ for (var _b = __values(this._floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
449
570
  var floating = _c.value;
450
571
  // ensure floting groups stay within visible boundaries
451
572
  floating.overlay.setBounds();
452
573
  }
453
574
  }
454
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
575
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
455
576
  finally {
456
577
  try {
457
578
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
458
579
  }
459
- finally { if (e_2) throw e_2.error; }
580
+ finally { if (e_4) throw e_4.error; }
460
581
  }
461
582
  }
462
583
  };
@@ -524,10 +645,16 @@ var DockviewComponent = /** @class */ (function (_super) {
524
645
  collection[panel.id] = panel.toJSON();
525
646
  return collection;
526
647
  }, {});
527
- var floats = this.floatingGroups.map(function (floatingGroup) {
648
+ var floats = this._floatingGroups.map(function (group) {
528
649
  return {
529
- data: floatingGroup.group.toJSON(),
530
- position: floatingGroup.overlay.toJSON(),
650
+ data: group.group.toJSON(),
651
+ position: group.overlay.toJSON(),
652
+ };
653
+ });
654
+ var popoutGroups = this._popoutGroups.map(function (group) {
655
+ return {
656
+ data: group.group.toJSON(),
657
+ position: group.window.dimensions(),
531
658
  };
532
659
  });
533
660
  var result = {
@@ -538,12 +665,15 @@ var DockviewComponent = /** @class */ (function (_super) {
538
665
  if (floats.length > 0) {
539
666
  result.floatingGroups = floats;
540
667
  }
668
+ if (popoutGroups.length > 0) {
669
+ result.popoutGroups = popoutGroups;
670
+ }
541
671
  return result;
542
672
  };
543
673
  DockviewComponent.prototype.fromJSON = function (data) {
544
- var e_3, _a, e_4, _b, e_5, _c, e_6, _d, e_7, _e, e_8, _f;
674
+ var e_5, _a, e_6, _b, e_7, _c, e_8, _d, e_9, _e, e_10, _f, e_11, _g;
545
675
  var _this = this;
546
- var _g;
676
+ var _h, _j;
547
677
  this.clear();
548
678
  if (typeof data !== 'object' || data === null) {
549
679
  throw new Error('serialized layout must be a non-null object');
@@ -557,7 +687,7 @@ var DockviewComponent = /** @class */ (function (_super) {
557
687
  var width = this.width;
558
688
  var height = this.height;
559
689
  var createGroupFromSerializedState_1 = function (data) {
560
- var e_9, _a;
690
+ var e_12, _a;
561
691
  var id = data.id, locked = data.locked, hideHeader = data.hideHeader, views = data.views, activeView = data.activeView;
562
692
  if (typeof id !== 'string') {
563
693
  throw new Error('group id must be of type string');
@@ -580,12 +710,12 @@ var DockviewComponent = /** @class */ (function (_super) {
580
710
  createdPanels.push(panel);
581
711
  }
582
712
  }
583
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
713
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
584
714
  finally {
585
715
  try {
586
716
  if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
587
717
  }
588
- finally { if (e_9) throw e_9.error; }
718
+ finally { if (e_12) throw e_12.error; }
589
719
  }
590
720
  _this._onDidAddGroup.fire(group);
591
721
  for (var i = 0; i < views.length; i++) {
@@ -610,7 +740,7 @@ var DockviewComponent = /** @class */ (function (_super) {
610
740
  },
611
741
  });
612
742
  this.layout(width, height, true);
613
- var serializedFloatingGroups = (_g = data.floatingGroups) !== null && _g !== void 0 ? _g : [];
743
+ var serializedFloatingGroups = (_h = data.floatingGroups) !== null && _h !== void 0 ? _h : [];
614
744
  try {
615
745
  for (var serializedFloatingGroups_1 = __values(serializedFloatingGroups), serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next(); !serializedFloatingGroups_1_1.done; serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next()) {
616
746
  var serializedFloatingGroup = serializedFloatingGroups_1_1.value;
@@ -624,25 +754,44 @@ var DockviewComponent = /** @class */ (function (_super) {
624
754
  }, { skipRemoveGroup: true, inDragMode: false });
625
755
  }
626
756
  }
627
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
757
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
628
758
  finally {
629
759
  try {
630
760
  if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_a = serializedFloatingGroups_1.return)) _a.call(serializedFloatingGroups_1);
631
761
  }
632
- finally { if (e_3) throw e_3.error; }
762
+ finally { if (e_5) throw e_5.error; }
763
+ }
764
+ var serializedPopoutGroups = (_j = data.popoutGroups) !== null && _j !== void 0 ? _j : [];
765
+ try {
766
+ for (var serializedPopoutGroups_1 = __values(serializedPopoutGroups), serializedPopoutGroups_1_1 = serializedPopoutGroups_1.next(); !serializedPopoutGroups_1_1.done; serializedPopoutGroups_1_1 = serializedPopoutGroups_1.next()) {
767
+ var serializedPopoutGroup = serializedPopoutGroups_1_1.value;
768
+ var data_2 = serializedPopoutGroup.data, position = serializedPopoutGroup.position;
769
+ var group = createGroupFromSerializedState_1(data_2);
770
+ this.addPopoutGroup(group, {
771
+ skipRemoveGroup: true,
772
+ position: position !== null && position !== void 0 ? position : undefined,
773
+ });
774
+ }
775
+ }
776
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
777
+ finally {
778
+ try {
779
+ if (serializedPopoutGroups_1_1 && !serializedPopoutGroups_1_1.done && (_b = serializedPopoutGroups_1.return)) _b.call(serializedPopoutGroups_1);
780
+ }
781
+ finally { if (e_6) throw e_6.error; }
633
782
  }
634
783
  try {
635
- for (var _h = __values(this.floatingGroups), _j = _h.next(); !_j.done; _j = _h.next()) {
636
- var floatingGroup = _j.value;
784
+ for (var _k = __values(this._floatingGroups), _l = _k.next(); !_l.done; _l = _k.next()) {
785
+ var floatingGroup = _l.value;
637
786
  floatingGroup.overlay.setBounds();
638
787
  }
639
788
  }
640
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
789
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
641
790
  finally {
642
791
  try {
643
- if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
792
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
644
793
  }
645
- finally { if (e_4) throw e_4.error; }
794
+ finally { if (e_7) throw e_7.error; }
646
795
  }
647
796
  if (typeof activeGroup === 'string') {
648
797
  var panel = this.getPanel(activeGroup);
@@ -656,65 +805,65 @@ var DockviewComponent = /** @class */ (function (_super) {
656
805
  /**
657
806
  * Takes all the successfully created groups and remove all of their panels.
658
807
  */
659
- for (var _k = __values(this.groups), _l = _k.next(); !_l.done; _l = _k.next()) {
660
- var group = _l.value;
808
+ for (var _m = __values(this.groups), _o = _m.next(); !_o.done; _o = _m.next()) {
809
+ var group = _o.value;
661
810
  try {
662
- for (var _m = (e_6 = void 0, __values(group.panels)), _o = _m.next(); !_o.done; _o = _m.next()) {
663
- var panel = _o.value;
811
+ for (var _p = (e_9 = void 0, __values(group.panels)), _q = _p.next(); !_q.done; _q = _p.next()) {
812
+ var panel = _q.value;
664
813
  this.removePanel(panel, {
665
814
  removeEmptyGroup: false,
666
815
  skipDispose: false,
667
816
  });
668
817
  }
669
818
  }
670
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
819
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
671
820
  finally {
672
821
  try {
673
- if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
822
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
674
823
  }
675
- finally { if (e_6) throw e_6.error; }
824
+ finally { if (e_9) throw e_9.error; }
676
825
  }
677
826
  }
678
827
  }
679
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
828
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
680
829
  finally {
681
830
  try {
682
- if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
831
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
683
832
  }
684
- finally { if (e_5) throw e_5.error; }
833
+ finally { if (e_8) throw e_8.error; }
685
834
  }
686
835
  try {
687
836
  /**
688
837
  * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about
689
838
  * the underlying HTMLElement existing in the Gridview.
690
839
  */
691
- for (var _p = __values(this.groups), _q = _p.next(); !_q.done; _q = _p.next()) {
692
- var group = _q.value;
840
+ for (var _r = __values(this.groups), _s = _r.next(); !_s.done; _s = _r.next()) {
841
+ var group = _s.value;
693
842
  group.dispose();
694
843
  this._groups.delete(group.id);
695
844
  this._onDidRemoveGroup.fire(group);
696
845
  }
697
846
  }
698
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
847
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
699
848
  finally {
700
849
  try {
701
- if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
850
+ if (_s && !_s.done && (_f = _r.return)) _f.call(_r);
702
851
  }
703
- finally { if (e_7) throw e_7.error; }
852
+ finally { if (e_10) throw e_10.error; }
704
853
  }
705
854
  try {
706
855
  // iterate over a reassigned array since original array will be modified
707
- for (var _r = __values(__spreadArray([], __read(this.floatingGroups), false)), _s = _r.next(); !_s.done; _s = _r.next()) {
708
- var floatingGroup = _s.value;
856
+ for (var _t = __values(__spreadArray([], __read(this._floatingGroups), false)), _u = _t.next(); !_u.done; _u = _t.next()) {
857
+ var floatingGroup = _u.value;
709
858
  floatingGroup.dispose();
710
859
  }
711
860
  }
712
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
861
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
713
862
  finally {
714
863
  try {
715
- if (_s && !_s.done && (_f = _r.return)) _f.call(_r);
864
+ if (_u && !_u.done && (_g = _t.return)) _g.call(_t);
716
865
  }
717
- finally { if (e_8) throw e_8.error; }
866
+ finally { if (e_11) throw e_11.error; }
718
867
  }
719
868
  // fires clean-up events and clears the underlying HTML gridview.
720
869
  this.clear();
@@ -728,7 +877,7 @@ var DockviewComponent = /** @class */ (function (_super) {
728
877
  this._onDidLayoutFromJSON.fire();
729
878
  };
730
879
  DockviewComponent.prototype.clear = function () {
731
- var e_10, _a;
880
+ var e_13, _a;
732
881
  var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
733
882
  var hasActiveGroup = !!this.activeGroup;
734
883
  var hasActivePanel = !!this.activePanel;
@@ -739,12 +888,12 @@ var DockviewComponent = /** @class */ (function (_super) {
739
888
  this.removeGroup(group, { skipActive: true });
740
889
  }
741
890
  }
742
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
891
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
743
892
  finally {
744
893
  try {
745
894
  if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
746
895
  }
747
- finally { if (e_10) throw e_10.error; }
896
+ finally { if (e_13) throw e_13.error; }
748
897
  }
749
898
  if (hasActiveGroup) {
750
899
  this.doSetGroupAndPanelActive(undefined);
@@ -755,7 +904,7 @@ var DockviewComponent = /** @class */ (function (_super) {
755
904
  this.gridview.clear();
756
905
  };
757
906
  DockviewComponent.prototype.closeAllGroups = function () {
758
- var e_11, _a;
907
+ var e_14, _a;
759
908
  try {
760
909
  for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
761
910
  var entry = _c.value;
@@ -763,12 +912,12 @@ var DockviewComponent = /** @class */ (function (_super) {
763
912
  group.value.model.closeAllPanels();
764
913
  }
765
914
  }
766
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
915
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
767
916
  finally {
768
917
  try {
769
918
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
770
919
  }
771
- finally { if (e_11) throw e_11.error; }
920
+ finally { if (e_14) throw e_14.error; }
772
921
  }
773
922
  };
774
923
  DockviewComponent.prototype.addPanel = function (options) {
@@ -827,7 +976,8 @@ var DockviewComponent = /** @class */ (function (_super) {
827
976
  group.model.openPanel(panel);
828
977
  this.doSetGroupAndPanelActive(group);
829
978
  }
830
- else if (referenceGroup.api.isFloating || target === 'center') {
979
+ else if (referenceGroup.api.location === 'floating' ||
980
+ target === 'center') {
831
981
  panel = this.createPanel(options, referenceGroup);
832
982
  referenceGroup.model.openPanel(panel);
833
983
  }
@@ -872,6 +1022,7 @@ var DockviewComponent = /** @class */ (function (_super) {
872
1022
  }
873
1023
  group.model.removePanel(panel);
874
1024
  if (!options.skipDispose) {
1025
+ this.overlayRenderContainer.detatch(panel);
875
1026
  panel.dispose();
876
1027
  }
877
1028
  if (group.size === 0 && options.removeEmptyGroup) {
@@ -888,7 +1039,7 @@ var DockviewComponent = /** @class */ (function (_super) {
888
1039
  };
889
1040
  DockviewComponent.prototype.updateWatermark = function () {
890
1041
  var _a, _b;
891
- if (this.groups.filter(function (x) { return !x.api.isFloating; }).length === 0) {
1042
+ if (this.groups.filter(function (x) { return x.api.location === 'grid'; }).length === 0) {
892
1043
  if (!this.watermark) {
893
1044
  this.watermark = this.createWatermarkComponent();
894
1045
  this.watermark.init({
@@ -948,7 +1099,7 @@ var DockviewComponent = /** @class */ (function (_super) {
948
1099
  }
949
1100
  };
950
1101
  DockviewComponent.prototype.removeGroup = function (group, options) {
951
- var e_12, _a;
1102
+ var e_15, _a;
952
1103
  var _b;
953
1104
  var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
954
1105
  try {
@@ -960,12 +1111,12 @@ var DockviewComponent = /** @class */ (function (_super) {
960
1111
  });
961
1112
  }
962
1113
  }
963
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
1114
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
964
1115
  finally {
965
1116
  try {
966
1117
  if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
967
1118
  }
968
- finally { if (e_12) throw e_12.error; }
1119
+ finally { if (e_15) throw e_15.error; }
969
1120
  }
970
1121
  var activePanel = this.activePanel;
971
1122
  this.doRemoveGroup(group, options);
@@ -974,19 +1125,40 @@ var DockviewComponent = /** @class */ (function (_super) {
974
1125
  }
975
1126
  };
976
1127
  DockviewComponent.prototype.doRemoveGroup = function (group, options) {
977
- var floatingGroup = this.floatingGroups.find(function (_) { return _.group === group; });
978
- if (floatingGroup) {
979
- if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
980
- floatingGroup.group.dispose();
981
- this._groups.delete(group.id);
982
- this._onDidRemoveGroup.fire(group);
1128
+ if (group.api.location === 'floating') {
1129
+ var floatingGroup = this._floatingGroups.find(function (_) { return _.group === group; });
1130
+ if (floatingGroup) {
1131
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1132
+ floatingGroup.group.dispose();
1133
+ this._groups.delete(group.id);
1134
+ this._onDidRemoveGroup.fire(group);
1135
+ }
1136
+ (0, array_1.remove)(this._floatingGroups, floatingGroup);
1137
+ floatingGroup.dispose();
1138
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
1139
+ var groups = Array.from(this._groups.values());
1140
+ this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1141
+ }
1142
+ return floatingGroup.group;
983
1143
  }
984
- floatingGroup.dispose();
985
- if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
986
- var groups = Array.from(this._groups.values());
987
- this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1144
+ throw new Error('failed to find floating group');
1145
+ }
1146
+ if (group.api.location === 'popout') {
1147
+ var selectedGroup = this._popoutGroups.find(function (_) { return _.group === group; });
1148
+ if (selectedGroup) {
1149
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1150
+ selectedGroup.group.dispose();
1151
+ this._groups.delete(group.id);
1152
+ this._onDidRemoveGroup.fire(group);
1153
+ }
1154
+ selectedGroup.dispose();
1155
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
1156
+ var groups = Array.from(this._groups.values());
1157
+ this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1158
+ }
1159
+ return selectedGroup.group;
988
1160
  }
989
- return floatingGroup.group;
1161
+ throw new Error('failed to find popout group');
990
1162
  }
991
1163
  return _super.prototype.doRemoveGroup.call(this, group, options);
992
1164
  };
@@ -1018,8 +1190,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1018
1190
  var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
1019
1191
  if (sourceGroup && sourceGroup.size < 2) {
1020
1192
  var _d = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _d[0], to = _d[1];
1021
- var isFloating = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
1022
- if (!isFloating) {
1193
+ if (sourceGroup.api.location === 'grid') {
1023
1194
  var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
1024
1195
  var _e = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _e[0], from = _e[1];
1025
1196
  if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
@@ -1051,7 +1222,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1051
1222
  }
1052
1223
  };
1053
1224
  DockviewComponent.prototype.moveGroup = function (sourceGroup, referenceGroup, target) {
1054
- var e_13, _a;
1225
+ var e_16, _a;
1055
1226
  if (sourceGroup) {
1056
1227
  if (!target || target === 'center') {
1057
1228
  var activePanel = sourceGroup.activePanel;
@@ -1069,21 +1240,34 @@ var DockviewComponent = /** @class */ (function (_super) {
1069
1240
  });
1070
1241
  }
1071
1242
  }
1072
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
1243
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
1073
1244
  finally {
1074
1245
  try {
1075
1246
  if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
1076
1247
  }
1077
- finally { if (e_13) throw e_13.error; }
1248
+ finally { if (e_16) throw e_16.error; }
1078
1249
  }
1079
1250
  }
1080
1251
  else {
1081
- var floatingGroup = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
1082
- if (floatingGroup) {
1083
- floatingGroup.dispose();
1084
- }
1085
- else {
1086
- this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
1252
+ switch (sourceGroup.api.location) {
1253
+ case 'grid':
1254
+ this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
1255
+ break;
1256
+ case 'floating': {
1257
+ var selectedFloatingGroup = this._floatingGroups.find(function (x) { return x.group === sourceGroup; });
1258
+ if (!selectedFloatingGroup) {
1259
+ throw new Error('failed to find floating group');
1260
+ }
1261
+ selectedFloatingGroup.dispose();
1262
+ break;
1263
+ }
1264
+ case 'popout': {
1265
+ var selectedPopoutGroup = this._popoutGroups.find(function (x) { return x.group === sourceGroup; });
1266
+ if (!selectedPopoutGroup) {
1267
+ throw new Error('failed to find popout group');
1268
+ }
1269
+ selectedPopoutGroup.dispose();
1270
+ }
1087
1271
  }
1088
1272
  var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
1089
1273
  var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
@@ -1146,7 +1330,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1146
1330
  var contentComponent = options.component;
1147
1331
  var tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
1148
1332
  var view = new dockviewPanelModel_1.DockviewPanelModel(this, options.id, contentComponent, tabComponent);
1149
- var panel = new dockviewPanel_1.DockviewPanel(options.id, this, this._api, group, view);
1333
+ var panel = new dockviewPanel_1.DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
1150
1334
  panel.init({
1151
1335
  title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
1152
1336
  params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},