blob: 9a3b1fe60fa05479fb4df32829698c85f7345b35 [file] [log] [blame]
/**
* @module modules/element-doc-sk
* @description Sub class of ElementSK that remembers and cleans up document event listeners.
* Extended by all modules of debuugger. TODO(nifong): merge into ElementSk
*/
import { ElementSk } from '../../../infra-sk/modules/ElementSk';
export class ElementDocSk extends ElementSk {
constructor(templateFn?: (el: any) => unknown) {
super(templateFn);
}
private _documentEventListeners = new Map<string, (e: Event) => void>();
disconnectedCallback() {
for (const [key, val] of this._documentEventListeners.entries()) {
document.removeEventListener(key, val);
}
super.disconnectedCallback();
}
addDocumentEventListener(
name: string,
fn: (e: any) => void,
useCapture: boolean = false
) {
this._documentEventListeners.set(name, fn);
document.addEventListener(name, fn, useCapture);
}
}