dockview-core 4.2.1 → 4.2.4

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 (35) hide show
  1. package/dist/cjs/dockview/components/popupService.d.ts +1 -0
  2. package/dist/cjs/dockview/components/popupService.js +6 -1
  3. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +5 -1
  4. package/dist/cjs/dockview/dockviewComponent.js +19 -17
  5. package/dist/cjs/dom.d.ts +4 -0
  6. package/dist/cjs/dom.js +42 -1
  7. package/dist/dockview-core.amd.js +68 -20
  8. package/dist/dockview-core.amd.js.map +1 -1
  9. package/dist/dockview-core.amd.min.js +2 -2
  10. package/dist/dockview-core.amd.min.js.map +1 -1
  11. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  12. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  13. package/dist/dockview-core.amd.noStyle.js +68 -20
  14. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  15. package/dist/dockview-core.cjs.js +68 -20
  16. package/dist/dockview-core.cjs.js.map +1 -1
  17. package/dist/dockview-core.esm.js +68 -20
  18. package/dist/dockview-core.esm.js.map +1 -1
  19. package/dist/dockview-core.esm.min.js +2 -2
  20. package/dist/dockview-core.esm.min.js.map +1 -1
  21. package/dist/dockview-core.js +68 -20
  22. package/dist/dockview-core.js.map +1 -1
  23. package/dist/dockview-core.min.js +2 -2
  24. package/dist/dockview-core.min.js.map +1 -1
  25. package/dist/dockview-core.min.noStyle.js +2 -2
  26. package/dist/dockview-core.min.noStyle.js.map +1 -1
  27. package/dist/dockview-core.noStyle.js +68 -20
  28. package/dist/dockview-core.noStyle.js.map +1 -1
  29. package/dist/esm/dockview/components/popupService.d.ts +1 -0
  30. package/dist/esm/dockview/components/popupService.js +6 -1
  31. package/dist/esm/dockview/components/titlebar/tabsContainer.js +6 -2
  32. package/dist/esm/dockview/dockviewComponent.js +19 -17
  33. package/dist/esm/dom.d.ts +4 -0
  34. package/dist/esm/dom.js +38 -0
  35. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 4.2.1
3
+ * @version 4.2.4
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -666,6 +666,44 @@ function onDidWindowResizeEnd(element, cb) {
666
666
  }));
667
667
  return disposable;
668
668
  }
669
+ function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {
670
+ const buffer = options.buffer;
671
+ const rect = element.getBoundingClientRect();
672
+ const rootRect = element.getBoundingClientRect();
673
+ const viewportWidth = root.clientWidth;
674
+ const viewportHeight = root.clientHeight;
675
+ let translateX = 0;
676
+ let translateY = 0;
677
+ const left = rect.left - rootRect.left;
678
+ const top = rect.top - rootRect.top;
679
+ const bottom = rect.bottom - rootRect.bottom;
680
+ const right = rect.right - rootRect.right;
681
+ // Check horizontal overflow
682
+ if (left < buffer) {
683
+ translateX = buffer - left;
684
+ }
685
+ else if (right > viewportWidth - buffer) {
686
+ translateX = viewportWidth - right - buffer;
687
+ }
688
+ // Check vertical overflow
689
+ if (top < buffer) {
690
+ translateY = buffer - top;
691
+ }
692
+ else if (bottom > viewportHeight - buffer) {
693
+ translateY = viewportHeight - bottom - buffer;
694
+ }
695
+ // Apply the translation if needed
696
+ if (translateX !== 0 || translateY !== 0) {
697
+ element.style.transform = `translate(${translateX}px, ${translateY}px)`;
698
+ }
699
+ }
700
+ function findRelativeZIndexParent(el) {
701
+ let tmp = el;
702
+ while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {
703
+ tmp = tmp.parentElement;
704
+ }
705
+ return tmp;
706
+ }
669
707
 
