initial commit
This commit is contained in:
		
							
								
								
									
										199
									
								
								public/scripts/jquery/src/event/trigger.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										199
									
								
								public/scripts/jquery/src/event/trigger.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,199 @@
 | 
			
		||||
define( [
 | 
			
		||||
	"../core",
 | 
			
		||||
	"../var/document",
 | 
			
		||||
	"../data/var/dataPriv",
 | 
			
		||||
	"../data/var/acceptData",
 | 
			
		||||
	"../var/hasOwn",
 | 
			
		||||
	"../var/isFunction",
 | 
			
		||||
	"../var/isWindow",
 | 
			
		||||
	"../event"
 | 
			
		||||
], function( jQuery, document, dataPriv, acceptData, hasOwn, isFunction, isWindow ) {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
 | 
			
		||||
	stopPropagationCallback = function( e ) {
 | 
			
		||||
		e.stopPropagation();
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
jQuery.extend( jQuery.event, {
 | 
			
		||||
 | 
			
		||||
	trigger: function( event, data, elem, onlyHandlers ) {
 | 
			
		||||
 | 
			
		||||
		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
 | 
			
		||||
			eventPath = [ elem || document ],
 | 
			
		||||
			type = hasOwn.call( event, "type" ) ? event.type : event,
 | 
			
		||||
			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
 | 
			
		||||
 | 
			
		||||
		cur = lastElement = tmp = elem = elem || document;
 | 
			
		||||
 | 
			
		||||
		// Don't do events on text and comment nodes
 | 
			
		||||
		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// focus/blur morphs to focusin/out; ensure we're not firing them right now
 | 
			
		||||
		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ( type.indexOf( "." ) > -1 ) {
 | 
			
		||||
 | 
			
		||||
			// Namespaced trigger; create a regexp to match event type in handle()
 | 
			
		||||
			namespaces = type.split( "." );
 | 
			
		||||
			type = namespaces.shift();
 | 
			
		||||
			namespaces.sort();
 | 
			
		||||
		}
 | 
			
		||||
		ontype = type.indexOf( ":" ) < 0 && "on" + type;
 | 
			
		||||
 | 
			
		||||
		// Caller can pass in a jQuery.Event object, Object, or just an event type string
 | 
			
		||||
		event = event[ jQuery.expando ] ?
 | 
			
		||||
			event :
 | 
			
		||||
			new jQuery.Event( type, typeof event === "object" && event );
 | 
			
		||||
 | 
			
		||||
		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
 | 
			
		||||
		event.isTrigger = onlyHandlers ? 2 : 3;
 | 
			
		||||
		event.namespace = namespaces.join( "." );
 | 
			
		||||
		event.rnamespace = event.namespace ?
 | 
			
		||||
			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
 | 
			
		||||
			null;
 | 
			
		||||
 | 
			
		||||
		// Clean up the event in case it is being reused
 | 
			
		||||
		event.result = undefined;
 | 
			
		||||
		if ( !event.target ) {
 | 
			
		||||
			event.target = elem;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Clone any incoming data and prepend the event, creating the handler arg list
 | 
			
		||||
		data = data == null ?
 | 
			
		||||
			[ event ] :
 | 
			
		||||
			jQuery.makeArray( data, [ event ] );
 | 
			
		||||
 | 
			
		||||
		// Allow special events to draw outside the lines
 | 
			
		||||
		special = jQuery.event.special[ type ] || {};
 | 
			
		||||
		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Determine event propagation path in advance, per W3C events spec (trac-9951)
 | 
			
		||||
		// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
 | 
			
		||||
		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
 | 
			
		||||
 | 
			
		||||
			bubbleType = special.delegateType || type;
 | 
			
		||||
			if ( !rfocusMorph.test( bubbleType + type ) ) {
 | 
			
		||||
				cur = cur.parentNode;
 | 
			
		||||
			}
 | 
			
		||||
			for ( ; cur; cur = cur.parentNode ) {
 | 
			
		||||
				eventPath.push( cur );
 | 
			
		||||
				tmp = cur;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Only add window if we got to document (e.g., not plain obj or detached DOM)
 | 
			
		||||
			if ( tmp === ( elem.ownerDocument || document ) ) {
 | 
			
		||||
				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Fire handlers on the event path
 | 
			
		||||
		i = 0;
 | 
			
		||||
		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
 | 
			
		||||
			lastElement = cur;
 | 
			
		||||
			event.type = i > 1 ?
 | 
			
		||||
				bubbleType :
 | 
			
		||||
				special.bindType || type;
 | 
			
		||||
 | 
			
		||||
			// jQuery handler
 | 
			
		||||
			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
 | 
			
		||||
				dataPriv.get( cur, "handle" );
 | 
			
		||||
			if ( handle ) {
 | 
			
		||||
				handle.apply( cur, data );
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Native handler
 | 
			
		||||
			handle = ontype && cur[ ontype ];
 | 
			
		||||
			if ( handle && handle.apply && acceptData( cur ) ) {
 | 
			
		||||
				event.result = handle.apply( cur, data );
 | 
			
		||||
				if ( event.result === false ) {
 | 
			
		||||
					event.preventDefault();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		event.type = type;
 | 
			
		||||
 | 
			
		||||
		// If nobody prevented the default action, do it now
 | 
			
		||||
		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
 | 
			
		||||
 | 
			
		||||
			if ( ( !special._default ||
 | 
			
		||||
				special._default.apply( eventPath.pop(), data ) === false ) &&
 | 
			
		||||
				acceptData( elem ) ) {
 | 
			
		||||
 | 
			
		||||
				// Call a native DOM method on the target with the same name as the event.
 | 
			
		||||
				// Don't do default actions on window, that's where global variables be (trac-6170)
 | 
			
		||||
				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
 | 
			
		||||
 | 
			
		||||
					// Don't re-trigger an onFOO event when we call its FOO() method
 | 
			
		||||
					tmp = elem[ ontype ];
 | 
			
		||||
 | 
			
		||||
					if ( tmp ) {
 | 
			
		||||
						elem[ ontype ] = null;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					// Prevent re-triggering of the same event, since we already bubbled it above
 | 
			
		||||
					jQuery.event.triggered = type;
 | 
			
		||||
 | 
			
		||||
					if ( event.isPropagationStopped() ) {
 | 
			
		||||
						lastElement.addEventListener( type, stopPropagationCallback );
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					elem[ type ]();
 | 
			
		||||
 | 
			
		||||
					if ( event.isPropagationStopped() ) {
 | 
			
		||||
						lastElement.removeEventListener( type, stopPropagationCallback );
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					jQuery.event.triggered = undefined;
 | 
			
		||||
 | 
			
		||||
					if ( tmp ) {
 | 
			
		||||
						elem[ ontype ] = tmp;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return event.result;
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	// Piggyback on a donor event to simulate a different one
 | 
			
		||||
	// Used only for `focus(in | out)` events
 | 
			
		||||
	simulate: function( type, elem, event ) {
 | 
			
		||||
		var e = jQuery.extend(
 | 
			
		||||
			new jQuery.Event(),
 | 
			
		||||
			event,
 | 
			
		||||
			{
 | 
			
		||||
				type: type,
 | 
			
		||||
				isSimulated: true
 | 
			
		||||
			}
 | 
			
		||||
		);
 | 
			
		||||
 | 
			
		||||
		jQuery.event.trigger( e, null, elem );
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
} );
 | 
			
		||||
 | 
			
		||||
jQuery.fn.extend( {
 | 
			
		||||
 | 
			
		||||
	trigger: function( type, data ) {
 | 
			
		||||
		return this.each( function() {
 | 
			
		||||
			jQuery.event.trigger( type, data, this );
 | 
			
		||||
		} );
 | 
			
		||||
	},
 | 
			
		||||
	triggerHandler: function( type, data ) {
 | 
			
		||||
		var elem = this[ 0 ];
 | 
			
		||||
		if ( elem ) {
 | 
			
		||||
			return jQuery.event.trigger( type, data, elem, true );
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
} );
 | 
			
		||||
 | 
			
		||||
return jQuery;
 | 
			
		||||
} );
 | 
			
		||||
		Reference in New Issue
	
	Block a user