/** * jQuery Color Animations * * @author John Resig, 2007 * @author Krinkle, 2011 * Released under the MIT and GPL licenses. * * - 2011-01-05: Forked for MediaWiki. See also jQuery.colorUtil plugin */ ( function ( $ ) { function getColor( elem, attr ) { var color; do { color = $.css( elem, attr ); // Keep going until we find an element that has color, or we hit the body if ( color !== '' && color !== 'transparent' || elem.nodeName.toLowerCase() === 'body' ) { break; } attr = 'backgroundColor'; // eslint-disable-next-line no-cond-assign } while ( elem = elem.parentNode ); return $.colorUtil.getRGB( color ); } // We override the animation for all of these color styles [ 'backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor' ].forEach( function ( attr ) { $.fx.step[ attr ] = function ( fx ) { if ( !fx.colorInit ) { fx.start = getColor( fx.elem, attr ); fx.end = $.colorUtil.getRGB( fx.end ); fx.colorInit = true; } fx.elem.style[ attr ] = 'rgb(' + [ Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[ 0 ] - fx.start[ 0 ] ) ) + fx.start[ 0 ], 10 ), 255 ), 0 ), Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[ 1 ] - fx.start[ 1 ] ) ) + fx.start[ 1 ], 10 ), 255 ), 0 ), Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[ 2 ] - fx.start[ 2 ] ) ) + fx.start[ 2 ], 10 ), 255 ), 0 ) ].join( ',' ) + ')'; }; } ); }( jQuery ) );