UNPKG

1.23 kBJavaScriptView Raw
1export class EventDispatcher {
2 constructor() {
3 this._listeners = new Map();
4 }
5 addEventListener(type, listener) {
6 var _a;
7 this.removeEventListener(type, listener);
8 if (!this._listeners.get(type)) {
9 this._listeners.set(type, []);
10 }
11 (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.push(listener);
12 }
13 dispatchEvent(type, args) {
14 var _a;
15 (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => handler(args));
16 }
17 hasEventListener(type) {
18 return !!this._listeners.get(type);
19 }
20 removeAllEventListeners(type) {
21 if (!type) {
22 this._listeners = new Map();
23 }
24 else {
25 this._listeners.delete(type);
26 }
27 }
28 removeEventListener(type, listener) {
29 const arr = this._listeners.get(type);
30 if (!arr) {
31 return;
32 }
33 const length = arr.length, idx = arr.indexOf(listener);
34 if (idx < 0) {
35 return;
36 }
37 if (length === 1) {
38 this._listeners.delete(type);
39 }
40 else {
41 arr.splice(idx, 1);
42 }
43 }
44}