dockview-angular 4.12.0 → 4.13.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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-angular
3
- * @version 4.12.0
3
+ * @version 4.13.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -1298,11 +1298,13 @@ class Splitview {
1298
1298
  document.removeEventListener('pointermove', onPointerMove);
1299
1299
  document.removeEventListener('pointerup', end);
1300
1300
  document.removeEventListener('pointercancel', end);
1301
+ document.removeEventListener('contextmenu', end);
1301
1302
  this._onDidSashEnd.fire(undefined);
1302
1303
  };
1303
1304
  document.addEventListener('pointermove', onPointerMove);
1304
1305
  document.addEventListener('pointerup', end);
1305
1306
  document.addEventListener('pointercancel', end);
1307
+ document.addEventListener('contextmenu', end);
1306
1308
  };
1307
1309
  sash.addEventListener('pointerdown', onPointerStart);
1308
1310
  const sashItem = {
@@ -5164,7 +5166,7 @@ class Tab extends CompositeDisposable {
5164
5166
  }
5165
5167
  }
5166
5168
 
5167
- class WillShowOverlayLocationEvent {
5169
+ class DockviewWillShowOverlayLocationEvent {
5168
5170
  get kind() {
5169
5171
  return this.options.kind;
5170
5172
  }
@@ -5512,7 +5514,7 @@ class Tabs extends CompositeDisposable {
5512
5514
  index: this._tabs.findIndex((x) => x.value === tab),
5513
5515
  });
5514
5516
  }), tab.onWillShowOverlay((event) => {
5515
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
5517
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
5516
5518
  kind: 'tab',
5517
5519
  panel: this.group.activePanel,
5518
5520
  api: this.accessor.api,
@@ -5676,7 +5678,7 @@ class TabsContainer extends CompositeDisposable {
5676
5678
  index: this.tabs.size,
5677
5679
  });
5678
5680
  }), this.voidContainer.onWillShowOverlay((event) => {
5679
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
5681
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
5680
5682
  kind: 'header_space',
5681
5683
  panel: this.group.activePanel,
5682
5684
  api: this.accessor.api,
@@ -6070,7 +6072,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
6070
6072
  }), this.tabsContainer.onWillShowOverlay((event) => {
6071
6073
  this._onWillShowOverlay.fire(event);
6072
6074
  }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
6073
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
6075
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
6074
6076
  kind: 'content',
6075
6077
  panel: this.activePanel,
6076
6078
  api: this._api,
@@ -6746,7 +6748,19 @@ class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
6746
6748
  this.onDidLocationChange = this._onDidLocationChange.event;
6747
6749
  this._onDidActivePanelChange = new Emitter();
6748
6750
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
6749
- this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);
6751
+ this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange, this._onDidVisibilityChange.event((event) => {
6752
+ // When becoming visible, apply any pending size change
6753
+ if (event.isVisible && this._pendingSize) {
6754
+ super.setSize(this._pendingSize);
6755
+ this._pendingSize = undefined;
6756
+ }
6757
+ }));
6758
+ }
6759
+ setSize(event) {
6760
+ // Always store the requested size
6761
+ this._pendingSize = Object.assign({}, event);
6762
+ // Apply the size change immediately
6763
+ super.setSize(event);
6750
6764
  }
