sparkl-ui
Version:
Modern and minimalist React UI library.
76 lines (60 loc) • 2.45 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
var hexToRgb = function hexToRgb(color) {
var fullReg = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
var full = color.replace(fullReg, function (_, r, g, b) {
return "".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b);
});
var values = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(full);
if (!values) {
throw new Error("Geist UI: Unsupported ".concat(color, " color."));
}
return [Number.parseInt(values[1], 16), Number.parseInt(values[2], 16), Number.parseInt(values[3], 16)];
};
export var colorToRgbValues = function colorToRgbValues(color) {
if (color.charAt(0) === '#') return hexToRgb(color);
var safeColor = color.replace(/ /g, '');
var colorType = color.substr(0, 4);
var regArray = safeColor.match(/\((.+)\)/);
if (!colorType.startsWith('rgb') || !regArray) {
console.log(color);
throw new Error("Geist UI: Only support [\"RGB\", \"RGBA\", \"HEX\"] color.");
}
return regArray[1].split(',').map(function (str) {
return Number.parseFloat(str);
});
}; // @ts-ignore
var HSLToRGB = function HSLToRGB(h, s, l) {
s /= 100;
l /= 100; // @ts-ignore
var k = function k(n) {
return (n + h / 30) % 12;
};
var a = s * Math.min(l, 1 - l); // @ts-ignore
var f = function f(n) {
return l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
};
return [255 * f(0), 255 * f(8), 255 * f(4)];
};
var HSLStringToArray = function HSLStringToArray(hslString) {
var hslArray = hslString.replace(/hsl\(|\)/g, '').split(',').map(function (str) {
return Number.parseFloat(str);
});
return hslArray;
};
export var addColorAlpha = function addColorAlpha(color, alpha) {
if (!/^#|rgb|RGB/.test(color)) {
var _HSLStringToArray = HSLStringToArray(color),
_HSLStringToArray2 = _slicedToArray(_HSLStringToArray, 3),
h = _HSLStringToArray2[0],
s = _HSLStringToArray2[1],
l = _HSLStringToArray2[2];
color = "rgba(".concat(HSLToRGB(h, s, l).join(','), ",").concat(alpha, ")");
}
var _colorToRgbValues = colorToRgbValues(color),
_colorToRgbValues2 = _slicedToArray(_colorToRgbValues, 3),
r = _colorToRgbValues2[0],
g = _colorToRgbValues2[1],
b = _colorToRgbValues2[2];
var safeAlpha = alpha > 1 ? 1 : alpha < 0 ? 0 : alpha;
return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(safeAlpha, ")");
};