blob: 9300ade18bc6f0bee3211e6113af742c9be3cc7f [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);
}
}