dockview-core 1.7.6 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/cjs/api/component.api.d.ts +6 -1
- package/dist/cjs/api/component.api.d.ts.map +1 -1
- package/dist/cjs/api/component.api.js +6 -0
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +30 -0
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +1 -0
- package/dist/cjs/api/dockviewGroupPanelApi.js +54 -0
- package/dist/cjs/api/dockviewGroupPanelApi.js.map +1 -0
- package/dist/cjs/api/dockviewPanelApi.d.ts +14 -1
- package/dist/cjs/api/dockviewPanelApi.d.ts.map +1 -1
- package/dist/cjs/api/dockviewPanelApi.js +6 -1
- package/dist/cjs/api/dockviewPanelApi.js.map +1 -1
- package/dist/cjs/array.d.ts +1 -0
- package/dist/cjs/array.d.ts.map +1 -1
- package/dist/cjs/array.js +10 -1
- package/dist/cjs/array.js.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +1 -0
- package/dist/cjs/dnd/abstractDragHandler.d.ts.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.js +7 -0
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +11 -0
- package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
- package/dist/cjs/dnd/droptarget.js +32 -9
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dnd/groupDragHandler.d.ts +1 -0
- package/dist/cjs/dnd/groupDragHandler.d.ts.map +1 -1
- package/dist/cjs/dnd/groupDragHandler.js +18 -0
- package/dist/cjs/dnd/groupDragHandler.js.map +1 -1
- package/dist/cjs/dnd/overlay.d.ts +40 -0
- package/dist/cjs/dnd/overlay.d.ts.map +1 -0
- package/dist/cjs/dnd/overlay.js +382 -0
- package/dist/cjs/dnd/overlay.js.map +1 -0
- package/dist/cjs/dockview/components/tab/tab.d.ts +2 -2
- package/dist/cjs/dockview/components/tab/tab.d.ts.map +1 -1
- package/dist/cjs/dockview/components/tab/tab.js +0 -7
- package/dist/cjs/dockview/components/tab/tab.js.map +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +8 -4
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +54 -10
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/dockview/deserializer.d.ts +2 -2
- package/dist/cjs/dockview/deserializer.d.ts.map +1 -1
- package/dist/cjs/dockview/deserializer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +41 -9
- package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.js +285 -76
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +24 -0
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts.map +1 -0
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +35 -0
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +1 -0
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -6
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js +3 -2
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +5 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +43 -12
- package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts +2 -2
- package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewPanel.js +1 -1
- package/dist/cjs/dockview/dockviewPanel.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +22 -6
- package/dist/cjs/dockview/options.d.ts.map +1 -1
- package/dist/cjs/dockview/options.js.map +1 -1
- package/dist/cjs/dom.d.ts +5 -3
- package/dist/cjs/dom.d.ts.map +1 -1
- package/dist/cjs/dom.js +13 -1
- package/dist/cjs/dom.js.map +1 -1
- package/dist/cjs/events.d.ts.map +1 -1
- package/dist/cjs/gridview/branchNode.js +2 -2
- package/dist/cjs/gridview/branchNode.js.map +1 -1
- package/dist/cjs/gridview/gridview.d.ts.map +1 -1
- package/dist/cjs/gridview/gridview.js +9 -7
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.js +4 -1
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +3 -3
- package/dist/cjs/gridview/gridviewPanel.d.ts.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.js +2 -2
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/math.d.ts.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.js +4 -1
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.js +4 -1
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/dockview-core.amd.js +772 -133
- package/dist/dockview-core.amd.js.map +1 -0
- package/dist/dockview-core.amd.min.js +3 -2
- package/dist/dockview-core.amd.min.js.map +1 -0
- package/dist/dockview-core.amd.min.noStyle.js +3 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -0
- package/dist/dockview-core.amd.noStyle.js +771 -132
- package/dist/dockview-core.amd.noStyle.js.map +1 -0
- package/dist/dockview-core.cjs.js +772 -133
- package/dist/dockview-core.cjs.js.map +1 -0
- package/dist/dockview-core.esm.js +773 -133
- package/dist/dockview-core.esm.js.map +1 -0
- package/dist/dockview-core.esm.min.js +3 -2
- package/dist/dockview-core.esm.min.js.map +1 -0
- package/dist/dockview-core.js +772 -133
- package/dist/dockview-core.js.map +1 -0
- package/dist/dockview-core.min.js +3 -2
- package/dist/dockview-core.min.js.map +1 -0
- package/dist/dockview-core.min.noStyle.js +3 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -0
- package/dist/dockview-core.noStyle.js +771 -132
- package/dist/dockview-core.noStyle.js.map +1 -0
- package/dist/esm/api/component.api.d.ts +6 -1
- package/dist/esm/api/component.api.d.ts.map +1 -1
- package/dist/esm/api/component.api.js +6 -0
- package/dist/esm/api/component.api.js.map +1 -1
- package/dist/esm/api/dockviewGroupPanelApi.d.ts +30 -0
- package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +1 -0
- package/dist/esm/api/dockviewGroupPanelApi.js +28 -0
- package/dist/esm/api/dockviewGroupPanelApi.js.map +1 -0
- package/dist/esm/api/dockviewPanelApi.d.ts +14 -1
- package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -1
- package/dist/esm/api/dockviewPanelApi.js +6 -1
- package/dist/esm/api/dockviewPanelApi.js.map +1 -1
- package/dist/esm/array.d.ts +1 -0
- package/dist/esm/array.d.ts.map +1 -1
- package/dist/esm/array.js +8 -0
- package/dist/esm/array.js.map +1 -1
- package/dist/esm/dnd/abstractDragHandler.d.ts +1 -0
- package/dist/esm/dnd/abstractDragHandler.d.ts.map +1 -1
- package/dist/esm/dnd/abstractDragHandler.js +7 -0
- package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
- package/dist/esm/dnd/droptarget.d.ts +11 -0
- package/dist/esm/dnd/droptarget.d.ts.map +1 -1
- package/dist/esm/dnd/droptarget.js +32 -9
- package/dist/esm/dnd/droptarget.js.map +1 -1
- package/dist/esm/dnd/groupDragHandler.d.ts +1 -0
- package/dist/esm/dnd/groupDragHandler.d.ts.map +1 -1
- package/dist/esm/dnd/groupDragHandler.js +18 -0
- package/dist/esm/dnd/groupDragHandler.js.map +1 -1
- package/dist/esm/dnd/overlay.d.ts +40 -0
- package/dist/esm/dnd/overlay.d.ts.map +1 -0
- package/dist/esm/dnd/overlay.js +282 -0
- package/dist/esm/dnd/overlay.js.map +1 -0
- package/dist/esm/dockview/components/tab/tab.d.ts +2 -2
- package/dist/esm/dockview/components/tab/tab.d.ts.map +1 -1
- package/dist/esm/dockview/components/tab/tab.js +0 -7
- package/dist/esm/dockview/components/tab/tab.js.map +1 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +8 -4
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +1 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +54 -10
- package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/esm/dockview/deserializer.d.ts +2 -2
- package/dist/esm/dockview/deserializer.d.ts.map +1 -1
- package/dist/esm/dockview/deserializer.js.map +1 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +41 -9
- package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewComponent.js +231 -54
- package/dist/esm/dockview/dockviewComponent.js.map +1 -1
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +24 -0
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts.map +1 -0
- package/dist/esm/dockview/dockviewFloatingGroupPanel.js +13 -0
- package/dist/esm/dockview/dockviewFloatingGroupPanel.js.map +1 -0
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +5 -6
- package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanel.js +3 -2
- package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +5 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.js +36 -9
- package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/esm/dockview/dockviewPanel.d.ts +2 -2
- package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewPanel.js +1 -1
- package/dist/esm/dockview/dockviewPanel.js.map +1 -1
- package/dist/esm/dockview/options.d.ts +22 -6
- package/dist/esm/dockview/options.d.ts.map +1 -1
- package/dist/esm/dockview/options.js.map +1 -1
- package/dist/esm/dom.d.ts +5 -3
- package/dist/esm/dom.d.ts.map +1 -1
- package/dist/esm/dom.js +10 -0
- package/dist/esm/dom.js.map +1 -1
- package/dist/esm/events.d.ts.map +1 -1
- package/dist/esm/gridview/branchNode.js +2 -2
- package/dist/esm/gridview/branchNode.js.map +1 -1
- package/dist/esm/gridview/gridview.d.ts.map +1 -1
- package/dist/esm/gridview/gridview.js +9 -6
- package/dist/esm/gridview/gridview.js.map +1 -1
- package/dist/esm/gridview/gridviewComponent.d.ts.map +1 -1
- package/dist/esm/gridview/gridviewComponent.js +4 -1
- package/dist/esm/gridview/gridviewComponent.js.map +1 -1
- package/dist/esm/gridview/gridviewPanel.d.ts +3 -3
- package/dist/esm/gridview/gridviewPanel.d.ts.map +1 -1
- package/dist/esm/gridview/gridviewPanel.js +2 -2
- package/dist/esm/gridview/gridviewPanel.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/math.d.ts.map +1 -1
- package/dist/esm/math.js.map +1 -1
- package/dist/esm/paneview/paneviewComponent.d.ts.map +1 -1
- package/dist/esm/paneview/paneviewComponent.js +4 -1
- package/dist/esm/paneview/paneviewComponent.js.map +1 -1
- package/dist/esm/splitview/splitviewComponent.d.ts.map +1 -1
- package/dist/esm/splitview/splitviewComponent.js +4 -1
- package/dist/esm/splitview/splitviewComponent.js.map +1 -1
- package/dist/styles/dockview.css +216 -1
- package/package.json +5 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SerializedGridObject } from '../gridview/gridview';
|
|
2
2
|
import { Position } from '../dnd/droptarget';
|
|
3
|
-
import { IDockviewPanel } from './dockviewPanel';
|
|
3
|
+
import { DockviewPanel, IDockviewPanel } from './dockviewPanel';
|
|
4
4
|
import { Event } from '../events';
|
|
5
5
|
import { IWatermarkRenderer, GroupviewPanelState } from './types';
|
|
6
6
|
import { AddGroupOptions, AddPanelOptions, DockviewComponentOptions, MovementOptions } from './options';
|
|
@@ -8,7 +8,8 @@ import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview';
|
|
|
8
8
|
import { DockviewApi } from '../api/component.api';
|
|
9
9
|
import { Orientation } from '../splitview/splitview';
|
|
10
10
|
import { GroupOptions, GroupPanelViewState, GroupviewDropEvent } from './dockviewGroupPanelModel';
|
|
11
|
-
import { DockviewGroupPanel
|
|
11
|
+
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
12
|
+
import { DockviewFloatingGroupPanel, IDockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';
|
|
12
13
|
export interface PanelReference {
|
|
13
14
|
update: (event: {
|
|
14
15
|
params: {
|
|
@@ -17,6 +18,15 @@ export interface PanelReference {
|
|
|
17
18
|
}) => void;
|
|
18
19
|
remove: () => void;
|
|
19
20
|
}
|
|
21
|
+
export interface SerializedFloatingGroup {
|
|
22
|
+
data: GroupPanelViewState;
|
|
23
|
+
position: {
|
|
24
|
+
height: number;
|
|
25
|
+
width: number;
|
|
26
|
+
left: number;
|
|
27
|
+
top: number;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
20
30
|
export interface SerializedDockview {
|
|
21
31
|
grid: {
|
|
22
32
|
root: SerializedGridObject<GroupPanelViewState>;
|
|
@@ -24,12 +34,11 @@ export interface SerializedDockview {
|
|
|
24
34
|
width: number;
|
|
25
35
|
orientation: Orientation;
|
|
26
36
|
};
|
|
27
|
-
panels:
|
|
28
|
-
[key: string]: GroupviewPanelState;
|
|
29
|
-
};
|
|
37
|
+
panels: Record<string, GroupviewPanelState>;
|
|
30
38
|
activeGroup?: string;
|
|
39
|
+
floatingGroups?: SerializedFloatingGroup[];
|
|
31
40
|
}
|
|
32
|
-
export type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent' | 'defaultTabComponent' | '
|
|
41
|
+
export type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent' | 'defaultTabComponent' | 'createLeftHeaderActionsElement' | 'createRightHeaderActionsElement' | 'disableFloatingGroups'>;
|
|
33
42
|
export interface DockviewDropEvent extends GroupviewDropEvent {
|
|
34
43
|
api: DockviewApi;
|
|
35
44
|
group: DockviewGroupPanel | null;
|
|
@@ -38,6 +47,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
|
|
|
38
47
|
readonly activePanel: IDockviewPanel | undefined;
|
|
39
48
|
readonly totalPanels: number;
|
|
40
49
|
readonly panels: IDockviewPanel[];
|
|
50
|
+
readonly floatingGroups: IDockviewFloatingGroupPanel[];
|
|
41
51
|
readonly onDidDrop: Event<DockviewDropEvent>;
|
|
42
52
|
readonly orientation: Orientation;
|
|
43
53
|
updateOptions(options: DockviewComponentUpdateOptions): void;
|
|
@@ -49,7 +59,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
|
|
|
49
59
|
removePanel(panel: IDockviewPanel): void;
|
|
50
60
|
getGroupPanel: (id: string) => IDockviewPanel | undefined;
|
|
51
61
|
createWatermarkComponent(): IWatermarkRenderer;
|
|
52
|
-
addGroup(options?: AddGroupOptions):
|
|
62
|
+
addGroup(options?: AddGroupOptions): DockviewGroupPanel;
|
|
53
63
|
closeAllGroups(): void;
|
|
54
64
|
moveToNext(options?: MovementOptions): void;
|
|
55
65
|
moveToPrevious(options?: MovementOptions): void;
|
|
@@ -61,6 +71,10 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
|
|
|
61
71
|
readonly onDidAddPanel: Event<IDockviewPanel>;
|
|
62
72
|
readonly onDidLayoutFromJSON: Event<void>;
|
|
63
73
|
readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
|
|
74
|
+
addFloatingGroup(item: IDockviewPanel | DockviewGroupPanel, coord?: {
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
}): void;
|
|
64
78
|
}
|
|
65
79
|
export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> implements IDockviewComponent {
|
|
66
80
|
private readonly nextGroupId;
|
|
@@ -78,14 +92,25 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
|
|
|
78
92
|
readonly onDidLayoutFromJSON: Event<void>;
|
|
79
93
|
private readonly _onDidActivePanelChange;
|
|
80
94
|
readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
|
|
95
|
+
readonly floatingGroups: DockviewFloatingGroupPanel[];
|
|
81
96
|
get orientation(): Orientation;
|
|
82
97
|
get totalPanels(): number;
|
|
83
98
|
get panels(): IDockviewPanel[];
|
|
84
99
|
get options(): DockviewComponentOptions;
|
|
85
100
|
get activePanel(): IDockviewPanel | undefined;
|
|
86
101
|
constructor(options: DockviewComponentOptions);
|
|
102
|
+
addFloatingGroup(item: DockviewPanel | DockviewGroupPanel, coord?: {
|
|
103
|
+
x?: number;
|
|
104
|
+
y?: number;
|
|
105
|
+
height?: number;
|
|
106
|
+
width?: number;
|
|
107
|
+
}, options?: {
|
|
108
|
+
skipRemoveGroup?: boolean;
|
|
109
|
+
inDragMode: boolean;
|
|
110
|
+
}): void;
|
|
87
111
|
private orthogonalize;
|
|
88
112
|
updateOptions(options: DockviewComponentUpdateOptions): void;
|
|
113
|
+
layout(width: number, height: number, forceResize?: boolean | undefined): void;
|
|
89
114
|
focus(): void;
|
|
90
115
|
getGroupPanel(id: string): IDockviewPanel | undefined;
|
|
91
116
|
setActivePanel(panel: IDockviewPanel): void;
|
|
@@ -100,7 +125,7 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
|
|
|
100
125
|
fromJSON(data: SerializedDockview): void;
|
|
101
126
|
clear(): void;
|
|
102
127
|
closeAllGroups(): void;
|
|
103
|
-
addPanel(options: AddPanelOptions):
|
|
128
|
+
addPanel(options: AddPanelOptions): DockviewPanel;
|
|
104
129
|
removePanel(panel: IDockviewPanel, options?: {
|
|
105
130
|
removeEmptyGroup: boolean;
|
|
106
131
|
skipDispose: boolean;
|
|
@@ -108,7 +133,14 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
|
|
|
108
133
|
createWatermarkComponent(): IWatermarkRenderer;
|
|
109
134
|
private updateWatermark;
|
|
110
135
|
addGroup(options?: AddGroupOptions): DockviewGroupPanel;
|
|
111
|
-
removeGroup(group: DockviewGroupPanel,
|
|
136
|
+
removeGroup(group: DockviewGroupPanel, options?: {
|
|
137
|
+
skipActive?: boolean;
|
|
138
|
+
skipDispose?: boolean;
|
|
139
|
+
} | undefined): void;
|
|
140
|
+
protected doRemoveGroup(group: DockviewGroupPanel, options?: {
|
|
141
|
+
skipActive?: boolean;
|
|
142
|
+
skipDispose?: boolean;
|
|
143
|
+
} | undefined): DockviewGroupPanel;
|
|
112
144
|
moveGroupOrPanel(destinationGroup: DockviewGroupPanel, sourceGroupId: string, sourceItemId: string | undefined, destinationTarget: Position, destinationIndex?: number): void;
|
|
113
145
|
private moveGroup;
|
|
114
146
|
doSetGroupActive(group: DockviewGroupPanel | undefined, skipFocus?: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockviewComponent.d.ts","sourceRoot":"","sources":["../../../src/dockview/dockviewComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,oBAAoB,EAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAmC,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,
|
|
1
|
+
{"version":3,"file":"dockviewComponent.d.ts","sourceRoot":"","sources":["../../../src/dockview/dockviewComponent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getRelativeLocation, getGridLocation, } from '../gridview/gridview';
|
|
2
2
|
import { directionToPosition, Droptarget } from '../dnd/droptarget';
|
|
3
|
-
import { tail, sequenceEquals } from '../array';
|
|
3
|
+
import { tail, sequenceEquals, remove } from '../array';
|
|
4
4
|
import { DockviewPanel } from './dockviewPanel';
|
|
5
5
|
import { CompositeDisposable } from '../lifecycle';
|
|
6
6
|
import { Event, Emitter } from '../events';
|
|
@@ -16,6 +16,9 @@ import { Orientation, Sizing } from '../splitview/splitview';
|
|
|
16
16
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
17
17
|
import { DockviewPanelModel } from './dockviewPanelModel';
|
|
18
18
|
import { getPanelData } from '../dnd/dataTransfer';
|
|
19
|
+
import { Overlay } from '../dnd/overlay';
|
|
20
|
+
import { toggleClass, watchElementResize } from '../dom';
|
|
21
|
+
import { DockviewFloatingGroupPanel, } from './dockviewFloatingGroupPanel';
|
|
19
22
|
export class DockviewComponent extends BaseGrid {
|
|
20
23
|
get orientation() {
|
|
21
24
|
return this.gridview.orientation;
|
|
@@ -56,7 +59,8 @@ export class DockviewComponent extends BaseGrid {
|
|
|
56
59
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
57
60
|
this._onDidActivePanelChange = new Emitter();
|
|
58
61
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
59
|
-
this.
|
|
62
|
+
this.floatingGroups = [];
|
|
63
|
+
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
60
64
|
this.addDisposables(this._onDidDrop, Event.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
|
|
61
65
|
this.updateWatermark();
|
|
62
66
|
}), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
@@ -86,9 +90,22 @@ export class DockviewComponent extends BaseGrid {
|
|
|
86
90
|
if (data.viewId !== this.id) {
|
|
87
91
|
return false;
|
|
88
92
|
}
|
|
93
|
+
if (position === 'center') {
|
|
94
|
+
// center drop target is only allowed if there are no panels in the grid
|
|
95
|
+
// floating panels are allowed
|
|
96
|
+
return this.gridview.length === 0;
|
|
97
|
+
}
|
|
89
98
|
return true;
|
|
90
99
|
}
|
|
91
100
|
if (this.options.showDndOverlay) {
|
|
101
|
+
if (position === 'center') {
|
|
102
|
+
/**
|
|
103
|
+
* for external events only show the four-corner drag overlays, disable
|
|
104
|
+
* the center position so that external drag events can fall through to the group
|
|
105
|
+
* and panel drop target handlers
|
|
106
|
+
*/
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
92
109
|
return this.options.showDndOverlay({
|
|
93
110
|
nativeEvent: event,
|
|
94
111
|
position: position,
|
|
@@ -98,7 +115,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
98
115
|
}
|
|
99
116
|
return false;
|
|
100
117
|
},
|
|
101
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right'],
|
|
118
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
102
119
|
overlayModel: {
|
|
103
120
|
activationSize: { type: 'pixels', value: 10 },
|
|
104
121
|
size: { type: 'pixels', value: 20 },
|
|
@@ -116,6 +133,75 @@ export class DockviewComponent extends BaseGrid {
|
|
|
116
133
|
this._api = new DockviewApi(this);
|
|
117
134
|
this.updateWatermark();
|
|
118
135
|
}
|
|
136
|
+
addFloatingGroup(item, coord, options) {
|
|
137
|
+
var _a, _b;
|
|
138
|
+
let group;
|
|
139
|
+
if (item instanceof DockviewPanel) {
|
|
140
|
+
group = this.createGroup();
|
|
141
|
+
this.removePanel(item, {
|
|
142
|
+
removeEmptyGroup: true,
|
|
143
|
+
skipDispose: true,
|
|
144
|
+
});
|
|
145
|
+
group.model.openPanel(item);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
group = item;
|
|
149
|
+
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
150
|
+
options.skipRemoveGroup;
|
|
151
|
+
if (!skip) {
|
|
152
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
group.model.isFloating = true;
|
|
156
|
+
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;
|
|
157
|
+
const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;
|
|
158
|
+
const overlay = new Overlay({
|
|
159
|
+
container: this.gridview.element,
|
|
160
|
+
content: group.element,
|
|
161
|
+
height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
|
|
162
|
+
width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
|
|
163
|
+
left: overlayLeft,
|
|
164
|
+
top: overlayTop,
|
|
165
|
+
minimumInViewportWidth: 100,
|
|
166
|
+
minimumInViewportHeight: 100,
|
|
167
|
+
});
|
|
168
|
+
const el = group.element.querySelector('.void-container');
|
|
169
|
+
if (!el) {
|
|
170
|
+
throw new Error('failed to find drag handle');
|
|
171
|
+
}
|
|
172
|
+
overlay.setupDrag(el, {
|
|
173
|
+
inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'
|
|
174
|
+
? options.inDragMode
|
|
175
|
+
: false,
|
|
176
|
+
});
|
|
177
|
+
const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);
|
|
178
|
+
const disposable = watchElementResize(group.element, (entry) => {
|
|
179
|
+
const { width, height } = entry.contentRect;
|
|
180
|
+
group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
|
|
181
|
+
});
|
|
182
|
+
floatingGroupPanel.addDisposables(overlay.onDidChange(() => {
|
|
183
|
+
// this is either a resize or a move
|
|
184
|
+
// to inform the panels .layout(...) the group with it's current size
|
|
185
|
+
// don't care about resize since the above watcher handles that
|
|
186
|
+
group.layout(group.height, group.width);
|
|
187
|
+
}), overlay.onDidChangeEnd(() => {
|
|
188
|
+
this._bufferOnDidLayoutChange.fire();
|
|
189
|
+
}), group.onDidChange((event) => {
|
|
190
|
+
overlay.setBounds({
|
|
191
|
+
height: event === null || event === void 0 ? void 0 : event.height,
|
|
192
|
+
width: event === null || event === void 0 ? void 0 : event.width,
|
|
193
|
+
});
|
|
194
|
+
}), {
|
|
195
|
+
dispose: () => {
|
|
196
|
+
disposable.dispose();
|
|
197
|
+
group.model.isFloating = false;
|
|
198
|
+
remove(this.floatingGroups, floatingGroupPanel);
|
|
199
|
+
this.updateWatermark();
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
this.floatingGroups.push(floatingGroupPanel);
|
|
203
|
+
this.updateWatermark();
|
|
204
|
+
}
|
|
119
205
|
orthogonalize(position) {
|
|
120
206
|
switch (position) {
|
|
121
207
|
case 'top':
|
|
@@ -140,6 +226,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
140
226
|
switch (position) {
|
|
141
227
|
case 'top':
|
|
142
228
|
case 'left':
|
|
229
|
+
case 'center':
|
|
143
230
|
return this.createGroupAtLocation([0]); // insert into first position
|
|
144
231
|
case 'bottom':
|
|
145
232
|
case 'right':
|
|
@@ -157,6 +244,15 @@ export class DockviewComponent extends BaseGrid {
|
|
|
157
244
|
}
|
|
158
245
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
159
246
|
}
|
|
247
|
+
layout(width, height, forceResize) {
|
|
248
|
+
super.layout(width, height, forceResize);
|
|
249
|
+
if (this.floatingGroups) {
|
|
250
|
+
for (const floating of this.floatingGroups) {
|
|
251
|
+
// ensure floting groups stay within visible boundaries
|
|
252
|
+
floating.overlay.setBounds();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
160
256
|
focus() {
|
|
161
257
|
var _a;
|
|
162
258
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
@@ -219,51 +315,81 @@ export class DockviewComponent extends BaseGrid {
|
|
|
219
315
|
collection[panel.id] = panel.toJSON();
|
|
220
316
|
return collection;
|
|
221
317
|
}, {});
|
|
222
|
-
|
|
318
|
+
const floats = this.floatingGroups.map((floatingGroup) => {
|
|
319
|
+
return {
|
|
320
|
+
data: floatingGroup.group.toJSON(),
|
|
321
|
+
position: floatingGroup.overlay.toJSON(),
|
|
322
|
+
};
|
|
323
|
+
});
|
|
324
|
+
const result = {
|
|
223
325
|
grid: data,
|
|
224
326
|
panels,
|
|
225
327
|
activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
|
|
226
328
|
};
|
|
329
|
+
if (floats.length > 0) {
|
|
330
|
+
result.floatingGroups = floats;
|
|
331
|
+
}
|
|
332
|
+
return result;
|
|
227
333
|
}
|
|
228
334
|
fromJSON(data) {
|
|
335
|
+
var _a;
|
|
229
336
|
this.clear();
|
|
230
337
|
const { grid, panels, activeGroup } = data;
|
|
231
338
|
if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {
|
|
232
339
|
throw new Error('root must be of type branch');
|
|
233
340
|
}
|
|
341
|
+
// take note of the existing dimensions
|
|
342
|
+
const width = this.width;
|
|
343
|
+
const height = this.height;
|
|
344
|
+
const createGroupFromSerializedState = (data) => {
|
|
345
|
+
const { id, locked, hideHeader, views, activeView } = data;
|
|
346
|
+
const group = this.createGroup({
|
|
347
|
+
id,
|
|
348
|
+
locked: !!locked,
|
|
349
|
+
hideHeader: !!hideHeader,
|
|
350
|
+
});
|
|
351
|
+
this._onDidAddGroup.fire(group);
|
|
352
|
+
for (const child of views) {
|
|
353
|
+
const panel = this._deserializer.fromJSON(panels[child], group);
|
|
354
|
+
const isActive = typeof activeView === 'string' && activeView === panel.id;
|
|
355
|
+
group.model.openPanel(panel, {
|
|
356
|
+
skipSetPanelActive: !isActive,
|
|
357
|
+
skipSetGroupActive: true,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
if (!group.activePanel && group.panels.length > 0) {
|
|
361
|
+
group.model.openPanel(group.panels[group.panels.length - 1], {
|
|
362
|
+
skipSetGroupActive: true,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
return group;
|
|
366
|
+
};
|
|
234
367
|
this.gridview.deserialize(grid, {
|
|
235
368
|
fromJSON: (node) => {
|
|
236
|
-
|
|
237
|
-
const group = this.createGroup({
|
|
238
|
-
id,
|
|
239
|
-
locked: !!locked,
|
|
240
|
-
hideHeader: !!hideHeader,
|
|
241
|
-
});
|
|
242
|
-
this._onDidAddGroup.fire(group);
|
|
243
|
-
for (const child of views) {
|
|
244
|
-
const panel = this._deserializer.fromJSON(panels[child], group);
|
|
245
|
-
const isActive = typeof activeView === 'string' &&
|
|
246
|
-
activeView === panel.id;
|
|
247
|
-
group.model.openPanel(panel, {
|
|
248
|
-
skipSetPanelActive: !isActive,
|
|
249
|
-
skipSetGroupActive: true,
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
if (!group.activePanel && group.panels.length > 0) {
|
|
253
|
-
group.model.openPanel(group.panels[group.panels.length - 1], {
|
|
254
|
-
skipSetGroupActive: true,
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
return group;
|
|
369
|
+
return createGroupFromSerializedState(node.data);
|
|
258
370
|
},
|
|
259
371
|
});
|
|
372
|
+
this.layout(width, height, true);
|
|
373
|
+
const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];
|
|
374
|
+
for (const serializedFloatingGroup of serializedFloatingGroups) {
|
|
375
|
+
const { data, position } = serializedFloatingGroup;
|
|
376
|
+
const group = createGroupFromSerializedState(data);
|
|
377
|
+
this.addFloatingGroup(group, {
|
|
378
|
+
x: position.left,
|
|
379
|
+
y: position.top,
|
|
380
|
+
height: position.height,
|
|
381
|
+
width: position.width,
|
|
382
|
+
}, { skipRemoveGroup: true, inDragMode: false });
|
|
383
|
+
}
|
|
384
|
+
for (const floatingGroup of this.floatingGroups) {
|
|
385
|
+
floatingGroup.overlay.setBounds();
|
|
386
|
+
}
|
|
260
387
|
if (typeof activeGroup === 'string') {
|
|
261
388
|
const panel = this.getPanel(activeGroup);
|
|
262
389
|
if (panel) {
|
|
263
390
|
this.doSetGroupActive(panel);
|
|
264
391
|
}
|
|
265
392
|
}
|
|
266
|
-
this.gridview.layout(this.width, this.height);
|
|
267
393
|
this._onDidLayoutFromJSON.fire();
|
|
268
394
|
}
|
|
269
395
|
clear() {
|
|
@@ -272,7 +398,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
272
398
|
const hasActivePanel = !!this.activePanel;
|
|
273
399
|
for (const group of groups) {
|
|
274
400
|
// remove the group will automatically remove the panels
|
|
275
|
-
this.removeGroup(group, true);
|
|
401
|
+
this.removeGroup(group, { skipActive: true });
|
|
276
402
|
}
|
|
277
403
|
if (hasActiveGroup) {
|
|
278
404
|
this.doSetGroupActive(undefined);
|
|
@@ -294,6 +420,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
294
420
|
throw new Error(`panel with id ${options.id} already exists`);
|
|
295
421
|
}
|
|
296
422
|
let referenceGroup;
|
|
423
|
+
if (options.position && options.floating) {
|
|
424
|
+
throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');
|
|
425
|
+
}
|
|
297
426
|
if (options.position) {
|
|
298
427
|
if (isPanelOptionsWithPanel(options.position)) {
|
|
299
428
|
const referencePanel = typeof options.position.referencePanel === 'string'
|
|
@@ -326,7 +455,20 @@ export class DockviewComponent extends BaseGrid {
|
|
|
326
455
|
let panel;
|
|
327
456
|
if (referenceGroup) {
|
|
328
457
|
const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
|
|
329
|
-
if (
|
|
458
|
+
if (options.floating) {
|
|
459
|
+
const group = this.createGroup();
|
|
460
|
+
panel = this.createPanel(options, group);
|
|
461
|
+
group.model.openPanel(panel);
|
|
462
|
+
const o = typeof options.floating === 'object' &&
|
|
463
|
+
options.floating !== null
|
|
464
|
+
? options.floating
|
|
465
|
+
: {};
|
|
466
|
+
this.addFloatingGroup(group, o, {
|
|
467
|
+
inDragMode: false,
|
|
468
|
+
skipRemoveGroup: true,
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
else if (referenceGroup.api.isFloating || target === 'center') {
|
|
330
472
|
panel = this.createPanel(options, referenceGroup);
|
|
331
473
|
referenceGroup.model.openPanel(panel);
|
|
332
474
|
}
|
|
@@ -338,6 +480,19 @@ export class DockviewComponent extends BaseGrid {
|
|
|
338
480
|
group.model.openPanel(panel);
|
|
339
481
|
}
|
|
340
482
|
}
|
|
483
|
+
else if (options.floating) {
|
|
484
|
+
const group = this.createGroup();
|
|
485
|
+
panel = this.createPanel(options, group);
|
|
486
|
+
group.model.openPanel(panel);
|
|
487
|
+
const o = typeof options.floating === 'object' &&
|
|
488
|
+
options.floating !== null
|
|
489
|
+
? options.floating
|
|
490
|
+
: {};
|
|
491
|
+
this.addFloatingGroup(group, o, {
|
|
492
|
+
inDragMode: false,
|
|
493
|
+
skipRemoveGroup: true,
|
|
494
|
+
});
|
|
495
|
+
}
|
|
341
496
|
else {
|
|
342
497
|
const group = this.createGroupAtLocation();
|
|
343
498
|
panel = this.createPanel(options, group);
|
|
@@ -354,7 +509,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
354
509
|
throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
|
|
355
510
|
}
|
|
356
511
|
group.model.removePanel(panel);
|
|
357
|
-
|
|
512
|
+
if (!options.skipDispose) {
|
|
513
|
+
panel.dispose();
|
|
514
|
+
}
|
|
358
515
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
359
516
|
this.removeGroup(group);
|
|
360
517
|
}
|
|
@@ -369,7 +526,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
369
526
|
}
|
|
370
527
|
updateWatermark() {
|
|
371
528
|
var _a, _b;
|
|
372
|
-
if (this.groups.length === 0) {
|
|
529
|
+
if (this.groups.filter((x) => !x.api.isFloating).length === 0) {
|
|
373
530
|
if (!this.watermark) {
|
|
374
531
|
this.watermark = this.createWatermarkComponent();
|
|
375
532
|
this.watermark.init({
|
|
@@ -378,7 +535,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
378
535
|
const watermarkContainer = document.createElement('div');
|
|
379
536
|
watermarkContainer.className = 'dv-watermark-container';
|
|
380
537
|
watermarkContainer.appendChild(this.watermark.element);
|
|
381
|
-
this.element.appendChild(watermarkContainer);
|
|
538
|
+
this.gridview.element.appendChild(watermarkContainer);
|
|
382
539
|
}
|
|
383
540
|
}
|
|
384
541
|
else if (this.watermark) {
|
|
@@ -428,15 +585,28 @@ export class DockviewComponent extends BaseGrid {
|
|
|
428
585
|
return group;
|
|
429
586
|
}
|
|
430
587
|
}
|
|
431
|
-
removeGroup(group,
|
|
588
|
+
removeGroup(group, options) {
|
|
589
|
+
var _a;
|
|
432
590
|
const panels = [...group.panels]; // reassign since group panels will mutate
|
|
433
591
|
for (const panel of panels) {
|
|
434
592
|
this.removePanel(panel, {
|
|
435
593
|
removeEmptyGroup: false,
|
|
436
|
-
skipDispose: false,
|
|
594
|
+
skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
|
|
437
595
|
});
|
|
438
596
|
}
|
|
439
|
-
|
|
597
|
+
this.doRemoveGroup(group, options);
|
|
598
|
+
}
|
|
599
|
+
doRemoveGroup(group, options) {
|
|
600
|
+
const floatingGroup = this.floatingGroups.find((_) => _.group === group);
|
|
601
|
+
if (floatingGroup) {
|
|
602
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
603
|
+
floatingGroup.group.dispose();
|
|
604
|
+
this._groups.delete(group.id);
|
|
605
|
+
}
|
|
606
|
+
floatingGroup.dispose();
|
|
607
|
+
return floatingGroup.group;
|
|
608
|
+
}
|
|
609
|
+
return super.doRemoveGroup(group, options);
|
|
440
610
|
}
|
|
441
611
|
moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
|
|
442
612
|
var _a;
|
|
@@ -467,25 +637,26 @@ export class DockviewComponent extends BaseGrid {
|
|
|
467
637
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
468
638
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
469
639
|
const [targetParentLocation, to] = tail(targetLocation);
|
|
470
|
-
const
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
const targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
481
|
-
skipActive: true,
|
|
482
|
-
skipDispose: true,
|
|
483
|
-
});
|
|
484
|
-
// after deleting the group we need to re-evaulate the ref location
|
|
485
|
-
const updatedReferenceLocation = getGridLocation(destinationGroup.element);
|
|
486
|
-
const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
487
|
-
this.doAddGroup(targetGroup, location);
|
|
640
|
+
const isFloating = this.floatingGroups.find((x) => x.group === sourceGroup);
|
|
641
|
+
if (!isFloating) {
|
|
642
|
+
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
643
|
+
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
644
|
+
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
645
|
+
// special case when 'swapping' two views within same grid location
|
|
646
|
+
// if a group has one tab - we are essentially moving the 'group'
|
|
647
|
+
// which is equivalent to swapping two views in this case
|
|
648
|
+
this.gridview.moveView(sourceParentLocation, from, to);
|
|
649
|
+
}
|
|
488
650
|
}
|
|
651
|
+
// source group will become empty so delete the group
|
|
652
|
+
const targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
653
|
+
skipActive: true,
|
|
654
|
+
skipDispose: true,
|
|
655
|
+
});
|
|
656
|
+
// after deleting the group we need to re-evaulate the ref location
|
|
657
|
+
const updatedReferenceLocation = getGridLocation(destinationGroup.element);
|
|
658
|
+
const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
659
|
+
this.doAddGroup(targetGroup, location);
|
|
489
660
|
}
|
|
490
661
|
else {
|
|
491
662
|
const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||
|
|
@@ -514,7 +685,13 @@ export class DockviewComponent extends BaseGrid {
|
|
|
514
685
|
}
|
|
515
686
|
}
|
|
516
687
|
else {
|
|
517
|
-
this.
|
|
688
|
+
const floatingGroup = this.floatingGroups.find((x) => x.group === sourceGroup);
|
|
689
|
+
if (floatingGroup) {
|
|
690
|
+
floatingGroup.dispose();
|
|
691
|
+
}
|
|
692
|
+
else {
|
|
693
|
+
this.gridview.removeView(getGridLocation(sourceGroup.element));
|
|
694
|
+
}
|
|
518
695
|
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
519
696
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
520
697
|
this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);
|