@antv/data-wizard
Version:
A js/ts library for data processing
68 lines (67 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.hsl = exports.rgb = void 0;
var utils_1 = require("../utils");
var utils_2 = require("./utils");
/**
* Generate RGB color.
* @param options - the params
*/
function rgb(options) {
if (options === void 0) { options = {}; }
var _a = utils_2.initOptions({
grayscale: false,
min: 0,
max: 255,
}, options), grayscale = _a.grayscale, max = _a.max, min = _a.min;
utils_1.assert(min >= 0 && max <= 255, 'min and max must between in [0, 255]');
var minRgb = min;
var maxRgb = max;
var minR = options.minR === undefined ? min : options.minR;
var maxR = options.maxR === undefined ? max : options.maxR;
var minG = options.minG === undefined ? min : options.minG;
var maxG = options.maxG === undefined ? max : options.maxG;
var minB = options.minB === undefined ? min : options.minB;
var maxB = options.maxB === undefined ? max : options.maxB;
if (grayscale &&
min === 0 &&
max === 255 &&
minR !== undefined &&
minR !== undefined &&
minG !== undefined &&
maxG !== undefined &&
minB !== undefined &&
maxB !== undefined) {
minRgb = (minR + minG + minG) / 3;
maxRgb = (maxR + maxG + maxB) / 3;
}
if (grayscale) {
return new Array(3).fill(this.natural({ min: minRgb, max: maxRgb }));
}
return [
this.natural({ min: minR, max: maxR }),
this.natural({ min: minG, max: maxG }),
this.natural({ min: minB, max: maxB }),
];
}
exports.rgb = rgb;
/**
* generate HSL color
* @param options
*/
function hsl(options) {
var opts = utils_2.initOptions({
minH: 0,
maxH: 360,
minS: 0,
maxS: 100,
minL: 0,
maxL: 100,
}, options);
return [
this.natural({ min: opts.minH, max: opts.maxH }),
this.float({ min: opts.minS, max: opts.maxS }) + "%",
this.float({ min: opts.minS, max: opts.maxS }) + "%",
];
}
exports.hsl = hsl;