| /** |
| * @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); |
| } |
| } |