UNPKG

chayns-components

Version:

A set of beautiful React components for developing chayns® applications.

59 lines (57 loc) 2.26 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase")); var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey")); var _events = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("events"); 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 (!(0, _classPrivateFieldLooseBase2.default)(this, _events)[_events][event]) { (0, _classPrivateFieldLooseBase2.default)(this, _events)[_events][event] = []; } (0, _classPrivateFieldLooseBase2.default)(this, _events)[_events][event].push(listener); return this; } off(event, listener) { this.removeListener(event, listener); return this; } removeListener(event, listener) { if ((0, _classPrivateFieldLooseBase2.default)(this, _events)[_events][event]) { const idx = (0, _classPrivateFieldLooseBase2.default)(this, _events)[_events][event].indexOf(listener); if (idx > -1) { (0, _classPrivateFieldLooseBase2.default)(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 ((0, _classPrivateFieldLooseBase2.default)(this, _events)[_events][event]) { (0, _classPrivateFieldLooseBase2.default)(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); } } exports.default = EventEmitter; //# sourceMappingURL=EventEmitter.js.map