dockview-core 1.7.6 → 1.8.1
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/README.md +2 -1
- package/dist/cjs/api/component.api.d.ts +6 -1
- package/dist/cjs/api/component.api.d.ts.map +1 -1
- package/dist/cjs/api/component.api.js +6 -0
- package/dist/cjs/api/component.api.js.map +1 -1
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts +30 -0
- package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +1 -0
- package/dist/cjs/api/dockviewGroupPanelApi.js +54 -0
- package/dist/cjs/api/dockviewGroupPanelApi.js.map +1 -0
- package/dist/cjs/api/dockviewPanelApi.d.ts +14 -1
- package/dist/cjs/api/dockviewPanelApi.d.ts.map +1 -1
- package/dist/cjs/api/dockviewPanelApi.js +6 -1
- package/dist/cjs/api/dockviewPanelApi.js.map +1 -1
- package/dist/cjs/array.d.ts +1 -0
- package/dist/cjs/array.d.ts.map +1 -1
- package/dist/cjs/array.js +10 -1
- package/dist/cjs/array.js.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.d.ts +1 -0
- package/dist/cjs/dnd/abstractDragHandler.d.ts.map +1 -1
- package/dist/cjs/dnd/abstractDragHandler.js +7 -0
- package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
- package/dist/cjs/dnd/droptarget.d.ts +11 -0
- package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
- package/dist/cjs/dnd/droptarget.js +32 -9
- package/dist/cjs/dnd/droptarget.js.map +1 -1
- package/dist/cjs/dnd/groupDragHandler.d.ts +1 -0
- package/dist/cjs/dnd/groupDragHandler.d.ts.map +1 -1
- package/dist/cjs/dnd/groupDragHandler.js +18 -0
- package/dist/cjs/dnd/groupDragHandler.js.map +1 -1
- package/dist/cjs/dnd/overlay.d.ts +40 -0
- package/dist/cjs/dnd/overlay.d.ts.map +1 -0
- package/dist/cjs/dnd/overlay.js +382 -0
- package/dist/cjs/dnd/overlay.js.map +1 -0
- package/dist/cjs/dockview/components/tab/tab.d.ts +2 -2
- package/dist/cjs/dockview/components/tab/tab.d.ts.map +1 -1
- package/dist/cjs/dockview/components/tab/tab.js +0 -7
- package/dist/cjs/dockview/components/tab/tab.js.map +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +8 -4
- package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +1 -1
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js +54 -10
- package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/cjs/dockview/deserializer.d.ts +2 -2
- package/dist/cjs/dockview/deserializer.d.ts.map +1 -1
- package/dist/cjs/dockview/deserializer.js.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.d.ts +41 -9
- package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewComponent.js +285 -76
- package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +24 -0
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts.map +1 -0
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +35 -0
- package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +1 -0
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -6
- package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanel.js +3 -2
- package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +5 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewGroupPanelModel.js +43 -12
- package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/cjs/dockview/dockviewPanel.d.ts +2 -2
- package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/cjs/dockview/dockviewPanel.js +1 -1
- package/dist/cjs/dockview/dockviewPanel.js.map +1 -1
- package/dist/cjs/dockview/options.d.ts +22 -6
- package/dist/cjs/dockview/options.d.ts.map +1 -1
- package/dist/cjs/dockview/options.js.map +1 -1
- package/dist/cjs/dom.d.ts +5 -3
- package/dist/cjs/dom.d.ts.map +1 -1
- package/dist/cjs/dom.js +13 -1
- package/dist/cjs/dom.js.map +1 -1
- package/dist/cjs/events.d.ts.map +1 -1
- package/dist/cjs/gridview/branchNode.js +2 -2
- package/dist/cjs/gridview/branchNode.js.map +1 -1
- package/dist/cjs/gridview/gridview.d.ts.map +1 -1
- package/dist/cjs/gridview/gridview.js +9 -7
- package/dist/cjs/gridview/gridview.js.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.d.ts.map +1 -1
- package/dist/cjs/gridview/gridviewComponent.js +4 -1
- package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.d.ts +3 -3
- package/dist/cjs/gridview/gridviewPanel.d.ts.map +1 -1
- package/dist/cjs/gridview/gridviewPanel.js +2 -2
- package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/math.d.ts.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.d.ts.map +1 -1
- package/dist/cjs/paneview/paneviewComponent.js +4 -1
- package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.d.ts.map +1 -1
- package/dist/cjs/splitview/splitviewComponent.js +4 -1
- package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
- package/dist/dockview-core.amd.js +772 -133
- package/dist/dockview-core.amd.js.map +1 -0
- package/dist/dockview-core.amd.min.js +3 -2
- package/dist/dockview-core.amd.min.js.map +1 -0
- package/dist/dockview-core.amd.min.noStyle.js +3 -2
- package/dist/dockview-core.amd.min.noStyle.js.map +1 -0
- package/dist/dockview-core.amd.noStyle.js +771 -132
- package/dist/dockview-core.amd.noStyle.js.map +1 -0
- package/dist/dockview-core.cjs.js +772 -133
- package/dist/dockview-core.cjs.js.map +1 -0
- package/dist/dockview-core.esm.js +773 -133
- package/dist/dockview-core.esm.js.map +1 -0
- package/dist/dockview-core.esm.min.js +3 -2
- package/dist/dockview-core.esm.min.js.map +1 -0
- package/dist/dockview-core.js +772 -133
- package/dist/dockview-core.js.map +1 -0
- package/dist/dockview-core.min.js +3 -2
- package/dist/dockview-core.min.js.map +1 -0
- package/dist/dockview-core.min.noStyle.js +3 -2
- package/dist/dockview-core.min.noStyle.js.map +1 -0
- package/dist/dockview-core.noStyle.js +771 -132
- package/dist/dockview-core.noStyle.js.map +1 -0
- package/dist/esm/api/component.api.d.ts +6 -1
- 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/api/dockviewGroupPanelApi.d.ts +30 -0
- package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +1 -0
- package/dist/esm/api/dockviewGroupPanelApi.js +28 -0
- package/dist/esm/api/dockviewGroupPanelApi.js.map +1 -0
- package/dist/esm/api/dockviewPanelApi.d.ts +14 -1
- package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -1
- package/dist/esm/api/dockviewPanelApi.js +6 -1
- package/dist/esm/api/dockviewPanelApi.js.map +1 -1
- package/dist/esm/array.d.ts +1 -0
- package/dist/esm/array.d.ts.map +1 -1
- package/dist/esm/array.js +8 -0
- package/dist/esm/array.js.map +1 -1
- package/dist/esm/dnd/abstractDragHandler.d.ts +1 -0
- package/dist/esm/dnd/abstractDragHandler.d.ts.map +1 -1
- package/dist/esm/dnd/abstractDragHandler.js +7 -0
- package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
- package/dist/esm/dnd/droptarget.d.ts +11 -0
- package/dist/esm/dnd/droptarget.d.ts.map +1 -1
- package/dist/esm/dnd/droptarget.js +32 -9
- package/dist/esm/dnd/droptarget.js.map +1 -1
- package/dist/esm/dnd/groupDragHandler.d.ts +1 -0
- package/dist/esm/dnd/groupDragHandler.d.ts.map +1 -1
- package/dist/esm/dnd/groupDragHandler.js +18 -0
- package/dist/esm/dnd/groupDragHandler.js.map +1 -1
- package/dist/esm/dnd/overlay.d.ts +40 -0
- package/dist/esm/dnd/overlay.d.ts.map +1 -0
- package/dist/esm/dnd/overlay.js +282 -0
- package/dist/esm/dnd/overlay.js.map +1 -0
- package/dist/esm/dockview/components/tab/tab.d.ts +2 -2
- package/dist/esm/dockview/components/tab/tab.d.ts.map +1 -1
- package/dist/esm/dockview/components/tab/tab.js +0 -7
- package/dist/esm/dockview/components/tab/tab.js.map +1 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +8 -4
- package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +1 -1
- package/dist/esm/dockview/components/titlebar/tabsContainer.js +54 -10
- package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -1
- package/dist/esm/dockview/deserializer.d.ts +2 -2
- package/dist/esm/dockview/deserializer.d.ts.map +1 -1
- package/dist/esm/dockview/deserializer.js.map +1 -1
- package/dist/esm/dockview/dockviewComponent.d.ts +41 -9
- package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewComponent.js +231 -54
- package/dist/esm/dockview/dockviewComponent.js.map +1 -1
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +24 -0
- package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts.map +1 -0
- package/dist/esm/dockview/dockviewFloatingGroupPanel.js +13 -0
- package/dist/esm/dockview/dockviewFloatingGroupPanel.js.map +1 -0
- package/dist/esm/dockview/dockviewGroupPanel.d.ts +5 -6
- package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanel.js +3 -2
- package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +5 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewGroupPanelModel.js +36 -9
- package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -1
- package/dist/esm/dockview/dockviewPanel.d.ts +2 -2
- package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -1
- package/dist/esm/dockview/dockviewPanel.js +1 -1
- package/dist/esm/dockview/dockviewPanel.js.map +1 -1
- package/dist/esm/dockview/options.d.ts +22 -6
- package/dist/esm/dockview/options.d.ts.map +1 -1
- package/dist/esm/dockview/options.js.map +1 -1
- package/dist/esm/dom.d.ts +5 -3
- package/dist/esm/dom.d.ts.map +1 -1
- package/dist/esm/dom.js +10 -0
- package/dist/esm/dom.js.map +1 -1
- package/dist/esm/events.d.ts.map +1 -1
- package/dist/esm/gridview/branchNode.js +2 -2
- package/dist/esm/gridview/branchNode.js.map +1 -1
- package/dist/esm/gridview/gridview.d.ts.map +1 -1
- package/dist/esm/gridview/gridview.js +9 -6
- package/dist/esm/gridview/gridview.js.map +1 -1
- package/dist/esm/gridview/gridviewComponent.d.ts.map +1 -1
- package/dist/esm/gridview/gridviewComponent.js +4 -1
- package/dist/esm/gridview/gridviewComponent.js.map +1 -1
- package/dist/esm/gridview/gridviewPanel.d.ts +3 -3
- package/dist/esm/gridview/gridviewPanel.d.ts.map +1 -1
- package/dist/esm/gridview/gridviewPanel.js +2 -2
- package/dist/esm/gridview/gridviewPanel.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/math.d.ts.map +1 -1
- package/dist/esm/math.js.map +1 -1
- package/dist/esm/paneview/paneviewComponent.d.ts.map +1 -1
- package/dist/esm/paneview/paneviewComponent.js +4 -1
- package/dist/esm/paneview/paneviewComponent.js.map +1 -1
- package/dist/esm/splitview/splitviewComponent.d.ts.map +1 -1
- package/dist/esm/splitview/splitviewComponent.js +4 -1
- package/dist/esm/splitview/splitviewComponent.js.map +1 -1
- package/dist/styles/dockview.css +216 -1
- package/package.json +5 -5
|
@@ -81,6 +81,9 @@ var splitview_1 = require("../splitview/splitview");
|
|
|
81
81
|
var dockviewGroupPanel_1 = require("./dockviewGroupPanel");
|
|
82
82
|
var dockviewPanelModel_1 = require("./dockviewPanelModel");
|
|
83
83
|
var dataTransfer_1 = require("../dnd/dataTransfer");
|
|
84
|
+
var overlay_1 = require("../dnd/overlay");
|
|
85
|
+
var dom_1 = require("../dom");
|
|
86
|
+
var dockviewFloatingGroupPanel_1 = require("./dockviewFloatingGroupPanel");
|
|
84
87
|
var DockviewComponent = /** @class */ (function (_super) {
|
|
85
88
|
__extends(DockviewComponent, _super);
|
|
86
89
|
function DockviewComponent(options) {
|
|
@@ -103,7 +106,8 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
103
106
|
_this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
|
|
104
107
|
_this._onDidActivePanelChange = new events_1.Emitter();
|
|
105
108
|
_this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
|
|
106
|
-
_this.
|
|
109
|
+
_this.floatingGroups = [];
|
|
110
|
+
(0, dom_1.toggleClass)(_this.gridview.element, 'dv-dockview', true);
|
|
107
111
|
_this.addDisposables(_this._onDidDrop, events_1.Event.any(_this.onDidAddGroup, _this.onDidRemoveGroup)(function () {
|
|
108
112
|
_this.updateWatermark();
|
|
109
113
|
}), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidActivePanelChange)(function () {
|
|
@@ -133,9 +137,22 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
133
137
|
if (data.viewId !== _this.id) {
|
|
134
138
|
return false;
|
|
135
139
|
}
|
|
140
|
+
if (position === 'center') {
|
|
141
|
+
// center drop target is only allowed if there are no panels in the grid
|
|
142
|
+
// floating panels are allowed
|
|
143
|
+
return _this.gridview.length === 0;
|
|
144
|
+
}
|
|
136
145
|
return true;
|
|
137
146
|
}
|
|
138
147
|
if (_this.options.showDndOverlay) {
|
|
148
|
+
if (position === 'center') {
|
|
149
|
+
/**
|
|
150
|
+
* for external events only show the four-corner drag overlays, disable
|
|
151
|
+
* the center position so that external drag events can fall through to the group
|
|
152
|
+
* and panel drop target handlers
|
|
153
|
+
*/
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
139
156
|
return _this.options.showDndOverlay({
|
|
140
157
|
nativeEvent: event,
|
|
141
158
|
position: position,
|
|
@@ -145,7 +162,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
145
162
|
}
|
|
146
163
|
return false;
|
|
147
164
|
},
|
|
148
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right'],
|
|
165
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
149
166
|
overlayModel: {
|
|
150
167
|
activationSize: { type: 'pixels', value: 10 },
|
|
151
168
|
size: { type: 'pixels', value: 20 },
|
|
@@ -203,6 +220,76 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
203
220
|
enumerable: false,
|
|
204
221
|
configurable: true
|
|
205
222
|
});
|
|
223
|
+
DockviewComponent.prototype.addFloatingGroup = function (item, coord, options) {
|
|
224
|
+
var _this = this;
|
|
225
|
+
var _a, _b;
|
|
226
|
+
var group;
|
|
227
|
+
if (item instanceof dockviewPanel_1.DockviewPanel) {
|
|
228
|
+
group = this.createGroup();
|
|
229
|
+
this.removePanel(item, {
|
|
230
|
+
removeEmptyGroup: true,
|
|
231
|
+
skipDispose: true,
|
|
232
|
+
});
|
|
233
|
+
group.model.openPanel(item);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
group = item;
|
|
237
|
+
var skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
238
|
+
options.skipRemoveGroup;
|
|
239
|
+
if (!skip) {
|
|
240
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
group.model.isFloating = true;
|
|
244
|
+
var overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;
|
|
245
|
+
var overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;
|
|
246
|
+
var overlay = new overlay_1.Overlay({
|
|
247
|
+
container: this.gridview.element,
|
|
248
|
+
content: group.element,
|
|
249
|
+
height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
|
|
250
|
+
width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
|
|
251
|
+
left: overlayLeft,
|
|
252
|
+
top: overlayTop,
|
|
253
|
+
minimumInViewportWidth: 100,
|
|
254
|
+
minimumInViewportHeight: 100,
|
|
255
|
+
});
|
|
256
|
+
var el = group.element.querySelector('.void-container');
|
|
257
|
+
if (!el) {
|
|
258
|
+
throw new Error('failed to find drag handle');
|
|
259
|
+
}
|
|
260
|
+
overlay.setupDrag(el, {
|
|
261
|
+
inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'
|
|
262
|
+
? options.inDragMode
|
|
263
|
+
: false,
|
|
264
|
+
});
|
|
265
|
+
var floatingGroupPanel = new dockviewFloatingGroupPanel_1.DockviewFloatingGroupPanel(group, overlay);
|
|
266
|
+
var disposable = (0, dom_1.watchElementResize)(group.element, function (entry) {
|
|
267
|
+
var _a = entry.contentRect, width = _a.width, height = _a.height;
|
|
268
|
+
group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
|
|
269
|
+
});
|
|
270
|
+
floatingGroupPanel.addDisposables(overlay.onDidChange(function () {
|
|
271
|
+
// this is either a resize or a move
|
|
272
|
+
// to inform the panels .layout(...) the group with it's current size
|
|
273
|
+
// don't care about resize since the above watcher handles that
|
|
274
|
+
group.layout(group.height, group.width);
|
|
275
|
+
}), overlay.onDidChangeEnd(function () {
|
|
276
|
+
_this._bufferOnDidLayoutChange.fire();
|
|
277
|
+
}), group.onDidChange(function (event) {
|
|
278
|
+
overlay.setBounds({
|
|
279
|
+
height: event === null || event === void 0 ? void 0 : event.height,
|
|
280
|
+
width: event === null || event === void 0 ? void 0 : event.width,
|
|
281
|
+
});
|
|
282
|
+
}), {
|
|
283
|
+
dispose: function () {
|
|
284
|
+
disposable.dispose();
|
|
285
|
+
group.model.isFloating = false;
|
|
286
|
+
(0, array_1.remove)(_this.floatingGroups, floatingGroupPanel);
|
|
287
|
+
_this.updateWatermark();
|
|
288
|
+
},
|
|
289
|
+
});
|
|
290
|
+
this.floatingGroups.push(floatingGroupPanel);
|
|
291
|
+
this.updateWatermark();
|
|
292
|
+
};
|
|
206
293
|
DockviewComponent.prototype.orthogonalize = function (position) {
|
|
207
294
|
switch (position) {
|
|
208
295
|
case 'top':
|
|
@@ -227,6 +314,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
227
314
|
switch (position) {
|
|
228
315
|
case 'top':
|
|
229
316
|
case 'left':
|
|
317
|
+
case 'center':
|
|
230
318
|
return this.createGroupAtLocation([0]); // insert into first position
|
|
231
319
|
case 'bottom':
|
|
232
320
|
case 'right':
|
|
@@ -244,6 +332,26 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
244
332
|
}
|
|
245
333
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
246
334
|
};
|
|
335
|
+
DockviewComponent.prototype.layout = function (width, height, forceResize) {
|
|
336
|
+
var e_1, _a;
|
|
337
|
+
_super.prototype.layout.call(this, width, height, forceResize);
|
|
338
|
+
if (this.floatingGroups) {
|
|
339
|
+
try {
|
|
340
|
+
for (var _b = __values(this.floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
341
|
+
var floating = _c.value;
|
|
342
|
+
// ensure floting groups stay within visible boundaries
|
|
343
|
+
floating.overlay.setBounds();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
347
|
+
finally {
|
|
348
|
+
try {
|
|
349
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
350
|
+
}
|
|
351
|
+
finally { if (e_1) throw e_1.error; }
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
};
|
|
247
355
|
DockviewComponent.prototype.focus = function () {
|
|
248
356
|
var _a;
|
|
249
357
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
@@ -308,67 +416,118 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
308
416
|
collection[panel.id] = panel.toJSON();
|
|
309
417
|
return collection;
|
|
310
418
|
}, {});
|
|
311
|
-
|
|
419
|
+
var floats = this.floatingGroups.map(function (floatingGroup) {
|
|
420
|
+
return {
|
|
421
|
+
data: floatingGroup.group.toJSON(),
|
|
422
|
+
position: floatingGroup.overlay.toJSON(),
|
|
423
|
+
};
|
|
424
|
+
});
|
|
425
|
+
var result = {
|
|
312
426
|
grid: data,
|
|
313
427
|
panels: panels,
|
|
314
428
|
activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
|
|
315
429
|
};
|
|
430
|
+
if (floats.length > 0) {
|
|
431
|
+
result.floatingGroups = floats;
|
|
432
|
+
}
|
|
433
|
+
return result;
|
|
316
434
|
};
|
|
317
435
|
DockviewComponent.prototype.fromJSON = function (data) {
|
|
436
|
+
var e_2, _a, e_3, _b;
|
|
318
437
|
var _this = this;
|
|
438
|
+
var _c;
|
|
319
439
|
this.clear();
|
|
320
440
|
var grid = data.grid, panels = data.panels, activeGroup = data.activeGroup;
|
|
321
441
|
if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {
|
|
322
442
|
throw new Error('root must be of type branch');
|
|
323
443
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
347
|
-
finally {
|
|
348
|
-
try {
|
|
349
|
-
if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
|
|
350
|
-
}
|
|
351
|
-
finally { if (e_1) throw e_1.error; }
|
|
352
|
-
}
|
|
353
|
-
if (!group.activePanel && group.panels.length > 0) {
|
|
354
|
-
group.model.openPanel(group.panels[group.panels.length - 1], {
|
|
444
|
+
// take note of the existing dimensions
|
|
445
|
+
var width = this.width;
|
|
446
|
+
var height = this.height;
|
|
447
|
+
var createGroupFromSerializedState = function (data) {
|
|
448
|
+
var e_4, _a;
|
|
449
|
+
var id = data.id, locked = data.locked, hideHeader = data.hideHeader, views = data.views, activeView = data.activeView;
|
|
450
|
+
var group = _this.createGroup({
|
|
451
|
+
id: id,
|
|
452
|
+
locked: !!locked,
|
|
453
|
+
hideHeader: !!hideHeader,
|
|
454
|
+
});
|
|
455
|
+
_this._onDidAddGroup.fire(group);
|
|
456
|
+
try {
|
|
457
|
+
for (var views_1 = __values(views), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
|
|
458
|
+
var child = views_1_1.value;
|
|
459
|
+
var panel = _this._deserializer.fromJSON(panels[child], group);
|
|
460
|
+
var isActive = typeof activeView === 'string' && activeView === panel.id;
|
|
461
|
+
group.model.openPanel(panel, {
|
|
462
|
+
skipSetPanelActive: !isActive,
|
|
355
463
|
skipSetGroupActive: true,
|
|
356
464
|
});
|
|
357
465
|
}
|
|
358
|
-
|
|
466
|
+
}
|
|
467
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
468
|
+
finally {
|
|
469
|
+
try {
|
|
470
|
+
if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
|
|
471
|
+
}
|
|
472
|
+
finally { if (e_4) throw e_4.error; }
|
|
473
|
+
}
|
|
474
|
+
if (!group.activePanel && group.panels.length > 0) {
|
|
475
|
+
group.model.openPanel(group.panels[group.panels.length - 1], {
|
|
476
|
+
skipSetGroupActive: true,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
return group;
|
|
480
|
+
};
|
|
481
|
+
this.gridview.deserialize(grid, {
|
|
482
|
+
fromJSON: function (node) {
|
|
483
|
+
return createGroupFromSerializedState(node.data);
|
|
359
484
|
},
|
|
360
485
|
});
|
|
486
|
+
this.layout(width, height, true);
|
|
487
|
+
var serializedFloatingGroups = (_c = data.floatingGroups) !== null && _c !== void 0 ? _c : [];
|
|
488
|
+
try {
|
|
489
|
+
for (var serializedFloatingGroups_1 = __values(serializedFloatingGroups), serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next(); !serializedFloatingGroups_1_1.done; serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next()) {
|
|
490
|
+
var serializedFloatingGroup = serializedFloatingGroups_1_1.value;
|
|
491
|
+
var data_1 = serializedFloatingGroup.data, position = serializedFloatingGroup.position;
|
|
492
|
+
var group = createGroupFromSerializedState(data_1);
|
|
493
|
+
this.addFloatingGroup(group, {
|
|
494
|
+
x: position.left,
|
|
495
|
+
y: position.top,
|
|
496
|
+
height: position.height,
|
|
497
|
+
width: position.width,
|
|
498
|
+
}, { skipRemoveGroup: true, inDragMode: false });
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
502
|
+
finally {
|
|
503
|
+
try {
|
|
504
|
+
if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_a = serializedFloatingGroups_1.return)) _a.call(serializedFloatingGroups_1);
|
|
505
|
+
}
|
|
506
|
+
finally { if (e_2) throw e_2.error; }
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
for (var _d = __values(this.floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
510
|
+
var floatingGroup = _e.value;
|
|
511
|
+
floatingGroup.overlay.setBounds();
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
515
|
+
finally {
|
|
516
|
+
try {
|
|
517
|
+
if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
|
|
518
|
+
}
|
|
519
|
+
finally { if (e_3) throw e_3.error; }
|
|
520
|
+
}
|
|
361
521
|
if (typeof activeGroup === 'string') {
|
|
362
522
|
var panel = this.getPanel(activeGroup);
|
|
363
523
|
if (panel) {
|
|
364
524
|
this.doSetGroupActive(panel);
|
|
365
525
|
}
|
|
366
526
|
}
|
|
367
|
-
this.gridview.layout(this.width, this.height);
|
|
368
527
|
this._onDidLayoutFromJSON.fire();
|
|
369
528
|
};
|
|
370
529
|
DockviewComponent.prototype.clear = function () {
|
|
371
|
-
var
|
|
530
|
+
var e_5, _a;
|
|
372
531
|
var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
|
|
373
532
|
var hasActiveGroup = !!this.activeGroup;
|
|
374
533
|
var hasActivePanel = !!this.activePanel;
|
|
@@ -376,15 +535,15 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
376
535
|
for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
|
|
377
536
|
var group = groups_1_1.value;
|
|
378
537
|
// remove the group will automatically remove the panels
|
|
379
|
-
this.removeGroup(group, true);
|
|
538
|
+
this.removeGroup(group, { skipActive: true });
|
|
380
539
|
}
|
|
381
540
|
}
|
|
382
|
-
catch (
|
|
541
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
383
542
|
finally {
|
|
384
543
|
try {
|
|
385
544
|
if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
|
|
386
545
|
}
|
|
387
|
-
finally { if (
|
|
546
|
+
finally { if (e_5) throw e_5.error; }
|
|
388
547
|
}
|
|
389
548
|
if (hasActiveGroup) {
|
|
390
549
|
this.doSetGroupActive(undefined);
|
|
@@ -395,7 +554,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
395
554
|
this.gridview.clear();
|
|
396
555
|
};
|
|
397
556
|
DockviewComponent.prototype.closeAllGroups = function () {
|
|
398
|
-
var
|
|
557
|
+
var e_6, _a;
|
|
399
558
|
try {
|
|
400
559
|
for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
401
560
|
var entry = _c.value;
|
|
@@ -403,12 +562,12 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
403
562
|
group.value.model.closeAllPanels();
|
|
404
563
|
}
|
|
405
564
|
}
|
|
406
|
-
catch (
|
|
565
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
407
566
|
finally {
|
|
408
567
|
try {
|
|
409
568
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
410
569
|
}
|
|
411
|
-
finally { if (
|
|
570
|
+
finally { if (e_6) throw e_6.error; }
|
|
412
571
|
}
|
|
413
572
|
};
|
|
414
573
|
DockviewComponent.prototype.addPanel = function (options) {
|
|
@@ -417,6 +576,9 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
417
576
|
throw new Error("panel with id ".concat(options.id, " already exists"));
|
|
418
577
|
}
|
|
419
578
|
var referenceGroup;
|
|
579
|
+
if (options.position && options.floating) {
|
|
580
|
+
throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');
|
|
581
|
+
}
|
|
420
582
|
if (options.position) {
|
|
421
583
|
if ((0, options_1.isPanelOptionsWithPanel)(options.position)) {
|
|
422
584
|
var referencePanel = typeof options.position.referencePanel === 'string'
|
|
@@ -449,7 +611,20 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
449
611
|
var panel;
|
|
450
612
|
if (referenceGroup) {
|
|
451
613
|
var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
|
|
452
|
-
if (
|
|
614
|
+
if (options.floating) {
|
|
615
|
+
var group = this.createGroup();
|
|
616
|
+
panel = this.createPanel(options, group);
|
|
617
|
+
group.model.openPanel(panel);
|
|
618
|
+
var o = typeof options.floating === 'object' &&
|
|
619
|
+
options.floating !== null
|
|
620
|
+
? options.floating
|
|
621
|
+
: {};
|
|
622
|
+
this.addFloatingGroup(group, o, {
|
|
623
|
+
inDragMode: false,
|
|
624
|
+
skipRemoveGroup: true,
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
else if (referenceGroup.api.isFloating || target === 'center') {
|
|
453
628
|
panel = this.createPanel(options, referenceGroup);
|
|
454
629
|
referenceGroup.model.openPanel(panel);
|
|
455
630
|
}
|
|
@@ -461,6 +636,19 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
461
636
|
group.model.openPanel(panel);
|
|
462
637
|
}
|
|
463
638
|
}
|
|
639
|
+
else if (options.floating) {
|
|
640
|
+
var group = this.createGroup();
|
|
641
|
+
panel = this.createPanel(options, group);
|
|
642
|
+
group.model.openPanel(panel);
|
|
643
|
+
var o = typeof options.floating === 'object' &&
|
|
644
|
+
options.floating !== null
|
|
645
|
+
? options.floating
|
|
646
|
+
: {};
|
|
647
|
+
this.addFloatingGroup(group, o, {
|
|
648
|
+
inDragMode: false,
|
|
649
|
+
skipRemoveGroup: true,
|
|
650
|
+
});
|
|
651
|
+
}
|
|
464
652
|
else {
|
|
465
653
|
var group = this.createGroupAtLocation();
|
|
466
654
|
panel = this.createPanel(options, group);
|
|
@@ -478,7 +666,9 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
478
666
|
throw new Error("cannot remove panel ".concat(panel.id, ". it's missing a group."));
|
|
479
667
|
}
|
|
480
668
|
group.model.removePanel(panel);
|
|
481
|
-
|
|
669
|
+
if (!options.skipDispose) {
|
|
670
|
+
panel.dispose();
|
|
671
|
+
}
|
|
482
672
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
483
673
|
this.removeGroup(group);
|
|
484
674
|
}
|
|
@@ -493,7 +683,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
493
683
|
};
|
|
494
684
|
DockviewComponent.prototype.updateWatermark = function () {
|
|
495
685
|
var _a, _b;
|
|
496
|
-
if (this.groups.length === 0) {
|
|
686
|
+
if (this.groups.filter(function (x) { return !x.api.isFloating; }).length === 0) {
|
|
497
687
|
if (!this.watermark) {
|
|
498
688
|
this.watermark = this.createWatermarkComponent();
|
|
499
689
|
this.watermark.init({
|
|
@@ -502,7 +692,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
502
692
|
var watermarkContainer = document.createElement('div');
|
|
503
693
|
watermarkContainer.className = 'dv-watermark-container';
|
|
504
694
|
watermarkContainer.appendChild(this.watermark.element);
|
|
505
|
-
this.element.appendChild(watermarkContainer);
|
|
695
|
+
this.gridview.element.appendChild(watermarkContainer);
|
|
506
696
|
}
|
|
507
697
|
}
|
|
508
698
|
else if (this.watermark) {
|
|
@@ -552,27 +742,39 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
552
742
|
return group;
|
|
553
743
|
}
|
|
554
744
|
};
|
|
555
|
-
DockviewComponent.prototype.removeGroup = function (group,
|
|
556
|
-
var
|
|
557
|
-
|
|
745
|
+
DockviewComponent.prototype.removeGroup = function (group, options) {
|
|
746
|
+
var e_7, _a;
|
|
747
|
+
var _b;
|
|
558
748
|
var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
|
|
559
749
|
try {
|
|
560
750
|
for (var panels_1 = __values(panels), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
|
|
561
751
|
var panel = panels_1_1.value;
|
|
562
752
|
this.removePanel(panel, {
|
|
563
753
|
removeEmptyGroup: false,
|
|
564
|
-
skipDispose: false,
|
|
754
|
+
skipDispose: (_b = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _b !== void 0 ? _b : false,
|
|
565
755
|
});
|
|
566
756
|
}
|
|
567
757
|
}
|
|
568
|
-
catch (
|
|
758
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
569
759
|
finally {
|
|
570
760
|
try {
|
|
571
761
|
if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
|
|
572
762
|
}
|
|
573
|
-
finally { if (
|
|
763
|
+
finally { if (e_7) throw e_7.error; }
|
|
574
764
|
}
|
|
575
|
-
|
|
765
|
+
this.doRemoveGroup(group, options);
|
|
766
|
+
};
|
|
767
|
+
DockviewComponent.prototype.doRemoveGroup = function (group, options) {
|
|
768
|
+
var floatingGroup = this.floatingGroups.find(function (_) { return _.group === group; });
|
|
769
|
+
if (floatingGroup) {
|
|
770
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
771
|
+
floatingGroup.group.dispose();
|
|
772
|
+
this._groups.delete(group.id);
|
|
773
|
+
}
|
|
774
|
+
floatingGroup.dispose();
|
|
775
|
+
return floatingGroup.group;
|
|
776
|
+
}
|
|
777
|
+
return _super.prototype.doRemoveGroup.call(this, group, options);
|
|
576
778
|
};
|
|
577
779
|
DockviewComponent.prototype.moveGroupOrPanel = function (destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
|
|
578
780
|
var _a;
|
|
@@ -603,25 +805,26 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
603
805
|
var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
604
806
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
605
807
|
var _b = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _b[0], to = _b[1];
|
|
606
|
-
var
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
var targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
617
|
-
skipActive: true,
|
|
618
|
-
skipDispose: true,
|
|
619
|
-
});
|
|
620
|
-
// after deleting the group we need to re-evaulate the ref location
|
|
621
|
-
var updatedReferenceLocation = (0, gridview_1.getGridLocation)(destinationGroup.element);
|
|
622
|
-
var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
623
|
-
this.doAddGroup(targetGroup, location_3);
|
|
808
|
+
var isFloating = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
|
|
809
|
+
if (!isFloating) {
|
|
810
|
+
var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
|
|
811
|
+
var _c = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _c[0], from = _c[1];
|
|
812
|
+
if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
|
|
813
|
+
// special case when 'swapping' two views within same grid location
|
|
814
|
+
// if a group has one tab - we are essentially moving the 'group'
|
|
815
|
+
// which is equivalent to swapping two views in this case
|
|
816
|
+
this.gridview.moveView(sourceParentLocation, from, to);
|
|
817
|
+
}
|
|
624
818
|
}
|
|
819
|
+
// source group will become empty so delete the group
|
|
820
|
+
var targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
821
|
+
skipActive: true,
|
|
822
|
+
skipDispose: true,
|
|
823
|
+
});
|
|
824
|
+
// after deleting the group we need to re-evaulate the ref location
|
|
825
|
+
var updatedReferenceLocation = (0, gridview_1.getGridLocation)(destinationGroup.element);
|
|
826
|
+
var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
827
|
+
this.doAddGroup(targetGroup, location_3);
|
|
625
828
|
}
|
|
626
829
|
else {
|
|
627
830
|
var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||
|
|
@@ -636,7 +839,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
636
839
|
}
|
|
637
840
|
};
|
|
638
841
|
DockviewComponent.prototype.moveGroup = function (sourceGroup, referenceGroup, target) {
|
|
639
|
-
var
|
|
842
|
+
var e_8, _a;
|
|
640
843
|
if (sourceGroup) {
|
|
641
844
|
if (!target || target === 'center') {
|
|
642
845
|
var activePanel = sourceGroup.activePanel;
|
|
@@ -654,16 +857,22 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
654
857
|
});
|
|
655
858
|
}
|
|
656
859
|
}
|
|
657
|
-
catch (
|
|
860
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
658
861
|
finally {
|
|
659
862
|
try {
|
|
660
863
|
if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
|
|
661
864
|
}
|
|
662
|
-
finally { if (
|
|
865
|
+
finally { if (e_8) throw e_8.error; }
|
|
663
866
|
}
|
|
664
867
|
}
|
|
665
868
|
else {
|
|
666
|
-
this.
|
|
869
|
+
var floatingGroup = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
|
|
870
|
+
if (floatingGroup) {
|
|
871
|
+
floatingGroup.dispose();
|
|
872
|
+
}
|
|
873
|
+
else {
|
|
874
|
+
this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
|
|
875
|
+
}
|
|
667
876
|
var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
|
|
668
877
|
var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
|
|
669
878
|
this.gridview.addView(sourceGroup, splitview_1.Sizing.Distribute, dropLocation);
|