@xassist/xassist-eventdispatcher
Version:
general eventdispatcher class
7 lines • 1.52 kB
JavaScript
/**
* @preserve
* https://github.com/GregBee2/xassist-eventdispatcher#readme Version 1.0.2.
* Copyright 2018 Gregory Beirens.
* Created on Tue, 17 Apr 2018 10:37:18 GMT.
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.xa=e.xa||{})}(this,function(e){"use strict";function t(){if(!(this instanceof t))return new t;this._events={}}t.prototype.registerEvent=function(e,t){if(this.hasEvent(e))throw new ReferenceError("event was allready registered");this._events[e]={thisArg:t||this,listeners:[]}},t.prototype.hasEvent=function(e){return this._events.hasOwnProperty(e)},t.prototype.on=function(e,t,s){var n={fn:t};s&&s!==this._events[e].thisArg&&(n.thisArg=s),this.hasEvent(e)&&this._events[e].listeners.push(n)},t.prototype.once=function(e,t,s){var n={fn:t,once:!0};s&&s!==this._events[e].thisArg&&(n.thisArg=s),this.hasEvent(e)&&this._events[e].listeners.push(n)},t.prototype.fire=function(e){var t,s=Array.prototype.slice.call(arguments,1);if(this.hasEvent(e)){t=this._events[e].thisArg;for(var n=0,i=this._events[e].listeners.length;n<i;n+=1)this._events[e].listeners[n].fn.apply(this._events[e].listeners[n].thisArg||t,s);this._events[e].listeners=this._events[e].listeners.filter(function(e){return!e.once})}},t.prototype.off=function(e,t){this.hasEvent(e)&&(this._events[e].listeners=this._events[e].listeners.filter(function(e){return e.fn!==t}))},e.EventDispatcher=t,Object.defineProperty(e,"__esModule",{value:!0})});