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
|
@@ -2,24 +2,55 @@ import { toggleClass } from '../dom';
|
|
|
2
2
|
import { Emitter } from '../events';
|
|
3
3
|
import { CompositeDisposable } from '../lifecycle';
|
|
4
4
|
import { DragAndDropObserver } from './dnd';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
import { clamp } from '../math';
|
|
6
|
+
import { isBooleanValue } from '../types';
|
|
7
|
+
function numberOrFallback(maybeNumber, fallback) {
|
|
8
|
+
return typeof maybeNumber === 'number' ? maybeNumber : fallback;
|
|
9
|
+
}
|
|
10
|
+
export function directionToPosition(direction) {
|
|
11
|
+
switch (direction) {
|
|
12
|
+
case 'above':
|
|
13
|
+
return 'top';
|
|
14
|
+
case 'below':
|
|
15
|
+
return 'bottom';
|
|
16
|
+
case 'left':
|
|
17
|
+
return 'left';
|
|
18
|
+
case 'right':
|
|
19
|
+
return 'right';
|
|
20
|
+
case 'within':
|
|
21
|
+
return 'center';
|
|
22
|
+
default:
|
|
23
|
+
throw new Error(`invalid direction '${direction}'`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function positionToDirection(position) {
|
|
27
|
+
switch (position) {
|
|
28
|
+
case 'top':
|
|
29
|
+
return 'above';
|
|
30
|
+
case 'bottom':
|
|
31
|
+
return 'below';
|
|
32
|
+
case 'left':
|
|
33
|
+
return 'left';
|
|
34
|
+
case 'right':
|
|
35
|
+
return 'right';
|
|
36
|
+
case 'center':
|
|
37
|
+
return 'within';
|
|
38
|
+
default:
|
|
39
|
+
throw new Error(`invalid position '${position}'`);
|
|
40
|
+
}
|
|
15
41
|
}
|
|
16
42
|
export class Droptarget extends CompositeDisposable {
|
|
43
|
+
get state() {
|
|
44
|
+
return this._state;
|
|
45
|
+
}
|
|
17
46
|
constructor(element, options) {
|
|
18
47
|
super();
|
|
19
48
|
this.element = element;
|
|
20
49
|
this.options = options;
|
|
21
50
|
this._onDrop = new Emitter();
|
|
22
51
|
this.onDrop = this._onDrop.event;
|
|
52
|
+
// use a set to take advantage of #<set>.has
|
|
53
|
+
const acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
|
|
23
54
|
this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {
|
|
24
55
|
onDragEnter: () => undefined,
|
|
25
56
|
onDragOver: (e) => {
|
|
@@ -28,11 +59,15 @@ export class Droptarget extends CompositeDisposable {
|
|
|
28
59
|
if (width === 0 || height === 0) {
|
|
29
60
|
return; // avoid div!0
|
|
30
61
|
}
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
|
|
62
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
63
|
+
const x = e.clientX - rect.left;
|
|
64
|
+
const y = e.clientY - rect.top;
|
|
65
|
+
const quadrant = this.calculateQuadrant(acceptedTargetZonesSet, x, y, width, height);
|
|
66
|
+
if (quadrant === null) {
|
|
67
|
+
// no drop target should be displayed
|
|
68
|
+
this.removeDropTarget();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
36
71
|
if (isBooleanValue(this.options.canDisplayOverlay)) {
|
|
37
72
|
if (!this.options.canDisplayOverlay) {
|
|
38
73
|
return;
|
|
@@ -46,20 +81,18 @@ export class Droptarget extends CompositeDisposable {
|
|
|
46
81
|
this.target.className = 'drop-target-dropzone';
|
|
47
82
|
this.overlay = document.createElement('div');
|
|
48
83
|
this.overlay.className = 'drop-target-selection';
|
|
49
|
-
this._state =
|
|
84
|
+
this._state = 'center';
|
|
50
85
|
this.target.appendChild(this.overlay);
|
|
51
86
|
this.element.classList.add('drop-target');
|
|
52
87
|
this.element.append(this.target);
|
|
53
88
|
}
|
|
54
|
-
if (this.options.
|
|
89
|
+
if (this.options.acceptedTargetZones.length === 0) {
|
|
55
90
|
return;
|
|
56
91
|
}
|
|
57
92
|
if (!this.target || !this.overlay) {
|
|
58
93
|
return;
|
|
59
94
|
}
|
|
60
|
-
|
|
61
|
-
const isSmallY = height < 100;
|
|
62
|
-
this.toggleClasses(quadrant, isSmallX, isSmallY);
|
|
95
|
+
this.toggleClasses(quadrant, width, height);
|
|
63
96
|
this.setState(quadrant);
|
|
64
97
|
},
|
|
65
98
|
onDragLeave: () => {
|
|
@@ -79,30 +112,59 @@ export class Droptarget extends CompositeDisposable {
|
|
|
79
112
|
},
|
|
80
113
|
}));
|
|
81
114
|
}
|
|
82
|
-
get state() {
|
|
83
|
-
return this._state;
|
|
84
|
-
}
|
|
85
|
-
set validOverlays(value) {
|
|
86
|
-
this.options.validOverlays = value;
|
|
87
|
-
}
|
|
88
|
-
set canDisplayOverlay(value) {
|
|
89
|
-
this.options.canDisplayOverlay = value;
|
|
90
|
-
}
|
|
91
115
|
dispose() {
|
|
92
116
|
this.removeDropTarget();
|
|
93
117
|
}
|
|
94
|
-
toggleClasses(quadrant,
|
|
118
|
+
toggleClasses(quadrant, width, height) {
|
|
119
|
+
var _a, _b, _c, _d;
|
|
95
120
|
if (!this.overlay) {
|
|
96
121
|
return;
|
|
97
122
|
}
|
|
123
|
+
const isSmallX = width < 100;
|
|
124
|
+
const isSmallY = height < 100;
|
|
98
125
|
const isLeft = quadrant === 'left';
|
|
99
126
|
const isRight = quadrant === 'right';
|
|
100
127
|
const isTop = quadrant === 'top';
|
|
101
128
|
const isBottom = quadrant === 'bottom';
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
129
|
+
const rightClass = !isSmallX && isRight;
|
|
130
|
+
const leftClass = !isSmallX && isLeft;
|
|
131
|
+
const topClass = !isSmallY && isTop;
|
|
132
|
+
const bottomClass = !isSmallY && isBottom;
|
|
133
|
+
let size = 0.5;
|
|
134
|
+
if (((_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) === null || _b === void 0 ? void 0 : _b.type) === 'percentage') {
|
|
135
|
+
size = clamp(this.options.overlayModel.size.value, 0, 100) / 100;
|
|
136
|
+
}
|
|
137
|
+
if (((_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) === null || _d === void 0 ? void 0 : _d.type) === 'pixels') {
|
|
138
|
+
if (rightClass || leftClass) {
|
|
139
|
+
size =
|
|
140
|
+
clamp(0, this.options.overlayModel.size.value, width) /
|
|
141
|
+
width;
|
|
142
|
+
}
|
|
143
|
+
if (topClass || bottomClass) {
|
|
144
|
+
size =
|
|
145
|
+
clamp(0, this.options.overlayModel.size.value, height) /
|
|
146
|
+
height;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const translate = (1 - size) / 2;
|
|
150
|
+
const scale = size;
|
|
151
|
+
let transform;
|
|
152
|
+
if (rightClass) {
|
|
153
|
+
transform = `translateX(${100 * translate}%) scaleX(${scale})`;
|
|
154
|
+
}
|
|
155
|
+
else if (leftClass) {
|
|
156
|
+
transform = `translateX(-${100 * translate}%) scaleX(${scale})`;
|
|
157
|
+
}
|
|
158
|
+
else if (topClass) {
|
|
159
|
+
transform = `translateY(-${100 * translate}%) scaleY(${scale})`;
|
|
160
|
+
}
|
|
161
|
+
else if (bottomClass) {
|
|
162
|
+
transform = `translateY(${100 * translate}%) scaleY(${scale})`;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
transform = '';
|
|
166
|
+
}
|
|
167
|
+
this.overlay.style.transform = transform;
|
|
106
168
|
toggleClass(this.overlay, 'small-right', isSmallX && isRight);
|
|
107
169
|
toggleClass(this.overlay, 'small-left', isSmallX && isLeft);
|
|
108
170
|
toggleClass(this.overlay, 'small-top', isSmallY && isTop);
|
|
@@ -111,57 +173,77 @@ export class Droptarget extends CompositeDisposable {
|
|
|
111
173
|
setState(quadrant) {
|
|
112
174
|
switch (quadrant) {
|
|
113
175
|
case 'top':
|
|
114
|
-
this._state =
|
|
176
|
+
this._state = 'top';
|
|
115
177
|
break;
|
|
116
178
|
case 'left':
|
|
117
|
-
this._state =
|
|
179
|
+
this._state = 'left';
|
|
118
180
|
break;
|
|
119
181
|
case 'bottom':
|
|
120
|
-
this._state =
|
|
182
|
+
this._state = 'bottom';
|
|
121
183
|
break;
|
|
122
184
|
case 'right':
|
|
123
|
-
this._state =
|
|
185
|
+
this._state = 'right';
|
|
124
186
|
break;
|
|
125
|
-
|
|
126
|
-
this._state =
|
|
187
|
+
case 'center':
|
|
188
|
+
this._state = 'center';
|
|
127
189
|
break;
|
|
128
190
|
}
|
|
129
191
|
}
|
|
130
|
-
calculateQuadrant(overlayType,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return 'right';
|
|
138
|
-
}
|
|
139
|
-
if (yp < 20) {
|
|
140
|
-
return 'top';
|
|
141
|
-
}
|
|
142
|
-
if (yp > 80) {
|
|
143
|
-
return 'bottom';
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
case 'vertical':
|
|
147
|
-
if (yp < 50) {
|
|
148
|
-
return 'top';
|
|
149
|
-
}
|
|
150
|
-
return 'bottom';
|
|
151
|
-
case 'horizontal':
|
|
152
|
-
if (xp < 50) {
|
|
153
|
-
return 'left';
|
|
154
|
-
}
|
|
155
|
-
return 'right';
|
|
192
|
+
calculateQuadrant(overlayType, x, y, width, height) {
|
|
193
|
+
var _a, _b, _c, _d, _e, _f;
|
|
194
|
+
const isPercentage = ((_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) === undefined ||
|
|
195
|
+
((_c = (_b = this.options.overlayModel) === null || _b === void 0 ? void 0 : _b.activationSize) === null || _c === void 0 ? void 0 : _c.type) === 'percentage';
|
|
196
|
+
const value = numberOrFallback((_f = (_e = (_d = this.options) === null || _d === void 0 ? void 0 : _d.overlayModel) === null || _e === void 0 ? void 0 : _e.activationSize) === null || _f === void 0 ? void 0 : _f.value, 20);
|
|
197
|
+
if (isPercentage) {
|
|
198
|
+
return calculateQuadrantAsPercentage(overlayType, x, y, width, height, value);
|
|
156
199
|
}
|
|
157
|
-
return
|
|
200
|
+
return calculateQuadrantAsPixels(overlayType, x, y, width, height, value);
|
|
158
201
|
}
|
|
159
202
|
removeDropTarget() {
|
|
160
203
|
if (this.target) {
|
|
161
204
|
this._state = undefined;
|
|
162
205
|
this.element.removeChild(this.target);
|
|
163
206
|
this.target = undefined;
|
|
207
|
+
this.overlay = undefined;
|
|
164
208
|
this.element.classList.remove('drop-target');
|
|
165
209
|
}
|
|
166
210
|
}
|
|
167
211
|
}
|
|
212
|
+
export function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {
|
|
213
|
+
const xp = (100 * x) / width;
|
|
214
|
+
const yp = (100 * y) / height;
|
|
215
|
+
if (overlayType.has('left') && xp < threshold) {
|
|
216
|
+
return 'left';
|
|
217
|
+
}
|
|
218
|
+
if (overlayType.has('right') && xp > 100 - threshold) {
|
|
219
|
+
return 'right';
|
|
220
|
+
}
|
|
221
|
+
if (overlayType.has('top') && yp < threshold) {
|
|
222
|
+
return 'top';
|
|
223
|
+
}
|
|
224
|
+
if (overlayType.has('bottom') && yp > 100 - threshold) {
|
|
225
|
+
return 'bottom';
|
|
226
|
+
}
|
|
227
|
+
if (!overlayType.has('center')) {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
return 'center';
|
|
231
|
+
}
|
|
232
|
+
export function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {
|
|
233
|
+
if (overlayType.has('left') && x < threshold) {
|
|
234
|
+
return 'left';
|
|
235
|
+
}
|
|
236
|
+
if (overlayType.has('right') && x > width - threshold) {
|
|
237
|
+
return 'right';
|
|
238
|
+
}
|
|
239
|
+
if (overlayType.has('top') && y < threshold) {
|
|
240
|
+
return 'top';
|
|
241
|
+
}
|
|
242
|
+
if (overlayType.has('bottom') && y > height - threshold) {
|
|
243
|
+
return 'bottom';
|
|
244
|
+
}
|
|
245
|
+
if (!overlayType.has('center')) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
return 'center';
|
|
249
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function addGhostImage(dataTransfer: DataTransfer, ghostElement: HTMLElement): void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { addClasses } from '../dom';
|
|
2
|
+
export function addGhostImage(dataTransfer, ghostElement) {
|
|
3
|
+
// class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
|
|
4
|
+
addClasses(ghostElement, 'dv-dragged');
|
|
5
|
+
document.body.appendChild(ghostElement);
|
|
6
|
+
dataTransfer.setDragImage(ghostElement, 0, 0);
|
|
7
|
+
setTimeout(() => {
|
|
8
|
+
ghostElement.remove();
|
|
9
|
+
}, 0);
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
2
|
+
import { IDisposable } from '../lifecycle';
|
|
3
|
+
import { DragHandler } from './abstractDragHandler';
|
|
4
|
+
export declare class GroupDragHandler extends DragHandler {
|
|
5
|
+
private readonly accessorId;
|
|
6
|
+
private readonly group;
|
|
7
|
+
private readonly panelTransfer;
|
|
8
|
+
constructor(element: HTMLElement, accessorId: string, group: GroupPanel);
|
|
9
|
+
getData(dataTransfer: DataTransfer | null): IDisposable;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DragHandler } from './abstractDragHandler';
|
|
2
|
+
import { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';
|
|
3
|
+
import { addGhostImage } from './ghost';
|
|
4
|
+
export class GroupDragHandler extends DragHandler {
|
|
5
|
+
constructor(element, accessorId, group) {
|
|
6
|
+
super(element);
|
|
7
|
+
this.accessorId = accessorId;
|
|
8
|
+
this.group = group;
|
|
9
|
+
this.panelTransfer = LocalSelectionTransfer.getInstance();
|
|
10
|
+
}
|
|
11
|
+
getData(dataTransfer) {
|
|
12
|
+
this.panelTransfer.setData([new PanelTransfer(this.accessorId, this.group.id, null)], PanelTransfer.prototype);
|
|
13
|
+
const style = window.getComputedStyle(this.el);
|
|
14
|
+
const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');
|
|
15
|
+
const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');
|
|
16
|
+
if (dataTransfer) {
|
|
17
|
+
const ghostElement = document.createElement('div');
|
|
18
|
+
ghostElement.style.backgroundColor = bgColor;
|
|
19
|
+
ghostElement.style.color = color;
|
|
20
|
+
ghostElement.style.padding = '2px 8px';
|
|
21
|
+
ghostElement.style.height = '24px';
|
|
22
|
+
ghostElement.style.fontSize = '11px';
|
|
23
|
+
ghostElement.style.lineHeight = '20px';
|
|
24
|
+
ghostElement.style.borderRadius = '12px';
|
|
25
|
+
ghostElement.style.position = 'absolute';
|
|
26
|
+
ghostElement.textContent = `Multiple Panels (${this.group.size})`;
|
|
27
|
+
addGhostImage(dataTransfer, ghostElement);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
dispose: () => {
|
|
31
|
+
this.panelTransfer.clearData(PanelTransfer.prototype);
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
dispose() {
|
|
36
|
+
//
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -3,6 +3,12 @@ import { addDisposableListener } from '../../../events';
|
|
|
3
3
|
import { createCloseButton } from '../../../svg';
|
|
4
4
|
export const DEFAULT_TAB_IDENTIFIER = '__default__tab__';
|
|
5
5
|
export class DefaultTab extends CompositeDisposable {
|
|
6
|
+
get element() {
|
|
7
|
+
return this._element;
|
|
8
|
+
}
|
|
9
|
+
get id() {
|
|
10
|
+
return DEFAULT_TAB_IDENTIFIER;
|
|
11
|
+
}
|
|
6
12
|
constructor() {
|
|
7
13
|
super();
|
|
8
14
|
this._isPanelVisible = false;
|
|
@@ -35,12 +41,6 @@ export class DefaultTab extends CompositeDisposable {
|
|
|
35
41
|
}));
|
|
36
42
|
this.render();
|
|
37
43
|
}
|
|
38
|
-
get element() {
|
|
39
|
-
return this._element;
|
|
40
|
-
}
|
|
41
|
-
get id() {
|
|
42
|
-
return DEFAULT_TAB_IDENTIFIER;
|
|
43
|
-
}
|
|
44
44
|
update(event) {
|
|
45
45
|
this.params = Object.assign(Object.assign({}, this.params), event.params);
|
|
46
46
|
this.render();
|
|
@@ -4,6 +4,9 @@ import { toggleClass } from '../../../dom';
|
|
|
4
4
|
import { CompositeDisposable } from '../../../lifecycle';
|
|
5
5
|
import { createCloseButton } from '../../../svg';
|
|
6
6
|
export class Watermark extends CompositeDisposable {
|
|
7
|
+
get id() {
|
|
8
|
+
return 'watermark';
|
|
9
|
+
}
|
|
7
10
|
constructor() {
|
|
8
11
|
super();
|
|
9
12
|
this._element = document.createElement('div');
|
|
@@ -31,9 +34,6 @@ export class Watermark extends CompositeDisposable {
|
|
|
31
34
|
}
|
|
32
35
|
}));
|
|
33
36
|
}
|
|
34
|
-
get id() {
|
|
35
|
-
return 'watermark';
|
|
36
|
-
}
|
|
37
37
|
update(_event) {
|
|
38
38
|
// noop
|
|
39
39
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GroupPanelPartInitParameters, IContentRenderer, ITabRenderer } from '../groupview/types';
|
|
2
2
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
3
3
|
import { IDisposable } from '../lifecycle';
|
|
4
|
-
import { GroupPanelUpdateEvent } from '../groupview/
|
|
4
|
+
import { GroupPanelUpdateEvent } from '../groupview/types';
|
|
5
5
|
export interface IGroupPanelView extends IDisposable {
|
|
6
6
|
readonly content: IContentRenderer;
|
|
7
7
|
readonly tab?: ITabRenderer;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { DefaultTab } from './components/tab/defaultTab';
|
|
2
2
|
export class DefaultGroupPanelView {
|
|
3
|
-
constructor(renderers) {
|
|
4
|
-
var _a;
|
|
5
|
-
this._content = renderers.content;
|
|
6
|
-
this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
|
|
7
|
-
}
|
|
8
3
|
get content() {
|
|
9
4
|
return this._content;
|
|
10
5
|
}
|
|
11
6
|
get tab() {
|
|
12
7
|
return this._tab;
|
|
13
8
|
}
|
|
9
|
+
constructor(renderers) {
|
|
10
|
+
var _a;
|
|
11
|
+
this._content = renderers.content;
|
|
12
|
+
this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
|
|
13
|
+
}
|
|
14
14
|
init(params) {
|
|
15
15
|
this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
|
|
16
16
|
this.tab.init(params);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { GroupviewPanelState
|
|
1
|
+
import { GroupviewPanelState } from '../groupview/types';
|
|
2
2
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
3
|
+
import { IDockviewPanel } from './dockviewPanel';
|
|
3
4
|
export interface IPanelDeserializer {
|
|
4
5
|
fromJSON(panelData: GroupviewPanelState, group: GroupPanel): IDockviewPanel;
|
|
5
6
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SerializedGridObject } from '../gridview/gridview';
|
|
2
2
|
import { Position } from '../dnd/droptarget';
|
|
3
|
-
import { GroupviewPanelState
|
|
3
|
+
import { GroupviewPanelState } from '../groupview/types';
|
|
4
|
+
import { IDockviewPanel } from './dockviewPanel';
|
|
4
5
|
import { Event } from '../events';
|
|
5
6
|
import { IWatermarkRenderer } from '../groupview/types';
|
|
6
7
|
import { IPanelDeserializer } from './deserializer';
|
|
@@ -9,7 +10,7 @@ import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview';
|
|
|
9
10
|
import { DockviewApi } from '../api/component.api';
|
|
10
11
|
import { Orientation } from '../splitview/core/splitview';
|
|
11
12
|
import { GroupOptions, GroupPanelViewState, GroupviewDropEvent } from '../groupview/groupview';
|
|
12
|
-
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
13
|
+
import { GroupPanel, IGroupviewPanel } from '../groupview/groupviewPanel';
|
|
13
14
|
export interface PanelReference {
|
|
14
15
|
update: (event: {
|
|
15
16
|
params: {
|
|
@@ -33,16 +34,17 @@ export interface SerializedDockview {
|
|
|
33
34
|
tabHeight?: number;
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
|
-
export
|
|
37
|
+
export type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent' | 'defaultTabComponent' | 'createGroupControlElement'>;
|
|
37
38
|
export interface DockviewDropEvent extends GroupviewDropEvent {
|
|
38
39
|
api: DockviewApi;
|
|
39
|
-
group: GroupPanel;
|
|
40
|
+
group: GroupPanel | null;
|
|
40
41
|
}
|
|
41
42
|
export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
|
|
42
43
|
readonly activePanel: IDockviewPanel | undefined;
|
|
43
44
|
readonly totalPanels: number;
|
|
44
45
|
readonly panels: IDockviewPanel[];
|
|
45
46
|
readonly onDidDrop: Event<DockviewDropEvent>;
|
|
47
|
+
readonly orientation: Orientation;
|
|
46
48
|
tabHeight: number | undefined;
|
|
47
49
|
deserializer: IPanelDeserializer | undefined;
|
|
48
50
|
updateOptions(options: DockviewComponentUpdateOptions): void;
|
|
@@ -54,7 +56,7 @@ export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
|
|
|
54
56
|
removePanel(panel: IDockviewPanel): void;
|
|
55
57
|
getGroupPanel: (id: string) => IDockviewPanel | undefined;
|
|
56
58
|
createWatermarkComponent(): IWatermarkRenderer;
|
|
57
|
-
|
|
59
|
+
addGroup(options?: AddGroupOptions): IGroupviewPanel;
|
|
58
60
|
closeAllGroups(): void;
|
|
59
61
|
moveToNext(options?: MovementOptions): void;
|
|
60
62
|
moveToPrevious(options?: MovementOptions): void;
|
|
@@ -68,9 +70,11 @@ export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
|
|
|
68
70
|
readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
|
|
69
71
|
}
|
|
70
72
|
export declare class DockviewComponent extends BaseGrid<GroupPanel> implements IDockviewComponent {
|
|
73
|
+
private readonly nextGroupId;
|
|
71
74
|
private _deserializer;
|
|
72
75
|
private _api;
|
|
73
76
|
private _options;
|
|
77
|
+
private watermark;
|
|
74
78
|
private readonly _onDidDrop;
|
|
75
79
|
readonly onDidDrop: Event<DockviewDropEvent>;
|
|
76
80
|
private readonly _onDidRemovePanel;
|
|
@@ -81,6 +85,7 @@ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements I
|
|
|
81
85
|
readonly onDidLayoutFromJSON: Event<void>;
|
|
82
86
|
private readonly _onDidActivePanelChange;
|
|
83
87
|
readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
|
|
88
|
+
get orientation(): Orientation;
|
|
84
89
|
get totalPanels(): number;
|
|
85
90
|
get panels(): IDockviewPanel[];
|
|
86
91
|
get deserializer(): IPanelDeserializer | undefined;
|
|
@@ -90,6 +95,7 @@ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements I
|
|
|
90
95
|
set tabHeight(height: number | undefined);
|
|
91
96
|
get tabHeight(): number | undefined;
|
|
92
97
|
constructor(element: HTMLElement, options: DockviewComponentOptions);
|
|
98
|
+
private orthogonalize;
|
|
93
99
|
updateOptions(options: DockviewComponentUpdateOptions): void;
|
|
94
100
|
focus(): void;
|
|
95
101
|
getGroupPanel(id: string): IDockviewPanel | undefined;
|
|
@@ -111,9 +117,11 @@ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements I
|
|
|
111
117
|
skipDispose: boolean;
|
|
112
118
|
}): void;
|
|
113
119
|
createWatermarkComponent(): IWatermarkRenderer;
|
|
114
|
-
|
|
120
|
+
private updateWatermark;
|
|
121
|
+
addGroup(options?: AddGroupOptions): GroupPanel;
|
|
115
122
|
removeGroup(group: GroupPanel, skipActive?: boolean): void;
|
|
116
|
-
moveGroupOrPanel(referenceGroup: GroupPanel, groupId: string, itemId: string, target: Position, index?: number): void;
|
|
123
|
+
moveGroupOrPanel(referenceGroup: GroupPanel, groupId: string, itemId: string | undefined, target: Position, index?: number): void;
|
|
124
|
+
private moveGroup;
|
|
117
125
|
doSetGroupActive(group: GroupPanel | undefined, skipFocus?: boolean): void;
|
|
118
126
|
createGroup(options?: GroupOptions): GroupPanel;
|
|
119
127
|
private createPanel;
|