Buckets:
| /** | |
| * This modules allows to dispatch event objects on custom JavaScript objects. | |
| * | |
| * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/} | |
| * | |
| * Code Example: | |
| * ```js | |
| * class Car extends EventDispatcher { | |
| * start() { | |
| * this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } ); | |
| * } | |
| *}; | |
| * | |
| * // Using events with the custom object | |
| * const car = new Car(); | |
| * car.addEventListener( 'start', function ( event ) { | |
| * alert( event.message ); | |
| * } ); | |
| * | |
| * car.start(); | |
| * ``` | |
| */ | |
| class EventDispatcher { | |
| /** | |
| * Adds the given event listener to the given event type. | |
| * | |
| * @param {string} type - The type of event to listen to. | |
| * @param {Function} listener - The function that gets called when the event is fired. | |
| */ | |
| addEventListener( type, listener ) { | |
| if ( this._listeners === undefined ) this._listeners = {}; | |
| const listeners = this._listeners; | |
| if ( listeners[ type ] === undefined ) { | |
| listeners[ type ] = []; | |
| } | |
| if ( listeners[ type ].indexOf( listener ) === - 1 ) { | |
| listeners[ type ].push( listener ); | |
| } | |
| } | |
| /** | |
| * Returns `true` if the given event listener has been added to the given event type. | |
| * | |
| * @param {string} type - The type of event. | |
| * @param {Function} listener - The listener to check. | |
| * @return {boolean} Whether the given event listener has been added to the given event type. | |
| */ | |
| hasEventListener( type, listener ) { | |
| const listeners = this._listeners; | |
| if ( listeners === undefined ) return false; | |
| return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; | |
| } | |
| /** | |
| * Removes the given event listener from the given event type. | |
| * | |
| * @param {string} type - The type of event. | |
| * @param {Function} listener - The listener to remove. | |
| */ | |
| removeEventListener( type, listener ) { | |
| const listeners = this._listeners; | |
| if ( listeners === undefined ) return; | |
| const listenerArray = listeners[ type ]; | |
| if ( listenerArray !== undefined ) { | |
| const index = listenerArray.indexOf( listener ); | |
| if ( index !== - 1 ) { | |
| listenerArray.splice( index, 1 ); | |
| } | |
| } | |
| } | |
| /** | |
| * Dispatches an event object. | |
| * | |
| * @param {Object} event - The event that gets fired. | |
| */ | |
| dispatchEvent( event ) { | |
| const listeners = this._listeners; | |
| if ( listeners === undefined ) return; | |
| const listenerArray = listeners[ event.type ]; | |
| if ( listenerArray !== undefined ) { | |
| event.target = this; | |
| // Make a copy, in case listeners are removed while iterating. | |
| const array = listenerArray.slice( 0 ); | |
| for ( let i = 0, l = array.length; i < l; i ++ ) { | |
| array[ i ].call( this, event ); | |
| } | |
| event.target = null; | |
| } | |
| } | |
| } | |
| export { EventDispatcher }; | |
Xet Storage Details
- Size:
- 2.74 kB
- Xet hash:
- b4357be685a0a925368c5d8cbf0912f881b56e709d87135c68dc3586350b04d3
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.