@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
48 lines • 6.73 kB
JavaScript
export function rgbFromHex(color) {
color = color.replace('#', '');
const n = color.length;
if (n == 3) {
// convert rgb to rrggbb
const r = color[0];
const g = color[1];
const b = color[2];
color = `${r}${r}${g}${g}${b}${b}`;
}
const rgb = parseInt(color, 16); // convert rrggbb to decimal
return {
r: (rgb >> 16) & 0xff, // extract red
g: (rgb >> 8) & 0xff, // extract green
b: (rgb >> 0) & 0xff, // extract blue
};
}
export function rgbToHex(r, g, b) {
r = Math.round(r);
g = Math.round(g);
b = Math.round(b);
const componentToHex = (c) => {
const hex = c.toString(16);
return hex.length == 1 ? '0' + hex : hex;
};
return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
export function colorContrast(color) {
const { r, g, b } = rgbFromHex(color);
const contrast = (Math.round(r * 299) + Math.round(g * 587) + Math.round(b * 114)) / 1000;
return contrast >= 128 ? 'black' : 'white';
}
// https://maketintsandshades.com/about
export function colorTint(color, factor = 0.1 /* 10% */) {
let { r, g, b } = rgbFromHex(color);
r += (255 - r) * factor;
g += (255 - g) * factor;
b += (255 - b) * factor;
return rgbToHex(r, g, b);
}
export function colorShade(color, factor = 0.88 /* 12% */) {
let { r, g, b } = rgbFromHex(color);
r *= factor;
g *= factor;
b *= factor;
return rgbToHex(r, g, b);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdlL3V0aWxzL3NyYy9jb2xvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhO0lBQ3RDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5QixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ1gsd0JBQXdCO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xCLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUE7SUFDcEMsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUEsQ0FBQyw0QkFBNEI7SUFDNUQsT0FBTztRQUNMLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsY0FBYztRQUNyQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLGVBQWU7S0FDdEMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztJQUN0RCxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixNQUFNLGNBQWMsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ25DLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUIsT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQzFDLENBQUMsQ0FBQTtJQUNELE9BQU8sR0FBRyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3hFLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWE7SUFDekMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUE7SUFDekYsT0FBTyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtBQUM1QyxDQUFDO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUztJQUM3RCxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtJQUN2QixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFBO0lBQ3ZCLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUE7SUFDdkIsT0FBTyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTO0lBQy9ELElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuQyxDQUFDLElBQUksTUFBTSxDQUFBO0lBQ1gsQ0FBQyxJQUFJLE1BQU0sQ0FBQTtJQUNYLENBQUMsSUFBSSxNQUFNLENBQUE7SUFDWCxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcmdiRnJvbUhleChjb2xvcjogc3RyaW5nKSB7XG4gIGNvbG9yID0gY29sb3IucmVwbGFjZSgnIycsICcnKVxuICBjb25zdCBuID0gY29sb3IubGVuZ3RoXG4gIGlmIChuID09IDMpIHtcbiAgICAvLyBjb252ZXJ0IHJnYiB0byBycmdnYmJcbiAgICBjb25zdCByID0gY29sb3JbMF1cbiAgICBjb25zdCBnID0gY29sb3JbMV1cbiAgICBjb25zdCBiID0gY29sb3JbMl1cbiAgICBjb2xvciA9IGAke3J9JHtyfSR7Z30ke2d9JHtifSR7Yn1gXG4gIH1cblxuICBjb25zdCByZ2IgPSBwYXJzZUludChjb2xvciwgMTYpIC8vIGNvbnZlcnQgcnJnZ2JiIHRvIGRlY2ltYWxcbiAgcmV0dXJuIHtcbiAgICByOiAocmdiID4+IDE2KSAmIDB4ZmYsIC8vIGV4dHJhY3QgcmVkXG4gICAgZzogKHJnYiA+PiA4KSAmIDB4ZmYsIC8vIGV4dHJhY3QgZ3JlZW5cbiAgICBiOiAocmdiID4+IDApICYgMHhmZiwgLy8gZXh0cmFjdCBibHVlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYlRvSGV4KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgciA9IE1hdGgucm91bmQocilcbiAgZyA9IE1hdGgucm91bmQoZylcbiAgYiA9IE1hdGgucm91bmQoYilcbiAgY29uc3QgY29tcG9uZW50VG9IZXggPSAoYzogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaGV4ID0gYy50b1N0cmluZygxNilcbiAgICByZXR1cm4gaGV4Lmxlbmd0aCA9PSAxID8gJzAnICsgaGV4IDogaGV4XG4gIH1cbiAgcmV0dXJuICcjJyArIGNvbXBvbmVudFRvSGV4KHIpICsgY29tcG9uZW50VG9IZXgoZykgKyBjb21wb25lbnRUb0hleChiKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sb3JDb250cmFzdChjb2xvcjogc3RyaW5nKSB7XG4gIGNvbnN0IHsgciwgZywgYiB9ID0gcmdiRnJvbUhleChjb2xvcilcbiAgY29uc3QgY29udHJhc3QgPSAoTWF0aC5yb3VuZChyICogMjk5KSArIE1hdGgucm91bmQoZyAqIDU4NykgKyBNYXRoLnJvdW5kKGIgKiAxMTQpKSAvIDEwMDBcbiAgcmV0dXJuIGNvbnRyYXN0ID49IDEyOCA/ICdibGFjaycgOiAnd2hpdGUnXG59XG5cbi8vIGh0dHBzOi8vbWFrZXRpbnRzYW5kc2hhZGVzLmNvbS9hYm91dFxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yVGludChjb2xvcjogc3RyaW5nLCBmYWN0b3IgPSAwLjEgLyogMTAlICovKSB7XG4gIGxldCB7IHIsIGcsIGIgfSA9IHJnYkZyb21IZXgoY29sb3IpXG4gIHIgKz0gKDI1NSAtIHIpICogZmFjdG9yXG4gIGcgKz0gKDI1NSAtIGcpICogZmFjdG9yXG4gIGIgKz0gKDI1NSAtIGIpICogZmFjdG9yXG4gIHJldHVybiByZ2JUb0hleChyLCBnLCBiKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sb3JTaGFkZShjb2xvcjogc3RyaW5nLCBmYWN0b3IgPSAwLjg4IC8qIDEyJSAqLykge1xuICBsZXQgeyByLCBnLCBiIH0gPSByZ2JGcm9tSGV4KGNvbG9yKVxuICByICo9IGZhY3RvclxuICBnICo9IGZhY3RvclxuICBiICo9IGZhY3RvclxuICByZXR1cm4gcmdiVG9IZXgociwgZywgYilcbn1cbiJdfQ==