dockview 1.1.0 → 1.3.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 (162) hide show
  1. package/dist/cjs/api/component.api.d.ts +17 -15
  2. package/dist/cjs/api/component.api.js +22 -22
  3. package/dist/cjs/api/component.api.js.map +1 -1
  4. package/dist/cjs/dnd/abstractDragHandler.d.ts +1 -1
  5. package/dist/cjs/dnd/abstractDragHandler.js +2 -3
  6. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  7. package/dist/cjs/dnd/droptarget.js +3 -3
  8. package/dist/cjs/dnd/droptarget.js.map +1 -1
  9. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -1
  10. package/dist/cjs/dockview/components/tab/defaultTab.js +1 -1
  11. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  12. package/dist/cjs/dockview/components/watermark/watermark.d.ts +3 -3
  13. package/dist/cjs/dockview/components/watermark/watermark.js +4 -4
  14. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  15. package/dist/cjs/dockview/deserializer.js.map +1 -1
  16. package/dist/cjs/dockview/dockviewComponent.d.ts +8 -5
  17. package/dist/cjs/dockview/dockviewComponent.js +60 -41
  18. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  19. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +1 -0
  20. package/dist/cjs/dockview/dockviewGroupPanel.js +8 -0
  21. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  22. package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -20
  23. package/dist/cjs/gridview/baseComponentGridview.js +35 -43
  24. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  25. package/dist/cjs/gridview/basePanelView.js +2 -0
  26. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  27. package/dist/cjs/gridview/branchNode.js +2 -2
  28. package/dist/cjs/gridview/branchNode.js.map +1 -1
  29. package/dist/cjs/gridview/gridview.js +3 -2
  30. package/dist/cjs/gridview/gridview.js.map +1 -1
  31. package/dist/cjs/gridview/gridviewComponent.d.ts +3 -9
  32. package/dist/cjs/gridview/gridviewComponent.js +30 -18
  33. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  34. package/dist/cjs/gridview/leafNode.js +1 -1
  35. package/dist/cjs/gridview/leafNode.js.map +1 -1
  36. package/dist/cjs/groupview/groupPanel.d.ts +1 -0
  37. package/dist/cjs/groupview/groupview.d.ts +3 -2
  38. package/dist/cjs/groupview/groupview.js +15 -6
  39. package/dist/cjs/groupview/groupview.js.map +1 -1
  40. package/dist/cjs/groupview/panel/content.d.ts +1 -1
  41. package/dist/cjs/groupview/panel/content.js +1 -1
  42. package/dist/cjs/groupview/panel/content.js.map +1 -1
  43. package/dist/cjs/hostedContainer.js +2 -2
  44. package/dist/cjs/hostedContainer.js.map +1 -1
  45. package/dist/cjs/index.d.ts +2 -2
  46. package/dist/cjs/index.js +8 -4
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/panel/types.d.ts +1 -0
  49. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +1 -1
  50. package/dist/cjs/paneview/defaultPaneviewHeader.js +1 -1
  51. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  52. package/dist/cjs/paneview/draggablePaneviewPanel.js +1 -1
  53. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  54. package/dist/cjs/paneview/paneview.d.ts +3 -1
  55. package/dist/cjs/paneview/paneview.js +12 -6
  56. package/dist/cjs/paneview/paneview.js.map +1 -1
  57. package/dist/cjs/paneview/paneviewComponent.d.ts +12 -5
  58. package/dist/cjs/paneview/paneviewComponent.js +68 -16
  59. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  60. package/dist/cjs/react/dockview/components.js +5 -1
  61. package/dist/cjs/react/dockview/components.js.map +1 -1
  62. package/dist/cjs/react/dockview/dockview.js +32 -10
  63. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  64. package/dist/cjs/react/dockview/reactContentPart.d.ts +2 -2
  65. package/dist/cjs/react/dockview/reactContentPart.js +2 -13
  66. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  67. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -2
  68. package/dist/cjs/react/dockview/reactHeaderPart.js +2 -2
  69. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  70. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +2 -2
  71. package/dist/cjs/react/dockview/reactWatermarkPart.js +2 -2
  72. package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
  73. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +2 -2
  74. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +2 -2
  75. package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
  76. package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  77. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +2 -2
  78. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js.map +1 -1
  79. package/dist/cjs/react/gridview/gridview.js +9 -2
  80. package/dist/cjs/react/gridview/gridview.js.map +1 -1
  81. package/dist/cjs/react/gridview/view.d.ts +3 -2
  82. package/dist/cjs/react/gridview/view.js.map +1 -1
  83. package/dist/cjs/react/index.js +5 -1
  84. package/dist/cjs/react/index.js.map +1 -1
  85. package/dist/cjs/react/paneview/paneview.js +6 -2
  86. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  87. package/dist/cjs/react/react.js +5 -1
  88. package/dist/cjs/react/react.js.map +1 -1
  89. package/dist/cjs/react/splitview/splitview.js +8 -2
  90. package/dist/cjs/react/splitview/splitview.js.map +1 -1
  91. package/dist/cjs/splitview/core/splitview.js +1 -1
  92. package/dist/cjs/splitview/core/splitview.js.map +1 -1
  93. package/dist/cjs/splitview/splitviewComponent.d.ts +5 -3
  94. package/dist/cjs/splitview/splitviewComponent.js +55 -16
  95. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  96. package/dist/dockview.amd.js +316 -312
  97. package/dist/dockview.amd.min.js +2 -2
  98. package/dist/dockview.amd.min.noStyle.js +2 -2
  99. package/dist/dockview.amd.noStyle.js +315 -311
  100. package/dist/dockview.cjs.js +316 -312
  101. package/dist/dockview.esm.js +316 -306
  102. package/dist/dockview.esm.min.js +2 -2
  103. package/dist/dockview.js +316 -312
  104. package/dist/dockview.min.js +2 -2
  105. package/dist/dockview.min.noStyle.js +2 -2
  106. package/dist/dockview.noStyle.js +315 -311
  107. package/dist/esm/api/component.api.d.ts +17 -15
  108. package/dist/esm/api/component.api.js +14 -14
  109. package/dist/esm/dnd/abstractDragHandler.d.ts +1 -1
  110. package/dist/esm/dnd/abstractDragHandler.js +2 -3
  111. package/dist/esm/dnd/droptarget.js +3 -3
  112. package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -1
  113. package/dist/esm/dockview/components/tab/defaultTab.js +1 -1
  114. package/dist/esm/dockview/components/watermark/watermark.d.ts +3 -3
  115. package/dist/esm/dockview/components/watermark/watermark.js +4 -4
  116. package/dist/esm/dockview/dockviewComponent.d.ts +8 -5
  117. package/dist/esm/dockview/dockviewComponent.js +34 -38
  118. package/dist/esm/dockview/dockviewGroupPanel.d.ts +1 -0
  119. package/dist/esm/dockview/dockviewGroupPanel.js +4 -0
  120. package/dist/esm/gridview/baseComponentGridview.d.ts +3 -20
  121. package/dist/esm/gridview/baseComponentGridview.js +13 -43
  122. package/dist/esm/gridview/basePanelView.js +2 -0
  123. package/dist/esm/gridview/branchNode.js +2 -2
  124. package/dist/esm/gridview/gridview.js +2 -1
  125. package/dist/esm/gridview/gridviewComponent.d.ts +3 -9
  126. package/dist/esm/gridview/gridviewComponent.js +9 -19
  127. package/dist/esm/groupview/groupPanel.d.ts +1 -0
  128. package/dist/esm/groupview/groupview.d.ts +3 -2
  129. package/dist/esm/groupview/groupview.js +8 -3
  130. package/dist/esm/groupview/panel/content.d.ts +1 -1
  131. package/dist/esm/groupview/panel/content.js +1 -1
  132. package/dist/esm/hostedContainer.js +2 -2
  133. package/dist/esm/index.d.ts +2 -2
  134. package/dist/esm/index.js +1 -2
  135. package/dist/esm/panel/types.d.ts +1 -0
  136. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
  137. package/dist/esm/paneview/defaultPaneviewHeader.js +1 -1
  138. package/dist/esm/paneview/draggablePaneviewPanel.js +1 -1
  139. package/dist/esm/paneview/paneview.d.ts +3 -1
  140. package/dist/esm/paneview/paneview.js +9 -5
  141. package/dist/esm/paneview/paneviewComponent.d.ts +12 -5
  142. package/dist/esm/paneview/paneviewComponent.js +34 -15
  143. package/dist/esm/react/dockview/dockview.js +27 -9
  144. package/dist/esm/react/dockview/reactContentPart.d.ts +2 -2
  145. package/dist/esm/react/dockview/reactContentPart.js +2 -13
  146. package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -2
  147. package/dist/esm/react/dockview/reactHeaderPart.js +2 -2
  148. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +2 -2
  149. package/dist/esm/react/dockview/reactWatermarkPart.js +2 -2
  150. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +2 -2
  151. package/dist/esm/react/dockview/v2/reactContentRenderer.js +2 -2
  152. package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  153. package/dist/esm/react/dockview/v2/webviewContentRenderer.js +2 -2
  154. package/dist/esm/react/gridview/gridview.js +4 -1
  155. package/dist/esm/react/gridview/view.d.ts +3 -2
  156. package/dist/esm/react/paneview/paneview.js +1 -1
  157. package/dist/esm/react/splitview/splitview.js +3 -1
  158. package/dist/esm/splitview/core/splitview.js +1 -1
  159. package/dist/esm/splitview/splitviewComponent.d.ts +5 -3
  160. package/dist/esm/splitview/splitviewComponent.js +22 -15
  161. package/dist/styles/dockview.css +10 -10
  162. package/package.json +13 -13
