| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455 | 
							- define([
 
- 	"./core",
 
- 	"./var/pnum",
 
- 	"./core/access",
 
- 	"./css/var/rmargin",
 
- 	"./css/var/rnumnonpx",
 
- 	"./css/var/cssExpand",
 
- 	"./css/var/isHidden",
 
- 	"./css/var/getStyles",
 
- 	"./css/curCSS",
 
- 	"./css/defaultDisplay",
 
- 	"./css/addGetHookIf",
 
- 	"./css/support",
 
- 	"./data/var/data_priv",
 
- 	"./core/init",
 
- 	"./css/swap",
 
- 	"./core/ready",
 
- 	"./selector" // contains
 
- ], function( jQuery, pnum, access, rmargin, rnumnonpx, cssExpand, isHidden,
 
- 	getStyles, curCSS, defaultDisplay, addGetHookIf, support, data_priv ) {
 
- var
 
- 	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
 
- 	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
 
- 	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
 
- 	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
 
- 	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
 
- 	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
 
- 	cssNormalTransform = {
 
- 		letterSpacing: 0,
 
- 		fontWeight: 400
 
- 	},
 
- 	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
 
- // return a css property mapped to a potentially vendor prefixed property
 
- function vendorPropName( style, name ) {
 
- 	// shortcut for names that are not vendor prefixed
 
- 	if ( name in style ) {
 
- 		return name;
 
- 	}
 
- 	// check for vendor prefixed names
 
- 	var capName = name[0].toUpperCase() + name.slice(1),
 
- 		origName = name,
 
- 		i = cssPrefixes.length;
 
- 	while ( i-- ) {
 
- 		name = cssPrefixes[ i ] + capName;
 
- 		if ( name in style ) {
 
- 			return name;
 
- 		}
 
- 	}
 
- 	return origName;
 
- }
 
- function setPositiveNumber( elem, value, subtract ) {
 
- 	var matches = rnumsplit.exec( value );
 
- 	return matches ?
 
- 		// Guard against undefined "subtract", e.g., when used as in cssHooks
 
- 		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
 
- 		value;
 
- }
 
- function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
 
- 	var i = extra === ( isBorderBox ? "border" : "content" ) ?
 
- 		// If we already have the right measurement, avoid augmentation
 
- 		4 :
 
- 		// Otherwise initialize for horizontal or vertical properties
 
- 		name === "width" ? 1 : 0,
 
- 		val = 0;
 
- 	for ( ; i < 4; i += 2 ) {
 
- 		// both box models exclude margin, so add it if we want it
 
- 		if ( extra === "margin" ) {
 
- 			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
 
- 		}
 
- 		if ( isBorderBox ) {
 
- 			// border-box includes padding, so remove it if we want content
 
- 			if ( extra === "content" ) {
 
- 				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
 
- 			}
 
- 			// at this point, extra isn't border nor margin, so remove border
 
- 			if ( extra !== "margin" ) {
 
- 				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
 
- 			}
 
- 		} else {
 
- 			// at this point, extra isn't content, so add padding
 
- 			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
 
- 			// at this point, extra isn't content nor padding, so add border
 
- 			if ( extra !== "padding" ) {
 
- 				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
 
- 			}
 
- 		}
 
- 	}
 
- 	return val;
 
- }
 
- function getWidthOrHeight( elem, name, extra ) {
 
- 	// Start with offset property, which is equivalent to the border-box value
 
- 	var valueIsBorderBox = true,
 
- 		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
 
- 		styles = getStyles( elem ),
 
- 		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
 
- 	// some non-html elements return undefined for offsetWidth, so check for null/undefined
 
- 	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
 
- 	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
 
- 	if ( val <= 0 || val == null ) {
 
- 		// Fall back to computed then uncomputed css if necessary
 
- 		val = curCSS( elem, name, styles );
 
- 		if ( val < 0 || val == null ) {
 
- 			val = elem.style[ name ];
 
- 		}
 
- 		// Computed unit is not pixels. Stop here and return.
 
- 		if ( rnumnonpx.test(val) ) {
 
- 			return val;
 
- 		}
 
- 		// we need the check for style in case a browser which returns unreliable values
 
- 		// for getComputedStyle silently falls back to the reliable elem.style
 
- 		valueIsBorderBox = isBorderBox &&
 
- 			( support.boxSizingReliable() || val === elem.style[ name ] );
 
- 		// Normalize "", auto, and prepare for extra
 
- 		val = parseFloat( val ) || 0;
 
- 	}
 
- 	// use the active box-sizing model to add/subtract irrelevant styles
 
- 	return ( val +
 
- 		augmentWidthOrHeight(
 
- 			elem,
 
- 			name,
 
- 			extra || ( isBorderBox ? "border" : "content" ),
 
- 			valueIsBorderBox,
 
- 			styles
 
- 		)
 
- 	) + "px";
 
- }
 
- function showHide( elements, show ) {
 
- 	var display, elem, hidden,
 
- 		values = [],
 
- 		index = 0,
 
- 		length = elements.length;
 
- 	for ( ; index < length; index++ ) {
 
- 		elem = elements[ index ];
 
- 		if ( !elem.style ) {
 
- 			continue;
 
- 		}
 
- 		values[ index ] = data_priv.get( elem, "olddisplay" );
 
- 		display = elem.style.display;
 
- 		if ( show ) {
 
- 			// Reset the inline display of this element to learn if it is
 
- 			// being hidden by cascaded rules or not
 
- 			if ( !values[ index ] && display === "none" ) {
 
- 				elem.style.display = "";
 
- 			}
 
- 			// Set elements which have been overridden with display: none
 
- 			// in a stylesheet to whatever the default browser style is
 
- 			// for such an element
 
- 			if ( elem.style.display === "" && isHidden( elem ) ) {
 
- 				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
 
- 			}
 
- 		} else {
 
- 			if ( !values[ index ] ) {
 
- 				hidden = isHidden( elem );
 
- 				if ( display && display !== "none" || !hidden ) {
 
- 					data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") );
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	// Set the display of most of the elements in a second loop
 
- 	// to avoid the constant reflow
 
- 	for ( index = 0; index < length; index++ ) {
 
- 		elem = elements[ index ];
 
- 		if ( !elem.style ) {
 
- 			continue;
 
- 		}
 
- 		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
 
- 			elem.style.display = show ? values[ index ] || "" : "none";
 
- 		}
 
- 	}
 
- 	return elements;
 
- }
 
- jQuery.extend({
 
- 	// Add in style property hooks for overriding the default
 
- 	// behavior of getting and setting a style property
 
- 	cssHooks: {
 
- 		opacity: {
 
- 			get: function( elem, computed ) {
 
- 				if ( computed ) {
 
- 					// We should always get a number back from opacity
 
- 					var ret = curCSS( elem, "opacity" );
 
- 					return ret === "" ? "1" : ret;
 
- 				}
 
- 			}
 
- 		}
 
- 	},
 
- 	// Don't automatically add "px" to these possibly-unitless properties
 
- 	cssNumber: {
 
- 		"columnCount": true,
 
- 		"fillOpacity": true,
 
- 		"fontWeight": true,
 
- 		"lineHeight": true,
 
- 		"opacity": true,
 
- 		"order": true,
 
- 		"orphans": true,
 
- 		"widows": true,
 
- 		"zIndex": true,
 
- 		"zoom": true
 
- 	},
 
- 	// Add in properties whose names you wish to fix before
 
- 	// setting or getting the value
 
- 	cssProps: {
 
- 		// normalize float css property
 
- 		"float": "cssFloat"
 
- 	},
 
- 	// Get and set the style property on a DOM Node
 
- 	style: function( elem, name, value, extra ) {
 
- 		// Don't set styles on text and comment nodes
 
- 		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
 
- 			return;
 
- 		}
 
- 		// Make sure that we're working with the right name
 
- 		var ret, type, hooks,
 
- 			origName = jQuery.camelCase( name ),
 
- 			style = elem.style;
 
- 		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
 
- 		// gets hook for the prefixed version
 
- 		// followed by the unprefixed version
 
- 		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
 
- 		// Check if we're setting a value
 
- 		if ( value !== undefined ) {
 
- 			type = typeof value;
 
- 			// convert relative number strings (+= or -=) to relative numbers. #7345
 
- 			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
 
- 				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
 
- 				// Fixes bug #9237
 
- 				type = "number";
 
- 			}
 
- 			// Make sure that null and NaN values aren't set. See: #7116
 
- 			if ( value == null || value !== value ) {
 
- 				return;
 
- 			}
 
- 			// If a number was passed in, add 'px' to the (except for certain CSS properties)
 
- 			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
 
- 				value += "px";
 
- 			}
 
- 			// Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
 
- 			// but it would mean to define eight (for every problematic property) identical functions
 
- 			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
 
- 				style[ name ] = "inherit";
 
- 			}
 
- 			// If a hook was provided, use that value, otherwise just set the specified value
 
- 			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
 
- 				// Support: Chrome, Safari
 
- 				// Setting style to blank string required to delete "style: x !important;"
 
- 				style[ name ] = "";
 
- 				style[ name ] = value;
 
- 			}
 
- 		} else {
 
- 			// If a hook was provided get the non-computed value from there
 
- 			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
 
- 				return ret;
 
- 			}
 
- 			// Otherwise just get the value from the style object
 
- 			return style[ name ];
 
- 		}
 
- 	},
 
