Sha256: ceb0dfd57f2da4f5c8ea5de517eb2ab661e12f0574b16f25f230161f012dccf7

Contents?: true

Size: 1.09 KB

Versions: 55

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

55 entries across 55 versions & 1 rubygems

Version Path
mumuki-laboratory-9.23.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.22.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.21.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.20.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.20.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.19.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.18.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.18.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.17.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.16.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.15.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.14.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.14.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.13.2 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.13.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.13.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.12.1 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.12.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.11.0 app/assets/javascripts/mumuki_laboratory/application/events.js
mumuki-laboratory-9.10.0 app/assets/javascripts/mumuki_laboratory/application/events.js