dockview-core 1.8.5 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) 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 +13 -12
  30. package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
  31. package/dist/cjs/dnd/droptarget.js +40 -49
  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 +23 -10
  53. package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
  54. package/dist/cjs/dockview/dockviewComponent.js +305 -115
  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 +7 -1
  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 +3 -2
  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.d.ts.map +1 -1
  125. package/dist/cjs/resizable.js +16 -1
  126. package/dist/cjs/resizable.js.map +1 -1
  127. package/dist/cjs/splitview/splitview.d.ts +5 -4
  128. package/dist/cjs/splitview/splitview.d.ts.map +1 -1
  129. package/dist/cjs/splitview/splitview.js +31 -8
  130. package/dist/cjs/splitview/splitview.js.map +1 -1
  131. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  132. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  133. package/dist/cjs/splitview/viewItem.js.map +1 -1
  134. package/dist/cjs/types.d.ts +6 -0
  135. package/dist/cjs/types.d.ts.map +1 -1
  136. package/dist/dockview-core.amd.js +966 -229
  137. package/dist/dockview-core.amd.js.map +1 -1
  138. package/dist/dockview-core.amd.min.js +2 -2
  139. package/dist/dockview-core.amd.min.js.map +1 -1
  140. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  141. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  142. package/dist/dockview-core.amd.noStyle.js +965 -228
  143. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  144. package/dist/dockview-core.cjs.js +966 -229
  145. package/dist/dockview-core.cjs.js.map +1 -1
  146. package/dist/dockview-core.esm.js +966 -229
  147. package/dist/dockview-core.esm.js.map +1 -1
  148. package/dist/dockview-core.esm.min.js +2 -2
  149. package/dist/dockview-core.esm.min.js.map +1 -1
  150. package/dist/dockview-core.js +966 -229
  151. package/dist/dockview-core.js.map +1 -1
  152. package/dist/dockview-core.min.js +2 -2
  153. package/dist/dockview-core.min.js.map +1 -1
  154. package/dist/dockview-core.min.noStyle.js +2 -2
  155. package/dist/dockview-core.min.noStyle.js.map +1 -1
  156. package/dist/dockview-core.noStyle.js +965 -228
  157. package/dist/dockview-core.noStyle.js.map +1 -1
  158. package/dist/esm/api/component.api.d.ts +12 -0
  159. package/dist/esm/api/component.api.d.ts.map +1 -1
  160. package/dist/esm/api/component.api.js +18 -0
  161. package/dist/esm/api/component.api.js.map +1 -1
  162. package/dist/esm/api/dockviewGroupPanelApi.d.ts +15 -8
  163. package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +1 -1
  164. package/dist/esm/api/dockviewGroupPanelApi.js +39 -9
  165. package/dist/esm/api/dockviewGroupPanelApi.js.map +1 -1
  166. package/dist/esm/api/dockviewPanelApi.d.ts +19 -2
  167. package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -1
  168. package/dist/esm/api/dockviewPanelApi.js +19 -3
  169. package/dist/esm/api/dockviewPanelApi.js.map +1 -1
  170. package/dist/esm/api/gridviewPanelApi.js.map +1 -1
  171. package/dist/esm/array.js.map +1 -1
  172. package/dist/esm/constants.d.ts +6 -0
  173. package/dist/esm/constants.d.ts.map +1 -0
  174. package/dist/esm/constants.js +3 -0
  175. package/dist/esm/constants.js.map +1 -0
  176. package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
  177. package/dist/esm/dnd/dataTransfer.js.map +1 -1
  178. package/dist/esm/dnd/dnd.d.ts +5 -0
  179. package/dist/esm/dnd/dnd.d.ts.map +1 -1
  180. package/dist/esm/dnd/dnd.js +28 -13
  181. package/dist/esm/dnd/dnd.js.map +1 -1
  182. package/dist/esm/dnd/droptarget.d.ts +13 -12
  183. package/dist/esm/dnd/droptarget.d.ts.map +1 -1
  184. package/dist/esm/dnd/droptarget.js +40 -49
  185. package/dist/esm/dnd/droptarget.js.map +1 -1
  186. package/dist/esm/dnd/groupDragHandler.js +1 -1
  187. package/dist/esm/dnd/groupDragHandler.js.map +1 -1
  188. package/dist/esm/dnd/overlay.d.ts +4 -17
  189. package/dist/esm/dnd/overlay.d.ts.map +1 -1
  190. package/dist/esm/dnd/overlay.js.map +1 -1
  191. package/dist/esm/dockview/components/panel/content.d.ts +14 -1
  192. package/dist/esm/dockview/components/panel/content.d.ts.map +1 -1
  193. package/dist/esm/dockview/components/panel/content.js +84 -26
  194. package/dist/esm/dockview/components/panel/content.js.map +1 -1
  195. package/dist/esm/dockview/components/tab/defaultTab.js.map +1 -1
  196. package/dist/esm/dockview/components/tab/tab.js.map +1 -1
  197. package/dist/esm/dockview/components/titlebar/tabsContainer.js +2 -2
  198. package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -1
  199. package/dist/esm/dockview/components/titlebar/voidContainer.js.map +1 -1
  200. package/dist/esm/dockview/components/watermark/watermark.js.map +1 -1
  201. package/dist/esm/dockview/deserializer.d.ts +2 -2
  202. package/dist/esm/dockview/deserializer.d.ts.map +1 -1
  203. package/dist/esm/dockview/deserializer.js +6 -4
  204. package/dist/esm/dockview/deserializer.js.map +1 -1
  205. package/dist/esm/dockview/dockviewComponent.d.ts +23 -10
  206. package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
  207. package/dist/esm/dockview/dockviewComponent.js +207 -55
  208. package/dist/esm/dockview/dockviewComponent.js.map +1 -1
  209. package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -1
  210. package/dist/esm/dockview/dockviewGroupPanel.js +4 -2
  211. package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -1
  212. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +5 -4
  213. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
  214. package/dist/esm/dockview/dockviewGroupPanelModel.js +39 -45
  215. package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -1
  216. package/dist/esm/dockview/dockviewPanel.d.ts +8 -1
  217. package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -1
  218. package/dist/esm/dockview/dockviewPanel.js +19 -1
  219. package/dist/esm/dockview/dockviewPanel.js.map +1 -1
  220. package/dist/esm/dockview/dockviewPanelModel.js.map +1 -1
  221. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts +16 -0
  222. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts.map +1 -0
  223. package/dist/esm/dockview/dockviewPopoutGroupPanel.js +28 -0
  224. package/dist/esm/dockview/dockviewPopoutGroupPanel.js.map +1 -0
  225. package/dist/esm/dockview/options.d.ts +7 -1
  226. package/dist/esm/dockview/options.d.ts.map +1 -1
  227. package/dist/esm/dockview/options.js.map +1 -1
  228. package/dist/esm/dockview/types.d.ts +2 -0
  229. package/dist/esm/dockview/types.d.ts.map +1 -1
  230. package/dist/esm/dockview/types.js.map +1 -1
  231. package/dist/esm/dom.d.ts +12 -0
  232. package/dist/esm/dom.d.ts.map +1 -1
  233. package/dist/esm/dom.js +55 -0
  234. package/dist/esm/dom.js.map +1 -1
  235. package/dist/esm/events.js.map +1 -1
  236. package/dist/esm/gridview/baseComponentGridview.d.ts +10 -0
  237. package/dist/esm/gridview/baseComponentGridview.d.ts.map +1 -1
  238. package/dist/esm/gridview/baseComponentGridview.js +15 -0
  239. package/dist/esm/gridview/baseComponentGridview.js.map +1 -1
  240. package/dist/esm/gridview/basePanelView.js.map +1 -1
  241. package/dist/esm/gridview/branchNode.d.ts +2 -0
  242. package/dist/esm/gridview/branchNode.d.ts.map +1 -1
  243. package/dist/esm/gridview/branchNode.js +26 -5
  244. package/dist/esm/gridview/branchNode.js.map +1 -1
  245. package/dist/esm/gridview/gridview.d.ts +10 -3
  246. package/dist/esm/gridview/gridview.d.ts.map +1 -1
  247. package/dist/esm/gridview/gridview.js +80 -0
  248. package/dist/esm/gridview/gridview.js.map +1 -1
  249. package/dist/esm/gridview/gridviewComponent.js.map +1 -1
  250. package/dist/esm/gridview/gridviewPanel.js.map +1 -1
  251. package/dist/esm/gridview/leafNode.d.ts.map +1 -1
  252. package/dist/esm/gridview/leafNode.js +0 -1
  253. package/dist/esm/gridview/leafNode.js.map +1 -1
  254. package/dist/esm/index.d.ts +3 -2
  255. package/dist/esm/index.d.ts.map +1 -1
  256. package/dist/esm/index.js.map +1 -1
  257. package/dist/esm/lifecycle.d.ts +1 -0
  258. package/dist/esm/lifecycle.d.ts.map +1 -1
  259. package/dist/esm/lifecycle.js +8 -0
  260. package/dist/esm/lifecycle.js.map +1 -1
  261. package/dist/esm/math.js.map +1 -1
  262. package/dist/esm/overlayRenderContainer.d.ts +19 -0
  263. package/dist/esm/overlayRenderContainer.d.ts.map +1 -0
  264. package/dist/esm/overlayRenderContainer.js +125 -0
  265. package/dist/esm/overlayRenderContainer.js.map +1 -0
  266. package/dist/esm/panel/componentFactory.js.map +1 -1
  267. package/dist/esm/paneview/defaultPaneviewHeader.js.map +1 -1
  268. package/dist/esm/paneview/draggablePaneviewPanel.js.map +1 -1
  269. package/dist/esm/paneview/paneview.js.map +1 -1
  270. package/dist/esm/paneview/paneviewComponent.js.map +1 -1
  271. package/dist/esm/paneview/paneviewPanel.js.map +1 -1
  272. package/dist/esm/popoutWindow.d.ts +18 -0
  273. package/dist/esm/popoutWindow.d.ts.map +1 -0
  274. package/dist/esm/popoutWindow.js +88 -0
  275. package/dist/esm/popoutWindow.js.map +1 -0
  276. package/dist/esm/resizable.d.ts.map +1 -1
  277. package/dist/esm/resizable.js +17 -2
  278. package/dist/esm/resizable.js.map +1 -1
  279. package/dist/esm/splitview/splitview.d.ts +5 -4
  280. package/dist/esm/splitview/splitview.d.ts.map +1 -1
  281. package/dist/esm/splitview/splitview.js +25 -8
  282. package/dist/esm/splitview/splitview.js.map +1 -1
  283. package/dist/esm/splitview/splitviewComponent.js.map +1 -1
  284. package/dist/esm/splitview/splitviewPanel.js.map +1 -1
  285. package/dist/esm/splitview/viewItem.js.map +1 -1
  286. package/dist/esm/types.d.ts +6 -0
  287. package/dist/esm/types.d.ts.map +1 -1
  288. package/dist/styles/dockview.css +38 -7
  289. 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,34 @@ 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