@@ -1,22 +1,9 @@
1
- import { Emitter, TickDelayedEvent } from '../events';
1
+ import { Emitter, Event, TickDelayedEvent } from '../events';
2
2
  import { getGridLocation, Gridview } from './gridview';
3
3
  import { Position } from '../dnd/droptarget';
4
4
  import { CompositeDisposable } from '../lifecycle';
5
5
  import { sequentialNumberGenerator } from '../math';
6
6
  import { Sizing, } from '../splitview/core/splitview';
7
- export var GroupChangeKind;
8
- (function (GroupChangeKind) {
9
- GroupChangeKind["ADD_PANEL"] = "ADD_PANEL";
10
- GroupChangeKind["REMOVE_PANEL"] = "REMOVE_PANEL";
11
- GroupChangeKind["PANEL_ACTIVE"] = "PANEL_ACTIVE";
12
- //
13
- GroupChangeKind["GROUP_ACTIVE"] = "GROUP_ACTIVE";
14
- GroupChangeKind["ADD_GROUP"] = "ADD_GROUP";
15
- GroupChangeKind["REMOVE_GROUP"] = "REMOVE_GROUP";
16
- //
17
- GroupChangeKind["LAYOUT_FROM_JSON"] = "LAYOUT_FROM_JSON";
18
- GroupChangeKind["LAYOUT"] = "LAYOUT";
19
- })(GroupChangeKind || (GroupChangeKind = {}));
20
7
  const nextLayoutId = sequentialNumberGenerator();
