event-signal
Version:
EventSignal is a lightweight, browser-safe event messaging controller.
3 lines • 1.35 kB
JavaScript
/* event-signal v0.1.6 - 2015-06-11T04:46:44.138Z - https://github.com/r-park/event-signal */
!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.EventSignal=t()}(this,function(){"use strict";function e(){return this instanceof e?void(this._listeners=[]):new e}return e.prototype={addListener:function(e,t,n){if(!this._validate(e))throw new TypeError("`listenerFn` must be a function and cannot be added more than once");var i={callback:e};return t===!0?(i.scope={},i.once=t):(i.scope=t||{},i.once=n),this._listeners.push(i),this},emit:function(e){var t=this._listeners.length;if(t)for(var n,i=this._listeners.slice(),r=0;t>r;r++)n=i[r],n.callback.call(n.scope,e),n.once&&this.removeListener(n.callback);return this},removeListener:function(e){var t=this._indexOf(e);return t>=0&&this._listeners.splice(t,1),this},removeAllListeners:function(){return Array.isArray(this._listeners)&&(this._listeners.length=0),this},listeners:function(){return this._listeners.slice()},listenerCount:function(){return this._listeners.length},_indexOf:function(e){for(var t=this._listeners,n=t.length;n--;)if(e===t[n].callback)return n;return-1},_validate:function(e){return"function"==typeof e&&this._indexOf(e)<0}},e.prototype.then=e.prototype.addListener,e});
//# sourceMappingURL=event-signal.min.js.map