You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							60 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							60 lines
						
					
					
						
							1.8 KiB
						
					
					
				//       | 
						|
// An event handler can take an optional event argument | 
						|
// and should not return a value | 
						|
                                           | 
						|
// An array of all currently registered event handlers for a type | 
						|
                                             | 
						|
// A map of event types and their corresponding event handlers. | 
						|
                         | 
						|
                                    | 
						|
   | 
						|
 | 
						|
/** Mitt: Tiny (~200b) functional event emitter / pubsub. | 
						|
 *  @name mitt | 
						|
 *  @returns {Mitt} | 
						|
 */ | 
						|
function mitt(all                 ) { | 
						|
	all = all || Object.create(null); | 
						|
 | 
						|
	return { | 
						|
		/** | 
						|
		 * Register an event handler for the given type. | 
						|
		 * | 
						|
		 * @param  {String} type	Type of event to listen for, or `"*"` for all events | 
						|
		 * @param  {Function} handler Function to call in response to given event | 
						|
		 * @memberOf mitt | 
						|
		 */ | 
						|
		on: function on(type        , handler              ) { | 
						|
			(all[type] || (all[type] = [])).push(handler); | 
						|
		}, | 
						|
 | 
						|
		/** | 
						|
		 * Remove an event handler for the given type. | 
						|
		 * | 
						|
		 * @param  {String} type	Type of event to unregister `handler` from, or `"*"` | 
						|
		 * @param  {Function} handler Handler function to remove | 
						|
		 * @memberOf mitt | 
						|
		 */ | 
						|
		off: function off(type        , handler              ) { | 
						|
			if (all[type]) { | 
						|
				all[type].splice(all[type].indexOf(handler) >>> 0, 1); | 
						|
			} | 
						|
		}, | 
						|
 | 
						|
		/** | 
						|
		 * Invoke all handlers for the given type. | 
						|
		 * If present, `"*"` handlers are invoked after type-matched handlers. | 
						|
		 * | 
						|
		 * @param {String} type  The event type to invoke | 
						|
		 * @param {Any} [evt]  Any value (object is recommended and powerful), passed to each handler | 
						|
		 * @memberof mitt | 
						|
		 */ | 
						|
		emit: function emit(type        , evt     ) { | 
						|
			(all[type] || []).map(function (handler) { handler(evt); }); | 
						|
			(all['*'] || []).map(function (handler) { handler(type, evt); }); | 
						|
		} | 
						|
	}; | 
						|
} | 
						|
 | 
						|
export default mitt; | 
						|
//# sourceMappingURL=mitt.es.js.map
 | 
						|
 |