Blame view

app/bower_components/jquery/src/css.js 11.2 KB
87c93a029   Dang YoungWorld   add modal
1
  define( [
f986e111b   TRUONG   add libs
2
3
4
5
  	"./core",
  	"./var/pnum",
  	"./core/access",
  	"./css/var/rmargin",
87c93a029   Dang YoungWorld   add modal
6
7
  	"./var/document",
  	"./var/rcssNum",
f986e111b   TRUONG   add libs
8
9
  	"./css/var/rnumnonpx",
  	"./css/var/cssExpand",
87c93a029   Dang YoungWorld   add modal
10
11
  	"./css/var/getStyles",
  	"./css/var/swap",
f986e111b   TRUONG   add libs
12
  	"./css/curCSS",
87c93a029   Dang YoungWorld   add modal
13
  	"./css/adjustCSS",
f986e111b   TRUONG   add libs
14
15
16
17
  	"./css/addGetHookIf",
  	"./css/support",
  
  	"./core/init",
f986e111b   TRUONG   add libs
18
19
  	"./core/ready",
  	"./selector" // contains
87c93a029   Dang YoungWorld   add modal
20
21
22
23
  ], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand,
  	getStyles, swap, curCSS, adjustCSS, addGetHookIf, support ) {
  
  "use strict";
f986e111b   TRUONG   add libs
24
25
  
  var
f986e111b   TRUONG   add libs
26

87c93a029   Dang YoungWorld   add modal
27
28
29
  	// 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
f986e111b   TRUONG   add libs
30
  	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
f986e111b   TRUONG   add libs
31
32
33
34
35
  	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
  	cssNormalTransform = {
  		letterSpacing: "0",
  		fontWeight: "400"
  	},
87c93a029   Dang YoungWorld   add modal
36
37
  	cssPrefixes = [ "Webkit", "Moz", "ms" ],
  	emptyStyle = document.createElement( "div" ).style;
f986e111b   TRUONG   add libs
38

87c93a029   Dang YoungWorld   add modal
39
40
  // Return a css property mapped to a potentially vendor prefixed property
  function vendorPropName( name ) {
f986e111b   TRUONG   add libs
41

87c93a029   Dang YoungWorld   add modal
42
43
  	// Shortcut for names that are not vendor prefixed
  	if ( name in emptyStyle ) {
f986e111b   TRUONG   add libs
44
45
  		return name;
  	}
87c93a029   Dang YoungWorld   add modal
46
47
  	// Check for vendor prefixed names
  	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
f986e111b   TRUONG   add libs
48
49
50
51
  		i = cssPrefixes.length;
  
  	while ( i-- ) {
  		name = cssPrefixes[ i ] + capName;
87c93a029   Dang YoungWorld   add modal
52
  		if ( name in emptyStyle ) {
f986e111b   TRUONG   add libs
53
54
55
  			return name;
  		}
  	}
f986e111b   TRUONG   add libs
56
57
58
  }
  
  function setPositiveNumber( elem, value, subtract ) {
87c93a029   Dang YoungWorld   add modal
59
60
61
62
  
  	// Any relative (+/-) values have already been
  	// normalized at this point
  	var matches = rcssNum.exec( value );
f986e111b   TRUONG   add libs
63
  	return matches ?
87c93a029   Dang YoungWorld   add modal
64

f986e111b   TRUONG   add libs
65
  		// Guard against undefined "subtract", e.g., when used as in cssHooks
87c93a029   Dang YoungWorld   add modal
66
  		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
f986e111b   TRUONG   add libs
67
68
69
70
  		value;
  }
  
  function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
87c93a029   Dang YoungWorld   add modal
71
  	var i,
f986e111b   TRUONG   add libs
72
  		val = 0;
87c93a029   Dang YoungWorld   add modal
73
74
75
76
77
78
79
80
  	// If we already have the right measurement, avoid augmentation
  	if ( extra === ( isBorderBox ? "border" : "content" ) ) {
  		i = 4;
  
  	// Otherwise initialize for horizontal or vertical properties
  	} else {
  		i = name === "width" ? 1 : 0;
  	}
f986e111b   TRUONG   add libs
81
  	for ( ; i < 4; i += 2 ) {
87c93a029   Dang YoungWorld   add modal
82
83
  
  		// Both box models exclude margin, so add it if we want it
f986e111b   TRUONG   add libs
84
85
86
87
88
  		if ( extra === "margin" ) {
  			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
  		}
  
  		if ( isBorderBox ) {
87c93a029   Dang YoungWorld   add modal
89

f986e111b   TRUONG   add libs
90
91
92
93
  			// border-box includes padding, so remove it if we want content
  			if ( extra === "content" ) {
  				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
  			}
87c93a029   Dang YoungWorld   add modal
94
  			// At this point, extra isn't border nor margin, so remove border
f986e111b   TRUONG   add libs
95
96
97
98
  			if ( extra !== "margin" ) {
  				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
  			}
  		} else {
87c93a029   Dang YoungWorld   add modal
99
100
  
  			// At this point, extra isn't content, so add padding
f986e111b   TRUONG   add libs
101
  			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
87c93a029   Dang YoungWorld   add modal
102
  			// At this point, extra isn't content nor padding, so add border
f986e111b   TRUONG   add libs
103
104
105
106
107
108
109
110
111
112
113
114
  			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
87c93a029   Dang YoungWorld   add modal
115
116
  	var val,
  		valueIsBorderBox = true,
f986e111b   TRUONG   add libs
117
  		styles = getStyles( elem ),
87c93a029   Dang YoungWorld   add modal
118
  		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
f986e111b   TRUONG   add libs
119

87c93a029   Dang YoungWorld   add modal
120
121
122
123
124
125
126
127
  	// Support: IE <=11 only
  	// Running getBoundingClientRect on a disconnected node
  	// in IE throws an error.
  	if ( elem.getClientRects().length ) {
  		val = elem.getBoundingClientRect()[ name ];
  	}
  
  	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
f986e111b   TRUONG   add libs
128
129
130
  	// 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 ) {
87c93a029   Dang YoungWorld   add modal
131

f986e111b   TRUONG   add libs
132
133
134
135
136
137
138
  		// 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.
87c93a029   Dang YoungWorld   add modal
139
  		if ( rnumnonpx.test( val ) ) {
f986e111b   TRUONG   add libs
140
141
  			return val;
  		}
87c93a029   Dang YoungWorld   add modal
142
  		// Check for style in case a browser which returns unreliable values
f986e111b   TRUONG   add libs
143
  		// for getComputedStyle silently falls back to the reliable elem.style
87c93a029   Dang YoungWorld   add modal
144
145
  		valueIsBorderBox = isBorderBox &&
  			( support.boxSizingReliable() || val === elem.style[ name ] );
f986e111b   TRUONG   add libs
146
147
148
149
  
  		// Normalize "", auto, and prepare for extra
  		val = parseFloat( val ) || 0;
  	}
87c93a029   Dang YoungWorld   add modal
150
  	// Use the active box-sizing model to add/subtract irrelevant styles
f986e111b   TRUONG   add libs
151
152
153
154
155
156
157
158
159
160
  	return ( val +
  		augmentWidthOrHeight(
  			elem,
  			name,
  			extra || ( isBorderBox ? "border" : "content" ),
  			valueIsBorderBox,
  			styles
  		)
  	) + "px";
  }
87c93a029   Dang YoungWorld   add modal
161
  jQuery.extend( {
f986e111b   TRUONG   add libs
162
163
164
165
166
167
  	// 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 ) {
87c93a029   Dang YoungWorld   add modal
168

f986e111b   TRUONG   add libs
169
170
171
172
173
174
175
176
177
178
  					// 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: {
87c93a029   Dang YoungWorld   add modal
179
  		"animationIterationCount": true,
f986e111b   TRUONG   add libs
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
  		"columnCount": true,
  		"fillOpacity": true,
  		"flexGrow": true,
  		"flexShrink": 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: {
87c93a029   Dang YoungWorld   add modal
197
  		"float": "cssFloat"
f986e111b   TRUONG   add libs
198
199
200
201
  	},
  
  	// Get and set the style property on a DOM Node
  	style: function( elem, name, value, extra ) {
87c93a029   Dang YoungWorld   add modal
202

f986e111b   TRUONG   add libs
203
204
205
206
207
208
209
210
211
  		// 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;
87c93a029   Dang YoungWorld   add modal
212
213
  		name = jQuery.cssProps[ origName ] ||
  			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
f986e111b   TRUONG   add libs
214

87c93a029   Dang YoungWorld   add modal
215
  		// Gets hook for the prefixed version, then unprefixed version
f986e111b   TRUONG   add libs
216
217
218
219
220
  		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
  
  		// Check if we're setting a value
  		if ( value !== undefined ) {
  			type = typeof value;
87c93a029   Dang YoungWorld   add modal
221
222
223
  			// Convert "+=" or "-=" to relative numbers (#7345)
  			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
  				value = adjustCSS( elem, name, ret );
f986e111b   TRUONG   add libs
224
225
226
  				// Fixes bug #9237
  				type = "number";
  			}
87c93a029   Dang YoungWorld   add modal
227
  			// Make sure that null and NaN values aren't set (#7116)
f986e111b   TRUONG   add libs
228
229
230
  			if ( value == null || value !== value ) {
  				return;
  			}
87c93a029   Dang YoungWorld   add modal
231
232
233
  			// If a number was passed in, add the unit (except for certain CSS properties)
  			if ( type === "number" ) {
  				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
f986e111b   TRUONG   add libs
234
  			}
87c93a029   Dang YoungWorld   add modal
235
236
  			// background-* props affect original clone's values
  			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
f986e111b   TRUONG   add libs
237
238
239
240
  				style[ name ] = "inherit";
  			}
  
  			// If a hook was provided, use that value, otherwise just set the specified value
87c93a029   Dang YoungWorld   add modal
241
242
  			if ( !hooks || !( "set" in hooks ) ||
  				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
f986e111b   TRUONG   add libs
243

87c93a029   Dang YoungWorld   add modal
244
  				style[ name ] = value;
f986e111b   TRUONG   add libs
245
246
247
  			}
  
  		} else {
87c93a029   Dang YoungWorld   add modal
248

f986e111b   TRUONG   add libs
249
  			// If a hook was provided get the non-computed value from there
87c93a029   Dang YoungWorld   add modal
250
251
  			if ( hooks && "get" in hooks &&
  				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
f986e111b   TRUONG   add libs
252
253
254
255
256
257
258
259
260
  				return ret;
  			}
  
  			// Otherwise just get the value from the style object
  			return style[ name ];
  		}
  	},
  
  	css: function( elem, name, extra, styles ) {
87c93a029   Dang YoungWorld   add modal
261
  		var val, num, hooks,
f986e111b   TRUONG   add libs
262
263
264
  			origName = jQuery.camelCase( name );
  
  		// Make sure that we're working with the right name
87c93a029   Dang YoungWorld   add modal
265
266
  		name = jQuery.cssProps[ origName ] ||
  			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
f986e111b   TRUONG   add libs
267

87c93a029   Dang YoungWorld   add modal
268
  		// Try prefixed name followed by the unprefixed name
f986e111b   TRUONG   add libs
269
270
271
272
273
274
275
276
277
278
279
  		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 );
  		}
