saturon 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,143 @@
1
- "use strict";var Saturon=(()=>{var Ce=Object.defineProperty;var Ue=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames;var Je=Object.prototype.hasOwnProperty;var Qe=(e,t)=>{for(var r in t)Ce(e,r,{get:t[r],enumerable:!0})},et=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of We(t))!Je.call(e,o)&&o!==r&&Ce(e,o,{get:()=>t[o],enumerable:!(n=Ue(t,o))||n.enumerable});return e};var tt=e=>et(Ce({},"__esModule",{value:!0}),e);var rt={};Qe(rt,{Color:()=>P});var Oe={AccentColor:[[0,120,215],[10,132,255]],AccentColorText:[[255,255,255],[255,255,255]],ActiveText:[[255,0,0],[255,100,100]],ButtonBorder:[[169,169,169],[90,90,90]],ButtonFace:[[240,240,240],[60,60,60]],ButtonText:[[0,0,0],[255,255,255]],Canvas:[[255,255,255],[30,30,30]],CanvasText:[[0,0,0],[255,255,255]],Field:[[255,255,255],[45,45,45]],FieldText:[[0,0,0],[255,255,255]],GrayText:[[128,128,128],[169,169,169]],Highlight:[[0,120,215],[80,80,80]],HighlightText:[[255,255,255],[0,0,0]],LinkText:[[0,0,255],[0,128,255]],Mark:[[255,255,0],[255,200,0]],MarkText:[[0,0,0],[0,0,0]],SelectedItem:[[0,120,215],[0,120,215]],SelectedItemText:[[255,255,255],[255,255,255]],VisitedText:[[128,0,128],[200,120,255]]},ee={theme:"light",systemColors:Oe,defaults:{fit:"clip"}};var me=new Map;function ce(e,t){let r=Array.isArray(e[0])?e.length:1,n=Array.isArray(e[0])?e:[e],o=Array.isArray(t[0])?t:t.map(i=>[i]),a=o[0].length,s=o[0].map((i,d)=>o.map(u=>u[d])),c=n.map(i=>s.map(d=>i.reduce((u,f,h)=>u+f*(d[h]||0),0)));return r===1?c[0]:a===1?c.map(i=>i[0]):c}function xe(e){return e.trim().replace(/\s+/g," ").replace(/\( /g,"(").replace(/ \)/g,")").replace(/\s*,\s*/g,", ").replace(/ ,/g,",").replace(/calc\(NaN\)/g,"0").replace(/[A-Z]/g,t=>String.fromCharCode(t.charCodeAt(0)+32))}function oe(e,t){let r=t,n="",o=0;if(e[r]!=="(")for(;r<e.length&&/[a-zA-Z0-9-%#]/.test(e[r]);)n+=e[r],r++;if(e[r]==="("){for(n+="(",r++,o=1;r<e.length&&o>0;){let a=e[r];a==="("?o++:a===")"&&o--,o>0&&(n+=a),r++}n+=")"}return{expression:n,end:r}}function le(e,t,r={}){let{method:n=ee.defaults.fit,precision:o}=r,{components:a}=Z[t],s=Object.values(a).reduce((i,d)=>(i[d.index]=d,i),[]),c;if(n==="none")c=e;else if(n==="clip")c=e.slice(0,3).map((i,d)=>{let u=s[d];if(!u)throw new Error(`Missing component properties for index ${d}.`);if(u.value==="angle")return(i%360+360)%360;let[f,h]=Array.isArray(u.value)?u.value:[0,100];return Math.min(h,Math.max(f,i))});else{let i=Ae[n];if(!i)throw new Error(`Invalid gamut clipping method: must be ${Object.keys(Ae).join(", ")} or "none".`);c=i(e,t)}return c.slice(0,3).map((i,d)=>{let u;if(typeof o=="number"||o===null)u=o;else if(typeof o>"u")u=s[d]?.precision??3;else throw new TypeError(`Invalid precision value: ${o}.`);return u===null?i:Number(i.toFixed(u))})}function je(e,t){let r=(l,v,p={},G=!1,N=!1)=>{let y=(B,x,U)=>{let ne=parseFloat(B);if(isNaN(ne))throw new Error(`Invalid percentage value: '${B}'.`);return v==="percentage"?ne:x<0&&U>0?ne/100*(U-x)/2:ne/100*(U-x)+x},D=B=>{let x=parseFloat(B);if(isNaN(x))throw new Error(`Invalid angle value: '${B}'.`);return B.slice(-3)==="deg"?x:B.slice(-3)==="rad"?x*(180/m):B.slice(-4)==="grad"?x*.9:B.slice(-4)==="turn"?x*360:x},k=(B,x,U)=>{let ne=M=>{let R=[];for(let g=0;g<M.length;){let T=M[g];if(/\s/.test(T)){g++;continue}if(M.slice(g,g+2)==="**"){R.push({type:"operator",value:"**"}),g+=2;continue}if(/[0-9]/.test(T)||T==="."&&/[0-9]/.test(M[g+1]||"")){let se="";for(;g<M.length&&/[0-9.]/.test(M[g]);)se+=M[g++];if(g<M.length&&/[eE]/.test(M[g]))for(se+=M[g++],/[+-]/.test(M[g])&&(se+=M[g++]);g<M.length&&/[0-9]/.test(M[g]);)se+=M[g++];R.push({type:"number",value:parseFloat(se)});continue}if(/[a-zA-Z_]/.test(T)){let se="";for(;g<M.length&&/[a-zA-Z0-9_]/.test(M[g]);)se+=M[g++];R.push({type:"identifier",value:se});continue}if("+-*/%(),".includes(T)){R.push({type:"operator",value:T}),g++;continue}throw new Error(`Unexpected character: ${T}`)}return R},J=M=>{let R=0,g=()=>R<M.length?M[R]:null,T=()=>{if(R>=M.length)throw new Error("Unexpected end of input");return M[R++]},se=Y=>{let re=g();if(!re||re.value!==Y)throw new Error(`Expected "${Y}" but got "${re?re.value:"end of input"}`);T()},Ve=()=>{let Y=g();if(!Y)throw new Error("Unexpected end of input");if(Y.type==="number")return T(),{type:"number",value:Y.value};if(Y.type==="identifier"){if(T(),g()&&g().value==="("){T();let re=[];if(g()&&g().value!==")")for(re.push(be());g()&&g().value===",";)T(),re.push(be());return se(")"),{type:"call",func:Y.value,args:re}}return{type:"var",name:Y.value}}if(Y.value==="("){T();let re=be();return se(")"),re}throw new Error(`Unexpected token: ${Y.value}`)},Be=()=>g()&&(g().value==="+"||g().value==="-")?{type:"unary",op:T().value,arg:Be()}:Ve(),Le=()=>{let Y=Be();for(;g()&&g().value==="**";)Y={type:"binary",op:T().value,left:Y,right:Be()};return Y},Se=()=>{let Y=Le();for(;g()&&["*","/","%"].includes(String(g().value));)Y={type:"binary",op:T().value,left:Y,right:Le()};return Y},be=()=>{let Y=Se();for(;g()&&(g().value==="+"||g().value==="-");)Y={type:"binary",op:T().value,left:Y,right:Se()};return Y},Ke=be();if(R<M.length)throw new Error(`Extra tokens after expression: ${M.slice(R).map(Y=>Y.value).join(" ")}`);return Ke},Q=(M,R)=>{switch(M.type){case"number":return M.value;case"var":{let g=R[M.name];if(g===void 0)throw new Error(`Unknown variable: ${M.name}`);if(typeof g=="function")throw new Error(`Expected variable but found function: ${M.name}`);return g}case"binary":{let g=Q(M.left,R),T=Q(M.right,R);switch(M.op){case"+":return g+T;case"-":return g-T;case"*":return g*T;case"/":return g/T;case"%":return g%T;case"**":return g**T;default:throw new Error(`Unknown binary operator: ${M.op}`)}}case"unary":{let g=Q(M.arg,R);switch(M.op){case"+":return+g;case"-":return-g;default:throw new Error(`Unknown unary operator: ${M.op}`)}}case"call":{let g=R[M.func];if(typeof g!="function")throw new Error(`Unknown function: ${M.func}`);return g(...M.args.map(T=>Q(T,R)))}default:throw new Error(`Unknown AST node type: ${M.type}`)}},F=B.slice(5,-1).trim();if(F==="infinity")return U;if(F==="-infinity")return x;if(F==="NaN")return 0;F=F.replace(/(\d+(\.\d+)?)%/g,M=>{if(N===!0)throw new Error("<angle> and <percentage> values are converted to <number> in relative syntax.");let R=y(M,x,U);return R!==void 0?String(R):"0"}),F=F.replace(/(\d+(\.\d+)?)(deg|rad|grad|turn)/g,(M,R,g,T)=>{if(N===!0)throw new Error("<angle> and <percentage> values are converted to <number> in relative syntax.");return String(D(`${parseFloat(R)}${T}`))});let Ee={...p,pi:m,e:w,tau:m*2,pow:$,sqrt:L,sin:q,cos:C,tan:b,asin:E,acos:S,atan:_,atan2:W,exp:O,log:A,log10:z,log2:j,abs:I,min:V,max:he,hypot:fe,round:ge,ceil:de,floor:ie,sign:ye,trunc:ve,random:we};try{let M=ne(F),R=J(M);return Q(R,Ee)}catch(M){throw new Error(`Evaluation error: ${M}`)}},X=()=>{if(/^-?(?:\d+|\d*\.\d+)(?:deg|rad|grad|turn)$/.test(l))return D(l);if(/^-?(?:\d+|\d*\.\d+)$/.test(l))return parseFloat(l);let[B,x]=[0,360];if(l[l.length-1]==="%"){if(G&&h===!0)throw new Error("The legacy color syntax does not allow percentages for <angle> components.");if(N===!0)throw new Error("The relative color syntax doesn't allow percentages for <angle> components.");return y(l,B,x)}if(l.slice(0,5)==="calc(")return k(l,B,x);throw new Error(`Invalid angle value: '${l}'. Must be a number, a number with a unit (deg, rad, grad, turn), or a percentage.`)},te=()=>{if(/^-?(?:\d+|\d*\.\d+)$/.test(l)){if(G&&h===!0)throw new Error("The legacy color syntax does not allow numbers for <percentage> components.");return parseFloat(l)}let[B,x]=[0,100];if(l[l.length-1]==="%")return y(l,B,x);if(l.slice(0,5)==="calc(")return k(l,B,x);throw new Error(`Invalid percentage value: '${l}'. Must be a percentage or a number.`)},K=()=>{if(/^-?(?:\d+|\d*\.\d+)$/.test(l))return parseFloat(l);let[B,x]=v;if(l[l.length-1]==="%")return y(l,B,x);if(l.slice(0,5)==="calc(")return k(l,B,x);throw new Error(`Invalid number value: '${l}'. Must be a number${N===!1?" or a percentage":""}.`)};if(l==="none")return 0;if(l in p)return p[l];if(v==="angle")return X();if(v==="percentage")return te();if(Array.isArray(v))return K();throw new Error(`Unable to parse component token: ${l}`)},n=l=>{let{fn:v,space:p,fromOrigin:G,c1:N,c2:y,c3:D,alpha:k,commaSeparated:X}=l,{components:te,supportsLegacy:K}=t;if(te.alpha={index:3,value:[0,1],precision:3},X&&K!==!0)throw new Error(`<${v}()> does not support comma-separated syntax.`);let B=Object.entries(te).sort((x,U)=>x[1].index-U[1].index);if(G){let x;if(v==="color")x=p;else if(v in Z)x=v;else for(let J in Z)if(Z[J].alphaVariant===v){x=J;break}let U=P.from(G).in(x).toObject({fit:"none",precision:null});return[N,y,D,k].map((J,Q)=>{let[,F]=B[Q];return r(J,F.value,U,X,!0)}).slice(0,4)}else{let x=[],U=[],ne=[N,y,D,k];for(let J=0;J<B.length;J++){let[,Q]=B[J],F=ne[J];if(X&&F==="none")throw new Error(`${v}() cannot use "none" in comma-separated syntax.`);if(Q.index!==3&&Q.value!=="angle"&&Q.value!=="percentage"&&F.slice(0,5)!=="calc("&&U.push(F.trim()[F.length-1]==="%"),F){let Ee=r(F,Q.value,{},X);x[Q.index]=Ee}}if(X&&U.length>1){let J=U.every(Boolean),Q=U.every(F=>!F);if(!J&&!Q)throw new Error(`${v}()'s <number> components must all be numbers or all percentages.`)}return x.slice(0,4)}},o=l=>{let v=(B,x="/")=>{if(l[B]!==void 0){if(l[B]===x)return{value:l[B+1],hasAlpha:!0};throw new Error("Invalid alpha separator")}return{value:"1",hasAlpha:!1}},p,G,N,y,D,k,X,te=!1,K;if(l[0]==="color")if(p="color",l[1]==="from"){G=l[3],N=l[2],y=l[4],D=l[5],k=l[6];let{value:B,hasAlpha:x}=v(7);K=x?9:7,X=B}else{G=l[1],N=null,y=l[2],D=l[3],k=l[4];let{value:B,hasAlpha:x}=v(5);K=x?7:5,X=B}else if(p=l[0],G=null,l[1]==="from"){N=l[2],y=l[3],D=l[4],k=l[5];let{value:B,hasAlpha:x}=v(6);K=x?8:6,X=B}else if(N=null,y=l[1],l[2]===","&&l[4]===","){te=!0,D=l[3],k=l[5];let{value:B,hasAlpha:x}=v(6,",");if(K=x?8:6,x&&l[6]!==",")throw new Error("Comma optional syntax requires no commas at all.");X=B}else{D=l[2],k=l[3];let{value:B,hasAlpha:x}=v(4);K=x?6:4,X=B}if(l.length!==K)throw new Error(`Invalid number of tokens for ${p}(): expected ${K} but got ${l.length}.`);return{fn:p,space:G,fromOrigin:N,c1:y,c2:D,c3:k,alpha:X,commaSeparated:te}},a=l=>{let v=[],p=0,G="";for(;p<l.length&&l[p]!=="(";)G+=l[p],p++;G=G.trim(),v.push(G);let N=l.indexOf("(")+1,y=l.slice(N,-1).trim();if(p=0,y.slice(0,5)==="from "){for(v.push("from"),p+=5;p<y.length&&y[p]===" ";)p++;let D=p;for(;p<y.length&&y[p]!==" ";)p++;let k=y.slice(D,p);if(k.includes("(")){let{expression:X,end:te}=oe(y,D);v.push(X),p=te}else v.push(k);for(;p<y.length&&y[p]===" ";)p++}if(v[0]==="color"&&p<y.length){let D=p;for(;p<y.length&&y[p]!==" ";)p++;for(v.push(y.slice(D,p));p<y.length&&y[p]===" ";)p++}for(;p<y.length;){let D=y[p];if(D===",")v.push(","),p++,y[p]===" "&&p++;else if(D==="/")v.push("/"),p++,y[p]===" "&&p++;else if(D===" ")p++;else if(/[a-zA-Z#]/.test(D)){let k=p,X="";for(;p<y.length&&/[a-zA-Z0-9-%#]/.test(y[p]);)X+=y[p],p++;if(p<y.length&&y[p]==="("){let{expression:te,end:K}=oe(y,k);v.push(te),p=K}else v.push(X)}else if(/[\d.-]/.test(D)){let k="";for(;p<y.length&&/[\d.eE+-]/.test(y[p]);)k+=y[p],p++;if(p<y.length&&y[p]==="%")k+="%",p++,v.push(k);else if(p<y.length&&/[a-zA-Z]/.test(y[p])){let X="";for(;p<y.length&&/[a-zA-Z]/.test(y[p]);)X+=y[p],p++;v.push(k+X)}else v.push(k)}else throw new Error(`Unexpected character: ${D}`)}return v},s=(l,v)=>{let p="color(from ";if(l.slice(0,11)!==p||l[l.length-1]!==")")return!1;let G=l.slice(p.length,-1).trim(),{expression:N,end:y}=oe(G,0);if(!N)return!1;let k=G.slice(y).trim().split(/\s+/);return k.length<1?!1:k[0]===v},{components:c,bridge:i,fromBridge:d,toBridge:u,alphaVariant:f,supportsLegacy:h}=t,{PI:m,E:w,pow:$,sqrt:L,sin:q,cos:C,tan:b,asin:E,acos:S,atan:_,atan2:W,exp:O,log:A,log10:z,log2:j,abs:I,min:V,max:he,hypot:fe,round:ge,ceil:de,floor:ie,sign:ye,trunc:ve,random:we}=Math;return{isValid:l=>{let{alphaVariant:v=e}=t;if(e in pe){let p=l.slice(0,`color(${e} `.length)===`color(${e} `,G=l.slice(0,10)==="color(from"&&s(l,e);return(p||G)&&l[l.length-1]===")"}return(l.slice(0,`${e}(`.length)===`${e}(`||l.slice(0,`${v}(`.length)===`${v}(`)&&l[l.length-1]===")"},bridge:i,toBridge:l=>[...u(l.slice(0,3)),l[3]??1],parse:l=>{let v=a(l),p=o(v),G=n(p);return[...G.slice(0,3),G[3]??1]},fromBridge:l=>[...d(l),l[3]??1],format:([l,v,p,G=1],N={})=>{let{legacy:y=!1,fit:D=ee.defaults.fit,precision:k,units:X=!1}=N,te=le([l,v,p],e,{method:D,precision:k}),K=Number(V(he(G,0),1).toFixed(3)).toString(),B=te.map((x,U)=>{if((X||y)&&c){let ne=Object.values(c).find(J=>J.index===U);if(ne?.value==="percentage")return`${x}%`;if(ne?.value==="angle"&&X)return`${x}deg`}return x.toString()});return e in pe?`color(${e} ${B.join(" ")}${G!==1?` / ${K}`:""})`:y&&h?G===1?`${e}(${B.join(", ")})`:`${f||e}(${B.join(", ")}, ${K})`:`${e}(${B.join(" ")}${G!==1?` / ${K}`:""})`}}}function ae(e,t){let{fromLinear:r=s=>s,toLinear:n=s=>s,toBridgeMatrix:o,fromBridgeMatrix:a}=t;return{supportsLegacy:!1,targetGamut:t.targetGamut===null?null:e,components:Object.fromEntries(t.components.map((s,c)=>[s,{index:c,value:[0,1],precision:5}])),bridge:t.bridge,toBridge:s=>ce(o,s.map(c=>n(c))),fromBridge:s=>ce(a,s).map(c=>r(c))}}var H={D50_to_D65:[[.955473421488075,-.02309845494876471,.06325924320057072],[-.0283697093338637,1.0099953980813041,.021041441191917323],[.012314014864481998,-.020507649298898964,1.330365926242124]],D65_to_d50:[[1.0479297925449969,.022946870601609652,-.05019226628920524],[.02962780877005599,.9904344267538799,-.017073799063418826],[-.009243040646204504,.015055191490298152,.7518742814281371]],SRGB_to_XYZD65:[[506752/1228815,87881/245763,12673/70218],[87098/409605,175762/245763,12673/175545],[7918/409605,87881/737289,1001167/1053270]],XYZD65_to_SRGB:[[12831/3959,-329/214,-1974/3959],[-851781/878810,1648619/878810,36519/878810],[705/12673,-2585/12673,705/667]],P3_to_XYZD65:[[608311/1250200,189793/714400,198249/1000160],[35783/156275,247089/357200,198249/2500400],[0/1,32229/714400,5220557/5000800]],XYZD65_to_P3:[[446124/178915,-333277/357830,-72051/178915],[-14852/17905,63121/35810,423/17905],[11844/330415,-50337/660830,316169/330415]],REC2020_to_XYZD65:[[63426534/99577255,20160776/139408157,47086771/278816314],[26158966/99577255,472592308/697040785,8267143/139408157],[0/1,19567812/697040785,295819943/278816314]],XYZD65_to_REC2020:[[30757411/17917100,-6372589/17917100,-4539589/17917100],[-19765991/29648200,47925759/29648200,467509/29648200],[792561/44930125,-1921689/44930125,42328811/44930125]],A98_to_XYZD65:[[573536/994567,263643/1420810,187206/994567],[591459/1989134,6239551/9945670,374412/4972835],[53769/1989134,351524/4972835,4929758/4972835]],ProPhoto_to_XYZD50:[[.7977666449006423,.13518129740053308,.0313477341283922],[.2880748288194013,.711835234241873,8993693872564e-17],[0,0,.8251046025104602]],XYZD50_to_ProPhoto:[[1.3457868816471583,-.25557208737979464,-.05110186497554526],[-.5446307051249019,1.5082477428451468,.02052744743642139],[0,0,1.2119675456389452]],XYZD65_to_A98:[[1829569/896150,-506331/896150,-308931/896150],[-851781/878810,1648619/878810,36519/878810],[16779/1248040,-147721/1248040,1266979/1248040]],LMS_to_XYZD65:[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],XYZD65_to_LMS:[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],LMS_to_OKLAB:[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],OKLAB_to_LMS:[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]]},ke={linear:e=>e,"ease-in":e=>e*e,"ease-out":e=>e*(2-e),"ease-in-out":e=>e<.5?2*e*e:-1+(4-2*e)*e,"ease-in-cubic":e=>e*e*e,"ease-out-cubic":e=>--e*e*e+1,"ease-in-out-cubic":e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2},Ae={"chroma-reduction":(e,t)=>{let r=new P(t,e),{targetGamut:n}=Z[t];if(n===null||(n===void 0&&(n="srgb"),r.inGamut(n,1e-5)))return e;let[o,,a]=r.in("oklch").toArray({fit:"none",precision:null}),s=Math.min(1,Math.max(0,o)),c=0,i=1,d=1e-6,u=[];for(;i-c>d;){let h=(c+i)/2,m=new P("oklch",[s,h,a]);if(m.inGamut(n,1e-5))c=h;else{let w=le(m.toArray({fit:"none",precision:null}).slice(0,3),t,{method:"clip"}),$=new P(t,w);if(m.deltaEOK($)<2)return u=w,u;i=h}}return u=new P("oklch",[s,c,a]).in(t).toArray({fit:"none",precision:null}),u},"css-gamut-map":(e,t)=>{let{targetGamut:r}=Z[t];if(r===null)return e;r===void 0&&(r="srgb");let n=new P(t,e),[o,a,s]=n.in("oklch").toArray({fit:"none",precision:null});if(o>=1)return new P("oklab",[1,0,0]).in(t).toArray({fit:"none",precision:null});if(o<=0)return new P("oklab",[0,0,0]).in(t).toArray({fit:"none",precision:null});if(n.inGamut(r,1e-5))return e;let c=.02,i=1e-4,d=new P("oklch",[o,a,s]),u=le(d.in(t).toArray({fit:"none",precision:null}).slice(0,3),t,{method:"clip"}),f=new P(t,u);if(d.deltaEOK(f)<c)return u;let m=0,w=a,$=!0;for(;w-m>i;){let L=(m+w)/2,q=new P("oklch",[o,L,s]);if($&&q.inGamut(r,1e-5))m=L;else{let C=le(q.in(t).toArray({fit:"none",precision:null}).slice(0,3),t,{method:"clip"});u=C;let b=new P(t,C),E=q.deltaEOK(b);if(E<c){if(c-E<i)return u;$=!1,m=L}else w=L}}return u}};function Te(e){let t=e.map(r=>{let n=r/255,o=n<0?-1:1,a=Math.abs(n);return a<=.04045?n/12.92:o*((a+.055)/1.055)**2.4});return ce(H.SRGB_to_XYZD65,t)}function Ze(e){return ce(H.XYZD65_to_SRGB,e).map(n=>{let o=n<0?-1:1,a=Math.abs(n);return a>.0031308?o*(1.055*a**(1/2.4)-.055):12.92*n}).map(n=>n*255)}function $e([e,t,r]){t/=100,r/=100;let n=o=>{let a=(o+e/30)%12,s=t*Math.min(r,1-r);return r-s*Math.max(-1,Math.min(a-3,9-a,1))};return[n(0)*255,n(8)*255,n(4)*255]}function De(e){let[t,r,n]=e.map(u=>u/255),o=Math.max(t,r,n),a=Math.min(t,r,n),s=(o+a)/2,c=0,i=0,d=o-a;return d!==0&&(i=d/(1-Math.abs(2*s-1)),c=o===t?(r-n)/d+(r<n?6:0):o===r?(n-t)/d+2:(t-r)/d+4,c*=60),[c%360,i*100,s*100]}function ze([e,t,r]){if(t/=100,r/=100,t+r>=1){let o=t/(t+r)*255;return[o,o,o]}return $e([e,100,50]).map(o=>o/255).map(o=>(o*(1-t-r)+t)*255)}function Ie(e){let[t,r,n]=e.map(i=>i/255),o=Math.max(t,r,n),a=Math.min(t,r,n),s=0,c=o-a;return c===0?s=0:(s=o===t?(r-n)/c+(r<n?6:0):o===r?(n-t)/c+2:(t-r)/c+4,s=s*60%360),[s,a*100,(1-o)*100]}function Xe([e,t,r]){let n=[.9642956764295677,1,.8251046025104602],o=24389/27,a=216/24389,s=(e+16)/116,c=t/500+s,i=s-r/200;return[c**3>a?c**3:(116*c-16)/o,e>o*a?s**3:e/o,i**3>a?i**3:(116*i-16)/o].map((u,f)=>u*n[f])}function Re(e){let t=[.9642956764295677,1,.8251046025104602],r=24389/27,n=216/24389,o=e.map((i,d)=>i/t[d]),[a,s,c]=o.map(i=>i>n?Math.cbrt(i):(r*i+16)/116);return[116*s-16,500*(a-s),200*(s-c)]}function Ye([e,t,r]){return[e,t*Math.cos(r*Math.PI/180),t*Math.sin(r*Math.PI/180)]}function Pe([e,t,r]){let n=Math.hypot(t,r),o=Math.atan2(r,t)*180/Math.PI;return o<0&&(o+=360),[e,n,o]}function qe(e){let{LMS_to_XYZD65:t,OKLAB_to_LMS:r}=H,n=ce(r,e);return ce(t,n.map(o=>o**3))}function Ne(e){let{XYZD65_to_LMS:t,LMS_to_OKLAB:r}=H,n=ce(t,e);return ce(r,n.map(Math.cbrt))}function Fe([e,t,r]){return[e,t*Math.cos(r*Math.PI/180),t*Math.sin(r*Math.PI/180)]}function He([e,t,r]){let n=Math.hypot(t,r),o=Math.atan2(r,t)*180/Math.PI;return o<0&&(o+=360),[e,n,o]}var Me={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},pe={srgb:ae("srgb",{components:["r","g","b"],bridge:"xyz-d65",toLinear:e=>{let t=e<0?-1:1,r=Math.abs(e);return r<=.04045?t*(r/12.92):t*Math.pow((r+.055)/1.055,2.4)},fromLinear:e=>{let t=e<0?-1:1,r=Math.abs(e);return r>.0031308?t*(1.055*Math.pow(r,1/2.4)-.055):t*(12.92*r)},toBridgeMatrix:H.SRGB_to_XYZD65,fromBridgeMatrix:H.XYZD65_to_SRGB}),"srgb-linear":ae("srgb-linear",{components:["r","g","b"],bridge:"xyz-d65",toBridgeMatrix:H.SRGB_to_XYZD65,fromBridgeMatrix:H.XYZD65_to_SRGB}),"display-p3":ae("display-p3",{components:["r","g","b"],bridge:"xyz-d65",toLinear:e=>{let t=e<0?-1:1,r=Math.abs(e);return r<=.04045?t*(r/12.92):t*Math.pow((r+.055)/1.055,2.4)},fromLinear:e=>{let t=e<0?-1:1,r=Math.abs(e);return r>.0031308?t*(1.055*Math.pow(r,1/2.4)-.055):t*(12.92*r)},toBridgeMatrix:H.P3_to_XYZD65,fromBridgeMatrix:H.XYZD65_to_P3}),rec2020:ae("rec2020",{components:["r","g","b"],bridge:"xyz-d65",toLinear:e=>{let t=1.09929682680944,r=.018053968510807,n=e<0?-1:1,o=Math.abs(e);return o<r*4.5?n*(o/4.5):n*Math.pow((o+t-1)/t,1/.45)},fromLinear:e=>{let t=1.09929682680944,r=.018053968510807,n=e<0?-1:1,o=Math.abs(e);return o>r?n*(t*Math.pow(o,.45)-(t-1)):n*(4.5*o)},toBridgeMatrix:H.REC2020_to_XYZD65,fromBridgeMatrix:H.XYZD65_to_REC2020}),"a98-rgb":ae("a98-rgb",{components:["r","g","b"],bridge:"xyz-d65",toLinear:e=>{let t=e<0?-1:1,r=Math.abs(e);return t*Math.pow(r,563/256)},fromLinear:e=>{let t=e<0?-1:1,r=Math.abs(e);return t*Math.pow(r,256/563)},toBridgeMatrix:H.A98_to_XYZD65,fromBridgeMatrix:H.XYZD65_to_A98}),"prophoto-rgb":ae("prophoto-rgb",{components:["r","g","b"],bridge:"xyz-d50",toLinear:e=>{let r=e<0?-1:1,n=Math.abs(e);return n<=.03125?r*(n/16):r*Math.pow(n,1.8)},fromLinear:e=>{let t=.001953125,r=e<0?-1:1,n=Math.abs(e);return n>=t?r*Math.pow(n,1/1.8):r*(16*n)},toBridgeMatrix:H.ProPhoto_to_XYZD50,fromBridgeMatrix:H.XYZD50_to_ProPhoto}),"xyz-d65":ae("xyz-d65",{targetGamut:null,components:["x","y","z"],bridge:"xyz-d65",toBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]],fromBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]]}),"xyz-d50":ae("xyz-d50",{targetGamut:null,components:["x","y","z"],bridge:"xyz-d65",toBridgeMatrix:H.D50_to_D65,fromBridgeMatrix:H.D65_to_d50}),xyz:ae("xyz",{targetGamut:null,components:["x","y","z"],bridge:"xyz-d65",toBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]],fromBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]]})},Z={rgb:{supportsLegacy:!0,alphaVariant:"rgba",components:{r:{index:0,value:[0,255],precision:0},g:{index:1,value:[0,255],precision:0},b:{index:2,value:[0,255],precision:0}},bridge:"xyz-d65",toBridge:Te,fromBridge:Ze},hsl:{supportsLegacy:!0,alphaVariant:"hsla",components:{h:{index:0,value:"angle",precision:0},s:{index:1,value:"percentage",precision:0},l:{index:2,value:"percentage",precision:0}},bridge:"rgb",toBridge:$e,fromBridge:De},hwb:{components:{h:{index:0,value:"angle",precision:0},w:{index:1,value:"percentage",precision:0},b:{index:2,value:"percentage",precision:0}},bridge:"rgb",toBridge:ze,fromBridge:Ie},lab:{targetGamut:null,components:{l:{index:0,value:"percentage",precision:5},a:{index:1,value:[-125,125],precision:5},b:{index:2,value:[-125,125],precision:5}},bridge:"xyz-d50",toBridge:Xe,fromBridge:Re},lch:{targetGamut:null,components:{l:{index:0,value:"percentage",precision:5},c:{index:1,value:[0,150],precision:5},h:{index:2,value:"angle",precision:5}},bridge:"lab",toBridge:Ye,fromBridge:Pe},oklab:{targetGamut:null,components:{l:{index:0,value:[0,1],precision:5},a:{index:1,value:[-.4,.4],precision:5},b:{index:2,value:[-.4,.4],precision:5}},bridge:"xyz-d65",toBridge:qe,fromBridge:Ne},oklch:{targetGamut:null,components:{l:{index:0,value:[0,1],precision:5},c:{index:1,value:[0,.4],precision:5},h:{index:2,value:"angle",precision:5}},bridge:"oklab",toBridge:Fe,fromBridge:He},...pe},_e=Object.fromEntries(Object.entries(Z).map(([e,t])=>[e,je(e,t)])),Ge={"hex-color":{isValid:e=>e[0]==="#",bridge:"rgb",toBridge:e=>e,parse:e=>{let t=e.slice(1);if(![3,4,6,8].includes(t.length))throw new Error("Invalid hex color length.");for(let c of t){let i=c.charCodeAt(0),d=i>=48&&i<=57,u=i>=97&&i<=102,f=i>=65&&i<=70;if(!(d||u||f))throw new Error("Invalid hex color character.")}let r=c=>parseInt(c.length===1?c+c:c,16),[n,o,a,s=255]=t.length<=4?t.split("").map(r):[t.slice(0,2),t.slice(2,4),t.slice(4,6),t.slice(6,8)].map(c=>parseInt(c||"ff",16));return[n,o,a,s/255]},fromBridge:e=>e,format:([e,t,r,n=1])=>{let o=s=>s.toString(16).padStart(2,"0");return`#${[e,t,r].map(s=>o(Math.round(Math.max(0,Math.min(255,s))))).join("")}${n<1?o(Math.round(n*255)):""}`}},..._e,"named-color":{isValid:e=>Object.keys(Me).some(t=>t===e),bridge:"rgb",toBridge:e=>e,parse:e=>{let t=Me[e];if(!t)throw new Error(`Invalid named-color: ${e}.`);return[...t,1]},fromBridge:e=>e,format:e=>{let[t,r,n]=e.map((o,a)=>a<3?Math.round(Math.min(255,Math.max(0,o))):o);for(let[o,[a,s,c]]of Object.entries(Me))if(t===a&&r===s&&n===c)return o}},"color-mix":{isValid:e=>e.slice(0,10)==="color-mix("&&e[e.length-1]===")",bridge:"rgb",toBridge:e=>e,parse:e=>{let t=b=>{let E=b.trim(),S,_=E,W=_.match(/^(\d+)%\s+/);if(W){let j=parseInt(W[1],10);S=Math.min(1,Math.max(0,j/100)),_=_.slice(W[0].length).trim()}let O="",A="";if(/^[a-z]/i.test(_)){let{expression:j,end:I}=oe(_,0);if(j)O=j,A=_.slice(I).trim();else{let V=_.match(/^([^\s]+)(.*)$/);O=V?V[1]:_,A=V?V[2].trim():""}}else{let j=_.match(/^([^\s]+)(.*)$/);O=j?j[1]:_,A=j?j[2].trim():""}if(S===void 0){let j=A.match(/^(-?(?:\d+\.?\d*|\.\d+))%/);if(j){if(S=parseInt(j[1],10)/100,A=A.slice(j[0].length).trim(),S<0)throw new Error("Percentages less than 0 are not valid.");if(S>1)throw new Error("Percentages greater than 100 are not valid.")}else if(A.slice(0,5)==="calc("){let{expression:I,end:V}=oe(A,0);if(!I)throw new Error("Malformed calc() weight expression.");A=A.slice(V).trim()}}if(A.length>0)throw new Error(`Unexpected extra tokens after color: '${A}'.`);return{color:P.from(O),weight:S}},r=(b,E)=>{if(b===void 0&&typeof E=="number")b=1-E;else if(typeof b=="number"&&E===void 0)E=1-b;else if(b===void 0&&E===void 0)b=E=.5;else if(b=b,E=E,b+E<=0)throw new Error("Sum of percengates cannot be 0%.");let S=b+E,_;return S>1?(b/=S,E/=S):(b/=S,E/=S,_=S),{amount:E,alphaMultiplier:_}},n="color-mix",{expression:o}=oe(e,n.length);if(!o)throw new Error("Malformed color-mix expression.");let a=o.slice(1,-1).trim(),s=[],c=0,i="";for(;c<a.length;){let b=a[c];if(b===","){s.push(i.trim()),i="",c++;continue}if(b==="("||/[a-zA-Z]/.test(b)){let{expression:E,end:S}=oe(a,c);if(E){i+=E,c=S;continue}}i+=b,c++}if(s.push(i.trim()),s.length!==3)throw new Error("color-mix must have three comma-separated parts.");let u=s[0].match(/^in\s+([a-z0-9-]+)(?:\s+(shorter|longer|increasing|decreasing)\s+hue)?$/);if(!u)throw new Error("Invalid model and hue format.");let f=u[1],h=u[2];if(f==="rgb")throw new Error('RGB model is not allowed in color-mix(). Use "srgb" instead.');if(h){let b=Z[f].components;if(!b)throw new Error(`Unknown color model: ${f}.`);if(!Object.values(b).some(S=>S.value==="angle"))throw new Error(`Hue interpolation not supported in ${f} space.`)}else h="shorter";let{color:m,weight:w}=t(s[1]),{color:$,weight:L}=t(s[2]),{amount:q,alphaMultiplier:C=1}=r(w,L);return m.with({alpha:b=>b*C}).in(f).mix($.with({alpha:b=>b*C}),{amount:q,hue:h}).in("rgb").toArray({fit:"none",precision:null})}},transparent:{isValid:e=>e==="transparent",bridge:"rgb",toBridge:e=>e,parse:e=>[0,0,0,0]}},ue={...Ge,currentColor:{isValid:e=>e==="currentcolor",bridge:"rgb",toBridge:e=>e,parse:e=>[0,0,0,1]},"system-color":{isValid:e=>Object.keys(ee.systemColors).some(t=>t.toLowerCase()===e),bridge:"rgb",toBridge:e=>e,parse:e=>{let{systemColors:t}=ee,r=Object.keys(t).find(o=>o.toLowerCase()===e);return[...t[r][ee.theme==="light"?0:1],1]}},"contrast-color":{isValid:e=>e.slice(0,15)==="contrast-color("&&e[e.length-1]===")",bridge:"rgb",toBridge:e=>e,parse:e=>{let t=e.slice(15,-1),[,r]=P.from(t).in("xyz-d65").toArray({fit:"none",precision:null});return r>.5?[0,0,0,1]:[255,255,255,1]}},"device-cmyk":{isValid:e=>e.slice(0,12)==="device-cmyk("&&e[e.length-1]===")",bridge:"rgb",toBridge:e=>e,parse:e=>{let t="device-cmyk",r=e.indexOf(t);if(r===-1)throw new Error("Invalid device-cmyk syntax");let{expression:n}=oe(e,r+t.length);if(!n)throw new Error("Malformed device-cmyk expression");let o=n.slice(1,-1).trim(),a=[],s=0;for(;s<o.length;){let C=o[s];if(C===" "){s++;continue}if(C==="("||/[a-zA-Z-]/.test(C)){let{expression:b,end:E}=oe(o,s);if(b){a.push(b),s=E;continue}}if(/[\d.+-]/.test(C)){let b="";for(;s<o.length&&/[\d.eE+-]/.test(o[s]);)b+=o[s],s++;if(s<o.length&&o[s]==="%")b+="%",s++;else if(s<o.length&&/[a-zA-Z]/.test(o[s]))for(;s<o.length&&/[a-zA-Z]/.test(o[s]);)b+=o[s],s++;a.push(b);continue}if(C===","||C==="/"){a.push(C),s++;continue}throw new Error(`Unexpected character: ${C}`)}let c=C=>C[C.length-1]==="%"?parseFloat(C)/100:parseFloat(C);if(a.length>=2&&a[1]===","){let C=a.filter(b=>b!==",");if(C.length===4||C.length===5){let[b,E,S,_,W=1]=C.map(c),O=1-Math.min(1,b*(1-_)+_),A=1-Math.min(1,E*(1-_)+_),z=1-Math.min(1,S*(1-_)+_);return[O*255,A*255,z*255,W]}throw new Error("Invalid number of components for comma-separated device-cmyk")}let i=0,d=[];for(;i<a.length&&d.length<4&&a[i]!=="/"&&a[i]!==",";)d.push(a[i]),i++;if(d.length!==4)throw new Error("Invalid number of components for space-separated device-cmyk");let[u,f,h,m]=d.map(c),w=1;if(i<a.length&&a[i]==="/"){if(i++,i>=a.length)throw new Error("Missing alpha value");w=c(a[i]),i++}if(i<a.length&&a[i]===","){i++;let C=a.slice(i).join(" ");return P.from(C).in("rgb").toArray({fit:"none",precision:null})}let $=1-Math.min(1,u*(1-m)+m),L=1-Math.min(1,f*(1-m)+m),q=1-Math.min(1,h*(1-m)+m);return[$*255,L*255,q*255,w]},fromBridge:e=>e,format:([e,t,r,n=1],o={})=>{let{legacy:a=!1,precision:s=3,fit:c=ee.defaults.fit}=o,[i,d,u]=le([e,t,r],"rgb",{method:c}),f=i/255,h=d/255,m=u/255,w=1-Math.max(f,h,m),$=_=>Number(s===null?_:_.toFixed(s)).toString(),L=$(w===1?0:(1-f-w)/(1-w)),q=$(w===1?0:(1-h-w)/(1-w)),C=$(w===1?0:(1-m-w)/(1-w)),b=$(w),E=Number(n.toFixed(3)).toString();if(a)return`device-cmyk(${L}, ${q}, ${C}, ${b}${n<1?`, ${E}`:""})`;let S=_e.rgb.format?.([i,d,u,n],o);return`device-cmyk(${L} ${q} ${C} ${b}${n<1?` / ${E}`:""}, ${S})`}},"light-dark":{isValid:e=>e.slice(0,11)==="light-dark("&&e[e.length-1]===")",bridge:"rgb",toBridge:e=>e,parse:e=>{let t="light-dark",r=e.indexOf(t);if(r===-1)throw new Error("Not a <light-dark()> expression");let{expression:n}=oe(e,r+t.length);if(!n)throw new Error("Malformed <light-dark()> expression");let o=n.slice(1,-1).trim(),a=[],s="",c=0;for(;c<o.length;){let f=o[c];if(f===","){a.push(s.trim()),s="",c++;continue}if(f==="("||/[a-zA-Z]/.test(f)){let{expression:h,end:m}=oe(o,c);if(h){s+=h,c=m;continue}}s+=f,c++}if(a.push(s.trim()),a.length!==2)throw new Error("Invalid light-dark format");let[i,d]=a,{theme:u}=ee;return P.from(u==="light"?i:d).toArray({fit:"none",precision:null})}}};var P=class e{model;coords;constructor(t,r=[0,0,0,0]){if(!(t in Z))throw new Error(`Unsupported color model: '${t}'`);if([3,4].includes(r.length)===!1)throw new Error("Coordinates array must have 3 or 4 elements.");let n=r.slice();n.length===3&&n.push(1),this.model=t,this.coords=n}static from(t){let r=xe(t);for(let n in ue){let o=n,{parse:a,bridge:s,toBridge:c,isValid:i}=ue[o];if(!i(r))continue;let d=a(r),u=o in Z?d:c(d),f=o in Z?o:s;return new e(f,u)}throw new Error(`Unsupported or invalid color format: '${t}'.`)}static type(t,r=!1){let n=xe(t);for(let o in ue){let a=o,{isValid:s,bridge:c,parse:i,toBridge:d}=ue[a];if(s(n)){if(!r)return a;try{let u=i(n),f=a in Z?u:d(u),h=o in Z?o:c;return typeof new e(h,f)=="object"?a:void 0}catch{return}}}}static isValid(t,r){try{if(r){let n=r?.trim().toLowerCase(),o=xe(t),{isValid:a,bridge:s,parse:c,toBridge:i}=ue[n];if(!a(o))return!1;let d=c(o),u=n in Z?d:i(d),f=n in Z?n:s;return!!new e(f,u)}return!!e.from(t)}catch{return!1}}static random(t={}){let r=Object.keys(Z),n=t.model??r[Math.floor(Math.random()*r.length)],{components:o}=Z[n],a=new Set([...Object.keys(o),"alpha"]);for(let c of["limits","bias","base","deviation"]){let i=t[c];if(i){for(let d of Object.keys(i))if(!a.has(d))throw new Error(`Invalid component "${d}" for model "${n}". Valid components: ${[...a].join(", ")}`)}}let s=[];for(let[c,i]of Object.entries(o)){let d=t.base?.[c],u=t.deviation?.[c],f;if(d!=null&&u!=null){let h=Math.random()||1e-9,m=Math.random()||1e-9;f=d+Math.sqrt(-2*Math.log(h))*Math.cos(2*Math.PI*m)*u}else{let[h,m]=i.value==="angle"?[0,360]:i.value==="percentage"?[0,100]:i.value,w=t.limits?.[c];if(w){let[q,C]=w;h=Math.max(h,q),m=Math.min(m,C)}let $=Math.random(),L=t.bias?.[c];L&&($=L($)),f=h+$*(m-h)}if(i.value==="angle")f=(f%360+360)%360;else if(i.value==="percentage")f=Math.min(100,Math.max(0,f));else if(Array.isArray(i.value)){let[h,m]=i.value;f=Math.min(m,Math.max(h,f))}else throw new Error(`Invalid component value definition for "${c}".`);s[i.index]=f}return new e(n,s)}to(t,r={}){let n=t.toLowerCase(),{legacy:o=!1,fit:a=ee.defaults.fit,precision:s,units:c=!1}=r,i=ue[n];if(!i)throw new Error(`Unsupported color type: '${n}'.`);let{fromBridge:d,bridge:u,format:f}=i;if(!d||!f)throw new Error(`Invalid output type: '${n}'.`);let h=m=>f(m,{legacy:o,fit:a,precision:s,units:c});return n===this.model?h(this.coords):n in Z?h(this.in(n).toArray({fit:"none",precision:null})):h(d(this.in(u).toArray({fit:"none",precision:null})))}in(t){let r=this.model,n=t.trim().toLowerCase();if(n===r)return new e(n,[...this.coords]);let o=me.get("graph"),a=me.get("paths");if(!o){o={};for(let[u,f]of Object.entries(Z)){let{bridge:h}=f;o[u]=[...o[u]||[],h],o[h]=[...o[h]||[],u]}me.set("graph",o)}a||(a=new Map,me.set("paths",a));let s=`${r}-${n}`,c=this.coords.slice(0,3);if(!a.has(s)){let u=[r],f={[r]:null};for(let m=0;m<u.length;m++){let w=u[m];if(w===n)break;for(let $ of o[w]||[])$ in f||(f[$]=w,u.push($))}let h=[];for(let m=n;m;m=f[m])h.push(m);if(h.reverse(),!h.length||h[0]!==r)throw new Error(`Cannot convert from ${r} to ${n}. No path found.`);a.set(s,h)}let i=[...c],d=a.get(s);for(let u=0;u<d.length-1;u++){let f=d[u],h=d[u+1],m=Z[f],w=Z[h];if(m.toBridge&&m.bridge===h)i=m.toBridge(i);else if(w.fromBridge&&w.bridge===f)i=w.fromBridge(i);else throw new Error(`No conversion found between ${f} and ${h}.`)}return new e(n,[...i.slice(0,3),this.coords[3]??1])}toString(t={}){let{format:r}=ue[this.model],{legacy:n=!1,fit:o=ee.defaults.fit,precision:a,units:s=!1}=t;return r?.(this.coords,{legacy:n,fit:o,precision:a,units:s})}toObject(t={}){let r=this.toArray(t),{components:n}=Z[this.model];if(!n)throw new Error(`Model ${this.model} does not have defined components.`);let o={...n,alpha:{index:3,value:[0,1],precision:3}},a={};for(let[s,{index:c}]of Object.entries(o))a[s]=r[c];return a}toArray(t={}){let{fit:r=ee.defaults.fit,precision:n}=t,{model:o,coords:a}=this,{components:s}=Z[o];if(!s)throw new Error(`Model ${o} does not have defined components.`);let c={...s,alpha:{index:3,value:[0,1],precision:3}},i=(f,h)=>{let m=Object.values(c)[h]?.value,[w,$]=Array.isArray(m)?m:m==="angle"?[0,360]:[0,100];return Number.isNaN(f)?0:f===1/0?$:f===-1/0?w:typeof f=="number"?f:0},d=a.slice(0,3).map(i);return[...le(d,o,{method:r,precision:n}).slice(0,3),a[3]]}with(t){let{model:r}=this,n=this.toArray({fit:"none",precision:null}),{components:o}=Z[r];if(!o)throw new Error(`Model ${r} does not have defined components.`);let a={...o,alpha:{index:3,value:[0,1],precision:3}},s=Object.keys(a),c;if(typeof t=="function"?c=t(Object.fromEntries(s.map(u=>[u,n[a[u].index]]))):c=t,Array.isArray(c)){let d=n.map((u,f)=>{let h=c[f],{value:m}=Object.values(a).find(L=>L.index===f);if(typeof h!="number")return u;let[w,$]=Array.isArray(m)?m:m==="angle"?[0,360]:[0,100];return Number.isNaN(h)?0:h===1/0?$:h===-1/0?w:h});return new e(r,[...d.slice(0,3),n[3]])}let i=[...n];for(let d of s){if(!(d in c))continue;let{index:u,value:f}=a[d],h=n[u],m=c[d],w=typeof m=="function"?m(h):m;if(typeof w=="number"){let[$,L]=Array.isArray(f)?f:f==="angle"?[0,360]:[0,100];Number.isNaN(w)?w=0:w===1/0?w=L:w===-1/0&&(w=$)}i[u]=w}return new e(r,[...i.slice(0,3),i[3]??n[3]])}mix(t,r={}){let{model:n}=this,o=this.toArray({fit:"none",precision:null}),{components:a}=Z[n];if(!a)throw new Error(`Model ${n} does not have defined components.`);let{hue:s="shorter",amount:c=.5,easing:i="linear",gamma:d=1}=r,u={...a,alpha:{index:3,value:[0,1],precision:3}},f=(O,A)=>{let z=((A-O)%360+360)%360;return z>180?z-360:z},h=(O,A)=>f(O,A)>=0?f(O,A)-360:f(O,A)+360,m=(O,A,z,j)=>{let I=V=>(V%360+360)%360;switch(j){case"shorter":return I(O+z*f(O,A));case"longer":return I(O+z*h(O,A));case"increasing":return I(O*(1-z)+(A<O?A+360:A)*z);case"decreasing":return I(O*(1-z)+(A>O?A-360:A)*z);default:throw new Error(`Invalid hue interpolation method: ${j}`)}},w=Math.max(0,Math.min(1,c)),$=typeof i=="function"?i:ke[i],L=Math.pow($(w),1/d),q=typeof t=="string"?e.from(t):t,C=o.slice(0,3),b=q.in(n).toArray({fit:"none",precision:null}).slice(0,3),E=o[3],S=q.coords[3],_=Object.entries(u).find(([O])=>O==="h")?.[1].index;if(w===0)return new e(n,[...C,E]);if(w===1)return new e(n,[...b,S]);if(E<1||S<1){let O=C.map((j,I)=>{let V=b[I];if(I===_)return m(j,V,L,s);let he=j*E,fe=V*S;return he*(1-L)+fe*L}),A=E*(1-L)+S*L,z=A>0?O.map((j,I)=>I===_?j:j/A):C.map((j,I)=>I===_?O[I]:0);return new e(n,[...z,A])}let W=C.map((O,A)=>{let z=Object.values(u).find(I=>I.index===A);if(!z)return O;let j=b[A];return z.value==="angle"?m(O,j,L,s):O+(j-O)*L});return new e(n,[...W,1])}within(t,r=ee.defaults.fit){let n=t.trim().toLowerCase();if(!(n in pe))throw new Error(`Unsupported color gamut: '${n}'.`);let o=this.in(n).toArray({fit:r,precision:null});return new e(n,o).in(this.model)}contrast(t){let r=typeof t=="string"?e.from(t):t,[,n]=this.in("xyz-d65").toArray({fit:"none",precision:null}),[,o]=r.in("xyz-d65").toArray({fit:"none",precision:null});return(Math.max(n,o)+.05)/(Math.min(n,o)+.05)}deltaEOK(t){let r={fit:"none",precision:null},[n,o,a]=this.in("oklab").toArray(r),[s,c,i]=(typeof t=="string"?e.from(t):t).in("oklab").toArray(r),d=n-s,u=o-c,f=a-i;return Math.sqrt(d**2+u**2+f**2)*100}deltaE76(t){let r={fit:"none",precision:null},[n,o,a]=this.in("lab").toArray(r),[s,c,i]=(typeof t=="string"?e.from(t):t).in("lab").toArray(r),d=n-s,u=o-c,f=a-i;return Math.hypot(d,u,f)}deltaE94(t){let r={fit:"none",precision:null},[n,o,a]=this.in("lab").toArray(r),[s,c,i]=(typeof t=="string"?e.from(t):t).in("lab").toArray(r),d=n-s,u=o-c,f=a-i,h=Math.sqrt(o*o+a*a),m=Math.sqrt(c*c+i*i),w=h-m,$=Math.sqrt(Math.max(0,u*u+f*f-w*w)),L=1,q=1,C=1,b=.045,E=.015,S=1+b*h,_=1+E*h;return Math.sqrt((d/L)**2+(w/(q*S))**2+($/(C*_))**2)}deltaE2000(t){let r={fit:"none",precision:null},[n,o,a]=this.in("lab").toArray(r),[s,c,i]=(typeof t=="string"?e.from(t):t).in("lab").toArray(r),d=Math.PI,u=d/180,f=180/d,h=Math.sqrt(o**2+a**2),m=Math.sqrt(c**2+i**2),w=(h+m)/2,$=Math.pow(25,7),L=Math.pow(w,7),q=.5*(1-Math.sqrt(L/(L+$))),C=(1+q)*o,b=(1+q)*c,E=Math.sqrt(C**2+a**2),S=Math.sqrt(b**2+i**2),_=Math.atan2(a,C),W=Math.atan2(i,b);_<0&&(_+=2*d),W<0&&(W+=2*d),_*=f,W*=f;let O=s-n,A=S-E,z=W-_,j=Math.abs(z),I=0;E*S!==0&&(j<=180?I=z:z>180?I=z-360:I=z+360);let V=2*Math.sqrt(E*S)*Math.sin(I*u/2),he=(n+s)/2,fe=(E+S)/2,ge=Math.pow(fe,7),de=_+W,ie=0;E===0&&S===0?ie=de:j<=180?ie=de/2:de<360?ie=(de+360)/2:ie=(de-360)/2;let ye=(he-50)**2,ve=1+.015*ye/Math.sqrt(20+ye),we=1+.045*fe,l=1;l-=.17*Math.cos((ie-30)*u),l+=.24*Math.cos(2*ie*u),l+=.32*Math.cos((3*ie+6)*u),l-=.2*Math.cos((4*ie-63)*u);let v=1+.015*fe*l,p=30*Math.exp(-1*((ie-275)/25)**2),G=2*Math.sqrt(ge/(ge+$)),N=-1*Math.sin(2*p*u)*G,y=(O/ve)**2;return y+=(A/we)**2,y+=(V/v)**2,y+=N*(A/we)*(V/v),Math.sqrt(y)}equals(t,r=1e-5){let n=typeof t=="string"?e.from(t):t;if(n.model===this.model)return this.coords.every((s,c)=>Math.abs(s-n.coords[c])<=r);let o=this.in("xyz-d65").toArray({fit:"none",precision:null}),a=n.in("xyz-d65").toArray({fit:"none",precision:null});return o.every((s,c)=>Math.abs(s-a[c])<=r)}inGamut(t,r=1e-5){let n=t.trim().toLowerCase();if(!(n in pe))throw new Error(`Unsupported color gamut: '${n}'.`);let{components:o,targetGamut:a}=Z[n];if(!a)return!0;let s=this.in(n).toArray({fit:"none",precision:null});return Object.values(o).every(({index:c,value:i})=>{let d=s[c],[u,f]=Array.isArray(i)?i:i==="angle"?[0,360]:[0,100];return d>=u-r&&d<=f+r})}};return tt(rt);})();
1
+ "use strict";var Saturon=(()=>{var ne=Object.defineProperty;var Ue=Object.getOwnPropertyDescriptor;var Ve=Object.getOwnPropertyNames;var Ke=Object.prototype.hasOwnProperty;var We=(o,e)=>{for(var n in e)ne(o,n,{get:e[n],enumerable:!0})},Je=(o,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ve(e))!Ke.call(o,r)&&r!==n&&ne(o,r,{get:()=>e[r],enumerable:!(t=Ue(e,r))||t.enumerable});return o};var Qe=o=>Je(ne({},"__esModule",{value:!0}),o);var Tt={};We(Tt,{Color:()=>M});var q={AccentColor:[[0,120,215],[10,132,255]],AccentColorText:[[255,255,255],[255,255,255]],ActiveText:[[255,0,0],[255,100,100]],ButtonBorder:[[169,169,169],[90,90,90]],ButtonFace:[[240,240,240],[60,60,60]],ButtonText:[[0,0,0],[255,255,255]],Canvas:[[255,255,255],[30,30,30]],CanvasText:[[0,0,0],[255,255,255]],Field:[[255,255,255],[45,45,45]],FieldText:[[0,0,0],[255,255,255]],GrayText:[[128,128,128],[169,169,169]],Highlight:[[0,120,215],[80,80,80]],HighlightText:[[255,255,255],[0,0,0]],LinkText:[[0,0,255],[0,128,255]],Mark:[[255,255,0],[255,200,0]],MarkText:[[0,0,0],[0,0,0]],SelectedItem:[[0,120,215],[0,120,215]],SelectedItemText:[[255,255,255],[255,255,255]],VisitedText:[[128,0,128],[200,120,255]]},N={theme:"light",systemColors:q,defaults:{fit:"clip"}};var X=new Map;function R(o,e){let n=Array.isArray(o[0])?o.length:1,t=Array.isArray(o[0])?o:[o],r=Array.isArray(e[0])?e:e.map(i=>[i]),l=r[0].length,a=r[0].map((i,c)=>r.map(h=>h[c])),s=t.map(i=>a.map(c=>i.reduce((h,u,d)=>h+u*(c[d]||0),0)));return n===1?s[0]:l===1?s.map(i=>i[0]):s}function S(o,e){let[n,t]=Array.isArray(e)?e:e==="hue"?[0,360]:[0,100];return Number.isNaN(o)?0:o===1/0?t:o===-1/0?n:typeof o=="number"?o:0}function O(o,e,n={}){let{method:t=N.defaults.fit,precision:r}=n,{components:l}=E[e],a=Object.values(l).reduce((i,c)=>(i[c.index]=c,i),[]),s;if(t==="none")s=o;else if(t==="clip")s=o.map((i,c)=>{let h=a[c];if(!h)throw new Error(`Missing component properties for index ${c}.`);if(h.value==="hue")return(i%360+360)%360;let[u,d]=Array.isArray(h.value)?h.value:[0,100];return Math.min(d,Math.max(u,i))});else{let i=oe[t];if(!i)throw new Error(`Invalid gamut clipping method: must be ${Object.keys(oe).join(", ")} or "none".`);s=i(o,e)}return s.map((i,c)=>{let h;if(typeof r=="number"||r===null)h=r;else if(typeof r>"u")h=a[c]?.precision??3;else throw new TypeError(`Invalid precision value: ${r}.`);return h===null?i:Number(i.toFixed(h))})}function I(o,e){let{fromLinear:n=a=>a,toLinear:t=a=>a,toBridgeMatrix:r,fromBridgeMatrix:l}=e;return{supportsLegacy:!1,targetGamut:e.targetGamut===null?null:o,components:{...Object.fromEntries(e.components.map((a,s)=>[a,{index:s,value:[0,1],precision:5}])),alpha:{index:3,value:[0,1],precision:3}},bridge:e.bridge,toBridge:a=>R(r,a.map(s=>t(s))),fromBridge:a=>R(l,a).map(s=>n(s))}}function xe(o,e){let n=((e-o)%360+360)%360;return n>180?n-360:n}function et(o,e){let n=xe(o,e);return n>=0?n-360:n+360}function be(o,e,n,t){if(Number.isNaN(o)||Number.isNaN(e))return NaN;switch(t){case"shorter":return((o+n*xe(o,e))%360+360)%360;case"longer":return((o+n*et(o,e))%360+360)%360;case"increasing":return((o*(1-n)+(e<o?e+360:e)*n)%360+360)%360;case"decreasing":return((o*(1-n)+(e>o?e-360:e)*n)%360+360)%360}throw new Error(`Invalid hue interpolation: ${t}`)}function ve(o,e,n,t="oklab",r="shorter"){let l=o.in(t).coords.slice(),a=e.in(t).coords.slice(),{components:s}=E[t];if(!s)throw new Error(`Model ${t} does not have defined components.`);let i=m=>Array.isArray(m)?m:m==="hue"?[0,360]:[0,100],c=(m,y,b)=>{let[v,x]=i(b),C=w=>w===1/0?x:w===-1/0?v:w;m=C(m),y=C(y);let k=Number.isNaN(m),$=Number.isNaN(y);return k&&$?{a:NaN,b:NaN}:k?{a:y,b:y}:$?{a:m,b:m}:{a:m,b:y,ok:!0}},h=s.h?.index??-1;for(let m in s){let{index:y,value:b}=s[m];if(y>3)continue;let v=c(l[y],a[y],b);if(v.ok){let[x,C]=i(b),k=$=>$===1/0?C:$===-1/0?x:$;l[y]=k(l[y]),a[y]=k(a[y])}else l[y]=v.a,a[y]=v.b}if(n=Math.min(1,Math.max(0,n)),n===0)return new M(t,[...l]);if(n===1)return new M(t,[...a]);let u=l[3]??1,d=a[3]??1,p=l.slice(0,3),g=a.slice(0,3);if(u<1||d<1){let m=p.map((v,x)=>{let C=g[x];return x===h?be(v,C,n,r):v*u*(1-n)+C*d*n}),y=u*(1-n)+d*n,b=y>0?m.map((v,x)=>x===h?v:v/y):p.map((v,x)=>x===h?m[x]:0);return new M(t,[...b,y])}let f=p.map((m,y)=>y===h?be(m,g[y],n,r):m+(g[y]-m)*n);return new M(t,[...f,1])}var T=1e-5,L={D50_to_D65:[[.955473421488075,-.02309845494876471,.06325924320057072],[-.0283697093338637,1.0099953980813041,.021041441191917323],[.012314014864481998,-.020507649298898964,1.330365926242124]],D65_to_d50:[[1.0479297925449969,.022946870601609652,-.05019226628920524],[.02962780877005599,.9904344267538799,-.017073799063418826],[-.009243040646204504,.015055191490298152,.7518742814281371]],SRGB_to_XYZD65:[[506752/1228815,87881/245763,12673/70218],[87098/409605,175762/245763,12673/175545],[7918/409605,87881/737289,1001167/1053270]],XYZD65_to_SRGB:[[12831/3959,-329/214,-1974/3959],[-851781/878810,1648619/878810,36519/878810],[705/12673,-2585/12673,705/667]],P3_to_XYZD65:[[608311/1250200,189793/714400,198249/1000160],[35783/156275,247089/357200,198249/2500400],[0/1,32229/714400,5220557/5000800]],XYZD65_to_P3:[[446124/178915,-333277/357830,-72051/178915],[-14852/17905,63121/35810,423/17905],[11844/330415,-50337/660830,316169/330415]],REC2020_to_XYZD65:[[63426534/99577255,20160776/139408157,47086771/278816314],[26158966/99577255,472592308/697040785,8267143/139408157],[0/1,19567812/697040785,295819943/278816314]],XYZD65_to_REC2020:[[30757411/17917100,-6372589/17917100,-4539589/17917100],[-19765991/29648200,47925759/29648200,467509/29648200],[792561/44930125,-1921689/44930125,42328811/44930125]],A98_to_XYZD65:[[573536/994567,263643/1420810,187206/994567],[591459/1989134,6239551/9945670,374412/4972835],[53769/1989134,351524/4972835,4929758/4972835]],ProPhoto_to_XYZD50:[[.7977666449006423,.13518129740053308,.0313477341283922],[.2880748288194013,.711835234241873,8993693872564e-17],[0,0,.8251046025104602]],XYZD50_to_ProPhoto:[[1.3457868816471583,-.25557208737979464,-.05110186497554526],[-.5446307051249019,1.5082477428451468,.02052744743642139],[0,0,1.2119675456389452]],XYZD65_to_A98:[[1829569/896150,-506331/896150,-308931/896150],[-851781/878810,1648619/878810,36519/878810],[16779/1248040,-147721/1248040,1266979/1248040]],LMS_to_XYZD65:[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],XYZD65_to_LMS:[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],LMS_to_OKLAB:[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],OKLAB_to_LMS:[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]]},oe={"chroma-reduction":(o,e)=>{let n=new M(e,o),{targetGamut:t}=E[e];if(t===null||(t===void 0&&(t="srgb"),n.inGamut(t,1e-5)))return o;let[r,,l]=n.in("oklch").toArray({fit:"none",precision:null}),a=Math.min(1,Math.max(0,r)),s=0,i=1,c=1e-6,h;for(;i-s>c;){let d=(s+i)/2,p=new M("oklch",[a,d,l]);if(p.inGamut(t,1e-5))s=d;else{let g=O(p.toArray({fit:"none",precision:null}).slice(0,3),e,{method:"clip"}),f=new M(e,g);if(p.deltaEOK(f)<2)return h=g,h;i=d}}return h=new M("oklch",[a,s,l]).in(e).toArray({fit:"none",precision:null}),h},"css-gamut-map":(o,e)=>{let{targetGamut:n}=E[e];if(n===null)return o;n===void 0&&(n="srgb");let t=new M(e,o),[r,l,a]=t.in("oklch").toArray({fit:"none",precision:null});if(r>=1)return new M("oklab",[1,0,0]).in(e).toArray({fit:"none",precision:null});if(r<=0)return new M("oklab",[0,0,0]).in(e).toArray({fit:"none",precision:null});if(t.inGamut(n,1e-5))return o;let s=.02,i=1e-4,c=new M("oklch",[r,l,a]),h=O(c.in(e).toArray({fit:"none",precision:null}).slice(0,3),e,{method:"clip"}),u=new M(e,h);if(c.deltaEOK(u)<s)return h;let p=0,g=l,f=!0;for(;g-p>i;){let m=(p+g)/2,y=new M("oklch",[r,m,a]);if(f&&y.inGamut(n,1e-5))p=m;else{let b=O(y.in(e).toArray({fit:"none",precision:null}).slice(0,3),e,{method:"clip"});h=b;let v=new M(e,b),x=y.deltaEOK(v);if(x<s){if(s-x<i)return h;f=!1,p=m}else g=m}}return h}};function we(o){let e=o.map(n=>{let t=n/255,r=t<0?-1:1,l=Math.abs(t);return l<=.04045?t/12.92:r*((l+.055)/1.055)**2.4});return R(L.SRGB_to_XYZD65,e)}function Me(o){return R(L.XYZD65_to_SRGB,o).map(t=>{let r=t<0?-1:1,l=Math.abs(t);return l>.0031308?r*(1.055*l**(1/2.4)-.055):12.92*t}).map(t=>t*255)}function re([o,e,n]){e/=100,n/=100;let t=r=>{let l=(r+o/30)%12,a=e*Math.min(n,1-n);return n-a*Math.max(-1,Math.min(l-3,9-l,1))};return[t(0)*255,t(8)*255,t(4)*255]}function ke(o){let[e,n,t]=o.map(p=>p/255),r=Math.max(e,n,t),l=Math.min(e,n,t),a=(r+l)/2,s=r-l,i=NaN,c=0;s>0&&(c=s/(1-Math.abs(2*a-1)),i=r===e?(n-t)/s+(n<t?6:0):r===n?(t-e)/s+2:(e-n)/s+4,i=i*60%360);let h=c*100,u=a*100;return[u<=T||100-u<=T||h<=T?NaN:i,h,u]}function Ee([o,e,n]){if(e/=100,n/=100,e+n>=1){let r=e/(e+n)*255;return[r,r,r]}return re([o,100,50]).map(r=>r/255).map(r=>(r*(1-e-n)+e)*255)}function Ae(o){let[e,n,t]=o.map(i=>i/255),r=Math.max(e,n,t),l=Math.min(e,n,t),a=r-l,s=NaN;return a>T&&(s=r===e?(n-t)/a+(n<t?6:0):r===n?(t-e)/a+2:(e-n)/a+4,s=s*60%360),[s,l*100,(1-r)*100]}function Ce([o,e,n]){let t=[.9642956764295677,1,.8251046025104602],r=24389/27,l=216/24389,a=(o+16)/116,s=e/500+a,i=a-n/200;return[s**3>l?s**3:(116*s-16)/r,o>r*l?a**3:o/r,i**3>l?i**3:(116*i-16)/r].map((h,u)=>h*t[u])}function _e(o){let e=[.9642956764295677,1,.8251046025104602],n=24389/27,t=216/24389,r=o.map((i,c)=>i/e[c]),[l,a,s]=r.map(i=>i>t?Math.cbrt(i):(n*i+16)/116);return[116*a-16,500*(l-a),200*(a-s)]}function $e([o,e,n]){return[o,e*Math.cos(n*Math.PI/180),e*Math.sin(n*Math.PI/180)]}function Le([o,e,n]){let t=Math.hypot(e,n),r=Math.atan2(n,e)*180/Math.PI;return r<0&&(r+=360),[o,t,t<=T?NaN:r]}function Be(o){let{LMS_to_XYZD65:e,OKLAB_to_LMS:n}=L,t=R(n,o);return R(e,t.map(r=>r**3))}function Ne(o){let{XYZD65_to_LMS:e,LMS_to_OKLAB:n}=L,t=R(e,o);return R(n,t.map(Math.cbrt))}function Se([o,e,n]){return[o,e*Math.cos(n*Math.PI/180),e*Math.sin(n*Math.PI/180)]}function Ie([o,e,n]){let t=Math.hypot(e,n),r=Math.atan2(n,e)*180/Math.PI;return r<0&&(r+=360),[o,t,t<=T?NaN:r]}var J={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Z={srgb:I("srgb",{components:["r","g","b"],bridge:"xyz-d65",toLinear:o=>{let e=o<0?-1:1,n=Math.abs(o);return n<=.04045?e*(n/12.92):e*Math.pow((n+.055)/1.055,2.4)},fromLinear:o=>{let e=o<0?-1:1,n=Math.abs(o);return n>.0031308?e*(1.055*Math.pow(n,1/2.4)-.055):e*(12.92*n)},toBridgeMatrix:L.SRGB_to_XYZD65,fromBridgeMatrix:L.XYZD65_to_SRGB}),"srgb-linear":I("srgb-linear",{components:["r","g","b"],bridge:"xyz-d65",toBridgeMatrix:L.SRGB_to_XYZD65,fromBridgeMatrix:L.XYZD65_to_SRGB}),"display-p3":I("display-p3",{components:["r","g","b"],bridge:"xyz-d65",toLinear:o=>{let e=o<0?-1:1,n=Math.abs(o);return n<=.04045?e*(n/12.92):e*Math.pow((n+.055)/1.055,2.4)},fromLinear:o=>{let e=o<0?-1:1,n=Math.abs(o);return n>.0031308?e*(1.055*Math.pow(n,1/2.4)-.055):e*(12.92*n)},toBridgeMatrix:L.P3_to_XYZD65,fromBridgeMatrix:L.XYZD65_to_P3}),rec2020:I("rec2020",{components:["r","g","b"],bridge:"xyz-d65",toLinear:o=>{let e=1.09929682680944,n=.018053968510807,t=o<0?-1:1,r=Math.abs(o);return r<n*4.5?t*(r/4.5):t*Math.pow((r+e-1)/e,1/.45)},fromLinear:o=>{let e=1.09929682680944,n=.018053968510807,t=o<0?-1:1,r=Math.abs(o);return r>n?t*(e*Math.pow(r,.45)-(e-1)):t*(4.5*r)},toBridgeMatrix:L.REC2020_to_XYZD65,fromBridgeMatrix:L.XYZD65_to_REC2020}),"a98-rgb":I("a98-rgb",{components:["r","g","b"],bridge:"xyz-d65",toLinear:o=>{let e=o<0?-1:1,n=Math.abs(o);return e*Math.pow(n,563/256)},fromLinear:o=>{let e=o<0?-1:1,n=Math.abs(o);return e*Math.pow(n,256/563)},toBridgeMatrix:L.A98_to_XYZD65,fromBridgeMatrix:L.XYZD65_to_A98}),"prophoto-rgb":I("prophoto-rgb",{components:["r","g","b"],bridge:"xyz-d50",toLinear:o=>{let n=o<0?-1:1,t=Math.abs(o);return t<=.03125?n*(t/16):n*Math.pow(t,1.8)},fromLinear:o=>{let e=.001953125,n=o<0?-1:1,t=Math.abs(o);return t>=e?n*Math.pow(t,1/1.8):n*(16*t)},toBridgeMatrix:L.ProPhoto_to_XYZD50,fromBridgeMatrix:L.XYZD50_to_ProPhoto}),"xyz-d65":I("xyz-d65",{targetGamut:null,components:["x","y","z"],bridge:"xyz-d65",toBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]],fromBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]]}),"xyz-d50":I("xyz-d50",{targetGamut:null,components:["x","y","z"],bridge:"xyz-d65",toBridgeMatrix:L.D50_to_D65,fromBridgeMatrix:L.D65_to_d50}),xyz:I("xyz",{targetGamut:null,components:["x","y","z"],bridge:"xyz-d65",toBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]],fromBridgeMatrix:[[1,0,0],[0,1,0],[0,0,1]]})},E={rgb:{supportsLegacy:!0,alphaVariant:"rgba",components:{r:{index:0,value:[0,255],precision:0},g:{index:1,value:[0,255],precision:0},b:{index:2,value:[0,255],precision:0},alpha:{index:3,value:[0,1],precision:3}},bridge:"xyz-d65",toBridge:we,fromBridge:Me},hsl:{supportsLegacy:!0,alphaVariant:"hsla",components:{h:{index:0,value:"hue",precision:0},s:{index:1,value:"percentage",precision:0},l:{index:2,value:"percentage",precision:0},alpha:{index:3,value:[0,1],precision:3}},bridge:"rgb",toBridge:re,fromBridge:ke},hwb:{components:{h:{index:0,value:"hue",precision:0},w:{index:1,value:"percentage",precision:0},b:{index:2,value:"percentage",precision:0},alpha:{index:3,value:[0,1],precision:3}},bridge:"rgb",toBridge:Ee,fromBridge:Ae},lab:{targetGamut:null,components:{l:{index:0,value:"percentage",precision:5},a:{index:1,value:[-125,125],precision:5},b:{index:2,value:[-125,125],precision:5},alpha:{index:3,value:[0,1],precision:3}},bridge:"xyz-d50",toBridge:Ce,fromBridge:_e},lch:{targetGamut:null,components:{l:{index:0,value:"percentage",precision:5},c:{index:1,value:[0,150],precision:5},h:{index:2,value:"hue",precision:5},alpha:{index:3,value:[0,1],precision:3}},bridge:"lab",toBridge:$e,fromBridge:Le},oklab:{targetGamut:null,components:{l:{index:0,value:[0,1],precision:5},a:{index:1,value:[-.4,.4],precision:5},b:{index:2,value:[-.4,.4],precision:5},alpha:{index:3,value:[0,1],precision:3}},bridge:"xyz-d65",toBridge:Be,fromBridge:Ne},oklch:{targetGamut:null,components:{l:{index:0,value:[0,1],precision:5},c:{index:1,value:[0,.4],precision:5},h:{index:2,value:"hue",precision:5},alpha:{index:3,value:[0,1],precision:3}},bridge:"oklab",toBridge:Se,fromBridge:Ie},...Z};var tt=`
2
+ /* ==========================================================================
3
+ Core Color Types
4
+ ========================================================================== */
5
+ <color> = <color-base> | currentColor | <system-color> | <contrast-color()> | <device-cmyk()> | <light-dark-color>
6
+
7
+ <color-base> = <hex-color> | <color-function> | <named-color> | <color-mix()> | transparent
8
+
9
+ <color-function> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <alpha()> | <color()> | <custom-color-function>
10
+
11
+ /* ==========================================================================
12
+ RGB & RGBA Syntax
13
+ ========================================================================== */
14
+ <rgb()> = [ <legacy-rgb-syntax> | <modern-rgb-syntax> | <relative-rgb-syntax> ]
15
+ <rgba()> = [ <legacy-rgba-syntax> | <modern-rgba-syntax> | <relative-rgba-syntax> ]
16
+
17
+ <legacy-rgb-syntax> = rgb( <percentage>#{3} [ , <alpha-value> ]? ) | rgb( <number>#{3} [ , <alpha-value> ]? )
18
+ <legacy-rgba-syntax> = rgba( <percentage>#{3} [ , <alpha-value> ]? ) | rgba( <number>#{3} [ , <alpha-value> ]? )
19
+
20
+ <modern-rgb-syntax> = rgb( <rgb-absolute-component>{3} [ / <alpha-absolute-value> ]? )
21
+ <modern-rgba-syntax> = rgba( <rgb-absolute-component>{3} [ / <alpha-absolute-value> ]? )
22
+ <rgb-absolute-component> = <number> | <percentage> | none
23
+ <alpha-absolute-value> = <alpha-value> | none
24
+
25
+ <relative-rgb-syntax> = rgb( from <color> <rgb-relative-component>{3} [ / <rgb-relative-alpha> ]? )
26
+ <relative-rgba-syntax> = rgba( from <color> <rgb-relative-component>{3} [ / <rgb-relative-alpha> ]? )
27
+
28
+ /* ==========================================================================
29
+ HSL & HSLA Syntax
30
+ ========================================================================== */
31
+ <hsl()> = [ <legacy-hsl-syntax> | <modern-hsl-syntax> | <relative-hsl-syntax> ]
32
+ <hsla()> = [ <legacy-hsla-syntax> | <modern-hsla-syntax> | <relative-hsla-syntax> ]
33
+
34
+ <legacy-hsl-syntax> = hsl( <hue> , <percentage> , <percentage> [ , <alpha-value> ]? )
35
+ <legacy-hsla-syntax> = hsla( <hue> , <percentage> , <percentage> [ , <alpha-value> ]? )
36
+
37
+ <modern-hsl-syntax> = hsl( [ <hue> | none ] [ <percentage> | <number> | none ]{2} [ / <alpha-absolute-value> ]? )
38
+ <modern-hsla-syntax> = hsla( [ <hue> | none ] [ <percentage> | <number> | none ]{2} [ / <alpha-absolute-value> ]? )
39
+
40
+ <relative-hsl-syntax> = hsl( from <color> <hsl-relative-hue> <hsl-relative-component>{2} [ / <hsl-relative-alpha> ]? )
41
+ <relative-hsla-syntax> = hsla( from <color> <hsl-relative-hue> <hsl-relative-component>{2} [ / <hsl-relative-alpha> ]? )
42
+ <hsl-relative-hue> = <hue> | none | h | s | l | alpha
43
+ <hsl-relative-component> = <percentage> | <number> | none | h | s | l | alpha
44
+ <hsl-relative-alpha> = <alpha-value> | none | h | s | l | alpha
45
+
46
+ /* ==========================================================================
47
+ HWB Syntax
48
+ ========================================================================== */
49
+ <hwb()> = [ <absolute-hwb-syntax> | <relative-hwb-syntax> ]
50
+ <absolute-hwb-syntax> = hwb( [ <hue> | none ] [ <percentage> | <number> | none ]{2} [ / <alpha-absolute-value> ]? )
51
+ <relative-hwb-syntax> = hwb( from <color> <hwb-relative-hue> <hwb-relative-component>{2} [ / <hwb-relative-alpha> ]? )
52
+ <hwb-relative-hue> = <hue> | none | h | w | b | alpha
53
+ <hwb-relative-component> = <percentage> | <number> | none | h | w | b | alpha
54
+ <hwb-relative-alpha> = <alpha-value> | none | h | w | b | alpha
55
+
56
+ /* ==========================================================================
57
+ LAB & LCH Syntax
58
+ ========================================================================== */
59
+ <lab()> = [ <absolute-lab-syntax> | <relative-lab-syntax> ]
60
+ <absolute-lab-syntax> = lab( [ <percentage> | <number> | none ]{3} [ / <alpha-absolute-value> ]? )
61
+ <relative-lab-syntax> = lab( from <color> <lab-relative-component>{3} [ / <lab-relative-alpha> ]? )
62
+ <lab-relative-component> = <percentage> | <number> | none | l | a | b | alpha
63
+ <lab-relative-alpha> = <alpha-value> | none | l | a | b | alpha
64
+
65
+ <lch()> = [ <absolute-lch-syntax> | <relative-lch-syntax> ]
66
+ <absolute-lch-syntax> = lch( [ <percentage> | <number> | none ]{2} [ <hue> | none ] [ / <alpha-absolute-value> ]? )
67
+ <relative-lch-syntax> = lch( from <color> <lch-relative-component>{2} <lch-relative-hue> [ / <lch-relative-alpha> ]? )
68
+ <lch-relative-component> = <percentage> | <number> | none | l | c | h | alpha
69
+ <lch-relative-hue> = <hue> | none | l | c | h | alpha
70
+ <lch-relative-alpha> = <alpha-value> | none | l | c | h | alpha
71
+
72
+ /* ==========================================================================
73
+ OKLAB & OKLCH Syntax
74
+ ========================================================================== */
75
+ <oklab()> = [ <absolute-oklab-syntax> | <relative-oklab-syntax> ]
76
+ <absolute-oklab-syntax> = oklab( [ <percentage> | <number> | none ]{3} [ / <alpha-absolute-value> ]? )
77
+ <relative-oklab-syntax> = oklab( from <color> <oklab-relative-component>{3} [ / <oklab-relative-alpha> ]? )
78
+ <oklab-relative-component> = <percentage> | <number> | none | l | a | b | alpha
79
+ <oklab-relative-alpha> = <alpha-value> | none | l | a | b | alpha
80
+
81
+ <oklch()> = [ <absolute-oklch-syntax> | <relative-oklch-syntax> ]
82
+ <absolute-oklch-syntax> = oklch( [ <percentage> | <number> | none ]{2} [ <hue> | none ] [ / <alpha-absolute-value> ]? )
83
+ <relative-oklch-syntax> = oklch( from <color> <oklch-relative-component>{2} <oklch-relative-hue> [ / <oklch-relative-alpha> ]? )
84
+ <oklch-relative-component> = <percentage> | <number> | none | l | c | h | alpha
85
+ <oklch-relative-hue> = <hue> | none | l | c | h | alpha
86
+ <oklch-relative-alpha> = <alpha-value> | none | l | c | h | alpha
87
+
88
+ /* ==========================================================================
89
+ ALPHA Syntax
90
+ ========================================================================== */
91
+ <alpha()> = alpha( from <color> [ / [ <alpha-value> | none | alpha ] ]? )
92
+
93
+ /* ==========================================================================
94
+ COLOR Space Function Syntax
95
+ ========================================================================== */
96
+ <color()> = [ <absolute-color-syntax> | <relative-color-syntax> ]
97
+ <absolute-color-syntax> = color( [ <predefined-rgb> | <xyz-space> | <custom-color-space> ] [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )
98
+ <relative-color-syntax> = [ <relative-rgb-color-syntax> | <relative-xyz-color-syntax> | <relative-custom-color-syntax> ]
99
+
100
+ <relative-rgb-color-syntax> = color( from <color> <predefined-rgb> <rgb-relative-component>{3} [ / <rgb-relative-alpha> ]? )
101
+
102
+ <relative-xyz-color-syntax> = color( from <color> <xyz-space> <xyz-relative-component>{3} [ / <xyz-relative-alpha> ]? )
103
+ <xyz-relative-component> = <number> | <percentage> | none | x | y | z | alpha
104
+ <xyz-relative-alpha> = <alpha-value> | none | x | y | z | alpha
105
+
106
+ <predefined-rgb> = srgb | srgb-linear | display-p3 | a98-rgb | prophoto-rgb | rec2020
107
+ <xyz-space> = xyz | xyz-d50 | xyz-d65
108
+
109
+ <relative-custom-color-syntax> = %unregistered-sentinal-value%
110
+
111
+ /* ==========================================================================
112
+ Functional Utilities (Light/Dark, Contrast, CMYK, Mix)
113
+ ========================================================================== */
114
+ <light-dark-color> = light-dark( <color> , <color> )
115
+
116
+ <contrast-color()> = contrast-color( <color> )
117
+
118
+ <device-cmyk()> = <legacy-device-cmyk-syntax> | <modern-device-cmyk-syntax>
119
+ <legacy-device-cmyk-syntax> = device-cmyk( <number>#{4} )
120
+ <modern-device-cmyk-syntax> = device-cmyk( <cmyk-component>{4} [ / [ <alpha-value> | none ] ]? )
121
+ <cmyk-component> = <number> | <percentage> | none
122
+
123
+ <color-mix()> = color-mix( [ <color-interpolation-method> , ]? [ <color> && <percentage [0,100]>? ]# )
124
+ <color-interpolation-method> = in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? ]
125
+ <color-space> = <rectangular-color-space> | <polar-color-space>
126
+ <rectangular-color-space> = srgb | srgb-linear | display-p3 | display-p3-linear | a98-rgb | prophoto-rgb | rec2020 | lab | oklab | <xyz-space> | <custom-color-space> | <custom-rectangular-space>
127
+ <polar-color-space> = hsl | hwb | lch | oklch | <custom-polar-space>
128
+ <hue-interpolation-method> = [ shorter | longer | increasing | decreasing ] hue
129
+
130
+ <custom-color-function> = %unregistered-sentinel-value%
131
+ <custom-rectangular-space> = %unregistered-sentinel-value%
132
+ <custom-polar-space> = %unregistered-sentinel-value%
133
+
134
+ /* ==========================================================================
135
+ Shared Value Components
136
+ ========================================================================== */
137
+ <alpha-value> = <number> | <percentage>
138
+ <hue> = <number> | <angle>
139
+ <rgb-relative-component> = <number> | <percentage> | none | r | g | b | alpha
140
+ <rgb-relative-alpha> = <alpha-value> | none | r | g | b | alpha
141
+ <custom-color-space> = %unregistered-sentinel-value%
142
+ `,nt=/^<[^>]+>\s*=/,ot=/^(.*)#\{(\d+)\}$/,rt=/^(.*)\{(\d+)\}$/,at=/^<([^>\s]+)(?:\s+([^>]+))?>$/,st=/\[[^\]]+\]|[^\s]+/g,F=lt(tt);function ae(o,e){let n=o.length,t=e.length,r=new Array(n+t);for(let l=0;l<n;l++)r[l]=o[l];for(let l=0;l<t;l++)r[n+l]=e[l];return r}function it(o){if(!o?.value)return 0;let e=Array.isArray(o.value)?o.value[0]?.value:o.value;return parseFloat(e.trim())}function se(o){return o?o.type==="literal"?o.value:Array.isArray(o.value)?se(o.value[0]):"":""}function Te(o,e){let n=new Map,t=e?[e]:Object.keys(F);for(let r=0;r<t.length;r++){let l=t[r],a=V(l,o,0,F,n,null);for(let s=0;s<a.length;s++){let i=a[s];if(i.success&&i.nextIndex===o.length)return i.nodes[0]}}throw new Error("Invalid syntax")}function V(o,e,n,t,r,l,a){let s=`${o}:${n}:${l||""}:${a?a.join(","):""}`,i=r.get(s);if(i)return i;let c=e[n],h=ce[o];if(h){if(!c)return[];if(h(c,a)){let g=[{success:!0,nextIndex:n+1,nodes:[{type:o,value:c}]}];return r.set(s,g),g}return r.set(s,[]),[]}let u=t[o];if(!u)return r.set(s,[]),[];let d=D(u,e,n,t,r,l),p=new Array(d.length);for(let g=0;g<d.length;g++)p[g]={success:!0,nextIndex:d[g].nextIndex,nodes:[{type:o,value:d[g].nodes}]};return r.set(s,p),p}function D(o,e,n,t,r,l){switch(o.kind){case"literal":{let a=e[n];return!a||a!==o.value.toLowerCase()?[]:[{success:!0,nextIndex:n+1,nodes:[{type:a==="("||a===")"||a===","||a==="/"?"symbol":"literal",value:a}]}]}case"ref":{let a=e[n];if(!a)return[];if(l&&E[l]){let s=E[l].components[a];if(s&&s.value===o.name)return[{success:!0,nextIndex:n+1,nodes:[{type:o.name,value:a}]}]}return V(o.name,e,n,t,r,l,o.args)}case"choice":{let a=[];for(let s=0;s<o.nodes.length;s++){let i=D(o.nodes[s],e,n,t,r,l);for(let c=0;c<i.length;c++)a.push(i[c])}return a}case"sequence":{let a=[{success:!0,nextIndex:n,nodes:[]}];for(let s=0;s<o.nodes.length;s++){let i=o.nodes[s],c=[];for(let h=0;h<a.length;h++){let u=a[h],d=D(i,e,u.nextIndex,t,r,l);for(let p=0;p<d.length;p++)c.push({success:!0,nextIndex:d[p].nextIndex,nodes:ae(u.nodes,d[p].nodes)})}if(a=c,a.length===0)return[]}return a}case"optional":{let a=D(o.node,e,n,t,r,l),s=new Array(a.length+1);s[0]={success:!0,nextIndex:n,nodes:[]};for(let i=0;i<a.length;i++)s[i+1]=a[i];return s}case"repeat":{let a=[{success:!0,nextIndex:n,nodes:[]}];for(let s=0;s<o.min;s++){let i=[];for(let c=0;c<a.length;c++){let h=a[c],u=D(o.node,e,h.nextIndex,t,r,l);for(let d=0;d<u.length;d++)i.push({success:!0,nextIndex:u[d].nextIndex,nodes:ae(h.nodes,u[d].nodes)})}if(a=i,a.length===0)return[]}return a}case"permutation":{let a=o.nodes.length,s=(1<<a)-1,i=[{nextIndex:n,nodes:[],remainingMask:s}],c=[];for(;i.length>0;){let h=[];for(let u=0;u<i.length;u++){let d=i[u],p=!0;for(let g=0;g<a;g++)if((d.remainingMask&1<<g)!==0&&o.nodes[g].kind!=="optional"){p=!1;break}p&&c.push({success:!0,nextIndex:d.nextIndex,nodes:d.nodes});for(let g=0;g<a;g++)if((d.remainingMask&1<<g)!==0){let f=o.nodes[g],m=f.kind==="optional"?f.node:f,y=D(m,e,d.nextIndex,t,r,l),b=d.remainingMask&~(1<<g);for(let v=0;v<y.length;v++)h.push({nextIndex:y[v].nextIndex,nodes:ae(d.nodes,y[v].nodes),remainingMask:b})}}i=h}return c}case"hashList":{let a=D(o.node,e,n,t,r,l),s=[];for(;a.length>0;){let i=[];for(let c=0;c<a.length;c++){let h=a[c];s.push(h);let u=h.nextIndex;if(u<e.length&&e[u]===","){let d={type:"symbol",value:","},p=D(o.node,e,u+1,t,r,l);for(let g=0;g<p.length;g++){let f=p[g];if(f.nextIndex>u){let m=new Array(h.nodes.length+1+f.nodes.length),y=0;for(let b=0;b<h.nodes.length;b++)m[y++]=h.nodes[b];m[y++]=d;for(let b=0;b<f.nodes.length;b++)m[y++]=f.nodes[b];i.push({success:!0,nextIndex:f.nextIndex,nodes:m})}}}}a=i}return s}}}function ue(o){let e=o.toLowerCase(),n=[],t=0;for(;t<e.length;){if(e.slice(t,t+2)==="/*"){let a=e.indexOf("*/",t+2);a!==-1?t=a+2:t=e.length;continue}let r=e[t];if(/\s/.test(r)){t++;continue}if(e.slice(t,t+5)==="calc("){let a=t,s=0;for(;t<e.length;){if(e[t]==="(")s++;else if(e[t]===")"&&(s--,s===0)){t++;break}t++}n.push(e.slice(a,t));continue}if("(),/".includes(r)){n.push(r),t++;continue}let l=t;for(;t<e.length&&!/\s/.test(e[t])&&!"(),/".includes(e[t]);)t++;n.push(e.slice(l,t))}return n}function lt(o){let e={},n=o.replace(/\/\*[\s\S]*?\*\//g,"").split(`
143
+ `),t="",r="";for(let l=0;l<n.length;l++){let a=n[l].trim();if(a)if(nt.test(a)){t&&(e[t]=ee(r));let s=a.indexOf("=");t=a.slice(0,s).trim(),r=a.slice(s+1).trim()}else t&&(r+=" "+a)}return t&&(e[t]=ee(r)),e}function ee(o){let e=Ge(o,"|");return e.length>1?{kind:"choice",nodes:e.map(je)}:je(o)}function Ge(o,e){let n=[],t=0,r=0,l=e.length,a=o.length;for(let i=0;i<a;i++){let c=o.charCodeAt(i);if(c===91||c===40)t++;else if(c===93||c===41)t--;else if(t===0&&o.startsWith(e,i)){let h=o.slice(r,i).trim();h&&n.push(h),i+=l-1,r=i+1}}let s=o.slice(r).trim();return s&&n.push(s),n}function ct(o){let e=[],n=0,t=o.length;for(;n<t;){let r=o.charCodeAt(n);if(r===32||r===9||r===10||r===13){n++;continue}if(r===40||r===41||r===44||r===47||r===124){e.push(o[n]),n++;continue}let l=n;if(r===60){for(;n<t&&o.charCodeAt(n)!==62;)n++;for(n++;n<t;){let a=o.charCodeAt(n);if(a===32||a===9||a===10||a===13||a===40||a===41||a===44||a===47||a===124)break;n++}e.push(o.slice(l,n));continue}if(r===91){let a=1;for(n++;n<t&&a>0;){let s=o.charCodeAt(n);s===91?a++:s===93&&a--,n++}for(;n<t;){let s=o.charCodeAt(n);if(s===32||s===9||s===10||s===13||s===40||s===41||s===44||s===47||s===124)break;n++}e.push(o.slice(l,n));continue}for(;n<t;){let a=o.charCodeAt(n);if(a===32||a===9||a===10||a===13||a===40||a===41||a===44||a===47||a===124)break;n++}e.push(o.slice(l,n))}return e}function je(o){let e=Ge(o,"&&");return e.length>1?{kind:"permutation",nodes:e.map(Re)}:Re(o)}function Re(o){return{kind:"sequence",nodes:ct(o).map(U)}}function U(o){o=o.trim();let e=o.length;if(e===1){let a=o.charCodeAt(0);if(a===40||a===41||a===44||a===47)return{kind:"literal",value:o}}let n=o.charCodeAt(e-1);if(n===35&&o.indexOf("{")===-1)return{kind:"hashList",node:U(o.slice(0,-1))};if(n===63)return{kind:"optional",node:U(o.slice(0,-1))};let t=ot.exec(o);if(t){let a=U(t[1]),s=Number(t[2]),i={kind:"literal",value:","},c=[];for(let h=0;h<s;h++)c.push(a),h<s-1&&c.push(i);return{kind:"sequence",nodes:c}}let r=rt.exec(o);if(r){let a=Number(r[2]);return{kind:"repeat",node:U(r[1]),min:a,max:a}}let l=o.charCodeAt(0);if(l===91&&n===93)return ee(o.slice(1,-1));if(l===60&&n===62){let a=at.exec(o);if(a){let s;if(a[2]){let i=a[2].match(st);i&&(s=i.map(c=>c.trim()))}return{kind:"ref",name:`<${a[1]}>`,args:s}}return{kind:"ref",name:o}}return{kind:"literal",value:o}}var{PI:ie,E:ut,pow:ht,sqrt:pt,sin:ft,cos:dt,tan:mt,asin:gt,acos:yt,atan:bt,atan2:xt,exp:vt,log:wt,log10:Mt,log2:kt,abs:Et,min:At,max:Ct,hypot:_t,round:$t,ceil:Lt,floor:Bt,sign:Nt,trunc:St,random:It}=Math,jt={pi:ie,e:ut,tau:ie*2,pow:ht,sqrt:pt,sin:ft,cos:dt,tan:mt,asin:gt,acos:yt,atan:bt,atan2:xt,exp:vt,log:wt,log10:Mt,log2:kt,abs:Et,min:At,max:Ct,hypot:_t,round:$t,ceil:Lt,floor:Bt,sign:Nt,trunc:St,random:It};function ze(o){return typeof o=="string"?o:o.type==="<percentage>"?String(o.value||""):Array.isArray(o.value)?ze(o.value[0]):String(o.value||"")}function De(o,e,n,t){let r=parseFloat(o);if(isNaN(r))throw new Error(`Invalid percentage: '${o}'.`);return e==="percentage"?r:n<0&&t>0?r/100*(t-n)/2:r/100*(t-n)+n}function Fe(o){let e=parseFloat(o);if(isNaN(e))throw new Error(`Invalid hue: '${o}'.`);return o[o.length-1]==="deg"?e:o[o.length-1]==="rad"?e*(180/ie):o[o.length-1]==="grad"?e*.9:o[o.length-1]==="turn"?e*360:e}function Rt(o,e,n,t,r){if(o==="infinity")return 1/0;if(o==="-infinity")return-1/0;if(o==="nan")return NaN;let l=1,a=2,s=4,i=p=>p===s?"angle":p===a?"percent":"number",c=p=>{let g=[];for(let f=0;f<p.length;){let m=p[f];if(/\s/.test(m)){f++;continue}if(p.slice(f,f+2)==="**"){g.push({type:"operator",value:"**"}),f+=2;continue}if(/[0-9]/.test(m)||m==="."&&/[0-9]/.test(p[f+1]||"")){let y="";for(;f<p.length&&/[0-9.]/.test(p[f]);)y+=p[f++];if(f<p.length&&/[eE]/.test(p[f]))for(y+=p[f++],/[+-]/.test(p[f])&&(y+=p[f++]);f<p.length&&/[0-9]/.test(p[f]);)y+=p[f++];let b=l,v="";p[f]==="%"?(b=a,v="%",f++):p.slice(f,f+3)==="deg"?(b=s,v="deg",f+=3):p.slice(f,f+3)==="rad"?(b=s,v="rad",f+=3):p.slice(f,f+4)==="grad"?(b=s,v="grad",f+=4):p.slice(f,f+4)==="turn"&&(b=s,v="turn",f+=4);let x=parseFloat(y);b===a?x=De(y+v,e,t,r):b===s&&(x=Fe(y+v)),g.push({type:"number",value:x,unit:b});continue}if(/[a-zA-Z_]/.test(m)){let y="";for(;f<p.length&&/[a-zA-Z0-9_]/.test(p[f]);)y+=p[f++];g.push({type:"identifier",value:y});continue}if("+-*/%(),".includes(m)){g.push({type:"operator",value:m}),f++;continue}throw new Error(`Unexpected character: ${m}`)}return g},h=p=>{let g=0,f=()=>g<p.length?p[g]:null,m=()=>{if(g>=p.length)throw new Error("Unexpected end of input");return p[g++]},y=w=>{let B=f();if(!B||B.value!==w)throw new Error(`Expected "${w}" but got "${B?B.value:"end of input"}"`);m()},b=()=>{let w=f();if(!w)throw new Error("Unexpected end of input");if(w.type==="number")return m(),{type:"number",value:w.value,unit:w.unit};if(w.type==="identifier"){if(m(),f()&&f().value==="("){m();let B=[];if(f()&&f().value!==")")for(B.push(k());f()&&f().value===",";)m(),B.push(k());return y(")"),{type:"call",func:w.value,args:B}}return{type:"var",name:w.value}}if(w.value==="("){m();let B=k();return y(")"),B}throw new Error(`Unexpected token: ${w.value}`)},v=()=>f()&&(f().value==="+"||f().value==="-")?{type:"unary",op:m().value,arg:v()}:b(),x=()=>{let w=v();for(;f()&&f().value==="**";)w={type:"binary",op:m().value,left:w,right:v()};return w},C=()=>{let w=x();for(;f()&&["*","/","%"].includes(String(f().value));)w={type:"binary",op:m().value,left:w,right:x()};return w},k=()=>{let w=C();for(;f()&&(f().value==="+"||f().value==="-");)w={type:"binary",op:m().value,left:w,right:C()};return w},$=k();if(g<p.length)throw new Error(`Extra tokens after expression: ${p.slice(g).map(w=>w.value).join(" ")}`);return $},u=(p,g)=>{switch(p.type){case"number":return{value:p.value,unit:p.unit};case"var":{let f=g[p.name];if(f===void 0)throw new Error(`Unknown variable: ${p.name}`);if(typeof f=="function")throw new Error(`Expected variable but found function: ${p.name}`);return{value:f,unit:l}}case"binary":{let f=u(p.left,g),m=u(p.right,g);switch(p.op){case"+":case"-":{let y=p.op==="+"?f.value+m.value:f.value-m.value,b=f.unit|m.unit;if(f.unit===m.unit)return{value:y,unit:f.unit};if(b===5)return{value:y,unit:s};throw new Error(`Cannot ${p.op} mismatched units: ${i(f.unit)} and ${i(m.unit)}`)}case"*":{let y=f.value*m.value;if(f.unit===l)return{value:y,unit:m.unit};if(m.unit===l)return{value:y,unit:f.unit};throw new Error(`Cannot multiply units: ${i(f.unit)} and ${i(m.unit)}`)}case"/":{if(m.unit===l)return{value:f.value/m.value,unit:f.unit};if(f.unit===m.unit)return{value:f.value/m.value,unit:l};throw new Error(`Cannot divide units: ${i(f.unit)} by ${i(m.unit)}`)}case"%":{if(m.unit===l)return{value:f.value%m.value,unit:f.unit};if(f.unit===m.unit)return{value:f.value%m.value,unit:f.unit};throw new Error(`Cannot modulo units: ${i(f.unit)} by ${i(m.unit)}`)}case"**":{if(m.unit!==l)throw new Error(`Exponent must be a number, got ${i(m.unit)}`);return{value:f.value**m.value,unit:f.unit}}default:throw new Error(`Unknown binary operator: ${p.op}`)}}case"unary":{let f=u(p.arg,g);switch(p.op){case"+":return{value:+f.value,unit:f.unit};case"-":return{value:-f.value,unit:f.unit};default:throw new Error(`Unknown unary operator: ${p.op}`)}}case"call":{let f=g[p.func];if(typeof f!="function")throw new Error(`Unknown function: ${p.func}`);let m=p.args.map(x=>u(x,g)),y=m.map(x=>x.value),b=f(...y);if(["min","max","round","ceil","floor","abs","sign","trunc"].includes(p.func)){let x=0;for(let k=0;k<m.length;k++)x|=m[k].unit;if((x&6)===6)throw new Error(`Function ${p.func} cannot mix angle and percent`);if((x&3)===3)throw new Error(`Function ${p.func} cannot mix number and percent`);let C=x&s?s:x&a?a:l;return{value:b,unit:C}}return{value:b,unit:l}}default:throw new Error(`Unknown AST node type: ${p.type}`)}},d=Object.assign({},jt,n);return u(h(c(o)),d).value}function A(o,e,n={}){if(!o)return NaN;let t=ze(o);return le(t,e,n)}function le(o,e,n={}){let t=o.trim();if(t==="none")return NaN;if(t in n)return n[t];let[r,l]=Array.isArray(e)?e:e==="percentage"?[0,100]:[0,1];if(/^-?(?:\d+|\d*\.\d+)$/.test(t))return parseFloat(t);if(t[t.length-1]==="%"&&/^-?(?:\d+|\d*\.\d+)%$/.test(t))return De(t,e,r,l);if(/^-?(?:\d+|\d*\.\d+)(deg|rad|grad|turn)$/.test(t))return Fe(t);if(t.slice(0,5)==="calc("&&t[t.length-1]===")")return Rt(t.slice(5,-1).trim(),e,n,r,l);throw new Error(`Unable to parse component token: ${t}`)}function Q(o,e){return n=>{let t=n.value,r=E[o].components,l=A(t[2],r[e[0]].value),a=A(t[4],r[e[1]].value),s=A(t[6],r[e[2]].value),i=1;return t[7]?.type==="symbol"&&t[7]?.value===","&&(i=A(t[8],[0,1])),{model:o,coords:[l,a,s,i]}}}function G(o,e){return n=>{let t=n.value,r=E[o].components,l=A(t[2],r[e[0]].value),a=A(t[3],r[e[1]].value),s=A(t[4],r[e[2]].value),i=1;return t[5]?.type==="symbol"&&t[5]?.value==="/"&&(i=A(t[6],[0,1])),{model:o,coords:[l,a,s,i]}}}function z(o,e){return n=>{let t=n.value,r=E[o].components,l=t[3],a=_(l),i=new M(a.model,a.coords).in(o).toObject({fit:"none",precision:null}),c=A(t[4],r[e[0]].value,i),h=A(t[5],r[e[1]].value,i),u=A(t[6],r[e[2]].value,i),d=1;return t[7]?.type==="symbol"&&t[7]?.value==="/"&&(d=A(t[8],[0,1],i)),{model:o,coords:[c,h,u,d]}}}function Oe(o){let e=o.value,{model:n,coords:t}=_(e[3]),r=e[4],l=Array.isArray(r.value)?r.value[0]?.value:r.value,s=new M(n,t).in(l).toObject({fit:"none",precision:null}),i=A(e[5],[0,1],s),c=A(e[6],[0,1],s),h=A(e[7],[0,1],s),u=1;return e[8]?.type==="symbol"&&e[8]?.value==="/"&&(u=A(e[9],[0,1],s)),{model:l,coords:[i,c,h,u]}}var ce=(()=>{let o=/^-?(?:\d+(?:\.\d+)?|\.\d+)$/,e=/^-?(?:\d+(?:\.\d+)?|\.\d+)%$/,n=/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:deg|rad|turn|grad)$/,t=/^\[([^,]+),([^\]]+)\]$/,r=new Set(Object.keys(q).map(i=>i.toLowerCase())),l=new Map,a=i=>{if(i){for(let c=0;c<i.length;c++)if(t.test(i[c]))return i[c]}},s=(i,c)=>{let h=l.get(c);if(!h){let u=c.match(t);h={min:u[1].trim()==="-INF"?-1/0:parseFloat(u[1]),max:u[2].trim()==="INF"||u[2].trim()==="+INF"?1/0:parseFloat(u[2])},l.set(c,h)}return!(h.min!==-1/0&&i<h.min||h.max!==1/0&&i>h.max)};return{"<named-color>":i=>Object.hasOwn(J,i),"<system-color>":i=>r.has(i),"<hex-color>":i=>i[0]==="#"&&(i.length===4||i.length===5||i.length===7||i.length===9)&&/^[0-9a-fA-F]+$/.test(i.slice(1)),"<number>":(i,c)=>{if(i.startsWith("calc(")&&i.endsWith(")"))return!0;if(!o.test(i))return!1;if(c!==void 0){let h=a(c);if(h)return s(parseFloat(i),h)}return!0},"<percentage>":(i,c)=>{if(i.startsWith("calc(")&&i.endsWith(")"))return!0;if(!e.test(i))return!1;if(c!==void 0){let h=a(c);if(h)return s(parseFloat(i),h)}return!0},"<angle>":(i,c)=>{if(i.startsWith("calc(")&&i.endsWith(")"))return!0;if(!n.test(i))return!1;if(c!==void 0){let h=a(c);if(h)return s(parseFloat(i),h)}return!0}}})(),Ot={"<color>":o=>{let e=o.value[0],{type:n,value:t}=e;if(n==="literal"){if(t==="currentcolor")return{model:"rgb",coords:[0,0,0,1]};throw new Error(`Unknown <color>: ${t}`)}return _(e)},"<color-base>":o=>{let e=o.value[0],{type:n,value:t}=e;if(n==="literal"){if(t==="transparent")return{model:"rgb",coords:[0,0,0,0]};throw new Error(`Unknown <color-base>: ${t}`)}return _(e)},"<named-color>":o=>{let{value:e}=o,n=J[e];if(!n)throw new Error(`Unknown <named-color>: ${e}`);return{model:"rgb",coords:[...n,1]}},"<system-color>":o=>{let{value:e}=o,n=N.theme==="light"?0:1,t=Object.keys(q).find(l=>l.toLowerCase()===e),r=q[t][n];if(!r)throw new Error(`Unknown <system-color>: ${e}`);return{model:"rgb",coords:[...r,1]}},"<contrast-color()>":o=>{let e=o.value[2],{model:n,coords:t}=_(e),[,r]=new M(n,t).in("xyz-d65").coords;return{model:"rgb",coords:r>.5?[0,0,0,1]:[255,255,255,1]}},"<light-dark-color>":o=>{let e=o.value,n=e[2],t=e[4],{model:r,coords:l}=_(N?.theme==="light"?n:t),{coords:a}=new M(r,l).in("rgb");return{model:"rgb",coords:a}},"<hex-color>":o=>{let e=o.value,n=e.length,t=0,r=0,l=0,a=1;if(n===4||n===5){let s=e.charCodeAt(1),i=e.charCodeAt(2),c=e.charCodeAt(3),h=s>64?(s&7)+9:s&15,u=i>64?(i&7)+9:i&15,d=c>64?(c&7)+9:c&15;if(t=h<<4|h,r=u<<4|u,l=d<<4|d,n===5){let p=e.charCodeAt(4),g=p>64?(p&7)+9:p&15;a=(g<<4|g)/255}}else{let s=parseInt(e.slice(1),16);n===7?(t=s>>16&255,r=s>>8&255,l=s&255):n===9&&(t=s>>24&255,r=s>>16&255,l=s>>8&255,a=(s&255)/255)}return{model:"rgb",coords:[t,r,l,a]}},"<device-cmyk()>":o=>_(o.value[0]),"<legacy-device-cmyk-syntax>":o=>{let e=o.value,[n,t,r,l]=[e[2],e[4],e[6],e[8]].map(it);return{model:"rgb",coords:[(1-(n*(1-l)+l))*255,(1-(t*(1-l)+l))*255,(1-(r*(1-l)+l))*255,1]}},"<modern-device-cmyk-syntax>":o=>{let e=o.value,n=A(e[2],[0,1]),t=A(e[3],[0,1]),r=A(e[4],[0,1]),l=A(e[5],[0,1]),a=e.find((p,g)=>g===7&&(p.type==="<alpha-value>"||p.type==="literal"&&p.value==="none")),s=a?A(a,[0,1]):1,i=S(n,[0,1]),c=S(t,[0,1]),h=S(r,[0,1]),u=S(l,[0,1]),d=isNaN(s)?s:Math.max(0,Math.min(1,s));return{model:"rgb",coords:[(1-(i*(1-u)+u))*255,(1-(c*(1-u)+u))*255,(1-(h*(1-u)+u))*255,d]}},"<color-mix()>":o=>{let e="oklab",n="shorter",t=o.value,r=2;if(t[r]?.type==="<color-interpolation-method>"){let s=t[r].value;r++,s[1]&&(e=se(s[1])),s[2]&&s[2].type!=="symbol"&&(n=se(s[2]))}let l=[];for(;r<t.length;){let s=t[r];if(s.type==="symbol"&&(s.value===","||s.value===")")){r++;continue}let i,c;if(s.type==="<percentage>"){let u=String(s.value||"");i=le(u,"percentage"),r++,c=t[r]}else{c=s;let u=t[r+1];if(u?.type==="<percentage>"){let d=String(u.value||"");i=le(d,"percentage"),r++}}let h=c?_(c):null;if(h&&h.coords){r++,l.push({color:new M(h.model,h.coords),percentage:i});continue}r++}if(l.length===0)throw new Error("color-mix() must contain at least one color component.");let a=M.mix(l,{in:e,hue:n});return{model:a.model,coords:a.coords}},"<color-function>":o=>_(o.value[0]),"<custom-color-function>":o=>_(o.value[0]),"<rgb()>":o=>_(o.value[0]),"<rgba()>":o=>_(o.value[0]),"<hsl()>":o=>_(o.value[0]),"<hsla()>":o=>_(o.value[0]),"<hwb()>":o=>_(o.value[0]),"<lab()>":o=>_(o.value[0]),"<lch()>":o=>_(o.value[0]),"<oklab()>":o=>_(o.value[0]),"<oklch()>":o=>_(o.value[0]),"<legacy-rgb-syntax>":Q("rgb",["r","g","b"]),"<legacy-rgba-syntax>":Q("rgb",["r","g","b"]),"<legacy-hsl-syntax>":Q("hsl",["h","s","l"]),"<legacy-hsla-syntax>":Q("hsl",["h","s","l"]),"<modern-rgb-syntax>":G("rgb",["r","g","b"]),"<modern-rgba-syntax>":G("rgb",["r","g","b"]),"<modern-hsl-syntax>":G("hsl",["h","s","l"]),"<modern-hsla-syntax>":G("hsl",["h","s","l"]),"<absolute-hwb-syntax>":G("hwb",["h","w","b"]),"<absolute-lab-syntax>":G("lab",["l","a","b"]),"<absolute-lch-syntax>":G("lch",["l","c","h"]),"<absolute-oklab-syntax>":G("oklab",["l","a","b"]),"<absolute-oklch-syntax>":G("oklch",["l","c","h"]),"<relative-rgb-syntax>":z("rgb",["r","g","b"]),"<relative-rgba-syntax>":z("rgb",["r","g","b"]),"<relative-hsl-syntax>":z("hsl",["h","s","l"]),"<relative-hsla-syntax>":z("hsl",["h","s","l"]),"<relative-hwb-syntax>":z("hwb",["h","w","b"]),"<relative-lab-syntax>":z("lab",["l","a","b"]),"<relative-lch-syntax>":z("lch",["l","c","h"]),"<relative-oklab-syntax>":z("oklab",["l","a","b"]),"<relative-oklch-syntax>":z("oklch",["l","c","h"]),"<alpha()>":o=>{let e=o.value,n=e[3],t=_(n);if(!t)throw new Error("Missing or invalid origin color in alpha() function");let l=new M(t.model,t.coords).toObject({fit:"none",precision:null}),a=e.find((i,c)=>i.type==="<alpha-value>"||c===5&&i.type==="literal"&&i.value==="none"),s=a?A(a,[0,1],l):t.coords[3];return{model:t.model,coords:[...t.coords.slice(0,3),s]}},"<color()>":o=>_(o.value[0]),"<relative-color-syntax>":o=>_(o.value[0]),"<absolute-color-syntax>":o=>{let e=o.value,n=e[2],t=Array.isArray(n.value)?n.value[0]?.value:n.value,r=A(e[3],[0,1]),l=A(e[4],[0,1]),a=A(e[5],[0,1]),s=e.find((c,h)=>h>5&&(c.type==="<alpha-value>"||c.type==="literal"&&c.value==="none")),i=s?A(s,[0,1]):1;return{model:t,coords:[r,l,a,i]}},"<relative-rgb-color-syntax>":Oe,"<relative-xyz-color-syntax>":Oe,"<relative-custom-color-syntax>":o=>_(o.value[0])},he=(()=>{let o=(()=>{let e={};for(let n of Object.keys(E)){let{bridge:t,fromBridge:r,supportsLegacy:l,components:a,alphaVariant:s}=E[n];e[n]={bridge:t,fromBridge:i=>[...r(i),i[3]??1],format:([i,c,h,u=1],d={})=>{let{legacy:p=!1,fit:g=N.defaults.fit,precision:f,units:m=!1}=d,b=[...O([i,c,h],n,{method:g,precision:f}),u].map((C,k)=>{let $=S(C,Object.values(a)[k].value);if((m||p)&&a){let w=Object.values(a).find(B=>B.index===k);if(w?.value==="percentage")return`${$}%`;if(w?.value==="hue"&&m)return`${$}deg`}return $.toString()}),v=b.slice(0,3),x=b[3];return n in Z?`color(${n} ${v.join(" ")}${u!==1?` / ${x}`:""})`:p&&l?u===1?`${n}(${v.join(", ")})`:`${s||n}(${v.join(", ")}, ${x})`:`${n}(${v.join(" ")}${u!==1?` / ${x}`:""})`}}}return e})();return{...o,"hex-color":{bridge:"rgb",fromBridge:e=>e,format:([e,n,t,r=1])=>{let l=s=>s.toString(16).padStart(2,"0");return`#${[e,n,t].map(s=>l(Math.round(Math.max(0,Math.min(255,s))))).join("")}${r<1?l(Math.round(r*255)):""}`}},"named-color":{bridge:"rgb",fromBridge:e=>e,format:e=>{let[n,t,r]=e.map((l,a)=>a<3?Math.round(Math.min(255,Math.max(0,l))):l);for(let[l,[a,s,i]]of Object.entries(J))if(n===a&&t===s&&r===i)return l}},"device-cmyk":{bridge:"rgb",fromBridge:e=>e,format:([e,n,t,r=1],l={})=>{let{legacy:a=!1,precision:s=3,fit:i=N.defaults.fit}=l,[c,h,u]=O([e,n,t],"rgb",{method:i}),d=c/255,p=h/255,g=u/255,f=1-Math.max(d,p,g),m=$=>Number(s===null?$:$.toFixed(s)).toString(),y=m(f===1?0:(1-d-f)/(1-f)),b=m(f===1?0:(1-p-f)/(1-f)),v=m(f===1?0:(1-g-f)/(1-f)),x=m(f),C=Number(r.toFixed(3)).toString();if(a)return`device-cmyk(${y}, ${b}, ${v}, ${x}${r<1?`, ${C}`:""})`;let k=o.rgb.format?.([c,h,u,r],l);return`device-cmyk(${y} ${b} ${v} ${x}${r<1?` / ${C}`:""}, ${k})`}}}})();function _(o){let e=Ot[o.type];if(!e)throw new Error(`No parser for rule: ${o.type}`);return e(o)}function Xe(o,e){let n=o.replace(/[A-Z]/g,a=>String.fromCharCode(a.charCodeAt(0)+32)),t=ue(n),r=new Map;if(e){if(F[e])return V(e,t,0,F,r,null).some(s=>s.success&&s.nextIndex===t.length);if(ce[e])return V(e,t,0,F,r,null).some(s=>s.success&&s.nextIndex===t.length);try{let a=ee(e);return D(a,t,0,F,r,null).some(i=>i.success&&i.nextIndex===t.length)}catch(a){throw new Error(`Failed to resolve rule or parse inline expression: "${e}"`,{cause:a})}}let l=new Set([...Object.keys(F),...Object.keys(ce)]);for(let a of l)if(V(a,t,0,F,r,null).some(c=>c.success&&c.nextIndex===t.length))return!0;return!1}var M=class o{model;coords;constructor(e,n=[0,0,0,0]){if(!(e in E))throw new Error(`Unsupported color model: '${e}'`);if([3,4].includes(n.length)===!1)throw new Error("Coordinates array must have 3 or 4 elements.");let t=n.slice();t.length===3&&t.push(1),this.model=e,this.coords=t}static from(e){let n=ue(e),t=Te(n);try{let{model:r,coords:l}=_(t);return new o(r,l)}catch(r){throw new Error(`Failed to parse color string '${e}'`,{cause:r})}}static isValid(e,n={}){let{rule:t}=n;try{return Xe(e,t)&&!!o.from(e)}catch{return!1}}static random(e={}){let n=Object.keys(E),t=e.model??n[Math.floor(Math.random()*n.length)],{components:r}=E[t],l=new Set(Object.keys(r));for(let s of["limits","bias","base","deviation"]){let i=e[s];if(i){for(let c of Object.keys(i))if(!l.has(c))throw new Error(`Invalid component "${c}" for model "${t}". Valid components: ${[...l].join(", ")}`)}}let a=[];for(let[s,i]of Object.entries(r)){let c=e.base?.[s],h=e.deviation?.[s],u;if(c!=null&&h!=null){let d=Math.random()||1e-9,p=Math.random()||1e-9;u=c+Math.sqrt(-2*Math.log(d))*Math.cos(2*Math.PI*p)*h}else{let[d,p]=i.value==="hue"?[0,360]:i.value==="percentage"?[0,100]:i.value,g=e.limits?.[s];if(g){let[y,b]=g;d=Math.max(d,y),p=Math.min(p,b)}let f=Math.random(),m=e.bias?.[s];m&&(f=m(f)),u=d+f*(p-d)}if(i.value==="hue")u=(u%360+360)%360;else if(i.value==="percentage")u=Math.min(100,Math.max(0,u));else if(Array.isArray(i.value)){let[d,p]=i.value;u=Math.min(p,Math.max(d,u))}else throw new Error(`Invalid component value definition for "${s}".`);a[i.index]=u}return new o(t,a)}static mix(e,n){let{in:t="oklab",hue:r="shorter"}=n;if(!e||e.length===0)throw new Error("At least one color must be provided in the colors array.");if(e.length===1)return e[0].color.in(t);let l=e.map(u=>u.percentage!==void 0?u.percentage/100:void 0),a=l.reduce((u,d)=>u+(d||0),0),s=l.filter(u=>u===void 0).length,i=1;if(l.length>0&&l.every(u=>u===0)){i=0;for(let u=0;u<l.length;u++)l[u]=1/l.length}else s===0&&a<1&&(i=a);if(i>0){if(s>0){let d=Math.max(0,1-a)/s;for(let p=0;p<l.length;p++)l[p]===void 0&&(l[p]=d)}else if(a>0&&a!==1)for(let u=0;u<l.length;u++)l[u]=l[u]/a}let c=e[0].color.in(t),h=l[0];for(let u=1;u<e.length;u++){let d=l[u];h+=d;let p=h===0?0:d/h;c=ve(c,e[u].color.in(t),p,t,r)}if(i!==1){let u=[...c.coords];return u[3]=(u[3]??1)*i,new o(t,u)}return c}to(e,n={}){let t=e.toLowerCase(),{legacy:r=!1,fit:l=N.defaults.fit,precision:a,units:s=!1}=n,i=he[t];if(!i)throw new Error(`Unsupported color type: '${t}'.`);let{fromBridge:c,bridge:h,format:u}=i;if(!c||!u)throw new Error(`Invalid output type: '${t}'.`);let d=p=>u(p,{legacy:r,fit:l,precision:a,units:s});return t===this.model?d(this.coords):t in E?d(this.in(t).toArray({fit:"none",precision:null})):d(c(this.in(h).toArray({fit:"none",precision:null})))}in(e){let n=this.model,t=e.trim().toLowerCase();if(t===n)return new o(t,[...this.coords]);let r=X.get("graph"),l=X.get("paths");if(!r){r={};for(let[c,h]of Object.entries(E)){let{bridge:u}=h;r[c]=[...r[c]||[],u],r[u]=[...r[u]||[],c]}X.set("graph",r)}l||(l=new Map,X.set("paths",l));let a=`${n}-${t}`;if(!l.has(a)){let c=[n],h={[n]:null};for(let d=0;d<c.length;d++){let p=c[d];if(p===t)break;for(let g of r[p]||[])g in h||(h[g]=p,c.push(g))}let u=[];for(let d=t;d;d=h[d])u.push(d);if(u.reverse(),!u.length||u[0]!==n)throw new Error(`Cannot convert from ${n} to ${t}. No path found.`);l.set(a,u)}let s=[...this.coords.map(c=>isNaN(c)?0:c)],i=l.get(a);for(let c=0;c<i.length-1;c++){let h=i[c],u=i[c+1],d=E[h],p=E[u];if(d.toBridge&&d.bridge===u)s=d.toBridge(s);else if(p.fromBridge&&p.bridge===h)s=p.fromBridge(s);else throw new Error(`No conversion found between ${h} and ${u}.`)}return new o(t,[...s.slice(0,3),this.coords[3]??1])}toString(e={}){let{format:n}=he[this.model],{legacy:t=!1,fit:r=N.defaults.fit,precision:l,units:a=!1}=e;return n?.(this.coords,{legacy:t,fit:r,precision:l,units:a})}toObject(e={}){let n=this.toArray(e),{components:t}=E[this.model];if(!t)throw new Error(`Model ${this.model} does not have defined components.`);let r={};for(let[l,{index:a}]of Object.entries(t))r[l]=n[a];return r}toArray(e={}){let{fit:n=N.defaults.fit,precision:t}=e,{model:r,coords:l}=this,{components:a}=E[r];if(!a)throw new Error(`Model ${r} does not have defined components.`);let s=l.slice(0,3).map((c,h)=>S(c,Object.values(a)[h].value));return[...O(s,r,{method:n,precision:t}),l[3]]}with(e){let{model:n}=this,t=this.coords.slice(),{components:r}=E[n],l=Object.keys(r),a=Object.values(r),s=typeof e=="function"?e(Object.fromEntries(l.map(c=>{let h=r[c];return[c,S(t[h.index],h.value)]}))):e;if(Array.isArray(s)){let c=t.map((h,u)=>{let d=s[u];if(typeof d!="number")return h;let p=a.find(g=>g.index===u);return S(d,p.value)});return new o(n,[...c.slice(0,3),t[3]??1])}let i=[...t];for(let c of l){if(!(c in s))continue;let{index:h,value:u}=r[c],d=s[c],p=S(t[h],u),g=typeof d=="function"?S(d(p),u):typeof d=="number"?S(d,u):t[h];i[h]=g}return new o(n,[...i.slice(0,3),i[3]??t[3]])}fit(e={}){let{fit:n=N.defaults.fit,precision:t}=e,r=this.toArray({fit:n,precision:t});return new o(this.model,r)}within(e,n=N.defaults.fit){let t=e.trim().toLowerCase();if(!(t in Z))throw new Error(`Unsupported color gamut: '${t}'.`);let r=this.in(t).toArray({fit:n,precision:null});return new o(t,r).in(this.model)}contrast(e){let[,n]=this.in("xyz-d65").toArray({fit:"none",precision:null}),[,t]=e.in("xyz-d65").toArray({fit:"none",precision:null});return(Math.max(n,t)+.05)/(Math.min(n,t)+.05)}deltaEOK(e){let n={fit:"none",precision:null},[t,r,l]=this.in("oklab").toArray(n),[a,s,i]=e.in("oklab").toArray(n),c=t-a,h=r-s,u=l-i;return Math.sqrt(c**2+h**2+u**2)*100}deltaE76(e){let n={fit:"none",precision:null},[t,r,l]=this.in("lab").toArray(n),[a,s,i]=e.in("lab").toArray(n),c=t-a,h=r-s,u=l-i;return Math.hypot(c,h,u)}deltaE94(e){let n={fit:"none",precision:null},[t,r,l]=this.in("lab").toArray(n),[a,s,i]=e.in("lab").toArray(n),c=t-a,h=r-s,u=l-i,d=Math.sqrt(r*r+l*l),p=Math.sqrt(s*s+i*i),g=d-p,f=Math.sqrt(Math.max(0,h*h+u*u-g*g)),m=1,y=1,b=1,v=.045,x=.015,C=1+v*d,k=1+x*d;return Math.sqrt((c/m)**2+(g/(y*C))**2+(f/(b*k))**2)}deltaE2000(e){let n={fit:"none",precision:null},[t,r,l]=this.in("lab").toArray(n),[a,s,i]=e.in("lab").toArray(n),c=Math.PI,h=c/180,u=180/c,d=Math.sqrt(r**2+l**2),p=Math.sqrt(s**2+i**2),g=(d+p)/2,f=Math.pow(25,7),m=Math.pow(g,7),y=.5*(1-Math.sqrt(m/(m+f))),b=(1+y)*r,v=(1+y)*s,x=Math.sqrt(b**2+l**2),C=Math.sqrt(v**2+i**2),k=Math.atan2(l,b),$=Math.atan2(i,v);k<0&&(k+=2*c),$<0&&($+=2*c),k*=u,$*=u;let w=a-t,B=C-x,P=$-k,pe=Math.abs(P),K=0;x*C!==0&&(pe<=180?K=P:P>180?K=P-360:K=P+360);let fe=2*Math.sqrt(x*C)*Math.sin(K*h/2),Ze=(t+a)/2,te=(x+C)/2,de=Math.pow(te,7),Y=k+$,j;x===0&&C===0?j=Y:pe<=180?j=Y/2:Y<360?j=(Y+360)/2:j=(Y-360)/2;let me=(Ze-50)**2,Pe=1+.015*me/Math.sqrt(20+me),ge=1+.045*te,H=1;H-=.17*Math.cos((j-30)*h),H+=.24*Math.cos(2*j*h),H+=.32*Math.cos((3*j+6)*h),H-=.2*Math.cos((4*j-63)*h);let ye=1+.015*te*H,Ye=30*Math.exp(-1*((j-275)/25)**2),He=2*Math.sqrt(de/(de+f)),qe=-1*Math.sin(2*Ye*h)*He,W=(w/Pe)**2;return W+=(B/ge)**2,W+=(fe/ye)**2,W+=qe*(B/ge)*(fe/ye),Math.sqrt(W)}equals(e,n=T){let t=this.toArray({fit:"none",precision:null}),r=e.toArray({fit:"none",precision:null});if(e.model===this.model)return t.every((s,i)=>Math.abs(s-r[i])<=n);let l=this.in("xyz-d65").toArray({fit:"none",precision:null}),a=e.in("xyz-d65").toArray({fit:"none",precision:null});return l.every((s,i)=>Math.abs(s-a[i])<=n)}inGamut(e,n=T){let t=e.trim().toLowerCase();if(!(t in Z))throw new Error(`Unsupported color gamut: '${t}'.`);let{components:r,targetGamut:l}=E[t];if(!l)return!0;let a=this.in(t).toArray({fit:"none",precision:null});return Object.values(r).every(({index:s,value:i})=>{let c=a[s],[h,u]=Array.isArray(i)?i:i==="hue"?[0,360]:[0,100];return c>=h-n&&c<=u+n})}};return Qe(Tt);})();
package/dist/math.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export declare const EPSILON = 0.00001;
1
2
  /**
2
3
  * A collection of commonly used color space conversion matrices.
3
4
  *
@@ -21,16 +22,6 @@ export declare const MATRICES: {
21
22
  LMS_to_OKLAB: number[][];
22
23
  OKLAB_to_LMS: number[][];
23
24
  };
24
- /** A collection of common easing functions for interpolation. */
25
- export declare const EASINGS: {
26
- linear: (t: number) => number;
27
- "ease-in": (t: number) => number;
28
- "ease-out": (t: number) => number;
29
- "ease-in-out": (t: number) => number;
30
- "ease-in-cubic": (t: number) => number;
31
- "ease-out-cubic": (t: number) => number;
32
- "ease-in-out-cubic": (t: number) => number;
33
- };
34
25
  /**
35
26
  * A collection of color coordinate fitting methods used to ensure color values conform to specific constraints or gamuts.
36
27
  *
@@ -43,8 +34,8 @@ export declare const EASINGS: {
43
34
  * @see {@link https://www.w3.org/TR/css-color-4/|CSS Color Module Level 4}
44
35
  */
