dockview-angular 0.0.0-experimental-e3d91d1-20251227 → 0.0.0-experimental-9b12ca8-20251228

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 0.0.0-experimental-e3d91d1-20251227
3
+ * @version 0.0.0-experimental-9b12ca8-20251228
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -5136,7 +5136,7 @@
5136
5136
  }
5137
5137
  }
5138
5138
 
5139
- class WillShowOverlayLocationEvent {
5139
+ class DockviewWillShowOverlayLocationEvent {
5140
5140
  get kind() {
5141
5141
  return this.options.kind;
5142
5142
  }
@@ -5484,7 +5484,7 @@
5484
5484
  index: this._tabs.findIndex((x) => x.value === tab),
5485
5485
  });
5486
5486
  }), tab.onWillShowOverlay((event) => {
5487
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
5487
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
5488
5488
  kind: 'tab',
5489
5489
  panel: this.group.activePanel,
5490
5490
  api: this.accessor.api,
@@ -5648,7 +5648,7 @@
5648
5648
  index: this.tabs.size,
5649
5649
  });
5650
5650
  }), this.voidContainer.onWillShowOverlay((event) => {
5651
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
5651
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
5652
5652
  kind: 'header_space',
5653
5653
  panel: this.group.activePanel,
5654
5654
  api: this.accessor.api,
@@ -6042,7 +6042,7 @@
6042
6042
  }), this.tabsContainer.onWillShowOverlay((event) => {
6043
6043
  this._onWillShowOverlay.fire(event);
6044
6044
  }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {
6045
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
6045
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
6046
6046
  kind: 'content',
6047
6047
  panel: this.activePanel,
6048
6048
  api: this._api,
@@ -6718,7 +6718,19 @@
6718
6718
  this.onDidLocationChange = this._onDidLocationChange.event;
6719
6719
  this._onDidActivePanelChange = new Emitter();
6720
6720
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
6721
- this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);
6721
+ this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange, this._onDidVisibilityChange.event((event) => {
6722
+ // When becoming visible, apply any pending size change
6723
+ if (event.isVisible && this._pendingSize) {
6724
+ super.setSize(this._pendingSize);
6725
+ this._pendingSize = undefined;
6726
+ }
6727
+ }));
6728
+ }
6729
+ setSize(event) {
6730
+ // Always store the requested size
6731
+ this._pendingSize = Object.assign({}, event);
6732
+ // Apply the size change immediately
6733
+ super.setSize(event);
6722
6734
  }
6723
6735
  close() {
6724
6736
  if (!this._group) {
@@ -7670,13 +7682,16 @@
7670
7682
  let right = undefined;
7671
7683
  let width = undefined;
7672
7684
  const moveTop = () => {
7673
- top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
7685
+ // When dragging top handle, constrain top position to prevent oversizing
7686
+ const maxTop = startPosition.originalY +
7674
7687
  startPosition.originalHeight >
7675
7688
  containerRect.height
7676
- ? this.getMinimumHeight(containerRect.height)
7689
+ ? Math.max(0, containerRect.height -
7690
+ Overlay.MINIMUM_HEIGHT)
7677
7691
  : Math.max(0, startPosition.originalY +
7678
7692
  startPosition.originalHeight -
7679
- Overlay.MINIMUM_HEIGHT));
7693
+ Overlay.MINIMUM_HEIGHT);
7694
+ top = clamp(y, 0, maxTop);
7680
7695
  height =
7681
7696
  startPosition.originalY +
7682
7697
  startPosition.originalHeight -
@@ -7687,22 +7702,27 @@
7687
7702
  top =
7688
7703
  startPosition.originalY -
7689
7704
  startPosition.originalHeight;
7690
- height = clamp(y - top, top < 0 &&
7691
- typeof this.options
7692
- .minimumInViewportHeight === 'number'
7705
+ // When dragging bottom handle, constrain height to container height
7706
+ const minHeight = top < 0 &&
7707
+ typeof this.options.minimumInViewportHeight ===
7708
+ 'number'
7693
7709
  ? -top +
7694
7710
  this.options.minimumInViewportHeight
7695
- : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
7711
+ : Overlay.MINIMUM_HEIGHT;
7712
+ const maxHeight = containerRect.height - Math.max(0, top);
7713
+ height = clamp(y - top, minHeight, maxHeight);
7696
7714
  bottom = containerRect.height - top - height;
7697
7715
  };
7698
7716
  const moveLeft = () => {
7699
- left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
7717
+ const maxLeft = startPosition.originalX +
7700
7718
  startPosition.originalWidth >
7701
7719
  containerRect.width
7702
- ? this.getMinimumWidth(containerRect.width)
7720
+ ? Math.max(0, containerRect.width -
7721
+ Overlay.MINIMUM_WIDTH) // Prevent extending beyong right edge
7703
7722
  : Math.max(0, startPosition.originalX +
7704
7723
  startPosition.originalWidth -
7705
- Overlay.MINIMUM_WIDTH));
7724
+ Overlay.MINIMUM_WIDTH);
7725
+ left = clamp(x, 0, maxLeft); // min is 0 (Not -Infinity) to prevent dragging beyond left edge
7706
7726
  width =
