UNPKG

dockview

Version:

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

145 lines 5.48 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 __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.getPaneData = exports.getPanelData = exports.LocalSelectionTransfer = exports.extractData = exports.isCustomDragEvent = exports.isTabDragEvent = exports.DragType = exports.isPanelTransferEvent = exports.DATA_KEY = exports.PaneTransfer = exports.PanelTransfer = void 0; var json_1 = require("../json"); var TransferObject = /** @class */ (function () { function TransferObject() { // } return TransferObject; }()); var PanelTransfer = /** @class */ (function (_super) { __extends(PanelTransfer, _super); function PanelTransfer(viewId, groupId, panelId) { var _this = _super.call(this) || this; _this.viewId = viewId; _this.groupId = groupId; _this.panelId = panelId; return _this; } return PanelTransfer; }(TransferObject)); exports.PanelTransfer = PanelTransfer; var PaneTransfer = /** @class */ (function (_super) { __extends(PaneTransfer, _super); function PaneTransfer(viewId, paneId) { var _this = _super.call(this) || this; _this.viewId = viewId; _this.paneId = paneId; return _this; } return PaneTransfer; }(TransferObject)); exports.PaneTransfer = PaneTransfer; exports.DATA_KEY = 'splitview/transfer'; var isPanelTransferEvent = function (event) { if (!event.dataTransfer) { return false; } return event.dataTransfer.types.includes(exports.DATA_KEY); }; exports.isPanelTransferEvent = isPanelTransferEvent; var DragType; (function (DragType) { DragType["DOCKVIEW_TAB"] = "dockview_tab"; DragType["EXTERNAL"] = "external_group_drag"; })(DragType = exports.DragType || (exports.DragType = {})); /** * Determine whether this data belong to that of an event that was started by * dragging a tab component */ var isTabDragEvent = function (data) { return data.type === DragType.DOCKVIEW_TAB; }; exports.isTabDragEvent = isTabDragEvent; /** * Determine whether this data belong to that of an event that was started by * a custom drag-enable component */ var isCustomDragEvent = function (data) { return data.type === DragType.EXTERNAL; }; exports.isCustomDragEvent = isCustomDragEvent; var extractData = function (event) { if (!event.dataTransfer) { return null; } var data = (0, json_1.tryParseJSON)(event.dataTransfer.getData(exports.DATA_KEY)); if (!data) { console.warn("[dragEvent] ".concat(exports.DATA_KEY, " data is missing")); } if (typeof data.type !== 'string') { console.warn("[dragEvent] invalid type ".concat(data.type)); } return data; }; exports.extractData = extractData; /** * A singleton to store transfer data during drag & drop operations that are only valid within the application. */ var LocalSelectionTransfer = /** @class */ (function () { function LocalSelectionTransfer() { // protect against external instantiation } LocalSelectionTransfer.getInstance = function () { return LocalSelectionTransfer.INSTANCE; }; LocalSelectionTransfer.prototype.hasData = function (proto) { return proto && proto === this.proto; }; LocalSelectionTransfer.prototype.clearData = function (proto) { if (this.hasData(proto)) { this.proto = undefined; this.data = undefined; } }; LocalSelectionTransfer.prototype.getData = function (proto) { if (this.hasData(proto)) { return this.data; } return undefined; }; LocalSelectionTransfer.prototype.setData = function (data, proto) { if (proto) { this.data = data; this.proto = proto; } }; LocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer(); return LocalSelectionTransfer; }()); exports.LocalSelectionTransfer = LocalSelectionTransfer; function getPanelData() { var panelTransfer = LocalSelectionTransfer.getInstance(); var isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype); if (!isPanelEvent) { return undefined; } return panelTransfer.getData(PanelTransfer.prototype)[0]; } exports.getPanelData = getPanelData; function getPaneData() { var paneTransfer = LocalSelectionTransfer.getInstance(); var isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype); if (!isPanelEvent) { return undefined; } return paneTransfer.getData(PaneTransfer.prototype)[0]; } exports.getPaneData = getPaneData; //# sourceMappingURL=dataTransfer.js.map