dockview 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/cjs/api/component.api.d.ts +2 -3
  2. package/dist/cjs/api/component.api.js +1 -1
  3. package/dist/cjs/api/component.api.js.map +1 -1
  4. package/dist/cjs/dnd/abstractDragHandler.js +1 -1
  5. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  6. package/dist/cjs/dnd/droptarget.js +3 -3
  7. package/dist/cjs/dnd/droptarget.js.map +1 -1
  8. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -1
  9. package/dist/cjs/dockview/components/tab/defaultTab.js +1 -1
  10. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  11. package/dist/cjs/dockview/components/watermark/watermark.d.ts +3 -3
  12. package/dist/cjs/dockview/components/watermark/watermark.js +4 -4
  13. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  14. package/dist/cjs/dockview/dockviewComponent.d.ts +3 -2
  15. package/dist/cjs/dockview/dockviewComponent.js +16 -4
  16. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  17. package/dist/cjs/gridview/baseComponentGridview.js +26 -0
  18. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  19. package/dist/cjs/gridview/basePanelView.js +2 -0
  20. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  21. package/dist/cjs/gridview/branchNode.js +1 -1
  22. package/dist/cjs/gridview/branchNode.js.map +1 -1
  23. package/dist/cjs/gridview/gridview.js +1 -1
  24. package/dist/cjs/gridview/gridview.js.map +1 -1
  25. package/dist/cjs/gridview/gridviewComponent.d.ts +1 -6
  26. package/dist/cjs/gridview/gridviewComponent.js +28 -8
  27. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  28. package/dist/cjs/groupview/groupview.d.ts +3 -2
  29. package/dist/cjs/groupview/groupview.js +15 -6
  30. package/dist/cjs/groupview/groupview.js.map +1 -1
  31. package/dist/cjs/groupview/panel/content.d.ts +1 -1
  32. package/dist/cjs/groupview/panel/content.js +1 -1
  33. package/dist/cjs/groupview/panel/content.js.map +1 -1
  34. package/dist/cjs/hostedContainer.js +2 -2
  35. package/dist/cjs/hostedContainer.js.map +1 -1
  36. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +1 -1
  37. package/dist/cjs/paneview/defaultPaneviewHeader.js +1 -1
  38. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  39. package/dist/cjs/paneview/draggablePaneviewPanel.js +1 -1
  40. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  41. package/dist/cjs/paneview/paneview.d.ts +3 -1
  42. package/dist/cjs/paneview/paneview.js +9 -4
  43. package/dist/cjs/paneview/paneview.js.map +1 -1
  44. package/dist/cjs/paneview/paneviewComponent.d.ts +6 -3
  45. package/dist/cjs/paneview/paneviewComponent.js +60 -8
  46. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  47. package/dist/cjs/react/dockview/dockview.js +18 -9
  48. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  49. package/dist/cjs/react/dockview/reactContentPart.d.ts +2 -2
  50. package/dist/cjs/react/dockview/reactContentPart.js +2 -13
  51. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  52. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -2
  53. package/dist/cjs/react/dockview/reactHeaderPart.js +2 -2
  54. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  55. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +2 -2
  56. package/dist/cjs/react/dockview/reactWatermarkPart.js +2 -2
  57. package/dist/cjs/react/dockview/reactWatermarkPart.js.map +1 -1
  58. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +2 -2
  59. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +2 -2
  60. package/dist/cjs/react/dockview/v2/reactContentRenderer.js.map +1 -1
  61. package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  62. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +2 -2
  63. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js.map +1 -1
  64. package/dist/cjs/react/gridview/view.d.ts +3 -2
  65. package/dist/cjs/react/gridview/view.js.map +1 -1
  66. package/dist/cjs/react/paneview/paneview.js +1 -1
  67. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  68. package/dist/cjs/splitview/splitviewComponent.js +48 -5
  69. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  70. package/dist/dockview.amd.js +126 -74
  71. package/dist/dockview.amd.min.js +2 -2
  72. package/dist/dockview.amd.min.noStyle.js +2 -2
  73. package/dist/dockview.amd.noStyle.js +126 -74
  74. package/dist/dockview.cjs.js +126 -74
  75. package/dist/dockview.esm.js +126 -74
  76. package/dist/dockview.esm.min.js +2 -2
  77. package/dist/dockview.js +126 -74
  78. package/dist/dockview.min.js +2 -2
  79. package/dist/dockview.min.noStyle.js +2 -2
  80. package/dist/dockview.noStyle.js +126 -74
  81. package/dist/esm/api/component.api.d.ts +2 -3
  82. package/dist/esm/api/component.api.js +1 -1
  83. package/dist/esm/dnd/abstractDragHandler.js +1 -1
  84. package/dist/esm/dnd/droptarget.js +3 -3
  85. package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -1
  86. package/dist/esm/dockview/components/tab/defaultTab.js +1 -1
  87. package/dist/esm/dockview/components/watermark/watermark.d.ts +3 -3
  88. package/dist/esm/dockview/components/watermark/watermark.js +4 -4
  89. package/dist/esm/dockview/dockviewComponent.d.ts +3 -2
  90. package/dist/esm/dockview/dockviewComponent.js +16 -4
  91. package/dist/esm/gridview/baseComponentGridview.js +4 -0
  92. package/dist/esm/gridview/basePanelView.js +2 -0
  93. package/dist/esm/gridview/branchNode.js +1 -1
  94. package/dist/esm/gridview/gridview.js +1 -1
  95. package/dist/esm/gridview/gridviewComponent.d.ts +1 -6
  96. package/dist/esm/gridview/gridviewComponent.js +6 -8
  97. package/dist/esm/groupview/groupview.d.ts +3 -2
  98. package/dist/esm/groupview/groupview.js +8 -3
  99. package/dist/esm/groupview/panel/content.d.ts +1 -1
  100. package/dist/esm/groupview/panel/content.js +1 -1
  101. package/dist/esm/hostedContainer.js +2 -2
  102. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
  103. package/dist/esm/paneview/defaultPaneviewHeader.js +1 -1
  104. package/dist/esm/paneview/draggablePaneviewPanel.js +1 -1
  105. package/dist/esm/paneview/paneview.d.ts +3 -1
  106. package/dist/esm/paneview/paneview.js +8 -4
  107. package/dist/esm/paneview/paneviewComponent.d.ts +6 -3
  108. package/dist/esm/paneview/paneviewComponent.js +26 -7
  109. package/dist/esm/react/dockview/dockview.js +18 -9
  110. package/dist/esm/react/dockview/reactContentPart.d.ts +2 -2
  111. package/dist/esm/react/dockview/reactContentPart.js +2 -13
  112. package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -2
  113. package/dist/esm/react/dockview/reactHeaderPart.js +2 -2
  114. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +2 -2
  115. package/dist/esm/react/dockview/reactWatermarkPart.js +2 -2
  116. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +2 -2
  117. package/dist/esm/react/dockview/v2/reactContentRenderer.js +2 -2
  118. package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +2 -2
  119. package/dist/esm/react/dockview/v2/webviewContentRenderer.js +2 -2
  120. package/dist/esm/react/gridview/view.d.ts +3 -2
  121. package/dist/esm/react/paneview/paneview.js +1 -1
  122. package/dist/esm/splitview/splitviewComponent.js +15 -5
  123. package/package.json +4 -4
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview
3
- * @version 1.2.0
3
+ * @version 1.3.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -347,7 +347,7 @@ class PaneviewApi {
347
347
  this.component.layout(width, height);
348
348
  }
