diff options
Diffstat (limited to 'js/vendor/ev-emitter')
-rw-r--r-- | js/vendor/ev-emitter/.bower.json | 38 | ||||
-rw-r--r-- | js/vendor/ev-emitter/README.md | 101 | ||||
-rw-r--r-- | js/vendor/ev-emitter/bower.json | 28 | ||||
-rw-r--r-- | js/vendor/ev-emitter/ev-emitter.js | 109 | ||||
-rw-r--r-- | js/vendor/ev-emitter/package.json | 27 |
5 files changed, 303 insertions, 0 deletions
diff --git a/js/vendor/ev-emitter/.bower.json b/js/vendor/ev-emitter/.bower.json new file mode 100644 index 000000000..54903332e --- /dev/null +++ b/js/vendor/ev-emitter/.bower.json @@ -0,0 +1,38 @@ +{ + "name": "ev-emitter", + "main": "ev-emitter.js", + "homepage": "https://github.com/metafizzy/ev-emitter", + "authors": [ + "David DeSandro <desandrocodes@gmail.com>" + ], + "description": "lil' event emitter", + "moduleType": [ + "amd", + "globals", + "node" + ], + "keywords": [ + "event", + "emitter", + "pubsub" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests", + "sandbox" + ], + "version": "1.0.1", + "_release": "1.0.1", + "_resolution": { + "type": "version", + "tag": "v1.0.1", + "commit": "e217618dcb466eb5c800602b46252083dc02cc49" + }, + "_source": "git://github.com/metafizzy/ev-emitter.git", + "_target": "~1.0.0", + "_originalSource": "ev-emitter" +}
\ No newline at end of file diff --git a/js/vendor/ev-emitter/README.md b/js/vendor/ev-emitter/README.md new file mode 100644 index 000000000..06c642d04 --- /dev/null +++ b/js/vendor/ev-emitter/README.md @@ -0,0 +1,101 @@ +# EvEmitter + +_Lil' event emitter_ — add a little pub/sub + +EvEmitter adds publish/subscribe pattern to a browser class. It's a smaller version of [Olical/EventEmitter](https://github.com/Olical/EventEmitter). That EventEmitter is full featured, widely used, and great. This EvEmitter has just the base event functionality to power the event API in libraries like [Isotope](http://isotope.metafizzy.co), [Flickity](http://flickity.metafizzy.co), [Masonry](http://masonry.desandro.com), and [imagesLoaded](http://imagesloaded.desandro.com). + +## API + +``` js +// Inherit prototype, IE8+ +MyClass.prototype = new EvEmitter(); + +// Inherit prototype, IE9+ +MyClass.prototype = Object.create( EvEmitter.prototype ); + +// Mixin prototype +_.extend( MyClass.prototype, EvEmitter.prototype ); + +// single instance +var emitter = new EventEmitter(); +``` + +### on + +Add an event listener. + +``` js +emitter.on( eventName, listener ) +``` + ++ `eventName` - _String_ - name of the event ++ `listener` - _Function_ + +### off + +Remove an event listener. + +``` js +emitter.off( eventName, listener ) +``` + +### once + +Add an event listener to be triggered only once. + +``` js +emitter.once( eventName, listener ) +``` + +### emitEvent + +Trigger an event. + +``` js +emitter.emitEvent( eventName, args ) +``` + ++ `eventName` - _String_ - name of the event ++ `args` - _Array_ - arguments passed to listeners + +## Code example + +``` js +// create event emitter +var emitter = new EventEmitter(); + +// listeners +function hey( a, b, c ) { + console.log( 'Hey', a, b, c ) +} + +function ho( a, b, c ) { + console.log( 'Ho', a, b, c ) +} + +function letsGo( a, b, c ) { + console.log( 'Lets go', a, b, c ) +} + +// bind listeners +emitter.on( 'rock', hey ) +emitter.once( 'rock', ho ) +// trigger letsGo once +emitter.on( 'rock', letsGo ) + +// emit event +emitter.emitEvent( 'rock', [ 1, 2, 3 ] ) +// => 'Hey', 1, 2, 3 +// => 'Ho', 1, 2, 3 +// => 'Lets go', 1, 2, 3 + +// unbind +emitter.off( 'rock', ho ) + +emitter.emitEvent( 'rock', [ 4, 5, 6 ] ) +// => 'Hey' 4, 5, 6 +``` + +## License + +EvEmitter is released under the [MIT License](http://desandro.mit-license.org/). Have at it. diff --git a/js/vendor/ev-emitter/bower.json b/js/vendor/ev-emitter/bower.json new file mode 100644 index 000000000..cabd1115d --- /dev/null +++ b/js/vendor/ev-emitter/bower.json @@ -0,0 +1,28 @@ +{ + "name": "ev-emitter", + "main": "ev-emitter.js", + "homepage": "https://github.com/metafizzy/ev-emitter", + "authors": [ + "David DeSandro <desandrocodes@gmail.com>" + ], + "description": "lil' event emitter", + "moduleType": [ + "amd", + "globals", + "node" + ], + "keywords": [ + "event", + "emitter", + "pubsub" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests", + "sandbox" + ] +} diff --git a/js/vendor/ev-emitter/ev-emitter.js b/js/vendor/ev-emitter/ev-emitter.js new file mode 100644 index 000000000..212a978a8 --- /dev/null +++ b/js/vendor/ev-emitter/ev-emitter.js @@ -0,0 +1,109 @@ +/** + * EvEmitter v1.0.1 + * Lil' event emitter + * MIT License + */ + +/* jshint unused: true, undef: true, strict: true */ + +( function( global, factory ) { + // universal module definition + /* jshint strict: false */ /* globals define, module */ + if ( typeof define == 'function' && define.amd ) { + // AMD - RequireJS + define( factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS - Browserify, Webpack + module.exports = factory(); + } else { + // Browser globals + global.EvEmitter = factory(); + } + +}( this, function() { + +"use strict"; + +function EvEmitter() {} + +var proto = EvEmitter.prototype; + +proto.on = function( eventName, listener ) { + if ( !eventName || !listener ) { + return; + } + // set events hash + var events = this._events = this._events || {}; + // set listeners array + var listeners = events[ eventName ] = events[ eventName ] || []; + // only add once + if ( listeners.indexOf( listener ) == -1 ) { + listeners.push( listener ); + } + + return this; +}; + +proto.once = function( eventName, listener ) { + if ( !eventName || !listener ) { + return; + } + // add event + this.on( eventName, listener ); + // set once flag + // set onceEvents hash + var onceEvents = this._onceEvents = this._onceEvents || {}; + // set onceListeners array + var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || []; + // set flag + onceListeners[ listener ] = true; + + return this; +}; + +proto.off = function( eventName, listener ) { + var listeners = this._events && this._events[ eventName ]; + if ( !listeners || !listeners.length ) { + return; + } + var index = listeners.indexOf( listener ); + if ( index != -1 ) { + listeners.splice( index, 1 ); + } + + return this; +}; + +proto.emitEvent = function( eventName, args ) { + var listeners = this._events && this._events[ eventName ]; + if ( !listeners || !listeners.length ) { + return; + } + var i = 0; + var listener = listeners[i]; + args = args || []; + // once stuff + var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; + + while ( listener ) { + var isOnce = onceListeners && onceListeners[ listener ]; + if ( isOnce ) { + // remove listener + // remove before trigger to prevent recursion + this.off( eventName, listener ); + // unset once flag + delete onceListeners[ listener ]; + } + // trigger listener + listener.apply( this, args ); + // get next listener + i += isOnce ? 0 : 1; + listener = listeners[i]; + } + + return this; +}; + +return EvEmitter; + +})); diff --git a/js/vendor/ev-emitter/package.json b/js/vendor/ev-emitter/package.json new file mode 100644 index 000000000..d12f35779 --- /dev/null +++ b/js/vendor/ev-emitter/package.json @@ -0,0 +1,27 @@ +{ + "name": "ev-emitter", + "version": "1.0.1", + "description": "lil' event emitter", + "main": "ev-emitter.js", + "scripts": { + "test": "mocha test/test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/metafizzy/ev-emitter.git" + }, + "keywords": [ + "event", + "emitter", + "pubsub" + ], + "author": "David DeSandro", + "license": "MIT", + "bugs": { + "url": "https://github.com/metafizzy/ev-emitter/issues" + }, + "homepage": "https://github.com/metafizzy/ev-emitter#readme", + "directories": { + "test": "test" + } +} |