wix-style-react
Version:
33 lines (25 loc) • 675 B
JavaScript
import hex_to_rgba from './hex_to_rgba';
export default function hex_to_hsl(H) {
let { r, g, b } = hex_to_rgba(H);
// Then to HSL
r /= 255;
g /= 255;
b /= 255;
const cmin = Math.min(r, g, b),
cmax = Math.max(r, g, b),
delta = cmax - cmin;
let h = 0,
s = 0,
l = 0;
if (delta === 0) h = 0;
else if (cmax === r) h = ((g - b) / delta) % 6;
else if (cmax === g) h = (b - r) / delta + 2;
else h = (r - g) / delta + 4;
h = Math.round(h * 60);
if (h < 0) h += 360;
l = (cmax + cmin) / 2;
s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l + 1));
s = +(s * 100).toFixed(1);
l = +(l * 100).toFixed(1);
return [h, s * -1, l];
}