82 lines
2.0 KiB
JavaScript
82 lines
2.0 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
|
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
|
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
|
|
var EventEmitter =
|
|
/*#__PURE__*/
|
|
function () {
|
|
function EventEmitter() {
|
|
(0, _classCallCheck2.default)(this, EventEmitter);
|
|
this.observers = {};
|
|
}
|
|
|
|
(0, _createClass2.default)(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;
|
|
}();
|
|
|
|
var _default = EventEmitter;
|
|
exports.default = _default; |