colortranslator
Version:
A JavaScript library, written in TypeScript, to convert among different color models
2 lines (1 loc) • 40.5 kB
JavaScript
var colortranslator=function(t){"use strict";var e,s,r,a,n,i,c;!function(t){t.HEX="HEX",t.RGB="RGB",t.HWB="HWB",t.HSL="HSL",t.CIELab="CIELab",t.LCH="LCH",t.CMYK="CMYK"}(e||(e={})),t.Harmony=void 0,(s=t.Harmony||(t.Harmony={})).ANALOGOUS="ANALOGOUS",s.COMPLEMENTARY="COMPLEMENTARY",s.SPLIT_COMPLEMENTARY="SPLIT_COMPLEMENTARY",s.TRIADIC="TRIADIC",s.TETRADIC="TETRADIC",s.SQUARE="SQUARE",t.Mix=void 0,(r=t.Mix||(t.Mix={})).ADDITIVE="ADDITIVE",r.SUBTRACTIVE="SUBTRACTIVE",function(t){t.NONE="none",t.DEGREES="deg",t.GRADIANS="grad",t.RADIANS="rad",t.TURNS="turn"}(a||(a={})),function(t){t.NONE="none",t.PERCENT="percent"}(n||(n={})),function(t){t.DEVICE_CMYK="device-cmyk",t.CMYK="cmyk"}(i||(i={})),function(t){t.black="#000000",t.silver="#C0C0C0",t.gray="#808080",t.white="#FFFFFF",t.maroon="#800000",t.red="#FF0000",t.purple="#800080",t.fuchsia="#FF00FF",t.green="#008000",t.lime="#00FF00",t.olive="#808000",t.yellow="#FFFF00",t.navy="#000080",t.blue="#0000FF",t.teal="#008080",t.aqua="#00FFFF",t.orange="#FFA500",t.aliceblue="#F0F8FF",t.antiquewhite="#FAEBD7",t.aquamarine="#7FFFD4",t.azure="#F0FFFF",t.beige="#F5F5DC",t.bisque="#FFE4C4",t.blanchedalmond="#FFEBCD",t.blueviolet="#8A2BE2",t.brown="#A52A2A",t.burlywood="#DEB887",t.cadetblue="#5F9EA0",t.chartreuse="#7FFF00",t.chocolate="#D2691E",t.coral="#FF7F50",t.cornflowerblue="#6495ED",t.cornsilk="#FFF8DC",t.crimson="#DC143C",t.cyan="#00FFFF",t.darkblue="#00008B",t.darkcyan="#008B8B",t.darkgoldenrod="#B8860B",t.darkgray="#A9A9A9",t.darkgreen="#006400",t.darkgrey="#A9A9A9",t.darkkhaki="#BDB76B",t.darkmagenta="#8B008B",t.darkolivegreen="#556B2F",t.darkorange="#FF8C00",t.darkorchid="#9932CC",t.darkred="#8B0000",t.darksalmon="#E9967A",t.darkseagreen="#8FBC8F",t.darkslateblue="#483D8B",t.darkslategray="#2F4F4F",t.darkslategrey="#2F4F4F",t.darkturquoise="#00CED1",t.darkviolet="#9400D3",t.deeppink="#FF1493",t.deepskyblue="#00BFFF",t.dimgray="#696969",t.dimgrey="#696969",t.dodgerblue="#1E90FF",t.firebrick="#B22222",t.floralwhite="#FFFAF0",t.forestgreen="#228B22",t.gainsboro="#DCDCDC",t.ghostwhite="#F8F8FF",t.gold="#FFD700",t.goldenrod="#DAA520",t.greenyellow="#ADFF2F",t.grey="#808080",t.honeydew="#F0FFF0",t.hotpink="#FF69B4",t.indianred="#CD5C5C",t.indigo="#4B0082",t.ivory="#FFFFF0",t.khaki="#F0E68C",t.lavender="#E6E6FA",t.lavenderblush="#FFF0F5",t.lawngreen="#7CFC00",t.lemonchiffon="#FFFACD",t.lightblue="#ADD8E6",t.lightcoral="#F08080",t.lightcyan="#E0FFFF",t.lightgoldenrodyellow="#FAFAD2",t.lightgray="#D3D3D3",t.lightgreen="#90EE90",t.lightgrey="#D3D3D3",t.lightpink="#FFB6C1",t.lightsalmon="#FFA07A",t.lightseagreen="#20B2AA",t.lightskyblue="#87CEFA",t.lightslategray="#778899",t.lightslategrey="#778899",t.lightsteelblue="#B0C4DE",t.lightyellow="#FFFFE0",t.limegreen="#32CD32",t.linen="#FAF0E6",t.magenta="#FF00FF",t.mediumaquamarine="#66CDAA",t.mediumblue="#0000CD",t.mediumorchid="#BA55D3",t.mediumpurple="#9370DB",t.mediumseagreen="#3CB371",t.mediumslateblue="#7B68EE",t.mediumspringgreen="#00FA9A",t.mediumturquoise="#48D1CC",t.mediumvioletred="#C71585",t.midnightblue="#191970",t.mintcream="#F5FFFA",t.mistyrose="#FFE4E1",t.moccasin="#FFE4B5",t.navajowhite="#FFDEAD",t.oldlace="#FDF5E6",t.olivedrab="#6B8E23",t.orangered="#FF4500",t.orchid="#DA70D6",t.palegoldenrod="#EEE8AA",t.palegreen="#98FB98",t.paleturquoise="#AFEEEE",t.palevioletred="#DB7093",t.papayawhip="#FFEFD5",t.peachpuff="#FFDAB9",t.peru="#CD853F",t.pink="#FFC0CB",t.plum="#DDA0DD",t.powderblue="#B0E0E6",t.rosybrown="#BC8F8F",t.royalblue="#4169E1",t.saddlebrown="#8B4513",t.salmon="#FA8072",t.sandybrown="#F4A460",t.seagreen="#2E8B57",t.seashell="#FFF5EE",t.sienna="#A0522D",t.skyblue="#87CEEB",t.slateblue="#6A5ACD",t.slategray="#708090",t.slategrey="#708090",t.snow="#FFFAFA",t.springgreen="#00FF7F",t.steelblue="#4682B4",t.tan="#D2B48C",t.thistle="#D8BFD8",t.tomato="#FF6347",t.turquoise="#40E0D0",t.violet="#EE82EE",t.wheat="#F5DEB3",t.whitesmoke="#F5F5F5",t.yellowgreen="#9ACD32",t.rebeccapurple="#663399"}(c||(c={}));const l={[e.HEX]:/^#(?:(?<r>[a-f\d])(?<g>[a-f\d])(?<b>[a-f\d])(?<a>[a-f\d])?|(?<rr>[a-f\d]{2})(?<gg>[a-f\d]{2})(?<bb>[a-f\d]{2})(?<aa>[a-f\d]{2})?)$/i,[e.RGB]:/^rgba?\s*\(\s*(?:(?<r_legacy>(?:\d*\.)?\d+%?)\s*,\s*(?<g_legacy>(?:\d*\.)?\d+%?)\s*,\s*(?<b_legacy>(?:\d*\.)?\d+%?)(?:\s*,\s*(?<a_legacy>(?:\d*\.)?\d+))?|(?<r>(?:\d*\.)?\d+%?)\s+(?<g>(?:\d*\.)?\d+%?)\s+(?<b>(?:\d*\.)?\d+%?)(?:\s*\/\s*(?<a>(?:\d*\.)?\d+%?))?|from\s+(?<from>(?:\w+|\w+\(\s*[^())]+\s*\)|\w+\(from\s+\w+\(.*\)\s*\)|#[a-fA-F\d]+))\s+(?<relative_r>(?:[rgb]|(?:\d*\.)?\d+|calc\([rgb()/*\-+\d.\s]+\)))\s+(?<relative_g>(?:[rgb]|(?:\d*\.)?\d+|calc\([rgb()/*\-+\d.\s]+\)))\s+(?<relative_b>(?:[rgb]|(?:\d*\.)?\d+|calc\([rgb()/*\-+\d.\s]+\)))(?:\s*\/\s*(?<relative_a>(?:(?:\d*\.)?\d+%?|calc\([()/*\-+\d.\s\w]*(?:alpha)?[()/*\-+\d.\s\w]*\)|alpha)))?)\s*\)$/,[e.HWB]:/^hwb\s*\(\s*(?:(?<h>(?:\d*\.)?\d+(?:deg|grad|rad|turn)?)\s+(?<w>(?:\d*\.)?\d+)%\s+(?<b>(?:\d*\.)?\d+)%(?:\s*\/\s*(?<a>(?:\d*\.)?\d+%?))?|from\s+(?<from>(?:\w+|\w+\(\s*[^())]+\s*\)|\w+\(from\s+\w+\(.*\)\s*\)|#[a-fA-F\d]+))\s+(?<relative_h>(?:[hwb]|(?:\d*\.)?\d+|calc\([hwb()/*\-+\d.\s]+\)))\s+(?<relative_w>(?:[hwb]|(?:\d*\.)?\d+|calc\([hwb()/*\-+\d.\s]+\)))%?\s+(?<relative_b>(?:[hwb]|(?:\d*\.)?\d+|calc\([hwb()/*\-+\d.\s]+\)))%?(?:\s*\/\s*(?<relative_a>(?:(?:\d*\.)?\d+%?|calc\([()/*\-+\d.\s\w]*(?:alpha)?[()/*\-+\d.\s\w]*\)|alpha)))?)\s*\)$/,[e.HSL]:/^hsla?\s*\(\s*(?:(?<h_legacy>-?(?:\d*\.)?\d+(?:deg|grad|rad|turn)?)\s*,\s*(?<s_legacy>(?:\d*\.)?\d+)%\s*,\s*(?<l_legacy>(?:\d*\.)?\d+)%(?:\s*,\s*(?<a_legacy>(?:\d*\.)?\d+))?|(?<h>-?(?:\d*\.)?\d+(?:deg|grad|rad|turn)?)\s+(?<s>(?:\d*\.)?\d+)%?\s+(?<l>(?:\d*\.)?\d+)%?(?:\s*\/\s*(?<a>(?:\d*\.)?\d+%?))?|from\s+(?<from>(?:\w+|\w+\(\s*[^())]+\s*\)|\w+\(from\s+\w+\(.*\)\s*\)|#[a-fA-F\d]+))\s+(?<relative_h>(?:[hsl]|(?:\d*\.)?\d+|calc\([hsl()/*\-+\d.\s]+\)))\s+(?<relative_s>(?:[hsl]|(?:\d*\.)?\d+|calc\([hsl()/*\-+\d.\s]+\)))%?\s+(?<relative_l>(?:[hsl]|(?:\d*\.)?\d+|calc\([hsl()/*\-+\d.\s]+\)))%?(?:\s*\/\s*(?<relative_a>(?:(?:\d*\.)?\d+%?|calc\([()/*\-+\d.\s\w]*(?:alpha)?[()/*\-+\d.\s\w]*\)|alpha)))?)\s*\)$/,[e.CIELab]:/^lab\s*\(\s*(?:(?<L>(?:\d*\.)?\d+%?)\s+(?<a>-?(?:\d*\.)?\d+%?)\s+(?<b>-?(?:\d*\.)?\d+%?)(?:\s*\/\s*(?<A>(?:\d*\.)?\d+%?))?|from\s+(?<from>(?:\w+|\w+\(\s*[^())]+\s*\)|\w+\(from\s+\w+\(.*\)\s*\)|#[a-fA-F\d]+))\s+(?<relative_L>(?:[lab]|(?:\d*\.)?\d+|calc\([lab()/*\-+\d.\s]+\)))\s+(?<relative_a>(?:[lab]|(?:\d*\.)?\d+|calc\([lab()/*\-+\d.\s]+\)))\s+(?<relative_b>(?:[lab]|(?:\d*\.)?\d+|calc\([lab()/*\-+\d.\s]+\)))(?:\s*\/\s*(?<relative_A>(?:(?:\d*\.)?\d+%?|calc\([()/*\-+\d.\s\w]*(?:alpha)?[()/*\-+\d.\s\w]*\)|alpha)))?)\s*\)$/,[e.LCH]:/^lch\s*\(\s*(?:(?<l>(?:\d*\.)?\d+%?)\s+(?<c>-?(?:\d*\.)?\d+%?)\s+(?<h>-?(?:\d*\.)?\d+(?:deg|grad|rad|turn)?)(?:\s*\/\s*(?<a>(?:\d*\.)?\d+%?))?|from\s+(?<from>(?:\w+|\w+\(\s*[^())]+\s*\)|\w+\(from\s+\w+\(.*\)\s*\)|#[a-fA-F\d]+))\s+(?<relative_l>(?:[lch]|(?:\d*\.)?\d+|calc\([lch()/*\-+\d.\s]+\)))\s+(?<relative_c>(?:[lch]|(?:\d*\.)?\d+|calc\([lch()/*\-+\d.\s]+\)))\s+(?<relative_h>(?:[lch]|(?:\d*\.)?\d+|calc\([lch()/*\-+\d.\s]+\)))(?:\s*\/\s*(?<relative_a>(?:(?:\d*\.)?\d+%?|calc\([()/*\-+\d.\s\w]*(?:alpha)?[()/*\-+\d.\s\w]*\)|alpha)))?)\s*\)$/,[e.CMYK]:/^(?:device-cmyk|cmyk)\s*\(\s*(?:(?<c_legacy>(?:\d*\.)?\d+%?)\s*,\s*(?<m_legacy>(?:\d*\.)?\d+%?)\s*,\s*(?<y_legacy>(?:\d*\.)?\d+%?)\s*,\s*(?<k_legacy>(?:\d*\.)?\d+%?)(?:\s*,\s*(?<a_legacy>(?:\d*\.)?\d+))?|(?<c>(?:\d*\.)?\d+%?)\s+(?<m>(?:\d*\.)?\d+%?)\s+(?<y>(?:\d*\.)?\d+%?)\s+(?<k>(?:\d*\.)?\d+%?)(?:\s*\/\s*(?<a>(?:\d*\.)?\d+%?))?)\s*\)$/},h={REGEXP:/^calc\(\s*(?<operation>[\d./*+-\w\s]+)\s*\)$/,SCOPED:/\(\s*([^()]+)\s*\)/g,DIVISION:/\s*(?<left>(?:(?:\d*\.)?\d+|\w+))\s*\/\s*(?<right>(?:(?:\d*\.)?\d+|\w+))\s*/,MULTIPLICATION:/\s*(?<left>(?:(?:\d*\.)?\d+|\w+))\s*\*\s*(?<right>(?:(?:\d*\.)?\d+|\w+))\s*/,SUM:/\s*(?<left>(?:(?:\d*\.)?\d+|\w+))\s*\+\s*(?<right>(?:(?:\d*\.)?\d+|\w+))\s*/,REST:/\s*(?<left>(?:(?:\d*\.)?\d+|\w+))\s*-\s*(?<right>(?:(?:\d*\.)?\d+|\w+))\s*/},o=/^(?<number>-?(?:\d*\.)?\d+)(?<units>(?:deg|grad|rad|turn)?)$/,u=/^(-?\d+(?:\.\d+)?|-?\.\d+)%$/,d=/^0x([a-f\d]{1,2})$/i,g=/\{(\d+)\}/g,b=/,( +|\d+)/g,C=/ +/,A=255,p=360,m=100,B=125,H=150,L=10/9,E=Object.freeze({HEX:["R","G","B","A"],RGB:["R","G","B","A"],HSL:["H","S","L","A"],HWB:["H","W","B","A"],CIELab:["L","a","b","A"],LCH:["L","C","H","A"],CMYK:["C","M","Y","K","A"]}),S=Object.freeze({ABGR:e.RGB,ABHW:e.HWB,ACHL:e.LCH,ACKMY:e.CMYK,AHLS:e.HSL,ALAB:e.CIELab,BGR:e.RGB,BHW:e.HWB,CHL:e.LCH,CKMY:e.CMYK,HLS:e.HSL,LAB:e.CIELab}),F=Object.freeze({decimals:6,legacyCSS:!1,spacesAfterCommas:!1,anglesUnit:a.NONE,rgbUnit:n.NONE,labUnit:n.NONE,lchUnit:n.NONE,cmykUnit:n.PERCENT,alphaUnit:n.NONE,cmykFunction:i.DEVICE_CMYK}),R=Object.freeze({NOT_ACCEPTED_INPUT:"The provided string color doesn't have a correct format",NOT_A_VALID_RELATIVE_COLOR:"is not a valid operation for a relative color"}),M=t=>[...t].sort().join("").toUpperCase(),v=t=>"string"==typeof t,y=t=>"number"==typeof t,_=t=>"boolean"==typeof t,f=t=>void 0===t,w=t=>S[M(Object.keys(t))],G=t=>w(t)===e.RGB,O=t=>w(t)===e.HSL,I=t=>w(t)===e.HWB,D=t=>w(t)===e.CIELab,k=t=>w(t)===e.LCH,x=t=>w(t)===e.CMYK,N=t=>t in c,j=e=>!!e&&`${e}`in t.Mix,$=t=>+`${t}`.replace(u,"$1"),Y=t=>u.test(`${t}`)?$(t):Math.min(+t,100),T=t=>(1===t.length&&(t+=t),parseInt(t,16)),W=t=>{const e=V(t,0).toString(16).toUpperCase();return 1===e.length?`0x0${e}`:`0x${e}`},U=(t,e=!1)=>!e&&u.test(t)?Math.min(A*$(t)/100,A):d.test(t)?(3===t.length&&(t+=t.slice(-1)),e?V(t)/A:V(t)):Math.min(+t,e?1:A),P=t=>u.test(t)?z(B*$(t)/100,-125,B):z(+t,-125,B),K=t=>u.test(t)?z(H*$(t)/100,-150,H):z(+t,-150,H),X=(t,e)=>{const s=u.test(t)?$(t):+t;return e?Math.min(100*s,100):Math.min(s,100)},V=(t,e=6)=>{const s=Math.pow(10,e);return Math.round(+t*s)/s},z=(t,e,s)=>Math.max(e,Math.min(t,s)),q=t=>180*t/Math.PI,Q=t=>t*Math.PI/180,J=t=>{if(v(t)){const e=t.match(o).groups,s=+e.number;switch(e.units){case a.RADIANS:t=V(q(s));break;case a.TURNS:t=V(s*p);break;case a.GRADIANS:t=V(.9*s);break;case a.DEGREES:default:t=s}}return(t>=p||t<0)&&(t-=Math.floor(t/p)*p),t},Z=t=>{v(t)&&(t=u.test(t)?$(t)/100:+t);const e=Number(t);return isNaN(e)||e>1?1:V(e)},tt=(t,e)=>{let s;switch(e){case a.RADIANS:s=V(Q(t));break;case a.TURNS:s=V(t/p);break;case a.GRADIANS:s=V(L*t);break;case a.DEGREES:case a.NONE:default:s=t}return s},et=t=>{if(t){const e=t.match(o).groups.units;return""===e?a.NONE:e}return a.NONE},st=[[.4360747,.3850649,.1430804],[.2225045,.7168786,.0606169],[.0139322,.0971045,.7141733]],rt=[[3.1338561,-1.6168667,-.4906146],[-.9787684,1.9161415,.033454],[.0719453,-.2289914,1.4052427]],at=st.map(t=>t.reduce((t,e)=>t+e,0)),nt=(t,e,s)=>(s<0&&(s+=6),s>=6&&(s-=6),V(s<1?((e-t)*s+t)*A:s<3?e*A:s<4?((e-t)*(4-s)+t)*A:t*A)),it=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,ct=t=>t<=.0031308?12.92*t:1.055*t**(1/2.4)-.055,lt=(t,e,s,r)=>{const a=[0,0,0],n=[t,e,s];return r.forEach((t,e)=>{t.forEach((t,s)=>{a[e]+=t*n[s]})}),a},ht=(t,e,s)=>{e/=100;const r=(s/=100)<=.5?s*(e+1):s+e-s*e,a=2*s-r;return{R:nt(a,r,(t/=60)+2),G:nt(a,r,t),B:nt(a,r,t-2)}},ot=(t,e,s,r=1)=>{t/=A,e/=A,s/=A,r=Math.min(r,1);const a=Math.max(t,e,s),n=Math.min(t,e,s),i=a-n;let c=0,l=0;const h=(a+n)/2;if(0!==i){switch(a){case t:c=(e-s)/i%6;break;case e:c=(s-t)/i+2;break;case s:c=(t-e)/i+4}c=V(60*c),c<0&&(c+=360),l=i/(1-Math.abs(2*h-1))}return{H:c,S:V(100*l),L:V(100*h),A:r}},ut=(t,e,s)=>{const r=[t/A,e/A,s/A].map(it),a=lt(r[0],r[1],r[2],st),n=((t,e,s)=>{const r=t=>t>(6/29)**3?Math.cbrt(t):t/(3*(6/29)**2)+4/29,a=r(t/at[0]),n=r(e/at[1]);return[116*n-16,500*(a-n),200*(n-r(s/at[2]))]})(a[0],a[1],a[2]);return{L:n[0],a:n[1],b:n[2]}},dt=(t,e,s)=>{const r=((t,e,s)=>{const r=t=>t>6/29?t**3:3*(6/29)**2*(t-4/29),a=(t+16)/116,n=e/500,i=s/200;return[at[0]*r(a+n),at[1]*r(a),at[2]*r(a-i)]})(t,e,s),a=lt(r[0],r[1],r[2],rt).map(ct);return{R:z(a[0]*A,0,A),G:z(a[1]*A,0,A),B:z(a[2]*A,0,A)}},gt=(t,e,s)=>{const r=Math.sqrt(e**2+s**2),a=q(Math.atan2(s,e));return{L:t,C:r,H:J(a)}},bt=(t,e,s)=>{const r=Q(s);return{L:t,a:e*Math.cos(r),b:e*Math.sin(r)}},Ct=(t,e,s)=>{const r=ut(t,e,s);return gt(r.L,r.a,r.b)},At=(t,e,s)=>{const r=bt(t,e,s);return dt(r.L,r.a,r.b)},pt=(t,e,s,r=1)=>({H:ot(t,e,s,r).H,W:V(Math.min(t,e,s)/A*100),B:V(100*(1-Math.max(t,e,s)/A)),A:r}),mt=(t,e,s)=>{const r=1-(s/=100)-(e/=100),a=r*(1-Math.abs(t/60%2-1));let n,i,c;return t<60?(n=r,i=a,c=0):t>=60&&t<120?(n=a,i=r,c=0):t>=120&&t<180?(n=0,i=r,c=a):t>=180&&t<240?(n=0,i=a,c=r):t>=240&&t<300?(n=a,i=0,c=r):(n=r,i=0,c=a),n+=e,i+=e,c+=e,{R:z(n*A,0,A),G:z(i*A,0,A),B:z(c*A,0,A)}},Bt=(t,e,s,r)=>({R:z(V(A*(1-t)*(r=1-r)),0,A),G:z(V(A*(1-e)*r),0,A),B:z(V(A*(1-s)*r),0,A)}),Ht=(t,e,s)=>{t/=A,e/=A,s/=A;const r=1-Math.max(t,e,s),a=1-r,n=a&&(a-e)/a,i=a&&(a-s)/a;return{C:V(100*(a&&(a-t)/a)),M:V(100*n),Y:V(100*i),K:V(100*r)}},Lt=(t,e)=>{if(t<0&&(t+=360),t>360&&(t-=360),360===t||0===t)return t;const s=[[0,120],[120,180],[180,240],[240,360]],r=[[0,60],[60,120],[120,240],[240,360]],a=e?r:s;let n=0,i=0,c=0,l=0;return(e?s:r).find((e,s)=>t>=e[0]&&t<e[1]&&(n=e[0],i=e[1],c=a[s][0],l=a[s][1],!0)),c+(l-c)/(i-n)*(t-n)};class Et{hasAlpha(t){return v(t)?this.getCSSOptions(t).hasAlpha:!f(t.A)}}const St=t=>{const e=f(t.A)?{}:{A:+t.A};return O(t)?{...ht(t.H,t.S,t.L),...e}:I(t)?{...mt(t.H,t.W,t.B),...e}:D(t)?{...dt(t.L,t.a,t.b),...e}:k(t)?{...At(t.L,t.C,t.H),...e}:x(t)?{...Bt(t.C,t.M,t.Y,t.K),...e}:t},Ft=t=>t?", ":",",Rt=(t,e)=>{const s=M(Object.keys(t)),r=S[s];return E[r].reduce((s,r,a)=>{const n=t[r];return f(n)||s.push(e(n,a)),s},[])},Mt=(t,e)=>t.replace(g,(t,s)=>`${e[+s-1]}`),vt=(t,e,s=!1)=>{const{alphaUnit:r,legacyCSS:a,decimals:i}=e;return r!==n.PERCENT||a&&!s?V(t,i):`${V(100*t,i)}%`},yt=t=>{const{anglesUnit:e,decimals:s}=t;return(r,n)=>{if(0===n&&e!==a.NONE){return`${V(tt(+r,e),s)}${e}`}return 3===n?vt(+r,t):V(r,s)}};class _t{constructor(t,e,s){this._operations=new Map([[h.DIVISION,this._division],[h.MULTIPLICATION,this._multiplication],[h.SUM,this._sum],[h.REST,this._rest]]),this._colorIndex=t;let r=e,a=0;if(Number.isNaN(+e))if(e in s)this._result=s[e];else if(h.REGEXP.test(r))h.REGEXP.lastIndex=0,this._result=this._getCalcValue(r,s);else{for(;h.SCOPED.test(r)&&a<100;){if(h.SCOPED.lastIndex=0,r=r.replace(h.SCOPED,(t,e)=>this._calculate(e,s).toString()),h.REGEXP.test(r)){h.REGEXP.lastIndex=0;break}a++}this._result=this._getCalcValue(r,s)}else this._result=+e}_division(t,e){return t/e}_multiplication(t,e){return t*e}_sum(t,e){return t+e}_rest(t,e){return t-e}_getCalcValue(t,e){const s=t.match(h.REGEXP).groups.operation,r=this._calculate(s,e);if(Number.isNaN(r))throw new Error(`Invalid value for ${this._colorIndex}. ${s} ${R.NOT_A_VALID_RELATIVE_COLOR}`);return r}_calculate(t,e){return this._operations.forEach((s,r)=>{let a=0;for(;r.test(t)&&a<100;)t=t.replace(r,(t,r,a)=>s(e[r]??+r,e[a]??+a).toString()),a++}),+t}get result(){return this._result}}const ft=new class extends Et{_extract(t){return(N(t)?c[t]:t).match(l.HEX).groups}supports(t){if(v(t))return l.HEX.test(t)||N(t);const e=Object.entries(t).some(t=>!d.test(`${t[1]}`));return G(t)&&!e}parse(t){if(v(t)){const e=this._extract(t),s=e.r??e.rr,r=e.g??e.gg,a=e.b??e.bb,n=e.a??e.aa;return{R:T(s),G:T(r),B:T(a),...f(n)?{}:{A:T(n)/A}}}return{R:U(`${t.R}`),G:U(`${t.G}`),B:U(`${t.B}`),...f(t.A)?{}:{A:Math.min(U(`${t.A}`,!0),1)}}}convert(t,e,s){const r=G(t)?t:St(t);return{R:W(r.R),G:W(r.G),B:W(r.B),...s?{A:f(r.A)?"0xFF":W(r.A*A)}:{}}}convertCSS(t,e,s){const r=this.convert(t,e.decimals,s),a=Rt(r,t=>(t=>{let e=V(t,0).toString(16).toUpperCase();return 1===e.length&&(e=`0${e}`),e})(V(t))),n=4===a.length?"#{1}{2}{3}{4}":"#{1}{2}{3}";return Mt(n,a)}getCSSOptions(t){const e=this._extract(t);return{hasAlpha:!f(e.a??e.aa)}}get model(){return e.HEX}},wt=new class extends Et{_extract(t){return t.match(l.RGB).groups}supports(t){if(v(t))return l.RGB.test(t);const e=Object.entries(t).some(t=>!(u.test(`${t[1]}`)||!d.test(`${t[1]}`)&&!isNaN(+t[1])&&+t[1]<=A));return G(t)&&!e}parse(t,e){if(v(t)){const s=this._extract(t),{r_legacy:r,g_legacy:a,b_legacy:n,a_legacy:i,r:c,g:l,b:h,a:o,from:u,relative_r:d,relative_g:g,relative_b:b,relative_a:C}=s;if(u){const t=e.parse(u),s=St(t),r={r:s.R,g:s.G,b:s.B,alpha:s.A??1},a=new _t("r",d,r).result,n=new _t("g",g,r).result,i=new _t("b",b,r).result,c={R:Math.min(a,A),G:Math.min(n,A),B:Math.min(i,A)};if(C){const t=new _t("alpha",C,r).result;c.A=Math.min(t,1)}return c}{const t=r??c,e=a??l,s=n??h,u=i??o;return{R:Math.min(U(t),A),G:Math.min(U(e),A),B:Math.min(U(s),A),...f(u)?{}:{A:Z(u)}}}}return{R:U(`${t.R}`),G:U(`${t.G}`),B:U(`${t.B}`),...f(t.A)?{}:{A:Math.min(U(`${t.A}`,!0),1)}}}convert(t,e,s){const r=G(t)?t:St(t);return this._roundRGBObject({R:r.R,G:r.G,B:r.B,...s?{A:r.A??1}:{}},e)}convertCSS(t,e,s){const{decimals:r,legacyCSS:a,spacesAfterCommas:i,rgbUnit:c}=e,l=this.convert(t,e.decimals,s),h=Ft(i),o=Rt(l,(t,s)=>c===n.PERCENT&&s<3?`${((t,e)=>V(t/A*100,e))(+t,r)}%`:3===s?vt(+t,e):V(t,r)),u=a?4===o.length?`rgba({1}${h}{2}${h}{3}${h}{4})`:`rgb({1}${h}{2}${h}{3})`:4===o.length?"rgb({1} {2} {3} / {4})":"rgb({1} {2} {3})";return Mt(u,o)}_roundRGBObject(t,e){return{R:V(t.R,e),G:V(t.G,e),B:V(t.B,e),...f(t.A)?{}:{A:V(t.A,e)}}}getCSSOptions(t){const e=this._extract(t),{r_legacy:s,g_legacy:r,b_legacy:a,a_legacy:n,r:i,g:c,b:l,a:h}=e;return{hasPercentageValues:u.test(s??i)&&u.test(r??c)&&u.test(a??l),hasPercentageAlpha:!f(n)&&u.test(n)||!f(h)&&u.test(h),hasAlpha:!f(n??h)}}get model(){return e.RGB}},Gt=new class extends Et{_extract(t){return t.match(l.HSL).groups}supports(t){return v(t)?l.HSL.test(t):O(t)}parse(t,e){if(v(t)){const s=this._extract(t),{h_legacy:r,s_legacy:a,l_legacy:n,a_legacy:i,h:c,s:l,l:h,a:o,from:u,relative_h:d,relative_s:g,relative_l:b,relative_a:C}=s;if(u){const t=e.parse(u),s=St(t),r=ot(s.R,s.G,s.B,s.A),a={h:r.H,s:r.S,l:r.L,alpha:r.A},n=new _t("h",d,a).result,i=new _t("s",g,a).result,c=new _t("l",b,a).result,l={H:J(n),S:Y(i),L:Y(c)};if(C){const t=new _t("alpha",C,a).result;l.A=z(t,0,1)}return l}{const t=a??l,e=n??h,s=i??o;return{H:J(r??c),S:Y(t),L:Y(e),...f(s)?{}:{A:Z(s)}}}}return{H:J(t.H),S:Y(`${t.S}`),L:Y(`${t.L}`),...f(t.A)?{}:{A:z(+t.A,0,1)}}}convert(t,e,s){let r;if(O(t))r=t;else{const e=St(t);r=ot(e.R,e.G,e.B,e.A)}return this._roundHSLObject({H:r.H,S:r.S,L:r.L,...s?{A:r.A??1}:{}},e)}convertCSS(t,e,s){const{legacyCSS:r,spacesAfterCommas:a}=e,n=Ft(a),i=this.convert(t,e.decimals,s),c=yt(e),l=Rt(i,c),h=r?4===l.length?`hsla({1}${n}{2}%${n}{3}%${n}{4})`:`hsl({1}${n}{2}%${n}{3}%)`:4===l.length?"hsl({1} {2}% {3}% / {4})":"hsl({1} {2}% {3}%)";return Mt(h,l)}_roundHSLObject(t,e){return{H:V(J(t.H),e),S:V(t.S,e),L:V(t.L,e),...f(t.A)?{}:{A:V(t.A,e)}}}getCSSOptions(t){const e=this._extract(t),{h_legacy:s,h:r,a_legacy:a,a:n}=e;return{angleUnit:et(s??r),hasPercentageAlpha:!f(a)&&u.test(a)||!f(n)&&u.test(n),hasAlpha:!f(a??n)}}get model(){return e.HSL}},Ot=new class extends Et{_extract(t){return t.match(l.HWB).groups}supports(t){return v(t)?l.HWB.test(t):I(t)}parse(t,e){if(v(t)){const s=this._extract(t),{h:r,w:a,b:n,a:i,from:c,relative_h:l,relative_w:h,relative_b:o,relative_a:u}=s;if(c){const t=e.parse(c),s=St(t),r=pt(s.R,s.G,s.B,s.A),a={h:r.H,w:r.W,b:r.B,alpha:r.A},n=new _t("h",l,a).result,i=new _t("w",h,a).result,d=new _t("b",o,a).result,g={H:z(n,0,p),W:z(i,0,m),B:z(d,0,m)};if(u){const t=new _t("alpha",u,a).result;g.A=z(t,0,1)}return g}return{H:J(r),W:Y(a),B:Y(n),...f(i)?{}:{A:Z(i)}}}return{H:J(t.H),W:Y(t.W),B:Y(t.B),...f(t.A)?{}:{A:Z(t.A)}}}convert(t,e,s){let r;if(I(t))r=t;else{const e=St(t);r=pt(e.R,e.G,e.B,e.A)}return this._roundHWBObject({H:r.H,W:r.W,B:r.B,...s?{A:r.A??1}:{}},e)}convertCSS(t,e,s){const r=this.convert(t,e.decimals,s),a=yt(e),n=Rt(r,a),i=4===n.length?"hwb({1} {2}% {3}% / {4})":"hwb({1} {2}% {3}%)";return Mt(i,n)}_roundHWBObject(t,e){return{H:V(J(t.H),e),W:V(t.W,e),B:V(t.B,e),...f(t.A)?{}:{A:V(t.A,e)}}}getCSSOptions(t){const e=this._extract(t);return{angleUnit:et(e.h),hasPercentageAlpha:!f(e.a)&&u.test(e.a),hasAlpha:!f(e.a)}}get model(){return e.HWB}},It=new class extends Et{_extract(t){return t.match(l.CIELab).groups}supports(t){return v(t)?l.CIELab.test(t):D(t)}parse(t,e){if(v(t)){const s=this._extract(t),{L:r,a:a,b:n,A:i,from:c,relative_L:l,relative_a:h,relative_b:o,relative_A:u}=s;if(c){const t=e.parse(c),s=St(t),r=ut(s.R,s.G,s.B),a={l:r.L,a:r.a,b:r.b,alpha:s.A??1},n=new _t("l",l,a).result,i=new _t("a",h,a).result,d=new _t("b",o,a).result,g={L:z(n,0,m),a:z(i,-125,B),b:z(d,-125,B)};if(u){const t=new _t("alpha",u,a).result;g.A=z(t,0,1)}return g}return{L:Y(r),a:P(a),b:P(n),...f(i)?{}:{A:Z(i)}}}return{L:Y(t.L),a:P(`${t.a}`),b:P(`${t.b}`),...f(t.A)?{}:{A:Z(t.A)}}}convert(t,e,s){let r;if(D(t))r=t;else{const e=St(t);r=ut(e.R,e.G,e.B)}return this._roundCIELabObject({L:r.L,a:r.a,b:r.b,...s?{A:+(t.A??1)}:{}},e)}convertCSS(t,e,s){const{decimals:r,labUnit:a}=e,i=this.convert(t,e.decimals,s),c=Rt(i,(t,s)=>{if(0===s){const e=V(Y(t),r);return a===n.PERCENT?`${e}%`:`${e}`}return s<3?a===n.PERCENT?`${((t,e)=>V(t/B*100,e))(+t,r)}%`:V(t,r):vt(+t,e,!0)}),l=4===c.length?"lab({1} {2} {3} / {4})":"lab({1} {2} {3})";return Mt(l,c)}_roundCIELabObject(t,e){return{L:V(t.L,e),a:V(t.a,e),b:V(t.b,e),...f(t.A)?{}:{A:V(t.A,e)}}}getCSSOptions(t){const e=this._extract(t),{L:s,a:r,b:a,A:n}=e;return{hasPercentageValues:u.test(s)&&u.test(r)&&u.test(a),hasPercentageAlpha:!f(n)&&u.test(n),hasAlpha:!f(n)}}get model(){return e.CIELab}},Dt=new class extends Et{_extract(t){return t.match(l.LCH).groups}supports(t){return v(t)?l.LCH.test(t):k(t)}parse(t,e){if(v(t)){const s=this._extract(t),{l:r,c:a,h:n,a:i,from:c,relative_l:l,relative_c:h,relative_h:o,relative_a:u}=s;if(c){const t=e.parse(c),s=St(t),r=Ct(s.R,s.G,s.B),a={l:r.L,c:r.C,h:r.H,alpha:s.A??1},n=new _t("l",l,a).result,i=new _t("c",h,a).result,d=new _t("h",o,a).result,g={L:z(n,0,m),C:z(i,-150,H),H:J(d)};if(u){const t=new _t("alpha",u,a).result;g.A=z(t,0,1)}return g}return{L:Y(r),C:K(a),H:J(n),...f(i)?{}:{A:Z(i)}}}return{L:Y(t.L),C:K(`${t.C}`),H:J(t.H),...f(t.A)?{}:{A:Z(t.A)}}}convert(t,e,s){let r;if(k(t))r=t;else{const e=St(t);r=Ct(e.R,e.G,e.B)}return this._roundLCHObject({L:r.L,C:r.C,H:r.H,...s?{A:+(t.A??1)}:{}},e)}convertCSS(t,e,s){const{decimals:r,lchUnit:i,anglesUnit:c}=e,l=this.convert(t,e.decimals,s),h=Rt(l,(t,s)=>{if(0===s){const e=V(Y(t),r);return i===n.PERCENT?`${e}%`:`${e}`}if(1===s)return i===n.PERCENT?`${((t,e)=>V(t/H*100,e))(+t,r)}%`:V(t,r);if(2===s){if(c!==a.NONE){return`${V(tt(+t,c),r)}${c}`}return V(t,r)}return vt(+t,e,!0)}),o=4===h.length?"lch({1} {2} {3} / {4})":"lch({1} {2} {3})";return Mt(o,h)}_roundLCHObject(t,e){return{L:V(t.L,e),C:V(t.C,e),H:V(J(t.H),e),...f(t.A)?{}:{A:V(t.A,e)}}}getCSSOptions(t){const e=this._extract(t);return{angleUnit:et(e.h),hasPercentageValues:u.test(e.l)&&u.test(e.c),hasPercentageAlpha:!f(e.a)&&u.test(e.a),hasAlpha:!f(e.a)}}get model(){return e.LCH}},kt=new class extends Et{_extract(t){return t.match(l.CMYK).groups}_shouldMultiplyBy100(...t){return!t.some(t=>+t>1)}supports(t){return v(t)?l.CMYK.test(t):x(t)}parse(t){if(v(t)){const e=this._extract(t),s=e.c_legacy??e.c,r=e.m_legacy??e.m,a=e.y_legacy??e.y,n=e.k_legacy??e.k,i=e.a_legacy??e.a,c=this._shouldMultiplyBy100(s,r,a,n);return{C:X(s,c),M:X(r,c),Y:X(a,c),K:X(n,c),...f(i)?{}:{A:Z(i)}}}const e=this._shouldMultiplyBy100(t.C,t.M,t.Y,t.K);return{C:X(`${t.C}`,e),M:X(`${t.M}`,e),Y:X(`${t.Y}`,e),K:X(`${t.K}`,e),...f(t.A)?{}:{A:Z(t.A)}}}convert(t,e,s){let r;if(x(t))r=t;else{const e=St(t);r=Ht(e.R,e.G,e.B)}return this._roundCMYKObject({C:r.C,M:r.M,Y:r.Y,K:r.K,...s?{A:+(t.A??1)}:{}},e)}convertCSS(t,e,s){const{decimals:r,legacyCSS:a,spacesAfterCommas:i,cmykUnit:c,cmykFunction:l}=e,h=Ft(i),o=this.convert(t,e.decimals,s),u=Rt(o,(t,s)=>c===n.PERCENT&&s<4?`${V(t,r)}%`:4===s?vt(+t,e):V(+t/100,r)),d=a?5===u.length?`${l}({1}${h}{2}${h}{3}${h}{4}${h}{5})`:`${l}({1}${h}{2}${h}{3}${h}{4})`:5===u.length?`${l}({1} {2} {3} {4} / {5})`:`${l}({1} {2} {3} {4})`;return Mt(d,u)}_roundCMYKObject(t,e){return{C:V(t.C,e),M:V(t.M,e),Y:V(t.Y,e),K:V(t.K,e),...f(t.A)?{}:{A:V(t.A,e)}}}getCSSOptions(t){const e=this._extract(t),{c_legacy:s,m_legacy:r,y_legacy:a,k_legacy:n,a_legacy:i,c:c,m:l,y:h,k:o,a:d}=e;return{hasPercentageValues:u.test(s??c)&&u.test(r??l)&&u.test(a??h)&&u.test(n??o),hasPercentageAlpha:!f(i)&&u.test(i)||!f(d)&&u.test(d),hasAlpha:!f(i??d)}}get model(){return e.CMYK}},xt=new class{constructor(t){this._parsers=t}getParser(t){for(const e of this._parsers.values())if(e.supports(t))return e;throw new Error(R.NOT_ACCEPTED_INPUT)}parse(t){return this.getParser(t).parse(t,this)}convert(t,e,s=F.decimals,r=!1){const a=this.parse(t);return this._parsers.get(e).convert(a,s,r)}convertCSS(t,e,s={},r=!1){const a=this.parse(t);return this._parsers.get(e).convertCSS(a,s,r)}}(new Map([[e.HEX,ft],[e.RGB,wt],[e.HSL,Gt],[e.HWB,Ot],[e.CIELab,It],[e.LCH,Dt],[e.CMYK,kt]])),Nt=(t,...e)=>{const s=[],r=[],c=[],l=[],h=[],o=[],u=[],d=Object.values(a),g=Object.values(n),A=Object.values(i),p={legacyCSS:0,spacesAfterCommas:0,cmykFunction:0};for(const t of e)if(v(t)){if(s.push(t),t.includes(",")){p.legacyCSS++;const e=t.match(b);1===new Set(e).size&&C.test(e[0].slice(1))&&p.spacesAfterCommas++}if(Gt.supports(t)){const e=Gt.getCSSOptions(t);r.push(e.angleUnit),u.push(e.hasPercentageAlpha);continue}if(Ot.supports(t)){const e=Ot.getCSSOptions(t);r.push(e.angleUnit),u.push(e.hasPercentageAlpha);continue}if(wt.supports(t)){const e=wt.getCSSOptions(t);c.push(e.hasPercentageValues),u.push(e.hasPercentageAlpha);continue}if(It.supports(t)){const e=It.getCSSOptions(t);l.push(e.hasPercentageValues),u.push(e.hasPercentageAlpha);continue}if(Dt.supports(t)){const e=Dt.getCSSOptions(t);r.push(e.angleUnit),h.push(e.hasPercentageValues),u.push(e.hasPercentageAlpha);continue}if(kt.supports(t)){const e=kt.getCSSOptions(t);o.push(e.hasPercentageValues),t.startsWith(i.CMYK)&&p.cmykFunction++,u.push(e.hasPercentageAlpha)}}return{decimals:y(t.decimals)?t.decimals:F.decimals,legacyCSS:_(t.legacyCSS)?t.legacyCSS:Boolean(s.length&&p.legacyCSS===s.length)||F.legacyCSS,spacesAfterCommas:_(t.spacesAfterCommas)?t.spacesAfterCommas:Boolean(s.length&&p.spacesAfterCommas===s.length)||F.spacesAfterCommas,anglesUnit:t.anglesUnit&&d.includes(t.anglesUnit)?t.anglesUnit:1===new Set(r).size?r[0]:F.anglesUnit,rgbUnit:t.rgbUnit&&g.includes(t.rgbUnit)?t.rgbUnit:1===new Set(c).size&&c[0]?n.PERCENT:F.rgbUnit,labUnit:t.labUnit&&g.includes(t.labUnit)?t.labUnit:1===new Set(l).size&&l[0]?n.PERCENT:F.labUnit,lchUnit:t.lchUnit&&g.includes(t.lchUnit)?t.lchUnit:1===new Set(h).size&&h[0]?n.PERCENT:F.lchUnit,cmykUnit:t.cmykUnit&&g.includes(t.cmykUnit)?t.cmykUnit:1!==new Set(o).size||o[0]?F.cmykUnit:n.NONE,alphaUnit:t.alphaUnit&&g.includes(t.alphaUnit)?t.alphaUnit:1===new Set(u).size&&u[0]?n.PERCENT:F.alphaUnit,cmykFunction:t.cmykFunction&&A.includes(t.cmykFunction)?t.cmykFunction:o.length&&o.length===p.cmykFunction?i.CMYK:F.cmykFunction}};function jt(t,e,s,r,a,n=5,i={}){n<1&&(n=5);const c=xt.parse(t),l=xt.parse(e),h=((t,e,s)=>{const r=s-1,a=(e.R-t.R)/r,n=(e.G-t.G)/r,i=(e.B-t.B)/r,c=Z(t.A),l=(Z(e.A)-c)/r;return Array(s).fill(null).map((s,h)=>0===h?t:h===r?e:{R:V(t.R+a*h),G:V(t.G+n*h),B:V(t.B+i*h),A:V(c+l*h)})})(St(c),St(l),n);return h.map(n=>r?xt.convertCSS(n,s,Nt(i,t,e),a):xt.convert(n,s,i.decimals,a))}const $t=(t,e)=>[y(t)?t:void 0,y(t)?e:t];function Yt(s,r,a,n,i=t.Mix.ADDITIVE,c={}){const l=s.map(t=>xt.convert(t,e.RGB,c.decimals,n)),h=i===t.Mix.SUBTRACTIVE?l.map(t=>{const e=((t,e,s)=>{const r=Math.min(t,e,s),a=Math.min(A-t,A-e,A-s),n=t-r,i=e-r,c=s-r,l=Math.min(n,i),h=n-l,o=(i+l)/2,u=(c+i-l)/2,d=Math.max(h,o,u)/Math.max(n,i,c),g=isNaN(d)||d===1/0||d<=0?1:d;return{R:h/g+a,Y:o/g+a,B:u/g+a}})(t.R,t.G,t.B);return f(t.A)||(e.A=t.A),e}):null;function o(e){const s=i===t.Mix.ADDITIVE?{R:0,G:0,B:0,A:0}:{R:0,Y:0,B:0,A:0};return e.reduce((e,s)=>{const r=f(s.A)?1:s.A,a={R:Math.min(e.R+s.R*r,A),B:Math.min(e.B+s.B*r,A),A:1-(1-r)*(1-e.A)},n="G"in e?e.G:e.Y,c="G"in s?s.G:s.Y;return{...a,...i===t.Mix.ADDITIVE?{G:Math.min(n+c*r,A)}:{Y:Math.min(n+c*r,A)}}},s)}let u;if(i===t.Mix.ADDITIVE)u=o(l);else{const t=o(h);u=((t,e,s)=>{const r=Math.min(t,e,s),a=Math.min(A-t,A-e,A-s),n=t-r,i=e-r,c=s-r,l=Math.min(i,c),h=n+i-l,o=i+l,u=2*(c-l),d=Math.max(h,o,u)/Math.max(n,i,c),g=isNaN(d)||d===1/0||d<=0?1:d;return{R:h/g+a,G:o/g+a,B:u/g+a}})(t.R,t.Y,t.B),u.A=t.A}return a?xt.convertCSS(u,r,Nt(c,...s),n):xt.convert(u,r,c.decimals,n)}const Tt=(t,e)=>[v(t)?t:void 0,v(t)?e:t];function Wt(t,s,r=5,a={}){const n=v(s),i=xt.getParser(s),c=i.model,l=i.hasAlpha(s),h=xt.convert(s,e.HSL,void 0,l),o=t?h.L/(r+1):(100-h.L)/(r+1),u=Array.from(Array(r)).map((e,s)=>({...h,L:h.L+o*(s+1)*(1-2*+t)}));return n?u.map(t=>xt.convertCSS(t,c,Nt(a,s),l)):u.map(t=>xt.convert(t,c,a.decimals,l))}const Ut=(t,e)=>[y(t)?t:void 0,y(t)?e:t],Pt=(e,s,r)=>s.reduce((s,a)=>[...s,{...e,H:r===t.Mix.ADDITIVE?J(e.H+a):J(Lt(Lt(e.H,!1)+a,!0))}],[{...e}]),Kt=new Map([[t.Harmony.ANALOGOUS,(t,e)=>Pt(t,[30,-30],e)],[t.Harmony.COMPLEMENTARY,(t,e)=>Pt(t,[180],e)],[t.Harmony.SPLIT_COMPLEMENTARY,(t,e)=>Pt(t,[150,-150],e)],[t.Harmony.TRIADIC,(t,e)=>Pt(t,[120,-120],e)],[t.Harmony.TETRADIC,(t,e)=>Pt(t,[60,-120,180],e)],[t.Harmony.SQUARE,(t,e)=>Pt(t,[90,-90,180],e)]]),Xt=(e,s,r)=>{return(a=e)&&`${a}`in t.Harmony?[e,j(s)?s:t.Mix.ADDITIVE,j(s)?r:s]:j(e)?[t.Harmony.COMPLEMENTARY,e,s]:[t.Harmony.COMPLEMENTARY,t.Mix.ADDITIVE,e];var a};class Vt{constructor(t,s={}){this._options=Nt(s,t);const r=xt.parse(t);switch(w(r)){case e.HSL:this.hsl=r,this.update("hsl");break;case e.HWB:this.hwb=r,this.updateRGBFromHWB(),this.update("hwb","rgb");break;case e.CIELab:this.lab=r,this.updateRGBFromLAB(),this.update("lab","rgb");break;case e.LCH:this.lch=r,this.updateRGBFromLCH(),this.update("lch","rgb");break;case e.CMYK:this.cmyk=r,this.updateRGBFromCMYK(),this.update("cmyk","rgb");break;default:this.rgb=r,this.update("rgb")}}update(...t){t.includes("rgb")||this.updateRGB(),t.includes("hsl")||this.updateHSL(),t.includes("hwb")||this.updateHWB(),t.includes("lab")||this.updateLAB(),t.includes("lch")||this.updateLCH(),t.includes("cmyk")||this.updateCMYK()}updateRGB(){this.rgb={...ht(this.hsl.H,this.hsl.S,this.hsl.L),A:this.hsl.A??1}}updateHSL(){this.hsl=ot(this.rgb.R,this.rgb.G,this.rgb.B,this.rgb.A)}updateHWB(){this.hwb=pt(this.rgb.R,this.rgb.G,this.rgb.B,this.rgb.A)}updateLAB(){this.lab={...ut(this.rgb.R,this.rgb.G,this.rgb.B),A:this.rgb.A??1}}updateLCH(){this.lch={...Ct(this.rgb.R,this.rgb.G,this.rgb.B),A:this.rgb.A??1}}updateCMYK(){this.cmyk={...Ht(this.rgb.R,this.rgb.G,this.rgb.B),A:this.rgb.A??1}}updateRGBFromHWB(){this.rgb={...mt(this.hwb.H,this.hwb.W,this.hwb.B),A:this.hwb?.A??1}}updateRGBFromLCH(){this.rgb={...At(this.lch.L,this.lch.C,this.lch.H),A:this.lch.A??1}}updateRGBFromCMYK(){this.rgb={...Bt(this.cmyk.C,this.cmyk.M,this.cmyk.Y,this.cmyk.K),A:this.cmyk.A??1}}updateRGBFromLAB(){this.rgb={...dt(this.lab.L,this.lab.a,this.lab.b),A:this.lab.A??1}}updateLCHFromLAB(){this.lch={...gt(this.lab.L,this.lab.a,this.lab.b),A:this.lab.A}}updateLABromLCH(){this.lab={...bt(this.lch.L,this.lch.C,this.lch.H),A:this.lch.A}}setOptions(t={}){return this._options={...this._options,...t},this}setR(t){return this.rgb.R=z(t,0,A),this.update("rgb"),this}setG(t){return this.rgb.G=z(t,0,A),this.update("rgb"),this}setB(t){return this.rgb.B=z(t,0,A),this.update("rgb"),this}setH(t){return this.hsl.H=J(t),this.update("hsl"),this}setS(t){return this.hsl.S=z(t,0,m),this.update("hsl"),this}setL(t){return this.hsl.L=z(t,0,m),this.update("hsl"),this}setWhiteness(t){return this.hwb.W=z(t,0,m),this.updateRGBFromHWB(),this.update("rgb","hwb"),this}setBlackness(t){return this.hwb.B=z(t,0,m),this.updateRGBFromHWB(),this.update("rgb","hwb"),this}setCIEL(t){return this.lab.L=z(t,0,m),this.updateRGBFromLAB(),this.updateLCHFromLAB(),this.update("rgb","lab","lch"),this}setCIEa(t){return this.lab.a=z(t,-125,B),this.updateRGBFromLAB(),this.updateLCHFromLAB(),this.update("rgb","lab","lch"),this}setCIEb(t){return this.lab.b=z(t,-125,B),this.updateRGBFromLAB(),this.updateLCHFromLAB(),this.update("rgb","lab","lch"),this}setLCHL(t){return this.lch.L=z(t,0,m),this.updateRGBFromLCH(),this.updateLABromLCH(),this.update("rgb","lab","lch"),this}setLCHC(t){return this.lch.C=z(t,0,H),this.updateRGBFromLCH(),this.updateLABromLCH(),this.update("rgb","lab","lch"),this}setLCHH(t){return this.lch.H=J(t),this.updateRGBFromLCH(),this.updateLABromLCH(),this.update("rgb","lab","lch"),this}setA(t){const e=z(t,0,1);return this.rgb.A=e,this.hsl.A=e,this.hwb.A=e,this.lab.A=e,this.lch.A=e,this.cmyk.A=e,this}setC(t){return this.cmyk.C=z(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}setM(t){return this.cmyk.M=z(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}setY(t){return this.cmyk.Y=z(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}setK(t){return this.cmyk.K=z(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}get options(){return this._options}get R(){return V(this.rgb.R,this.options.decimals)}get G(){return V(this.rgb.G,this.options.decimals)}get B(){return V(this.rgb.B,this.options.decimals)}get H(){return V(this.hsl.H,this.options.decimals)}get S(){return V(this.hsl.S,this.options.decimals)}get L(){return V(this.hsl.L,this.options.decimals)}get Whiteness(){return V(this.hwb.W,this.options.decimals)}get Blackness(){return V(this.hwb.B,this.options.decimals)}get CIEL(){return V(this.lab.L,this.options.decimals)}get CIEa(){return V(this.lab.a,this.options.decimals)}get CIEb(){return V(this.lab.b,this.options.decimals)}get LCHL(){return V(this.lch.L,this.options.decimals)}get LCHC(){return V(this.lch.C,this.options.decimals)}get LCHH(){return V(this.lch.H,this.options.decimals)}get A(){return V(this.hsl.A,this.options.decimals)}get C(){return V(this.cmyk.C,this.options.decimals)}get M(){return V(this.cmyk.M,this.options.decimals)}get Y(){return V(this.cmyk.Y,this.options.decimals)}get K(){return V(this.cmyk.K,this.options.decimals)}get HEXObject(){return xt.convert(this.rgb,e.HEX)}get HEXAObject(){return xt.convert(this.rgb,e.HEX,0,!0)}get RGBObject(){return xt.convert(this.rgb,e.RGB,this.options.decimals)}get RGBAObject(){return xt.convert(this.rgb,e.RGB,this.options.decimals,!0)}get HSLObject(){return xt.convert(this.hsl,e.HSL,this.options.decimals)}get HSLAObject(){return xt.convert(this.hsl,e.HSL,this.options.decimals,!0)}get HWBObject(){return xt.convert(this.hwb,e.HWB,this.options.decimals)}get HWBAObject(){return xt.convert(this.hwb,e.HWB,this.options.decimals,!0)}get CIELabObject(){return xt.convert(this.lab,e.CIELab,this.options.decimals)}get CIELabAObject(){return xt.convert(this.lab,e.CIELab,this.options.decimals,!0)}get LCHObject(){return xt.convert(this.lch,e.LCH,this.options.decimals)}get LCHAObject(){return xt.convert(this.lch,e.LCH,this.options.decimals,!0)}get CMYKObject(){return xt.convert(this.cmyk,e.CMYK,this.options.decimals)}get CMYKAObject(){return xt.convert(this.cmyk,e.CMYK,this.options.decimals,!0)}get HEX(){return xt.convertCSS(this.rgb,e.HEX)}get HEXA(){return xt.convertCSS(this.rgb,e.HEX,{},!0)}get RGB(){return xt.convertCSS(this.rgb,e.RGB,this.options)}get RGBA(){return xt.convertCSS(this.rgb,e.RGB,this.options,!0)}get HSL(){return xt.convertCSS(this.hsl,e.HSL,this.options)}get HSLA(){return xt.convertCSS(this.hsl,e.HSL,this.options,!0)}get HWB(){return xt.convertCSS(this.hwb,e.HWB,this.options)}get HWBA(){return xt.convertCSS(this.hwb,e.HWB,this.options,!0)}get CIELab(){return xt.convertCSS(this.lab,e.CIELab,this.options)}get CIELabA(){return xt.convertCSS(this.lab,e.CIELab,this.options,!0)}get LCH(){return xt.convertCSS(this.lch,e.LCH,this.options)}get LCHA(){return xt.convertCSS(this.lch,e.LCH,this.options,!0)}get CMYK(){return xt.convertCSS(this.cmyk,e.CMYK,this.options)}get CMYKA(){return xt.convertCSS(this.cmyk,e.CMYK,this.options,!0)}static toHEXObject(t){return xt.convert(t,e.HEX)}static toHEX(t){return xt.convertCSS(t,e.HEX)}static toHEXAObject(t){return xt.convert(t,e.HEX,void 0,!0)}static toHEXA(t){return xt.convertCSS(t,e.HEX,void 0,!0)}static toRGBObject(t,s={}){return xt.convert(t,e.RGB,s.decimals)}static toRGB(t,s={}){return xt.convertCSS(t,e.RGB,Nt(s,t))}static toRGBAObject(t,s={}){return xt.convert(t,e.RGB,s.decimals,!0)}static toRGBA(t,s={}){return xt.convertCSS(t,e.RGB,Nt(s,t),!0)}static toHSLObject(t,s={}){return xt.convert(t,e.HSL,s.decimals)}static toHSL(t,s={}){return xt.convertCSS(t,e.HSL,Nt(s,t))}static toHSLAObject(t,s={}){return xt.convert(t,e.HSL,s.decimals,!0)}static toHSLA(t,s={}){return xt.convertCSS(t,e.HSL,Nt(s,t),!0)}static toHWBObject(t,s={}){return xt.convert(t,e.HWB,s.decimals)}static toHWB(t,s={}){return xt.convertCSS(t,e.HWB,Nt(s,t))}static toHWBAObject(t,s={}){return xt.convert(t,e.HWB,s.decimals,!0)}static toHWBA(t,s={}){return xt.convertCSS(t,e.HWB,Nt(s,t),!0)}static toCIELabObject(t,s={}){return xt.convert(t,e.CIELab,s.decimals)}static toCIELab(t,s={}){return xt.convertCSS(t,e.CIELab,Nt(s,t))}static toCIELabAObject(t,s={}){return xt.convert(t,e.CIELab,s.decimals,!0)}static toCIELabA(t,s={}){return xt.convertCSS(t,e.CIELab,Nt(s,t),!0)}static toLCHObject(t,s={}){return xt.convert(t,e.LCH,s.decimals)}static toLCH(t,s={}){return xt.convertCSS(t,e.LCH,Nt(s,t))}static toLCHAObject(t,s={}){return xt.convert(t,e.LCH,s.decimals,!0)}static toLCHA(t,s={}){return xt.convertCSS(t,e.LCH,Nt(s,t),!0)}static toCMYKObject(t,s={}){return xt.convert(t,e.CMYK,s.decimals)}static toCMYK(t,s={}){return xt.convertCSS(t,e.CMYK,Nt(s,t))}static toCMYKAObject(t,s={}){return xt.convert(t,e.CMYK,s.decimals,!0)}static toCMYKA(t,s={}){return xt.convertCSS(t,e.CMYK,Nt(s,t),!0)}static getBlendHEXObject(t,s,r){return jt(t,s,e.HEX,!1,!1,r)}static getBlendHEX(t,s,r){return jt(t,s,e.HEX,!0,!1,r)}static getBlendHEXAObject(t,s,r){return jt(t,s,e.HEX,!1,!0,r)}static getBlendHEXA(t,s,r){return jt(t,s,e.HEX,!0,!0,r)}static getShades(t,e,s){return Wt(!0,t,...Ut(e,s))}static getTints(t,e,s){return Wt(!1,t,...Ut(e,s))}static getHarmony(t,s,r,a){return((t,s,r,a={})=>{const n=Kt.get(s),i=v(t),c=xt.getParser(t),l=c.model,h=c.hasAlpha(t),o=n(xt.convert(t,e.HSL),r);return i?o.map(e=>xt.convertCSS(e,l,Nt(a,t),h)):o.map(t=>xt.convert(t,l,a.decimals,h))})(t,...Xt(s,r,a))}}return Vt.getBlendRGBObject=(t,s,r,a)=>jt(t,s,e.RGB,!1,!1,...$t(r,a)),Vt.getBlendRGB=(t,s,r,a)=>jt(t,s,e.RGB,!0,!1,...$t(r,a)),Vt.getBlendRGBAObject=(t,s,r,a)=>jt(t,s,e.RGB,!1,!0,...$t(r,a)),Vt.getBlendRGBA=(t,s,r,a)=>jt(t,s,e.RGB,!0,!0,...$t(r,a)),Vt.getBlendHSLObject=(t,s,r,a)=>jt(t,s,e.HSL,!1,!1,...$t(r,a)),Vt.getBlendHSL=(t,s,r,a)=>jt(t,s,e.HSL,!0,!1,...$t(r,a)),Vt.getBlendHSLAObject=(t,s,r,a)=>jt(t,s,e.HSL,!1,!0,...$t(r,a)),Vt.getBlendHSLA=(t,s,r,a)=>jt(t,s,e.HSL,!0,!0,...$t(r,a)),Vt.getBlendHWBObject=(t,s,r,a)=>jt(t,s,e.HWB,!1,!1,...$t(r,a)),Vt.getBlendHWB=(t,s,r,a)=>jt(t,s,e.HWB,!0,!1,...$t(r,a)),Vt.getBlendHWBAObject=(t,s,r,a)=>jt(t,s,e.HWB,!1,!0,...$t(r,a)),Vt.getBlendHWBA=(t,s,r,a)=>jt(t,s,e.HWB,!0,!0,...$t(r,a)),Vt.getBlendCIELabObject=(t,s,r,a)=>jt(t,s,e.CIELab,!1,!1,...$t(r,a)),Vt.getBlendCIELab=(t,s,r,a)=>jt(t,s,e.CIELab,!0,!1,...$t(r,a)),Vt.getBlendCIELabAObject=(t,s,r,a)=>jt(t,s,e.CIELab,!1,!0,...$t(r,a)),Vt.getBlendCIELabA=(t,s,r,a)=>jt(t,s,e.CIELab,!0,!0,...$t(r,a)),Vt.getBlendLCHObject=(t,s,r,a)=>jt(t,s,e.LCH,!1,!1,...$t(r,a)),Vt.getBlendLCH=(t,s,r,a)=>jt(t,s,e.LCH,!0,!1,...$t(r,a)),Vt.getBlendLCHAObject=(t,s,r,a)=>jt(t,s,e.LCH,!1,!0,...$t(r,a)),Vt.getBlendLCHA=(t,s,r,a)=>jt(t,s,e.LCH,!0,!0,...$t(r,a)),Vt.getMixHEXObject=(t,s)=>Yt(t,e.HEX,!1,!1,s),Vt.getMixHEX=(s,r=t.Mix.ADDITIVE)=>Yt(s,e.HEX,!0,!1,r),Vt.getMixHEXAObject=(s,r=t.Mix.ADDITIVE)=>Yt(s,e.HEX,!1,!0,r),Vt.getMixHEXA=(s,r=t.Mix.ADDITIVE)=>Yt(s,e.HEX,!0,!0,r),Vt.getMixRGBObject=(t,s,r)=>Yt(t,e.RGB,!1,!1,...Tt(s,r)),Vt.getMixRGB=(t,s,r)=>Yt(t,e.RGB,!0,!1,...Tt(s,r)),Vt.getMixRGBAObject=(t,s,r)=>Yt(t,e.RGB,!1,!0,...Tt(s,r)),Vt.getMixRGBA=(t,s,r)=>Yt(t,e.RGB,!0,!0,...Tt(s,r)),Vt.getMixHSLObject=(t,s,r)=>Yt(t,e.HSL,!1,!1,...Tt(s,r)),Vt.getMixHSL=(t,s,r)=>Yt(t,e.HSL,!0,!1,...Tt(s,r)),Vt.getMixHSLAObject=(t,s,r)=>Yt(t,e.HSL,!1,!0,...Tt(s,r)),Vt.getMixHSLA=(t,s,r)=>Yt(t,e.HSL,!0,!0,...Tt(s,r)),Vt.getMixHWBObject=(t,s,r)=>Yt(t,e.HWB,!1,!1,...Tt(s,r)),Vt.getMixHWB=(t,s,r)=>Yt(t,e.HWB,!0,!1,...Tt(s,r)),Vt.getMixHWBAObject=(t,s,r)=>Yt(t,e.HWB,!1,!0,...Tt(s,r)),Vt.getMixHWBA=(t,s,r)=>Yt(t,e.HWB,!0,!0,...Tt(s,r)),Vt.getMixCIELabObject=(t,s,r)=>Yt(t,e.CIELab,!1,!1,...Tt(s,r)),Vt.getMixCIELab=(t,s,r)=>Yt(t,e.CIELab,!0,!1,...Tt(s,r)),Vt.getMixCIELabAObject=(t,s,r)=>Yt(t,e.CIELab,!1,!0,...Tt(s,r)),Vt.getMixCIELabA=(t,s,r)=>Yt(t,e.CIELab,!0,!0,...Tt(s,r)),Vt.getMixLCHObject=(t,s,r)=>Yt(t,e.LCH,!1,!1,...Tt(s,r)),Vt.getMixLCH=(t,s,r)=>Yt(t,e.LCH,!0,!1,...Tt(s,r)),Vt.getMixLCHAObject=(t,s,r)=>Yt(t,e.LCH,!1,!0,...Tt(s,r)),Vt.getMixLCHA=(t,s,r)=>Yt(t,e.LCH,!0,!0,...Tt(s,r)),t.ColorTranslator=Vt,t}({});