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,27 +1,29 @@
1
1
  import { IDockviewComponent, SerializedDockview } from '../dockview/dockviewComponent';
2
2
  import { AddGroupOptions, AddPanelOptions, MovementOptions } from '../dockview/options';
3
- import { Direction, GroupChangeEvent } from '../gridview/baseComponentGridview';
3
+ import { Direction } from '../gridview/baseComponentGridview';
4
4
  import { AddComponentOptions, IGridviewComponent, SerializedGridview } from '../gridview/gridviewComponent';
5
5
  import { IGridviewPanel } from '../gridview/gridviewPanel';
6
6
  import { IGroupPanel } from '../groupview/groupPanel';
7
- import { AddPaneviewCompponentOptions, SerializedPaneview, IPaneviewComponent } from '../paneview/paneviewComponent';
7
+ import { AddPaneviewComponentOptions, SerializedPaneview, IPaneviewComponent } from '../paneview/paneviewComponent';
8
8
  import { IPaneviewPanel } from '../paneview/paneviewPanel';
9
9
  import { AddSplitviewComponentOptions, ISplitviewComponent, SerializedSplitview, SplitviewComponentUpdateOptions } from '../splitview/splitviewComponent';
10
10
  import { IView, Orientation, Sizing } from '../splitview/core/splitview';
11
11
  import { ISplitviewPanel } from '../splitview/splitviewPanel';
12
12
  import { IGroupviewPanel } from '../groupview/groupviewPanel';
13
13
  import { Event } from '../events';
14
- import { IDisposable } from '../lifecycle';
15
14
  import { PaneviewDropEvent } from '../react';
