Merge "Improve sorting on SpecialWanted*-Pages"
[mediawiki.git] / resources / src / jquery / jquery.color.js
blob70dc1057a6ffe87c5853c33884108bbf648fb270
1 /**
2  * jQuery Color Animations
3  *
4  * @author John Resig, 2007
5  * @author Krinkle, 2011
6  * Released under the MIT and GPL licenses.
7  *
8  * - 2011-01-05: Forked for MediaWiki. See also jQuery.colorUtil plugin
9  */
10 ( function ( $ ) {
12         function getColor( elem, attr ) {
13                 var color;
15                 do {
16                         color = $.css( elem, attr );
18                         // Keep going until we find an element that has color, or we hit the body
19                         if ( color !== '' && color !== 'transparent' || $.nodeName( elem, 'body' ) ) {
20                                 break;
21                         }
23                         attr = 'backgroundColor';
24                 // eslint-disable-next-line no-cond-assign
25                 } while ( elem = elem.parentNode );
27                 return $.colorUtil.getRGB( color );
28         }
30         // We override the animation for all of these color styles
31         $.each( [
32                 'backgroundColor',
33                 'borderBottomColor',
34                 'borderLeftColor',
35                 'borderRightColor',
36                 'borderTopColor',
37                 'color',
38                 'outlineColor'
39         ], function ( i, attr ) {
40                 $.fx.step[ attr ] = function ( fx ) {
41                         if ( !fx.colorInit ) {
42                                 fx.start = getColor( fx.elem, attr );
43                                 fx.end = $.colorUtil.getRGB( fx.end );
44                                 fx.colorInit = true;
45                         }
47                         fx.elem.style[ attr ] = 'rgb(' + [
48                                 Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[ 0 ] - fx.start[ 0 ] ) ) + fx.start[ 0 ], 10 ), 255 ), 0 ),
49                                 Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[ 1 ] - fx.start[ 1 ] ) ) + fx.start[ 1 ], 10 ), 255 ), 0 ),
50                                 Math.max( Math.min( parseInt( ( fx.pos * ( fx.end[ 2 ] - fx.start[ 2 ] ) ) + fx.start[ 2 ], 10 ), 255 ), 0 )
51                         ].join( ',' ) + ')';
52                 };
53         } );
55 }( jQuery ) );