UNPKG

@johnny95731/color-utils

Version:

High-performance color utilities that including conversions, harmonies, mix, and sort.

2 lines (1 loc) 18.9 kB
"use strict";const cloneDeep=e=>{let t;if(null==e?t=e:[Number,String,Boolean].forEach((r=>{e instanceof r&&(t=r(e))})),void 0===t)if(Array.isArray(e)){t=[];for(const r of e)t.push(cloneDeep(r))}else if(e instanceof Date)t=new Date(e);else if("object"==typeof e){t={};for(const r in e)t[r]=cloneDeep(e[r])}else t=e;return t},map=(e,t,r)=>{const o=Array(r??=e.length??e);let n=0;if("number"==typeof e)for(;n<e;)o[n]=t(n++);else for(;n<r;)o[n]=t(e[n],n++);return o},pow=(e,t)=>t?e?Math.exp(t*Math.log(e)):0:1,randInt=e=>Math.random()*(e+1)|0,round=(e,t=0)=>Math.round(10**t*e)/10**t,clip=(e,t,r)=>(e<t?e=t:e>r&&(e=r),e),rangeMapping=(e,t,r,o,n,s)=>{const a=o+clip((e-t)/(r-t),0,1)*(n-o);return null==s?a:round(a,s)},[e,t]=(()=>{const e=Math.PI/180;return[t=>t*e,t=>t/e]})(),dot3=(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2],squareSum4=(e,t,r=0,o=0)=>e*e+t*t+r*r+o*o,l2Norm3=(e,t,r=0)=>Math.sqrt(squareSum4(e,t,r)),l2Dist3=(e,t)=>l2Norm3(e[0]-t[0],e[1]-t[1],e[2]-t[2]),elementwiseMean=(e,t)=>map(Math.min(e.length,t.length),(r=>(e[r]+t[r])/2)),matVecProduct3=(e,t)=>[dot3(e[0],t),dot3(e[1],t),dot3(e[2],t)],r=/^#?(([\dA-F]{3}){1,2})$/i,isValidHex=e=>r.test(e),rgb2hex=e=>("#"+(1<<24|Math.round(e[0])<<16|Math.round(e[1])<<8|Math.round(e[2])).toString(16).slice(1)).toUpperCase(),hex2rgb=e=>{const t=r.exec(e);if(!t)return[0,0,0];3===(e=t[1]).length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]);const o=parseInt(e,16);return[o>>16,o>>8&255,255&o]},o=[],n=[],s=[],a={name_:"XYZ",labels_:["X","Y","Z"],isSupported_:!0},l=(()=>{const e=[[41.24564,35.75761,18.04375],[21.26729,71.51522,7.2175],[1.93339,11.9192,95.03041]],t=[[43.60747,38.50649,14.30804],[22.25045,71.68786,6.06169],[1.39322,9.71045,71.41733]],setReferenceWhite=r=>{const l="D50"===r?t:e,i=map(l,(e=>e[0]+e[1]+e[2])),p=(e=>{const[[t,r,o],[n,s,a],[l,i,p]]=e,u=s*p-i*a,h=a*l-n*p,c=n*i-l*s,g=t*u+r*h+o*c;return g?[[u/g,(o*i-r*p)/g,(r*a-o*s)/g],[h/g,(t*p-o*l)/g,(n*o-t*a)/g],[c/g,(l*r-t*i)/g,(t*s-n*r)/g]]:null})(l);p&&(o.splice(0,3,...cloneDeep(l)),n.splice(0,3,...p),s.splice(0,3,...i),a.max_=map(i,(e=>[0,e])),a.white_="D50"===r?"d50":"d65")};return setReferenceWhite("D65"),setReferenceWhite})(),[i,p]=(()=>{const e=6/29,t=e**3,r=841/108,o=4/29;return[e=>e>t?Math.cbrt(e):r*e+o,t=>t>e?t*t*t:(t-o)/r]})(),rgb2xyz=e=>{const t=[srgb2linearRgb(e[0]),srgb2linearRgb(e[1]),srgb2linearRgb(e[2])];return[dot3(o[0],t),dot3(o[1],t),dot3(o[2],t)]},xyz2rgb=e=>{const t=dot3(n[0],e),r=dot3(n[1],e),o=dot3(n[2],e);return[linearRgb2srgb(t<1?t>0?t:0:1),linearRgb2srgb(r<1?r>0?r:0:1),linearRgb2srgb(o<1?o>0?o:0:1)]},hsbHelper=e=>{const t=e[0],r=e[1],o=e[2],n=Math.max(t,r,o),s=Math.min(t,r,o),a=n-s;let l;return l=n===o?(t-r)/a+4:n===r?(o-t)/a+2:(r-o)/a+(r<o?6:0),[a&&60*l,s,n,a]},rgb2hsb=e=>{const[t,,r,o]=hsbHelper(e);return[t,o/r*100||0,r/2.55]},hsb2rgb=e=>{const t=e[0]/60,r=e[1]/100,o=2.55*e[2],n=o*r,f=e=>o-n*((e=(e=((e+t)%6+6)%6)<2?e:4-e)<1?e>0?e:0:1);return[f(5),f(3),f(1)]},rgb2hsl=e=>{const[t,r,o,n]=hsbHelper(e),s=o+r;return[t,n/(s<255?s:510-s)*100||0,s/5.1]},hsl2rgb=e=>{const t=e[0]/30,r=2.55*e[2],o=e[1]/100*(r<127.5?r:255-r),f=e=>r-o*((e=(e=((e+t)%12+12)%12)<6?e-3:9-e)<1?e>-1?e:-1:1);return[f(0),f(8),f(4)]},rgb2hwb=e=>{const[t,r,o]=hsbHelper(e);return[t,r/2.55,100-o/2.55]},hwb2rgb=e=>{let t=e[1],r=e[2],o=100-r;return t+r>100&&(o=t/=(t+r)/100),hsb2rgb([e[0],100-100*t/o||0,o])},rgb2cmyk=e=>{const t=e[0],r=e[1],o=e[2],n=.01*Math.max(t,r,o);return[100-t/n||0,100-r/n||0,100-o/n||0,100-n/.0255]},cmyk2rgb=e=>{let t=255-2.55*e[3],r=1-e[0]/100,o=1-e[1]/100,n=1-e[2]/100;return r*=t,o*=t,n*=t,[r,o,n]},lcc2lch=e=>{const r=e[1],o=e[2],n=t(Math.atan2(o,r));return[e[0],l2Norm3(r,o),n<0?n+360:n]},lch2lcc=t=>{const r=e(t[2]);return[t[0],t[1]*Math.cos(r),t[1]*Math.sin(r)]},rgb2lab=e=>{const t=rgb2xyz(e),r=i(t[1]/s[1]);return[116*r-16,500*(i(t[0]/s[0])-r),200*(r-i(t[2]/s[2]))]},lab2rgb=e=>{const t=(e[0]+16)/116,r=t+e[1]/500,o=t-e[2]/200;return xyz2rgb([p(r)*s[0],p(t)*s[1],p(o)*s[2]])},rgb2lchab=e=>lcc2lch(rgb2lab(e)),lchab2rgb=e=>lab2rgb(lch2lcc(e)),[u,h]=(()=>{const weightedSum=e=>e[0]+15*e[1]+3*e[2];return[e=>{const t=rgb2xyz(e),r=weightedSum(s),o=4*s[0]/r,n=9*s[1]/r,a=116*i(t[1]/s[1])-16,l=1/weightedSum(t);return[a,13*a*(4*t[0]*l-o)||0,13*a*(9*t[1]*l-n)||0]},e=>{if(!e[0])return[0,0,0];const t=e[0],r=e[1],o=e[2],n=1/weightedSum(s),a=4*s[0]*n,l=9*s[1]*n,i=p((t+16)/116)*s[1],u=52/(r+13*t*a),h=39*i/(o+13*t*l);return xyz2rgb([3*h/u,i,t*h-h/u-5*i])}]})(),rgb2lchuv=e=>lcc2lch(u(e)),lchuv2rgb=e=>h(lch2lcc(e)),rgb2oklab=e=>{const t=rgb2xyz(e),r=t[0],o=t[1],n=t[2],s=Math.cbrt(.008189330101*r+.003618667424*o+-.001288597137*n),a=Math.cbrt(.000329845436*r+.009293118715*o+.000361456387*n),l=Math.cbrt(.000482003018*r+.002643662691*o+.00633851707*n);return[.2104542553*s+.793617785*a+-.0040720468*l,1.9779984951*s+-2.428592205*a+.4505937099*l,.0259040371*s+.7827717662*a+-.808675766*l]},oklab2rgb=e=>{const t=e[0],r=e[1],o=e[2];let n=.9999999984505199*t+.39633779217376786*r+.2158037580607588*o,s=1.0000000088817607*t+-.10556134232365634*r+-.0638541747717059*o,a=1.000000054672411*t+-.08948418209496577*r+-1.291485537864092*o;n*=n*n,s*=s*s,a*=a*a;return xyz2rgb([122.7013851103521*n+-55.77999806518222*s+28.12561489664678*a,-4.058017842328059*n+111.225686961683*s+-7.167667866560119*a,-7.63812845057069*n+-42.14819784180127*s+158.6163220440795*a])},rgb2oklch=e=>lcc2lch(rgb2oklab(e)),oklch2rgb=e=>oklab2rgb(lch2lcc(e)),c=(()=>{const e=[[0,360],[0,100],[0,100]],t=[[0,100],[0,150],[0,360]],identityMap=e=>[...e],r=[{name_:"RGB",fromRgb_:identityMap,toRgb_:identityMap,labels_:["Red","Green","Blue"],max_:map(3,(()=>[0,255])),isSupported_:!0},{name_:"HSL",fromRgb_:rgb2hsl,toRgb_:hsl2rgb,labels_:["Hue","Saturation","Luminance"],max_:e,isSupported_:!0},{name_:"HSB",fromRgb_:rgb2hsb,toRgb_:hsb2rgb,labels_:["Hue","Saturation","Brightness"],max_:e,isSupported_:!1},{name_:"HWB",fromRgb_:rgb2hwb,toRgb_:hwb2rgb,labels_:["Hue","Whiteness","Blackness"],max_:e,isSupported_:!0},{name_:"CMYK",fromRgb_:rgb2cmyk,toRgb_:cmyk2rgb,labels_:["Cyan","Magenta","Yellow","Black"],max_:map(4,(()=>[0,100])),isSupported_:!1},(a.fromRgb_=rgb2xyz,a.toRgb_=xyz2rgb,a),{name_:"LAB",fromRgb_:rgb2lab,toRgb_:lab2rgb,labels_:["L*","a*","b*"],max_:[[0,100],[-125,125],[-125,125]],isSupported_:!0},{name_:"LUV",fromRgb_:u,toRgb_:h,labels_:["L*","u*","v*"],max_:[[0,100],[-134,220],[-140,122]],isSupported_:!1},{name_:"LCHab",fromRgb_:rgb2lchab,toRgb_:lchab2rgb,labels_:["L*","C*","h"],max_:t,isSupported_:!0},{name_:"LCHuv",fromRgb_:rgb2lchuv,toRgb_:lchuv2rgb,labels_:["L*","C*","h"],max_:t,isSupported_:!1},{name_:"Oklab",fromRgb_:rgb2oklab,toRgb_:oklab2rgb,labels_:["L","a","b"],max_:[[0,1],[-.4,.4],[-.4,.4]],isSupported_:!0},{name_:"Oklch",fromRgb_:rgb2oklch,toRgb_:oklch2rgb,labels_:["L","C","h"],max_:[[0,1],[0,.4],[0,360]],isSupported_:!0}];if("undefined"!=typeof CSS)for(const e of r){const t=/^LCH/.test(e.name_)?"lch":e.name_,r=map(e.labels_,(()=>0)).join(" ");e.isSupported_=CSS.supports("color","XYZ"===t?`color(xyz ${r})`:`${t}(${r})`)}return r})(),g={RGB:0,HSL:1,HSB:2,HWB:3,CMYK:4,XYZ:5,LAB:6,LUV:7,LCHAB:8,LCHUV:9,OKLAB:10,OKLCH:11},getColorSpace=(e=c[0])=>"string"==typeof e?(e=e.toUpperCase(),c[g[e]??0]):e,getSpaceRange=e=>map(getColorSpace(e).max_,(e=>[e[0],e[1]])),toSpace=(e,t,r)=>(t=getColorSpace(t))===(r=getColorSpace(r))?[...e]:"RGB"===t.name_?r.fromRgb_(e):("RGB"===r.name_&&t.toRgb_(e),r.fromRgb_(t.toRgb_(e))),getCssColor=(e,t="RGB",r={})=>{let o,n,s,{checkSupport_:a=!1,sep_:l=" ",percent_:i=!0,place_:p=2}=r;if(t=getColorSpace(t),a&&!t.isSupported_)return getCssColor(t.toRgb_(e),c[0],r);a&&(l=" "),!0===p&&(p=2);const u=!1===p,h=/^LCH/.test(t.name_)?"lch":t.name_.toLowerCase(),g="xyz"===h,x=t.max_.reduce(((t,r,h)=>(s=r[1],o=e[h],n=i&&360!==s||100===s?"%":"",g&&!i&&a?o/=100:!g&&i&&360!==s&&(o*=100/s),t+(h?l:"")+(u?o:round(o,p))+n)),"");return g&&a?`color(xyz-${t.white_??""} ${x})`:`${h}(${x})`},rgbArraylize=e=>"string"==typeof e?hex2rgb(e):e,rgb2hue=e=>hsbHelper(rgbArraylize(e))[0],srgb2linearRgb=e=>e<10.31475?e/3294.6:pow((e+14.025)/269.025,2.4),linearRgb2srgb=e=>e<.0031308?3294.6*e:269.025*pow(e,1/2.4)-14.025,rgb2gray=e=>dot3(rgbArraylize(e),[.299,.587,.114]),isLight=e=>rgb2gray(e)>127.5,getRelativeLuminance=e=>(e=rgbArraylize(e),.2126*srgb2linearRgb(e[0])+.7152*srgb2linearRgb(e[1])+.0722*srgb2linearRgb(e[2])),getContrastRatio=(e,t)=>{const r=(getRelativeLuminance(e)+.05)/(getRelativeLuminance(t)+.05);return round(r<1?1/r:r,2)},isReadable=(e,t,r={})=>{const{levelAAA:o,isLarge:n}=r,s=o&&!n?7:!o&&n?3:4.5;return getContrastRatio(e,t)>=s},randRgbGen=()=>map(3,(()=>randInt(255))),x=["mean","brighter","deeper","soft light","additive","weighted"],mix=(e,t,r=.5,o=1-r)=>(r+o>1&&(o=1-(r/=r+o)),map(Math.min(e.length,t.length),(n=>r*e[n]+o*t[n]))),m=elementwiseMean,gammaMix=(e,t,r=.3)=>{const o=elementwiseMean(e,t),n=rgb2hsl(o);return n[1]=100*pow(n[1]/100,r),n[2]=100*pow(n[2]/100,r),hsl2rgb(n)},brighterMix=(e,t)=>gammaMix(e,t,.3),deeperMix=(e,t)=>gammaMix(e,t,1.5),softLightBlend=(e,t,r="w3c")=>{let o,n,s;return e=map(e,(e=>e/255)),t=map(t,(e=>e/255)),o="photoshop"===r?(e,r)=>(n=t[r],255*(n<.5?e*(2*n+e*(1-2*n)):2*e*(1-n)+Math.sqrt(e)*(2*n-1))):"pegtop"===r?(e,r)=>(n=t[r],255*e*(2*n+e*(1-2*n))):"illusions.hu"===r?(e,r)=>(n=t[r],255*e**(2**(1-2*n))):(e,r)=>(n=t[r],s=e<=.25?((16*e-12)*e+4)*e:Math.sqrt(e),255*(n<=.5?e-(1-2*n)*e*(1-e):e+(2*n-1)*(s-e))),map(e,o)},additive=(e,t)=>map(e,((e,r)=>clip(e+t[r],0,255)),3),mixColors=(e,t="mean",...r)=>{"number"==typeof t&&(t=x[t]);const o={[x[0]]:m,[x[1]]:brighterMix,[x[2]]:deeperMix,[x[3]]:softLightBlend,[x[4]]:additive,[x[5]]:mix}[t]??m;let n=[...e[0]],s=1;for(;s<e.length;)n=o(n,e[s++],...r);return n},b=["shades","tints","tones","analogous","triadic","square","complementary","split complementary","tetradic1","tetradic2","tetradic3"],shiftHue=(e,t)=>{const r=e[0],o=e[1],n=e[2];return t.map((e=>[r+e,o,n]))},shades=(e,t=6)=>{const[r,o,n]=e;return map(t,(e=>[r,o,n*(1-e/t)]))},tints=(e,t=6)=>{const[r,o,n]=e;return map(t,(e=>[r,o*(1-e/t),n]))},tones=(e,t=6)=>{const[r,o,n]=e;return map(t,(e=>[r,o*(e=1-e/t),n*e]))},d={[b[0]]:shades,[b[1]]:tints,[b[2]]:tones,[b[3]]:[-30,0,30],[b[4]]:[0,120,240],[b[5]]:[0,90,180,270],[b[6]]:[0,180],[b[7]]:[0,150,210],[b[8]]:[0,30,180,210],[b[9]]:[0,60,180,240],[b[10]]:[0,30,150,180]},harmonize=(e,t,r)=>{"number"==typeof t&&(t=b[t]),t||(t="analogous");const o=d[t],n=Array.isArray(o)?shiftHue(e,o):o(e,r);return map(n,(e=>hsb2rgb(e)))},_=["linear","gamma","auto enhancement","auto brightness"],scaling=(e,t=1)=>map(e,(e=>map(e,(e=>clip(e*t,0,255))))),gammaCorrection=(e,t=1)=>map(e,(e=>map(e,(e=>255*pow(e/255,t))))),autoEnhancement=e=>{let t,r=1/0,o=0,n=0;const s=map(e,(e=>{const t=rgb2lab(e),n=t[0];return n<r&&(r=n),n>o&&(o=n),t}));for(;n<s.length;)t=s[n],t[0]=rangeMapping(t[0],r,o,0,100),s[n++]=lab2rgb(t);return s},autoBrightness=(e,t=.7)=>{let r,o,n=0;const s=map(e,(e=>(o=rgb2lab(e),n+=o[0],o)));if(t<=1e-7)r=()=>[0,0,0];else if(n<1e-5||1===t)r=()=>[255,255,255];else{const o=Math.log(t)/Math.log(n/e.length/100);r=e=>(e[0]=100*pow(e[0]/100,o),lab2rgb(e))}return map(s,r)},getAdjuster=e=>e===_[0]?scaling:e===_[1]?gammaCorrection:e===_[2]?autoEnhancement:autoBrightness,adjContrast=(e,t,...r)=>{"number"==typeof t&&(t=_[t]),t||(t="linear");return getAdjuster(t)(e,...r)},M=["luminance","random","reversion","CIE76","CIE94","CIEDE2000"],diffLuminance=(e,t)=>rgb2gray(e)-rgb2gray(t),distE76=(e,t)=>l2Dist3(e,t),distE94=(e,t)=>{const r=e[0],o=e[1],n=e[2],s=t[0],a=t[1],l=t[2],i=l2Norm3(o,n),p=o-a,u=n-l,h=r-s,c=i-l2Norm3(a,l),g=Math.sqrt(p*p+u*u-c*c)||0;return squareSum4(h,c/(1+.045*i),g/(1+.015*i))},S=(()=>{const r=Math.cos(e(6)),o=Math.sin(e(6)),n=Math.cos(e(30)),s=Math.cos(e(63)),a=Math.sin(e(63));return(l,i)=>{const p=l[0],u=l[1],h=l[2],c=i[0],g=i[1],x=i[2],m=l2Norm3(u,h),b=l2Norm3(g,x),d=pow((m+b)/2,7),_=1.5-Math.sqrt(d/(d+6103515625))/2,M=u*_,S=g*_,R=l2Norm3(M,h),B=l2Norm3(S,x),y=(t(Math.atan2(h,M))+360)%360,L=(t(Math.atan2(x,S))+360)%360;let C=L-y,k=(y+L)/2;R&&B?(C>180||C<-180)&&(C+=360,k+=k<180?180:-180):(C=0,k*=2);const G=Math.cos(e(k)),D=Math.sin(e(k)),w=2*G*G-1,A=1+.2*s-.17*(G*n+D/2)+.32*((4*G*G-3)*G*r+(4*D*D-3)*D*o)+.4*w*(.6-w*s-2*G*D*a),H=((p+c)/2-50)**2,v=(R+B)/2,O=pow(v,7),P=1+.015*H/Math.sqrt(20+H),q=1+.045*v,T=1+.015*v*A,I=2*Math.sqrt(O/(O+6103515625))*Math.sin(e(60/Math.exp((k/25-11)**2))),E=(c-p)/P,W=(B-R)/q,Y=2*Math.sqrt(R*B)*Math.sin(e(C/2))/T;return Math.sqrt(squareSum4(E,W,Y)-I*W*Y)}})(),shuffle=e=>{let t;for(let r=e.length-1;r>0;r--)t=randInt(r),[e[r],e[t]]=[e[t],e[r]];return e},tspGreedy=(e,t,r,o=!1)=>{const n=[],s=map(e,((e,t)=>t)),a=map(e,(e=>rgb2lab(t(e))));let l,i,p,u=a[0];for(;s.length;){i=1/0,p=0;for(let e=0;e<s.length;e++)l=r(u,a[s[e]]),l<i&&(i=l,p=e);u=a[s[p]],n.push(e[s[p]]),s.splice(p,1)}return o?cloneDeep(n):n},sortColors=(e,t,r)=>{"number"==typeof t&&(t=M[t]);let o,n=cloneDeep(e);return t===M[0]?n=n.sort(((e,t)=>diffLuminance(r(e),r(t)))):t===M[1]?n=shuffle(n):t===M[2]?n.reverse():o=t===M[3]?distE76:t===M[4]?distE94:S,o&&(n=tspGreedy(n,r,o)),n},sortRgbs=(e,t)=>sortColors(e,t,(e=>e)),R=new Map(Object.entries({RosyBrown:[188,143,143],IndianRed:[205,92,92],Brown:[165,42,42],FireBrick:[178,34,34],LightCoral:[240,128,128],Maroon:[128,0,0],DarkRed:[139,0,0],Red:[255,0,0],Snow:[255,250,250],MistyRose:[255,228,225],Salmon:[250,128,114],Tomato:[255,99,71],DarkSalmon:[233,150,122],Coral:[255,127,80],OrangeRed:[255,69,0],LightSalmon:[255,160,122],Sienna:[160,82,45],SeaShell:[255,245,238],Chocolate:[210,105,30],SaddleBrown:[139,69,19],SandyBrown:[244,164,96],PeachPuff:[255,218,185],Peru:[205,133,63],Linen:[250,240,230],Bisque:[255,228,196],Darkorange:[255,140,0],BurlyWood:[222,184,135],AntiqueWhite:[250,235,215],Tan:[210,180,140],NavajoWhite:[255,222,173],BlanchedAlmond:[255,235,205],PapayaWhip:[255,239,213],Moccasin:[255,228,181],Orange:[255,165,0],Wheat:[245,222,179],OldLace:[253,245,230],FloralWhite:[255,250,240],DarkGoldenRod:[184,134,11],GoldenRod:[218,165,32],Cornsilk:[255,248,220],Gold:[255,215,0],LemonChiffon:[255,250,205],Khaki:[240,230,140],PaleGoldenRod:[238,232,170],DarkKhaki:[189,183,107],Beige:[245,245,220],LightGoldenRodYellow:[250,250,210],Olive:[128,128,0],Yellow:[255,255,0],LightYellow:[255,255,224],Ivory:[255,255,240],OliveDrab:[107,142,35],YellowGreen:[154,205,50],DarkOliveGreen:[85,107,47],GreenYellow:[173,255,47],Chartreuse:[127,255,0],LawnGreen:[124,252,0],DarkSeaGreen:[143,188,143],ForestGreen:[34,139,34],LimeGreen:[50,205,50],LightGreen:[144,238,144],PaleGreen:[152,251,152],DarkGreen:[0,100,0],Green:[0,128,0],Lime:[0,255,0],HoneyDew:[240,255,240],SeaGreen:[46,139,87],MediumSeaGreen:[60,179,113],SpringGreen:[0,255,127],MintCream:[245,255,250],MediumSpringGreen:[0,250,154],MediumAquaMarine:[102,205,170],Aquamarine:[127,255,212],Turquoise:[64,224,208],LightSeaGreen:[32,178,170],MediumTurquoise:[72,209,204],DarkSlateGray:[47,79,79],PaleTurquoise:[175,238,238],Teal:[0,128,128],DarkCyan:[0,139,139],Cyan:[0,255,255],LightCyan:[224,255,255],Azure:[240,255,255],DarkTurquoise:[0,206,209],CadetBlue:[95,158,160],PowderBlue:[176,224,230],LightBlue:[173,216,230],DeepSkyBlue:[0,191,255],SkyBlue:[135,206,235],LightSkyBlue:[135,206,250],SteelBlue:[70,130,180],AliceBlue:[240,248,255],DodgerBlue:[30,144,255],SlateGray:[112,128,144],LightSlateGray:[119,136,153],LightSteelBlue:[176,196,222],CornflowerBlue:[100,149,237],RoyalBlue:[65,105,225],MidnightBlue:[25,25,112],Lavender:[230,230,250],Navy:[0,0,128],RebeccaPurple:[102,51,153],DarkBlue:[0,0,139],MediumBlue:[0,0,205],Blue:[0,0,255],GhostWhite:[248,248,255],SlateBlue:[106,90,205],DarkSlateBlue:[72,61,139],MediumSlateBlue:[123,104,238],MediumPurple:[147,112,216],BlueViolet:[138,43,226],Indigo:[75,0,130],DarkOrchid:[153,50,204],DarkViolet:[148,0,211],MediumOrchid:[186,85,211],Thistle:[216,191,216],Plum:[221,160,221],Violet:[238,130,238],Purple:[128,0,128],DarkMagenta:[139,0,139],Magenta:[255,0,255],Orchid:[218,112,214],MediumVioletRed:[199,21,133],DeepPink:[255,20,147],HotPink:[255,105,180],PaleVioletRed:[216,112,147],LavenderBlush:[255,240,245],Crimson:[220,20,60],Pink:[255,192,203],LightPink:[255,182,193],White:[255,255,255],WhiteSmoke:[245,245,245],Gainsboro:[220,220,220],LightGray:[211,211,211],Silver:[192,192,192],DarkGray:[169,169,169],Gray:[128,128,128],DimGray:[105,105,105],Black:[0,0,0]})),rgb2named=e=>{let t,r,o=1/0;for(const[n,s]of R)t=l2Dist3(e,s),t<o&&(r=n,o=t);return r},named2rgb=e=>R.get(e)??[0,0,0];exports.COLOR_SPACES=c,exports.CONTRAST_METHODS=_,exports.HARMONY_METHODS=b,exports.MIXING_MODES=x,exports.SORTING_ACTIONS=M,exports.additive=additive,exports.adjContrast=adjContrast,exports.autoBrightness=autoBrightness,exports.autoEnhancement=autoEnhancement,exports.brighterMix=brighterMix,exports.cieTrans=i,exports.cieTransInv=p,exports.clip=clip,exports.cloneDeep=cloneDeep,exports.cmyk2rgb=cmyk2rgb,exports.deeperMix=deeperMix,exports.deg2rad=e,exports.diffLuminance=diffLuminance,exports.distE00=S,exports.distE76=distE76,exports.distE94=distE94,exports.dot3=dot3,exports.elementwiseMean=elementwiseMean,exports.gammaCorrection=gammaCorrection,exports.gammaMix=gammaMix,exports.getAdjuster=getAdjuster,exports.getColorSpace=getColorSpace,exports.getContrastRatio=getContrastRatio,exports.getCssColor=getCssColor,exports.getRelativeLuminance=getRelativeLuminance,exports.getSpaceRange=getSpaceRange,exports.harmonize=harmonize,exports.hex2rgb=hex2rgb,exports.hsb2rgb=hsb2rgb,exports.hsbHelper=hsbHelper,exports.hsl2rgb=hsl2rgb,exports.hwb2rgb=hwb2rgb,exports.isLight=isLight,exports.isReadable=isReadable,exports.isValidHex=isValidHex,exports.l2Dist3=l2Dist3,exports.l2Norm3=l2Norm3,exports.lab2rgb=lab2rgb,exports.lcc2lch=lcc2lch,exports.lch2lcc=lch2lcc,exports.lchab2rgb=lchab2rgb,exports.lchuv2rgb=lchuv2rgb,exports.linearRgb2srgb=linearRgb2srgb,exports.luv2rgb=h,exports.map=map,exports.matVecProduct3=matVecProduct3,exports.meanMix=m,exports.mix=mix,exports.mixColors=mixColors,exports.named2rgb=named2rgb,exports.namedColor=R,exports.oklab2rgb=oklab2rgb,exports.oklch2rgb=oklch2rgb,exports.pow=pow,exports.rad2deg=t,exports.randInt=randInt,exports.randRgbGen=randRgbGen,exports.rangeMapping=rangeMapping,exports.rgb2cmyk=rgb2cmyk,exports.rgb2gray=rgb2gray,exports.rgb2hex=rgb2hex,exports.rgb2hsb=rgb2hsb,exports.rgb2hsl=rgb2hsl,exports.rgb2hue=rgb2hue,exports.rgb2hwb=rgb2hwb,exports.rgb2lab=rgb2lab,exports.rgb2lchab=rgb2lchab,exports.rgb2lchuv=rgb2lchuv,exports.rgb2luv=u,exports.rgb2named=rgb2named,exports.rgb2oklab=rgb2oklab,exports.rgb2oklch=rgb2oklch,exports.rgb2xyz=rgb2xyz,exports.rgbArraylize=rgbArraylize,exports.round=round,exports.scaling=scaling,exports.setReferenceWhite=l,exports.shades=shades,exports.shiftHue=shiftHue,exports.shuffle=shuffle,exports.softLightBlend=softLightBlend,exports.sortColors=sortColors,exports.sortRgbs=sortRgbs,exports.squareSum4=squareSum4,exports.srgb2linearRgb=srgb2linearRgb,exports.tints=tints,exports.toSpace=toSpace,exports.tones=tones,exports.tspGreedy=tspGreedy,exports.xyz2rgb=xyz2rgb;