87c93a029   Dang YoungWorld   add modal
280
  		// Convert "normal" to computed value
f986e111b   TRUONG   add libs
281
282
283
  		if ( val === "normal" && name in cssNormalTransform ) {
  			val = cssNormalTransform[ name ];
  		}
87c93a029   Dang YoungWorld   add modal
284
  		// Make numeric if forced or a qualifier was provided and val looks numeric
f986e111b   TRUONG   add libs
285
286
  		if ( extra === "" || extra ) {
  			num = parseFloat( val );
87c93a029   Dang YoungWorld   add modal
287
  			return extra === true || isFinite( num ) ? num || 0 : val;
f986e111b   TRUONG   add libs
288
289
290
  		}
  		return val;
  	}
87c93a029   Dang YoungWorld   add modal
291
  } );
f986e111b   TRUONG   add libs
292

87c93a029   Dang YoungWorld   add modal
293
  jQuery.each( [ "height", "width" ], function( i, name ) {
f986e111b   TRUONG   add libs
294
295
296
  	jQuery.cssHooks[ name ] = {
  		get: function( elem, computed, extra ) {
  			if ( computed ) {
87c93a029   Dang YoungWorld   add modal
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
  
  				// Certain elements can have dimension info if we invisibly show them
  				// but it must have a current display style that would benefit
  				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
  
  					// Support: Safari 8+
  					// Table columns in Safari have non-zero offsetWidth & zero
  					// getBoundingClientRect().width unless display is changed.
  					// Support: IE <=11 only
  					// Running getBoundingClientRect on a disconnected node
  					// in IE throws an error.
  					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
  						swap( elem, cssShow, function() {
  							return getWidthOrHeight( elem, name, extra );
  						} ) :
  						getWidthOrHeight( elem, name, extra );
f986e111b   TRUONG   add libs
313
314
315
316
  			}
  		},
  
  		set: function( elem, value, extra ) {
87c93a029   Dang YoungWorld   add modal
317
318
319
  			var matches,
  				styles = extra && getStyles( elem ),
  				subtract = extra && augmentWidthOrHeight(
f986e111b   TRUONG   add libs
320
321
322
  					elem,
  					name,
  					extra,
87c93a029   Dang YoungWorld   add modal
323
  					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
f986e111b   TRUONG   add libs
324
  					styles
87c93a029   Dang YoungWorld   add modal
325
  				);
f986e111b   TRUONG   add libs
326

87c93a029   Dang YoungWorld   add modal
327
328
329
330
331
332
  			// Convert to pixels if value adjustment is needed
  			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
  				( matches[ 3 ] || "px" ) !== "px" ) {
  
  				elem.style[ name ] = value;
  				value = jQuery.css( elem, name );
f986e111b   TRUONG   add libs
333
  			}
87c93a029   Dang YoungWorld   add modal
334
  			return setPositiveNumber( elem, value, subtract );
f986e111b   TRUONG   add libs
335
336
  		}
  	};
87c93a029   Dang YoungWorld   add modal
337
  } );
