|  | define( [ | 
|  | "../core", | 
|  | "../core/isAttached", | 
|  | "./var/rboxStyle", | 
|  | "./var/rnumnonpx", | 
|  | "./var/getStyles", | 
|  | "./var/rcustomProp", | 
|  | "../var/rtrimCSS", | 
|  | "./support" | 
|  | ], function( jQuery, isAttached, rboxStyle, rnumnonpx, getStyles, | 
|  | rcustomProp, rtrimCSS, support ) { | 
|  |  | 
|  | "use strict"; | 
|  |  | 
|  | function curCSS( elem, name, computed ) { | 
|  | var width, minWidth, maxWidth, ret, | 
|  | isCustomProp = rcustomProp.test( name ), | 
|  |  | 
|  | // Support: Firefox 51+ | 
|  | // Retrieving style before computed somehow | 
|  | // fixes an issue with getting wrong values | 
|  | // on detached elements | 
|  | style = elem.style; | 
|  |  | 
|  | computed = computed || getStyles( elem ); | 
|  |  | 
|  | // getPropertyValue is needed for: | 
|  | //   .css('filter') (IE 9 only, trac-12537) | 
|  | //   .css('--customProperty) (gh-3144) | 
|  | if ( computed ) { | 
|  |  | 
|  | // Support: IE <=9 - 11+ | 
|  | // IE only supports `"float"` in `getPropertyValue`; in computed styles | 
|  | // it's only available as `"cssFloat"`. We no longer modify properties | 
|  | // sent to `.css()` apart from camelCasing, so we need to check both. | 
|  | // Normally, this would create difference in behavior: if | 
|  | // `getPropertyValue` returns an empty string, the value returned | 
|  | // by `.css()` would be `undefined`. This is usually the case for | 
|  | // disconnected elements. However, in IE even disconnected elements | 
|  | // with no styles return `"none"` for `getPropertyValue( "float" )` | 
|  | ret = computed.getPropertyValue( name ) || computed[ name ]; | 
|  |  | 
|  | if ( isCustomProp && ret ) { | 
|  |  | 
|  | // Support: Firefox 105+, Chrome <=105+ | 
|  | // Spec requires trimming whitespace for custom properties (gh-4926). | 
|  | // Firefox only trims leading whitespace. Chrome just collapses | 
|  | // both leading & trailing whitespace to a single space. | 
|  | // | 
|  | // Fall back to `undefined` if empty string returned. | 
|  | // This collapses a missing definition with property defined | 
|  | // and set to an empty string but there's no standard API | 
|  | // allowing us to differentiate them without a performance penalty | 
|  | // and returning `undefined` aligns with older jQuery. | 
|  | // | 
|  | // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED | 
|  | // as whitespace while CSS does not, but this is not a problem | 
|  | // because CSS preprocessing replaces them with U+000A LINE FEED | 
|  | // (which *is* CSS whitespace) | 
|  | // https://www.w3.org/TR/css-syntax-3/#input-preprocessing | 
|  | ret = ret.replace( rtrimCSS, "$1" ) || undefined; | 
|  | } | 
|  |  | 
|  | if ( ret === "" && !isAttached( elem ) ) { | 
|  | ret = jQuery.style( elem, name ); | 
|  | } | 
|  |  | 
|  | // A tribute to the "awesome hack by Dean Edwards" | 
|  | // Android Browser returns percentage for some values, | 
|  | // but width seems to be reliably pixels. | 
|  | // This is against the CSSOM draft spec: | 
|  | // https://drafts.csswg.org/cssom/#resolved-values | 
|  | if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { | 
|  |  | 
|  | // Remember the original values | 
|  | width = style.width; | 
|  | minWidth = style.minWidth; | 
|  | maxWidth = style.maxWidth; | 
|  |  | 
|  | // Put in the new values to get a computed value out | 
|  | style.minWidth = style.maxWidth = style.width = ret; | 
|  | ret = computed.width; | 
|  |  | 
|  | // Revert the changed values | 
|  | style.width = width; | 
|  | style.minWidth = minWidth; | 
|  | style.maxWidth = maxWidth; | 
|  | } | 
|  | } | 
|  |  | 
|  | return ret !== undefined ? | 
|  |  | 
|  | // Support: IE <=9 - 11 only | 
|  | // IE returns zIndex value as an integer. | 
|  | ret + "" : | 
|  | ret; | 
|  | } | 
|  |  | 
|  | return curCSS; | 
|  | } ); |