🎩 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.0
to
5.4.1
+2
dist/chunk-4LKLL3IS.mjs
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"]}
'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 J=.8224619687,Q=.1775380313,W=.0331941989,rr=.9668058011,nr=.0170826307,er=.0723974407,or=.9105199286,Mr=1.2249401762805598,Gr=-0.22494017628055996,Ir=-0.04205695470968816,wr=1.042056954709688,zr=-0.019637554590334432,Fr=-0.07863604555063189,vr=1.0982736001409663,cn=(e,r,n,o)=>{e[0]=J*r+Q*n,e[1]=W*r+rr*n,e[2]=nr*r+er*n+or*o;},br=(e,r,n)=>[J*e+Q*r,W*e+rr*r,nr*e+er*r+or*n];var F=(e,r,n)=>[Mr*e+Gr*r,Ir*e+wr*r,zr*e+Fr*r+vr*n],pn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=br(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 tr=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=F(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}},dn=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:tr({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)})},Er=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"),hn=e=>{if(typeof e!="string")return null;let r=Er.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 tr({r:n,g:o,b,alpha:chunkYISEJCI6_cjs.a(t,0,1)})},gn=(e,r,n)=>br(...chunkGXECYURS_cjs.f(e,r,n));var ar=.6274038959,ur=.3292830384,mr=.0433130657,sr=.0690972894,lr=.9195403951,cr=.0113623156,pr=.0163914389,ir=.0880133079,dr=.8955952532,Br=1.6604910021084345,Or=-0.5876411387885495,$r=-0.07284986331988488,Dr=-0.12455047452159074,jr=1.1328998971259603,Xr=-0.008349422604369477,Ur=-0.018150763354905303,Kr=-0.10057889800800739,qr=1.1187296613629127,xn=(e,r,n,o)=>{e[0]=ar*r+ur*n+mr*o,e[1]=sr*r+lr*n+cr*o,e[2]=pr*r+ir*n+dr*o;},hr=(e,r,n)=>[ar*e+ur*r+mr*n,sr*e+lr*r+cr*n,pr*e+ir*r+dr*n];var v=(e,r,n)=>[Br*e+Or*r+$r*n,Dr*e+jr*r+Xr*n,Ur*e+Kr*r+qr*n],Tn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=hr(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 gr=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=v(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}},Cn=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:gr({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)})},Hr=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"),Ln=e=>{if(typeof e!="string")return null;let r=Hr.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 gr({r:n,g:o,b,alpha:chunkYISEJCI6_cjs.a(t,0,1)})},Nn=(e,r,n)=>hr(...chunkGXECYURS_cjs.f(e,r,n));var Vr=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yr=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zr=/^lab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Jr=/^lch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Qr=/^color\(\s*display-p3\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wr=/^color\(\s*rec2020\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rn=/^color\(\s*xyz-d50\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nn=/^color\(\s*xyz-d65\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,G=(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)},Rr=(e,r,n)=>{let[o,b,t]=F(chunkX5FCFNQN_cjs.a(e),chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n));return chunkGXECYURS_cjs.a(o,b,t)},fr=(e,r,n)=>{let[o,b,t]=v(chunkX5FCFNQN_cjs.c(e),chunkX5FCFNQN_cjs.c(r),chunkX5FCFNQN_cjs.c(n));return chunkGXECYURS_cjs.a(o,b,t)},yr=(e,r,n)=>{let[o,b,t]=chunkGU6TZJ4O_cjs.e(e,r,n);return chunkGXECYURS_cjs.a(o,b,t)},Sr=(e,r,n)=>{let[o,b,t]=chunkGU6TZJ4O_cjs.b(e,r,n);return chunkGXECYURS_cjs.a(o,b,t)},I=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]=G(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]=G(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]=Rr(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]=fr(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]=Sr(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]=yr(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=Vr.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=Yr.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=Zr.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]=G(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=Jr.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,y,L]=G(n,o*Math.cos(u),o*Math.sin(u));return {l,a:y,b:L,alpha:s}}if(r=Qr.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]=Rr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=Wr.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]=fr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=rn.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]=yr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=nn.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]=Sr(n,o,b);return {l:u,a:s,b:l,alpha:t}}return null}return null},x=5e-4,Lr=(e,r,n)=>e>=-x&&e<=1+x&&r>=-x&&r<=1+x&&n>=-x&&n<=1+x,xr=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,zn=e=>{let r=I(e);if(r===null)return true;let[n,o,b]=chunkGXECYURS_cjs.f(r.l,r.a,r.b);return Lr(n,o,b)},Tr=.02,en=1e-4,Cr=(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)},Nr=(e,r,n,o,b,t)=>{if(e>=1)return {l:1,a:0,b:0,alpha:o};if(e<=0)return {l:0,a:0,b:0,alpha:o};let[u,s,l]=b(e,r,n);if(xr(u,s,l))return {l:e,a:r,b:n,alpha:o};let y=t(chunkYISEJCI6_cjs.a(u,0,1),chunkYISEJCI6_cjs.a(s,0,1),chunkYISEJCI6_cjs.a(l,0,1));if(Cr(y,[e,r,n])<=Tr)return {l:y[0],a:y[1],b:y[2],alpha:o};let L=Math.atan2(n,r),Pr=Math.sqrt(r*r+n*n),N=0,w=Pr,O=true,_=y;for(;w-N>en;){let T=(N+w)/2,$=T*Math.cos(L),D=T*Math.sin(L),[j,X,U]=b(e,$,D);if(O&&xr(j,X,U)){N=T;continue}let K=t(chunkYISEJCI6_cjs.a(j,0,1),chunkYISEJCI6_cjs.a(X,0,1),chunkYISEJCI6_cjs.a(U,0,1));_=K,Cr(K,[e,$,D])<=Tr?(N=T,O=false):w=T;}return {l:_[0],a:_[1],b:_[2],alpha:o}},Fn=e=>{let r=I(e);if(r===null)return null;let{l:n,a:o,b,alpha:t}=r;return Nr(n,o,b,t,chunkGXECYURS_cjs.f,chunkGXECYURS_cjs.a)},vn=(e,r)=>{let n=I(e);if(n===null)return true;let[o,b,t]=r(n.l,n.a,n.b);return Lr(o,b,t)},En=(e,r,n)=>{let o=I(e);if(o===null)return null;let{l:b,a:t,b:u,alpha:s}=o;return Nr(b,t,u,s,r,n)};var f=Math.PI/180,_r=(e,r,n)=>{let o=n*f;return chunkGXECYURS_cjs.f(e,r*Math.cos(o),r*Math.sin(o))},kr=(e,r,n,o)=>{let b=o*f;chunkGXECYURS_cjs.e(e,r,n*Math.cos(b),n*Math.sin(b));},Xn=(e,r,n)=>{let[o,b,t]=_r(e,r,n);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]},Un=(e,r,n,o)=>{kr(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]);},Kn=(e,r,n)=>{let[o,b,t]=_r(e,r,n);return [[o,b,t],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]]},qn=(e,r,n,o,b)=>{kr(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]);},Hn=(e,r,n)=>[chunkX5FCFNQN_cjs.a(e),chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n)],Vn=(e,r,n,o)=>{e[0]=chunkX5FCFNQN_cjs.a(r),e[1]=chunkX5FCFNQN_cjs.a(n),e[2]=chunkX5FCFNQN_cjs.a(o);},E=(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]);},Yn=(e,r,n)=>{let o=n*f;return E(e,r*Math.cos(o),r*Math.sin(o))},Zn=(e,r,n,o)=>{let b=o*f;B(e,r,n*Math.cos(b),n*Math.sin(b));},on=(e,r,n)=>{let[o,b,t]=E(e,r,n);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]},bn=(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]);},Jn=(e,r,n)=>{let o=n*f;return on(e,r*Math.cos(o),r*Math.sin(o))},Qn=(e,r,n,o)=>{let b=o*f;bn(e,r,n*Math.cos(b),n*Math.sin(b));},tn=(e,r,n)=>{let[o,b,t]=E(e,r,n);return [[o,b,t],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]]},an=(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]);},Wn=(e,r,n)=>{let o=n*f;return tn(e,r*Math.cos(o),r*Math.sin(o))},re=(e,r,n,o,b)=>{let t=b*f;an(e,r,n,o*Math.cos(t),o*Math.sin(t));};exports.A=E;exports.B=B;exports.C=Yn;exports.D=Zn;exports.E=on;exports.F=bn;exports.G=Jn;exports.H=Qn;exports.I=tn;exports.J=an;exports.K=Wn;exports.L=re;exports.a=cn;exports.b=br;exports.c=F;exports.d=pn;exports.e=dn;exports.f=hn;exports.g=gn;exports.h=xn;exports.i=hr;exports.j=v;exports.k=Tn;exports.l=Cn;exports.m=Ln;exports.n=Nn;exports.o=zn;exports.p=Fn;exports.q=vn;exports.r=En;exports.s=_r;exports.t=kr;exports.u=Xn;exports.v=Un;exports.w=Kn;exports.x=qn;exports.y=Hn;exports.z=Vn;//# sourceMappingURL=chunk-B3CQY27M.cjs.map
//# sourceMappingURL=chunk-B3CQY27M.cjs.map

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

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 J=.8224619687,Q=.1775380313,W=.0331941989,rr=.9668058011,nr=.0170826307,er=.0723974407,or=.9105199286,Mr=1.2249401762805598,Gr=-0.22494017628055996,Ir=-0.04205695470968816,wr=1.042056954709688,zr=-0.019637554590334432,Fr=-0.07863604555063189,vr=1.0982736001409663,cn=(e,r,n,o)=>{e[0]=J*r+Q*n,e[1]=W*r+rr*n,e[2]=nr*r+er*n+or*o;},br=(e,r,n)=>[J*e+Q*r,W*e+rr*r,nr*e+er*r+or*n];var F=(e,r,n)=>[Mr*e+Gr*r,Ir*e+wr*r,zr*e+Fr*r+vr*n],pn=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=br(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 tr=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=F(a(e),a(r),a(n));return {r:b(b$1)*255,g:b(t)*255,b:b(u)*255,alpha:o}},dn=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:tr({r:g(r),g:g(n),b:g(o),alpha:a$1(g(b),0,1)})},Er=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"),hn=e=>{if(typeof e!="string")return null;let r=Er.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 tr({r:n,g:o,b,alpha:a$1(t,0,1)})},gn=(e,r,n)=>br(...f$2(e,r,n));var ar=.6274038959,ur=.3292830384,mr=.0433130657,sr=.0690972894,lr=.9195403951,cr=.0113623156,pr=.0163914389,ir=.0880133079,dr=.8955952532,Br=1.6604910021084345,Or=-0.5876411387885495,$r=-0.07284986331988488,Dr=-0.12455047452159074,jr=1.1328998971259603,Xr=-0.008349422604369477,Ur=-0.018150763354905303,Kr=-0.10057889800800739,qr=1.1187296613629127,xn=(e,r,n,o)=>{e[0]=ar*r+ur*n+mr*o,e[1]=sr*r+lr*n+cr*o,e[2]=pr*r+ir*n+dr*o;},hr=(e,r,n)=>[ar*e+ur*r+mr*n,sr*e+lr*r+cr*n,pr*e+ir*r+dr*n];var v=(e,r,n)=>[Br*e+Or*r+$r*n,Dr*e+jr*r+Xr*n,Ur*e+Kr*r+qr*n],Tn=({r:e,g:r,b:n,alpha:o})=>{let[b,t,u]=hr(a(e/255),a(r/255),a(n/255));return {r:d(b),g:d(t),b:d(u),alpha:o,colorSpace:"rec2020"}};var gr=({r:e,g:r,b:n,alpha:o})=>{let[b$1,t,u]=v(c(e),c(r),c(n));return {r:b(b$1)*255,g:b(t)*255,b:b(u)*255,alpha:o}},Cn=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:gr({r:g(r),g:g(n),b:g(o),alpha:a$1(g(b),0,1)})},Hr=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"),Ln=e=>{if(typeof e!="string")return null;let r=Hr.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 gr({r:n,g:o,b,alpha:a$1(t,0,1)})},Nn=(e,r,n)=>hr(...f$2(e,r,n));var Vr=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yr=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Zr=/^lab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Jr=/^lch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Qr=/^color\(\s*display-p3\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Wr=/^color\(\s*rec2020\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rn=/^color\(\s*xyz-d50\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,nn=/^color\(\s*xyz-d65\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s+([+-]?\d*\.?\d+)%?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,G=(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)},Rr=(e,r,n)=>{let[o,b,t]=F(a(e),a(r),a(n));return a$2(o,b,t)},fr=(e,r,n)=>{let[o,b,t]=v(c(e),c(r),c(n));return a$2(o,b,t)},yr=(e,r,n)=>{let[o,b,t]=e$1(e,r,n);return a$2(o,b,t)},Sr=(e,r,n)=>{let[o,b,t]=b$1(e,r,n);return a$2(o,b,t)},I=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]=G(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]=G(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]=Rr(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]=fr(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]=Sr(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]=yr(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=Vr.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=Yr.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=Zr.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]=G(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=Jr.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,y,L]=G(n,o*Math.cos(u),o*Math.sin(u));return {l,a:y,b:L,alpha:s}}if(r=Qr.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]=Rr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=Wr.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]=fr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=rn.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]=yr(n,o,b);return {l:u,a:s,b:l,alpha:t}}if(r=nn.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]=Sr(n,o,b);return {l:u,a:s,b:l,alpha:t}}return null}return null},x=5e-4,Lr=(e,r,n)=>e>=-x&&e<=1+x&&r>=-x&&r<=1+x&&n>=-x&&n<=1+x,xr=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,zn=e=>{let r=I(e);if(r===null)return true;let[n,o,b]=f$2(r.l,r.a,r.b);return Lr(n,o,b)},Tr=.02,en=1e-4,Cr=(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)},Nr=(e,r,n,o,b,t)=>{if(e>=1)return {l:1,a:0,b:0,alpha:o};if(e<=0)return {l:0,a:0,b:0,alpha:o};let[u,s,l]=b(e,r,n);if(xr(u,s,l))return {l:e,a:r,b:n,alpha:o};let y=t(a$1(u,0,1),a$1(s,0,1),a$1(l,0,1));if(Cr(y,[e,r,n])<=Tr)return {l:y[0],a:y[1],b:y[2],alpha:o};let L=Math.atan2(n,r),Pr=Math.sqrt(r*r+n*n),N=0,w=Pr,O=true,_=y;for(;w-N>en;){let T=(N+w)/2,$=T*Math.cos(L),D=T*Math.sin(L),[j,X,U]=b(e,$,D);if(O&&xr(j,X,U)){N=T;continue}let K=t(a$1(j,0,1),a$1(X,0,1),a$1(U,0,1));_=K,Cr(K,[e,$,D])<=Tr?(N=T,O=false):w=T;}return {l:_[0],a:_[1],b:_[2],alpha:o}},Fn=e=>{let r=I(e);if(r===null)return null;let{l:n,a:o,b,alpha:t}=r;return Nr(n,o,b,t,f$2,a$2)},vn=(e,r)=>{let n=I(e);if(n===null)return true;let[o,b,t]=r(n.l,n.a,n.b);return Lr(o,b,t)},En=(e,r,n)=>{let o=I(e);if(o===null)return null;let{l:b,a:t,b:u,alpha:s}=o;return Nr(b,t,u,s,r,n)};var f=Math.PI/180,_r=(e,r,n)=>{let o=n*f;return f$2(e,r*Math.cos(o),r*Math.sin(o))},kr=(e$1,r,n,o)=>{let b=o*f;e(e$1,r,n*Math.cos(b),n*Math.sin(b));},Xn=(e,r,n)=>{let[o,b$1,t]=_r(e,r,n);return [b(o),b(b$1),b(t)]},Un=(e,r,n,o)=>{kr(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},Kn=(e,r,n)=>{let[o,b$1,t]=_r(e,r,n);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},qn=(e,r,n,o,b$1)=>{kr(e,n,o,b$1),r[0]=b(e[0]),r[1]=b(e[1]),r[2]=b(e[2]);},Hn=(e,r,n)=>[a(e),a(r),a(n)],Vn=(e,r,n,o)=>{e[0]=a(r),e[1]=a(n),e[2]=a(o);},E=(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]);},Yn=(e,r,n)=>{let o=n*f;return E(e,r*Math.cos(o),r*Math.sin(o))},Zn=(e,r,n,o)=>{let b=o*f;B(e,r,n*Math.cos(b),n*Math.sin(b));},on=(e,r,n)=>{let[o,b$1,t]=E(e,r,n);return [b(o),b(b$1),b(t)]},bn=(e,r,n,o)=>{B(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},Jn=(e,r,n)=>{let o=n*f;return on(e,r*Math.cos(o),r*Math.sin(o))},Qn=(e,r,n,o)=>{let b=o*f;bn(e,r,n*Math.cos(b),n*Math.sin(b));},tn=(e,r,n)=>{let[o,b$1,t]=E(e,r,n);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},an=(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]);},Wn=(e,r,n)=>{let o=n*f;return tn(e,r*Math.cos(o),r*Math.sin(o))},re=(e,r,n,o,b)=>{let t=b*f;an(e,r,n,o*Math.cos(t),o*Math.sin(t));};export{E as A,B,Yn as C,Zn as D,on as E,bn as F,Jn as G,Qn as H,tn as I,an as J,Wn as K,re as L,cn as a,br as b,F as c,pn as d,dn as e,hn as f,gn as g,xn as h,hr as i,v as j,Tn as k,Cn as l,Ln as m,Nn as n,zn as o,Fn as p,vn as q,En as r,_r as s,kr as t,Xn as u,Un as v,Kn as w,qn as x,Hn as y,Vn as z};//# sourceMappingURL=chunk-DIWXRMTC.mjs.map
//# sourceMappingURL=chunk-DIWXRMTC.mjs.map

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

'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"]}
+1
-1

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

