UNPKG

@bytedance/mona-client-web

Version:

web for mona

47 lines 1.7 kB
var MONA_EVENTEMITTER_LISTENER = '__MONA_EVENTEMITTER_LISTENER'; var EventEmitter = /** @class */ (function () { function EventEmitter() { this.listeners = window[MONA_EVENTEMITTER_LISTENER] || {}; } EventEmitter.prototype._refreshListeners = function () { this.listeners = window[MONA_EVENTEMITTER_LISTENER] || {}; }; EventEmitter.prototype._updateListeners = function (key, arr) { this.listeners[key] = arr; window[MONA_EVENTEMITTER_LISTENER] = this.listeners; }; EventEmitter.prototype.on = function (key, listener) { this._refreshListeners(); var arr = this.listeners[key] || []; arr.push(listener); this._updateListeners(key, arr); }; EventEmitter.prototype.off = function (key, listener) { this._refreshListeners(); var arr = this.listeners[key] || []; var index = arr.indexOf(listener); if (index !== -1) { arr.splice(index, 1); this._updateListeners(key, arr); } }; EventEmitter.prototype.emit = function (key) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } this._refreshListeners(); var arr = this.listeners[key] || []; arr.forEach(function (listener) { if (typeof listener === 'function') { listener.apply(void 0, args); } }); }; EventEmitter.prototype.clear = function () { this.listeners = window[MONA_EVENTEMITTER_LISTENER] = {}; }; return EventEmitter; }()); export default EventEmitter; //# sourceMappingURL=EventEmitter.js.map