dockview-core 1.7.4 → 1.7.6
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/dnd/abstractDragHandler.d.ts +2 -2
- package/dist/cjs/dnd/abstractDragHandler.d.ts.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.js +28 -24
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/events.js +2 -2
- package/dist/cjs/events.js.map +1 -1
- package/dist/cjs/gridview/gridview.d.ts.map +1 -1
- package/dist/cjs/gridview/gridview.js +36 -24
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/splitview/splitview.d.ts.map +1 -1
- package/dist/cjs/splitview/splitview.js +12 -13
- package/dist/cjs/splitview/splitview.js.map +1 -1
- package/dist/dockview-core.amd.js +66 -51
- package/dist/dockview-core.amd.min.js +2 -2
- package/dist/dockview-core.amd.min.noStyle.js +2 -2
- package/dist/dockview-core.amd.noStyle.js +65 -50
- package/dist/dockview-core.cjs.js +66 -51
- package/dist/dockview-core.esm.js +66 -51
- package/dist/dockview-core.esm.min.js +2 -2
- package/dist/dockview-core.js +66 -51
- package/dist/dockview-core.min.js +2 -2
- package/dist/dockview-core.min.noStyle.js +2 -2
- package/dist/dockview-core.noStyle.js +65 -50
- package/dist/esm/dnd/abstractDragHandler.d.ts +2 -2
- package/dist/esm/dnd/abstractDragHandler.d.ts.map +1 -1
- package/dist/esm/dnd/abstractDragHandler.js +15 -11
- package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
- package/dist/esm/events.js +2 -2
- package/dist/esm/events.js.map +1 -1
- package/dist/esm/gridview/gridview.d.ts.map +1 -1
- package/dist/esm/gridview/gridview.js +34 -22
- package/dist/esm/gridview/gridview.js.map +1 -1
- package/dist/esm/splitview/splitview.d.ts.map +1 -1
- package/dist/esm/splitview/splitview.js +12 -13
- package/dist/esm/splitview/splitview.js.map +1 -1
- package/dist/styles/dockview.css +1 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version 1.7.
|
|
3
|
+
* @version 1.7.6
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -197,7 +197,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
197
197
|
element.addEventListener(type, listener, options);
|
|
198
198
|
return {
|
|
199
199
|
dispose: () => {
|
|
200
|
-
element.removeEventListener(type, listener);
|
|
200
|
+
element.removeEventListener(type, listener, options);
|
|
201
201
|
},
|
|
202
202
|
};
|
|
203
203
|
}
|
|
@@ -205,7 +205,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
205
205
|
element.addEventListener(type, listener, options);
|
|
206
206
|
return {
|
|
207
207
|
dispose: () => {
|
|
208
|
-
element.removeEventListener(type, listener);
|
|
208
|
+
element.removeEventListener(type, listener, options);
|
|
209
209
|
},
|
|
210
210
|
};
|
|
211
211
|
}
|
|
@@ -890,7 +890,7 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
890
890
|
//add sash
|
|
891
891
|
const sash = document.createElement('div');
|
|
892
892
|
sash.className = 'sash';
|
|
893
|
-
const
|
|
893
|
+
const onPointerStart = (event) => {
|
|
894
894
|
for (const item of this.viewItems) {
|
|
895
895
|
item.enabled = false;
|
|
896
896
|
}
|
|
@@ -949,11 +949,10 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
949
949
|
size: snappedViewItem.size,
|
|
950
950
|
};
|
|
951
951
|
}
|
|
952
|
-
|
|
953
|
-
const mousemove = (mousemoveEvent) => {
|
|
952
|
+
const onPointerMove = (event) => {
|
|
954
953
|
const current = this._orientation === exports.Orientation.HORIZONTAL
|
|
955
|
-
?
|
|
956
|
-
:
|
|
954
|
+
? event.clientX
|
|
955
|
+
: event.clientY;
|
|
957
956
|
const delta = current - start;
|
|
958
957
|
this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);
|
|
959
958
|
this.distributeEmptySpace();
|
|
@@ -967,20 +966,20 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
967
966
|
iframe.style.pointerEvents = 'auto';
|
|
968
967
|
}
|
|
969
968
|
this.saveProportions();
|
|
970
|
-
document.removeEventListener('
|
|
971
|
-
document.removeEventListener('
|
|
972
|
-
document.removeEventListener('
|
|
969
|
+
document.removeEventListener('pointermove', onPointerMove);
|
|
970
|
+
document.removeEventListener('pointerup', end);
|
|
971
|
+
document.removeEventListener('pointercancel', end);
|
|
973
972
|
this._onDidSashEnd.fire(undefined);
|
|
974
973
|
};
|
|
975
|
-
document.addEventListener('
|
|
976
|
-
document.addEventListener('
|
|
977
|
-
document.addEventListener('
|
|
974
|
+
document.addEventListener('pointermove', onPointerMove);
|
|
975
|
+
document.addEventListener('pointerup', end);
|
|
976
|
+
document.addEventListener('pointercancel', end);
|
|
978
977
|
};
|
|
979
|
-
sash.addEventListener('
|
|
978
|
+
sash.addEventListener('pointerdown', onPointerStart);
|
|
980
979
|
const sashItem = {
|
|
981
980
|
container: sash,
|
|
982
981
|
disposable: () => {
|
|
983
|
-
sash.removeEventListener('
|
|
982
|
+
sash.removeEventListener('pointerdown', onPointerStart);
|
|
984
983
|
this.sashContainer.removeChild(sash);
|
|
985
984
|
},
|
|
986
985
|
};
|
|
@@ -2073,58 +2072,70 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2073
2072
|
if (!(parent instanceof BranchNode)) {
|
|
2074
2073
|
throw new Error('Invalid location');
|
|
2075
2074
|
}
|
|
2076
|
-
const
|
|
2077
|
-
if (!(
|
|
2075
|
+
const nodeToRemove = parent.children[index];
|
|
2076
|
+
if (!(nodeToRemove instanceof LeafNode)) {
|
|
2078
2077
|
throw new Error('Invalid location');
|
|
2079
2078
|
}
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
if (parent.children.length === 0) {
|
|
2085
|
-
return view;
|
|
2086
|
-
}
|
|
2087
|
-
if (parent.children.length > 1) {
|
|
2088
|
-
return view;
|
|
2079
|
+
parent.removeChild(index, sizing);
|
|
2080
|
+
nodeToRemove.dispose();
|
|
2081
|
+
if (parent.children.length !== 1) {
|
|
2082
|
+
return nodeToRemove.view;
|
|
2089
2083
|
}
|
|
2084
|
+
// if the parent has only one child and we know the parent is a BranchNode we can make the tree
|
|
2085
|
+
// more efficiently spaced by replacing the parent BranchNode with the child.
|
|
2086
|
+
// if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child
|
|
2087
|
+
// is a BranchNode too we should spread it's children into the grandparent.
|
|
2088
|
+
// refer to the remaining child as the sibling
|
|
2090
2089
|
const sibling = parent.children[0];
|
|
2091
2090
|
if (pathToParent.length === 0) {
|
|
2092
|
-
// parent is root
|
|
2091
|
+
// if the parent is root
|
|
2093
2092
|
if (sibling instanceof LeafNode) {
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2093
|
+
// if the sibling is a leaf node no action is required
|
|
2094
|
+
return nodeToRemove.view;
|
|
2095
|
+
}
|
|
2096
|
+
// otherwise the sibling is a branch node. since the parent is the root and the root has only one child
|
|
2097
|
+
// which is a branch node we can just set this branch node to be the new root node
|
|
2098
|
+
// for good housekeeping we'll removing the sibling from it's existing tree
|
|
2099
|
+
parent.removeChild(0, sizing);
|
|
2100
|
+
// and set that sibling node to be root
|
|
2099
2101
|
this.root = sibling;
|
|
2100
|
-
return view;
|
|
2102
|
+
return nodeToRemove.view;
|
|
2101
2103
|
}
|
|
2104
|
+
// otherwise the parent is apart of a large sub-tree
|
|
2102
2105
|
const [grandParent, ..._] = [...pathToParent].reverse();
|
|
2103
2106
|
const [parentIndex, ...__] = [...rest].reverse();
|
|
2104
2107
|
const isSiblingVisible = parent.isChildVisible(0);
|
|
2105
|
-
|
|
2106
|
-
|
|
2108
|
+
// either way we need to remove the sibling from it's existing tree
|
|
2109
|
+
parent.removeChild(0, sizing);
|
|
2110
|
+
// note the sizes of all of the grandparents children
|
|
2107
2111
|
const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
|
|
2108
|
-
|
|
2109
|
-
|
|
2112
|
+
// remove the parent from the grandparent since we are moving the sibling to take the parents place
|
|
2113
|
+
// this parent is no longer used and can be disposed of
|
|
2114
|
+
grandParent.removeChild(parentIndex, sizing).dispose();
|
|
2110
2115
|
if (sibling instanceof BranchNode) {
|
|
2116
|
+
// replace the parent with the siblings children
|
|
2111
2117
|
sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
|
|
2118
|
+
// and add those siblings to the grandparent
|
|
2112
2119
|
for (let i = 0; i < sibling.children.length; i++) {
|
|
2113
2120
|
const child = sibling.children[i];
|
|
2114
2121
|
grandParent.addChild(child, child.size, parentIndex + i);
|
|
2115
2122
|
}
|
|
2116
2123
|
}
|
|
2117
2124
|
else {
|
|
2125
|
+
// otherwise create a new leaf node and add that to the grandparent
|
|
2118
2126
|
const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);
|
|
2119
2127
|
const siblingSizing = isSiblingVisible
|
|
2120
2128
|
? sibling.orthogonalSize
|
|
2121
2129
|
: exports.Sizing.Invisible(sibling.orthogonalSize);
|
|
2122
2130
|
grandParent.addChild(newSibling, siblingSizing, parentIndex);
|
|
2123
2131
|
}
|
|
2132
|
+
// the containing node of the sibling is no longer required and can be disposed of
|
|
2133
|
+
sibling.dispose();
|
|
2134
|
+
// resize everything
|
|
2124
2135
|
for (let i = 0; i < sizes.length; i++) {
|
|
2125
2136
|
grandParent.resizeChild(i, sizes[i]);
|
|
2126
2137
|
}
|
|
2127
|
-
return view;
|
|
2138
|
+
return nodeToRemove.view;
|
|
2128
2139
|
}
|
|
2129
2140
|
layout(width, height) {
|
|
2130
2141
|
const [size, orthogonalSize] = this.root.orientation === exports.Orientation.HORIZONTAL
|
|
@@ -2837,25 +2848,32 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2837
2848
|
constructor(el) {
|
|
2838
2849
|
super();
|
|
2839
2850
|
this.el = el;
|
|
2840
|
-
this.
|
|
2851
|
+
this.dataDisposable = new MutableDisposable();
|
|
2852
|
+
this.pointerEventsDisposable = new MutableDisposable();
|
|
2841
2853
|
this._onDragStart = new Emitter();
|
|
2842
2854
|
this.onDragStart = this._onDragStart.event;
|
|
2843
|
-
this.
|
|
2844
|
-
this.addDisposables(this._onDragStart);
|
|
2855
|
+
this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);
|
|
2845
2856
|
this.configure();
|
|
2846
2857
|
}
|
|
2847
2858
|
configure() {
|
|
2848
2859
|
this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {
|
|
2849
|
-
|
|
2860
|
+
const iframes = [
|
|
2850
2861
|
...getElementsByTagName('iframe'),
|
|
2851
2862
|
...getElementsByTagName('webview'),
|
|
2852
2863
|
];
|
|
2853
|
-
|
|
2864
|
+
this.pointerEventsDisposable.value = {
|
|
2865
|
+
dispose: () => {
|
|
2866
|
+
for (const iframe of iframes) {
|
|
2867
|
+
iframe.style.pointerEvents = 'auto';
|
|
2868
|
+
}
|
|
2869
|
+
},
|
|
2870
|
+
};
|
|
2871
|
+
for (const iframe of iframes) {
|
|
2854
2872
|
iframe.style.pointerEvents = 'none';
|
|
2855
2873
|
}
|
|
2856
2874
|
this.el.classList.add('dv-dragged');
|
|
2857
2875
|
setTimeout(() => this.el.classList.remove('dv-dragged'), 0);
|
|
2858
|
-
this.
|
|
2876
|
+
this.dataDisposable.value = this.getData(event.dataTransfer);
|
|
2859
2877
|
if (event.dataTransfer) {
|
|
2860
2878
|
event.dataTransfer.effectAllowed = 'move';
|
|
2861
2879
|
/**
|
|
@@ -2870,11 +2888,8 @@ define(['exports'], (function (exports) { 'use strict';
|
|
|
2870
2888
|
event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');
|
|
2871
2889
|
}
|
|
2872
2890
|
}), addDisposableListener(this.el, 'dragend', () => {
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
}
|
|
2876
|
-
this.iframes = [];
|
|
2877
|
-
this.disposable.dispose();
|
|
2891
|
+
this.pointerEventsDisposable.dispose();
|
|
2892
|
+
this.dataDisposable.dispose();
|
|
2878
2893
|
}));
|
|
2879
2894
|
}
|
|
2880
2895
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version 1.7.
|
|
3
|
+
* @version 1.7.6
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -33,7 +33,7 @@ function styleInject(css, ref) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
var css_248z = ".dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 10000;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
|
|
36
|
+
var css_248z = ".dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 10000;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dv-tab-dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
|
|
37
37
|
styleInject(css_248z);
|
|
38
38
|
|
|
39
39
|
class TransferObject {
|
|
@@ -227,7 +227,7 @@ function addDisposableWindowListener(element, type, listener, options) {
|
|
|
227
227
|
element.addEventListener(type, listener, options);
|
|
228
228
|
return {
|
|
229
229
|
dispose: () => {
|
|
230
|
-
element.removeEventListener(type, listener);
|
|
230
|
+
element.removeEventListener(type, listener, options);
|
|
231
231
|
},
|
|
232
232
|
};
|
|
233
233
|
}
|
|
@@ -235,7 +235,7 @@ function addDisposableListener(element, type, listener, options) {
|
|
|
235
235
|
element.addEventListener(type, listener, options);
|
|
236
236
|
return {
|
|
237
237
|
dispose: () => {
|
|
238
|
-
element.removeEventListener(type, listener);
|
|
238
|
+
element.removeEventListener(type, listener, options);
|
|
239
239
|
},
|
|
240
240
|
};
|
|
241
241
|
}
|
|
@@ -920,7 +920,7 @@ class Splitview {
|
|
|
920
920
|
//add sash
|
|
921
921
|
const sash = document.createElement('div');
|
|
922
922
|
sash.className = 'sash';
|
|
923
|
-
const
|
|
923
|
+
const onPointerStart = (event) => {
|
|
924
924
|
for (const item of this.viewItems) {
|
|
925
925
|
item.enabled = false;
|
|
926
926
|
}
|
|
@@ -979,11 +979,10 @@ class Splitview {
|
|
|
979
979
|
size: snappedViewItem.size,
|
|
980
980
|
};
|
|
981
981
|
}
|
|
982
|
-
|
|
983
|
-
const mousemove = (mousemoveEvent) => {
|
|
982
|
+
const onPointerMove = (event) => {
|
|
984
983
|
const current = this._orientation === exports.Orientation.HORIZONTAL
|
|
985
|
-
?
|
|
986
|
-
:
|
|
984
|
+
? event.clientX
|
|
985
|
+
: event.clientY;
|
|
987
986
|
const delta = current - start;
|
|
988
987
|
this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);
|
|
989
988
|
this.distributeEmptySpace();
|
|
@@ -997,20 +996,20 @@ class Splitview {
|
|
|
997
996
|
iframe.style.pointerEvents = 'auto';
|
|
998
997
|
}
|
|
999
998
|
this.saveProportions();
|
|
1000
|
-
document.removeEventListener('
|
|
1001
|
-
document.removeEventListener('
|
|
1002
|
-
document.removeEventListener('
|
|
999
|
+
document.removeEventListener('pointermove', onPointerMove);
|
|
1000
|
+
document.removeEventListener('pointerup', end);
|
|
1001
|
+
document.removeEventListener('pointercancel', end);
|
|
1003
1002
|
this._onDidSashEnd.fire(undefined);
|
|
1004
1003
|
};
|
|
1005
|
-
document.addEventListener('
|
|
1006
|
-
document.addEventListener('
|
|
1007
|
-
document.addEventListener('
|
|
1004
|
+
document.addEventListener('pointermove', onPointerMove);
|
|
1005
|
+
document.addEventListener('pointerup', end);
|
|
1006
|
+
document.addEventListener('pointercancel', end);
|
|
1008
1007
|
};
|
|
1009
|
-
sash.addEventListener('
|
|
1008
|
+
sash.addEventListener('pointerdown', onPointerStart);
|
|
1010
1009
|
const sashItem = {
|
|
1011
1010
|
container: sash,
|
|
1012
1011
|
disposable: () => {
|
|
1013
|
-
sash.removeEventListener('
|
|
1012
|
+
sash.removeEventListener('pointerdown', onPointerStart);
|
|
1014
1013
|
this.sashContainer.removeChild(sash);
|
|
1015
1014
|
},
|
|
1016
1015
|
};
|
|
@@ -2103,58 +2102,70 @@ class Gridview {
|
|
|
2103
2102
|
if (!(parent instanceof BranchNode)) {
|
|
2104
2103
|
throw new Error('Invalid location');
|
|
2105
2104
|
}
|
|
2106
|
-
const
|
|
2107
|
-
if (!(
|
|
2105
|
+
const nodeToRemove = parent.children[index];
|
|
2106
|
+
if (!(nodeToRemove instanceof LeafNode)) {
|
|
2108
2107
|
throw new Error('Invalid location');
|
|
2109
2108
|
}
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
if (parent.children.length === 0) {
|
|
2115
|
-
return view;
|
|
2116
|
-
}
|
|
2117
|
-
if (parent.children.length > 1) {
|
|
2118
|
-
return view;
|
|
2109
|
+
parent.removeChild(index, sizing);
|
|
2110
|
+
nodeToRemove.dispose();
|
|
2111
|
+
if (parent.children.length !== 1) {
|
|
2112
|
+
return nodeToRemove.view;
|
|
2119
2113
|
}
|
|
2114
|
+
// if the parent has only one child and we know the parent is a BranchNode we can make the tree
|
|
2115
|
+
// more efficiently spaced by replacing the parent BranchNode with the child.
|
|
2116
|
+
// if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child
|
|
2117
|
+
// is a BranchNode too we should spread it's children into the grandparent.
|
|
2118
|
+
// refer to the remaining child as the sibling
|
|
2120
2119
|
const sibling = parent.children[0];
|
|
2121
2120
|
if (pathToParent.length === 0) {
|
|
2122
|
-
// parent is root
|
|
2121
|
+
// if the parent is root
|
|
2123
2122
|
if (sibling instanceof LeafNode) {
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2123
|
+
// if the sibling is a leaf node no action is required
|
|
2124
|
+
return nodeToRemove.view;
|
|
2125
|
+
}
|
|
2126
|
+
// otherwise the sibling is a branch node. since the parent is the root and the root has only one child
|
|
2127
|
+
// which is a branch node we can just set this branch node to be the new root node
|
|
2128
|
+
// for good housekeeping we'll removing the sibling from it's existing tree
|
|
2129
|
+
parent.removeChild(0, sizing);
|
|
2130
|
+
// and set that sibling node to be root
|
|
2129
2131
|
this.root = sibling;
|
|
2130
|
-
return view;
|
|
2132
|
+
return nodeToRemove.view;
|
|
2131
2133
|
}
|
|
2134
|
+
// otherwise the parent is apart of a large sub-tree
|
|
2132
2135
|
const [grandParent, ..._] = [...pathToParent].reverse();
|
|
2133
2136
|
const [parentIndex, ...__] = [...rest].reverse();
|
|
2134
2137
|
const isSiblingVisible = parent.isChildVisible(0);
|
|
2135
|
-
|
|
2136
|
-
|
|
2138
|
+
// either way we need to remove the sibling from it's existing tree
|
|
2139
|
+
parent.removeChild(0, sizing);
|
|
2140
|
+
// note the sizes of all of the grandparents children
|
|
2137
2141
|
const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));
|
|
2138
|
-
|
|
2139
|
-
|
|
2142
|
+
// remove the parent from the grandparent since we are moving the sibling to take the parents place
|
|
2143
|
+
// this parent is no longer used and can be disposed of
|
|
2144
|
+
grandParent.removeChild(parentIndex, sizing).dispose();
|
|
2140
2145
|
if (sibling instanceof BranchNode) {
|
|
2146
|
+
// replace the parent with the siblings children
|
|
2141
2147
|
sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));
|
|
2148
|
+
// and add those siblings to the grandparent
|
|
2142
2149
|
for (let i = 0; i < sibling.children.length; i++) {
|
|
2143
2150
|
const child = sibling.children[i];
|
|
2144
2151
|
grandParent.addChild(child, child.size, parentIndex + i);
|
|
2145
2152
|
}
|
|
2146
2153
|
}
|
|
2147
2154
|
else {
|
|
2155
|
+
// otherwise create a new leaf node and add that to the grandparent
|
|
2148
2156
|
const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);
|
|
2149
2157
|
const siblingSizing = isSiblingVisible
|
|
2150
2158
|
? sibling.orthogonalSize
|
|
2151
2159
|
: exports.Sizing.Invisible(sibling.orthogonalSize);
|
|
2152
2160
|
grandParent.addChild(newSibling, siblingSizing, parentIndex);
|
|
2153
2161
|
}
|
|
2162
|
+
// the containing node of the sibling is no longer required and can be disposed of
|
|
2163
|
+
sibling.dispose();
|
|
2164
|
+
// resize everything
|
|
2154
2165
|
for (let i = 0; i < sizes.length; i++) {
|
|
2155
2166
|
grandParent.resizeChild(i, sizes[i]);
|
|
2156
2167
|
}
|
|
2157
|
-
return view;
|
|
2168
|
+
return nodeToRemove.view;
|
|
2158
2169
|
}
|
|
2159
2170
|
layout(width, height) {
|
|
2160
2171
|
const [size, orthogonalSize] = this.root.orientation === exports.Orientation.HORIZONTAL
|
|
@@ -2867,25 +2878,32 @@ class DragHandler extends CompositeDisposable {
|
|
|
2867
2878
|
constructor(el) {
|
|
2868
2879
|
super();
|
|
2869
2880
|
this.el = el;
|
|
2870
|
-
this.
|
|
2881
|
+
this.dataDisposable = new MutableDisposable();
|
|
2882
|
+
this.pointerEventsDisposable = new MutableDisposable();
|
|
2871
2883
|
this._onDragStart = new Emitter();
|
|
2872
2884
|
this.onDragStart = this._onDragStart.event;
|
|
2873
|
-
this.
|
|
2874
|
-
this.addDisposables(this._onDragStart);
|
|
2885
|
+
this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);
|
|
2875
2886
|
this.configure();
|
|
2876
2887
|
}
|
|
2877
2888
|
configure() {
|
|
2878
2889
|
this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {
|
|
2879
|
-
|
|
2890
|
+
const iframes = [
|
|
2880
2891
|
...getElementsByTagName('iframe'),
|
|
2881
2892
|
...getElementsByTagName('webview'),
|
|
2882
2893
|
];
|
|
2883
|
-
|
|
2894
|
+
this.pointerEventsDisposable.value = {
|
|
2895
|
+
dispose: () => {
|
|
2896
|
+
for (const iframe of iframes) {
|
|
2897
|
+
iframe.style.pointerEvents = 'auto';
|
|
2898
|
+
}
|
|
2899
|
+
},
|
|
2900
|
+
};
|
|
2901
|
+
for (const iframe of iframes) {
|
|
2884
2902
|
iframe.style.pointerEvents = 'none';
|
|
2885
2903
|
}
|
|
2886
2904
|
this.el.classList.add('dv-dragged');
|
|
2887
2905
|
setTimeout(() => this.el.classList.remove('dv-dragged'), 0);
|
|
2888
|
-
this.
|
|
2906
|
+
this.dataDisposable.value = this.getData(event.dataTransfer);
|
|
2889
2907
|
if (event.dataTransfer) {
|
|
2890
2908
|
event.dataTransfer.effectAllowed = 'move';
|
|
2891
2909
|
/**
|
|
@@ -2900,11 +2918,8 @@ class DragHandler extends CompositeDisposable {
|
|
|
2900
2918
|
event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');
|
|
2901
2919
|
}
|
|
2902
2920
|
}), addDisposableListener(this.el, 'dragend', () => {
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
}
|
|
2906
|
-
this.iframes = [];
|
|
2907
|
-
this.disposable.dispose();
|
|
2921
|
+
this.pointerEventsDisposable.dispose();
|
|
2922
|
+
this.dataDisposable.dispose();
|
|
2908
2923
|
}));
|
|
2909
2924
|
}
|
|
2910
2925
|
}
|