Skip to content

Releases: Evercoder/culori

v4.0.1

26 Jan 19:31
Compare
Choose a tag to compare

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

19 Jan 17:10
Compare
Choose a tag to compare

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

20 Nov 19:53
Compare
Choose a tag to compare

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

23 Jul 12:15
Compare
Choose a tag to compare

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

10 Jun 09:56
Compare
Choose a tag to compare

Bug fixes

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

v3.1.2

02 Jun 19:17
Compare
Choose a tag to compare

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

01 Jun 20:56
Compare
Choose a tag to compare

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

26 Mar 16:49
Compare
Choose a tag to compare

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

25 Feb 09:51
Compare
Choose a tag to compare

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

23 Feb 15:30
Compare
Choose a tag to compare

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().