'use strict';var chunkUAXI5JGL_cjs=require('./chunk-UAXI5JGL.cjs'),chunkUU6FAFFW_cjs=require('./chunk-UU6FAFFW.cjs'),chunkGXECYURS_cjs=require('./chunk-GXECYURS.cjs');require('./chunk-FZP4XDSG.cjs');var chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var V=l=>({h:chunkYISEJCI6_cjs.c(l.h),s:chunkYISEJCI6_cjs.a(l.s,0,100),l:chunkYISEJCI6_cjs.a(l.l,0,100),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(l.alpha,3),0,1)}),O={h:0,s:0,l:0,alpha:0},R=({r:l,g:r,b:o,alpha:t})=>{let n=l/255,e=r/255,s=o/255,a=Math.max(n,e,s),c=Math.min(n,e,s),C=(a+c)/2,d=0,x=0;if(a!==c){let _=a-c;switch(x=C>.5?_/(2-a-c):_/(a+c),a){case n:d=((e-s)/_+(e<s?6:0))/6;break;case e:d=((s-n)/_+2)/6;break;case s:d=((n-e)/_+4)/6;break}}let y=d*360;return O.h=y>=0&&y<360?y:(y%360+360)%360,O.s=chunkYISEJCI6_cjs.a(x*100,0,100),O.l=chunkYISEJCI6_cjs.a(C*100,0,100),O.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t,3),0,1),O};var v=(l,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?l+(r-l)*6*o:o<1/2?r:o<2/3?l+(r-l)*(2/3-o)*6:l),k=({h:l,s:r,l:o,alpha:t})=>{let n=r/100,e=o/100,s=e<.5?e*(1+n):e+n-e*n,a=2*e-s,c=(l%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}},J=l=>{if(!chunkYISEJCI6_cjs.h(l)||!chunkYISEJCI6_cjs.i(l,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:n=1}=l;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(n)?null:k(V({h:chunkYISEJCI6_cjs.g(r),s:chunkYISEJCI6_cjs.g(o),l:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.g(n)}))},Ir=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"),Q=l=>{if(typeof l!="string")return null;let r=Ir.exec(l.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",n=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[t]??1),e=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 C=a===void 0?1:chunkYISEJCI6_cjs.l(a)/(c?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var W=({l,c:r,h:o,alpha:t})=>({l,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),Y=l=>{let{l:r,a:o,b:t,alpha:n}=chunkGXECYURS_cjs.b(l),e=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:e,h:e<4e-6?0:chunkYISEJCI6_cjs.c(s),alpha:n}},M=l=>chunkGXECYURS_cjs.d(W(l)),Z=l=>chunkGXECYURS_cjs.c(W(l)),rr=l=>{if(!chunkYISEJCI6_cjs.h(l)||l.colorSpace==="lch"||!chunkYISEJCI6_cjs.i(l,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:n=1}=l;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(n)||chunkYISEJCI6_cjs.g(r)>1?null:Z({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(n),0,1)})},Pr=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"),or=l=>{if(typeof l!="string")return null;let r=Pr.exec(l.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)),n=r.hu?.toLowerCase()??"deg",e=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[n]??1),s=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return Z({l:o,c:t,h:chunkYISEJCI6_cjs.c(e),alpha:chunkYISEJCI6_cjs.a(s,0,1)})};var tr=[[chunkUAXI5JGL_cjs.b,"hex"],[chunk3V4MONNR_cjs.c,"rgb"],[Q,"hsl"],[or,"oklch"],[chunkGXECYURS_cjs.h,"oklab"]],lr=[[chunk3V4MONNR_cjs.b,"rgb"],[J,"hsl"],[chunkGXECYURS_cjs.g,"oklab"],[rr,"oklch"]],nr=tr.map(([l])=>l),er=lr.map(([l])=>l),sr=[...nr,...er],P=[...sr],N=[],ar=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?nr:er;for(let o of r){let t=o(l);if(t)return t}for(let o=sr.length;o<P.length;o++){let t=P[o](l);if(t)return t}return null},Ar=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?tr:lr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of N)if(o(l))return t};var br=Symbol(),u=class l{_rgb;_valid;constructor(r,o){if(r===br)this._valid=true,this._rgb=o;else if(r instanceof l){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=ar(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 l(br,r)}static _makeFromOklab({l:r,a:o,b:t,alpha:n}){let[e,s,a]=chunkGXECYURS_cjs.f(r,o,t);return l._make({r:chunkX5FCFNQN_cjs.b(e)*255,g:chunkX5FCFNQN_cjs.b(s)*255,b:chunkX5FCFNQN_cjs.b(a)*255,alpha:n})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:n}=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:n}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:n,alpha:e}=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(n),0,255);return r?.legacy?e<1?`rgba(${s}, ${a}, ${c}, ${e})`:`rgb(${s}, ${a}, ${c})`:e<1?`rgb(${s} ${a} ${c} / ${e})`:`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:n,alpha:e}=R(this._rgb),s=chunkYISEJCI6_cjs.b(o,r);return {h:s>=360?0:s,s:chunkYISEJCI6_cjs.b(t,r),l:chunkYISEJCI6_cjs.b(n,r),alpha:e}}toHslString(r=2){let{h:o,s:t,l:n,alpha:e}=this.toHsl(r);return e<1?`hsl(${o} ${t}% ${n}% / ${e})`:`hsl(${o} ${t}% ${n}%)`}toOklab(r=4){let{l:o,a:t,b:n,alpha:e}=chunkGXECYURS_cjs.b(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),a:chunkYISEJCI6_cjs.b(t,r),b:chunkYISEJCI6_cjs.b(n,r),alpha:e}}toOklabString(r=4){let{l:o,a:t,b:n,alpha:e}=this.toOklab(r);return e<1?`oklab(${o} ${t} ${n} / ${e})`:`oklab(${o} ${t} ${n})`}toOklch(r=4){let{l:o,c:t,h:n,alpha:e}=Y(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),c:chunkYISEJCI6_cjs.b(t,r),h:chunkYISEJCI6_cjs.b(n,r),alpha:e}}toOklchString(r=4){let{l:o,c:t,h:n,alpha:e}=this.toOklch(r),s=t===0?"none":n;return e<1?`oklch(${o} ${t} ${s} / ${e})`:`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:l._make({...this._rgb,alpha:chunkYISEJCI6_cjs.b(chunkYISEJCI6_cjs.a(r,0,1),3)})}hue(r){let{h:o,s:t,l:n,alpha:e}=R(this._rgb);if(r===void 0){let s=chunkYISEJCI6_cjs.b(o,2);return s>=360?0:s}return l._make(k({h:r,s:t,l:n,alpha:e}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:l._make(M({...o,l:chunkYISEJCI6_cjs.a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(M({...o,c:chunkYISEJCI6_cjs.a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:n,l:e,alpha:s}=R(this._rgb),a=o?.relative?e*(1+r):e+r*100;return l._make(k({h:t,s:n,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:n,l:e,alpha:s}=R(this._rgb),a=o?.relative?n*(1+r):n+r*100;return l._make(k({h:t,s:chunkYISEJCI6_cjs.a(a,0,100),l:e,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:n}=this._rgb;return l._make({r:255-r,g:255-o,b:255-t,alpha:n})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new l(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:n}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:l._make({r:chunkYISEJCI6_cjs.a(r,0,255),g:chunkYISEJCI6_cjs.a(o,0,255),b:chunkYISEJCI6_cjs.a(t,0,255),alpha:n})}mapSrgb(){let{r,g:o,b:t,alpha:n}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[e,s,a]=chunkGXECYURS_cjs.a(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(o/255),chunkX5FCFNQN_cjs.a(t/255)),c=e>1-1e-7?1:e<1e-7?0:e,C=chunkUU6FAFFW_cjs.b({l:c,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},vr=l=>new u(l),Mr=l=>new u(l).toHex8(),Nr=l=>{l.forEach(r=>r(u,P,N));},Fr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new u(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:c,a:C,b:d}=new u(a).toOklab(),x=(c-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},jr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=l=>{let r=chunkUU6FAFFW_cjs.b(l);return r!==null?u._makeFromOklab(r):new u(l)};Object.defineProperty(exports,"toHexByte",{enumerable:true,get:function(){return chunkUAXI5JGL_cjs.a}});Object.defineProperty(exports,"inGamutSrgb",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.a}});Object.defineProperty(exports,"labToLinearAndSrgb",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.u}});Object.defineProperty(exports,"labToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.v}});Object.defineProperty(exports,"labToLinearSrgb",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.m}});Object.defineProperty(exports,"labToLinearSrgbInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.n}});Object.defineProperty(exports,"labToRgbChannels",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.q}});Object.defineProperty(exports,"labToRgbChannelsInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.r}});Object.defineProperty(exports,"lchToLinearAndSrgb",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.w}});Object.defineProperty(exports,"lchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.x}});Object.defineProperty(exports,"lchToLinearSrgb",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.o}});Object.defineProperty(exports,"lchToLinearSrgbInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.p}});Object.defineProperty(exports,"lchToRgbChannels",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.s}});Object.defineProperty(exports,"lchToRgbChannelsInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.t}});Object.defineProperty(exports,"oklchToLinear",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.e}});Object.defineProperty(exports,"oklchToLinearAndSrgb",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.i}});Object.defineProperty(exports,"oklchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.j}});Object.defineProperty(exports,"oklchToLinearInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.f}});Object.defineProperty(exports,"oklchToRgbChannels",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.g}});Object.defineProperty(exports,"oklchToRgbChannelsInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.h}});Object.defineProperty(exports,"rgbToLinear",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.k}});Object.defineProperty(exports,"rgbToLinearInto",{enumerable:true,get:function(){return chunkUU6FAFFW_cjs.l}});exports.Colordx=u;exports.colordx=vr;exports.extend=Nr;exports.getFormat=Ar;exports.nearest=Fr;exports.random=jr;exports.toHex8=Mr;//# sourceMappingURL=index.cjs.map
'use strict';var chunkUAXI5JGL_cjs=require('./chunk-UAXI5JGL.cjs'),chunkB3CQY27M_cjs=require('./chunk-B3CQY27M.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 V=l=>({h:chunkYISEJCI6_cjs.c(l.h),s:chunkYISEJCI6_cjs.a(l.s,0,100),l:chunkYISEJCI6_cjs.a(l.l,0,100),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(l.alpha,3),0,1)}),O={h:0,s:0,l:0,alpha:0},R=({r:l,g:r,b:o,alpha:t})=>{let n=l/255,e=r/255,s=o/255,a=Math.max(n,e,s),c=Math.min(n,e,s),C=(a+c)/2,d=0,x=0;if(a!==c){let _=a-c;switch(x=C>.5?_/(2-a-c):_/(a+c),a){case n:d=((e-s)/_+(e<s?6:0))/6;break;case e:d=((s-n)/_+2)/6;break;case s:d=((n-e)/_+4)/6;break}}let y=d*360;return O.h=y>=0&&y<360?y:(y%360+360)%360,O.s=chunkYISEJCI6_cjs.a(x*100,0,100),O.l=chunkYISEJCI6_cjs.a(C*100,0,100),O.alpha=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t,3),0,1),O};var v=(l,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?l+(r-l)*6*o:o<1/2?r:o<2/3?l+(r-l)*(2/3-o)*6:l),k=({h:l,s:r,l:o,alpha:t})=>{let n=r/100,e=o/100,s=e<.5?e*(1+n):e+n-e*n,a=2*e-s,c=(l%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}},J=l=>{if(!chunkYISEJCI6_cjs.h(l)||!chunkYISEJCI6_cjs.i(l,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:n=1}=l;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(n)?null:k(V({h:chunkYISEJCI6_cjs.g(r),s:chunkYISEJCI6_cjs.g(o),l:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.g(n)}))},Ir=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"),Q=l=>{if(typeof l!="string")return null;let r=Ir.exec(l.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",n=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[t]??1),e=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 C=a===void 0?1:chunkYISEJCI6_cjs.l(a)/(c?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var W=({l,c:r,h:o,alpha:t})=>({l,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),Y=l=>{let{l:r,a:o,b:t,alpha:n}=chunkGXECYURS_cjs.b(l),e=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:e,h:e<4e-6?0:chunkYISEJCI6_cjs.c(s),alpha:n}},M=l=>chunkGXECYURS_cjs.d(W(l)),Z=l=>chunkGXECYURS_cjs.c(W(l)),rr=l=>{if(!chunkYISEJCI6_cjs.h(l)||l.colorSpace==="lch"||!chunkYISEJCI6_cjs.i(l,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:n=1}=l;return !chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(n)||chunkYISEJCI6_cjs.g(r)>1?null:Z({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(n),0,1)})},Pr=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"),or=l=>{if(typeof l!="string")return null;let r=Pr.exec(l.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)),n=r.hu?.toLowerCase()??"deg",e=chunkYISEJCI6_cjs.l(r.h)*(chunkYISEJCI6_cjs.d[n]??1),s=r.al===void 0?1:chunkYISEJCI6_cjs.l(r.al)/(r.alp?100:1);return Z({l:o,c:t,h:chunkYISEJCI6_cjs.c(e),alpha:chunkYISEJCI6_cjs.a(s,0,1)})};var tr=[[chunkUAXI5JGL_cjs.b,"hex"],[chunk3V4MONNR_cjs.c,"rgb"],[Q,"hsl"],[or,"oklch"],[chunkGXECYURS_cjs.h,"oklab"]],lr=[[chunk3V4MONNR_cjs.b,"rgb"],[J,"hsl"],[chunkGXECYURS_cjs.g,"oklab"],[rr,"oklch"]],nr=tr.map(([l])=>l),er=lr.map(([l])=>l),sr=[...nr,...er],P=[...sr],N=[],ar=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?nr:er;for(let o of r){let t=o(l);if(t)return t}for(let o=sr.length;o<P.length;o++){let t=P[o](l);if(t)return t}return null},Ar=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?tr:lr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of N)if(o(l))return t};var br=Symbol(),u=class l{_rgb;_valid;constructor(r,o){if(r===br)this._valid=true,this._rgb=o;else if(r instanceof l){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=ar(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 l(br,r)}static _makeFromOklab({l:r,a:o,b:t,alpha:n}){let[e,s,a]=chunkGXECYURS_cjs.f(r,o,t);return l._make({r:chunkX5FCFNQN_cjs.b(e)*255,g:chunkX5FCFNQN_cjs.b(s)*255,b:chunkX5FCFNQN_cjs.b(a)*255,alpha:n})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:n}=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:n}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:n,alpha:e}=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(n),0,255);return r?.legacy?e<1?`rgba(${s}, ${a}, ${c}, ${e})`:`rgb(${s}, ${a}, ${c})`:e<1?`rgb(${s} ${a} ${c} / ${e})`:`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:n,alpha:e}=R(this._rgb),s=chunkYISEJCI6_cjs.b(o,r);return {h:s>=360?0:s,s:chunkYISEJCI6_cjs.b(t,r),l:chunkYISEJCI6_cjs.b(n,r),alpha:e}}toHslString(r=2){let{h:o,s:t,l:n,alpha:e}=this.toHsl(r);return e<1?`hsl(${o} ${t}% ${n}% / ${e})`:`hsl(${o} ${t}% ${n}%)`}toOklab(r=4){let{l:o,a:t,b:n,alpha:e}=chunkGXECYURS_cjs.b(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),a:chunkYISEJCI6_cjs.b(t,r),b:chunkYISEJCI6_cjs.b(n,r),alpha:e}}toOklabString(r=4){let{l:o,a:t,b:n,alpha:e}=this.toOklab(r);return e<1?`oklab(${o} ${t} ${n} / ${e})`:`oklab(${o} ${t} ${n})`}toOklch(r=4){let{l:o,c:t,h:n,alpha:e}=Y(this._rgb);return {l:chunkYISEJCI6_cjs.b(o,r),c:chunkYISEJCI6_cjs.b(t,r),h:chunkYISEJCI6_cjs.b(n,r),alpha:e}}toOklchString(r=4){let{l:o,c:t,h:n,alpha:e}=this.toOklch(r),s=t===0?"none":n;return e<1?`oklch(${o} ${t} ${s} / ${e})`:`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:l._make({...this._rgb,alpha:chunkYISEJCI6_cjs.b(chunkYISEJCI6_cjs.a(r,0,1),3)})}hue(r){let{h:o,s:t,l:n,alpha:e}=R(this._rgb);if(r===void 0){let s=chunkYISEJCI6_cjs.b(o,2);return s>=360?0:s}return l._make(k({h:r,s:t,l:n,alpha:e}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:l._make(M({...o,l:chunkYISEJCI6_cjs.a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(M({...o,c:chunkYISEJCI6_cjs.a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:n,l:e,alpha:s}=R(this._rgb),a=o?.relative?e*(1+r):e+r*100;return l._make(k({h:t,s:n,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:n,l:e,alpha:s}=R(this._rgb),a=o?.relative?n*(1+r):n+r*100;return l._make(k({h:t,s:chunkYISEJCI6_cjs.a(a,0,100),l:e,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:n}=this._rgb;return l._make({r:255-r,g:255-o,b:255-t,alpha:n})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new l(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:n}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:l._make({r:chunkYISEJCI6_cjs.a(r,0,255),g:chunkYISEJCI6_cjs.a(o,0,255),b:chunkYISEJCI6_cjs.a(t,0,255),alpha:n})}mapSrgb(){let{r,g:o,b:t,alpha:n}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[e,s,a]=chunkGXECYURS_cjs.a(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(o/255),chunkX5FCFNQN_cjs.a(t/255)),c=e>1-1e-7?1:e<1e-7?0:e,C=chunkB3CQY27M_cjs.p({l:c,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},vr=l=>new u(l),Mr=l=>new u(l).toHex8(),Nr=l=>{l.forEach(r=>r(u,P,N));},Fr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new u(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:c,a:C,b:d}=new u(a).toOklab(),x=(c-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},jr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=l=>{let r=chunkB3CQY27M_cjs.p(l);return r!==null?u._makeFromOklab(r):new u(l)};Object.defineProperty(exports,"toHexByte",{enumerable:true,get:function(){return chunkUAXI5JGL_cjs.a}});Object.defineProperty(exports,"inGamutSrgb",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.o}});Object.defineProperty(exports,"labToLinearAndSrgb",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.I}});Object.defineProperty(exports,"labToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.J}});Object.defineProperty(exports,"labToLinearSrgb",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.A}});Object.defineProperty(exports,"labToLinearSrgbInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.B}});Object.defineProperty(exports,"labToRgbChannels",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.E}});Object.defineProperty(exports,"labToRgbChannelsInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.F}});Object.defineProperty(exports,"lchToLinearAndSrgb",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.K}});Object.defineProperty(exports,"lchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.L}});Object.defineProperty(exports,"lchToLinearSrgb",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.C}});Object.defineProperty(exports,"lchToLinearSrgbInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.D}});Object.defineProperty(exports,"lchToRgbChannels",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.G}});Object.defineProperty(exports,"lchToRgbChannelsInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.H}});Object.defineProperty(exports,"oklchToLinear",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.s}});Object.defineProperty(exports,"oklchToLinearAndSrgb",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.w}});Object.defineProperty(exports,"oklchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.x}});Object.defineProperty(exports,"oklchToLinearInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.t}});Object.defineProperty(exports,"oklchToRgbChannels",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.u}});Object.defineProperty(exports,"oklchToRgbChannelsInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.v}});Object.defineProperty(exports,"rgbToLinear",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.y}});Object.defineProperty(exports,"rgbToLinearInto",{enumerable:true,get:function(){return chunkB3CQY27M_cjs.z}});exports.Colordx=u;exports.colordx=vr;exports.extend=Nr;exports.getFormat=Ar;exports.nearest=Fr;exports.random=jr;exports.toHex8=Mr;//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map

@@ -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 {b as b$5}from'./chunk-FEPIYR27.mjs';export{a as inGamutSrgb,u as labToLinearAndSrgb,v as labToLinearAndSrgbInto,m as labToLinearSrgb,n as labToLinearSrgbInto,q as labToRgbChannels,r as labToRgbChannelsInto,w as lchToLinearAndSrgb,x as lchToLinearAndSrgbInto,o as lchToLinearSrgb,p as lchToLinearSrgbInto,s as lchToRgbChannels,t as lchToRgbChannelsInto,e as oklchToLinear,i as oklchToLinearAndSrgb,j as oklchToLinearAndSrgbInto,f as oklchToLinearInto,g as oklchToRgbChannels,h as oklchToRgbChannelsInto,k as rgbToLinear,l as rgbToLinearInto}from'./chunk-FEPIYR27.mjs';import {h,g,c as c$2,f as f$1,b as b$4,a as a$1,d as d$2}from'./chunk-J6CH5YTL.mjs';import'./chunk-MOYQ3PQJ.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 as k$1,j,b as b$2}from'./chunk-IOXRZECH.mjs';var V=l=>({h:c$1(l.h),s:a(l.s,0,100),l:a(l.l,0,100),alpha:a(b$2(l.alpha,3),0,1)}),O={h:0,s:0,l:0,alpha:0},R=({r:l,g:r,b:o,alpha:t})=>{let n=l/255,e=r/255,s=o/255,a$1=Math.max(n,e,s),c=Math.min(n,e,s),C=(a$1+c)/2,d=0,x=0;if(a$1!==c){let _=a$1-c;switch(x=C>.5?_/(2-a$1-c):_/(a$1+c),a$1){case n:d=((e-s)/_+(e<s?6:0))/6;break;case e:d=((s-n)/_+2)/6;break;case s:d=((n-e)/_+4)/6;break}}let y=d*360;return O.h=y>=0&&y<360?y:(y%360+360)%360,O.s=a(x*100,0,100),O.l=a(C*100,0,100),O.alpha=a(b$2(t,3),0,1),O};var v=(l,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?l+(r-l)*6*o:o<1/2?r:o<2/3?l+(r-l)*(2/3-o)*6:l),k=({h:l,s:r,l:o,alpha:t})=>{let n=r/100,e=o/100,s=e<.5?e*(1+n):e+n-e*n,a=2*e-s,c=(l%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}},J=l=>{if(!h$1(l)||!i(l,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:n=1}=l;return !f(r)||!f(o)||!f(t)||!f(n)?null:k(V({h:g$1(r),s:g$1(o),l:g$1(t),alpha:g$1(n)}))},Ir=new RegExp(`^hsla?\\(\\s*(?<h>${k$1})(?<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$1})(?<sp_s>%?)\\s+(?<l_s>${k$1})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${k$1})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),Q=l$1=>{if(typeof l$1!="string")return null;let r=Ir.exec(l$1.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",n=l(r.h)*(d[t]??1),e=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 C=a===void 0?1:l(a)/(c?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var W=({l,c:r,h:o,alpha:t})=>({l,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),Y=l=>{let{l:r,a:o,b:t,alpha:n}=b$4(l),e=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:e,h:e<4e-6?0:c$1(s),alpha:n}},M=l=>d$2(W(l)),Z=l=>c$2(W(l)),rr=l=>{if(!h$1(l)||l.colorSpace==="lch"||!i(l,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:n=1}=l;return !f(r)||!f(o)||!f(t)||!f(n)||g$1(r)>1?null:Z({l:g$1(r),c:Math.max(0,g$1(o)),h:c$1(g$1(t)),alpha:a(g$1(n),0,1)})},Pr=new RegExp(`^oklch\\(\\s*(?<l>${k$1})(?<lp>%?)\\s+(?<c>${k$1})(?<cp>%?)\\s+(?<h>${k$1})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${k$1})(?<alp>%?)\\s*)?\\)$`,"i"),or=l$1=>{if(typeof l$1!="string")return null;let r=Pr.exec(l$1.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)),n=r.hu?.toLowerCase()??"deg",e=l(r.h)*(d[n]??1),s=r.al===void 0?1:l(r.al)/(r.alp?100:1);return Z({l:o,c:t,h:c$1(e),alpha:a(s,0,1)})};var tr=[[b,"hex"],[c,"rgb"],[Q,"hsl"],[or,"oklch"],[h,"oklab"]],lr=[[b$1,"rgb"],[J,"hsl"],[g,"oklab"],[rr,"oklch"]],nr=tr.map(([l])=>l),er=lr.map(([l])=>l),sr=[...nr,...er],P=[...sr],N=[],ar=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?nr:er;for(let o of r){let t=o(l);if(t)return t}for(let o=sr.length;o<P.length;o++){let t=P[o](l);if(t)return t}return null},Ar=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?tr:lr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of N)if(o(l))return t};var br=Symbol(),u=class l{_rgb;_valid;constructor(r,o){if(r===br)this._valid=true,this._rgb=o;else if(r instanceof l){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=ar(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 l(br,r)}static _makeFromOklab({l:r,a:o,b:t,alpha:n}){let[e,s,a]=f$1(r,o,t);return l._make({r:b$3(e)*255,g:b$3(s)*255,b:b$3(a)*255,alpha:n})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:n}=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:n}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:n,alpha:e}=this._rgb,s=a(b$2(o),0,255),a$1=a(b$2(t),0,255),c=a(b$2(n),0,255);return r?.legacy?e<1?`rgba(${s}, ${a$1}, ${c}, ${e})`:`rgb(${s}, ${a$1}, ${c})`:e<1?`rgb(${s} ${a$1} ${c} / ${e})`:`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:n,alpha:e}=R(this._rgb),s=b$2(o,r);return {h:s>=360?0:s,s:b$2(t,r),l:b$2(n,r),alpha:e}}toHslString(r=2){let{h:o,s:t,l:n,alpha:e}=this.toHsl(r);return e<1?`hsl(${o} ${t}% ${n}% / ${e})`:`hsl(${o} ${t}% ${n}%)`}toOklab(r=4){let{l:o,a:t,b:n,alpha:e}=b$4(this._rgb);return {l:b$2(o,r),a:b$2(t,r),b:b$2(n,r),alpha:e}}toOklabString(r=4){let{l:o,a:t,b:n,alpha:e}=this.toOklab(r);return e<1?`oklab(${o} ${t} ${n} / ${e})`:`oklab(${o} ${t} ${n})`}toOklch(r=4){let{l:o,c:t,h:n,alpha:e}=Y(this._rgb);return {l:b$2(o,r),c:b$2(t,r),h:b$2(n,r),alpha:e}}toOklchString(r=4){let{l:o,c:t,h:n,alpha:e}=this.toOklch(r),s=t===0?"none":n;return e<1?`oklch(${o} ${t} ${s} / ${e})`:`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:l._make({...this._rgb,alpha:b$2(a(r,0,1),3)})}hue(r){let{h:o,s:t,l:n,alpha:e}=R(this._rgb);if(r===void 0){let s=b$2(o,2);return s>=360?0:s}return l._make(k({h:r,s:t,l:n,alpha:e}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:l._make(M({...o,l:a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(M({...o,c:a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:n,l:e,alpha:s}=R(this._rgb),a$1=o?.relative?e*(1+r):e+r*100;return l._make(k({h:t,s:n,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:n,l:e,alpha:s}=R(this._rgb),a$1=o?.relative?n*(1+r):n+r*100;return l._make(k({h:t,s:a(a$1,0,100),l:e,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:n}=this._rgb;return l._make({r:255-r,g:255-o,b:255-t,alpha:n})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new l(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:n}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:l._make({r:a(r,0,255),g:a(o,0,255),b:a(t,0,255),alpha:n})}mapSrgb(){let{r,g:o,b:t,alpha:n}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[e,s,a]=a$1(a$2(r/255),a$2(o/255),a$2(t/255)),c=e>1-1e-7?1:e<1e-7?0:e,C=b$5({l:c,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},vr=l=>new u(l),Mr=l=>new u(l).toHex8(),Nr=l=>{l.forEach(r=>r(u,P,N));},Fr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new u(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:c,a:C,b:d}=new u(a).toOklab(),x=(c-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},jr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=l=>{let r=b$5(l);return r!==null?u._makeFromOklab(r):new u(l)};export{u as Colordx,vr as colordx,Nr as extend,Ar as getFormat,Fr as nearest,jr as random,Mr 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-DIWXRMTC.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-DIWXRMTC.mjs';import {h,g,c as c$2,f as f$1,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 as k$1,j,b as b$2}from'./chunk-IOXRZECH.mjs';var V=l=>({h:c$1(l.h),s:a(l.s,0,100),l:a(l.l,0,100),alpha:a(b$2(l.alpha,3),0,1)}),O={h:0,s:0,l:0,alpha:0},R=({r:l,g:r,b:o,alpha:t})=>{let n=l/255,e=r/255,s=o/255,a$1=Math.max(n,e,s),c=Math.min(n,e,s),C=(a$1+c)/2,d=0,x=0;if(a$1!==c){let _=a$1-c;switch(x=C>.5?_/(2-a$1-c):_/(a$1+c),a$1){case n:d=((e-s)/_+(e<s?6:0))/6;break;case e:d=((s-n)/_+2)/6;break;case s:d=((n-e)/_+4)/6;break}}let y=d*360;return O.h=y>=0&&y<360?y:(y%360+360)%360,O.s=a(x*100,0,100),O.l=a(C*100,0,100),O.alpha=a(b$2(t,3),0,1),O};var v=(l,r,o)=>(o<0&&(o+=1),o>1&&(o-=1),o<1/6?l+(r-l)*6*o:o<1/2?r:o<2/3?l+(r-l)*(2/3-o)*6:l),k=({h:l,s:r,l:o,alpha:t})=>{let n=r/100,e=o/100,s=e<.5?e*(1+n):e+n-e*n,a=2*e-s,c=(l%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}},J=l=>{if(!h$1(l)||!i(l,["h","s","l"]))return null;let{h:r,s:o,l:t,alpha:n=1}=l;return !f(r)||!f(o)||!f(t)||!f(n)?null:k(V({h:g$1(r),s:g$1(o),l:g$1(t),alpha:g$1(n)}))},Ir=new RegExp(`^hsla?\\(\\s*(?<h>${k$1})(?<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$1})(?<sp_s>%?)\\s+(?<l_s>${k$1})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${k$1})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),Q=l$1=>{if(typeof l$1!="string")return null;let r=Ir.exec(l$1.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",n=l(r.h)*(d[t]??1),e=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 C=a===void 0?1:l(a)/(c?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var W=({l,c:r,h:o,alpha:t})=>({l,a:r*Math.cos(o*Math.PI/180),b:r*Math.sin(o*Math.PI/180),alpha:t}),Y=l=>{let{l:r,a:o,b:t,alpha:n}=b$4(l),e=Math.sqrt(o*o+t*t),s=Math.atan2(t,o)*180/Math.PI;return {l:r,c:e,h:e<4e-6?0:c$1(s),alpha:n}},M=l=>d$2(W(l)),Z=l=>c$2(W(l)),rr=l=>{if(!h$1(l)||l.colorSpace==="lch"||!i(l,["l","c","h"]))return null;let{l:r,c:o,h:t,alpha:n=1}=l;return !f(r)||!f(o)||!f(t)||!f(n)||g$1(r)>1?null:Z({l:g$1(r),c:Math.max(0,g$1(o)),h:c$1(g$1(t)),alpha:a(g$1(n),0,1)})},Pr=new RegExp(`^oklch\\(\\s*(?<l>${k$1})(?<lp>%?)\\s+(?<c>${k$1})(?<cp>%?)\\s+(?<h>${k$1})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${k$1})(?<alp>%?)\\s*)?\\)$`,"i"),or=l$1=>{if(typeof l$1!="string")return null;let r=Pr.exec(l$1.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)),n=r.hu?.toLowerCase()??"deg",e=l(r.h)*(d[n]??1),s=r.al===void 0?1:l(r.al)/(r.alp?100:1);return Z({l:o,c:t,h:c$1(e),alpha:a(s,0,1)})};var tr=[[b,"hex"],[c,"rgb"],[Q,"hsl"],[or,"oklch"],[h,"oklab"]],lr=[[b$1,"rgb"],[J,"hsl"],[g,"oklab"],[rr,"oklch"]],nr=tr.map(([l])=>l),er=lr.map(([l])=>l),sr=[...nr,...er],P=[...sr],N=[],ar=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?nr:er;for(let o of r){let t=o(l);if(t)return t}for(let o=sr.length;o<P.length;o++){let t=P[o](l);if(t)return t}return null},Ar=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?tr:lr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of N)if(o(l))return t};var br=Symbol(),u=class l{_rgb;_valid;constructor(r,o){if(r===br)this._valid=true,this._rgb=o;else if(r instanceof l){this._valid=r._valid,this._rgb=r._rgb;return}else {let t=ar(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 l(br,r)}static _makeFromOklab({l:r,a:o,b:t,alpha:n}){let[e,s,a]=f$1(r,o,t);return l._make({r:b$3(e)*255,g:b$3(s)*255,b:b$3(a)*255,alpha:n})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:n}=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:n}}_rawRgb(){return this._rgb}toRgbString(r){let{r:o,g:t,b:n,alpha:e}=this._rgb,s=a(b$2(o),0,255),a$1=a(b$2(t),0,255),c=a(b$2(n),0,255);return r?.legacy?e<1?`rgba(${s}, ${a$1}, ${c}, ${e})`:`rgb(${s}, ${a$1}, ${c})`:e<1?`rgb(${s} ${a$1} ${c} / ${e})`:`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:n,alpha:e}=R(this._rgb),s=b$2(o,r);return {h:s>=360?0:s,s:b$2(t,r),l:b$2(n,r),alpha:e}}toHslString(r=2){let{h:o,s:t,l:n,alpha:e}=this.toHsl(r);return e<1?`hsl(${o} ${t}% ${n}% / ${e})`:`hsl(${o} ${t}% ${n}%)`}toOklab(r=4){let{l:o,a:t,b:n,alpha:e}=b$4(this._rgb);return {l:b$2(o,r),a:b$2(t,r),b:b$2(n,r),alpha:e}}toOklabString(r=4){let{l:o,a:t,b:n,alpha:e}=this.toOklab(r);return e<1?`oklab(${o} ${t} ${n} / ${e})`:`oklab(${o} ${t} ${n})`}toOklch(r=4){let{l:o,c:t,h:n,alpha:e}=Y(this._rgb);return {l:b$2(o,r),c:b$2(t,r),h:b$2(n,r),alpha:e}}toOklchString(r=4){let{l:o,c:t,h:n,alpha:e}=this.toOklch(r),s=t===0?"none":n;return e<1?`oklch(${o} ${t} ${s} / ${e})`:`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:l._make({...this._rgb,alpha:b$2(a(r,0,1),3)})}hue(r){let{h:o,s:t,l:n,alpha:e}=R(this._rgb);if(r===void 0){let s=b$2(o,2);return s>=360?0:s}return l._make(k({h:r,s:t,l:n,alpha:e}))}lightness(r){let o=this.toOklch();return r===void 0?o.l:l._make(M({...o,l:a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(M({...o,c:a(r,0,.4)}))}lighten(r=.1,o){let{h:t,s:n,l:e,alpha:s}=R(this._rgb),a$1=o?.relative?e*(1+r):e+r*100;return l._make(k({h:t,s:n,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:n,l:e,alpha:s}=R(this._rgb),a$1=o?.relative?n*(1+r):n+r*100;return l._make(k({h:t,s:a(a$1,0,100),l:e,alpha:s}))}desaturate(r=.1,o){return this.saturate(-r,o)}grayscale(){return this.desaturate(1)}invert(){let{r,g:o,b:t,alpha:n}=this._rgb;return l._make({r:255-r,g:255-o,b:255-t,alpha:n})}rotate(r=15){return this.hue(this.hue()+r)}isEqual(r){let o=new l(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:n}=this._rgb;return r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255?this:l._make({r:a(r,0,255),g:a(o,0,255),b:a(t,0,255),alpha:n})}mapSrgb(){let{r,g:o,b:t,alpha:n}=this._rgb;if(r>=0&&r<=255&&o>=0&&o<=255&&t>=0&&t<=255)return this;let[e,s,a]=a$1(a$2(r/255),a$2(o/255),a$2(t/255)),c=e>1-1e-7?1:e<1e-7?0:e,C=p({l:c,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},vr=l=>new u(l),Mr=l=>new u(l).toHex8(),Nr=l=>{l.forEach(r=>r(u,P,N));},Fr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new u(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:c,a:C,b:d}=new u(a).toOklab(),x=(c-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},jr=()=>new u({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});u.toGamutSrgb=l=>{let r=p(l);return r!==null?u._makeFromOklab(r):new u(l)};export{u as Colordx,vr as colordx,Nr as extend,Ar as getFormat,Fr as nearest,jr as random,Mr 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","a","lr","lg","lb","oklabToLinear","srgbFromLinear","options","ri","gi","bi","rgbToHex","rgbToHex8","precision","hr","value","amount","newL","newS","color","other","self","lRaw","bv","linearSrgbToOklab","srgbToLinear","mapped","toGamutSrgbRaw","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, oklabToLinear, 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 OKLab values, storing unclamped gamma-encoded sRGB internally.\n * Unlike new Colordx(oklabObject), this does NOT clamp channels to [0, 1] before gamma encoding,\n * so wide-gamut P3/Rec2020 colors are preserved accurately for toP3() / toRec2020() output.\n * sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.\n */\n static _makeFromOklab({ l, a, b, alpha }: OklabColor): Colordx {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return Colordx._make({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\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 return mapped !== null ? Colordx._makeFromOklab(mapped) : this;\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 return mapped !== null ? Colordx._makeFromOklab(mapped) : new Colordx(input);\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","a","lr","lg","lb","oklabToLinear","srgbFromLinear","options","ri","gi","bi","rgbToHex","rgbToHex8","precision","hr","value","amount","newL","newS","color","other","self","lRaw","bv","linearSrgbToOklab","srgbToLinear","mapped","toGamutSrgbRaw","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, oklabToLinear, 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 OKLab values, storing unclamped gamma-encoded sRGB internally.\n * Unlike new Colordx(oklabObject), this does NOT clamp channels to [0, 1] before gamma encoding,\n * so wide-gamut P3/Rec2020 colors are preserved accurately for toP3() / toRec2020() output.\n * sRGB output methods (toRgb, toHex, etc.) clamp to [0, 255] before returning.\n */\n static _makeFromOklab({ l, a, b, alpha }: OklabColor): Colordx {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return Colordx._make({\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\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 return mapped !== null ? Colordx._makeFromOklab(mapped) : this;\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 return mapped !== null ? Colordx._makeFromOklab(mapped) : new Colordx(input);\n};\n"]}

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

'use strict';var chunkFZP4XDSG_cjs=require('../chunk-FZP4XDSG.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}=chunkFZP4XDSG_cjs.l(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}=chunkFZP4XDSG_cjs.b(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}=chunkFZP4XDSG_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=chunkFZP4XDSG_cjs.l(this._rawRgb()),n=chunkFZP4XDSG_cjs.l(new b(t)._rawRgb()),o=chunkYISEJCI6_cjs.a(a,0,1);return new b(chunkFZP4XDSG_cjs.o({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(chunkFZP4XDSG_cjs.n(chunkFZP4XDSG_cjs.m(this._rawRgb()),chunkFZP4XDSG_cjs.m(new b(t)._rawRgb()))/100,3)},f.push(chunkFZP4XDSG_cjs.p,chunkFZP4XDSG_cjs.q,chunkFZP4XDSG_cjs.g,chunkFZP4XDSG_cjs.f,chunkFZP4XDSG_cjs.h,chunkFZP4XDSG_cjs.e),x.push([chunkFZP4XDSG_cjs.p,"lab"],[chunkFZP4XDSG_cjs.q,"lab"],[chunkFZP4XDSG_cjs.g,"xyz-d65"],[chunkFZP4XDSG_cjs.f,"xyz-d65"],[chunkFZP4XDSG_cjs.h,"xyz"],[chunkFZP4XDSG_cjs.e,"xyz"]);},w=d;module.exports=w;//# sourceMappingURL=lab.cjs.map
'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
//# sourceMappingURL=lab.cjs.map

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

import {l,b as b$1,a,o,n,m,p,q,g,f,h,e}from'../chunk-MOYQ3PQJ.mjs';import'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,a as a$1}from'../chunk-IOXRZECH.mjs';var d=(b$2,f$1,x)=>{b$2.prototype.toLab=function(t=2){let{l:a,a:r,b:n,alpha:o}=l(this._rawRgb());return {l:b(a,t),a:b(r,t)||0,b:b(n,t)||0,alpha:o,colorSpace:"lab"}},b$2.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$2.prototype.toXyz=function(t=2){let{x:a,y:r,z:n,alpha:o}=b$1(this._rawRgb());return {x:b(a,t),y:b(r,t),z:b(n,t),alpha:o}},b$2.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$2.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$2.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$2.prototype.mixLab=function(t,a=.5){let r=l(this._rawRgb()),n=l(new b$2(t)._rawRgb()),o$1=a$1(a,0,1);return new b$2(o({l:r.l*(1-o$1)+n.l*o$1,a:r.a*(1-o$1)+n.a*o$1,b:r.b*(1-o$1)+n.b*o$1,alpha:b(r.alpha*(1-o$1)+n.alpha*o$1,3),colorSpace:"lab"}))},b$2.prototype.delta=function(t="#fff"){return b(n(m(this._rawRgb()),m(new b$2(t)._rawRgb()))/100,3)},f$1.push(p,q,g,f,h,e),x.push([p,"lab"],[q,"lab"],[g,"xyz-d65"],[f,"xyz-d65"],[h,"xyz"],[e,"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-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
//# sourceMappingURL=lab.mjs.map

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

{"version":3,"sources":["../../src/plugins/lab.ts"],"names":["lab","ColordxClass","parsers","formatParsers","precision","l","a","b","alpha","rgbToLab","round","x","y","z","rgbToXyz","rgbToXyzD65","color","ratio","lab1","lab2","w","clamp","labToRgb","deltaE2000","rgbToLabD65","parseLabString","parseLabObject","parseXyzD65String","parseXyzD65Object","parseXyzD50String","parseXyzObject","lab_default"],"mappings":"8KA0BA,IAAMA,CAAAA,CAAc,CAACC,GAAAA,CAAcC,GAAAA,CAASC,IAAkB,CAC5DF,GAAAA,CAAa,UAAU,KAAA,CAAQ,SAAUG,EAAY,CAAA,CAAG,CACtD,GAAM,CAAE,CAAA,CAAAC,EAAG,CAAA,CAAAC,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAC,CAAM,EAAIC,CAAAA,CAAS,IAAA,CAAK,SAAS,CAAA,CAClD,OAAO,CACL,CAAA,CAAGC,CAAAA,CAAML,CAAAA,CAAGD,CAAS,CAAA,CACrB,EAAGM,CAAAA,CAAMJ,CAAAA,CAAGF,CAAS,CAAA,EAAK,CAAA,CAC1B,EAAGM,CAAAA,CAAMH,CAAAA,CAAGH,CAAS,CAAA,EAAK,CAAA,CAC1B,KAAA,CAAAI,EACA,UAAA,CAAY,KACd,CACF,CAAA,CACAP,GAAAA,CAAa,UAAU,WAAA,CAAc,SAAyBG,CAAAA,CAAY,CAAA,CAAG,CAC3E,GAAM,CAAE,CAAA,CAAAC,CAAAA,CAAG,EAAAC,CAAAA,CAAG,CAAA,CAAAC,EAAG,KAAA,CAAAC,CAAM,CAAA,CAAI,IAAA,CAAK,KAAA,CAAMJ,CAAS,EAC/C,OAAOI,CAAAA,CAAQ,EAAI,CAAA,IAAA,EAAOH,CAAC,IAAIC,CAAC,CAAA,CAAA,EAAIC,CAAC,CAAA,GAAA,EAAMC,CAAK,CAAA,CAAA,CAAA,CAAM,OAAOH,CAAC,CAAA,CAAA,EAAIC,CAAC,CAAA,CAAA,EAAIC,CAAC,GAC1E,CAAA,CACAN,GAAAA,CAAa,SAAA,CAAU,KAAA,CAAQ,SAAUG,CAAAA,CAAY,EAAG,CACtD,GAAM,CAAE,CAAA,CAAAO,CAAAA,CAAG,EAAAC,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAL,CAAM,CAAA,CAAIM,IAAS,IAAA,CAAK,OAAA,EAAS,CAAA,CAClD,OAAO,CAAE,CAAA,CAAGJ,CAAAA,CAAMC,CAAAA,CAAGP,CAAS,CAAA,CAAG,CAAA,CAAGM,EAAME,CAAAA,CAAGR,CAAS,EAAG,CAAA,CAAGM,CAAAA,CAAMG,EAAGT,CAAS,CAAA,CAAG,KAAA,CAAAI,CAAM,CACzF,CAAA,CACAP,IAAa,SAAA,CAAU,WAAA,CAAc,SAAyBG,CAAAA,CAAY,CAAA,CAAG,CAC3E,GAAM,CAAE,CAAA,CAAAO,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,EAAAC,CAAAA,CAAG,KAAA,CAAAL,CAAM,CAAA,CAAI,IAAA,CAAK,MAAMJ,CAAS,CAAA,CAC/C,OAAOI,CAAAA,CAAQ,CAAA,CAAI,CAAA,cAAA,EAAiBG,CAAC,CAAA,CAAA,EAAIC,CAAC,IAAIC,CAAC,CAAA,GAAA,EAAML,CAAK,CAAA,CAAA,CAAA,CAAM,CAAA,cAAA,EAAiBG,CAAC,CAAA,CAAA,EAAIC,CAAC,CAAA,CAAA,EAAIC,CAAC,CAAA,CAAA,CAC9F,CAAA,CACAZ,IAAa,SAAA,CAAU,QAAA,CAAW,SAAUG,CAAAA,CAAY,CAAA,CAAG,CACzD,GAAM,CAAE,CAAA,CAAAO,IAAG,CAAA,CAAAC,CAAAA,CAAG,EAAAC,CAAAA,CAAG,KAAA,CAAAL,CAAM,CAAA,CAAIO,CAAAA,CAAY,IAAA,CAAK,OAAA,EAAS,CAAA,CACrD,OAAO,CACL,CAAA,CAAGL,EAAMC,GAAAA,CAAGP,CAAS,EACrB,CAAA,CAAGM,CAAAA,CAAME,CAAAA,CAAGR,CAAS,CAAA,CACrB,CAAA,CAAGM,EAAMG,CAAAA,CAAGT,CAAS,EACrB,KAAA,CAAAI,CAAAA,CACA,WAAY,SACd,CACF,CAAA,CACAP,GAAAA,CAAa,SAAA,CAAU,cAAA,CAAiB,SAAyBG,CAAAA,CAAY,CAAA,CAAG,CAC9E,GAAM,CAAE,EAAAO,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAL,CAAM,CAAA,CAAI,IAAA,CAAK,SAASJ,CAAS,CAAA,CAClD,OAAOI,CAAAA,CAAQ,CAAA,CAAI,CAAA,cAAA,EAAiBG,CAAC,CAAA,CAAA,EAAIC,CAAC,IAAIC,CAAC,CAAA,GAAA,EAAML,CAAK,CAAA,CAAA,CAAA,CAAM,CAAA,cAAA,EAAiBG,CAAC,CAAA,CAAA,EAAIC,CAAC,CAAA,CAAA,EAAIC,CAAC,CAAA,CAAA,CAC9F,CAAA,CACAZ,IAAa,SAAA,CAAU,MAAA,CAAS,SAAyBe,CAAAA,CAAiBC,CAAAA,CAAQ,GAAc,CAC9F,IAAMC,CAAAA,CAAOT,CAAAA,CAAS,IAAA,CAAK,OAAA,EAAS,CAAA,CAC9BU,CAAAA,CAAOV,EAAS,IAAIR,GAAAA,CAAae,CAAK,CAAA,CAAE,OAAA,EAAS,CAAA,CACjDI,GAAAA,CAAIC,GAAAA,CAAMJ,EAAO,CAAA,CAAG,CAAC,EAC3B,OAAO,IAAIhB,IACTqB,CAAAA,CAAS,CACP,CAAA,CAAGJ,CAAAA,CAAK,CAAA,EAAK,CAAA,CAAIE,KAAKD,CAAAA,CAAK,CAAA,CAAIC,IAC/B,CAAA,CAAGF,CAAAA,CAAK,GAAK,CAAA,CAAIE,GAAAA,CAAAA,CAAKD,CAAAA,CAAK,CAAA,CAAIC,GAAAA,CAC/B,CAAA,CAAGF,EAAK,CAAA,EAAK,CAAA,CAAIE,KAAKD,CAAAA,CAAK,CAAA,CAAIC,IAC/B,KAAA,CAAOV,CAAAA,CAAMQ,CAAAA,CAAK,KAAA,EAAS,CAAA,CAAIE,GAAAA,CAAAA,CAAKD,EAAK,KAAA,CAAQC,GAAAA,CAAG,CAAC,CAAA,CACrD,UAAA,CAAY,KACd,CAAC,CACH,CACF,CAAA,CAEAnB,GAAAA,CAAa,SAAA,CAAU,MAAQ,SAAUe,CAAAA,CAAkB,OAAQ,CACjE,OAAON,EAAMa,CAAAA,CAAWC,CAAAA,CAAY,IAAA,CAAK,OAAA,EAAS,CAAA,CAAGA,EAAY,IAAIvB,GAAAA,CAAae,CAAK,CAAA,CAAE,OAAA,EAAS,CAAC,CAAA,CAAI,GAAA,CAAK,CAAC,CAC/G,CAAA,CACAd,IAAQ,IAAA,CAAKuB,CAAAA,CAAgBC,EAAgBC,CAAAA,CAAmBC,CAAAA,CAAmBC,EAAmBC,CAAc,CAAA,CACpH3B,CAAAA,CAAc,IAAA,CACZ,CAACsB,CAAAA,CAAgB,KAAK,CAAA,CACtB,CAACC,EAAgB,KAAK,CAAA,CACtB,CAACC,CAAAA,CAAmB,SAAS,CAAA,CAC7B,CAACC,CAAAA,CAAmB,SAAS,EAC7B,CAACC,CAAAA,CAAmB,KAAK,CAAA,CACzB,CAACC,EAAgB,KAAK,CACxB,EACF,CAAA,CAEOC,CAAAA,CAAQ/B","file":"lab.mjs","sourcesContent":["import { deltaE2000, labToRgb, parseLabObject, parseLabString, rgbToLab, rgbToLabD65 } from '../colorModels/lab.js';\nimport {\n parseXyzD50String,\n parseXyzD65Object,\n parseXyzD65String,\n parseXyzObject,\n rgbToXyz,\n rgbToXyzD65,\n} from '../colorModels/xyz.js';\nimport type { Colordx, Plugin } from '../colordx.js';\nimport { clamp, round } from '../helpers.js';\nimport type { AnyColor, LabColor, XyzColor, XyzD65Color } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toLab(precision?: number): LabColor;\n toLabString(precision?: number): string;\n toXyz(precision?: number): XyzColor;\n toXyzString(precision?: number): string;\n toXyzD65(precision?: number): XyzD65Color;\n toXyzD65String(precision?: number): string;\n mixLab(color: AnyColor, ratio?: number): Colordx;\n delta(color?: AnyColor): number;\n }\n}\n\nconst lab: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toLab = function (precision = 2) {\n const { l, a, b, alpha } = rgbToLab(this._rawRgb());\n return {\n l: round(l, precision),\n a: round(a, precision) || 0, // || 0 suppresses −0\n b: round(b, precision) || 0,\n alpha,\n colorSpace: 'lab' as const,\n };\n };\n ColordxClass.prototype.toLabString = function (this: Colordx, precision = 2) {\n const { l, a, b, alpha } = this.toLab(precision);\n return alpha < 1 ? `lab(${l} ${a} ${b} / ${alpha})` : `lab(${l} ${a} ${b})`;\n };\n ColordxClass.prototype.toXyz = function (precision = 2) {\n const { x, y, z, alpha } = rgbToXyz(this._rawRgb());\n return { x: round(x, precision), y: round(y, precision), z: round(z, precision), alpha };\n };\n ColordxClass.prototype.toXyzString = function (this: Colordx, precision = 2) {\n const { x, y, z, alpha } = this.toXyz(precision);\n return alpha < 1 ? `color(xyz-d50 ${x} ${y} ${z} / ${alpha})` : `color(xyz-d50 ${x} ${y} ${z})`;\n };\n ColordxClass.prototype.toXyzD65 = function (precision = 2) {\n const { x, y, z, alpha } = rgbToXyzD65(this._rawRgb());\n return {\n x: round(x, precision),\n y: round(y, precision),\n z: round(z, precision),\n alpha,\n colorSpace: 'xyz-d65' as const,\n };\n };\n ColordxClass.prototype.toXyzD65String = function (this: Colordx, precision = 2) {\n const { x, y, z, alpha } = this.toXyzD65(precision);\n return alpha < 1 ? `color(xyz-d65 ${x} ${y} ${z} / ${alpha})` : `color(xyz-d65 ${x} ${y} ${z})`;\n };\n ColordxClass.prototype.mixLab = function (this: Colordx, color: AnyColor, ratio = 0.5): Colordx {\n const lab1 = rgbToLab(this._rawRgb());\n const lab2 = rgbToLab(new ColordxClass(color)._rawRgb());\n const w = clamp(ratio, 0, 1);\n return new ColordxClass(\n labToRgb({\n l: lab1.l * (1 - w) + lab2.l * w,\n a: lab1.a * (1 - w) + lab2.a * w,\n b: lab1.b * (1 - w) + lab2.b * w,\n alpha: round(lab1.alpha * (1 - w) + lab2.alpha * w, 3),\n colorSpace: 'lab',\n })\n );\n };\n /** Returns ΔE2000 color difference normalized to [0, 1] (divide by 100). 0 = identical, 1 = maximally different. */\n ColordxClass.prototype.delta = function (color: AnyColor = '#fff') {\n return round(deltaE2000(rgbToLabD65(this._rawRgb()), rgbToLabD65(new ColordxClass(color)._rawRgb())) / 100, 3);\n };\n parsers.push(parseLabString, parseLabObject, parseXyzD65String, parseXyzD65Object, parseXyzD50String, parseXyzObject);\n formatParsers.push(\n [parseLabString, 'lab'],\n [parseLabObject, 'lab'],\n [parseXyzD65String, 'xyz-d65'],\n [parseXyzD65Object, 'xyz-d65'],\n [parseXyzD50String, 'xyz'],\n [parseXyzObject, 'xyz']\n );\n};\n\nexport default lab;\n"]}
{"version":3,"sources":["../../src/plugins/lab.ts"],"names":["lab","ColordxClass","parsers","formatParsers","precision","l","a","b","alpha","rgbToLab","round","x","y","z","rgbToXyz","rgbToXyzD65","color","ratio","lab1","lab2","w","clamp","labToRgb","deltaE2000","rgbToLabD65","parseLabString","parseLabObject","parseXyzD65String","parseXyzD65Object","parseXyzD50String","parseXyzObject","lab_default"],"mappings":"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","file":"lab.mjs","sourcesContent":["import { deltaE2000, labToRgb, parseLabObject, parseLabString, rgbToLab, rgbToLabD65 } from '../colorModels/lab.js';\nimport {\n parseXyzD50String,\n parseXyzD65Object,\n parseXyzD65String,\n parseXyzObject,\n rgbToXyz,\n rgbToXyzD65,\n} from '../colorModels/xyz.js';\nimport type { Colordx, Plugin } from '../colordx.js';\nimport { clamp, round } from '../helpers.js';\nimport type { AnyColor, LabColor, XyzColor, XyzD65Color } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toLab(precision?: number): LabColor;\n toLabString(precision?: number): string;\n toXyz(precision?: number): XyzColor;\n toXyzString(precision?: number): string;\n toXyzD65(precision?: number): XyzD65Color;\n toXyzD65String(precision?: number): string;\n mixLab(color: AnyColor, ratio?: number): Colordx;\n delta(color?: AnyColor): number;\n }\n}\n\nconst lab: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toLab = function (precision = 2) {\n const { l, a, b, alpha } = rgbToLab(this._rawRgb());\n return {\n l: round(l, precision),\n a: round(a, precision) || 0, // || 0 suppresses −0\n b: round(b, precision) || 0,\n alpha,\n colorSpace: 'lab' as const,\n };\n };\n ColordxClass.prototype.toLabString = function (this: Colordx, precision = 2) {\n const { l, a, b, alpha } = this.toLab(precision);\n return alpha < 1 ? `lab(${l} ${a} ${b} / ${alpha})` : `lab(${l} ${a} ${b})`;\n };\n ColordxClass.prototype.toXyz = function (precision = 2) {\n const { x, y, z, alpha } = rgbToXyz(this._rawRgb());\n return { x: round(x, precision), y: round(y, precision), z: round(z, precision), alpha };\n };\n ColordxClass.prototype.toXyzString = function (this: Colordx, precision = 2) {\n const { x, y, z, alpha } = this.toXyz(precision);\n return alpha < 1 ? `color(xyz-d50 ${x} ${y} ${z} / ${alpha})` : `color(xyz-d50 ${x} ${y} ${z})`;\n };\n ColordxClass.prototype.toXyzD65 = function (precision = 2) {\n const { x, y, z, alpha } = rgbToXyzD65(this._rawRgb());\n return {\n x: round(x, precision),\n y: round(y, precision),\n z: round(z, precision),\n alpha,\n colorSpace: 'xyz-d65' as const,\n };\n };\n ColordxClass.prototype.toXyzD65String = function (this: Colordx, precision = 2) {\n const { x, y, z, alpha } = this.toXyzD65(precision);\n return alpha < 1 ? `color(xyz-d65 ${x} ${y} ${z} / ${alpha})` : `color(xyz-d65 ${x} ${y} ${z})`;\n };\n ColordxClass.prototype.mixLab = function (this: Colordx, color: AnyColor, ratio = 0.5): Colordx {\n const lab1 = rgbToLab(this._rawRgb());\n const lab2 = rgbToLab(new ColordxClass(color)._rawRgb());\n const w = clamp(ratio, 0, 1);\n return new ColordxClass(\n labToRgb({\n l: lab1.l * (1 - w) + lab2.l * w,\n a: lab1.a * (1 - w) + lab2.a * w,\n b: lab1.b * (1 - w) + lab2.b * w,\n alpha: round(lab1.alpha * (1 - w) + lab2.alpha * w, 3),\n colorSpace: 'lab',\n })\n );\n };\n /** Returns ΔE2000 color difference normalized to [0, 1] (divide by 100). 0 = identical, 1 = maximally different. */\n ColordxClass.prototype.delta = function (color: AnyColor = '#fff') {\n return round(deltaE2000(rgbToLabD65(this._rawRgb()), rgbToLabD65(new ColordxClass(color)._rawRgb())) / 100, 3);\n };\n parsers.push(parseLabString, parseLabObject, parseXyzD65String, parseXyzD65Object, parseXyzD50String, parseXyzObject);\n formatParsers.push(\n [parseLabString, 'lab'],\n [parseLabObject, 'lab'],\n [parseXyzD65String, 'xyz-d65'],\n [parseXyzD65Object, 'xyz-d65'],\n [parseXyzD50String, 'xyz'],\n [parseXyzObject, 'xyz']\n );\n};\n\nexport default lab;\n"]}

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

'use strict';var chunkFZP4XDSG_cjs=require('../chunk-FZP4XDSG.cjs');require('../chunk-X5FCFNQN.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var $=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"}),x=c=>{let o=chunkFZP4XDSG_cjs.l(c),t=Math.sqrt(o.a**2+o.b**2),r=Math.atan2(o.b,o.a)/Math.PI*180;return {l:o.l,c:t,h:t<.0015?0:r<0?r+360:r,alpha:o.alpha,colorSpace:"lch"}};var y=({l:c,c:o,h:t,alpha:r})=>chunkFZP4XDSG_cjs.o({l:c,a:o*Math.cos(t*Math.PI/180),b:o*Math.sin(t*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:t,h:r,alpha:l=1}=c;return !chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(l)?null:y($({l:chunkYISEJCI6_cjs.g(o),c:chunkYISEJCI6_cjs.g(t),h:chunkYISEJCI6_cjs.g(r),alpha:chunkYISEJCI6_cjs.g(l)}))},M=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=M.exec(c.trim())?.groups;if(!o)return null;let t=chunkYISEJCI6_cjs.l(o.l),r=o.cp?chunkYISEJCI6_cjs.l(o.c)*1.5:chunkYISEJCI6_cjs.l(o.c),l=o.hu?.toLowerCase()??"deg",n=chunkYISEJCI6_cjs.l(o.h)*(chunkYISEJCI6_cjs.d[l]??1),h=o.al===void 0?1:chunkYISEJCI6_cjs.l(o.al)/(o.alp?100:1);return y($({l:t,c:r,h:n,alpha:h}))};var k=(c,o,t)=>{c.prototype.toLch=function(r=2){let{l,c:n,h,alpha:i}=x(this._rawRgb()),g=chunkYISEJCI6_cjs.b(n,r);return {l:chunkYISEJCI6_cjs.b(l,r),c:g,h:n<.0015?0:chunkYISEJCI6_cjs.b(h,r),alpha:i,colorSpace:"lch"}},c.prototype.toLchString=function(r=2){let{l,c:n,h,alpha:i}=this.toLch(r),g=n===0?"none":h;return i<1?`lch(${l} ${n} ${g} / ${i})`:`lch(${l} ${n} ${g})`},o.push(m,L),t.push([m,"lch"],[L,"lch"]);},_=k;module.exports=_;//# sourceMappingURL=lch.cjs.map
'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
//# sourceMappingURL=lch.cjs.map

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

{"version":3,"sources":["../../src/colorModels/lch.ts","../../src/plugins/lch.ts"],"names":["clampLch","lch","clamp","normalizeHue","rgbToLchRaw","rgb","lab","rgbToLab","c","h","lchToRgb","l","alpha","labToRgb","parseLchObject","input","isObject","hasKeys","isAnyNumber","sanitize","LCH_RE","NUM_OR_NONE","parseLchString","g","parseNum","unit","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","cR","round","H","lch_default"],"mappings":"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","file":"lch.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 { LchColor, RgbColor } from '../types.js';\nimport { labToRgb, rgbToLab } from './lab.js';\n\nconst clampLch = (lch: Omit<LchColor, 'colorSpace'>): LchColor => ({\n l: clamp(lch.l, 0, 100),\n c: Math.max(0, lch.c),\n h: normalizeHue(lch.h),\n alpha: clamp(lch.alpha, 0, 1),\n colorSpace: 'lch',\n});\n\nexport const rgbToLchRaw = (rgb: RgbColor): LchColor => {\n const lab = rgbToLab(rgb);\n const c = Math.sqrt(lab.a ** 2 + lab.b ** 2);\n const h = (Math.atan2(lab.b, lab.a) / Math.PI) * 180;\n return {\n l: lab.l,\n c,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : h < 0 ? h + 360 : h,\n alpha: lab.alpha,\n colorSpace: 'lch',\n };\n};\n\nexport const rgbToLch = (rgb: RgbColor): LchColor => {\n const { l, c, h, alpha } = rgbToLchRaw(rgb);\n const cR = round(c, 2);\n return { l, c: cR, h: cR < 0.0015 ? 0 : round(h, 2), alpha, colorSpace: 'lch' };\n};\n\nexport const lchToRgb = ({ l, c, h, alpha }: LchColor): RgbColor =>\n labToRgb({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n colorSpace: 'lab',\n });\n\nexport const parseLchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\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 return lchToRgb(\n clampLch({\n l: sanitize(l),\n c: sanitize(c),\n h: sanitize(h),\n alpha: sanitize(alpha),\n })\n );\n};\n\n// CSS Color 4: lch(L C H / alpha). L: 100%=100. C: 100%=150. H: number|angle|none.\nconst LCH_RE = new RegExp(\n `^lch\\\\(\\\\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 parseLchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100\n const c = g.cp ? parseNum(g.c!) * 1.5 : parseNum(g.c!); // 100% = 150\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 lchToRgb(clampLch({ l, c, h, alpha }));\n};\n","import { parseLchObject, parseLchString, rgbToLchRaw } from '../colorModels/lch.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { LchColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toLch(precision?: number): LchColor;\n toLchString(precision?: number): string;\n }\n}\n\nconst lch: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toLch = function (precision = 2) {\n const { l, c, h, alpha } = rgbToLchRaw(this._rawRgb());\n const cR = round(c, precision);\n return {\n l: round(l, precision),\n c: cR,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : round(h, precision),\n alpha,\n colorSpace: 'lch' as const,\n };\n };\n ColordxClass.prototype.toLchString = function (precision = 2) {\n const { l, c, h, alpha } = this.toLch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `lch(${l} ${c} ${H} / ${alpha})` : `lch(${l} ${c} ${H})`;\n };\n parsers.push(parseLchObject, parseLchString);\n formatParsers.push([parseLchObject, 'lch'], [parseLchString, 'lch']);\n};\n\nexport default lch;\n"]}
{"version":3,"sources":["../../src/colorModels/lch.ts","../../src/plugins/lch.ts"],"names":["clampLch","lch","clamp","normalizeHue","rgbToLchRaw","rgb","lab","rgbToLab","c","h","lchToRgbUnclamped","l","alpha","labToRgbUnclamped","parseLchObject","input","isObject","hasKeys","isAnyNumber","sanitize","LCH_RE","NUM_OR_NONE","parseLchString","g","parseNum","unit","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","cR","round","H","lch_default"],"mappings":"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","file":"lch.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 { LchColor, RgbColor } from '../types.js';\nimport { labToRgb, labToRgbUnclamped, rgbToLab } from './lab.js';\n\nconst clampLch = (lch: Omit<LchColor, 'colorSpace'>): LchColor => ({\n l: clamp(lch.l, 0, 100),\n c: Math.max(0, lch.c),\n h: normalizeHue(lch.h),\n alpha: clamp(lch.alpha, 0, 1),\n colorSpace: 'lch',\n});\n\nexport const rgbToLchRaw = (rgb: RgbColor): LchColor => {\n const lab = rgbToLab(rgb);\n const c = Math.sqrt(lab.a ** 2 + lab.b ** 2);\n const h = (Math.atan2(lab.b, lab.a) / Math.PI) * 180;\n return {\n l: lab.l,\n c,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : h < 0 ? h + 360 : h,\n alpha: lab.alpha,\n colorSpace: 'lch',\n };\n};\n\nexport const rgbToLch = (rgb: RgbColor): LchColor => {\n const { l, c, h, alpha } = rgbToLchRaw(rgb);\n const cR = round(c, 2);\n return { l, c: cR, h: cR < 0.0015 ? 0 : round(h, 2), alpha, colorSpace: 'lch' };\n};\n\nexport const lchToRgb = ({ l, c, h, alpha }: LchColor): RgbColor =>\n labToRgb({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n colorSpace: 'lab',\n });\n\n/** Unclamped LCH → gamma sRGB. Mirrors lchToRgb but preserves out-of-gamut channels. */\nconst lchToRgbUnclamped = ({ l, c, h, alpha }: LchColor): RgbColor =>\n labToRgbUnclamped({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n colorSpace: 'lab',\n });\n\nexport const parseLchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\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 return lchToRgbUnclamped(\n clampLch({\n l: sanitize(l),\n c: sanitize(c),\n h: sanitize(h),\n alpha: sanitize(alpha),\n })\n );\n};\n\n// CSS Color 4: lch(L C H / alpha). L: 100%=100. C: 100%=150. H: number|angle|none.\nconst LCH_RE = new RegExp(\n `^lch\\\\(\\\\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 parseLchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100\n const c = g.cp ? parseNum(g.c!) * 1.5 : parseNum(g.c!); // 100% = 150\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 lchToRgbUnclamped(clampLch({ l, c, h, alpha }));\n};\n","import { parseLchObject, parseLchString, rgbToLchRaw } from '../colorModels/lch.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { LchColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toLch(precision?: number): LchColor;\n toLchString(precision?: number): string;\n }\n}\n\nconst lch: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toLch = function (precision = 2) {\n const { l, c, h, alpha } = rgbToLchRaw(this._rawRgb());\n const cR = round(c, precision);\n return {\n l: round(l, precision),\n c: cR,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : round(h, precision),\n alpha,\n colorSpace: 'lch' as const,\n };\n };\n ColordxClass.prototype.toLchString = function (precision = 2) {\n const { l, c, h, alpha } = this.toLch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `lch(${l} ${c} ${H} / ${alpha})` : `lch(${l} ${c} ${H})`;\n };\n parsers.push(parseLchObject, parseLchString);\n formatParsers.push([parseLchObject, 'lch'], [parseLchString, 'lch']);\n};\n\nexport default lch;\n"]}

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

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

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

{"version":3,"sources":["../../src/colorModels/lch.ts","../../src/plugins/lch.ts"],"names":["clampLch","lch","clamp","normalizeHue","rgbToLchRaw","rgb","lab","rgbToLab","c","h","lchToRgb","l","alpha","labToRgb","parseLchObject","input","isObject","hasKeys","isAnyNumber","sanitize","LCH_RE","NUM_OR_NONE","parseLchString","g","parseNum","unit","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","cR","round","H","lch_default"],"mappings":"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","file":"lch.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 { LchColor, RgbColor } from '../types.js';\nimport { labToRgb, rgbToLab } from './lab.js';\n\nconst clampLch = (lch: Omit<LchColor, 'colorSpace'>): LchColor => ({\n l: clamp(lch.l, 0, 100),\n c: Math.max(0, lch.c),\n h: normalizeHue(lch.h),\n alpha: clamp(lch.alpha, 0, 1),\n colorSpace: 'lch',\n});\n\nexport const rgbToLchRaw = (rgb: RgbColor): LchColor => {\n const lab = rgbToLab(rgb);\n const c = Math.sqrt(lab.a ** 2 + lab.b ** 2);\n const h = (Math.atan2(lab.b, lab.a) / Math.PI) * 180;\n return {\n l: lab.l,\n c,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : h < 0 ? h + 360 : h,\n alpha: lab.alpha,\n colorSpace: 'lch',\n };\n};\n\nexport const rgbToLch = (rgb: RgbColor): LchColor => {\n const { l, c, h, alpha } = rgbToLchRaw(rgb);\n const cR = round(c, 2);\n return { l, c: cR, h: cR < 0.0015 ? 0 : round(h, 2), alpha, colorSpace: 'lch' };\n};\n\nexport const lchToRgb = ({ l, c, h, alpha }: LchColor): RgbColor =>\n labToRgb({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n colorSpace: 'lab',\n });\n\nexport const parseLchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\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 return lchToRgb(\n clampLch({\n l: sanitize(l),\n c: sanitize(c),\n h: sanitize(h),\n alpha: sanitize(alpha),\n })\n );\n};\n\n// CSS Color 4: lch(L C H / alpha). L: 100%=100. C: 100%=150. H: number|angle|none.\nconst LCH_RE = new RegExp(\n `^lch\\\\(\\\\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 parseLchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100\n const c = g.cp ? parseNum(g.c!) * 1.5 : parseNum(g.c!); // 100% = 150\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 lchToRgb(clampLch({ l, c, h, alpha }));\n};\n","import { parseLchObject, parseLchString, rgbToLchRaw } from '../colorModels/lch.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { LchColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toLch(precision?: number): LchColor;\n toLchString(precision?: number): string;\n }\n}\n\nconst lch: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toLch = function (precision = 2) {\n const { l, c, h, alpha } = rgbToLchRaw(this._rawRgb());\n const cR = round(c, precision);\n return {\n l: round(l, precision),\n c: cR,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : round(h, precision),\n alpha,\n colorSpace: 'lch' as const,\n };\n };\n ColordxClass.prototype.toLchString = function (precision = 2) {\n const { l, c, h, alpha } = this.toLch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `lch(${l} ${c} ${H} / ${alpha})` : `lch(${l} ${c} ${H})`;\n };\n parsers.push(parseLchObject, parseLchString);\n formatParsers.push([parseLchObject, 'lch'], [parseLchString, 'lch']);\n};\n\nexport default lch;\n"]}
{"version":3,"sources":["../../src/colorModels/lch.ts","../../src/plugins/lch.ts"],"names":["clampLch","lch","clamp","normalizeHue","rgbToLchRaw","rgb","lab","rgbToLab","c","h","lchToRgbUnclamped","l","alpha","labToRgbUnclamped","parseLchObject","input","isObject","hasKeys","isAnyNumber","sanitize","LCH_RE","NUM_OR_NONE","parseLchString","g","parseNum","unit","ANGLE_UNITS","ColordxClass","parsers","formatParsers","precision","cR","round","H","lch_default"],"mappings":"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","file":"lch.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 { LchColor, RgbColor } from '../types.js';\nimport { labToRgb, labToRgbUnclamped, rgbToLab } from './lab.js';\n\nconst clampLch = (lch: Omit<LchColor, 'colorSpace'>): LchColor => ({\n l: clamp(lch.l, 0, 100),\n c: Math.max(0, lch.c),\n h: normalizeHue(lch.h),\n alpha: clamp(lch.alpha, 0, 1),\n colorSpace: 'lch',\n});\n\nexport const rgbToLchRaw = (rgb: RgbColor): LchColor => {\n const lab = rgbToLab(rgb);\n const c = Math.sqrt(lab.a ** 2 + lab.b ** 2);\n const h = (Math.atan2(lab.b, lab.a) / Math.PI) * 180;\n return {\n l: lab.l,\n c,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : h < 0 ? h + 360 : h,\n alpha: lab.alpha,\n colorSpace: 'lch',\n };\n};\n\nexport const rgbToLch = (rgb: RgbColor): LchColor => {\n const { l, c, h, alpha } = rgbToLchRaw(rgb);\n const cR = round(c, 2);\n return { l, c: cR, h: cR < 0.0015 ? 0 : round(h, 2), alpha, colorSpace: 'lch' };\n};\n\nexport const lchToRgb = ({ l, c, h, alpha }: LchColor): RgbColor =>\n labToRgb({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n colorSpace: 'lab',\n });\n\n/** Unclamped LCH → gamma sRGB. Mirrors lchToRgb but preserves out-of-gamut channels. */\nconst lchToRgbUnclamped = ({ l, c, h, alpha }: LchColor): RgbColor =>\n labToRgbUnclamped({\n l,\n a: c * Math.cos((h * Math.PI) / 180),\n b: c * Math.sin((h * Math.PI) / 180),\n alpha,\n colorSpace: 'lab',\n });\n\nexport const parseLchObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\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 return lchToRgbUnclamped(\n clampLch({\n l: sanitize(l),\n c: sanitize(c),\n h: sanitize(h),\n alpha: sanitize(alpha),\n })\n );\n};\n\n// CSS Color 4: lch(L C H / alpha). L: 100%=100. C: 100%=150. H: number|angle|none.\nconst LCH_RE = new RegExp(\n `^lch\\\\(\\\\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 parseLchString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = LCH_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const l = parseNum(g.l!); // 100% = 100\n const c = g.cp ? parseNum(g.c!) * 1.5 : parseNum(g.c!); // 100% = 150\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 lchToRgbUnclamped(clampLch({ l, c, h, alpha }));\n};\n","import { parseLchObject, parseLchString, rgbToLchRaw } from '../colorModels/lch.js';\nimport type { Plugin } from '../colordx.js';\nimport { round } from '../helpers.js';\nimport type { LchColor } from '../types.js';\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toLch(precision?: number): LchColor;\n toLchString(precision?: number): string;\n }\n}\n\nconst lch: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.prototype.toLch = function (precision = 2) {\n const { l, c, h, alpha } = rgbToLchRaw(this._rawRgb());\n const cR = round(c, precision);\n return {\n l: round(l, precision),\n c: cR,\n // Achromatic threshold on LCH scale (0–~150): below this chroma the hue is numerically unstable.\n h: c < 0.0015 ? 0 : round(h, precision),\n alpha,\n colorSpace: 'lch' as const,\n };\n };\n ColordxClass.prototype.toLchString = function (precision = 2) {\n const { l, c, h, alpha } = this.toLch(precision);\n const H = c === 0 ? 'none' : h;\n return alpha < 1 ? `lch(${l} ${c} ${H} / ${alpha})` : `lch(${l} ${c} ${H})`;\n };\n parsers.push(parseLchObject, parseLchString);\n formatParsers.push([parseLchObject, 'lch'], [parseLchString, 'lch']);\n};\n\nexport default lch;\n"]}

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

