dockview 1.0.3 → 1.3.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 (261) hide show
  1. package/README.md +243 -186
  2. package/dist/cjs/api/component.api.d.ts +31 -25
  3. package/dist/cjs/api/component.api.js +97 -40
  4. package/dist/cjs/api/component.api.js.map +1 -1
  5. package/dist/cjs/api/gridviewPanelApi.js +1 -0
  6. package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
  7. package/dist/cjs/api/groupPanelApi.d.ts +11 -14
  8. package/dist/cjs/api/groupPanelApi.js +19 -17
  9. package/dist/cjs/api/groupPanelApi.js.map +1 -1
  10. package/dist/cjs/api/panelApi.d.ts +0 -25
  11. package/dist/cjs/api/panelApi.js +1 -20
  12. package/dist/cjs/api/panelApi.js.map +1 -1
  13. package/dist/cjs/api/paneviewPanelApi.js +1 -0
  14. package/dist/cjs/api/paneviewPanelApi.js.map +1 -1
  15. package/dist/cjs/api/splitviewPanelApi.d.ts +0 -1
  16. package/dist/cjs/api/splitviewPanelApi.js +1 -5
  17. package/dist/cjs/api/splitviewPanelApi.js.map +1 -1
  18. package/dist/cjs/dnd/abstractDragHandler.d.ts +2 -2
  19. package/dist/cjs/dnd/abstractDragHandler.js +15 -15
  20. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  21. package/dist/cjs/dnd/dataTransfer.d.ts +0 -25
  22. package/dist/cjs/dnd/dataTransfer.js +1 -45
  23. package/dist/cjs/dnd/dataTransfer.js.map +1 -1
  24. package/dist/cjs/dnd/dnd.d.ts +1 -14
  25. package/dist/cjs/dnd/dnd.js +1 -79
  26. package/dist/cjs/dnd/dnd.js.map +1 -1
  27. package/dist/cjs/dnd/droptarget.d.ts +3 -0
  28. package/dist/cjs/dnd/droptarget.js +72 -48
  29. package/dist/cjs/dnd/droptarget.js.map +1 -1
  30. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -2
  31. package/dist/cjs/dockview/components/tab/defaultTab.js +1 -9
  32. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  33. package/dist/cjs/dockview/components/watermark/watermark.d.ts +3 -3
  34. package/dist/cjs/dockview/components/watermark/watermark.js +4 -4
  35. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  36. package/dist/cjs/dockview/deserializer.js.map +1 -1
  37. package/dist/cjs/dockview/dockviewComponent.d.ts +34 -23
  38. package/dist/cjs/dockview/dockviewComponent.js +117 -209
  39. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  40. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +3 -5
  41. package/dist/cjs/dockview/dockviewGroupPanel.js +10 -31
  42. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  43. package/dist/cjs/dockview/options.d.ts +2 -1
  44. package/dist/cjs/events.js +25 -4
  45. package/dist/cjs/events.js.map +1 -1
  46. package/dist/cjs/gridview/baseComponentGridview.d.ts +12 -20
  47. package/dist/cjs/gridview/baseComponentGridview.js +49 -45
  48. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  49. package/dist/cjs/gridview/basePanelView.d.ts +5 -8
  50. package/dist/cjs/gridview/basePanelView.js +16 -8
  51. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  52. package/dist/cjs/gridview/branchNode.js +3 -3
  53. package/dist/cjs/gridview/branchNode.js.map +1 -1
  54. package/dist/cjs/gridview/gridview.js +21 -18
  55. package/dist/cjs/gridview/gridview.js.map +1 -1
  56. package/dist/cjs/gridview/gridviewComponent.d.ts +5 -6
  57. package/dist/cjs/gridview/gridviewComponent.js +33 -9
  58. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  59. package/dist/cjs/gridview/gridviewPanel.d.ts +0 -1
  60. package/dist/cjs/gridview/gridviewPanel.js +3 -6
  61. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  62. package/dist/cjs/gridview/leafNode.js +2 -1
  63. package/dist/cjs/gridview/leafNode.js.map +1 -1
  64. package/dist/cjs/groupview/groupPanel.d.ts +1 -7
  65. package/dist/cjs/groupview/groupview.d.ts +18 -10
  66. package/dist/cjs/groupview/groupview.js +51 -129
  67. package/dist/cjs/groupview/groupview.js.map +1 -1
  68. package/dist/cjs/groupview/groupviewPanel.d.ts +5 -2
  69. package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
  70. package/dist/cjs/groupview/panel/content.d.ts +1 -1
  71. package/dist/cjs/groupview/panel/content.js +2 -1
  72. package/dist/cjs/groupview/panel/content.js.map +1 -1
  73. package/dist/cjs/groupview/tab.d.ts +10 -13
  74. package/dist/cjs/groupview/tab.js +22 -80
  75. package/dist/cjs/groupview/tab.js.map +1 -1
  76. package/dist/cjs/groupview/titlebar/tabsContainer.js +4 -6
  77. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  78. package/dist/cjs/hostedContainer.js +2 -2
  79. package/dist/cjs/hostedContainer.js.map +1 -1
  80. package/dist/cjs/index.d.ts +3 -3
  81. package/dist/cjs/index.js +8 -4
  82. package/dist/cjs/index.js.map +1 -1
  83. package/dist/cjs/lifecycle.js +2 -1
  84. package/dist/cjs/lifecycle.js.map +1 -1
  85. package/dist/cjs/panel/types.d.ts +0 -2
  86. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +1 -1
  87. package/dist/cjs/paneview/defaultPaneviewHeader.js +1 -1
  88. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  89. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
  90. package/dist/cjs/paneview/draggablePaneviewPanel.js +32 -29
  91. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  92. package/dist/cjs/paneview/paneview.d.ts +3 -1
  93. package/dist/cjs/paneview/paneview.js +13 -7
  94. package/dist/cjs/paneview/paneview.js.map +1 -1
  95. package/dist/cjs/paneview/paneviewComponent.d.ts +7 -6
  96. package/dist/cjs/paneview/paneviewComponent.js +65 -8
  97. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  98. package/dist/cjs/paneview/paneviewPanel.js +1 -1
  99. package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
  100. package/dist/cjs/react/deserializer.js +1 -3
  101. package/dist/cjs/react/deserializer.js.map +1 -1
  102. package/dist/cjs/react/dockview/components.js +5 -1
  103. package/dist/cjs/react/dockview/components.js.map +1 -1
  104. package/dist/cjs/react/dockview/dockview.d.ts +9 -9
  105. package/dist/cjs/react/dockview/dockview.js +40 -5
  106. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  107. package/dist/cjs/react/dockview/reactContentPart.d.ts +2 -2
  108. package/dist/cjs/react/dockview/reactContentPart.js +6 -17
  109. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  110. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -2
  111. package/dist/cjs/react/dockview/reactHeaderPart.js +3 -2
  112. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  113. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +3 -4
  114. package/dist/cjs/react/dockview/reactWatermarkPart.js +3 -4
  115. package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
  116. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +2 -2
  117. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +2 -2
  118. package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
  119. package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  120. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +2 -2
  121. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js.map +1 -1
  122. package/dist/cjs/react/gridview/gridview.js +9 -2
  123. package/dist/cjs/react/gridview/gridview.js.map +1 -1
  124. package/dist/cjs/react/gridview/view.d.ts +3 -2
  125. package/dist/cjs/react/gridview/view.js +2 -2
  126. package/dist/cjs/react/gridview/view.js.map +1 -1
  127. package/dist/cjs/react/index.d.ts +1 -0
  128. package/dist/cjs/react/index.js +5 -1
  129. package/dist/cjs/react/index.js.map +1 -1
  130. package/dist/cjs/react/paneview/paneview.js +6 -2
  131. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  132. package/dist/cjs/react/react.js +6 -3
  133. package/dist/cjs/react/react.js.map +1 -1
  134. package/dist/cjs/react/splitview/splitview.js +8 -2
  135. package/dist/cjs/react/splitview/splitview.js.map +1 -1
  136. package/dist/cjs/react/splitview/view.js +2 -2
  137. package/dist/cjs/react/splitview/view.js.map +1 -1
  138. package/dist/cjs/splitview/core/splitview.js +1 -1
  139. package/dist/cjs/splitview/core/splitview.js.map +1 -1
  140. package/dist/cjs/splitview/splitviewComponent.d.ts +0 -3
  141. package/dist/cjs/splitview/splitviewComponent.js +50 -6
  142. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  143. package/dist/cjs/splitview/splitviewPanel.d.ts +1 -6
  144. package/dist/cjs/splitview/splitviewPanel.js +5 -3
  145. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  146. package/dist/dockview.amd.js +666 -791
  147. package/dist/dockview.amd.min.js +2 -16
  148. package/dist/dockview.amd.min.noStyle.js +2 -16
  149. package/dist/dockview.amd.noStyle.js +665 -790
  150. package/dist/dockview.cjs.js +666 -791
  151. package/dist/dockview.esm.js +666 -780
  152. package/dist/dockview.esm.min.js +2 -16
  153. package/dist/dockview.js +666 -791
  154. package/dist/dockview.min.js +2 -16
  155. package/dist/dockview.min.noStyle.js +2 -16
  156. package/dist/dockview.noStyle.js +665 -790
  157. package/dist/esm/api/component.api.d.ts +31 -25
  158. package/dist/esm/api/component.api.js +47 -26
  159. package/dist/esm/api/gridviewPanelApi.js +1 -0
  160. package/dist/esm/api/groupPanelApi.d.ts +11 -14
  161. package/dist/esm/api/groupPanelApi.js +18 -13
  162. package/dist/esm/api/panelApi.d.ts +0 -25
  163. package/dist/esm/api/panelApi.js +1 -20
  164. package/dist/esm/api/paneviewPanelApi.js +1 -0
  165. package/dist/esm/api/splitviewPanelApi.d.ts +0 -1
  166. package/dist/esm/api/splitviewPanelApi.js +1 -5
  167. package/dist/esm/dnd/abstractDragHandler.d.ts +2 -2
  168. package/dist/esm/dnd/abstractDragHandler.js +10 -10
  169. package/dist/esm/dnd/dataTransfer.d.ts +0 -25
  170. package/dist/esm/dnd/dataTransfer.js +0 -40
  171. package/dist/esm/dnd/dnd.d.ts +1 -14
  172. package/dist/esm/dnd/dnd.js +1 -69
  173. package/dist/esm/dnd/droptarget.d.ts +3 -0
  174. package/dist/esm/dnd/droptarget.js +72 -48
  175. package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -2
  176. package/dist/esm/dockview/components/tab/defaultTab.js +2 -10
  177. package/dist/esm/dockview/components/watermark/watermark.d.ts +3 -3
  178. package/dist/esm/dockview/components/watermark/watermark.js +4 -4
  179. package/dist/esm/dockview/dockviewComponent.d.ts +34 -23
  180. package/dist/esm/dockview/dockviewComponent.js +82 -150
  181. package/dist/esm/dockview/dockviewGroupPanel.d.ts +3 -5
  182. package/dist/esm/dockview/dockviewGroupPanel.js +6 -30
  183. package/dist/esm/dockview/options.d.ts +2 -1
  184. package/dist/esm/events.js +2 -3
  185. package/dist/esm/gridview/baseComponentGridview.d.ts +12 -20
  186. package/dist/esm/gridview/baseComponentGridview.js +27 -45
  187. package/dist/esm/gridview/basePanelView.d.ts +5 -8
  188. package/dist/esm/gridview/basePanelView.js +12 -8
  189. package/dist/esm/gridview/branchNode.js +3 -3
  190. package/dist/esm/gridview/gridview.js +18 -16
  191. package/dist/esm/gridview/gridviewComponent.d.ts +5 -6
  192. package/dist/esm/gridview/gridviewComponent.js +12 -10
  193. package/dist/esm/gridview/gridviewPanel.d.ts +0 -1
  194. package/dist/esm/gridview/gridviewPanel.js +3 -6
  195. package/dist/esm/gridview/leafNode.js +1 -0
  196. package/dist/esm/groupview/groupPanel.d.ts +1 -7
  197. package/dist/esm/groupview/groupview.d.ts +18 -10
  198. package/dist/esm/groupview/groupview.js +30 -59
  199. package/dist/esm/groupview/groupviewPanel.d.ts +5 -2
  200. package/dist/esm/groupview/panel/content.d.ts +1 -1
  201. package/dist/esm/groupview/panel/content.js +2 -1
  202. package/dist/esm/groupview/tab.d.ts +10 -13
  203. package/dist/esm/groupview/tab.js +17 -24
  204. package/dist/esm/groupview/titlebar/tabsContainer.js +4 -6
  205. package/dist/esm/hostedContainer.js +2 -2
  206. package/dist/esm/index.d.ts +3 -3
  207. package/dist/esm/index.js +1 -2
  208. package/dist/esm/lifecycle.js +2 -1
  209. package/dist/esm/panel/types.d.ts +0 -2
  210. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
  211. package/dist/esm/paneview/defaultPaneviewHeader.js +1 -1
  212. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
  213. package/dist/esm/paneview/draggablePaneviewPanel.js +32 -29
  214. package/dist/esm/paneview/paneview.d.ts +3 -1
  215. package/dist/esm/paneview/paneview.js +10 -6
  216. package/dist/esm/paneview/paneviewComponent.d.ts +7 -6
  217. package/dist/esm/paneview/paneviewComponent.js +31 -7
  218. package/dist/esm/paneview/paneviewPanel.js +1 -1
  219. package/dist/esm/react/deserializer.js +1 -3
  220. package/dist/esm/react/dockview/dockview.d.ts +9 -9
  221. package/dist/esm/react/dockview/dockview.js +36 -5
  222. package/dist/esm/react/dockview/reactContentPart.d.ts +2 -2
  223. package/dist/esm/react/dockview/reactContentPart.js +6 -17
  224. package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -2
  225. package/dist/esm/react/dockview/reactHeaderPart.js +3 -2
  226. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +3 -4
  227. package/dist/esm/react/dockview/reactWatermarkPart.js +3 -4
  228. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +2 -2
  229. package/dist/esm/react/dockview/v2/reactContentRenderer.js +2 -2
  230. package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  231. package/dist/esm/react/dockview/v2/webviewContentRenderer.js +2 -2
  232. package/dist/esm/react/gridview/gridview.js +4 -1
  233. package/dist/esm/react/gridview/view.d.ts +3 -2
  234. package/dist/esm/react/gridview/view.js +2 -2
  235. package/dist/esm/react/index.d.ts +1 -0
  236. package/dist/esm/react/paneview/paneview.js +1 -1
  237. package/dist/esm/react/react.js +1 -2
  238. package/dist/esm/react/splitview/splitview.js +3 -1
  239. package/dist/esm/react/splitview/view.js +2 -2
  240. package/dist/esm/splitview/core/splitview.js +1 -1
  241. package/dist/esm/splitview/splitviewComponent.d.ts +0 -3
  242. package/dist/esm/splitview/splitviewComponent.js +17 -6
  243. package/dist/esm/splitview/splitviewPanel.d.ts +1 -6
  244. package/dist/esm/splitview/splitviewPanel.js +5 -3
  245. package/dist/styles/dockview.css +14 -17
  246. package/package.json +13 -13
  247. package/dist/cjs/functions.d.ts +0 -1
  248. package/dist/cjs/functions.js +0 -42
  249. package/dist/cjs/functions.js.map +0 -1
  250. package/dist/cjs/groupview/panel/hostedPanel.d.ts +0 -22
  251. package/dist/cjs/groupview/panel/hostedPanel.js +0 -57
  252. package/dist/cjs/groupview/panel/hostedPanel.js.map +0 -1
  253. package/dist/cjs/json.d.ts +0 -1
  254. package/dist/cjs/json.js +0 -14
  255. package/dist/cjs/json.js.map +0 -1
  256. package/dist/esm/functions.d.ts +0 -1
  257. package/dist/esm/functions.js +0 -8
  258. package/dist/esm/groupview/panel/hostedPanel.d.ts +0 -22
  259. package/dist/esm/groupview/panel/hostedPanel.js +0 -43
  260. package/dist/esm/json.d.ts +0 -1
  261. package/dist/esm/json.js +0 -9
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { DockviewApi } from '../api/component.api';
11
2
  import { getPanelData } from '../dnd/dataTransfer';
