73 lines
1.7 KiB
JavaScript
73 lines
1.7 KiB
JavaScript
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
|
|
var EventEmitter =
|
|
/*#__PURE__*/
|
|
function () {
|
|
function EventEmitter() {
|
|
_classCallCheck(this, EventEmitter);
|
|
|
|
this.observers = {};
|
|
}
|
|
|
|
_createClass(EventEmitter, [{
|
|
key: "on",
|
|
value: function on(events, listener) {
|
|
var _this = this;
|
|
|
|
events.split(' ').forEach(function (event) {
|
|
_this.observers[event] = _this.observers[event] || [];
|
|
|
|
_this.observers[event].push(listener);
|
|
});
|
|
return this;
|
|
}
|
|
}, {
|
|
key: "off",
|
|
value: function off(event, listener) {
|
|
var _this2 = this;
|
|
|
|
if (!this.observers[event]) {
|
|
return;
|
|
}
|
|
|
|
this.observers[event].forEach(function () {
|
|
if (!listener) {
|
|
delete _this2.observers[event];
|
|
} else {
|
|
var index = _this2.observers[event].indexOf(listener);
|
|
|
|
if (index > -1) {
|
|
_this2.observers[event].splice(index, 1);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}, {
|
|
key: "emit",
|
|
value: function 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 (this.observers[event]) {
|
|
var cloned = [].concat(this.observers[event]);
|
|
cloned.forEach(function (observer) {
|
|
observer.apply(void 0, args);
|
|
});
|
|
}
|
|
|
|
if (this.observers['*']) {
|
|
var _cloned = [].concat(this.observers['*']);
|
|
|
|
_cloned.forEach(function (observer) {
|
|
observer.apply(observer, [event].concat(args));
|
|
});
|
|
}
|
|
}
|
|
}]);
|
|
|
|
return EventEmitter;
|
|
}();
|
|
|
|
export default EventEmitter; |