- 	css: function( elem, name, extra, styles ) {
 
- 		var val, num, hooks,
 
- 			origName = jQuery.camelCase( name );
 
- 		// Make sure that we're working with the right name
 
- 		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
 
- 		// gets hook for the prefixed version
 
- 		// followed by the unprefixed version
 
- 		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
 
- 		// If a hook was provided get the computed value from there
 
- 		if ( hooks && "get" in hooks ) {
 
- 			val = hooks.get( elem, true, extra );
 
- 		}
 
- 		// Otherwise, if a way to get the computed value exists, use that
 
- 		if ( val === undefined ) {
 
- 			val = curCSS( elem, name, styles );
 
- 		}
 
- 		//convert "normal" to computed value
 
- 		if ( val === "normal" && name in cssNormalTransform ) {
 
- 			val = cssNormalTransform[ name ];
 
- 		}
 
- 		// Return, converting to number if forced or a qualifier was provided and val looks numeric
 
- 		if ( extra === "" || extra ) {
 
- 			num = parseFloat( val );
 
- 			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
 
- 		}
 
- 		return val;
 
- 	}
 
- });
 
- jQuery.each([ "height", "width" ], function( i, name ) {
 
- 	jQuery.cssHooks[ name ] = {
 
- 		get: function( elem, computed, extra ) {
 
- 			if ( computed ) {
 
- 				// certain elements can have dimension info if we invisibly show them
 
- 				// however, it must have a current display style that would benefit from this
 
- 				return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
 
- 					jQuery.swap( elem, cssShow, function() {
 
- 						return getWidthOrHeight( elem, name, extra );
 
- 					}) :
 
- 					getWidthOrHeight( elem, name, extra );
 
- 			}
 
- 		},
 
- 		set: function( elem, value, extra ) {
 
- 			var styles = extra && getStyles( elem );
 
- 			return setPositiveNumber( elem, value, extra ?
 
- 				augmentWidthOrHeight(
 
- 					elem,
 
- 					name,
 
- 					extra,
 
- 					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
 
- 					styles
 
- 				) : 0
 
- 			);
 
- 		}
 
- 	};
 
- });
 
