UNPKG

@deephaven/golden-layout

Version:

A multi-screen javascript Layout manager

73 lines (70 loc) 2.89 kB
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } import $ from 'jquery'; import { DragListener } from "../utils/index.js"; import DragProxy from "./DragProxy.js"; /** * Creates a drag item given a starting mouseevent * that can then be dragged into the Layout * * @param itemConfig the configuration for the contentItem that will be created * @param layoutManager * @param event used to get the starting position */ export default class DragSourceFromEvent { constructor(itemConfig, layoutManager, event) { _defineProperty(this, "_element", $(window)); // we need something to listen for mousemoves against _defineProperty(this, "_itemConfig", void 0); _defineProperty(this, "_layoutManager", void 0); _defineProperty(this, "_dragListener", void 0); this._itemConfig = itemConfig; this._layoutManager = layoutManager; this._createDragListener(event); } /** * Called initially and after every drag */ _createDragListener(event) { if (this._dragListener) { this._dragListener.destroy(); } if (!this._element) { return; } if (!this._layoutManager) { return; } this._dragListener = new DragListener(this._element, this._layoutManager.root, true); this._dragListener.on('dragStart', this._onDragStart, this); this._dragListener.on('dragStop', this._destroy, this); // manaully pass in an event as mousedow, that already happened to start the dragListener this._dragListener.onMouseDown(event); this._dragListener._startDrag(); } _destroy() { this._dragListener = undefined; this._element = undefined; this._itemConfig = undefined; this._layoutManager = undefined; } /** * Callback for the DragListener's dragStart event * * @param x the x position of the mouse on dragStart * @param y the x position of the mouse on dragStart */ _onDragStart(x, y) { if (!this._dragListener || !this._layoutManager) { return; } var itemConfig = this._itemConfig; if (typeof itemConfig === 'function') { itemConfig = itemConfig(); } var contentItem = this._layoutManager._$normalizeContentItem($.extend(true, {}, itemConfig)); new DragProxy(x, y, this._dragListener, this._layoutManager, contentItem, null); } } //# sourceMappingURL=DragSourceFromEvent.js.map