7707
7727
  startPosition.originalX +
7708
7728
  startPosition.originalWidth -
@@ -7713,12 +7733,15 @@
7713
7733
  left =
7714
7734
  startPosition.originalX -
7715
7735
  startPosition.originalWidth;
7716
- width = clamp(x - left, left < 0 &&
7717
- typeof this.options
7718
- .minimumInViewportWidth === 'number'
7736
+ // When dragging right handle, constrain width to container width
7737
+ const minWidth = left < 0 &&
7738
+ typeof this.options.minimumInViewportWidth ===
7739
+ 'number'
7719
7740
  ? -left +
7720
7741
  this.options.minimumInViewportWidth
7721
- : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
7742
+ : Overlay.MINIMUM_WIDTH;
7743
+ const maxWidth = containerRect.width - Math.max(0, left);
7744
+ width = clamp(x - left, minWidth, maxWidth);
7722
7745
  right = containerRect.width - left - width;
7723
7746
  };
7724
7747
  switch (direction) {
@@ -8511,7 +8534,14 @@
8511
8534
  if (options.debug) {
8512
8535
  this.addDisposables(new StrictEventsSequencing(this));
8513
8536
  }
8514
- this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
8537
+ this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidMovePanel.event(() => {
8538
+ /**
8539
+ * Update overlay positions after DOM layout completes to prevent 0×0 dimensions.
8540
+ * With defaultRenderer="always" this results in panel content not showing after move operations.
8541
+ * Debounced to avoid multiple calls when moving groups with multiple panels.
8542
+ */
8543
+ this.debouncedUpdateAllPositions();
8544
+ }), this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
8515
8545
  this.updateWatermark();
8516
8546
  }), this.onDidAdd((event) => {
8517
8547
  if (!this._moving) {
@@ -8548,7 +8578,7 @@
8548
8578
  // option only available when no panels in primary grid
8549
8579
  return;
8550
8580
  }
8551
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
8581
+ this._onWillShowOverlay.fire(new DockviewWillShowOverlayLocationEvent(event, {
8552
8582
  kind: 'edge',
8553
8583
  panel: undefined,
8554
8584
  api: this._api,
@@ -9715,6 +9745,15 @@
9715
9745
  }
9716
9746
  return re;
9717
9747
  }
9748
+ debouncedUpdateAllPositions() {
9749
+ if (this._updatePositionsFrameId !== undefined) {
9750
+ cancelAnimationFrame(this._updatePositionsFrameId);
9751
+ }
9752
+ this._updatePositionsFrameId = requestAnimationFrame(() => {
9753
+ this._updatePositionsFrameId = undefined;
9754
+ this.overlayRenderContainer.updateAllPositions();
9755
+ });
9756
+ }
9718
9757
  movingLock(func) {
9719
9758
  const isMoving = this._moving;
9720
9759
  try {
@@ -13088,6 +13127,7 @@
13088
13127
  exports.DockviewPanel = DockviewPanel;
13089
13128
  exports.DockviewUnhandledDragOverEvent = DockviewUnhandledDragOverEvent;
13090
13129
  exports.DockviewWillDropEvent = DockviewWillDropEvent;
13130
+ exports.DockviewWillShowOverlayLocationEvent = DockviewWillShowOverlayLocationEvent;
13091
13131
  exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
13092
13132
  exports.Gridview = Gridview;
13093
13133
  exports.GridviewApi = GridviewApi;