UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

29 lines 5.14 kB
const getChunksFromString = (hex, chunkSize) => hex.match(new RegExp(`.{${chunkSize}}`, 'g')); const convertHexUnitTo256 = (hexStr) => parseInt(hexStr.repeat(2 / hexStr.length), 16); const getAlphaFloat = (a, alpha) => { if (a !== undefined) { return Number((a / 255).toFixed(2)); } if (typeof alpha !== 'number' || alpha < 0 || alpha > 1) { return 1; } return alpha; }; export function tuiHexToRGBA(hex, alpha) { const [r, g, b, a] = tuiParseHex(hex, alpha); return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`; } export function tuiIsValidHex(hex) { return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex); } export function tuiParseHex(hex, alpha) { if (!tuiIsValidHex(hex)) { throw new Error('Invalid HEX'); } const chunkSize = Math.floor((hex.length - 1) / 3); const hexArr = getChunksFromString(hex.slice(1), chunkSize); const [r = NaN, g = NaN, b = NaN, a] = hexArr?.map(convertHexUnitTo256) ?? []; const floatAlpha = getAlphaFloat(a, alpha); return [r, g, b, floatAlpha]; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGV4LXRvLXJnYmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvY29sb3IvaGV4LXRvLXJnYmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQVcsRUFBRSxTQUFpQixFQUEyQixFQUFFLENBQ3BGLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxTQUFTLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRWxELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFjLEVBQVUsRUFBRSxDQUNuRCxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRW5ELE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBVSxFQUFFLEtBQWMsRUFBVSxFQUFFO0lBQ3pELElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtRQUNqQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2QztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNyRCxPQUFPLENBQUMsQ0FBQztLQUNaO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXLEVBQUUsS0FBYztJQUNwRCxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM1RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sNEJBQTRCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUN2QixHQUFXLEVBQ1gsS0FBYztJQUVkLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNsQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUQsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUUzQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGdldENodW5rc0Zyb21TdHJpbmcgPSAoaGV4OiBzdHJpbmcsIGNodW5rU2l6ZTogbnVtYmVyKTogUmVnRXhwTWF0Y2hBcnJheSB8IG51bGwgPT5cbiAgICBoZXgubWF0Y2gobmV3IFJlZ0V4cChgLnske2NodW5rU2l6ZX19YCwgJ2cnKSk7XG5cbmNvbnN0IGNvbnZlcnRIZXhVbml0VG8yNTYgPSAoaGV4U3RyOiBzdHJpbmcpOiBudW1iZXIgPT5cbiAgICBwYXJzZUludChoZXhTdHIucmVwZWF0KDIgLyBoZXhTdHIubGVuZ3RoKSwgMTYpO1xuXG5jb25zdCBnZXRBbHBoYUZsb2F0ID0gKGE/OiBudW1iZXIsIGFscGhhPzogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAoYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIoKGEgLyAyNTUpLnRvRml4ZWQoMikpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgYWxwaGEgIT09ICdudW1iZXInIHx8IGFscGhhIDwgMCB8fCBhbHBoYSA+IDEpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFscGhhO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUhleFRvUkdCQShoZXg6IHN0cmluZywgYWxwaGE/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IFtyLCBnLCBiLCBhXSA9IHR1aVBhcnNlSGV4KGhleCwgYWxwaGEpO1xuXG4gICAgcmV0dXJuIGEgPCAxID8gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHthfSlgIDogYHJnYigke3J9LCAke2d9LCAke2J9KWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlJc1ZhbGlkSGV4KGhleDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eIyhbQS1GYS1mMC05XXszLDR9KXsxLDJ9JC8udGVzdChoZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpUGFyc2VIZXgoXG4gICAgaGV4OiBzdHJpbmcsXG4gICAgYWxwaGE/OiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gICAgaWYgKCF0dWlJc1ZhbGlkSGV4KGhleCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEhFWCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoKGhleC5sZW5ndGggLSAxKSAvIDMpO1xuICAgIGNvbnN0IGhleEFyciA9IGdldENodW5rc0Zyb21TdHJpbmcoaGV4LnNsaWNlKDEpLCBjaHVua1NpemUpO1xuICAgIGNvbnN0IFtyID0gTmFOLCBnID0gTmFOLCBiID0gTmFOLCBhXSA9IGhleEFycj8ubWFwKGNvbnZlcnRIZXhVbml0VG8yNTYpID8/IFtdO1xuICAgIGNvbnN0IGZsb2F0QWxwaGEgPSBnZXRBbHBoYUZsb2F0KGEsIGFscGhhKTtcblxuICAgIHJldHVybiBbciwgZywgYiwgZmxvYXRBbHBoYV07XG59XG4iXX0=