'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkUU6FAFFW_cjs=require('../chunk-UU6FAFFW.cjs'),chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-FZP4XDSG.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var I=.8224619687,$=.1775380313,F=.0331941989,B=.9668058011,O=.0170826307,v=.0723974407,j=.9105199286,K=1.2249401762805598,q=-0.22494017628055996,H=-0.04205695470968816,J=1.042056954709688,Q=-0.019637554590334432,V=-0.07863604555063189,W=1.0982736001409663,M=(r,n,o,e)=>{r[0]=I*n+$*o,r[1]=F*n+B*o,r[2]=O*n+v*o+j*e;},g=(r,n,o)=>[I*r+$*n,F*r+B*n,O*r+v*n+j*o];var T=(r,n,o)=>[K*r+q*n,H*r+J*n,Q*r+V*n+W*o],N=({r,g:n,b:o,alpha:e})=>{let[b,a,m]=g(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(n/255),chunkX5FCFNQN_cjs.a(o/255));return {r:chunkX5FCFNQN_cjs.b(b),g:chunkX5FCFNQN_cjs.b(a),b:chunkX5FCFNQN_cjs.b(m),alpha:e,colorSpace:"display-p3"}};var E=({r,g:n,b:o,alpha:e})=>{let[b,a,m]=T(chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n),chunkX5FCFNQN_cjs.a(o));return {r:chunkX5FCFNQN_cjs.b(b)*255,g:chunkX5FCFNQN_cjs.b(a)*255,b:chunkX5FCFNQN_cjs.b(m)*255,alpha:e}},S=r=>{if(!chunkYISEJCI6_cjs.h(r)||r.colorSpace!=="display-p3"||!chunkYISEJCI6_cjs.i(r,["r","g","b"]))return null;let{r:n,g:o,b:e,alpha:b=1}=r;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(e)||!chunkYISEJCI6_cjs.f(b)?null:E({r:chunkYISEJCI6_cjs.g(n),g:chunkYISEJCI6_cjs.g(o),b:chunkYISEJCI6_cjs.g(e),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(b),0,1)})},X=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"),y=r=>{if(typeof r!="string")return null;let n=X.exec(r.trim())?.groups;if(!n)return null;let o=n.rp?chunkYISEJCI6_cjs.l(n.r)/100:chunkYISEJCI6_cjs.l(n.r),e=n.gp?chunkYISEJCI6_cjs.l(n.g)/100:chunkYISEJCI6_cjs.l(n.g),b=n.bp?chunkYISEJCI6_cjs.l(n.b)/100:chunkYISEJCI6_cjs.l(n.b),a=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return E({r:o,g:e,b,alpha:chunkYISEJCI6_cjs.a(a,0,1)})},R=(r,n,o)=>g(...chunkGXECYURS_cjs.f(r,n,o));var Y=(r,n,o)=>chunkGXECYURS_cjs.a(...T(r,n,o)),D=(r,n,o)=>{let[e,b,a]=g(r,n,o);return [chunkX5FCFNQN_cjs.b(e),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(a)]},U=(r,n,o,e)=>{M(r,n,o,e),r[0]=chunkX5FCFNQN_cjs.b(r[0]),r[1]=chunkX5FCFNQN_cjs.b(r[1]),r[2]=chunkX5FCFNQN_cjs.b(r[2]);},ir=(r,n,o)=>D(...chunkUU6FAFFW_cjs.e(r,n,o)),Pr=(r,n,o,e)=>{chunkUU6FAFFW_cjs.f(r,n,o,e),U(r,r[0],r[1],r[2]);},z=Math.PI/180,Z=(r,n,o)=>D(...chunkUU6FAFFW_cjs.m(r,n,o)),rr=(r,n,o,e)=>{chunkUU6FAFFW_cjs.n(r,n,o,e),U(r,r[0],r[1],r[2]);},gr=(r,n,o)=>{let e=o*z;return Z(r,n*Math.cos(e),n*Math.sin(e))},hr=(r,n,o,e)=>{let b=e*z;rr(r,n,o*Math.cos(b),o*Math.sin(b));},Tr=r=>chunkUU6FAFFW_cjs.c(r,R),nr=(r,n,o)=>{r.toGamutP3=e=>{let b=chunkUU6FAFFW_cjs.d(e,R,Y);return b!==null?r._makeFromOklab(b):new r(e)},r.prototype.toP3=function(e=4){let{r:b,g:a,b:m,alpha:P}=N(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(b,e),g:chunkYISEJCI6_cjs.b(a,e),b:chunkYISEJCI6_cjs.b(m,e),alpha:P,colorSpace:"display-p3"}},r.prototype.toP3String=function(e=4){let{r:b,g:a,b:m,alpha:P}=this.toP3(e);return P<1?`color(display-p3 ${b} ${a} ${m} / ${P})`:`color(display-p3 ${b} ${a} ${m})`},n.push(y,S),o.push([y,"p3"],[S,"p3"]);},Sr=nr;exports.default=Sr;exports.inGamutP3=Tr;exports.labToP3Channels=Z;exports.labToP3ChannelsInto=rr;exports.lchToP3Channels=gr;exports.lchToP3ChannelsInto=hr;exports.linearToP3Channels=D;exports.linearToP3ChannelsInto=U;exports.oklchToP3Channels=ir;exports.oklchToP3ChannelsInto=Pr;//# sourceMappingURL=p3.cjs.map
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkB3CQY27M_cjs=require('../chunk-B3CQY27M.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 S=(r,o,e)=>chunkGXECYURS_cjs.a(...chunkB3CQY27M_cjs.c(r,o,e)),A=(r,o,e)=>{let[n,m,b]=chunkB3CQY27M_cjs.b(r,o,e);return [chunkX5FCFNQN_cjs.b(n),chunkX5FCFNQN_cjs.b(m),chunkX5FCFNQN_cjs.b(b)]},k=(r,o,e,n)=>{chunkB3CQY27M_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]);},w=(r,o,e)=>A(...chunkB3CQY27M_cjs.s(r,o,e)),D=(r,o,e,n)=>{chunkB3CQY27M_cjs.t(r,o,e,n),k(r,r[0],r[1],r[2]);},I=Math.PI/180,F=(r,o,e)=>A(...chunkB3CQY27M_cjs.A(r,o,e)),$=(r,o,e,n)=>{chunkB3CQY27M_cjs.B(r,o,e,n),k(r,r[0],r[1],r[2]);},E=(r,o,e)=>{let n=e*I;return F(r,o*Math.cos(n),o*Math.sin(n))},q=(r,o,e,n)=>{let m=n*I;$(r,o,e*Math.cos(m),e*Math.sin(m));},z=r=>chunkB3CQY27M_cjs.q(r,chunkB3CQY27M_cjs.g),G=(r,o,e)=>{r.toGamutP3=n=>{let m=chunkB3CQY27M_cjs.r(n,chunkB3CQY27M_cjs.g,S);return m!==null?r._makeFromOklab(m):new r(n)},r.prototype.toP3=function(n=4){let{r:m,g:b,b:a,alpha:u}=chunkB3CQY27M_cjs.d(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(m,n),g:chunkYISEJCI6_cjs.b(b,n),b:chunkYISEJCI6_cjs.b(a,n),alpha:u,colorSpace:"display-p3"}},r.prototype.toP3String=function(n=4){let{r:m,g:b,b:a,alpha:u}=this.toP3(n);return u<1?`color(display-p3 ${m} ${b} ${a} / ${u})`:`color(display-p3 ${m} ${b} ${a})`},o.push(chunkB3CQY27M_cjs.f,chunkB3CQY27M_cjs.e),e.push([chunkB3CQY27M_cjs.f,"p3"],[chunkB3CQY27M_cjs.e,"p3"]);},B=G;exports.default=B;exports.inGamutP3=z;exports.labToP3Channels=F;exports.labToP3ChannelsInto=$;exports.lchToP3Channels=E;exports.lchToP3ChannelsInto=q;exports.linearToP3Channels=A;exports.linearToP3ChannelsInto=k;exports.oklchToP3Channels=w;exports.oklchToP3ChannelsInto=D;//# sourceMappingURL=p3.cjs.map
//# sourceMappingURL=p3.cjs.map

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

{"version":3,"sources":["../../src/colorModels/p3.ts","../../src/plugins/p3.ts"],"names":["SP3_RR","SP3_RG","SP3_GR","SP3_GG","SP3_BR","SP3_BG","SP3_BB","P3S_RR","P3S_RG","P3S_GR","P3S_GG","P3S_BR","P3S_BG","P3S_BB","srgbLinearToP3LinearInto","out","r","g","b","srgbLinearToP3Linear","linearP3ToSrgb","rgbToP3Raw","alpha","p3r","p3g","p3b","srgbToLinear","srgbFromLinear","p3ToRgbUnclamped","sr","sg","sb","parseP3Object","input","isObject","hasKeys","isAnyNumber","sanitize","clamp","P3_RE","NUM_OR_NONE","parseP3String","parseNum","gc","oklabToLinearP3","l","a","oklabToLinear","p3FromLinear","linearSrgbToOklab","linearToP3Channels","lr","lg","lb","linearToP3ChannelsInto","oklchToP3Channels","c","h","oklchToLinear","oklchToP3ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToP3Channels","labToLinearSrgb","labToP3ChannelsInto","labToLinearSrgbInto","lchToP3Channels","hRad","lchToP3ChannelsInto","inGamutP3","inGamutCustom","p3","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","round","p3_default"],"mappings":"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","file":"p3.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { P3Color, RgbColor } from '../types.js';\nimport { oklabToLinear, oklabToLinearInto } from './oklab.js';\nimport { clampRgb } from './rgb.js';\n\n// Linear sRGB ↔ Linear Display-P3 (D65, CSS Color 4). The forward matrix has zero\n// blue-output coefficients on the r/g rows — correct per spec, not a bug.\n// Shared between the allocating and *Into variants.\nconst SP3_RR = 0.8224619687,\n SP3_RG = 0.1775380313;\nconst SP3_GR = 0.0331941989,\n SP3_GG = 0.9668058011;\nconst SP3_BR = 0.0170826307,\n SP3_BG = 0.0723974407,\n SP3_BB = 0.9105199286;\nconst P3S_RR = 1.2249401762805598,\n P3S_RG = -0.22494017628055996;\nconst P3S_GR = -0.042056954709688163,\n P3S_GG = 1.0420569547096881;\nconst P3S_BR = -0.019637554590334432,\n P3S_BG = -0.078636045550631889,\n P3S_BB = 1.0982736001409663;\n\n/** Zero-allocation sibling of srgbLinearToP3Linear — writes into `out`. Safe when out === input arg. */\nexport const srgbLinearToP3LinearInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = SP3_RR * r + SP3_RG * g;\n out[1] = SP3_GR * r + SP3_GG * g;\n out[2] = SP3_BR * r + SP3_BG * g + SP3_BB * b;\n};\n\nexport const srgbLinearToP3Linear = (r: number, g: number, b: number): [number, number, number] => [\n SP3_RR * r + SP3_RG * g,\n SP3_GR * r + SP3_GG * g,\n SP3_BR * r + SP3_BG * g + SP3_BB * b,\n];\n\n/** Zero-allocation sibling of linearP3ToSrgb — writes into `out`. */\nexport const linearP3ToSrgbInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = P3S_RR * r + P3S_RG * g;\n out[1] = P3S_GR * r + P3S_GG * g;\n out[2] = P3S_BR * r + P3S_BG * g + P3S_BB * b;\n};\n\nexport const linearP3ToSrgb = (r: number, g: number, b: number): [number, number, number] => [\n P3S_RR * r + P3S_RG * g,\n P3S_GR * r + P3S_GG * g,\n P3S_BR * r + P3S_BG * g + P3S_BB * b,\n];\n\n// No clamping on output: P3 is wide-gamut, sRGB values can legitimately sit outside [0,1] in P3 space.\n// p3ToRgb clips back to sRGB gamut on the way out.\nexport const rgbToP3Raw = ({ r, g, b, alpha }: RgbColor): P3Color => {\n const [p3r, p3g, p3b] = srgbLinearToP3Linear(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return {\n r: srgbFromLinear(p3r),\n g: srgbFromLinear(p3g),\n b: srgbFromLinear(p3b),\n alpha,\n colorSpace: 'display-p3',\n };\n};\n\nexport const rgbToP3 = (rgb: RgbColor): P3Color => {\n const { r, g, b, alpha } = rgbToP3Raw(rgb);\n return { r: round(r, 4), g: round(g, 4), b: round(b, 4), alpha, colorSpace: 'display-p3' };\n};\n\nexport const p3ToRgb = ({ r, g, b, alpha }: P3Color): RgbColor => {\n const [sr, sg, sb] = linearP3ToSrgb(srgbToLinear(r), srgbToLinear(g), srgbToLinear(b));\n return clampRgb({\n r: srgbFromLinear(clamp(sr, 0, 1)) * 255,\n g: srgbFromLinear(clamp(sg, 0, 1)) * 255,\n b: srgbFromLinear(clamp(sb, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Unclamped P3 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst p3ToRgbUnclamped = ({ r, g, b, alpha }: P3Color): RgbColor => {\n const [sr, sg, sb] = linearP3ToSrgb(srgbToLinear(r), srgbToLinear(g), srgbToLinear(b));\n return {\n r: srgbFromLinear(sr) * 255,\n g: srgbFromLinear(sg) * 255,\n b: srgbFromLinear(sb) * 255,\n alpha,\n };\n};\n\nexport const parseP3Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'display-p3') return null;\n if (!hasKeys(input, ['r', 'g', 'b'])) return null;\n const { r, g, b, alpha = 1 } = input as { r: unknown; g: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(r) || !isAnyNumber(g) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return p3ToRgbUnclamped({\n r: sanitize(r),\n g: sanitize(g),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'display-p3',\n });\n};\n\n// CSS Color 4: color(display-p3 r g b / alpha). Channels accept number|percentage|none; 100% = 1.\nconst P3_RE = new RegExp(\n `^color\\\\(\\\\s*display-p3\\\\s+(?<r>${NUM_OR_NONE})(?<rp>%?)\\\\s+(?<g>${NUM_OR_NONE})(?<gp>%?)` +\n `\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseP3String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = P3_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const r = g.rp ? parseNum(g.r!) / 100 : parseNum(g.r!);\n const gc = g.gp ? parseNum(g.g!) / 100 : parseNum(g.g!);\n const b = g.bp ? parseNum(g.b!) / 100 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return p3ToRgbUnclamped({\n r,\n g: gc,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'display-p3',\n });\n};\n\n/** Unclamped linear Display-P3 channels from OKLab values. */\nexport const oklabToLinearP3 = (l: number, a: number, b: number): [number, number, number] =>\n srgbLinearToP3Linear(...oklabToLinear(l, a, b));\n\n/** Zero-allocation sibling of oklabToLinearP3 — writes [pr, pg, pb] into `out`. */\nexport const oklabToLinearP3Into = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n oklabToLinearInto(out, l, a, b);\n srgbLinearToP3LinearInto(out, out[0]!, out[1]!, out[2]!);\n};\n","import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearP3ToSrgb,\n oklabToLinearP3,\n parseP3Object,\n parseP3String,\n rgbToP3Raw,\n srgbLinearToP3Linear,\n srgbLinearToP3LinearInto,\n} from '../colorModels/p3.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { srgbFromLinear } from '../transfer.js';\nimport type { AnyColor, P3Color } from '../types.js';\n\nconst p3FromLinear = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearP3ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toP3(precision?: number): P3Color;\n toP3String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutP3(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Display-P3 channels.\n * This is the cheap step — only a matrix multiply + gamma encoding, no cbrt.\n * Pair with oklchToLinear to convert one OKLCH color to multiple spaces without\n * repeating the expensive OKLab pipeline.\n */\nexport const linearToP3Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToP3Linear(lr, lg, lb);\n return [srgbFromLinear(r), srgbFromLinear(g), srgbFromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToP3Channels — writes [pr, pg, pb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToP3ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToP3LinearInto(out, lr, lg, lb);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the sRGB transfer function (P3 does not use DCI-P3 gamma 2.6).\n */\nexport const oklchToP3Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToP3Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const oklchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear P3 → gamma P3.\n */\nexport const labToP3Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToP3Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const labToP3ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma P3. Out-of-gamut channels may exceed [0, 1].\n */\nexport const lchToP3Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToP3Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const lchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToP3ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Display-P3 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ P3).\n */\nexport const inGamutP3 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearP3);\n\nconst p3: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutP3 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearP3, p3FromLinear);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toP3 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToP3Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'display-p3' as const,\n };\n };\n ColordxClass.prototype.toP3String = function (precision = 4) {\n const { r, g, b, alpha } = this.toP3(precision);\n return alpha < 1 ? `color(display-p3 ${r} ${g} ${b} / ${alpha})` : `color(display-p3 ${r} ${g} ${b})`;\n };\n parsers.push(parseP3String, parseP3Object);\n formatParsers.push([parseP3String, 'p3'], [parseP3Object, 'p3']);\n};\n\nexport default p3;\n"]}
{"version":3,"sources":["../../src/plugins/p3.ts"],"names":["p3FromLinear","g","b","linearSrgbToOklab","linearP3ToSrgb","linearToP3Channels","lr","lg","lb","r","srgbLinearToP3Linear","srgbFromLinear","linearToP3ChannelsInto","out","srgbLinearToP3LinearInto","oklchToP3Channels","l","c","h","oklchToLinear","oklchToP3ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToP3Channels","a","labToLinearSrgb","labToP3ChannelsInto","labToLinearSrgbInto","lchToP3Channels","hRad","lchToP3ChannelsInto","inGamutP3","input","inGamutCustom","oklabToLinearP3","p3","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","alpha","rgbToP3Raw","round","parseP3String","parseP3Object","p3_default"],"mappings":"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","file":"p3.cjs","sourcesContent":["import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearP3ToSrgb,\n oklabToLinearP3,\n parseP3Object,\n parseP3String,\n rgbToP3Raw,\n srgbLinearToP3Linear,\n srgbLinearToP3LinearInto,\n} from '../colorModels/p3.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { srgbFromLinear } from '../transfer.js';\nimport type { AnyColor, P3Color } from '../types.js';\n\nconst p3FromLinear = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearP3ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toP3(precision?: number): P3Color;\n toP3String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutP3(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Display-P3 channels.\n * This is the cheap step — only a matrix multiply + gamma encoding, no cbrt.\n * Pair with oklchToLinear to convert one OKLCH color to multiple spaces without\n * repeating the expensive OKLab pipeline.\n */\nexport const linearToP3Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToP3Linear(lr, lg, lb);\n return [srgbFromLinear(r), srgbFromLinear(g), srgbFromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToP3Channels — writes [pr, pg, pb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToP3ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToP3LinearInto(out, lr, lg, lb);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the sRGB transfer function (P3 does not use DCI-P3 gamma 2.6).\n */\nexport const oklchToP3Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToP3Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const oklchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear P3 → gamma P3.\n */\nexport const labToP3Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToP3Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const labToP3ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma P3. Out-of-gamut channels may exceed [0, 1].\n */\nexport const lchToP3Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToP3Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const lchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToP3ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Display-P3 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ P3).\n */\nexport const inGamutP3 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearP3);\n\nconst p3: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutP3 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearP3, p3FromLinear);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toP3 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToP3Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'display-p3' as const,\n };\n };\n ColordxClass.prototype.toP3String = function (precision = 4) {\n const { r, g, b, alpha } = this.toP3(precision);\n return alpha < 1 ? `color(display-p3 ${r} ${g} ${b} / ${alpha})` : `color(display-p3 ${r} ${g} ${b})`;\n };\n parsers.push(parseP3String, parseP3Object);\n formatParsers.push([parseP3String, 'p3'], [parseP3Object, 'p3']);\n};\n\nexport default p3;\n"]}

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

