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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 1.10.0
3
+ * @version 1.10.2
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -1448,6 +1448,9 @@ define(['exports'], (function (exports) { 'use strict';
1448
1448
  this._onDidChange.fire();
1449
1449
  }));
1450
1450
  }
1451
+ setViewVisible(index, visible) {
1452
+ this.splitview.setViewVisible(index, visible);
1453
+ }
1451
1454
  addPane(pane, size, index = this.splitview.length, skipLayout = false) {
1452
1455
  const disposable = pane.onDidChangeExpansionState(() => {
1453
1456
  this.setupAnimation();
@@ -2952,19 +2955,27 @@ define(['exports'], (function (exports) { 'use strict';
2952
2955
  return this.component.onWillDrop;
2953
2956
  }
2954
2957
  /**
2958
+ * Invoked before an overlay is shown indicating a drop target.
2955
2959
  *
2960
+ * Calling `event.preventDefault()` will prevent the overlay being shown and prevent
2961
+ * the any subsequent drop event.
2956
2962
  */
2957
2963
  get onWillShowOverlay() {
2958
2964
  return this.component.onWillShowOverlay;
2959
2965
  }
2960
2966
  /**
2961
- * Invoked before a group is dragged. Exposed for custom Drag'n'Drop functionality.
2967
+ * Invoked before a group is dragged.
2968
+ *
2969
+ * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.
2970
+ *
2962
2971
  */
2963
2972
  get onWillDragGroup() {
2964
2973
  return this.component.onWillDragGroup;
2965
2974
  }
2966
2975
  /**
2967
- * Invoked before a panel is dragged. Exposed for custom Drag'n'Drop functionality.
2976
+ * Invoked before a panel is dragged.
2977
+ *
2978
+ * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.
2968
2979
  */
2969
2980
  get onWillDragPanel() {
2970
2981
  return this.component.onWillDragPanel;
@@ -3508,7 +3519,7 @@ define(['exports'], (function (exports) { 'use strict';
3508
3519
  data.groupId === this.group.id;
3509
3520
  return !groupHasOnePanelAndIsActiveDragElement;
3510
3521
  }
3511
- return this.group.canDisplayOverlay(event, position, 'panel');
3522
+ return this.group.canDisplayOverlay(event, position, 'content');
3512
3523
  },
3513
3524
  });
3514
3525
  this.addDisposables(this.dropTarget);
@@ -3831,7 +3842,7 @@ define(['exports'], (function (exports) { 'use strict';
3831
3842
  // don't show the overlay if the tab being dragged is the last panel of this group
3832
3843
  return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
3833
3844
  }
3834
- return group.model.canDisplayOverlay(event, position, 'panel');
3845
+ return group.model.canDisplayOverlay(event, position, 'header_space');
3835
3846
  },
3836
3847
  });
3837
3848
  this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
@@ -4224,6 +4235,7 @@ define(['exports'], (function (exports) { 'use strict';
4224
4235
  this._width = 0;
4225
4236
  this._height = 0;
4226
4237
  this._panels = [];
4238
+ this._panelDisposables = new Map();
4227
4239
  this._onMove = new Emitter();
4228
4240
  this.onMove = this._onMove.event;
4229
4241
  this._onDidDrop = new Emitter();
@@ -4238,6 +4250,10 @@ define(['exports'], (function (exports) { 'use strict';
4238
4250
  this.onGroupDragStart = this._onGroupDragStart.event;
4239
4251
  this._onDidAddPanel = new Emitter();
4240
4252
  this.onDidAddPanel = this._onDidAddPanel.event;
4253
+ this._onDidPanelTitleChange = new Emitter();
4254
+ this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;
4255
+ this._onDidPanelParametersChange = new Emitter();
4256
+ this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;
4241
4257
  this._onDidRemovePanel = new Emitter();
4242
4258
  this.onDidRemovePanel = this._onDidRemovePanel.event;
4243
4259
  this._onDidActivePanelChange = new Emitter();
@@ -4526,6 +4542,11 @@ define(['exports'], (function (exports) { 'use strict';
4526
4542
  if (this.mostRecentlyUsed.includes(panel)) {
4527
4543
  this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
4528
4544
  }
4545
+ const disposable = this._panelDisposables.get(panel.id);
4546
+ if (disposable) {
4547
+ disposable.dispose();
4548
+ this._panelDisposables.delete(panel.id);
4549
+ }
4529
4550
  this._onDidRemovePanel.fire({ panel });
4530
4551
  }
4531
4552
  doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {
@@ -4543,6 +4564,7 @@ define(['exports'], (function (exports) { 'use strict';
4543
4564
  }
4544
4565
  this.updateMru(panel);
4545
4566
  this.panels.splice(index, 0, panel);
4567
+ this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));
4546
4568
  this._onDidAddPanel.fire({ panel });
4547
4569
  }
4548
4570
  doSetActivePanel(panel) {
@@ -4960,24 +4982,22 @@ define(['exports'], (function (exports) { 'use strict';
4960
4982
  get isVisible() {
4961
4983
  return this._isVisible;
4962
4984
  }
4963
- get isHidden() {
4964
- return this._isHidden;
4965
- }
4966
4985
  get width() {
4967
4986
  return this._width;
4968
4987
  }
4969
4988
  get height() {
4970
4989
  return this._height;
4971
4990
  }
4972
- constructor(id) {
4991
+ constructor(id, component) {
4973
4992
  super();
4974
4993
  this.id = id;
4994
+ this.component = component;
4975
4995
  this._isFocused = false;
4976
4996
  this._isActive = false;
4977
4997
  this._isVisible = true;
4978
- this._isHidden = false;
4979
4998
  this._width = 0;
4980
4999
  this._height = 0;
5000
+ this._parameters = {};
4981
5001
  this.panelUpdatesDisposable = new MutableDisposable();
4982
5002
  this._onDidDimensionChange = new Emitter();
4983
5003
  this.onDidDimensionsChange = this._onDidDimensionChange.event;
@@ -4989,49 +5009,51 @@ define(['exports'], (function (exports) { 'use strict';
4989
5009
  //
4990
5010
  this._onDidVisibilityChange = new Emitter();
4991
5011
  this.onDidVisibilityChange = this._onDidVisibilityChange.event;
4992
- this._onDidHiddenChange = new Emitter();
4993
- this.onDidHiddenChange = this._onDidHiddenChange.event;
5012
+ this._onWillVisibilityChange = new Emitter();
5013
+ this.onWillVisibilityChange = this._onWillVisibilityChange.event;
4994
5014
  this._onDidActiveChange = new Emitter();
4995
5015
  this.onDidActiveChange = this._onDidActiveChange.event;
4996
5016
  this._onActiveChange = new Emitter();
4997
5017
  this.onActiveChange = this._onActiveChange.event;
4998
- this._onUpdateParameters = new Emitter();
4999
- this.onUpdateParameters = this._onUpdateParameters.event;
5018
+ this._onDidParametersChange = new Emitter();
5019
+ this.onDidParametersChange = this._onDidParametersChange.event;
5000
5020
  this.addDisposables(this.onDidFocusChange((event) => {
5001
5021
  this._isFocused = event.isFocused;
5002
5022
  }), this.onDidActiveChange((event) => {
5003
5023
  this._isActive = event.isActive;
5004
5024
  }), this.onDidVisibilityChange((event) => {
5005
5025
  this._isVisible = event.isVisible;
5006
- }), this.onDidHiddenChange((event) => {
5007
- this._isHidden = event.isHidden;
5008
5026
  }), this.onDidDimensionsChange((event) => {
5009
5027
  this._width = event.width;
5010
5028
  this._height = event.height;
5011
- }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onUpdateParameters, this._onWillFocus, this._onDidHiddenChange, this._onUpdateParameters);
5029
+ }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);
5030
+ }
5031
+ getParameters() {
5032
+ return this._parameters;
5012
5033
  }
5013
5034
  initialize(panel) {
5014
- this.panelUpdatesDisposable.value = this._onUpdateParameters.event((parameters) => {
5035
+ this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {
5036
+ this._parameters = parameters;
5015
5037
  panel.update({
5016
5038
  params: parameters,
5017
5039
  });
5018
5040
  });
5019
5041
  }
5020
- setHidden(isHidden) {
5021
- this._onDidHiddenChange.fire({ isHidden });
5042
+ setVisible(isVisible) {
5043
+ this._onWillVisibilityChange.fire({ isVisible });
5022
5044
  }
5023
5045
  setActive() {
5024
5046
  this._onActiveChange.fire();
5025
5047
  }
5026
5048
  updateParameters(parameters) {
5027
- this._onUpdateParameters.fire(parameters);
5049
+ this._onDidParametersChange.fire(parameters);
5028
5050
  }
5029
5051
  }
5030
5052
 
5031
5053
  class SplitviewPanelApiImpl extends PanelApiImpl {
5032
5054
  //
5033
- constructor(id) {
5034
- super(id);
5055
+ constructor(id, component) {
5056
+ super(id, component);
5035
5057
  this._onDidConstraintsChangeInternal = new Emitter();
5036
5058
  this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
5037
5059
  //
@@ -5056,8 +5078,8 @@ define(['exports'], (function (exports) { 'use strict';
5056
5078
  set pane(pane) {
5057
5079
  this._pane = pane;
5058
5080
  }
5059
- constructor(id) {
5060
- super(id);
5081
+ constructor(id, component) {
5082
+ super(id, component);
5061
5083
  this._onDidExpansionChange = new Emitter({
5062
5084
  replay: true,
5063
5085
  });
@@ -5216,7 +5238,7 @@ define(['exports'], (function (exports) { 'use strict';
5216
5238
  this.header.style.display = value ? '' : 'none';
5217
5239
  }
5218
5240
  constructor(id, component, headerComponent, orientation, isExpanded, isHeaderVisible) {
5219
- super(id, component, new PaneviewPanelApiImpl(id));
5241
+ super(id, component, new PaneviewPanelApiImpl(id, component));
5220
5242
  this.headerComponent = headerComponent;
5221
5243
  this._onDidChangeExpansionState = new Emitter({ replay: true });
5222
5244
  this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;
@@ -5236,7 +5258,11 @@ define(['exports'], (function (exports) { 'use strict';
5236
5258
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
5237
5259
  this._orientation = orientation;
5238
5260
  this.element.classList.add('pane');
5239
- this.addDisposables(this.api.onDidSizeChange((event) => {
5261
+ this.addDisposables(this.api.onWillVisibilityChange((event) => {
5262
+ const { isVisible } = event;
5263
+ const { accessor } = this._params;
5264
+ accessor.setVisible(this, isVisible);
5265
+ }), this.api.onDidSizeChange((event) => {
5240
5266
  this._onDidChange.fire({ size: event.size });
5241
5267
  }), addDisposableListener(this.element, 'mouseenter', (ev) => {
5242
5268
  this.api._onMouseEnter.fire(ev);
@@ -5443,8 +5469,8 @@ define(['exports'], (function (exports) { 'use strict';
5443
5469
  }
5444
5470
 
5445
5471
  class GridviewPanelApiImpl extends PanelApiImpl {
5446
- constructor(id, panel) {
5447
- super(id);
5472
+ constructor(id, component, panel) {
5473
+ super(id, component);
5448
5474
  this._onDidConstraintsChangeInternal = new Emitter();
5449
5475
  this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;
5450
5476
  this._onDidConstraintsChange = new Emitter();
@@ -5515,7 +5541,7 @@ define(['exports'], (function (exports) { 'use strict';
5515
5541
  return this.api.isActive;
5516
5542
  }
5517
5543
  constructor(id, component, options, api) {
5518
- super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id));
5544
+ super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));
5519
5545
  this._evaluatedMinimumWidth = 0;
5520
5546
  this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;
5521
5547
  this._evaluatedMinimumHeight = 0;
@@ -5540,10 +5566,10 @@ define(['exports'], (function (exports) { 'use strict';
5540
5566
  this._maximumHeight = options.maximumHeight;
5541
5567
  }
5542
5568
  this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement
5543
- this.addDisposables(this.api.onDidHiddenChange((event) => {
5544
- const { isHidden } = event;
5569
+ this.addDisposables(this.api.onWillVisibilityChange((event) => {
5570
+ const { isVisible } = event;
5545
5571
  const { accessor } = this._params;
5546
- accessor.setVisible(this, !isHidden);
5572
+ accessor.setVisible(this, isVisible);
5547
5573
  }), this.api.onActiveChange(() => {
5548
5574
  const { accessor } = this._params;
5549
5575
  accessor.doSetGroupActive(this);
@@ -5623,7 +5649,7 @@ define(['exports'], (function (exports) { 'use strict';
5623
5649
  return this._group.model.location;
5624
5650
  }
5625
5651
  constructor(id, accessor) {
5626
- super(id);
5652
+ super(id, '__dockviewgroup__');
5627
5653
  this.accessor = accessor;
5628
5654
  this._onDidLocationChange = new Emitter();
5629
5655
  this.onDidLocationChange = this._onDidLocationChange.event;
@@ -5784,32 +5810,11 @@ define(['exports'], (function (exports) { 'use strict';
5784
5810
  return this.panel.renderer;
5785
5811
  }
5786
5812
  set group(value) {
5787
- const isOldGroupActive = this.isGroupActive;
5813
+ const oldGroup = this._group;
5788
5814
  if (this._group !== value) {
5789
5815
  this._group = value;
5790
5816
  this._onDidGroupChange.fire({});
5791
- let _trackGroupActive = isOldGroupActive; // prevent duplicate events with same state
5792
- this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidLocationChange((event) => {
5793
- if (this.group !== this.panel.group) {
5794
- return;
5795
- }
5796
- this._onDidLocationChange.fire(event);
5797
- }), this.group.api.onDidActiveChange(() => {
5798
- if (this.group !== this.panel.group) {
5799
- return;
5800
- }
5801
- if (_trackGroupActive !== this.isGroupActive) {
5802
- _trackGroupActive = this.isGroupActive;
5803
- this._onDidActiveGroupChange.fire({
5804
- isActive: this.isGroupActive,
5805
- });
5806
- }
5807
- }));
5808
- // if (this.isGroupActive !== isOldGroupActive) {
5809
- // this._onDidActiveGroupChange.fire({
5810
- // isActive: this.isGroupActive,
5811
- // });
5812
- // }
5817
+ this.setupGroupEventListeners(oldGroup);
5813
5818
  this._onDidLocationChange.fire({
5814
5819
  location: this.group.api.location,
5815
5820
  });
@@ -5818,8 +5823,11 @@ define(['exports'], (function (exports) { 'use strict';
5818
5823
  get group() {
5819
5824
  return this._group;
5820
5825
  }
5821
- constructor(panel, group, accessor) {
5822
- super(panel.id);
5826
+ get tabComponent() {
5827
+ return this._tabComponent;
5828
+ }
5829
+ constructor(panel, group, accessor, component, tabComponent) {
5830
+ super(panel.id, component);
5823
5831
  this.panel = panel;
5824
5832
  this.accessor = accessor;
5825
5833
  this._onDidTitleChange = new Emitter();
@@ -5833,8 +5841,10 @@ define(['exports'], (function (exports) { 'use strict';
5833
5841
  this._onDidLocationChange = new Emitter();
5834
5842
  this.onDidLocationChange = this._onDidLocationChange.event;
5835
5843
  this.groupEventsDisposable = new MutableDisposable();
5844
+ this._tabComponent = tabComponent;
5836
5845
  this.initialize(panel);
5837
5846
  this._group = group;
5847
+ this.setupGroupEventListeners();
5838
5848
  this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);
5839
5849
  }
5840
5850
  getWindow() {
@@ -5869,6 +5879,35 @@ define(['exports'], (function (exports) { 'use strict';
5869
5879
  exitMaximized() {
5870
5880
  this.group.api.exitMaximized();
5871
5881
  }
5882
+ setupGroupEventListeners(previousGroup) {
5883
+ var _a;
5884
+ let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state
5885
+ this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {
5886
+ if (!event.isVisible && this.isVisible) {
5887
+ this._onDidVisibilityChange.fire(event);
5888
+ }
5889
+ else if (event.isVisible &&
5890
+ !this.isVisible &&
5891
+ this.group.model.isPanelActive(this.panel)) {
5892
+ this._onDidVisibilityChange.fire(event);
5893
+ }
5894
+ }), this.group.api.onDidLocationChange((event) => {
5895
+ if (this.group !== this.panel.group) {
5896
+ return;
5897
+ }
5898
+ this._onDidLocationChange.fire(event);
5899
+ }), this.group.api.onDidActiveChange(() => {
5900
+ if (this.group !== this.panel.group) {
5901
+ return;
5902
+ }
5903
+ if (_trackGroupActive !== this.isGroupActive) {
5904
+ _trackGroupActive = this.isGroupActive;
5905
+ this._onDidActiveGroupChange.fire({
5906
+ isActive: this.isGroupActive,
5907
+ });
5908
+ }
5909
+ }));
5910
+ }
5872
5911
  }
5873
5912
 
5874
5913
  class DockviewPanel extends CompositeDisposable {
@@ -5885,7 +5924,7 @@ define(['exports'], (function (exports) { 'use strict';
5885
5924
  var _a;
5886
5925
  return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;
5887
5926
  }
5888
- constructor(id, accessor, containerApi, group, view, options) {
5927
+ constructor(id, component, tabComponent, accessor, containerApi, group, view, options) {
5889
5928
  super();
5890
5929
  this.id = id;
5891
5930
  this.accessor = accessor;
@@ -5893,7 +5932,7 @@ define(['exports'], (function (exports) { 'use strict';
5893
5932
  this.view = view;
5894
5933
  this._renderer = options.renderer;
5895
5934
  this._group = group;
5896
- this.api = new DockviewPanelApiImpl(this, this._group, accessor);
5935
+ this.api = new DockviewPanelApiImpl(this, this._group, accessor, component, tabComponent);
5897
5936
  this.addDisposables(this.api.onActiveChange(() => {
5898
5937
  accessor.setActivePanel(this);
5899
5938
  }), this.api.onDidSizeChange((event) => {
@@ -6188,7 +6227,7 @@ define(['exports'], (function (exports) { 'use strict';
6188
6227
  ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id
6189
6228
  : panelData.tabComponent;
6190
6229
  const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);
6191
- const panel = new DockviewPanel(panelId, this.accessor, new DockviewApi(this.accessor), group, view, {
6230
+ const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {
6192
6231
  renderer: panelData.renderer,
6193
6232
  });
6194
6233
  panel.init({
@@ -7049,7 +7088,15 @@ define(['exports'], (function (exports) { 'use strict';
7049
7088
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
7050
7089
  overlayModel: (_b = this.options.rootOverlayModel) !== null && _b !== void 0 ? _b : DEFAULT_ROOT_OVERLAY_MODEL,
7051
7090
  });
7052
- this.addDisposables(this._rootDropTarget.onDrop((event) => {
7091
+ this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
7092
+ if (this.gridview.length > 0 && event.position === 'center') {
7093
+ // option only available when no panels in primary grid
7094
+ return;
7095
+ }
7096
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
7097
+ kind: 'edge',
7098
+ }));
7099
+ }), this._rootDropTarget.onDrop((event) => {
7053
7100
  var _a;
7054
7101
  const willDropEvent = new DockviewWillDropEvent({
7055
7102
  nativeEvent: event.nativeEvent,
@@ -7058,7 +7105,7 @@ define(['exports'], (function (exports) { 'use strict';
7058
7105
  api: this._api,
7059
7106
  group: undefined,
7060
7107
  getData: getPanelData,
7061
- kind: 'content',
7108
+ kind: 'edge',
7062
7109
  });
7063
7110
  this._onWillDrop.fire(willDropEvent);
7064
7111
  if (willDropEvent.defaultPrevented) {
@@ -7114,7 +7161,7 @@ define(['exports'], (function (exports) { 'use strict';
7114
7161
  const box = getBox();
7115
7162
  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;
7116
7163
  if (itemToPopout.api.location.type === 'grid') {
7117
- itemToPopout.api.setHidden(true);
7164
+ itemToPopout.api.setVisible(false);
7118
7165
  }
7119
7166
  const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7120
7167
  theme !== null && theme !== void 0 ? theme : '', {
@@ -7165,7 +7212,7 @@ define(['exports'], (function (exports) { 'use strict';
7165
7212
  }));
7166
7213
  switch (referenceLocation) {
7167
7214
  case 'grid':
7168
- referenceGroup.api.setHidden(true);
7215
+ referenceGroup.api.setVisible(false);
7169
7216
  break;
7170
7217
  case 'floating':
7171
7218
  case 'popout':
@@ -7219,8 +7266,8 @@ define(['exports'], (function (exports) { 'use strict';
7219
7266
  from: group,
7220
7267
  to: referenceGroup,
7221
7268
  }));
7222
- if (referenceGroup.api.isHidden) {
7223
- referenceGroup.api.setHidden(false);
7269
+ if (!referenceGroup.api.isVisible) {
7270
+ referenceGroup.api.setVisible(true);
7224
7271
  }
7225
7272
  if (this.getPanel(group.id)) {
7226
7273
  this.doRemoveGroup(group, {
@@ -7793,7 +7840,7 @@ define(['exports'], (function (exports) { 'use strict';
7793
7840
  }
7794
7841
  updateWatermark() {
7795
7842
  var _a, _b;
7796
- if (this.groups.filter((x) => x.api.location.type === 'grid' && !x.api.isHidden).length === 0) {
7843
+ if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
7797
7844
  if (!this.watermark) {
7798
7845
  this.watermark = this.createWatermarkComponent();
7799
7846
  this.watermark.init({
@@ -8190,6 +8237,8 @@ define(['exports'], (function (exports) { 'use strict';
8190
8237
  if (this._onDidActivePanelChange.value !== event.panel) {
8191
8238
  this._onDidActivePanelChange.fire(event.panel);
8192
8239
  }
8240
+ }), exports.DockviewEvent.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {
8241
+ this._bufferOnDidLayoutChange.fire();
8193
8242
  }));
8194
8243
  this._groups.set(view.id, { value: view, disposable });
8195
8244
  }
@@ -8202,7 +8251,7 @@ define(['exports'], (function (exports) { 'use strict';
8202
8251
  const contentComponent = options.component;
8203
8252
  const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
8204
8253
  const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);
8205
- const panel = new DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
8254
+ const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, { renderer: options.renderer });
8206
8255
  panel.init({
8207
8256
  title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
8208
8257
  params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
@@ -8576,19 +8625,19 @@ define(['exports'], (function (exports) { 'use strict';
8576
8625
  const index = this.panels.indexOf(panel);
8577
8626
  this.splitview.setViewVisible(index, visible);
8578
8627
  }
8579
- setActive(view, skipFocus) {
8580
- this._activePanel = view;
8628
+ setActive(panel, skipFocus) {
8629
+ this._activePanel = panel;
8581
8630
  this.panels
8582
- .filter((v) => v !== view)
8631
+ .filter((v) => v !== panel)
8583
8632
  .forEach((v) => {
8584
8633
  v.api._onDidActiveChange.fire({ isActive: false });
8585
8634
  if (!skipFocus) {
8586
8635
  v.focus();
8587
8636
  }
8588
8637
  });
8589
- view.api._onDidActiveChange.fire({ isActive: true });
8638
+ panel.api._onDidActiveChange.fire({ isActive: true });
8590
8639
  if (!skipFocus) {
8591
- view.focus();
8640
+ panel.focus();
8592
8641
  }
8593
8642
  }
8594
8643
  removePanel(panel, sizing) {
@@ -8887,6 +8936,10 @@ define(['exports'], (function (exports) { 'use strict';
8887
8936
  });
8888
8937
  this.addDisposables(this._disposable);
8889
8938
  }
8939
+ setVisible(panel, visible) {
8940
+ const index = this.panels.indexOf(panel);
8941
+ this.paneview.setViewVisible(index, visible);
8942
+ }
8890
8943
  focus() {
8891
8944
  //noop
8892
8945
  }
@@ -8933,6 +8986,7 @@ define(['exports'], (function (exports) { 'use strict';
8933
8986
  isExpanded: options.isExpanded,
8934
8987
  title: options.title,
8935
8988
  containerApi: new PaneviewApi(this),
8989
+ accessor: this,
8936
8990
  });
8937
8991
  this.paneview.addPane(view, size, index);
8938
8992
  view.orientation = this.paneview.orientation;
@@ -9032,6 +9086,7 @@ define(['exports'], (function (exports) { 'use strict';
9032
9086
  title: data.title,
9033
9087
  isExpanded: !!view.expanded,
9034
9088
  containerApi: new PaneviewApi(this),
9089
+ accessor: this,
9035
9090
  });
9036
9091
  panel.orientation = this.paneview.orientation;
9037
9092
  });
@@ -9111,7 +9166,7 @@ define(['exports'], (function (exports) { 'use strict';
9111
9166
  return this._snap;
9112
9167
  }
9113
9168
  constructor(id, componentName) {
9114
- super(id, componentName, new SplitviewPanelApiImpl(id));
9169
+ super(id, componentName, new SplitviewPanelApiImpl(id, componentName));
9115
9170
  this._evaluatedMinimumSize = 0;
9116
9171
  this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;
9117
9172
  this._minimumSize = 0;
@@ -9120,10 +9175,10 @@ define(['exports'], (function (exports) { 'use strict';
9120
9175
  this._onDidChange = new Emitter();
9121
9176
  this.onDidChange = this._onDidChange.event;
9122
9177
  this.api.initialize(this);
9123
- this.addDisposables(this._onDidChange, this.api.onDidHiddenChange((event) => {
9124
- const { isHidden } = event;
9178
+ this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {
9179
+ const { isVisible } = event;
9125
9180
  const { accessor } = this._params;
9126
- accessor.setVisible(this, !isHidden);
9181
+ accessor.setVisible(this, isVisible);
9127
9182
  }), this.api.onActiveChange(() => {
9128
9183
  const { accessor } = this._params;
9129
9184
  accessor.setActive(this);