UNPKG

@tsports/go-colorful

Version:

A TypeScript port of the go-colorful package for working with colors

2 lines (1 loc) 27.5 kB
var bJ=Object.defineProperty;var vJ=(j,J)=>{for(var Q in J)bJ(j,Q,{get:J[Q],enumerable:!0,configurable:!0,set:($)=>J[Q]=()=>$})};var b=0.00392156862745098,Y=[0.95047,1,1.08883],Mj=[0.96422,1,0.82521],v=[0.95045592705167,1,1.089057750759878];var P=(j)=>j*j,PJ=(j)=>j*j*j,y=(j)=>Math.max(0,Math.min(j,1)),d=(j,J,Q)=>{let $=((J-j)%360+540)%360-180;return(j+Q*$+360)%360},n=(j)=>{if(j<=0.04045)return j/12.92;return((j+0.055)/1.055)**2.4},c=(j)=>{if(j<=0.0031308)return 12.92*j;return 1.055*j**0.4166666666666667-0.055},t=(j)=>{let J=j-0.5,Q=J*J,$=Q*J,K=Q*Q;return-0.248750514614486+0.925583310193438*j+1.16740237321695*Q+0.280457026598666*$-0.0757991963780179*K},s=(j)=>{if(j>0.2){let J=j-0.6,Q=J*J,$=Q*J,K=Q*Q,V=$*Q;return 0.442430344268235+0.592178981271708*j-0.287864782562636*Q+0.253214392068985*$-0.272557158129811*K+0.325554383321718*V}else if(j>0.03){let J=j-0.115,Q=J*J,$=Q*J,K=Q*Q,V=$*Q;return 0.194915592891669+1.55227076330229*j-3.93691860257828*Q+18.0679839248761*$-101.468750302746*K+632.341487393927*V}else{let J=j-0.015,Q=J*J,$=Q*J,K=Q*Q,V=$*Q;return 0.0519565234928877+5.09316778537561*j-99.0338180489702*Q+3484.52322764895*$-150028.083412663*K+7168008.42971613*V}};var IJ=57.29577951308232,SJ=0.017453292519943295;class D{r;g;b;constructor(j,J,Q){this.r=j;this.g=J;this.b=Q}rgba(){let j=Math.floor(this.r*65535+0.5),J=Math.floor(this.g*65535+0.5),Q=Math.floor(this.b*65535+0.5);return[j,J,Q,65535]}rgb255(){let j=Math.floor(this.r*255+0.5),J=Math.floor(this.g*255+0.5),Q=Math.floor(this.b*255+0.5);return[j,J,Q]}values(){return[this.r,this.g,this.b]}isValid(){return 0<=this.r&&this.r<=1&&0<=this.g&&this.g<=1&&0<=this.b&&this.b<=1}clamped(){return new D(y(this.r),y(this.g),y(this.b))}distanceRgb(j){return Math.sqrt(P(this.r-j.r)+P(this.g-j.g)+P(this.b-j.b))}distanceLinearRgb(j){let[J,Q,$]=this.linearRgb(),[K,V,N]=j.linearRgb();return Math.sqrt(P(J-K)+P(Q-V)+P($-N))}distanceRiemersma(j){let J=(this.r+j.r)/2,Q=this.r-j.r,$=this.g-j.g,K=this.b-j.b;return Math.sqrt((2+J)*Q*Q+4*$*$+(2+(1-J))*K*K)}almostEqualRgb(j){return Math.abs(this.r-j.r)+Math.abs(this.g-j.g)+Math.abs(this.b-j.b)<3*b}hsv(){let j=Math.min(Math.min(this.r,this.g),this.b),J=Math.max(Math.max(this.r,this.g),this.b),Q=J-j,$=0;if(J!==0)$=Q/J;let K=0;if(j!==J){if(J===this.r)K=(this.g-this.b)/Q%6;else if(J===this.g)K=(this.b-this.r)/Q+2;else if(J===this.b)K=(this.r-this.g)/Q+4;if(K*=60,K<0)K+=360}return[K,$,J]}hsl(){let j=Math.min(Math.min(this.r,this.g),this.b),J=Math.max(Math.max(this.r,this.g),this.b),Q=(J+j)/2,$=0,K=0;if(j!==J){if(Q<0.5)$=(J-j)/(J+j);else $=(J-j)/(2-J-j);if(J===this.r)K=(this.g-this.b)/(J-j);else if(J===this.g)K=2+(this.b-this.r)/(J-j);else K=4+(this.r-this.g)/(J-j);if(K*=60,K<0)K+=360}return[K,$,Q]}hex(){let j=Math.floor(this.r*255+0.5),J=Math.floor(this.g*255+0.5),Q=Math.floor(this.b*255+0.5);return`#${j.toString(16).padStart(2,"0")}${J.toString(16).padStart(2,"0")}${Q.toString(16).padStart(2,"0")}`}linearRgb(){return[n(this.r),n(this.g),n(this.b)]}fastLinearRgb(){return[t(this.r),t(this.g),t(this.b)]}xyz(){let[j,J,Q]=this.linearRgb();return dJ(j,J,Q)}xyy(){return cJ(...this.xyz())}xyyWhiteRef(j){let[J,Q,$]=this.xyz();return BJ(J,Q,$,j)}lab(){return CJ(...this.xyz())}labWhiteRef(j){let[J,Q,$]=this.xyz();return EJ(J,Q,$,j)}luv(){return hJ(...this.xyz())}luvWhiteRef(j){let[J,Q,$]=this.xyz();return ZJ(J,Q,$,j)}hcl(){return this.hclWhiteRef(Y)}hclWhiteRef(j){let[J,Q,$]=this.labWhiteRef(j);return r(J,Q,$)}luvLCh(){return this.luvLChWhiteRef(Y)}luvLChWhiteRef(j){return aJ(...this.luvWhiteRef(j))}okLab(){return rJ(...this.xyz())}okLch(){return eJ(...this.okLab())}hsLuv(){return oJ(...this.luvLChWhiteRef(v))}hpLuv(){return JQ(...this.luvLChWhiteRef(v))}distanceLab(j){let[J,Q,$]=this.lab(),[K,V,N]=j.lab();return Math.sqrt(P(J-K)+P(Q-V)+P($-N))}distanceCIE76(j){return this.distanceLab(j)}distanceLuv(j){let[J,Q,$]=this.luv(),[K,V,N]=j.luv();return Math.sqrt(P(J-K)+P(Q-V)+P($-N))}distanceHSLuv(j){let[J,Q,$]=this.hsLuv(),[K,V,N]=j.hsLuv();return Math.sqrt(P((J-K)/100)+P(Q-V)+P($-N))}distanceHPLuv(j){let[J,Q,$]=this.hpLuv(),[K,V,N]=j.hpLuv();return Math.sqrt(P((J-K)/100)+P(Q-V)+P($-N))}distanceCIE94(j){let[J,Q,$]=this.lab(),[K,V,N]=j.lab();J*=100,Q*=100,$*=100,K*=100,V*=100,N*=100;let U=1,S=1,I=1,E=0.045,F=0.015,A=J-K,Z=Math.sqrt(P(Q)+P($)),B=Math.sqrt(P(V)+P(N)),O=Z-B,q=P(Q-V)+P($-N)-P(O),T=1,k=1+E*Z,H=1+F*Z,Nj=P(A/(U*T)),i=P(O/(S*k)),w=q/P(I*H);return Math.sqrt(Nj+i+w)*0.01}distanceCIEDE2000(j){return this.distanceCIEDE2000klch(j,1,1,1)}distanceCIEDE2000klch(j,J,Q,$){let[K,V,N]=this.lab(),[U,S,I]=j.lab();K*=100,V*=100,N*=100,U*=100,S*=100,I*=100;let E=Math.sqrt(P(V)+P(N)),F=Math.sqrt(P(S)+P(I)),A=(E+F)/2,Z=0.5*(1-Math.sqrt(A**7/(A**7+6103515625))),B=(1+Z)*V,O=(1+Z)*S,q=Math.sqrt(P(B)+P(N)),T=Math.sqrt(P(O)+P(I)),k=0;if(N!==B||B!==0){if(k=Math.atan2(N,B),k<0)k+=Math.PI*2;k*=180/Math.PI}let H=0;if(I!==O||O!==0){if(H=Math.atan2(I,O),H<0)H+=Math.PI*2;H*=180/Math.PI}let Nj=U-K,i=T-q,w=0,Uj=q*T;if(Uj!==0){if(w=H-k,w>180)w-=360;else if(w<-180)w+=360}let VJ=2*Math.sqrt(Uj)*Math.sin(w/2*Math.PI/180),NJ=(K+U)/2,h=(q+T)/2,g=k+H;if(Uj!==0){if(g/=2,Math.abs(k-H)>180)if(k+H<360)g+=180;else g-=180}let yJ=1-0.17*Math.cos((g-30)*Math.PI/180)+0.24*Math.cos(2*g*Math.PI/180)+0.32*Math.cos((3*g+6)*Math.PI/180)-0.2*Math.cos((4*g-63)*Math.PI/180),xJ=30*Math.exp(-P((g-275)/25)),pJ=2*Math.sqrt(h**7/(h**7+6103515625)),mJ=1+0.015*P(NJ-50)/Math.sqrt(20+P(NJ-50)),UJ=1+0.045*h,MJ=1+0.015*h*yJ,uJ=-Math.sin(2*xJ*Math.PI/180)*pJ;return Math.sqrt(P(Nj/(J*mJ))+P(i/(Q*UJ))+P(VJ/($*MJ))+uJ*(i/(Q*UJ))*(VJ/($*MJ)))*0.01}blendRgb(j,J){return new D(this.r+J*(j.r-this.r),this.g+J*(j.g-this.g),this.b+J*(j.b-this.b))}blendLinearRgb(j,J){let[Q,$,K]=this.linearRgb(),[V,N,U]=j.linearRgb();return p(Q+J*(V-Q),$+J*(N-$),K+J*(U-K))}blendHsv(j,J){let[Q,$,K]=this.hsv(),[V,N,U]=j.hsv();if($===0&&N!==0)Q=V;else if(N===0&&$!==0)V=Q;return z(d(Q,V,J),$+J*(N-$),K+J*(U-K))}blendLab(j,J){let[Q,$,K]=this.lab(),[V,N,U]=j.lab();return m(Q+J*(V-Q),$+J*(N-$),K+J*(U-K))}blendLuv(j,J){let[Q,$,K]=this.luv(),[V,N,U]=j.luv();return Oj(Q+J*(V-Q),$+J*(N-$),K+J*(U-K))}blendHcl(j,J){let[Q,$,K]=this.hcl(),[V,N,U]=j.hcl();if($<=0.00015&&N>=0.00015)Q=V;else if(N<=0.00015&&$>=0.00015)V=Q;return u(d(Q,V,J),$+J*(N-$),K+J*(U-K)).clamped()}blendLuvLCh(j,J){let[Q,$,K]=this.luvLCh(),[V,N,U]=j.luvLCh();return Yj(Q+J*(V-Q),$+J*(N-$),d(K,U,J))}blendOkLab(j,J){let[Q,$,K]=this.okLab(),[V,N,U]=j.okLab();return Gj(Q+J*(V-Q),$+J*(N-$),K+J*(U-K))}blendOkLch(j,J){let[Q,$,K]=this.okLch(),[V,N,U]=j.okLch();if($<=0.00015&&N>=0.00015)K=U;else if(N<=0.00015&&$>=0.00015)U=K;return qj(Q+J*(V-Q),$+J*(N-$),d(K,U,J)).clamped()}}var W={r:[3.2409699419045213,-1.5373831775700935,-0.4986107602930033],g:[-0.9692436362808798,1.8759675015077206,0.04155505740717561],b:[0.05563007969699361,-0.20397695888897657,1.0569715142428786]},Ej=(j,J,Q)=>{let $=W.r[0]*j+W.r[1]*J+W.r[2]*Q,K=W.g[0]*j+W.g[1]*J+W.g[2]*Q,V=W.b[0]*j+W.b[1]*J+W.b[2]*Q;return[$,K,V]},X={x:[0.4123907992659595,0.35758433938387796,0.1804807884018343],y:[0.21263900587151036,0.7151686787677559,0.07219231536073371],z:[0.01933081871559185,0.11919477979462599,0.9505321522496606]},dJ=(j,J,Q)=>{let $=X.x[0]*j+X.x[1]*J+X.x[2]*Q,K=X.y[0]*j+X.y[1]*J+X.y[2]*Q,V=X.z[0]*j+X.z[1]*J+X.z[2]*Q;return[$,K,V]},Pj=(j)=>{if(j>0.008856451679035631)return Math.cbrt(j);return j/3*29/6*29/6+0.13793103448275862},Ij=(j)=>{if(j>0.20689655172413793)return j*j*j;return 0.12841854934601665*(j-0.13793103448275862)},CJ=(j,J,Q)=>{return EJ(j,J,Q,Y)},EJ=(j,J,Q,$)=>{let K=Pj(J/$[1]),V=1.16*K-0.16,N=5*(Pj(j/$[0])-K),U=2*(K-Pj(Q/$[2]));return[V,N,U]},iJ=(j,J,Q)=>{return FJ(j,J,Q,Y)},FJ=(j,J,Q,$)=>{let K=(j+0.16)/1.16,V=$[0]*Ij(K+J/5),N=$[1]*Ij(K),U=$[2]*Ij(K-Q/2);return[V,N,U]},Sj=(j,J,Q)=>{let $=j+15*J+3*Q;if($===0)return[0,0];return[4*j/$,9*J/$]},hJ=(j,J,Q)=>{return ZJ(j,J,Q,Y)},ZJ=(j,J,Q,$)=>{let K;if(J/$[1]<=0.008856451679035631)K=J/$[1]*903.2962962962962/100;else K=1.16*Math.cbrt(J/$[1])-0.16;let[V,N]=Sj(j,J,Q),[U,S]=Sj($[0],$[1],$[2]),I=13*K*(V-U),E=13*K*(N-S);return[K,I,E]},nJ=(j,J,Q)=>{return a(j,J,Q,Y)},a=(j,J,Q,$)=>{let K;if(j<=0.08)K=$[1]*j*100*3/29*3/29*3/29;else K=$[1]*PJ((j+0.16)/1.16);let[V,N]=Sj($[0],$[1],$[2]),U=0,S=0;if(j!==0){let I=J/(13*j)+V,E=Q/(13*j)+N;U=K*9*I/(4*E),S=K*(12-3*I-20*E)/(4*E)}return[U,K,S]},cJ=(j,J,Q)=>{return BJ(j,J,Q,Y)},BJ=(j,J,Q,$)=>{let K=J,V=j+J+Q,N,U;if(Math.abs(V)<0.00000000000001)N=$[0]/($[0]+$[1]+$[2]),U=$[1]/($[0]+$[1]+$[2]);else N=j/V,U=J/V;return[N,U,K]},tJ=(j,J,Q)=>{let $=Q,K,V;if(-0.00000000000001<J&&J<0.00000000000001)K=0,V=0;else K=Q/J*j,V=Q/J*(1-j-J);return[K,$,V]},r=(j,J,Q)=>{let $;if(Math.abs(Q-J)>0.0001&&Math.abs(J)>0.0001)$=(IJ*Math.atan2(Q,J)+360)%360;else $=0;let K=Math.sqrt(P(J)+P(Q));return[$,K,j]},sJ=(j,J,Q)=>{let $=SJ*j,K=J*Math.cos($),V=J*Math.sin($);return[Q,K,V]},aJ=(j,J,Q)=>{let $;if(Math.abs(Q-J)>0.0001&&Math.abs(J)>0.0001)$=(IJ*Math.atan2(Q,J)+360)%360;else $=0;let K=Math.sqrt(P(J)+P(Q));return[j,K,$]},Fj=(j,J,Q)=>{let $=SJ*Q,K=J*Math.cos($),V=J*Math.sin($);return[j,K,V]},rJ=(j,J,Q)=>{let $=Math.cbrt(0.8189330101*j+0.3618667424*J-0.1288597137*Q),K=Math.cbrt(0.0329845436*j+0.9293118715*J+0.0361456387*Q),V=Math.cbrt(0.0482003018*j+0.2643662691*J+0.633851707*Q),N=0.2104542553*$+0.793617785*K-0.0040720468*V,U=1.9779984951*$-2.428592205*K+0.4505937099*V,S=0.0259040371*$+0.7827717662*K-0.808675766*V;return[N,U,S]},OJ=(j,J,Q)=>{let $=0.9999999984505196*j+0.39633779217376774*J+0.2158037580607588*Q,K=1.0000000088817607*j-0.10556134232365633*J-0.0638541747717059*Q,V=1.0000000546724108*j-0.08948418209496574*J-1.2914855378640917*Q,N=$**3,U=K**3,S=V**3,I=1.2268798733741557*N-0.5578149965554813*U+0.28139105017721594*S,E=-0.04057576262431372*N+1.1122868293970594*U-0.07171106666151696*S,F=-0.07637294974672142*N-0.4214933239627916*U+1.5869240244272422*S;return[I,E,F]},eJ=(j,J,Q)=>{let $=Math.sqrt(J*J+Q*Q),K=Math.atan2(Q,J);if(K<0)K+=2*Math.PI;return[j,$,K*180/Math.PI]},lJ=(j,J,Q)=>{let $=Q*Math.PI/180,K=J*Math.cos($),V=J*Math.sin($);return[j,K,V]},oJ=(j,J,Q)=>{J*=100,j*=100;let $;if(j>99.9999999||j<0.00000001)$=0;else{let K=DJ(j,Q);$=J/K*100}return[Q,y($/100),y(j/100)]},jQ=(j,J,Q)=>{Q*=100,J*=100;let $;if(Q>99.9999999||Q<0.00000001)$=0;else $=DJ(Q,j)/100*J;return[y(Q/100),$/100,j]},JQ=(j,J,Q)=>{J*=100,j*=100;let $;if(j>99.9999999||j<0.00000001)$=0;else{let K=YJ(j);$=J/K*100}return[Q,$/100,j/100]},QQ=(j,J,Q)=>{Q*=100,J*=100;let $;if(Q>99.9999999||Q<0.00000001)$=0;else $=YJ(Q)/100*J;return[Q/100,$/100,j]},R=[W.r,W.g,W.b],$Q=903.2962962962963,KQ=0.008856451679035631,DJ=(j,J)=>{let Q=J/360*Math.PI*2,$=Number.MAX_VALUE,K=AJ(j);for(let V of K){let N=VQ(Q,V[0],V[1]);if(N>0&&N<$)$=N}return $},AJ=(j)=>{let J=[],Q=(j+16)**3/1560896,$=Q>KQ?Q:j/$Q;for(let K=0;K<R.length;K++)for(let V=0;V<2;V++){let N=(284517*R[K][0]-94839*R[K][2])*$,U=(838422*R[K][2]+769860*R[K][1]+731718*R[K][0])*j*$-769860*V*j,S=(632260*R[K][2]-126452*R[K][1])*$+126452*V;J.push([N/S,U/S])}return J},VQ=(j,J,Q)=>{return Q/(Math.sin(j)-J*Math.cos(j))},YJ=(j)=>{let J=Number.MAX_VALUE,Q=AJ(j);for(let $ of Q){let K=$[0],V=$[1],N=NQ(K,V,-1/K,0),U=UQ(N,V+N*K);if(U<J)J=U}return J},NQ=(j,J,Q,$)=>{return(J-$)/(Q-j)},UQ=(j,J)=>{return Math.sqrt(j**2+J**2)},Zj=(j)=>{let J,Q,$,K;if(Array.isArray(j))[J,Q,$,K]=j;else J=j.r,Q=j.g,$=j.b,K=j.a??1;if(K===0)return[new D(0,0,0),!1];return[new D(J,Q,$),!0]},z=(j,J,Q)=>{let $=j/60,K=Q*J,V=K*(1-Math.abs($%2-1)),N=Q-K,U=0,S=0,I=0;if(0<=$&&$<1)U=K,S=V;else if(1<=$&&$<2)U=V,S=K;else if(2<=$&&$<3)S=K,I=V;else if(3<=$&&$<4)S=V,I=K;else if(4<=$&&$<5)U=V,I=K;else if(5<=$&&$<6)U=K,I=V;return new D(N+U,N+S,N+I)},WJ=(j,J,Q)=>{if(J===0)return new D(Q,Q,Q);let $;if(Q<0.5)$=Q*(1+J);else $=Q+J-Q*J;let K=2*Q-$,V=j/360,N=V+0.3333333333333333,U=V,S=V-0.3333333333333333;if(N<0)N++;if(N>1)N--;if(U<0)U++;if(U>1)U--;if(S<0)S++;if(S>1)S--;let I=(E)=>{if(6*E<1)return K+($-K)*6*E;else if(2*E<1)return $;else if(3*E<2)return K+($-K)*(0.6666666666666666-E)*6;else return K};return new D(I(N),I(U),I(S))},p=(j,J,Q)=>{return new D(c(j),c(J),c(Q))},GJ=(j,J,Q)=>{return new D(s(j),s(J),s(Q))},_=(j,J,Q)=>{return p(...Ej(j,J,Q))},qJ=(j,J,Q)=>{return _(...tJ(j,J,Q))},m=(j,J,Q)=>{return _(...iJ(j,J,Q))},Bj=(j,J,Q,$)=>{return _(...FJ(j,J,Q,$))},Oj=(j,J,Q)=>{return _(...nJ(j,J,Q))},Dj=(j,J,Q,$)=>{return _(...a(j,J,Q,$))},u=(j,J,Q)=>{return Aj(j,J,Q,Y)},Aj=(j,J,Q,$)=>{let[K,V,N]=sJ(j,J,Q);return Bj(K,V,N,$)},Yj=(j,J,Q)=>{return Wj(j,J,Q,Y)},Wj=(j,J,Q,$)=>{let[K,V,N]=Fj(j,J,Q);return Dj(K,V,N,$)},Gj=(j,J,Q)=>{return _(...OJ(j,J,Q))},qj=(j,J,Q)=>{return _(...OJ(...lJ(j,J,Q)))},kJ=(j,J,Q)=>{let[$,K,V]=Fj(...jQ(j,J,Q));return p(...Ej(...a($,K,V,v))).clamped()},HJ=(j,J,Q)=>{let[$,K,V]=Fj(...QQ(j,J,Q));return p(...Ej(...a($,K,V,v))).clamped()};var L=(j)=>{let J,Q,$,K;if(j.length===4){J=0.06666666666666667;let V=j.slice(1);Q=parseInt(V[0],16),$=parseInt(V[1],16),K=parseInt(V[2],16)}else if(j.length===6){let V=j.slice(1);Q=parseInt(V.slice(0,2),16),$=parseInt(V.slice(2,4),16),K=parseInt(V.slice(4,5),16),J=0.00392156862745098}else if(j.length===7){J=0.00392156862745098;let V=j.slice(1);Q=parseInt(V.slice(0,2),16),$=parseInt(V.slice(2,4),16),K=parseInt(V.slice(4,6),16)}else if(j.length>=8){J=0.00392156862745098;let V=j.slice(1,7);Q=parseInt(V.slice(0,2),16),$=parseInt(V.slice(2,4),16),K=parseInt(V.slice(4,6),16)}else throw new Error(`color: ${j} is not a hex-color`);if(Number.isNaN(Q)||Number.isNaN($)||Number.isNaN(K))throw new Error(`color: ${j} is not a hex-color`);return new D(Q*J,$*J,K*J)},kj=WJ,Hj=z,Xj=m,zj=Bj,_j=Oj,Lj=Dj,Tj=u,wj=Aj,gj=Yj,Rj=Wj,fj=_,yj=qJ,xj=p,pj=GJ,mj=Gj,uj=qj,bj=kJ,vj=HJ;class XJ{float64(){return Math.random()}intn(j){return Math.floor(Math.random()*j)}}function G(){return new XJ}var e=(j)=>{return z(j.float64()*360,0.5+j.float64()*0.3,0.3+j.float64()*0.3)},dj=()=>{return e(G())},l=(j)=>{let J;do J=MQ(j);while(!J.isValid());return J},Cj=()=>{return l(G())},MQ=(j)=>{return u(j.float64()*360,0.1+j.float64()*0.3,0.2+j.float64()*0.3)},o=(j)=>{return z(j.float64()*360,0.7+j.float64()*0.3,0.6+j.float64()*0.3)},ij=()=>{return o(G())},jj=(j)=>{let J;do J=PQ(j);while(!J.isValid());return J},hj=()=>{return jj(G())},PQ=(j)=>{return u(j.float64()*360,0.5+j.float64()*0.3,0.5+j.float64()*0.3)};class nj extends Error{constructor(j,J){super(`unsupported type: got ${typeof j}, want a ${J}`);this.name="ErrUnsupportedType"}}class f{r;g;b;constructor(j=0,J=0,Q=0){this.r=j,this.g=J,this.b=Q}static fromColor(j){return new f(j.r,j.g,j.b)}toColor(){return new D(this.r,this.g,this.b)}getColor(){return this.toColor()}setColor(j){this.r=j.r,this.g=j.g,this.b=j.b}static fromHex(j){let J=L(j);return f.fromColor(J)}hex(){return this.toColor().hex()}toString(){return this.hex()}scan(j){if(typeof j!=="string")throw new nj(j,"string");let J=L(j);this.r=J.r,this.g=J.g,this.b=J.b}static scan(j){let J=new f;return J.scan(j),J}value(){return this.hex()}toJSON(){return this.hex()}fromJSON(j){let J;try{J=JSON.parse(j)}catch($){throw new Error(`invalid JSON: ${$}`)}let Q=L(J);this.r=Q.r,this.g=Q.g,this.b=Q.b}static fromJSON(j){let J=new f;return J.fromJSON(j),J}decode(j){let J=L(j);this.r=J.r,this.g=J.g,this.b=J.b}static decode(j){let J=new f;return J.decode(j),J}toYAML(){return this.hex()}fromYAML(j){let J=L(j);this.r=J.r,this.g=J.g,this.b=J.b}static fromYAML(j){let J=new f;return J.fromYAML(j),J}get R(){return this.r}set R(j){this.r=j}get G(){return this.g}set G(j){this.g=j}get B(){return this.b}set B(j){this.b=j}equals(j){return this.r===j.r&&this.g===j.g&&this.b===j.b}}var Jj=(j,J)=>{let Q=[];for(let $=0;$<j;$++)Q.push(z($*(360/j),0.8+J.float64()*0.2,0.65+J.float64()*0.2));return Q},sj=(j)=>{return Jj(j,G())},Qj=(j,J)=>{return x(j,{checkColor:($,K,V)=>{let[,N]=r($,K,V);return 0.3<=N&&0.4<=$&&$<=0.8},iterations:50,manySamples:!0},J)},aj=(j)=>{return Qj(j,G())},$j=(j,J)=>{let Q=[];for(let $=0;$<j;$++)Q.push(z($*(360/j),0.55+J.float64()*0.2,0.35+J.float64()*0.2));return Q},rj=(j)=>{return $j(j,G())},Kj=(j,J)=>{return x(j,{checkColor:($,K,V)=>{let[,N]=r($,K,V);return 0.1<=N&&N<=0.4&&0.2<=$&&$<=0.5},iterations:50,manySamples:!0},J)},ej=(j)=>{return Kj(j,G())};class tj{L;A;B;constructor(j,J,Q){this.L=j;this.A=J;this.B=Q}}var x=(j,J,Q)=>{let $=(E)=>{return m(E.L,E.A,E.B).isValid()&&(J.checkColor===void 0||J.checkColor(E.L,E.A,E.B))},K=0.05,V=0.1;if(J.manySamples)K=0.01,V=0.05;let N=[];for(let E=0;E<=1;E+=K)for(let F=-1;F<=1;F+=V)for(let A=-1;A<=1;A+=V){let Z=new tj(E,F,A);if($(Z))N.push(Z)}if(N.length<j)return[[],new Error(`palettegen: more colors requested (${j}) than samples available (${N.length}). Your requested color count may be wrong, you might want to use many samples or your constraint function makes the valid color space too small`)];else if(N.length===j)return[_J(N),null];let U=[];for(let E=0;E<j;E++){let F;do F=N[Q.intn(N.length)];while(IQ(U,E,F));U.push(F)}let S=new Array(N.length),I=new Array(N.length);for(let E=0;E<J.iterations;E++){for(let F=0;F<N.length;F++){let A=N[F];I[F]=!1;let Z=Number.POSITIVE_INFINITY;for(let B=0;B<U.length;B++){let O=U[B],q=zJ(A,O);if(q<Z)Z=q,S[F]=B;if(LJ(A,O))I[F]=!0}}for(let F=0;F<U.length;F++){let A=0,Z=new tj(0,0,0);for(let B=0;B<N.length;B++){let O=N[B];if(S[B]===F)A++,Z.L+=O.L,Z.A+=O.A,Z.B+=O.B}if(A>0)Z.L/=A,Z.A/=A,Z.B/=A;else{let B;do B=Q.intn(I.length);while(I[B]);Z=N[B],I[B]=!0}if(A>0&&$(Z))U[F]=Z;else{let B=Number.POSITIVE_INFINITY;for(let O=0;O<N.length;O++){let q=N[O];if(!I[O]){let T=zJ(q,Z);if(T<B)B=T,Z=q}}U[F]=Z}}}return[_J(U),null]},lj=(j,J)=>{return x(j,J,G())},Vj=(j,J)=>{return x(j,{iterations:50,manySamples:!1},J)},oj=(j)=>{return Vj(j,G())},IQ=(j,J,Q)=>{for(let $=0;$<J&&$<j.length;$++)if(LJ(j[$],Q))return!0;return!1},cj=0.000001,LJ=(j,J)=>{return Math.abs(j.L-J.L)<cj&&Math.abs(j.A-J.A)<cj&&Math.abs(j.B-J.B)<cj},zJ=(j,J)=>{return Math.sqrt(P(j.L-J.L)+P(j.A-J.A)+P(j.B-J.B))},_J=(j)=>{return j.map((J)=>m(J.L,J.A,J.B))};class TJ{parent;rank;constructor(){this.parent=this,this.rank=0}find(){let j=this;while(j.parent!==j)j.parent=j.parent.parent,j=j.parent;return j}}var SQ=()=>{return new TJ},EQ=(j,J)=>{let Q=j.find(),$=J.find();if(Q===$)return;if(Q.rank<$.rank)Q.parent=$;else if(Q.rank>$.rank)$.parent=Q;else $.parent=Q,Q.rank++},C=(j,J)=>`${j},${J}`,FQ=(j)=>{let J=j.length,Q=new Map;for(let $=0;$<J-1;$++)for(let K=$+1;K<J;K++)Q.set(C($,K),j[$].distanceCIEDE2000(j[K]));return Q},ZQ=(j)=>{let J=[];for(let[Q,$]of j.entries()){let[K,V]=Q.split(",").map(Number);J.push([K,V])}return J.sort((Q,$)=>{let K=j.get(C(Q[0],Q[1])),V=j.get(C($[0],$[1]));if(K===void 0||V===void 0)return 0;return K-V}),J},BQ=(j,J)=>{let Q=[];for(let K=0;K<j;K++)Q.push(SQ());let $=new Set;for(let[K,V]of J){if(Q[K].find()===Q[V].find())continue;$.add(C(K,V)),$.add(C(V,K)),EQ(Q[K],Q[V])}return $},OQ=(j,J)=>{let Q=new Map;for(let N of j.keys()){let[U,S]=N.split(",").map(Number);if(!Q.has(U))Q.set(U,[]);Q.get(U)?.push(S)}for(let[N,U]of Q.entries())U.sort((S,I)=>S-I);let $=[],K=new Set,V=(N)=>{$.push(N),K.add(N);let U=Q.get(N)||[];for(let S of U)if(!K.has(S))V(S)};return V(J),$},jJ=(j)=>{let J=new Array(j.length);if(j.length<2){for(let I=0;I<j.length;I++)J[I]=j[I];return J}let Q=FQ(j),$=ZQ(Q),K=BQ(j.length,$),V=new D(0,0,0),N=0,U=Number.MAX_VALUE;for(let I=0;I<j.length;I++){let E=j[I],F=V.distanceCIEDE2000(E);if(F<U)N=I,U=F}let S=OQ(K,N);for(let I=0;I<S.length;I++){let E=S[I];J[I]=j[E]}return J};var fJ={};vJ(fJ,{Xyz:()=>gQ,Xyy:()=>RQ,WarmPaletteWithRand:()=>oQ,WarmPalette:()=>sQ,WarmColorWithRand:()=>hQ,WarmColor:()=>vQ,Sorted:()=>$0,SoftPaletteWithRand:()=>J0,SoftPaletteExWithRand:()=>Q0,SoftPaletteEx:()=>lQ,SoftPalette:()=>eQ,OkLch:()=>pQ,OkLab:()=>xQ,MakeColor:()=>WQ,LuvWhiteRef:()=>zQ,LuvLChWhiteRef:()=>wQ,LuvLCh:()=>TQ,Luv:()=>XQ,LinearRgb:()=>fQ,LabWhiteRef:()=>HQ,Lab:()=>kQ,Hsv:()=>GQ,Hsl:()=>qQ,HexColor:()=>KJ,Hex:()=>$J,HclWhiteRef:()=>LQ,Hcl:()=>_Q,HappyPaletteWithRand:()=>j0,HappyPalette:()=>rQ,HappyColorWithRand:()=>cQ,HappyColor:()=>CQ,HSLuv:()=>mQ,HPLuv:()=>uQ,FastWarmPaletteWithRand:()=>gJ,FastWarmPaletteSeeded:()=>K0,FastWarmPalette:()=>tQ,FastWarmColorWithRand:()=>iQ,FastWarmColor:()=>bQ,FastLinearRgb:()=>yQ,FastHappyPaletteWithRand:()=>RJ,FastHappyPaletteSeeded:()=>V0,FastHappyPalette:()=>aQ,FastHappyColorWithRand:()=>nQ,FastHappyColor:()=>dQ,Delta:()=>DQ,D65:()=>AQ,D50:()=>YQ,Color:()=>M});class wJ{state;constructor(j=1){this.state=j}float64(){return this.state=this.state*1103515245+12345&2147483647,this.state/2147483648}intn(j){if(j<=0)throw new Error("invalid argument to intn");return Math.floor(this.float64()*j)}Float64(){return this.float64()}Intn(j){return this.intn(j)}}function JJ(j=1){return new wJ(j)}var QJ=1;class M{R;G;B;constructor(j,J,Q){this.R=j,this.G=J,this.B=Q}toTSColor(){return new D(this.R,this.G,this.B)}static fromTSColor(j){return new M(j.r,j.g,j.b)}RGBA(){return this.toTSColor().rgba()}RGB255(){return this.toTSColor().rgb255()}values(){return[this.R,this.G,this.B]}IsValid(){return this.toTSColor().isValid()}Clamped(){return M.fromTSColor(this.toTSColor().clamped())}DistanceRgb(j){return this.toTSColor().distanceRgb(j.toTSColor())}DistanceLinearRgb(j){return this.toTSColor().distanceLinearRgb(j.toTSColor())}DistanceLinearRGB(j){return this.DistanceLinearRgb(j)}DistanceRiemersma(j){return this.toTSColor().distanceRiemersma(j.toTSColor())}AlmostEqualRgb(j){return this.toTSColor().almostEqualRgb(j.toTSColor())}DistanceLab(j){return this.toTSColor().distanceLab(j.toTSColor())}DistanceCIE76(j){return this.toTSColor().distanceCIE76(j.toTSColor())}DistanceLuv(j){return this.toTSColor().distanceLuv(j.toTSColor())}DistanceHSLuv(j){return this.toTSColor().distanceHSLuv(j.toTSColor())}DistanceHPLuv(j){return this.toTSColor().distanceHPLuv(j.toTSColor())}DistanceCIE94(j){return this.toTSColor().distanceCIE94(j.toTSColor())}DistanceCIEDE2000(j){return this.toTSColor().distanceCIEDE2000(j.toTSColor())}DistanceCIEDE2000klch(j,J,Q,$){return this.toTSColor().distanceCIEDE2000klch(j.toTSColor(),J,Q,$)}BlendRgb(j,J){return M.fromTSColor(this.toTSColor().blendRgb(j.toTSColor(),J))}BlendLinearRgb(j,J){return M.fromTSColor(this.toTSColor().blendLinearRgb(j.toTSColor(),J))}BlendHsv(j,J){return M.fromTSColor(this.toTSColor().blendHsv(j.toTSColor(),J))}BlendLab(j,J){return M.fromTSColor(this.toTSColor().blendLab(j.toTSColor(),J))}BlendLuv(j,J){return M.fromTSColor(this.toTSColor().blendLuv(j.toTSColor(),J))}BlendHcl(j,J){return M.fromTSColor(this.toTSColor().blendHcl(j.toTSColor(),J))}BlendLuvLCh(j,J){return M.fromTSColor(this.toTSColor().blendLuvLCh(j.toTSColor(),J))}BlendOkLab(j,J){return M.fromTSColor(this.toTSColor().blendOkLab(j.toTSColor(),J))}BlendOkLch(j,J){return M.fromTSColor(this.toTSColor().blendOkLch(j.toTSColor(),J))}Hsv(){return this.toTSColor().hsv()}Hsl(){return this.toTSColor().hsl()}Hex(){return this.toTSColor().hex()}LinearRgb(){return this.toTSColor().linearRgb()}FastLinearRgb(){return this.toTSColor().fastLinearRgb()}Xyz(){return this.toTSColor().xyz()}Xyy(){return this.toTSColor().xyy()}XyyWhiteRef(j){return this.toTSColor().xyyWhiteRef(j)}Lab(){return this.toTSColor().lab()}LabWhiteRef(j){return this.toTSColor().labWhiteRef(j)}Luv(){return this.toTSColor().luv()}LuvWhiteRef(j){return this.toTSColor().luvWhiteRef(j)}Hcl(){return this.toTSColor().hcl()}HclWhiteRef(j){return this.toTSColor().hclWhiteRef(j)}LuvLCh(){return this.toTSColor().luvLCh()}LuvLChWhiteRef(j){return this.toTSColor().luvLChWhiteRef(j)}OkLab(){return this.toTSColor().okLab()}OkLch(){return this.toTSColor().okLch()}HSLuv(){return this.toTSColor().hsLuv()}HPLuv(){return this.toTSColor().hpLuv()}}var DQ=b,AQ=Y,YQ=Mj;function WQ(j){let[J,Q,$,K]=j.RGBA(),[V,N]=Zj({r:J,g:Q,b:$,a:K});return[M.fromTSColor(V),N]}function $J(j){return M.fromTSColor(L(j))}function GQ(j,J,Q){return M.fromTSColor(Hj(j,J,Q))}function qQ(j,J,Q){return M.fromTSColor(kj(j,J,Q))}function kQ(j,J,Q){return M.fromTSColor(Xj(j,J,Q))}function HQ(j,J,Q,$){return M.fromTSColor(zj(j,J,Q,$))}function XQ(j,J,Q){return M.fromTSColor(_j(j,J,Q))}function zQ(j,J,Q,$){return M.fromTSColor(Lj(j,J,Q,$))}function _Q(j,J,Q){return M.fromTSColor(Tj(j,J,Q))}function LQ(j,J,Q,$){return M.fromTSColor(wj(j,J,Q,$))}function TQ(j,J,Q){return M.fromTSColor(gj(j,J,Q))}function wQ(j,J,Q,$){return M.fromTSColor(Rj(j,J,Q,$))}function gQ(j,J,Q){return M.fromTSColor(fj(j,J,Q))}function RQ(j,J,Q){return M.fromTSColor(yj(j,J,Q))}function fQ(j,J,Q){return M.fromTSColor(xj(j,J,Q))}function yQ(j,J,Q){return M.fromTSColor(pj(j,J,Q))}function xQ(j,J,Q){return M.fromTSColor(mj(j,J,Q))}function pQ(j,J,Q){return M.fromTSColor(uj(j,J,Q))}function mQ(j,J,Q){return M.fromTSColor(bj(j,J,Q))}function uQ(j,J,Q){return M.fromTSColor(vj(j,J,Q))}function bQ(){return M.fromTSColor(dj())}function vQ(){return M.fromTSColor(Cj())}function dQ(){return M.fromTSColor(ij())}function CQ(){return M.fromTSColor(hj())}function iQ(j){let J={float64:()=>j.Float64(),intn:(Q)=>j.Intn(Q)};return M.fromTSColor(e(J))}function hQ(j){let J={float64:()=>j.Float64(),intn:(Q)=>j.Intn(Q)};return M.fromTSColor(l(J))}function nQ(j){let J={float64:()=>j.Float64(),intn:(Q)=>j.Intn(Q)};return M.fromTSColor(o(J))}function cQ(j){let J={float64:()=>j.Float64(),intn:(Q)=>j.Intn(Q)};return M.fromTSColor(jj(J))}function tQ(j){return rj(j).map((J)=>M.fromTSColor(J))}function sQ(j){let[J,Q]=ej(j);return[J.map(($)=>M.fromTSColor($)),Q]}function aQ(j){return sj(j).map((J)=>M.fromTSColor(J))}function rQ(j){let[J,Q]=aj(j);return[J.map(($)=>M.fromTSColor($)),Q]}function eQ(j){let[J,Q]=oj(j);return[J.map(($)=>M.fromTSColor($)),Q]}function lQ(j,J){let[Q,$]=lj(j,J);return[Q.map((K)=>M.fromTSColor(K)),$]}function gJ(j,J){return $j(j,{float64:()=>J.Float64(),intn:($)=>J.Intn($)}).map(($)=>M.fromTSColor($))}function oQ(j,J){let Q={float64:()=>J.Float64(),intn:(V)=>J.Intn(V)},[$,K]=Kj(j,Q);return[$.map((V)=>M.fromTSColor(V)),K]}function RJ(j,J){return Jj(j,{float64:()=>J.Float64(),intn:($)=>J.Intn($)}).map(($)=>M.fromTSColor($))}function j0(j,J){let Q={float64:()=>J.Float64(),intn:(V)=>J.Intn(V)},[$,K]=Qj(j,Q);return[$.map((V)=>M.fromTSColor(V)),K]}function J0(j,J){let Q={float64:()=>J.Float64(),intn:(V)=>J.Intn(V)},[$,K]=Vj(j,Q);return[$.map((V)=>M.fromTSColor(V)),K]}function Q0(j,J,Q){let $={float64:()=>Q.Float64(),intn:(N)=>Q.Intn(N)},[K,V]=x(j,J,$);return[K.map((N)=>M.fromTSColor(N)),V]}function $0(j){let J=j.map((Q)=>Q.toTSColor());return jJ(J).map((Q)=>M.fromTSColor(Q))}class KJ{Color;constructor(j){this.Color=j}static FromColor(j){return new KJ(j)}ToColor(){return this.Color}Hex(){return this.Color.Hex()}Scan(j){if(typeof j!=="string")throw new Error(`unsupported type: got ${typeof j}, want a string`);this.Color=$J(j)}Value(){return this.Hex()}MarshalJSON(){return this.Hex()}UnmarshalJSON(j){let J;try{J=JSON.parse(j)}catch(Q){throw new Error(`invalid JSON: ${Q}`)}this.Color=$J(J)}}function K0(j,J=QJ){return gJ(j,JJ(J))}function V0(j,J=QJ){return RJ(j,JJ(J))}export{fj as XYZ,yj as XYY,Kj as WarmPaletteWithRand,ej as WarmPalette,l as WarmColorWithRand,Cj as WarmColor,jJ as Sorted,Vj as SoftPaletteWithRand,x as SoftPaletteExWithRand,lj as SoftPaletteEx,oj as SoftPalette,uj as OkLch,mj as OkLab,Zj as MakeColor,Lj as LuvWhiteRef,Rj as LuvLChWhiteRef,gj as LuvLCh,_j as Luv,xj as LinearRgb,zj as LabWhiteRef,Xj as Lab,f as HexColor,L as Hex,wj as HclWhiteRef,Qj as HappyPaletteWithRand,aj as HappyPalette,jj as HappyColorWithRand,hj as HappyColor,Hj as HSV,bj as HSLuv,kj as HSL,vj as HPLuv,Tj as HCL,fJ as GoStyle,$j as FastWarmPaletteWithRand,rj as FastWarmPalette,e as FastWarmColorWithRand,dj as FastWarmColor,pj as FastLinearRgb,Jj as FastHappyPaletteWithRand,sj as FastHappyPalette,o as FastHappyColorWithRand,ij as FastHappyColor,nj as ErrUnsupportedType,b as Delta,Y as D65,Mj as D50,D as Color};