import {e,f,m,n,c,d}from'../chunk-FEPIYR27.mjs';import {f as f$1,a}from'../chunk-J6CH5YTL.mjs';import'../chunk-MOYQ3PQJ.mjs';import {b,a as a$1}from'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b as b$1,l,a as a$2,h,i,f as f$2,g as g$1,k}from'../chunk-IOXRZECH.mjs';var I=.8224619687,$=.1775380313,F=.0331941989,B=.9668058011,O=.0170826307,v=.0723974407,j=.9105199286,K=1.2249401762805598,q=-0.22494017628055996,H=-0.04205695470968816,J=1.042056954709688,Q=-0.019637554590334432,V=-0.07863604555063189,W=1.0982736001409663,M=(r,n,o,e)=>{r[0]=I*n+$*o,r[1]=F*n+B*o,r[2]=O*n+v*o+j*e;},g=(r,n,o)=>[I*r+$*n,F*r+B*n,O*r+v*n+j*o];var T=(r,n,o)=>[K*r+q*n,H*r+J*n,Q*r+V*n+W*o],N=({r,g:n,b:o,alpha:e})=>{let[b$1,a,m]=g(a$1(r/255),a$1(n/255),a$1(o/255));return {r:b(b$1),g:b(a),b:b(m),alpha:e,colorSpace:"display-p3"}};var E=({r,g:n,b:o,alpha:e})=>{let[b$1,a,m]=T(a$1(r),a$1(n),a$1(o));return {r:b(b$1)*255,g:b(a)*255,b:b(m)*255,alpha:e}},S=r=>{if(!h(r)||r.colorSpace!=="display-p3"||!i(r,["r","g","b"]))return null;let{r:n,g:o,b:e,alpha:b=1}=r;return !f$2(n)||!f$2(o)||!f$2(e)||!f$2(b)?null:E({r:g$1(n),g:g$1(o),b:g$1(e),alpha:a$2(g$1(b),0,1)})},X=new RegExp(`^color\\(\\s*display-p3\\s+(?<r>${k})(?<rp>%?)\\s+(?<g>${k})(?<gp>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),y=r=>{if(typeof r!="string")return null;let n=X.exec(r.trim())?.groups;if(!n)return null;let o=n.rp?l(n.r)/100:l(n.r),e=n.gp?l(n.g)/100:l(n.g),b=n.bp?l(n.b)/100:l(n.b),a=n.al===void 0?1:l(n.al)/(n.alp?100:1);return E({r:o,g:e,b,alpha:a$2(a,0,1)})},R=(r,n,o)=>g(...f$1(r,n,o));var Y=(r,n,o)=>a(...T(r,n,o)),D=(r,n,o)=>{let[e,b$1,a]=g(r,n,o);return [b(e),b(b$1),b(a)]},U=(r,n,o,e)=>{M(r,n,o,e),r[0]=b(r[0]),r[1]=b(r[1]),r[2]=b(r[2]);},ir=(r,n,o)=>D(...e(r,n,o)),Pr=(r,n,o,e)=>{f(r,n,o,e),U(r,r[0],r[1],r[2]);},z=Math.PI/180,Z=(r,n,o)=>D(...m(r,n,o)),rr=(r,n$1,o,e)=>{n(r,n$1,o,e),U(r,r[0],r[1],r[2]);},gr=(r,n,o)=>{let e=o*z;return Z(r,n*Math.cos(e),n*Math.sin(e))},hr=(r,n,o,e)=>{let b=e*z;rr(r,n,o*Math.cos(b),o*Math.sin(b));},Tr=r=>c(r,R),nr=(r,n,o)=>{r.toGamutP3=e=>{let b=d(e,R,Y);return b!==null?r._makeFromOklab(b):new r(e)},r.prototype.toP3=function(e=4){let{r:b,g:a,b:m,alpha:P}=N(this._rawRgb());return {r:b$1(b,e),g:b$1(a,e),b:b$1(m,e),alpha:P,colorSpace:"display-p3"}},r.prototype.toP3String=function(e=4){let{r:b,g:a,b:m,alpha:P}=this.toP3(e);return P<1?`color(display-p3 ${b} ${a} ${m} / ${P})`:`color(display-p3 ${b} ${a} ${m})`},n.push(y,S),o.push([y,"p3"],[S,"p3"]);},Sr=nr;export{Sr as default,Tr as inGamutP3,Z as labToP3Channels,rr as labToP3ChannelsInto,gr as lchToP3Channels,hr as lchToP3ChannelsInto,D as linearToP3Channels,U as linearToP3ChannelsInto,ir as oklchToP3Channels,Pr as oklchToP3ChannelsInto};//# sourceMappingURL=p3.mjs.map
import {b,a,s,t,A as A$1,B as B$1,q as q$1,g,r,d,f,e,c}from'../chunk-DIWXRMTC.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 S=(r,o,e)=>a$1(...c(r,o,e)),A=(r,o,e)=>{let[n,m,b$2]=b(r,o,e);return [b$1(n),b$1(m),b$1(b$2)]},k=(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]);},w=(r,o,e)=>A(...s(r,o,e)),D=(r,o,e,n)=>{t(r,o,e,n),k(r,r[0],r[1],r[2]);},I=Math.PI/180,F=(r,o,e)=>A(...A$1(r,o,e)),$=(r,o,e,n)=>{B$1(r,o,e,n),k(r,r[0],r[1],r[2]);},E=(r,o,e)=>{let n=e*I;return F(r,o*Math.cos(n),o*Math.sin(n))},q=(r,o,e,n)=>{let m=n*I;$(r,o,e*Math.cos(m),e*Math.sin(m));},z=r=>q$1(r,g),G=(r$1,o,e$1)=>{r$1.toGamutP3=n=>{let m=r(n,g,S);return m!==null?r$1._makeFromOklab(m):new r$1(n)},r$1.prototype.toP3=function(n=4){let{r:m,g:b,b:a,alpha:u}=d(this._rawRgb());return {r:b$2(m,n),g:b$2(b,n),b:b$2(a,n),alpha:u,colorSpace:"display-p3"}},r$1.prototype.toP3String=function(n=4){let{r:m,g:b,b:a,alpha:u}=this.toP3(n);return u<1?`color(display-p3 ${m} ${b} ${a} / ${u})`:`color(display-p3 ${m} ${b} ${a})`},o.push(f,e),e$1.push([f,"p3"],[e,"p3"]);},B=G;export{B as default,z as inGamutP3,F as labToP3Channels,$ as labToP3ChannelsInto,E as lchToP3Channels,q as lchToP3ChannelsInto,A as linearToP3Channels,k as linearToP3ChannelsInto,w as oklchToP3Channels,D as oklchToP3ChannelsInto};//# sourceMappingURL=p3.mjs.map
//# sourceMappingURL=p3.mjs.map

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