6751
6765
  close() {
6752
6766
  if (!this._group) {
@@ -7698,13 +7712,16 @@ class Overlay extends CompositeDisposable {
7698
7712
  let right = undefined;
7699
7713
  let width = undefined;
7700
7714
  const moveTop = () => {
7701
- top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
7715
+ // When dragging top handle, constrain top position to prevent oversizing
7716
+ const maxTop = startPosition.originalY +
7702
7717
  startPosition.originalHeight >
7703
7718
  containerRect.height
7704
- ? this.getMinimumHeight(containerRect.height)
7719
+ ? Math.max(0, containerRect.height -
7720
+ Overlay.MINIMUM_HEIGHT)
7705
7721
  : Math.max(0, startPosition.originalY +
7706
7722
  startPosition.originalHeight -
7707
- Overlay.MINIMUM_HEIGHT));
7723
+ Overlay.MINIMUM_HEIGHT);
7724
+ top = clamp(y, 0, maxTop);
7708
7725
  height =
7709
7726
  startPosition.originalY +
7710
7727
  startPosition.originalHeight -
@@ -7715,22 +7732,27 @@ class Overlay extends CompositeDisposable {
7715
7732
  top =
7716
7733
  startPosition.originalY -
7717
7734
  startPosition.originalHeight;
7718
- height = clamp(y - top, top < 0 &&
7719
- typeof this.options
7720
- .minimumInViewportHeight === 'number'
7735
+ // When dragging bottom handle, constrain height to container height
7736
+ const minHeight = top < 0 &&
7737
+ typeof this.options.minimumInViewportHeight ===
7738
+ 'number'
7721
7739
  ? -top +
7722
7740
  this.options.minimumInViewportHeight
7723
- : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
7741
+ : Overlay.MINIMUM_HEIGHT;
7742
+ const maxHeight = containerRect.height - Math.max(0, top);
7743
+ height = clamp(y - top, minHeight, maxHeight);
7724
7744
  bottom = containerRect.height - top - height;
7725
7745
  };
7726
7746
  const moveLeft = () => {
7727
- left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
7747
+ const maxLeft = startPosition.originalX +
7728
7748
  startPosition.originalWidth >
7729
7749
  containerRect.width
7730
- ? this.getMinimumWidth(containerRect.width)
7750
+ ? Math.max(0, containerRect.width -
7751
+ Overlay.MINIMUM_WIDTH) // Prevent extending beyong right edge
7731
7752
  : Math.max(0, startPosition.originalX +
7732
7753
  startPosition.originalWidth -
7733
- Overlay.MINIMUM_WIDTH));
7754
+ Overlay.MINIMUM_WIDTH);
7755
+ left = clamp(x, 0, maxLeft); // min is 0 (Not -Infinity) to prevent dragging beyond left edge
7734
7756
  width =
7735
7757
  startPosition.originalX +
7736
7758
  startPosition.originalWidth -
@@ -7741,12 +7763,15 @@ class Overlay extends CompositeDisposable {
7741
7763
  left =
7742
7764
  startPosition.originalX -
7743
7765
  startPosition.originalWidth;
7744
- width = clamp(x - left, left < 0 &&
7745
- typeof this.options
7746
- .minimumInViewportWidth === 'number'
7766
+ // When dragging right handle, constrain width to container width
7767
+ const minWidth = left < 0 &&
7768
+ typeof this.options.minimumInViewportWidth ===
7769
+ 'number'
7747
7770
  ? -left +
7748
7771
  this.options.minimumInViewportWidth
7749
- : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
7772
+ : Overlay.MINIMUM_WIDTH;
7773
+ const maxWidth = containerRect.width - Math.max(0, left);
7774
+ width = clamp(x - left, minWidth, maxWidth);
7750
7775
  right = containerRect.width - left - width;
7751
7776
  };
7752
7777
  switch (direction) {
@@ -8576,7 +8601,7 @@ class DockviewComponent extends BaseGrid {
8576
8601
  // option only available when no panels in primary grid
8577
8602
  return;
8578
8603
  }
8579
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
8604
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
8580
8605
  kind: 'edge',
8581
8606
  panel: undefined,
8582
8607
  api: this._api,
@@ -9813,6 +9838,13 @@ class DockviewComponent extends BaseGrid {
9813
9838
  panel: removedPanel,
9814
9839
  from: sourceGroup,
9815
9840
  });
9841
+ /**
9842
+ * Update overlay positions after DOM layout completes to prevent 0×0 dimensions.
9843
+ * With defaultRenderer="always" this results in panel content not showing after move operations.
9844
+ */
9845
+ requestAnimationFrame(() => {
9846
+ this.overlayRenderContainer.updateAllPositions();
9847
+ });
9816
9848
  }
9817
9849
  else {
9818
9850
  /**
@@ -13116,6 +13148,7 @@ exports.DockviewMutableDisposable = MutableDisposable;
13116
13148
  exports.DockviewPanel = DockviewPanel;
13117
13149
  exports.DockviewUnhandledDragOverEvent = DockviewUnhandledDragOverEvent;
13118
13150
  exports.DockviewWillDropEvent = DockviewWillDropEvent;
13151
+ exports.DockviewWillShowOverlayLocationEvent = DockviewWillShowOverlayLocationEvent;
13119
13152
  exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
13120
13153
  exports.Gridview = Gridview;
13121
13154
  exports.GridviewApi = GridviewApi;