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
|
@@ -1,24 +1,14 @@
|
|
|
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';
|
|
13
4
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
14
5
|
import { CompositeDisposable } from '../lifecycle';
|
|
15
|
-
import { Emitter } from '../events';
|
|
6
|
+
import { Event, 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';
|
|
21
|
-
import { BaseGrid,
|
|
11
|
+
import { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';
|
|
22
12
|
import { DockviewApi } from '../api/component.api';
|
|
23
13
|
import { MouseEventKind } from '../groupview/tab';
|
|
24
14
|
import { Orientation } from '../splitview/core/splitview';
|
|
@@ -34,15 +24,24 @@ 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, Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
43
|
+
this._bufferOnDidLayoutChange.fire();
|
|
44
|
+
}));
|
|
46
45
|
this._options = options;
|
|
47
46
|
if (!this.options.components) {
|
|
48
47
|
this.options.components = {};
|
|
@@ -63,10 +62,10 @@ export class DockviewComponent extends BaseGrid {
|
|
|
63
62
|
this._api = new DockviewApi(this);
|
|
64
63
|
}
|
|
65
64
|
get totalPanels() {
|
|
66
|
-
return this.
|
|
65
|
+
return this.panels.length;
|
|
67
66
|
}
|
|
68
67
|
get panels() {
|
|
69
|
-
return
|
|
68
|
+
return this.groups.flatMap((group) => group.model.panels);
|
|
70
69
|
}
|
|
71
70
|
get deserializer() {
|
|
72
71
|
return this._deserializer;
|
|
@@ -96,10 +95,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
96
95
|
updateOptions(options) {
|
|
97
96
|
const hasOrientationChanged = typeof options.orientation === 'string' &&
|
|
98
97
|
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
98
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
104
99
|
if (hasOrientationChanged) {
|
|
105
100
|
this.gridview.orientation = options.orientation;
|
|
@@ -111,8 +106,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
111
106
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
112
107
|
}
|
|
113
108
|
getGroupPanel(id) {
|
|
114
|
-
|
|
115
|
-
return (_a = this._panels.get(id)) === null || _a === void 0 ? void 0 : _a.value;
|
|
109
|
+
return this.panels.find((panel) => panel.id === id);
|
|
116
110
|
}
|
|
117
111
|
setActivePanel(panel) {
|
|
118
112
|
if (!panel.group) {
|
|
@@ -161,24 +155,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
161
155
|
this.doSetGroupActive(next);
|
|
162
156
|
}
|
|
163
157
|
}
|
|
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
158
|
/**
|
|
183
159
|
* Serialize the current state of the layout
|
|
184
160
|
*
|
|
@@ -186,12 +162,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
186
162
|
*/
|
|
187
163
|
toJSON() {
|
|
188
164
|
var _a;
|
|
189
|
-
this.syncConfigs();
|
|
190
165
|
const data = this.gridview.serialize();
|
|
191
|
-
const panels =
|
|
192
|
-
|
|
193
|
-
collection[panel.value.id] = panel.value.toJSON();
|
|
194
|
-
}
|
|
166
|
+
const panels = this.panels.reduce((collection, panel) => {
|
|
167
|
+
collection[panel.id] = panel.toJSON();
|
|
195
168
|
return collection;
|
|
196
169
|
}, {});
|
|
197
170
|
return {
|
|
@@ -202,13 +175,12 @@ export class DockviewComponent extends BaseGrid {
|
|
|
202
175
|
};
|
|
203
176
|
}
|
|
204
177
|
fromJSON(data) {
|
|
178
|
+
const groups = Array.from(this._groups.values()).map((_) => _.value);
|
|
179
|
+
for (const group of groups) {
|
|
180
|
+
// remove the group will automatically remove the panels
|
|
181
|
+
this.removeGroup(group, true);
|
|
182
|
+
}
|
|
205
183
|
this.gridview.clear();
|
|
206
|
-
this._panels.forEach((panel) => {
|
|
207
|
-
panel.disposable.dispose();
|
|
208
|
-
panel.value.dispose();
|
|
209
|
-
});
|
|
210
|
-
this._panels.clear();
|
|
211
|
-
this._groups.clear();
|
|
212
184
|
if (!this.deserializer) {
|
|
213
185
|
throw new Error('invalid deserializer');
|
|
214
186
|
}
|
|
@@ -222,9 +194,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
222
194
|
this.gridview.deserialize(grid, new DefaultDeserializer(this, {
|
|
223
195
|
createPanel: (id) => {
|
|
224
196
|
const panelData = panels[id];
|
|
225
|
-
|
|
226
|
-
this.registerPanel(panel);
|
|
227
|
-
return panel;
|
|
197
|
+
return this.deserializer.fromJSON(panelData);
|
|
228
198
|
},
|
|
229
199
|
}));
|
|
230
200
|
if (typeof activeGroup === 'string') {
|
|
@@ -234,36 +204,31 @@ export class DockviewComponent extends BaseGrid {
|
|
|
234
204
|
}
|
|
235
205
|
}
|
|
236
206
|
this.gridview.layout(this.width, this.height);
|
|
237
|
-
this.
|
|
207
|
+
this._onDidLayoutfromJSON.fire();
|
|
238
208
|
}
|
|
239
209
|
closeAllGroups() {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
if (!didCloseAll) {
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return true;
|
|
249
|
-
});
|
|
210
|
+
for (const entry of this._groups.entries()) {
|
|
211
|
+
const [_, group] = entry;
|
|
212
|
+
group.value.model.closeAllPanels();
|
|
213
|
+
}
|
|
250
214
|
}
|
|
251
215
|
fireMouseEvent(event) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
break;
|
|
216
|
+
if (event.kind === MouseEventKind.CONTEXT_MENU) {
|
|
217
|
+
if (event.tab && event.panel) {
|
|
218
|
+
this._onTabContextMenu.fire({
|
|
219
|
+
event: event.event,
|
|
220
|
+
api: this._api,
|
|
221
|
+
panel: event.panel,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
262
224
|
}
|
|
263
225
|
}
|
|
264
226
|
addPanel(options) {
|
|
265
227
|
var _a, _b;
|
|
266
|
-
|
|
228
|
+
if (this.panels.find((_) => _.id === options.id)) {
|
|
229
|
+
throw new Error(`panel with id ${options.id} already exists`);
|
|
230
|
+
}
|
|
231
|
+
const panel = this.createPanel(options);
|
|
267
232
|
let referenceGroup;
|
|
268
233
|
if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
|
|
269
234
|
const referencePanel = this.getGroupPanel(options.position.referencePanel);
|
|
@@ -291,14 +256,20 @@ export class DockviewComponent extends BaseGrid {
|
|
|
291
256
|
}
|
|
292
257
|
return panel;
|
|
293
258
|
}
|
|
294
|
-
removePanel(panel
|
|
295
|
-
|
|
259
|
+
removePanel(panel, options = {
|
|
260
|
+
removeEmptyGroup: true,
|
|
261
|
+
skipDispose: false,
|
|
262
|
+
}) {
|
|
296
263
|
const group = panel.group;
|
|
297
264
|
if (!group) {
|
|
298
265
|
throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
|
|
299
266
|
}
|
|
300
267
|
group.model.removePanel(panel);
|
|
301
|
-
|
|
268
|
+
panel.dispose();
|
|
269
|
+
const retainGroupForWatermark = this.size === 1;
|
|
270
|
+
if (!retainGroupForWatermark &&
|
|
271
|
+
group.model.size === 0 &&
|
|
272
|
+
options.removeEmptyGroup) {
|
|
302
273
|
this.removeGroup(group);
|
|
303
274
|
}
|
|
304
275
|
}
|
|
@@ -311,10 +282,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
311
282
|
: {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
|
|
312
283
|
}
|
|
313
284
|
addEmptyGroup(options) {
|
|
314
|
-
var _a;
|
|
315
285
|
const group = this.createGroup();
|
|
316
286
|
if (options) {
|
|
317
|
-
const referencePanel =
|
|
287
|
+
const referencePanel = this.panels.find((panel) => panel.id === options.referencePanel);
|
|
318
288
|
if (!referencePanel) {
|
|
319
289
|
throw new Error(`reference panel ${options.referencePanel} does not exist`);
|
|
320
290
|
}
|
|
@@ -331,25 +301,24 @@ export class DockviewComponent extends BaseGrid {
|
|
|
331
301
|
this.doAddGroup(group);
|
|
332
302
|
}
|
|
333
303
|
}
|
|
334
|
-
removeGroup(group) {
|
|
304
|
+
removeGroup(group, skipActive = false) {
|
|
335
305
|
const panels = [...group.model.panels]; // reassign since group panels will mutate
|
|
336
|
-
|
|
337
|
-
this.removePanel(panel
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
return;
|
|
306
|
+
for (const panel of panels) {
|
|
307
|
+
this.removePanel(panel, {
|
|
308
|
+
removeEmptyGroup: false,
|
|
309
|
+
skipDispose: false,
|
|
310
|
+
});
|
|
342
311
|
}
|
|
343
|
-
super.
|
|
312
|
+
super.doRemoveGroup(group, { skipActive });
|
|
344
313
|
}
|
|
345
314
|
moveGroupOrPanel(referenceGroup, groupId, itemId, target, index) {
|
|
346
|
-
var _a
|
|
315
|
+
var _a;
|
|
347
316
|
const sourceGroup = groupId
|
|
348
317
|
? (_a = this._groups.get(groupId)) === null || _a === void 0 ? void 0 : _a.value
|
|
349
318
|
: undefined;
|
|
350
319
|
if (!target || target === Position.Center) {
|
|
351
320
|
const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
|
|
352
|
-
|
|
321
|
+
this.panels.find((panel) => panel.id === itemId);
|
|
353
322
|
if (!groupItem) {
|
|
354
323
|
throw new Error(`No panel with id ${itemId}`);
|
|
355
324
|
}
|
|
@@ -385,7 +354,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
385
354
|
}
|
|
386
355
|
else {
|
|
387
356
|
const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
|
|
388
|
-
|
|
357
|
+
this.panels.find((panel) => panel.id === itemId);
|
|
389
358
|
if (!groupItem) {
|
|
390
359
|
throw new Error(`No panel with id ${itemId}`);
|
|
391
360
|
}
|
|
@@ -399,10 +368,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
399
368
|
const isGroupAlreadyFocused = this._activeGroup === group;
|
|
400
369
|
super.doSetGroupActive(group, skipFocus);
|
|
401
370
|
if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.model.activePanel)) {
|
|
402
|
-
this.
|
|
403
|
-
kind: GroupChangeKind.PANEL_ACTIVE,
|
|
404
|
-
panel: (_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel,
|
|
405
|
-
});
|
|
371
|
+
this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel);
|
|
406
372
|
}
|
|
407
373
|
}
|
|
408
374
|
createGroup(options) {
|
|
@@ -424,35 +390,27 @@ export class DockviewComponent extends BaseGrid {
|
|
|
424
390
|
}
|
|
425
391
|
}
|
|
426
392
|
const view = new GroupviewPanel(this, id, options);
|
|
393
|
+
view.init({ params: {}, containerApi: null }); // required to initialized .part and allow for correct disposal of group
|
|
427
394
|
if (!this._groups.has(view.id)) {
|
|
428
395
|
const disposable = new CompositeDisposable(view.model.onMove((event) => {
|
|
429
396
|
const { groupId, itemId, target, index } = event;
|
|
430
397
|
this.moveGroupOrPanel(view, groupId, itemId, target, index);
|
|
398
|
+
}), view.model.onDidDrop((event) => {
|
|
399
|
+
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api }));
|
|
431
400
|
}), view.model.onDidGroupChange((event) => {
|
|
432
401
|
switch (event.kind) {
|
|
433
402
|
case GroupChangeKind2.ADD_PANEL:
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
});
|
|
438
|
-
break;
|
|
439
|
-
case GroupChangeKind2.GROUP_ACTIVE:
|
|
440
|
-
this._onGridEvent.fire({
|
|
441
|
-
kind: GroupChangeKind.GROUP_ACTIVE,
|
|
442
|
-
panel: event.panel,
|
|
443
|
-
});
|
|
403
|
+
if (event.panel) {
|
|
404
|
+
this._onDidAddPanel.fire(event.panel);
|
|
405
|
+
}
|
|
444
406
|
break;
|
|
445
407
|
case GroupChangeKind2.REMOVE_PANEL:
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
});
|
|
408
|
+
if (event.panel) {
|
|
409
|
+
this._onDidRemovePanel.fire(event.panel);
|
|
410
|
+
}
|
|
450
411
|
break;
|
|
451
412
|
case GroupChangeKind2.PANEL_ACTIVE:
|
|
452
|
-
this.
|
|
453
|
-
kind: GroupChangeKind.PANEL_ACTIVE,
|
|
454
|
-
panel: event.panel,
|
|
455
|
-
});
|
|
413
|
+
this._onDidActivePanelChange.fire(event.panel);
|
|
456
414
|
break;
|
|
457
415
|
}
|
|
458
416
|
}));
|
|
@@ -466,46 +424,18 @@ export class DockviewComponent extends BaseGrid {
|
|
|
466
424
|
}
|
|
467
425
|
return view;
|
|
468
426
|
}
|
|
469
|
-
|
|
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
|
-
_addPanel(options) {
|
|
427
|
+
createPanel(options) {
|
|
497
428
|
const view = new DefaultGroupPanelView({
|
|
498
429
|
content: this.createContentComponent(options.id, options.component),
|
|
499
430
|
tab: this.createTabComponent(options.id, options.tabComponent),
|
|
500
431
|
});
|
|
501
|
-
const panel = new DockviewGroupPanel(options.id, this._api);
|
|
432
|
+
const panel = new DockviewGroupPanel(options.id, this, this._api);
|
|
502
433
|
panel.init({
|
|
503
434
|
view,
|
|
504
435
|
title: options.title || options.id,
|
|
505
436
|
suppressClosable: options === null || options === void 0 ? void 0 : options.suppressClosable,
|
|
506
437
|
params: (options === null || options === void 0 ? void 0 : options.params) || {},
|
|
507
438
|
});
|
|
508
|
-
this.registerPanel(panel);
|
|
509
439
|
return panel;
|
|
510
440
|
}
|
|
511
441
|
createContentComponent(id, componentName) {
|
|
@@ -525,9 +455,11 @@ export class DockviewComponent extends BaseGrid {
|
|
|
525
455
|
var _a;
|
|
526
456
|
return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;
|
|
527
457
|
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
this.
|
|
458
|
+
dispose() {
|
|
459
|
+
super.dispose();
|
|
460
|
+
this._onDidActivePanelChange.dispose();
|
|
461
|
+
this._onDidAddPanel.dispose();
|
|
462
|
+
this._onDidRemovePanel.dispose();
|
|
463
|
+
this._onDidLayoutfromJSON.dispose();
|
|
532
464
|
}
|
|
533
465
|
}
|
|
@@ -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,19 +12,17 @@ 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;
|
|
18
|
+
get params(): any;
|
|
19
19
|
get title(): string;
|
|
20
20
|
get suppressClosable(): boolean;
|
|
21
21
|
get group(): GroupviewPanel | undefined;
|
|
22
22
|
get view(): IGroupPanelView | undefined;
|
|
23
|
-
constructor(id: string, containerApi: DockviewApi);
|
|
23
|
+
constructor(id: string, accessor: DockviewComponent, containerApi: DockviewApi);
|
|
24
24
|
init(params: IGroupPanelInitParameters): void;
|
|
25
25
|
focus(): void;
|
|
26
|
-
setDirty(isDirty: boolean): void;
|
|
27
|
-
close(): Promise<boolean>;
|
|
28
26
|
toJSON(): GroupviewPanelState;
|
|
29
27
|
setTitle(title: string): void;
|
|
30
28
|
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,14 +9,17 @@ 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 } });
|
|
19
17
|
}));
|
|
20
18
|
}
|
|
19
|
+
get params() {
|
|
20
|
+
var _a;
|
|
21
|
+
return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;
|
|
22
|
+
}
|
|
21
23
|
get title() {
|
|
22
24
|
return this._title;
|
|
23
25
|
}
|
|
@@ -36,32 +38,18 @@ export class DockviewGroupPanel extends CompositeDisposable {
|
|
|
36
38
|
this._view = params.view;
|
|
37
39
|
this.setTitle(params.title);
|
|
38
40
|
this.setSuppressClosable(params.suppressClosable || false);
|
|
39
|
-
if (params.state) {
|
|
40
|
-
this.api.setState(params.state);
|
|
41
|
-
}
|
|
42
41
|
(_a = this.view) === null || _a === void 0 ? void 0 : _a.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));
|
|
43
42
|
}
|
|
44
43
|
focus() {
|
|
45
44
|
this.api._onFocusEvent.fire();
|
|
46
45
|
}
|
|
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
46
|
toJSON() {
|
|
57
|
-
const state = this.api.getState();
|
|
58
47
|
return {
|
|
59
48
|
id: this.id,
|
|
60
49
|
view: this.view.toJSON(),
|
|
61
50
|
params: Object.keys(this._params || {}).length > 0
|
|
62
51
|
? this._params
|
|
63
52
|
: undefined,
|
|
64
|
-
state: state && Object.keys(state).length > 0 ? state : undefined,
|
|
65
53
|
suppressClosable: this.suppressClosable || undefined,
|
|
66
54
|
title: this.title,
|
|
67
55
|
};
|
|
@@ -106,18 +94,6 @@ export class DockviewGroupPanel extends CompositeDisposable {
|
|
|
106
94
|
var _a;
|
|
107
95
|
this._group = group;
|
|
108
96
|
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
97
|
const isPanelVisible = this._group.model.isPanelActive(this);
|
|
122
98
|
this.api._onDidActiveChange.fire({
|
|
123
99
|
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 = [];
|
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Event, TickDelayedEvent } from '../events';
|
|
2
2
|
import { Gridview, IGridView } from './gridview';
|
|
3
3
|
import { Position } from '../dnd/droptarget';
|
|
4
4
|
import { CompositeDisposable, IValueDisposable } from '../lifecycle';
|
|
5
5
|
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
|
6
6
|
import { IPanel } from '../panel/types';
|
|
7
7
|
import { MovementOptions2 } from '../dockview/options';
|
|
8
|
-
import { IGroupPanel } from '../groupview/groupPanel';
|
|
9
|
-
export declare enum GroupChangeKind {
|
|
10
|
-
ADD_PANEL = "ADD_PANEL",
|
|
11
|
-
REMOVE_PANEL = "REMOVE_PANEL",
|
|
12
|
-
PANEL_ACTIVE = "PANEL_ACTIVE",
|
|
13
|
-
GROUP_ACTIVE = "GROUP_ACTIVE",
|
|
14
|
-
ADD_GROUP = "ADD_GROUP",
|
|
15
|
-
REMOVE_GROUP = "REMOVE_GROUP",
|
|
16
|
-
LAYOUT_FROM_JSON = "LAYOUT_FROM_JSON",
|
|
17
|
-
LAYOUT = "LAYOUT"
|
|
18
|
-
}
|
|
19
|
-
export interface GroupChangeEvent {
|
|
20
|
-
readonly kind: GroupChangeKind;
|
|
21
|
-
readonly panel?: IGroupPanel;
|
|
22
|
-
}
|
|
23
8
|
export declare type Direction = 'left' | 'right' | 'above' | 'below' | 'within';
|
|
24
9
|
export declare function toTarget(direction: Direction): Position;
|
|
25
10
|
export interface BaseGridOptions {
|
|
26
|
-
readonly proportionalLayout
|
|
11
|
+
readonly proportionalLayout: boolean;
|
|
27
12
|
readonly orientation: Orientation;
|
|
28
13
|
readonly styles?: ISplitviewStyles;
|
|
29
14
|
}
|
|
@@ -43,8 +28,10 @@ export interface IBaseGrid<T extends IGridPanelView> {
|
|
|
43
28
|
readonly activeGroup: T | undefined;
|
|
44
29
|
readonly size: number;
|
|
45
30
|
readonly groups: T[];
|
|
46
|
-
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
47
31
|
readonly onDidLayoutChange: Event<void>;
|
|
32
|
+
readonly onDidRemoveGroup: Event<T>;
|
|
33
|
+
readonly onDidAddGroup: Event<T>;
|
|
34
|
+
readonly onDidActiveGroupChange: Event<T | undefined>;
|
|
48
35
|
getPanel(id: string): T | undefined;
|
|
49
36
|
toJSON(): object;
|
|
50
37
|
fromJSON(data: any): void;
|
|
@@ -59,10 +46,15 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
|
|
|
59
46
|
protected readonly _groups: Map<string, IValueDisposable<T>>;
|
|
60
47
|
protected readonly gridview: Gridview;
|
|
61
48
|
protected _activeGroup: T | undefined;
|
|
62
|
-
protected readonly _onGridEvent: Emitter<GroupChangeEvent>;
|
|
63
|
-
readonly onGridEvent: Event<GroupChangeEvent>;
|
|
64
49
|
private _onDidLayoutChange;
|
|
65
50
|
readonly onDidLayoutChange: Event<void>;
|
|
51
|
+
private readonly _onDidRemoveGroup;
|
|
52
|
+
readonly onDidRemoveGroup: Event<T>;
|
|
53
|
+
private readonly _onDidAddGroup;
|
|
54
|
+
readonly onDidAddGroup: Event<T>;
|
|
55
|
+
private readonly _onDidActiveGroupChange;
|
|
56
|
+
readonly onDidActiveGroupChange: Event<T | undefined>;
|
|
57
|
+
protected readonly _bufferOnDidLayoutChange: TickDelayedEvent;
|
|
66
58
|
get id(): string;
|
|
67
59
|
get element(): HTMLElement;
|
|
68
60
|
get size(): number;
|