16
- export interface CommonApi {
15
+ export interface CommonApi<T = any> {
17
16
  readonly height: number;
18
17
  readonly width: number;
19
18
  readonly onDidLayoutChange: Event<void>;
19
+ readonly onDidLayoutFromJSON: Event<void>;
20
20
  focus(): void;
21
21
  layout(width: number, height: number): void;
22
22
  resizeToFit(): void;
23
+ fromJSON(data: T): void;
24
+ toJSON(): T;
23
25
  }
24
- export declare class SplitviewApi implements CommonApi {
26
+ export declare class SplitviewApi implements CommonApi<SerializedSplitview> {
25
27
  private readonly component;
26
28
  get minimumSize(): number;
27
29
  get maximumSize(): number;
@@ -29,6 +31,7 @@ export declare class SplitviewApi implements CommonApi {
29
31
  get width(): number;
30
32
  get length(): number;
31
33
  get orientation(): Orientation;
34
+ get onDidLayoutFromJSON(): Event<void>;
32
35
  get onDidLayoutChange(): Event<void>;
33
36
  get onDidAddView(): Event<IView>;
34
37
  get onDidRemoveView(): Event<IView>;
@@ -44,16 +47,17 @@ export declare class SplitviewApi implements CommonApi {
44
47
  addPanel(options: AddSplitviewComponentOptions): void;
45
48
  resizeToFit(): void;
46
49
  movePanel(from: number, to: number): void;
47
- fromJSON(data: SerializedSplitview, deferComponentLayout?: boolean): void;
50
+ fromJSON(data: SerializedSplitview): void;
48
51
  toJSON(): SerializedSplitview;
49
52
  }
50
- export declare class PaneviewApi implements CommonApi {
53
+ export declare class PaneviewApi implements CommonApi<SerializedPaneview> {
51
54
  private readonly component;
52
55
  get minimumSize(): number;
53
56
  get maximumSize(): number;
54
57
  get height(): number;
55
58
  get width(): number;
56
59
  get onDidLayoutChange(): Event<void>;
60
+ get onDidLayoutFromJSON(): Event<void>;
57
61
  get onDidAddView(): Event<IPaneviewPanel>;
58
62
  get onDidRemoveView(): Event<IPaneviewPanel>;
59
63
  get onDidDrop(): Event<PaneviewDropEvent>;
@@ -64,12 +68,12 @@ export declare class PaneviewApi implements CommonApi {
64
68
  movePanel(from: number, to: number): void;
65
69
  focus(): void;
66
70
  layout(width: number, height: number): void;
67
- addPanel(options: AddPaneviewCompponentOptions): IDisposable;
71
+ addPanel(options: AddPaneviewComponentOptions): void;
68
72
  resizeToFit(): void;
69
- fromJSON(data: SerializedPaneview, deferComponentLayout?: boolean): void;
73
+ fromJSON(data: SerializedPaneview): void;
70
74
  toJSON(): SerializedPaneview;
71
75
  }
72
- export declare class GridviewApi implements CommonApi {
76
+ export declare class GridviewApi implements CommonApi<SerializedGridview> {
73
77
  private readonly component;
74
78
  get minimumHeight(): number;
75
79
  get maximumHeight(): number;
@@ -77,7 +81,6 @@ export declare class GridviewApi implements CommonApi {
77
81
  get maximumWidth(): number;
78
82
  get width(): number;
79
83
  get height(): number;
80
- get onGridEvent(): Event<GroupChangeEvent>;
81
84
  get onDidLayoutChange(): Event<void>;
82
85
  get onDidAddGroup(): Event<IGridviewPanel>;
83
86
  get onDidRemoveGroup(): Event<IGridviewPanel>;
@@ -101,10 +104,10 @@ export declare class GridviewApi implements CommonApi {
101
104
  toggleVisibility(panel: IGridviewPanel): void;
102
105
  setVisible(panel: IGridviewPanel, visible: boolean): void;
103
106
  setActive(panel: IGridviewPanel): void;
104
- fromJSON(data: SerializedGridview, deferComponentLayout?: boolean): void;
107
+ fromJSON(data: SerializedGridview): void;
105
108
  toJSON(): SerializedGridview;
106
109
  }
107
- export declare class DockviewApi implements CommonApi {
110
+ export declare class DockviewApi implements CommonApi<SerializedDockview> {
108
111
  private readonly component;
109
112
  get width(): number;
110
113
  get height(): number;
@@ -114,14 +117,13 @@ export declare class DockviewApi implements CommonApi {
114
117
  get maximumWidth(): number;
115
118
  get size(): number;
116
119
  get totalPanels(): number;
117
- get onGridEvent(): Event<GroupChangeEvent>;
118
120
  get onDidActiveGroupChange(): Event<IGroupviewPanel | undefined>;
119
121
  get onDidAddGroup(): Event<IGroupviewPanel>;
120
122
  get onDidRemoveGroup(): Event<IGroupviewPanel>;
121
123
  get onDidActivePanelChange(): Event<IGroupPanel | undefined>;
122
124
  get onDidAddPanel(): Event<IGroupPanel>;
123
125
  get onDidRemovePanel(): Event<IGroupPanel>;
124
- get onDidLayoutfromJSON(): Event<void>;
126
+ get onDidLayoutFromJSON(): Event<void>;
125
127
  get onDidLayoutChange(): Event<void>;
126
128
  get panels(): IGroupPanel[];
127
129
  get groups(): IGroupviewPanel[];
@@ -21,6 +21,9 @@ export class SplitviewApi {
21
21
  get orientation() {
22
22
  return this.component.orientation;
23
23
  }
24
+ get onDidLayoutFromJSON() {
25
+ return this.component.onDidLayoutFromJSON;
26
+ }
24
27
  get onDidLayoutChange() {
25
28
  return this.component.onDidLayoutChange;
26
29
  }
@@ -63,8 +66,8 @@ export class SplitviewApi {
63
66
  movePanel(from, to) {
64
67
  this.component.movePanel(from, to);
65
68
  }
66
- fromJSON(data, deferComponentLayout) {
67
- this.component.fromJSON(data, deferComponentLayout);
69
+ fromJSON(data) {
70
+ this.component.fromJSON(data);
68
71
  }
69
72
  toJSON() {
70
73
  return this.component.toJSON();
@@ -89,6 +92,9 @@ export class PaneviewApi {
89
92
  get onDidLayoutChange() {
90
93
  return this.component.onDidLayoutChange;
91
94
  }
95
+ get onDidLayoutFromJSON() {
96
+ return this.component.onDidLayoutFromJSON;
97
+ }
92
98
  get onDidAddView() {
93
99
  return this.component.onDidAddView;
94
100
  }
@@ -125,13 +131,13 @@ export class PaneviewApi {
125
131
  this.component.layout(width, height);
126
132
  }
127
133
  addPanel(options) {
128
- return this.component.addPanel(options);
134
+ this.component.addPanel(options);
129
135
  }
130
136
  resizeToFit() {
131
137
  this.component.resizeToFit();
132
138
  }
133
- fromJSON(data, deferComponentLayout) {
134
- this.component.fromJSON(data, deferComponentLayout);
139
+ fromJSON(data) {
140
+ this.component.fromJSON(data);
135
141
  }
136
142
  toJSON() {
137
143
  return this.component.toJSON();
@@ -159,9 +165,6 @@ export class GridviewApi {
159
165
  get height() {
160
166
  return this.component.height;
161
167
  }
162
- get onGridEvent() {
163
- return this.component.onGridEvent;
164
- }
165
168
  get onDidLayoutChange() {
166
169
  return this.component.onDidLayoutChange;
167
170
  }
@@ -216,8 +219,8 @@ export class GridviewApi {
216
219
  setActive(panel) {
217
220
  this.component.setActive(panel);
218
221
  }
219
- fromJSON(data, deferComponentLayout) {
220
- return this.component.fromJSON(data, deferComponentLayout);
222
+ fromJSON(data) {
223
+ return this.component.fromJSON(data);
221
224
  }
222
225
  toJSON() {
223
226
  return this.component.toJSON();
@@ -251,9 +254,6 @@ export class DockviewApi {
251
254
  get totalPanels() {
252
255
  return this.component.totalPanels;
253
256
  }
254
- get onGridEvent() {
255
- return this.component.onGridEvent;
256
- }
257
257
  get onDidActiveGroupChange() {
258
258
  return this.component.onDidActiveGroupChange;
259
259
  }
@@ -272,7 +272,7 @@ export class DockviewApi {
272
272
  get onDidRemovePanel() {
273
273
  return this.component.onDidRemovePanel;
274
274
  }
275
- get onDidLayoutfromJSON() {
275
+ get onDidLayoutFromJSON() {
276
276
  return this.component.onDidLayoutfromJSON;
277
277
  }
278
278
  get onDidLayoutChange() {
@@ -3,7 +3,7 @@ export declare abstract class DragHandler extends CompositeDisposable {
3
3
  private readonly el;
4
4
  private readonly disposable;
5
5
  private readonly _onDragStart;
6
- readonly onDragStart: import("..").Event<void>;
6
+ readonly onDragStart: import("../events").Event<void>;
7
7
  private iframes;
8
8
  constructor(el: HTMLElement);
9
9
  abstract getData(): IDisposable;
@@ -1,7 +1,6 @@
1
- import { MutableDisposable } from '..';
2
1
  import { getElementsByTagName } from '../dom';
3
2
  import { addDisposableListener, Emitter } from '../events';
4
- import { CompositeDisposable } from '../lifecycle';
3
+ import { CompositeDisposable, MutableDisposable, } from '../lifecycle';
5
4
  export class DragHandler extends CompositeDisposable {
6
5
  constructor(el) {
7
6
  super();
@@ -27,7 +26,7 @@ export class DragHandler extends CompositeDisposable {
27
26
  if (event.dataTransfer) {
28
27
  event.dataTransfer.effectAllowed = 'move';
29
28
  }
30
- }), addDisposableListener(this.el, 'dragend', (ev) => {
29
+ }), addDisposableListener(this.el, 'dragend', () => {
31
30
  for (const iframe of this.iframes) {
32
31
  iframe.style.pointerEvents = 'auto';
33
32
  }
@@ -21,7 +21,7 @@ export class Droptarget extends CompositeDisposable {
21
21
  this._onDrop = new Emitter();
22
22
  this.onDrop = this._onDrop.event;
23
23
  this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {
24
- onDragEnter: (e) => undefined,
24
+ onDragEnter: () => undefined,
25
25
  onDragOver: (e) => {
26
26
  if (isBooleanValue(this.options.canDisplayOverlay)) {
27
27
  if (!this.options.canDisplayOverlay) {
@@ -62,10 +62,10 @@ export class Droptarget extends CompositeDisposable {
62
62
  this.toggleClasses(quadrant, isSmallX, isSmallY);
63
63
  this.setState(quadrant);
64
64
  },
65
- onDragLeave: (e) => {
65
+ onDragLeave: () => {
66
66
  this.removeDropTarget();
67
67
  },
68
- onDragEnd: (e) => {
68
+ onDragEnd: () => {
69
69
  this.removeDropTarget();
70
70
  },
71
71
  onDrop: (e) => {
@@ -38,6 +38,6 @@ export declare class DefaultTab extends CompositeDisposable implements ITabRende
38
38
  focus(): void;
39
39
  init(params: GroupPanelPartInitParameters): void;
40
40
  updateParentGroup(group: GroupviewPanel, isPanelVisible: boolean): void;
41
- layout(width: number, height: number): void;
41
+ layout(_width: number, _height: number): void;
42
42
  private render;
43
43
  }
@@ -113,7 +113,7 @@ export class DefaultTab extends CompositeDisposable {
113
113
  this._isGroupActive = group.isActive;
114
114
  this.render();
115
115
  }
116
- layout(width, height) {
116
+ layout(_width, _height) {
117
117
  // noop
118
118
  }
119
119
  render() {
@@ -8,12 +8,12 @@ export declare class Watermark extends CompositeDisposable implements IWatermark
8
8
  private params;
9
9
  get id(): string;
10
10
  constructor();
11
- update(event: PanelUpdateEvent): void;
11
+ update(_event: PanelUpdateEvent): void;
12
12
  focus(): void;
13
13
  toJSON(): {};
14
- layout(width: number, height: number): void;
14
+ layout(_width: number, _height: number): void;
15
15
  init(params: GroupPanelPartInitParameters): void;
16
- updateParentGroup(group: GroupviewPanel, visible: boolean): void;
16
+ updateParentGroup(group: GroupviewPanel, _visible: boolean): void;
17
17
  get element(): HTMLElement;
18
18
  private render;
19
19
  dispose(): void;
@@ -32,7 +32,7 @@ export class Watermark extends CompositeDisposable {
32
32
  get id() {
33
33
  return 'watermark';
34
34
  }
35
- update(event) {
35
+ update(_event) {
36
36
  // noop
37
37
  }
38
38
  focus() {
@@ -41,17 +41,17 @@ export class Watermark extends CompositeDisposable {
41
41
  toJSON() {
42
42
  return {};
43
43
  }
44
- layout(width, height) {
44
+ layout(_width, _height) {
45
45
  // noop
46
46
  }
47
47
  init(params) {
48
48
  this.params = params;
49
- this.addDisposables(this.params.containerApi.onDidLayoutChange((event) => {
49
+ this.addDisposables(this.params.containerApi.onDidLayoutChange(() => {
50
50
  this.render();
51
51
  }));
52
52
  this.render();
53
53
  }
54
- updateParentGroup(group, visible) {
54
+ updateParentGroup(group, _visible) {
55
55
  this.group = group;
56
56
  this.render();
57
57
  }
@@ -30,11 +30,11 @@ export interface SerializedDockview {
30
30
  [key: string]: GroupviewPanelState;
31
31
  };
32
32
  activeGroup?: string;
33
- options: {
33
+ options?: {
34
34
  tabHeight?: number;
35
35
  };
36
36
  }
37
- export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay'>;
37
+ export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent'>;
38
38
  export interface DockviewDropEvent extends GroupviewDropEvent {
39
39
  api: DockviewApi;
40
40
  }
@@ -113,14 +113,17 @@ export declare class DockviewComponent extends BaseGrid<GroupviewPanel> implemen
113
113
  closeAllGroups(): void;
114
114
  fireMouseEvent(event: LayoutMouseEvent): void;
115
115
  addPanel(options: AddPanelOptions): IGroupPanel;
116
- removePanel(panel: IGroupPanel): void;
116
+ removePanel(panel: IGroupPanel, options?: {
117
+ removeEmptyGroup: boolean;
118
+ skipDispose: boolean;
119
+ }): void;
117
120
  createWatermarkComponent(): IWatermarkRenderer;
118
121
  addEmptyGroup(options: AddGroupOptions): void;
119
- removeGroup(group: GroupviewPanel): void;
122
+ removeGroup(group: GroupviewPanel, skipActive?: boolean): void;
120
123
  moveGroupOrPanel(referenceGroup: GroupviewPanel, groupId: string, itemId: string, target: Position, index?: number): void;
121
124
  doSetGroupActive(group: GroupviewPanel | undefined, skipFocus?: boolean): void;
122
125
  createGroup(options?: GroupOptions): GroupviewPanel;
123
- private _addPanel;
126
+ private createPanel;
124
127
  private createContentComponent;
125
128
  private createTabComponent;
126
129
  private addPanelToNewGroup;
@@ -3,12 +3,12 @@ import { Position } from '../dnd/droptarget';
3
3
  import { tail, sequenceEquals } from '../array';
4
4
  import { DockviewGroupPanel } from './dockviewGroupPanel';
5
5
  import { CompositeDisposable } from '../lifecycle';
6
- import { Emitter } from '../events';
6
+ import { Event, Emitter } from '../events';
7
7
  import { Watermark } from './components/watermark/watermark';
8
8
  import { sequentialNumberGenerator } from '../math';
9
9
  import { DefaultDeserializer } from './deserializer';
10
10
  import { createComponent } from '../panel/componentFactory';
11
- import { BaseGrid, GroupChangeKind, toTarget, } from '../gridview/baseComponentGridview';
11
+ import { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';
12
12
  import { DockviewApi } from '../api/component.api';
13
13
  import { MouseEventKind } from '../groupview/tab';
14
14
  import { Orientation } from '../splitview/core/splitview';
@@ -39,7 +39,9 @@ export class DockviewComponent extends BaseGrid {
39
39
  this.onDidLayoutfromJSON = this._onDidLayoutfromJSON.event;
40
40
  this._onDidActivePanelChange = new Emitter();
41
41
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
42
- this.addDisposables(this._onTabInteractionEvent, this._onTabContextMenu, this._onDidDrop);
42
+ this.addDisposables(this._onTabInteractionEvent, this._onTabContextMenu, this._onDidDrop, Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
43
+ this._bufferOnDidLayoutChange.fire();
44
+ }));
43
45
  this._options = options;
44
46
  if (!this.options.components) {
45
47
  this.options.components = {};
@@ -173,11 +175,12 @@ export class DockviewComponent extends BaseGrid {
173
175
  };
174
176
  }
175
177
  fromJSON(data) {
178
+ const groups = Array.from(this._groups.values()).map((_) => _.value);
179
+ for (const group of groups) {
180
+ // remove the group will automatically remove the panels
181
+ this.removeGroup(group, true);
182
+ }
176
183
  this.gridview.clear();
177
- this.panels.forEach((panel) => {
178
- panel.dispose();
179
- });
180
- this._groups.clear();
181
184
  if (!this.deserializer) {
182
185
  throw new Error('invalid deserializer');
183
186
  }
@@ -201,7 +204,6 @@ export class DockviewComponent extends BaseGrid {
201
204
  }
202
205
  }
203
206
  this.gridview.layout(this.width, this.height);
204
- this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
205
207
  this._onDidLayoutfromJSON.fire();
206
208
  }
207
209
  closeAllGroups() {
@@ -223,7 +225,10 @@ export class DockviewComponent extends BaseGrid {
223
225
  }
224
226
  addPanel(options) {
225
227
  var _a, _b;
226
- const panel = this._addPanel(options);
228
+ if (this.panels.find((_) => _.id === options.id)) {
229
+ throw new Error(`panel with id ${options.id} already exists`);
230
+ }
231
+ const panel = this.createPanel(options);
227
232
  let referenceGroup;
228
233
  if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
229
234
  const referencePanel = this.getGroupPanel(options.position.referencePanel);
@@ -251,13 +256,20 @@ export class DockviewComponent extends BaseGrid {
251
256
  }
252
257
  return panel;
253
258
  }
254
- removePanel(panel) {
259
+ removePanel(panel, options = {
260
+ removeEmptyGroup: true,
261
+ skipDispose: false,
262
+ }) {
255
263
  const group = panel.group;
256
264
  if (!group) {
257
265
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
258
266
  }
259
267
  group.model.removePanel(panel);
260
- if (group.model.size === 0) {
268
+ panel.dispose();
269
+ const retainGroupForWatermark = this.size === 1;
270
+ if (!retainGroupForWatermark &&
271
+ group.model.size === 0 &&
272
+ options.removeEmptyGroup) {
261
273
  this.removeGroup(group);
262
274
  }
263
275
  }
@@ -289,16 +301,15 @@ export class DockviewComponent extends BaseGrid {
289
301
  this.doAddGroup(group);
290
302
  }
291
303
  }
292
- removeGroup(group) {
304
+ removeGroup(group, skipActive = false) {
293
305
  const panels = [...group.model.panels]; // reassign since group panels will mutate
294
- panels.forEach((panel) => {
295
- this.removePanel(panel);
296
- });
297
- if (this._groups.size === 1) {
298
- this._activeGroup = group;
299
- return;
306
+ for (const panel of panels) {
307
+ this.removePanel(panel, {
308
+ removeEmptyGroup: false,
309
+ skipDispose: false,
310
+ });
300
311
  }
301
- super.removeGroup(group);
312
+ super.doRemoveGroup(group, { skipActive });
302
313
  }
303
314
  moveGroupOrPanel(referenceGroup, groupId, itemId, target, index) {
304
315
  var _a;
@@ -353,15 +364,11 @@ export class DockviewComponent extends BaseGrid {
353
364
  }
354
365
  }
355
366
  doSetGroupActive(group, skipFocus) {
356
- var _a, _b, _c;
367
+ var _a, _b;
357
368
  const isGroupAlreadyFocused = this._activeGroup === group;
358
369
  super.doSetGroupActive(group, skipFocus);
359
370
  if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.model.activePanel)) {
360
- this._onGridEvent.fire({
361
- kind: GroupChangeKind.PANEL_ACTIVE,
362
- panel: (_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel,
363
- });
364
- this._onDidActivePanelChange.fire((_c = this._activeGroup) === null || _c === void 0 ? void 0 : _c.model.activePanel);
371
+ this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel);
365
372
  }
366
373
  }
367
374
  createGroup(options) {
@@ -383,6 +390,7 @@ export class DockviewComponent extends BaseGrid {
383
390
  }
384
391
  }
385
392
  const view = new GroupviewPanel(this, id, options);
393
+ view.init({ params: {}, containerApi: null }); // required to initialized .part and allow for correct disposal of group
386
394
  if (!this._groups.has(view.id)) {
387
395
  const disposable = new CompositeDisposable(view.model.onMove((event) => {
388
396
  const { groupId, itemId, target, index } = event;
@@ -392,28 +400,16 @@ export class DockviewComponent extends BaseGrid {
392
400
  }), view.model.onDidGroupChange((event) => {
393
401
  switch (event.kind) {
394
402
  case GroupChangeKind2.ADD_PANEL:
395
- this._onGridEvent.fire({
396
- kind: GroupChangeKind.ADD_PANEL,
397
- panel: event.panel,
398
- });
399
403
  if (event.panel) {
400
404
  this._onDidAddPanel.fire(event.panel);
401
405
  }
402
406
  break;
403
407
  case GroupChangeKind2.REMOVE_PANEL:
404
- this._onGridEvent.fire({
405
- kind: GroupChangeKind.REMOVE_PANEL,
406
- panel: event.panel,
407
- });
408
408
  if (event.panel) {
409
409
  this._onDidRemovePanel.fire(event.panel);
410
410
  }
411
411
  break;
412
412
  case GroupChangeKind2.PANEL_ACTIVE:
413
- this._onGridEvent.fire({
414
- kind: GroupChangeKind.PANEL_ACTIVE,
415
- panel: event.panel,
416
- });
417
413
  this._onDidActivePanelChange.fire(event.panel);
418
414
  break;
419
415
  }
@@ -428,7 +424,7 @@ export class DockviewComponent extends BaseGrid {
428
424
  }
429
425
  return view;
430
426
  }
431
- _addPanel(options) {
427
+ createPanel(options) {
432
428
  const view = new DefaultGroupPanelView({
433
429
  content: this.createContentComponent(options.id, options.component),
434
430
  tab: this.createTabComponent(options.id, options.tabComponent),
@@ -15,6 +15,7 @@ export declare class DockviewGroupPanel extends CompositeDisposable implements I
15
15
  private _view?;
16
16
  private _title;
17
17
  private _suppressClosable;
18
+ get params(): any;
18
19
  get title(): string;
19
20
  get suppressClosable(): boolean;
20
21
  get group(): GroupviewPanel | undefined;
@@ -16,6 +16,10 @@ export class DockviewGroupPanel extends CompositeDisposable {
16
16
  this.update({ params: { title } });
17
17
  }));
18
18
  }
19
+ get params() {
20
+ var _a;
21
+ return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;
22
+ }
19
23
  get title() {
20
24
  return this._title;
21
25
  }
@@ -1,29 +1,14 @@
1
- import { Emitter, Event } from '../events';
1
+ import { Event, TickDelayedEvent } from '../events';
2
2
  import { Gridview, IGridView } from './gridview';
3
3
  import { Position } from '../dnd/droptarget';
4
4
  import { CompositeDisposable, IValueDisposable } from '../lifecycle';
5
5
  import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
6
6
  import { IPanel } from '../panel/types';
7
7
  import { MovementOptions2 } from '../dockview/options';
8
- import { IGroupPanel } from '../groupview/groupPanel';
9
- export declare enum GroupChangeKind {
10
- ADD_PANEL = "ADD_PANEL",
11
- REMOVE_PANEL = "REMOVE_PANEL",
12
- PANEL_ACTIVE = "PANEL_ACTIVE",
13
- GROUP_ACTIVE = "GROUP_ACTIVE",
14
- ADD_GROUP = "ADD_GROUP",
15
- REMOVE_GROUP = "REMOVE_GROUP",
16
- LAYOUT_FROM_JSON = "LAYOUT_FROM_JSON",
17
- LAYOUT = "LAYOUT"
18
- }
19
- export interface GroupChangeEvent {
20
- readonly kind: GroupChangeKind;
21
- readonly panel?: IGroupPanel;
22
- }
23
8
  export declare type Direction = 'left' | 'right' | 'above' | 'below' | 'within';
24
9
  export declare function toTarget(direction: Direction): Position;
25
10
  export interface BaseGridOptions {
26
- readonly proportionalLayout?: boolean;
11
+ readonly proportionalLayout: boolean;
27
12
  readonly orientation: Orientation;
28
13
  readonly styles?: ISplitviewStyles;
29
14
  }
@@ -43,7 +28,6 @@ export interface IBaseGrid<T extends IGridPanelView> {
43
28
  readonly activeGroup: T | undefined;
44
29
  readonly size: number;
45
30
  readonly groups: T[];
46
- readonly onGridEvent: Event<GroupChangeEvent>;
47
31
  readonly onDidLayoutChange: Event<void>;
48
32
  readonly onDidRemoveGroup: Event<T>;
49
33
  readonly onDidAddGroup: Event<T>;
@@ -62,8 +46,6 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
62
46
  protected readonly _groups: Map<string, IValueDisposable<T>>;
63
47
  protected readonly gridview: Gridview;
64
48
  protected _activeGroup: T | undefined;
65
- protected readonly _onGridEvent: Emitter<GroupChangeEvent>;
66
- readonly onGridEvent: Event<GroupChangeEvent>;
67
49
  private _onDidLayoutChange;
68
50
  readonly onDidLayoutChange: Event<void>;
69
51
  private readonly _onDidRemoveGroup;
@@ -72,6 +54,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
72
54
  readonly onDidAddGroup: Event<T>;
73
55
  private readonly _onDidActiveGroupChange;
74
56
  readonly onDidActiveGroupChange: Event<T | undefined>;
57
+ protected readonly _bufferOnDidLayoutChange: TickDelayedEvent;
75
58
  get id(): string;
76
59
  get element(): HTMLElement;
77
60
  get size(): number;