349
349
  addPanel(options) {
350
- return this.component.addPanel(options);
350
+ this.component.addPanel(options);
351
351
  }
352
352
  resizeToFit() {
353
353
  this.component.resizeToFit();
@@ -1567,7 +1567,7 @@ class Paneview extends CompositeDisposable {
1567
1567
  });
1568
1568
  // if we've added views from the descriptor we need to
1569
1569
  // add the panes to our Pane array and setup animation
1570
- this.getPanes().forEach((pane, index) => {
1570
+ this.getPanes().forEach((pane) => {
1571
1571
  const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {
1572
1572
  this.setupAnimation();
1573
1573
  this._onDidChange.fire(undefined);
@@ -1635,17 +1635,20 @@ class Paneview extends CompositeDisposable {
1635
1635
  getPanes() {
1636
1636
  return this.splitview.getViews();
1637
1637
  }
1638
- removePane(index) {
1638
+ removePane(index, options = { skipDispose: false }) {
1639
1639
  const paneItem = this.paneItems.splice(index, 1)[0];
1640
1640
  this.splitview.removeView(index);
1641
- paneItem.disposable.dispose();
1641
+ if (!options.skipDispose) {
1642
+ paneItem.disposable.dispose();
1643
+ paneItem.pane.dispose();
1644
+ }
1642
1645
  return paneItem;
1643
1646
  }
1644
1647
  moveView(from, to) {
1645
1648
  if (from === to) {
1646
1649
  return;
1647
1650
  }
1648
- const view = this.removePane(from);
1651
+ const view = this.removePane(from, { skipDispose: true });
1649
1652
  this.skipAnimation = true;
1650
1653
  try {
1651
1654
  this.addPane(view.pane, view.pane.size, to, false);
@@ -1679,6 +1682,7 @@ class Paneview extends CompositeDisposable {
1679
1682
  }
1680
1683
  this.paneItems.forEach((paneItem) => {
1681
1684
  paneItem.disposable.dispose();
1685
+ paneItem.pane.dispose();
1682
1686
  });
1683
1687
  this.paneItems = [];
1684
1688
  this.splitview.dispose();
@@ -1745,7 +1749,7 @@ class Droptarget extends CompositeDisposable {
1745
1749
  this._onDrop = new Emitter();
1746
1750
  this.onDrop = this._onDrop.event;
1747
1751
  this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {
1748
- onDragEnter: (e) => undefined,
1752
+ onDragEnter: () => undefined,
1749
1753
  onDragOver: (e) => {
1750
1754
  if (isBooleanValue(this.options.canDisplayOverlay)) {
1751
1755
  if (!this.options.canDisplayOverlay) {
@@ -1786,10 +1790,10 @@ class Droptarget extends CompositeDisposable {
1786
1790
  this.toggleClasses(quadrant, isSmallX, isSmallY);
1787
1791
  this.setState(quadrant);
1788
1792
  },
1789
- onDragLeave: (e) => {
1793
+ onDragLeave: () => {
1790
1794
  this.removeDropTarget();
1791
1795
  },
1792
- onDragEnd: (e) => {
1796
+ onDragEnd: () => {
1793
1797
  this.removeDropTarget();
1794
1798
  },
1795
1799
  onDrop: (e) => {
@@ -2186,7 +2190,7 @@ class BranchNode extends CompositeDisposable {
2186
2190
  }
2187
2191
  setupChildrenEvents() {
2188
2192
  this._childrenDisposable.dispose();
2189
- this._childrenDisposable = exports.Event.any(...this.children.map((c) => c.onDidChange))((e) => {
2193
+ this._childrenDisposable = exports.Event.any(...this.children.map((c) => c.onDidChange))(() => {
2190
2194
  /**
2191
2195
  * indicate a change has occured to allows any re-rendering but don't bubble
2192
2196
  * event because that was specific to this branch
@@ -2549,7 +2553,7 @@ class Gridview {
2549
2553
  const [parentIndex, ...__] = [...rest].reverse();
2550
2554
  const isSiblingVisible = parent.isChildVisible(0);
2551
2555
  parent.removeChild(0, sizing);
2552
- const sizes = grandParent.children.map((size, i) => grandParent.getChildSize(i));
2556
+ const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
2553
2557
  grandParent.removeChild(parentIndex, sizing);
2554
2558
  if (sibling instanceof BranchNode) {
2555
2559
  sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
@@ -2648,7 +2652,7 @@ class ContentContainer extends CompositeDisposable {
2648
2652
  }
2649
2653
  this.disposable.value = disposable;
2650
2654
  }
2651
- layout(width, height) {
2655
+ layout(_width, _height) {
2652
2656
  // noop
2653
2657
  }
2654
2658
  closePanel() {
@@ -2696,7 +2700,7 @@ class DragHandler extends CompositeDisposable {
2696
2700
  if (event.dataTransfer) {
2697
2701
  event.dataTransfer.effectAllowed = 'move';
2698
2702
  }
2699
- }), addDisposableListener(this.el, 'dragend', (ev) => {
2703
+ }), addDisposableListener(this.el, 'dragend', () => {
2700
2704
  for (const iframe of this.iframes) {
2701
2705
  iframe.style.pointerEvents = 'auto';
2702
2706
  }
@@ -3063,6 +3067,9 @@ class Groupview extends CompositeDisposable {
3063
3067
  get maximumWidth() {
3064
3068
  return Number.MAX_SAFE_INTEGER;
3065
3069
  }
3070
+ get hasWatermark() {
3071
+ return !!(this.watermark && this.container.contains(this.watermark.element));
3072
+ }
3066
3073
  initialize() {
3067
3074
  var _a, _b;
3068
3075
  if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
@@ -3141,10 +3148,10 @@ class Groupview extends CompositeDisposable {
3141
3148
  containsPanel(panel) {
3142
3149
  return this.panels.includes(panel);
3143
3150
  }
3144
- init(params) {
3151
+ init(_params) {
3145
3152
  //noop
3146
3153
  }
3147
- update(params) {
3154
+ update(_params) {
3148
3155
  //noop
3149
3156
  }
3150
3157
  focus() {
@@ -3367,10 +3374,12 @@ class Groupview extends CompositeDisposable {
3367
3374
  }
3368
3375
  }
3369
3376
  dispose() {
3377
+ var _a;
3378
+ super.dispose();
3379
+ (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
3370
3380
  for (const panel of this.panels) {
3371
3381
  panel.dispose();
3372
3382
  }
3373
- super.dispose();
3374
3383
  this.dropTarget.dispose();
3375
3384
  this.tabsContainer.dispose();
3376
3385
  this.contentContainer.dispose();
@@ -3473,6 +3482,7 @@ class BaseGrid extends CompositeDisposable {
3473
3482
  const view = this.gridview.remove(group, exports.Sizing.Distribute);
3474
3483
  if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
3475
3484
  item.disposable.dispose();
3485
+ item.value.dispose();
3476
3486
  this._groups.delete(group.id);
3477
3487
  }
3478
3488
  this._onDidRemoveGroup.fire(group);
@@ -3563,6 +3573,9 @@ class BaseGrid extends CompositeDisposable {
3563
3573
  this._onDidAddGroup.dispose();
3564
3574
  this._onDidRemoveGroup.dispose();
3565
3575
  this._onDidLayoutChange.dispose();
3576
+ for (const group of this.groups) {
3577
+ group.dispose();
3578
+ }
3566
3579
  this.gridview.dispose();
3567
3580
  }
3568
3581
  }
@@ -3892,7 +3905,7 @@ class Watermark extends CompositeDisposable {
3892
3905
  get id() {
3893
3906
  return 'watermark';
3894
3907
  }
3895
- update(event) {
3908
+ update(_event) {
3896
3909
  // noop
3897
3910
  }
3898
3911
  focus() {
@@ -3901,17 +3914,17 @@ class Watermark extends CompositeDisposable {
3901
3914
  toJSON() {
3902
3915
  return {};
3903
3916
  }
3904
- layout(width, height) {
3917
+ layout(_width, _height) {
3905
3918
  // noop
3906
3919
  }
3907
3920
  init(params) {
3908
3921
  this.params = params;
3909
- this.addDisposables(this.params.containerApi.onDidLayoutChange((event) => {
3922
+ this.addDisposables(this.params.containerApi.onDidLayoutChange(() => {
3910
3923
  this.render();
3911
3924
  }));
3912
3925
  this.render();
3913
3926
  }
3914
- updateParentGroup(group, visible) {
3927
+ updateParentGroup(group, _visible) {
3915
3928
  this.group = group;
3916
3929
  this.render();
3917
3930
  }
@@ -4086,7 +4099,7 @@ class DefaultTab extends CompositeDisposable {
4086
4099
  this._isGroupActive = group.isActive;
4087
4100
  this.render();
4088
4101
  }
4089
- layout(width, height) {
4102
+ layout(_width, _height) {
4090
4103
  // noop
4091
4104
  }
4092
4105
  render() {
@@ -4160,8 +4173,10 @@ class BasePanelView extends CompositeDisposable {
4160
4173
  };
4161
4174
  }
4162
4175
  dispose() {
4176
+ var _a;
4163
4177
  super.dispose();
4164
4178
  this.api.dispose();
4179
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
4165
4180
  }
4166
4181
  }
4167
4182
 
@@ -4606,7 +4621,10 @@ class DockviewComponent extends BaseGrid {
4606
4621
  }
4607
4622
  addPanel(options) {
4608
4623
  var _a, _b;
4609
- const panel = this._addPanel(options);
4624
+ if (this.panels.find((_) => _.id === options.id)) {
4625
+ throw new Error(`panel with id ${options.id} already exists`);
4626
+ }
4627
+ const panel = this.createPanel(options);
4610
4628
  let referenceGroup;
4611
4629
  if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
4612
4630
  const referencePanel = this.getGroupPanel(options.position.referencePanel);
@@ -4634,13 +4652,20 @@ class DockviewComponent extends BaseGrid {
4634
4652
  }
4635
4653
  return panel;
4636
4654
  }
4637
- removePanel(panel, options = { removeEmptyGroup: true }) {
4655
+ removePanel(panel, options = {
4656
+ removeEmptyGroup: true,
4657
+ skipDispose: false,
4658
+ }) {
4638
4659
  const group = panel.group;
4639
4660
  if (!group) {
4640
4661
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
4641
4662
  }
4642
4663
  group.model.removePanel(panel);
4643
- if (group.model.size === 0 && options.removeEmptyGroup) {
4664
+ panel.dispose();
4665
+ const retainGroupForWatermark = this.size === 1;
4666
+ if (!retainGroupForWatermark &&
4667
+ group.model.size === 0 &&
4668
+ options.removeEmptyGroup) {
4644
4669
  this.removeGroup(group);
4645
4670
  }
4646
4671
  }
@@ -4677,6 +4702,7 @@ class DockviewComponent extends BaseGrid {
4677
4702
  for (const panel of panels) {
4678
4703
  this.removePanel(panel, {
4679
4704
  removeEmptyGroup: false,
4705
+ skipDispose: false,
4680
4706
  });
4681
4707
  }
4682
4708
  super.doRemoveGroup(group, { skipActive });
@@ -4760,6 +4786,7 @@ class DockviewComponent extends BaseGrid {
4760
4786
  }
4761
4787
  }
4762
4788
  const view = new GroupviewPanel(this, id, options);
4789
+ view.init({ params: {}, containerApi: null }); // required to initialized .part and allow for correct disposal of group
4763
4790
  if (!this._groups.has(view.id)) {
4764
4791
  const disposable = new CompositeDisposable(view.model.onMove((event) => {
4765
4792
  const { groupId, itemId, target, index } = event;
@@ -4793,7 +4820,7 @@ class DockviewComponent extends BaseGrid {
4793
4820
  }
4794
4821
  return view;
4795
4822
  }
4796
- _addPanel(options) {
4823
+ createPanel(options) {
4797
4824
  const view = new DefaultGroupPanelView({
4798
4825
  content: this.createContentComponent(options.id, options.component),
4799
4826
  tab: this.createTabComponent(options.id, options.tabComponent),
@@ -4894,7 +4921,7 @@ class GridviewComponent extends BaseGrid {
4894
4921
  this.gridview.setViewVisible(getGridLocation(panel.element), visible);
4895
4922
  }
4896
4923
  setActive(panel) {
4897
- this._groups.forEach((value, key) => {
4924
+ this._groups.forEach((value, _key) => {
4898
4925
  value.value.setActive(panel === value.value);
4899
4926
  });
4900
4927
  }
@@ -4907,8 +4934,12 @@ class GridviewComponent extends BaseGrid {
4907
4934
  }
4908
4935
  fromJSON(serializedGridview, deferComponentLayout) {
4909
4936
  const { grid, activePanel } = serializedGridview;
4937
+ const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
4938
+ for (const group of groups) {
4939
+ group.disposable.dispose();
4940
+ this.doRemoveGroup(group.value, { skipActive: true });
4941
+ }
4910
4942
  this.gridview.clear();
4911
- this._groups.clear();
4912
4943
  const queue = [];
4913
4944
  this.gridview.deserialize(grid, {
4914
4945
  fromJSON: (node) => {
@@ -5005,7 +5036,6 @@ class GridviewComponent extends BaseGrid {
5005
5036
  });
5006
5037
  this.registerPanel(view);
5007
5038
  this.doAddGroup(view, relativeLocation, options.size);
5008
- return { api: view.api };
5009
5039
  }
5010
5040
  registerPanel(panel) {
5011
5041
  const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {
@@ -5056,11 +5086,6 @@ class GridviewComponent extends BaseGrid {
5056
5086
  }
5057
5087
  removeGroup(group) {
5058
5088
  super.removeGroup(group);
5059
- const panel = this._groups.get(group.id);
5060
- if (panel) {
5061
- panel.disposable.dispose();
5062
- this._groups.delete(group.id);
5063
- }
5064
5089
  }
5065
5090
  dispose() {
5066
5091
  super.dispose();
@@ -5167,7 +5192,11 @@ class SplitviewComponent extends CompositeDisposable {
5167
5192
  }
5168
5193
  removePanel(panel, sizing) {
5169
5194
  const disposable = this.panels.get(panel.id);
5170
- disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
5195
+ if (!disposable) {
5196
+ throw new Error(`unknown splitview panel ${panel.id}`);
5197
+ }
5198
+ disposable.disposable.dispose();
5199
+ disposable.value.dispose();
5171
5200
  this.panels.delete(panel.id);
5172
5201
  const index = this.getPanels().findIndex((_) => _ === panel);
5173
5202
  this.splitview.removeView(index, sizing);
@@ -5226,7 +5255,7 @@ class SplitviewComponent extends CompositeDisposable {
5226
5255
  }
5227
5256
  this.setActive(view, true);
5228
5257
  });
5229
- this.panels.set(view.id, disposable);
5258
+ this.panels.set(view.id, { disposable, value: view });
5230
5259
  }
5231
5260
  toJSON() {
5232
5261
  var _a;
@@ -5250,6 +5279,11 @@ class SplitviewComponent extends CompositeDisposable {
5250
5279
  }
5251
5280
  fromJSON(serializedSplitview, deferComponentLayout = false) {
5252
5281
  const { views, orientation, size, activeView } = serializedSplitview;
5282
+ for (const [_, value] of this.panels.entries()) {
5283
+ value.disposable.dispose();
5284
+ value.value.dispose();
5285
+ }
5286
+ this.panels.clear();
5253
5287
  this.splitview.dispose();
5254
5288
  const queue = [];
5255
5289
  this.splitview = new Splitview(this.element, {
@@ -5305,9 +5339,10 @@ class SplitviewComponent extends CompositeDisposable {
5305
5339
  }
5306
5340
  }
5307
5341
  dispose() {
5308
- Array.from(this.panels.values()).forEach((value) => {
5309
- value.dispose();
5310
- });
5342
+ for (const [_, value] of this.panels.entries()) {
5343
+ value.disposable.dispose();
5344
+ value.value.dispose();
5345
+ }
5311
5346
  this.panels.clear();
5312
5347
  this.splitview.dispose();
5313
5348
  super.dispose();
@@ -5578,7 +5613,7 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5578
5613
  })(this.header);
5579
5614
  this.target = new Droptarget(this.element, {
5580
5615
  validOverlays: 'vertical',
5581
- canDisplayOverlay: (event) => {
5616
+ canDisplayOverlay: () => {
5582
5617
  const data = getPaneData();
5583
5618
  if (!data) {
5584
5619
  return true;
@@ -5649,7 +5684,7 @@ class DefaultHeader extends CompositeDisposable {
5649
5684
  this._expander.textContent = e.isExpanded ? '<' : '>';
5650
5685
  });
5651
5686
  }
5652
- update(params) {
5687
+ update(_params) {
5653
5688
  //
5654
5689
  }
5655
5690
  dispose() {
@@ -5675,6 +5710,7 @@ class PaneviewComponent extends CompositeDisposable {
5675
5710
  super();
5676
5711
  this.element = element;
5677
5712
  this._disposable = new MutableDisposable();
5713
+ this._viewDisposables = new Map();
5678
5714
  this._onDidLayoutChange = new Emitter();
5679
5715
  this.onDidLayoutChange = this._onDidLayoutChange.event;
5680
5716
  this._onDidDrop = new Emitter();
@@ -5759,9 +5795,7 @@ class PaneviewComponent extends CompositeDisposable {
5759
5795
  isExpanded: !!options.isExpanded,
5760
5796
  disableDnd: !!this.options.disableDnd,
5761
5797
  });
5762
- const disposable = new CompositeDisposable(view.onDidDrop((event) => {
5763
- this._onDidDrop.fire(event);
5764
- }));
5798
+ this.doAddPanel(view);
5765
5799
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
5766
5800
  const index = typeof options.index === 'number' ? options.index : undefined;
5767
5801
  view.init({
@@ -5774,7 +5808,7 @@ class PaneviewComponent extends CompositeDisposable {
5774
5808
  });
5775
5809
  this.paneview.addPane(view, size, index);
5776
5810
  view.orientation = this.paneview.orientation;
5777
- return disposable;
5811
+ return view;
5778
5812
  }
5779
5813
  getPanels() {
5780
5814
  return this.paneview.getPanes();
@@ -5783,6 +5817,7 @@ class PaneviewComponent extends CompositeDisposable {
5783
5817
  const views = this.getPanels();
5784
5818
  const index = views.findIndex((_) => _ === panel);
5785
5819
  this.paneview.removePane(index);
5820
+ this.doRemovePanel(panel);
5786
5821
  }
5787
5822
  movePanel(from, to) {
5788
5823
  this.paneview.moveView(from, to);
@@ -5832,6 +5867,10 @@ class PaneviewComponent extends CompositeDisposable {
5832
5867
  fromJSON(serializedPaneview, deferComponentLayout) {
5833
5868
  const { views, size } = serializedPaneview;
5834
5869
  const queue = [];
5870
+ for (const [_, value] of this._viewDisposables.entries()) {
5871
+ value.dispose();
5872
+ }
5873
+ this._viewDisposables.clear();
5835
5874
  this.paneview.dispose();
5836
5875
  this.paneview = new Paneview(this.element, {
5837
5876
  orientation: exports.Orientation.VERTICAL,
@@ -5867,9 +5906,7 @@ class PaneviewComponent extends CompositeDisposable {
5867
5906
  isExpanded: !!view.expanded,
5868
5907
  disableDnd: !!this.options.disableDnd,
5869
5908
  });
5870
- panel.onDidDrop((event) => {
5871
- this._onDidDrop.fire(event);
5872
- });
5909
+ this.doAddPanel(panel);
5873
5910
  queue.push(() => {
5874
5911
  panel.init({
5875
5912
  params: data.params || {},
@@ -5899,8 +5936,25 @@ class PaneviewComponent extends CompositeDisposable {
5899
5936
  queue.forEach((f) => f());
5900
5937
  }
5901
5938
  }
5939
+ doAddPanel(panel) {
5940
+ const disposable = panel.onDidDrop((event) => {
5941
+ this._onDidDrop.fire(event);
5942
+ });
5943
+ this._viewDisposables.set(panel.id, disposable);
5944
+ }
5945
+ doRemovePanel(panel) {
5946
+ const disposable = this._viewDisposables.get(panel.id);
5947
+ if (disposable) {
5948
+ disposable.dispose();
5949
+ this._viewDisposables.delete(panel.id);
5950
+ }
5951
+ }
5902
5952
  dispose() {
5903
5953
  super.dispose();
5954
+ for (const [_, value] of this._viewDisposables.entries()) {
5955
+ value.dispose();
5956
+ }
5957
+ this._viewDisposables.clear();
5904
5958
  this.paneview.dispose();
5905
5959
  }
5906
5960
  }
@@ -6129,18 +6183,12 @@ class ReactPanelContentPart {
6129
6183
  this.id = id;
6130
6184
  this.component = component;
6131
6185
  this.reactPortalStore = reactPortalStore;
6132
- // private hostedContainer: HostedContainer;
6133
6186
  this._onDidFocus = new Emitter();
6134
6187
  this.onDidFocus = this._onDidFocus.event;
6135
6188
  this._onDidBlur = new Emitter();
6136
6189
  this.onDidBlur = this._onDidBlur.event;
6137
6190
  this._element = document.createElement('div');
6138
6191
  this._element.className = 'dockview-react-part';
6139
- // this.hostedContainer = new HostedContainer({
6140
- // id,
6141
- // });
6142
- // this.hostedContainer.onDidFocus(() => this._onDidFocus.fire());
6143
- // this.hostedContainer.onDidBlur(() => this._onDidBlur.fire());
6144
6192
  this._actionsElement = document.createElement('div');
6145
6193
  this._actionsElement.className = 'dockview-react-part';
6146
6194
  }
@@ -6175,15 +6223,11 @@ class ReactPanelContentPart {
6175
6223
  var _a;
6176
6224
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6177
6225
  }
6178
- updateParentGroup(group, isPanelVisible) {
6226
+ updateParentGroup(group, _isPanelVisible) {
6179
6227
  this._group = group;
6180
6228
  }
6181
- layout(width, height) {
6229
+ layout(_width, _height) {
6182
6230
  // noop
6183
- // this.hostedContainer.layout(
6184
- // this.element
6185
- // // { width, height }
6186
- // );
6187
6231
  }
6188
6232
  close() {
6189
6233
  return Promise.resolve(true);
@@ -6193,7 +6237,6 @@ class ReactPanelContentPart {
6193
6237
  this._onDidFocus.dispose();
6194
6238
  this._onDidBlur.dispose();
6195
6239
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
6196
- // this.hostedContainer?.dispose();
6197
6240
  (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
6198
6241
  }
6199
6242
  }
@@ -6228,10 +6271,10 @@ class ReactPanelHeaderPart {
6228
6271
  id: this.id,
6229
6272
  };
6230
6273
  }
6231
- layout(width, height) {
6274
+ layout(_width, _height) {
6232
6275
  // noop - retrieval from api
6233
6276
  }
6234
- updateParentGroup(group, isPanelVisible) {
6277
+ updateParentGroup(_group, _isPanelVisible) {
6235
6278
  // noop - retrieval from api
6236
6279
  }
6237
6280
  dispose() {
@@ -6310,10 +6353,10 @@ class ReactWatermarkPart {
6310
6353
  id: this.id,
6311
6354
  };
6312
6355
  }
6313
- layout(width, height) {
6356
+ layout(_width, _height) {
6314
6357
  // noop - retrieval from api
6315
6358
  }
6316
- updateParentGroup(group, isPanelVisible) {
6359
+ updateParentGroup(group, _isPanelVisible) {
6317
6360
  // noop - retrieval from api
6318
6361
  this._groupRef.value = group;
6319
6362
  }
@@ -6347,21 +6390,21 @@ const DockviewReact = React__namespace.forwardRef((props, ref) => {
6347
6390
  var _a;
6348
6391
  const factory = {
6349
6392
  content: {
6350
- createComponent: (id, componentId, component) => {
6393
+ createComponent: (_id, componentId, component) => {
6351
6394
  return new ReactPanelContentPart(componentId, component, {
6352
6395
  addPortal,
6353
6396
  });
6354
6397
  },
6355
6398
  },
6356
6399
  tab: {
6357
- createComponent: (id, componentId, component) => {
6400
+ createComponent: (_id, componentId, component) => {
6358
6401
  return new ReactPanelHeaderPart(componentId, component, {
6359
6402
  addPortal,
6360
6403
  });
6361
6404
  },
6362
6405
  },
6363
6406
  watermark: {
6364
- createComponent: (id, componentId, component) => {
6407
+ createComponent: (_id, componentId, component) => {
6365
6408
  return new ReactWatermarkPart(componentId, component, {
6366
6409
  addPortal,
6367
6410
  });
@@ -6380,11 +6423,6 @@ const DockviewReact = React__namespace.forwardRef((props, ref) => {
6380
6423
  ? { separatorBorder: 'transparent' }
6381
6424
  : undefined,
6382
6425
  });
6383
- const disposable = dockview.onDidDrop((event) => {
6384
- if (props.onDidDrop) {
6385
- props.onDidDrop(event);
6386
- }
6387
- });
6388
6426
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
6389
6427
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
6390
6428
  const { clientWidth, clientHeight } = domRef.current;
@@ -6394,11 +6432,25 @@ const DockviewReact = React__namespace.forwardRef((props, ref) => {
6394
6432
  }
6395
6433
  dockviewRef.current = dockview;
6396
6434
  return () => {
6397
- disposable.dispose();
6398
6435
  dockview.dispose();
6399
6436
  element.remove();
6400
6437
  };
6401
6438
  }, []);
6439
+ React__namespace.useEffect(() => {
6440
+ if (!dockviewRef.current) {
6441
+ return () => {
6442
+ // noop
6443
+ };
6444
+ }
6445
+ const disposable = dockviewRef.current.onDidDrop((event) => {
6446
+ if (props.onDidDrop) {
6447
+ props.onDidDrop(event);
6448
+ }
6449
+ });
6450
+ return () => {
6451
+ disposable.dispose();
6452
+ };
6453
+ }, [props.onDidDrop]);
6402
6454
  React__namespace.useEffect(() => {
6403
6455
  if (!dockviewRef.current) {
6404
6456
  return;
@@ -6716,7 +6768,7 @@ const PaneviewReact = React__namespace.forwardRef((props, ref) => {
6716
6768
  };
6717
6769
  }, [props.disableAutoResizing]);
6718
6770
  React__namespace.useEffect(() => {
6719
- const createComponent = (id, componentId, component) => new PanePanelSection(id, component, {
6771
+ const createComponent = (id, _componentId, component) => new PanePanelSection(id, component, {
6720
6772
  addPortal,
6721
6773
  });
6722
6774
  const paneview = new PaneviewComponent(domRef.current, {