f986e111b   TRUONG   add libs
338

87c93a029   Dang YoungWorld   add modal
339
  jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
f986e111b   TRUONG   add libs
340
341
  	function( elem, computed ) {
  		if ( computed ) {
87c93a029   Dang YoungWorld   add modal
342
343
344
345
346
347
  			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
  				elem.getBoundingClientRect().left -
  					swap( elem, { marginLeft: 0 }, function() {
  						return elem.getBoundingClientRect().left;
  					} )
  				) + "px";
f986e111b   TRUONG   add libs
348
349
350
351
352
  		}
  	}
  );
  
  // These hooks are used by animate to expand properties
87c93a029   Dang YoungWorld   add modal
353
  jQuery.each( {
f986e111b   TRUONG   add libs
354
355
356
357
358
359
360
361
  	margin: "",
  	padding: "",
  	border: "Width"
  }, function( prefix, suffix ) {
  	jQuery.cssHooks[ prefix + suffix ] = {
  		expand: function( value ) {
  			var i = 0,
  				expanded = {},
87c93a029   Dang YoungWorld   add modal
362
363
  				// Assumes a single number if not a string
  				parts = typeof value === "string" ? value.split( " " ) : [ value ];
f986e111b   TRUONG   add libs
364
365
366
367
368
369
370
371
372
373
374
375
376
  
  			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;
  	}
87c93a029   Dang YoungWorld   add modal
377
  } );
f986e111b   TRUONG   add libs
378

87c93a029   Dang YoungWorld   add modal
379
  jQuery.fn.extend( {
f986e111b   TRUONG   add libs
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
  	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 );
f986e111b   TRUONG   add libs
401
  	}
87c93a029   Dang YoungWorld   add modal
402
  } );
f986e111b   TRUONG   add libs
403
404
  
  return jQuery;
87c93a029   Dang YoungWorld   add modal
405
  } );