@evg-b/evg-ui
Version:
EVG-UI library inspired by Material Design.
61 lines (54 loc) • 1.35 kB
JavaScript
function HSLAtoRGBAraw (hsla) {
var sep = hsla.includes(",") ? "," : " ";
hsla = hsla.substr(5).split(")")[0].split(sep);
var h = hsla[0];
var s = hsla[1].substr(0, hsla[1].length - 1) / 100;
var l = hsla[2].substr(0, hsla[2].length - 1) / 100;
var a = hsla[3].includes('%') ? hsla[3].substr(0, hsla[3].length - 1) / 100 : hsla[3];
if (h.includes("deg")) {
h = h.substr(0, h.length - 3);
} else if (h.includes("rad")) {
h = Math.round(h.substr(0, h.length - 3) / (2 * Math.PI) * 360);
} else if (h.includes("turn")) {
h = Math.round(h.substr(0, h.length - 4) * 360);
}
if (h >= 360) {
h %= 360;
}
var c = (1 - Math.abs(2 * l - 1)) * s;
var x = c * (1 - Math.abs(h / 60 % 2 - 1));
var m = l - c / 2;
var r = 0;
var g = 0;
var b = 0;
if (0 <= h && h < 60) {
r = c;
g = x;
b = 0;
} else if (60 <= h && h < 120) {
r = x;
g = c;
b = 0;
} else if (120 <= h && h < 180) {
r = 0;
g = c;
b = x;
} else if (180 <= h && h < 240) {
r = 0;
g = x;
b = c;
} else if (240 <= h && h < 300) {
r = x;
g = 0;
b = c;
} else if (300 <= h && h < 360) {
r = c;
g = 0;
b = x;
}
r = Math.round((r + m) * 255);
g = Math.round((g + m) * 255);
b = Math.round((b + m) * 255);
return [r, g, b, +a];
}
export default HSLAtoRGBAraw;