UNPKG

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
"use strict"; 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); } }