react-jazzicon
Version:
React component for danfinlay/jazzicon
91 lines • 2.61 kB
JavaScript
;
// from: https://github.com/MetaMask/jazzicon/blob/master/index.js
Object.defineProperty(exports, "__esModule", { value: true });
exports.HSLToHex = exports.hexToHSL = exports.colorRotate = void 0;
var colorRotate = function (hex, degrees) {
var hsl = (0, exports.hexToHSL)(hex);
var hue = hsl.h;
hue = (hue + degrees) % 360;
hue = hue < 0 ? 360 + hue : hue;
hsl.h = hue;
return (0, exports.HSLToHex)(hsl);
};
exports.colorRotate = colorRotate;
var hexToHSL = function (hex) {
// Convert hex to RGB first
var rStr = "0x" + hex[1] + hex[2];
var gStr = "0x" + hex[3] + hex[4];
var bStr = "0x" + hex[5] + hex[6];
// Then to HSL
var r = parseInt(rStr) / 255;
var g = parseInt(gStr) / 255;
var b = parseInt(bStr) / 255;
var cmin = Math.min(r, g, b), cmax = Math.max(r, g, b), delta = cmax - cmin, 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: h, s: s, l: l };
};
exports.hexToHSL = hexToHSL;
var HSLToHex = function (hsl) {
var h = hsl.h, s = hsl.s, l = hsl.l;
s /= 100;
l /= 100;
var c = (1 - Math.abs(2 * l - 1)) * s, x = c * (1 - Math.abs(((h / 60) % 2) - 1)), m = l - c / 2, r = 0, g = 0, 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;
}
// Having obtained RGB, convert channels to hex
var rStr = Math.round((r + m) * 255).toString(16);
var gStr = Math.round((g + m) * 255).toString(16);
var bStr = Math.round((b + m) * 255).toString(16);
// Prepend 0s, if necessary
if (rStr.length == 1)
rStr = "0" + rStr;
if (gStr.length == 1)
gStr = "0" + gStr;
if (bStr.length == 1)
bStr = "0" + bStr;
return "#" + rStr + gStr + bStr;
};
exports.HSLToHex = HSLToHex;
//# sourceMappingURL=colorUtils.js.map