vendor: 2,704 bytes, lines 1-112
1/** 2 * EvEmitter v1.1.0 3 * Lil' event emitter 4 * MIT License 5 */ 6 7/* jshint unused: true, undef: true, strict: true */ 8 9( function( global, factory ) { 10 // universal module definition 11 /* jshint strict: false */ /* globals define, module, window */ 12 if ( typeof define == 'function' && define.amd ) { 13 // AMD - RequireJS 14 define( factory ); 15 } else if ( typeof module == 'object' && module.exports ) { 16 // CommonJS - Browserify, Webpack 17 module.exports = factory(); 18 } else { 19 // Browser globals 20 global.EvEmitter = factory(); 21 } 22 23}( typeof window != 'undefined' ? window : this, function() { 24 25"use strict"; 26 27function EvEmitter() {} 28 29var proto = EvEmitter.prototype; 30 31proto.on = function( eventName, listener ) { 32 if ( !eventName || !listener ) { 33 return; 34 } 35 // set events hash 36 var events = this._events = this._events || {}; 37 // set listeners array 38 var listeners = events[ eventName ] = events[ eventName ] || []; 39 // only add once 40 if ( listeners.indexOf( listener ) == -1 ) { 41 listeners.push( listener ); 42 } 43 44 return this; 45}; 46 47proto.once = function( eventName, listener ) { 48 if ( !eventName || !listener ) { 49 return; 50 } 51 // add event 52 this.on( eventName, listener ); 53 // set once flag 54 // set onceEvents hash 55 var onceEvents = this._onceEvents = this._onceEvents || {}; 56 // set onceListeners object 57 var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; 58 // set flag 59 onceListeners[ listener ] = true; 60 61 return this; 62}; 63 64proto.off = function( eventName, listener ) { 65 var listeners = this._events && this._events[ eventName ]; 66 if ( !listeners || !listeners.length ) { 67 return; 68 } 69 var index = listeners.indexOf( listener ); 70 if ( index != -1 ) { 71 listeners.splice( index, 1 ); 72 } 73 74 return this; 75}; 76 77proto.emitEvent = function( eventName, args ) { 78 var listeners = this._events && this._events[ eventName ]; 79 if ( !listeners || !listeners.length ) { 80 return; 81 } 82 // copy over to avoid interference if .off() in listener 83 listeners = listeners.slice(0); 84 args = args || []; 85 // once stuff 86 var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; 87 88 for ( var i=0; i < listeners.length; i++ ) { 89 var listener = listeners[i] 90 var isOnce = onceListeners && onceListeners[ listener ]; 91 if ( isOnce ) { 92 // remove listener 93 // remove before trigger to prevent recursion 94 this.off( eventName, listener ); 95 // unset once flag 96 delete onceListeners[ listener ]; 97 } 98 // trigger listener 99 listener.apply( this, args ); 100 } 101 102 return this; 103}; 104 105proto.allOff = function() { 106 delete this._events; 107 delete this._onceEvents; 108}; 109 110return EvEmitter; 111 112}));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.