dockview 1.5.2 → 1.6.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/dist/cjs/api/component.api.d.ts +3 -2
- package/dist/cjs/api/component.api.js +9 -2
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/api/{groupPanelApi.d.ts → dockviewPanelApi.d.ts} +2 -2
- package/dist/cjs/api/{groupPanelApi.js → dockviewPanelApi.js} +4 -6
- package/dist/cjs/api/dockviewPanelApi.js.map +1 -0
- package/dist/cjs/api/gridviewPanelApi.d.ts +4 -3
- package/dist/cjs/api/gridviewPanelApi.js +4 -4
- package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
- package/dist/cjs/api/panelApi.d.ts +7 -0
- package/dist/cjs/api/panelApi.js +17 -1
- package/dist/cjs/api/panelApi.js.map +1 -1
- package/dist/cjs/array.d.ts +1 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +2 -2
- package/dist/cjs/dnd/abstractDragHandler.js +3 -3
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/dataTransfer.d.ts +2 -2
- package/dist/cjs/dnd/dataTransfer.js.map +1 -1
- package/dist/cjs/dnd/dnd.d.ts +1 -1
- package/dist/cjs/dnd/dnd.js +7 -12
- package/dist/cjs/dnd/dnd.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +20 -15
- package/dist/cjs/dnd/droptarget.js +152 -74
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dnd/ghost.d.ts +1 -0
- package/dist/cjs/dnd/ghost.js +15 -0
- package/dist/cjs/dnd/ghost.js.map +1 -0
- package/dist/cjs/dnd/groupDragHandler.d.ts +11 -0
- package/dist/cjs/dnd/groupDragHandler.js +62 -0
- package/dist/cjs/dnd/groupDragHandler.js.map +1 -0
- package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -1
- package/dist/cjs/dockview/deserializer.d.ts +2 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +15 -7
- package/dist/cjs/dockview/dockviewComponent.js +215 -34
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/{esm/dockview/dockviewGroupPanel.d.ts → cjs/dockview/dockviewPanel.d.ts} +16 -5
- package/dist/cjs/dockview/{dockviewGroupPanel.js → dockviewPanel.js} +25 -21
- package/dist/cjs/dockview/dockviewPanel.js.map +1 -0
- package/dist/cjs/dockview/options.d.ts +32 -10
- package/dist/cjs/dockview/options.js +29 -0
- package/dist/cjs/dockview/options.js.map +1 -1
- package/dist/cjs/dockview/validation.d.ts +2 -0
- package/dist/cjs/dockview/validation.js +135 -0
- package/dist/cjs/dockview/validation.js.map +1 -0
- package/dist/cjs/gridview/baseComponentGridview.d.ts +1 -1
- package/dist/cjs/gridview/baseComponentGridview.js +5 -6
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.d.ts +2 -2
- package/dist/cjs/gridview/gridview.d.ts +9 -3
- package/dist/cjs/gridview/gridview.js +38 -7
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +2 -2
- package/dist/cjs/gridview/gridviewComponent.js +2 -3
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +3 -3
- package/dist/cjs/gridview/gridviewPanel.js +1 -2
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
- package/dist/cjs/gridview/types.d.ts +1 -1
- package/dist/cjs/groupview/dnd.d.ts +2 -1
- package/dist/cjs/groupview/dnd.js +1 -0
- package/dist/cjs/groupview/dnd.js.map +1 -1
- package/dist/cjs/groupview/groupview.d.ts +6 -6
- package/dist/cjs/groupview/groupview.js +43 -25
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/groupviewPanel.d.ts +3 -3
- package/dist/cjs/groupview/panel/content.d.ts +1 -1
- package/dist/cjs/groupview/tab.d.ts +2 -12
- package/dist/cjs/groupview/tab.js +13 -9
- package/dist/cjs/groupview/tab.js.map +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +5 -8
- package/dist/cjs/groupview/titlebar/tabsContainer.js +23 -30
- package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/groupview/titlebar/voidContainer.d.ts +15 -0
- package/dist/cjs/groupview/titlebar/voidContainer.js +74 -0
- package/dist/cjs/groupview/titlebar/voidContainer.js.map +1 -0
- package/dist/cjs/groupview/types.d.ts +18 -2
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +4 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js +6 -5
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.js +2 -2
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/paneview/paneviewPanel.js +1 -0
- package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
- package/dist/cjs/react/deserializer.d.ts +2 -1
- package/dist/cjs/react/deserializer.js +2 -2
- package/dist/cjs/react/deserializer.js.map +1 -1
- package/dist/cjs/react/dockview/defaultTab.d.ts +1 -1
- package/dist/cjs/react/dockview/dockview.d.ts +5 -4
- package/dist/cjs/react/dockview/dockview.js +1 -0
- package/dist/cjs/react/dockview/dockview.js.map +1 -1
- package/dist/cjs/react/dockview/groupControlsRenderer.d.ts +1 -1
- package/dist/cjs/react/gridview/view.js +2 -1
- package/dist/cjs/react/gridview/view.js.map +1 -1
- package/dist/cjs/react/react.d.ts +1 -1
- package/dist/cjs/splitview/core/splitview.d.ts +4 -4
- package/dist/cjs/splitview/splitviewComponent.d.ts +1 -1
- package/dist/cjs/splitview/splitviewComponent.js +2 -2
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewPanel.js +1 -0
- package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
- package/dist/cjs/types.d.ts +2 -1
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/dockview.amd.js +1411 -987
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.noStyle.js +1410 -986
- package/dist/dockview.cjs.js +1394 -970
- package/dist/dockview.esm.js +1385 -964
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.js +1411 -987
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.noStyle.js +1410 -986
- package/dist/esm/actionbar/actionsContainer.js +3 -3
- package/dist/esm/api/component.api.d.ts +3 -2
- package/dist/esm/api/component.api.js +16 -13
- package/dist/esm/api/{groupPanelApi.d.ts → dockviewPanelApi.d.ts} +2 -2
- package/dist/esm/api/{groupPanelApi.js → dockviewPanelApi.js} +16 -18
- package/dist/esm/api/gridviewPanelApi.d.ts +4 -3
- package/dist/esm/api/gridviewPanelApi.js +4 -4
- package/dist/esm/api/panelApi.d.ts +7 -0
- package/dist/esm/api/panelApi.js +33 -17
- package/dist/esm/api/paneviewPanelApi.js +3 -3
- package/dist/esm/array.d.ts +1 -1
- package/dist/esm/dnd/abstractDragHandler.d.ts +2 -2
- package/dist/esm/dnd/abstractDragHandler.js +3 -3
- package/dist/esm/dnd/dataTransfer.d.ts +2 -2
- package/dist/esm/dnd/dnd.d.ts +1 -1
- package/dist/esm/dnd/dnd.js +7 -12
- package/dist/esm/dnd/droptarget.d.ts +20 -15
- package/dist/esm/dnd/droptarget.js +149 -67
- package/dist/esm/dnd/ghost.d.ts +1 -0
- package/dist/esm/dnd/ghost.js +10 -0
- package/dist/esm/dnd/groupDragHandler.d.ts +11 -0
- package/dist/esm/dnd/groupDragHandler.js +38 -0
- package/dist/esm/dockview/components/tab/defaultTab.js +6 -6
- package/dist/esm/dockview/components/watermark/watermark.js +3 -3
- package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -1
- package/dist/esm/dockview/defaultGroupPanelView.js +5 -5
- package/dist/esm/dockview/deserializer.d.ts +2 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +15 -7
- package/dist/esm/dockview/dockviewComponent.js +229 -65
- package/dist/{cjs/dockview/dockviewGroupPanel.d.ts → esm/dockview/dockviewPanel.d.ts} +16 -5
- package/dist/esm/dockview/{dockviewGroupPanel.js → dockviewPanel.js} +19 -15
- package/dist/esm/dockview/options.d.ts +32 -10
- package/dist/esm/dockview/options.js +24 -1
- package/dist/esm/dockview/validation.d.ts +2 -0
- package/dist/esm/dockview/validation.js +86 -0
- package/dist/esm/gridview/baseComponentGridview.d.ts +1 -1
- package/dist/esm/gridview/baseComponentGridview.js +31 -32
- package/dist/esm/gridview/basePanelView.d.ts +2 -2
- package/dist/esm/gridview/basePanelView.js +13 -13
- package/dist/esm/gridview/branchNode.js +47 -47
- package/dist/esm/gridview/gridview.d.ts +9 -3
- package/dist/esm/gridview/gridview.js +41 -15
- package/dist/esm/gridview/gridviewComponent.d.ts +2 -2
- package/dist/esm/gridview/gridviewComponent.js +17 -18
- package/dist/esm/gridview/gridviewPanel.d.ts +3 -3
- package/dist/esm/gridview/gridviewPanel.js +45 -45
- package/dist/esm/gridview/leafNode.js +23 -23
- package/dist/esm/gridview/types.d.ts +1 -1
- package/dist/esm/groupview/dnd.d.ts +2 -1
- package/dist/esm/groupview/dnd.js +1 -0
- package/dist/esm/groupview/groupview.d.ts +6 -6
- package/dist/esm/groupview/groupview.js +90 -72
- package/dist/esm/groupview/groupviewPanel.d.ts +3 -3
- package/dist/esm/groupview/groupviewPanel.js +4 -4
- package/dist/esm/groupview/panel/content.d.ts +1 -1
- package/dist/esm/groupview/panel/content.js +3 -3
- package/dist/esm/groupview/tab.d.ts +2 -12
- package/dist/esm/groupview/tab.js +15 -11
- package/dist/esm/groupview/titlebar/tabsContainer.d.ts +5 -8
- package/dist/esm/groupview/titlebar/tabsContainer.js +54 -61
- package/dist/esm/groupview/titlebar/voidContainer.d.ts +15 -0
- package/dist/esm/groupview/titlebar/voidContainer.js +47 -0
- package/dist/esm/groupview/types.d.ts +18 -2
- package/dist/esm/hostedContainer.js +3 -3
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.js +2 -2
- package/dist/esm/lifecycle.js +3 -3
- package/dist/esm/paneview/defaultPaneviewHeader.js +3 -3
- package/dist/esm/paneview/draggablePaneviewPanel.js +7 -6
- package/dist/esm/paneview/paneview.js +21 -21
- package/dist/esm/paneview/paneviewComponent.js +30 -30
- package/dist/esm/paneview/paneviewPanel.js +45 -44
- package/dist/esm/react/deserializer.d.ts +2 -1
- package/dist/esm/react/deserializer.js +2 -2
- package/dist/esm/react/dockview/defaultTab.d.ts +1 -1
- package/dist/esm/react/dockview/dockview.d.ts +5 -4
- package/dist/esm/react/dockview/dockview.js +1 -0
- package/dist/esm/react/dockview/groupControlsRenderer.d.ts +1 -1
- package/dist/esm/react/dockview/groupControlsRenderer.js +8 -8
- package/dist/esm/react/dockview/reactContentPart.js +3 -3
- package/dist/esm/react/dockview/reactHeaderPart.js +3 -3
- package/dist/esm/react/dockview/reactWatermarkPart.js +3 -3
- package/dist/esm/react/dockview/v2/reactContentRenderer.js +9 -9
- package/dist/esm/react/dockview/v2/webviewContentRenderer.js +3 -3
- package/dist/esm/react/gridview/view.js +2 -1
- package/dist/esm/react/paneview/view.js +3 -3
- package/dist/esm/react/react.d.ts +1 -1
- package/dist/esm/splitview/core/splitview.d.ts +4 -4
- package/dist/esm/splitview/core/splitview.js +59 -59
- package/dist/esm/splitview/core/viewItem.js +15 -15
- package/dist/esm/splitview/splitviewComponent.d.ts +1 -1
- package/dist/esm/splitview/splitviewComponent.js +23 -23
- package/dist/esm/splitview/splitviewPanel.js +31 -30
- package/dist/esm/types.d.ts +2 -1
- package/dist/esm/types.js +3 -1
- package/dist/styles/dockview.css +23 -26
- package/package.json +12 -16
- package/dist/cjs/api/groupPanelApi.js.map +0 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +0 -1
- package/dist/cjs/groupview/groupPanel.d.ts +0 -32
- package/dist/cjs/groupview/groupPanel.js +0 -3
- package/dist/cjs/groupview/groupPanel.js.map +0 -1
- package/dist/esm/groupview/groupPanel.d.ts +0 -32
- package/dist/esm/groupview/groupPanel.js +0 -1
|
@@ -1,51 +1,6 @@
|
|
|
1
1
|
import { BasePanelView, } from './basePanelView';
|
|
2
|
-
import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
|
|
3
2
|
import { Emitter } from '../events';
|
|
4
3
|
export class GridviewPanel extends BasePanelView {
|
|
5
|
-
constructor(id, component, api = new GridviewPanelApiImpl(id)) {
|
|
6
|
-
super(id, component, api);
|
|
7
|
-
this._evaluatedMinimumWidth = 0;
|
|
8
|
-
this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;
|
|
9
|
-
this._evaluatedMinimumHeight = 0;
|
|
10
|
-
this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;
|
|
11
|
-
this._minimumWidth = 0;
|
|
12
|
-
this._minimumHeight = 0;
|
|
13
|
-
this._maximumWidth = Number.MAX_SAFE_INTEGER;
|
|
14
|
-
this._maximumHeight = Number.MAX_SAFE_INTEGER;
|
|
15
|
-
this._snap = false;
|
|
16
|
-
this._onDidChange = new Emitter();
|
|
17
|
-
this.onDidChange = this._onDidChange.event;
|
|
18
|
-
this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
|
|
19
|
-
const { isVisible } = event;
|
|
20
|
-
const { accessor } = this._params;
|
|
21
|
-
accessor.setVisible(this, isVisible);
|
|
22
|
-
}), this.api.onActiveChange(() => {
|
|
23
|
-
const { accessor } = this._params;
|
|
24
|
-
accessor.setActive(this);
|
|
25
|
-
}), this.api.onDidConstraintsChangeInternal((event) => {
|
|
26
|
-
if (typeof event.minimumWidth === 'number' ||
|
|
27
|
-
typeof event.minimumWidth === 'function') {
|
|
28
|
-
this._minimumWidth = event.minimumWidth;
|
|
29
|
-
}
|
|
30
|
-
if (typeof event.minimumHeight === 'number' ||
|
|
31
|
-
typeof event.minimumHeight === 'function') {
|
|
32
|
-
this._minimumHeight = event.minimumHeight;
|
|
33
|
-
}
|
|
34
|
-
if (typeof event.maximumWidth === 'number' ||
|
|
35
|
-
typeof event.maximumWidth === 'function') {
|
|
36
|
-
this._maximumWidth = event.maximumWidth;
|
|
37
|
-
}
|
|
38
|
-
if (typeof event.maximumHeight === 'number' ||
|
|
39
|
-
typeof event.maximumHeight === 'function') {
|
|
40
|
-
this._maximumHeight = event.maximumHeight;
|
|
41
|
-
}
|
|
42
|
-
}), this.api.onDidSizeChange((event) => {
|
|
43
|
-
this._onDidChange.fire({
|
|
44
|
-
height: event.height,
|
|
45
|
-
width: event.width,
|
|
46
|
-
});
|
|
47
|
-
}));
|
|
48
|
-
}
|
|
49
4
|
get priority() {
|
|
50
5
|
return this._priority;
|
|
51
6
|
}
|
|
@@ -95,6 +50,51 @@ export class GridviewPanel extends BasePanelView {
|
|
|
95
50
|
get isActive() {
|
|
96
51
|
return this.api.isActive;
|
|
97
52
|
}
|
|
53
|
+
constructor(id, component, api) {
|
|
54
|
+
super(id, component, api);
|
|
55
|
+
this._evaluatedMinimumWidth = 0;
|
|
56
|
+
this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;
|
|
57
|
+
this._evaluatedMinimumHeight = 0;
|
|
58
|
+
this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;
|
|
59
|
+
this._minimumWidth = 0;
|
|
60
|
+
this._minimumHeight = 0;
|
|
61
|
+
this._maximumWidth = Number.MAX_SAFE_INTEGER;
|
|
62
|
+
this._maximumHeight = Number.MAX_SAFE_INTEGER;
|
|
63
|
+
this._snap = false;
|
|
64
|
+
this._onDidChange = new Emitter();
|
|
65
|
+
this.onDidChange = this._onDidChange.event;
|
|
66
|
+
this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
|
|
67
|
+
this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
|
|
68
|
+
const { isVisible } = event;
|
|
69
|
+
const { accessor } = this._params;
|
|
70
|
+
accessor.setVisible(this, isVisible);
|
|
71
|
+
}), this.api.onActiveChange(() => {
|
|
72
|
+
const { accessor } = this._params;
|
|
73
|
+
accessor.setActive(this);
|
|
74
|
+
}), this.api.onDidConstraintsChangeInternal((event) => {
|
|
75
|
+
if (typeof event.minimumWidth === 'number' ||
|
|
76
|
+
typeof event.minimumWidth === 'function') {
|
|
77
|
+
this._minimumWidth = event.minimumWidth;
|
|
78
|
+
}
|
|
79
|
+
if (typeof event.minimumHeight === 'number' ||
|
|
80
|
+
typeof event.minimumHeight === 'function') {
|
|
81
|
+
this._minimumHeight = event.minimumHeight;
|
|
82
|
+
}
|
|
83
|
+
if (typeof event.maximumWidth === 'number' ||
|
|
84
|
+
typeof event.maximumWidth === 'function') {
|
|
85
|
+
this._maximumWidth = event.maximumWidth;
|
|
86
|
+
}
|
|
87
|
+
if (typeof event.maximumHeight === 'number' ||
|
|
88
|
+
typeof event.maximumHeight === 'function') {
|
|
89
|
+
this._maximumHeight = event.maximumHeight;
|
|
90
|
+
}
|
|
91
|
+
}), this.api.onDidSizeChange((event) => {
|
|
92
|
+
this._onDidChange.fire({
|
|
93
|
+
height: event.height,
|
|
94
|
+
width: event.width,
|
|
95
|
+
});
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
98
|
setVisible(isVisible) {
|
|
99
99
|
this.api._onDidVisibilityChange.fire({ isVisible });
|
|
100
100
|
}
|
|
@@ -5,29 +5,6 @@
|
|
|
5
5
|
import { Orientation, } from '../splitview/core/splitview';
|
|
6
6
|
import { Emitter } from '../events';
|
|
7
7
|
export class LeafNode {
|
|
8
|
-
constructor(view, orientation, orthogonalSize, size = 0) {
|
|
9
|
-
this.view = view;
|
|
10
|
-
this.orientation = orientation;
|
|
11
|
-
this._onDidChange = new Emitter();
|
|
12
|
-
this.onDidChange = this._onDidChange.event;
|
|
13
|
-
this._orthogonalSize = orthogonalSize;
|
|
14
|
-
this._size = size;
|
|
15
|
-
this._disposable = this.view.onDidChange((event) => {
|
|
16
|
-
if (event) {
|
|
17
|
-
this._onDidChange.fire({
|
|
18
|
-
size: this.orientation === Orientation.VERTICAL
|
|
19
|
-
? event.width
|
|
20
|
-
: event.height,
|
|
21
|
-
orthogonalSize: this.orientation === Orientation.VERTICAL
|
|
22
|
-
? event.height
|
|
23
|
-
: event.width,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
this._onDidChange.fire({});
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
8
|
get minimumWidth() {
|
|
32
9
|
return this.view.minimumWidth;
|
|
33
10
|
}
|
|
@@ -85,6 +62,29 @@ export class LeafNode {
|
|
|
85
62
|
? this.size
|
|
86
63
|
: this.orthogonalSize;
|
|
87
64
|
}
|
|
65
|
+
constructor(view, orientation, orthogonalSize, size = 0) {
|
|
66
|
+
this.view = view;
|
|
67
|
+
this.orientation = orientation;
|
|
68
|
+
this._onDidChange = new Emitter();
|
|
69
|
+
this.onDidChange = this._onDidChange.event;
|
|
70
|
+
this._orthogonalSize = orthogonalSize;
|
|
71
|
+
this._size = size;
|
|
72
|
+
this._disposable = this.view.onDidChange((event) => {
|
|
73
|
+
if (event) {
|
|
74
|
+
this._onDidChange.fire({
|
|
75
|
+
size: this.orientation === Orientation.VERTICAL
|
|
76
|
+
? event.width
|
|
77
|
+
: event.height,
|
|
78
|
+
orthogonalSize: this.orientation === Orientation.VERTICAL
|
|
79
|
+
? event.height
|
|
80
|
+
: event.width,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this._onDidChange.fire({});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
88
|
setVisible(visible) {
|
|
89
89
|
if (this.view.setVisible) {
|
|
90
90
|
this.view.setVisible(visible);
|
|
@@ -3,4 +3,5 @@ export var DockviewDropTargets;
|
|
|
3
3
|
DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
|
|
4
4
|
DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
|
|
5
5
|
DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
|
|
6
|
+
DockviewDropTargets[DockviewDropTargets["Edge"] = 3] = "Edge";
|
|
6
7
|
})(DockviewDropTargets || (DockviewDropTargets = {}));
|
|
@@ -6,9 +6,9 @@ import { IGridPanelView } from '../gridview/baseComponentGridview';
|
|
|
6
6
|
import { IViewSize } from '../gridview/gridview';
|
|
7
7
|
import { CompositeDisposable, IDisposable } from '../lifecycle';
|
|
8
8
|
import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
|
9
|
-
import { IDockviewPanel } from './groupPanel';
|
|
10
9
|
import { GroupPanel } from './groupviewPanel';
|
|
11
10
|
import { DockviewDropTargets } from './dnd';
|
|
11
|
+
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
|
12
12
|
export interface DndService {
|
|
13
13
|
canDisplayOverlay(group: IGroupview, event: DragEvent, target: DockviewDropTargets): boolean;
|
|
14
14
|
onDrop(group: IGroupview, event: DragEvent, position: Position, index?: number): void;
|
|
@@ -24,7 +24,7 @@ export interface IGroupItem {
|
|
|
24
24
|
}
|
|
25
25
|
interface GroupMoveEvent {
|
|
26
26
|
groupId: string;
|
|
27
|
-
itemId
|
|
27
|
+
itemId?: string;
|
|
28
28
|
target: Position;
|
|
29
29
|
index?: number;
|
|
30
30
|
}
|
|
@@ -87,14 +87,14 @@ export interface IGroupview extends IDisposable, IGridPanelView {
|
|
|
87
87
|
panel?: IDockviewPanel;
|
|
88
88
|
suppressRoll?: boolean;
|
|
89
89
|
}): void;
|
|
90
|
-
canDisplayOverlay(event: DragEvent, target: DockviewDropTargets): boolean;
|
|
90
|
+
canDisplayOverlay(event: DragEvent, position: Position, target: DockviewDropTargets): boolean;
|
|
91
91
|
}
|
|
92
92
|
export declare class Groupview extends CompositeDisposable implements IGroupview {
|
|
93
93
|
private readonly container;
|
|
94
94
|
private accessor;
|
|
95
95
|
id: string;
|
|
96
96
|
private readonly options;
|
|
97
|
-
private readonly
|
|
97
|
+
private readonly groupPanel;
|
|
98
98
|
private readonly tabsContainer;
|
|
99
99
|
private readonly contentContainer;
|
|
100
100
|
private readonly dropTarget;
|
|
@@ -134,7 +134,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
134
134
|
get hasWatermark(): boolean;
|
|
135
135
|
get header(): IHeader;
|
|
136
136
|
get isContentFocused(): boolean;
|
|
137
|
-
constructor(container: HTMLElement, accessor: DockviewComponent, id: string, options: GroupOptions,
|
|
137
|
+
constructor(container: HTMLElement, accessor: DockviewComponent, id: string, options: GroupOptions, groupPanel: GroupPanel);
|
|
138
138
|
initialize(): void;
|
|
139
139
|
indexOf(panel: IDockviewPanel): number;
|
|
140
140
|
toJSON(): GroupPanelViewState;
|
|
@@ -170,7 +170,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
170
170
|
private doSetActivePanel;
|
|
171
171
|
private updateMru;
|
|
172
172
|
private updateContainer;
|
|
173
|
-
canDisplayOverlay(event: DragEvent, target: DockviewDropTargets): boolean;
|
|
173
|
+
canDisplayOverlay(event: DragEvent, position: Position, target: DockviewDropTargets): boolean;
|
|
174
174
|
private handleDropEvent;
|
|
175
175
|
dispose(): void;
|
|
176
176
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DockviewApi } from '../api/component.api';
|
|
2
2
|
import { getPanelData } from '../dnd/dataTransfer';
|
|
3
|
-
import { Droptarget
|
|
3
|
+
import { Droptarget } from '../dnd/droptarget';
|
|
4
4
|
import { isAncestor, toggleClass } from '../dom';
|
|
5
5
|
import { addDisposableListener, Emitter } from '../events';
|
|
6
6
|
import { CompositeDisposable } from '../lifecycle';
|
|
@@ -8,63 +8,6 @@ import { ContentContainer } from './panel/content';
|
|
|
8
8
|
import { TabsContainer } from './titlebar/tabsContainer';
|
|
9
9
|
import { DockviewDropTargets } from './dnd';
|
|
10
10
|
export class Groupview extends CompositeDisposable {
|
|
11
|
-
constructor(container, accessor, id, options, parent) {
|
|
12
|
-
super();
|
|
13
|
-
this.container = container;
|
|
14
|
-
this.accessor = accessor;
|
|
15
|
-
this.id = id;
|
|
16
|
-
this.options = options;
|
|
17
|
-
this.parent = parent;
|
|
18
|
-
this._isGroupActive = false;
|
|
19
|
-
this._locked = false;
|
|
20
|
-
this.mostRecentlyUsed = [];
|
|
21
|
-
this._onDidChange = new Emitter();
|
|
22
|
-
this.onDidChange = this._onDidChange.event;
|
|
23
|
-
this._width = 0;
|
|
24
|
-
this._height = 0;
|
|
25
|
-
this._panels = [];
|
|
26
|
-
this._onMove = new Emitter();
|
|
27
|
-
this.onMove = this._onMove.event;
|
|
28
|
-
this._onDidDrop = new Emitter();
|
|
29
|
-
this.onDidDrop = this._onDidDrop.event;
|
|
30
|
-
this._onDidAddPanel = new Emitter();
|
|
31
|
-
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
32
|
-
this._onDidRemovePanel = new Emitter();
|
|
33
|
-
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
34
|
-
this._onDidActivePanelChange = new Emitter();
|
|
35
|
-
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
36
|
-
this.container.classList.add('groupview');
|
|
37
|
-
this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
|
|
38
|
-
tabHeight: options.tabHeight,
|
|
39
|
-
});
|
|
40
|
-
this.contentContainer = new ContentContainer();
|
|
41
|
-
this.dropTarget = new Droptarget(this.contentContainer.element, {
|
|
42
|
-
validOverlays: 'all',
|
|
43
|
-
canDisplayOverlay: (event, quadrant) => {
|
|
44
|
-
if (this.locked && !quadrant) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
const data = getPanelData();
|
|
48
|
-
if (data && data.viewId === this.accessor.id) {
|
|
49
|
-
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
50
|
-
return !groupHasOnePanelAndIsActiveDragElement;
|
|
51
|
-
}
|
|
52
|
-
return this.canDisplayOverlay(event, DockviewDropTargets.Panel);
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
56
|
-
this.header.hidden = !!options.hideHeader;
|
|
57
|
-
this.locked = !!options.locked;
|
|
58
|
-
this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
|
|
59
|
-
this.handleDropEvent(event.event, Position.Center, event.index);
|
|
60
|
-
}), this.contentContainer.onDidFocus(() => {
|
|
61
|
-
this.accessor.doSetGroupActive(this.parent, true);
|
|
62
|
-
}), this.contentContainer.onDidBlur(() => {
|
|
63
|
-
// noop
|
|
64
|
-
}), this.dropTarget.onDrop((event) => {
|
|
65
|
-
this.handleDropEvent(event.nativeEvent, event.position);
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
11
|
get element() {
|
|
69
12
|
throw new Error('not supported');
|
|
70
13
|
}
|
|
@@ -76,6 +19,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
76
19
|
}
|
|
77
20
|
set locked(value) {
|
|
78
21
|
this._locked = value;
|
|
22
|
+
toggleClass(this.container, 'locked-groupview', value);
|
|
79
23
|
}
|
|
80
24
|
get isActive() {
|
|
81
25
|
return this._isGroupActive;
|
|
@@ -113,6 +57,71 @@ export class Groupview extends CompositeDisposable {
|
|
|
113
57
|
}
|
|
114
58
|
return isAncestor(document.activeElement, this.contentContainer.element);
|
|
115
59
|
}
|
|
60
|
+
constructor(container, accessor, id, options, groupPanel) {
|
|
61
|
+
super();
|
|
62
|
+
this.container = container;
|
|
63
|
+
this.accessor = accessor;
|
|
64
|
+
this.id = id;
|
|
65
|
+
this.options = options;
|
|
66
|
+
this.groupPanel = groupPanel;
|
|
67
|
+
this._isGroupActive = false;
|
|
68
|
+
this._locked = false;
|
|
69
|
+
this.mostRecentlyUsed = [];
|
|
70
|
+
this._onDidChange = new Emitter();
|
|
71
|
+
this.onDidChange = this._onDidChange.event;
|
|
72
|
+
this._width = 0;
|
|
73
|
+
this._height = 0;
|
|
74
|
+
this._panels = [];
|
|
75
|
+
this._onMove = new Emitter();
|
|
76
|
+
this.onMove = this._onMove.event;
|
|
77
|
+
this._onDidDrop = new Emitter();
|
|
78
|
+
this.onDidDrop = this._onDidDrop.event;
|
|
79
|
+
this._onDidAddPanel = new Emitter();
|
|
80
|
+
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
81
|
+
this._onDidRemovePanel = new Emitter();
|
|
82
|
+
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
83
|
+
this._onDidActivePanelChange = new Emitter();
|
|
84
|
+
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
85
|
+
this.container.classList.add('groupview');
|
|
86
|
+
this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
|
|
87
|
+
this.contentContainer = new ContentContainer();
|
|
88
|
+
this.dropTarget = new Droptarget(this.contentContainer.element, {
|
|
89
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
90
|
+
canDisplayOverlay: (event, position) => {
|
|
91
|
+
if (this.locked && position === 'center') {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
const data = getPanelData();
|
|
95
|
+
if (data && data.viewId === this.accessor.id) {
|
|
96
|
+
if (data.groupId === this.id) {
|
|
97
|
+
if (position === 'center') {
|
|
98
|
+
// don't allow to drop on self for center position
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
if (data.panelId === null) {
|
|
102
|
+
// don't allow group move to drop anywhere on self
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
107
|
+
return !groupHasOnePanelAndIsActiveDragElement;
|
|
108
|
+
}
|
|
109
|
+
return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
113
|
+
this.header.hidden = !!options.hideHeader;
|
|
114
|
+
this.locked = !!options.locked;
|
|
115
|
+
this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
|
|
116
|
+
this.handleDropEvent(event.event, 'center', event.index);
|
|
117
|
+
}), this.contentContainer.onDidFocus(() => {
|
|
118
|
+
this.accessor.doSetGroupActive(this.groupPanel, true);
|
|
119
|
+
}), this.contentContainer.onDidBlur(() => {
|
|
120
|
+
// noop
|
|
121
|
+
}), this.dropTarget.onDrop((event) => {
|
|
122
|
+
this.handleDropEvent(event.nativeEvent, event.position);
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
116
125
|
initialize() {
|
|
117
126
|
var _a, _b;
|
|
118
127
|
if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
|
|
@@ -128,11 +137,11 @@ export class Groupview extends CompositeDisposable {
|
|
|
128
137
|
this.setActive(this.isActive, true, true);
|
|
129
138
|
this.updateContainer();
|
|
130
139
|
if (this.accessor.options.createGroupControlElement) {
|
|
131
|
-
this._control = this.accessor.options.createGroupControlElement(this.
|
|
140
|
+
this._control = this.accessor.options.createGroupControlElement(this.groupPanel);
|
|
132
141
|
this.addDisposables(this._control);
|
|
133
142
|
this._control.init({
|
|
134
143
|
containerApi: new DockviewApi(this.accessor),
|
|
135
|
-
api: this.
|
|
144
|
+
api: this.groupPanel.api,
|
|
136
145
|
});
|
|
137
146
|
this.tabsContainer.setActionElement(this._control.element);
|
|
138
147
|
}
|
|
@@ -219,10 +228,10 @@ export class Groupview extends CompositeDisposable {
|
|
|
219
228
|
const skipSetPanelActive = !!options.skipSetPanelActive;
|
|
220
229
|
const skipSetGroupActive = !!options.skipSetGroupActive;
|
|
221
230
|
// ensure the group is updated before we fire any events
|
|
222
|
-
panel.updateParentGroup(this.
|
|
231
|
+
panel.updateParentGroup(this.groupPanel, true);
|
|
223
232
|
if (this._activePanel === panel) {
|
|
224
233
|
if (!skipSetGroupActive) {
|
|
225
|
-
this.accessor.doSetGroupActive(this.
|
|
234
|
+
this.accessor.doSetGroupActive(this.groupPanel);
|
|
226
235
|
}
|
|
227
236
|
return;
|
|
228
237
|
}
|
|
@@ -231,7 +240,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
231
240
|
this.doSetActivePanel(panel);
|
|
232
241
|
}
|
|
233
242
|
if (!skipSetGroupActive) {
|
|
234
|
-
this.accessor.doSetGroupActive(this.
|
|
243
|
+
this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);
|
|
235
244
|
}
|
|
236
245
|
this.updateContainer();
|
|
237
246
|
}
|
|
@@ -254,7 +263,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
254
263
|
}
|
|
255
264
|
}
|
|
256
265
|
else {
|
|
257
|
-
this.accessor.removeGroup(this.
|
|
266
|
+
this.accessor.removeGroup(this.groupPanel);
|
|
258
267
|
}
|
|
259
268
|
}
|
|
260
269
|
closePanel(panel) {
|
|
@@ -359,7 +368,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
359
368
|
}
|
|
360
369
|
updateContainer() {
|
|
361
370
|
toggleClass(this.container, 'empty', this.isEmpty);
|
|
362
|
-
this.panels.forEach((panel) => panel.updateParentGroup(this.
|
|
371
|
+
this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));
|
|
363
372
|
if (this.isEmpty && !this.watermark) {
|
|
364
373
|
const watermark = this.accessor.createWatermarkComponent();
|
|
365
374
|
watermark.init({
|
|
@@ -371,29 +380,28 @@ export class Groupview extends CompositeDisposable {
|
|
|
371
380
|
this.watermark = watermark;
|
|
372
381
|
addDisposableListener(this.watermark.element, 'click', () => {
|
|
373
382
|
if (!this.isActive) {
|
|
374
|
-
this.accessor.doSetGroupActive(this.
|
|
383
|
+
this.accessor.doSetGroupActive(this.groupPanel);
|
|
375
384
|
}
|
|
376
385
|
});
|
|
377
|
-
this.contentContainer.hide();
|
|
378
386
|
this.tabsContainer.hide();
|
|
379
|
-
this.
|
|
380
|
-
this.watermark.updateParentGroup(this.
|
|
387
|
+
this.contentContainer.element.appendChild(this.watermark.element);
|
|
388
|
+
this.watermark.updateParentGroup(this.groupPanel, true);
|
|
381
389
|
}
|
|
382
390
|
if (!this.isEmpty && this.watermark) {
|
|
383
391
|
this.watermark.element.remove();
|
|
384
392
|
this.watermark.dispose();
|
|
385
393
|
this.watermark = undefined;
|
|
386
|
-
this.contentContainer.show();
|
|
387
394
|
this.tabsContainer.show();
|
|
388
395
|
}
|
|
389
396
|
}
|
|
390
|
-
canDisplayOverlay(event, target) {
|
|
397
|
+
canDisplayOverlay(event, position, target) {
|
|
391
398
|
// custom overlay handler
|
|
392
399
|
if (this.accessor.options.showDndOverlay) {
|
|
393
400
|
return this.accessor.options.showDndOverlay({
|
|
394
401
|
nativeEvent: event,
|
|
395
402
|
target,
|
|
396
403
|
group: this.accessor.getPanel(this.id),
|
|
404
|
+
position,
|
|
397
405
|
getData: getPanelData,
|
|
398
406
|
});
|
|
399
407
|
}
|
|
@@ -401,7 +409,17 @@ export class Groupview extends CompositeDisposable {
|
|
|
401
409
|
}
|
|
402
410
|
handleDropEvent(event, position, index) {
|
|
403
411
|
const data = getPanelData();
|
|
404
|
-
if (data) {
|
|
412
|
+
if (data && data.viewId === this.accessor.id) {
|
|
413
|
+
if (data.panelId === null) {
|
|
414
|
+
// this is a group move dnd event
|
|
415
|
+
const { groupId } = data;
|
|
416
|
+
this._onMove.fire({
|
|
417
|
+
target: position,
|
|
418
|
+
groupId: groupId,
|
|
419
|
+
index,
|
|
420
|
+
});
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
405
423
|
const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;
|
|
406
424
|
if (fromSameGroup && this.tabsContainer.size === 1) {
|
|
407
425
|
return;
|
|
@@ -3,7 +3,7 @@ import { DockviewComponent } from '../dockview/dockviewComponent';
|
|
|
3
3
|
import { GridviewPanelApi } from '../api/gridviewPanelApi';
|
|
4
4
|
import { Groupview, GroupOptions, IHeader } from './groupview';
|
|
5
5
|
import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
|
|
6
|
-
import { IDockviewPanel } from '
|
|
6
|
+
import { IDockviewPanel } from '../dockview/dockviewPanel';
|
|
7
7
|
export interface IGroupviewPanel extends IGridviewPanel {
|
|
8
8
|
model: Groupview;
|
|
9
9
|
locked: boolean;
|
|
@@ -11,8 +11,8 @@ export interface IGroupviewPanel extends IGridviewPanel {
|
|
|
11
11
|
readonly panels: IDockviewPanel[];
|
|
12
12
|
readonly activePanel: IDockviewPanel | undefined;
|
|
13
13
|
}
|
|
14
|
-
export
|
|
15
|
-
export
|
|
14
|
+
export type IGroupviewPanelPublic = IGroupviewPanel;
|
|
15
|
+
export type GroupviewPanelApi = GridviewPanelApi;
|
|
16
16
|
export declare class GroupPanel extends GridviewPanel implements IGroupviewPanel {
|
|
17
17
|
private readonly _model;
|
|
18
18
|
get panels(): IDockviewPanel[];
|
|
@@ -4,10 +4,6 @@ import { GridviewPanel } from '../gridview/gridviewPanel';
|
|
|
4
4
|
class GroupviewApi extends GridviewPanelApiImpl {
|
|
5
5
|
}
|
|
6
6
|
export class GroupPanel extends GridviewPanel {
|
|
7
|
-
constructor(accessor, id, options) {
|
|
8
|
-
super(id, 'groupview_default', new GroupviewApi(id));
|
|
9
|
-
this._model = new Groupview(this.element, accessor, id, options, this);
|
|
10
|
-
}
|
|
11
7
|
get panels() {
|
|
12
8
|
return this._model.panels;
|
|
13
9
|
}
|
|
@@ -41,6 +37,10 @@ export class GroupPanel extends GridviewPanel {
|
|
|
41
37
|
get header() {
|
|
42
38
|
return this._model.header;
|
|
43
39
|
}
|
|
40
|
+
constructor(accessor, id, options) {
|
|
41
|
+
super(id, 'groupview_default', new GroupviewApi(id));
|
|
42
|
+
this._model = new Groupview(this.element, accessor, id, options, this);
|
|
43
|
+
}
|
|
44
44
|
initialize() {
|
|
45
45
|
this._model.initialize();
|
|
46
46
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CompositeDisposable, IDisposable } from '../../lifecycle';
|
|
2
2
|
import { Event } from '../../events';
|
|
3
|
-
import { IDockviewPanel } from '
|
|
3
|
+
import { IDockviewPanel } from '../../dockview/dockviewPanel';
|
|
4
4
|
export interface IContentContainer extends IDisposable {
|
|
5
5
|
onDidFocus: Event<void>;
|
|
6
6
|
onDidBlur: Event<void>;
|
|
@@ -2,6 +2,9 @@ import { CompositeDisposable, MutableDisposable, } from '../../lifecycle';
|
|
|
2
2
|
import { Emitter } from '../../events';
|
|
3
3
|
import { trackFocus } from '../../dom';
|
|
4
4
|
export class ContentContainer extends CompositeDisposable {
|
|
5
|
+
get element() {
|
|
6
|
+
return this._element;
|
|
7
|
+
}
|
|
5
8
|
constructor() {
|
|
6
9
|
super();
|
|
7
10
|
this.disposable = new MutableDisposable();
|
|
@@ -19,9 +22,6 @@ export class ContentContainer extends CompositeDisposable {
|
|
|
19
22
|
// 3) register dragEnd events
|
|
20
23
|
// 4) register mouseMove events (if no buttons are present we take this as a dragEnd event)
|
|
21
24
|
}
|
|
22
|
-
get element() {
|
|
23
|
-
return this._element;
|
|
24
|
-
}
|
|
25
25
|
show() {
|
|
26
26
|
this.element.style.display = '';
|
|
27
27
|
}
|
|
@@ -2,23 +2,13 @@ import { Event } from '../events';
|
|
|
2
2
|
import { CompositeDisposable } from '../lifecycle';
|
|
3
3
|
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
|
4
4
|
import { ITabRenderer } from './types';
|
|
5
|
-
import { IDockviewPanel } from './groupPanel';
|
|
6
5
|
import { GroupPanel } from './groupviewPanel';
|
|
7
6
|
import { DroptargetEvent } from '../dnd/droptarget';
|
|
8
|
-
export declare enum MouseEventKind {
|
|
9
|
-
CLICK = "CLICK"
|
|
10
|
-
}
|
|
11
|
-
export interface LayoutMouseEvent {
|
|
12
|
-
readonly kind: MouseEventKind;
|
|
13
|
-
readonly event: MouseEvent;
|
|
14
|
-
readonly panel?: IDockviewPanel;
|
|
15
|
-
readonly tab?: boolean;
|
|
16
|
-
}
|
|
17
7
|
export interface ITab {
|
|
18
8
|
readonly panelId: string;
|
|
19
9
|
readonly element: HTMLElement;
|
|
20
10
|
setContent: (element: ITabRenderer) => void;
|
|
21
|
-
onChanged: Event<
|
|
11
|
+
onChanged: Event<MouseEvent>;
|
|
22
12
|
onDrop: Event<DroptargetEvent>;
|
|
23
13
|
setActive(isActive: boolean): void;
|
|
24
14
|
}
|
|
@@ -30,7 +20,7 @@ export declare class Tab extends CompositeDisposable implements ITab {
|
|
|
30
20
|
private readonly droptarget;
|
|
31
21
|
private content?;
|
|
32
22
|
private readonly _onChanged;
|
|
33
|
-
readonly onChanged: Event<
|
|
23
|
+
readonly onChanged: Event<MouseEvent>;
|
|
34
24
|
private readonly _onDropped;
|
|
35
25
|
readonly onDrop: Event<DroptargetEvent>;
|
|
36
26
|
get element(): HTMLElement;
|
|
@@ -5,11 +5,10 @@ import { toggleClass } from '../dom';
|
|
|
5
5
|
import { Droptarget } from '../dnd/droptarget';
|
|
6
6
|
import { DockviewDropTargets } from './dnd';
|
|
7
7
|
import { DragHandler } from '../dnd/abstractDragHandler';
|
|
8
|
-
export var MouseEventKind;
|
|
9
|
-
(function (MouseEventKind) {
|
|
10
|
-
MouseEventKind["CLICK"] = "CLICK";
|
|
11
|
-
})(MouseEventKind || (MouseEventKind = {}));
|
|
12
8
|
export class Tab extends CompositeDisposable {
|
|
9
|
+
get element() {
|
|
10
|
+
return this._element;
|
|
11
|
+
}
|
|
13
12
|
constructor(panelId, accessor, group) {
|
|
14
13
|
super();
|
|
15
14
|
this.panelId = panelId;
|
|
@@ -53,25 +52,30 @@ export class Tab extends CompositeDisposable {
|
|
|
53
52
|
* on the tabs-container. I cannot use event.preventDefault() since I need the on DragStart event to occur
|
|
54
53
|
*/
|
|
55
54
|
event.stopPropagation();
|
|
56
|
-
this._onChanged.fire(
|
|
55
|
+
this._onChanged.fire(event);
|
|
57
56
|
}));
|
|
58
57
|
this.droptarget = new Droptarget(this._element, {
|
|
59
|
-
|
|
60
|
-
canDisplayOverlay: (event) => {
|
|
58
|
+
acceptedTargetZones: ['center'],
|
|
59
|
+
canDisplayOverlay: (event, position) => {
|
|
60
|
+
if (this.group.locked) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
61
63
|
const data = getPanelData();
|
|
62
64
|
if (data && this.accessor.id === data.viewId) {
|
|
65
|
+
if (data.panelId === null &&
|
|
66
|
+
data.groupId === this.group.id) {
|
|
67
|
+
// don't allow group move to drop on self
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
63
70
|
return this.panelId !== data.panelId;
|
|
64
71
|
}
|
|
65
|
-
return this.group.model.canDisplayOverlay(event, DockviewDropTargets.Tab);
|
|
72
|
+
return this.group.model.canDisplayOverlay(event, position, DockviewDropTargets.Tab);
|
|
66
73
|
},
|
|
67
74
|
});
|
|
68
75
|
this.addDisposables(this.droptarget.onDrop((event) => {
|
|
69
76
|
this._onDropped.fire(event);
|
|
70
77
|
}));
|
|
71
78
|
}
|
|
72
|
-
get element() {
|
|
73
|
-
return this._element;
|
|
74
|
-
}
|
|
75
79
|
setActive(isActive) {
|
|
76
80
|
toggleClass(this.element, 'active-tab', isActive);
|
|
77
81
|
toggleClass(this.element, 'inactive-tab', !isActive);
|