xterm
[VSoRC/.git] / node_modules / xterm / src / browser / Lifecycle.ts
1 /**
2  * Copyright (c) 2018 The xterm.js authors. All rights reserved.
3  * @license MIT
4  */
5
6 import { IDisposable } from 'common/Types';
7
8 /**
9  * Adds a disposable listener to a node in the DOM, returning the disposable.
10  * @param type The event type.
11  * @param handler The handler for the listener.
12  */
13 export function addDisposableDomListener(
14   node: Element | Window | Document,
15   type: string,
16   handler: (e: any) => void,
17   useCapture?: boolean
18 ): IDisposable {
19   node.addEventListener(type, handler, useCapture);
20   return {
21     dispose: () => {
22       if (!handler) {
23         // Already disposed
24         return;
25       }
26       node.removeEventListener(type, handler, useCapture);
27     }
28   };
29 }