@swimlane/ngx-charts
Version:
Declarative Charting Framework for Angular
42 lines • 4.81 kB
JavaScript
import * as d3_color from 'd3-color';
/**
* Converts a hex to RGB
*
* @export
*/
export function hexToRgb(value) {
// deprecated, use d3.color()
return d3_color.rgb(value);
}
/**
* Accepts a color (string) and returns a inverted hex color (string)
* http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability
*
* @export
*/
export function invertColor(value) {
const color = d3_color.rgb(value);
const { r, g, b, opacity } = color;
if (opacity === 0) {
return color.toString();
}
const yiq = (r * 299 + g * 587 + b * 114) / 1000;
const depth = yiq >= 128 ? -0.8 : 0.8;
return shadeRGBColor(color, depth);
}
/**
* Given a rgb, it will darken/lighten
* http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors
*
* @export
* @param \{ r, g, b }
*/
export function shadeRGBColor({ r, g, b }, percent) {
const t = percent < 0 ? 0 : 255;
const p = percent < 0 ? percent * -1 : percent;
r = Math.round((t - r) * p) + r;
g = Math.round((t - g) * p) + g;
b = Math.round((t - b) * p) + b;
return `rgb(${r}, ${g}, ${b})`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtY2hhcnRzL3NyYy9saWIvdXRpbHMvY29sb3ItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFFckM7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYTtJQUNwQyw2QkFBNkI7SUFDN0IsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYTtJQUN2QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDbkMsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3pCO0lBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqRCxNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRXRDLE9BQU8sYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBZTtJQUN4RCxNQUFNLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNoQyxNQUFNLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUUvQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVoQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZDNfY29sb3IgZnJvbSAnZDMtY29sb3InO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgaGV4IHRvIFJHQlxuICpcbiAqIEBleHBvcnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAvLyBkZXByZWNhdGVkLCB1c2UgZDMuY29sb3IoKVxuICByZXR1cm4gZDNfY29sb3IucmdiKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBBY2NlcHRzIGEgY29sb3IgKHN0cmluZykgYW5kIHJldHVybnMgYSBpbnZlcnRlZCBoZXggY29sb3IgKHN0cmluZylcbiAqIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvOTYwMDI5NS9hdXRvbWF0aWNhbGx5LWNoYW5nZS10ZXh0LWNvbG9yLXRvLWFzc3VyZS1yZWFkYWJpbGl0eVxuICpcbiAqIEBleHBvcnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludmVydENvbG9yKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjb2xvciA9IGQzX2NvbG9yLnJnYih2YWx1ZSk7XG4gIGNvbnN0IHsgciwgZywgYiwgb3BhY2l0eSB9ID0gY29sb3I7XG4gIGlmIChvcGFjaXR5ID09PSAwKSB7XG4gICAgcmV0dXJuIGNvbG9yLnRvU3RyaW5nKCk7XG4gIH1cbiAgY29uc3QgeWlxID0gKHIgKiAyOTkgKyBnICogNTg3ICsgYiAqIDExNCkgLyAxMDAwO1xuICBjb25zdCBkZXB0aCA9IHlpcSA+PSAxMjggPyAtMC44IDogMC44O1xuXG4gIHJldHVybiBzaGFkZVJHQkNvbG9yKGNvbG9yLCBkZXB0aCk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSByZ2IsIGl0IHdpbGwgZGFya2VuL2xpZ2h0ZW5cbiAqIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTU2MDI0OC9wcm9ncmFtbWF0aWNhbGx5LWxpZ2h0ZW4tb3ItZGFya2VuLWEtaGV4LWNvbG9yLW9yLXJnYi1hbmQtYmxlbmQtY29sb3JzXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIFxceyByLCBnLCBiIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNoYWRlUkdCQ29sb3IoeyByLCBnLCBiIH0sIHBlcmNlbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBwZXJjZW50IDwgMCA/IDAgOiAyNTU7XG4gIGNvbnN0IHAgPSBwZXJjZW50IDwgMCA/IHBlcmNlbnQgKiAtMSA6IHBlcmNlbnQ7XG5cbiAgciA9IE1hdGgucm91bmQoKHQgLSByKSAqIHApICsgcjtcbiAgZyA9IE1hdGgucm91bmQoKHQgLSBnKSAqIHApICsgZztcbiAgYiA9IE1hdGgucm91bmQoKHQgLSBiKSAqIHApICsgYjtcblxuICByZXR1cm4gYHJnYigke3J9LCAke2d9LCAke2J9KWA7XG59XG4iXX0=