UNPKG

1.47 kBJavaScriptView Raw
1/**
2 * https://github.com/mrdoob/eventdispatcher.js/
3 */
4
5function EventDispatcher() {}
6
7Object.assign( EventDispatcher.prototype, {
8
9 addEventListener: function ( type, listener ) {
10
11 if ( this._listeners === undefined ) this._listeners = {};
12
13 var listeners = this._listeners;
14
15 if ( listeners[ type ] === undefined ) {
16
17 listeners[ type ] = [];
18
19 }
20
21 if ( listeners[ type ].indexOf( listener ) === - 1 ) {
22
23 listeners[ type ].push( listener );
24
25 }
26
27 },
28
29 hasEventListener: function ( type, listener ) {
30
31 if ( this._listeners === undefined ) return false;
32
33 var listeners = this._listeners;
34
35 return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;
36
37 },
38
39 removeEventListener: function ( type, listener ) {
40
41 if ( this._listeners === undefined ) return;
42
43 var listeners = this._listeners;
44 var listenerArray = listeners[ type ];
45
46 if ( listenerArray !== undefined ) {
47
48 var index = listenerArray.indexOf( listener );
49
50 if ( index !== - 1 ) {
51
52 listenerArray.splice( index, 1 );
53
54 }
55
56 }
57
58 },
59
60 dispatchEvent: function ( event ) {
61
62 if ( this._listeners === undefined ) return;
63
64 var listeners = this._listeners;
65 var listenerArray = listeners[ event.type ];
66
67 if ( listenerArray !== undefined ) {
68
69 event.target = this;
70
71 var array = listenerArray.slice( 0 );
72
73 for ( var i = 0, l = array.length; i < l; i ++ ) {
74
75 array[ i ].call( this, event );
76
77 }
78
79 }
80
81 }
82
83} );
84
85
86export { EventDispatcher };