@colordx/core
Advanced tools
| 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
-1
@@ -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":"mKAeA,IAAMA,CAAAA,CAAYC,MAAiD,CACjE,CAAA,CAAGC,EAAMD,GAAAA,CAAI,CAAA,CAAG,CAAA,CAAG,GAAG,CAAA,CACtB,CAAA,CAAG,KAAK,GAAA,CAAI,CAAA,CAAGA,IAAI,CAAC,CAAA,CACpB,EAAGE,CAAAA,CAAaF,GAAAA,CAAI,CAAC,CAAA,CACrB,KAAA,CAAOC,CAAAA,CAAMD,IAAI,KAAA,CAAO,CAAA,CAAG,CAAC,CAAA,CAC5B,UAAA,CAAY,KACd,CAAA,CAAA,CAEaG,CAAAA,CAAeC,CAAAA,EAA4B,CACtD,IAAMC,CAAAA,CAAMC,IAASF,CAAG,CAAA,CAClBG,EAAI,IAAA,CAAK,IAAA,CAAKF,EAAI,CAAA,EAAK,CAAA,CAAIA,CAAAA,CAAI,CAAA,EAAK,CAAC,CAAA,CACrCG,EAAK,IAAA,CAAK,KAAA,CAAMH,EAAI,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CAAI,IAAA,CAAK,EAAA,CAAM,GAAA,CACjD,OAAO,CACL,EAAGA,CAAAA,CAAI,CAAA,CACP,EAAAE,CAAAA,CAEA,CAAA,CAAGA,EAAI,KAAA,CAAS,CAAA,CAAIC,CAAAA,CAAI,CAAA,CAAIA,CAAAA,CAAI,GAAA,CAAMA,EACtC,KAAA,CAAOH,CAAAA,CAAI,MACX,UAAA,CAAY,KACd,CACF,CAAA,CAkBA,IAAMI,CAAAA,CAAoB,CAAC,CAAE,CAAA,CAAAC,EAAG,CAAA,CAAAH,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAG,CAAM,IAC1CC,CAAAA,CAAkB,CAChB,CAAA,CAAAF,CAAAA,CACA,CAAA,CAAGH,CAAAA,CAAI,KAAK,GAAA,CAAKC,CAAAA,CAAI,KAAK,EAAA,CAAM,GAAG,EACnC,CAAA,CAAGD,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAKC,CAAAA,CAAI,IAAA,CAAK,GAAM,GAAG,CAAA,CACnC,MAAAG,CAAAA,CACA,UAAA,CAAY,KACd,CAAC,CAAA,CAEUE,CAAAA,CAAkBC,CAAAA,EAAoC,CAGjE,GAFI,CAACC,CAAAA,CAASD,CAAK,GACdA,CAAAA,CAAmC,UAAA,GAAe,OACnD,CAACE,CAAAA,CAAQF,CAAAA,CAAO,CAAC,GAAA,CAAK,GAAA,CAAK,GAAG,CAAC,CAAA,CAAG,OAAO,IAAA,CAC7C,GAAM,CAAE,EAAAJ,CAAAA,CAAG,CAAA,CAAAH,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAG,EAAQ,CAAE,CAAA,CAAIG,EAC/B,OAAI,CAACG,EAAYP,CAAC,CAAA,EAAK,CAACO,CAAAA,CAAYV,CAAC,CAAA,EAAK,CAACU,CAAAA,CAAYT,CAAC,GAAK,CAACS,CAAAA,CAAYN,CAAK,CAAA,CAAU,IAAA,CAClFF,CAAAA,CACLV,CAAAA,CAAS,CACP,CAAA,CAAGmB,EAASR,CAAC,CAAA,CACb,EAAGQ,CAAAA,CAASX,CAAC,EACb,CAAA,CAAGW,CAAAA,CAASV,CAAC,CAAA,CACb,KAAA,CAAOU,CAAAA,CAASP,CAAK,CACvB,CAAC,CACH,CACF,CAAA,CAGMQ,CAAAA,CAAS,IAAI,MAAA,CACjB,CAAA,gBAAA,EAAmBC,CAAW,CAAA,mBAAA,EAAsBA,CAAW,CAAA,mBAAA,EACjDA,CAAW,CAAA,4CAAA,EACFA,CAAW,wBAClC,GACF,CAAA,CAEaC,EAAkBP,CAAAA,EAAoC,CACjE,GAAI,OAAOA,CAAAA,EAAU,QAAA,CAAU,OAAO,IAAA,CACtC,IAAMQ,EAAIH,CAAAA,CAAO,IAAA,CAAKL,EAAM,IAAA,EAAM,CAAA,EAAG,MAAA,CACrC,GAAI,CAACQ,EAAG,OAAO,IAAA,CACf,IAAMZ,GAAA,CAAIa,CAAAA,CAASD,EAAE,CAAE,CAAA,CACjBf,CAAAA,CAAIe,CAAAA,CAAE,EAAA,CAAKC,CAAAA,CAASD,EAAE,CAAE,CAAA,CAAI,GAAA,CAAMC,CAAAA,CAASD,CAAAA,CAAE,CAAE,EAC/CE,CAAAA,CAAOF,CAAAA,CAAE,EAAA,EAAI,WAAA,EAAY,EAAK,KAAA,CAC9Bd,EAAIe,CAAAA,CAASD,CAAAA,CAAE,CAAE,CAAA,EAAKG,CAAAA,CAAYD,CAAI,CAAA,EAAK,CAAA,CAAA,CAC3Cb,CAAAA,CAAQW,CAAAA,CAAE,EAAA,GAAO,MAAA,CAAY,EAAIC,CAAAA,CAASD,CAAAA,CAAE,EAAE,CAAA,EAAKA,CAAAA,CAAE,IAAM,GAAA,CAAM,CAAA,CAAA,CACvE,OAAOb,CAAAA,CAAkBV,CAAAA,CAAS,IAAEW,IAAG,CAAA,CAAAH,CAAAA,CAAG,EAAAC,CAAAA,CAAG,KAAA,CAAAG,CAAM,CAAC,CAAC,CACvD,CAAA,CCpFA,IAAMX,CAAAA,CAAc,CAAC0B,CAAAA,CAAcC,CAAAA,CAASC,CAAAA,GAAkB,CAC5DF,CAAAA,CAAa,SAAA,CAAU,MAAQ,SAAUG,CAAAA,CAAY,CAAA,CAAG,CACtD,GAAM,CAAE,EAAAnB,CAAAA,CAAG,CAAA,CAAAH,EAAG,CAAA,CAAG,KAAA,CAAAI,CAAM,CAAA,CAAIR,CAAAA,CAAY,IAAA,CAAK,OAAA,EAAS,CAAA,CAC/C2B,IAAKC,CAAAA,CAAMxB,CAAAA,CAAGsB,CAAS,CAAA,CAC7B,OAAO,CACL,CAAA,CAAGE,CAAAA,CAAMrB,CAAAA,CAAGmB,CAAS,CAAA,CACrB,CAAA,CAAGC,IAEH,CAAA,CAAGvB,CAAAA,CAAI,MAAS,CAAA,CAAIwB,CAAAA,CAAM,EAAGF,CAAS,CAAA,CACtC,KAAA,CAAAlB,CAAAA,CACA,UAAA,CAAY,KACd,CACF,CAAA,CACAe,CAAAA,CAAa,SAAA,CAAU,WAAA,CAAc,SAAUG,CAAAA,CAAY,EAAG,CAC5D,GAAM,CAAE,CAAA,CAAAnB,CAAAA,CAAG,CAAA,CAAAH,EAAG,CAAA,CAAG,KAAA,CAAAI,CAAM,CAAA,CAAI,IAAA,CAAK,MAAMkB,CAAS,CAAA,CACzCG,CAAAA,CAAIzB,CAAAA,GAAM,CAAA,CAAI,MAAA,CAAS,EAC7B,OAAOI,CAAAA,CAAQ,EAAI,CAAA,IAAA,EAAOD,CAAC,IAAIH,CAAC,CAAA,CAAA,EAAIyB,CAAC,CAAA,GAAA,EAAMrB,CAAK,CAAA,CAAA,CAAA,CAAM,OAAOD,CAAC,CAAA,CAAA,EAAIH,CAAC,CAAA,CAAA,EAAIyB,CAAC,GAC1E,CAAA,CACAL,CAAAA,CAAQ,IAAA,CAAKd,CAAAA,CAAgBQ,CAAc,CAAA,CAC3CO,EAAc,IAAA,CAAK,CAACf,CAAAA,CAAgB,KAAK,CAAA,CAAG,CAACQ,EAAgB,KAAK,CAAC,EACrE,CAAA,CAEOY,CAAAA,CAAQjC","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":"gWAiBA,IAAMA,EAA6B,CAAC,CAAA,CAAWC,EAAWC,CAAAA,GACxDC,mBAAAA,CAAkB,GAAGC,mBAAAA,CAAoB,CAAA,CAAGH,CAAAA,CAAGC,CAAC,CAAC,CAAA,CAiBtCG,CAAAA,CAA0B,CAACC,CAAAA,CAAYC,CAAAA,CAAYC,IAAyC,CACvG,GAAM,CAACC,CAAAA,CAAGR,EAAGC,CAAC,CAAA,CAAIQ,oBAA0BJ,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CACtD,OAAO,CAACG,mBAAAA,CAAkBF,CAAC,CAAA,CAAGE,mBAAAA,CAAkBV,CAAC,CAAA,CAAGU,mBAAAA,CAAkBT,CAAC,CAAC,CAC1E,CAAA,CAGaU,CAAAA,CAA8B,CAACC,CAAAA,CAA8BP,CAAAA,CAAYC,EAAYC,CAAAA,GAAqB,CACrHM,oBAA8BD,CAAAA,CAAKP,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,EAC7CK,CAAAA,CAAI,CAAC,EAAIF,mBAAAA,CAAkBE,CAAAA,CAAI,CAAC,CAAE,CAAA,CAClCA,CAAAA,CAAI,CAAC,EAAIF,mBAAAA,CAAkBE,CAAAA,CAAI,CAAC,CAAE,CAAA,CAClCA,EAAI,CAAC,CAAA,CAAIF,oBAAkBE,CAAAA,CAAI,CAAC,CAAE,EACpC,CAAA,CAQaE,EAAyB,CAACC,CAAAA,CAAWC,EAAWC,CAAAA,GAC3Db,CAAAA,CAAwB,GAAGc,mBAAAA,CAAcH,EAAGC,CAAAA,CAAGC,CAAC,CAAC,CAAA,CAGtCE,CAAAA,CAA6B,CAACP,CAAAA,CAA8BG,CAAAA,CAAWC,CAAAA,CAAWC,CAAAA,GAAoB,CACjHG,mBAAAA,CAAkBR,CAAAA,CAAKG,EAAGC,CAAAA,CAAGC,CAAC,EAC9BN,CAAAA,CAA4BC,CAAAA,CAAKA,CAAAA,CAAI,CAAC,EAAIA,CAAAA,CAAI,CAAC,EAAIA,CAAAA,CAAI,CAAC,CAAE,EAC5D,CAAA,CAEMS,CAAAA,CAAa,IAAA,CAAK,GAAK,GAAA,CAOhBC,CAAAA,CAAuB,CAACP,CAAAA,CAAWQ,CAAAA,CAAWtB,IACzDG,CAAAA,CAAwB,GAAGoB,mBAAAA,CAAgBT,CAAAA,CAAGQ,EAAGtB,CAAC,CAAC,EAGxCwB,CAAAA,CAA2B,CAACb,EAA8BG,CAAAA,CAAWQ,CAAAA,CAAWtB,CAAAA,GAAoB,CAC/GyB,oBAAoBd,CAAAA,CAAKG,CAAAA,CAAGQ,EAAGtB,CAAC,CAAA,CAChCU,EAA4BC,CAAAA,CAAKA,CAAAA,CAAI,CAAC,CAAA,CAAIA,EAAI,CAAC,CAAA,CAAIA,EAAI,CAAC,CAAE,EAC5D,CAAA,CAMae,CAAAA,CAAuB,CAACZ,CAAAA,CAAWC,CAAAA,CAAWC,IAAwC,CACjG,IAAMW,EAAOX,CAAAA,CAAII,CAAAA,CACjB,OAAOC,CAAAA,CAAqBP,CAAAA,CAAGC,CAAAA,CAAI,IAAA,CAAK,IAAIY,CAAI,CAAA,CAAGZ,EAAI,IAAA,CAAK,GAAA,CAAIY,CAAI,CAAC,CACvE,CAAA,CAGaC,CAAAA,CAA2B,CAACjB,CAAAA,CAA8BG,CAAAA,CAAWC,EAAWC,CAAAA,GAAoB,CAC/G,IAAMW,CAAAA,CAAOX,CAAAA,CAAII,CAAAA,CACjBI,CAAAA,CAAyBb,EAAKG,CAAAA,CAAGC,CAAAA,CAAI,KAAK,GAAA,CAAIY,CAAI,EAAGZ,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIY,CAAI,CAAC,EACzE,CAAA,CAMaE,EAAkBC,CAAAA,EAA6BC,mBAAAA,CAAcD,EAAOE,mBAAoB,CAAA,CAE/FC,CAAAA,CAAkB,CAACC,EAAcC,CAAAA,CAASC,CAAAA,GAAkB,CAChEF,CAAAA,CAAa,cAAA,CAAkBJ,GAAoB,CACjD,IAAMO,CAAAA,CAASC,mBAAAA,CAAcR,EAAOE,mBAAAA,CAAsBlC,CAA0B,EACpF,OAAOuC,CAAAA,GAAW,KAAOH,CAAAA,CAAa,cAAA,CAAeG,CAAM,CAAA,CAAI,IAAIH,CAAAA,CAAaJ,CAAK,CACvF,CAAA,CACAI,CAAAA,CAAa,UAAU,SAAA,CAAY,SAAUK,EAAY,CAAA,CAAG,CAC1D,GAAM,CAAE,CAAA,CAAAhC,EAAG,CAAA,CAAAR,CAAAA,CAAG,EAAG,KAAA,CAAAyC,CAAM,CAAA,CAAIC,mBAAAA,CAAgB,KAAK,OAAA,EAAS,EACzD,OAAO,CACL,EAAGC,mBAAAA,CAAMnC,CAAAA,CAAGgC,CAAS,CAAA,CACrB,EAAGG,mBAAAA,CAAM3C,CAAAA,CAAGwC,CAAS,CAAA,CACrB,CAAA,CAAGG,oBAAM,CAAA,CAAGH,CAAS,CAAA,CACrB,KAAA,CAAAC,EACA,UAAA,CAAY,SACd,CACF,CAAA,CACAN,CAAAA,CAAa,UAAU,eAAA,CAAkB,SAAUK,CAAAA,CAAY,CAAA,CAAG,CAChE,GAAM,CAAE,EAAAhC,CAAAA,CAAG,CAAA,CAAAR,EAAG,CAAA,CAAG,KAAA,CAAAyC,CAAM,CAAA,CAAI,KAAK,SAAA,CAAUD,CAAS,EACnD,OAAOC,CAAAA,CAAQ,EAAI,CAAA,cAAA,EAAiBjC,CAAC,CAAA,CAAA,EAAIR,CAAC,IAAI,CAAC,CAAA,GAAA,EAAMyC,CAAK,CAAA,CAAA,CAAA,CAAM,CAAA,cAAA,EAAiBjC,CAAC,CAAA,CAAA,EAAIR,CAAC,CAAA,CAAA,EAAI,CAAC,GAC9F,CAAA,CACAoC,CAAAA,CAAQ,KAAKQ,mBAAAA,CAAoBC,mBAAkB,EACnDR,CAAAA,CAAc,IAAA,CAAK,CAACO,mBAAAA,CAAoB,SAAS,EAAG,CAACC,mBAAAA,CAAoB,SAAS,CAAC,EACrF,EAEOC,CAAAA,CAAQZ","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"]} |
+1
-1
| { | ||
| "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", |
+15
-0
@@ -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":"yNAMA,IAAMA,EACJ,uIAAA,CAEIC,CAAAA,CACJ,wHAMIC,CAAAA,CAAeC,CAAAA,EAA+E,CAClG,GAAI,OAAOA,CAAAA,EAAU,QAAA,EAAYA,IAAU,IAAA,CAAM,CAC/C,IAAMC,CAAAA,CAAMD,CAAAA,CAEZ,GAAI,GAAA,GAAOC,CAAAA,EAAO,GAAA,GAAOA,CAAAA,EAAO,MAAOA,CAAAA,EAAOA,CAAAA,CAAI,aAAe,KAAA,EAAS,EAAE,MAAOA,CAAAA,CAAAA,EAAQ,EAAE,MAAOA,CAAAA,CAAAA,CAAM,CACxG,IAAMC,CAAAA,CAAIF,CAAAA,CACV,GACE,OAAOE,CAAAA,CAAE,GAAM,QAAA,EACf,OAAOA,CAAAA,CAAE,CAAA,EAAM,UACf,OAAOA,CAAAA,CAAE,GAAM,QAAA,EACf,OAAOA,EAAE,KAAA,EAAU,QAAA,CAEnB,OAAO,CAAE,EAAGA,CAAAA,CAAE,CAAA,CAAG,EAAGA,CAAAA,CAAE,CAAA,CAAG,EAAGA,CAAAA,CAAE,CAAA,CAAG,KAAA,CAAOA,CAAAA,CAAE,KAAM,CAEpD,CAEA,GAAI,GAAA,GAAOD,CAAAA,EAAO,MAAOA,CAAAA,EAAO,GAAA,GAAOA,GAAOA,CAAAA,CAAI,UAAA,GAAe,OAAS,EAAE,GAAA,GAAOA,IAAQ,EAAE,GAAA,GAAOA,GAAM,CACxG,IAAMC,CAAAA,CAAIF,CAAAA,CACV,GAAI,OAAOE,CAAAA,CAAE,GAAM,QAAA,EAAY,OAAOA,EAAE,CAAA,EAAM,QAAA,EAAY,OAAOA,CAAAA,CAAE,GAAM,QAAA,CAAU,CACjF,IAAMC,CAAAA,CAAQD,CAAAA,CAAE,EAAI,IAAA,CAAK,EAAA,CAAM,GAAA,CAC/B,OAAO,CAAE,CAAA,CAAGA,CAAAA,CAAE,EAAG,CAAA,CAAGA,CAAAA,CAAE,EAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAG,CAAA,CAAGD,EAAE,CAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAA,CAAG,MAAOD,CAAAA,CAAE,KAAM,CACpF,CACF,CAEA,GAAID,CAAAA,CAAI,aAAe,KAAA,CAAO,CAC5B,IAAMC,CAAAA,CAAIF,CAAAA,CACV,GAAI,OAAOE,CAAAA,CAAE,GAAM,QAAA,EAAY,OAAOA,EAAE,CAAA,EAAM,QAAA,EAAY,OAAOA,CAAAA,CAAE,CAAA,EAAM,QAAA,CAAU,OAAO,KAC1F,GAAM,CAAE,EAAAE,CAAAA,CAAG,CAAA,CAAAC,EAAG,CAAA,CAAAC,CAAE,EAAIC,mBAAAA,CAASL,CAAC,EACxB,CAACM,CAAAA,CAAIC,EAAIC,CAAE,CAAA,CAAIC,oBAAmBP,CAAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,CACzC,CAACM,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAIC,mBAAAA,CAAkBP,EAAIC,CAAAA,CAAIC,CAAE,CAAA,CACjD,OAAO,CAAE,CAAA,CAAGE,CAAAA,CAAI,EAAGC,CAAAA,CAAI,CAAA,CAAGC,EAAI,KAAA,CAAO,OAAOZ,CAAAA,CAAE,KAAA,EAAU,SAAWA,CAAAA,CAAE,KAAA,CAAQ,CAAE,CACjF,CACA,OAAO,IACT,CAEA,GAAI,OAAOF,CAAAA,EAAU,SAAU,CAC7B,IAAIgB,EAAInB,CAAAA,CAAS,IAAA,CAAKG,CAAK,CAAA,CAC3B,GAAIgB,CAAAA,CAAG,CACL,IAAMC,CAAAA,CAAID,CAAAA,CAAE,CAAC,CAAA,CAAI,MAAA,CAAOA,EAAE,CAAC,CAAC,EAAI,GAAA,CAAM,MAAA,CAAOA,EAAE,CAAC,CAAC,EAC3Cd,CAAAA,CAAIc,CAAAA,CAAE,CAAC,CAAA,CAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,IAAA,CAAQ,OAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC7CE,CAAAA,CAAOF,EAAE,CAAC,CAAA,EAAG,aAAY,EAAK,KAAA,CAE9Bb,EADO,MAAA,CAAOa,CAAAA,CAAE,CAAC,CAAC,CAAA,EAAKG,mBAAAA,CAAYD,CAAI,GAAK,CAAA,CAAA,CAC7B,IAAA,CAAK,GAAM,GAAA,CAC1BE,CAAAA,CAAQJ,EAAE,CAAC,CAAA,GAAM,MAAA,CAAY,CAAA,CAAI,OAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,EAAKA,CAAAA,CAAE,CAAC,CAAA,CAAI,GAAA,CAAM,CAAA,CAAA,CACpE,OAAO,CAAE,CAAA,CAAAC,CAAAA,CAAG,EAAGf,CAAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAA,CAAG,EAAGD,CAAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAA,CAAG,MAAAiB,CAAM,CAClE,CAEA,GADAJ,CAAAA,CAAIlB,CAAAA,CAAS,IAAA,CAAKE,CAAK,CAAA,CACnBgB,CAAAA,CAAG,CACL,IAAMC,CAAAA,CAAID,EAAE,CAAC,CAAA,CAAI,OAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,GAAA,CAAM,OAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC3CK,CAAAA,CAAIL,CAAAA,CAAE,CAAC,EAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,KAAQ,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC7C,EAAIA,CAAAA,CAAE,CAAC,EAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,IAAA,CAAQ,MAAA,CAAOA,EAAE,CAAC,CAAC,EAC7CI,CAAAA,CAAQJ,CAAAA,CAAE,CAAC,CAAA,GAAM,MAAA,CAAY,CAAA,CAAI,MAAA,CAAOA,EAAE,CAAC,CAAC,GAAKA,CAAAA,CAAE,CAAC,EAAI,GAAA,CAAM,CAAA,CAAA,CACpE,OAAO,CAAE,EAAAC,CAAAA,CAAG,CAAA,CAAAI,EAAG,CAAA,CAAG,KAAA,CAAAD,CAAM,CAC1B,CACA,OAAO,IACT,CAEA,OAAO,IACT,CAAA,CAUME,EAAM,IAAA,CAENC,CAAAA,CAAkB,CAACC,CAAAA,CAAWC,CAAAA,CAAWC,CAAAA,GAC7CF,CAAAA,EAAK,CAACF,CAAAA,EAAOE,CAAAA,EAAK,EAAIF,CAAAA,EAAOG,CAAAA,EAAK,CAACH,CAAAA,EAAOG,CAAAA,EAAK,CAAA,CAAIH,CAAAA,EAAOI,GAAK,CAACJ,CAAAA,EAAOI,GAAK,CAAA,CAAIJ,CAAAA,CAE5EK,EAAgB,CAACH,CAAAA,CAAWC,CAAAA,CAAWC,CAAAA,GAC3CF,GAAK,CAAA,EAAKA,CAAAA,EAAK,GAAKC,CAAAA,EAAK,CAAA,EAAKA,GAAK,CAAA,EAAKC,CAAAA,EAAK,GAAKA,CAAAA,EAAK,CAAA,CAO5CE,GAAe5B,CAAAA,EAA6B,CACvD,IAAM6B,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAC7B,GAAI6B,CAAAA,GAAQ,IAAA,CAAM,OAAO,KAAA,CACzB,GAAM,CAACL,CAAAA,CAAGC,CAAAA,CAAG,CAAC,CAAA,CAAIK,mBAAAA,CAAcD,CAAAA,CAAI,CAAA,CAAGA,EAAI,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CACnD,OAAON,EAAgBC,CAAAA,CAAGC,CAAAA,CAAG,CAAC,CAChC,EAIMM,CAAAA,CAAM,GAAA,CACNC,EAAgB,IAAA,CAGhBC,CAAAA,CAAW,CAACC,CAAAA,CAAyCC,CAAAA,GAAoD,CAC7G,IAAMC,CAAAA,CAAKF,EAAK,CAAC,CAAA,CAAIC,EAAK,CAAC,CAAA,CACrBE,EAAKH,CAAAA,CAAK,CAAC,CAAA,CAAIC,CAAAA,CAAK,CAAC,CAAA,CACrBG,CAAAA,CAAKJ,EAAK,CAAC,CAAA,CAAIC,EAAK,CAAC,CAAA,CAC3B,OAAO,IAAA,CAAK,IAAA,CAAKC,EAAKA,CAAAA,CAAKC,CAAAA,CAAKA,EAAKC,CAAAA,CAAKA,CAAE,CAC9C,CAAA,CAcMC,CAAAA,CAAc,CAClBtB,CAAAA,CACAI,EACAK,CAAAA,CACAN,CAAAA,CACAoB,EACAC,CAAAA,GACe,CACf,GAAIxB,CAAAA,EAAK,CAAA,CAAG,OAAO,CAAE,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,KAAA,CAAAG,CAAM,CAAA,CAC7C,GAAIH,CAAAA,EAAK,CAAA,CAAG,OAAO,CAAE,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,KAAA,CAAAG,CAAM,CAAA,CAE7C,GAAM,CAACsB,CAAAA,CAAIC,EAAIC,CAAE,CAAA,CAAIJ,EAASvB,CAAAA,CAAGI,CAAAA,CAAGK,CAAC,CAAA,CACrC,GAAIC,CAAAA,CAAce,CAAAA,CAAIC,EAAIC,CAAE,CAAA,CAAG,OAAO,CAAE,CAAA,CAAA3B,EAAG,CAAA,CAAAI,CAAAA,CAAG,EAAAK,CAAAA,CAAG,KAAA,CAAAN,CAAM,CAAA,CAGvD,IAAMyB,EAAQJ,CAAAA,CAAWK,mBAAAA,CAAMJ,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAA,CAAGI,mBAAAA,CAAMH,EAAI,CAAA,CAAG,CAAC,EAAGG,mBAAAA,CAAMF,CAAAA,CAAI,EAAG,CAAC,CAAC,EAC1E,GAAIX,CAAAA,CAASY,EAAO,CAAC5B,CAAAA,CAAGI,EAAGK,CAAC,CAAC,CAAA,EAAKK,CAAAA,CAChC,OAAO,CAAE,CAAA,CAAGc,EAAM,CAAC,CAAA,CAAG,EAAGA,CAAAA,CAAM,CAAC,EAAG,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAA,CAAG,KAAA,CAAAzB,CAAM,CAAA,CAGxD,IAAMjB,EAAO,IAAA,CAAK,KAAA,CAAMuB,CAAAA,CAAGL,CAAC,EACtB0B,CAAAA,CAAI,IAAA,CAAK,KAAK1B,CAAAA,CAAIA,CAAAA,CAAIK,EAAIA,CAAC,CAAA,CAC7BsB,CAAAA,CAAK,CAAA,CACLC,EAAKF,CAAAA,CACLG,CAAAA,CAAa,KACbC,CAAAA,CAA8CN,CAAAA,CAElD,KAAOI,CAAAA,CAAKD,CAAAA,CAAKhB,CAAAA,EAAe,CAC9B,IAAMoB,CAAAA,CAAAA,CAAOJ,CAAAA,CAAKC,GAAM,CAAA,CAClBI,CAAAA,CAAKD,EAAM,IAAA,CAAK,GAAA,CAAIjD,CAAI,CAAA,CACxBmD,CAAAA,CAAKF,EAAM,IAAA,CAAK,GAAA,CAAIjD,CAAI,CAAA,CACxB,CAACK,EAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAI8B,CAAAA,CAASvB,EAAGoC,CAAAA,CAAIC,CAAE,EAEvC,GAAIJ,CAAAA,EAAcvB,EAAcnB,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAG,CAC3CsC,EAAKI,CAAAA,CACL,QACF,CAEA,IAAMG,CAAAA,CAAYd,EAAWK,mBAAAA,CAAMtC,CAAAA,CAAI,CAAA,CAAG,CAAC,EAAGsC,mBAAAA,CAAMrC,CAAAA,CAAI,EAAG,CAAC,CAAA,CAAGqC,oBAAMpC,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAC,CAAA,CAC9EyC,EAAWI,CAAAA,CACDtB,CAAAA,CAASsB,EAAW,CAACtC,CAAAA,CAAGoC,EAAIC,CAAE,CAAC,CAAA,EAEhCvB,CAAAA,EACPiB,EAAKI,CAAAA,CACLF,CAAAA,CAAa,OAEbD,CAAAA,CAAKG,EAET,CAEA,OAAO,CAAE,CAAA,CAAGD,CAAAA,CAAS,CAAC,CAAA,CAAG,CAAA,CAAGA,EAAS,CAAC,CAAA,CAAG,EAAGA,CAAAA,CAAS,CAAC,CAAA,CAAG,KAAA,CAAA/B,CAAM,CACjE,CAAA,CAOaoC,GAAkBxD,CAAAA,EAAuC,CACpE,IAAM6B,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAC7B,GAAI6B,IAAQ,IAAA,CAAM,OAAO,KACzB,GAAM,CAAE,EAAAZ,CAAAA,CAAG,CAAA,CAAAI,CAAAA,CAAG,CAAA,CAAG,MAAAD,CAAM,CAAA,CAAIS,EAC3B,OAAOU,CAAAA,CAAYtB,EAAGI,CAAAA,CAAG,CAAA,CAAGD,CAAAA,CAAOU,mBAAAA,CAAef,mBAAiB,CACrE,CAAA,CAEa0C,GAAgB,CAACzD,CAAAA,CAAiBwC,IAAuC,CACpF,IAAMX,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAE7B,GAAI6B,IAAQ,IAAA,CAAM,OAAO,MACzB,GAAM,CAACL,EAAGC,CAAAA,CAAGC,CAAC,EAAIc,CAAAA,CAASX,CAAAA,CAAI,EAAGA,CAAAA,CAAI,CAAA,CAAGA,EAAI,CAAC,CAAA,CAC9C,OAAON,CAAAA,CAAgBC,EAAGC,CAAAA,CAAGC,CAAC,CAChC,CAAA,CASagC,EAAAA,CAAgB,CAC3B1D,CAAAA,CACAwC,CAAAA,CACAC,CAAAA,GACsB,CACtB,IAAMZ,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAC7B,GAAI6B,IAAQ,IAAA,CAAM,OAAO,IAAA,CACzB,GAAM,CAAE,CAAA,CAAAZ,CAAAA,CAAG,EAAAI,CAAAA,CAAG,CAAA,CAAAK,EAAG,KAAA,CAAAN,CAAM,EAAIS,CAAAA,CAC3B,OAAOU,EAAYtB,CAAAA,CAAGI,CAAAA,CAAGK,EAAGN,CAAAA,CAAOoB,CAAAA,CAAUC,CAAU,CACzD,ECrNA,IAAMkB,CAAAA,CAAa,KAAK,EAAA,CAAK,GAAA,CAWhBC,EAAgB,CAAC3C,CAAAA,CAAWf,EAAW2D,CAAAA,GAAwC,CAC1F,IAAM1D,CAAAA,CAAO0D,CAAAA,CAAIF,EACjB,OAAO7B,mBAAAA,CAAcb,EAAGf,CAAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAA,CAAGD,CAAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAC,CAChE,CAAA,CAGa2D,CAAAA,CAAoB,CAACC,CAAAA,CAA8B9C,CAAAA,CAAWf,EAAW2D,CAAAA,GAAoB,CACxG,IAAM1D,CAAAA,CAAO0D,CAAAA,CAAIF,EACjBK,mBAAAA,CAAkBD,CAAAA,CAAK9C,EAAGf,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,EAAGD,CAAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAC,EAClE,CAAA,CAOa8D,EAAAA,CAAqB,CAAChD,CAAAA,CAAWf,EAAW2D,CAAAA,GAAwC,CAC/F,GAAM,CAACrC,CAAAA,CAAGC,EAAGC,CAAC,CAAA,CAAIkC,CAAAA,CAAc3C,CAAAA,CAAGf,EAAG2D,CAAC,CAAA,CACvC,OAAO,CAACK,mBAAAA,CAAe1C,CAAC,CAAA,CAAG0C,mBAAAA,CAAezC,CAAC,CAAA,CAAGyC,mBAAAA,CAAexC,CAAC,CAAC,CACjE,EAGayC,EAAAA,CAAyB,CAACJ,EAA8B9C,CAAAA,CAAWf,CAAAA,CAAW2D,CAAAA,GAAoB,CAC7GC,EAAkBC,CAAAA,CAAK9C,CAAAA,CAAGf,EAAG2D,CAAC,CAAA,CAC9BE,EAAI,CAAC,CAAA,CAAIG,oBAAeH,CAAAA,CAAI,CAAC,CAAE,CAAA,CAC/BA,CAAAA,CAAI,CAAC,CAAA,CAAIG,mBAAAA,CAAeH,EAAI,CAAC,CAAE,CAAA,CAC/BA,CAAAA,CAAI,CAAC,CAAA,CAAIG,mBAAAA,CAAeH,EAAI,CAAC,CAAE,EACjC,CAAA,CAYaK,EAAAA,CAAuB,CAClCnD,CAAAA,CACAf,CAAAA,CACA2D,IACyD,CACzD,GAAM,CAACrD,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAIkD,CAAAA,CAAc3C,CAAAA,CAAGf,CAAAA,CAAG2D,CAAC,CAAA,CAC1C,OAAO,CACL,CAACrD,CAAAA,CAAIC,EAAIC,CAAE,CAAA,CACX,CAACwD,mBAAAA,CAAe1D,CAAE,CAAA,CAAG0D,mBAAAA,CAAezD,CAAE,CAAA,CAAGyD,mBAAAA,CAAexD,CAAE,CAAC,CAC7D,CACF,CAAA,CAMa2D,GAA2B,CACtCC,CAAAA,CACAC,EACAtD,CAAAA,CACAf,CAAAA,CACA2D,IACS,CACTC,CAAAA,CAAkBQ,EAAQrD,CAAAA,CAAGf,CAAAA,CAAG2D,CAAC,CAAA,CACjCU,CAAAA,CAAQ,CAAC,CAAA,CAAIL,mBAAAA,CAAeI,EAAO,CAAC,CAAE,CAAA,CACtCC,CAAAA,CAAQ,CAAC,CAAA,CAAIL,mBAAAA,CAAeI,EAAO,CAAC,CAAE,EACtCC,CAAAA,CAAQ,CAAC,EAAIL,mBAAAA,CAAeI,CAAAA,CAAO,CAAC,CAAE,EACxC,EAOaE,EAAAA,CAAc,CAAChD,EAAWC,CAAAA,CAAWC,CAAAA,GAAwC,CACxF+C,mBAAAA,CAAajD,CAAC,CAAA,CACdiD,mBAAAA,CAAahD,CAAC,CAAA,CACdgD,mBAAAA,CAAa/C,CAAC,CAChB,CAAA,CAGagD,GAAkB,CAACX,CAAAA,CAA8B,EAAWtC,CAAAA,CAAWC,CAAAA,GAAoB,CACtGqC,CAAAA,CAAI,CAAC,EAAIU,mBAAAA,CAAa,CAAC,CAAA,CACvBV,CAAAA,CAAI,CAAC,CAAA,CAAIU,mBAAAA,CAAahD,CAAC,CAAA,CACvBsC,CAAAA,CAAI,CAAC,CAAA,CAAIU,mBAAAA,CAAa/C,CAAC,EACzB,EAOaiD,CAAAA,CAAkB,CAAC1D,EAAWI,CAAAA,CAAWK,CAAAA,GAAwC,CAC5F,GAAM,CAACtB,CAAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,CAAIsE,mBAAAA,CAAe3D,EAAGI,CAAAA,CAAGK,CAAC,EACxC,OAAOf,mBAAAA,CAAmBP,EAAGC,CAAAA,CAAGC,CAAC,CACnC,CAAA,CAGauE,CAAAA,CAAsB,CAACd,CAAAA,CAA8B9C,CAAAA,CAAWI,EAAWK,CAAAA,GAAoB,CAC1GoD,mBAAAA,CAAmBf,CAAAA,CAAK9C,EAAGI,CAAAA,CAAGK,CAAC,EAC/BqD,mBAAAA,CAAuBhB,CAAAA,CAAKA,EAAI,CAAC,CAAA,CAAIA,CAAAA,CAAI,CAAC,EAAIA,CAAAA,CAAI,CAAC,CAAE,EACvD,CAAA,CAOaiB,GAAkB,CAAC/D,CAAAA,CAAWf,CAAAA,CAAW2D,CAAAA,GAAwC,CAC5F,IAAM1D,CAAAA,CAAO0D,EAAIF,CAAAA,CACjB,OAAOgB,EAAgB1D,CAAAA,CAAGf,CAAAA,CAAI,KAAK,GAAA,CAAIC,CAAI,EAAGD,CAAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAC,CAClE,CAAA,CAGa8E,EAAAA,CAAsB,CAAClB,CAAAA,CAA8B9C,EAAWf,CAAAA,CAAW2D,CAAAA,GAAoB,CAC1G,IAAM1D,CAAAA,CAAO0D,EAAIF,CAAAA,CACjBkB,CAAAA,CAAoBd,CAAAA,CAAK9C,CAAAA,CAAGf,EAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAGD,CAAAA,CAAI,KAAK,GAAA,CAAIC,CAAI,CAAC,EACpE,EAMa+E,CAAAA,CAAmB,CAACjE,EAAWI,CAAAA,CAAWK,CAAAA,GAAwC,CAC7F,GAAM,CAAClB,EAAIC,CAAAA,CAAIC,CAAE,EAAIiE,CAAAA,CAAgB1D,CAAAA,CAAGI,EAAGK,CAAC,CAAA,CAC5C,OAAO,CAACwC,mBAAAA,CAAe1D,CAAE,CAAA,CAAG0D,oBAAezD,CAAE,CAAA,CAAGyD,oBAAexD,CAAE,CAAC,CACpE,CAAA,CAGayE,CAAAA,CAAuB,CAACpB,CAAAA,CAA8B9C,CAAAA,CAAWI,EAAWK,CAAAA,GAAoB,CAC3GmD,EAAoBd,CAAAA,CAAK9C,CAAAA,CAAGI,EAAGK,CAAC,CAAA,CAChCqC,CAAAA,CAAI,CAAC,EAAIG,mBAAAA,CAAeH,CAAAA,CAAI,CAAC,CAAE,CAAA,CAC/BA,EAAI,CAAC,CAAA,CAAIG,oBAAeH,CAAAA,CAAI,CAAC,CAAE,CAAA,CAC/BA,CAAAA,CAAI,CAAC,CAAA,CAAIG,mBAAAA,CAAeH,EAAI,CAAC,CAAE,EACjC,CAAA,CAMaqB,GAAmB,CAACnE,CAAAA,CAAWf,EAAW2D,CAAAA,GAAwC,CAC7F,IAAM1D,CAAAA,CAAO0D,CAAAA,CAAIF,CAAAA,CACjB,OAAOuB,EAAiBjE,CAAAA,CAAGf,CAAAA,CAAI,KAAK,GAAA,CAAIC,CAAI,EAAGD,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAC,CACnE,CAAA,CAGakF,GAAuB,CAACtB,CAAAA,CAA8B9C,EAAWf,CAAAA,CAAW2D,CAAAA,GAAoB,CAC3G,IAAM1D,CAAAA,CAAO0D,EAAIF,CAAAA,CACjBwB,CAAAA,CAAqBpB,EAAK9C,CAAAA,CAAGf,CAAAA,CAAI,KAAK,GAAA,CAAIC,CAAI,CAAA,CAAGD,CAAAA,CAAI,KAAK,GAAA,CAAIC,CAAI,CAAC,EACrE,CAAA,CAOamF,EAAqB,CAChCrE,CAAAA,CACAI,EACAK,CAAAA,GACyD,CACzD,GAAM,CAAClB,CAAAA,CAAIC,EAAIC,CAAE,CAAA,CAAIiE,EAAgB1D,CAAAA,CAAGI,CAAAA,CAAGK,CAAC,CAAA,CAC5C,OAAO,CACL,CAAClB,EAAIC,CAAAA,CAAIC,CAAE,EACX,CAACwD,mBAAAA,CAAe1D,CAAE,CAAA,CAAG0D,mBAAAA,CAAezD,CAAE,CAAA,CAAGyD,mBAAAA,CAAexD,CAAE,CAAC,CAC7D,CACF,CAAA,CAMa6E,CAAAA,CAAyB,CACpCjB,CAAAA,CACAC,EACAtD,CAAAA,CACAI,CAAAA,CACA,IACS,CACTwD,CAAAA,CAAoBP,EAAQrD,CAAAA,CAAGI,CAAAA,CAAG,CAAC,CAAA,CACnCkD,EAAQ,CAAC,CAAA,CAAIL,oBAAeI,CAAAA,CAAO,CAAC,CAAE,CAAA,CACtCC,CAAAA,CAAQ,CAAC,CAAA,CAAIL,oBAAeI,CAAAA,CAAO,CAAC,CAAE,CAAA,CACtCC,CAAAA,CAAQ,CAAC,CAAA,CAAIL,mBAAAA,CAAeI,EAAO,CAAC,CAAE,EACxC,CAAA,CAMakB,EAAAA,CAAqB,CAChCvE,CAAAA,CACAf,CAAAA,CACA2D,IACyD,CACzD,IAAM1D,CAAAA,CAAO0D,CAAAA,CAAIF,EACjB,OAAO2B,CAAAA,CAAmBrE,EAAGf,CAAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAA,CAAGD,EAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAC,CACrE,EAGasF,EAAAA,CAAyB,CACpCnB,EACAC,CAAAA,CACAtD,CAAAA,CACAf,CAAAA,CACA2D,CAAAA,GACS,CACT,IAAM1D,CAAAA,CAAO0D,EAAIF,CAAAA,CACjB4B,CAAAA,CAAuBjB,EAAQC,CAAAA,CAAStD,CAAAA,CAAGf,EAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAGD,CAAAA,CAAI,KAAK,GAAA,CAAIC,CAAI,CAAC,EACnF","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"]} |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
759507
6.47%1011
2.85%776
1.97%0
-100%