chroma-js
Version:
JavaScript library for color conversions
33 lines (30 loc) • 736 B
JavaScript
import { unpack } from '../../utils/index.js';
const { min, max } = Math;
/*
* supported arguments:
* - rgb2hsv(r,g,b)
* - rgb2hsv([r,g,b])
* - rgb2hsv({r,g,b})
*/
const rgb2hsl = (...args) => {
args = unpack(args, 'rgb');
let [r, g, b] = args;
const min_ = min(r, g, b);
const max_ = max(r, g, b);
const delta = max_ - min_;
let h, s, v;
v = max_ / 255.0;
if (max_ === 0) {
h = Number.NaN;
s = 0;
} else {
s = delta / max_;
if (r === max_) h = (g - b) / delta;
if (g === max_) h = 2 + (b - r) / delta;
if (b === max_) h = 4 + (r - g) / delta;
h *= 60;
if (h < 0) h += 360;
}
return [h, s, v];
};
export default rgb2hsl;