Culori Versions Save

A comprehensive color library for JavaScript.

v4.0.1

3 months ago

Bug fixes

Fixes a reference initp/definition.js that caused an error when using the tree-shaked version of the library. (#223)

v4.0.0

3 months ago

Breaking changes

This release includes changes to how color strings are parsed, converted, and serialized, for better alignment to CSS specs:

  • Clamp alpha to the [0, 1] interval at parse-time.
  • Clamp L in lab() / lch() to [0, 100], in oklab() / oklch() to [0, 1] at parse-time.
  • Correct numeric ranges in hsl() and hwb() syntaxes from [0, 1] to [0, 100].
  • Serialize missing components as 0 in legacy syntaxes and as none in modern syntaxes.
  • Use 0 for missing components in all color space conversions and gamut mapping functions.

New features

Fixes

  • Make averageAngle() always return in the [0, 360] interval;
  • Fix CIELUV (luv) conversion for l = 0;
  • Allow CommonJS bare import const culori = require('culori') (in addition to the previous culori/require endpoint).

v3.3.0

5 months ago

New features

  • Adds a third parameter to clampChroma() to change the destination RGB gamut (#212, #213)
  • Adds the ability to bypass the JND part of the CSS Color Level 4 gamut mapping algorithm by passing null as the delta color difference function (#212, #213)
  • Adds the easingSmoothstepInverse() function (re: #207)

Bug fixes

v3.2.0

9 months ago

New features

Adds helper functions to interpolate values bilinearly (blerp()) and trilinearly (trilerp()). These are the extensions of linear interpolation (lerp()) to two and three dimensions, respectively. (Re: #207)

v3.1.3

11 months ago

Bug fixes

Replace non-ASCII identifiers with ASCII equivalents for better compatibility with build tools. (#205, thanks @VojtechVidra!)

v3.1.2

11 months ago

Bug fixes

Make Culori work better with various bundlers by explicitly listing side-effect producing source files in package.json (See #195).

v3.1.1

11 months ago

Bug fixes

Fixes an error in the parser that caused it to choke on malformed colors such as oklch(70% 0..1 156) (#204, thanks for reporting @raidenmiro)

v3.1.0

1 year ago

New features

This release introduces new gamut-related functions:

  • inGamut(mode) returns a function with which to check that a color is within the gamut of the mode color space (#161); similar to displayable(), but for any RGB-based color space.
  • clampGamut(mode) returns a function with which to clip a color to the gamut of the mode color space; similar to clampRgb() but for any RGB-based color space.
  • toGamut(mode, ...) returns a function to gamut-map a color to the mode color space (#168); similar to clampChroma but for any RGB-based color space.

Bug fixes

Fixes mapper() function when mode = null (See #194, thanks @bijela-gora!)

v3.0.1

1 year ago

Bug fixes

  • Fixed a typo that allowed <hue> components in the color() syntax
  • Included oklab and oklch as exports in the culori/css bundle.

New features

  • Added unlerp() as the reverse of lerp()

v3.0.0

1 year ago

Breaking changes

This new release includes revamped color parsing to align with the latest css-color-4 spec. Regular expression matching has been replaced with a parser that follows the css-syntax spec more closely.

The new parser is more flexible with some aspects and stricter with others:

  • Trickier whitespace formulas around numbers, such as rgb(1-.2.3), are now properly handled (#187)
  • All non-legacy syntaxes allow mixing <number>, <percentage> and 'none' component values
  • The color() syntax no longer supports omitted component values that default to 0; it now requires exactly three component values. (#186)

Interpretation of component values has been aligned to the spec:

  • in non-legacy syntaxes, percentages are mapped to a reference range for that component. For example, the range of lch.c (Chroma in the CIELCh color space) is [0, 150], with 100% corresponding to 150.

Serialization has also been aligned to the spec:

  • lab and lch serialize the L component as <number>, not <percentage>
  • oklab‌, oklch and lrgb are serialized to oklab(), oklch(), and color(srgb-linear) respectively.

Please consult the migration guide for assistance in upgrading from 2.x to 3.0.

API changes

  • parseRgb and parseHsl now perform parsing of the modern syntax for rgb() and hsl() respectively;
  • parseRgbLegacy and parseHslLegacy have been added to parse the legacy syntaxes for rgb() / rgba() / hsl() / hsla()
  • parseOklab and parseOklch have been added to parse oklab() and oklch().