21
8
  export function toTarget(direction) {
22
9
  switch (direction) {
@@ -39,9 +26,6 @@ export class BaseGrid extends CompositeDisposable {
39
26
  this._element = _element;
40
27
  this._id = nextLayoutId.next();
41
28
  this._groups = new Map();
42
- //
43
- this._onGridEvent = new Emitter();
44
- this.onGridEvent = this._onGridEvent.event;
45
29
  this._onDidLayoutChange = new Emitter();
46
30
  this.onDidLayoutChange = this._onDidLayoutChange.event;
47
31
  this._onDidRemoveGroup = new Emitter();
@@ -50,30 +34,18 @@ export class BaseGrid extends CompositeDisposable {
50
34
  this.onDidAddGroup = this._onDidAddGroup.event;
51
35
  this._onDidActiveGroupChange = new Emitter();
52
36
  this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
37
+ this._bufferOnDidLayoutChange = new TickDelayedEvent();
53
38
  this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
54
39
  this.element.appendChild(this.gridview.element);
55
40
  this.layout(0, 0, true); // set some elements height/widths
56
41
  this.addDisposables(this.gridview.onDidChange(() => {
57
- this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
42
+ this._onDidLayoutChange.fire();
58
43
  }));
59
- this.addDisposables((() => {
60
- const tickDelayedEvent = new TickDelayedEvent();
61
- return new CompositeDisposable(this.onGridEvent((event) => {
62
- if ([
63
- GroupChangeKind.ADD_GROUP,
64
- GroupChangeKind.REMOVE_GROUP,
65
- GroupChangeKind.ADD_PANEL,
66
- GroupChangeKind.REMOVE_PANEL,
67
- GroupChangeKind.GROUP_ACTIVE,
68
- GroupChangeKind.PANEL_ACTIVE,
69
- GroupChangeKind.LAYOUT,
70
- ].includes(event.kind)) {
71
- tickDelayedEvent.fire();
72
- }
73
- }), tickDelayedEvent.onEvent(() => {
74
- this._onDidLayoutChange.fire();
75
- }), tickDelayedEvent);
76
- })());
44
+ this.addDisposables(Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
45
+ this._bufferOnDidLayoutChange.fire();
46
+ }), this._bufferOnDidLayoutChange.onEvent(() => {
47
+ this._onDidLayoutChange.fire();
48
+ }), this._bufferOnDidLayoutChange);
77
49
  }
78
50
  get id() {
79
51
  return this._id;
@@ -110,14 +82,13 @@ export class BaseGrid extends CompositeDisposable {
110
82
  }
111
83
  setVisible(panel, visible) {
112
84
  this.gridview.setViewVisible(getGridLocation(panel.element), visible);
113
- this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
85
+ this._onDidLayoutChange.fire();
114
86
  }
115
87
  isVisible(panel) {
116
88
  return this.gridview.isViewVisible(getGridLocation(panel.element));
117
89
  }
118
90
  doAddGroup(group, location = [0], size) {
119
91
  this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
120
- this._onGridEvent.fire({ kind: GroupChangeKind.ADD_GROUP });
121
92
  this._onDidAddGroup.fire(group);
122
93
  this.doSetGroupActive(group);
123
94
  }
@@ -129,9 +100,9 @@ export class BaseGrid extends CompositeDisposable {
129
100
  const view = this.gridview.remove(group, Sizing.Distribute);
130
101
  if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
131
102
  item.disposable.dispose();
103
+ item.value.dispose();
132
104
  this._groups.delete(group.id);
133
105
  }
134
- this._onGridEvent.fire({ kind: GroupChangeKind.REMOVE_GROUP });
135
106
  this._onDidRemoveGroup.fire(group);
136
107
  if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
137
108
  const groups = Array.from(this._groups.values());
@@ -160,9 +131,6 @@ export class BaseGrid extends CompositeDisposable {
160
131
  }
161
132
  }
162
133
  this._activeGroup = group;
163
- this._onGridEvent.fire({
164
- kind: GroupChangeKind.GROUP_ACTIVE,
165
- });
166
134
  this._onDidActiveGroupChange.fire(group);
167
135
  }
