dockview-core 1.10.0 → 1.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/component.api.d.ts +10 -2
- package/dist/cjs/api/component.api.js +10 -2
- package/dist/cjs/api/dockviewGroupPanelApi.js +1 -1
- package/dist/cjs/api/dockviewPanelApi.d.ts +5 -1
- package/dist/cjs/api/dockviewPanelApi.js +43 -26
- package/dist/cjs/api/gridviewPanelApi.d.ts +1 -1
- package/dist/cjs/api/gridviewPanelApi.js +2 -2
- package/dist/cjs/api/panelApi.d.ts +12 -16
- package/dist/cjs/api/panelApi.js +17 -20
- package/dist/cjs/api/paneviewPanelApi.d.ts +1 -1
- package/dist/cjs/api/paneviewPanelApi.js +2 -2
- package/dist/cjs/api/splitviewPanelApi.d.ts +1 -1
- package/dist/cjs/api/splitviewPanelApi.js +2 -2
- package/dist/cjs/dockview/components/panel/content.js +1 -1
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +1 -1
- package/dist/cjs/dockview/deserializer.js +1 -1
- package/dist/cjs/dockview/dockviewComponent.js +18 -8
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +10 -5
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +16 -0
- package/dist/cjs/dockview/dockviewPanel.d.ts +1 -1
- package/dist/cjs/dockview/dockviewPanel.js +2 -2
- package/dist/cjs/dockview/options.d.ts +3 -3
- package/dist/cjs/dockview/types.d.ts +0 -1
- package/dist/cjs/gridview/gridviewPanel.js +4 -4
- package/dist/cjs/lifecycle.d.ts +1 -1
- package/dist/cjs/paneview/paneview.d.ts +1 -0
- package/dist/cjs/paneview/paneview.js +3 -0
- package/dist/cjs/paneview/paneviewComponent.d.ts +2 -0
- package/dist/cjs/paneview/paneviewComponent.js +6 -0
- package/dist/cjs/paneview/paneviewPanel.d.ts +2 -0
- package/dist/cjs/paneview/paneviewPanel.js +6 -2
- package/dist/cjs/splitview/splitviewComponent.d.ts +1 -1
- package/dist/cjs/splitview/splitviewComponent.js +5 -5
- package/dist/cjs/splitview/splitviewPanel.js +4 -4
- package/dist/dockview-core.amd.js +134 -79
- package/dist/dockview-core.amd.js.map +1 -1
- package/dist/dockview-core.amd.min.js +2 -2
- package/dist/dockview-core.amd.min.js.map +1 -1
- package/dist/dockview-core.amd.min.noStyle.js +2 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
- package/dist/dockview-core.amd.noStyle.js +134 -79
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +134 -79
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +134 -79
- package/dist/dockview-core.esm.js.map +1 -1
- package/dist/dockview-core.esm.min.js +2 -2
- package/dist/dockview-core.esm.min.js.map +1 -1
- package/dist/dockview-core.js +134 -79
- package/dist/dockview-core.js.map +1 -1
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.js.map +1 -1
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -1
- package/dist/dockview-core.noStyle.js +134 -79
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +10 -2
- package/dist/esm/api/component.api.js +10 -2
- package/dist/esm/api/dockviewGroupPanelApi.js +1 -1
- package/dist/esm/api/dockviewPanelApi.d.ts +5 -1
- package/dist/esm/api/dockviewPanelApi.js +38 -25
- package/dist/esm/api/gridviewPanelApi.d.ts +1 -1
- package/dist/esm/api/gridviewPanelApi.js +2 -2
- package/dist/esm/api/panelApi.d.ts +12 -16
- package/dist/esm/api/panelApi.js +16 -16
- package/dist/esm/api/paneviewPanelApi.d.ts +1 -1
- package/dist/esm/api/paneviewPanelApi.js +2 -2
- package/dist/esm/api/splitviewPanelApi.d.ts +1 -1
- package/dist/esm/api/splitviewPanelApi.js +2 -2
- package/dist/esm/dockview/components/panel/content.js +1 -1
- package/dist/esm/dockview/components/titlebar/voidContainer.js +1 -1
- package/dist/esm/dockview/deserializer.js +1 -1
- package/dist/esm/dockview/dockviewComponent.js +19 -9
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +10 -5
- package/dist/esm/dockview/dockviewGroupPanelModel.js +11 -0
- package/dist/esm/dockview/dockviewPanel.d.ts +1 -1
- package/dist/esm/dockview/dockviewPanel.js +2 -2
- package/dist/esm/dockview/options.d.ts +3 -3
- package/dist/esm/dockview/types.d.ts +0 -1
- package/dist/esm/gridview/gridviewPanel.js +4 -4
- package/dist/esm/lifecycle.d.ts +1 -1
- package/dist/esm/paneview/paneview.d.ts +1 -0
- package/dist/esm/paneview/paneview.js +3 -0
- package/dist/esm/paneview/paneviewComponent.d.ts +2 -0
- package/dist/esm/paneview/paneviewComponent.js +6 -0
- package/dist/esm/paneview/paneviewPanel.d.ts +2 -0
- package/dist/esm/paneview/paneviewPanel.js +6 -2
- package/dist/esm/splitview/splitviewComponent.d.ts +1 -1
- package/dist/esm/splitview/splitviewComponent.js +5 -5
- package/dist/esm/splitview/splitviewPanel.js +4 -4
- package/package.json +1 -1
|
@@ -374,15 +374,23 @@ export declare class DockviewApi implements CommonApi<SerializedDockview> {
|
|
|
374
374
|
*/
|
|
375
375
|
get onWillDrop(): Event<DockviewWillDropEvent>;
|
|
376
376
|
/**
|
|
377
|
+
* Invoked before an overlay is shown indicating a drop target.
|
|
377
378
|
*
|
|
379
|
+
* Calling `event.preventDefault()` will prevent the overlay being shown and prevent
|
|
380
|
+
* the any subsequent drop event.
|
|
378
381
|
*/
|
|
379
382
|
get onWillShowOverlay(): Event<WillShowOverlayLocationEvent>;
|
|
380
383
|
/**
|
|
381
|
-
* Invoked before a group is dragged.
|
|
384
|
+
* Invoked before a group is dragged.
|
|
385
|
+
*
|
|
386
|
+
* Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.
|
|
387
|
+
*
|
|
382
388
|
*/
|
|
383
389
|
get onWillDragGroup(): Event<GroupDragEvent>;
|
|
384
390
|
/**
|
|
385
|
-
* Invoked before a panel is dragged.
|
|
391
|
+
* Invoked before a panel is dragged.
|
|
392
|
+
*
|
|
393
|
+
* Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.
|
|
386
394
|
*/
|
|
387
395
|
get onWillDragPanel(): Event<TabDragEvent>;
|
|
388
396
|
/**
|
|
@@ -516,19 +516,27 @@ export class DockviewApi {
|
|
|
516
516
|
return this.component.onWillDrop;
|
|
517
517
|
}
|
|
518
518
|
/**
|
|
519
|
+
* Invoked before an overlay is shown indicating a drop target.
|
|
519
520
|
*
|
|
521
|
+
* Calling `event.preventDefault()` will prevent the overlay being shown and prevent
|
|
522
|
+
* the any subsequent drop event.
|
|
520
523
|
*/
|
|
521
524
|
get onWillShowOverlay() {
|
|
522
525
|
return this.component.onWillShowOverlay;
|
|
523
526
|
}
|
|
524
527
|
/**
|
|
525
|
-
* Invoked before a group is dragged.
|
|
528
|
+
* Invoked before a group is dragged.
|
|
529
|
+
*
|
|
530
|
+
* Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.
|
|
531
|
+
*
|
|
526
532
|
*/
|
|
527
533
|
get onWillDragGroup() {
|
|
528
534
|
return this.component.onWillDragGroup;
|
|
529
535
|
}
|
|
530
536
|
/**
|
|
531
|
-
* Invoked before a panel is dragged.
|
|
537
|
+
* Invoked before a panel is dragged.
|
|
538
|
+
*
|
|
539
|
+
* Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.
|
|
532
540
|
*/
|
|
533
541
|
get onWillDragPanel() {
|
|
534
542
|
return this.component.onWillDragPanel;
|
|
@@ -11,7 +11,7 @@ export class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
11
11
|
return this._group.model.location;
|
|
12
12
|
}
|
|
13
13
|
constructor(id, accessor) {
|
|
14
|
-
super(id);
|
|
14
|
+
super(id, '__dockviewgroup__');
|
|
15
15
|
this.accessor = accessor;
|
|
16
16
|
this._onDidLocationChange = new Emitter();
|
|
17
17
|
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
@@ -25,6 +25,7 @@ export interface DockviewPanelApi extends Omit<GridviewPanelApi, 'setVisible' |
|
|
|
25
25
|
readonly title: string | undefined;
|
|
26
26
|
readonly onDidActiveGroupChange: Event<ActiveGroupEvent>;
|
|
27
27
|
readonly onDidGroupChange: Event<GroupChangedEvent>;
|
|
28
|
+
readonly onDidTitleChange: Event<TitleEvent>;
|
|
28
29
|
readonly onDidRendererChange: Event<RendererChangedEvent>;
|
|
29
30
|
readonly location: DockviewGroupLocation;
|
|
30
31
|
readonly onDidLocationChange: Event<DockviewGroupPanelFloatingChangeEvent>;
|
|
@@ -48,6 +49,7 @@ export declare class DockviewPanelApiImpl extends GridviewPanelApiImpl implement
|
|
|
48
49
|
private panel;
|
|
49
50
|
private readonly accessor;
|
|
50
51
|
private _group;
|
|
52
|
+
private _tabComponent;
|
|
51
53
|
readonly _onDidTitleChange: Emitter<TitleEvent>;
|
|
52
54
|
readonly onDidTitleChange: Event<TitleEvent>;
|
|
53
55
|
private readonly _onDidActiveGroupChange;
|
|
@@ -65,7 +67,8 @@ export declare class DockviewPanelApiImpl extends GridviewPanelApiImpl implement
|
|
|
65
67
|
get renderer(): DockviewPanelRenderer;
|
|
66
68
|
set group(value: DockviewGroupPanel);
|
|
67
69
|
get group(): DockviewGroupPanel;
|
|
68
|
-
|
|
70
|
+
get tabComponent(): string | undefined;
|
|
71
|
+
constructor(panel: DockviewPanel, group: DockviewGroupPanel, accessor: DockviewComponent, component: string, tabComponent?: string);
|
|
69
72
|
getWindow(): Window;
|
|
70
73
|
moveTo(options: {
|
|
71
74
|
group: DockviewGroupPanel;
|
|
@@ -78,4 +81,5 @@ export declare class DockviewPanelApiImpl extends GridviewPanelApiImpl implement
|
|
|
78
81
|
maximize(): void;
|
|
79
82
|
isMaximized(): boolean;
|
|
80
83
|
exitMaximized(): void;
|
|
84
|
+
private setupGroupEventListeners;
|
|
81
85
|
}
|
|
@@ -15,32 +15,11 @@ export class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
15
15
|
return this.panel.renderer;
|
|
16
16
|
}
|
|
17
17
|
set group(value) {
|
|
18
|
-
const
|
|
18
|
+
const oldGroup = this._group;
|
|
19
19
|
if (this._group !== value) {
|
|
20
20
|
this._group = value;
|
|
21
21
|
this._onDidGroupChange.fire({});
|
|
22
|
-
|
|
23
|
-
this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidLocationChange((event) => {
|
|
24
|
-
if (this.group !== this.panel.group) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
this._onDidLocationChange.fire(event);
|
|
28
|
-
}), this.group.api.onDidActiveChange(() => {
|
|
29
|
-
if (this.group !== this.panel.group) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
if (_trackGroupActive !== this.isGroupActive) {
|
|
33
|
-
_trackGroupActive = this.isGroupActive;
|
|
34
|
-
this._onDidActiveGroupChange.fire({
|
|
35
|
-
isActive: this.isGroupActive,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}));
|
|
39
|
-
// if (this.isGroupActive !== isOldGroupActive) {
|
|
40
|
-
// this._onDidActiveGroupChange.fire({
|
|
41
|
-
// isActive: this.isGroupActive,
|
|
42
|
-
// });
|
|
43
|
-
// }
|
|
22
|
+
this.setupGroupEventListeners(oldGroup);
|
|
44
23
|
this._onDidLocationChange.fire({
|
|
45
24
|
location: this.group.api.location,
|
|
46
25
|
});
|
|
@@ -49,8 +28,11 @@ export class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
49
28
|
get group() {
|
|
50
29
|
return this._group;
|
|
51
30
|
}
|
|
52
|
-
|
|
53
|
-
|
|
31
|
+
get tabComponent() {
|
|
32
|
+
return this._tabComponent;
|
|
33
|
+
}
|
|
34
|
+
constructor(panel, group, accessor, component, tabComponent) {
|
|
35
|
+
super(panel.id, component);
|
|
54
36
|
this.panel = panel;
|
|
55
37
|
this.accessor = accessor;
|
|
56
38
|
this._onDidTitleChange = new Emitter();
|
|
@@ -64,8 +46,10 @@ export class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
64
46
|
this._onDidLocationChange = new Emitter();
|
|
65
47
|
this.onDidLocationChange = this._onDidLocationChange.event;
|
|
66
48
|
this.groupEventsDisposable = new MutableDisposable();
|
|
49
|
+
this._tabComponent = tabComponent;
|
|
67
50
|
this.initialize(panel);
|
|
68
51
|
this._group = group;
|
|
52
|
+
this.setupGroupEventListeners();
|
|
69
53
|
this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);
|
|
70
54
|
}
|
|
71
55
|
getWindow() {
|
|
@@ -100,4 +84,33 @@ export class DockviewPanelApiImpl extends GridviewPanelApiImpl {
|
|
|
100
84
|
exitMaximized() {
|
|
101
85
|
this.group.api.exitMaximized();
|
|
102
86
|
}
|
|
87
|
+
setupGroupEventListeners(previousGroup) {
|
|
88
|
+
var _a;
|
|
89
|
+
let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state
|
|
90
|
+
this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {
|
|
91
|
+
if (!event.isVisible && this.isVisible) {
|
|
92
|
+
this._onDidVisibilityChange.fire(event);
|
|
93
|
+
}
|
|
94
|
+
else if (event.isVisible &&
|
|
95
|
+
!this.isVisible &&
|
|
96
|
+
this.group.model.isPanelActive(this.panel)) {
|
|
97
|
+
this._onDidVisibilityChange.fire(event);
|
|
98
|
+
}
|
|
99
|
+
}), this.group.api.onDidLocationChange((event) => {
|
|
100
|
+
if (this.group !== this.panel.group) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this._onDidLocationChange.fire(event);
|
|
104
|
+
}), this.group.api.onDidActiveChange(() => {
|
|
105
|
+
if (this.group !== this.panel.group) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (_trackGroupActive !== this.isGroupActive) {
|
|
109
|
+
_trackGroupActive = this.isGroupActive;
|
|
110
|
+
this._onDidActiveGroupChange.fire({
|
|
111
|
+
isActive: this.isGroupActive,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
103
116
|
}
|
|
@@ -30,7 +30,7 @@ export declare class GridviewPanelApiImpl extends PanelApiImpl implements Gridvi
|
|
|
30
30
|
readonly onDidConstraintsChange: Event<GridConstraintChangeEvent>;
|
|
31
31
|
private readonly _onDidSizeChange;
|
|
32
32
|
readonly onDidSizeChange: Event<SizeEvent>;
|
|
33
|
-
constructor(id: string, panel?: IPanel);
|
|
33
|
+
constructor(id: string, component: string, panel?: IPanel);
|
|
34
34
|
setConstraints(value: GridConstraintChangeEvent): void;
|
|
35
35
|
setSize(event: SizeEvent): void;
|
|
36
36
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Emitter } from '../events';
|
|
2
2
|
import { PanelApiImpl } from './panelApi';
|
|
3
3
|
export class GridviewPanelApiImpl extends PanelApiImpl {
|
|
4
|
-
constructor(id, panel) {
|
|
5
|
-
super(id);
|
|
4
|
+
constructor(id, component, panel) {
|
|
5
|
+
super(id, component);
|
|
6
6
|
this._onDidConstraintsChangeInternal = new Emitter();
|
|
7
7
|
this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
|
|
8
8
|
this._onDidConstraintsChange = new Emitter();
|
|
@@ -11,9 +11,6 @@ export interface PanelDimensionChangeEvent {
|
|
|
11
11
|
export interface VisibilityEvent {
|
|
12
12
|
readonly isVisible: boolean;
|
|
13
13
|
}
|
|
14
|
-
export interface HiddenEvent {
|
|
15
|
-
readonly isHidden: boolean;
|
|
16
|
-
}
|
|
17
14
|
export interface ActiveEvent {
|
|
18
15
|
readonly isActive: boolean;
|
|
19
16
|
}
|
|
@@ -22,8 +19,9 @@ export interface PanelApi {
|
|
|
22
19
|
readonly onDidFocusChange: Event<FocusEvent>;
|
|
23
20
|
readonly onDidVisibilityChange: Event<VisibilityEvent>;
|
|
24
21
|
readonly onDidActiveChange: Event<ActiveEvent>;
|
|
25
|
-
readonly
|
|
22
|
+
readonly onDidParametersChange: Event<Parameters>;
|
|
26
23
|
setActive(): void;
|
|
24
|
+
setVisible(isVisible: boolean): void;
|
|
27
25
|
updateParameters(parameters: Parameters): void;
|
|
28
26
|
/**
|
|
29
27
|
* The id of the panel that would have been assigned when the panel was created
|
|
@@ -41,10 +39,6 @@ export interface PanelApi {
|
|
|
41
39
|
* Whether the panel is visible
|
|
42
40
|
*/
|
|
43
41
|
readonly isVisible: boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Whether the panel is hidden
|
|
46
|
-
*/
|
|
47
|
-
readonly isHidden: boolean;
|
|
48
42
|
/**
|
|
49
43
|
* The panel width in pixels
|
|
50
44
|
*/
|
|
@@ -54,6 +48,7 @@ export interface PanelApi {
|
|
|
54
48
|
*/
|
|
55
49
|
readonly height: number;
|
|
56
50
|
readonly onWillFocus: Event<WillFocusEvent>;
|
|
51
|
+
getParameters<T extends Parameters = Parameters>(): T;
|
|
57
52
|
}
|
|
58
53
|
export declare class WillFocusEvent extends DockviewEvent {
|
|
59
54
|
constructor();
|
|
@@ -63,12 +58,13 @@ export declare class WillFocusEvent extends DockviewEvent {
|
|
|
63
58
|
*/
|
|
64
59
|
export declare class PanelApiImpl extends CompositeDisposable implements PanelApi {
|
|
65
60
|
readonly id: string;
|
|
61
|
+
readonly component: string;
|
|
66
62
|
private _isFocused;
|
|
67
63
|
private _isActive;
|
|
68
64
|
private _isVisible;
|
|
69
|
-
private _isHidden;
|
|
70
65
|
private _width;
|
|
71
66
|
private _height;
|
|
67
|
+
private _parameters;
|
|
72
68
|
private readonly panelUpdatesDisposable;
|
|
73
69
|
readonly _onDidDimensionChange: Emitter<PanelDimensionChangeEvent>;
|
|
74
70
|
readonly onDidDimensionsChange: Event<PanelDimensionChangeEvent>;
|
|
@@ -78,23 +74,23 @@ export declare class PanelApiImpl extends CompositeDisposable implements PanelAp
|
|
|
78
74
|
readonly onWillFocus: Event<WillFocusEvent>;
|
|
79
75
|
readonly _onDidVisibilityChange: Emitter<VisibilityEvent>;
|
|
80
76
|
readonly onDidVisibilityChange: Event<VisibilityEvent>;
|
|
81
|
-
readonly
|
|
82
|
-
readonly
|
|
77
|
+
readonly _onWillVisibilityChange: Emitter<VisibilityEvent>;
|
|
78
|
+
readonly onWillVisibilityChange: Event<VisibilityEvent>;
|
|
83
79
|
readonly _onDidActiveChange: Emitter<ActiveEvent>;
|
|
84
80
|
readonly onDidActiveChange: Event<ActiveEvent>;
|
|
85
81
|
readonly _onActiveChange: Emitter<void>;
|
|
86
82
|
readonly onActiveChange: Event<void>;
|
|
87
|
-
readonly
|
|
88
|
-
readonly
|
|
83
|
+
readonly _onDidParametersChange: Emitter<Parameters>;
|
|
84
|
+
readonly onDidParametersChange: Event<Parameters>;
|
|
89
85
|
get isFocused(): boolean;
|
|
90
86
|
get isActive(): boolean;
|
|
91
87
|
get isVisible(): boolean;
|
|
92
|
-
get isHidden(): boolean;
|
|
93
88
|
get width(): number;
|
|
94
89
|
get height(): number;
|
|
95
|
-
constructor(id: string);
|
|
90
|
+
constructor(id: string, component: string);
|
|
91
|
+
getParameters<T extends Parameters = Parameters>(): T;
|
|
96
92
|
initialize(panel: IPanel): void;
|
|
97
|
-
|
|
93
|
+
setVisible(isVisible: boolean): void;
|
|
98
94
|
setActive(): void;
|
|
99
95
|
updateParameters(parameters: Parameters): void;
|
|
100
96
|
}
|
package/dist/esm/api/panelApi.js
CHANGED
|
@@ -18,24 +18,22 @@ export class PanelApiImpl extends CompositeDisposable {
|
|
|
18
18
|
get isVisible() {
|
|
19
19
|
return this._isVisible;
|
|
20
20
|
}
|
|
21
|
-
get isHidden() {
|
|
22
|
-
return this._isHidden;
|
|
23
|
-
}
|
|
24
21
|
get width() {
|
|
25
22
|
return this._width;
|
|
26
23
|
}
|
|
27
24
|
get height() {
|
|
28
25
|
return this._height;
|
|
29
26
|
}
|
|
30
|
-
constructor(id) {
|
|
27
|
+
constructor(id, component) {
|
|
31
28
|
super();
|
|
32
29
|
this.id = id;
|
|
30
|
+
this.component = component;
|
|
33
31
|
this._isFocused = false;
|
|
34
32
|
this._isActive = false;
|
|
35
33
|
this._isVisible = true;
|
|
36
|
-
this._isHidden = false;
|
|
37
34
|
this._width = 0;
|
|
38
35
|
this._height = 0;
|
|
36
|
+
this._parameters = {};
|
|
39
37
|
this.panelUpdatesDisposable = new MutableDisposable();
|
|
40
38
|
this._onDidDimensionChange = new Emitter();
|
|
41
39
|
this.onDidDimensionsChange = this._onDidDimensionChange.event;
|
|
@@ -47,41 +45,43 @@ export class PanelApiImpl extends CompositeDisposable {
|
|
|
47
45
|
//
|
|
48
46
|
this._onDidVisibilityChange = new Emitter();
|
|
49
47
|
this.onDidVisibilityChange = this._onDidVisibilityChange.event;
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
48
|
+
this._onWillVisibilityChange = new Emitter();
|
|
49
|
+
this.onWillVisibilityChange = this._onWillVisibilityChange.event;
|
|
52
50
|
this._onDidActiveChange = new Emitter();
|
|
53
51
|
this.onDidActiveChange = this._onDidActiveChange.event;
|
|
54
52
|
this._onActiveChange = new Emitter();
|
|
55
53
|
this.onActiveChange = this._onActiveChange.event;
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
54
|
+
this._onDidParametersChange = new Emitter();
|
|
55
|
+
this.onDidParametersChange = this._onDidParametersChange.event;
|
|
58
56
|
this.addDisposables(this.onDidFocusChange((event) => {
|
|
59
57
|
this._isFocused = event.isFocused;
|
|
60
58
|
}), this.onDidActiveChange((event) => {
|
|
61
59
|
this._isActive = event.isActive;
|
|
62
60
|
}), this.onDidVisibilityChange((event) => {
|
|
63
61
|
this._isVisible = event.isVisible;
|
|
64
|
-
}), this.onDidHiddenChange((event) => {
|
|
65
|
-
this._isHidden = event.isHidden;
|
|
66
62
|
}), this.onDidDimensionsChange((event) => {
|
|
67
63
|
this._width = event.width;
|
|
68
64
|
this._height = event.height;
|
|
69
|
-
}), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this.
|
|
65
|
+
}), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);
|
|
66
|
+
}
|
|
67
|
+
getParameters() {
|
|
68
|
+
return this._parameters;
|
|
70
69
|
}
|
|
71
70
|
initialize(panel) {
|
|
72
|
-
this.panelUpdatesDisposable.value = this.
|
|
71
|
+
this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {
|
|
72
|
+
this._parameters = parameters;
|
|
73
73
|
panel.update({
|
|
74
74
|
params: parameters,
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
|
|
79
|
-
this.
|
|
78
|
+
setVisible(isVisible) {
|
|
79
|
+
this._onWillVisibilityChange.fire({ isVisible });
|
|
80
80
|
}
|
|
81
81
|
setActive() {
|
|
82
82
|
this._onActiveChange.fire();
|
|
83
83
|
}
|
|
84
84
|
updateParameters(parameters) {
|
|
85
|
-
this.
|
|
85
|
+
this._onDidParametersChange.fire(parameters);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
@@ -20,7 +20,7 @@ export declare class PaneviewPanelApiImpl extends SplitviewPanelApiImpl implemen
|
|
|
20
20
|
readonly onMouseLeave: Event<MouseEvent>;
|
|
21
21
|
private _pane;
|
|
22
22
|
set pane(pane: PaneviewPanel);
|
|
23
|
-
constructor(id: string);
|
|
23
|
+
constructor(id: string, component: string);
|
|
24
24
|
setExpanded(isExpanded: boolean): void;
|
|
25
25
|
get isExpanded(): boolean;
|
|
26
26
|
}
|
|
@@ -4,8 +4,8 @@ export class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {
|
|
|
4
4
|
set pane(pane) {
|
|
5
5
|
this._pane = pane;
|
|
6
6
|
}
|
|
7
|
-
constructor(id) {
|
|
8
|
-
super(id);
|
|
7
|
+
constructor(id, component) {
|
|
8
|
+
super(id, component);
|
|
9
9
|
this._onDidExpansionChange = new Emitter({
|
|
10
10
|
replay: true,
|
|
11
11
|
});
|
|
@@ -25,7 +25,7 @@ export declare class SplitviewPanelApiImpl extends PanelApiImpl implements Split
|
|
|
25
25
|
readonly onDidConstraintsChange: Event<PanelConstraintChangeEvent>;
|
|
26
26
|
readonly _onDidSizeChange: Emitter<PanelSizeEvent>;
|
|
27
27
|
readonly onDidSizeChange: Event<PanelSizeEvent>;
|
|
28
|
-
constructor(id: string);
|
|
28
|
+
constructor(id: string, component: string);
|
|
29
29
|
setConstraints(value: PanelConstraintChangeEvent2): void;
|
|
30
30
|
setSize(event: PanelSizeEvent): void;
|
|
31
31
|
}
|
|
@@ -2,8 +2,8 @@ import { Emitter } from '../events';
|
|
|
2
2
|
import { PanelApiImpl } from './panelApi';
|
|
3
3
|
export class SplitviewPanelApiImpl extends PanelApiImpl {
|
|
4
4
|
//
|
|
5
|
-
constructor(id) {
|
|
6
|
-
super(id);
|
|
5
|
+
constructor(id, component) {
|
|
6
|
+
super(id, component);
|
|
7
7
|
this._onDidConstraintsChangeInternal = new Emitter();
|
|
8
8
|
this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
|
|
9
9
|
//
|
|
@@ -48,7 +48,7 @@ export class ContentContainer extends CompositeDisposable {
|
|
|
48
48
|
data.groupId === this.group.id;
|
|
49
49
|
return !groupHasOnePanelAndIsActiveDragElement;
|
|
50
50
|
}
|
|
51
|
-
return this.group.canDisplayOverlay(event, position, '
|
|
51
|
+
return this.group.canDisplayOverlay(event, position, 'content');
|
|
52
52
|
},
|
|
53
53
|
});
|
|
54
54
|
this.addDisposables(this.dropTarget);
|
|
@@ -38,7 +38,7 @@ export class VoidContainer extends CompositeDisposable {
|
|
|
38
38
|
// don't show the overlay if the tab being dragged is the last panel of this group
|
|
39
39
|
return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
|
|
40
40
|
}
|
|
41
|
-
return group.model.canDisplayOverlay(event, position, '
|
|
41
|
+
return group.model.canDisplayOverlay(event, position, 'header_space');
|
|
42
42
|
},
|
|
43
43
|
});
|
|
44
44
|
this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
|
|
@@ -18,7 +18,7 @@ export class DefaultDockviewDeserialzier {
|
|
|
18
18
|
? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id
|
|
19
19
|
: panelData.tabComponent;
|
|
20
20
|
const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);
|
|
21
|
-
const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {
|
|
21
|
+
const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {
|
|
22
22
|
renderer: panelData.renderer,
|
|
23
23
|
});
|
|
24
24
|
panel.init({
|
|
@@ -12,7 +12,7 @@ import { isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGro
|
|
|
12
12
|
import { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';
|
|
13
13
|
import { DockviewApi } from '../api/component.api';
|
|
14
14
|
import { Orientation, Sizing } from '../splitview/splitview';
|
|
15
|
-
import { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';
|
|
15
|
+
import { DockviewDidDropEvent, DockviewWillDropEvent, WillShowOverlayLocationEvent, } from './dockviewGroupPanelModel';
|
|
16
16
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
17
17
|
import { DockviewPanelModel } from './dockviewPanelModel';
|
|
18
18
|
import { getPanelData } from '../dnd/dataTransfer';
|
|
@@ -269,7 +269,15 @@ export class DockviewComponent extends BaseGrid {
|
|
|
269
269
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
270
270
|
overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
|
|
271
271
|
});
|
|
272
|
-
this.addDisposables(this._rootDropTarget.
|
|
272
|
+
this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
|
|
273
|
+
if (this.gridview.length > 0 && event.position === 'center') {
|
|
274
|
+
// option only available when no panels in primary grid
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
|
|
278
|
+
kind: 'edge',
|
|
279
|
+
}));
|
|
280
|
+
}), this._rootDropTarget.onDrop((event) => {
|
|
273
281
|
var _a;
|
|
274
282
|
const willDropEvent = new DockviewWillDropEvent({
|
|
275
283
|
nativeEvent: event.nativeEvent,
|
|
@@ -278,7 +286,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
278
286
|
api: this._api,
|
|
279
287
|
group: undefined,
|
|
280
288
|
getData: getPanelData,
|
|
281
|
-
kind: '
|
|
289
|
+
kind: 'edge',
|
|
282
290
|
});
|
|
283
291
|
this._onWillDrop.fire(willDropEvent);
|
|
284
292
|
if (willDropEvent.defaultPrevented) {
|
|
@@ -334,7 +342,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
334
342
|
const box = getBox();
|
|
335
343
|
const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId(); //item.id;
|
|
336
344
|
if (itemToPopout.api.location.type === 'grid') {
|
|
337
|
-
itemToPopout.api.
|
|
345
|
+
itemToPopout.api.setVisible(false);
|
|
338
346
|
}
|
|
339
347
|
const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
|
|
340
348
|
theme !== null && theme !== void 0 ? theme : '', {
|
|
@@ -385,7 +393,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
385
393
|
}));
|
|
386
394
|
switch (referenceLocation) {
|
|
387
395
|
case 'grid':
|
|
388
|
-
referenceGroup.api.
|
|
396
|
+
referenceGroup.api.setVisible(false);
|
|
389
397
|
break;
|
|
390
398
|
case 'floating':
|
|
391
399
|
case 'popout':
|
|
@@ -439,8 +447,8 @@ export class DockviewComponent extends BaseGrid {
|
|
|
439
447
|
from: group,
|
|
440
448
|
to: referenceGroup,
|
|
441
449
|
}));
|
|
442
|
-
if (referenceGroup.api.
|
|
443
|
-
referenceGroup.api.
|
|
450
|
+
if (!referenceGroup.api.isVisible) {
|
|
451
|
+
referenceGroup.api.setVisible(true);
|
|
444
452
|
}
|
|
445
453
|
if (this.getPanel(group.id)) {
|
|
446
454
|
this.doRemoveGroup(group, {
|
|
@@ -1015,7 +1023,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
1015
1023
|
}
|
|
1016
1024
|
updateWatermark() {
|
|
1017
1025
|
var _a, _b;
|
|
1018
|
-
if (this.groups.filter((x) => x.api.location.type === 'grid' &&
|
|
1026
|
+
if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
|
|
1019
1027
|
if (!this.watermark) {
|
|
1020
1028
|
this.watermark = this.createWatermarkComponent();
|
|
1021
1029
|
this.watermark.init({
|
|
@@ -1412,6 +1420,8 @@ export class DockviewComponent extends BaseGrid {
|
|
|
1412
1420
|
if (this._onDidActivePanelChange.value !== event.panel) {
|
|
1413
1421
|
this._onDidActivePanelChange.fire(event.panel);
|
|
1414
1422
|
}
|
|
1423
|
+
}), Event.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {
|
|
1424
|
+
this._bufferOnDidLayoutChange.fire();
|
|
1415
1425
|
}));
|
|
1416
1426
|
this._groups.set(view.id, { value: view, disposable });
|
|
1417
1427
|
}
|
|
@@ -1424,7 +1434,7 @@ export class DockviewComponent extends BaseGrid {
|
|
|
1424
1434
|
const contentComponent = options.component;
|
|
1425
1435
|
const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
|
|
1426
1436
|
const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);
|
|
1427
|
-
const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
|
|
1437
|
+
const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, { renderer: options.renderer });
|
|
1428
1438
|
panel.init({
|
|
1429
1439
|
title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
|
|
1430
1440
|
params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
|
|
@@ -5,12 +5,12 @@ import { DockviewComponent } from './dockviewComponent';
|
|
|
5
5
|
import { DockviewEvent, Event, IDockviewEvent } from '../events';
|
|
6
6
|
import { IViewSize } from '../gridview/gridview';
|
|
7
7
|
import { CompositeDisposable } from '../lifecycle';
|
|
8
|
-
import { IPanel, PanelInitParameters, PanelUpdateEvent } from '../panel/types';
|
|
8
|
+
import { IPanel, PanelInitParameters, PanelUpdateEvent, Parameters } from '../panel/types';
|
|
9
9
|
import { GroupDragEvent, TabDragEvent } from './components/titlebar/tabsContainer';
|
|
10
|
-
import { DockviewDropTargets } from './types';
|
|
11
10
|
import { DockviewGroupPanel } from './dockviewGroupPanel';
|
|
12
11
|
import { IDockviewPanel } from './dockviewPanel';
|
|
13
12
|
import { OverlayRenderContainer } from '../overlayRenderContainer';
|
|
13
|
+
import { TitleEvent } from '../api/dockviewPanelApi';
|
|
14
14
|
interface GroupMoveEvent {
|
|
15
15
|
groupId: string;
|
|
16
16
|
itemId?: string;
|
|
@@ -69,7 +69,7 @@ export interface IHeader {
|
|
|
69
69
|
hidden: boolean;
|
|
70
70
|
}
|
|
71
71
|
export type DockviewGroupPanelLocked = boolean | 'no-drop-target';
|
|
72
|
-
export type DockviewGroupDropLocation = 'tab' | 'header_space' | 'content';
|
|
72
|
+
export type DockviewGroupDropLocation = 'tab' | 'header_space' | 'content' | 'edge';
|
|
73
73
|
export interface IDockviewGroupPanelModel extends IPanel {
|
|
74
74
|
readonly isActive: boolean;
|
|
75
75
|
readonly size: number;
|
|
@@ -106,7 +106,7 @@ export interface IDockviewGroupPanelModel extends IPanel {
|
|
|
106
106
|
panel?: IDockviewPanel;
|
|
107
107
|
suppressRoll?: boolean;
|
|
108
108
|
}): void;
|
|
109
|
-
canDisplayOverlay(event: DragEvent, position: Position, target:
|
|
109
|
+
canDisplayOverlay(event: DragEvent, position: Position, target: DockviewGroupDropLocation): boolean;
|
|
110
110
|
}
|
|
111
111
|
export type DockviewGroupLocation = {
|
|
112
112
|
type: 'grid';
|
|
@@ -150,6 +150,7 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
150
150
|
private _width;
|
|
151
151
|
private _height;
|
|
152
152
|
private _panels;
|
|
153
|
+
private readonly _panelDisposables;
|
|
153
154
|
private readonly _onMove;
|
|
154
155
|
readonly onMove: Event<GroupMoveEvent>;
|
|
155
156
|
private readonly _onDidDrop;
|
|
@@ -164,6 +165,10 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
164
165
|
readonly onGroupDragStart: Event<GroupDragEvent>;
|
|
165
166
|
private readonly _onDidAddPanel;
|
|
166
167
|
readonly onDidAddPanel: Event<DockviewGroupChangeEvent>;
|
|
168
|
+
private readonly _onDidPanelTitleChange;
|
|
169
|
+
readonly onDidPanelTitleChange: Event<TitleEvent>;
|
|
170
|
+
private readonly _onDidPanelParametersChange;
|
|
171
|
+
readonly onDidPanelParametersChange: Event<Parameters>;
|
|
167
172
|
private readonly _onDidRemovePanel;
|
|
168
173
|
readonly onDidRemovePanel: Event<DockviewGroupChangeEvent>;
|
|
169
174
|
private readonly _onDidActivePanelChange;
|
|
@@ -225,7 +230,7 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
|
|
|
225
230
|
private doSetActivePanel;
|
|
226
231
|
private updateMru;
|
|
227
232
|
private updateContainer;
|
|
228
|
-
canDisplayOverlay(event: DragEvent, position: Position, target:
|
|
233
|
+
canDisplayOverlay(event: DragEvent, position: Position, target: DockviewGroupDropLocation): boolean;
|
|
229
234
|
private handleDropEvent;
|
|
230
235
|
dispose(): void;
|
|
231
236
|
}
|
|
@@ -147,6 +147,7 @@ export class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
147
147
|
this._width = 0;
|
|
148
148
|
this._height = 0;
|
|
149
149
|
this._panels = [];
|
|
150
|
+
this._panelDisposables = new Map();
|
|
150
151
|
this._onMove = new Emitter();
|
|
151
152
|
this.onMove = this._onMove.event;
|
|
152
153
|
this._onDidDrop = new Emitter();
|
|
@@ -161,6 +162,10 @@ export class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
161
162
|
this.onGroupDragStart = this._onGroupDragStart.event;
|
|
162
163
|
this._onDidAddPanel = new Emitter();
|
|
163
164
|
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
165
|
+
this._onDidPanelTitleChange = new Emitter();
|
|
166
|
+
this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;
|
|
167
|
+
this._onDidPanelParametersChange = new Emitter();
|
|
168
|
+
this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;
|
|
164
169
|
this._onDidRemovePanel = new Emitter();
|
|
165
170
|
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
166
171
|
this._onDidActivePanelChange = new Emitter();
|
|
@@ -449,6 +454,11 @@ export class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
449
454
|
if (this.mostRecentlyUsed.includes(panel)) {
|
|
450
455
|
this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
|
|
451
456
|
}
|
|
457
|
+
const disposable = this._panelDisposables.get(panel.id);
|
|
458
|
+
if (disposable) {
|
|
459
|
+
disposable.dispose();
|
|
460
|
+
this._panelDisposables.delete(panel.id);
|
|
461
|
+
}
|
|
452
462
|
this._onDidRemovePanel.fire({ panel });
|
|
453
463
|
}
|
|
454
464
|
doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
|
|
@@ -466,6 +476,7 @@ export class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
466
476
|
}
|
|
467
477
|
this.updateMru(panel);
|
|
468
478
|
this.panels.splice(index, 0, panel);
|
|
479
|
+
this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));
|
|
469
480
|
this._onDidAddPanel.fire({ panel });
|
|
470
481
|
}
|
|
471
482
|
doSetActivePanel(panel) {
|
|
@@ -36,7 +36,7 @@ export declare class DockviewPanel extends CompositeDisposable implements IDockv
|
|
|
36
36
|
get title(): string | undefined;
|
|
37
37
|
get group(): DockviewGroupPanel;
|
|
38
38
|
get renderer(): DockviewPanelRenderer;
|
|
39
|
-
constructor(id: string, accessor: DockviewComponent, containerApi: DockviewApi, group: DockviewGroupPanel, view: IDockviewPanelModel, options: {
|
|
39
|
+
constructor(id: string, component: string, tabComponent: string | undefined, accessor: DockviewComponent, containerApi: DockviewApi, group: DockviewGroupPanel, view: IDockviewPanelModel, options: {
|
|
40
40
|
renderer?: DockviewPanelRenderer;
|
|
41
41
|
});
|
|
42
42
|
init(params: IGroupPanelInitParameters): void;
|