dockview 1.15.2 → 1.16.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/dockview/dockview.js +5 -6
- package/dist/cjs/gridview/gridview.js +5 -6
- package/dist/cjs/paneview/paneview.js +7 -9
- package/dist/cjs/splitview/splitview.js +5 -6
- package/dist/dockview.amd.js +282 -125
- package/dist/dockview.amd.js.map +1 -1
- package/dist/dockview.amd.min.js +2 -2
- package/dist/dockview.amd.min.js.map +1 -1
- package/dist/dockview.amd.min.noStyle.js +2 -2
- package/dist/dockview.amd.min.noStyle.js.map +1 -1
- package/dist/dockview.amd.noStyle.js +281 -124
- package/dist/dockview.amd.noStyle.js.map +1 -1
- package/dist/dockview.cjs.js +282 -125
- package/dist/dockview.cjs.js.map +1 -1
- package/dist/dockview.esm.js +279 -126
- package/dist/dockview.esm.js.map +1 -1
- package/dist/dockview.esm.min.js +2 -2
- package/dist/dockview.esm.min.js.map +1 -1
- package/dist/dockview.js +282 -125
- package/dist/dockview.js.map +1 -1
- package/dist/dockview.min.js +2 -2
- package/dist/dockview.min.js.map +1 -1
- package/dist/dockview.min.noStyle.js +2 -2
- package/dist/dockview.min.noStyle.js.map +1 -1
- package/dist/dockview.noStyle.js +281 -124
- package/dist/dockview.noStyle.js.map +1 -1
- package/dist/esm/dockview/dockview.js +6 -7
- package/dist/esm/gridview/gridview.js +6 -7
- package/dist/esm/paneview/paneview.js +8 -10
- package/dist/esm/splitview/splitview.js +6 -7
- package/dist/styles/dockview.css +79 -83
- package/package.json +2 -2
package/dist/dockview.noStyle.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview
|
|
3
|
-
* @version 1.
|
|
3
|
+
* @version 1.16.0
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -535,6 +535,26 @@
|
|
|
535
535
|
function addTestId(element, id) {
|
|
536
536
|
element.setAttribute('data-testid', id);
|
|
537
537
|
}
|
|
538
|
+
function disableIframePointEvents() {
|
|
539
|
+
const iframes = [
|
|
540
|
+
...getElementsByTagName('iframe'),
|
|
541
|
+
...getElementsByTagName('webview'),
|
|
542
|
+
];
|
|
543
|
+
const original = new WeakMap(); // don't hold onto HTMLElement references longer than required
|
|
544
|
+
for (const iframe of iframes) {
|
|
545
|
+
original.set(iframe, iframe.style.pointerEvents);
|
|
546
|
+
iframe.style.pointerEvents = 'none';
|
|
547
|
+
}
|
|
548
|
+
return {
|
|
549
|
+
release: () => {
|
|
550
|
+
var _a;
|
|
551
|
+
for (const iframe of iframes) {
|
|
552
|
+
iframe.style.pointerEvents = (_a = original.get(iframe)) !== null && _a !== void 0 ? _a : 'auto';
|
|
553
|
+
}
|
|
554
|
+
iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required
|
|
555
|
+
},
|
|
556
|
+
};
|
|
557
|
+
}
|
|
538
558
|
|
|
539
559
|
function tail(arr) {
|
|
540
560
|
if (arr.length === 0) {
|
|
@@ -1057,13 +1077,7 @@
|
|
|
1057
1077
|
for (const item of this.viewItems) {
|
|
1058
1078
|
item.enabled = false;
|
|
1059
1079
|
}
|
|
1060
|
-
const iframes =
|
|
1061
|
-
...getElementsByTagName('iframe'),
|
|
1062
|
-
...getElementsByTagName('webview'),
|
|
1063
|
-
];
|
|
1064
|
-
for (const iframe of iframes) {
|
|
1065
|
-
iframe.style.pointerEvents = 'none';
|
|
1066
|
-
}
|
|
1080
|
+
const iframes = disableIframePointEvents();
|
|
1067
1081
|
const start = this._orientation === exports.Orientation.HORIZONTAL
|
|
1068
1082
|
? event.clientX
|
|
1069
1083
|
: event.clientY;
|
|
@@ -1125,9 +1139,7 @@
|
|
|
1125
1139
|
for (const item of this.viewItems) {
|
|
1126
1140
|
item.enabled = true;
|
|
1127
1141
|
}
|
|
1128
|
-
|
|
1129
|
-
iframe.style.pointerEvents = 'auto';
|
|
1130
|
-
}
|
|
1142
|
+
iframes.release();
|
|
1131
1143
|
this.saveProportions();
|
|
1132
1144
|
document.removeEventListener('pointermove', onPointerMove);
|
|
1133
1145
|
document.removeEventListener('pointerup', end);
|
|
@@ -1294,29 +1306,47 @@
|
|
|
1294
1306
|
if (this.viewItems.length === 0) {
|
|
1295
1307
|
return;
|
|
1296
1308
|
}
|
|
1297
|
-
const
|
|
1298
|
-
const
|
|
1309
|
+
const visibleViewItems = this.viewItems.filter((i) => i.visible);
|
|
1310
|
+
const sashCount = Math.max(0, visibleViewItems.length - 1);
|
|
1311
|
+
const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);
|
|
1299
1312
|
let totalLeftOffset = 0;
|
|
1300
1313
|
const viewLeftOffsets = [];
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
this.sashes[i].container.style.left = `${offset}px`;
|
|
1307
|
-
this.sashes[i].container.style.top = `0px`;
|
|
1314
|
+
const sashWidth = 4; // hardcoded in css
|
|
1315
|
+
const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {
|
|
1316
|
+
const flag = viewItem.visible ? 1 : 0;
|
|
1317
|
+
if (i === 0) {
|
|
1318
|
+
arr.push(flag);
|
|
1308
1319
|
}
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
this.sashes[i].container.style.top = `${offset}px`;
|
|
1320
|
+
else {
|
|
1321
|
+
arr.push(arr[i - 1] + flag);
|
|
1312
1322
|
}
|
|
1313
|
-
|
|
1323
|
+
return arr;
|
|
1324
|
+
}, []);
|
|
1325
|
+
// calculate both view and cash positions
|
|
1314
1326
|
this.viewItems.forEach((view, i) => {
|
|
1315
|
-
|
|
1316
|
-
|
|
1327
|
+
totalLeftOffset += this.viewItems[i].size;
|
|
1328
|
+
viewLeftOffsets.push(totalLeftOffset);
|
|
1329
|
+
const size = view.visible ? view.size - marginReducedSize : 0;
|
|
1330
|
+
const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);
|
|
1331
|
+
const offset = i === 0 || visiblePanelsBeforeThisView === 0
|
|
1317
1332
|
? 0
|
|
1318
1333
|
: viewLeftOffsets[i - 1] +
|
|
1319
|
-
(
|
|
1334
|
+
(visiblePanelsBeforeThisView / sashCount) * marginReducedSize;
|
|
1335
|
+
if (i < this.viewItems.length - 1) {
|
|
1336
|
+
// calculate sash position
|
|
1337
|
+
const newSize = view.visible
|
|
1338
|
+
? offset + size - sashWidth / 2 + this.margin / 2
|
|
1339
|
+
: offset;
|
|
1340
|
+
if (this._orientation === exports.Orientation.HORIZONTAL) {
|
|
1341
|
+
this.sashes[i].container.style.left = `${newSize}px`;
|
|
1342
|
+
this.sashes[i].container.style.top = `0px`;
|
|
1343
|
+
}
|
|
1344
|
+
if (this._orientation === exports.Orientation.VERTICAL) {
|
|
1345
|
+
this.sashes[i].container.style.left = `0px`;
|
|
1346
|
+
this.sashes[i].container.style.top = `${newSize}px`;
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
// calculate view position
|
|
1320
1350
|
if (this._orientation === exports.Orientation.HORIZONTAL) {
|
|
1321
1351
|
view.container.style.width = `${size}px`;
|
|
1322
1352
|
view.container.style.left = `${offset}px`;
|
|
@@ -2660,6 +2690,9 @@
|
|
|
2660
2690
|
this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;
|
|
2661
2691
|
this.element.style.height = '100%';
|
|
2662
2692
|
this.element.style.width = '100%';
|
|
2693
|
+
if (typeof options.className === 'string') {
|
|
2694
|
+
this.element.classList.add(options.className);
|
|
2695
|
+
}
|
|
2663
2696
|
options.parentElement.appendChild(this.element);
|
|
2664
2697
|
this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);
|
|
2665
2698
|
this.gridview.locked = !!options.locked;
|
|
@@ -2863,12 +2896,6 @@
|
|
|
2863
2896
|
constructor(component) {
|
|
2864
2897
|
this.component = component;
|
|
2865
2898
|
}
|
|
2866
|
-
/**
|
|
2867
|
-
* Update configuratable options.
|
|
2868
|
-
*/
|
|
2869
|
-
updateOptions(options) {
|
|
2870
|
-
this.component.updateOptions(options);
|
|
2871
|
-
}
|
|
2872
2899
|
/**
|
|
2873
2900
|
* Removes an existing panel and optionally provide a `Sizing` method
|
|
2874
2901
|
* for the subsequent resize.
|
|
@@ -2922,6 +2949,18 @@
|
|
|
2922
2949
|
clear() {
|
|
2923
2950
|
this.component.clear();
|
|
2924
2951
|
}
|
|
2952
|
+
/**
|
|
2953
|
+
* Update configuratable options.
|
|
2954
|
+
*/
|
|
2955
|
+
updateOptions(options) {
|
|
2956
|
+
this.component.updateOptions(options);
|
|
2957
|
+
}
|
|
2958
|
+
/**
|
|
2959
|
+
* Release resources and teardown component. Do not call when using framework versions of dockview.
|
|
2960
|
+
*/
|
|
2961
|
+
dispose() {
|
|
2962
|
+
this.component.dispose();
|
|
2963
|
+
}
|
|
2925
2964
|
}
|
|
2926
2965
|
class PaneviewApi {
|
|
2927
2966
|
/**
|
|
@@ -3049,6 +3088,18 @@
|
|
|
3049
3088
|
clear() {
|
|
3050
3089
|
this.component.clear();
|
|
3051
3090
|
}
|
|
3091
|
+
/**
|
|
3092
|
+
* Update configuratable options.
|
|
3093
|
+
*/
|
|
3094
|
+
updateOptions(options) {
|
|
3095
|
+
this.component.updateOptions(options);
|
|
3096
|
+
}
|
|
3097
|
+
/**
|
|
3098
|
+
* Release resources and teardown component. Do not call when using framework versions of dockview.
|
|
3099
|
+
*/
|
|
3100
|
+
dispose() {
|
|
3101
|
+
this.component.dispose();
|
|
3102
|
+
}
|
|
3052
3103
|
}
|
|
3053
3104
|
class GridviewApi {
|
|
3054
3105
|
/**
|
|
@@ -3189,6 +3240,15 @@
|
|
|
3189
3240
|
clear() {
|
|
3190
3241
|
this.component.clear();
|
|
3191
3242
|
}
|
|
3243
|
+
updateOptions(options) {
|
|
3244
|
+
this.component.updateOptions(options);
|
|
3245
|
+
}
|
|
3246
|
+
/**
|
|
3247
|
+
* Release resources and teardown component. Do not call when using framework versions of dockview.
|
|
3248
|
+
*/
|
|
3249
|
+
dispose() {
|
|
3250
|
+
this.component.dispose();
|
|
3251
|
+
}
|
|
3192
3252
|
}
|
|
3193
3253
|
class DockviewApi {
|
|
3194
3254
|
/**
|
|
@@ -3481,6 +3541,15 @@
|
|
|
3481
3541
|
setGap(gap) {
|
|
3482
3542
|
this.component.updateOptions({ gap });
|
|
3483
3543
|
}
|
|
3544
|
+
updateOptions(options) {
|
|
3545
|
+
this.component.updateOptions(options);
|
|
3546
|
+
}
|
|
3547
|
+
/**
|
|
3548
|
+
* Release resources and teardown component. Do not call when using framework versions of dockview.
|
|
3549
|
+
*/
|
|
3550
|
+
dispose() {
|
|
3551
|
+
this.component.dispose();
|
|
3552
|
+
}
|
|
3484
3553
|
}
|
|
3485
3554
|
|
|
3486
3555
|
class DragHandler extends CompositeDisposable {
|
|
@@ -3503,20 +3572,12 @@
|
|
|
3503
3572
|
event.preventDefault();
|
|
3504
3573
|
return;
|
|
3505
3574
|
}
|
|
3506
|
-
const iframes =
|
|
3507
|
-
...getElementsByTagName('iframe'),
|
|
3508
|
-
...getElementsByTagName('webview'),
|
|
3509
|
-
];
|
|
3575
|
+
const iframes = disableIframePointEvents();
|
|
3510
3576
|
this.pointerEventsDisposable.value = {
|
|
3511
3577
|
dispose: () => {
|
|
3512
|
-
|
|
3513
|
-
iframe.style.pointerEvents = 'auto';
|
|
3514
|
-
}
|
|
3578
|
+
iframes.release();
|
|
3515
3579
|
},
|
|
3516
3580
|
};
|
|
3517
|
-
for (const iframe of iframes) {
|
|
3518
|
-
iframe.style.pointerEvents = 'none';
|
|
3519
|
-
}
|
|
3520
3581
|
this.el.classList.add('dv-dragged');
|
|
3521
3582
|
setTimeout(() => this.el.classList.remove('dv-dragged'), 0);
|
|
3522
3583
|
this.dataDisposable.value = this.getData(event);
|
|
@@ -4680,7 +4741,7 @@
|
|
|
4680
4741
|
this._element.className = 'void-container';
|
|
4681
4742
|
this._element.tabIndex = 0;
|
|
4682
4743
|
this._element.draggable = true;
|
|
4683
|
-
this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, '
|
|
4744
|
+
this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {
|
|
4684
4745
|
this.accessor.doSetGroupActive(this.group);
|
|
4685
4746
|
}));
|
|
4686
4747
|
const handler = new GroupDragHandler(this._element, accessor, group);
|
|
@@ -4995,6 +5056,7 @@
|
|
|
4995
5056
|
locked: undefined,
|
|
4996
5057
|
disableDnd: undefined,
|
|
4997
5058
|
gap: undefined,
|
|
5059
|
+
className: undefined,
|
|
4998
5060
|
};
|
|
4999
5061
|
return Object.keys(properties);
|
|
5000
5062
|
})();
|
|
@@ -5550,7 +5612,7 @@
|
|
|
5550
5612
|
group: this.groupPanel,
|
|
5551
5613
|
});
|
|
5552
5614
|
this.watermark = watermark;
|
|
5553
|
-
addDisposableListener(this.watermark.element, '
|
|
5615
|
+
addDisposableListener(this.watermark.element, 'pointerdown', () => {
|
|
5554
5616
|
if (!this.isActive) {
|
|
5555
5617
|
this.accessor.doSetGroupActive(this.groupPanel);
|
|
5556
5618
|
}
|
|
@@ -6115,7 +6177,7 @@
|
|
|
6115
6177
|
// forward the resize event to the group since if you want to resize a panel
|
|
6116
6178
|
// you are actually just resizing the panels parent which is the group
|
|
6117
6179
|
this.group.api.setSize(event);
|
|
6118
|
-
}), this.api.onDidRendererChange((
|
|
6180
|
+
}), this.api.onDidRendererChange(() => {
|
|
6119
6181
|
this.group.model.rerender(this);
|
|
6120
6182
|
}));
|
|
6121
6183
|
}
|
|
@@ -6451,17 +6513,30 @@
|
|
|
6451
6513
|
}
|
|
6452
6514
|
}
|
|
6453
6515
|
|
|
6454
|
-
const
|
|
6455
|
-
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
|
|
6516
|
+
const DEFAULT_OVERLAY_Z_INDEX = 999;
|
|
6517
|
+
class AriaLevelTracker {
|
|
6518
|
+
constructor() {
|
|
6519
|
+
this._orderedList = [];
|
|
6520
|
+
}
|
|
6521
|
+
push(element) {
|
|
6522
|
+
this._orderedList = [
|
|
6523
|
+
...this._orderedList.filter((item) => item !== element),
|
|
6524
|
+
element,
|
|
6525
|
+
];
|
|
6526
|
+
this.update();
|
|
6527
|
+
}
|
|
6528
|
+
destroy(element) {
|
|
6529
|
+
this._orderedList = this._orderedList.filter((item) => item !== element);
|
|
6530
|
+
this.update();
|
|
6531
|
+
}
|
|
6532
|
+
update() {
|
|
6533
|
+
for (let i = 0; i < this._orderedList.length; i++) {
|
|
6534
|
+
this._orderedList[i].setAttribute('aria-level', `${i}`);
|
|
6535
|
+
this._orderedList[i].style.zIndex = `${DEFAULT_OVERLAY_Z_INDEX + i * 2}`;
|
|
6459
6536
|
}
|
|
6460
|
-
toggleClass(element, 'dv-bring-to-front', true);
|
|
6461
|
-
previous = element;
|
|
6462
6537
|
}
|
|
6463
|
-
|
|
6464
|
-
|
|
6538
|
+
}
|
|
6539
|
+
const arialLevelTracker = new AriaLevelTracker();
|
|
6465
6540
|
class Overlay extends CompositeDisposable {
|
|
6466
6541
|
set minimumInViewportWidth(value) {
|
|
6467
6542
|
this.options.minimumInViewportWidth = value;
|
|
@@ -6469,6 +6544,9 @@
|
|
|
6469
6544
|
set minimumInViewportHeight(value) {
|
|
6470
6545
|
this.options.minimumInViewportHeight = value;
|
|
6471
6546
|
}
|
|
6547
|
+
get element() {
|
|
6548
|
+
return this._element;
|
|
6549
|
+
}
|
|
6472
6550
|
constructor(options) {
|
|
6473
6551
|
super();
|
|
6474
6552
|
this.options = options;
|
|
@@ -6491,6 +6569,10 @@
|
|
|
6491
6569
|
this.options.container.appendChild(this._element);
|
|
6492
6570
|
// if input bad resize within acceptable boundaries
|
|
6493
6571
|
this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));
|
|
6572
|
+
arialLevelTracker.push(this._element);
|
|
6573
|
+
}
|
|
6574
|
+
bringToFront() {
|
|
6575
|
+
arialLevelTracker.push(this._element);
|
|
6494
6576
|
}
|
|
6495
6577
|
setBounds(bounds = {}) {
|
|
6496
6578
|
if (typeof bounds.height === 'number') {
|
|
@@ -6578,18 +6660,10 @@
|
|
|
6578
6660
|
const move = new MutableDisposable();
|
|
6579
6661
|
const track = () => {
|
|
6580
6662
|
let offset = null;
|
|
6581
|
-
const iframes =
|
|
6582
|
-
...getElementsByTagName('iframe'),
|
|
6583
|
-
...getElementsByTagName('webview'),
|
|
6584
|
-
];
|
|
6585
|
-
for (const iframe of iframes) {
|
|
6586
|
-
iframe.style.pointerEvents = 'none';
|
|
6587
|
-
}
|
|
6663
|
+
const iframes = disableIframePointEvents();
|
|
6588
6664
|
move.value = new CompositeDisposable({
|
|
6589
6665
|
dispose: () => {
|
|
6590
|
-
|
|
6591
|
-
iframe.style.pointerEvents = 'auto';
|
|
6592
|
-
}
|
|
6666
|
+
iframes.release();
|
|
6593
6667
|
},
|
|
6594
6668
|
}, addDisposableWindowListener(window, 'mousemove', (e) => {
|
|
6595
6669
|
const containerRect = this.options.container.getBoundingClientRect();
|
|
@@ -6658,9 +6732,8 @@
|
|
|
6658
6732
|
track();
|
|
6659
6733
|
}
|
|
6660
6734
|
}), addDisposableListener(this.options.content, 'mousedown', () => {
|
|
6661
|
-
|
|
6735
|
+
arialLevelTracker.push(this._element);
|
|
6662
6736
|
}, true));
|
|
6663
|
-
bringElementToFront(this._element);
|
|
6664
6737
|
if (options.inDragMode) {
|
|
6665
6738
|
track();
|
|
6666
6739
|
}
|
|
@@ -6673,13 +6746,7 @@
|
|
|
6673
6746
|
this.addDisposables(move, addDisposableListener(resizeHandleElement, 'mousedown', (e) => {
|
|
6674
6747
|
e.preventDefault();
|
|
6675
6748
|
let startPosition = null;
|
|
6676
|
-
const iframes =
|
|
6677
|
-
...getElementsByTagName('iframe'),
|
|
6678
|
-
...getElementsByTagName('webview'),
|
|
6679
|
-
];
|
|
6680
|
-
for (const iframe of iframes) {
|
|
6681
|
-
iframe.style.pointerEvents = 'none';
|
|
6682
|
-
}
|
|
6749
|
+
const iframes = disableIframePointEvents();
|
|
6683
6750
|
move.value = new CompositeDisposable(addDisposableWindowListener(window, 'mousemove', (e) => {
|
|
6684
6751
|
const containerRect = this.options.container.getBoundingClientRect();
|
|
6685
6752
|
const overlayRect = this._element.getBoundingClientRect();
|
|
@@ -6802,9 +6869,7 @@
|
|
|
6802
6869
|
this.setBounds(bounds);
|
|
6803
6870
|
}), {
|
|
6804
6871
|
dispose: () => {
|
|
6805
|
-
|
|
6806
|
-
iframe.style.pointerEvents = 'auto';
|
|
6807
|
-
}
|
|
6872
|
+
iframes.release();
|
|
6808
6873
|
},
|
|
6809
6874
|
}, addDisposableWindowListener(window, 'mouseup', () => {
|
|
6810
6875
|
move.dispose();
|
|
@@ -6825,6 +6890,7 @@
|
|
|
6825
6890
|
return 0;
|
|
6826
6891
|
}
|
|
6827
6892
|
dispose() {
|
|
6893
|
+
arialLevelTracker.destroy(this._element);
|
|
6828
6894
|
this._element.remove();
|
|
6829
6895
|
super.dispose();
|
|
6830
6896
|
}
|
|
@@ -6853,9 +6919,10 @@
|
|
|
6853
6919
|
return element;
|
|
6854
6920
|
}
|
|
6855
6921
|
class OverlayRenderContainer extends CompositeDisposable {
|
|
6856
|
-
constructor(element) {
|
|
6922
|
+
constructor(element, accessor) {
|
|
6857
6923
|
super();
|
|
6858
6924
|
this.element = element;
|
|
6925
|
+
this.accessor = accessor;
|
|
6859
6926
|
this.map = {};
|
|
6860
6927
|
this._disposed = false;
|
|
6861
6928
|
this.addDisposables(exports.DockviewDisposable.from(() => {
|
|
@@ -6911,7 +6978,35 @@
|
|
|
6911
6978
|
}
|
|
6912
6979
|
focusContainer.style.display = panel.api.isVisible ? '' : 'none';
|
|
6913
6980
|
};
|
|
6914
|
-
const
|
|
6981
|
+
const observerDisposable = new MutableDisposable();
|
|
6982
|
+
const correctLayerPosition = () => {
|
|
6983
|
+
if (panel.api.location.type === 'floating') {
|
|
6984
|
+
queueMicrotask(() => {
|
|
6985
|
+
const floatingGroup = this.accessor.floatingGroups.find((group) => group.group === panel.api.group);
|
|
6986
|
+
if (!floatingGroup) {
|
|
6987
|
+
return;
|
|
6988
|
+
}
|
|
6989
|
+
const element = floatingGroup.overlay.element;
|
|
6990
|
+
const update = () => {
|
|
6991
|
+
const level = Number(element.getAttribute('aria-level'));
|
|
6992
|
+
focusContainer.style.zIndex = `${DEFAULT_OVERLAY_Z_INDEX + level * 2 + 1}`;
|
|
6993
|
+
};
|
|
6994
|
+
const observer = new MutationObserver(() => {
|
|
6995
|
+
update();
|
|
6996
|
+
});
|
|
6997
|
+
observerDisposable.value = exports.DockviewDisposable.from(() => observer.disconnect());
|
|
6998
|
+
observer.observe(element, {
|
|
6999
|
+
attributeFilter: ['aria-level'],
|
|
7000
|
+
attributes: true,
|
|
7001
|
+
});
|
|
7002
|
+
update();
|
|
7003
|
+
});
|
|
7004
|
+
}
|
|
7005
|
+
else {
|
|
7006
|
+
focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here
|
|
7007
|
+
}
|
|
7008
|
+
};
|
|
7009
|
+
const disposable = new CompositeDisposable(observerDisposable,
|
|
6915
7010
|
/**
|
|
6916
7011
|
* since container is positioned absoutely we must explicitly forward
|
|
6917
7012
|
* the dnd events for the expect behaviours to continue to occur in terms of dnd
|
|
@@ -6935,7 +7030,7 @@
|
|
|
6935
7030
|
onDragOver: (e) => {
|
|
6936
7031
|
referenceContainer.dropTarget.dnd.onDragOver(e);
|
|
6937
7032
|
},
|
|
6938
|
-
}), panel.api.onDidVisibilityChange((
|
|
7033
|
+
}), panel.api.onDidVisibilityChange(() => {
|
|
6939
7034
|
/**
|
|
6940
7035
|
* Control the visibility of the content, however even when not visible (display: none)
|
|
6941
7036
|
* the content is still maintained within the DOM hence DOM specific attributes
|
|
@@ -6947,6 +7042,8 @@
|
|
|
6947
7042
|
return;
|
|
6948
7043
|
}
|
|
6949
7044
|
resize();
|
|
7045
|
+
}), panel.api.onDidLocationChange(() => {
|
|
7046
|
+
correctLayerPosition();
|
|
6950
7047
|
}));
|
|
6951
7048
|
this.map[panel.api.id].destroy = exports.DockviewDisposable.from(() => {
|
|
6952
7049
|
var _a;
|
|
@@ -6955,6 +7052,7 @@
|
|
|
6955
7052
|
}
|
|
6956
7053
|
(_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);
|
|
6957
7054
|
});
|
|
7055
|
+
correctLayerPosition();
|
|
6958
7056
|
queueMicrotask(() => {
|
|
6959
7057
|
if (this.isDisposed) {
|
|
6960
7058
|
return;
|
|
@@ -7180,7 +7278,10 @@
|
|
|
7180
7278
|
get gap() {
|
|
7181
7279
|
return this.gridview.margin;
|
|
7182
7280
|
}
|
|
7183
|
-
|
|
7281
|
+
get floatingGroups() {
|
|
7282
|
+
return this._floatingGroups;
|
|
7283
|
+
}
|
|
7284
|
+
constructor(parentElement, options) {
|
|
7184
7285
|
var _a;
|
|
7185
7286
|
super({
|
|
7186
7287
|
proportionalLayout: true,
|
|
@@ -7188,10 +7289,11 @@
|
|
|
7188
7289
|
styles: options.hideBorders
|
|
7189
7290
|
? { separatorBorder: 'transparent' }
|
|
7190
7291
|
: undefined,
|
|
7191
|
-
parentElement:
|
|
7292
|
+
parentElement: parentElement,
|
|
7192
7293
|
disableAutoResizing: options.disableAutoResizing,
|
|
7193
7294
|
locked: options.locked,
|
|
7194
7295
|
margin: options.gap,
|
|
7296
|
+
className: options.className,
|
|
7195
7297
|
});
|
|
7196
7298
|
this.nextGroupId = sequentialNumberGenerator();
|
|
7197
7299
|
this._deserializer = new DefaultDockviewDeserialzier(this);
|
|
@@ -7227,10 +7329,10 @@
|
|
|
7227
7329
|
this._onDidActiveGroupChange = new Emitter();
|
|
7228
7330
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
7229
7331
|
this._moving = false;
|
|
7230
|
-
const gready = document.createElement('div');
|
|
7231
|
-
gready.className = 'dv-overlay-render-container';
|
|
7232
|
-
this.gridview.element.appendChild(gready);
|
|
7233
|
-
this.overlayRenderContainer = new OverlayRenderContainer(
|
|
7332
|
+
// const gready = document.createElement('div');
|
|
7333
|
+
// gready.className = 'dv-overlay-render-container';
|
|
7334
|
+
// this.gridview.element.appendChild(gready);
|
|
7335
|
+
this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);
|
|
7234
7336
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
7235
7337
|
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
7236
7338
|
this.addDisposables(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.onDidViewVisibilityChangeMicroTaskQueue(() => {
|
|
@@ -7396,7 +7498,7 @@
|
|
|
7396
7498
|
}
|
|
7397
7499
|
const gready = document.createElement('div');
|
|
7398
7500
|
gready.className = 'dv-overlay-render-container';
|
|
7399
|
-
const overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
7501
|
+
const overlayRenderContainer = new OverlayRenderContainer(gready, this);
|
|
7400
7502
|
const referenceGroup = itemToPopout instanceof DockviewPanel
|
|
7401
7503
|
? itemToPopout.group
|
|
7402
7504
|
: itemToPopout;
|
|
@@ -7545,7 +7647,6 @@
|
|
|
7545
7647
|
}
|
|
7546
7648
|
}
|
|
7547
7649
|
}
|
|
7548
|
-
group.model.location = { type: 'floating' };
|
|
7549
7650
|
function getAnchoredBox() {
|
|
7550
7651
|
if (options === null || options === void 0 ? void 0 : options.position) {
|
|
7551
7652
|
const result = {};
|
|
@@ -7612,10 +7713,14 @@
|
|
|
7612
7713
|
: false,
|
|
7613
7714
|
});
|
|
7614
7715
|
const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);
|
|
7615
|
-
const disposable =
|
|
7716
|
+
const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {
|
|
7717
|
+
if (event.isActive) {
|
|
7718
|
+
overlay.bringToFront();
|
|
7719
|
+
}
|
|
7720
|
+
}), watchElementResize(group.element, (entry) => {
|
|
7616
7721
|
const { width, height } = entry.contentRect;
|
|
7617
7722
|
group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
|
|
7618
|
-
});
|
|
7723
|
+
}));
|
|
7619
7724
|
floatingGroupPanel.addDisposables(overlay.onDidChange(() => {
|
|
7620
7725
|
// this is either a resize or a move
|
|
7621
7726
|
// to inform the panels .layout(...) the group with it's current size
|
|
@@ -7631,12 +7736,13 @@
|
|
|
7631
7736
|
}), {
|
|
7632
7737
|
dispose: () => {
|
|
7633
7738
|
disposable.dispose();
|
|
7634
|
-
group.model.location = { type: 'grid' };
|
|
7635
7739
|
remove(this._floatingGroups, floatingGroupPanel);
|
|
7740
|
+
group.model.location = { type: 'grid' };
|
|
7636
7741
|
this.updateWatermark();
|
|
7637
7742
|
},
|
|
7638
7743
|
});
|
|
7639
7744
|
this._floatingGroups.push(floatingGroupPanel);
|
|
7745
|
+
group.model.location = { type: 'floating' };
|
|
7640
7746
|
if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
|
|
7641
7747
|
this.doSetGroupAndPanelActive(group);
|
|
7642
7748
|
}
|
|
@@ -7876,6 +7982,8 @@
|
|
|
7876
7982
|
const group = createGroupFromSerializedState(data);
|
|
7877
7983
|
this.addFloatingGroup(group, {
|
|
7878
7984
|
position: position,
|
|
7985
|
+
width: position.width,
|
|
7986
|
+
height: position.height,
|
|
7879
7987
|
skipRemoveGroup: true,
|
|
7880
7988
|
inDragMode: false,
|
|
7881
7989
|
});
|
|
@@ -8216,6 +8324,7 @@
|
|
|
8216
8324
|
this._groups.delete(group.id);
|
|
8217
8325
|
this._onDidRemoveGroup.fire(group);
|
|
8218
8326
|
}
|
|
8327
|
+
remove(this._popoutGroups, selectedGroup);
|
|
8219
8328
|
const removedGroup = selectedGroup.disposable.dispose();
|
|
8220
8329
|
if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
|
|
8221
8330
|
this.doAddGroup(removedGroup, [0]);
|
|
@@ -8327,6 +8436,31 @@
|
|
|
8327
8436
|
return;
|
|
8328
8437
|
}
|
|
8329
8438
|
}
|
|
8439
|
+
if (sourceGroup.api.location.type === 'popout') {
|
|
8440
|
+
/**
|
|
8441
|
+
* the source group is a popout group with a single panel
|
|
8442
|
+
*
|
|
8443
|
+
* 1. remove the panel from the group without triggering any events
|
|
8444
|
+
* 2. remove the popout group
|
|
8445
|
+
* 3. create a new group at the requested location and add that panel
|
|
8446
|
+
*/
|
|
8447
|
+
const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);
|
|
8448
|
+
const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {
|
|
8449
|
+
skipSetActive: true,
|
|
8450
|
+
skipSetActiveGroup: true,
|
|
8451
|
+
}));
|
|
8452
|
+
this.doRemoveGroup(sourceGroup, { skipActive: true });
|
|
8453
|
+
const newGroup = this.createGroupAtLocation(targetLocation);
|
|
8454
|
+
this.movingLock(() => newGroup.model.openPanel(removedPanel, {
|
|
8455
|
+
skipSetActive: true,
|
|
8456
|
+
}));
|
|
8457
|
+
this.doSetGroupAndPanelActive(newGroup);
|
|
8458
|
+
this._onDidMovePanel.fire({
|
|
8459
|
+
panel: this.getGroupPanel(sourceItemId),
|
|
8460
|
+
from: sourceGroup,
|
|
8461
|
+
});
|
|
8462
|
+
return;
|
|
8463
|
+
}
|
|
8330
8464
|
// source group will become empty so delete the group
|
|
8331
8465
|
const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
|
|
8332
8466
|
skipActive: true,
|
|
@@ -8558,13 +8692,14 @@
|
|
|
8558
8692
|
set deserializer(value) {
|
|
8559
8693
|
this._deserializer = value;
|
|
8560
8694
|
}
|
|
8561
|
-
constructor(options) {
|
|
8695
|
+
constructor(parentElement, options) {
|
|
8562
8696
|
super({
|
|
8563
|
-
parentElement:
|
|
8697
|
+
parentElement: parentElement,
|
|
8564
8698
|
proportionalLayout: options.proportionalLayout,
|
|
8565
8699
|
orientation: options.orientation,
|
|
8566
8700
|
styles: options.styles,
|
|
8567
8701
|
disableAutoResizing: options.disableAutoResizing,
|
|
8702
|
+
className: options.className,
|
|
8568
8703
|
});
|
|
8569
8704
|
this._onDidLayoutfromJSON = new Emitter();
|
|
8570
8705
|
this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
|
|
@@ -8856,8 +8991,8 @@
|
|
|
8856
8991
|
? this.splitview.size
|
|
8857
8992
|
: this.splitview.orthogonalSize;
|
|
8858
8993
|
}
|
|
8859
|
-
constructor(options) {
|
|
8860
|
-
super(
|
|
8994
|
+
constructor(parentElement, options) {
|
|
8995
|
+
super(parentElement, options.disableAutoResizing);
|
|
8861
8996
|
this._splitviewChangeDisposable = new MutableDisposable();
|
|
8862
8997
|
this._panels = new Map();
|
|
8863
8998
|
this._onDidLayoutfromJSON = new Emitter();
|
|
@@ -8868,6 +9003,9 @@
|
|
|
8868
9003
|
this.onDidRemoveView = this._onDidRemoveView.event;
|
|
8869
9004
|
this._onDidLayoutChange = new Emitter();
|
|
8870
9005
|
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
9006
|
+
if (typeof options.className === 'string') {
|
|
9007
|
+
this.element.classList.add(options.className);
|
|
9008
|
+
}
|
|
8871
9009
|
this._options = options;
|
|
8872
9010
|
if (!options.components) {
|
|
8873
9011
|
options.components = {};
|
|
@@ -9180,8 +9318,8 @@
|
|
|
9180
9318
|
get options() {
|
|
9181
9319
|
return this._options;
|
|
9182
9320
|
}
|
|
9183
|
-
constructor(options) {
|
|
9184
|
-
super(
|
|
9321
|
+
constructor(parentElement, options) {
|
|
9322
|
+
super(parentElement, options.disableAutoResizing);
|
|
9185
9323
|
this._id = nextLayoutId.next();
|
|
9186
9324
|
this._disposable = new MutableDisposable();
|
|
9187
9325
|
this._viewDisposables = new Map();
|
|
@@ -9195,6 +9333,9 @@
|
|
|
9195
9333
|
this.onDidAddView = this._onDidAddView.event;
|
|
9196
9334
|
this._onDidRemoveView = new Emitter();
|
|
9197
9335
|
this.onDidRemoveView = this._onDidRemoveView.event;
|
|
9336
|
+
if (typeof options.className === 'string') {
|
|
9337
|
+
this.element.classList.add(options.className);
|
|
9338
|
+
}
|
|
9198
9339
|
this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);
|
|
9199
9340
|
this._options = options;
|
|
9200
9341
|
if (!options.components) {
|
|
@@ -9510,6 +9651,23 @@
|
|
|
9510
9651
|
}
|
|
9511
9652
|
}
|
|
9512
9653
|
|
|
9654
|
+
function createDockview(element, options) {
|
|
9655
|
+
const component = new DockviewComponent(element, options);
|
|
9656
|
+
return component.api;
|
|
9657
|
+
}
|
|
9658
|
+
function createSplitview(element, options) {
|
|
9659
|
+
const component = new SplitviewComponent(element, options);
|
|
9660
|
+
return new SplitviewApi(component);
|
|
9661
|
+
}
|
|
9662
|
+
function createGridview(element, options) {
|
|
9663
|
+
const component = new GridviewComponent(element, options);
|
|
9664
|
+
return new GridviewApi(component);
|
|
9665
|
+
}
|
|
9666
|
+
function createPaneview(element, options) {
|
|
9667
|
+
const component = new PaneviewComponent(element, options);
|
|
9668
|
+
return new PaneviewApi(component);
|
|
9669
|
+
}
|
|
9670
|
+
|
|
9513
9671
|
/**
|
|
9514
9672
|
* This component is intended to interface between vanilla-js and React hence we need to be
|
|
9515
9673
|
* creative in how we update props.
|
|
@@ -9889,20 +10047,19 @@
|
|
|
9889
10047
|
});
|
|
9890
10048
|
}
|
|
9891
10049
|
: undefined,
|
|
9892
|
-
parentElement: domRef.current,
|
|
9893
10050
|
defaultTabComponent: props.defaultTabComponent
|
|
9894
10051
|
? DEFAULT_REACT_TAB
|
|
9895
10052
|
: undefined,
|
|
9896
10053
|
};
|
|
9897
|
-
const
|
|
10054
|
+
const api = createDockview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));
|
|
9898
10055
|
const { clientWidth, clientHeight } = domRef.current;
|
|
9899
|
-
|
|
10056
|
+
api.layout(clientWidth, clientHeight);
|
|
9900
10057
|
if (props.onReady) {
|
|
9901
|
-
props.onReady({ api
|
|
10058
|
+
props.onReady({ api });
|
|
9902
10059
|
}
|
|
9903
|
-
dockviewRef.current =
|
|
10060
|
+
dockviewRef.current = api;
|
|
9904
10061
|
return () => {
|
|
9905
|
-
|
|
10062
|
+
api.dispose();
|
|
9906
10063
|
};
|
|
9907
10064
|
}, []);
|
|
9908
10065
|
React.useEffect(() => {
|
|
@@ -10128,8 +10285,7 @@
|
|
|
10128
10285
|
React.useImperativeHandle(ref, () => domRef.current, []);
|
|
10129
10286
|
React.useEffect(() => {
|
|
10130
10287
|
var _a;
|
|
10131
|
-
const
|
|
10132
|
-
parentElement: domRef.current,
|
|
10288
|
+
const api = createSplitview(domRef.current, {
|
|
10133
10289
|
disableAutoResizing: props.disableAutoResizing,
|
|
10134
10290
|
orientation: (_a = props.orientation) !== null && _a !== void 0 ? _a : exports.Orientation.HORIZONTAL,
|
|
10135
10291
|
frameworkComponents: props.components,
|
|
@@ -10148,13 +10304,13 @@
|
|
|
10148
10304
|
: undefined,
|
|
10149
10305
|
});
|
|
10150
10306
|
const { clientWidth, clientHeight } = domRef.current;
|
|
10151
|
-
|
|
10307
|
+
api.layout(clientWidth, clientHeight);
|
|
10152
10308
|
if (props.onReady) {
|
|
10153
|
-
props.onReady({ api
|
|
10309
|
+
props.onReady({ api });
|
|
10154
10310
|
}
|
|
10155
|
-
splitviewRef.current =
|
|
10311
|
+
splitviewRef.current = api;
|
|
10156
10312
|
return () => {
|
|
10157
|
-
|
|
10313
|
+
api.dispose();
|
|
10158
10314
|
};
|
|
10159
10315
|
}, []);
|
|
10160
10316
|
React.useEffect(() => {
|
|
@@ -10199,8 +10355,7 @@
|
|
|
10199
10355
|
// noop
|
|
10200
10356
|
};
|
|
10201
10357
|
}
|
|
10202
|
-
const
|
|
10203
|
-
parentElement: domRef.current,
|
|
10358
|
+
const api = createGridview(domRef.current, {
|
|
10204
10359
|
disableAutoResizing: props.disableAutoResizing,
|
|
10205
10360
|
proportionalLayout: typeof props.proportionalLayout === 'boolean'
|
|
10206
10361
|
? props.proportionalLayout
|
|
@@ -10219,13 +10374,13 @@
|
|
|
10219
10374
|
: undefined,
|
|
10220
10375
|
});
|
|
10221
10376
|
const { clientWidth, clientHeight } = domRef.current;
|
|
10222
|
-
|
|
10377
|
+
api.layout(clientWidth, clientHeight);
|
|
10223
10378
|
if (props.onReady) {
|
|
10224
|
-
props.onReady({ api
|
|
10379
|
+
props.onReady({ api });
|
|
10225
10380
|
}
|
|
10226
|
-
gridviewRef.current =
|
|
10381
|
+
gridviewRef.current = api;
|
|
10227
10382
|
return () => {
|
|
10228
|
-
|
|
10383
|
+
api.dispose();
|
|
10229
10384
|
};
|
|
10230
10385
|
}, []);
|
|
10231
10386
|
React.useEffect(() => {
|
|
@@ -10284,8 +10439,7 @@
|
|
|
10284
10439
|
const createComponent = (id, _componentId, component) => new PanePanelSection(id, component, {
|
|
10285
10440
|
addPortal,
|
|
10286
10441
|
});
|
|
10287
|
-
const
|
|
10288
|
-
parentElement: domRef.current,
|
|
10442
|
+
const api = createPaneview(domRef.current, {
|
|
10289
10443
|
disableAutoResizing: props.disableAutoResizing,
|
|
10290
10444
|
frameworkComponents: props.components,
|
|
10291
10445
|
components: {},
|
|
@@ -10302,15 +10456,14 @@
|
|
|
10302
10456
|
},
|
|
10303
10457
|
showDndOverlay: props.showDndOverlay,
|
|
10304
10458
|
});
|
|
10305
|
-
const api = new PaneviewApi(paneview);
|
|
10306
10459
|
const { clientWidth, clientHeight } = domRef.current;
|
|
10307
|
-
|
|
10460
|
+
api.layout(clientWidth, clientHeight);
|
|
10308
10461
|
if (props.onReady) {
|
|
10309
10462
|
props.onReady({ api });
|
|
10310
10463
|
}
|
|
10311
|
-
paneviewRef.current =
|
|
10464
|
+
paneviewRef.current = api;
|
|
10312
10465
|
return () => {
|
|
10313
|
-
|
|
10466
|
+
api.dispose();
|
|
10314
10467
|
};
|
|
10315
10468
|
}, []);
|
|
10316
10469
|
React.useEffect(() => {
|
|
@@ -10335,10 +10488,10 @@
|
|
|
10335
10488
|
//
|
|
10336
10489
|
};
|
|
10337
10490
|
}
|
|
10338
|
-
const
|
|
10339
|
-
const disposable =
|
|
10491
|
+
const api = paneviewRef.current;
|
|
10492
|
+
const disposable = api.onDidDrop((event) => {
|
|
10340
10493
|
if (props.onDidDrop) {
|
|
10341
|
-
props.onDidDrop(Object.assign(Object.assign({}, event), { api
|
|
10494
|
+
props.onDidDrop(Object.assign(Object.assign({}, event), { api }));
|
|
10342
10495
|
}
|
|
10343
10496
|
});
|
|
10344
10497
|
return () => {
|
|
@@ -10400,6 +10553,10 @@
|
|
|
10400
10553
|
exports.Tab = Tab;
|
|
10401
10554
|
exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
|
|
10402
10555
|
exports.createComponent = createComponent;
|
|
10556
|
+
exports.createDockview = createDockview;
|
|
10557
|
+
exports.createGridview = createGridview;
|
|
10558
|
+
exports.createPaneview = createPaneview;
|
|
10559
|
+
exports.createSplitview = createSplitview;
|
|
10403
10560
|
exports.directionToPosition = directionToPosition;
|
|
10404
10561
|
exports.getDirectionOrientation = getDirectionOrientation;
|
|
10405
10562
|
exports.getGridLocation = getGridLocation;
|