168
136
  removeGroup(group) {
@@ -219,11 +187,13 @@ export class BaseGrid extends CompositeDisposable {
219
187
  }
220
188
  dispose() {
221
189
  super.dispose();
222
- this._onGridEvent.dispose();
223
190
  this._onDidActiveGroupChange.dispose();
224
191
  this._onDidAddGroup.dispose();
225
192
  this._onDidRemoveGroup.dispose();
226
193
  this._onDidLayoutChange.dispose();
194
+ for (const group of this.groups) {
195
+ group.dispose();
196
+ }
227
197
  this.gridview.dispose();
228
198
  }
229
199
  }
@@ -66,7 +66,9 @@ export class BasePanelView extends CompositeDisposable {
66
66
  };
67
67
  }
68
68
  dispose() {
69
+ var _a;
69
70
  super.dispose();
70
71
  this.api.dispose();
72
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
71
73
  }
72
74
  }
@@ -40,7 +40,7 @@ export class BranchNode extends CompositeDisposable {
40
40
  : true,
41
41
  };
42
42
  }),
43
- size: this.orthogonalSize,
43
+ size: this.size,
44
44
  };
45
45
  this.children = childDescriptors.map((c) => c.node);
46
46
  this.splitview = new Splitview(this.element, {
@@ -201,7 +201,7 @@ export class BranchNode extends CompositeDisposable {
201
201
  }
202
202
  setupChildrenEvents() {
203
203
  this._childrenDisposable.dispose();
204
- this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((e) => {
204
+ this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))(() => {
205
205
  /**
206
206
  * indicate a change has occured to allows any re-rendering but don't bubble
207
207
  * event because that was specific to this branch
@@ -149,6 +149,7 @@ export class Gridview {
149
149
  this.disposable.dispose();
150
150
  this._onDidChange.dispose();
151
151
  this.root.dispose();
152
+ this.element.remove();
152
153
  }
153
154
  clear() {
154
155
  const orientation = this.root.orientation;
@@ -351,7 +352,7 @@ export class Gridview {
351
352
  const [parentIndex, ...__] = [...rest].reverse();
352
353
  const isSiblingVisible = parent.isChildVisible(0);
353
354
  parent.removeChild(0, sizing);
354
- const sizes = grandParent.children.map((size, i) => grandParent.getChildSize(i));
355
+ const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
355
356
  grandParent.removeChild(parentIndex, sizing);
356
357
  if (sibling instanceof BranchNode) {
357
358
  sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
@@ -5,12 +5,8 @@ import { GridviewComponentOptions } from './options';
5
5
  import { BaseGrid, Direction, IBaseGrid, IGridPanelView } from './baseComponentGridview';
6
6
  import { GridviewPanel, GridviewInitParameters, GridPanelViewState, IGridviewPanel } from './gridviewPanel';
7
7
  import { BaseComponentOptions } from '../panel/types';
8
- import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
9
8
  import { Orientation, Sizing } from '../splitview/core/splitview';
10
9
  import { Event } from '../events';
11
- interface PanelReference {
12
- api: GridviewPanelApiImpl;
13
- }
14
10
  export interface SerializedGridview {
15
11
  grid: {
16
12
  height: number;
@@ -21,7 +17,6 @@ export interface SerializedGridview {
21
17
  activePanel?: string;
22
18
  }
23
19
  export interface AddComponentOptions extends BaseComponentOptions {
24
- size?: number;
25
20
  minimumWidth?: number;
26
21
  maximumWidth?: number;
27
22
  minimumHeight?: number;
@@ -44,7 +39,7 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
44
39
  removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
45
40
  toggleVisibility(panel: IGridviewPanel): void;
46
41
  focus(): void;
47
- fromJSON(serializedGridview: SerializedGridview, deferComponentLayout?: boolean): void;
42
+ fromJSON(serializedGridview: SerializedGridview): void;
48
43
  toJSON(): SerializedGridview;
49
44
  movePanel(panel: IGridviewPanel, options: {
50
45
  direction: Direction;
@@ -77,16 +72,15 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
77
72
  setActive(panel: GridviewPanel): void;
78
73
  toggleVisibility(panel: GridviewPanel): void;
79
74
  focus(): void;
80
- fromJSON(serializedGridview: SerializedGridview, deferComponentLayout?: boolean): void;
75
+ fromJSON(serializedGridview: SerializedGridview): void;
81
76
  movePanel(panel: GridviewPanel, options: {
82
77
  direction: Direction;
83
78
  reference: string;
84
79
  size?: number;
85
80
  }): void;
86
- addPanel(options: AddComponentOptions): PanelReference;
81
+ addPanel(options: AddComponentOptions): void;
87
82
  private registerPanel;
88
83
  moveGroup(referenceGroup: IGridPanelComponentView, groupId: string, target: Position): void;
89
84
  removeGroup(group: GridviewPanel): void;
90
85
  dispose(): void;
91
86
  }
92
- export {};
@@ -2,7 +2,7 @@ import { getRelativeLocation, getGridLocation, } from './gridview';
2
2
  import { Position } from '../dnd/droptarget';
3
3
  import { tail, sequenceEquals } from '../array';
4
4
  import { CompositeDisposable } from '../lifecycle';
5
- import { BaseGrid, GroupChangeKind, toTarget, } from './baseComponentGridview';
5
+ import { BaseGrid, toTarget, } from './baseComponentGridview';
6
6
  import { GridviewApi } from '../api/component.api';
7
7
  import { createComponent } from '../panel/componentFactory';
8
8
  import { Emitter } from '../events';
@@ -67,7 +67,7 @@ export class GridviewComponent extends BaseGrid {
67
67
  this.gridview.setViewVisible(getGridLocation(panel.element), visible);
68
68
  }
69
69
  setActive(panel) {
70
- this._groups.forEach((value, key) => {
70
+ this._groups.forEach((value, _key) => {
71
71
  value.value.setActive(panel === value.value);
72
72
  });
73
73
  }
@@ -78,10 +78,14 @@ export class GridviewComponent extends BaseGrid {
78
78
  var _a;
79
79
  (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
80
80
  }
81
- fromJSON(serializedGridview, deferComponentLayout) {
81
+ fromJSON(serializedGridview) {
82
82
  const { grid, activePanel } = serializedGridview;
83
+ const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
84
+ for (const group of groups) {
85
+ group.disposable.dispose();
86
+ this.doRemoveGroup(group.value, { skipActive: true });
87
+ }
83
88
  this.gridview.clear();
84
- this._groups.clear();
85
89
  const queue = [];
86
90
  this.gridview.deserialize(grid, {
87
91
  fromJSON: (node) => {
@@ -108,21 +112,13 @@ export class GridviewComponent extends BaseGrid {
108
112
  },
109
113
  });
110
114
  this.layout(this.width, this.height, true);
111
- if (deferComponentLayout) {
112
- setTimeout(() => {
113
- queue.forEach((f) => f());
114
- }, 0);
115
- }
116
- else {
117
- queue.forEach((f) => f());
118
- }
115
+ queue.forEach((f) => f());
119
116
  if (typeof activePanel === 'string') {
120
117
  const panel = this.getPanel(activePanel);
121
118
  if (panel) {
122
119
  this.doSetGroupActive(panel);
123
120
  }
124
121
  }
125
- this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
126
122
  this._onDidLayoutfromJSON.fire();
127
123
  }
128
124
  movePanel(panel, options) {
@@ -179,7 +175,6 @@ export class GridviewComponent extends BaseGrid {
179
175
  });
180
176
  this.registerPanel(view);
181
177
  this.doAddGroup(view, relativeLocation, options.size);
182
- return { api: view.api };
183
178
  }
184
179
  registerPanel(panel) {
185
180
  const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {
@@ -230,11 +225,6 @@ export class GridviewComponent extends BaseGrid {
230
225
  }
231
226
  removeGroup(group) {
232
227
  super.removeGroup(group);
233
- const panel = this._groups.get(group.id);
234
- if (panel) {
235
- panel.disposable.dispose();
236
- this._groups.delete(group.id);
237
- }
238
228
  }
239
229
  dispose() {
240
230
  super.dispose();
@@ -18,6 +18,7 @@ export interface IGroupPanel extends IDisposable, IPanel {
18
18
  readonly api: DockviewPanelApi;
19
19
  readonly title: string;
20
20
  readonly suppressClosable: boolean;
21
+ readonly params: Record<string, any> | undefined;
21
22
  updateParentGroup(group: GroupviewPanel, isGroupActive: boolean): void;
22
23
  init(params: IGroupPanelInitParameters): void;
23
24
  toJSON(): GroupviewPanelState;
@@ -119,6 +119,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
119
119
  get maximumHeight(): number;
120
120
  get minimumWidth(): number;
121
121
  get maximumWidth(): number;
122
+ get hasWatermark(): boolean;
122
123
  constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupviewPanel);
123
124
  initialize(): void;
124
125
  isContentFocused(): boolean;
@@ -133,8 +134,8 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
133
134
  suppressRoll?: boolean;
134
135
  }): void;
135
136
  containsPanel(panel: IGroupPanel): boolean;
136
- init(params: PanelInitParameters): void;
137
- update(params: PanelUpdateEvent): void;
137
+ init(_params: PanelInitParameters): void;
138
+ update(_params: PanelUpdateEvent): void;
138
139
  focus(): void;
139
140
  openPanel(panel: IGroupPanel, options?: {
140
141
  index?: number;
@@ -99,6 +99,9 @@ export class Groupview extends CompositeDisposable {
99
99
  get maximumWidth() {
100
100
  return Number.MAX_SAFE_INTEGER;
101
101
  }
102
+ get hasWatermark() {
103
+ return !!(this.watermark && this.container.contains(this.watermark.element));
104
+ }
102
105
  initialize() {
103
106
  var _a, _b;
104
107
  if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
@@ -177,10 +180,10 @@ export class Groupview extends CompositeDisposable {
177
180
  containsPanel(panel) {
178
181
  return this.panels.includes(panel);
179
182
  }
180
- init(params) {
183
+ init(_params) {
181
184
  //noop
182
185
  }
183
- update(params) {
186
+ update(_params) {
184
187
  //noop
185
188
  }
186
189
  focus() {
@@ -403,10 +406,12 @@ export class Groupview extends CompositeDisposable {
403
406
  }
404
407
  }
405
408
  dispose() {
409
+ var _a;
410
+ super.dispose();
411
+ (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
406
412
  for (const panel of this.panels) {
407
413
  panel.dispose();
408
414
  }
409
- super.dispose();
410
415
  this.dropTarget.dispose();
411
416
  this.tabsContainer.dispose();
412
417
  this.contentContainer.dispose();
@@ -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
  }
@@ -56,7 +56,7 @@ export class ContentContainer extends CompositeDisposable {
56
56
  }
57
57
  this.disposable.value = disposable;
58
58
  }
59
- layout(width, height) {
59
+ layout(_width, _height) {
60
60
  // noop
61
61
  }
62
62
  closePanel() {
@@ -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,6 +18,8 @@ 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
24
  export { FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
25
25
  export { SizeEvent, GridviewPanelApi, GridConstraintChangeEvent, } from './api/gridviewPanelApi';
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';
@@ -29,4 +29,5 @@ export interface BaseComponentOptions {
29
29
  params?: Parameters;
30
30
  snap?: boolean;
31
31
  priority?: LayoutPriority;
32
+ size?: number;
32
33
  }
@@ -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() {
@@ -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;
@@ -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);
@@ -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
  }
@@ -41,7 +41,7 @@ export declare class PaneFramework extends DraggablePaneviewPanel {
41
41
  getBodyComponent(): IPaneBodyPart;
42
42
  getHeaderComponent(): IPaneHeaderPart;
43
43
  }
44
- export interface AddPaneviewCompponentOptions {
44
+ export interface AddPaneviewComponentOptions {
45
45
  id: string;
46
46
  component: string;
47
47
  headerComponent?: string;
@@ -64,10 +64,11 @@ export interface IPaneviewComponent extends IDisposable {
64
64
  readonly onDidRemoveView: Event<PaneviewPanel>;
65
65
  readonly onDidDrop: Event<PaneviewDropEvent2>;
66
66
  readonly onDidLayoutChange: Event<void>;
67
- addPanel(options: AddPaneviewCompponentOptions): IDisposable;
67
+ readonly onDidLayoutFromJSON: Event<void>;
68
+ addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
68
69
  layout(width: number, height: number): void;
69
70
  toJSON(): SerializedPaneview;
70
- fromJSON(serializedPaneview: SerializedPaneview, deferComponentLayout?: boolean): void;
71
+ fromJSON(serializedPaneview: SerializedPaneview): void;
71
72
  resizeToFit(): void;
72
73
  focus(): void;
73
74
  getPanels(): IPaneviewPanel[];
@@ -79,7 +80,10 @@ export interface IPaneviewComponent extends IDisposable {
79
80
  export declare class PaneviewComponent extends CompositeDisposable implements IPaneviewComponent {
80
81
  private element;
81
82
  private _disposable;
83
+ private _viewDisposables;
82
84
  private _paneview;
85
+ private readonly _onDidLayoutfromJSON;
86
+ readonly onDidLayoutFromJSON: Event<void>;
83
87
  private readonly _onDidLayoutChange;
84
88
  readonly onDidLayoutChange: Event<void>;
85
89
  private readonly _onDidDrop;
@@ -99,7 +103,7 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
99
103
  constructor(element: HTMLElement, options: PaneviewComponentOptions);
100
104
  focus(): void;
101
105
  updateOptions(options: Partial<PaneviewComponentOptions>): void;
102
- addPanel(options: AddPaneviewCompponentOptions): IDisposable;
106
+ addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
103
107
  getPanels(): PaneviewPanel[];
104
108
  removePanel(panel: PaneviewPanel): void;
105
109
  movePanel(from: number, to: number): void;
@@ -110,5 +114,8 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
110
114
  */
111
115
  resizeToFit(): void;
112
116
  toJSON(): SerializedPaneview;
113
- fromJSON(serializedPaneview: SerializedPaneview, deferComponentLayout?: boolean): void;
117
+ fromJSON(serializedPaneview: SerializedPaneview): void;
118
+ private doAddPanel;
119
+ private doRemovePanel;
120
+ dispose(): void;
114
121
  }