export default {
  handlers: null,

  /**

   */
  getHandlers(event) {
    this.handlers = this.handlers || {};
    return this.handlers[event] = this.handlers[event] || [];
  },

  /**

   */
  trigger(event, ...args) {
    this.getHandlers(event).forEach((handler) => handler.apply(this, args));
  },

  /**

   */
  on(event, handler) {
    this.getHandlers(event).push(handler);
  },

  /**

   */
  off(event, handler) {
    var handlers = this.getHandlers(event);
    var index = handlers.indexOf(handler);
    if (index !== -1) {
      handlers.splice(index, 1);
    }
  }
}