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
  */
@@ -312,7 +312,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
312
312
  this.component.layout(width, height);
313
313
  }
314
314
  addPanel(options) {
315
- return this.component.addPanel(options);
315
+ this.component.addPanel(options);
316
316
  }
317
317
  resizeToFit() {
318
318
  this.component.resizeToFit();
@@ -1532,7 +1532,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
1532
1532
  });
1533
1533
  // if we've added views from the descriptor we need to
1534
1534
  // add the panes to our Pane array and setup animation
1535
- this.getPanes().forEach((pane, index) => {
1535
+ this.getPanes().forEach((pane) => {
1536
1536
  const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {
1537
1537
  this.setupAnimation();
1538
1538
  this._onDidChange.fire(undefined);
@@ -1600,17 +1600,20 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
1600
1600
  getPanes() {
1601
1601
  return this.splitview.getViews();
1602
1602
  }
1603
- removePane(index) {
1603
+ removePane(index, options = { skipDispose: false }) {
1604
1604
  const paneItem = this.paneItems.splice(index, 1)[0];
1605
1605
  this.splitview.removeView(index);
1606
- paneItem.disposable.dispose();
1606
+ if (!options.skipDispose) {
1607
+ paneItem.disposable.dispose();
1608
+ paneItem.pane.dispose();
1609
+ }
1607
1610
  return paneItem;
1608
1611
  }
1609
1612
  moveView(from, to) {
1610
1613
  if (from === to) {
1611
1614
  return;
1612
1615
  }
1613
- const view = this.removePane(from);
1616
+ const view = this.removePane(from, { skipDispose: true });
1614
1617
  this.skipAnimation = true;
1615
1618
  try {
1616
1619
  this.addPane(view.pane, view.pane.size, to, false);
@@ -1644,6 +1647,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
1644
1647
  }
1645
1648
  this.paneItems.forEach((paneItem) => {
1646
1649
  paneItem.disposable.dispose();
1650
+ paneItem.pane.dispose();
1647
1651
  });
1648
1652
  this.paneItems = [];
1649
1653
  this.splitview.dispose();
@@ -1710,7 +1714,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
1710
1714
  this._onDrop = new Emitter();
1711
1715
  this.onDrop = this._onDrop.event;
1712
1716
  this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {
1713
- onDragEnter: (e) => undefined,
1717
+ onDragEnter: () => undefined,
1714
1718
  onDragOver: (e) => {
1715
1719
  if (isBooleanValue(this.options.canDisplayOverlay)) {
1716
1720
  if (!this.options.canDisplayOverlay) {
@@ -1751,10 +1755,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
1751
1755
  this.toggleClasses(quadrant, isSmallX, isSmallY);
1752
1756
  this.setState(quadrant);
1753
1757
  },
1754
- onDragLeave: (e) => {
1758
+ onDragLeave: () => {
1755
1759
  this.removeDropTarget();
1756
1760
  },
1757
- onDragEnd: (e) => {
1761
+ onDragEnd: () => {
1758
1762
  this.removeDropTarget();
1759
1763
  },
1760
1764
  onDrop: (e) => {
@@ -2151,7 +2155,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2151
2155
  }
2152
2156
  setupChildrenEvents() {
2153
2157
  this._childrenDisposable.dispose();
2154
- this._childrenDisposable = exports.Event.any(...this.children.map((c) => c.onDidChange))((e) => {
2158
+ this._childrenDisposable = exports.Event.any(...this.children.map((c) => c.onDidChange))(() => {
2155
2159
  /**
2156
2160
  * indicate a change has occured to allows any re-rendering but don't bubble
2157
2161
  * event because that was specific to this branch
@@ -2514,7 +2518,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2514
2518
  const [parentIndex, ...__] = [...rest].reverse();
2515
2519
  const isSiblingVisible = parent.isChildVisible(0);
2516
2520
  parent.removeChild(0, sizing);
2517
- const sizes = grandParent.children.map((size, i) => grandParent.getChildSize(i));
2521
+ const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
2518
2522
  grandParent.removeChild(parentIndex, sizing);
2519
2523
  if (sibling instanceof BranchNode) {
2520
2524
  sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
@@ -2613,7 +2617,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2613
2617
  }
2614
2618
  this.disposable.value = disposable;
2615
2619
  }
2616
- layout(width, height) {
2620
+ layout(_width, _height) {
2617
2621
  // noop
2618
2622
  }
2619
2623
  closePanel() {
@@ -2661,7 +2665,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2661
2665
  if (event.dataTransfer) {
2662
2666
  event.dataTransfer.effectAllowed = 'move';
2663
2667
  }
2664
- }), addDisposableListener(this.el, 'dragend', (ev) => {
2668
+ }), addDisposableListener(this.el, 'dragend', () => {
2665
2669
  for (const iframe of this.iframes) {
2666
2670
  iframe.style.pointerEvents = 'auto';
2667
2671
  }
@@ -3028,6 +3032,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3028
3032
  get maximumWidth() {
3029
3033
  return Number.MAX_SAFE_INTEGER;
3030
3034
  }
3035
+ get hasWatermark() {
3036
+ return !!(this.watermark && this.container.contains(this.watermark.element));
3037
+ }
3031
3038
  initialize() {
3032
3039
  var _a, _b;
3033
3040
  if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
@@ -3106,10 +3113,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3106
3113
  containsPanel(panel) {
3107
3114
  return this.panels.includes(panel);
3108
3115
  }
3109
- init(params) {
3116
+ init(_params) {
3110
3117
  //noop
3111
3118
  }
3112
- update(params) {
3119
+ update(_params) {
3113
3120
  //noop
3114
3121
  }
3115
3122
  focus() {
@@ -3332,10 +3339,12 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3332
3339
  }
3333
3340
  }
3334
3341
  dispose() {
3342
+ var _a;
3343
+ super.dispose();
3344
+ (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
3335
3345
  for (const panel of this.panels) {
3336
3346
  panel.dispose();
3337
3347
  }
3338
- super.dispose();
3339
3348
  this.dropTarget.dispose();
3340
3349
  this.tabsContainer.dispose();
3341
3350
  this.contentContainer.dispose();
@@ -3438,6 +3447,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3438
3447
  const view = this.gridview.remove(group, exports.Sizing.Distribute);
3439
3448
  if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
3440
3449
  item.disposable.dispose();
3450
+ item.value.dispose();
3441
3451
  this._groups.delete(group.id);
3442
3452
  }
3443
3453
  this._onDidRemoveGroup.fire(group);
@@ -3528,6 +3538,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3528
3538
  this._onDidAddGroup.dispose();
3529
3539
  this._onDidRemoveGroup.dispose();
3530
3540
  this._onDidLayoutChange.dispose();
3541
+ for (const group of this.groups) {
3542
+ group.dispose();
3543
+ }
3531
3544
  this.gridview.dispose();
3532
3545
  }
3533
3546
  }
@@ -3857,7 +3870,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3857
3870
  get id() {
3858
3871
  return 'watermark';
3859
3872
  }
3860
- update(event) {
3873
+ update(_event) {
3861
3874
  // noop
3862
3875
  }
3863
3876
  focus() {
@@ -3866,17 +3879,17 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3866
3879
  toJSON() {
3867
3880
  return {};
3868
3881
  }
3869
- layout(width, height) {
3882
+ layout(_width, _height) {
3870
3883
  // noop
3871
3884
  }
3872
3885
  init(params) {
3873
3886
  this.params = params;
3874
- this.addDisposables(this.params.containerApi.onDidLayoutChange((event) => {
3887
+ this.addDisposables(this.params.containerApi.onDidLayoutChange(() => {
3875
3888
  this.render();
3876
3889
  }));
3877
3890
  this.render();
3878
3891
  }
3879
- updateParentGroup(group, visible) {
3892
+ updateParentGroup(group, _visible) {
3880
3893
  this.group = group;
3881
3894
  this.render();
3882
3895
  }
@@ -4051,7 +4064,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4051
4064
  this._isGroupActive = group.isActive;
4052
4065
  this.render();
4053
4066
  }
4054
- layout(width, height) {
4067
+ layout(_width, _height) {
4055
4068
  // noop
4056
4069
  }
4057
4070
  render() {
@@ -4125,8 +4138,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4125
4138
  };
4126
4139
  }
4127
4140
  dispose() {
4141
+ var _a;
4128
4142
  super.dispose();
4129
4143
  this.api.dispose();
4144
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
4130
4145
  }
4131
4146
  }
4132
4147
 
@@ -4571,7 +4586,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4571
4586
  }
4572
4587
  addPanel(options) {
4573
4588
  var _a, _b;
4574
- const panel = this._addPanel(options);
4589
+ if (this.panels.find((_) => _.id === options.id)) {
4590
+ throw new Error(`panel with id ${options.id} already exists`);
4591
+ }
4592
+ const panel = this.createPanel(options);
4575
4593
  let referenceGroup;
4576
4594
  if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
4577
4595
  const referencePanel = this.getGroupPanel(options.position.referencePanel);
@@ -4599,13 +4617,20 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4599
4617
  }
4600
4618
  return panel;
4601
4619
  }
4602
- removePanel(panel, options = { removeEmptyGroup: true }) {
4620
+ removePanel(panel, options = {
4621
+ removeEmptyGroup: true,
4622
+ skipDispose: false,
4623
+ }) {
4603
4624
  const group = panel.group;
4604
4625
  if (!group) {
4605
4626
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
4606
4627
  }
4607
4628
  group.model.removePanel(panel);
4608
- if (group.model.size === 0 && options.removeEmptyGroup) {
4629
+ panel.dispose();
4630
+ const retainGroupForWatermark = this.size === 1;
4631
+ if (!retainGroupForWatermark &&
4632
+ group.model.size === 0 &&
4633
+ options.removeEmptyGroup) {
4609
4634
  this.removeGroup(group);
4610
4635
  }
4611
4636
  }
@@ -4642,6 +4667,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4642
4667
  for (const panel of panels) {
4643
4668
  this.removePanel(panel, {
4644
4669
  removeEmptyGroup: false,
4670
+ skipDispose: false,
4645
4671
  });
4646
4672
  }
4647
4673
  super.doRemoveGroup(group, { skipActive });
@@ -4725,6 +4751,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4725
4751
  }
4726
4752
  }
4727
4753
  const view = new GroupviewPanel(this, id, options);
4754
+ view.init({ params: {}, containerApi: null }); // required to initialized .part and allow for correct disposal of group
4728
4755
  if (!this._groups.has(view.id)) {
4729
4756
  const disposable = new CompositeDisposable(view.model.onMove((event) => {
4730
4757
  const { groupId, itemId, target, index } = event;
@@ -4758,7 +4785,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4758
4785
  }
4759
4786
  return view;
4760
4787
  }
4761
- _addPanel(options) {
4788
+ createPanel(options) {
4762
4789
  const view = new DefaultGroupPanelView({
4763
4790
  content: this.createContentComponent(options.id, options.component),
4764
4791
  tab: this.createTabComponent(options.id, options.tabComponent),
@@ -4859,7 +4886,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4859
4886
  this.gridview.setViewVisible(getGridLocation(panel.element), visible);
4860
4887
  }
4861
4888
  setActive(panel) {
4862
- this._groups.forEach((value, key) => {
4889
+ this._groups.forEach((value, _key) => {
4863
4890
  value.value.setActive(panel === value.value);
4864
4891
  });
4865
4892
  }
@@ -4872,8 +4899,12 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4872
4899
  }
4873
4900
  fromJSON(serializedGridview, deferComponentLayout) {
4874
4901
  const { grid, activePanel } = serializedGridview;
4902
+ const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
4903
+ for (const group of groups) {
4904
+ group.disposable.dispose();
4905
+ this.doRemoveGroup(group.value, { skipActive: true });
4906
+ }
4875
4907
  this.gridview.clear();
4876
- this._groups.clear();
4877
4908
  const queue = [];
4878
4909
  this.gridview.deserialize(grid, {
4879
4910
  fromJSON: (node) => {
@@ -4970,7 +5001,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4970
5001
  });
4971
5002
  this.registerPanel(view);
4972
5003
  this.doAddGroup(view, relativeLocation, options.size);
4973
- return { api: view.api };
4974
5004
  }
4975
5005
  registerPanel(panel) {
4976
5006
  const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {
@@ -5021,11 +5051,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5021
5051
  }
5022
5052
  removeGroup(group) {
5023
5053
  super.removeGroup(group);
5024
- const panel = this._groups.get(group.id);
5025
- if (panel) {
5026
- panel.disposable.dispose();
5027
- this._groups.delete(group.id);
5028
- }
5029
5054
  }
5030
5055
  dispose() {
5031
5056
  super.dispose();
@@ -5132,7 +5157,11 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5132
5157
  }
5133
5158
  removePanel(panel, sizing) {
5134
5159
  const disposable = this.panels.get(panel.id);
5135
- disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
5160
+ if (!disposable) {
5161
+ throw new Error(`unknown splitview panel ${panel.id}`);
5162
+ }
5163
+ disposable.disposable.dispose();
5164
+ disposable.value.dispose();
5136
5165
  this.panels.delete(panel.id);
5137
5166
  const index = this.getPanels().findIndex((_) => _ === panel);
5138
5167
  this.splitview.removeView(index, sizing);
@@ -5191,7 +5220,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5191
5220
  }
5192
5221
  this.setActive(view, true);
5193
5222
  });
5194
- this.panels.set(view.id, disposable);
5223
+ this.panels.set(view.id, { disposable, value: view });
5195
5224
  }
5196
5225
  toJSON() {
5197
5226
  var _a;
@@ -5215,6 +5244,11 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5215
5244
  }
5216
5245
  fromJSON(serializedSplitview, deferComponentLayout = false) {
5217
5246
  const { views, orientation, size, activeView } = serializedSplitview;
5247
+ for (const [_, value] of this.panels.entries()) {
5248
+ value.disposable.dispose();
5249
+ value.value.dispose();
5250
+ }
5251
+ this.panels.clear();
5218
5252
  this.splitview.dispose();
5219
5253
  const queue = [];
5220
5254
  this.splitview = new Splitview(this.element, {
@@ -5270,9 +5304,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5270
5304
  }
5271
5305
  }
5272
5306
  dispose() {
5273
- Array.from(this.panels.values()).forEach((value) => {
5274
- value.dispose();
5275
- });
5307
+ for (const [_, value] of this.panels.entries()) {
5308
+ value.disposable.dispose();
5309
+ value.value.dispose();
5310
+ }
5276
5311
  this.panels.clear();
5277
5312
  this.splitview.dispose();
5278
5313
  super.dispose();
@@ -5543,7 +5578,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5543
5578
  })(this.header);
5544
5579
  this.target = new Droptarget(this.element, {
5545
5580
  validOverlays: 'vertical',
5546
- canDisplayOverlay: (event) => {
5581
+ canDisplayOverlay: () => {
5547
5582
  const data = getPaneData();
5548
5583
  if (!data) {
5549
5584
  return true;
@@ -5614,7 +5649,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5614
5649
  this._expander.textContent = e.isExpanded ? '<' : '>';
5615
5650
  });
5616
5651
  }
5617
- update(params) {
5652
+ update(_params) {
5618
5653
  //
5619
5654
  }
5620
5655
  dispose() {
@@ -5640,6 +5675,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5640
5675
  super();
5641
5676
  this.element = element;
5642
5677
  this._disposable = new MutableDisposable();
5678
+ this._viewDisposables = new Map();
5643
5679
  this._onDidLayoutChange = new Emitter();
5644
5680
  this.onDidLayoutChange = this._onDidLayoutChange.event;
5645
5681
  this._onDidDrop = new Emitter();
@@ -5724,9 +5760,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5724
5760
  isExpanded: !!options.isExpanded,
5725
5761
  disableDnd: !!this.options.disableDnd,
5726
5762
  });
5727
- const disposable = new CompositeDisposable(view.onDidDrop((event) => {
5728
- this._onDidDrop.fire(event);
5729
- }));
5763
+ this.doAddPanel(view);
5730
5764
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
5731
5765
  const index = typeof options.index === 'number' ? options.index : undefined;
5732
5766
  view.init({
@@ -5739,7 +5773,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5739
5773
  });
5740
5774
  this.paneview.addPane(view, size, index);
5741
5775
  view.orientation = this.paneview.orientation;
5742
- return disposable;
5776
+ return view;
5743
5777
  }
5744
5778
  getPanels() {
5745
5779
  return this.paneview.getPanes();
@@ -5748,6 +5782,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5748
5782
  const views = this.getPanels();
5749
5783
  const index = views.findIndex((_) => _ === panel);
5750
5784
  this.paneview.removePane(index);
5785
+ this.doRemovePanel(panel);
5751
5786
  }
5752
5787
  movePanel(from, to) {
5753
5788
  this.paneview.moveView(from, to);
@@ -5797,6 +5832,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5797
5832
  fromJSON(serializedPaneview, deferComponentLayout) {
5798
5833
  const { views, size } = serializedPaneview;
5799
5834
  const queue = [];
5835
+ for (const [_, value] of this._viewDisposables.entries()) {
5836
+ value.dispose();
5837
+ }
5838
+ this._viewDisposables.clear();
5800
5839
  this.paneview.dispose();
5801
5840
  this.paneview = new Paneview(this.element, {
5802
5841
  orientation: exports.Orientation.VERTICAL,
@@ -5832,9 +5871,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5832
5871
  isExpanded: !!view.expanded,
5833
5872
  disableDnd: !!this.options.disableDnd,
5834
5873
  });
5835
- panel.onDidDrop((event) => {
5836
- this._onDidDrop.fire(event);
5837
- });
5874
+ this.doAddPanel(panel);
5838
5875
  queue.push(() => {
5839
5876
  panel.init({
5840
5877
  params: data.params || {},
@@ -5864,8 +5901,25 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5864
5901
  queue.forEach((f) => f());
5865
5902
  }
5866
5903
  }
5904
+ doAddPanel(panel) {
5905
+ const disposable = panel.onDidDrop((event) => {
5906
+ this._onDidDrop.fire(event);
5907
+ });
5908
+ this._viewDisposables.set(panel.id, disposable);
5909
+ }
5910
+ doRemovePanel(panel) {
5911
+ const disposable = this._viewDisposables.get(panel.id);
5912
+ if (disposable) {
5913
+ disposable.dispose();
5914
+ this._viewDisposables.delete(panel.id);
5915
+ }
5916
+ }
5867
5917
  dispose() {
5868
5918
  super.dispose();
5919
+ for (const [_, value] of this._viewDisposables.entries()) {
5920
+ value.dispose();
5921
+ }
5922
+ this._viewDisposables.clear();
5869
5923
  this.paneview.dispose();
5870
5924
  }
5871
5925
  }
@@ -6094,18 +6148,12 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6094
6148
  this.id = id;
6095
6149
  this.component = component;
6096
6150
  this.reactPortalStore = reactPortalStore;
6097
- // private hostedContainer: HostedContainer;
6098
6151
  this._onDidFocus = new Emitter();
6099
6152
  this.onDidFocus = this._onDidFocus.event;
6100
6153
  this._onDidBlur = new Emitter();
6101
6154
  this.onDidBlur = this._onDidBlur.event;
6102
6155
  this._element = document.createElement('div');
6103
6156
  this._element.className = 'dockview-react-part';
6104
- // this.hostedContainer = new HostedContainer({
6105
- // id,
6106
- // });
6107
- // this.hostedContainer.onDidFocus(() => this._onDidFocus.fire());
6108
- // this.hostedContainer.onDidBlur(() => this._onDidBlur.fire());
6109
6157
  this._actionsElement = document.createElement('div');
6110
6158
  this._actionsElement.className = 'dockview-react-part';
6111
6159
  }
@@ -6140,15 +6188,11 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6140
6188
  var _a;
6141
6189
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6142
6190
  }
6143
- updateParentGroup(group, isPanelVisible) {
6191
+ updateParentGroup(group, _isPanelVisible) {
6144
6192
  this._group = group;
6145
6193
  }
6146
- layout(width, height) {
6194
+ layout(_width, _height) {
6147
6195
  // noop
6148
- // this.hostedContainer.layout(
6149
- // this.element
6150
- // // { width, height }
6151
- // );
6152
6196
  }
6153
6197
  close() {
6154
6198
  return Promise.resolve(true);
@@ -6158,7 +6202,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6158
6202
  this._onDidFocus.dispose();
6159
6203
  this._onDidBlur.dispose();
6160
6204
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
6161
- // this.hostedContainer?.dispose();
6162
6205
  (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
6163
6206
  }
6164
6207
  }
@@ -6193,10 +6236,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6193
6236
  id: this.id,
6194
6237
  };
6195
6238
  }
6196
- layout(width, height) {
6239
+ layout(_width, _height) {
6197
6240
  // noop - retrieval from api
6198
6241
  }
6199
- updateParentGroup(group, isPanelVisible) {
6242
+ updateParentGroup(_group, _isPanelVisible) {
6200
6243
  // noop - retrieval from api
6201
6244
  }
6202
6245
  dispose() {
@@ -6275,10 +6318,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6275
6318
  id: this.id,
6276
6319
  };
6277
6320
  }
6278
- layout(width, height) {
6321
+ layout(_width, _height) {
6279
6322
  // noop - retrieval from api
6280
6323
  }
6281
- updateParentGroup(group, isPanelVisible) {
6324
+ updateParentGroup(group, _isPanelVisible) {
6282
6325
  // noop - retrieval from api
6283
6326
  this._groupRef.value = group;
6284
6327
  }
@@ -6312,21 +6355,21 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6312
6355
  var _a;
6313
6356
  const factory = {
6314
6357
  content: {
6315
- createComponent: (id, componentId, component) => {
6358
+ createComponent: (_id, componentId, component) => {
6316
6359
  return new ReactPanelContentPart(componentId, component, {
6317
6360
  addPortal,
6318
6361
  });
6319
6362
  },
6320
6363
  },
6321
6364
  tab: {
6322
- createComponent: (id, componentId, component) => {
6365
+ createComponent: (_id, componentId, component) => {
6323
6366
  return new ReactPanelHeaderPart(componentId, component, {
6324
6367
  addPortal,
6325
6368
  });
6326
6369
  },
6327
6370
  },
6328
6371
  watermark: {
6329
- createComponent: (id, componentId, component) => {
6372
+ createComponent: (_id, componentId, component) => {
6330
6373
  return new ReactWatermarkPart(componentId, component, {
6331
6374
  addPortal,
6332
6375
  });
@@ -6345,11 +6388,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6345
6388
  ? { separatorBorder: 'transparent' }
6346
6389
  : undefined,
6347
6390
  });
6348
- const disposable = dockview.onDidDrop((event) => {
6349
- if (props.onDidDrop) {
6350
- props.onDidDrop(event);
6351
- }
6352
- });
6353
6391
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
6354
6392
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
6355
6393
  const { clientWidth, clientHeight } = domRef.current;
@@ -6359,11 +6397,25 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6359
6397
  }
6360
6398
  dockviewRef.current = dockview;
6361
6399
  return () => {
6362
- disposable.dispose();
6363
6400
  dockview.dispose();
6364
6401
  element.remove();
6365
6402
  };
6366
6403
  }, []);
6404
+ React__namespace.useEffect(() => {
6405
+ if (!dockviewRef.current) {
6406
+ return () => {
6407
+ // noop
6408
+ };
6409
+ }
6410
+ const disposable = dockviewRef.current.onDidDrop((event) => {
6411
+ if (props.onDidDrop) {
6412
+ props.onDidDrop(event);
6413
+ }
6414
+ });
6415
+ return () => {
6416
+ disposable.dispose();
6417
+ };
6418
+ }, [props.onDidDrop]);
6367
6419
  React__namespace.useEffect(() => {
6368
6420
  if (!dockviewRef.current) {
6369
6421
  return;
@@ -6681,7 +6733,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6681
6733
  };
6682
6734
  }, [props.disableAutoResizing]);
6683
6735
  React__namespace.useEffect(() => {
6684
- const createComponent = (id, componentId, component) => new PanePanelSection(id, component, {
6736
+ const createComponent = (id, _componentId, component) => new PanePanelSection(id, component, {
6685
6737
  addPortal,
6686
6738
  });
6687
6739
  const paneview = new PaneviewComponent(domRef.current, {