@csstools/convert-colors 1.4.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["src/util.js","src/rgb-hsl.js","src/rgb-hwb.js","src/rgb-hsv.js","src/rgb-xyz.js","src/hsl-hsv.js","src/hwb-hsv.js","src/lab-xyz.js","src/lab-lch.js","src/rgb-contrast.js","src/hex-rgb.js","src/keyword-rgb.js","src/lab-ciede.js","src/index.js"],"sourcesContent":["/**\n* @private\n* @func rgb2hue\n* @desc Return a hue angle from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Red (0 - 100)\n* @param {Number} b - Red (0 - 100)\n* @param {Number} f - Hue Fallback (0 - 360)\n* @return {Number} Hue Angle (0 - 360)\n* @example\n* rgb2hue(100, 0, 0)\n* @example\n* rgb2hue(100, 0, 0, 0)\n*/\n\nexport function rgb2hue(rgbR, rgbG, rgbB, fallbackhue = 0) {\n\tconst value = rgb2value(rgbR, rgbG, rgbB);\n\tconst whiteness = rgb2whiteness(rgbR, rgbG, rgbB);\n\tconst delta = value - whiteness;\n\n\tif (delta) {\n\t\t// calculate segment\n\t\tconst segment = value === rgbR\n\t\t\t? (rgbG - rgbB) / delta\n\t\t: value === rgbG\n\t\t\t? (rgbB - rgbR) / delta\n\t\t: (rgbR - rgbG) / delta;\n\n\t\t// calculate shift\n\t\tconst shift = value === rgbR\n\t\t\t? segment < 0\n\t\t\t\t? 360 / 60\n\t\t\t\t: 0 / 60\n\t\t: value === rgbG\n\t\t\t? 120 / 60\n\t\t: 240 / 60;\n\n\t\t// calculate hue\n\t\tconst hue = (segment + shift) * 60;\n\n\t\treturn hue;\n\t} else {\n\t\t// otherwise return the Hue Fallback\n\t\treturn fallbackhue;\n\t}\n}\n\n/**\n* @private\n* @func hue2rgb\n* @desc Return an RGB channel from a hue angle\n* @param {Number} t1\n* @param {Number} t2\n* @param {Number} h - Hue Angle (0 - 360)\n* @return {Number} RGB channel (0 - 100)\n* @example\n* hue2rgb(0, 0, 0)\n*/\n\nexport function hue2rgb(t1, t2, hue) {\n\t// calculate the ranged hue\n\tconst rhue = hue < 0 ? hue + 360 : hue > 360 ? hue - 360 : hue;\n\n\t// calculate the rgb value\n\tconst rgb = rhue * 6 < 360\n\t\t? t1 + (t2 - t1) * rhue / 60\n\t: rhue * 2 < 360\n\t\t? t2\n\t: rhue * 3 < 720\n\t\t? t1 + (t2 - t1) * (240 - rhue) / 60\n\t: t1;\n\n\treturn rgb;\n}\n\n/**\n* @private\n* @func luminance2contrast\n* @desc Return the contrast ratio between 2 luminance.\n* @param {Number} l1 - Relative luminance of one color\n* @param {Number} l2 - Relative luminance of another color\n* @return {Number} Contrast ratio between the 2 luminance\n* @example\n* luminance2contrast(0.2126, 0) // => 5.252\n* @link https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio\n*/\n\nexport function luminance2contrast(relativeLuminance1, relativeLuminance2) {\n\t// l1 is the relative luminance of the lighter of the colors\n\tconst l1 = max(relativeLuminance1, relativeLuminance2);\n\n\t// l1 is the relative luminance of the darker of the colors\n\tconst l2 = min(relativeLuminance1, relativeLuminance2);\n\n\treturn (l1 * precision + 0.05 * precision) / (l2 * precision + 0.05 * precision);\n}\n\n\n/* RGB tooling\n/* ========================================================================== */\n\nexport function rgb2value(rgbR, rgbG, rgbB) {\n\tconst value = max(rgbR, rgbG, rgbB);\n\n\treturn value;\n}\n\nexport function rgb2whiteness(rgbR, rgbG, rgbB) {\n\tconst whiteness = min(rgbR, rgbG, rgbB);\n\n\treturn whiteness;\n}\n\n/* Math matrix\n/* ========================================================================== */\n\nexport function matrix(params, mats) {\n\treturn mats.map(\n\t\tmat => mat.reduce(\n\t\t\t// (acc, value, index) => acc + params[index] * value,\n\t\t\t(acc, value, index) => acc + params[index] * precision * (value * precision) / precision / precision,\n\t\t\t0\n\t\t)\n\t);\n}\n\n/* Precision\n/* ========================================================================== */\n\nexport const precision = 100000000;\n\n/* D50 reference white\n/* ========================================================================== */\n\nexport const [ wd50X, wd50Y, wd50Z ] = [ 96.42, 100, 82.49 ];\n\n/* Math Expressions\n/* ========================================================================== */\n\nexport const atan2d = (y, x) => rad2deg(atan2(y, x)); // arc-tangent in degrees\nexport const cosd = x => cos(deg2rad(x)); // cosine of the specified angle in degrees\nexport const deg2rad = x => x * PI / 180; // degree to radian\nexport const rad2deg = x => x * 180 / PI; // radian to degree\nexport const sind = x => sin(deg2rad(x)); // sine in degrees\n\n/* Math Constants\n/* ========================================================================== */\n\nexport const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cbrt = Math.cbrt;\nexport const cos = Math.cos;\nexport const exp = Math.exp;\nexport const floor = Math.floor;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const PI = Math.PI;\nexport const pow = Math.pow;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = pow(6, 3) / pow(29, 3);\nexport const kappa = pow(29, 3) / pow(3, 3);\n","import { abs, rgb2hue, rgb2value, rgb2whiteness, hue2rgb } from './util';\n\n/**\n* @func rgb2hsl\n* @desc Return a HSL color from an RGB color\n* @param {Number} r - red (0 - 100)\n* @param {Number} g - green (0 - 100)\n* @param {Number} b - blue (0 - 100)\n* @param {Number=} f - Hue Fallback (0 - 360)\n* @return {ArrayHSL}\n* @example\n* rgb2hsl(0, 100, 100) // => [0, 100, 50]\n* @link https://www.w3.org/TR/css-color-3/#hsl-color\n* @link https://www.w3.org/TR/css-color-4/#hsl-to-rgb\n* @link https://www.rapidtables.com/convert/color/rgb-to-hsl.html\n* @link https://www.rapidtables.com/convert/color/hsl-to-rgb.html\n*/\n\nexport function rgb2hsl(rgbR, rgbG, rgbB, fallbackhue) {\n\tconst hslH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);\n\tconst hslV = rgb2value(rgbR, rgbG, rgbB);\n\tconst hslW = rgb2whiteness(rgbR, rgbG, rgbB);\n\n\t// calculate value/whiteness delta\n\tconst hslD = hslV - hslW;\n\n\t// calculate lightness\n\tconst hslL = (hslV + hslW) / 2;\n\n\t// calculate saturation\n\tconst hslS = hslD === 0 ? 0 : hslD / (100 - abs(2 * hslL - 100)) * 100;\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/**\n* @func hsl2rgb\n* @desc Return an RGB color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayRGB}\n* @example\n* hsl2rgb(0, 100, 50) // => [0, 100, 100]\n* @link https://www.w3.org/TR/css-color-3/#hsl-color\n* @link https://www.w3.org/TR/css-color-4/#hsl-to-rgb\n* @link https://www.rapidtables.com/convert/color/rgb-to-hsl.html\n* @link https://www.rapidtables.com/convert/color/hsl-to-rgb.html\n*/\n\nexport function hsl2rgb(hslH, hslS, hslL) {\n\t// calcuate t2\n\tconst t2 = hslL <= 50 ? hslL * (hslS + 100) / 100 : hslL + hslS - hslL * hslS / 100;\n\n\t// calcuate t1\n\tconst t1 = hslL * 2 - t2;\n\n\t// calculate rgb\n\tconst [ rgbR, rgbG, rgbB ] = [\n\t\thue2rgb(t1, t2, hslH + 120),\n\t\thue2rgb(t1, t2, hslH),\n\t\thue2rgb(t1, t2, hslH - 120)\n\t];\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","import { rgb2hue, rgb2whiteness, rgb2value } from './util';\nimport { hsl2rgb } from './rgb-hsl';\n\n/**\n* @func rgb2hwb\n* @desc Return an HWB color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @param {Number} f - Hue Fallback (0 - 360)\n* @return {ArrayHWB}\n* @example\n* rgb2hwb(100, 0, 0) // => [0, 0, 0]\n* @link https://www.w3.org/TR/css-color-4/#hwb-to-rgb\n* @link http://alvyray.com/Papers/CG/hwb2rgb.htm\n*/\n\nexport function rgb2hwb(rgbR, rgbG, rgbB, fallbackhue) {\n\tconst hwbH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);\n\tconst hwbW = rgb2whiteness(rgbR, rgbG, rgbB);\n\tconst hwbV = rgb2value(rgbR, rgbG, rgbB);\n\tconst hwbB = 100 - hwbV;\n\n\treturn [hwbH, hwbW, hwbB];\n}\n\n/**\n* @func hwb2rgb\n* @desc Return an RGB color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayRGB}\n* @example\n* hwb2rgb(0, 0, 0) // => [100, 0, 0]\n* @link https://www.w3.org/TR/css-color-4/#hwb-to-rgb\n* @link http://alvyray.com/Papers/CG/hwb2rgb.htm\n*/\n\nexport function hwb2rgb(hwbH, hwbW, hwbB, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hwbH, 100, 50, fallbackhue).map(\n\t\tv => v * (100 - hwbW - hwbB) / 100 + hwbW\n\t);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","import { floor, rgb2value, rgb2whiteness, rgb2hue } from './util';\n\n/**\n* @func rgb2hsv\n* @desc Return an HSV color from an RGB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @param {Number=} f - Hue Fallback (0 - 360)\n* @return {ArrayHSV}\n* @example\n* rgb2hsv(100, 0, 0) // => [0, 100, 100]\n* @link http://alvyray.com/Papers/CG/hsv2rgb.htm\n*/\n\nexport function rgb2hsv(rgbR, rgbG, rgbB, fallbackhue) {\n\tconst hsvV = rgb2value(rgbR, rgbG, rgbB);\n\tconst hsvW = rgb2whiteness(rgbR, rgbG, rgbB);\n\tconst hsvH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);\n\n\t// calculate saturation\n\tconst hsvS = hsvV === hsvW ? 0 : (hsvV - hsvW) / hsvV * 100;\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/**\n* @func hsv2rgb\n* @desc Return an RGB color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayRGB}\n* @example\n* hsv2rgb(100, 0, 0) // => [100, 0, 0]\n* @link http://alvyray.com/Papers/CG/hsv2rgb.htm\n*/\n\nexport function hsv2rgb(hsvH, hsvS, hsvV) {\n\tconst rgbI = floor(hsvH / 60);\n\n\t// calculate rgb parts\n\tconst rgbF = hsvH / 60 - rgbI & 1 ? hsvH / 60 - rgbI : 1 - hsvH / 60 - rgbI;\n\tconst rgbM = hsvV * (100 - hsvS) / 100;\n\tconst rgbN = hsvV * (100 - hsvS * rgbF) / 100;\n\tconst rgbT = hsvV * (100 - (100 - rgbF) * hsvS / 100) / 100;\n\n\tconst [ rgbR, rgbG, rgbB ] = rgbI === 5\n\t\t? [ hsvV, rgbM, rgbN ]\n\t: rgbI === 4\n\t\t? [ rgbT, rgbM, hsvV ]\n\t: rgbI === 3\n\t\t? [ rgbM, rgbN, hsvV ]\n\t: rgbI === 2\n\t\t? [ rgbM, hsvV, rgbT ]\n\t: rgbI === 1\n\t\t? [ rgbN, hsvV, rgbM ]\n\t: [ hsvV, rgbT, rgbM ];\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","import { matrix, pow } from './util';\n\n/**\n* @func rgb2xyz\n* @desc Return an XYZ color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* rgb2xyz(100, 0, 0) // => [41.25, 21.27, 1.93]\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n*/\n\nexport function rgb2xyz(rgbR, rgbG, rgbB) {\n\tconst [ lrgbR, lrgbB, lrgbG ] = [ rgbR, rgbG, rgbB ].map(\n\t\tv => v > 4.045 ? pow((v + 5.5) / 105.5, 2.4) * 100 : v / 12.92\n\t);\n\n\tconst [ xyzX, xyzY, xyzZ ] = matrix([ lrgbR, lrgbB, lrgbG ], [\n\t\t[0.4124564, 0.3575761, 0.1804375],\n\t\t[0.2126729, 0.7151522, 0.0721750],\n\t\t[0.0193339, 0.1191920, 0.9503041]\n\t]);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2rgb\n* @desc Return an XYZ color from an RGB color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayRGB}\n* @example\n* xyz2rgb(41.25, 21.27, 1.93) // => [100, 0, 0]\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n*/\n\nexport function xyz2rgb(xyzX, xyzY, xyzZ) {\n\tconst [ lrgbR, lrgbB, lrgbG ] = matrix([ xyzX, xyzY, xyzZ ], [\n\t\t[ 3.2404542, -1.5371385, -0.4985314],\n\t\t[-0.9692660, 1.8760108, 0.0415560],\n\t\t[ 0.0556434, -0.2040259, 1.0572252]\n\t]);\n\n\tconst [ rgbR, rgbG, rgbB ] = [ lrgbR, lrgbB, lrgbG ].map(\n\t\tv => v > 0.31308 ? 1.055 * pow(v / 100, 1 / 2.4) * 100 - 5.5 : 12.92 * v\n\t);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","/**\n* @func hsl2hsv\n* @desc Return an HSV color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayHSV}\n* @example\n* hsl2hsv(0, 100, 50)\n* @link https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117\n*/\n\nexport function hsl2hsv(hslH, hslS, hslL) {\n\tconst hsv1 = hslS * (hslL < 50 ? hslL : 100 - hslL) / 100;\n\tconst hsvS = hsv1 === 0 ? 0 : 2 * hsv1 / (hslL + hsv1) * 100;\n\tconst hsvV = hslL + hsv1;\n\n\treturn [ hslH, hsvS, hsvV ];\n}\n\n/**\n* @func hsv2hsl\n* @desc Return an HSL color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayHSL}\n* @example\n* hsv2hsl(0, 0, 0) // => [0, 100, 50]\n* @link https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117\n*/\n\nexport function hsv2hsl(hsvH, hsvS, hsvV) {\n\tconst hslL = (200 - hsvS) * hsvV / 100;\n\n\tconst [ hslS, hslV ] = [\n\t\thslL === 0 || hslL === 200 ? 0 : hsvS * hsvV / 100 / (hslL <= 100 ? hslL : 200 - hslL) * 100,\n\t\thslL * 5 / 10\n\t];\n\n\treturn [ hsvH, hslS, hslV ];\n}\n","/**\n* @func hwb2hsv\n* @desc Return an HSV color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayHSV}\n* @example\n* hwb2hsv(0, 0, 0) // => [0, 100, 100]\n* @link https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV\n*/\n\nexport function hwb2hsv(hwbH, hwbW, hwbB) {\n\tconst [ hsvH, hsvS, hsvV ] = [\n\t\thwbH,\n\t\thwbB === 100 ? 0 : 100 - hwbW / (100 - hwbB) * 100,\n\t\t100 - hwbB\n\t];\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n\n/**\n* @func hsv2hwb\n* @desc Return an HWB color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayHWB}\n* @example\n* hsv2hwb(0, 100, 100) // => [0, 0, 0]\n* @link https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV\n*/\n\nexport function hsv2hwb(hsvH, hsvS, hsvV) {\n\tconst [ hwbH, hwbW, hwbB ] = [\n\t\thsvH,\n\t\t(100 - hsvS) * hsvV / 100,\n\t\t100 - hsvV\n\t];\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n","import { cbrt, epsilon, kappa, pow, wd50X, wd50Y, wd50Z, matrix } from './util';\n\n/**\n* @func lab2xyz\n* @desc Return an XYZ color from a LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayXYZ}\n* @example\n* lab2xyz(54.29, 80.82, 69.88) // => 41.25, 21.27, 1.93\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.easyrgb.com/en/math.php\n*/\n\nexport function lab2xyz(labL, labA, labB) {\n\t// compute f, starting with the luminance-related term\n\tconst f2 = (labL + 16) / 116;\n\tconst f1 = labA / 500 + f2;\n\tconst f3 = f2 - labB / 200;\n\n\t// compute pre-scaled XYZ\n\tconst [ initX, initY, initZ ] = [\n\t\tpow(f1, 3) > epsilon ? pow(f1, 3) : (116 * f1 - 16) / kappa,\n\t\tlabL > kappa * epsilon ? pow((labL + 16) / 116, 3) : labL / kappa,\n\t\tpow(f3, 3) > epsilon ? pow(f3, 3) : (116 * f3 - 16) / kappa\n\t];\n\n\tconst [ xyzX, xyzY, xyzZ ] = matrix(\n\t\t// compute XYZ by scaling pre-scaled XYZ by reference white\n\t\t[ initX * wd50X, initY * wd50Y, initZ * wd50Z ],\n\t\t// calculate D65 XYZ from D50 XYZ\n\t\t[\n\t\t\t[ 0.9555766, -0.0230393, 0.0631636],\n\t\t\t[-0.0282895, 1.0099416, 0.0210077],\n\t\t\t[ 0.0122982, -0.0204830, 1.3299098]\n\t\t]\n\t);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2lab\n* @desc Return an LAB color from a XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayLAB}\n* @example\n* xyz2lab(41.25, 21.27, 1.93) // => [54.29, 80.82, 69.88]\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.easyrgb.com/en/math.php\n*/\n\nexport function xyz2lab(xyzX, xyzY, xyzZ) {\n\t// calculate D50 XYZ from D65 XYZ\n\tconst [ d50X, d50Y, d50Z ] = matrix([ xyzX, xyzY, xyzZ ], [\n\t\t[ 1.0478112, 0.0228866, -0.0501270],\n\t\t[ 0.0295424, 0.9904844, -0.0170491],\n\t\t[-0.0092345, 0.0150436, 0.7521316]\n\t]);\n\n\t// calculate f\n\tconst [ f1, f2, f3 ] = [\n\t\td50X / wd50X,\n\t\td50Y / wd50Y,\n\t\td50Z / wd50Z\n\t].map(\n\t\tvalue => value > epsilon ? cbrt(value) : (kappa * value + 16) / 116\n\t);\n\n\tconst [ labL, labA, labB ] = [\n\t\t116 * f2 - 16,\n\t\t500 * (f1 - f2),\n\t\t200 * (f2 - f3)\n\t];\n\n\treturn [ labL, labA, labB ];\n}\n","import { atan2, cosd, pow, rad2deg, sind, sqrt } from './util';\n\n/**\n* @func lab2lch\n* @desc Return an LCH color from a LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayLAB}\n* @example\n* lab2lch(54.29, 80.82, 69.88) // => [54.29, 106.84, 40.85]\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.w3.org/TR/css-color-4/#lch-to-lab\n*/\n\nexport function lab2lch(labL, labA, labB) {\n\tconst [ lchC, lchH ] = [\n\t\tsqrt(pow(labA, 2) + pow(labB, 2)), // convert to chroma\n\t\trad2deg(atan2(labB, labA)) // convert to hue, in degrees\n\t];\n\n\treturn [ labL, lchC, lchH ];\n}\n\n/**\n* @func lch2lab\n* @desc Return a LAB color from an LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayLCH}\n* @example\n* lch2lab(54.29, 106.84, 40.85) // => [54.29, 80.82, 69.88]\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.w3.org/TR/css-color-4/#lch-to-lab\n*/\n\nexport function lch2lab(lchL, lchC, lchH) {\n\t// convert to Lab a and b from the polar form\n\tconst [ labA, labB ] = [\n\t\tlchC * cosd(lchH),\n\t\tlchC * sind(lchH)\n\t];\n\n\treturn [ lchL, labA, labB ];\n}\n","import { luminance2contrast, pow, precision } from './util'\n\n/**\n* @func rgb2contrast\n* @desc Return the contrast ratio of of RGB colors\n* @param {ArrayRGB} rgb1 - RGB Color Array\n* @param {ArrayRGB} rgb2 - RGB Color Array\n* @return {NumberContrast}\n* @example\n* rgb2contrast([100, 0, 0], [0, 0, 0]) // => 5.252\n* @link https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio\n*/\n\nexport default function rgb2contrast(rgb1, rgb2) {\n\tconst luminance1 = rgb2luminance(...rgb1);\n\tconst luminance2 = rgb2luminance(...rgb2);\n\n\treturn luminance2contrast(luminance1, luminance2);\n}\n\n/**\n* @private\n* @func rgb2luminance\n* @desc Return the relative brightness of RGB\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {Number} Relative luminance of the color\n* @example\n* rgb2luminance(100, 0, 0) // => 0.2126\n* @link https://www.w3.org/TR/WCAG21/#dfn-relative-luminance\n*/\n\nexport function rgb2luminance(rgbR, rgbG, rgbB) {\n\treturn (adjustChannel(rgbR) * coefficientR + adjustChannel(rgbG) * coefficientG + adjustChannel(rgbB) * coefficientB) / precision;\n}\n\n// low-gamma adjust coefficients\nconst adjustChannel = x => x <= 3.928 ? x / lowc : adjustGamma(x);\nconst adjustGamma = x => pow((x + 5.5) / 105.5, 2.4);\nconst lowc = 1292;\n\n// red/green/blue coefficients\nconst coefficientR = 0.2126 * precision;\nconst coefficientG = 0.7152 * precision;\nconst coefficientB = 0.0722 * precision;\n","/**\n* @func hex2rgb\n* @desc Return an RGBA color from a Hex color.\n* @param {StringHex} hex\n* @return {ArrayRGBA}\n* @example\n* hex2rgb(\"#f00\") // => [100, 0, 0, 100]\n* hex2rgb(\"#f00f\") // => [100, 0, 0, 100]\n* @example\n* hex2rgb(\"#ff0000\") // => [100, 0, 0, 100]\n* hex2rgb(\"#ff0000ff\") // => [100, 0, 0, 100]\n*/\n\nexport function hex2rgb(hex) {\n\t// #<hex-color>{3,4,6,8}\n\tconst [, r, g, b, a, rr, gg, bb, aa] = hex.match(hexColorMatch) || [];\n\n\tif (rr !== undefined || r !== undefined) {\n\t\tconst red = rr !== undefined ? parseInt(rr, 16) : parseInt(r + r, 16);\n\t\tconst green = gg !== undefined ? parseInt(gg, 16) : parseInt(g + g, 16);\n\t\tconst blue = bb !== undefined ? parseInt(bb, 16) : parseInt(b + b, 16);\n\t\tconst alpha = aa !== undefined ? parseInt(aa, 16) : a !== undefined ? parseInt(a + a, 16) : 255;\n\n\t\treturn [red, green, blue, alpha].map(c => c * 100 / 255);\n\t}\n\n\treturn undefined;\n}\n\n/**\n* @func rgb2hex\n* @desc Return a HEX color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {StringHex}\n* @example\n* rgb2hex(100, 0, 0) // => \"#ff0000\"\n*/\n\nexport function rgb2hex(rgbR, rgbG, rgbB) {\n\treturn `#${((1 << 24) + (Math.round(rgbR * 255 / 100) << 16) + (Math.round(rgbG * 255 / 100) << 8) + Math.round(rgbB * 255 / 100)).toString(16).slice(1)}`;\n}\n\nconst hexColorMatch = /^#?(?:([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?)$/i;\n","/**\n* @func keyword2rgb\n* @desc Return an RGB color from a CSS keyword color\n* @param {StringKeyword} keyword\n* @return {ArrayRGB}\n* @example\n* keyword2rgb('red') // => [100, 0, 0]\n*/\n\nexport default function keyword2rgb(keyword) {\n\tconst rgb255 = keywords[String(keyword).toLowerCase()];\n\n\treturn rgb255 ? rgb255.map(x => x * 100 / 255) : null;\n}\n\nconst keywords = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\ttransparent: [0, 0, 0],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n};\n","import { abs, atan2d, cosd, exp, pow, sind, sqrt, precision } from './util';\n\n/* Return\n/* ========================================================================== */\n\n/**\n* @func lab2ciede\n* @desc Return the CIEDE2000 difference between 2 CIE LAB colors (International Commission on Illumination, Delta E).\n* @param {Array} lab1 - CIE LAB color\n* @param {Number} lab1.0 - Lightness\n* @param {Number} lab1.1 - Red/Green Coordinate\n* @param {Number} lab1.2 - Yellow/Blue Coordinate\n* @param {Array} lab2 - CIE LAB color\n* @param {Number} lab2.0 - Lightness\n* @param {Number} lab2.1 - Red/Green Coordinate\n* @param {Number} lab2.2 - Yellow/Blue Coordinate\n* @return {NumberCIEDE}\n* @example\n* lab2ciede([97.14, -21.56, 94.48], [0, 0, 0]) // => 100\n* @link https://en.wikipedia.org/wiki/Color_difference#CIEDE2000\n*/\n\nexport default function lab2ciede([L1, a1, b1], [L2, a2, b2]) {\n\tconst c1 = sqrt(pow(a1, 2) + pow(b1, 2));\n\tconst c2 = sqrt(pow(a2, 2) + pow(b2, 2));\n\n\tconst deltaLPrime = L2 - L1;\n\n\tconst lBar = (L1 + L2) / 2;\n\tconst cBar = (c1 + c2) / 2;\n\n\tconst cBarPow7 = pow(cBar, 7);\n\tconst cCoeff = sqrt(cBarPow7 / (cBarPow7 + pow(25, 7)));\n\tconst a1Prime = a1 + a1 / 2 * (1 - cCoeff);\n\tconst a2Prime = a2 + a2 / 2 * (1 - cCoeff);\n\n\tconst c1Prime = sqrt(a1Prime * a1Prime + b1 * b1);\n\tconst c2Prime = sqrt(a2Prime * a2Prime + b2 * b2);\n\tconst cBarPrime = (c1Prime + c2Prime) / 2;\n\tconst deltaCPrime = c2Prime - c1Prime;\n\n\tconst h1Prime = a1Prime === 0 && b1 === 0 ? 0 : atan2d(b1, a1Prime) % 360;\n\tconst h2Prime = a2Prime === 0 && b2 === 0 ? 0 : atan2d(b2, a2Prime) % 360;\n\n\tlet deltaSmallHPrime;\n\tlet deltaBigHPrime;\n\tlet hBarPrime;\n\n\tif (c1Prime === 0 || c2Prime === 0) {\n\t\tdeltaSmallHPrime = 0;\n\t\tdeltaBigHPrime = 0;\n\t\thBarPrime = h1Prime + h2Prime;\n\t} else {\n\t\tdeltaSmallHPrime = abs(h1Prime - h2Prime) <= 180\n\t\t\t? h2Prime - h1Prime\n\t\t: h2Prime <= h1Prime\n\t\t\t? h2Prime - h1Prime + 360\n\t\t: h2Prime - h1Prime - 360;\n\n\t\tdeltaBigHPrime = 2 * sqrt(c1Prime * c2Prime) * sind(deltaSmallHPrime / 2);\n\n\t\thBarPrime = abs(h1Prime - h2Prime) <= 180\n\t\t\t? (h1Prime + h2Prime) / 2\n\t\t: h1Prime + h2Prime < 360\n\t\t\t? (h1Prime + h2Prime + 360) / 2\n\t\t: (h1Prime + h2Prime - 360) / 2;\n\t}\n\n\tconst T = 1 - 0.17 * precision * cosd(hBarPrime - 30) + 0.24 * precision * cosd(2 * hBarPrime) + 0.32 * precision * cosd(3 * hBarPrime + 6) - 0.2 * precision * cosd(4 * hBarPrime - 63) / precision / precision;\n\n\tconst slCoeff = (lBar - 50) * (lBar - 50);\n\tconst sl = 1 + 0.015 * precision * slCoeff / sqrt(20 + slCoeff) / precision;\n\tconst sc = 1 + 0.045 * precision * cBarPrime / precision;\n\tconst sh = 1 + 0.015 * precision * cBarPrime * T / precision;\n\n\tconst RtCoeff = 60 * exp(-((hBarPrime - 275) / 25) * ((hBarPrime - 275) / 25));\n\tconst Rt = -2 * cCoeff * sind(RtCoeff);\n\n\tconst term1 = deltaLPrime / (kl * sl);\n\tconst term2 = deltaCPrime / (kc * sc);\n\tconst term3 = deltaBigHPrime / (kh * sh);\n\tconst term4 = Rt * term2 * term3;\n\n\treturn sqrt(term1 * term1 + term2 * term2 + term3 * term3 + term4);\n}\n\n// weight factors\nconst kl = 1;\nconst kc = 1;\nconst kh = 1;\n","import { rgb2hsl, hsl2rgb } from './rgb-hsl';\nimport { rgb2hwb, hwb2rgb } from './rgb-hwb';\nimport { rgb2hsv, hsv2rgb } from './rgb-hsv';\nimport { rgb2xyz, xyz2rgb } from './rgb-xyz';\nimport { hsl2hsv, hsv2hsl } from './hsl-hsv';\nimport { hwb2hsv, hsv2hwb } from './hwb-hsv';\nimport { lab2xyz, xyz2lab } from './lab-xyz';\nimport { lab2lch, lch2lab } from './lab-lch';\nimport rgb2contrast from './rgb-contrast';\nimport { hex2rgb, rgb2hex } from './hex-rgb';\nimport keyword2rgb from './keyword-rgb';\nimport lab2ciede from './lab-ciede';\n\n/* Convert between RGB and Lab\n/* ========================================================================== */\n\n/**\n* @func rgb2lab\n* @desc Return a CIE LAB color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {ArrayLAB}\n* @example\n* rgb2lab(100, 0, 0) // => [54.29, 80.82, 69.88]\n*/\n\nfunction rgb2lab(rgbR, rgbG, rgbB) {\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2rgb\n* @desc Return an RGB color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayRGBA}\n* @example\n* lab2rgb(54.29, 80.82, 69.88) // => [100, 0, 0]\n*/\n\nfunction lab2rgb(labL, labA, labB) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n\n/* Convert between RGB and LCH\n/* ========================================================================== */\n\n/**\n* @func rgb2lch\n* @desc Return a CIE LAB color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {ArrayLCH}\n* @example\n* rgb2lch(100, 0, 0) // => [54.29, 106.84, 40.85]\n*/\n\nfunction rgb2lch(rgbR, rgbG, rgbB) {\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2rgb\n* @desc Return an RGB color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue\n* @return {ArrayRGBA}\n* @example\n* lch2rgb(54.29, 106.84, 40.85) // => [100, 0, 0]\n*/\n\nfunction lch2rgb(lchL, lchC, lchH) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n\n/* Convert between HSL and HWB\n/* ========================================================================== */\n\n/**\n* @func hwb2hsl\n* @desc Return an HSV color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayHSL}\n* @example\n* hwb2hsl(0, 0, 0) // => [0, 0, 100]\n*/\n\nfunction hwb2hsl(hwbH, hwbW, hwbB) {\n\tconst [ hsvH, hsvS, hsvV ] = hwb2hsv(hwbH, hwbW, hwbB);\n\tconst [ hslH, hslS, hslL ] = hsv2hsl(hsvH, hsvS, hsvV);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/**\n* @func hsl2hwb\n* @desc Return an HWB color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayHWB}\n* @example\n* hsl2hwb(0, 0, 100) // => [0, 0, 0]\n*/\n\nfunction hsl2hwb(hslH, hslS, hslL) {\n\tconst [ , hsvS, hsvV ] = hsl2hsv(hslH, hslS, hslL);\n\tconst [ , hwbW, hwbB ] = hsv2hwb(hslH, hsvS, hsvV);\n\n\treturn [ hslH, hwbW, hwbB ];\n}\n\n/* Convert between HSL and Lab\n/* ========================================================================== */\n\n/**\n* @func hsl2lab\n* @desc Return a CIE LAB color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayLAB}\n* @example\n* hsl2lab(0, 100, 50) // => [54.29, 80.82, 69.88]\n*/\n\nfunction hsl2lab(hslH, hslS, hslL) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2hsl\n* @desc Return a HSL color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @param {Number=} f - Hue Fallback (0 - 360)\n* @return {ArrayHSL}\n* @example\n* lab2hsl(54.29, 80.82, 69.88) // => [0, 100, 50]\n*/\n\nfunction lab2hsl(labL, labA, labB, fallbackhue) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/* Convert between HSL and LCH\n/* ========================================================================== */\n\n/**\n* @func hsl2lch\n* @desc Return a CIE LCH color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayLCH}\n* @example\n* hsl2lch(0, 100, 50) // => [54.29, 106.84, 40.85]\n*/\n\nfunction hsl2lch(hslH, hslS, hslL) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2hsl\n* @desc Return an HSL from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayLCH}\n* @example\n* lch2hsl(54.29, 106.84, 40.85) // => [0, 100, 50]\n*/\n\nfunction lch2hsl(lchL, lchC, lchH, fallbackhue) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/* Convert between HSL and XYZ\n/* ========================================================================== */\n\n/**\n* @func hsl2xyz\n* @desc Return an XYZ color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* hsl2xyz(0, 100, 50) // => [41.25, 21.27, 1.93]\n*/\n\nfunction hsl2xyz(hslH, hslS, hslL) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2hsl\n* @desc Return an HSL color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayHSL}\n* @example\n* xyz2hsl(0, 100, 50) // => [41.25, 21.27, 1.93]\n*/\n\nfunction xyz2hsl(xyzX, xyzY, xyzZ, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/* Convert between HWB and Lab\n/* ========================================================================== */\n\n/**\n* @func hwb2lab\n* @desc Return a CIE LAB color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayLAB}\n* @example\n* hwb2lab(0, 0, 0) // => [54.29, 80.82, 69.88]\n*/\n\nfunction hwb2lab(hwbH, hwbW, hwbB) {\n\tconst [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2hwb\n* @desc Return an HWB color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayHWB}\n* @example\n* lab2hwb(54.29, 80.82, 69.88) // => [0, 0, 0]\n*/\n\nfunction lab2hwb(labL, labA, labB, fallbackhue) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n\n/* Convert between HWB and LCH\n/* ========================================================================== */\n\n/**\n* @func hwb2lch\n* @desc Return a CIE LCH color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayLCH}\n* @example\n* hwb2lch(0, 0, 0) // => [54.29, 106.84, 40.85]\n*/\n\nfunction hwb2lch(hwbH, hwbW, hwbB) {\n\tconst [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2hwb\n* @desc Return an HWB color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayLCH}\n* @example\n* lch2hwb(54.29, 106.84, 40.85) // => [0, 0, 0]\n*/\n\nfunction lch2hwb(lchL, lchC, lchH, fallbackhue) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n\n/* Convert between HWB and XYZ\n/* ========================================================================== */\n\n/**\n* @func hwb2xyz\n* @desc Return an XYZ color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* hwb2xyz(0, 0, 0) // => [41.25, 21.27, 1.93]\n*/\n\nfunction hwb2xyz(hwbH, hwbW, hwbB) {\n\tconst [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2hwb\n* @desc Return an HWB color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayXYZ}\n* @example\n* xyz2hwb(0, 0, 0) // => [41.25, 21.27, 1.93]\n*/\n\nfunction xyz2hwb(xyzX, xyzY, xyzZ, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n\n/* Convert between HSV and Lab\n/* ========================================================================== */\n\n/**\n* @func hsv2lab\n* @desc Return a CIE LAB color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayLAB}\n* @example\n* hsv2lab(0, 100, 100) // => [54.29, 80.82, 69.88]\n*/\n\nfunction hsv2lab(hsvH, hsvS, hsvV) {\n\tconst [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2hsv\n* @desc Return an HSV color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayHSV}\n* @example\n* lab2hsv(54.29, 80.82, 69.88) // => [0, 100, 100]\n*/\n\nfunction lab2hsv(labL, labA, labB, fallbackhue) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/* Convert between HSV and LCH\n/* ========================================================================== */\n\n/**\n* @func hsv2lch\n* @desc Return a CIE LCH color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayLCH}\n* @example\n* hsv2lch(0, 100, 100) // => [54.29, 106.84, 40.85]\n*/\n\nfunction hsv2lch(hsvH, hsvS, hsvV) {\n\tconst [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2hsv\n* @desc Return an HSV color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayHSV}\n* @example\n* lch2hsv(54.29, 106.84, 40.85) // => [0, 100, 100]\n*/\n\nfunction lch2hsv(lchL, lchC, lchH, fallbackhue) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/* Convert between HSV and XYZ\n/* ========================================================================== */\n\n/**\n* @func hsv2xyz\n* @desc Return an XYZ color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* hsv2xyz(0, 100, 100) // => [41.25, 21.27, 1.93]\n*/\n\nfunction hsv2xyz(hsvH, hsvS, hsvV) {\n\tconst [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2hsv\n* @desc Return an XYZ color from an HSV color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayHSV}\n* @example\n* xyz2hsv(41.25, 21.27, 1.93) // => [0, 100, 100]\n*/\n\nfunction xyz2hsv(xyzX, xyzY, xyzZ, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/* Convert between XYZ and LCH\n/* ========================================================================== */\n\n/**\n* @func xyz2lch\n* @desc Return a CIE LCH color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayLCH}\n* @example\n* xyz2lch(41.25, 21.27, 1.93) // => [54.29, 106.84, 40.85]\n*/\n\nfunction xyz2lch(xyzX, xyzY, xyzZ) {\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2xyz\n* @desc Return an XYZ color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayXYZ}\n* @example\n* lch2xyz(54.29, 106.84, 40.85) // => [41.25, 21.27, 1.93]\n*/\n\nfunction lch2xyz(lchL, lchC, lchH) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/* Hex input conversions\n/* ========================================================================== */\n\n/**\n* @func hex2hsl\n* @desc Return an HSL color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayHSL}\n* @example\n* hex2hsl(\"#f00\") // => [0, 100, 50]\n*/\n\nfunction hex2hsl(hex) {\n\treturn rgb2hsl(...hex2rgb(hex));\n}\n\n/**\n* @func hex2hsv\n* @desc Return an HSL color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayHSV}\n* @example\n* hex2hsv(\"#f00\") // => [0, 100, 100]\n*/\n\nfunction hex2hsv(hex) {\n\treturn rgb2hsv(...hex2rgb(hex));\n}\n\n/**\n* @func hex2hwb\n* @desc Return an HWB color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayHWB}\n* @example\n* hex2hwb(\"#f00\") // => [0, 0, 0]\n*/\n\nfunction hex2hwb(hex) {\n\treturn rgb2hwb(...hex2rgb(hex));\n}\n\n/**\n* @func hex2lab\n* @desc Return a CIE LAB color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayLAB}\n* @example\n* hex2lab(\"#f00\") // => [54.29, 80.82, 69.88]\n*/\n\nfunction hex2lab(hex) {\n\treturn rgb2lab(...hex2rgb(hex));\n}\n\n/**\n* @func hex2lch\n* @desc Return a CIE LCH color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayLCH}\n* @example\n* hex2lch(\"#f00\") // => [54.29, 106.84, 40.85]\n*/\n\nfunction hex2lch(hex) {\n\treturn rgb2lch(...hex2rgb(hex));\n}\n\n/**\n* @func hex2xyz\n* @desc Return an XYZ color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayXYZ}\n* @example\n* hex2xyz(\"#f00\") // => [41.25, 21.27, 1.93]\n*/\n\nfunction hex2xyz(hex) {\n\treturn rgb2xyz(...hex2rgb(hex));\n}\n\n/* Hex output conversions\n/* ========================================================================== */\n\n/**\n* @func hsl2hex\n* @desc Return a Hex color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {StringHex}\n* @example\n* hsl2hex(0, 100, 50) // => \"#f00\"\n*/\n\nfunction hsl2hex(hslH, hslS, hslL) {\n\treturn rgb2hex(...hsl2rgb(hslH, hslS, hslL));\n}\n\n/**\n* @func hsv2hex\n* @desc Return a Hex color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {StringHex}\n* @example\n* hsv2hex(0, 100, 100) // => \"#f00\"\n*/\n\nfunction hsv2hex(hsvH, hsvS, hsvV) {\n\treturn rgb2hex(...hsl2rgb(hsvH, hsvS, hsvV));\n}\n\n/**\n* @func hwb2hex\n* @desc Return a Hex color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {StringHex}\n* @example\n* hwb2hex(0, 0, 0) // => \"#f00\"\n*/\n\nfunction hwb2hex(hwbH, hwbW, hwbB) {\n\treturn rgb2hex(...hwb2rgb(hwbH, hwbW, hwbB));\n}\n\n/**\n* @func lab2hex\n* @desc Return a Hex color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {StringHex}\n* @example\n* lab2hex(54.29, 80.82, 69.88) // => \"#f00\"\n*/\n\nfunction lab2hex(labL, labA, labB) {\n\treturn rgb2hex(...lab2rgb(labL, labA, labB));\n}\n\n/**\n* @func lch2hex\n* @desc Return a Hex color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {StringHex}\n* @example\n* lch2hex(54.29, 106.84, 40.85) // => \"#f00\"\n*/\n\nfunction lch2hex(lchL, lchC, lchH) {\n\treturn rgb2hex(...lch2rgb(lchL, lchC, lchH));\n}\n\n/**\n* @func xyz2hex\n* @desc Return a Hex color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {StringHex}\n* @example\n* xyz2hex(41.25, 21.27, 1.93) // => \"#f00\"\n*/\n\nfunction xyz2hex(xyzX, xyzY, xyzZ) {\n\treturn rgb2hex(...xyz2rgb(xyzX, xyzY, xyzZ));\n}\n\n/* CIEDE conversions\n/* ========================================================================== */\n\n/**\n* @func hex2ciede\n* @desc Return the CIEDE2000 difference between 2 HEX colors\n* @param {StringHex} hex1\n* @param {StringHex} hex2\n* @return {NumberCIEDE}\n* @example\n* hex2ciede('#fff', '#000') // => 100\n*/\n\nfunction hex2ciede(hex1, hex2) {\n\treturn lab2ciede(hex2lab(hex1), hex2lab(hex2));\n}\n\n/**\n* @func hsl2ciede\n* @desc Return the CIEDE2000 difference between 2 HSL colors\n* @param {ArrayHSL} hsl1\n* @param {ArrayHSL} hsl2\n* @return {NumberCIEDE}\n* @example\n* hsl2ciede([0, 0, 100], [0, 0, 0]) // => 100\n*/\n\nfunction hsl2ciede(hsl1, hsl2) {\n\treturn lab2ciede(hsl2lab(...hsl1), hsl2lab(...hsl2));\n}\n\n/**\n* @func hsv2ciede\n* @desc Return the CIEDE2000 difference between 2 HSV colors\n* @param {ArrayHSV} hsl1\n* @param {ArrayHSV} hsl2\n* @return {NumberCIEDE}.\n* @example\n* hsv2ciede([0, 0, 40], [0, 0, 0]) // => 100\n*/\n\nfunction hsv2ciede(hsv1, hsv2) {\n\treturn lab2ciede(hsv2lab(...hsv1), hsv2lab(...hsv2));\n}\n\n/**\n* @func hwb2ciede\n* @desc Return the CIEDE2000 difference between 2 HWB colors\n* @param {ArrayHWB} hwb1\n* @param {ArrayHWB} hwb2\n* @return {NumberCIEDE}.\n* @example\n* hwb2ciede([0, 0, 40], [0, 0, 0]) // => 100\n*/\n\nfunction hwb2ciede(hwb1, hwb2) {\n\treturn lab2ciede(hwb2lab(...hwb1), hwb2lab(...hwb2));\n}\n\n/**\n* @func keyword2ciede\n* @desc Return the CIEDE2000 difference between 2 keyword colors\n* @param {StringKeyword} keyword1\n* @param {StringKeyword} keyword2\n* @return {NumberCIEDE}.\n* @example\n* keyword2ciede('white', 'black') // => 100\n*/\n\nfunction keyword2ciede(keyword1, keyword2) {\n\treturn lab2ciede(keyword2lab(keyword1), keyword2lab(keyword2));\n}\n\n/**\n* @func lch2ciede\n* @desc Return the CIEDE2000 difference between 2 LCH colors\n* @param {ArrayLCH} lch1\n* @param {ArrayLCH} lch2\n* @return {NumberCIEDE}.\n* @example\n* lch2ciede([100, 0.03, -82.2], [0, 0, 0]) // => 100\n*/\n\nfunction lch2ciede(lch1, lch2) {\n\treturn lab2ciede(lch2lab(...lch1), lch2lab(...lch2));\n}\n\n/**\n* @func rgb2ciede\n* @desc Return the CIEDE2000 difference between 2 RGB colors\n* @param {ArrayRGB} rgb1\n* @param {ArrayRGB} rgb2\n* @return {NumberCIEDE}.\n* @example\n* rgb2ciede([100, 100, 100], [0, 0, 0]) // => 100\n*/\n\nfunction rgb2ciede(rgb1, rgb2) {\n\treturn lab2ciede(rgb2lab(...rgb1), rgb2lab(...rgb2));\n}\n\n/**\n* @func xyz2ciede\n* @desc Return the CIEDE2000 difference between 2 XYZ colors\n* @param {ArrayXYZ} xyz1\n* @param {ArrayXYZ} xyz2\n* @return {NumberCIEDE}.\n* @example\n* xyz2ciede([95.05, 100, 108.88], [0, 0, 0]) // => 100\n*/\n\nfunction xyz2ciede(xyz1, xyz2) {\n\treturn lab2ciede(xyz2lab(...xyz1), xyz2lab(...xyz2));\n}\n\n/* Contrast conversions\n/* ========================================================================== */\n\n/**\n* @func hex2contrast\n* @desc Return the contrast ratio of 2 HEX colors\n* @param {StringHex} hex1\n* @param {StringHex} hex2\n* @return {NumberContrast}\n* @example\n* rgb2contrast(\"#fff\", '#000') // => 21\n*/\n\nfunction hex2contrast(hex1, hex2) {\n\treturn rgb2contrast(hex2rgb(hex1), hex2rgb(hex2));\n}\n\n/**\n* @func hsl2contrast\n* @desc Return the contrast ratio of 2 HSL colors\n* @param {ArrayHSL} hsl1\n* @param {ArrayHSL} hsl2\n* @return {NumberContrast}\n* @example\n* hsl2contrast([0, 0, 100], [0, 0, 0]) // => 21\n*/\n\nfunction hsl2contrast(hsl1, hsl2) {\n\treturn rgb2contrast(hsl2rgb(...hsl1), hsl2rgb(...hsl2));\n}\n\n/**\n* @func hsv2contrast\n* @desc Return the contrast ratio of 2 HSV colors\n* @param {ArrayHSV} hsv1\n* @param {ArrayHSV} hsv2\n* @return {NumberContrast}\n* @example\n* hsv2contrast([0, 0, 100], [0, 0, 0]) // => 21\n*/\n\nfunction hsv2contrast(hsv1, hsv2) {\n\treturn rgb2contrast(hsv2rgb(...hsv1), hsv2rgb(...hsv2));\n}\n\n/**\n* @func hwb2contrast\n* @desc Return the contrast ratio of 2 HWB colors\n* @param {ArrayHWB} hwb1\n* @param {ArrayHWB} hwb2\n* @return {NumberContrast}\n* @example\n* hwb2contrast([0, 100, 0], [0, 0, 100]) // => 21\n*/\n\nfunction hwb2contrast(hwb1, hwb2) {\n\treturn rgb2contrast(hwb2rgb(...hwb1), hwb2rgb(...hwb2));\n}\n\n/**\n* @func keyword2contrast\n* @desc Return the contrast ratio of 2 keyword colors\n* @param {StringKeyword} keyword1\n* @param {StringKeyword} keyword2\n* @return {NumberContrast}\n* @example\n* keyword2contrast('white', 'black') // => 21\n*/\n\nfunction keyword2contrast(keyword1, keyword2) {\n\treturn rgb2contrast(keyword2rgb(keyword1), keyword2rgb(keyword2));\n}\n\n/**\n* @func lab2contrast\n* @desc Return the contrast ratio of 2 LAB colors\n* @param {ArrayLAB} lab1\n* @param {ArrayLAB} lab2\n* @return {NumberContrast}\n* @example\n* lab2contrast([100, 0.003, -0.025], [0, 0, 0]) // => 21\n*/\n\nfunction lab2contrast(lab1, lab2) {\n\treturn rgb2contrast(lab2rgb(...lab1), lab2rgb(...lab2));\n}\n\n/**\n* @func lch2contrast\n* @desc Return the contrast ratio of 2 LCH colors\n* @param {ArrayLCH} lch1\n* @param {ArrayLCH} lch2\n* @return {NumberContrast}\n* @example\n* lch2contrast([100, 0.025, -82.2], [0, 0, 0]) // => 21\n*/\n\nfunction lch2contrast(lch1, lch2) {\n\treturn rgb2contrast(lch2rgb(...lch1), lch2rgb(...lch2));\n}\n\n/**\n* @func xyz2contrast\n* @desc Return the contrast ratio of 2 XYZ colors\n* @param {ArrayXYZ} xyz1\n* @param {ArrayXYZ} xyz2\n* @return {NumberContrast}\n* @example\n* xyz2contrast([95.05, 100, 108.88], [0, 0, 0]) // => 21\n*/\n\nfunction xyz2contrast(xyz1, xyz2) {\n\treturn rgb2contrast(xyz2rgb(...xyz1), xyz2rgb(...xyz2));\n}\n\n/* Keyword Conversions\n/* ========================================================================== */\n\n/**\n* @func keyword2hex\n* @desc Return an RGB color from a keyword color\n* @param {StringKeyword} keyword - CSS Color Keyword\n* @return {String}\n* @example\n* keyword2hex('white') // => \"#ffffff\"\n*/\n\nfunction keyword2hex(keyword) {\n\treturn rgb2hex(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2hsl\n* @desc Return an HSL color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayHSL}\n* @example\n* keyword2hsl('white') // => [0, 0, 100]\n*/\n\nfunction keyword2hsl(keyword) {\n\treturn rgb2hsl(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2hsv\n* @desc Return an HSV color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayHSV}\n* @example\n* keyword2hsv('white') // => [0, 0, 100]\n*/\n\nfunction keyword2hsv(keyword) {\n\treturn rgb2hsv(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2hwb\n* @desc Return an HWB color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayHWB}\n* @example\n* keyword2hwb('red') // => [0, 0, 0]\n*/\n\nfunction keyword2hwb(keyword) {\n\treturn rgb2hwb(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2lab\n* @desc Return a CIE LAB color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayLAB}\n* @example\n* keyword2lab('red') // => [54.29, 80.82, 69.88]\n*/\n\nfunction keyword2lab(keyword) {\n\treturn rgb2lab(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2lch\n* @desc Return a CIE LCH color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayLCH}\n* @example\n* keyword2lch('red') // => [54.29, 106.84, 40.85]\n*/\n\nfunction keyword2lch(keyword) {\n\treturn rgb2lch(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2lch\n* @desc Return an XYZ color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayXYZ}\n* @example\n* keyword2lch('red') // => [41.25, 21.27, 1.93]\n*/\n\nfunction keyword2xyz(keyword) {\n\treturn rgb2xyz(...keyword2rgb(keyword));\n}\n\n/* All Conversions\n/* ========================================================================== */\n\nexport {\n\thex2ciede,\n\thex2contrast,\n\thex2hsl,\n\thex2hsv,\n\thex2hwb,\n\thex2lab,\n\thex2lch,\n\thex2rgb,\n\thex2xyz,\n\n\thsl2ciede,\n\thsl2contrast,\n\thsl2hex,\n\thsl2hsv,\n\thsl2hwb,\n\thsl2lab,\n\thsl2lch,\n\thsl2rgb,\n\thsl2xyz,\n\n\thsv2ciede,\n\thsv2contrast,\n\thsv2hex,\n\thsv2hsl,\n\thsv2hwb,\n\thsv2lab,\n\thsv2lch,\n\thsv2rgb,\n\thsv2xyz,\n\n\thwb2ciede,\n\thwb2contrast,\n\thwb2hex,\n\thwb2hsl,\n\thwb2hsv,\n\thwb2lab,\n\thwb2lch,\n\thwb2rgb,\n\thwb2xyz,\n\n\tkeyword2ciede,\n\tkeyword2contrast,\n\tkeyword2hex,\n\tkeyword2hsl,\n\tkeyword2hsv,\n\tkeyword2hwb,\n\tkeyword2lab,\n\tkeyword2lch,\n\tkeyword2rgb,\n\tkeyword2xyz,\n\n\tlab2ciede,\n\tlab2contrast,\n\tlab2hex,\n\tlab2hsl,\n\tlab2hsv,\n\tlab2hwb,\n\tlab2lch,\n\tlab2rgb,\n\tlab2xyz,\n\n\tlch2ciede,\n\tlch2contrast,\n\tlch2hex,\n\tlch2hsl,\n\tlch2hsv,\n\tlch2hwb,\n\tlch2lab,\n\tlch2rgb,\n\tlch2xyz,\n\n\trgb2ciede,\n\trgb2contrast,\n\trgb2hex,\n\trgb2hsl,\n\trgb2hsv,\n\trgb2hwb,\n\trgb2lab,\n\trgb2lch,\n\trgb2xyz,\n\n\txyz2ciede,\n\txyz2contrast,\n\txyz2hex,\n\txyz2hsl,\n\txyz2hsv,\n\txyz2hwb,\n\txyz2lab,\n\txyz2lch,\n\txyz2rgb\n};\n\n/**\n* @typedef {Array} ArrayRGB\n* An array of red, green, and blue channels.\n* @property {Number} 0 - Red (0 - 100)\n* @property {Number} 1 - Green (0 - 100)\n* @property {Number} 2 - Blue (0 - 100)\n*\n*/\n/**\n* @typedef {Array} ArrayRGBA\n* An array of red, green, blue, and alpha channels.\n* @property {Number} 0 - Red (0 - 100)\n* @property {Number} 1 - Green (0 - 100)\n* @property {Number} 2 - Blue (0 - 100)\n* @property {Number} 3 - Alpha (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayHSL\n* An array of hue, saturation, and lightness channels.\n* @property {Number} 0 - Hue Angle (0 - 360)\n* @property {Number} 1 - Saturation (0 - 100)\n* @property {Number} 2 - Lightness (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayHSV\n* An array of hue, saturation, and value channels.\n* @property {Number} 0 - Hue Angle (0 - 360)\n* @property {Number} 1 - Saturation (0 - 100)\n* @property {Number} 2 - Value (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayLAB\n* An array of CIELAB lightness, red/green, and yellow/blue.\n* @property {Number} 0 - CIE Lightness\n* @property {Number} 1 - Red/Green Coordinate\n* @property {Number} 2 - Yellow/Blue Coordinate\n*/\n/**\n* @typedef {Array} ArrayLCH\n* An array of CIELAB lightness, chroma, and hue.\n* @property {Number} 0 - CIE Lightness\n* @property {Number} 1 - CIE Chroma\n* @property {Number} 2 - CIE Hue\n*/\n/**\n* @typedef {Array} ArrayHWB\n* An array of hue, whiteness, and blackness channels.\n* @property {Number} 0 - Hue Angle (0 - 360)\n* @property {Number} 1 - Whiteness (0 - 100)\n* @property {Number} 2 - Blackness (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayXYZ\n* An array of CIELAB chromacity.\n* @property {Number} 0 - X Chromacity\n* @property {Number} 1 - Y Chromacity\n* @property {Number} 2 - Z Chromacity\n* @example\n* [95.05, 100, 108.88]\n* @example\n* [0, 0, 0]\n*/\n/**\n* @typedef {String} StringHex\n* A string representing the 3, 4, 6, or 8 digit hexidecimal color.\n* @example\n* \"#f00\"\n* \"#f00f\"\n* @example\n* \"#ff0000\"\n* \"#ff0000ff\"\n*/\n/**\n* @typedef {String} StringKeyword\n* A case-insensitive string identifier that represents a specific color.\n* @example\n* \"#f00\"\n* \"#f00f\"\n* @example\n* \"#ff0000\"\n* \"#ff0000ff\"\n*/\n/**\n* @typedef {Number} NumberContrast\n* A contrast ratio of the colors (0 - 21)\n* @example\n* 0\n* @example\n* 21\n*/\n/**\n* @typedef {Number} NumberCIEDE\n* A CIEDE2000 difference between 2 colors (0 - 100)\n* @example\n* 0\n* @example\n* 100\n*/\n"],"names":["rgb2hue","rgbR","rgbG","rgbB","fallbackhue","value","rgb2value","delta","rgb2whiteness","segment","hue2rgb","t1","t2","hue","rhue","max","min","matrix","params","mats","map","mat","reduce","acc","index","precision","atan2d","y","x","rad2deg","atan2","cosd","cos","deg2rad","PI","sind","sin","abs","Math","cbrt","exp","floor","pow","sqrt","epsilon","kappa","rgb2hsl","hslH","hslV","hslW","hslD","hslL","hsl2rgb","hslS","_ref","rgb2hwb","hwb2rgb","hwbH","hwbW","hwbB","_hsl2rgb$map2","_slicedToArray","v","rgb2hsv","hsvV","hsvW","hsv2rgb","hsvH","hsvS","rgbI","rgbF","rgbM","rgbN","rgbT","_ref2","rgb2xyz","_map2","_matrix2","xyz2rgb","xyzX","xyzY","xyzZ","_matrix4","_map4","hsl2hsv","hsv1","hsv2hsl","hwb2hsv","hsv2hwb","lab2xyz","labL","labA","labB","f2","f1","f3","xyz2lab","lab2lch","lch2lab","lchL","lchC","lchH","rgb2contrast","rgb1","rgb2","relativeLuminance1","relativeLuminance2","l1","l2","luminance2contrast","rgb2luminance","adjustChannel","coefficientR","coefficientG","coefficientB","lowc","adjustGamma","hex2rgb","hex","match","hexColorMatch","r","g","b","a","rr","gg","bb","aa","undefined","parseInt","c","rgb2hex","round","toString","slice","keyword2rgb","keyword","rgb255","keywords","String","toLowerCase","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","transparent","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","lab2ciede","L1","a1","b1","L2","a2","b2","c1","c2","deltaLPrime","lBar","cBarPow7","cCoeff","a1Prime","a2Prime","c1Prime","c2Prime","cBarPrime","deltaCPrime","h1Prime","h2Prime","deltaSmallHPrime","deltaBigHPrime","hBarPrime","T","slCoeff","sl","sc","sh","RtCoeff","Rt","term1","kl","term2","kc","term3","kh","rgb2lab","_rgb2xyz2","_xyz2lab2","lab2rgb","_lab2xyz2","_xyz2rgb2","rgb2lch","_rgb2xyz4","_xyz2lab4","_lab2lch2","lch2rgb","_lch2lab2","_lab2xyz4","_xyz2rgb4","hsl2lab","_hsl2rgb2","_rgb2xyz6","_xyz2lab6","hwb2lab","_hwb2rgb2","_rgb2xyz10","_xyz2lab0","hsv2lab","_hsv2rgb2","_rgb2xyz16","_xyz2lab12","hex2lab","keyword2lab","hex1","hex2","hsl1","hsl2","_hsl2hsv2","_hsv2hwb2","_hsl2rgb4","_rgb2xyz8","_xyz2lab8","_lab2lch4","_hsl2rgb6","_rgb2xyz0","hsv2","_hsv2rgb4","_rgb2xyz18","_xyz2lab14","_lab2lch8","_hsv2rgb6","_rgb2xyz20","hwb1","hwb2","_hwb2hsv2","_hsv2hsl2","_hwb2rgb4","_rgb2xyz12","_xyz2lab10","_lab2lch6","_hwb2rgb6","_rgb2xyz14","keyword1","keyword2","lab1","lab2","_lab2xyz6","_xyz2rgb6","_rgb2hsl2","_lab2xyz12","_xyz2rgb16","_rgb2hsv2","_lab2xyz0","_xyz2rgb10","_rgb2hwb2","lch1","lch2","_lch2lab4","_lab2xyz8","_xyz2rgb8","_rgb2hsl4","_lch2lab8","_lab2xyz14","_xyz2rgb18","_rgb2hsv4","_lch2lab6","_lab2xyz10","_xyz2rgb12","_rgb2hwb4","_lch2lab0","_lab2xyz16","xyz1","xyz2","_xyz2rgb0","_rgb2hsl6","_xyz2rgb20","_rgb2hsv6","_xyz2rgb14","_rgb2hwb6","_xyz2lab16","_lab2lch0"],"mappings":"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"}
package/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ function n(n,t){(null==t||t>n.length)&&(t=n.length);for(var r=0,e=Array(t);r<t;r++)e[r]=n[r];return e}function t(t,r){return function(n){if(Array.isArray(n))return n}(t)||function(n,t){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var e,o,u,i,c=[],a=!0,l=!1;try{if(u=(r=r.call(n)).next,0===t){if(Object(r)!==r)return;a=!1}else for(;!(a=(e=u.call(r)).done)&&(c.push(e.value),c.length!==t);a=!0);}catch(n){l=!0,o=n}finally{try{if(!a&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(t,r)||function(t,r){if(t){if("string"==typeof t)return n(t,r);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?n(t,r):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(n,t,r,e=0){const i=o(n,t,r),c=i-u(n,t,r);if(c){const e=i===n?(t-r)/c:i===t?(r-n)/c:(n-t)/c;return 60*(e+(i===n?e<0?6:0:i===t?2:4))}return e}function e(n,t,r){const e=r<0?r+360:r>360?r-360:r;return 6*e<360?n+(t-n)*e/60:2*e<360?t:3*e<720?n+(t-n)*(240-e)/60:n}function o(n,t,r){return k(n,t,r)}function u(n,t,r){return v(n,t,r)}function i(n,t){return t.map(t=>t.reduce((t,r,e)=>t+n[e]*c*(r*c)/c/c,0))}const c=1e8,a=(n,t)=>s(h(n,t)),l=n=>p(f(n)),f=n=>n*w/180,s=n=>180*n/w,d=n=>I(f(n)),g=Math.abs,h=Math.atan2,m=Math.cbrt,p=Math.cos,y=Math.exp,b=Math.floor,k=Math.max,v=Math.min,w=Math.PI,M=Math.pow,I=Math.sin,q=Math.sqrt,S=M(6,3)/M(29,3),A=M(29,3)/M(3,3);function j(n,t,e,i){const c=r(n,t,e,i),a=o(n,t,e),l=u(n,t,e),f=a-l,s=(a+l)/2;return[c,0===f?0:f/(100-g(2*s-100))*100,s]}function x(n,t,r){const o=r<=50?r*(t+100)/100:r+t-r*t/100,u=2*r-o,i=[e(u,o,n+120),e(u,o,n),e(u,o,n-120)];return[i[0],i[1],i[2]]}function O(n,t,e,i){return[r(n,t,e,i),u(n,t,e),100-o(n,t,e)]}function $(n,r,e,o){const u=t(x(n,100,50).map(n=>n*(100-r-e)/100+r),3);return[u[0],u[1],u[2]]}function C(n,t,e,i){const c=o(n,t,e),a=u(n,t,e);return[r(n,t,e,i),c===a?0:(c-a)/c*100,c]}function z(n,r,e){const o=b(n/60),u=n/60-o&1?n/60-o:1-n/60-o,i=e*(100-r)/100,c=e*(100-r*u)/100,a=e*(100-(100-u)*r/100)/100,l=t(5===o?[e,i,c]:4===o?[a,i,e]:3===o?[i,c,e]:2===o?[i,e,a]:1===o?[c,e,i]:[e,a,i],3);return[l[0],l[1],l[2]]}function E(n,r,e){const o=t([n,r,e].map(n=>n>4.045?100*M((n+5.5)/105.5,2.4):n/12.92),3),u=t(i([o[0],o[1],o[2]],[[.4124564,.3575761,.1804375],[.2126729,.7151522,.072175],[.0193339,.119192,.9503041]]),3);return[u[0],u[1],u[2]]}function L(n,r,e){const o=t(i([n,r,e],[[3.2404542,-1.5371385,-.4985314],[-.969266,1.8760108,.041556],[.0556434,-.2040259,1.0572252]]),3),u=t([o[0],o[1],o[2]].map(n=>n>.31308?1.055*M(n/100,1/2.4)*100-5.5:12.92*n),3);return[u[0],u[1],u[2]]}function P(n,t,r){const e=t*(r<50?r:100-r)/100;return[n,0===e?0:2*e/(r+e)*100,r+e]}function T(n,t,r){const e=(200-t)*r/100;return[n,0===e||200===e?0:t*r/100/(e<=100?e:200-e)*100,5*e/10]}function U(n,t,r){return[n,100===r?0:100-t/(100-r)*100,100-r]}function B(n,t,r){return[n,(100-t)*r/100,100-r]}function D(n,r,e){const o=(n+16)/116,u=r/500+o,c=o-e/200,a=t(i([96.42*(M(u,3)>S?M(u,3):(116*u-16)/A),100*(n>A*S?M((n+16)/116,3):n/A),82.49*(M(c,3)>S?M(c,3):(116*c-16)/A)],[[.9555766,-.0230393,.0631636],[-.0282895,1.0099416,.0210077],[.0122982,-.020483,1.3299098]]),3);return[a[0],a[1],a[2]]}function F(n,r,e){const o=t(i([n,r,e],[[1.0478112,.0228866,-.050127],[.0295424,.9904844,-.0170491],[-.0092345,.0150436,.7521316]]),3),u=t([o[0]/96.42,o[1]/100,o[2]/82.49].map(n=>n>S?m(n):(A*n+16)/116),3),c=u[0],a=u[1];return[116*a-16,500*(c-a),200*(a-u[2])]}function G(n,t,r){const e=[q(M(t,2)+M(r,2)),s(h(r,t))];return[n,e[0],e[1]]}function H(n,t,r){return[n,t*l(r),t*d(r)]}function J(n,t){return function(n,t){const r=k(n,t),e=v(n,t);return(r*c+.05*c)/(e*c+.05*c)}(K(...n),K(...t))}function K(n,t,r){return(N(n)*V+N(t)*W+N(r)*X)/c}const N=n=>n<=3.928?n/R:Q(n),Q=n=>M((n+5.5)/105.5,2.4),R=1292,V=.2126*c,W=.7152*c,X=.0722*c;function Y(n){const r=t(n.match(_)||[],9),e=r[1],o=r[2],u=r[3],i=r[4],c=r[5],a=r[6],l=r[7],f=r[8];if(void 0!==c||void 0!==e){return[void 0!==c?parseInt(c,16):parseInt(e+e,16),void 0!==a?parseInt(a,16):parseInt(o+o,16),void 0!==l?parseInt(l,16):parseInt(u+u,16),void 0!==f?parseInt(f,16):void 0!==i?parseInt(i+i,16):255].map(n=>100*n/255)}}function Z(n,t,r){return`#${((1<<24)+(Math.round(255*n/100)<<16)+(Math.round(255*t/100)<<8)+Math.round(255*r/100)).toString(16).slice(1)}`}const _=/^#?(?:([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?)$/i;function nn(n){const t=tn[String(n).toLowerCase()];return t?t.map(n=>100*n/255):null}const tn={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],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],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],transparent:[0,0,0],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function rn([n,t,r],[e,o,u]){const i=q(M(t,2)+M(r,2)),f=q(M(o,2)+M(u,2)),s=e-n,h=(n+e)/2,m=M((i+f)/2,7),p=q(m/(m+M(25,7))),b=t+t/2*(1-p),k=o+o/2*(1-p),v=q(b*b+r*r),w=q(k*k+u*u),I=(v+w)/2,S=w-v,A=0===b&&0===r?0:a(r,b)%360,j=0===k&&0===u?0:a(u,k)%360;let x,O,$;0===v||0===w?(x=0,O=0,$=A+j):(x=g(A-j)<=180?j-A:j<=A?j-A+360:j-A-360,O=2*q(v*w)*d(x/2),$=g(A-j)<=180?(A+j)/2:A+j<360?(A+j+360)/2:(A+j-360)/2);const C=1-.17*c*l($-30)+.24*c*l(2*$)+.32*c*l(3*$+6)-.2*c*l(4*$-63)/c/c,z=(h-50)*(h-50),E=1+.015*c*z/q(20+z)/c,L=1+.045*c*I/c,P=1+.015*c*I*C/c,T=60*y(-($-275)/25*(($-275)/25)),U=-2*p*d(T),B=s/(en*E),D=S/(on*L),F=O/(un*P);return q(B*B+D*D+F*F+U*D*F)}const en=1,on=1,un=1;function cn(n,r,e){const o=t(E(n,r,e),3),u=t(F(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function an(n,r,e){const o=t(D(n,r,e),3),u=t(L(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function ln(n,r,e){const o=t(E(n,r,e),3),u=t(F(o[0],o[1],o[2]),3),i=t(G(u[0],u[1],u[2]),3);return[i[0],i[1],i[2]]}function fn(n,r,e){const o=t(H(n,r,e),3),u=t(D(o[0],o[1],o[2]),3),i=t(L(u[0],u[1],u[2]),3);return[i[0],i[1],i[2]]}function sn(n,r,e){const o=t(U(n,r,e),3),u=t(T(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function dn(n,r,e){const o=t(P(n,r,e),3),u=t(B(n,o[1],o[2]),3);return[n,u[1],u[2]]}function gn(n,r,e){const o=t(x(n,r,e),3),u=t(E(o[0],o[1],o[2]),3),i=t(F(u[0],u[1],u[2]),3);return[i[0],i[1],i[2]]}function hn(n,r,e,o){const u=t(D(n,r,e),3),i=t(L(u[0],u[1],u[2]),3),c=t(j(i[0],i[1],i[2],o),3);return[c[0],c[1],c[2]]}function mn(n,r,e){const o=t(x(n,r,e),3),u=t(E(o[0],o[1],o[2]),3),i=t(F(u[0],u[1],u[2]),3),c=t(G(i[0],i[1],i[2]),3);return[c[0],c[1],c[2]]}function pn(n,r,e,o){const u=t(H(n,r,e),3),i=t(D(u[0],u[1],u[2]),3),c=t(L(i[0],i[1],i[2]),3),a=t(j(c[0],c[1],c[2],o),3);return[a[0],a[1],a[2]]}function yn(n,r,e){const o=t(x(n,r,e),3),u=t(E(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function bn(n,r,e,o){const u=t(L(n,r,e),3),i=t(j(u[0],u[1],u[2],o),3);return[i[0],i[1],i[2]]}function kn(n,r,e){const o=t($(n,r,e),3),u=t(E(o[0],o[1],o[2]),3),i=t(F(u[0],u[1],u[2]),3);return[i[0],i[1],i[2]]}function vn(n,r,e,o){const u=t(D(n,r,e),3),i=t(L(u[0],u[1],u[2]),3),c=t(O(i[0],i[1],i[2],o),3);return[c[0],c[1],c[2]]}function wn(n,r,e){const o=t($(n,r,e),3),u=t(E(o[0],o[1],o[2]),3),i=t(F(u[0],u[1],u[2]),3),c=t(G(i[0],i[1],i[2]),3);return[c[0],c[1],c[2]]}function Mn(n,r,e,o){const u=t(H(n,r,e),3),i=t(D(u[0],u[1],u[2]),3),c=t(L(i[0],i[1],i[2]),3),a=t(O(c[0],c[1],c[2],o),3);return[a[0],a[1],a[2]]}function In(n,r,e){const o=t($(n,r,e),3),u=t(E(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function qn(n,r,e,o){const u=t(L(n,r,e),3),i=t(O(u[0],u[1],u[2],o),3);return[i[0],i[1],i[2]]}function Sn(n,r,e){const o=t(z(n,r,e),3),u=t(E(o[0],o[1],o[2]),3),i=t(F(u[0],u[1],u[2]),3);return[i[0],i[1],i[2]]}function An(n,r,e,o){const u=t(D(n,r,e),3),i=t(L(u[0],u[1],u[2]),3),c=t(C(i[0],i[1],i[2],o),3);return[c[0],c[1],c[2]]}function jn(n,r,e){const o=t(z(n,r,e),3),u=t(E(o[0],o[1],o[2]),3),i=t(F(u[0],u[1],u[2]),3),c=t(G(i[0],i[1],i[2]),3);return[c[0],c[1],c[2]]}function xn(n,r,e,o){const u=t(H(n,r,e),3),i=t(D(u[0],u[1],u[2]),3),c=t(L(i[0],i[1],i[2]),3),a=t(C(c[0],c[1],c[2],o),3);return[a[0],a[1],a[2]]}function On(n,r,e){const o=t(z(n,r,e),3),u=t(E(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function $n(n,r,e,o){const u=t(L(n,r,e),3),i=t(C(u[0],u[1],u[2],o),3);return[i[0],i[1],i[2]]}function Cn(n,r,e){const o=t(F(n,r,e),3),u=t(G(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function zn(n,r,e){const o=t(H(n,r,e),3),u=t(D(o[0],o[1],o[2]),3);return[u[0],u[1],u[2]]}function En(n){return j(...Y(n))}function Ln(n){return C(...Y(n))}function Pn(n){return O(...Y(n))}function Tn(n){return cn(...Y(n))}function Un(n){return ln(...Y(n))}function Bn(n){return E(...Y(n))}function Dn(n,t,r){return Z(...x(n,t,r))}function Fn(n,t,r){return Z(...x(n,t,r))}function Gn(n,t,r){return Z(...$(n,t,r))}function Hn(n,t,r){return Z(...an(n,t,r))}function Jn(n,t,r){return Z(...fn(n,t,r))}function Kn(n,t,r){return Z(...L(n,t,r))}function Nn(n,t){return rn(Tn(n),Tn(t))}function Qn(n,t){return rn(gn(...n),gn(...t))}function Rn(n,t){return rn(Sn(...n),Sn(...t))}function Vn(n,t){return rn(kn(...n),kn(...t))}function Wn(n,t){return rn(st(n),st(t))}function Xn(n,t){return rn(H(...n),H(...t))}function Yn(n,t){return rn(cn(...n),cn(...t))}function Zn(n,t){return rn(F(...n),F(...t))}function _n(n,t){return J(Y(n),Y(t))}function nt(n,t){return J(x(...n),x(...t))}function tt(n,t){return J(z(...n),z(...t))}function rt(n,t){return J($(...n),$(...t))}function et(n,t){return J(nn(n),nn(t))}function ot(n,t){return J(an(...n),an(...t))}function ut(n,t){return J(fn(...n),fn(...t))}function it(n,t){return J(L(...n),L(...t))}function ct(n){return Z(...nn(n))}function at(n){return j(...nn(n))}function lt(n){return C(...nn(n))}function ft(n){return O(...nn(n))}function st(n){return cn(...nn(n))}function dt(n){return ln(...nn(n))}function gt(n){return E(...nn(n))}export{Nn as hex2ciede,_n as hex2contrast,En as hex2hsl,Ln as hex2hsv,Pn as hex2hwb,Tn as hex2lab,Un as hex2lch,Y as hex2rgb,Bn as hex2xyz,Qn as hsl2ciede,nt as hsl2contrast,Dn as hsl2hex,P as hsl2hsv,dn as hsl2hwb,gn as hsl2lab,mn as hsl2lch,x as hsl2rgb,yn as hsl2xyz,Rn as hsv2ciede,tt as hsv2contrast,Fn as hsv2hex,T as hsv2hsl,B as hsv2hwb,Sn as hsv2lab,jn as hsv2lch,z as hsv2rgb,On as hsv2xyz,Vn as hwb2ciede,rt as hwb2contrast,Gn as hwb2hex,sn as hwb2hsl,U as hwb2hsv,kn as hwb2lab,wn as hwb2lch,$ as hwb2rgb,In as hwb2xyz,Wn as keyword2ciede,et as keyword2contrast,ct as keyword2hex,at as keyword2hsl,lt as keyword2hsv,ft as keyword2hwb,st as keyword2lab,dt as keyword2lch,nn as keyword2rgb,gt as keyword2xyz,rn as lab2ciede,ot as lab2contrast,Hn as lab2hex,hn as lab2hsl,An as lab2hsv,vn as lab2hwb,G as lab2lch,an as lab2rgb,D as lab2xyz,Xn as lch2ciede,ut as lch2contrast,Jn as lch2hex,pn as lch2hsl,xn as lch2hsv,Mn as lch2hwb,H as lch2lab,fn as lch2rgb,zn as lch2xyz,Yn as rgb2ciede,J as rgb2contrast,Z as rgb2hex,j as rgb2hsl,C as rgb2hsv,O as rgb2hwb,cn as rgb2lab,ln as rgb2lch,E as rgb2xyz,Zn as xyz2ciede,it as xyz2contrast,Kn as xyz2hex,bn as xyz2hsl,$n as xyz2hsv,qn as xyz2hwb,F as xyz2lab,Cn as xyz2lch,L as xyz2rgb};
2
+ //# sourceMappingURL=index.mjs.map
package/index.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["src/util.js","src/rgb-hsl.js","src/rgb-hwb.js","src/rgb-hsv.js","src/rgb-xyz.js","src/hsl-hsv.js","src/hwb-hsv.js","src/lab-xyz.js","src/lab-lch.js","src/rgb-contrast.js","src/hex-rgb.js","src/keyword-rgb.js","src/lab-ciede.js","src/index.js"],"sourcesContent":["/**\n* @private\n* @func rgb2hue\n* @desc Return a hue angle from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Red (0 - 100)\n* @param {Number} b - Red (0 - 100)\n* @param {Number} f - Hue Fallback (0 - 360)\n* @return {Number} Hue Angle (0 - 360)\n* @example\n* rgb2hue(100, 0, 0)\n* @example\n* rgb2hue(100, 0, 0, 0)\n*/\n\nexport function rgb2hue(rgbR, rgbG, rgbB, fallbackhue = 0) {\n\tconst value = rgb2value(rgbR, rgbG, rgbB);\n\tconst whiteness = rgb2whiteness(rgbR, rgbG, rgbB);\n\tconst delta = value - whiteness;\n\n\tif (delta) {\n\t\t// calculate segment\n\t\tconst segment = value === rgbR\n\t\t\t? (rgbG - rgbB) / delta\n\t\t: value === rgbG\n\t\t\t? (rgbB - rgbR) / delta\n\t\t: (rgbR - rgbG) / delta;\n\n\t\t// calculate shift\n\t\tconst shift = value === rgbR\n\t\t\t? segment < 0\n\t\t\t\t? 360 / 60\n\t\t\t\t: 0 / 60\n\t\t: value === rgbG\n\t\t\t? 120 / 60\n\t\t: 240 / 60;\n\n\t\t// calculate hue\n\t\tconst hue = (segment + shift) * 60;\n\n\t\treturn hue;\n\t} else {\n\t\t// otherwise return the Hue Fallback\n\t\treturn fallbackhue;\n\t}\n}\n\n/**\n* @private\n* @func hue2rgb\n* @desc Return an RGB channel from a hue angle\n* @param {Number} t1\n* @param {Number} t2\n* @param {Number} h - Hue Angle (0 - 360)\n* @return {Number} RGB channel (0 - 100)\n* @example\n* hue2rgb(0, 0, 0)\n*/\n\nexport function hue2rgb(t1, t2, hue) {\n\t// calculate the ranged hue\n\tconst rhue = hue < 0 ? hue + 360 : hue > 360 ? hue - 360 : hue;\n\n\t// calculate the rgb value\n\tconst rgb = rhue * 6 < 360\n\t\t? t1 + (t2 - t1) * rhue / 60\n\t: rhue * 2 < 360\n\t\t? t2\n\t: rhue * 3 < 720\n\t\t? t1 + (t2 - t1) * (240 - rhue) / 60\n\t: t1;\n\n\treturn rgb;\n}\n\n/**\n* @private\n* @func luminance2contrast\n* @desc Return the contrast ratio between 2 luminance.\n* @param {Number} l1 - Relative luminance of one color\n* @param {Number} l2 - Relative luminance of another color\n* @return {Number} Contrast ratio between the 2 luminance\n* @example\n* luminance2contrast(0.2126, 0) // => 5.252\n* @link https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio\n*/\n\nexport function luminance2contrast(relativeLuminance1, relativeLuminance2) {\n\t// l1 is the relative luminance of the lighter of the colors\n\tconst l1 = max(relativeLuminance1, relativeLuminance2);\n\n\t// l1 is the relative luminance of the darker of the colors\n\tconst l2 = min(relativeLuminance1, relativeLuminance2);\n\n\treturn (l1 * precision + 0.05 * precision) / (l2 * precision + 0.05 * precision);\n}\n\n\n/* RGB tooling\n/* ========================================================================== */\n\nexport function rgb2value(rgbR, rgbG, rgbB) {\n\tconst value = max(rgbR, rgbG, rgbB);\n\n\treturn value;\n}\n\nexport function rgb2whiteness(rgbR, rgbG, rgbB) {\n\tconst whiteness = min(rgbR, rgbG, rgbB);\n\n\treturn whiteness;\n}\n\n/* Math matrix\n/* ========================================================================== */\n\nexport function matrix(params, mats) {\n\treturn mats.map(\n\t\tmat => mat.reduce(\n\t\t\t// (acc, value, index) => acc + params[index] * value,\n\t\t\t(acc, value, index) => acc + params[index] * precision * (value * precision) / precision / precision,\n\t\t\t0\n\t\t)\n\t);\n}\n\n/* Precision\n/* ========================================================================== */\n\nexport const precision = 100000000;\n\n/* D50 reference white\n/* ========================================================================== */\n\nexport const [ wd50X, wd50Y, wd50Z ] = [ 96.42, 100, 82.49 ];\n\n/* Math Expressions\n/* ========================================================================== */\n\nexport const atan2d = (y, x) => rad2deg(atan2(y, x)); // arc-tangent in degrees\nexport const cosd = x => cos(deg2rad(x)); // cosine of the specified angle in degrees\nexport const deg2rad = x => x * PI / 180; // degree to radian\nexport const rad2deg = x => x * 180 / PI; // radian to degree\nexport const sind = x => sin(deg2rad(x)); // sine in degrees\n\n/* Math Constants\n/* ========================================================================== */\n\nexport const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cbrt = Math.cbrt;\nexport const cos = Math.cos;\nexport const exp = Math.exp;\nexport const floor = Math.floor;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const PI = Math.PI;\nexport const pow = Math.pow;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = pow(6, 3) / pow(29, 3);\nexport const kappa = pow(29, 3) / pow(3, 3);\n","import { abs, rgb2hue, rgb2value, rgb2whiteness, hue2rgb } from './util';\n\n/**\n* @func rgb2hsl\n* @desc Return a HSL color from an RGB color\n* @param {Number} r - red (0 - 100)\n* @param {Number} g - green (0 - 100)\n* @param {Number} b - blue (0 - 100)\n* @param {Number=} f - Hue Fallback (0 - 360)\n* @return {ArrayHSL}\n* @example\n* rgb2hsl(0, 100, 100) // => [0, 100, 50]\n* @link https://www.w3.org/TR/css-color-3/#hsl-color\n* @link https://www.w3.org/TR/css-color-4/#hsl-to-rgb\n* @link https://www.rapidtables.com/convert/color/rgb-to-hsl.html\n* @link https://www.rapidtables.com/convert/color/hsl-to-rgb.html\n*/\n\nexport function rgb2hsl(rgbR, rgbG, rgbB, fallbackhue) {\n\tconst hslH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);\n\tconst hslV = rgb2value(rgbR, rgbG, rgbB);\n\tconst hslW = rgb2whiteness(rgbR, rgbG, rgbB);\n\n\t// calculate value/whiteness delta\n\tconst hslD = hslV - hslW;\n\n\t// calculate lightness\n\tconst hslL = (hslV + hslW) / 2;\n\n\t// calculate saturation\n\tconst hslS = hslD === 0 ? 0 : hslD / (100 - abs(2 * hslL - 100)) * 100;\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/**\n* @func hsl2rgb\n* @desc Return an RGB color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayRGB}\n* @example\n* hsl2rgb(0, 100, 50) // => [0, 100, 100]\n* @link https://www.w3.org/TR/css-color-3/#hsl-color\n* @link https://www.w3.org/TR/css-color-4/#hsl-to-rgb\n* @link https://www.rapidtables.com/convert/color/rgb-to-hsl.html\n* @link https://www.rapidtables.com/convert/color/hsl-to-rgb.html\n*/\n\nexport function hsl2rgb(hslH, hslS, hslL) {\n\t// calcuate t2\n\tconst t2 = hslL <= 50 ? hslL * (hslS + 100) / 100 : hslL + hslS - hslL * hslS / 100;\n\n\t// calcuate t1\n\tconst t1 = hslL * 2 - t2;\n\n\t// calculate rgb\n\tconst [ rgbR, rgbG, rgbB ] = [\n\t\thue2rgb(t1, t2, hslH + 120),\n\t\thue2rgb(t1, t2, hslH),\n\t\thue2rgb(t1, t2, hslH - 120)\n\t];\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","import { rgb2hue, rgb2whiteness, rgb2value } from './util';\nimport { hsl2rgb } from './rgb-hsl';\n\n/**\n* @func rgb2hwb\n* @desc Return an HWB color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @param {Number} f - Hue Fallback (0 - 360)\n* @return {ArrayHWB}\n* @example\n* rgb2hwb(100, 0, 0) // => [0, 0, 0]\n* @link https://www.w3.org/TR/css-color-4/#hwb-to-rgb\n* @link http://alvyray.com/Papers/CG/hwb2rgb.htm\n*/\n\nexport function rgb2hwb(rgbR, rgbG, rgbB, fallbackhue) {\n\tconst hwbH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);\n\tconst hwbW = rgb2whiteness(rgbR, rgbG, rgbB);\n\tconst hwbV = rgb2value(rgbR, rgbG, rgbB);\n\tconst hwbB = 100 - hwbV;\n\n\treturn [hwbH, hwbW, hwbB];\n}\n\n/**\n* @func hwb2rgb\n* @desc Return an RGB color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayRGB}\n* @example\n* hwb2rgb(0, 0, 0) // => [100, 0, 0]\n* @link https://www.w3.org/TR/css-color-4/#hwb-to-rgb\n* @link http://alvyray.com/Papers/CG/hwb2rgb.htm\n*/\n\nexport function hwb2rgb(hwbH, hwbW, hwbB, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hwbH, 100, 50, fallbackhue).map(\n\t\tv => v * (100 - hwbW - hwbB) / 100 + hwbW\n\t);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","import { floor, rgb2value, rgb2whiteness, rgb2hue } from './util';\n\n/**\n* @func rgb2hsv\n* @desc Return an HSV color from an RGB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @param {Number=} f - Hue Fallback (0 - 360)\n* @return {ArrayHSV}\n* @example\n* rgb2hsv(100, 0, 0) // => [0, 100, 100]\n* @link http://alvyray.com/Papers/CG/hsv2rgb.htm\n*/\n\nexport function rgb2hsv(rgbR, rgbG, rgbB, fallbackhue) {\n\tconst hsvV = rgb2value(rgbR, rgbG, rgbB);\n\tconst hsvW = rgb2whiteness(rgbR, rgbG, rgbB);\n\tconst hsvH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue);\n\n\t// calculate saturation\n\tconst hsvS = hsvV === hsvW ? 0 : (hsvV - hsvW) / hsvV * 100;\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/**\n* @func hsv2rgb\n* @desc Return an RGB color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayRGB}\n* @example\n* hsv2rgb(100, 0, 0) // => [100, 0, 0]\n* @link http://alvyray.com/Papers/CG/hsv2rgb.htm\n*/\n\nexport function hsv2rgb(hsvH, hsvS, hsvV) {\n\tconst rgbI = floor(hsvH / 60);\n\n\t// calculate rgb parts\n\tconst rgbF = hsvH / 60 - rgbI & 1 ? hsvH / 60 - rgbI : 1 - hsvH / 60 - rgbI;\n\tconst rgbM = hsvV * (100 - hsvS) / 100;\n\tconst rgbN = hsvV * (100 - hsvS * rgbF) / 100;\n\tconst rgbT = hsvV * (100 - (100 - rgbF) * hsvS / 100) / 100;\n\n\tconst [ rgbR, rgbG, rgbB ] = rgbI === 5\n\t\t? [ hsvV, rgbM, rgbN ]\n\t: rgbI === 4\n\t\t? [ rgbT, rgbM, hsvV ]\n\t: rgbI === 3\n\t\t? [ rgbM, rgbN, hsvV ]\n\t: rgbI === 2\n\t\t? [ rgbM, hsvV, rgbT ]\n\t: rgbI === 1\n\t\t? [ rgbN, hsvV, rgbM ]\n\t: [ hsvV, rgbT, rgbM ];\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","import { matrix, pow } from './util';\n\n/**\n* @func rgb2xyz\n* @desc Return an XYZ color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* rgb2xyz(100, 0, 0) // => [41.25, 21.27, 1.93]\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n*/\n\nexport function rgb2xyz(rgbR, rgbG, rgbB) {\n\tconst [ lrgbR, lrgbB, lrgbG ] = [ rgbR, rgbG, rgbB ].map(\n\t\tv => v > 4.045 ? pow((v + 5.5) / 105.5, 2.4) * 100 : v / 12.92\n\t);\n\n\tconst [ xyzX, xyzY, xyzZ ] = matrix([ lrgbR, lrgbB, lrgbG ], [\n\t\t[0.4124564, 0.3575761, 0.1804375],\n\t\t[0.2126729, 0.7151522, 0.0721750],\n\t\t[0.0193339, 0.1191920, 0.9503041]\n\t]);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2rgb\n* @desc Return an XYZ color from an RGB color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayRGB}\n* @example\n* xyz2rgb(41.25, 21.27, 1.93) // => [100, 0, 0]\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n*/\n\nexport function xyz2rgb(xyzX, xyzY, xyzZ) {\n\tconst [ lrgbR, lrgbB, lrgbG ] = matrix([ xyzX, xyzY, xyzZ ], [\n\t\t[ 3.2404542, -1.5371385, -0.4985314],\n\t\t[-0.9692660, 1.8760108, 0.0415560],\n\t\t[ 0.0556434, -0.2040259, 1.0572252]\n\t]);\n\n\tconst [ rgbR, rgbG, rgbB ] = [ lrgbR, lrgbB, lrgbG ].map(\n\t\tv => v > 0.31308 ? 1.055 * pow(v / 100, 1 / 2.4) * 100 - 5.5 : 12.92 * v\n\t);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n","/**\n* @func hsl2hsv\n* @desc Return an HSV color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayHSV}\n* @example\n* hsl2hsv(0, 100, 50)\n* @link https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117\n*/\n\nexport function hsl2hsv(hslH, hslS, hslL) {\n\tconst hsv1 = hslS * (hslL < 50 ? hslL : 100 - hslL) / 100;\n\tconst hsvS = hsv1 === 0 ? 0 : 2 * hsv1 / (hslL + hsv1) * 100;\n\tconst hsvV = hslL + hsv1;\n\n\treturn [ hslH, hsvS, hsvV ];\n}\n\n/**\n* @func hsv2hsl\n* @desc Return an HSL color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayHSL}\n* @example\n* hsv2hsl(0, 0, 0) // => [0, 100, 50]\n* @link https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117\n*/\n\nexport function hsv2hsl(hsvH, hsvS, hsvV) {\n\tconst hslL = (200 - hsvS) * hsvV / 100;\n\n\tconst [ hslS, hslV ] = [\n\t\thslL === 0 || hslL === 200 ? 0 : hsvS * hsvV / 100 / (hslL <= 100 ? hslL : 200 - hslL) * 100,\n\t\thslL * 5 / 10\n\t];\n\n\treturn [ hsvH, hslS, hslV ];\n}\n","/**\n* @func hwb2hsv\n* @desc Return an HSV color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayHSV}\n* @example\n* hwb2hsv(0, 0, 0) // => [0, 100, 100]\n* @link https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV\n*/\n\nexport function hwb2hsv(hwbH, hwbW, hwbB) {\n\tconst [ hsvH, hsvS, hsvV ] = [\n\t\thwbH,\n\t\thwbB === 100 ? 0 : 100 - hwbW / (100 - hwbB) * 100,\n\t\t100 - hwbB\n\t];\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n\n/**\n* @func hsv2hwb\n* @desc Return an HWB color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayHWB}\n* @example\n* hsv2hwb(0, 100, 100) // => [0, 0, 0]\n* @link https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV\n*/\n\nexport function hsv2hwb(hsvH, hsvS, hsvV) {\n\tconst [ hwbH, hwbW, hwbB ] = [\n\t\thsvH,\n\t\t(100 - hsvS) * hsvV / 100,\n\t\t100 - hsvV\n\t];\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n","import { cbrt, epsilon, kappa, pow, wd50X, wd50Y, wd50Z, matrix } from './util';\n\n/**\n* @func lab2xyz\n* @desc Return an XYZ color from a LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayXYZ}\n* @example\n* lab2xyz(54.29, 80.82, 69.88) // => 41.25, 21.27, 1.93\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.easyrgb.com/en/math.php\n*/\n\nexport function lab2xyz(labL, labA, labB) {\n\t// compute f, starting with the luminance-related term\n\tconst f2 = (labL + 16) / 116;\n\tconst f1 = labA / 500 + f2;\n\tconst f3 = f2 - labB / 200;\n\n\t// compute pre-scaled XYZ\n\tconst [ initX, initY, initZ ] = [\n\t\tpow(f1, 3) > epsilon ? pow(f1, 3) : (116 * f1 - 16) / kappa,\n\t\tlabL > kappa * epsilon ? pow((labL + 16) / 116, 3) : labL / kappa,\n\t\tpow(f3, 3) > epsilon ? pow(f3, 3) : (116 * f3 - 16) / kappa\n\t];\n\n\tconst [ xyzX, xyzY, xyzZ ] = matrix(\n\t\t// compute XYZ by scaling pre-scaled XYZ by reference white\n\t\t[ initX * wd50X, initY * wd50Y, initZ * wd50Z ],\n\t\t// calculate D65 XYZ from D50 XYZ\n\t\t[\n\t\t\t[ 0.9555766, -0.0230393, 0.0631636],\n\t\t\t[-0.0282895, 1.0099416, 0.0210077],\n\t\t\t[ 0.0122982, -0.0204830, 1.3299098]\n\t\t]\n\t);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2lab\n* @desc Return an LAB color from a XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayLAB}\n* @example\n* xyz2lab(41.25, 21.27, 1.93) // => [54.29, 80.82, 69.88]\n* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.easyrgb.com/en/math.php\n*/\n\nexport function xyz2lab(xyzX, xyzY, xyzZ) {\n\t// calculate D50 XYZ from D65 XYZ\n\tconst [ d50X, d50Y, d50Z ] = matrix([ xyzX, xyzY, xyzZ ], [\n\t\t[ 1.0478112, 0.0228866, -0.0501270],\n\t\t[ 0.0295424, 0.9904844, -0.0170491],\n\t\t[-0.0092345, 0.0150436, 0.7521316]\n\t]);\n\n\t// calculate f\n\tconst [ f1, f2, f3 ] = [\n\t\td50X / wd50X,\n\t\td50Y / wd50Y,\n\t\td50Z / wd50Z\n\t].map(\n\t\tvalue => value > epsilon ? cbrt(value) : (kappa * value + 16) / 116\n\t);\n\n\tconst [ labL, labA, labB ] = [\n\t\t116 * f2 - 16,\n\t\t500 * (f1 - f2),\n\t\t200 * (f2 - f3)\n\t];\n\n\treturn [ labL, labA, labB ];\n}\n","import { atan2, cosd, pow, rad2deg, sind, sqrt } from './util';\n\n/**\n* @func lab2lch\n* @desc Return an LCH color from a LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayLAB}\n* @example\n* lab2lch(54.29, 80.82, 69.88) // => [54.29, 106.84, 40.85]\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.w3.org/TR/css-color-4/#lch-to-lab\n*/\n\nexport function lab2lch(labL, labA, labB) {\n\tconst [ lchC, lchH ] = [\n\t\tsqrt(pow(labA, 2) + pow(labB, 2)), // convert to chroma\n\t\trad2deg(atan2(labB, labA)) // convert to hue, in degrees\n\t];\n\n\treturn [ labL, lchC, lchH ];\n}\n\n/**\n* @func lch2lab\n* @desc Return a LAB color from an LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayLCH}\n* @example\n* lch2lab(54.29, 106.84, 40.85) // => [54.29, 80.82, 69.88]\n* @link https://www.w3.org/TR/css-color-4/#color-conversion-code\n* @link https://www.w3.org/TR/css-color-4/#lch-to-lab\n*/\n\nexport function lch2lab(lchL, lchC, lchH) {\n\t// convert to Lab a and b from the polar form\n\tconst [ labA, labB ] = [\n\t\tlchC * cosd(lchH),\n\t\tlchC * sind(lchH)\n\t];\n\n\treturn [ lchL, labA, labB ];\n}\n","import { luminance2contrast, pow, precision } from './util'\n\n/**\n* @func rgb2contrast\n* @desc Return the contrast ratio of of RGB colors\n* @param {ArrayRGB} rgb1 - RGB Color Array\n* @param {ArrayRGB} rgb2 - RGB Color Array\n* @return {NumberContrast}\n* @example\n* rgb2contrast([100, 0, 0], [0, 0, 0]) // => 5.252\n* @link https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio\n*/\n\nexport default function rgb2contrast(rgb1, rgb2) {\n\tconst luminance1 = rgb2luminance(...rgb1);\n\tconst luminance2 = rgb2luminance(...rgb2);\n\n\treturn luminance2contrast(luminance1, luminance2);\n}\n\n/**\n* @private\n* @func rgb2luminance\n* @desc Return the relative brightness of RGB\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {Number} Relative luminance of the color\n* @example\n* rgb2luminance(100, 0, 0) // => 0.2126\n* @link https://www.w3.org/TR/WCAG21/#dfn-relative-luminance\n*/\n\nexport function rgb2luminance(rgbR, rgbG, rgbB) {\n\treturn (adjustChannel(rgbR) * coefficientR + adjustChannel(rgbG) * coefficientG + adjustChannel(rgbB) * coefficientB) / precision;\n}\n\n// low-gamma adjust coefficients\nconst adjustChannel = x => x <= 3.928 ? x / lowc : adjustGamma(x);\nconst adjustGamma = x => pow((x + 5.5) / 105.5, 2.4);\nconst lowc = 1292;\n\n// red/green/blue coefficients\nconst coefficientR = 0.2126 * precision;\nconst coefficientG = 0.7152 * precision;\nconst coefficientB = 0.0722 * precision;\n","/**\n* @func hex2rgb\n* @desc Return an RGBA color from a Hex color.\n* @param {StringHex} hex\n* @return {ArrayRGBA}\n* @example\n* hex2rgb(\"#f00\") // => [100, 0, 0, 100]\n* hex2rgb(\"#f00f\") // => [100, 0, 0, 100]\n* @example\n* hex2rgb(\"#ff0000\") // => [100, 0, 0, 100]\n* hex2rgb(\"#ff0000ff\") // => [100, 0, 0, 100]\n*/\n\nexport function hex2rgb(hex) {\n\t// #<hex-color>{3,4,6,8}\n\tconst [, r, g, b, a, rr, gg, bb, aa] = hex.match(hexColorMatch) || [];\n\n\tif (rr !== undefined || r !== undefined) {\n\t\tconst red = rr !== undefined ? parseInt(rr, 16) : parseInt(r + r, 16);\n\t\tconst green = gg !== undefined ? parseInt(gg, 16) : parseInt(g + g, 16);\n\t\tconst blue = bb !== undefined ? parseInt(bb, 16) : parseInt(b + b, 16);\n\t\tconst alpha = aa !== undefined ? parseInt(aa, 16) : a !== undefined ? parseInt(a + a, 16) : 255;\n\n\t\treturn [red, green, blue, alpha].map(c => c * 100 / 255);\n\t}\n\n\treturn undefined;\n}\n\n/**\n* @func rgb2hex\n* @desc Return a HEX color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {StringHex}\n* @example\n* rgb2hex(100, 0, 0) // => \"#ff0000\"\n*/\n\nexport function rgb2hex(rgbR, rgbG, rgbB) {\n\treturn `#${((1 << 24) + (Math.round(rgbR * 255 / 100) << 16) + (Math.round(rgbG * 255 / 100) << 8) + Math.round(rgbB * 255 / 100)).toString(16).slice(1)}`;\n}\n\nconst hexColorMatch = /^#?(?:([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?)$/i;\n","/**\n* @func keyword2rgb\n* @desc Return an RGB color from a CSS keyword color\n* @param {StringKeyword} keyword\n* @return {ArrayRGB}\n* @example\n* keyword2rgb('red') // => [100, 0, 0]\n*/\n\nexport default function keyword2rgb(keyword) {\n\tconst rgb255 = keywords[String(keyword).toLowerCase()];\n\n\treturn rgb255 ? rgb255.map(x => x * 100 / 255) : null;\n}\n\nconst keywords = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\ttransparent: [0, 0, 0],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n};\n","import { abs, atan2d, cosd, exp, pow, sind, sqrt, precision } from './util';\n\n/* Return\n/* ========================================================================== */\n\n/**\n* @func lab2ciede\n* @desc Return the CIEDE2000 difference between 2 CIE LAB colors (International Commission on Illumination, Delta E).\n* @param {Array} lab1 - CIE LAB color\n* @param {Number} lab1.0 - Lightness\n* @param {Number} lab1.1 - Red/Green Coordinate\n* @param {Number} lab1.2 - Yellow/Blue Coordinate\n* @param {Array} lab2 - CIE LAB color\n* @param {Number} lab2.0 - Lightness\n* @param {Number} lab2.1 - Red/Green Coordinate\n* @param {Number} lab2.2 - Yellow/Blue Coordinate\n* @return {NumberCIEDE}\n* @example\n* lab2ciede([97.14, -21.56, 94.48], [0, 0, 0]) // => 100\n* @link https://en.wikipedia.org/wiki/Color_difference#CIEDE2000\n*/\n\nexport default function lab2ciede([L1, a1, b1], [L2, a2, b2]) {\n\tconst c1 = sqrt(pow(a1, 2) + pow(b1, 2));\n\tconst c2 = sqrt(pow(a2, 2) + pow(b2, 2));\n\n\tconst deltaLPrime = L2 - L1;\n\n\tconst lBar = (L1 + L2) / 2;\n\tconst cBar = (c1 + c2) / 2;\n\n\tconst cBarPow7 = pow(cBar, 7);\n\tconst cCoeff = sqrt(cBarPow7 / (cBarPow7 + pow(25, 7)));\n\tconst a1Prime = a1 + a1 / 2 * (1 - cCoeff);\n\tconst a2Prime = a2 + a2 / 2 * (1 - cCoeff);\n\n\tconst c1Prime = sqrt(a1Prime * a1Prime + b1 * b1);\n\tconst c2Prime = sqrt(a2Prime * a2Prime + b2 * b2);\n\tconst cBarPrime = (c1Prime + c2Prime) / 2;\n\tconst deltaCPrime = c2Prime - c1Prime;\n\n\tconst h1Prime = a1Prime === 0 && b1 === 0 ? 0 : atan2d(b1, a1Prime) % 360;\n\tconst h2Prime = a2Prime === 0 && b2 === 0 ? 0 : atan2d(b2, a2Prime) % 360;\n\n\tlet deltaSmallHPrime;\n\tlet deltaBigHPrime;\n\tlet hBarPrime;\n\n\tif (c1Prime === 0 || c2Prime === 0) {\n\t\tdeltaSmallHPrime = 0;\n\t\tdeltaBigHPrime = 0;\n\t\thBarPrime = h1Prime + h2Prime;\n\t} else {\n\t\tdeltaSmallHPrime = abs(h1Prime - h2Prime) <= 180\n\t\t\t? h2Prime - h1Prime\n\t\t: h2Prime <= h1Prime\n\t\t\t? h2Prime - h1Prime + 360\n\t\t: h2Prime - h1Prime - 360;\n\n\t\tdeltaBigHPrime = 2 * sqrt(c1Prime * c2Prime) * sind(deltaSmallHPrime / 2);\n\n\t\thBarPrime = abs(h1Prime - h2Prime) <= 180\n\t\t\t? (h1Prime + h2Prime) / 2\n\t\t: h1Prime + h2Prime < 360\n\t\t\t? (h1Prime + h2Prime + 360) / 2\n\t\t: (h1Prime + h2Prime - 360) / 2;\n\t}\n\n\tconst T = 1 - 0.17 * precision * cosd(hBarPrime - 30) + 0.24 * precision * cosd(2 * hBarPrime) + 0.32 * precision * cosd(3 * hBarPrime + 6) - 0.2 * precision * cosd(4 * hBarPrime - 63) / precision / precision;\n\n\tconst slCoeff = (lBar - 50) * (lBar - 50);\n\tconst sl = 1 + 0.015 * precision * slCoeff / sqrt(20 + slCoeff) / precision;\n\tconst sc = 1 + 0.045 * precision * cBarPrime / precision;\n\tconst sh = 1 + 0.015 * precision * cBarPrime * T / precision;\n\n\tconst RtCoeff = 60 * exp(-((hBarPrime - 275) / 25) * ((hBarPrime - 275) / 25));\n\tconst Rt = -2 * cCoeff * sind(RtCoeff);\n\n\tconst term1 = deltaLPrime / (kl * sl);\n\tconst term2 = deltaCPrime / (kc * sc);\n\tconst term3 = deltaBigHPrime / (kh * sh);\n\tconst term4 = Rt * term2 * term3;\n\n\treturn sqrt(term1 * term1 + term2 * term2 + term3 * term3 + term4);\n}\n\n// weight factors\nconst kl = 1;\nconst kc = 1;\nconst kh = 1;\n","import { rgb2hsl, hsl2rgb } from './rgb-hsl';\nimport { rgb2hwb, hwb2rgb } from './rgb-hwb';\nimport { rgb2hsv, hsv2rgb } from './rgb-hsv';\nimport { rgb2xyz, xyz2rgb } from './rgb-xyz';\nimport { hsl2hsv, hsv2hsl } from './hsl-hsv';\nimport { hwb2hsv, hsv2hwb } from './hwb-hsv';\nimport { lab2xyz, xyz2lab } from './lab-xyz';\nimport { lab2lch, lch2lab } from './lab-lch';\nimport rgb2contrast from './rgb-contrast';\nimport { hex2rgb, rgb2hex } from './hex-rgb';\nimport keyword2rgb from './keyword-rgb';\nimport lab2ciede from './lab-ciede';\n\n/* Convert between RGB and Lab\n/* ========================================================================== */\n\n/**\n* @func rgb2lab\n* @desc Return a CIE LAB color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {ArrayLAB}\n* @example\n* rgb2lab(100, 0, 0) // => [54.29, 80.82, 69.88]\n*/\n\nfunction rgb2lab(rgbR, rgbG, rgbB) {\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2rgb\n* @desc Return an RGB color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayRGBA}\n* @example\n* lab2rgb(54.29, 80.82, 69.88) // => [100, 0, 0]\n*/\n\nfunction lab2rgb(labL, labA, labB) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n\n/* Convert between RGB and LCH\n/* ========================================================================== */\n\n/**\n* @func rgb2lch\n* @desc Return a CIE LAB color from an RGB color\n* @param {Number} r - Red (0 - 100)\n* @param {Number} g - Green (0 - 100)\n* @param {Number} b - Blue (0 - 100)\n* @return {ArrayLCH}\n* @example\n* rgb2lch(100, 0, 0) // => [54.29, 106.84, 40.85]\n*/\n\nfunction rgb2lch(rgbR, rgbG, rgbB) {\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2rgb\n* @desc Return an RGB color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue\n* @return {ArrayRGBA}\n* @example\n* lch2rgb(54.29, 106.84, 40.85) // => [100, 0, 0]\n*/\n\nfunction lch2rgb(lchL, lchC, lchH) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\n\treturn [ rgbR, rgbG, rgbB ];\n}\n\n/* Convert between HSL and HWB\n/* ========================================================================== */\n\n/**\n* @func hwb2hsl\n* @desc Return an HSV color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayHSL}\n* @example\n* hwb2hsl(0, 0, 0) // => [0, 0, 100]\n*/\n\nfunction hwb2hsl(hwbH, hwbW, hwbB) {\n\tconst [ hsvH, hsvS, hsvV ] = hwb2hsv(hwbH, hwbW, hwbB);\n\tconst [ hslH, hslS, hslL ] = hsv2hsl(hsvH, hsvS, hsvV);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/**\n* @func hsl2hwb\n* @desc Return an HWB color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayHWB}\n* @example\n* hsl2hwb(0, 0, 100) // => [0, 0, 0]\n*/\n\nfunction hsl2hwb(hslH, hslS, hslL) {\n\tconst [ , hsvS, hsvV ] = hsl2hsv(hslH, hslS, hslL);\n\tconst [ , hwbW, hwbB ] = hsv2hwb(hslH, hsvS, hsvV);\n\n\treturn [ hslH, hwbW, hwbB ];\n}\n\n/* Convert between HSL and Lab\n/* ========================================================================== */\n\n/**\n* @func hsl2lab\n* @desc Return a CIE LAB color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayLAB}\n* @example\n* hsl2lab(0, 100, 50) // => [54.29, 80.82, 69.88]\n*/\n\nfunction hsl2lab(hslH, hslS, hslL) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2hsl\n* @desc Return a HSL color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @param {Number=} f - Hue Fallback (0 - 360)\n* @return {ArrayHSL}\n* @example\n* lab2hsl(54.29, 80.82, 69.88) // => [0, 100, 50]\n*/\n\nfunction lab2hsl(labL, labA, labB, fallbackhue) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/* Convert between HSL and LCH\n/* ========================================================================== */\n\n/**\n* @func hsl2lch\n* @desc Return a CIE LCH color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayLCH}\n* @example\n* hsl2lch(0, 100, 50) // => [54.29, 106.84, 40.85]\n*/\n\nfunction hsl2lch(hslH, hslS, hslL) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2hsl\n* @desc Return an HSL from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayLCH}\n* @example\n* lch2hsl(54.29, 106.84, 40.85) // => [0, 100, 50]\n*/\n\nfunction lch2hsl(lchL, lchC, lchH, fallbackhue) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/* Convert between HSL and XYZ\n/* ========================================================================== */\n\n/**\n* @func hsl2xyz\n* @desc Return an XYZ color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* hsl2xyz(0, 100, 50) // => [41.25, 21.27, 1.93]\n*/\n\nfunction hsl2xyz(hslH, hslS, hslL) {\n\tconst [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2hsl\n* @desc Return an HSL color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayHSL}\n* @example\n* xyz2hsl(0, 100, 50) // => [41.25, 21.27, 1.93]\n*/\n\nfunction xyz2hsl(xyzX, xyzY, xyzZ, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hslH, hslS, hslL ];\n}\n\n/* Convert between HWB and Lab\n/* ========================================================================== */\n\n/**\n* @func hwb2lab\n* @desc Return a CIE LAB color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayLAB}\n* @example\n* hwb2lab(0, 0, 0) // => [54.29, 80.82, 69.88]\n*/\n\nfunction hwb2lab(hwbH, hwbW, hwbB) {\n\tconst [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2hwb\n* @desc Return an HWB color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayHWB}\n* @example\n* lab2hwb(54.29, 80.82, 69.88) // => [0, 0, 0]\n*/\n\nfunction lab2hwb(labL, labA, labB, fallbackhue) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n\n/* Convert between HWB and LCH\n/* ========================================================================== */\n\n/**\n* @func hwb2lch\n* @desc Return a CIE LCH color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayLCH}\n* @example\n* hwb2lch(0, 0, 0) // => [54.29, 106.84, 40.85]\n*/\n\nfunction hwb2lch(hwbH, hwbW, hwbB) {\n\tconst [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2hwb\n* @desc Return an HWB color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayLCH}\n* @example\n* lch2hwb(54.29, 106.84, 40.85) // => [0, 0, 0]\n*/\n\nfunction lch2hwb(lchL, lchC, lchH, fallbackhue) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n\n/* Convert between HWB and XYZ\n/* ========================================================================== */\n\n/**\n* @func hwb2xyz\n* @desc Return an XYZ color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* hwb2xyz(0, 0, 0) // => [41.25, 21.27, 1.93]\n*/\n\nfunction hwb2xyz(hwbH, hwbW, hwbB) {\n\tconst [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2hwb\n* @desc Return an HWB color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayXYZ}\n* @example\n* xyz2hwb(0, 0, 0) // => [41.25, 21.27, 1.93]\n*/\n\nfunction xyz2hwb(xyzX, xyzY, xyzZ, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hwbH, hwbW, hwbB ];\n}\n\n/* Convert between HSV and Lab\n/* ========================================================================== */\n\n/**\n* @func hsv2lab\n* @desc Return a CIE LAB color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayLAB}\n* @example\n* hsv2lab(0, 100, 100) // => [54.29, 80.82, 69.88]\n*/\n\nfunction hsv2lab(hsvH, hsvS, hsvV) {\n\tconst [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\n\treturn [ labL, labA, labB ];\n}\n\n/**\n* @func lab2hsv\n* @desc Return an HSV color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {ArrayHSV}\n* @example\n* lab2hsv(54.29, 80.82, 69.88) // => [0, 100, 100]\n*/\n\nfunction lab2hsv(labL, labA, labB, fallbackhue) {\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/* Convert between HSV and LCH\n/* ========================================================================== */\n\n/**\n* @func hsv2lch\n* @desc Return a CIE LCH color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayLCH}\n* @example\n* hsv2lch(0, 100, 100) // => [54.29, 106.84, 40.85]\n*/\n\nfunction hsv2lch(hsvH, hsvS, hsvV) {\n\tconst [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2hsv\n* @desc Return an HSV color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayHSV}\n* @example\n* lch2hsv(54.29, 106.84, 40.85) // => [0, 100, 100]\n*/\n\nfunction lch2hsv(lchL, lchC, lchH, fallbackhue) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/* Convert between HSV and XYZ\n/* ========================================================================== */\n\n/**\n* @func hsv2xyz\n* @desc Return an XYZ color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {ArrayXYZ}\n* @example\n* hsv2xyz(0, 100, 100) // => [41.25, 21.27, 1.93]\n*/\n\nfunction hsv2xyz(hsvH, hsvS, hsvV) {\n\tconst [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV);\n\tconst [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/**\n* @func xyz2hsv\n* @desc Return an XYZ color from an HSV color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayHSV}\n* @example\n* xyz2hsv(41.25, 21.27, 1.93) // => [0, 100, 100]\n*/\n\nfunction xyz2hsv(xyzX, xyzY, xyzZ, fallbackhue) {\n\tconst [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ);\n\tconst [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue);\n\n\treturn [ hsvH, hsvS, hsvV ];\n}\n\n/* Convert between XYZ and LCH\n/* ========================================================================== */\n\n/**\n* @func xyz2lch\n* @desc Return a CIE LCH color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {ArrayLCH}\n* @example\n* xyz2lch(41.25, 21.27, 1.93) // => [54.29, 106.84, 40.85]\n*/\n\nfunction xyz2lch(xyzX, xyzY, xyzZ) {\n\tconst [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ);\n\tconst [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB);\n\n\treturn [ lchL, lchC, lchH ];\n}\n\n/**\n* @func lch2xyz\n* @desc Return an XYZ color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {ArrayXYZ}\n* @example\n* lch2xyz(54.29, 106.84, 40.85) // => [41.25, 21.27, 1.93]\n*/\n\nfunction lch2xyz(lchL, lchC, lchH) {\n\tconst [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH);\n\tconst [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB);\n\n\treturn [ xyzX, xyzY, xyzZ ];\n}\n\n/* Hex input conversions\n/* ========================================================================== */\n\n/**\n* @func hex2hsl\n* @desc Return an HSL color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayHSL}\n* @example\n* hex2hsl(\"#f00\") // => [0, 100, 50]\n*/\n\nfunction hex2hsl(hex) {\n\treturn rgb2hsl(...hex2rgb(hex));\n}\n\n/**\n* @func hex2hsv\n* @desc Return an HSL color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayHSV}\n* @example\n* hex2hsv(\"#f00\") // => [0, 100, 100]\n*/\n\nfunction hex2hsv(hex) {\n\treturn rgb2hsv(...hex2rgb(hex));\n}\n\n/**\n* @func hex2hwb\n* @desc Return an HWB color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayHWB}\n* @example\n* hex2hwb(\"#f00\") // => [0, 0, 0]\n*/\n\nfunction hex2hwb(hex) {\n\treturn rgb2hwb(...hex2rgb(hex));\n}\n\n/**\n* @func hex2lab\n* @desc Return a CIE LAB color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayLAB}\n* @example\n* hex2lab(\"#f00\") // => [54.29, 80.82, 69.88]\n*/\n\nfunction hex2lab(hex) {\n\treturn rgb2lab(...hex2rgb(hex));\n}\n\n/**\n* @func hex2lch\n* @desc Return a CIE LCH color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayLCH}\n* @example\n* hex2lch(\"#f00\") // => [54.29, 106.84, 40.85]\n*/\n\nfunction hex2lch(hex) {\n\treturn rgb2lch(...hex2rgb(hex));\n}\n\n/**\n* @func hex2xyz\n* @desc Return an XYZ color from a Hex color\n* @param {StringHex} hex\n* @return {ArrayXYZ}\n* @example\n* hex2xyz(\"#f00\") // => [41.25, 21.27, 1.93]\n*/\n\nfunction hex2xyz(hex) {\n\treturn rgb2xyz(...hex2rgb(hex));\n}\n\n/* Hex output conversions\n/* ========================================================================== */\n\n/**\n* @func hsl2hex\n* @desc Return a Hex color from an HSL color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} l - Lightness (0 - 100)\n* @return {StringHex}\n* @example\n* hsl2hex(0, 100, 50) // => \"#f00\"\n*/\n\nfunction hsl2hex(hslH, hslS, hslL) {\n\treturn rgb2hex(...hsl2rgb(hslH, hslS, hslL));\n}\n\n/**\n* @func hsv2hex\n* @desc Return a Hex color from an HSV color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} s - Saturation (0 - 100)\n* @param {Number} v - Value (0 - 100)\n* @return {StringHex}\n* @example\n* hsv2hex(0, 100, 100) // => \"#f00\"\n*/\n\nfunction hsv2hex(hsvH, hsvS, hsvV) {\n\treturn rgb2hex(...hsl2rgb(hsvH, hsvS, hsvV));\n}\n\n/**\n* @func hwb2hex\n* @desc Return a Hex color from an HWB color\n* @param {Number} h - Hue Angle (0 - 360)\n* @param {Number} w - Whiteness (0 - 100)\n* @param {Number} b - Blackness (0 - 100)\n* @return {StringHex}\n* @example\n* hwb2hex(0, 0, 0) // => \"#f00\"\n*/\n\nfunction hwb2hex(hwbH, hwbW, hwbB) {\n\treturn rgb2hex(...hwb2rgb(hwbH, hwbW, hwbB));\n}\n\n/**\n* @func lab2hex\n* @desc Return a Hex color from a CIE LAB color\n* @param {Number} l - CIE Lightness\n* @param {Number} a - Red/Green Coordinate\n* @param {Number} b - Yellow/Blue Coordinate\n* @return {StringHex}\n* @example\n* lab2hex(54.29, 80.82, 69.88) // => \"#f00\"\n*/\n\nfunction lab2hex(labL, labA, labB) {\n\treturn rgb2hex(...lab2rgb(labL, labA, labB));\n}\n\n/**\n* @func lch2hex\n* @desc Return a Hex color from a CIE LCH color\n* @param {Number} l - CIE Lightness\n* @param {Number} c - CIE Chroma\n* @param {Number} h - CIE Hue Angle\n* @return {StringHex}\n* @example\n* lch2hex(54.29, 106.84, 40.85) // => \"#f00\"\n*/\n\nfunction lch2hex(lchL, lchC, lchH) {\n\treturn rgb2hex(...lch2rgb(lchL, lchC, lchH));\n}\n\n/**\n* @func xyz2hex\n* @desc Return a Hex color from an XYZ color\n* @param {Number} x - Chromaticity of X\n* @param {Number} y - Chromaticity of Y\n* @param {Number} z - Chromaticity of Z\n* @return {StringHex}\n* @example\n* xyz2hex(41.25, 21.27, 1.93) // => \"#f00\"\n*/\n\nfunction xyz2hex(xyzX, xyzY, xyzZ) {\n\treturn rgb2hex(...xyz2rgb(xyzX, xyzY, xyzZ));\n}\n\n/* CIEDE conversions\n/* ========================================================================== */\n\n/**\n* @func hex2ciede\n* @desc Return the CIEDE2000 difference between 2 HEX colors\n* @param {StringHex} hex1\n* @param {StringHex} hex2\n* @return {NumberCIEDE}\n* @example\n* hex2ciede('#fff', '#000') // => 100\n*/\n\nfunction hex2ciede(hex1, hex2) {\n\treturn lab2ciede(hex2lab(hex1), hex2lab(hex2));\n}\n\n/**\n* @func hsl2ciede\n* @desc Return the CIEDE2000 difference between 2 HSL colors\n* @param {ArrayHSL} hsl1\n* @param {ArrayHSL} hsl2\n* @return {NumberCIEDE}\n* @example\n* hsl2ciede([0, 0, 100], [0, 0, 0]) // => 100\n*/\n\nfunction hsl2ciede(hsl1, hsl2) {\n\treturn lab2ciede(hsl2lab(...hsl1), hsl2lab(...hsl2));\n}\n\n/**\n* @func hsv2ciede\n* @desc Return the CIEDE2000 difference between 2 HSV colors\n* @param {ArrayHSV} hsl1\n* @param {ArrayHSV} hsl2\n* @return {NumberCIEDE}.\n* @example\n* hsv2ciede([0, 0, 40], [0, 0, 0]) // => 100\n*/\n\nfunction hsv2ciede(hsv1, hsv2) {\n\treturn lab2ciede(hsv2lab(...hsv1), hsv2lab(...hsv2));\n}\n\n/**\n* @func hwb2ciede\n* @desc Return the CIEDE2000 difference between 2 HWB colors\n* @param {ArrayHWB} hwb1\n* @param {ArrayHWB} hwb2\n* @return {NumberCIEDE}.\n* @example\n* hwb2ciede([0, 0, 40], [0, 0, 0]) // => 100\n*/\n\nfunction hwb2ciede(hwb1, hwb2) {\n\treturn lab2ciede(hwb2lab(...hwb1), hwb2lab(...hwb2));\n}\n\n/**\n* @func keyword2ciede\n* @desc Return the CIEDE2000 difference between 2 keyword colors\n* @param {StringKeyword} keyword1\n* @param {StringKeyword} keyword2\n* @return {NumberCIEDE}.\n* @example\n* keyword2ciede('white', 'black') // => 100\n*/\n\nfunction keyword2ciede(keyword1, keyword2) {\n\treturn lab2ciede(keyword2lab(keyword1), keyword2lab(keyword2));\n}\n\n/**\n* @func lch2ciede\n* @desc Return the CIEDE2000 difference between 2 LCH colors\n* @param {ArrayLCH} lch1\n* @param {ArrayLCH} lch2\n* @return {NumberCIEDE}.\n* @example\n* lch2ciede([100, 0.03, -82.2], [0, 0, 0]) // => 100\n*/\n\nfunction lch2ciede(lch1, lch2) {\n\treturn lab2ciede(lch2lab(...lch1), lch2lab(...lch2));\n}\n\n/**\n* @func rgb2ciede\n* @desc Return the CIEDE2000 difference between 2 RGB colors\n* @param {ArrayRGB} rgb1\n* @param {ArrayRGB} rgb2\n* @return {NumberCIEDE}.\n* @example\n* rgb2ciede([100, 100, 100], [0, 0, 0]) // => 100\n*/\n\nfunction rgb2ciede(rgb1, rgb2) {\n\treturn lab2ciede(rgb2lab(...rgb1), rgb2lab(...rgb2));\n}\n\n/**\n* @func xyz2ciede\n* @desc Return the CIEDE2000 difference between 2 XYZ colors\n* @param {ArrayXYZ} xyz1\n* @param {ArrayXYZ} xyz2\n* @return {NumberCIEDE}.\n* @example\n* xyz2ciede([95.05, 100, 108.88], [0, 0, 0]) // => 100\n*/\n\nfunction xyz2ciede(xyz1, xyz2) {\n\treturn lab2ciede(xyz2lab(...xyz1), xyz2lab(...xyz2));\n}\n\n/* Contrast conversions\n/* ========================================================================== */\n\n/**\n* @func hex2contrast\n* @desc Return the contrast ratio of 2 HEX colors\n* @param {StringHex} hex1\n* @param {StringHex} hex2\n* @return {NumberContrast}\n* @example\n* rgb2contrast(\"#fff\", '#000') // => 21\n*/\n\nfunction hex2contrast(hex1, hex2) {\n\treturn rgb2contrast(hex2rgb(hex1), hex2rgb(hex2));\n}\n\n/**\n* @func hsl2contrast\n* @desc Return the contrast ratio of 2 HSL colors\n* @param {ArrayHSL} hsl1\n* @param {ArrayHSL} hsl2\n* @return {NumberContrast}\n* @example\n* hsl2contrast([0, 0, 100], [0, 0, 0]) // => 21\n*/\n\nfunction hsl2contrast(hsl1, hsl2) {\n\treturn rgb2contrast(hsl2rgb(...hsl1), hsl2rgb(...hsl2));\n}\n\n/**\n* @func hsv2contrast\n* @desc Return the contrast ratio of 2 HSV colors\n* @param {ArrayHSV} hsv1\n* @param {ArrayHSV} hsv2\n* @return {NumberContrast}\n* @example\n* hsv2contrast([0, 0, 100], [0, 0, 0]) // => 21\n*/\n\nfunction hsv2contrast(hsv1, hsv2) {\n\treturn rgb2contrast(hsv2rgb(...hsv1), hsv2rgb(...hsv2));\n}\n\n/**\n* @func hwb2contrast\n* @desc Return the contrast ratio of 2 HWB colors\n* @param {ArrayHWB} hwb1\n* @param {ArrayHWB} hwb2\n* @return {NumberContrast}\n* @example\n* hwb2contrast([0, 100, 0], [0, 0, 100]) // => 21\n*/\n\nfunction hwb2contrast(hwb1, hwb2) {\n\treturn rgb2contrast(hwb2rgb(...hwb1), hwb2rgb(...hwb2));\n}\n\n/**\n* @func keyword2contrast\n* @desc Return the contrast ratio of 2 keyword colors\n* @param {StringKeyword} keyword1\n* @param {StringKeyword} keyword2\n* @return {NumberContrast}\n* @example\n* keyword2contrast('white', 'black') // => 21\n*/\n\nfunction keyword2contrast(keyword1, keyword2) {\n\treturn rgb2contrast(keyword2rgb(keyword1), keyword2rgb(keyword2));\n}\n\n/**\n* @func lab2contrast\n* @desc Return the contrast ratio of 2 LAB colors\n* @param {ArrayLAB} lab1\n* @param {ArrayLAB} lab2\n* @return {NumberContrast}\n* @example\n* lab2contrast([100, 0.003, -0.025], [0, 0, 0]) // => 21\n*/\n\nfunction lab2contrast(lab1, lab2) {\n\treturn rgb2contrast(lab2rgb(...lab1), lab2rgb(...lab2));\n}\n\n/**\n* @func lch2contrast\n* @desc Return the contrast ratio of 2 LCH colors\n* @param {ArrayLCH} lch1\n* @param {ArrayLCH} lch2\n* @return {NumberContrast}\n* @example\n* lch2contrast([100, 0.025, -82.2], [0, 0, 0]) // => 21\n*/\n\nfunction lch2contrast(lch1, lch2) {\n\treturn rgb2contrast(lch2rgb(...lch1), lch2rgb(...lch2));\n}\n\n/**\n* @func xyz2contrast\n* @desc Return the contrast ratio of 2 XYZ colors\n* @param {ArrayXYZ} xyz1\n* @param {ArrayXYZ} xyz2\n* @return {NumberContrast}\n* @example\n* xyz2contrast([95.05, 100, 108.88], [0, 0, 0]) // => 21\n*/\n\nfunction xyz2contrast(xyz1, xyz2) {\n\treturn rgb2contrast(xyz2rgb(...xyz1), xyz2rgb(...xyz2));\n}\n\n/* Keyword Conversions\n/* ========================================================================== */\n\n/**\n* @func keyword2hex\n* @desc Return an RGB color from a keyword color\n* @param {StringKeyword} keyword - CSS Color Keyword\n* @return {String}\n* @example\n* keyword2hex('white') // => \"#ffffff\"\n*/\n\nfunction keyword2hex(keyword) {\n\treturn rgb2hex(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2hsl\n* @desc Return an HSL color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayHSL}\n* @example\n* keyword2hsl('white') // => [0, 0, 100]\n*/\n\nfunction keyword2hsl(keyword) {\n\treturn rgb2hsl(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2hsv\n* @desc Return an HSV color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayHSV}\n* @example\n* keyword2hsv('white') // => [0, 0, 100]\n*/\n\nfunction keyword2hsv(keyword) {\n\treturn rgb2hsv(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2hwb\n* @desc Return an HWB color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayHWB}\n* @example\n* keyword2hwb('red') // => [0, 0, 0]\n*/\n\nfunction keyword2hwb(keyword) {\n\treturn rgb2hwb(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2lab\n* @desc Return a CIE LAB color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayLAB}\n* @example\n* keyword2lab('red') // => [54.29, 80.82, 69.88]\n*/\n\nfunction keyword2lab(keyword) {\n\treturn rgb2lab(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2lch\n* @desc Return a CIE LCH color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayLCH}\n* @example\n* keyword2lch('red') // => [54.29, 106.84, 40.85]\n*/\n\nfunction keyword2lch(keyword) {\n\treturn rgb2lch(...keyword2rgb(keyword));\n}\n\n/**\n* @func keyword2lch\n* @desc Return an XYZ color from a keyword color\n* @param {StringKeyword}\n* @return {ArrayXYZ}\n* @example\n* keyword2lch('red') // => [41.25, 21.27, 1.93]\n*/\n\nfunction keyword2xyz(keyword) {\n\treturn rgb2xyz(...keyword2rgb(keyword));\n}\n\n/* All Conversions\n/* ========================================================================== */\n\nexport {\n\thex2ciede,\n\thex2contrast,\n\thex2hsl,\n\thex2hsv,\n\thex2hwb,\n\thex2lab,\n\thex2lch,\n\thex2rgb,\n\thex2xyz,\n\n\thsl2ciede,\n\thsl2contrast,\n\thsl2hex,\n\thsl2hsv,\n\thsl2hwb,\n\thsl2lab,\n\thsl2lch,\n\thsl2rgb,\n\thsl2xyz,\n\n\thsv2ciede,\n\thsv2contrast,\n\thsv2hex,\n\thsv2hsl,\n\thsv2hwb,\n\thsv2lab,\n\thsv2lch,\n\thsv2rgb,\n\thsv2xyz,\n\n\thwb2ciede,\n\thwb2contrast,\n\thwb2hex,\n\thwb2hsl,\n\thwb2hsv,\n\thwb2lab,\n\thwb2lch,\n\thwb2rgb,\n\thwb2xyz,\n\n\tkeyword2ciede,\n\tkeyword2contrast,\n\tkeyword2hex,\n\tkeyword2hsl,\n\tkeyword2hsv,\n\tkeyword2hwb,\n\tkeyword2lab,\n\tkeyword2lch,\n\tkeyword2rgb,\n\tkeyword2xyz,\n\n\tlab2ciede,\n\tlab2contrast,\n\tlab2hex,\n\tlab2hsl,\n\tlab2hsv,\n\tlab2hwb,\n\tlab2lch,\n\tlab2rgb,\n\tlab2xyz,\n\n\tlch2ciede,\n\tlch2contrast,\n\tlch2hex,\n\tlch2hsl,\n\tlch2hsv,\n\tlch2hwb,\n\tlch2lab,\n\tlch2rgb,\n\tlch2xyz,\n\n\trgb2ciede,\n\trgb2contrast,\n\trgb2hex,\n\trgb2hsl,\n\trgb2hsv,\n\trgb2hwb,\n\trgb2lab,\n\trgb2lch,\n\trgb2xyz,\n\n\txyz2ciede,\n\txyz2contrast,\n\txyz2hex,\n\txyz2hsl,\n\txyz2hsv,\n\txyz2hwb,\n\txyz2lab,\n\txyz2lch,\n\txyz2rgb\n};\n\n/**\n* @typedef {Array} ArrayRGB\n* An array of red, green, and blue channels.\n* @property {Number} 0 - Red (0 - 100)\n* @property {Number} 1 - Green (0 - 100)\n* @property {Number} 2 - Blue (0 - 100)\n*\n*/\n/**\n* @typedef {Array} ArrayRGBA\n* An array of red, green, blue, and alpha channels.\n* @property {Number} 0 - Red (0 - 100)\n* @property {Number} 1 - Green (0 - 100)\n* @property {Number} 2 - Blue (0 - 100)\n* @property {Number} 3 - Alpha (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayHSL\n* An array of hue, saturation, and lightness channels.\n* @property {Number} 0 - Hue Angle (0 - 360)\n* @property {Number} 1 - Saturation (0 - 100)\n* @property {Number} 2 - Lightness (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayHSV\n* An array of hue, saturation, and value channels.\n* @property {Number} 0 - Hue Angle (0 - 360)\n* @property {Number} 1 - Saturation (0 - 100)\n* @property {Number} 2 - Value (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayLAB\n* An array of CIELAB lightness, red/green, and yellow/blue.\n* @property {Number} 0 - CIE Lightness\n* @property {Number} 1 - Red/Green Coordinate\n* @property {Number} 2 - Yellow/Blue Coordinate\n*/\n/**\n* @typedef {Array} ArrayLCH\n* An array of CIELAB lightness, chroma, and hue.\n* @property {Number} 0 - CIE Lightness\n* @property {Number} 1 - CIE Chroma\n* @property {Number} 2 - CIE Hue\n*/\n/**\n* @typedef {Array} ArrayHWB\n* An array of hue, whiteness, and blackness channels.\n* @property {Number} 0 - Hue Angle (0 - 360)\n* @property {Number} 1 - Whiteness (0 - 100)\n* @property {Number} 2 - Blackness (0 - 100)\n*/\n/**\n* @typedef {Array} ArrayXYZ\n* An array of CIELAB chromacity.\n* @property {Number} 0 - X Chromacity\n* @property {Number} 1 - Y Chromacity\n* @property {Number} 2 - Z Chromacity\n* @example\n* [95.05, 100, 108.88]\n* @example\n* [0, 0, 0]\n*/\n/**\n* @typedef {String} StringHex\n* A string representing the 3, 4, 6, or 8 digit hexidecimal color.\n* @example\n* \"#f00\"\n* \"#f00f\"\n* @example\n* \"#ff0000\"\n* \"#ff0000ff\"\n*/\n/**\n* @typedef {String} StringKeyword\n* A case-insensitive string identifier that represents a specific color.\n* @example\n* \"#f00\"\n* \"#f00f\"\n* @example\n* \"#ff0000\"\n* \"#ff0000ff\"\n*/\n/**\n* @typedef {Number} NumberContrast\n* A contrast ratio of the colors (0 - 21)\n* @example\n* 0\n* @example\n* 21\n*/\n/**\n* @typedef {Number} NumberCIEDE\n* A CIEDE2000 difference between 2 colors (0 - 100)\n* @example\n* 0\n* @example\n* 100\n*/\n"],"names":["rgb2hue","rgbR","rgbG","rgbB","fallbackhue","value","rgb2value","delta","rgb2whiteness","segment","hue2rgb","t1","t2","hue","rhue","max","min","matrix","params","mats","map","mat","reduce","acc","index","precision","atan2d","y","x","rad2deg","atan2","cosd","cos","deg2rad","PI","sind","sin","abs","Math","cbrt","exp","floor","pow","sqrt","epsilon","kappa","rgb2hsl","hslH","hslV","hslW","hslD","hslL","hsl2rgb","hslS","_ref","rgb2hwb","hwb2rgb","hwbH","hwbW","hwbB","_hsl2rgb$map2","_slicedToArray","v","rgb2hsv","hsvV","hsvW","hsv2rgb","hsvH","hsvS","rgbI","rgbF","rgbM","rgbN","rgbT","_ref2","rgb2xyz","_map2","_matrix2","xyz2rgb","xyzX","xyzY","xyzZ","_matrix4","_map4","hsl2hsv","hsv1","hsv2hsl","hwb2hsv","hsv2hwb","lab2xyz","labL","labA","labB","f2","f1","f3","xyz2lab","lab2lch","lch2lab","lchL","lchC","lchH","rgb2contrast","rgb1","rgb2","relativeLuminance1","relativeLuminance2","l1","l2","luminance2contrast","rgb2luminance","adjustChannel","coefficientR","coefficientG","coefficientB","lowc","adjustGamma","hex2rgb","hex","match","hexColorMatch","r","g","b","a","rr","gg","bb","aa","undefined","parseInt","c","rgb2hex","round","toString","slice","keyword2rgb","keyword","rgb255","keywords","String","toLowerCase","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","transparent","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","lab2ciede","L1","a1","b1","L2","a2","b2","c1","c2","deltaLPrime","lBar","cBarPow7","cCoeff","a1Prime","a2Prime","c1Prime","c2Prime","cBarPrime","deltaCPrime","h1Prime","h2Prime","deltaSmallHPrime","deltaBigHPrime","hBarPrime","T","slCoeff","sl","sc","sh","RtCoeff","Rt","term1","kl","term2","kc","term3","kh","rgb2lab","_rgb2xyz2","_xyz2lab2","lab2rgb","_lab2xyz2","_xyz2rgb2","rgb2lch","_rgb2xyz4","_xyz2lab4","_lab2lch2","lch2rgb","_lch2lab2","_lab2xyz4","_xyz2rgb4","hwb2hsl","_hwb2hsv2","_hsv2hsl2","hsl2hwb","_hsl2hsv2","_hsv2hwb2","hsl2lab","_hsl2rgb2","_rgb2xyz6","_xyz2lab6","lab2hsl","_lab2xyz6","_xyz2rgb6","_rgb2hsl2","hsl2lch","_hsl2rgb4","_rgb2xyz8","_xyz2lab8","_lab2lch4","lch2hsl","_lch2lab4","_lab2xyz8","_xyz2rgb8","_rgb2hsl4","hsl2xyz","_hsl2rgb6","_rgb2xyz0","xyz2hsl","_xyz2rgb0","_rgb2hsl6","hwb2lab","_hwb2rgb2","_rgb2xyz10","_xyz2lab0","lab2hwb","_lab2xyz0","_xyz2rgb10","_rgb2hwb2","hwb2lch","_hwb2rgb4","_rgb2xyz12","_xyz2lab10","_lab2lch6","lch2hwb","_lch2lab6","_lab2xyz10","_xyz2rgb12","_rgb2hwb4","hwb2xyz","_hwb2rgb6","_rgb2xyz14","xyz2hwb","_xyz2rgb14","_rgb2hwb6","hsv2lab","_hsv2rgb2","_rgb2xyz16","_xyz2lab12","lab2hsv","_lab2xyz12","_xyz2rgb16","_rgb2hsv2","hsv2lch","_hsv2rgb4","_rgb2xyz18","_xyz2lab14","_lab2lch8","lch2hsv","_lch2lab8","_lab2xyz14","_xyz2rgb18","_rgb2hsv4","hsv2xyz","_hsv2rgb6","_rgb2xyz20","xyz2hsv","_xyz2rgb20","_rgb2hsv6","xyz2lch","_xyz2lab16","_lab2lch0","lch2xyz","_lch2lab0","_lab2xyz16","hex2hsl","hex2hsv","hex2hwb","hex2lab","hex2lch","hex2xyz","hsl2hex","hsv2hex","hwb2hex","lab2hex","lch2hex","xyz2hex","hex2ciede","hex1","hex2","hsl2ciede","hsl1","hsl2","hsv2ciede","hsv2","hwb2ciede","hwb1","hwb2","keyword2ciede","keyword1","keyword2","keyword2lab","lch2ciede","lch1","lch2","rgb2ciede","xyz2ciede","xyz1","xyz2","hex2contrast","hsl2contrast","hsv2contrast","hwb2contrast","keyword2contrast","lab2contrast","lab1","lab2","lch2contrast","xyz2contrast","keyword2hex","keyword2hsl","keyword2hsv","keyword2hwb","keyword2lch","keyword2xyz"],"mappings":"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"}
package/package.json CHANGED
@@ -1,39 +1,36 @@
1
1
  {
2
2
  "name": "@csstools/convert-colors",
3
- "version": "1.4.0",
4
- "description": "Convert colors between RGB, HSL, and HWB",
3
+ "version": "2.0.1",
4
+ "description": "Convert colors between RGB, HEX, HSL, HWB, LAB, LCH, and more",
5
5
  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
6
6
  "license": "CC0-1.0",
7
- "repository": "jonathantneal/convert-colors",
8
- "homepage": "https://github.com/jonathantneal/convert-colors#readme",
9
- "bugs": "https://github.com/jonathantneal/convert-colors/issues",
10
- "main": "index.bundle.js",
11
- "module": "index.js",
7
+ "repository": "csstools/convert-colors",
8
+ "homepage": "https://github.com/csstools/convert-colors#readme",
9
+ "bugs": "https://github.com/csstools/convert-colors/issues",
10
+ "main": "index.js",
11
+ "module": "index.mjs",
12
12
  "files": [
13
13
  "index.js",
14
- "index.bundle.js",
15
- "lib"
14
+ "index.js.map",
15
+ "index.mjs",
16
+ "index.mjs.map"
16
17
  ],
17
18
  "scripts": {
19
+ "build": "rollup -c .rollup.mjs --silent",
20
+ "docs": "jsdoc -c .jsdocrc -d .gh-pages",
18
21
  "prepublishOnly": "npm test",
19
- "pretest": "rollup -c .rollup.js --silent",
20
- "test": "echo 'Running tests...'; npm run test:ec && npm run test:js && npm run test:tape",
21
- "test:ec": "echint test",
22
- "test:js": "eslint *.js --cache --ignore-path .gitignore --quiet",
23
- "test:tape": "node .tape"
22
+ "pretest": "npm run build",
23
+ "test": "node .tape"
24
24
  },
25
25
  "engines": {
26
- "node": ">=4.0.0"
26
+ "node": ">=6.0.0"
27
27
  },
28
28
  "devDependencies": {
29
- "babel-core": "^6.26.0",
30
- "babel-preset-env": "^1.6",
31
- "echint": "^4.0",
32
- "eslint": "^4.15",
33
- "eslint-config-dev": "2.0",
34
- "pre-commit": "^1.2",
35
- "rollup": "^0.54",
36
- "rollup-plugin-babel": "^3.0"
29
+ "@babel/core": "^7.29.0",
30
+ "@babel/preset-env": "^7.29.0",
31
+ "rollup": "^4.58.0",
32
+ "@rollup/plugin-babel": "^6.1.0",
33
+ "@rollup/plugin-terser": "^0.4.4"
37
34
  },
38
35
  "eslintConfig": {
39
36
  "extends": "dev",
@@ -46,25 +43,29 @@
46
43
  },
47
44
  "keywords": [
48
45
  "colors",
49
- "converts",
46
+ "contrast",
50
47
  "conversions",
51
48
  "converting",
52
- "css",
53
- "rgb",
49
+ "converts",
50
+ "hex",
54
51
  "hsl",
52
+ "hsv",
55
53
  "hwb",
56
54
  "lab",
57
55
  "lch",
58
- "hsv",
56
+ "rgb",
59
57
  "xyz",
60
- "red",
61
- "green",
62
58
  "blue",
59
+ "green",
60
+ "red",
61
+ "blackness",
63
62
  "hue",
64
- "saturation",
65
63
  "lightness",
64
+ "saturation",
66
65
  "whiteness",
67
- "blackness",
68
- "cie"
66
+ "cie",
67
+ "ciede2000",
68
+ "contrast",
69
+ "wcag"
69
70
  ]
70
71
  }
package/CHANGELOG.md DELETED
@@ -1,27 +0,0 @@
1
- # Changes to Convert Colors
2
-
3
- ### 1.4.0 (January 27, 2018)
4
-
5
- - Add LCH conversions
6
- - Allow fallbacks in RGB conversions (for gray conversions)
7
- - Add Lab and LCH tests
8
- - Simplify test array joining
9
- - Rename references from "LAB" to "Lab"
10
-
11
- ### 1.3.0 (January 25, 2018)
12
-
13
- - Export all converter combinations of `rgb`, `hsl`, `hwb`, `lab`, `hsv`,
14
- `xyz`, and also the `rgb2hue` converter
15
- - Organize library into files
16
-
17
- ### 1.2.0 (January 24, 2018)
18
-
19
- - Export `rgb2lab`, `lab2rgb`, `hsl2lab`, etc. converters
20
-
21
- ### 1.1.0 (January 22, 2018)
22
-
23
- - Export `rgb2hue` converter
24
-
25
- ### 1.0.0 (January 21, 2018)
26
-
27
- - Initial version