dockview-core 1.8.1 → 1.8.3
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 +8 -4
- package/dist/cjs/api/component.api.d.ts.map +1 -1
- package/dist/cjs/api/component.api.js +14 -0
- package/dist/cjs/api/component.api.js.map +1 -1
- 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 +16 -12
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/groupDragHandler.d.ts +4 -3
- package/dist/cjs/dnd/groupDragHandler.d.ts.map +1 -1
- package/dist/cjs/dnd/groupDragHandler.js +5 -4
- package/dist/cjs/dnd/groupDragHandler.js.map +1 -1
- package/dist/cjs/dnd/overlay.d.ts +6 -2
- package/dist/cjs/dnd/overlay.d.ts.map +1 -1
- package/dist/cjs/dnd/overlay.js +54 -23
- package/dist/cjs/dnd/overlay.js.map +1 -1
- package/dist/cjs/dockview/components/tab/tab.d.ts +7 -4
- package/dist/cjs/dockview/components/tab/tab.d.ts.map +1 -1
- package/dist/cjs/dockview/components/tab/tab.js +36 -28
- package/dist/cjs/dockview/components/tab/tab.js.map +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +15 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +26 -15
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +2 -0
- package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts.map +1 -1
- package/dist/cjs/dockview/components/titlebar/voidContainer.js +7 -3
- package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +11 -4
- package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.js +78 -36
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +4 -4
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +10 -4
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +18 -6
- package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts +1 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/options.d.ts +8 -5
- package/dist/cjs/dockview/options.d.ts.map +1 -1
- package/dist/cjs/dockview/options.js.map +1 -1
- package/dist/cjs/gridview/basePanelView.d.ts +4 -4
- package/dist/cjs/gridview/basePanelView.d.ts.map +1 -1
- package/dist/cjs/gridview/basePanelView.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts +4 -4
- package/dist/cjs/gridview/gridviewComponent.d.ts.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/lifecycle.d.ts +0 -1
- package/dist/cjs/lifecycle.d.ts.map +1 -1
- package/dist/cjs/lifecycle.js +0 -32
- package/dist/cjs/lifecycle.js.map +1 -1
- package/dist/cjs/panel/types.d.ts +2 -2
- package/dist/cjs/panel/types.d.ts.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts +5 -6
- package/dist/cjs/paneview/paneviewComponent.d.ts.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts +4 -4
- package/dist/cjs/splitview/splitviewComponent.d.ts.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewPanel.d.ts +1 -1
- package/dist/dockview-core.amd.js +201 -104
- 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 +201 -104
- package/dist/dockview-core.amd.noStyle.js.map +1 -1
- package/dist/dockview-core.cjs.js +201 -104
- package/dist/dockview-core.cjs.js.map +1 -1
- package/dist/dockview-core.esm.js +201 -104
- 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 +201 -104
- 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 +201 -104
- package/dist/dockview-core.noStyle.js.map +1 -1
- package/dist/esm/api/component.api.d.ts +8 -4
- package/dist/esm/api/component.api.d.ts.map +1 -1
- package/dist/esm/api/component.api.js +6 -0
- package/dist/esm/api/component.api.js.map +1 -1
- 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 +16 -12
- package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
- package/dist/esm/dnd/groupDragHandler.d.ts +4 -3
- package/dist/esm/dnd/groupDragHandler.d.ts.map +1 -1
- package/dist/esm/dnd/groupDragHandler.js +5 -4
- package/dist/esm/dnd/groupDragHandler.js.map +1 -1
- package/dist/esm/dnd/overlay.d.ts +6 -2
- package/dist/esm/dnd/overlay.d.ts.map +1 -1
- package/dist/esm/dnd/overlay.js +46 -23
- package/dist/esm/dnd/overlay.js.map +1 -1
- package/dist/esm/dockview/components/tab/tab.d.ts +7 -4
- package/dist/esm/dockview/components/tab/tab.d.ts.map +1 -1
- package/dist/esm/dockview/components/tab/tab.js +32 -24
- package/dist/esm/dockview/components/tab/tab.js.map +1 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +15 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +1 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +26 -15
- package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +2 -0
- package/dist/esm/dockview/components/titlebar/voidContainer.d.ts.map +1 -1
- package/dist/esm/dockview/components/titlebar/voidContainer.js +7 -3
- package/dist/esm/dockview/components/titlebar/voidContainer.js.map +1 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +11 -4
- package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewComponent.js +44 -13
- package/dist/esm/dockview/dockviewComponent.js.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +4 -4
- package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +10 -4
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.js +18 -6
- package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/esm/dockview/dockviewPanel.d.ts +1 -1
- package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/esm/dockview/options.d.ts +8 -5
- package/dist/esm/dockview/options.d.ts.map +1 -1
- package/dist/esm/dockview/options.js.map +1 -1
- package/dist/esm/gridview/basePanelView.d.ts +4 -4
- package/dist/esm/gridview/basePanelView.d.ts.map +1 -1
- package/dist/esm/gridview/basePanelView.js.map +1 -1
- package/dist/esm/gridview/gridviewComponent.d.ts +4 -4
- package/dist/esm/gridview/gridviewComponent.d.ts.map +1 -1
- package/dist/esm/gridview/gridviewComponent.js.map +1 -1
- package/dist/esm/lifecycle.d.ts +0 -1
- package/dist/esm/lifecycle.d.ts.map +1 -1
- package/dist/esm/lifecycle.js +0 -3
- package/dist/esm/lifecycle.js.map +1 -1
- package/dist/esm/panel/types.d.ts +2 -2
- package/dist/esm/panel/types.d.ts.map +1 -1
- package/dist/esm/paneview/paneviewComponent.d.ts +5 -6
- package/dist/esm/paneview/paneviewComponent.d.ts.map +1 -1
- package/dist/esm/paneview/paneviewComponent.js.map +1 -1
- package/dist/esm/splitview/splitviewComponent.d.ts +4 -4
- package/dist/esm/splitview/splitviewComponent.d.ts.map +1 -1
- package/dist/esm/splitview/splitviewComponent.js.map +1 -1
- package/dist/esm/splitview/splitviewPanel.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dockview-core
|
|
3
|
-
* @version 1.8.
|
|
3
|
+
* @version 1.8.3
|
|
4
4
|
* @link https://github.com/mathuo/dockview
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -270,9 +270,6 @@ class CompositeDisposable {
|
|
|
270
270
|
get isDisposed() {
|
|
271
271
|
return this._isDisposed;
|
|
272
272
|
}
|
|
273
|
-
static from(...args) {
|
|
274
|
-
return new CompositeDisposable(...args);
|
|
275
|
-
}
|
|
276
273
|
constructor(...args) {
|
|
277
274
|
this._isDisposed = false;
|
|
278
275
|
this._disposables = args;
|
|
@@ -2476,6 +2473,12 @@ class DockviewApi {
|
|
|
2476
2473
|
get onDidDrop() {
|
|
2477
2474
|
return this.component.onDidDrop;
|
|
2478
2475
|
}
|
|
2476
|
+
get onWillDragGroup() {
|
|
2477
|
+
return this.component.onWillDragGroup;
|
|
2478
|
+
}
|
|
2479
|
+
get onWillDragPanel() {
|
|
2480
|
+
return this.component.onWillDragPanel;
|
|
2481
|
+
}
|
|
2479
2482
|
get panels() {
|
|
2480
2483
|
return this.component.panels;
|
|
2481
2484
|
}
|
|
@@ -2938,7 +2941,7 @@ class DragHandler extends CompositeDisposable {
|
|
|
2938
2941
|
}
|
|
2939
2942
|
configure() {
|
|
2940
2943
|
this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {
|
|
2941
|
-
if (this.isCancelled(event)) {
|
|
2944
|
+
if (event.defaultPrevented || this.isCancelled(event)) {
|
|
2942
2945
|
event.preventDefault();
|
|
2943
2946
|
return;
|
|
2944
2947
|
}
|
|
@@ -2958,19 +2961,23 @@ class DragHandler extends CompositeDisposable {
|
|
|
2958
2961
|
}
|
|
2959
2962
|
this.el.classList.add('dv-dragged');
|
|
2960
2963
|
setTimeout(() => this.el.classList.remove('dv-dragged'), 0);
|
|
2961
|
-
this.dataDisposable.value = this.getData(event
|
|
2964
|
+
this.dataDisposable.value = this.getData(event);
|
|
2965
|
+
this._onDragStart.fire(event);
|
|
2962
2966
|
if (event.dataTransfer) {
|
|
2963
2967
|
event.dataTransfer.effectAllowed = 'move';
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2968
|
+
const hasData = event.dataTransfer.items.length > 0;
|
|
2969
|
+
if (!hasData) {
|
|
2970
|
+
/**
|
|
2971
|
+
* Although this is not used by dockview many third party dnd libraries will check
|
|
2972
|
+
* dataTransfer.types to determine valid drag events.
|
|
2973
|
+
*
|
|
2974
|
+
* For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled
|
|
2975
|
+
* through .preventDefault(). Since this is applied globally to all drag events this would break dockviews
|
|
2976
|
+
* dnd logic. You can see the code at
|
|
2977
|
+
* https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
|
|
2978
|
+
*/
|
|
2979
|
+
event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');
|
|
2980
|
+
}
|
|
2974
2981
|
}
|
|
2975
2982
|
}), addDisposableListener(this.el, 'dragend', () => {
|
|
2976
2983
|
this.pointerEventsDisposable.dispose();
|
|
@@ -2979,44 +2986,45 @@ class DragHandler extends CompositeDisposable {
|
|
|
2979
2986
|
}
|
|
2980
2987
|
}
|
|
2981
2988
|
|
|
2989
|
+
class TabDragHandler extends DragHandler {
|
|
2990
|
+
constructor(element, accessor, group, panel) {
|
|
2991
|
+
super(element);
|
|
2992
|
+
this.accessor = accessor;
|
|
2993
|
+
this.group = group;
|
|
2994
|
+
this.panel = panel;
|
|
2995
|
+
this.panelTransfer = LocalSelectionTransfer.getInstance();
|
|
2996
|
+
}
|
|
2997
|
+
getData(event) {
|
|
2998
|
+
this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);
|
|
2999
|
+
return {
|
|
3000
|
+
dispose: () => {
|
|
3001
|
+
this.panelTransfer.clearData(PanelTransfer.prototype);
|
|
3002
|
+
},
|
|
3003
|
+
};
|
|
3004
|
+
}
|
|
3005
|
+
}
|
|
2982
3006
|
class Tab extends CompositeDisposable {
|
|
2983
3007
|
get element() {
|
|
2984
3008
|
return this._element;
|
|
2985
3009
|
}
|
|
2986
|
-
constructor(
|
|
3010
|
+
constructor(panel, accessor, group) {
|
|
2987
3011
|
super();
|
|
2988
|
-
this.
|
|
3012
|
+
this.panel = panel;
|
|
2989
3013
|
this.accessor = accessor;
|
|
2990
3014
|
this.group = group;
|
|
3015
|
+
this.content = undefined;
|
|
2991
3016
|
this._onChanged = new Emitter();
|
|
2992
3017
|
this.onChanged = this._onChanged.event;
|
|
2993
3018
|
this._onDropped = new Emitter();
|
|
2994
3019
|
this.onDrop = this._onDropped.event;
|
|
3020
|
+
this._onDragStart = new Emitter();
|
|
3021
|
+
this.onDragStart = this._onDragStart.event;
|
|
2995
3022
|
this._element = document.createElement('div');
|
|
2996
3023
|
this._element.className = 'tab';
|
|
2997
3024
|
this._element.tabIndex = 0;
|
|
2998
3025
|
this._element.draggable = true;
|
|
2999
3026
|
toggleClass(this.element, 'inactive-tab', true);
|
|
3000
|
-
this.
|
|
3001
|
-
constructor() {
|
|
3002
|
-
super(...arguments);
|
|
3003
|
-
this.panelTransfer = LocalSelectionTransfer.getInstance();
|
|
3004
|
-
}
|
|
3005
|
-
getData() {
|
|
3006
|
-
this.panelTransfer.setData([new PanelTransfer(accessor.id, group.id, panelId)], PanelTransfer.prototype);
|
|
3007
|
-
return {
|
|
3008
|
-
dispose: () => {
|
|
3009
|
-
this.panelTransfer.clearData(PanelTransfer.prototype);
|
|
3010
|
-
},
|
|
3011
|
-
};
|
|
3012
|
-
}
|
|
3013
|
-
})(this._element));
|
|
3014
|
-
this.addDisposables(addDisposableListener(this._element, 'mousedown', (event) => {
|
|
3015
|
-
if (event.defaultPrevented) {
|
|
3016
|
-
return;
|
|
3017
|
-
}
|
|
3018
|
-
this._onChanged.fire(event);
|
|
3019
|
-
}));
|
|
3027
|
+
const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
|
|
3020
3028
|
this.droptarget = new Droptarget(this._element, {
|
|
3021
3029
|
acceptedTargetZones: ['center'],
|
|
3022
3030
|
canDisplayOverlay: (event, position) => {
|
|
@@ -3030,12 +3038,19 @@ class Tab extends CompositeDisposable {
|
|
|
3030
3038
|
// don't allow group move to drop on self
|
|
3031
3039
|
return false;
|
|
3032
3040
|
}
|
|
3033
|
-
return this.
|
|
3041
|
+
return this.panel.id !== data.panelId;
|
|
3034
3042
|
}
|
|
3035
3043
|
return this.group.model.canDisplayOverlay(event, position, exports.DockviewDropTargets.Tab);
|
|
3036
3044
|
},
|
|
3037
3045
|
});
|
|
3038
|
-
this.addDisposables(this.
|
|
3046
|
+
this.addDisposables(this._onChanged, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
|
|
3047
|
+
this._onDragStart.fire(event);
|
|
3048
|
+
}), dragHandler, addDisposableListener(this._element, 'mousedown', (event) => {
|
|
3049
|
+
if (event.defaultPrevented) {
|
|
3050
|
+
return;
|
|
3051
|
+
}
|
|
3052
|
+
this._onChanged.fire(event);
|
|
3053
|
+
}), this.droptarget.onDrop((event) => {
|
|
3039
3054
|
this._onDropped.fire(event);
|
|
3040
3055
|
}), this.droptarget);
|
|
3041
3056
|
}
|
|
@@ -3067,9 +3082,9 @@ function addGhostImage(dataTransfer, ghostElement) {
|
|
|
3067
3082
|
}
|
|
3068
3083
|
|
|
3069
3084
|
class GroupDragHandler extends DragHandler {
|
|
3070
|
-
constructor(element,
|
|
3085
|
+
constructor(element, accessor, group) {
|
|
3071
3086
|
super(element);
|
|
3072
|
-
this.
|
|
3087
|
+
this.accessor = accessor;
|
|
3073
3088
|
this.group = group;
|
|
3074
3089
|
this.panelTransfer = LocalSelectionTransfer.getInstance();
|
|
3075
3090
|
this.addDisposables(addDisposableListener(element, 'mousedown', (e) => {
|
|
@@ -3089,8 +3104,9 @@ class GroupDragHandler extends DragHandler {
|
|
|
3089
3104
|
}
|
|
3090
3105
|
return false;
|
|
3091
3106
|
}
|
|
3092
|
-
getData(
|
|
3093
|
-
|
|
3107
|
+
getData(dragEvent) {
|
|
3108
|
+
const dataTransfer = dragEvent.dataTransfer;
|
|
3109
|
+
this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);
|
|
3094
3110
|
const style = window.getComputedStyle(this.el);
|
|
3095
3111
|
const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');
|
|
3096
3112
|
const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');
|
|
@@ -3125,14 +3141,16 @@ class VoidContainer extends CompositeDisposable {
|
|
|
3125
3141
|
this.group = group;
|
|
3126
3142
|
this._onDrop = new Emitter();
|
|
3127
3143
|
this.onDrop = this._onDrop.event;
|
|
3144
|
+
this._onDragStart = new Emitter();
|
|
3145
|
+
this.onDragStart = this._onDragStart.event;
|
|
3128
3146
|
this._element = document.createElement('div');
|
|
3129
3147
|
this._element.className = 'void-container';
|
|
3130
3148
|
this._element.tabIndex = 0;
|
|
3131
3149
|
this._element.draggable = true;
|
|
3132
|
-
this.addDisposables(this._onDrop, addDisposableListener(this._element, 'click', () => {
|
|
3150
|
+
this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'click', () => {
|
|
3133
3151
|
this.accessor.doSetGroupActive(this.group);
|
|
3134
3152
|
}));
|
|
3135
|
-
const handler = new GroupDragHandler(this._element, accessor
|
|
3153
|
+
const handler = new GroupDragHandler(this._element, accessor, group);
|
|
3136
3154
|
this.voidDropTarget = new Droptarget(this._element, {
|
|
3137
3155
|
acceptedTargetZones: ['center'],
|
|
3138
3156
|
canDisplayOverlay: (event, position) => {
|
|
@@ -3150,7 +3168,9 @@ class VoidContainer extends CompositeDisposable {
|
|
|
3150
3168
|
return group.model.canDisplayOverlay(event, position, exports.DockviewDropTargets.Panel);
|
|
3151
3169
|
},
|
|
3152
3170
|
});
|
|
3153
|
-
this.addDisposables(handler,
|
|
3171
|
+
this.addDisposables(handler, handler.onDragStart((event) => {
|
|
3172
|
+
this._onDragStart.fire(event);
|
|
3173
|
+
}), this.voidDropTarget.onDrop((event) => {
|
|
3154
3174
|
this._onDrop.fire(event);
|
|
3155
3175
|
}), this.voidDropTarget);
|
|
3156
3176
|
}
|
|
@@ -3158,7 +3178,7 @@ class VoidContainer extends CompositeDisposable {
|
|
|
3158
3178
|
|
|
3159
3179
|
class TabsContainer extends CompositeDisposable {
|
|
3160
3180
|
get panels() {
|
|
3161
|
-
return this.tabs.map((_) => _.value.
|
|
3181
|
+
return this.tabs.map((_) => _.value.panel.id);
|
|
3162
3182
|
}
|
|
3163
3183
|
get size() {
|
|
3164
3184
|
return this.tabs.length;
|
|
@@ -3212,7 +3232,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3212
3232
|
this.tabs[this.selectedIndex].value === tab);
|
|
3213
3233
|
}
|
|
3214
3234
|
indexOf(id) {
|
|
3215
|
-
return this.tabs.findIndex((tab) => tab.value.
|
|
3235
|
+
return this.tabs.findIndex((tab) => tab.value.panel.id === id);
|
|
3216
3236
|
}
|
|
3217
3237
|
constructor(accessor, group) {
|
|
3218
3238
|
super();
|
|
@@ -3223,7 +3243,11 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3223
3243
|
this._hidden = false;
|
|
3224
3244
|
this._onDrop = new Emitter();
|
|
3225
3245
|
this.onDrop = this._onDrop.event;
|
|
3226
|
-
this.
|
|
3246
|
+
this._onTabDragStart = new Emitter();
|
|
3247
|
+
this.onTabDragStart = this._onTabDragStart.event;
|
|
3248
|
+
this._onGroupDragStart = new Emitter();
|
|
3249
|
+
this.onGroupDragStart = this._onGroupDragStart.event;
|
|
3250
|
+
this.addDisposables(this._onDrop, this._onTabDragStart, this._onGroupDragStart);
|
|
3227
3251
|
this._element = document.createElement('div');
|
|
3228
3252
|
this._element.className = 'tabs-and-actions-container';
|
|
3229
3253
|
toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
|
|
@@ -3247,7 +3271,12 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3247
3271
|
this._element.appendChild(this.leftActionsContainer);
|
|
3248
3272
|
this._element.appendChild(this.voidContainer.element);
|
|
3249
3273
|
this._element.appendChild(this.rightActionsContainer);
|
|
3250
|
-
this.addDisposables(this.voidContainer, this.voidContainer.
|
|
3274
|
+
this.addDisposables(this.voidContainer, this.voidContainer.onDragStart((event) => {
|
|
3275
|
+
this._onGroupDragStart.fire({
|
|
3276
|
+
nativeEvent: event,
|
|
3277
|
+
group: this.group,
|
|
3278
|
+
});
|
|
3279
|
+
}), this.voidContainer.onDrop((event) => {
|
|
3251
3280
|
this._onDrop.fire({
|
|
3252
3281
|
event: event.nativeEvent,
|
|
3253
3282
|
index: this.tabs.length,
|
|
@@ -3293,7 +3322,7 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3293
3322
|
}
|
|
3294
3323
|
}
|
|
3295
3324
|
delete(id) {
|
|
3296
|
-
const index = this.tabs.findIndex((tab) => tab.value.
|
|
3325
|
+
const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);
|
|
3297
3326
|
const tabToRemove = this.tabs.splice(index, 1)[0];
|
|
3298
3327
|
const { value, disposable } = tabToRemove;
|
|
3299
3328
|
disposable.dispose();
|
|
@@ -3302,21 +3331,23 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3302
3331
|
}
|
|
3303
3332
|
setActivePanel(panel) {
|
|
3304
3333
|
this.tabs.forEach((tab) => {
|
|
3305
|
-
const isActivePanel = panel.id === tab.value.
|
|
3334
|
+
const isActivePanel = panel.id === tab.value.panel.id;
|
|
3306
3335
|
tab.value.setActive(isActivePanel);
|
|
3307
3336
|
});
|
|
3308
3337
|
}
|
|
3309
3338
|
openPanel(panel, index = this.tabs.length) {
|
|
3310
3339
|
var _a;
|
|
3311
|
-
if (this.tabs.find((tab) => tab.value.
|
|
3340
|
+
if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {
|
|
3312
3341
|
return;
|
|
3313
3342
|
}
|
|
3314
|
-
const
|
|
3343
|
+
const tab = new Tab(panel, this.accessor, this.group);
|
|
3315
3344
|
if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {
|
|
3316
3345
|
throw new Error('invalid header component');
|
|
3317
3346
|
}
|
|
3318
|
-
|
|
3319
|
-
const disposable = CompositeDisposable
|
|
3347
|
+
tab.setContent(panel.view.tab);
|
|
3348
|
+
const disposable = new CompositeDisposable(tab.onDragStart((event) => {
|
|
3349
|
+
this._onTabDragStart.fire({ nativeEvent: event, panel });
|
|
3350
|
+
}), tab.onChanged((event) => {
|
|
3320
3351
|
var _a;
|
|
3321
3352
|
const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
|
|
3322
3353
|
const isFloatingWithOnePanel = this.group.api.isFloating && this.size === 1;
|
|
@@ -3324,8 +3355,8 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3324
3355
|
!isFloatingWithOnePanel &&
|
|
3325
3356
|
event.shiftKey) {
|
|
3326
3357
|
event.preventDefault();
|
|
3327
|
-
const panel = this.accessor.getGroupPanel(
|
|
3328
|
-
const { top, left } =
|
|
3358
|
+
const panel = this.accessor.getGroupPanel(tab.panel.id);
|
|
3359
|
+
const { top, left } = tab.element.getBoundingClientRect();
|
|
3329
3360
|
const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
|
|
3330
3361
|
this.accessor.addFloatingGroup(panel, {
|
|
3331
3362
|
x: left - rootLeft,
|
|
@@ -3342,13 +3373,13 @@ class TabsContainer extends CompositeDisposable {
|
|
|
3342
3373
|
this.group.model.openPanel(panel, {
|
|
3343
3374
|
skipFocus: alreadyFocused,
|
|
3344
3375
|
});
|
|
3345
|
-
}),
|
|
3376
|
+
}), tab.onDrop((event) => {
|
|
3346
3377
|
this._onDrop.fire({
|
|
3347
3378
|
event: event.nativeEvent,
|
|
3348
|
-
index: this.tabs.findIndex((x) => x.value ===
|
|
3379
|
+
index: this.tabs.findIndex((x) => x.value === tab),
|
|
3349
3380
|
});
|
|
3350
3381
|
}));
|
|
3351
|
-
const value = { value:
|
|
3382
|
+
const value = { value: tab, disposable };
|
|
3352
3383
|
this.addTab(value, index);
|
|
3353
3384
|
}
|
|
3354
3385
|
closePanel(panel) {
|
|
@@ -3376,7 +3407,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3376
3407
|
}
|
|
3377
3408
|
set locked(value) {
|
|
3378
3409
|
this._locked = value;
|
|
3379
|
-
toggleClass(this.container, 'locked-groupview', value);
|
|
3410
|
+
toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);
|
|
3380
3411
|
}
|
|
3381
3412
|
get isActive() {
|
|
3382
3413
|
return this._isGroupActive;
|
|
@@ -3433,6 +3464,10 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3433
3464
|
this.onMove = this._onMove.event;
|
|
3434
3465
|
this._onDidDrop = new Emitter();
|
|
3435
3466
|
this.onDidDrop = this._onDidDrop.event;
|
|
3467
|
+
this._onTabDragStart = new Emitter();
|
|
3468
|
+
this.onTabDragStart = this._onTabDragStart.event;
|
|
3469
|
+
this._onGroupDragStart = new Emitter();
|
|
3470
|
+
this.onGroupDragStart = this._onGroupDragStart.event;
|
|
3436
3471
|
this._onDidAddPanel = new Emitter();
|
|
3437
3472
|
this.onDidAddPanel = this._onDidAddPanel.event;
|
|
3438
3473
|
this._onDidRemovePanel = new Emitter();
|
|
@@ -3445,7 +3480,8 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3445
3480
|
this.dropTarget = new Droptarget(this.contentContainer.element, {
|
|
3446
3481
|
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
3447
3482
|
canDisplayOverlay: (event, position) => {
|
|
3448
|
-
if (this.locked
|
|
3483
|
+
if (this.locked === 'no-drop-target' ||
|
|
3484
|
+
(this.locked && position === 'center')) {
|
|
3449
3485
|
return false;
|
|
3450
3486
|
}
|
|
3451
3487
|
const data = getPanelData();
|
|
@@ -3471,8 +3507,12 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3471
3507
|
});
|
|
3472
3508
|
container.append(this.tabsContainer.element, this.contentContainer.element);
|
|
3473
3509
|
this.header.hidden = !!options.hideHeader;
|
|
3474
|
-
this.locked =
|
|
3475
|
-
this.addDisposables(this.tabsContainer.
|
|
3510
|
+
this.locked = options.locked || false;
|
|
3511
|
+
this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this.tabsContainer.onTabDragStart((event) => {
|
|
3512
|
+
this._onTabDragStart.fire(event);
|
|
3513
|
+
}), this.tabsContainer.onGroupDragStart((event) => {
|
|
3514
|
+
this._onGroupDragStart.fire(event);
|
|
3515
|
+
}), this.tabsContainer.onDrop((event) => {
|
|
3476
3516
|
this.handleDropEvent(event.event, 'center', event.index);
|
|
3477
3517
|
}), this.contentContainer.onDidFocus(() => {
|
|
3478
3518
|
this.accessor.doSetGroupActive(this.groupPanel, true);
|
|
@@ -3527,8 +3567,8 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3527
3567
|
activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
|
|
3528
3568
|
id: this.id,
|
|
3529
3569
|
};
|
|
3530
|
-
if (this.locked) {
|
|
3531
|
-
result.locked =
|
|
3570
|
+
if (this.locked !== false) {
|
|
3571
|
+
result.locked = this.locked;
|
|
3532
3572
|
}
|
|
3533
3573
|
if (this.header.hidden) {
|
|
3534
3574
|
result.hideHeader = true;
|
|
@@ -3778,6 +3818,9 @@ class DockviewGroupPanelModel extends CompositeDisposable {
|
|
|
3778
3818
|
return false;
|
|
3779
3819
|
}
|
|
3780
3820
|
handleDropEvent(event, position, index) {
|
|
3821
|
+
if (this.locked === 'no-drop-target') {
|
|
3822
|
+
return;
|
|
3823
|
+
}
|
|
3781
3824
|
const data = getPanelData();
|
|
3782
3825
|
if (data && data.viewId === this.accessor.id) {
|
|
3783
3826
|
if (data.panelId === null) {
|
|
@@ -5235,6 +5278,12 @@ const bringElementToFront = (() => {
|
|
|
5235
5278
|
return pushToTop;
|
|
5236
5279
|
})();
|
|
5237
5280
|
class Overlay extends CompositeDisposable {
|
|
5281
|
+
set minimumInViewportWidth(value) {
|
|
5282
|
+
this.options.minimumInViewportWidth = value;
|
|
5283
|
+
}
|
|
5284
|
+
set minimumInViewportHeight(value) {
|
|
5285
|
+
this.options.minimumInViewportHeight = value;
|
|
5286
|
+
}
|
|
5238
5287
|
constructor(options) {
|
|
5239
5288
|
super();
|
|
5240
5289
|
this.options = options;
|
|
@@ -5280,9 +5329,11 @@ class Overlay extends CompositeDisposable {
|
|
|
5280
5329
|
const overlayRect = this._element.getBoundingClientRect();
|
|
5281
5330
|
// region: ensure bounds within allowable limits
|
|
5282
5331
|
// a minimum width of minimumViewportWidth must be inside the viewport
|
|
5283
|
-
const xOffset = Math.max(0, overlayRect.width
|
|
5332
|
+
const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
|
|
5284
5333
|
// a minimum height of minimumViewportHeight must be inside the viewport
|
|
5285
|
-
const yOffset =
|
|
5334
|
+
const yOffset = typeof this.options.minimumInViewportHeight === 'number'
|
|
5335
|
+
? Math.max(0, this.getMinimumHeight(overlayRect.height))
|
|
5336
|
+
: 0;
|
|
5286
5337
|
const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
|
|
5287
5338
|
const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
|
|
5288
5339
|
this._element.style.left = `${left}px`;
|
|
@@ -5328,9 +5379,10 @@ class Overlay extends CompositeDisposable {
|
|
|
5328
5379
|
y: e.clientY - overlayRect.top,
|
|
5329
5380
|
};
|
|
5330
5381
|
}
|
|
5331
|
-
const xOffset = Math.max(0, overlayRect.width
|
|
5332
|
-
const yOffset = Math.max(0,
|
|
5333
|
-
this.
|
|
5382
|
+
const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
|
|
5383
|
+
const yOffset = Math.max(0, this.options.minimumInViewportHeight
|
|
5384
|
+
? this.getMinimumHeight(overlayRect.height)
|
|
5385
|
+
: 0);
|
|
5334
5386
|
const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
|
|
5335
5387
|
const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
|
|
5336
5388
|
this.setBounds({ top, left });
|
|
@@ -5404,14 +5456,11 @@ class Overlay extends CompositeDisposable {
|
|
|
5404
5456
|
let height = undefined;
|
|
5405
5457
|
let left = undefined;
|
|
5406
5458
|
let width = undefined;
|
|
5407
|
-
const
|
|
5408
|
-
const minimumInViewportWidth = this.options.minimumInViewportWidth;
|
|
5409
|
-
function moveTop() {
|
|
5459
|
+
const moveTop = () => {
|
|
5410
5460
|
top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +
|
|
5411
5461
|
startPosition.originalHeight >
|
|
5412
5462
|
containerRect.height
|
|
5413
|
-
? containerRect.height
|
|
5414
|
-
minimumInViewportHeight
|
|
5463
|
+
? this.getMinimumHeight(containerRect.height)
|
|
5415
5464
|
: Math.max(0, startPosition.originalY +
|
|
5416
5465
|
startPosition.originalHeight -
|
|
5417
5466
|
Overlay.MINIMUM_HEIGHT));
|
|
@@ -5419,21 +5468,23 @@ class Overlay extends CompositeDisposable {
|
|
|
5419
5468
|
startPosition.originalY +
|
|
5420
5469
|
startPosition.originalHeight -
|
|
5421
5470
|
top;
|
|
5422
|
-
}
|
|
5423
|
-
|
|
5471
|
+
};
|
|
5472
|
+
const moveBottom = () => {
|
|
5424
5473
|
top =
|
|
5425
5474
|
startPosition.originalY -
|
|
5426
5475
|
startPosition.originalHeight;
|
|
5427
|
-
height = clamp(y - top, top < 0
|
|
5428
|
-
|
|
5476
|
+
height = clamp(y - top, top < 0 &&
|
|
5477
|
+
typeof this.options
|
|
5478
|
+
.minimumInViewportHeight === 'number'
|
|
5479
|
+
? -top +
|
|
5480
|
+
this.options.minimumInViewportHeight
|
|
5429
5481
|
: Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);
|
|
5430
|
-
}
|
|
5431
|
-
|
|
5482
|
+
};
|
|
5483
|
+
const moveLeft = () => {
|
|
5432
5484
|
left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +
|
|
5433
5485
|
startPosition.originalWidth >
|
|
5434
5486
|
containerRect.width
|
|
5435
|
-
? containerRect.width
|
|
5436
|
-
minimumInViewportWidth
|
|
5487
|
+
? this.getMinimumWidth(containerRect.width)
|
|
5437
5488
|
: Math.max(0, startPosition.originalX +
|
|
5438
5489
|
startPosition.originalWidth -
|
|
5439
5490
|
Overlay.MINIMUM_WIDTH));
|
|
@@ -5441,15 +5492,18 @@ class Overlay extends CompositeDisposable {
|
|
|
5441
5492
|
startPosition.originalX +
|
|
5442
5493
|
startPosition.originalWidth -
|
|
5443
5494
|
left;
|
|
5444
|
-
}
|
|
5445
|
-
|
|
5495
|
+
};
|
|
5496
|
+
const moveRight = () => {
|
|
5446
5497
|
left =
|
|
5447
5498
|
startPosition.originalX -
|
|
5448
5499
|
startPosition.originalWidth;
|
|
5449
|
-
width = clamp(x - left, left < 0
|
|
5450
|
-
|
|
5500
|
+
width = clamp(x - left, left < 0 &&
|
|
5501
|
+
typeof this.options
|
|
5502
|
+
.minimumInViewportWidth === 'number'
|
|
5503
|
+
? -left +
|
|
5504
|
+
this.options.minimumInViewportWidth
|
|
5451
5505
|
: Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);
|
|
5452
|
-
}
|
|
5506
|
+
};
|
|
5453
5507
|
switch (direction) {
|
|
5454
5508
|
case 'top':
|
|
5455
5509
|
moveTop();
|
|
@@ -5493,6 +5547,18 @@ class Overlay extends CompositeDisposable {
|
|
|
5493
5547
|
}));
|
|
5494
5548
|
}));
|
|
5495
5549
|
}
|
|
5550
|
+
getMinimumWidth(width) {
|
|
5551
|
+
if (typeof this.options.minimumInViewportWidth === 'number') {
|
|
5552
|
+
return width - this.options.minimumInViewportWidth;
|
|
5553
|
+
}
|
|
5554
|
+
return 0;
|
|
5555
|
+
}
|
|
5556
|
+
getMinimumHeight(height) {
|
|
5557
|
+
if (typeof this.options.minimumInViewportHeight === 'number') {
|
|
5558
|
+
return height - this.options.minimumInViewportHeight;
|
|
5559
|
+
}
|
|
5560
|
+
return height;
|
|
5561
|
+
}
|
|
5496
5562
|
dispose() {
|
|
5497
5563
|
this._element.remove();
|
|
5498
5564
|
super.dispose();
|
|
@@ -5513,6 +5579,7 @@ class DockviewFloatingGroupPanel extends CompositeDisposable {
|
|
|
5513
5579
|
}
|
|
5514
5580
|
}
|
|
5515
5581
|
|
|
5582
|
+
const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
|
|
5516
5583
|
class DockviewComponent extends BaseGrid {
|
|
5517
5584
|
get orientation() {
|
|
5518
5585
|
return this.gridview.orientation;
|
|
@@ -5543,6 +5610,10 @@ class DockviewComponent extends BaseGrid {
|
|
|
5543
5610
|
this.nextGroupId = sequentialNumberGenerator();
|
|
5544
5611
|
this._deserializer = new DefaultDockviewDeserialzier(this);
|
|
5545
5612
|
this.watermark = null;
|
|
5613
|
+
this._onWillDragPanel = new Emitter();
|
|
5614
|
+
this.onWillDragPanel = this._onWillDragPanel.event;
|
|
5615
|
+
this._onWillDragGroup = new Emitter();
|
|
5616
|
+
this.onWillDragGroup = this._onWillDragGroup.event;
|
|
5546
5617
|
this._onDidDrop = new Emitter();
|
|
5547
5618
|
this.onDidDrop = this._onDidDrop.event;
|
|
5548
5619
|
this._onDidRemovePanel = new Emitter();
|
|
@@ -5555,7 +5626,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
5555
5626
|
this.onDidActivePanelChange = this._onDidActivePanelChange.event;
|
|
5556
5627
|
this.floatingGroups = [];
|
|
5557
5628
|
toggleClass(this.gridview.element, 'dv-dockview', true);
|
|
5558
|
-
this.addDisposables(this._onDidDrop, exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
|
|
5629
|
+
this.addDisposables(this._onWillDragPanel, this._onWillDragGroup, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, exports.DockviewEvent.any(this.onDidAddGroup, this.onDidRemoveGroup)(() => {
|
|
5559
5630
|
this.updateWatermark();
|
|
5560
5631
|
}), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
|
|
5561
5632
|
this._bufferOnDidLayoutChange.fire();
|
|
@@ -5592,7 +5663,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
5592
5663
|
return true;
|
|
5593
5664
|
}
|
|
5594
5665
|
if (this.options.showDndOverlay) {
|
|
5595
|
-
if (position === 'center') {
|
|
5666
|
+
if (position === 'center' && this.gridview.length !== 0) {
|
|
5596
5667
|
/**
|
|
5597
5668
|
* for external events only show the four-corner drag overlays, disable
|
|
5598
5669
|
* the center position so that external drag events can fall through to the group
|
|
@@ -5628,7 +5699,7 @@ class DockviewComponent extends BaseGrid {
|
|
|
5628
5699
|
this.updateWatermark();
|
|
5629
5700
|
}
|
|
5630
5701
|
addFloatingGroup(item, coord, options) {
|
|
5631
|
-
var _a, _b;
|
|
5702
|
+
var _a, _b, _c, _d, _e, _f;
|
|
5632
5703
|
let group;
|
|
5633
5704
|
if (item instanceof DockviewPanel) {
|
|
5634
5705
|
group = this.createGroup();
|
|
@@ -5656,8 +5727,12 @@ class DockviewComponent extends BaseGrid {
|
|
|
5656
5727
|
width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
|
|
5657
5728
|
left: overlayLeft,
|
|
5658
5729
|
top: overlayTop,
|
|
5659
|
-
minimumInViewportWidth:
|
|
5660
|
-
|
|
5730
|
+
minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
|
|
5731
|
+
? undefined
|
|
5732
|
+
: (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
|
|
5733
|
+
minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
|
|
5734
|
+
? undefined
|
|
5735
|
+
: (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
|
|
5661
5736
|
});
|
|
5662
5737
|
const el = group.element.querySelector('.void-container');
|
|
5663
5738
|
if (!el) {
|
|
@@ -5728,12 +5803,37 @@ class DockviewComponent extends BaseGrid {
|
|
|
5728
5803
|
}
|
|
5729
5804
|
}
|
|
5730
5805
|
updateOptions(options) {
|
|
5806
|
+
var _a, _b;
|
|
5731
5807
|
const hasOrientationChanged = typeof options.orientation === 'string' &&
|
|
5732
5808
|
this.gridview.orientation !== options.orientation;
|
|
5809
|
+
const hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&
|
|
5810
|
+
options.floatingGroupBounds !== this.options.floatingGroupBounds;
|
|
5733
5811
|
this._options = Object.assign(Object.assign({}, this.options), options);
|
|
5734
5812
|
if (hasOrientationChanged) {
|
|
5735
5813
|
this.gridview.orientation = options.orientation;
|
|
5736
5814
|
}
|
|
5815
|
+
if (hasFloatingGroupOptionsChanged) {
|
|
5816
|
+
for (const group of this.floatingGroups) {
|
|
5817
|
+
switch (this.options.floatingGroupBounds) {
|
|
5818
|
+
case 'boundedWithinViewport':
|
|
5819
|
+
group.overlay.minimumInViewportHeight = undefined;
|
|
5820
|
+
group.overlay.minimumInViewportWidth = undefined;
|
|
5821
|
+
break;
|
|
5822
|
+
case undefined:
|
|
5823
|
+
group.overlay.minimumInViewportHeight =
|
|
5824
|
+
DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
|
|
5825
|
+
group.overlay.minimumInViewportWidth =
|
|
5826
|
+
DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
|
|
5827
|
+
break;
|
|
5828
|
+
default:
|
|
5829
|
+
group.overlay.minimumInViewportHeight =
|
|
5830
|
+
(_a = this.options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;
|
|
5831
|
+
group.overlay.minimumInViewportWidth =
|
|
5832
|
+
(_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;
|
|
5833
|
+
}
|
|
5834
|
+
group.overlay.setBounds({});
|
|
5835
|
+
}
|
|
5836
|
+
}
|
|
5737
5837
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
5738
5838
|
}
|
|
5739
5839
|
layout(width, height, forceResize) {
|
|
@@ -6216,7 +6316,11 @@ class DockviewComponent extends BaseGrid {
|
|
|
6216
6316
|
const view = new DockviewGroupPanel(this, id, options);
|
|
6217
6317
|
view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
|
|
6218
6318
|
if (!this._groups.has(view.id)) {
|
|
6219
|
-
const disposable = new CompositeDisposable(view.model.
|
|
6319
|
+
const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {
|
|
6320
|
+
this._onWillDragPanel.fire(event);
|
|
6321
|
+
}), view.model.onGroupDragStart((event) => {
|
|
6322
|
+
this._onWillDragGroup.fire(event);
|
|
6323
|
+
}), view.model.onMove((event) => {
|
|
6220
6324
|
const { groupId, itemId, target, index } = event;
|
|
6221
6325
|
this.moveGroupOrPanel(view, groupId, itemId, target, index);
|
|
6222
6326
|
}), view.model.onDidDrop((event) => {
|
|
@@ -6255,13 +6359,6 @@ class DockviewComponent extends BaseGrid {
|
|
|
6255
6359
|
var _a;
|
|
6256
6360
|
return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;
|
|
6257
6361
|
}
|
|
6258
|
-
dispose() {
|
|
6259
|
-
this._onDidActivePanelChange.dispose();
|
|
6260
|
-
this._onDidAddPanel.dispose();
|
|
6261
|
-
this._onDidRemovePanel.dispose();
|
|
6262
|
-
this._onDidLayoutFromJSON.dispose();
|
|
6263
|
-
super.dispose();
|
|
6264
|
-
}
|
|
6265
6362
|
}
|
|
6266
6363
|
|
|
6267
6364
|
class GridviewComponent extends BaseGrid {
|