45
36
  export declare const fitMethods: {
46
- "chroma-reduction": (coords: number[], model: "rgb" | "xyz-d65" | "xyz-d50" | "lab" | "oklab" | "srgb" | "srgb-linear" | "display-p3" | "rec2020" | "a98-rgb" | "prophoto-rgb" | "xyz" | "hsl" | "hwb" | "lch" | "oklch") => number[];
47
- "css-gamut-map": (coords: number[], model: "rgb" | "xyz-d65" | "xyz-d50" | "lab" | "oklab" | "srgb" | "srgb-linear" | "display-p3" | "rec2020" | "a98-rgb" | "prophoto-rgb" | "xyz" | "hsl" | "hwb" | "lch" | "oklch") => number[];
37
+ "chroma-reduction": (coords: number[], model: "xyz-d65" | "rgb" | "xyz-d50" | "lab" | "oklab" | "srgb" | "srgb-linear" | "display-p3" | "rec2020" | "a98-rgb" | "prophoto-rgb" | "xyz" | "hsl" | "hwb" | "lch" | "oklch") => number[];
38
+ "css-gamut-map": (coords: number[], model: "xyz-d65" | "rgb" | "xyz-d50" | "lab" | "oklab" | "srgb" | "srgb-linear" | "display-p3" | "rec2020" | "a98-rgb" | "prophoto-rgb" | "xyz" | "hsl" | "hwb" | "lch" | "oklch") => number[];
48
39
  };
