nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
41 lines (40 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateRandomColorInHexRGB = exports.generateRandomHSLColor = void 0;
exports.generateRandomColor = generateRandomColor;
const convert_1 = require("./convert");
const helpers_1 = require("./helpers");
const utils_1 = require("./utils");
const generatedColors = new Set();
const recentColors = [];
const generateRandomHSLColor = (maxColors = 16) => {
let color;
do {
color = (0, helpers_1._generateRandomHSL)();
} while (generatedColors.has(color) || (0, helpers_1._isSimilarToLast)(recentColors, color));
generatedColors.add(color);
recentColors.push(color);
if (recentColors?.length > maxColors) {
recentColors?.shift();
}
return color;
};
exports.generateRandomHSLColor = generateRandomHSLColor;
const generateRandomColorInHexRGB = (maxColors = 16) => {
return (0, convert_1.convertColorCode)((0, exports.generateRandomHSLColor)(maxColors));
};
exports.generateRandomColorInHexRGB = generateRandomColorInHexRGB;
function generateRandomColor(options) {
const { colorType = 'hex', maxColors = 16 } = options ?? {};
const hsl = (0, exports.generateRandomHSLColor)(maxColors);
const hslValues = (0, utils_1.extractSolidColorValues)(hsl);
switch (colorType) {
case 'hsl':
return hsl;
case 'rgb':
return (0, convert_1.convertHslToRgb)(...hslValues);
case 'hex':
default:
return (0, convert_1.convertHslToHex)(...hslValues);
}
}