UNPKG

@elastic/charts

Version:

Elastic-Charts data visualization library

81 lines 3.37 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.overrideOpacity = overrideOpacity; exports.multiplyOpacity = multiplyOpacity; exports.multiplyColorOpacity = multiplyColorOpacity; exports.RGBATupleToString = RGBATupleToString; exports.isValid = isValid; exports.getChromaColor = getChromaColor; exports.getGreensColorScale = getGreensColorScale; exports.colorToRgba = colorToRgba; exports.colorToHsl = colorToHsl; exports.hslToColor = hslToColor; exports.changeColorLightness = changeColorLightness; const chroma_js_1 = __importDefault(require("chroma-js")); const colors_1 = require("./colors"); const data_structures_1 = require("./data_structures"); const common_1 = require("../utils/common"); const logger_1 = require("../utils/logger"); function overrideOpacity([r, g, b, o], opacity) { const opacityOverride = opacity === undefined ? o : typeof opacity === 'number' ? opacity : opacity(o); if (r === 0 && b === 0 && g === 0 && o === 0) { return colors_1.Colors.Transparent.rgba; } return [r, g, b, (0, common_1.clamp)(Number.isFinite(opacityOverride) ? opacityOverride : o, 0, 1)]; } function multiplyOpacity(rgba, opacityMultiplier) { return overrideOpacity(rgba, (opacity) => opacity * opacityMultiplier); } function multiplyColorOpacity(color, opacityMultiplier) { return RGBATupleToString(multiplyOpacity(colorToRgba(color), opacityMultiplier)); } function RGBATupleToString(rgba) { return `rgba(${rgba[0]}, ${rgba[1]}, ${rgba[2]}, ${rgba[3] ?? 1})`; } function isValid(color) { try { return (0, chroma_js_1.default)(color === colors_1.Colors.Transparent.keyword ? 'rgba(0,0,0,0)' : color); } catch { return false; } } function getChromaColor(color) { if (typeof color === 'string') return (0, chroma_js_1.default)(color.toLowerCase()); return (0, chroma_js_1.default)(...color); } function getGreensColorScale(gamma, domain) { const scale = chroma_js_1.default.scale(chroma_js_1.default.brewer.Greens).gamma(gamma).domain(domain); return (value) => scale(value).css(); } const rgbaCache = new data_structures_1.LRUCache(200); function colorToRgba(color) { const cachedValue = rgbaCache.get(color); if (cachedValue === undefined) { const chromaColor = isValid(color); if (chromaColor === false) logger_1.Logger.warn(`The provided color is not a valid CSS color, using RED as fallback`, color); const newValue = chromaColor ? chromaColor.rgba() : colors_1.Colors.Red.rgba; rgbaCache.set(color, newValue); return newValue; } return cachedValue; } function colorToHsl(color) { const [r, g, b, a] = colorToRgba(color); const [h, s, l] = chroma_js_1.default.rgb(r, g, b).hsl(); return [h, s, l, a]; } function hslToColor(h, s, l, a = 1) { const rgba = chroma_js_1.default.hsl(h, s, l).alpha(a).rgba(); return RGBATupleToString(rgba); } function changeColorLightness(color, lightnessAmount, lightnessThreshold) { const [h, s, l, a] = colorToHsl(color); return hslToColor(h, s, l >= lightnessThreshold ? l - lightnessAmount : l + lightnessAmount, a); } //# sourceMappingURL=color_library_wrappers.js.map