dockview 1.1.0 → 1.3.1
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/dist/cjs/api/component.api.d.ts +17 -15
- package/dist/cjs/api/component.api.js +22 -22
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +1 -1
- package/dist/cjs/dnd/abstractDragHandler.js +2 -3
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/droptarget.js +3 -3
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -1
- package/dist/cjs/dockview/components/tab/defaultTab.js +1 -1
- 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 +8 -5
- package/dist/cjs/dockview/dockviewComponent.js +60 -41
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +1 -0
- package/dist/cjs/dockview/dockviewGroupPanel.js +8 -0
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -20
- package/dist/cjs/gridview/baseComponentGridview.js +35 -43
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.js +2 -0
- package/dist/cjs/gridview/basePanelView.js.map +1 -1
- package/dist/cjs/gridview/branchNode.js +2 -2
- package/dist/cjs/gridview/branchNode.js.map +1 -1
- package/dist/cjs/gridview/gridview.js +3 -2
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +3 -9
- package/dist/cjs/gridview/gridviewComponent.js +30 -18
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/leafNode.js +1 -1
- package/dist/cjs/gridview/leafNode.js.map +1 -1
- package/dist/cjs/groupview/groupPanel.d.ts +1 -0
- package/dist/cjs/groupview/groupview.d.ts +3 -2
- package/dist/cjs/groupview/groupview.js +15 -6
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/panel/content.d.ts +1 -1
- package/dist/cjs/groupview/panel/content.js +1 -1
- package/dist/cjs/groupview/panel/content.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 +2 -2
- package/dist/cjs/index.js +8 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/panel/types.d.ts +1 -0
- 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.js +1 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/paneview.d.ts +3 -1
- package/dist/cjs/paneview/paneview.js +12 -6
- package/dist/cjs/paneview/paneview.js.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +12 -5
- package/dist/cjs/paneview/paneviewComponent.js +68 -16
- package/dist/cjs/paneview/paneviewComponent.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.js +32 -10
- 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 +2 -13
- 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 +2 -2
- package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +2 -2
- package/dist/cjs/react/dockview/reactWatermarkPart.js +2 -2
- 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.map +1 -1
- 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 +5 -1
- 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/splitview/core/splitview.js +1 -1
- package/dist/cjs/splitview/core/splitview.js.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts +5 -3
- package/dist/cjs/splitview/splitviewComponent.js +55 -16
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/dockview.amd.js +316 -312
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.noStyle.js +315 -311
- package/dist/dockview.cjs.js +316 -312
- package/dist/dockview.esm.js +316 -306
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.js +316 -312
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.noStyle.js +315 -311
- package/dist/esm/api/component.api.d.ts +17 -15
- package/dist/esm/api/component.api.js +14 -14
- package/dist/esm/dnd/abstractDragHandler.d.ts +1 -1
- package/dist/esm/dnd/abstractDragHandler.js +2 -3
- package/dist/esm/dnd/droptarget.js +3 -3
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -1
- package/dist/esm/dockview/components/tab/defaultTab.js +1 -1
- 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 +8 -5
- package/dist/esm/dockview/dockviewComponent.js +34 -38
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +1 -0
- package/dist/esm/dockview/dockviewGroupPanel.js +4 -0
- package/dist/esm/gridview/baseComponentGridview.d.ts +3 -20
- package/dist/esm/gridview/baseComponentGridview.js +13 -43
- package/dist/esm/gridview/basePanelView.js +2 -0
- package/dist/esm/gridview/branchNode.js +2 -2
- package/dist/esm/gridview/gridview.js +2 -1
- package/dist/esm/gridview/gridviewComponent.d.ts +3 -9
- package/dist/esm/gridview/gridviewComponent.js +9 -19
- package/dist/esm/groupview/groupPanel.d.ts +1 -0
- package/dist/esm/groupview/groupview.d.ts +3 -2
- package/dist/esm/groupview/groupview.js +8 -3
- package/dist/esm/groupview/panel/content.d.ts +1 -1
- package/dist/esm/groupview/panel/content.js +1 -1
- package/dist/esm/hostedContainer.js +2 -2
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -2
- package/dist/esm/panel/types.d.ts +1 -0
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
- package/dist/esm/paneview/defaultPaneviewHeader.js +1 -1
- package/dist/esm/paneview/draggablePaneviewPanel.js +1 -1
- package/dist/esm/paneview/paneview.d.ts +3 -1
- package/dist/esm/paneview/paneview.js +9 -5
- package/dist/esm/paneview/paneviewComponent.d.ts +12 -5
- package/dist/esm/paneview/paneviewComponent.js +34 -15
- package/dist/esm/react/dockview/dockview.js +27 -9
- package/dist/esm/react/dockview/reactContentPart.d.ts +2 -2
- package/dist/esm/react/dockview/reactContentPart.js +2 -13
- package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -2
- package/dist/esm/react/dockview/reactHeaderPart.js +2 -2
- package/dist/esm/react/dockview/reactWatermarkPart.d.ts +2 -2
- package/dist/esm/react/dockview/reactWatermarkPart.js +2 -2
- 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/paneview/paneview.js +1 -1
- package/dist/esm/react/splitview/splitview.js +3 -1
- package/dist/esm/splitview/core/splitview.js +1 -1
- package/dist/esm/splitview/splitviewComponent.d.ts +5 -3
- package/dist/esm/splitview/splitviewComponent.js +22 -15
- package/dist/styles/dockview.css +10 -10
- package/package.json +13 -13
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
import { Emitter, TickDelayedEvent } from '../events';
|
|
1
|
+
import { Emitter, Event, TickDelayedEvent } from '../events';
|
|
2
2
|
import { getGridLocation, Gridview } from './gridview';
|
|
3
3
|
import { Position } from '../dnd/droptarget';
|
|
4
4
|
import { CompositeDisposable } from '../lifecycle';
|
|
5
5
|
import { sequentialNumberGenerator } from '../math';
|
|
6
6
|
import { Sizing, } from '../splitview/core/splitview';
|
|
7
|
-
export var GroupChangeKind;
|
|
8
|
-
(function (GroupChangeKind) {
|
|
9
|
-
GroupChangeKind["ADD_PANEL"] = "ADD_PANEL";
|
|
10
|
-
GroupChangeKind["REMOVE_PANEL"] = "REMOVE_PANEL";
|
|
11
|
-
GroupChangeKind["PANEL_ACTIVE"] = "PANEL_ACTIVE";
|
|
12
|
-
//
|
|
13
|
-
GroupChangeKind["GROUP_ACTIVE"] = "GROUP_ACTIVE";
|
|
14
|
-
GroupChangeKind["ADD_GROUP"] = "ADD_GROUP";
|
|
15
|
-
GroupChangeKind["REMOVE_GROUP"] = "REMOVE_GROUP";
|
|
16
|
-
//
|
|
17
|
-
GroupChangeKind["LAYOUT_FROM_JSON"] = "LAYOUT_FROM_JSON";
|
|
18
|
-
GroupChangeKind["LAYOUT"] = "LAYOUT";
|
|
19
|
-
})(GroupChangeKind || (GroupChangeKind = {}));
|
|
20
7
|
const nextLayoutId = sequentialNumberGenerator();
|
|
21
8
|
export function toTarget(direction) {
|
|
22
9
|
switch (direction) {
|
|
@@ -39,9 +26,6 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
39
26
|
this._element = _element;
|
|
40
27
|
this._id = nextLayoutId.next();
|
|
41
28
|
this._groups = new Map();
|
|
42
|
-
//
|
|
43
|
-
this._onGridEvent = new Emitter();
|
|
44
|
-
this.onGridEvent = this._onGridEvent.event;
|
|
45
29
|
this._onDidLayoutChange = new Emitter();
|
|
46
30
|
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
47
31
|
this._onDidRemoveGroup = new Emitter();
|
|
@@ -50,30 +34,18 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
50
34
|
this.onDidAddGroup = this._onDidAddGroup.event;
|
|
51
35
|
this._onDidActiveGroupChange = new Emitter();
|
|
52
36
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
37
|
+
this._bufferOnDidLayoutChange = new TickDelayedEvent();
|
|
53
38
|
this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation);
|
|
54
39
|
this.element.appendChild(this.gridview.element);
|
|
55
40
|
this.layout(0, 0, true); // set some elements height/widths
|
|
56
41
|
this.addDisposables(this.gridview.onDidChange(() => {
|
|
57
|
-
this.
|
|
42
|
+
this._onDidLayoutChange.fire();
|
|
58
43
|
}));
|
|
59
|
-
this.addDisposables((() => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
GroupChangeKind.REMOVE_GROUP,
|
|
65
|
-
GroupChangeKind.ADD_PANEL,
|
|
66
|
-
GroupChangeKind.REMOVE_PANEL,
|
|
67
|
-
GroupChangeKind.GROUP_ACTIVE,
|
|
68
|
-
GroupChangeKind.PANEL_ACTIVE,
|
|
69
|
-
GroupChangeKind.LAYOUT,
|
|
70
|
-
].includes(event.kind)) {
|
|
71
|
-
tickDelayedEvent.fire();
|
|
72
|
-
}
|
|
73
|
-
}), tickDelayedEvent.onEvent(() => {
|
|
74
|
-
this._onDidLayoutChange.fire();
|
|
75
|
-
}), tickDelayedEvent);
|
|
76
|
-
})());
|
|
44
|
+
this.addDisposables(Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
|
|
45
|
+
this._bufferOnDidLayoutChange.fire();
|
|
46
|
+
}), this._bufferOnDidLayoutChange.onEvent(() => {
|
|
47
|
+
this._onDidLayoutChange.fire();
|
|
48
|
+
}), this._bufferOnDidLayoutChange);
|
|
77
49
|
}
|
|
78
50
|
get id() {
|
|
79
51
|
return this._id;
|
|
@@ -110,14 +82,13 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
110
82
|
}
|
|
111
83
|
setVisible(panel, visible) {
|
|
112
84
|
this.gridview.setViewVisible(getGridLocation(panel.element), visible);
|
|
113
|
-
this.
|
|
85
|
+
this._onDidLayoutChange.fire();
|
|
114
86
|
}
|
|
115
87
|
isVisible(panel) {
|
|
116
88
|
return this.gridview.isViewVisible(getGridLocation(panel.element));
|
|
117
89
|
}
|
|
118
90
|
doAddGroup(group, location = [0], size) {
|
|
119
91
|
this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
|
|
120
|
-
this._onGridEvent.fire({ kind: GroupChangeKind.ADD_GROUP });
|
|
121
92
|
this._onDidAddGroup.fire(group);
|
|
122
93
|
this.doSetGroupActive(group);
|
|
123
94
|
}
|
|
@@ -129,9 +100,9 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
129
100
|
const view = this.gridview.remove(group, Sizing.Distribute);
|
|
130
101
|
if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
131
102
|
item.disposable.dispose();
|
|
103
|
+
item.value.dispose();
|
|
132
104
|
this._groups.delete(group.id);
|
|
133
105
|
}
|
|
134
|
-
this._onGridEvent.fire({ kind: GroupChangeKind.REMOVE_GROUP });
|
|
135
106
|
this._onDidRemoveGroup.fire(group);
|
|
136
107
|
if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
|
|
137
108
|
const groups = Array.from(this._groups.values());
|
|
@@ -160,9 +131,6 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
160
131
|
}
|
|
161
132
|
}
|
|
162
133
|
this._activeGroup = group;
|
|
163
|
-
this._onGridEvent.fire({
|
|
164
|
-
kind: GroupChangeKind.GROUP_ACTIVE,
|
|
165
|
-
});
|
|
166
134
|
this._onDidActiveGroupChange.fire(group);
|
|
167
135
|
}
|
|
168
136
|
removeGroup(group) {
|
|
@@ -219,11 +187,13 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
219
187
|
}
|
|
220
188
|
dispose() {
|
|
221
189
|
super.dispose();
|
|
222
|
-
this._onGridEvent.dispose();
|
|
223
190
|
this._onDidActiveGroupChange.dispose();
|
|
224
191
|
this._onDidAddGroup.dispose();
|
|
225
192
|
this._onDidRemoveGroup.dispose();
|
|
226
193
|
this._onDidLayoutChange.dispose();
|
|
194
|
+
for (const group of this.groups) {
|
|
195
|
+
group.dispose();
|
|
196
|
+
}
|
|
227
197
|
this.gridview.dispose();
|
|
228
198
|
}
|
|
229
199
|
}
|
|
@@ -40,7 +40,7 @@ export class BranchNode extends CompositeDisposable {
|
|
|
40
40
|
: true,
|
|
41
41
|
};
|
|
42
42
|
}),
|
|
43
|
-
size: this.
|
|
43
|
+
size: this.size,
|
|
44
44
|
};
|
|
45
45
|
this.children = childDescriptors.map((c) => c.node);
|
|
46
46
|
this.splitview = new Splitview(this.element, {
|
|
@@ -201,7 +201,7 @@ export class BranchNode extends CompositeDisposable {
|
|
|
201
201
|
}
|
|
202
202
|
setupChildrenEvents() {
|
|
203
203
|
this._childrenDisposable.dispose();
|
|
204
|
-
this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))((
|
|
204
|
+
this._childrenDisposable = Event.any(...this.children.map((c) => c.onDidChange))(() => {
|
|
205
205
|
/**
|
|
206
206
|
* indicate a change has occured to allows any re-rendering but don't bubble
|
|
207
207
|
* event because that was specific to this branch
|
|
@@ -149,6 +149,7 @@ export class Gridview {
|
|
|
149
149
|
this.disposable.dispose();
|
|
150
150
|
this._onDidChange.dispose();
|
|
151
151
|
this.root.dispose();
|
|
152
|
+
this.element.remove();
|
|
152
153
|
}
|
|
153
154
|
clear() {
|
|
154
155
|
const orientation = this.root.orientation;
|
|
@@ -351,7 +352,7 @@ export class Gridview {
|
|
|
351
352
|
const [parentIndex, ...__] = [...rest].reverse();
|
|
352
353
|
const isSiblingVisible = parent.isChildVisible(0);
|
|
353
354
|
parent.removeChild(0, sizing);
|
|
354
|
-
const sizes = grandParent.children.map((
|
|
355
|
+
const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
|
|
355
356
|
grandParent.removeChild(parentIndex, sizing);
|
|
356
357
|
if (sibling instanceof BranchNode) {
|
|
357
358
|
sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
|
|
@@ -5,12 +5,8 @@ import { GridviewComponentOptions } from './options';
|
|
|
5
5
|
import { BaseGrid, Direction, IBaseGrid, IGridPanelView } from './baseComponentGridview';
|
|
6
6
|
import { GridviewPanel, GridviewInitParameters, GridPanelViewState, IGridviewPanel } from './gridviewPanel';
|
|
7
7
|
import { BaseComponentOptions } from '../panel/types';
|
|
8
|
-
import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
|
|
9
8
|
import { Orientation, Sizing } from '../splitview/core/splitview';
|
|
10
9
|
import { Event } from '../events';
|
|
11
|
-
interface PanelReference {
|
|
12
|
-
api: GridviewPanelApiImpl;
|
|
13
|
-
}
|
|
14
10
|
export interface SerializedGridview {
|
|
15
11
|
grid: {
|
|
16
12
|
height: number;
|
|
@@ -21,7 +17,6 @@ export interface SerializedGridview {
|
|
|
21
17
|
activePanel?: string;
|
|
22
18
|
}
|
|
23
19
|
export interface AddComponentOptions extends BaseComponentOptions {
|
|
24
|
-
size?: number;
|
|
25
20
|
minimumWidth?: number;
|
|
26
21
|
maximumWidth?: number;
|
|
27
22
|
minimumHeight?: number;
|
|
@@ -44,7 +39,7 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
|
|
|
44
39
|
removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
|
|
45
40
|
toggleVisibility(panel: IGridviewPanel): void;
|
|
46
41
|
focus(): void;
|
|
47
|
-
fromJSON(serializedGridview: SerializedGridview
|
|
42
|
+
fromJSON(serializedGridview: SerializedGridview): void;
|
|
48
43
|
toJSON(): SerializedGridview;
|
|
49
44
|
movePanel(panel: IGridviewPanel, options: {
|
|
50
45
|
direction: Direction;
|
|
@@ -77,16 +72,15 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
|
|
|
77
72
|
setActive(panel: GridviewPanel): void;
|
|
78
73
|
toggleVisibility(panel: GridviewPanel): void;
|
|
79
74
|
focus(): void;
|
|
80
|
-
fromJSON(serializedGridview: SerializedGridview
|
|
75
|
+
fromJSON(serializedGridview: SerializedGridview): void;
|
|
81
76
|
movePanel(panel: GridviewPanel, options: {
|
|
82
77
|
direction: Direction;
|
|
83
78
|
reference: string;
|
|
84
79
|
size?: number;
|
|
85
80
|
}): void;
|
|
86
|
-
addPanel(options: AddComponentOptions):
|
|
81
|
+
addPanel(options: AddComponentOptions): void;
|
|
87
82
|
private registerPanel;
|
|
88
83
|
moveGroup(referenceGroup: IGridPanelComponentView, groupId: string, target: Position): void;
|
|
89
84
|
removeGroup(group: GridviewPanel): void;
|
|
90
85
|
dispose(): void;
|
|
91
86
|
}
|
|
92
|
-
export {};
|
|
@@ -2,7 +2,7 @@ import { getRelativeLocation, getGridLocation, } from './gridview';
|
|
|
2
2
|
import { Position } from '../dnd/droptarget';
|
|
3
3
|
import { tail, sequenceEquals } from '../array';
|
|
4
4
|
import { CompositeDisposable } from '../lifecycle';
|
|
5
|
-
import { BaseGrid,
|
|
5
|
+
import { BaseGrid, toTarget, } from './baseComponentGridview';
|
|
6
6
|
import { GridviewApi } from '../api/component.api';
|
|
7
7
|
import { createComponent } from '../panel/componentFactory';
|
|
8
8
|
import { Emitter } from '../events';
|
|
@@ -67,7 +67,7 @@ export class GridviewComponent extends BaseGrid {
|
|
|
67
67
|
this.gridview.setViewVisible(getGridLocation(panel.element), visible);
|
|
68
68
|
}
|
|
69
69
|
setActive(panel) {
|
|
70
|
-
this._groups.forEach((value,
|
|
70
|
+
this._groups.forEach((value, _key) => {
|
|
71
71
|
value.value.setActive(panel === value.value);
|
|
72
72
|
});
|
|
73
73
|
}
|
|
@@ -78,10 +78,14 @@ export class GridviewComponent extends BaseGrid {
|
|
|
78
78
|
var _a;
|
|
79
79
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
80
80
|
}
|
|
81
|
-
fromJSON(serializedGridview
|
|
81
|
+
fromJSON(serializedGridview) {
|
|
82
82
|
const { grid, activePanel } = serializedGridview;
|
|
83
|
+
const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
|
|
84
|
+
for (const group of groups) {
|
|
85
|
+
group.disposable.dispose();
|
|
86
|
+
this.doRemoveGroup(group.value, { skipActive: true });
|
|
87
|
+
}
|
|
83
88
|
this.gridview.clear();
|
|
84
|
-
this._groups.clear();
|
|
85
89
|
const queue = [];
|
|
86
90
|
this.gridview.deserialize(grid, {
|
|
87
91
|
fromJSON: (node) => {
|
|
@@ -108,21 +112,13 @@ export class GridviewComponent extends BaseGrid {
|
|
|
108
112
|
},
|
|
109
113
|
});
|
|
110
114
|
this.layout(this.width, this.height, true);
|
|
111
|
-
|
|
112
|
-
setTimeout(() => {
|
|
113
|
-
queue.forEach((f) => f());
|
|
114
|
-
}, 0);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
queue.forEach((f) => f());
|
|
118
|
-
}
|
|
115
|
+
queue.forEach((f) => f());
|
|
119
116
|
if (typeof activePanel === 'string') {
|
|
120
117
|
const panel = this.getPanel(activePanel);
|
|
121
118
|
if (panel) {
|
|
122
119
|
this.doSetGroupActive(panel);
|
|
123
120
|
}
|
|
124
121
|
}
|
|
125
|
-
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
|
|
126
122
|
this._onDidLayoutfromJSON.fire();
|
|
127
123
|
}
|
|
128
124
|
movePanel(panel, options) {
|
|
@@ -179,7 +175,6 @@ export class GridviewComponent extends BaseGrid {
|
|
|
179
175
|
});
|
|
180
176
|
this.registerPanel(view);
|
|
181
177
|
this.doAddGroup(view, relativeLocation, options.size);
|
|
182
|
-
return { api: view.api };
|
|
183
178
|
}
|
|
184
179
|
registerPanel(panel) {
|
|
185
180
|
const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {
|
|
@@ -230,11 +225,6 @@ export class GridviewComponent extends BaseGrid {
|
|
|
230
225
|
}
|
|
231
226
|
removeGroup(group) {
|
|
232
227
|
super.removeGroup(group);
|
|
233
|
-
const panel = this._groups.get(group.id);
|
|
234
|
-
if (panel) {
|
|
235
|
-
panel.disposable.dispose();
|
|
236
|
-
this._groups.delete(group.id);
|
|
237
|
-
}
|
|
238
228
|
}
|
|
239
229
|
dispose() {
|
|
240
230
|
super.dispose();
|
|
@@ -18,6 +18,7 @@ export interface IGroupPanel extends IDisposable, IPanel {
|
|
|
18
18
|
readonly api: DockviewPanelApi;
|
|
19
19
|
readonly title: string;
|
|
20
20
|
readonly suppressClosable: boolean;
|
|
21
|
+
readonly params: Record<string, any> | undefined;
|
|
21
22
|
updateParentGroup(group: GroupviewPanel, isGroupActive: boolean): void;
|
|
22
23
|
init(params: IGroupPanelInitParameters): void;
|
|
23
24
|
toJSON(): GroupviewPanelState;
|
|
@@ -119,6 +119,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
119
119
|
get maximumHeight(): number;
|
|
120
120
|
get minimumWidth(): number;
|
|
121
121
|
get maximumWidth(): number;
|
|
122
|
+
get hasWatermark(): boolean;
|
|
122
123
|
constructor(container: HTMLElement, accessor: IDockviewComponent, id: string, options: GroupOptions, parent: GroupviewPanel);
|
|
123
124
|
initialize(): void;
|
|
124
125
|
isContentFocused(): boolean;
|
|
@@ -133,8 +134,8 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
133
134
|
suppressRoll?: boolean;
|
|
134
135
|
}): void;
|
|
135
136
|
containsPanel(panel: IGroupPanel): boolean;
|
|
136
|
-
init(
|
|
137
|
-
update(
|
|
137
|
+
init(_params: PanelInitParameters): void;
|
|
138
|
+
update(_params: PanelUpdateEvent): void;
|
|
138
139
|
focus(): void;
|
|
139
140
|
openPanel(panel: IGroupPanel, options?: {
|
|
140
141
|
index?: number;
|
|
@@ -99,6 +99,9 @@ export class Groupview extends CompositeDisposable {
|
|
|
99
99
|
get maximumWidth() {
|
|
100
100
|
return Number.MAX_SAFE_INTEGER;
|
|
101
101
|
}
|
|
102
|
+
get hasWatermark() {
|
|
103
|
+
return !!(this.watermark && this.container.contains(this.watermark.element));
|
|
104
|
+
}
|
|
102
105
|
initialize() {
|
|
103
106
|
var _a, _b;
|
|
104
107
|
if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
|
|
@@ -177,10 +180,10 @@ export class Groupview extends CompositeDisposable {
|
|
|
177
180
|
containsPanel(panel) {
|
|
178
181
|
return this.panels.includes(panel);
|
|
179
182
|
}
|
|
180
|
-
init(
|
|
183
|
+
init(_params) {
|
|
181
184
|
//noop
|
|
182
185
|
}
|
|
183
|
-
update(
|
|
186
|
+
update(_params) {
|
|
184
187
|
//noop
|
|
185
188
|
}
|
|
186
189
|
focus() {
|
|
@@ -403,10 +406,12 @@ export class Groupview extends CompositeDisposable {
|
|
|
403
406
|
}
|
|
404
407
|
}
|
|
405
408
|
dispose() {
|
|
409
|
+
var _a;
|
|
410
|
+
super.dispose();
|
|
411
|
+
(_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
406
412
|
for (const panel of this.panels) {
|
|
407
413
|
panel.dispose();
|
|
408
414
|
}
|
|
409
|
-
super.dispose();
|
|
410
415
|
this.dropTarget.dispose();
|
|
411
416
|
this.tabsContainer.dispose();
|
|
412
417
|
this.contentContainer.dispose();
|
|
@@ -24,7 +24,7 @@ export declare class ContentContainer extends CompositeDisposable implements ICo
|
|
|
24
24
|
show(): void;
|
|
25
25
|
hide(): void;
|
|
26
26
|
openPanel(panel: IGroupPanel): void;
|
|
27
|
-
layout(
|
|
27
|
+
layout(_width: number, _height: number): void;
|
|
28
28
|
closePanel(): void;
|
|
29
29
|
dispose(): void;
|
|
30
30
|
}
|
|
@@ -23,10 +23,10 @@ export class HostedContainer {
|
|
|
23
23
|
/**
|
|
24
24
|
* When dragging somebody
|
|
25
25
|
*/
|
|
26
|
-
window.addEventListener('dragstart', (
|
|
26
|
+
window.addEventListener('dragstart', () => {
|
|
27
27
|
this.element.style.pointerEvents = 'none';
|
|
28
28
|
});
|
|
29
|
-
window.addEventListener('dragend', (
|
|
29
|
+
window.addEventListener('dragend', () => {
|
|
30
30
|
this.element.style.pointerEvents = '';
|
|
31
31
|
});
|
|
32
32
|
window.addEventListener('mousemove', (ev) => {
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export * from './events';
|
|
2
|
-
export * from './lifecycle';
|
|
3
1
|
export * from './dnd/dataTransfer';
|
|
4
2
|
export * from './api/component.api';
|
|
5
3
|
export * from './splitview/core/splitview';
|
|
@@ -20,6 +18,8 @@ export * from './splitview/splitviewPanel';
|
|
|
20
18
|
export * from './paneview/paneviewPanel';
|
|
21
19
|
export * from './groupview/groupPanel';
|
|
22
20
|
export * from './react';
|
|
21
|
+
export { Event } from './events';
|
|
22
|
+
export { IDisposable } from './lifecycle';
|
|
23
23
|
export { Position } from './dnd/droptarget';
|
|
24
24
|
export { FocusEvent, PanelDimensionChangeEvent, VisibilityEvent, ActiveEvent, PanelApi, } from './api/panelApi';
|
|
25
25
|
export { SizeEvent, GridviewPanelApi, GridConstraintChangeEvent, } from './api/gridviewPanelApi';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export * from './events';
|
|
2
|
-
export * from './lifecycle';
|
|
3
1
|
export * from './dnd/dataTransfer';
|
|
4
2
|
export * from './api/component.api';
|
|
5
3
|
export * from './splitview/core/splitview';
|
|
@@ -20,4 +18,5 @@ export * from './splitview/splitviewPanel';
|
|
|
20
18
|
export * from './paneview/paneviewPanel';
|
|
21
19
|
export * from './groupview/groupPanel';
|
|
22
20
|
export * from './react'; // TODO: should be conditional on whether user wants the React wrappers
|
|
21
|
+
export { Event } from './events';
|
|
23
22
|
export { Position } from './dnd/droptarget';
|
|
@@ -13,6 +13,6 @@ export declare class DefaultHeader extends CompositeDisposable implements IPaneH
|
|
|
13
13
|
init(params: PanePanelInitParameter & {
|
|
14
14
|
api: PaneviewPanelApiImpl;
|
|
15
15
|
}): void;
|
|
16
|
-
update(
|
|
16
|
+
update(_params: PanelUpdateEvent): void;
|
|
17
17
|
dispose(): void;
|
|
18
18
|
}
|
|
@@ -30,7 +30,7 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
|
|
|
30
30
|
})(this.header);
|
|
31
31
|
this.target = new Droptarget(this.element, {
|
|
32
32
|
validOverlays: 'vertical',
|
|
33
|
-
canDisplayOverlay: (
|
|
33
|
+
canDisplayOverlay: () => {
|
|
34
34
|
const data = getPaneData();
|
|
35
35
|
if (!data) {
|
|
36
36
|
return true;
|
|
@@ -29,7 +29,9 @@ export declare class Paneview extends CompositeDisposable implements IDisposable
|
|
|
29
29
|
addPane(pane: PaneviewPanel, size?: number | Sizing, index?: number, skipLayout?: boolean): void;
|
|
30
30
|
getViewSize(index: number): number;
|
|
31
31
|
getPanes(): PaneviewPanel[];
|
|
32
|
-
removePane(index: number
|
|
32
|
+
removePane(index: number, options?: {
|
|
33
|
+
skipDispose: boolean;
|
|
34
|
+
}): PaneItem;
|
|
33
35
|
moveView(from: number, to: number): void;
|
|
34
36
|
layout(size: number, orthogonalSize: number): void;
|
|
35
37
|
private setupAnimation;
|
|
@@ -21,7 +21,7 @@ export class Paneview extends CompositeDisposable {
|
|
|
21
21
|
});
|
|
22
22
|
// if we've added views from the descriptor we need to
|
|
23
23
|
// add the panes to our Pane array and setup animation
|
|
24
|
-
this.getPanes().forEach((pane
|
|
24
|
+
this.getPanes().forEach((pane) => {
|
|
25
25
|
const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {
|
|
26
26
|
this.setupAnimation();
|
|
27
27
|
this._onDidChange.fire(undefined);
|
|
@@ -89,17 +89,20 @@ export class Paneview extends CompositeDisposable {
|
|
|
89
89
|
getPanes() {
|
|
90
90
|
return this.splitview.getViews();
|
|
91
91
|
}
|
|
92
|
-
removePane(index) {
|
|
92
|
+
removePane(index, options = { skipDispose: false }) {
|
|
93
93
|
const paneItem = this.paneItems.splice(index, 1)[0];
|
|
94
94
|
this.splitview.removeView(index);
|
|
95
|
-
|
|
95
|
+
if (!options.skipDispose) {
|
|
96
|
+
paneItem.disposable.dispose();
|
|
97
|
+
paneItem.pane.dispose();
|
|
98
|
+
}
|
|
96
99
|
return paneItem;
|
|
97
100
|
}
|
|
98
101
|
moveView(from, to) {
|
|
99
102
|
if (from === to) {
|
|
100
103
|
return;
|
|
101
104
|
}
|
|
102
|
-
const view = this.removePane(from);
|
|
105
|
+
const view = this.removePane(from, { skipDispose: true });
|
|
103
106
|
this.skipAnimation = true;
|
|
104
107
|
try {
|
|
105
108
|
this.addPane(view.pane, view.pane.size, to, false);
|
|
@@ -127,15 +130,16 @@ export class Paneview extends CompositeDisposable {
|
|
|
127
130
|
}
|
|
128
131
|
dispose() {
|
|
129
132
|
super.dispose();
|
|
130
|
-
this.splitview.dispose();
|
|
131
133
|
if (this.animationTimer) {
|
|
132
134
|
clearTimeout(this.animationTimer);
|
|
133
135
|
this.animationTimer = undefined;
|
|
134
136
|
}
|
|
135
137
|
this.paneItems.forEach((paneItem) => {
|
|
136
138
|
paneItem.disposable.dispose();
|
|
139
|
+
paneItem.pane.dispose();
|
|
137
140
|
});
|
|
138
141
|
this.paneItems = [];
|
|
142
|
+
this.splitview.dispose();
|
|
139
143
|
this.element.remove();
|
|
140
144
|
}
|
|
141
145
|
}
|
|
@@ -41,7 +41,7 @@ export declare class PaneFramework extends DraggablePaneviewPanel {
|
|
|
41
41
|
getBodyComponent(): IPaneBodyPart;
|
|
42
42
|
getHeaderComponent(): IPaneHeaderPart;
|
|
43
43
|
}
|
|
44
|
-
export interface
|
|
44
|
+
export interface AddPaneviewComponentOptions {
|
|
45
45
|
id: string;
|
|
46
46
|
component: string;
|
|
47
47
|
headerComponent?: string;
|
|
@@ -64,10 +64,11 @@ export interface IPaneviewComponent extends IDisposable {
|
|
|
64
64
|
readonly onDidRemoveView: Event<PaneviewPanel>;
|
|
65
65
|
readonly onDidDrop: Event<PaneviewDropEvent2>;
|
|
66
66
|
readonly onDidLayoutChange: Event<void>;
|
|
67
|
-
|
|
67
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
68
|
+
addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
|
|
68
69
|
layout(width: number, height: number): void;
|
|
69
70
|
toJSON(): SerializedPaneview;
|
|
70
|
-
fromJSON(serializedPaneview: SerializedPaneview
|
|
71
|
+
fromJSON(serializedPaneview: SerializedPaneview): void;
|
|
71
72
|
resizeToFit(): void;
|
|
72
73
|
focus(): void;
|
|
73
74
|
getPanels(): IPaneviewPanel[];
|
|
@@ -79,7 +80,10 @@ export interface IPaneviewComponent extends IDisposable {
|
|
|
79
80
|
export declare class PaneviewComponent extends CompositeDisposable implements IPaneviewComponent {
|
|
80
81
|
private element;
|
|
81
82
|
private _disposable;
|
|
83
|
+
private _viewDisposables;
|
|
82
84
|
private _paneview;
|
|
85
|
+
private readonly _onDidLayoutfromJSON;
|
|
86
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
83
87
|
private readonly _onDidLayoutChange;
|
|
84
88
|
readonly onDidLayoutChange: Event<void>;
|
|
85
89
|
private readonly _onDidDrop;
|
|
@@ -99,7 +103,7 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
|
|
|
99
103
|
constructor(element: HTMLElement, options: PaneviewComponentOptions);
|
|
100
104
|
focus(): void;
|
|
101
105
|
updateOptions(options: Partial<PaneviewComponentOptions>): void;
|
|
102
|
-
addPanel(options:
|
|
106
|
+
addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
|
|
103
107
|
getPanels(): PaneviewPanel[];
|
|
104
108
|
removePanel(panel: PaneviewPanel): void;
|
|
105
109
|
movePanel(from: number, to: number): void;
|
|
@@ -110,5 +114,8 @@ export declare class PaneviewComponent extends CompositeDisposable implements IP
|
|
|
110
114
|
*/
|
|
111
115
|
resizeToFit(): void;
|
|
112
116
|
toJSON(): SerializedPaneview;
|
|
113
|
-
fromJSON(serializedPaneview: SerializedPaneview
|
|
117
|
+
fromJSON(serializedPaneview: SerializedPaneview): void;
|
|
118
|
+
private doAddPanel;
|
|
119
|
+
private doRemovePanel;
|
|
120
|
+
dispose(): void;
|
|
114
121
|
}
|