dockview 1.0.3 → 1.3.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 +31 -25
- package/dist/cjs/api/component.api.js +97 -40
- 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 +2 -2
- package/dist/cjs/dnd/abstractDragHandler.js +15 -15
- 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 +72 -48
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -2
- package/dist/cjs/dockview/components/tab/defaultTab.js +1 -9
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/cjs/dockview/components/watermark/watermark.d.ts +3 -3
- package/dist/cjs/dockview/components/watermark/watermark.js +4 -4
- package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
- package/dist/cjs/dockview/deserializer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +34 -23
- package/dist/cjs/dockview/dockviewComponent.js +117 -209
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +3 -5
- package/dist/cjs/dockview/dockviewGroupPanel.js +10 -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 +12 -20
- package/dist/cjs/gridview/baseComponentGridview.js +49 -45
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.d.ts +5 -8
- package/dist/cjs/gridview/basePanelView.js +16 -8
- package/dist/cjs/gridview/basePanelView.js.map +1 -1
- package/dist/cjs/gridview/branchNode.js +3 -3
- package/dist/cjs/gridview/branchNode.js.map +1 -1
- package/dist/cjs/gridview/gridview.js +21 -18
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +5 -6
- package/dist/cjs/gridview/gridviewComponent.js +33 -9
- 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 +2 -1
- package/dist/cjs/gridview/leafNode.js.map +1 -1
- package/dist/cjs/groupview/groupPanel.d.ts +1 -7
- package/dist/cjs/groupview/groupview.d.ts +18 -10
- package/dist/cjs/groupview/groupview.js +51 -129
- 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.d.ts +1 -1
- package/dist/cjs/groupview/panel/content.js +2 -1
- 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/hostedContainer.js +2 -2
- package/dist/cjs/hostedContainer.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +8 -4
- package/dist/cjs/index.js.map +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/defaultPaneviewHeader.d.ts +1 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.js +1 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.js +32 -29
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/paneview.d.ts +3 -1
- package/dist/cjs/paneview/paneview.js +13 -7
- package/dist/cjs/paneview/paneview.js.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +7 -6
- package/dist/cjs/paneview/paneviewComponent.js +65 -8
- 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/components.js +5 -1
- package/dist/cjs/react/dockview/components.js.map +1 -1
- package/dist/cjs/react/dockview/dockview.d.ts +9 -9
- package/dist/cjs/react/dockview/dockview.js +40 -5
- package/dist/cjs/react/dockview/dockview.js.map +1 -1
- package/dist/cjs/react/dockview/reactContentPart.d.ts +2 -2
- package/dist/cjs/react/dockview/reactContentPart.js +6 -17
- package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -2
- package/dist/cjs/react/dockview/reactHeaderPart.js +3 -2
- package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +3 -4
- package/dist/cjs/react/dockview/reactWatermarkPart.js +3 -4
- package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
- package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +2 -2
- package/dist/cjs/react/dockview/v2/reactContentRenderer.js +2 -2
- package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
- package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
- package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +2 -2
- package/dist/cjs/react/dockview/v2/webviewContentRenderer.js.map +1 -1
- package/dist/cjs/react/gridview/gridview.js +9 -2
- package/dist/cjs/react/gridview/gridview.js.map +1 -1
- package/dist/cjs/react/gridview/view.d.ts +3 -2
- 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 +5 -1
- package/dist/cjs/react/index.js.map +1 -1
- package/dist/cjs/react/paneview/paneview.js +6 -2
- package/dist/cjs/react/paneview/paneview.js.map +1 -1
- package/dist/cjs/react/react.js +6 -3
- package/dist/cjs/react/react.js.map +1 -1
- package/dist/cjs/react/splitview/splitview.js +8 -2
- package/dist/cjs/react/splitview/splitview.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/splitview.js +1 -1
- package/dist/cjs/splitview/core/splitview.js.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts +0 -3
- package/dist/cjs/splitview/splitviewComponent.js +50 -6
- 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 +666 -791
- package/dist/dockview.amd.min.js +2 -16
- package/dist/dockview.amd.min.noStyle.js +2 -16
- package/dist/dockview.amd.noStyle.js +665 -790
- package/dist/dockview.cjs.js +666 -791
- package/dist/dockview.esm.js +666 -780
- package/dist/dockview.esm.min.js +2 -16
- package/dist/dockview.js +666 -791
- package/dist/dockview.min.js +2 -16
- package/dist/dockview.min.noStyle.js +2 -16
- package/dist/dockview.noStyle.js +665 -790
- package/dist/esm/api/component.api.d.ts +31 -25
- package/dist/esm/api/component.api.js +47 -26
- 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 +2 -2
- package/dist/esm/dnd/abstractDragHandler.js +10 -10
- 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 +72 -48
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -2
- package/dist/esm/dockview/components/tab/defaultTab.js +2 -10
- package/dist/esm/dockview/components/watermark/watermark.d.ts +3 -3
- package/dist/esm/dockview/components/watermark/watermark.js +4 -4
- package/dist/esm/dockview/dockviewComponent.d.ts +34 -23
- package/dist/esm/dockview/dockviewComponent.js +82 -150
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +3 -5
- package/dist/esm/dockview/dockviewGroupPanel.js +6 -30
- package/dist/esm/dockview/options.d.ts +2 -1
- package/dist/esm/events.js +2 -3
- package/dist/esm/gridview/baseComponentGridview.d.ts +12 -20
- package/dist/esm/gridview/baseComponentGridview.js +27 -45
- package/dist/esm/gridview/basePanelView.d.ts +5 -8
- package/dist/esm/gridview/basePanelView.js +12 -8
- package/dist/esm/gridview/branchNode.js +3 -3
- package/dist/esm/gridview/gridview.js +18 -16
- package/dist/esm/gridview/gridviewComponent.d.ts +5 -6
- package/dist/esm/gridview/gridviewComponent.js +12 -10
- 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 +1 -7
- package/dist/esm/groupview/groupview.d.ts +18 -10
- package/dist/esm/groupview/groupview.js +30 -59
- package/dist/esm/groupview/groupviewPanel.d.ts +5 -2
- package/dist/esm/groupview/panel/content.d.ts +1 -1
- package/dist/esm/groupview/panel/content.js +2 -1
- 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/hostedContainer.js +2 -2
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +1 -2
- package/dist/esm/lifecycle.js +2 -1
- package/dist/esm/panel/types.d.ts +0 -2
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
- package/dist/esm/paneview/defaultPaneviewHeader.js +1 -1
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/esm/paneview/draggablePaneviewPanel.js +32 -29
- package/dist/esm/paneview/paneview.d.ts +3 -1
- package/dist/esm/paneview/paneview.js +10 -6
- package/dist/esm/paneview/paneviewComponent.d.ts +7 -6
- package/dist/esm/paneview/paneviewComponent.js +31 -7
- 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 +36 -5
- package/dist/esm/react/dockview/reactContentPart.d.ts +2 -2
- package/dist/esm/react/dockview/reactContentPart.js +6 -17
- package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -2
- package/dist/esm/react/dockview/reactHeaderPart.js +3 -2
- package/dist/esm/react/dockview/reactWatermarkPart.d.ts +3 -4
- package/dist/esm/react/dockview/reactWatermarkPart.js +3 -4
- package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +2 -2
- package/dist/esm/react/dockview/v2/reactContentRenderer.js +2 -2
- package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
- package/dist/esm/react/dockview/v2/webviewContentRenderer.js +2 -2
- package/dist/esm/react/gridview/gridview.js +4 -1
- package/dist/esm/react/gridview/view.d.ts +3 -2
- package/dist/esm/react/gridview/view.js +2 -2
- package/dist/esm/react/index.d.ts +1 -0
- package/dist/esm/react/paneview/paneview.js +1 -1
- package/dist/esm/react/react.js +1 -2
- package/dist/esm/react/splitview/splitview.js +3 -1
- package/dist/esm/react/splitview/view.js +2 -2
- package/dist/esm/splitview/core/splitview.js +1 -1
- package/dist/esm/splitview/splitviewComponent.d.ts +0 -3
- package/dist/esm/splitview/splitviewComponent.js +17 -6
- package/dist/esm/splitview/splitviewPanel.d.ts +1 -6
- package/dist/esm/splitview/splitviewPanel.js +5 -3
- package/dist/styles/dockview.css +14 -17
- package/package.json +13 -13
- 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
|
@@ -23,6 +23,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
23
23
|
super();
|
|
24
24
|
this.element = element;
|
|
25
25
|
this._disposable = new MutableDisposable();
|
|
26
|
+
this._viewDisposables = new Map();
|
|
26
27
|
this._onDidLayoutChange = new Emitter();
|
|
27
28
|
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
28
29
|
this._onDidDrop = new Emitter();
|
|
@@ -31,6 +32,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
31
32
|
this.onDidAddView = this._onDidAddView.event;
|
|
32
33
|
this._onDidRemoveView = new Emitter();
|
|
33
34
|
this.onDidRemoveView = this._onDidRemoveView.event;
|
|
35
|
+
this.addDisposables(this._onDidLayoutChange, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);
|
|
34
36
|
this._options = options;
|
|
35
37
|
if (!options.components) {
|
|
36
38
|
options.components = {};
|
|
@@ -106,9 +108,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
106
108
|
isExpanded: !!options.isExpanded,
|
|
107
109
|
disableDnd: !!this.options.disableDnd,
|
|
108
110
|
});
|
|
109
|
-
|
|
110
|
-
this._onDidDrop.fire(event);
|
|
111
|
-
}));
|
|
111
|
+
this.doAddPanel(view);
|
|
112
112
|
const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;
|
|
113
113
|
const index = typeof options.index === 'number' ? options.index : undefined;
|
|
114
114
|
view.init({
|
|
@@ -121,7 +121,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
121
121
|
});
|
|
122
122
|
this.paneview.addPane(view, size, index);
|
|
123
123
|
view.orientation = this.paneview.orientation;
|
|
124
|
-
return
|
|
124
|
+
return view;
|
|
125
125
|
}
|
|
126
126
|
getPanels() {
|
|
127
127
|
return this.paneview.getPanes();
|
|
@@ -130,6 +130,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
130
130
|
const views = this.getPanels();
|
|
131
131
|
const index = views.findIndex((_) => _ === panel);
|
|
132
132
|
this.paneview.removePane(index);
|
|
133
|
+
this.doRemovePanel(panel);
|
|
133
134
|
}
|
|
134
135
|
movePanel(from, to) {
|
|
135
136
|
this.paneview.moveView(from, to);
|
|
@@ -179,6 +180,10 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
179
180
|
fromJSON(serializedPaneview, deferComponentLayout) {
|
|
180
181
|
const { views, size } = serializedPaneview;
|
|
181
182
|
const queue = [];
|
|
183
|
+
for (const [_, value] of this._viewDisposables.entries()) {
|
|
184
|
+
value.dispose();
|
|
185
|
+
}
|
|
186
|
+
this._viewDisposables.clear();
|
|
182
187
|
this.paneview.dispose();
|
|
183
188
|
this.paneview = new Paneview(this.element, {
|
|
184
189
|
orientation: Orientation.VERTICAL,
|
|
@@ -214,9 +219,7 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
214
219
|
isExpanded: !!view.expanded,
|
|
215
220
|
disableDnd: !!this.options.disableDnd,
|
|
216
221
|
});
|
|
217
|
-
|
|
218
|
-
this._onDidDrop.fire(event);
|
|
219
|
-
});
|
|
222
|
+
this.doAddPanel(panel);
|
|
220
223
|
queue.push(() => {
|
|
221
224
|
panel.init({
|
|
222
225
|
params: data.params || {},
|
|
@@ -246,4 +249,25 @@ export class PaneviewComponent extends CompositeDisposable {
|
|
|
246
249
|
queue.forEach((f) => f());
|
|
247
250
|
}
|
|
248
251
|
}
|
|
252
|
+
doAddPanel(panel) {
|
|
253
|
+
const disposable = panel.onDidDrop((event) => {
|
|
254
|
+
this._onDidDrop.fire(event);
|
|
255
|
+
});
|
|
256
|
+
this._viewDisposables.set(panel.id, disposable);
|
|
257
|
+
}
|
|
258
|
+
doRemovePanel(panel) {
|
|
259
|
+
const disposable = this._viewDisposables.get(panel.id);
|
|
260
|
+
if (disposable) {
|
|
261
|
+
disposable.dispose();
|
|
262
|
+
this._viewDisposables.delete(panel.id);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
dispose() {
|
|
266
|
+
super.dispose();
|
|
267
|
+
for (const [_, value] of this._viewDisposables.entries()) {
|
|
268
|
+
value.dispose();
|
|
269
|
+
}
|
|
270
|
+
this._viewDisposables.clear();
|
|
271
|
+
this.paneview.dispose();
|
|
272
|
+
}
|
|
249
273
|
}
|
|
@@ -157,7 +157,7 @@ export class PaneviewPanel extends BasePanelView {
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
toJSON() {
|
|
160
|
-
const params = this.
|
|
160
|
+
const params = this._params;
|
|
161
161
|
return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });
|
|
162
162
|
}
|
|
163
163
|
renderOnce() {
|
|
@@ -12,7 +12,6 @@ export class ReactPanelDeserialzier {
|
|
|
12
12
|
const panelId = panelData.id;
|
|
13
13
|
const params = panelData.params;
|
|
14
14
|
const title = panelData.title;
|
|
15
|
-
const state = panelData.state;
|
|
16
15
|
const suppressClosable = panelData.suppressClosable;
|
|
17
16
|
const viewData = panelData.view;
|
|
18
17
|
const view = new DefaultGroupPanelView({
|
|
@@ -21,13 +20,12 @@ export class ReactPanelDeserialzier {
|
|
|
21
20
|
? createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab)
|
|
22
21
|
: new DefaultTab(),
|
|
23
22
|
});
|
|
24
|
-
const panel = new DockviewGroupPanel(panelId, new DockviewApi(this.layout));
|
|
23
|
+
const panel = new DockviewGroupPanel(panelId, this.layout, new DockviewApi(this.layout));
|
|
25
24
|
panel.init({
|
|
26
25
|
view,
|
|
27
26
|
title,
|
|
28
27
|
suppressClosable,
|
|
29
28
|
params: params || {},
|
|
30
|
-
state: state || {},
|
|
31
29
|
});
|
|
32
30
|
return panel;
|
|
33
31
|
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { DockviewDropEvent } from '../../dockview/dockviewComponent';
|
|
2
3
|
import { TabContextMenuEvent } from '../../dockview/options';
|
|
3
4
|
import { DockviewPanelApi } from '../../api/groupPanelApi';
|
|
4
5
|
import { DockviewApi } from '../../api/component.api';
|
|
6
|
+
import { IWatermarkPanelProps } from './reactWatermarkPart';
|
|
5
7
|
import { PanelCollection, PanelParameters } from '../types';
|
|
8
|
+
import { DockviewDropTargets } from '../../groupview/dnd';
|
|
6
9
|
export interface IGroupPanelBaseProps<T extends {} = Record<string, any>> extends PanelParameters<T> {
|
|
7
10
|
api: DockviewPanelApi;
|
|
8
11
|
containerApi: DockviewApi;
|
|
9
12
|
}
|
|
10
|
-
export
|
|
13
|
+
export declare type IDockviewPanelHeaderProps<T extends {} = Record<string, any>> = IGroupPanelBaseProps<T>;
|
|
14
|
+
export declare type IDockviewPanelProps<T extends {
|
|
11
15
|
[index: string]: any;
|
|
12
|
-
} = any>
|
|
13
|
-
}
|
|
16
|
+
} = any> = IGroupPanelBaseProps<T>;
|
|
14
17
|
export interface DockviewReadyEvent {
|
|
15
18
|
api: DockviewApi;
|
|
16
19
|
}
|
|
17
|
-
export interface IWatermarkPanelProps<T extends {} = Record<string, any>> extends PanelParameters<T> {
|
|
18
|
-
containerApi: DockviewApi;
|
|
19
|
-
close(): void;
|
|
20
|
-
}
|
|
21
20
|
export interface IDockviewReactProps {
|
|
22
21
|
components?: PanelCollection<IDockviewPanelProps>;
|
|
23
|
-
tabComponents?: PanelCollection<
|
|
22
|
+
tabComponents?: PanelCollection<IDockviewPanelHeaderProps>;
|
|
24
23
|
watermarkComponent?: React.FunctionComponent<IWatermarkPanelProps>;
|
|
25
24
|
onReady?: (event: DockviewReadyEvent) => void;
|
|
26
25
|
debug?: boolean;
|
|
27
26
|
tabHeight?: number;
|
|
28
|
-
enableExternalDragEvents?: boolean;
|
|
29
27
|
onTabContextMenu?: (event: TabContextMenuEvent) => void;
|
|
28
|
+
onDidDrop?: (event: DockviewDropEvent) => void;
|
|
29
|
+
showDndOverlay?: (event: DragEvent, target: DockviewDropTargets) => boolean;
|
|
30
30
|
hideBorders?: boolean;
|
|
31
31
|
className?: string;
|
|
32
32
|
disableAutoResizing?: boolean;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
|
2
|
+
import { DockviewComponent, } from '../../dockview/dockviewComponent';
|
|
3
3
|
import { ReactPanelContentPart } from './reactContentPart';
|
|
4
4
|
import { ReactPanelHeaderPart } from './reactHeaderPart';
|
|
5
5
|
import { ReactPanelDeserialzier } from '../deserializer';
|
|
@@ -31,21 +31,21 @@ export const DockviewReact = React.forwardRef((props, ref) => {
|
|
|
31
31
|
var _a;
|
|
32
32
|
const factory = {
|
|
33
33
|
content: {
|
|
34
|
-
createComponent: (
|
|
34
|
+
createComponent: (_id, componentId, component) => {
|
|
35
35
|
return new ReactPanelContentPart(componentId, component, {
|
|
36
36
|
addPortal,
|
|
37
37
|
});
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
tab: {
|
|
41
|
-
createComponent: (
|
|
41
|
+
createComponent: (_id, componentId, component) => {
|
|
42
42
|
return new ReactPanelHeaderPart(componentId, component, {
|
|
43
43
|
addPortal,
|
|
44
44
|
});
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
watermark: {
|
|
48
|
-
createComponent: (
|
|
48
|
+
createComponent: (_id, componentId, component) => {
|
|
49
49
|
return new ReactWatermarkPart(componentId, component, {
|
|
50
50
|
addPortal,
|
|
51
51
|
});
|
|
@@ -59,7 +59,6 @@ export const DockviewReact = React.forwardRef((props, ref) => {
|
|
|
59
59
|
frameworkTabComponents: props.tabComponents,
|
|
60
60
|
tabHeight: props.tabHeight,
|
|
61
61
|
debug: props.debug,
|
|
62
|
-
enableExternalDragEvents: props.enableExternalDragEvents,
|
|
63
62
|
watermarkFrameworkComponent: props.watermarkComponent,
|
|
64
63
|
styles: props.hideBorders
|
|
65
64
|
? { separatorBorder: 'transparent' }
|
|
@@ -75,8 +74,24 @@ export const DockviewReact = React.forwardRef((props, ref) => {
|
|
|
75
74
|
dockviewRef.current = dockview;
|
|
76
75
|
return () => {
|
|
77
76
|
dockview.dispose();
|
|
77
|
+
element.remove();
|
|
78
78
|
};
|
|
79
79
|
}, []);
|
|
80
|
+
React.useEffect(() => {
|
|
81
|
+
if (!dockviewRef.current) {
|
|
82
|
+
return () => {
|
|
83
|
+
// noop
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const disposable = dockviewRef.current.onDidDrop((event) => {
|
|
87
|
+
if (props.onDidDrop) {
|
|
88
|
+
props.onDidDrop(event);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return () => {
|
|
92
|
+
disposable.dispose();
|
|
93
|
+
};
|
|
94
|
+
}, [props.onDidDrop]);
|
|
80
95
|
React.useEffect(() => {
|
|
81
96
|
if (!dockviewRef.current) {
|
|
82
97
|
return;
|
|
@@ -85,6 +100,22 @@ export const DockviewReact = React.forwardRef((props, ref) => {
|
|
|
85
100
|
frameworkComponents: props.components,
|
|
86
101
|
});
|
|
87
102
|
}, [props.components]);
|
|
103
|
+
React.useEffect(() => {
|
|
104
|
+
if (!dockviewRef.current) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
dockviewRef.current.updateOptions({
|
|
108
|
+
watermarkFrameworkComponent: props.watermarkComponent,
|
|
109
|
+
});
|
|
110
|
+
}, [props.watermarkComponent]);
|
|
111
|
+
React.useEffect(() => {
|
|
112
|
+
if (!dockviewRef.current) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
dockviewRef.current.updateOptions({
|
|
116
|
+
showDndOverlay: props.showDndOverlay,
|
|
117
|
+
});
|
|
118
|
+
}, [props.showDndOverlay]);
|
|
88
119
|
React.useEffect(() => {
|
|
89
120
|
if (!dockviewRef.current) {
|
|
90
121
|
return;
|
|
@@ -40,8 +40,8 @@ export declare class ReactPanelContentPart implements IContentRenderer {
|
|
|
40
40
|
id: string;
|
|
41
41
|
};
|
|
42
42
|
update(event: PanelUpdateEvent): void;
|
|
43
|
-
updateParentGroup(group: GroupviewPanel,
|
|
44
|
-
layout(
|
|
43
|
+
updateParentGroup(group: GroupviewPanel, _isPanelVisible: boolean): void;
|
|
44
|
+
layout(_width: number, _height: number): void;
|
|
45
45
|
close(): Promise<boolean>;
|
|
46
46
|
dispose(): void;
|
|
47
47
|
}
|
|
@@ -5,22 +5,14 @@ export class ReactPanelContentPart {
|
|
|
5
5
|
this.id = id;
|
|
6
6
|
this.component = component;
|
|
7
7
|
this.reactPortalStore = reactPortalStore;
|
|
8
|
-
// private hostedContainer: HostedContainer;
|
|
9
8
|
this._onDidFocus = new Emitter();
|
|
10
9
|
this.onDidFocus = this._onDidFocus.event;
|
|
11
10
|
this._onDidBlur = new Emitter();
|
|
12
11
|
this.onDidBlur = this._onDidBlur.event;
|
|
13
12
|
this._element = document.createElement('div');
|
|
14
|
-
this._element.
|
|
15
|
-
this._element.style.width = '100%';
|
|
16
|
-
// this.hostedContainer = new HostedContainer({
|
|
17
|
-
// id,
|
|
18
|
-
// });
|
|
19
|
-
// this.hostedContainer.onDidFocus(() => this._onDidFocus.fire());
|
|
20
|
-
// this.hostedContainer.onDidBlur(() => this._onDidBlur.fire());
|
|
13
|
+
this._element.className = 'dockview-react-part';
|
|
21
14
|
this._actionsElement = document.createElement('div');
|
|
22
|
-
this._actionsElement.
|
|
23
|
-
this._actionsElement.style.width = '100%';
|
|
15
|
+
this._actionsElement.className = 'dockview-react-part';
|
|
24
16
|
}
|
|
25
17
|
get element() {
|
|
26
18
|
return this._element;
|
|
@@ -53,23 +45,20 @@ export class ReactPanelContentPart {
|
|
|
53
45
|
var _a;
|
|
54
46
|
(_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
|
|
55
47
|
}
|
|
56
|
-
updateParentGroup(group,
|
|
48
|
+
updateParentGroup(group, _isPanelVisible) {
|
|
57
49
|
this._group = group;
|
|
58
50
|
}
|
|
59
|
-
layout(
|
|
51
|
+
layout(_width, _height) {
|
|
60
52
|
// noop
|
|
61
|
-
// this.hostedContainer.layout(
|
|
62
|
-
// this.element
|
|
63
|
-
// // { width, height }
|
|
64
|
-
// );
|
|
65
53
|
}
|
|
66
54
|
close() {
|
|
67
55
|
return Promise.resolve(true);
|
|
68
56
|
}
|
|
69
57
|
dispose() {
|
|
70
58
|
var _a, _b;
|
|
59
|
+
this._onDidFocus.dispose();
|
|
60
|
+
this._onDidBlur.dispose();
|
|
71
61
|
(_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
72
|
-
// this.hostedContainer?.dispose();
|
|
73
62
|
(_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
74
63
|
}
|
|
75
64
|
}
|
|
@@ -18,7 +18,7 @@ export declare class ReactPanelHeaderPart implements ITabRenderer {
|
|
|
18
18
|
toJSON(): {
|
|
19
19
|
id: string;
|
|
20
20
|
};
|
|
21
|
-
layout(
|
|
22
|
-
updateParentGroup(
|
|
21
|
+
layout(_width: number, _height: number): void;
|
|
22
|
+
updateParentGroup(_group: GroupviewPanel, _isPanelVisible: boolean): void;
|
|
23
23
|
dispose(): void;
|
|
24
24
|
}
|
|
@@ -5,6 +5,7 @@ export class ReactPanelHeaderPart {
|
|
|
5
5
|
this.component = component;
|
|
6
6
|
this.reactPortalStore = reactPortalStore;
|
|
7
7
|
this._element = document.createElement('div');
|
|
8
|
+
this._element.className = 'dockview-react-part';
|
|
8
9
|
}
|
|
9
10
|
get element() {
|
|
10
11
|
return this._element;
|
|
@@ -28,10 +29,10 @@ export class ReactPanelHeaderPart {
|
|
|
28
29
|
id: this.id,
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
|
-
layout(
|
|
32
|
+
layout(_width, _height) {
|
|
32
33
|
// noop - retrieval from api
|
|
33
34
|
}
|
|
34
|
-
updateParentGroup(
|
|
35
|
+
updateParentGroup(_group, _isPanelVisible) {
|
|
35
36
|
// noop - retrieval from api
|
|
36
37
|
}
|
|
37
38
|
dispose() {
|
|
@@ -4,7 +4,7 @@ import { GroupviewPanel } from '../../groupview/groupviewPanel';
|
|
|
4
4
|
import { ReactPortalStore } from '../react';
|
|
5
5
|
import { IGroupPanelBaseProps } from './dockview';
|
|
6
6
|
import { PanelUpdateEvent } from '../../panel/types';
|
|
7
|
-
interface IWatermarkPanelProps extends IGroupPanelBaseProps {
|
|
7
|
+
export interface IWatermarkPanelProps extends IGroupPanelBaseProps {
|
|
8
8
|
close: () => void;
|
|
9
9
|
}
|
|
10
10
|
export declare class ReactWatermarkPart implements IWatermarkRenderer {
|
|
@@ -23,8 +23,7 @@ export declare class ReactWatermarkPart implements IWatermarkRenderer {
|
|
|
23
23
|
toJSON(): {
|
|
24
24
|
id: string;
|
|
25
25
|
};
|
|
26
|
-
layout(
|
|
27
|
-
updateParentGroup(group: GroupviewPanel,
|
|
26
|
+
layout(_width: number, _height: number): void;
|
|
27
|
+
updateParentGroup(group: GroupviewPanel, _isPanelVisible: boolean): void;
|
|
28
28
|
dispose(): void;
|
|
29
29
|
}
|
|
30
|
-
export {};
|
|
@@ -8,8 +8,7 @@ export class ReactWatermarkPart {
|
|
|
8
8
|
value: undefined,
|
|
9
9
|
};
|
|
10
10
|
this._element = document.createElement('div');
|
|
11
|
-
this._element.
|
|
12
|
-
this._element.style.width = '100%';
|
|
11
|
+
this._element.className = 'dockview-react-part';
|
|
13
12
|
}
|
|
14
13
|
get element() {
|
|
15
14
|
return this._element;
|
|
@@ -42,10 +41,10 @@ export class ReactWatermarkPart {
|
|
|
42
41
|
id: this.id,
|
|
43
42
|
};
|
|
44
43
|
}
|
|
45
|
-
layout(
|
|
44
|
+
layout(_width, _height) {
|
|
46
45
|
// noop - retrieval from api
|
|
47
46
|
}
|
|
48
|
-
updateParentGroup(group,
|
|
47
|
+
updateParentGroup(group, _isPanelVisible) {
|
|
49
48
|
// noop - retrieval from api
|
|
50
49
|
this._groupRef.value = group;
|
|
51
50
|
}
|
|
@@ -23,8 +23,8 @@ export declare class ReactContentRenderer implements IContentRenderer {
|
|
|
23
23
|
id: string;
|
|
24
24
|
};
|
|
25
25
|
update(params: PanelUpdateEvent): void;
|
|
26
|
-
updateParentGroup(group: GroupviewPanel,
|
|
27
|
-
layout(
|
|
26
|
+
updateParentGroup(group: GroupviewPanel, _isPanelVisible: boolean): void;
|
|
27
|
+
layout(_width: number, _height: number): void;
|
|
28
28
|
close(): Promise<boolean>;
|
|
29
29
|
dispose(): void;
|
|
30
30
|
}
|
|
@@ -56,10 +56,10 @@ export class ReactContentRenderer {
|
|
|
56
56
|
}
|
|
57
57
|
(_a = this.part) === null || _a === void 0 ? void 0 : _a.update(params.params);
|
|
58
58
|
}
|
|
59
|
-
updateParentGroup(group,
|
|
59
|
+
updateParentGroup(group, _isPanelVisible) {
|
|
60
60
|
this._group = group;
|
|
61
61
|
}
|
|
62
|
-
layout(
|
|
62
|
+
layout(_width, _height) {
|
|
63
63
|
this._hostedContainer.layout(this.element);
|
|
64
64
|
}
|
|
65
65
|
close() {
|
|
@@ -12,7 +12,7 @@ export declare class WebviewContentRenderer implements IContentRenderer {
|
|
|
12
12
|
init(parameters: GroupPanelPartInitParameters): void;
|
|
13
13
|
toJSON(): {};
|
|
14
14
|
update(params: PanelUpdateEvent): void;
|
|
15
|
-
updateParentGroup(
|
|
16
|
-
layout(
|
|
15
|
+
updateParentGroup(_group: GroupviewPanel, _isPanelVisible: boolean): void;
|
|
16
|
+
layout(_width: number, _height: number): void;
|
|
17
17
|
dispose(): void;
|
|
18
18
|
}
|
|
@@ -24,10 +24,10 @@ export class WebviewContentRenderer {
|
|
|
24
24
|
this.parameters.params = params.params;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
updateParentGroup(
|
|
27
|
+
updateParentGroup(_group, _isPanelVisible) {
|
|
28
28
|
//
|
|
29
29
|
}
|
|
30
|
-
layout(
|
|
30
|
+
layout(_width, _height) {
|
|
31
31
|
this._hostedContainer.layout(this._element);
|
|
32
32
|
}
|
|
33
33
|
dispose() {
|
|
@@ -28,7 +28,9 @@ export const GridviewReact = React.forwardRef((props, ref) => {
|
|
|
28
28
|
var _a;
|
|
29
29
|
const element = document.createElement('div');
|
|
30
30
|
const gridview = new GridviewComponent(element, {
|
|
31
|
-
proportionalLayout:
|
|
31
|
+
proportionalLayout: typeof props.proportionalLayout === 'boolean'
|
|
32
|
+
? props.proportionalLayout
|
|
33
|
+
: true,
|
|
32
34
|
orientation: props.orientation,
|
|
33
35
|
frameworkComponents: props.components,
|
|
34
36
|
frameworkComponentFactory: {
|
|
@@ -51,6 +53,7 @@ export const GridviewReact = React.forwardRef((props, ref) => {
|
|
|
51
53
|
gridviewRef.current = gridview;
|
|
52
54
|
return () => {
|
|
53
55
|
gridview.dispose();
|
|
56
|
+
element.remove();
|
|
54
57
|
};
|
|
55
58
|
}, []);
|
|
56
59
|
React.useEffect(() => {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { GridviewPanel } from '../../gridview/gridviewPanel';
|
|
3
|
-
import {
|
|
3
|
+
import { IFrameworkPart } from '../../panel/types';
|
|
4
|
+
import { ReactPortalStore } from '../react';
|
|
4
5
|
import { IGridviewPanelProps } from './gridview';
|
|
5
6
|
export declare class ReactGridPanelView extends GridviewPanel {
|
|
6
7
|
private readonly reactComponent;
|
|
7
8
|
private readonly reactPortalStore;
|
|
8
9
|
constructor(id: string, component: string, reactComponent: React.FunctionComponent<IGridviewPanelProps>, reactPortalStore: ReactPortalStore);
|
|
9
|
-
getComponent():
|
|
10
|
+
getComponent(): IFrameworkPart;
|
|
10
11
|
}
|
|
@@ -9,9 +9,9 @@ export class ReactGridPanelView extends GridviewPanel {
|
|
|
9
9
|
getComponent() {
|
|
10
10
|
var _a;
|
|
11
11
|
return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {
|
|
12
|
-
params: ((_a = this.
|
|
12
|
+
params: ((_a = this._params) === null || _a === void 0 ? void 0 : _a.params) || {},
|
|
13
13
|
api: this.api,
|
|
14
|
-
containerApi: this.
|
|
14
|
+
containerApi: this._params
|
|
15
15
|
.containerApi,
|
|
16
16
|
});
|
|
17
17
|
}
|
|
@@ -4,6 +4,7 @@ export * from './splitview/splitview';
|
|
|
4
4
|
export * from './gridview/gridview';
|
|
5
5
|
export * from './dockview/reactContentPart';
|
|
6
6
|
export * from './dockview/reactHeaderPart';
|
|
7
|
+
export { IWatermarkPanelProps } from './dockview/reactWatermarkPart';
|
|
7
8
|
export * from './paneview/paneview';
|
|
8
9
|
export * from './types';
|
|
9
10
|
export * from './react';
|
|
@@ -25,7 +25,7 @@ export const PaneviewReact = React.forwardRef((props, ref) => {
|
|
|
25
25
|
};
|
|
26
26
|
}, [props.disableAutoResizing]);
|
|
27
27
|
React.useEffect(() => {
|
|
28
|
-
const createComponent = (id,
|
|
28
|
+
const createComponent = (id, _componentId, component) => new PanePanelSection(id, component, {
|
|
29
29
|
addPortal,
|
|
30
30
|
});
|
|
31
31
|
const paneview = new PaneviewComponent(domRef.current, {
|
package/dist/esm/react/react.js
CHANGED
|
@@ -55,14 +55,13 @@ export class ReactPart {
|
|
|
55
55
|
if (this.disposed) {
|
|
56
56
|
throw new Error('invalid operation: resource is already disposed');
|
|
57
57
|
}
|
|
58
|
-
// TODO use a better check for isReactFunctionalComponent
|
|
59
58
|
if (typeof this.component !== 'function') {
|
|
60
59
|
/**
|
|
61
60
|
* we know this isn't a React.FunctionComponent so throw an error here.
|
|
62
61
|
* if we do not intercept this the React library will throw a very obsure error
|
|
63
62
|
* for the same reason, at least at this point we will emit a sensible stacktrace.
|
|
64
63
|
*/
|
|
65
|
-
throw new Error('
|
|
64
|
+
throw new Error('Invalid Operation. dockview only supports React Functional Components.');
|
|
66
65
|
}
|
|
67
66
|
const bridgeComponent = React.createElement(React.forwardRef(ReactComponentBridge), {
|
|
68
67
|
component: this
|
|
@@ -35,7 +35,9 @@ export const SplitviewReact = React.forwardRef((props, ref) => {
|
|
|
35
35
|
});
|
|
36
36
|
},
|
|
37
37
|
},
|
|
38
|
-
proportionalLayout: props.proportionalLayout
|
|
38
|
+
proportionalLayout: typeof props.proportionalLayout === 'boolean'
|
|
39
|
+
? props.proportionalLayout
|
|
40
|
+
: true,
|
|
39
41
|
styles: props.hideBorders
|
|
40
42
|
? { separatorBorder: 'transparent' }
|
|
41
43
|
: undefined,
|
|
@@ -9,9 +9,9 @@ export class ReactPanelView extends SplitviewPanel {
|
|
|
9
9
|
getComponent() {
|
|
10
10
|
var _a;
|
|
11
11
|
return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {
|
|
12
|
-
params: ((_a = this.
|
|
12
|
+
params: ((_a = this._params) === null || _a === void 0 ? void 0 : _a.params) || {},
|
|
13
13
|
api: this.api,
|
|
14
|
-
containerApi: this.
|
|
14
|
+
containerApi: this._params
|
|
15
15
|
.containerApi,
|
|
16
16
|
});
|
|
17
17
|
}
|
|
@@ -678,12 +678,12 @@ export class Splitview {
|
|
|
678
678
|
this._onDidSashEnd.dispose();
|
|
679
679
|
this._onDidAddView.dispose();
|
|
680
680
|
this._onDidRemoveView.dispose();
|
|
681
|
-
this.element.remove();
|
|
682
681
|
for (let i = 0; i < this.element.children.length; i++) {
|
|
683
682
|
if (this.element.children.item(i) === this.element) {
|
|
684
683
|
this.element.removeChild(this.element);
|
|
685
684
|
break;
|
|
686
685
|
}
|
|
687
686
|
}
|
|
687
|
+
this.element.remove();
|
|
688
688
|
}
|
|
689
689
|
}
|
|
@@ -26,7 +26,7 @@ export class SplitviewComponent extends CompositeDisposable {
|
|
|
26
26
|
options.frameworkComponents = {};
|
|
27
27
|
}
|
|
28
28
|
this.splitview = new Splitview(this.element, options);
|
|
29
|
-
this.addDisposables(this._disposable);
|
|
29
|
+
this.addDisposables(this._disposable, this._onDidAddView, this._onDidRemoveView, this._onDidLayoutChange);
|
|
30
30
|
}
|
|
31
31
|
get options() {
|
|
32
32
|
return this._options;
|
|
@@ -102,7 +102,11 @@ export class SplitviewComponent extends CompositeDisposable {
|
|
|
102
102
|
}
|
|
103
103
|
removePanel(panel, sizing) {
|
|
104
104
|
const disposable = this.panels.get(panel.id);
|
|
105
|
-
|
|
105
|
+
if (!disposable) {
|
|
106
|
+
throw new Error(`unknown splitview panel ${panel.id}`);
|
|
107
|
+
}
|
|
108
|
+
disposable.disposable.dispose();
|
|
109
|
+
disposable.value.dispose();
|
|
106
110
|
this.panels.delete(panel.id);
|
|
107
111
|
const index = this.getPanels().findIndex((_) => _ === panel);
|
|
108
112
|
this.splitview.removeView(index, sizing);
|
|
@@ -161,7 +165,7 @@ export class SplitviewComponent extends CompositeDisposable {
|
|
|
161
165
|
}
|
|
162
166
|
this.setActive(view, true);
|
|
163
167
|
});
|
|
164
|
-
this.panels.set(view.id, disposable);
|
|
168
|
+
this.panels.set(view.id, { disposable, value: view });
|
|
165
169
|
}
|
|
166
170
|
toJSON() {
|
|
167
171
|
var _a;
|
|
@@ -185,6 +189,11 @@ export class SplitviewComponent extends CompositeDisposable {
|
|
|
185
189
|
}
|
|
186
190
|
fromJSON(serializedSplitview, deferComponentLayout = false) {
|
|
187
191
|
const { views, orientation, size, activeView } = serializedSplitview;
|
|
192
|
+
for (const [_, value] of this.panels.entries()) {
|
|
193
|
+
value.disposable.dispose();
|
|
194
|
+
value.value.dispose();
|
|
195
|
+
}
|
|
196
|
+
this.panels.clear();
|
|
188
197
|
this.splitview.dispose();
|
|
189
198
|
const queue = [];
|
|
190
199
|
this.splitview = new Splitview(this.element, {
|
|
@@ -240,10 +249,12 @@ export class SplitviewComponent extends CompositeDisposable {
|
|
|
240
249
|
}
|
|
241
250
|
}
|
|
242
251
|
dispose() {
|
|
243
|
-
|
|
244
|
-
value.dispose();
|
|
245
|
-
|
|
252
|
+
for (const [_, value] of this.panels.entries()) {
|
|
253
|
+
value.disposable.dispose();
|
|
254
|
+
value.value.dispose();
|
|
255
|
+
}
|
|
246
256
|
this.panels.clear();
|
|
257
|
+
this.splitview.dispose();
|
|
247
258
|
super.dispose();
|
|
248
259
|
}
|
|
249
260
|
}
|
|
@@ -36,12 +36,7 @@ export declare abstract class SplitviewPanel extends BasePanelView<SplitviewPane
|
|
|
36
36
|
maximumSize: number | undefined;
|
|
37
37
|
id: string;
|
|
38
38
|
component: string;
|
|
39
|
-
params?:
|
|
40
|
-
[key: string]: any;
|
|
41
|
-
} | undefined;
|
|
42
|
-
state?: {
|
|
43
|
-
[key: string]: any;
|
|
44
|
-
} | undefined;
|
|
39
|
+
params?: Record<string, any> | undefined;
|
|
45
40
|
};
|
|
46
41
|
private updateConstraints;
|
|
47
42
|
}
|