Sha256: 49b5d856c778817a7599506e00e4ef6d0c25c608e8550c360a7b72353234fb19

Contents?: true

Size: 1.09 KB

Versions: 17

Compression:

Stored size: 1.09 KB

Contents

/**
 * A general-purpuose event system
 */
mumuki.events = {
  _handlers: {},

  /**
   * Enables registration of event handlers for the given event name
   *
   * @param {string} eventName
   */
  enable(eventName) {
    this._handlers[eventName] = this._handlers[eventName] || [];
  },

  /**
   * Registers a listener that will be called whenever the given event is produced.
   * If the event is not enabled, the given handler is simply ignored.
   *
   * @param {string} eventName the event to listen to
   * @param {(event: any) => void} handler
   */
  on(eventName, handler) {
    if (this._handlers[eventName]) {
      this._handlers[eventName].push(handler);
    }
  },

  /**
   * Fires a given event
   *
   * @param {string} eventName
   * @param {any} [value]
   */
  fire(eventName, value = null) {
    if (this._handlers[eventName]) {
      this._handlers[eventName].forEach(it => it(value))
    }
  },

  /**
   * Clears handlers of the given event
   *
   * @param {string} eventName
   */
  clear(eventName) {
    if (this._handlers[eventName]) {
      this._handlers[eventName] = [];
    }
  }
}

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
mumuki-laboratory-8.1.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-8.1.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.12.3 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-8.0.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.12.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.12.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.11.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.11.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.10.5 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.10.4 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.10.3 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.10.2 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.10.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.10.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.9.2 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.9.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-7.9.0 app/assets/javascripts/mumuki_laboratory/application/events.js