dockview 1.4.0 → 1.4.3

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 (141) hide show
  1. package/README.md +4 -195
  2. package/dist/cjs/api/component.api.d.ts +8 -8
  3. package/dist/cjs/api/component.api.js +16 -19
  4. package/dist/cjs/api/component.api.js.map +1 -1
  5. package/dist/cjs/api/panelApi.d.ts +1 -2
  6. package/dist/cjs/api/panelApi.js +3 -3
  7. package/dist/cjs/api/panelApi.js.map +1 -1
  8. package/dist/cjs/dnd/droptarget.d.ts +1 -2
  9. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -17
  10. package/dist/cjs/dockview/components/tab/defaultTab.js +9 -64
  11. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  12. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -2
  13. package/dist/cjs/dockview/defaultGroupPanelView.js +2 -4
  14. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  15. package/dist/cjs/dockview/deserializer.d.ts +0 -12
  16. package/dist/cjs/dockview/deserializer.js +0 -52
  17. package/dist/cjs/dockview/deserializer.js.map +1 -1
  18. package/dist/cjs/dockview/dockviewComponent.d.ts +5 -7
  19. package/dist/cjs/dockview/dockviewComponent.js +79 -42
  20. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  21. package/dist/cjs/dockview/dockviewGroupPanel.js +1 -1
  22. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  23. package/dist/cjs/dockview/options.d.ts +6 -1
  24. package/dist/cjs/gridview/baseComponentGridview.d.ts +4 -2
  25. package/dist/cjs/gridview/baseComponentGridview.js +1 -1
  26. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  27. package/dist/cjs/gridview/basePanelView.js +1 -1
  28. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  29. package/dist/cjs/gridview/gridview.js +1 -1
  30. package/dist/cjs/gridview/gridview.js.map +1 -1
  31. package/dist/cjs/gridview/gridviewComponent.d.ts +1 -2
  32. package/dist/cjs/gridview/gridviewComponent.js +28 -24
  33. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  34. package/dist/cjs/gridview/gridviewPanel.d.ts +2 -3
  35. package/dist/cjs/gridview/gridviewPanel.js +4 -4
  36. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  37. package/dist/cjs/groupview/groupview.d.ts +4 -3
  38. package/dist/cjs/groupview/groupview.js +20 -8
  39. package/dist/cjs/groupview/groupview.js.map +1 -1
  40. package/dist/cjs/groupview/groupviewPanel.d.ts +2 -2
  41. package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
  42. package/dist/cjs/groupview/tab.js +1 -0
  43. package/dist/cjs/groupview/tab.js.map +1 -1
  44. package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +3 -5
  45. package/dist/cjs/groupview/titlebar/tabsContainer.js +2 -4
  46. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  47. package/dist/cjs/groupview/types.d.ts +1 -3
  48. package/dist/cjs/index.d.ts +1 -0
  49. package/dist/cjs/index.js +1 -0
  50. package/dist/cjs/index.js.map +1 -1
  51. package/dist/cjs/paneview/defaultPaneviewHeader.js +6 -4
  52. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  53. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -0
  54. package/dist/cjs/paneview/paneviewComponent.js +20 -17
  55. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  56. package/dist/cjs/react/dockview/dockview.d.ts +2 -3
  57. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  58. package/dist/cjs/react/dockview/reactContentPart.d.ts +2 -4
  59. package/dist/cjs/react/dockview/reactContentPart.js +0 -3
  60. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  61. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +0 -1
  62. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +0 -3
  63. package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
  64. package/dist/cjs/react/gridview/view.js +2 -2
  65. package/dist/cjs/react/gridview/view.js.map +1 -1
  66. package/dist/cjs/react/index.d.ts +0 -1
  67. package/dist/cjs/react/index.js +0 -1
  68. package/dist/cjs/react/index.js.map +1 -1
  69. package/dist/cjs/react/splitview/view.js +2 -2
  70. package/dist/cjs/react/splitview/view.js.map +1 -1
  71. package/dist/cjs/splitview/core/options.d.ts +2 -2
  72. package/dist/cjs/splitview/splitviewComponent.d.ts +2 -1
  73. package/dist/cjs/splitview/splitviewComponent.js +23 -21
  74. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  75. package/dist/cjs/splitview/splitviewPanel.js +4 -6
  76. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  77. package/dist/dockview.amd.js +165 -250
  78. package/dist/dockview.amd.min.js +2 -2
  79. package/dist/dockview.amd.min.noStyle.js +2 -2
  80. package/dist/dockview.amd.noStyle.js +164 -249
  81. package/dist/dockview.cjs.js +165 -250
  82. package/dist/dockview.esm.js +160 -244
  83. package/dist/dockview.esm.min.js +2 -2
  84. package/dist/dockview.js +165 -250
  85. package/dist/dockview.min.js +2 -2
  86. package/dist/dockview.min.noStyle.js +2 -2
  87. package/dist/dockview.noStyle.js +164 -249
  88. package/dist/esm/api/component.api.d.ts +8 -8
  89. package/dist/esm/api/component.api.js +16 -19
  90. package/dist/esm/api/panelApi.d.ts +1 -2
  91. package/dist/esm/api/panelApi.js +3 -3
  92. package/dist/esm/dnd/droptarget.d.ts +1 -2
  93. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -17
  94. package/dist/esm/dockview/components/tab/defaultTab.js +8 -49
  95. package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -2
  96. package/dist/esm/dockview/defaultGroupPanelView.js +3 -5
  97. package/dist/esm/dockview/deserializer.d.ts +0 -12
  98. package/dist/esm/dockview/deserializer.js +1 -27
  99. package/dist/esm/dockview/dockviewComponent.d.ts +5 -7
  100. package/dist/esm/dockview/dockviewComponent.js +50 -24
  101. package/dist/esm/dockview/dockviewGroupPanel.js +1 -1
  102. package/dist/esm/dockview/options.d.ts +6 -1
  103. package/dist/esm/gridview/baseComponentGridview.d.ts +4 -2
  104. package/dist/esm/gridview/baseComponentGridview.js +1 -1
  105. package/dist/esm/gridview/basePanelView.js +1 -1
  106. package/dist/esm/gridview/gridviewComponent.d.ts +1 -2
  107. package/dist/esm/gridview/gridviewComponent.js +17 -13
  108. package/dist/esm/gridview/gridviewPanel.d.ts +2 -3
  109. package/dist/esm/gridview/gridviewPanel.js +4 -4
  110. package/dist/esm/groupview/groupview.d.ts +4 -3
  111. package/dist/esm/groupview/groupview.js +19 -8
  112. package/dist/esm/groupview/groupviewPanel.d.ts +2 -2
  113. package/dist/esm/groupview/tab.js +1 -0
  114. package/dist/esm/groupview/titlebar/tabsContainer.d.ts +3 -5
  115. package/dist/esm/groupview/titlebar/tabsContainer.js +2 -4
  116. package/dist/esm/groupview/types.d.ts +1 -3
  117. package/dist/esm/index.d.ts +1 -0
  118. package/dist/esm/index.js +1 -0
  119. package/dist/esm/paneview/defaultPaneviewHeader.js +6 -4
  120. package/dist/esm/paneview/paneviewComponent.d.ts +2 -0
  121. package/dist/esm/paneview/paneviewComponent.js +8 -5
  122. package/dist/esm/react/dockview/dockview.d.ts +2 -3
  123. package/dist/esm/react/dockview/reactContentPart.d.ts +2 -4
  124. package/dist/esm/react/dockview/reactContentPart.js +0 -3
  125. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +0 -1
  126. package/dist/esm/react/dockview/v2/reactContentRenderer.js +0 -3
  127. package/dist/esm/react/gridview/view.js +2 -2
  128. package/dist/esm/react/index.d.ts +0 -1
  129. package/dist/esm/react/index.js +0 -1
  130. package/dist/esm/react/splitview/view.js +2 -2
  131. package/dist/esm/splitview/core/options.d.ts +2 -2
  132. package/dist/esm/splitview/splitviewComponent.d.ts +2 -1
  133. package/dist/esm/splitview/splitviewComponent.js +11 -9
  134. package/dist/esm/splitview/splitviewPanel.js +4 -6
  135. package/dist/styles/dockview.css +5 -0
  136. package/package.json +2 -2
  137. package/dist/cjs/react/dockview/components.d.ts +0 -11
  138. package/dist/cjs/react/dockview/components.js +0 -81
  139. package/dist/cjs/react/dockview/components.js.map +0 -1
  140. package/dist/esm/react/dockview/components.d.ts +0 -11
  141. package/dist/esm/react/dockview/components.js +0 -54