+ var DEFAULT_ROOT_OVERLAY_MODEL = {
91
+ activationSize: { type: 'pixels', value: 10 },
92
+ size: { type: 'pixels', value: 20 },
93
+ };
94
+ function getTheme(element) {
95
+ function toClassList(element) {
96
+ var list = [];
97
+ for (var i = 0; i < element.classList.length; i++) {
98
+ list.push(element.classList.item(i));
99
+ }
100
+ return list;
101
+ }
102
+ var theme = undefined;
103
+ var parent = element;
104
+ while (parent !== null) {
105
+ theme = toClassList(parent).find(function (cls) {
106
+ return cls.startsWith('dockview-theme-');
107
+ });
108
+ if (typeof theme === 'string') {
109
+ break;
110
+ }
111
+ parent = parent.parentElement;
112
+ }
113
+ return theme;
114
+ }
88
115
  function typeValidate3(data, path) {
89
116
  if (typeof data.id !== 'string') {
90
117
  throw new Error("".concat(path, ".id must be a string"));
@@ -148,7 +175,7 @@ function typeValidate(data) {
148
175
  var DockviewComponent = /** @class */ (function (_super) {
149
176
  __extends(DockviewComponent, _super);
150
177
  function DockviewComponent(options) {
151
- var _a;
178
+ var _a, _b;
152
179
  var _this = _super.call(this, {
153
180
  proportionalLayout: true,
154
181
  orientation: (_a = options.orientation) !== null && _a !== void 0 ? _a : splitview_1.Orientation.HORIZONTAL,
@@ -173,12 +200,48 @@ var DockviewComponent = /** @class */ (function (_super) {
173
200
  _this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
174
201
  _this._onDidActivePanelChange = new events_1.Emitter();
175
202
  _this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
176
- _this.floatingGroups = [];
203
+ _this._floatingGroups = [];
204
+ _this._popoutGroups = [];
205
+ var gready = document.createElement('div');
206
+ gready.className = 'dv-overlay-render-container';
207
+ _this.gridview.element.appendChild(gready);
208
+ _this.overlayRenderContainer = new overlayRenderContainer_1.OverlayRenderContainer(gready);
177
209
  (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 () {
210
+ (0, dom_1.toggleClass)(_this.element, 'dv-debug', !!options.debug);
211
+ _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
212
  _this.updateWatermark();
180
213
  }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidActivePanelChange)(function () {
181
214
  _this._bufferOnDidLayoutChange.fire();
215
+ }), lifecycle_1.Disposable.from(function () {
216
+ var e_1, _a, e_2, _b;
217
+ try {
218
+ // iterate over a copy of the array since .dispose() mutates the original array
219
+ for (var _c = __values(__spreadArray([], __read(_this._floatingGroups), false)), _d = _c.next(); !_d.done; _d = _c.next()) {
220
+ var group = _d.value;
221
+ group.dispose();
222
+ }
223
+ }
224
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
225
+ finally {
226
+ try {
227
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
228
+ }
229
+ finally { if (e_1) throw e_1.error; }
230
+ }
231
+ try {
232
+ // iterate over a copy of the array since .dispose() mutates the original array
233
+ for (var _e = __values(__spreadArray([], __read(_this._popoutGroups), false)), _f = _e.next(); !_f.done; _f = _e.next()) {
234
+ var group = _f.value;
235
+ group.dispose();
236
+ }
237
+ }
238
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
239
+ finally {
240
+ try {
241
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
242
+ }
243
+ finally { if (e_2) throw e_2.error; }
244
+ }
182
245
  }));
183
246
  _this._options = options;
184
247
  if (!_this.options.components) {
@@ -197,7 +260,7 @@ var DockviewComponent = /** @class */ (function (_super) {
197
260
  !_this.options.watermarkFrameworkComponent) {
198
261
  _this.options.watermarkComponent = watermark_1.Watermark;
199
262
  }
200
- var dropTarget = new droptarget_1.Droptarget(_this.element, {
263
+ _this._rootDropTarget = new droptarget_1.Droptarget(_this.element, {
201
264
  canDisplayOverlay: function (event, position) {
202
265
  var data = (0, dataTransfer_1.getPanelData)();
203
266
  if (data) {
@@ -230,12 +293,9 @@ var DockviewComponent = /** @class */ (function (_super) {
230
293
  return false;
231
294
  },
232
295
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
233
- overlayModel: {
234
- activationSize: { type: 'pixels', value: 10 },
235
- size: { type: 'pixels', value: 20 },
236
- },
296
+ overlayModel: (_b = _this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
237
297
  });
238
- _this.addDisposables(dropTarget.onDrop(function (event) {
298
+ _this.addDisposables(_this._rootDropTarget.onDrop(function (event) {
239
299
  var _a;
240
300
  var data = (0, dataTransfer_1.getPanelData)();
241
301
  if (data) {
@@ -244,7 +304,7 @@ var DockviewComponent = /** @class */ (function (_super) {
244
304
  else {
245
305
  _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: null, getData: dataTransfer_1.getPanelData }));
246
306
  }
247
- }), dropTarget);
307
+ }), _this._rootDropTarget);
248
308
  _this._api = new component_api_1.DockviewApi(_this);
249
309
  _this.updateWatermark();
250
310
  return _this;
@@ -288,6 +348,64 @@ var DockviewComponent = /** @class */ (function (_super) {
288
348
  enumerable: false,
289
349
  configurable: true
290
350
  });
351
+ Object.defineProperty(DockviewComponent.prototype, "renderer", {
352
+ get: function () {
353
+ var _a;
354
+ return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
355
+ },
356
+ enumerable: false,
357
+ configurable: true
358
+ });
359
+ DockviewComponent.prototype.addPopoutGroup = function (item, options) {
360
+ var _this = this;
361
+ var _a;
362
+ var group;
363
+ var box = options === null || options === void 0 ? void 0 : options.position;
364
+ if (item instanceof dockviewPanel_1.DockviewPanel) {
365
+ group = this.createGroup();
366
+ this.removePanel(item, {
367
+ removeEmptyGroup: true,
368
+ skipDispose: true,
369
+ });
370
+ group.model.openPanel(item);
371
+ if (!box) {
372
+ box = this.element.getBoundingClientRect();
373
+ }
374
+ }
375
+ else {
376
+ group = item;
377
+ if (!box) {
378
+ box = group.element.getBoundingClientRect();
379
+ }
380
+ var skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
381
+ options.skipRemoveGroup;
382
+ if (!skip) {
383
+ this.doRemoveGroup(item, { skipDispose: true });
384
+ }
385
+ }
386
+ var theme = getTheme(this.gridview.element);
387
+ var popoutWindow = new dockviewPopoutGroupPanel_1.DockviewPopoutGroupPanel("".concat(this.id, "-").concat(group.id), // globally unique within dockview
388
+ group, {
389
+ className: theme !== null && theme !== void 0 ? theme : '',
390
+ popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
391
+ box: {
392
+ left: window.screenX + box.left,
393
+ top: window.screenY + box.top,
394
+ width: box.width,
395
+ height: box.height,
396
+ },
397
+ });
398
+ popoutWindow.addDisposables({
399
+ dispose: function () {
400
+ (0, array_1.remove)(_this._popoutGroups, popoutWindow);
401
+ _this.updateWatermark();
402
+ },
403
+ }, popoutWindow.window.onDidClose(function () {
404
+ _this.doAddGroup(group, [0]);
405
+ }));
406
+ this._popoutGroups.push(popoutWindow);
407
+ this.updateWatermark();
408
+ };
291
409
  DockviewComponent.prototype.addFloatingGroup = function (item, coord, options) {
292
410
  var _this = this;
293
411
  var _a, _b, _c, _d, _e, _f;
@@ -308,9 +426,13 @@ var DockviewComponent = /** @class */ (function (_super) {
308
426
  this.doRemoveGroup(item, { skipDispose: true });
309
427
  }
310
428
  }
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;
429
+ group.model.location = 'floating';
430
+ var overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
431
+ ? Math.max(coord.x, 0)
432
+ : constants_1.DEFAULT_FLOATING_GROUP_POSITION.left;
433
+ var overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
434
+ ? Math.max(coord.y, 0)
435
+ : constants_1.DEFAULT_FLOATING_GROUP_POSITION.top;
314
436
  var overlay = new overlay_1.Overlay({
315
437
  container: this.gridview.element,
316
438
  content: group.element,
@@ -320,10 +442,10 @@ var DockviewComponent = /** @class */ (function (_super) {
320
442
  top: overlayTop,
321
443
  minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
322
444
  ? 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,
445
+ : (_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
446
  minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
325
447
  ? 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,
448
+ : (_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
449
  });
328
450
  var el = group.element.querySelector('.void-container');
329
451
  if (!el) {
@@ -354,12 +476,12 @@ var DockviewComponent = /** @class */ (function (_super) {
354
476
  }), {
355
477
  dispose: function () {
356
478
  disposable.dispose();
357
- group.model.isFloating = false;
358
- (0, array_1.remove)(_this.floatingGroups, floatingGroupPanel);
479
+ group.model.location = 'grid';
480
+ (0, array_1.remove)(_this._floatingGroups, floatingGroupPanel);
359
481
  _this.updateWatermark();
360
482
  },
361
483
  });
362
- this.floatingGroups.push(floatingGroupPanel);
484
+ this._floatingGroups.push(floatingGroupPanel);
363
485
  this.updateWatermark();
364
486
  };
365
487
  DockviewComponent.prototype.orthogonalize = function (position) {
@@ -396,19 +518,21 @@ var DockviewComponent = /** @class */ (function (_super) {
396
518
  }
397
519
  };
398
520
  DockviewComponent.prototype.updateOptions = function (options) {
399
- var e_1, _a;
521
+ var e_3, _a;
400
522
  var _b, _c;
401
- var hasOrientationChanged = typeof options.orientation === 'string' &&
523
+ var changed_orientation = typeof options.orientation === 'string' &&
402
524
  this.gridview.orientation !== options.orientation;
403
- var hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&
525
+ var changed_floatingGroupBounds = options.floatingGroupBounds !== undefined &&
404
526
  options.floatingGroupBounds !== this.options.floatingGroupBounds;
527
+ var changed_rootOverlayOptions = options.rootOverlayModel !== undefined &&
528
+ options.rootOverlayModel !== this.options.rootOverlayModel;
405
529
  this._options = __assign(__assign({}, this.options), options);
406
- if (hasOrientationChanged) {
530
+ if (changed_orientation) {
407
531
  this.gridview.orientation = options.orientation;
408
532
  }
409
- if (hasFloatingGroupOptionsChanged) {
533
+ if (changed_floatingGroupBounds) {
410
534
  try {
411
- for (var _d = __values(this.floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
535
+ for (var _d = __values(this._floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
412
536
  var group = _e.value;
413
537
  switch (this.options.floatingGroupBounds) {
414
538
  case 'boundedWithinViewport':
@@ -417,9 +541,9 @@ var DockviewComponent = /** @class */ (function (_super) {
417
541
  break;
418
542
  case undefined:
419
543
  group.overlay.minimumInViewportHeight =
420
- DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
544
+ constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
421
545
  group.overlay.minimumInViewportWidth =
422
- DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
546
+ constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
423
547
  break;
424
548
  default:
425
549
  group.overlay.minimumInViewportHeight =
@@ -430,33 +554,36 @@ var DockviewComponent = /** @class */ (function (_super) {
430
554
  group.overlay.setBounds({});
431
555
  }
432
556
  }
433
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
557
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
434
558
  finally {
435
559
  try {
436
560
  if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
437
561
  }
438
- finally { if (e_1) throw e_1.error; }
562
+ finally { if (e_3) throw e_3.error; }
439
563
  }
440
564
  }
565
+ if (changed_rootOverlayOptions) {
566
+ this._rootDropTarget.setOverlayModel(options.rootOverlayModel);
567
+ }
441
568
  this.layout(this.gridview.width, this.gridview.height, true);
442
569
  };
443
570
  DockviewComponent.prototype.layout = function (width, height, forceResize) {
444
- var e_2, _a;
571
+ var e_4, _a;
445
572
  _super.prototype.layout.call(this, width, height, forceResize);
446
- if (this.floatingGroups) {
573
+ if (this._floatingGroups) {
447
574
  try {
448
- for (var _b = __values(this.floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
575
+ for (var _b = __values(this._floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
449
576
  var floating = _c.value;
450
577
  // ensure floting groups stay within visible boundaries
451
578
  floating.overlay.setBounds();
452
579
  }
453
580
  }
454
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
581
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
455
582
  finally {
456
583
  try {
457
584
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
458
585
  }
459
- finally { if (e_2) throw e_2.error; }
586
+ finally { if (e_4) throw e_4.error; }
460
587
  }
461
588
  }
462
589
  };
@@ -524,10 +651,16 @@ var DockviewComponent = /** @class */ (function (_super) {
524
651
  collection[panel.id] = panel.toJSON();
525
652
  return collection;
526
653
  }, {});
527
- var floats = this.floatingGroups.map(function (floatingGroup) {
654
+ var floats = this._floatingGroups.map(function (group) {
528
655
  return {
529
- data: floatingGroup.group.toJSON(),
530
- position: floatingGroup.overlay.toJSON(),
656
+ data: group.group.toJSON(),
657
+ position: group.overlay.toJSON(),
658
+ };
659
+ });
660
+ var popoutGroups = this._popoutGroups.map(function (group) {
661
+ return {
662
+ data: group.group.toJSON(),
663
+ position: group.window.dimensions(),
531
664
  };
532
665
  });
533
666
  var result = {
@@ -538,12 +671,15 @@ var DockviewComponent = /** @class */ (function (_super) {
538
671
  if (floats.length > 0) {
539
672
  result.floatingGroups = floats;
540
673
  }
674
+ if (popoutGroups.length > 0) {
675
+ result.popoutGroups = popoutGroups;
676
+ }
541
677
  return result;
542
678
  };
543
679
  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;
680
+ var e_5, _a, e_6, _b, e_7, _c, e_8, _d, e_9, _e, e_10, _f, e_11, _g;
545
681
  var _this = this;
546
- var _g;
682
+ var _h, _j;
547
683
  this.clear();
548
684
  if (typeof data !== 'object' || data === null) {
549
685
  throw new Error('serialized layout must be a non-null object');
@@ -557,7 +693,7 @@ var DockviewComponent = /** @class */ (function (_super) {
557
693
  var width = this.width;
558
694
  var height = this.height;
559
695
  var createGroupFromSerializedState_1 = function (data) {
560
- var e_9, _a;
696
+ var e_12, _a;
561
697
  var id = data.id, locked = data.locked, hideHeader = data.hideHeader, views = data.views, activeView = data.activeView;
562
698
  if (typeof id !== 'string') {
563
699
  throw new Error('group id must be of type string');
@@ -580,12 +716,12 @@ var DockviewComponent = /** @class */ (function (_super) {
580
716
  createdPanels.push(panel);
581
717
  }
582
718
  }
583
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
719
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
584
720
  finally {
585
721
  try {
586
722
  if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
587
723
  }
588
- finally { if (e_9) throw e_9.error; }
724
+ finally { if (e_12) throw e_12.error; }
589
725
  }
590
726
  _this._onDidAddGroup.fire(group);
591
727
  for (var i = 0; i < views.length; i++) {
@@ -610,7 +746,7 @@ var DockviewComponent = /** @class */ (function (_super) {
610
746
  },
611
747
  });
612
748
  this.layout(width, height, true);
613
- var serializedFloatingGroups = (_g = data.floatingGroups) !== null && _g !== void 0 ? _g : [];
749
+ var serializedFloatingGroups = (_h = data.floatingGroups) !== null && _h !== void 0 ? _h : [];
614
750
  try {
615
751
  for (var serializedFloatingGroups_1 = __values(serializedFloatingGroups), serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next(); !serializedFloatingGroups_1_1.done; serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next()) {
616
752
  var serializedFloatingGroup = serializedFloatingGroups_1_1.value;
@@ -624,25 +760,44 @@ var DockviewComponent = /** @class */ (function (_super) {
624
760
  }, { skipRemoveGroup: true, inDragMode: false });
625
761
  }
626
762
  }
627
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
763
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
628
764
  finally {
629
765
  try {
630
766
  if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_a = serializedFloatingGroups_1.return)) _a.call(serializedFloatingGroups_1);
631
767
  }
632
- finally { if (e_3) throw e_3.error; }
768
+ finally { if (e_5) throw e_5.error; }
769
+ }
770
+ var serializedPopoutGroups = (_j = data.popoutGroups) !== null && _j !== void 0 ? _j : [];
771
+ try {
772
+ for (var serializedPopoutGroups_1 = __values(serializedPopoutGroups), serializedPopoutGroups_1_1 = serializedPopoutGroups_1.next(); !serializedPopoutGroups_1_1.done; serializedPopoutGroups_1_1 = serializedPopoutGroups_1.next()) {
773
+ var serializedPopoutGroup = serializedPopoutGroups_1_1.value;
774
+ var data_2 = serializedPopoutGroup.data, position = serializedPopoutGroup.position;
775
+ var group = createGroupFromSerializedState_1(data_2);
776
+ this.addPopoutGroup(group, {
777
+ skipRemoveGroup: true,
778
+ position: position !== null && position !== void 0 ? position : undefined,
779
+ });
780
+ }
781
+ }
782
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
783
+ finally {
784
+ try {
785
+ if (serializedPopoutGroups_1_1 && !serializedPopoutGroups_1_1.done && (_b = serializedPopoutGroups_1.return)) _b.call(serializedPopoutGroups_1);
786
+ }
787
+ finally { if (e_6) throw e_6.error; }
633
788
  }
634
789
  try {
635
- for (var _h = __values(this.floatingGroups), _j = _h.next(); !_j.done; _j = _h.next()) {
636
- var floatingGroup = _j.value;
790
+ for (var _k = __values(this._floatingGroups), _l = _k.next(); !_l.done; _l = _k.next()) {
791
+ var floatingGroup = _l.value;
637
792
  floatingGroup.overlay.setBounds();
638
793
  }
639
794
  }
640
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
795
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
641
796
  finally {
642
797
  try {
643
- if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
798
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
644
799
  }
645
- finally { if (e_4) throw e_4.error; }
800
+ finally { if (e_7) throw e_7.error; }
646
801
  }
647
802
  if (typeof activeGroup === 'string') {
648
803
  var panel = this.getPanel(activeGroup);
@@ -656,65 +811,65 @@ var DockviewComponent = /** @class */ (function (_super) {
656
811
  /**
657
812
  * Takes all the successfully created groups and remove all of their panels.
658
813
  */
659
- for (var _k = __values(this.groups), _l = _k.next(); !_l.done; _l = _k.next()) {
660
- var group = _l.value;
814
+ for (var _m = __values(this.groups), _o = _m.next(); !_o.done; _o = _m.next()) {
815
+ var group = _o.value;
661
816
  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;
817
+ for (var _p = (e_9 = void 0, __values(group.panels)), _q = _p.next(); !_q.done; _q = _p.next()) {
818
+ var panel = _q.value;
664
819
  this.removePanel(panel, {
665
820
  removeEmptyGroup: false,
666
821
  skipDispose: false,
667
822
  });
668
823
  }
669
824
  }
670
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
825
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
671
826
  finally {
672
827
  try {
673
- if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
828
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
674
829
  }
675
- finally { if (e_6) throw e_6.error; }
830
+ finally { if (e_9) throw e_9.error; }
676
831
  }
677
832
  }
678
833
  }
679
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
834
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
680
835
  finally {
681
836
  try {
682
- if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
837
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
683
838
  }
684
- finally { if (e_5) throw e_5.error; }
839
+ finally { if (e_8) throw e_8.error; }
685
840
  }
686
841
  try {
687
842
  /**
688
843
  * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about
689
844
  * the underlying HTMLElement existing in the Gridview.
690
845
  */
691
- for (var _p = __values(this.groups), _q = _p.next(); !_q.done; _q = _p.next()) {
692
- var group = _q.value;
846
+ for (var _r = __values(this.groups), _s = _r.next(); !_s.done; _s = _r.next()) {
847
+ var group = _s.value;
693
848
  group.dispose();
694
849
  this._groups.delete(group.id);
695
850
  this._onDidRemoveGroup.fire(group);
696
851
  }
697
852
  }
698
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
853
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
699
854
  finally {
700
855
  try {
701
- if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
856
+ if (_s && !_s.done && (_f = _r.return)) _f.call(_r);
702
857
  }
703
- finally { if (e_7) throw e_7.error; }
858
+ finally { if (e_10) throw e_10.error; }
704
859
  }
705
860
  try {
706
861
  // 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;
862
+ for (var _t = __values(__spreadArray([], __read(this._floatingGroups), false)), _u = _t.next(); !_u.done; _u = _t.next()) {
863
+ var floatingGroup = _u.value;
709
864
  floatingGroup.dispose();
710
865
  }
711
866
  }
712
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
867
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
713
868
  finally {
714
869
  try {
715
- if (_s && !_s.done && (_f = _r.return)) _f.call(_r);
870
+ if (_u && !_u.done && (_g = _t.return)) _g.call(_t);
716
871
  }
717
- finally { if (e_8) throw e_8.error; }
872
+ finally { if (e_11) throw e_11.error; }
718
873
  }
719
874
  // fires clean-up events and clears the underlying HTML gridview.
720
875
  this.clear();
@@ -728,7 +883,7 @@ var DockviewComponent = /** @class */ (function (_super) {
728
883
  this._onDidLayoutFromJSON.fire();
729
884
  };
730
885
  DockviewComponent.prototype.clear = function () {
731
- var e_10, _a;
886
+ var e_13, _a;
732
887
  var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
733
888
  var hasActiveGroup = !!this.activeGroup;
734
889
  var hasActivePanel = !!this.activePanel;
@@ -739,12 +894,12 @@ var DockviewComponent = /** @class */ (function (_super) {
739
894
  this.removeGroup(group, { skipActive: true });
740
895
  }
741
896
  }
742
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
897
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
743
898
  finally {
744
899
  try {
745
900
  if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
746
901
  }
747
- finally { if (e_10) throw e_10.error; }
902
+ finally { if (e_13) throw e_13.error; }
748
903
  }
749
904
  if (hasActiveGroup) {
750
905
  this.doSetGroupAndPanelActive(undefined);
@@ -755,7 +910,7 @@ var DockviewComponent = /** @class */ (function (_super) {
755
910
  this.gridview.clear();
756
911
  };
757
912
  DockviewComponent.prototype.closeAllGroups = function () {
758
- var e_11, _a;
913
+ var e_14, _a;
759
914
  try {
760
915
  for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
761
916
  var entry = _c.value;
@@ -763,12 +918,12 @@ var DockviewComponent = /** @class */ (function (_super) {
763
918
  group.value.model.closeAllPanels();
764
919
  }
765
920
  }
766
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
921
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
767
922
  finally {
768
923
  try {
769
924
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
770
925
  }
771
- finally { if (e_11) throw e_11.error; }
926
+ finally { if (e_14) throw e_14.error; }
772
927
  }
773
928
  };
774
929
  DockviewComponent.prototype.addPanel = function (options) {
@@ -827,7 +982,8 @@ var DockviewComponent = /** @class */ (function (_super) {
827
982
  group.model.openPanel(panel);
828
983
  this.doSetGroupAndPanelActive(group);
829
984
  }
830
- else if (referenceGroup.api.isFloating || target === 'center') {
985
+ else if (referenceGroup.api.location === 'floating' ||
986
+ target === 'center') {
831
987
  panel = this.createPanel(options, referenceGroup);
832
988
  referenceGroup.model.openPanel(panel);
833
989
  }
@@ -872,6 +1028,7 @@ var DockviewComponent = /** @class */ (function (_super) {
872
1028
  }
873
1029
  group.model.removePanel(panel);
874
1030
  if (!options.skipDispose) {
1031
+ this.overlayRenderContainer.detatch(panel);
875
1032
  panel.dispose();
876
1033
  }
877
1034
  if (group.size === 0 && options.removeEmptyGroup) {
@@ -888,7 +1045,7 @@ var DockviewComponent = /** @class */ (function (_super) {
888
1045
  };
889
1046
  DockviewComponent.prototype.updateWatermark = function () {
890
1047
  var _a, _b;
891
- if (this.groups.filter(function (x) { return !x.api.isFloating; }).length === 0) {
1048
+ if (this.groups.filter(function (x) { return x.api.location === 'grid'; }).length === 0) {
892
1049
  if (!this.watermark) {
893
1050
  this.watermark = this.createWatermarkComponent();
894
1051
  this.watermark.init({
@@ -948,7 +1105,7 @@ var DockviewComponent = /** @class */ (function (_super) {
948
1105
  }
949
1106
  };
950
1107
  DockviewComponent.prototype.removeGroup = function (group, options) {
951
- var e_12, _a;
1108
+ var e_15, _a;
952
1109
  var _b;
953
1110
  var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
954
1111
  try {
@@ -960,12 +1117,12 @@ var DockviewComponent = /** @class */ (function (_super) {
960
1117
  });
961
1118
  }
962
1119
  }
963
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
1120
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
964
1121
  finally {
965
1122
  try {
966
1123
  if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
967
1124
  }
968
- finally { if (e_12) throw e_12.error; }
1125
+ finally { if (e_15) throw e_15.error; }
969
1126
  }
970
1127
  var activePanel = this.activePanel;
971
1128
  this.doRemoveGroup(group, options);
@@ -974,19 +1131,40 @@ var DockviewComponent = /** @class */ (function (_super) {
974
1131
  }
975
1132
  };
976
1133
  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);
1134
+ if (group.api.location === 'floating') {
1135
+ var floatingGroup = this._floatingGroups.find(function (_) { return _.group === group; });
1136
+ if (floatingGroup) {
1137
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1138
+ floatingGroup.group.dispose();
1139
+ this._groups.delete(group.id);
1140
+ this._onDidRemoveGroup.fire(group);
1141
+ }
1142
+ (0, array_1.remove)(this._floatingGroups, floatingGroup);
1143
+ floatingGroup.dispose();
1144
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
1145
+ var groups = Array.from(this._groups.values());
1146
+ this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1147
+ }
1148
+ return floatingGroup.group;
983
1149
  }
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);
1150
+ throw new Error('failed to find floating group');
1151
+ }
1152
+ if (group.api.location === 'popout') {
1153
+ var selectedGroup = this._popoutGroups.find(function (_) { return _.group === group; });
1154
+ if (selectedGroup) {
1155
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1156
+ selectedGroup.group.dispose();
1157
+ this._groups.delete(group.id);
1158
+ this._onDidRemoveGroup.fire(group);
1159
+ }
1160
+ selectedGroup.dispose();
1161
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
1162
+ var groups = Array.from(this._groups.values());
1163
+ this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1164
+ }
1165
+ return selectedGroup.group;
988
1166
  }
989
- return floatingGroup.group;
1167
+ throw new Error('failed to find popout group');
990
1168
  }
991
1169
  return _super.prototype.doRemoveGroup.call(this, group, options);
992
1170
  };
@@ -1018,8 +1196,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1018
1196
  var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
1019
1197
  if (sourceGroup && sourceGroup.size < 2) {
1020
1198
  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) {
1199
+ if (sourceGroup.api.location === 'grid') {
1023
1200
  var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
1024
1201
  var _e = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _e[0], from = _e[1];
1025
1202
  if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
@@ -1051,7 +1228,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1051
1228
  }
1052
1229
  };
1053
1230
  DockviewComponent.prototype.moveGroup = function (sourceGroup, referenceGroup, target) {
1054
- var e_13, _a;
1231
+ var e_16, _a;
1055
1232
  if (sourceGroup) {
1056
1233
  if (!target || target === 'center') {
1057
1234
  var activePanel = sourceGroup.activePanel;
@@ -1069,21 +1246,34 @@ var DockviewComponent = /** @class */ (function (_super) {
1069
1246
  });
1070
1247
  }
1071
1248
  }
1072
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
1249
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
1073
1250
  finally {
1074
1251
  try {
1075
1252
  if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
1076
1253
  }
1077
- finally { if (e_13) throw e_13.error; }
1254
+ finally { if (e_16) throw e_16.error; }
1078
1255
  }
1079
1256
  }
1080
1257
  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));
1258
+ switch (sourceGroup.api.location) {
1259
+ case 'grid':
1260
+ this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
1261
+ break;
1262
+ case 'floating': {
1263
+ var selectedFloatingGroup = this._floatingGroups.find(function (x) { return x.group === sourceGroup; });
1264
+ if (!selectedFloatingGroup) {
1265
+ throw new Error('failed to find floating group');
1266
+ }
1267
+ selectedFloatingGroup.dispose();
1268
+ break;
1269
+ }
1270
+ case 'popout': {
1271
+ var selectedPopoutGroup = this._popoutGroups.find(function (x) { return x.group === sourceGroup; });
1272
+ if (!selectedPopoutGroup) {
1273
+ throw new Error('failed to find popout group');
1274
+ }
1275
+ selectedPopoutGroup.dispose();
1276
+ }
1087
1277
  }
1088
1278
  var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
1089
1279
  var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
@@ -1146,7 +1336,7 @@ var DockviewComponent = /** @class */ (function (_super) {
1146
1336
  var contentComponent = options.component;
1147
1337
  var tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
1148
1338
  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);
1339
+ var panel = new dockviewPanel_1.DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
1150
1340
  panel.init({
1151
1341
  title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
1152
1342
  params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},