dockview 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +243 -186
- package/dist/cjs/api/component.api.d.ts +32 -17
- package/dist/cjs/api/component.api.js +155 -28
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/api/gridviewPanelApi.js +1 -0
- package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
- package/dist/cjs/api/groupPanelApi.d.ts +11 -14
- package/dist/cjs/api/groupPanelApi.js +19 -17
- package/dist/cjs/api/groupPanelApi.js.map +1 -1
- package/dist/cjs/api/panelApi.d.ts +0 -25
- package/dist/cjs/api/panelApi.js +1 -20
- package/dist/cjs/api/panelApi.js.map +1 -1
- package/dist/cjs/api/paneviewPanelApi.js +1 -0
- package/dist/cjs/api/paneviewPanelApi.js.map +1 -1
- package/dist/cjs/api/splitviewPanelApi.d.ts +0 -1
- package/dist/cjs/api/splitviewPanelApi.js +1 -5
- package/dist/cjs/api/splitviewPanelApi.js.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +3 -3
- package/dist/cjs/dnd/abstractDragHandler.js +15 -14
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/dataTransfer.d.ts +0 -25
- package/dist/cjs/dnd/dataTransfer.js +1 -45
- package/dist/cjs/dnd/dataTransfer.js.map +1 -1
- package/dist/cjs/dnd/dnd.d.ts +1 -14
- package/dist/cjs/dnd/dnd.js +1 -79
- package/dist/cjs/dnd/dnd.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +4 -5
- package/dist/cjs/dnd/droptarget.js +70 -46
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +0 -1
- package/dist/cjs/dockview/components/tab/defaultTab.js +0 -8
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/cjs/dockview/defaultGroupPanelView.js +3 -1
- package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +27 -19
- package/dist/cjs/dockview/dockviewComponent.js +67 -178
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +2 -5
- package/dist/cjs/dockview/dockviewGroupPanel.js +2 -31
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +2 -1
- package/dist/cjs/events.d.ts +7 -0
- package/dist/cjs/events.js +47 -5
- package/dist/cjs/events.js.map +1 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +9 -0
- package/dist/cjs/gridview/baseComponentGridview.js +20 -15
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.d.ts +5 -8
- package/dist/cjs/gridview/basePanelView.js +14 -8
- package/dist/cjs/gridview/basePanelView.js.map +1 -1
- package/dist/cjs/gridview/branchNode.js +1 -1
- package/dist/cjs/gridview/branchNode.js.map +1 -1
- package/dist/cjs/gridview/gridview.js +19 -18
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +4 -0
- package/dist/cjs/gridview/gridviewComponent.js +5 -0
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +0 -1
- package/dist/cjs/gridview/gridviewPanel.js +3 -6
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
- package/dist/cjs/gridview/leafNode.js +1 -0
- package/dist/cjs/gridview/leafNode.js.map +1 -1
- package/dist/cjs/groupview/groupPanel.d.ts +0 -7
- package/dist/cjs/groupview/groupview.d.ts +15 -8
- package/dist/cjs/groupview/groupview.js +38 -125
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/groupviewPanel.d.ts +5 -2
- package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
- package/dist/cjs/groupview/panel/content.js +1 -0
- package/dist/cjs/groupview/panel/content.js.map +1 -1
- package/dist/cjs/groupview/tab.d.ts +10 -13
- package/dist/cjs/groupview/tab.js +22 -80
- package/dist/cjs/groupview/tab.js.map +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.js +6 -8
- package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/lifecycle.js +2 -1
- package/dist/cjs/lifecycle.js.map +1 -1
- package/dist/cjs/panel/types.d.ts +0 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.js +32 -29
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/paneview.d.ts +1 -1
- package/dist/cjs/paneview/paneview.js +2 -5
- package/dist/cjs/paneview/paneview.js.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +6 -5
- package/dist/cjs/paneview/paneviewComponent.js +11 -16
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/paneview/paneviewPanel.d.ts +5 -1
- package/dist/cjs/paneview/paneviewPanel.js +14 -2
- package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
- package/dist/cjs/react/deserializer.js +1 -3
- package/dist/cjs/react/deserializer.js.map +1 -1
- package/dist/cjs/react/dockview/dockview.d.ts +9 -9
- package/dist/cjs/react/dockview/dockview.js +14 -1
- package/dist/cjs/react/dockview/dockview.js.map +1 -1
- package/dist/cjs/react/dockview/reactContentPart.js +4 -4
- package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactHeaderPart.js +1 -0
- package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +1 -2
- package/dist/cjs/react/dockview/reactWatermarkPart.js +1 -2
- package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
- package/dist/cjs/react/gridview/view.js +2 -2
- package/dist/cjs/react/gridview/view.js.map +1 -1
- package/dist/cjs/react/index.d.ts +1 -0
- package/dist/cjs/react/index.js.map +1 -1
- package/dist/cjs/react/react.js +1 -2
- package/dist/cjs/react/react.js.map +1 -1
- package/dist/cjs/react/splitview/view.js +2 -2
- package/dist/cjs/react/splitview/view.js.map +1 -1
- package/dist/cjs/splitview/core/splitview.js +1 -1
- package/dist/cjs/splitview/core/splitview.js.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts +9 -6
- package/dist/cjs/splitview/splitviewComponent.js +11 -1
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewPanel.d.ts +1 -6
- package/dist/cjs/splitview/splitviewPanel.js +5 -3
- package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
- package/dist/dockview.amd.js +480 -567
- package/dist/dockview.amd.min.js +2 -16
- package/dist/dockview.amd.min.noStyle.js +2 -16
- package/dist/dockview.amd.noStyle.js +479 -566
- package/dist/dockview.cjs.js +480 -567
- package/dist/dockview.esm.js +480 -563
- package/dist/dockview.esm.min.js +2 -16
- package/dist/dockview.js +480 -567
- package/dist/dockview.min.js +2 -16
- package/dist/dockview.min.noStyle.js +2 -16
- package/dist/dockview.noStyle.js +479 -566
- package/dist/esm/api/component.api.d.ts +32 -17
- package/dist/esm/api/component.api.js +71 -20
- package/dist/esm/api/gridviewPanelApi.js +1 -0
- package/dist/esm/api/groupPanelApi.d.ts +11 -14
- package/dist/esm/api/groupPanelApi.js +18 -13
- package/dist/esm/api/panelApi.d.ts +0 -25
- package/dist/esm/api/panelApi.js +1 -20
- package/dist/esm/api/paneviewPanelApi.js +1 -0
- package/dist/esm/api/splitviewPanelApi.d.ts +0 -1
- package/dist/esm/api/splitviewPanelApi.js +1 -5
- package/dist/esm/dnd/abstractDragHandler.d.ts +3 -3
- package/dist/esm/dnd/abstractDragHandler.js +9 -8
- package/dist/esm/dnd/dataTransfer.d.ts +0 -25
- package/dist/esm/dnd/dataTransfer.js +0 -40
- package/dist/esm/dnd/dnd.d.ts +1 -14
- package/dist/esm/dnd/dnd.js +1 -69
- package/dist/esm/dnd/droptarget.d.ts +4 -5
- package/dist/esm/dnd/droptarget.js +70 -46
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -1
- package/dist/esm/dockview/components/tab/defaultTab.js +1 -9
- package/dist/esm/dockview/defaultGroupPanelView.js +3 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +27 -19
- package/dist/esm/dockview/dockviewComponent.js +54 -118
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +2 -5
- package/dist/esm/dockview/dockviewGroupPanel.js +2 -30
- package/dist/esm/dockview/options.d.ts +2 -1
- package/dist/esm/events.d.ts +7 -0
- package/dist/esm/events.js +20 -3
- package/dist/esm/gridview/baseComponentGridview.d.ts +9 -0
- package/dist/esm/gridview/baseComponentGridview.js +21 -16
- package/dist/esm/gridview/basePanelView.d.ts +5 -8
- package/dist/esm/gridview/basePanelView.js +10 -8
- package/dist/esm/gridview/branchNode.js +1 -1
- package/dist/esm/gridview/gridview.js +16 -16
- package/dist/esm/gridview/gridviewComponent.d.ts +4 -0
- package/dist/esm/gridview/gridviewComponent.js +5 -0
- package/dist/esm/gridview/gridviewPanel.d.ts +0 -1
- package/dist/esm/gridview/gridviewPanel.js +3 -6
- package/dist/esm/gridview/leafNode.js +1 -0
- package/dist/esm/groupview/groupPanel.d.ts +0 -7
- package/dist/esm/groupview/groupview.d.ts +15 -8
- package/dist/esm/groupview/groupview.js +24 -58
- package/dist/esm/groupview/groupviewPanel.d.ts +5 -2
- package/dist/esm/groupview/panel/content.js +1 -0
- package/dist/esm/groupview/tab.d.ts +10 -13
- package/dist/esm/groupview/tab.js +17 -24
- package/dist/esm/groupview/titlebar/tabsContainer.js +6 -8
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/lifecycle.js +2 -1
- package/dist/esm/panel/types.d.ts +0 -2
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
- package/dist/esm/paneview/draggablePaneviewPanel.js +32 -29
- package/dist/esm/paneview/paneview.d.ts +1 -1
- package/dist/esm/paneview/paneview.js +2 -5
- package/dist/esm/paneview/paneviewComponent.d.ts +6 -5
- package/dist/esm/paneview/paneviewComponent.js +11 -8
- package/dist/esm/paneview/paneviewPanel.d.ts +5 -1
- package/dist/esm/paneview/paneviewPanel.js +10 -2
- package/dist/esm/react/deserializer.js +1 -3
- package/dist/esm/react/dockview/dockview.d.ts +9 -9
- package/dist/esm/react/dockview/dockview.js +15 -2
- package/dist/esm/react/dockview/reactContentPart.js +4 -4
- package/dist/esm/react/dockview/reactHeaderPart.js +1 -0
- package/dist/esm/react/dockview/reactWatermarkPart.d.ts +1 -2
- package/dist/esm/react/dockview/reactWatermarkPart.js +1 -2
- package/dist/esm/react/gridview/view.js +2 -2
- package/dist/esm/react/index.d.ts +1 -0
- package/dist/esm/react/react.js +1 -2
- package/dist/esm/react/splitview/view.js +2 -2
- package/dist/esm/splitview/core/splitview.js +1 -1
- package/dist/esm/splitview/splitviewComponent.d.ts +9 -6
- package/dist/esm/splitview/splitviewComponent.js +10 -2
- package/dist/esm/splitview/splitviewPanel.d.ts +1 -6
- package/dist/esm/splitview/splitviewPanel.js +5 -3
- package/dist/styles/dockview.css +5 -9
- package/package.json +4 -4
- 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
|
@@ -4,21 +4,17 @@ import { PanelApiImpl } from '../api/panelApi';
|
|
|
4
4
|
export interface BasePanelViewState {
|
|
5
5
|
id: string;
|
|
6
6
|
component: string;
|
|
7
|
-
params?:
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
};
|
|
10
|
-
state?: {
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
};
|
|
7
|
+
params?: Record<string, any>;
|
|
13
8
|
}
|
|
14
9
|
export interface BasePanelViewExported<T extends PanelApiImpl> {
|
|
15
10
|
readonly id: string;
|
|
16
11
|
readonly api: T;
|
|
17
12
|
readonly width: number;
|
|
18
13
|
readonly height: number;
|
|
14
|
+
readonly params: Record<string, any> | undefined;
|
|
19
15
|
focus(): void;
|
|
20
16
|
toJSON(): object;
|
|
21
|
-
update(
|
|
17
|
+
update(event: PanelUpdateEvent): void;
|
|
22
18
|
}
|
|
23
19
|
export declare abstract class BasePanelView<T extends PanelApiImpl> extends CompositeDisposable implements IPanel, BasePanelViewExported<T> {
|
|
24
20
|
readonly id: string;
|
|
@@ -28,7 +24,7 @@ export declare abstract class BasePanelView<T extends PanelApiImpl> extends Comp
|
|
|
28
24
|
private _width;
|
|
29
25
|
private _element;
|
|
30
26
|
protected part?: IFrameworkPart;
|
|
31
|
-
protected
|
|
27
|
+
protected _params?: PanelInitParameters;
|
|
32
28
|
/**
|
|
33
29
|
* Provide an IFrameworkPart that will determine the rendered UI of this view piece.
|
|
34
30
|
*/
|
|
@@ -36,6 +32,7 @@ export declare abstract class BasePanelView<T extends PanelApiImpl> extends Comp
|
|
|
36
32
|
get element(): HTMLElement;
|
|
37
33
|
get width(): number;
|
|
38
34
|
get height(): number;
|
|
35
|
+
get params(): Record<string, any> | undefined;
|
|
39
36
|
constructor(id: string, component: string, api: T);
|
|
40
37
|
focus(): void;
|
|
41
38
|
layout(width: number, height: number): void;
|
|
@@ -30,6 +30,10 @@ export class BasePanelView extends CompositeDisposable {
|
|
|
30
30
|
get height() {
|
|
31
31
|
return this._height;
|
|
32
32
|
}
|
|
33
|
+
get params() {
|
|
34
|
+
var _a;
|
|
35
|
+
return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;
|
|
36
|
+
}
|
|
33
37
|
focus() {
|
|
34
38
|
this.api._onFocusEvent.fire();
|
|
35
39
|
}
|
|
@@ -38,29 +42,27 @@ export class BasePanelView extends CompositeDisposable {
|
|
|
38
42
|
this._height = height;
|
|
39
43
|
this.api._onDidPanelDimensionChange.fire({ width, height });
|
|
40
44
|
if (this.part) {
|
|
41
|
-
if (this.
|
|
42
|
-
this.part.update(this.
|
|
45
|
+
if (this._params) {
|
|
46
|
+
this.part.update(this._params.params);
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
init(parameters) {
|
|
47
|
-
this.
|
|
51
|
+
this._params = parameters;
|
|
48
52
|
this.part = this.getComponent();
|
|
49
53
|
}
|
|
50
54
|
update(event) {
|
|
51
55
|
var _a, _b;
|
|
52
|
-
this.
|
|
53
|
-
(_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this.
|
|
56
|
+
this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });
|
|
57
|
+
(_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });
|
|
54
58
|
}
|
|
55
59
|
toJSON() {
|
|
56
60
|
var _a, _b;
|
|
57
|
-
const
|
|
58
|
-
const params = (_b = (_a = this.params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};
|
|
61
|
+
const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};
|
|
59
62
|
return {
|
|
60
63
|
id: this.id,
|
|
61
64
|
component: this.component,
|
|
62
65
|
params: Object.keys(params).length > 0 ? params : undefined,
|
|
63
|
-
state: Object.keys(state).length === 0 ? undefined : state,
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
68
|
dispose() {
|
|
@@ -49,7 +49,7 @@ export class BranchNode extends CompositeDisposable {
|
|
|
49
49
|
proportionalLayout,
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
-
this.addDisposables(this.splitview.onDidSashEnd(() => {
|
|
52
|
+
this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {
|
|
53
53
|
this._onDidChange.fire(undefined);
|
|
54
54
|
}));
|
|
55
55
|
this.setupChildrenEvents();
|
|
@@ -9,6 +9,15 @@ import { LeafNode } from './leafNode';
|
|
|
9
9
|
import { BranchNode } from './branchNode';
|
|
10
10
|
import { Emitter } from '../events';
|
|
11
11
|
import { MutableDisposable } from '../lifecycle';
|
|
12
|
+
function findLeaf(candiateNode, last) {
|
|
13
|
+
if (candiateNode instanceof LeafNode) {
|
|
14
|
+
return candiateNode;
|
|
15
|
+
}
|
|
16
|
+
if (candiateNode instanceof BranchNode) {
|
|
17
|
+
return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);
|
|
18
|
+
}
|
|
19
|
+
throw new Error('invalid node');
|
|
20
|
+
}
|
|
12
21
|
function flipNode(node, size, orthogonalSize) {
|
|
13
22
|
if (node instanceof BranchNode) {
|
|
14
23
|
const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
|
|
@@ -147,13 +156,13 @@ export class Gridview {
|
|
|
147
156
|
}
|
|
148
157
|
deserialize(json, deserializer) {
|
|
149
158
|
const orientation = json.orientation;
|
|
150
|
-
const height = json.height;
|
|
159
|
+
const height = orientation === Orientation.VERTICAL ? json.height : json.width;
|
|
151
160
|
this._deserialize(json.root, orientation, deserializer, height);
|
|
152
161
|
}
|
|
153
162
|
_deserialize(root, orientation, deserializer, orthogonalSize) {
|
|
154
|
-
this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);
|
|
163
|
+
this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize, true);
|
|
155
164
|
}
|
|
156
|
-
_deserializeNode(node, orientation, deserializer, orthogonalSize) {
|
|
165
|
+
_deserializeNode(node, orientation, deserializer, orthogonalSize, isRoot = false) {
|
|
157
166
|
let result;
|
|
158
167
|
if (node.type === 'branch') {
|
|
159
168
|
const serializedChildren = node.data;
|
|
@@ -163,7 +172,9 @@ export class Gridview {
|
|
|
163
172
|
visible: serializedChild.visible,
|
|
164
173
|
};
|
|
165
174
|
});
|
|
166
|
-
|
|
175
|
+
// HORIZONTAL => height=orthogonalsize width=size
|
|
176
|
+
// VERTICAL => height=size width=orthogonalsize
|
|
177
|
+
result = new BranchNode(orientation, this.proportionalLayout, this.styles, isRoot ? orthogonalSize : node.size, isRoot ? node.size : orthogonalSize, children);
|
|
167
178
|
}
|
|
168
179
|
else {
|
|
169
180
|
result = new LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
|
|
@@ -224,15 +235,6 @@ export class Gridview {
|
|
|
224
235
|
if (!(node instanceof LeafNode)) {
|
|
225
236
|
throw new Error('invalid location');
|
|
226
237
|
}
|
|
227
|
-
const findLeaf = (candiateNode, last) => {
|
|
228
|
-
if (candiateNode instanceof LeafNode) {
|
|
229
|
-
return candiateNode;
|
|
230
|
-
}
|
|
231
|
-
if (candiateNode instanceof BranchNode) {
|
|
232
|
-
return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);
|
|
233
|
-
}
|
|
234
|
-
throw new Error('invalid node');
|
|
235
|
-
};
|
|
236
238
|
for (let i = path.length - 1; i > -1; i--) {
|
|
237
239
|
const n = path[i];
|
|
238
240
|
const l = location[i] || 0;
|
|
@@ -329,15 +331,14 @@ export class Gridview {
|
|
|
329
331
|
}
|
|
330
332
|
parent.removeChild(index, sizing);
|
|
331
333
|
if (parent.children.length === 0) {
|
|
332
|
-
// throw new Error('Invalid grid state');
|
|
333
334
|
return node.view;
|
|
334
335
|
}
|
|
335
336
|
if (parent.children.length > 1) {
|
|
336
337
|
return node.view;
|
|
337
338
|
}
|
|
339
|
+
const sibling = parent.children[0];
|
|
338
340
|
if (pathToParent.length === 0) {
|
|
339
341
|
// parent is root
|
|
340
|
-
const sibling = parent.children[0];
|
|
341
342
|
if (sibling instanceof LeafNode) {
|
|
342
343
|
return node.view;
|
|
343
344
|
}
|
|
@@ -348,7 +349,6 @@ export class Gridview {
|
|
|
348
349
|
}
|
|
349
350
|
const [grandParent, ..._] = [...pathToParent].reverse();
|
|
350
351
|
const [parentIndex, ...__] = [...rest].reverse();
|
|
351
|
-
const sibling = parent.children[0];
|
|
352
352
|
const isSiblingVisible = parent.isChildVisible(0);
|
|
353
353
|
parent.removeChild(0, sizing);
|
|
354
354
|
const sizes = grandParent.children.map((size, i) => grandParent.getChildSize(i));
|
|
@@ -7,6 +7,7 @@ import { GridviewPanel, GridviewInitParameters, GridPanelViewState, IGridviewPan
|
|
|
7
7
|
import { BaseComponentOptions } from '../panel/types';
|
|
8
8
|
import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
|
|
9
9
|
import { Orientation, Sizing } from '../splitview/core/splitview';
|
|
10
|
+
import { Event } from '../events';
|
|
10
11
|
interface PanelReference {
|
|
11
12
|
api: GridviewPanelApiImpl;
|
|
12
13
|
}
|
|
@@ -37,6 +38,7 @@ export interface IGridPanelComponentView extends IGridPanelView {
|
|
|
37
38
|
export declare type GridviewComponentUpdateOptions = Pick<GridviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents'>;
|
|
38
39
|
export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
|
|
39
40
|
readonly orientation: Orientation;
|
|
41
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
40
42
|
updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
|
|
41
43
|
addPanel(options: AddComponentOptions): void;
|
|
42
44
|
removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
|
|
@@ -55,6 +57,8 @@ export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
|
|
|
55
57
|
export declare class GridviewComponent extends BaseGrid<GridviewPanel> implements IGridviewComponent {
|
|
56
58
|
private _options;
|
|
57
59
|
private _deserializer;
|
|
60
|
+
private readonly _onDidLayoutfromJSON;
|
|
61
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
58
62
|
get orientation(): Orientation;
|
|
59
63
|
set orientation(value: Orientation);
|
|
60
64
|
get options(): GridviewComponentOptions;
|
|
@@ -5,6 +5,7 @@ import { CompositeDisposable } from '../lifecycle';
|
|
|
5
5
|
import { BaseGrid, GroupChangeKind, toTarget, } from './baseComponentGridview';
|
|
6
6
|
import { GridviewApi } from '../api/component.api';
|
|
7
7
|
import { createComponent } from '../panel/componentFactory';
|
|
8
|
+
import { Emitter } from '../events';
|
|
8
9
|
export class GridviewComponent extends BaseGrid {
|
|
9
10
|
constructor(element, options) {
|
|
10
11
|
super(element, {
|
|
@@ -12,6 +13,8 @@ export class GridviewComponent extends BaseGrid {
|
|
|
12
13
|
orientation: options.orientation,
|
|
13
14
|
styles: options.styles,
|
|
14
15
|
});
|
|
16
|
+
this._onDidLayoutfromJSON = new Emitter();
|
|
17
|
+
this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
|
|
15
18
|
this._options = options;
|
|
16
19
|
if (!this.options.components) {
|
|
17
20
|
this.options.components = {};
|
|
@@ -120,6 +123,7 @@ export class GridviewComponent extends BaseGrid {
|
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
125
|
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
|
|
126
|
+
this._onDidLayoutfromJSON.fire();
|
|
123
127
|
}
|
|
124
128
|
movePanel(panel, options) {
|
|
125
129
|
var _a;
|
|
@@ -234,5 +238,6 @@ export class GridviewComponent extends BaseGrid {
|
|
|
234
238
|
}
|
|
235
239
|
dispose() {
|
|
236
240
|
super.dispose();
|
|
241
|
+
this._onDidLayoutfromJSON.dispose();
|
|
237
242
|
}
|
|
238
243
|
}
|
|
@@ -50,7 +50,6 @@ export declare abstract class GridviewPanel extends BasePanelView<GridviewPanelA
|
|
|
50
50
|
init(parameters: GridviewInitParameters): void;
|
|
51
51
|
private updateConstraints;
|
|
52
52
|
toJSON(): GridPanelViewState;
|
|
53
|
-
dispose(): void;
|
|
54
53
|
}
|
|
55
54
|
export interface GridPanelViewState extends BasePanelViewState {
|
|
56
55
|
minimumHeight?: number;
|
|
@@ -15,12 +15,12 @@ export class GridviewPanel extends BasePanelView {
|
|
|
15
15
|
this._snap = false;
|
|
16
16
|
this._onDidChange = new Emitter();
|
|
17
17
|
this.onDidChange = this._onDidChange.event;
|
|
18
|
-
this.addDisposables(this.api.onVisibilityChange((event) => {
|
|
18
|
+
this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
|
|
19
19
|
const { isVisible } = event;
|
|
20
|
-
const { containerApi } = this.
|
|
20
|
+
const { containerApi } = this._params;
|
|
21
21
|
containerApi.setVisible(this, isVisible);
|
|
22
22
|
}), this.api.onActiveChange(() => {
|
|
23
|
-
const { containerApi } = this.
|
|
23
|
+
const { containerApi } = this._params;
|
|
24
24
|
containerApi.setActive(this);
|
|
25
25
|
}), this.api.onDidConstraintsChangeInternal((event) => {
|
|
26
26
|
if (typeof event.minimumWidth === 'number' ||
|
|
@@ -135,7 +135,4 @@ export class GridviewPanel extends BasePanelView {
|
|
|
135
135
|
const minimum = (value) => (value <= 0 ? undefined : value);
|
|
136
136
|
return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });
|
|
137
137
|
}
|
|
138
|
-
dispose() {
|
|
139
|
-
super.dispose();
|
|
140
|
-
}
|
|
141
138
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DockviewPanelApi } from '../api/groupPanelApi';
|
|
2
|
-
import { Event } from '../events';
|
|
3
2
|
import { IDisposable } from '../lifecycle';
|
|
4
3
|
import { HeaderPartInitParameters } from './types';
|
|
5
4
|
import { IPanel, PanelInitParameters, PanelUpdateEvent, Parameters } from '../panel/types';
|
|
@@ -20,10 +19,7 @@ export interface IGroupPanel extends IDisposable, IPanel {
|
|
|
20
19
|
readonly title: string;
|
|
21
20
|
readonly suppressClosable: boolean;
|
|
22
21
|
updateParentGroup(group: GroupviewPanel, isGroupActive: boolean): void;
|
|
23
|
-
setDirty(isDirty: boolean): void;
|
|
24
|
-
close?(): Promise<boolean>;
|
|
25
22
|
init(params: IGroupPanelInitParameters): void;
|
|
26
|
-
onDidStateChange: Event<void>;
|
|
27
23
|
toJSON(): GroupviewPanelState;
|
|
28
24
|
update(event: GroupPanelUpdateEvent): void;
|
|
29
25
|
}
|
|
@@ -35,7 +31,4 @@ export interface GroupviewPanelState {
|
|
|
35
31
|
[key: string]: any;
|
|
36
32
|
};
|
|
37
33
|
suppressClosable?: boolean;
|
|
38
|
-
state?: {
|
|
39
|
-
[key: string]: any;
|
|
40
|
-
};
|
|
41
34
|
}
|
|
@@ -11,8 +11,7 @@ import { DockviewDropTargets } from './dnd';
|
|
|
11
11
|
export declare enum GroupChangeKind2 {
|
|
12
12
|
ADD_PANEL = "ADD_PANEL",
|
|
13
13
|
REMOVE_PANEL = "REMOVE_PANEL",
|
|
14
|
-
PANEL_ACTIVE = "PANEL_ACTIVE"
|
|
15
|
-
GROUP_ACTIVE = "GROUP_ACTIVE"
|
|
14
|
+
PANEL_ACTIVE = "PANEL_ACTIVE"
|
|
16
15
|
}
|
|
17
16
|
export interface DndService {
|
|
18
17
|
canDisplayOverlay(group: IGroupview, event: DragEvent, target: DockviewDropTargets): boolean;
|
|
@@ -48,20 +47,26 @@ export interface GroupPanelViewState {
|
|
|
48
47
|
activeView?: string;
|
|
49
48
|
id: string;
|
|
50
49
|
}
|
|
50
|
+
export interface GroupviewDropEvent {
|
|
51
|
+
nativeEvent: DragEvent;
|
|
52
|
+
position: Position;
|
|
53
|
+
index?: number;
|
|
54
|
+
}
|
|
51
55
|
export interface IGroupview extends IDisposable, IGridPanelView {
|
|
52
56
|
readonly isActive: boolean;
|
|
53
57
|
readonly size: number;
|
|
54
58
|
readonly panels: IGroupPanel[];
|
|
55
59
|
readonly tabHeight: number | undefined;
|
|
60
|
+
readonly activePanel: IGroupPanel | undefined;
|
|
61
|
+
readonly onDidDrop: Event<GroupviewDropEvent>;
|
|
56
62
|
isPanelActive: (panel: IGroupPanel) => boolean;
|
|
57
|
-
activePanel: IGroupPanel | undefined;
|
|
58
63
|
indexOf(panel: IGroupPanel): number;
|
|
59
64
|
openPanel(panel: IGroupPanel, options?: {
|
|
60
65
|
index?: number;
|
|
61
66
|
skipFocus?: boolean;
|
|
62
67
|
}): void;
|
|
63
|
-
closePanel(panel: IGroupPanel):
|
|
64
|
-
closeAllPanels():
|
|
68
|
+
closePanel(panel: IGroupPanel): void;
|
|
69
|
+
closeAllPanels(): void;
|
|
65
70
|
containsPanel(panel: IGroupPanel): boolean;
|
|
66
71
|
removePanel: (panelOrId: IGroupPanel | string) => IGroupPanel;
|
|
67
72
|
onDidGroupChange: Event<GroupviewChangeEvent>;
|
|
@@ -100,6 +105,8 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
100
105
|
readonly onMove: Event<GroupMoveEvent>;
|
|
101
106
|
private readonly _onDidGroupChange;
|
|
102
107
|
readonly onDidGroupChange: Event<GroupviewChangeEvent>;
|
|
108
|
+
private readonly _onDidDrop;
|
|
109
|
+
readonly onDidDrop: Event<GroupviewDropEvent>;
|
|
103
110
|
get element(): HTMLElement;
|
|
104
111
|
get activePanel(): IGroupPanel | undefined;
|
|
105
112
|
get tabHeight(): number | undefined;
|
|
@@ -134,8 +141,8 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
134
141
|
skipFocus?: boolean;
|
|
135
142
|
}): void;
|
|
136
143
|
removePanel(groupItemOrId: IGroupPanel | string): IGroupPanel;
|
|
137
|
-
closeAllPanels():
|
|
138
|
-
closePanel
|
|
144
|
+
closeAllPanels(): void;
|
|
145
|
+
closePanel(panel: IGroupPanel): void;
|
|
139
146
|
private doClose;
|
|
140
147
|
isPanelActive(panel: IGroupPanel): boolean;
|
|
141
148
|
updateActions(): void;
|
|
@@ -147,7 +154,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
147
154
|
private doSetActivePanel;
|
|
148
155
|
private updateMru;
|
|
149
156
|
private updateContainer;
|
|
150
|
-
canDisplayOverlay(
|
|
157
|
+
canDisplayOverlay(event: DragEvent, target: DockviewDropTargets): boolean;
|
|
151
158
|
private handleDropEvent;
|
|
152
159
|
dispose(): void;
|
|
153
160
|
}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { DockviewApi } from '../api/component.api';
|
|
11
2
|
import { getPanelData } from '../dnd/dataTransfer';
|
|
12
3
|
import { Droptarget, Position } from '../dnd/droptarget';
|
|
@@ -21,7 +12,6 @@ export var GroupChangeKind2;
|
|
|
21
12
|
GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
|
|
22
13
|
GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
|
|
23
14
|
GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
|
|
24
|
-
GroupChangeKind2["GROUP_ACTIVE"] = "GROUP_ACTIVE";
|
|
25
15
|
})(GroupChangeKind2 || (GroupChangeKind2 = {}));
|
|
26
16
|
export class Groupview extends CompositeDisposable {
|
|
27
17
|
constructor(container, accessor, id, options, parent) {
|
|
@@ -42,15 +32,10 @@ export class Groupview extends CompositeDisposable {
|
|
|
42
32
|
this.onMove = this._onMove.event;
|
|
43
33
|
this._onDidGroupChange = new Emitter();
|
|
44
34
|
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
45
|
-
this.
|
|
46
|
-
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
this.doClose(panel);
|
|
50
|
-
return true;
|
|
51
|
-
});
|
|
35
|
+
this._onDidDrop = new Emitter();
|
|
36
|
+
this.onDidDrop = this._onDidDrop.event;
|
|
52
37
|
this.container.classList.add('groupview');
|
|
53
|
-
this.addDisposables(this._onMove, this._onDidGroupChange);
|
|
38
|
+
this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
|
|
54
39
|
this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
|
|
55
40
|
tabHeight: options.tabHeight,
|
|
56
41
|
});
|
|
@@ -72,9 +57,9 @@ export class Groupview extends CompositeDisposable {
|
|
|
72
57
|
}), this.contentContainer.onDidFocus(() => {
|
|
73
58
|
this.accessor.doSetGroupActive(this.parent, true);
|
|
74
59
|
}), this.contentContainer.onDidBlur(() => {
|
|
75
|
-
//
|
|
60
|
+
// noop
|
|
76
61
|
}), this.dropTarget.onDrop((event) => {
|
|
77
|
-
this.handleDropEvent(event.
|
|
62
|
+
this.handleDropEvent(event.nativeEvent, event.position);
|
|
78
63
|
}));
|
|
79
64
|
}
|
|
80
65
|
get element() {
|
|
@@ -207,6 +192,8 @@ export class Groupview extends CompositeDisposable {
|
|
|
207
192
|
options.index > this.panels.length) {
|
|
208
193
|
options.index = this.panels.length;
|
|
209
194
|
}
|
|
195
|
+
// ensure the group is updated before we fire any events
|
|
196
|
+
panel.updateParentGroup(this.parent, true);
|
|
210
197
|
if (this._activePanel === panel) {
|
|
211
198
|
this.accessor.doSetGroupActive(this.parent);
|
|
212
199
|
return;
|
|
@@ -227,43 +214,19 @@ export class Groupview extends CompositeDisposable {
|
|
|
227
214
|
return this._removePanel(panelToRemove);
|
|
228
215
|
}
|
|
229
216
|
closeAllPanels() {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
if (this._activePanel && index > -1) {
|
|
236
|
-
if (this.panels.indexOf(this._activePanel) < 0) {
|
|
237
|
-
console.warn('active panel not tracked');
|
|
238
|
-
}
|
|
239
|
-
const canClose = !((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.close) || (yield this._activePanel.close());
|
|
240
|
-
if (!canClose) {
|
|
241
|
-
return false;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
for (let i = 0; i < this.panels.length; i++) {
|
|
245
|
-
if (i === index) {
|
|
246
|
-
continue;
|
|
247
|
-
}
|
|
248
|
-
const panel = this.panels[i];
|
|
249
|
-
this.openPanel(panel);
|
|
250
|
-
if (panel.close) {
|
|
251
|
-
const canClose = yield panel.close();
|
|
252
|
-
if (!canClose) {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
217
|
+
if (this.panels.length > 0) {
|
|
218
|
+
// take a copy since we will be edting the array as we iterate through
|
|
219
|
+
const arrPanelCpy = [...this.panels];
|
|
220
|
+
for (const panel of arrPanelCpy) {
|
|
221
|
+
this.doClose(panel);
|
|
256
222
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
return true;
|
|
266
|
-
});
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
this.accessor.removeGroup(this.parent);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
closePanel(panel) {
|
|
229
|
+
this.doClose(panel);
|
|
267
230
|
}
|
|
268
231
|
doClose(panel) {
|
|
269
232
|
this.accessor.removePanel(panel);
|
|
@@ -406,8 +369,11 @@ export class Groupview extends CompositeDisposable {
|
|
|
406
369
|
this.tabsContainer.show();
|
|
407
370
|
}
|
|
408
371
|
}
|
|
409
|
-
canDisplayOverlay(
|
|
372
|
+
canDisplayOverlay(event, target) {
|
|
410
373
|
// custom overlay handler
|
|
374
|
+
if (this.accessor.options.showDndOverlay) {
|
|
375
|
+
return this.accessor.options.showDndOverlay(event, target);
|
|
376
|
+
}
|
|
411
377
|
return false;
|
|
412
378
|
}
|
|
413
379
|
handleDropEvent(event, position, index) {
|
|
@@ -433,7 +399,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
433
399
|
});
|
|
434
400
|
}
|
|
435
401
|
else {
|
|
436
|
-
|
|
402
|
+
this._onDidDrop.fire({ nativeEvent: event, position, index });
|
|
437
403
|
}
|
|
438
404
|
}
|
|
439
405
|
dispose() {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { IFrameworkPart } from '../panel/types';
|
|
2
2
|
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
|
3
3
|
import { Groupview, GroupOptions } from './groupview';
|
|
4
|
-
import { GridviewPanel } from '../gridview/gridviewPanel';
|
|
5
|
-
export
|
|
4
|
+
import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
|
|
5
|
+
export interface IGroupviewPanel extends IGridviewPanel {
|
|
6
|
+
model: Groupview;
|
|
7
|
+
}
|
|
8
|
+
export declare class GroupviewPanel extends GridviewPanel implements IGroupviewPanel {
|
|
6
9
|
private readonly _model;
|
|
7
10
|
get model(): Groupview;
|
|
8
11
|
get minimumHeight(): number;
|
|
@@ -12,6 +12,7 @@ export class ContentContainer extends CompositeDisposable {
|
|
|
12
12
|
this._element = document.createElement('div');
|
|
13
13
|
this._element.className = 'content-container';
|
|
14
14
|
this._element.tabIndex = -1;
|
|
15
|
+
this.addDisposables(this._onDidFocus, this._onDidBlur);
|
|
15
16
|
// for hosted containers
|
|
16
17
|
// 1) register a drop target on the host
|
|
17
18
|
// 2) register window dragStart events to disable pointer events
|
|
@@ -10,33 +10,30 @@ export declare enum MouseEventKind {
|
|
|
10
10
|
CONTEXT_MENU = "CONTEXT_MENU"
|
|
11
11
|
}
|
|
12
12
|
export interface LayoutMouseEvent {
|
|
13
|
-
kind: MouseEventKind;
|
|
14
|
-
event: MouseEvent;
|
|
15
|
-
panel?: IGroupPanel;
|
|
16
|
-
tab?: boolean;
|
|
13
|
+
readonly kind: MouseEventKind;
|
|
14
|
+
readonly event: MouseEvent;
|
|
15
|
+
readonly panel?: IGroupPanel;
|
|
16
|
+
readonly tab?: boolean;
|
|
17
17
|
}
|
|
18
18
|
export interface ITab {
|
|
19
|
-
panelId: string;
|
|
20
|
-
element: HTMLElement;
|
|
19
|
+
readonly panelId: string;
|
|
20
|
+
readonly element: HTMLElement;
|
|
21
21
|
setContent: (element: ITabRenderer) => void;
|
|
22
22
|
onChanged: Event<LayoutMouseEvent>;
|
|
23
23
|
onDrop: Event<DroptargetEvent>;
|
|
24
24
|
setActive(isActive: boolean): void;
|
|
25
25
|
}
|
|
26
26
|
export declare class Tab extends CompositeDisposable implements ITab {
|
|
27
|
-
panelId: string;
|
|
28
|
-
private readonly
|
|
29
|
-
private
|
|
30
|
-
private
|
|
31
|
-
private droptarget;
|
|
27
|
+
readonly panelId: string;
|
|
28
|
+
private readonly group;
|
|
29
|
+
private readonly _element;
|
|
30
|
+
private readonly droptarget;
|
|
32
31
|
private content?;
|
|
33
32
|
private readonly _onChanged;
|
|
34
33
|
readonly onChanged: Event<LayoutMouseEvent>;
|
|
35
34
|
private readonly _onDropped;
|
|
36
35
|
readonly onDrop: Event<DroptargetEvent>;
|
|
37
|
-
private readonly panelTransfer;
|
|
38
36
|
get element(): HTMLElement;
|
|
39
|
-
private iframes;
|
|
40
37
|
constructor(panelId: string, accessor: IDockviewComponent, group: GroupviewPanel);
|
|
41
38
|
setActive(isActive: boolean): void;
|
|
42
39
|
setContent(part: ITabRenderer): void;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { addDisposableListener, Emitter } from '../events';
|
|
2
2
|
import { CompositeDisposable } from '../lifecycle';
|
|
3
3
|
import { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../dnd/dataTransfer';
|
|
4
|
-
import {
|
|
4
|
+
import { toggleClass } from '../dom';
|
|
5
5
|
import { Droptarget } from '../dnd/droptarget';
|
|
6
6
|
import { DockviewDropTargets } from './dnd';
|
|
7
|
+
import { DragHandler } from '../dnd/abstractDragHandler';
|
|
7
8
|
export var MouseEventKind;
|
|
8
9
|
(function (MouseEventKind) {
|
|
9
10
|
MouseEventKind["CLICK"] = "CLICK";
|
|
@@ -13,42 +14,34 @@ export class Tab extends CompositeDisposable {
|
|
|
13
14
|
constructor(panelId, accessor, group) {
|
|
14
15
|
super();
|
|
15
16
|
this.panelId = panelId;
|
|
16
|
-
this.accessor = accessor;
|
|
17
17
|
this.group = group;
|
|
18
18
|
this._onChanged = new Emitter();
|
|
19
19
|
this.onChanged = this._onChanged.event;
|
|
20
20
|
this._onDropped = new Emitter();
|
|
21
21
|
this.onDrop = this._onDropped.event;
|
|
22
|
-
this.panelTransfer = LocalSelectionTransfer.getInstance();
|
|
23
|
-
this.iframes = [];
|
|
24
22
|
this.addDisposables(this._onChanged, this._onDropped);
|
|
25
23
|
this._element = document.createElement('div');
|
|
26
24
|
this._element.className = 'tab';
|
|
27
25
|
this._element.tabIndex = 0;
|
|
28
26
|
this._element.draggable = true;
|
|
29
|
-
this.addDisposables(
|
|
30
|
-
|
|
31
|
-
...
|
|
32
|
-
|
|
33
|
-
];
|
|
34
|
-
for (const iframe of this.iframes) {
|
|
35
|
-
iframe.style.pointerEvents = 'none';
|
|
27
|
+
this.addDisposables(new (class Handler extends DragHandler {
|
|
28
|
+
constructor() {
|
|
29
|
+
super(...arguments);
|
|
30
|
+
this.panelTransfer = LocalSelectionTransfer.getInstance();
|
|
36
31
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
getData() {
|
|
33
|
+
this.panelTransfer.setData([new PanelTransfer(accessor.id, group.id, panelId)], PanelTransfer.prototype);
|
|
34
|
+
return {
|
|
35
|
+
dispose: () => {
|
|
36
|
+
this.panelTransfer.clearData(PanelTransfer.prototype);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
44
39
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
iframe.style.pointerEvents = 'auto';
|
|
40
|
+
dispose() {
|
|
41
|
+
//
|
|
48
42
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}), addDisposableListener(this._element, 'mousedown', (event) => {
|
|
43
|
+
})(this._element));
|
|
44
|
+
this.addDisposables(addDisposableListener(this._element, 'mousedown', (event) => {
|
|
52
45
|
if (event.defaultPrevented) {
|
|
53
46
|
return;
|
|
54
47
|
}
|