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

@colordx/core

Package Overview
Dependencies
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@colordx/core - npm Package Compare versions

Comparing version
5.3.0
to
5.3.1
+2
dist/chunk-2HOOMNKQ.mjs
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,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
{
"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":"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","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"]}