@kcuf/mere-color
Version:
Mere color utils for generating, manipulation, a11y purposes.
44 lines (43 loc) • 930 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = rgbToHsl;
function rgbToHsl(rgb) {
var red = rgb.r / 255;
var green = rgb.g / 255;
var blue = rgb.b / 255;
var max = Math.max(red, green, blue);
var min = Math.min(red, green, blue);
var lightness = (max + min) / 2;
if (max === min) {
// achromatic
return {
h: 0,
s: 0,
l: lightness * 100,
a: rgb.a
};
}
var hue;
var delta = max - min;
var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);
switch (max) {
case red:
hue = (green - blue) / delta + (green < blue ? 6 : 0);
break;
case green:
hue = (blue - red) / delta + 2;
break;
default:
// blue case
hue = (red - green) / delta + 4;
break;
}
return {
h: hue * 60,
s: saturation * 100,
l: lightness * 100,
a: rgb.a
};
}