dockview-core 1.7.5 → 1.8.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 +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 +277 -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 +40 -20
- 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/splitview.d.ts.map +1 -1
- package/dist/cjs/splitview/splitview.js +12 -11
- package/dist/cjs/splitview/splitview.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 +808 -158
- 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 +807 -157
- package/dist/dockview-core.amd.noStyle.js.map +1 -0
- package/dist/dockview-core.cjs.js +808 -158
- package/dist/dockview-core.cjs.js.map +1 -0
- package/dist/dockview-core.esm.js +809 -158
- 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 +808 -158
- 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 +807 -157
- 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 +223 -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 +40 -19
- 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/splitview.d.ts.map +1 -1
- package/dist/esm/splitview/splitview.js +12 -11
- package/dist/esm/splitview/splitview.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 +217 -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":"AAAA,OAAO,EAEH,oBAAoB,EAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAmC,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAW,MAAM,WAAW,CAAC;AAE3C,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EAEtB,MAAM,SAAS,CAAC;AAIjB,OAAO,EACH,eAAe,EACf,eAAe,EACf,wBAAwB,EAKxB,eAAe,EAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,QAAQ,EAER,SAAS,EAEZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAU,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACH,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,EAC9B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5D,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE;QACF,IAAI,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QAChD,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,WAAW,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAC9C;AAED,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAC7C,wBAAwB,EACtB,aAAa,GACb,YAAY,GACZ,qBAAqB,GACrB,eAAe,GACf,wBAAwB,GACxB,gBAAgB,GAChB,6BAA6B,GAC7B,qBAAqB,GACrB,gCAAgC,GAChC,iCAAiC,GACjC,uBAAuB,CAC5B,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IACzD,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,kBAAkB,CAAC;IACrE,QAAQ,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,2BAA2B,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,aAAa,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAC7D,gBAAgB,CACZ,cAAc,EAAE,kBAAkB,EAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,EAChB,KAAK,CAAC,EAAE,MAAM,GACf,IAAI,CAAC;IACR,gBAAgB,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3E,WAAW,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjD,OAAO,EAAE,wBAAwB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAAC;IACnD,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAC1D,wBAAwB,IAAI,kBAAkB,CAAC;IAE/C,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,kBAAkB,CAAC;IACxD,cAAc,IAAI,IAAI,CAAC;IAEvB,UAAU,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChD,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEzC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACnE,gBAAgB,CACZ,IAAI,EAAE,cAAc,GAAG,kBAAkB,EACzC,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GACjC,IAAI,CAAC;CACX;AAED,qBAAa,iBACT,SAAQ,QAAQ,CAAC,kBAAkB,CACnC,YAAW,kBAAkB;IAE7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAyB;IAErE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IACnE,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC,CACf;IAEjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC,CAA6B;IAE1E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAmC;IAE5E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAEpC;IACJ,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,CAC3B;IAEvC,QAAQ,CAAC,cAAc,EAAE,0BAA0B,EAAE,CAAM;IAE3D,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,MAAM,IAAI,cAAc,EAAE,CAE7B;IAED,IAAI,OAAO,IAAI,wBAAwB,CAEtC;IAED,IAAI,WAAW,IAAI,cAAc,GAAG,SAAS,CAQ5C;gBAEW,OAAO,EAAE,wBAAwB;IAgH7C,gBAAgB,CACZ,IAAI,EAAE,aAAa,GAAG,kBAAkB,EACxC,KAAK,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACnE,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,GAC7D,IAAI;IAgGP,OAAO,CAAC,aAAa;IAmCrB,aAAa,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI;IAcnD,MAAM,CACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,GAClC,IAAI;IAWP,KAAK,IAAI,IAAI;IAIb,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIrD,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAK3C,UAAU,CAAC,OAAO,GAAE,eAAoB,GAAG,IAAI;IAuB/C,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,IAAI;IAsBnD;;;;OAIG;IACH,MAAM,IAAI,kBAAkB;IA8B5B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAqFxC,KAAK,IAAI,IAAI;IAsBb,cAAc,IAAI,IAAI;IAQtB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa;IAiHjD,WAAW,CACP,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE;QAAE,gBAAgB,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAGzD,GACF,IAAI;IAoBP,wBAAwB,IAAI,kBAAkB;IAc9C,OAAO,CAAC,eAAe;IAsBvB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,kBAAkB;IA6DvD,WAAW,CACP,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EACF;QACI,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,GAChB,IAAI;cAaY,aAAa,CAC5B,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EACF;QACI,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,GAChB,kBAAkB;IAkBrB,gBAAgB,CACZ,gBAAgB,EAAE,kBAAkB,EACpC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,iBAAiB,EAAE,QAAQ,EAC3B,gBAAgB,CAAC,EAAE,MAAM,GAC1B,IAAI;IAqGP,OAAO,CAAC,SAAS;IAoDjB,gBAAgB,CACZ,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,SAAS,CAAC,EAAE,OAAO,GACpB,IAAI;IASP,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,kBAAkB;IA0DvD,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,SAAS;IAMV,OAAO,IAAI,IAAI;CAQzB"}
|
|
@@ -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,6 +90,11 @@ 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) {
|
|
@@ -98,7 +107,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
98
107
|
}
|
|
99
108
|
return false;
|
|
100
109
|
},
|
|
101
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right'],
|
|
110
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
102
111
|
overlayModel: {
|
|
103
112
|
activationSize: { type: 'pixels', value: 10 },
|
|
104
113
|
size: { type: 'pixels', value: 20 },
|
|
@@ -116,6 +125,75 @@ export class DockviewComponent extends BaseGrid {
|
|
|
116
125
|
this._api = new DockviewApi(this);
|
|
117
126
|
this.updateWatermark();
|
|
118
127
|
}
|
|
128
|
+
addFloatingGroup(item, coord, options) {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
let group;
|
|
131
|
+
if (item instanceof DockviewPanel) {
|
|
132
|
+
group = this.createGroup();
|
|
133
|
+
this.removePanel(item, {
|
|
134
|
+
removeEmptyGroup: true,
|
|
135
|
+
skipDispose: true,
|
|
136
|
+
});
|
|
137
|
+
group.model.openPanel(item);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
group = item;
|
|
141
|
+
const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
142
|
+
options.skipRemoveGroup;
|
|
143
|
+
if (!skip) {
|
|
144
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
group.model.isFloating = true;
|
|
148
|
+
const overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;
|
|
149
|
+
const overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;
|
|
150
|
+
const overlay = new Overlay({
|
|
151
|
+
container: this.gridview.element,
|
|
152
|
+
content: group.element,
|
|
153
|
+
height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
|
|
154
|
+
width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
|
|
155
|
+
left: overlayLeft,
|
|
156
|
+
top: overlayTop,
|
|
157
|
+
minimumInViewportWidth: 100,
|
|
158
|
+
minimumInViewportHeight: 100,
|
|
159
|
+
});
|
|
160
|
+
const el = group.element.querySelector('.void-container');
|
|
161
|
+
if (!el) {
|
|
162
|
+
throw new Error('failed to find drag handle');
|
|
163
|
+
}
|
|
164
|
+
overlay.setupDrag(el, {
|
|
165
|
+
inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'
|
|
166
|
+
? options.inDragMode
|
|
167
|
+
: false,
|
|
168
|
+
});
|
|
169
|
+
const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);
|
|
170
|
+
const disposable = watchElementResize(group.element, (entry) => {
|
|
171
|
+
const { width, height } = entry.contentRect;
|
|
172
|
+
group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
|
|
173
|
+
});
|
|
174
|
+
floatingGroupPanel.addDisposables(overlay.onDidChange(() => {
|
|
175
|
+
// this is either a resize or a move
|
|
176
|
+
// to inform the panels .layout(...) the group with it's current size
|
|
177
|
+
// don't care about resize since the above watcher handles that
|
|
178
|
+
group.layout(group.height, group.width);
|
|
179
|
+
}), overlay.onDidChangeEnd(() => {
|
|
180
|
+
this._bufferOnDidLayoutChange.fire();
|
|
181
|
+
}), group.onDidChange((event) => {
|
|
182
|
+
overlay.setBounds({
|
|
183
|
+
height: event === null || event === void 0 ? void 0 : event.height,
|
|
184
|
+
width: event === null || event === void 0 ? void 0 : event.width,
|
|
185
|
+
});
|
|
186
|
+
}), {
|
|
187
|
+
dispose: () => {
|
|
188
|
+
disposable.dispose();
|
|
189
|
+
group.model.isFloating = false;
|
|
190
|
+
remove(this.floatingGroups, floatingGroupPanel);
|
|
191
|
+
this.updateWatermark();
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
this.floatingGroups.push(floatingGroupPanel);
|
|
195
|
+
this.updateWatermark();
|
|
196
|
+
}
|
|
119
197
|
orthogonalize(position) {
|
|
120
198
|
switch (position) {
|
|
121
199
|
case 'top':
|
|
@@ -140,6 +218,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
140
218
|
switch (position) {
|
|
141
219
|
case 'top':
|
|
142
220
|
case 'left':
|
|
221
|
+
case 'center':
|
|
143
222
|
return this.createGroupAtLocation([0]); // insert into first position
|
|
144
223
|
case 'bottom':
|
|
145
224
|
case 'right':
|
|
@@ -157,6 +236,15 @@ export class DockviewComponent extends BaseGrid {
|
|
|
157
236
|
}
|
|
158
237
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
159
238
|
}
|
|
239
|
+
layout(width, height, forceResize) {
|
|
240
|
+
super.layout(width, height, forceResize);
|
|
241
|
+
if (this.floatingGroups) {
|
|
242
|
+
for (const floating of this.floatingGroups) {
|
|
243
|
+
// ensure floting groups stay within visible boundaries
|
|
244
|
+
floating.overlay.setBounds();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
160
248
|
focus() {
|
|
161
249
|
var _a;
|
|
162
250
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
@@ -219,51 +307,81 @@ export class DockviewComponent extends BaseGrid {
|
|
|
219
307
|
collection[panel.id] = panel.toJSON();
|
|
220
308
|
return collection;
|
|
221
309
|
}, {});
|
|
222
|
-
|
|
310
|
+
const floats = this.floatingGroups.map((floatingGroup) => {
|
|
311
|
+
return {
|
|
312
|
+
data: floatingGroup.group.toJSON(),
|
|
313
|
+
position: floatingGroup.overlay.toJSON(),
|
|
314
|
+
};
|
|
315
|
+
});
|
|
316
|
+
const result = {
|
|
223
317
|
grid: data,
|
|
224
318
|
panels,
|
|
225
319
|
activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
|
|
226
320
|
};
|
|
321
|
+
if (floats.length > 0) {
|
|
322
|
+
result.floatingGroups = floats;
|
|
323
|
+
}
|
|
324
|
+
return result;
|
|
227
325
|
}
|
|
228
326
|
fromJSON(data) {
|
|
327
|
+
var _a;
|
|
229
328
|
this.clear();
|
|
230
329
|
const { grid, panels, activeGroup } = data;
|
|
231
330
|
if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {
|
|
232
331
|
throw new Error('root must be of type branch');
|
|
233
332
|
}
|
|
333
|
+
// take note of the existing dimensions
|
|
334
|
+
const width = this.width;
|
|
335
|
+
const height = this.height;
|
|
336
|
+
const createGroupFromSerializedState = (data) => {
|
|
337
|
+
const { id, locked, hideHeader, views, activeView } = data;
|
|
338
|
+
const group = this.createGroup({
|
|
339
|
+
id,
|
|
340
|
+
locked: !!locked,
|
|
341
|
+
hideHeader: !!hideHeader,
|
|
342
|
+
});
|
|
343
|
+
this._onDidAddGroup.fire(group);
|
|
344
|
+
for (const child of views) {
|
|
345
|
+
const panel = this._deserializer.fromJSON(panels[child], group);
|
|
346
|
+
const isActive = typeof activeView === 'string' && activeView === panel.id;
|
|
347
|
+
group.model.openPanel(panel, {
|
|
348
|
+
skipSetPanelActive: !isActive,
|
|
349
|
+
skipSetGroupActive: true,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
if (!group.activePanel && group.panels.length > 0) {
|
|
353
|
+
group.model.openPanel(group.panels[group.panels.length - 1], {
|
|
354
|
+
skipSetGroupActive: true,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
return group;
|
|
358
|
+
};
|
|
234
359
|
this.gridview.deserialize(grid, {
|
|
235
360
|
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;
|
|
361
|
+
return createGroupFromSerializedState(node.data);
|
|
258
362
|
},
|
|
259
363
|
});
|
|
364
|
+
this.layout(width, height, true);
|
|
365
|
+
const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];
|
|
366
|
+
for (const serializedFloatingGroup of serializedFloatingGroups) {
|
|
367
|
+
const { data, position } = serializedFloatingGroup;
|
|
368
|
+
const group = createGroupFromSerializedState(data);
|
|
369
|
+
this.addFloatingGroup(group, {
|
|
370
|
+
x: position.left,
|
|
371
|
+
y: position.top,
|
|
372
|
+
height: position.height,
|
|
373
|
+
width: position.width,
|
|
374
|
+
}, { skipRemoveGroup: true, inDragMode: false });
|
|
375
|
+
}
|
|
376
|
+
for (const floatingGroup of this.floatingGroups) {
|
|
377
|
+
floatingGroup.overlay.setBounds();
|
|
378
|
+
}
|
|
260
379
|
if (typeof activeGroup === 'string') {
|
|
261
380
|
const panel = this.getPanel(activeGroup);
|
|
262
381
|
if (panel) {
|
|
263
382
|
this.doSetGroupActive(panel);
|
|
264
383
|
}
|
|
265
384
|
}
|
|
266
|
-
this.gridview.layout(this.width, this.height);
|
|
267
385
|
this._onDidLayoutFromJSON.fire();
|
|
268
386
|
}
|
|
269
387
|
clear() {
|
|
@@ -272,7 +390,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
272
390
|
const hasActivePanel = !!this.activePanel;
|
|
273
391
|
for (const group of groups) {
|
|
274
392
|
// remove the group will automatically remove the panels
|
|
275
|
-
this.removeGroup(group, true);
|
|
393
|
+
this.removeGroup(group, { skipActive: true });
|
|
276
394
|
}
|
|
277
395
|
if (hasActiveGroup) {
|
|
278
396
|
this.doSetGroupActive(undefined);
|
|
@@ -294,6 +412,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
294
412
|
throw new Error(`panel with id ${options.id} already exists`);
|
|
295
413
|
}
|
|
296
414
|
let referenceGroup;
|
|
415
|
+
if (options.position && options.floating) {
|
|
416
|
+
throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');
|
|
417
|
+
}
|
|
297
418
|
if (options.position) {
|
|
298
419
|
if (isPanelOptionsWithPanel(options.position)) {
|
|
299
420
|
const referencePanel = typeof options.position.referencePanel === 'string'
|
|
@@ -326,7 +447,20 @@ export class DockviewComponent extends BaseGrid {
|
|
|
326
447
|
let panel;
|
|
327
448
|
if (referenceGroup) {
|
|
328
449
|
const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
|
|
329
|
-
if (
|
|
450
|
+
if (options.floating) {
|
|
451
|
+
const group = this.createGroup();
|
|
452
|
+
panel = this.createPanel(options, group);
|
|
453
|
+
group.model.openPanel(panel);
|
|
454
|
+
const o = typeof options.floating === 'object' &&
|
|
455
|
+
options.floating !== null
|
|
456
|
+
? options.floating
|
|
457
|
+
: {};
|
|
458
|
+
this.addFloatingGroup(group, o, {
|
|
459
|
+
inDragMode: false,
|
|
460
|
+
skipRemoveGroup: true,
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
else if (referenceGroup.api.isFloating || target === 'center') {
|
|
330
464
|
panel = this.createPanel(options, referenceGroup);
|
|
331
465
|
referenceGroup.model.openPanel(panel);
|
|
332
466
|
}
|
|
@@ -338,6 +472,19 @@ export class DockviewComponent extends BaseGrid {
|
|
|
338
472
|
group.model.openPanel(panel);
|
|
339
473
|
}
|
|
340
474
|
}
|
|
475
|
+
else if (options.floating) {
|
|
476
|
+
const group = this.createGroup();
|
|
477
|
+
panel = this.createPanel(options, group);
|
|
478
|
+
group.model.openPanel(panel);
|
|
479
|
+
const o = typeof options.floating === 'object' &&
|
|
480
|
+
options.floating !== null
|
|
481
|
+
? options.floating
|
|
482
|
+
: {};
|
|
483
|
+
this.addFloatingGroup(group, o, {
|
|
484
|
+
inDragMode: false,
|
|
485
|
+
skipRemoveGroup: true,
|
|
486
|
+
});
|
|
487
|
+
}
|
|
341
488
|
else {
|
|
342
489
|
const group = this.createGroupAtLocation();
|
|
343
490
|
panel = this.createPanel(options, group);
|
|
@@ -354,7 +501,9 @@ export class DockviewComponent extends BaseGrid {
|
|
|
354
501
|
throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
|
|
355
502
|
}
|
|
356
503
|
group.model.removePanel(panel);
|
|
357
|
-
|
|
504
|
+
if (!options.skipDispose) {
|
|
505
|
+
panel.dispose();
|
|
506
|
+
}
|
|
358
507
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
359
508
|
this.removeGroup(group);
|
|
360
509
|
}
|
|
@@ -369,7 +518,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
369
518
|
}
|
|
370
519
|
updateWatermark() {
|
|
371
520
|
var _a, _b;
|
|
372
|
-
if (this.groups.length === 0) {
|
|
521
|
+
if (this.groups.filter((x) => !x.api.isFloating).length === 0) {
|
|
373
522
|
if (!this.watermark) {
|
|
374
523
|
this.watermark = this.createWatermarkComponent();
|
|
375
524
|
this.watermark.init({
|
|
@@ -378,7 +527,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
378
527
|
const watermarkContainer = document.createElement('div');
|
|
379
528
|
watermarkContainer.className = 'dv-watermark-container';
|
|
380
529
|
watermarkContainer.appendChild(this.watermark.element);
|
|
381
|
-
this.element.appendChild(watermarkContainer);
|
|
530
|
+
this.gridview.element.appendChild(watermarkContainer);
|
|
382
531
|
}
|
|
383
532
|
}
|
|
384
533
|
else if (this.watermark) {
|
|
@@ -428,15 +577,28 @@ export class DockviewComponent extends BaseGrid {
|
|
|
428
577
|
return group;
|
|
429
578
|
}
|
|
430
579
|
}
|
|
431
|
-
removeGroup(group,
|
|
580
|
+
removeGroup(group, options) {
|
|
581
|
+
var _a;
|
|
432
582
|
const panels = [...group.panels]; // reassign since group panels will mutate
|
|
433
583
|
for (const panel of panels) {
|
|
434
584
|
this.removePanel(panel, {
|
|
435
585
|
removeEmptyGroup: false,
|
|
436
|
-
skipDispose: false,
|
|
586
|
+
skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,
|
|
437
587
|
});
|
|
438
588
|
}
|
|
439
|
-
|
|
589
|
+
this.doRemoveGroup(group, options);
|
|
590
|
+
}
|
|
591
|
+
doRemoveGroup(group, options) {
|
|
592
|
+
const floatingGroup = this.floatingGroups.find((_) => _.group === group);
|
|
593
|
+
if (floatingGroup) {
|
|
594
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
595
|
+
floatingGroup.group.dispose();
|
|
596
|
+
this._groups.delete(group.id);
|
|
597
|
+
}
|
|
598
|
+
floatingGroup.dispose();
|
|
599
|
+
return floatingGroup.group;
|
|
600
|
+
}
|
|
601
|
+
return super.doRemoveGroup(group, options);
|
|
440
602
|
}
|
|
441
603
|
moveGroupOrPanel(destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
|
|
442
604
|
var _a;
|
|
@@ -467,25 +629,26 @@ export class DockviewComponent extends BaseGrid {
|
|
|
467
629
|
const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
468
630
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
469
631
|
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);
|
|
632
|
+
const isFloating = this.floatingGroups.find((x) => x.group === sourceGroup);
|
|
633
|
+
if (!isFloating) {
|
|
634
|
+
const sourceLocation = getGridLocation(sourceGroup.element);
|
|
635
|
+
const [sourceParentLocation, from] = tail(sourceLocation);
|
|
636
|
+
if (sequenceEquals(sourceParentLocation, targetParentLocation)) {
|
|
637
|
+
// special case when 'swapping' two views within same grid location
|
|
638
|
+
// if a group has one tab - we are essentially moving the 'group'
|
|
639
|
+
// which is equivalent to swapping two views in this case
|
|
640
|
+
this.gridview.moveView(sourceParentLocation, from, to);
|
|
641
|
+
}
|
|
488
642
|
}
|
|
643
|
+
// source group will become empty so delete the group
|
|
644
|
+
const targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
645
|
+
skipActive: true,
|
|
646
|
+
skipDispose: true,
|
|
647
|
+
});
|
|
648
|
+
// after deleting the group we need to re-evaulate the ref location
|
|
649
|
+
const updatedReferenceLocation = getGridLocation(destinationGroup.element);
|
|
650
|
+
const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
651
|
+
this.doAddGroup(targetGroup, location);
|
|
489
652
|
}
|
|
490
653
|
else {
|
|
491
654
|
const groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||
|
|
@@ -514,7 +677,13 @@ export class DockviewComponent extends BaseGrid {
|
|
|
514
677
|
}
|
|
515
678
|
}
|
|
516
679
|
else {
|
|
517
|
-
this.
|
|
680
|
+
const floatingGroup = this.floatingGroups.find((x) => x.group === sourceGroup);
|
|
681
|
+
if (floatingGroup) {
|
|
682
|
+
floatingGroup.dispose();
|
|
683
|
+
}
|
|
684
|
+
else {
|
|
685
|
+
this.gridview.removeView(getGridLocation(sourceGroup.element));
|
|
686
|
+
}
|
|
518
687
|
const referenceLocation = getGridLocation(referenceGroup.element);
|
|
519
688
|
const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
|
|
520
689
|
this.gridview.addView(sourceGroup, Sizing.Distribute, dropLocation);
|