Skip to content

Instantly share code, notes, and snippets.

@andytwoods
Created July 21, 2016 12:31
Show Gist options
  • Save andytwoods/6571beb0ad3f00f0530adc76c4a56117 to your computer and use it in GitHub Desktop.
Save andytwoods/6571beb0ad3f00f0530adc76c4a56117 to your computer and use it in GitHub Desktop.
requirebin sketch
//https://github.com/Qix-/color-convert
var convert = require('color-convert');
//https://github.com/zschuessler/DeltaE
var DeltaE = require('delta-e');
function dist_hex(hex1, hex2){
var lab1= convert.hex.lab.raw(hex1);
var lab2= convert.hex.lab.raw(hex2);
return DeltaE.getDeltaE00( clean_lab(lab1), clean_lab(lab2) );
}
function clean_lab(arr){
return {L:arr[0],A:arr[1], B:arr[2]}
}
var orig_list = "FB5760,FA0019,8D000E,5C65F7,29F6,178B,FC9765,FB5522,8E3414,A263F8,6327F6,3E158B,FFF86F,FFFC43,92902d,FA5DD9,FA00C1,8D006F,9FFE6E,69FE3F,3D8F24,8E5E3C,8E4116,5C2C0F,68FFE0,33FFC9,1D9174,FFFFFF,C6C6C6,909090,96FFFE,32FFFE,1C918F,5D5D5D,2E2E2E".split(",");
var all_cols = "994C00,993,9999,FF66E2,994C00,A2FF66,FFFB66,99693D,FF00CC,AD66FF,FFFFFF,997C,99007C,999999,FF0000,99,666666,999900,66FFE2,6666FF,663300,990000,6666FF,99693D,CCCCCC,333333,FF6666,997C,FF,66FF00,FFFF00,FFA466,0,470099,666666,FF6600,99,3C9900,66FF00,994C00,FFCC,333333,99007C,FFFF,6F00FF,9F6736,F9FF00,9E9B,FFCF,FF00,A300,A24400,23009B,4200FF,FF00CA,7647FF,8700FF,FBFF5A,53FB39,93603A,3.18E+22,FF65DA,FFFC3A,622AF8,5664F9,FF180B,934511,FF605E,FDC9,FFF86B,FF9B62,9.18E+23,3E188C,2E2E2E,178C,29F8,87FEFF,96FB6B,5D5D5D,FFFCC7,4DFDE0,909090,94000000,6F00FF,66FFE2,99FFFF,99,9999,993,75FFE3,6666FF,3C9900,D4AFFF,666666,FF1CD2,333333,470099,663300,99,990000,993,3C9900,990000,997C,FFAFF0,999900,99,DCDCA7,470099,994C00,FFFF9F,997C,9999,99007C,99693D,480097,979700,4FECA,6E00FF,977B,363636,FF6500,3E9700,FFFE00,4FEFF,97,FFA265,FFFA65,653600,97683F,97007B,653600,6565FF,656565,AB65FF,65FEE1,6565FF,65FE00,99007C,FAFF00,969,86FF69,FF34DF,9D6838,9F7E,FF20,333333,FCFF61,FFD0,12FFE5,1E009A,FFA05D,7249FF,3900FF,FF515B,A20000,52009A,BA3FFF,FF5600,86FF69,8200FF,A10E,99693D,FFCFAF,9999,993,994C00,FDCE,606060,B167F6,FF0A00,FF6107,C9C9C9,A04905,FF9F65,9D6342,937D,FF19C2,9222,FC4B,5866F6,6BFEFF,FF67D8,A14003,19F5,FFFC4A,969320,949494,2D2D2D,999900,997C,470099,99693D,9999,FF6507,984B03,FFA367,987C,3A980D,FEFE1F,98980D,9898,63FE1E,FF0302,980100,FEFA69,98683D,323232,9898,A0FE69,6767FD,AD67FD,120EFD,470597,CBCBCB,700FFD,99047A,989898,60597,65FEE2,FF67E0,98980D,987C,470597,FF0CCA,9999,994C00,99693D,990000,666666,9925,AD0000,D0CDC7,A94700,FFFF25,FF00C1,9925,AC0070,5FD,6165FD,FFCE,FFFB63,190,9925,190,FF5955,FF5800,343535,343535,FF3E,7700FD,9A9691,919191,75FFE3,A2A217,FFC49C,99,DFFFF8,D1AFFF,99007C,FFAEEF,C9B099,FCFCF9,993,663300,F40009,F6FF22,744BFC,62FF1A,9CFF66,F8FF68,1B0092,9FFFFE,F5610C,AF4BFC,74FFDF,F6A164,3F9808,7C00FC,4B0093,62FF1A,666666,FC0D1B,FFF971,FDA46C,FFFD38,471296,333333,9DFFFE,FC20CA,2DFFFE,409818,6F25FB,A5FD6F,FC6621,6EFEE2,FD6769,999999,FD6BE0,2BFECD,2DFFFE,AC6CFC,6EFEE2,676BFB,169998,16987C,FCFF00,FF00CE,A200,BD41FF,3000FF,AA007E,53009F,A1672F,FF32E5,FF9F4F,1800A0,FFFFA7,FDF9F9,FAFDF9,9999,C1C165,ADADFF,999999,99693D,997C,993,994C00,990000,FFFF94,990000,7F1CFF,333333,A21717,ECFFDF,8C8C8C,FEFEFE".split(",");
var col;
var nearest;
var nearestCols = [];
for(var i=0;i<all_cols.length;i++){
col = all_cols[i];
nearest = find_nearest(col,orig_list);
nearestCols.push(nearest);
}
console.log(nearestCols.join("/n"));
function find_nearest(col, list){
var smallest = 100000;
var smallest_id = '';
var current_id;
var current_val;
for(var i=0;i<list.length;i++){
current_id = list[i];
current_val = dist_hex(col, current_id);
if(current_val < smallest){
smallest = current_val;
smallest_id = current_id;
}
}
return smallest_id;
}
setTimeout(function(){require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var cssKeywords=require("./css-keywords");var reverseKeywords={};for(var key in cssKeywords){if(cssKeywords.hasOwnProperty(key)){reverseKeywords[cssKeywords[key].join()]=key}}var convert=module.exports={rgb:{channels:3},hsl:{channels:3},hsv:{channels:3},hwb:{channels:3},cmyk:{channels:4},xyz:{channels:3},lab:{channels:3},lch:{channels:3},hex:{channels:1},keyword:{channels:1},ansi16:{channels:1},ansi256:{channels:1},hcg:{channels:3},apple:{channels:3}};for(var model in convert){if(convert.hasOwnProperty(model)){if(!("channels"in convert[model])){throw new Error("missing channels property: "+model)}var channels=convert[model].channels;delete convert[model].channels;Object.defineProperty(convert[model],"channels",{value:channels})}}convert.rgb.hsl=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;var min=Math.min(r,g,b);var max=Math.max(r,g,b);var delta=max-min;var h;var s;var l;if(max===min){h=0}else if(r===max){h=(g-b)/delta}else if(g===max){h=2+(b-r)/delta}else if(b===max){h=4+(r-g)/delta}h=Math.min(h*60,360);if(h<0){h+=360}l=(min+max)/2;if(max===min){s=0}else if(l<=.5){s=delta/(max+min)}else{s=delta/(2-max-min)}return[h,s*100,l*100]};convert.rgb.hsv=function(rgb){var r=rgb[0];var g=rgb[1];var b=rgb[2];var min=Math.min(r,g,b);var max=Math.max(r,g,b);var delta=max-min;var h;var s;var v;if(max===0){s=0}else{s=delta/max*1e3/10}if(max===min){h=0}else if(r===max){h=(g-b)/delta}else if(g===max){h=2+(b-r)/delta}else if(b===max){h=4+(r-g)/delta}h=Math.min(h*60,360);if(h<0){h+=360}v=max/255*1e3/10;return[h,s,v]};convert.rgb.hwb=function(rgb){var r=rgb[0];var g=rgb[1];var b=rgb[2];var h=convert.rgb.hsl(rgb)[0];var w=1/255*Math.min(r,Math.min(g,b));b=1-1/255*Math.max(r,Math.max(g,b));return[h,w*100,b*100]};convert.rgb.cmyk=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;var c;var m;var y;var k;k=Math.min(1-r,1-g,1-b);c=(1-r-k)/(1-k)||0;m=(1-g-k)/(1-k)||0;y=(1-b-k)/(1-k)||0;return[c*100,m*100,y*100,k*100]};convert.rgb.keyword=function(rgb){return reverseKeywords[rgb.join()]};convert.keyword.rgb=function(keyword){return cssKeywords[keyword]};convert.rgb.xyz=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;g=g>.04045?Math.pow((g+.055)/1.055,2.4):g/12.92;b=b>.04045?Math.pow((b+.055)/1.055,2.4):b/12.92;var x=r*.4124+g*.3576+b*.1805;var y=r*.2126+g*.7152+b*.0722;var z=r*.0193+g*.1192+b*.9505;return[x*100,y*100,z*100]};convert.rgb.lab=function(rgb){var xyz=convert.rgb.xyz(rgb);var x=xyz[0];var y=xyz[1];var z=xyz[2];var l;var a;var b;x/=95.047;y/=100;z/=108.883;x=x>.008856?Math.pow(x,1/3):7.787*x+16/116;y=y>.008856?Math.pow(y,1/3):7.787*y+16/116;z=z>.008856?Math.pow(z,1/3):7.787*z+16/116;l=116*y-16;a=500*(x-y);b=200*(y-z);return[l,a,b]};convert.hsl.rgb=function(hsl){var h=hsl[0]/360;var s=hsl[1]/100;var l=hsl[2]/100;var t1;var t2;var t3;var rgb;var val;if(s===0){val=l*255;return[val,val,val]}if(l<.5){t2=l*(1+s)}else{t2=l+s-l*s}t1=2*l-t2;rgb=[0,0,0];for(var i=0;i<3;i++){t3=h+1/3*-(i-1);if(t3<0){t3++}if(t3>1){t3--}if(6*t3<1){val=t1+(t2-t1)*6*t3}else if(2*t3<1){val=t2}else if(3*t3<2){val=t1+(t2-t1)*(2/3-t3)*6}else{val=t1}rgb[i]=val*255}return rgb};convert.hsl.hsv=function(hsl){var h=hsl[0];var s=hsl[1]/100;var l=hsl[2]/100;var sv;var v;if(l===0){return[0,0,0]}l*=2;s*=l<=1?l:2-l;v=(l+s)/2;sv=2*s/(l+s);return[h,sv*100,v*100]};convert.hsv.rgb=function(hsv){var h=hsv[0]/60;var s=hsv[1]/100;var v=hsv[2]/100;var hi=Math.floor(h)%6;var f=h-Math.floor(h);var p=255*v*(1-s);var q=255*v*(1-s*f);var t=255*v*(1-s*(1-f));v*=255;switch(hi){case 0:return[v,t,p];case 1:return[q,v,p];case 2:return[p,v,t];case 3:return[p,q,v];case 4:return[t,p,v];case 5:return[v,p,q]}};convert.hsv.hsl=function(hsv){var h=hsv[0];var s=hsv[1]/100;var v=hsv[2]/100;var sl;var l;l=(2-s)*v;sl=s*v;sl/=l<=1?l:2-l;sl=sl||0;l/=2;return[h,sl*100,l*100]};convert.hwb.rgb=function(hwb){var h=hwb[0]/360;var wh=hwb[1]/100;var bl=hwb[2]/100;var ratio=wh+bl;var i;var v;var f;var n;if(ratio>1){wh/=ratio;bl/=ratio}i=Math.floor(6*h);v=1-bl;f=6*h-i;if((i&1)!==0){f=1-f}n=wh+f*(v-wh);var r;var g;var b;switch(i){default:case 6:case 0:r=v;g=n;b=wh;break;case 1:r=n;g=v;b=wh;break;case 2:r=wh;g=v;b=n;break;case 3:r=wh;g=n;b=v;break;case 4:r=n;g=wh;b=v;break;case 5:r=v;g=wh;b=n;break}return[r*255,g*255,b*255]};convert.cmyk.rgb=function(cmyk){var c=cmyk[0]/100;var m=cmyk[1]/100;var y=cmyk[2]/100;var k=cmyk[3]/100;var r;var g;var b;r=1-Math.min(1,c*(1-k)+k);g=1-Math.min(1,m*(1-k)+k);b=1-Math.min(1,y*(1-k)+k);return[r*255,g*255,b*255]};convert.xyz.rgb=function(xyz){var x=xyz[0]/100;var y=xyz[1]/100;var z=xyz[2]/100;var r;var g;var b;r=x*3.2406+y*-1.5372+z*-.4986;g=x*-.9689+y*1.8758+z*.0415;b=x*.0557+y*-.204+z*1.057;r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:r*=12.92;g=g>.0031308?1.055*Math.pow(g,1/2.4)-.055:g*=12.92;b=b>.0031308?1.055*Math.pow(b,1/2.4)-.055:b*=12.92;r=Math.min(Math.max(0,r),1);g=Math.min(Math.max(0,g),1);b=Math.min(Math.max(0,b),1);return[r*255,g*255,b*255]};convert.xyz.lab=function(xyz){var x=xyz[0];var y=xyz[1];var z=xyz[2];var l;var a;var b;x/=95.047;y/=100;z/=108.883;x=x>.008856?Math.pow(x,1/3):7.787*x+16/116;y=y>.008856?Math.pow(y,1/3):7.787*y+16/116;z=z>.008856?Math.pow(z,1/3):7.787*z+16/116;l=116*y-16;a=500*(x-y);b=200*(y-z);return[l,a,b]};convert.lab.xyz=function(lab){var l=lab[0];var a=lab[1];var b=lab[2];var x;var y;var z;var y2;if(l<=8){y=l*100/903.3;y2=7.787*(y/100)+16/116}else{y=100*Math.pow((l+16)/116,3);y2=Math.pow(y/100,1/3)}x=x/95.047<=.008856?x=95.047*(a/500+y2-16/116)/7.787:95.047*Math.pow(a/500+y2,3);z=z/108.883<=.008859?z=108.883*(y2-b/200-16/116)/7.787:108.883*Math.pow(y2-b/200,3);return[x,y,z]};convert.lab.lch=function(lab){var l=lab[0];var a=lab[1];var b=lab[2];var hr;var h;var c;hr=Math.atan2(b,a);h=hr*360/2/Math.PI;if(h<0){h+=360}c=Math.sqrt(a*a+b*b);return[l,c,h]};convert.lch.lab=function(lch){var l=lch[0];var c=lch[1];var h=lch[2];var a;var b;var hr;hr=h/360*2*Math.PI;a=c*Math.cos(hr);b=c*Math.sin(hr);return[l,a,b]};convert.rgb.ansi16=function(args){var r=args[0];var g=args[1];var b=args[2];var value=1 in arguments?arguments[1]:convert.rgb.hsv(args)[2];value=Math.round(value/50);if(value===0){return 30}var ansi=30+(Math.round(b/255)<<2|Math.round(g/255)<<1|Math.round(r/255));if(value===2){ansi+=60}return ansi};convert.hsv.ansi16=function(args){return convert.rgb.ansi16(convert.hsv.rgb(args),args[2])};convert.rgb.ansi256=function(args){var r=args[0];var g=args[1];var b=args[2];if(r===g&&g===b){if(r<8){return 16}if(r>248){return 231}return Math.round((r-8)/247*24)+232}var ansi=16+36*Math.round(r/255*5)+6*Math.round(g/255*5)+Math.round(b/255*5);return ansi};convert.ansi16.rgb=function(args){var color=args%10;if(color===0||color===7){if(args>50){color+=3.5}color=color/10.5*255;return[color,color,color]}var mult=(~~(args>50)+1)*.5;var r=(color&1)*mult*255;var g=(color>>1&1)*mult*255;var b=(color>>2&1)*mult*255;return[r,g,b]};convert.ansi256.rgb=function(args){if(args>=232){var c=(args-232)*10+8;return[c,c,c]}args-=16;var rem;var r=Math.floor(args/36)/5*255;var g=Math.floor((rem=args%36)/6)/5*255;var b=rem%6/5*255;return[r,g,b]};convert.rgb.hex=function(args){var integer=((Math.round(args[0])&255)<<16)+((Math.round(args[1])&255)<<8)+(Math.round(args[2])&255);var string=integer.toString(16).toUpperCase();return"000000".substring(string.length)+string};convert.hex.rgb=function(args){var match=args.toString(16).match(/[a-f0-9]{6}/i);if(!match){return[0,0,0]}var integer=parseInt(match[0],16);var r=integer>>16&255;var g=integer>>8&255;var b=integer&255;return[r,g,b]};convert.rgb.hcg=function(rgb){var r=rgb[0]/255;var g=rgb[1]/255;var b=rgb[2]/255;var max=Math.max(Math.max(r,g),b);var min=Math.min(Math.min(r,g),b);var chroma=max-min;var grayscale;var hue;if(chroma<1){grayscale=min/(1-chroma)}else{grayscale=0}if(chroma<=0){hue=0}else if(max===r){hue=(g-b)/chroma%6}else if(max===g){hue=2+(b-r)/chroma}else{hue=4+(r-g)/chroma+4}hue/=6;hue%=1;return[hue*360,chroma*100,grayscale*100]};convert.hsl.hcg=function(hsl){var s=hsl[1]/100;var l=hsl[2]/100;var c=1;var f=0;if(l<.5){c=2*s*l}else{c=2*s*(1-l)}if(c<1){f=(l-.5*c)/(1-c)}return[hsl[0],c*100,f*100]};convert.hsv.hcg=function(hsv){var s=hsv[1]/100;var v=hsv[2]/100;var c=s*v;var f=0;if(c<1){f=(v-c)/(1-c)}return[hsv[0],c*100,f*100]};convert.hcg.rgb=function(hcg){var h=hcg[0]/360;var c=hcg[1]/100;var g=hcg[2]/100;if(c===0){return[g*255,g*255,g*255]}var pure=[0,0,0];var hi=h%1*6;var v=hi%1;var w=1-v;var mg=0;switch(Math.floor(hi)){case 0:pure[0]=1;pure[1]=v;pure[2]=0;break;case 1:pure[0]=w;pure[1]=1;pure[2]=0;break;case 2:pure[0]=0;pure[1]=1;pure[2]=v;break;case 3:pure[0]=0;pure[1]=w;pure[2]=1;break;case 4:pure[0]=v;pure[1]=0;pure[2]=1;break;default:pure[0]=1;pure[1]=0;pure[2]=w}mg=(1-c)*g;return[(c*pure[0]+mg)*255,(c*pure[1]+mg)*255,(c*pure[2]+mg)*255]};convert.hcg.hsv=function(hcg){var c=hcg[1]/100;var g=hcg[2]/100;var v=c+g*(1-c);var f=0;if(v>0){f=c/v}return[hcg[0],f*100,v*100]};convert.hcg.hsl=function(hcg){var c=hcg[1]/100;var g=hcg[2]/100;var l=g*(1-c)+.5*c;var s=0;if(l>0&&l<.5){s=c/(2*l)}else if(l>=.5&&l<1){s=c/(2*(1-l))}return[hcg[0],s*100,l*100]};convert.hcg.hwb=function(hcg){var c=hcg[1]/100;var g=hcg[2]/100;var v=c+g*(1-c);return[hcg[0],(v-c)*100,(1-v)*100]};convert.hwb.hcg=function(hwb){var w=hwb[1]/100;var b=hwb[2]/100;var v=1-b;var c=v-w;var g=0;if(c<1){g=(v-c)/(1-c)}return[hwb[0],c*100,g*100]};convert.apple.rgb=function(apple){return[apple[0]/65535*255,apple[1]/65535*255,apple[2]/65535*255]};convert.rgb.apple=function(rgb){return[rgb[0]/255*65535,rgb[1]/255*65535,rgb[2]/255*65535]}},{"./css-keywords":2}],2:[function(require,module,exports){module.exports={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],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]}},{}],3:[function(require,module,exports){var conversions=require("./conversions");var models=Object.keys(conversions);function buildGraph(){var graph={};for(var len=models.length,i=0;i<len;i++){graph[models[i]]={distance:-1,parent:null}}return graph}function deriveBFS(fromModel){var graph=buildGraph();var queue=[fromModel];graph[fromModel].distance=0;while(queue.length){var current=queue.pop();var adjacents=Object.keys(conversions[current]);for(var len=adjacents.length,i=0;i<len;i++){var adjacent=adjacents[i];var node=graph[adjacent];if(node.distance===-1){node.distance=graph[current].distance+1;node.parent=current;queue.unshift(adjacent)}}}return graph}function link(from,to){return function(args){return to(from(args))}}function wrapConversion(toModel,graph){var path=[graph[toModel].parent,toModel];var fn=conversions[graph[toModel].parent][toModel];var cur=graph[toModel].parent;while(graph[cur].parent){path.unshift(graph[cur].parent);fn=link(conversions[graph[cur].parent][cur],fn);cur=graph[cur].parent}fn.conversion=path;return fn}module.exports=function(fromModel){var graph=deriveBFS(fromModel);var conversion={};var models=Object.keys(graph);for(var len=models.length,i=0;i<len;i++){var toModel=models[i];var node=graph[toModel];if(node.parent===null){continue}conversion[toModel]=wrapConversion(toModel,graph)}return conversion}},{"./conversions":1}],"color-convert":[function(require,module,exports){var conversions=require("./conversions");var route=require("./route");var convert={};var models=Object.keys(conversions);function wrapRaw(fn){var wrappedFn=function(args){if(args===undefined||args===null){return args}if(arguments.length>1){args=Array.prototype.slice.call(arguments)}return fn(args)};if("conversion"in fn){wrappedFn.conversion=fn.conversion}return wrappedFn}function wrapRounded(fn){var wrappedFn=function(args){if(args===undefined||args===null){return args}if(arguments.length>1){args=Array.prototype.slice.call(arguments)}var result=fn(args);if(typeof result==="object"){for(var len=result.length,i=0;i<len;i++){result[i]=Math.round(result[i])}}return result};if("conversion"in fn){wrappedFn.conversion=fn.conversion}return wrappedFn}models.forEach(function(fromModel){convert[fromModel]={};Object.defineProperty(convert[fromModel],"channels",{value:conversions[fromModel].channels});var routes=route(fromModel);var routeModels=Object.keys(routes);routeModels.forEach(function(toModel){var fn=routes[toModel];convert[fromModel][toModel]=wrapRounded(fn);convert[fromModel][toModel].raw=wrapRaw(fn)})});module.exports=convert},{"./conversions":1,"./route":3}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";function dE00(x1,x2,weights){var sqrt=Math.sqrt;var pow=Math.pow;this.x1=x1;this.x2=x2;this.weights=weights||{};this.ksubL=this.weights.lightness||1;this.ksubC=this.weights.chroma||1;this.ksubH=this.weights.hue||1;this.deltaLPrime=x2.L-x1.L;this.LBar=(x1.L+x2.L)/2;this.C1=sqrt(pow(x1.A,2)+pow(x1.B,2));this.C2=sqrt(pow(x2.A,2)+pow(x2.B,2));this.CBar=(this.C1+this.C2)/2;this.aPrime1=x1.A+x1.A/2*(1-sqrt(pow(this.CBar,7)/(pow(this.CBar,7)+pow(25,7))));this.aPrime2=x2.A+x2.A/2*(1-sqrt(pow(this.CBar,7)/(pow(this.CBar,7)+pow(25,7))));this.CPrime1=sqrt(pow(this.aPrime1,2)+pow(x1.B,2));this.CPrime2=sqrt(pow(this.aPrime2,2)+pow(x2.B,2));this.CBarPrime=(this.CPrime1+this.CPrime2)/2;this.deltaCPrime=this.CPrime2-this.CPrime1;this.SsubL=1+.015*pow(this.LBar-50,2)/sqrt(20+pow(this.LBar-50,2));this.SsubC=1+.045*this.CBarPrime;this.hPrime1=0;this.hPrime2=0;this.deltahPrime=0;this.deltaHPrime=0;this.HBarPrime=0;this.T=0;this.SsubH=0;this.RsubT=0}dE00.prototype.getDeltaE=function(){var sqrt=Math.sqrt;var sin=Math.sin;var pow=Math.pow;this.hPrime1=this.gethPrime1();this.hPrime2=this.gethPrime2();this.deltahPrime=this.getDeltahPrime();this.deltaHPrime=2*sqrt(this.CPrime1*this.CPrime2)*sin(this.degreesToRadians(this.deltahPrime)/2);this.HBarPrime=this.getHBarPrime();this.T=this.getT();this.SsubH=1+.015*this.CBarPrime*this.T;this.RsubT=this.getRsubT();var lightness=this.deltaLPrime/(this.ksubL*this.SsubL);var chroma=this.deltaCPrime/(this.ksubC*this.SsubC);var hue=this.deltaHPrime/(this.ksubH*this.SsubH);return sqrt(pow(lightness,2)+pow(chroma,2)+pow(hue,2)+this.RsubT*chroma*hue)};dE00.prototype.getRsubT=function(){var sin=Math.sin;var sqrt=Math.sqrt;var pow=Math.pow;var exp=Math.exp;return-2*sqrt(pow(this.CBarPrime,7)/(pow(this.CBarPrime,7)+pow(25,7)))*sin(this.degreesToRadians(60*exp(-pow((this.HBarPrime-275)/25,2))))};dE00.prototype.getT=function(){var cos=Math.cos;return 1-.17*cos(this.degreesToRadians(this.HBarPrime-30))+.24*cos(this.degreesToRadians(2*this.HBarPrime))+.32*cos(this.degreesToRadians(3*this.HBarPrime+6))-.2*cos(this.degreesToRadians(4*this.HBarPrime-63))};dE00.prototype.getHBarPrime=function(){var abs=Math.abs;if(abs(this.hPrime1-this.hPrime2)>180){return(this.hPrime1+this.hPrime2+360)/2}return(this.hPrime1+this.hPrime2)/2};dE00.prototype.getDeltahPrime=function(){var abs=Math.abs;if(0===this.C1||0===this.C2){return 0}if(abs(this.hPrime1-this.hPrime2)<=180){return this.hPrime2-this.hPrime1}if(this.hPrime2<=this.hPrime1){return this.hPrime2-this.hPrime1+360}else{return this.hPrime2-this.hPrime1-360}};dE00.prototype.gethPrime1=function(){return this._gethPrimeFn(this.x1.B,this.aPrime1)};dE00.prototype.gethPrime2=function(){return this._gethPrimeFn(this.x2.B,this.aPrime2)};dE00.prototype._gethPrimeFn=function(x,y){var hueAngle;if(x===0&&y===0){return 0}hueAngle=this.radiansToDegrees(Math.atan2(x,y));if(hueAngle>=0){return hueAngle}else{return hueAngle+360}};dE00.prototype.radiansToDegrees=function(radians){return radians*(180/Math.PI)};dE00.prototype.degreesToRadians=function(degrees){return degrees*(Math.PI/180)};module.exports=dE00},{}],2:[function(require,module,exports){"use strict";function dE76(x1,x2){this.x1=x1;this.x2=x2}dE76.prototype.getDeltaE=function(){var x1=this.x1;var x2=this.x2;return Math.sqrt(Math.pow(x2.L-x1.L,2)+Math.pow(x2.A-x1.A,2)+Math.pow(x2.B-x1.B,2))};module.exports=dE76},{}],3:[function(require,module,exports){"use strict";function dE94(x1,x2,weights){this.x1=x1;this.x2=x2;this.weights=weights||{};this.weights.lightness=this.weights.lightness||1;this.weights.chroma=this.weights.chroma||1;this.weights.hue=this.weights.hue||1;if(1===this.weights.lightness){this.weights.K1=.045;this.weights.K2=.015}else{this.weights.K1=.048;this.weights.K2=.014}}dE94.prototype.getDeltaE=function(){var x1=this.x1;var x2=this.x2;var sqrt=Math.sqrt;var pow=Math.pow;return sqrt(pow(this.calculateL(x1,x2),2)+pow(this.calculateA(x1,x2),2)+pow(this.calculateB(x1,x2),2))};dE94.prototype.calculateL=function(x1,x2){return(x1.L-x2.L)/this.weights.lightness};dE94.prototype.calculateA=function(x1,x2){var sqrt=Math.sqrt;var pow=Math.pow;var c1=sqrt(pow(x1.A,2)+pow(x1.B,2));var c2=sqrt(pow(x2.A,2)+pow(x2.B,2));var cab=c1-c2;var sc=1+this.weights.K1*c1;return cab/(this.weights.chroma*sc)};dE94.prototype.calculateB=function(x1,x2){var sqrt=Math.sqrt;var pow=Math.pow;var c1=sqrt(pow(x1.A,2)+pow(x1.B,2));var c2=sqrt(pow(x2.A,2)+pow(x2.B,2));var cab=c1-c2;var a=x1.A-x2.A;var b=x1.B-x2.B;var hab=sqrt(pow(a,2)+pow(b,2)-pow(cab,2));var c1=sqrt(pow(x1.A,2)+pow(x1.B,2));var sh=1+this.weights.K2*c1;return hab/sh};module.exports=dE94},{}],"delta-e":[function(require,module,exports){"use strict";var dE76=require("./dE76");var dE94=require("./dE94");var dE00=require("./dE00");function DeltaE(){}DeltaE.prototype.getDeltaE76=function(lab1,lab2){var deltaE=new dE76(lab1,lab2);return deltaE.getDeltaE()};DeltaE.prototype.getDeltaE94=function(lab1,lab2){var deltaE=new dE94(lab1,lab2);return deltaE.getDeltaE()};DeltaE.prototype.getDeltaE00=function(lab1,lab2){var deltaE=new dE00(lab1,lab2);return deltaE.getDeltaE()};module.exports=new DeltaE},{"./dE00":1,"./dE76":2,"./dE94":3}]},{},[]);var convert=require("color-convert");var DeltaE=require("delta-e");function dist_hex(hex1,hex2){var lab1=convert.hex.lab.raw(hex1);var lab2=convert.hex.lab.raw(hex2);return DeltaE.getDeltaE00(clean_lab(lab1),clean_lab(lab2))}function clean_lab(arr){return{L:arr[0],A:arr[1],B:arr[2]}}var orig_list="FB5760,FA0019,8D000E,5C65F7,29F6,178B,FC9765,FB5522,8E3414,A263F8,6327F6,3E158B,FFF86F,FFFC43,92902d,FA5DD9,FA00C1,8D006F,9FFE6E,69FE3F,3D8F24,8E5E3C,8E4116,5C2C0F,68FFE0,33FFC9,1D9174,FFFFFF,C6C6C6,909090,96FFFE,32FFFE,1C918F,5D5D5D,2E2E2E".split(",");var all_cols="994C00,993,9999,FF66E2,994C00,A2FF66,FFFB66,99693D,FF00CC,AD66FF,FFFFFF,997C,99007C,999999,FF0000,99,666666,999900,66FFE2,6666FF,663300,990000,6666FF,99693D,CCCCCC,333333,FF6666,997C,FF,66FF00,FFFF00,FFA466,0,470099,666666,FF6600,99,3C9900,66FF00,994C00,FFCC,333333,99007C,FFFF,6F00FF,9F6736,F9FF00,9E9B,FFCF,FF00,A300,A24400,23009B,4200FF,FF00CA,7647FF,8700FF,FBFF5A,53FB39,93603A,3.18E+22,FF65DA,FFFC3A,622AF8,5664F9,FF180B,934511,FF605E,FDC9,FFF86B,FF9B62,9.18E+23,3E188C,2E2E2E,178C,29F8,87FEFF,96FB6B,5D5D5D,FFFCC7,4DFDE0,909090,94000000,6F00FF,66FFE2,99FFFF,99,9999,993,75FFE3,6666FF,3C9900,D4AFFF,666666,FF1CD2,333333,470099,663300,99,990000,993,3C9900,990000,997C,FFAFF0,999900,99,DCDCA7,470099,994C00,FFFF9F,997C,9999,99007C,99693D,480097,979700,4FECA,6E00FF,977B,363636,FF6500,3E9700,FFFE00,4FEFF,97,FFA265,FFFA65,653600,97683F,97007B,653600,6565FF,656565,AB65FF,65FEE1,6565FF,65FE00,99007C,FAFF00,969,86FF69,FF34DF,9D6838,9F7E,FF20,333333,FCFF61,FFD0,12FFE5,1E009A,FFA05D,7249FF,3900FF,FF515B,A20000,52009A,BA3FFF,FF5600,86FF69,8200FF,A10E,99693D,FFCFAF,9999,993,994C00,FDCE,606060,B167F6,FF0A00,FF6107,C9C9C9,A04905,FF9F65,9D6342,937D,FF19C2,9222,FC4B,5866F6,6BFEFF,FF67D8,A14003,19F5,FFFC4A,969320,949494,2D2D2D,999900,997C,470099,99693D,9999,FF6507,984B03,FFA367,987C,3A980D,FEFE1F,98980D,9898,63FE1E,FF0302,980100,FEFA69,98683D,323232,9898,A0FE69,6767FD,AD67FD,120EFD,470597,CBCBCB,700FFD,99047A,989898,60597,65FEE2,FF67E0,98980D,987C,470597,FF0CCA,9999,994C00,99693D,990000,666666,9925,AD0000,D0CDC7,A94700,FFFF25,FF00C1,9925,AC0070,5FD,6165FD,FFCE,FFFB63,190,9925,190,FF5955,FF5800,343535,343535,FF3E,7700FD,9A9691,919191,75FFE3,A2A217,FFC49C,99,DFFFF8,D1AFFF,99007C,FFAEEF,C9B099,FCFCF9,993,663300,F40009,F6FF22,744BFC,62FF1A,9CFF66,F8FF68,1B0092,9FFFFE,F5610C,AF4BFC,74FFDF,F6A164,3F9808,7C00FC,4B0093,62FF1A,666666,FC0D1B,FFF971,FDA46C,FFFD38,471296,333333,9DFFFE,FC20CA,2DFFFE,409818,6F25FB,A5FD6F,FC6621,6EFEE2,FD6769,999999,FD6BE0,2BFECD,2DFFFE,AC6CFC,6EFEE2,676BFB,169998,16987C,FCFF00,FF00CE,A200,BD41FF,3000FF,AA007E,53009F,A1672F,FF32E5,FF9F4F,1800A0,FFFFA7,FDF9F9,FAFDF9,9999,C1C165,ADADFF,999999,99693D,997C,993,994C00,990000,FFFF94,990000,7F1CFF,333333,A21717,ECFFDF,8C8C8C,FEFEFE".split(",");var col;var nearest;var nearestCols=[];for(var i=0;i<all_cols.length;i++){col=all_cols[i];nearest=find_nearest(col,orig_list);nearestCols.push(nearest)}console.log(nearestCols.join("/n"));function find_nearest(col,list){var smallest=1e5;var smallest_id="";var current_id;var current_val;for(var i=0;i<list.length;i++){current_id=list[i];current_val=dist_hex(col,current_id);if(current_val<smallest){smallest=current_val;smallest_id=current_id}}return smallest_id}},0);
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"color-convert": "1.3.1",
"delta-e": "0.0.7"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment