dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
112 lines • 5.3 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DraggablePaneviewPanel = void 0;
var abstractDragHandler_1 = require("../dnd/abstractDragHandler");
var dataTransfer_1 = require("../dnd/dataTransfer");
var droptarget_1 = require("../dnd/droptarget");
var events_1 = require("../events");
var paneviewPanel_1 = require("./paneviewPanel");
var DraggablePaneviewPanel = /** @class */ (function (_super) {
__extends(DraggablePaneviewPanel, _super);
function DraggablePaneviewPanel(id, component, headerComponent, orientation, isExpanded, disableDnd) {
var _this = _super.call(this, id, component, headerComponent, orientation, isExpanded) || this;
_this._onDidDrop = new events_1.Emitter();
_this.onDidDrop = _this._onDidDrop.event;
if (!disableDnd) {
_this.initDragFeatures();
}
return _this;
}
DraggablePaneviewPanel.prototype.initDragFeatures = function () {
var _this = this;
if (!this.header) {
return;
}
var id = this.id;
this.header.draggable = true;
this.handler = new (/** @class */ (function (_super) {
__extends(PaneDragHandler, _super);
function PaneDragHandler() {
return _super !== null && _super.apply(this, arguments) || this;
}
PaneDragHandler.prototype.getData = function () {
dataTransfer_1.LocalSelectionTransfer.getInstance().setData([new dataTransfer_1.PaneTransfer('paneview', id)], dataTransfer_1.PaneTransfer.prototype);
return {
dispose: function () {
dataTransfer_1.LocalSelectionTransfer.getInstance().clearData(dataTransfer_1.PaneTransfer.prototype);
},
};
};
return PaneDragHandler;
}(abstractDragHandler_1.DragHandler)))(this.header);
this.target = new droptarget_1.Droptarget(this.element, {
validOverlays: 'vertical',
canDisplayOverlay: function (event) {
var data = (0, dataTransfer_1.getPaneData)();
if (!data) {
return true;
}
return data.paneId !== _this.id;
},
});
this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop(function (event) {
var data = (0, dataTransfer_1.getPaneData)();
if (!data) {
_this._onDidDrop.fire(__assign(__assign({}, event), { panel: _this, getData: function () { return (0, dataTransfer_1.getPaneData)(); } }));
return;
}
var containerApi = _this.params
.containerApi;
var panelId = data.paneId;
var existingPanel = containerApi.getPanel(panelId);
if (!existingPanel) {
_this._onDidDrop.fire(__assign(__assign({}, event), { panel: _this, getData: function () { return (0, dataTransfer_1.getPaneData)(); } }));
return;
}
var allPanels = containerApi.getPanels();
var fromIndex = allPanels.indexOf(existingPanel);
var toIndex = containerApi.getPanels().indexOf(_this);
if (event.position === droptarget_1.Position.Left ||
event.position === droptarget_1.Position.Top) {
toIndex = Math.max(0, toIndex - 1);
}
if (event.position === droptarget_1.Position.Right ||
event.position === droptarget_1.Position.Bottom) {
if (fromIndex > toIndex) {
toIndex++;
}
toIndex = Math.min(allPanels.length - 1, toIndex);
}
containerApi.movePanel(fromIndex, toIndex);
}));
};
return DraggablePaneviewPanel;
}(paneviewPanel_1.PaneviewPanel));
exports.DraggablePaneviewPanel = DraggablePaneviewPanel;
//# sourceMappingURL=draggablePaneviewPanel.js.map