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.
Files changed (91) hide show
  1. package/dist/cjs/api/component.api.d.ts +10 -2
  2. package/dist/cjs/api/component.api.js +10 -2
  3. package/dist/cjs/api/dockviewGroupPanelApi.js +1 -1
  4. package/dist/cjs/api/dockviewPanelApi.d.ts +5 -1
  5. package/dist/cjs/api/dockviewPanelApi.js +43 -26
  6. package/dist/cjs/api/gridviewPanelApi.d.ts +1 -1
  7. package/dist/cjs/api/gridviewPanelApi.js +2 -2
  8. package/dist/cjs/api/panelApi.d.ts +12 -16
  9. package/dist/cjs/api/panelApi.js +17 -20
  10. package/dist/cjs/api/paneviewPanelApi.d.ts +1 -1
  11. package/dist/cjs/api/paneviewPanelApi.js +2 -2
  12. package/dist/cjs/api/splitviewPanelApi.d.ts +1 -1
  13. package/dist/cjs/api/splitviewPanelApi.js +2 -2
  14. package/dist/cjs/dockview/components/panel/content.js +1 -1
  15. package/dist/cjs/dockview/components/titlebar/voidContainer.js +1 -1
  16. package/dist/cjs/dockview/deserializer.js +1 -1
  17. package/dist/cjs/dockview/dockviewComponent.js +18 -8
  18. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +10 -5
  19. package/dist/cjs/dockview/dockviewGroupPanelModel.js +16 -0
  20. package/dist/cjs/dockview/dockviewPanel.d.ts +1 -1
  21. package/dist/cjs/dockview/dockviewPanel.js +2 -2
  22. package/dist/cjs/dockview/options.d.ts +3 -3
  23. package/dist/cjs/dockview/types.d.ts +0 -1
  24. package/dist/cjs/gridview/gridviewPanel.js +4 -4
  25. package/dist/cjs/lifecycle.d.ts +1 -1
  26. package/dist/cjs/paneview/paneview.d.ts +1 -0
  27. package/dist/cjs/paneview/paneview.js +3 -0
  28. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -0
  29. package/dist/cjs/paneview/paneviewComponent.js +6 -0
  30. package/dist/cjs/paneview/paneviewPanel.d.ts +2 -0
  31. package/dist/cjs/paneview/paneviewPanel.js +6 -2
  32. package/dist/cjs/splitview/splitviewComponent.d.ts +1 -1
  33. package/dist/cjs/splitview/splitviewComponent.js +5 -5
  34. package/dist/cjs/splitview/splitviewPanel.js +4 -4
  35. package/dist/dockview-core.amd.js +134 -79
  36. package/dist/dockview-core.amd.js.map +1 -1
  37. package/dist/dockview-core.amd.min.js +2 -2
  38. package/dist/dockview-core.amd.min.js.map +1 -1
  39. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  40. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  41. package/dist/dockview-core.amd.noStyle.js +134 -79
  42. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  43. package/dist/dockview-core.cjs.js +134 -79
  44. package/dist/dockview-core.cjs.js.map +1 -1
  45. package/dist/dockview-core.esm.js +134 -79
  46. package/dist/dockview-core.esm.js.map +1 -1
  47. package/dist/dockview-core.esm.min.js +2 -2
  48. package/dist/dockview-core.esm.min.js.map +1 -1
  49. package/dist/dockview-core.js +134 -79
  50. package/dist/dockview-core.js.map +1 -1
  51. package/dist/dockview-core.min.js +2 -2
  52. package/dist/dockview-core.min.js.map +1 -1
  53. package/dist/dockview-core.min.noStyle.js +2 -2
  54. package/dist/dockview-core.min.noStyle.js.map +1 -1
  55. package/dist/dockview-core.noStyle.js +134 -79
  56. package/dist/dockview-core.noStyle.js.map +1 -1
  57. package/dist/esm/api/component.api.d.ts +10 -2
  58. package/dist/esm/api/component.api.js +10 -2
  59. package/dist/esm/api/dockviewGroupPanelApi.js +1 -1
  60. package/dist/esm/api/dockviewPanelApi.d.ts +5 -1
  61. package/dist/esm/api/dockviewPanelApi.js +38 -25
  62. package/dist/esm/api/gridviewPanelApi.d.ts +1 -1
  63. package/dist/esm/api/gridviewPanelApi.js +2 -2
  64. package/dist/esm/api/panelApi.d.ts +12 -16
  65. package/dist/esm/api/panelApi.js +16 -16
  66. package/dist/esm/api/paneviewPanelApi.d.ts +1 -1
  67. package/dist/esm/api/paneviewPanelApi.js +2 -2
  68. package/dist/esm/api/splitviewPanelApi.d.ts +1 -1
  69. package/dist/esm/api/splitviewPanelApi.js +2 -2
  70. package/dist/esm/dockview/components/panel/content.js +1 -1
  71. package/dist/esm/dockview/components/titlebar/voidContainer.js +1 -1
  72. package/dist/esm/dockview/deserializer.js +1 -1
  73. package/dist/esm/dockview/dockviewComponent.js +19 -9
  74. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +10 -5
  75. package/dist/esm/dockview/dockviewGroupPanelModel.js +11 -0
  76. package/dist/esm/dockview/dockviewPanel.d.ts +1 -1
  77. package/dist/esm/dockview/dockviewPanel.js +2 -2
  78. package/dist/esm/dockview/options.d.ts +3 -3
  79. package/dist/esm/dockview/types.d.ts +0 -1
  80. package/dist/esm/gridview/gridviewPanel.js +4 -4
  81. package/dist/esm/lifecycle.d.ts +1 -1
  82. package/dist/esm/paneview/paneview.d.ts +1 -0
  83. package/dist/esm/paneview/paneview.js +3 -0
  84. package/dist/esm/paneview/paneviewComponent.d.ts +2 -0
  85. package/dist/esm/paneview/paneviewComponent.js +6 -0
  86. package/dist/esm/paneview/paneviewPanel.d.ts +2 -0
  87. package/dist/esm/paneview/paneviewPanel.js +6 -2
  88. package/dist/esm/splitview/splitviewComponent.d.ts +1 -1
  89. package/dist/esm/splitview/splitviewComponent.js +5 -5
  90. package/dist/esm/splitview/splitviewPanel.js +4 -4
  91. 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. Exposed for custom Drag'n'Drop functionality.
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. Exposed for custom Drag'n'Drop functionality.
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. Exposed for custom Drag'n'Drop functionality.
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. Exposed for custom Drag'n'Drop functionality.
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
- constructor(panel: DockviewPanel, group: DockviewGroupPanel, accessor: DockviewComponent);
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 isOldGroupActive = this.isGroupActive;
18
+ const oldGroup = this._group;
19
19
  if (this._group !== value) {
20
20
  this._group = value;
21
21
  this._onDidGroupChange.fire({});
22
- let _trackGroupActive = isOldGroupActive; // prevent duplicate events with same state
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
- constructor(panel, group, accessor) {
53
- super(panel.id);
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 onDidHiddenChange: Event<HiddenEvent>;
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 _onDidHiddenChange: Emitter<HiddenEvent>;
82
- readonly onDidHiddenChange: Event<HiddenEvent>;
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 _onUpdateParameters: Emitter<Parameters>;
88
- readonly onUpdateParameters: Event<Parameters>;
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
- setHidden(isHidden: boolean): void;
93
+ setVisible(isVisible: boolean): void;
98
94
  setActive(): void;
99
95
  updateParameters(parameters: Parameters): void;
100
96
  }
@@ -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._onDidHiddenChange = new Emitter();
51
- this.onDidHiddenChange = this._onDidHiddenChange.event;
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._onUpdateParameters = new Emitter();
57
- this.onUpdateParameters = this._onUpdateParameters.event;
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._onUpdateParameters, this._onWillFocus, this._onDidHiddenChange, this._onUpdateParameters);
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._onUpdateParameters.event((parameters) => {
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
- setHidden(isHidden) {
79
- this._onDidHiddenChange.fire({ isHidden });
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._onUpdateParameters.fire(parameters);
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, 'panel');
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, 'panel');
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.onDrop((event) => {
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: 'content',
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.setHidden(true);
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.setHidden(true);
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.isHidden) {
443
- referenceGroup.api.setHidden(false);
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' && !x.api.isHidden).length === 0) {
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: DockviewDropTargets): boolean;
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: DockviewDropTargets): boolean;
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;