{"version":3,"sources":["../../src/colorModels/p3.ts","../../src/plugins/p3.ts"],"names":["SP3_RR","SP3_RG","SP3_GR","SP3_GG","SP3_BR","SP3_BG","SP3_BB","P3S_RR","P3S_RG","P3S_GR","P3S_GG","P3S_BR","P3S_BG","P3S_BB","srgbLinearToP3LinearInto","out","r","g","b","srgbLinearToP3Linear","linearP3ToSrgb","rgbToP3Raw","alpha","p3r","p3g","p3b","srgbToLinear","srgbFromLinear","p3ToRgbUnclamped","sr","sg","sb","parseP3Object","input","isObject","hasKeys","isAnyNumber","sanitize","clamp","P3_RE","NUM_OR_NONE","parseP3String","parseNum","gc","oklabToLinearP3","l","a","oklabToLinear","p3FromLinear","linearSrgbToOklab","linearToP3Channels","lr","lg","lb","linearToP3ChannelsInto","oklchToP3Channels","c","h","oklchToLinear","oklchToP3ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToP3Channels","labToLinearSrgb","labToP3ChannelsInto","labToLinearSrgbInto","lchToP3Channels","hRad","lchToP3ChannelsInto","inGamutP3","inGamutCustom","p3","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","round","p3_default"],"mappings":"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","file":"p3.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { P3Color, RgbColor } from '../types.js';\nimport { oklabToLinear, oklabToLinearInto } from './oklab.js';\nimport { clampRgb } from './rgb.js';\n\n// Linear sRGB ↔ Linear Display-P3 (D65, CSS Color 4). The forward matrix has zero\n// blue-output coefficients on the r/g rows — correct per spec, not a bug.\n// Shared between the allocating and *Into variants.\nconst SP3_RR = 0.8224619687,\n SP3_RG = 0.1775380313;\nconst SP3_GR = 0.0331941989,\n SP3_GG = 0.9668058011;\nconst SP3_BR = 0.0170826307,\n SP3_BG = 0.0723974407,\n SP3_BB = 0.9105199286;\nconst P3S_RR = 1.2249401762805598,\n P3S_RG = -0.22494017628055996;\nconst P3S_GR = -0.042056954709688163,\n P3S_GG = 1.0420569547096881;\nconst P3S_BR = -0.019637554590334432,\n P3S_BG = -0.078636045550631889,\n P3S_BB = 1.0982736001409663;\n\n/** Zero-allocation sibling of srgbLinearToP3Linear — writes into `out`. Safe when out === input arg. */\nexport const srgbLinearToP3LinearInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = SP3_RR * r + SP3_RG * g;\n out[1] = SP3_GR * r + SP3_GG * g;\n out[2] = SP3_BR * r + SP3_BG * g + SP3_BB * b;\n};\n\nexport const srgbLinearToP3Linear = (r: number, g: number, b: number): [number, number, number] => [\n SP3_RR * r + SP3_RG * g,\n SP3_GR * r + SP3_GG * g,\n SP3_BR * r + SP3_BG * g + SP3_BB * b,\n];\n\n/** Zero-allocation sibling of linearP3ToSrgb — writes into `out`. */\nexport const linearP3ToSrgbInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = P3S_RR * r + P3S_RG * g;\n out[1] = P3S_GR * r + P3S_GG * g;\n out[2] = P3S_BR * r + P3S_BG * g + P3S_BB * b;\n};\n\nexport const linearP3ToSrgb = (r: number, g: number, b: number): [number, number, number] => [\n P3S_RR * r + P3S_RG * g,\n P3S_GR * r + P3S_GG * g,\n P3S_BR * r + P3S_BG * g + P3S_BB * b,\n];\n\n// No clamping on output: P3 is wide-gamut, sRGB values can legitimately sit outside [0,1] in P3 space.\n// p3ToRgb clips back to sRGB gamut on the way out.\nexport const rgbToP3Raw = ({ r, g, b, alpha }: RgbColor): P3Color => {\n const [p3r, p3g, p3b] = srgbLinearToP3Linear(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return {\n r: srgbFromLinear(p3r),\n g: srgbFromLinear(p3g),\n b: srgbFromLinear(p3b),\n alpha,\n colorSpace: 'display-p3',\n };\n};\n\nexport const rgbToP3 = (rgb: RgbColor): P3Color => {\n const { r, g, b, alpha } = rgbToP3Raw(rgb);\n return { r: round(r, 4), g: round(g, 4), b: round(b, 4), alpha, colorSpace: 'display-p3' };\n};\n\nexport const p3ToRgb = ({ r, g, b, alpha }: P3Color): RgbColor => {\n const [sr, sg, sb] = linearP3ToSrgb(srgbToLinear(r), srgbToLinear(g), srgbToLinear(b));\n return clampRgb({\n r: srgbFromLinear(clamp(sr, 0, 1)) * 255,\n g: srgbFromLinear(clamp(sg, 0, 1)) * 255,\n b: srgbFromLinear(clamp(sb, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Unclamped P3 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst p3ToRgbUnclamped = ({ r, g, b, alpha }: P3Color): RgbColor => {\n const [sr, sg, sb] = linearP3ToSrgb(srgbToLinear(r), srgbToLinear(g), srgbToLinear(b));\n return {\n r: srgbFromLinear(sr) * 255,\n g: srgbFromLinear(sg) * 255,\n b: srgbFromLinear(sb) * 255,\n alpha,\n };\n};\n\nexport const parseP3Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'display-p3') return null;\n if (!hasKeys(input, ['r', 'g', 'b'])) return null;\n const { r, g, b, alpha = 1 } = input as { r: unknown; g: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(r) || !isAnyNumber(g) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return p3ToRgbUnclamped({\n r: sanitize(r),\n g: sanitize(g),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'display-p3',\n });\n};\n\n// CSS Color 4: color(display-p3 r g b / alpha). Channels accept number|percentage|none; 100% = 1.\nconst P3_RE = new RegExp(\n `^color\\\\(\\\\s*display-p3\\\\s+(?<r>${NUM_OR_NONE})(?<rp>%?)\\\\s+(?<g>${NUM_OR_NONE})(?<gp>%?)` +\n `\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseP3String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = P3_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const r = g.rp ? parseNum(g.r!) / 100 : parseNum(g.r!);\n const gc = g.gp ? parseNum(g.g!) / 100 : parseNum(g.g!);\n const b = g.bp ? parseNum(g.b!) / 100 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return p3ToRgbUnclamped({\n r,\n g: gc,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'display-p3',\n });\n};\n\n/** Unclamped linear Display-P3 channels from OKLab values. */\nexport const oklabToLinearP3 = (l: number, a: number, b: number): [number, number, number] =>\n srgbLinearToP3Linear(...oklabToLinear(l, a, b));\n\n/** Zero-allocation sibling of oklabToLinearP3 — writes [pr, pg, pb] into `out`. */\nexport const oklabToLinearP3Into = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n oklabToLinearInto(out, l, a, b);\n srgbLinearToP3LinearInto(out, out[0]!, out[1]!, out[2]!);\n};\n","import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearP3ToSrgb,\n oklabToLinearP3,\n parseP3Object,\n parseP3String,\n rgbToP3Raw,\n srgbLinearToP3Linear,\n srgbLinearToP3LinearInto,\n} from '../colorModels/p3.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { srgbFromLinear } from '../transfer.js';\nimport type { AnyColor, P3Color } from '../types.js';\n\nconst p3FromLinear = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearP3ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toP3(precision?: number): P3Color;\n toP3String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutP3(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Display-P3 channels.\n * This is the cheap step — only a matrix multiply + gamma encoding, no cbrt.\n * Pair with oklchToLinear to convert one OKLCH color to multiple spaces without\n * repeating the expensive OKLab pipeline.\n */\nexport const linearToP3Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToP3Linear(lr, lg, lb);\n return [srgbFromLinear(r), srgbFromLinear(g), srgbFromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToP3Channels — writes [pr, pg, pb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToP3ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToP3LinearInto(out, lr, lg, lb);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the sRGB transfer function (P3 does not use DCI-P3 gamma 2.6).\n */\nexport const oklchToP3Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToP3Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const oklchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear P3 → gamma P3.\n */\nexport const labToP3Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToP3Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const labToP3ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma P3. Out-of-gamut channels may exceed [0, 1].\n */\nexport const lchToP3Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToP3Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const lchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToP3ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Display-P3 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ P3).\n */\nexport const inGamutP3 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearP3);\n\nconst p3: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutP3 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearP3, p3FromLinear);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toP3 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToP3Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'display-p3' as const,\n };\n };\n ColordxClass.prototype.toP3String = function (precision = 4) {\n const { r, g, b, alpha } = this.toP3(precision);\n return alpha < 1 ? `color(display-p3 ${r} ${g} ${b} / ${alpha})` : `color(display-p3 ${r} ${g} ${b})`;\n };\n parsers.push(parseP3String, parseP3Object);\n formatParsers.push([parseP3String, 'p3'], [parseP3Object, 'p3']);\n};\n\nexport default p3;\n"]}
{"version":3,"sources":["../../src/plugins/p3.ts"],"names":["p3FromLinear","g","b","linearSrgbToOklab","linearP3ToSrgb","linearToP3Channels","lr","lg","lb","r","srgbLinearToP3Linear","srgbFromLinear","linearToP3ChannelsInto","out","srgbLinearToP3LinearInto","oklchToP3Channels","l","c","h","oklchToLinear","oklchToP3ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToP3Channels","a","labToLinearSrgb","labToP3ChannelsInto","labToLinearSrgbInto","lchToP3Channels","hRad","lchToP3ChannelsInto","inGamutP3","input","inGamutCustom","oklabToLinearP3","p3","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","alpha","rgbToP3Raw","round","parseP3String","parseP3Object","p3_default"],"mappings":"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","file":"p3.mjs","sourcesContent":["import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearP3ToSrgb,\n oklabToLinearP3,\n parseP3Object,\n parseP3String,\n rgbToP3Raw,\n srgbLinearToP3Linear,\n srgbLinearToP3LinearInto,\n} from '../colorModels/p3.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { srgbFromLinear } from '../transfer.js';\nimport type { AnyColor, P3Color } from '../types.js';\n\nconst p3FromLinear = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearP3ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toP3(precision?: number): P3Color;\n toP3String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutP3(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Display-P3 channels.\n * This is the cheap step — only a matrix multiply + gamma encoding, no cbrt.\n * Pair with oklchToLinear to convert one OKLCH color to multiple spaces without\n * repeating the expensive OKLab pipeline.\n */\nexport const linearToP3Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToP3Linear(lr, lg, lb);\n return [srgbFromLinear(r), srgbFromLinear(g), srgbFromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToP3Channels — writes [pr, pg, pb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToP3ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToP3LinearInto(out, lr, lg, lb);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the sRGB transfer function (P3 does not use DCI-P3 gamma 2.6).\n */\nexport const oklchToP3Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToP3Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const oklchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear P3 → gamma P3.\n */\nexport const labToP3Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToP3Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const labToP3ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToP3ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Display-P3 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma P3. Out-of-gamut channels may exceed [0, 1].\n */\nexport const lchToP3Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToP3Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToP3Channels — writes [pr, pg, pb] into `out`. */\nexport const lchToP3ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToP3ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Display-P3 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ P3).\n */\nexport const inGamutP3 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearP3);\n\nconst p3: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutP3 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearP3, p3FromLinear);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toP3 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToP3Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'display-p3' as const,\n };\n };\n ColordxClass.prototype.toP3String = function (precision = 4) {\n const { r, g, b, alpha } = this.toP3(precision);\n return alpha < 1 ? `color(display-p3 ${r} ${g} ${b} / ${alpha})` : `color(display-p3 ${r} ${g} ${b})`;\n };\n parsers.push(parseP3String, parseP3Object);\n formatParsers.push([parseP3String, 'p3'], [parseP3Object, 'p3']);\n};\n\nexport default p3;\n"]}

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

'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkUU6FAFFW_cjs=require('../chunk-UU6FAFFW.cjs'),chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-FZP4XDSG.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var $=.6274038959,v=.3292830384,O=.0433130657,j=.0690972894,M=.9195403951,E=.0113623156,N=.0163914389,P=.0880133079,D=.8955952532,Q=1.6604910021084345,V=-0.5876411387885495,W=-0.07284986331988488,X=-0.12455047452159074,Y=1.1328998971259603,Z=-0.008349422604369477,rr=-0.018150763354905303,nr=-0.10057889800800739,er=1.1187296613629127,U=(r,n,e,o)=>{r[0]=$*n+v*e+O*o,r[1]=j*n+M*e+E*o,r[2]=N*n+P*e+D*o;},h=(r,n,e)=>[$*r+v*n+O*e,j*r+M*n+E*e,N*r+P*n+D*e];var f=(r,n,e)=>[Q*r+V*n+W*e,X*r+Y*n+Z*e,rr*r+nr*n+er*e],z=({r,g:n,b:e,alpha:o})=>{let[c,t,m]=h(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(n/255),chunkX5FCFNQN_cjs.a(e/255));return {r:chunkX5FCFNQN_cjs.d(c),g:chunkX5FCFNQN_cjs.d(t),b:chunkX5FCFNQN_cjs.d(m),alpha:o,colorSpace:"rec2020"}};var K=({r,g:n,b:e,alpha:o})=>{let[c,t,m]=f(chunkX5FCFNQN_cjs.c(r),chunkX5FCFNQN_cjs.c(n),chunkX5FCFNQN_cjs.c(e));return {r:chunkX5FCFNQN_cjs.b(c)*255,g:chunkX5FCFNQN_cjs.b(t)*255,b:chunkX5FCFNQN_cjs.b(m)*255,alpha:o}},C=r=>{if(!chunkYISEJCI6_cjs.h(r)||r.colorSpace!=="rec2020"||!chunkYISEJCI6_cjs.i(r,["r","g","b"]))return null;let{r:n,g:e,b:o,alpha:c=1}=r;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(e)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(c)?null:K({r:chunkYISEJCI6_cjs.g(n),g:chunkYISEJCI6_cjs.g(e),b:chunkYISEJCI6_cjs.g(o),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(c),0,1)})},or=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"),_=r=>{if(typeof r!="string")return null;let n=or.exec(r.trim())?.groups;if(!n)return null;let e=n.rp?chunkYISEJCI6_cjs.l(n.r)/100:chunkYISEJCI6_cjs.l(n.r),o=n.gp?chunkYISEJCI6_cjs.l(n.g)/100:chunkYISEJCI6_cjs.l(n.g),c=n.bp?chunkYISEJCI6_cjs.l(n.b)/100:chunkYISEJCI6_cjs.l(n.b),t=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return K({r:e,g:o,b:c,alpha:chunkYISEJCI6_cjs.a(t,0,1)})},x=(r,n,e)=>h(...chunkGXECYURS_cjs.f(r,n,e));var cr=(r,n,e)=>chunkGXECYURS_cjs.a(...f(r,n,e)),q=(r,n,e)=>{let[o,c,t]=h(r,n,e);return [chunkX5FCFNQN_cjs.d(o),chunkX5FCFNQN_cjs.d(c),chunkX5FCFNQN_cjs.d(t)]},H=(r,n,e,o)=>{U(r,n,e,o),r[0]=chunkX5FCFNQN_cjs.d(r[0]),r[1]=chunkX5FCFNQN_cjs.d(r[1]),r[2]=chunkX5FCFNQN_cjs.d(r[2]);},fr=(r,n,e)=>q(...chunkUU6FAFFW_cjs.e(r,n,e)),Cr=(r,n,e,o)=>{chunkUU6FAFFW_cjs.f(r,n,e,o),H(r,r[0],r[1],r[2]);},J=Math.PI/180,tr=(r,n,e)=>q(...chunkUU6FAFFW_cjs.m(r,n,e)),br=(r,n,e,o)=>{chunkUU6FAFFW_cjs.n(r,n,e,o),H(r,r[0],r[1],r[2]);},_r=(r,n,e)=>{let o=e*J;return tr(r,n*Math.cos(o),n*Math.sin(o))},xr=(r,n,e,o)=>{let c=o*J;br(r,n,e*Math.cos(c),e*Math.sin(c));},Lr=r=>chunkUU6FAFFW_cjs.c(r,x),mr=(r,n,e)=>{r.toGamutRec2020=o=>{let c=chunkUU6FAFFW_cjs.d(o,x,cr);return c!==null?r._makeFromOklab(c):new r(o)},r.prototype.toRec2020=function(o=4){let{r:c,g:t,b:m,alpha:p}=z(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(c,o),g:chunkYISEJCI6_cjs.b(t,o),b:chunkYISEJCI6_cjs.b(m,o),alpha:p,colorSpace:"rec2020"}},r.prototype.toRec2020String=function(o=4){let{r:c,g:t,b:m,alpha:p}=this.toRec2020(o);return p<1?`color(rec2020 ${c} ${t} ${m} / ${p})`:`color(rec2020 ${c} ${t} ${m})`},n.push(_,C),e.push([_,"rec2020"],[C,"rec2020"]);},yr=mr;exports.default=yr;exports.inGamutRec2020=Lr;exports.labToRec2020Channels=tr;exports.labToRec2020ChannelsInto=br;exports.lchToRec2020Channels=_r;exports.lchToRec2020ChannelsInto=xr;exports.linearToRec2020Channels=q;exports.linearToRec2020ChannelsInto=H;exports.oklchToRec2020Channels=fr;exports.oklchToRec2020ChannelsInto=Cr;//# sourceMappingURL=rec2020.cjs.map
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkB3CQY27M_cjs=require('../chunk-B3CQY27M.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 S=(r,n,o)=>chunkGXECYURS_cjs.a(...chunkB3CQY27M_cjs.j(r,n,o)),A=(r,n,o)=>{let[e,t,c]=chunkB3CQY27M_cjs.i(r,n,o);return [chunkX5FCFNQN_cjs.d(e),chunkX5FCFNQN_cjs.d(t),chunkX5FCFNQN_cjs.d(c)]},k=(r,n,o,e)=>{chunkB3CQY27M_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]);},P=(r,n,o)=>A(...chunkB3CQY27M_cjs.s(r,n,o)),D=(r,n,o,e)=>{chunkB3CQY27M_cjs.t(r,n,o,e),k(r,r[0],r[1],r[2]);},I=Math.PI/180,F=(r,n,o)=>A(...chunkB3CQY27M_cjs.A(r,n,o)),$=(r,n,o,e)=>{chunkB3CQY27M_cjs.B(r,n,o,e),k(r,r[0],r[1],r[2]);},E=(r,n,o)=>{let e=o*I;return F(r,n*Math.cos(e),n*Math.sin(e))},q=(r,n,o,e)=>{let t=e*I;$(r,n,o*Math.cos(t),o*Math.sin(t));},z=r=>chunkB3CQY27M_cjs.q(r,chunkB3CQY27M_cjs.n),G=(r,n,o)=>{r.toGamutRec2020=e=>{let t=chunkB3CQY27M_cjs.r(e,chunkB3CQY27M_cjs.n,S);return t!==null?r._makeFromOklab(t):new r(e)},r.prototype.toRec2020=function(e=4){let{r:t,g:c,b,alpha:a}=chunkB3CQY27M_cjs.k(this._rawRgb());return {r:chunkYISEJCI6_cjs.b(t,e),g:chunkYISEJCI6_cjs.b(c,e),b:chunkYISEJCI6_cjs.b(b,e),alpha:a,colorSpace:"rec2020"}},r.prototype.toRec2020String=function(e=4){let{r:t,g:c,b,alpha:a}=this.toRec2020(e);return a<1?`color(rec2020 ${t} ${c} ${b} / ${a})`:`color(rec2020 ${t} ${c} ${b})`},n.push(chunkB3CQY27M_cjs.m,chunkB3CQY27M_cjs.l),o.push([chunkB3CQY27M_cjs.m,"rec2020"],[chunkB3CQY27M_cjs.l,"rec2020"]);},B=G;exports.default=B;exports.inGamutRec2020=z;exports.labToRec2020Channels=F;exports.labToRec2020ChannelsInto=$;exports.lchToRec2020Channels=E;exports.lchToRec2020ChannelsInto=q;exports.linearToRec2020Channels=A;exports.linearToRec2020ChannelsInto=k;exports.oklchToRec2020Channels=P;exports.oklchToRec2020ChannelsInto=D;//# sourceMappingURL=rec2020.cjs.map
//# sourceMappingURL=rec2020.cjs.map

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

{"version":3,"sources":["../../src/colorModels/rec2020.ts","../../src/plugins/rec2020.ts"],"names":["SR2_RR","SR2_RG","SR2_RB","SR2_GR","SR2_GG","SR2_GB","SR2_BR","SR2_BG","SR2_BB","R2S_RR","R2S_RG","R2S_RB","R2S_GR","R2S_GG","R2S_GB","R2S_BR","R2S_BG","R2S_BB","srgbLinearToRec2020LinearInto","out","r","g","b","srgbLinearToRec2020Linear","linearRec2020ToSrgb","rgbToRec2020Raw","alpha","rr","rg","rb","srgbToLinear","rec2020FromLinear","rec2020ToRgbUnclamped","sr","sg","sb","rec2020ToLinear","srgbFromLinear","parseRec2020Object","input","isObject","hasKeys","isAnyNumber","sanitize","clamp","REC2020_RE","NUM_OR_NONE","parseRec2020String","parseNum","gc","oklabToLinearRec2020","l","a","oklabToLinear","rec2020FromLinearConverter","linearSrgbToOklab","linearToRec2020Channels","lr","lg","lb","linearToRec2020ChannelsInto","oklchToRec2020Channels","c","h","oklchToLinear","oklchToRec2020ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToRec2020Channels","labToLinearSrgb","labToRec2020ChannelsInto","labToLinearSrgbInto","lchToRec2020Channels","hRad","lchToRec2020ChannelsInto","inGamutRec2020","inGamutCustom","rec2020","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","round","rec2020_default"],"mappings":"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","file":"rec2020.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { rec2020FromLinear, rec2020ToLinear, srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { Rec2020Color, RgbColor } from '../types.js';\nimport { oklabToLinear, oklabToLinearInto } from './oklab.js';\nimport { clampRgb } from './rgb.js';\n\n// Linear sRGB ↔ Linear Rec.2020 (D65 via XYZ, CSS Color 4).\n// Shared between the allocating and *Into variants.\nconst SR2_RR = 0.6274038959,\n SR2_RG = 0.3292830384,\n SR2_RB = 0.0433130657;\nconst SR2_GR = 0.0690972894,\n SR2_GG = 0.9195403951,\n SR2_GB = 0.0113623156;\nconst SR2_BR = 0.0163914389,\n SR2_BG = 0.0880133079,\n SR2_BB = 0.8955952532;\nconst R2S_RR = 1.6604910021084345,\n R2S_RG = -0.58764113878854951,\n R2S_RB = -0.072849863319884883;\nconst R2S_GR = -0.12455047452159074,\n R2S_GG = 1.1328998971259603,\n R2S_GB = -0.0083494226043694768;\nconst R2S_BR = -0.018150763354905303,\n R2S_BG = -0.10057889800800739,\n R2S_BB = 1.1187296613629127;\n\n/** Zero-allocation sibling of srgbLinearToRec2020Linear — writes into `out`. */\nexport const srgbLinearToRec2020LinearInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = SR2_RR * r + SR2_RG * g + SR2_RB * b;\n out[1] = SR2_GR * r + SR2_GG * g + SR2_GB * b;\n out[2] = SR2_BR * r + SR2_BG * g + SR2_BB * b;\n};\n\nexport const srgbLinearToRec2020Linear = (r: number, g: number, b: number): [number, number, number] => [\n SR2_RR * r + SR2_RG * g + SR2_RB * b,\n SR2_GR * r + SR2_GG * g + SR2_GB * b,\n SR2_BR * r + SR2_BG * g + SR2_BB * b,\n];\n\n/** Zero-allocation sibling of linearRec2020ToSrgb — writes into `out`. */\nexport const linearRec2020ToSrgbInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = R2S_RR * r + R2S_RG * g + R2S_RB * b;\n out[1] = R2S_GR * r + R2S_GG * g + R2S_GB * b;\n out[2] = R2S_BR * r + R2S_BG * g + R2S_BB * b;\n};\n\nexport const linearRec2020ToSrgb = (r: number, g: number, b: number): [number, number, number] => [\n R2S_RR * r + R2S_RG * g + R2S_RB * b,\n R2S_GR * r + R2S_GG * g + R2S_GB * b,\n R2S_BR * r + R2S_BG * g + R2S_BB * b,\n];\n\nexport const rgbToRec2020Raw = ({ r, g, b, alpha }: RgbColor): Rec2020Color => {\n const [rr, rg, rb] = srgbLinearToRec2020Linear(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return {\n r: rec2020FromLinear(rr),\n g: rec2020FromLinear(rg),\n b: rec2020FromLinear(rb),\n alpha,\n colorSpace: 'rec2020',\n };\n};\n\nexport const rgbToRec2020 = (rgb: RgbColor): Rec2020Color => {\n const { r, g, b, alpha } = rgbToRec2020Raw(rgb);\n return { r: round(r, 4), g: round(g, 4), b: round(b, 4), alpha, colorSpace: 'rec2020' };\n};\n\nexport const rec2020ToRgb = ({ r, g, b, alpha }: Rec2020Color): RgbColor => {\n const [sr, sg, sb] = linearRec2020ToSrgb(rec2020ToLinear(r), rec2020ToLinear(g), rec2020ToLinear(b));\n return clampRgb({\n r: srgbFromLinear(clamp(sr, 0, 1)) * 255,\n g: srgbFromLinear(clamp(sg, 0, 1)) * 255,\n b: srgbFromLinear(clamp(sb, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Unclamped Rec.2020 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst rec2020ToRgbUnclamped = ({ r, g, b, alpha }: Rec2020Color): RgbColor => {\n const [sr, sg, sb] = linearRec2020ToSrgb(rec2020ToLinear(r), rec2020ToLinear(g), rec2020ToLinear(b));\n return {\n r: srgbFromLinear(sr) * 255,\n g: srgbFromLinear(sg) * 255,\n b: srgbFromLinear(sb) * 255,\n alpha,\n };\n};\n\nexport const parseRec2020Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'rec2020') return null;\n if (!hasKeys(input, ['r', 'g', 'b'])) return null;\n const { r, g, b, alpha = 1 } = input as { r: unknown; g: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(r) || !isAnyNumber(g) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return rec2020ToRgbUnclamped({\n r: sanitize(r),\n g: sanitize(g),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'rec2020',\n });\n};\n\n// CSS Color 4: color(rec2020 r g b / alpha). Channels accept number|percentage|none; 100% = 1.\nconst REC2020_RE = new RegExp(\n `^color\\\\(\\\\s*rec2020\\\\s+(?<r>${NUM_OR_NONE})(?<rp>%?)\\\\s+(?<g>${NUM_OR_NONE})(?<gp>%?)` +\n `\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseRec2020String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = REC2020_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const r = g.rp ? parseNum(g.r!) / 100 : parseNum(g.r!);\n const gc = g.gp ? parseNum(g.g!) / 100 : parseNum(g.g!);\n const b = g.bp ? parseNum(g.b!) / 100 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return rec2020ToRgbUnclamped({\n r,\n g: gc,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'rec2020',\n });\n};\n\n/** Unclamped linear Rec.2020 channels from OKLab values. */\nexport const oklabToLinearRec2020 = (l: number, a: number, b: number): [number, number, number] =>\n srgbLinearToRec2020Linear(...oklabToLinear(l, a, b));\n\n/** Zero-allocation sibling of oklabToLinearRec2020 — writes [rr, rg, rb] into `out`. */\nexport const oklabToLinearRec2020Into = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n oklabToLinearInto(out, l, a, b);\n srgbLinearToRec2020LinearInto(out, out[0]!, out[1]!, out[2]!);\n};\n","import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearRec2020ToSrgb,\n oklabToLinearRec2020,\n parseRec2020Object,\n parseRec2020String,\n rgbToRec2020Raw,\n srgbLinearToRec2020Linear,\n srgbLinearToRec2020LinearInto,\n} from '../colorModels/rec2020.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { rec2020FromLinear } from '../transfer.js';\nimport type { AnyColor, Rec2020Color } from '../types.js';\n\nconst rec2020FromLinearConverter = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearRec2020ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toRec2020(precision?: number): Rec2020Color;\n toRec2020String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutRec2020(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Rec.2020 channels.\n * This is the cheap step — only a matrix multiply + BT.2020 gamma, no cbrt.\n */\nexport const linearToRec2020Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToRec2020Linear(lr, lg, lb);\n return [rec2020FromLinear(r), rec2020FromLinear(g), rec2020FromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToRec2020Channels — writes [rr, rg, rb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToRec2020ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToRec2020LinearInto(out, lr, lg, lb);\n out[0] = rec2020FromLinear(out[0]!);\n out[1] = rec2020FromLinear(out[1]!);\n out[2] = rec2020FromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the BT.2020 transfer function (exponent 0.45, distinct from sRGB 1/2.4).\n */\nexport const oklchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToRec2020Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const oklchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors; out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear Rec.2020 → BT.2020 gamma.\n */\nexport const labToRec2020Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToRec2020Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const labToRec2020ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma Rec.2020.\n */\nexport const lchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToRec2020Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const lchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToRec2020ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Rec.2020 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ Rec.2020).\n */\nexport const inGamutRec2020 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearRec2020);\n\nconst rec2020: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutRec2020 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearRec2020, rec2020FromLinearConverter);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toRec2020 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToRec2020Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'rec2020' as const,\n };\n };\n ColordxClass.prototype.toRec2020String = function (precision = 4) {\n const { r, g, b, alpha } = this.toRec2020(precision);\n return alpha < 1 ? `color(rec2020 ${r} ${g} ${b} / ${alpha})` : `color(rec2020 ${r} ${g} ${b})`;\n };\n parsers.push(parseRec2020String, parseRec2020Object);\n formatParsers.push([parseRec2020String, 'rec2020'], [parseRec2020Object, 'rec2020']);\n};\n\nexport default rec2020;\n"]}
{"version":3,"sources":["../../src/plugins/rec2020.ts"],"names":["rec2020FromLinearConverter","g","b","linearSrgbToOklab","linearRec2020ToSrgb","linearToRec2020Channels","lr","lg","lb","r","srgbLinearToRec2020Linear","rec2020FromLinear","linearToRec2020ChannelsInto","out","srgbLinearToRec2020LinearInto","oklchToRec2020Channels","l","c","h","oklchToLinear","oklchToRec2020ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToRec2020Channels","a","labToLinearSrgb","labToRec2020ChannelsInto","labToLinearSrgbInto","lchToRec2020Channels","hRad","lchToRec2020ChannelsInto","inGamutRec2020","input","inGamutCustom","oklabToLinearRec2020","rec2020","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","alpha","rgbToRec2020Raw","round","parseRec2020String","parseRec2020Object","rec2020_default"],"mappings":"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","file":"rec2020.cjs","sourcesContent":["import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearRec2020ToSrgb,\n oklabToLinearRec2020,\n parseRec2020Object,\n parseRec2020String,\n rgbToRec2020Raw,\n srgbLinearToRec2020Linear,\n srgbLinearToRec2020LinearInto,\n} from '../colorModels/rec2020.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { rec2020FromLinear } from '../transfer.js';\nimport type { AnyColor, Rec2020Color } from '../types.js';\n\nconst rec2020FromLinearConverter = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearRec2020ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toRec2020(precision?: number): Rec2020Color;\n toRec2020String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutRec2020(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Rec.2020 channels.\n * This is the cheap step — only a matrix multiply + BT.2020 gamma, no cbrt.\n */\nexport const linearToRec2020Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToRec2020Linear(lr, lg, lb);\n return [rec2020FromLinear(r), rec2020FromLinear(g), rec2020FromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToRec2020Channels — writes [rr, rg, rb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToRec2020ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToRec2020LinearInto(out, lr, lg, lb);\n out[0] = rec2020FromLinear(out[0]!);\n out[1] = rec2020FromLinear(out[1]!);\n out[2] = rec2020FromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the BT.2020 transfer function (exponent 0.45, distinct from sRGB 1/2.4).\n */\nexport const oklchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToRec2020Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const oklchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors; out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear Rec.2020 → BT.2020 gamma.\n */\nexport const labToRec2020Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToRec2020Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const labToRec2020ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma Rec.2020.\n */\nexport const lchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToRec2020Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const lchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToRec2020ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Rec.2020 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ Rec.2020).\n */\nexport const inGamutRec2020 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearRec2020);\n\nconst rec2020: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutRec2020 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearRec2020, rec2020FromLinearConverter);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toRec2020 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToRec2020Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'rec2020' as const,\n };\n };\n ColordxClass.prototype.toRec2020String = function (precision = 4) {\n const { r, g, b, alpha } = this.toRec2020(precision);\n return alpha < 1 ? `color(rec2020 ${r} ${g} ${b} / ${alpha})` : `color(rec2020 ${r} ${g} ${b})`;\n };\n parsers.push(parseRec2020String, parseRec2020Object);\n formatParsers.push([parseRec2020String, 'rec2020'], [parseRec2020Object, 'rec2020']);\n};\n\nexport default rec2020;\n"]}

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

