resources: Remove jquery.color, jquery.fullscreen, and jquery.form
Bug: T335723 Change-Id: I530bae259291949e0f0853bb8bd8264acd131ff4
这个提交包含在:
父节点
97e269836f
当前提交
1457308c31
|
@ -156,6 +156,9 @@ For notes on 1.40.x and older releases, see HISTORY.
|
|||
* jquery.hoverIntent was removed.
|
||||
* codex-search was removed, it's part of codex now.
|
||||
* wikimedia/ip-set was removed, it's part of wikimedia/ip-utils now.
|
||||
* jquery.color was removed.
|
||||
* jquery.fullscreen was removed.
|
||||
* jquery.form was removed.
|
||||
* …
|
||||
|
||||
=== Bug fixes in 1.41 ===
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
"--exclude": [
|
||||
"resources/src/codex",
|
||||
"resources/src/codex-search",
|
||||
"resources/src/jquery.color/jquery.color.js",
|
||||
"resources/src/jquery.tablesorter",
|
||||
"resources/src/jquery.tipsy",
|
||||
"resources/src/jquery/jquery.highlightText.js",
|
||||
|
|
|
@ -88,7 +88,6 @@
|
|||
"name": "Plugins",
|
||||
"classes": [
|
||||
"jQuery.client",
|
||||
"jQuery.colorUtil",
|
||||
"jQuery.plugin.*"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -170,12 +170,6 @@ return [
|
|||
'jquery.client' => [
|
||||
'scripts' => 'resources/lib/jquery.client/jquery.client.js',
|
||||
],
|
||||
'jquery.color' => [
|
||||
'scripts' => [
|
||||
'resources/src/jquery.color/jquery.colorUtil.js',
|
||||
'resources/src/jquery.color/jquery.color.js',
|
||||
],
|
||||
],
|
||||
'jquery.confirmable' => [
|
||||
'scripts' => [
|
||||
'resources/src/jquery/jquery.confirmable.js',
|
||||
|
@ -194,12 +188,6 @@ return [
|
|||
'deprecated' => 'Merged into "mediawiki.cookie", use that module instead (T271995)',
|
||||
'dependencies' => 'mediawiki.cookie',
|
||||
],
|
||||
'jquery.form' => [
|
||||
'scripts' => 'resources/lib/jquery.form/jquery.form.js',
|
||||
],
|
||||
'jquery.fullscreen' => [
|
||||
'scripts' => 'resources/lib/jquery.fullscreen/jquery.fullscreen.js',
|
||||
],
|
||||
'jquery.highlightText' => [
|
||||
'scripts' => 'resources/src/jquery/jquery.highlightText.js',
|
||||
'dependencies' => [
|
||||
|
|
|
@ -288,24 +288,6 @@ jquery.client:
|
|||
package/LICENSE-MIT:
|
||||
package/README.md:
|
||||
|
||||
jquery.form:
|
||||
license: GPL-2.0+ OR MIT
|
||||
homepage: https://github.com/jquery-form/form
|
||||
authors: Mike Alsup and Kevin Morris
|
||||
version: 3.14-ff80d9ddf4
|
||||
type: file
|
||||
src: https://raw.githubusercontent.com/jquery-form/form/ff80d9ddf4/jquery.form.js
|
||||
integrity: sha384-h4G2CrcSbixzMvrrK259cNBYaL/vS1D4+KdUN9NJDzQnTU1bQ6Avluget+Id13M7
|
||||
|
||||
jquery.fullscreen:
|
||||
license: GPL-2.0+
|
||||
homepage: https://github.com/theopolisme/jquery-fullscreen
|
||||
authors: Theo Patt, Timo Tijhof, Gilles Dubuc
|
||||
version: 2.1.0
|
||||
type: file
|
||||
src: https://raw.githubusercontent.com/theopolisme/jquery-fullscreen/v2.1.0/jquery.fullscreen.js
|
||||
integrity: sha384-G4KPs2d99tgcsyUnJ3eeZ1r2hEKDwZfc4+/xowL/LIemq2VVwEE8HpVAWt4WYNLR
|
||||
|
||||
jquery.i18n:
|
||||
license: MIT OR GPL-2.0-or-later
|
||||
homepage: https://github.com/wikimedia/jquery.i18n
|
||||
|
|
文件差异内容过多而无法显示
加载差异
|
@ -1,175 +0,0 @@
|
|||
/**
|
||||
* jQuery fullscreen plugin
|
||||
* https://github.com/theopolisme/jquery-fullscreen
|
||||
*
|
||||
* Copyright (c) 2013 Theopolisme <theopolismewiki@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
( function ( $ ) {
|
||||
var setupFullscreen,
|
||||
fsClass = 'jq-fullscreened';
|
||||
|
||||
/**
|
||||
* On fullscreenchange, trigger a jq-fullscreen-change event
|
||||
* The event is given an object, which contains the fullscreened DOM element (element), if any
|
||||
* and a boolean value (fullscreen) indicating if we've entered or exited fullscreen mode
|
||||
* Also remove the 'fullscreened' class from elements that are no longer fullscreen
|
||||
*/
|
||||
function handleFullscreenChange () {
|
||||
var fullscreenElement = document.fullscreenElement ||
|
||||
document.mozFullScreenElement ||
|
||||
document.webkitFullscreenElement ||
|
||||
document.msFullscreenElement;
|
||||
|
||||
if ( !fullscreenElement ) {
|
||||
$( '.' + fsClass ).data( 'isFullscreened', false ).removeClass( fsClass );
|
||||
}
|
||||
|
||||
$( document ).trigger( $.Event( 'jq-fullscreen-change', { element: fullscreenElement, fullscreen: !!fullscreenElement } ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Enters full screen with the "this" element in focus.
|
||||
* Check the .data( 'isFullscreened' ) of the return value to check
|
||||
* success or failure, if you're into that sort of thing.
|
||||
* @chainable
|
||||
* @return {jQuery}
|
||||
*/
|
||||
function enterFullscreen () {
|
||||
var element = this.get(0),
|
||||
$element = this.first();
|
||||
if ( element ) {
|
||||
if ( element.requestFullscreen ) {
|
||||
element.requestFullscreen();
|
||||
} else if ( element.mozRequestFullScreen ) {
|
||||
element.mozRequestFullScreen();
|
||||
} else if ( element.webkitRequestFullscreen ) {
|
||||
element.webkitRequestFullscreen();
|
||||
} else if ( element.msRequestFullscreen ) {
|
||||
element.msRequestFullscreen();
|
||||
} else {
|
||||
// Unable to make fullscreen
|
||||
$element.data( 'isFullscreened', false );
|
||||
return this;
|
||||
}
|
||||
// Add the fullscreen class and data attribute to `element`
|
||||
$element.addClass( fsClass ).data( 'isFullscreened', true );
|
||||
return this;
|
||||
} else {
|
||||
$element.data( 'isFullscreened', false );
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Brings the "this" element out of fullscreen.
|
||||
* Check the .data( 'isFullscreened' ) of the return value to check
|
||||
* success or failure, if you're into that sort of thing.
|
||||
* @chainable
|
||||
* @return {jQuery}
|
||||
*/
|
||||
function exitFullscreen () {
|
||||
var fullscreenElement = ( document.fullscreenElement ||
|
||||
document.mozFullScreenElement ||
|
||||
document.webkitFullscreenElement ||
|
||||
document.msFullscreenElement );
|
||||
|
||||
// Ensure that we only exit fullscreen if exitFullscreen() is being called on the same element that is currently fullscreen
|
||||
if ( fullscreenElement && this.get(0) === fullscreenElement ) {
|
||||
if ( document.exitFullscreen ) {
|
||||
document.exitFullscreen();
|
||||
} else if ( document.mozCancelFullScreen ) {
|
||||
document.mozCancelFullScreen();
|
||||
} else if ( document.webkitCancelFullScreen ) {
|
||||
document.webkitCancelFullScreen();
|
||||
} else if ( document.msExitFullscreen ) {
|
||||
document.msExitFullscreen();
|
||||
} else {
|
||||
// Unable to cancel fullscreen mode
|
||||
return this;
|
||||
}
|
||||
// We don't need to remove the fullscreen class here,
|
||||
// because it will be removed in handleFullscreenChange.
|
||||
// But we should change the data on the element so the
|
||||
// caller can check for success.
|
||||
this.first().data( 'isFullscreened', false );
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up fullscreen handling and install necessary event handlers.
|
||||
* Return false if fullscreen is not supported.
|
||||
*/
|
||||
setupFullscreen = function () {
|
||||
if ( $.support.fullscreen ) {
|
||||
// When the fullscreen mode is changed, trigger the
|
||||
// fullscreen events (and when exiting,
|
||||
// also remove the fullscreen class)
|
||||
$( document ).on( 'fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange', handleFullscreenChange);
|
||||
// Convenience wrapper so that one only needs to listen for
|
||||
// 'fullscreenerror', not all of the prefixed versions
|
||||
$( document ).on( 'webkitfullscreenerror mozfullscreenerror MSFullscreenError', function () {
|
||||
$( document ).trigger( $.Event( 'fullscreenerror' ) );
|
||||
} );
|
||||
// Fullscreen has been set up, so always return true
|
||||
setupFullscreen = function () { return true; };
|
||||
return true;
|
||||
} else {
|
||||
// Always return false from now on, since fullscreen is not supported
|
||||
setupFullscreen = function () { return false; };
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set up fullscreen handling if necessary, then make the first element
|
||||
* matching the given selector fullscreen
|
||||
* @chainable
|
||||
* @return {jQuery}
|
||||
*/
|
||||
$.fn.enterFullscreen = function () {
|
||||
if ( setupFullscreen() ) {
|
||||
$.fn.enterFullscreen = enterFullscreen;
|
||||
return this.enterFullscreen();
|
||||
} else {
|
||||
$.fn.enterFullscreen = function () { return this; };
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set up fullscreen handling if necessary, then cancel fullscreen mode
|
||||
* for the first element matching the given selector.
|
||||
* @chainable
|
||||
* @return {jQuery}
|
||||
*/
|
||||
$.fn.exitFullscreen = function () {
|
||||
if ( setupFullscreen() ) {
|
||||
$.fn.exitFullscreen = exitFullscreen;
|
||||
return this.exitFullscreen();
|
||||
} else {
|
||||
$.fn.exitFullscreen = function () { return this; };
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
$.support.fullscreen = document.fullscreenEnabled ||
|
||||
document.webkitFullscreenEnabled ||
|
||||
document.mozFullScreenEnabled ||
|
||||
document.msFullscreenEnabled;
|
||||
}( jQuery ) );
|
|
@ -1,55 +0,0 @@
|
|||
/**
|
||||
* 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( ',' ) + ')';
|
||||
};
|
||||
} );
|
||||
|
||||
}() );
|
|
@ -1,268 +0,0 @@
|
|||
/*!
|
||||
* jQuery Color Utilities
|
||||
*
|
||||
* Released under the MIT and GPL licenses.
|
||||
*
|
||||
* Mostly based on other plugins and functions (linted and optimized a little).
|
||||
* Sources cited inline.
|
||||
*/
|
||||
( function () {
|
||||
/**
|
||||
* @class jQuery.colorUtil
|
||||
* @singleton
|
||||
*/
|
||||
$.colorUtil = {
|
||||
|
||||
/**
|
||||
* Parse CSS color strings looking for color tuples
|
||||
*
|
||||
* Based on highlightFade by Blair Mitchelmore
|
||||
* <http://jquery.offput.ca/highlightFade/>
|
||||
*
|
||||
* @param {Array|string} color
|
||||
* @return {Array}
|
||||
*/
|
||||
getRGB: function ( color ) {
|
||||
var result;
|
||||
|
||||
// Check if we're already dealing with an array of colors
|
||||
if ( color && Array.isArray( color ) && color.length === 3 ) {
|
||||
return color;
|
||||
}
|
||||
if ( typeof color !== 'string' ) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Look for rgb(num,num,num)
|
||||
// eslint-disable-next-line no-cond-assign
|
||||
if ( result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec( color ) ) {
|
||||
return [
|
||||
parseInt( result[ 1 ], 10 ),
|
||||
parseInt( result[ 2 ], 10 ),
|
||||
parseInt( result[ 3 ], 10 )
|
||||
];
|
||||
}
|
||||
|
||||
// Look for rgb(num%,num%,num%)
|
||||
// eslint-disable-next-line no-cond-assign, security/detect-unsafe-regex
|
||||
if ( result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)%\s*,\s*([0-9]+(?:\.[0-9]+)?)%\s*,\s*([0-9]+(?:\.[0-9]+)?)%\s*\)/.exec( color ) ) {
|
||||
return [
|
||||
parseFloat( result[ 1 ] ) * 2.55,
|
||||
parseFloat( result[ 2 ] ) * 2.55,
|
||||
parseFloat( result[ 3 ] ) * 2.55
|
||||
];
|
||||
}
|
||||
|
||||
// Look for #a0b1c2
|
||||
// eslint-disable-next-line no-cond-assign
|
||||
if ( result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec( color ) ) {
|
||||
return [
|
||||
parseInt( result[ 1 ], 16 ),
|
||||
parseInt( result[ 2 ], 16 ),
|
||||
parseInt( result[ 3 ], 16 )
|
||||
];
|
||||
}
|
||||
|
||||
// Look for #fff
|
||||
// eslint-disable-next-line no-cond-assign
|
||||
if ( result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec( color ) ) {
|
||||
return [
|
||||
parseInt( result[ 1 ] + result[ 1 ], 16 ),
|
||||
parseInt( result[ 2 ] + result[ 2 ], 16 ),
|
||||
parseInt( result[ 3 ] + result[ 3 ], 16 )
|
||||
];
|
||||
}
|
||||
|
||||
// Look for rgba(0, 0, 0, 0) == transparent in Safari 3
|
||||
// eslint-disable-next-line no-cond-assign
|
||||
if ( result = /rgba\(0, 0, 0, 0\)/.exec( color ) ) {
|
||||
return $.colorUtil.colors.transparent;
|
||||
}
|
||||
|
||||
// Otherwise, we're most likely dealing with a named color
|
||||
return $.colorUtil.colors[ color.trim().toLowerCase() ];
|
||||
},
|
||||
|
||||
/**
|
||||
* Named color map
|
||||
*
|
||||
* Based on Interface by Stefan Petre
|
||||
* <http://interface.eyecon.ro/>
|
||||
*
|
||||
* @property {Object}
|
||||
*/
|
||||
colors: {
|
||||
aqua: [ 0, 255, 255 ],
|
||||
azure: [ 240, 255, 255 ],
|
||||
beige: [ 245, 245, 220 ],
|
||||
black: [ 0, 0, 0 ],
|
||||
blue: [ 0, 0, 255 ],
|
||||
brown: [ 165, 42, 42 ],
|
||||
cyan: [ 0, 255, 255 ],
|
||||
darkblue: [ 0, 0, 139 ],
|
||||
darkcyan: [ 0, 139, 139 ],
|
||||
darkgrey: [ 169, 169, 169 ],
|
||||
darkgreen: [ 0, 100, 0 ],
|
||||
darkkhaki: [ 189, 183, 107 ],
|
||||
darkmagenta: [ 139, 0, 139 ],
|
||||
darkolivegreen: [ 85, 107, 47 ],
|
||||
darkorange: [ 255, 140, 0 ],
|
||||
darkorchid: [ 153, 50, 204 ],
|
||||
darkred: [ 139, 0, 0 ],
|
||||
darksalmon: [ 233, 150, 122 ],
|
||||
darkviolet: [ 148, 0, 211 ],
|
||||
fuchsia: [ 255, 0, 255 ],
|
||||
gold: [ 255, 215, 0 ],
|
||||
green: [ 0, 128, 0 ],
|
||||
indigo: [ 75, 0, 130 ],
|
||||
khaki: [ 240, 230, 140 ],
|
||||
lightblue: [ 173, 216, 230 ],
|
||||
lightcyan: [ 224, 255, 255 ],
|
||||
lightgreen: [ 144, 238, 144 ],
|
||||
lightgrey: [ 211, 211, 211 ],
|
||||
lightpink: [ 255, 182, 193 ],
|
||||
lightyellow: [ 255, 255, 224 ],
|
||||
lime: [ 0, 255, 0 ],
|
||||
magenta: [ 255, 0, 255 ],
|
||||
maroon: [ 128, 0, 0 ],
|
||||
navy: [ 0, 0, 128 ],
|
||||
olive: [ 128, 128, 0 ],
|
||||
orange: [ 255, 165, 0 ],
|
||||
pink: [ 255, 192, 203 ],
|
||||
purple: [ 128, 0, 128 ],
|
||||
violet: [ 128, 0, 128 ],
|
||||
red: [ 255, 0, 0 ],
|
||||
silver: [ 192, 192, 192 ],
|
||||
white: [ 255, 255, 255 ],
|
||||
yellow: [ 255, 255, 0 ],
|
||||
transparent: [ 255, 255, 255 ]
|
||||
},
|
||||
|
||||
/**
|
||||
* Convert an RGB color value to HSL.
|
||||
*
|
||||
* Conversion formula based on
|
||||
* <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>
|
||||
*
|
||||
* Adapted from <https://en.wikipedia.org/wiki/HSL_color_space>.
|
||||
*
|
||||
* Assumes `r`, `g`, and `b` are contained in the set `[0, 255]` and
|
||||
* returns `h`, `s`, and `l` in the set `[0, 1]`.
|
||||
*
|
||||
* @param {number} r The red color value
|
||||
* @param {number} g The green color value
|
||||
* @param {number} b The blue color value
|
||||
* @return {number[]} The HSL representation
|
||||
*/
|
||||
rgbToHsl: function ( r, g, b ) {
|
||||
var d, h, s, l, min, max;
|
||||
|
||||
r = r / 255;
|
||||
g = g / 255;
|
||||
b = b / 255;
|
||||
|
||||
max = Math.max( r, g, b );
|
||||
min = Math.min( r, g, b );
|
||||
l = ( max + min ) / 2;
|
||||
|
||||
if ( max === min ) {
|
||||
// achromatic
|
||||
h = s = 0;
|
||||
} else {
|
||||
d = max - min;
|
||||
s = l > 0.5 ? d / ( 2 - max - min ) : d / ( max + min );
|
||||
switch ( max ) {
|
||||
case r:
|
||||
h = ( g - b ) / d + ( g < b ? 6 : 0 );
|
||||
break;
|
||||
case g:
|
||||
h = ( b - r ) / d + 2;
|
||||
break;
|
||||
case b:
|
||||
h = ( r - g ) / d + 4;
|
||||
break;
|
||||
}
|
||||
h /= 6;
|
||||
}
|
||||
|
||||
return [ h, s, l ];
|
||||
},
|
||||
|
||||
/**
|
||||
* Convert an HSL color value to RGB.
|
||||
*
|
||||
* Conversion formula based on
|
||||
* <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>
|
||||
*
|
||||
* Adapted from <https://en.wikipedia.org/wiki/HSL_color_space>.
|
||||
*
|
||||
* Assumes `h`, `s`, and `l` are contained in the set `[0, 1]` and
|
||||
* returns `r`, `g`, and `b` in the set `[0, 255]`.
|
||||
*
|
||||
* @param {number} h The hue
|
||||
* @param {number} s The saturation
|
||||
* @param {number} l The lightness
|
||||
* @return {number[]} The RGB representation
|
||||
*/
|
||||
hslToRgb: function ( h, s, l ) {
|
||||
var r, g, b, hue2rgb, q, p;
|
||||
|
||||
if ( s === 0 ) {
|
||||
r = g = b = l; // achromatic
|
||||
} else {
|
||||
hue2rgb = function ( t ) {
|
||||
if ( t < 0 ) {
|
||||
t += 1;
|
||||
}
|
||||
if ( t > 1 ) {
|
||||
t -= 1;
|
||||
}
|
||||
if ( t < 1 / 6 ) {
|
||||
return p + ( q - p ) * 6 * t;
|
||||
}
|
||||
if ( t < 1 / 2 ) {
|
||||
return q;
|
||||
}
|
||||
if ( t < 2 / 3 ) {
|
||||
return p + ( q - p ) * ( 2 / 3 - t ) * 6;
|
||||
}
|
||||
return p;
|
||||
};
|
||||
|
||||
q = l < 0.5 ? l * ( 1 + s ) : l + s - l * s;
|
||||
p = 2 * l - q;
|
||||
r = hue2rgb( h + 1 / 3 );
|
||||
g = hue2rgb( h );
|
||||
b = hue2rgb( h - 1 / 3 );
|
||||
}
|
||||
|
||||
return [ r * 255, g * 255, b * 255 ];
|
||||
},
|
||||
|
||||
/**
|
||||
* Get a brighter or darker rgb() value string.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* $.colorUtil.getColorBrightness( 'red', +0.1 );
|
||||
* // > "rgb(255,50,50)"
|
||||
* $.colorUtil.getColorBrightness( 'rgb(200,50,50)', -0.2 );
|
||||
* // > "rgb(118,29,29)"
|
||||
*
|
||||
* @param {Mixed} currentColor Current value in css
|
||||
* @param {number} mod Wanted brightness modification between -1 and 1
|
||||
* @return {string} Like `'rgb(r,g,b)'`
|
||||
*/
|
||||
getColorBrightness: function ( currentColor, mod ) {
|
||||
var rgbArr = $.colorUtil.getRGB( currentColor ),
|
||||
hslArr = $.colorUtil.rgbToHsl( rgbArr[ 0 ], rgbArr[ 1 ], rgbArr[ 2 ] );
|
||||
rgbArr = $.colorUtil.hslToRgb( hslArr[ 0 ], hslArr[ 1 ], hslArr[ 2 ] + mod );
|
||||
|
||||
return 'rgb(' +
|
||||
[ parseInt( rgbArr[ 0 ], 10 ), parseInt( rgbArr[ 1 ], 10 ), parseInt( rgbArr[ 2 ], 10 ) ].join( ',' ) +
|
||||
')';
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}() );
|
|
@ -61,8 +61,6 @@ return [
|
|||
}
|
||||
],
|
||||
'tests/qunit/resources/startup/clientprefs.test.js',
|
||||
'tests/qunit/resources/jquery.color.test.js',
|
||||
'tests/qunit/resources/jquery.colorUtil.test.js',
|
||||
'tests/qunit/resources/jquery.highlightText.test.js',
|
||||
'tests/qunit/resources/jquery.lengthLimit.test.js',
|
||||
'tests/qunit/resources/jquery.makeCollapsible.test.js',
|
||||
|
@ -112,7 +110,6 @@ return [
|
|||
'tests/qunit/resources/mediawiki.visibleTimeout.test.js',
|
||||
],
|
||||
'dependencies' => [
|
||||
'jquery.color',
|
||||
'jquery.highlightText',
|
||||
'jquery.lengthLimit',
|
||||
'jquery.makeCollapsible',
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
QUnit.module( 'jquery.color', () => {
|
||||
|
||||
QUnit.test( 'animate', async ( assert ) => {
|
||||
const $canvas = $( '<div>' )
|
||||
.css( 'background-color', '#fff' )
|
||||
.appendTo( '#qunit-fixture' );
|
||||
|
||||
// eslint-disable-next-line no-jquery/no-animate
|
||||
await $canvas.animate( { 'background-color': '#000' }, 3 ).promise();
|
||||
|
||||
const endColors = $.colorUtil.getRGB( $canvas.css( 'background-color' ) );
|
||||
assert.deepEqual( endColors, [ 0, 0, 0 ], 'end state' );
|
||||
} );
|
||||
|
||||
} );
|
|
@ -1,58 +0,0 @@
|
|||
QUnit.module( 'jquery.colorUtil', () => {
|
||||
|
||||
QUnit.test( 'getRGB [no arguments]', ( assert ) => {
|
||||
assert.strictEqual( $.colorUtil.getRGB(), undefined );
|
||||
} );
|
||||
|
||||
QUnit.test.each( 'getRGB', {
|
||||
'empty string': [ '', undefined ],
|
||||
'array of rgb': [ [ 0, 100, 255 ], [ 0, 100, 255 ] ],
|
||||
'rgb string': [ 'rgb(0,100,255)', [ 0, 100, 255 ] ],
|
||||
'rgb spaces': [ 'rgb(0, 100, 255)', [ 0, 100, 255 ] ],
|
||||
'rgb percent': [ 'rgb(0%,20%,40%)', [ 0, 51, 102 ] ],
|
||||
'rgb percent spaces': [ 'rgb(0%, 20%, 40%)', [ 0, 51, 102 ] ],
|
||||
'hex 6 lowercase': [ '#f2ddee', [ 242, 221, 238 ] ],
|
||||
'hex 6 uppercase': [ '#f2DDEE', [ 242, 221, 238 ] ],
|
||||
'hex 6 mixed': [ '#f2DdEe', [ 242, 221, 238 ] ],
|
||||
'hex 3 lowercase': [ '#eee', [ 238, 238, 238 ] ],
|
||||
'hex 3 uppercase': [ '#EEE', [ 238, 238, 238 ] ],
|
||||
'hex 3 mixed': [ '#eEe', [ 238, 238, 238 ] ],
|
||||
'rgba zeros': [ 'rgba(0, 0, 0, 0)', [ 255, 255, 255 ] ],
|
||||
// Known limitation, not yet supported
|
||||
'rgba zeros nospace': [ 'rgba(0,0,0,0)', undefined ],
|
||||
'literal name lightGreen': [ 'lightGreen', [ 144, 238, 144 ] ],
|
||||
'literal keyword transparent': [ 'transparent', [ 255, 255, 255 ] ],
|
||||
'literal invalid': [ 'mediaWiki', undefined ]
|
||||
}, ( assert, [ input, expected ] ) => {
|
||||
assert.deepEqual( $.colorUtil.getRGB( input ), expected );
|
||||
} );
|
||||
|
||||
function normalDecimal( a ) {
|
||||
return Math.round( a * 100 ) / 100;
|
||||
}
|
||||
|
||||
QUnit.test( 'rgbToHsl', ( assert ) => {
|
||||
const hsl = $.colorUtil.rgbToHsl( 144, 238, 144 );
|
||||
// Limit testing to two decimals to normalize cross-browser differences.
|
||||
const ret = [ normalDecimal( hsl[ 0 ] ), normalDecimal( hsl[ 1 ] ), normalDecimal( hsl[ 2 ] ) ];
|
||||
|
||||
assert.deepEqual( ret, [ 0.33, 0.73, 0.75 ], 'rgb(144, 238, 144): hsl(0.33, 0.73, 0.75)' );
|
||||
} );
|
||||
|
||||
QUnit.test( 'hslToRgb', ( assert ) => {
|
||||
const rgb = $.colorUtil.hslToRgb( 0.3, 0.7, 0.8 );
|
||||
// Limit to whole numbers to normalize cros-browser differences.
|
||||
const ret = [ Math.round( rgb[ 0 ] ), Math.round( rgb[ 1 ] ), Math.round( rgb[ 2 ] ) ];
|
||||
|
||||
assert.deepEqual( ret, [ 183, 240, 168 ], 'hsl(0.3, 0.7, 0.8): rgb(183, 240, 168)' );
|
||||
} );
|
||||
|
||||
QUnit.test( 'getColorBrightness', ( assert ) => {
|
||||
let ret;
|
||||
ret = $.colorUtil.getColorBrightness( 'red', +0.1 );
|
||||
assert.strictEqual( ret, 'rgb(255,50,50)', 'Start with named color "red", brighten 10%' );
|
||||
|
||||
ret = $.colorUtil.getColorBrightness( 'rgb(200,50,50)', -0.2 );
|
||||
assert.strictEqual( ret, 'rgb(118,29,29)', 'Start with rgb string "rgb(200,50,50)", darken 20%' );
|
||||
} );
|
||||
} );
|
正在加载...
在新工单中引用
屏蔽一个用户