import * as dom from "vs/base/browser/dom"; import { IDisposable } from "vs/base/common/lifecycle"; // Firefox has no implementation of toElement. if (!("toElement" in MouseEvent.prototype)) { Object.defineProperty(MouseEvent.prototype, "toElement", { get: function (): EventTarget | null { // @ts-ignore const event = this as MouseEvent; switch (event.type) { case "mouseup": case "focusin": case "mousenter": case "mouseover": case "dragenter": return event.target; default: return event.relatedTarget; } }, }); } const _addDisposableListener = dom.addDisposableListener; // tslint:disable-next-line no-any const addDisposableListener = (node: Element | Window | Document, type: string, handler: (event: any) => void, useCapture?: boolean): IDisposable => { return _addDisposableListener(node, type === "mousewheel" ? "wheel" : type, handler, useCapture); }; const target = dom as typeof dom; target.addDisposableListener = addDisposableListener;