import {e,f as f$1,m,n,c,d as d$1}from'../chunk-FEPIYR27.mjs';import {f as f$2,a}from'../chunk-J6CH5YTL.mjs';import'../chunk-MOYQ3PQJ.mjs';import {d,a as a$1,c as c$1,b as b$1}from'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {b,l,a as a$2,h as h$1,i,f as f$3,g,k}from'../chunk-IOXRZECH.mjs';var $=.6274038959,v=.3292830384,O=.0433130657,j=.0690972894,M=.9195403951,E=.0113623156,N=.0163914389,P=.0880133079,D=.8955952532,Q=1.6604910021084345,V=-0.5876411387885495,W=-0.07284986331988488,X=-0.12455047452159074,Y=1.1328998971259603,Z=-0.008349422604369477,rr=-0.018150763354905303,nr=-0.10057889800800739,er=1.1187296613629127,U=(r,n,e,o)=>{r[0]=$*n+v*e+O*o,r[1]=j*n+M*e+E*o,r[2]=N*n+P*e+D*o;},h=(r,n,e)=>[$*r+v*n+O*e,j*r+M*n+E*e,N*r+P*n+D*e];var f=(r,n,e)=>[Q*r+V*n+W*e,X*r+Y*n+Z*e,rr*r+nr*n+er*e],z=({r,g:n,b:e,alpha:o})=>{let[c,t,m]=h(a$1(r/255),a$1(n/255),a$1(e/255));return {r:d(c),g:d(t),b:d(m),alpha:o,colorSpace:"rec2020"}};var K=({r,g:n,b:e,alpha:o})=>{let[c,t,m]=f(c$1(r),c$1(n),c$1(e));return {r:b$1(c)*255,g:b$1(t)*255,b:b$1(m)*255,alpha:o}},C=r=>{if(!h$1(r)||r.colorSpace!=="rec2020"||!i(r,["r","g","b"]))return null;let{r:n,g:e,b:o,alpha:c=1}=r;return !f$3(n)||!f$3(e)||!f$3(o)||!f$3(c)?null:K({r:g(n),g:g(e),b:g(o),alpha:a$2(g(c),0,1)})},or=new RegExp(`^color\\(\\s*rec2020\\s+(?<r>${k})(?<rp>%?)\\s+(?<g>${k})(?<gp>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),_=r=>{if(typeof r!="string")return null;let n=or.exec(r.trim())?.groups;if(!n)return null;let e=n.rp?l(n.r)/100:l(n.r),o=n.gp?l(n.g)/100:l(n.g),c=n.bp?l(n.b)/100:l(n.b),t=n.al===void 0?1:l(n.al)/(n.alp?100:1);return K({r:e,g:o,b:c,alpha:a$2(t,0,1)})},x=(r,n,e)=>h(...f$2(r,n,e));var cr=(r,n,e)=>a(...f(r,n,e)),q=(r,n,e)=>{let[o,c,t]=h(r,n,e);return [d(o),d(c),d(t)]},H=(r,n,e,o)=>{U(r,n,e,o),r[0]=d(r[0]),r[1]=d(r[1]),r[2]=d(r[2]);},fr=(r,n,e$1)=>q(...e(r,n,e$1)),Cr=(r,n,e,o)=>{f$1(r,n,e,o),H(r,r[0],r[1],r[2]);},J=Math.PI/180,tr=(r,n,e)=>q(...m(r,n,e)),br=(r,n$1,e,o)=>{n(r,n$1,e,o),H(r,r[0],r[1],r[2]);},_r=(r,n,e)=>{let o=e*J;return tr(r,n*Math.cos(o),n*Math.sin(o))},xr=(r,n,e,o)=>{let c=o*J;br(r,n,e*Math.cos(c),e*Math.sin(c));},Lr=r=>c(r,x),mr=(r,n,e)=>{r.toGamutRec2020=o=>{let c=d$1(o,x,cr);return c!==null?r._makeFromOklab(c):new r(o)},r.prototype.toRec2020=function(o=4){let{r:c,g:t,b:m,alpha:p}=z(this._rawRgb());return {r:b(c,o),g:b(t,o),b:b(m,o),alpha:p,colorSpace:"rec2020"}},r.prototype.toRec2020String=function(o=4){let{r:c,g:t,b:m,alpha:p}=this.toRec2020(o);return p<1?`color(rec2020 ${c} ${t} ${m} / ${p})`:`color(rec2020 ${c} ${t} ${m})`},n.push(_,C),e.push([_,"rec2020"],[C,"rec2020"]);},yr=mr;export{yr as default,Lr as inGamutRec2020,tr as labToRec2020Channels,br as labToRec2020ChannelsInto,_r as lchToRec2020Channels,xr as lchToRec2020ChannelsInto,q as linearToRec2020Channels,H as linearToRec2020ChannelsInto,fr as oklchToRec2020Channels,Cr as oklchToRec2020ChannelsInto};//# sourceMappingURL=rec2020.mjs.map
import {i,h,s,t,A as A$1,B as B$1,q as q$1,n,r,k as k$1,m,l,j}from'../chunk-DIWXRMTC.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 S=(r,n,o)=>a(...j(r,n,o)),A=(r,n,o)=>{let[e,t,c]=i(r,n,o);return [d(e),d(t),d(c)]},k=(r,n,o,e)=>{h(r,n,o,e),r[0]=d(r[0]),r[1]=d(r[1]),r[2]=d(r[2]);},P=(r,n,o)=>A(...s(r,n,o)),D=(r,n,o,e)=>{t(r,n,o,e),k(r,r[0],r[1],r[2]);},I=Math.PI/180,F=(r,n,o)=>A(...A$1(r,n,o)),$=(r,n,o,e)=>{B$1(r,n,o,e),k(r,r[0],r[1],r[2]);},E=(r,n,o)=>{let e=o*I;return F(r,n*Math.cos(e),n*Math.sin(e))},q=(r,n,o,e)=>{let t=e*I;$(r,n,o*Math.cos(t),o*Math.sin(t));},z=r=>q$1(r,n),G=(r$1,n$1,o)=>{r$1.toGamutRec2020=e=>{let t=r(e,n,S);return t!==null?r$1._makeFromOklab(t):new r$1(e)},r$1.prototype.toRec2020=function(e=4){let{r:t,g:c,b: b$1,alpha:a}=k$1(this._rawRgb());return {r:b(t,e),g:b(c,e),b:b(b$1,e),alpha:a,colorSpace:"rec2020"}},r$1.prototype.toRec2020String=function(e=4){let{r:t,g:c,b,alpha:a}=this.toRec2020(e);return a<1?`color(rec2020 ${t} ${c} ${b} / ${a})`:`color(rec2020 ${t} ${c} ${b})`},n$1.push(m,l),o.push([m,"rec2020"],[l,"rec2020"]);},B=G;export{B as default,z as inGamutRec2020,F as labToRec2020Channels,$ as labToRec2020ChannelsInto,E as lchToRec2020Channels,q as lchToRec2020ChannelsInto,A as linearToRec2020Channels,k as linearToRec2020ChannelsInto,P as oklchToRec2020Channels,D as oklchToRec2020ChannelsInto};//# sourceMappingURL=rec2020.mjs.map
//# sourceMappingURL=rec2020.mjs.map

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