@@ -21,6 +21,7 @@ export interface CommonApi<T = any> {
21
21
  layout(width: number, height: number): void;
22
22
  fromJSON(data: T): void;
23
23
  toJSON(): T;
24
+ clear(): void;
24
25
  }
25
26
  export declare class SplitviewApi implements CommonApi<SerializedSplitview> {
26
27
  private readonly component;
@@ -38,15 +39,14 @@ export declare class SplitviewApi implements CommonApi<SerializedSplitview> {
38
39
  constructor(component: ISplitviewComponent);
39
40
  updateOptions(options: SplitviewComponentUpdateOptions): void;
40
41
  removePanel(panel: ISplitviewPanel, sizing?: Sizing): void;
41
- setVisible(panel: ISplitviewPanel, isVisible: boolean): void;
42
42
  focus(): void;
43
43
  getPanel(id: string): ISplitviewPanel | undefined;
44
- setActive(panel: ISplitviewPanel): void;
45
44
  layout(width: number, height: number): void;
46
45
  addPanel(options: AddSplitviewComponentOptions): ISplitviewPanel;
47
46
  movePanel(from: number, to: number): void;
48
47
  fromJSON(data: SerializedSplitview): void;
49
48
  toJSON(): SerializedSplitview;
49
+ clear(): void;
50
50
  }
51
51
  export declare class PaneviewApi implements CommonApi<SerializedPaneview> {
52
52
  private readonly component;
@@ -69,6 +69,7 @@ export declare class PaneviewApi implements CommonApi<SerializedPaneview> {
69
69
  addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
70
70
  fromJSON(data: SerializedPaneview): void;
71
71
  toJSON(): SerializedPaneview;
72
+ clear(): void;
72
73
  }
73
74
  export declare class GridviewApi implements CommonApi<SerializedGridview> {
74
75
  private readonly component;
@@ -79,9 +80,9 @@ export declare class GridviewApi implements CommonApi<SerializedGridview> {
79
80
  get width(): number;
80
81
  get height(): number;
81
82
  get onDidLayoutChange(): Event<void>;
82
- get onDidAddGroup(): Event<IGridviewPanel>;
83
- get onDidRemoveGroup(): Event<IGridviewPanel>;
84
- get onDidActiveGroupChange(): Event<IGridviewPanel | undefined>;
83
+ get onDidAddPanel(): Event<IGridviewPanel>;
84
+ get onDidRemovePanel(): Event<IGridviewPanel>;
85
+ get onDidActivePanelChange(): Event<IGridviewPanel | undefined>;
85
86
  get onDidLayoutFromJSON(): Event<void>;
86
87
  get panels(): IGridviewPanel[];
87
88
  get orientation(): Orientation;
@@ -97,11 +98,9 @@ export declare class GridviewApi implements CommonApi<SerializedGridview> {
97
98
  size?: number;
98
99
  }): void;
99
100
  getPanel(id: string): IGridviewPanel | undefined;
100
- toggleVisibility(panel: IGridviewPanel): void;
101
- setVisible(panel: IGridviewPanel, visible: boolean): void;
102
- setActive(panel: IGridviewPanel): void;
103
101
  fromJSON(data: SerializedGridview): void;
104
102
  toJSON(): SerializedGridview;
103
+ clear(): void;
105
104
  }
106
105
  export declare class DockviewApi implements CommonApi<SerializedDockview> {
107
106
  private readonly component;
@@ -141,4 +140,5 @@ export declare class DockviewApi implements CommonApi<SerializedDockview> {
141
140
  getGroup(id: string): GroupPanel | undefined;
142
141
  fromJSON(data: SerializedDockview): void;
143
142
  toJSON(): SerializedDockview;
143
+ clear(): void;
144
144
  }
@@ -42,18 +42,12 @@ export class SplitviewApi {
42
42
  removePanel(panel, sizing) {
43
43
  this.component.removePanel(panel, sizing);
44
44
  }
45
- setVisible(panel, isVisible) {
46
- this.component.setVisible(panel, isVisible);
47
- }
48
45
  focus() {
49
46
  this.component.focus();
50
47
  }
51
48
  getPanel(id) {
52
49
  return this.component.getPanel(id);
53
50
  }
54
- setActive(panel) {
55
- this.component.setActive(panel);
56
- }
57
51
  layout(width, height) {
58
52
  return this.component.layout(width, height);
59
53
  }
@@ -69,6 +63,9 @@ export class SplitviewApi {
69
63
  toJSON() {
70
64
  return this.component.toJSON();
71
65
  }
66
+ clear() {
67
+ this.component.clear();
68
+ }
72
69
  }
73
70
  export class PaneviewApi {
74
71
  constructor(component) {
@@ -136,6 +133,9 @@ export class PaneviewApi {
136
133
  toJSON() {
137
134
  return this.component.toJSON();
138
135
  }
136
+ clear() {
137
+ this.component.clear();
138
+ }
139
139
  }
140
140
  export class GridviewApi {
141
141
  constructor(component) {
@@ -162,13 +162,13 @@ export class GridviewApi {
162
162
  get onDidLayoutChange() {
163
163
  return this.component.onDidLayoutChange;
164
164
  }
165
- get onDidAddGroup() {
165
+ get onDidAddPanel() {
166
166
  return this.component.onDidAddGroup;
167
167
  }
168
- get onDidRemoveGroup() {
168
+ get onDidRemovePanel() {
169
169
  return this.component.onDidRemoveGroup;
170
170
  }
171
- get onDidActiveGroupChange() {
171
+ get onDidActivePanelChange() {
172
172
  return this.component.onDidActiveGroupChange;
173
173
  }
174
174
  get onDidLayoutFromJSON() {
@@ -201,21 +201,15 @@ export class GridviewApi {
201
201
  getPanel(id) {
202
202
  return this.component.getPanel(id);
203
203
  }
204
- toggleVisibility(panel) {
205
- this.component.toggleVisibility(panel);
206
- }
207
- setVisible(panel, visible) {
208
- this.component.setVisible(panel, visible);
209
- }
210
- setActive(panel) {
211
- this.component.setActive(panel);
212
- }
213
204
  fromJSON(data) {
214
205
  return this.component.fromJSON(data);
215
206
  }
216
207
  toJSON() {
217
208
  return this.component.toJSON();
218
209
  }
210
+ clear() {
211
+ this.component.clear();
212
+ }
219
213
  }
220
214
  export class DockviewApi {
221
215
  constructor(component) {
@@ -264,7 +258,7 @@ export class DockviewApi {
264
258
  return this.component.onDidRemovePanel;
265
259
  }
266
260
  get onDidLayoutFromJSON() {
267
- return this.component.onDidLayoutfromJSON;
261
+ return this.component.onDidLayoutFromJSON;
268
262
  }
269
263
  get onDidLayoutChange() {
270
264
  return this.component.onDidLayoutChange;
@@ -326,4 +320,7 @@ export class DockviewApi {
326
320
  toJSON() {
327
321
  return this.component.toJSON();
328
322
  }
323
+ clear() {
324
+ this.component.clear();
325
+ }
329
326
  }
@@ -18,7 +18,6 @@ export interface PanelApi {
18
18
  readonly onDidFocusChange: Event<FocusEvent>;
19
19
  readonly onDidVisibilityChange: Event<VisibilityEvent>;
20
20
  readonly onDidActiveChange: Event<ActiveEvent>;
21
- readonly onFocusEvent: Event<void>;
22
21
  setVisible(isVisible: boolean): void;
23
22
  setActive(): void;
24
23
  /**
@@ -56,7 +55,7 @@ export declare class PanelApiImpl extends CompositeDisposable implements PanelAp
56
55
  private _isVisible;
57
56
  private _width;
58
57
  private _height;
59
- readonly _onDidPanelDimensionChange: Emitter<PanelDimensionChangeEvent>;
58
+ readonly _onDidDimensionChange: Emitter<PanelDimensionChangeEvent>;
60
59
  readonly onDidDimensionsChange: Event<PanelDimensionChangeEvent>;
61
60
  readonly _onDidChangeFocus: Emitter<FocusEvent>;
62
61
  readonly onDidFocusChange: Event<FocusEvent>;
@@ -12,10 +12,10 @@ export class PanelApiImpl extends CompositeDisposable {
12
12
  this._isVisible = true;
13
13
  this._width = 0;
14
14
  this._height = 0;
15
- this._onDidPanelDimensionChange = new Emitter({
15
+ this._onDidDimensionChange = new Emitter({
16
16
  replay: true,
17
17
  });
18
- this.onDidDimensionsChange = this._onDidPanelDimensionChange.event;
18
+ this.onDidDimensionsChange = this._onDidDimensionChange.event;
19
19
  //
20
20
  this._onDidChangeFocus = new Emitter({
21
21
  replay: true,
@@ -40,7 +40,7 @@ export class PanelApiImpl extends CompositeDisposable {
40
40
  //
41
41
  this._onActiveChange = new Emitter();
42
42
  this.onActiveChange = this._onActiveChange.event;
43
- this.addDisposables(this._onDidPanelDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this.onDidFocusChange((event) => {
43
+ this.addDisposables(this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onFocusEvent, this._onActiveChange, this._onVisibilityChange, this.onDidFocusChange((event) => {
44
44
  this._isFocused = event.isFocused;
45
45
  }), this.onDidActiveChange((event) => {
46
46
  this._isActive = event.isActive;
@@ -7,7 +7,7 @@ export declare enum Position {
7
7
  Right = "Right",
8
8
  Center = "Center"
9
9
  }
10
- declare type Quadrant = 'top' | 'bottom' | 'left' | 'right';
10
+ export declare type Quadrant = 'top' | 'bottom' | 'left' | 'right';
11
11
  export interface DroptargetEvent {
12
12
  position: Position;
13
13
  nativeEvent: DragEvent;
@@ -35,4 +35,3 @@ export declare class Droptarget extends CompositeDisposable {
35
35
  private calculateQuadrant;
36
36
  private removeDropTarget;
37
37
  }
38
- export {};
@@ -2,23 +2,6 @@ import { CompositeDisposable } from '../../../lifecycle';
2
2
  import { ITabRenderer, GroupPanelPartInitParameters } from '../../../groupview/types';
3
3
  import { PanelUpdateEvent } from '../../../panel/types';
4
4
  import { GroupPanel } from '../../../groupview/groupviewPanel';
5
- export declare class WrappedTab implements ITabRenderer {
6
- private readonly renderer;
7
- private readonly _element;
8
- constructor(renderer: ITabRenderer);
9
- get innerRenderer(): ITabRenderer;
10
- get element(): HTMLElement;
11
- get id(): string;
12
- show(): void;
13
- hide(): void;
14
- layout(width: number, height: number): void;
15
- update(event: PanelUpdateEvent): void;
16
- toJSON(): object;
17
- focus(): void;
18
- init(parameters: GroupPanelPartInitParameters): void;
19
- updateParentGroup(group: GroupPanel, isPanelVisible: boolean): void;
20
- dispose(): void;
21
- }
22
5
  export declare class DefaultTab extends CompositeDisposable implements ITabRenderer {
23
6
  private _element;
24
7
  private _isPanelVisible;
@@ -1,52 +1,5 @@
1
1
  import { CompositeDisposable } from '../../../lifecycle';
2
2
  import { addDisposableListener } from '../../../events';
3
- export class WrappedTab {
4
- constructor(renderer) {
5
- this.renderer = renderer;
6
- this._element = document.createElement('element');
7
- this.show();
8
- }
9
- get innerRenderer() {
10
- return this.renderer;
11
- }
12
- get element() {
13
- return this._element;
14
- }
15
- get id() {
16
- return this.renderer.id;
17
- }
18
- show() {
19
- if (!this.renderer.element.parentElement) {
20
- this._element.appendChild(this.renderer.element);
21
- }
22
- }
23
- hide() {
24
- if (this.renderer.element.parentElement) {
25
- this.renderer.element.remove();
26
- }
27
- }
28
- layout(width, height) {
29
- this.renderer.layout(width, height);
30
- }
31
- update(event) {
32
- this.renderer.update(event);
33
- }
34
- toJSON() {
35
- return this.renderer.toJSON();
36
- }
37
- focus() {
38
- this.renderer.focus();
39
- }
40
- init(parameters) {
41
- this.renderer.init(parameters);
42
- }
43
- updateParentGroup(group, isPanelVisible) {
44
- this.renderer.updateParentGroup(group, isPanelVisible);
45
- }
46
- dispose() {
47
- this.renderer.dispose();
48
- }
49
- }
50
3
  export class DefaultTab extends CompositeDisposable {
51
4
  constructor() {
52
5
  super();
@@ -109,14 +62,20 @@ export class DefaultTab extends CompositeDisposable {
109
62
  }
110
63
  }
111
64
  updateParentGroup(group, isPanelVisible) {
65
+ const changed = this._isPanelVisible !== isPanelVisible ||
66
+ this._isGroupActive !== group.isActive;
112
67
  this._isPanelVisible = isPanelVisible;
113
68
  this._isGroupActive = group.isActive;
114
- this.render();
69
+ if (changed) {
70
+ this.render();
71
+ }
115
72
  }
116
73
  layout(_width, _height) {
117
74
  // noop
118
75
  }
119
76
  render() {
120
- this._content.textContent = this.params.title;
77
+ if (this._content.textContent !== this.params.title) {
78
+ this._content.textContent = this.params.title;
79
+ }
121
80
  }
122
81
  }
@@ -1,4 +1,3 @@
1
- import { WrappedTab } from './components/tab/defaultTab';
2
1
  import { GroupPanelPartInitParameters, IActionsRenderer, IContentRenderer, ITabRenderer } from '../groupview/types';
3
2
  import { GroupPanel } from '../groupview/groupviewPanel';
4
3
  import { IDisposable } from '../lifecycle';
@@ -18,7 +17,7 @@ export declare class DefaultGroupPanelView implements IGroupPanelView {
18
17
  private readonly _tab;
19
18
  private readonly _actions;
20
19
  get content(): IContentRenderer;
21
- get tab(): WrappedTab;
20
+ get tab(): ITabRenderer;
22
21
  get actions(): IActionsRenderer | undefined;
23
22
  constructor(renderers: {
24
23
  content: IContentRenderer;
@@ -1,9 +1,9 @@
1
- import { DefaultTab, WrappedTab } from './components/tab/defaultTab';
1
+ import { DefaultTab } from './components/tab/defaultTab';
2
2
  export class DefaultGroupPanelView {
3
3
  constructor(renderers) {
4
4
  var _a;
5
5
  this._content = renderers.content;
6
- this._tab = new WrappedTab((_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab());
6
+ this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
7
7
  this._actions =
8
8
  renderers.actions ||
9
9
  (this.content.actions
@@ -43,9 +43,7 @@ export class DefaultGroupPanelView {
43
43
  toJSON() {
44
44
  return {
45
45
  content: this.content.toJSON(),
46
- tab: this.tab.innerRenderer instanceof DefaultTab
47
- ? undefined
48
- : this.tab.toJSON(),
46
+ tab: this.tab instanceof DefaultTab ? undefined : this.tab.toJSON(),
49
47
  };
50
48
  }
51
49
  dispose() {
@@ -1,17 +1,5 @@
1
- import { IGridView, ISerializedLeafNode, IViewDeserializer } from '../gridview/gridview';
2
1
  import { GroupviewPanelState, IDockviewPanel } from '../groupview/groupPanel';
3
- import { GroupPanelViewState } from '../groupview/groupview';
4
2
  import { GroupPanel } from '../groupview/groupviewPanel';
5
- import { DockviewComponent } from './dockviewComponent';
6
3
  export interface IPanelDeserializer {
7
4
  fromJSON(panelData: GroupviewPanelState, group: GroupPanel): IDockviewPanel;
8
5
  }
9
- export interface PanelDeserializerOptions {
10
- createPanel: (id: string, group: GroupPanel) => IDockviewPanel;
11
- }
12
- export declare class DefaultDeserializer implements IViewDeserializer {
13
- private readonly layout;
14
- private panelDeserializer;
15
- constructor(layout: DockviewComponent, panelDeserializer: PanelDeserializerOptions);
16
- fromJSON(node: ISerializedLeafNode<GroupPanelViewState>): IGridView;
17
- }
@@ -1,27 +1 @@
1
- export class DefaultDeserializer {
2
- constructor(layout, panelDeserializer) {
3
- this.layout = layout;
4
- this.panelDeserializer = panelDeserializer;
5
- }
6
- fromJSON(node) {
7
- const data = node.data;
8
- const children = data.views;
9
- const active = data.activeView;
10
- const group = this.layout.createGroup({
11
- id: data.id,
12
- locked: !!data.locked,
13
- hideHeader: !!data.hideHeader,
14
- });
15
- for (const child of children) {
16
- const panel = this.panelDeserializer.createPanel(child, group);
17
- const isActive = typeof active === 'string' && active === panel.id;
18
- group.model.openPanel(panel, {
19
- skipSetActive: !isActive,
20
- });
21
- }
22
- if (!group.activePanel && group.panels.length > 0) {
23
- group.model.openPanel(group.panels[group.panels.length - 1]);
24
- }
25
- return group;
26
- }
27
- }
1
+ export {};
@@ -37,6 +37,7 @@ export interface SerializedDockview {
37
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
+ group: GroupPanel;
40
41
  }
41
42
  export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
42
43
  readonly activePanel: IDockviewPanel | undefined;
@@ -53,11 +54,9 @@ export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
53
54
  addPanel(options: AddPanelOptions): IDockviewPanel;
54
55
  removePanel(panel: IDockviewPanel): void;
55
56
  getGroupPanel: (id: string) => IDockviewPanel | undefined;
56
- fireMouseEvent(event: LayoutMouseEvent): void;
57
57
  createWatermarkComponent(): IWatermarkRenderer;
58
58
  addEmptyGroup(options?: AddGroupOptions): void;
59
59
  closeAllGroups(): void;
60
- onTabInteractionEvent: Event<LayoutMouseEvent>;
61
60
  onTabContextMenu: Event<TabContextMenuEvent>;
62
61
  moveToNext(options?: MovementOptions): void;
63
62
  moveToPrevious(options?: MovementOptions): void;
@@ -67,15 +66,13 @@ export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
67
66
  fromJSON(data: SerializedDockview): void;
68
67
  readonly onDidRemovePanel: Event<IDockviewPanel>;
69
68
  readonly onDidAddPanel: Event<IDockviewPanel>;
70
- readonly onDidLayoutfromJSON: Event<void>;
69
+ readonly onDidLayoutFromJSON: Event<void>;
71
70
  readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
72
71
  }
73
72
  export declare class DockviewComponent extends BaseGrid<GroupPanel> implements IDockviewComponent {
74
73
  private _deserializer;
75
74
  private _api;
76
75
  private _options;
77
- private readonly _onTabInteractionEvent;
78
- readonly onTabInteractionEvent: Event<LayoutMouseEvent>;
79
76
  private readonly _onTabContextMenu;
80
77
  readonly onTabContextMenu: Event<TabContextMenuEvent>;
81
78
  private readonly _onDidDrop;
@@ -84,8 +81,8 @@ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements I
84
81
  readonly onDidRemovePanel: Event<IDockviewPanel>;
85
82
  private readonly _onDidAddPanel;
86
83
  readonly onDidAddPanel: Event<IDockviewPanel>;
87
- private readonly _onDidLayoutfromJSON;
88
- readonly onDidLayoutfromJSON: Event<void>;
84
+ private readonly _onDidLayoutFromJSON;
85
+ readonly onDidLayoutFromJSON: Event<void>;
89
86
  private readonly _onDidActivePanelChange;
90
87
  readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
91
88
  get totalPanels(): number;
@@ -110,6 +107,7 @@ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements I
110
107
  */
111
108
  toJSON(): SerializedDockview;
112
109
  fromJSON(data: SerializedDockview): void;
110
+ clear(): void;
113
111
  closeAllGroups(): void;
114
112
  fireMouseEvent(event: LayoutMouseEvent): void;
115
113
  addPanel(options: AddPanelOptions): IDockviewPanel;
@@ -6,7 +6,6 @@ import { CompositeDisposable } from '../lifecycle';
6
6
  import { Event, Emitter } from '../events';
7
7
  import { Watermark } from './components/watermark/watermark';
8
8
  import { sequentialNumberGenerator } from '../math';
9
- import { DefaultDeserializer } from './deserializer';
10
9
  import { createComponent } from '../panel/componentFactory';
11
10
  import { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';
12
11
  import { DockviewApi } from '../api/component.api';
@@ -24,9 +23,6 @@ export class DockviewComponent extends BaseGrid {
24
23
  orientation: options.orientation || Orientation.HORIZONTAL,
25
24
  styles: options.styles,
26
25
  });
27
- // events
28
- this._onTabInteractionEvent = new Emitter();
29
- this.onTabInteractionEvent = this._onTabInteractionEvent.event;
30
26
  this._onTabContextMenu = new Emitter();
31
27
  this.onTabContextMenu = this._onTabContextMenu.event;
32
28
  this._onDidDrop = new Emitter();
@@ -35,11 +31,11 @@ export class DockviewComponent extends BaseGrid {
35
31
  this.onDidRemovePanel = this._onDidRemovePanel.event;
36
32
  this._onDidAddPanel = new Emitter();
37
33
  this.onDidAddPanel = this._onDidAddPanel.event;
38
- this._onDidLayoutfromJSON = new Emitter();
39
- this.onDidLayoutfromJSON = this._onDidLayoutfromJSON.event;
34
+ this._onDidLayoutFromJSON = new Emitter();
35
+ this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
40
36
  this._onDidActivePanelChange = new Emitter();
41
37
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
42
- this.addDisposables(this._onTabInteractionEvent, this._onTabContextMenu, this._onDidDrop, Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
38
+ this.addDisposables(this._onTabContextMenu, this._onDidDrop, Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
43
39
  this._bufferOnDidLayoutChange.fire();
44
40
  }));
45
41
  this._options = options;
@@ -94,7 +90,7 @@ export class DockviewComponent extends BaseGrid {
94
90
  }
95
91
  updateOptions(options) {
96
92
  const hasOrientationChanged = typeof options.orientation === 'string' &&
97
- this.options.orientation !== options.orientation;
93
+ this.gridview.orientation !== options.orientation;
98
94
  this._options = Object.assign(Object.assign({}, this.options), options);
99
95
  if (hasOrientationChanged) {
100
96
  this.gridview.orientation = options.orientation;
@@ -172,12 +168,7 @@ export class DockviewComponent extends BaseGrid {
172
168
  };
173
169
  }
174
170
  fromJSON(data) {
175
- const groups = Array.from(this._groups.values()).map((_) => _.value);
176
- for (const group of groups) {
177
- // remove the group will automatically remove the panels
178
- this.removeGroup(group, true);
179
- }
180
- this.gridview.clear();
171
+ this.clear();
181
172
  if (!this.deserializer) {
182
173
  throw new Error('invalid deserializer');
183
174
  }
@@ -188,12 +179,31 @@ export class DockviewComponent extends BaseGrid {
188
179
  if (!this.deserializer) {
189
180
  throw new Error('no deserializer provided');
190
181
  }
191
- this.gridview.deserialize(grid, new DefaultDeserializer(this, {
192
- createPanel: (id, group) => {
193
- const panelData = panels[id];
194
- return this.deserializer.fromJSON(panelData, group);
195
- },
196
- }));
182
+ this.gridview.deserialize(grid, {
183
+ fromJSON: (node) => {
184
+ const { id, locked, hideHeader, views, activeView } = node.data;
185
+ const group = this.createGroup({
186
+ id,
187
+ locked: !!locked,
188
+ hideHeader: !!hideHeader,
189
+ });
190
+ this._onDidAddGroup.fire(group);
191
+ for (const child of views) {
192
+ const panel = this.deserializer.fromJSON(panels[child], group);
193
+ const isActive = typeof activeView === 'string' && activeView === panel.id;
194
+ group.model.openPanel(panel, {
195
+ skipSetPanelActive: !isActive,
196
+ skipSetGroupActive: true
197
+ });
198
+ }
199
+ if (!group.activePanel && group.panels.length > 0) {
200
+ group.model.openPanel(group.panels[group.panels.length - 1], {
201
+ skipSetGroupActive: true
202
+ });
203
+ }
204
+ return group;
205
+ }
206
+ });
197
207
  if (typeof activeGroup === 'string') {
198
208
  const panel = this.getPanel(activeGroup);
199
209
  if (panel) {
@@ -201,7 +211,23 @@ export class DockviewComponent extends BaseGrid {
201
211
  }
202
212
  }
203
213
  this.gridview.layout(this.width, this.height);
204
- this._onDidLayoutfromJSON.fire();
214
+ this._onDidLayoutFromJSON.fire();
215
+ }
216
+ clear() {
217
+ const groups = Array.from(this._groups.values()).map((_) => _.value);
218
+ const hasActiveGroup = !!this.activeGroup;
219
+ const hasActivePanel = !!this.activePanel;
220
+ for (const group of groups) {
221
+ // remove the group will automatically remove the panels
222
+ this.removeGroup(group, true);
223
+ }
224
+ if (hasActiveGroup) {
225
+ this.doSetGroupActive(undefined);
226
+ }
227
+ if (hasActivePanel) {
228
+ this._onDidActivePanelChange.fire(undefined);
229
+ }
230
+ this.gridview.clear();
205
231
  }
206
232
  closeAllGroups() {
207
233
  for (const entry of this._groups.entries()) {
@@ -393,13 +419,13 @@ export class DockviewComponent extends BaseGrid {
393
419
  }
394
420
  }
395
421
  const view = new GroupPanel(this, id, options);
396
- view.init({ params: {}, containerApi: null }); // required to initialized .part and allow for correct disposal of group
422
+ view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
397
423
  if (!this._groups.has(view.id)) {
398
424
  const disposable = new CompositeDisposable(view.model.onMove((event) => {
399
425
  const { groupId, itemId, target, index } = event;
400
426
  this.moveGroupOrPanel(view, groupId, itemId, target, index);
401
427
  }), view.model.onDidDrop((event) => {
402
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api }));
428
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
403
429
  }), view.model.onDidGroupChange((event) => {
404
430
  switch (event.kind) {
405
431
  case GroupChangeKind2.ADD_PANEL:
@@ -463,6 +489,6 @@ export class DockviewComponent extends BaseGrid {
463
489
  this._onDidActivePanelChange.dispose();
464
490
  this._onDidAddPanel.dispose();
465
491
  this._onDidRemovePanel.dispose();
466
- this._onDidLayoutfromJSON.dispose();
492
+ this._onDidLayoutFromJSON.dispose();
467
493
  }
468
494
  }
@@ -107,7 +107,7 @@ export class DockviewGroupPanel extends CompositeDisposable {
107
107
  layout(width, height) {
108
108
  var _a;
109
109
  // the obtain the correct dimensions of the content panel we must deduct the tab height
110
- this.api._onDidPanelDimensionChange.fire({
110
+ this.api._onDidDimensionChange.fire({
111
111
  width,
112
112
  height: height - (this.group.model.header.height || 0),
113
113
  });
@@ -39,6 +39,11 @@ export interface ViewFactoryData {
39
39
  content: string;
40
40
  tab?: string;
41
41
  }
42
+ export interface DockviewDndOverlayEvent {
43
+ nativeEvent: DragEvent;
44
+ target: DockviewDropTargets;
45
+ group: GroupPanel;
46
+ }
42
47
  export interface DockviewComponentOptions extends DockviewRenderFunctions {
43
48
  watermarkComponent?: WatermarkConstructor;
44
49
  watermarkFrameworkComponent?: any;
@@ -46,7 +51,7 @@ export interface DockviewComponentOptions extends DockviewRenderFunctions {
46
51
  tabHeight?: number;
47
52
  orientation?: Orientation;
48
53
  styles?: ISplitviewStyles;
49
- showDndOverlay?: (event: DragEvent, target: DockviewDropTargets) => boolean;
54
+ showDndOverlay?: (event: DockviewDndOverlayEvent) => boolean;
50
55
  }
51
56
  export interface PanelOptions {
52
57
  component: string;
@@ -1,4 +1,4 @@
1
- import { Event, TickDelayedEvent } from '../events';
1
+ import { Emitter, 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';
@@ -35,6 +35,7 @@ export interface IBaseGrid<T extends IGridPanelView> {
35
35
  getPanel(id: string): T | undefined;
36
36
  toJSON(): object;
37
37
  fromJSON(data: any): void;
38
+ clear(): void;
38
39
  layout(width: number, height: number, force?: boolean): void;
39
40
  setVisible(panel: T, visible: boolean): void;
40
41
  isVisible(panel: T): boolean;
@@ -49,7 +50,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
49
50
  readonly onDidLayoutChange: Event<void>;
50
51
  private readonly _onDidRemoveGroup;
51
52
  readonly onDidRemoveGroup: Event<T>;
52
- private readonly _onDidAddGroup;
53
+ protected readonly _onDidAddGroup: Emitter<T>;
53
54
  readonly onDidAddGroup: Event<T>;
54
55
  private readonly _onDidActiveGroupChange;
55
56
  readonly onDidActiveGroupChange: Event<T | undefined>;
@@ -68,6 +69,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
68
69
  constructor(_element: HTMLElement, options: BaseGridOptions);
69
70
  abstract toJSON(): object;
70
71
  abstract fromJSON(data: any): void;
72
+ abstract clear(): void;
71
73
  setVisible(panel: T, visible: boolean): void;
72
74
  isVisible(panel: T): boolean;
73
75
  protected doAddGroup(group: T, location?: number[], size?: number): void;
@@ -39,7 +39,7 @@ export class BaseGrid extends CompositeDisposable {
39
39
  this.element.appendChild(this.gridview.element);
40
40
  this.layout(0, 0, true); // set some elements height/widths
41
41
  this.addDisposables(this.gridview.onDidChange(() => {
42
- this._onDidLayoutChange.fire();
42
+ this._bufferOnDidLayoutChange.fire();
43
43
  }));
44
44
  this.addDisposables(Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
45
45
  this._bufferOnDidLayoutChange.fire();