Comparing version 0.2.67 to 0.2.68
@@ -9,4 +9,5 @@ { | ||
"d3-color": "^1.0.3", | ||
"d3-interpolate": "^1.1.6", | ||
"tinycolor2": "^1.4.1" | ||
} | ||
} |
let chroma = require('chroma-js'); | ||
let { color } = require('d3-color'); | ||
let tinycolor = require("tinycolor2"); | ||
let culori = require('../../../build/culori'); | ||
let culori = require('../../build/culori'); | ||
let benchmark = require('../util/benchmark'); | ||
var start, end; | ||
function startBench() { | ||
start = process.hrtime(); | ||
} | ||
function endBench() { | ||
end = process.hrtime(start); | ||
return end[0] + 's ' + end[1] / 1000000 + 'ms'; | ||
} | ||
let colors = Object.keys(culori.named); | ||
let iterations = 10000; | ||
startBench(); | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
chroma(colors[i]); | ||
benchmark('chroma: chroma("colorname")', () => { | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
chroma(colors[i]); | ||
} | ||
} | ||
} | ||
console.log('chroma: chroma("colorname")', endBench()); | ||
}); | ||
startBench(); | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
color(colors[i]); | ||
benchmark('d3-color: color("colorname")', () => { | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
color(colors[i]); | ||
} | ||
} | ||
} | ||
console.log('d3-color: color("colorname")', endBench()); | ||
}); | ||
startBench(); | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
tinycolor(colors[i]); | ||
benchmark('tinycolor: tinycolor("colorname")', () => { | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
tinycolor(colors[i]); | ||
} | ||
} | ||
} | ||
console.log('tinycolor: tinycolor("colorname")', endBench()); | ||
}); | ||
startBench(); | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
culori(colors[i]); | ||
benchmark('culori: culori("colorname")', () => { | ||
for (var it = 0; it < iterations; it++) { | ||
for (var i = 0; i < colors.length; i++) { | ||
culori(colors[i]); | ||
} | ||
} | ||
} | ||
console.log('culori: culori("colorname")', endBench()); | ||
}); | ||
let chroma = require('chroma-js'); | ||
let { color } = require('d3-color'); | ||
let tinycolor = require("tinycolor2"); | ||
let culori = require('../../../build/culori'); | ||
let culori = require('../../build/culori'); | ||
let benchmark = require('../util/benchmark'); | ||
let increment = 1; | ||
let increment = 2; | ||
var start, end; | ||
function startBench() { | ||
start = process.hrtime(); | ||
} | ||
function endBench() { | ||
end = process.hrtime(start); | ||
return end[0] + 's ' + end[1] / 1000000 + 'ms'; | ||
} | ||
startBench(); | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
chroma(`rgb(${r},${g},${b})`); | ||
benchmark('chroma: chroma("rgb(r,g,b)")', () => { | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
chroma(`rgb(${r},${g},${b})`); | ||
} | ||
} | ||
} | ||
} | ||
console.log('chroma: chroma("rgb(r,g,b)")', endBench()); | ||
}); | ||
startBench(); | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
color(`rgb(${r},${g},${b})`); | ||
benchmark('d3-color: color("rgb(r,g,b)")', () => { | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
color(`rgb(${r},${g},${b})`); | ||
} | ||
} | ||
} | ||
} | ||
console.log('d3-color: color("rgb(r,g,b)")', endBench()); | ||
}); | ||
startBench(); | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
tinycolor(`rgb(${r},${g},${b})`); | ||
benchmark('tinycolor: tinycolor("rgb(r,g,b)")', () => { | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
tinycolor(`rgb(${r},${g},${b})`); | ||
} | ||
} | ||
} | ||
} | ||
console.log('tinycolor: tinycolor("rgb(r,g,b)")', endBench()); | ||
}); | ||
startBench(); | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
culori(`rgb(${r},${g},${b})`); | ||
benchmark('culori: culori("rgb(r,g,b)")', () => { | ||
for (var r = 0; r <= 255; r+=increment) { | ||
for (var g = 0; g <= 255; g+=increment) { | ||
for (var b = 0; b <= 255; b+=increment) { | ||
culori(`rgb(${r},${g},${b})`); | ||
} | ||
} | ||
} | ||
} | ||
}); | ||
console.log('culori: culori("rgb(r,g,b)")', endBench()); | ||
@@ -105,3 +105,3 @@ (function (global, factory) { | ||
var css = (function () { | ||
var formatter = (function () { | ||
var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'rgb'; | ||
@@ -286,23 +286,30 @@ return function (c) { | ||
var zip = (function (mode) { | ||
var zip = (function (colors) { | ||
var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'rgb'; | ||
var channels = getModeDefinition(mode).channels; | ||
return function (colors) { | ||
var res = { | ||
mode: mode | ||
}; | ||
channels.forEach(function (channel) { | ||
res[channel] = colors.map(function (c) { | ||
return c[channel]; | ||
}); | ||
var res = { | ||
mode: mode | ||
}; | ||
var _loop = function _loop(i) { | ||
res[channels[i]] = colors.map(function (c) { | ||
return c[channels[i]]; | ||
}); | ||
return res; | ||
}; | ||
for (var i = 0; i < channels.length; i++) { | ||
_loop(i); | ||
} | ||
return res; | ||
}); | ||
var linear = function linear(a, b, t) { | ||
var interpolateMethodLinear = function interpolateMethodLinear(a, b, t) { | ||
return a + t * (b - a); | ||
}; | ||
var interpolateLinear = function interpolateLinear(arr) { | ||
return function (t) { | ||
var interpolateNumber = function interpolateNumber() { | ||
var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : interpolateMethodLinear; | ||
return function (arr, t) { | ||
var cls = t * (arr.length - 1), | ||
@@ -314,3 +321,3 @@ idx = Math.floor(cls), | ||
if (a !== undefined && b !== undefined) return linear(a, b, t0); | ||
if (a !== undefined && b !== undefined) return method(a, b, t0); | ||
return a === undefined ? b : a; | ||
@@ -320,4 +327,6 @@ }; | ||
var interpolateHue = function interpolateHue(arr) { | ||
return function (t) { | ||
var interpolateHue = function interpolateHue() { | ||
var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : interpolateMethodLinear; | ||
var useShortest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
return function (arr, t) { | ||
var cls = t * (arr.length - 1), | ||
@@ -331,3 +340,3 @@ idx = Math.floor(cls), | ||
a = normalizeHue(a);b = normalizeHue(b); | ||
return Math.abs(b - a) > 180 ? normalizeHue(linear(a, b - 360 * Math.sign(b - a), t0)) : linear(a, b, t0); | ||
return useShortest && Math.abs(b - a) > 180 ? normalizeHue(method(a, b - 360 * Math.sign(b - a), t0)) : method(a, b, t0); | ||
} | ||
@@ -338,4 +347,5 @@ return a === undefined ? b : a; | ||
var interpolateAlpha = function interpolateAlpha(arr) { | ||
return function (t) { | ||
var interpolateAlpha = function interpolateAlpha() { | ||
var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : interpolateMethodLinear; | ||
return function (arr, t) { | ||
var cls = t * (arr.length - 1), | ||
@@ -348,3 +358,3 @@ idx = Math.floor(cls), | ||
if (a === undefined && b === undefined || a === undefined && t0 === 0 || b === undefined && t0 === 1) return undefined; | ||
return linear(a === undefined ? 1 : a, b === undefined ? 1 : b, t0); | ||
return method(a === undefined ? 1 : a, b === undefined ? 1 : b, t0); | ||
}; | ||
@@ -357,8 +367,5 @@ }; | ||
var zipped = zip(mode)(colors.map(converter(mode))); | ||
var zipped = zip(colors.map(converter(mode)), mode); | ||
interpolations = interpolations || getModeDefinition(mode).interpolate; | ||
var mappings = {}; | ||
Object.keys(interpolations).forEach(function (k) { | ||
mappings[k] = interpolations[k](zipped[k]); | ||
}); | ||
var keys = Object.keys(interpolations); | ||
@@ -369,7 +376,7 @@ return function (t) { | ||
val = void 0; | ||
Object.keys(mappings).forEach(function (k) { | ||
if ((val = mappings[k](t)) !== undefined) { | ||
res[k] = val; | ||
for (var i = 0; i < keys.length; i++) { | ||
if ((val = interpolations[keys[i]](zipped[keys[i]], t)) !== undefined) { | ||
res[keys[i]] = val; | ||
} | ||
}); | ||
} | ||
return res; | ||
@@ -547,6 +554,6 @@ }; | ||
interpolate: { | ||
r: interpolateLinear, | ||
g: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
r: interpolateNumber(), | ||
g: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -605,6 +612,6 @@ }; | ||
interpolate: { | ||
r: interpolateLinear, | ||
g: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
r: interpolateNumber(), | ||
g: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -708,6 +715,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
l: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
l: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -778,6 +785,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
v: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
v: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -879,6 +886,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
i: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
i: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -977,6 +984,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
w: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
w: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -1144,6 +1151,6 @@ }; | ||
interpolate: { | ||
l: interpolateLinear, | ||
a: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
l: interpolateNumber(), | ||
a: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -1240,6 +1247,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
c: interpolateLinear, | ||
l: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
c: interpolateNumber(), | ||
l: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -1304,3 +1311,3 @@ }; | ||
lrgb: lrgb, | ||
css: css, | ||
formatter: formatter, | ||
converter: converter, | ||
@@ -1311,5 +1318,6 @@ round: round, | ||
interpolate: interpolate, | ||
interpolateLinear: interpolateLinear, | ||
interpolateNumber: interpolateNumber, | ||
interpolateAlpha: interpolateAlpha, | ||
interpolateHue: interpolateHue, | ||
interpolateMethodLinear: interpolateMethodLinear, | ||
samples: samples, | ||
@@ -1316,0 +1324,0 @@ defineMode: defineMode, |
@@ -1,1 +0,1 @@ | ||
!function(r,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):r.culori=a()}(this,function(){"use strict";var r={},a={},e=[],n=function(n){r[n.mode]=Object.assign(r[n.mode]||{},n.output),Object.keys(n.input||{}).forEach(function(a){r[a]||(r[a]={}),r[a][n.mode]=n.input[a]}),a[n.mode]=n,(n.parsers||[]).forEach(function(r){return e.push(r)})},t=function(r){return a[r]},o=function(r){for(var a=void 0,n=0,t=e.length;n<t&&void 0===(a=e[n++](r)););return a},i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},l=Object.assign||function(r){for(var a=1;a<arguments.length;a++){var e=arguments[a];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n])}return r},h=function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"rgb";return function(e){return void 0!==(e=function(r,a){return"object"!==(void 0===r?"undefined":i(r))?o(r):void 0===r.mode?l({},r,{mode:a}):r}(e,a))?e.mode===a?e:r[e.mode][a]?r[e.mode][a](e):"rgb"===a?r[e.mode].rgb(e):r.rgb[a](r[e.mode].rgb(e)):void 0}},u=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:4;return function(a){return"number"==typeof a?function(r,a){return Math.round(r*(a=Math.pow(10,a)))/a}(a,r):a}},s=h("rgb"),d=u(2),b=function(r){return Math.round(255*Math.max(0,Math.min(r,1)))},g={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},c=function(r){return(r%=360)<0?r+360:r},p=function(r,a,e){return r+e*(a-r)},v=function(r){return function(a){var e=a*(r.length-1),n=Math.floor(e),t=r[n],o=r[n+1];return void 0!==t&&void 0!==o?p(t,o,e-n):void 0===t?o:t}},f=function(r){return function(a){var e=a*(r.length-1),n=Math.floor(e),t=r[n],o=r[n+1],i=e-n;return void 0!==t&&void 0!==o?(t=c(t),o=c(o),Math.abs(o-t)>180?c(p(t,o-360*Math.sign(o-t),i)):p(t,o,i)):void 0===t?o:t}},m=function(r){return function(a){var e=a*(r.length-1),n=Math.floor(e),t=r[n],o=r[n+1],i=e-n;if(!(void 0===t&&void 0===o||void 0===t&&0===i||void 0===o&&1===i))return p(void 0===t?1:t,void 0===o?1:o,i)}},y=function(r,a){if("number"==typeof r)return 3===a?{mode:"rgb",r:(r>>8&15|r>>4&240)/255,g:(r>>4&15|240&r)/255,b:(15&r|r<<4&240)/255}:4===a?{mode:"rgb",r:(r>>12&15|r>>8&240)/255,g:(r>>8&15|r>>4&240)/255,b:(r>>4&15|240&r)/255,alpha:(15&r|r<<4&240)/255}:6===a?{mode:"rgb",r:(r>>16&255)/255,g:(r>>8&255)/255,b:(255&r)/255}:8===a?{mode:"rgb",r:(r>>24&255)/255,g:(r>>16&255)/255,b:(r>>8&255)/255,alpha:(255&r)/255}:void 0},w=(/([+-]?\d*\.?\d+(?:[eE][+-]?\d+)?)/+"").replace(/^\/|\/$/g,""),k=w+"%",M="(?:"+w+"%|"+w+")",x="(?:"+w+"(deg|grad|rad|turn)|"+w+")",E="\\s*,\\s*",$="\\s+",j=new RegExp("^rgba?\\(\\s*"+w+E+w+E+w+"\\s*(?:,\\s*"+M+"\\s*)?\\)$"),q=new RegExp("^rgba?\\(\\s*"+k+E+k+E+k+"\\s*(?:,\\s*"+M+"\\s*)?\\)$"),R=new RegExp("^rgba?\\(\\s*"+w+$+w+$+w+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),O=new RegExp("^rgba?\\(\\s*"+k+$+k+$+k+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),z=new RegExp("^hsla?\\(\\s*"+x+E+k+E+k+"\\s*(?:,\\s*"+M+"\\s*)?\\)$"),S=new RegExp("^hsla?\\(\\s*"+x+$+k+$+k+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),I=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,P=new RegExp("^hwb\\(\\s*"+x+$+k+$+k+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),L=new RegExp("^lab\\(\\s*"+w+$+w+$+w+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),A=new RegExp("^lch\\(\\s*"+w+$+w+$+x+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),C=new RegExp("^gray\\(\\s*"+w+"()()\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),D={mode:"rgb",channels:["r","g","b","alpha"],parsers:[function(r){var a;return(a=r.match(I))?y(parseInt(a[1],16),a[1].length):void 0},function(r){var a=void 0,e=void 0;if(a=r.match(j)||r.match(R))e={mode:"rgb",r:a[1]/255,g:a[2]/255,b:a[3]/255};else{if(!(a=r.match(q)||r.match(O)))return;e={mode:"rgb",r:a[1]/100,g:a[2]/100,b:a[3]/100}}return void 0!==a[4]?e.alpha=a[4]/100:void 0!==a[5]&&(e.alpha=+a[5]),e},function(r){return"string"==typeof r&&y(g[r.toLowerCase()],6)||void 0},function(r){return"transparent"===r?y(0,8):void 0}],interpolate:{r:v,g:v,b:v,alpha:m}},H=function(r){return r<.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)},B=function(r){var a=r.r,e=r.g,n=r.b,t=r.alpha,o={mode:"lrgb",r:H(a),g:H(e),b:H(n)};return void 0!==t&&(o.alpha=t),o},F=function(r){return r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r},G=function(r){var a=r.r,e=r.g,n=r.b,t=r.alpha,o={mode:"rgb",r:F(a),g:F(e),b:F(n)};return void 0!==t&&(o.alpha=t),o},J={mode:"lrgb",output:{rgb:G},input:{rgb:B},channels:["r","g","b","alpha"],interpolate:{r:v,g:v,b:v,alpha:m}};var K=function(r,a){switch(a){case"deg":return+r;case"rad":return r/Math.PI*180;case"grad":return r/10*9;case"turn":return 360*r}},N={mode:"hsl",output:{rgb:function(r){var a=r.h,e=r.s,n=r.l,t=r.alpha;a=c(a);var o=n+e*(n<.5?n:1-n),i=o-2*(o-n)*Math.abs(a/60%2-1),l=void 0;switch(Math.floor(a/60)){case 0:l={r:o,g:i,b:2*n-o};break;case 1:l={r:i,g:o,b:2*n-o};break;case 2:l={r:2*n-o,g:o,b:i};break;case 3:l={r:2*n-o,g:i,b:o};break;case 4:l={r:i,g:2*n-o,b:o};break;case 5:l={r:o,g:2*n-o,b:i};break;default:l={r:2*n-o,g:2*n-o,b:2*n-o}}return l.mode="rgb",void 0!==t&&(l.alpha=t),l}},input:{rgb:function(r){var a=r.r,e=r.g,n=r.b,t=r.alpha,o=Math.max(a,e,n),i=Math.min(a,e,n),l={mode:"hsl",s:o===i?0:(o-i)/(1-Math.abs(o+i-1)),l:.5*(o+i)};return o-i!=0&&(l.h=60*(o===a?(e-n)/(o-i)+6*(e<n):o===e?(n-a)/(o-i)+2:(a-e)/(o-i)+4)),void 0!==t&&(l.alpha=t),l}},channels:["h","s","l","alpha"],parsers:[function(r){if("string"==typeof r){var a=r.match(z)||r.match(S);if(a){var e={mode:"hsl",h:void 0===a[3]?K(a[1],a[2]):+a[3],s:Math.min(Math.max(0,a[4]/100),1),l:Math.min(Math.max(0,a[5]/100),1)};return void 0!==a[6]?e.alpha=a[6]/100:void 0!==a[7]&&(e.alpha=a[7]/255),e}}}],interpolate:{h:f,s:v,l:v,alpha:m}};function Q(r){var a=r.h,e=r.s,n=r.v,t=r.alpha;a=c(a);var o=Math.abs(a/60%2-1),i=void 0;switch(Math.floor(a/60)){case 0:i={r:n,g:n*(1-e*o),b:n*(1-e)};break;case 1:i={r:n*(1-e*o),g:n,b:n*(1-e)};break;case 2:i={r:n*(1-e),g:n,b:n*(1-e*o)};break;case 3:i={r:n*(1-e),g:n*(1-e*o),b:n};break;case 4:i={r:n*(1-e*o),g:n*(1-e),b:n};break;case 5:i={r:n,g:n*(1-e),b:n*(1-e*o)};break;default:i={r:n*(1-e),g:n*(1-e),b:n*(1-e)}}return i.mode="rgb",void 0!==t&&(i.alpha=t),i}function T(r){var a=r.r,e=r.g,n=r.b,t=r.alpha,o=Math.max(a,e,n),i=Math.min(a,e,n),l={mode:"hsv",s:0===o?0:1-i/o,v:o};return o-i!=0&&(l.h=60*(o===a?(e-n)/(o-i)+6*(e<n):o===e?(n-a)/(o-i)+2:(a-e)/(o-i)+4)),void 0!==t&&(l.alpha=t),l}var U={mode:"hsv",output:{rgb:Q},input:{rgb:T},channels:["h","s","v","alpha"],interpolate:{h:f,s:v,v:v,alpha:m}};var V={mode:"hsi",output:{rgb:function(r){var a=r.h,e=r.s,n=r.i,t=r.alpha;a=c(a);var o=Math.abs(a/60%2-1),i=void 0;switch(Math.floor(a/60)){case 0:i={r:n*(1+e*(3/(2-o)-1)),g:n*(1+e*(3*(1-o)/(2-o)-1)),b:n*(1-e)};break;case 1:i={r:n*(1+e*(3*(1-o)/(2-o)-1)),g:n*(1+e*(3/(2-o)-1)),b:n*(1-e)};break;case 2:i={r:n*(1-e),g:n*(1+e*(3/(2-o)-1)),b:n*(1+e*(3*(1-o)/(2-o)-1))};break;case 3:i={r:n*(1-e),g:n*(1+e*(3*(1-o)/(2-o)-1)),b:n*(1+e*(3/(2-o)-1))};break;case 4:i={r:n*(1+e*(3*(1-o)/(2-o)-1)),g:n*(1-e),b:n*(1+e*(3/(2-o)-1))};break;case 5:i={r:n*(1+e*(3/(2-o)-1)),g:n*(1-e),b:n*(1+e*(3*(1-o)/(2-o)-1))};break;default:i={r:n*(1-e),g:n*(1-e),b:n*(1-e)}}return i.mode="rgb",void 0!==t&&(i.alpha=t),i}},input:{rgb:function(r){var a=r.r,e=r.g,n=r.b,t=r.alpha,o=Math.max(a,e,n),i=Math.min(a,e,n),l={mode:"hsi",s:a+e+n===0?0:1-3*i/(a+e+n),i:(a+e+n)/3};return o-i!=0&&(l.h=60*(o===a?(e-n)/(o-i)+6*(e<n):o===e?(n-a)/(o-i)+2:(a-e)/(o-i)+4)),void 0!==t&&(l.alpha=t),l}},channels:["h","s","i","alpha"],interpolate:{h:f,s:v,i:v,alpha:m}};var W={mode:"hwb",output:{rgb:function(r){var a=r.h,e=r.w,n=r.b,t=r.alpha;if(e+n>1){var o=e+n;e/=o,n/=o}return Q({h:a,s:1===n?1:1-e/(1-n),v:1-n,alpha:t})}},input:{rgb:function(r){var a=T(r);if(void 0!==a){var e={mode:"hwb",w:(1-a.s)*a.v,b:1-a.v};return void 0!==a.h&&(e.h=a.h),void 0!==a.alpha&&(e.alpha=a.alpha),e}}},channels:["h","w","b","alpha"],parsers:[function(r){if("string"==typeof r){var a=r.match(P);if(a){var e={mode:"hwb",h:void 0===a[3]?K(a[1],a[2]):+a[3],w:a[4]/100,b:a[5]/100};if(e.w+e.b>1){var n=e.w+e.b;e.w/=n,e.b/=n}return void 0!==a[6]?e.alpha=a[6]/100:void 0!==a[7]&&(e.alpha=a[7]/255),e}}}],interpolate:{h:f,w:v,b:v,alpha:m}},X=Math.pow(29,3)/Math.pow(3,3),Y=Math.pow(6,3)/Math.pow(29,3),Z=function(r){return Math.pow(r,3)>Y?Math.pow(r,3):(116*r-16)/X},_=function(r){var a,e,n,t,o,i=function(r){var a=r.x,e=r.y,n=r.z;return G({r:3.1338561*a-1.6168667*e-.4906146*n,g:-.9787684*a+1.9161415*e+.033454*n,b:.0719453*a-.2289914*e+1.4052427*n})}((e=(a=r).l,n=a.a,o=(t=(e+16)/116)-a.b/200,{x:.96422*Z(n/500+t),y:1*Z(t),z:.82521*Z(o)}));return i.mode="rgb",void 0!==r.alpha&&(i.alpha=r.alpha),i},rr=function(r){return r>Y?Math.cbrt(r):(X*r+16)/116},ar=function(r){var a,e,n,t,o,i,l=(a=function(r){var a=B(r),e=a.r,n=a.g,t=a.b;return{x:.4360747*e+.3850649*n+.1430804*t,y:.2225045*e+.7168786*n+.0606169*t,z:.0139322*e+.0971045*n+.7141733*t}}(r),e=a.x,n=a.y,t=a.z,o=rr(e/.96422),{mode:"lab",l:116*(i=rr(n/1))-16,a:500*(o-i),b:200*(i-rr(t/.82521))});return r.r===r.b===r.g&&(l.a=l.b=0),void 0!==r.alpha&&(l.alpha=r.alpha),l},er={mode:"lab",output:{rgb:_},input:{rgb:ar},channels:["l","a","b","alpha"],parsers:[function(r){var a=void 0,e=void 0;if(a=r.match(L))e={mode:"lab",l:+a[1],a:+a[2],b:+a[3]};else{if(!(a=r.match(C)))return;e={mode:"lab",l:+a[1],a:0,b:0}}return void 0!==a[4]?e.alpha=a[4]/100:void 0!==a[5]&&(e.alpha=+a[5]),e}],interpolate:{l:v,a:v,b:v,alpha:m}},nr=function(r){var a=r.l,e=r.a,n=r.b,t=r.alpha,o=Math.sqrt(e*e+n*n),i={mode:"lch",l:a,c:o};return o&&(i.h=c(180*Math.atan2(n,e)/Math.PI)),void 0!==t&&(i.alpha=t),i},tr=function(r){var a=r.l,e=r.c,n=r.h,t=r.alpha,o={mode:"lab",l:a,a:0===e?0:e*Math.cos(n/180*Math.PI),b:0===e?0:e*Math.sin(n/180*Math.PI)};return void 0!==t&&(o.alpha=t),o},or={mode:"lch",output:{lab:tr,rgb:function(r){return _(tr(r))}},input:{rgb:function(r){return nr(ar(r))},lch:nr},channels:["l","c","h","alpha"],parsers:[function(r){var a=r.match(A);if(a){var e={mode:"lch",l:+a[1],c:Math.max(0,+a[2]),h:void 0===a[5]?K(a[3],a[4]):+a[5]};return void 0!==a[6]?e.alpha=a[6]/100:void 0!==a[7]&&(e.alpha=+a[7]),e}}],interpolate:{h:f,c:v,l:v,alpha:m}};n(D),n(J),n(N),n(U),n(V),n(W),n(er),n(or);var ir=h("rgb"),lr=h("lrgb"),hr=h("hsl"),ur=h("hsv"),sr=h("hsi"),dr=h("hwb"),br=h("lab"),gr=h("lch"),cr=ir,pr=Object.freeze({hsl:hr,hsv:ur,hsi:sr,hwb:dr,rgb:ir,lab:br,lch:gr,lrgb:lr,css:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"rgb";return function(a){var e=s(a);return e.r=b(e.r),e.b=b(e.b),e.g=b(e.g),"hex"===r?"#"+(1<<24|e.r<<16|e.g<<8|e.b).toString(16).slice(1):"rgb"===r?void 0===a.alpha||1===a.alpha?"rgb("+e.r+", "+e.g+", "+e.b+")":"rgba("+e.r+", "+e.g+", "+e.b+", "+d(e.alpha)+")":void 0}},converter:h,round:u,parse:o,named:g,interpolate:function(r){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"rgb",e=arguments[2],n=function(r){var a=t(r).channels;return function(e){var n={mode:r};return a.forEach(function(r){n[r]=e.map(function(a){return a[r]})}),n}}(a)(r.map(h(a)));e=e||t(a).interpolate;var o={};return Object.keys(e).forEach(function(r){o[r]=e[r](n[r])}),function(r){r=Math.min(Math.max(0,r),1);var e={mode:a},n=void 0;return Object.keys(o).forEach(function(a){void 0!==(n=o[a](r))&&(e[a]=n)}),e}},interpolateLinear:v,interpolateAlpha:m,interpolateHue:f,samples:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2;if(r<2)return r<1?[]:[.5];for(var a=[],e=0;e<r;e++)a.push(e/(r-1));return a},defineMode:n,getModeDefinition:t,default:cr});return Object.assign(cr,pr),cr}); | ||
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):r.culori=e()}(this,function(){"use strict";var r={},e={},a=[],t=function(t){r[t.mode]=Object.assign(r[t.mode]||{},t.output),Object.keys(t.input||{}).forEach(function(e){r[e]||(r[e]={}),r[e][t.mode]=t.input[e]}),e[t.mode]=t,(t.parsers||[]).forEach(function(r){return a.push(r)})},n=function(r){return e[r]},o=function(r){for(var e=void 0,t=0,n=a.length;t<n&&void 0===(e=a[t++](r)););return e},i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},l=Object.assign||function(r){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var t in a)Object.prototype.hasOwnProperty.call(a,t)&&(r[t]=a[t])}return r},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"rgb";return function(a){return void 0!==(a=function(r,e){return"object"!==(void 0===r?"undefined":i(r))?o(r):void 0===r.mode?l({},r,{mode:e}):r}(a,e))?a.mode===e?a:r[a.mode][e]?r[a.mode][e](a):"rgb"===e?r[a.mode].rgb(a):r.rgb[e](r[a.mode].rgb(a)):void 0}},u=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:4;return function(e){return"number"==typeof e?function(r,e){return Math.round(r*(e=Math.pow(10,e)))/e}(e,r):e}},d=h("rgb"),s=u(2),b=function(r){return Math.round(255*Math.max(0,Math.min(r,1)))},g={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},c=function(r){return(r%=360)<0?r+360:r},p=function(r,e,a){return r+a*(e-r)},v=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p;return function(e,a){var t=a*(e.length-1),n=Math.floor(t),o=e[n],i=e[n+1];return void 0!==o&&void 0!==i?r(o,i,t-n):void 0===o?i:o}},f=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return function(a,t){var n=t*(a.length-1),o=Math.floor(n),i=a[o],l=a[o+1],h=n-o;return void 0!==i&&void 0!==l?(i=c(i),l=c(l),e&&Math.abs(l-i)>180?c(r(i,l-360*Math.sign(l-i),h)):r(i,l,h)):void 0===i?l:i}},m=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p;return function(e,a){var t=a*(e.length-1),n=Math.floor(t),o=e[n],i=e[n+1],l=t-n;if(!(void 0===o&&void 0===i||void 0===o&&0===l||void 0===i&&1===l))return r(void 0===o?1:o,void 0===i?1:i,l)}},y=function(r,e){if("number"==typeof r)return 3===e?{mode:"rgb",r:(r>>8&15|r>>4&240)/255,g:(r>>4&15|240&r)/255,b:(15&r|r<<4&240)/255}:4===e?{mode:"rgb",r:(r>>12&15|r>>8&240)/255,g:(r>>8&15|r>>4&240)/255,b:(r>>4&15|240&r)/255,alpha:(15&r|r<<4&240)/255}:6===e?{mode:"rgb",r:(r>>16&255)/255,g:(r>>8&255)/255,b:(255&r)/255}:8===e?{mode:"rgb",r:(r>>24&255)/255,g:(r>>16&255)/255,b:(r>>8&255)/255,alpha:(255&r)/255}:void 0},w=(/([+-]?\d*\.?\d+(?:[eE][+-]?\d+)?)/+"").replace(/^\/|\/$/g,""),k=w+"%",M="(?:"+w+"%|"+w+")",x="(?:"+w+"(deg|grad|rad|turn)|"+w+")",E="\\s*,\\s*",$="\\s+",j=new RegExp("^rgba?\\(\\s*"+w+E+w+E+w+"\\s*(?:,\\s*"+M+"\\s*)?\\)$"),q=new RegExp("^rgba?\\(\\s*"+k+E+k+E+k+"\\s*(?:,\\s*"+M+"\\s*)?\\)$"),R=new RegExp("^rgba?\\(\\s*"+w+$+w+$+w+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),O=new RegExp("^rgba?\\(\\s*"+k+$+k+$+k+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),z=new RegExp("^hsla?\\(\\s*"+x+E+k+E+k+"\\s*(?:,\\s*"+M+"\\s*)?\\)$"),S=new RegExp("^hsla?\\(\\s*"+x+$+k+$+k+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),I=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,P=new RegExp("^hwb\\(\\s*"+x+$+k+$+k+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),L=new RegExp("^lab\\(\\s*"+w+$+w+$+w+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),A=new RegExp("^lch\\(\\s*"+w+$+w+$+x+"\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),C=new RegExp("^gray\\(\\s*"+w+"()()\\s*(?:\\/\\s*"+M+"\\s*)?\\)$"),D={mode:"rgb",channels:["r","g","b","alpha"],parsers:[function(r){var e;return(e=r.match(I))?y(parseInt(e[1],16),e[1].length):void 0},function(r){var e=void 0,a=void 0;if(e=r.match(j)||r.match(R))a={mode:"rgb",r:e[1]/255,g:e[2]/255,b:e[3]/255};else{if(!(e=r.match(q)||r.match(O)))return;a={mode:"rgb",r:e[1]/100,g:e[2]/100,b:e[3]/100}}return void 0!==e[4]?a.alpha=e[4]/100:void 0!==e[5]&&(a.alpha=+e[5]),a},function(r){return"string"==typeof r&&y(g[r.toLowerCase()],6)||void 0},function(r){return"transparent"===r?y(0,8):void 0}],interpolate:{r:v(),g:v(),b:v(),alpha:m()}},H=function(r){return r<.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)},N=function(r){var e=r.r,a=r.g,t=r.b,n=r.alpha,o={mode:"lrgb",r:H(e),g:H(a),b:H(t)};return void 0!==n&&(o.alpha=n),o},B=function(r){return r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r},F=function(r){var e=r.r,a=r.g,t=r.b,n=r.alpha,o={mode:"rgb",r:B(e),g:B(a),b:B(t)};return void 0!==n&&(o.alpha=n),o},G={mode:"lrgb",output:{rgb:F},input:{rgb:N},channels:["r","g","b","alpha"],interpolate:{r:v(),g:v(),b:v(),alpha:m()}};var J=function(r,e){switch(e){case"deg":return+r;case"rad":return r/Math.PI*180;case"grad":return r/10*9;case"turn":return 360*r}},K={mode:"hsl",output:{rgb:function(r){var e=r.h,a=r.s,t=r.l,n=r.alpha;e=c(e);var o=t+a*(t<.5?t:1-t),i=o-2*(o-t)*Math.abs(e/60%2-1),l=void 0;switch(Math.floor(e/60)){case 0:l={r:o,g:i,b:2*t-o};break;case 1:l={r:i,g:o,b:2*t-o};break;case 2:l={r:2*t-o,g:o,b:i};break;case 3:l={r:2*t-o,g:i,b:o};break;case 4:l={r:i,g:2*t-o,b:o};break;case 5:l={r:o,g:2*t-o,b:i};break;default:l={r:2*t-o,g:2*t-o,b:2*t-o}}return l.mode="rgb",void 0!==n&&(l.alpha=n),l}},input:{rgb:function(r){var e=r.r,a=r.g,t=r.b,n=r.alpha,o=Math.max(e,a,t),i=Math.min(e,a,t),l={mode:"hsl",s:o===i?0:(o-i)/(1-Math.abs(o+i-1)),l:.5*(o+i)};return o-i!=0&&(l.h=60*(o===e?(a-t)/(o-i)+6*(a<t):o===a?(t-e)/(o-i)+2:(e-a)/(o-i)+4)),void 0!==n&&(l.alpha=n),l}},channels:["h","s","l","alpha"],parsers:[function(r){if("string"==typeof r){var e=r.match(z)||r.match(S);if(e){var a={mode:"hsl",h:void 0===e[3]?J(e[1],e[2]):+e[3],s:Math.min(Math.max(0,e[4]/100),1),l:Math.min(Math.max(0,e[5]/100),1)};return void 0!==e[6]?a.alpha=e[6]/100:void 0!==e[7]&&(a.alpha=e[7]/255),a}}}],interpolate:{h:f(),s:v(),l:v(),alpha:m()}};function Q(r){var e=r.h,a=r.s,t=r.v,n=r.alpha;e=c(e);var o=Math.abs(e/60%2-1),i=void 0;switch(Math.floor(e/60)){case 0:i={r:t,g:t*(1-a*o),b:t*(1-a)};break;case 1:i={r:t*(1-a*o),g:t,b:t*(1-a)};break;case 2:i={r:t*(1-a),g:t,b:t*(1-a*o)};break;case 3:i={r:t*(1-a),g:t*(1-a*o),b:t};break;case 4:i={r:t*(1-a*o),g:t*(1-a),b:t};break;case 5:i={r:t,g:t*(1-a),b:t*(1-a*o)};break;default:i={r:t*(1-a),g:t*(1-a),b:t*(1-a)}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}function T(r){var e=r.r,a=r.g,t=r.b,n=r.alpha,o=Math.max(e,a,t),i=Math.min(e,a,t),l={mode:"hsv",s:0===o?0:1-i/o,v:o};return o-i!=0&&(l.h=60*(o===e?(a-t)/(o-i)+6*(a<t):o===a?(t-e)/(o-i)+2:(e-a)/(o-i)+4)),void 0!==n&&(l.alpha=n),l}var U={mode:"hsv",output:{rgb:Q},input:{rgb:T},channels:["h","s","v","alpha"],interpolate:{h:f(),s:v(),v:v(),alpha:m()}};var V={mode:"hsi",output:{rgb:function(r){var e=r.h,a=r.s,t=r.i,n=r.alpha;e=c(e);var o=Math.abs(e/60%2-1),i=void 0;switch(Math.floor(e/60)){case 0:i={r:t*(1+a*(3/(2-o)-1)),g:t*(1+a*(3*(1-o)/(2-o)-1)),b:t*(1-a)};break;case 1:i={r:t*(1+a*(3*(1-o)/(2-o)-1)),g:t*(1+a*(3/(2-o)-1)),b:t*(1-a)};break;case 2:i={r:t*(1-a),g:t*(1+a*(3/(2-o)-1)),b:t*(1+a*(3*(1-o)/(2-o)-1))};break;case 3:i={r:t*(1-a),g:t*(1+a*(3*(1-o)/(2-o)-1)),b:t*(1+a*(3/(2-o)-1))};break;case 4:i={r:t*(1+a*(3*(1-o)/(2-o)-1)),g:t*(1-a),b:t*(1+a*(3/(2-o)-1))};break;case 5:i={r:t*(1+a*(3/(2-o)-1)),g:t*(1-a),b:t*(1+a*(3*(1-o)/(2-o)-1))};break;default:i={r:t*(1-a),g:t*(1-a),b:t*(1-a)}}return i.mode="rgb",void 0!==n&&(i.alpha=n),i}},input:{rgb:function(r){var e=r.r,a=r.g,t=r.b,n=r.alpha,o=Math.max(e,a,t),i=Math.min(e,a,t),l={mode:"hsi",s:e+a+t===0?0:1-3*i/(e+a+t),i:(e+a+t)/3};return o-i!=0&&(l.h=60*(o===e?(a-t)/(o-i)+6*(a<t):o===a?(t-e)/(o-i)+2:(e-a)/(o-i)+4)),void 0!==n&&(l.alpha=n),l}},channels:["h","s","i","alpha"],interpolate:{h:f(),s:v(),i:v(),alpha:m()}};var W={mode:"hwb",output:{rgb:function(r){var e=r.h,a=r.w,t=r.b,n=r.alpha;if(a+t>1){var o=a+t;a/=o,t/=o}return Q({h:e,s:1===t?1:1-a/(1-t),v:1-t,alpha:n})}},input:{rgb:function(r){var e=T(r);if(void 0!==e){var a={mode:"hwb",w:(1-e.s)*e.v,b:1-e.v};return void 0!==e.h&&(a.h=e.h),void 0!==e.alpha&&(a.alpha=e.alpha),a}}},channels:["h","w","b","alpha"],parsers:[function(r){if("string"==typeof r){var e=r.match(P);if(e){var a={mode:"hwb",h:void 0===e[3]?J(e[1],e[2]):+e[3],w:e[4]/100,b:e[5]/100};if(a.w+a.b>1){var t=a.w+a.b;a.w/=t,a.b/=t}return void 0!==e[6]?a.alpha=e[6]/100:void 0!==e[7]&&(a.alpha=e[7]/255),a}}}],interpolate:{h:f(),w:v(),b:v(),alpha:m()}},X=Math.pow(29,3)/Math.pow(3,3),Y=Math.pow(6,3)/Math.pow(29,3),Z=function(r){return Math.pow(r,3)>Y?Math.pow(r,3):(116*r-16)/X},_=function(r){var e,a,t,n,o,i=function(r){var e=r.x,a=r.y,t=r.z;return F({r:3.1338561*e-1.6168667*a-.4906146*t,g:-.9787684*e+1.9161415*a+.033454*t,b:.0719453*e-.2289914*a+1.4052427*t})}((a=(e=r).l,t=e.a,o=(n=(a+16)/116)-e.b/200,{x:.96422*Z(t/500+n),y:1*Z(n),z:.82521*Z(o)}));return i.mode="rgb",void 0!==r.alpha&&(i.alpha=r.alpha),i},rr=function(r){return r>Y?Math.cbrt(r):(X*r+16)/116},er=function(r){var e,a,t,n,o,i,l=(e=function(r){var e=N(r),a=e.r,t=e.g,n=e.b;return{x:.4360747*a+.3850649*t+.1430804*n,y:.2225045*a+.7168786*t+.0606169*n,z:.0139322*a+.0971045*t+.7141733*n}}(r),a=e.x,t=e.y,n=e.z,o=rr(a/.96422),{mode:"lab",l:116*(i=rr(t/1))-16,a:500*(o-i),b:200*(i-rr(n/.82521))});return r.r===r.b===r.g&&(l.a=l.b=0),void 0!==r.alpha&&(l.alpha=r.alpha),l},ar={mode:"lab",output:{rgb:_},input:{rgb:er},channels:["l","a","b","alpha"],parsers:[function(r){var e=void 0,a=void 0;if(e=r.match(L))a={mode:"lab",l:+e[1],a:+e[2],b:+e[3]};else{if(!(e=r.match(C)))return;a={mode:"lab",l:+e[1],a:0,b:0}}return void 0!==e[4]?a.alpha=e[4]/100:void 0!==e[5]&&(a.alpha=+e[5]),a}],interpolate:{l:v(),a:v(),b:v(),alpha:m()}},tr=function(r){var e=r.l,a=r.a,t=r.b,n=r.alpha,o=Math.sqrt(a*a+t*t),i={mode:"lch",l:e,c:o};return o&&(i.h=c(180*Math.atan2(t,a)/Math.PI)),void 0!==n&&(i.alpha=n),i},nr=function(r){var e=r.l,a=r.c,t=r.h,n=r.alpha,o={mode:"lab",l:e,a:0===a?0:a*Math.cos(t/180*Math.PI),b:0===a?0:a*Math.sin(t/180*Math.PI)};return void 0!==n&&(o.alpha=n),o},or={mode:"lch",output:{lab:nr,rgb:function(r){return _(nr(r))}},input:{rgb:function(r){return tr(er(r))},lch:tr},channels:["l","c","h","alpha"],parsers:[function(r){var e=r.match(A);if(e){var a={mode:"lch",l:+e[1],c:Math.max(0,+e[2]),h:void 0===e[5]?J(e[3],e[4]):+e[5]};return void 0!==e[6]?a.alpha=e[6]/100:void 0!==e[7]&&(a.alpha=+e[7]),a}}],interpolate:{h:f(),c:v(),l:v(),alpha:m()}};t(D),t(G),t(K),t(U),t(V),t(W),t(ar),t(or);var ir=h("rgb"),lr=h("lrgb"),hr=h("hsl"),ur=h("hsv"),dr=h("hsi"),sr=h("hwb"),br=h("lab"),gr=h("lch"),cr=ir,pr=Object.freeze({hsl:hr,hsv:ur,hsi:dr,hwb:sr,rgb:ir,lab:br,lch:gr,lrgb:lr,formatter:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"rgb";return function(e){var a=d(e);return a.r=b(a.r),a.b=b(a.b),a.g=b(a.g),"hex"===r?"#"+(1<<24|a.r<<16|a.g<<8|a.b).toString(16).slice(1):"rgb"===r?void 0===e.alpha||1===e.alpha?"rgb("+a.r+", "+a.g+", "+a.b+")":"rgba("+a.r+", "+a.g+", "+a.b+", "+s(a.alpha)+")":void 0}},converter:h,round:u,parse:o,named:g,interpolate:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"rgb",a=arguments[2],t=function(r){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"rgb",a=n(e).channels,t={mode:e},o=function(e){t[a[e]]=r.map(function(r){return r[a[e]]})},i=0;i<a.length;i++)o(i);return t}(r.map(h(e)),e);a=a||n(e).interpolate;var o=Object.keys(a);return function(r){r=Math.min(Math.max(0,r),1);for(var n={mode:e},i=void 0,l=0;l<o.length;l++)void 0!==(i=a[o[l]](t[o[l]],r))&&(n[o[l]]=i);return n}},interpolateNumber:v,interpolateAlpha:m,interpolateHue:f,interpolateMethodLinear:p,samples:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2;if(r<2)return r<1?[]:[.5];for(var e=[],a=0;a<r;a++)e.push(a/(r-1));return e},defineMode:t,getModeDefinition:n,default:cr});return Object.assign(cr,pr),cr}); |
@@ -99,3 +99,3 @@ var converters = {}; | ||
var css = (function () { | ||
var formatter = (function () { | ||
var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'rgb'; | ||
@@ -280,23 +280,30 @@ return function (c) { | ||
var zip = (function (mode) { | ||
var zip = (function (colors) { | ||
var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'rgb'; | ||
var channels = getModeDefinition(mode).channels; | ||
return function (colors) { | ||
var res = { | ||
mode: mode | ||
}; | ||
channels.forEach(function (channel) { | ||
res[channel] = colors.map(function (c) { | ||
return c[channel]; | ||
}); | ||
var res = { | ||
mode: mode | ||
}; | ||
var _loop = function _loop(i) { | ||
res[channels[i]] = colors.map(function (c) { | ||
return c[channels[i]]; | ||
}); | ||
return res; | ||
}; | ||
for (var i = 0; i < channels.length; i++) { | ||
_loop(i); | ||
} | ||
return res; | ||
}); | ||
var linear = function linear(a, b, t) { | ||
var interpolateMethodLinear = function interpolateMethodLinear(a, b, t) { | ||
return a + t * (b - a); | ||
}; | ||
var interpolateLinear = function interpolateLinear(arr) { | ||
return function (t) { | ||
var interpolateNumber = function interpolateNumber() { | ||
var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : interpolateMethodLinear; | ||
return function (arr, t) { | ||
var cls = t * (arr.length - 1), | ||
@@ -308,3 +315,3 @@ idx = Math.floor(cls), | ||
if (a !== undefined && b !== undefined) return linear(a, b, t0); | ||
if (a !== undefined && b !== undefined) return method(a, b, t0); | ||
return a === undefined ? b : a; | ||
@@ -314,4 +321,6 @@ }; | ||
var interpolateHue = function interpolateHue(arr) { | ||
return function (t) { | ||
var interpolateHue = function interpolateHue() { | ||
var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : interpolateMethodLinear; | ||
var useShortest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; | ||
return function (arr, t) { | ||
var cls = t * (arr.length - 1), | ||
@@ -325,3 +334,3 @@ idx = Math.floor(cls), | ||
a = normalizeHue(a);b = normalizeHue(b); | ||
return Math.abs(b - a) > 180 ? normalizeHue(linear(a, b - 360 * Math.sign(b - a), t0)) : linear(a, b, t0); | ||
return useShortest && Math.abs(b - a) > 180 ? normalizeHue(method(a, b - 360 * Math.sign(b - a), t0)) : method(a, b, t0); | ||
} | ||
@@ -332,4 +341,5 @@ return a === undefined ? b : a; | ||
var interpolateAlpha = function interpolateAlpha(arr) { | ||
return function (t) { | ||
var interpolateAlpha = function interpolateAlpha() { | ||
var method = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : interpolateMethodLinear; | ||
return function (arr, t) { | ||
var cls = t * (arr.length - 1), | ||
@@ -342,3 +352,3 @@ idx = Math.floor(cls), | ||
if (a === undefined && b === undefined || a === undefined && t0 === 0 || b === undefined && t0 === 1) return undefined; | ||
return linear(a === undefined ? 1 : a, b === undefined ? 1 : b, t0); | ||
return method(a === undefined ? 1 : a, b === undefined ? 1 : b, t0); | ||
}; | ||
@@ -351,8 +361,5 @@ }; | ||
var zipped = zip(mode)(colors.map(converter(mode))); | ||
var zipped = zip(colors.map(converter(mode)), mode); | ||
interpolations = interpolations || getModeDefinition(mode).interpolate; | ||
var mappings = {}; | ||
Object.keys(interpolations).forEach(function (k) { | ||
mappings[k] = interpolations[k](zipped[k]); | ||
}); | ||
var keys = Object.keys(interpolations); | ||
@@ -363,7 +370,7 @@ return function (t) { | ||
val = void 0; | ||
Object.keys(mappings).forEach(function (k) { | ||
if ((val = mappings[k](t)) !== undefined) { | ||
res[k] = val; | ||
for (var i = 0; i < keys.length; i++) { | ||
if ((val = interpolations[keys[i]](zipped[keys[i]], t)) !== undefined) { | ||
res[keys[i]] = val; | ||
} | ||
}); | ||
} | ||
return res; | ||
@@ -541,6 +548,6 @@ }; | ||
interpolate: { | ||
r: interpolateLinear, | ||
g: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
r: interpolateNumber(), | ||
g: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -599,6 +606,6 @@ }; | ||
interpolate: { | ||
r: interpolateLinear, | ||
g: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
r: interpolateNumber(), | ||
g: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -702,6 +709,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
l: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
l: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -772,6 +779,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
v: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
v: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -873,6 +880,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
i: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
i: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -971,6 +978,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
w: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
w: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -1138,6 +1145,6 @@ }; | ||
interpolate: { | ||
l: interpolateLinear, | ||
a: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
l: interpolateNumber(), | ||
a: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -1234,6 +1241,6 @@ }; | ||
interpolate: { | ||
h: interpolateHue, | ||
c: interpolateLinear, | ||
l: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
c: interpolateNumber(), | ||
l: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -1290,2 +1297,2 @@ }; | ||
export default culori; | ||
export { hsl, hsv, hsi, hwb$1 as hwb, rgb$1 as rgb, lab$1 as lab, lch$1 as lch, lrgb, css, converter, round, parse, named, interpolate, interpolateLinear, interpolateAlpha, interpolateHue, samples, defineMode, getModeDefinition }; | ||
export { hsl, hsv, hsi, hwb$1 as hwb, rgb$1 as rgb, lab$1 as lab, lch$1 as lch, lrgb, formatter, converter, round, parse, named, interpolate, interpolateNumber, interpolateAlpha, interpolateHue, interpolateMethodLinear, samples, defineMode, getModeDefinition }; |
{ | ||
"name": "culori", | ||
"version": "0.2.67", | ||
"version": "0.2.68", | ||
"main": "build/culori.js", | ||
@@ -5,0 +5,0 @@ "module": "build/index.js", |
import convertHsiToRgb from './convertHsiToRgb'; | ||
import convertRgbToHsi from './convertRgbToHsi'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -15,7 +15,7 @@ export default { | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
i: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
i: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
} |
import convertHslToRgb from './convertHslToRgb'; | ||
import convertRgbToHsl from './convertRgbToHsl'; | ||
import parseHsl from './parseHsl'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -17,7 +17,7 @@ export default { | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
l: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
l: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
}; |
import convertHsvToRgb from './convertHsvToRgb'; | ||
import convertRgbToHsv from './convertRgbToHsv'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -15,7 +15,7 @@ export default { | ||
interpolate: { | ||
h: interpolateHue, | ||
s: interpolateLinear, | ||
v: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
s: interpolateNumber(), | ||
v: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
}; |
import convertHwbToRgb from './convertHwbToRgb'; | ||
import convertRgbToHwb from './convertRgbToHwb'; | ||
import parseHwb from './parseHwb'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -17,7 +17,7 @@ export default { | ||
interpolate: { | ||
h: interpolateHue, | ||
w: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
w: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
}; |
@@ -1,6 +0,11 @@ | ||
import css from './css'; | ||
import formatter from './formatter'; | ||
import round from './round'; | ||
import converter from './converter'; | ||
import named from './colors/named'; | ||
import interpolate, { interpolateLinear, interpolateAlpha, interpolateHue } from './interpolate'; | ||
import interpolate, { | ||
interpolateNumber, | ||
interpolateAlpha, | ||
interpolateHue, | ||
interpolateMethodLinear | ||
} from './interpolate'; | ||
import samples from './samples'; | ||
@@ -51,3 +56,3 @@ import zip from './zip'; | ||
lrgb, | ||
css, | ||
formatter, | ||
converter, | ||
@@ -58,5 +63,6 @@ round, | ||
interpolate, | ||
interpolateLinear, | ||
interpolateNumber, | ||
interpolateAlpha, | ||
interpolateHue, | ||
interpolateMethodLinear, | ||
samples, | ||
@@ -63,0 +69,0 @@ |
@@ -6,56 +6,53 @@ import converter from './converter'; | ||
const linear = (a, b, t) => a + t * (b - a); | ||
const interpolateMethodLinear = (a, b, t) => a + t * (b - a); | ||
const interpolateLinear = arr => | ||
t => { | ||
let cls = t * (arr.length - 1), | ||
idx = Math.floor(cls), | ||
a = arr[idx], | ||
b = arr[idx + 1], | ||
t0 = cls - idx; | ||
const interpolateNumber = (method = interpolateMethodLinear) => | ||
(arr, t) => { | ||
let cls = t * (arr.length - 1), | ||
idx = Math.floor(cls), | ||
a = arr[idx], | ||
b = arr[idx + 1], | ||
t0 = cls - idx; | ||
if (a !== undefined && b !== undefined) return linear(a, b, t0); | ||
return a === undefined ? b : a; | ||
}; | ||
if (a !== undefined && b !== undefined) return method(a, b, t0); | ||
return a === undefined ? b : a; | ||
}; | ||
const interpolateHue = arr => | ||
t => { | ||
let cls = t * (arr.length - 1), | ||
idx = Math.floor(cls), | ||
a = arr[idx], | ||
b = arr[idx + 1], | ||
t0 = cls - idx; | ||
const interpolateHue = (method = interpolateMethodLinear, useShortest = true) => | ||
(arr, t) => { | ||
let cls = t * (arr.length - 1), | ||
idx = Math.floor(cls), | ||
a = arr[idx], | ||
b = arr[idx + 1], | ||
t0 = cls - idx; | ||
if (a !== undefined && b !== undefined) { | ||
a = normalizeHue(a); b = normalizeHue(b); | ||
return Math.abs(b - a) > 180 ? | ||
normalizeHue(linear(a, b - 360 * Math.sign(b - a), t0)) | ||
: linear(a, b, t0); | ||
} | ||
return a === undefined ? b : a; | ||
} | ||
if (a !== undefined && b !== undefined) { | ||
a = normalizeHue(a); b = normalizeHue(b); | ||
return useShortest && Math.abs(b - a) > 180 ? | ||
normalizeHue(method(a, b - 360 * Math.sign(b - a), t0)) | ||
: method(a, b, t0); | ||
} | ||
return a === undefined ? b : a; | ||
}; | ||
const interpolateAlpha = arr => | ||
t => { | ||
let cls = t * (arr.length - 1), | ||
idx = Math.floor(cls), | ||
a = arr[idx], | ||
b = arr[idx + 1], | ||
t0 = cls - idx; | ||
const interpolateAlpha = (method = interpolateMethodLinear) => | ||
(arr, t) => { | ||
let cls = t * (arr.length - 1), | ||
idx = Math.floor(cls), | ||
a = arr[idx], | ||
b = arr[idx + 1], | ||
t0 = cls - idx; | ||
if ( | ||
(a === undefined && b === undefined) || | ||
(a === undefined && t0 === 0) || | ||
(b === undefined && t0 === 1) | ||
) return undefined; | ||
return linear(a === undefined ? 1 : a, b === undefined ? 1: b, t0); | ||
} | ||
if ( | ||
(a === undefined && b === undefined) || | ||
(a === undefined && t0 === 0) || | ||
(b === undefined && t0 === 1) | ||
) return undefined; | ||
return method(a === undefined ? 1 : a, b === undefined ? 1: b, t0); | ||
}; | ||
const interpolate = (colors, mode = 'rgb', interpolations) => { | ||
let zipped = zip(mode)(colors.map(converter(mode))); | ||
let zipped = zip(colors.map(converter(mode)), mode); | ||
interpolations = interpolations || getModeDefinition(mode).interpolate; | ||
let mappings = {}; | ||
Object.keys(interpolations).forEach(k => { | ||
mappings[k] = interpolations[k](zipped[k]); | ||
}); | ||
let keys = Object.keys(interpolations); | ||
@@ -65,7 +62,7 @@ return t => { | ||
let res = { mode: mode }, val; | ||
Object.keys(mappings).forEach(k => { | ||
if ((val = mappings[k](t)) !== undefined) { | ||
res[k] = val; | ||
for (var i = 0; i < keys.length; i++) { | ||
if ((val = interpolations[keys[i]](zipped[keys[i]], t)) !== undefined) { | ||
res[keys[i]] = val; | ||
} | ||
}); | ||
} | ||
return res; | ||
@@ -78,4 +75,5 @@ } | ||
interpolateAlpha, | ||
interpolateLinear, | ||
interpolateHue | ||
interpolateNumber, | ||
interpolateHue, | ||
interpolateMethodLinear | ||
} |
import convertLabToRgb from './convertLabToRgb'; | ||
import convertRgbToLab from './convertRgbToLab'; | ||
import parseLab from './parseLab'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -17,7 +17,7 @@ export default { | ||
interpolate: { | ||
l: interpolateLinear, | ||
a: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
l: interpolateNumber(), | ||
a: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
}; |
@@ -6,3 +6,3 @@ import convertLabToLch from './convertLabToLch'; | ||
import parseLch from './parseLch'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -22,6 +22,6 @@ export default { | ||
interpolate: { | ||
h: interpolateHue, | ||
c: interpolateLinear, | ||
l: interpolateLinear, | ||
alpha: interpolateAlpha | ||
h: interpolateHue(), | ||
c: interpolateNumber(), | ||
l: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
@@ -28,0 +28,0 @@ }; |
import convertRgbToLrgb from './convertRgbToLrgb'; | ||
import convertLrgbToRgb from './convertLrgbToRgb'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -15,7 +15,7 @@ export default { | ||
interpolate: { | ||
r: interpolateLinear, | ||
g: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
r: interpolateNumber(), | ||
g: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
}; |
@@ -5,3 +5,3 @@ import parseNamed from './parseNamed'; | ||
import parseTransparent from './parseTransparent'; | ||
import { interpolateLinear, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
import { interpolateNumber, interpolateAlpha, interpolateHue } from '../interpolate'; | ||
@@ -13,7 +13,7 @@ export default { | ||
interpolate: { | ||
r: interpolateLinear, | ||
g: interpolateLinear, | ||
b: interpolateLinear, | ||
alpha: interpolateAlpha | ||
r: interpolateNumber(), | ||
g: interpolateNumber(), | ||
b: interpolateNumber(), | ||
alpha: interpolateAlpha() | ||
} | ||
}; |
import { getModeDefinition } from './modes'; | ||
import converter from './converter'; | ||
export default mode => { | ||
export default (colors, mode = 'rgb') => { | ||
let channels = getModeDefinition(mode).channels; | ||
return colors => { | ||
let res = { | ||
mode: mode | ||
}; | ||
channels.forEach(channel => { | ||
res[channel] = colors.map(c => c[channel]); | ||
}); | ||
return res; | ||
let res = { | ||
mode: mode | ||
}; | ||
for (let i = 0; i < channels.length; i++) { | ||
res[channels[i]] = colors.map(c => c[channels[i]]); | ||
} | ||
return res; | ||
} | ||
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
119647
68
3630