core-resource-app-test
Version:
App that contains assets and scripts for the core apps
69 lines (54 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var EventEmitter = function () {
function EventEmitter() {
_classCallCheck(this, EventEmitter);
this.observers = {};
}
EventEmitter.prototype.on = function on(events, listener) {
var _this = this;
events.split(' ').forEach(function (event) {
_this.observers[event] = _this.observers[event] || [];
_this.observers[event].push(listener);
});
};
EventEmitter.prototype.off = 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);
}
}
});
};
EventEmitter.prototype.emit = function emit(event) {
for (var _len = arguments.length, args = 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(undefined, args);
});
}
if (this.observers['*']) {
var _cloned = [].concat(this.observers['*']);
_cloned.forEach(function (observer) {
var _ref;
observer.apply(observer, (_ref = [event]).concat.apply(_ref, args));
});
}
};
return EventEmitter;
}();
exports.default = EventEmitter;