colormath.js
Version:
A color conversion and color manipulation library written in typescript for Node.js, Deno and Browser.
2 lines (1 loc) • 7.46 kB
JavaScript
var Y=Object.defineProperty;var t=(e,l)=>Y(e,"name",{value:l,configurable:!0});var k=t(e=>typeof e=="string"?I(e):e,"RGB"),L=t(e=>Math.floor(Math.random()*e),"RANDOM"),g=class{constructor(l){this.rgb=l}get hex(){return A(this.rgb)}valueOf(){return this.hex}};t(g,"ColorResult");function T(e){if(e[0]=="#"&&(e=e.slice(1)),e.length>=6)return e.slice(0,6);if(e.length==3){let l="";for(let u=0;u<e.length;u++)l+=`${e[u]}${e[u]}`;return l}else return"000000"}t(T,"rawHex");function Z(e){return`#${T(e)}`}t(Z,"formatHex");function P(e){let l=parseInt(e,16);return[l>>16,l>>8&255,l&255]}t(P,"breakHex");function w(e){let l=Math.round(e).toString(16);return`${l.length==1?"0":""}${l}`}t(w,"padHex");function I(e){return P(T(e))}t(I,"hexToRgb");function A([e,l,u,r]){return`#${w(e)}${w(l)}${w(u)}${r?w(r*255):""}`}t(A,"rgbToHex");function y(){return[L(255),L(255),L(255)]}t(y,"random");function z(){return`#${L(16777215).toString(16)}`}t(z,"randomHex");function s(e){return parseFloat(e.toFixed(1))}t(s,"fixedFloat");var O;(o=>{o.HEX_MAX=16777215,o.toRgb=I;function u(m){let n=Math.min(m,o.HEX_MAX).toString(16);return`#${"0".repeat(6-n.length)}${n}`}o.fromInt=u,t(u,"fromInt");function r(m){return Math.min(parseInt(T(m),16),o.HEX_MAX)}o.toInt=r,t(r,"toInt")})(O||(O={}));var F;(d=>{d.toHex=A;function l([i,f,p]){i/=255,f/=255,p/=255;let b=Math.min(i,f,p),c=Math.max(i,f,p);if(b==c)return[0,0,s(b*100)];let R=c-b;return[M([i,f,p],c,b),s(100*R/c),s(100*c)]}d.toHsv=l,t(l,"toHsv");function u([i,f,p]){i/=255,f/=255,p/=255;let b=Math.min(i,f,p),c=Math.max(i,f,p),R=c-b,C=(c+b)/2,H=0,V=0;return c!=b&&(V=c==b?0:R/(C>.5?2-R:c+b),H=M([i,f,p],c,b)),[H,s(V*100),s(C*100)]}d.toHsl=u,t(u,"toHsl");function r([i,f,p]){let b=Math.min(i,f,p),c=Math.max(i,f,p);return[M([i,f,p],c,b),s(100/255*b),s(100*(1-1/255*c))]}d.toHwb=r,t(r,"toHwb");function o([i,f,p]){let b=1-i/255,c=1-f/255,R=1-p/255,C=Math.min(b,c,R),H=1-C,V=t(W=>s((W-C)/H*255)||0,"f");return[V(b),V(c),V(R),s(C*255)]}d.toCmyk=o,t(o,"toCmyk");function m([i,f,p],b=null){if(b=Math.round((typeof b=="number"?b:l([i,f,p])[2])/50),!b)return 30;let c=30+(Math.round(p/255)<<2|Math.round(f/255)<<1|Math.round(i/255));return b==2&&(c+=60),c}d.toAnsi16=m,t(m,"toAnsi16");function n([i,f,p]){return i>>4===f>>4&&f>>4===p>>4?i<8?16:i>248?231:Math.round((i-8)/247*24)+232:16+36*Math.round(i/255*5)+6*Math.round(f/255*5)+Math.round(p/255*5)}d.toAnsi256=n,t(n,"toAnsi256");function a([i,f,p]){let b=t(H=>(H/=255,H>.04045?((H+.055)/1.055)**2.4:H/12.92),"f");i=b(i),f=b(f),p=b(p);let c=i*.4124564+f*.3575761+p*.1804375,R=i*.2126729+f*.7151522+p*.072175,C=i*.0193339+f*.119192+p*.9503041;return[c*100,R*100,C*100]}d.toXyz=a,t(a,"toXyz");function x(i){return B.toLab(a(i))}d.toLab=x,t(x,"toLab");function M([i,f,p],b,c){(!c||!b)&&(b=Math.max(i,f,p),c=Math.min(i,f,p));let R=i==c,C=p==c,H=R?3:C?1:5,V=R?f-p:C?i-f:p-i;return s((H-V/(b-c))*60)||0}d.toHue=M,t(M,"toHue");function h([i,f,p]){return s((i+f+p)/765*100)}d.toGray=h,t(h,"toGray");function $(i){return i.map(f=>s(f/255*65535))}d.toApple=$,t($,"toApple")})(F||(F={}));var S;(r=>{function e([o,m,n]){m/=100,n/=100;let a=[0,0,0],x=Math.floor(o/60%6),M=o/60-x,h=n*(1-m),$=n*(1-M*m),d=n*(1-(1-M)*m);switch(x%6){case 0:a=[n,d,h];break;case 1:a=[$,n,h];break;case 2:a=[h,n,d];break;case 3:a=[h,$,n];break;case 4:a=[d,h,n];break;case 5:a=[n,h,$];break}return a.map(i=>s(i*255))}r.toRgb=e,t(e,"toRgb");function l(o){return A(e(o))}r.toHex=l,t(l,"toHex");function u([o,m,n]){m/=100,n/=100;let a=Math.max(.01,n),x=(2-m)*n,M=(2-m)*a,h=m*a/(M>1?2-M:M);return[o,s(h*100),s(x*50)]}r.toHsl=u,t(u,"toHsl")})(S||(S={}));var X;(r=>{function e([o,m,n]){m/=100,n/=100;let a=t(h=>(h+o/30)%12,"k"),x=m*Math.min(n,1-n),M=t(h=>s((n-x*Math.max(-1,Math.min(a(h)-3,Math.min(9-a(h),1))))*255),"f");return[M(0),M(8),M(4)]}r.toRgb=e,t(e,"toRgb");function l([o,m,n]){m/=100,n/=100;let a=Math.max(.01,n),x=m;n*=2,m*=n>1?2-n:n,x*=a>1?2-a:a;let M=n==0?x*2/(a+x):2*m/(n+m),h=(n+m)/2;return[o,s(M*100),s(h*100)]}r.toHsv=l,t(l,"toHsv");function u(o){return A(e(o))}r.toHex=u,t(u,"toHex")})(X||(X={}));var D;(l=>{function e([u,r,o]){return X.toRgb([u,100,50]).map(m=>m*(100-r-o)/100+r)}l.toRgb=e,t(e,"toRgb")})(D||(D={}));var E;(u=>{function e([r,o,m,n]){r/=100,o/=100,m/=100,n/=100;let a=1-n,x=t(M=>s((1-(M*a+n))*255),"f");return[x(r),x(o),x(m)]}u.toRgb=e,t(e,"toRgb");function l(r){return F.toCmyk(X.toRgb(r))}u.toHex=l,t(l,"toHex")})(E||(E={}));var B;(u=>{function e([r,o,m]){r/=100,o/=100,m/=100;let n=t(a=>(a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,s(Math.min(Math.max(0,a),1)*255)),"f");return[n(r*3.2404542+o*-1.5371385+m*-.4985314),n(r*-.969266+o*1.8760108+m*.041556),n(r*.0556434+o*-.2040259+m*1.0572252)]}u.toRgb=e,t(e,"toRgb");function l([r,o,m]){let n=t(a=>a>.008856?a**(1/3):7.787*a+16/116,"f");return r=n(r/95.047),o=n(o/100),m=n(m/108.883),[116*o-16,500*(r-o),200*(o-m)]}u.toLab=l,t(l,"toLab")})(B||(B={}));var N;(r=>{function e(o){return B.toRgb(l(o))}r.toRgb=e,t(e,"toRgb");function l([o,m,n]){let a=(o+16)/116,x=m/500+a,M=a-n/200,h=t($=>{let d=$**3;return d>.008856?d:($-16/116)/7.787},"f");return[h(x)*95.047,h(a)*100,h(M)*108.883]}r.toXyz=l,t(l,"toXyz");function u([o,m,n]){let a=Math.atan2(n,m)*360/2/Math.PI;return a<0&&(a+=360),[o,Math.sqrt(m*m+n*n),a]}r.toLch=u,t(u,"toLch")})(N||(N={}));var _;(l=>{function e([u,r,o]){let m=o/360*2*Math.PI;return[u,r*Math.cos(m),r*Math.sin(m)]}l.toLab=e,t(e,"toLab")})(_||(_={}));var j;(l=>{function e(u){let r=u%10;if(r===0||r===7)return u>50&&(r+=3.5),r/=10.5*255,[r,r,r];let o=(~~(u>50)+1)*.5;return[s((r&1)*o*255),s((r>>1&1)*o*255),s((r>>2&1)*o*255)]}l.toRgb=e,t(e,"toRgb")})(j||(j={}));var J;(l=>{function e(u){if(u>=232){let o=(u-232)*10+8;return[o,o,o]}u-=16;let r=u%36;return[s(Math.floor(u/36)/5*255),s(Math.floor(r/6)/5*255),s(r%6/5*255)]}l.toRgb=e,t(e,"toRgb")})(J||(J={}));var K;(a=>{a.toHsl=t(x=>[0,0,x],"toHsl"),a.toHsv=t(x=>[0,0,x],"toHsv"),a.toHwb=t(x=>[0,100,x],"toHwb"),a.toCmyk=t(x=>[0,0,0,100-x],"toCmyk"),a.toLab=t(x=>[x,0,0],"toLab");function m(x){let M=s(x/100*255);return[M,M,M]}a.toRgb=m,t(m,"toRgb");function n(x){let M=Math.round(x/100*255)&255;return O.fromInt((M<<16)+(M<<8)+M)}a.toHex=n,t(n,"toHex")})(K||(K={}));var Q;(l=>{function e(u){return u.map(r=>s(r/65535*255))}l.toRgb=e,t(e,"toRgb")})(Q||(Q={}));function U(e,l){let u=F.toHsv(typeof e=="string"?I(e):e);return l(u),new g(S.toRgb(u))}t(U,"useHSV");function it(e){let[l,u,r]=k(e);return new g([255-l,255-u,255-r])}t(it,"invert");function v(e,l=30){return l>360&&(l%=360),U(e,u=>u[0]+=l)}t(v,"hue");function ft(e){return v(e,180)}t(ft,"complement");function tt(e,l=20){return U(e,u=>{let r=u[1]+l;r>100?r=100:r<0&&(r=0),u[1]=r})}t(tt,"saturate");function pt(e,l=20){return tt(e,-l)}t(pt,"desaturate");function xt(e){let[l,u,r]=k(e),o=Math.floor((l+u+r)/765*100);return new g([o,o,o])}t(xt,"grayscale");function bt(e,l,u=.5){let r=[0,0,0],o=k(e),m=k(l);for(let n=0;n<3;n++)r[n]=o[n]*u+m[n]*(1-u);return new g(r)}t(bt,"mixColor");function et(e,l=10){let u=k(e);l*=2.55;for(let r=0;r<3;r++)u[r]+=l,u[r]>255?u[r]=255:u[r]<0&&(u[r]=0);return new g(u)}t(et,"lighten");function ct(e,l=20){return et(e,-l)}t(ct,"darken");export{g as ColorResult,j as ansi16,J as ansi256,Q as apple,P as breakHex,E as cmyk,ft as complement,ct as darken,pt as desaturate,Z as formatHex,K as gray,xt as grayscale,O as hex,X as hsl,S as hsv,v as hue,D as hwb,it as invert,N as lab,_ as lch,et as lighten,bt as mixColor,w as padHex,y as random,z as randomHex,T as rawHex,F as rgb,tt as saturate,B as xyz};