@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
23 lines • 4.99 kB
JavaScript
export function tuiRgbaToHex(color) {
if (!tuiIsValidRgba(color)) {
throw new Error('Invalid RGBa');
}
const rgb = /^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i.exec(color.replaceAll(/\s/g, '')) ??
null;
let alpha = ((rgb?.[4] ?? '')).trim();
let hex = rgb
? ((parseInt(rgb?.[1] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +
((parseInt(rgb?.[2] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +
((parseInt(rgb?.[3] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1)
: color;
alpha = alpha !== '' ? alpha : 0o1;
alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);
hex += alpha;
return `#${hex.toUpperCase()}`;
}
export function tuiIsValidRgba(rgba) {
const range = String.raw `(\d|[1-9]\d|1\d{2}|2[0-4]\d|2[0-5]{2})`;
const alpha = String.raw `([01]|0?\.\d+)`;
return new RegExp(`^(?:rgb\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*\\)|rgba\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*,\\s*${alpha}\\s*\\))$`).test(rgba);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmdiYS10by1oZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvY29sb3IvcmdiYS10by1oZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNuQztJQUVELE1BQU0sR0FBRyxHQUNMLHlDQUF5QyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUM7SUFFVCxJQUFJLEtBQUssR0FBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBa0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXhFLElBQUksR0FBRyxHQUFHLEdBQUc7UUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUVaLEtBQUssR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNuQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsR0FBRyxJQUFJLEtBQUssQ0FBQztJQUViLE9BQU8sSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUEsd0NBQXdDLENBQUM7SUFDakUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQSxnQkFBZ0IsQ0FBQztJQUV6QyxPQUFPLElBQUksTUFBTSxDQUNiLGlCQUFpQixLQUFLLFlBQVksS0FBSyxZQUFZLEtBQUssc0JBQXNCLEtBQUssWUFBWSxLQUFLLFlBQVksS0FBSyxZQUFZLEtBQUssV0FBVyxDQUNwSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHR1aVJnYmFUb0hleChjb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXR1aUlzVmFsaWRSZ2JhKGNvbG9yKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUkdCYScpO1xuICAgIH1cblxuICAgIGNvbnN0IHJnYiA9XG4gICAgICAgIC9ecmdiYT9cXCgoXFxkKyksKFxcZCspLChcXGQrKSw/KFteLFxccyldKyk/L2kuZXhlYyhjb2xvci5yZXBsYWNlQWxsKC9cXHMvZywgJycpKSA/P1xuICAgICAgICBudWxsO1xuXG4gICAgbGV0IGFscGhhOiBudW1iZXIgfCBzdHJpbmcgPSAoKHJnYj8uWzRdID8/ICcnKSBzYXRpc2ZpZXMgc3RyaW5nKS50cmltKCk7XG5cbiAgICBsZXQgaGV4ID0gcmdiXG4gICAgICAgID8gKChwYXJzZUludChyZ2I/LlsxXSA/PyAnJywgMTApIHx8IDApIHwgKDEgPDwgOCkpLnRvU3RyaW5nKDE2KS5zbGljZSgxKSArXG4gICAgICAgICAgKChwYXJzZUludChyZ2I/LlsyXSA/PyAnJywgMTApIHx8IDApIHwgKDEgPDwgOCkpLnRvU3RyaW5nKDE2KS5zbGljZSgxKSArXG4gICAgICAgICAgKChwYXJzZUludChyZ2I/LlszXSA/PyAnJywgMTApIHx8IDApIHwgKDEgPDwgOCkpLnRvU3RyaW5nKDE2KS5zbGljZSgxKVxuICAgICAgICA6IGNvbG9yO1xuXG4gICAgYWxwaGEgPSBhbHBoYSAhPT0gJycgPyBhbHBoYSA6IDBvMTtcbiAgICBhbHBoYSA9ICgoTnVtYmVyKGFscGhhKSAqIDI1NSkgfCAoMSA8PCA4KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpO1xuICAgIGhleCArPSBhbHBoYTtcblxuICAgIHJldHVybiBgIyR7aGV4LnRvVXBwZXJDYXNlKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlzVmFsaWRSZ2JhKHJnYmE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJhbmdlID0gU3RyaW5nLnJhd2AoXFxkfFsxLTldXFxkfDFcXGR7Mn18MlswLTRdXFxkfDJbMC01XXsyfSlgO1xuICAgIGNvbnN0IGFscGhhID0gU3RyaW5nLnJhd2AoWzAxXXwwP1xcLlxcZCspYDtcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgICBgXig/OnJnYlxcXFwoXFxcXHMqJHtyYW5nZX1cXFxccyosXFxcXHMqJHtyYW5nZX1cXFxccyosXFxcXHMqJHtyYW5nZX1cXFxccypcXFxcKXxyZ2JhXFxcXChcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke2FscGhhfVxcXFxzKlxcXFwpKSRgLFxuICAgICkudGVzdChyZ2JhKTtcbn1cbiJdfQ==