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.
- package/README.md +4 -195
- package/dist/cjs/api/component.api.d.ts +8 -8
- package/dist/cjs/api/component.api.js +16 -19
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/api/panelApi.d.ts +1 -2
- package/dist/cjs/api/panelApi.js +3 -3
- package/dist/cjs/api/panelApi.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +1 -2
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -17
- package/dist/cjs/dockview/components/tab/defaultTab.js +9 -64
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -2
- package/dist/cjs/dockview/defaultGroupPanelView.js +2 -4
- package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
- package/dist/cjs/dockview/deserializer.d.ts +0 -12
- package/dist/cjs/dockview/deserializer.js +0 -52
- package/dist/cjs/dockview/deserializer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +5 -7
- package/dist/cjs/dockview/dockviewComponent.js +79 -42
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +6 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +4 -2
- package/dist/cjs/gridview/baseComponentGridview.js +1 -1
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.js +1 -1
- package/dist/cjs/gridview/basePanelView.js.map +1 -1
- package/dist/cjs/gridview/gridview.js +1 -1
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +1 -2
- package/dist/cjs/gridview/gridviewComponent.js +28 -24
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +2 -3
- package/dist/cjs/gridview/gridviewPanel.js +4 -4
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
- package/dist/cjs/groupview/groupview.d.ts +4 -3
- package/dist/cjs/groupview/groupview.js +20 -8
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/groupviewPanel.d.ts +2 -2
- package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
- package/dist/cjs/groupview/tab.js +1 -0
- package/dist/cjs/groupview/tab.js.map +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +3 -5
- package/dist/cjs/groupview/titlebar/tabsContainer.js +2 -4
- package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/groupview/types.d.ts +1 -3
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.js +6 -4
- package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +2 -0
- package/dist/cjs/paneview/paneviewComponent.js +20 -17
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/react/dockview/dockview.d.ts +2 -3
- package/dist/cjs/react/dockview/dockview.js.map +1 -1
- package/dist/cjs/react/dockview/reactContentPart.d.ts +2 -4
- package/dist/cjs/react/dockview/reactContentPart.js +0 -3
- package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
- package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +0 -1
- package/dist/cjs/react/dockview/v2/reactContentRenderer.js +0 -3
- package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
- package/dist/cjs/react/gridview/view.js +2 -2
- package/dist/cjs/react/gridview/view.js.map +1 -1
- package/dist/cjs/react/index.d.ts +0 -1
- package/dist/cjs/react/index.js +0 -1
- package/dist/cjs/react/index.js.map +1 -1
- package/dist/cjs/react/splitview/view.js +2 -2
- package/dist/cjs/react/splitview/view.js.map +1 -1
- package/dist/cjs/splitview/core/options.d.ts +2 -2
- package/dist/cjs/splitview/splitviewComponent.d.ts +2 -1
- package/dist/cjs/splitview/splitviewComponent.js +23 -21
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewPanel.js +4 -6
- package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
- package/dist/dockview.amd.js +165 -250
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.noStyle.js +164 -249
- package/dist/dockview.cjs.js +165 -250
- package/dist/dockview.esm.js +160 -244
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.js +165 -250
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.noStyle.js +164 -249
- package/dist/esm/api/component.api.d.ts +8 -8
- package/dist/esm/api/component.api.js +16 -19
- package/dist/esm/api/panelApi.d.ts +1 -2
- package/dist/esm/api/panelApi.js +3 -3
- package/dist/esm/dnd/droptarget.d.ts +1 -2
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -17
- package/dist/esm/dockview/components/tab/defaultTab.js +8 -49
- package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -2
- package/dist/esm/dockview/defaultGroupPanelView.js +3 -5
- package/dist/esm/dockview/deserializer.d.ts +0 -12
- package/dist/esm/dockview/deserializer.js +1 -27
- package/dist/esm/dockview/dockviewComponent.d.ts +5 -7
- package/dist/esm/dockview/dockviewComponent.js +50 -24
- package/dist/esm/dockview/dockviewGroupPanel.js +1 -1
- package/dist/esm/dockview/options.d.ts +6 -1
- package/dist/esm/gridview/baseComponentGridview.d.ts +4 -2
- package/dist/esm/gridview/baseComponentGridview.js +1 -1
- package/dist/esm/gridview/basePanelView.js +1 -1
- package/dist/esm/gridview/gridviewComponent.d.ts +1 -2
- package/dist/esm/gridview/gridviewComponent.js +17 -13
- package/dist/esm/gridview/gridviewPanel.d.ts +2 -3
- package/dist/esm/gridview/gridviewPanel.js +4 -4
- package/dist/esm/groupview/groupview.d.ts +4 -3
- package/dist/esm/groupview/groupview.js +19 -8
- package/dist/esm/groupview/groupviewPanel.d.ts +2 -2
- package/dist/esm/groupview/tab.js +1 -0
- package/dist/esm/groupview/titlebar/tabsContainer.d.ts +3 -5
- package/dist/esm/groupview/titlebar/tabsContainer.js +2 -4
- package/dist/esm/groupview/types.d.ts +1 -3
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/paneview/defaultPaneviewHeader.js +6 -4
- package/dist/esm/paneview/paneviewComponent.d.ts +2 -0
- package/dist/esm/paneview/paneviewComponent.js +8 -5
- package/dist/esm/react/dockview/dockview.d.ts +2 -3
- package/dist/esm/react/dockview/reactContentPart.d.ts +2 -4
- package/dist/esm/react/dockview/reactContentPart.js +0 -3
- package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +0 -1
- package/dist/esm/react/dockview/v2/reactContentRenderer.js +0 -3
- package/dist/esm/react/gridview/view.js +2 -2
- package/dist/esm/react/index.d.ts +0 -1
- package/dist/esm/react/index.js +0 -1
- package/dist/esm/react/splitview/view.js +2 -2
- package/dist/esm/splitview/core/options.d.ts +2 -2
- package/dist/esm/splitview/splitviewComponent.d.ts +2 -1
- package/dist/esm/splitview/splitviewComponent.js +11 -9
- package/dist/esm/splitview/splitviewPanel.js +4 -6
- package/dist/styles/dockview.css +5 -0
- package/package.json +2 -2
- package/dist/cjs/react/dockview/components.d.ts +0 -11
- package/dist/cjs/react/dockview/components.js +0 -81
- package/dist/cjs/react/dockview/components.js.map +0 -1
- package/dist/esm/react/dockview/components.d.ts +0 -11
- 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
|
|
83
|
-
get
|
|
84
|
-
get
|
|
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
|
|
165
|
+
get onDidAddPanel() {
|
|
166
166
|
return this.component.onDidAddGroup;
|
|
167
167
|
}
|
|
168
|
-
get
|
|
168
|
+
get onDidRemovePanel() {
|
|
169
169
|
return this.component.onDidRemoveGroup;
|
|
170
170
|
}
|
|
171
|
-
get
|
|
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.
|
|
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
|
|
58
|
+
readonly _onDidDimensionChange: Emitter<PanelDimensionChangeEvent>;
|
|
60
59
|
readonly onDidDimensionsChange: Event<PanelDimensionChangeEvent>;
|
|
61
60
|
readonly _onDidChangeFocus: Emitter<FocusEvent>;
|
|
62
61
|
readonly onDidFocusChange: Event<FocusEvent>;
|
package/dist/esm/api/panelApi.js
CHANGED
|
@@ -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.
|
|
15
|
+
this._onDidDimensionChange = new Emitter({
|
|
16
16
|
replay: true,
|
|
17
17
|
});
|
|
18
|
-
this.onDidDimensionsChange = this.
|
|
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.
|
|
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
|
-
|
|
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
|
|
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():
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
88
|
-
readonly
|
|
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.
|
|
39
|
-
this.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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,
|
|
192
|
-
|
|
193
|
-
const
|
|
194
|
-
|
|
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.
|
|
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: {},
|
|
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.
|
|
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.
|
|
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:
|
|
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
|
-
|
|
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.
|
|
42
|
+
this._bufferOnDidLayoutChange.fire();
|
|
43
43
|
}));
|
|
44
44
|
this.addDisposables(Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
|
|
45
45
|
this._bufferOnDidLayoutChange.fire();
|