dockview-core 4.0.1 → 4.1.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.
- package/dist/cjs/api/component.api.d.ts +3 -1
- package/dist/cjs/api/component.api.js +14 -0
- package/dist/cjs/dockview/components/popupService.js +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +16 -0
- package/dist/cjs/dockview/dockviewComponent.js +27 -10
- package/dist/cjs/dom.d.ts +6 -4
- package/dist/cjs/dom.js +90 -49
- package/dist/cjs/events.d.ts +1 -1
- package/dist/cjs/events.js +1 -10
- package/dist/cjs/overlay/overlay.js +4 -4
- package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +13 -2
- package/dist/cjs/paneview/draggablePaneviewPanel.js +14 -4
- package/dist/cjs/paneview/paneviewComponent.d.ts +5 -0
- package/dist/cjs/paneview/paneviewComponent.js +25 -3
- package/dist/cjs/paneview/paneviewPanel.d.ts +13 -4
- package/dist/cjs/paneview/paneviewPanel.js +9 -13
- package/dist/cjs/popoutWindow.js +2 -2
- package/dist/cjs/splitview/splitviewComponent.js +3 -0
- package/dist/dockview-core.amd.js +154 -62
- package/dist/dockview-core.amd.js.map +1 -1
- package/dist/dockview-core.amd.min.js +2 -2
- package/dist/dockview-core.amd.min.js.map +1 -1
- package/dist/dockview-core.amd.min.noStyle.js +2 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
- package/dist/dockview-core.amd.noStyle.js +154 -62
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +154 -62
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +154 -62
- package/dist/dockview-core.esm.js.map +1 -1
- package/dist/dockview-core.esm.min.js +2 -2
- package/dist/dockview-core.esm.min.js.map +1 -1
- package/dist/dockview-core.js +154 -62
- package/dist/dockview-core.js.map +1 -1
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.js.map +1 -1
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -1
- package/dist/dockview-core.noStyle.js +154 -62
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +3 -1
- package/dist/esm/api/component.api.js +6 -0
- package/dist/esm/dockview/components/popupService.js +2 -2
- package/dist/esm/dockview/dockviewComponent.d.ts +16 -0
- package/dist/esm/dockview/dockviewComponent.js +29 -12
- package/dist/esm/dom.d.ts +6 -4
- package/dist/esm/dom.js +65 -16
- package/dist/esm/events.d.ts +1 -1
- package/dist/esm/events.js +0 -8
- package/dist/esm/overlay/overlay.js +5 -5
- package/dist/esm/paneview/draggablePaneviewPanel.d.ts +13 -2
- package/dist/esm/paneview/draggablePaneviewPanel.js +14 -4
- package/dist/esm/paneview/paneviewComponent.d.ts +5 -0
- package/dist/esm/paneview/paneviewComponent.js +25 -3
- package/dist/esm/paneview/paneviewPanel.d.ts +13 -4
- package/dist/esm/paneview/paneviewPanel.js +9 -13
- package/dist/esm/popoutWindow.js +3 -3
- package/dist/esm/splitview/splitviewComponent.js +3 -0
- package/package.json +1 -1
package/dist/dockview-core.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version 4.0
|
|
3
|
+
* @version 4.1.0
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -249,14 +249,6 @@
|
|
|
249
249
|
}
|
|
250
250
|
Emitter.ENABLE_TRACKING = false;
|
|
251
251
|
Emitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();
|
|
252
|
-
function addDisposableWindowListener(element, type, listener, options) {
|
|
253
|
-
element.addEventListener(type, listener, options);
|
|
254
|
-
return {
|
|
255
|
-
dispose: () => {
|
|
256
|
-
element.removeEventListener(type, listener, options);
|
|
257
|
-
},
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
252
|
function addDisposableListener(element, type, listener, options) {
|
|
261
253
|
element.addEventListener(type, listener, options);
|
|
262
254
|
return {
|
|
@@ -435,9 +427,6 @@
|
|
|
435
427
|
}
|
|
436
428
|
return false;
|
|
437
429
|
}
|
|
438
|
-
function getElementsByTagName(tag) {
|
|
439
|
-
return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);
|
|
440
|
-
}
|
|
441
430
|
function trackFocus(element) {
|
|
442
431
|
return new FocusTracker(element);
|
|
443
432
|
}
|
|
@@ -484,14 +473,8 @@
|
|
|
484
473
|
}
|
|
485
474
|
}
|
|
486
475
|
};
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
|
|
490
|
-
}
|
|
491
|
-
else {
|
|
492
|
-
this.addDisposables(addDisposableWindowListener(element, 'focus', onFocus, true));
|
|
493
|
-
this.addDisposables(addDisposableWindowListener(element, 'blur', onBlur, true));
|
|
494
|
-
}
|
|
476
|
+
this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));
|
|
477
|
+
this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));
|
|
495
478
|
}
|
|
496
479
|
refreshState() {
|
|
497
480
|
this._refreshStateHandler();
|
|
@@ -565,11 +548,30 @@
|
|
|
565
548
|
function addTestId(element, id) {
|
|
566
549
|
element.setAttribute('data-testid', id);
|
|
567
550
|
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
551
|
+
/**
|
|
552
|
+
* Should be more efficient than element.querySelectorAll("*") since there
|
|
553
|
+
* is no need to store every element in-memory using this approach
|
|
554
|
+
*/
|
|
555
|
+
function allTagsNamesInclusiveOfShadowDoms(tagNames) {
|
|
556
|
+
const iframes = [];
|
|
557
|
+
function findIframesInNode(node) {
|
|
558
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
559
|
+
if (tagNames.includes(node.tagName)) {
|
|
560
|
+
iframes.push(node);
|
|
561
|
+
}
|
|
562
|
+
if (node.shadowRoot) {
|
|
563
|
+
findIframesInNode(node.shadowRoot);
|
|
564
|
+
}
|
|
565
|
+
for (const child of node.children) {
|
|
566
|
+
findIframesInNode(child);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
findIframesInNode(document.documentElement);
|
|
571
|
+
return iframes;
|
|
572
|
+
}
|
|
573
|
+
function disableIframePointEvents(rootNode = document) {
|
|
574
|
+
const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);
|
|
573
575
|
const original = new WeakMap(); // don't hold onto HTMLElement references longer than required
|
|
574
576
|
for (const iframe of iframes) {
|
|
575
577
|
original.set(iframe, iframe.style.pointerEvents);
|
|
@@ -621,6 +623,7 @@
|
|
|
621
623
|
}
|
|
622
624
|
}
|
|
623
625
|
}
|
|
626
|
+
const DEBOUCE_DELAY = 100;
|
|
624
627
|
function isChildEntirelyVisibleWithinParent(child, parent) {
|
|
625
628
|
//
|
|
626
629
|
const childPosition = getDomNodePagePosition(child);
|
|
@@ -634,6 +637,41 @@
|
|
|
634
637
|
}
|
|
635
638
|
return true;
|
|
636
639
|
}
|
|
640
|
+
function onDidWindowMoveEnd(window) {
|
|
641
|
+
const emitter = new Emitter();
|
|
642
|
+
let previousScreenX = window.screenX;
|
|
643
|
+
let previousScreenY = window.screenY;
|
|
644
|
+
let timeout;
|
|
645
|
+
const checkMovement = () => {
|
|
646
|
+
if (window.closed) {
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
const currentScreenX = window.screenX;
|
|
650
|
+
const currentScreenY = window.screenY;
|
|
651
|
+
if (currentScreenX !== previousScreenX ||
|
|
652
|
+
currentScreenY !== previousScreenY) {
|
|
653
|
+
clearTimeout(timeout);
|
|
654
|
+
timeout = setTimeout(() => {
|
|
655
|
+
emitter.fire();
|
|
656
|
+
}, DEBOUCE_DELAY);
|
|
657
|
+
previousScreenX = currentScreenX;
|
|
658
|
+
previousScreenY = currentScreenY;
|
|
659
|
+
}
|
|
660
|
+
requestAnimationFrame(checkMovement);
|
|
661
|
+
};
|
|
662
|
+
checkMovement();
|
|
663
|
+
return emitter;
|
|
664
|
+
}
|
|
665
|
+
function onDidWindowResizeEnd(element, cb) {
|
|
666
|
+
let resizeTimeout;
|
|
667
|
+
const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {
|
|
668
|
+
clearTimeout(resizeTimeout);
|
|
669
|
+
resizeTimeout = setTimeout(() => {
|
|
670
|
+
cb();
|
|
671
|
+
}, DEBOUCE_DELAY);
|
|
672
|
+
}));
|
|
673
|
+
return disposable;
|
|
674
|
+
}
|
|
637
675
|
|
|
638
676
|
function tail(arr) {
|
|
639
677
|
if (arr.length === 0) {
|
|
@@ -3573,6 +3611,12 @@
|
|
|
3573
3611
|
get onUnhandledDragOverEvent() {
|
|
3574
3612
|
return this.component.onUnhandledDragOverEvent;
|
|
3575
3613
|
}
|
|
3614
|
+
get onDidPopoutGroupSizeChange() {
|
|
3615
|
+
return this.component.onDidPopoutGroupSizeChange;
|
|
3616
|
+
}
|
|
3617
|
+
get onDidPopoutGroupPositionChange() {
|
|
3618
|
+
return this.component.onDidPopoutGroupPositionChange;
|
|
3619
|
+
}
|
|
3576
3620
|
/**
|
|
3577
3621
|
* All panel objects.
|
|
3578
3622
|
*/
|
|
@@ -4538,26 +4582,25 @@
|
|
|
4538
4582
|
this._headerVisible = value;
|
|
4539
4583
|
this.header.style.display = value ? '' : 'none';
|
|
4540
4584
|
}
|
|
4541
|
-
constructor(
|
|
4542
|
-
super(id, component, new PaneviewPanelApiImpl(id, component));
|
|
4543
|
-
this.headerComponent = headerComponent;
|
|
4585
|
+
constructor(options) {
|
|
4586
|
+
super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));
|
|
4544
4587
|
this._onDidChangeExpansionState = new Emitter({ replay: true });
|
|
4545
4588
|
this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;
|
|
4546
4589
|
this._onDidChange = new Emitter();
|
|
4547
4590
|
this.onDidChange = this._onDidChange.event;
|
|
4548
|
-
this.headerSize = 22;
|
|
4549
4591
|
this._orthogonalSize = 0;
|
|
4550
4592
|
this._size = 0;
|
|
4551
|
-
this._minimumBodySize = 100;
|
|
4552
|
-
this._maximumBodySize = Number.POSITIVE_INFINITY;
|
|
4553
4593
|
this._isExpanded = false;
|
|
4554
|
-
this.expandedSize = 0;
|
|
4555
4594
|
this.api.pane = this; // TODO cannot use 'this' before 'super'
|
|
4556
4595
|
this.api.initialize(this);
|
|
4557
|
-
this.
|
|
4558
|
-
this.
|
|
4596
|
+
this.headerSize = options.headerSize;
|
|
4597
|
+
this.headerComponent = options.headerComponent;
|
|
4598
|
+
this._minimumBodySize = options.minimumBodySize;
|
|
4599
|
+
this._maximumBodySize = options.maximumBodySize;
|
|
4600
|
+
this._isExpanded = options.isExpanded;
|
|
4601
|
+
this._headerVisible = options.isHeaderVisible;
|
|
4559
4602
|
this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
|
|
4560
|
-
this._orientation = orientation;
|
|
4603
|
+
this._orientation = options.orientation;
|
|
4561
4604
|
this.element.classList.add('dv-pane');
|
|
4562
4605
|
this.addDisposables(this.api.onWillVisibilityChange((event) => {
|
|
4563
4606
|
const { isVisible } = event;
|
|
@@ -4624,9 +4667,6 @@
|
|
|
4624
4667
|
const [width, height] = this.orientation === exports.Orientation.HORIZONTAL
|
|
4625
4668
|
? [size, orthogonalSize]
|
|
4626
4669
|
: [orthogonalSize, size];
|
|
4627
|
-
if (this.isExpanded()) {
|
|
4628
|
-
this.expandedSize = width;
|
|
4629
|
-
}
|
|
4630
4670
|
super.layout(width, height);
|
|
4631
4671
|
}
|
|
4632
4672
|
init(parameters) {
|
|
@@ -4683,15 +4723,25 @@
|
|
|
4683
4723
|
}
|
|
4684
4724
|
|
|
4685
4725
|
class DraggablePaneviewPanel extends PaneviewPanel {
|
|
4686
|
-
constructor(
|
|
4687
|
-
super(
|
|
4688
|
-
|
|
4726
|
+
constructor(options) {
|
|
4727
|
+
super({
|
|
4728
|
+
id: options.id,
|
|
4729
|
+
component: options.component,
|
|
4730
|
+
headerComponent: options.headerComponent,
|
|
4731
|
+
orientation: options.orientation,
|
|
4732
|
+
isExpanded: options.isExpanded,
|
|
4733
|
+
isHeaderVisible: true,
|
|
4734
|
+
headerSize: options.headerSize,
|
|
4735
|
+
minimumBodySize: options.minimumBodySize,
|
|
4736
|
+
maximumBodySize: options.maximumBodySize,
|
|
4737
|
+
});
|
|
4689
4738
|
this._onDidDrop = new Emitter();
|
|
4690
4739
|
this.onDidDrop = this._onDidDrop.event;
|
|
4691
4740
|
this._onUnhandledDragOverEvent = new Emitter();
|
|
4692
4741
|
this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
|
|
4742
|
+
this.accessor = options.accessor;
|
|
4693
4743
|
this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);
|
|
4694
|
-
if (!disableDnd) {
|
|
4744
|
+
if (!options.disableDnd) {
|
|
4695
4745
|
this.initDragFeatures();
|
|
4696
4746
|
}
|
|
4697
4747
|
}
|
|
@@ -7325,7 +7375,7 @@
|
|
|
7325
7375
|
dispose: () => {
|
|
7326
7376
|
iframes.release();
|
|
7327
7377
|
},
|
|
7328
|
-
},
|
|
7378
|
+
}, addDisposableListener(window, 'pointermove', (e) => {
|
|
7329
7379
|
const containerRect = this.options.container.getBoundingClientRect();
|
|
7330
7380
|
const x = e.clientX - containerRect.left;
|
|
7331
7381
|
const y = e.clientY - containerRect.top;
|
|
@@ -7362,7 +7412,7 @@
|
|
|
7362
7412
|
bounds.right = right;
|
|
7363
7413
|
}
|
|
7364
7414
|
this.setBounds(bounds);
|
|
7365
|
-
}),
|
|
7415
|
+
}), addDisposableListener(window, 'pointerup', () => {
|
|
7366
7416
|
toggleClass(this._element, 'dv-resize-container-dragging', false);
|
|
7367
7417
|
move.dispose();
|
|
7368
7418
|
this._onDidChangeEnd.fire();
|
|
@@ -7407,7 +7457,7 @@
|
|
|
7407
7457
|
e.preventDefault();
|
|
7408
7458
|
let startPosition = null;
|
|
7409
7459
|
const iframes = disableIframePointEvents();
|
|
7410
|
-
move.value = new CompositeDisposable(
|
|
7460
|
+
move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {
|
|
7411
7461
|
const containerRect = this.options.container.getBoundingClientRect();
|
|
7412
7462
|
const overlayRect = this._element.getBoundingClientRect();
|
|
7413
7463
|
const y = e.clientY - containerRect.top;
|
|
@@ -7531,7 +7581,7 @@
|
|
|
7531
7581
|
dispose: () => {
|
|
7532
7582
|
iframes.release();
|
|
7533
7583
|
},
|
|
7534
|
-
},
|
|
7584
|
+
}, addDisposableListener(window, 'pointerup', () => {
|
|
7535
7585
|
move.dispose();
|
|
7536
7586
|
this._onDidChangeEnd.fire();
|
|
7537
7587
|
}));
|
|
@@ -7837,7 +7887,7 @@
|
|
|
7837
7887
|
this._window = { value: externalWindow, disposable };
|
|
7838
7888
|
disposable.addDisposables(exports.DockviewDisposable.from(() => {
|
|
7839
7889
|
externalWindow.close();
|
|
7840
|
-
}),
|
|
7890
|
+
}), addDisposableListener(window, 'beforeunload', () => {
|
|
7841
7891
|
/**
|
|
7842
7892
|
* before the main window closes we should close this popup too
|
|
7843
7893
|
* to be good citizens
|
|
@@ -7872,7 +7922,7 @@
|
|
|
7872
7922
|
* beforeunload must be registered after load for reasons I could not determine
|
|
7873
7923
|
* otherwise the beforeunload event will not fire when the window is closed
|
|
7874
7924
|
*/
|
|
7875
|
-
|
|
7925
|
+
addDisposableListener(externalWindow, 'beforeunload', () => {
|
|
7876
7926
|
/**
|
|
7877
7927
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
7878
7928
|
*/
|
|
@@ -7969,7 +8019,7 @@
|
|
|
7969
8019
|
wrapper.style.left = `${position.x - offsetX}px`;
|
|
7970
8020
|
this._element.appendChild(wrapper);
|
|
7971
8021
|
this._active = wrapper;
|
|
7972
|
-
this._activeDisposable.value = new CompositeDisposable(
|
|
8022
|
+
this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {
|
|
7973
8023
|
var _a;
|
|
7974
8024
|
const target = event.target;
|
|
7975
8025
|
if (!(target instanceof HTMLElement)) {
|
|
@@ -8148,6 +8198,10 @@
|
|
|
8148
8198
|
this.onDidRemovePanel = this._onDidRemovePanel.event;
|
|
8149
8199
|
this._onDidAddPanel = new Emitter();
|
|
8150
8200
|
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
8201
|
+
this._onDidPopoutGroupSizeChange = new Emitter();
|
|
8202
|
+
this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;
|
|
8203
|
+
this._onDidPopoutGroupPositionChange = new Emitter();
|
|
8204
|
+
this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;
|
|
8151
8205
|
this._onDidLayoutFromJSON = new Emitter();
|
|
8152
8206
|
this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
|
|
8153
8207
|
this._onDidActivePanelChange = new Emitter();
|
|
@@ -8177,7 +8231,7 @@
|
|
|
8177
8231
|
if (options.debug) {
|
|
8178
8232
|
this.addDisposables(new StrictEventsSequencing(this));
|
|
8179
8233
|
}
|
|
8180
|
-
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.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
8234
|
+
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.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
8181
8235
|
this.updateWatermark();
|
|
8182
8236
|
}), this.onDidAdd((event) => {
|
|
8183
8237
|
if (!this._moving) {
|
|
@@ -8198,7 +8252,7 @@
|
|
|
8198
8252
|
});
|
|
8199
8253
|
}), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
|
|
8200
8254
|
this.updateWatermark();
|
|
8201
|
-
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
|
|
8255
|
+
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {
|
|
8202
8256
|
this._bufferOnDidLayoutChange.fire();
|
|
8203
8257
|
}), exports.DockviewDisposable.from(() => {
|
|
8204
8258
|
// iterate over a copy of the array since .dispose() mutates the original array
|
|
@@ -8459,13 +8513,26 @@
|
|
|
8459
8513
|
},
|
|
8460
8514
|
},
|
|
8461
8515
|
};
|
|
8462
|
-
|
|
8516
|
+
const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);
|
|
8517
|
+
popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {
|
|
8518
|
+
this._onDidPopoutGroupSizeChange.fire({
|
|
8519
|
+
width: _window.window.innerWidth,
|
|
8520
|
+
height: _window.window.innerHeight,
|
|
8521
|
+
group,
|
|
8522
|
+
});
|
|
8523
|
+
}), _onDidWindowPositionChange.event(() => {
|
|
8524
|
+
this._onDidPopoutGroupPositionChange.fire({
|
|
8525
|
+
screenX: _window.window.screenX,
|
|
8526
|
+
screenY: _window.window.screenX,
|
|
8527
|
+
group,
|
|
8528
|
+
});
|
|
8529
|
+
}),
|
|
8463
8530
|
/**
|
|
8464
8531
|
* ResizeObserver seems slow here, I do not know why but we don't need it
|
|
8465
8532
|
* since we can reply on the window resize event as we will occupy the full
|
|
8466
8533
|
* window dimensions
|
|
8467
8534
|
*/
|
|
8468
|
-
|
|
8535
|
+
addDisposableListener(_window.window, 'resize', () => {
|
|
8469
8536
|
group.layout(_window.window.innerWidth, _window.window.innerHeight);
|
|
8470
8537
|
}), overlayRenderContainer, exports.DockviewDisposable.from(() => {
|
|
8471
8538
|
if (this.isDisposed) {
|
|
@@ -8679,7 +8746,7 @@
|
|
|
8679
8746
|
}
|
|
8680
8747
|
this.updateWatermark();
|
|
8681
8748
|
}
|
|
8682
|
-
orthogonalize(position) {
|
|
8749
|
+
orthogonalize(position, options) {
|
|
8683
8750
|
switch (position) {
|
|
8684
8751
|
case 'top':
|
|
8685
8752
|
case 'bottom':
|
|
@@ -8702,10 +8769,10 @@
|
|
|
8702
8769
|
case 'top':
|
|
8703
8770
|
case 'left':
|
|
8704
8771
|
case 'center':
|
|
8705
|
-
return this.createGroupAtLocation([0]); // insert into first position
|
|
8772
|
+
return this.createGroupAtLocation([0], undefined, options); // insert into first position
|
|
8706
8773
|
case 'bottom':
|
|
8707
8774
|
case 'right':
|
|
8708
|
-
return this.createGroupAtLocation([this.gridview.length]); // insert into last position
|
|
8775
|
+
return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position
|
|
8709
8776
|
default:
|
|
8710
8777
|
throw new Error(`unsupported position ${position}`);
|
|
8711
8778
|
}
|
|
@@ -9201,7 +9268,7 @@
|
|
|
9201
9268
|
}
|
|
9202
9269
|
}
|
|
9203
9270
|
else {
|
|
9204
|
-
const group = this.orthogonalize(directionToPosition(options.direction));
|
|
9271
|
+
const group = this.orthogonalize(directionToPosition(options.direction), options);
|
|
9205
9272
|
if (!options.skipSetActive) {
|
|
9206
9273
|
this.doSetGroupAndPanelActive(group);
|
|
9207
9274
|
}
|
|
@@ -9643,8 +9710,8 @@
|
|
|
9643
9710
|
});
|
|
9644
9711
|
return panel;
|
|
9645
9712
|
}
|
|
9646
|
-
createGroupAtLocation(location, size) {
|
|
9647
|
-
const group = this.createGroup();
|
|
9713
|
+
createGroupAtLocation(location, size, options) {
|
|
9714
|
+
const group = this.createGroup(options);
|
|
9648
9715
|
this.doAddGroup(group, location, size);
|
|
9649
9716
|
return group;
|
|
9650
9717
|
}
|
|
@@ -9978,6 +10045,9 @@
|
|
|
9978
10045
|
return this._splitview;
|
|
9979
10046
|
}
|
|
9980
10047
|
set splitview(value) {
|
|
10048
|
+
if (this._splitview) {
|
|
10049
|
+
this._splitview.dispose();
|
|
10050
|
+
}
|
|
9981
10051
|
this._splitview = value;
|
|
9982
10052
|
this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {
|
|
9983
10053
|
this._onDidLayoutChange.fire(undefined);
|
|
@@ -10281,9 +10351,23 @@
|
|
|
10281
10351
|
}
|
|
10282
10352
|
|
|
10283
10353
|
const nextLayoutId = sequentialNumberGenerator();
|
|
10354
|
+
const HEADER_SIZE = 22;
|
|
10355
|
+
const MINIMUM_BODY_SIZE = 0;
|
|
10356
|
+
const MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;
|
|
10284
10357
|
class PaneFramework extends DraggablePaneviewPanel {
|
|
10285
10358
|
constructor(options) {
|
|
10286
|
-
super(
|
|
10359
|
+
super({
|
|
10360
|
+
accessor: options.accessor,
|
|
10361
|
+
id: options.id,
|
|
10362
|
+
component: options.component,
|
|
10363
|
+
headerComponent: options.headerComponent,
|
|
10364
|
+
orientation: options.orientation,
|
|
10365
|
+
isExpanded: options.isExpanded,
|
|
10366
|
+
disableDnd: options.disableDnd,
|
|
10367
|
+
headerSize: options.headerSize,
|
|
10368
|
+
minimumBodySize: options.minimumBodySize,
|
|
10369
|
+
maximumBodySize: options.maximumBodySize,
|
|
10370
|
+
});
|
|
10287
10371
|
this.options = options;
|
|
10288
10372
|
}
|
|
10289
10373
|
getBodyComponent() {
|
|
@@ -10378,7 +10462,7 @@
|
|
|
10378
10462
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
10379
10463
|
}
|
|
10380
10464
|
addPanel(options) {
|
|
10381
|
-
var _a;
|
|
10465
|
+
var _a, _b;
|
|
10382
10466
|
const body = this.options.createComponent({
|
|
10383
10467
|
id: options.id,
|
|
10384
10468
|
name: options.component,
|
|
@@ -10403,12 +10487,15 @@
|
|
|
10403
10487
|
isExpanded: !!options.isExpanded,
|
|
10404
10488
|
disableDnd: !!this.options.disableDnd,
|
|
10405
10489
|
accessor: this,
|
|
10490
|
+
headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
|
|
10491
|
+
minimumBodySize: MINIMUM_BODY_SIZE,
|
|
10492
|
+
maximumBodySize: MAXIMUM_BODY_SIZE,
|
|
10406
10493
|
});
|
|
10407
10494
|
this.doAddPanel(view);
|
|
10408
10495
|
const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
|
|
10409
10496
|
const index = typeof options.index === 'number' ? options.index : undefined;
|
|
10410
10497
|
view.init({
|
|
10411
|
-
params: (
|
|
10498
|
+
params: (_b = options.params) !== null && _b !== void 0 ? _b : {},
|
|
10412
10499
|
minimumBodySize: options.minimumBodySize,
|
|
10413
10500
|
maximumBodySize: options.maximumBodySize,
|
|
10414
10501
|
isExpanded: options.isExpanded,
|
|
@@ -10453,6 +10540,7 @@
|
|
|
10453
10540
|
data: view.toJSON(),
|
|
10454
10541
|
minimumSize: minimum(view.minimumBodySize),
|
|
10455
10542
|
maximumSize: maximum(view.maximumBodySize),
|
|
10543
|
+
headerSize: view.headerSize,
|
|
10456
10544
|
expanded: view.isExpanded(),
|
|
10457
10545
|
};
|
|
10458
10546
|
});
|
|
@@ -10473,6 +10561,7 @@
|
|
|
10473
10561
|
descriptor: {
|
|
10474
10562
|
size,
|
|
10475
10563
|
views: views.map((view) => {
|
|
10564
|
+
var _a, _b, _c;
|
|
10476
10565
|
const data = view.data;
|
|
10477
10566
|
const body = this.options.createComponent({
|
|
10478
10567
|
id: data.id,
|
|
@@ -10499,6 +10588,9 @@
|
|
|
10499
10588
|
isExpanded: !!view.expanded,
|
|
10500
10589
|
disableDnd: !!this.options.disableDnd,
|
|
10501
10590
|
accessor: this,
|
|
10591
|
+
headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,
|
|
10592
|
+
minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,
|
|
10593
|
+
maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,
|
|
10502
10594
|
});
|
|
10503
10595
|
this.doAddPanel(panel);
|
|
10504
10596
|
queue.push(() => {
|