47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
 | 
						|
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
 | 
						|
 | 
						|
var eventManager = {
 | 
						|
  eventList: new Map(),
 | 
						|
 | 
						|
  on: function on(event, callback) {
 | 
						|
    this.eventList.has(event) || this.eventList.set(event, []);
 | 
						|
 | 
						|
    this.eventList.get(event).push(callback);
 | 
						|
 | 
						|
    return this;
 | 
						|
  },
 | 
						|
  off: function off() {
 | 
						|
    var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
 | 
						|
 | 
						|
    return this.eventList.delete(event);
 | 
						|
  },
 | 
						|
  emit: function emit(event) {
 | 
						|
    var _this = this;
 | 
						|
 | 
						|
    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
 | 
						|
      args[_key - 1] = arguments[_key];
 | 
						|
    }
 | 
						|
 | 
						|
    if (!this.eventList.has(event)) {
 | 
						|
      /* eslint no-console: 0 */
 | 
						|
      console.warn("<" + event + "> Event is not registered. Did you forgot to bind the event ?");
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
 | 
						|
    this.eventList.get(event).forEach(function (callback) {
 | 
						|
      return setTimeout(function () {
 | 
						|
        return callback.call.apply(callback, [_this].concat(_toConsumableArray(args)));
 | 
						|
      }, 0);
 | 
						|
    });
 | 
						|
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
exports.default = eventManager; |