dockview-core 1.7.5 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +277 -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 +40 -20
- 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/splitview.d.ts.map +1 -1
- package/dist/cjs/splitview/splitview.js +12 -11
- package/dist/cjs/splitview/splitview.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 +808 -158
- 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 +807 -157
- package/dist/dockview-core.amd.noStyle.js.map +1 -0
- package/dist/dockview-core.cjs.js +808 -158
- package/dist/dockview-core.cjs.js.map +1 -0
- package/dist/dockview-core.esm.js +809 -158
- 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 +808 -158
- 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 +807 -157
- 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 +223 -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 +40 -19
- 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/splitview.d.ts.map +1 -1
- package/dist/esm/splitview/splitview.js +12 -11
- package/dist/esm/splitview/splitview.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 +217 -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,6 +137,11 @@ 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) {
|
|
@@ -145,7 +154,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
145
154
|
}
|
|
146
155
|
return false;
|
|
147
156
|
},
|
|
148
|
-
acceptedTargetZones: ['top', 'bottom', 'left', 'right'],
|
|
157
|
+
acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
|
|
149
158
|
overlayModel: {
|
|
150
159
|
activationSize: { type: 'pixels', value: 10 },
|
|
151
160
|
size: { type: 'pixels', value: 20 },
|
|
@@ -203,6 +212,76 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
203
212
|
enumerable: false,
|
|
204
213
|
configurable: true
|
|
205
214
|
});
|
|
215
|
+
DockviewComponent.prototype.addFloatingGroup = function (item, coord, options) {
|
|
216
|
+
var _this = this;
|
|
217
|
+
var _a, _b;
|
|
218
|
+
var group;
|
|
219
|
+
if (item instanceof dockviewPanel_1.DockviewPanel) {
|
|
220
|
+
group = this.createGroup();
|
|
221
|
+
this.removePanel(item, {
|
|
222
|
+
removeEmptyGroup: true,
|
|
223
|
+
skipDispose: true,
|
|
224
|
+
});
|
|
225
|
+
group.model.openPanel(item);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
group = item;
|
|
229
|
+
var skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
|
|
230
|
+
options.skipRemoveGroup;
|
|
231
|
+
if (!skip) {
|
|
232
|
+
this.doRemoveGroup(item, { skipDispose: true });
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
group.model.isFloating = true;
|
|
236
|
+
var overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;
|
|
237
|
+
var overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;
|
|
238
|
+
var overlay = new overlay_1.Overlay({
|
|
239
|
+
container: this.gridview.element,
|
|
240
|
+
content: group.element,
|
|
241
|
+
height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
|
|
242
|
+
width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
|
|
243
|
+
left: overlayLeft,
|
|
244
|
+
top: overlayTop,
|
|
245
|
+
minimumInViewportWidth: 100,
|
|
246
|
+
minimumInViewportHeight: 100,
|
|
247
|
+
});
|
|
248
|
+
var el = group.element.querySelector('.void-container');
|
|
249
|
+
if (!el) {
|
|
250
|
+
throw new Error('failed to find drag handle');
|
|
251
|
+
}
|
|
252
|
+
overlay.setupDrag(el, {
|
|
253
|
+
inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'
|
|
254
|
+
? options.inDragMode
|
|
255
|
+
: false,
|
|
256
|
+
});
|
|
257
|
+
var floatingGroupPanel = new dockviewFloatingGroupPanel_1.DockviewFloatingGroupPanel(group, overlay);
|
|
258
|
+
var disposable = (0, dom_1.watchElementResize)(group.element, function (entry) {
|
|
259
|
+
var _a = entry.contentRect, width = _a.width, height = _a.height;
|
|
260
|
+
group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
|
|
261
|
+
});
|
|
262
|
+
floatingGroupPanel.addDisposables(overlay.onDidChange(function () {
|
|
263
|
+
// this is either a resize or a move
|
|
264
|
+
// to inform the panels .layout(...) the group with it's current size
|
|
265
|
+
// don't care about resize since the above watcher handles that
|
|
266
|
+
group.layout(group.height, group.width);
|
|
267
|
+
}), overlay.onDidChangeEnd(function () {
|
|
268
|
+
_this._bufferOnDidLayoutChange.fire();
|
|
269
|
+
}), group.onDidChange(function (event) {
|
|
270
|
+
overlay.setBounds({
|
|
271
|
+
height: event === null || event === void 0 ? void 0 : event.height,
|
|
272
|
+
width: event === null || event === void 0 ? void 0 : event.width,
|
|
273
|
+
});
|
|
274
|
+
}), {
|
|
275
|
+
dispose: function () {
|
|
276
|
+
disposable.dispose();
|
|
277
|
+
group.model.isFloating = false;
|
|
278
|
+
(0, array_1.remove)(_this.floatingGroups, floatingGroupPanel);
|
|
279
|
+
_this.updateWatermark();
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
this.floatingGroups.push(floatingGroupPanel);
|
|
283
|
+
this.updateWatermark();
|
|
284
|
+
};
|
|
206
285
|
DockviewComponent.prototype.orthogonalize = function (position) {
|
|
207
286
|
switch (position) {
|
|
208
287
|
case 'top':
|
|
@@ -227,6 +306,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
227
306
|
switch (position) {
|
|
228
307
|
case 'top':
|
|
229
308
|
case 'left':
|
|
309
|
+
case 'center':
|
|
230
310
|
return this.createGroupAtLocation([0]); // insert into first position
|
|
231
311
|
case 'bottom':
|
|
232
312
|
case 'right':
|
|
@@ -244,6 +324,26 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
244
324
|
}
|
|
245
325
|
this.layout(this.gridview.width, this.gridview.height, true);
|
|
246
326
|
};
|
|
327
|
+
DockviewComponent.prototype.layout = function (width, height, forceResize) {
|
|
328
|
+
var e_1, _a;
|
|
329
|
+
_super.prototype.layout.call(this, width, height, forceResize);
|
|
330
|
+
if (this.floatingGroups) {
|
|
331
|
+
try {
|
|
332
|
+
for (var _b = __values(this.floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
333
|
+
var floating = _c.value;
|
|
334
|
+
// ensure floting groups stay within visible boundaries
|
|
335
|
+
floating.overlay.setBounds();
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
339
|
+
finally {
|
|
340
|
+
try {
|
|
341
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
342
|
+
}
|
|
343
|
+
finally { if (e_1) throw e_1.error; }
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
};
|
|
247
347
|
DockviewComponent.prototype.focus = function () {
|
|
248
348
|
var _a;
|
|
249
349
|
(_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
|
|
@@ -308,67 +408,118 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
308
408
|
collection[panel.id] = panel.toJSON();
|
|
309
409
|
return collection;
|
|
310
410
|
}, {});
|
|
311
|
-
|
|
411
|
+
var floats = this.floatingGroups.map(function (floatingGroup) {
|
|
412
|
+
return {
|
|
413
|
+
data: floatingGroup.group.toJSON(),
|
|
414
|
+
position: floatingGroup.overlay.toJSON(),
|
|
415
|
+
};
|
|
416
|
+
});
|
|
417
|
+
var result = {
|
|
312
418
|
grid: data,
|
|
313
419
|
panels: panels,
|
|
314
420
|
activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
|
|
315
421
|
};
|
|
422
|
+
if (floats.length > 0) {
|
|
423
|
+
result.floatingGroups = floats;
|
|
424
|
+
}
|
|
425
|
+
return result;
|
|
316
426
|
};
|
|
317
427
|
DockviewComponent.prototype.fromJSON = function (data) {
|
|
428
|
+
var e_2, _a, e_3, _b;
|
|
318
429
|
var _this = this;
|
|
430
|
+
var _c;
|
|
319
431
|
this.clear();
|
|
320
432
|
var grid = data.grid, panels = data.panels, activeGroup = data.activeGroup;
|
|
321
433
|
if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {
|
|
322
434
|
throw new Error('root must be of type branch');
|
|
323
435
|
}
|
|
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], {
|
|
436
|
+
// take note of the existing dimensions
|
|
437
|
+
var width = this.width;
|
|
438
|
+
var height = this.height;
|
|
439
|
+
var createGroupFromSerializedState = function (data) {
|
|
440
|
+
var e_4, _a;
|
|
441
|
+
var id = data.id, locked = data.locked, hideHeader = data.hideHeader, views = data.views, activeView = data.activeView;
|
|
442
|
+
var group = _this.createGroup({
|
|
443
|
+
id: id,
|
|
444
|
+
locked: !!locked,
|
|
445
|
+
hideHeader: !!hideHeader,
|
|
446
|
+
});
|
|
447
|
+
_this._onDidAddGroup.fire(group);
|
|
448
|
+
try {
|
|
449
|
+
for (var views_1 = __values(views), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
|
|
450
|
+
var child = views_1_1.value;
|
|
451
|
+
var panel = _this._deserializer.fromJSON(panels[child], group);
|
|
452
|
+
var isActive = typeof activeView === 'string' && activeView === panel.id;
|
|
453
|
+
group.model.openPanel(panel, {
|
|
454
|
+
skipSetPanelActive: !isActive,
|
|
355
455
|
skipSetGroupActive: true,
|
|
356
456
|
});
|
|
357
457
|
}
|
|
358
|
-
|
|
458
|
+
}
|
|
459
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
460
|
+
finally {
|
|
461
|
+
try {
|
|
462
|
+
if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
|
|
463
|
+
}
|
|
464
|
+
finally { if (e_4) throw e_4.error; }
|
|
465
|
+
}
|
|
466
|
+
if (!group.activePanel && group.panels.length > 0) {
|
|
467
|
+
group.model.openPanel(group.panels[group.panels.length - 1], {
|
|
468
|
+
skipSetGroupActive: true,
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
return group;
|
|
472
|
+
};
|
|
473
|
+
this.gridview.deserialize(grid, {
|
|
474
|
+
fromJSON: function (node) {
|
|
475
|
+
return createGroupFromSerializedState(node.data);
|
|
359
476
|
},
|
|
360
477
|
});
|
|
478
|
+
this.layout(width, height, true);
|
|
479
|
+
var serializedFloatingGroups = (_c = data.floatingGroups) !== null && _c !== void 0 ? _c : [];
|
|
480
|
+
try {
|
|
481
|
+
for (var serializedFloatingGroups_1 = __values(serializedFloatingGroups), serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next(); !serializedFloatingGroups_1_1.done; serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next()) {
|
|
482
|
+
var serializedFloatingGroup = serializedFloatingGroups_1_1.value;
|
|
483
|
+
var data_1 = serializedFloatingGroup.data, position = serializedFloatingGroup.position;
|
|
484
|
+
var group = createGroupFromSerializedState(data_1);
|
|
485
|
+
this.addFloatingGroup(group, {
|
|
486
|
+
x: position.left,
|
|
487
|
+
y: position.top,
|
|
488
|
+
height: position.height,
|
|
489
|
+
width: position.width,
|
|
490
|
+
}, { skipRemoveGroup: true, inDragMode: false });
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
494
|
+
finally {
|
|
495
|
+
try {
|
|
496
|
+
if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_a = serializedFloatingGroups_1.return)) _a.call(serializedFloatingGroups_1);
|
|
497
|
+
}
|
|
498
|
+
finally { if (e_2) throw e_2.error; }
|
|
499
|
+
}
|
|
500
|
+
try {
|
|
501
|
+
for (var _d = __values(this.floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
502
|
+
var floatingGroup = _e.value;
|
|
503
|
+
floatingGroup.overlay.setBounds();
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
507
|
+
finally {
|
|
508
|
+
try {
|
|
509
|
+
if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
|
|
510
|
+
}
|
|
511
|
+
finally { if (e_3) throw e_3.error; }
|
|
512
|
+
}
|
|
361
513
|
if (typeof activeGroup === 'string') {
|
|
362
514
|
var panel = this.getPanel(activeGroup);
|
|
363
515
|
if (panel) {
|
|
364
516
|
this.doSetGroupActive(panel);
|
|
365
517
|
}
|
|
366
518
|
}
|
|
367
|
-
this.gridview.layout(this.width, this.height);
|
|
368
519
|
this._onDidLayoutFromJSON.fire();
|
|
369
520
|
};
|
|
370
521
|
DockviewComponent.prototype.clear = function () {
|
|
371
|
-
var
|
|
522
|
+
var e_5, _a;
|
|
372
523
|
var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
|
|
373
524
|
var hasActiveGroup = !!this.activeGroup;
|
|
374
525
|
var hasActivePanel = !!this.activePanel;
|
|
@@ -376,15 +527,15 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
376
527
|
for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
|
|
377
528
|
var group = groups_1_1.value;
|
|
378
529
|
// remove the group will automatically remove the panels
|
|
379
|
-
this.removeGroup(group, true);
|
|
530
|
+
this.removeGroup(group, { skipActive: true });
|
|
380
531
|
}
|
|
381
532
|
}
|
|
382
|
-
catch (
|
|
533
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
383
534
|
finally {
|
|
384
535
|
try {
|
|
385
536
|
if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
|
|
386
537
|
}
|
|
387
|
-
finally { if (
|
|
538
|
+
finally { if (e_5) throw e_5.error; }
|
|
388
539
|
}
|
|
389
540
|
if (hasActiveGroup) {
|
|
390
541
|
this.doSetGroupActive(undefined);
|
|
@@ -395,7 +546,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
395
546
|
this.gridview.clear();
|
|
396
547
|
};
|
|
397
548
|
DockviewComponent.prototype.closeAllGroups = function () {
|
|
398
|
-
var
|
|
549
|
+
var e_6, _a;
|
|
399
550
|
try {
|
|
400
551
|
for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
401
552
|
var entry = _c.value;
|
|
@@ -403,12 +554,12 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
403
554
|
group.value.model.closeAllPanels();
|
|
404
555
|
}
|
|
405
556
|
}
|
|
406
|
-
catch (
|
|
557
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
407
558
|
finally {
|
|
408
559
|
try {
|
|
409
560
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
410
561
|
}
|
|
411
|
-
finally { if (
|
|
562
|
+
finally { if (e_6) throw e_6.error; }
|
|
412
563
|
}
|
|
413
564
|
};
|
|
414
565
|
DockviewComponent.prototype.addPanel = function (options) {
|
|
@@ -417,6 +568,9 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
417
568
|
throw new Error("panel with id ".concat(options.id, " already exists"));
|
|
418
569
|
}
|
|
419
570
|
var referenceGroup;
|
|
571
|
+
if (options.position && options.floating) {
|
|
572
|
+
throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');
|
|
573
|
+
}
|
|
420
574
|
if (options.position) {
|
|
421
575
|
if ((0, options_1.isPanelOptionsWithPanel)(options.position)) {
|
|
422
576
|
var referencePanel = typeof options.position.referencePanel === 'string'
|
|
@@ -449,7 +603,20 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
449
603
|
var panel;
|
|
450
604
|
if (referenceGroup) {
|
|
451
605
|
var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
|
|
452
|
-
if (
|
|
606
|
+
if (options.floating) {
|
|
607
|
+
var group = this.createGroup();
|
|
608
|
+
panel = this.createPanel(options, group);
|
|
609
|
+
group.model.openPanel(panel);
|
|
610
|
+
var o = typeof options.floating === 'object' &&
|
|
611
|
+
options.floating !== null
|
|
612
|
+
? options.floating
|
|
613
|
+
: {};
|
|
614
|
+
this.addFloatingGroup(group, o, {
|
|
615
|
+
inDragMode: false,
|
|
616
|
+
skipRemoveGroup: true,
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
else if (referenceGroup.api.isFloating || target === 'center') {
|
|
453
620
|
panel = this.createPanel(options, referenceGroup);
|
|
454
621
|
referenceGroup.model.openPanel(panel);
|
|
455
622
|
}
|
|
@@ -461,6 +628,19 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
461
628
|
group.model.openPanel(panel);
|
|
462
629
|
}
|
|
463
630
|
}
|
|
631
|
+
else if (options.floating) {
|
|
632
|
+
var group = this.createGroup();
|
|
633
|
+
panel = this.createPanel(options, group);
|
|
634
|
+
group.model.openPanel(panel);
|
|
635
|
+
var o = typeof options.floating === 'object' &&
|
|
636
|
+
options.floating !== null
|
|
637
|
+
? options.floating
|
|
638
|
+
: {};
|
|
639
|
+
this.addFloatingGroup(group, o, {
|
|
640
|
+
inDragMode: false,
|
|
641
|
+
skipRemoveGroup: true,
|
|
642
|
+
});
|
|
643
|
+
}
|
|
464
644
|
else {
|
|
465
645
|
var group = this.createGroupAtLocation();
|
|
466
646
|
panel = this.createPanel(options, group);
|
|
@@ -478,7 +658,9 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
478
658
|
throw new Error("cannot remove panel ".concat(panel.id, ". it's missing a group."));
|
|
479
659
|
}
|
|
480
660
|
group.model.removePanel(panel);
|
|
481
|
-
|
|
661
|
+
if (!options.skipDispose) {
|
|
662
|
+
panel.dispose();
|
|
663
|
+
}
|
|
482
664
|
if (group.size === 0 && options.removeEmptyGroup) {
|
|
483
665
|
this.removeGroup(group);
|
|
484
666
|
}
|
|
@@ -493,7 +675,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
493
675
|
};
|
|
494
676
|
DockviewComponent.prototype.updateWatermark = function () {
|
|
495
677
|
var _a, _b;
|
|
496
|
-
if (this.groups.length === 0) {
|
|
678
|
+
if (this.groups.filter(function (x) { return !x.api.isFloating; }).length === 0) {
|
|
497
679
|
if (!this.watermark) {
|
|
498
680
|
this.watermark = this.createWatermarkComponent();
|
|
499
681
|
this.watermark.init({
|
|
@@ -502,7 +684,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
502
684
|
var watermarkContainer = document.createElement('div');
|
|
503
685
|
watermarkContainer.className = 'dv-watermark-container';
|
|
504
686
|
watermarkContainer.appendChild(this.watermark.element);
|
|
505
|
-
this.element.appendChild(watermarkContainer);
|
|
687
|
+
this.gridview.element.appendChild(watermarkContainer);
|
|
506
688
|
}
|
|
507
689
|
}
|
|
508
690
|
else if (this.watermark) {
|
|
@@ -552,27 +734,39 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
552
734
|
return group;
|
|
553
735
|
}
|
|
554
736
|
};
|
|
555
|
-
DockviewComponent.prototype.removeGroup = function (group,
|
|
556
|
-
var
|
|
557
|
-
|
|
737
|
+
DockviewComponent.prototype.removeGroup = function (group, options) {
|
|
738
|
+
var e_7, _a;
|
|
739
|
+
var _b;
|
|
558
740
|
var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
|
|
559
741
|
try {
|
|
560
742
|
for (var panels_1 = __values(panels), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
|
|
561
743
|
var panel = panels_1_1.value;
|
|
562
744
|
this.removePanel(panel, {
|
|
563
745
|
removeEmptyGroup: false,
|
|
564
|
-
skipDispose: false,
|
|
746
|
+
skipDispose: (_b = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _b !== void 0 ? _b : false,
|
|
565
747
|
});
|
|
566
748
|
}
|
|
567
749
|
}
|
|
568
|
-
catch (
|
|
750
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
569
751
|
finally {
|
|
570
752
|
try {
|
|
571
753
|
if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
|
|
572
754
|
}
|
|
573
|
-
finally { if (
|
|
755
|
+
finally { if (e_7) throw e_7.error; }
|
|
574
756
|
}
|
|
575
|
-
|
|
757
|
+
this.doRemoveGroup(group, options);
|
|
758
|
+
};
|
|
759
|
+
DockviewComponent.prototype.doRemoveGroup = function (group, options) {
|
|
760
|
+
var floatingGroup = this.floatingGroups.find(function (_) { return _.group === group; });
|
|
761
|
+
if (floatingGroup) {
|
|
762
|
+
if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
|
|
763
|
+
floatingGroup.group.dispose();
|
|
764
|
+
this._groups.delete(group.id);
|
|
765
|
+
}
|
|
766
|
+
floatingGroup.dispose();
|
|
767
|
+
return floatingGroup.group;
|
|
768
|
+
}
|
|
769
|
+
return _super.prototype.doRemoveGroup.call(this, group, options);
|
|
576
770
|
};
|
|
577
771
|
DockviewComponent.prototype.moveGroupOrPanel = function (destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
|
|
578
772
|
var _a;
|
|
@@ -603,25 +797,26 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
603
797
|
var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
|
|
604
798
|
if (sourceGroup && sourceGroup.size < 2) {
|
|
605
799
|
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);
|
|
800
|
+
var isFloating = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
|
|
801
|
+
if (!isFloating) {
|
|
802
|
+
var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
|
|
803
|
+
var _c = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _c[0], from = _c[1];
|
|
804
|
+
if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
|
|
805
|
+
// special case when 'swapping' two views within same grid location
|
|
806
|
+
// if a group has one tab - we are essentially moving the 'group'
|
|
807
|
+
// which is equivalent to swapping two views in this case
|
|
808
|
+
this.gridview.moveView(sourceParentLocation, from, to);
|
|
809
|
+
}
|
|
624
810
|
}
|
|
811
|
+
// source group will become empty so delete the group
|
|
812
|
+
var targetGroup = this.doRemoveGroup(sourceGroup, {
|
|
813
|
+
skipActive: true,
|
|
814
|
+
skipDispose: true,
|
|
815
|
+
});
|
|
816
|
+
// after deleting the group we need to re-evaulate the ref location
|
|
817
|
+
var updatedReferenceLocation = (0, gridview_1.getGridLocation)(destinationGroup.element);
|
|
818
|
+
var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
|
|
819
|
+
this.doAddGroup(targetGroup, location_3);
|
|
625
820
|
}
|
|
626
821
|
else {
|
|
627
822
|
var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||
|
|
@@ -636,7 +831,7 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
636
831
|
}
|
|
637
832
|
};
|
|
638
833
|
DockviewComponent.prototype.moveGroup = function (sourceGroup, referenceGroup, target) {
|
|
639
|
-
var
|
|
834
|
+
var e_8, _a;
|
|
640
835
|
if (sourceGroup) {
|
|
641
836
|
if (!target || target === 'center') {
|
|
642
837
|
var activePanel = sourceGroup.activePanel;
|
|
@@ -654,16 +849,22 @@ var DockviewComponent = /** @class */ (function (_super) {
|
|
|
654
849
|
});
|
|
655
850
|
}
|
|
656
851
|
}
|
|
657
|
-
catch (
|
|
852
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
658
853
|
finally {
|
|
659
854
|
try {
|
|
660
855
|
if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
|
|
661
856
|
}
|
|
662
|
-
finally { if (
|
|
857
|
+
finally { if (e_8) throw e_8.error; }
|
|
663
858
|
}
|
|
664
859
|
}
|
|
665
860
|
else {
|
|
666
|
-
this.
|
|
861
|
+
var floatingGroup = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
|
|
862
|
+
if (floatingGroup) {
|
|
863
|
+
floatingGroup.dispose();
|
|
864
|
+
}
|
|
865
|
+
else {
|
|
866
|
+
this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
|
|
867
|
+
}
|
|
667
868
|
var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
|
|
668
869
|
var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
|
|
669
870
|
this.gridview.addView(sourceGroup, splitview_1.Sizing.Distribute, dropLocation);
|