(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventDispatcher = void 0; class EventDispatcher { constructor() { this._listeners = new Map(); } addEventListener(type, listener) { var _a; this.removeEventListener(type, listener); if (!this._listeners.get(type)) { this._listeners.set(type, []); } (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.push(listener); } dispatchEvent(type, args) { var _a; (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => handler(args)); } hasEventListener(type) { return !!this._listeners.get(type); } removeAllEventListeners(type) { if (!type) { this._listeners = new Map(); } else { this._listeners.delete(type); } } removeEventListener(type, listener) { const arr = this._listeners.get(type); if (!arr) { return; } const length = arr.length, idx = arr.indexOf(listener); if (idx < 0) { return; } if (length === 1) { this._listeners.delete(type); } else { arr.splice(idx, 1); } } } exports.EventDispatcher = EventDispatcher; });