UNPKG

dockview

Version:

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

38 lines (37 loc) 1.48 kB
import { getElementsByTagName } from '../dom'; import { addDisposableListener, Emitter } from '../events'; import { CompositeDisposable } from '../lifecycle'; export class DragHandler extends CompositeDisposable { constructor(el) { super(); this.el = el; this.iframes = []; this._onDragStart = new Emitter(); this.onDragStart = this._onDragStart.event; this.configure(); } configure() { this.addDisposables(addDisposableListener(this.el, 'dragstart', (event) => { var _a; this.iframes = [ ...getElementsByTagName('iframe'), ...getElementsByTagName('webview'), ]; for (const iframe of this.iframes) { iframe.style.pointerEvents = 'none'; } this.el.classList.add('dragged'); setTimeout(() => this.el.classList.remove('dragged'), 0); (_a = this.disposable) === null || _a === void 0 ? void 0 : _a.dispose(); this.disposable = this.getData(); }), addDisposableListener(this.el, 'dragend', (ev) => { var _a; for (const iframe of this.iframes) { iframe.style.pointerEvents = 'auto'; } this.iframes = []; (_a = this.disposable) === null || _a === void 0 ? void 0 : _a.dispose(); this.disposable = undefined; })); } }