UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

94 lines (62 loc) 3.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isDarkColor = exports.getUniqueColor = exports.getContrastColor = exports.getColorScale = exports.getColorPalette = exports.getColorClasses = exports.defaultColorScaleName = exports.defaultColorScale = exports.defaultClasses = exports.cssColor = exports.colorScales = void 0; var _d3Color = require("d3-color"); var _lodash = require("lodash"); var _colors = require("../constants/colors"); const colorbrewer = _colors.COLOR_PALETTES; // Returns a color brewer scale for a number of classes const getColorPalette = (scale, classes) => { var _colorbrewer$scale; return colorbrewer === null || colorbrewer === void 0 ? void 0 : (_colorbrewer$scale = colorbrewer[scale]) === null || _colorbrewer$scale === void 0 ? void 0 : _colorbrewer$scale[classes]; }; exports.getColorPalette = getColorPalette; const getColorClasses = palette => { var _palette$split; return palette === null || palette === void 0 ? void 0 : (_palette$split = palette.split(",")) === null || _palette$split === void 0 ? void 0 : _palette$split.length; }; // Returns color scale name for a palette exports.getColorClasses = getColorClasses; const getColorScale = palette => { const classes = palette.split(",").length; return colorScales.find(name => { var _colorbrewer$name$cla; return ((_colorbrewer$name$cla = colorbrewer[name][classes]) === null || _colorbrewer$name$cla === void 0 ? void 0 : _colorbrewer$name$cla.join(",")) === palette; }); }; exports.getColorScale = getColorScale; const defaultColorScaleName = "YlOrBr"; exports.defaultColorScaleName = defaultColorScaleName; const defaultClasses = 5; exports.defaultClasses = defaultClasses; const defaultColorScale = getColorPalette(defaultColorScaleName, defaultClasses); // Correct colors not adhering to the css standard (add missing #) exports.defaultColorScale = defaultColorScale; const cssColor = color => { if (!(0, _lodash.isString)(color)) { return color; } else if (color === "##normal") { // ##normal is used in old map favorites return null; // Will apply default color } return (/(^[0-9A-F]{6}$)|(^[0-9A-F]{3}$)/i.test(color) ? "#" : "") + color; }; // Returns an unique color (first from an array, then random but still unique) exports.cssColor = cssColor; const getUniqueColor = defaultColors => { const colors = [...defaultColors]; function randomColor() { const color = "#000000".replace(/0/g, () => (~~(Math.random() * 16)).toString(16)); // Recursive until color is unique if (colors.includes(color)) { return randomColor(); } colors.push(color); return color; } return index => colors[index] || randomColor(); }; // Returns true if a color is dark exports.getUniqueColor = getUniqueColor; const isDarkColor = color => (0, _d3Color.hcl)(color).l < 70; // Returns constrasting color exports.isDarkColor = isDarkColor; const getContrastColor = color => isDarkColor(color) ? "#fff" : "#000"; exports.getContrastColor = getContrastColor; const colorScales = ["YlOrBr", "Reds", "YlGn", "Greens", "Blues", "BuPu", "RdPu", "PuRd", "Greys", "YlOrBr_reverse", "Reds_reverse", "YlGn_reverse", "Greens_reverse", "Blues_reverse", "BuPu_reverse", "RdPu_reverse", "PuRd_reverse", "Greys_reverse", "PuOr", "BrBG", "PRGn", "PiYG", "RdBu", "RdGy", "RdYlBu", "Spectral", "RdYlGn", "Paired", "Pastel1", "Set1", "Set3"]; exports.colorScales = colorScales;