- // Support: Android 2.3
 
- jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
 
- 	function( elem, computed ) {
 
- 		if ( computed ) {
 
- 			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
 
- 			// Work around by temporarily setting element display to inline-block
 
- 			return jQuery.swap( elem, { "display": "inline-block" },
 
- 				curCSS, [ elem, "marginRight" ] );
 
- 		}
 
- 	}
 
- );
 
- // These hooks are used by animate to expand properties
 
- jQuery.each({
 
- 	margin: "",
 
- 	padding: "",
 
- 	border: "Width"
 
- }, function( prefix, suffix ) {
 
- 	jQuery.cssHooks[ prefix + suffix ] = {
 
- 		expand: function( value ) {
 
- 			var i = 0,
 
- 				expanded = {},
 
- 				// assumes a single number if not a string
 
- 				parts = typeof value === "string" ? value.split(" ") : [ value ];
 
- 			for ( ; i < 4; i++ ) {
 
- 				expanded[ prefix + cssExpand[ i ] + suffix ] =
 
- 					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
 
- 			}
 
- 			return expanded;
 
- 		}
 
- 	};
 
- 	if ( !rmargin.test( prefix ) ) {
 
- 		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
 
- 	}
 
- });
 
- jQuery.fn.extend({
 
- 	css: function( name, value ) {
 
- 		return access( this, function( elem, name, value ) {
 
- 			var styles, len,
 
- 				map = {},
 
- 				i = 0;
 
- 			if ( jQuery.isArray( name ) ) {
 
- 				styles = getStyles( elem );
 
- 				len = name.length;
 
- 				for ( ; i < len; i++ ) {
 
- 					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
 
- 				}
 
- 				return map;
 
- 			}
 
- 			return value !== undefined ?
 
- 				jQuery.style( elem, name, value ) :
 
- 				jQuery.css( elem, name );
 
- 		}, name, value, arguments.length > 1 );
 
- 	},
 
- 	show: function() {
 
- 		return showHide( this, true );
 
- 	},
 
- 	hide: function() {
 
- 		return showHide( this );
 
- 	},
 
- 	toggle: function( state ) {
 
- 		if ( typeof state === "boolean" ) {
 
- 			return state ? this.show() : this.hide();
 
- 		}
 
- 		return this.each(function() {
 
- 			if ( isHidden( this ) ) {
 
- 				jQuery( this ).show();
 
- 			} else {
 
- 				jQuery( this ).hide();
 
- 			}
 
- 		});
 
- 	}
 
- });
 
- return jQuery;
 
- });
 
 
  |