@gravity-ui/uikit
Version:
Gravity UI base styling and components
39 lines (38 loc) • 1.39 kB
JavaScript
import { hexToHsva, hsvaToHex, hsvaToHexa, hsvaToRgbString, hsvaToRgba, rgbStringToHsva, rgbaStringToHsva, } from '@uiw/react-color';
import { Modes } from "./types.js";
export const convertSelectedModeColorToHsva = (value, mode, alpha) => {
switch (mode) {
case Modes.Hex: {
// If alpha is disabled, strip alpha channel from hex value
if (!alpha && value.length === 9) {
value = value.substring(0, 7); // Keep only #RRGGBB
}
const hsva = hexToHsva(value);
// If alpha is disabled, ensure alpha is set to 1
if (!alpha) {
hsva.a = 1;
}
return hsva;
}
case Modes.Rgb: {
return alpha ? rgbaStringToHsva(value) : rgbStringToHsva(value);
}
}
};
export function formatRgbaString(hsvaResult) {
const { r, g, b, a } = hsvaResult;
const roundedA = Math.round(a * 100) / 100;
return `rgba(${r},${g},${b},${roundedA})`;
}
export const getTextValueByMode = (hsva, mode, alpha) => {
switch (mode) {
case Modes.Rgb: {
return alpha ? formatRgbaString(hsvaToRgba(hsva)) : hsvaToRgbString(hsva);
}
case Modes.Hex: {
const hexValue = alpha ? hsvaToHexa(hsva) : hsvaToHex(hsva);
return hexValue;
}
}
};
//# sourceMappingURL=utils.js.map