@bytedance/mona-client-web
Version:
web for mona
47 lines • 1.7 kB
JavaScript
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