🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@colordx/core

Package Overview
Dependencies
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@colordx/core - npm Package Compare versions

Comparing version
5.4.2
to
5.4.3
+2
dist/chunk-3LS3HCHH.mjs
import {f as f$2,e,a as a$2}from'./chunk-OX5CMKKI.mjs';import {j,e as e$1,k,d as d$1,l as l$1,b as b$1}from'./chunk-F4W4HJCD.mjs';import {a,b,d,c}from'./chunk-YLJRINFM.mjs';import {h,i,f as f$1,a as a$1,g,l,k as k$1,d as d$2}from'./chunk-IOXRZECH.mjs';var er=.8224619687,or=.1775380313,br=.0331941989,tr=.9668058011,ar=.0170826307,ur=.0723974407,mr=.9105199286,Fr=1.2249401762805598,vr=-0.22494017628055996,Br=-0.04205695470968816,Er=1.042056954709688,$r=-0.019637554590334432,Dr=-0.07863604555063189,Or=1.0982736001409663,Rn=(e,r,n,o)=>{e[0]=er*r+or*n,e[1]=br*r+tr*n,e[2]=ar*r+ur*n+mr*o;},sr=(e,r,n)=>[er*e+or*r,br*e+tr*r,ar*e+ur*r+mr*n];var z=(e,r,n)=>[Fr*e+vr*r,Br*e+Er*r,$r*e+Dr*r+Or*n],fn=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=sr(a(e/255),a(r/255),a(n/255));return {r:b(b$1),g:b(t),b:b(u),alpha:o,colorSpace:"display-p3"}};var lr=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=z(a(e),a(r),a(n));return {r:b(b$1)*255,g:b(t)*255,b:b(u)*255,alpha:o}},yn=e=>{if(!h(e)||e.colorSpace!=="display-p3"||!i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !f$1(r)||!f$1(n)||!f$1(o)||!f$1(b)?null:lr({r:g(r),g:g(n),b:g(o),alpha:a$1(g(b),0,1)})},jr=new RegExp(`^color\\(\\s*display-p3\\s+(?<r>${k$1})(?<rp>%?)\\s+(?<g>${k$1})(?<gp>%?)\\s+(?<b>${k$1})(?<bp>%?)\\s*(?:/\\s*(?<al>${k$1})(?<alp>%?)\\s*)?\\)$`,"i"),Sn=e=>{if(typeof e!="string")return null;let r=jr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?l(r.r)/100:l(r.r),o=r.gp?l(r.g)/100:l(r.g),b=r.bp?l(r.b)/100:l(r.b),t=r.al===void 0?1:l(r.al)/(r.alp?100:1);return lr({r:n,g:o,b,alpha:a$1(t,0,1)})},xn=(e,r,n)=>sr(...f$2(e,r,n));var cr=.6274038959,pr=.3292830384,ir=.0433130657,dr=.0690972894,hr=.9195403951,gr=.0113623156,Rr=.0163914389,fr=.0880133079,yr=.8955952532,Xr=1.6604910021084345,Ur=-0.5876411387885495,Kr=-0.07284986331988488,qr=-0.12455047452159074,Hr=1.1328998971259603,Vr=-0.008349422604369477,Yr=-0.018150763354905303,Zr=-0.10057889800800739,Jr=1.1187296613629127,_n=(e,r,n,o)=>{e[0]=cr*r+pr*n+ir*o,e[1]=dr*r+hr*n+gr*o,e[2]=Rr*r+fr*n+yr*o;},Sr=(e,r,n)=>[cr*e+pr*r+ir*n,dr*e+hr*r+gr*n,Rr*e+fr*r+yr*n];var F=(e,r,n)=>[Xr*e+Ur*r+Kr*n,qr*e+Hr*r+Vr*n,Yr*e+Zr*r+Jr*n],kn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=Sr(a(e/255),a(r/255),a(n/255));return {r:d(b),g:d(t),b:d(u),alpha:o,colorSpace:"rec2020"}};var xr=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=F(c(e),c(r),c(n));return {r:b(b$1)*255,g:b(t)*255,b:b(u)*255,alpha:o}},Mn=e=>{if(!h(e)||e.colorSpace!=="rec2020"||!i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !f$1(r)||!f$1(n)||!f$1(o)||!f$1(b)?null:xr({r:g(r),g:g(n),b:g(o),alpha:a$1(g(b),0,1)})},Qr=new RegExp(`^color\\(\\s*rec2020\\s+(?<r>${k$1})(?<rp>%?)\\s+(?<g>${k$1})(?<gp>%?)\\s+(?<b>${k$1})(?<bp>%?)\\s*(?:/\\s*(?<al>${k$1})(?<alp>%?)\\s*)?\\)$`,"i"),Pn=e=>{if(typeof e!="string")return null;let r=Qr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?l(r.r)/100:l(r.r),o=r.gp?l(r.g)/100:l(r.g),b=r.bp?l(r.b)/100:l(r.b),t=r.al===void 0?1:l(r.al)/(r.alp?100:1);return xr({r:n,g:o,b,alpha:a$1(t,0,1)})},An=(e,r,n)=>Sr(...f$2(e,r,n));var Wr=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rn=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nn=/^lab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,en=/^lch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,on=/^color\(\s*display-p3\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,bn=/^color\(\s*rec2020\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,tn=/^color\(\s*xyz-d50\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,an=/^color\(\s*xyz-d65\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,A=(e,r,n)=>{let{x:o,y:b,z:t}=l$1({l:e,a:r,b:n,alpha:1,colorSpace:"lab"}),[u,s,l]=e$1(o,b,t);return a$2(u,s,l)},Tr=(e,r,n)=>{let[o,b,t]=z(a(e),a(r),a(n));return a$2(o,b,t)},Cr=(e,r,n)=>{let[o,b,t]=F(c(e),c(r),c(n));return a$2(o,b,t)},Lr=(e,r,n)=>{let[o,b,t]=e$1(e,r,n);return a$2(o,b,t)},Nr=(e,r,n)=>{let[o,b,t]=b$1(e,r,n);return a$2(o,b,t)},G=e=>{if(typeof e=="object"&&e!==null){let r=e;if("l"in r&&"a"in r&&"b"in r&&r.colorSpace!=="lab"&&!("c"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.a=="number"&&typeof n.b=="number"&&typeof n.alpha=="number")return {l:n.l,a:n.a,b:n.b,alpha:n.alpha}}if("l"in r&&"c"in r&&"h"in r&&r.colorSpace!=="lch"&&!("a"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.c=="number"&&typeof n.h=="number"){let o=n.h*Math.PI/180;return {l:n.l,a:n.c*Math.cos(o),b:n.c*Math.sin(o),alpha:n.alpha}}}if(r.colorSpace==="lab"){let n=e;if(typeof n.l!="number"||typeof n.a!="number"||typeof n.b!="number")return null;let[o,b,t]=A(n.l,n.a,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="lch"){let n=e;if(typeof n.l!="number"||typeof n.c!="number"||typeof n.h!="number")return null;let o=n.h*Math.PI/180,[b,t,u]=A(n.l,n.c*Math.cos(o),n.c*Math.sin(o));return {l:b,a:t,b:u,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="display-p3"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Tr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="rec2020"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Cr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="xyz-d65"){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Nr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if("x"in r&&"y"in r&&"z"in r){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Lr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=Wr.exec(e);if(r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(d$2[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o*Math.cos(u),b:o*Math.sin(u),alpha:s}}if(r=rn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?Number(r[5])*.004:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b,alpha:t}}if(r=nn.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.25:Number(r[3]),b=r[6]?Number(r[5])*1.25:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=A(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=en.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.5:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(d$2[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[l,x,T]=A(n,o*Math.cos(u),o*Math.sin(u));return {l,a:x,b:T,alpha:s}}if(r=on.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Tr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=bn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Cr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=tn.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Lr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=an.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Nr(n,o,b);return {l:u,a:s,b:l,alpha:t}}return null}return null},S=5e-4,Pr=(e,r,n)=>e>=-S&&e<=1+S&&r>=-S&&r<=1+S&&n>=-S&&n<=1+S,_r=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,$n=e=>{let r=G(e);if(r===null)return true;let[n,o,b]=f$2(r.l,r.a,r.b);return Pr(n,o,b)},kr=.02,un=1e-4,Mr=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],b=e[2]-r[2];return Math.sqrt(n*n+o*o+b*b)},Ar=(e,r,n,o,b)=>{if(e>=1)return [1,1,1];if(e<=0)return [0,0,0];let[t,u,s]=o(e,r,n);if(_r(t,u,s))return [t,u,s];let l=a$1(t,0,1),x=a$1(u,0,1),T=a$1(s,0,1);if(Mr(b(l,x,T),[e,r,n])<=kr)return [l,x,T];let E=Math.atan2(n,r),wr=Math.sqrt(r*r+n*n),N=0,I=wr,$=true,D=l,O=x,j=T;for(;I-N>un;){let C=(N+I)/2,X=C*Math.cos(E),U=C*Math.sin(E),[K,q,H]=o(e,X,U);if($&&_r(K,q,H)){N=C;continue}let V=a$1(K,0,1),Y=a$1(q,0,1),Z=a$1(H,0,1);D=V,O=Y,j=Z,Mr(b(V,Y,Z),[e,X,U])<=kr?(N=C,$=false):I=C;}return [D,O,j]},Dn=e=>{let r=G(e);return r===null?null:{linear:Ar(r.l,r.a,r.b,f$2,a$2),alpha:r.alpha}},On=(e,r)=>{let n=G(e);if(n===null)return true;let[o,b,t]=r(n.l,n.a,n.b);return Pr(o,b,t)},jn=(e,r,n)=>{let o=G(e);return o===null?null:{linear:Ar(o.l,o.a,o.b,r,n),alpha:o.alpha}};var f=Math.PI/180,Gr=(e,r,n)=>{let o=n*f;return f$2(e,r*Math.cos(o),r*Math.sin(o))},Ir=(e$1,r,n,o)=>{let b=o*f;e(e$1,r,n*Math.cos(b),n*Math.sin(b));},Vn=(e,r,n)=>{let[o,b$1,t]=Gr(e,r,n);return [b(o),b(b$1),b(t)]},Yn=(e,r,n,o)=>{Ir(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},Zn=(e,r,n)=>{let[o,b$1,t]=Gr(e,r,n);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},Jn=(e,r,n,o,b$1)=>{Ir(e,n,o,b$1),r[0]=b(e[0]),r[1]=b(e[1]),r[2]=b(e[2]);},Qn=(e,r,n)=>[a(e),a(r),a(n)],Wn=(e,r,n,o)=>{e[0]=a(r),e[1]=a(n),e[2]=a(o);},v=(e,r,n)=>{let[o,b,t]=j(e,r,n);return e$1(o,b,t)},B=(e,r,n,o)=>{k(e,r,n,o),d$1(e,e[0],e[1],e[2]);},re=(e,r,n)=>{let o=n*f;return v(e,r*Math.cos(o),r*Math.sin(o))},ne=(e,r,n,o)=>{let b=o*f;B(e,r,n*Math.cos(b),n*Math.sin(b));},mn=(e,r,n)=>{let[o,b$1,t]=v(e,r,n);return [b(o),b(b$1),b(t)]},sn=(e,r,n,o)=>{B(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},ee=(e,r,n)=>{let o=n*f;return mn(e,r*Math.cos(o),r*Math.sin(o))},oe=(e,r,n,o)=>{let b=o*f;sn(e,r,n*Math.cos(b),n*Math.sin(b));},ln=(e,r,n)=>{let[o,b$1,t]=v(e,r,n);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},cn=(e,r,n,o,b$1)=>{B(e,n,o,b$1),r[0]=b(e[0]),r[1]=b(e[1]),r[2]=b(e[2]);},be=(e,r,n)=>{let o=n*f;return ln(e,r*Math.cos(o),r*Math.sin(o))},te=(e,r,n,o,b)=>{let t=b*f;cn(e,r,n,o*Math.cos(t),o*Math.sin(t));};export{v as A,B,re as C,ne as D,mn as E,sn as F,ee as G,oe as H,ln as I,cn as J,be as K,te as L,Rn as a,sr as b,z as c,fn as d,yn as e,Sn as f,xn as g,_n as h,Sr as i,F as j,kn as k,Mn as l,Pn as m,An as n,$n as o,Dn as p,On as q,jn as r,Gr as s,Ir as t,Vn as u,Yn as v,Zn as w,Jn as x,Qn as y,Wn as z};//# sourceMappingURL=chunk-3LS3HCHH.mjs.map
//# sourceMappingURL=chunk-3LS3HCHH.mjs.map

Sorry, the diff of this file is too big to display

import {a as a$1}from'./chunk-Q3O3QQ4H.mjs';import {a,b,l,d,h,i,f,g as g$1,k,j as j$1,c}from'./chunk-IOXRZECH.mjs';var N=r=>({h:c(r.h),s:a(r.s,0,100),v:a(r.v,0,100),alpha:a(b(r.alpha,3),0,1)}),g={h:0,s:0,v:0,alpha:0},T=({r,g:n,b:u,alpha:h})=>{let t=r/255,o=n/255,c=u/255,e=Math.max(t,o,c),a$1=Math.min(t,o,c),l=e-a$1,i=e===0?0:l/e,f=0;if(e!==a$1)switch(e){case t:f=((o-c)/l+(o<c?6:0))/6;break;case o:f=((c-t)/l+2)/6;break;case c:f=((t-o)/l+4)/6;break}let k=f*360;return g.h=k>=0&&k<360?k:(k%360+360)%360,g.s=a(i*100,0,100),g.v=a(e*100,0,100),g.alpha=a(b(h,3),0,1),g};var s=[0,0,0],M=({h:r,s:n,v:u,alpha:h})=>{let t=n/100,o=u/100,c=Math.floor(r/60%6),e=r/60-Math.floor(r/60),a=o*(1-t),l=o*(1-e*t),i=o*(1-(1-e)*t);switch(c){case 0:s[0]=o,s[1]=i,s[2]=a;break;case 1:s[0]=l,s[1]=o,s[2]=a;break;case 2:s[0]=a,s[1]=o,s[2]=i;break;case 3:s[0]=a,s[1]=l,s[2]=o;break;case 4:s[0]=i,s[1]=a,s[2]=o;break;default:s[0]=o,s[1]=a,s[2]=l;break}return a$1({r:s[0]*255,g:s[1]*255,b:s[2]*255,alpha:h})},y=new RegExp(`^hsva?\\(\\s*(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${j$1})%\\s*,\\s*(?<v_c>${j$1})%(?:\\s*,\\s*(?<al_c>${j$1})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${k})(?<sp_s>%?)\\s+(?<v_s>${k})(?<vp_s>%?)(?:\\s*/\\s*(?<al_s>${k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),j=r=>{if(typeof r!="string")return null;let n=y.exec(r.trim())?.groups;if(!n)return null;let u=n.s_c!==void 0;if(u&&/^none$/i.test(n.h))return null;let h=n.hu?.toLowerCase()??"deg",t=l(n.h)*(d[h]??1),o=l(n.s_c??n.s_s),c=l(n.v_c??n.v_s),e=n.al_c??n.al_s;if(u&&e!==void 0&&/^none$/i.test(e))return null;let a=!!(n.alp_c??n.alp_s),l$1=e===void 0?1:l(e)/(a?100:1);return M(N({h:t,s:o,v:c,alpha:l$1}))},A=r=>{if(!h(r)||!i(r,["h","s","v"]))return null;let{h:n,s:u,v:h$1,alpha:t=1}=r;return !f(n)||!f(u)||!f(h$1)||!f(t)?null:M(N({h:g$1(n),s:g$1(u),v:g$1(h$1),alpha:g$1(t)}))};export{T as a,M as b,j as c,A as d};//# sourceMappingURL=chunk-6JXMCEQE.mjs.map
//# sourceMappingURL=chunk-6JXMCEQE.mjs.map
{"version":3,"sources":["../src/colorModels/hsv.ts"],"names":["clampHsv","hsv","normalizeHue","clamp","round","_hsvBuf","rgbToHsvRaw","g","b","alpha","rn","gn","bn","max","min","d","s","h","hDeg","_RGB","hsvToRgb","v","sn","vn","i","f","p","q","t","clampRgb","HSV_RE","NUM_OR_NONE","NUM","parseHsvString","input","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","parseHsvObject","isObject","hasKeys","isAnyNumber","sanitize"],"mappings":"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","file":"chunk-6JXMCEQE.mjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HsvColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nconst clampHsv = (hsv: HsvColor): HsvColor => ({\n h: normalizeHue(hsv.h),\n s: clamp(hsv.s, 0, 100),\n v: clamp(hsv.v, 0, 100),\n alpha: clamp(round(hsv.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHsvRaw — callers must destructure immediately, never store the reference.\nconst _hsvBuf: HsvColor = { h: 0, s: 0, v: 0, alpha: 0 };\n\nexport const rgbToHsvRaw = ({ r, g, b, alpha }: RgbColor): HsvColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n let h = 0;\n\n if (max !== min) {\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hsvBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hsvBuf.s = clamp(s * 100, 0, 100);\n _hsvBuf.v = clamp(max * 100, 0, 100);\n _hsvBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hsvBuf;\n};\n\nexport const rgbToHsv = (rgb: RgbColor): HsvColor => {\n const { h, s, v, alpha } = rgbToHsvRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), v: round(v, 2), alpha };\n};\n\nconst _RGB = [0, 0, 0] as [number, number, number];\n\nexport const hsvToRgb = ({ h, s, v, alpha }: HsvColor): RgbColor => {\n const sn = s / 100,\n vn = v / 100;\n const i = Math.floor((h / 60) % 6);\n const f = h / 60 - Math.floor(h / 60);\n const p = vn * (1 - sn);\n const q = vn * (1 - f * sn);\n const t = vn * (1 - (1 - f) * sn);\n\n switch (i) {\n case 0:\n _RGB[0] = vn;\n _RGB[1] = t;\n _RGB[2] = p;\n break;\n case 1:\n _RGB[0] = q;\n _RGB[1] = vn;\n _RGB[2] = p;\n break;\n case 2:\n _RGB[0] = p;\n _RGB[1] = vn;\n _RGB[2] = t;\n break;\n case 3:\n _RGB[0] = p;\n _RGB[1] = q;\n _RGB[2] = vn;\n break;\n case 4:\n _RGB[0] = t;\n _RGB[1] = p;\n _RGB[2] = vn;\n break;\n default: // case 5 — not an error handler; i is always 0–5 for h in [0, 360)\n _RGB[0] = vn;\n _RGB[1] = p;\n _RGB[2] = q;\n break;\n }\n\n return clampRgb({ r: _RGB[0] * 255, g: _RGB[1] * 255, b: _RGB[2] * 255, alpha });\n};\n\n// HSV/HSVA is a non-standard, library-defined syntax (not part of any CSS spec).\n// Format mirrors HSL for consistency. Legacy comma form kept for back-compat input;\n// modern space form supports optional `%` and the CSS Color 4 `none` keyword.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSV_RE = new RegExp(\n `^hsva?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<v_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<v_s>${NUM_OR_NONE})(?<vp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHsvString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSV_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const v = parseNum((g.v_c ?? g.v_s)!);\n const rawA = g.al_c ?? g.al_s;\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hsvToRgb(clampHsv({ h, s, v, alpha }));\n};\n\nexport const parseHsvObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'v'])) return null;\n const { h, s, v, alpha = 1 } = input as { h: unknown; s: unknown; v: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(v) || !isAnyNumber(alpha)) return null;\n return hsvToRgb(clampHsv({ h: sanitize(h), s: sanitize(s), v: sanitize(v), alpha: sanitize(alpha) }));\n};\n"]}
'use strict';var chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var N=r=>({h:chunkYISEJCI6_cjs.c(r.h),s:chunkYISEJCI6_cjs.a(r.s,0,100),v:chunkYISEJCI6_cjs.a(r.v,0,100),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r.alpha,3),0,1)}),g={h:0,s:0,v:0,alpha:0},T=({r,g:n,b:u,alpha:h})=>{let t=r/255,o=n/255,c=u/255,e=Math.max(t,o,c),a=Math.min(t,o,c),l=e-a,i=e===0?0:l/e,f=0;if(e!==a)switch(e){case t:f=((o-c)/l+(o<c?6:0))/6;break;case o:f=((c-t)/l+2)/6;break;case c:f=((t-o)/l+4)/6;break}let k=f*360;return g.h=k>=0&&k<360?k:(k%360+360)%360,g.s=chunkYISEJCI6_cjs.a(i*100,0,100),g.v=chunkYISEJCI6_cjs.a(e*100,0,100),g.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(h,3),0,1),g};var s=[0,0,0],M=({h:r,s:n,v:u,alpha:h})=>{let t=n/100,o=u/100,c=Math.floor(r/60%6),e=r/60-Math.floor(r/60),a=o*(1-t),l=o*(1-e*t),i=o*(1-(1-e)*t);switch(c){case 0:s[0]=o,s[1]=i,s[2]=a;break;case 1:s[0]=l,s[1]=o,s[2]=a;break;case 2:s[0]=a,s[1]=o,s[2]=i;break;case 3:s[0]=a,s[1]=l,s[2]=o;break;case 4:s[0]=i,s[1]=a,s[2]=o;break;default:s[0]=o,s[1]=a,s[2]=l;break}return chunk3V4MONNR_cjs.a({r:s[0]*255,g:s[1]*255,b:s[2]*255,alpha:h})},y=new RegExp(`^hsva?\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${chunkYISEJCI6_cjs.j})%\\s*,\\s*(?<v_c>${chunkYISEJCI6_cjs.j})%(?:\\s*,\\s*(?<al_c>${chunkYISEJCI6_cjs.j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${chunkYISEJCI6_cjs.k})(?<sp_s>%?)\\s+(?<v_s>${chunkYISEJCI6_cjs.k})(?<vp_s>%?)(?:\\s*/\\s*(?<al_s>${chunkYISEJCI6_cjs.k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),j=r=>{if(typeof r!="string")return null;let n=y.exec(r.trim())?.groups;if(!n)return null;let u=n.s_c!==void 0;if(u&&/^none$/i.test(n.h))return null;let h=n.hu?.toLowerCase()??"deg",t=chunkYISEJCI6_cjs.l(n.h)*(chunkYISEJCI6_cjs.d[h]??1),o=chunkYISEJCI6_cjs.l(n.s_c??n.s_s),c=chunkYISEJCI6_cjs.l(n.v_c??n.v_s),e=n.al_c??n.al_s;if(u&&e!==void 0&&/^none$/i.test(e))return null;let a=!!(n.alp_c??n.alp_s),l=e===void 0?1:chunkYISEJCI6_cjs.l(e)/(a?100:1);return M(N({h:t,s:o,v:c,alpha:l}))},A=r=>{if(!chunkYISEJCI6_cjs.h(r)||!chunkYISEJCI6_cjs.i(r,["h","s","v"]))return null;let{h:n,s:u,v:h,alpha:t=1}=r;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(u)||!chunkYISEJCI6_cjs.f(h)||!chunkYISEJCI6_cjs.f(t)?null:M(N({h:chunkYISEJCI6_cjs.g(n),s:chunkYISEJCI6_cjs.g(u),v:chunkYISEJCI6_cjs.g(h),alpha:chunkYISEJCI6_cjs.g(t)}))};exports.a=T;exports.b=M;exports.c=j;exports.d=A;//# sourceMappingURL=chunk-BLKDDW2U.cjs.map
//# sourceMappingURL=chunk-BLKDDW2U.cjs.map
{"version":3,"sources":["../src/colorModels/hsv.ts"],"names":["clampHsv","hsv","normalizeHue","clamp","round","_hsvBuf","rgbToHsvRaw","g","b","alpha","rn","gn","bn","max","min","d","s","h","hDeg","_RGB","hsvToRgb","v","sn","vn","i","f","p","q","t","clampRgb","HSV_RE","NUM_OR_NONE","NUM","parseHsvString","input","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","parseHsvObject","isObject","hasKeys","isAnyNumber","sanitize"],"mappings":"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","file":"chunk-BLKDDW2U.cjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HsvColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nconst clampHsv = (hsv: HsvColor): HsvColor => ({\n h: normalizeHue(hsv.h),\n s: clamp(hsv.s, 0, 100),\n v: clamp(hsv.v, 0, 100),\n alpha: clamp(round(hsv.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHsvRaw — callers must destructure immediately, never store the reference.\nconst _hsvBuf: HsvColor = { h: 0, s: 0, v: 0, alpha: 0 };\n\nexport const rgbToHsvRaw = ({ r, g, b, alpha }: RgbColor): HsvColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n let h = 0;\n\n if (max !== min) {\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hsvBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hsvBuf.s = clamp(s * 100, 0, 100);\n _hsvBuf.v = clamp(max * 100, 0, 100);\n _hsvBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hsvBuf;\n};\n\nexport const rgbToHsv = (rgb: RgbColor): HsvColor => {\n const { h, s, v, alpha } = rgbToHsvRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), v: round(v, 2), alpha };\n};\n\nconst _RGB = [0, 0, 0] as [number, number, number];\n\nexport const hsvToRgb = ({ h, s, v, alpha }: HsvColor): RgbColor => {\n const sn = s / 100,\n vn = v / 100;\n const i = Math.floor((h / 60) % 6);\n const f = h / 60 - Math.floor(h / 60);\n const p = vn * (1 - sn);\n const q = vn * (1 - f * sn);\n const t = vn * (1 - (1 - f) * sn);\n\n switch (i) {\n case 0:\n _RGB[0] = vn;\n _RGB[1] = t;\n _RGB[2] = p;\n break;\n case 1:\n _RGB[0] = q;\n _RGB[1] = vn;\n _RGB[2] = p;\n break;\n case 2:\n _RGB[0] = p;\n _RGB[1] = vn;\n _RGB[2] = t;\n break;\n case 3:\n _RGB[0] = p;\n _RGB[1] = q;\n _RGB[2] = vn;\n break;\n case 4:\n _RGB[0] = t;\n _RGB[1] = p;\n _RGB[2] = vn;\n break;\n default: // case 5 — not an error handler; i is always 0–5 for h in [0, 360)\n _RGB[0] = vn;\n _RGB[1] = p;\n _RGB[2] = q;\n break;\n }\n\n return clampRgb({ r: _RGB[0] * 255, g: _RGB[1] * 255, b: _RGB[2] * 255, alpha });\n};\n\n// HSV/HSVA is a non-standard, library-defined syntax (not part of any CSS spec).\n// Format mirrors HSL for consistency. Legacy comma form kept for back-compat input;\n// modern space form supports optional `%` and the CSS Color 4 `none` keyword.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSV_RE = new RegExp(\n `^hsva?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<v_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<v_s>${NUM_OR_NONE})(?<vp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHsvString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSV_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const v = parseNum((g.v_c ?? g.v_s)!);\n const rawA = g.al_c ?? g.al_s;\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hsvToRgb(clampHsv({ h, s, v, alpha }));\n};\n\nexport const parseHsvObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'v'])) return null;\n const { h, s, v, alpha = 1 } = input as { h: unknown; s: unknown; v: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(v) || !isAnyNumber(alpha)) return null;\n return hsvToRgb(clampHsv({ h: sanitize(h), s: sanitize(s), v: sanitize(v), alpha: sanitize(alpha) }));\n};\n"]}
import {a,b as b$1}from'./chunk-YLJRINFM.mjs';import {a as a$2}from'./chunk-Q3O3QQ4H.mjs';import {a as a$1,b,h,i,e,f,g,l,k}from'./chunk-IOXRZECH.mjs';var L=96.4295675298354,O=100,w=82.51046025104603,lo=.4123907992659595,ao=.35758433938387796,co=.1804807884018343,eo=.21263900587151036,bo=.7151686787677559,po=.07219231536073371,uo=.01933081871559185,_o=.11919477979462599,yo=.9505321522496606,A=.032409699419045215,B=-0.015373831775700935,G=-0.004986107602930032,I=-0.009692436362808799,P=.018759675015077207,U=.0004155505740717561,F=.000556300796969936,H=-0.002039769588889766,K=.010569715142428786,Wo=1.0479297925449969,Eo=.022946870601609652,qo=-0.05019226628920524,jo=.02962780877005599,Ao=.9904344267538799,Bo=-0.017073799063418826,Go=-0.009243040646204504,Io=.015055191490298152,Po=.7518742814281371,xo=.955473421488075,go=-0.02309845494876471,mo=.06325924320057072,Do=-0.0283697093338637,zo=1.0099953980813041,io=.021041441191917323,Xo=.012314014864481998,ho=-0.020507649298898964,Co=1.330365926242124,sn=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$2=a(t/255);return {x:100*(lo*r+ao*l+co*a$2),y:100*(eo*r+bo*l+po*a$2),z:100*(uo*r+_o*l+yo*a$2),alpha:a$1(b(s,3),0,1),colorSpace:"xyz-d65"}},Uo=(n,o,t)=>[A*n+B*o+G*t,I*n+P*o+U*t,F*n+H*o+K*t],fo=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=Uo(n,o,t);return {r:b$1(r)*255,g:b$1(l)*255,b:b$1(a)*255,alpha:s}},To=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$2=a(t/255),u=100*(lo*r+ao*l+co*a$2),e=100*(eo*r+bo*l+po*a$2),x=100*(uo*r+_o*l+yo*a$2);return {x:Wo*u+Eo*e+qo*x,y:jo*u+Ao*e+Bo*x,z:Go*u+Io*e+Po*x,alpha:a$1(b(s,3),0,1)}},ln=(n,o,t,s)=>{let r=xo*o+go*t+mo*s,l=Do*o+zo*t+io*s,a=Xo*o+ho*t+Co*s;n[0]=A*r+B*l+G*a,n[1]=I*r+P*l+U*a,n[2]=F*r+H*l+K*a;},M=(n,o,t)=>{let s=xo*n+go*o+mo*t,r=Do*n+zo*o+io*t,l=Xo*n+ho*o+Co*t;return [A*s+B*r+G*l,I*s+P*r+U*l,F*s+H*r+K*l]},Ro=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return a$2({r:b$1(r)*255,g:b$1(l)*255,b:b$1(a)*255,alpha:s})},So=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return {r:b$1(r)*255,g:b$1(l)*255,b:b$1(a)*255,alpha:s}},an=n=>{if(!h(n)||n.colorSpace==="xyz-d65"||!i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !e(o)||!e(t)||!e(s)||!e(r)?null:So({x:o,y:t,z:s,alpha:a$1(r,0,1)})},cn=n=>{if(!h(n)||n.colorSpace!=="xyz-d65"||!i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !f(o)||!f(t)||!f(s)||!f(r)?null:fo({x:g(o),y:g(t),z:g(s),alpha:a$1(g(r),0,1)})},Fo=new RegExp(`^color\\(\\s*xyz-d65\\s+(?<x>${k})(?<xp>%?)\\s+(?<y>${k})(?<yp>%?)\\s+(?<z>${k})(?<zp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),Ho=new RegExp(`^color\\(\\s*xyz-d50\\s+(?<x>${k})(?<xp>%?)\\s+(?<y>${k})(?<yp>%?)\\s+(?<z>${k})(?<zp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),en=n=>{if(typeof n!="string")return null;let o=Fo.exec(n.trim())?.groups;if(!o)return null;let t=l(o.x),s=l(o.y),r=l(o.z),l$1=o.al===void 0?1:l(o.al)/(o.alp?100:1);return fo({x:t,y:s,z:r,alpha:a$1(l$1,0,1)})},bn=n=>{if(typeof n!="string")return null;let o=Ho.exec(n.trim())?.groups;if(!o)return null;let t=l(o.x),s=l(o.y),r=l(o.z),l$1=o.al===void 0?1:l(o.al)/(o.alp?100:1);return So({x:t,y:s,z:r,alpha:a$1(l$1,0,1)})};var Ko=.3127/.329*100,vo=100,Vo=(1-.3127-.329)/.329*100,S=216/24389,z=24389/27,C=n=>n>S?Math.cbrt(n):(z*n+16)/116,Jo=({x:n,y:o,z:t,alpha:s})=>{let r=C(o/O);return {l:116*r-16,a:500*(C(n/L)-r)||0,b:200*(r-C(t/w))||0,alpha:b(s,3),colorSpace:"lab"}},Lo=(n,o,t)=>{let s=(n+16)/116,r=o/500+s,l=s-t/200;return [(r**3>S?r**3:(116*r-16)/z)*L,(n>8?s**3:n/z)*O,(l**3>S?l**3:(116*l-16)/z)*w]},xn=(n,o,t,s)=>{let r=(o+16)/116,l=t/500+r,a=r-s/200;n[0]=(l**3>S?l**3:(116*l-16)/z)*L,n[1]=(o>8?r**3:o/z)*O,n[2]=(a**3>S?a**3:(116*a-16)/z)*w;},Qo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t);return {x:r,y:l,z:a,alpha:s}},gn=n=>Jo(To(n)),mn=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$1=a(t/255),u=100*(.4123907992659595*r+.35758433938387796*l+.1804807884018343*a$1),e=100*(.21263900587151036*r+.7151686787677559*l+.07219231536073371*a$1),x=100*(.01933081871559185*r+.11919477979462599*l+.9505321522496606*a$1),f=C(e/vo);return {l:116*f-16,a:500*(C(u/Ko)-f)||0,b:200*(f-C(x/Vo))||0,alpha:b(s,3),colorSpace:"lab"}},Dn=(n,o)=>{let{l:t,a:s,b:r}=n,{l,a,b:u}=o,e=Math.PI/180,x=180/Math.PI,f=Math.sqrt(s**2+r**2),wo=Math.sqrt(a**2+u**2),v=((f+wo)/2)**7,V=.5*(1-Math.sqrt(v/(v+25**7))),Y=s*(1+V),Z=a*(1+V),k=Math.sqrt(Y**2+r**2),$=Math.sqrt(Z**2+u**2),N=(k+$)/2,W=Y===0&&r===0?0:Math.atan2(r,Y)*x,E=Z===0&&u===0?0:Math.atan2(u,Z)*x,i=W<0?W+360:W,X=E<0?E+360:E,q=X-i,j=Math.abs(X-i);j>180&&X<=i?q+=360:j>180&&X>i&&(q-=360);let J=(t+l)/2,D=i+X;j<=180?D/=2:D=(i+X<360?D+360:D-360)/2;let Mo=1-.17*Math.cos(e*(D-30))+.24*Math.cos(2*e*D)+.32*Math.cos(e*(3*D+6))-.2*Math.cos(e*(4*D-63)),Yo=l-t,Q=$-k,oo=2*Math.sin(e*q/2)*Math.sqrt(k*$),Zo=1+.015*(J-50)**2/Math.sqrt(20+(J-50)**2),no=1+.045*N,ro=1+.015*N*Mo,to=N**7,ko=2*Math.sqrt(to/(to+25**7)),$o=30*Math.exp(-(((D-275)/25)**2)),No=-ko*Math.sin(2*e*$o);return Math.sqrt((Yo/Zo)**2+(Q/no)**2+(oo/ro)**2+No*(Q/no)*(oo/ro))},zn=n=>Ro(Qo(n)),Oo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t),[u,e,x]=M(r,l,a);return {r:b$1(u)*255,g:b$1(e)*255,b:b$1(x)*255,alpha:s}},on=new RegExp(`^lab\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<a>${k})(?<ap>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),Xn=n=>{if(typeof n!="string")return null;let o=on.exec(n.trim())?.groups;if(!o)return null;let t=l(o.l),s=o.ap?l(o.a)*1.25:l(o.a),r=o.bp?l(o.b)*1.25:l(o.b),l$1=o.al===void 0?1:l(o.al)/(o.alp?100:1);return Oo({l:a$1(t,0,100),a:s,b:r,alpha:a$1(l$1,0,1)})},hn=n=>{if(!h(n)||n.colorSpace!=="lab"||!i(n,["l","a","b"]))return null;let{l:o,a:t,b:s,alpha:r=1}=n;return !f(o)||!f(t)||!f(s)||!f(r)?null:Oo({l:a$1(g(o),0,100),a:g(t),b:g(s),alpha:a$1(g(r),0,1)})};export{sn as a,Uo as b,To as c,ln as d,M as e,an as f,cn as g,en as h,bn as i,Lo as j,xn as k,Qo as l,gn as m,mn as n,Dn as o,zn as p,Oo as q,Xn as r,hn as s};//# sourceMappingURL=chunk-F4W4HJCD.mjs.map
//# sourceMappingURL=chunk-F4W4HJCD.mjs.map
{"version":3,"sources":["../src/colorModels/xyz.ts","../src/colorModels/lab.ts"],"names":["D50_WX","D50_WY","D50_WZ","S_XR","S_XG","S_XB","S_YR","S_YG","S_YB","S_ZR","S_ZG","S_ZB","X_RX","X_RY","X_RZ","X_GX","X_GY","X_GZ","X_BX","X_BY","X_BZ","D65_TO_D50_XX","D65_TO_D50_XY","D65_TO_D50_XZ","D65_TO_D50_YX","D65_TO_D50_YY","D65_TO_D50_YZ","D65_TO_D50_ZX","D65_TO_D50_ZY","D65_TO_D50_ZZ","D50_TO_D65_XX","D50_TO_D65_XY","D50_TO_D65_XZ","D50_TO_D65_YX","D50_TO_D65_YY","D50_TO_D65_YZ","D50_TO_D65_ZX","D50_TO_D65_ZY","D50_TO_D65_ZZ","rgbToXyzD65","r","g","b","alpha","lr","srgbToLinear","lg","lb","clamp","round","xyzD65ToLinearSrgb","x","y","z","xyzD65ToRgbUnclamped","srgbFromLinear","rgbToXyz","xd65","yd65","zd65","xyzD50ToLinearSrgbInto","out","xyzD50ToLinearSrgb","xyzToRgb","clampRgb","xyzToRgbUnclamped","parseXyzObject","input","isObject","hasKeys","isNumber","parseXyzD65Object","isAnyNumber","sanitize","XYZ_D65_RE","NUM_OR_NONE","XYZ_D50_RE","parseXyzD65String","parseNum","parseXyzD50String","D65_WX","D65_WY","D65_WZ","EPSILON","KAPPA","f","t","xyzToLab","fy","labToXyzValues","l","a","fx","fz","labToXyzValuesInto","labToXyz","rgbToLab","rgb","rgbToLabD65","deltaE2000","lab1","lab2","L1","a1","b1","L2","a2","b2","rad","deg","C1","C2","Cab","G","a1p","a2p","C1p","C2p","Cp","h1p","h2p","h1","h2","dhp","absDh","Lm","Hm","T","dLp","dCp","dHp","SL","SC","SH","RC7","RC","dTheta","RT","labToRgb","lab","labToRgbUnclamped","LAB_RE","parseLabString","parseLabObject"],"mappings":"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","file":"chunk-F4W4HJCD.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { RgbColor, XyzColor, XyzD65Color } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// D50 white point (CSS Color 4: xy = 0.3457/0.3585)\nexport const D50_WX = 96.42956752983539;\nexport const D50_WY = 100;\nexport const D50_WZ = 82.51046025104603;\n\n// ── CSS Color 4 exact rational matrices ─────────────────────────────────────\n// sRGB linear → XYZ D65 (xyz in 0–1; callers scale to 0–100 by multiplying).\nconst S_XR = 0.41239079926595951,\n S_XG = 0.35758433938387796,\n S_XB = 0.18048078840183429;\nconst S_YR = 0.21263900587151036,\n S_YG = 0.71516867876775592,\n S_YB = 0.072192315360733714;\nconst S_ZR = 0.019330818715591849,\n S_ZG = 0.11919477979462599,\n S_ZB = 0.95053215224966059;\n\n// XYZ D65 (0–100 scale) → sRGB linear (0–1). Equals the CSS inverse matrix ÷100.\nconst X_RX = 0.032409699419045213,\n X_RY = -0.015373831775700935,\n X_RZ = -0.0049861076029300327;\nconst X_GX = -0.0096924363628087984,\n X_GY = 0.018759675015077206,\n X_GZ = 0.00041555057407175612;\nconst X_BX = 0.00055630079696993608,\n X_BY = -0.0020397695888897657,\n X_BZ = 0.010569715142428786;\n\n// Bradford D65 → D50 (CSS Color 4)\nconst D65_TO_D50_XX = 1.0479297925449969,\n D65_TO_D50_XY = 0.022946870601609652,\n D65_TO_D50_XZ = -0.05019226628920524;\nconst D65_TO_D50_YX = 0.02962780877005599,\n D65_TO_D50_YY = 0.9904344267538799,\n D65_TO_D50_YZ = -0.017073799063418826;\nconst D65_TO_D50_ZX = -0.009243040646204504,\n D65_TO_D50_ZY = 0.015055191490298152,\n D65_TO_D50_ZZ = 0.7518742814281371;\n\n// Bradford D50 → D65 (CSS Color 4, inverse of above)\nconst D50_TO_D65_XX = 0.955473421488075,\n D50_TO_D65_XY = -0.02309845494876471,\n D50_TO_D65_XZ = 0.06325924320057072;\nconst D50_TO_D65_YX = -0.0283697093338637,\n D50_TO_D65_YY = 1.0099953980813041,\n D50_TO_D65_YZ = 0.021041441191917323;\nconst D50_TO_D65_ZX = 0.012314014864481998,\n D50_TO_D65_ZY = -0.020507649298898964,\n D50_TO_D65_ZZ = 1.330365926242124;\n\n// ── RGB ↔ XYZ D65 ───────────────────────────────────────────────────────────\n\n/** sRGB (0–255) → XYZ D65 (0–100, screen-native, no Bradford adaptation). */\nexport const rgbToXyzD65 = ({ r, g, b, alpha }: RgbColor): XyzD65Color => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n return {\n x: 100 * (S_XR * lr + S_XG * lg + S_XB * lb),\n y: 100 * (S_YR * lr + S_YG * lg + S_YB * lb),\n z: 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb),\n alpha: clamp(round(alpha, 3), 0, 1),\n colorSpace: 'xyz-d65' as const,\n };\n};\n\n/** XYZ D65 (0–100) → linear sRGB (0–1, unclamped). */\nexport const xyzD65ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => [\n X_RX * x + X_RY * y + X_RZ * z,\n X_GX * x + X_GY * y + X_GZ * z,\n X_BX * x + X_BY * y + X_BZ * z,\n];\n\nconst xyzD65ToRgbUnclamped = ({ x, y, z, alpha }: XyzD65Color): RgbColor => {\n const [lr, lg, lb] = xyzD65ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── RGB ↔ XYZ D50 ───────────────────────────────────────────────────────────\n\nexport const rgbToXyz = ({ r, g, b, alpha }: RgbColor): XyzColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const xd65 = 100 * (S_XR * lr + S_XG * lg + S_XB * lb);\n const yd65 = 100 * (S_YR * lr + S_YG * lg + S_YB * lb);\n const zd65 = 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb);\n return {\n x: D65_TO_D50_XX * xd65 + D65_TO_D50_XY * yd65 + D65_TO_D50_XZ * zd65,\n y: D65_TO_D50_YX * xd65 + D65_TO_D50_YY * yd65 + D65_TO_D50_YZ * zd65,\n z: D65_TO_D50_ZX * xd65 + D65_TO_D50_ZY * yd65 + D65_TO_D50_ZZ * zd65,\n alpha: clamp(round(alpha, 3), 0, 1),\n };\n};\n\n/** Zero-allocation sibling of xyzD50ToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const xyzD50ToLinearSrgbInto = (out: Float64Array | number[], x: number, y: number, z: number): void => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n out[0] = X_RX * xd65 + X_RY * yd65 + X_RZ * zd65;\n out[1] = X_GX * xd65 + X_GY * yd65 + X_GZ * zd65;\n out[2] = X_BX * xd65 + X_BY * yd65 + X_BZ * zd65;\n};\n\n/** XYZ D50 → linear sRGB (no gamma, no clamping). x/y/z are in 0–100 scale. */\nexport const xyzD50ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n return [\n X_RX * xd65 + X_RY * yd65 + X_RZ * zd65,\n X_GX * xd65 + X_GY * yd65 + X_GZ * zd65,\n X_BX * xd65 + X_BY * yd65 + X_BZ * zd65,\n ];\n};\n\nexport const xyzToRgb = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return clampRgb({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n });\n};\n\n/** Unclamped XYZ D50 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst xyzToRgbUnclamped = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── Parsers ─────────────────────────────────────────────────────────────────\n\nexport const parseXyzObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Reject D65-discriminated objects — parseXyzD65Object owns those.\n if ((input as { colorSpace?: unknown }).colorSpace === 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isNumber(x) || !isNumber(y) || !isNumber(z) || !isNumber(alpha)) return null;\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n\nexport const parseXyzD65Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isAnyNumber(x) || !isAnyNumber(y) || !isAnyNumber(z) || !isAnyNumber(alpha)) return null;\n return xyzD65ToRgbUnclamped({\n x: sanitize(x),\n y: sanitize(y),\n z: sanitize(z),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\n// CSS Color 4: color(xyz-d65 x y z / alpha). Channels accept number|percentage|none.\n// The library uses a 0–100 XYZ scale (to match the existing XyzColor convention); percent is\n// treated as the same scale for symmetry with the emitted string (100% = 100).\nconst XYZ_D65_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d65\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nconst XYZ_D50_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d50\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseXyzD65String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D65_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzD65ToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\nexport const parseXyzD50String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D50_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { LabColor, RgbColor, XyzColor } from '../types.js';\nimport { D50_WX as WX, D50_WY as WY, D50_WZ as WZ, rgbToXyz, xyzD50ToLinearSrgb, xyzToRgb } from './xyz.js';\n\n// D65 white point derived from CIE chromaticity (x=0.3127, y=0.329)\nconst D65_WX = (0.3127 / 0.329) * 100;\nconst D65_WY = 100;\nconst D65_WZ = ((1 - 0.3127 - 0.329) / 0.329) * 100;\n\nconst EPSILON = 216 / 24389;\nconst KAPPA = 24389 / 27;\n\nconst f = (t: number) => (t > EPSILON ? Math.cbrt(t) : (KAPPA * t + 16) / 116);\n\nexport const xyzToLab = ({ x, y, z, alpha }: XyzColor): LabColor => {\n const fy = f(y / WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / WX) - fy) || 0, // || 0 suppresses −0; NaN is impossible since WX/WZ are non-zero constants\n b: 200 * (fy - f(z / WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\n/** Primitives-only Lab → XYZ D50. x/y/z in 0–100 scale. Shared with channels.ts hot paths. */\nexport const labToXyzValues = (l: number, a: number, b: number): [number, number, number] => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n return [\n (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX,\n (l > 8 ? fy ** 3 : l / KAPPA) * WY,\n (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ,\n ];\n};\n\n/** Zero-allocation sibling of labToXyzValues — writes [x, y, z] into `out`. */\nexport const labToXyzValuesInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n out[0] = (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX;\n out[1] = (l > 8 ? fy ** 3 : l / KAPPA) * WY;\n out[2] = (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ;\n};\n\nexport const labToXyz = ({ l, a, b, alpha }: LabColor): XyzColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n return { x, y, z, alpha };\n};\n\nexport const rgbToLab = (rgb: RgbColor): LabColor => xyzToLab(rgbToXyz(rgb));\n\n/** RGB → CIE Lab using D65 white point (screen-native; used for perceptual difference). */\nexport const rgbToLabD65 = ({ r, g, b, alpha }: RgbColor): LabColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const x = 100 * (0.41239079926595951 * lr + 0.35758433938387796 * lg + 0.18048078840183429 * lb);\n const y = 100 * (0.21263900587151036 * lr + 0.71516867876775592 * lg + 0.072192315360733714 * lb);\n const z = 100 * (0.019330818715591849 * lr + 0.11919477979462599 * lg + 0.95053215224966059 * lb);\n const fy = f(y / D65_WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / D65_WX) - fy) || 0,\n b: 200 * (fy - f(z / D65_WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\nexport const deltaE2000 = (lab1: LabColor, lab2: LabColor): number => {\n const { l: L1, a: a1, b: b1 } = lab1;\n const { l: L2, a: a2, b: b2 } = lab2;\n const rad = Math.PI / 180;\n const deg = 180 / Math.PI;\n\n const C1 = Math.sqrt(a1 ** 2 + b1 ** 2);\n const C2 = Math.sqrt(a2 ** 2 + b2 ** 2);\n const Cab = ((C1 + C2) / 2) ** 7;\n const G = 0.5 * (1 - Math.sqrt(Cab / (Cab + 25 ** 7)));\n const a1p = a1 * (1 + G);\n const a2p = a2 * (1 + G);\n const C1p = Math.sqrt(a1p ** 2 + b1 ** 2);\n const C2p = Math.sqrt(a2p ** 2 + b2 ** 2);\n const Cp = (C1p + C2p) / 2;\n\n const h1p = a1p === 0 && b1 === 0 ? 0 : Math.atan2(b1, a1p) * deg;\n const h2p = a2p === 0 && b2 === 0 ? 0 : Math.atan2(b2, a2p) * deg;\n const h1 = h1p < 0 ? h1p + 360 : h1p;\n const h2 = h2p < 0 ? h2p + 360 : h2p;\n\n let dhp = h2 - h1;\n const absDh = Math.abs(h2 - h1);\n if (absDh > 180 && h2 <= h1) dhp += 360;\n else if (absDh > 180 && h2 > h1) dhp -= 360;\n\n const Lm = (L1 + L2) / 2;\n let Hm = h1 + h2;\n if (absDh <= 180) Hm /= 2;\n else Hm = (h1 + h2 < 360 ? Hm + 360 : Hm - 360) / 2;\n\n const T =\n 1 -\n 0.17 * Math.cos(rad * (Hm - 30)) +\n 0.24 * Math.cos(2 * rad * Hm) +\n 0.32 * Math.cos(rad * (3 * Hm + 6)) -\n 0.2 * Math.cos(rad * (4 * Hm - 63));\n\n const dLp = L2 - L1;\n const dCp = C2p - C1p;\n const dHp = 2 * Math.sin((rad * dhp) / 2) * Math.sqrt(C1p * C2p);\n\n const SL = 1 + (0.015 * (Lm - 50) ** 2) / Math.sqrt(20 + (Lm - 50) ** 2);\n const SC = 1 + 0.045 * Cp;\n const SH = 1 + 0.015 * Cp * T;\n\n const RC7 = Cp ** 7;\n const RC = 2 * Math.sqrt(RC7 / (RC7 + 25 ** 7));\n const dTheta = 30 * Math.exp(-(((Hm - 275) / 25) ** 2));\n const RT = -RC * Math.sin(2 * rad * dTheta);\n\n return Math.sqrt((dLp / SL) ** 2 + (dCp / SC) ** 2 + (dHp / SH) ** 2 + RT * (dCp / SC) * (dHp / SH));\n};\n\nexport const labToRgb = (lab: LabColor): RgbColor => xyzToRgb(labToXyz(lab));\n\n/**\n * Unclamped Lab (D50) → gamma-encoded sRGB (0–255). Channels may exceed [0, 255] or go\n * negative for colors outside the sRGB gamut. Preserves out-of-gamut information so callers\n * (mapSrgb, inGamut*) can detect and map the color; sRGB output methods clamp at the edge.\n */\nexport const labToRgbUnclamped = ({ l, a, b, alpha }: LabColor): RgbColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// CSS Color 4: lab(L a b / alpha). L: number|percentage|none (100% = 100).\n// a/b: number|percentage|none (100% = 125).\nconst LAB_RE = new RegExp(\n `^lab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseLabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100, so value is unchanged whether `%` present\n const a = g.ap ? parseNum(g.a!) * 1.25 : parseNum(g.a!);\n const b = g.bp ? parseNum(g.b!) * 1.25 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return labToRgbUnclamped({\n l: clamp(l, 0, 100),\n a,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'lab',\n });\n};\n\nexport const parseLabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return labToRgbUnclamped({\n l: clamp(sanitize(l), 0, 100),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'lab',\n });\n};\n"]}
'use strict';var s=r=>{let n=Math.abs(r),e=n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return r<0?-e:e},a=r=>{let n=Math.abs(r),e=n<=.0031308?12.92*n:1.055*n**(1/2.4)-.055;return r<0?-e:e},t=1.09929682680944,o=.018053968510807,b=r=>{let n=Math.abs(r),e=n<o*4.5?n/4.5:((n+t-1)/t)**(1/.45);return r<0?-e:e},c=r=>{let n=Math.abs(r),e=n<o?4.5*n:t*n**.45-(t-1);return r<0?-e:e};exports.a=s;exports.b=a;exports.c=b;exports.d=c;//# sourceMappingURL=chunk-INDSIUQQ.cjs.map
//# sourceMappingURL=chunk-INDSIUQQ.cjs.map
{"version":3,"sources":["../src/transfer.ts"],"names":["srgbToLinear","c","abs","linear","srgbFromLinear","n","encoded","REC2020_ALPHA","REC2020_BETA","rec2020ToLinear","rec2020FromLinear"],"mappings":"aAMO,IAAMA,CAAAA,CAAgBC,GAAsB,CACjD,IAAMC,EAAM,IAAA,CAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,EAAO,OAAUA,CAAAA,CAAM,KAAA,CAAA,CAAA,CAAUA,CAAAA,CAAM,IAAA,EAAS,KAAA,GAAU,GAAA,CACzE,OAAOD,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAQaC,EAAkBC,CAAAA,EAAsB,CACnD,IAAMH,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAIG,CAAC,CAAA,CAChBC,CAAAA,CAAUJ,CAAAA,EAAO,QAAA,CAAY,KAAA,CAAQA,CAAAA,CAAM,MAAQA,CAAAA,GAAQ,CAAA,CAAI,GAAA,CAAA,CAAO,IAAA,CAC5E,OAAOG,CAAAA,CAAI,EAAI,CAACC,CAAAA,CAAUA,CAC5B,CAAA,CAGMC,CAAAA,CAAgB,gBAAA,CAChBC,EAAe,gBAAA,CAGRC,CAAAA,CAAmBR,CAAAA,EAAsB,CACpD,IAAMC,CAAAA,CAAM,KAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,CAAMM,CAAAA,CAAe,IAAMN,CAAAA,CAAM,GAAA,CAAA,CAAA,CAAQA,CAAAA,CAAMK,CAAAA,CAAgB,CAAA,EAAKA,CAAAA,IAAmB,EAAI,GAAA,CAAA,CAC1G,OAAON,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAGaO,CAAAA,CAAqBL,CAAAA,EAAsB,CACtD,IAAMH,CAAAA,CAAM,KAAK,GAAA,CAAIG,CAAC,CAAA,CAChBC,CAAAA,CAAUJ,CAAAA,CAAMM,CAAAA,CAAe,IAAMN,CAAAA,CAAMK,CAAAA,CAAgBL,CAAAA,EAAO,GAAA,EAAQK,CAAAA,CAAgB,CAAA,CAAA,CAChG,OAAOF,CAAAA,CAAI,CAAA,CAAI,CAACC,CAAAA,CAAUA,CAC5B","file":"chunk-INDSIUQQ.cjs","sourcesContent":["/**\n * sRGB / Display-P3 transfer function (IEC 61966-2-1), extended to the full real line.\n * For in-gamut values [0, 1] this is the standard curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec for out-of-gamut channels.\n */\nexport const srgbToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs <= 0.04045 ? abs / 12.92 : ((abs + 0.055) / 1.055) ** 2.4;\n return c < 0 ? -linear : linear;\n};\n\n/**\n * Linear → gamma-encoded sRGB (extended piecewise, per CSS Color 4).\n * For in-gamut values [0, 1] this is the standard IEC 61966-2-1 curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec and display-p3 behaviour for out-of-gamut channels.\n */\nexport const srgbFromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs <= 0.0031308 ? 12.92 * abs : 1.055 * abs ** (1 / 2.4) - 0.055;\n return n < 0 ? -encoded : encoded;\n};\n\n/** BT.2020 transfer function constants. */\nconst REC2020_ALPHA = 1.09929682680944;\nconst REC2020_BETA = 0.018053968510807;\n\n/** BT.2020 gamma-encoded → linear. Extended to the full real line (sign-preserving). */\nexport const rec2020ToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs < REC2020_BETA * 4.5 ? abs / 4.5 : ((abs + REC2020_ALPHA - 1) / REC2020_ALPHA) ** (1 / 0.45);\n return c < 0 ? -linear : linear;\n};\n\n/** BT.2020 linear → gamma-encoded. Extended to the full real line (sign-preserving). */\nexport const rec2020FromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs < REC2020_BETA ? 4.5 * abs : REC2020_ALPHA * abs ** 0.45 - (REC2020_ALPHA - 1);\n return n < 0 ? -encoded : encoded;\n};\n"]}
import {a,b}from'./chunk-YLJRINFM.mjs';import {a as a$2}from'./chunk-Q3O3QQ4H.mjs';import {a as a$1,h as h$1,i,f,g,l,k}from'./chunk-IOXRZECH.mjs';var U=.4122214708,z=.5363325363,q=.0514459929,D=.2119034982,H=.6806995451,J=.1073969566,P=.0883024619,Q=.2817188376,V=.6299787005,W=.2104542553,X=.793617785,Y=-0.0040720468,Z=1.9779984951,nn=-2.428592205,on=.4505937099,rn=.0259040371,tn=.7827717662,sn=-0.808675766,I=.3963377774,S=.2158037573,O=-0.1055613458,B=-0.0638541728,h=-0.0894841775,x=-1.291485548,A=4.0767416613,C=-3.3077115904,w=.2309699287,T=-1.2684380041,y=2.6097574007,G=-0.3413193963,d=-0.0041960865,N=-0.7034186145,$=1.7076147009;var cn=(o,n,r)=>{let t=Math.cbrt(U*o+z*n+q*r),s=Math.cbrt(D*o+H*n+J*r),c=Math.cbrt(P*o+Q*n+V*r);return [W*t+X*s+Y*c,Z*t+nn*s+on*c,rn*t+tn*s+sn*c]},Mn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=cn(a(o/255),a(n/255),a(r/255));return {l:s,a:c,b:e,alpha:t}},j=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=en(o,n,r);return {r:b(s)*255,g:b(c)*255,b:b(e)*255,alpha:t}},un=({l:o,a:n,b:r,alpha:t})=>{if(n===0&&r===0){let K=o**3,k=b(a$1(K,0,1))*255;return a$2({r:k,g:k,b:k,alpha:t})}let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,b$1=e**3,p=4.0767416613*_-3.3077115904*l+.2309699287*b$1,E=-1.2684380041*_+2.6097574007*l-.3413193963*b$1,F=-0.0041960865*_-.7034186145*l+1.7076147009*b$1;return a$2({r:b(a$1(p,0,1))*255,g:b(a$1(E,0,1))*255,b:b(a$1(F,0,1))*255,alpha:t})},mn=(o,n,r,t)=>{if(r===0&&t===0){let p=n**3;o[0]=p,o[1]=p,o[2]=p;return}let s=n+I*r+S*t,c=n+O*r+B*t,e=n+h*r+x*t,_=s**3,l=c**3,b=e**3;o[0]=A*_+C*l+w*b,o[1]=T*_+y*l+G*b,o[2]=d*_+N*l+$*b;},en=(o,n,r)=>{if(n===0&&r===0){let b=o**3;return [b,b,b]}let t=o+I*n+S*r,s=o+O*n+B*r,c=o+h*n+x*r,e=t**3,_=s**3,l=c**3;return [A*e+C*_+w*l,T*e+y*_+G*l,d*e+N*_+$*l]},pn=o=>{if(!h$1(o)||o.colorSpace==="lab"||!i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !f(n)||!f(r)||!f(t)||!f(s)||g(n)>1?null:j({l:g(n),a:g(r),b:g(t),alpha:a$1(g(s),0,1)})},_n=new RegExp(`^oklab\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<a>${k})(?<ap>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),vn=o=>{if(typeof o!="string")return null;let n=_n.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?l(n.l)/100:l(n.l),t=n.ap?l(n.a)*.004:l(n.a),s=n.bp?l(n.b)*.004:l(n.b),c=n.al===void 0?1:l(n.al)/(n.alp?100:1);return j({l:r,a:t,b:s,alpha:a$1(c,0,1)})};export{cn as a,Mn as b,j as c,un as d,mn as e,en as f,pn as g,vn as h};//# sourceMappingURL=chunk-OX5CMKKI.mjs.map
//# sourceMappingURL=chunk-OX5CMKKI.mjs.map
{"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","v","srgb","clamp","clampRgb","l_","m_","s_","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"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","file":"chunk-OX5CMKKI.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n const srgb = srgbFromLinear(clamp(v, 0, 1)) * 255;\n return clampRgb({ r: srgb, g: srgb, b: srgb, alpha });\n }\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n // Achromatic short-circuit: M1⁻¹ rows sum to 1 mathematically, but floating-point\n // rounding leaves lr/lg/lb ~1 ULP apart, which gets amplified into a phantom hue\n // downstream in rgbToHslRaw. Explicitly return lv for all channels.\n if (a === 0 && b === 0) {\n const v = l ** 3;\n out[0] = v;\n out[1] = v;\n out[2] = v;\n return;\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n return [v, v, v];\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]}
'use strict';var chunkINDSIUQQ_cjs=require('./chunk-INDSIUQQ.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var L=96.4295675298354,O=100,w=82.51046025104603,lo=.4123907992659595,ao=.35758433938387796,co=.1804807884018343,eo=.21263900587151036,bo=.7151686787677559,po=.07219231536073371,uo=.01933081871559185,_o=.11919477979462599,yo=.9505321522496606,A=.032409699419045215,B=-0.015373831775700935,G=-0.004986107602930032,I=-0.009692436362808799,P=.018759675015077207,U=.0004155505740717561,F=.000556300796969936,H=-0.002039769588889766,K=.010569715142428786,Wo=1.0479297925449969,Eo=.022946870601609652,qo=-0.05019226628920524,jo=.02962780877005599,Ao=.9904344267538799,Bo=-0.017073799063418826,Go=-0.009243040646204504,Io=.015055191490298152,Po=.7518742814281371,xo=.955473421488075,go=-0.02309845494876471,mo=.06325924320057072,Do=-0.0283697093338637,zo=1.0099953980813041,io=.021041441191917323,Xo=.012314014864481998,ho=-0.020507649298898964,Co=1.330365926242124,sn=({r:n,g:o,b:t,alpha:s})=>{let r=chunkINDSIUQQ_cjs.a(n/255),l=chunkINDSIUQQ_cjs.a(o/255),a=chunkINDSIUQQ_cjs.a(t/255);return {x:100*(lo*r+ao*l+co*a),y:100*(eo*r+bo*l+po*a),z:100*(uo*r+_o*l+yo*a),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(s,3),0,1),colorSpace:"xyz-d65"}},Uo=(n,o,t)=>[A*n+B*o+G*t,I*n+P*o+U*t,F*n+H*o+K*t],fo=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=Uo(n,o,t);return {r:chunkINDSIUQQ_cjs.b(r)*255,g:chunkINDSIUQQ_cjs.b(l)*255,b:chunkINDSIUQQ_cjs.b(a)*255,alpha:s}},To=({r:n,g:o,b:t,alpha:s})=>{let r=chunkINDSIUQQ_cjs.a(n/255),l=chunkINDSIUQQ_cjs.a(o/255),a=chunkINDSIUQQ_cjs.a(t/255),u=100*(lo*r+ao*l+co*a),e=100*(eo*r+bo*l+po*a),x=100*(uo*r+_o*l+yo*a);return {x:Wo*u+Eo*e+qo*x,y:jo*u+Ao*e+Bo*x,z:Go*u+Io*e+Po*x,alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(s,3),0,1)}},ln=(n,o,t,s)=>{let r=xo*o+go*t+mo*s,l=Do*o+zo*t+io*s,a=Xo*o+ho*t+Co*s;n[0]=A*r+B*l+G*a,n[1]=I*r+P*l+U*a,n[2]=F*r+H*l+K*a;},M=(n,o,t)=>{let s=xo*n+go*o+mo*t,r=Do*n+zo*o+io*t,l=Xo*n+ho*o+Co*t;return [A*s+B*r+G*l,I*s+P*r+U*l,F*s+H*r+K*l]},Ro=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return chunk3V4MONNR_cjs.a({r:chunkINDSIUQQ_cjs.b(r)*255,g:chunkINDSIUQQ_cjs.b(l)*255,b:chunkINDSIUQQ_cjs.b(a)*255,alpha:s})},So=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return {r:chunkINDSIUQQ_cjs.b(r)*255,g:chunkINDSIUQQ_cjs.b(l)*255,b:chunkINDSIUQQ_cjs.b(a)*255,alpha:s}},an=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace==="xyz-d65"||!chunkYISEJCI6_cjs.i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !chunkYISEJCI6_cjs.e(o)||!chunkYISEJCI6_cjs.e(t)||!chunkYISEJCI6_cjs.e(s)||!chunkYISEJCI6_cjs.e(r)?null:So({x:o,y:t,z:s,alpha:chunkYISEJCI6_cjs.a(r,0,1)})},cn=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace!=="xyz-d65"||!chunkYISEJCI6_cjs.i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||!chunkYISEJCI6_cjs.f(r)?null:fo({x:chunkYISEJCI6_cjs.g(o),y:chunkYISEJCI6_cjs.g(t),z:chunkYISEJCI6_cjs.g(s),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(r),0,1)})},Fo=new RegExp(`^color\\(\\s*xyz-d65\\s+(?<x>${chunkYISEJCI6_cjs.k})(?<xp>%?)\\s+(?<y>${chunkYISEJCI6_cjs.k})(?<yp>%?)\\s+(?<z>${chunkYISEJCI6_cjs.k})(?<zp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),Ho=new RegExp(`^color\\(\\s*xyz-d50\\s+(?<x>${chunkYISEJCI6_cjs.k})(?<xp>%?)\\s+(?<y>${chunkYISEJCI6_cjs.k})(?<yp>%?)\\s+(?<z>${chunkYISEJCI6_cjs.k})(?<zp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),en=n=>{if(typeof n!="string")return null;let o=Fo.exec(n.trim())?.groups;if(!o)return null;let t=chunkYISEJCI6_cjs.l(o.x),s=chunkYISEJCI6_cjs.l(o.y),r=chunkYISEJCI6_cjs.l(o.z),l=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return fo({x:t,y:s,z:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})},bn=n=>{if(typeof n!="string")return null;let o=Ho.exec(n.trim())?.groups;if(!o)return null;let t=chunkYISEJCI6_cjs.l(o.x),s=chunkYISEJCI6_cjs.l(o.y),r=chunkYISEJCI6_cjs.l(o.z),l=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return So({x:t,y:s,z:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})};var Ko=.3127/.329*100,vo=100,Vo=(1-.3127-.329)/.329*100,S=216/24389,z=24389/27,C=n=>n>S?Math.cbrt(n):(z*n+16)/116,Jo=({x:n,y:o,z:t,alpha:s})=>{let r=C(o/O);return {l:116*r-16,a:500*(C(n/L)-r)||0,b:200*(r-C(t/w))||0,alpha:chunkYISEJCI6_cjs.b(s,3),colorSpace:"lab"}},Lo=(n,o,t)=>{let s=(n+16)/116,r=o/500+s,l=s-t/200;return [(r**3>S?r**3:(116*r-16)/z)*L,(n>8?s**3:n/z)*O,(l**3>S?l**3:(116*l-16)/z)*w]},xn=(n,o,t,s)=>{let r=(o+16)/116,l=t/500+r,a=r-s/200;n[0]=(l**3>S?l**3:(116*l-16)/z)*L,n[1]=(o>8?r**3:o/z)*O,n[2]=(a**3>S?a**3:(116*a-16)/z)*w;},Qo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t);return {x:r,y:l,z:a,alpha:s}},gn=n=>Jo(To(n)),mn=({r:n,g:o,b:t,alpha:s})=>{let r=chunkINDSIUQQ_cjs.a(n/255),l=chunkINDSIUQQ_cjs.a(o/255),a=chunkINDSIUQQ_cjs.a(t/255),u=100*(.4123907992659595*r+.35758433938387796*l+.1804807884018343*a),e=100*(.21263900587151036*r+.7151686787677559*l+.07219231536073371*a),x=100*(.01933081871559185*r+.11919477979462599*l+.9505321522496606*a),f=C(e/vo);return {l:116*f-16,a:500*(C(u/Ko)-f)||0,b:200*(f-C(x/Vo))||0,alpha:chunkYISEJCI6_cjs.b(s,3),colorSpace:"lab"}},Dn=(n,o)=>{let{l:t,a:s,b:r}=n,{l,a,b:u}=o,e=Math.PI/180,x=180/Math.PI,f=Math.sqrt(s**2+r**2),wo=Math.sqrt(a**2+u**2),v=((f+wo)/2)**7,V=.5*(1-Math.sqrt(v/(v+25**7))),Y=s*(1+V),Z=a*(1+V),k=Math.sqrt(Y**2+r**2),$=Math.sqrt(Z**2+u**2),N=(k+$)/2,W=Y===0&&r===0?0:Math.atan2(r,Y)*x,E=Z===0&&u===0?0:Math.atan2(u,Z)*x,i=W<0?W+360:W,X=E<0?E+360:E,q=X-i,j=Math.abs(X-i);j>180&&X<=i?q+=360:j>180&&X>i&&(q-=360);let J=(t+l)/2,D=i+X;j<=180?D/=2:D=(i+X<360?D+360:D-360)/2;let Mo=1-.17*Math.cos(e*(D-30))+.24*Math.cos(2*e*D)+.32*Math.cos(e*(3*D+6))-.2*Math.cos(e*(4*D-63)),Yo=l-t,Q=$-k,oo=2*Math.sin(e*q/2)*Math.sqrt(k*$),Zo=1+.015*(J-50)**2/Math.sqrt(20+(J-50)**2),no=1+.045*N,ro=1+.015*N*Mo,to=N**7,ko=2*Math.sqrt(to/(to+25**7)),$o=30*Math.exp(-(((D-275)/25)**2)),No=-ko*Math.sin(2*e*$o);return Math.sqrt((Yo/Zo)**2+(Q/no)**2+(oo/ro)**2+No*(Q/no)*(oo/ro))},zn=n=>Ro(Qo(n)),Oo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t),[u,e,x]=M(r,l,a);return {r:chunkINDSIUQQ_cjs.b(u)*255,g:chunkINDSIUQQ_cjs.b(e)*255,b:chunkINDSIUQQ_cjs.b(x)*255,alpha:s}},on=new RegExp(`^lab\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<a>${chunkYISEJCI6_cjs.k})(?<ap>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),Xn=n=>{if(typeof n!="string")return null;let o=on.exec(n.trim())?.groups;if(!o)return null;let t=chunkYISEJCI6_cjs.l(o.l),s=o.ap?chunkYISEJCI6_cjs.l(o.a)*1.25:chunkYISEJCI6_cjs.l(o.a),r=o.bp?chunkYISEJCI6_cjs.l(o.b)*1.25:chunkYISEJCI6_cjs.l(o.b),l=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return Oo({l:chunkYISEJCI6_cjs.a(t,0,100),a:s,b:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})},hn=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace!=="lab"||!chunkYISEJCI6_cjs.i(n,["l","a","b"]))return null;let{l:o,a:t,b:s,alpha:r=1}=n;return !chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||!chunkYISEJCI6_cjs.f(r)?null:Oo({l:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(o),0,100),a:chunkYISEJCI6_cjs.g(t),b:chunkYISEJCI6_cjs.g(s),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(r),0,1)})};exports.a=sn;exports.b=Uo;exports.c=To;exports.d=ln;exports.e=M;exports.f=an;exports.g=cn;exports.h=en;exports.i=bn;exports.j=Lo;exports.k=xn;exports.l=Qo;exports.m=gn;exports.n=mn;exports.o=Dn;exports.p=zn;exports.q=Oo;exports.r=Xn;exports.s=hn;//# sourceMappingURL=chunk-PI5KJ3ZM.cjs.map
//# sourceMappingURL=chunk-PI5KJ3ZM.cjs.map
{"version":3,"sources":["../src/colorModels/xyz.ts","../src/colorModels/lab.ts"],"names":["D50_WX","D50_WY","D50_WZ","S_XR","S_XG","S_XB","S_YR","S_YG","S_YB","S_ZR","S_ZG","S_ZB","X_RX","X_RY","X_RZ","X_GX","X_GY","X_GZ","X_BX","X_BY","X_BZ","D65_TO_D50_XX","D65_TO_D50_XY","D65_TO_D50_XZ","D65_TO_D50_YX","D65_TO_D50_YY","D65_TO_D50_YZ","D65_TO_D50_ZX","D65_TO_D50_ZY","D65_TO_D50_ZZ","D50_TO_D65_XX","D50_TO_D65_XY","D50_TO_D65_XZ","D50_TO_D65_YX","D50_TO_D65_YY","D50_TO_D65_YZ","D50_TO_D65_ZX","D50_TO_D65_ZY","D50_TO_D65_ZZ","rgbToXyzD65","r","g","b","alpha","lr","srgbToLinear","lg","lb","clamp","round","xyzD65ToLinearSrgb","x","y","z","xyzD65ToRgbUnclamped","srgbFromLinear","rgbToXyz","xd65","yd65","zd65","xyzD50ToLinearSrgbInto","out","xyzD50ToLinearSrgb","xyzToRgb","clampRgb","xyzToRgbUnclamped","parseXyzObject","input","isObject","hasKeys","isNumber","parseXyzD65Object","isAnyNumber","sanitize","XYZ_D65_RE","NUM_OR_NONE","XYZ_D50_RE","parseXyzD65String","parseNum","parseXyzD50String","D65_WX","D65_WY","D65_WZ","EPSILON","KAPPA","f","t","xyzToLab","fy","labToXyzValues","l","a","fx","fz","labToXyzValuesInto","labToXyz","rgbToLab","rgb","rgbToLabD65","deltaE2000","lab1","lab2","L1","a1","b1","L2","a2","b2","rad","deg","C1","C2","Cab","G","a1p","a2p","C1p","C2p","Cp","h1p","h2p","h1","h2","dhp","absDh","Lm","Hm","T","dLp","dCp","dHp","SL","SC","SH","RC7","RC","dTheta","RT","labToRgb","lab","labToRgbUnclamped","LAB_RE","parseLabString","parseLabObject"],"mappings":"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","file":"chunk-PI5KJ3ZM.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { RgbColor, XyzColor, XyzD65Color } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// D50 white point (CSS Color 4: xy = 0.3457/0.3585)\nexport const D50_WX = 96.42956752983539;\nexport const D50_WY = 100;\nexport const D50_WZ = 82.51046025104603;\n\n// ── CSS Color 4 exact rational matrices ─────────────────────────────────────\n// sRGB linear → XYZ D65 (xyz in 0–1; callers scale to 0–100 by multiplying).\nconst S_XR = 0.41239079926595951,\n S_XG = 0.35758433938387796,\n S_XB = 0.18048078840183429;\nconst S_YR = 0.21263900587151036,\n S_YG = 0.71516867876775592,\n S_YB = 0.072192315360733714;\nconst S_ZR = 0.019330818715591849,\n S_ZG = 0.11919477979462599,\n S_ZB = 0.95053215224966059;\n\n// XYZ D65 (0–100 scale) → sRGB linear (0–1). Equals the CSS inverse matrix ÷100.\nconst X_RX = 0.032409699419045213,\n X_RY = -0.015373831775700935,\n X_RZ = -0.0049861076029300327;\nconst X_GX = -0.0096924363628087984,\n X_GY = 0.018759675015077206,\n X_GZ = 0.00041555057407175612;\nconst X_BX = 0.00055630079696993608,\n X_BY = -0.0020397695888897657,\n X_BZ = 0.010569715142428786;\n\n// Bradford D65 → D50 (CSS Color 4)\nconst D65_TO_D50_XX = 1.0479297925449969,\n D65_TO_D50_XY = 0.022946870601609652,\n D65_TO_D50_XZ = -0.05019226628920524;\nconst D65_TO_D50_YX = 0.02962780877005599,\n D65_TO_D50_YY = 0.9904344267538799,\n D65_TO_D50_YZ = -0.017073799063418826;\nconst D65_TO_D50_ZX = -0.009243040646204504,\n D65_TO_D50_ZY = 0.015055191490298152,\n D65_TO_D50_ZZ = 0.7518742814281371;\n\n// Bradford D50 → D65 (CSS Color 4, inverse of above)\nconst D50_TO_D65_XX = 0.955473421488075,\n D50_TO_D65_XY = -0.02309845494876471,\n D50_TO_D65_XZ = 0.06325924320057072;\nconst D50_TO_D65_YX = -0.0283697093338637,\n D50_TO_D65_YY = 1.0099953980813041,\n D50_TO_D65_YZ = 0.021041441191917323;\nconst D50_TO_D65_ZX = 0.012314014864481998,\n D50_TO_D65_ZY = -0.020507649298898964,\n D50_TO_D65_ZZ = 1.330365926242124;\n\n// ── RGB ↔ XYZ D65 ───────────────────────────────────────────────────────────\n\n/** sRGB (0–255) → XYZ D65 (0–100, screen-native, no Bradford adaptation). */\nexport const rgbToXyzD65 = ({ r, g, b, alpha }: RgbColor): XyzD65Color => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n return {\n x: 100 * (S_XR * lr + S_XG * lg + S_XB * lb),\n y: 100 * (S_YR * lr + S_YG * lg + S_YB * lb),\n z: 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb),\n alpha: clamp(round(alpha, 3), 0, 1),\n colorSpace: 'xyz-d65' as const,\n };\n};\n\n/** XYZ D65 (0–100) → linear sRGB (0–1, unclamped). */\nexport const xyzD65ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => [\n X_RX * x + X_RY * y + X_RZ * z,\n X_GX * x + X_GY * y + X_GZ * z,\n X_BX * x + X_BY * y + X_BZ * z,\n];\n\nconst xyzD65ToRgbUnclamped = ({ x, y, z, alpha }: XyzD65Color): RgbColor => {\n const [lr, lg, lb] = xyzD65ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── RGB ↔ XYZ D50 ───────────────────────────────────────────────────────────\n\nexport const rgbToXyz = ({ r, g, b, alpha }: RgbColor): XyzColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const xd65 = 100 * (S_XR * lr + S_XG * lg + S_XB * lb);\n const yd65 = 100 * (S_YR * lr + S_YG * lg + S_YB * lb);\n const zd65 = 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb);\n return {\n x: D65_TO_D50_XX * xd65 + D65_TO_D50_XY * yd65 + D65_TO_D50_XZ * zd65,\n y: D65_TO_D50_YX * xd65 + D65_TO_D50_YY * yd65 + D65_TO_D50_YZ * zd65,\n z: D65_TO_D50_ZX * xd65 + D65_TO_D50_ZY * yd65 + D65_TO_D50_ZZ * zd65,\n alpha: clamp(round(alpha, 3), 0, 1),\n };\n};\n\n/** Zero-allocation sibling of xyzD50ToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const xyzD50ToLinearSrgbInto = (out: Float64Array | number[], x: number, y: number, z: number): void => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n out[0] = X_RX * xd65 + X_RY * yd65 + X_RZ * zd65;\n out[1] = X_GX * xd65 + X_GY * yd65 + X_GZ * zd65;\n out[2] = X_BX * xd65 + X_BY * yd65 + X_BZ * zd65;\n};\n\n/** XYZ D50 → linear sRGB (no gamma, no clamping). x/y/z are in 0–100 scale. */\nexport const xyzD50ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n return [\n X_RX * xd65 + X_RY * yd65 + X_RZ * zd65,\n X_GX * xd65 + X_GY * yd65 + X_GZ * zd65,\n X_BX * xd65 + X_BY * yd65 + X_BZ * zd65,\n ];\n};\n\nexport const xyzToRgb = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return clampRgb({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n });\n};\n\n/** Unclamped XYZ D50 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst xyzToRgbUnclamped = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── Parsers ─────────────────────────────────────────────────────────────────\n\nexport const parseXyzObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Reject D65-discriminated objects — parseXyzD65Object owns those.\n if ((input as { colorSpace?: unknown }).colorSpace === 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isNumber(x) || !isNumber(y) || !isNumber(z) || !isNumber(alpha)) return null;\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n\nexport const parseXyzD65Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isAnyNumber(x) || !isAnyNumber(y) || !isAnyNumber(z) || !isAnyNumber(alpha)) return null;\n return xyzD65ToRgbUnclamped({\n x: sanitize(x),\n y: sanitize(y),\n z: sanitize(z),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\n// CSS Color 4: color(xyz-d65 x y z / alpha). Channels accept number|percentage|none.\n// The library uses a 0–100 XYZ scale (to match the existing XyzColor convention); percent is\n// treated as the same scale for symmetry with the emitted string (100% = 100).\nconst XYZ_D65_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d65\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nconst XYZ_D50_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d50\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseXyzD65String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D65_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzD65ToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\nexport const parseXyzD50String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D50_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { LabColor, RgbColor, XyzColor } from '../types.js';\nimport { D50_WX as WX, D50_WY as WY, D50_WZ as WZ, rgbToXyz, xyzD50ToLinearSrgb, xyzToRgb } from './xyz.js';\n\n// D65 white point derived from CIE chromaticity (x=0.3127, y=0.329)\nconst D65_WX = (0.3127 / 0.329) * 100;\nconst D65_WY = 100;\nconst D65_WZ = ((1 - 0.3127 - 0.329) / 0.329) * 100;\n\nconst EPSILON = 216 / 24389;\nconst KAPPA = 24389 / 27;\n\nconst f = (t: number) => (t > EPSILON ? Math.cbrt(t) : (KAPPA * t + 16) / 116);\n\nexport const xyzToLab = ({ x, y, z, alpha }: XyzColor): LabColor => {\n const fy = f(y / WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / WX) - fy) || 0, // || 0 suppresses −0; NaN is impossible since WX/WZ are non-zero constants\n b: 200 * (fy - f(z / WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\n/** Primitives-only Lab → XYZ D50. x/y/z in 0–100 scale. Shared with channels.ts hot paths. */\nexport const labToXyzValues = (l: number, a: number, b: number): [number, number, number] => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n return [\n (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX,\n (l > 8 ? fy ** 3 : l / KAPPA) * WY,\n (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ,\n ];\n};\n\n/** Zero-allocation sibling of labToXyzValues — writes [x, y, z] into `out`. */\nexport const labToXyzValuesInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n out[0] = (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX;\n out[1] = (l > 8 ? fy ** 3 : l / KAPPA) * WY;\n out[2] = (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ;\n};\n\nexport const labToXyz = ({ l, a, b, alpha }: LabColor): XyzColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n return { x, y, z, alpha };\n};\n\nexport const rgbToLab = (rgb: RgbColor): LabColor => xyzToLab(rgbToXyz(rgb));\n\n/** RGB → CIE Lab using D65 white point (screen-native; used for perceptual difference). */\nexport const rgbToLabD65 = ({ r, g, b, alpha }: RgbColor): LabColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const x = 100 * (0.41239079926595951 * lr + 0.35758433938387796 * lg + 0.18048078840183429 * lb);\n const y = 100 * (0.21263900587151036 * lr + 0.71516867876775592 * lg + 0.072192315360733714 * lb);\n const z = 100 * (0.019330818715591849 * lr + 0.11919477979462599 * lg + 0.95053215224966059 * lb);\n const fy = f(y / D65_WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / D65_WX) - fy) || 0,\n b: 200 * (fy - f(z / D65_WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\nexport const deltaE2000 = (lab1: LabColor, lab2: LabColor): number => {\n const { l: L1, a: a1, b: b1 } = lab1;\n const { l: L2, a: a2, b: b2 } = lab2;\n const rad = Math.PI / 180;\n const deg = 180 / Math.PI;\n\n const C1 = Math.sqrt(a1 ** 2 + b1 ** 2);\n const C2 = Math.sqrt(a2 ** 2 + b2 ** 2);\n const Cab = ((C1 + C2) / 2) ** 7;\n const G = 0.5 * (1 - Math.sqrt(Cab / (Cab + 25 ** 7)));\n const a1p = a1 * (1 + G);\n const a2p = a2 * (1 + G);\n const C1p = Math.sqrt(a1p ** 2 + b1 ** 2);\n const C2p = Math.sqrt(a2p ** 2 + b2 ** 2);\n const Cp = (C1p + C2p) / 2;\n\n const h1p = a1p === 0 && b1 === 0 ? 0 : Math.atan2(b1, a1p) * deg;\n const h2p = a2p === 0 && b2 === 0 ? 0 : Math.atan2(b2, a2p) * deg;\n const h1 = h1p < 0 ? h1p + 360 : h1p;\n const h2 = h2p < 0 ? h2p + 360 : h2p;\n\n let dhp = h2 - h1;\n const absDh = Math.abs(h2 - h1);\n if (absDh > 180 && h2 <= h1) dhp += 360;\n else if (absDh > 180 && h2 > h1) dhp -= 360;\n\n const Lm = (L1 + L2) / 2;\n let Hm = h1 + h2;\n if (absDh <= 180) Hm /= 2;\n else Hm = (h1 + h2 < 360 ? Hm + 360 : Hm - 360) / 2;\n\n const T =\n 1 -\n 0.17 * Math.cos(rad * (Hm - 30)) +\n 0.24 * Math.cos(2 * rad * Hm) +\n 0.32 * Math.cos(rad * (3 * Hm + 6)) -\n 0.2 * Math.cos(rad * (4 * Hm - 63));\n\n const dLp = L2 - L1;\n const dCp = C2p - C1p;\n const dHp = 2 * Math.sin((rad * dhp) / 2) * Math.sqrt(C1p * C2p);\n\n const SL = 1 + (0.015 * (Lm - 50) ** 2) / Math.sqrt(20 + (Lm - 50) ** 2);\n const SC = 1 + 0.045 * Cp;\n const SH = 1 + 0.015 * Cp * T;\n\n const RC7 = Cp ** 7;\n const RC = 2 * Math.sqrt(RC7 / (RC7 + 25 ** 7));\n const dTheta = 30 * Math.exp(-(((Hm - 275) / 25) ** 2));\n const RT = -RC * Math.sin(2 * rad * dTheta);\n\n return Math.sqrt((dLp / SL) ** 2 + (dCp / SC) ** 2 + (dHp / SH) ** 2 + RT * (dCp / SC) * (dHp / SH));\n};\n\nexport const labToRgb = (lab: LabColor): RgbColor => xyzToRgb(labToXyz(lab));\n\n/**\n * Unclamped Lab (D50) → gamma-encoded sRGB (0–255). Channels may exceed [0, 255] or go\n * negative for colors outside the sRGB gamut. Preserves out-of-gamut information so callers\n * (mapSrgb, inGamut*) can detect and map the color; sRGB output methods clamp at the edge.\n */\nexport const labToRgbUnclamped = ({ l, a, b, alpha }: LabColor): RgbColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// CSS Color 4: lab(L a b / alpha). L: number|percentage|none (100% = 100).\n// a/b: number|percentage|none (100% = 125).\nconst LAB_RE = new RegExp(\n `^lab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseLabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100, so value is unchanged whether `%` present\n const a = g.ap ? parseNum(g.a!) * 1.25 : parseNum(g.a!);\n const b = g.bp ? parseNum(g.b!) * 1.25 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return labToRgbUnclamped({\n l: clamp(l, 0, 100),\n a,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'lab',\n });\n};\n\nexport const parseLabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return labToRgbUnclamped({\n l: clamp(sanitize(l), 0, 100),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'lab',\n });\n};\n"]}
'use strict';var chunkINDSIUQQ_cjs=require('./chunk-INDSIUQQ.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var U=.4122214708,z=.5363325363,q=.0514459929,D=.2119034982,H=.6806995451,J=.1073969566,P=.0883024619,Q=.2817188376,V=.6299787005,W=.2104542553,X=.793617785,Y=-0.0040720468,Z=1.9779984951,nn=-2.428592205,on=.4505937099,rn=.0259040371,tn=.7827717662,sn=-0.808675766,I=.3963377774,S=.2158037573,O=-0.1055613458,B=-0.0638541728,h=-0.0894841775,x=-1.291485548,A=4.0767416613,C=-3.3077115904,w=.2309699287,T=-1.2684380041,y=2.6097574007,G=-0.3413193963,d=-0.0041960865,N=-0.7034186145,$=1.7076147009;var cn=(o,n,r)=>{let t=Math.cbrt(U*o+z*n+q*r),s=Math.cbrt(D*o+H*n+J*r),c=Math.cbrt(P*o+Q*n+V*r);return [W*t+X*s+Y*c,Z*t+nn*s+on*c,rn*t+tn*s+sn*c]},Mn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=cn(chunkINDSIUQQ_cjs.a(o/255),chunkINDSIUQQ_cjs.a(n/255),chunkINDSIUQQ_cjs.a(r/255));return {l:s,a:c,b:e,alpha:t}},j=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=en(o,n,r);return {r:chunkINDSIUQQ_cjs.b(s)*255,g:chunkINDSIUQQ_cjs.b(c)*255,b:chunkINDSIUQQ_cjs.b(e)*255,alpha:t}},un=({l:o,a:n,b:r,alpha:t})=>{if(n===0&&r===0){let K=o**3,k=chunkINDSIUQQ_cjs.b(chunkYISEJCI6_cjs.a(K,0,1))*255;return chunk3V4MONNR_cjs.a({r:k,g:k,b:k,alpha:t})}let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,b=e**3,p=4.0767416613*_-3.3077115904*l+.2309699287*b,E=-1.2684380041*_+2.6097574007*l-.3413193963*b,F=-0.0041960865*_-.7034186145*l+1.7076147009*b;return chunk3V4MONNR_cjs.a({r:chunkINDSIUQQ_cjs.b(chunkYISEJCI6_cjs.a(p,0,1))*255,g:chunkINDSIUQQ_cjs.b(chunkYISEJCI6_cjs.a(E,0,1))*255,b:chunkINDSIUQQ_cjs.b(chunkYISEJCI6_cjs.a(F,0,1))*255,alpha:t})},mn=(o,n,r,t)=>{if(r===0&&t===0){let p=n**3;o[0]=p,o[1]=p,o[2]=p;return}let s=n+I*r+S*t,c=n+O*r+B*t,e=n+h*r+x*t,_=s**3,l=c**3,b=e**3;o[0]=A*_+C*l+w*b,o[1]=T*_+y*l+G*b,o[2]=d*_+N*l+$*b;},en=(o,n,r)=>{if(n===0&&r===0){let b=o**3;return [b,b,b]}let t=o+I*n+S*r,s=o+O*n+B*r,c=o+h*n+x*r,e=t**3,_=s**3,l=c**3;return [A*e+C*_+w*l,T*e+y*_+G*l,d*e+N*_+$*l]},pn=o=>{if(!chunkYISEJCI6_cjs.h(o)||o.colorSpace==="lab"||!chunkYISEJCI6_cjs.i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||chunkYISEJCI6_cjs.g(n)>1?null:j({l:chunkYISEJCI6_cjs.g(n),a:chunkYISEJCI6_cjs.g(r),b:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(s),0,1)})},_n=new RegExp(`^oklab\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<a>${chunkYISEJCI6_cjs.k})(?<ap>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),vn=o=>{if(typeof o!="string")return null;let n=_n.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?chunkYISEJCI6_cjs.l(n.l)/100:chunkYISEJCI6_cjs.l(n.l),t=n.ap?chunkYISEJCI6_cjs.l(n.a)*.004:chunkYISEJCI6_cjs.l(n.a),s=n.bp?chunkYISEJCI6_cjs.l(n.b)*.004:chunkYISEJCI6_cjs.l(n.b),c=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return j({l:r,a:t,b:s,alpha:chunkYISEJCI6_cjs.a(c,0,1)})};exports.a=cn;exports.b=Mn;exports.c=j;exports.d=un;exports.e=mn;exports.f=en;exports.g=pn;exports.h=vn;//# sourceMappingURL=chunk-TRRLWCL6.cjs.map
//# sourceMappingURL=chunk-TRRLWCL6.cjs.map
{"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","v","srgb","clamp","clampRgb","l_","m_","s_","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"uKAQA,IAAMA,EAAQ,WAAA,CACZC,CAAAA,CAAQ,WAAA,CACRC,CAAAA,CAAQ,YACJC,CAAAA,CAAQ,WAAA,CACZC,CAAAA,CAAQ,WAAA,CACRC,EAAQ,WAAA,CACJC,CAAAA,CAAQ,YACZC,CAAAA,CAAQ,WAAA,CACRC,EAAQ,WAAA,CAEJC,CAAAA,CAAS,WAAA,CACbC,CAAAA,CAAS,WACTC,CAAAA,CAAS,aAAA,CACLC,EAAS,YAAA,CACbC,EAAAA,CAAS,aACTC,EAAAA,CAAS,WAAA,CACLC,EAAAA,CAAS,WAAA,CACbC,GAAS,WAAA,CACTC,EAAAA,CAAS,aAELC,CAAAA,CAAU,WAAA,CACdC,EAAU,WAAA,CACNC,CAAAA,CAAU,aAAA,CACdC,CAAAA,CAAU,cACNC,CAAAA,CAAU,aAAA,CACdC,EAAU,YAAA,CAENC,CAAAA,CAAU,aACdC,CAAAA,CAAU,aAAA,CACVC,CAAAA,CAAU,WAAA,CACNC,EAAU,aAAA,CACdC,CAAAA,CAAU,aACVC,CAAAA,CAAU,aAAA,CACNC,EAAU,aAAA,CACdC,CAAAA,CAAU,aAAA,CACVC,CAAAA,CAAU,aAaL,IAAMC,EAAAA,CAAoB,CAACC,CAAAA,CAAYC,CAAAA,CAAYC,IAAyC,CACjG,IAAMC,CAAAA,CAAK,IAAA,CAAK,KAAKrC,CAAAA,CAAQkC,CAAAA,CAAKjC,EAAQkC,CAAAA,CAAKjC,CAAAA,CAAQkC,CAAE,CAAA,CACnDE,CAAAA,CAAK,IAAA,CAAK,IAAA,CAAKnC,EAAQ+B,CAAAA,CAAK9B,CAAAA,CAAQ+B,EAAK9B,CAAAA,CAAQ+B,CAAE,EACnDG,CAAAA,CAAK,IAAA,CAAK,IAAA,CAAKjC,CAAAA,CAAQ4B,EAAK3B,CAAAA,CAAQ4B,CAAAA,CAAK3B,EAAQ4B,CAAE,CAAA,CACzD,OAAO,CACL3B,CAAAA,CAAS4B,CAAAA,CAAK3B,CAAAA,CAAS4B,EAAK3B,CAAAA,CAAS4B,CAAAA,CACrC3B,EAASyB,CAAAA,CAAKxB,EAAAA,CAASyB,EAAKxB,EAAAA,CAASyB,CAAAA,CACrCxB,EAAAA,CAASsB,CAAAA,CAAKrB,GAASsB,CAAAA,CAAKrB,EAAAA,CAASsB,CACvC,CACF,CAAA,CAEaC,GAAa,CAAC,CAAE,CAAA,CAAAC,CAAAA,CAAG,EAAAC,CAAAA,CAAG,CAAA,CAAAC,EAAG,KAAA,CAAAC,CAAM,IAA4B,CACtE,GAAM,CAACC,CAAAA,CAAGC,EAAGC,CAAE,CAAA,CAAId,GAAkBe,mBAAAA,CAAaP,CAAAA,CAAI,GAAG,CAAA,CAAGO,mBAAAA,CAAaN,CAAAA,CAAI,GAAG,EAAGM,mBAAAA,CAAaL,CAAAA,CAAI,GAAG,CAAC,CAAA,CACxG,OAAO,CAAE,CAAA,CAAAE,CAAAA,CAAG,CAAA,CAAAC,EAAG,CAAA,CAAGC,CAAAA,CAAI,MAAAH,CAAM,CAC9B,EAGaK,CAAAA,CAAsB,CAAC,CAAE,CAAA,CAAAJ,EAAG,CAAA,CAAAC,CAAAA,CAAG,EAAAH,CAAAA,CAAG,KAAA,CAAAC,CAAM,CAAA,GAA4B,CAC/E,GAAM,CAACV,EAAIC,CAAAA,CAAIC,CAAE,EAAIc,EAAAA,CAAcL,CAAAA,CAAGC,EAAGH,CAAC,CAAA,CAC1C,OAAO,CACL,EAAGQ,mBAAAA,CAAejB,CAAE,EAAI,GAAA,CACxB,CAAA,CAAGiB,oBAAehB,CAAE,CAAA,CAAI,GAAA,CACxB,CAAA,CAAGgB,oBAAef,CAAE,CAAA,CAAI,IACxB,KAAA,CAAAQ,CACF,CACF,CAAA,CAEaQ,EAAAA,CAAa,CAAC,CAAE,EAAAP,CAAAA,CAAG,CAAA,CAAAC,EAAG,CAAA,CAAAH,CAAAA,CAAG,MAAAC,CAAM,CAAA,GAA4B,CACtE,GAAIE,IAAM,CAAA,EAAKH,CAAAA,GAAM,EAAG,CACtB,IAAMU,EAAIR,CAAAA,EAAK,CAAA,CACTS,CAAAA,CAAOH,mBAAAA,CAAeI,oBAAMF,CAAAA,CAAG,CAAA,CAAG,CAAC,CAAC,CAAA,CAAI,IAC9C,OAAOG,mBAAAA,CAAS,CAAE,CAAA,CAAGF,EAAM,CAAA,CAAGA,CAAAA,CAAM,EAAGA,CAAAA,CAAM,KAAA,CAAAV,CAAM,CAAC,CACtD,CAEA,IAAMa,EAAKZ,CAAAA,CAAI,WAAA,CAAeC,EAAI,WAAA,CAAeH,CAAAA,CAC3Ce,EAAKb,CAAAA,CAAI,WAAA,CAAeC,CAAAA,CAAI,WAAA,CAAeH,EAC3CgB,CAAAA,CAAKd,CAAAA,CAAI,YAAeC,CAAAA,CAAI,WAAA,CAAcH,EAE1CN,CAAAA,CAAKoB,CAAAA,EAAM,CAAA,CACXnB,CAAAA,CAAKoB,GAAM,CAAA,CACXnB,CAAAA,CAAKoB,GAAM,CAAA,CAEXlB,CAAAA,CAAI,aAAeJ,CAAAA,CAAK,YAAA,CAAeC,CAAAA,CAAK,WAAA,CAAeC,EAC3DG,CAAAA,CAAI,aAAA,CAAgBL,EAAK,YAAA,CAAeC,CAAAA,CAAK,YAAeC,CAAAA,CAC5DQ,CAAAA,CAAK,aAAA,CAAgBV,CAAAA,CAAK,YAAeC,CAAAA,CAAK,YAAA,CAAeC,EAEnE,OAAOiB,mBAAAA,CAAS,CACd,CAAA,CAAGL,mBAAAA,CAAeI,mBAAAA,CAAMd,CAAAA,CAAG,EAAG,CAAC,CAAC,EAAI,GAAA,CACpC,CAAA,CAAGU,oBAAeI,mBAAAA,CAAMb,CAAAA,CAAG,CAAA,CAAG,CAAC,CAAC,CAAA,CAAI,GAAA,CACpC,EAAGS,mBAAAA,CAAeI,mBAAAA,CAAMR,EAAI,CAAA,CAAG,CAAC,CAAC,CAAA,CAAI,IACrC,KAAA,CAAAH,CACF,CAAC,CACH,CAAA,CAGagB,GAAoB,CAACC,CAAAA,CAA8BhB,CAAAA,CAAWC,CAAAA,CAAWH,IAAoB,CAIxG,GAAIG,IAAM,CAAA,EAAKH,CAAAA,GAAM,EAAG,CACtB,IAAMU,CAAAA,CAAIR,CAAAA,EAAK,EACfgB,CAAAA,CAAI,CAAC,EAAIR,CAAAA,CACTQ,CAAAA,CAAI,CAAC,CAAA,CAAIR,CAAAA,CACTQ,CAAAA,CAAI,CAAC,EAAIR,CAAAA,CACT,MACF,CACA,IAAMI,CAAAA,CAAKZ,EAAI3B,CAAAA,CAAU4B,CAAAA,CAAI3B,CAAAA,CAAUwB,CAAAA,CACjCe,EAAKb,CAAAA,CAAIzB,CAAAA,CAAU0B,EAAIzB,CAAAA,CAAUsB,CAAAA,CACjCgB,EAAKd,CAAAA,CAAIvB,CAAAA,CAAUwB,CAAAA,CAAIvB,CAAAA,CAAUoB,EACjCN,CAAAA,CAAKoB,CAAAA,EAAM,EACfnB,CAAAA,CAAKoB,CAAAA,EAAM,EACXnB,CAAAA,CAAKoB,CAAAA,EAAM,CAAA,CACbE,CAAAA,CAAI,CAAC,CAAA,CAAIrC,CAAAA,CAAUa,EAAKZ,CAAAA,CAAUa,CAAAA,CAAKZ,EAAUa,CAAAA,CACjDsB,CAAAA,CAAI,CAAC,CAAA,CAAIlC,EAAUU,CAAAA,CAAKT,CAAAA,CAAUU,EAAKT,CAAAA,CAAUU,CAAAA,CACjDsB,EAAI,CAAC,CAAA,CAAI/B,CAAAA,CAAUO,CAAAA,CAAKN,EAAUO,CAAAA,CAAKN,CAAAA,CAAUO,EACnD,CAAA,CAGaW,EAAAA,CAAgB,CAACL,CAAAA,CAAWC,CAAAA,CAAWH,CAAAA,GAAwC,CAC1F,GAAIG,CAAAA,GAAM,CAAA,EAAKH,IAAM,CAAA,CAAG,CACtB,IAAMU,CAAAA,CAAIR,CAAAA,EAAK,CAAA,CACf,OAAO,CAACQ,CAAAA,CAAGA,CAAAA,CAAGA,CAAC,CACjB,CACA,IAAMI,CAAAA,CAAKZ,CAAAA,CAAI3B,CAAAA,CAAU4B,CAAAA,CAAI3B,EAAUwB,CAAAA,CACjCe,CAAAA,CAAKb,EAAIzB,CAAAA,CAAU0B,CAAAA,CAAIzB,EAAUsB,CAAAA,CACjCgB,CAAAA,CAAKd,CAAAA,CAAIvB,CAAAA,CAAUwB,EAAIvB,CAAAA,CAAUoB,CAAAA,CACjCN,EAAKoB,CAAAA,EAAM,CAAA,CACfnB,EAAKoB,CAAAA,EAAM,CAAA,CACXnB,CAAAA,CAAKoB,CAAAA,EAAM,EACb,OAAO,CACLnC,EAAUa,CAAAA,CAAKZ,CAAAA,CAAUa,EAAKZ,CAAAA,CAAUa,CAAAA,CACxCZ,CAAAA,CAAUU,CAAAA,CAAKT,EAAUU,CAAAA,CAAKT,CAAAA,CAAUU,EACxCT,CAAAA,CAAUO,CAAAA,CAAKN,EAAUO,CAAAA,CAAKN,CAAAA,CAAUO,CAC1C,CACF,EAEauB,EAAAA,CAAoBC,CAAAA,EAAoC,CAKnE,GAJI,CAACC,oBAASD,CAAK,CAAA,EAEdA,CAAAA,CAAmC,UAAA,GAAe,OACnD,CAACE,mBAAAA,CAAQF,EAAO,CAAC,GAAA,CAAK,IAAK,GAAG,CAAC,CAAA,EAC/B,GAAA,GAAOA,GAAS,GAAA,GAAOA,CAAAA,EAAS,MAAOA,CAAAA,EAAS,GAAA,GAAOA,EAAO,OAAO,IAAA,CACzE,GAAM,CAAE,EAAAlB,CAAAA,CAAG,CAAA,CAAAC,EAAG,CAAA,CAAAH,CAAAA,CAAG,MAAAC,CAAAA,CAAQ,CAAE,CAAA,CAAImB,CAAAA,CAE/B,OADI,CAACG,mBAAAA,CAAYrB,CAAC,CAAA,EAAK,CAACqB,oBAAYpB,CAAC,CAAA,EAAK,CAACoB,mBAAAA,CAAYvB,CAAC,CAAA,EAAK,CAACuB,oBAAYtB,CAAK,CAAA,EAC3EuB,oBAAStB,CAAC,CAAA,CAAI,CAAA,CAAU,IAAA,CACrBI,EAAoB,CACzB,CAAA,CAAGkB,oBAAStB,CAAC,CAAA,CACb,EAAGsB,mBAAAA,CAASrB,CAAC,CAAA,CACb,CAAA,CAAGqB,oBAASxB,CAAC,CAAA,CACb,MAAOY,mBAAAA,CAAMY,mBAAAA,CAASvB,CAAK,CAAA,CAAG,CAAA,CAAG,CAAC,CACpC,CAAC,CACH,CAAA,CAEMwB,GAAW,IAAI,MAAA,CACnB,qBAAqBC,mBAAW,CAAA,mBAAA,EAAsBA,mBAAW,CAAA,mBAAA,EAAsBA,mBAAW,CAAA,4BAAA,EAC3EA,mBAAW,wBAClC,GACF,CAAA,CAEaC,GAAoBP,CAAAA,EAAoC,CACnE,GAAI,OAAOA,GAAU,QAAA,CAAU,OAAO,KACtC,IAAMrB,CAAAA,CAAI0B,GAAS,IAAA,CAAKL,CAAAA,CAAM,IAAA,EAAM,GAAG,MAAA,CACvC,GAAI,CAACrB,CAAAA,CAAG,OAAO,KACf,IAAM6B,CAAAA,CAAI7B,CAAAA,CAAE,EAAA,CAAK8B,oBAAS9B,CAAAA,CAAE,CAAE,EAAI,GAAA,CAAM8B,mBAAAA,CAAS9B,EAAE,CAAE,CAAA,CAC/CI,CAAAA,CAAIJ,CAAAA,CAAE,GAAK8B,mBAAAA,CAAS9B,CAAAA,CAAE,CAAE,CAAA,CAAI,IAAA,CAAQ8B,oBAAS9B,CAAAA,CAAE,CAAE,CAAA,CACjDC,CAAAA,CAAID,EAAE,EAAA,CAAK8B,mBAAAA,CAAS9B,EAAE,CAAE,CAAA,CAAI,KAAQ8B,mBAAAA,CAAS9B,CAAAA,CAAE,CAAE,CAAA,CACjDE,EAAQF,CAAAA,CAAE,EAAA,GAAO,OAAY,CAAA,CAAI8B,mBAAAA,CAAS9B,EAAE,EAAE,CAAA,EAAKA,CAAAA,CAAE,GAAA,CAAM,IAAM,CAAA,CAAA,CACvE,OAAOO,EAAoB,CAAE,CAAA,CAAGsB,EAAG,CAAA,CAAAzB,CAAAA,CAAG,CAAA,CAAAH,CAAAA,CAAG,MAAOY,mBAAAA,CAAMX,CAAAA,CAAO,EAAG,CAAC,CAAE,CAAC,CACtE","file":"chunk-TRRLWCL6.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n const srgb = srgbFromLinear(clamp(v, 0, 1)) * 255;\n return clampRgb({ r: srgb, g: srgb, b: srgb, alpha });\n }\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n // Achromatic short-circuit: M1⁻¹ rows sum to 1 mathematically, but floating-point\n // rounding leaves lr/lg/lb ~1 ULP apart, which gets amplified into a phantom hue\n // downstream in rgbToHslRaw. Explicitly return lv for all channels.\n if (a === 0 && b === 0) {\n const v = l ** 3;\n out[0] = v;\n out[1] = v;\n out[2] = v;\n return;\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n return [v, v, v];\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]}
var s=r=>{let n=Math.abs(r),e=n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return r<0?-e:e},a=r=>{let n=Math.abs(r),e=n<=.0031308?12.92*n:1.055*n**(1/2.4)-.055;return r<0?-e:e},t=1.09929682680944,o=.018053968510807,b=r=>{let n=Math.abs(r),e=n<o*4.5?n/4.5:((n+t-1)/t)**(1/.45);return r<0?-e:e},c=r=>{let n=Math.abs(r),e=n<o?4.5*n:t*n**.45-(t-1);return r<0?-e:e};export{s as a,a as b,b as c,c as d};//# sourceMappingURL=chunk-YLJRINFM.mjs.map
//# sourceMappingURL=chunk-YLJRINFM.mjs.map
{"version":3,"sources":["../src/transfer.ts"],"names":["srgbToLinear","c","abs","linear","srgbFromLinear","n","encoded","REC2020_ALPHA","REC2020_BETA","rec2020ToLinear","rec2020FromLinear"],"mappings":"AAMO,IAAMA,CAAAA,CAAgBC,GAAsB,CACjD,IAAMC,EAAM,IAAA,CAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,EAAO,OAAUA,CAAAA,CAAM,KAAA,CAAA,CAAA,CAAUA,CAAAA,CAAM,IAAA,EAAS,KAAA,GAAU,GAAA,CACzE,OAAOD,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAQaC,EAAkBC,CAAAA,EAAsB,CACnD,IAAMH,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAIG,CAAC,CAAA,CAChBC,CAAAA,CAAUJ,CAAAA,EAAO,QAAA,CAAY,KAAA,CAAQA,CAAAA,CAAM,MAAQA,CAAAA,GAAQ,CAAA,CAAI,GAAA,CAAA,CAAO,IAAA,CAC5E,OAAOG,CAAAA,CAAI,EAAI,CAACC,CAAAA,CAAUA,CAC5B,CAAA,CAGMC,CAAAA,CAAgB,gBAAA,CAChBC,EAAe,gBAAA,CAGRC,CAAAA,CAAmBR,CAAAA,EAAsB,CACpD,IAAMC,CAAAA,CAAM,KAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,CAAMM,CAAAA,CAAe,IAAMN,CAAAA,CAAM,GAAA,CAAA,CAAA,CAAQA,CAAAA,CAAMK,CAAAA,CAAgB,CAAA,EAAKA,CAAAA,IAAmB,EAAI,GAAA,CAAA,CAC1G,OAAON,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAGaO,CAAAA,CAAqBL,CAAAA,EAAsB,CACtD,IAAMH,CAAAA,CAAM,KAAK,GAAA,CAAIG,CAAC,CAAA,CAChBC,CAAAA,CAAUJ,CAAAA,CAAMM,CAAAA,CAAe,IAAMN,CAAAA,CAAMK,CAAAA,CAAgBL,CAAAA,EAAO,GAAA,EAAQK,CAAAA,CAAgB,CAAA,CAAA,CAChG,OAAOF,CAAAA,CAAI,CAAA,CAAI,CAACC,CAAAA,CAAUA,CAC5B","file":"chunk-YLJRINFM.mjs","sourcesContent":["/**\n * sRGB / Display-P3 transfer function (IEC 61966-2-1), extended to the full real line.\n * For in-gamut values [0, 1] this is the standard curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec for out-of-gamut channels.\n */\nexport const srgbToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs <= 0.04045 ? abs / 12.92 : ((abs + 0.055) / 1.055) ** 2.4;\n return c < 0 ? -linear : linear;\n};\n\n/**\n * Linear → gamma-encoded sRGB (extended piecewise, per CSS Color 4).\n * For in-gamut values [0, 1] this is the standard IEC 61966-2-1 curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec and display-p3 behaviour for out-of-gamut channels.\n */\nexport const srgbFromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs <= 0.0031308 ? 12.92 * abs : 1.055 * abs ** (1 / 2.4) - 0.055;\n return n < 0 ? -encoded : encoded;\n};\n\n/** BT.2020 transfer function constants. */\nconst REC2020_ALPHA = 1.09929682680944;\nconst REC2020_BETA = 0.018053968510807;\n\n/** BT.2020 gamma-encoded → linear. Extended to the full real line (sign-preserving). */\nexport const rec2020ToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs < REC2020_BETA * 4.5 ? abs / 4.5 : ((abs + REC2020_ALPHA - 1) / REC2020_ALPHA) ** (1 / 0.45);\n return c < 0 ? -linear : linear;\n};\n\n/** BT.2020 linear → gamma-encoded. Extended to the full real line (sign-preserving). */\nexport const rec2020FromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs < REC2020_BETA ? 4.5 * abs : REC2020_ALPHA * abs ** 0.45 - (REC2020_ALPHA - 1);\n return n < 0 ? -encoded : encoded;\n};\n"]}
'use strict';var chunkTRRLWCL6_cjs=require('./chunk-TRRLWCL6.cjs'),chunkPI5KJ3ZM_cjs=require('./chunk-PI5KJ3ZM.cjs'),chunkINDSIUQQ_cjs=require('./chunk-INDSIUQQ.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var er=.8224619687,or=.1775380313,br=.0331941989,tr=.9668058011,ar=.0170826307,ur=.0723974407,mr=.9105199286,Fr=1.2249401762805598,vr=-0.22494017628055996,Br=-0.04205695470968816,Er=1.042056954709688,$r=-0.019637554590334432,Dr=-0.07863604555063189,Or=1.0982736001409663,Rn=(e,r,n,o)=>{e[0]=er*r+or*n,e[1]=br*r+tr*n,e[2]=ar*r+ur*n+mr*o;},sr=(e,r,n)=>[er*e+or*r,br*e+tr*r,ar*e+ur*r+mr*n];var z=(e,r,n)=>[Fr*e+vr*r,Br*e+Er*r,$r*e+Dr*r+Or*n],fn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=sr(chunkINDSIUQQ_cjs.a(e/255),chunkINDSIUQQ_cjs.a(r/255),chunkINDSIUQQ_cjs.a(n/255));return {r:chunkINDSIUQQ_cjs.b(b),g:chunkINDSIUQQ_cjs.b(t),b:chunkINDSIUQQ_cjs.b(u),alpha:o,colorSpace:"display-p3"}};var lr=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=z(chunkINDSIUQQ_cjs.a(e),chunkINDSIUQQ_cjs.a(r),chunkINDSIUQQ_cjs.a(n));return {r:chunkINDSIUQQ_cjs.b(b)*255,g:chunkINDSIUQQ_cjs.b(t)*255,b:chunkINDSIUQQ_cjs.b(u)*255,alpha:o}},yn=e=>{if(!chunkYISEJCI6_cjs.h(e)||e.colorSpace!=="display-p3"||!chunkYISEJCI6_cjs.i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(b)?null:lr({r:chunkYISEJCI6_cjs.g(r),g:chunkYISEJCI6_cjs.g(n),b:chunkYISEJCI6_cjs.g(o),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(b),0,1)})},jr=new RegExp(`^color\\(\\s*display-p3\\s+(?<r>${chunkYISEJCI6_cjs.k})(?<rp>%?)\\s+(?<g>${chunkYISEJCI6_cjs.k})(?<gp>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),Sn=e=>{if(typeof e!="string")return null;let r=jr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?chunkYISEJCI6_cjs.l(r.r)/100:chunkYISEJCI6_cjs.l(r.r),o=r.gp?chunkYISEJCI6_cjs.l(r.g)/100:chunkYISEJCI6_cjs.l(r.g),b=r.bp?chunkYISEJCI6_cjs.l(r.b)/100:chunkYISEJCI6_cjs.l(r.b),t=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return lr({r:n,g:o,b,alpha:chunkYISEJCI6_cjs.a(t,0,1)})},xn=(e,r,n)=>sr(...chunkTRRLWCL6_cjs.f(e,r,n));var cr=.6274038959,pr=.3292830384,ir=.0433130657,dr=.0690972894,hr=.9195403951,gr=.0113623156,Rr=.0163914389,fr=.0880133079,yr=.8955952532,Xr=1.6604910021084345,Ur=-0.5876411387885495,Kr=-0.07284986331988488,qr=-0.12455047452159074,Hr=1.1328998971259603,Vr=-0.008349422604369477,Yr=-0.018150763354905303,Zr=-0.10057889800800739,Jr=1.1187296613629127,_n=(e,r,n,o)=>{e[0]=cr*r+pr*n+ir*o,e[1]=dr*r+hr*n+gr*o,e[2]=Rr*r+fr*n+yr*o;},Sr=(e,r,n)=>[cr*e+pr*r+ir*n,dr*e+hr*r+gr*n,Rr*e+fr*r+yr*n];var F=(e,r,n)=>[Xr*e+Ur*r+Kr*n,qr*e+Hr*r+Vr*n,Yr*e+Zr*r+Jr*n],kn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=Sr(chunkINDSIUQQ_cjs.a(e/255),chunkINDSIUQQ_cjs.a(r/255),chunkINDSIUQQ_cjs.a(n/255));return {r:chunkINDSIUQQ_cjs.d(b),g:chunkINDSIUQQ_cjs.d(t),b:chunkINDSIUQQ_cjs.d(u),alpha:o,colorSpace:"rec2020"}};var xr=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=F(chunkINDSIUQQ_cjs.c(e),chunkINDSIUQQ_cjs.c(r),chunkINDSIUQQ_cjs.c(n));return {r:chunkINDSIUQQ_cjs.b(b)*255,g:chunkINDSIUQQ_cjs.b(t)*255,b:chunkINDSIUQQ_cjs.b(u)*255,alpha:o}},Mn=e=>{if(!chunkYISEJCI6_cjs.h(e)||e.colorSpace!=="rec2020"||!chunkYISEJCI6_cjs.i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(b)?null:xr({r:chunkYISEJCI6_cjs.g(r),g:chunkYISEJCI6_cjs.g(n),b:chunkYISEJCI6_cjs.g(o),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(b),0,1)})},Qr=new RegExp(`^color\\(\\s*rec2020\\s+(?<r>${chunkYISEJCI6_cjs.k})(?<rp>%?)\\s+(?<g>${chunkYISEJCI6_cjs.k})(?<gp>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),Pn=e=>{if(typeof e!="string")return null;let r=Qr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?chunkYISEJCI6_cjs.l(r.r)/100:chunkYISEJCI6_cjs.l(r.r),o=r.gp?chunkYISEJCI6_cjs.l(r.g)/100:chunkYISEJCI6_cjs.l(r.g),b=r.bp?chunkYISEJCI6_cjs.l(r.b)/100:chunkYISEJCI6_cjs.l(r.b),t=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return xr({r:n,g:o,b,alpha:chunkYISEJCI6_cjs.a(t,0,1)})},An=(e,r,n)=>Sr(...chunkTRRLWCL6_cjs.f(e,r,n));var Wr=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rn=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nn=/^lab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,en=/^lch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,on=/^color\(\s*display-p3\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,bn=/^color\(\s*rec2020\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,tn=/^color\(\s*xyz-d50\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,an=/^color\(\s*xyz-d65\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,A=(e,r,n)=>{let{x:o,y:b,z:t}=chunkPI5KJ3ZM_cjs.l({l:e,a:r,b:n,alpha:1,colorSpace:"lab"}),[u,s,l]=chunkPI5KJ3ZM_cjs.e(o,b,t);return chunkTRRLWCL6_cjs.a(u,s,l)},Tr=(e,r,n)=>{let[o,b,t]=z(chunkINDSIUQQ_cjs.a(e),chunkINDSIUQQ_cjs.a(r),chunkINDSIUQQ_cjs.a(n));return chunkTRRLWCL6_cjs.a(o,b,t)},Cr=(e,r,n)=>{let[o,b,t]=F(chunkINDSIUQQ_cjs.c(e),chunkINDSIUQQ_cjs.c(r),chunkINDSIUQQ_cjs.c(n));return chunkTRRLWCL6_cjs.a(o,b,t)},Lr=(e,r,n)=>{let[o,b,t]=chunkPI5KJ3ZM_cjs.e(e,r,n);return chunkTRRLWCL6_cjs.a(o,b,t)},Nr=(e,r,n)=>{let[o,b,t]=chunkPI5KJ3ZM_cjs.b(e,r,n);return chunkTRRLWCL6_cjs.a(o,b,t)},G=e=>{if(typeof e=="object"&&e!==null){let r=e;if("l"in r&&"a"in r&&"b"in r&&r.colorSpace!=="lab"&&!("c"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.a=="number"&&typeof n.b=="number"&&typeof n.alpha=="number")return {l:n.l,a:n.a,b:n.b,alpha:n.alpha}}if("l"in r&&"c"in r&&"h"in r&&r.colorSpace!=="lch"&&!("a"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.c=="number"&&typeof n.h=="number"){let o=n.h*Math.PI/180;return {l:n.l,a:n.c*Math.cos(o),b:n.c*Math.sin(o),alpha:n.alpha}}}if(r.colorSpace==="lab"){let n=e;if(typeof n.l!="number"||typeof n.a!="number"||typeof n.b!="number")return null;let[o,b,t]=A(n.l,n.a,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="lch"){let n=e;if(typeof n.l!="number"||typeof n.c!="number"||typeof n.h!="number")return null;let o=n.h*Math.PI/180,[b,t,u]=A(n.l,n.c*Math.cos(o),n.c*Math.sin(o));return {l:b,a:t,b:u,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="display-p3"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Tr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="rec2020"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Cr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="xyz-d65"){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Nr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if("x"in r&&"y"in r&&"z"in r){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Lr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=Wr.exec(e);if(r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(chunkYISEJCI6_cjs.d[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o*Math.cos(u),b:o*Math.sin(u),alpha:s}}if(r=rn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?Number(r[5])*.004:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b,alpha:t}}if(r=nn.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.25:Number(r[3]),b=r[6]?Number(r[5])*1.25:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=A(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=en.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.5:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(chunkYISEJCI6_cjs.d[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[l,x,T]=A(n,o*Math.cos(u),o*Math.sin(u));return {l,a:x,b:T,alpha:s}}if(r=on.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Tr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=bn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Cr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=tn.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Lr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=an.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Nr(n,o,b);return {l:u,a:s,b:l,alpha:t}}return null}return null},S=5e-4,Pr=(e,r,n)=>e>=-S&&e<=1+S&&r>=-S&&r<=1+S&&n>=-S&&n<=1+S,_r=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,$n=e=>{let r=G(e);if(r===null)return true;let[n,o,b]=chunkTRRLWCL6_cjs.f(r.l,r.a,r.b);return Pr(n,o,b)},kr=.02,un=1e-4,Mr=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],b=e[2]-r[2];return Math.sqrt(n*n+o*o+b*b)},Ar=(e,r,n,o,b)=>{if(e>=1)return [1,1,1];if(e<=0)return [0,0,0];let[t,u,s]=o(e,r,n);if(_r(t,u,s))return [t,u,s];let l=chunkYISEJCI6_cjs.a(t,0,1),x=chunkYISEJCI6_cjs.a(u,0,1),T=chunkYISEJCI6_cjs.a(s,0,1);if(Mr(b(l,x,T),[e,r,n])<=kr)return [l,x,T];let E=Math.atan2(n,r),wr=Math.sqrt(r*r+n*n),N=0,I=wr,$=true,D=l,O=x,j=T;for(;I-N>un;){let C=(N+I)/2,X=C*Math.cos(E),U=C*Math.sin(E),[K,q,H]=o(e,X,U);if($&&_r(K,q,H)){N=C;continue}let V=chunkYISEJCI6_cjs.a(K,0,1),Y=chunkYISEJCI6_cjs.a(q,0,1),Z=chunkYISEJCI6_cjs.a(H,0,1);D=V,O=Y,j=Z,Mr(b(V,Y,Z),[e,X,U])<=kr?(N=C,$=false):I=C;}return [D,O,j]},Dn=e=>{let r=G(e);return r===null?null:{linear:Ar(r.l,r.a,r.b,chunkTRRLWCL6_cjs.f,chunkTRRLWCL6_cjs.a),alpha:r.alpha}},On=(e,r)=>{let n=G(e);if(n===null)return true;let[o,b,t]=r(n.l,n.a,n.b);return Pr(o,b,t)},jn=(e,r,n)=>{let o=G(e);return o===null?null:{linear:Ar(o.l,o.a,o.b,r,n),alpha:o.alpha}};var f=Math.PI/180,Gr=(e,r,n)=>{let o=n*f;return chunkTRRLWCL6_cjs.f(e,r*Math.cos(o),r*Math.sin(o))},Ir=(e,r,n,o)=>{let b=o*f;chunkTRRLWCL6_cjs.e(e,r,n*Math.cos(b),n*Math.sin(b));},Vn=(e,r,n)=>{let[o,b,t]=Gr(e,r,n);return [chunkINDSIUQQ_cjs.b(o),chunkINDSIUQQ_cjs.b(b),chunkINDSIUQQ_cjs.b(t)]},Yn=(e,r,n,o)=>{Ir(e,r,n,o),e[0]=chunkINDSIUQQ_cjs.b(e[0]),e[1]=chunkINDSIUQQ_cjs.b(e[1]),e[2]=chunkINDSIUQQ_cjs.b(e[2]);},Zn=(e,r,n)=>{let[o,b,t]=Gr(e,r,n);return [[o,b,t],[chunkINDSIUQQ_cjs.b(o),chunkINDSIUQQ_cjs.b(b),chunkINDSIUQQ_cjs.b(t)]]},Jn=(e,r,n,o,b)=>{Ir(e,n,o,b),r[0]=chunkINDSIUQQ_cjs.b(e[0]),r[1]=chunkINDSIUQQ_cjs.b(e[1]),r[2]=chunkINDSIUQQ_cjs.b(e[2]);},Qn=(e,r,n)=>[chunkINDSIUQQ_cjs.a(e),chunkINDSIUQQ_cjs.a(r),chunkINDSIUQQ_cjs.a(n)],Wn=(e,r,n,o)=>{e[0]=chunkINDSIUQQ_cjs.a(r),e[1]=chunkINDSIUQQ_cjs.a(n),e[2]=chunkINDSIUQQ_cjs.a(o);},v=(e,r,n)=>{let[o,b,t]=chunkPI5KJ3ZM_cjs.j(e,r,n);return chunkPI5KJ3ZM_cjs.e(o,b,t)},B=(e,r,n,o)=>{chunkPI5KJ3ZM_cjs.k(e,r,n,o),chunkPI5KJ3ZM_cjs.d(e,e[0],e[1],e[2]);},re=(e,r,n)=>{let o=n*f;return v(e,r*Math.cos(o),r*Math.sin(o))},ne=(e,r,n,o)=>{let b=o*f;B(e,r,n*Math.cos(b),n*Math.sin(b));},mn=(e,r,n)=>{let[o,b,t]=v(e,r,n);return [chunkINDSIUQQ_cjs.b(o),chunkINDSIUQQ_cjs.b(b),chunkINDSIUQQ_cjs.b(t)]},sn=(e,r,n,o)=>{B(e,r,n,o),e[0]=chunkINDSIUQQ_cjs.b(e[0]),e[1]=chunkINDSIUQQ_cjs.b(e[1]),e[2]=chunkINDSIUQQ_cjs.b(e[2]);},ee=(e,r,n)=>{let o=n*f;return mn(e,r*Math.cos(o),r*Math.sin(o))},oe=(e,r,n,o)=>{let b=o*f;sn(e,r,n*Math.cos(b),n*Math.sin(b));},ln=(e,r,n)=>{let[o,b,t]=v(e,r,n);return [[o,b,t],[chunkINDSIUQQ_cjs.b(o),chunkINDSIUQQ_cjs.b(b),chunkINDSIUQQ_cjs.b(t)]]},cn=(e,r,n,o,b)=>{B(e,n,o,b),r[0]=chunkINDSIUQQ_cjs.b(e[0]),r[1]=chunkINDSIUQQ_cjs.b(e[1]),r[2]=chunkINDSIUQQ_cjs.b(e[2]);},be=(e,r,n)=>{let o=n*f;return ln(e,r*Math.cos(o),r*Math.sin(o))},te=(e,r,n,o,b)=>{let t=b*f;cn(e,r,n,o*Math.cos(t),o*Math.sin(t));};exports.A=v;exports.B=B;exports.C=re;exports.D=ne;exports.E=mn;exports.F=sn;exports.G=ee;exports.H=oe;exports.I=ln;exports.J=cn;exports.K=be;exports.L=te;exports.a=Rn;exports.b=sr;exports.c=z;exports.d=fn;exports.e=yn;exports.f=Sn;exports.g=xn;exports.h=_n;exports.i=Sr;exports.j=F;exports.k=kn;exports.l=Mn;exports.m=Pn;exports.n=An;exports.o=$n;exports.p=Dn;exports.q=On;exports.r=jn;exports.s=Gr;exports.t=Ir;exports.u=Vn;exports.v=Yn;exports.w=Zn;exports.x=Jn;exports.y=Qn;exports.z=Wn;//# sourceMappingURL=chunk-YXTI4MTI.cjs.map
//# sourceMappingURL=chunk-YXTI4MTI.cjs.map

Sorry, the diff of this file is too big to display

/** sRGB color. r, g, b in [0, 255]; alpha in [0, 1]. */
interface RgbColor {
r: number;
g: number;
b: number;
alpha: number;
}
/** Input shape of `RgbColor` — `alpha` is optional and defaults to 1. */
type RgbColorInput = Omit<RgbColor, 'alpha'> & {
alpha?: number;
};
/** HSL color. h in [0, 360); s, l in [0, 100]; alpha in [0, 1]. */
interface HslColor {
h: number;
s: number;
l: number;
alpha: number;
}
/** Input shape of `HslColor` — `alpha` is optional and defaults to 1. */
type HslColorInput = Omit<HslColor, 'alpha'> & {
alpha?: number;
};
/** HSV color. h in [0, 360); s, v in [0, 100]; alpha in [0, 1]. */
interface HsvColor {
h: number;
s: number;
v: number;
alpha: number;
}
/** Input shape of `HsvColor` — `alpha` is optional and defaults to 1. */
type HsvColorInput = Omit<HsvColor, 'alpha'> & {
alpha?: number;
};
/** HWB color. h in [0, 360); w, b in [0, 100]; alpha in [0, 1]. */
interface HwbColor {
h: number;
/** Whiteness [0, 100]. */
w: number;
/** Blackness [0, 100]. */
b: number;
alpha: number;
}
/** Input shape of `HwbColor` — `alpha` is optional and defaults to 1. */
type HwbColorInput = Omit<HwbColor, 'alpha'> & {
alpha?: number;
};
/** CIE Lab (D50). L in [0, 100]; a, b roughly in [-128, 128]. */
interface LabColor {
l: number;
/** Green–red axis. */
a: number;
/** Blue–yellow axis. */
b: number;
alpha: number;
readonly colorSpace: 'lab';
}
/** Input shape of `LabColor` — `alpha` is optional and defaults to 1. */
type LabColorInput = Omit<LabColor, 'alpha'> & {
alpha?: number;
};
/** CIE LCh (D50). L in [0, 100]; C in [0, ~150]; h in degrees. */
interface LchColor {
l: number;
c: number;
h: number;
alpha: number;
readonly colorSpace: 'lch';
}
/** Input shape of `LchColor` — `alpha` is optional and defaults to 1. */
type LchColorInput = Omit<LchColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D50). x, y, z on the library's 0–100 scale. */
interface XyzColor {
x: number;
y: number;
z: number;
alpha: number;
}
/** Input shape of `XyzColor` — `alpha` is optional and defaults to 1. */
type XyzColorInput = Omit<XyzColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D65). x, y, z on the library's 0–100 scale. */
interface XyzD65Color {
x: number;
y: number;
z: number;
alpha: number;
readonly colorSpace: 'xyz-d65';
}
type XyzD65ColorInput = Omit<XyzD65Color, 'alpha'> & {
alpha?: number;
};
/** CMYK color. c, m, y, k in [0, 100]; alpha in [0, 1]. */
interface CmykColor {
c: number;
m: number;
y: number;
k: number;
alpha: number;
}
/** Input shape of `CmykColor` — `alpha` is optional and defaults to 1. */
type CmykColorInput = Omit<CmykColor, 'alpha'> & {
alpha?: number;
};
/** OKLab. Perceptually uniform (D65). L in [0, 1]; a, b roughly in [-0.4, 0.4]. */
interface OklabColor {
l: number;
/** Green–red axis. */
a: number;
/** Blue–yellow axis. */
b: number;
alpha: number;
}
/** Input shape of `OklabColor` — `alpha` is optional and defaults to 1. */
type OklabColorInput = Omit<OklabColor, 'alpha'> & {
alpha?: number;
};
/** OKLCh. Polar form of OKLab. L in [0, 1]; C in [0, ~0.4]; h in degrees. */
interface OklchColor {
l: number;
c: number;
h: number;
alpha: number;
}
/** Input shape of `OklchColor` — `alpha` is optional and defaults to 1. */
type OklchColorInput = Omit<OklchColor, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Display-P3. r, g, b in [0, 1]. */
interface P3Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'display-p3';
}
/** Input shape of `P3Color` — `alpha` is optional and defaults to 1. */
type P3ColorInput = Omit<P3Color, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Rec.2020. r, g, b in [0, 1]. */
interface Rec2020Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'rec2020';
}
/** Input shape of `Rec2020Color` — `alpha` is optional and defaults to 1. */
type Rec2020ColorInput = Omit<Rec2020Color, 'alpha'> & {
alpha?: number;
};
/** Any color input accepted by `colordx()` and friends — a CSS string or one of the input objects. */
type AnyColor = string | RgbColorInput | HslColorInput | HsvColorInput | HwbColorInput | LabColorInput | LchColorInput | XyzColorInput | XyzD65ColorInput | CmykColorInput | OklabColorInput | OklchColorInput | P3ColorInput | Rec2020ColorInput;
/** A parser registered by a plugin. Returns the sRGB equivalent or `null` if the input doesn't match. */
type ColorParser<T = AnyColor> = (input: T) => RgbColor | null;
/** Format tags returned by `getFormat()`. */
type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv' | 'hwb' | 'oklab' | 'oklch' | 'lab' | 'lch' | 'xyz' | 'xyz-d65' | 'cmyk' | 'p3' | 'rec2020' | 'name';
declare const _SENTINEL: unique symbol;
/**
* Color value with parse, format, and manipulation methods.
* Construct via the `colordx()` helper or `new Colordx(input)`. Instances are immutable —
* mutators return a new `Colordx`.
*/
declare class Colordx {
private readonly _rgb;
private readonly _valid;
constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor);
private static _make;
/**
* Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.
* Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a
* color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored
* _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut
* channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.
*
* Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels
* directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP
* asymmetries on gamut-boundary colors.
*
* A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one
* channel exactly on 0 or 1 while the others sit where the input's hue landed, so an
* extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels
* (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all
* three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report
* phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;
* the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab
* see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut
* (P3 / Rec.2020 targets) and pass through untouched.
*/
static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx;
/** True when the input parsed as a recognised color. */
isValid(): boolean;
/** Returns sRGB channels rounded to integers in [0, 255], plus alpha in [0, 1]. */
toRgb(): RgbColor;
/** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */
_rawRgb(): RgbColor;
/**
* Formats as a CSS `rgb()` / `rgba()` string.
* Default is CSS Color 4 modern syntax — `rgb(255 0 0 / 0.5)`.
* Pass `{ legacy: true }` for CSS Color 3 comma syntax (switches to `rgba()` when alpha < 1).
*/
toRgbString(options?: {
legacy?: boolean;
}): string;
/** Returns `#rrggbb` (or `#rrggbbaa` when alpha < 1). */
toHex(): string;
/** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */
toHex8(): string;
/** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */
toNumber(): number;
/** Returns HSL channels: h in [0, 360), s/l in [0, 100], rounded to `precision` decimals. */
toHsl(precision?: number): HslColor;
/** Formats as a CSS `hsl()` string. */
toHslString(precision?: number): string;
/** Returns OKLab channels: L in [0, 1], a/b roughly in [-0.4, 0.4]. */
toOklab(precision?: number): OklabColor;
/** Formats as a CSS `oklab()` string. */
toOklabString(precision?: number): string;
/** Returns OKLCh channels: L in [0, 1], C in [0, ~0.4], H in degrees. */
toOklch(precision?: number): OklchColor;
/** Formats as a CSS `oklch()` string. Hue is `none` when chroma is 0. */
toOklchString(precision?: number): string;
/** Perceived brightness in [0, 1] using the ITU-R BT.601 weights. */
brightness(): number;
/** True when `brightness()` is below 0.5. */
isDark(): boolean;
/** True when `brightness()` is at or above 0.5. */
isLight(): boolean;
/** Get or set the alpha channel (clamped to [0, 1]). Setter returns a new `Colordx`. */
alpha(): number;
alpha(value: number): Colordx;
/** Get or set the HSL hue in degrees. Setter returns a new `Colordx`. */
hue(): number;
hue(value: number): Colordx;
/** Get or set the OKLCh lightness in [0, 1]. Setter returns a new `Colordx`. */
lightness(): number;
lightness(value: number): Colordx;
/** Get or set the OKLCh chroma in [0, 0.4]. Setter returns a new `Colordx`. */
chroma(): number;
chroma(value: number): Colordx;
/**
* Lightens by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to L.
* Pass `{ relative: true }` to multiply L by `1 + amount` instead.
*/
lighten(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/** Inverse of `lighten`. */
darken(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/**
* Saturates by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to S.
* Pass `{ relative: true }` to multiply S by `1 + amount` instead.
*/
saturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/** Inverse of `saturate`. */
desaturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/** Drops saturation to zero. */
grayscale(): Colordx;
/** Inverts each RGB channel (255 − channel). */
invert(): Colordx;
/** Shifts the HSL hue by `amount` degrees (default 15). */
rotate(amount?: number): Colordx;
/** True when both colors round to the same RGBA tuple. */
isEqual(color: AnyColor): boolean;
/** Returns the hex form (alias for `toHex()`). */
toString(): string;
/**
* Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].
* Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.
* Hue and lightness may shift noticeably for colors far outside sRGB.
* Returns `this` when already in gamut.
*/
clampSrgb(): Colordx;
/**
* Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm
* (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.
* Useful when hue stability matters — design tokens, palettes, color pickers.
* Returns `this` when already in gamut.
*/
mapSrgb(): Colordx;
/**
* Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.
* Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.
*/
static toGamutSrgb: (input: AnyColor) => Colordx;
}
/**
* Plugin signature. Receives the `Colordx` class plus the parser arrays so a plugin
* can register conversions (by adding instance methods) and parsers (by pushing onto the arrays).
*/
type Plugin = (ColordxClass: typeof Colordx, parsers: ColorParser[], formatParsers: [ColorParser, ColorFormat][]) => void;
/** Constructs a `Colordx` from any supported color input. Existing instances pass through. */
declare const colordx: (input: AnyColor | Colordx) => Colordx;
/** Emits an 8-digit `#rrggbbaa` hex for any color input. Shortcut for `colordx(c).toHex8()`. */
declare const toHex8: (input: AnyColor | Colordx) => string;
/** Registers plugins. Each plugin is called once with the `Colordx` class and parser arrays. */
declare const extend: (plugins: Plugin[]) => void;
/**
* Picks the candidate closest to `color` by Euclidean distance in OKLab.
* Throws when `candidates` is empty.
*/
declare const nearest: <T extends AnyColor>(color: AnyColor, candidates: T[]) => T;
/** Returns a random opaque sRGB color. */
declare const random: () => Colordx;
export { type AnyColor as A, type XyzD65Color as B, type ColorFormat as C, type HslColor as H, type LabColor as L, type OklabColor as O, type P3Color as P, type Rec2020Color as R, type XyzColor as X, type CmykColor as a, type CmykColorInput as b, type ColorParser as c, Colordx as d, type HslColorInput as e, type HsvColor as f, type HsvColorInput as g, type HwbColor as h, type HwbColorInput as i, type LabColorInput as j, type LchColor as k, type LchColorInput as l, type OklabColorInput as m, type OklchColor as n, type OklchColorInput as o, type P3ColorInput as p, type Plugin as q, type Rec2020ColorInput as r, type RgbColor as s, type RgbColorInput as t, type XyzColorInput as u, colordx as v, extend as w, nearest as x, random as y, toHex8 as z };
/** sRGB color. r, g, b in [0, 255]; alpha in [0, 1]. */
interface RgbColor {
r: number;
g: number;
b: number;
alpha: number;
}
/** Input shape of `RgbColor` — `alpha` is optional and defaults to 1. */
type RgbColorInput = Omit<RgbColor, 'alpha'> & {
alpha?: number;
};
/** HSL color. h in [0, 360); s, l in [0, 100]; alpha in [0, 1]. */
interface HslColor {
h: number;
s: number;
l: number;
alpha: number;
}
/** Input shape of `HslColor` — `alpha` is optional and defaults to 1. */
type HslColorInput = Omit<HslColor, 'alpha'> & {
alpha?: number;
};
/** HSV color. h in [0, 360); s, v in [0, 100]; alpha in [0, 1]. */
interface HsvColor {
h: number;
s: number;
v: number;
alpha: number;
}
/** Input shape of `HsvColor` — `alpha` is optional and defaults to 1. */
type HsvColorInput = Omit<HsvColor, 'alpha'> & {
alpha?: number;
};
/** HWB color. h in [0, 360); w, b in [0, 100]; alpha in [0, 1]. */
interface HwbColor {
h: number;
/** Whiteness [0, 100]. */
w: number;
/** Blackness [0, 100]. */
b: number;
alpha: number;
}
/** Input shape of `HwbColor` — `alpha` is optional and defaults to 1. */
type HwbColorInput = Omit<HwbColor, 'alpha'> & {
alpha?: number;
};
/** CIE Lab (D50). L in [0, 100]; a, b roughly in [-128, 128]. */
interface LabColor {
l: number;
/** Green–red axis. */
a: number;
/** Blue–yellow axis. */
b: number;
alpha: number;
readonly colorSpace: 'lab';
}
/** Input shape of `LabColor` — `alpha` is optional and defaults to 1. */
type LabColorInput = Omit<LabColor, 'alpha'> & {
alpha?: number;
};
/** CIE LCh (D50). L in [0, 100]; C in [0, ~150]; h in degrees. */
interface LchColor {
l: number;
c: number;
h: number;
alpha: number;
readonly colorSpace: 'lch';
}
/** Input shape of `LchColor` — `alpha` is optional and defaults to 1. */
type LchColorInput = Omit<LchColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D50). x, y, z on the library's 0–100 scale. */
interface XyzColor {
x: number;
y: number;
z: number;
alpha: number;
}
/** Input shape of `XyzColor` — `alpha` is optional and defaults to 1. */
type XyzColorInput = Omit<XyzColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D65). x, y, z on the library's 0–100 scale. */
interface XyzD65Color {
x: number;
y: number;
z: number;
alpha: number;
readonly colorSpace: 'xyz-d65';
}
type XyzD65ColorInput = Omit<XyzD65Color, 'alpha'> & {
alpha?: number;
};
/** CMYK color. c, m, y, k in [0, 100]; alpha in [0, 1]. */
interface CmykColor {
c: number;
m: number;
y: number;
k: number;
alpha: number;
}
/** Input shape of `CmykColor` — `alpha` is optional and defaults to 1. */
type CmykColorInput = Omit<CmykColor, 'alpha'> & {
alpha?: number;
};
/** OKLab. Perceptually uniform (D65). L in [0, 1]; a, b roughly in [-0.4, 0.4]. */
interface OklabColor {
l: number;
/** Green–red axis. */
a: number;
/** Blue–yellow axis. */
b: number;
alpha: number;
}
/** Input shape of `OklabColor` — `alpha` is optional and defaults to 1. */
type OklabColorInput = Omit<OklabColor, 'alpha'> & {
alpha?: number;
};
/** OKLCh. Polar form of OKLab. L in [0, 1]; C in [0, ~0.4]; h in degrees. */
interface OklchColor {
l: number;
c: number;
h: number;
alpha: number;
}
/** Input shape of `OklchColor` — `alpha` is optional and defaults to 1. */
type OklchColorInput = Omit<OklchColor, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Display-P3. r, g, b in [0, 1]. */
interface P3Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'display-p3';
}
/** Input shape of `P3Color` — `alpha` is optional and defaults to 1. */
type P3ColorInput = Omit<P3Color, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Rec.2020. r, g, b in [0, 1]. */
interface Rec2020Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'rec2020';
}
/** Input shape of `Rec2020Color` — `alpha` is optional and defaults to 1. */
type Rec2020ColorInput = Omit<Rec2020Color, 'alpha'> & {
alpha?: number;
};
/** Any color input accepted by `colordx()` and friends — a CSS string or one of the input objects. */
type AnyColor = string | RgbColorInput | HslColorInput | HsvColorInput | HwbColorInput | LabColorInput | LchColorInput | XyzColorInput | XyzD65ColorInput | CmykColorInput | OklabColorInput | OklchColorInput | P3ColorInput | Rec2020ColorInput;
/** A parser registered by a plugin. Returns the sRGB equivalent or `null` if the input doesn't match. */
type ColorParser<T = AnyColor> = (input: T) => RgbColor | null;
/** Format tags returned by `getFormat()`. */
type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv' | 'hwb' | 'oklab' | 'oklch' | 'lab' | 'lch' | 'xyz' | 'xyz-d65' | 'cmyk' | 'p3' | 'rec2020' | 'name';
declare const _SENTINEL: unique symbol;
/**
* Color value with parse, format, and manipulation methods.
* Construct via the `colordx()` helper or `new Colordx(input)`. Instances are immutable —
* mutators return a new `Colordx`.
*/
declare class Colordx {
private readonly _rgb;
private readonly _valid;
constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor);
private static _make;
/**
* Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.
* Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a
* color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored
* _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut
* channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.
*
* Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels
* directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP
* asymmetries on gamut-boundary colors.
*
* A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one
* channel exactly on 0 or 1 while the others sit where the input's hue landed, so an
* extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels
* (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all
* three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report
* phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;
* the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab
* see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut
* (P3 / Rec.2020 targets) and pass through untouched.
*/
static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx;
/** True when the input parsed as a recognised color. */
isValid(): boolean;
/** Returns sRGB channels rounded to integers in [0, 255], plus alpha in [0, 1]. */
toRgb(): RgbColor;
/** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */
_rawRgb(): RgbColor;
/**
* Formats as a CSS `rgb()` / `rgba()` string.
* Default is CSS Color 4 modern syntax — `rgb(255 0 0 / 0.5)`.
* Pass `{ legacy: true }` for CSS Color 3 comma syntax (switches to `rgba()` when alpha < 1).
*/
toRgbString(options?: {
legacy?: boolean;
}): string;
/** Returns `#rrggbb` (or `#rrggbbaa` when alpha < 1). */
toHex(): string;
/** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */
toHex8(): string;
/** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */
toNumber(): number;
/** Returns HSL channels: h in [0, 360), s/l in [0, 100], rounded to `precision` decimals. */
toHsl(precision?: number): HslColor;
/** Formats as a CSS `hsl()` string. */
toHslString(precision?: number): string;
/** Returns OKLab channels: L in [0, 1], a/b roughly in [-0.4, 0.4]. */
toOklab(precision?: number): OklabColor;
/** Formats as a CSS `oklab()` string. */
toOklabString(precision?: number): string;
/** Returns OKLCh channels: L in [0, 1], C in [0, ~0.4], H in degrees. */
toOklch(precision?: number): OklchColor;
/** Formats as a CSS `oklch()` string. Hue is `none` when chroma is 0. */
toOklchString(precision?: number): string;
/** Perceived brightness in [0, 1] using the ITU-R BT.601 weights. */
brightness(): number;
/** True when `brightness()` is below 0.5. */
isDark(): boolean;
/** True when `brightness()` is at or above 0.5. */
isLight(): boolean;
/** Get or set the alpha channel (clamped to [0, 1]). Setter returns a new `Colordx`. */
alpha(): number;
alpha(value: number): Colordx;
/** Get or set the HSL hue in degrees. Setter returns a new `Colordx`. */
hue(): number;
hue(value: number): Colordx;
/** Get or set the OKLCh lightness in [0, 1]. Setter returns a new `Colordx`. */
lightness(): number;
lightness(value: number): Colordx;
/** Get or set the OKLCh chroma in [0, 0.4]. Setter returns a new `Colordx`. */
chroma(): number;
chroma(value: number): Colordx;
/**
* Lightens by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to L.
* Pass `{ relative: true }` to multiply L by `1 + amount` instead.
*/
lighten(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/** Inverse of `lighten`. */
darken(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/**
* Saturates by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to S.
* Pass `{ relative: true }` to multiply S by `1 + amount` instead.
*/
saturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/** Inverse of `saturate`. */
desaturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
/** Drops saturation to zero. */
grayscale(): Colordx;
/** Inverts each RGB channel (255 − channel). */
invert(): Colordx;
/** Shifts the HSL hue by `amount` degrees (default 15). */
rotate(amount?: number): Colordx;
/** True when both colors round to the same RGBA tuple. */
isEqual(color: AnyColor): boolean;
/** Returns the hex form (alias for `toHex()`). */
toString(): string;
/**
* Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].
* Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.
* Hue and lightness may shift noticeably for colors far outside sRGB.
* Returns `this` when already in gamut.
*/
clampSrgb(): Colordx;
/**
* Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm
* (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.
* Useful when hue stability matters — design tokens, palettes, color pickers.
* Returns `this` when already in gamut.
*/
mapSrgb(): Colordx;
/**
* Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.
* Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.
*/
static toGamutSrgb: (input: AnyColor) => Colordx;
}
/**
* Plugin signature. Receives the `Colordx` class plus the parser arrays so a plugin
* can register conversions (by adding instance methods) and parsers (by pushing onto the arrays).
*/
type Plugin = (ColordxClass: typeof Colordx, parsers: ColorParser[], formatParsers: [ColorParser, ColorFormat][]) => void;
/** Constructs a `Colordx` from any supported color input. Existing instances pass through. */
declare const colordx: (input: AnyColor | Colordx) => Colordx;
/** Emits an 8-digit `#rrggbbaa` hex for any color input. Shortcut for `colordx(c).toHex8()`. */
declare const toHex8: (input: AnyColor | Colordx) => string;
/** Registers plugins. Each plugin is called once with the `Colordx` class and parser arrays. */
declare const extend: (plugins: Plugin[]) => void;
/**
* Picks the candidate closest to `color` by Euclidean distance in OKLab.
* Throws when `candidates` is empty.
*/
declare const nearest: <T extends AnyColor>(color: AnyColor, candidates: T[]) => T;
/** Returns a random opaque sRGB color. */
declare const random: () => Colordx;
export { type AnyColor as A, type XyzD65Color as B, type ColorFormat as C, type HslColor as H, type LabColor as L, type OklabColor as O, type P3Color as P, type Rec2020Color as R, type XyzColor as X, type CmykColor as a, type CmykColorInput as b, type ColorParser as c, Colordx as d, type HslColorInput as e, type HsvColor as f, type HsvColorInput as g, type HwbColor as h, type HwbColorInput as i, type LabColorInput as j, type LchColor as k, type LchColorInput as l, type OklabColorInput as m, type OklchColor as n, type OklchColorInput as o, type P3ColorInput as p, type Plugin as q, type Rec2020ColorInput as r, type RgbColor as s, type RgbColorInput as t, type XyzColorInput as u, colordx as v, extend as w, nearest as x, random as y, toHex8 as z };
+1
-1

@@ -1,2 +0,2 @@

'use strict';var chunkUAXI5JGL_cjs=require('./chunk-UAXI5JGL.cjs'),chunkJVG55LEC_cjs=require('./chunk-JVG55LEC.cjs'),chunkGXECYURS_cjs=require('./chunk-GXECYURS.cjs');require('./chunk-GU6TZJ4O.cjs');var chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var X=n=>({h:chunkYISEJCI6_cjs.c(n.h),s:chunkYISEJCI6_cjs.a(n.s,0,100),l:chunkYISEJCI6_cjs.a(n.l,0,100),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(n.alpha,3),0,1)}),y={h:0,s:0,l:0,alpha:0},O=({r:n,g:r,b:o,alpha:t})=>{let e=n/255,l=r/255,s=o/255,a=Math.max(e,l,s),c=Math.min(e,l,s),p=(a+c)/2,d=0,f=0;if(a!==c){let R=a-c;switch(f=p>.5?R/(2-a-c):R/(a+c),a){case e:d=((l-s)/R+(l<s?6:0))/6;break;case l:d=((s-e)/R+2)/6;break;case s:d=((e-l)/R+4)/6;break}}let k=d*360;return y.h=k>=0&&k<360?k:(k%360+360)%360,y.s=chunkYISEJCI6_cjs.a(f*100,0,100),y.l=chunkYISEJCI6_cjs.a(p*100,0,100),y.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t,3),0,1),y};var v=(n,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?n+(r-n)*6*o:o<1/2?r:o<2/3?n+(r-n)*(2/3-o)*6:n),_=({h:n,s:r,l:o,alpha:t})=>{let e=r/100,l=o/100,s=l<.5?l*(1+e):l+e-l*e,a=2*l-s,c=(n%360+360)%360/360;return {r:v(a,s,c+1/3)*255,g:v(a,s,c)*255,b:v(a,s,c-1/3)*255,alpha:t}},V=n=>{if(!chunkYISEJCI6_cjs.h(n)||!chunkYISEJCI6_cjs.i(n,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:e=1}=n;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(e)?null:_(X({h:chunkYISEJCI6_cjs.g(r),s:chunkYISEJCI6_cjs.g(o),l:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.g(e)}))},Lr=new RegExp(`^hsla?\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${chunkYISEJCI6_cjs.j})%\\s*,\\s*(?<l_c>${chunkYISEJCI6_cjs.j})%(?:\\s*,\\s*(?<al_c>${chunkYISEJCI6_cjs.j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${chunkYISEJCI6_cjs.k})(?<sp_s>%?)\\s+(?<l_s>${chunkYISEJCI6_cjs.k})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${chunkYISEJCI6_cjs.k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),J=n=>{if(typeof n!="string")return null;let r=Lr.exec(n.trim())?.groups;if(!r)return null;let o=r.s_c!==void 0;if(o&&/^none$/i.test(r.h))return null;let t=r.hu?.toLowerCase()??"deg",e=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[t]??1),l=chunkYISEJCI6_cjs.l(r.s_c??r.s_s),s=chunkYISEJCI6_cjs.l(r.l_c??r.l_s),a=r.al_c??r.al_s,c=!!(r.alp_c??r.alp_s);if(o&&a!==void 0&&/^none$/i.test(a))return null;let p=a===void 0?1:chunkYISEJCI6_cjs.l(a)/(c?100:1);return _(X({h:e,s:l,l:s,alpha:p}))};var Q=({l:n,c:r,h:o,alpha:t})=>({l:n,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),W=n=>{let{l:r,a:o,b:t,alpha:e}=chunkGXECYURS_cjs.b(n),l=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:l,h:l<4e-6?0:chunkYISEJCI6_cjs.c(s),alpha:e}},M=n=>chunkGXECYURS_cjs.d(Q(n)),Y=n=>chunkGXECYURS_cjs.c(Q(n)),Z=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace==="lch"||!chunkYISEJCI6_cjs.i(n,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:e=1}=n;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(e)||chunkYISEJCI6_cjs.g(r)>1?null:Y({l:chunkYISEJCI6_cjs.g(r),c:Math.max(0,chunkYISEJCI6_cjs.g(o)),h:chunkYISEJCI6_cjs.c(chunkYISEJCI6_cjs.g(t)),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(e),0,1)})},Ir=new RegExp(`^oklch\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<c>${chunkYISEJCI6_cjs.k})(?<cp>%?)\\s+(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),rr=n=>{if(typeof n!="string")return null;let r=Ir.exec(n.trim())?.groups;if(!r)return null;let o=r.lp?chunkYISEJCI6_cjs.l(r.l)/100:chunkYISEJCI6_cjs.l(r.l),t=Math.max(0,r.cp?chunkYISEJCI6_cjs.l(r.c)*.004:chunkYISEJCI6_cjs.l(r.c)),e=r.hu?.toLowerCase()??"deg",l=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[e]??1),s=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return Y({l:o,c:t,h:chunkYISEJCI6_cjs.c(l),alpha:chunkYISEJCI6_cjs.a(s,0,1)})};var or=[[chunkUAXI5JGL_cjs.b,"hex"],[chunk3V4MONNR_cjs.c,"rgb"],[J,"hsl"],[rr,"oklch"],[chunkGXECYURS_cjs.h,"oklab"]],tr=[[chunk3V4MONNR_cjs.b,"rgb"],[V,"hsl"],[chunkGXECYURS_cjs.g,"oklab"],[Z,"oklch"]],nr=or.map(([n])=>n),lr=tr.map(([n])=>n),er=[...nr,...lr],P=[...er],N=[],sr=n=>{if(n==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof n=="string"?nr:lr;for(let o of r){let t=o(n);if(t)return t}for(let o=er.length;o<P.length;o++){let t=P[o](n);if(t)return t}return null},Pr=n=>{if(n==="transparent")return "name";let r=typeof n=="string"?or:tr;for(let[o,t]of r)if(o(n))return t;for(let[o,t]of N)if(o(n))return t};var ar=Symbol(),u=class n{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof n){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}this._rgb.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(this._rgb.alpha,3),0,1);}static _make(r){return new n(ar,r)}static _makeFromLinearSrgb(r,o,t,e){let l=chunkX5FCFNQN_cjs.b(r)*255,s=chunkX5FCFNQN_cjs.b(o)*255,a=chunkX5FCFNQN_cjs.b(t)*255;return n._make({r:l>=0&&l<.5?0:l>254.5&&l<=255?255:l,g:s>=0&&s<.5?0:s>254.5&&s<=255?255:s,b:a>=0&&a<.5?0:a>254.5&&a<=255?255:a,alpha:e})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return {r:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r),0,255),g:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255),b:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255),alpha:e}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:e,alpha:l}=this._rgb,s=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255),a=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255),c=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(e),0,255);return r?.legacy?l<1?`rgba(${s}, ${a}, ${c}, ${l})`:`rgb(${s}, ${a}, ${c})`:l<1?`rgb(${s} ${a} ${c} / ${l})`:`rgb(${s} ${a} ${c})`}toHex(){return chunkUAXI5JGL_cjs.c(this._rgb)}toHex8(){return chunkUAXI5JGL_cjs.d(this._rgb)}toNumber(){let{r,g:o,b:t}=this._rgb;return chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r),0,255)<<16|chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255)<<8|chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255)}toHsl(r=2){let{h:o,s:t,l:e,alpha:l}=O(this._rgb),s=chunkYISEJCI6_cjs.b(o,r);return {h:s>=360?0:s,s:chunkYISEJCI6_cjs.b(t,r),l:chunkYISEJCI6_cjs.b(e,r),alpha:l}}toHslString(r=2){let{h:o,s:t,l:e,alpha:l}=this.toHsl(r);return l<1?`hsl(${o} ${t}% ${e}% / ${l})`:`hsl(${o} ${t}% ${e}%)`}toOklab(r=4){let{l:o,a:t,b:e,alpha:l}=chunkGXECYURS_cjs.b(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),a:chunkYISEJCI6_cjs.b(t,r),b:chunkYISEJCI6_cjs.b(e,r),alpha:l}}toOklabString(r=4){let{l:o,a:t,b:e,alpha:l}=this.toOklab(r);return l<1?`oklab(${o} ${t} ${e} / ${l})`:`oklab(${o} ${t} ${e})`}toOklch(r=4){let{l:o,c:t,h:e,alpha:l}=W(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),c:chunkYISEJCI6_cjs.b(t,r),h:chunkYISEJCI6_cjs.b(e,r),alpha:l}}toOklchString(r=4){let{l:o,c:t,h:e,alpha:l}=this.toOklch(r),s=t===0?"none":e;return l<1?`oklch(${o} ${t} ${s} / ${l})`:`oklch(${o} ${t} ${s})`}brightness(){let{r,g:o,b:t}=this._rgb;return chunkYISEJCI6_cjs.b((r*299+o*587+t*114)/255e3,2)}isDark(){return this.brightness()<.5}isLight(){return this.brightness()>=.5}alpha(r){return r===void 0?this._rgb.alpha:n._make({...this._rgb,alpha:chunkYISEJCI6_cjs.b(chunkYISEJCI6_cjs.a(r,0,1),3)})}hue(r){let{h:o,s:t,l:e,alpha:l}=O(this._rgb);if(r===void 0){let s=chunkYISEJCI6_cjs.b(o,2);return s>=360?0:s}return n._make(_({h:r,s:t,l:e,alpha:l}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:n._make(M({...o,l:chunkYISEJCI6_cjs.a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:n._make(M({...o,c:chunkYISEJCI6_cjs.a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a=o?.relative?l*(1+r):l+r*100;return n._make(_({h:t,s:e,l:chunkYISEJCI6_cjs.a(a,0,100),alpha:s}))}darken(r=.1,o){return this.lighten(-r,o)}saturate(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a=o?.relative?e*(1+r):e+r*100;return n._make(_({h:t,s:chunkYISEJCI6_cjs.a(a,0,100),l,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:e}=this._rgb;return n._make({r:255-r,g:255-o,b:255-t,alpha:e})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new n(r).toRgb(),t=this.toRgb();return t.r===o.r&&t.g===o.g&&t.b===o.b&&t.alpha===o.alpha}toString(){return this.toHex()}clampSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:n._make({r:chunkYISEJCI6_cjs.a(r,0,255),g:chunkYISEJCI6_cjs.a(o,0,255),b:chunkYISEJCI6_cjs.a(t,0,255),alpha:e})}mapSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[l,s,a]=chunkGXECYURS_cjs.a(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(o/255),chunkX5FCFNQN_cjs.a(t/255)),c=l>1-1e-7?1:l<1e-7?0:l,p=chunkJVG55LEC_cjs.p({l:c,a:s,b:a,alpha:e});if(p===null)return this;let[d,f,k]=p.linear;return n._makeFromLinearSrgb(d,f,k,p.alpha)}static toGamutSrgb},Ar=n=>new u(n),vr=n=>new u(n).toHex8(),Mr=n=>{n.forEach(r=>r(u,P,N));},Nr=(n,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:e}=new u(n).toOklab(),l=1/0,s=r[0];for(let a of r){let{l:c,a:p,b:d}=new u(a).toOklab(),f=(c-o)**2+(p-t)**2+(d-e)**2;f<l&&(l=f,s=a);}return s},Fr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=n=>{let r=chunkJVG55LEC_cjs.p(n);if(r===null)return new u(n);let[o,t,e]=r.linear;return u._makeFromLinearSrgb(o,t,e,r.alpha)};Object.defineProperty(exports,"toHexByte",{enumerable:true,get:function(){return chunkUAXI5JGL_cjs.a}});Object.defineProperty(exports,"inGamutSrgb",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.o}});Object.defineProperty(exports,"labToLinearAndSrgb",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.I}});Object.defineProperty(exports,"labToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.J}});Object.defineProperty(exports,"labToLinearSrgb",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.A}});Object.defineProperty(exports,"labToLinearSrgbInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.B}});Object.defineProperty(exports,"labToRgbChannels",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.E}});Object.defineProperty(exports,"labToRgbChannelsInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.F}});Object.defineProperty(exports,"lchToLinearAndSrgb",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.K}});Object.defineProperty(exports,"lchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.L}});Object.defineProperty(exports,"lchToLinearSrgb",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.C}});Object.defineProperty(exports,"lchToLinearSrgbInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.D}});Object.defineProperty(exports,"lchToRgbChannels",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.G}});Object.defineProperty(exports,"lchToRgbChannelsInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.H}});Object.defineProperty(exports,"oklchToLinear",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.s}});Object.defineProperty(exports,"oklchToLinearAndSrgb",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.w}});Object.defineProperty(exports,"oklchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.x}});Object.defineProperty(exports,"oklchToLinearInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.t}});Object.defineProperty(exports,"oklchToRgbChannels",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.u}});Object.defineProperty(exports,"oklchToRgbChannelsInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.v}});Object.defineProperty(exports,"rgbToLinear",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.y}});Object.defineProperty(exports,"rgbToLinearInto",{enumerable:true,get:function(){return chunkJVG55LEC_cjs.z}});exports.Colordx=u;exports.colordx=Ar;exports.extend=Mr;exports.getFormat=Pr;exports.nearest=Nr;exports.random=Fr;exports.toHex8=vr;//# sourceMappingURL=index.cjs.map
'use strict';var chunkUAXI5JGL_cjs=require('./chunk-UAXI5JGL.cjs'),chunkYXTI4MTI_cjs=require('./chunk-YXTI4MTI.cjs'),chunkTRRLWCL6_cjs=require('./chunk-TRRLWCL6.cjs');require('./chunk-PI5KJ3ZM.cjs');var chunkINDSIUQQ_cjs=require('./chunk-INDSIUQQ.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var X=n=>({h:chunkYISEJCI6_cjs.c(n.h),s:chunkYISEJCI6_cjs.a(n.s,0,100),l:chunkYISEJCI6_cjs.a(n.l,0,100),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(n.alpha,3),0,1)}),y={h:0,s:0,l:0,alpha:0},O=({r:n,g:r,b:o,alpha:t})=>{let e=n/255,l=r/255,s=o/255,a=Math.max(e,l,s),c=Math.min(e,l,s),m=(a+c)/2,d=0,f=0;if(a!==c){let R=a-c;switch(f=m>.5?R/(2-a-c):R/(a+c),a){case e:d=((l-s)/R+(l<s?6:0))/6;break;case l:d=((s-e)/R+2)/6;break;case s:d=((e-l)/R+4)/6;break}}let k=d*360;return y.h=k>=0&&k<360?k:(k%360+360)%360,y.s=chunkYISEJCI6_cjs.a(f*100,0,100),y.l=chunkYISEJCI6_cjs.a(m*100,0,100),y.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t,3),0,1),y};var v=(n,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?n+(r-n)*6*o:o<1/2?r:o<2/3?n+(r-n)*(2/3-o)*6:n),_=({h:n,s:r,l:o,alpha:t})=>{let e=r/100,l=o/100,s=l<.5?l*(1+e):l+e-l*e,a=2*l-s,c=(n%360+360)%360/360;return {r:v(a,s,c+1/3)*255,g:v(a,s,c)*255,b:v(a,s,c-1/3)*255,alpha:t}},V=n=>{if(!chunkYISEJCI6_cjs.h(n)||!chunkYISEJCI6_cjs.i(n,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:e=1}=n;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(e)?null:_(X({h:chunkYISEJCI6_cjs.g(r),s:chunkYISEJCI6_cjs.g(o),l:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.g(e)}))},Lr=new RegExp(`^hsla?\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${chunkYISEJCI6_cjs.j})%\\s*,\\s*(?<l_c>${chunkYISEJCI6_cjs.j})%(?:\\s*,\\s*(?<al_c>${chunkYISEJCI6_cjs.j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${chunkYISEJCI6_cjs.k})(?<sp_s>%?)\\s+(?<l_s>${chunkYISEJCI6_cjs.k})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${chunkYISEJCI6_cjs.k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),J=n=>{if(typeof n!="string")return null;let r=Lr.exec(n.trim())?.groups;if(!r)return null;let o=r.s_c!==void 0;if(o&&/^none$/i.test(r.h))return null;let t=r.hu?.toLowerCase()??"deg",e=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[t]??1),l=chunkYISEJCI6_cjs.l(r.s_c??r.s_s),s=chunkYISEJCI6_cjs.l(r.l_c??r.l_s),a=r.al_c??r.al_s,c=!!(r.alp_c??r.alp_s);if(o&&a!==void 0&&/^none$/i.test(a))return null;let m=a===void 0?1:chunkYISEJCI6_cjs.l(a)/(c?100:1);return _(X({h:e,s:l,l:s,alpha:m}))};var Q=({l:n,c:r,h:o,alpha:t})=>({l:n,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),W=n=>{let{l:r,a:o,b:t,alpha:e}=chunkTRRLWCL6_cjs.b(n),l=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:l,h:l<4e-6?0:chunkYISEJCI6_cjs.c(s),alpha:e}},M=n=>chunkTRRLWCL6_cjs.d(Q(n)),Y=n=>chunkTRRLWCL6_cjs.c(Q(n)),Z=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace==="lch"||!chunkYISEJCI6_cjs.i(n,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:e=1}=n;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(e)||chunkYISEJCI6_cjs.g(r)>1?null:Y({l:chunkYISEJCI6_cjs.g(r),c:Math.max(0,chunkYISEJCI6_cjs.g(o)),h:chunkYISEJCI6_cjs.c(chunkYISEJCI6_cjs.g(t)),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(e),0,1)})},Ir=new RegExp(`^oklch\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<c>${chunkYISEJCI6_cjs.k})(?<cp>%?)\\s+(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),rr=n=>{if(typeof n!="string")return null;let r=Ir.exec(n.trim())?.groups;if(!r)return null;let o=r.lp?chunkYISEJCI6_cjs.l(r.l)/100:chunkYISEJCI6_cjs.l(r.l),t=Math.max(0,r.cp?chunkYISEJCI6_cjs.l(r.c)*.004:chunkYISEJCI6_cjs.l(r.c)),e=r.hu?.toLowerCase()??"deg",l=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[e]??1),s=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return Y({l:o,c:t,h:chunkYISEJCI6_cjs.c(l),alpha:chunkYISEJCI6_cjs.a(s,0,1)})};var or=[[chunkUAXI5JGL_cjs.b,"hex"],[chunk3V4MONNR_cjs.c,"rgb"],[J,"hsl"],[rr,"oklch"],[chunkTRRLWCL6_cjs.h,"oklab"]],tr=[[chunk3V4MONNR_cjs.b,"rgb"],[V,"hsl"],[chunkTRRLWCL6_cjs.g,"oklab"],[Z,"oklch"]],nr=or.map(([n])=>n),lr=tr.map(([n])=>n),er=[...nr,...lr],P=[...er],N=[],sr=n=>{if(n==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof n=="string"?nr:lr;for(let o of r){let t=o(n);if(t)return t}for(let o=er.length;o<P.length;o++){let t=P[o](n);if(t)return t}return null},Pr=n=>{if(n==="transparent")return "name";let r=typeof n=="string"?or:tr;for(let[o,t]of r)if(o(n))return t;for(let[o,t]of N)if(o(n))return t};var ar=Symbol(),u=class n{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof n){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}this._rgb.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(this._rgb.alpha,3),0,1);}static _make(r){return new n(ar,r)}static _makeFromLinearSrgb(r,o,t,e){let l=chunkINDSIUQQ_cjs.b(r)*255,s=chunkINDSIUQQ_cjs.b(o)*255,a=chunkINDSIUQQ_cjs.b(t)*255;return n._make({r:l>=0&&l<.5?0:l>254.5&&l<=255?255:l,g:s>=0&&s<.5?0:s>254.5&&s<=255?255:s,b:a>=0&&a<.5?0:a>254.5&&a<=255?255:a,alpha:e})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return {r:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r),0,255),g:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255),b:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255),alpha:e}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:e,alpha:l}=this._rgb,s=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255),a=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255),c=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(e),0,255);return r?.legacy?l<1?`rgba(${s}, ${a}, ${c}, ${l})`:`rgb(${s}, ${a}, ${c})`:l<1?`rgb(${s} ${a} ${c} / ${l})`:`rgb(${s} ${a} ${c})`}toHex(){return chunkUAXI5JGL_cjs.c(this._rgb)}toHex8(){return chunkUAXI5JGL_cjs.d(this._rgb)}toNumber(){let{r,g:o,b:t}=this._rgb;return chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r),0,255)<<16|chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255)<<8|chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255)}toHsl(r=2){let{h:o,s:t,l:e,alpha:l}=O(this._rgb),s=chunkYISEJCI6_cjs.b(o,r);return {h:s>=360?0:s,s:chunkYISEJCI6_cjs.b(t,r),l:chunkYISEJCI6_cjs.b(e,r),alpha:l}}toHslString(r=2){let{h:o,s:t,l:e,alpha:l}=this.toHsl(r);return l<1?`hsl(${o} ${t}% ${e}% / ${l})`:`hsl(${o} ${t}% ${e}%)`}toOklab(r=5){let{l:o,a:t,b:e,alpha:l}=chunkTRRLWCL6_cjs.b(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),a:chunkYISEJCI6_cjs.b(t,r),b:chunkYISEJCI6_cjs.b(e,r),alpha:l}}toOklabString(r=5){let{l:o,a:t,b:e,alpha:l}=this.toOklab(r);return l<1?`oklab(${o} ${t} ${e} / ${l})`:`oklab(${o} ${t} ${e})`}toOklch(r=5){let{l:o,c:t,h:e,alpha:l}=W(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),c:chunkYISEJCI6_cjs.b(t,r),h:chunkYISEJCI6_cjs.b(e,r),alpha:l}}toOklchString(r=5){let{l:o,c:t,h:e,alpha:l}=this.toOklch(r),s=t===0?"none":e;return l<1?`oklch(${o} ${t} ${s} / ${l})`:`oklch(${o} ${t} ${s})`}brightness(){let{r,g:o,b:t}=this._rgb;return chunkYISEJCI6_cjs.b((r*299+o*587+t*114)/255e3,2)}isDark(){return this.brightness()<.5}isLight(){return this.brightness()>=.5}alpha(r){return r===void 0?this._rgb.alpha:n._make({...this._rgb,alpha:chunkYISEJCI6_cjs.b(chunkYISEJCI6_cjs.a(r,0,1),3)})}hue(r){let{h:o,s:t,l:e,alpha:l}=O(this._rgb);if(r===void 0){let s=chunkYISEJCI6_cjs.b(o,2);return s>=360?0:s}return n._make(_({h:r,s:t,l:e,alpha:l}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:n._make(M({...o,l:chunkYISEJCI6_cjs.a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:n._make(M({...o,c:chunkYISEJCI6_cjs.a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a=o?.relative?l*(1+r):l+r*100;return n._make(_({h:t,s:e,l:chunkYISEJCI6_cjs.a(a,0,100),alpha:s}))}darken(r=.1,o){return this.lighten(-r,o)}saturate(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a=o?.relative?e*(1+r):e+r*100;return n._make(_({h:t,s:chunkYISEJCI6_cjs.a(a,0,100),l,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:e}=this._rgb;return n._make({r:255-r,g:255-o,b:255-t,alpha:e})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new n(r).toRgb(),t=this.toRgb();return t.r===o.r&&t.g===o.g&&t.b===o.b&&t.alpha===o.alpha}toString(){return this.toHex()}clampSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:n._make({r:chunkYISEJCI6_cjs.a(r,0,255),g:chunkYISEJCI6_cjs.a(o,0,255),b:chunkYISEJCI6_cjs.a(t,0,255),alpha:e})}mapSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[l,s,a]=chunkTRRLWCL6_cjs.a(chunkINDSIUQQ_cjs.a(r/255),chunkINDSIUQQ_cjs.a(o/255),chunkINDSIUQQ_cjs.a(t/255)),c=l>1-1e-7?1:l<1e-7?0:l,m=chunkYXTI4MTI_cjs.p({l:c,a:s,b:a,alpha:e});if(m===null)return this;let[d,f,k]=m.linear;return n._makeFromLinearSrgb(d,f,k,m.alpha)}static toGamutSrgb},Ar=n=>new u(n),vr=n=>new u(n).toHex8(),Mr=n=>{n.forEach(r=>r(u,P,N));},Nr=(n,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:e}=new u(n).toOklab(),l=1/0,s=r[0];for(let a of r){let{l:c,a:m,b:d}=new u(a).toOklab(),f=(c-o)**2+(m-t)**2+(d-e)**2;f<l&&(l=f,s=a);}return s},Fr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=n=>{let r=chunkYXTI4MTI_cjs.p(n);if(r===null)return new u(n);let[o,t,e]=r.linear;return u._makeFromLinearSrgb(o,t,e,r.alpha)};Object.defineProperty(exports,"toHexByte",{enumerable:true,get:function(){return chunkUAXI5JGL_cjs.a}});Object.defineProperty(exports,"inGamutSrgb",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.o}});Object.defineProperty(exports,"labToLinearAndSrgb",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.I}});Object.defineProperty(exports,"labToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.J}});Object.defineProperty(exports,"labToLinearSrgb",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.A}});Object.defineProperty(exports,"labToLinearSrgbInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.B}});Object.defineProperty(exports,"labToRgbChannels",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.E}});Object.defineProperty(exports,"labToRgbChannelsInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.F}});Object.defineProperty(exports,"lchToLinearAndSrgb",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.K}});Object.defineProperty(exports,"lchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.L}});Object.defineProperty(exports,"lchToLinearSrgb",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.C}});Object.defineProperty(exports,"lchToLinearSrgbInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.D}});Object.defineProperty(exports,"lchToRgbChannels",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.G}});Object.defineProperty(exports,"lchToRgbChannelsInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.H}});Object.defineProperty(exports,"oklchToLinear",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.s}});Object.defineProperty(exports,"oklchToLinearAndSrgb",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.w}});Object.defineProperty(exports,"oklchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.x}});Object.defineProperty(exports,"oklchToLinearInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.t}});Object.defineProperty(exports,"oklchToRgbChannels",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.u}});Object.defineProperty(exports,"oklchToRgbChannelsInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.v}});Object.defineProperty(exports,"rgbToLinear",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.y}});Object.defineProperty(exports,"rgbToLinearInto",{enumerable:true,get:function(){return chunkYXTI4MTI_cjs.z}});exports.Colordx=u;exports.colordx=Ar;exports.extend=Mr;exports.getFormat=Pr;exports.nearest=Nr;exports.random=Fr;exports.toHex8=vr;//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/colorModels/hsl.ts","../src/colorModels/oklch.ts","../src/parse.ts","../src/colordx.ts"],"names":["clampHsl","hsl","normalizeHue","clamp","round","_hslBuf","rgbToHslRaw","r","g","b","alpha","rn","gn","bn","max","min","l","h","s","d","hDeg","_hueToRgb","p","q","t","hslToRgb","sn","ln","hue","parseHslObject","input","isObject","hasKeys","isAnyNumber","sanitize","HSL_RE","NUM_OR_NONE","NUM","parseHslString","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","oklchToOklab","c","rgbToOklch","rgb","ol","oa","ob","rgbToOklab","C","H","oklchToRgb","oklch","oklabToRgb","oklchToRgbUnclamped","oklabToRgbUnclamped","parseOklchObject","OKLCH_RE","parseOklchString","L","stringFormatParsers","parseHex","parseRgbString","parseOklabString","objectFormatParsers","parseRgbObject","parseOklabObject","builtinStringParsers","builtinObjectParsers","defaultParsers","parsers","pluginFormatParsers","parse","builtins","parser","result","i","getFormat","typed","format","_SENTINEL","Colordx","_Colordx","_direct","parsed","lr","lg","lb","rb","srgbFromLinear","gb","bb","options","ri","gi","bi","rgbToHex","rgbToHex8","precision","hr","a","value","amount","newL","newS","color","other","self","lRaw","bv","linearSrgbToOklab","srgbToLinear","mapped","toGamutSrgbRaw","mr","mg","mb","colordx","toHex8","extend","plugins","plugin","nearest","candidates","l1","a1","b1","minDist","candidate","l2","a2","b2","dist","random"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HslColor, RgbColor } from '../types.js';\n\nexport const clampHsl = (hsl: HslColor): HslColor => ({\n h: normalizeHue(hsl.h),\n s: clamp(hsl.s, 0, 100),\n l: clamp(hsl.l, 0, 100),\n alpha: clamp(round(hsl.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHslRaw — callers must destructure immediately, never store the reference.\nconst _hslBuf: HslColor = { h: 0, s: 0, l: 0, alpha: 0 };\n\nexport const rgbToHslRaw = ({ r, g, b, alpha }: RgbColor): HslColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const l = (max + min) / 2;\n let h = 0,\n s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hslBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hslBuf.s = clamp(s * 100, 0, 100);\n _hslBuf.l = clamp(l * 100, 0, 100);\n _hslBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hslBuf;\n};\n\nexport const rgbToHsl = (rgb: RgbColor): HslColor => {\n const { h, s, l, alpha } = rgbToHslRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), l: round(l, 2), alpha };\n};\n\nconst _hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n};\n\nexport const hslToRgb = ({ h, s, l, alpha }: HslColor): RgbColor => {\n const sn = s / 100,\n ln = l / 100;\n const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;\n const p = 2 * ln - q;\n const hue = (((h % 360) + 360) % 360) / 360;\n return {\n r: _hueToRgb(p, q, hue + 1 / 3) * 255,\n g: _hueToRgb(p, q, hue) * 255,\n b: _hueToRgb(p, q, hue - 1 / 3) * 255,\n alpha,\n };\n};\n\nexport const parseHslObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'l'])) return null;\n const { h, s, l, alpha = 1 } = input as { h: unknown; s: unknown; l: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(l) || !isAnyNumber(alpha)) return null;\n return hslToRgb(clampHsl({ h: sanitize(h), s: sanitize(s), l: sanitize(l), alpha: sanitize(alpha) }));\n};\n\n// Legacy comma form requires `%` on s/l and disallows `none`. Modern space form\n// allows optional `%` and the CSS Color 4 `none` keyword on any channel.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSL_RE = new RegExp(\n `^hsla?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<l_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<l_s>${NUM_OR_NONE})(?<lp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHslString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSL_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null; // legacy syntax has no `none`\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const l = parseNum((g.l_c ?? g.l_s)!);\n const rawA = g.al_c ?? g.al_s;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hslToRgb(clampHsl({ h, s, l, alpha }));\n};\n","import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n sanitize,\n} from '../helpers.js';\nimport type { OklabColor, OklchColor, RgbColor } from '../types.js';\nimport { oklabToRgb, oklabToRgbUnclamped, rgbToOklab } from './oklab.js';\n\nconst oklchToOklab = ({ l, c, h, alpha }: OklchColor): OklabColor => ({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n});\n\nexport const rgbToOklch = (rgb: RgbColor): OklchColor => {\n const { l: ol, a: oa, b: ob, alpha } = rgbToOklab(rgb);\n const C = Math.sqrt(oa * oa + ob * ob);\n const H = (Math.atan2(ob, oa) * 180) / Math.PI;\n // Achromatic threshold on OKLCH scale (0–~0.4): proportionally equivalent to LCH's 0.0015 threshold.\n return { l: ol, c: C, h: C < 0.000004 ? 0 : normalizeHue(H), alpha };\n};\n\nexport const oklchToRgb = (oklch: OklchColor): RgbColor => oklabToRgb(oklchToOklab(oklch));\nconst oklchToRgbUnclamped = (oklch: OklchColor): RgbColor => oklabToRgbUnclamped(oklchToOklab(oklch));\n\nexport const parseOklchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lch' are CIE LCH, not OKLCH — let parseLchObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lch') return null;\n if (!hasKeys(input, ['l', 'c', 'h'])) return null;\n const { l, c, h, alpha = 1 } = input as { l: unknown; c: unknown; h: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(c) || !isAnyNumber(h) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLCH L is always [0, 1]; reject CIE LCH values passed without colorSpace branding\n return oklchToRgbUnclamped({\n l: sanitize(l),\n c: Math.max(0, sanitize(c)),\n h: normalizeHue(sanitize(h)),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLCH_RE = new RegExp(\n `^oklch\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<c>${NUM_OR_NONE})(?<cp>%?)` +\n `\\\\s+(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const C = Math.max(0, g.cp ? parseNum(g.c!) * 0.004 : parseNum(g.c!)); // 100% = 0.4\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const H = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklchToRgbUnclamped({\n l: L,\n c: C,\n h: normalizeHue(H),\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { parseHex } from './colorModels/hex.js';\nimport { parseHslObject, parseHslString } from './colorModels/hsl.js';\nimport { parseOklabObject, parseOklabString } from './colorModels/oklab.js';\nimport { parseOklchObject, parseOklchString } from './colorModels/oklch.js';\nimport { parseRgbObject, parseRgbString } from './colorModels/rgb.js';\nimport type { AnyColor, ColorFormat, ColorParser, RgbColor } from './types.js';\n\nconst stringFormatParsers: [ColorParser, ColorFormat][] = [\n [parseHex, 'hex'],\n [parseRgbString, 'rgb'],\n [parseHslString, 'hsl'],\n [parseOklchString, 'oklch'],\n [parseOklabString, 'oklab'],\n];\n\nconst objectFormatParsers: [ColorParser, ColorFormat][] = [\n [parseRgbObject, 'rgb'],\n [parseHslObject, 'hsl'],\n [parseOklabObject, 'oklab'],\n [parseOklchObject, 'oklch'],\n];\n\nconst builtinStringParsers: ColorParser[] = stringFormatParsers.map(([p]) => p);\nconst builtinObjectParsers: ColorParser[] = objectFormatParsers.map(([p]) => p);\n\nexport const defaultParsers: ColorParser[] = [...builtinStringParsers, ...builtinObjectParsers];\nexport const parsers: ColorParser[] = [...defaultParsers];\nexport const pluginFormatParsers: [ColorParser, ColorFormat][] = [];\n\nexport const parse = (input: AnyColor): RgbColor | null => {\n if (input === 'transparent') return { r: 0, g: 0, b: 0, alpha: 0 };\n const builtins = typeof input === 'string' ? builtinStringParsers : builtinObjectParsers;\n for (const parser of builtins) {\n const result = parser(input);\n if (result) return result;\n }\n for (let i = defaultParsers.length; i < parsers.length; i++) {\n const result = parsers[i]!(input);\n if (result) return result;\n }\n return null;\n};\n\nexport const getFormat = (input: AnyColor): ColorFormat | undefined => {\n if (input === 'transparent') return 'name';\n const typed = typeof input === 'string' ? stringFormatParsers : objectFormatParsers;\n for (const [parser, format] of typed) {\n if (parser(input)) return format;\n }\n for (const [parser, format] of pluginFormatParsers) {\n if (parser(input)) return format;\n }\n return undefined;\n};\n","import { rgbToHex, rgbToHex8 } from './colorModels/hex.js';\nimport { hslToRgb, rgbToHslRaw } from './colorModels/hsl.js';\nimport { linearSrgbToOklab, rgbToOklab } from './colorModels/oklab.js';\nimport { oklchToRgb, rgbToOklch } from './colorModels/oklch.js';\nimport { toGamutSrgbRaw } from './gamut.js';\nimport { clamp, round } from './helpers.js';\nimport { parse, parsers, pluginFormatParsers } from './parse.js';\nimport { srgbFromLinear, srgbToLinear } from './transfer.js';\nimport type { AnyColor, ColorFormat, ColorParser, HslColor, OklabColor, OklchColor, RgbColor } from './types.js';\n\nconst _SENTINEL: unique symbol = Symbol();\n\nexport class Colordx {\n private readonly _rgb: RgbColor;\n private readonly _valid: boolean;\n\n constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor) {\n if (input === _SENTINEL) {\n this._valid = true;\n this._rgb = _direct!;\n } else if (input instanceof Colordx) {\n this._valid = input._valid;\n this._rgb = input._rgb;\n return;\n } else {\n const parsed = parse(input);\n this._valid = parsed !== null;\n this._rgb = parsed ?? { r: 0, g: 0, b: 0, alpha: 1 };\n }\n // Single chokepoint for alpha precision: parsers and _make() callers may hand us\n // raw floats (e.g. 1/255, 0.1+0.2). Snapping here keeps every formatter consistent.\n this._rgb.alpha = clamp(round(this._rgb.alpha, 3), 0, 1);\n }\n\n private static _make(rgb: RgbColor): Colordx {\n return new Colordx(_SENTINEL, rgb);\n }\n\n /**\n * Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.\n * Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a\n * color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored\n * _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut\n * channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.\n *\n * Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels\n * directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP\n * asymmetries on gamut-boundary colors.\n *\n * A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one\n * channel exactly on 0 or 1 while the others sit where the input's hue landed, so an\n * extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels\n * (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all\n * three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report\n * phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;\n * the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab\n * see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut\n * (P3 / Rec.2020 targets) and pass through untouched.\n */\n static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx {\n const rb = srgbFromLinear(lr) * 255;\n const gb = srgbFromLinear(lg) * 255;\n const bb = srgbFromLinear(lb) * 255;\n return Colordx._make({\n r: rb >= 0 && rb < 0.5 ? 0 : rb > 254.5 && rb <= 255 ? 255 : rb,\n g: gb >= 0 && gb < 0.5 ? 0 : gb > 254.5 && gb <= 255 ? 255 : gb,\n b: bb >= 0 && bb < 0.5 ? 0 : bb > 254.5 && bb <= 255 ? 255 : bb,\n alpha,\n });\n }\n\n isValid(): boolean {\n return this._valid;\n }\n\n toRgb(): RgbColor {\n const { r, g, b, alpha } = this._rgb;\n return { r: clamp(round(r), 0, 255), g: clamp(round(g), 0, 255), b: clamp(round(b), 0, 255), alpha };\n }\n\n /** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */\n _rawRgb(): RgbColor {\n return this._rgb;\n }\n\n /**\n * Format as a `rgb()` / `rgba()` CSS string.\n * Default is CSS Color 4 modern syntax (space-separated, slash-delimited alpha):\n * `rgb(255 0 0)` / `rgb(255 0 0 / 0.5)`\n * Pass `{ legacy: true }` for CSS Color 3 comma-separated syntax, which also\n * switches the function name to `rgba()` when alpha < 1:\n * `rgb(255, 0, 0)` / `rgba(255, 0, 0, 0.5)`\n */\n toRgbString(options?: { legacy?: boolean }): string {\n const { r, g, b, alpha } = this._rgb;\n const ri = clamp(round(r), 0, 255),\n gi = clamp(round(g), 0, 255),\n bi = clamp(round(b), 0, 255);\n if (options?.legacy) {\n return alpha < 1 ? `rgba(${ri}, ${gi}, ${bi}, ${alpha})` : `rgb(${ri}, ${gi}, ${bi})`;\n }\n return alpha < 1 ? `rgb(${ri} ${gi} ${bi} / ${alpha})` : `rgb(${ri} ${gi} ${bi})`;\n }\n\n toHex(): string {\n return rgbToHex(this._rgb);\n }\n\n /** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */\n toHex8(): string {\n return rgbToHex8(this._rgb);\n }\n\n /** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */\n toNumber(): number {\n const { r, g, b } = this._rgb;\n return (clamp(round(r), 0, 255) << 16) | (clamp(round(g), 0, 255) << 8) | clamp(round(b), 0, 255);\n }\n\n toHsl(precision = 2): HslColor {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const hr = round(h, precision);\n return { h: hr >= 360 ? 0 : hr, s: round(s, precision), l: round(l, precision), alpha };\n }\n\n toHslString(precision = 2): string {\n const { h, s, l, alpha } = this.toHsl(precision);\n return alpha < 1 ? `hsl(${h} ${s}% ${l}% / ${alpha})` : `hsl(${h} ${s}% ${l}%)`;\n }\n\n toOklab(precision = 4): OklabColor {\n const { l, a, b, alpha } = rgbToOklab(this._rgb);\n return { l: round(l, precision), a: round(a, precision), b: round(b, precision), alpha };\n }\n\n toOklabString(precision = 4): string {\n const { l, a, b, alpha } = this.toOklab(precision);\n return alpha < 1 ? `oklab(${l} ${a} ${b} / ${alpha})` : `oklab(${l} ${a} ${b})`;\n }\n\n toOklch(precision = 4): OklchColor {\n const { l, c, h, alpha } = rgbToOklch(this._rgb);\n return { l: round(l, precision), c: round(c, precision), h: round(h, precision), alpha };\n }\n\n toOklchString(precision = 4): string {\n const { l, c, h, alpha } = this.toOklch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `oklch(${l} ${c} ${H} / ${alpha})` : `oklch(${l} ${c} ${H})`;\n }\n\n brightness(): number {\n const { r, g, b } = this._rgb;\n return round((r * 299 + g * 587 + b * 114) / 255000, 2);\n }\n\n isDark(): boolean {\n return this.brightness() < 0.5;\n }\n\n isLight(): boolean {\n return this.brightness() >= 0.5;\n }\n\n alpha(): number;\n alpha(value: number): Colordx;\n alpha(value?: number): number | Colordx {\n if (value === undefined) return this._rgb.alpha;\n return Colordx._make({ ...this._rgb, alpha: round(clamp(value, 0, 1), 3) });\n }\n\n hue(): number;\n hue(value: number): Colordx;\n hue(value?: number): number | Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n if (value === undefined) {\n const hr = round(h, 2);\n return hr >= 360 ? 0 : hr;\n }\n return Colordx._make(hslToRgb({ h: value, s, l, alpha }));\n }\n\n lightness(): number;\n lightness(value: number): Colordx;\n lightness(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.l;\n return Colordx._make(oklchToRgb({ ...oklch, l: clamp(value, 0, 1) }));\n }\n\n chroma(): number;\n chroma(value: number): Colordx;\n chroma(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.c;\n return Colordx._make(oklchToRgb({ ...oklch, c: clamp(value, 0, 0.4) }));\n }\n\n lighten(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newL = options?.relative ? l * (1 + amount) : l + amount * 100;\n return Colordx._make(hslToRgb({ h, s, l: clamp(newL, 0, 100), alpha }));\n }\n\n darken(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.lighten(-amount, options);\n }\n\n saturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newS = options?.relative ? s * (1 + amount) : s + amount * 100;\n return Colordx._make(hslToRgb({ h, s: clamp(newS, 0, 100), l, alpha }));\n }\n\n desaturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.saturate(-amount, options);\n }\n\n grayscale(): Colordx {\n return this.desaturate(1);\n }\n\n invert(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n return Colordx._make({ r: 255 - r, g: 255 - g, b: 255 - b, alpha });\n }\n\n rotate(amount = 15): Colordx {\n return this.hue(this.hue() + amount);\n }\n\n isEqual(color: AnyColor): boolean {\n const other = new Colordx(color).toRgb();\n const self = this.toRgb();\n return self.r === other.r && self.g === other.g && self.b === other.b && self.alpha === other.alpha;\n }\n\n toString(): string {\n return this.toHex();\n }\n\n /**\n * Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].\n * Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.\n * Hue and lightness may shift noticeably for colors far outside sRGB.\n * Returns `this` when already in gamut.\n */\n clampSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n return Colordx._make({\n r: clamp(r, 0, 255),\n g: clamp(g, 0, 255),\n b: clamp(b, 0, 255),\n alpha,\n });\n }\n\n /**\n * Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm\n * (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.\n * Useful when hue stability matters — design tokens, palettes, color pickers.\n * Returns `this` when already in gamut.\n */\n mapSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n const [lRaw, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n // The gamma-encoded round-trip drifts L by ~1e-9 at boundaries; snap so that inputs with\n // exact L=0 or L=1 hit the same white/black shortcut the static gamut map uses.\n const l = lRaw > 1 - 1e-7 ? 1 : lRaw < 1e-7 ? 0 : lRaw;\n const mapped = toGamutSrgbRaw({ l, a, b: bv, alpha });\n if (mapped === null) return this;\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n }\n\n /**\n * Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.\n * Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.\n */\n static toGamutSrgb: (input: AnyColor) => Colordx;\n}\n\nexport type Plugin = (\n ColordxClass: typeof Colordx,\n parsers: ColorParser[],\n formatParsers: [ColorParser, ColorFormat][]\n) => void;\n\nexport const colordx = (input: AnyColor | Colordx): Colordx => new Colordx(input);\n\n/** Emit an 8-digit `#rrggbbaa` hex for any color input. Convenience over `colordx(c).toHex8()`. */\nexport const toHex8 = (input: AnyColor | Colordx): string => new Colordx(input).toHex8();\n\nexport const extend = (plugins: Plugin[]): void => {\n plugins.forEach((plugin) => plugin(Colordx, parsers, pluginFormatParsers));\n};\n\nexport const nearest = <T extends AnyColor>(color: AnyColor, candidates: T[]): T => {\n if (candidates.length === 0) throw new Error('nearest: candidates array must not be empty');\n const { l: l1, a: a1, b: b1 } = new Colordx(color).toOklab();\n let minDist = Infinity;\n let result = candidates[0] as T;\n for (const candidate of candidates) {\n const { l: l2, a: a2, b: b2 } = new Colordx(candidate).toOklab();\n const dist = (l2 - l1) ** 2 + (a2 - a1) ** 2 + (b2 - b1) ** 2;\n if (dist < minDist) {\n minDist = dist;\n result = candidate;\n }\n }\n return result;\n};\n\nexport const random = (): Colordx =>\n new Colordx({\n r: Math.round(Math.random() * 255),\n g: Math.round(Math.random() * 255),\n b: Math.round(Math.random() * 255),\n alpha: 1,\n });\n\nColordx.toGamutSrgb = (input: AnyColor): Colordx => {\n const mapped = toGamutSrgbRaw(input);\n if (mapped === null) return new Colordx(input);\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n};\n"]}
{"version":3,"sources":["../src/colorModels/hsl.ts","../src/colorModels/oklch.ts","../src/parse.ts","../src/colordx.ts"],"names":["clampHsl","hsl","normalizeHue","clamp","round","_hslBuf","rgbToHslRaw","r","g","b","alpha","rn","gn","bn","max","min","l","h","s","d","hDeg","_hueToRgb","p","q","t","hslToRgb","sn","ln","hue","parseHslObject","input","isObject","hasKeys","isAnyNumber","sanitize","HSL_RE","NUM_OR_NONE","NUM","parseHslString","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","oklchToOklab","c","rgbToOklch","rgb","ol","oa","ob","rgbToOklab","C","H","oklchToRgb","oklch","oklabToRgb","oklchToRgbUnclamped","oklabToRgbUnclamped","parseOklchObject","OKLCH_RE","parseOklchString","L","stringFormatParsers","parseHex","parseRgbString","parseOklabString","objectFormatParsers","parseRgbObject","parseOklabObject","builtinStringParsers","builtinObjectParsers","defaultParsers","parsers","pluginFormatParsers","parse","builtins","parser","result","i","getFormat","typed","format","_SENTINEL","Colordx","_Colordx","_direct","parsed","lr","lg","lb","rb","srgbFromLinear","gb","bb","options","ri","gi","bi","rgbToHex","rgbToHex8","precision","hr","a","value","amount","newL","newS","color","other","self","lRaw","bv","linearSrgbToOklab","srgbToLinear","mapped","toGamutSrgbRaw","mr","mg","mb","colordx","toHex8","extend","plugins","plugin","nearest","candidates","l1","a1","b1","minDist","candidate","l2","a2","b2","dist","random"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HslColor, RgbColor } from '../types.js';\n\nconst clampHsl = (hsl: HslColor): HslColor => ({\n h: normalizeHue(hsl.h),\n s: clamp(hsl.s, 0, 100),\n l: clamp(hsl.l, 0, 100),\n alpha: clamp(round(hsl.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHslRaw — callers must destructure immediately, never store the reference.\nconst _hslBuf: HslColor = { h: 0, s: 0, l: 0, alpha: 0 };\n\nexport const rgbToHslRaw = ({ r, g, b, alpha }: RgbColor): HslColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const l = (max + min) / 2;\n let h = 0,\n s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hslBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hslBuf.s = clamp(s * 100, 0, 100);\n _hslBuf.l = clamp(l * 100, 0, 100);\n _hslBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hslBuf;\n};\n\nexport const rgbToHsl = (rgb: RgbColor): HslColor => {\n const { h, s, l, alpha } = rgbToHslRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), l: round(l, 2), alpha };\n};\n\nconst _hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n};\n\nexport const hslToRgb = ({ h, s, l, alpha }: HslColor): RgbColor => {\n const sn = s / 100,\n ln = l / 100;\n const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;\n const p = 2 * ln - q;\n const hue = (((h % 360) + 360) % 360) / 360;\n return {\n r: _hueToRgb(p, q, hue + 1 / 3) * 255,\n g: _hueToRgb(p, q, hue) * 255,\n b: _hueToRgb(p, q, hue - 1 / 3) * 255,\n alpha,\n };\n};\n\nexport const parseHslObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'l'])) return null;\n const { h, s, l, alpha = 1 } = input as { h: unknown; s: unknown; l: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(l) || !isAnyNumber(alpha)) return null;\n return hslToRgb(clampHsl({ h: sanitize(h), s: sanitize(s), l: sanitize(l), alpha: sanitize(alpha) }));\n};\n\n// Legacy comma form requires `%` on s/l and disallows `none`. Modern space form\n// allows optional `%` and the CSS Color 4 `none` keyword on any channel.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSL_RE = new RegExp(\n `^hsla?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<l_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<l_s>${NUM_OR_NONE})(?<lp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHslString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSL_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null; // legacy syntax has no `none`\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const l = parseNum((g.l_c ?? g.l_s)!);\n const rawA = g.al_c ?? g.al_s;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hslToRgb(clampHsl({ h, s, l, alpha }));\n};\n","import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n sanitize,\n} from '../helpers.js';\nimport type { OklabColor, OklchColor, RgbColor } from '../types.js';\nimport { oklabToRgb, oklabToRgbUnclamped, rgbToOklab } from './oklab.js';\n\nconst oklchToOklab = ({ l, c, h, alpha }: OklchColor): OklabColor => ({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n});\n\nexport const rgbToOklch = (rgb: RgbColor): OklchColor => {\n const { l: ol, a: oa, b: ob, alpha } = rgbToOklab(rgb);\n const C = Math.sqrt(oa * oa + ob * ob);\n const H = (Math.atan2(ob, oa) * 180) / Math.PI;\n // Achromatic threshold on OKLCH scale (0–~0.4): proportionally equivalent to LCH's 0.0015 threshold.\n return { l: ol, c: C, h: C < 0.000004 ? 0 : normalizeHue(H), alpha };\n};\n\nexport const oklchToRgb = (oklch: OklchColor): RgbColor => oklabToRgb(oklchToOklab(oklch));\nconst oklchToRgbUnclamped = (oklch: OklchColor): RgbColor => oklabToRgbUnclamped(oklchToOklab(oklch));\n\nexport const parseOklchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lch' are CIE LCH, not OKLCH — let parseLchObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lch') return null;\n if (!hasKeys(input, ['l', 'c', 'h'])) return null;\n const { l, c, h, alpha = 1 } = input as { l: unknown; c: unknown; h: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(c) || !isAnyNumber(h) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLCH L is always [0, 1]; reject CIE LCH values passed without colorSpace branding\n return oklchToRgbUnclamped({\n l: sanitize(l),\n c: Math.max(0, sanitize(c)),\n h: normalizeHue(sanitize(h)),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLCH_RE = new RegExp(\n `^oklch\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<c>${NUM_OR_NONE})(?<cp>%?)` +\n `\\\\s+(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const C = Math.max(0, g.cp ? parseNum(g.c!) * 0.004 : parseNum(g.c!)); // 100% = 0.4\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const H = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklchToRgbUnclamped({\n l: L,\n c: C,\n h: normalizeHue(H),\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { parseHex } from './colorModels/hex.js';\nimport { parseHslObject, parseHslString } from './colorModels/hsl.js';\nimport { parseOklabObject, parseOklabString } from './colorModels/oklab.js';\nimport { parseOklchObject, parseOklchString } from './colorModels/oklch.js';\nimport { parseRgbObject, parseRgbString } from './colorModels/rgb.js';\nimport type { AnyColor, ColorFormat, ColorParser, RgbColor } from './types.js';\n\nconst stringFormatParsers: [ColorParser, ColorFormat][] = [\n [parseHex, 'hex'],\n [parseRgbString, 'rgb'],\n [parseHslString, 'hsl'],\n [parseOklchString, 'oklch'],\n [parseOklabString, 'oklab'],\n];\n\nconst objectFormatParsers: [ColorParser, ColorFormat][] = [\n [parseRgbObject, 'rgb'],\n [parseHslObject, 'hsl'],\n [parseOklabObject, 'oklab'],\n [parseOklchObject, 'oklch'],\n];\n\nconst builtinStringParsers: ColorParser[] = stringFormatParsers.map(([p]) => p);\nconst builtinObjectParsers: ColorParser[] = objectFormatParsers.map(([p]) => p);\n\nconst defaultParsers: ColorParser[] = [...builtinStringParsers, ...builtinObjectParsers];\nexport const parsers: ColorParser[] = [...defaultParsers];\nexport const pluginFormatParsers: [ColorParser, ColorFormat][] = [];\n\nexport const parse = (input: AnyColor): RgbColor | null => {\n if (input === 'transparent') return { r: 0, g: 0, b: 0, alpha: 0 };\n const builtins = typeof input === 'string' ? builtinStringParsers : builtinObjectParsers;\n for (const parser of builtins) {\n const result = parser(input);\n if (result) return result;\n }\n for (let i = defaultParsers.length; i < parsers.length; i++) {\n const result = parsers[i]!(input);\n if (result) return result;\n }\n return null;\n};\n\n/**\n * Detects the input format (`'hex'`, `'rgb'`, `'hsl'`, `'oklch'`, etc.).\n * Returns `undefined` for unrecognised input. Plugin-registered formats are detected too.\n */\nexport const getFormat = (input: AnyColor): ColorFormat | undefined => {\n if (input === 'transparent') return 'name';\n const typed = typeof input === 'string' ? stringFormatParsers : objectFormatParsers;\n for (const [parser, format] of typed) {\n if (parser(input)) return format;\n }\n for (const [parser, format] of pluginFormatParsers) {\n if (parser(input)) return format;\n }\n return undefined;\n};\n","import { rgbToHex, rgbToHex8 } from './colorModels/hex.js';\nimport { hslToRgb, rgbToHslRaw } from './colorModels/hsl.js';\nimport { linearSrgbToOklab, rgbToOklab } from './colorModels/oklab.js';\nimport { oklchToRgb, rgbToOklch } from './colorModels/oklch.js';\nimport { toGamutSrgbRaw } from './gamut.js';\nimport { clamp, round } from './helpers.js';\nimport { parse, parsers, pluginFormatParsers } from './parse.js';\nimport { srgbFromLinear, srgbToLinear } from './transfer.js';\nimport type { AnyColor, ColorFormat, ColorParser, HslColor, OklabColor, OklchColor, RgbColor } from './types.js';\n\nconst _SENTINEL: unique symbol = Symbol();\n\n/**\n * Color value with parse, format, and manipulation methods.\n * Construct via the `colordx()` helper or `new Colordx(input)`. Instances are immutable —\n * mutators return a new `Colordx`.\n */\nexport class Colordx {\n private readonly _rgb: RgbColor;\n private readonly _valid: boolean;\n\n constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor) {\n if (input === _SENTINEL) {\n this._valid = true;\n this._rgb = _direct!;\n } else if (input instanceof Colordx) {\n this._valid = input._valid;\n this._rgb = input._rgb;\n return;\n } else {\n const parsed = parse(input);\n this._valid = parsed !== null;\n this._rgb = parsed ?? { r: 0, g: 0, b: 0, alpha: 1 };\n }\n // Single chokepoint for alpha precision: parsers and _make() callers may hand us\n // raw floats (e.g. 1/255, 0.1+0.2). Snapping here keeps every formatter consistent.\n this._rgb.alpha = clamp(round(this._rgb.alpha, 3), 0, 1);\n }\n\n private static _make(rgb: RgbColor): Colordx {\n return new Colordx(_SENTINEL, rgb);\n }\n\n /**\n * Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.\n * Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a\n * color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored\n * _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut\n * channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.\n *\n * Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels\n * directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP\n * asymmetries on gamut-boundary colors.\n *\n * A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one\n * channel exactly on 0 or 1 while the others sit where the input's hue landed, so an\n * extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels\n * (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all\n * three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report\n * phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;\n * the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab\n * see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut\n * (P3 / Rec.2020 targets) and pass through untouched.\n */\n static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx {\n const rb = srgbFromLinear(lr) * 255;\n const gb = srgbFromLinear(lg) * 255;\n const bb = srgbFromLinear(lb) * 255;\n return Colordx._make({\n r: rb >= 0 && rb < 0.5 ? 0 : rb > 254.5 && rb <= 255 ? 255 : rb,\n g: gb >= 0 && gb < 0.5 ? 0 : gb > 254.5 && gb <= 255 ? 255 : gb,\n b: bb >= 0 && bb < 0.5 ? 0 : bb > 254.5 && bb <= 255 ? 255 : bb,\n alpha,\n });\n }\n\n /** True when the input parsed as a recognised color. */\n isValid(): boolean {\n return this._valid;\n }\n\n /** Returns sRGB channels rounded to integers in [0, 255], plus alpha in [0, 1]. */\n toRgb(): RgbColor {\n const { r, g, b, alpha } = this._rgb;\n return { r: clamp(round(r), 0, 255), g: clamp(round(g), 0, 255), b: clamp(round(b), 0, 255), alpha };\n }\n\n /** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */\n _rawRgb(): RgbColor {\n return this._rgb;\n }\n\n /**\n * Formats as a CSS `rgb()` / `rgba()` string.\n * Default is CSS Color 4 modern syntax — `rgb(255 0 0 / 0.5)`.\n * Pass `{ legacy: true }` for CSS Color 3 comma syntax (switches to `rgba()` when alpha < 1).\n */\n toRgbString(options?: { legacy?: boolean }): string {\n const { r, g, b, alpha } = this._rgb;\n const ri = clamp(round(r), 0, 255),\n gi = clamp(round(g), 0, 255),\n bi = clamp(round(b), 0, 255);\n if (options?.legacy) {\n return alpha < 1 ? `rgba(${ri}, ${gi}, ${bi}, ${alpha})` : `rgb(${ri}, ${gi}, ${bi})`;\n }\n return alpha < 1 ? `rgb(${ri} ${gi} ${bi} / ${alpha})` : `rgb(${ri} ${gi} ${bi})`;\n }\n\n /** Returns `#rrggbb` (or `#rrggbbaa` when alpha < 1). */\n toHex(): string {\n return rgbToHex(this._rgb);\n }\n\n /** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */\n toHex8(): string {\n return rgbToHex8(this._rgb);\n }\n\n /** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */\n toNumber(): number {\n const { r, g, b } = this._rgb;\n return (clamp(round(r), 0, 255) << 16) | (clamp(round(g), 0, 255) << 8) | clamp(round(b), 0, 255);\n }\n\n /** Returns HSL channels: h in [0, 360), s/l in [0, 100], rounded to `precision` decimals. */\n toHsl(precision = 2): HslColor {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const hr = round(h, precision);\n return { h: hr >= 360 ? 0 : hr, s: round(s, precision), l: round(l, precision), alpha };\n }\n\n /** Formats as a CSS `hsl()` string. */\n toHslString(precision = 2): string {\n const { h, s, l, alpha } = this.toHsl(precision);\n return alpha < 1 ? `hsl(${h} ${s}% ${l}% / ${alpha})` : `hsl(${h} ${s}% ${l}%)`;\n }\n\n /** Returns OKLab channels: L in [0, 1], a/b roughly in [-0.4, 0.4]. */\n toOklab(precision = 5): OklabColor {\n const { l, a, b, alpha } = rgbToOklab(this._rgb);\n return { l: round(l, precision), a: round(a, precision), b: round(b, precision), alpha };\n }\n\n /** Formats as a CSS `oklab()` string. */\n toOklabString(precision = 5): string {\n const { l, a, b, alpha } = this.toOklab(precision);\n return alpha < 1 ? `oklab(${l} ${a} ${b} / ${alpha})` : `oklab(${l} ${a} ${b})`;\n }\n\n /** Returns OKLCh channels: L in [0, 1], C in [0, ~0.4], H in degrees. */\n toOklch(precision = 5): OklchColor {\n const { l, c, h, alpha } = rgbToOklch(this._rgb);\n return { l: round(l, precision), c: round(c, precision), h: round(h, precision), alpha };\n }\n\n /** Formats as a CSS `oklch()` string. Hue is `none` when chroma is 0. */\n toOklchString(precision = 5): string {\n const { l, c, h, alpha } = this.toOklch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `oklch(${l} ${c} ${H} / ${alpha})` : `oklch(${l} ${c} ${H})`;\n }\n\n /** Perceived brightness in [0, 1] using the ITU-R BT.601 weights. */\n brightness(): number {\n const { r, g, b } = this._rgb;\n return round((r * 299 + g * 587 + b * 114) / 255000, 2);\n }\n\n /** True when `brightness()` is below 0.5. */\n isDark(): boolean {\n return this.brightness() < 0.5;\n }\n\n /** True when `brightness()` is at or above 0.5. */\n isLight(): boolean {\n return this.brightness() >= 0.5;\n }\n\n /** Get or set the alpha channel (clamped to [0, 1]). Setter returns a new `Colordx`. */\n alpha(): number;\n alpha(value: number): Colordx;\n alpha(value?: number): number | Colordx {\n if (value === undefined) return this._rgb.alpha;\n return Colordx._make({ ...this._rgb, alpha: round(clamp(value, 0, 1), 3) });\n }\n\n /** Get or set the HSL hue in degrees. Setter returns a new `Colordx`. */\n hue(): number;\n hue(value: number): Colordx;\n hue(value?: number): number | Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n if (value === undefined) {\n const hr = round(h, 2);\n return hr >= 360 ? 0 : hr;\n }\n return Colordx._make(hslToRgb({ h: value, s, l, alpha }));\n }\n\n /** Get or set the OKLCh lightness in [0, 1]. Setter returns a new `Colordx`. */\n lightness(): number;\n lightness(value: number): Colordx;\n lightness(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.l;\n return Colordx._make(oklchToRgb({ ...oklch, l: clamp(value, 0, 1) }));\n }\n\n /** Get or set the OKLCh chroma in [0, 0.4]. Setter returns a new `Colordx`. */\n chroma(): number;\n chroma(value: number): Colordx;\n chroma(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.c;\n return Colordx._make(oklchToRgb({ ...oklch, c: clamp(value, 0, 0.4) }));\n }\n\n /**\n * Lightens by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to L.\n * Pass `{ relative: true }` to multiply L by `1 + amount` instead.\n */\n lighten(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newL = options?.relative ? l * (1 + amount) : l + amount * 100;\n return Colordx._make(hslToRgb({ h, s, l: clamp(newL, 0, 100), alpha }));\n }\n\n /** Inverse of `lighten`. */\n darken(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.lighten(-amount, options);\n }\n\n /**\n * Saturates by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to S.\n * Pass `{ relative: true }` to multiply S by `1 + amount` instead.\n */\n saturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newS = options?.relative ? s * (1 + amount) : s + amount * 100;\n return Colordx._make(hslToRgb({ h, s: clamp(newS, 0, 100), l, alpha }));\n }\n\n /** Inverse of `saturate`. */\n desaturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.saturate(-amount, options);\n }\n\n /** Drops saturation to zero. */\n grayscale(): Colordx {\n return this.desaturate(1);\n }\n\n /** Inverts each RGB channel (255 − channel). */\n invert(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n return Colordx._make({ r: 255 - r, g: 255 - g, b: 255 - b, alpha });\n }\n\n /** Shifts the HSL hue by `amount` degrees (default 15). */\n rotate(amount = 15): Colordx {\n return this.hue(this.hue() + amount);\n }\n\n /** True when both colors round to the same RGBA tuple. */\n isEqual(color: AnyColor): boolean {\n const other = new Colordx(color).toRgb();\n const self = this.toRgb();\n return self.r === other.r && self.g === other.g && self.b === other.b && self.alpha === other.alpha;\n }\n\n /** Returns the hex form (alias for `toHex()`). */\n toString(): string {\n return this.toHex();\n }\n\n /**\n * Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].\n * Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.\n * Hue and lightness may shift noticeably for colors far outside sRGB.\n * Returns `this` when already in gamut.\n */\n clampSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n return Colordx._make({\n r: clamp(r, 0, 255),\n g: clamp(g, 0, 255),\n b: clamp(b, 0, 255),\n alpha,\n });\n }\n\n /**\n * Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm\n * (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.\n * Useful when hue stability matters — design tokens, palettes, color pickers.\n * Returns `this` when already in gamut.\n */\n mapSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n const [lRaw, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n // The gamma-encoded round-trip drifts L by ~1e-9 at boundaries; snap so that inputs with\n // exact L=0 or L=1 hit the same white/black shortcut the static gamut map uses.\n const l = lRaw > 1 - 1e-7 ? 1 : lRaw < 1e-7 ? 0 : lRaw;\n const mapped = toGamutSrgbRaw({ l, a, b: bv, alpha });\n if (mapped === null) return this;\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n }\n\n /**\n * Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.\n * Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.\n */\n static toGamutSrgb: (input: AnyColor) => Colordx;\n}\n\n/**\n * Plugin signature. Receives the `Colordx` class plus the parser arrays so a plugin\n * can register conversions (by adding instance methods) and parsers (by pushing onto the arrays).\n */\nexport type Plugin = (\n ColordxClass: typeof Colordx,\n parsers: ColorParser[],\n formatParsers: [ColorParser, ColorFormat][]\n) => void;\n\n/** Constructs a `Colordx` from any supported color input. Existing instances pass through. */\nexport const colordx = (input: AnyColor | Colordx): Colordx => new Colordx(input);\n\n/** Emits an 8-digit `#rrggbbaa` hex for any color input. Shortcut for `colordx(c).toHex8()`. */\nexport const toHex8 = (input: AnyColor | Colordx): string => new Colordx(input).toHex8();\n\n/** Registers plugins. Each plugin is called once with the `Colordx` class and parser arrays. */\nexport const extend = (plugins: Plugin[]): void => {\n plugins.forEach((plugin) => plugin(Colordx, parsers, pluginFormatParsers));\n};\n\n/**\n * Picks the candidate closest to `color` by Euclidean distance in OKLab.\n * Throws when `candidates` is empty.\n */\nexport const nearest = <T extends AnyColor>(color: AnyColor, candidates: T[]): T => {\n if (candidates.length === 0) throw new Error('nearest: candidates array must not be empty');\n const { l: l1, a: a1, b: b1 } = new Colordx(color).toOklab();\n let minDist = Infinity;\n let result = candidates[0] as T;\n for (const candidate of candidates) {\n const { l: l2, a: a2, b: b2 } = new Colordx(candidate).toOklab();\n const dist = (l2 - l1) ** 2 + (a2 - a1) ** 2 + (b2 - b1) ** 2;\n if (dist < minDist) {\n minDist = dist;\n result = candidate;\n }\n }\n return result;\n};\n\n/** Returns a random opaque sRGB color. */\nexport const random = (): Colordx =>\n new Colordx({\n r: Math.round(Math.random() * 255),\n g: Math.round(Math.random() * 255),\n b: Math.round(Math.random() * 255),\n alpha: 1,\n });\n\nColordx.toGamutSrgb = (input: AnyColor): Colordx => {\n const mapped = toGamutSrgbRaw(input);\n if (mapped === null) return new Colordx(input);\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n};\n"]}

@@ -1,3 +0,3 @@

import { A as AnyColor, C as ColorFormat } from './colordx-FkeB37IC.cjs';
export { a as CmykColor, b as CmykColorInput, c as ColorParser, d as Colordx, H as HslColor, e as HslColorInput, f as HsvColor, g as HsvColorInput, h as HwbColor, i as HwbColorInput, L as LabColor, j as LabColorInput, k as LchColor, l as LchColorInput, O as OklabColor, m as OklabColorInput, n as OklchColor, o as OklchColorInput, P as P3Color, p as P3ColorInput, q as Plugin, R as Rec2020Color, r as Rec2020ColorInput, s as RgbColor, t as RgbColorInput, X as XyzColor, u as XyzColorInput, v as colordx, w as extend, x as nearest, y as random, z as toHex8 } from './colordx-FkeB37IC.cjs';
import { A as AnyColor, C as ColorFormat } from './colordx-dFaFF5rN.cjs';
export { a as CmykColor, b as CmykColorInput, c as ColorParser, d as Colordx, H as HslColor, e as HslColorInput, f as HsvColor, g as HsvColorInput, h as HwbColor, i as HwbColorInput, L as LabColor, j as LabColorInput, k as LchColor, l as LchColorInput, O as OklabColor, m as OklabColorInput, n as OklchColor, o as OklchColorInput, P as P3Color, p as P3ColorInput, q as Plugin, R as Rec2020Color, r as Rec2020ColorInput, s as RgbColor, t as RgbColorInput, X as XyzColor, u as XyzColorInput, v as colordx, w as extend, x as nearest, y as random, z as toHex8 } from './colordx-dFaFF5rN.cjs';

@@ -7,8 +7,12 @@ /** Convert a number in [0, 255] to a 2-char lowercase hex byte. Clamps and rounds out-of-range inputs. */

/**
* Detects the input format (`'hex'`, `'rgb'`, `'hsl'`, `'oklch'`, etc.).
* Returns `undefined` for unrecognised input. Plugin-registered formats are detected too.
*/
declare const getFormat: (input: AnyColor) => ColorFormat | undefined;
/**
* Returns true if the color is within the sRGB gamut.
* Always true for hex, rgb, hsl, hsv, and hwb inputs.
* For oklch/oklab inputs, checks whether the computed linear sRGB channels are in [0, 1].
* True when the color falls inside the sRGB gamut.
* sRGB-bounded inputs (hex, rgb, hsl, hsv, hwb) are always in gamut.
* Wide-gamut inputs (oklch, oklab, lab, lch, p3, rec2020, xyz) are checked against [0, 1] in linear sRGB.
*/

@@ -18,94 +22,81 @@ declare const inGamutSrgb: (input: AnyColor) => boolean;

/**
* Convert OKLCH to unclamped linear sRGB channels without object allocation.
* This is the shared expensive step (OKLCH → OKLab → linear sRGB via 3× cbrt + matrix).
* Use this when you need multiple color spaces from the same color — compute once,
* then pass to linearToP3Channels / linearToRec2020Channels (from their plugins) to avoid duplicate work.
*
* In-gamut sRGB colors have all channels in [0, 1]. Channels outside this range
* indicate an out-of-gamut color — use as a free gamut check.
* OKLCh → unclamped linear sRGB. Returns `[r, g, b]`.
* Channels in [0, 1] mean the color is in-gamut sRGB; outside means out-of-gamut.
*/
declare const oklchToLinear: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of oklchToLinear — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `oklchToLinear` — writes `[lr, lg, lb]` into `out`. */
declare const oklchToLinearInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* Convert OKLCH to gamma-encoded sRGB channels without object allocation.
* Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may
* exceed this range — callers are responsible for clamping before byte encoding.
* OKLCh → gamma-encoded sRGB (0–1). Returns `[r, g, b]`.
* Out-of-gamut channels may exceed [0, 1]; clamp before byte encoding.
*/
declare const oklchToRgbChannels: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of oklchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */
/** Zero-allocation sibling of `oklchToRgbChannels` — writes `[r, g, b]` into `out`. */
declare const oklchToRgbChannelsInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* Convert OKLCH to both linear and gamma-encoded sRGB channels in a single pass.
* Avoids recomputing the expensive OKLCH → OKLab → linear step when you need both.
*
* Linear channels are useful for gamut checks (all in [0,1] = in sRGB gamut)
* and as input to P3/Rec2020 conversion matrices.
* Gamma channels are ready for display on an sRGB canvas (still need clamping for out-of-gamut).
*
* Returns [[lr, lg, lb], [sr, sg, sb]] — both in [0, 1] for in-gamut colors.
* OKLCh → both linear and gamma-encoded sRGB in one pass. Returns `[[lr, lg, lb], [sr, sg, sb]]`.
* Use when you need both — saves a duplicate OKLCh → OKLab → linear step.
*/
declare const oklchToLinearAndSrgb: (l: number, c: number, h: number) => [[number, number, number], [number, number, number]];
/**
* Zero-allocation sibling of oklchToLinearAndSrgb — writes linear channels into `linOut`
* and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.
* Zero-allocation sibling of `oklchToLinearAndSrgb`.
* Writes linear channels into `linOut`, gamma-encoded into `srgbOut`. Buffers must be distinct.
*/
declare const oklchToLinearAndSrgbInto: (linOut: Float64Array | number[], srgbOut: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* Gamma-encoded sRGB (0–1) → linear sRGB (0–1). Vector sibling of `srgbToLinear`.
* For byte-scale RGB, pass `r/255, g/255, b/255`. Output range tracks input:
* channels outside [0, 1] are preserved with the CSS Color 4 extended transfer curve.
* Gamma-encoded sRGB (0–1) → linear sRGB. Returns `[lr, lg, lb]`.
* For byte-scale RGB, pass `r/255, g/255, b/255`.
*/
declare const rgbToLinear: (r: number, g: number, b: number) => [number, number, number];
/** Zero-allocation sibling of rgbToLinear — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `rgbToLinear` — writes `[lr, lg, lb]` into `out`. */
declare const rgbToLinearInto: (out: Float64Array | number[], r: number, g: number, b: number) => void;
/**
* CIE Lab (D50) → unclamped linear sRGB (0–1). Goes via XYZ D50 with Bradford adaptation.
* L in [0, 100]; a/b typically in [-128, 128]. Out-of-sRGB-gamut colors return channels
* outside [0, 1] — use as a free gamut check or pass to `srgbFromLinear` for display.
* CIE Lab (D50) → unclamped linear sRGB. Returns `[lr, lg, lb]`.
* L in [0, 100]; a/b roughly in [-128, 128]. Out-of-gamut channels fall outside [0, 1].
*/
declare const labToLinearSrgb: (l: number, a: number, b: number) => [number, number, number];
/** Zero-allocation sibling of labToLinearSrgb — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `labToLinearSrgb` — writes `[lr, lg, lb]` into `out`. */
declare const labToLinearSrgbInto: (out: Float64Array | number[], l: number, a: number, b: number) => void;
/**
* CIE LCH (D50) → unclamped linear sRGB (0–1). Polar-to-rectangular to Lab, then Lab → linear sRGB.
* L in [0, 100]; C is the chroma (0–~150); H in degrees. Out-of-gamut colors return channels
* outside [0, 1] — useful in LCH render hot paths where you want linear pixels and a gamut check in one step.
* CIE LCh (D50) → unclamped linear sRGB. Returns `[lr, lg, lb]`.
* L in [0, 100]; C in [0, ~150]; H in degrees. Out-of-gamut channels fall outside [0, 1].
*/
declare const lchToLinearSrgb: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of lchToLinearSrgb — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `lchToLinearSrgb` — writes `[lr, lg, lb]` into `out`. */
declare const lchToLinearSrgbInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* CIE Lab (D50) → gamma-encoded sRGB (0–1). Convenience wrapper over `labToLinearSrgb` + `srgbFromLinear`.
* In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range — clamp before byte encoding.
* CIE Lab (D50) → gamma-encoded sRGB (0–1). Returns `[r, g, b]`.
* Out-of-gamut channels may exceed [0, 1]; clamp before byte encoding.
*/
declare const labToRgbChannels: (l: number, a: number, b: number) => [number, number, number];
/** Zero-allocation sibling of labToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */
/** Zero-allocation sibling of `labToRgbChannels` — writes `[r, g, b]` into `out`. */
declare const labToRgbChannelsInto: (out: Float64Array | number[], l: number, a: number, b: number) => void;
/**
* CIE LCH (D50) → gamma-encoded sRGB (0–1). Polar-to-rectangular to Lab, then Lab → gamma sRGB.
* In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range.
* CIE LCh (D50) → gamma-encoded sRGB (0–1). Returns `[r, g, b]`.
* Out-of-gamut channels may exceed [0, 1]; clamp before byte encoding.
*/
declare const lchToRgbChannels: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of lchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */
/** Zero-allocation sibling of `lchToRgbChannels` — writes `[r, g, b]` into `out`. */
declare const lchToRgbChannelsInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* CIE Lab (D50) → both linear and gamma-encoded sRGB in a single pass.
* Avoids recomputing Lab → XYZ D50 → linear sRGB when you need both (e.g. gamut check + pixel).
* Returns [[lr, lg, lb], [sr, sg, sb]].
* CIE Lab (D50) → both linear and gamma-encoded sRGB in one pass.
* Returns `[[lr, lg, lb], [sr, sg, sb]]`.
*/
declare const labToLinearAndSrgb: (l: number, a: number, b: number) => [[number, number, number], [number, number, number]];
/**
* Zero-allocation sibling of labToLinearAndSrgb — writes linear channels into `linOut`
* and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.
* Zero-allocation sibling of `labToLinearAndSrgb`.
* Writes linear channels into `linOut`, gamma-encoded into `srgbOut`. Buffers must be distinct.
*/
declare const labToLinearAndSrgbInto: (linOut: Float64Array | number[], srgbOut: Float64Array | number[], l: number, a: number, b: number) => void;
/**
* CIE LCH (D50) → both linear and gamma-encoded sRGB in a single pass.
* Polar-to-rectangular to Lab, then Lab → linear + gamma sRGB. Returns [[lr, lg, lb], [sr, sg, sb]].
* CIE LCh (D50) → both linear and gamma-encoded sRGB in one pass.
* Returns `[[lr, lg, lb], [sr, sg, sb]]`.
*/
declare const lchToLinearAndSrgb: (l: number, c: number, h: number) => [[number, number, number], [number, number, number]];
/** Zero-allocation sibling of lchToLinearAndSrgb — same buffer rules as labToLinearAndSrgbInto. */
/**
* Zero-allocation sibling of `lchToLinearAndSrgb`.
* Writes linear channels into `linOut`, gamma-encoded into `srgbOut`. Buffers must be distinct.
*/
declare const lchToLinearAndSrgbInto: (linOut: Float64Array | number[], srgbOut: Float64Array | number[], l: number, c: number, h: number) => void;
export { AnyColor, ColorFormat, getFormat, inGamutSrgb, labToLinearAndSrgb, labToLinearAndSrgbInto, labToLinearSrgb, labToLinearSrgbInto, labToRgbChannels, labToRgbChannelsInto, lchToLinearAndSrgb, lchToLinearAndSrgbInto, lchToLinearSrgb, lchToLinearSrgbInto, lchToRgbChannels, lchToRgbChannelsInto, oklchToLinear, oklchToLinearAndSrgb, oklchToLinearAndSrgbInto, oklchToLinearInto, oklchToRgbChannels, oklchToRgbChannelsInto, rgbToLinear, rgbToLinearInto, toHexByte };

@@ -1,3 +0,3 @@

import { A as AnyColor, C as ColorFormat } from './colordx-FkeB37IC.js';
export { a as CmykColor, b as CmykColorInput, c as ColorParser, d as Colordx, H as HslColor, e as HslColorInput, f as HsvColor, g as HsvColorInput, h as HwbColor, i as HwbColorInput, L as LabColor, j as LabColorInput, k as LchColor, l as LchColorInput, O as OklabColor, m as OklabColorInput, n as OklchColor, o as OklchColorInput, P as P3Color, p as P3ColorInput, q as Plugin, R as Rec2020Color, r as Rec2020ColorInput, s as RgbColor, t as RgbColorInput, X as XyzColor, u as XyzColorInput, v as colordx, w as extend, x as nearest, y as random, z as toHex8 } from './colordx-FkeB37IC.js';
import { A as AnyColor, C as ColorFormat } from './colordx-dFaFF5rN.js';
export { a as CmykColor, b as CmykColorInput, c as ColorParser, d as Colordx, H as HslColor, e as HslColorInput, f as HsvColor, g as HsvColorInput, h as HwbColor, i as HwbColorInput, L as LabColor, j as LabColorInput, k as LchColor, l as LchColorInput, O as OklabColor, m as OklabColorInput, n as OklchColor, o as OklchColorInput, P as P3Color, p as P3ColorInput, q as Plugin, R as Rec2020Color, r as Rec2020ColorInput, s as RgbColor, t as RgbColorInput, X as XyzColor, u as XyzColorInput, v as colordx, w as extend, x as nearest, y as random, z as toHex8 } from './colordx-dFaFF5rN.js';

@@ -7,8 +7,12 @@ /** Convert a number in [0, 255] to a 2-char lowercase hex byte. Clamps and rounds out-of-range inputs. */

/**
* Detects the input format (`'hex'`, `'rgb'`, `'hsl'`, `'oklch'`, etc.).
* Returns `undefined` for unrecognised input. Plugin-registered formats are detected too.
*/
declare const getFormat: (input: AnyColor) => ColorFormat | undefined;
/**
* Returns true if the color is within the sRGB gamut.
* Always true for hex, rgb, hsl, hsv, and hwb inputs.
* For oklch/oklab inputs, checks whether the computed linear sRGB channels are in [0, 1].
* True when the color falls inside the sRGB gamut.
* sRGB-bounded inputs (hex, rgb, hsl, hsv, hwb) are always in gamut.
* Wide-gamut inputs (oklch, oklab, lab, lch, p3, rec2020, xyz) are checked against [0, 1] in linear sRGB.
*/

@@ -18,94 +22,81 @@ declare const inGamutSrgb: (input: AnyColor) => boolean;

/**
* Convert OKLCH to unclamped linear sRGB channels without object allocation.
* This is the shared expensive step (OKLCH → OKLab → linear sRGB via 3× cbrt + matrix).
* Use this when you need multiple color spaces from the same color — compute once,
* then pass to linearToP3Channels / linearToRec2020Channels (from their plugins) to avoid duplicate work.
*
* In-gamut sRGB colors have all channels in [0, 1]. Channels outside this range
* indicate an out-of-gamut color — use as a free gamut check.
* OKLCh → unclamped linear sRGB. Returns `[r, g, b]`.
* Channels in [0, 1] mean the color is in-gamut sRGB; outside means out-of-gamut.
*/
declare const oklchToLinear: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of oklchToLinear — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `oklchToLinear` — writes `[lr, lg, lb]` into `out`. */
declare const oklchToLinearInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* Convert OKLCH to gamma-encoded sRGB channels without object allocation.
* Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may
* exceed this range — callers are responsible for clamping before byte encoding.
* OKLCh → gamma-encoded sRGB (0–1). Returns `[r, g, b]`.
* Out-of-gamut channels may exceed [0, 1]; clamp before byte encoding.
*/
declare const oklchToRgbChannels: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of oklchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */
/** Zero-allocation sibling of `oklchToRgbChannels` — writes `[r, g, b]` into `out`. */
declare const oklchToRgbChannelsInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* Convert OKLCH to both linear and gamma-encoded sRGB channels in a single pass.
* Avoids recomputing the expensive OKLCH → OKLab → linear step when you need both.
*
* Linear channels are useful for gamut checks (all in [0,1] = in sRGB gamut)
* and as input to P3/Rec2020 conversion matrices.
* Gamma channels are ready for display on an sRGB canvas (still need clamping for out-of-gamut).
*
* Returns [[lr, lg, lb], [sr, sg, sb]] — both in [0, 1] for in-gamut colors.
* OKLCh → both linear and gamma-encoded sRGB in one pass. Returns `[[lr, lg, lb], [sr, sg, sb]]`.
* Use when you need both — saves a duplicate OKLCh → OKLab → linear step.
*/
declare const oklchToLinearAndSrgb: (l: number, c: number, h: number) => [[number, number, number], [number, number, number]];
/**
* Zero-allocation sibling of oklchToLinearAndSrgb — writes linear channels into `linOut`
* and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.
* Zero-allocation sibling of `oklchToLinearAndSrgb`.
* Writes linear channels into `linOut`, gamma-encoded into `srgbOut`. Buffers must be distinct.
*/
declare const oklchToLinearAndSrgbInto: (linOut: Float64Array | number[], srgbOut: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* Gamma-encoded sRGB (0–1) → linear sRGB (0–1). Vector sibling of `srgbToLinear`.
* For byte-scale RGB, pass `r/255, g/255, b/255`. Output range tracks input:
* channels outside [0, 1] are preserved with the CSS Color 4 extended transfer curve.
* Gamma-encoded sRGB (0–1) → linear sRGB. Returns `[lr, lg, lb]`.
* For byte-scale RGB, pass `r/255, g/255, b/255`.
*/
declare const rgbToLinear: (r: number, g: number, b: number) => [number, number, number];
/** Zero-allocation sibling of rgbToLinear — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `rgbToLinear` — writes `[lr, lg, lb]` into `out`. */
declare const rgbToLinearInto: (out: Float64Array | number[], r: number, g: number, b: number) => void;
/**
* CIE Lab (D50) → unclamped linear sRGB (0–1). Goes via XYZ D50 with Bradford adaptation.
* L in [0, 100]; a/b typically in [-128, 128]. Out-of-sRGB-gamut colors return channels
* outside [0, 1] — use as a free gamut check or pass to `srgbFromLinear` for display.
* CIE Lab (D50) → unclamped linear sRGB. Returns `[lr, lg, lb]`.
* L in [0, 100]; a/b roughly in [-128, 128]. Out-of-gamut channels fall outside [0, 1].
*/
declare const labToLinearSrgb: (l: number, a: number, b: number) => [number, number, number];
/** Zero-allocation sibling of labToLinearSrgb — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `labToLinearSrgb` — writes `[lr, lg, lb]` into `out`. */
declare const labToLinearSrgbInto: (out: Float64Array | number[], l: number, a: number, b: number) => void;
/**
* CIE LCH (D50) → unclamped linear sRGB (0–1). Polar-to-rectangular to Lab, then Lab → linear sRGB.
* L in [0, 100]; C is the chroma (0–~150); H in degrees. Out-of-gamut colors return channels
* outside [0, 1] — useful in LCH render hot paths where you want linear pixels and a gamut check in one step.
* CIE LCh (D50) → unclamped linear sRGB. Returns `[lr, lg, lb]`.
* L in [0, 100]; C in [0, ~150]; H in degrees. Out-of-gamut channels fall outside [0, 1].
*/
declare const lchToLinearSrgb: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of lchToLinearSrgb — writes [lr, lg, lb] into `out`. */
/** Zero-allocation sibling of `lchToLinearSrgb` — writes `[lr, lg, lb]` into `out`. */
declare const lchToLinearSrgbInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* CIE Lab (D50) → gamma-encoded sRGB (0–1). Convenience wrapper over `labToLinearSrgb` + `srgbFromLinear`.
* In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range — clamp before byte encoding.
* CIE Lab (D50) → gamma-encoded sRGB (0–1). Returns `[r, g, b]`.
* Out-of-gamut channels may exceed [0, 1]; clamp before byte encoding.
*/
declare const labToRgbChannels: (l: number, a: number, b: number) => [number, number, number];
/** Zero-allocation sibling of labToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */
/** Zero-allocation sibling of `labToRgbChannels` — writes `[r, g, b]` into `out`. */
declare const labToRgbChannelsInto: (out: Float64Array | number[], l: number, a: number, b: number) => void;
/**
* CIE LCH (D50) → gamma-encoded sRGB (0–1). Polar-to-rectangular to Lab, then Lab → gamma sRGB.
* In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range.
* CIE LCh (D50) → gamma-encoded sRGB (0–1). Returns `[r, g, b]`.
* Out-of-gamut channels may exceed [0, 1]; clamp before byte encoding.
*/
declare const lchToRgbChannels: (l: number, c: number, h: number) => [number, number, number];
/** Zero-allocation sibling of lchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */
/** Zero-allocation sibling of `lchToRgbChannels` — writes `[r, g, b]` into `out`. */
declare const lchToRgbChannelsInto: (out: Float64Array | number[], l: number, c: number, h: number) => void;
/**
* CIE Lab (D50) → both linear and gamma-encoded sRGB in a single pass.
* Avoids recomputing Lab → XYZ D50 → linear sRGB when you need both (e.g. gamut check + pixel).
* Returns [[lr, lg, lb], [sr, sg, sb]].
* CIE Lab (D50) → both linear and gamma-encoded sRGB in one pass.
* Returns `[[lr, lg, lb], [sr, sg, sb]]`.
*/
declare const labToLinearAndSrgb: (l: number, a: number, b: number) => [[number, number, number], [number, number, number]];
/**
* Zero-allocation sibling of labToLinearAndSrgb — writes linear channels into `linOut`
* and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.
* Zero-allocation sibling of `labToLinearAndSrgb`.
* Writes linear channels into `linOut`, gamma-encoded into `srgbOut`. Buffers must be distinct.
*/
declare const labToLinearAndSrgbInto: (linOut: Float64Array | number[], srgbOut: Float64Array | number[], l: number, a: number, b: number) => void;
/**
* CIE LCH (D50) → both linear and gamma-encoded sRGB in a single pass.
* Polar-to-rectangular to Lab, then Lab → linear + gamma sRGB. Returns [[lr, lg, lb], [sr, sg, sb]].
* CIE LCh (D50) → both linear and gamma-encoded sRGB in one pass.
* Returns `[[lr, lg, lb], [sr, sg, sb]]`.
*/
declare const lchToLinearAndSrgb: (l: number, c: number, h: number) => [[number, number, number], [number, number, number]];
/** Zero-allocation sibling of lchToLinearAndSrgb — same buffer rules as labToLinearAndSrgbInto. */
/**
* Zero-allocation sibling of `lchToLinearAndSrgb`.
* Writes linear channels into `linOut`, gamma-encoded into `srgbOut`. Buffers must be distinct.
*/
declare const lchToLinearAndSrgbInto: (linOut: Float64Array | number[], srgbOut: Float64Array | number[], l: number, c: number, h: number) => void;
export { AnyColor, ColorFormat, getFormat, inGamutSrgb, labToLinearAndSrgb, labToLinearAndSrgbInto, labToLinearSrgb, labToLinearSrgbInto, labToRgbChannels, labToRgbChannelsInto, lchToLinearAndSrgb, lchToLinearAndSrgbInto, lchToLinearSrgb, lchToLinearSrgbInto, lchToRgbChannels, lchToRgbChannelsInto, oklchToLinear, oklchToLinearAndSrgb, oklchToLinearAndSrgbInto, oklchToLinearInto, oklchToRgbChannels, oklchToRgbChannelsInto, rgbToLinear, rgbToLinearInto, toHexByte };

@@ -1,2 +0,2 @@

import {b,c as c$3,d as d$1}from'./chunk-RJNXPIQM.mjs';export{a as toHexByte}from'./chunk-RJNXPIQM.mjs';import {p}from'./chunk-BXGFP5BN.mjs';export{o as inGamutSrgb,I as labToLinearAndSrgb,J as labToLinearAndSrgbInto,A as labToLinearSrgb,B as labToLinearSrgbInto,E as labToRgbChannels,F as labToRgbChannelsInto,K as lchToLinearAndSrgb,L as lchToLinearAndSrgbInto,C as lchToLinearSrgb,D as lchToLinearSrgbInto,G as lchToRgbChannels,H as lchToRgbChannelsInto,s as oklchToLinear,w as oklchToLinearAndSrgb,x as oklchToLinearAndSrgbInto,t as oklchToLinearInto,u as oklchToRgbChannels,v as oklchToRgbChannelsInto,y as rgbToLinear,z as rgbToLinearInto}from'./chunk-BXGFP5BN.mjs';import {h,g,c as c$2,b as b$4,a as a$1,d as d$2}from'./chunk-J6CH5YTL.mjs';import'./chunk-4LKLL3IS.mjs';import {b as b$3,a as a$2}from'./chunk-FXCFKFXK.mjs';import {c,b as b$1}from'./chunk-Q3O3QQ4H.mjs';import {l,d,a,c as c$1,h as h$1,i,f,g as g$1,k,j,b as b$2}from'./chunk-IOXRZECH.mjs';var X=n=>({h:c$1(n.h),s:a(n.s,0,100),l:a(n.l,0,100),alpha:a(b$2(n.alpha,3),0,1)}),y={h:0,s:0,l:0,alpha:0},O=({r:n,g:r,b:o,alpha:t})=>{let e=n/255,l=r/255,s=o/255,a$1=Math.max(e,l,s),c=Math.min(e,l,s),p=(a$1+c)/2,d=0,f=0;if(a$1!==c){let R=a$1-c;switch(f=p>.5?R/(2-a$1-c):R/(a$1+c),a$1){case e:d=((l-s)/R+(l<s?6:0))/6;break;case l:d=((s-e)/R+2)/6;break;case s:d=((e-l)/R+4)/6;break}}let k=d*360;return y.h=k>=0&&k<360?k:(k%360+360)%360,y.s=a(f*100,0,100),y.l=a(p*100,0,100),y.alpha=a(b$2(t,3),0,1),y};var v=(n,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?n+(r-n)*6*o:o<1/2?r:o<2/3?n+(r-n)*(2/3-o)*6:n),_=({h:n,s:r,l:o,alpha:t})=>{let e=r/100,l=o/100,s=l<.5?l*(1+e):l+e-l*e,a=2*l-s,c=(n%360+360)%360/360;return {r:v(a,s,c+1/3)*255,g:v(a,s,c)*255,b:v(a,s,c-1/3)*255,alpha:t}},V=n=>{if(!h$1(n)||!i(n,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:e=1}=n;return !f(r)||!f(o)||!f(t)||!f(e)?null:_(X({h:g$1(r),s:g$1(o),l:g$1(t),alpha:g$1(e)}))},Lr=new RegExp(`^hsla?\\(\\s*(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${j})%\\s*,\\s*(?<l_c>${j})%(?:\\s*,\\s*(?<al_c>${j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${k})(?<sp_s>%?)\\s+(?<l_s>${k})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),J=n=>{if(typeof n!="string")return null;let r=Lr.exec(n.trim())?.groups;if(!r)return null;let o=r.s_c!==void 0;if(o&&/^none$/i.test(r.h))return null;let t=r.hu?.toLowerCase()??"deg",e=l(r.h)*(d[t]??1),l$1=l(r.s_c??r.s_s),s=l(r.l_c??r.l_s),a=r.al_c??r.al_s,c=!!(r.alp_c??r.alp_s);if(o&&a!==void 0&&/^none$/i.test(a))return null;let p=a===void 0?1:l(a)/(c?100:1);return _(X({h:e,s:l$1,l:s,alpha:p}))};var Q=({l:n,c:r,h:o,alpha:t})=>({l:n,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),W=n=>{let{l:r,a:o,b:t,alpha:e}=b$4(n),l=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:l,h:l<4e-6?0:c$1(s),alpha:e}},M=n=>d$2(Q(n)),Y=n=>c$2(Q(n)),Z=n=>{if(!h$1(n)||n.colorSpace==="lch"||!i(n,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:e=1}=n;return !f(r)||!f(o)||!f(t)||!f(e)||g$1(r)>1?null:Y({l:g$1(r),c:Math.max(0,g$1(o)),h:c$1(g$1(t)),alpha:a(g$1(e),0,1)})},Ir=new RegExp(`^oklch\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<c>${k})(?<cp>%?)\\s+(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),rr=n=>{if(typeof n!="string")return null;let r=Ir.exec(n.trim())?.groups;if(!r)return null;let o=r.lp?l(r.l)/100:l(r.l),t=Math.max(0,r.cp?l(r.c)*.004:l(r.c)),e=r.hu?.toLowerCase()??"deg",l$1=l(r.h)*(d[e]??1),s=r.al===void 0?1:l(r.al)/(r.alp?100:1);return Y({l:o,c:t,h:c$1(l$1),alpha:a(s,0,1)})};var or=[[b,"hex"],[c,"rgb"],[J,"hsl"],[rr,"oklch"],[h,"oklab"]],tr=[[b$1,"rgb"],[V,"hsl"],[g,"oklab"],[Z,"oklch"]],nr=or.map(([n])=>n),lr=tr.map(([n])=>n),er=[...nr,...lr],P=[...er],N=[],sr=n=>{if(n==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof n=="string"?nr:lr;for(let o of r){let t=o(n);if(t)return t}for(let o=er.length;o<P.length;o++){let t=P[o](n);if(t)return t}return null},Pr=n=>{if(n==="transparent")return "name";let r=typeof n=="string"?or:tr;for(let[o,t]of r)if(o(n))return t;for(let[o,t]of N)if(o(n))return t};var ar=Symbol(),u=class n{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof n){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}this._rgb.alpha=a(b$2(this._rgb.alpha,3),0,1);}static _make(r){return new n(ar,r)}static _makeFromLinearSrgb(r,o,t,e){let l=b$3(r)*255,s=b$3(o)*255,a=b$3(t)*255;return n._make({r:l>=0&&l<.5?0:l>254.5&&l<=255?255:l,g:s>=0&&s<.5?0:s>254.5&&s<=255?255:s,b:a>=0&&a<.5?0:a>254.5&&a<=255?255:a,alpha:e})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return {r:a(b$2(r),0,255),g:a(b$2(o),0,255),b:a(b$2(t),0,255),alpha:e}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:e,alpha:l}=this._rgb,s=a(b$2(o),0,255),a$1=a(b$2(t),0,255),c=a(b$2(e),0,255);return r?.legacy?l<1?`rgba(${s}, ${a$1}, ${c}, ${l})`:`rgb(${s}, ${a$1}, ${c})`:l<1?`rgb(${s} ${a$1} ${c} / ${l})`:`rgb(${s} ${a$1} ${c})`}toHex(){return c$3(this._rgb)}toHex8(){return d$1(this._rgb)}toNumber(){let{r,g:o,b:t}=this._rgb;return a(b$2(r),0,255)<<16|a(b$2(o),0,255)<<8|a(b$2(t),0,255)}toHsl(r=2){let{h:o,s:t,l:e,alpha:l}=O(this._rgb),s=b$2(o,r);return {h:s>=360?0:s,s:b$2(t,r),l:b$2(e,r),alpha:l}}toHslString(r=2){let{h:o,s:t,l:e,alpha:l}=this.toHsl(r);return l<1?`hsl(${o} ${t}% ${e}% / ${l})`:`hsl(${o} ${t}% ${e}%)`}toOklab(r=4){let{l:o,a:t,b:e,alpha:l}=b$4(this._rgb);return {l:b$2(o,r),a:b$2(t,r),b:b$2(e,r),alpha:l}}toOklabString(r=4){let{l:o,a:t,b:e,alpha:l}=this.toOklab(r);return l<1?`oklab(${o} ${t} ${e} / ${l})`:`oklab(${o} ${t} ${e})`}toOklch(r=4){let{l:o,c:t,h:e,alpha:l}=W(this._rgb);return {l:b$2(o,r),c:b$2(t,r),h:b$2(e,r),alpha:l}}toOklchString(r=4){let{l:o,c:t,h:e,alpha:l}=this.toOklch(r),s=t===0?"none":e;return l<1?`oklch(${o} ${t} ${s} / ${l})`:`oklch(${o} ${t} ${s})`}brightness(){let{r,g:o,b:t}=this._rgb;return b$2((r*299+o*587+t*114)/255e3,2)}isDark(){return this.brightness()<.5}isLight(){return this.brightness()>=.5}alpha(r){return r===void 0?this._rgb.alpha:n._make({...this._rgb,alpha:b$2(a(r,0,1),3)})}hue(r){let{h:o,s:t,l:e,alpha:l}=O(this._rgb);if(r===void 0){let s=b$2(o,2);return s>=360?0:s}return n._make(_({h:r,s:t,l:e,alpha:l}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:n._make(M({...o,l:a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:n._make(M({...o,c:a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a$1=o?.relative?l*(1+r):l+r*100;return n._make(_({h:t,s:e,l:a(a$1,0,100),alpha:s}))}darken(r=.1,o){return this.lighten(-r,o)}saturate(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a$1=o?.relative?e*(1+r):e+r*100;return n._make(_({h:t,s:a(a$1,0,100),l,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:e}=this._rgb;return n._make({r:255-r,g:255-o,b:255-t,alpha:e})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new n(r).toRgb(),t=this.toRgb();return t.r===o.r&&t.g===o.g&&t.b===o.b&&t.alpha===o.alpha}toString(){return this.toHex()}clampSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:n._make({r:a(r,0,255),g:a(o,0,255),b:a(t,0,255),alpha:e})}mapSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[l,s,a]=a$1(a$2(r/255),a$2(o/255),a$2(t/255)),c=l>1-1e-7?1:l<1e-7?0:l,p$1=p({l:c,a:s,b:a,alpha:e});if(p$1===null)return this;let[d,f,k]=p$1.linear;return n._makeFromLinearSrgb(d,f,k,p$1.alpha)}static toGamutSrgb},Ar=n=>new u(n),vr=n=>new u(n).toHex8(),Mr=n=>{n.forEach(r=>r(u,P,N));},Nr=(n,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:e}=new u(n).toOklab(),l=1/0,s=r[0];for(let a of r){let{l:c,a:p,b:d}=new u(a).toOklab(),f=(c-o)**2+(p-t)**2+(d-e)**2;f<l&&(l=f,s=a);}return s},Fr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=n=>{let r=p(n);if(r===null)return new u(n);let[o,t,e]=r.linear;return u._makeFromLinearSrgb(o,t,e,r.alpha)};export{u as Colordx,Ar as colordx,Mr as extend,Pr as getFormat,Nr as nearest,Fr as random,vr as toHex8};//# sourceMappingURL=index.mjs.map
import {b,c as c$3,d as d$1}from'./chunk-RJNXPIQM.mjs';export{a as toHexByte}from'./chunk-RJNXPIQM.mjs';import {p}from'./chunk-3LS3HCHH.mjs';export{o as inGamutSrgb,I as labToLinearAndSrgb,J as labToLinearAndSrgbInto,A as labToLinearSrgb,B as labToLinearSrgbInto,E as labToRgbChannels,F as labToRgbChannelsInto,K as lchToLinearAndSrgb,L as lchToLinearAndSrgbInto,C as lchToLinearSrgb,D as lchToLinearSrgbInto,G as lchToRgbChannels,H as lchToRgbChannelsInto,s as oklchToLinear,w as oklchToLinearAndSrgb,x as oklchToLinearAndSrgbInto,t as oklchToLinearInto,u as oklchToRgbChannels,v as oklchToRgbChannelsInto,y as rgbToLinear,z as rgbToLinearInto}from'./chunk-3LS3HCHH.mjs';import {h,g,c as c$2,b as b$4,a as a$1,d as d$2}from'./chunk-OX5CMKKI.mjs';import'./chunk-F4W4HJCD.mjs';import {b as b$3,a as a$2}from'./chunk-YLJRINFM.mjs';import {c,b as b$1}from'./chunk-Q3O3QQ4H.mjs';import {l,d,a,c as c$1,h as h$1,i,f,g as g$1,k,j,b as b$2}from'./chunk-IOXRZECH.mjs';var X=n=>({h:c$1(n.h),s:a(n.s,0,100),l:a(n.l,0,100),alpha:a(b$2(n.alpha,3),0,1)}),y={h:0,s:0,l:0,alpha:0},O=({r:n,g:r,b:o,alpha:t})=>{let e=n/255,l=r/255,s=o/255,a$1=Math.max(e,l,s),c=Math.min(e,l,s),m=(a$1+c)/2,d=0,f=0;if(a$1!==c){let R=a$1-c;switch(f=m>.5?R/(2-a$1-c):R/(a$1+c),a$1){case e:d=((l-s)/R+(l<s?6:0))/6;break;case l:d=((s-e)/R+2)/6;break;case s:d=((e-l)/R+4)/6;break}}let k=d*360;return y.h=k>=0&&k<360?k:(k%360+360)%360,y.s=a(f*100,0,100),y.l=a(m*100,0,100),y.alpha=a(b$2(t,3),0,1),y};var v=(n,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?n+(r-n)*6*o:o<1/2?r:o<2/3?n+(r-n)*(2/3-o)*6:n),_=({h:n,s:r,l:o,alpha:t})=>{let e=r/100,l=o/100,s=l<.5?l*(1+e):l+e-l*e,a=2*l-s,c=(n%360+360)%360/360;return {r:v(a,s,c+1/3)*255,g:v(a,s,c)*255,b:v(a,s,c-1/3)*255,alpha:t}},V=n=>{if(!h$1(n)||!i(n,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:e=1}=n;return !f(r)||!f(o)||!f(t)||!f(e)?null:_(X({h:g$1(r),s:g$1(o),l:g$1(t),alpha:g$1(e)}))},Lr=new RegExp(`^hsla?\\(\\s*(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${j})%\\s*,\\s*(?<l_c>${j})%(?:\\s*,\\s*(?<al_c>${j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${k})(?<sp_s>%?)\\s+(?<l_s>${k})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),J=n=>{if(typeof n!="string")return null;let r=Lr.exec(n.trim())?.groups;if(!r)return null;let o=r.s_c!==void 0;if(o&&/^none$/i.test(r.h))return null;let t=r.hu?.toLowerCase()??"deg",e=l(r.h)*(d[t]??1),l$1=l(r.s_c??r.s_s),s=l(r.l_c??r.l_s),a=r.al_c??r.al_s,c=!!(r.alp_c??r.alp_s);if(o&&a!==void 0&&/^none$/i.test(a))return null;let m=a===void 0?1:l(a)/(c?100:1);return _(X({h:e,s:l$1,l:s,alpha:m}))};var Q=({l:n,c:r,h:o,alpha:t})=>({l:n,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),W=n=>{let{l:r,a:o,b:t,alpha:e}=b$4(n),l=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:l,h:l<4e-6?0:c$1(s),alpha:e}},M=n=>d$2(Q(n)),Y=n=>c$2(Q(n)),Z=n=>{if(!h$1(n)||n.colorSpace==="lch"||!i(n,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:e=1}=n;return !f(r)||!f(o)||!f(t)||!f(e)||g$1(r)>1?null:Y({l:g$1(r),c:Math.max(0,g$1(o)),h:c$1(g$1(t)),alpha:a(g$1(e),0,1)})},Ir=new RegExp(`^oklch\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<c>${k})(?<cp>%?)\\s+(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),rr=n=>{if(typeof n!="string")return null;let r=Ir.exec(n.trim())?.groups;if(!r)return null;let o=r.lp?l(r.l)/100:l(r.l),t=Math.max(0,r.cp?l(r.c)*.004:l(r.c)),e=r.hu?.toLowerCase()??"deg",l$1=l(r.h)*(d[e]??1),s=r.al===void 0?1:l(r.al)/(r.alp?100:1);return Y({l:o,c:t,h:c$1(l$1),alpha:a(s,0,1)})};var or=[[b,"hex"],[c,"rgb"],[J,"hsl"],[rr,"oklch"],[h,"oklab"]],tr=[[b$1,"rgb"],[V,"hsl"],[g,"oklab"],[Z,"oklch"]],nr=or.map(([n])=>n),lr=tr.map(([n])=>n),er=[...nr,...lr],P=[...er],N=[],sr=n=>{if(n==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof n=="string"?nr:lr;for(let o of r){let t=o(n);if(t)return t}for(let o=er.length;o<P.length;o++){let t=P[o](n);if(t)return t}return null},Pr=n=>{if(n==="transparent")return "name";let r=typeof n=="string"?or:tr;for(let[o,t]of r)if(o(n))return t;for(let[o,t]of N)if(o(n))return t};var ar=Symbol(),u=class n{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof n){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}this._rgb.alpha=a(b$2(this._rgb.alpha,3),0,1);}static _make(r){return new n(ar,r)}static _makeFromLinearSrgb(r,o,t,e){let l=b$3(r)*255,s=b$3(o)*255,a=b$3(t)*255;return n._make({r:l>=0&&l<.5?0:l>254.5&&l<=255?255:l,g:s>=0&&s<.5?0:s>254.5&&s<=255?255:s,b:a>=0&&a<.5?0:a>254.5&&a<=255?255:a,alpha:e})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return {r:a(b$2(r),0,255),g:a(b$2(o),0,255),b:a(b$2(t),0,255),alpha:e}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:e,alpha:l}=this._rgb,s=a(b$2(o),0,255),a$1=a(b$2(t),0,255),c=a(b$2(e),0,255);return r?.legacy?l<1?`rgba(${s}, ${a$1}, ${c}, ${l})`:`rgb(${s}, ${a$1}, ${c})`:l<1?`rgb(${s} ${a$1} ${c} / ${l})`:`rgb(${s} ${a$1} ${c})`}toHex(){return c$3(this._rgb)}toHex8(){return d$1(this._rgb)}toNumber(){let{r,g:o,b:t}=this._rgb;return a(b$2(r),0,255)<<16|a(b$2(o),0,255)<<8|a(b$2(t),0,255)}toHsl(r=2){let{h:o,s:t,l:e,alpha:l}=O(this._rgb),s=b$2(o,r);return {h:s>=360?0:s,s:b$2(t,r),l:b$2(e,r),alpha:l}}toHslString(r=2){let{h:o,s:t,l:e,alpha:l}=this.toHsl(r);return l<1?`hsl(${o} ${t}% ${e}% / ${l})`:`hsl(${o} ${t}% ${e}%)`}toOklab(r=5){let{l:o,a:t,b:e,alpha:l}=b$4(this._rgb);return {l:b$2(o,r),a:b$2(t,r),b:b$2(e,r),alpha:l}}toOklabString(r=5){let{l:o,a:t,b:e,alpha:l}=this.toOklab(r);return l<1?`oklab(${o} ${t} ${e} / ${l})`:`oklab(${o} ${t} ${e})`}toOklch(r=5){let{l:o,c:t,h:e,alpha:l}=W(this._rgb);return {l:b$2(o,r),c:b$2(t,r),h:b$2(e,r),alpha:l}}toOklchString(r=5){let{l:o,c:t,h:e,alpha:l}=this.toOklch(r),s=t===0?"none":e;return l<1?`oklch(${o} ${t} ${s} / ${l})`:`oklch(${o} ${t} ${s})`}brightness(){let{r,g:o,b:t}=this._rgb;return b$2((r*299+o*587+t*114)/255e3,2)}isDark(){return this.brightness()<.5}isLight(){return this.brightness()>=.5}alpha(r){return r===void 0?this._rgb.alpha:n._make({...this._rgb,alpha:b$2(a(r,0,1),3)})}hue(r){let{h:o,s:t,l:e,alpha:l}=O(this._rgb);if(r===void 0){let s=b$2(o,2);return s>=360?0:s}return n._make(_({h:r,s:t,l:e,alpha:l}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:n._make(M({...o,l:a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:n._make(M({...o,c:a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a$1=o?.relative?l*(1+r):l+r*100;return n._make(_({h:t,s:e,l:a(a$1,0,100),alpha:s}))}darken(r=.1,o){return this.lighten(-r,o)}saturate(r=.1,o){let{h:t,s:e,l,alpha:s}=O(this._rgb),a$1=o?.relative?e*(1+r):e+r*100;return n._make(_({h:t,s:a(a$1,0,100),l,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:e}=this._rgb;return n._make({r:255-r,g:255-o,b:255-t,alpha:e})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new n(r).toRgb(),t=this.toRgb();return t.r===o.r&&t.g===o.g&&t.b===o.b&&t.alpha===o.alpha}toString(){return this.toHex()}clampSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:n._make({r:a(r,0,255),g:a(o,0,255),b:a(t,0,255),alpha:e})}mapSrgb(){let{r,g:o,b:t,alpha:e}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[l,s,a]=a$1(a$2(r/255),a$2(o/255),a$2(t/255)),c=l>1-1e-7?1:l<1e-7?0:l,m=p({l:c,a:s,b:a,alpha:e});if(m===null)return this;let[d,f,k]=m.linear;return n._makeFromLinearSrgb(d,f,k,m.alpha)}static toGamutSrgb},Ar=n=>new u(n),vr=n=>new u(n).toHex8(),Mr=n=>{n.forEach(r=>r(u,P,N));},Nr=(n,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:e}=new u(n).toOklab(),l=1/0,s=r[0];for(let a of r){let{l:c,a:m,b:d}=new u(a).toOklab(),f=(c-o)**2+(m-t)**2+(d-e)**2;f<l&&(l=f,s=a);}return s},Fr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=n=>{let r=p(n);if(r===null)return new u(n);let[o,t,e]=r.linear;return u._makeFromLinearSrgb(o,t,e,r.alpha)};export{u as Colordx,Ar as colordx,Mr as extend,Pr as getFormat,Nr as nearest,Fr as random,vr as toHex8};//# sourceMappingURL=index.mjs.map
//# sourceMappingURL=index.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/colorModels/hsl.ts","../src/colorModels/oklch.ts","../src/parse.ts","../src/colordx.ts"],"names":["clampHsl","hsl","normalizeHue","clamp","round","_hslBuf","rgbToHslRaw","r","g","b","alpha","rn","gn","bn","max","min","l","h","s","d","hDeg","_hueToRgb","p","q","t","hslToRgb","sn","ln","hue","parseHslObject","input","isObject","hasKeys","isAnyNumber","sanitize","HSL_RE","NUM_OR_NONE","NUM","parseHslString","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","oklchToOklab","c","rgbToOklch","rgb","ol","oa","ob","rgbToOklab","C","H","oklchToRgb","oklch","oklabToRgb","oklchToRgbUnclamped","oklabToRgbUnclamped","parseOklchObject","OKLCH_RE","parseOklchString","L","stringFormatParsers","parseHex","parseRgbString","parseOklabString","objectFormatParsers","parseRgbObject","parseOklabObject","builtinStringParsers","builtinObjectParsers","defaultParsers","parsers","pluginFormatParsers","parse","builtins","parser","result","i","getFormat","typed","format","_SENTINEL","Colordx","_Colordx","_direct","parsed","lr","lg","lb","rb","srgbFromLinear","gb","bb","options","ri","gi","bi","rgbToHex","rgbToHex8","precision","hr","a","value","amount","newL","newS","color","other","self","lRaw","bv","linearSrgbToOklab","srgbToLinear","mapped","toGamutSrgbRaw","mr","mg","mb","colordx","toHex8","extend","plugins","plugin","nearest","candidates","l1","a1","b1","minDist","candidate","l2","a2","b2","dist","random"],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HslColor, RgbColor } from '../types.js';\n\nexport const clampHsl = (hsl: HslColor): HslColor => ({\n h: normalizeHue(hsl.h),\n s: clamp(hsl.s, 0, 100),\n l: clamp(hsl.l, 0, 100),\n alpha: clamp(round(hsl.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHslRaw — callers must destructure immediately, never store the reference.\nconst _hslBuf: HslColor = { h: 0, s: 0, l: 0, alpha: 0 };\n\nexport const rgbToHslRaw = ({ r, g, b, alpha }: RgbColor): HslColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const l = (max + min) / 2;\n let h = 0,\n s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hslBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hslBuf.s = clamp(s * 100, 0, 100);\n _hslBuf.l = clamp(l * 100, 0, 100);\n _hslBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hslBuf;\n};\n\nexport const rgbToHsl = (rgb: RgbColor): HslColor => {\n const { h, s, l, alpha } = rgbToHslRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), l: round(l, 2), alpha };\n};\n\nconst _hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n};\n\nexport const hslToRgb = ({ h, s, l, alpha }: HslColor): RgbColor => {\n const sn = s / 100,\n ln = l / 100;\n const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;\n const p = 2 * ln - q;\n const hue = (((h % 360) + 360) % 360) / 360;\n return {\n r: _hueToRgb(p, q, hue + 1 / 3) * 255,\n g: _hueToRgb(p, q, hue) * 255,\n b: _hueToRgb(p, q, hue - 1 / 3) * 255,\n alpha,\n };\n};\n\nexport const parseHslObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'l'])) return null;\n const { h, s, l, alpha = 1 } = input as { h: unknown; s: unknown; l: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(l) || !isAnyNumber(alpha)) return null;\n return hslToRgb(clampHsl({ h: sanitize(h), s: sanitize(s), l: sanitize(l), alpha: sanitize(alpha) }));\n};\n\n// Legacy comma form requires `%` on s/l and disallows `none`. Modern space form\n// allows optional `%` and the CSS Color 4 `none` keyword on any channel.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSL_RE = new RegExp(\n `^hsla?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<l_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<l_s>${NUM_OR_NONE})(?<lp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHslString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSL_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null; // legacy syntax has no `none`\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const l = parseNum((g.l_c ?? g.l_s)!);\n const rawA = g.al_c ?? g.al_s;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hslToRgb(clampHsl({ h, s, l, alpha }));\n};\n","import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n sanitize,\n} from '../helpers.js';\nimport type { OklabColor, OklchColor, RgbColor } from '../types.js';\nimport { oklabToRgb, oklabToRgbUnclamped, rgbToOklab } from './oklab.js';\n\nconst oklchToOklab = ({ l, c, h, alpha }: OklchColor): OklabColor => ({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n});\n\nexport const rgbToOklch = (rgb: RgbColor): OklchColor => {\n const { l: ol, a: oa, b: ob, alpha } = rgbToOklab(rgb);\n const C = Math.sqrt(oa * oa + ob * ob);\n const H = (Math.atan2(ob, oa) * 180) / Math.PI;\n // Achromatic threshold on OKLCH scale (0–~0.4): proportionally equivalent to LCH's 0.0015 threshold.\n return { l: ol, c: C, h: C < 0.000004 ? 0 : normalizeHue(H), alpha };\n};\n\nexport const oklchToRgb = (oklch: OklchColor): RgbColor => oklabToRgb(oklchToOklab(oklch));\nconst oklchToRgbUnclamped = (oklch: OklchColor): RgbColor => oklabToRgbUnclamped(oklchToOklab(oklch));\n\nexport const parseOklchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lch' are CIE LCH, not OKLCH — let parseLchObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lch') return null;\n if (!hasKeys(input, ['l', 'c', 'h'])) return null;\n const { l, c, h, alpha = 1 } = input as { l: unknown; c: unknown; h: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(c) || !isAnyNumber(h) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLCH L is always [0, 1]; reject CIE LCH values passed without colorSpace branding\n return oklchToRgbUnclamped({\n l: sanitize(l),\n c: Math.max(0, sanitize(c)),\n h: normalizeHue(sanitize(h)),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLCH_RE = new RegExp(\n `^oklch\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<c>${NUM_OR_NONE})(?<cp>%?)` +\n `\\\\s+(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const C = Math.max(0, g.cp ? parseNum(g.c!) * 0.004 : parseNum(g.c!)); // 100% = 0.4\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const H = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklchToRgbUnclamped({\n l: L,\n c: C,\n h: normalizeHue(H),\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { parseHex } from './colorModels/hex.js';\nimport { parseHslObject, parseHslString } from './colorModels/hsl.js';\nimport { parseOklabObject, parseOklabString } from './colorModels/oklab.js';\nimport { parseOklchObject, parseOklchString } from './colorModels/oklch.js';\nimport { parseRgbObject, parseRgbString } from './colorModels/rgb.js';\nimport type { AnyColor, ColorFormat, ColorParser, RgbColor } from './types.js';\n\nconst stringFormatParsers: [ColorParser, ColorFormat][] = [\n [parseHex, 'hex'],\n [parseRgbString, 'rgb'],\n [parseHslString, 'hsl'],\n [parseOklchString, 'oklch'],\n [parseOklabString, 'oklab'],\n];\n\nconst objectFormatParsers: [ColorParser, ColorFormat][] = [\n [parseRgbObject, 'rgb'],\n [parseHslObject, 'hsl'],\n [parseOklabObject, 'oklab'],\n [parseOklchObject, 'oklch'],\n];\n\nconst builtinStringParsers: ColorParser[] = stringFormatParsers.map(([p]) => p);\nconst builtinObjectParsers: ColorParser[] = objectFormatParsers.map(([p]) => p);\n\nexport const defaultParsers: ColorParser[] = [...builtinStringParsers, ...builtinObjectParsers];\nexport const parsers: ColorParser[] = [...defaultParsers];\nexport const pluginFormatParsers: [ColorParser, ColorFormat][] = [];\n\nexport const parse = (input: AnyColor): RgbColor | null => {\n if (input === 'transparent') return { r: 0, g: 0, b: 0, alpha: 0 };\n const builtins = typeof input === 'string' ? builtinStringParsers : builtinObjectParsers;\n for (const parser of builtins) {\n const result = parser(input);\n if (result) return result;\n }\n for (let i = defaultParsers.length; i < parsers.length; i++) {\n const result = parsers[i]!(input);\n if (result) return result;\n }\n return null;\n};\n\nexport const getFormat = (input: AnyColor): ColorFormat | undefined => {\n if (input === 'transparent') return 'name';\n const typed = typeof input === 'string' ? stringFormatParsers : objectFormatParsers;\n for (const [parser, format] of typed) {\n if (parser(input)) return format;\n }\n for (const [parser, format] of pluginFormatParsers) {\n if (parser(input)) return format;\n }\n return undefined;\n};\n","import { rgbToHex, rgbToHex8 } from './colorModels/hex.js';\nimport { hslToRgb, rgbToHslRaw } from './colorModels/hsl.js';\nimport { linearSrgbToOklab, rgbToOklab } from './colorModels/oklab.js';\nimport { oklchToRgb, rgbToOklch } from './colorModels/oklch.js';\nimport { toGamutSrgbRaw } from './gamut.js';\nimport { clamp, round } from './helpers.js';\nimport { parse, parsers, pluginFormatParsers } from './parse.js';\nimport { srgbFromLinear, srgbToLinear } from './transfer.js';\nimport type { AnyColor, ColorFormat, ColorParser, HslColor, OklabColor, OklchColor, RgbColor } from './types.js';\n\nconst _SENTINEL: unique symbol = Symbol();\n\nexport class Colordx {\n private readonly _rgb: RgbColor;\n private readonly _valid: boolean;\n\n constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor) {\n if (input === _SENTINEL) {\n this._valid = true;\n this._rgb = _direct!;\n } else if (input instanceof Colordx) {\n this._valid = input._valid;\n this._rgb = input._rgb;\n return;\n } else {\n const parsed = parse(input);\n this._valid = parsed !== null;\n this._rgb = parsed ?? { r: 0, g: 0, b: 0, alpha: 1 };\n }\n // Single chokepoint for alpha precision: parsers and _make() callers may hand us\n // raw floats (e.g. 1/255, 0.1+0.2). Snapping here keeps every formatter consistent.\n this._rgb.alpha = clamp(round(this._rgb.alpha, 3), 0, 1);\n }\n\n private static _make(rgb: RgbColor): Colordx {\n return new Colordx(_SENTINEL, rgb);\n }\n\n /**\n * Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.\n * Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a\n * color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored\n * _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut\n * channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.\n *\n * Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels\n * directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP\n * asymmetries on gamut-boundary colors.\n *\n * A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one\n * channel exactly on 0 or 1 while the others sit where the input's hue landed, so an\n * extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels\n * (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all\n * three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report\n * phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;\n * the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab\n * see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut\n * (P3 / Rec.2020 targets) and pass through untouched.\n */\n static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx {\n const rb = srgbFromLinear(lr) * 255;\n const gb = srgbFromLinear(lg) * 255;\n const bb = srgbFromLinear(lb) * 255;\n return Colordx._make({\n r: rb >= 0 && rb < 0.5 ? 0 : rb > 254.5 && rb <= 255 ? 255 : rb,\n g: gb >= 0 && gb < 0.5 ? 0 : gb > 254.5 && gb <= 255 ? 255 : gb,\n b: bb >= 0 && bb < 0.5 ? 0 : bb > 254.5 && bb <= 255 ? 255 : bb,\n alpha,\n });\n }\n\n isValid(): boolean {\n return this._valid;\n }\n\n toRgb(): RgbColor {\n const { r, g, b, alpha } = this._rgb;\n return { r: clamp(round(r), 0, 255), g: clamp(round(g), 0, 255), b: clamp(round(b), 0, 255), alpha };\n }\n\n /** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */\n _rawRgb(): RgbColor {\n return this._rgb;\n }\n\n /**\n * Format as a `rgb()` / `rgba()` CSS string.\n * Default is CSS Color 4 modern syntax (space-separated, slash-delimited alpha):\n * `rgb(255 0 0)` / `rgb(255 0 0 / 0.5)`\n * Pass `{ legacy: true }` for CSS Color 3 comma-separated syntax, which also\n * switches the function name to `rgba()` when alpha < 1:\n * `rgb(255, 0, 0)` / `rgba(255, 0, 0, 0.5)`\n */\n toRgbString(options?: { legacy?: boolean }): string {\n const { r, g, b, alpha } = this._rgb;\n const ri = clamp(round(r), 0, 255),\n gi = clamp(round(g), 0, 255),\n bi = clamp(round(b), 0, 255);\n if (options?.legacy) {\n return alpha < 1 ? `rgba(${ri}, ${gi}, ${bi}, ${alpha})` : `rgb(${ri}, ${gi}, ${bi})`;\n }\n return alpha < 1 ? `rgb(${ri} ${gi} ${bi} / ${alpha})` : `rgb(${ri} ${gi} ${bi})`;\n }\n\n toHex(): string {\n return rgbToHex(this._rgb);\n }\n\n /** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */\n toHex8(): string {\n return rgbToHex8(this._rgb);\n }\n\n /** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */\n toNumber(): number {\n const { r, g, b } = this._rgb;\n return (clamp(round(r), 0, 255) << 16) | (clamp(round(g), 0, 255) << 8) | clamp(round(b), 0, 255);\n }\n\n toHsl(precision = 2): HslColor {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const hr = round(h, precision);\n return { h: hr >= 360 ? 0 : hr, s: round(s, precision), l: round(l, precision), alpha };\n }\n\n toHslString(precision = 2): string {\n const { h, s, l, alpha } = this.toHsl(precision);\n return alpha < 1 ? `hsl(${h} ${s}% ${l}% / ${alpha})` : `hsl(${h} ${s}% ${l}%)`;\n }\n\n toOklab(precision = 4): OklabColor {\n const { l, a, b, alpha } = rgbToOklab(this._rgb);\n return { l: round(l, precision), a: round(a, precision), b: round(b, precision), alpha };\n }\n\n toOklabString(precision = 4): string {\n const { l, a, b, alpha } = this.toOklab(precision);\n return alpha < 1 ? `oklab(${l} ${a} ${b} / ${alpha})` : `oklab(${l} ${a} ${b})`;\n }\n\n toOklch(precision = 4): OklchColor {\n const { l, c, h, alpha } = rgbToOklch(this._rgb);\n return { l: round(l, precision), c: round(c, precision), h: round(h, precision), alpha };\n }\n\n toOklchString(precision = 4): string {\n const { l, c, h, alpha } = this.toOklch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `oklch(${l} ${c} ${H} / ${alpha})` : `oklch(${l} ${c} ${H})`;\n }\n\n brightness(): number {\n const { r, g, b } = this._rgb;\n return round((r * 299 + g * 587 + b * 114) / 255000, 2);\n }\n\n isDark(): boolean {\n return this.brightness() < 0.5;\n }\n\n isLight(): boolean {\n return this.brightness() >= 0.5;\n }\n\n alpha(): number;\n alpha(value: number): Colordx;\n alpha(value?: number): number | Colordx {\n if (value === undefined) return this._rgb.alpha;\n return Colordx._make({ ...this._rgb, alpha: round(clamp(value, 0, 1), 3) });\n }\n\n hue(): number;\n hue(value: number): Colordx;\n hue(value?: number): number | Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n if (value === undefined) {\n const hr = round(h, 2);\n return hr >= 360 ? 0 : hr;\n }\n return Colordx._make(hslToRgb({ h: value, s, l, alpha }));\n }\n\n lightness(): number;\n lightness(value: number): Colordx;\n lightness(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.l;\n return Colordx._make(oklchToRgb({ ...oklch, l: clamp(value, 0, 1) }));\n }\n\n chroma(): number;\n chroma(value: number): Colordx;\n chroma(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.c;\n return Colordx._make(oklchToRgb({ ...oklch, c: clamp(value, 0, 0.4) }));\n }\n\n lighten(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newL = options?.relative ? l * (1 + amount) : l + amount * 100;\n return Colordx._make(hslToRgb({ h, s, l: clamp(newL, 0, 100), alpha }));\n }\n\n darken(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.lighten(-amount, options);\n }\n\n saturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newS = options?.relative ? s * (1 + amount) : s + amount * 100;\n return Colordx._make(hslToRgb({ h, s: clamp(newS, 0, 100), l, alpha }));\n }\n\n desaturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.saturate(-amount, options);\n }\n\n grayscale(): Colordx {\n return this.desaturate(1);\n }\n\n invert(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n return Colordx._make({ r: 255 - r, g: 255 - g, b: 255 - b, alpha });\n }\n\n rotate(amount = 15): Colordx {\n return this.hue(this.hue() + amount);\n }\n\n isEqual(color: AnyColor): boolean {\n const other = new Colordx(color).toRgb();\n const self = this.toRgb();\n return self.r === other.r && self.g === other.g && self.b === other.b && self.alpha === other.alpha;\n }\n\n toString(): string {\n return this.toHex();\n }\n\n /**\n * Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].\n * Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.\n * Hue and lightness may shift noticeably for colors far outside sRGB.\n * Returns `this` when already in gamut.\n */\n clampSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n return Colordx._make({\n r: clamp(r, 0, 255),\n g: clamp(g, 0, 255),\n b: clamp(b, 0, 255),\n alpha,\n });\n }\n\n /**\n * Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm\n * (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.\n * Useful when hue stability matters — design tokens, palettes, color pickers.\n * Returns `this` when already in gamut.\n */\n mapSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n const [lRaw, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n // The gamma-encoded round-trip drifts L by ~1e-9 at boundaries; snap so that inputs with\n // exact L=0 or L=1 hit the same white/black shortcut the static gamut map uses.\n const l = lRaw > 1 - 1e-7 ? 1 : lRaw < 1e-7 ? 0 : lRaw;\n const mapped = toGamutSrgbRaw({ l, a, b: bv, alpha });\n if (mapped === null) return this;\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n }\n\n /**\n * Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.\n * Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.\n */\n static toGamutSrgb: (input: AnyColor) => Colordx;\n}\n\nexport type Plugin = (\n ColordxClass: typeof Colordx,\n parsers: ColorParser[],\n formatParsers: [ColorParser, ColorFormat][]\n) => void;\n\nexport const colordx = (input: AnyColor | Colordx): Colordx => new Colordx(input);\n\n/** Emit an 8-digit `#rrggbbaa` hex for any color input. Convenience over `colordx(c).toHex8()`. */\nexport const toHex8 = (input: AnyColor | Colordx): string => new Colordx(input).toHex8();\n\nexport const extend = (plugins: Plugin[]): void => {\n plugins.forEach((plugin) => plugin(Colordx, parsers, pluginFormatParsers));\n};\n\nexport const nearest = <T extends AnyColor>(color: AnyColor, candidates: T[]): T => {\n if (candidates.length === 0) throw new Error('nearest: candidates array must not be empty');\n const { l: l1, a: a1, b: b1 } = new Colordx(color).toOklab();\n let minDist = Infinity;\n let result = candidates[0] as T;\n for (const candidate of candidates) {\n const { l: l2, a: a2, b: b2 } = new Colordx(candidate).toOklab();\n const dist = (l2 - l1) ** 2 + (a2 - a1) ** 2 + (b2 - b1) ** 2;\n if (dist < minDist) {\n minDist = dist;\n result = candidate;\n }\n }\n return result;\n};\n\nexport const random = (): Colordx =>\n new Colordx({\n r: Math.round(Math.random() * 255),\n g: Math.round(Math.random() * 255),\n b: Math.round(Math.random() * 255),\n alpha: 1,\n });\n\nColordx.toGamutSrgb = (input: AnyColor): Colordx => {\n const mapped = toGamutSrgbRaw(input);\n if (mapped === null) return new Colordx(input);\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n};\n"]}
{"version":3,"sources":["../src/colorModels/hsl.ts","../src/colorModels/oklch.ts","../src/parse.ts","../src/colordx.ts"],"names":["clampHsl","hsl","normalizeHue","clamp","round","_hslBuf","rgbToHslRaw","r","g","b","alpha","rn","gn","bn","max","min","l","h","s","d","hDeg","_hueToRgb","p","q","t","hslToRgb","sn","ln","hue","parseHslObject","input","isObject","hasKeys","isAnyNumber","sanitize","HSL_RE","NUM_OR_NONE","NUM","parseHslString","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","oklchToOklab","c","rgbToOklch","rgb","ol","oa","ob","rgbToOklab","C","H","oklchToRgb","oklch","oklabToRgb","oklchToRgbUnclamped","oklabToRgbUnclamped","parseOklchObject","OKLCH_RE","parseOklchString","L","stringFormatParsers","parseHex","parseRgbString","parseOklabString","objectFormatParsers","parseRgbObject","parseOklabObject","builtinStringParsers","builtinObjectParsers","defaultParsers","parsers","pluginFormatParsers","parse","builtins","parser","result","i","getFormat","typed","format","_SENTINEL","Colordx","_Colordx","_direct","parsed","lr","lg","lb","rb","srgbFromLinear","gb","bb","options","ri","gi","bi","rgbToHex","rgbToHex8","precision","hr","a","value","amount","newL","newS","color","other","self","lRaw","bv","linearSrgbToOklab","srgbToLinear","mapped","toGamutSrgbRaw","mr","mg","mb","colordx","toHex8","extend","plugins","plugin","nearest","candidates","l1","a1","b1","minDist","candidate","l2","a2","b2","dist","random"],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HslColor, RgbColor } from '../types.js';\n\nconst clampHsl = (hsl: HslColor): HslColor => ({\n h: normalizeHue(hsl.h),\n s: clamp(hsl.s, 0, 100),\n l: clamp(hsl.l, 0, 100),\n alpha: clamp(round(hsl.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHslRaw — callers must destructure immediately, never store the reference.\nconst _hslBuf: HslColor = { h: 0, s: 0, l: 0, alpha: 0 };\n\nexport const rgbToHslRaw = ({ r, g, b, alpha }: RgbColor): HslColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const l = (max + min) / 2;\n let h = 0,\n s = 0;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hslBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hslBuf.s = clamp(s * 100, 0, 100);\n _hslBuf.l = clamp(l * 100, 0, 100);\n _hslBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hslBuf;\n};\n\nexport const rgbToHsl = (rgb: RgbColor): HslColor => {\n const { h, s, l, alpha } = rgbToHslRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), l: round(l, 2), alpha };\n};\n\nconst _hueToRgb = (p: number, q: number, t: number): number => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n};\n\nexport const hslToRgb = ({ h, s, l, alpha }: HslColor): RgbColor => {\n const sn = s / 100,\n ln = l / 100;\n const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;\n const p = 2 * ln - q;\n const hue = (((h % 360) + 360) % 360) / 360;\n return {\n r: _hueToRgb(p, q, hue + 1 / 3) * 255,\n g: _hueToRgb(p, q, hue) * 255,\n b: _hueToRgb(p, q, hue - 1 / 3) * 255,\n alpha,\n };\n};\n\nexport const parseHslObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'l'])) return null;\n const { h, s, l, alpha = 1 } = input as { h: unknown; s: unknown; l: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(l) || !isAnyNumber(alpha)) return null;\n return hslToRgb(clampHsl({ h: sanitize(h), s: sanitize(s), l: sanitize(l), alpha: sanitize(alpha) }));\n};\n\n// Legacy comma form requires `%` on s/l and disallows `none`. Modern space form\n// allows optional `%` and the CSS Color 4 `none` keyword on any channel.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSL_RE = new RegExp(\n `^hsla?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<l_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<l_s>${NUM_OR_NONE})(?<lp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHslString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSL_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null; // legacy syntax has no `none`\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const l = parseNum((g.l_c ?? g.l_s)!);\n const rawA = g.al_c ?? g.al_s;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hslToRgb(clampHsl({ h, s, l, alpha }));\n};\n","import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n sanitize,\n} from '../helpers.js';\nimport type { OklabColor, OklchColor, RgbColor } from '../types.js';\nimport { oklabToRgb, oklabToRgbUnclamped, rgbToOklab } from './oklab.js';\n\nconst oklchToOklab = ({ l, c, h, alpha }: OklchColor): OklabColor => ({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n});\n\nexport const rgbToOklch = (rgb: RgbColor): OklchColor => {\n const { l: ol, a: oa, b: ob, alpha } = rgbToOklab(rgb);\n const C = Math.sqrt(oa * oa + ob * ob);\n const H = (Math.atan2(ob, oa) * 180) / Math.PI;\n // Achromatic threshold on OKLCH scale (0–~0.4): proportionally equivalent to LCH's 0.0015 threshold.\n return { l: ol, c: C, h: C < 0.000004 ? 0 : normalizeHue(H), alpha };\n};\n\nexport const oklchToRgb = (oklch: OklchColor): RgbColor => oklabToRgb(oklchToOklab(oklch));\nconst oklchToRgbUnclamped = (oklch: OklchColor): RgbColor => oklabToRgbUnclamped(oklchToOklab(oklch));\n\nexport const parseOklchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lch' are CIE LCH, not OKLCH — let parseLchObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lch') return null;\n if (!hasKeys(input, ['l', 'c', 'h'])) return null;\n const { l, c, h, alpha = 1 } = input as { l: unknown; c: unknown; h: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(c) || !isAnyNumber(h) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLCH L is always [0, 1]; reject CIE LCH values passed without colorSpace branding\n return oklchToRgbUnclamped({\n l: sanitize(l),\n c: Math.max(0, sanitize(c)),\n h: normalizeHue(sanitize(h)),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLCH_RE = new RegExp(\n `^oklch\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<c>${NUM_OR_NONE})(?<cp>%?)` +\n `\\\\s+(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const C = Math.max(0, g.cp ? parseNum(g.c!) * 0.004 : parseNum(g.c!)); // 100% = 0.4\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const H = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklchToRgbUnclamped({\n l: L,\n c: C,\n h: normalizeHue(H),\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { parseHex } from './colorModels/hex.js';\nimport { parseHslObject, parseHslString } from './colorModels/hsl.js';\nimport { parseOklabObject, parseOklabString } from './colorModels/oklab.js';\nimport { parseOklchObject, parseOklchString } from './colorModels/oklch.js';\nimport { parseRgbObject, parseRgbString } from './colorModels/rgb.js';\nimport type { AnyColor, ColorFormat, ColorParser, RgbColor } from './types.js';\n\nconst stringFormatParsers: [ColorParser, ColorFormat][] = [\n [parseHex, 'hex'],\n [parseRgbString, 'rgb'],\n [parseHslString, 'hsl'],\n [parseOklchString, 'oklch'],\n [parseOklabString, 'oklab'],\n];\n\nconst objectFormatParsers: [ColorParser, ColorFormat][] = [\n [parseRgbObject, 'rgb'],\n [parseHslObject, 'hsl'],\n [parseOklabObject, 'oklab'],\n [parseOklchObject, 'oklch'],\n];\n\nconst builtinStringParsers: ColorParser[] = stringFormatParsers.map(([p]) => p);\nconst builtinObjectParsers: ColorParser[] = objectFormatParsers.map(([p]) => p);\n\nconst defaultParsers: ColorParser[] = [...builtinStringParsers, ...builtinObjectParsers];\nexport const parsers: ColorParser[] = [...defaultParsers];\nexport const pluginFormatParsers: [ColorParser, ColorFormat][] = [];\n\nexport const parse = (input: AnyColor): RgbColor | null => {\n if (input === 'transparent') return { r: 0, g: 0, b: 0, alpha: 0 };\n const builtins = typeof input === 'string' ? builtinStringParsers : builtinObjectParsers;\n for (const parser of builtins) {\n const result = parser(input);\n if (result) return result;\n }\n for (let i = defaultParsers.length; i < parsers.length; i++) {\n const result = parsers[i]!(input);\n if (result) return result;\n }\n return null;\n};\n\n/**\n * Detects the input format (`'hex'`, `'rgb'`, `'hsl'`, `'oklch'`, etc.).\n * Returns `undefined` for unrecognised input. Plugin-registered formats are detected too.\n */\nexport const getFormat = (input: AnyColor): ColorFormat | undefined => {\n if (input === 'transparent') return 'name';\n const typed = typeof input === 'string' ? stringFormatParsers : objectFormatParsers;\n for (const [parser, format] of typed) {\n if (parser(input)) return format;\n }\n for (const [parser, format] of pluginFormatParsers) {\n if (parser(input)) return format;\n }\n return undefined;\n};\n","import { rgbToHex, rgbToHex8 } from './colorModels/hex.js';\nimport { hslToRgb, rgbToHslRaw } from './colorModels/hsl.js';\nimport { linearSrgbToOklab, rgbToOklab } from './colorModels/oklab.js';\nimport { oklchToRgb, rgbToOklch } from './colorModels/oklch.js';\nimport { toGamutSrgbRaw } from './gamut.js';\nimport { clamp, round } from './helpers.js';\nimport { parse, parsers, pluginFormatParsers } from './parse.js';\nimport { srgbFromLinear, srgbToLinear } from './transfer.js';\nimport type { AnyColor, ColorFormat, ColorParser, HslColor, OklabColor, OklchColor, RgbColor } from './types.js';\n\nconst _SENTINEL: unique symbol = Symbol();\n\n/**\n * Color value with parse, format, and manipulation methods.\n * Construct via the `colordx()` helper or `new Colordx(input)`. Instances are immutable —\n * mutators return a new `Colordx`.\n */\nexport class Colordx {\n private readonly _rgb: RgbColor;\n private readonly _valid: boolean;\n\n constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor) {\n if (input === _SENTINEL) {\n this._valid = true;\n this._rgb = _direct!;\n } else if (input instanceof Colordx) {\n this._valid = input._valid;\n this._rgb = input._rgb;\n return;\n } else {\n const parsed = parse(input);\n this._valid = parsed !== null;\n this._rgb = parsed ?? { r: 0, g: 0, b: 0, alpha: 1 };\n }\n // Single chokepoint for alpha precision: parsers and _make() callers may hand us\n // raw floats (e.g. 1/255, 0.1+0.2). Snapping here keeps every formatter consistent.\n this._rgb.alpha = clamp(round(this._rgb.alpha, 3), 0, 1);\n }\n\n private static _make(rgb: RgbColor): Colordx {\n return new Colordx(_SENTINEL, rgb);\n }\n\n /**\n * Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.\n * Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a\n * color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored\n * _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut\n * channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.\n *\n * Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels\n * directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP\n * asymmetries on gamut-boundary colors.\n *\n * A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one\n * channel exactly on 0 or 1 while the others sit where the input's hue landed, so an\n * extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels\n * (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all\n * three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report\n * phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;\n * the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab\n * see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut\n * (P3 / Rec.2020 targets) and pass through untouched.\n */\n static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx {\n const rb = srgbFromLinear(lr) * 255;\n const gb = srgbFromLinear(lg) * 255;\n const bb = srgbFromLinear(lb) * 255;\n return Colordx._make({\n r: rb >= 0 && rb < 0.5 ? 0 : rb > 254.5 && rb <= 255 ? 255 : rb,\n g: gb >= 0 && gb < 0.5 ? 0 : gb > 254.5 && gb <= 255 ? 255 : gb,\n b: bb >= 0 && bb < 0.5 ? 0 : bb > 254.5 && bb <= 255 ? 255 : bb,\n alpha,\n });\n }\n\n /** True when the input parsed as a recognised color. */\n isValid(): boolean {\n return this._valid;\n }\n\n /** Returns sRGB channels rounded to integers in [0, 255], plus alpha in [0, 1]. */\n toRgb(): RgbColor {\n const { r, g, b, alpha } = this._rgb;\n return { r: clamp(round(r), 0, 255), g: clamp(round(g), 0, 255), b: clamp(round(b), 0, 255), alpha };\n }\n\n /** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */\n _rawRgb(): RgbColor {\n return this._rgb;\n }\n\n /**\n * Formats as a CSS `rgb()` / `rgba()` string.\n * Default is CSS Color 4 modern syntax — `rgb(255 0 0 / 0.5)`.\n * Pass `{ legacy: true }` for CSS Color 3 comma syntax (switches to `rgba()` when alpha < 1).\n */\n toRgbString(options?: { legacy?: boolean }): string {\n const { r, g, b, alpha } = this._rgb;\n const ri = clamp(round(r), 0, 255),\n gi = clamp(round(g), 0, 255),\n bi = clamp(round(b), 0, 255);\n if (options?.legacy) {\n return alpha < 1 ? `rgba(${ri}, ${gi}, ${bi}, ${alpha})` : `rgb(${ri}, ${gi}, ${bi})`;\n }\n return alpha < 1 ? `rgb(${ri} ${gi} ${bi} / ${alpha})` : `rgb(${ri} ${gi} ${bi})`;\n }\n\n /** Returns `#rrggbb` (or `#rrggbbaa` when alpha < 1). */\n toHex(): string {\n return rgbToHex(this._rgb);\n }\n\n /** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */\n toHex8(): string {\n return rgbToHex8(this._rgb);\n }\n\n /** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */\n toNumber(): number {\n const { r, g, b } = this._rgb;\n return (clamp(round(r), 0, 255) << 16) | (clamp(round(g), 0, 255) << 8) | clamp(round(b), 0, 255);\n }\n\n /** Returns HSL channels: h in [0, 360), s/l in [0, 100], rounded to `precision` decimals. */\n toHsl(precision = 2): HslColor {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const hr = round(h, precision);\n return { h: hr >= 360 ? 0 : hr, s: round(s, precision), l: round(l, precision), alpha };\n }\n\n /** Formats as a CSS `hsl()` string. */\n toHslString(precision = 2): string {\n const { h, s, l, alpha } = this.toHsl(precision);\n return alpha < 1 ? `hsl(${h} ${s}% ${l}% / ${alpha})` : `hsl(${h} ${s}% ${l}%)`;\n }\n\n /** Returns OKLab channels: L in [0, 1], a/b roughly in [-0.4, 0.4]. */\n toOklab(precision = 5): OklabColor {\n const { l, a, b, alpha } = rgbToOklab(this._rgb);\n return { l: round(l, precision), a: round(a, precision), b: round(b, precision), alpha };\n }\n\n /** Formats as a CSS `oklab()` string. */\n toOklabString(precision = 5): string {\n const { l, a, b, alpha } = this.toOklab(precision);\n return alpha < 1 ? `oklab(${l} ${a} ${b} / ${alpha})` : `oklab(${l} ${a} ${b})`;\n }\n\n /** Returns OKLCh channels: L in [0, 1], C in [0, ~0.4], H in degrees. */\n toOklch(precision = 5): OklchColor {\n const { l, c, h, alpha } = rgbToOklch(this._rgb);\n return { l: round(l, precision), c: round(c, precision), h: round(h, precision), alpha };\n }\n\n /** Formats as a CSS `oklch()` string. Hue is `none` when chroma is 0. */\n toOklchString(precision = 5): string {\n const { l, c, h, alpha } = this.toOklch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `oklch(${l} ${c} ${H} / ${alpha})` : `oklch(${l} ${c} ${H})`;\n }\n\n /** Perceived brightness in [0, 1] using the ITU-R BT.601 weights. */\n brightness(): number {\n const { r, g, b } = this._rgb;\n return round((r * 299 + g * 587 + b * 114) / 255000, 2);\n }\n\n /** True when `brightness()` is below 0.5. */\n isDark(): boolean {\n return this.brightness() < 0.5;\n }\n\n /** True when `brightness()` is at or above 0.5. */\n isLight(): boolean {\n return this.brightness() >= 0.5;\n }\n\n /** Get or set the alpha channel (clamped to [0, 1]). Setter returns a new `Colordx`. */\n alpha(): number;\n alpha(value: number): Colordx;\n alpha(value?: number): number | Colordx {\n if (value === undefined) return this._rgb.alpha;\n return Colordx._make({ ...this._rgb, alpha: round(clamp(value, 0, 1), 3) });\n }\n\n /** Get or set the HSL hue in degrees. Setter returns a new `Colordx`. */\n hue(): number;\n hue(value: number): Colordx;\n hue(value?: number): number | Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n if (value === undefined) {\n const hr = round(h, 2);\n return hr >= 360 ? 0 : hr;\n }\n return Colordx._make(hslToRgb({ h: value, s, l, alpha }));\n }\n\n /** Get or set the OKLCh lightness in [0, 1]. Setter returns a new `Colordx`. */\n lightness(): number;\n lightness(value: number): Colordx;\n lightness(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.l;\n return Colordx._make(oklchToRgb({ ...oklch, l: clamp(value, 0, 1) }));\n }\n\n /** Get or set the OKLCh chroma in [0, 0.4]. Setter returns a new `Colordx`. */\n chroma(): number;\n chroma(value: number): Colordx;\n chroma(value?: number): number | Colordx {\n const oklch = this.toOklch();\n if (value === undefined) return oklch.c;\n return Colordx._make(oklchToRgb({ ...oklch, c: clamp(value, 0, 0.4) }));\n }\n\n /**\n * Lightens by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to L.\n * Pass `{ relative: true }` to multiply L by `1 + amount` instead.\n */\n lighten(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newL = options?.relative ? l * (1 + amount) : l + amount * 100;\n return Colordx._make(hslToRgb({ h, s, l: clamp(newL, 0, 100), alpha }));\n }\n\n /** Inverse of `lighten`. */\n darken(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.lighten(-amount, options);\n }\n\n /**\n * Saturates by `amount` (default 0.1) in HSL. Absolute by default — adds `amount * 100` to S.\n * Pass `{ relative: true }` to multiply S by `1 + amount` instead.\n */\n saturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n const { h, s, l, alpha } = rgbToHslRaw(this._rgb);\n const newS = options?.relative ? s * (1 + amount) : s + amount * 100;\n return Colordx._make(hslToRgb({ h, s: clamp(newS, 0, 100), l, alpha }));\n }\n\n /** Inverse of `saturate`. */\n desaturate(amount = 0.1, options?: { relative?: boolean }): Colordx {\n return this.saturate(-amount, options);\n }\n\n /** Drops saturation to zero. */\n grayscale(): Colordx {\n return this.desaturate(1);\n }\n\n /** Inverts each RGB channel (255 − channel). */\n invert(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n return Colordx._make({ r: 255 - r, g: 255 - g, b: 255 - b, alpha });\n }\n\n /** Shifts the HSL hue by `amount` degrees (default 15). */\n rotate(amount = 15): Colordx {\n return this.hue(this.hue() + amount);\n }\n\n /** True when both colors round to the same RGBA tuple. */\n isEqual(color: AnyColor): boolean {\n const other = new Colordx(color).toRgb();\n const self = this.toRgb();\n return self.r === other.r && self.g === other.g && self.b === other.b && self.alpha === other.alpha;\n }\n\n /** Returns the hex form (alias for `toHex()`). */\n toString(): string {\n return this.toHex();\n }\n\n /**\n * Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].\n * Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.\n * Hue and lightness may shift noticeably for colors far outside sRGB.\n * Returns `this` when already in gamut.\n */\n clampSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n return Colordx._make({\n r: clamp(r, 0, 255),\n g: clamp(g, 0, 255),\n b: clamp(b, 0, 255),\n alpha,\n });\n }\n\n /**\n * Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm\n * (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.\n * Useful when hue stability matters — design tokens, palettes, color pickers.\n * Returns `this` when already in gamut.\n */\n mapSrgb(): Colordx {\n const { r, g, b, alpha } = this._rgb;\n if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) return this;\n const [lRaw, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n // The gamma-encoded round-trip drifts L by ~1e-9 at boundaries; snap so that inputs with\n // exact L=0 or L=1 hit the same white/black shortcut the static gamut map uses.\n const l = lRaw > 1 - 1e-7 ? 1 : lRaw < 1e-7 ? 0 : lRaw;\n const mapped = toGamutSrgbRaw({ l, a, b: bv, alpha });\n if (mapped === null) return this;\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n }\n\n /**\n * Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.\n * Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.\n */\n static toGamutSrgb: (input: AnyColor) => Colordx;\n}\n\n/**\n * Plugin signature. Receives the `Colordx` class plus the parser arrays so a plugin\n * can register conversions (by adding instance methods) and parsers (by pushing onto the arrays).\n */\nexport type Plugin = (\n ColordxClass: typeof Colordx,\n parsers: ColorParser[],\n formatParsers: [ColorParser, ColorFormat][]\n) => void;\n\n/** Constructs a `Colordx` from any supported color input. Existing instances pass through. */\nexport const colordx = (input: AnyColor | Colordx): Colordx => new Colordx(input);\n\n/** Emits an 8-digit `#rrggbbaa` hex for any color input. Shortcut for `colordx(c).toHex8()`. */\nexport const toHex8 = (input: AnyColor | Colordx): string => new Colordx(input).toHex8();\n\n/** Registers plugins. Each plugin is called once with the `Colordx` class and parser arrays. */\nexport const extend = (plugins: Plugin[]): void => {\n plugins.forEach((plugin) => plugin(Colordx, parsers, pluginFormatParsers));\n};\n\n/**\n * Picks the candidate closest to `color` by Euclidean distance in OKLab.\n * Throws when `candidates` is empty.\n */\nexport const nearest = <T extends AnyColor>(color: AnyColor, candidates: T[]): T => {\n if (candidates.length === 0) throw new Error('nearest: candidates array must not be empty');\n const { l: l1, a: a1, b: b1 } = new Colordx(color).toOklab();\n let minDist = Infinity;\n let result = candidates[0] as T;\n for (const candidate of candidates) {\n const { l: l2, a: a2, b: b2 } = new Colordx(candidate).toOklab();\n const dist = (l2 - l1) ** 2 + (a2 - a1) ** 2 + (b2 - b1) ** 2;\n if (dist < minDist) {\n minDist = dist;\n result = candidate;\n }\n }\n return result;\n};\n\n/** Returns a random opaque sRGB color. */\nexport const random = (): Colordx =>\n new Colordx({\n r: Math.round(Math.random() * 255),\n g: Math.round(Math.random() * 255),\n b: Math.round(Math.random() * 255),\n alpha: 1,\n });\n\nColordx.toGamutSrgb = (input: AnyColor): Colordx => {\n const mapped = toGamutSrgbRaw(input);\n if (mapped === null) return new Colordx(input);\n const [mr, mg, mb] = mapped.linear;\n return Colordx._makeFromLinearSrgb(mr, mg, mb, mapped.alpha);\n};\n"]}

@@ -1,2 +0,2 @@

'use strict';var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs'),chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var f={Rsco:.2126729,Gsco:.7151522,Bsco:.072175},a={normBG:.56,normTXT:.57,revBG:.65,revTXT:.62,scale:1.14,loClip:.1,offset:.027,blkThrs:.022,blkClmp:1.414,deltaYmin:5e-4};function A(e,t,n){let o=l=>(l/255)**2.4,r=f.Rsco*o(e)+f.Gsco*o(t)+f.Bsco*o(n);return r>a.blkThrs?r:r+(a.blkThrs-r)**a.blkClmp}function p(e,t){let n=A(e.r,e.g,e.b),o=A(t.r,t.g,t.b);if(Math.abs(o-n)<a.deltaYmin)return 0;if(o>n){let r=(o**a.normBG-n**a.normTXT)*a.scale;return r<a.loClip?0:(r-a.offset)*100}else {let r=(o**a.revBG-n**a.revTXT)*a.scale;return r>-0.1?0:(r+a.offset)*100}}var h=e=>{e.prototype.luminance=function(){let{r:t,g:n,b:o}=this._rawRgb();return chunkYISEJCI6_cjs.b(.2126*chunkX5FCFNQN_cjs.a(t/255)+.7152*chunkX5FCFNQN_cjs.a(n/255)+.0722*chunkX5FCFNQN_cjs.a(o/255),4)},e.prototype.contrast=function(t="#fff"){let n=new e(t),o=n._rawRgb(),r=this._rawRgb(),s=(r.alpha<1?new e({r:r.alpha*r.r+(1-r.alpha)*o.r,g:r.alpha*r.g+(1-r.alpha)*o.g,b:r.alpha*r.b+(1-r.alpha)*o.b,alpha:1}):this).luminance(),c=n.luminance(),i=Math.max(s,c),m=Math.min(s,c);return chunkYISEJCI6_cjs.b((i+.05)/(m+.05),2)},e.prototype.apcaContrast=function(t="#fff"){let n=new e(t).toRgb(),o=this.toRgb(),r=o.alpha<1?{r:o.alpha*o.r+(1-o.alpha)*n.r,g:o.alpha*o.g+(1-o.alpha)*n.g,b:o.alpha*o.b+(1-o.alpha)*n.b}:o;return Math.round(p(r,n)*10)/10},e.prototype.isReadableApca=function(t="#fff",n={}){let{size:o="normal"}=n,r=Math.abs(this.apcaContrast(t));return o==="large"?r>=60:r>=75},e.prototype.readableScore=function(t="#fff"){let n=this.contrast(t);return n>=7?"AAA":n>=4.5?"AA":n>=3?"AA large":"fail"},e.prototype.isReadable=function(t="#fff",n={}){let{level:o="AA",size:r="normal"}=n,l=this.contrast(t);return o==="AAA"?r==="large"?l>=4.5:l>=7:r==="large"?l>=3:l>=4.5},e.prototype.minReadable=function(t="#fff"){let n=new e(t).luminance(),o=(n+.05)/.05,r=1.05/(n+.05),l=o>=r,s=i=>l?i.darken(.01):i.lighten(.01);if(this.contrast(t)>=4.5)return this;let c=s(this);for(let i=1;i<100&&!(c.contrast(t)>=4.5);i++)c=s(c);return c};},y=h;module.exports=y;//# sourceMappingURL=a11y.cjs.map
'use strict';var chunkINDSIUQQ_cjs=require('../chunk-INDSIUQQ.cjs'),chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var f={Rsco:.2126729,Gsco:.7151522,Bsco:.072175},a={normBG:.56,normTXT:.57,revBG:.65,revTXT:.62,scale:1.14,loClip:.1,offset:.027,blkThrs:.022,blkClmp:1.414,deltaYmin:5e-4};function A(e,t,n){let o=l=>(l/255)**2.4,r=f.Rsco*o(e)+f.Gsco*o(t)+f.Bsco*o(n);return r>a.blkThrs?r:r+(a.blkThrs-r)**a.blkClmp}function p(e,t){let n=A(e.r,e.g,e.b),o=A(t.r,t.g,t.b);if(Math.abs(o-n)<a.deltaYmin)return 0;if(o>n){let r=(o**a.normBG-n**a.normTXT)*a.scale;return r<a.loClip?0:(r-a.offset)*100}else {let r=(o**a.revBG-n**a.revTXT)*a.scale;return r>-0.1?0:(r+a.offset)*100}}var h=e=>{e.prototype.luminance=function(){let{r:t,g:n,b:o}=this._rawRgb();return chunkYISEJCI6_cjs.b(.2126*chunkINDSIUQQ_cjs.a(t/255)+.7152*chunkINDSIUQQ_cjs.a(n/255)+.0722*chunkINDSIUQQ_cjs.a(o/255),4)},e.prototype.contrast=function(t="#fff"){let n=new e(t),o=n._rawRgb(),r=this._rawRgb(),s=(r.alpha<1?new e({r:r.alpha*r.r+(1-r.alpha)*o.r,g:r.alpha*r.g+(1-r.alpha)*o.g,b:r.alpha*r.b+(1-r.alpha)*o.b,alpha:1}):this).luminance(),c=n.luminance(),i=Math.max(s,c),m=Math.min(s,c);return chunkYISEJCI6_cjs.b((i+.05)/(m+.05),2)},e.prototype.apcaContrast=function(t="#fff"){let n=new e(t).toRgb(),o=this.toRgb(),r=o.alpha<1?{r:o.alpha*o.r+(1-o.alpha)*n.r,g:o.alpha*o.g+(1-o.alpha)*n.g,b:o.alpha*o.b+(1-o.alpha)*n.b}:o;return Math.round(p(r,n)*10)/10},e.prototype.isReadableApca=function(t="#fff",n={}){let{size:o="normal"}=n,r=Math.abs(this.apcaContrast(t));return o==="large"?r>=60:r>=75},e.prototype.readableScore=function(t="#fff"){let n=this.contrast(t);return n>=7?"AAA":n>=4.5?"AA":n>=3?"AA large":"fail"},e.prototype.isReadable=function(t="#fff",n={}){let{level:o="AA",size:r="normal"}=n,l=this.contrast(t);return o==="AAA"?r==="large"?l>=4.5:l>=7:r==="large"?l>=3:l>=4.5},e.prototype.minReadable=function(t="#fff"){let n=new e(t).luminance(),o=(n+.05)/.05,r=1.05/(n+.05),l=o>=r,s=i=>l?i.darken(.01):i.lighten(.01);if(this.contrast(t)>=4.5)return this;let c=s(this);for(let i=1;i<100&&!(c.contrast(t)>=4.5);i++)c=s(c);return c};},y=h;module.exports=y;//# sourceMappingURL=a11y.cjs.map
//# sourceMappingURL=a11y.cjs.map

@@ -1,2 +0,2 @@

import { A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {a as a$1}from'../chunk-FXCFKFXK.mjs';import {b}from'../chunk-IOXRZECH.mjs';var f={Rsco:.2126729,Gsco:.7151522,Bsco:.072175},a={normBG:.56,normTXT:.57,revBG:.65,revTXT:.62,scale:1.14,loClip:.1,offset:.027,blkThrs:.022,blkClmp:1.414,deltaYmin:5e-4};function A(e,t,n){let o=l=>(l/255)**2.4,r=f.Rsco*o(e)+f.Gsco*o(t)+f.Bsco*o(n);return r>a.blkThrs?r:r+(a.blkThrs-r)**a.blkClmp}function p(e,t){let n=A(e.r,e.g,e.b),o=A(t.r,t.g,t.b);if(Math.abs(o-n)<a.deltaYmin)return 0;if(o>n){let r=(o**a.normBG-n**a.normTXT)*a.scale;return r<a.loClip?0:(r-a.offset)*100}else {let r=(o**a.revBG-n**a.revTXT)*a.scale;return r>-0.1?0:(r+a.offset)*100}}var h=e=>{e.prototype.luminance=function(){let{r:t,g:n,b:o}=this._rawRgb();return b(.2126*a$1(t/255)+.7152*a$1(n/255)+.0722*a$1(o/255),4)},e.prototype.contrast=function(t="#fff"){let n=new e(t),o=n._rawRgb(),r=this._rawRgb(),s=(r.alpha<1?new e({r:r.alpha*r.r+(1-r.alpha)*o.r,g:r.alpha*r.g+(1-r.alpha)*o.g,b:r.alpha*r.b+(1-r.alpha)*o.b,alpha:1}):this).luminance(),c=n.luminance(),i=Math.max(s,c),m=Math.min(s,c);return b((i+.05)/(m+.05),2)},e.prototype.apcaContrast=function(t="#fff"){let n=new e(t).toRgb(),o=this.toRgb(),r=o.alpha<1?{r:o.alpha*o.r+(1-o.alpha)*n.r,g:o.alpha*o.g+(1-o.alpha)*n.g,b:o.alpha*o.b+(1-o.alpha)*n.b}:o;return Math.round(p(r,n)*10)/10},e.prototype.isReadableApca=function(t="#fff",n={}){let{size:o="normal"}=n,r=Math.abs(this.apcaContrast(t));return o==="large"?r>=60:r>=75},e.prototype.readableScore=function(t="#fff"){let n=this.contrast(t);return n>=7?"AAA":n>=4.5?"AA":n>=3?"AA large":"fail"},e.prototype.isReadable=function(t="#fff",n={}){let{level:o="AA",size:r="normal"}=n,l=this.contrast(t);return o==="AAA"?r==="large"?l>=4.5:l>=7:r==="large"?l>=3:l>=4.5},e.prototype.minReadable=function(t="#fff"){let n=new e(t).luminance(),o=(n+.05)/.05,r=1.05/(n+.05),l=o>=r,s=i=>l?i.darken(.01):i.lighten(.01);if(this.contrast(t)>=4.5)return this;let c=s(this);for(let i=1;i<100&&!(c.contrast(t)>=4.5);i++)c=s(c);return c};},y=h;export{y as default};//# sourceMappingURL=a11y.mjs.map
import {a as a$1}from'../chunk-YLJRINFM.mjs';import {b}from'../chunk-IOXRZECH.mjs';var f={Rsco:.2126729,Gsco:.7151522,Bsco:.072175},a={normBG:.56,normTXT:.57,revBG:.65,revTXT:.62,scale:1.14,loClip:.1,offset:.027,blkThrs:.022,blkClmp:1.414,deltaYmin:5e-4};function A(e,t,n){let o=l=>(l/255)**2.4,r=f.Rsco*o(e)+f.Gsco*o(t)+f.Bsco*o(n);return r>a.blkThrs?r:r+(a.blkThrs-r)**a.blkClmp}function p(e,t){let n=A(e.r,e.g,e.b),o=A(t.r,t.g,t.b);if(Math.abs(o-n)<a.deltaYmin)return 0;if(o>n){let r=(o**a.normBG-n**a.normTXT)*a.scale;return r<a.loClip?0:(r-a.offset)*100}else {let r=(o**a.revBG-n**a.revTXT)*a.scale;return r>-0.1?0:(r+a.offset)*100}}var h=e=>{e.prototype.luminance=function(){let{r:t,g:n,b:o}=this._rawRgb();return b(.2126*a$1(t/255)+.7152*a$1(n/255)+.0722*a$1(o/255),4)},e.prototype.contrast=function(t="#fff"){let n=new e(t),o=n._rawRgb(),r=this._rawRgb(),s=(r.alpha<1?new e({r:r.alpha*r.r+(1-r.alpha)*o.r,g:r.alpha*r.g+(1-r.alpha)*o.g,b:r.alpha*r.b+(1-r.alpha)*o.b,alpha:1}):this).luminance(),c=n.luminance(),i=Math.max(s,c),m=Math.min(s,c);return b((i+.05)/(m+.05),2)},e.prototype.apcaContrast=function(t="#fff"){let n=new e(t).toRgb(),o=this.toRgb(),r=o.alpha<1?{r:o.alpha*o.r+(1-o.alpha)*n.r,g:o.alpha*o.g+(1-o.alpha)*n.g,b:o.alpha*o.b+(1-o.alpha)*n.b}:o;return Math.round(p(r,n)*10)/10},e.prototype.isReadableApca=function(t="#fff",n={}){let{size:o="normal"}=n,r=Math.abs(this.apcaContrast(t));return o==="large"?r>=60:r>=75},e.prototype.readableScore=function(t="#fff"){let n=this.contrast(t);return n>=7?"AAA":n>=4.5?"AA":n>=3?"AA large":"fail"},e.prototype.isReadable=function(t="#fff",n={}){let{level:o="AA",size:r="normal"}=n,l=this.contrast(t);return o==="AAA"?r==="large"?l>=4.5:l>=7:r==="large"?l>=3:l>=4.5},e.prototype.minReadable=function(t="#fff"){let n=new e(t).luminance(),o=(n+.05)/.05,r=1.05/(n+.05),l=o>=r,s=i=>l?i.darken(.01):i.lighten(.01);if(this.contrast(t)>=4.5)return this;let c=s(this);for(let i=1;i<100&&!(c.contrast(t)>=4.5);i++)c=s(c);return c};},y=h;export{y as default};//# sourceMappingURL=a11y.mjs.map
//# sourceMappingURL=a11y.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../../src/colorModels/cmyk.ts","../../src/plugins/cmyk.ts"],"names":["clampCmyk","cmyk","clamp","rgbToCmykRaw","g","b","alpha","k","cmykToRgb","c","m","y","clampRgb","parseCmykObject","input","isObject","hasKeys","isAnyNumber","sanitize","CMYK_RE","NUM_OR_NONE","parseCmykString","toPercent","v","pct","parseNum","ColordxClass","parsers","formatParsers","precision","round","cmyk_default"],"mappings":"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","file":"cmyk.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport type { CmykColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nconst clampCmyk = (cmyk: CmykColor): CmykColor => ({\n c: clamp(cmyk.c, 0, 100),\n m: clamp(cmyk.m, 0, 100),\n y: clamp(cmyk.y, 0, 100),\n k: clamp(cmyk.k, 0, 100),\n alpha: clamp(cmyk.alpha, 0, 1),\n});\n\nexport const rgbToCmykRaw = ({ r, g, b, alpha }: RgbColor): CmykColor => {\n const k = 1 - Math.max(r / 255, g / 255, b / 255);\n if (k === 1) return { c: 0, m: 0, y: 0, k: 100, alpha };\n return {\n c: ((1 - r / 255 - k) / (1 - k)) * 100,\n m: ((1 - g / 255 - k) / (1 - k)) * 100,\n y: ((1 - b / 255 - k) / (1 - k)) * 100,\n k: k * 100,\n alpha,\n };\n};\n\nexport const rgbToCmyk = (rgb: RgbColor): CmykColor => {\n const { c, m, y, k, alpha } = rgbToCmykRaw(rgb);\n return { c: round(c, 2), m: round(m, 2), y: round(y, 2), k: round(k, 2), alpha };\n};\n\nexport const cmykToRgb = ({ c, m, y, k, alpha }: CmykColor): RgbColor =>\n clampRgb({\n r: 255 * (1 - c / 100) * (1 - k / 100),\n g: 255 * (1 - m / 100) * (1 - k / 100),\n b: 255 * (1 - y / 100) * (1 - k / 100),\n alpha,\n });\n\nexport const parseCmykObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['c', 'm', 'y', 'k'])) return null;\n const { c, m, y, k, alpha = 1 } = input as { c: unknown; m: unknown; y: unknown; k: unknown; alpha?: unknown };\n if (!isAnyNumber(c) || !isAnyNumber(m) || !isAnyNumber(y) || !isAnyNumber(k) || !isAnyNumber(alpha)) return null;\n return cmykToRgb(\n clampCmyk({\n c: sanitize(c),\n m: sanitize(m),\n y: sanitize(y),\n k: sanitize(k),\n alpha: sanitize(alpha),\n })\n );\n};\n\nconst CMYK_RE = new RegExp(\n `^device-cmyk\\\\(\\\\s*(?<c>${NUM_OR_NONE})(?<cp>%?)\\\\s+(?<m>${NUM_OR_NONE})(?<mp>%?)` +\n `\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)\\\\s+(?<k>${NUM_OR_NONE})(?<kp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseCmykString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = CMYK_RE.exec(input.trim())?.groups;\n if (!g) return null;\n // Numbers are treated as 0-1 fractions, percentages as 0-100; normalize both to the internal 0-100 range.\n const toPercent = (v: string, pct: string) => parseNum(v) * (pct ? 1 : 100);\n return cmykToRgb(\n clampCmyk({\n c: toPercent(g.c!, g.cp!),\n m: toPercent(g.m!, g.mp!),\n y: toPercent(g.y!, g.yp!),\n k: toPercent(g.k!, g.kp!),\n alpha: g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1),\n })\n );\n};\n","import { parseCmykObject, parseCmykString, rgbToCmykRaw } from '../colorModels/cmyk.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { CmykColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toCmyk(precision?: number): CmykColor;\n toCmykString(precision?: number): string;\n }\n}\n\nconst cmyk: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toCmyk = function (precision = 2) {\n const { c, m, y, k, alpha } = rgbToCmykRaw(this._rawRgb());\n return { c: round(c, precision), m: round(m, precision), y: round(y, precision), k: round(k, precision), alpha };\n };\n ColordxClass.prototype.toCmykString = function (precision = 2) {\n const { c, m, y, k, alpha } = this.toCmyk(precision);\n return alpha < 1 ? `device-cmyk(${c}% ${m}% ${y}% ${k}% / ${alpha})` : `device-cmyk(${c}% ${m}% ${y}% ${k}%)`;\n };\n parsers.push(parseCmykObject, parseCmykString);\n formatParsers.push([parseCmykObject, 'cmyk'], [parseCmykString, 'cmyk']);\n};\n\nexport default cmyk;\n"]}
{"version":3,"sources":["../../src/colorModels/cmyk.ts","../../src/plugins/cmyk.ts"],"names":["clampCmyk","cmyk","clamp","rgbToCmykRaw","g","b","alpha","k","cmykToRgb","c","m","y","clampRgb","parseCmykObject","input","isObject","hasKeys","isAnyNumber","sanitize","CMYK_RE","NUM_OR_NONE","parseCmykString","toPercent","v","pct","parseNum","ColordxClass","parsers","formatParsers","precision","round","cmyk_default"],"mappings":"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","file":"cmyk.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport type { CmykColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nconst clampCmyk = (cmyk: CmykColor): CmykColor => ({\n c: clamp(cmyk.c, 0, 100),\n m: clamp(cmyk.m, 0, 100),\n y: clamp(cmyk.y, 0, 100),\n k: clamp(cmyk.k, 0, 100),\n alpha: clamp(cmyk.alpha, 0, 1),\n});\n\nexport const rgbToCmykRaw = ({ r, g, b, alpha }: RgbColor): CmykColor => {\n const k = 1 - Math.max(r / 255, g / 255, b / 255);\n if (k === 1) return { c: 0, m: 0, y: 0, k: 100, alpha };\n return {\n c: ((1 - r / 255 - k) / (1 - k)) * 100,\n m: ((1 - g / 255 - k) / (1 - k)) * 100,\n y: ((1 - b / 255 - k) / (1 - k)) * 100,\n k: k * 100,\n alpha,\n };\n};\n\nexport const rgbToCmyk = (rgb: RgbColor): CmykColor => {\n const { c, m, y, k, alpha } = rgbToCmykRaw(rgb);\n return { c: round(c, 2), m: round(m, 2), y: round(y, 2), k: round(k, 2), alpha };\n};\n\nconst cmykToRgb = ({ c, m, y, k, alpha }: CmykColor): RgbColor =>\n clampRgb({\n r: 255 * (1 - c / 100) * (1 - k / 100),\n g: 255 * (1 - m / 100) * (1 - k / 100),\n b: 255 * (1 - y / 100) * (1 - k / 100),\n alpha,\n });\n\nexport const parseCmykObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['c', 'm', 'y', 'k'])) return null;\n const { c, m, y, k, alpha = 1 } = input as { c: unknown; m: unknown; y: unknown; k: unknown; alpha?: unknown };\n if (!isAnyNumber(c) || !isAnyNumber(m) || !isAnyNumber(y) || !isAnyNumber(k) || !isAnyNumber(alpha)) return null;\n return cmykToRgb(\n clampCmyk({\n c: sanitize(c),\n m: sanitize(m),\n y: sanitize(y),\n k: sanitize(k),\n alpha: sanitize(alpha),\n })\n );\n};\n\nconst CMYK_RE = new RegExp(\n `^device-cmyk\\\\(\\\\s*(?<c>${NUM_OR_NONE})(?<cp>%?)\\\\s+(?<m>${NUM_OR_NONE})(?<mp>%?)` +\n `\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)\\\\s+(?<k>${NUM_OR_NONE})(?<kp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseCmykString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = CMYK_RE.exec(input.trim())?.groups;\n if (!g) return null;\n // Numbers are treated as 0-1 fractions, percentages as 0-100; normalize both to the internal 0-100 range.\n const toPercent = (v: string, pct: string) => parseNum(v) * (pct ? 1 : 100);\n return cmykToRgb(\n clampCmyk({\n c: toPercent(g.c!, g.cp!),\n m: toPercent(g.m!, g.mp!),\n y: toPercent(g.y!, g.yp!),\n k: toPercent(g.k!, g.kp!),\n alpha: g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1),\n })\n );\n};\n","import { parseCmykObject, parseCmykString, rgbToCmykRaw } from '../colorModels/cmyk.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { CmykColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toCmyk(precision?: number): CmykColor;\n toCmykString(precision?: number): string;\n }\n}\n\nconst cmyk: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toCmyk = function (precision = 2) {\n const { c, m, y, k, alpha } = rgbToCmykRaw(this._rawRgb());\n return { c: round(c, precision), m: round(m, precision), y: round(y, precision), k: round(k, precision), alpha };\n };\n ColordxClass.prototype.toCmykString = function (precision = 2) {\n const { c, m, y, k, alpha } = this.toCmyk(precision);\n return alpha < 1 ? `device-cmyk(${c}% ${m}% ${y}% ${k}% / ${alpha})` : `device-cmyk(${c}% ${m}% ${y}% ${k}%)`;\n };\n parsers.push(parseCmykObject, parseCmykString);\n formatParsers.push([parseCmykObject, 'cmyk'], [parseCmykString, 'cmyk']);\n};\n\nexport default cmyk;\n"]}

@@ -1,2 +0,2 @@

import { a as CmykColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { a as CmykColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { a as CmykColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { a as CmykColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,1 +0,1 @@

{"version":3,"sources":["../../src/colorModels/cmyk.ts","../../src/plugins/cmyk.ts"],"names":["clampCmyk","cmyk","clamp","rgbToCmykRaw","g","b","alpha","k","cmykToRgb","c","m","y","clampRgb","parseCmykObject","input","isObject","hasKeys","isAnyNumber","sanitize","CMYK_RE","NUM_OR_NONE","parseCmykString","toPercent","v","pct","parseNum","ColordxClass","parsers","formatParsers","precision","round","cmyk_default"],"mappings":"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","file":"cmyk.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport type { CmykColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nconst clampCmyk = (cmyk: CmykColor): CmykColor => ({\n c: clamp(cmyk.c, 0, 100),\n m: clamp(cmyk.m, 0, 100),\n y: clamp(cmyk.y, 0, 100),\n k: clamp(cmyk.k, 0, 100),\n alpha: clamp(cmyk.alpha, 0, 1),\n});\n\nexport const rgbToCmykRaw = ({ r, g, b, alpha }: RgbColor): CmykColor => {\n const k = 1 - Math.max(r / 255, g / 255, b / 255);\n if (k === 1) return { c: 0, m: 0, y: 0, k: 100, alpha };\n return {\n c: ((1 - r / 255 - k) / (1 - k)) * 100,\n m: ((1 - g / 255 - k) / (1 - k)) * 100,\n y: ((1 - b / 255 - k) / (1 - k)) * 100,\n k: k * 100,\n alpha,\n };\n};\n\nexport const rgbToCmyk = (rgb: RgbColor): CmykColor => {\n const { c, m, y, k, alpha } = rgbToCmykRaw(rgb);\n return { c: round(c, 2), m: round(m, 2), y: round(y, 2), k: round(k, 2), alpha };\n};\n\nexport const cmykToRgb = ({ c, m, y, k, alpha }: CmykColor): RgbColor =>\n clampRgb({\n r: 255 * (1 - c / 100) * (1 - k / 100),\n g: 255 * (1 - m / 100) * (1 - k / 100),\n b: 255 * (1 - y / 100) * (1 - k / 100),\n alpha,\n });\n\nexport const parseCmykObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['c', 'm', 'y', 'k'])) return null;\n const { c, m, y, k, alpha = 1 } = input as { c: unknown; m: unknown; y: unknown; k: unknown; alpha?: unknown };\n if (!isAnyNumber(c) || !isAnyNumber(m) || !isAnyNumber(y) || !isAnyNumber(k) || !isAnyNumber(alpha)) return null;\n return cmykToRgb(\n clampCmyk({\n c: sanitize(c),\n m: sanitize(m),\n y: sanitize(y),\n k: sanitize(k),\n alpha: sanitize(alpha),\n })\n );\n};\n\nconst CMYK_RE = new RegExp(\n `^device-cmyk\\\\(\\\\s*(?<c>${NUM_OR_NONE})(?<cp>%?)\\\\s+(?<m>${NUM_OR_NONE})(?<mp>%?)` +\n `\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)\\\\s+(?<k>${NUM_OR_NONE})(?<kp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseCmykString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = CMYK_RE.exec(input.trim())?.groups;\n if (!g) return null;\n // Numbers are treated as 0-1 fractions, percentages as 0-100; normalize both to the internal 0-100 range.\n const toPercent = (v: string, pct: string) => parseNum(v) * (pct ? 1 : 100);\n return cmykToRgb(\n clampCmyk({\n c: toPercent(g.c!, g.cp!),\n m: toPercent(g.m!, g.mp!),\n y: toPercent(g.y!, g.yp!),\n k: toPercent(g.k!, g.kp!),\n alpha: g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1),\n })\n );\n};\n","import { parseCmykObject, parseCmykString, rgbToCmykRaw } from '../colorModels/cmyk.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { CmykColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toCmyk(precision?: number): CmykColor;\n toCmykString(precision?: number): string;\n }\n}\n\nconst cmyk: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toCmyk = function (precision = 2) {\n const { c, m, y, k, alpha } = rgbToCmykRaw(this._rawRgb());\n return { c: round(c, precision), m: round(m, precision), y: round(y, precision), k: round(k, precision), alpha };\n };\n ColordxClass.prototype.toCmykString = function (precision = 2) {\n const { c, m, y, k, alpha } = this.toCmyk(precision);\n return alpha < 1 ? `device-cmyk(${c}% ${m}% ${y}% ${k}% / ${alpha})` : `device-cmyk(${c}% ${m}% ${y}% ${k}%)`;\n };\n parsers.push(parseCmykObject, parseCmykString);\n formatParsers.push([parseCmykObject, 'cmyk'], [parseCmykString, 'cmyk']);\n};\n\nexport default cmyk;\n"]}
{"version":3,"sources":["../../src/colorModels/cmyk.ts","../../src/plugins/cmyk.ts"],"names":["clampCmyk","cmyk","clamp","rgbToCmykRaw","g","b","alpha","k","cmykToRgb","c","m","y","clampRgb","parseCmykObject","input","isObject","hasKeys","isAnyNumber","sanitize","CMYK_RE","NUM_OR_NONE","parseCmykString","toPercent","v","pct","parseNum","ColordxClass","parsers","formatParsers","precision","round","cmyk_default"],"mappings":"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","file":"cmyk.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport type { CmykColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nconst clampCmyk = (cmyk: CmykColor): CmykColor => ({\n c: clamp(cmyk.c, 0, 100),\n m: clamp(cmyk.m, 0, 100),\n y: clamp(cmyk.y, 0, 100),\n k: clamp(cmyk.k, 0, 100),\n alpha: clamp(cmyk.alpha, 0, 1),\n});\n\nexport const rgbToCmykRaw = ({ r, g, b, alpha }: RgbColor): CmykColor => {\n const k = 1 - Math.max(r / 255, g / 255, b / 255);\n if (k === 1) return { c: 0, m: 0, y: 0, k: 100, alpha };\n return {\n c: ((1 - r / 255 - k) / (1 - k)) * 100,\n m: ((1 - g / 255 - k) / (1 - k)) * 100,\n y: ((1 - b / 255 - k) / (1 - k)) * 100,\n k: k * 100,\n alpha,\n };\n};\n\nexport const rgbToCmyk = (rgb: RgbColor): CmykColor => {\n const { c, m, y, k, alpha } = rgbToCmykRaw(rgb);\n return { c: round(c, 2), m: round(m, 2), y: round(y, 2), k: round(k, 2), alpha };\n};\n\nconst cmykToRgb = ({ c, m, y, k, alpha }: CmykColor): RgbColor =>\n clampRgb({\n r: 255 * (1 - c / 100) * (1 - k / 100),\n g: 255 * (1 - m / 100) * (1 - k / 100),\n b: 255 * (1 - y / 100) * (1 - k / 100),\n alpha,\n });\n\nexport const parseCmykObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['c', 'm', 'y', 'k'])) return null;\n const { c, m, y, k, alpha = 1 } = input as { c: unknown; m: unknown; y: unknown; k: unknown; alpha?: unknown };\n if (!isAnyNumber(c) || !isAnyNumber(m) || !isAnyNumber(y) || !isAnyNumber(k) || !isAnyNumber(alpha)) return null;\n return cmykToRgb(\n clampCmyk({\n c: sanitize(c),\n m: sanitize(m),\n y: sanitize(y),\n k: sanitize(k),\n alpha: sanitize(alpha),\n })\n );\n};\n\nconst CMYK_RE = new RegExp(\n `^device-cmyk\\\\(\\\\s*(?<c>${NUM_OR_NONE})(?<cp>%?)\\\\s+(?<m>${NUM_OR_NONE})(?<mp>%?)` +\n `\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)\\\\s+(?<k>${NUM_OR_NONE})(?<kp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseCmykString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = CMYK_RE.exec(input.trim())?.groups;\n if (!g) return null;\n // Numbers are treated as 0-1 fractions, percentages as 0-100; normalize both to the internal 0-100 range.\n const toPercent = (v: string, pct: string) => parseNum(v) * (pct ? 1 : 100);\n return cmykToRgb(\n clampCmyk({\n c: toPercent(g.c!, g.cp!),\n m: toPercent(g.m!, g.mp!),\n y: toPercent(g.y!, g.yp!),\n k: toPercent(g.k!, g.kp!),\n alpha: g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1),\n })\n );\n};\n","import { parseCmykObject, parseCmykString, rgbToCmykRaw } from '../colorModels/cmyk.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { CmykColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toCmyk(precision?: number): CmykColor;\n toCmykString(precision?: number): string;\n }\n}\n\nconst cmyk: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toCmyk = function (precision = 2) {\n const { c, m, y, k, alpha } = rgbToCmykRaw(this._rawRgb());\n return { c: round(c, precision), m: round(m, precision), y: round(y, precision), k: round(k, precision), alpha };\n };\n ColordxClass.prototype.toCmykString = function (precision = 2) {\n const { c, m, y, k, alpha } = this.toCmyk(precision);\n return alpha < 1 ? `device-cmyk(${c}% ${m}% ${y}% ${k}% / ${alpha})` : `device-cmyk(${c}% ${m}% ${y}% ${k}%)`;\n };\n parsers.push(parseCmykObject, parseCmykString);\n formatParsers.push([parseCmykObject, 'cmyk'], [parseCmykString, 'cmyk']);\n};\n\nexport default cmyk;\n"]}

@@ -1,2 +0,2 @@

import { q as Plugin } from '../colordx-FkeB37IC.cjs';
import { q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ type HarmonyType = 'complementary' | 'analogous' | 'triadic' | 'tetradic' | 'split-complementary' | 'double-split-complementary' | 'rectangle';

@@ -1,2 +0,2 @@

import { q as Plugin } from '../colordx-FkeB37IC.js';
import { q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ type HarmonyType = 'complementary' | 'analogous' | 'triadic' | 'tetradic' | 'split-complementary' | 'double-split-complementary' | 'rectangle';

@@ -1,2 +0,2 @@

'use strict';var chunkMNUCH7SI_cjs=require('../chunk-MNUCH7SI.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var m=(p,u,c)=>{p.prototype.toHsv=function(o=2){let{h:r,s:t,v:s,alpha:n}=chunkMNUCH7SI_cjs.a(this._rawRgb()),h=chunkYISEJCI6_cjs.b(r,o);return {h:h>=360?0:h,s:chunkYISEJCI6_cjs.b(t,o),v:chunkYISEJCI6_cjs.b(s,o),alpha:n}},p.prototype.toHsvString=function(o=2){let{h:r,s:t,v:s,alpha:n}=this.toHsv(o);return n<1?`hsv(${r} ${t}% ${s}% / ${n})`:`hsv(${r} ${t}% ${s}%)`},u.push(chunkMNUCH7SI_cjs.c,chunkMNUCH7SI_cjs.d),c.push([chunkMNUCH7SI_cjs.c,"hsv"],[chunkMNUCH7SI_cjs.d,"hsv"]);},d=m;module.exports=d;//# sourceMappingURL=hsv.cjs.map
'use strict';var chunkBLKDDW2U_cjs=require('../chunk-BLKDDW2U.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var m=(p,u,c)=>{p.prototype.toHsv=function(o=2){let{h:r,s:t,v:s,alpha:n}=chunkBLKDDW2U_cjs.a(this._rawRgb()),h=chunkYISEJCI6_cjs.b(r,o);return {h:h>=360?0:h,s:chunkYISEJCI6_cjs.b(t,o),v:chunkYISEJCI6_cjs.b(s,o),alpha:n}},p.prototype.toHsvString=function(o=2){let{h:r,s:t,v:s,alpha:n}=this.toHsv(o);return n<1?`hsv(${r} ${t}% ${s}% / ${n})`:`hsv(${r} ${t}% ${s}%)`},u.push(chunkBLKDDW2U_cjs.c,chunkBLKDDW2U_cjs.d),c.push([chunkBLKDDW2U_cjs.c,"hsv"],[chunkBLKDDW2U_cjs.d,"hsv"]);},d=m;module.exports=d;//# sourceMappingURL=hsv.cjs.map
//# sourceMappingURL=hsv.cjs.map

@@ -1,2 +0,2 @@

import { f as HsvColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { f as HsvColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { f as HsvColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { f as HsvColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {a,c,d as d$1}from'../chunk-FUSE3OJV.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b}from'../chunk-IOXRZECH.mjs';var m=(p,u,c$1)=>{p.prototype.toHsv=function(o=2){let{h:r,s:t,v:s,alpha:n}=a(this._rawRgb()),h=b(r,o);return {h:h>=360?0:h,s:b(t,o),v:b(s,o),alpha:n}},p.prototype.toHsvString=function(o=2){let{h:r,s:t,v:s,alpha:n}=this.toHsv(o);return n<1?`hsv(${r} ${t}% ${s}% / ${n})`:`hsv(${r} ${t}% ${s}%)`},u.push(c,d$1),c$1.push([c,"hsv"],[d$1,"hsv"]);},d=m;export{d as default};//# sourceMappingURL=hsv.mjs.map
import {a,c,d as d$1}from'../chunk-6JXMCEQE.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b}from'../chunk-IOXRZECH.mjs';var m=(p,u,c$1)=>{p.prototype.toHsv=function(o=2){let{h:r,s:t,v:s,alpha:n}=a(this._rawRgb()),h=b(r,o);return {h:h>=360?0:h,s:b(t,o),v:b(s,o),alpha:n}},p.prototype.toHsvString=function(o=2){let{h:r,s:t,v:s,alpha:n}=this.toHsv(o);return n<1?`hsv(${r} ${t}% ${s}% / ${n})`:`hsv(${r} ${t}% ${s}%)`},u.push(c,d$1),c$1.push([c,"hsv"],[d$1,"hsv"]);},d=m;export{d as default};//# sourceMappingURL=hsv.mjs.map
//# sourceMappingURL=hsv.mjs.map

@@ -1,2 +0,2 @@

'use strict';var chunkMNUCH7SI_cjs=require('../chunk-MNUCH7SI.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var c=o=>{let r=chunkYISEJCI6_cjs.a(o.w,0,1/0),t=chunkYISEJCI6_cjs.a(o.b,0,1/0),n=r+t;return {h:chunkYISEJCI6_cjs.c(o.h),w:n>100?r/n*100:r,b:n>100?t/n*100:t,alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o.alpha,3),0,1)}};var R=o=>{let{h:r}=chunkMNUCH7SI_cjs.a(o);return c({h:r,w:Math.min(o.r,o.g,o.b)/255*100,b:100-Math.max(o.r,o.g,o.b)/255*100,alpha:o.alpha})},$=({h:o,w:r,b:t,alpha:n})=>{let e=t===100?0:100-r/(100-t)*100;return chunkMNUCH7SI_cjs.b({h:o,s:e,v:100-t,alpha:n})},m=o=>{if(!chunkYISEJCI6_cjs.h(o)||!chunkYISEJCI6_cjs.i(o,["h","w","b"]))return null;let{h:r,w:t,b:n,alpha:e=1}=o;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(e)?null:$(c({h:chunkYISEJCI6_cjs.g(r),w:chunkYISEJCI6_cjs.g(t),b:chunkYISEJCI6_cjs.g(n),alpha:chunkYISEJCI6_cjs.g(e)}))},N=new RegExp(`^hwb\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s+(?<w>${chunkYISEJCI6_cjs.k})(?<wp>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),H=o=>{if(typeof o!="string")return null;let r=N.exec(o.trim())?.groups;if(!r)return null;let t=r.hu?.toLowerCase()??"deg",n=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[t]??1),e=chunkYISEJCI6_cjs.l(r.w),s=chunkYISEJCI6_cjs.l(r.b),a=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return $(c({h:n,w:e,b:s,alpha:a}))};var j=(o,r,t)=>{o.prototype.toHwb=function(n=0){let{h:e,w:s,b:a,alpha:h}=R(this._rawRgb());return {h:chunkYISEJCI6_cjs.b(e,n),w:chunkYISEJCI6_cjs.b(s,n),b:chunkYISEJCI6_cjs.b(a,n),alpha:chunkYISEJCI6_cjs.b(h,3)}},o.prototype.toHwbString=function(n=0){let{h:e,w:s,b:a,alpha:h}=this.toHwb(n);return h<1?`hwb(${e} ${s}% ${a}% / ${h})`:`hwb(${e} ${s}% ${a}%)`},r.push(H,m),t.push([H,"hwb"],[m,"hwb"]);},E=j;module.exports=E;//# sourceMappingURL=hwb.cjs.map
'use strict';var chunkBLKDDW2U_cjs=require('../chunk-BLKDDW2U.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var c=o=>{let r=chunkYISEJCI6_cjs.a(o.w,0,1/0),t=chunkYISEJCI6_cjs.a(o.b,0,1/0),n=r+t;return {h:chunkYISEJCI6_cjs.c(o.h),w:n>100?r/n*100:r,b:n>100?t/n*100:t,alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o.alpha,3),0,1)}},R=o=>{let{h:r}=chunkBLKDDW2U_cjs.a(o);return c({h:r,w:Math.min(o.r,o.g,o.b)/255*100,b:100-Math.max(o.r,o.g,o.b)/255*100,alpha:o.alpha})},$=({h:o,w:r,b:t,alpha:n})=>{let e=t===100?0:100-r/(100-t)*100;return chunkBLKDDW2U_cjs.b({h:o,s:e,v:100-t,alpha:n})},m=o=>{if(!chunkYISEJCI6_cjs.h(o)||!chunkYISEJCI6_cjs.i(o,["h","w","b"]))return null;let{h:r,w:t,b:n,alpha:e=1}=o;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(e)?null:$(c({h:chunkYISEJCI6_cjs.g(r),w:chunkYISEJCI6_cjs.g(t),b:chunkYISEJCI6_cjs.g(n),alpha:chunkYISEJCI6_cjs.g(e)}))},N=new RegExp(`^hwb\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s+(?<w>${chunkYISEJCI6_cjs.k})(?<wp>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),H=o=>{if(typeof o!="string")return null;let r=N.exec(o.trim())?.groups;if(!r)return null;let t=r.hu?.toLowerCase()??"deg",n=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[t]??1),e=chunkYISEJCI6_cjs.l(r.w),l=chunkYISEJCI6_cjs.l(r.b),b=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return $(c({h:n,w:e,b:l,alpha:b}))};var j=(o,r,t)=>{o.prototype.toHwb=function(n=0){let{h:e,w:l,b,alpha:h}=R(this._rawRgb());return {h:chunkYISEJCI6_cjs.b(e,n),w:chunkYISEJCI6_cjs.b(l,n),b:chunkYISEJCI6_cjs.b(b,n),alpha:chunkYISEJCI6_cjs.b(h,3)}},o.prototype.toHwbString=function(n=0){let{h:e,w:l,b,alpha:h}=this.toHwb(n);return h<1?`hwb(${e} ${l}% ${b}% / ${h})`:`hwb(${e} ${l}% ${b}%)`},r.push(H,m),t.push([H,"hwb"],[m,"hwb"]);},E=j;module.exports=E;//# sourceMappingURL=hwb.cjs.map
//# sourceMappingURL=hwb.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../../src/colorModels/hwb.ts","../../src/plugins/hwb.ts"],"names":["clampHwb","hwb","w","clamp","b","sum","normalizeHue","round","rgbToHwb","rgb","h","rgbToHsvRaw","hwbToRgb","alpha","s","hsvToRgb","parseHwbObject","input","isObject","hasKeys","isAnyNumber","sanitize","HWB_RE","NUM_OR_NONE","parseHwbString","g","unit","parseNum","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","hwb_default"],"mappings":"4JAeO,IAAMA,CAAAA,CAAYC,GAA4B,CAEnD,IAAMC,EAAIC,mBAAAA,CAAMF,CAAAA,CAAI,CAAA,CAAG,CAAA,CAAG,CAAA,CAAA,CAAQ,CAAA,CAC5BG,EAAID,mBAAAA,CAAMF,CAAAA,CAAI,EAAG,CAAA,CAAG,CAAA,CAAA,CAAQ,EAC5BI,CAAAA,CAAMH,CAAAA,CAAIE,CAAAA,CAChB,OAAO,CACL,CAAA,CAAGE,oBAAaL,CAAAA,CAAI,CAAC,EACrB,CAAA,CAAGI,CAAAA,CAAM,IAAOH,CAAAA,CAAIG,CAAAA,CAAO,GAAA,CAAMH,CAAAA,CACjC,CAAA,CAAGG,CAAAA,CAAM,IAAOD,CAAAA,CAAIC,CAAAA,CAAO,IAAMD,CAAAA,CACjC,KAAA,CAAOD,oBAAMI,mBAAAA,CAAMN,CAAAA,CAAI,KAAA,CAAO,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CACxC,CACF,EASO,IAAMO,CAAAA,CAAYC,GAA4B,CACnD,GAAM,CAAE,CAAA,CAAAC,CAAE,CAAA,CAAIC,oBAAYF,CAAG,CAAA,CAC7B,OAAOT,CAAAA,CAAS,CACd,EAAAU,CAAAA,CACA,CAAA,CAAI,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAI,CAAA,CAAGA,EAAI,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CAAI,GAAA,CAAO,IAC3C,CAAA,CAAG,GAAA,CAAO,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAI,CAAA,CAAGA,EAAI,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CAAI,GAAA,CAAO,GAAA,CACjD,MAAOA,CAAAA,CAAI,KACb,CAAC,CACH,CAAA,CAIaG,CAAAA,CAAW,CAAC,CAAE,CAAA,CAAAF,EAAG,CAAA,CAAAR,CAAAA,CAAG,EAAAE,CAAAA,CAAG,KAAA,CAAAS,CAAM,CAAA,GAA0B,CAClE,IAAMC,EAAIV,CAAAA,GAAM,GAAA,CAAM,EAAI,GAAA,CAAOF,CAAAA,EAAK,IAAME,CAAAA,CAAAA,CAAM,GAAA,CAClD,OAAOW,mBAAAA,CAAS,CAAE,CAAA,CAAAL,EAAG,CAAA,CAAAI,CAAAA,CAAG,EAAG,GAAA,CAAMV,CAAAA,CAAG,MAAAS,CAAM,CAAC,CAC7C,CAAA,CAEaG,CAAAA,CAAkBC,CAAAA,EAAoC,CAEjE,GADI,CAACC,mBAAAA,CAASD,CAAK,CAAA,EACf,CAACE,oBAAQF,CAAAA,CAAO,CAAC,GAAA,CAAK,GAAA,CAAK,GAAG,CAAC,EAAG,OAAO,IAAA,CAC7C,GAAM,CAAE,CAAA,CAAAP,EAAG,CAAA,CAAAR,CAAAA,CAAG,CAAA,CAAAE,CAAAA,CAAG,KAAA,CAAAS,CAAAA,CAAQ,CAAE,CAAA,CAAII,CAAAA,CAC/B,OAAI,CAACG,mBAAAA,CAAYV,CAAC,CAAA,EAAK,CAACU,mBAAAA,CAAYlB,CAAC,CAAA,EAAK,CAACkB,oBAAYhB,CAAC,CAAA,EAAK,CAACgB,mBAAAA,CAAYP,CAAK,EAAU,IAAA,CAClFD,CAAAA,CAASZ,CAAAA,CAAS,CAAE,CAAA,CAAGqB,mBAAAA,CAASX,CAAC,CAAA,CAAG,CAAA,CAAGW,mBAAAA,CAASnB,CAAC,CAAA,CAAG,CAAA,CAAGmB,oBAASjB,CAAC,CAAA,CAAG,KAAA,CAAOiB,mBAAAA,CAASR,CAAK,CAAE,CAAC,CAAC,CACtG,EAEMS,CAAAA,CAAS,IAAI,OACjB,CAAA,gBAAA,EAAmBC,mBAAW,CAAA,mCAAA,EACpBA,mBAAW,CAAA,mBAAA,EAAsBA,mBAAW,+BAC/BA,mBAAW,CAAA,qBAAA,CAAA,CAClC,GACF,CAAA,CAEaC,CAAAA,CAAkBP,GAAoC,CACjE,GAAI,OAAOA,CAAAA,EAAU,QAAA,CAAU,OAAO,KACtC,IAAMQ,CAAAA,CAAIH,EAAO,IAAA,CAAKL,CAAAA,CAAM,MAAM,CAAA,EAAG,MAAA,CACrC,GAAI,CAACQ,CAAAA,CAAG,OAAO,IAAA,CACf,IAAMC,EAAOD,CAAAA,CAAE,EAAA,EAAI,aAAY,EAAK,KAAA,CAC9Bf,CAAAA,CAAIiB,mBAAAA,CAASF,CAAAA,CAAE,CAAE,GAAKG,mBAAAA,CAAYF,CAAI,GAAK,CAAA,CAAA,CAC3CxB,CAAAA,CAAIyB,oBAASF,CAAAA,CAAE,CAAE,CAAA,CACjBrB,CAAAA,CAAIuB,mBAAAA,CAASF,CAAAA,CAAE,CAAE,CAAA,CACjBZ,CAAAA,CAAQY,EAAE,EAAA,GAAO,MAAA,CAAY,EAAIE,mBAAAA,CAASF,CAAAA,CAAE,EAAE,CAAA,EAAKA,CAAAA,CAAE,GAAA,CAAM,IAAM,CAAA,CAAA,CACvE,OAAOb,EAASZ,CAAAA,CAAS,CAAE,EAAAU,CAAAA,CAAG,CAAA,CAAAR,CAAAA,CAAG,CAAA,CAAAE,CAAAA,CAAG,KAAA,CAAAS,CAAM,CAAC,CAAC,CAC9C,CAAA,CCjEA,IAAMZ,CAAAA,CAAc,CAAC4B,CAAAA,CAAcC,CAAAA,CAASC,CAAAA,GAAkB,CAC5DF,CAAAA,CAAa,SAAA,CAAU,MAAQ,SAAyBG,CAAAA,CAAY,EAAa,CAC/E,GAAM,CAAE,CAAA,CAAAtB,CAAAA,CAAG,CAAA,CAAAR,CAAAA,CAAG,CAAA,CAAAE,CAAAA,CAAG,MAAAS,CAAM,CAAA,CAAIL,EAAS,IAAA,CAAK,OAAA,EAAS,CAAA,CAClD,OAAO,CAAE,CAAA,CAAGD,mBAAAA,CAAMG,CAAAA,CAAGsB,CAAS,CAAA,CAAG,CAAA,CAAGzB,oBAAML,CAAAA,CAAG8B,CAAS,EAAG,CAAA,CAAGzB,mBAAAA,CAAMH,CAAAA,CAAG4B,CAAS,CAAA,CAAG,KAAA,CAAOzB,oBAAMM,CAAAA,CAAO,CAAC,CAAE,CAC1G,CAAA,CACAgB,CAAAA,CAAa,UAAU,WAAA,CAAc,SAAyBG,CAAAA,CAAY,CAAA,CAAW,CACnF,GAAM,CAAE,CAAA,CAAAtB,CAAAA,CAAG,EAAAR,CAAAA,CAAG,CAAA,CAAAE,EAAG,KAAA,CAAAS,CAAM,CAAA,CAAI,IAAA,CAAK,KAAA,CAAMmB,CAAS,EAC/C,OAAOnB,CAAAA,CAAQ,EAAI,CAAA,IAAA,EAAOH,CAAC,IAAIR,CAAC,CAAA,EAAA,EAAKE,CAAC,CAAA,IAAA,EAAOS,CAAK,CAAA,CAAA,CAAA,CAAM,OAAOH,CAAC,CAAA,CAAA,EAAIR,CAAC,CAAA,EAAA,EAAKE,CAAC,IAC7E,CAAA,CACA0B,CAAAA,CAAQ,IAAA,CAAKN,CAAAA,CAAgBR,CAAc,CAAA,CAC3Ce,EAAc,IAAA,CAAK,CAACP,CAAAA,CAAgB,KAAK,CAAA,CAAG,CAACR,EAAgB,KAAK,CAAC,EACrE,CAAA,CAEOiB,CAAAA,CAAQhC","file":"hwb.cjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HwbColor, RgbColor } from '../types.js';\nimport { hsvToRgb, rgbToHsvRaw } from './hsv.js';\n\nexport const clampHwb = (hwb: HwbColor): HwbColor => {\n // Infinity upper bound = reject negatives only; proportional normalization handles w+b > 100 below.\n const w = clamp(hwb.w, 0, Infinity);\n const b = clamp(hwb.b, 0, Infinity);\n const sum = w + b;\n return {\n h: normalizeHue(hwb.h),\n w: sum > 100 ? (w / sum) * 100 : w,\n b: sum > 100 ? (b / sum) * 100 : b,\n alpha: clamp(round(hwb.alpha, 3), 0, 1),\n };\n};\n\nexport const roundHwb = (hwb: HwbColor): HwbColor => ({\n h: round(hwb.h),\n w: round(hwb.w),\n b: round(hwb.b),\n alpha: round(hwb.alpha, 3),\n});\n\nexport const rgbToHwb = (rgb: RgbColor): HwbColor => {\n const { h } = rgbToHsvRaw(rgb);\n return clampHwb({\n h,\n w: (Math.min(rgb.r, rgb.g, rgb.b) / 255) * 100,\n b: 100 - (Math.max(rgb.r, rgb.g, rgb.b) / 255) * 100,\n alpha: rgb.alpha,\n });\n};\n\n// Precondition: w + b must be ≤ 100. Call clampHwb first — direct use with unnormalized values\n// produces negative saturation and incorrect output.\nexport const hwbToRgb = ({ h, w, b, alpha }: HwbColor): RgbColor => {\n const s = b === 100 ? 0 : 100 - (w / (100 - b)) * 100;\n return hsvToRgb({ h, s, v: 100 - b, alpha });\n};\n\nexport const parseHwbObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 'w', 'b'])) return null;\n const { h, w, b, alpha = 1 } = input as { h: unknown; w: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(w) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return hwbToRgb(clampHwb({ h: sanitize(h), w: sanitize(w), b: sanitize(b), alpha: sanitize(alpha) }));\n};\n\nconst HWB_RE = new RegExp(\n `^hwb\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s+` +\n `(?<w>${NUM_OR_NONE})(?<wp>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseHwbString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HWB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const w = parseNum(g.w!);\n const b = parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return hwbToRgb(clampHwb({ h, w, b, alpha }));\n};\n","import { parseHwbObject, parseHwbString, rgbToHwb } from '../colorModels/hwb.js';\nimport type { Colordx, Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { HwbColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toHwb(precision?: number): HwbColor;\n toHwbString(precision?: number): string;\n }\n}\n\nconst hwb: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toHwb = function (this: Colordx, precision = 0): HwbColor {\n const { h, w, b, alpha } = rgbToHwb(this._rawRgb());\n return { h: round(h, precision), w: round(w, precision), b: round(b, precision), alpha: round(alpha, 3) };\n };\n ColordxClass.prototype.toHwbString = function (this: Colordx, precision = 0): string {\n const { h, w, b, alpha } = this.toHwb(precision);\n return alpha < 1 ? `hwb(${h} ${w}% ${b}% / ${alpha})` : `hwb(${h} ${w}% ${b}%)`;\n };\n parsers.push(parseHwbString, parseHwbObject);\n formatParsers.push([parseHwbString, 'hwb'], [parseHwbObject, 'hwb']);\n};\n\nexport default hwb;\n"]}
{"version":3,"sources":["../../src/colorModels/hwb.ts","../../src/plugins/hwb.ts"],"names":["clampHwb","hwb","w","clamp","b","sum","normalizeHue","round","rgbToHwb","rgb","h","rgbToHsvRaw","hwbToRgb","alpha","s","hsvToRgb","parseHwbObject","input","isObject","hasKeys","isAnyNumber","sanitize","HWB_RE","NUM_OR_NONE","parseHwbString","g","unit","parseNum","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","hwb_default"],"mappings":"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","file":"hwb.cjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HwbColor, RgbColor } from '../types.js';\nimport { hsvToRgb, rgbToHsvRaw } from './hsv.js';\n\nexport const clampHwb = (hwb: HwbColor): HwbColor => {\n // Infinity upper bound = reject negatives only; proportional normalization handles w+b > 100 below.\n const w = clamp(hwb.w, 0, Infinity);\n const b = clamp(hwb.b, 0, Infinity);\n const sum = w + b;\n return {\n h: normalizeHue(hwb.h),\n w: sum > 100 ? (w / sum) * 100 : w,\n b: sum > 100 ? (b / sum) * 100 : b,\n alpha: clamp(round(hwb.alpha, 3), 0, 1),\n };\n};\n\nexport const rgbToHwb = (rgb: RgbColor): HwbColor => {\n const { h } = rgbToHsvRaw(rgb);\n return clampHwb({\n h,\n w: (Math.min(rgb.r, rgb.g, rgb.b) / 255) * 100,\n b: 100 - (Math.max(rgb.r, rgb.g, rgb.b) / 255) * 100,\n alpha: rgb.alpha,\n });\n};\n\n// Precondition: w + b must be ≤ 100. Call clampHwb first — direct use with unnormalized values\n// produces negative saturation and incorrect output.\nexport const hwbToRgb = ({ h, w, b, alpha }: HwbColor): RgbColor => {\n const s = b === 100 ? 0 : 100 - (w / (100 - b)) * 100;\n return hsvToRgb({ h, s, v: 100 - b, alpha });\n};\n\nexport const parseHwbObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 'w', 'b'])) return null;\n const { h, w, b, alpha = 1 } = input as { h: unknown; w: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(w) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return hwbToRgb(clampHwb({ h: sanitize(h), w: sanitize(w), b: sanitize(b), alpha: sanitize(alpha) }));\n};\n\nconst HWB_RE = new RegExp(\n `^hwb\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s+` +\n `(?<w>${NUM_OR_NONE})(?<wp>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseHwbString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HWB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const w = parseNum(g.w!);\n const b = parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return hwbToRgb(clampHwb({ h, w, b, alpha }));\n};\n","import { parseHwbObject, parseHwbString, rgbToHwb } from '../colorModels/hwb.js';\nimport type { Colordx, Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { HwbColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toHwb(precision?: number): HwbColor;\n toHwbString(precision?: number): string;\n }\n}\n\nconst hwb: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toHwb = function (this: Colordx, precision = 0): HwbColor {\n const { h, w, b, alpha } = rgbToHwb(this._rawRgb());\n return { h: round(h, precision), w: round(w, precision), b: round(b, precision), alpha: round(alpha, 3) };\n };\n ColordxClass.prototype.toHwbString = function (this: Colordx, precision = 0): string {\n const { h, w, b, alpha } = this.toHwb(precision);\n return alpha < 1 ? `hwb(${h} ${w}% ${b}% / ${alpha})` : `hwb(${h} ${w}% ${b}%)`;\n };\n parsers.push(parseHwbString, parseHwbObject);\n formatParsers.push([parseHwbString, 'hwb'], [parseHwbObject, 'hwb']);\n};\n\nexport default hwb;\n"]}

@@ -1,2 +0,2 @@

import { h as HwbColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { h as HwbColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { h as HwbColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { h as HwbColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {a,b as b$1}from'../chunk-FUSE3OJV.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,l,d,h,i,f,g,a as a$1,c as c$1,k}from'../chunk-IOXRZECH.mjs';var c=o=>{let r=a$1(o.w,0,1/0),t=a$1(o.b,0,1/0),n=r+t;return {h:c$1(o.h),w:n>100?r/n*100:r,b:n>100?t/n*100:t,alpha:a$1(b(o.alpha,3),0,1)}};var R=o=>{let{h:r}=a(o);return c({h:r,w:Math.min(o.r,o.g,o.b)/255*100,b:100-Math.max(o.r,o.g,o.b)/255*100,alpha:o.alpha})},$=({h:o,w:r,b:t,alpha:n})=>{let e=t===100?0:100-r/(100-t)*100;return b$1({h:o,s:e,v:100-t,alpha:n})},m=o=>{if(!h(o)||!i(o,["h","w","b"]))return null;let{h:r,w:t,b:n,alpha:e=1}=o;return !f(r)||!f(t)||!f(n)||!f(e)?null:$(c({h:g(r),w:g(t),b:g(n),alpha:g(e)}))},N=new RegExp(`^hwb\\(\\s*(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s+(?<w>${k})(?<wp>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),H=o=>{if(typeof o!="string")return null;let r=N.exec(o.trim())?.groups;if(!r)return null;let t=r.hu?.toLowerCase()??"deg",n=l(r.h)*(d[t]??1),e=l(r.w),s=l(r.b),a=r.al===void 0?1:l(r.al)/(r.alp?100:1);return $(c({h:n,w:e,b:s,alpha:a}))};var j=(o,r,t)=>{o.prototype.toHwb=function(n=0){let{h:e,w:s,b:a,alpha:h}=R(this._rawRgb());return {h:b(e,n),w:b(s,n),b:b(a,n),alpha:b(h,3)}},o.prototype.toHwbString=function(n=0){let{h:e,w:s,b:a,alpha:h}=this.toHwb(n);return h<1?`hwb(${e} ${s}% ${a}% / ${h})`:`hwb(${e} ${s}% ${a}%)`},r.push(H,m),t.push([H,"hwb"],[m,"hwb"]);},E=j;export{E as default};//# sourceMappingURL=hwb.mjs.map
import {a,b as b$1}from'../chunk-6JXMCEQE.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,l,d,h,i,f,g,a as a$1,c as c$1,k}from'../chunk-IOXRZECH.mjs';var c=o=>{let r=a$1(o.w,0,1/0),t=a$1(o.b,0,1/0),n=r+t;return {h:c$1(o.h),w:n>100?r/n*100:r,b:n>100?t/n*100:t,alpha:a$1(b(o.alpha,3),0,1)}},R=o=>{let{h:r}=a(o);return c({h:r,w:Math.min(o.r,o.g,o.b)/255*100,b:100-Math.max(o.r,o.g,o.b)/255*100,alpha:o.alpha})},$=({h:o,w:r,b:t,alpha:n})=>{let e=t===100?0:100-r/(100-t)*100;return b$1({h:o,s:e,v:100-t,alpha:n})},m=o=>{if(!h(o)||!i(o,["h","w","b"]))return null;let{h:r,w:t,b:n,alpha:e=1}=o;return !f(r)||!f(t)||!f(n)||!f(e)?null:$(c({h:g(r),w:g(t),b:g(n),alpha:g(e)}))},N=new RegExp(`^hwb\\(\\s*(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s+(?<w>${k})(?<wp>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),H=o=>{if(typeof o!="string")return null;let r=N.exec(o.trim())?.groups;if(!r)return null;let t=r.hu?.toLowerCase()??"deg",n=l(r.h)*(d[t]??1),e=l(r.w),l$1=l(r.b),b=r.al===void 0?1:l(r.al)/(r.alp?100:1);return $(c({h:n,w:e,b:l$1,alpha:b}))};var j=(o,r,t)=>{o.prototype.toHwb=function(n=0){let{h:e,w:l,b: b$1,alpha:h}=R(this._rawRgb());return {h:b(e,n),w:b(l,n),b:b(b$1,n),alpha:b(h,3)}},o.prototype.toHwbString=function(n=0){let{h:e,w:l,b,alpha:h}=this.toHwb(n);return h<1?`hwb(${e} ${l}% ${b}% / ${h})`:`hwb(${e} ${l}% ${b}%)`},r.push(H,m),t.push([H,"hwb"],[m,"hwb"]);},E=j;export{E as default};//# sourceMappingURL=hwb.mjs.map
//# sourceMappingURL=hwb.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../../src/colorModels/hwb.ts","../../src/plugins/hwb.ts"],"names":["clampHwb","hwb","w","clamp","b","sum","normalizeHue","round","rgbToHwb","rgb","h","rgbToHsvRaw","hwbToRgb","alpha","s","hsvToRgb","parseHwbObject","input","isObject","hasKeys","isAnyNumber","sanitize","HWB_RE","NUM_OR_NONE","parseHwbString","g","unit","parseNum","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","hwb_default"],"mappings":"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","file":"hwb.mjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HwbColor, RgbColor } from '../types.js';\nimport { hsvToRgb, rgbToHsvRaw } from './hsv.js';\n\nexport const clampHwb = (hwb: HwbColor): HwbColor => {\n // Infinity upper bound = reject negatives only; proportional normalization handles w+b > 100 below.\n const w = clamp(hwb.w, 0, Infinity);\n const b = clamp(hwb.b, 0, Infinity);\n const sum = w + b;\n return {\n h: normalizeHue(hwb.h),\n w: sum > 100 ? (w / sum) * 100 : w,\n b: sum > 100 ? (b / sum) * 100 : b,\n alpha: clamp(round(hwb.alpha, 3), 0, 1),\n };\n};\n\nexport const roundHwb = (hwb: HwbColor): HwbColor => ({\n h: round(hwb.h),\n w: round(hwb.w),\n b: round(hwb.b),\n alpha: round(hwb.alpha, 3),\n});\n\nexport const rgbToHwb = (rgb: RgbColor): HwbColor => {\n const { h } = rgbToHsvRaw(rgb);\n return clampHwb({\n h,\n w: (Math.min(rgb.r, rgb.g, rgb.b) / 255) * 100,\n b: 100 - (Math.max(rgb.r, rgb.g, rgb.b) / 255) * 100,\n alpha: rgb.alpha,\n });\n};\n\n// Precondition: w + b must be ≤ 100. Call clampHwb first — direct use with unnormalized values\n// produces negative saturation and incorrect output.\nexport const hwbToRgb = ({ h, w, b, alpha }: HwbColor): RgbColor => {\n const s = b === 100 ? 0 : 100 - (w / (100 - b)) * 100;\n return hsvToRgb({ h, s, v: 100 - b, alpha });\n};\n\nexport const parseHwbObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 'w', 'b'])) return null;\n const { h, w, b, alpha = 1 } = input as { h: unknown; w: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(w) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return hwbToRgb(clampHwb({ h: sanitize(h), w: sanitize(w), b: sanitize(b), alpha: sanitize(alpha) }));\n};\n\nconst HWB_RE = new RegExp(\n `^hwb\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s+` +\n `(?<w>${NUM_OR_NONE})(?<wp>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseHwbString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HWB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const w = parseNum(g.w!);\n const b = parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return hwbToRgb(clampHwb({ h, w, b, alpha }));\n};\n","import { parseHwbObject, parseHwbString, rgbToHwb } from '../colorModels/hwb.js';\nimport type { Colordx, Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { HwbColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toHwb(precision?: number): HwbColor;\n toHwbString(precision?: number): string;\n }\n}\n\nconst hwb: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toHwb = function (this: Colordx, precision = 0): HwbColor {\n const { h, w, b, alpha } = rgbToHwb(this._rawRgb());\n return { h: round(h, precision), w: round(w, precision), b: round(b, precision), alpha: round(alpha, 3) };\n };\n ColordxClass.prototype.toHwbString = function (this: Colordx, precision = 0): string {\n const { h, w, b, alpha } = this.toHwb(precision);\n return alpha < 1 ? `hwb(${h} ${w}% ${b}% / ${alpha})` : `hwb(${h} ${w}% ${b}%)`;\n };\n parsers.push(parseHwbString, parseHwbObject);\n formatParsers.push([parseHwbString, 'hwb'], [parseHwbObject, 'hwb']);\n};\n\nexport default hwb;\n"]}
{"version":3,"sources":["../../src/colorModels/hwb.ts","../../src/plugins/hwb.ts"],"names":["clampHwb","hwb","w","clamp","b","sum","normalizeHue","round","rgbToHwb","rgb","h","rgbToHsvRaw","hwbToRgb","alpha","s","hsvToRgb","parseHwbObject","input","isObject","hasKeys","isAnyNumber","sanitize","HWB_RE","NUM_OR_NONE","parseHwbString","g","unit","parseNum","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","hwb_default"],"mappings":"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","file":"hwb.mjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HwbColor, RgbColor } from '../types.js';\nimport { hsvToRgb, rgbToHsvRaw } from './hsv.js';\n\nexport const clampHwb = (hwb: HwbColor): HwbColor => {\n // Infinity upper bound = reject negatives only; proportional normalization handles w+b > 100 below.\n const w = clamp(hwb.w, 0, Infinity);\n const b = clamp(hwb.b, 0, Infinity);\n const sum = w + b;\n return {\n h: normalizeHue(hwb.h),\n w: sum > 100 ? (w / sum) * 100 : w,\n b: sum > 100 ? (b / sum) * 100 : b,\n alpha: clamp(round(hwb.alpha, 3), 0, 1),\n };\n};\n\nexport const rgbToHwb = (rgb: RgbColor): HwbColor => {\n const { h } = rgbToHsvRaw(rgb);\n return clampHwb({\n h,\n w: (Math.min(rgb.r, rgb.g, rgb.b) / 255) * 100,\n b: 100 - (Math.max(rgb.r, rgb.g, rgb.b) / 255) * 100,\n alpha: rgb.alpha,\n });\n};\n\n// Precondition: w + b must be ≤ 100. Call clampHwb first — direct use with unnormalized values\n// produces negative saturation and incorrect output.\nexport const hwbToRgb = ({ h, w, b, alpha }: HwbColor): RgbColor => {\n const s = b === 100 ? 0 : 100 - (w / (100 - b)) * 100;\n return hsvToRgb({ h, s, v: 100 - b, alpha });\n};\n\nexport const parseHwbObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 'w', 'b'])) return null;\n const { h, w, b, alpha = 1 } = input as { h: unknown; w: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(w) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return hwbToRgb(clampHwb({ h: sanitize(h), w: sanitize(w), b: sanitize(b), alpha: sanitize(alpha) }));\n};\n\nconst HWB_RE = new RegExp(\n `^hwb\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s+` +\n `(?<w>${NUM_OR_NONE})(?<wp>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseHwbString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HWB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const w = parseNum(g.w!);\n const b = parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return hwbToRgb(clampHwb({ h, w, b, alpha }));\n};\n","import { parseHwbObject, parseHwbString, rgbToHwb } from '../colorModels/hwb.js';\nimport type { Colordx, Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { HwbColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toHwb(precision?: number): HwbColor;\n toHwbString(precision?: number): string;\n }\n}\n\nconst hwb: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toHwb = function (this: Colordx, precision = 0): HwbColor {\n const { h, w, b, alpha } = rgbToHwb(this._rawRgb());\n return { h: round(h, precision), w: round(w, precision), b: round(b, precision), alpha: round(alpha, 3) };\n };\n ColordxClass.prototype.toHwbString = function (this: Colordx, precision = 0): string {\n const { h, w, b, alpha } = this.toHwb(precision);\n return alpha < 1 ? `hwb(${h} ${w}% ${b}% / ${alpha})` : `hwb(${h} ${w}% ${b}%)`;\n };\n parsers.push(parseHwbString, parseHwbObject);\n formatParsers.push([parseHwbString, 'hwb'], [parseHwbObject, 'hwb']);\n};\n\nexport default hwb;\n"]}

@@ -1,2 +0,2 @@

'use strict';var chunkGU6TZJ4O_cjs=require('../chunk-GU6TZJ4O.cjs');require('../chunk-X5FCFNQN.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var d=(b,f,x)=>{b.prototype.toLab=function(t=2){let{l:a,a:r,b:n,alpha:o}=chunkGU6TZJ4O_cjs.m(this._rawRgb());return {l:chunkYISEJCI6_cjs.b(a,t),a:chunkYISEJCI6_cjs.b(r,t)||0,b:chunkYISEJCI6_cjs.b(n,t)||0,alpha:o,colorSpace:"lab"}},b.prototype.toLabString=function(t=2){let{l:a,a:r,b:n,alpha:o}=this.toLab(t);return o<1?`lab(${a} ${r} ${n} / ${o})`:`lab(${a} ${r} ${n})`},b.prototype.toXyz=function(t=2){let{x:a,y:r,z:n,alpha:o}=chunkGU6TZJ4O_cjs.c(this._rawRgb());return {x:chunkYISEJCI6_cjs.b(a,t),y:chunkYISEJCI6_cjs.b(r,t),z:chunkYISEJCI6_cjs.b(n,t),alpha:o}},b.prototype.toXyzString=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyz(t);return o<1?`color(xyz-d50 ${a} ${r} ${n} / ${o})`:`color(xyz-d50 ${a} ${r} ${n})`},b.prototype.toXyzD65=function(t=2){let{x:a,y:r,z:n,alpha:o}=chunkGU6TZJ4O_cjs.a(this._rawRgb());return {x:chunkYISEJCI6_cjs.b(a,t),y:chunkYISEJCI6_cjs.b(r,t),z:chunkYISEJCI6_cjs.b(n,t),alpha:o,colorSpace:"xyz-d65"}},b.prototype.toXyzD65String=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyzD65(t);return o<1?`color(xyz-d65 ${a} ${r} ${n} / ${o})`:`color(xyz-d65 ${a} ${r} ${n})`},b.prototype.mixLab=function(t,a=.5){let r=chunkGU6TZJ4O_cjs.m(this._rawRgb()),n=chunkGU6TZJ4O_cjs.m(new b(t)._rawRgb()),o=chunkYISEJCI6_cjs.a(a,0,1);return new b(chunkGU6TZJ4O_cjs.p({l:r.l*(1-o)+n.l*o,a:r.a*(1-o)+n.a*o,b:r.b*(1-o)+n.b*o,alpha:chunkYISEJCI6_cjs.b(r.alpha*(1-o)+n.alpha*o,3),colorSpace:"lab"}))},b.prototype.delta=function(t="#fff"){return chunkYISEJCI6_cjs.b(chunkGU6TZJ4O_cjs.o(chunkGU6TZJ4O_cjs.n(this._rawRgb()),chunkGU6TZJ4O_cjs.n(new b(t)._rawRgb()))/100,3)},f.push(chunkGU6TZJ4O_cjs.r,chunkGU6TZJ4O_cjs.s,chunkGU6TZJ4O_cjs.h,chunkGU6TZJ4O_cjs.g,chunkGU6TZJ4O_cjs.i,chunkGU6TZJ4O_cjs.f),x.push([chunkGU6TZJ4O_cjs.r,"lab"],[chunkGU6TZJ4O_cjs.s,"lab"],[chunkGU6TZJ4O_cjs.h,"xyz-d65"],[chunkGU6TZJ4O_cjs.g,"xyz-d65"],[chunkGU6TZJ4O_cjs.i,"xyz"],[chunkGU6TZJ4O_cjs.f,"xyz"]);},w=d;module.exports=w;//# sourceMappingURL=lab.cjs.map
'use strict';var chunkPI5KJ3ZM_cjs=require('../chunk-PI5KJ3ZM.cjs');require('../chunk-INDSIUQQ.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var d=(b,f,x)=>{b.prototype.toLab=function(t=2){let{l:a,a:r,b:n,alpha:o}=chunkPI5KJ3ZM_cjs.m(this._rawRgb());return {l:chunkYISEJCI6_cjs.b(a,t),a:chunkYISEJCI6_cjs.b(r,t)||0,b:chunkYISEJCI6_cjs.b(n,t)||0,alpha:o,colorSpace:"lab"}},b.prototype.toLabString=function(t=2){let{l:a,a:r,b:n,alpha:o}=this.toLab(t);return o<1?`lab(${a} ${r} ${n} / ${o})`:`lab(${a} ${r} ${n})`},b.prototype.toXyz=function(t=2){let{x:a,y:r,z:n,alpha:o}=chunkPI5KJ3ZM_cjs.c(this._rawRgb());return {x:chunkYISEJCI6_cjs.b(a,t),y:chunkYISEJCI6_cjs.b(r,t),z:chunkYISEJCI6_cjs.b(n,t),alpha:o}},b.prototype.toXyzString=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyz(t);return o<1?`color(xyz-d50 ${a} ${r} ${n} / ${o})`:`color(xyz-d50 ${a} ${r} ${n})`},b.prototype.toXyzD65=function(t=2){let{x:a,y:r,z:n,alpha:o}=chunkPI5KJ3ZM_cjs.a(this._rawRgb());return {x:chunkYISEJCI6_cjs.b(a,t),y:chunkYISEJCI6_cjs.b(r,t),z:chunkYISEJCI6_cjs.b(n,t),alpha:o,colorSpace:"xyz-d65"}},b.prototype.toXyzD65String=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyzD65(t);return o<1?`color(xyz-d65 ${a} ${r} ${n} / ${o})`:`color(xyz-d65 ${a} ${r} ${n})`},b.prototype.mixLab=function(t,a=.5){let r=chunkPI5KJ3ZM_cjs.m(this._rawRgb()),n=chunkPI5KJ3ZM_cjs.m(new b(t)._rawRgb()),o=chunkYISEJCI6_cjs.a(a,0,1);return new b(chunkPI5KJ3ZM_cjs.p({l:r.l*(1-o)+n.l*o,a:r.a*(1-o)+n.a*o,b:r.b*(1-o)+n.b*o,alpha:chunkYISEJCI6_cjs.b(r.alpha*(1-o)+n.alpha*o,3),colorSpace:"lab"}))},b.prototype.delta=function(t="#fff"){return chunkYISEJCI6_cjs.b(chunkPI5KJ3ZM_cjs.o(chunkPI5KJ3ZM_cjs.n(this._rawRgb()),chunkPI5KJ3ZM_cjs.n(new b(t)._rawRgb()))/100,3)},f.push(chunkPI5KJ3ZM_cjs.r,chunkPI5KJ3ZM_cjs.s,chunkPI5KJ3ZM_cjs.h,chunkPI5KJ3ZM_cjs.g,chunkPI5KJ3ZM_cjs.i,chunkPI5KJ3ZM_cjs.f),x.push([chunkPI5KJ3ZM_cjs.r,"lab"],[chunkPI5KJ3ZM_cjs.s,"lab"],[chunkPI5KJ3ZM_cjs.h,"xyz-d65"],[chunkPI5KJ3ZM_cjs.g,"xyz-d65"],[chunkPI5KJ3ZM_cjs.i,"xyz"],[chunkPI5KJ3ZM_cjs.f,"xyz"]);},w=d;module.exports=w;//# sourceMappingURL=lab.cjs.map
//# sourceMappingURL=lab.cjs.map

@@ -1,2 +0,2 @@

import { L as LabColor, X as XyzColor, B as XyzD65Color, A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { L as LabColor, X as XyzColor, B as XyzD65Color, A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { L as LabColor, X as XyzColor, B as XyzD65Color, A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { L as LabColor, X as XyzColor, B as XyzD65Color, A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {m,c,a,p,o,n,r,s,h,g,i,f}from'../chunk-4LKLL3IS.mjs';import'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,a as a$1}from'../chunk-IOXRZECH.mjs';var d=(b$1,f$1,x)=>{b$1.prototype.toLab=function(t=2){let{l:a,a:r,b:n,alpha:o}=m(this._rawRgb());return {l:b(a,t),a:b(r,t)||0,b:b(n,t)||0,alpha:o,colorSpace:"lab"}},b$1.prototype.toLabString=function(t=2){let{l:a,a:r,b:n,alpha:o}=this.toLab(t);return o<1?`lab(${a} ${r} ${n} / ${o})`:`lab(${a} ${r} ${n})`},b$1.prototype.toXyz=function(t=2){let{x:a,y:r,z:n,alpha:o}=c(this._rawRgb());return {x:b(a,t),y:b(r,t),z:b(n,t),alpha:o}},b$1.prototype.toXyzString=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyz(t);return o<1?`color(xyz-d50 ${a} ${r} ${n} / ${o})`:`color(xyz-d50 ${a} ${r} ${n})`},b$1.prototype.toXyzD65=function(t=2){let{x:a$1,y:r,z:n,alpha:o}=a(this._rawRgb());return {x:b(a$1,t),y:b(r,t),z:b(n,t),alpha:o,colorSpace:"xyz-d65"}},b$1.prototype.toXyzD65String=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyzD65(t);return o<1?`color(xyz-d65 ${a} ${r} ${n} / ${o})`:`color(xyz-d65 ${a} ${r} ${n})`},b$1.prototype.mixLab=function(t,a=.5){let r=m(this._rawRgb()),n=m(new b$1(t)._rawRgb()),o=a$1(a,0,1);return new b$1(p({l:r.l*(1-o)+n.l*o,a:r.a*(1-o)+n.a*o,b:r.b*(1-o)+n.b*o,alpha:b(r.alpha*(1-o)+n.alpha*o,3),colorSpace:"lab"}))},b$1.prototype.delta=function(t="#fff"){return b(o(n(this._rawRgb()),n(new b$1(t)._rawRgb()))/100,3)},f$1.push(r,s,h,g,i,f),x.push([r,"lab"],[s,"lab"],[h,"xyz-d65"],[g,"xyz-d65"],[i,"xyz"],[f,"xyz"]);},w=d;export{w as default};//# sourceMappingURL=lab.mjs.map
import {m,c,a,p,o,n,r,s,h,g,i,f}from'../chunk-F4W4HJCD.mjs';import'../chunk-YLJRINFM.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,a as a$1}from'../chunk-IOXRZECH.mjs';var d=(b$1,f$1,x)=>{b$1.prototype.toLab=function(t=2){let{l:a,a:r,b:n,alpha:o}=m(this._rawRgb());return {l:b(a,t),a:b(r,t)||0,b:b(n,t)||0,alpha:o,colorSpace:"lab"}},b$1.prototype.toLabString=function(t=2){let{l:a,a:r,b:n,alpha:o}=this.toLab(t);return o<1?`lab(${a} ${r} ${n} / ${o})`:`lab(${a} ${r} ${n})`},b$1.prototype.toXyz=function(t=2){let{x:a,y:r,z:n,alpha:o}=c(this._rawRgb());return {x:b(a,t),y:b(r,t),z:b(n,t),alpha:o}},b$1.prototype.toXyzString=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyz(t);return o<1?`color(xyz-d50 ${a} ${r} ${n} / ${o})`:`color(xyz-d50 ${a} ${r} ${n})`},b$1.prototype.toXyzD65=function(t=2){let{x:a$1,y:r,z:n,alpha:o}=a(this._rawRgb());return {x:b(a$1,t),y:b(r,t),z:b(n,t),alpha:o,colorSpace:"xyz-d65"}},b$1.prototype.toXyzD65String=function(t=2){let{x:a,y:r,z:n,alpha:o}=this.toXyzD65(t);return o<1?`color(xyz-d65 ${a} ${r} ${n} / ${o})`:`color(xyz-d65 ${a} ${r} ${n})`},b$1.prototype.mixLab=function(t,a=.5){let r=m(this._rawRgb()),n=m(new b$1(t)._rawRgb()),o=a$1(a,0,1);return new b$1(p({l:r.l*(1-o)+n.l*o,a:r.a*(1-o)+n.a*o,b:r.b*(1-o)+n.b*o,alpha:b(r.alpha*(1-o)+n.alpha*o,3),colorSpace:"lab"}))},b$1.prototype.delta=function(t="#fff"){return b(o(n(this._rawRgb()),n(new b$1(t)._rawRgb()))/100,3)},f$1.push(r,s,h,g,i,f),x.push([r,"lab"],[s,"lab"],[h,"xyz-d65"],[g,"xyz-d65"],[i,"xyz"],[f,"xyz"]);},w=d;export{w as default};//# sourceMappingURL=lab.mjs.map
//# sourceMappingURL=lab.mjs.map

@@ -1,2 +0,2 @@

'use strict';var chunkGU6TZJ4O_cjs=require('../chunk-GU6TZJ4O.cjs');require('../chunk-X5FCFNQN.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var w=c=>({l:chunkYISEJCI6_cjs.a(c.l,0,100),c:Math.max(0,c.c),h:chunkYISEJCI6_cjs.c(c.h),alpha:chunkYISEJCI6_cjs.a(c.alpha,0,1),colorSpace:"lch"}),$=c=>{let o=chunkGU6TZJ4O_cjs.m(c),l=Math.sqrt(o.a**2+o.b**2),r=Math.atan2(o.b,o.a)/Math.PI*180;return {l:o.l,c:l,h:l<.0015?0:r<0?r+360:r,alpha:o.alpha,colorSpace:"lch"}};var x=({l:c,c:o,h:l,alpha:r})=>chunkGU6TZJ4O_cjs.q({l:c,a:o*Math.cos(l*Math.PI/180),b:o*Math.sin(l*Math.PI/180),alpha:r,colorSpace:"lab"}),m=c=>{if(!chunkYISEJCI6_cjs.h(c)||c.colorSpace!=="lch"||!chunkYISEJCI6_cjs.i(c,["l","c","h"]))return null;let{l:o,c:l,h:r,alpha:t=1}=c;return !chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(l)||!chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)?null:x(w({l:chunkYISEJCI6_cjs.g(o),c:chunkYISEJCI6_cjs.g(l),h:chunkYISEJCI6_cjs.g(r),alpha:chunkYISEJCI6_cjs.g(t)}))},y=new RegExp(`^lch\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<c>${chunkYISEJCI6_cjs.k})(?<cp>%?)\\s+(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),L=c=>{if(typeof c!="string")return null;let o=y.exec(c.trim())?.groups;if(!o)return null;let l=chunkYISEJCI6_cjs.l(o.l),r=o.cp?chunkYISEJCI6_cjs.l(o.c)*1.5:chunkYISEJCI6_cjs.l(o.c),t=o.hu?.toLowerCase()??"deg",n=chunkYISEJCI6_cjs.l(o.h)*(chunkYISEJCI6_cjs.d[t]??1),h=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return x(w({l,c:r,h:n,alpha:h}))};var T=(c,o,l)=>{c.prototype.toLch=function(r=2){let{l:t,c:n,h,alpha:i}=$(this._rawRgb()),b=chunkYISEJCI6_cjs.b(n,r);return {l:chunkYISEJCI6_cjs.b(t,r),c:b,h:n<.0015?0:chunkYISEJCI6_cjs.b(h,r),alpha:i,colorSpace:"lch"}},c.prototype.toLchString=function(r=2){let{l:t,c:n,h,alpha:i}=this.toLch(r),b=n===0?"none":h;return i<1?`lch(${t} ${n} ${b} / ${i})`:`lch(${t} ${n} ${b})`},o.push(m,L),l.push([m,"lch"],[L,"lch"]);},_=T;module.exports=_;//# sourceMappingURL=lch.cjs.map
'use strict';var chunkPI5KJ3ZM_cjs=require('../chunk-PI5KJ3ZM.cjs');require('../chunk-INDSIUQQ.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var w=c=>({l:chunkYISEJCI6_cjs.a(c.l,0,100),c:Math.max(0,c.c),h:chunkYISEJCI6_cjs.c(c.h),alpha:chunkYISEJCI6_cjs.a(c.alpha,0,1),colorSpace:"lch"}),$=c=>{let o=chunkPI5KJ3ZM_cjs.m(c),l=Math.sqrt(o.a**2+o.b**2),r=Math.atan2(o.b,o.a)/Math.PI*180;return {l:o.l,c:l,h:l<.0015?0:r<0?r+360:r,alpha:o.alpha,colorSpace:"lch"}};var x=({l:c,c:o,h:l,alpha:r})=>chunkPI5KJ3ZM_cjs.q({l:c,a:o*Math.cos(l*Math.PI/180),b:o*Math.sin(l*Math.PI/180),alpha:r,colorSpace:"lab"}),m=c=>{if(!chunkYISEJCI6_cjs.h(c)||c.colorSpace!=="lch"||!chunkYISEJCI6_cjs.i(c,["l","c","h"]))return null;let{l:o,c:l,h:r,alpha:t=1}=c;return !chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(l)||!chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)?null:x(w({l:chunkYISEJCI6_cjs.g(o),c:chunkYISEJCI6_cjs.g(l),h:chunkYISEJCI6_cjs.g(r),alpha:chunkYISEJCI6_cjs.g(t)}))},y=new RegExp(`^lch\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<c>${chunkYISEJCI6_cjs.k})(?<cp>%?)\\s+(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),L=c=>{if(typeof c!="string")return null;let o=y.exec(c.trim())?.groups;if(!o)return null;let l=chunkYISEJCI6_cjs.l(o.l),r=o.cp?chunkYISEJCI6_cjs.l(o.c)*1.5:chunkYISEJCI6_cjs.l(o.c),t=o.hu?.toLowerCase()??"deg",n=chunkYISEJCI6_cjs.l(o.h)*(chunkYISEJCI6_cjs.d[t]??1),h=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return x(w({l,c:r,h:n,alpha:h}))};var T=(c,o,l)=>{c.prototype.toLch=function(r=2){let{l:t,c:n,h,alpha:i}=$(this._rawRgb()),b=chunkYISEJCI6_cjs.b(n,r);return {l:chunkYISEJCI6_cjs.b(t,r),c:b,h:n<.0015?0:chunkYISEJCI6_cjs.b(h,r),alpha:i,colorSpace:"lch"}},c.prototype.toLchString=function(r=2){let{l:t,c:n,h,alpha:i}=this.toLch(r),b=n===0?"none":h;return i<1?`lch(${t} ${n} ${b} / ${i})`:`lch(${t} ${n} ${b})`},o.push(m,L),l.push([m,"lch"],[L,"lch"]);},_=T;module.exports=_;//# sourceMappingURL=lch.cjs.map
//# sourceMappingURL=lch.cjs.map

@@ -1,2 +0,2 @@

import { k as LchColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { k as LchColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { k as LchColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { k as LchColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {m as m$1,q}from'../chunk-4LKLL3IS.mjs';import'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,h,i,f,g,l,d,a,c,k}from'../chunk-IOXRZECH.mjs';var w=c$1=>({l:a(c$1.l,0,100),c:Math.max(0,c$1.c),h:c(c$1.h),alpha:a(c$1.alpha,0,1),colorSpace:"lch"}),$=c=>{let o=m$1(c),l=Math.sqrt(o.a**2+o.b**2),r=Math.atan2(o.b,o.a)/Math.PI*180;return {l:o.l,c:l,h:l<.0015?0:r<0?r+360:r,alpha:o.alpha,colorSpace:"lch"}};var x=({l:c,c:o,h:l,alpha:r})=>q({l:c,a:o*Math.cos(l*Math.PI/180),b:o*Math.sin(l*Math.PI/180),alpha:r,colorSpace:"lab"}),m=c=>{if(!h(c)||c.colorSpace!=="lch"||!i(c,["l","c","h"]))return null;let{l:o,c:l,h:r,alpha:t=1}=c;return !f(o)||!f(l)||!f(r)||!f(t)?null:x(w({l:g(o),c:g(l),h:g(r),alpha:g(t)}))},y=new RegExp(`^lch\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<c>${k})(?<cp>%?)\\s+(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),L=c=>{if(typeof c!="string")return null;let o=y.exec(c.trim())?.groups;if(!o)return null;let l$1=l(o.l),r=o.cp?l(o.c)*1.5:l(o.c),t=o.hu?.toLowerCase()??"deg",n=l(o.h)*(d[t]??1),h=o.al===void 0?1:l(o.al)/(o.alp?100:1);return x(w({l: l$1,c:r,h:n,alpha:h}))};var T=(c,o,l)=>{c.prototype.toLch=function(r=2){let{l:t,c:n,h,alpha:i}=$(this._rawRgb()),b$1=b(n,r);return {l:b(t,r),c:b$1,h:n<.0015?0:b(h,r),alpha:i,colorSpace:"lch"}},c.prototype.toLchString=function(r=2){let{l:t,c:n,h,alpha:i}=this.toLch(r),b=n===0?"none":h;return i<1?`lch(${t} ${n} ${b} / ${i})`:`lch(${t} ${n} ${b})`},o.push(m,L),l.push([m,"lch"],[L,"lch"]);},_=T;export{_ as default};//# sourceMappingURL=lch.mjs.map
import {m as m$1,q}from'../chunk-F4W4HJCD.mjs';import'../chunk-YLJRINFM.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,h,i,f,g,l,d,a,c,k}from'../chunk-IOXRZECH.mjs';var w=c$1=>({l:a(c$1.l,0,100),c:Math.max(0,c$1.c),h:c(c$1.h),alpha:a(c$1.alpha,0,1),colorSpace:"lch"}),$=c=>{let o=m$1(c),l=Math.sqrt(o.a**2+o.b**2),r=Math.atan2(o.b,o.a)/Math.PI*180;return {l:o.l,c:l,h:l<.0015?0:r<0?r+360:r,alpha:o.alpha,colorSpace:"lch"}};var x=({l:c,c:o,h:l,alpha:r})=>q({l:c,a:o*Math.cos(l*Math.PI/180),b:o*Math.sin(l*Math.PI/180),alpha:r,colorSpace:"lab"}),m=c=>{if(!h(c)||c.colorSpace!=="lch"||!i(c,["l","c","h"]))return null;let{l:o,c:l,h:r,alpha:t=1}=c;return !f(o)||!f(l)||!f(r)||!f(t)?null:x(w({l:g(o),c:g(l),h:g(r),alpha:g(t)}))},y=new RegExp(`^lch\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<c>${k})(?<cp>%?)\\s+(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),L=c=>{if(typeof c!="string")return null;let o=y.exec(c.trim())?.groups;if(!o)return null;let l$1=l(o.l),r=o.cp?l(o.c)*1.5:l(o.c),t=o.hu?.toLowerCase()??"deg",n=l(o.h)*(d[t]??1),h=o.al===void 0?1:l(o.al)/(o.alp?100:1);return x(w({l: l$1,c:r,h:n,alpha:h}))};var T=(c,o,l)=>{c.prototype.toLch=function(r=2){let{l:t,c:n,h,alpha:i}=$(this._rawRgb()),b$1=b(n,r);return {l:b(t,r),c:b$1,h:n<.0015?0:b(h,r),alpha:i,colorSpace:"lch"}},c.prototype.toLchString=function(r=2){let{l:t,c:n,h,alpha:i}=this.toLch(r),b=n===0?"none":h;return i<1?`lch(${t} ${n} ${b} / ${i})`:`lch(${t} ${n} ${b})`},o.push(m,L),l.push([m,"lch"],[L,"lch"]);},_=T;export{_ as default};//# sourceMappingURL=lch.mjs.map
//# sourceMappingURL=lch.mjs.map

@@ -1,2 +0,2 @@

import { q as Plugin } from '../colordx-FkeB37IC.cjs';
import { q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ interface MinifyOptions {

@@ -1,2 +0,2 @@

import { q as Plugin } from '../colordx-FkeB37IC.js';
import { q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ interface MinifyOptions {

@@ -1,2 +0,2 @@

'use strict';var chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-X5FCFNQN.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=chunkYISEJCI6_cjs.a(e,0,1);return new n({r:chunkYISEJCI6_cjs.b(l.r*(1-o)+t.r*o),g:chunkYISEJCI6_cjs.b(l.g*(1-o)+t.g*o),b:chunkYISEJCI6_cjs.b(l.b*(1-o)+t.b*o),alpha:chunkYISEJCI6_cjs.b(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=chunkGXECYURS_cjs.b(this._rawRgb()),l=chunkGXECYURS_cjs.b(new n(r)._rawRgb()),o=chunkYISEJCI6_cjs.a(e,0,1);return new n(chunkGXECYURS_cjs.d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:chunkYISEJCI6_cjs.b(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;module.exports=m;//# sourceMappingURL=mix.cjs.map
'use strict';var chunkTRRLWCL6_cjs=require('../chunk-TRRLWCL6.cjs');require('../chunk-INDSIUQQ.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=chunkYISEJCI6_cjs.a(e,0,1);return new n({r:chunkYISEJCI6_cjs.b(l.r*(1-o)+t.r*o),g:chunkYISEJCI6_cjs.b(l.g*(1-o)+t.g*o),b:chunkYISEJCI6_cjs.b(l.b*(1-o)+t.b*o),alpha:chunkYISEJCI6_cjs.b(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=chunkTRRLWCL6_cjs.b(this._rawRgb()),l=chunkTRRLWCL6_cjs.b(new n(r)._rawRgb()),o=chunkYISEJCI6_cjs.a(e,0,1);return new n(chunkTRRLWCL6_cjs.d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:chunkYISEJCI6_cjs.b(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;module.exports=m;//# sourceMappingURL=mix.cjs.map
//# sourceMappingURL=mix.cjs.map

@@ -1,2 +0,2 @@

import { A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {b as b$2,d}from'../chunk-J6CH5YTL.mjs';import'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {a,b as b$1}from'../chunk-IOXRZECH.mjs';var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=a(e,0,1);return new n({r:b$1(l.r*(1-o)+t.r*o),g:b$1(l.g*(1-o)+t.g*o),b:b$1(l.b*(1-o)+t.b*o),alpha:b$1(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=b$2(this._rawRgb()),l=b$2(new n(r)._rawRgb()),o=a(e,0,1);return new n(d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:b$1(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;export{m as default};//# sourceMappingURL=mix.mjs.map
import {b as b$2,d}from'../chunk-OX5CMKKI.mjs';import'../chunk-YLJRINFM.mjs';import'../chunk-Q3O3QQ4H.mjs';import {a,b as b$1}from'../chunk-IOXRZECH.mjs';var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=a(e,0,1);return new n({r:b$1(l.r*(1-o)+t.r*o),g:b$1(l.g*(1-o)+t.g*o),b:b$1(l.b*(1-o)+t.b*o),alpha:b$1(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=b$2(this._rawRgb()),l=b$2(new n(r)._rawRgb()),o=a(e,0,1);return new n(d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:b$1(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;export{m as default};//# sourceMappingURL=mix.mjs.map
//# sourceMappingURL=mix.mjs.map

@@ -1,2 +0,2 @@

import { q as Plugin } from '../colordx-FkeB37IC.cjs';
import { q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { q as Plugin } from '../colordx-FkeB37IC.js';
import { q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkJVG55LEC_cjs=require('../chunk-JVG55LEC.cjs'),chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-GU6TZJ4O.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var $=(r,o,e)=>chunkGXECYURS_cjs.a(...chunkJVG55LEC_cjs.c(r,o,e)),A=(r,o,e)=>{let[n,t,m]=chunkJVG55LEC_cjs.b(r,o,e);return [chunkX5FCFNQN_cjs.b(n),chunkX5FCFNQN_cjs.b(t),chunkX5FCFNQN_cjs.b(m)]},S=(r,o,e,n)=>{chunkJVG55LEC_cjs.a(r,o,e,n),r[0]=chunkX5FCFNQN_cjs.b(r[0]),r[1]=chunkX5FCFNQN_cjs.b(r[1]),r[2]=chunkX5FCFNQN_cjs.b(r[2]);},E=(r,o,e)=>A(...chunkJVG55LEC_cjs.s(r,o,e)),q=(r,o,e,n)=>{chunkJVG55LEC_cjs.t(r,o,e,n),S(r,r[0],r[1],r[2]);},I=Math.PI/180,R=(r,o,e)=>A(...chunkJVG55LEC_cjs.A(r,o,e)),M=(r,o,e,n)=>{chunkJVG55LEC_cjs.B(r,o,e,n),S(r,r[0],r[1],r[2]);},z=(r,o,e)=>{let n=e*I;return R(r,o*Math.cos(n),o*Math.sin(n))},H=(r,o,e,n)=>{let t=n*I;M(r,o,e*Math.cos(t),e*Math.sin(t));},J=r=>chunkJVG55LEC_cjs.q(r,chunkJVG55LEC_cjs.g),v=(r,o,e)=>{r.toGamutP3=n=>{let t=chunkJVG55LEC_cjs.r(n,chunkJVG55LEC_cjs.g,$);if(t===null)return new r(n);let[m,a,u]=t.linear,[k,F,G]=chunkJVG55LEC_cjs.c(m,a,u);return r._makeFromLinearSrgb(k,F,G,t.alpha)},r.prototype.toP3=function(n=4){let{r:t,g:m,b:a,alpha:u}=chunkJVG55LEC_cjs.d(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(t,n),g:chunkYISEJCI6_cjs.b(m,n),b:chunkYISEJCI6_cjs.b(a,n),alpha:u,colorSpace:"display-p3"}},r.prototype.toP3String=function(n=4){let{r:t,g:m,b:a,alpha:u}=this.toP3(n);return u<1?`color(display-p3 ${t} ${m} ${a} / ${u})`:`color(display-p3 ${t} ${m} ${a})`},o.push(chunkJVG55LEC_cjs.f,chunkJVG55LEC_cjs.e),e.push([chunkJVG55LEC_cjs.f,"p3"],[chunkJVG55LEC_cjs.e,"p3"]);},K=v;exports.default=K;exports.inGamutP3=J;exports.labToP3Channels=R;exports.labToP3ChannelsInto=M;exports.lchToP3Channels=z;exports.lchToP3ChannelsInto=H;exports.linearToP3Channels=A;exports.linearToP3ChannelsInto=S;exports.oklchToP3Channels=E;exports.oklchToP3ChannelsInto=q;//# sourceMappingURL=p3.cjs.map
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkYXTI4MTI_cjs=require('../chunk-YXTI4MTI.cjs'),chunkTRRLWCL6_cjs=require('../chunk-TRRLWCL6.cjs');require('../chunk-PI5KJ3ZM.cjs');var chunkINDSIUQQ_cjs=require('../chunk-INDSIUQQ.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var $=(r,o,e)=>chunkTRRLWCL6_cjs.a(...chunkYXTI4MTI_cjs.c(r,o,e)),A=(r,o,e)=>{let[n,t,m]=chunkYXTI4MTI_cjs.b(r,o,e);return [chunkINDSIUQQ_cjs.b(n),chunkINDSIUQQ_cjs.b(t),chunkINDSIUQQ_cjs.b(m)]},S=(r,o,e,n)=>{chunkYXTI4MTI_cjs.a(r,o,e,n),r[0]=chunkINDSIUQQ_cjs.b(r[0]),r[1]=chunkINDSIUQQ_cjs.b(r[1]),r[2]=chunkINDSIUQQ_cjs.b(r[2]);},E=(r,o,e)=>A(...chunkYXTI4MTI_cjs.s(r,o,e)),q=(r,o,e,n)=>{chunkYXTI4MTI_cjs.t(r,o,e,n),S(r,r[0],r[1],r[2]);},I=Math.PI/180,R=(r,o,e)=>A(...chunkYXTI4MTI_cjs.A(r,o,e)),M=(r,o,e,n)=>{chunkYXTI4MTI_cjs.B(r,o,e,n),S(r,r[0],r[1],r[2]);},z=(r,o,e)=>{let n=e*I;return R(r,o*Math.cos(n),o*Math.sin(n))},H=(r,o,e,n)=>{let t=n*I;M(r,o,e*Math.cos(t),e*Math.sin(t));},J=r=>chunkYXTI4MTI_cjs.q(r,chunkYXTI4MTI_cjs.g),v=(r,o,e)=>{r.toGamutP3=n=>{let t=chunkYXTI4MTI_cjs.r(n,chunkYXTI4MTI_cjs.g,$);if(t===null)return new r(n);let[m,a,u]=t.linear,[k,F,G]=chunkYXTI4MTI_cjs.c(m,a,u);return r._makeFromLinearSrgb(k,F,G,t.alpha)},r.prototype.toP3=function(n=4){let{r:t,g:m,b:a,alpha:u}=chunkYXTI4MTI_cjs.d(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(t,n),g:chunkYISEJCI6_cjs.b(m,n),b:chunkYISEJCI6_cjs.b(a,n),alpha:u,colorSpace:"display-p3"}},r.prototype.toP3String=function(n=4){let{r:t,g:m,b:a,alpha:u}=this.toP3(n);return u<1?`color(display-p3 ${t} ${m} ${a} / ${u})`:`color(display-p3 ${t} ${m} ${a})`},o.push(chunkYXTI4MTI_cjs.f,chunkYXTI4MTI_cjs.e),e.push([chunkYXTI4MTI_cjs.f,"p3"],[chunkYXTI4MTI_cjs.e,"p3"]);},K=v;exports.default=K;exports.inGamutP3=J;exports.labToP3Channels=R;exports.labToP3ChannelsInto=M;exports.lchToP3Channels=z;exports.lchToP3ChannelsInto=H;exports.linearToP3Channels=A;exports.linearToP3ChannelsInto=S;exports.oklchToP3Channels=E;exports.oklchToP3ChannelsInto=q;//# sourceMappingURL=p3.cjs.map
//# sourceMappingURL=p3.cjs.map

@@ -1,2 +0,2 @@

import { P as P3Color, A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { P as P3Color, A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { P as P3Color, A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { P as P3Color, A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {b,a,s,t,A as A$1,B,q as q$1,g,r,c,d,f,e}from'../chunk-BXGFP5BN.mjs';import {a as a$1}from'../chunk-J6CH5YTL.mjs';import'../chunk-4LKLL3IS.mjs';import {b as b$1}from'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b as b$2}from'../chunk-IOXRZECH.mjs';var $=(r,o,e)=>a$1(...c(r,o,e)),A=(r,o,e)=>{let[n,t,m]=b(r,o,e);return [b$1(n),b$1(t),b$1(m)]},S=(r,o,e,n)=>{a(r,o,e,n),r[0]=b$1(r[0]),r[1]=b$1(r[1]),r[2]=b$1(r[2]);},E=(r,o,e)=>A(...s(r,o,e)),q=(r,o,e,n)=>{t(r,o,e,n),S(r,r[0],r[1],r[2]);},I=Math.PI/180,R=(r,o,e)=>A(...A$1(r,o,e)),M=(r,o,e,n)=>{B(r,o,e,n),S(r,r[0],r[1],r[2]);},z=(r,o,e)=>{let n=e*I;return R(r,o*Math.cos(n),o*Math.sin(n))},H=(r,o,e,n)=>{let t=n*I;M(r,o,e*Math.cos(t),e*Math.sin(t));},J=r=>q$1(r,g),v=(r$1,o,e$1)=>{r$1.toGamutP3=n=>{let t=r(n,g,$);if(t===null)return new r$1(n);let[m,a,u]=t.linear,[k,F,G]=c(m,a,u);return r$1._makeFromLinearSrgb(k,F,G,t.alpha)},r$1.prototype.toP3=function(n=4){let{r:t,g:m,b:a,alpha:u}=d(this._rawRgb());return {r:b$2(t,n),g:b$2(m,n),b:b$2(a,n),alpha:u,colorSpace:"display-p3"}},r$1.prototype.toP3String=function(n=4){let{r:t,g:m,b:a,alpha:u}=this.toP3(n);return u<1?`color(display-p3 ${t} ${m} ${a} / ${u})`:`color(display-p3 ${t} ${m} ${a})`},o.push(f,e),e$1.push([f,"p3"],[e,"p3"]);},K=v;export{K as default,J as inGamutP3,R as labToP3Channels,M as labToP3ChannelsInto,z as lchToP3Channels,H as lchToP3ChannelsInto,A as linearToP3Channels,S as linearToP3ChannelsInto,E as oklchToP3Channels,q as oklchToP3ChannelsInto};//# sourceMappingURL=p3.mjs.map
import {b,a,s,t,A as A$1,B,q as q$1,g,r,c,d,f,e}from'../chunk-3LS3HCHH.mjs';import {a as a$1}from'../chunk-OX5CMKKI.mjs';import'../chunk-F4W4HJCD.mjs';import {b as b$1}from'../chunk-YLJRINFM.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b as b$2}from'../chunk-IOXRZECH.mjs';var $=(r,o,e)=>a$1(...c(r,o,e)),A=(r,o,e)=>{let[n,t,m]=b(r,o,e);return [b$1(n),b$1(t),b$1(m)]},S=(r,o,e,n)=>{a(r,o,e,n),r[0]=b$1(r[0]),r[1]=b$1(r[1]),r[2]=b$1(r[2]);},E=(r,o,e)=>A(...s(r,o,e)),q=(r,o,e,n)=>{t(r,o,e,n),S(r,r[0],r[1],r[2]);},I=Math.PI/180,R=(r,o,e)=>A(...A$1(r,o,e)),M=(r,o,e,n)=>{B(r,o,e,n),S(r,r[0],r[1],r[2]);},z=(r,o,e)=>{let n=e*I;return R(r,o*Math.cos(n),o*Math.sin(n))},H=(r,o,e,n)=>{let t=n*I;M(r,o,e*Math.cos(t),e*Math.sin(t));},J=r=>q$1(r,g),v=(r$1,o,e$1)=>{r$1.toGamutP3=n=>{let t=r(n,g,$);if(t===null)return new r$1(n);let[m,a,u]=t.linear,[k,F,G]=c(m,a,u);return r$1._makeFromLinearSrgb(k,F,G,t.alpha)},r$1.prototype.toP3=function(n=4){let{r:t,g:m,b:a,alpha:u}=d(this._rawRgb());return {r:b$2(t,n),g:b$2(m,n),b:b$2(a,n),alpha:u,colorSpace:"display-p3"}},r$1.prototype.toP3String=function(n=4){let{r:t,g:m,b:a,alpha:u}=this.toP3(n);return u<1?`color(display-p3 ${t} ${m} ${a} / ${u})`:`color(display-p3 ${t} ${m} ${a})`},o.push(f,e),e$1.push([f,"p3"],[e,"p3"]);},K=v;export{K as default,J as inGamutP3,R as labToP3Channels,M as labToP3ChannelsInto,z as lchToP3Channels,H as lchToP3ChannelsInto,A as linearToP3Channels,S as linearToP3ChannelsInto,E as oklchToP3Channels,q as oklchToP3ChannelsInto};//# sourceMappingURL=p3.mjs.map
//# sourceMappingURL=p3.mjs.map

@@ -1,2 +0,2 @@

'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkJVG55LEC_cjs=require('../chunk-JVG55LEC.cjs'),chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-GU6TZJ4O.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var $=(r,n,o)=>chunkGXECYURS_cjs.a(...chunkJVG55LEC_cjs.j(r,n,o)),A=(r,n,o)=>{let[e,t,m]=chunkJVG55LEC_cjs.i(r,n,o);return [chunkX5FCFNQN_cjs.d(e),chunkX5FCFNQN_cjs.d(t),chunkX5FCFNQN_cjs.d(m)]},S=(r,n,o,e)=>{chunkJVG55LEC_cjs.h(r,n,o,e),r[0]=chunkX5FCFNQN_cjs.d(r[0]),r[1]=chunkX5FCFNQN_cjs.d(r[1]),r[2]=chunkX5FCFNQN_cjs.d(r[2]);},E=(r,n,o)=>A(...chunkJVG55LEC_cjs.s(r,n,o)),q=(r,n,o,e)=>{chunkJVG55LEC_cjs.t(r,n,o,e),S(r,r[0],r[1],r[2]);},I=Math.PI/180,v=(r,n,o)=>A(...chunkJVG55LEC_cjs.A(r,n,o)),M=(r,n,o,e)=>{chunkJVG55LEC_cjs.B(r,n,o,e),S(r,r[0],r[1],r[2]);},z=(r,n,o)=>{let e=o*I;return v(r,n*Math.cos(e),n*Math.sin(e))},H=(r,n,o,e)=>{let t=e*I;M(r,n,o*Math.cos(t),o*Math.sin(t));},J=r=>chunkJVG55LEC_cjs.q(r,chunkJVG55LEC_cjs.n),_=(r,n,o)=>{r.toGamutRec2020=e=>{let t=chunkJVG55LEC_cjs.r(e,chunkJVG55LEC_cjs.n,$);if(t===null)return new r(e);let[m,b,a]=t.linear,[k,F,G]=chunkJVG55LEC_cjs.j(m,b,a);return r._makeFromLinearSrgb(k,F,G,t.alpha)},r.prototype.toRec2020=function(e=4){let{r:t,g:m,b,alpha:a}=chunkJVG55LEC_cjs.k(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(t,e),g:chunkYISEJCI6_cjs.b(m,e),b:chunkYISEJCI6_cjs.b(b,e),alpha:a,colorSpace:"rec2020"}},r.prototype.toRec2020String=function(e=4){let{r:t,g:m,b,alpha:a}=this.toRec2020(e);return a<1?`color(rec2020 ${t} ${m} ${b} / ${a})`:`color(rec2020 ${t} ${m} ${b})`},n.push(chunkJVG55LEC_cjs.m,chunkJVG55LEC_cjs.l),o.push([chunkJVG55LEC_cjs.m,"rec2020"],[chunkJVG55LEC_cjs.l,"rec2020"]);},K=_;exports.default=K;exports.inGamutRec2020=J;exports.labToRec2020Channels=v;exports.labToRec2020ChannelsInto=M;exports.lchToRec2020Channels=z;exports.lchToRec2020ChannelsInto=H;exports.linearToRec2020Channels=A;exports.linearToRec2020ChannelsInto=S;exports.oklchToRec2020Channels=E;exports.oklchToRec2020ChannelsInto=q;//# sourceMappingURL=rec2020.cjs.map
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkYXTI4MTI_cjs=require('../chunk-YXTI4MTI.cjs'),chunkTRRLWCL6_cjs=require('../chunk-TRRLWCL6.cjs');require('../chunk-PI5KJ3ZM.cjs');var chunkINDSIUQQ_cjs=require('../chunk-INDSIUQQ.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var $=(r,n,o)=>chunkTRRLWCL6_cjs.a(...chunkYXTI4MTI_cjs.j(r,n,o)),A=(r,n,o)=>{let[e,t,m]=chunkYXTI4MTI_cjs.i(r,n,o);return [chunkINDSIUQQ_cjs.d(e),chunkINDSIUQQ_cjs.d(t),chunkINDSIUQQ_cjs.d(m)]},S=(r,n,o,e)=>{chunkYXTI4MTI_cjs.h(r,n,o,e),r[0]=chunkINDSIUQQ_cjs.d(r[0]),r[1]=chunkINDSIUQQ_cjs.d(r[1]),r[2]=chunkINDSIUQQ_cjs.d(r[2]);},E=(r,n,o)=>A(...chunkYXTI4MTI_cjs.s(r,n,o)),q=(r,n,o,e)=>{chunkYXTI4MTI_cjs.t(r,n,o,e),S(r,r[0],r[1],r[2]);},I=Math.PI/180,v=(r,n,o)=>A(...chunkYXTI4MTI_cjs.A(r,n,o)),M=(r,n,o,e)=>{chunkYXTI4MTI_cjs.B(r,n,o,e),S(r,r[0],r[1],r[2]);},z=(r,n,o)=>{let e=o*I;return v(r,n*Math.cos(e),n*Math.sin(e))},H=(r,n,o,e)=>{let t=e*I;M(r,n,o*Math.cos(t),o*Math.sin(t));},J=r=>chunkYXTI4MTI_cjs.q(r,chunkYXTI4MTI_cjs.n),_=(r,n,o)=>{r.toGamutRec2020=e=>{let t=chunkYXTI4MTI_cjs.r(e,chunkYXTI4MTI_cjs.n,$);if(t===null)return new r(e);let[m,b,a]=t.linear,[k,F,G]=chunkYXTI4MTI_cjs.j(m,b,a);return r._makeFromLinearSrgb(k,F,G,t.alpha)},r.prototype.toRec2020=function(e=4){let{r:t,g:m,b,alpha:a}=chunkYXTI4MTI_cjs.k(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(t,e),g:chunkYISEJCI6_cjs.b(m,e),b:chunkYISEJCI6_cjs.b(b,e),alpha:a,colorSpace:"rec2020"}},r.prototype.toRec2020String=function(e=4){let{r:t,g:m,b,alpha:a}=this.toRec2020(e);return a<1?`color(rec2020 ${t} ${m} ${b} / ${a})`:`color(rec2020 ${t} ${m} ${b})`},n.push(chunkYXTI4MTI_cjs.m,chunkYXTI4MTI_cjs.l),o.push([chunkYXTI4MTI_cjs.m,"rec2020"],[chunkYXTI4MTI_cjs.l,"rec2020"]);},K=_;exports.default=K;exports.inGamutRec2020=J;exports.labToRec2020Channels=v;exports.labToRec2020ChannelsInto=M;exports.lchToRec2020Channels=z;exports.lchToRec2020ChannelsInto=H;exports.linearToRec2020Channels=A;exports.linearToRec2020ChannelsInto=S;exports.oklchToRec2020Channels=E;exports.oklchToRec2020ChannelsInto=q;//# sourceMappingURL=rec2020.cjs.map
//# sourceMappingURL=rec2020.cjs.map

@@ -1,2 +0,2 @@

import { R as Rec2020Color, A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.cjs';
import { R as Rec2020Color, A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.cjs';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import { R as Rec2020Color, A as AnyColor, q as Plugin } from '../colordx-FkeB37IC.js';
import { R as Rec2020Color, A as AnyColor, q as Plugin } from '../colordx-dFaFF5rN.js';

@@ -3,0 +3,0 @@ declare module '@colordx/core' {

@@ -1,2 +0,2 @@

import {i,h,s,t,A as A$1,B,q as q$1,n,r,j,k,m,l}from'../chunk-BXGFP5BN.mjs';import {a}from'../chunk-J6CH5YTL.mjs';import'../chunk-4LKLL3IS.mjs';import {d}from'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b}from'../chunk-IOXRZECH.mjs';var $=(r,n,o)=>a(...j(r,n,o)),A=(r,n,o)=>{let[e,t,m]=i(r,n,o);return [d(e),d(t),d(m)]},S=(r,n,o,e)=>{h(r,n,o,e),r[0]=d(r[0]),r[1]=d(r[1]),r[2]=d(r[2]);},E=(r,n,o)=>A(...s(r,n,o)),q=(r,n,o,e)=>{t(r,n,o,e),S(r,r[0],r[1],r[2]);},I=Math.PI/180,v=(r,n,o)=>A(...A$1(r,n,o)),M=(r,n,o,e)=>{B(r,n,o,e),S(r,r[0],r[1],r[2]);},z=(r,n,o)=>{let e=o*I;return v(r,n*Math.cos(e),n*Math.sin(e))},H=(r,n,o,e)=>{let t=e*I;M(r,n,o*Math.cos(t),o*Math.sin(t));},J=r=>q$1(r,n),_=(r$1,n$1,o)=>{r$1.toGamutRec2020=e=>{let t=r(e,n,$);if(t===null)return new r$1(e);let[m,b,a]=t.linear,[k,F,G]=j(m,b,a);return r$1._makeFromLinearSrgb(k,F,G,t.alpha)},r$1.prototype.toRec2020=function(e=4){let{r:t,g:m,b: b$1,alpha:a}=k(this._rawRgb());return {r:b(t,e),g:b(m,e),b:b(b$1,e),alpha:a,colorSpace:"rec2020"}},r$1.prototype.toRec2020String=function(e=4){let{r:t,g:m,b,alpha:a}=this.toRec2020(e);return a<1?`color(rec2020 ${t} ${m} ${b} / ${a})`:`color(rec2020 ${t} ${m} ${b})`},n$1.push(m,l),o.push([m,"rec2020"],[l,"rec2020"]);},K=_;export{K as default,J as inGamutRec2020,v as labToRec2020Channels,M as labToRec2020ChannelsInto,z as lchToRec2020Channels,H as lchToRec2020ChannelsInto,A as linearToRec2020Channels,S as linearToRec2020ChannelsInto,E as oklchToRec2020Channels,q as oklchToRec2020ChannelsInto};//# sourceMappingURL=rec2020.mjs.map
import {i,h,s,t,A as A$1,B,q as q$1,n,r,j,k,m,l}from'../chunk-3LS3HCHH.mjs';import {a}from'../chunk-OX5CMKKI.mjs';import'../chunk-F4W4HJCD.mjs';import {d}from'../chunk-YLJRINFM.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b}from'../chunk-IOXRZECH.mjs';var $=(r,n,o)=>a(...j(r,n,o)),A=(r,n,o)=>{let[e,t,m]=i(r,n,o);return [d(e),d(t),d(m)]},S=(r,n,o,e)=>{h(r,n,o,e),r[0]=d(r[0]),r[1]=d(r[1]),r[2]=d(r[2]);},E=(r,n,o)=>A(...s(r,n,o)),q=(r,n,o,e)=>{t(r,n,o,e),S(r,r[0],r[1],r[2]);},I=Math.PI/180,v=(r,n,o)=>A(...A$1(r,n,o)),M=(r,n,o,e)=>{B(r,n,o,e),S(r,r[0],r[1],r[2]);},z=(r,n,o)=>{let e=o*I;return v(r,n*Math.cos(e),n*Math.sin(e))},H=(r,n,o,e)=>{let t=e*I;M(r,n,o*Math.cos(t),o*Math.sin(t));},J=r=>q$1(r,n),_=(r$1,n$1,o)=>{r$1.toGamutRec2020=e=>{let t=r(e,n,$);if(t===null)return new r$1(e);let[m,b,a]=t.linear,[k,F,G]=j(m,b,a);return r$1._makeFromLinearSrgb(k,F,G,t.alpha)},r$1.prototype.toRec2020=function(e=4){let{r:t,g:m,b: b$1,alpha:a}=k(this._rawRgb());return {r:b(t,e),g:b(m,e),b:b(b$1,e),alpha:a,colorSpace:"rec2020"}},r$1.prototype.toRec2020String=function(e=4){let{r:t,g:m,b,alpha:a}=this.toRec2020(e);return a<1?`color(rec2020 ${t} ${m} ${b} / ${a})`:`color(rec2020 ${t} ${m} ${b})`},n$1.push(m,l),o.push([m,"rec2020"],[l,"rec2020"]);},K=_;export{K as default,J as inGamutRec2020,v as labToRec2020Channels,M as labToRec2020ChannelsInto,z as lchToRec2020Channels,H as lchToRec2020ChannelsInto,A as linearToRec2020Channels,S as linearToRec2020ChannelsInto,E as oklchToRec2020Channels,q as oklchToRec2020ChannelsInto};//# sourceMappingURL=rec2020.mjs.map
//# sourceMappingURL=rec2020.mjs.map
{
"name": "@colordx/core",
"version": "5.4.2",
"version": "5.4.3",
"description": "A high-performance color library with extended support for modern color spaces including OKLCH, OKLAB, Display-P3, and more",

@@ -78,2 +78,4 @@ "author": "Dmitrii Kriaklin",

"test:types": "tsc --noEmit -p tsconfig.tests.json",
"test:mutate": "stryker run",
"knip": "knip",
"lint": "eslint src",

@@ -100,4 +102,5 @@ "format": "prettier --write \"src/**/*.ts\"",

"@anthropic-ai/sdk": "^0.80.0",
"@changesets/changelog-github": "^0.6.0",
"@changesets/cli": "^2.30.0",
"@stryker-mutator/core": "^9.6.1",
"@stryker-mutator/vitest-runner": "^9.6.1",
"@texel/color": "^1.1.11",

@@ -108,11 +111,8 @@ "@trivago/prettier-plugin-sort-imports": "^6.0.2",

"@types/tinycolor2": "^1",
"@typescript-eslint/eslint-plugin": "^8.57.1",
"@typescript-eslint/parser": "^8.57.1",
"@vitest/coverage-v8": "^4.1.0",
"chroma-js": "^3.2.0",
"color": "^5.0.3",
"color-bits": "^1.1.1",
"colord": "^2.9.3",
"colorjs.io": "^0.6.1",
"culori": "^4.0.2",
"esbuild": "^0.28.0",
"eslint": "^9.39.0",

@@ -122,2 +122,3 @@ "eslint-config-prettier": "^10.1.8",

"husky": "^9.1.7",
"knip": "^6.7.0",
"lint-staged": "^16.4.0",

@@ -124,0 +125,0 @@ "mitata": "^1.0.34",

@@ -45,4 +45,4 @@ <p align="center">

colordx('#ff0000').toHex(); // '#ff0000'
colordx('#ff0000').toOklch(); // { l: 0.628, c: 0.2577, h: 29.2339, alpha: 1 }
colordx('#ff0000').toOklchString(); // 'oklch(0.628 0.2577 29.2339)'
colordx('#ff0000').toOklch(); // { l: 0.62796, c: 0.25768, h: 29.23389, alpha: 1 }
colordx('#ff0000').toOklchString(); // 'oklch(0.62796 0.25768 29.23389)'

@@ -123,6 +123,6 @@ // Works from any input format — hex, rgb(), hsl(), oklch(), oklab(), plain objects:

.toHwbString() // 'hwb(0 0% 0%)'
.toOklab() // { l: 0.628, a: 0.2249, b: 0.1258, alpha: 1 }
.toOklabString() // 'oklab(0.628 0.2249 0.1258)'
.toOklch() // { l: 0.628, c: 0.2577, h: 29.2339, alpha: 1 }
.toOklchString() // 'oklch(0.628 0.2577 29.2339)'
.toOklab() // { l: 0.62796, a: 0.22486, b: 0.12585, alpha: 1 }
.toOklabString() // 'oklab(0.62796 0.22486 0.12585)'
.toOklch() // { l: 0.62796, c: 0.25768, h: 29.23389, alpha: 1 }
.toOklchString() // 'oklch(0.62796 0.25768 29.23389)'
// With p3 plugin loaded:

@@ -332,7 +332,7 @@ .toP3() // { r: 0.9175, g: 0.2003, b: 0.1386, alpha: 1, colorSpace: 'display-p3' }

// 2. Map — CSS Color 4 gamut mapping (preserves lightness + hue, reduces chroma)
colordx(input).mapSrgb().toOklchString(); // 'oklch(0.5091 0.0938 177.8489)'
colordx(input).mapSrgb().toOklchString(); // 'oklch(0.50907 0.09379 177.84892)'
colordx(input).mapSrgb().toRgbString(); // 'rgb(0 119 102)'
// 3. Clamp — naive-clip into sRGB as a Colordx (matches browser, but hue drifts)
colordx(input).clampSrgb().toOklchString(); // 'oklch(0.6012 0.1276 164.2989)'
colordx(input).clampSrgb().toOklchString(); // 'oklch(0.60125 0.1276 164.29892)'
colordx(input).clampSrgb().toRgbString(); // 'rgb(0 152 108)' — same bytes as (1)

@@ -742,3 +742,3 @@ ```

colordx('#ff0000').toOklchString(); // 'oklch(0.628 0.2577 29.2339)'
colordx('#ff0000').toOklchString(); // 'oklch(0.62796 0.25768 29.23389)'
colordx('#ff0000').toOklchString(2); // 'oklch(0.63 0.26 29.23)'

@@ -745,0 +745,0 @@ ```

import {a,b as b$1}from'./chunk-FXCFKFXK.mjs';import {a as a$2}from'./chunk-Q3O3QQ4H.mjs';import {a as a$1,b,h,i,e,f,g,l,k}from'./chunk-IOXRZECH.mjs';var L=96.4295675298354,O=100,w=82.51046025104603,lo=.4123907992659595,ao=.35758433938387796,co=.1804807884018343,eo=.21263900587151036,bo=.7151686787677559,uo=.07219231536073371,po=.01933081871559185,_o=.11919477979462599,yo=.9505321522496606,j=.032409699419045215,B=-0.015373831775700935,G=-0.004986107602930032,I=-0.009692436362808799,F=.018759675015077207,P=.0004155505740717561,U=.000556300796969936,v=-0.002039769588889766,H=.010569715142428786,Wo=1.0479297925449969,Eo=.022946870601609652,qo=-0.05019226628920524,Ao=.02962780877005599,jo=.9904344267538799,Bo=-0.017073799063418826,Go=-0.009243040646204504,Io=.015055191490298152,Fo=.7518742814281371,go=.955473421488075,xo=-0.02309845494876471,mo=.06325924320057072,Do=-0.0283697093338637,zo=1.0099953980813041,io=.021041441191917323,Xo=.012314014864481998,ho=-0.020507649298898964,Co=1.330365926242124,sn=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$2=a(t/255);return {x:100*(lo*r+ao*l+co*a$2),y:100*(eo*r+bo*l+uo*a$2),z:100*(po*r+_o*l+yo*a$2),alpha:a$1(b(s,3),0,1),colorSpace:"xyz-d65"}},Po=(n,o,t)=>[j*n+B*o+G*t,I*n+F*o+P*t,U*n+v*o+H*t];var fo=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=Po(n,o,t);return {r:b$1(r)*255,g:b$1(l)*255,b:b$1(a)*255,alpha:s}},To=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$2=a(t/255),p=100*(lo*r+ao*l+co*a$2),e=100*(eo*r+bo*l+uo*a$2),g=100*(po*r+_o*l+yo*a$2);return {x:Wo*p+Eo*e+qo*g,y:Ao*p+jo*e+Bo*g,z:Go*p+Io*e+Fo*g,alpha:a$1(b(s,3),0,1)}},ln=(n,o,t,s)=>{let r=go*o+xo*t+mo*s,l=Do*o+zo*t+io*s,a=Xo*o+ho*t+Co*s;n[0]=j*r+B*l+G*a,n[1]=I*r+F*l+P*a,n[2]=U*r+v*l+H*a;},M=(n,o,t)=>{let s=go*n+xo*o+mo*t,r=Do*n+zo*o+io*t,l=Xo*n+ho*o+Co*t;return [j*s+B*r+G*l,I*s+F*r+P*l,U*s+v*r+H*l]},Ro=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return a$2({r:b$1(r)*255,g:b$1(l)*255,b:b$1(a)*255,alpha:s})},So=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return {r:b$1(r)*255,g:b$1(l)*255,b:b$1(a)*255,alpha:s}},an=n=>{if(!h(n)||n.colorSpace==="xyz-d65"||!i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !e(o)||!e(t)||!e(s)||!e(r)?null:So({x:o,y:t,z:s,alpha:a$1(r,0,1)})},cn=n=>{if(!h(n)||n.colorSpace!=="xyz-d65"||!i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !f(o)||!f(t)||!f(s)||!f(r)?null:fo({x:g(o),y:g(t),z:g(s),alpha:a$1(g(r),0,1)})},Uo=new RegExp(`^color\\(\\s*xyz-d65\\s+(?<x>${k})(?<xp>%?)\\s+(?<y>${k})(?<yp>%?)\\s+(?<z>${k})(?<zp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),vo=new RegExp(`^color\\(\\s*xyz-d50\\s+(?<x>${k})(?<xp>%?)\\s+(?<y>${k})(?<yp>%?)\\s+(?<z>${k})(?<zp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),en=n=>{if(typeof n!="string")return null;let o=Uo.exec(n.trim())?.groups;if(!o)return null;let t=l(o.x),s=l(o.y),r=l(o.z),l$1=o.al===void 0?1:l(o.al)/(o.alp?100:1);return fo({x:t,y:s,z:r,alpha:a$1(l$1,0,1)})},bn=n=>{if(typeof n!="string")return null;let o=vo.exec(n.trim())?.groups;if(!o)return null;let t=l(o.x),s=l(o.y),r=l(o.z),l$1=o.al===void 0?1:l(o.al)/(o.alp?100:1);return So({x:t,y:s,z:r,alpha:a$1(l$1,0,1)})};var Ho=.3127/.329*100,Ko=100,Vo=(1-.3127-.329)/.329*100,S=216/24389,z=24389/27,C=n=>n>S?Math.cbrt(n):(z*n+16)/116,Jo=({x:n,y:o,z:t,alpha:s})=>{let r=C(o/O);return {l:116*r-16,a:500*(C(n/L)-r)||0,b:200*(r-C(t/w))||0,alpha:b(s,3),colorSpace:"lab"}},Lo=(n,o,t)=>{let s=(n+16)/116,r=o/500+s,l=s-t/200;return [(r**3>S?r**3:(116*r-16)/z)*L,(n>8?s**3:n/z)*O,(l**3>S?l**3:(116*l-16)/z)*w]},gn=(n,o,t,s)=>{let r=(o+16)/116,l=t/500+r,a=r-s/200;n[0]=(l**3>S?l**3:(116*l-16)/z)*L,n[1]=(o>8?r**3:o/z)*O,n[2]=(a**3>S?a**3:(116*a-16)/z)*w;},Qo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t);return {x:r,y:l,z:a,alpha:s}},xn=n=>Jo(To(n)),mn=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$1=a(t/255),p=100*(.4123907992659595*r+.35758433938387796*l+.1804807884018343*a$1),e=100*(.21263900587151036*r+.7151686787677559*l+.07219231536073371*a$1),g=100*(.01933081871559185*r+.11919477979462599*l+.9505321522496606*a$1),f=C(e/Ko);return {l:116*f-16,a:500*(C(p/Ho)-f)||0,b:200*(f-C(g/Vo))||0,alpha:b(s,3),colorSpace:"lab"}},Dn=(n,o)=>{let{l:t,a:s,b:r}=n,{l,a,b:p}=o,e=Math.PI/180,g=180/Math.PI,f=Math.sqrt(s**2+r**2),wo=Math.sqrt(a**2+p**2),K=((f+wo)/2)**7,V=.5*(1-Math.sqrt(K/(K+25**7))),Y=s*(1+V),Z=a*(1+V),k=Math.sqrt(Y**2+r**2),$=Math.sqrt(Z**2+p**2),N=(k+$)/2,W=Y===0&&r===0?0:Math.atan2(r,Y)*g,E=Z===0&&p===0?0:Math.atan2(p,Z)*g,i=W<0?W+360:W,X=E<0?E+360:E,q=X-i,A=Math.abs(X-i);A>180&&X<=i?q+=360:A>180&&X>i&&(q-=360);let J=(t+l)/2,D=i+X;A<=180?D/=2:D=(i+X<360?D+360:D-360)/2;let Mo=1-.17*Math.cos(e*(D-30))+.24*Math.cos(2*e*D)+.32*Math.cos(e*(3*D+6))-.2*Math.cos(e*(4*D-63)),Yo=l-t,Q=$-k,oo=2*Math.sin(e*q/2)*Math.sqrt(k*$),Zo=1+.015*(J-50)**2/Math.sqrt(20+(J-50)**2),no=1+.045*N,ro=1+.015*N*Mo,to=N**7,ko=2*Math.sqrt(to/(to+25**7)),$o=30*Math.exp(-(((D-275)/25)**2)),No=-ko*Math.sin(2*e*$o);return Math.sqrt((Yo/Zo)**2+(Q/no)**2+(oo/ro)**2+No*(Q/no)*(oo/ro))},zn=n=>Ro(Qo(n)),Oo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t),[p,e,g]=M(r,l,a);return {r:b$1(p)*255,g:b$1(e)*255,b:b$1(g)*255,alpha:s}},on=new RegExp(`^lab\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<a>${k})(?<ap>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),Xn=n=>{if(typeof n!="string")return null;let o=on.exec(n.trim())?.groups;if(!o)return null;let t=l(o.l),s=o.ap?l(o.a)*1.25:l(o.a),r=o.bp?l(o.b)*1.25:l(o.b),l$1=o.al===void 0?1:l(o.al)/(o.alp?100:1);return Oo({l:a$1(t,0,100),a:s,b:r,alpha:a$1(l$1,0,1)})},hn=n=>{if(!h(n)||n.colorSpace!=="lab"||!i(n,["l","a","b"]))return null;let{l:o,a:t,b:s,alpha:r=1}=n;return !f(o)||!f(t)||!f(s)||!f(r)?null:Oo({l:a$1(g(o),0,100),a:g(t),b:g(s),alpha:a$1(g(r),0,1)})};export{sn as a,Po as b,To as c,ln as d,M as e,an as f,cn as g,en as h,bn as i,Lo as j,gn as k,Qo as l,xn as m,mn as n,Dn as o,zn as p,Oo as q,Xn as r,hn as s};//# sourceMappingURL=chunk-4LKLL3IS.mjs.map
//# sourceMappingURL=chunk-4LKLL3IS.mjs.map
{"version":3,"sources":["../src/colorModels/xyz.ts","../src/colorModels/lab.ts"],"names":["D50_WX","D50_WY","D50_WZ","S_XR","S_XG","S_XB","S_YR","S_YG","S_YB","S_ZR","S_ZG","S_ZB","X_RX","X_RY","X_RZ","X_GX","X_GY","X_GZ","X_BX","X_BY","X_BZ","D65_TO_D50_XX","D65_TO_D50_XY","D65_TO_D50_XZ","D65_TO_D50_YX","D65_TO_D50_YY","D65_TO_D50_YZ","D65_TO_D50_ZX","D65_TO_D50_ZY","D65_TO_D50_ZZ","D50_TO_D65_XX","D50_TO_D65_XY","D50_TO_D65_XZ","D50_TO_D65_YX","D50_TO_D65_YY","D50_TO_D65_YZ","D50_TO_D65_ZX","D50_TO_D65_ZY","D50_TO_D65_ZZ","rgbToXyzD65","r","g","b","alpha","lr","srgbToLinear","lg","lb","clamp","round","xyzD65ToLinearSrgb","x","y","z","xyzD65ToRgbUnclamped","srgbFromLinear","rgbToXyz","xd65","yd65","zd65","xyzD50ToLinearSrgbInto","out","xyzD50ToLinearSrgb","xyzToRgb","clampRgb","xyzToRgbUnclamped","parseXyzObject","input","isObject","hasKeys","isNumber","parseXyzD65Object","isAnyNumber","sanitize","XYZ_D65_RE","NUM_OR_NONE","XYZ_D50_RE","parseXyzD65String","parseNum","parseXyzD50String","D65_WX","D65_WY","D65_WZ","EPSILON","KAPPA","f","t","xyzToLab","fy","labToXyzValues","l","a","fx","fz","labToXyzValuesInto","labToXyz","rgbToLab","rgb","rgbToLabD65","deltaE2000","lab1","lab2","L1","a1","b1","L2","a2","b2","rad","deg","C1","C2","Cab","G","a1p","a2p","C1p","C2p","Cp","h1p","h2p","h1","h2","dhp","absDh","Lm","Hm","T","dLp","dCp","dHp","SL","SC","SH","RC7","RC","dTheta","RT","labToRgb","lab","labToRgbUnclamped","LAB_RE","parseLabString","parseLabObject"],"mappings":"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","file":"chunk-4LKLL3IS.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { RgbColor, XyzColor, XyzD65Color } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// D50 white point (CSS Color 4: xy = 0.3457/0.3585)\nexport const D50_WX = 96.42956752983539;\nexport const D50_WY = 100;\nexport const D50_WZ = 82.51046025104603;\n\n// ── CSS Color 4 exact rational matrices ─────────────────────────────────────\n// sRGB linear → XYZ D65 (xyz in 0–1; callers scale to 0–100 by multiplying).\nconst S_XR = 0.41239079926595951,\n S_XG = 0.35758433938387796,\n S_XB = 0.18048078840183429;\nconst S_YR = 0.21263900587151036,\n S_YG = 0.71516867876775592,\n S_YB = 0.072192315360733714;\nconst S_ZR = 0.019330818715591849,\n S_ZG = 0.11919477979462599,\n S_ZB = 0.95053215224966059;\n\n// XYZ D65 (0–100 scale) → sRGB linear (0–1). Equals the CSS inverse matrix ÷100.\nconst X_RX = 0.032409699419045213,\n X_RY = -0.015373831775700935,\n X_RZ = -0.0049861076029300327;\nconst X_GX = -0.0096924363628087984,\n X_GY = 0.018759675015077206,\n X_GZ = 0.00041555057407175612;\nconst X_BX = 0.00055630079696993608,\n X_BY = -0.0020397695888897657,\n X_BZ = 0.010569715142428786;\n\n// Bradford D65 → D50 (CSS Color 4)\nconst D65_TO_D50_XX = 1.0479297925449969,\n D65_TO_D50_XY = 0.022946870601609652,\n D65_TO_D50_XZ = -0.05019226628920524;\nconst D65_TO_D50_YX = 0.02962780877005599,\n D65_TO_D50_YY = 0.9904344267538799,\n D65_TO_D50_YZ = -0.017073799063418826;\nconst D65_TO_D50_ZX = -0.009243040646204504,\n D65_TO_D50_ZY = 0.015055191490298152,\n D65_TO_D50_ZZ = 0.7518742814281371;\n\n// Bradford D50 → D65 (CSS Color 4, inverse of above)\nconst D50_TO_D65_XX = 0.955473421488075,\n D50_TO_D65_XY = -0.02309845494876471,\n D50_TO_D65_XZ = 0.06325924320057072;\nconst D50_TO_D65_YX = -0.0283697093338637,\n D50_TO_D65_YY = 1.0099953980813041,\n D50_TO_D65_YZ = 0.021041441191917323;\nconst D50_TO_D65_ZX = 0.012314014864481998,\n D50_TO_D65_ZY = -0.020507649298898964,\n D50_TO_D65_ZZ = 1.330365926242124;\n\n// ── RGB ↔ XYZ D65 ───────────────────────────────────────────────────────────\n\n/** sRGB (0–255) → XYZ D65 (0–100, screen-native, no Bradford adaptation). */\nexport const rgbToXyzD65 = ({ r, g, b, alpha }: RgbColor): XyzD65Color => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n return {\n x: 100 * (S_XR * lr + S_XG * lg + S_XB * lb),\n y: 100 * (S_YR * lr + S_YG * lg + S_YB * lb),\n z: 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb),\n alpha: clamp(round(alpha, 3), 0, 1),\n colorSpace: 'xyz-d65' as const,\n };\n};\n\n/** XYZ D65 (0–100) → linear sRGB (0–1, unclamped). */\nexport const xyzD65ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => [\n X_RX * x + X_RY * y + X_RZ * z,\n X_GX * x + X_GY * y + X_GZ * z,\n X_BX * x + X_BY * y + X_BZ * z,\n];\n\n/** Zero-allocation sibling of xyzD65ToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const xyzD65ToLinearSrgbInto = (out: Float64Array | number[], x: number, y: number, z: number): void => {\n out[0] = X_RX * x + X_RY * y + X_RZ * z;\n out[1] = X_GX * x + X_GY * y + X_GZ * z;\n out[2] = X_BX * x + X_BY * y + X_BZ * z;\n};\n\nexport const xyzD65ToRgb = ({ x, y, z, alpha }: XyzD65Color): RgbColor => {\n const [lr, lg, lb] = xyzD65ToLinearSrgb(x, y, z);\n return clampRgb({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n });\n};\n\nconst xyzD65ToRgbUnclamped = ({ x, y, z, alpha }: XyzD65Color): RgbColor => {\n const [lr, lg, lb] = xyzD65ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── RGB ↔ XYZ D50 ───────────────────────────────────────────────────────────\n\nexport const rgbToXyz = ({ r, g, b, alpha }: RgbColor): XyzColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const xd65 = 100 * (S_XR * lr + S_XG * lg + S_XB * lb);\n const yd65 = 100 * (S_YR * lr + S_YG * lg + S_YB * lb);\n const zd65 = 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb);\n return {\n x: D65_TO_D50_XX * xd65 + D65_TO_D50_XY * yd65 + D65_TO_D50_XZ * zd65,\n y: D65_TO_D50_YX * xd65 + D65_TO_D50_YY * yd65 + D65_TO_D50_YZ * zd65,\n z: D65_TO_D50_ZX * xd65 + D65_TO_D50_ZY * yd65 + D65_TO_D50_ZZ * zd65,\n alpha: clamp(round(alpha, 3), 0, 1),\n };\n};\n\n/** Zero-allocation sibling of xyzD50ToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const xyzD50ToLinearSrgbInto = (out: Float64Array | number[], x: number, y: number, z: number): void => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n out[0] = X_RX * xd65 + X_RY * yd65 + X_RZ * zd65;\n out[1] = X_GX * xd65 + X_GY * yd65 + X_GZ * zd65;\n out[2] = X_BX * xd65 + X_BY * yd65 + X_BZ * zd65;\n};\n\n/** XYZ D50 → linear sRGB (no gamma, no clamping). x/y/z are in 0–100 scale. */\nexport const xyzD50ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n return [\n X_RX * xd65 + X_RY * yd65 + X_RZ * zd65,\n X_GX * xd65 + X_GY * yd65 + X_GZ * zd65,\n X_BX * xd65 + X_BY * yd65 + X_BZ * zd65,\n ];\n};\n\nexport const xyzToRgb = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return clampRgb({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n });\n};\n\n/** Unclamped XYZ D50 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst xyzToRgbUnclamped = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── Parsers ─────────────────────────────────────────────────────────────────\n\nexport const parseXyzObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Reject D65-discriminated objects — parseXyzD65Object owns those.\n if ((input as { colorSpace?: unknown }).colorSpace === 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isNumber(x) || !isNumber(y) || !isNumber(z) || !isNumber(alpha)) return null;\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n\nexport const parseXyzD65Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isAnyNumber(x) || !isAnyNumber(y) || !isAnyNumber(z) || !isAnyNumber(alpha)) return null;\n return xyzD65ToRgbUnclamped({\n x: sanitize(x),\n y: sanitize(y),\n z: sanitize(z),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\n// CSS Color 4: color(xyz-d65 x y z / alpha). Channels accept number|percentage|none.\n// The library uses a 0–100 XYZ scale (to match the existing XyzColor convention); percent is\n// treated as the same scale for symmetry with the emitted string (100% = 100).\nconst XYZ_D65_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d65\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nconst XYZ_D50_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d50\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseXyzD65String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D65_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzD65ToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\nexport const parseXyzD50String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D50_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { LabColor, RgbColor, XyzColor } from '../types.js';\nimport { D50_WX as WX, D50_WY as WY, D50_WZ as WZ, rgbToXyz, xyzD50ToLinearSrgb, xyzToRgb } from './xyz.js';\n\n// D65 white point derived from CIE chromaticity (x=0.3127, y=0.329)\nconst D65_WX = (0.3127 / 0.329) * 100;\nconst D65_WY = 100;\nconst D65_WZ = ((1 - 0.3127 - 0.329) / 0.329) * 100;\n\nconst EPSILON = 216 / 24389;\nconst KAPPA = 24389 / 27;\n\nconst f = (t: number) => (t > EPSILON ? Math.cbrt(t) : (KAPPA * t + 16) / 116);\n\nexport const xyzToLab = ({ x, y, z, alpha }: XyzColor): LabColor => {\n const fy = f(y / WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / WX) - fy) || 0, // || 0 suppresses −0; NaN is impossible since WX/WZ are non-zero constants\n b: 200 * (fy - f(z / WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\n/** Primitives-only Lab → XYZ D50. x/y/z in 0–100 scale. Shared with channels.ts hot paths. */\nexport const labToXyzValues = (l: number, a: number, b: number): [number, number, number] => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n return [\n (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX,\n (l > 8 ? fy ** 3 : l / KAPPA) * WY,\n (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ,\n ];\n};\n\n/** Zero-allocation sibling of labToXyzValues — writes [x, y, z] into `out`. */\nexport const labToXyzValuesInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n out[0] = (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX;\n out[1] = (l > 8 ? fy ** 3 : l / KAPPA) * WY;\n out[2] = (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ;\n};\n\nexport const labToXyz = ({ l, a, b, alpha }: LabColor): XyzColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n return { x, y, z, alpha };\n};\n\nexport const rgbToLab = (rgb: RgbColor): LabColor => xyzToLab(rgbToXyz(rgb));\n\n/** RGB → CIE Lab using D65 white point (screen-native; used for perceptual difference). */\nexport const rgbToLabD65 = ({ r, g, b, alpha }: RgbColor): LabColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const x = 100 * (0.41239079926595951 * lr + 0.35758433938387796 * lg + 0.18048078840183429 * lb);\n const y = 100 * (0.21263900587151036 * lr + 0.71516867876775592 * lg + 0.072192315360733714 * lb);\n const z = 100 * (0.019330818715591849 * lr + 0.11919477979462599 * lg + 0.95053215224966059 * lb);\n const fy = f(y / D65_WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / D65_WX) - fy) || 0,\n b: 200 * (fy - f(z / D65_WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\nexport const deltaE2000 = (lab1: LabColor, lab2: LabColor): number => {\n const { l: L1, a: a1, b: b1 } = lab1;\n const { l: L2, a: a2, b: b2 } = lab2;\n const rad = Math.PI / 180;\n const deg = 180 / Math.PI;\n\n const C1 = Math.sqrt(a1 ** 2 + b1 ** 2);\n const C2 = Math.sqrt(a2 ** 2 + b2 ** 2);\n const Cab = ((C1 + C2) / 2) ** 7;\n const G = 0.5 * (1 - Math.sqrt(Cab / (Cab + 25 ** 7)));\n const a1p = a1 * (1 + G);\n const a2p = a2 * (1 + G);\n const C1p = Math.sqrt(a1p ** 2 + b1 ** 2);\n const C2p = Math.sqrt(a2p ** 2 + b2 ** 2);\n const Cp = (C1p + C2p) / 2;\n\n const h1p = a1p === 0 && b1 === 0 ? 0 : Math.atan2(b1, a1p) * deg;\n const h2p = a2p === 0 && b2 === 0 ? 0 : Math.atan2(b2, a2p) * deg;\n const h1 = h1p < 0 ? h1p + 360 : h1p;\n const h2 = h2p < 0 ? h2p + 360 : h2p;\n\n let dhp = h2 - h1;\n const absDh = Math.abs(h2 - h1);\n if (absDh > 180 && h2 <= h1) dhp += 360;\n else if (absDh > 180 && h2 > h1) dhp -= 360;\n\n const Lm = (L1 + L2) / 2;\n let Hm = h1 + h2;\n if (absDh <= 180) Hm /= 2;\n else Hm = (h1 + h2 < 360 ? Hm + 360 : Hm - 360) / 2;\n\n const T =\n 1 -\n 0.17 * Math.cos(rad * (Hm - 30)) +\n 0.24 * Math.cos(2 * rad * Hm) +\n 0.32 * Math.cos(rad * (3 * Hm + 6)) -\n 0.2 * Math.cos(rad * (4 * Hm - 63));\n\n const dLp = L2 - L1;\n const dCp = C2p - C1p;\n const dHp = 2 * Math.sin((rad * dhp) / 2) * Math.sqrt(C1p * C2p);\n\n const SL = 1 + (0.015 * (Lm - 50) ** 2) / Math.sqrt(20 + (Lm - 50) ** 2);\n const SC = 1 + 0.045 * Cp;\n const SH = 1 + 0.015 * Cp * T;\n\n const RC7 = Cp ** 7;\n const RC = 2 * Math.sqrt(RC7 / (RC7 + 25 ** 7));\n const dTheta = 30 * Math.exp(-(((Hm - 275) / 25) ** 2));\n const RT = -RC * Math.sin(2 * rad * dTheta);\n\n return Math.sqrt((dLp / SL) ** 2 + (dCp / SC) ** 2 + (dHp / SH) ** 2 + RT * (dCp / SC) * (dHp / SH));\n};\n\nexport const labToRgb = (lab: LabColor): RgbColor => xyzToRgb(labToXyz(lab));\n\n/**\n * Unclamped Lab (D50) → gamma-encoded sRGB (0–255). Channels may exceed [0, 255] or go\n * negative for colors outside the sRGB gamut. Preserves out-of-gamut information so callers\n * (mapSrgb, inGamut*) can detect and map the color; sRGB output methods clamp at the edge.\n */\nexport const labToRgbUnclamped = ({ l, a, b, alpha }: LabColor): RgbColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// CSS Color 4: lab(L a b / alpha). L: number|percentage|none (100% = 100).\n// a/b: number|percentage|none (100% = 125).\nconst LAB_RE = new RegExp(\n `^lab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseLabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100, so value is unchanged whether `%` present\n const a = g.ap ? parseNum(g.a!) * 1.25 : parseNum(g.a!);\n const b = g.bp ? parseNum(g.b!) * 1.25 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return labToRgbUnclamped({\n l: clamp(l, 0, 100),\n a,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'lab',\n });\n};\n\nexport const parseLabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return labToRgbUnclamped({\n l: clamp(sanitize(l), 0, 100),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'lab',\n });\n};\n"]}
import {f as f$2,e,a as a$2}from'./chunk-J6CH5YTL.mjs';import {j,e as e$1,k,d as d$1,l as l$1,b as b$1}from'./chunk-4LKLL3IS.mjs';import {a,b,d,c}from'./chunk-FXCFKFXK.mjs';import {h,i,f as f$1,a as a$1,g,l,k as k$1,d as d$2}from'./chunk-IOXRZECH.mjs';var er=.8224619687,or=.1775380313,br=.0331941989,tr=.9668058011,ar=.0170826307,ur=.0723974407,mr=.9105199286,Fr=1.2249401762805598,vr=-0.22494017628055996,Br=-0.04205695470968816,Er=1.042056954709688,$r=-0.019637554590334432,Dr=-0.07863604555063189,Or=1.0982736001409663,Rn=(e,r,n,o)=>{e[0]=er*r+or*n,e[1]=br*r+tr*n,e[2]=ar*r+ur*n+mr*o;},sr=(e,r,n)=>[er*e+or*r,br*e+tr*r,ar*e+ur*r+mr*n];var z=(e,r,n)=>[Fr*e+vr*r,Br*e+Er*r,$r*e+Dr*r+Or*n],fn=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=sr(a(e/255),a(r/255),a(n/255));return {r:b(b$1),g:b(t),b:b(u),alpha:o,colorSpace:"display-p3"}};var lr=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=z(a(e),a(r),a(n));return {r:b(b$1)*255,g:b(t)*255,b:b(u)*255,alpha:o}},yn=e=>{if(!h(e)||e.colorSpace!=="display-p3"||!i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !f$1(r)||!f$1(n)||!f$1(o)||!f$1(b)?null:lr({r:g(r),g:g(n),b:g(o),alpha:a$1(g(b),0,1)})},jr=new RegExp(`^color\\(\\s*display-p3\\s+(?<r>${k$1})(?<rp>%?)\\s+(?<g>${k$1})(?<gp>%?)\\s+(?<b>${k$1})(?<bp>%?)\\s*(?:/\\s*(?<al>${k$1})(?<alp>%?)\\s*)?\\)$`,"i"),Sn=e=>{if(typeof e!="string")return null;let r=jr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?l(r.r)/100:l(r.r),o=r.gp?l(r.g)/100:l(r.g),b=r.bp?l(r.b)/100:l(r.b),t=r.al===void 0?1:l(r.al)/(r.alp?100:1);return lr({r:n,g:o,b,alpha:a$1(t,0,1)})},xn=(e,r,n)=>sr(...f$2(e,r,n));var cr=.6274038959,pr=.3292830384,ir=.0433130657,dr=.0690972894,hr=.9195403951,gr=.0113623156,Rr=.0163914389,fr=.0880133079,yr=.8955952532,Xr=1.6604910021084345,Ur=-0.5876411387885495,Kr=-0.07284986331988488,qr=-0.12455047452159074,Hr=1.1328998971259603,Vr=-0.008349422604369477,Yr=-0.018150763354905303,Zr=-0.10057889800800739,Jr=1.1187296613629127,_n=(e,r,n,o)=>{e[0]=cr*r+pr*n+ir*o,e[1]=dr*r+hr*n+gr*o,e[2]=Rr*r+fr*n+yr*o;},Sr=(e,r,n)=>[cr*e+pr*r+ir*n,dr*e+hr*r+gr*n,Rr*e+fr*r+yr*n];var F=(e,r,n)=>[Xr*e+Ur*r+Kr*n,qr*e+Hr*r+Vr*n,Yr*e+Zr*r+Jr*n],kn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=Sr(a(e/255),a(r/255),a(n/255));return {r:d(b),g:d(t),b:d(u),alpha:o,colorSpace:"rec2020"}};var xr=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=F(c(e),c(r),c(n));return {r:b(b$1)*255,g:b(t)*255,b:b(u)*255,alpha:o}},Mn=e=>{if(!h(e)||e.colorSpace!=="rec2020"||!i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !f$1(r)||!f$1(n)||!f$1(o)||!f$1(b)?null:xr({r:g(r),g:g(n),b:g(o),alpha:a$1(g(b),0,1)})},Qr=new RegExp(`^color\\(\\s*rec2020\\s+(?<r>${k$1})(?<rp>%?)\\s+(?<g>${k$1})(?<gp>%?)\\s+(?<b>${k$1})(?<bp>%?)\\s*(?:/\\s*(?<al>${k$1})(?<alp>%?)\\s*)?\\)$`,"i"),Pn=e=>{if(typeof e!="string")return null;let r=Qr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?l(r.r)/100:l(r.r),o=r.gp?l(r.g)/100:l(r.g),b=r.bp?l(r.b)/100:l(r.b),t=r.al===void 0?1:l(r.al)/(r.alp?100:1);return xr({r:n,g:o,b,alpha:a$1(t,0,1)})},An=(e,r,n)=>Sr(...f$2(e,r,n));var Wr=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rn=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nn=/^lab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,en=/^lch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,on=/^color\(\s*display-p3\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,bn=/^color\(\s*rec2020\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,tn=/^color\(\s*xyz-d50\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,an=/^color\(\s*xyz-d65\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,A=(e,r,n)=>{let{x:o,y:b,z:t}=l$1({l:e,a:r,b:n,alpha:1,colorSpace:"lab"}),[u,s,l]=e$1(o,b,t);return a$2(u,s,l)},Tr=(e,r,n)=>{let[o,b,t]=z(a(e),a(r),a(n));return a$2(o,b,t)},Cr=(e,r,n)=>{let[o,b,t]=F(c(e),c(r),c(n));return a$2(o,b,t)},Lr=(e,r,n)=>{let[o,b,t]=e$1(e,r,n);return a$2(o,b,t)},Nr=(e,r,n)=>{let[o,b,t]=b$1(e,r,n);return a$2(o,b,t)},G=e=>{if(typeof e=="object"&&e!==null){let r=e;if("l"in r&&"a"in r&&"b"in r&&r.colorSpace!=="lab"&&!("c"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.a=="number"&&typeof n.b=="number"&&typeof n.alpha=="number")return {l:n.l,a:n.a,b:n.b,alpha:n.alpha}}if("l"in r&&"c"in r&&"h"in r&&r.colorSpace!=="lch"&&!("a"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.c=="number"&&typeof n.h=="number"){let o=n.h*Math.PI/180;return {l:n.l,a:n.c*Math.cos(o),b:n.c*Math.sin(o),alpha:n.alpha}}}if(r.colorSpace==="lab"){let n=e;if(typeof n.l!="number"||typeof n.a!="number"||typeof n.b!="number")return null;let[o,b,t]=A(n.l,n.a,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="lch"){let n=e;if(typeof n.l!="number"||typeof n.c!="number"||typeof n.h!="number")return null;let o=n.h*Math.PI/180,[b,t,u]=A(n.l,n.c*Math.cos(o),n.c*Math.sin(o));return {l:b,a:t,b:u,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="display-p3"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Tr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="rec2020"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Cr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="xyz-d65"){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Nr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if("x"in r&&"y"in r&&"z"in r){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Lr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=Wr.exec(e);if(r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(d$2[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o*Math.cos(u),b:o*Math.sin(u),alpha:s}}if(r=rn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?Number(r[5])*.004:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b,alpha:t}}if(r=nn.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.25:Number(r[3]),b=r[6]?Number(r[5])*1.25:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=A(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=en.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.5:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(d$2[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[l,x,T]=A(n,o*Math.cos(u),o*Math.sin(u));return {l,a:x,b:T,alpha:s}}if(r=on.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Tr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=bn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Cr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=tn.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Lr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=an.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Nr(n,o,b);return {l:u,a:s,b:l,alpha:t}}return null}return null},S=5e-4,Pr=(e,r,n)=>e>=-S&&e<=1+S&&r>=-S&&r<=1+S&&n>=-S&&n<=1+S,_r=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,$n=e=>{let r=G(e);if(r===null)return true;let[n,o,b]=f$2(r.l,r.a,r.b);return Pr(n,o,b)},kr=.02,un=1e-4,Mr=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],b=e[2]-r[2];return Math.sqrt(n*n+o*o+b*b)},Ar=(e,r,n,o,b)=>{if(e>=1)return [1,1,1];if(e<=0)return [0,0,0];let[t,u,s]=o(e,r,n);if(_r(t,u,s))return [t,u,s];let l=a$1(t,0,1),x=a$1(u,0,1),T=a$1(s,0,1);if(Mr(b(l,x,T),[e,r,n])<=kr)return [l,x,T];let E=Math.atan2(n,r),wr=Math.sqrt(r*r+n*n),N=0,I=wr,$=true,D=l,O=x,j=T;for(;I-N>un;){let C=(N+I)/2,X=C*Math.cos(E),U=C*Math.sin(E),[K,q,H]=o(e,X,U);if($&&_r(K,q,H)){N=C;continue}let V=a$1(K,0,1),Y=a$1(q,0,1),Z=a$1(H,0,1);D=V,O=Y,j=Z,Mr(b(V,Y,Z),[e,X,U])<=kr?(N=C,$=false):I=C;}return [D,O,j]},Dn=e=>{let r=G(e);return r===null?null:{linear:Ar(r.l,r.a,r.b,f$2,a$2),alpha:r.alpha}},On=(e,r)=>{let n=G(e);if(n===null)return true;let[o,b,t]=r(n.l,n.a,n.b);return Pr(o,b,t)},jn=(e,r,n)=>{let o=G(e);return o===null?null:{linear:Ar(o.l,o.a,o.b,r,n),alpha:o.alpha}};var f=Math.PI/180,Gr=(e,r,n)=>{let o=n*f;return f$2(e,r*Math.cos(o),r*Math.sin(o))},Ir=(e$1,r,n,o)=>{let b=o*f;e(e$1,r,n*Math.cos(b),n*Math.sin(b));},Vn=(e,r,n)=>{let[o,b$1,t]=Gr(e,r,n);return [b(o),b(b$1),b(t)]},Yn=(e,r,n,o)=>{Ir(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},Zn=(e,r,n)=>{let[o,b$1,t]=Gr(e,r,n);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},Jn=(e,r,n,o,b$1)=>{Ir(e,n,o,b$1),r[0]=b(e[0]),r[1]=b(e[1]),r[2]=b(e[2]);},Qn=(e,r,n)=>[a(e),a(r),a(n)],Wn=(e,r,n,o)=>{e[0]=a(r),e[1]=a(n),e[2]=a(o);},v=(e,r,n)=>{let[o,b,t]=j(e,r,n);return e$1(o,b,t)},B=(e,r,n,o)=>{k(e,r,n,o),d$1(e,e[0],e[1],e[2]);},re=(e,r,n)=>{let o=n*f;return v(e,r*Math.cos(o),r*Math.sin(o))},ne=(e,r,n,o)=>{let b=o*f;B(e,r,n*Math.cos(b),n*Math.sin(b));},mn=(e,r,n)=>{let[o,b$1,t]=v(e,r,n);return [b(o),b(b$1),b(t)]},sn=(e,r,n,o)=>{B(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},ee=(e,r,n)=>{let o=n*f;return mn(e,r*Math.cos(o),r*Math.sin(o))},oe=(e,r,n,o)=>{let b=o*f;sn(e,r,n*Math.cos(b),n*Math.sin(b));},ln=(e,r,n)=>{let[o,b$1,t]=v(e,r,n);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},cn=(e,r,n,o,b$1)=>{B(e,n,o,b$1),r[0]=b(e[0]),r[1]=b(e[1]),r[2]=b(e[2]);},be=(e,r,n)=>{let o=n*f;return ln(e,r*Math.cos(o),r*Math.sin(o))},te=(e,r,n,o,b)=>{let t=b*f;cn(e,r,n,o*Math.cos(t),o*Math.sin(t));};export{v as A,B,re as C,ne as D,mn as E,sn as F,ee as G,oe as H,ln as I,cn as J,be as K,te as L,Rn as a,sr as b,z as c,fn as d,yn as e,Sn as f,xn as g,_n as h,Sr as i,F as j,kn as k,Mn as l,Pn as m,An as n,$n as o,Dn as p,On as q,jn as r,Gr as s,Ir as t,Vn as u,Yn as v,Zn as w,Jn as x,Qn as y,Wn as z};//# sourceMappingURL=chunk-BXGFP5BN.mjs.map
//# sourceMappingURL=chunk-BXGFP5BN.mjs.map

Sorry, the diff of this file is too big to display

import {a as a$1}from'./chunk-Q3O3QQ4H.mjs';import {a,b,l,d,h,i,f,g as g$1,k,j as j$1,c}from'./chunk-IOXRZECH.mjs';var N=r=>({h:c(r.h),s:a(r.s,0,100),v:a(r.v,0,100),alpha:a(b(r.alpha,3),0,1)}),g={h:0,s:0,v:0,alpha:0},T=({r,g:n,b:u,alpha:h})=>{let t=r/255,o=n/255,c=u/255,e=Math.max(t,o,c),a$1=Math.min(t,o,c),l=e-a$1,i=e===0?0:l/e,f=0;if(e!==a$1)switch(e){case t:f=((o-c)/l+(o<c?6:0))/6;break;case o:f=((c-t)/l+2)/6;break;case c:f=((t-o)/l+4)/6;break}let k=f*360;return g.h=k>=0&&k<360?k:(k%360+360)%360,g.s=a(i*100,0,100),g.v=a(e*100,0,100),g.alpha=a(b(h,3),0,1),g};var s=[0,0,0],M=({h:r,s:n,v:u,alpha:h})=>{let t=n/100,o=u/100,c=Math.floor(r/60%6),e=r/60-Math.floor(r/60),a=o*(1-t),l=o*(1-e*t),i=o*(1-(1-e)*t);switch(c){case 0:s[0]=o,s[1]=i,s[2]=a;break;case 1:s[0]=l,s[1]=o,s[2]=a;break;case 2:s[0]=a,s[1]=o,s[2]=i;break;case 3:s[0]=a,s[1]=l,s[2]=o;break;case 4:s[0]=i,s[1]=a,s[2]=o;break;default:s[0]=o,s[1]=a,s[2]=l;break}return a$1({r:s[0]*255,g:s[1]*255,b:s[2]*255,alpha:h})},y=new RegExp(`^hsva?\\(\\s*(?<h>${k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${j$1})%\\s*,\\s*(?<v_c>${j$1})%(?:\\s*,\\s*(?<al_c>${j$1})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${k})(?<sp_s>%?)\\s+(?<v_s>${k})(?<vp_s>%?)(?:\\s*/\\s*(?<al_s>${k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),j=r=>{if(typeof r!="string")return null;let n=y.exec(r.trim())?.groups;if(!n)return null;let u=n.s_c!==void 0;if(u&&/^none$/i.test(n.h))return null;let h=n.hu?.toLowerCase()??"deg",t=l(n.h)*(d[h]??1),o=l(n.s_c??n.s_s),c=l(n.v_c??n.v_s),e=n.al_c??n.al_s;if(u&&e!==void 0&&/^none$/i.test(e))return null;let a=!!(n.alp_c??n.alp_s),l$1=e===void 0?1:l(e)/(a?100:1);return M(N({h:t,s:o,v:c,alpha:l$1}))},A=r=>{if(!h(r)||!i(r,["h","s","v"]))return null;let{h:n,s:u,v:h$1,alpha:t=1}=r;return !f(n)||!f(u)||!f(h$1)||!f(t)?null:M(N({h:g$1(n),s:g$1(u),v:g$1(h$1),alpha:g$1(t)}))};export{T as a,M as b,j as c,A as d};//# sourceMappingURL=chunk-FUSE3OJV.mjs.map
//# sourceMappingURL=chunk-FUSE3OJV.mjs.map
{"version":3,"sources":["../src/colorModels/hsv.ts"],"names":["clampHsv","hsv","normalizeHue","clamp","round","_hsvBuf","rgbToHsvRaw","g","b","alpha","rn","gn","bn","max","min","d","s","h","hDeg","_RGB","hsvToRgb","v","sn","vn","i","f","p","q","t","clampRgb","HSV_RE","NUM_OR_NONE","NUM","parseHsvString","input","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","parseHsvObject","isObject","hasKeys","isAnyNumber","sanitize"],"mappings":"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","file":"chunk-FUSE3OJV.mjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HsvColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nexport const clampHsv = (hsv: HsvColor): HsvColor => ({\n h: normalizeHue(hsv.h),\n s: clamp(hsv.s, 0, 100),\n v: clamp(hsv.v, 0, 100),\n alpha: clamp(round(hsv.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHsvRaw — callers must destructure immediately, never store the reference.\nconst _hsvBuf: HsvColor = { h: 0, s: 0, v: 0, alpha: 0 };\n\nexport const rgbToHsvRaw = ({ r, g, b, alpha }: RgbColor): HsvColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n let h = 0;\n\n if (max !== min) {\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hsvBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hsvBuf.s = clamp(s * 100, 0, 100);\n _hsvBuf.v = clamp(max * 100, 0, 100);\n _hsvBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hsvBuf;\n};\n\nexport const rgbToHsv = (rgb: RgbColor): HsvColor => {\n const { h, s, v, alpha } = rgbToHsvRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), v: round(v, 2), alpha };\n};\n\nconst _RGB = [0, 0, 0] as [number, number, number];\n\nexport const hsvToRgb = ({ h, s, v, alpha }: HsvColor): RgbColor => {\n const sn = s / 100,\n vn = v / 100;\n const i = Math.floor((h / 60) % 6);\n const f = h / 60 - Math.floor(h / 60);\n const p = vn * (1 - sn);\n const q = vn * (1 - f * sn);\n const t = vn * (1 - (1 - f) * sn);\n\n switch (i) {\n case 0:\n _RGB[0] = vn;\n _RGB[1] = t;\n _RGB[2] = p;\n break;\n case 1:\n _RGB[0] = q;\n _RGB[1] = vn;\n _RGB[2] = p;\n break;\n case 2:\n _RGB[0] = p;\n _RGB[1] = vn;\n _RGB[2] = t;\n break;\n case 3:\n _RGB[0] = p;\n _RGB[1] = q;\n _RGB[2] = vn;\n break;\n case 4:\n _RGB[0] = t;\n _RGB[1] = p;\n _RGB[2] = vn;\n break;\n default: // case 5 — not an error handler; i is always 0–5 for h in [0, 360)\n _RGB[0] = vn;\n _RGB[1] = p;\n _RGB[2] = q;\n break;\n }\n\n return clampRgb({ r: _RGB[0] * 255, g: _RGB[1] * 255, b: _RGB[2] * 255, alpha });\n};\n\n// HSV/HSVA is a non-standard, library-defined syntax (not part of any CSS spec).\n// Format mirrors HSL for consistency. Legacy comma form kept for back-compat input;\n// modern space form supports optional `%` and the CSS Color 4 `none` keyword.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSV_RE = new RegExp(\n `^hsva?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<v_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<v_s>${NUM_OR_NONE})(?<vp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHsvString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSV_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const v = parseNum((g.v_c ?? g.v_s)!);\n const rawA = g.al_c ?? g.al_s;\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hsvToRgb(clampHsv({ h, s, v, alpha }));\n};\n\nexport const parseHsvObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'v'])) return null;\n const { h, s, v, alpha = 1 } = input as { h: unknown; s: unknown; v: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(v) || !isAnyNumber(alpha)) return null;\n return hsvToRgb(clampHsv({ h: sanitize(h), s: sanitize(s), v: sanitize(v), alpha: sanitize(alpha) }));\n};\n"]}
var s=n=>{let r=Math.abs(n),e=r<=.04045?r/12.92:((r+.055)/1.055)**2.4;return n<0?-e:e},a=n=>{let r=Math.abs(n),e=r<=.0031308?12.92*r:1.055*r**(1/2.4)-.055;return n<0?-e:e},t=1.09929682680944,o=.018053968510807,b=n=>{let r=Math.abs(n),e=r<o*4.5?r/4.5:((r+t-1)/t)**(1/.45);return n<0?-e:e},c=n=>{let r=Math.abs(n),e=r<o?4.5*r:t*r**.45-(t-1);return n<0?-e:e};export{s as a,a as b,b as c,c as d};//# sourceMappingURL=chunk-FXCFKFXK.mjs.map
//# sourceMappingURL=chunk-FXCFKFXK.mjs.map
{"version":3,"sources":["../src/transfer.ts"],"names":["srgbToLinear","c","abs","linear","srgbFromLinear","encoded","REC2020_ALPHA","REC2020_BETA","rec2020ToLinear","rec2020FromLinear"],"mappings":"AAMO,IAAMA,CAAAA,CAAgBC,GAAsB,CACjD,IAAMC,EAAM,IAAA,CAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,EAAO,OAAUA,CAAAA,CAAM,KAAA,CAAA,CAAA,CAAUA,CAAAA,CAAM,IAAA,EAAS,KAAA,GAAU,GAAA,CACzE,OAAOD,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAQaC,EAAkB,CAAA,EAAsB,CACnD,IAAMF,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,CAChBG,CAAAA,CAAUH,CAAAA,EAAO,QAAA,CAAY,KAAA,CAAQA,CAAAA,CAAM,MAAQA,CAAAA,GAAQ,CAAA,CAAI,GAAA,CAAA,CAAO,IAAA,CAC5E,OAAO,CAAA,CAAI,EAAI,CAACG,CAAAA,CAAUA,CAC5B,CAAA,CAGaC,CAAAA,CAAgB,gBAAA,CAChBC,EAAe,gBAAA,CAGfC,CAAAA,CAAmBP,CAAAA,EAAsB,CACpD,IAAMC,CAAAA,CAAM,KAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,CAAMK,CAAAA,CAAe,IAAML,CAAAA,CAAM,GAAA,CAAA,CAAA,CAAQA,CAAAA,CAAMI,CAAAA,CAAgB,CAAA,EAAKA,CAAAA,IAAmB,EAAI,GAAA,CAAA,CAC1G,OAAOL,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAGaM,CAAAA,CAAqB,CAAA,EAAsB,CACtD,IAAMP,CAAAA,CAAM,KAAK,GAAA,CAAI,CAAC,CAAA,CAChBG,CAAAA,CAAUH,CAAAA,CAAMK,CAAAA,CAAe,IAAML,CAAAA,CAAMI,CAAAA,CAAgBJ,CAAAA,EAAO,GAAA,EAAQI,CAAAA,CAAgB,CAAA,CAAA,CAChG,OAAO,CAAA,CAAI,CAAA,CAAI,CAACD,CAAAA,CAAUA,CAC5B","file":"chunk-FXCFKFXK.mjs","sourcesContent":["/**\n * sRGB / Display-P3 transfer function (IEC 61966-2-1), extended to the full real line.\n * For in-gamut values [0, 1] this is the standard curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec for out-of-gamut channels.\n */\nexport const srgbToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs <= 0.04045 ? abs / 12.92 : ((abs + 0.055) / 1.055) ** 2.4;\n return c < 0 ? -linear : linear;\n};\n\n/**\n * Linear → gamma-encoded sRGB (extended piecewise, per CSS Color 4).\n * For in-gamut values [0, 1] this is the standard IEC 61966-2-1 curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec and display-p3 behaviour for out-of-gamut channels.\n */\nexport const srgbFromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs <= 0.0031308 ? 12.92 * abs : 1.055 * abs ** (1 / 2.4) - 0.055;\n return n < 0 ? -encoded : encoded;\n};\n\n/** BT.2020 transfer function constants. */\nexport const REC2020_ALPHA = 1.09929682680944;\nexport const REC2020_BETA = 0.018053968510807;\n\n/** BT.2020 gamma-encoded → linear. Extended to the full real line (sign-preserving). */\nexport const rec2020ToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs < REC2020_BETA * 4.5 ? abs / 4.5 : ((abs + REC2020_ALPHA - 1) / REC2020_ALPHA) ** (1 / 0.45);\n return c < 0 ? -linear : linear;\n};\n\n/** BT.2020 linear → gamma-encoded. Extended to the full real line (sign-preserving). */\nexport const rec2020FromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs < REC2020_BETA ? 4.5 * abs : REC2020_ALPHA * abs ** 0.45 - (REC2020_ALPHA - 1);\n return n < 0 ? -encoded : encoded;\n};\n"]}
'use strict';var chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var L=96.4295675298354,O=100,w=82.51046025104603,lo=.4123907992659595,ao=.35758433938387796,co=.1804807884018343,eo=.21263900587151036,bo=.7151686787677559,uo=.07219231536073371,po=.01933081871559185,_o=.11919477979462599,yo=.9505321522496606,j=.032409699419045215,B=-0.015373831775700935,G=-0.004986107602930032,I=-0.009692436362808799,F=.018759675015077207,P=.0004155505740717561,U=.000556300796969936,v=-0.002039769588889766,H=.010569715142428786,Wo=1.0479297925449969,Eo=.022946870601609652,qo=-0.05019226628920524,Ao=.02962780877005599,jo=.9904344267538799,Bo=-0.017073799063418826,Go=-0.009243040646204504,Io=.015055191490298152,Fo=.7518742814281371,go=.955473421488075,xo=-0.02309845494876471,mo=.06325924320057072,Do=-0.0283697093338637,zo=1.0099953980813041,io=.021041441191917323,Xo=.012314014864481998,ho=-0.020507649298898964,Co=1.330365926242124,sn=({r:n,g:o,b:t,alpha:s})=>{let r=chunkX5FCFNQN_cjs.a(n/255),l=chunkX5FCFNQN_cjs.a(o/255),a=chunkX5FCFNQN_cjs.a(t/255);return {x:100*(lo*r+ao*l+co*a),y:100*(eo*r+bo*l+uo*a),z:100*(po*r+_o*l+yo*a),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(s,3),0,1),colorSpace:"xyz-d65"}},Po=(n,o,t)=>[j*n+B*o+G*t,I*n+F*o+P*t,U*n+v*o+H*t];var fo=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=Po(n,o,t);return {r:chunkX5FCFNQN_cjs.b(r)*255,g:chunkX5FCFNQN_cjs.b(l)*255,b:chunkX5FCFNQN_cjs.b(a)*255,alpha:s}},To=({r:n,g:o,b:t,alpha:s})=>{let r=chunkX5FCFNQN_cjs.a(n/255),l=chunkX5FCFNQN_cjs.a(o/255),a=chunkX5FCFNQN_cjs.a(t/255),p=100*(lo*r+ao*l+co*a),e=100*(eo*r+bo*l+uo*a),g=100*(po*r+_o*l+yo*a);return {x:Wo*p+Eo*e+qo*g,y:Ao*p+jo*e+Bo*g,z:Go*p+Io*e+Fo*g,alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(s,3),0,1)}},ln=(n,o,t,s)=>{let r=go*o+xo*t+mo*s,l=Do*o+zo*t+io*s,a=Xo*o+ho*t+Co*s;n[0]=j*r+B*l+G*a,n[1]=I*r+F*l+P*a,n[2]=U*r+v*l+H*a;},M=(n,o,t)=>{let s=go*n+xo*o+mo*t,r=Do*n+zo*o+io*t,l=Xo*n+ho*o+Co*t;return [j*s+B*r+G*l,I*s+F*r+P*l,U*s+v*r+H*l]},Ro=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return chunk3V4MONNR_cjs.a({r:chunkX5FCFNQN_cjs.b(r)*255,g:chunkX5FCFNQN_cjs.b(l)*255,b:chunkX5FCFNQN_cjs.b(a)*255,alpha:s})},So=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=M(n,o,t);return {r:chunkX5FCFNQN_cjs.b(r)*255,g:chunkX5FCFNQN_cjs.b(l)*255,b:chunkX5FCFNQN_cjs.b(a)*255,alpha:s}},an=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace==="xyz-d65"||!chunkYISEJCI6_cjs.i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !chunkYISEJCI6_cjs.e(o)||!chunkYISEJCI6_cjs.e(t)||!chunkYISEJCI6_cjs.e(s)||!chunkYISEJCI6_cjs.e(r)?null:So({x:o,y:t,z:s,alpha:chunkYISEJCI6_cjs.a(r,0,1)})},cn=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace!=="xyz-d65"||!chunkYISEJCI6_cjs.i(n,["x","y","z"]))return null;let{x:o,y:t,z:s,alpha:r=1}=n;return !chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||!chunkYISEJCI6_cjs.f(r)?null:fo({x:chunkYISEJCI6_cjs.g(o),y:chunkYISEJCI6_cjs.g(t),z:chunkYISEJCI6_cjs.g(s),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(r),0,1)})},Uo=new RegExp(`^color\\(\\s*xyz-d65\\s+(?<x>${chunkYISEJCI6_cjs.k})(?<xp>%?)\\s+(?<y>${chunkYISEJCI6_cjs.k})(?<yp>%?)\\s+(?<z>${chunkYISEJCI6_cjs.k})(?<zp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),vo=new RegExp(`^color\\(\\s*xyz-d50\\s+(?<x>${chunkYISEJCI6_cjs.k})(?<xp>%?)\\s+(?<y>${chunkYISEJCI6_cjs.k})(?<yp>%?)\\s+(?<z>${chunkYISEJCI6_cjs.k})(?<zp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),en=n=>{if(typeof n!="string")return null;let o=Uo.exec(n.trim())?.groups;if(!o)return null;let t=chunkYISEJCI6_cjs.l(o.x),s=chunkYISEJCI6_cjs.l(o.y),r=chunkYISEJCI6_cjs.l(o.z),l=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return fo({x:t,y:s,z:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})},bn=n=>{if(typeof n!="string")return null;let o=vo.exec(n.trim())?.groups;if(!o)return null;let t=chunkYISEJCI6_cjs.l(o.x),s=chunkYISEJCI6_cjs.l(o.y),r=chunkYISEJCI6_cjs.l(o.z),l=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return So({x:t,y:s,z:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})};var Ho=.3127/.329*100,Ko=100,Vo=(1-.3127-.329)/.329*100,S=216/24389,z=24389/27,C=n=>n>S?Math.cbrt(n):(z*n+16)/116,Jo=({x:n,y:o,z:t,alpha:s})=>{let r=C(o/O);return {l:116*r-16,a:500*(C(n/L)-r)||0,b:200*(r-C(t/w))||0,alpha:chunkYISEJCI6_cjs.b(s,3),colorSpace:"lab"}},Lo=(n,o,t)=>{let s=(n+16)/116,r=o/500+s,l=s-t/200;return [(r**3>S?r**3:(116*r-16)/z)*L,(n>8?s**3:n/z)*O,(l**3>S?l**3:(116*l-16)/z)*w]},gn=(n,o,t,s)=>{let r=(o+16)/116,l=t/500+r,a=r-s/200;n[0]=(l**3>S?l**3:(116*l-16)/z)*L,n[1]=(o>8?r**3:o/z)*O,n[2]=(a**3>S?a**3:(116*a-16)/z)*w;},Qo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t);return {x:r,y:l,z:a,alpha:s}},xn=n=>Jo(To(n)),mn=({r:n,g:o,b:t,alpha:s})=>{let r=chunkX5FCFNQN_cjs.a(n/255),l=chunkX5FCFNQN_cjs.a(o/255),a=chunkX5FCFNQN_cjs.a(t/255),p=100*(.4123907992659595*r+.35758433938387796*l+.1804807884018343*a),e=100*(.21263900587151036*r+.7151686787677559*l+.07219231536073371*a),g=100*(.01933081871559185*r+.11919477979462599*l+.9505321522496606*a),f=C(e/Ko);return {l:116*f-16,a:500*(C(p/Ho)-f)||0,b:200*(f-C(g/Vo))||0,alpha:chunkYISEJCI6_cjs.b(s,3),colorSpace:"lab"}},Dn=(n,o)=>{let{l:t,a:s,b:r}=n,{l,a,b:p}=o,e=Math.PI/180,g=180/Math.PI,f=Math.sqrt(s**2+r**2),wo=Math.sqrt(a**2+p**2),K=((f+wo)/2)**7,V=.5*(1-Math.sqrt(K/(K+25**7))),Y=s*(1+V),Z=a*(1+V),k=Math.sqrt(Y**2+r**2),$=Math.sqrt(Z**2+p**2),N=(k+$)/2,W=Y===0&&r===0?0:Math.atan2(r,Y)*g,E=Z===0&&p===0?0:Math.atan2(p,Z)*g,i=W<0?W+360:W,X=E<0?E+360:E,q=X-i,A=Math.abs(X-i);A>180&&X<=i?q+=360:A>180&&X>i&&(q-=360);let J=(t+l)/2,D=i+X;A<=180?D/=2:D=(i+X<360?D+360:D-360)/2;let Mo=1-.17*Math.cos(e*(D-30))+.24*Math.cos(2*e*D)+.32*Math.cos(e*(3*D+6))-.2*Math.cos(e*(4*D-63)),Yo=l-t,Q=$-k,oo=2*Math.sin(e*q/2)*Math.sqrt(k*$),Zo=1+.015*(J-50)**2/Math.sqrt(20+(J-50)**2),no=1+.045*N,ro=1+.015*N*Mo,to=N**7,ko=2*Math.sqrt(to/(to+25**7)),$o=30*Math.exp(-(((D-275)/25)**2)),No=-ko*Math.sin(2*e*$o);return Math.sqrt((Yo/Zo)**2+(Q/no)**2+(oo/ro)**2+No*(Q/no)*(oo/ro))},zn=n=>Ro(Qo(n)),Oo=({l:n,a:o,b:t,alpha:s})=>{let[r,l,a]=Lo(n,o,t),[p,e,g]=M(r,l,a);return {r:chunkX5FCFNQN_cjs.b(p)*255,g:chunkX5FCFNQN_cjs.b(e)*255,b:chunkX5FCFNQN_cjs.b(g)*255,alpha:s}},on=new RegExp(`^lab\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<a>${chunkYISEJCI6_cjs.k})(?<ap>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),Xn=n=>{if(typeof n!="string")return null;let o=on.exec(n.trim())?.groups;if(!o)return null;let t=chunkYISEJCI6_cjs.l(o.l),s=o.ap?chunkYISEJCI6_cjs.l(o.a)*1.25:chunkYISEJCI6_cjs.l(o.a),r=o.bp?chunkYISEJCI6_cjs.l(o.b)*1.25:chunkYISEJCI6_cjs.l(o.b),l=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return Oo({l:chunkYISEJCI6_cjs.a(t,0,100),a:s,b:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})},hn=n=>{if(!chunkYISEJCI6_cjs.h(n)||n.colorSpace!=="lab"||!chunkYISEJCI6_cjs.i(n,["l","a","b"]))return null;let{l:o,a:t,b:s,alpha:r=1}=n;return !chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||!chunkYISEJCI6_cjs.f(r)?null:Oo({l:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(o),0,100),a:chunkYISEJCI6_cjs.g(t),b:chunkYISEJCI6_cjs.g(s),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(r),0,1)})};exports.a=sn;exports.b=Po;exports.c=To;exports.d=ln;exports.e=M;exports.f=an;exports.g=cn;exports.h=en;exports.i=bn;exports.j=Lo;exports.k=gn;exports.l=Qo;exports.m=xn;exports.n=mn;exports.o=Dn;exports.p=zn;exports.q=Oo;exports.r=Xn;exports.s=hn;//# sourceMappingURL=chunk-GU6TZJ4O.cjs.map
//# sourceMappingURL=chunk-GU6TZJ4O.cjs.map
{"version":3,"sources":["../src/colorModels/xyz.ts","../src/colorModels/lab.ts"],"names":["D50_WX","D50_WY","D50_WZ","S_XR","S_XG","S_XB","S_YR","S_YG","S_YB","S_ZR","S_ZG","S_ZB","X_RX","X_RY","X_RZ","X_GX","X_GY","X_GZ","X_BX","X_BY","X_BZ","D65_TO_D50_XX","D65_TO_D50_XY","D65_TO_D50_XZ","D65_TO_D50_YX","D65_TO_D50_YY","D65_TO_D50_YZ","D65_TO_D50_ZX","D65_TO_D50_ZY","D65_TO_D50_ZZ","D50_TO_D65_XX","D50_TO_D65_XY","D50_TO_D65_XZ","D50_TO_D65_YX","D50_TO_D65_YY","D50_TO_D65_YZ","D50_TO_D65_ZX","D50_TO_D65_ZY","D50_TO_D65_ZZ","rgbToXyzD65","r","g","b","alpha","lr","srgbToLinear","lg","lb","clamp","round","xyzD65ToLinearSrgb","x","y","z","xyzD65ToRgbUnclamped","srgbFromLinear","rgbToXyz","xd65","yd65","zd65","xyzD50ToLinearSrgbInto","out","xyzD50ToLinearSrgb","xyzToRgb","clampRgb","xyzToRgbUnclamped","parseXyzObject","input","isObject","hasKeys","isNumber","parseXyzD65Object","isAnyNumber","sanitize","XYZ_D65_RE","NUM_OR_NONE","XYZ_D50_RE","parseXyzD65String","parseNum","parseXyzD50String","D65_WX","D65_WY","D65_WZ","EPSILON","KAPPA","f","t","xyzToLab","fy","labToXyzValues","l","a","fx","fz","labToXyzValuesInto","labToXyz","rgbToLab","rgb","rgbToLabD65","deltaE2000","lab1","lab2","L1","a1","b1","L2","a2","b2","rad","deg","C1","C2","Cab","G","a1p","a2p","C1p","C2p","Cp","h1p","h2p","h1","h2","dhp","absDh","Lm","Hm","T","dLp","dCp","dHp","SL","SC","SH","RC7","RC","dTheta","RT","labToRgb","lab","labToRgbUnclamped","LAB_RE","parseLabString","parseLabObject"],"mappings":"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","file":"chunk-GU6TZJ4O.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { RgbColor, XyzColor, XyzD65Color } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// D50 white point (CSS Color 4: xy = 0.3457/0.3585)\nexport const D50_WX = 96.42956752983539;\nexport const D50_WY = 100;\nexport const D50_WZ = 82.51046025104603;\n\n// ── CSS Color 4 exact rational matrices ─────────────────────────────────────\n// sRGB linear → XYZ D65 (xyz in 0–1; callers scale to 0–100 by multiplying).\nconst S_XR = 0.41239079926595951,\n S_XG = 0.35758433938387796,\n S_XB = 0.18048078840183429;\nconst S_YR = 0.21263900587151036,\n S_YG = 0.71516867876775592,\n S_YB = 0.072192315360733714;\nconst S_ZR = 0.019330818715591849,\n S_ZG = 0.11919477979462599,\n S_ZB = 0.95053215224966059;\n\n// XYZ D65 (0–100 scale) → sRGB linear (0–1). Equals the CSS inverse matrix ÷100.\nconst X_RX = 0.032409699419045213,\n X_RY = -0.015373831775700935,\n X_RZ = -0.0049861076029300327;\nconst X_GX = -0.0096924363628087984,\n X_GY = 0.018759675015077206,\n X_GZ = 0.00041555057407175612;\nconst X_BX = 0.00055630079696993608,\n X_BY = -0.0020397695888897657,\n X_BZ = 0.010569715142428786;\n\n// Bradford D65 → D50 (CSS Color 4)\nconst D65_TO_D50_XX = 1.0479297925449969,\n D65_TO_D50_XY = 0.022946870601609652,\n D65_TO_D50_XZ = -0.05019226628920524;\nconst D65_TO_D50_YX = 0.02962780877005599,\n D65_TO_D50_YY = 0.9904344267538799,\n D65_TO_D50_YZ = -0.017073799063418826;\nconst D65_TO_D50_ZX = -0.009243040646204504,\n D65_TO_D50_ZY = 0.015055191490298152,\n D65_TO_D50_ZZ = 0.7518742814281371;\n\n// Bradford D50 → D65 (CSS Color 4, inverse of above)\nconst D50_TO_D65_XX = 0.955473421488075,\n D50_TO_D65_XY = -0.02309845494876471,\n D50_TO_D65_XZ = 0.06325924320057072;\nconst D50_TO_D65_YX = -0.0283697093338637,\n D50_TO_D65_YY = 1.0099953980813041,\n D50_TO_D65_YZ = 0.021041441191917323;\nconst D50_TO_D65_ZX = 0.012314014864481998,\n D50_TO_D65_ZY = -0.020507649298898964,\n D50_TO_D65_ZZ = 1.330365926242124;\n\n// ── RGB ↔ XYZ D65 ───────────────────────────────────────────────────────────\n\n/** sRGB (0–255) → XYZ D65 (0–100, screen-native, no Bradford adaptation). */\nexport const rgbToXyzD65 = ({ r, g, b, alpha }: RgbColor): XyzD65Color => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n return {\n x: 100 * (S_XR * lr + S_XG * lg + S_XB * lb),\n y: 100 * (S_YR * lr + S_YG * lg + S_YB * lb),\n z: 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb),\n alpha: clamp(round(alpha, 3), 0, 1),\n colorSpace: 'xyz-d65' as const,\n };\n};\n\n/** XYZ D65 (0–100) → linear sRGB (0–1, unclamped). */\nexport const xyzD65ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => [\n X_RX * x + X_RY * y + X_RZ * z,\n X_GX * x + X_GY * y + X_GZ * z,\n X_BX * x + X_BY * y + X_BZ * z,\n];\n\n/** Zero-allocation sibling of xyzD65ToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const xyzD65ToLinearSrgbInto = (out: Float64Array | number[], x: number, y: number, z: number): void => {\n out[0] = X_RX * x + X_RY * y + X_RZ * z;\n out[1] = X_GX * x + X_GY * y + X_GZ * z;\n out[2] = X_BX * x + X_BY * y + X_BZ * z;\n};\n\nexport const xyzD65ToRgb = ({ x, y, z, alpha }: XyzD65Color): RgbColor => {\n const [lr, lg, lb] = xyzD65ToLinearSrgb(x, y, z);\n return clampRgb({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n });\n};\n\nconst xyzD65ToRgbUnclamped = ({ x, y, z, alpha }: XyzD65Color): RgbColor => {\n const [lr, lg, lb] = xyzD65ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── RGB ↔ XYZ D50 ───────────────────────────────────────────────────────────\n\nexport const rgbToXyz = ({ r, g, b, alpha }: RgbColor): XyzColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const xd65 = 100 * (S_XR * lr + S_XG * lg + S_XB * lb);\n const yd65 = 100 * (S_YR * lr + S_YG * lg + S_YB * lb);\n const zd65 = 100 * (S_ZR * lr + S_ZG * lg + S_ZB * lb);\n return {\n x: D65_TO_D50_XX * xd65 + D65_TO_D50_XY * yd65 + D65_TO_D50_XZ * zd65,\n y: D65_TO_D50_YX * xd65 + D65_TO_D50_YY * yd65 + D65_TO_D50_YZ * zd65,\n z: D65_TO_D50_ZX * xd65 + D65_TO_D50_ZY * yd65 + D65_TO_D50_ZZ * zd65,\n alpha: clamp(round(alpha, 3), 0, 1),\n };\n};\n\n/** Zero-allocation sibling of xyzD50ToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const xyzD50ToLinearSrgbInto = (out: Float64Array | number[], x: number, y: number, z: number): void => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n out[0] = X_RX * xd65 + X_RY * yd65 + X_RZ * zd65;\n out[1] = X_GX * xd65 + X_GY * yd65 + X_GZ * zd65;\n out[2] = X_BX * xd65 + X_BY * yd65 + X_BZ * zd65;\n};\n\n/** XYZ D50 → linear sRGB (no gamma, no clamping). x/y/z are in 0–100 scale. */\nexport const xyzD50ToLinearSrgb = (x: number, y: number, z: number): [number, number, number] => {\n const xd65 = D50_TO_D65_XX * x + D50_TO_D65_XY * y + D50_TO_D65_XZ * z;\n const yd65 = D50_TO_D65_YX * x + D50_TO_D65_YY * y + D50_TO_D65_YZ * z;\n const zd65 = D50_TO_D65_ZX * x + D50_TO_D65_ZY * y + D50_TO_D65_ZZ * z;\n return [\n X_RX * xd65 + X_RY * yd65 + X_RZ * zd65,\n X_GX * xd65 + X_GY * yd65 + X_GZ * zd65,\n X_BX * xd65 + X_BY * yd65 + X_BZ * zd65,\n ];\n};\n\nexport const xyzToRgb = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return clampRgb({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n });\n};\n\n/** Unclamped XYZ D50 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst xyzToRgbUnclamped = ({ x, y, z, alpha }: XyzColor): RgbColor => {\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// ── Parsers ─────────────────────────────────────────────────────────────────\n\nexport const parseXyzObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Reject D65-discriminated objects — parseXyzD65Object owns those.\n if ((input as { colorSpace?: unknown }).colorSpace === 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isNumber(x) || !isNumber(y) || !isNumber(z) || !isNumber(alpha)) return null;\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n\nexport const parseXyzD65Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'xyz-d65') return null;\n if (!hasKeys(input, ['x', 'y', 'z'])) return null;\n const { x, y, z, alpha = 1 } = input as { x: unknown; y: unknown; z: unknown; alpha?: unknown };\n if (!isAnyNumber(x) || !isAnyNumber(y) || !isAnyNumber(z) || !isAnyNumber(alpha)) return null;\n return xyzD65ToRgbUnclamped({\n x: sanitize(x),\n y: sanitize(y),\n z: sanitize(z),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\n// CSS Color 4: color(xyz-d65 x y z / alpha). Channels accept number|percentage|none.\n// The library uses a 0–100 XYZ scale (to match the existing XyzColor convention); percent is\n// treated as the same scale for symmetry with the emitted string (100% = 100).\nconst XYZ_D65_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d65\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nconst XYZ_D50_RE = new RegExp(\n `^color\\\\(\\\\s*xyz-d50\\\\s+(?<x>${NUM_OR_NONE})(?<xp>%?)\\\\s+(?<y>${NUM_OR_NONE})(?<yp>%?)` +\n `\\\\s+(?<z>${NUM_OR_NONE})(?<zp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseXyzD65String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D65_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzD65ToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'xyz-d65',\n });\n};\n\nexport const parseXyzD50String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = XYZ_D50_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const x = parseNum(g.x!);\n const y = parseNum(g.y!);\n const z = parseNum(g.z!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return xyzToRgbUnclamped({\n x,\n y,\n z,\n alpha: clamp(alpha, 0, 1),\n });\n};\n","import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { LabColor, RgbColor, XyzColor } from '../types.js';\nimport { D50_WX as WX, D50_WY as WY, D50_WZ as WZ, rgbToXyz, xyzD50ToLinearSrgb, xyzToRgb } from './xyz.js';\n\n// D65 white point derived from CIE chromaticity (x=0.3127, y=0.329)\nconst D65_WX = (0.3127 / 0.329) * 100;\nconst D65_WY = 100;\nconst D65_WZ = ((1 - 0.3127 - 0.329) / 0.329) * 100;\n\nconst EPSILON = 216 / 24389;\nconst KAPPA = 24389 / 27;\n\nconst f = (t: number) => (t > EPSILON ? Math.cbrt(t) : (KAPPA * t + 16) / 116);\n\nexport const xyzToLab = ({ x, y, z, alpha }: XyzColor): LabColor => {\n const fy = f(y / WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / WX) - fy) || 0, // || 0 suppresses −0; NaN is impossible since WX/WZ are non-zero constants\n b: 200 * (fy - f(z / WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\n/** Primitives-only Lab → XYZ D50. x/y/z in 0–100 scale. Shared with channels.ts hot paths. */\nexport const labToXyzValues = (l: number, a: number, b: number): [number, number, number] => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n return [\n (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX,\n (l > 8 ? fy ** 3 : l / KAPPA) * WY,\n (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ,\n ];\n};\n\n/** Zero-allocation sibling of labToXyzValues — writes [x, y, z] into `out`. */\nexport const labToXyzValuesInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n const fy = (l + 16) / 116;\n const fx = a / 500 + fy;\n const fz = fy - b / 200;\n out[0] = (fx ** 3 > EPSILON ? fx ** 3 : (116 * fx - 16) / KAPPA) * WX;\n out[1] = (l > 8 ? fy ** 3 : l / KAPPA) * WY;\n out[2] = (fz ** 3 > EPSILON ? fz ** 3 : (116 * fz - 16) / KAPPA) * WZ;\n};\n\nexport const labToXyz = ({ l, a, b, alpha }: LabColor): XyzColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n return { x, y, z, alpha };\n};\n\nexport const rgbToLab = (rgb: RgbColor): LabColor => xyzToLab(rgbToXyz(rgb));\n\n/** RGB → CIE Lab using D65 white point (screen-native; used for perceptual difference). */\nexport const rgbToLabD65 = ({ r, g, b, alpha }: RgbColor): LabColor => {\n const lr = srgbToLinear(r / 255),\n lg = srgbToLinear(g / 255),\n lb = srgbToLinear(b / 255);\n const x = 100 * (0.41239079926595951 * lr + 0.35758433938387796 * lg + 0.18048078840183429 * lb);\n const y = 100 * (0.21263900587151036 * lr + 0.71516867876775592 * lg + 0.072192315360733714 * lb);\n const z = 100 * (0.019330818715591849 * lr + 0.11919477979462599 * lg + 0.95053215224966059 * lb);\n const fy = f(y / D65_WY);\n return {\n l: 116 * fy - 16,\n a: 500 * (f(x / D65_WX) - fy) || 0,\n b: 200 * (fy - f(z / D65_WZ)) || 0,\n alpha: round(alpha, 3),\n colorSpace: 'lab' as const,\n };\n};\n\nexport const deltaE2000 = (lab1: LabColor, lab2: LabColor): number => {\n const { l: L1, a: a1, b: b1 } = lab1;\n const { l: L2, a: a2, b: b2 } = lab2;\n const rad = Math.PI / 180;\n const deg = 180 / Math.PI;\n\n const C1 = Math.sqrt(a1 ** 2 + b1 ** 2);\n const C2 = Math.sqrt(a2 ** 2 + b2 ** 2);\n const Cab = ((C1 + C2) / 2) ** 7;\n const G = 0.5 * (1 - Math.sqrt(Cab / (Cab + 25 ** 7)));\n const a1p = a1 * (1 + G);\n const a2p = a2 * (1 + G);\n const C1p = Math.sqrt(a1p ** 2 + b1 ** 2);\n const C2p = Math.sqrt(a2p ** 2 + b2 ** 2);\n const Cp = (C1p + C2p) / 2;\n\n const h1p = a1p === 0 && b1 === 0 ? 0 : Math.atan2(b1, a1p) * deg;\n const h2p = a2p === 0 && b2 === 0 ? 0 : Math.atan2(b2, a2p) * deg;\n const h1 = h1p < 0 ? h1p + 360 : h1p;\n const h2 = h2p < 0 ? h2p + 360 : h2p;\n\n let dhp = h2 - h1;\n const absDh = Math.abs(h2 - h1);\n if (absDh > 180 && h2 <= h1) dhp += 360;\n else if (absDh > 180 && h2 > h1) dhp -= 360;\n\n const Lm = (L1 + L2) / 2;\n let Hm = h1 + h2;\n if (absDh <= 180) Hm /= 2;\n else Hm = (h1 + h2 < 360 ? Hm + 360 : Hm - 360) / 2;\n\n const T =\n 1 -\n 0.17 * Math.cos(rad * (Hm - 30)) +\n 0.24 * Math.cos(2 * rad * Hm) +\n 0.32 * Math.cos(rad * (3 * Hm + 6)) -\n 0.2 * Math.cos(rad * (4 * Hm - 63));\n\n const dLp = L2 - L1;\n const dCp = C2p - C1p;\n const dHp = 2 * Math.sin((rad * dhp) / 2) * Math.sqrt(C1p * C2p);\n\n const SL = 1 + (0.015 * (Lm - 50) ** 2) / Math.sqrt(20 + (Lm - 50) ** 2);\n const SC = 1 + 0.045 * Cp;\n const SH = 1 + 0.015 * Cp * T;\n\n const RC7 = Cp ** 7;\n const RC = 2 * Math.sqrt(RC7 / (RC7 + 25 ** 7));\n const dTheta = 30 * Math.exp(-(((Hm - 275) / 25) ** 2));\n const RT = -RC * Math.sin(2 * rad * dTheta);\n\n return Math.sqrt((dLp / SL) ** 2 + (dCp / SC) ** 2 + (dHp / SH) ** 2 + RT * (dCp / SC) * (dHp / SH));\n};\n\nexport const labToRgb = (lab: LabColor): RgbColor => xyzToRgb(labToXyz(lab));\n\n/**\n * Unclamped Lab (D50) → gamma-encoded sRGB (0–255). Channels may exceed [0, 255] or go\n * negative for colors outside the sRGB gamut. Preserves out-of-gamut information so callers\n * (mapSrgb, inGamut*) can detect and map the color; sRGB output methods clamp at the edge.\n */\nexport const labToRgbUnclamped = ({ l, a, b, alpha }: LabColor): RgbColor => {\n const [x, y, z] = labToXyzValues(l, a, b);\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\n// CSS Color 4: lab(L a b / alpha). L: number|percentage|none (100% = 100).\n// a/b: number|percentage|none (100% = 125).\nconst LAB_RE = new RegExp(\n `^lab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseLabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100, so value is unchanged whether `%` present\n const a = g.ap ? parseNum(g.a!) * 1.25 : parseNum(g.a!);\n const b = g.bp ? parseNum(g.b!) * 1.25 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return labToRgbUnclamped({\n l: clamp(l, 0, 100),\n a,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'lab',\n });\n};\n\nexport const parseLabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return labToRgbUnclamped({\n l: clamp(sanitize(l), 0, 100),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'lab',\n });\n};\n"]}
'use strict';var chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var U=.4122214708,z=.5363325363,q=.0514459929,D=.2119034982,H=.6806995451,J=.1073969566,P=.0883024619,Q=.2817188376,V=.6299787005,W=.2104542553,X=.793617785,Y=-0.0040720468,Z=1.9779984951,nn=-2.428592205,on=.4505937099,rn=.0259040371,tn=.7827717662,sn=-0.808675766,I=.3963377774,S=.2158037573,O=-0.1055613458,B=-0.0638541728,h=-0.0894841775,x=-1.291485548,A=4.0767416613,C=-3.3077115904,w=.2309699287,T=-1.2684380041,y=2.6097574007,G=-0.3413193963,d=-0.0041960865,N=-0.7034186145,$=1.7076147009;var cn=(o,n,r)=>{let t=Math.cbrt(U*o+z*n+q*r),s=Math.cbrt(D*o+H*n+J*r),c=Math.cbrt(P*o+Q*n+V*r);return [W*t+X*s+Y*c,Z*t+nn*s+on*c,rn*t+tn*s+sn*c]},Mn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=cn(chunkX5FCFNQN_cjs.a(o/255),chunkX5FCFNQN_cjs.a(n/255),chunkX5FCFNQN_cjs.a(r/255));return {l:s,a:c,b:e,alpha:t}},j=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=en(o,n,r);return {r:chunkX5FCFNQN_cjs.b(s)*255,g:chunkX5FCFNQN_cjs.b(c)*255,b:chunkX5FCFNQN_cjs.b(e)*255,alpha:t}},un=({l:o,a:n,b:r,alpha:t})=>{if(n===0&&r===0){let K=o**3,k=chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(K,0,1))*255;return chunk3V4MONNR_cjs.a({r:k,g:k,b:k,alpha:t})}let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,b=e**3,p=4.0767416613*_-3.3077115904*l+.2309699287*b,E=-1.2684380041*_+2.6097574007*l-.3413193963*b,F=-0.0041960865*_-.7034186145*l+1.7076147009*b;return chunk3V4MONNR_cjs.a({r:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(p,0,1))*255,g:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(E,0,1))*255,b:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(F,0,1))*255,alpha:t})},mn=(o,n,r,t)=>{if(r===0&&t===0){let p=n**3;o[0]=p,o[1]=p,o[2]=p;return}let s=n+I*r+S*t,c=n+O*r+B*t,e=n+h*r+x*t,_=s**3,l=c**3,b=e**3;o[0]=A*_+C*l+w*b,o[1]=T*_+y*l+G*b,o[2]=d*_+N*l+$*b;},en=(o,n,r)=>{if(n===0&&r===0){let b=o**3;return [b,b,b]}let t=o+I*n+S*r,s=o+O*n+B*r,c=o+h*n+x*r,e=t**3,_=s**3,l=c**3;return [A*e+C*_+w*l,T*e+y*_+G*l,d*e+N*_+$*l]},pn=o=>{if(!chunkYISEJCI6_cjs.h(o)||o.colorSpace==="lab"||!chunkYISEJCI6_cjs.i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||chunkYISEJCI6_cjs.g(n)>1?null:j({l:chunkYISEJCI6_cjs.g(n),a:chunkYISEJCI6_cjs.g(r),b:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(s),0,1)})},_n=new RegExp(`^oklab\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<a>${chunkYISEJCI6_cjs.k})(?<ap>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),vn=o=>{if(typeof o!="string")return null;let n=_n.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?chunkYISEJCI6_cjs.l(n.l)/100:chunkYISEJCI6_cjs.l(n.l),t=n.ap?chunkYISEJCI6_cjs.l(n.a)*.004:chunkYISEJCI6_cjs.l(n.a),s=n.bp?chunkYISEJCI6_cjs.l(n.b)*.004:chunkYISEJCI6_cjs.l(n.b),c=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return j({l:r,a:t,b:s,alpha:chunkYISEJCI6_cjs.a(c,0,1)})};exports.a=cn;exports.b=Mn;exports.c=j;exports.d=un;exports.e=mn;exports.f=en;exports.g=pn;exports.h=vn;//# sourceMappingURL=chunk-GXECYURS.cjs.map
//# sourceMappingURL=chunk-GXECYURS.cjs.map
{"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","v","srgb","clamp","clampRgb","l_","m_","s_","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"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","file":"chunk-GXECYURS.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n const srgb = srgbFromLinear(clamp(v, 0, 1)) * 255;\n return clampRgb({ r: srgb, g: srgb, b: srgb, alpha });\n }\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n // Achromatic short-circuit: M1⁻¹ rows sum to 1 mathematically, but floating-point\n // rounding leaves lr/lg/lb ~1 ULP apart, which gets amplified into a phantom hue\n // downstream in rgbToHslRaw. Explicitly return lv for all channels.\n if (a === 0 && b === 0) {\n const v = l ** 3;\n out[0] = v;\n out[1] = v;\n out[2] = v;\n return;\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n return [v, v, v];\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]}
import {a,b}from'./chunk-FXCFKFXK.mjs';import {a as a$2}from'./chunk-Q3O3QQ4H.mjs';import {a as a$1,h as h$1,i,f,g,l,k}from'./chunk-IOXRZECH.mjs';var U=.4122214708,z=.5363325363,q=.0514459929,D=.2119034982,H=.6806995451,J=.1073969566,P=.0883024619,Q=.2817188376,V=.6299787005,W=.2104542553,X=.793617785,Y=-0.0040720468,Z=1.9779984951,nn=-2.428592205,on=.4505937099,rn=.0259040371,tn=.7827717662,sn=-0.808675766,I=.3963377774,S=.2158037573,O=-0.1055613458,B=-0.0638541728,h=-0.0894841775,x=-1.291485548,A=4.0767416613,C=-3.3077115904,w=.2309699287,T=-1.2684380041,y=2.6097574007,G=-0.3413193963,d=-0.0041960865,N=-0.7034186145,$=1.7076147009;var cn=(o,n,r)=>{let t=Math.cbrt(U*o+z*n+q*r),s=Math.cbrt(D*o+H*n+J*r),c=Math.cbrt(P*o+Q*n+V*r);return [W*t+X*s+Y*c,Z*t+nn*s+on*c,rn*t+tn*s+sn*c]},Mn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=cn(a(o/255),a(n/255),a(r/255));return {l:s,a:c,b:e,alpha:t}},j=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=en(o,n,r);return {r:b(s)*255,g:b(c)*255,b:b(e)*255,alpha:t}},un=({l:o,a:n,b:r,alpha:t})=>{if(n===0&&r===0){let K=o**3,k=b(a$1(K,0,1))*255;return a$2({r:k,g:k,b:k,alpha:t})}let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,b$1=e**3,p=4.0767416613*_-3.3077115904*l+.2309699287*b$1,E=-1.2684380041*_+2.6097574007*l-.3413193963*b$1,F=-0.0041960865*_-.7034186145*l+1.7076147009*b$1;return a$2({r:b(a$1(p,0,1))*255,g:b(a$1(E,0,1))*255,b:b(a$1(F,0,1))*255,alpha:t})},mn=(o,n,r,t)=>{if(r===0&&t===0){let p=n**3;o[0]=p,o[1]=p,o[2]=p;return}let s=n+I*r+S*t,c=n+O*r+B*t,e=n+h*r+x*t,_=s**3,l=c**3,b=e**3;o[0]=A*_+C*l+w*b,o[1]=T*_+y*l+G*b,o[2]=d*_+N*l+$*b;},en=(o,n,r)=>{if(n===0&&r===0){let b=o**3;return [b,b,b]}let t=o+I*n+S*r,s=o+O*n+B*r,c=o+h*n+x*r,e=t**3,_=s**3,l=c**3;return [A*e+C*_+w*l,T*e+y*_+G*l,d*e+N*_+$*l]},pn=o=>{if(!h$1(o)||o.colorSpace==="lab"||!i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !f(n)||!f(r)||!f(t)||!f(s)||g(n)>1?null:j({l:g(n),a:g(r),b:g(t),alpha:a$1(g(s),0,1)})},_n=new RegExp(`^oklab\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<a>${k})(?<ap>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),vn=o=>{if(typeof o!="string")return null;let n=_n.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?l(n.l)/100:l(n.l),t=n.ap?l(n.a)*.004:l(n.a),s=n.bp?l(n.b)*.004:l(n.b),c=n.al===void 0?1:l(n.al)/(n.alp?100:1);return j({l:r,a:t,b:s,alpha:a$1(c,0,1)})};export{cn as a,Mn as b,j as c,un as d,mn as e,en as f,pn as g,vn as h};//# sourceMappingURL=chunk-J6CH5YTL.mjs.map
//# sourceMappingURL=chunk-J6CH5YTL.mjs.map
{"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","v","srgb","clamp","clampRgb","l_","m_","s_","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"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","file":"chunk-J6CH5YTL.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n const srgb = srgbFromLinear(clamp(v, 0, 1)) * 255;\n return clampRgb({ r: srgb, g: srgb, b: srgb, alpha });\n }\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n // Achromatic short-circuit: M1⁻¹ rows sum to 1 mathematically, but floating-point\n // rounding leaves lr/lg/lb ~1 ULP apart, which gets amplified into a phantom hue\n // downstream in rgbToHslRaw. Explicitly return lv for all channels.\n if (a === 0 && b === 0) {\n const v = l ** 3;\n out[0] = v;\n out[1] = v;\n out[2] = v;\n return;\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n return [v, v, v];\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]}
'use strict';var chunkGXECYURS_cjs=require('./chunk-GXECYURS.cjs'),chunkGU6TZJ4O_cjs=require('./chunk-GU6TZJ4O.cjs'),chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var er=.8224619687,or=.1775380313,br=.0331941989,tr=.9668058011,ar=.0170826307,ur=.0723974407,mr=.9105199286,Fr=1.2249401762805598,vr=-0.22494017628055996,Br=-0.04205695470968816,Er=1.042056954709688,$r=-0.019637554590334432,Dr=-0.07863604555063189,Or=1.0982736001409663,Rn=(e,r,n,o)=>{e[0]=er*r+or*n,e[1]=br*r+tr*n,e[2]=ar*r+ur*n+mr*o;},sr=(e,r,n)=>[er*e+or*r,br*e+tr*r,ar*e+ur*r+mr*n];var z=(e,r,n)=>[Fr*e+vr*r,Br*e+Er*r,$r*e+Dr*r+Or*n],fn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=sr(chunkX5FCFNQN_cjs.a(e/255),chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(n/255));return {r:chunkX5FCFNQN_cjs.b(b),g:chunkX5FCFNQN_cjs.b(t),b:chunkX5FCFNQN_cjs.b(u),alpha:o,colorSpace:"display-p3"}};var lr=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=z(chunkX5FCFNQN_cjs.a(e),chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n));return {r:chunkX5FCFNQN_cjs.b(b)*255,g:chunkX5FCFNQN_cjs.b(t)*255,b:chunkX5FCFNQN_cjs.b(u)*255,alpha:o}},yn=e=>{if(!chunkYISEJCI6_cjs.h(e)||e.colorSpace!=="display-p3"||!chunkYISEJCI6_cjs.i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(b)?null:lr({r:chunkYISEJCI6_cjs.g(r),g:chunkYISEJCI6_cjs.g(n),b:chunkYISEJCI6_cjs.g(o),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(b),0,1)})},jr=new RegExp(`^color\\(\\s*display-p3\\s+(?<r>${chunkYISEJCI6_cjs.k})(?<rp>%?)\\s+(?<g>${chunkYISEJCI6_cjs.k})(?<gp>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),Sn=e=>{if(typeof e!="string")return null;let r=jr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?chunkYISEJCI6_cjs.l(r.r)/100:chunkYISEJCI6_cjs.l(r.r),o=r.gp?chunkYISEJCI6_cjs.l(r.g)/100:chunkYISEJCI6_cjs.l(r.g),b=r.bp?chunkYISEJCI6_cjs.l(r.b)/100:chunkYISEJCI6_cjs.l(r.b),t=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return lr({r:n,g:o,b,alpha:chunkYISEJCI6_cjs.a(t,0,1)})},xn=(e,r,n)=>sr(...chunkGXECYURS_cjs.f(e,r,n));var cr=.6274038959,pr=.3292830384,ir=.0433130657,dr=.0690972894,hr=.9195403951,gr=.0113623156,Rr=.0163914389,fr=.0880133079,yr=.8955952532,Xr=1.6604910021084345,Ur=-0.5876411387885495,Kr=-0.07284986331988488,qr=-0.12455047452159074,Hr=1.1328998971259603,Vr=-0.008349422604369477,Yr=-0.018150763354905303,Zr=-0.10057889800800739,Jr=1.1187296613629127,_n=(e,r,n,o)=>{e[0]=cr*r+pr*n+ir*o,e[1]=dr*r+hr*n+gr*o,e[2]=Rr*r+fr*n+yr*o;},Sr=(e,r,n)=>[cr*e+pr*r+ir*n,dr*e+hr*r+gr*n,Rr*e+fr*r+yr*n];var F=(e,r,n)=>[Xr*e+Ur*r+Kr*n,qr*e+Hr*r+Vr*n,Yr*e+Zr*r+Jr*n],kn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=Sr(chunkX5FCFNQN_cjs.a(e/255),chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(n/255));return {r:chunkX5FCFNQN_cjs.d(b),g:chunkX5FCFNQN_cjs.d(t),b:chunkX5FCFNQN_cjs.d(u),alpha:o,colorSpace:"rec2020"}};var xr=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=F(chunkX5FCFNQN_cjs.c(e),chunkX5FCFNQN_cjs.c(r),chunkX5FCFNQN_cjs.c(n));return {r:chunkX5FCFNQN_cjs.b(b)*255,g:chunkX5FCFNQN_cjs.b(t)*255,b:chunkX5FCFNQN_cjs.b(u)*255,alpha:o}},Mn=e=>{if(!chunkYISEJCI6_cjs.h(e)||e.colorSpace!=="rec2020"||!chunkYISEJCI6_cjs.i(e,["r","g","b"]))return null;let{r,g:n,b:o,alpha:b=1}=e;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(b)?null:xr({r:chunkYISEJCI6_cjs.g(r),g:chunkYISEJCI6_cjs.g(n),b:chunkYISEJCI6_cjs.g(o),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(b),0,1)})},Qr=new RegExp(`^color\\(\\s*rec2020\\s+(?<r>${chunkYISEJCI6_cjs.k})(?<rp>%?)\\s+(?<g>${chunkYISEJCI6_cjs.k})(?<gp>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),Pn=e=>{if(typeof e!="string")return null;let r=Qr.exec(e.trim())?.groups;if(!r)return null;let n=r.rp?chunkYISEJCI6_cjs.l(r.r)/100:chunkYISEJCI6_cjs.l(r.r),o=r.gp?chunkYISEJCI6_cjs.l(r.g)/100:chunkYISEJCI6_cjs.l(r.g),b=r.bp?chunkYISEJCI6_cjs.l(r.b)/100:chunkYISEJCI6_cjs.l(r.b),t=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return xr({r:n,g:o,b,alpha:chunkYISEJCI6_cjs.a(t,0,1)})},An=(e,r,n)=>Sr(...chunkGXECYURS_cjs.f(e,r,n));var Wr=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rn=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nn=/^lab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,en=/^lch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,on=/^color\(\s*display-p3\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,bn=/^color\(\s*rec2020\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,tn=/^color\(\s*xyz-d50\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,an=/^color\(\s*xyz-d65\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,A=(e,r,n)=>{let{x:o,y:b,z:t}=chunkGU6TZJ4O_cjs.l({l:e,a:r,b:n,alpha:1,colorSpace:"lab"}),[u,s,l]=chunkGU6TZJ4O_cjs.e(o,b,t);return chunkGXECYURS_cjs.a(u,s,l)},Tr=(e,r,n)=>{let[o,b,t]=z(chunkX5FCFNQN_cjs.a(e),chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n));return chunkGXECYURS_cjs.a(o,b,t)},Cr=(e,r,n)=>{let[o,b,t]=F(chunkX5FCFNQN_cjs.c(e),chunkX5FCFNQN_cjs.c(r),chunkX5FCFNQN_cjs.c(n));return chunkGXECYURS_cjs.a(o,b,t)},Lr=(e,r,n)=>{let[o,b,t]=chunkGU6TZJ4O_cjs.e(e,r,n);return chunkGXECYURS_cjs.a(o,b,t)},Nr=(e,r,n)=>{let[o,b,t]=chunkGU6TZJ4O_cjs.b(e,r,n);return chunkGXECYURS_cjs.a(o,b,t)},G=e=>{if(typeof e=="object"&&e!==null){let r=e;if("l"in r&&"a"in r&&"b"in r&&r.colorSpace!=="lab"&&!("c"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.a=="number"&&typeof n.b=="number"&&typeof n.alpha=="number")return {l:n.l,a:n.a,b:n.b,alpha:n.alpha}}if("l"in r&&"c"in r&&"h"in r&&r.colorSpace!=="lch"&&!("a"in r)&&!("r"in r)){let n=e;if(typeof n.l=="number"&&typeof n.c=="number"&&typeof n.h=="number"){let o=n.h*Math.PI/180;return {l:n.l,a:n.c*Math.cos(o),b:n.c*Math.sin(o),alpha:n.alpha}}}if(r.colorSpace==="lab"){let n=e;if(typeof n.l!="number"||typeof n.a!="number"||typeof n.b!="number")return null;let[o,b,t]=A(n.l,n.a,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="lch"){let n=e;if(typeof n.l!="number"||typeof n.c!="number"||typeof n.h!="number")return null;let o=n.h*Math.PI/180,[b,t,u]=A(n.l,n.c*Math.cos(o),n.c*Math.sin(o));return {l:b,a:t,b:u,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="display-p3"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Tr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="rec2020"){let n=e;if(typeof n.r!="number"||typeof n.g!="number"||typeof n.b!="number")return null;let[o,b,t]=Cr(n.r,n.g,n.b);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if(r.colorSpace==="xyz-d65"){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Nr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}if("x"in r&&"y"in r&&"z"in r){let n=e;if(typeof n.x!="number"||typeof n.y!="number"||typeof n.z!="number")return null;let[o,b,t]=Lr(n.x,n.y,n.z);return {l:o,a:b,b:t,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=Wr.exec(e);if(r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(chunkYISEJCI6_cjs.d[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o*Math.cos(u),b:o*Math.sin(u),alpha:s}}if(r=rn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),b=r[6]?Number(r[5])*.004:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b,alpha:t}}if(r=nn.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.25:Number(r[3]),b=r[6]?Number(r[5])*1.25:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=A(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=en.exec(e),r){let n=Number(r[1]),o=r[4]?Number(r[3])*1.5:Number(r[3]),b=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(chunkYISEJCI6_cjs.d[b]??1)*Math.PI/180,s=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[l,x,T]=A(n,o*Math.cos(u),o*Math.sin(u));return {l,a:x,b:T,alpha:s}}if(r=on.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Tr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=bn.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])/100:Number(r[3]),b=r[6]?Number(r[5])/100:Number(r[5]),t=r[7]===void 0?1:Number(r[7])/(r[8]?100:1),[u,s,l]=Cr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=tn.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Lr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=an.exec(e),r){let n=Number(r[1]),o=Number(r[2]),b=Number(r[3]),t=r[4]===void 0?1:Number(r[4])/(r[5]?100:1),[u,s,l]=Nr(n,o,b);return {l:u,a:s,b:l,alpha:t}}return null}return null},S=5e-4,Pr=(e,r,n)=>e>=-S&&e<=1+S&&r>=-S&&r<=1+S&&n>=-S&&n<=1+S,_r=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,$n=e=>{let r=G(e);if(r===null)return true;let[n,o,b]=chunkGXECYURS_cjs.f(r.l,r.a,r.b);return Pr(n,o,b)},kr=.02,un=1e-4,Mr=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],b=e[2]-r[2];return Math.sqrt(n*n+o*o+b*b)},Ar=(e,r,n,o,b)=>{if(e>=1)return [1,1,1];if(e<=0)return [0,0,0];let[t,u,s]=o(e,r,n);if(_r(t,u,s))return [t,u,s];let l=chunkYISEJCI6_cjs.a(t,0,1),x=chunkYISEJCI6_cjs.a(u,0,1),T=chunkYISEJCI6_cjs.a(s,0,1);if(Mr(b(l,x,T),[e,r,n])<=kr)return [l,x,T];let E=Math.atan2(n,r),wr=Math.sqrt(r*r+n*n),N=0,I=wr,$=true,D=l,O=x,j=T;for(;I-N>un;){let C=(N+I)/2,X=C*Math.cos(E),U=C*Math.sin(E),[K,q,H]=o(e,X,U);if($&&_r(K,q,H)){N=C;continue}let V=chunkYISEJCI6_cjs.a(K,0,1),Y=chunkYISEJCI6_cjs.a(q,0,1),Z=chunkYISEJCI6_cjs.a(H,0,1);D=V,O=Y,j=Z,Mr(b(V,Y,Z),[e,X,U])<=kr?(N=C,$=false):I=C;}return [D,O,j]},Dn=e=>{let r=G(e);return r===null?null:{linear:Ar(r.l,r.a,r.b,chunkGXECYURS_cjs.f,chunkGXECYURS_cjs.a),alpha:r.alpha}},On=(e,r)=>{let n=G(e);if(n===null)return true;let[o,b,t]=r(n.l,n.a,n.b);return Pr(o,b,t)},jn=(e,r,n)=>{let o=G(e);return o===null?null:{linear:Ar(o.l,o.a,o.b,r,n),alpha:o.alpha}};var f=Math.PI/180,Gr=(e,r,n)=>{let o=n*f;return chunkGXECYURS_cjs.f(e,r*Math.cos(o),r*Math.sin(o))},Ir=(e,r,n,o)=>{let b=o*f;chunkGXECYURS_cjs.e(e,r,n*Math.cos(b),n*Math.sin(b));},Vn=(e,r,n)=>{let[o,b,t]=Gr(e,r,n);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]},Yn=(e,r,n,o)=>{Ir(e,r,n,o),e[0]=chunkX5FCFNQN_cjs.b(e[0]),e[1]=chunkX5FCFNQN_cjs.b(e[1]),e[2]=chunkX5FCFNQN_cjs.b(e[2]);},Zn=(e,r,n)=>{let[o,b,t]=Gr(e,r,n);return [[o,b,t],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]]},Jn=(e,r,n,o,b)=>{Ir(e,n,o,b),r[0]=chunkX5FCFNQN_cjs.b(e[0]),r[1]=chunkX5FCFNQN_cjs.b(e[1]),r[2]=chunkX5FCFNQN_cjs.b(e[2]);},Qn=(e,r,n)=>[chunkX5FCFNQN_cjs.a(e),chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n)],Wn=(e,r,n,o)=>{e[0]=chunkX5FCFNQN_cjs.a(r),e[1]=chunkX5FCFNQN_cjs.a(n),e[2]=chunkX5FCFNQN_cjs.a(o);},v=(e,r,n)=>{let[o,b,t]=chunkGU6TZJ4O_cjs.j(e,r,n);return chunkGU6TZJ4O_cjs.e(o,b,t)},B=(e,r,n,o)=>{chunkGU6TZJ4O_cjs.k(e,r,n,o),chunkGU6TZJ4O_cjs.d(e,e[0],e[1],e[2]);},re=(e,r,n)=>{let o=n*f;return v(e,r*Math.cos(o),r*Math.sin(o))},ne=(e,r,n,o)=>{let b=o*f;B(e,r,n*Math.cos(b),n*Math.sin(b));},mn=(e,r,n)=>{let[o,b,t]=v(e,r,n);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]},sn=(e,r,n,o)=>{B(e,r,n,o),e[0]=chunkX5FCFNQN_cjs.b(e[0]),e[1]=chunkX5FCFNQN_cjs.b(e[1]),e[2]=chunkX5FCFNQN_cjs.b(e[2]);},ee=(e,r,n)=>{let o=n*f;return mn(e,r*Math.cos(o),r*Math.sin(o))},oe=(e,r,n,o)=>{let b=o*f;sn(e,r,n*Math.cos(b),n*Math.sin(b));},ln=(e,r,n)=>{let[o,b,t]=v(e,r,n);return [[o,b,t],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]]},cn=(e,r,n,o,b)=>{B(e,n,o,b),r[0]=chunkX5FCFNQN_cjs.b(e[0]),r[1]=chunkX5FCFNQN_cjs.b(e[1]),r[2]=chunkX5FCFNQN_cjs.b(e[2]);},be=(e,r,n)=>{let o=n*f;return ln(e,r*Math.cos(o),r*Math.sin(o))},te=(e,r,n,o,b)=>{let t=b*f;cn(e,r,n,o*Math.cos(t),o*Math.sin(t));};exports.A=v;exports.B=B;exports.C=re;exports.D=ne;exports.E=mn;exports.F=sn;exports.G=ee;exports.H=oe;exports.I=ln;exports.J=cn;exports.K=be;exports.L=te;exports.a=Rn;exports.b=sr;exports.c=z;exports.d=fn;exports.e=yn;exports.f=Sn;exports.g=xn;exports.h=_n;exports.i=Sr;exports.j=F;exports.k=kn;exports.l=Mn;exports.m=Pn;exports.n=An;exports.o=$n;exports.p=Dn;exports.q=On;exports.r=jn;exports.s=Gr;exports.t=Ir;exports.u=Vn;exports.v=Yn;exports.w=Zn;exports.x=Jn;exports.y=Qn;exports.z=Wn;//# sourceMappingURL=chunk-JVG55LEC.cjs.map
//# sourceMappingURL=chunk-JVG55LEC.cjs.map

Sorry, the diff of this file is too big to display

'use strict';var chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var N=r=>({h:chunkYISEJCI6_cjs.c(r.h),s:chunkYISEJCI6_cjs.a(r.s,0,100),v:chunkYISEJCI6_cjs.a(r.v,0,100),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r.alpha,3),0,1)}),g={h:0,s:0,v:0,alpha:0},T=({r,g:n,b:u,alpha:h})=>{let t=r/255,o=n/255,c=u/255,e=Math.max(t,o,c),a=Math.min(t,o,c),l=e-a,i=e===0?0:l/e,f=0;if(e!==a)switch(e){case t:f=((o-c)/l+(o<c?6:0))/6;break;case o:f=((c-t)/l+2)/6;break;case c:f=((t-o)/l+4)/6;break}let k=f*360;return g.h=k>=0&&k<360?k:(k%360+360)%360,g.s=chunkYISEJCI6_cjs.a(i*100,0,100),g.v=chunkYISEJCI6_cjs.a(e*100,0,100),g.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(h,3),0,1),g};var s=[0,0,0],M=({h:r,s:n,v:u,alpha:h})=>{let t=n/100,o=u/100,c=Math.floor(r/60%6),e=r/60-Math.floor(r/60),a=o*(1-t),l=o*(1-e*t),i=o*(1-(1-e)*t);switch(c){case 0:s[0]=o,s[1]=i,s[2]=a;break;case 1:s[0]=l,s[1]=o,s[2]=a;break;case 2:s[0]=a,s[1]=o,s[2]=i;break;case 3:s[0]=a,s[1]=l,s[2]=o;break;case 4:s[0]=i,s[1]=a,s[2]=o;break;default:s[0]=o,s[1]=a,s[2]=l;break}return chunk3V4MONNR_cjs.a({r:s[0]*255,g:s[1]*255,b:s[2]*255,alpha:h})},y=new RegExp(`^hsva?\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${chunkYISEJCI6_cjs.j})%\\s*,\\s*(?<v_c>${chunkYISEJCI6_cjs.j})%(?:\\s*,\\s*(?<al_c>${chunkYISEJCI6_cjs.j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${chunkYISEJCI6_cjs.k})(?<sp_s>%?)\\s+(?<v_s>${chunkYISEJCI6_cjs.k})(?<vp_s>%?)(?:\\s*/\\s*(?<al_s>${chunkYISEJCI6_cjs.k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),j=r=>{if(typeof r!="string")return null;let n=y.exec(r.trim())?.groups;if(!n)return null;let u=n.s_c!==void 0;if(u&&/^none$/i.test(n.h))return null;let h=n.hu?.toLowerCase()??"deg",t=chunkYISEJCI6_cjs.l(n.h)*(chunkYISEJCI6_cjs.d[h]??1),o=chunkYISEJCI6_cjs.l(n.s_c??n.s_s),c=chunkYISEJCI6_cjs.l(n.v_c??n.v_s),e=n.al_c??n.al_s;if(u&&e!==void 0&&/^none$/i.test(e))return null;let a=!!(n.alp_c??n.alp_s),l=e===void 0?1:chunkYISEJCI6_cjs.l(e)/(a?100:1);return M(N({h:t,s:o,v:c,alpha:l}))},A=r=>{if(!chunkYISEJCI6_cjs.h(r)||!chunkYISEJCI6_cjs.i(r,["h","s","v"]))return null;let{h:n,s:u,v:h,alpha:t=1}=r;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(u)||!chunkYISEJCI6_cjs.f(h)||!chunkYISEJCI6_cjs.f(t)?null:M(N({h:chunkYISEJCI6_cjs.g(n),s:chunkYISEJCI6_cjs.g(u),v:chunkYISEJCI6_cjs.g(h),alpha:chunkYISEJCI6_cjs.g(t)}))};exports.a=T;exports.b=M;exports.c=j;exports.d=A;//# sourceMappingURL=chunk-MNUCH7SI.cjs.map
//# sourceMappingURL=chunk-MNUCH7SI.cjs.map
{"version":3,"sources":["../src/colorModels/hsv.ts"],"names":["clampHsv","hsv","normalizeHue","clamp","round","_hsvBuf","rgbToHsvRaw","g","b","alpha","rn","gn","bn","max","min","d","s","h","hDeg","_RGB","hsvToRgb","v","sn","vn","i","f","p","q","t","clampRgb","HSV_RE","NUM_OR_NONE","NUM","parseHsvString","input","isComma","unit","parseNum","ANGLE_UNITS","rawA","isPercent","parseHsvObject","isObject","hasKeys","isAnyNumber","sanitize"],"mappings":"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","file":"chunk-MNUCH7SI.cjs","sourcesContent":["import {\n ANGLE_UNITS,\n NUM,\n NUM_OR_NONE,\n clamp,\n hasKeys,\n isAnyNumber,\n isObject,\n normalizeHue,\n parseNum,\n round,\n sanitize,\n} from '../helpers.js';\nimport type { HsvColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\nexport const clampHsv = (hsv: HsvColor): HsvColor => ({\n h: normalizeHue(hsv.h),\n s: clamp(hsv.s, 0, 100),\n v: clamp(hsv.v, 0, 100),\n alpha: clamp(round(hsv.alpha, 3), 0, 1),\n});\n\n// Shared write buffer for rgbToHsvRaw — callers must destructure immediately, never store the reference.\nconst _hsvBuf: HsvColor = { h: 0, s: 0, v: 0, alpha: 0 };\n\nexport const rgbToHsvRaw = ({ r, g, b, alpha }: RgbColor): HsvColor => {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n let h = 0;\n\n if (max !== min) {\n switch (max) {\n case rn:\n h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6;\n break;\n case gn:\n h = ((bn - rn) / d + 2) / 6;\n break;\n case bn:\n h = ((rn - gn) / d + 4) / 6;\n break;\n }\n }\n\n const hDeg = h * 360;\n _hsvBuf.h = hDeg >= 0 && hDeg < 360 ? hDeg : ((hDeg % 360) + 360) % 360;\n _hsvBuf.s = clamp(s * 100, 0, 100);\n _hsvBuf.v = clamp(max * 100, 0, 100);\n _hsvBuf.alpha = clamp(round(alpha, 3), 0, 1);\n return _hsvBuf;\n};\n\nexport const rgbToHsv = (rgb: RgbColor): HsvColor => {\n const { h, s, v, alpha } = rgbToHsvRaw(rgb);\n const hr = round(h, 2);\n // round() can push a value just below 360 to 360.00 due to floating-point; clamp back to 0.\n return { h: hr >= 360 ? 0 : hr, s: round(s, 2), v: round(v, 2), alpha };\n};\n\nconst _RGB = [0, 0, 0] as [number, number, number];\n\nexport const hsvToRgb = ({ h, s, v, alpha }: HsvColor): RgbColor => {\n const sn = s / 100,\n vn = v / 100;\n const i = Math.floor((h / 60) % 6);\n const f = h / 60 - Math.floor(h / 60);\n const p = vn * (1 - sn);\n const q = vn * (1 - f * sn);\n const t = vn * (1 - (1 - f) * sn);\n\n switch (i) {\n case 0:\n _RGB[0] = vn;\n _RGB[1] = t;\n _RGB[2] = p;\n break;\n case 1:\n _RGB[0] = q;\n _RGB[1] = vn;\n _RGB[2] = p;\n break;\n case 2:\n _RGB[0] = p;\n _RGB[1] = vn;\n _RGB[2] = t;\n break;\n case 3:\n _RGB[0] = p;\n _RGB[1] = q;\n _RGB[2] = vn;\n break;\n case 4:\n _RGB[0] = t;\n _RGB[1] = p;\n _RGB[2] = vn;\n break;\n default: // case 5 — not an error handler; i is always 0–5 for h in [0, 360)\n _RGB[0] = vn;\n _RGB[1] = p;\n _RGB[2] = q;\n break;\n }\n\n return clampRgb({ r: _RGB[0] * 255, g: _RGB[1] * 255, b: _RGB[2] * 255, alpha });\n};\n\n// HSV/HSVA is a non-standard, library-defined syntax (not part of any CSS spec).\n// Format mirrors HSL for consistency. Legacy comma form kept for back-compat input;\n// modern space form supports optional `%` and the CSS Color 4 `none` keyword.\n// Named groups: `_c` = comma/legacy branch, `_s` = space/modern branch.\nconst HSV_RE = new RegExp(\n `^hsva?\\\\(\\\\s*(?<h>${NUM_OR_NONE})(?<hu>deg|rad|grad|turn)?\\\\s*(?:` +\n `,\\\\s*(?<s_c>${NUM})%\\\\s*,\\\\s*(?<v_c>${NUM})%` +\n `(?:\\\\s*,\\\\s*(?<al_c>${NUM})(?<alp_c>%?)?\\\\s*)?` +\n `|` +\n `\\\\s+(?<s_s>${NUM_OR_NONE})(?<sp_s>%?)\\\\s+(?<v_s>${NUM_OR_NONE})(?<vp_s>%?)` +\n `(?:\\\\s*/\\\\s*(?<al_s>${NUM_OR_NONE})(?<alp_s>%?)?\\\\s*)?` +\n `)\\\\)$`,\n 'i'\n);\n\nexport const parseHsvString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = HSV_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const isComma = g.s_c !== undefined;\n if (isComma && /^none$/i.test(g.h!)) return null;\n const unit = g.hu?.toLowerCase() ?? 'deg';\n const h = parseNum(g.h!) * (ANGLE_UNITS[unit] ?? 1);\n const s = parseNum((g.s_c ?? g.s_s)!);\n const v = parseNum((g.v_c ?? g.v_s)!);\n const rawA = g.al_c ?? g.al_s;\n if (isComma && rawA !== undefined && /^none$/i.test(rawA)) return null;\n const isPercent = !!(g.alp_c ?? g.alp_s);\n const alpha = rawA === undefined ? 1 : parseNum(rawA) / (isPercent ? 100 : 1);\n return hsvToRgb(clampHsv({ h, s, v, alpha }));\n};\n\nexport const parseHsvObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if (!hasKeys(input, ['h', 's', 'v'])) return null;\n const { h, s, v, alpha = 1 } = input as { h: unknown; s: unknown; v: unknown; alpha?: unknown };\n if (!isAnyNumber(h) || !isAnyNumber(s) || !isAnyNumber(v) || !isAnyNumber(alpha)) return null;\n return hsvToRgb(clampHsv({ h: sanitize(h), s: sanitize(s), v: sanitize(v), alpha: sanitize(alpha) }));\n};\n"]}
'use strict';var s=n=>{let r=Math.abs(n),e=r<=.04045?r/12.92:((r+.055)/1.055)**2.4;return n<0?-e:e},a=n=>{let r=Math.abs(n),e=r<=.0031308?12.92*r:1.055*r**(1/2.4)-.055;return n<0?-e:e},t=1.09929682680944,o=.018053968510807,b=n=>{let r=Math.abs(n),e=r<o*4.5?r/4.5:((r+t-1)/t)**(1/.45);return n<0?-e:e},c=n=>{let r=Math.abs(n),e=r<o?4.5*r:t*r**.45-(t-1);return n<0?-e:e};exports.a=s;exports.b=a;exports.c=b;exports.d=c;//# sourceMappingURL=chunk-X5FCFNQN.cjs.map
//# sourceMappingURL=chunk-X5FCFNQN.cjs.map
{"version":3,"sources":["../src/transfer.ts"],"names":["srgbToLinear","c","abs","linear","srgbFromLinear","encoded","REC2020_ALPHA","REC2020_BETA","rec2020ToLinear","rec2020FromLinear"],"mappings":"aAMO,IAAMA,CAAAA,CAAgBC,GAAsB,CACjD,IAAMC,EAAM,IAAA,CAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,EAAO,OAAUA,CAAAA,CAAM,KAAA,CAAA,CAAA,CAAUA,CAAAA,CAAM,IAAA,EAAS,KAAA,GAAU,GAAA,CACzE,OAAOD,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAQaC,EAAkB,CAAA,EAAsB,CACnD,IAAMF,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,CAChBG,CAAAA,CAAUH,CAAAA,EAAO,QAAA,CAAY,KAAA,CAAQA,CAAAA,CAAM,MAAQA,CAAAA,GAAQ,CAAA,CAAI,GAAA,CAAA,CAAO,IAAA,CAC5E,OAAO,CAAA,CAAI,EAAI,CAACG,CAAAA,CAAUA,CAC5B,CAAA,CAGaC,CAAAA,CAAgB,gBAAA,CAChBC,EAAe,gBAAA,CAGfC,CAAAA,CAAmBP,CAAAA,EAAsB,CACpD,IAAMC,CAAAA,CAAM,KAAK,GAAA,CAAID,CAAC,CAAA,CAChBE,CAAAA,CAASD,CAAAA,CAAMK,CAAAA,CAAe,IAAML,CAAAA,CAAM,GAAA,CAAA,CAAA,CAAQA,CAAAA,CAAMI,CAAAA,CAAgB,CAAA,EAAKA,CAAAA,IAAmB,EAAI,GAAA,CAAA,CAC1G,OAAOL,CAAAA,CAAI,CAAA,CAAI,CAACE,CAAAA,CAASA,CAC3B,CAAA,CAGaM,CAAAA,CAAqB,CAAA,EAAsB,CACtD,IAAMP,CAAAA,CAAM,KAAK,GAAA,CAAI,CAAC,CAAA,CAChBG,CAAAA,CAAUH,CAAAA,CAAMK,CAAAA,CAAe,IAAML,CAAAA,CAAMI,CAAAA,CAAgBJ,CAAAA,EAAO,GAAA,EAAQI,CAAAA,CAAgB,CAAA,CAAA,CAChG,OAAO,CAAA,CAAI,CAAA,CAAI,CAACD,CAAAA,CAAUA,CAC5B","file":"chunk-X5FCFNQN.cjs","sourcesContent":["/**\n * sRGB / Display-P3 transfer function (IEC 61966-2-1), extended to the full real line.\n * For in-gamut values [0, 1] this is the standard curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec for out-of-gamut channels.\n */\nexport const srgbToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs <= 0.04045 ? abs / 12.92 : ((abs + 0.055) / 1.055) ** 2.4;\n return c < 0 ? -linear : linear;\n};\n\n/**\n * Linear → gamma-encoded sRGB (extended piecewise, per CSS Color 4).\n * For in-gamut values [0, 1] this is the standard IEC 61966-2-1 curve.\n * Extended to negative values using the mirror of the power curve (not the linear piece),\n * matching the CSS Color 4 spec and display-p3 behaviour for out-of-gamut channels.\n */\nexport const srgbFromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs <= 0.0031308 ? 12.92 * abs : 1.055 * abs ** (1 / 2.4) - 0.055;\n return n < 0 ? -encoded : encoded;\n};\n\n/** BT.2020 transfer function constants. */\nexport const REC2020_ALPHA = 1.09929682680944;\nexport const REC2020_BETA = 0.018053968510807;\n\n/** BT.2020 gamma-encoded → linear. Extended to the full real line (sign-preserving). */\nexport const rec2020ToLinear = (c: number): number => {\n const abs = Math.abs(c);\n const linear = abs < REC2020_BETA * 4.5 ? abs / 4.5 : ((abs + REC2020_ALPHA - 1) / REC2020_ALPHA) ** (1 / 0.45);\n return c < 0 ? -linear : linear;\n};\n\n/** BT.2020 linear → gamma-encoded. Extended to the full real line (sign-preserving). */\nexport const rec2020FromLinear = (n: number): number => {\n const abs = Math.abs(n);\n const encoded = abs < REC2020_BETA ? 4.5 * abs : REC2020_ALPHA * abs ** 0.45 - (REC2020_ALPHA - 1);\n return n < 0 ? -encoded : encoded;\n};\n"]}
interface RgbColor {
r: number;
g: number;
b: number;
alpha: number;
}
type RgbColorInput = Omit<RgbColor, 'alpha'> & {
alpha?: number;
};
interface HslColor {
h: number;
s: number;
l: number;
alpha: number;
}
type HslColorInput = Omit<HslColor, 'alpha'> & {
alpha?: number;
};
interface HsvColor {
h: number;
s: number;
v: number;
alpha: number;
}
type HsvColorInput = Omit<HsvColor, 'alpha'> & {
alpha?: number;
};
interface HwbColor {
h: number;
/** Whiteness [0, 100] */
w: number;
/** Blackness [0, 100] */
b: number;
alpha: number;
}
type HwbColorInput = Omit<HwbColor, 'alpha'> & {
alpha?: number;
};
/** CIE LAB (D50) */
interface LabColor {
l: number;
/** Green–red axis */
a: number;
/** Blue–yellow axis */
b: number;
alpha: number;
readonly colorSpace: 'lab';
}
type LabColorInput = Omit<LabColor, 'alpha'> & {
alpha?: number;
};
/** CIE LCH (D50) */
interface LchColor {
l: number;
c: number;
h: number;
alpha: number;
readonly colorSpace: 'lch';
}
type LchColorInput = Omit<LchColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D50) */
interface XyzColor {
x: number;
y: number;
z: number;
alpha: number;
}
type XyzColorInput = Omit<XyzColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D65) */
interface XyzD65Color {
x: number;
y: number;
z: number;
alpha: number;
readonly colorSpace: 'xyz-d65';
}
type XyzD65ColorInput = Omit<XyzD65Color, 'alpha'> & {
alpha?: number;
};
interface CmykColor {
c: number;
m: number;
y: number;
k: number;
alpha: number;
}
type CmykColorInput = Omit<CmykColor, 'alpha'> & {
alpha?: number;
};
/** Oklab — perceptually uniform, D65 */
interface OklabColor {
l: number;
/** Green–red axis */
a: number;
/** Blue–yellow axis */
b: number;
alpha: number;
}
type OklabColorInput = Omit<OklabColor, 'alpha'> & {
alpha?: number;
};
/** Oklch — perceptually uniform, polar form of Oklab */
interface OklchColor {
l: number;
c: number;
h: number;
alpha: number;
}
type OklchColorInput = Omit<OklchColor, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Display-P3 */
interface P3Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'display-p3';
}
type P3ColorInput = Omit<P3Color, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Rec.2020 */
interface Rec2020Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'rec2020';
}
type Rec2020ColorInput = Omit<Rec2020Color, 'alpha'> & {
alpha?: number;
};
type AnyColor = string | RgbColorInput | HslColorInput | HsvColorInput | HwbColorInput | LabColorInput | LchColorInput | XyzColorInput | XyzD65ColorInput | CmykColorInput | OklabColorInput | OklchColorInput | P3ColorInput | Rec2020ColorInput;
type ColorParser<T = AnyColor> = (input: T) => RgbColor | null;
type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv' | 'hwb' | 'oklab' | 'oklch' | 'lab' | 'lch' | 'xyz' | 'xyz-d65' | 'cmyk' | 'p3' | 'rec2020' | 'name';
declare const _SENTINEL: unique symbol;
declare class Colordx {
private readonly _rgb;
private readonly _valid;
constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor);
private static _make;
/**
* Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.
* Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a
* color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored
* _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut
* channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.
*
* Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels
* directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP
* asymmetries on gamut-boundary colors.
*
* A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one
* channel exactly on 0 or 1 while the others sit where the input's hue landed, so an
* extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels
* (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all
* three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report
* phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;
* the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab
* see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut
* (P3 / Rec.2020 targets) and pass through untouched.
*/
static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx;
isValid(): boolean;
toRgb(): RgbColor;
/** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */
_rawRgb(): RgbColor;
/**
* Format as a `rgb()` / `rgba()` CSS string.
* Default is CSS Color 4 modern syntax (space-separated, slash-delimited alpha):
* `rgb(255 0 0)` / `rgb(255 0 0 / 0.5)`
* Pass `{ legacy: true }` for CSS Color 3 comma-separated syntax, which also
* switches the function name to `rgba()` when alpha < 1:
* `rgb(255, 0, 0)` / `rgba(255, 0, 0, 0.5)`
*/
toRgbString(options?: {
legacy?: boolean;
}): string;
toHex(): string;
/** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */
toHex8(): string;
/** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */
toNumber(): number;
toHsl(precision?: number): HslColor;
toHslString(precision?: number): string;
toOklab(precision?: number): OklabColor;
toOklabString(precision?: number): string;
toOklch(precision?: number): OklchColor;
toOklchString(precision?: number): string;
brightness(): number;
isDark(): boolean;
isLight(): boolean;
alpha(): number;
alpha(value: number): Colordx;
hue(): number;
hue(value: number): Colordx;
lightness(): number;
lightness(value: number): Colordx;
chroma(): number;
chroma(value: number): Colordx;
lighten(amount?: number, options?: {
relative?: boolean;
}): Colordx;
darken(amount?: number, options?: {
relative?: boolean;
}): Colordx;
saturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
desaturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
grayscale(): Colordx;
invert(): Colordx;
rotate(amount?: number): Colordx;
isEqual(color: AnyColor): boolean;
toString(): string;
/**
* Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].
* Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.
* Hue and lightness may shift noticeably for colors far outside sRGB.
* Returns `this` when already in gamut.
*/
clampSrgb(): Colordx;
/**
* Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm
* (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.
* Useful when hue stability matters — design tokens, palettes, color pickers.
* Returns `this` when already in gamut.
*/
mapSrgb(): Colordx;
/**
* Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.
* Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.
*/
static toGamutSrgb: (input: AnyColor) => Colordx;
}
type Plugin = (ColordxClass: typeof Colordx, parsers: ColorParser[], formatParsers: [ColorParser, ColorFormat][]) => void;
declare const colordx: (input: AnyColor | Colordx) => Colordx;
/** Emit an 8-digit `#rrggbbaa` hex for any color input. Convenience over `colordx(c).toHex8()`. */
declare const toHex8: (input: AnyColor | Colordx) => string;
declare const extend: (plugins: Plugin[]) => void;
declare const nearest: <T extends AnyColor>(color: AnyColor, candidates: T[]) => T;
declare const random: () => Colordx;
export { type AnyColor as A, type XyzD65Color as B, type ColorFormat as C, type HslColor as H, type LabColor as L, type OklabColor as O, type P3Color as P, type Rec2020Color as R, type XyzColor as X, type CmykColor as a, type CmykColorInput as b, type ColorParser as c, Colordx as d, type HslColorInput as e, type HsvColor as f, type HsvColorInput as g, type HwbColor as h, type HwbColorInput as i, type LabColorInput as j, type LchColor as k, type LchColorInput as l, type OklabColorInput as m, type OklchColor as n, type OklchColorInput as o, type P3ColorInput as p, type Plugin as q, type Rec2020ColorInput as r, type RgbColor as s, type RgbColorInput as t, type XyzColorInput as u, colordx as v, extend as w, nearest as x, random as y, toHex8 as z };
interface RgbColor {
r: number;
g: number;
b: number;
alpha: number;
}
type RgbColorInput = Omit<RgbColor, 'alpha'> & {
alpha?: number;
};
interface HslColor {
h: number;
s: number;
l: number;
alpha: number;
}
type HslColorInput = Omit<HslColor, 'alpha'> & {
alpha?: number;
};
interface HsvColor {
h: number;
s: number;
v: number;
alpha: number;
}
type HsvColorInput = Omit<HsvColor, 'alpha'> & {
alpha?: number;
};
interface HwbColor {
h: number;
/** Whiteness [0, 100] */
w: number;
/** Blackness [0, 100] */
b: number;
alpha: number;
}
type HwbColorInput = Omit<HwbColor, 'alpha'> & {
alpha?: number;
};
/** CIE LAB (D50) */
interface LabColor {
l: number;
/** Green–red axis */
a: number;
/** Blue–yellow axis */
b: number;
alpha: number;
readonly colorSpace: 'lab';
}
type LabColorInput = Omit<LabColor, 'alpha'> & {
alpha?: number;
};
/** CIE LCH (D50) */
interface LchColor {
l: number;
c: number;
h: number;
alpha: number;
readonly colorSpace: 'lch';
}
type LchColorInput = Omit<LchColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D50) */
interface XyzColor {
x: number;
y: number;
z: number;
alpha: number;
}
type XyzColorInput = Omit<XyzColor, 'alpha'> & {
alpha?: number;
};
/** CIE XYZ (D65) */
interface XyzD65Color {
x: number;
y: number;
z: number;
alpha: number;
readonly colorSpace: 'xyz-d65';
}
type XyzD65ColorInput = Omit<XyzD65Color, 'alpha'> & {
alpha?: number;
};
interface CmykColor {
c: number;
m: number;
y: number;
k: number;
alpha: number;
}
type CmykColorInput = Omit<CmykColor, 'alpha'> & {
alpha?: number;
};
/** Oklab — perceptually uniform, D65 */
interface OklabColor {
l: number;
/** Green–red axis */
a: number;
/** Blue–yellow axis */
b: number;
alpha: number;
}
type OklabColorInput = Omit<OklabColor, 'alpha'> & {
alpha?: number;
};
/** Oklch — perceptually uniform, polar form of Oklab */
interface OklchColor {
l: number;
c: number;
h: number;
alpha: number;
}
type OklchColorInput = Omit<OklchColor, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Display-P3 */
interface P3Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'display-p3';
}
type P3ColorInput = Omit<P3Color, 'alpha'> & {
alpha?: number;
};
/** CSS Color 4 Rec.2020 */
interface Rec2020Color {
r: number;
g: number;
b: number;
alpha: number;
readonly colorSpace: 'rec2020';
}
type Rec2020ColorInput = Omit<Rec2020Color, 'alpha'> & {
alpha?: number;
};
type AnyColor = string | RgbColorInput | HslColorInput | HsvColorInput | HwbColorInput | LabColorInput | LchColorInput | XyzColorInput | XyzD65ColorInput | CmykColorInput | OklabColorInput | OklchColorInput | P3ColorInput | Rec2020ColorInput;
type ColorParser<T = AnyColor> = (input: T) => RgbColor | null;
type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv' | 'hwb' | 'oklab' | 'oklch' | 'lab' | 'lch' | 'xyz' | 'xyz-d65' | 'cmyk' | 'p3' | 'rec2020' | 'name';
declare const _SENTINEL: unique symbol;
declare class Colordx {
private readonly _rgb;
private readonly _valid;
constructor(input: AnyColor | Colordx | typeof _SENTINEL, _direct?: RgbColor);
private static _make;
/**
* Construct a Colordx from linear-sRGB channels, gamma-encoding to the internal ×255 storage.
* Channels may exceed [0, 1] — wide-gamut inputs (toGamutP3 / toGamutRec2020 applied to a
* color outside sRGB) land here after the target-space → linear-sRGB matrix, and the stored
* _rgb holds unclamped gamma-encoded ×255 so toP3() / toRec2020() can recover the wide-gamut
* channels. sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.
*
* Replaces the prior _makeFromOklab: cssGamutMap hands back clipped linear-target channels
* directly, so callers skip the OKLab → linear round-trip that used to reintroduce 1-ULP
* asymmetries on gamut-boundary colors.
*
* A residual source of asymmetry remains — the clip itself. cssGamutMap's clip puts one
* channel exactly on 0 or 1 while the others sit where the input's hue landed, so an
* extreme-dark or extreme-light color ends up with genuinely asymmetric sub-byte channels
* (e.g. clipped linear (3e-6, 0, 8e-10) from oklch(0.001 0.001 0)). Math.round collapses all
* three to the same byte, but rgbToHslRaw / rgbToOklab read the raw floats and report
* phantom hue/saturation. Snap values within half a byte of 0 or 255 to the exact boundary;
* the band matches Math.round's own behavior so byte output is unchanged, while HSL / OKLab
* see a consistent pure white / black / primary. Values outside [0, 255] are wide-gamut
* (P3 / Rec.2020 targets) and pass through untouched.
*/
static _makeFromLinearSrgb(lr: number, lg: number, lb: number, alpha: number): Colordx;
isValid(): boolean;
toRgb(): RgbColor;
/** Returns the internal unrounded RGB. Intended for plugin use where deferred rounding matters. */
_rawRgb(): RgbColor;
/**
* Format as a `rgb()` / `rgba()` CSS string.
* Default is CSS Color 4 modern syntax (space-separated, slash-delimited alpha):
* `rgb(255 0 0)` / `rgb(255 0 0 / 0.5)`
* Pass `{ legacy: true }` for CSS Color 3 comma-separated syntax, which also
* switches the function name to `rgba()` when alpha < 1:
* `rgb(255, 0, 0)` / `rgba(255, 0, 0, 0.5)`
*/
toRgbString(options?: {
legacy?: boolean;
}): string;
toHex(): string;
/** Always returns an 8-digit `#rrggbbaa`, even when alpha is 1. */
toHex8(): string;
/** Returns a 24-bit RGB integer (0x000000–0xFFFFFF). Alpha is not included. */
toNumber(): number;
toHsl(precision?: number): HslColor;
toHslString(precision?: number): string;
toOklab(precision?: number): OklabColor;
toOklabString(precision?: number): string;
toOklch(precision?: number): OklchColor;
toOklchString(precision?: number): string;
brightness(): number;
isDark(): boolean;
isLight(): boolean;
alpha(): number;
alpha(value: number): Colordx;
hue(): number;
hue(value: number): Colordx;
lightness(): number;
lightness(value: number): Colordx;
chroma(): number;
chroma(value: number): Colordx;
lighten(amount?: number, options?: {
relative?: boolean;
}): Colordx;
darken(amount?: number, options?: {
relative?: boolean;
}): Colordx;
saturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
desaturate(amount?: number, options?: {
relative?: boolean;
}): Colordx;
grayscale(): Colordx;
invert(): Colordx;
rotate(amount?: number): Colordx;
isEqual(color: AnyColor): boolean;
toString(): string;
/**
* Clips this color into the sRGB gamut by clamping out-of-range channels to [0, 255].
* Matches the naive-clip strategy browsers use when rendering out-of-gamut `oklch()` / `oklab()`.
* Hue and lightness may shift noticeably for colors far outside sRGB.
* Returns `this` when already in gamut.
*/
clampSrgb(): Colordx;
/**
* Maps this color into the sRGB gamut using the CSS Color 4 gamut mapping algorithm
* (chroma-reduction binary search). Preserves lightness and hue; sacrifices chroma.
* Useful when hue stability matters — design tokens, palettes, color pickers.
* Returns `this` when already in gamut.
*/
mapSrgb(): Colordx;
/**
* Maps an out-of-sRGB-gamut color into sRGB using the CSS Color 4 gamut mapping algorithm.
* Colors already in gamut are returned as-is. sRGB inputs (hex, rgb, hsl, etc.) are passed through.
*/
static toGamutSrgb: (input: AnyColor) => Colordx;
}
type Plugin = (ColordxClass: typeof Colordx, parsers: ColorParser[], formatParsers: [ColorParser, ColorFormat][]) => void;
declare const colordx: (input: AnyColor | Colordx) => Colordx;
/** Emit an 8-digit `#rrggbbaa` hex for any color input. Convenience over `colordx(c).toHex8()`. */
declare const toHex8: (input: AnyColor | Colordx) => string;
declare const extend: (plugins: Plugin[]) => void;
declare const nearest: <T extends AnyColor>(color: AnyColor, candidates: T[]) => T;
declare const random: () => Colordx;
export { type AnyColor as A, type XyzD65Color as B, type ColorFormat as C, type HslColor as H, type LabColor as L, type OklabColor as O, type P3Color as P, type Rec2020Color as R, type XyzColor as X, type CmykColor as a, type CmykColorInput as b, type ColorParser as c, Colordx as d, type HslColorInput as e, type HsvColor as f, type HsvColorInput as g, type HwbColor as h, type HwbColorInput as i, type LabColorInput as j, type LchColor as k, type LchColorInput as l, type OklabColorInput as m, type OklchColor as n, type OklchColorInput as o, type P3ColorInput as p, type Plugin as q, type Rec2020ColorInput as r, type RgbColor as s, type RgbColorInput as t, type XyzColorInput as u, colordx as v, extend as w, nearest as x, random as y, toHex8 as z };