mirror of https://github.com/mue/mue.git
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
import rgbToHsv from './rgbToHsv';
|
|
import { setRGBA } from './setRgba';
|
|
|
|
const hexRegexp = /(^#{0,1}[0-9A-F]{6}$)|(^#{0,1}[0-9A-F]{3}$)|(^#{0,1}[0-9A-F]{8}$)/i;
|
|
const regexp = /([0-9A-F])([0-9A-F])([0-9A-F])/i;
|
|
|
|
/**
|
|
* It takes a hex color code and returns an object with the color's RGB and HSV values
|
|
* @param value - The hex value to convert to RGB.
|
|
* @returns An object with the properties red, green, blue, alpha, hue, saturation, and value.
|
|
*/
|
|
export default function hexToRgb(value) {
|
|
const valid = hexRegexp.test(value);
|
|
|
|
if (valid) {
|
|
if (value[0] === '#') {
|
|
value = value.slice(1, value.length);
|
|
}
|
|
|
|
if (value.length === 3) {
|
|
value = value.replace(regexp, '$1$1$2$2$3$3');
|
|
}
|
|
|
|
const red = parseInt(value.substr(0, 2), 16);
|
|
const green = parseInt(value.substr(2, 2), 16);
|
|
const blue = parseInt(value.substr(4, 2), 16);
|
|
const alpha = parseInt(value.substr(6, 2), 16) / 255;
|
|
|
|
const color = setRGBA(red, green, blue, alpha);
|
|
const hsv = rgbToHsv({ ...color });
|
|
|
|
return {
|
|
...color,
|
|
...hsv,
|
|
};
|
|
}
|
|
|
|
return false;
|
|
}
|