dockview 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +243 -186
- package/dist/cjs/api/component.api.d.ts +28 -19
- package/dist/cjs/api/component.api.js +104 -33
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/api/gridviewPanelApi.js +1 -0
- package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
- package/dist/cjs/api/groupPanelApi.d.ts +11 -14
- package/dist/cjs/api/groupPanelApi.js +19 -17
- package/dist/cjs/api/groupPanelApi.js.map +1 -1
- package/dist/cjs/api/panelApi.d.ts +0 -25
- package/dist/cjs/api/panelApi.js +1 -20
- package/dist/cjs/api/panelApi.js.map +1 -1
- package/dist/cjs/api/paneviewPanelApi.js +1 -0
- package/dist/cjs/api/paneviewPanelApi.js.map +1 -1
- package/dist/cjs/api/splitviewPanelApi.d.ts +0 -1
- package/dist/cjs/api/splitviewPanelApi.js +1 -5
- package/dist/cjs/api/splitviewPanelApi.js.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +3 -3
- package/dist/cjs/dnd/abstractDragHandler.js +15 -14
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/dataTransfer.d.ts +0 -25
- package/dist/cjs/dnd/dataTransfer.js +1 -45
- package/dist/cjs/dnd/dataTransfer.js.map +1 -1
- package/dist/cjs/dnd/dnd.d.ts +1 -14
- package/dist/cjs/dnd/dnd.js +1 -79
- package/dist/cjs/dnd/dnd.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +3 -0
- package/dist/cjs/dnd/droptarget.js +69 -45
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -1
- package/dist/cjs/dockview/components/tab/defaultTab.js +0 -8
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +27 -19
- package/dist/cjs/dockview/dockviewComponent.js +67 -178
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +2 -5
- package/dist/cjs/dockview/dockviewGroupPanel.js +2 -31
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +2 -1
- package/dist/cjs/events.js +25 -4
- package/dist/cjs/events.js.map +1 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +9 -0
- package/dist/cjs/gridview/baseComponentGridview.js +14 -2
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.d.ts +5 -8
- package/dist/cjs/gridview/basePanelView.js +14 -8
- package/dist/cjs/gridview/basePanelView.js.map +1 -1
- package/dist/cjs/gridview/branchNode.js +1 -1
- package/dist/cjs/gridview/branchNode.js.map +1 -1
- package/dist/cjs/gridview/gridview.js +19 -17
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +4 -0
- package/dist/cjs/gridview/gridviewComponent.js +5 -0
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +0 -1
- package/dist/cjs/gridview/gridviewPanel.js +3 -6
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
- package/dist/cjs/gridview/leafNode.js +1 -0
- package/dist/cjs/gridview/leafNode.js.map +1 -1
- package/dist/cjs/groupview/groupPanel.d.ts +0 -7
- package/dist/cjs/groupview/groupview.d.ts +15 -8
- package/dist/cjs/groupview/groupview.js +36 -123
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/groupviewPanel.d.ts +5 -2
- package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
- package/dist/cjs/groupview/panel/content.js +1 -0
- package/dist/cjs/groupview/panel/content.js.map +1 -1
- package/dist/cjs/groupview/tab.d.ts +10 -13
- package/dist/cjs/groupview/tab.js +22 -80
- package/dist/cjs/groupview/tab.js.map +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.js +4 -6
- package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/lifecycle.js +2 -1
- package/dist/cjs/lifecycle.js.map +1 -1
- package/dist/cjs/panel/types.d.ts +0 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.js +31 -28
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/paneview.js +1 -1
- package/dist/cjs/paneview/paneview.js.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +0 -3
- package/dist/cjs/paneview/paneviewComponent.js +1 -0
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/paneview/paneviewPanel.js +1 -1
- package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
- package/dist/cjs/react/deserializer.js +1 -3
- package/dist/cjs/react/deserializer.js.map +1 -1
- package/dist/cjs/react/dockview/dockview.d.ts +9 -9
- package/dist/cjs/react/dockview/dockview.js +14 -1
- package/dist/cjs/react/dockview/dockview.js.map +1 -1
- package/dist/cjs/react/dockview/reactContentPart.js +4 -4
- package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactHeaderPart.js +1 -0
- package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +1 -2
- package/dist/cjs/react/dockview/reactWatermarkPart.js +1 -2
- package/dist/cjs/react/dockview/reactWatermarkPart.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 +1 -0
- package/dist/cjs/react/index.js.map +1 -1
- package/dist/cjs/react/react.js +1 -2
- package/dist/cjs/react/react.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/splitviewComponent.d.ts +0 -3
- package/dist/cjs/splitview/splitviewComponent.js +1 -1
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewPanel.d.ts +1 -6
- package/dist/cjs/splitview/splitviewPanel.js +5 -3
- package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
- package/dist/dockview.amd.js +394 -532
- package/dist/dockview.amd.min.js +2 -16
- package/dist/dockview.amd.min.noStyle.js +2 -16
- package/dist/dockview.amd.noStyle.js +393 -531
- package/dist/dockview.cjs.js +394 -532
- package/dist/dockview.esm.js +395 -528
- package/dist/dockview.esm.min.js +2 -16
- package/dist/dockview.js +394 -532
- package/dist/dockview.min.js +2 -16
- package/dist/dockview.min.noStyle.js +2 -16
- package/dist/dockview.noStyle.js +393 -531
- package/dist/esm/api/component.api.d.ts +28 -19
- package/dist/esm/api/component.api.js +48 -21
- package/dist/esm/api/gridviewPanelApi.js +1 -0
- package/dist/esm/api/groupPanelApi.d.ts +11 -14
- package/dist/esm/api/groupPanelApi.js +18 -13
- package/dist/esm/api/panelApi.d.ts +0 -25
- package/dist/esm/api/panelApi.js +1 -20
- package/dist/esm/api/paneviewPanelApi.js +1 -0
- package/dist/esm/api/splitviewPanelApi.d.ts +0 -1
- package/dist/esm/api/splitviewPanelApi.js +1 -5
- package/dist/esm/dnd/abstractDragHandler.d.ts +3 -3
- package/dist/esm/dnd/abstractDragHandler.js +9 -8
- package/dist/esm/dnd/dataTransfer.d.ts +0 -25
- package/dist/esm/dnd/dataTransfer.js +0 -40
- package/dist/esm/dnd/dnd.d.ts +1 -14
- package/dist/esm/dnd/dnd.js +1 -69
- package/dist/esm/dnd/droptarget.d.ts +3 -0
- package/dist/esm/dnd/droptarget.js +69 -45
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -1
- package/dist/esm/dockview/components/tab/defaultTab.js +1 -9
- package/dist/esm/dockview/dockviewComponent.d.ts +27 -19
- package/dist/esm/dockview/dockviewComponent.js +54 -118
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +2 -5
- package/dist/esm/dockview/dockviewGroupPanel.js +2 -30
- package/dist/esm/dockview/options.d.ts +2 -1
- package/dist/esm/events.js +2 -3
- package/dist/esm/gridview/baseComponentGridview.d.ts +9 -0
- package/dist/esm/gridview/baseComponentGridview.js +14 -2
- package/dist/esm/gridview/basePanelView.d.ts +5 -8
- package/dist/esm/gridview/basePanelView.js +10 -8
- package/dist/esm/gridview/branchNode.js +1 -1
- package/dist/esm/gridview/gridview.js +16 -15
- package/dist/esm/gridview/gridviewComponent.d.ts +4 -0
- package/dist/esm/gridview/gridviewComponent.js +5 -0
- package/dist/esm/gridview/gridviewPanel.d.ts +0 -1
- package/dist/esm/gridview/gridviewPanel.js +3 -6
- package/dist/esm/gridview/leafNode.js +1 -0
- package/dist/esm/groupview/groupPanel.d.ts +0 -7
- package/dist/esm/groupview/groupview.d.ts +15 -8
- package/dist/esm/groupview/groupview.js +22 -56
- package/dist/esm/groupview/groupviewPanel.d.ts +5 -2
- package/dist/esm/groupview/panel/content.js +1 -0
- package/dist/esm/groupview/tab.d.ts +10 -13
- package/dist/esm/groupview/tab.js +17 -24
- package/dist/esm/groupview/titlebar/tabsContainer.js +4 -6
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/lifecycle.js +2 -1
- package/dist/esm/panel/types.d.ts +0 -2
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/esm/paneview/draggablePaneviewPanel.js +31 -28
- package/dist/esm/paneview/paneview.js +1 -1
- package/dist/esm/paneview/paneviewComponent.d.ts +0 -3
- package/dist/esm/paneview/paneviewComponent.js +1 -0
- package/dist/esm/paneview/paneviewPanel.js +1 -1
- package/dist/esm/react/deserializer.js +1 -3
- package/dist/esm/react/dockview/dockview.d.ts +9 -9
- package/dist/esm/react/dockview/dockview.js +15 -2
- package/dist/esm/react/dockview/reactContentPart.js +4 -4
- package/dist/esm/react/dockview/reactHeaderPart.js +1 -0
- package/dist/esm/react/dockview/reactWatermarkPart.d.ts +1 -2
- package/dist/esm/react/dockview/reactWatermarkPart.js +1 -2
- package/dist/esm/react/gridview/view.js +2 -2
- package/dist/esm/react/index.d.ts +1 -0
- package/dist/esm/react/react.js +1 -2
- package/dist/esm/react/splitview/view.js +2 -2
- package/dist/esm/splitview/splitviewComponent.d.ts +0 -3
- package/dist/esm/splitview/splitviewComponent.js +1 -1
- package/dist/esm/splitview/splitviewPanel.d.ts +1 -6
- package/dist/esm/splitview/splitviewPanel.js +5 -3
- package/dist/styles/dockview.css +5 -9
- package/package.json +2 -2
- package/dist/cjs/functions.d.ts +0 -1
- package/dist/cjs/functions.js +0 -42
- package/dist/cjs/functions.js.map +0 -1
- package/dist/cjs/groupview/panel/hostedPanel.d.ts +0 -22
- package/dist/cjs/groupview/panel/hostedPanel.js +0 -57
- package/dist/cjs/groupview/panel/hostedPanel.js.map +0 -1
- package/dist/cjs/json.d.ts +0 -1
- package/dist/cjs/json.js +0 -14
- package/dist/cjs/json.js.map +0 -1
- package/dist/esm/functions.d.ts +0 -1
- package/dist/esm/functions.js +0 -8
- package/dist/esm/groupview/panel/hostedPanel.d.ts +0 -22
- package/dist/esm/groupview/panel/hostedPanel.js +0 -43
- package/dist/esm/json.d.ts +0 -1
- package/dist/esm/json.js +0 -9
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';
|
|
11
2
|
import { Position } from '../dnd/droptarget';
|
|
12
3
|
import { tail, sequenceEquals } from '../array';
|
|
@@ -14,7 +5,6 @@ import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
|
14
5
|
import { CompositeDisposable } from '../lifecycle';
|
|
15
6
|
import { Emitter } from '../events';
|
|
16
7
|
import { Watermark } from './components/watermark/watermark';
|
|
17
|
-
import { debounce } from '../functions';
|
|
18
8
|
import { sequentialNumberGenerator } from '../math';
|
|
19
9
|
import { DefaultDeserializer } from './deserializer';
|
|
20
10
|
import { createComponent } from '../panel/componentFactory';
|
|
@@ -34,15 +24,22 @@ export class DockviewComponent extends BaseGrid {
|
|
|
34
24
|
orientation: options.orientation || Orientation.HORIZONTAL,
|
|
35
25
|
styles: options.styles,
|
|
36
26
|
});
|
|
37
|
-
this._panels = new Map();
|
|
38
|
-
this.dirtyPanels = new Set();
|
|
39
|
-
this.debouncedDeque = debounce(this.syncConfigs.bind(this), 5000);
|
|
40
27
|
// events
|
|
41
28
|
this._onTabInteractionEvent = new Emitter();
|
|
42
29
|
this.onTabInteractionEvent = this._onTabInteractionEvent.event;
|
|
43
30
|
this._onTabContextMenu = new Emitter();
|
|
44
31
|
this.onTabContextMenu = this._onTabContextMenu.event;
|
|
45
|
-
this.
|
|
32
|
+
this._onDidDrop = new Emitter();
|
|
33
|
+
this.onDidDrop = this._onDidDrop.event;
|
|
34
|
+
this._onDidRemovePanel = new Emitter();
|
|
35
|
+
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
36
|
+
this._onDidAddPanel = new Emitter();
|
|
37
|
+
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
38
|
+
this._onDidLayoutfromJSON = new Emitter();
|
|
39
|
+
this.onDidLayoutfromJSON = this._onDidLayoutfromJSON.event;
|
|
40
|
+
this._onDidActivePanelChange = new Emitter();
|
|
41
|
+
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
42
|
+
this.addDisposables(this._onTabInteractionEvent, this._onTabContextMenu, this._onDidDrop);
|
|
46
43
|
this._options = options;
|
|
47
44
|
if (!this.options.components) {
|
|
48
45
|
this.options.components = {};
|
|
@@ -63,10 +60,10 @@ export class DockviewComponent extends BaseGrid {
|
|
|
63
60
|
this._api = new DockviewApi(this);
|
|
64
61
|
}
|
|
65
62
|
get totalPanels() {
|
|
66
|
-
return this.
|
|
63
|
+
return this.panels.length;
|
|
67
64
|
}
|
|
68
65
|
get panels() {
|
|
69
|
-
return
|
|
66
|
+
return this.groups.flatMap((group) => group.model.panels);
|
|
70
67
|
}
|
|
71
68
|
get deserializer() {
|
|
72
69
|
return this._deserializer;
|
|
@@ -96,10 +93,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
96
93
|
updateOptions(options) {
|
|
97
94
|
const hasOrientationChanged = typeof options.orientation === 'string' &&
|
|
98
95
|
this.options.orientation !== options.orientation;
|
|
99
|
-
// TODO support style update
|
|
100
|
-
// const hasStylesChanged =
|
|
101
|
-
// typeof options.styles === 'object' &&
|
|
102
|
-
// this.options.styles !== options.styles;
|
|
103
96
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
104
97
|
if (hasOrientationChanged) {
|
|
105
98
|
this.gridview.orientation = options.orientation;
|
|
@@ -111,8 +104,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
111
104
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
112
105
|
}
|
|
113
106
|
getGroupPanel(id) {
|
|
114
|
-
|
|
115
|
-
return (_a = this._panels.get(id)) === null || _a === void 0 ? void 0 : _a.value;
|
|
107
|
+
return this.panels.find((panel) => panel.id === id);
|
|
116
108
|
}
|
|
117
109
|
setActivePanel(panel) {
|
|
118
110
|
if (!panel.group) {
|
|
@@ -161,24 +153,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
161
153
|
this.doSetGroupActive(next);
|
|
162
154
|
}
|
|
163
155
|
}
|
|
164
|
-
registerPanel(panel) {
|
|
165
|
-
if (this._panels.has(panel.id)) {
|
|
166
|
-
throw new Error(`panel ${panel.id} already exists`);
|
|
167
|
-
}
|
|
168
|
-
const disposable = new CompositeDisposable(panel.onDidStateChange(() => this.addDirtyPanel(panel)));
|
|
169
|
-
this._panels.set(panel.id, { value: panel, disposable });
|
|
170
|
-
}
|
|
171
|
-
unregisterPanel(panel) {
|
|
172
|
-
if (!this._panels.has(panel.id)) {
|
|
173
|
-
throw new Error(`panel ${panel.id} doesn't exist`);
|
|
174
|
-
}
|
|
175
|
-
const item = this._panels.get(panel.id);
|
|
176
|
-
if (item) {
|
|
177
|
-
item.disposable.dispose();
|
|
178
|
-
item.value.dispose();
|
|
179
|
-
}
|
|
180
|
-
this._panels.delete(panel.id);
|
|
181
|
-
}
|
|
182
156
|
/**
|
|
183
157
|
* Serialize the current state of the layout
|
|
184
158
|
*
|
|
@@ -186,12 +160,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
186
160
|
*/
|
|
187
161
|
toJSON() {
|
|
188
162
|
var _a;
|
|
189
|
-
this.syncConfigs();
|
|
190
163
|
const data = this.gridview.serialize();
|
|
191
|
-
const panels =
|
|
192
|
-
|
|
193
|
-
collection[panel.value.id] = panel.value.toJSON();
|
|
194
|
-
}
|
|
164
|
+
const panels = this.panels.reduce((collection, panel) => {
|
|
165
|
+
collection[panel.id] = panel.toJSON();
|
|
195
166
|
return collection;
|
|
196
167
|
}, {});
|
|
197
168
|
return {
|
|
@@ -203,11 +174,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
203
174
|
}
|
|
204
175
|
fromJSON(data) {
|
|
205
176
|
this.gridview.clear();
|
|
206
|
-
this.
|
|
207
|
-
panel.
|
|
208
|
-
panel.value.dispose();
|
|
177
|
+
this.panels.forEach((panel) => {
|
|
178
|
+
panel.dispose();
|
|
209
179
|
});
|
|
210
|
-
this._panels.clear();
|
|
211
180
|
this._groups.clear();
|
|
212
181
|
if (!this.deserializer) {
|
|
213
182
|
throw new Error('invalid deserializer');
|
|
@@ -222,9 +191,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
222
191
|
this.gridview.deserialize(grid, new DefaultDeserializer(this, {
|
|
223
192
|
createPanel: (id) => {
|
|
224
193
|
const panelData = panels[id];
|
|
225
|
-
|
|
226
|
-
this.registerPanel(panel);
|
|
227
|
-
return panel;
|
|
194
|
+
return this.deserializer.fromJSON(panelData);
|
|
228
195
|
},
|
|
229
196
|
}));
|
|
230
197
|
if (typeof activeGroup === 'string') {
|
|
@@ -235,30 +202,23 @@ export class DockviewComponent extends BaseGrid {
|
|
|
235
202
|
}
|
|
236
203
|
this.gridview.layout(this.width, this.height);
|
|
237
204
|
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
|
|
205
|
+
this._onDidLayoutfromJSON.fire();
|
|
238
206
|
}
|
|
239
207
|
closeAllGroups() {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
if (!didCloseAll) {
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return true;
|
|
249
|
-
});
|
|
208
|
+
for (const entry of this._groups.entries()) {
|
|
209
|
+
const [_, group] = entry;
|
|
210
|
+
group.value.model.closeAllPanels();
|
|
211
|
+
}
|
|
250
212
|
}
|
|
251
213
|
fireMouseEvent(event) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
break;
|
|
214
|
+
if (event.kind === MouseEventKind.CONTEXT_MENU) {
|
|
215
|
+
if (event.tab && event.panel) {
|
|
216
|
+
this._onTabContextMenu.fire({
|
|
217
|
+
event: event.event,
|
|
218
|
+
api: this._api,
|
|
219
|
+
panel: event.panel,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
262
222
|
}
|
|
263
223
|
}
|
|
264
224
|
addPanel(options) {
|
|
@@ -292,7 +252,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
292
252
|
return panel;
|
|
293
253
|
}
|
|
294
254
|
removePanel(panel) {
|
|
295
|
-
this.unregisterPanel(panel);
|
|
296
255
|
const group = panel.group;
|
|
297
256
|
if (!group) {
|
|
298
257
|
throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
|
|
@@ -311,10 +270,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
311
270
|
: {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
|
|
312
271
|
}
|
|
313
272
|
addEmptyGroup(options) {
|
|
314
|
-
var _a;
|
|
315
273
|
const group = this.createGroup();
|
|
316
274
|
if (options) {
|
|
317
|
-
const referencePanel =
|
|
275
|
+
const referencePanel = this.panels.find((panel) => panel.id === options.referencePanel);
|
|
318
276
|
if (!referencePanel) {
|
|
319
277
|
throw new Error(`reference panel ${options.referencePanel} does not exist`);
|
|
320
278
|
}
|
|
@@ -343,13 +301,13 @@ export class DockviewComponent extends BaseGrid {
|
|
|
343
301
|
super.removeGroup(group);
|
|
344
302
|
}
|
|
345
303
|
moveGroupOrPanel(referenceGroup, groupId, itemId, target, index) {
|
|
346
|
-
var _a
|
|
304
|
+
var _a;
|
|
347
305
|
const sourceGroup = groupId
|
|
348
306
|
? (_a = this._groups.get(groupId)) === null || _a === void 0 ? void 0 : _a.value
|
|
349
307
|
: undefined;
|
|
350
308
|
if (!target || target === Position.Center) {
|
|
351
309
|
const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
|
|
352
|
-
|
|
310
|
+
this.panels.find((panel) => panel.id === itemId);
|
|
353
311
|
if (!groupItem) {
|
|
354
312
|
throw new Error(`No panel with id ${itemId}`);
|
|
355
313
|
}
|
|
@@ -385,7 +343,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
385
343
|
}
|
|
386
344
|
else {
|
|
387
345
|
const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
|
|
388
|
-
|
|
346
|
+
this.panels.find((panel) => panel.id === itemId);
|
|
389
347
|
if (!groupItem) {
|
|
390
348
|
throw new Error(`No panel with id ${itemId}`);
|
|
391
349
|
}
|
|
@@ -395,7 +353,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
395
353
|
}
|
|
396
354
|
}
|
|
397
355
|
doSetGroupActive(group, skipFocus) {
|
|
398
|
-
var _a, _b;
|
|
356
|
+
var _a, _b, _c;
|
|
399
357
|
const isGroupAlreadyFocused = this._activeGroup === group;
|
|
400
358
|
super.doSetGroupActive(group, skipFocus);
|
|
401
359
|
if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.model.activePanel)) {
|
|
@@ -403,6 +361,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
403
361
|
kind: GroupChangeKind.PANEL_ACTIVE,
|
|
404
362
|
panel: (_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel,
|
|
405
363
|
});
|
|
364
|
+
this._onDidActivePanelChange.fire((_c = this._activeGroup) === null || _c === void 0 ? void 0 : _c.model.activePanel);
|
|
406
365
|
}
|
|
407
366
|
}
|
|
408
367
|
createGroup(options) {
|
|
@@ -428,6 +387,8 @@ export class DockviewComponent extends BaseGrid {
|
|
|
428
387
|
const disposable = new CompositeDisposable(view.model.onMove((event) => {
|
|
429
388
|
const { groupId, itemId, target, index } = event;
|
|
430
389
|
this.moveGroupOrPanel(view, groupId, itemId, target, index);
|
|
390
|
+
}), view.model.onDidDrop((event) => {
|
|
391
|
+
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api }));
|
|
431
392
|
}), view.model.onDidGroupChange((event) => {
|
|
432
393
|
switch (event.kind) {
|
|
433
394
|
case GroupChangeKind2.ADD_PANEL:
|
|
@@ -435,24 +396,25 @@ export class DockviewComponent extends BaseGrid {
|
|
|
435
396
|
kind: GroupChangeKind.ADD_PANEL,
|
|
436
397
|
panel: event.panel,
|
|
437
398
|
});
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
kind: GroupChangeKind.GROUP_ACTIVE,
|
|
442
|
-
panel: event.panel,
|
|
443
|
-
});
|
|
399
|
+
if (event.panel) {
|
|
400
|
+
this._onDidAddPanel.fire(event.panel);
|
|
401
|
+
}
|
|
444
402
|
break;
|
|
445
403
|
case GroupChangeKind2.REMOVE_PANEL:
|
|
446
404
|
this._onGridEvent.fire({
|
|
447
405
|
kind: GroupChangeKind.REMOVE_PANEL,
|
|
448
406
|
panel: event.panel,
|
|
449
407
|
});
|
|
408
|
+
if (event.panel) {
|
|
409
|
+
this._onDidRemovePanel.fire(event.panel);
|
|
410
|
+
}
|
|
450
411
|
break;
|
|
451
412
|
case GroupChangeKind2.PANEL_ACTIVE:
|
|
452
413
|
this._onGridEvent.fire({
|
|
453
414
|
kind: GroupChangeKind.PANEL_ACTIVE,
|
|
454
415
|
panel: event.panel,
|
|
455
416
|
});
|
|
417
|
+
this._onDidActivePanelChange.fire(event.panel);
|
|
456
418
|
break;
|
|
457
419
|
}
|
|
458
420
|
}));
|
|
@@ -466,46 +428,18 @@ export class DockviewComponent extends BaseGrid {
|
|
|
466
428
|
}
|
|
467
429
|
return view;
|
|
468
430
|
}
|
|
469
|
-
dispose() {
|
|
470
|
-
super.dispose();
|
|
471
|
-
this._onGridEvent.dispose();
|
|
472
|
-
}
|
|
473
|
-
/**
|
|
474
|
-
* Ensure the local copy of the layout state is up-to-date
|
|
475
|
-
*/
|
|
476
|
-
syncConfigs() {
|
|
477
|
-
const dirtyPanels = Array.from(this.dirtyPanels);
|
|
478
|
-
if (dirtyPanels.length === 0) {
|
|
479
|
-
//
|
|
480
|
-
}
|
|
481
|
-
this.dirtyPanels.clear();
|
|
482
|
-
const partialPanelState = dirtyPanels
|
|
483
|
-
.map((panel) => this._panels.get(panel.id))
|
|
484
|
-
.filter((_) => !!_)
|
|
485
|
-
.reduce((collection, panel) => {
|
|
486
|
-
collection[panel.value.id] = panel.value.toJSON();
|
|
487
|
-
return collection;
|
|
488
|
-
}, {});
|
|
489
|
-
this.panelState = Object.assign(Object.assign({}, this.panelState), partialPanelState);
|
|
490
|
-
dirtyPanels
|
|
491
|
-
.filter((p) => this._panels.has(p.id))
|
|
492
|
-
.forEach((panel) => {
|
|
493
|
-
panel.setDirty(false);
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
431
|
_addPanel(options) {
|
|
497
432
|
const view = new DefaultGroupPanelView({
|
|
498
433
|
content: this.createContentComponent(options.id, options.component),
|
|
499
434
|
tab: this.createTabComponent(options.id, options.tabComponent),
|
|
500
435
|
});
|
|
501
|
-
const panel = new DockviewGroupPanel(options.id, this._api);
|
|
436
|
+
const panel = new DockviewGroupPanel(options.id, this, this._api);
|
|
502
437
|
panel.init({
|
|
503
438
|
view,
|
|
504
439
|
title: options.title || options.id,
|
|
505
440
|
suppressClosable: options === null || options === void 0 ? void 0 : options.suppressClosable,
|
|
506
441
|
params: (options === null || options === void 0 ? void 0 : options.params) || {},
|
|
507
442
|
});
|
|
508
|
-
this.registerPanel(panel);
|
|
509
443
|
return panel;
|
|
510
444
|
}
|
|
511
445
|
createContentComponent(id, componentName) {
|
|
@@ -525,9 +459,11 @@ export class DockviewComponent extends BaseGrid {
|
|
|
525
459
|
var _a;
|
|
526
460
|
return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;
|
|
527
461
|
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
this.
|
|
462
|
+
dispose() {
|
|
463
|
+
super.dispose();
|
|
464
|
+
this._onDidActivePanelChange.dispose();
|
|
465
|
+
this._onDidAddPanel.dispose();
|
|
466
|
+
this._onDidRemovePanel.dispose();
|
|
467
|
+
this._onDidLayoutfromJSON.dispose();
|
|
532
468
|
}
|
|
533
469
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DockviewApi } from '../api/component.api';
|
|
2
2
|
import { DockviewPanelApiImpl } from '../api/groupPanelApi';
|
|
3
|
-
import { Event } from '../events';
|
|
4
3
|
import { GroupPanelUpdateEvent, GroupviewPanelState, IGroupPanel, IGroupPanelInitParameters } from '../groupview/groupPanel';
|
|
5
4
|
import { GroupviewPanel } from '../groupview/groupviewPanel';
|
|
6
5
|
import { CompositeDisposable } from '../lifecycle';
|
|
7
6
|
import { IGroupPanelView } from './defaultGroupPanelView';
|
|
7
|
+
import { DockviewComponent } from './dockviewComponent';
|
|
8
8
|
export declare class DockviewGroupPanel extends CompositeDisposable implements IGroupPanel {
|
|
9
9
|
readonly id: string;
|
|
10
10
|
private readonly containerApi;
|
|
@@ -12,7 +12,6 @@ export declare class DockviewGroupPanel extends CompositeDisposable implements I
|
|
|
12
12
|
readonly api: DockviewPanelApiImpl;
|
|
13
13
|
private _group;
|
|
14
14
|
private _params?;
|
|
15
|
-
readonly onDidStateChange: Event<void>;
|
|
16
15
|
private _view?;
|
|
17
16
|
private _title;
|
|
18
17
|
private _suppressClosable;
|
|
@@ -20,11 +19,9 @@ export declare class DockviewGroupPanel extends CompositeDisposable implements I
|
|
|
20
19
|
get suppressClosable(): boolean;
|
|
21
20
|
get group(): GroupviewPanel | undefined;
|
|
22
21
|
get view(): IGroupPanelView | undefined;
|
|
23
|
-
constructor(id: string, containerApi: DockviewApi);
|
|
22
|
+
constructor(id: string, accessor: DockviewComponent, containerApi: DockviewApi);
|
|
24
23
|
init(params: IGroupPanelInitParameters): void;
|
|
25
24
|
focus(): void;
|
|
26
|
-
setDirty(isDirty: boolean): void;
|
|
27
|
-
close(): Promise<boolean>;
|
|
28
25
|
toJSON(): GroupviewPanelState;
|
|
29
26
|
setTitle(title: string): void;
|
|
30
27
|
setSuppressClosable(suppressClosable: boolean): void;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { GroupChangeKind2 } from '../groupview/groupview';
|
|
2
1
|
import { DockviewPanelApiImpl } from '../api/groupPanelApi';
|
|
3
2
|
import { CompositeDisposable, MutableDisposable } from '../lifecycle';
|
|
4
3
|
export class DockviewGroupPanel extends CompositeDisposable {
|
|
5
|
-
constructor(id, containerApi) {
|
|
4
|
+
constructor(id, accessor, containerApi) {
|
|
6
5
|
super();
|
|
7
6
|
this.id = id;
|
|
8
7
|
this.containerApi = containerApi;
|
|
@@ -10,9 +9,8 @@ export class DockviewGroupPanel extends CompositeDisposable {
|
|
|
10
9
|
this._suppressClosable = false;
|
|
11
10
|
this._title = '';
|
|
12
11
|
this.api = new DockviewPanelApiImpl(this, this._group);
|
|
13
|
-
this.onDidStateChange = this.api.onDidStateChange;
|
|
14
12
|
this.addDisposables(this.api.onActiveChange(() => {
|
|
15
|
-
|
|
13
|
+
accessor.setActivePanel(this);
|
|
16
14
|
}), this.api.onDidTitleChange((event) => {
|
|
17
15
|
const title = event.title;
|
|
18
16
|
this.update({ params: { title } });
|
|
@@ -36,32 +34,18 @@ export class DockviewGroupPanel extends CompositeDisposable {
|
|
|
36
34
|
this._view = params.view;
|
|
37
35
|
this.setTitle(params.title);
|
|
38
36
|
this.setSuppressClosable(params.suppressClosable || false);
|
|
39
|
-
if (params.state) {
|
|
40
|
-
this.api.setState(params.state);
|
|
41
|
-
}
|
|
42
37
|
(_a = this.view) === null || _a === void 0 ? void 0 : _a.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));
|
|
43
38
|
}
|
|
44
39
|
focus() {
|
|
45
40
|
this.api._onFocusEvent.fire();
|
|
46
41
|
}
|
|
47
|
-
setDirty(isDirty) {
|
|
48
|
-
this.api._onDidDirtyChange.fire(isDirty);
|
|
49
|
-
}
|
|
50
|
-
close() {
|
|
51
|
-
if (this.api.tryClose) {
|
|
52
|
-
return this.api.tryClose();
|
|
53
|
-
}
|
|
54
|
-
return Promise.resolve(true);
|
|
55
|
-
}
|
|
56
42
|
toJSON() {
|
|
57
|
-
const state = this.api.getState();
|
|
58
43
|
return {
|
|
59
44
|
id: this.id,
|
|
60
45
|
view: this.view.toJSON(),
|
|
61
46
|
params: Object.keys(this._params || {}).length > 0
|
|
62
47
|
? this._params
|
|
63
48
|
: undefined,
|
|
64
|
-
state: state && Object.keys(state).length > 0 ? state : undefined,
|
|
65
49
|
suppressClosable: this.suppressClosable || undefined,
|
|
66
50
|
title: this.title,
|
|
67
51
|
};
|
|
@@ -106,18 +90,6 @@ export class DockviewGroupPanel extends CompositeDisposable {
|
|
|
106
90
|
var _a;
|
|
107
91
|
this._group = group;
|
|
108
92
|
this.api.group = group;
|
|
109
|
-
this.mutableDisposable.value = this._group.model.onDidGroupChange((ev) => {
|
|
110
|
-
var _a;
|
|
111
|
-
if (ev.kind === GroupChangeKind2.GROUP_ACTIVE) {
|
|
112
|
-
const isVisible = !!((_a = this._group) === null || _a === void 0 ? void 0 : _a.model.isPanelActive(this));
|
|
113
|
-
this.api._onDidActiveChange.fire({
|
|
114
|
-
isActive: isGroupActive && isVisible,
|
|
115
|
-
});
|
|
116
|
-
this.api._onDidVisibilityChange.fire({
|
|
117
|
-
isVisible,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
93
|
const isPanelVisible = this._group.model.isPanelActive(this);
|
|
122
94
|
this.api._onDidActiveChange.fire({
|
|
123
95
|
isActive: isGroupActive && isPanelVisible,
|
|
@@ -6,6 +6,7 @@ import { IContentRenderer, ITabRenderer, WatermarkConstructor, IWatermarkRendere
|
|
|
6
6
|
import { GroupviewPanel } from '../groupview/groupviewPanel';
|
|
7
7
|
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
|
8
8
|
import { FrameworkFactory } from '../types';
|
|
9
|
+
import { DockviewDropTargets } from '../groupview/dnd';
|
|
9
10
|
export interface GroupPanelFrameworkComponentFactory {
|
|
10
11
|
content: FrameworkFactory<IContentRenderer>;
|
|
11
12
|
tab: FrameworkFactory<ITabRenderer>;
|
|
@@ -44,9 +45,9 @@ export interface DockviewOptions extends DockviewRenderFunctions {
|
|
|
44
45
|
frameworkComponentFactory?: GroupPanelFrameworkComponentFactory;
|
|
45
46
|
tabHeight?: number;
|
|
46
47
|
debug?: boolean;
|
|
47
|
-
enableExternalDragEvents?: boolean;
|
|
48
48
|
orientation?: Orientation;
|
|
49
49
|
styles?: ISplitviewStyles;
|
|
50
|
+
showDndOverlay?: (event: DragEvent, target: DockviewDropTargets) => boolean;
|
|
50
51
|
}
|
|
51
52
|
export interface PanelOptions {
|
|
52
53
|
component: string;
|
package/dist/esm/events.js
CHANGED
|
@@ -28,7 +28,6 @@ export class Emitter {
|
|
|
28
28
|
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {
|
|
29
29
|
listener(this._last);
|
|
30
30
|
}
|
|
31
|
-
const firstListener = this._listeners.length === 0;
|
|
32
31
|
this._listeners.push(listener);
|
|
33
32
|
return {
|
|
34
33
|
dispose: () => {
|
|
@@ -44,9 +43,9 @@ export class Emitter {
|
|
|
44
43
|
}
|
|
45
44
|
fire(e) {
|
|
46
45
|
this._last = e;
|
|
47
|
-
this._listeners
|
|
46
|
+
for (const listener of this._listeners) {
|
|
48
47
|
listener(e);
|
|
49
|
-
}
|
|
48
|
+
}
|
|
50
49
|
}
|
|
51
50
|
dispose() {
|
|
52
51
|
this._listeners = [];
|
|
@@ -45,6 +45,9 @@ export interface IBaseGrid<T extends IGridPanelView> {
|
|
|
45
45
|
readonly groups: T[];
|
|
46
46
|
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
47
47
|
readonly onDidLayoutChange: Event<void>;
|
|
48
|
+
readonly onDidRemoveGroup: Event<T>;
|
|
49
|
+
readonly onDidAddGroup: Event<T>;
|
|
50
|
+
readonly onDidActiveGroupChange: Event<T | undefined>;
|
|
48
51
|
getPanel(id: string): T | undefined;
|
|
49
52
|
toJSON(): object;
|
|
50
53
|
fromJSON(data: any): void;
|
|
@@ -63,6 +66,12 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
|
|
|
63
66
|
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
64
67
|
private _onDidLayoutChange;
|
|
65
68
|
readonly onDidLayoutChange: Event<void>;
|
|
69
|
+
private readonly _onDidRemoveGroup;
|
|
70
|
+
readonly onDidRemoveGroup: Event<T>;
|
|
71
|
+
private readonly _onDidAddGroup;
|
|
72
|
+
readonly onDidAddGroup: Event<T>;
|
|
73
|
+
private readonly _onDidActiveGroupChange;
|
|
74
|
+
readonly onDidActiveGroupChange: Event<T | undefined>;
|
|
66
75
|
get id(): string;
|
|
67
76
|
get element(): HTMLElement;
|
|
68
77
|
get size(): number;
|
|
@@ -44,10 +44,15 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
44
44
|
this.onGridEvent = this._onGridEvent.event;
|
|
45
45
|
this._onDidLayoutChange = new Emitter();
|
|
46
46
|
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
47
|
+
this._onDidRemoveGroup = new Emitter();
|
|
48
|
+
this.onDidRemoveGroup = this._onDidRemoveGroup.event;
|
|
49
|
+
this._onDidAddGroup = new Emitter();
|
|
50
|
+
this.onDidAddGroup = this._onDidAddGroup.event;
|
|
51
|
+
this._onDidActiveGroupChange = new Emitter();
|
|
52
|
+
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
47
53
|
this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
|
|
48
54
|
this.element.appendChild(this.gridview.element);
|
|
49
|
-
|
|
50
|
-
this.layout(0, 0, true);
|
|
55
|
+
this.layout(0, 0, true); // set some elements height/widths
|
|
51
56
|
this.addDisposables(this.gridview.onDidChange(() => {
|
|
52
57
|
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT });
|
|
53
58
|
}));
|
|
@@ -113,6 +118,7 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
113
118
|
doAddGroup(group, location = [0], size) {
|
|
114
119
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
|
|
115
120
|
this._onGridEvent.fire({ kind: GroupChangeKind.ADD_GROUP });
|
|
121
|
+
this._onDidAddGroup.fire(group);
|
|
116
122
|
this.doSetGroupActive(group);
|
|
117
123
|
}
|
|
118
124
|
doRemoveGroup(group, options) {
|
|
@@ -126,6 +132,7 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
126
132
|
this._groups.delete(group.id);
|
|
127
133
|
}
|
|
128
134
|
this._onGridEvent.fire({ kind: GroupChangeKind.REMOVE_GROUP });
|
|
135
|
+
this._onDidRemoveGroup.fire(group);
|
|
129
136
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
130
137
|
const groups = Array.from(this._groups.values());
|
|
131
138
|
this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
|
|
@@ -156,6 +163,7 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
156
163
|
this._onGridEvent.fire({
|
|
157
164
|
kind: GroupChangeKind.GROUP_ACTIVE,
|
|
158
165
|
});
|
|
166
|
+
this._onDidActiveGroupChange.fire(group);
|
|
159
167
|
}
|
|
160
168
|
removeGroup(group) {
|
|
161
169
|
this.doRemoveGroup(group);
|
|
@@ -212,6 +220,10 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
212
220
|
dispose() {
|
|
213
221
|
super.dispose();
|
|
214
222
|
this._onGridEvent.dispose();
|
|
223
|
+
this._onDidActiveGroupChange.dispose();
|
|
224
|
+
this._onDidAddGroup.dispose();
|
|
225
|
+
this._onDidRemoveGroup.dispose();
|
|
226
|
+
this._onDidLayoutChange.dispose();
|
|
215
227
|
this.gridview.dispose();
|
|
216
228
|
}
|
|
217
229
|
}
|
|
@@ -4,21 +4,17 @@ import { PanelApiImpl } from '../api/panelApi';
|
|
|
4
4
|
export interface BasePanelViewState {
|
|
5
5
|
id: string;
|
|
6
6
|
component: string;
|
|
7
|
-
params?:
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
};
|
|
10
|
-
state?: {
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
};
|
|
7
|
+
params?: Record<string, any>;
|
|
13
8
|
}
|
|
14
9
|
export interface BasePanelViewExported<T extends PanelApiImpl> {
|
|
15
10
|
readonly id: string;
|
|
16
11
|
readonly api: T;
|
|
17
12
|
readonly width: number;
|
|
18
13
|
readonly height: number;
|
|
14
|
+
readonly params: Record<string, any> | undefined;
|
|
19
15
|
focus(): void;
|
|
20
16
|
toJSON(): object;
|
|
21
|
-
update(
|
|
17
|
+
update(event: PanelUpdateEvent): void;
|
|
22
18
|
}
|
|
23
19
|
export declare abstract class BasePanelView<T extends PanelApiImpl> extends CompositeDisposable implements IPanel, BasePanelViewExported<T> {
|
|
24
20
|
readonly id: string;
|
|
@@ -28,7 +24,7 @@ export declare abstract class BasePanelView<T extends PanelApiImpl> extends Comp
|
|
|
28
24
|
private _width;
|
|
29
25
|
private _element;
|
|
30
26
|
protected part?: IFrameworkPart;
|
|
31
|
-
protected
|
|
27
|
+
protected _params?: PanelInitParameters;
|
|
32
28
|
/**
|
|
33
29
|
* Provide an IFrameworkPart that will determine the rendered UI of this view piece.
|
|
34
30
|
*/
|
|
@@ -36,6 +32,7 @@ export declare abstract class BasePanelView<T extends PanelApiImpl> extends Comp
|
|
|
36
32
|
get element(): HTMLElement;
|
|
37
33
|
get width(): number;
|
|
38
34
|
get height(): number;
|
|
35
|
+
get params(): Record<string, any> | undefined;
|
|
39
36
|
constructor(id: string, component: string, api: T);
|
|
40
37
|
focus(): void;
|
|
41
38
|
layout(width: number, height: number): void;
|
|
@@ -30,6 +30,10 @@ export class BasePanelView extends CompositeDisposable {
|
|
|
30
30
|
get height() {
|
|
31
31
|
return this._height;
|
|
32
32
|
}
|
|
33
|
+
get params() {
|
|
34
|
+
var _a;
|
|
35
|
+
return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;
|
|
36
|
+
}
|
|
33
37
|
focus() {
|
|
34
38
|
this.api._onFocusEvent.fire();
|
|
35
39
|
}
|
|
@@ -38,29 +42,27 @@ export class BasePanelView extends CompositeDisposable {
|
|
|
38
42
|
this._height = height;
|
|
39
43
|
this.api._onDidPanelDimensionChange.fire({ width, height });
|
|
40
44
|
if (this.part) {
|
|
41
|
-
if (this.
|
|
42
|
-
this.part.update(this.
|
|
45
|
+
if (this._params) {
|
|
46
|
+
this.part.update(this._params.params);
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
init(parameters) {
|
|
47
|
-
this.
|
|
51
|
+
this._params = parameters;
|
|
48
52
|
this.part = this.getComponent();
|
|
49
53
|
}
|
|
50
54
|
update(event) {
|
|
51
55
|
var _a, _b;
|
|
52
|
-
this.
|
|
53
|
-
(_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this.
|
|
56
|
+
this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });
|
|
57
|
+
(_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });
|
|
54
58
|
}
|
|
55
59
|
toJSON() {
|
|
56
60
|
var _a, _b;
|
|
57
|
-
const
|
|
58
|
-
const params = (_b = (_a = this.params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};
|
|
61
|
+
const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};
|
|
59
62
|
return {
|
|
60
63
|
id: this.id,
|
|
61
64
|
component: this.component,
|
|
62
65
|
params: Object.keys(params).length > 0 ? params : undefined,
|
|
63
|
-
state: Object.keys(state).length === 0 ? undefined : state,
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
68
|
dispose() {
|
|
@@ -49,7 +49,7 @@ export class BranchNode extends CompositeDisposable {
|
|
|
49
49
|
proportionalLayout,
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
-
this.addDisposables(this.splitview.onDidSashEnd(() => {
|
|
52
|
+
this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
|
|
53
53
|
this._onDidChange.fire(undefined);
|
|
54
54
|
}));
|
|
55
55
|
this.setupChildrenEvents();
|