670
708
  function tail(arr) {
671
709
  if (arr.length === 0) {
@@ -5633,7 +5671,7 @@ class TabsContainer extends CompositeDisposable {
5633
5671
  toggleClass(wrapper, 'dv-tab', true);
5634
5672
  toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);
5635
5673
  toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);
5636
- wrapper.addEventListener('mousedown', () => {
5674
+ wrapper.addEventListener('pointerdown', () => {
5637
5675
  this.accessor.popupService.close();
5638
5676
  tab.element.scrollIntoView();
5639
5677
  tab.panel.api.setActive();
@@ -5641,9 +5679,13 @@ class TabsContainer extends CompositeDisposable {
5641
5679
  wrapper.appendChild(child);
5642
5680
  el.appendChild(wrapper);
5643
5681
  }
5682
+ const relativeParent = findRelativeZIndexParent(root);
5644
5683
  this.accessor.popupService.openPopover(el, {
5645
5684
  x: event.clientX,
5646
5685
  y: event.clientY,
5686
+ zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)
5687
+ ? `calc(${relativeParent.style.zIndex} * 2)`
5688
+ : undefined,
5647
5689
  });
5648
5690
  }));
5649
5691
  }
@@ -8008,10 +8050,11 @@ class PopupService extends CompositeDisposable {
8008
8050
  }), this._activeDisposable);
8009
8051
  }
8010
8052
  openPopover(element, position) {
8053
+ var _a;
8011
8054
  this.close();
8012
8055
  const wrapper = document.createElement('div');
8013
8056
  wrapper.style.position = 'absolute';
8014
- wrapper.style.zIndex = '99';
8057
+ wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';
8015
8058
  wrapper.appendChild(element);
8016
8059
  const anchorBox = this._element.getBoundingClientRect();
8017
8060
  const offsetX = anchorBox.left;
@@ -8035,6 +8078,9 @@ class PopupService extends CompositeDisposable {
8035
8078
  }
8036
8079
  this.close();
8037
8080
  }));
8081
+ requestAnimationFrame(() => {
8082
+ shiftAbsoluteElementIntoView(wrapper, this.root);
8083
+ });
8038
8084
  }
8039
8085
  close() {
8040
8086
  if (this._active) {
@@ -9568,24 +9614,26 @@ class DockviewComponent extends BaseGrid {
9568
9614
  selectedPopoutGroup.disposable.dispose();
9569
9615
  }
9570
9616
  }
9571
- const referenceLocation = getGridLocation(to.element);
9572
- const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
9573
- let size;
9574
- switch (this.gridview.orientation) {
9575
- case Orientation.VERTICAL:
9576
- size =
9577
- referenceLocation.length % 2 == 0
9578
- ? from.api.width
9579
- : from.api.height;
9580
- break;
9581
- case Orientation.HORIZONTAL:
9582
- size =
9583
- referenceLocation.length % 2 == 0
9584
- ? from.api.height
9585
- : from.api.width;
9586
- break;
9617
+ if (from.api.location.type !== 'popout') {
9618
+ const referenceLocation = getGridLocation(to.element);
9619
+ const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);
9620
+ let size;
9621
+ switch (this.gridview.orientation) {
9622
+ case Orientation.VERTICAL:
9623
+ size =
9624
+ referenceLocation.length % 2 == 0
9625
+ ? from.api.width
9626
+ : from.api.height;
9627
+ break;
9628
+ case Orientation.HORIZONTAL:
9629
+ size =
9630
+ referenceLocation.length % 2 == 0
9631
+ ? from.api.height
9632
+ : from.api.width;
9633
+ break;
9634
+ }
9635
+ this.gridview.addView(from, size, dropLocation);
9587
9636
  }
9588
- this.gridview.addView(from, size, dropLocation);
9589
9637
  }
9590
9638
  from.panels.forEach((panel) => {
9591
9639
  this._onDidMovePanel.fire({ panel, from });