Releases: Evercoder/culori
Releases · Evercoder/culori
v0.20.1
v0.20.0
New features
culori.parse()
now accepts thecolor()
notation; this makes Culori understand things likecolor(display-p3 0.5 0.1 0.2 / 0.75)
, as well as any string it produces viaculori.formatCss()
.culori.formatCss()
produces a CSS-compatible string representation of the color, where color spaces are generally serialized ascolor(--mode)
, unless they're predefined (in which case we use their appropriate CSS identifier, e.g.color(display-p3)
), or they have their own functional notation (in which case we use that, e.g.lab()
).
v0.19.1
Bug fixes:
jab
/jch
color spaces: adjust the PQ transfer function to produce a value of0
instead ofNaN
when invoked with a negative value.- improvements to
clampChroma()
: use the appropriate stop condition for the bisection search based on the range of the Chroma for a particular color space; whenchroma: 0
is not displayable return the RGB clamping of the achromatic version, which improves the function's perceptual continuity.
v0.19.0
⚠️ Breaking changes
culori.clampChroma()
now accepts a second argument mode
to control on which color space the chroma-finding algorithm operates (re: #129). This is a potentially breaking change if you were using culori.clampChroma
as a callback to array methods:
['red', 'green'].map(culori.clampChroma);
The function's freshly introduced second parameter (mode
) vs. the second argument to array method callbacks (index
) means this usage will break in culori@0.19.0
. Update it to:
['red', 'green'].map(color => culori.clampChroma(color));
New features
culori.differenceHyab()
— A hybrid Euclidean-city-block-distance formula shown to work better for large color differences than CIEDE2000, while still holding up well for smaller color differences. (#126)culori.formatHsl()
— Returns thehsl(…)
/hsla(…)
string for a color, with values rounded to a precision of two digits. (#124)
Bug fixes
culori.clampChroma()
always returns a displayable color, rather than a color in the near vicinity of a displayable color (#129);- Return
undefined
onculori.parse(undefined)
rather than throwing an error; - Use updated matrices for Oklab;
- Fix transfer functions for negative values in RGB color spaces.
Miscellaneous
- (docs) Clarified that the sRGB gamut spans a Lightness of approximatively
[0, 0.999]
inoklab
/oklch
. (The valuel: 1
is not displayable inrgb
.) - (repo) renamed the default branch to
main
v0.18.2
v0.18.1
v0.18.0
New features:
- Adds Björn Ottosson's Oklab color space in Cartesian (
oklab
) and cylindrical (oklch
) forms.
Bug fixes:
- Sets the correct mode for D65 Lab / Lch direct conversion pairs.
v0.17.0
v0.16.0
New features:
- Added CIELAB with D65 standard illuminant, in Cartesian (
lab65
) and cylindrical (lch65
) forms; - Added
interpolatorSplineMonotone2()
, a monotone interpolating spline with more sophisticated boundary conditions;
Breaking changes:
- Switch the DIN99o color spaces (
dlab
anddlch
) to uselab65
(D65 illuminant) rather thanlab
(D50 illuminant), as designed