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
  */
@@ -316,7 +316,7 @@
316
316
  this.component.layout(width, height);
317
317
  }
318
318
  addPanel(options) {
319
- return this.component.addPanel(options);
319
+ this.component.addPanel(options);
320
320
  }
321
321
  resizeToFit() {
322
322
  this.component.resizeToFit();
@@ -1536,7 +1536,7 @@
1536
1536
  });
1537
1537
  // if we've added views from the descriptor we need to
1538
1538
  // add the panes to our Pane array and setup animation
1539
- this.getPanes().forEach((pane, index) => {
1539
+ this.getPanes().forEach((pane) => {
1540
1540
  const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {
1541
1541
  this.setupAnimation();
1542
1542
  this._onDidChange.fire(undefined);
@@ -1604,17 +1604,20 @@
1604
1604
  getPanes() {
1605
1605
  return this.splitview.getViews();
1606
1606
  }
1607
- removePane(index) {
1607
+ removePane(index, options = { skipDispose: false }) {
1608
1608
  const paneItem = this.paneItems.splice(index, 1)[0];
1609
1609
  this.splitview.removeView(index);
1610
- paneItem.disposable.dispose();
1610
+ if (!options.skipDispose) {
1611
+ paneItem.disposable.dispose();
1612
+ paneItem.pane.dispose();
1613
+ }
1611
1614
  return paneItem;
1612
1615
  }
1613
1616
  moveView(from, to) {
1614
1617
  if (from === to) {
1615
1618
  return;
1616
1619
  }
1617
- const view = this.removePane(from);
1620
+ const view = this.removePane(from, { skipDispose: true });
1618
1621
  this.skipAnimation = true;
1619
1622
  try {
1620
1623
  this.addPane(view.pane, view.pane.size, to, false);
@@ -1648,6 +1651,7 @@
1648
1651
  }
1649
1652
  this.paneItems.forEach((paneItem) => {
1650
1653
  paneItem.disposable.dispose();
1654
+ paneItem.pane.dispose();
1651
1655
  });
1652
1656
  this.paneItems = [];
1653
1657
  this.splitview.dispose();
@@ -1714,7 +1718,7 @@
1714
1718
  this._onDrop = new Emitter();
1715
1719
  this.onDrop = this._onDrop.event;
1716
1720
  this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {
1717
- onDragEnter: (e) => undefined,
1721
+ onDragEnter: () => undefined,
1718
1722
  onDragOver: (e) => {
1719
1723
  if (isBooleanValue(this.options.canDisplayOverlay)) {
1720
1724
  if (!this.options.canDisplayOverlay) {
@@ -1755,10 +1759,10 @@
1755
1759
  this.toggleClasses(quadrant, isSmallX, isSmallY);
1756
1760
  this.setState(quadrant);
1757
1761
  },
1758
- onDragLeave: (e) => {
1762
+ onDragLeave: () => {
1759
1763
  this.removeDropTarget();
1760
1764
  },
1761
- onDragEnd: (e) => {
1765
+ onDragEnd: () => {
1762
1766
  this.removeDropTarget();
1763
1767
  },
1764
1768
  onDrop: (e) => {
@@ -2155,7 +2159,7 @@
2155
2159
  }
2156
2160
  setupChildrenEvents() {
2157
2161
  this._childrenDisposable.dispose();
2158
- this._childrenDisposable = exports.Event.any(...this.children.map((c) => c.onDidChange))((e) => {
2162
+ this._childrenDisposable = exports.Event.any(...this.children.map((c) => c.onDidChange))(() => {
2159
2163
  /**
2160
2164
  * indicate a change has occured to allows any re-rendering but don't bubble
2161
2165
  * event because that was specific to this branch
@@ -2518,7 +2522,7 @@
2518
2522
  const [parentIndex, ...__] = [...rest].reverse();
2519
2523
  const isSiblingVisible = parent.isChildVisible(0);
2520
2524
  parent.removeChild(0, sizing);
2521
- const sizes = grandParent.children.map((size, i) => grandParent.getChildSize(i));
2525
+ const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
2522
2526
  grandParent.removeChild(parentIndex, sizing);
2523
2527
  if (sibling instanceof BranchNode) {
2524
2528
  sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
@@ -2617,7 +2621,7 @@
2617
2621
  }
2618
2622
  this.disposable.value = disposable;
2619
2623
  }
2620
- layout(width, height) {
2624
+ layout(_width, _height) {
2621
2625
  // noop
2622
2626
  }
2623
2627
  closePanel() {
@@ -2665,7 +2669,7 @@
2665
2669
  if (event.dataTransfer) {
2666
2670
  event.dataTransfer.effectAllowed = 'move';
2667
2671
  }
2668
- }), addDisposableListener(this.el, 'dragend', (ev) => {
2672
+ }), addDisposableListener(this.el, 'dragend', () => {
2669
2673
  for (const iframe of this.iframes) {
2670
2674
  iframe.style.pointerEvents = 'auto';
2671
2675
  }
@@ -3032,6 +3036,9 @@
3032
3036
  get maximumWidth() {
3033
3037
  return Number.MAX_SAFE_INTEGER;
3034
3038
  }
3039
+ get hasWatermark() {
3040
+ return !!(this.watermark && this.container.contains(this.watermark.element));
3041
+ }
3035
3042
  initialize() {
3036
3043
  var _a, _b;
3037
3044
  if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
@@ -3110,10 +3117,10 @@
3110
3117
  containsPanel(panel) {
3111
3118
  return this.panels.includes(panel);
3112
3119
  }
3113
- init(params) {
3120
+ init(_params) {
3114
3121
  //noop
3115
3122
  }
3116
- update(params) {
3123
+ update(_params) {
3117
3124
  //noop
3118
3125
  }
3119
3126
  focus() {
@@ -3336,10 +3343,12 @@
3336
3343
  }
3337
3344
  }
3338
3345
  dispose() {
3346
+ var _a;
3347
+ super.dispose();
3348
+ (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
3339
3349
  for (const panel of this.panels) {
3340
3350
  panel.dispose();
3341
3351
  }
3342
- super.dispose();
3343
3352
  this.dropTarget.dispose();
3344
3353
  this.tabsContainer.dispose();
3345
3354
  this.contentContainer.dispose();
@@ -3442,6 +3451,7 @@
3442
3451
  const view = this.gridview.remove(group, exports.Sizing.Distribute);
3443
3452
  if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {
3444
3453
  item.disposable.dispose();
3454
+ item.value.dispose();
3445
3455
  this._groups.delete(group.id);
3446
3456
  }
3447
3457
  this._onDidRemoveGroup.fire(group);
@@ -3532,6 +3542,9 @@
3532
3542
  this._onDidAddGroup.dispose();
3533
3543
  this._onDidRemoveGroup.dispose();
3534
3544
  this._onDidLayoutChange.dispose();
3545
+ for (const group of this.groups) {
3546
+ group.dispose();
3547
+ }
3535
3548
  this.gridview.dispose();
3536
3549
  }
3537
3550
  }
@@ -3861,7 +3874,7 @@
3861
3874
  get id() {
3862
3875
  return 'watermark';
3863
3876
  }
3864
- update(event) {
3877
+ update(_event) {
3865
3878
  // noop
3866
3879
  }
3867
3880
  focus() {
@@ -3870,17 +3883,17 @@
3870
3883
  toJSON() {
3871
3884
  return {};
3872
3885
  }
3873
- layout(width, height) {
3886
+ layout(_width, _height) {
3874
3887
  // noop
3875
3888
  }
3876
3889
  init(params) {
3877
3890
  this.params = params;
3878
- this.addDisposables(this.params.containerApi.onDidLayoutChange((event) => {
3891
+ this.addDisposables(this.params.containerApi.onDidLayoutChange(() => {
3879
3892
  this.render();
3880
3893
  }));
3881
3894
  this.render();
3882
3895
  }
3883
- updateParentGroup(group, visible) {
3896
+ updateParentGroup(group, _visible) {
3884
3897
  this.group = group;
3885
3898
  this.render();
3886
3899
  }
@@ -4055,7 +4068,7 @@
4055
4068
  this._isGroupActive = group.isActive;
4056
4069
  this.render();
4057
4070
  }
4058
- layout(width, height) {
4071
+ layout(_width, _height) {
4059
4072
  // noop
4060
4073
  }
4061
4074
  render() {
@@ -4129,8 +4142,10 @@
4129
4142
  };
4130
4143
  }
4131
4144
  dispose() {
4145
+ var _a;
4132
4146
  super.dispose();
4133
4147
  this.api.dispose();
4148
+ (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
4134
4149
  }
4135
4150
  }
4136
4151
 
@@ -4575,7 +4590,10 @@
4575
4590
  }
4576
4591
  addPanel(options) {
4577
4592
  var _a, _b;
4578
- const panel = this._addPanel(options);
4593
+ if (this.panels.find((_) => _.id === options.id)) {
4594
+ throw new Error(`panel with id ${options.id} already exists`);
4595
+ }
4596
+ const panel = this.createPanel(options);
4579
4597
  let referenceGroup;
4580
4598
  if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
4581
4599
  const referencePanel = this.getGroupPanel(options.position.referencePanel);
@@ -4603,13 +4621,20 @@
4603
4621
  }
4604
4622
  return panel;
4605
4623
  }
4606
- removePanel(panel, options = { removeEmptyGroup: true }) {
4624
+ removePanel(panel, options = {
4625
+ removeEmptyGroup: true,
4626
+ skipDispose: false,
4627
+ }) {
4607
4628
  const group = panel.group;
4608
4629
  if (!group) {
4609
4630
  throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);
4610
4631
  }
4611
4632
  group.model.removePanel(panel);
4612
- if (group.model.size === 0 && options.removeEmptyGroup) {
4633
+ panel.dispose();
4634
+ const retainGroupForWatermark = this.size === 1;
4635
+ if (!retainGroupForWatermark &&
4636
+ group.model.size === 0 &&
4637
+ options.removeEmptyGroup) {
4613
4638
  this.removeGroup(group);
4614
4639
  }
4615
4640
  }
@@ -4646,6 +4671,7 @@
4646
4671
  for (const panel of panels) {
4647
4672
  this.removePanel(panel, {
4648
4673
  removeEmptyGroup: false,
4674
+ skipDispose: false,
4649
4675
  });
4650
4676
  }
4651
4677
  super.doRemoveGroup(group, { skipActive });
@@ -4729,6 +4755,7 @@
4729
4755
  }
4730
4756
  }
4731
4757
  const view = new GroupviewPanel(this, id, options);
4758
+ view.init({ params: {}, containerApi: null }); // required to initialized .part and allow for correct disposal of group
4732
4759
  if (!this._groups.has(view.id)) {
4733
4760
  const disposable = new CompositeDisposable(view.model.onMove((event) => {
4734
4761
  const { groupId, itemId, target, index } = event;
@@ -4762,7 +4789,7 @@
4762
4789
  }
4763
4790
  return view;
4764
4791
  }
4765
- _addPanel(options) {
4792
+ createPanel(options) {
4766
4793
  const view = new DefaultGroupPanelView({
4767
4794
  content: this.createContentComponent(options.id, options.component),
4768
4795
  tab: this.createTabComponent(options.id, options.tabComponent),
@@ -4863,7 +4890,7 @@
4863
4890
  this.gridview.setViewVisible(getGridLocation(panel.element), visible);
4864
4891
  }
4865
4892
  setActive(panel) {
4866
- this._groups.forEach((value, key) => {
4893
+ this._groups.forEach((value, _key) => {
4867
4894
  value.value.setActive(panel === value.value);
4868
4895
  });
4869
4896
  }
@@ -4876,8 +4903,12 @@
4876
4903
  }
4877
4904
  fromJSON(serializedGridview, deferComponentLayout) {
4878
4905
  const { grid, activePanel } = serializedGridview;
4906
+ const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
4907
+ for (const group of groups) {
4908
+ group.disposable.dispose();
4909
+ this.doRemoveGroup(group.value, { skipActive: true });
4910
+ }
4879
4911
  this.gridview.clear();
4880
- this._groups.clear();
4881
4912
  const queue = [];
4882
4913
  this.gridview.deserialize(grid, {
4883
4914
  fromJSON: (node) => {
@@ -4974,7 +5005,6 @@
4974
5005
  });
4975
5006
  this.registerPanel(view);
4976
5007
  this.doAddGroup(view, relativeLocation, options.size);
4977
- return { api: view.api };
4978
5008
  }
4979
5009
  registerPanel(panel) {
4980
5010
  const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {
@@ -5025,11 +5055,6 @@
5025
5055
  }
5026
5056
  removeGroup(group) {
5027
5057
  super.removeGroup(group);
5028
- const panel = this._groups.get(group.id);
5029
- if (panel) {
5030
- panel.disposable.dispose();
5031
- this._groups.delete(group.id);
5032
- }
5033
5058
  }
5034
5059
  dispose() {
5035
5060
  super.dispose();
@@ -5136,7 +5161,11 @@
5136
5161
  }
5137
5162
  removePanel(panel, sizing) {
5138
5163
  const disposable = this.panels.get(panel.id);
5139
- disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
5164
+ if (!disposable) {
5165
+ throw new Error(`unknown splitview panel ${panel.id}`);
5166
+ }
5167
+ disposable.disposable.dispose();
5168
+ disposable.value.dispose();
5140
5169
  this.panels.delete(panel.id);
5141
5170
  const index = this.getPanels().findIndex((_) => _ === panel);
5142
5171
  this.splitview.removeView(index, sizing);
@@ -5195,7 +5224,7 @@
5195
5224
  }
5196
5225
  this.setActive(view, true);
5197
5226
  });
5198
- this.panels.set(view.id, disposable);
5227
+ this.panels.set(view.id, { disposable, value: view });
5199
5228
  }
5200
5229
  toJSON() {
5201
5230
  var _a;
@@ -5219,6 +5248,11 @@
5219
5248
  }
5220
5249
  fromJSON(serializedSplitview, deferComponentLayout = false) {
5221
5250
  const { views, orientation, size, activeView } = serializedSplitview;
5251
+ for (const [_, value] of this.panels.entries()) {
5252
+ value.disposable.dispose();
5253
+ value.value.dispose();
5254
+ }
5255
+ this.panels.clear();
5222
5256
  this.splitview.dispose();
5223
5257
  const queue = [];
5224
5258
  this.splitview = new Splitview(this.element, {
@@ -5274,9 +5308,10 @@
5274
5308
  }
5275
5309
  }
5276
5310
  dispose() {
5277
- Array.from(this.panels.values()).forEach((value) => {
5278
- value.dispose();
5279
- });
5311
+ for (const [_, value] of this.panels.entries()) {
5312
+ value.disposable.dispose();
5313
+ value.value.dispose();
5314
+ }
5280
5315
  this.panels.clear();
5281
5316
  this.splitview.dispose();
5282
5317
  super.dispose();
@@ -5547,7 +5582,7 @@
5547
5582
  })(this.header);
5548
5583
  this.target = new Droptarget(this.element, {
5549
5584
  validOverlays: 'vertical',
5550
- canDisplayOverlay: (event) => {
5585
+ canDisplayOverlay: () => {
5551
5586
  const data = getPaneData();
5552
5587
  if (!data) {
5553
5588
  return true;
@@ -5618,7 +5653,7 @@
5618
5653
  this._expander.textContent = e.isExpanded ? '<' : '>';
5619
5654
  });
5620
5655
  }
5621
- update(params) {
5656
+ update(_params) {
5622
5657
  //
5623
5658
  }
5624
5659
  dispose() {
@@ -5644,6 +5679,7 @@
5644
5679
  super();
5645
5680
  this.element = element;
5646
5681
  this._disposable = new MutableDisposable();
5682
+ this._viewDisposables = new Map();
5647
5683
  this._onDidLayoutChange = new Emitter();
5648
5684
  this.onDidLayoutChange = this._onDidLayoutChange.event;
5649
5685
  this._onDidDrop = new Emitter();
@@ -5728,9 +5764,7 @@
5728
5764
  isExpanded: !!options.isExpanded,
5729
5765
  disableDnd: !!this.options.disableDnd,
5730
5766
  });
5731
- const disposable = new CompositeDisposable(view.onDidDrop((event) => {
5732
- this._onDidDrop.fire(event);
5733
- }));
5767
+ this.doAddPanel(view);
5734
5768
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
5735
5769
  const index = typeof options.index === 'number' ? options.index : undefined;
5736
5770
  view.init({
@@ -5743,7 +5777,7 @@
5743
5777
  });
5744
5778
  this.paneview.addPane(view, size, index);
5745
5779
  view.orientation = this.paneview.orientation;
5746
- return disposable;
5780
+ return view;
5747
5781
  }
5748
5782
  getPanels() {
5749
5783
  return this.paneview.getPanes();
@@ -5752,6 +5786,7 @@
5752
5786
  const views = this.getPanels();
5753
5787
  const index = views.findIndex((_) => _ === panel);
5754
5788
  this.paneview.removePane(index);
5789
+ this.doRemovePanel(panel);
5755
5790
  }
5756
5791
  movePanel(from, to) {
5757
5792
  this.paneview.moveView(from, to);
@@ -5801,6 +5836,10 @@
5801
5836
  fromJSON(serializedPaneview, deferComponentLayout) {
5802
5837
  const { views, size } = serializedPaneview;
5803
5838
  const queue = [];
5839
+ for (const [_, value] of this._viewDisposables.entries()) {
5840
+ value.dispose();
5841
+ }
5842
+ this._viewDisposables.clear();
5804
5843
  this.paneview.dispose();
5805
5844
  this.paneview = new Paneview(this.element, {
5806
5845
  orientation: exports.Orientation.VERTICAL,
@@ -5836,9 +5875,7 @@
5836
5875
  isExpanded: !!view.expanded,
5837
5876
  disableDnd: !!this.options.disableDnd,
5838
5877
  });
5839
- panel.onDidDrop((event) => {
5840
- this._onDidDrop.fire(event);
5841
- });
5878
+ this.doAddPanel(panel);
5842
5879
  queue.push(() => {
5843
5880
  panel.init({
5844
5881
  params: data.params || {},
@@ -5868,8 +5905,25 @@
5868
5905
  queue.forEach((f) => f());
5869
5906
  }
5870
5907
  }
5908
+ doAddPanel(panel) {
5909
+ const disposable = panel.onDidDrop((event) => {
5910
+ this._onDidDrop.fire(event);
5911
+ });
5912
+ this._viewDisposables.set(panel.id, disposable);
5913
+ }
5914
+ doRemovePanel(panel) {
5915
+ const disposable = this._viewDisposables.get(panel.id);
5916
+ if (disposable) {
5917
+ disposable.dispose();
5918
+ this._viewDisposables.delete(panel.id);
5919
+ }
5920
+ }
5871
5921
  dispose() {
5872
5922
  super.dispose();
5923
+ for (const [_, value] of this._viewDisposables.entries()) {
5924
+ value.dispose();
5925
+ }
5926
+ this._viewDisposables.clear();
5873
5927
  this.paneview.dispose();
5874
5928
  }
5875
5929
  }
@@ -6098,18 +6152,12 @@
6098
6152
  this.id = id;
6099
6153
  this.component = component;
6100
6154
  this.reactPortalStore = reactPortalStore;
6101
- // private hostedContainer: HostedContainer;
6102
6155
  this._onDidFocus = new Emitter();
6103
6156
  this.onDidFocus = this._onDidFocus.event;
6104
6157
  this._onDidBlur = new Emitter();
6105
6158
  this.onDidBlur = this._onDidBlur.event;
6106
6159
  this._element = document.createElement('div');
6107
6160
  this._element.className = 'dockview-react-part';
6108
- // this.hostedContainer = new HostedContainer({
6109
- // id,
6110
- // });
6111
- // this.hostedContainer.onDidFocus(() => this._onDidFocus.fire());
6112
- // this.hostedContainer.onDidBlur(() => this._onDidBlur.fire());
6113
6161
  this._actionsElement = document.createElement('div');
6114
6162
  this._actionsElement.className = 'dockview-react-part';
6115
6163
  }
@@ -6144,15 +6192,11 @@
6144
6192
  var _a;
6145
6193
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6146
6194
  }
6147
- updateParentGroup(group, isPanelVisible) {
6195
+ updateParentGroup(group, _isPanelVisible) {
6148
6196
  this._group = group;
6149
6197
  }
6150
- layout(width, height) {
6198
+ layout(_width, _height) {
6151
6199
  // noop
6152
- // this.hostedContainer.layout(
6153
- // this.element
6154
- // // { width, height }
6155
- // );
6156
6200
  }
6157
6201
  close() {
6158
6202
  return Promise.resolve(true);
@@ -6162,7 +6206,6 @@
6162
6206
  this._onDidFocus.dispose();
6163
6207
  this._onDidBlur.dispose();
6164
6208
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
6165
- // this.hostedContainer?.dispose();
6166
6209
  (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
6167
6210
  }
6168
6211
  }
@@ -6197,10 +6240,10 @@
6197
6240
  id: this.id,
6198
6241
  };
6199
6242
  }
6200
- layout(width, height) {
6243
+ layout(_width, _height) {
6201
6244
  // noop - retrieval from api
6202
6245
  }
6203
- updateParentGroup(group, isPanelVisible) {
6246
+ updateParentGroup(_group, _isPanelVisible) {
6204
6247
  // noop - retrieval from api
6205
6248
  }
6206
6249
  dispose() {
@@ -6279,10 +6322,10 @@
6279
6322
  id: this.id,
6280
6323
  };
6281
6324
  }
6282
- layout(width, height) {
6325
+ layout(_width, _height) {
6283
6326
  // noop - retrieval from api
6284
6327
  }
6285
- updateParentGroup(group, isPanelVisible) {
6328
+ updateParentGroup(group, _isPanelVisible) {
6286
6329
  // noop - retrieval from api
6287
6330
  this._groupRef.value = group;
6288
6331
  }
@@ -6316,21 +6359,21 @@
6316
6359
  var _a;
6317
6360
  const factory = {
6318
6361
  content: {
6319
- createComponent: (id, componentId, component) => {
6362
+ createComponent: (_id, componentId, component) => {
6320
6363
  return new ReactPanelContentPart(componentId, component, {
6321
6364
  addPortal,
6322
6365
  });
6323
6366
  },
6324
6367
  },
6325
6368
  tab: {
6326
- createComponent: (id, componentId, component) => {
6369
+ createComponent: (_id, componentId, component) => {
6327
6370
  return new ReactPanelHeaderPart(componentId, component, {
6328
6371
  addPortal,
6329
6372
  });
6330
6373
  },
6331
6374
  },
6332
6375
  watermark: {
6333
- createComponent: (id, componentId, component) => {
6376
+ createComponent: (_id, componentId, component) => {
6334
6377
  return new ReactWatermarkPart(componentId, component, {
6335
6378
  addPortal,
6336
6379
  });
@@ -6349,11 +6392,6 @@
6349
6392
  ? { separatorBorder: 'transparent' }
6350
6393
  : undefined,
6351
6394
  });
6352
- const disposable = dockview.onDidDrop((event) => {
6353
- if (props.onDidDrop) {
6354
- props.onDidDrop(event);
6355
- }
6356
- });
6357
6395
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
6358
6396
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
6359
6397
  const { clientWidth, clientHeight } = domRef.current;
@@ -6363,11 +6401,25 @@
6363
6401
  }
6364
6402
  dockviewRef.current = dockview;
6365
6403
  return () => {
6366
- disposable.dispose();
6367
6404
  dockview.dispose();
6368
6405
  element.remove();
6369
6406
  };
6370
6407
  }, []);
6408
+ React__namespace.useEffect(() => {
6409
+ if (!dockviewRef.current) {
6410
+ return () => {
6411
+ // noop
6412
+ };
6413
+ }
6414
+ const disposable = dockviewRef.current.onDidDrop((event) => {
6415
+ if (props.onDidDrop) {
6416
+ props.onDidDrop(event);
6417
+ }
6418
+ });
6419
+ return () => {
6420
+ disposable.dispose();
6421
+ };
6422
+ }, [props.onDidDrop]);
6371
6423
  React__namespace.useEffect(() => {
6372
6424
  if (!dockviewRef.current) {
6373
6425
  return;
@@ -6685,7 +6737,7 @@
6685
6737
  };
6686
6738
  }, [props.disableAutoResizing]);
6687
6739
  React__namespace.useEffect(() => {
6688
- const createComponent = (id, componentId, component) => new PanePanelSection(id, component, {
6740
+ const createComponent = (id, _componentId, component) => new PanePanelSection(id, component, {
6689
6741
  addPortal,
6690
6742
  });
6691
6743
  const paneview = new PaneviewComponent(domRef.current, {
@@ -4,14 +4,13 @@ import { Direction } from '../gridview/baseComponentGridview';
4
4
  import { AddComponentOptions, IGridviewComponent, SerializedGridview } from '../gridview/gridviewComponent';
5
5
  import { IGridviewPanel } from '../gridview/gridviewPanel';
6
6
  import { IGroupPanel } from '../groupview/groupPanel';
7
- import { AddPaneviewCompponentOptions, SerializedPaneview, IPaneviewComponent } from '../paneview/paneviewComponent';
7
+ import { AddPaneviewComponentOptions, SerializedPaneview, IPaneviewComponent } from '../paneview/paneviewComponent';
8
8
  import { IPaneviewPanel } from '../paneview/paneviewPanel';
9
9
  import { AddSplitviewComponentOptions, ISplitviewComponent, SerializedSplitview, SplitviewComponentUpdateOptions } from '../splitview/splitviewComponent';
10
10
  import { IView, Orientation, Sizing } from '../splitview/core/splitview';
11
11
  import { ISplitviewPanel } from '../splitview/splitviewPanel';
12
12
  import { IGroupviewPanel } from '../groupview/groupviewPanel';
13
13
  import { Event } from '../events';
14
- import { IDisposable } from '../lifecycle';
15
14
  import { PaneviewDropEvent } from '../react';
16
15
  export interface CommonApi {
17
16
  readonly height: number;
@@ -64,7 +63,7 @@ export declare class PaneviewApi implements CommonApi {
64
63
  movePanel(from: number, to: number): void;
65
64
  focus(): void;
66
65
  layout(width: number, height: number): void;
67
- addPanel(options: AddPaneviewCompponentOptions): IDisposable;
66
+ addPanel(options: AddPaneviewComponentOptions): void;
68
67
  resizeToFit(): void;
69
68
  fromJSON(data: SerializedPaneview, deferComponentLayout?: boolean): void;
70
69
  toJSON(): SerializedPaneview;
@@ -125,7 +125,7 @@ export class PaneviewApi {
125
125
  this.component.layout(width, height);
126
126
  }
127
127
  addPanel(options) {
128
- return this.component.addPanel(options);
128
+ this.component.addPanel(options);
129
129
  }
130
130
  resizeToFit() {
131
131
  this.component.resizeToFit();
@@ -26,7 +26,7 @@ export class DragHandler extends CompositeDisposable {
26
26
  if (event.dataTransfer) {
27
27
  event.dataTransfer.effectAllowed = 'move';
28
28
  }
29
- }), addDisposableListener(this.el, 'dragend', (ev) => {
29
+ }), addDisposableListener(this.el, 'dragend', () => {
30
30
  for (const iframe of this.iframes) {
31
31
  iframe.style.pointerEvents = 'auto';
32
32
  }
@@ -21,7 +21,7 @@ export class Droptarget extends CompositeDisposable {
21
21
  this._onDrop = new Emitter();
22
22
  this.onDrop = this._onDrop.event;
23
23
  this.addDisposables(this._onDrop, new DragAndDropObserver(this.element, {
24
- onDragEnter: (e) => undefined,
24
+ onDragEnter: () => undefined,
25
25
  onDragOver: (e) => {
26
26
  if (isBooleanValue(this.options.canDisplayOverlay)) {
27
27
  if (!this.options.canDisplayOverlay) {
@@ -62,10 +62,10 @@ export class Droptarget extends CompositeDisposable {
62
62
  this.toggleClasses(quadrant, isSmallX, isSmallY);
63
63
  this.setState(quadrant);
64
64
  },
65
- onDragLeave: (e) => {
65
+ onDragLeave: () => {
66
66
  this.removeDropTarget();
67
67
  },
68
- onDragEnd: (e) => {
68
+ onDragEnd: () => {
69
69
  this.removeDropTarget();
70
70
  },
71
71
  onDrop: (e) => {
@@ -38,6 +38,6 @@ export declare class DefaultTab extends CompositeDisposable implements ITabRende
38
38
  focus(): void;
39
39
  init(params: GroupPanelPartInitParameters): void;
40
40
  updateParentGroup(group: GroupviewPanel, isPanelVisible: boolean): void;
41
- layout(width: number, height: number): void;
41
+ layout(_width: number, _height: number): void;
42
42
  private render;
43
43
  }
@@ -113,7 +113,7 @@ export class DefaultTab extends CompositeDisposable {
113
113
  this._isGroupActive = group.isActive;
114
114
  this.render();
115
115
  }
116
- layout(width, height) {
116
+ layout(_width, _height) {
117
117
  // noop
118
118
  }
119
119
  render() {