dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
38 lines (37 loc) • 1.48 kB
JavaScript
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;
}));
}
}