fuzzyworld

dao-game / files / src / utils / listeners.ts

listeners.ts

690 B · history · blame

1export interface Listener {
2 element: Element;
3 type: string;
4 listener: (event: Event) => void;
5}
6
7export class ListenerManager {
8 private listeners: Listener[] = [];
9
10 public addListener(element: Element, type: string, listener: (event: Event) => void): void {
11 const { listeners } = this;
12 element.addEventListener(type, listener);
13 listeners.push({ element, type, listener });
14 }
15
16 public removeListeners() {
17 const { listeners } = this;
18 listeners.forEach(value => {
19 const { element, type, listener } = value;
20 element.removeEventListener(type, listener);
21 });
22 listeners.length = 0;
23 }
24}