Spaces:
Running
Running
/** | |
* https://github.com/mrdoob/eventdispatcher.js/ | |
*/ | |
function EventDispatcher() {} | |
Object.assign( EventDispatcher.prototype, { | |
addEventListener: function ( type, listener ) { | |
if ( this._listeners === undefined ) this._listeners = {}; | |
var listeners = this._listeners; | |
if ( listeners[ type ] === undefined ) { | |
listeners[ type ] = []; | |
} | |
if ( listeners[ type ].indexOf( listener ) === - 1 ) { | |
listeners[ type ].push( listener ); | |
} | |
}, | |
hasEventListener: function ( type, listener ) { | |
if ( this._listeners === undefined ) return false; | |
var listeners = this._listeners; | |
return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; | |
}, | |
removeEventListener: function ( type, listener ) { | |
if ( this._listeners === undefined ) return; | |
var listeners = this._listeners; | |
var listenerArray = listeners[ type ]; | |
if ( listenerArray !== undefined ) { | |
var index = listenerArray.indexOf( listener ); | |
if ( index !== - 1 ) { | |
listenerArray.splice( index, 1 ); | |
} | |
} | |
}, | |
dispatchEvent: function ( event ) { | |
if ( this._listeners === undefined ) return; | |
var listeners = this._listeners; | |
var listenerArray = listeners[ event.type ]; | |
if ( listenerArray !== undefined ) { | |
event.target = this; | |
var array = listenerArray.slice( 0 ); | |
for ( var i = 0, l = array.length; i < l; i ++ ) { | |
array[ i ].call( this, event ); | |
} | |
} | |
} | |
} ); | |
export { EventDispatcher }; | |