dockview-core 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/api/component.api.d.ts +30 -6
- package/dist/cjs/api/component.api.js +42 -6
- package/dist/cjs/api/dockviewPanelApi.d.ts +1 -1
- package/dist/cjs/api/entryPoints.d.ts +9 -0
- package/dist/cjs/api/entryPoints.js +28 -0
- package/dist/cjs/dnd/abstractDragHandler.js +2 -65
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +4 -2
- package/dist/cjs/dockview/dockviewComponent.js +61 -17
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +1 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts +1 -1
- package/dist/cjs/dockview/dockviewPanel.js +1 -1
- package/dist/cjs/dockview/options.d.ts +2 -2
- package/dist/cjs/dockview/options.js +1 -0
- package/dist/cjs/dockview/types.d.ts +1 -1
- package/dist/cjs/dom.d.ts +3 -0
- package/dist/cjs/dom.js +66 -1
- package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -2
- package/dist/cjs/gridview/baseComponentGridview.js +3 -0
- package/dist/cjs/gridview/gridviewComponent.d.ts +1 -1
- package/dist/cjs/gridview/gridviewComponent.js +3 -2
- package/dist/cjs/gridview/options.d.ts +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/{dnd → overlay}/overlay.d.ts +3 -0
- package/dist/cjs/{dnd → overlay}/overlay.js +41 -82
- package/dist/cjs/{overlayRenderContainer.d.ts → overlay/overlayRenderContainer.d.ts} +7 -5
- package/dist/cjs/{overlayRenderContainer.js → overlay/overlayRenderContainer.js} +41 -6
- package/dist/cjs/paneview/options.d.ts +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +1 -1
- package/dist/cjs/paneview/paneviewComponent.js +5 -2
- package/dist/cjs/splitview/options.d.ts +1 -1
- package/dist/cjs/splitview/splitview.js +64 -71
- package/dist/cjs/splitview/splitviewComponent.d.ts +1 -1
- package/dist/cjs/splitview/splitviewComponent.js +5 -2
- package/dist/dockview-core.amd.js +260 -98
- 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 +259 -97
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +260 -98
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +257 -99
- 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 +260 -98
- 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 +259 -97
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +30 -6
- package/dist/esm/api/component.api.js +42 -6
- package/dist/esm/api/dockviewPanelApi.d.ts +1 -1
- package/dist/esm/api/entryPoints.d.ts +9 -0
- package/dist/esm/api/entryPoints.js +21 -0
- package/dist/esm/dnd/abstractDragHandler.js +3 -11
- package/dist/esm/dockview/components/panel/content.js +1 -1
- package/dist/esm/dockview/components/titlebar/voidContainer.js +1 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +4 -2
- package/dist/esm/dockview/dockviewComponent.js +49 -13
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.js +1 -1
- package/dist/esm/dockview/dockviewPanel.d.ts +1 -1
- package/dist/esm/dockview/dockviewPanel.js +1 -1
- package/dist/esm/dockview/options.d.ts +2 -2
- package/dist/esm/dockview/options.js +1 -0
- package/dist/esm/dockview/types.d.ts +1 -1
- package/dist/esm/dom.d.ts +3 -0
- package/dist/esm/dom.js +20 -0
- package/dist/esm/gridview/baseComponentGridview.d.ts +3 -2
- package/dist/esm/gridview/baseComponentGridview.js +3 -0
- package/dist/esm/gridview/gridviewComponent.d.ts +1 -1
- package/dist/esm/gridview/gridviewComponent.js +3 -2
- package/dist/esm/gridview/options.d.ts +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/{dnd → overlay}/overlay.d.ts +3 -0
- package/dist/esm/{dnd → overlay}/overlay.js +36 -32
- package/dist/esm/{overlayRenderContainer.d.ts → overlay/overlayRenderContainer.d.ts} +7 -5
- package/dist/esm/{overlayRenderContainer.js → overlay/overlayRenderContainer.js} +39 -6
- package/dist/esm/paneview/options.d.ts +1 -1
- package/dist/esm/paneview/paneviewComponent.d.ts +1 -1
- package/dist/esm/paneview/paneviewComponent.js +5 -2
- package/dist/esm/splitview/options.d.ts +1 -1
- package/dist/esm/splitview/splitview.js +37 -27
- package/dist/esm/splitview/splitviewComponent.d.ts +1 -1
- package/dist/esm/splitview/splitviewComponent.js +5 -2
- package/dist/styles/dockview.css +79 -83
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
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;
|
|
@@ -7203,7 +7301,10 @@
|
|
|
7203
7301
|
get gap() {
|
|
7204
7302
|
return this.gridview.margin;
|
|
7205
7303
|
}
|
|
7206
|
-
|
|
7304
|
+
get floatingGroups() {
|
|
7305
|
+
return this._floatingGroups;
|
|
7306
|
+
}
|
|
7307
|
+
constructor(parentElement, options) {
|
|
7207
7308
|
var _a;
|
|
7208
7309
|
super({
|
|
7209
7310
|
proportionalLayout: true,
|
|
@@ -7211,10 +7312,11 @@
|
|
|
7211
7312
|
styles: options.hideBorders
|
|
7212
7313
|
? { separatorBorder: 'transparent' }
|
|
7213
7314
|
: undefined,
|
|
7214
|
-
parentElement:
|
|
7315
|
+
parentElement: parentElement,
|
|
7215
7316
|
disableAutoResizing: options.disableAutoResizing,
|
|
7216
7317
|
locked: options.locked,
|
|
7217
7318
|
margin: options.gap,
|
|
7319
|
+
className: options.className,
|
|
7218
7320
|
});
|
|
7219
7321
|
this.nextGroupId = sequentialNumberGenerator();
|
|
7220
7322
|
this._deserializer = new DefaultDockviewDeserialzier(this);
|
|
@@ -7250,10 +7352,10 @@
|
|
|
7250
7352
|
this._onDidActiveGroupChange = new Emitter();
|
|
7251
7353
|
this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
|
|
7252
7354
|
this._moving = false;
|
|
7253
|
-
const gready = document.createElement('div');
|
|
7254
|
-
gready.className = 'dv-overlay-render-container';
|
|
7255
|
-
this.gridview.element.appendChild(gready);
|
|
7256
|
-
this.overlayRenderContainer = new OverlayRenderContainer(
|
|
7355
|
+
// const gready = document.createElement('div');
|
|
7356
|
+
// gready.className = 'dv-overlay-render-container';
|
|
7357
|
+
// this.gridview.element.appendChild(gready);
|
|
7358
|
+
this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);
|
|
7257
7359
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
7258
7360
|
toggleClass(this.element, 'dv-debug', !!options.debug);
|
|
7259
7361
|
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(() => {
|
|
@@ -7419,7 +7521,7 @@
|
|
|
7419
7521
|
}
|
|
7420
7522
|
const gready = document.createElement('div');
|
|
7421
7523
|
gready.className = 'dv-overlay-render-container';
|
|
7422
|
-
const overlayRenderContainer = new OverlayRenderContainer(gready);
|
|
7524
|
+
const overlayRenderContainer = new OverlayRenderContainer(gready, this);
|
|
7423
7525
|
const referenceGroup = itemToPopout instanceof DockviewPanel
|
|
7424
7526
|
? itemToPopout.group
|
|
7425
7527
|
: itemToPopout;
|
|
@@ -7568,7 +7670,6 @@
|
|
|
7568
7670
|
}
|
|
7569
7671
|
}
|
|
7570
7672
|
}
|
|
7571
|
-
group.model.location = { type: 'floating' };
|
|
7572
7673
|
function getAnchoredBox() {
|
|
7573
7674
|
if (options === null || options === void 0 ? void 0 : options.position) {
|
|
7574
7675
|
const result = {};
|
|
@@ -7635,10 +7736,14 @@
|
|
|
7635
7736
|
: false,
|
|
7636
7737
|
});
|
|
7637
7738
|
const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);
|
|
7638
|
-
const disposable =
|
|
7739
|
+
const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {
|
|
7740
|
+
if (event.isActive) {
|
|
7741
|
+
overlay.bringToFront();
|
|
7742
|
+
}
|
|
7743
|
+
}), watchElementResize(group.element, (entry) => {
|
|
7639
7744
|
const { width, height } = entry.contentRect;
|
|
7640
7745
|
group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
|
|
7641
|
-
});
|
|
7746
|
+
}));
|
|
7642
7747
|
floatingGroupPanel.addDisposables(overlay.onDidChange(() => {
|
|
7643
7748
|
// this is either a resize or a move
|
|
7644
7749
|
// to inform the panels .layout(...) the group with it's current size
|
|
@@ -7654,12 +7759,13 @@
|
|
|
7654
7759
|
}), {
|
|
7655
7760
|
dispose: () => {
|
|
7656
7761
|
disposable.dispose();
|
|
7657
|
-
group.model.location = { type: 'grid' };
|
|
7658
7762
|
remove(this._floatingGroups, floatingGroupPanel);
|
|
7763
|
+
group.model.location = { type: 'grid' };
|
|
7659
7764
|
this.updateWatermark();
|
|
7660
7765
|
},
|
|
7661
7766
|
});
|
|
7662
7767
|
this._floatingGroups.push(floatingGroupPanel);
|
|
7768
|
+
group.model.location = { type: 'floating' };
|
|
7663
7769
|
if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {
|
|
7664
7770
|
this.doSetGroupAndPanelActive(group);
|
|
7665
7771
|
}
|
|
@@ -7899,6 +8005,8 @@
|
|
|
7899
8005
|
const group = createGroupFromSerializedState(data);
|
|
7900
8006
|
this.addFloatingGroup(group, {
|
|
7901
8007
|
position: position,
|
|
8008
|
+
width: position.width,
|
|
8009
|
+
height: position.height,
|
|
7902
8010
|
skipRemoveGroup: true,
|
|
7903
8011
|
inDragMode: false,
|
|
7904
8012
|
});
|
|
@@ -8239,6 +8347,7 @@
|
|
|
8239
8347
|
this._groups.delete(group.id);
|
|
8240
8348
|
this._onDidRemoveGroup.fire(group);
|
|
8241
8349
|
}
|
|
8350
|
+
remove(this._popoutGroups, selectedGroup);
|
|
8242
8351
|
const removedGroup = selectedGroup.disposable.dispose();
|
|
8243
8352
|
if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {
|
|
8244
8353
|
this.doAddGroup(removedGroup, [0]);
|
|
@@ -8350,6 +8459,31 @@
|
|
|
8350
8459
|
return;
|
|
8351
8460
|
}
|
|
8352
8461
|
}
|
|
8462
|
+
if (sourceGroup.api.location.type === 'popout') {
|
|
8463
|
+
/**
|
|
8464
|
+
* the source group is a popout group with a single panel
|
|
8465
|
+
*
|
|
8466
|
+
* 1. remove the panel from the group without triggering any events
|
|
8467
|
+
* 2. remove the popout group
|
|
8468
|
+
* 3. create a new group at the requested location and add that panel
|
|
8469
|
+
*/
|
|
8470
|
+
const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);
|
|
8471
|
+
const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {
|
|
8472
|
+
skipSetActive: true,
|
|
8473
|
+
skipSetActiveGroup: true,
|
|
8474
|
+
}));
|
|
8475
|
+
this.doRemoveGroup(sourceGroup, { skipActive: true });
|
|
8476
|
+
const newGroup = this.createGroupAtLocation(targetLocation);
|
|
8477
|
+
this.movingLock(() => newGroup.model.openPanel(removedPanel, {
|
|
8478
|
+
skipSetActive: true,
|
|
8479
|
+
}));
|
|
8480
|
+
this.doSetGroupAndPanelActive(newGroup);
|
|
8481
|
+
this._onDidMovePanel.fire({
|
|
8482
|
+
panel: this.getGroupPanel(sourceItemId),
|
|
8483
|
+
from: sourceGroup,
|
|
8484
|
+
});
|
|
8485
|
+
return;
|
|
8486
|
+
}
|
|
8353
8487
|
// source group will become empty so delete the group
|
|
8354
8488
|
const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {
|
|
8355
8489
|
skipActive: true,
|
|
@@ -8581,13 +8715,14 @@
|
|
|
8581
8715
|
set deserializer(value) {
|
|
8582
8716
|
this._deserializer = value;
|
|
8583
8717
|
}
|
|
8584
|
-
constructor(options) {
|
|
8718
|
+
constructor(parentElement, options) {
|
|
8585
8719
|
super({
|
|
8586
|
-
parentElement:
|
|
8720
|
+
parentElement: parentElement,
|
|
8587
8721
|
proportionalLayout: options.proportionalLayout,
|
|
8588
8722
|
orientation: options.orientation,
|
|
8589
8723
|
styles: options.styles,
|
|
8590
8724
|
disableAutoResizing: options.disableAutoResizing,
|
|
8725
|
+
className: options.className,
|
|
8591
8726
|
});
|
|
8592
8727
|
this._onDidLayoutfromJSON = new Emitter();
|
|
8593
8728
|
this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
|
|
@@ -8879,8 +9014,8 @@
|
|
|
8879
9014
|
? this.splitview.size
|
|
8880
9015
|
: this.splitview.orthogonalSize;
|
|
8881
9016
|
}
|
|
8882
|
-
constructor(options) {
|
|
8883
|
-
super(
|
|
9017
|
+
constructor(parentElement, options) {
|
|
9018
|
+
super(parentElement, options.disableAutoResizing);
|
|
8884
9019
|
this._splitviewChangeDisposable = new MutableDisposable();
|
|
8885
9020
|
this._panels = new Map();
|
|
8886
9021
|
this._onDidLayoutfromJSON = new Emitter();
|
|
@@ -8891,6 +9026,9 @@
|
|
|
8891
9026
|
this.onDidRemoveView = this._onDidRemoveView.event;
|
|
8892
9027
|
this._onDidLayoutChange = new Emitter();
|
|
8893
9028
|
this.onDidLayoutChange = this._onDidLayoutChange.event;
|
|
9029
|
+
if (typeof options.className === 'string') {
|
|
9030
|
+
this.element.classList.add(options.className);
|
|
9031
|
+
}
|
|
8894
9032
|
this._options = options;
|
|
8895
9033
|
if (!options.components) {
|
|
8896
9034
|
options.components = {};
|
|
@@ -9203,8 +9341,8 @@
|
|
|
9203
9341
|
get options() {
|
|
9204
9342
|
return this._options;
|
|
9205
9343
|
}
|
|
9206
|
-
constructor(options) {
|
|
9207
|
-
super(
|
|
9344
|
+
constructor(parentElement, options) {
|
|
9345
|
+
super(parentElement, options.disableAutoResizing);
|
|
9208
9346
|
this._id = nextLayoutId.next();
|
|
9209
9347
|
this._disposable = new MutableDisposable();
|
|
9210
9348
|
this._viewDisposables = new Map();
|
|
@@ -9218,6 +9356,9 @@
|
|
|
9218
9356
|
this.onDidAddView = this._onDidAddView.event;
|
|
9219
9357
|
this._onDidRemoveView = new Emitter();
|
|
9220
9358
|
this.onDidRemoveView = this._onDidRemoveView.event;
|
|
9359
|
+
if (typeof options.className === 'string') {
|
|
9360
|
+
this.element.classList.add(options.className);
|
|
9361
|
+
}
|
|
9221
9362
|
this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView);
|
|
9222
9363
|
this._options = options;
|
|
9223
9364
|
if (!options.components) {
|
|
@@ -9533,6 +9674,23 @@
|
|
|
9533
9674
|
}
|
|
9534
9675
|
}
|
|
9535
9676
|
|
|
9677
|
+
function createDockview(element, options) {
|
|
9678
|
+
const component = new DockviewComponent(element, options);
|
|
9679
|
+
return component.api;
|
|
9680
|
+
}
|
|
9681
|
+
function createSplitview(element, options) {
|
|
9682
|
+
const component = new SplitviewComponent(element, options);
|
|
9683
|
+
return new SplitviewApi(component);
|
|
9684
|
+
}
|
|
9685
|
+
function createGridview(element, options) {
|
|
9686
|
+
const component = new GridviewComponent(element, options);
|
|
9687
|
+
return new GridviewApi(component);
|
|
9688
|
+
}
|
|
9689
|
+
function createPaneview(element, options) {
|
|
9690
|
+
const component = new PaneviewComponent(element, options);
|
|
9691
|
+
return new PaneviewApi(component);
|
|
9692
|
+
}
|
|
9693
|
+
|
|
9536
9694
|
exports.BaseGrid = BaseGrid;
|
|
9537
9695
|
exports.ContentContainer = ContentContainer;
|
|
9538
9696
|
exports.DefaultDockviewDeserialzier = DefaultDockviewDeserialzier;
|
|
@@ -9569,6 +9727,10 @@
|
|
|
9569
9727
|
exports.Tab = Tab;
|
|
9570
9728
|
exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
|
|
9571
9729
|
exports.createComponent = createComponent;
|
|
9730
|
+
exports.createDockview = createDockview;
|
|
9731
|
+
exports.createGridview = createGridview;
|
|
9732
|
+
exports.createPaneview = createPaneview;
|
|
9733
|
+
exports.createSplitview = createSplitview;
|
|
9572
9734
|
exports.directionToPosition = directionToPosition;
|
|
9573
9735
|
exports.getDirectionOrientation = getDirectionOrientation;
|
|
9574
9736
|
exports.getGridLocation = getGridLocation;
|