@colordx/core
Advanced tools
| import {f,e,a}from'./chunk-J6CH5YTL.mjs';import {d,b as b$1}from'./chunk-OXYX6VNO.mjs';import {b}from'./chunk-FXCFKFXK.mjs';import {d as d$1,a as a$1}from'./chunk-IOXRZECH.mjs';var K=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,q=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,C=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{x:o,y:t,z:b}=d(n),[u,l,p]=b$1(o,t,b),[m,d$1,k]=a(u,l,p);return {l:m,a:d$1,b:k,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=K.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]),t=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(d$1[t]??1)*Math.PI/180,l=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:l}}if(r=q.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),t=r[6]?Number(r[5])*.004:Number(r[5]),b=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b:t,alpha:b}}return null}return null},c=5e-4,D=(e,r,n)=>e>=-c&&e<=1+c&&r>=-c&&r<=1+c&&n>=-c&&n<=1+c,O=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,Q=e=>{let r=C(e);if(r===null)return true;let[n,o,t]=f(r.l,r.a,r.b);return D(n,o,t)},E=.02,U=1e-4,F=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],t=e[2]-r[2];return Math.sqrt(n*n+o*o+t*t)},_=(e,r,n,o,t,b)=>{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,l,p]=t(e,r,n);if(O(u,l,p))return {l:e,a:r,b:n,alpha:o};let m=b(a$1(u,0,1),a$1(l,0,1),a$1(p,0,1));if(F(m,[e,r,n])<=E)return {l:m[0],a:m[1],b:m[2],alpha:o};let d=Math.atan2(n,r),k=Math.sqrt(r*r+n*n),f=0,L=k,M=true,y=m;for(;L-f>U;){let i=(f+L)/2,N=i*Math.cos(d),x=i*Math.sin(d),[A,T,R]=t(e,N,x);if(M&&O(A,T,R)){f=i;continue}let I=b(a$1(A,0,1),a$1(T,0,1),a$1(R,0,1));y=I,F(I,[e,N,x])<=E?(f=i,M=false):L=i;}return {l:y[0],a:y[1],b:y[2],alpha:o}},V=e=>{let r=C(e);if(r===null)return null;let{l:n,a:o,b:t,alpha:b}=r;return _(n,o,t,b,f,a)},W=(e,r)=>{let n=C(e);if(n===null)return true;let[o,t,b]=r(n.l,n.a,n.b);return D(o,t,b)},Y=(e,r,n)=>{let o=C(e);if(o===null)return null;let{l:t,a:b,b:u,alpha:l}=o;return _(t,b,u,l,r,n)};var P=Math.PI/180,j=(e,r,n)=>{let o=n*P;return f(e,r*Math.cos(o),r*Math.sin(o))},z=(e$1,r,n,o)=>{let t=o*P;e(e$1,r,n*Math.cos(t),n*Math.sin(t));},er=(e,r,n)=>{let[o,t,b$1]=j(e,r,n);return [b(o),b(t),b(b$1)]},or=(e,r,n,o)=>{z(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},tr=(e,r,n)=>{let[o,t,b$1]=j(e,r,n);return [[o,t,b$1],[b(o),b(t),b(b$1)]]},br=(e,r,n,o,t)=>{z(e,n,o,t),r[0]=b(e[0]),r[1]=b(e[1]),r[2]=b(e[2]);};export{Q as a,V as b,W as c,Y as d,j as e,z as f,er as g,or as h,tr as i,br as j};//# sourceMappingURL=chunk-2HOOMNKQ.mjs.map | ||
| //# sourceMappingURL=chunk-2HOOMNKQ.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","b","EPS","isLinearInGamut","r","g","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"],"mappings":"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","file":"chunk-2HOOMNKQ.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 { oklabToLinear, oklabToLinearInto } from './colorModels/oklab.js';\nimport { srgbFromLinear } 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"]} |
| 'use strict';var chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var U=.4122214708,z=.5363325363,q=.0514459929,D=.2119034982,H=.6806995451,J=.1073969566,P=.0883024619,Q=.2817188376,V=.6299787005,W=.2104542553,X=.793617785,Y=-0.0040720468,Z=1.9779984951,nn=-2.428592205,on=.4505937099,rn=.0259040371,tn=.7827717662,sn=-0.808675766,I=.3963377774,S=.2158037573,O=-0.1055613458,B=-0.0638541728,h=-0.0894841775,x=-1.291485548,A=4.0767416613,C=-3.3077115904,w=.2309699287,T=-1.2684380041,y=2.6097574007,G=-0.3413193963,d=-0.0041960865,N=-0.7034186145,$=1.7076147009;var cn=(o,n,r)=>{let t=Math.cbrt(U*o+z*n+q*r),s=Math.cbrt(D*o+H*n+J*r),c=Math.cbrt(P*o+Q*n+V*r);return [W*t+X*s+Y*c,Z*t+nn*s+on*c,rn*t+tn*s+sn*c]},Mn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=cn(chunkX5FCFNQN_cjs.a(o/255),chunkX5FCFNQN_cjs.a(n/255),chunkX5FCFNQN_cjs.a(r/255));return {l:s,a:c,b:e,alpha:t}},j=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=en(o,n,r);return {r:chunkX5FCFNQN_cjs.b(s)*255,g:chunkX5FCFNQN_cjs.b(c)*255,b:chunkX5FCFNQN_cjs.b(e)*255,alpha:t}},un=({l:o,a:n,b:r,alpha:t})=>{if(n===0&&r===0){let K=o**3,k=chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(K,0,1))*255;return chunk3V4MONNR_cjs.a({r:k,g:k,b:k,alpha:t})}let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,b=e**3,p=4.0767416613*_-3.3077115904*l+.2309699287*b,E=-1.2684380041*_+2.6097574007*l-.3413193963*b,F=-0.0041960865*_-.7034186145*l+1.7076147009*b;return chunk3V4MONNR_cjs.a({r:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(p,0,1))*255,g:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(E,0,1))*255,b:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(F,0,1))*255,alpha:t})},mn=(o,n,r,t)=>{if(r===0&&t===0){let p=n**3;o[0]=p,o[1]=p,o[2]=p;return}let s=n+I*r+S*t,c=n+O*r+B*t,e=n+h*r+x*t,_=s**3,l=c**3,b=e**3;o[0]=A*_+C*l+w*b,o[1]=T*_+y*l+G*b,o[2]=d*_+N*l+$*b;},en=(o,n,r)=>{if(n===0&&r===0){let b=o**3;return [b,b,b]}let t=o+I*n+S*r,s=o+O*n+B*r,c=o+h*n+x*r,e=t**3,_=s**3,l=c**3;return [A*e+C*_+w*l,T*e+y*_+G*l,d*e+N*_+$*l]},pn=o=>{if(!chunkYISEJCI6_cjs.h(o)||o.colorSpace==="lab"||!chunkYISEJCI6_cjs.i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||chunkYISEJCI6_cjs.g(n)>1?null:j({l:chunkYISEJCI6_cjs.g(n),a:chunkYISEJCI6_cjs.g(r),b:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(s),0,1)})},_n=new RegExp(`^oklab\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<a>${chunkYISEJCI6_cjs.k})(?<ap>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),vn=o=>{if(typeof o!="string")return null;let n=_n.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?chunkYISEJCI6_cjs.l(n.l)/100:chunkYISEJCI6_cjs.l(n.l),t=n.ap?chunkYISEJCI6_cjs.l(n.a)*.004:chunkYISEJCI6_cjs.l(n.a),s=n.bp?chunkYISEJCI6_cjs.l(n.b)*.004:chunkYISEJCI6_cjs.l(n.b),c=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return j({l:r,a:t,b:s,alpha:chunkYISEJCI6_cjs.a(c,0,1)})};exports.a=cn;exports.b=Mn;exports.c=j;exports.d=un;exports.e=mn;exports.f=en;exports.g=pn;exports.h=vn;//# sourceMappingURL=chunk-GXECYURS.cjs.map | ||
| //# sourceMappingURL=chunk-GXECYURS.cjs.map |
| {"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","v","srgb","clamp","clampRgb","l_","m_","s_","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"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","file":"chunk-GXECYURS.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n const srgb = srgbFromLinear(clamp(v, 0, 1)) * 255;\n return clampRgb({ r: srgb, g: srgb, b: srgb, alpha });\n }\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n // Achromatic short-circuit: M1⁻¹ rows sum to 1 mathematically, but floating-point\n // rounding leaves lr/lg/lb ~1 ULP apart, which gets amplified into a phantom hue\n // downstream in rgbToHslRaw. Explicitly return lv for all channels.\n if (a === 0 && b === 0) {\n const v = l ** 3;\n out[0] = v;\n out[1] = v;\n out[2] = v;\n return;\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n return [v, v, v];\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]} |
| import {a,b}from'./chunk-FXCFKFXK.mjs';import {a as a$2}from'./chunk-Q3O3QQ4H.mjs';import {a as a$1,h as h$1,i,f,g,l,k}from'./chunk-IOXRZECH.mjs';var U=.4122214708,z=.5363325363,q=.0514459929,D=.2119034982,H=.6806995451,J=.1073969566,P=.0883024619,Q=.2817188376,V=.6299787005,W=.2104542553,X=.793617785,Y=-0.0040720468,Z=1.9779984951,nn=-2.428592205,on=.4505937099,rn=.0259040371,tn=.7827717662,sn=-0.808675766,I=.3963377774,S=.2158037573,O=-0.1055613458,B=-0.0638541728,h=-0.0894841775,x=-1.291485548,A=4.0767416613,C=-3.3077115904,w=.2309699287,T=-1.2684380041,y=2.6097574007,G=-0.3413193963,d=-0.0041960865,N=-0.7034186145,$=1.7076147009;var cn=(o,n,r)=>{let t=Math.cbrt(U*o+z*n+q*r),s=Math.cbrt(D*o+H*n+J*r),c=Math.cbrt(P*o+Q*n+V*r);return [W*t+X*s+Y*c,Z*t+nn*s+on*c,rn*t+tn*s+sn*c]},Mn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=cn(a(o/255),a(n/255),a(r/255));return {l:s,a:c,b:e,alpha:t}},j=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=en(o,n,r);return {r:b(s)*255,g:b(c)*255,b:b(e)*255,alpha:t}},un=({l:o,a:n,b:r,alpha:t})=>{if(n===0&&r===0){let K=o**3,k=b(a$1(K,0,1))*255;return a$2({r:k,g:k,b:k,alpha:t})}let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,b$1=e**3,p=4.0767416613*_-3.3077115904*l+.2309699287*b$1,E=-1.2684380041*_+2.6097574007*l-.3413193963*b$1,F=-0.0041960865*_-.7034186145*l+1.7076147009*b$1;return a$2({r:b(a$1(p,0,1))*255,g:b(a$1(E,0,1))*255,b:b(a$1(F,0,1))*255,alpha:t})},mn=(o,n,r,t)=>{if(r===0&&t===0){let p=n**3;o[0]=p,o[1]=p,o[2]=p;return}let s=n+I*r+S*t,c=n+O*r+B*t,e=n+h*r+x*t,_=s**3,l=c**3,b=e**3;o[0]=A*_+C*l+w*b,o[1]=T*_+y*l+G*b,o[2]=d*_+N*l+$*b;},en=(o,n,r)=>{if(n===0&&r===0){let b=o**3;return [b,b,b]}let t=o+I*n+S*r,s=o+O*n+B*r,c=o+h*n+x*r,e=t**3,_=s**3,l=c**3;return [A*e+C*_+w*l,T*e+y*_+G*l,d*e+N*_+$*l]},pn=o=>{if(!h$1(o)||o.colorSpace==="lab"||!i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !f(n)||!f(r)||!f(t)||!f(s)||g(n)>1?null:j({l:g(n),a:g(r),b:g(t),alpha:a$1(g(s),0,1)})},_n=new RegExp(`^oklab\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<a>${k})(?<ap>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),vn=o=>{if(typeof o!="string")return null;let n=_n.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?l(n.l)/100:l(n.l),t=n.ap?l(n.a)*.004:l(n.a),s=n.bp?l(n.b)*.004:l(n.b),c=n.al===void 0?1:l(n.al)/(n.alp?100:1);return j({l:r,a:t,b:s,alpha:a$1(c,0,1)})};export{cn as a,Mn as b,j as c,un as d,mn as e,en as f,pn as g,vn as h};//# sourceMappingURL=chunk-J6CH5YTL.mjs.map | ||
| //# sourceMappingURL=chunk-J6CH5YTL.mjs.map |
| {"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","v","srgb","clamp","clampRgb","l_","m_","s_","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"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","file":"chunk-J6CH5YTL.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n const srgb = srgbFromLinear(clamp(v, 0, 1)) * 255;\n return clampRgb({ r: srgb, g: srgb, b: srgb, alpha });\n }\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n // Achromatic short-circuit: M1⁻¹ rows sum to 1 mathematically, but floating-point\n // rounding leaves lr/lg/lb ~1 ULP apart, which gets amplified into a phantom hue\n // downstream in rgbToHslRaw. Explicitly return lv for all channels.\n if (a === 0 && b === 0) {\n const v = l ** 3;\n out[0] = v;\n out[1] = v;\n out[2] = v;\n return;\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n if (a === 0 && b === 0) {\n const v = l ** 3;\n return [v, v, v];\n }\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]} |
| 'use strict';var chunkGXECYURS_cjs=require('./chunk-GXECYURS.cjs'),chunkEDNIB75Q_cjs=require('./chunk-EDNIB75Q.cjs'),chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var K=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,q=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,C=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{x:o,y:t,z:b}=chunkEDNIB75Q_cjs.d(n),[u,l,p]=chunkEDNIB75Q_cjs.b(o,t,b),[m,d,k]=chunkGXECYURS_cjs.a(u,l,p);return {l:m,a:d,b:k,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=K.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]),t=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(chunkYISEJCI6_cjs.d[t]??1)*Math.PI/180,l=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:l}}if(r=q.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),t=r[6]?Number(r[5])*.004:Number(r[5]),b=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b:t,alpha:b}}return null}return null},c=5e-4,D=(e,r,n)=>e>=-c&&e<=1+c&&r>=-c&&r<=1+c&&n>=-c&&n<=1+c,O=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,Q=e=>{let r=C(e);if(r===null)return true;let[n,o,t]=chunkGXECYURS_cjs.f(r.l,r.a,r.b);return D(n,o,t)},E=.02,U=1e-4,F=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],t=e[2]-r[2];return Math.sqrt(n*n+o*o+t*t)},_=(e,r,n,o,t,b)=>{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,l,p]=t(e,r,n);if(O(u,l,p))return {l:e,a:r,b:n,alpha:o};let m=b(chunkYISEJCI6_cjs.a(u,0,1),chunkYISEJCI6_cjs.a(l,0,1),chunkYISEJCI6_cjs.a(p,0,1));if(F(m,[e,r,n])<=E)return {l:m[0],a:m[1],b:m[2],alpha:o};let d=Math.atan2(n,r),k=Math.sqrt(r*r+n*n),f=0,L=k,M=true,y=m;for(;L-f>U;){let i=(f+L)/2,N=i*Math.cos(d),x=i*Math.sin(d),[A,T,R]=t(e,N,x);if(M&&O(A,T,R)){f=i;continue}let I=b(chunkYISEJCI6_cjs.a(A,0,1),chunkYISEJCI6_cjs.a(T,0,1),chunkYISEJCI6_cjs.a(R,0,1));y=I,F(I,[e,N,x])<=E?(f=i,M=false):L=i;}return {l:y[0],a:y[1],b:y[2],alpha:o}},V=e=>{let r=C(e);if(r===null)return null;let{l:n,a:o,b:t,alpha:b}=r;return _(n,o,t,b,chunkGXECYURS_cjs.f,chunkGXECYURS_cjs.a)},W=(e,r)=>{let n=C(e);if(n===null)return true;let[o,t,b]=r(n.l,n.a,n.b);return D(o,t,b)},Y=(e,r,n)=>{let o=C(e);if(o===null)return null;let{l:t,a:b,b:u,alpha:l}=o;return _(t,b,u,l,r,n)};var P=Math.PI/180,j=(e,r,n)=>{let o=n*P;return chunkGXECYURS_cjs.f(e,r*Math.cos(o),r*Math.sin(o))},z=(e,r,n,o)=>{let t=o*P;chunkGXECYURS_cjs.e(e,r,n*Math.cos(t),n*Math.sin(t));},er=(e,r,n)=>{let[o,t,b]=j(e,r,n);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(t),chunkX5FCFNQN_cjs.b(b)]},or=(e,r,n,o)=>{z(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]);},tr=(e,r,n)=>{let[o,t,b]=j(e,r,n);return [[o,t,b],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(t),chunkX5FCFNQN_cjs.b(b)]]},br=(e,r,n,o,t)=>{z(e,n,o,t),r[0]=chunkX5FCFNQN_cjs.b(e[0]),r[1]=chunkX5FCFNQN_cjs.b(e[1]),r[2]=chunkX5FCFNQN_cjs.b(e[2]);};exports.a=Q;exports.b=V;exports.c=W;exports.d=Y;exports.e=j;exports.f=z;exports.g=er;exports.h=or;exports.i=tr;exports.j=br;//# sourceMappingURL=chunk-LTRVT3GL.cjs.map | ||
| //# sourceMappingURL=chunk-LTRVT3GL.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","b","EPS","isLinearInGamut","r","g","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"],"mappings":"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","file":"chunk-LTRVT3GL.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 { oklabToLinear, oklabToLinearInto } from './colorModels/oklab.js';\nimport { srgbFromLinear } 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"]} |
+1
-1
@@ -1,2 +0,2 @@ | ||
| 'use strict';var chunkZ5MM7DU5_cjs=require('./chunk-Z5MM7DU5.cjs'),chunk3D3MFLZZ_cjs=require('./chunk-3D3MFLZZ.cjs'),chunk44FDTAPT_cjs=require('./chunk-44FDTAPT.cjs');require('./chunk-EDNIB75Q.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),b=Math.min(n,e,s),C=(a+b)/2,d=0,x=0;if(a!==b){let _=a-b;switch(x=C>.5?_/(2-a-b):_/(a+b),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 N=(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,b=(l%360+360)%360/360;return {r:N(a,s,b+1/3)*255,g:N(a,s,b)*255,b:N(a,s,b-1/3)*255,alpha:t}},X=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)}))},pr=new RegExp(`^hsla?\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${chunkYISEJCI6_cjs.j})%\\s*,\\s*(?<l_c>${chunkYISEJCI6_cjs.j})%(?:\\s*,\\s*(?<al_c>${chunkYISEJCI6_cjs.j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${chunkYISEJCI6_cjs.k})(?<sp_s>%?)\\s+(?<l_s>${chunkYISEJCI6_cjs.k})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${chunkYISEJCI6_cjs.k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),J=l=>{if(typeof l!="string")return null;let r=pr.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,b=!!(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)/(b?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var Q=({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}),W=l=>{let{l:r,a:o,b:t,alpha:n}=chunk44FDTAPT_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}},A=l=>chunk44FDTAPT_cjs.d(Q(l)),Y=l=>chunk44FDTAPT_cjs.c(Q(l)),Z=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:Y({l:chunkYISEJCI6_cjs.g(r),c:Math.max(0,chunkYISEJCI6_cjs.g(o)),h:chunkYISEJCI6_cjs.c(chunkYISEJCI6_cjs.g(t)),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(n),0,1)})},Cr=new RegExp(`^oklch\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<c>${chunkYISEJCI6_cjs.k})(?<cp>%?)\\s+(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),rr=l=>{if(typeof l!="string")return null;let r=Cr.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 Y({l:o,c:t,h:chunkYISEJCI6_cjs.c(e),alpha:chunkYISEJCI6_cjs.a(s,0,1)})};var or=[[chunkZ5MM7DU5_cjs.a,"hex"],[chunk3V4MONNR_cjs.c,"rgb"],[J,"hsl"],[rr,"oklch"],[chunk44FDTAPT_cjs.h,"oklab"]],tr=[[chunk3V4MONNR_cjs.b,"rgb"],[X,"hsl"],[chunk44FDTAPT_cjs.g,"oklab"],[Z,"oklch"]],lr=or.map(([l])=>l),nr=tr.map(([l])=>l),er=[...lr,...nr],L=[...er],F=[],sr=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?lr:nr;for(let o of r){let t=o(l);if(t)return t}for(let o=er.length;o<L.length;o++){let t=L[o](l);if(t)return t}return null},dr=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?or:tr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of F)if(o(l))return t};var ar=Symbol(),g=class l{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof l)this._valid=r._valid,this._rgb=r._rgb;else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}}static _make(r){return new l(ar,r)}static _makeFromOklab({l:r,a:o,b:t,alpha:n}){let[e,s,a]=chunk44FDTAPT_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(){let{r,g:o,b:t,alpha:n}=this._rgb,e=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r),0,255),s=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255),a=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255);return n<1?`rgb(${e} ${s} ${a} / ${n})`:`rgb(${e} ${s} ${a})`}toHex(){return chunkZ5MM7DU5_cjs.b(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(){let{l:r,a:o,b:t,alpha:n}=chunk44FDTAPT_cjs.b(this._rgb);return {l:chunkYISEJCI6_cjs.b(r,4),a:chunkYISEJCI6_cjs.b(o,4),b:chunkYISEJCI6_cjs.b(t,4),alpha:n}}toOklabString(){let{l:r,a:o,b:t,alpha:n}=this.toOklab();return n<1?`oklab(${r} ${o} ${t} / ${n})`:`oklab(${r} ${o} ${t})`}toOklch(){let{l:r,c:o,h:t,alpha:n}=W(this._rgb);return {l:chunkYISEJCI6_cjs.b(r,4),c:chunkYISEJCI6_cjs.b(o,4),h:chunkYISEJCI6_cjs.b(t,2),alpha:n}}toOklchString(){let{l:r,c:o,h:t,alpha:n}=this.toOklch(),e=o===0?"none":t;return n<1?`oklch(${r} ${o} ${e} / ${n})`:`oklch(${r} ${o} ${e})`}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(A({...o,l:chunkYISEJCI6_cjs.a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(A({...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]=chunk44FDTAPT_cjs.a(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(o/255),chunkX5FCFNQN_cjs.a(t/255)),b=e>1-1e-7?1:e<1e-7?0:e,C=chunk3D3MFLZZ_cjs.b({l:b,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},fr=l=>new g(l),kr=l=>{l.forEach(r=>r(g,L,F));},xr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new g(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:b,a:C,b:d}=new g(a).toOklab(),x=(b-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},_r=()=>new g({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});g.toGamutSrgb=l=>{let r=chunk3D3MFLZZ_cjs.b(l);return r!==null?g._makeFromOklab(r):new g(l)};Object.defineProperty(exports,"inGamutSrgb",{enumerable:true,get:function(){return chunk3D3MFLZZ_cjs.a}});Object.defineProperty(exports,"oklchToLinear",{enumerable:true,get:function(){return chunk3D3MFLZZ_cjs.e}});Object.defineProperty(exports,"oklchToLinearAndSrgb",{enumerable:true,get:function(){return chunk3D3MFLZZ_cjs.i}});Object.defineProperty(exports,"oklchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunk3D3MFLZZ_cjs.j}});Object.defineProperty(exports,"oklchToLinearInto",{enumerable:true,get:function(){return chunk3D3MFLZZ_cjs.f}});Object.defineProperty(exports,"oklchToRgbChannels",{enumerable:true,get:function(){return chunk3D3MFLZZ_cjs.g}});Object.defineProperty(exports,"oklchToRgbChannelsInto",{enumerable:true,get:function(){return chunk3D3MFLZZ_cjs.h}});exports.Colordx=g;exports.colordx=fr;exports.extend=kr;exports.getFormat=dr;exports.nearest=xr;exports.random=_r;//# sourceMappingURL=index.cjs.map | ||
| 'use strict';var chunkZ5MM7DU5_cjs=require('./chunk-Z5MM7DU5.cjs'),chunkLTRVT3GL_cjs=require('./chunk-LTRVT3GL.cjs'),chunkGXECYURS_cjs=require('./chunk-GXECYURS.cjs');require('./chunk-EDNIB75Q.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),b=Math.min(n,e,s),C=(a+b)/2,d=0,x=0;if(a!==b){let _=a-b;switch(x=C>.5?_/(2-a-b):_/(a+b),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 N=(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,b=(l%360+360)%360/360;return {r:N(a,s,b+1/3)*255,g:N(a,s,b)*255,b:N(a,s,b-1/3)*255,alpha:t}},X=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)}))},pr=new RegExp(`^hsla?\\(\\s*(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:,\\s*(?<s_c>${chunkYISEJCI6_cjs.j})%\\s*,\\s*(?<l_c>${chunkYISEJCI6_cjs.j})%(?:\\s*,\\s*(?<al_c>${chunkYISEJCI6_cjs.j})(?<alp_c>%?)?\\s*)?|\\s+(?<s_s>${chunkYISEJCI6_cjs.k})(?<sp_s>%?)\\s+(?<l_s>${chunkYISEJCI6_cjs.k})(?<lp_s>%?)(?:\\s*/\\s*(?<al_s>${chunkYISEJCI6_cjs.k})(?<alp_s>%?)?\\s*)?)\\)$`,"i"),J=l=>{if(typeof l!="string")return null;let r=pr.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,b=!!(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)/(b?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var Q=({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}),W=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}},A=l=>chunkGXECYURS_cjs.d(Q(l)),Y=l=>chunkGXECYURS_cjs.c(Q(l)),Z=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:Y({l:chunkYISEJCI6_cjs.g(r),c:Math.max(0,chunkYISEJCI6_cjs.g(o)),h:chunkYISEJCI6_cjs.c(chunkYISEJCI6_cjs.g(t)),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(n),0,1)})},Cr=new RegExp(`^oklch\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<c>${chunkYISEJCI6_cjs.k})(?<cp>%?)\\s+(?<h>${chunkYISEJCI6_cjs.k})(?<hu>deg|rad|grad|turn)?\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),rr=l=>{if(typeof l!="string")return null;let r=Cr.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 Y({l:o,c:t,h:chunkYISEJCI6_cjs.c(e),alpha:chunkYISEJCI6_cjs.a(s,0,1)})};var or=[[chunkZ5MM7DU5_cjs.a,"hex"],[chunk3V4MONNR_cjs.c,"rgb"],[J,"hsl"],[rr,"oklch"],[chunkGXECYURS_cjs.h,"oklab"]],tr=[[chunk3V4MONNR_cjs.b,"rgb"],[X,"hsl"],[chunkGXECYURS_cjs.g,"oklab"],[Z,"oklch"]],lr=or.map(([l])=>l),nr=tr.map(([l])=>l),er=[...lr,...nr],L=[...er],F=[],sr=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?lr:nr;for(let o of r){let t=o(l);if(t)return t}for(let o=er.length;o<L.length;o++){let t=L[o](l);if(t)return t}return null},dr=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?or:tr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of F)if(o(l))return t};var ar=Symbol(),g=class l{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof l)this._valid=r._valid,this._rgb=r._rgb;else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}}static _make(r){return new l(ar,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(){let{r,g:o,b:t,alpha:n}=this._rgb,e=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(r),0,255),s=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(o),0,255),a=chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.b(t),0,255);return n<1?`rgb(${e} ${s} ${a} / ${n})`:`rgb(${e} ${s} ${a})`}toHex(){return chunkZ5MM7DU5_cjs.b(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(){let{l:r,a:o,b:t,alpha:n}=chunkGXECYURS_cjs.b(this._rgb);return {l:chunkYISEJCI6_cjs.b(r,4),a:chunkYISEJCI6_cjs.b(o,4),b:chunkYISEJCI6_cjs.b(t,4),alpha:n}}toOklabString(){let{l:r,a:o,b:t,alpha:n}=this.toOklab();return n<1?`oklab(${r} ${o} ${t} / ${n})`:`oklab(${r} ${o} ${t})`}toOklch(){let{l:r,c:o,h:t,alpha:n}=W(this._rgb);return {l:chunkYISEJCI6_cjs.b(r,4),c:chunkYISEJCI6_cjs.b(o,4),h:chunkYISEJCI6_cjs.b(t,2),alpha:n}}toOklchString(){let{l:r,c:o,h:t,alpha:n}=this.toOklch(),e=o===0?"none":t;return n<1?`oklch(${r} ${o} ${e} / ${n})`:`oklch(${r} ${o} ${e})`}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(A({...o,l:chunkYISEJCI6_cjs.a(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(A({...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)),b=e>1-1e-7?1:e<1e-7?0:e,C=chunkLTRVT3GL_cjs.b({l:b,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},fr=l=>new g(l),kr=l=>{l.forEach(r=>r(g,L,F));},xr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new g(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:b,a:C,b:d}=new g(a).toOklab(),x=(b-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},_r=()=>new g({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});g.toGamutSrgb=l=>{let r=chunkLTRVT3GL_cjs.b(l);return r!==null?g._makeFromOklab(r):new g(l)};Object.defineProperty(exports,"inGamutSrgb",{enumerable:true,get:function(){return chunkLTRVT3GL_cjs.a}});Object.defineProperty(exports,"oklchToLinear",{enumerable:true,get:function(){return chunkLTRVT3GL_cjs.e}});Object.defineProperty(exports,"oklchToLinearAndSrgb",{enumerable:true,get:function(){return chunkLTRVT3GL_cjs.i}});Object.defineProperty(exports,"oklchToLinearAndSrgbInto",{enumerable:true,get:function(){return chunkLTRVT3GL_cjs.j}});Object.defineProperty(exports,"oklchToLinearInto",{enumerable:true,get:function(){return chunkLTRVT3GL_cjs.f}});Object.defineProperty(exports,"oklchToRgbChannels",{enumerable:true,get:function(){return chunkLTRVT3GL_cjs.g}});Object.defineProperty(exports,"oklchToRgbChannelsInto",{enumerable:true,get:function(){return chunkLTRVT3GL_cjs.h}});exports.Colordx=g;exports.colordx=fr;exports.extend=kr;exports.getFormat=dr;exports.nearest=xr;exports.random=_r;//# sourceMappingURL=index.cjs.map | ||
| //# sourceMappingURL=index.cjs.map |
+1
-1
@@ -1,2 +0,2 @@ | ||
| import {a,b as b$3}from'./chunk-4JCO6H3F.mjs';import {b as b$5}from'./chunk-AOK3BIZI.mjs';export{a as inGamutSrgb,e as oklchToLinear,i as oklchToLinearAndSrgb,j as oklchToLinearAndSrgbInto,f as oklchToLinearInto,g as oklchToRgbChannels,h as oklchToRgbChannelsInto}from'./chunk-AOK3BIZI.mjs';import {h,g as g$1,c as c$2,f as f$1,b as b$4,a as a$2,d as d$1}from'./chunk-OS5JUSWI.mjs';import'./chunk-OXYX6VNO.mjs';import {b as b$2,a as a$3}from'./chunk-FXCFKFXK.mjs';import {c,b}from'./chunk-Q3O3QQ4H.mjs';import {l,d,a as a$1,c as c$1,h as h$1,i,f,g as g$2,k as k$1,j,b as b$1}from'./chunk-IOXRZECH.mjs';var V=l=>({h:c$1(l.h),s:a$1(l.s,0,100),l:a$1(l.l,0,100),alpha:a$1(b$1(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),b=Math.min(n,e,s),C=(a+b)/2,d=0,x=0;if(a!==b){let _=a-b;switch(x=C>.5?_/(2-a-b):_/(a+b),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=a$1(x*100,0,100),O.l=a$1(C*100,0,100),O.alpha=a$1(b$1(t,3),0,1),O};var N=(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,b=(l%360+360)%360/360;return {r:N(a,s,b+1/3)*255,g:N(a,s,b)*255,b:N(a,s,b-1/3)*255,alpha:t}},X=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$2(r),s:g$2(o),l:g$2(t),alpha:g$2(n)}))},pr=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"),J=l$1=>{if(typeof l$1!="string")return null;let r=pr.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,b=!!(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)/(b?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var Q=({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}),W=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}},A=l=>d$1(Q(l)),Y=l=>c$2(Q(l)),Z=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$2(r)>1?null:Y({l:g$2(r),c:Math.max(0,g$2(o)),h:c$1(g$2(t)),alpha:a$1(g$2(n),0,1)})},Cr=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"),rr=l$1=>{if(typeof l$1!="string")return null;let r=Cr.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 Y({l:o,c:t,h:c$1(e),alpha:a$1(s,0,1)})};var or=[[a,"hex"],[c,"rgb"],[J,"hsl"],[rr,"oklch"],[h,"oklab"]],tr=[[b,"rgb"],[X,"hsl"],[g$1,"oklab"],[Z,"oklch"]],lr=or.map(([l])=>l),nr=tr.map(([l])=>l),er=[...lr,...nr],L=[...er],F=[],sr=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?lr:nr;for(let o of r){let t=o(l);if(t)return t}for(let o=er.length;o<L.length;o++){let t=L[o](l);if(t)return t}return null},dr=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?or:tr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of F)if(o(l))return t};var ar=Symbol(),g=class l{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof l)this._valid=r._valid,this._rgb=r._rgb;else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}}static _make(r){return new l(ar,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$2(e)*255,g:b$2(s)*255,b:b$2(a)*255,alpha:n})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:n}=this._rgb;return {r:a$1(b$1(r),0,255),g:a$1(b$1(o),0,255),b:a$1(b$1(t),0,255),alpha:n}}_rawRgb(){return this._rgb}toRgbString(){let{r,g:o,b:t,alpha:n}=this._rgb,e=a$1(b$1(r),0,255),s=a$1(b$1(o),0,255),a=a$1(b$1(t),0,255);return n<1?`rgb(${e} ${s} ${a} / ${n})`:`rgb(${e} ${s} ${a})`}toHex(){return b$3(this._rgb)}toNumber(){let{r,g:o,b:t}=this._rgb;return a$1(b$1(r),0,255)<<16|a$1(b$1(o),0,255)<<8|a$1(b$1(t),0,255)}toHsl(r=2){let{h:o,s:t,l:n,alpha:e}=R(this._rgb),s=b$1(o,r);return {h:s>=360?0:s,s:b$1(t,r),l:b$1(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(){let{l:r,a:o,b:t,alpha:n}=b$4(this._rgb);return {l:b$1(r,4),a:b$1(o,4),b:b$1(t,4),alpha:n}}toOklabString(){let{l:r,a:o,b:t,alpha:n}=this.toOklab();return n<1?`oklab(${r} ${o} ${t} / ${n})`:`oklab(${r} ${o} ${t})`}toOklch(){let{l:r,c:o,h:t,alpha:n}=W(this._rgb);return {l:b$1(r,4),c:b$1(o,4),h:b$1(t,2),alpha:n}}toOklchString(){let{l:r,c:o,h:t,alpha:n}=this.toOklch(),e=o===0?"none":t;return n<1?`oklch(${r} ${o} ${e} / ${n})`:`oklch(${r} ${o} ${e})`}brightness(){let{r,g:o,b:t}=this._rgb;return b$1((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$1(a$1(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$1(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(A({...o,l:a$1(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(A({...o,c:a$1(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:a$1(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:a$1(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:a$1(r,0,255),g:a$1(o,0,255),b:a$1(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$2(a$3(r/255),a$3(o/255),a$3(t/255)),b=e>1-1e-7?1:e<1e-7?0:e,C=b$5({l:b,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},fr=l=>new g(l),kr=l=>{l.forEach(r=>r(g,L,F));},xr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new g(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:b,a:C,b:d}=new g(a).toOklab(),x=(b-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},_r=()=>new g({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});g.toGamutSrgb=l=>{let r=b$5(l);return r!==null?g._makeFromOklab(r):new g(l)};export{g as Colordx,fr as colordx,kr as extend,dr as getFormat,xr as nearest,_r as random};//# sourceMappingURL=index.mjs.map | ||
| import {a,b as b$3}from'./chunk-4JCO6H3F.mjs';import {b as b$5}from'./chunk-2HOOMNKQ.mjs';export{a as inGamutSrgb,e as oklchToLinear,i as oklchToLinearAndSrgb,j as oklchToLinearAndSrgbInto,f as oklchToLinearInto,g as oklchToRgbChannels,h as oklchToRgbChannelsInto}from'./chunk-2HOOMNKQ.mjs';import {h,g as g$1,c as c$2,f as f$1,b as b$4,a as a$2,d as d$1}from'./chunk-J6CH5YTL.mjs';import'./chunk-OXYX6VNO.mjs';import {b as b$2,a as a$3}from'./chunk-FXCFKFXK.mjs';import {c,b}from'./chunk-Q3O3QQ4H.mjs';import {l,d,a as a$1,c as c$1,h as h$1,i,f,g as g$2,k as k$1,j,b as b$1}from'./chunk-IOXRZECH.mjs';var V=l=>({h:c$1(l.h),s:a$1(l.s,0,100),l:a$1(l.l,0,100),alpha:a$1(b$1(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),b=Math.min(n,e,s),C=(a+b)/2,d=0,x=0;if(a!==b){let _=a-b;switch(x=C>.5?_/(2-a-b):_/(a+b),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=a$1(x*100,0,100),O.l=a$1(C*100,0,100),O.alpha=a$1(b$1(t,3),0,1),O};var N=(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,b=(l%360+360)%360/360;return {r:N(a,s,b+1/3)*255,g:N(a,s,b)*255,b:N(a,s,b-1/3)*255,alpha:t}},X=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$2(r),s:g$2(o),l:g$2(t),alpha:g$2(n)}))},pr=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"),J=l$1=>{if(typeof l$1!="string")return null;let r=pr.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,b=!!(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)/(b?100:1);return k(V({h:n,s:e,l:s,alpha:C}))};var Q=({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}),W=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}},A=l=>d$1(Q(l)),Y=l=>c$2(Q(l)),Z=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$2(r)>1?null:Y({l:g$2(r),c:Math.max(0,g$2(o)),h:c$1(g$2(t)),alpha:a$1(g$2(n),0,1)})},Cr=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"),rr=l$1=>{if(typeof l$1!="string")return null;let r=Cr.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 Y({l:o,c:t,h:c$1(e),alpha:a$1(s,0,1)})};var or=[[a,"hex"],[c,"rgb"],[J,"hsl"],[rr,"oklch"],[h,"oklab"]],tr=[[b,"rgb"],[X,"hsl"],[g$1,"oklab"],[Z,"oklch"]],lr=or.map(([l])=>l),nr=tr.map(([l])=>l),er=[...lr,...nr],L=[...er],F=[],sr=l=>{if(l==="transparent")return {r:0,g:0,b:0,alpha:0};let r=typeof l=="string"?lr:nr;for(let o of r){let t=o(l);if(t)return t}for(let o=er.length;o<L.length;o++){let t=L[o](l);if(t)return t}return null},dr=l=>{if(l==="transparent")return "name";let r=typeof l=="string"?or:tr;for(let[o,t]of r)if(o(l))return t;for(let[o,t]of F)if(o(l))return t};var ar=Symbol(),g=class l{_rgb;_valid;constructor(r,o){if(r===ar)this._valid=true,this._rgb=o;else if(r instanceof l)this._valid=r._valid,this._rgb=r._rgb;else {let t=sr(r);this._valid=t!==null,this._rgb=t??{r:0,g:0,b:0,alpha:1};}}static _make(r){return new l(ar,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$2(e)*255,g:b$2(s)*255,b:b$2(a)*255,alpha:n})}isValid(){return this._valid}toRgb(){let{r,g:o,b:t,alpha:n}=this._rgb;return {r:a$1(b$1(r),0,255),g:a$1(b$1(o),0,255),b:a$1(b$1(t),0,255),alpha:n}}_rawRgb(){return this._rgb}toRgbString(){let{r,g:o,b:t,alpha:n}=this._rgb,e=a$1(b$1(r),0,255),s=a$1(b$1(o),0,255),a=a$1(b$1(t),0,255);return n<1?`rgb(${e} ${s} ${a} / ${n})`:`rgb(${e} ${s} ${a})`}toHex(){return b$3(this._rgb)}toNumber(){let{r,g:o,b:t}=this._rgb;return a$1(b$1(r),0,255)<<16|a$1(b$1(o),0,255)<<8|a$1(b$1(t),0,255)}toHsl(r=2){let{h:o,s:t,l:n,alpha:e}=R(this._rgb),s=b$1(o,r);return {h:s>=360?0:s,s:b$1(t,r),l:b$1(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(){let{l:r,a:o,b:t,alpha:n}=b$4(this._rgb);return {l:b$1(r,4),a:b$1(o,4),b:b$1(t,4),alpha:n}}toOklabString(){let{l:r,a:o,b:t,alpha:n}=this.toOklab();return n<1?`oklab(${r} ${o} ${t} / ${n})`:`oklab(${r} ${o} ${t})`}toOklch(){let{l:r,c:o,h:t,alpha:n}=W(this._rgb);return {l:b$1(r,4),c:b$1(o,4),h:b$1(t,2),alpha:n}}toOklchString(){let{l:r,c:o,h:t,alpha:n}=this.toOklch(),e=o===0?"none":t;return n<1?`oklch(${r} ${o} ${e} / ${n})`:`oklch(${r} ${o} ${e})`}brightness(){let{r,g:o,b:t}=this._rgb;return b$1((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$1(a$1(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$1(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(A({...o,l:a$1(r,0,1)}))}chroma(r){let o=this.toOklch();return r===void 0?o.c:l._make(A({...o,c:a$1(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:a$1(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:a$1(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:a$1(r,0,255),g:a$1(o,0,255),b:a$1(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$2(a$3(r/255),a$3(o/255),a$3(t/255)),b=e>1-1e-7?1:e<1e-7?0:e,C=b$5({l:b,a:s,b:a,alpha:n});return C!==null?l._makeFromOklab(C):this}static toGamutSrgb},fr=l=>new g(l),kr=l=>{l.forEach(r=>r(g,L,F));},xr=(l,r)=>{if(r.length===0)throw new Error("nearest: candidates array must not be empty");let{l:o,a:t,b:n}=new g(l).toOklab(),e=1/0,s=r[0];for(let a of r){let{l:b,a:C,b:d}=new g(a).toOklab(),x=(b-o)**2+(C-t)**2+(d-n)**2;x<e&&(e=x,s=a);}return s},_r=()=>new g({r:Math.round(Math.random()*255),g:Math.round(Math.random()*255),b:Math.round(Math.random()*255),alpha:1});g.toGamutSrgb=l=>{let r=b$5(l);return r!==null?g._makeFromOklab(r):new g(l)};export{g as Colordx,fr as colordx,kr as extend,dr as getFormat,xr as nearest,_r as random};//# sourceMappingURL=index.mjs.map | ||
| //# sourceMappingURL=index.mjs.map |
@@ -1,2 +0,2 @@ | ||
| 'use strict';var chunk44FDTAPT_cjs=require('../chunk-44FDTAPT.cjs');require('../chunk-X5FCFNQN.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=chunkYISEJCI6_cjs.a(e,0,1);return new n({r:chunkYISEJCI6_cjs.b(l.r*(1-o)+t.r*o),g:chunkYISEJCI6_cjs.b(l.g*(1-o)+t.g*o),b:chunkYISEJCI6_cjs.b(l.b*(1-o)+t.b*o),alpha:chunkYISEJCI6_cjs.b(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=chunk44FDTAPT_cjs.b(this._rawRgb()),l=chunk44FDTAPT_cjs.b(new n(r)._rawRgb()),o=chunkYISEJCI6_cjs.a(e,0,1);return new n(chunk44FDTAPT_cjs.d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:chunkYISEJCI6_cjs.b(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;module.exports=m;//# sourceMappingURL=mix.cjs.map | ||
| 'use strict';var chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-X5FCFNQN.cjs'),require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=chunkYISEJCI6_cjs.a(e,0,1);return new n({r:chunkYISEJCI6_cjs.b(l.r*(1-o)+t.r*o),g:chunkYISEJCI6_cjs.b(l.g*(1-o)+t.g*o),b:chunkYISEJCI6_cjs.b(l.b*(1-o)+t.b*o),alpha:chunkYISEJCI6_cjs.b(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=chunkGXECYURS_cjs.b(this._rawRgb()),l=chunkGXECYURS_cjs.b(new n(r)._rawRgb()),o=chunkYISEJCI6_cjs.a(e,0,1);return new n(chunkGXECYURS_cjs.d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:chunkYISEJCI6_cjs.b(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;module.exports=m;//# sourceMappingURL=mix.cjs.map | ||
| //# sourceMappingURL=mix.cjs.map |
@@ -1,2 +0,2 @@ | ||
| import {b as b$2,d}from'../chunk-OS5JUSWI.mjs';import'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {a,b as b$1}from'../chunk-IOXRZECH.mjs';var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=a(e,0,1);return new n({r:b$1(l.r*(1-o)+t.r*o),g:b$1(l.g*(1-o)+t.g*o),b:b$1(l.b*(1-o)+t.b*o),alpha:b$1(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=b$2(this._rawRgb()),l=b$2(new n(r)._rawRgb()),o=a(e,0,1);return new n(d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:b$1(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;export{m as default};//# sourceMappingURL=mix.mjs.map | ||
| import {b as b$2,d}from'../chunk-J6CH5YTL.mjs';import'../chunk-FXCFKFXK.mjs';import'../chunk-Q3O3QQ4H.mjs';import {a,b as b$1}from'../chunk-IOXRZECH.mjs';var b=n=>{n.prototype.mix=function(r,e=.5){let t=new n(r).toRgb(),l=this._rawRgb(),o=a(e,0,1);return new n({r:b$1(l.r*(1-o)+t.r*o),g:b$1(l.g*(1-o)+t.g*o),b:b$1(l.b*(1-o)+t.b*o),alpha:b$1(l.alpha*(1-o)+t.alpha*o,3)})},n.prototype.mixOklab=function(r,e=.5){let t=b$2(this._rawRgb()),l=b$2(new n(r)._rawRgb()),o=a(e,0,1);return new n(d({l:t.l*(1-o)+l.l*o,a:t.a*(1-o)+l.a*o,b:t.b*(1-o)+l.b*o,alpha:b$1(t.alpha*(1-o)+l.alpha*o,3)}))};let p=(r,e,t)=>e<=0?[]:e===1?[r]:Array.from({length:e},(l,o)=>r.mix(t,o/(e-1)));n.prototype.tints=function(r=5){return p(this,r,"#ffffff")},n.prototype.shades=function(r=5){return p(this,r,"#000000")},n.prototype.tones=function(r=5){return p(this,r,"#808080")},n.prototype.palette=function(r,e="#ffffff"){return p(this,r,e)};},m=b;export{m as default};//# sourceMappingURL=mix.mjs.map | ||
| //# sourceMappingURL=mix.mjs.map |
@@ -1,2 +0,2 @@ | ||
| 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunk3D3MFLZZ_cjs=require('../chunk-3D3MFLZZ.cjs'),chunk44FDTAPT_cjs=require('../chunk-44FDTAPT.cjs');require('../chunk-EDNIB75Q.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var G=.8224619687,$=.1775380313,w=.0331941989,A=.9668058011,F=.0170826307,B=.0723974407,I=.9105199286,N=1.2249401762805598,E=-0.22494017628055996,U=-0.04205695470968816,z=1.042056954709688,K=-0.019637554590334432,M=-0.07863604555063189,q=1.0982736001409663,O=(r,n,o,e)=>{r[0]=G*n+$*o,r[1]=w*n+A*o,r[2]=F*n+B*o+I*e;},P=(r,n,o)=>[G*r+$*n,w*r+A*n,F*r+B*n+I*o];var S=(r,n,o)=>[N*r+E*n,U*r+z*n,K*r+M*n+q*o],j=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=P(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(n/255),chunkX5FCFNQN_cjs.a(o/255));return {r:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.b(t),4),g:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.b(m),4),b:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.b(p),4),alpha:e,colorSpace:"display-p3"}};var v=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=S(chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n),chunkX5FCFNQN_cjs.a(o));return {r:chunkX5FCFNQN_cjs.b(t)*255,g:chunkX5FCFNQN_cjs.b(m)*255,b:chunkX5FCFNQN_cjs.b(p)*255,alpha:e}},y=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:t=1}=r;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(e)||!chunkYISEJCI6_cjs.f(t)?null:v({r:chunkYISEJCI6_cjs.g(n),g:chunkYISEJCI6_cjs.g(o),b:chunkYISEJCI6_cjs.g(e),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(t),0,1)})},D=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"),f=r=>{if(typeof r!="string")return null;let n=D.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),t=n.bp?chunkYISEJCI6_cjs.l(n.b)/100:chunkYISEJCI6_cjs.l(n.b),m=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return v({r:o,g:e,b:t,alpha:chunkYISEJCI6_cjs.a(m,0,1)})},T=(r,n,o)=>P(...chunk44FDTAPT_cjs.f(r,n,o));var H=(r,n,o)=>chunk44FDTAPT_cjs.a(...S(r,n,o)),J=(r,n,o)=>{let[e,t,m]=P(r,n,o);return [chunkX5FCFNQN_cjs.b(e),chunkX5FCFNQN_cjs.b(t),chunkX5FCFNQN_cjs.b(m)]},Q=(r,n,o,e)=>{O(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]);},mr=(r,n,o)=>J(...chunk3D3MFLZZ_cjs.e(r,n,o)),ar=(r,n,o,e)=>{chunk3D3MFLZZ_cjs.f(r,n,o,e),Q(r,r[0],r[1],r[2]);},lr=r=>chunk3D3MFLZZ_cjs.c(r,T),V=(r,n,o)=>{r.toGamutP3=e=>{let t=chunk3D3MFLZZ_cjs.d(e,T,H);return t!==null?r._makeFromOklab(t):new r(e)},r.prototype.toP3=function(){return j(this._rawRgb())},r.prototype.toP3String=function(){let{r:e,g:t,b:m,alpha:p}=this.toP3();return p<1?`color(display-p3 ${e} ${t} ${m} / ${p})`:`color(display-p3 ${e} ${t} ${m})`},n.push(f,y),o.push([f,"p3"],[y,"p3"]);},pr=V;exports.default=pr;exports.inGamutP3=lr;exports.linearToP3Channels=J;exports.linearToP3ChannelsInto=Q;exports.oklchToP3Channels=mr;exports.oklchToP3ChannelsInto=ar;//# sourceMappingURL=p3.cjs.map | ||
| 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkLTRVT3GL_cjs=require('../chunk-LTRVT3GL.cjs'),chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-EDNIB75Q.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var G=.8224619687,$=.1775380313,w=.0331941989,A=.9668058011,F=.0170826307,B=.0723974407,I=.9105199286,N=1.2249401762805598,E=-0.22494017628055996,U=-0.04205695470968816,z=1.042056954709688,K=-0.019637554590334432,M=-0.07863604555063189,q=1.0982736001409663,O=(r,n,o,e)=>{r[0]=G*n+$*o,r[1]=w*n+A*o,r[2]=F*n+B*o+I*e;},P=(r,n,o)=>[G*r+$*n,w*r+A*n,F*r+B*n+I*o];var S=(r,n,o)=>[N*r+E*n,U*r+z*n,K*r+M*n+q*o],j=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=P(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(n/255),chunkX5FCFNQN_cjs.a(o/255));return {r:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.b(t),4),g:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.b(m),4),b:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.b(p),4),alpha:e,colorSpace:"display-p3"}};var v=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=S(chunkX5FCFNQN_cjs.a(r),chunkX5FCFNQN_cjs.a(n),chunkX5FCFNQN_cjs.a(o));return {r:chunkX5FCFNQN_cjs.b(t)*255,g:chunkX5FCFNQN_cjs.b(m)*255,b:chunkX5FCFNQN_cjs.b(p)*255,alpha:e}},y=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:t=1}=r;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(e)||!chunkYISEJCI6_cjs.f(t)?null:v({r:chunkYISEJCI6_cjs.g(n),g:chunkYISEJCI6_cjs.g(o),b:chunkYISEJCI6_cjs.g(e),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(t),0,1)})},D=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"),f=r=>{if(typeof r!="string")return null;let n=D.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),t=n.bp?chunkYISEJCI6_cjs.l(n.b)/100:chunkYISEJCI6_cjs.l(n.b),m=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return v({r:o,g:e,b:t,alpha:chunkYISEJCI6_cjs.a(m,0,1)})},T=(r,n,o)=>P(...chunkGXECYURS_cjs.f(r,n,o));var H=(r,n,o)=>chunkGXECYURS_cjs.a(...S(r,n,o)),J=(r,n,o)=>{let[e,t,m]=P(r,n,o);return [chunkX5FCFNQN_cjs.b(e),chunkX5FCFNQN_cjs.b(t),chunkX5FCFNQN_cjs.b(m)]},Q=(r,n,o,e)=>{O(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]);},mr=(r,n,o)=>J(...chunkLTRVT3GL_cjs.e(r,n,o)),ar=(r,n,o,e)=>{chunkLTRVT3GL_cjs.f(r,n,o,e),Q(r,r[0],r[1],r[2]);},lr=r=>chunkLTRVT3GL_cjs.c(r,T),V=(r,n,o)=>{r.toGamutP3=e=>{let t=chunkLTRVT3GL_cjs.d(e,T,H);return t!==null?r._makeFromOklab(t):new r(e)},r.prototype.toP3=function(){return j(this._rawRgb())},r.prototype.toP3String=function(){let{r:e,g:t,b:m,alpha:p}=this.toP3();return p<1?`color(display-p3 ${e} ${t} ${m} / ${p})`:`color(display-p3 ${e} ${t} ${m})`},n.push(f,y),o.push([f,"p3"],[y,"p3"]);},pr=V;exports.default=pr;exports.inGamutP3=lr;exports.linearToP3Channels=J;exports.linearToP3ChannelsInto=Q;exports.oklchToP3Channels=mr;exports.oklchToP3ChannelsInto=ar;//# sourceMappingURL=p3.cjs.map | ||
| //# sourceMappingURL=p3.cjs.map |
@@ -1,2 +0,2 @@ | ||
| import {e,f as f$1,c,d}from'../chunk-AOK3BIZI.mjs';import {f as f$2,a}from'../chunk-OS5JUSWI.mjs';import'../chunk-OXYX6VNO.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$3,g,k}from'../chunk-IOXRZECH.mjs';var G=.8224619687,$=.1775380313,w=.0331941989,A=.9668058011,F=.0170826307,B=.0723974407,I=.9105199286,N=1.2249401762805598,E=-0.22494017628055996,U=-0.04205695470968816,z=1.042056954709688,K=-0.019637554590334432,M=-0.07863604555063189,q=1.0982736001409663,O=(r,n,o,e)=>{r[0]=G*n+$*o,r[1]=w*n+A*o,r[2]=F*n+B*o+I*e;},P=(r,n,o)=>[G*r+$*n,w*r+A*n,F*r+B*n+I*o];var S=(r,n,o)=>[N*r+E*n,U*r+z*n,K*r+M*n+q*o],j=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=P(a$1(r/255),a$1(n/255),a$1(o/255));return {r:b$1(b(t),4),g:b$1(b(m),4),b:b$1(b(p),4),alpha:e,colorSpace:"display-p3"}};var v=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=S(a$1(r),a$1(n),a$1(o));return {r:b(t)*255,g:b(m)*255,b:b(p)*255,alpha:e}},y=r=>{if(!h(r)||r.colorSpace!=="display-p3"||!i(r,["r","g","b"]))return null;let{r:n,g:o,b:e,alpha:t=1}=r;return !f$3(n)||!f$3(o)||!f$3(e)||!f$3(t)?null:v({r:g(n),g:g(o),b:g(e),alpha:a$2(g(t),0,1)})},D=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"),f=r=>{if(typeof r!="string")return null;let n=D.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),t=n.bp?l(n.b)/100:l(n.b),m=n.al===void 0?1:l(n.al)/(n.alp?100:1);return v({r:o,g:e,b:t,alpha:a$2(m,0,1)})},T=(r,n,o)=>P(...f$2(r,n,o));var H=(r,n,o)=>a(...S(r,n,o)),J=(r,n,o)=>{let[e,t,m]=P(r,n,o);return [b(e),b(t),b(m)]},Q=(r,n,o,e)=>{O(r,n,o,e),r[0]=b(r[0]),r[1]=b(r[1]),r[2]=b(r[2]);},mr=(r,n,o)=>J(...e(r,n,o)),ar=(r,n,o,e)=>{f$1(r,n,o,e),Q(r,r[0],r[1],r[2]);},lr=r=>c(r,T),V=(r,n,o)=>{r.toGamutP3=e=>{let t=d(e,T,H);return t!==null?r._makeFromOklab(t):new r(e)},r.prototype.toP3=function(){return j(this._rawRgb())},r.prototype.toP3String=function(){let{r:e,g:t,b:m,alpha:p}=this.toP3();return p<1?`color(display-p3 ${e} ${t} ${m} / ${p})`:`color(display-p3 ${e} ${t} ${m})`},n.push(f,y),o.push([f,"p3"],[y,"p3"]);},pr=V;export{pr as default,lr as inGamutP3,J as linearToP3Channels,Q as linearToP3ChannelsInto,mr as oklchToP3Channels,ar as oklchToP3ChannelsInto};//# sourceMappingURL=p3.mjs.map | ||
| import {e,f as f$1,c,d}from'../chunk-2HOOMNKQ.mjs';import {f as f$2,a}from'../chunk-J6CH5YTL.mjs';import'../chunk-OXYX6VNO.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$3,g,k}from'../chunk-IOXRZECH.mjs';var G=.8224619687,$=.1775380313,w=.0331941989,A=.9668058011,F=.0170826307,B=.0723974407,I=.9105199286,N=1.2249401762805598,E=-0.22494017628055996,U=-0.04205695470968816,z=1.042056954709688,K=-0.019637554590334432,M=-0.07863604555063189,q=1.0982736001409663,O=(r,n,o,e)=>{r[0]=G*n+$*o,r[1]=w*n+A*o,r[2]=F*n+B*o+I*e;},P=(r,n,o)=>[G*r+$*n,w*r+A*n,F*r+B*n+I*o];var S=(r,n,o)=>[N*r+E*n,U*r+z*n,K*r+M*n+q*o],j=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=P(a$1(r/255),a$1(n/255),a$1(o/255));return {r:b$1(b(t),4),g:b$1(b(m),4),b:b$1(b(p),4),alpha:e,colorSpace:"display-p3"}};var v=({r,g:n,b:o,alpha:e})=>{let[t,m,p]=S(a$1(r),a$1(n),a$1(o));return {r:b(t)*255,g:b(m)*255,b:b(p)*255,alpha:e}},y=r=>{if(!h(r)||r.colorSpace!=="display-p3"||!i(r,["r","g","b"]))return null;let{r:n,g:o,b:e,alpha:t=1}=r;return !f$3(n)||!f$3(o)||!f$3(e)||!f$3(t)?null:v({r:g(n),g:g(o),b:g(e),alpha:a$2(g(t),0,1)})},D=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"),f=r=>{if(typeof r!="string")return null;let n=D.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),t=n.bp?l(n.b)/100:l(n.b),m=n.al===void 0?1:l(n.al)/(n.alp?100:1);return v({r:o,g:e,b:t,alpha:a$2(m,0,1)})},T=(r,n,o)=>P(...f$2(r,n,o));var H=(r,n,o)=>a(...S(r,n,o)),J=(r,n,o)=>{let[e,t,m]=P(r,n,o);return [b(e),b(t),b(m)]},Q=(r,n,o,e)=>{O(r,n,o,e),r[0]=b(r[0]),r[1]=b(r[1]),r[2]=b(r[2]);},mr=(r,n,o)=>J(...e(r,n,o)),ar=(r,n,o,e)=>{f$1(r,n,o,e),Q(r,r[0],r[1],r[2]);},lr=r=>c(r,T),V=(r,n,o)=>{r.toGamutP3=e=>{let t=d(e,T,H);return t!==null?r._makeFromOklab(t):new r(e)},r.prototype.toP3=function(){return j(this._rawRgb())},r.prototype.toP3String=function(){let{r:e,g:t,b:m,alpha:p}=this.toP3();return p<1?`color(display-p3 ${e} ${t} ${m} / ${p})`:`color(display-p3 ${e} ${t} ${m})`},n.push(f,y),o.push([f,"p3"],[y,"p3"]);},pr=V;export{pr as default,lr as inGamutP3,J as linearToP3Channels,Q as linearToP3ChannelsInto,mr as oklchToP3Channels,ar as oklchToP3ChannelsInto};//# sourceMappingURL=p3.mjs.map | ||
| //# sourceMappingURL=p3.mjs.map |
@@ -1,2 +0,2 @@ | ||
| 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunk3D3MFLZZ_cjs=require('../chunk-3D3MFLZZ.cjs'),chunk44FDTAPT_cjs=require('../chunk-44FDTAPT.cjs');require('../chunk-EDNIB75Q.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var w=.6274038959,A=.3292830384,F=.0433130657,I=.0690972894,O=.9195403951,j=.0113623156,v=.0163914389,N=.0880133079,E=.8955952532,K=1.6604910021084345,M=-0.5876411387885495,q=-0.07284986331988488,D=-0.12455047452159074,H=1.1328998971259603,J=-0.008349422604369477,Q=-0.018150763354905303,V=-0.10057889800800739,W=1.1187296613629127,P=(r,e,n,o)=>{r[0]=w*e+A*n+F*o,r[1]=I*e+O*n+j*o,r[2]=v*e+N*n+E*o;},S=(r,e,n)=>[w*r+A*e+F*n,I*r+O*e+j*n,v*r+N*e+E*n];var T=(r,e,n)=>[K*r+M*e+q*n,D*r+H*e+J*n,Q*r+V*e+W*n],U=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=S(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(e/255),chunkX5FCFNQN_cjs.a(n/255));return {r:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.d(c),4),g:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.d(m),4),b:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.d(a),4),alpha:o,colorSpace:"rec2020"}};var z=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=T(chunkX5FCFNQN_cjs.c(r),chunkX5FCFNQN_cjs.c(e),chunkX5FCFNQN_cjs.c(n));return {r:chunkX5FCFNQN_cjs.b(c)*255,g:chunkX5FCFNQN_cjs.b(m)*255,b:chunkX5FCFNQN_cjs.b(a)*255,alpha:o}},_=r=>{if(!chunkYISEJCI6_cjs.h(r)||r.colorSpace!=="rec2020"||!chunkYISEJCI6_cjs.i(r,["r","g","b"]))return null;let{r:e,g:n,b:o,alpha:c=1}=r;return !chunkYISEJCI6_cjs.f(e)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(c)?null:z({r:chunkYISEJCI6_cjs.g(e),g:chunkYISEJCI6_cjs.g(n),b:chunkYISEJCI6_cjs.g(o),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(c),0,1)})},X=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"),L=r=>{if(typeof r!="string")return null;let e=X.exec(r.trim())?.groups;if(!e)return null;let n=e.rp?chunkYISEJCI6_cjs.l(e.r)/100:chunkYISEJCI6_cjs.l(e.r),o=e.gp?chunkYISEJCI6_cjs.l(e.g)/100:chunkYISEJCI6_cjs.l(e.g),c=e.bp?chunkYISEJCI6_cjs.l(e.b)/100:chunkYISEJCI6_cjs.l(e.b),m=e.al===void 0?1:chunkYISEJCI6_cjs.l(e.al)/(e.alp?100:1);return z({r:n,g:o,b:c,alpha:chunkYISEJCI6_cjs.a(m,0,1)})},h=(r,e,n)=>S(...chunk44FDTAPT_cjs.f(r,e,n));var Y=(r,e,n)=>chunk44FDTAPT_cjs.a(...T(r,e,n)),Z=(r,e,n)=>{let[o,c,m]=S(r,e,n);return [chunkX5FCFNQN_cjs.d(o),chunkX5FCFNQN_cjs.d(c),chunkX5FCFNQN_cjs.d(m)]},rr=(r,e,n,o)=>{P(r,e,n,o),r[0]=chunkX5FCFNQN_cjs.d(r[0]),r[1]=chunkX5FCFNQN_cjs.d(r[1]),r[2]=chunkX5FCFNQN_cjs.d(r[2]);},Rr=(r,e,n)=>Z(...chunk3D3MFLZZ_cjs.e(r,e,n)),ir=(r,e,n,o)=>{chunk3D3MFLZZ_cjs.f(r,e,n,o),rr(r,r[0],r[1],r[2]);},pr=r=>chunk3D3MFLZZ_cjs.c(r,h),er=(r,e,n)=>{r.toGamutRec2020=o=>{let c=chunk3D3MFLZZ_cjs.d(o,h,Y);return c!==null?r._makeFromOklab(c):new r(o)},r.prototype.toRec2020=function(){return U(this._rawRgb())},r.prototype.toRec2020String=function(){let{r:o,g:c,b:m,alpha:a}=this.toRec2020();return a<1?`color(rec2020 ${o} ${c} ${m} / ${a})`:`color(rec2020 ${o} ${c} ${m})`},e.push(L,_),n.push([L,"rec2020"],[_,"rec2020"]);},gr=er;exports.default=gr;exports.inGamutRec2020=pr;exports.linearToRec2020Channels=Z;exports.linearToRec2020ChannelsInto=rr;exports.oklchToRec2020Channels=Rr;exports.oklchToRec2020ChannelsInto=ir;//# sourceMappingURL=rec2020.cjs.map | ||
| 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkLTRVT3GL_cjs=require('../chunk-LTRVT3GL.cjs'),chunkGXECYURS_cjs=require('../chunk-GXECYURS.cjs');require('../chunk-EDNIB75Q.cjs');var chunkX5FCFNQN_cjs=require('../chunk-X5FCFNQN.cjs');require('../chunk-3V4MONNR.cjs');var chunkYISEJCI6_cjs=require('../chunk-YISEJCI6.cjs');var w=.6274038959,A=.3292830384,F=.0433130657,I=.0690972894,O=.9195403951,j=.0113623156,v=.0163914389,N=.0880133079,E=.8955952532,K=1.6604910021084345,M=-0.5876411387885495,q=-0.07284986331988488,D=-0.12455047452159074,H=1.1328998971259603,J=-0.008349422604369477,Q=-0.018150763354905303,V=-0.10057889800800739,W=1.1187296613629127,P=(r,e,n,o)=>{r[0]=w*e+A*n+F*o,r[1]=I*e+O*n+j*o,r[2]=v*e+N*n+E*o;},S=(r,e,n)=>[w*r+A*e+F*n,I*r+O*e+j*n,v*r+N*e+E*n];var T=(r,e,n)=>[K*r+M*e+q*n,D*r+H*e+J*n,Q*r+V*e+W*n],U=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=S(chunkX5FCFNQN_cjs.a(r/255),chunkX5FCFNQN_cjs.a(e/255),chunkX5FCFNQN_cjs.a(n/255));return {r:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.d(c),4),g:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.d(m),4),b:chunkYISEJCI6_cjs.b(chunkX5FCFNQN_cjs.d(a),4),alpha:o,colorSpace:"rec2020"}};var z=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=T(chunkX5FCFNQN_cjs.c(r),chunkX5FCFNQN_cjs.c(e),chunkX5FCFNQN_cjs.c(n));return {r:chunkX5FCFNQN_cjs.b(c)*255,g:chunkX5FCFNQN_cjs.b(m)*255,b:chunkX5FCFNQN_cjs.b(a)*255,alpha:o}},_=r=>{if(!chunkYISEJCI6_cjs.h(r)||r.colorSpace!=="rec2020"||!chunkYISEJCI6_cjs.i(r,["r","g","b"]))return null;let{r:e,g:n,b:o,alpha:c=1}=r;return !chunkYISEJCI6_cjs.f(e)||!chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(o)||!chunkYISEJCI6_cjs.f(c)?null:z({r:chunkYISEJCI6_cjs.g(e),g:chunkYISEJCI6_cjs.g(n),b:chunkYISEJCI6_cjs.g(o),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(c),0,1)})},X=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"),L=r=>{if(typeof r!="string")return null;let e=X.exec(r.trim())?.groups;if(!e)return null;let n=e.rp?chunkYISEJCI6_cjs.l(e.r)/100:chunkYISEJCI6_cjs.l(e.r),o=e.gp?chunkYISEJCI6_cjs.l(e.g)/100:chunkYISEJCI6_cjs.l(e.g),c=e.bp?chunkYISEJCI6_cjs.l(e.b)/100:chunkYISEJCI6_cjs.l(e.b),m=e.al===void 0?1:chunkYISEJCI6_cjs.l(e.al)/(e.alp?100:1);return z({r:n,g:o,b:c,alpha:chunkYISEJCI6_cjs.a(m,0,1)})},h=(r,e,n)=>S(...chunkGXECYURS_cjs.f(r,e,n));var Y=(r,e,n)=>chunkGXECYURS_cjs.a(...T(r,e,n)),Z=(r,e,n)=>{let[o,c,m]=S(r,e,n);return [chunkX5FCFNQN_cjs.d(o),chunkX5FCFNQN_cjs.d(c),chunkX5FCFNQN_cjs.d(m)]},rr=(r,e,n,o)=>{P(r,e,n,o),r[0]=chunkX5FCFNQN_cjs.d(r[0]),r[1]=chunkX5FCFNQN_cjs.d(r[1]),r[2]=chunkX5FCFNQN_cjs.d(r[2]);},Rr=(r,e,n)=>Z(...chunkLTRVT3GL_cjs.e(r,e,n)),ir=(r,e,n,o)=>{chunkLTRVT3GL_cjs.f(r,e,n,o),rr(r,r[0],r[1],r[2]);},pr=r=>chunkLTRVT3GL_cjs.c(r,h),er=(r,e,n)=>{r.toGamutRec2020=o=>{let c=chunkLTRVT3GL_cjs.d(o,h,Y);return c!==null?r._makeFromOklab(c):new r(o)},r.prototype.toRec2020=function(){return U(this._rawRgb())},r.prototype.toRec2020String=function(){let{r:o,g:c,b:m,alpha:a}=this.toRec2020();return a<1?`color(rec2020 ${o} ${c} ${m} / ${a})`:`color(rec2020 ${o} ${c} ${m})`},e.push(L,_),n.push([L,"rec2020"],[_,"rec2020"]);},gr=er;exports.default=gr;exports.inGamutRec2020=pr;exports.linearToRec2020Channels=Z;exports.linearToRec2020ChannelsInto=rr;exports.oklchToRec2020Channels=Rr;exports.oklchToRec2020ChannelsInto=ir;//# sourceMappingURL=rec2020.cjs.map | ||
| //# sourceMappingURL=rec2020.cjs.map |
@@ -1,2 +0,2 @@ | ||
| import {e,f,c,d as d$1}from'../chunk-AOK3BIZI.mjs';import {f as f$1,a}from'../chunk-OS5JUSWI.mjs';import'../chunk-OXYX6VNO.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$2,g,k}from'../chunk-IOXRZECH.mjs';var w=.6274038959,A=.3292830384,F=.0433130657,I=.0690972894,O=.9195403951,j=.0113623156,v=.0163914389,N=.0880133079,E=.8955952532,K=1.6604910021084345,M=-0.5876411387885495,q=-0.07284986331988488,D=-0.12455047452159074,H=1.1328998971259603,J=-0.008349422604369477,Q=-0.018150763354905303,V=-0.10057889800800739,W=1.1187296613629127,P=(r,e,n,o)=>{r[0]=w*e+A*n+F*o,r[1]=I*e+O*n+j*o,r[2]=v*e+N*n+E*o;},S=(r,e,n)=>[w*r+A*e+F*n,I*r+O*e+j*n,v*r+N*e+E*n];var T=(r,e,n)=>[K*r+M*e+q*n,D*r+H*e+J*n,Q*r+V*e+W*n],U=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=S(a$1(r/255),a$1(e/255),a$1(n/255));return {r:b(d(c),4),g:b(d(m),4),b:b(d(a),4),alpha:o,colorSpace:"rec2020"}};var z=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=T(c$1(r),c$1(e),c$1(n));return {r:b$1(c)*255,g:b$1(m)*255,b:b$1(a)*255,alpha:o}},_=r=>{if(!h$1(r)||r.colorSpace!=="rec2020"||!i(r,["r","g","b"]))return null;let{r:e,g:n,b:o,alpha:c=1}=r;return !f$2(e)||!f$2(n)||!f$2(o)||!f$2(c)?null:z({r:g(e),g:g(n),b:g(o),alpha:a$2(g(c),0,1)})},X=new RegExp(`^color\\(\\s*rec2020\\s+(?<r>${k})(?<rp>%?)\\s+(?<g>${k})(?<gp>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),L=r=>{if(typeof r!="string")return null;let e=X.exec(r.trim())?.groups;if(!e)return null;let n=e.rp?l(e.r)/100:l(e.r),o=e.gp?l(e.g)/100:l(e.g),c=e.bp?l(e.b)/100:l(e.b),m=e.al===void 0?1:l(e.al)/(e.alp?100:1);return z({r:n,g:o,b:c,alpha:a$2(m,0,1)})},h=(r,e,n)=>S(...f$1(r,e,n));var Y=(r,e,n)=>a(...T(r,e,n)),Z=(r,e,n)=>{let[o,c,m]=S(r,e,n);return [d(o),d(c),d(m)]},rr=(r,e,n,o)=>{P(r,e,n,o),r[0]=d(r[0]),r[1]=d(r[1]),r[2]=d(r[2]);},Rr=(r,e$1,n)=>Z(...e(r,e$1,n)),ir=(r,e,n,o)=>{f(r,e,n,o),rr(r,r[0],r[1],r[2]);},pr=r=>c(r,h),er=(r,e,n)=>{r.toGamutRec2020=o=>{let c=d$1(o,h,Y);return c!==null?r._makeFromOklab(c):new r(o)},r.prototype.toRec2020=function(){return U(this._rawRgb())},r.prototype.toRec2020String=function(){let{r:o,g:c,b:m,alpha:a}=this.toRec2020();return a<1?`color(rec2020 ${o} ${c} ${m} / ${a})`:`color(rec2020 ${o} ${c} ${m})`},e.push(L,_),n.push([L,"rec2020"],[_,"rec2020"]);},gr=er;export{gr as default,pr as inGamutRec2020,Z as linearToRec2020Channels,rr as linearToRec2020ChannelsInto,Rr as oklchToRec2020Channels,ir as oklchToRec2020ChannelsInto};//# sourceMappingURL=rec2020.mjs.map | ||
| import {e,f,c,d as d$1}from'../chunk-2HOOMNKQ.mjs';import {f as f$1,a}from'../chunk-J6CH5YTL.mjs';import'../chunk-OXYX6VNO.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$2,g,k}from'../chunk-IOXRZECH.mjs';var w=.6274038959,A=.3292830384,F=.0433130657,I=.0690972894,O=.9195403951,j=.0113623156,v=.0163914389,N=.0880133079,E=.8955952532,K=1.6604910021084345,M=-0.5876411387885495,q=-0.07284986331988488,D=-0.12455047452159074,H=1.1328998971259603,J=-0.008349422604369477,Q=-0.018150763354905303,V=-0.10057889800800739,W=1.1187296613629127,P=(r,e,n,o)=>{r[0]=w*e+A*n+F*o,r[1]=I*e+O*n+j*o,r[2]=v*e+N*n+E*o;},S=(r,e,n)=>[w*r+A*e+F*n,I*r+O*e+j*n,v*r+N*e+E*n];var T=(r,e,n)=>[K*r+M*e+q*n,D*r+H*e+J*n,Q*r+V*e+W*n],U=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=S(a$1(r/255),a$1(e/255),a$1(n/255));return {r:b(d(c),4),g:b(d(m),4),b:b(d(a),4),alpha:o,colorSpace:"rec2020"}};var z=({r,g:e,b:n,alpha:o})=>{let[c,m,a]=T(c$1(r),c$1(e),c$1(n));return {r:b$1(c)*255,g:b$1(m)*255,b:b$1(a)*255,alpha:o}},_=r=>{if(!h$1(r)||r.colorSpace!=="rec2020"||!i(r,["r","g","b"]))return null;let{r:e,g:n,b:o,alpha:c=1}=r;return !f$2(e)||!f$2(n)||!f$2(o)||!f$2(c)?null:z({r:g(e),g:g(n),b:g(o),alpha:a$2(g(c),0,1)})},X=new RegExp(`^color\\(\\s*rec2020\\s+(?<r>${k})(?<rp>%?)\\s+(?<g>${k})(?<gp>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),L=r=>{if(typeof r!="string")return null;let e=X.exec(r.trim())?.groups;if(!e)return null;let n=e.rp?l(e.r)/100:l(e.r),o=e.gp?l(e.g)/100:l(e.g),c=e.bp?l(e.b)/100:l(e.b),m=e.al===void 0?1:l(e.al)/(e.alp?100:1);return z({r:n,g:o,b:c,alpha:a$2(m,0,1)})},h=(r,e,n)=>S(...f$1(r,e,n));var Y=(r,e,n)=>a(...T(r,e,n)),Z=(r,e,n)=>{let[o,c,m]=S(r,e,n);return [d(o),d(c),d(m)]},rr=(r,e,n,o)=>{P(r,e,n,o),r[0]=d(r[0]),r[1]=d(r[1]),r[2]=d(r[2]);},Rr=(r,e$1,n)=>Z(...e(r,e$1,n)),ir=(r,e,n,o)=>{f(r,e,n,o),rr(r,r[0],r[1],r[2]);},pr=r=>c(r,h),er=(r,e,n)=>{r.toGamutRec2020=o=>{let c=d$1(o,h,Y);return c!==null?r._makeFromOklab(c):new r(o)},r.prototype.toRec2020=function(){return U(this._rawRgb())},r.prototype.toRec2020String=function(){let{r:o,g:c,b:m,alpha:a}=this.toRec2020();return a<1?`color(rec2020 ${o} ${c} ${m} / ${a})`:`color(rec2020 ${o} ${c} ${m})`},e.push(L,_),n.push([L,"rec2020"],[_,"rec2020"]);},gr=er;export{gr as default,pr as inGamutRec2020,Z as linearToRec2020Channels,rr as linearToRec2020ChannelsInto,Rr as oklchToRec2020Channels,ir as oklchToRec2020ChannelsInto};//# sourceMappingURL=rec2020.mjs.map | ||
| //# sourceMappingURL=rec2020.mjs.map |
+1
-1
| { | ||
| "name": "@colordx/core", | ||
| "version": "5.3.0", | ||
| "version": "5.3.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", |
| 'use strict';var chunk44FDTAPT_cjs=require('./chunk-44FDTAPT.cjs'),chunkEDNIB75Q_cjs=require('./chunk-EDNIB75Q.cjs'),chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var K=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,q=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,C=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{x:o,y:t,z:b}=chunkEDNIB75Q_cjs.d(n),[u,l,p]=chunkEDNIB75Q_cjs.b(o,t,b),[m,d,k]=chunk44FDTAPT_cjs.a(u,l,p);return {l:m,a:d,b:k,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=K.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]),t=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(chunkYISEJCI6_cjs.d[t]??1)*Math.PI/180,l=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:l}}if(r=q.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),t=r[6]?Number(r[5])*.004:Number(r[5]),b=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b:t,alpha:b}}return null}return null},c=5e-4,D=(e,r,n)=>e>=-c&&e<=1+c&&r>=-c&&r<=1+c&&n>=-c&&n<=1+c,O=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,Q=e=>{let r=C(e);if(r===null)return true;let[n,o,t]=chunk44FDTAPT_cjs.f(r.l,r.a,r.b);return D(n,o,t)},E=.02,U=1e-4,F=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],t=e[2]-r[2];return Math.sqrt(n*n+o*o+t*t)},_=(e,r,n,o,t,b)=>{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,l,p]=t(e,r,n);if(O(u,l,p))return {l:e,a:r,b:n,alpha:o};let m=b(chunkYISEJCI6_cjs.a(u,0,1),chunkYISEJCI6_cjs.a(l,0,1),chunkYISEJCI6_cjs.a(p,0,1));if(F(m,[e,r,n])<=E)return {l:m[0],a:m[1],b:m[2],alpha:o};let d=Math.atan2(n,r),k=Math.sqrt(r*r+n*n),f=0,L=k,M=true,y=m;for(;L-f>U;){let i=(f+L)/2,N=i*Math.cos(d),x=i*Math.sin(d),[A,T,R]=t(e,N,x);if(M&&O(A,T,R)){f=i;continue}let I=b(chunkYISEJCI6_cjs.a(A,0,1),chunkYISEJCI6_cjs.a(T,0,1),chunkYISEJCI6_cjs.a(R,0,1));y=I,F(I,[e,N,x])<=E?(f=i,M=false):L=i;}return {l:y[0],a:y[1],b:y[2],alpha:o}},V=e=>{let r=C(e);if(r===null)return null;let{l:n,a:o,b:t,alpha:b}=r;return _(n,o,t,b,chunk44FDTAPT_cjs.f,chunk44FDTAPT_cjs.a)},W=(e,r)=>{let n=C(e);if(n===null)return true;let[o,t,b]=r(n.l,n.a,n.b);return D(o,t,b)},Y=(e,r,n)=>{let o=C(e);if(o===null)return null;let{l:t,a:b,b:u,alpha:l}=o;return _(t,b,u,l,r,n)};var P=Math.PI/180,j=(e,r,n)=>{let o=n*P;return chunk44FDTAPT_cjs.f(e,r*Math.cos(o),r*Math.sin(o))},z=(e,r,n,o)=>{let t=o*P;chunk44FDTAPT_cjs.e(e,r,n*Math.cos(t),n*Math.sin(t));},er=(e,r,n)=>{let[o,t,b]=j(e,r,n);return [chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(t),chunkX5FCFNQN_cjs.b(b)]},or=(e,r,n,o)=>{z(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]);},tr=(e,r,n)=>{let[o,t,b]=j(e,r,n);return [[o,t,b],[chunkX5FCFNQN_cjs.b(o),chunkX5FCFNQN_cjs.b(t),chunkX5FCFNQN_cjs.b(b)]]},br=(e,r,n,o,t)=>{z(e,n,o,t),r[0]=chunkX5FCFNQN_cjs.b(e[0]),r[1]=chunkX5FCFNQN_cjs.b(e[1]),r[2]=chunkX5FCFNQN_cjs.b(e[2]);};exports.a=Q;exports.b=V;exports.c=W;exports.d=Y;exports.e=j;exports.f=z;exports.g=er;exports.h=or;exports.i=tr;exports.j=br;//# sourceMappingURL=chunk-3D3MFLZZ.cjs.map | ||
| //# sourceMappingURL=chunk-3D3MFLZZ.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","b","EPS","isLinearInGamut","r","g","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"],"mappings":"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","file":"chunk-3D3MFLZZ.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 { oklabToLinear, oklabToLinearInto } from './colorModels/oklab.js';\nimport { srgbFromLinear } 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"]} |
| 'use strict';var chunkX5FCFNQN_cjs=require('./chunk-X5FCFNQN.cjs'),chunk3V4MONNR_cjs=require('./chunk-3V4MONNR.cjs'),chunkYISEJCI6_cjs=require('./chunk-YISEJCI6.cjs');var F=.4122214708,K=.5363325363,U=.0514459929,z=.2119034982,q=.6806995451,D=.1073969566,H=.0883024619,J=.2817188376,P=.6299787005,Q=.2104542553,V=.793617785,W=-0.0040720468,X=1.9779984951,Y=-2.428592205,Z=.4505937099,nn=.0259040371,on=.7827717662,rn=-0.808675766,R=.3963377774,I=.2158037573,S=-0.1055613458,f=-0.0638541728,O=-0.0894841775,h=-1.291485548,B=4.0767416613,x=-3.3077115904,A=.2309699287,C=-1.2684380041,w=2.6097574007,T=-0.3413193963,y=-0.0041960865,G=-0.7034186145,d=1.7076147009;var tn=(o,n,r)=>{let t=Math.cbrt(F*o+K*n+U*r),s=Math.cbrt(z*o+q*n+D*r),c=Math.cbrt(H*o+J*n+P*r);return [Q*t+V*s+W*c,X*t+Y*s+Z*c,nn*t+on*s+rn*c]},bn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=tn(chunkX5FCFNQN_cjs.a(o/255),chunkX5FCFNQN_cjs.a(n/255),chunkX5FCFNQN_cjs.a(r/255));return {l:s,a:c,b:e,alpha:t}},N=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=sn(o,n,r);return {r:chunkX5FCFNQN_cjs.b(s)*255,g:chunkX5FCFNQN_cjs.b(c)*255,b:chunkX5FCFNQN_cjs.b(e)*255,alpha:t}},an=({l:o,a:n,b:r,alpha:t})=>{let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,a=e**3,$=4.0767416613*_-3.3077115904*l+.2309699287*a,j=-1.2684380041*_+2.6097574007*l-.3413193963*a,E=-0.0041960865*_-.7034186145*l+1.7076147009*a;return chunk3V4MONNR_cjs.a({r:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a($,0,1))*255,g:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(j,0,1))*255,b:chunkX5FCFNQN_cjs.b(chunkYISEJCI6_cjs.a(E,0,1))*255,alpha:t})},Mn=(o,n,r,t)=>{let s=n+R*r+I*t,c=n+S*r+f*t,e=n+O*r+h*t,_=s**3,l=c**3,a=e**3;o[0]=B*_+x*l+A*a,o[1]=C*_+w*l+T*a,o[2]=y*_+G*l+d*a;},sn=(o,n,r)=>{let t=o+R*n+I*r,s=o+S*n+f*r,c=o+O*n+h*r,e=t**3,_=s**3,l=c**3;return [B*e+x*_+A*l,C*e+w*_+T*l,y*e+G*_+d*l]},un=o=>{if(!chunkYISEJCI6_cjs.h(o)||o.colorSpace==="lab"||!chunkYISEJCI6_cjs.i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !chunkYISEJCI6_cjs.f(n)||!chunkYISEJCI6_cjs.f(r)||!chunkYISEJCI6_cjs.f(t)||!chunkYISEJCI6_cjs.f(s)||chunkYISEJCI6_cjs.g(n)>1?null:N({l:chunkYISEJCI6_cjs.g(n),a:chunkYISEJCI6_cjs.g(r),b:chunkYISEJCI6_cjs.g(t),alpha:chunkYISEJCI6_cjs.a(chunkYISEJCI6_cjs.g(s),0,1)})},cn=new RegExp(`^oklab\\(\\s*(?<l>${chunkYISEJCI6_cjs.k})(?<lp>%?)\\s+(?<a>${chunkYISEJCI6_cjs.k})(?<ap>%?)\\s+(?<b>${chunkYISEJCI6_cjs.k})(?<bp>%?)\\s*(?:/\\s*(?<al>${chunkYISEJCI6_cjs.k})(?<alp>%?)\\s*)?\\)$`,"i"),mn=o=>{if(typeof o!="string")return null;let n=cn.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?chunkYISEJCI6_cjs.l(n.l)/100:chunkYISEJCI6_cjs.l(n.l),t=n.ap?chunkYISEJCI6_cjs.l(n.a)*.004:chunkYISEJCI6_cjs.l(n.a),s=n.bp?chunkYISEJCI6_cjs.l(n.b)*.004:chunkYISEJCI6_cjs.l(n.b),c=n.al===void 0?1:chunkYISEJCI6_cjs.l(n.al)/(n.alp?100:1);return N({l:r,a:t,b:s,alpha:chunkYISEJCI6_cjs.a(c,0,1)})};exports.a=tn;exports.b=bn;exports.c=N;exports.d=an;exports.e=Mn;exports.f=sn;exports.g=un;exports.h=mn;//# sourceMappingURL=chunk-44FDTAPT.cjs.map | ||
| //# sourceMappingURL=chunk-44FDTAPT.cjs.map |
| {"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","l_","m_","s_","clampRgb","clamp","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"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","file":"chunk-44FDTAPT.cjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]} |
| import {f,e,a}from'./chunk-OS5JUSWI.mjs';import {d,b as b$1}from'./chunk-OXYX6VNO.mjs';import {b}from'./chunk-FXCFKFXK.mjs';import {d as d$1,a as a$1}from'./chunk-IOXRZECH.mjs';var K=/^oklch\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,q=/^oklab\(\s*([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s+([+-]?\d*\.?\d+)(%?)\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,C=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{x:o,y:t,z:b}=d(n),[u,l,p]=b$1(o,t,b),[m,d$1,k]=a(u,l,p);return {l:m,a:d$1,b:k,alpha:typeof n.alpha=="number"?n.alpha:1}}return null}if(typeof e=="string"){let r=K.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]),t=r[6]?.toLowerCase()??"deg",u=Number(r[5])*(d$1[t]??1)*Math.PI/180,l=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:l}}if(r=q.exec(e),r){let n=r[2]?Number(r[1])/100:Number(r[1]),o=r[4]?Number(r[3])*.004:Number(r[3]),t=r[6]?Number(r[5])*.004:Number(r[5]),b=r[7]===void 0?1:Number(r[7])/(r[8]?100:1);return {l:n,a:o,b:t,alpha:b}}return null}return null},c=5e-4,D=(e,r,n)=>e>=-c&&e<=1+c&&r>=-c&&r<=1+c&&n>=-c&&n<=1+c,O=(e,r,n)=>e>=0&&e<=1&&r>=0&&r<=1&&n>=0&&n<=1,Q=e=>{let r=C(e);if(r===null)return true;let[n,o,t]=f(r.l,r.a,r.b);return D(n,o,t)},E=.02,U=1e-4,F=(e,r)=>{let n=e[0]-r[0],o=e[1]-r[1],t=e[2]-r[2];return Math.sqrt(n*n+o*o+t*t)},_=(e,r,n,o,t,b)=>{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,l,p]=t(e,r,n);if(O(u,l,p))return {l:e,a:r,b:n,alpha:o};let m=b(a$1(u,0,1),a$1(l,0,1),a$1(p,0,1));if(F(m,[e,r,n])<=E)return {l:m[0],a:m[1],b:m[2],alpha:o};let d=Math.atan2(n,r),k=Math.sqrt(r*r+n*n),f=0,L=k,M=true,y=m;for(;L-f>U;){let i=(f+L)/2,N=i*Math.cos(d),x=i*Math.sin(d),[A,T,R]=t(e,N,x);if(M&&O(A,T,R)){f=i;continue}let I=b(a$1(A,0,1),a$1(T,0,1),a$1(R,0,1));y=I,F(I,[e,N,x])<=E?(f=i,M=false):L=i;}return {l:y[0],a:y[1],b:y[2],alpha:o}},V=e=>{let r=C(e);if(r===null)return null;let{l:n,a:o,b:t,alpha:b}=r;return _(n,o,t,b,f,a)},W=(e,r)=>{let n=C(e);if(n===null)return true;let[o,t,b]=r(n.l,n.a,n.b);return D(o,t,b)},Y=(e,r,n)=>{let o=C(e);if(o===null)return null;let{l:t,a:b,b:u,alpha:l}=o;return _(t,b,u,l,r,n)};var P=Math.PI/180,j=(e,r,n)=>{let o=n*P;return f(e,r*Math.cos(o),r*Math.sin(o))},z=(e$1,r,n,o)=>{let t=o*P;e(e$1,r,n*Math.cos(t),n*Math.sin(t));},er=(e,r,n)=>{let[o,t,b$1]=j(e,r,n);return [b(o),b(t),b(b$1)]},or=(e,r,n,o)=>{z(e,r,n,o),e[0]=b(e[0]),e[1]=b(e[1]),e[2]=b(e[2]);},tr=(e,r,n)=>{let[o,t,b$1]=j(e,r,n);return [[o,t,b$1],[b(o),b(t),b(b$1)]]},br=(e,r,n,o,t)=>{z(e,n,o,t),r[0]=b(e[0]),r[1]=b(e[1]),r[2]=b(e[2]);};export{Q as a,V as b,W as c,Y as d,j as e,z as f,er as g,or as h,tr as i,br as j};//# sourceMappingURL=chunk-AOK3BIZI.mjs.map | ||
| //# sourceMappingURL=chunk-AOK3BIZI.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","b","EPS","isLinearInGamut","r","g","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"],"mappings":"iLAMA,IAAMA,CAAAA,CACJ,uIAAA,CAEIC,CAAAA,CACJ,uHAAA,CAMIC,CAAAA,CAAeC,CAAAA,EAA+E,CAClG,GAAI,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,GAAU,IAAA,CAAM,CAC/C,IAAMC,CAAAA,CAAMD,CAAAA,CAEZ,GAAI,GAAA,GAAOC,CAAAA,EAAO,GAAA,GAAOA,CAAAA,EAAO,GAAA,GAAOA,CAAAA,EAAOA,CAAAA,CAAI,UAAA,GAAe,KAAA,EAAS,EAAE,MAAOA,CAAAA,CAAAA,EAAQ,EAAE,GAAA,GAAOA,CAAAA,CAAAA,CAAM,CACxG,IAAMC,CAAAA,CAAIF,CAAAA,CACV,GACE,OAAOE,CAAAA,CAAE,CAAA,EAAM,QAAA,EACf,OAAOA,CAAAA,CAAE,CAAA,EAAM,QAAA,EACf,OAAOA,CAAAA,CAAE,CAAA,EAAM,QAAA,EACf,OAAOA,CAAAA,CAAE,KAAA,EAAU,QAAA,CAEnB,OAAO,CAAE,CAAA,CAAGA,CAAAA,CAAE,CAAA,CAAG,CAAA,CAAGA,CAAAA,CAAE,EAAG,CAAA,CAAGA,CAAAA,CAAE,CAAA,CAAG,KAAA,CAAOA,CAAAA,CAAE,KAAM,CAEpD,CAEA,GAAI,GAAA,GAAOD,CAAAA,EAAO,GAAA,GAAOA,CAAAA,EAAO,GAAA,GAAOA,CAAAA,EAAOA,CAAAA,CAAI,UAAA,GAAe,KAAA,EAAS,EAAE,GAAA,GAAOA,CAAAA,CAAAA,EAAQ,EAAE,GAAA,GAAOA,CAAAA,CAAAA,CAAM,CACxG,IAAMC,CAAAA,CAAIF,CAAAA,CACV,GAAI,OAAOE,CAAAA,CAAE,CAAA,EAAM,UAAY,OAAOA,CAAAA,CAAE,CAAA,EAAM,QAAA,EAAY,OAAOA,CAAAA,CAAE,CAAA,EAAM,QAAA,CAAU,CACjF,IAAMC,CAAAA,CAAQD,CAAAA,CAAE,CAAA,CAAI,IAAA,CAAK,EAAA,CAAM,GAAA,CAC/B,OAAO,CAAE,CAAA,CAAGA,CAAAA,CAAE,CAAA,CAAG,CAAA,CAAGA,CAAAA,CAAE,CAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAG,CAAA,CAAGD,CAAAA,CAAE,CAAA,CAAI,IAAA,CAAK,IAAIC,CAAI,CAAA,CAAG,KAAA,CAAOD,CAAAA,CAAE,KAAM,CACpF,CACF,CAEA,GAAID,CAAAA,CAAI,UAAA,GAAe,KAAA,CAAO,CAC5B,IAAMC,CAAAA,CAAIF,CAAAA,CACV,GAAI,OAAOE,CAAAA,CAAE,CAAA,EAAM,QAAA,EAAY,OAAOA,CAAAA,CAAE,CAAA,EAAM,QAAA,EAAY,OAAOA,CAAAA,CAAE,CAAA,EAAM,QAAA,CAAU,OAAO,IAAA,CAC1F,GAAM,CAAE,CAAA,CAAAE,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,CAAA,CAAAC,CAAE,CAAA,CAAIC,CAAAA,CAASL,CAAC,CAAA,CACxB,CAACM,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAIC,GAAAA,CAAmBP,CAAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,CACzC,CAACM,CAAAA,CAAIC,GAAAA,CAAIC,CAAE,CAAA,CAAIC,CAAAA,CAAkBP,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CACjD,OAAO,CAAE,EAAGE,CAAAA,CAAI,CAAA,CAAGC,GAAAA,CAAI,CAAA,CAAGC,CAAAA,CAAI,KAAA,CAAO,OAAOZ,CAAAA,CAAE,KAAA,EAAU,QAAA,CAAWA,CAAAA,CAAE,KAAA,CAAQ,CAAE,CACjF,CACA,OAAO,IACT,CAEA,GAAI,OAAOF,CAAAA,EAAU,QAAA,CAAU,CAC7B,IAAIgB,CAAAA,CAAInB,CAAAA,CAAS,IAAA,CAAKG,CAAK,CAAA,CAC3B,GAAIgB,CAAAA,CAAG,CACL,IAAMC,CAAAA,CAAID,CAAAA,CAAE,CAAC,CAAA,CAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,GAAA,CAAM,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC3Cd,CAAAA,CAAIc,EAAE,CAAC,CAAA,CAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,IAAA,CAAQ,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC7CE,CAAAA,CAAOF,CAAAA,CAAE,CAAC,GAAG,WAAA,EAAY,EAAK,KAAA,CAE9Bb,CAAAA,CADO,MAAA,CAAOa,CAAAA,CAAE,CAAC,CAAC,CAAA,EAAKG,GAAAA,CAAYD,CAAI,CAAA,EAAK,CAAA,CAAA,CAC7B,IAAA,CAAK,EAAA,CAAM,GAAA,CAC1BE,CAAAA,CAAQJ,CAAAA,CAAE,CAAC,CAAA,GAAM,MAAA,CAAY,CAAA,CAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,EAAKA,CAAAA,CAAE,CAAC,CAAA,CAAI,GAAA,CAAM,CAAA,CAAA,CACpE,OAAO,CAAE,CAAA,CAAAC,CAAAA,CAAG,CAAA,CAAGf,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAG,CAAA,CAAGD,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAG,KAAA,CAAAiB,CAAM,CAClE,CAEA,GADAJ,CAAAA,CAAIlB,CAAAA,CAAS,IAAA,CAAKE,CAAK,CAAA,CACnBgB,CAAAA,CAAG,CACL,IAAMC,CAAAA,CAAID,CAAAA,CAAE,CAAC,CAAA,CAAI,OAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,GAAA,CAAM,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC3CK,CAAAA,CAAIL,CAAAA,CAAE,CAAC,CAAA,CAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,IAAA,CAAQ,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC7CM,CAAAA,CAAIN,CAAAA,CAAE,CAAC,CAAA,CAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAAI,IAAA,CAAQ,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAC7CI,CAAAA,CAAQJ,CAAAA,CAAE,CAAC,CAAA,GAAM,MAAA,CAAY,CAAA,CAAI,MAAA,CAAOA,CAAAA,CAAE,CAAC,CAAC,CAAA,EAAKA,CAAAA,CAAE,CAAC,CAAA,CAAI,GAAA,CAAM,CAAA,CAAA,CACpE,OAAO,CAAE,CAAA,CAAAC,CAAAA,CAAG,CAAA,CAAAI,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAF,CAAM,CAC1B,CACA,OAAO,IACT,CAEA,OAAO,IACT,CAAA,CAUMG,CAAAA,CAAM,IAAA,CAENC,CAAAA,CAAkB,CAACC,CAAAA,CAAWC,CAAAA,CAAWJ,CAAAA,GAC7CG,CAAAA,EAAK,CAACF,CAAAA,EAAOE,CAAAA,EAAK,CAAA,CAAIF,CAAAA,EAAOG,CAAAA,EAAK,CAACH,CAAAA,EAAOG,CAAAA,EAAK,CAAA,CAAIH,CAAAA,EAAOD,CAAAA,EAAK,CAACC,CAAAA,EAAOD,CAAAA,EAAK,CAAA,CAAIC,CAAAA,CAE5EI,EAAgB,CAACF,CAAAA,CAAWC,CAAAA,CAAWJ,CAAAA,GAC3CG,CAAAA,EAAK,CAAA,EAAKA,CAAAA,EAAK,CAAA,EAAKC,CAAAA,EAAK,CAAA,EAAKA,CAAAA,EAAK,CAAA,EAAKJ,CAAAA,EAAK,CAAA,EAAKA,CAAAA,EAAK,CAAA,CAO5CM,CAAAA,CAAe5B,CAAAA,EAA6B,CACvD,IAAM6B,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAC7B,GAAI6B,CAAAA,GAAQ,IAAA,CAAM,OAAO,KAAA,CACzB,GAAM,CAACJ,CAAAA,CAAGC,EAAGJ,CAAC,CAAA,CAAIQ,CAAAA,CAAcD,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CACnD,OAAOL,CAAAA,CAAgBC,CAAAA,CAAGC,CAAAA,CAAGJ,CAAC,CAChC,CAAA,CAIMS,CAAAA,CAAM,GAAA,CACNC,CAAAA,CAAgB,IAAA,CAGhBC,CAAAA,CAAW,CAACC,CAAAA,CAAyCC,CAAAA,GAAoD,CAC7G,IAAMC,CAAAA,CAAKF,CAAAA,CAAK,CAAC,CAAA,CAAIC,CAAAA,CAAK,CAAC,CAAA,CACrBE,CAAAA,CAAKH,CAAAA,CAAK,CAAC,CAAA,CAAIC,CAAAA,CAAK,CAAC,CAAA,CACrBG,CAAAA,CAAKJ,CAAAA,CAAK,CAAC,CAAA,CAAIC,CAAAA,CAAK,CAAC,CAAA,CAC3B,OAAO,KAAK,IAAA,CAAKC,CAAAA,CAAKA,CAAAA,CAAKC,CAAAA,CAAKA,CAAAA,CAAKC,CAAAA,CAAKA,CAAE,CAC9C,CAAA,CAcMC,CAAAA,CAAc,CAClBtB,CAAAA,CACAI,CAAAA,CACAC,CAAAA,CACAF,CAAAA,CACAoB,CAAAA,CACAC,IACe,CACf,GAAIxB,CAAAA,EAAK,CAAA,CAAG,OAAO,CAAE,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,KAAA,CAAAG,CAAM,CAAA,CAC7C,GAAIH,CAAAA,EAAK,CAAA,CAAG,OAAO,CAAE,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,KAAA,CAAAG,CAAM,CAAA,CAE7C,GAAM,CAACsB,CAAAA,CAAIC,EAAIC,CAAE,CAAA,CAAIJ,CAAAA,CAASvB,CAAAA,CAAGI,CAAAA,CAAGC,CAAC,CAAA,CACrC,GAAIK,CAAAA,CAAce,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAG,OAAO,CAAE,CAAA,CAAA3B,CAAAA,CAAG,CAAA,CAAAI,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAF,CAAM,CAAA,CAGvD,IAAMyB,CAAAA,CAAQJ,CAAAA,CAAWK,GAAAA,CAAMJ,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAA,CAAGI,IAAMH,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAA,CAAGG,GAAAA,CAAMF,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAC,CAAA,CAC1E,GAAIX,CAAAA,CAASY,CAAAA,CAAO,CAAC5B,CAAAA,CAAGI,CAAAA,CAAGC,CAAC,CAAC,CAAA,EAAKS,CAAAA,CAChC,OAAO,CAAE,CAAA,CAAGc,CAAAA,CAAM,CAAC,CAAA,CAAG,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAA,CAAG,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAA,CAAG,KAAA,CAAAzB,CAAM,CAAA,CAGxD,IAAMjB,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAMmB,CAAAA,CAAGD,CAAC,CAAA,CACtB0B,CAAAA,CAAI,IAAA,CAAK,IAAA,CAAK1B,CAAAA,CAAIA,CAAAA,CAAIC,EAAIA,CAAC,CAAA,CAC7B0B,CAAAA,CAAK,CAAA,CACLC,CAAAA,CAAKF,CAAAA,CACLG,CAAAA,CAAa,IAAA,CACbC,CAAAA,CAA8CN,CAAAA,CAElD,KAAOI,CAAAA,CAAKD,CAAAA,CAAKhB,CAAAA,EAAe,CAC9B,IAAMoB,GAAOJ,CAAAA,CAAKC,CAAAA,EAAM,CAAA,CAClBI,CAAAA,CAAKD,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAIjD,CAAI,CAAA,CACxBmD,CAAAA,CAAKF,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAIjD,CAAI,CAAA,CACxB,CAACK,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAI8B,CAAAA,CAASvB,CAAAA,CAAGoC,CAAAA,CAAIC,CAAE,CAAA,CAEvC,GAAIJ,CAAAA,EAAcvB,CAAAA,CAAcnB,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,CAAA,CAAG,CAC3CsC,CAAAA,CAAKI,CAAAA,CACL,QACF,CAEA,IAAMG,CAAAA,CAAYd,CAAAA,CAAWK,GAAAA,CAAMtC,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAA,CAAGsC,GAAAA,CAAMrC,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAA,CAAGqC,GAAAA,CAAMpC,CAAAA,CAAI,CAAA,CAAG,CAAC,CAAC,CAAA,CAC9EyC,CAAAA,CAAWI,CAAAA,CACDtB,CAAAA,CAASsB,CAAAA,CAAW,CAACtC,CAAAA,CAAGoC,CAAAA,CAAIC,CAAE,CAAC,GAEhCvB,CAAAA,EACPiB,CAAAA,CAAKI,CAAAA,CACLF,CAAAA,CAAa,KAAA,EAEbD,CAAAA,CAAKG,EAET,CAEA,OAAO,CAAE,CAAA,CAAGD,CAAAA,CAAS,CAAC,CAAA,CAAG,CAAA,CAAGA,CAAAA,CAAS,CAAC,CAAA,CAAG,CAAA,CAAGA,CAAAA,CAAS,CAAC,CAAA,CAAG,KAAA,CAAA/B,CAAM,CACjE,CAAA,CAOaoC,CAAAA,CAAkBxD,CAAAA,EAAuC,CACpE,IAAM6B,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAC7B,GAAI6B,CAAAA,GAAQ,IAAA,CAAM,OAAO,IAAA,CACzB,GAAM,CAAE,CAAA,CAAAZ,CAAAA,CAAG,CAAA,CAAAI,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAF,CAAM,EAAIS,CAAAA,CAC3B,OAAOU,CAAAA,CAAYtB,CAAAA,CAAGI,CAAAA,CAAGC,CAAAA,CAAGF,CAAAA,CAAOU,CAAAA,CAAef,CAAiB,CACrE,CAAA,CAEa0C,CAAAA,CAAgB,CAACzD,CAAAA,CAAiBwC,CAAAA,GAAuC,CACpF,IAAMX,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAE7B,GAAI6B,CAAAA,GAAQ,IAAA,CAAM,OAAO,KAAA,CACzB,GAAM,CAACJ,CAAAA,CAAGC,CAAAA,CAAG,CAAC,CAAA,CAAIc,CAAAA,CAASX,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAC,CAAA,CAC9C,OAAOL,CAAAA,CAAgBC,CAAAA,CAAGC,CAAAA,CAAG,CAAC,CAChC,CAAA,CASagC,CAAAA,CAAgB,CAC3B1D,EACAwC,CAAAA,CACAC,CAAAA,GACsB,CACtB,IAAMZ,CAAAA,CAAM9B,CAAAA,CAAYC,CAAK,CAAA,CAC7B,GAAI6B,CAAAA,GAAQ,IAAA,CAAM,OAAO,IAAA,CACzB,GAAM,CAAE,CAAA,CAAAZ,CAAAA,CAAG,CAAA,CAAAI,CAAAA,CAAG,CAAA,CAAAC,CAAAA,CAAG,KAAA,CAAAF,CAAM,CAAA,CAAIS,CAAAA,CAC3B,OAAOU,CAAAA,CAAYtB,CAAAA,CAAGI,CAAAA,CAAGC,CAAAA,CAAGF,CAAAA,CAAOoB,CAAAA,CAAUC,CAAU,CACzD,ECvNA,IAAMkB,CAAAA,CAAa,IAAA,CAAK,EAAA,CAAK,GAAA,CAWhBC,CAAAA,CAAgB,CAAC3C,CAAAA,CAAWf,CAAAA,CAAW2D,CAAAA,GAAwC,CAC1F,IAAM1D,CAAAA,CAAO0D,CAAAA,CAAIF,CAAAA,CACjB,OAAO7B,CAAAA,CAAcb,CAAAA,CAAGf,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAGD,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAC,CAChE,CAAA,CAGa2D,EAAoB,CAACC,GAAAA,CAA8B9C,CAAAA,CAAWf,CAAAA,CAAW2D,CAAAA,GAAoB,CACxG,IAAM1D,CAAAA,CAAO0D,CAAAA,CAAIF,CAAAA,CACjBK,CAAAA,CAAkBD,GAAAA,CAAK9C,CAAAA,CAAGf,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAA,CAAGD,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIC,CAAI,CAAC,EAClE,CAAA,CAOa8D,EAAAA,CAAqB,CAAChD,CAAAA,CAAWf,CAAAA,CAAW2D,CAAAA,GAAwC,CAC/F,GAAM,CAACpC,EAAGC,CAAAA,CAAGJ,GAAC,CAAA,CAAIsC,CAAAA,CAAc3C,CAAAA,CAAGf,CAAAA,CAAG2D,CAAC,CAAA,CACvC,OAAO,CAACK,CAAAA,CAAezC,CAAC,CAAA,CAAGyC,CAAAA,CAAexC,CAAC,CAAA,CAAGwC,CAAAA,CAAe5C,GAAC,CAAC,CACjE,CAAA,CAGa6C,EAAAA,CAAyB,CAACJ,CAAAA,CAA8B9C,CAAAA,CAAWf,CAAAA,CAAW2D,CAAAA,GAAoB,CAC7GC,CAAAA,CAAkBC,CAAAA,CAAK9C,CAAAA,CAAGf,CAAAA,CAAG2D,CAAC,CAAA,CAC9BE,CAAAA,CAAI,CAAC,CAAA,CAAIG,CAAAA,CAAeH,CAAAA,CAAI,CAAC,CAAE,CAAA,CAC/BA,CAAAA,CAAI,CAAC,CAAA,CAAIG,CAAAA,CAAeH,CAAAA,CAAI,CAAC,CAAE,CAAA,CAC/BA,CAAAA,CAAI,CAAC,CAAA,CAAIG,CAAAA,CAAeH,CAAAA,CAAI,CAAC,CAAE,EACjC,CAAA,CAYaK,EAAAA,CAAuB,CAClCnD,CAAAA,CACAf,CAAAA,CACA2D,CAAAA,GACyD,CACzD,GAAM,CAACrD,CAAAA,CAAIC,CAAAA,CAAIC,GAAE,CAAA,CAAIkD,CAAAA,CAAc3C,CAAAA,CAAGf,CAAAA,CAAG2D,CAAC,CAAA,CAC1C,OAAO,CACL,CAACrD,CAAAA,CAAIC,CAAAA,CAAIC,GAAE,CAAA,CACX,CAACwD,CAAAA,CAAe1D,CAAE,CAAA,CAAG0D,CAAAA,CAAezD,CAAE,CAAA,CAAGyD,CAAAA,CAAexD,GAAE,CAAC,CAC7D,CACF,CAAA,CAMa2D,EAAAA,CAA2B,CACtCC,EACAC,CAAAA,CACAtD,CAAAA,CACAf,CAAAA,CACA2D,CAAAA,GACS,CACTC,CAAAA,CAAkBQ,CAAAA,CAAQrD,CAAAA,CAAGf,CAAAA,CAAG2D,CAAC,CAAA,CACjCU,CAAAA,CAAQ,CAAC,CAAA,CAAIL,CAAAA,CAAeI,CAAAA,CAAO,CAAC,CAAE,CAAA,CACtCC,CAAAA,CAAQ,CAAC,CAAA,CAAIL,CAAAA,CAAeI,CAAAA,CAAO,CAAC,CAAE,CAAA,CACtCC,CAAAA,CAAQ,CAAC,CAAA,CAAIL,CAAAA,CAAeI,CAAAA,CAAO,CAAC,CAAE,EACxC","file":"chunk-AOK3BIZI.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 { oklabToLinear, oklabToLinearInto } from './colorModels/oklab.js';\nimport { srgbFromLinear } 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"]} |
| import {a,b}from'./chunk-FXCFKFXK.mjs';import {a as a$1}from'./chunk-Q3O3QQ4H.mjs';import {a as a$2,h as h$1,i,f as f$1,g,l,k}from'./chunk-IOXRZECH.mjs';var F=.4122214708,K=.5363325363,U=.0514459929,z=.2119034982,q=.6806995451,D=.1073969566,H=.0883024619,J=.2817188376,P=.6299787005,Q=.2104542553,V=.793617785,W=-0.0040720468,X=1.9779984951,Y=-2.428592205,Z=.4505937099,nn=.0259040371,on=.7827717662,rn=-0.808675766,R=.3963377774,I=.2158037573,S=-0.1055613458,f=-0.0638541728,O=-0.0894841775,h=-1.291485548,B=4.0767416613,x=-3.3077115904,A=.2309699287,C=-1.2684380041,w=2.6097574007,T=-0.3413193963,y=-0.0041960865,G=-0.7034186145,d=1.7076147009;var tn=(o,n,r)=>{let t=Math.cbrt(F*o+K*n+U*r),s=Math.cbrt(z*o+q*n+D*r),c=Math.cbrt(H*o+J*n+P*r);return [Q*t+V*s+W*c,X*t+Y*s+Z*c,nn*t+on*s+rn*c]},bn=({r:o,g:n,b:r,alpha:t})=>{let[s,c,e]=tn(a(o/255),a(n/255),a(r/255));return {l:s,a:c,b:e,alpha:t}},N=({l:o,a:n,b:r,alpha:t})=>{let[s,c,e]=sn(o,n,r);return {r:b(s)*255,g:b(c)*255,b:b(e)*255,alpha:t}},an=({l:o,a:n,b:r,alpha:t})=>{let s=o+.3963377774*n+.2158037573*r,c=o-.1055613458*n-.0638541728*r,e=o-.0894841775*n-1.291485548*r,_=s**3,l=c**3,a=e**3,$=4.0767416613*_-3.3077115904*l+.2309699287*a,j=-1.2684380041*_+2.6097574007*l-.3413193963*a,E=-0.0041960865*_-.7034186145*l+1.7076147009*a;return a$1({r:b(a$2($,0,1))*255,g:b(a$2(j,0,1))*255,b:b(a$2(E,0,1))*255,alpha:t})},Mn=(o,n,r,t)=>{let s=n+R*r+I*t,c=n+S*r+f*t,e=n+O*r+h*t,_=s**3,l=c**3,a=e**3;o[0]=B*_+x*l+A*a,o[1]=C*_+w*l+T*a,o[2]=y*_+G*l+d*a;},sn=(o,n,r)=>{let t=o+R*n+I*r,s=o+S*n+f*r,c=o+O*n+h*r,e=t**3,_=s**3,l=c**3;return [B*e+x*_+A*l,C*e+w*_+T*l,y*e+G*_+d*l]},un=o=>{if(!h$1(o)||o.colorSpace==="lab"||!i(o,["l","a","b"])||"r"in o||"x"in o||"c"in o||"h"in o)return null;let{l:n,a:r,b:t,alpha:s=1}=o;return !f$1(n)||!f$1(r)||!f$1(t)||!f$1(s)||g(n)>1?null:N({l:g(n),a:g(r),b:g(t),alpha:a$2(g(s),0,1)})},cn=new RegExp(`^oklab\\(\\s*(?<l>${k})(?<lp>%?)\\s+(?<a>${k})(?<ap>%?)\\s+(?<b>${k})(?<bp>%?)\\s*(?:/\\s*(?<al>${k})(?<alp>%?)\\s*)?\\)$`,"i"),mn=o=>{if(typeof o!="string")return null;let n=cn.exec(o.trim())?.groups;if(!n)return null;let r=n.lp?l(n.l)/100:l(n.l),t=n.ap?l(n.a)*.004:l(n.a),s=n.bp?l(n.b)*.004:l(n.b),c=n.al===void 0?1:l(n.al)/(n.alp?100:1);return N({l:r,a:t,b:s,alpha:a$2(c,0,1)})};export{tn as a,bn as b,N as c,an as d,Mn as e,sn as f,un as g,mn as h};//# sourceMappingURL=chunk-OS5JUSWI.mjs.map | ||
| //# sourceMappingURL=chunk-OS5JUSWI.mjs.map |
| {"version":3,"sources":["../src/colorModels/oklab.ts"],"names":["M1_LR","M1_LG","M1_LB","M1_MR","M1_MG","M1_MB","M1_SR","M1_SG","M1_SB","M2_L_L","M2_M_L","M2_S_L","M2_L_A","M2_M_A","M2_S_A","M2_L_B","M2_M_B","M2_S_B","M2I_A_L","M2I_B_L","M2I_A_M","M2I_B_M","M2I_A_S","M2I_B_S","M1I_L_R","M1I_M_R","M1I_S_R","M1I_L_G","M1I_M_G","M1I_S_G","M1I_L_B","M1I_M_B","M1I_S_B","linearSrgbToOklab","lr","lg","lb","lv","mv","sv","rgbToOklab","r","g","b","alpha","l","a","bv","srgbToLinear","oklabToRgbUnclamped","oklabToLinear","srgbFromLinear","oklabToRgb","l_","m_","s_","clampRgb","clamp","oklabToLinearInto","out","parseOklabObject","input","isObject","hasKeys","isAnyNumber","sanitize","OKLAB_RE","NUM_OR_NONE","parseOklabString","L","parseNum"],"mappings":"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","file":"chunk-OS5JUSWI.mjs","sourcesContent":["import { NUM_OR_NONE, clamp, hasKeys, isAnyNumber, isObject, parseNum, sanitize } from '../helpers.js';\nimport { srgbFromLinear, srgbToLinear } from '../transfer.js';\nimport type { OklabColor, RgbColor } from '../types.js';\nimport { clampRgb } from './rgb.js';\n\n// Björn Ottosson's OKLab matrix coefficients. Referenced by both the allocating\n// and zero-alloc (*Into) variants so the math lives in one place.\n// sRGB linear → LMS (cubed roots taken at M1 stage)\nconst M1_LR = 0.4122214708,\n M1_LG = 0.5363325363,\n M1_LB = 0.0514459929;\nconst M1_MR = 0.2119034982,\n M1_MG = 0.6806995451,\n M1_MB = 0.1073969566;\nconst M1_SR = 0.0883024619,\n M1_SG = 0.2817188376,\n M1_SB = 0.6299787005;\n// LMS' → OKLab\nconst M2_L_L = 0.2104542553,\n M2_M_L = 0.793617785,\n M2_S_L = -0.0040720468;\nconst M2_L_A = 1.9779984951,\n M2_M_A = -2.428592205,\n M2_S_A = 0.4505937099;\nconst M2_L_B = 0.0259040371,\n M2_M_B = 0.7827717662,\n M2_S_B = -0.808675766;\n// OKLab → LMS' (inverse of M2)\nconst M2I_A_L = 0.3963377774,\n M2I_B_L = 0.2158037573;\nconst M2I_A_M = -0.1055613458,\n M2I_B_M = -0.0638541728;\nconst M2I_A_S = -0.0894841775,\n M2I_B_S = -1.291485548;\n// LMS → linear sRGB (inverse of M1)\nconst M1I_L_R = 4.0767416613,\n M1I_M_R = -3.3077115904,\n M1I_S_R = 0.2309699287;\nconst M1I_L_G = -1.2684380041,\n M1I_M_G = 2.6097574007,\n M1I_S_G = -0.3413193963;\nconst M1I_L_B = -0.0041960865,\n M1I_M_B = -0.7034186145,\n M1I_S_B = 1.7076147009;\n\n/** Zero-allocation sibling of linearSrgbToOklab — writes [l, a, b] into `out`. */\nexport const linearSrgbToOklabInto = (out: Float64Array | number[], lr: number, lg: number, lb: number): void => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n out[0] = M2_L_L * lv + M2_M_L * mv + M2_S_L * sv;\n out[1] = M2_L_A * lv + M2_M_A * mv + M2_S_A * sv;\n out[2] = M2_L_B * lv + M2_M_B * mv + M2_S_B * sv;\n};\n\n/** Convert linear sRGB channels to OKLab (Björn Ottosson). No gamma, no clamping. */\nexport const linearSrgbToOklab = (lr: number, lg: number, lb: number): [number, number, number] => {\n const lv = Math.cbrt(M1_LR * lr + M1_LG * lg + M1_LB * lb);\n const mv = Math.cbrt(M1_MR * lr + M1_MG * lg + M1_MB * lb);\n const sv = Math.cbrt(M1_SR * lr + M1_SG * lg + M1_SB * lb);\n return [\n M2_L_L * lv + M2_M_L * mv + M2_S_L * sv,\n M2_L_A * lv + M2_M_A * mv + M2_S_A * sv,\n M2_L_B * lv + M2_M_B * mv + M2_S_B * sv,\n ];\n};\n\nexport const rgbToOklab = ({ r, g, b, alpha }: RgbColor): OklabColor => {\n const [l, a, bv] = linearSrgbToOklab(srgbToLinear(r / 255), srgbToLinear(g / 255), srgbToLinear(b / 255));\n return { l, a, b: bv, alpha };\n};\n\n/** Unclamped OKLab → gamma-encoded sRGB. Channels may exceed [0, 255] for out-of-sRGB-gamut colors. */\nexport const oklabToRgbUnclamped = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const [lr, lg, lb] = oklabToLinear(l, a, b);\n return {\n r: srgbFromLinear(lr) * 255,\n g: srgbFromLinear(lg) * 255,\n b: srgbFromLinear(lb) * 255,\n alpha,\n };\n};\n\nexport const oklabToRgb = ({ l, a, b, alpha }: OklabColor): RgbColor => {\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const lv = l_ ** 3;\n const mv = m_ ** 3;\n const sv = s_ ** 3;\n\n const r = 4.0767416613 * lv - 3.3077115904 * mv + 0.2309699287 * sv;\n const g = -1.2684380041 * lv + 2.6097574007 * mv - 0.3413193963 * sv;\n const bv = -0.0041960865 * lv - 0.7034186145 * mv + 1.7076147009 * sv;\n\n return clampRgb({\n r: srgbFromLinear(clamp(r, 0, 1)) * 255,\n g: srgbFromLinear(clamp(g, 0, 1)) * 255,\n b: srgbFromLinear(clamp(bv, 0, 1)) * 255,\n alpha,\n });\n};\n\n/** Zero-allocation sibling of oklabToLinear — writes [lr, lg, lb] into `out`. */\nexport const oklabToLinearInto = (out: Float64Array | number[], l: number, a: number, b: number): void => {\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n out[0] = M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv;\n out[1] = M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv;\n out[2] = M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv;\n};\n\n/** Unclamped linear sRGB channels from OKLab values. Channels may exceed [0, 1] for out-of-gamut colors. */\nexport const oklabToLinear = (l: number, a: number, b: number): [number, number, number] => {\n const l_ = l + M2I_A_L * a + M2I_B_L * b;\n const m_ = l + M2I_A_M * a + M2I_B_M * b;\n const s_ = l + M2I_A_S * a + M2I_B_S * b;\n const lv = l_ ** 3,\n mv = m_ ** 3,\n sv = s_ ** 3;\n return [\n M1I_L_R * lv + M1I_M_R * mv + M1I_S_R * sv,\n M1I_L_G * lv + M1I_M_G * mv + M1I_S_G * sv,\n M1I_L_B * lv + M1I_M_B * mv + M1I_S_B * sv,\n ];\n};\n\nexport const parseOklabObject = (input: unknown): RgbColor | null => {\n if (!isObject(input)) return null;\n // Objects with colorSpace: 'lab' are CIE Lab, not OKLab — let parseLabObject handle them.\n if ((input as { colorSpace?: unknown }).colorSpace === 'lab') return null;\n if (!hasKeys(input, ['l', 'a', 'b'])) return null;\n if ('r' in input || 'x' in input || 'c' in input || 'h' in input) return null;\n const { l, a, b, alpha = 1 } = input as { l: unknown; a: unknown; b: unknown; alpha?: unknown };\n if (!isAnyNumber(l) || !isAnyNumber(a) || !isAnyNumber(b) || !isAnyNumber(alpha)) return null;\n if (sanitize(l) > 1) return null; // OKLab L is always [0, 1]; reject CIE Lab values passed without colorSpace branding\n return oklabToRgbUnclamped({\n l: sanitize(l),\n a: sanitize(a),\n b: sanitize(b),\n alpha: clamp(sanitize(alpha), 0, 1),\n });\n};\n\nconst OKLAB_RE = new RegExp(\n `^oklab\\\\(\\\\s*(?<l>${NUM_OR_NONE})(?<lp>%?)\\\\s+(?<a>${NUM_OR_NONE})(?<ap>%?)\\\\s+(?<b>${NUM_OR_NONE})(?<bp>%?)` +\n `\\\\s*(?:/\\\\s*(?<al>${NUM_OR_NONE})(?<alp>%?)\\\\s*)?\\\\)$`,\n 'i'\n);\n\nexport const parseOklabString = (input: unknown): RgbColor | null => {\n if (typeof input !== 'string') return null;\n const g = OKLAB_RE.exec(input.trim())?.groups;\n if (!g) return null;\n const L = g.lp ? parseNum(g.l!) / 100 : parseNum(g.l!); // 100% = 1\n const a = g.ap ? parseNum(g.a!) * 0.004 : parseNum(g.a!); // 100% = 0.4\n const b = g.bp ? parseNum(g.b!) * 0.004 : parseNum(g.b!);\n const alpha = g.al === undefined ? 1 : parseNum(g.al) / (g.alp ? 100 : 1);\n return oklabToRgbUnclamped({ l: L, a, b, alpha: clamp(alpha, 0, 1) });\n};\n"]} |
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.
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.
617768
0.36%783
0.13%