chayns-components
Version:
A set of beautiful React components for developing chayns® applications.
53 lines (52 loc) • 1.91 kB
JavaScript
import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase";
import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey";
var _events = /*#__PURE__*/_classPrivateFieldLooseKey("events");
export default class EventEmitter {
constructor() {
Object.defineProperty(this, _events, {
writable: true,
value: []
});
this.on = this.on.bind(this);
this.off = this.off.bind(this);
this.emit = this.emit.bind(this);
this.once = this.once.bind(this);
this.removeListener = this.removeListener.bind(this);
}
on(event, listener) {
if (!_classPrivateFieldLooseBase(this, _events)[_events][event]) {
_classPrivateFieldLooseBase(this, _events)[_events][event] = [];
}
_classPrivateFieldLooseBase(this, _events)[_events][event].push(listener);
return this;
}
off(event, listener) {
this.removeListener(event, listener);
return this;
}
removeListener(event, listener) {
if (_classPrivateFieldLooseBase(this, _events)[_events][event]) {
const idx = _classPrivateFieldLooseBase(this, _events)[_events][event].indexOf(listener);
if (idx > -1) {
_classPrivateFieldLooseBase(this, _events)[_events][event].splice(idx, 1);
}
}
}
emit(event) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
if (_classPrivateFieldLooseBase(this, _events)[_events][event]) {
_classPrivateFieldLooseBase(this, _events)[_events][event].forEach(listener => listener(...args));
}
}
once(event, listener) {
var _this = this;
const listenerWrapper = function () {
_this.removeListener(event, listenerWrapper);
listener(...arguments);
};
this.on(event, listenerWrapper);
}
}
//# sourceMappingURL=EventEmitter.js.map