@qier-player/danmaku
Version:
Powerful danmaku, support many features.
74 lines • 2.31 kB
JavaScript
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
var EventEmitter = /** @class */ (function () {
function EventEmitter() {
this._events = Object.create(null);
}
EventEmitter.prototype.emit = function (evt) {
var _this = this;
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (!this._events[evt])
return false;
var fns = __spreadArray([], this._events[evt]);
fns.forEach(function (fn) {
fn.apply(_this, args);
});
return true;
};
EventEmitter.prototype.on = function (evt, fn) {
if (typeof fn !== 'function') {
throw new TypeError('The event-triggered callback must be a function.');
}
if (!this._events[evt]) {
this._events[evt] = [fn];
}
else {
this._events[evt].push(fn);
}
return { dispose: this.off.bind(this, evt, fn) };
};
EventEmitter.prototype.once = function (evt, fn) {
var _this = this;
var execFn = function () {
fn === null || fn === void 0 ? void 0 : fn.apply(_this);
_this.off(evt, execFn);
};
return this.on(evt, execFn);
};
EventEmitter.prototype.off = function (evt, fn) {
if (!this._events[evt])
return this;
if (!fn) {
this._events[evt] && (this._events[evt].length = 0);
return this;
}
var cb;
var cbLen = this._events[evt].length;
for (var i = 0; i < cbLen; i++) {
cb = this._events[evt][i];
if (cb === fn) {
this._events[evt].splice(i, 1);
break;
}
}
return this;
};
EventEmitter.prototype.removeAllListeners = function (evt) {
if (evt) {
this._events[evt] && (this._events[evt].length = 0);
}
else {
this._events = Object.create(null);
}
return this;
};
return EventEmitter;
}());
export { EventEmitter };
//# sourceMappingURL=eventmitter.js.map