49
40
  /**
50
41
  * Converts RGB to XYZ (D65).
package/dist/math.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Color } from "./Color.js";
2
2
  import { colorModels } from "./converters.js";
3
3
  import { multiplyMatrices, fit } from "./utils.js";
4
+ export const EPSILON = 1e-5;
4
5
  /**
5
6
  * A collection of commonly used color space conversion matrices.
6
7
  *
@@ -88,16 +89,6 @@ export const MATRICES = {
88
89
  [1.0, -0.0894841775298119, -1.2914855480194092],
89
90
  ],
90
91
  };
91
- /** A collection of common easing functions for interpolation. */
92
- export const EASINGS = {
93
- linear: (t) => t,
94
- "ease-in": (t) => t * t,
95
- "ease-out": (t) => t * (2 - t),
96
- "ease-in-out": (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),
97
- "ease-in-cubic": (t) => t * t * t,
98
- "ease-out-cubic": (t) => --t * t * t + 1,
99
- "ease-in-out-cubic": (t) => (t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2),
100
- };
101
92
  /**
102
93
  * A collection of color coordinate fitting methods used to ensure color values conform to specific constraints or gamuts.
103
94
  *
@@ -124,7 +115,7 @@ export const fitMethods = {
124
115
  let C_low = 0;
125
116
  let C_high = 1.0;
126
117
  const epsilon = 1e-6;
127
- let clipped = [];
118
+ let clipped;
128
119
  while (C_high - C_low > epsilon) {
129
120
  const C_mid = (C_low + C_high) / 2;
130
121
  const candidate_color = new Color("oklch", [L_clipped, C_mid, H]);
@@ -256,14 +247,16 @@ export function RGB_to_HSL(rgb) {
256
247
  const [r, g, b] = rgb.map((v) => v / 255);
257
248
  const max = Math.max(r, g, b), min = Math.min(r, g, b);
258
249
  const L = (max + min) / 2;
259
- let H = 0, S = 0;
260
250
  const d = max - min;
261
- if (d !== 0) {
251
+ let H = NaN, S = 0;
252
+ if (d > 0) {
262
253
  S = d / (1 - Math.abs(2 * L - 1));
263
254
  H = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
264
- H *= 60;
255
+ H = (H * 60) % 360;
265
256
  }
266
- return [H % 360, S * 100, L * 100];
257
+ const S_out = S * 100, L_out = L * 100;
258
+ const invalid = L_out <= EPSILON || 100 - L_out <= EPSILON || S_out <= EPSILON;
259
+ return [invalid ? NaN : H, S_out, L_out];
267
260
  }
268
261
  /**
269
262
  * Converts HWB to RGB.
@@ -290,11 +283,9 @@ export function HWB_to_RGB([h, w, b]) {
290
283
  export function RGB_to_HWB(rgb) {
291
284
  const [r, g, b] = rgb.map((v) => v / 255);
292
285
  const max = Math.max(r, g, b), min = Math.min(r, g, b);
293
- let H = 0;
294
286
  const d = max - min;
295
- if (d === 0)
296
- H = 0;
297
- else {
287
+ let H = NaN;
288
+ if (d > EPSILON) {
298
289
  H = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;
299
290
  H = (H * 60) % 360;
300
291
  }
@@ -350,7 +341,7 @@ export function LAB_to_LCH([L, a, b]) {
350
341
  let H = (Math.atan2(b, a) * 180) / Math.PI;
351
342
  if (H < 0)
352
343
  H += 360;
353
- return [L, C, H];
344
+ return [L, C, C <= EPSILON ? NaN : H];
354
345
  }
355
346
  /**
356
347
  * Converts OKLab to XYZ (D65).
@@ -394,5 +385,5 @@ export function OKLAB_to_OKLCH([L, a, b]) {
394
385
  let H = (Math.atan2(b, a) * 180) / Math.PI;
395
386
  if (H < 0)
396
387
  H += 360;
397
- return [L, C, H];
388
+ return [L, C, C <= EPSILON ? NaN : H];
398
389
  }
@@ -0,0 +1,17 @@
1
+ import { ColorModel } from "../types.js";
2
+ declare module "../Color.js" {
3
+ interface Color<M extends ColorModel = ColorModel> {
4
+ /**
5
+ * Lightens the color by the given amount.
6
+ * @param amount - The amount to lighten the color by.
7
+ * @returns A new `Color` instance with increased brightness.
8
+ */
9
+ lighten(amount: number): Color<"hsl">;
10
+ /**
11
+ * Darkens the color by the given amount.
12
+ * @param amount - The amount to darken the color by.
13
+ * @returns A new `Color` instance with decreased brightness.
14
+ */
15
+ darken(amount: number): Color<"hsl">;
16
+ }
17
+ }