dockview 1.4.1 → 1.5.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 +4 -195
- package/dist/cjs/api/component.api.d.ts +8 -3
- package/dist/cjs/api/component.api.js +16 -4
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +1 -2
- package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -0
- package/dist/cjs/dockview/components/tab/defaultTab.js +6 -3
- package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
- package/dist/cjs/dockview/components/watermark/watermark.js +3 -1
- package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
- package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -5
- package/dist/cjs/dockview/defaultGroupPanelView.js +5 -20
- package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
- package/dist/cjs/dockview/deserializer.d.ts +0 -12
- package/dist/cjs/dockview/deserializer.js +0 -52
- package/dist/cjs/dockview/deserializer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +6 -8
- package/dist/cjs/dockview/dockviewComponent.js +84 -58
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +11 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +4 -2
- package/dist/cjs/gridview/baseComponentGridview.js +1 -1
- package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +1 -0
- package/dist/cjs/gridview/gridviewComponent.js +26 -18
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/groupview/groupview.d.ts +20 -18
- package/dist/cjs/groupview/groupview.js +44 -41
- package/dist/cjs/groupview/groupview.js.map +1 -1
- package/dist/cjs/groupview/groupviewPanel.d.ts +2 -2
- package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
- package/dist/cjs/groupview/tab.d.ts +1 -0
- package/dist/cjs/groupview/tab.js +3 -1
- package/dist/cjs/groupview/tab.js.map +1 -1
- package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +3 -5
- package/dist/cjs/groupview/titlebar/tabsContainer.js +3 -5
- package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/groupview/types.d.ts +0 -4
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +3 -0
- package/dist/cjs/paneview/defaultPaneviewHeader.js +32 -6
- package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +3 -1
- package/dist/cjs/paneview/draggablePaneviewPanel.js +24 -9
- package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
- package/dist/cjs/paneview/options.d.ts +2 -0
- package/dist/cjs/paneview/paneviewComponent.d.ts +14 -1
- package/dist/cjs/paneview/paneviewComponent.js +32 -17
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/react/deserializer.js +13 -5
- package/dist/cjs/react/deserializer.js.map +1 -1
- package/dist/cjs/react/dockview/defaultTab.d.ts +4 -0
- package/dist/cjs/react/dockview/defaultTab.js +73 -0
- package/dist/cjs/react/dockview/defaultTab.js.map +1 -0
- package/dist/cjs/react/dockview/dockview.d.ts +5 -3
- package/dist/cjs/react/dockview/dockview.js +45 -3
- package/dist/cjs/react/dockview/dockview.js.map +1 -1
- package/dist/cjs/react/dockview/groupControlsRenderer.d.ts +43 -0
- package/dist/cjs/react/dockview/groupControlsRenderer.js +87 -0
- package/dist/cjs/react/dockview/groupControlsRenderer.js.map +1 -0
- package/dist/cjs/react/dockview/reactContentPart.d.ts +1 -16
- package/dist/cjs/react/dockview/reactContentPart.js +2 -18
- package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
- package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -0
- package/dist/cjs/react/dockview/reactHeaderPart.js +4 -0
- package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
- package/dist/cjs/react/index.d.ts +2 -2
- package/dist/cjs/react/index.js +1 -2
- package/dist/cjs/react/index.js.map +1 -1
- package/dist/cjs/react/paneview/paneview.d.ts +2 -0
- package/dist/cjs/react/paneview/paneview.js +9 -0
- package/dist/cjs/react/paneview/paneview.js.map +1 -1
- package/dist/cjs/react/react.d.ts +1 -0
- package/dist/cjs/react/react.js +12 -2
- package/dist/cjs/react/react.js.map +1 -1
- package/dist/cjs/react/svg.d.ts +3 -0
- package/dist/cjs/react/svg.js +36 -0
- package/dist/cjs/react/svg.js.map +1 -0
- package/dist/cjs/splitview/splitviewComponent.d.ts +2 -0
- package/dist/cjs/splitview/splitviewComponent.js +20 -17
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/svg.d.ts +3 -0
- package/dist/cjs/svg.js +44 -0
- package/dist/cjs/svg.js.map +1 -0
- package/dist/dockview.amd.js +454 -204
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.noStyle.js +453 -203
- package/dist/dockview.cjs.js +454 -204
- package/dist/dockview.esm.js +449 -198
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.js +454 -204
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.noStyle.js +453 -203
- package/dist/esm/api/component.api.d.ts +8 -3
- package/dist/esm/api/component.api.js +16 -4
- package/dist/esm/dnd/droptarget.d.ts +1 -2
- package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -0
- package/dist/esm/dockview/components/tab/defaultTab.js +5 -2
- package/dist/esm/dockview/components/watermark/watermark.js +3 -1
- package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -5
- package/dist/esm/dockview/defaultGroupPanelView.js +5 -16
- package/dist/esm/dockview/deserializer.d.ts +0 -12
- package/dist/esm/dockview/deserializer.js +1 -27
- package/dist/esm/dockview/dockviewComponent.d.ts +6 -8
- package/dist/esm/dockview/dockviewComponent.js +56 -41
- package/dist/esm/dockview/options.d.ts +11 -1
- package/dist/esm/gridview/baseComponentGridview.d.ts +4 -2
- package/dist/esm/gridview/baseComponentGridview.js +1 -1
- package/dist/esm/gridview/gridviewComponent.d.ts +1 -0
- package/dist/esm/gridview/gridviewComponent.js +15 -7
- package/dist/esm/groupview/groupview.d.ts +20 -18
- package/dist/esm/groupview/groupview.js +42 -40
- package/dist/esm/groupview/groupviewPanel.d.ts +2 -2
- package/dist/esm/groupview/tab.d.ts +1 -0
- package/dist/esm/groupview/tab.js +3 -1
- package/dist/esm/groupview/titlebar/tabsContainer.d.ts +3 -5
- package/dist/esm/groupview/titlebar/tabsContainer.js +3 -5
- package/dist/esm/groupview/types.d.ts +0 -4
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/paneview/defaultPaneviewHeader.d.ts +3 -0
- package/dist/esm/paneview/defaultPaneviewHeader.js +32 -6
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +3 -1
- package/dist/esm/paneview/draggablePaneviewPanel.js +24 -9
- package/dist/esm/paneview/options.d.ts +2 -0
- package/dist/esm/paneview/paneviewComponent.d.ts +14 -1
- package/dist/esm/paneview/paneviewComponent.js +17 -6
- package/dist/esm/react/deserializer.js +13 -5
- package/dist/esm/react/dockview/defaultTab.d.ts +4 -0
- package/dist/esm/react/dockview/defaultTab.js +34 -0
- package/dist/esm/react/dockview/dockview.d.ts +5 -3
- package/dist/esm/react/dockview/dockview.js +30 -1
- package/dist/esm/react/dockview/groupControlsRenderer.d.ts +43 -0
- package/dist/esm/react/dockview/groupControlsRenderer.js +68 -0
- package/dist/esm/react/dockview/reactContentPart.d.ts +1 -16
- package/dist/esm/react/dockview/reactContentPart.js +2 -14
- package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -0
- package/dist/esm/react/dockview/reactHeaderPart.js +4 -0
- package/dist/esm/react/index.d.ts +2 -2
- package/dist/esm/react/index.js +1 -2
- package/dist/esm/react/paneview/paneview.d.ts +2 -0
- package/dist/esm/react/paneview/paneview.js +9 -0
- package/dist/esm/react/react.d.ts +1 -0
- package/dist/esm/react/react.js +12 -2
- package/dist/esm/react/svg.d.ts +3 -0
- package/dist/esm/react/svg.js +7 -0
- package/dist/esm/splitview/splitviewComponent.d.ts +2 -0
- package/dist/esm/splitview/splitviewComponent.js +9 -6
- package/dist/esm/svg.d.ts +3 -0
- package/dist/esm/svg.js +31 -0
- package/dist/styles/dockview.css +158 -40
- package/package.json +2 -2
|
@@ -39,7 +39,7 @@ export class GridviewComponent extends BaseGrid {
|
|
|
39
39
|
}
|
|
40
40
|
updateOptions(options) {
|
|
41
41
|
const hasOrientationChanged = typeof options.orientation === 'string' &&
|
|
42
|
-
this.
|
|
42
|
+
this.gridview.orientation !== options.orientation;
|
|
43
43
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
44
44
|
if (hasOrientationChanged) {
|
|
45
45
|
this.gridview.orientation = options.orientation;
|
|
@@ -75,13 +75,8 @@ export class GridviewComponent extends BaseGrid {
|
|
|
75
75
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
76
76
|
}
|
|
77
77
|
fromJSON(serializedGridview) {
|
|
78
|
+
this.clear();
|
|
78
79
|
const { grid, activePanel } = serializedGridview;
|
|
79
|
-
const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
|
|
80
|
-
for (const group of groups) {
|
|
81
|
-
group.disposable.dispose();
|
|
82
|
-
this.doRemoveGroup(group.value, { skipActive: true });
|
|
83
|
-
}
|
|
84
|
-
this.gridview.clear();
|
|
85
80
|
const queue = [];
|
|
86
81
|
this.gridview.deserialize(grid, {
|
|
87
82
|
fromJSON: (node) => {
|
|
@@ -103,6 +98,7 @@ export class GridviewComponent extends BaseGrid {
|
|
|
103
98
|
accessor: this,
|
|
104
99
|
isVisible: node.visible,
|
|
105
100
|
}));
|
|
101
|
+
this._onDidAddGroup.fire(view);
|
|
106
102
|
this.registerPanel(view);
|
|
107
103
|
return view;
|
|
108
104
|
},
|
|
@@ -117,6 +113,18 @@ export class GridviewComponent extends BaseGrid {
|
|
|
117
113
|
}
|
|
118
114
|
this._onDidLayoutfromJSON.fire();
|
|
119
115
|
}
|
|
116
|
+
clear() {
|
|
117
|
+
const hasActiveGroup = this.activeGroup;
|
|
118
|
+
const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
|
|
119
|
+
for (const group of groups) {
|
|
120
|
+
group.disposable.dispose();
|
|
121
|
+
this.doRemoveGroup(group.value, { skipActive: true });
|
|
122
|
+
}
|
|
123
|
+
if (hasActiveGroup) {
|
|
124
|
+
this.doSetGroupActive(undefined);
|
|
125
|
+
}
|
|
126
|
+
this.gridview.clear();
|
|
127
|
+
}
|
|
120
128
|
movePanel(panel, options) {
|
|
121
129
|
var _a;
|
|
122
130
|
let relativeLocation;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PanelTransfer } from '../dnd/dataTransfer';
|
|
2
2
|
import { Position } from '../dnd/droptarget';
|
|
3
|
-
import {
|
|
3
|
+
import { DockviewComponent } from '../dockview/dockviewComponent';
|
|
4
4
|
import { Event } from '../events';
|
|
5
5
|
import { IGridPanelView } from '../gridview/baseComponentGridview';
|
|
6
6
|
import { IViewSize } from '../gridview/gridview';
|
|
@@ -9,11 +9,6 @@ import { PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
|
|
9
9
|
import { IDockviewPanel } from './groupPanel';
|
|
10
10
|
import { GroupPanel } from './groupviewPanel';
|
|
11
11
|
import { DockviewDropTargets } from './dnd';
|
|
12
|
-
export declare enum GroupChangeKind2 {
|
|
13
|
-
ADD_PANEL = "ADD_PANEL",
|
|
14
|
-
REMOVE_PANEL = "REMOVE_PANEL",
|
|
15
|
-
PANEL_ACTIVE = "PANEL_ACTIVE"
|
|
16
|
-
}
|
|
17
12
|
export interface DndService {
|
|
18
13
|
canDisplayOverlay(group: IGroupview, event: DragEvent, target: DockviewDropTargets): boolean;
|
|
19
14
|
onDrop(group: IGroupview, event: DragEvent, position: Position, index?: number): void;
|
|
@@ -49,14 +44,13 @@ export interface GroupPanelViewState extends CoreGroupOptions {
|
|
|
49
44
|
id: string;
|
|
50
45
|
}
|
|
51
46
|
export interface GroupviewChangeEvent {
|
|
52
|
-
readonly
|
|
53
|
-
readonly panel?: IDockviewPanel;
|
|
47
|
+
readonly panel: IDockviewPanel;
|
|
54
48
|
}
|
|
55
49
|
export interface GroupviewDropEvent {
|
|
56
|
-
nativeEvent: DragEvent;
|
|
57
|
-
position: Position;
|
|
50
|
+
readonly nativeEvent: DragEvent;
|
|
51
|
+
readonly position: Position;
|
|
52
|
+
readonly index?: number;
|
|
58
53
|
getData(): PanelTransfer | undefined;
|
|
59
|
-
index?: number;
|
|
60
54
|
}
|
|
61
55
|
export interface IHeader {
|
|
62
56
|
hidden: boolean;
|
|
@@ -70,7 +64,9 @@ export interface IGroupview extends IDisposable, IGridPanelView {
|
|
|
70
64
|
readonly header: IHeader;
|
|
71
65
|
readonly isContentFocused: boolean;
|
|
72
66
|
readonly onDidDrop: Event<GroupviewDropEvent>;
|
|
73
|
-
readonly
|
|
67
|
+
readonly onDidAddPanel: Event<GroupviewChangeEvent>;
|
|
68
|
+
readonly onDidRemovePanel: Event<GroupviewChangeEvent>;
|
|
69
|
+
readonly onDidActivePanelChange: Event<GroupviewChangeEvent>;
|
|
74
70
|
readonly onMove: Event<GroupMoveEvent>;
|
|
75
71
|
locked: boolean;
|
|
76
72
|
isPanelActive: (panel: IDockviewPanel) => boolean;
|
|
@@ -102,10 +98,11 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
102
98
|
private readonly tabsContainer;
|
|
103
99
|
private readonly contentContainer;
|
|
104
100
|
private readonly dropTarget;
|
|
105
|
-
private _activePanel
|
|
101
|
+
private _activePanel;
|
|
106
102
|
private watermark?;
|
|
107
103
|
private _isGroupActive;
|
|
108
104
|
private _locked;
|
|
105
|
+
private _control;
|
|
109
106
|
private mostRecentlyUsed;
|
|
110
107
|
private readonly _onDidChange;
|
|
111
108
|
readonly onDidChange: Event<IViewSize | undefined>;
|
|
@@ -114,10 +111,14 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
114
111
|
private _panels;
|
|
115
112
|
private readonly _onMove;
|
|
116
113
|
readonly onMove: Event<GroupMoveEvent>;
|
|
117
|
-
private readonly _onDidGroupChange;
|
|
118
|
-
readonly onDidGroupChange: Event<GroupviewChangeEvent>;
|
|
119
114
|
private readonly _onDidDrop;
|
|
120
115
|
readonly onDidDrop: Event<GroupviewDropEvent>;
|
|
116
|
+
private readonly _onDidAddPanel;
|
|
117
|
+
readonly onDidAddPanel: Event<GroupviewChangeEvent>;
|
|
118
|
+
private readonly _onDidRemovePanel;
|
|
119
|
+
readonly onDidRemovePanel: Event<GroupviewChangeEvent>;
|
|
120
|
+
private readonly _onDidActivePanelChange;
|
|
121
|
+
readonly onDidActivePanelChange: Event<GroupviewChangeEvent>;
|
|
121
122
|
get element(): HTMLElement;
|
|
122
123
|
get activePanel(): IDockviewPanel | undefined;
|
|
123
124
|
get locked(): boolean;
|
|
@@ -133,7 +134,7 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
133
134
|
get hasWatermark(): boolean;
|
|
134
135
|
get header(): IHeader;
|
|
135
136
|
get isContentFocused(): boolean;
|
|
136
|
-
constructor(container: HTMLElement, accessor:
|
|
137
|
+
constructor(container: HTMLElement, accessor: DockviewComponent, id: string, options: GroupOptions, parent: GroupPanel);
|
|
137
138
|
initialize(): void;
|
|
138
139
|
indexOf(panel: IDockviewPanel): number;
|
|
139
140
|
toJSON(): GroupPanelViewState;
|
|
@@ -152,14 +153,15 @@ export declare class Groupview extends CompositeDisposable implements IGroupview
|
|
|
152
153
|
openPanel(panel: IDockviewPanel, options?: {
|
|
153
154
|
index?: number;
|
|
154
155
|
skipFocus?: boolean;
|
|
155
|
-
|
|
156
|
+
skipSetPanelActive?: boolean;
|
|
157
|
+
skipSetGroupActive?: boolean;
|
|
156
158
|
}): void;
|
|
157
159
|
removePanel(groupItemOrId: IDockviewPanel | string): IDockviewPanel;
|
|
158
160
|
closeAllPanels(): void;
|
|
159
161
|
closePanel(panel: IDockviewPanel): void;
|
|
160
162
|
private doClose;
|
|
161
163
|
isPanelActive(panel: IDockviewPanel): boolean;
|
|
162
|
-
updateActions(): void;
|
|
164
|
+
updateActions(element: HTMLElement | undefined): void;
|
|
163
165
|
setActive(isGroupActive: boolean, skipFocus?: boolean, force?: boolean): void;
|
|
164
166
|
layout(width: number, height: number): void;
|
|
165
167
|
private _removePanel;
|
|
@@ -7,12 +7,6 @@ import { CompositeDisposable } from '../lifecycle';
|
|
|
7
7
|
import { ContentContainer } from './panel/content';
|
|
8
8
|
import { TabsContainer } from './titlebar/tabsContainer';
|
|
9
9
|
import { DockviewDropTargets } from './dnd';
|
|
10
|
-
export var GroupChangeKind2;
|
|
11
|
-
(function (GroupChangeKind2) {
|
|
12
|
-
GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
|
|
13
|
-
GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
|
|
14
|
-
GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
|
|
15
|
-
})(GroupChangeKind2 || (GroupChangeKind2 = {}));
|
|
16
10
|
export class Groupview extends CompositeDisposable {
|
|
17
11
|
constructor(container, accessor, id, options, parent) {
|
|
18
12
|
super();
|
|
@@ -31,12 +25,15 @@ export class Groupview extends CompositeDisposable {
|
|
|
31
25
|
this._panels = [];
|
|
32
26
|
this._onMove = new Emitter();
|
|
33
27
|
this.onMove = this._onMove.event;
|
|
34
|
-
this._onDidGroupChange = new Emitter();
|
|
35
|
-
this.onDidGroupChange = this._onDidGroupChange.event;
|
|
36
28
|
this._onDidDrop = new Emitter();
|
|
37
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;
|
|
38
36
|
this.container.classList.add('groupview');
|
|
39
|
-
this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
|
|
40
37
|
this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
|
|
41
38
|
tabHeight: options.tabHeight,
|
|
42
39
|
});
|
|
@@ -48,7 +45,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
48
45
|
return false;
|
|
49
46
|
}
|
|
50
47
|
const data = getPanelData();
|
|
51
|
-
if (data) {
|
|
48
|
+
if (data && data.viewId === this.accessor.id) {
|
|
52
49
|
const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
|
|
53
50
|
return !groupHasOnePanelAndIsActiveDragElement;
|
|
54
51
|
}
|
|
@@ -58,7 +55,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
58
55
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
59
56
|
this.header.hidden = !!options.hideHeader;
|
|
60
57
|
this.locked = !!options.locked;
|
|
61
|
-
this.addDisposables(this._onMove, this.
|
|
58
|
+
this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
|
|
62
59
|
this.handleDropEvent(event.event, Position.Center, event.index);
|
|
63
60
|
}), this.contentContainer.onDidFocus(() => {
|
|
64
61
|
this.accessor.doSetGroupActive(this.parent, true);
|
|
@@ -130,6 +127,15 @@ export class Groupview extends CompositeDisposable {
|
|
|
130
127
|
// correctly initialized
|
|
131
128
|
this.setActive(this.isActive, true, true);
|
|
132
129
|
this.updateContainer();
|
|
130
|
+
if (this.accessor.options.createGroupControlElement) {
|
|
131
|
+
this._control = this.accessor.options.createGroupControlElement(this.parent);
|
|
132
|
+
this.addDisposables(this._control);
|
|
133
|
+
this._control.init({
|
|
134
|
+
containerApi: new DockviewApi(this.accessor),
|
|
135
|
+
api: this.parent.api,
|
|
136
|
+
});
|
|
137
|
+
this.tabsContainer.setActionElement(this._control.element);
|
|
138
|
+
}
|
|
133
139
|
}
|
|
134
140
|
indexOf(panel) {
|
|
135
141
|
return this.tabsContainer.indexOf(panel.id);
|
|
@@ -210,16 +216,21 @@ export class Groupview extends CompositeDisposable {
|
|
|
210
216
|
options.index > this.panels.length) {
|
|
211
217
|
options.index = this.panels.length;
|
|
212
218
|
}
|
|
213
|
-
const
|
|
219
|
+
const skipSetPanelActive = !!options.skipSetPanelActive;
|
|
220
|
+
const skipSetGroupActive = !!options.skipSetGroupActive;
|
|
214
221
|
// ensure the group is updated before we fire any events
|
|
215
222
|
panel.updateParentGroup(this.parent, true);
|
|
216
|
-
if (
|
|
217
|
-
|
|
223
|
+
if (this._activePanel === panel) {
|
|
224
|
+
if (!skipSetGroupActive) {
|
|
225
|
+
this.accessor.doSetGroupActive(this.parent);
|
|
226
|
+
}
|
|
218
227
|
return;
|
|
219
228
|
}
|
|
220
|
-
this.doAddPanel(panel, options.index);
|
|
221
|
-
if (!
|
|
229
|
+
this.doAddPanel(panel, options.index, skipSetPanelActive);
|
|
230
|
+
if (!skipSetPanelActive) {
|
|
222
231
|
this.doSetActivePanel(panel);
|
|
232
|
+
}
|
|
233
|
+
if (!skipSetGroupActive) {
|
|
223
234
|
this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
|
|
224
235
|
}
|
|
225
236
|
this.updateContainer();
|
|
@@ -255,14 +266,8 @@ export class Groupview extends CompositeDisposable {
|
|
|
255
266
|
isPanelActive(panel) {
|
|
256
267
|
return this._activePanel === panel;
|
|
257
268
|
}
|
|
258
|
-
updateActions() {
|
|
259
|
-
|
|
260
|
-
if (this.isActive && ((_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.actions)) {
|
|
261
|
-
this.tabsContainer.setActionElement(this._activePanel.view.actions.element);
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
this.tabsContainer.setActionElement(undefined);
|
|
265
|
-
}
|
|
269
|
+
updateActions(element) {
|
|
270
|
+
this.tabsContainer.setActionElement(element);
|
|
266
271
|
}
|
|
267
272
|
setActive(isGroupActive, skipFocus = false, force = false) {
|
|
268
273
|
var _a, _b;
|
|
@@ -318,16 +323,15 @@ export class Groupview extends CompositeDisposable {
|
|
|
318
323
|
if (this.mostRecentlyUsed.includes(panel)) {
|
|
319
324
|
this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
|
|
320
325
|
}
|
|
321
|
-
this.
|
|
322
|
-
kind: GroupChangeKind2.REMOVE_PANEL,
|
|
323
|
-
panel,
|
|
324
|
-
});
|
|
326
|
+
this._onDidRemovePanel.fire({ panel });
|
|
325
327
|
}
|
|
326
|
-
doAddPanel(panel, index = this.panels.length) {
|
|
328
|
+
doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
|
|
327
329
|
const existingPanel = this._panels.indexOf(panel);
|
|
328
330
|
const hasExistingPanel = existingPanel > -1;
|
|
329
331
|
this.tabsContainer.openPanel(panel, index);
|
|
330
|
-
|
|
332
|
+
if (!skipSetActive) {
|
|
333
|
+
this.contentContainer.openPanel(panel);
|
|
334
|
+
}
|
|
331
335
|
this.tabsContainer.show();
|
|
332
336
|
this.contentContainer.show();
|
|
333
337
|
if (hasExistingPanel) {
|
|
@@ -336,10 +340,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
336
340
|
}
|
|
337
341
|
this.updateMru(panel);
|
|
338
342
|
this.panels.splice(index, 0, panel);
|
|
339
|
-
this.
|
|
340
|
-
kind: GroupChangeKind2.ADD_PANEL,
|
|
341
|
-
panel,
|
|
342
|
-
});
|
|
343
|
+
this._onDidAddPanel.fire({ panel });
|
|
343
344
|
}
|
|
344
345
|
doSetActivePanel(panel) {
|
|
345
346
|
this._activePanel = panel;
|
|
@@ -347,10 +348,7 @@ export class Groupview extends CompositeDisposable {
|
|
|
347
348
|
this.tabsContainer.setActivePanel(panel);
|
|
348
349
|
panel.layout(this._width, this._height);
|
|
349
350
|
this.updateMru(panel);
|
|
350
|
-
this.
|
|
351
|
-
kind: GroupChangeKind2.PANEL_ACTIVE,
|
|
352
|
-
panel,
|
|
353
|
-
});
|
|
351
|
+
this._onDidActivePanelChange.fire({ panel });
|
|
354
352
|
}
|
|
355
353
|
}
|
|
356
354
|
updateMru(panel) {
|
|
@@ -360,7 +358,6 @@ export class Groupview extends CompositeDisposable {
|
|
|
360
358
|
this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
|
|
361
359
|
}
|
|
362
360
|
updateContainer() {
|
|
363
|
-
this.updateActions();
|
|
364
361
|
toggleClass(this.container, 'empty', this.isEmpty);
|
|
365
362
|
this.panels.forEach((panel) => panel.updateParentGroup(this.parent, this.isActive));
|
|
366
363
|
if (this.isEmpty && !this.watermark) {
|
|
@@ -393,7 +390,12 @@ export class Groupview extends CompositeDisposable {
|
|
|
393
390
|
canDisplayOverlay(event, target) {
|
|
394
391
|
// custom overlay handler
|
|
395
392
|
if (this.accessor.options.showDndOverlay) {
|
|
396
|
-
return this.accessor.options.showDndOverlay(
|
|
393
|
+
return this.accessor.options.showDndOverlay({
|
|
394
|
+
nativeEvent: event,
|
|
395
|
+
target,
|
|
396
|
+
group: this.accessor.getPanel(this.id),
|
|
397
|
+
getData: getPanelData,
|
|
398
|
+
});
|
|
397
399
|
}
|
|
398
400
|
return false;
|
|
399
401
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IFrameworkPart } from '../panel/types';
|
|
2
|
-
import {
|
|
2
|
+
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';
|
|
@@ -26,7 +26,7 @@ export declare class GroupPanel extends GridviewPanel implements IGroupviewPanel
|
|
|
26
26
|
get locked(): boolean;
|
|
27
27
|
set locked(value: boolean);
|
|
28
28
|
get header(): IHeader;
|
|
29
|
-
constructor(accessor:
|
|
29
|
+
constructor(accessor: DockviewComponent, id: string, options: GroupOptions);
|
|
30
30
|
initialize(): void;
|
|
31
31
|
setActive(isActive: boolean): void;
|
|
32
32
|
layout(width: number, height: number): void;
|
|
@@ -14,6 +14,7 @@ export class Tab extends CompositeDisposable {
|
|
|
14
14
|
constructor(panelId, accessor, group) {
|
|
15
15
|
super();
|
|
16
16
|
this.panelId = panelId;
|
|
17
|
+
this.accessor = accessor;
|
|
17
18
|
this.group = group;
|
|
18
19
|
this._onChanged = new Emitter();
|
|
19
20
|
this.onChanged = this._onChanged.event;
|
|
@@ -24,6 +25,7 @@ export class Tab extends CompositeDisposable {
|
|
|
24
25
|
this._element.className = 'tab';
|
|
25
26
|
this._element.tabIndex = 0;
|
|
26
27
|
this._element.draggable = true;
|
|
28
|
+
toggleClass(this.element, 'inactive-tab', true);
|
|
27
29
|
this.addDisposables(new (class Handler extends DragHandler {
|
|
28
30
|
constructor() {
|
|
29
31
|
super(...arguments);
|
|
@@ -63,7 +65,7 @@ export class Tab extends CompositeDisposable {
|
|
|
63
65
|
validOverlays: 'none',
|
|
64
66
|
canDisplayOverlay: (event) => {
|
|
65
67
|
const data = getPanelData();
|
|
66
|
-
if (data) {
|
|
68
|
+
if (data && this.accessor.id === data.viewId) {
|
|
67
69
|
return this.panelId !== data.panelId;
|
|
68
70
|
}
|
|
69
71
|
return this.group.model.canDisplayOverlay(event, DockviewDropTargets.Tab);
|
|
@@ -2,7 +2,7 @@ import { IDisposable, CompositeDisposable } from '../../lifecycle';
|
|
|
2
2
|
import { Event } from '../../events';
|
|
3
3
|
import { ITab } from '../tab';
|
|
4
4
|
import { IDockviewPanel } from '../groupPanel';
|
|
5
|
-
import {
|
|
5
|
+
import { DockviewComponent } from '../../dockview/dockviewComponent';
|
|
6
6
|
import { GroupPanel } from '../groupviewPanel';
|
|
7
7
|
export interface TabDropIndexEvent {
|
|
8
8
|
event: DragEvent;
|
|
@@ -37,8 +37,6 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
|
|
|
37
37
|
private readonly voidDropTarget;
|
|
38
38
|
private tabs;
|
|
39
39
|
private selectedIndex;
|
|
40
|
-
private active;
|
|
41
|
-
private activePanel;
|
|
42
40
|
private actions;
|
|
43
41
|
private _height;
|
|
44
42
|
private _hidden;
|
|
@@ -57,10 +55,10 @@ export declare class TabsContainer extends CompositeDisposable implements ITabsC
|
|
|
57
55
|
isActive(tab: ITab): boolean;
|
|
58
56
|
at(index: number): ITab;
|
|
59
57
|
indexOf(id: string): number;
|
|
60
|
-
constructor(accessor:
|
|
58
|
+
constructor(accessor: DockviewComponent, group: GroupPanel, options: {
|
|
61
59
|
tabHeight?: number;
|
|
62
60
|
});
|
|
63
|
-
setActive(
|
|
61
|
+
setActive(_isGroupActive: boolean): void;
|
|
64
62
|
private addTab;
|
|
65
63
|
delete(id: string): void;
|
|
66
64
|
setActivePanel(panel: IDockviewPanel): void;
|
|
@@ -12,7 +12,6 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
12
12
|
this.group = group;
|
|
13
13
|
this.tabs = [];
|
|
14
14
|
this.selectedIndex = -1;
|
|
15
|
-
this.active = false;
|
|
16
15
|
this._hidden = false;
|
|
17
16
|
this._onDrop = new Emitter();
|
|
18
17
|
this.onDrop = this._onDrop.event;
|
|
@@ -34,7 +33,7 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
34
33
|
canDisplayOverlay: (event) => {
|
|
35
34
|
var _a;
|
|
36
35
|
const data = getPanelData();
|
|
37
|
-
if (data) {
|
|
36
|
+
if (data && this.accessor.id === data.viewId) {
|
|
38
37
|
// don't show the overlay if the tab being dragged is the last panel of this group
|
|
39
38
|
return ((_a = last(this.tabs)) === null || _a === void 0 ? void 0 : _a.value.panelId) !== data.panelId;
|
|
40
39
|
}
|
|
@@ -116,8 +115,8 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
116
115
|
indexOf(id) {
|
|
117
116
|
return this.tabs.findIndex((tab) => tab.value.panelId === id);
|
|
118
117
|
}
|
|
119
|
-
setActive(
|
|
120
|
-
|
|
118
|
+
setActive(_isGroupActive) {
|
|
119
|
+
// noop
|
|
121
120
|
}
|
|
122
121
|
addTab(tab, index = this.tabs.length) {
|
|
123
122
|
if (index < 0 || index > this.tabs.length) {
|
|
@@ -178,7 +177,6 @@ export class TabsContainer extends CompositeDisposable {
|
|
|
178
177
|
}));
|
|
179
178
|
const value = { value: tabToAdd, disposable };
|
|
180
179
|
this.addTab(value, index);
|
|
181
|
-
this.activePanel = panel;
|
|
182
180
|
}
|
|
183
181
|
closePanel(panel) {
|
|
184
182
|
this.delete(panel.id);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IDisposable } from '../lifecycle';
|
|
2
1
|
import { IDockviewComponent } from '../dockview/dockviewComponent';
|
|
3
2
|
import { DockviewPanelApi } from '../api/groupPanelApi';
|
|
4
3
|
import { PanelInitParameters, IPanel } from '../panel/types';
|
|
@@ -32,9 +31,6 @@ export interface ITabRenderer extends IPanel {
|
|
|
32
31
|
init(parameters: GroupPanelPartInitParameters): void;
|
|
33
32
|
updateParentGroup(group: GroupPanel, isPanelVisible: boolean): void;
|
|
34
33
|
}
|
|
35
|
-
export interface IActionsRenderer extends IDisposable {
|
|
36
|
-
readonly element: HTMLElement;
|
|
37
|
-
}
|
|
38
34
|
export interface IContentRenderer extends IPanel {
|
|
39
35
|
readonly element: HTMLElement;
|
|
40
36
|
readonly actions?: HTMLElement;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -6,12 +6,14 @@ export * from './groupview/groupview';
|
|
|
6
6
|
export * from './gridview/baseComponentGridview';
|
|
7
7
|
export * from './groupview/panel/content';
|
|
8
8
|
export * from './groupview/tab';
|
|
9
|
+
export * from './groupview/dnd';
|
|
9
10
|
export * from './groupview/types';
|
|
10
11
|
export * from './dockview/options';
|
|
11
12
|
export * from './dockview/dockviewComponent';
|
|
12
13
|
export * from './gridview/gridviewComponent';
|
|
13
14
|
export * from './splitview/splitviewComponent';
|
|
14
15
|
export * from './paneview/paneviewComponent';
|
|
16
|
+
export { PaneviewComponentOptions } from './paneview/options';
|
|
15
17
|
export * from './gridview/gridviewPanel';
|
|
16
18
|
export * from './splitview/splitviewPanel';
|
|
17
19
|
export * from './paneview/paneviewPanel';
|
package/dist/esm/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from './groupview/groupview';
|
|
|
6
6
|
export * from './gridview/baseComponentGridview';
|
|
7
7
|
export * from './groupview/panel/content';
|
|
8
8
|
export * from './groupview/tab';
|
|
9
|
+
export * from './groupview/dnd';
|
|
9
10
|
export * from './groupview/types';
|
|
10
11
|
export * from './dockview/options';
|
|
11
12
|
export * from './dockview/dockviewComponent';
|
|
@@ -3,6 +3,8 @@ import { CompositeDisposable } from '../lifecycle';
|
|
|
3
3
|
import { PanelUpdateEvent } from '../panel/types';
|
|
4
4
|
import { IPaneHeaderPart, PanePanelInitParameter } from './paneviewPanel';
|
|
5
5
|
export declare class DefaultHeader extends CompositeDisposable implements IPaneHeaderPart {
|
|
6
|
+
private readonly _expandedIcon;
|
|
7
|
+
private readonly _collapsedIcon;
|
|
6
8
|
private readonly disposable;
|
|
7
9
|
private readonly _element;
|
|
8
10
|
private readonly _content;
|
|
@@ -13,6 +15,7 @@ export declare class DefaultHeader extends CompositeDisposable implements IPaneH
|
|
|
13
15
|
init(params: PanePanelInitParameter & {
|
|
14
16
|
api: PaneviewPanelApiImpl;
|
|
15
17
|
}): void;
|
|
18
|
+
private updateIcon;
|
|
16
19
|
update(_params: PanelUpdateEvent): void;
|
|
17
20
|
dispose(): void;
|
|
18
21
|
}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { addDisposableListener } from '../events';
|
|
2
2
|
import { CompositeDisposable, MutableDisposable } from '../lifecycle';
|
|
3
|
+
import { toggleClass } from '../dom';
|
|
4
|
+
import { createChevronRightButton, createExpandMoreButton } from '../svg';
|
|
3
5
|
export class DefaultHeader extends CompositeDisposable {
|
|
4
6
|
constructor() {
|
|
5
7
|
super();
|
|
8
|
+
this._expandedIcon = createExpandMoreButton();
|
|
9
|
+
this._collapsedIcon = createChevronRightButton();
|
|
6
10
|
this.disposable = new MutableDisposable();
|
|
7
11
|
this.apiRef = { api: null };
|
|
8
12
|
this._element = document.createElement('div');
|
|
9
13
|
this.element.className = 'default-header';
|
|
10
14
|
this._content = document.createElement('span');
|
|
11
|
-
this._expander = document.createElement('
|
|
12
|
-
this.
|
|
15
|
+
this._expander = document.createElement('div');
|
|
16
|
+
this._expander.className = 'dockview-pane-header-icon';
|
|
13
17
|
this.element.appendChild(this._expander);
|
|
14
|
-
this.
|
|
18
|
+
this.element.appendChild(this._content);
|
|
19
|
+
this.addDisposables(addDisposableListener(this._element, 'click', () => {
|
|
15
20
|
var _a;
|
|
16
21
|
(_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);
|
|
17
22
|
}));
|
|
@@ -22,11 +27,32 @@ export class DefaultHeader extends CompositeDisposable {
|
|
|
22
27
|
init(params) {
|
|
23
28
|
this.apiRef.api = params.api;
|
|
24
29
|
this._content.textContent = params.title;
|
|
25
|
-
this.
|
|
26
|
-
this.disposable.value = params.api.onDidExpansionChange((
|
|
27
|
-
this.
|
|
30
|
+
this.updateIcon();
|
|
31
|
+
this.disposable.value = params.api.onDidExpansionChange(() => {
|
|
32
|
+
this.updateIcon();
|
|
28
33
|
});
|
|
29
34
|
}
|
|
35
|
+
updateIcon() {
|
|
36
|
+
var _a;
|
|
37
|
+
const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);
|
|
38
|
+
toggleClass(this._expander, 'collapsed', !isExpanded);
|
|
39
|
+
if (isExpanded) {
|
|
40
|
+
if (this._expander.contains(this._collapsedIcon)) {
|
|
41
|
+
this._collapsedIcon.remove();
|
|
42
|
+
}
|
|
43
|
+
if (!this._expander.contains(this._expandedIcon)) {
|
|
44
|
+
this._expander.appendChild(this._expandedIcon);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (this._expander.contains(this._expandedIcon)) {
|
|
49
|
+
this._expandedIcon.remove();
|
|
50
|
+
}
|
|
51
|
+
if (!this._expander.contains(this._collapsedIcon)) {
|
|
52
|
+
this._expander.appendChild(this._collapsedIcon);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
30
56
|
update(_params) {
|
|
31
57
|
//
|
|
32
58
|
}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { PaneTransfer } from '../dnd/dataTransfer';
|
|
2
2
|
import { DroptargetEvent } from '../dnd/droptarget';
|
|
3
3
|
import { Orientation } from '../splitview/core/splitview';
|
|
4
|
+
import { IPaneviewComponent } from './paneviewComponent';
|
|
4
5
|
import { IPaneviewPanel, PaneviewPanel } from './paneviewPanel';
|
|
5
6
|
export interface PaneviewDropEvent2 extends DroptargetEvent {
|
|
6
7
|
panel: IPaneviewPanel;
|
|
7
8
|
getData: () => PaneTransfer | undefined;
|
|
8
9
|
}
|
|
9
10
|
export declare abstract class DraggablePaneviewPanel extends PaneviewPanel {
|
|
11
|
+
private readonly accessor;
|
|
10
12
|
private handler;
|
|
11
13
|
private target;
|
|
12
14
|
private readonly _onDidDrop;
|
|
13
15
|
readonly onDidDrop: import("../events").Event<PaneviewDropEvent2>;
|
|
14
|
-
constructor(id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, disableDnd: boolean);
|
|
16
|
+
constructor(accessor: IPaneviewComponent, id: string, component: string, headerComponent: string | undefined, orientation: Orientation, isExpanded: boolean, disableDnd: boolean);
|
|
15
17
|
private initDragFeatures;
|
|
16
18
|
private onDrop;
|
|
17
19
|
}
|
|
@@ -4,8 +4,9 @@ import { Droptarget, Position } from '../dnd/droptarget';
|
|
|
4
4
|
import { Emitter } from '../events';
|
|
5
5
|
import { PaneviewPanel, } from './paneviewPanel';
|
|
6
6
|
export class DraggablePaneviewPanel extends PaneviewPanel {
|
|
7
|
-
constructor(id, component, headerComponent, orientation, isExpanded, disableDnd) {
|
|
7
|
+
constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
|
|
8
8
|
super(id, component, headerComponent, orientation, isExpanded, true);
|
|
9
|
+
this.accessor = accessor;
|
|
9
10
|
this._onDidDrop = new Emitter();
|
|
10
11
|
this.onDidDrop = this._onDidDrop.event;
|
|
11
12
|
if (!disableDnd) {
|
|
@@ -17,10 +18,11 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
|
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
20
|
const id = this.id;
|
|
21
|
+
const accessorId = this.accessor.id;
|
|
20
22
|
this.header.draggable = true;
|
|
21
23
|
this.handler = new (class PaneDragHandler extends DragHandler {
|
|
22
24
|
getData() {
|
|
23
|
-
LocalSelectionTransfer.getInstance().setData([new PaneTransfer(
|
|
25
|
+
LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);
|
|
24
26
|
return {
|
|
25
27
|
dispose: () => {
|
|
26
28
|
LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);
|
|
@@ -30,12 +32,22 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
|
|
|
30
32
|
})(this.header);
|
|
31
33
|
this.target = new Droptarget(this.element, {
|
|
32
34
|
validOverlays: 'vertical',
|
|
33
|
-
canDisplayOverlay: () => {
|
|
35
|
+
canDisplayOverlay: (event) => {
|
|
34
36
|
const data = getPaneData();
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
+
if (data) {
|
|
38
|
+
if (data.paneId !== this.id &&
|
|
39
|
+
data.viewId === this.accessor.id) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
|
-
|
|
43
|
+
if (this.accessor.options.showDndOverlay) {
|
|
44
|
+
return this.accessor.options.showDndOverlay({
|
|
45
|
+
nativeEvent: event,
|
|
46
|
+
getData: getPaneData,
|
|
47
|
+
panel: this,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
39
51
|
},
|
|
40
52
|
});
|
|
41
53
|
this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {
|
|
@@ -44,8 +56,10 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
|
|
|
44
56
|
}
|
|
45
57
|
onDrop(event) {
|
|
46
58
|
const data = getPaneData();
|
|
47
|
-
if (!data) {
|
|
48
|
-
|
|
59
|
+
if (!data || data.viewId !== this.accessor.id) {
|
|
60
|
+
// if there is no local drag event for this panel
|
|
61
|
+
// or if the drag event was creating by another Paneview instance
|
|
62
|
+
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
|
|
49
63
|
return;
|
|
50
64
|
}
|
|
51
65
|
const containerApi = this._params
|
|
@@ -53,7 +67,8 @@ export class DraggablePaneviewPanel extends PaneviewPanel {
|
|
|
53
67
|
const panelId = data.paneId;
|
|
54
68
|
const existingPanel = containerApi.getPanel(panelId);
|
|
55
69
|
if (!existingPanel) {
|
|
56
|
-
|
|
70
|
+
// if the panel doesn't exist
|
|
71
|
+
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
|
|
57
72
|
return;
|
|
58
73
|
}
|
|
59
74
|
const allPanels = containerApi.panels;
|