@mobile/tinycolor2
Advanced tools
Comparing version 1.3.0 to 1.4.0
{ | ||
"version": "1.3.0", | ||
"version": "1.4.0", | ||
"name": "@mobile/tinycolor2", | ||
@@ -4,0 +4,0 @@ "description": "Repackaged version of tinycolor2 for mobile", |
131
tinycolor.js
@@ -5,3 +5,3 @@ // TinyColor v1.3.0 | ||
(function() { | ||
(function(Math) { | ||
@@ -11,7 +11,6 @@ var trimLeft = /^\s+/, | ||
tinyCounter = 0, | ||
math = Math, | ||
mathRound = math.round, | ||
mathMin = math.min, | ||
mathMax = math.max, | ||
mathRandom = math.random; | ||
mathRound = Math.round, | ||
mathMin = Math.min, | ||
mathMax = Math.max, | ||
mathRandom = Math.random; | ||
@@ -124,7 +123,7 @@ function tinycolor (color, opts) { | ||
}, | ||
toHex8: function() { | ||
return rgbaToHex(this._r, this._g, this._b, this._a); | ||
toHex8: function(allow4Char) { | ||
return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); | ||
}, | ||
toHex8String: function() { | ||
return '#' + this.toHex8(); | ||
toHex8String: function(allow4Char) { | ||
return '#' + this.toHex8(allow4Char); | ||
}, | ||
@@ -159,3 +158,3 @@ toRgb: function() { | ||
toFilter: function(secondColor) { | ||
var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a); | ||
var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); | ||
var secondHex8String = hex8String; | ||
@@ -166,3 +165,3 @@ var gradientType = this._gradientType ? "GradientType = 1, " : ""; | ||
var s = tinycolor(secondColor); | ||
secondHex8String = s.toHex8String(); | ||
secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); | ||
} | ||
@@ -178,3 +177,3 @@ | ||
var hasAlpha = this._a < 1 && this._a >= 0; | ||
var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "name"); | ||
var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); | ||
@@ -201,2 +200,5 @@ if (needsAlphaFormat) { | ||
} | ||
if (format === "hex4") { | ||
formattedString = this.toHex8String(true); | ||
} | ||
if (format === "hex8") { | ||
@@ -314,2 +316,5 @@ formattedString = this.toHex8String(); | ||
var a = 1; | ||
var s = null; | ||
var v = null; | ||
var l = null; | ||
var ok = false; | ||
@@ -323,3 +328,3 @@ var format = false; | ||
if (typeof color == "object") { | ||
if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { | ||
if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { | ||
rgb = rgbToRgb(color.r, color.g, color.b); | ||
@@ -329,13 +334,13 @@ ok = true; | ||
} | ||
else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { | ||
color.s = convertToPercentage(color.s); | ||
color.v = convertToPercentage(color.v); | ||
rgb = hsvToRgb(color.h, color.s, color.v); | ||
else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { | ||
s = convertToPercentage(color.s); | ||
v = convertToPercentage(color.v); | ||
rgb = hsvToRgb(color.h, s, v); | ||
ok = true; | ||
format = "hsv"; | ||
} | ||
else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { | ||
color.s = convertToPercentage(color.s); | ||
color.l = convertToPercentage(color.l); | ||
rgb = hslToRgb(color.h, color.s, color.l); | ||
else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { | ||
s = convertToPercentage(color.s); | ||
l = convertToPercentage(color.l); | ||
rgb = hslToRgb(color.h, s, l); | ||
ok = true; | ||
@@ -487,3 +492,3 @@ format = "hsl"; | ||
var i = math.floor(h), | ||
var i = Math.floor(h), | ||
f = h - i, | ||
@@ -523,7 +528,27 @@ p = v * (1 - s), | ||
// Converts an RGBA color plus alpha transparency to hex | ||
// Assumes r, g, b and a are contained in the set [0, 255] | ||
// Returns an 8 character hex | ||
function rgbaToHex(r, g, b, a) { | ||
// Assumes r, g, b are contained in the set [0, 255] and | ||
// a in [0, 1]. Returns a 4 or 8 character rgba hex | ||
function rgbaToHex(r, g, b, a, allow4Char) { | ||
var hex = [ | ||
pad2(mathRound(r).toString(16)), | ||
pad2(mathRound(g).toString(16)), | ||
pad2(mathRound(b).toString(16)), | ||
pad2(convertDecimalToHex(a)) | ||
]; | ||
// Return a 4 character hex if possible | ||
if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { | ||
return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); | ||
} | ||
return hex.join(""); | ||
} | ||
// `rgbaToArgbHex` | ||
// Converts an RGBA color to an ARGB Hex8 string | ||
// Rarely used, but required for "toFilter()" | ||
function rgbaToArgbHex(r, g, b, a) { | ||
var hex = [ | ||
pad2(convertDecimalToHex(a)), | ||
@@ -608,3 +633,3 @@ pad2(mathRound(r).toString(16)), | ||
var hsl = tinycolor(color).toHsl(); | ||
var hue = (mathRound(hsl.h) + amount) % 360; | ||
var hue = (hsl.h + amount) % 360; | ||
hsl.h = hue < 0 ? 360 + hue : hue; | ||
@@ -696,22 +721,8 @@ return tinycolor(hsl); | ||
var p = amount / 100; | ||
var w = p * 2 - 1; | ||
var a = rgb2.a - rgb1.a; | ||
var w1; | ||
if (w * a == -1) { | ||
w1 = w; | ||
} else { | ||
w1 = (w + a) / (1 + w * a); | ||
} | ||
w1 = (w1 + 1) / 2; | ||
var w2 = 1 - w1; | ||
var rgba = { | ||
r: rgb2.r * w1 + rgb1.r * w2, | ||
g: rgb2.g * w1 + rgb1.g * w2, | ||
b: rgb2.b * w1 + rgb1.b * w2, | ||
a: rgb2.a * p + rgb1.a * (1 - p) | ||
r: ((rgb2.r - rgb1.r) * p) + rgb1.r, | ||
g: ((rgb2.g - rgb1.g) * p) + rgb1.g, | ||
b: ((rgb2.b - rgb1.b) * p) + rgb1.b, | ||
a: ((rgb2.a - rgb1.a) * p) + rgb1.a | ||
}; | ||
@@ -1002,3 +1013,3 @@ | ||
// Handle floating point rounding errors | ||
if ((math.abs(n - max) < 0.000001)) { | ||
if ((Math.abs(n - max) < 0.000001)) { | ||
return 1; | ||
@@ -1073,2 +1084,3 @@ } | ||
return { | ||
CSS_UNIT: new RegExp(CSS_UNIT), | ||
rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), | ||
@@ -1082,2 +1094,3 @@ rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), | ||
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, | ||
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, | ||
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ | ||
@@ -1087,2 +1100,9 @@ }; | ||
// `isValidCSSUnit` | ||
// Take in a single string / number and check to see if it looks like a CSS unit | ||
// (see `matchers` above for definition). | ||
function isValidCSSUnit(color) { | ||
return !!matchers.CSS_UNIT.exec(color); | ||
} | ||
// `stringInputToObject` | ||
@@ -1128,6 +1148,6 @@ // Permissive string parsing. Take in a number of formats, and output an object | ||
return { | ||
a: convertHexToDecimal(match[1]), | ||
r: parseIntFromHex(match[2]), | ||
g: parseIntFromHex(match[3]), | ||
b: parseIntFromHex(match[4]), | ||
r: parseIntFromHex(match[1]), | ||
g: parseIntFromHex(match[2]), | ||
b: parseIntFromHex(match[3]), | ||
a: convertHexToDecimal(match[4]), | ||
format: named ? "name" : "hex8" | ||
@@ -1144,2 +1164,11 @@ }; | ||
} | ||
if ((match = matchers.hex4.exec(color))) { | ||
return { | ||
r: parseIntFromHex(match[1] + '' + match[1]), | ||
g: parseIntFromHex(match[2] + '' + match[2]), | ||
b: parseIntFromHex(match[3] + '' + match[3]), | ||
a: convertHexToDecimal(match[4] + '' + match[4]), | ||
format: named ? "name" : "hex8" | ||
}; | ||
} | ||
if ((match = matchers.hex3.exec(color))) { | ||
@@ -1186,2 +1215,2 @@ return { | ||
})(); | ||
})(Math); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
54724
1057