colorizr
Version:
Manipulate colors like a boss
30 lines (25 loc) • 786 B
text/typescript
import formatHex from '~/format-hex';
import { addAlpha, extractAlphaFromHex } from '~/modules/alpha';
import { MESSAGES } from '~/modules/constants';
import { invariant } from '~/modules/invariant';
import { isHex } from '~/modules/validators';
import { RGB } from '~/types';
/**
* Convert HEX to RGB.
*
* @param input - The hex color string.
* @returns The RGB color object.
*/
export default function hex2rgb(input: string): RGB {
invariant(isHex(input), MESSAGES.inputHex);
const hex = formatHex(input).slice(1);
const alpha = extractAlphaFromHex(input);
return addAlpha(
{
r: parseInt(hex.charAt(0) + hex.charAt(1), 16),
g: parseInt(hex.charAt(2) + hex.charAt(3), 16),
b: parseInt(hex.charAt(4) + hex.charAt(5), 16),
},
alpha,
);
}