12
3
  import { Droptarget, Position } from '../dnd/droptarget';
@@ -21,7 +12,6 @@ export var GroupChangeKind2;
21
12
  GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
22
13
  GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
23
14
  GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
24
- GroupChangeKind2["GROUP_ACTIVE"] = "GROUP_ACTIVE";
25
15
  })(GroupChangeKind2 || (GroupChangeKind2 = {}));
26
16
  export class Groupview extends CompositeDisposable {
27
17
  constructor(container, accessor, id, options, parent) {
@@ -42,15 +32,10 @@ export class Groupview extends CompositeDisposable {
42
32
  this.onMove = this._onMove.event;
43
33
  this._onDidGroupChange = new Emitter();
44
34
  this.onDidGroupChange = this._onDidGroupChange.event;
45
- this.closePanel = (panel) => __awaiter(this, void 0, void 0, function* () {
46
- if (panel.close && !(yield panel.close())) {
47
- return false;
48
- }
49
- this.doClose(panel);
50
- return true;
51
- });
35
+ this._onDidDrop = new Emitter();
36
+ this.onDidDrop = this._onDidDrop.event;
52
37
  this.container.classList.add('groupview');
53
- this.addDisposables(this._onMove, this._onDidGroupChange);
38
+ this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
54
39
  this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
55
40
  tabHeight: options.tabHeight,
56
41
  });
@@ -114,6 +99,9 @@ export class Groupview extends CompositeDisposable {
114
99
  get maximumWidth() {
115
100
  return Number.MAX_SAFE_INTEGER;
116
101
  }
102
+ get hasWatermark() {
103
+ return !!(this.watermark && this.container.contains(this.watermark.element));
104
+ }
117
105
  initialize() {
118
106
  var _a, _b;
119
107
  if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
@@ -192,10 +180,10 @@ export class Groupview extends CompositeDisposable {
192
180
  containsPanel(panel) {
193
181
  return this.panels.includes(panel);
194
182
  }
195
- init(params) {
183
+ init(_params) {
196
184
  //noop
197
185
  }
198
- update(params) {
186
+ update(_params) {
199
187
  //noop
200
188
  }
201
189
  focus() {
@@ -207,6 +195,8 @@ export class Groupview extends CompositeDisposable {
207
195
  options.index > this.panels.length) {
208
196
  options.index = this.panels.length;
209
197
  }
198
+ // ensure the group is updated before we fire any events
199
+ panel.updateParentGroup(this.parent, true);
210
200
  if (this._activePanel === panel) {
211
201
  this.accessor.doSetGroupActive(this.parent);
212
202
  return;
@@ -227,43 +217,19 @@ export class Groupview extends CompositeDisposable {
227
217
  return this._removePanel(panelToRemove);
228
218
  }
229
219
  closeAllPanels() {
230
- var _a;
231
- return __awaiter(this, void 0, void 0, function* () {
232
- const index = this._activePanel
233
- ? this.panels.indexOf(this._activePanel)
234
- : -1;
235
- if (this._activePanel && index > -1) {
236
- if (this.panels.indexOf(this._activePanel) < 0) {
237
- console.warn('active panel not tracked');
238
- }
239
- const canClose = !((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.close) || (yield this._activePanel.close());
240
- if (!canClose) {
241
- return false;
242
- }
243
- }
244
- for (let i = 0; i < this.panels.length; i++) {
245
- if (i === index) {
246
- continue;
247
- }
248
- const panel = this.panels[i];
249
- this.openPanel(panel);
250
- if (panel.close) {
251
- const canClose = yield panel.close();
252
- if (!canClose) {
253
- return false;
254
- }
255
- }
256
- }
257
- if (this.panels.length > 0) {
258
- // take a copy since we will be edting the array as we iterate through
259
- const arrPanelCpy = [...this.panels];
260
- yield Promise.all(arrPanelCpy.map((p) => this.doClose(p)));
220
+ if (this.panels.length > 0) {
221
+ // take a copy since we will be edting the array as we iterate through
222
+ const arrPanelCpy = [...this.panels];
223
+ for (const panel of arrPanelCpy) {
224
+ this.doClose(panel);
261
225
  }
262
- else {
263
- this.accessor.removeGroup(this.parent);
264
- }
265
- return true;
266
- });
226
+ }
227
+ else {
228
+ this.accessor.removeGroup(this.parent);
229
+ }
230
+ }
231
+ closePanel(panel) {
232
+ this.doClose(panel);
267
233
  }
268
234
  doClose(panel) {
269
235
  this.accessor.removePanel(panel);
@@ -406,8 +372,11 @@ export class Groupview extends CompositeDisposable {
406
372
  this.tabsContainer.show();
407
373
  }
408
374
  }
409
- canDisplayOverlay(dragOverEvent, target) {
375
+ canDisplayOverlay(event, target) {
410
376
  // custom overlay handler
377
+ if (this.accessor.options.showDndOverlay) {
378
+ return this.accessor.options.showDndOverlay(event, target);
379
+ }
411
380
  return false;
412
381
  }
413
382
  handleDropEvent(event, position, index) {
@@ -433,14 +402,16 @@ export class Groupview extends CompositeDisposable {
433
402
  });
434
403
  }
435
404
  else {
436
- // custom drop handler
405
+ this._onDidDrop.fire({ nativeEvent: event, position, index });
437
406
  }
438
407
  }
439
408
  dispose() {
409
+ var _a;
410
+ super.dispose();
411
+ (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
440
412
  for (const panel of this.panels) {
441
413
  panel.dispose();
442
414
  }
443
- super.dispose();
444
415
  this.dropTarget.dispose();
445
416
  this.tabsContainer.dispose();
446
417
  this.contentContainer.dispose();
@@ -1,8 +1,11 @@
1
1
  import { IFrameworkPart } from '../panel/types';
2
2
  import { IDockviewComponent } from '../dockview/dockviewComponent';
3
3
  import { Groupview, GroupOptions } from './groupview';
4
- import { GridviewPanel } from '../gridview/gridviewPanel';
5
- export declare class GroupviewPanel extends GridviewPanel {
4
+ import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
5
+ export interface IGroupviewPanel extends IGridviewPanel {
6
+ model: Groupview;
7
+ }
8
+ export declare class GroupviewPanel extends GridviewPanel implements IGroupviewPanel {
6
9
  private readonly _model;
7
10
  get model(): Groupview;
8
11
  get minimumHeight(): number;
@@ -24,7 +24,7 @@ export declare class ContentContainer extends CompositeDisposable implements ICo
24
24
  show(): void;
25
25
  hide(): void;
26
26
  openPanel(panel: IGroupPanel): void;
27
- layout(width: number, height: number): void;
27
+ layout(_width: number, _height: number): void;
28
28
  closePanel(): void;
29
29
  dispose(): void;
30
30
  }
@@ -12,6 +12,7 @@ export class ContentContainer extends CompositeDisposable {
12
12
  this._element = document.createElement('div');
13
13
  this._element.className = 'content-container';
14
14
  this._element.tabIndex = -1;
15
+ this.addDisposables(this._onDidFocus, this._onDidBlur);
15
16
  // for hosted containers
16
17
  // 1) register a drop target on the host
17
18
  // 2) register window dragStart events to disable pointer events
@@ -55,7 +56,7 @@ export class ContentContainer extends CompositeDisposable {
55
56
  }
56
57
  this.disposable.value = disposable;
57
58
  }
58
- layout(width, height) {
59
+ layout(_width, _height) {
59
60
  // noop
60
61
  }
61
62
  closePanel() {
@@ -10,33 +10,30 @@ export declare enum MouseEventKind {
10
10
  CONTEXT_MENU = "CONTEXT_MENU"
11
11
  }
12
12
  export interface LayoutMouseEvent {
13
- kind: MouseEventKind;
14
- event: MouseEvent;
15
- panel?: IGroupPanel;
16
- tab?: boolean;
13
+ readonly kind: MouseEventKind;
14
+ readonly event: MouseEvent;
15
+ readonly panel?: IGroupPanel;
16
+ readonly tab?: boolean;
17
17
  }
18
18
  export interface ITab {
19
- panelId: string;
20
- element: HTMLElement;
19
+ readonly panelId: string;
20
+ readonly element: HTMLElement;
21
21
  setContent: (element: ITabRenderer) => void;
22
22
  onChanged: Event<LayoutMouseEvent>;
23
23
  onDrop: Event<DroptargetEvent>;
24
24
  setActive(isActive: boolean): void;
25
25
  }
26
26
  export declare class Tab extends CompositeDisposable implements ITab {
27
- panelId: string;
28
- private readonly accessor;
29
- private group;
30
- private _element;
31
- private droptarget;
27
+ readonly panelId: string;
28
+ private readonly group;
29
+ private readonly _element;
30
+ private readonly droptarget;
32
31
  private content?;
33
32
  private readonly _onChanged;
34
33
  readonly onChanged: Event<LayoutMouseEvent>;
35
34
  private readonly _onDropped;
36
35
  readonly onDrop: Event<DroptargetEvent>;
37
- private readonly panelTransfer;
38
36
  get element(): HTMLElement;
39
- private iframes;
40
37
  constructor(panelId: string, accessor: IDockviewComponent, group: GroupviewPanel);
41
38
  setActive(isActive: boolean): void;
42
39
  setContent(part: ITabRenderer): void;
@@ -1,9 +1,10 @@
1
1
  import { addDisposableListener, Emitter } from '../events';
2
2
  import { CompositeDisposable } from '../lifecycle';
3
3
  import { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../dnd/dataTransfer';
4
- import { getElementsByTagName, toggleClass } from '../dom';
4
+ import { toggleClass } from '../dom';
5
5
  import { Droptarget } from '../dnd/droptarget';
6
6
  import { DockviewDropTargets } from './dnd';
7
+ import { DragHandler } from '../dnd/abstractDragHandler';
7
8
  export var MouseEventKind;
8
9
  (function (MouseEventKind) {
9
10
  MouseEventKind["CLICK"] = "CLICK";
@@ -13,42 +14,34 @@ export class Tab extends CompositeDisposable {
13
14
  constructor(panelId, accessor, group) {
14
15
  super();
15
16
  this.panelId = panelId;
16
- this.accessor = accessor;
17
17
  this.group = group;
18
18
  this._onChanged = new Emitter();
19
19
  this.onChanged = this._onChanged.event;
20
20
  this._onDropped = new Emitter();
21
21
  this.onDrop = this._onDropped.event;
22
- this.panelTransfer = LocalSelectionTransfer.getInstance();
23
- this.iframes = [];
24
22
  this.addDisposables(this._onChanged, this._onDropped);
25
23
  this._element = document.createElement('div');
26
24
  this._element.className = 'tab';
27
25
  this._element.tabIndex = 0;
28
26
  this._element.draggable = true;
29
- this.addDisposables(addDisposableListener(this._element, 'dragstart', (event) => {
30
- this.iframes = [
31
- ...getElementsByTagName('iframe'),
32
- ...getElementsByTagName('webview'),
33
- ];
34
- for (const iframe of this.iframes) {
35
- iframe.style.pointerEvents = 'none';
27
+ this.addDisposables(new (class Handler extends DragHandler {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.panelTransfer = LocalSelectionTransfer.getInstance();
36
31
  }
37
- this.element.classList.add('dragged');
38
- setTimeout(() => this.element.classList.remove('dragged'), 0);
39
- this.panelTransfer.setData([
40
- new PanelTransfer(this.accessor.id, this.group.id, this.panelId),
41
- ], PanelTransfer.prototype);
42
- if (event.dataTransfer) {
43
- event.dataTransfer.effectAllowed = 'move';
32
+ getData() {
33
+ this.panelTransfer.setData([new PanelTransfer(accessor.id, group.id, panelId)], PanelTransfer.prototype);
34
+ return {
35
+ dispose: () => {
36
+ this.panelTransfer.clearData(PanelTransfer.prototype);
37
+ },
38
+ };
44
39
  }
45
- }), addDisposableListener(this._element, 'dragend', (ev) => {
46
- for (const iframe of this.iframes) {
47
- iframe.style.pointerEvents = 'auto';
40
+ dispose() {
41
+ //
48
42
  }
49
- this.iframes = [];
50
- this.panelTransfer.clearData(PanelTransfer.prototype);
51
- }), addDisposableListener(this._element, 'mousedown', (event) => {
43
+ })(this._element));
44
+ this.addDisposables(addDisposableListener(this._element, 'mousedown', (event) => {
52
45
  if (event.defaultPrevented) {
53
46
  return;
54
47
  }
@@ -155,12 +155,10 @@ export class TabsContainer extends CompositeDisposable {
155
155
  if (!isLeftClick || event.event.defaultPrevented) {
156
156
  return;
157
157
  }
158
- switch (event.kind) {
159
- case MouseEventKind.CLICK:
160
- this.group.model.openPanel(panel, {
161
- skipFocus: alreadyFocused,
162
- });
163
- break;
158
+ if (event.kind === MouseEventKind.CLICK) {
159
+ this.group.model.openPanel(panel, {
160
+ skipFocus: alreadyFocused,
161
+ });
164
162
  }
165
163
  }), tabToAdd.onDrop((event) => {
166
164
  this._onDrop.fire({
@@ -23,10 +23,10 @@ export class HostedContainer {
23
23
  /**
24
24
  * When dragging somebody
25
25
  */
26
- window.addEventListener('dragstart', (ev) => {
26
+ window.addEventListener('dragstart', () => {
27
27
  this.element.style.pointerEvents = 'none';
28
28
  });
29
- window.addEventListener('dragend', (ev) => {
29
+ window.addEventListener('dragend', () => {
30
30
  this.element.style.pointerEvents = '';
31
31
  });
32
32
  window.addEventListener('mousemove', (ev) => {
@@ -1,5 +1,3 @@
1
- export * from './events';
2
- export * from './lifecycle';
3
1
  export * from './dnd/dataTransfer';
4
2
  export * from './api/component.api';
5
3
  export * from './splitview/core/splitview';
@@ -20,8 +18,10 @@ export * from './splitview/splitviewPanel';
20
18
  export * from './paneview/paneviewPanel';
21
19
  export * from './groupview/groupPanel';
22
20
  export * from './react';
21
+ export { Event } from './events';
22
+ export { IDisposable } from './lifecycle';
23
23
  export { Position } from './dnd/droptarget';
24
- export { StateObject, State, FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
24
+ export { FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
25
25
  export { SizeEvent, GridviewPanelApi, GridConstraintChangeEvent, } from './api/gridviewPanelApi';
26
26
  export { TitleEvent, SuppressClosableEvent, DockviewPanelApi, } from './api/groupPanelApi';
27
27
  export { PanelSizeEvent, PanelConstraintChangeEvent, SplitviewPanelApi, } from './api/splitviewPanelApi';
package/dist/esm/index.js CHANGED
@@ -1,5 +1,3 @@
1
- export * from './events';
2
- export * from './lifecycle';
3
1
  export * from './dnd/dataTransfer';
4
2
  export * from './api/component.api';
5
3
  export * from './splitview/core/splitview';
@@ -20,4 +18,5 @@ export * from './splitview/splitviewPanel';
20
18
  export * from './paneview/paneviewPanel';
21
19
  export * from './groupview/groupPanel';
22
20
  export * from './react'; // TODO: should be conditional on whether user wants the React wrappers
21
+ export { Event } from './events';
23
22
  export { Position } from './dnd/droptarget';
@@ -14,7 +14,7 @@ export class CompositeDisposable {
14
14
  return new CompositeDisposable(...args);
15
15
  }
16
16
  addDisposables(...args) {
17
- args === null || args === void 0 ? void 0 : args.forEach((arg) => this.disposables.push(arg));
17
+ args.forEach((arg) => this.disposables.push(arg));
18
18
  }
19
19
  dispose() {
20
20
  this.disposables.forEach((arg) => arg.dispose());
@@ -33,6 +33,7 @@ export class MutableDisposable {
33
33
  dispose() {
34
34
  if (this._disposable) {
35
35
  this._disposable.dispose();
36
+ this._disposable = Disposable.NONE;
36
37
  }
37
38
  }
38
39
  }
@@ -1,4 +1,3 @@
1
- import { State } from '../api/panelApi';
2
1
  import { IDisposable } from '../lifecycle';
3
2
  import { LayoutPriority } from '../splitview/core/splitview';
4
3
  /**
@@ -9,7 +8,6 @@ export interface Parameters {
9
8
  }
10
9
  export interface PanelInitParameters {
11
10
  params: Parameters;
12
- state?: State;
13
11
  }
14
12
  export interface PanelUpdateEvent<T extends Parameters = Parameters> {
15
13
  params: Partial<T>;
@@ -13,6 +13,6 @@ export declare class DefaultHeader extends CompositeDisposable implements IPaneH
13
13
  init(params: PanePanelInitParameter & {
14
14
  api: PaneviewPanelApiImpl;
15
15
  }): void;
16
- update(params: PanelUpdateEvent): void;
16
+ update(_params: PanelUpdateEvent): void;
17
17
  dispose(): void;
18
18
  }
@@ -27,7 +27,7 @@ export class DefaultHeader extends CompositeDisposable {
27
27
  this._expander.textContent = e.isExpanded ? '<' : '>';
28
28
  });
29
29
  }
30
- update(params) {
30
+ update(_params) {
31
31
  //
32
32
  }
33
33
  dispose() {
@@ -1,6 +1,5 @@
1
1
  import { PaneTransfer } from '../dnd/dataTransfer';
2
2
  import { DroptargetEvent } from '../dnd/droptarget';
3
- import { Event } from '../events';
4
3
  import { Orientation } from '../splitview/core/splitview';
5
4
  import { IPaneviewPanel, PaneviewPanel } from './paneviewPanel';
6
5
  export interface PaneviewDropEvent2 extends DroptargetEvent {
@@ -11,7 +10,8 @@ export declare abstract class DraggablePaneviewPanel extends PaneviewPanel {
11
10
  private handler;
12
11
  private target;
13
12
  private readonly _onDidDrop;
14
- readonly onDidDrop: Event<PaneviewDropEvent2>;
13
+ readonly onDidDrop: import("../events").Event<PaneviewDropEvent2>;
15
14
  constructor(id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, disableDnd: boolean);
16
15
  private initDragFeatures;
16
+ private onDrop;
17
17
  }
@@ -30,7 +30,7 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
30
30
  })(this.header);
31
31
  this.target = new Droptarget(this.element, {
32
32
  validOverlays: 'vertical',
33
- canDisplayOverlay: (event) => {
33
+ canDisplayOverlay: () => {
34
34
  const data = getPaneData();
35
35
  if (!data) {
36
36
  return true;
@@ -39,34 +39,37 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
39
39
  },
40
40
  });
41
41
  this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {
42
- const data = getPaneData();
43
- if (!data) {
44
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
45
- return;
46
- }
47
- const containerApi = this.params
48
- .containerApi;
49
- const panelId = data.paneId;
50
- const existingPanel = containerApi.getPanel(panelId);
51
- if (!existingPanel) {
52
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
53
- return;
54
- }
55
- const allPanels = containerApi.getPanels();
56
- const fromIndex = allPanels.indexOf(existingPanel);
57
- let toIndex = containerApi.getPanels().indexOf(this);
58
- if (event.position === Position.Left ||
59
- event.position === Position.Top) {
60
- toIndex = Math.max(0, toIndex - 1);
61
- }
62
- if (event.position === Position.Right ||
63
- event.position === Position.Bottom) {
64
- if (fromIndex > toIndex) {
65
- toIndex++;
66
- }
67
- toIndex = Math.min(allPanels.length - 1, toIndex);
68
- }
69
- containerApi.movePanel(fromIndex, toIndex);
42
+ this.onDrop(event);
70
43
  }));
71
44
  }
45
+ onDrop(event) {
46
+ const data = getPaneData();
47
+ if (!data) {
48
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
49
+ return;
50
+ }
51
+ const containerApi = this._params
52
+ .containerApi;
53
+ const panelId = data.paneId;
54
+ const existingPanel = containerApi.getPanel(panelId);
55
+ if (!existingPanel) {
56
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
57
+ return;
58
+ }
59
+ const allPanels = containerApi.getPanels();
60
+ const fromIndex = allPanels.indexOf(existingPanel);
61
+ let toIndex = containerApi.getPanels().indexOf(this);
62
+ if (event.position === Position.Left ||
63
+ event.position === Position.Top) {
64
+ toIndex = Math.max(0, toIndex - 1);
65
+ }
66
+ if (event.position === Position.Right ||
67
+ event.position === Position.Bottom) {
68
+ if (fromIndex > toIndex) {
69
+ toIndex++;
70
+ }
71
+ toIndex = Math.min(allPanels.length - 1, toIndex);
72
+ }
73
+ containerApi.movePanel(fromIndex, toIndex);
74
+ }
72
75
  }
@@ -29,7 +29,9 @@ export declare class Paneview extends CompositeDisposable implements IDisposable
29
29
  addPane(pane: PaneviewPanel, size?: number | Sizing, index?: number, skipLayout?: boolean): void;
30
30
  getViewSize(index: number): number;
31
31
  getPanes(): PaneviewPanel[];
32
- removePane(index: number): PaneItem;
32
+ removePane(index: number, options?: {
33
+ skipDispose: boolean;
34
+ }): PaneItem;
33
35
  moveView(from: number, to: number): void;
34
36
  layout(size: number, orthogonalSize: number): void;
35
37
  private setupAnimation;
@@ -21,7 +21,7 @@ export class Paneview extends CompositeDisposable {
21
21
  });
22
22
  // if we've added views from the descriptor we need to
23
23
  // add the panes to our Pane array and setup animation
24
- this.getPanes().forEach((pane, index) => {
24
+ this.getPanes().forEach((pane) => {
25
25
  const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {
26
26
  this.setupAnimation();
27
27
  this._onDidChange.fire(undefined);
@@ -37,7 +37,7 @@ export class Paneview extends CompositeDisposable {
37
37
  this.paneItems.push(paneItem);
38
38
  pane.orthogonalSize = this.splitview.orthogonalSize;
39
39
  });
40
- this.addDisposables(this.splitview.onDidSashEnd(() => {
40
+ this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
41
41
  this._onDidChange.fire(undefined);
42
42
  }), this.splitview.onDidAddView(() => {
43
43
  this._onDidChange.fire();
@@ -89,17 +89,20 @@ export class Paneview extends CompositeDisposable {
89
89
  getPanes() {
90
90
  return this.splitview.getViews();
91
91
  }
92
- removePane(index) {
92
+ removePane(index, options = { skipDispose: false }) {
93
93
  const paneItem = this.paneItems.splice(index, 1)[0];
94
94
  this.splitview.removeView(index);
95
- paneItem.disposable.dispose();
95
+ if (!options.skipDispose) {
96
+ paneItem.disposable.dispose();
97
+ paneItem.pane.dispose();
98
+ }
96
99
  return paneItem;
97
100
  }
98
101
  moveView(from, to) {
99
102
  if (from === to) {
100
103
  return;
101
104
  }
102
- const view = this.removePane(from);
105
+ const view = this.removePane(from, { skipDispose: true });
103
106
  this.skipAnimation = true;
104
107
  try {
105
108
  this.addPane(view.pane, view.pane.size, to, false);
@@ -127,15 +130,16 @@ export class Paneview extends CompositeDisposable {
127
130
  }
128
131
  dispose() {
129
132
  super.dispose();
130
- this.splitview.dispose();
131
133
  if (this.animationTimer) {
132
134
  clearTimeout(this.animationTimer);
133
135
  this.animationTimer = undefined;
134
136
  }
135
137
  this.paneItems.forEach((paneItem) => {
136
138
  paneItem.disposable.dispose();
139
+ paneItem.pane.dispose();
137
140
  });
138
141
  this.paneItems = [];
142
+ this.splitview.dispose();
139
143
  this.element.remove();
140
144
  }
141
145
  }
@@ -18,9 +18,6 @@ export interface SerializedPaneviewPanel {
18
18
  params?: {
19
19
  [index: string]: any;
20
20
  };
21
- state?: {
22
- [index: string]: any;
23
- };
24
21
  };
25
22
  size: number;
26
23
  expanded?: boolean;
@@ -44,7 +41,7 @@ export declare class PaneFramework extends DraggablePaneviewPanel {
44
41
  getBodyComponent(): IPaneBodyPart;
45
42
  getHeaderComponent(): IPaneHeaderPart;
46
43
  }
47
- export interface AddPaneviewCompponentOptions {
44
+ export interface AddPaneviewComponentOptions {
48
45
  id: string;
49
46
  component: string;
50
47
  headerComponent?: string;
@@ -67,7 +64,7 @@ export interface IPaneviewComponent extends IDisposable {
67
64
  readonly onDidRemoveView: Event<PaneviewPanel>;
68
65
  readonly onDidDrop: Event<PaneviewDropEvent2>;
69
66
  readonly onDidLayoutChange: Event<void>;
70
- addPanel(options: AddPaneviewCompponentOptions): IDisposable;
67
+ addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
71
68
  layout(width: number, height: number): void;
72
69
  toJSON(): SerializedPaneview;
73
70
  fromJSON(serializedPaneview: SerializedPaneview, deferComponentLayout?: boolean): void;
@@ -82,6 +79,7 @@ export interface IPaneviewComponent extends IDisposable {
82
79
  export declare class PaneviewComponent extends CompositeDisposable implements IPaneviewComponent {
83
80
  private element;
84
81
  private _disposable;
82
+ private _viewDisposables;
85
83
  private _paneview;
86
84
  private readonly _onDidLayoutChange;
87
85
  readonly onDidLayoutChange: Event<void>;
@@ -102,7 +100,7 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
102
100
  constructor(element: HTMLElement, options: PaneviewComponentOptions);
103
101
  focus(): void;
104
102
  updateOptions(options: Partial<PaneviewComponentOptions>): void;
105
- addPanel(options: AddPaneviewCompponentOptions): IDisposable;
103
+ addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
106
104
  getPanels(): PaneviewPanel[];
107
105
  removePanel(panel: PaneviewPanel): void;
108
106
  movePanel(from: number, to: number): void;
@@ -114,4 +112,7 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
114
112
  resizeToFit(): void;
115
113
  toJSON(): SerializedPaneview;
116
114
  fromJSON(serializedPaneview: SerializedPaneview, deferComponentLayout?: boolean): void;
115
+ private doAddPanel;
116
+ private doRemovePanel;
117
+ dispose(): void;
117
118
  }