colortranslator
Version:
A JavaScript library, written in TypeScript, to convert among different color models
2 lines (1 loc) • 40.6 kB
JavaScript
"use strict";var t,e,s,r,a,n,i;!function(t){t.HEX="HEX",t.RGB="RGB",t.HWB="HWB",t.HSL="HSL",t.CIELab="CIELab",t.LCH="LCH",t.CMYK="CMYK"}(t||(t={})),exports.Harmony=void 0,(e=exports.Harmony||(exports.Harmony={})).ANALOGOUS="ANALOGOUS",e.COMPLEMENTARY="COMPLEMENTARY",e.SPLIT_COMPLEMENTARY="SPLIT_COMPLEMENTARY",e.TRIADIC="TRIADIC",e.TETRADIC="TETRADIC",e.SQUARE="SQUARE",exports.Mix=void 0,(s=exports.Mix||(exports.Mix={})).ADDITIVE="ADDITIVE",s.SUBTRACTIVE="SUBTRACTIVE",function(t){t.NONE="none",t.DEGREES="deg",t.GRADIANS="grad",t.RADIANS="rad",t.TURNS="turn"}(r||(r={})),function(t){t.NONE="none",t.PERCENT="percent"}(a||(a={})),function(t){t.DEVICE_CMYK="device-cmyk",t.CMYK="cmyk"}(n||(n={})),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"}(i||(i={}));const c={[t.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,[t.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*\)$/,[t.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*\)$/,[t.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*\)$/,[t.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*\)$/,[t.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*\)$/,[t.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*\)$/},l={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*/},h=/^(?<number>-?(?:\d*\.)?\d+)(?<units>(?:deg|grad|rad|turn)?)$/,o=/^(-?\d+(?:\.\d+)?|-?\.\d+)%$/,u=/^0x([a-f\d]{1,2})$/i,d=/\{(\d+)\}/g,g=/,( +|\d+)/g,b=/ +/,C=255,A=360,p=100,m=125,B=150,H=10/9,L=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"]}),E=Object.freeze({ABGR:t.RGB,ABHW:t.HWB,ACHL:t.LCH,ACKMY:t.CMYK,AHLS:t.HSL,ALAB:t.CIELab,BGR:t.RGB,BHW:t.HWB,CHL:t.LCH,CKMY:t.CMYK,HLS:t.HSL,LAB:t.CIELab}),S=Object.freeze({decimals:6,legacyCSS:!1,spacesAfterCommas:!1,anglesUnit:r.NONE,rgbUnit:a.NONE,labUnit:a.NONE,lchUnit:a.NONE,cmykUnit:a.PERCENT,alphaUnit:a.NONE,cmykFunction:n.DEVICE_CMYK}),F=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"}),R=t=>[...t].sort().join("").toUpperCase(),M=t=>"string"==typeof t,v=t=>"number"==typeof t,y=t=>"boolean"==typeof t,_=t=>void 0===t,w=t=>E[R(Object.keys(t))],f=e=>w(e)===t.RGB,G=e=>w(e)===t.HSL,O=e=>w(e)===t.HWB,I=e=>w(e)===t.CIELab,x=e=>w(e)===t.LCH,D=e=>w(e)===t.CMYK,k=t=>t in i,N=t=>!!t&&`${t}`in exports.Mix,j=t=>+`${t}`.replace(o,"$1"),$=t=>o.test(`${t}`)?j(t):Math.min(+t,100),Y=t=>(1===t.length&&(t+=t),parseInt(t,16)),T=t=>{const e=X(t,0).toString(16).toUpperCase();return 1===e.length?`0x0${e}`:`0x${e}`},W=(t,e=!1)=>!e&&o.test(t)?Math.min(C*j(t)/100,C):u.test(t)?(3===t.length&&(t+=t.slice(-1)),e?X(t)/C:X(t)):Math.min(+t,e?1:C),U=t=>o.test(t)?V(m*j(t)/100,-125,m):V(+t,-125,m),P=t=>o.test(t)?V(B*j(t)/100,-150,B):V(+t,-150,B),K=(t,e)=>{const s=o.test(t)?j(t):+t;return e?Math.min(100*s,100):Math.min(s,100)},X=(t,e=6)=>{const s=Math.pow(10,e);return Math.round(+t*s)/s},V=(t,e,s)=>Math.max(e,Math.min(t,s)),z=t=>180*t/Math.PI,q=t=>t*Math.PI/180,Q=t=>{if(M(t)){const e=t.match(h).groups,s=+e.number;switch(e.units){case r.RADIANS:t=X(z(s));break;case r.TURNS:t=X(s*A);break;case r.GRADIANS:t=X(.9*s);break;case r.DEGREES:default:t=s}}return(t>=A||t<0)&&(t-=Math.floor(t/A)*A),t},J=t=>{M(t)&&(t=o.test(t)?j(t)/100:+t);const e=Number(t);return isNaN(e)||e>1?1:X(e)},Z=(t,e)=>{let s;switch(e){case r.RADIANS:s=X(q(t));break;case r.TURNS:s=X(t/A);break;case r.GRADIANS:s=X(H*t);break;case r.DEGREES:case r.NONE:default:s=t}return s},tt=t=>{if(t){const e=t.match(h).groups.units;return""===e?r.NONE:e}return r.NONE},et=[[.4360747,.3850649,.1430804],[.2225045,.7168786,.0606169],[.0139322,.0971045,.7141733]],st=[[3.1338561,-1.6168667,-.4906146],[-.9787684,1.9161415,.033454],[.0719453,-.2289914,1.4052427]],rt=et.map(t=>t.reduce((t,e)=>t+e,0)),at=(t,e,s)=>(s<0&&(s+=6),s>=6&&(s-=6),X(s<1?((e-t)*s+t)*C:s<3?e*C:s<4?((e-t)*(4-s)+t)*C:t*C)),nt=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,it=t=>t<=.0031308?12.92*t:1.055*t**(1/2.4)-.055,ct=(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},lt=(t,e,s)=>{e/=100;const r=(s/=100)<=.5?s*(e+1):s+e-s*e,a=2*s-r;return{R:at(a,r,(t/=60)+2),G:at(a,r,t),B:at(a,r,t-2)}},ht=(t,e,s,r=1)=>{t/=C,e/=C,s/=C,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=X(60*c),c<0&&(c+=360),l=i/(1-Math.abs(2*h-1))}return{H:c,S:X(100*l),L:X(100*h),A:r}},ot=(t,e,s)=>{const r=[t/C,e/C,s/C].map(nt),a=ct(r[0],r[1],r[2],et),n=((t,e,s)=>{const r=t=>t>(6/29)**3?Math.cbrt(t):t/(3*(6/29)**2)+4/29,a=r(t/rt[0]),n=r(e/rt[1]);return[116*n-16,500*(a-n),200*(n-r(s/rt[2]))]})(a[0],a[1],a[2]);return{L:n[0],a:n[1],b:n[2]}},ut=(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[rt[0]*r(a+n),rt[1]*r(a),rt[2]*r(a-i)]})(t,e,s),a=ct(r[0],r[1],r[2],st).map(it);return{R:V(a[0]*C,0,C),G:V(a[1]*C,0,C),B:V(a[2]*C,0,C)}},dt=(t,e,s)=>{const r=Math.sqrt(e**2+s**2),a=z(Math.atan2(s,e));return{L:t,C:r,H:Q(a)}},gt=(t,e,s)=>{const r=q(s);return{L:t,a:e*Math.cos(r),b:e*Math.sin(r)}},bt=(t,e,s)=>{const r=ot(t,e,s);return dt(r.L,r.a,r.b)},Ct=(t,e,s)=>{const r=gt(t,e,s);return ut(r.L,r.a,r.b)},At=(t,e,s,r=1)=>({H:ht(t,e,s,r).H,W:X(Math.min(t,e,s)/C*100),B:X(100*(1-Math.max(t,e,s)/C)),A:r}),pt=(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:V(n*C,0,C),G:V(i*C,0,C),B:V(c*C,0,C)}},mt=(t,e,s,r)=>({R:V(X(C*(1-t)*(r=1-r)),0,C),G:V(X(C*(1-e)*r),0,C),B:V(X(C*(1-s)*r),0,C)}),Bt=(t,e,s)=>{t/=C,e/=C,s/=C;const r=1-Math.max(t,e,s),a=1-r,n=a&&(a-e)/a,i=a&&(a-s)/a;return{C:X(100*(a&&(a-t)/a)),M:X(100*n),Y:X(100*i),K:X(100*r)}},Ht=(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 Lt{hasAlpha(t){return M(t)?this.getCSSOptions(t).hasAlpha:!_(t.A)}}const Et=t=>{const e=_(t.A)?{}:{A:+t.A};return G(t)?{...lt(t.H,t.S,t.L),...e}:O(t)?{...pt(t.H,t.W,t.B),...e}:I(t)?{...ut(t.L,t.a,t.b),...e}:x(t)?{...Ct(t.L,t.C,t.H),...e}:D(t)?{...mt(t.C,t.M,t.Y,t.K),...e}:t},St=t=>t?", ":",",Ft=(t,e)=>{const s=R(Object.keys(t)),r=E[s];return L[r].reduce((s,r,a)=>{const n=t[r];return _(n)||s.push(e(n,a)),s},[])},Rt=(t,e)=>t.replace(d,(t,s)=>`${e[+s-1]}`),Mt=(t,e,s=!1)=>{const{alphaUnit:r,legacyCSS:n,decimals:i}=e;return r!==a.PERCENT||n&&!s?X(t,i):`${X(100*t,i)}%`},vt=t=>{const{anglesUnit:e,decimals:s}=t;return(a,n)=>{if(0===n&&e!==r.NONE){return`${X(Z(+a,e),s)}${e}`}return 3===n?Mt(+a,t):X(a,s)}};class yt{constructor(t,e,s){this._operations=new Map([[l.DIVISION,this._division],[l.MULTIPLICATION,this._multiplication],[l.SUM,this._sum],[l.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(l.REGEXP.test(r))l.REGEXP.lastIndex=0,this._result=this._getCalcValue(r,s);else{for(;l.SCOPED.test(r)&&a<100;){if(l.SCOPED.lastIndex=0,r=r.replace(l.SCOPED,(t,e)=>this._calculate(e,s).toString()),l.REGEXP.test(r)){l.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(l.REGEXP).groups.operation,r=this._calculate(s,e);if(Number.isNaN(r))throw new Error(`Invalid value for ${this._colorIndex}. ${s} ${F.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 _t=new class extends Lt{_extract(t){return(k(t)?i[t]:t).match(c.HEX).groups}supports(t){if(M(t))return c.HEX.test(t)||k(t);const e=Object.entries(t).some(t=>!u.test(`${t[1]}`));return f(t)&&!e}parse(t){if(M(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:Y(s),G:Y(r),B:Y(a),..._(n)?{}:{A:Y(n)/C}}}return{R:W(`${t.R}`),G:W(`${t.G}`),B:W(`${t.B}`),..._(t.A)?{}:{A:Math.min(W(`${t.A}`,!0),1)}}}convert(t,e,s){const r=f(t)?t:Et(t);return{R:T(r.R),G:T(r.G),B:T(r.B),...s?{A:_(r.A)?"0xFF":T(r.A*C)}:{}}}convertCSS(t,e,s){const r=this.convert(t,e.decimals,s),a=Ft(r,t=>(t=>{let e=X(t,0).toString(16).toUpperCase();return 1===e.length&&(e=`0${e}`),e})(X(t))),n=4===a.length?"#{1}{2}{3}{4}":"#{1}{2}{3}";return Rt(n,a)}getCSSOptions(t){const e=this._extract(t);return{hasAlpha:!_(e.a??e.aa)}}get model(){return t.HEX}},wt=new class extends Lt{_extract(t){return t.match(c.RGB).groups}supports(t){if(M(t))return c.RGB.test(t);const e=Object.entries(t).some(t=>!(o.test(`${t[1]}`)||!u.test(`${t[1]}`)&&!isNaN(+t[1])&&+t[1]<=C));return f(t)&&!e}parse(t,e){if(M(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:A}=s;if(u){const t=e.parse(u),s=Et(t),r={r:s.R,g:s.G,b:s.B,alpha:s.A??1},a=new yt("r",d,r).result,n=new yt("g",g,r).result,i=new yt("b",b,r).result,c={R:Math.min(a,C),G:Math.min(n,C),B:Math.min(i,C)};if(A){const t=new yt("alpha",A,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(W(t),C),G:Math.min(W(e),C),B:Math.min(W(s),C),..._(u)?{}:{A:J(u)}}}}return{R:W(`${t.R}`),G:W(`${t.G}`),B:W(`${t.B}`),..._(t.A)?{}:{A:Math.min(W(`${t.A}`,!0),1)}}}convert(t,e,s){const r=f(t)?t:Et(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:n,spacesAfterCommas:i,rgbUnit:c}=e,l=this.convert(t,e.decimals,s),h=St(i),o=Ft(l,(t,s)=>c===a.PERCENT&&s<3?`${((t,e)=>X(t/C*100,e))(+t,r)}%`:3===s?Mt(+t,e):X(t,r)),u=n?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 Rt(u,o)}_roundRGBObject(t,e){return{R:X(t.R,e),G:X(t.G,e),B:X(t.B,e),..._(t.A)?{}:{A:X(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:o.test(s??i)&&o.test(r??c)&&o.test(a??l),hasPercentageAlpha:!_(n)&&o.test(n)||!_(h)&&o.test(h),hasAlpha:!_(n??h)}}get model(){return t.RGB}},ft=new class extends Lt{_extract(t){return t.match(c.HSL).groups}supports(t){return M(t)?c.HSL.test(t):G(t)}parse(t,e){if(M(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=Et(t),r=ht(s.R,s.G,s.B,s.A),a={h:r.H,s:r.S,l:r.L,alpha:r.A},n=new yt("h",d,a).result,i=new yt("s",g,a).result,c=new yt("l",b,a).result,l={H:Q(n),S:$(i),L:$(c)};if(C){const t=new yt("alpha",C,a).result;l.A=V(t,0,1)}return l}{const t=a??l,e=n??h,s=i??o;return{H:Q(r??c),S:$(t),L:$(e),..._(s)?{}:{A:J(s)}}}}return{H:Q(t.H),S:$(`${t.S}`),L:$(`${t.L}`),..._(t.A)?{}:{A:V(+t.A,0,1)}}}convert(t,e,s){let r;if(G(t))r=t;else{const e=Et(t);r=ht(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=St(a),i=this.convert(t,e.decimals,s),c=vt(e),l=Ft(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 Rt(h,l)}_roundHSLObject(t,e){return{H:X(Q(t.H),e),S:X(t.S,e),L:X(t.L,e),..._(t.A)?{}:{A:X(t.A,e)}}}getCSSOptions(t){const e=this._extract(t),{h_legacy:s,h:r,a_legacy:a,a:n}=e;return{angleUnit:tt(s??r),hasPercentageAlpha:!_(a)&&o.test(a)||!_(n)&&o.test(n),hasAlpha:!_(a??n)}}get model(){return t.HSL}},Gt=new class extends Lt{_extract(t){return t.match(c.HWB).groups}supports(t){return M(t)?c.HWB.test(t):O(t)}parse(t,e){if(M(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=Et(t),r=At(s.R,s.G,s.B,s.A),a={h:r.H,w:r.W,b:r.B,alpha:r.A},n=new yt("h",l,a).result,i=new yt("w",h,a).result,d=new yt("b",o,a).result,g={H:V(n,0,A),W:V(i,0,p),B:V(d,0,p)};if(u){const t=new yt("alpha",u,a).result;g.A=V(t,0,1)}return g}return{H:Q(r),W:$(a),B:$(n),..._(i)?{}:{A:J(i)}}}return{H:Q(t.H),W:$(t.W),B:$(t.B),..._(t.A)?{}:{A:J(t.A)}}}convert(t,e,s){let r;if(O(t))r=t;else{const e=Et(t);r=At(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=vt(e),n=Ft(r,a),i=4===n.length?"hwb({1} {2}% {3}% / {4})":"hwb({1} {2}% {3}%)";return Rt(i,n)}_roundHWBObject(t,e){return{H:X(Q(t.H),e),W:X(t.W,e),B:X(t.B,e),..._(t.A)?{}:{A:X(t.A,e)}}}getCSSOptions(t){const e=this._extract(t);return{angleUnit:tt(e.h),hasPercentageAlpha:!_(e.a)&&o.test(e.a),hasAlpha:!_(e.a)}}get model(){return t.HWB}},Ot=new class extends Lt{_extract(t){return t.match(c.CIELab).groups}supports(t){return M(t)?c.CIELab.test(t):I(t)}parse(t,e){if(M(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=Et(t),r=ot(s.R,s.G,s.B),a={l:r.L,a:r.a,b:r.b,alpha:s.A??1},n=new yt("l",l,a).result,i=new yt("a",h,a).result,d=new yt("b",o,a).result,g={L:V(n,0,p),a:V(i,-125,m),b:V(d,-125,m)};if(u){const t=new yt("alpha",u,a).result;g.A=V(t,0,1)}return g}return{L:$(r),a:U(a),b:U(n),..._(i)?{}:{A:J(i)}}}return{L:$(t.L),a:U(`${t.a}`),b:U(`${t.b}`),..._(t.A)?{}:{A:J(t.A)}}}convert(t,e,s){let r;if(I(t))r=t;else{const e=Et(t);r=ot(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:n}=e,i=this.convert(t,e.decimals,s),c=Ft(i,(t,s)=>{if(0===s){const e=X($(t),r);return n===a.PERCENT?`${e}%`:`${e}`}return s<3?n===a.PERCENT?`${((t,e)=>X(t/m*100,e))(+t,r)}%`:X(t,r):Mt(+t,e,!0)}),l=4===c.length?"lab({1} {2} {3} / {4})":"lab({1} {2} {3})";return Rt(l,c)}_roundCIELabObject(t,e){return{L:X(t.L,e),a:X(t.a,e),b:X(t.b,e),..._(t.A)?{}:{A:X(t.A,e)}}}getCSSOptions(t){const e=this._extract(t),{L:s,a:r,b:a,A:n}=e;return{hasPercentageValues:o.test(s)&&o.test(r)&&o.test(a),hasPercentageAlpha:!_(n)&&o.test(n),hasAlpha:!_(n)}}get model(){return t.CIELab}},It=new class extends Lt{_extract(t){return t.match(c.LCH).groups}supports(t){return M(t)?c.LCH.test(t):x(t)}parse(t,e){if(M(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=Et(t),r=bt(s.R,s.G,s.B),a={l:r.L,c:r.C,h:r.H,alpha:s.A??1},n=new yt("l",l,a).result,i=new yt("c",h,a).result,d=new yt("h",o,a).result,g={L:V(n,0,p),C:V(i,-150,B),H:Q(d)};if(u){const t=new yt("alpha",u,a).result;g.A=V(t,0,1)}return g}return{L:$(r),C:P(a),H:Q(n),..._(i)?{}:{A:J(i)}}}return{L:$(t.L),C:P(`${t.C}`),H:Q(t.H),..._(t.A)?{}:{A:J(t.A)}}}convert(t,e,s){let r;if(x(t))r=t;else{const e=Et(t);r=bt(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:n,lchUnit:i,anglesUnit:c}=e,l=this.convert(t,e.decimals,s),h=Ft(l,(t,s)=>{if(0===s){const e=X($(t),n);return i===a.PERCENT?`${e}%`:`${e}`}if(1===s)return i===a.PERCENT?`${((t,e)=>X(t/B*100,e))(+t,n)}%`:X(t,n);if(2===s){if(c!==r.NONE){return`${X(Z(+t,c),n)}${c}`}return X(t,n)}return Mt(+t,e,!0)}),o=4===h.length?"lch({1} {2} {3} / {4})":"lch({1} {2} {3})";return Rt(o,h)}_roundLCHObject(t,e){return{L:X(t.L,e),C:X(t.C,e),H:X(Q(t.H),e),..._(t.A)?{}:{A:X(t.A,e)}}}getCSSOptions(t){const e=this._extract(t);return{angleUnit:tt(e.h),hasPercentageValues:o.test(e.l)&&o.test(e.c),hasPercentageAlpha:!_(e.a)&&o.test(e.a),hasAlpha:!_(e.a)}}get model(){return t.LCH}},xt=new class extends Lt{_extract(t){return t.match(c.CMYK).groups}_shouldMultiplyBy100(...t){return!t.some(t=>+t>1)}supports(t){return M(t)?c.CMYK.test(t):D(t)}parse(t){if(M(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:K(s,c),M:K(r,c),Y:K(a,c),K:K(n,c),..._(i)?{}:{A:J(i)}}}const e=this._shouldMultiplyBy100(t.C,t.M,t.Y,t.K);return{C:K(`${t.C}`,e),M:K(`${t.M}`,e),Y:K(`${t.Y}`,e),K:K(`${t.K}`,e),..._(t.A)?{}:{A:J(t.A)}}}convert(t,e,s){let r;if(D(t))r=t;else{const e=Et(t);r=Bt(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:n,spacesAfterCommas:i,cmykUnit:c,cmykFunction:l}=e,h=St(i),o=this.convert(t,e.decimals,s),u=Ft(o,(t,s)=>c===a.PERCENT&&s<4?`${X(t,r)}%`:4===s?Mt(+t,e):X(+t/100,r)),d=n?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 Rt(d,u)}_roundCMYKObject(t,e){return{C:X(t.C,e),M:X(t.M,e),Y:X(t.Y,e),K:X(t.K,e),..._(t.A)?{}:{A:X(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:u,a:d}=e;return{hasPercentageValues:o.test(s??c)&&o.test(r??l)&&o.test(a??h)&&o.test(n??u),hasPercentageAlpha:!_(i)&&o.test(i)||!_(d)&&o.test(d),hasAlpha:!_(i??d)}}get model(){return t.CMYK}},Dt=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(F.NOT_ACCEPTED_INPUT)}parse(t){return this.getParser(t).parse(t,this)}convert(t,e,s=S.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([[t.HEX,_t],[t.RGB,wt],[t.HSL,ft],[t.HWB,Gt],[t.CIELab,Ot],[t.LCH,It],[t.CMYK,xt]])),kt=(t,...e)=>{const s=[],i=[],c=[],l=[],h=[],o=[],u=[],d=Object.values(r),C=Object.values(a),A=Object.values(n),p={legacyCSS:0,spacesAfterCommas:0,cmykFunction:0};for(const t of e)if(M(t)){if(s.push(t),t.includes(",")){p.legacyCSS++;const e=t.match(g);1===new Set(e).size&&b.test(e[0].slice(1))&&p.spacesAfterCommas++}if(ft.supports(t)){const e=ft.getCSSOptions(t);i.push(e.angleUnit),u.push(e.hasPercentageAlpha);continue}if(Gt.supports(t)){const e=Gt.getCSSOptions(t);i.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(Ot.supports(t)){const e=Ot.getCSSOptions(t);l.push(e.hasPercentageValues),u.push(e.hasPercentageAlpha);continue}if(It.supports(t)){const e=It.getCSSOptions(t);i.push(e.angleUnit),h.push(e.hasPercentageValues),u.push(e.hasPercentageAlpha);continue}if(xt.supports(t)){const e=xt.getCSSOptions(t);o.push(e.hasPercentageValues),t.startsWith(n.CMYK)&&p.cmykFunction++,u.push(e.hasPercentageAlpha)}}return{decimals:v(t.decimals)?t.decimals:S.decimals,legacyCSS:y(t.legacyCSS)?t.legacyCSS:Boolean(s.length&&p.legacyCSS===s.length)||S.legacyCSS,spacesAfterCommas:y(t.spacesAfterCommas)?t.spacesAfterCommas:Boolean(s.length&&p.spacesAfterCommas===s.length)||S.spacesAfterCommas,anglesUnit:t.anglesUnit&&d.includes(t.anglesUnit)?t.anglesUnit:1===new Set(i).size?i[0]:S.anglesUnit,rgbUnit:t.rgbUnit&&C.includes(t.rgbUnit)?t.rgbUnit:1===new Set(c).size&&c[0]?a.PERCENT:S.rgbUnit,labUnit:t.labUnit&&C.includes(t.labUnit)?t.labUnit:1===new Set(l).size&&l[0]?a.PERCENT:S.labUnit,lchUnit:t.lchUnit&&C.includes(t.lchUnit)?t.lchUnit:1===new Set(h).size&&h[0]?a.PERCENT:S.lchUnit,cmykUnit:t.cmykUnit&&C.includes(t.cmykUnit)?t.cmykUnit:1!==new Set(o).size||o[0]?S.cmykUnit:a.NONE,alphaUnit:t.alphaUnit&&C.includes(t.alphaUnit)?t.alphaUnit:1===new Set(u).size&&u[0]?a.PERCENT:S.alphaUnit,cmykFunction:t.cmykFunction&&A.includes(t.cmykFunction)?t.cmykFunction:o.length&&o.length===p.cmykFunction?n.CMYK:S.cmykFunction}};function Nt(t,e,s,r,a,n=5,i={}){n<1&&(n=5);const c=Dt.parse(t),l=Dt.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=J(t.A),l=(J(e.A)-c)/r;return Array(s).fill(null).map((s,h)=>0===h?t:h===r?e:{R:X(t.R+a*h),G:X(t.G+n*h),B:X(t.B+i*h),A:X(c+l*h)})})(Et(c),Et(l),n);return h.map(n=>r?Dt.convertCSS(n,s,kt(i,t,e),a):Dt.convert(n,s,i.decimals,a))}const jt=(t,e)=>[v(t)?t:void 0,v(t)?e:t];function $t(e,s,r,a,n=exports.Mix.ADDITIVE,i={}){const c=e.map(e=>Dt.convert(e,t.RGB,i.decimals,a)),l=n===exports.Mix.SUBTRACTIVE?c.map(t=>{const e=((t,e,s)=>{const r=Math.min(t,e,s),a=Math.min(C-t,C-e,C-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 _(t.A)||(e.A=t.A),e}):null;function h(t){const e=n===exports.Mix.ADDITIVE?{R:0,G:0,B:0,A:0}:{R:0,Y:0,B:0,A:0};return t.reduce((t,e)=>{const s=_(e.A)?1:e.A,r={R:Math.min(t.R+e.R*s,C),B:Math.min(t.B+e.B*s,C),A:1-(1-s)*(1-t.A)},a="G"in t?t.G:t.Y,i="G"in e?e.G:e.Y;return{...r,...n===exports.Mix.ADDITIVE?{G:Math.min(a+i*s,C)}:{Y:Math.min(a+i*s,C)}}},e)}let o;if(n===exports.Mix.ADDITIVE)o=h(c);else{const t=h(l);o=((t,e,s)=>{const r=Math.min(t,e,s),a=Math.min(C-t,C-e,C-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),o.A=t.A}return r?Dt.convertCSS(o,s,kt(i,...e),a):Dt.convert(o,s,i.decimals,a)}const Yt=(t,e)=>[M(t)?t:void 0,M(t)?e:t];function Tt(e,s,r=5,a={}){const n=M(s),i=Dt.getParser(s),c=i.model,l=i.hasAlpha(s),h=Dt.convert(s,t.HSL,void 0,l),o=e?h.L/(r+1):(100-h.L)/(r+1),u=Array.from(Array(r)).map((t,s)=>({...h,L:h.L+o*(s+1)*(1-2*+e)}));return n?u.map(t=>Dt.convertCSS(t,c,kt(a,s),l)):u.map(t=>Dt.convert(t,c,a.decimals,l))}const Wt=(t,e)=>[v(t)?t:void 0,v(t)?e:t],Ut=(t,e,s)=>e.reduce((e,r)=>[...e,{...t,H:s===exports.Mix.ADDITIVE?Q(t.H+r):Q(Ht(Ht(t.H,!1)+r,!0))}],[{...t}]),Pt=new Map([[exports.Harmony.ANALOGOUS,(t,e)=>Ut(t,[30,-30],e)],[exports.Harmony.COMPLEMENTARY,(t,e)=>Ut(t,[180],e)],[exports.Harmony.SPLIT_COMPLEMENTARY,(t,e)=>Ut(t,[150,-150],e)],[exports.Harmony.TRIADIC,(t,e)=>Ut(t,[120,-120],e)],[exports.Harmony.TETRADIC,(t,e)=>Ut(t,[60,-120,180],e)],[exports.Harmony.SQUARE,(t,e)=>Ut(t,[90,-90,180],e)]]),Kt=(t,e,s)=>{return(r=t)&&`${r}`in exports.Harmony?[t,N(e)?e:exports.Mix.ADDITIVE,N(e)?s:e]:N(t)?[exports.Harmony.COMPLEMENTARY,t,e]:[exports.Harmony.COMPLEMENTARY,exports.Mix.ADDITIVE,t];var r};class Xt{constructor(e,s={}){this._options=kt(s,e);const r=Dt.parse(e);switch(w(r)){case t.HSL:this.hsl=r,this.update("hsl");break;case t.HWB:this.hwb=r,this.updateRGBFromHWB(),this.update("hwb","rgb");break;case t.CIELab:this.lab=r,this.updateRGBFromLAB(),this.update("lab","rgb");break;case t.LCH:this.lch=r,this.updateRGBFromLCH(),this.update("lch","rgb");break;case t.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={...lt(this.hsl.H,this.hsl.S,this.hsl.L),A:this.hsl.A??1}}updateHSL(){this.hsl=ht(this.rgb.R,this.rgb.G,this.rgb.B,this.rgb.A)}updateHWB(){this.hwb=At(this.rgb.R,this.rgb.G,this.rgb.B,this.rgb.A)}updateLAB(){this.lab={...ot(this.rgb.R,this.rgb.G,this.rgb.B),A:this.rgb.A??1}}updateLCH(){this.lch={...bt(this.rgb.R,this.rgb.G,this.rgb.B),A:this.rgb.A??1}}updateCMYK(){this.cmyk={...Bt(this.rgb.R,this.rgb.G,this.rgb.B),A:this.rgb.A??1}}updateRGBFromHWB(){this.rgb={...pt(this.hwb.H,this.hwb.W,this.hwb.B),A:this.hwb?.A??1}}updateRGBFromLCH(){this.rgb={...Ct(this.lch.L,this.lch.C,this.lch.H),A:this.lch.A??1}}updateRGBFromCMYK(){this.rgb={...mt(this.cmyk.C,this.cmyk.M,this.cmyk.Y,this.cmyk.K),A:this.cmyk.A??1}}updateRGBFromLAB(){this.rgb={...ut(this.lab.L,this.lab.a,this.lab.b),A:this.lab.A??1}}updateLCHFromLAB(){this.lch={...dt(this.lab.L,this.lab.a,this.lab.b),A:this.lab.A}}updateLABromLCH(){this.lab={...gt(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=V(t,0,C),this.update("rgb"),this}setG(t){return this.rgb.G=V(t,0,C),this.update("rgb"),this}setB(t){return this.rgb.B=V(t,0,C),this.update("rgb"),this}setH(t){return this.hsl.H=Q(t),this.update("hsl"),this}setS(t){return this.hsl.S=V(t,0,p),this.update("hsl"),this}setL(t){return this.hsl.L=V(t,0,p),this.update("hsl"),this}setWhiteness(t){return this.hwb.W=V(t,0,p),this.updateRGBFromHWB(),this.update("rgb","hwb"),this}setBlackness(t){return this.hwb.B=V(t,0,p),this.updateRGBFromHWB(),this.update("rgb","hwb"),this}setCIEL(t){return this.lab.L=V(t,0,p),this.updateRGBFromLAB(),this.updateLCHFromLAB(),this.update("rgb","lab","lch"),this}setCIEa(t){return this.lab.a=V(t,-125,m),this.updateRGBFromLAB(),this.updateLCHFromLAB(),this.update("rgb","lab","lch"),this}setCIEb(t){return this.lab.b=V(t,-125,m),this.updateRGBFromLAB(),this.updateLCHFromLAB(),this.update("rgb","lab","lch"),this}setLCHL(t){return this.lch.L=V(t,0,p),this.updateRGBFromLCH(),this.updateLABromLCH(),this.update("rgb","lab","lch"),this}setLCHC(t){return this.lch.C=V(t,0,B),this.updateRGBFromLCH(),this.updateLABromLCH(),this.update("rgb","lab","lch"),this}setLCHH(t){return this.lch.H=Q(t),this.updateRGBFromLCH(),this.updateLABromLCH(),this.update("rgb","lab","lch"),this}setA(t){const e=V(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=V(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}setM(t){return this.cmyk.M=V(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}setY(t){return this.cmyk.Y=V(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}setK(t){return this.cmyk.K=V(t,0,100),this.updateRGBFromCMYK(),this.update("cmyk"),this}get options(){return this._options}get R(){return X(this.rgb.R,this.options.decimals)}get G(){return X(this.rgb.G,this.options.decimals)}get B(){return X(this.rgb.B,this.options.decimals)}get H(){return X(this.hsl.H,this.options.decimals)}get S(){return X(this.hsl.S,this.options.decimals)}get L(){return X(this.hsl.L,this.options.decimals)}get Whiteness(){return X(this.hwb.W,this.options.decimals)}get Blackness(){return X(this.hwb.B,this.options.decimals)}get CIEL(){return X(this.lab.L,this.options.decimals)}get CIEa(){return X(this.lab.a,this.options.decimals)}get CIEb(){return X(this.lab.b,this.options.decimals)}get LCHL(){return X(this.lch.L,this.options.decimals)}get LCHC(){return X(this.lch.C,this.options.decimals)}get LCHH(){return X(this.lch.H,this.options.decimals)}get A(){return X(this.hsl.A,this.options.decimals)}get C(){return X(this.cmyk.C,this.options.decimals)}get M(){return X(this.cmyk.M,this.options.decimals)}get Y(){return X(this.cmyk.Y,this.options.decimals)}get K(){return X(this.cmyk.K,this.options.decimals)}get HEXObject(){return Dt.convert(this.rgb,t.HEX)}get HEXAObject(){return Dt.convert(this.rgb,t.HEX,0,!0)}get RGBObject(){return Dt.convert(this.rgb,t.RGB,this.options.decimals)}get RGBAObject(){return Dt.convert(this.rgb,t.RGB,this.options.decimals,!0)}get HSLObject(){return Dt.convert(this.hsl,t.HSL,this.options.decimals)}get HSLAObject(){return Dt.convert(this.hsl,t.HSL,this.options.decimals,!0)}get HWBObject(){return Dt.convert(this.hwb,t.HWB,this.options.decimals)}get HWBAObject(){return Dt.convert(this.hwb,t.HWB,this.options.decimals,!0)}get CIELabObject(){return Dt.convert(this.lab,t.CIELab,this.options.decimals)}get CIELabAObject(){return Dt.convert(this.lab,t.CIELab,this.options.decimals,!0)}get LCHObject(){return Dt.convert(this.lch,t.LCH,this.options.decimals)}get LCHAObject(){return Dt.convert(this.lch,t.LCH,this.options.decimals,!0)}get CMYKObject(){return Dt.convert(this.cmyk,t.CMYK,this.options.decimals)}get CMYKAObject(){return Dt.convert(this.cmyk,t.CMYK,this.options.decimals,!0)}get HEX(){return Dt.convertCSS(this.rgb,t.HEX)}get HEXA(){return Dt.convertCSS(this.rgb,t.HEX,{},!0)}get RGB(){return Dt.convertCSS(this.rgb,t.RGB,this.options)}get RGBA(){return Dt.convertCSS(this.rgb,t.RGB,this.options,!0)}get HSL(){return Dt.convertCSS(this.hsl,t.HSL,this.options)}get HSLA(){return Dt.convertCSS(this.hsl,t.HSL,this.options,!0)}get HWB(){return Dt.convertCSS(this.hwb,t.HWB,this.options)}get HWBA(){return Dt.convertCSS(this.hwb,t.HWB,this.options,!0)}get CIELab(){return Dt.convertCSS(this.lab,t.CIELab,this.options)}get CIELabA(){return Dt.convertCSS(this.lab,t.CIELab,this.options,!0)}get LCH(){return Dt.convertCSS(this.lch,t.LCH,this.options)}get LCHA(){return Dt.convertCSS(this.lch,t.LCH,this.options,!0)}get CMYK(){return Dt.convertCSS(this.cmyk,t.CMYK,this.options)}get CMYKA(){return Dt.convertCSS(this.cmyk,t.CMYK,this.options,!0)}static toHEXObject(e){return Dt.convert(e,t.HEX)}static toHEX(e){return Dt.convertCSS(e,t.HEX)}static toHEXAObject(e){return Dt.convert(e,t.HEX,void 0,!0)}static toHEXA(e){return Dt.convertCSS(e,t.HEX,void 0,!0)}static toRGBObject(e,s={}){return Dt.convert(e,t.RGB,s.decimals)}static toRGB(e,s={}){return Dt.convertCSS(e,t.RGB,kt(s,e))}static toRGBAObject(e,s={}){return Dt.convert(e,t.RGB,s.decimals,!0)}static toRGBA(e,s={}){return Dt.convertCSS(e,t.RGB,kt(s,e),!0)}static toHSLObject(e,s={}){return Dt.convert(e,t.HSL,s.decimals)}static toHSL(e,s={}){return Dt.convertCSS(e,t.HSL,kt(s,e))}static toHSLAObject(e,s={}){return Dt.convert(e,t.HSL,s.decimals,!0)}static toHSLA(e,s={}){return Dt.convertCSS(e,t.HSL,kt(s,e),!0)}static toHWBObject(e,s={}){return Dt.convert(e,t.HWB,s.decimals)}static toHWB(e,s={}){return Dt.convertCSS(e,t.HWB,kt(s,e))}static toHWBAObject(e,s={}){return Dt.convert(e,t.HWB,s.decimals,!0)}static toHWBA(e,s={}){return Dt.convertCSS(e,t.HWB,kt(s,e),!0)}static toCIELabObject(e,s={}){return Dt.convert(e,t.CIELab,s.decimals)}static toCIELab(e,s={}){return Dt.convertCSS(e,t.CIELab,kt(s,e))}static toCIELabAObject(e,s={}){return Dt.convert(e,t.CIELab,s.decimals,!0)}static toCIELabA(e,s={}){return Dt.convertCSS(e,t.CIELab,kt(s,e),!0)}static toLCHObject(e,s={}){return Dt.convert(e,t.LCH,s.decimals)}static toLCH(e,s={}){return Dt.convertCSS(e,t.LCH,kt(s,e))}static toLCHAObject(e,s={}){return Dt.convert(e,t.LCH,s.decimals,!0)}static toLCHA(e,s={}){return Dt.convertCSS(e,t.LCH,kt(s,e),!0)}static toCMYKObject(e,s={}){return Dt.convert(e,t.CMYK,s.decimals)}static toCMYK(e,s={}){return Dt.convertCSS(e,t.CMYK,kt(s,e))}static toCMYKAObject(e,s={}){return Dt.convert(e,t.CMYK,s.decimals,!0)}static toCMYKA(e,s={}){return Dt.convertCSS(e,t.CMYK,kt(s,e),!0)}static getBlendHEXObject(e,s,r){return Nt(e,s,t.HEX,!1,!1,r)}static getBlendHEX(e,s,r){return Nt(e,s,t.HEX,!0,!1,r)}static getBlendHEXAObject(e,s,r){return Nt(e,s,t.HEX,!1,!0,r)}static getBlendHEXA(e,s,r){return Nt(e,s,t.HEX,!0,!0,r)}static getShades(t,e,s){return Tt(!0,t,...Wt(e,s))}static getTints(t,e,s){return Tt(!1,t,...Wt(e,s))}static getHarmony(e,s,r,a){return((e,s,r,a={})=>{const n=Pt.get(s),i=M(e),c=Dt.getParser(e),l=c.model,h=c.hasAlpha(e),o=n(Dt.convert(e,t.HSL),r);return i?o.map(t=>Dt.convertCSS(t,l,kt(a,e),h)):o.map(t=>Dt.convert(t,l,a.decimals,h))})(e,...Kt(s,r,a))}}Xt.getBlendRGBObject=(e,s,r,a)=>Nt(e,s,t.RGB,!1,!1,...jt(r,a)),Xt.getBlendRGB=(e,s,r,a)=>Nt(e,s,t.RGB,!0,!1,...jt(r,a)),Xt.getBlendRGBAObject=(e,s,r,a)=>Nt(e,s,t.RGB,!1,!0,...jt(r,a)),Xt.getBlendRGBA=(e,s,r,a)=>Nt(e,s,t.RGB,!0,!0,...jt(r,a)),Xt.getBlendHSLObject=(e,s,r,a)=>Nt(e,s,t.HSL,!1,!1,...jt(r,a)),Xt.getBlendHSL=(e,s,r,a)=>Nt(e,s,t.HSL,!0,!1,...jt(r,a)),Xt.getBlendHSLAObject=(e,s,r,a)=>Nt(e,s,t.HSL,!1,!0,...jt(r,a)),Xt.getBlendHSLA=(e,s,r,a)=>Nt(e,s,t.HSL,!0,!0,...jt(r,a)),Xt.getBlendHWBObject=(e,s,r,a)=>Nt(e,s,t.HWB,!1,!1,...jt(r,a)),Xt.getBlendHWB=(e,s,r,a)=>Nt(e,s,t.HWB,!0,!1,...jt(r,a)),Xt.getBlendHWBAObject=(e,s,r,a)=>Nt(e,s,t.HWB,!1,!0,...jt(r,a)),Xt.getBlendHWBA=(e,s,r,a)=>Nt(e,s,t.HWB,!0,!0,...jt(r,a)),Xt.getBlendCIELabObject=(e,s,r,a)=>Nt(e,s,t.CIELab,!1,!1,...jt(r,a)),Xt.getBlendCIELab=(e,s,r,a)=>Nt(e,s,t.CIELab,!0,!1,...jt(r,a)),Xt.getBlendCIELabAObject=(e,s,r,a)=>Nt(e,s,t.CIELab,!1,!0,...jt(r,a)),Xt.getBlendCIELabA=(e,s,r,a)=>Nt(e,s,t.CIELab,!0,!0,...jt(r,a)),Xt.getBlendLCHObject=(e,s,r,a)=>Nt(e,s,t.LCH,!1,!1,...jt(r,a)),Xt.getBlendLCH=(e,s,r,a)=>Nt(e,s,t.LCH,!0,!1,...jt(r,a)),Xt.getBlendLCHAObject=(e,s,r,a)=>Nt(e,s,t.LCH,!1,!0,...jt(r,a)),Xt.getBlendLCHA=(e,s,r,a)=>Nt(e,s,t.LCH,!0,!0,...jt(r,a)),Xt.getMixHEXObject=(e,s)=>$t(e,t.HEX,!1,!1,s),Xt.getMixHEX=(e,s=exports.Mix.ADDITIVE)=>$t(e,t.HEX,!0,!1,s),Xt.getMixHEXAObject=(e,s=exports.Mix.ADDITIVE)=>$t(e,t.HEX,!1,!0,s),Xt.getMixHEXA=(e,s=exports.Mix.ADDITIVE)=>$t(e,t.HEX,!0,!0,s),Xt.getMixRGBObject=(e,s,r)=>$t(e,t.RGB,!1,!1,...Yt(s,r)),Xt.getMixRGB=(e,s,r)=>$t(e,t.RGB,!0,!1,...Yt(s,r)),Xt.getMixRGBAObject=(e,s,r)=>$t(e,t.RGB,!1,!0,...Yt(s,r)),Xt.getMixRGBA=(e,s,r)=>$t(e,t.RGB,!0,!0,...Yt(s,r)),Xt.getMixHSLObject=(e,s,r)=>$t(e,t.HSL,!1,!1,...Yt(s,r)),Xt.getMixHSL=(e,s,r)=>$t(e,t.HSL,!0,!1,...Yt(s,r)),Xt.getMixHSLAObject=(e,s,r)=>$t(e,t.HSL,!1,!0,...Yt(s,r)),Xt.getMixHSLA=(e,s,r)=>$t(e,t.HSL,!0,!0,...Yt(s,r)),Xt.getMixHWBObject=(e,s,r)=>$t(e,t.HWB,!1,!1,...Yt(s,r)),Xt.getMixHWB=(e,s,r)=>$t(e,t.HWB,!0,!1,...Yt(s,r)),Xt.getMixHWBAObject=(e,s,r)=>$t(e,t.HWB,!1,!0,...Yt(s,r)),Xt.getMixHWBA=(e,s,r)=>$t(e,t.HWB,!0,!0,...Yt(s,r)),Xt.getMixCIELabObject=(e,s,r)=>$t(e,t.CIELab,!1,!1,...Yt(s,r)),Xt.getMixCIELab=(e,s,r)=>$t(e,t.CIELab,!0,!1,...Yt(s,r)),Xt.getMixCIELabAObject=(e,s,r)=>$t(e,t.CIELab,!1,!0,...Yt(s,r)),Xt.getMixCIELabA=(e,s,r)=>$t(e,t.CIELab,!0,!0,...Yt(s,r)),Xt.getMixLCHObject=(e,s,r)=>$t(e,t.LCH,!1,!1,...Yt(s,r)),Xt.getMixLCH=(e,s,r)=>$t(e,t.LCH,!0,!1,...Yt(s,r)),Xt.getMixLCHAObject=(e,s,r)=>$t(e,t.LCH,!1,!0,...Yt(s,r)),Xt.getMixLCHA=(e,s,r)=>$t(e,t.LCH,!0,!0,...Yt(s,r)),exports.ColorTranslator=Xt;