@turbox3d/shared
Version:
turbox shared internal utility
42 lines • 1.24 kB
JavaScript
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
import _createClass from "@babel/runtime/helpers/esm/createClass";
var Emitter = /*#__PURE__*/function () {
function Emitter() {
_classCallCheck(this, Emitter);
this.listeners = {};
}
return _createClass(Emitter, [{
key: "on",
value: function on(eventName, callback) {
var listeners = this.listeners[eventName] || [];
listeners.push(callback);
this.listeners[eventName] = listeners;
}
}, {
key: "emit",
value: function emit(eventName) {
var _this = this;
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var listeners = this.listeners[eventName];
if (!Array.isArray(listeners)) return;
listeners.forEach(function (callback) {
try {
callback.apply(_this, args);
} catch (e) {
console.error(e);
}
});
}
}, {
key: "off",
value: function off(eventName) {
if (!this.listeners[eventName]) {
return;
}
this.listeners[eventName] = [];
}
}]);
}();
export var emitter = new Emitter();