UNPKG

dockview

Version:

Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support

112 lines 5.3 kB
"use strict"; 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