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
|
@@ -21,6 +21,7 @@ export interface CommonApi<T = any> {
|
|
|
21
21
|
layout(width: number, height: number): void;
|
|
22
22
|
fromJSON(data: T): void;
|
|
23
23
|
toJSON(): T;
|
|
24
|
+
clear(): void;
|
|
24
25
|
}
|
|
25
26
|
export declare class SplitviewApi implements CommonApi<SerializedSplitview> {
|
|
26
27
|
private readonly component;
|
|
@@ -45,6 +46,7 @@ export declare class SplitviewApi implements CommonApi<SerializedSplitview> {
|
|
|
45
46
|
movePanel(from: number, to: number): void;
|
|
46
47
|
fromJSON(data: SerializedSplitview): void;
|
|
47
48
|
toJSON(): SerializedSplitview;
|
|
49
|
+
clear(): void;
|
|
48
50
|
}
|
|
49
51
|
export declare class PaneviewApi implements CommonApi<SerializedPaneview> {
|
|
50
52
|
private readonly component;
|
|
@@ -67,6 +69,7 @@ export declare class PaneviewApi implements CommonApi<SerializedPaneview> {
|
|
|
67
69
|
addPanel(options: AddPaneviewComponentOptions): IPaneviewPanel;
|
|
68
70
|
fromJSON(data: SerializedPaneview): void;
|
|
69
71
|
toJSON(): SerializedPaneview;
|
|
72
|
+
clear(): void;
|
|
70
73
|
}
|
|
71
74
|
export declare class GridviewApi implements CommonApi<SerializedGridview> {
|
|
72
75
|
private readonly component;
|
|
@@ -77,9 +80,9 @@ export declare class GridviewApi implements CommonApi<SerializedGridview> {
|
|
|
77
80
|
get width(): number;
|
|
78
81
|
get height(): number;
|
|
79
82
|
get onDidLayoutChange(): Event<void>;
|
|
80
|
-
get
|
|
81
|
-
get
|
|
82
|
-
get
|
|
83
|
+
get onDidAddPanel(): Event<IGridviewPanel>;
|
|
84
|
+
get onDidRemovePanel(): Event<IGridviewPanel>;
|
|
85
|
+
get onDidActivePanelChange(): Event<IGridviewPanel | undefined>;
|
|
83
86
|
get onDidLayoutFromJSON(): Event<void>;
|
|
84
87
|
get panels(): IGridviewPanel[];
|
|
85
88
|
get orientation(): Orientation;
|
|
@@ -97,6 +100,7 @@ export declare class GridviewApi implements CommonApi<SerializedGridview> {
|
|
|
97
100
|
getPanel(id: string): IGridviewPanel | undefined;
|
|
98
101
|
fromJSON(data: SerializedGridview): void;
|
|
99
102
|
toJSON(): SerializedGridview;
|
|
103
|
+
clear(): void;
|
|
100
104
|
}
|
|
101
105
|
export declare class DockviewApi implements CommonApi<SerializedDockview> {
|
|
102
106
|
private readonly component;
|
|
@@ -136,4 +140,5 @@ export declare class DockviewApi implements CommonApi<SerializedDockview> {
|
|
|
136
140
|
getGroup(id: string): GroupPanel | undefined;
|
|
137
141
|
fromJSON(data: SerializedDockview): void;
|
|
138
142
|
toJSON(): SerializedDockview;
|
|
143
|
+
clear(): void;
|
|
139
144
|
}
|
|
@@ -63,6 +63,9 @@ export class SplitviewApi {
|
|
|
63
63
|
toJSON() {
|
|
64
64
|
return this.component.toJSON();
|
|
65
65
|
}
|
|
66
|
+
clear() {
|
|
67
|
+
this.component.clear();
|
|
68
|
+
}
|
|
66
69
|
}
|
|
67
70
|
export class PaneviewApi {
|
|
68
71
|
constructor(component) {
|
|
@@ -130,6 +133,9 @@ export class PaneviewApi {
|
|
|
130
133
|
toJSON() {
|
|
131
134
|
return this.component.toJSON();
|
|
132
135
|
}
|
|
136
|
+
clear() {
|
|
137
|
+
this.component.clear();
|
|
138
|
+
}
|
|
133
139
|
}
|
|
134
140
|
export class GridviewApi {
|
|
135
141
|
constructor(component) {
|
|
@@ -156,13 +162,13 @@ export class GridviewApi {
|
|
|
156
162
|
get onDidLayoutChange() {
|
|
157
163
|
return this.component.onDidLayoutChange;
|
|
158
164
|
}
|
|
159
|
-
get
|
|
165
|
+
get onDidAddPanel() {
|
|
160
166
|
return this.component.onDidAddGroup;
|
|
161
167
|
}
|
|
162
|
-
get
|
|
168
|
+
get onDidRemovePanel() {
|
|
163
169
|
return this.component.onDidRemoveGroup;
|
|
164
170
|
}
|
|
165
|
-
get
|
|
171
|
+
get onDidActivePanelChange() {
|
|
166
172
|
return this.component.onDidActiveGroupChange;
|
|
167
173
|
}
|
|
168
174
|
get onDidLayoutFromJSON() {
|
|
@@ -201,6 +207,9 @@ export class GridviewApi {
|
|
|
201
207
|
toJSON() {
|
|
202
208
|
return this.component.toJSON();
|
|
203
209
|
}
|
|
210
|
+
clear() {
|
|
211
|
+
this.component.clear();
|
|
212
|
+
}
|
|
204
213
|
}
|
|
205
214
|
export class DockviewApi {
|
|
206
215
|
constructor(component) {
|
|
@@ -249,7 +258,7 @@ export class DockviewApi {
|
|
|
249
258
|
return this.component.onDidRemovePanel;
|
|
250
259
|
}
|
|
251
260
|
get onDidLayoutFromJSON() {
|
|
252
|
-
return this.component.
|
|
261
|
+
return this.component.onDidLayoutFromJSON;
|
|
253
262
|
}
|
|
254
263
|
get onDidLayoutChange() {
|
|
255
264
|
return this.component.onDidLayoutChange;
|
|
@@ -311,4 +320,7 @@ export class DockviewApi {
|
|
|
311
320
|
toJSON() {
|
|
312
321
|
return this.component.toJSON();
|
|
313
322
|
}
|
|
323
|
+
clear() {
|
|
324
|
+
this.component.clear();
|
|
325
|
+
}
|
|
314
326
|
}
|
|
@@ -7,7 +7,7 @@ export declare enum Position {
|
|
|
7
7
|
Right = "Right",
|
|
8
8
|
Center = "Center"
|
|
9
9
|
}
|
|
10
|
-
declare type Quadrant = 'top' | 'bottom' | 'left' | 'right';
|
|
10
|
+
export declare type Quadrant = 'top' | 'bottom' | 'left' | 'right';
|
|
11
11
|
export interface DroptargetEvent {
|
|
12
12
|
position: Position;
|
|
13
13
|
nativeEvent: DragEvent;
|
|
@@ -35,4 +35,3 @@ export declare class Droptarget extends CompositeDisposable {
|
|
|
35
35
|
private calculateQuadrant;
|
|
36
36
|
private removeDropTarget;
|
|
37
37
|
}
|
|
38
|
-
export {};
|
|
@@ -2,6 +2,7 @@ import { CompositeDisposable } from '../../../lifecycle';
|
|
|
2
2
|
import { ITabRenderer, GroupPanelPartInitParameters } from '../../../groupview/types';
|
|
3
3
|
import { PanelUpdateEvent } from '../../../panel/types';
|
|
4
4
|
import { GroupPanel } from '../../../groupview/groupviewPanel';
|
|
5
|
+
export declare const DEFAULT_TAB_IDENTIFIER = "__default__tab__";
|
|
5
6
|
export declare class DefaultTab extends CompositeDisposable implements ITabRenderer {
|
|
6
7
|
private _element;
|
|
7
8
|
private _isPanelVisible;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CompositeDisposable } from '../../../lifecycle';
|
|
2
2
|
import { addDisposableListener } from '../../../events';
|
|
3
|
+
import { createCloseButton } from '../../../svg';
|
|
4
|
+
export const DEFAULT_TAB_IDENTIFIER = '__default__tab__';
|
|
3
5
|
export class DefaultTab extends CompositeDisposable {
|
|
4
6
|
constructor() {
|
|
5
7
|
super();
|
|
@@ -19,8 +21,9 @@ export class DefaultTab extends CompositeDisposable {
|
|
|
19
21
|
this._list = document.createElement('ul');
|
|
20
22
|
this._list.className = 'tab-list';
|
|
21
23
|
//
|
|
22
|
-
this.action = document.createElement('
|
|
24
|
+
this.action = document.createElement('div');
|
|
23
25
|
this.action.className = 'tab-action';
|
|
26
|
+
this.action.appendChild(createCloseButton());
|
|
24
27
|
//
|
|
25
28
|
this._element.appendChild(this._content);
|
|
26
29
|
this._element.appendChild(this._actionContainer);
|
|
@@ -36,7 +39,7 @@ export class DefaultTab extends CompositeDisposable {
|
|
|
36
39
|
return this._element;
|
|
37
40
|
}
|
|
38
41
|
get id() {
|
|
39
|
-
return
|
|
42
|
+
return DEFAULT_TAB_IDENTIFIER;
|
|
40
43
|
}
|
|
41
44
|
update(event) {
|
|
42
45
|
this.params = Object.assign(Object.assign({}, this.params), event.params);
|
|
@@ -2,6 +2,7 @@ import { ActionContainer } from '../../../actionbar/actionsContainer';
|
|
|
2
2
|
import { addDisposableListener } from '../../../events';
|
|
3
3
|
import { toggleClass } from '../../../dom';
|
|
4
4
|
import { CompositeDisposable } from '../../../lifecycle';
|
|
5
|
+
import { createCloseButton } from '../../../svg';
|
|
5
6
|
export class Watermark extends CompositeDisposable {
|
|
6
7
|
constructor() {
|
|
7
8
|
super();
|
|
@@ -18,8 +19,9 @@ export class Watermark extends CompositeDisposable {
|
|
|
18
19
|
const actions = new ActionContainer();
|
|
19
20
|
title.appendChild(emptySpace);
|
|
20
21
|
title.appendChild(actions.element);
|
|
21
|
-
const closeAnchor = document.createElement('
|
|
22
|
+
const closeAnchor = document.createElement('div');
|
|
22
23
|
closeAnchor.className = 'close-action';
|
|
24
|
+
closeAnchor.appendChild(createCloseButton());
|
|
23
25
|
actions.add(closeAnchor);
|
|
24
26
|
this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {
|
|
25
27
|
var _a;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { GroupPanelPartInitParameters,
|
|
1
|
+
import { GroupPanelPartInitParameters, IContentRenderer, ITabRenderer } from '../groupview/types';
|
|
2
2
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
3
3
|
import { IDisposable } from '../lifecycle';
|
|
4
4
|
import { GroupPanelUpdateEvent } from '../groupview/groupPanel';
|
|
5
5
|
export interface IGroupPanelView extends IDisposable {
|
|
6
6
|
readonly content: IContentRenderer;
|
|
7
7
|
readonly tab?: ITabRenderer;
|
|
8
|
-
readonly actions?: IActionsRenderer;
|
|
9
8
|
update(event: GroupPanelUpdateEvent): void;
|
|
10
9
|
layout(width: number, height: number): void;
|
|
11
10
|
init(params: GroupPanelPartInitParameters): void;
|
|
@@ -15,14 +14,11 @@ export interface IGroupPanelView extends IDisposable {
|
|
|
15
14
|
export declare class DefaultGroupPanelView implements IGroupPanelView {
|
|
16
15
|
private readonly _content;
|
|
17
16
|
private readonly _tab;
|
|
18
|
-
private readonly _actions;
|
|
19
17
|
get content(): IContentRenderer;
|
|
20
18
|
get tab(): ITabRenderer;
|
|
21
|
-
get actions(): IActionsRenderer | undefined;
|
|
22
19
|
constructor(renderers: {
|
|
23
20
|
content: IContentRenderer;
|
|
24
21
|
tab?: ITabRenderer;
|
|
25
|
-
actions?: IActionsRenderer;
|
|
26
22
|
});
|
|
27
23
|
init(params: GroupPanelPartInitParameters): void;
|
|
28
24
|
updateParentGroup(group: GroupPanel, isPanelVisible: boolean): void;
|
|
@@ -4,16 +4,6 @@ export class DefaultGroupPanelView {
|
|
|
4
4
|
var _a;
|
|
5
5
|
this._content = renderers.content;
|
|
6
6
|
this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
|
|
7
|
-
this._actions =
|
|
8
|
-
renderers.actions ||
|
|
9
|
-
(this.content.actions
|
|
10
|
-
? {
|
|
11
|
-
element: this.content.actions,
|
|
12
|
-
dispose: () => {
|
|
13
|
-
//
|
|
14
|
-
},
|
|
15
|
-
}
|
|
16
|
-
: undefined);
|
|
17
7
|
}
|
|
18
8
|
get content() {
|
|
19
9
|
return this._content;
|
|
@@ -21,9 +11,6 @@ export class DefaultGroupPanelView {
|
|
|
21
11
|
get tab() {
|
|
22
12
|
return this._tab;
|
|
23
13
|
}
|
|
24
|
-
get actions() {
|
|
25
|
-
return this._actions;
|
|
26
|
-
}
|
|
27
14
|
init(params) {
|
|
28
15
|
this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
|
|
29
16
|
this.tab.init(params);
|
|
@@ -41,15 +28,17 @@ export class DefaultGroupPanelView {
|
|
|
41
28
|
this.tab.update(event);
|
|
42
29
|
}
|
|
43
30
|
toJSON() {
|
|
31
|
+
let tab = this.tab instanceof DefaultTab ? undefined : this.tab.toJSON();
|
|
32
|
+
if (tab && Object.keys(tab).length === 0) {
|
|
33
|
+
tab = undefined;
|
|
34
|
+
}
|
|
44
35
|
return {
|
|
45
36
|
content: this.content.toJSON(),
|
|
46
|
-
tab
|
|
37
|
+
tab,
|
|
47
38
|
};
|
|
48
39
|
}
|
|
49
40
|
dispose() {
|
|
50
|
-
var _a;
|
|
51
41
|
this.content.dispose();
|
|
52
42
|
this.tab.dispose();
|
|
53
|
-
(_a = this.actions) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
54
43
|
}
|
|
55
44
|
}
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
import { IGridView, ISerializedLeafNode, IViewDeserializer } from '../gridview/gridview';
|
|
2
1
|
import { GroupviewPanelState, IDockviewPanel } from '../groupview/groupPanel';
|
|
3
|
-
import { GroupPanelViewState } from '../groupview/groupview';
|
|
4
2
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
5
|
-
import { DockviewComponent } from './dockviewComponent';
|
|
6
3
|
export interface IPanelDeserializer {
|
|
7
4
|
fromJSON(panelData: GroupviewPanelState, group: GroupPanel): IDockviewPanel;
|
|
8
5
|
}
|
|
9
|
-
export interface PanelDeserializerOptions {
|
|
10
|
-
createPanel: (id: string, group: GroupPanel) => IDockviewPanel;
|
|
11
|
-
}
|
|
12
|
-
export declare class DefaultDeserializer implements IViewDeserializer {
|
|
13
|
-
private readonly layout;
|
|
14
|
-
private panelDeserializer;
|
|
15
|
-
constructor(layout: DockviewComponent, panelDeserializer: PanelDeserializerOptions);
|
|
16
|
-
fromJSON(node: ISerializedLeafNode<GroupPanelViewState>): IGridView;
|
|
17
|
-
}
|
|
@@ -1,27 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
constructor(layout, panelDeserializer) {
|
|
3
|
-
this.layout = layout;
|
|
4
|
-
this.panelDeserializer = panelDeserializer;
|
|
5
|
-
}
|
|
6
|
-
fromJSON(node) {
|
|
7
|
-
const data = node.data;
|
|
8
|
-
const children = data.views;
|
|
9
|
-
const active = data.activeView;
|
|
10
|
-
const group = this.layout.createGroup({
|
|
11
|
-
id: data.id,
|
|
12
|
-
locked: !!data.locked,
|
|
13
|
-
hideHeader: !!data.hideHeader,
|
|
14
|
-
});
|
|
15
|
-
for (const child of children) {
|
|
16
|
-
const panel = this.panelDeserializer.createPanel(child, group);
|
|
17
|
-
const isActive = typeof active === 'string' && active === panel.id;
|
|
18
|
-
group.model.openPanel(panel, {
|
|
19
|
-
skipSetActive: !isActive,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
if (!group.activePanel && group.panels.length > 0) {
|
|
23
|
-
group.model.openPanel(group.panels[group.panels.length - 1]);
|
|
24
|
-
}
|
|
25
|
-
return group;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
1
|
+
export {};
|
|
@@ -34,9 +34,10 @@ export interface SerializedDockview {
|
|
|
34
34
|
tabHeight?: number;
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent'>;
|
|
37
|
+
export declare type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent' | 'defaultTabComponent' | 'createGroupControlElement'>;
|
|
38
38
|
export interface DockviewDropEvent extends GroupviewDropEvent {
|
|
39
39
|
api: DockviewApi;
|
|
40
|
+
group: GroupPanel;
|
|
40
41
|
}
|
|
41
42
|
export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
|
|
42
43
|
readonly activePanel: IDockviewPanel | undefined;
|
|
@@ -53,11 +54,9 @@ export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
|
|
|
53
54
|
addPanel(options: AddPanelOptions): IDockviewPanel;
|
|
54
55
|
removePanel(panel: IDockviewPanel): void;
|
|
55
56
|
getGroupPanel: (id: string) => IDockviewPanel | undefined;
|
|
56
|
-
fireMouseEvent(event: LayoutMouseEvent): void;
|
|
57
57
|
createWatermarkComponent(): IWatermarkRenderer;
|
|
58
58
|
addEmptyGroup(options?: AddGroupOptions): void;
|
|
59
59
|
closeAllGroups(): void;
|
|
60
|
-
onTabInteractionEvent: Event<LayoutMouseEvent>;
|
|
61
60
|
onTabContextMenu: Event<TabContextMenuEvent>;
|
|
62
61
|
moveToNext(options?: MovementOptions): void;
|
|
63
62
|
moveToPrevious(options?: MovementOptions): void;
|
|
@@ -67,15 +66,13 @@ export interface IDockviewComponent extends IBaseGrid<GroupPanel> {
|
|
|
67
66
|
fromJSON(data: SerializedDockview): void;
|
|
68
67
|
readonly onDidRemovePanel: Event<IDockviewPanel>;
|
|
69
68
|
readonly onDidAddPanel: Event<IDockviewPanel>;
|
|
70
|
-
readonly
|
|
69
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
71
70
|
readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
|
|
72
71
|
}
|
|
73
72
|
export declare class DockviewComponent extends BaseGrid<GroupPanel> implements IDockviewComponent {
|
|
74
73
|
private _deserializer;
|
|
75
74
|
private _api;
|
|
76
75
|
private _options;
|
|
77
|
-
private readonly _onTabInteractionEvent;
|
|
78
|
-
readonly onTabInteractionEvent: Event<LayoutMouseEvent>;
|
|
79
76
|
private readonly _onTabContextMenu;
|
|
80
77
|
readonly onTabContextMenu: Event<TabContextMenuEvent>;
|
|
81
78
|
private readonly _onDidDrop;
|
|
@@ -84,8 +81,8 @@ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements I
|
|
|
84
81
|
readonly onDidRemovePanel: Event<IDockviewPanel>;
|
|
85
82
|
private readonly _onDidAddPanel;
|
|
86
83
|
readonly onDidAddPanel: Event<IDockviewPanel>;
|
|
87
|
-
private readonly
|
|
88
|
-
readonly
|
|
84
|
+
private readonly _onDidLayoutFromJSON;
|
|
85
|
+
readonly onDidLayoutFromJSON: Event<void>;
|
|
89
86
|
private readonly _onDidActivePanelChange;
|
|
90
87
|
readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
|
|
91
88
|
get totalPanels(): number;
|
|
@@ -110,6 +107,7 @@ export declare class DockviewComponent extends BaseGrid<GroupPanel> implements I
|
|
|
110
107
|
*/
|
|
111
108
|
toJSON(): SerializedDockview;
|
|
112
109
|
fromJSON(data: SerializedDockview): void;
|
|
110
|
+
clear(): void;
|
|
113
111
|
closeAllGroups(): void;
|
|
114
112
|
fireMouseEvent(event: LayoutMouseEvent): void;
|
|
115
113
|
addPanel(options: AddPanelOptions): IDockviewPanel;
|
|
@@ -6,14 +6,12 @@ import { CompositeDisposable } from '../lifecycle';
|
|
|
6
6
|
import { Event, Emitter } from '../events';
|
|
7
7
|
import { Watermark } from './components/watermark/watermark';
|
|
8
8
|
import { sequentialNumberGenerator } from '../math';
|
|
9
|
-
import { DefaultDeserializer } from './deserializer';
|
|
10
9
|
import { createComponent } from '../panel/componentFactory';
|
|
11
10
|
import { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';
|
|
12
11
|
import { DockviewApi } from '../api/component.api';
|
|
13
12
|
import { MouseEventKind } from '../groupview/tab';
|
|
14
13
|
import { Orientation } from '../splitview/core/splitview';
|
|
15
14
|
import { DefaultTab } from './components/tab/defaultTab';
|
|
16
|
-
import { GroupChangeKind2, } from '../groupview/groupview';
|
|
17
15
|
import { GroupPanel } from '../groupview/groupviewPanel';
|
|
18
16
|
import { DefaultGroupPanelView } from './defaultGroupPanelView';
|
|
19
17
|
const nextGroupId = sequentialNumberGenerator();
|
|
@@ -24,9 +22,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
24
22
|
orientation: options.orientation || Orientation.HORIZONTAL,
|
|
25
23
|
styles: options.styles,
|
|
26
24
|
});
|
|
27
|
-
// events
|
|
28
|
-
this._onTabInteractionEvent = new Emitter();
|
|
29
|
-
this.onTabInteractionEvent = this._onTabInteractionEvent.event;
|
|
30
25
|
this._onTabContextMenu = new Emitter();
|
|
31
26
|
this.onTabContextMenu = this._onTabContextMenu.event;
|
|
32
27
|
this._onDidDrop = new Emitter();
|
|
@@ -35,11 +30,11 @@ export class DockviewComponent extends BaseGrid {
|
|
|
35
30
|
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
36
31
|
this._onDidAddPanel = new Emitter();
|
|
37
32
|
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
33
|
+
this._onDidLayoutFromJSON = new Emitter();
|
|
34
|
+
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
40
35
|
this._onDidActivePanelChange = new Emitter();
|
|
41
36
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
42
|
-
this.addDisposables(this.
|
|
37
|
+
this.addDisposables(this._onTabContextMenu, this._onDidDrop, Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
43
38
|
this._bufferOnDidLayoutChange.fire();
|
|
44
39
|
}));
|
|
45
40
|
this._options = options;
|
|
@@ -94,7 +89,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
94
89
|
}
|
|
95
90
|
updateOptions(options) {
|
|
96
91
|
const hasOrientationChanged = typeof options.orientation === 'string' &&
|
|
97
|
-
this.
|
|
92
|
+
this.gridview.orientation !== options.orientation;
|
|
98
93
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
99
94
|
if (hasOrientationChanged) {
|
|
100
95
|
this.gridview.orientation = options.orientation;
|
|
@@ -172,12 +167,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
172
167
|
};
|
|
173
168
|
}
|
|
174
169
|
fromJSON(data) {
|
|
175
|
-
|
|
176
|
-
for (const group of groups) {
|
|
177
|
-
// remove the group will automatically remove the panels
|
|
178
|
-
this.removeGroup(group, true);
|
|
179
|
-
}
|
|
180
|
-
this.gridview.clear();
|
|
170
|
+
this.clear();
|
|
181
171
|
if (!this.deserializer) {
|
|
182
172
|
throw new Error('invalid deserializer');
|
|
183
173
|
}
|
|
@@ -188,12 +178,31 @@ export class DockviewComponent extends BaseGrid {
|
|
|
188
178
|
if (!this.deserializer) {
|
|
189
179
|
throw new Error('no deserializer provided');
|
|
190
180
|
}
|
|
191
|
-
this.gridview.deserialize(grid,
|
|
192
|
-
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
181
|
+
this.gridview.deserialize(grid, {
|
|
182
|
+
fromJSON: (node) => {
|
|
183
|
+
const { id, locked, hideHeader, views, activeView } = node.data;
|
|
184
|
+
const group = this.createGroup({
|
|
185
|
+
id,
|
|
186
|
+
locked: !!locked,
|
|
187
|
+
hideHeader: !!hideHeader,
|
|
188
|
+
});
|
|
189
|
+
this._onDidAddGroup.fire(group);
|
|
190
|
+
for (const child of views) {
|
|
191
|
+
const panel = this.deserializer.fromJSON(panels[child], group);
|
|
192
|
+
const isActive = typeof activeView === 'string' && activeView === panel.id;
|
|
193
|
+
group.model.openPanel(panel, {
|
|
194
|
+
skipSetPanelActive: !isActive,
|
|
195
|
+
skipSetGroupActive: true
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (!group.activePanel && group.panels.length > 0) {
|
|
199
|
+
group.model.openPanel(group.panels[group.panels.length - 1], {
|
|
200
|
+
skipSetGroupActive: true
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
return group;
|
|
204
|
+
}
|
|
205
|
+
});
|
|
197
206
|
if (typeof activeGroup === 'string') {
|
|
198
207
|
const panel = this.getPanel(activeGroup);
|
|
199
208
|
if (panel) {
|
|
@@ -201,7 +210,23 @@ export class DockviewComponent extends BaseGrid {
|
|
|
201
210
|
}
|
|
202
211
|
}
|
|
203
212
|
this.gridview.layout(this.width, this.height);
|
|
204
|
-
this.
|
|
213
|
+
this._onDidLayoutFromJSON.fire();
|
|
214
|
+
}
|
|
215
|
+
clear() {
|
|
216
|
+
const groups = Array.from(this._groups.values()).map((_) => _.value);
|
|
217
|
+
const hasActiveGroup = !!this.activeGroup;
|
|
218
|
+
const hasActivePanel = !!this.activePanel;
|
|
219
|
+
for (const group of groups) {
|
|
220
|
+
// remove the group will automatically remove the panels
|
|
221
|
+
this.removeGroup(group, true);
|
|
222
|
+
}
|
|
223
|
+
if (hasActiveGroup) {
|
|
224
|
+
this.doSetGroupActive(undefined);
|
|
225
|
+
}
|
|
226
|
+
if (hasActivePanel) {
|
|
227
|
+
this._onDidActivePanelChange.fire(undefined);
|
|
228
|
+
}
|
|
229
|
+
this.gridview.clear();
|
|
205
230
|
}
|
|
206
231
|
closeAllGroups() {
|
|
207
232
|
for (const entry of this._groups.entries()) {
|
|
@@ -399,23 +424,13 @@ export class DockviewComponent extends BaseGrid {
|
|
|
399
424
|
const { groupId, itemId, target, index } = event;
|
|
400
425
|
this.moveGroupOrPanel(view, groupId, itemId, target, index);
|
|
401
426
|
}), view.model.onDidDrop((event) => {
|
|
402
|
-
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api }));
|
|
403
|
-
}), view.model.
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
break;
|
|
410
|
-
case GroupChangeKind2.REMOVE_PANEL:
|
|
411
|
-
if (event.panel) {
|
|
412
|
-
this._onDidRemovePanel.fire(event.panel);
|
|
413
|
-
}
|
|
414
|
-
break;
|
|
415
|
-
case GroupChangeKind2.PANEL_ACTIVE:
|
|
416
|
-
this._onDidActivePanelChange.fire(event.panel);
|
|
417
|
-
break;
|
|
418
|
-
}
|
|
427
|
+
this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
|
|
428
|
+
}), view.model.onDidAddPanel((event) => {
|
|
429
|
+
this._onDidAddPanel.fire(event.panel);
|
|
430
|
+
}), view.model.onDidRemovePanel((event) => {
|
|
431
|
+
this._onDidRemovePanel.fire(event.panel);
|
|
432
|
+
}), view.model.onDidActivePanelChange((event) => {
|
|
433
|
+
this._onDidActivePanelChange.fire(event.panel);
|
|
419
434
|
}));
|
|
420
435
|
this._groups.set(view.id, { value: view, disposable });
|
|
421
436
|
}
|
|
@@ -430,7 +445,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
430
445
|
createPanel(options, group) {
|
|
431
446
|
const view = new DefaultGroupPanelView({
|
|
432
447
|
content: this.createContentComponent(options.id, options.component),
|
|
433
|
-
tab: this.createTabComponent(options.id, options.tabComponent),
|
|
448
|
+
tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
|
|
434
449
|
});
|
|
435
450
|
const panel = new DockviewGroupPanel(options.id, this, this._api, group);
|
|
436
451
|
panel.init({
|
|
@@ -463,6 +478,6 @@ export class DockviewComponent extends BaseGrid {
|
|
|
463
478
|
this._onDidActivePanelChange.dispose();
|
|
464
479
|
this._onDidAddPanel.dispose();
|
|
465
480
|
this._onDidRemovePanel.dispose();
|
|
466
|
-
this.
|
|
481
|
+
this._onDidLayoutFromJSON.dispose();
|
|
467
482
|
}
|
|
468
483
|
}
|
|
@@ -7,6 +7,8 @@ import { GroupPanel } from '../groupview/groupviewPanel';
|
|
|
7
7
|
import { ISplitviewStyles, Orientation } from '../splitview/core/splitview';
|
|
8
8
|
import { FrameworkFactory } from '../types';
|
|
9
9
|
import { DockviewDropTargets } from '../groupview/dnd';
|
|
10
|
+
import { PanelTransfer } from '../dnd/dataTransfer';
|
|
11
|
+
import { IGroupControlRenderer } from '../react/dockview/groupControlsRenderer';
|
|
10
12
|
export interface GroupPanelFrameworkComponentFactory {
|
|
11
13
|
content: FrameworkFactory<IContentRenderer>;
|
|
12
14
|
tab: FrameworkFactory<ITabRenderer>;
|
|
@@ -39,6 +41,12 @@ export interface ViewFactoryData {
|
|
|
39
41
|
content: string;
|
|
40
42
|
tab?: string;
|
|
41
43
|
}
|
|
44
|
+
export interface DockviewDndOverlayEvent {
|
|
45
|
+
nativeEvent: DragEvent;
|
|
46
|
+
target: DockviewDropTargets;
|
|
47
|
+
group: GroupPanel;
|
|
48
|
+
getData: () => PanelTransfer | undefined;
|
|
49
|
+
}
|
|
42
50
|
export interface DockviewComponentOptions extends DockviewRenderFunctions {
|
|
43
51
|
watermarkComponent?: WatermarkConstructor;
|
|
44
52
|
watermarkFrameworkComponent?: any;
|
|
@@ -46,7 +54,9 @@ export interface DockviewComponentOptions extends DockviewRenderFunctions {
|
|
|
46
54
|
tabHeight?: number;
|
|
47
55
|
orientation?: Orientation;
|
|
48
56
|
styles?: ISplitviewStyles;
|
|
49
|
-
|
|
57
|
+
defaultTabComponent?: string;
|
|
58
|
+
showDndOverlay?: (event: DockviewDndOverlayEvent) => boolean;
|
|
59
|
+
createGroupControlElement?: (group: GroupPanel) => IGroupControlRenderer;
|
|
50
60
|
}
|
|
51
61
|
export interface PanelOptions {
|
|
52
62
|
component: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Event, TickDelayedEvent } from '../events';
|
|
1
|
+
import { Emitter, Event, TickDelayedEvent } from '../events';
|
|
2
2
|
import { Gridview, IGridView } from './gridview';
|
|
3
3
|
import { Position } from '../dnd/droptarget';
|
|
4
4
|
import { CompositeDisposable, IValueDisposable } from '../lifecycle';
|
|
@@ -35,6 +35,7 @@ export interface IBaseGrid<T extends IGridPanelView> {
|
|
|
35
35
|
getPanel(id: string): T | undefined;
|
|
36
36
|
toJSON(): object;
|
|
37
37
|
fromJSON(data: any): void;
|
|
38
|
+
clear(): void;
|
|
38
39
|
layout(width: number, height: number, force?: boolean): void;
|
|
39
40
|
setVisible(panel: T, visible: boolean): void;
|
|
40
41
|
isVisible(panel: T): boolean;
|
|
@@ -49,7 +50,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
|
|
|
49
50
|
readonly onDidLayoutChange: Event<void>;
|
|
50
51
|
private readonly _onDidRemoveGroup;
|
|
51
52
|
readonly onDidRemoveGroup: Event<T>;
|
|
52
|
-
|
|
53
|
+
protected readonly _onDidAddGroup: Emitter<T>;
|
|
53
54
|
readonly onDidAddGroup: Event<T>;
|
|
54
55
|
private readonly _onDidActiveGroupChange;
|
|
55
56
|
readonly onDidActiveGroupChange: Event<T | undefined>;
|
|
@@ -68,6 +69,7 @@ export declare abstract class BaseGrid<T extends IGridPanelView> extends Composi
|
|
|
68
69
|
constructor(_element: HTMLElement, options: BaseGridOptions);
|
|
69
70
|
abstract toJSON(): object;
|
|
70
71
|
abstract fromJSON(data: any): void;
|
|
72
|
+
abstract clear(): void;
|
|
71
73
|
setVisible(panel: T, visible: boolean): void;
|
|
72
74
|
isVisible(panel: T): boolean;
|
|
73
75
|
protected doAddGroup(group: T, location?: number[], size?: number): void;
|
|
@@ -39,7 +39,7 @@ export class BaseGrid extends CompositeDisposable {
|
|
|
39
39
|
this.element.appendChild(this.gridview.element);
|
|
40
40
|
this.layout(0, 0, true); // set some elements height/widths
|
|
41
41
|
this.addDisposables(this.gridview.onDidChange(() => {
|
|
42
|
-
this.
|
|
42
|
+
this._bufferOnDidLayoutChange.fire();
|
|
43
43
|
}));
|
|
44
44
|
this.addDisposables(Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
|
|
45
45
|
this._bufferOnDidLayoutChange.fire();
|
|
@@ -71,6 +71,7 @@ export declare class GridviewComponent extends BaseGrid<GridviewPanel> implement
|
|
|
71
71
|
setActive(panel: GridviewPanel): void;
|
|
72
72
|
focus(): void;
|
|
73
73
|
fromJSON(serializedGridview: SerializedGridview): void;
|
|
74
|
+
clear(): void;
|
|
74
75
|
movePanel(panel: GridviewPanel, options: {
|
|
75
76
|
direction: Direction;
|
|
76
77
|
reference: string;
|