{"version":3,"sources":["../../src/colorModels/rec2020.ts","../../src/plugins/rec2020.ts"],"names":["SR2_RR","SR2_RG","SR2_RB","SR2_GR","SR2_GG","SR2_GB","SR2_BR","SR2_BG","SR2_BB","R2S_RR","R2S_RG","R2S_RB","R2S_GR","R2S_GG","R2S_GB","R2S_BR","R2S_BG","R2S_BB","srgbLinearToRec2020LinearInto","out","r","g","b","srgbLinearToRec2020Linear","linearRec2020ToSrgb","rgbToRec2020Raw","alpha","rr","rg","rb","srgbToLinear","rec2020FromLinear","rec2020ToRgbUnclamped","sr","sg","sb","rec2020ToLinear","srgbFromLinear","parseRec2020Object","input","isObject","hasKeys","isAnyNumber","sanitize","clamp","REC2020_RE","NUM_OR_NONE","parseRec2020String","parseNum","gc","oklabToLinearRec2020","l","a","oklabToLinear","rec2020FromLinearConverter","linearSrgbToOklab","linearToRec2020Channels","lr","lg","lb","linearToRec2020ChannelsInto","oklchToRec2020Channels","c","h","oklchToLinear","oklchToRec2020ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToRec2020Channels","labToLinearSrgb","labToRec2020ChannelsInto","labToLinearSrgbInto","lchToRec2020Channels","hRad","lchToRec2020ChannelsInto","inGamutRec2020","inGamutCustom","rec2020","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","round","rec2020_default"],"mappings":"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","file":"rec2020.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, round, sanitize } from '../helpers.js';\nimport { rec2020FromLinear, rec2020ToLinear, srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { Rec2020Color, RgbColor } from '../types.js';\nimport { oklabToLinear, oklabToLinearInto } from './oklab.js';\nimport { clampRgb } from './rgb.js';\n\n// Linear sRGB ↔ Linear Rec.2020 (D65 via XYZ, CSS Color 4).\n// Shared between the allocating and *Into variants.\nconst SR2_RR = 0.6274038959,\n SR2_RG = 0.3292830384,\n SR2_RB = 0.0433130657;\nconst SR2_GR = 0.0690972894,\n SR2_GG = 0.9195403951,\n SR2_GB = 0.0113623156;\nconst SR2_BR = 0.0163914389,\n SR2_BG = 0.0880133079,\n SR2_BB = 0.8955952532;\nconst R2S_RR = 1.6604910021084345,\n R2S_RG = -0.58764113878854951,\n R2S_RB = -0.072849863319884883;\nconst R2S_GR = -0.12455047452159074,\n R2S_GG = 1.1328998971259603,\n R2S_GB = -0.0083494226043694768;\nconst R2S_BR = -0.018150763354905303,\n R2S_BG = -0.10057889800800739,\n R2S_BB = 1.1187296613629127;\n\n/** Zero-allocation sibling of srgbLinearToRec2020Linear — writes into `out`. */\nexport const srgbLinearToRec2020LinearInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = SR2_RR * r + SR2_RG * g + SR2_RB * b;\n out[1] = SR2_GR * r + SR2_GG * g + SR2_GB * b;\n out[2] = SR2_BR * r + SR2_BG * g + SR2_BB * b;\n};\n\nexport const srgbLinearToRec2020Linear = (r: number, g: number, b: number): [number, number, number] => [\n SR2_RR * r + SR2_RG * g + SR2_RB * b,\n SR2_GR * r + SR2_GG * g + SR2_GB * b,\n SR2_BR * r + SR2_BG * g + SR2_BB * b,\n];\n\n/** Zero-allocation sibling of linearRec2020ToSrgb — writes into `out`. */\nexport const linearRec2020ToSrgbInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = R2S_RR * r + R2S_RG * g + R2S_RB * b;\n out[1] = R2S_GR * r + R2S_GG * g + R2S_GB * b;\n out[2] = R2S_BR * r + R2S_BG * g + R2S_BB * b;\n};\n\nexport const linearRec2020ToSrgb = (r: number, g: number, b: number): [number, number, number] => [\n R2S_RR * r + R2S_RG * g + R2S_RB * b,\n R2S_GR * r + R2S_GG * g + R2S_GB * b,\n R2S_BR * r + R2S_BG * g + R2S_BB * b,\n];\n\nexport const rgbToRec2020Raw = ({ r, g, b, alpha }: RgbColor): Rec2020Color => {\n const [rr, rg, rb] = srgbLinearToRec2020Linear(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return {\n r: rec2020FromLinear(rr),\n g: rec2020FromLinear(rg),\n b: rec2020FromLinear(rb),\n alpha,\n colorSpace: 'rec2020',\n };\n};\n\nexport const rgbToRec2020 = (rgb: RgbColor): Rec2020Color => {\n const { r, g, b, alpha } = rgbToRec2020Raw(rgb);\n return { r: round(r, 4), g: round(g, 4), b: round(b, 4), alpha, colorSpace: 'rec2020' };\n};\n\nexport const rec2020ToRgb = ({ r, g, b, alpha }: Rec2020Color): RgbColor => {\n const [sr, sg, sb] = linearRec2020ToSrgb(rec2020ToLinear(r), rec2020ToLinear(g), rec2020ToLinear(b));\n return clampRgb({\n r: srgbFromLinear(clamp(sr, 0, 1)) * 255,\n g: srgbFromLinear(clamp(sg, 0, 1)) * 255,\n b: srgbFromLinear(clamp(sb, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Unclamped Rec.2020 → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nconst rec2020ToRgbUnclamped = ({ r, g, b, alpha }: Rec2020Color): RgbColor => {\n const [sr, sg, sb] = linearRec2020ToSrgb(rec2020ToLinear(r), rec2020ToLinear(g), rec2020ToLinear(b));\n return {\n r: srgbFromLinear(sr) * 255,\n g: srgbFromLinear(sg) * 255,\n b: srgbFromLinear(sb) * 255,\n alpha,\n };\n};\n\nexport const parseRec2020Object = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n if ((input as { colorSpace?: unknown }).colorSpace !== 'rec2020') return null;\n if (!hasKeys(input, ['r', 'g', 'b'])) return null;\n const { r, g, b, alpha = 1 } = input as { r: unknown; g: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(r) || !isAnyNumber(g) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n return rec2020ToRgbUnclamped({\n r: sanitize(r),\n g: sanitize(g),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n colorSpace: 'rec2020',\n });\n};\n\n// CSS Color 4: color(rec2020 r g b / alpha). Channels accept number|percentage|none; 100% = 1.\nconst REC2020_RE = new RegExp(\n `^color\\\\(\\\\s*rec2020\\\\s+(?<r>${NUM_OR_NONE})(?<rp>%?)\\\\s+(?<g>${NUM_OR_NONE})(?<gp>%?)` +\n `\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseRec2020String = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = REC2020_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const r = g.rp ? parseNum(g.r!) / 100 : parseNum(g.r!);\n const gc = g.gp ? parseNum(g.g!) / 100 : parseNum(g.g!);\n const b = g.bp ? parseNum(g.b!) / 100 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return rec2020ToRgbUnclamped({\n r,\n g: gc,\n b,\n alpha: clamp(alpha, 0, 1),\n colorSpace: 'rec2020',\n });\n};\n\n/** Unclamped linear Rec.2020 channels from OKLab values. */\nexport const oklabToLinearRec2020 = (l: number, a: number, b: number): [number, number, number] =>\n srgbLinearToRec2020Linear(...oklabToLinear(l, a, b));\n\n/** Zero-allocation sibling of oklabToLinearRec2020 — writes [rr, rg, rb] into `out`. */\nexport const oklabToLinearRec2020Into = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n oklabToLinearInto(out, l, a, b);\n srgbLinearToRec2020LinearInto(out, out[0]!, out[1]!, out[2]!);\n};\n","import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearRec2020ToSrgb,\n oklabToLinearRec2020,\n parseRec2020Object,\n parseRec2020String,\n rgbToRec2020Raw,\n srgbLinearToRec2020Linear,\n srgbLinearToRec2020LinearInto,\n} from '../colorModels/rec2020.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { rec2020FromLinear } from '../transfer.js';\nimport type { AnyColor, Rec2020Color } from '../types.js';\n\nconst rec2020FromLinearConverter = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearRec2020ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toRec2020(precision?: number): Rec2020Color;\n toRec2020String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutRec2020(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Rec.2020 channels.\n * This is the cheap step — only a matrix multiply + BT.2020 gamma, no cbrt.\n */\nexport const linearToRec2020Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToRec2020Linear(lr, lg, lb);\n return [rec2020FromLinear(r), rec2020FromLinear(g), rec2020FromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToRec2020Channels — writes [rr, rg, rb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToRec2020ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToRec2020LinearInto(out, lr, lg, lb);\n out[0] = rec2020FromLinear(out[0]!);\n out[1] = rec2020FromLinear(out[1]!);\n out[2] = rec2020FromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the BT.2020 transfer function (exponent 0.45, distinct from sRGB 1/2.4).\n */\nexport const oklchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToRec2020Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const oklchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors; out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear Rec.2020 → BT.2020 gamma.\n */\nexport const labToRec2020Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToRec2020Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const labToRec2020ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma Rec.2020.\n */\nexport const lchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToRec2020Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const lchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToRec2020ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Rec.2020 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ Rec.2020).\n */\nexport const inGamutRec2020 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearRec2020);\n\nconst rec2020: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutRec2020 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearRec2020, rec2020FromLinearConverter);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toRec2020 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToRec2020Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'rec2020' as const,\n };\n };\n ColordxClass.prototype.toRec2020String = function (precision = 4) {\n const { r, g, b, alpha } = this.toRec2020(precision);\n return alpha < 1 ? `color(rec2020 ${r} ${g} ${b} / ${alpha})` : `color(rec2020 ${r} ${g} ${b})`;\n };\n parsers.push(parseRec2020String, parseRec2020Object);\n formatParsers.push([parseRec2020String, 'rec2020'], [parseRec2020Object, 'rec2020']);\n};\n\nexport default rec2020;\n"]}
{"version":3,"sources":["../../src/plugins/rec2020.ts"],"names":["rec2020FromLinearConverter","g","b","linearSrgbToOklab","linearRec2020ToSrgb","linearToRec2020Channels","lr","lg","lb","r","srgbLinearToRec2020Linear","rec2020FromLinear","linearToRec2020ChannelsInto","out","srgbLinearToRec2020LinearInto","oklchToRec2020Channels","l","c","h","oklchToLinear","oklchToRec2020ChannelsInto","oklchToLinearInto","DEG_TO_RAD","labToRec2020Channels","a","labToLinearSrgb","labToRec2020ChannelsInto","labToLinearSrgbInto","lchToRec2020Channels","hRad","lchToRec2020ChannelsInto","inGamutRec2020","input","inGamutCustom","oklabToLinearRec2020","rec2020","ColordxClass","parsers","formatParsers","mapped","toGamutCustom","precision","alpha","rgbToRec2020Raw","round","parseRec2020String","parseRec2020Object","rec2020_default"],"mappings":"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","file":"rec2020.mjs","sourcesContent":["import { labToLinearSrgb, labToLinearSrgbInto, oklchToLinear, oklchToLinearInto } from '../channels.js';\nimport { linearSrgbToOklab } from '../colorModels/oklab.js';\nimport {\n linearRec2020ToSrgb,\n oklabToLinearRec2020,\n parseRec2020Object,\n parseRec2020String,\n rgbToRec2020Raw,\n srgbLinearToRec2020Linear,\n srgbLinearToRec2020LinearInto,\n} from '../colorModels/rec2020.js';\nimport type { Plugin } from '../colordx.js';\nimport { inGamutCustom, toGamutCustom } from '../gamut.js';\nimport { round } from '../helpers.js';\nimport { rec2020FromLinear } from '../transfer.js';\nimport type { AnyColor, Rec2020Color } from '../types.js';\n\nconst rec2020FromLinearConverter = (r: number, g: number, b: number): [number, number, number] =>\n linearSrgbToOklab(...linearRec2020ToSrgb(r, g, b));\n\ndeclare module '@colordx/core' {\n interface Colordx {\n toRec2020(precision?: number): Rec2020Color;\n toRec2020String(precision?: number): string;\n }\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Colordx {\n function toGamutRec2020(input: AnyColor): Colordx;\n }\n}\n\n/**\n * Convert linear sRGB channels (from oklchToLinear) to gamma-encoded Rec.2020 channels.\n * This is the cheap step — only a matrix multiply + BT.2020 gamma, no cbrt.\n */\nexport const linearToRec2020Channels = (lr: number, lg: number, lb: number): [number, number, number] => {\n const [r, g, b] = srgbLinearToRec2020Linear(lr, lg, lb);\n return [rec2020FromLinear(r), rec2020FromLinear(g), rec2020FromLinear(b)];\n};\n\n/** Zero-allocation sibling of linearToRec2020Channels — writes [rr, rg, rb] (gamma-encoded, 0–1) into `out`. */\nexport const linearToRec2020ChannelsInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n srgbLinearToRec2020LinearInto(out, lr, lg, lb);\n out[0] = rec2020FromLinear(out[0]!);\n out[1] = rec2020FromLinear(out[1]!);\n out[2] = rec2020FromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n * Uses the BT.2020 transfer function (exponent 0.45, distinct from sRGB 1/2.4).\n */\nexport const oklchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] =>\n linearToRec2020Channels(...oklchToLinear(l, c, h));\n\n/** Zero-allocation sibling of oklchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const oklchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert CIE Lab (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors; out-of-gamut channels may exceed [0, 1].\n * Goes Lab → XYZ D50 → linear sRGB → linear Rec.2020 → BT.2020 gamma.\n */\nexport const labToRec2020Channels = (l: number, a: number, b: number): [number, number, number] =>\n linearToRec2020Channels(...labToLinearSrgb(l, a, b));\n\n/** Zero-allocation sibling of labToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const labToRec2020ChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n linearToRec2020ChannelsInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * Convert CIE LCH (D50) to gamma-encoded Rec.2020 channels without object allocation.\n * Polar-to-rectangular to Lab, then Lab → gamma Rec.2020.\n */\nexport const lchToRec2020Channels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToRec2020Channels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToRec2020Channels — writes [rr, rg, rb] into `out`. */\nexport const lchToRec2020ChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToRec2020ChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Returns true if the color is within the Rec.2020 gamut.\n * sRGB inputs (hex, rgb, hsl, etc.) always return true (sRGB ⊂ Rec.2020).\n */\nexport const inGamutRec2020 = (input: AnyColor): boolean => inGamutCustom(input, oklabToLinearRec2020);\n\nconst rec2020: Plugin = (ColordxClass, parsers, formatParsers) => {\n ColordxClass.toGamutRec2020 = (input: AnyColor) => {\n const mapped = toGamutCustom(input, oklabToLinearRec2020, rec2020FromLinearConverter);\n return mapped !== null ? ColordxClass._makeFromOklab(mapped) : new ColordxClass(input);\n };\n ColordxClass.prototype.toRec2020 = function (precision = 4) {\n const { r, g, b, alpha } = rgbToRec2020Raw(this._rawRgb());\n return {\n r: round(r, precision),\n g: round(g, precision),\n b: round(b, precision),\n alpha,\n colorSpace: 'rec2020' as const,\n };\n };\n ColordxClass.prototype.toRec2020String = function (precision = 4) {\n const { r, g, b, alpha } = this.toRec2020(precision);\n return alpha < 1 ? `color(rec2020 ${r} ${g} ${b} / ${alpha})` : `color(rec2020 ${r} ${g} ${b})`;\n };\n parsers.push(parseRec2020String, parseRec2020Object);\n formatParsers.push([parseRec2020String, 'rec2020'], [parseRec2020Object, 'rec2020']);\n};\n\nexport default rec2020;\n"]}
{
"name": "@colordx/core",
"version": "5.4.0",
"version": "5.4.1",
"description": "A high-performance color library with extended support for modern color spaces including OKLCH, OKLAB, Display-P3, and more",

@@ -5,0 +5,0 @@ "author": "Dmitrii Kriaklin",

@@ -374,2 +374,17 @@ <p align="center">

Gamut checks and mapping accept wide-gamut inputs in every supported form — `oklab()` / `oklch()`, CIE `lab()` / `lch()` strings, and the corresponding object shapes (including branded `{ colorSpace: 'lab' | 'lch' }` objects):
```ts
// CIE LCH object — recognized as wide-gamut, not clamped at parse time
const lch = { l: 50, c: 100, h: 180, alpha: 1, colorSpace: 'lch' as const };
inGamutSrgb(lch); // false — outside sRGB
inGamutP3(lch); // false — outside P3
colordx(lch).toHex(); // '#009774' — naive clip
colordx(lch).mapSrgb().toHex(); // '#008471' — chroma-reduced (CSS Color 4)
// CIE Lab string works too
inGamutSrgb('lab(50 100 0)'); // false
Colordx.toGamutSrgb('lab(50 100 0)'); // → Colordx at the sRGB boundary
```
## Plugins

@@ -376,0 +391,0 @@

import {f,e,a as a$1}from'./chunk-J6CH5YTL.mjs';import {i,d,j as j$1,c,k as k$1}from'./chunk-MOYQ3PQJ.mjs';import {b,a}from'./chunk-FXCFKFXK.mjs';import {d as d$1,a as a$2}from'./chunk-IOXRZECH.mjs';var B=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,H=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,T=n=>{if(typeof n=="object"&&n!==null){let r=n;if("l"in r&&"a"in r&&"b"in r&&r.colorSpace!=="lab"&&!("c"in r)&&!("r"in r)){let e=n;if(typeof e.l=="number"&&typeof e.a=="number"&&typeof e.b=="number"&&typeof e.alpha=="number")return {l:e.l,a:e.a,b:e.b,alpha:e.alpha}}if("l"in r&&"c"in r&&"h"in r&&r.colorSpace!=="lch"&&!("a"in r)&&!("r"in r)){let e=n;if(typeof e.l=="number"&&typeof e.c=="number"&&typeof e.h=="number"){let o=e.h*Math.PI/180;return {l:e.l,a:e.c*Math.cos(o),b:e.c*Math.sin(o),alpha:e.alpha}}}if(r.colorSpace==="lab"){let e=n;if(typeof e.l!="number"||typeof e.a!="number"||typeof e.b!="number")return null;let{x:o,y:b,z:t}=k$1(e),[u,a,y]=d(o,b,t),[s,f,x]=a$1(u,a,y);return {l:s,a:f,b:x,alpha:typeof e.alpha=="number"?e.alpha:1}}return null}if(typeof n=="string"){let r=B.exec(n);if(r){let e=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$1[b]??1)*Math.PI/180,a=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:e,a:o*Math.cos(u),b:o*Math.sin(u),alpha:a}}if(r=H.exec(n),r){let e=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:e,a:o,b,alpha:t}}return null}return null},h=5e-4,q=(n,r,e)=>n>=-h&&n<=1+h&&r>=-h&&r<=1+h&&e>=-h&&e<=1+h,j=(n,r,e)=>n>=0&&n<=1&&r>=0&&r<=1&&e>=0&&e<=1,tr=n=>{let r=T(n);if(r===null)return true;let[e,o,b]=f(r.l,r.a,r.b);return q(e,o,b)},K=.02,J=1e-4,X=(n,r)=>{let e=n[0]-r[0],o=n[1]-r[1],b=n[2]-r[2];return Math.sqrt(e*e+o*o+b*b)},U=(n,r,e,o,b,t)=>{if(n>=1)return {l:1,a:0,b:0,alpha:o};if(n<=0)return {l:0,a:0,b:0,alpha:o};let[u,a,y]=b(n,r,e);if(j(u,a,y))return {l:n,a:r,b:e,alpha:o};let s=t(a$2(u,0,1),a$2(a,0,1),a$2(y,0,1));if(X(s,[n,r,e])<=K)return {l:s[0],a:s[1],b:s[2],alpha:o};let f=Math.atan2(e,r),x=Math.sqrt(r*r+e*e),g=0,M=x,S=true,L=s;for(;M-g>J;){let p=(g+M)/2,I=p*Math.cos(f),v=p*Math.sin(f),[F,N,G]=b(n,I,v);if(S&&j(F,N,G)){g=p;continue}let w=t(a$2(F,0,1),a$2(N,0,1),a$2(G,0,1));L=w,X(w,[n,I,v])<=K?(g=p,S=false):M=p;}return {l:L[0],a:L[1],b:L[2],alpha:o}},mr=n=>{let r=T(n);if(r===null)return null;let{l:e,a:o,b,alpha:t}=r;return U(e,o,b,t,f,a$1)},ur=(n,r)=>{let e=T(n);if(e===null)return true;let[o,b,t]=r(e.l,e.a,e.b);return q(o,b,t)},ar=(n,r,e)=>{let o=T(n);if(o===null)return null;let{l:b,a:t,b:u,alpha:a}=o;return U(b,t,u,a,r,e)};var l=Math.PI/180,V=(n,r,e)=>{let o=e*l;return f(n,r*Math.cos(o),r*Math.sin(o))},$=(n,r,e$1,o)=>{let b=o*l;e(n,r,e$1*Math.cos(b),e$1*Math.sin(b));},pr=(n,r,e)=>{let[o,b$1,t]=V(n,r,e);return [b(o),b(b$1),b(t)]},dr=(n,r,e,o)=>{$(n,r,e,o),n[0]=b(n[0]),n[1]=b(n[1]),n[2]=b(n[2]);},yr=(n,r,e)=>{let[o,b$1,t]=V(n,r,e);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},fr=(n,r,e,o,b$1)=>{$(n,e,o,b$1),r[0]=b(n[0]),r[1]=b(n[1]),r[2]=b(n[2]);},gr=(n,r,e)=>[a(n),a(r),a(e)],Lr=(n,r,e,o)=>{n[0]=a(r),n[1]=a(e),n[2]=a(o);},k=(n,r,e)=>{let[o,b,t]=i(n,r,e);return d(o,b,t)},R=(n,r,e,o)=>{j$1(n,r,e,o),c(n,n[0],n[1],n[2]);},Cr=(n,r,e)=>{let o=e*l;return k(n,r*Math.cos(o),r*Math.sin(o))},Tr=(n,r,e,o)=>{let b=o*l;R(n,r,e*Math.cos(b),e*Math.sin(b));},Q=(n,r,e)=>{let[o,b$1,t]=k(n,r,e);return [b(o),b(b$1),b(t)]},W=(n,r,e,o)=>{R(n,r,e,o),n[0]=b(n[0]),n[1]=b(n[1]),n[2]=b(n[2]);},xr=(n,r,e)=>{let o=e*l;return Q(n,r*Math.cos(o),r*Math.sin(o))},Mr=(n,r,e,o)=>{let b=o*l;W(n,r,e*Math.cos(b),e*Math.sin(b));},Y=(n,r,e)=>{let[o,b$1,t]=k(n,r,e);return [[o,b$1,t],[b(o),b(b$1),b(t)]]},Z=(n,r,e,o,b$1)=>{R(n,e,o,b$1),r[0]=b(n[0]),r[1]=b(n[1]),r[2]=b(n[2]);},Ar=(n,r,e)=>{let o=e*l;return Y(n,r*Math.cos(o),r*Math.sin(o))},kr=(n,r,e,o,b)=>{let t=b*l;Z(n,r,e,o*Math.cos(t),o*Math.sin(t));};export{tr as a,mr as b,ur as c,ar as d,V as e,$ as f,pr as g,dr as h,yr as i,fr as j,gr as k,Lr as l,k as m,R as n,Cr as o,Tr as p,Q as q,W as r,xr as s,Mr as t,Y as u,Z as v,Ar as w,kr as x};//# sourceMappingURL=chunk-FEPIYR27.mjs.map
//# sourceMappingURL=chunk-FEPIYR27.mjs.map
{"version":3,"sources":["../src/gamut.ts","../src/channels.ts"],"names":["OKLCH_RE","OKLAB_RE","getRawOklab","input","obj","c","hRad","x","y","z","labToXyz","lr","lg","lb","xyzD50ToLinearSrgb","ol","oa","ob","linearSrgbToOklab","m","l","unit","ANGLE_UNITS","alpha","a","EPS","isLinearInGamut","r","g","b","strictInGamut","inGamutSrgb","raw","oklabToLinear","JND","GAMUT_EPSILON","deltaEOK","lab1","lab2","dl","da","db","cssGamutMap","toLinear","fromLinear","r0","g0","b0","clip0","clamp","C","lo","hi","minInGamut","lastClip","mid","ma","mb","clipOklab","toGamutSrgbRaw","inGamutCustom","toGamutCustom","DEG_TO_RAD","oklchToLinear","h","oklchToLinearInto","out","oklabToLinearInto","oklchToRgbChannels","srgbFromLinear","oklchToRgbChannelsInto","oklchToLinearAndSrgb","oklchToLinearAndSrgbInto","linOut","srgbOut","rgbToLinear","srgbToLinear","rgbToLinearInto","labToLinearSrgb","labToXyzValues","labToLinearSrgbInto","labToXyzValuesInto","xyzD50ToLinearSrgbInto","lchToLinearSrgb","lchToLinearSrgbInto","labToRgbChannels","labToRgbChannelsInto","lchToRgbChannels","lchToRgbChannelsInto","labToLinearAndSrgb","labToLinearAndSrgbInto","lchToLinearAndSrgb","lchToLinearAndSrgbInto"],"mappings":"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","file":"chunk-FEPIYR27.mjs","sourcesContent":["import { labToXyz } from './colorModels/lab.js';\nimport { linearSrgbToOklab, oklabToLinear } from './colorModels/oklab.js';\nimport { xyzD50ToLinearSrgb } from './colorModels/xyz.js';\nimport { ANGLE_UNITS, clamp } from './helpers.js';\nimport type { AnyColor, LabColor, OklabColor, OklchColor } from './types.js';\n\nconst OKLCH_RE =\n /^oklch\\(\\s*([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i;\n\nconst OKLAB_RE =\n /^oklab\\(\\s*([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(%?)\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i;\n\n/**\n * Extract raw OKLab {l, a, b, alpha} without clamping.\n * Returns null for inputs that are already sRGB-bounded (hex, rgb, hsl, hsv, hwb, etc.).\n */\nconst getRawOklab = (input: AnyColor): { l: number; a: number; b: number; alpha: number } | null => {\n if (typeof input === 'object' && input !== null) {\n const obj = input as unknown as Record<string, unknown>;\n // OklabColor: l/a/b present, no 'lab' colorSpace brand\n if ('l' in obj && 'a' in obj && 'b' in obj && obj.colorSpace !== 'lab' && !('c' in obj) && !('r' in obj)) {\n const c = input as OklabColor;\n if (\n typeof c.l === 'number' &&\n typeof c.a === 'number' &&\n typeof c.b === 'number' &&\n typeof c.alpha === 'number'\n ) {\n return { l: c.l, a: c.a, b: c.b, alpha: c.alpha };\n }\n }\n // OklchColor: l/c/h present, no 'lch' colorSpace brand\n if ('l' in obj && 'c' in obj && 'h' in obj && obj.colorSpace !== 'lch' && !('a' in obj) && !('r' in obj)) {\n const c = input as OklchColor;\n if (typeof c.l === 'number' && typeof c.c === 'number' && typeof c.h === 'number') {\n const hRad = (c.h * Math.PI) / 180;\n return { l: c.l, a: c.c * Math.cos(hRad), b: c.c * Math.sin(hRad), alpha: c.alpha };\n }\n }\n // LabColor: convert Lab (D50) → XYZ D50 → D65 → linear sRGB → OKLab (no clamping)\n if (obj.colorSpace === 'lab') {\n const c = input as LabColor;\n if (typeof c.l !== 'number' || typeof c.a !== 'number' || typeof c.b !== 'number') return null;\n const { x, y, z } = labToXyz(c);\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n const [ol, oa, ob] = linearSrgbToOklab(lr, lg, lb);\n return { l: ol, a: oa, b: ob, alpha: typeof c.alpha === 'number' ? c.alpha : 1 };\n }\n return null;\n }\n\n if (typeof input === 'string') {\n let m = OKLCH_RE.exec(input);\n if (m) {\n const l = m[2] ? Number(m[1]) / 100 : Number(m[1]);\n const c = m[4] ? Number(m[3]) * 0.004 : Number(m[3]);\n const unit = m[6]?.toLowerCase() ?? 'deg';\n const hDeg = Number(m[5]) * (ANGLE_UNITS[unit] ?? 1);\n const hRad = (hDeg * Math.PI) / 180;\n const alpha = m[7] === undefined ? 1 : Number(m[7]) / (m[8] ? 100 : 1);\n return { l, a: c * Math.cos(hRad), b: c * Math.sin(hRad), alpha };\n }\n m = OKLAB_RE.exec(input);\n if (m) {\n const l = m[2] ? Number(m[1]) / 100 : Number(m[1]);\n const a = m[4] ? Number(m[3]) * 0.004 : Number(m[3]);\n const b = m[6] ? Number(m[5]) * 0.004 : Number(m[5]);\n const alpha = m[7] === undefined ? 1 : Number(m[7]) / (m[8] ? 100 : 1);\n return { l, a, b, alpha };\n }\n return null;\n }\n\n return null;\n};\n\n// Tolerance for inGamut* checks — NOT used in gamut mapping, which uses strict bounds.\n// Covers two sources of error:\n// 1. Matrix floating-point noise: accumulated cbrt + matrix error is ~3e-10\n// 2. Value rounding: OKLCH stored at 4 dp (L, C) / 2 dp (H) produces linear-sRGB\n// deviations up to 4.4e-4 on sRGB boundary colors (exhaustive scan of all 256^3 sRGB\n// values confirms this). EPS = 5e-4 absorbs all rounding artifacts while staying below\n// ~1.6 gamma-encoded steps (imperceptible), and correctly rejects genuine out-of-gamut\n// colors (typically 1e-3 and above).\nconst EPS = 5e-4;\n\nconst isLinearInGamut = (r: number, g: number, b: number): boolean =>\n r >= -EPS && r <= 1 + EPS && g >= -EPS && g <= 1 + EPS && b >= -EPS && b <= 1 + EPS;\n\nconst strictInGamut = (r: number, g: number, b: number): boolean =>\n r >= 0 && r <= 1 && g >= 0 && g <= 1 && b >= 0 && b <= 1;\n\n/**\n * Returns true if the color is within the sRGB gamut.\n * Always true for hex, rgb, hsl, hsv, and hwb inputs.\n * For oklch/oklab inputs, checks whether the computed linear sRGB channels are in [0, 1].\n */\nexport const inGamutSrgb = (input: AnyColor): boolean => {\n const raw = getRawOklab(input);\n if (raw === null) return true;\n const [r, g, b] = oklabToLinear(raw.l, raw.a, raw.b);\n return isLinearInGamut(r, g, b);\n};\n\n// CSS Color 4 gamut mapping constants\n// https://www.w3.org/TR/css-color-4/#css-gamut-mapping\nconst JND = 0.02;\nconst GAMUT_EPSILON = 0.0001;\n\n/** Euclidean distance in OKLab — the CSS Color 4 deltaEOK metric. */\nconst deltaEOK = (lab1: readonly [number, number, number], lab2: readonly [number, number, number]): number => {\n const dl = lab1[0] - lab2[0];\n const da = lab1[1] - lab2[1];\n const db = lab1[2] - lab2[2];\n return Math.sqrt(dl * dl + da * da + db * db);\n};\n\nexport type LinearConverter = (l: number, a: number, b: number) => [number, number, number];\nexport type FromLinearConverter = (r: number, g: number, b: number) => [number, number, number];\n\n/**\n * CSS Color 4 gamut mapping algorithm.\n * Binary-searches for the highest chroma where clip(color) is within JND (0.02 deltaEOK)\n * of the chroma-reduced color, then returns the clipped result.\n * This preserves lightness and hue while accepting only perceptually negligible clip error.\n *\n * toLinear: OKLab → unclamped linear target-space channels\n * fromLinear: linear target-space channels → OKLab (used to measure deltaEOK of clipped color)\n */\nconst cssGamutMap = (\n l: number,\n a: number,\n b: number,\n alpha: number,\n toLinear: LinearConverter,\n fromLinear: FromLinearConverter\n): OklabColor => {\n if (l >= 1) return { l: 1, a: 0, b: 0, alpha };\n if (l <= 0) return { l: 0, a: 0, b: 0, alpha };\n\n const [r0, g0, b0] = toLinear(l, a, b);\n if (strictInGamut(r0, g0, b0)) return { l, a, b, alpha };\n\n // Early exit: if the simple clip is already within JND, use it directly\n const clip0 = fromLinear(clamp(r0, 0, 1), clamp(g0, 0, 1), clamp(b0, 0, 1));\n if (deltaEOK(clip0, [l, a, b]) <= JND) {\n return { l: clip0[0], a: clip0[1], b: clip0[2], alpha };\n }\n\n const hRad = Math.atan2(b, a);\n const C = Math.sqrt(a * a + b * b);\n let lo = 0;\n let hi = C;\n let minInGamut = true;\n let lastClip: readonly [number, number, number] = clip0;\n\n while (hi - lo > GAMUT_EPSILON) {\n const mid = (lo + hi) / 2;\n const ma = mid * Math.cos(hRad);\n const mb = mid * Math.sin(hRad);\n const [lr, lg, lb] = toLinear(l, ma, mb);\n\n if (minInGamut && strictInGamut(lr, lg, lb)) {\n lo = mid;\n continue;\n }\n\n const clipOklab = fromLinear(clamp(lr, 0, 1), clamp(lg, 0, 1), clamp(lb, 0, 1));\n lastClip = clipOklab;\n const E = deltaEOK(clipOklab, [l, ma, mb]);\n\n if (E <= JND) {\n lo = mid;\n minInGamut = false;\n } else {\n hi = mid;\n }\n }\n\n return { l: lastClip[0], a: lastClip[1], b: lastClip[2], alpha };\n};\n\n/**\n * Maps an out-of-sRGB-gamut color using the CSS Color 4 algorithm.\n * Returns null for sRGB-bounded inputs (hex, rgb, hsl, etc.) — pass through unchanged.\n * Returns the mapped OklabColor otherwise.\n */\nexport const toGamutSrgbRaw = (input: AnyColor): OklabColor | null => {\n const raw = getRawOklab(input);\n if (raw === null) return null;\n const { l, a, b, alpha } = raw;\n return cssGamutMap(l, a, b, alpha, oklabToLinear, linearSrgbToOklab);\n};\n\nexport const inGamutCustom = (input: AnyColor, toLinear: LinearConverter): boolean => {\n const raw = getRawOklab(input);\n // sRGB-bounded inputs (hex, rgb, hsl, etc.) are always inside the wider P3/Rec.2020 gamut\n if (raw === null) return true;\n const [r, g, b] = toLinear(raw.l, raw.a, raw.b);\n return isLinearInGamut(r, g, b);\n};\n\n/**\n * Maps an out-of-gamut color into a custom gamut using the CSS Color 4 gamut mapping algorithm.\n * Returns null for sRGB-bounded inputs (hex, rgb, hsl, etc.) — pass through unchanged.\n * Returns the mapped OklabColor otherwise.\n * toLinear: OKLab → unclamped linear target-space channels\n * fromLinear: linear target-space channels → OKLab (for deltaEOK of clipped colors)\n */\nexport const toGamutCustom = (\n input: AnyColor,\n toLinear: LinearConverter,\n fromLinear: FromLinearConverter\n): OklabColor | null => {\n const raw = getRawOklab(input);\n if (raw === null) return null;\n const { l, a, b, alpha } = raw;\n return cssGamutMap(l, a, b, alpha, toLinear, fromLinear);\n};\n","import { labToXyzValues, labToXyzValuesInto } from './colorModels/lab.js';\nimport { oklabToLinear, oklabToLinearInto } from './colorModels/oklab.js';\nimport { xyzD50ToLinearSrgb, xyzD50ToLinearSrgbInto } from './colorModels/xyz.js';\nimport { srgbFromLinear, srgbToLinear } from './transfer.js';\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert OKLCH to unclamped linear sRGB channels without object allocation.\n * This is the shared expensive step (OKLCH → OKLab → linear sRGB via 3× cbrt + matrix).\n * Use this when you need multiple color spaces from the same color — compute once,\n * then pass to linearToP3Channels / linearToRec2020Channels (from their plugins) to avoid duplicate work.\n *\n * In-gamut sRGB colors have all channels in [0, 1]. Channels outside this range\n * indicate an out-of-gamut color — use as a free gamut check.\n */\nexport const oklchToLinear = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return oklabToLinear(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of oklchToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklchToLinearInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n oklabToLinearInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Convert OKLCH to gamma-encoded sRGB channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n */\nexport const oklchToRgbChannels = (l: number, c: number, h: number): [number, number, number] => {\n const [r, g, b] = oklchToLinear(l, c, h);\n return [srgbFromLinear(r), srgbFromLinear(g), srgbFromLinear(b)];\n};\n\n/** Zero-allocation sibling of oklchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */\nexport const oklchToRgbChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to both linear and gamma-encoded sRGB channels in a single pass.\n * Avoids recomputing the expensive OKLCH → OKLab → linear step when you need both.\n *\n * Linear channels are useful for gamut checks (all in [0,1] = in sRGB gamut)\n * and as input to P3/Rec2020 conversion matrices.\n * Gamma channels are ready for display on an sRGB canvas (still need clamping for out-of-gamut).\n *\n * Returns [[lr, lg, lb], [sr, sg, sb]] — both in [0, 1] for in-gamut colors.\n */\nexport const oklchToLinearAndSrgb = (\n l: number,\n c: number,\n h: number\n): [[number, number, number], [number, number, number]] => {\n const [lr, lg, lb] = oklchToLinear(l, c, h);\n return [\n [lr, lg, lb],\n [srgbFromLinear(lr), srgbFromLinear(lg), srgbFromLinear(lb)],\n ];\n};\n\n/**\n * Zero-allocation sibling of oklchToLinearAndSrgb — writes linear channels into `linOut`\n * and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.\n */\nexport const oklchToLinearAndSrgbInto = (\n linOut: Float64Array | number[],\n srgbOut: Float64Array | number[],\n l: number,\n c: number,\n h: number\n): void => {\n oklchToLinearInto(linOut, l, c, h);\n srgbOut[0] = srgbFromLinear(linOut[0]!);\n srgbOut[1] = srgbFromLinear(linOut[1]!);\n srgbOut[2] = srgbFromLinear(linOut[2]!);\n};\n\n/**\n * Gamma-encoded sRGB (0–1) → linear sRGB (0–1). Vector sibling of `srgbToLinear`.\n * For byte-scale RGB, pass `r/255, g/255, b/255`. Output range tracks input:\n * channels outside [0, 1] are preserved with the CSS Color 4 extended transfer curve.\n */\nexport const rgbToLinear = (r: number, g: number, b: number): [number, number, number] => [\n srgbToLinear(r),\n srgbToLinear(g),\n srgbToLinear(b),\n];\n\n/** Zero-allocation sibling of rgbToLinear — writes [lr, lg, lb] into `out`. */\nexport const rgbToLinearInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = srgbToLinear(r);\n out[1] = srgbToLinear(g);\n out[2] = srgbToLinear(b);\n};\n\n/**\n * CIE Lab (D50) → unclamped linear sRGB (0–1). Goes via XYZ D50 with Bradford adaptation.\n * L in [0, 100]; a/b typically in [-128, 128]. Out-of-sRGB-gamut colors return channels\n * outside [0, 1] — use as a free gamut check or pass to `srgbFromLinear` for display.\n */\nexport const labToLinearSrgb = (l: number, a: number, b: number): [number, number, number] => {\n const [x, y, z] = labToXyzValues(l, a, b);\n return xyzD50ToLinearSrgb(x, y, z);\n};\n\n/** Zero-allocation sibling of labToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const labToLinearSrgbInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToXyzValuesInto(out, l, a, b);\n xyzD50ToLinearSrgbInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * CIE LCH (D50) → unclamped linear sRGB (0–1). Polar-to-rectangular to Lab, then Lab → linear sRGB.\n * L in [0, 100]; C is the chroma (0–~150); H in degrees. Out-of-gamut colors return channels\n * outside [0, 1] — useful in LCH render hot paths where you want linear pixels and a gamut check in one step.\n */\nexport const lchToLinearSrgb = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToLinearSrgb(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const lchToLinearSrgbInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToLinearSrgbInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * CIE Lab (D50) → gamma-encoded sRGB (0–1). Convenience wrapper over `labToLinearSrgb` + `srgbFromLinear`.\n * In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range — clamp before byte encoding.\n */\nexport const labToRgbChannels = (l: number, a: number, b: number): [number, number, number] => {\n const [lr, lg, lb] = labToLinearSrgb(l, a, b);\n return [srgbFromLinear(lr), srgbFromLinear(lg), srgbFromLinear(lb)];\n};\n\n/** Zero-allocation sibling of labToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */\nexport const labToRgbChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * CIE LCH (D50) → gamma-encoded sRGB (0–1). Polar-to-rectangular to Lab, then Lab → gamma sRGB.\n * In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range.\n */\nexport const lchToRgbChannels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToRgbChannels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */\nexport const lchToRgbChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToRgbChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * CIE Lab (D50) → both linear and gamma-encoded sRGB in a single pass.\n * Avoids recomputing Lab → XYZ D50 → linear sRGB when you need both (e.g. gamut check + pixel).\n * Returns [[lr, lg, lb], [sr, sg, sb]].\n */\nexport const labToLinearAndSrgb = (\n l: number,\n a: number,\n b: number\n): [[number, number, number], [number, number, number]] => {\n const [lr, lg, lb] = labToLinearSrgb(l, a, b);\n return [\n [lr, lg, lb],\n [srgbFromLinear(lr), srgbFromLinear(lg), srgbFromLinear(lb)],\n ];\n};\n\n/**\n * Zero-allocation sibling of labToLinearAndSrgb — writes linear channels into `linOut`\n * and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.\n */\nexport const labToLinearAndSrgbInto = (\n linOut: Float64Array | number[],\n srgbOut: Float64Array | number[],\n l: number,\n a: number,\n b: number\n): void => {\n labToLinearSrgbInto(linOut, l, a, b);\n srgbOut[0] = srgbFromLinear(linOut[0]!);\n srgbOut[1] = srgbFromLinear(linOut[1]!);\n srgbOut[2] = srgbFromLinear(linOut[2]!);\n};\n\n/**\n * CIE LCH (D50) → both linear and gamma-encoded sRGB in a single pass.\n * Polar-to-rectangular to Lab, then Lab → linear + gamma sRGB. Returns [[lr, lg, lb], [sr, sg, sb]].\n */\nexport const lchToLinearAndSrgb = (\n l: number,\n c: number,\n h: number\n): [[number, number, number], [number, number, number]] => {\n const hRad = h * DEG_TO_RAD;\n return labToLinearAndSrgb(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToLinearAndSrgb — same buffer rules as labToLinearAndSrgbInto. */\nexport const lchToLinearAndSrgbInto = (\n linOut: Float64Array | number[],\n srgbOut: Float64Array | number[],\n l: number,\n c: number,\n h: number\n): void => {\n const hRad = h * DEG_TO_RAD;\n labToLinearAndSrgbInto(linOut, srgbOut, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n"]}
'use strict';var chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var O=96.4295675298354,L=100,w=82.51046025104603,so=.4123907992659595,lo=.35758433938387796,ao=.1804807884018343,co=.21263900587151036,eo=.7151686787677559,bo=.07219231536073371,uo=.01933081871559185,po=.11919477979462599,_o=.9505321522496606,A=.032409699419045215,j=-0.015373831775700935,B=-0.004986107602930032,G=-0.009692436362808799,I=.018759675015077207,P=.0004155505740717561,F=.000556300796969936,U=-0.002039769588889766,v=.010569715142428786,No=1.0479297925449969,Wo=.022946870601609652,Eo=-0.05019226628920524,qo=.02962780877005599,Ao=.9904344267538799,jo=-0.017073799063418826,Bo=-0.009243040646204504,Go=.015055191490298152,Io=.7518742814281371,yo=.955473421488075,xo=-0.02309845494876471,mo=.06325924320057072,go=-0.0283697093338637,Do=1.0099953980813041,zo=.021041441191917323,Xo=.012314014864481998,io=-0.020507649298898964,ho=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*(so*r+lo*l+ao*a),y:100*(co*r+eo*l+bo*a),z:100*(uo*r+po*l+_o*a),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(s,3),0,1),colorSpace:"xyz-d65"}},Po=(n,o,t)=>[A*n+j*o+B*t,G*n+I*o+P*t,F*n+U*o+v*t];var Co=({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}},fo=({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),_=100*(so*r+lo*l+ao*a),b=100*(co*r+eo*l+bo*a),D=100*(uo*r+po*l+_o*a);return {x:No*_+Wo*b+Eo*D,y:qo*_+Ao*b+jo*D,z:Bo*_+Go*b+Io*D,alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(s,3),0,1)}},ln=(n,o,t,s)=>{let r=yo*o+xo*t+mo*s,l=go*o+Do*t+zo*s,a=Xo*o+io*t+ho*s;n[0]=A*r+j*l+B*a,n[1]=G*r+I*l+P*a,n[2]=F*r+U*l+v*a;},To=(n,o,t)=>{let s=yo*n+xo*o+mo*t,r=go*n+Do*o+zo*t,l=Xo*n+io*o+ho*t;return [A*s+j*r+B*l,G*s+I*r+P*l,F*s+U*r+v*l]},Ro=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=To(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]=To(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:Co({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"),Uo=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 Co({x:t,y:s,z:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})},bn=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 So({x:t,y:s,z:r,alpha:chunkYISEJCI6_cjs.a(l,0,1)})};var vo=.3127/.329*100,Ho=100,Ko=(1-.3127-.329)/.329*100,S=216/24389,z=24389/27,C=n=>n>S?Math.cbrt(n):(z*n+16)/116,Vo=({x:n,y:o,z:t,alpha:s})=>{let r=C(o/L);return {l:116*r-16,a:500*(C(n/O)-r)||0,b:200*(r-C(t/w))||0,alpha:chunkYISEJCI6_cjs.b(s,3),colorSpace:"lab"}},Jo=(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)*O,(n>8?s**3:n/z)*L,(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)*O,n[1]=(o>8?r**3:o/z)*L,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]=Jo(n,o,t);return {x:r,y:l,z:a,alpha:s}},mn=n=>Vo(fo(n)),gn=({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),_=100*(.4123907992659595*r+.35758433938387796*l+.1804807884018343*a),b=100*(.21263900587151036*r+.7151686787677559*l+.07219231536073371*a),D=100*(.01933081871559185*r+.11919477979462599*l+.9505321522496606*a),f=C(b/Ho);return {l:116*f-16,a:500*(C(_/vo)-f)||0,b:200*(f-C(D/Ko))||0,alpha:chunkYISEJCI6_cjs.b(s,3),colorSpace:"lab"}},Dn=(n,o)=>{let{l:t,a:s,b:r}=n,{l,a,b:_}=o,b=Math.PI/180,D=180/Math.PI,f=Math.sqrt(s**2+r**2),Lo=Math.sqrt(a**2+_**2),H=((f+Lo)/2)**7,K=.5*(1-Math.sqrt(H/(H+25**7))),M=s*(1+K),Y=a*(1+K),Z=Math.sqrt(M**2+r**2),k=Math.sqrt(Y**2+_**2),$=(Z+k)/2,N=M===0&&r===0?0:Math.atan2(r,M)*D,W=Y===0&&_===0?0:Math.atan2(_,Y)*D,X=N<0?N+360:N,i=W<0?W+360:W,E=i-X,q=Math.abs(i-X);q>180&&i<=X?E+=360:q>180&&i>X&&(E-=360);let V=(t+l)/2,g=X+i;q<=180?g/=2:g=(X+i<360?g+360:g-360)/2;let wo=1-.17*Math.cos(b*(g-30))+.24*Math.cos(2*b*g)+.32*Math.cos(b*(3*g+6))-.2*Math.cos(b*(4*g-63)),Mo=l-t,J=k-Z,Q=2*Math.sin(b*E/2)*Math.sqrt(Z*k),Yo=1+.015*(V-50)**2/Math.sqrt(20+(V-50)**2),oo=1+.045*$,no=1+.015*$*wo,ro=$**7,Zo=2*Math.sqrt(ro/(ro+25**7)),ko=30*Math.exp(-(((g-275)/25)**2)),$o=-Zo*Math.sin(2*b*ko);return Math.sqrt((Mo/Yo)**2+(J/oo)**2+(Q/no)**2+$o*(J/oo)*(Q/no))},Oo=n=>Ro(Qo(n)),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"),zn=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)})},Xn=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=fo;exports.c=ln;exports.d=To;exports.e=an;exports.f=cn;exports.g=en;exports.h=bn;exports.i=Jo;exports.j=xn;exports.k=Qo;exports.l=mn;exports.m=gn;exports.n=Dn;exports.o=Oo;exports.p=zn;exports.q=Xn;//# sourceMappingURL=chunk-FZP4XDSG.cjs.map
//# sourceMappingURL=chunk-FZP4XDSG.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","LAB_RE","parseLabString","parseLabObject"],"mappings":"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","file":"chunk-FZP4XDSG.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 { 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, 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// 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 labToRgb({\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 labToRgb({\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 {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 O=96.4295675298354,L=100,w=82.51046025104603,so=.4123907992659595,lo=.35758433938387796,ao=.1804807884018343,co=.21263900587151036,eo=.7151686787677559,bo=.07219231536073371,uo=.01933081871559185,po=.11919477979462599,_o=.9505321522496606,A=.032409699419045215,j=-0.015373831775700935,B=-0.004986107602930032,G=-0.009692436362808799,I=.018759675015077207,P=.0004155505740717561,F=.000556300796969936,U=-0.002039769588889766,v=.010569715142428786,No=1.0479297925449969,Wo=.022946870601609652,Eo=-0.05019226628920524,qo=.02962780877005599,Ao=.9904344267538799,jo=-0.017073799063418826,Bo=-0.009243040646204504,Go=.015055191490298152,Io=.7518742814281371,yo=.955473421488075,xo=-0.02309845494876471,mo=.06325924320057072,go=-0.0283697093338637,Do=1.0099953980813041,zo=.021041441191917323,Xo=.012314014864481998,io=-0.020507649298898964,ho=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*(so*r+lo*l+ao*a$2),y:100*(co*r+eo*l+bo*a$2),z:100*(uo*r+po*l+_o*a$2),alpha:a$1(b(s,3),0,1),colorSpace:"xyz-d65"}},Po=(n,o,t)=>[A*n+j*o+B*t,G*n+I*o+P*t,F*n+U*o+v*t];var Co=({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}},fo=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$2=a(t/255),_=100*(so*r+lo*l+ao*a$2),b$1=100*(co*r+eo*l+bo*a$2),D=100*(uo*r+po*l+_o*a$2);return {x:No*_+Wo*b$1+Eo*D,y:qo*_+Ao*b$1+jo*D,z:Bo*_+Go*b$1+Io*D,alpha:a$1(b(s,3),0,1)}},ln=(n,o,t,s)=>{let r=yo*o+xo*t+mo*s,l=go*o+Do*t+zo*s,a=Xo*o+io*t+ho*s;n[0]=A*r+j*l+B*a,n[1]=G*r+I*l+P*a,n[2]=F*r+U*l+v*a;},To=(n,o,t)=>{let s=yo*n+xo*o+mo*t,r=go*n+Do*o+zo*t,l=Xo*n+io*o+ho*t;return [A*s+j*r+B*l,G*s+I*r+P*l,F*s+U*r+v*l]},Ro=({x:n,y:o,z:t,alpha:s})=>{let[r,l,a]=To(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]=To(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:Co({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"),Uo=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 Co({x:t,y:s,z:r,alpha:a$1(l$1,0,1)})},bn=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 So({x:t,y:s,z:r,alpha:a$1(l$1,0,1)})};var vo=.3127/.329*100,Ho=100,Ko=(1-.3127-.329)/.329*100,S=216/24389,z=24389/27,C=n=>n>S?Math.cbrt(n):(z*n+16)/116,Vo=({x:n,y:o,z:t,alpha:s})=>{let r=C(o/L);return {l:116*r-16,a:500*(C(n/O)-r)||0,b:200*(r-C(t/w))||0,alpha:b(s,3),colorSpace:"lab"}},Jo=(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)*O,(n>8?s**3:n/z)*L,(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)*O,n[1]=(o>8?r**3:o/z)*L,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]=Jo(n,o,t);return {x:r,y:l,z:a,alpha:s}},mn=n=>Vo(fo(n)),gn=({r:n,g:o,b:t,alpha:s})=>{let r=a(n/255),l=a(o/255),a$1=a(t/255),_=100*(.4123907992659595*r+.35758433938387796*l+.1804807884018343*a$1),b$1=100*(.21263900587151036*r+.7151686787677559*l+.07219231536073371*a$1),D=100*(.01933081871559185*r+.11919477979462599*l+.9505321522496606*a$1),f=C(b$1/Ho);return {l:116*f-16,a:500*(C(_/vo)-f)||0,b:200*(f-C(D/Ko))||0,alpha:b(s,3),colorSpace:"lab"}},Dn=(n,o)=>{let{l:t,a:s,b:r}=n,{l,a,b:_}=o,b=Math.PI/180,D=180/Math.PI,f=Math.sqrt(s**2+r**2),Lo=Math.sqrt(a**2+_**2),H=((f+Lo)/2)**7,K=.5*(1-Math.sqrt(H/(H+25**7))),M=s*(1+K),Y=a*(1+K),Z=Math.sqrt(M**2+r**2),k=Math.sqrt(Y**2+_**2),$=(Z+k)/2,N=M===0&&r===0?0:Math.atan2(r,M)*D,W=Y===0&&_===0?0:Math.atan2(_,Y)*D,X=N<0?N+360:N,i=W<0?W+360:W,E=i-X,q=Math.abs(i-X);q>180&&i<=X?E+=360:q>180&&i>X&&(E-=360);let V=(t+l)/2,g=X+i;q<=180?g/=2:g=(X+i<360?g+360:g-360)/2;let wo=1-.17*Math.cos(b*(g-30))+.24*Math.cos(2*b*g)+.32*Math.cos(b*(3*g+6))-.2*Math.cos(b*(4*g-63)),Mo=l-t,J=k-Z,Q=2*Math.sin(b*E/2)*Math.sqrt(Z*k),Yo=1+.015*(V-50)**2/Math.sqrt(20+(V-50)**2),oo=1+.045*$,no=1+.015*$*wo,ro=$**7,Zo=2*Math.sqrt(ro/(ro+25**7)),ko=30*Math.exp(-(((g-275)/25)**2)),$o=-Zo*Math.sin(2*b*ko);return Math.sqrt((Mo/Yo)**2+(J/oo)**2+(Q/no)**2+$o*(J/oo)*(Q/no))},Oo=n=>Ro(Qo(n)),on=new RegExp(`^lab\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<a>${k})(?<ap>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),zn=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)})},Xn=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,fo as b,ln as c,To as d,an as e,cn as f,en as g,bn as h,Jo as i,xn as j,Qo as k,mn as l,gn as m,Dn as n,Oo as o,zn as p,Xn as q};//# sourceMappingURL=chunk-MOYQ3PQJ.mjs.map
//# sourceMappingURL=chunk-MOYQ3PQJ.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","LAB_RE","parseLabString","parseLabObject"],"mappings":"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","file":"chunk-MOYQ3PQJ.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 { 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, 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// 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 labToRgb({\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 labToRgb({\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 chunkGXECYURS_cjs=require('./chunk-GXECYURS.cjs'),chunkFZP4XDSG_cjs=require('./chunk-FZP4XDSG.cjs'),chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var B=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,H=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,T=n=>{if(typeof n=="object"&&n!==null){let r=n;if("l"in r&&"a"in r&&"b"in r&&r.colorSpace!=="lab"&&!("c"in r)&&!("r"in r)){let e=n;if(typeof e.l=="number"&&typeof e.a=="number"&&typeof e.b=="number"&&typeof e.alpha=="number")return {l:e.l,a:e.a,b:e.b,alpha:e.alpha}}if("l"in r&&"c"in r&&"h"in r&&r.colorSpace!=="lch"&&!("a"in r)&&!("r"in r)){let e=n;if(typeof e.l=="number"&&typeof e.c=="number"&&typeof e.h=="number"){let o=e.h*Math.PI/180;return {l:e.l,a:e.c*Math.cos(o),b:e.c*Math.sin(o),alpha:e.alpha}}}if(r.colorSpace==="lab"){let e=n;if(typeof e.l!="number"||typeof e.a!="number"||typeof e.b!="number")return null;let{x:o,y:b,z:t}=chunkFZP4XDSG_cjs.k(e),[u,a,y]=chunkFZP4XDSG_cjs.d(o,b,t),[s,f,x]=chunkGXECYURS_cjs.a(u,a,y);return {l:s,a:f,b:x,alpha:typeof e.alpha=="number"?e.alpha:1}}return null}if(typeof n=="string"){let r=B.exec(n);if(r){let e=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,a=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:e,a:o*Math.cos(u),b:o*Math.sin(u),alpha:a}}if(r=H.exec(n),r){let e=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:e,a:o,b,alpha:t}}return null}return null},h=5e-4,q=(n,r,e)=>n>=-h&&n<=1+h&&r>=-h&&r<=1+h&&e>=-h&&e<=1+h,j=(n,r,e)=>n>=0&&n<=1&&r>=0&&r<=1&&e>=0&&e<=1,tr=n=>{let r=T(n);if(r===null)return true;let[e,o,b]=chunkGXECYURS_cjs.f(r.l,r.a,r.b);return q(e,o,b)},K=.02,J=1e-4,X=(n,r)=>{let e=n[0]-r[0],o=n[1]-r[1],b=n[2]-r[2];return Math.sqrt(e*e+o*o+b*b)},U=(n,r,e,o,b,t)=>{if(n>=1)return {l:1,a:0,b:0,alpha:o};if(n<=0)return {l:0,a:0,b:0,alpha:o};let[u,a,y]=b(n,r,e);if(j(u,a,y))return {l:n,a:r,b:e,alpha:o};let s=t(chunkYISEJCI6_cjs.a(u,0,1),chunkYISEJCI6_cjs.a(a,0,1),chunkYISEJCI6_cjs.a(y,0,1));if(X(s,[n,r,e])<=K)return {l:s[0],a:s[1],b:s[2],alpha:o};let f=Math.atan2(e,r),x=Math.sqrt(r*r+e*e),g=0,M=x,S=true,L=s;for(;M-g>J;){let p=(g+M)/2,I=p*Math.cos(f),v=p*Math.sin(f),[F,N,G]=b(n,I,v);if(S&&j(F,N,G)){g=p;continue}let w=t(chunkYISEJCI6_cjs.a(F,0,1),chunkYISEJCI6_cjs.a(N,0,1),chunkYISEJCI6_cjs.a(G,0,1));L=w,X(w,[n,I,v])<=K?(g=p,S=false):M=p;}return {l:L[0],a:L[1],b:L[2],alpha:o}},mr=n=>{let r=T(n);if(r===null)return null;let{l:e,a:o,b,alpha:t}=r;return U(e,o,b,t,chunkGXECYURS_cjs.f,chunkGXECYURS_cjs.a)},ur=(n,r)=>{let e=T(n);if(e===null)return true;let[o,b,t]=r(e.l,e.a,e.b);return q(o,b,t)},ar=(n,r,e)=>{let o=T(n);if(o===null)return null;let{l:b,a:t,b:u,alpha:a}=o;return U(b,t,u,a,r,e)};var l=Math.PI/180,V=(n,r,e)=>{let o=e*l;return chunkGXECYURS_cjs.f(n,r*Math.cos(o),r*Math.sin(o))},$=(n,r,e,o)=>{let b=o*l;chunkGXECYURS_cjs.e(n,r,e*Math.cos(b),e*Math.sin(b));},pr=(n,r,e)=>{let[o,b,t]=V(n,r,e);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]},dr=(n,r,e,o)=>{$(n,r,e,o),n[0]=chunkX5FCFNQN_cjs.b(n[0]),n[1]=chunkX5FCFNQN_cjs.b(n[1]),n[2]=chunkX5FCFNQN_cjs.b(n[2]);},yr=(n,r,e)=>{let[o,b,t]=V(n,r,e);return [[o,b,t],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]]},fr=(n,r,e,o,b)=>{$(n,e,o,b),r[0]=chunkX5FCFNQN_cjs.b(n[0]),r[1]=chunkX5FCFNQN_cjs.b(n[1]),r[2]=chunkX5FCFNQN_cjs.b(n[2]);},gr=(n,r,e)=>[chunkX5FCFNQN_cjs.a(n),chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(e)],Lr=(n,r,e,o)=>{n[0]=chunkX5FCFNQN_cjs.a(r),n[1]=chunkX5FCFNQN_cjs.a(e),n[2]=chunkX5FCFNQN_cjs.a(o);},k=(n,r,e)=>{let[o,b,t]=chunkFZP4XDSG_cjs.i(n,r,e);return chunkFZP4XDSG_cjs.d(o,b,t)},R=(n,r,e,o)=>{chunkFZP4XDSG_cjs.j(n,r,e,o),chunkFZP4XDSG_cjs.c(n,n[0],n[1],n[2]);},Cr=(n,r,e)=>{let o=e*l;return k(n,r*Math.cos(o),r*Math.sin(o))},Tr=(n,r,e,o)=>{let b=o*l;R(n,r,e*Math.cos(b),e*Math.sin(b));},Q=(n,r,e)=>{let[o,b,t]=k(n,r,e);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]},W=(n,r,e,o)=>{R(n,r,e,o),n[0]=chunkX5FCFNQN_cjs.b(n[0]),n[1]=chunkX5FCFNQN_cjs.b(n[1]),n[2]=chunkX5FCFNQN_cjs.b(n[2]);},xr=(n,r,e)=>{let o=e*l;return Q(n,r*Math.cos(o),r*Math.sin(o))},Mr=(n,r,e,o)=>{let b=o*l;W(n,r,e*Math.cos(b),e*Math.sin(b));},Y=(n,r,e)=>{let[o,b,t]=k(n,r,e);return [[o,b,t],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(b),chunkX5FCFNQN_cjs.b(t)]]},Z=(n,r,e,o,b)=>{R(n,e,o,b),r[0]=chunkX5FCFNQN_cjs.b(n[0]),r[1]=chunkX5FCFNQN_cjs.b(n[1]),r[2]=chunkX5FCFNQN_cjs.b(n[2]);},Ar=(n,r,e)=>{let o=e*l;return Y(n,r*Math.cos(o),r*Math.sin(o))},kr=(n,r,e,o,b)=>{let t=b*l;Z(n,r,e,o*Math.cos(t),o*Math.sin(t));};exports.a=tr;exports.b=mr;exports.c=ur;exports.d=ar;exports.e=V;exports.f=$;exports.g=pr;exports.h=dr;exports.i=yr;exports.j=fr;exports.k=gr;exports.l=Lr;exports.m=k;exports.n=R;exports.o=Cr;exports.p=Tr;exports.q=Q;exports.r=W;exports.s=xr;exports.t=Mr;exports.u=Y;exports.v=Z;exports.w=Ar;exports.x=kr;//# sourceMappingURL=chunk-UU6FAFFW.cjs.map
//# sourceMappingURL=chunk-UU6FAFFW.cjs.map
{"version":3,"sources":["../src/gamut.ts","../src/channels.ts"],"names":["OKLCH_RE","OKLAB_RE","getRawOklab","input","obj","c","hRad","x","y","z","labToXyz","lr","lg","lb","xyzD50ToLinearSrgb","ol","oa","ob","linearSrgbToOklab","m","l","unit","ANGLE_UNITS","alpha","a","EPS","isLinearInGamut","r","g","b","strictInGamut","inGamutSrgb","raw","oklabToLinear","JND","GAMUT_EPSILON","deltaEOK","lab1","lab2","dl","da","db","cssGamutMap","toLinear","fromLinear","r0","g0","b0","clip0","clamp","C","lo","hi","minInGamut","lastClip","mid","ma","mb","clipOklab","toGamutSrgbRaw","inGamutCustom","toGamutCustom","DEG_TO_RAD","oklchToLinear","h","oklchToLinearInto","out","oklabToLinearInto","oklchToRgbChannels","srgbFromLinear","oklchToRgbChannelsInto","oklchToLinearAndSrgb","oklchToLinearAndSrgbInto","linOut","srgbOut","rgbToLinear","srgbToLinear","rgbToLinearInto","labToLinearSrgb","labToXyzValues","labToLinearSrgbInto","labToXyzValuesInto","xyzD50ToLinearSrgbInto","lchToLinearSrgb","lchToLinearSrgbInto","labToRgbChannels","labToRgbChannelsInto","lchToRgbChannels","lchToRgbChannelsInto","labToLinearAndSrgb","labToLinearAndSrgbInto","lchToLinearAndSrgb","lchToLinearAndSrgbInto"],"mappings":"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","file":"chunk-UU6FAFFW.cjs","sourcesContent":["import { labToXyz } from './colorModels/lab.js';\nimport { linearSrgbToOklab, oklabToLinear } from './colorModels/oklab.js';\nimport { xyzD50ToLinearSrgb } from './colorModels/xyz.js';\nimport { ANGLE_UNITS, clamp } from './helpers.js';\nimport type { AnyColor, LabColor, OklabColor, OklchColor } from './types.js';\n\nconst OKLCH_RE =\n /^oklch\\(\\s*([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i;\n\nconst OKLAB_RE =\n /^oklab\\(\\s*([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(%?)\\s+([+-]?\\d*\\.?\\d+)(%?)\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i;\n\n/**\n * Extract raw OKLab {l, a, b, alpha} without clamping.\n * Returns null for inputs that are already sRGB-bounded (hex, rgb, hsl, hsv, hwb, etc.).\n */\nconst getRawOklab = (input: AnyColor): { l: number; a: number; b: number; alpha: number } | null => {\n if (typeof input === 'object' && input !== null) {\n const obj = input as unknown as Record<string, unknown>;\n // OklabColor: l/a/b present, no 'lab' colorSpace brand\n if ('l' in obj && 'a' in obj && 'b' in obj && obj.colorSpace !== 'lab' && !('c' in obj) && !('r' in obj)) {\n const c = input as OklabColor;\n if (\n typeof c.l === 'number' &&\n typeof c.a === 'number' &&\n typeof c.b === 'number' &&\n typeof c.alpha === 'number'\n ) {\n return { l: c.l, a: c.a, b: c.b, alpha: c.alpha };\n }\n }\n // OklchColor: l/c/h present, no 'lch' colorSpace brand\n if ('l' in obj && 'c' in obj && 'h' in obj && obj.colorSpace !== 'lch' && !('a' in obj) && !('r' in obj)) {\n const c = input as OklchColor;\n if (typeof c.l === 'number' && typeof c.c === 'number' && typeof c.h === 'number') {\n const hRad = (c.h * Math.PI) / 180;\n return { l: c.l, a: c.c * Math.cos(hRad), b: c.c * Math.sin(hRad), alpha: c.alpha };\n }\n }\n // LabColor: convert Lab (D50) → XYZ D50 → D65 → linear sRGB → OKLab (no clamping)\n if (obj.colorSpace === 'lab') {\n const c = input as LabColor;\n if (typeof c.l !== 'number' || typeof c.a !== 'number' || typeof c.b !== 'number') return null;\n const { x, y, z } = labToXyz(c);\n const [lr, lg, lb] = xyzD50ToLinearSrgb(x, y, z);\n const [ol, oa, ob] = linearSrgbToOklab(lr, lg, lb);\n return { l: ol, a: oa, b: ob, alpha: typeof c.alpha === 'number' ? c.alpha : 1 };\n }\n return null;\n }\n\n if (typeof input === 'string') {\n let m = OKLCH_RE.exec(input);\n if (m) {\n const l = m[2] ? Number(m[1]) / 100 : Number(m[1]);\n const c = m[4] ? Number(m[3]) * 0.004 : Number(m[3]);\n const unit = m[6]?.toLowerCase() ?? 'deg';\n const hDeg = Number(m[5]) * (ANGLE_UNITS[unit] ?? 1);\n const hRad = (hDeg * Math.PI) / 180;\n const alpha = m[7] === undefined ? 1 : Number(m[7]) / (m[8] ? 100 : 1);\n return { l, a: c * Math.cos(hRad), b: c * Math.sin(hRad), alpha };\n }\n m = OKLAB_RE.exec(input);\n if (m) {\n const l = m[2] ? Number(m[1]) / 100 : Number(m[1]);\n const a = m[4] ? Number(m[3]) * 0.004 : Number(m[3]);\n const b = m[6] ? Number(m[5]) * 0.004 : Number(m[5]);\n const alpha = m[7] === undefined ? 1 : Number(m[7]) / (m[8] ? 100 : 1);\n return { l, a, b, alpha };\n }\n return null;\n }\n\n return null;\n};\n\n// Tolerance for inGamut* checks — NOT used in gamut mapping, which uses strict bounds.\n// Covers two sources of error:\n// 1. Matrix floating-point noise: accumulated cbrt + matrix error is ~3e-10\n// 2. Value rounding: OKLCH stored at 4 dp (L, C) / 2 dp (H) produces linear-sRGB\n// deviations up to 4.4e-4 on sRGB boundary colors (exhaustive scan of all 256^3 sRGB\n// values confirms this). EPS = 5e-4 absorbs all rounding artifacts while staying below\n// ~1.6 gamma-encoded steps (imperceptible), and correctly rejects genuine out-of-gamut\n// colors (typically 1e-3 and above).\nconst EPS = 5e-4;\n\nconst isLinearInGamut = (r: number, g: number, b: number): boolean =>\n r >= -EPS && r <= 1 + EPS && g >= -EPS && g <= 1 + EPS && b >= -EPS && b <= 1 + EPS;\n\nconst strictInGamut = (r: number, g: number, b: number): boolean =>\n r >= 0 && r <= 1 && g >= 0 && g <= 1 && b >= 0 && b <= 1;\n\n/**\n * Returns true if the color is within the sRGB gamut.\n * Always true for hex, rgb, hsl, hsv, and hwb inputs.\n * For oklch/oklab inputs, checks whether the computed linear sRGB channels are in [0, 1].\n */\nexport const inGamutSrgb = (input: AnyColor): boolean => {\n const raw = getRawOklab(input);\n if (raw === null) return true;\n const [r, g, b] = oklabToLinear(raw.l, raw.a, raw.b);\n return isLinearInGamut(r, g, b);\n};\n\n// CSS Color 4 gamut mapping constants\n// https://www.w3.org/TR/css-color-4/#css-gamut-mapping\nconst JND = 0.02;\nconst GAMUT_EPSILON = 0.0001;\n\n/** Euclidean distance in OKLab — the CSS Color 4 deltaEOK metric. */\nconst deltaEOK = (lab1: readonly [number, number, number], lab2: readonly [number, number, number]): number => {\n const dl = lab1[0] - lab2[0];\n const da = lab1[1] - lab2[1];\n const db = lab1[2] - lab2[2];\n return Math.sqrt(dl * dl + da * da + db * db);\n};\n\nexport type LinearConverter = (l: number, a: number, b: number) => [number, number, number];\nexport type FromLinearConverter = (r: number, g: number, b: number) => [number, number, number];\n\n/**\n * CSS Color 4 gamut mapping algorithm.\n * Binary-searches for the highest chroma where clip(color) is within JND (0.02 deltaEOK)\n * of the chroma-reduced color, then returns the clipped result.\n * This preserves lightness and hue while accepting only perceptually negligible clip error.\n *\n * toLinear: OKLab → unclamped linear target-space channels\n * fromLinear: linear target-space channels → OKLab (used to measure deltaEOK of clipped color)\n */\nconst cssGamutMap = (\n l: number,\n a: number,\n b: number,\n alpha: number,\n toLinear: LinearConverter,\n fromLinear: FromLinearConverter\n): OklabColor => {\n if (l >= 1) return { l: 1, a: 0, b: 0, alpha };\n if (l <= 0) return { l: 0, a: 0, b: 0, alpha };\n\n const [r0, g0, b0] = toLinear(l, a, b);\n if (strictInGamut(r0, g0, b0)) return { l, a, b, alpha };\n\n // Early exit: if the simple clip is already within JND, use it directly\n const clip0 = fromLinear(clamp(r0, 0, 1), clamp(g0, 0, 1), clamp(b0, 0, 1));\n if (deltaEOK(clip0, [l, a, b]) <= JND) {\n return { l: clip0[0], a: clip0[1], b: clip0[2], alpha };\n }\n\n const hRad = Math.atan2(b, a);\n const C = Math.sqrt(a * a + b * b);\n let lo = 0;\n let hi = C;\n let minInGamut = true;\n let lastClip: readonly [number, number, number] = clip0;\n\n while (hi - lo > GAMUT_EPSILON) {\n const mid = (lo + hi) / 2;\n const ma = mid * Math.cos(hRad);\n const mb = mid * Math.sin(hRad);\n const [lr, lg, lb] = toLinear(l, ma, mb);\n\n if (minInGamut && strictInGamut(lr, lg, lb)) {\n lo = mid;\n continue;\n }\n\n const clipOklab = fromLinear(clamp(lr, 0, 1), clamp(lg, 0, 1), clamp(lb, 0, 1));\n lastClip = clipOklab;\n const E = deltaEOK(clipOklab, [l, ma, mb]);\n\n if (E <= JND) {\n lo = mid;\n minInGamut = false;\n } else {\n hi = mid;\n }\n }\n\n return { l: lastClip[0], a: lastClip[1], b: lastClip[2], alpha };\n};\n\n/**\n * Maps an out-of-sRGB-gamut color using the CSS Color 4 algorithm.\n * Returns null for sRGB-bounded inputs (hex, rgb, hsl, etc.) — pass through unchanged.\n * Returns the mapped OklabColor otherwise.\n */\nexport const toGamutSrgbRaw = (input: AnyColor): OklabColor | null => {\n const raw = getRawOklab(input);\n if (raw === null) return null;\n const { l, a, b, alpha } = raw;\n return cssGamutMap(l, a, b, alpha, oklabToLinear, linearSrgbToOklab);\n};\n\nexport const inGamutCustom = (input: AnyColor, toLinear: LinearConverter): boolean => {\n const raw = getRawOklab(input);\n // sRGB-bounded inputs (hex, rgb, hsl, etc.) are always inside the wider P3/Rec.2020 gamut\n if (raw === null) return true;\n const [r, g, b] = toLinear(raw.l, raw.a, raw.b);\n return isLinearInGamut(r, g, b);\n};\n\n/**\n * Maps an out-of-gamut color into a custom gamut using the CSS Color 4 gamut mapping algorithm.\n * Returns null for sRGB-bounded inputs (hex, rgb, hsl, etc.) — pass through unchanged.\n * Returns the mapped OklabColor otherwise.\n * toLinear: OKLab → unclamped linear target-space channels\n * fromLinear: linear target-space channels → OKLab (for deltaEOK of clipped colors)\n */\nexport const toGamutCustom = (\n input: AnyColor,\n toLinear: LinearConverter,\n fromLinear: FromLinearConverter\n): OklabColor | null => {\n const raw = getRawOklab(input);\n if (raw === null) return null;\n const { l, a, b, alpha } = raw;\n return cssGamutMap(l, a, b, alpha, toLinear, fromLinear);\n};\n","import { labToXyzValues, labToXyzValuesInto } from './colorModels/lab.js';\nimport { oklabToLinear, oklabToLinearInto } from './colorModels/oklab.js';\nimport { xyzD50ToLinearSrgb, xyzD50ToLinearSrgbInto } from './colorModels/xyz.js';\nimport { srgbFromLinear, srgbToLinear } from './transfer.js';\n\nconst DEG_TO_RAD = Math.PI / 180;\n\n/**\n * Convert OKLCH to unclamped linear sRGB channels without object allocation.\n * This is the shared expensive step (OKLCH → OKLab → linear sRGB via 3× cbrt + matrix).\n * Use this when you need multiple color spaces from the same color — compute once,\n * then pass to linearToP3Channels / linearToRec2020Channels (from their plugins) to avoid duplicate work.\n *\n * In-gamut sRGB colors have all channels in [0, 1]. Channels outside this range\n * indicate an out-of-gamut color — use as a free gamut check.\n */\nexport const oklchToLinear = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return oklabToLinear(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of oklchToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklchToLinearInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n oklabToLinearInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * Convert OKLCH to gamma-encoded sRGB channels without object allocation.\n * Returns [r, g, b] in [0, 1] for in-gamut colors. Out-of-gamut channels may\n * exceed this range — callers are responsible for clamping before byte encoding.\n */\nexport const oklchToRgbChannels = (l: number, c: number, h: number): [number, number, number] => {\n const [r, g, b] = oklchToLinear(l, c, h);\n return [srgbFromLinear(r), srgbFromLinear(g), srgbFromLinear(b)];\n};\n\n/** Zero-allocation sibling of oklchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */\nexport const oklchToRgbChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n oklchToLinearInto(out, l, c, h);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * Convert OKLCH to both linear and gamma-encoded sRGB channels in a single pass.\n * Avoids recomputing the expensive OKLCH → OKLab → linear step when you need both.\n *\n * Linear channels are useful for gamut checks (all in [0,1] = in sRGB gamut)\n * and as input to P3/Rec2020 conversion matrices.\n * Gamma channels are ready for display on an sRGB canvas (still need clamping for out-of-gamut).\n *\n * Returns [[lr, lg, lb], [sr, sg, sb]] — both in [0, 1] for in-gamut colors.\n */\nexport const oklchToLinearAndSrgb = (\n l: number,\n c: number,\n h: number\n): [[number, number, number], [number, number, number]] => {\n const [lr, lg, lb] = oklchToLinear(l, c, h);\n return [\n [lr, lg, lb],\n [srgbFromLinear(lr), srgbFromLinear(lg), srgbFromLinear(lb)],\n ];\n};\n\n/**\n * Zero-allocation sibling of oklchToLinearAndSrgb — writes linear channels into `linOut`\n * and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.\n */\nexport const oklchToLinearAndSrgbInto = (\n linOut: Float64Array | number[],\n srgbOut: Float64Array | number[],\n l: number,\n c: number,\n h: number\n): void => {\n oklchToLinearInto(linOut, l, c, h);\n srgbOut[0] = srgbFromLinear(linOut[0]!);\n srgbOut[1] = srgbFromLinear(linOut[1]!);\n srgbOut[2] = srgbFromLinear(linOut[2]!);\n};\n\n/**\n * Gamma-encoded sRGB (0–1) → linear sRGB (0–1). Vector sibling of `srgbToLinear`.\n * For byte-scale RGB, pass `r/255, g/255, b/255`. Output range tracks input:\n * channels outside [0, 1] are preserved with the CSS Color 4 extended transfer curve.\n */\nexport const rgbToLinear = (r: number, g: number, b: number): [number, number, number] => [\n srgbToLinear(r),\n srgbToLinear(g),\n srgbToLinear(b),\n];\n\n/** Zero-allocation sibling of rgbToLinear — writes [lr, lg, lb] into `out`. */\nexport const rgbToLinearInto = (out: Float64Array | number[], r: number, g: number, b: number): void => {\n out[0] = srgbToLinear(r);\n out[1] = srgbToLinear(g);\n out[2] = srgbToLinear(b);\n};\n\n/**\n * CIE Lab (D50) → unclamped linear sRGB (0–1). Goes via XYZ D50 with Bradford adaptation.\n * L in [0, 100]; a/b typically in [-128, 128]. Out-of-sRGB-gamut colors return channels\n * outside [0, 1] — use as a free gamut check or pass to `srgbFromLinear` for display.\n */\nexport const labToLinearSrgb = (l: number, a: number, b: number): [number, number, number] => {\n const [x, y, z] = labToXyzValues(l, a, b);\n return xyzD50ToLinearSrgb(x, y, z);\n};\n\n/** Zero-allocation sibling of labToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const labToLinearSrgbInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToXyzValuesInto(out, l, a, b);\n xyzD50ToLinearSrgbInto(out, out[0]!, out[1]!, out[2]!);\n};\n\n/**\n * CIE LCH (D50) → unclamped linear sRGB (0–1). Polar-to-rectangular to Lab, then Lab → linear sRGB.\n * L in [0, 100]; C is the chroma (0–~150); H in degrees. Out-of-gamut colors return channels\n * outside [0, 1] — useful in LCH render hot paths where you want linear pixels and a gamut check in one step.\n */\nexport const lchToLinearSrgb = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToLinearSrgb(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToLinearSrgb — writes [lr, lg, lb] into `out`. */\nexport const lchToLinearSrgbInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToLinearSrgbInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * CIE Lab (D50) → gamma-encoded sRGB (0–1). Convenience wrapper over `labToLinearSrgb` + `srgbFromLinear`.\n * In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range — clamp before byte encoding.\n */\nexport const labToRgbChannels = (l: number, a: number, b: number): [number, number, number] => {\n const [lr, lg, lb] = labToLinearSrgb(l, a, b);\n return [srgbFromLinear(lr), srgbFromLinear(lg), srgbFromLinear(lb)];\n};\n\n/** Zero-allocation sibling of labToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */\nexport const labToRgbChannelsInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n labToLinearSrgbInto(out, l, a, b);\n out[0] = srgbFromLinear(out[0]!);\n out[1] = srgbFromLinear(out[1]!);\n out[2] = srgbFromLinear(out[2]!);\n};\n\n/**\n * CIE LCH (D50) → gamma-encoded sRGB (0–1). Polar-to-rectangular to Lab, then Lab → gamma sRGB.\n * In-gamut colors return channels in [0, 1]; out-of-gamut channels may exceed this range.\n */\nexport const lchToRgbChannels = (l: number, c: number, h: number): [number, number, number] => {\n const hRad = h * DEG_TO_RAD;\n return labToRgbChannels(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToRgbChannels — writes [r, g, b] (gamma-encoded, 0–1) into `out`. */\nexport const lchToRgbChannelsInto = (out: Float64Array | number[], l: number, c: number, h: number): void => {\n const hRad = h * DEG_TO_RAD;\n labToRgbChannelsInto(out, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/**\n * CIE Lab (D50) → both linear and gamma-encoded sRGB in a single pass.\n * Avoids recomputing Lab → XYZ D50 → linear sRGB when you need both (e.g. gamut check + pixel).\n * Returns [[lr, lg, lb], [sr, sg, sb]].\n */\nexport const labToLinearAndSrgb = (\n l: number,\n a: number,\n b: number\n): [[number, number, number], [number, number, number]] => {\n const [lr, lg, lb] = labToLinearSrgb(l, a, b);\n return [\n [lr, lg, lb],\n [srgbFromLinear(lr), srgbFromLinear(lg), srgbFromLinear(lb)],\n ];\n};\n\n/**\n * Zero-allocation sibling of labToLinearAndSrgb — writes linear channels into `linOut`\n * and gamma-encoded sRGB channels into `srgbOut`. The two buffers must be distinct.\n */\nexport const labToLinearAndSrgbInto = (\n linOut: Float64Array | number[],\n srgbOut: Float64Array | number[],\n l: number,\n a: number,\n b: number\n): void => {\n labToLinearSrgbInto(linOut, l, a, b);\n srgbOut[0] = srgbFromLinear(linOut[0]!);\n srgbOut[1] = srgbFromLinear(linOut[1]!);\n srgbOut[2] = srgbFromLinear(linOut[2]!);\n};\n\n/**\n * CIE LCH (D50) → both linear and gamma-encoded sRGB in a single pass.\n * Polar-to-rectangular to Lab, then Lab → linear + gamma sRGB. Returns [[lr, lg, lb], [sr, sg, sb]].\n */\nexport const lchToLinearAndSrgb = (\n l: number,\n c: number,\n h: number\n): [[number, number, number], [number, number, number]] => {\n const hRad = h * DEG_TO_RAD;\n return labToLinearAndSrgb(l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n\n/** Zero-allocation sibling of lchToLinearAndSrgb — same buffer rules as labToLinearAndSrgbInto. */\nexport const lchToLinearAndSrgbInto = (\n linOut: Float64Array | number[],\n srgbOut: Float64Array | number[],\n l: number,\n c: number,\n h: number\n): void => {\n const hRad = h * DEG_TO_RAD;\n labToLinearAndSrgbInto(linOut, srgbOut, l, c * Math.cos(hRad), c * Math.sin(hRad));\n};\n"]}