UNPKG

nhb-toolbox

Version:

A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.

35 lines (34 loc) 1.22 kB
import { convertColorCode, convertHslToHex, convertHslToRgb } from './convert.js'; import { _generateRandomHSL, _isSimilarToLast } from './helpers.js'; import { extractSolidColorValues } from './utils.js'; const generatedColors = new Set(); const recentColors = []; export const generateRandomHSLColor = (maxColors = 16) => { let color; do { color = _generateRandomHSL(); } while (generatedColors.has(color) || _isSimilarToLast(recentColors, color)); generatedColors.add(color); recentColors.push(color); if (recentColors?.length > maxColors) { recentColors?.shift(); } return color; }; export const generateRandomColorInHexRGB = (maxColors = 16) => { return convertColorCode(generateRandomHSLColor(maxColors)); }; export function generateRandomColor(options) { const { colorType = 'hex', maxColors = 16 } = options ?? {}; const hsl = generateRandomHSLColor(maxColors); const hslValues = extractSolidColorValues(hsl); switch (colorType) { case 'hsl': return hsl; case 'rgb': return convertHslToRgb(...hslValues); case 'hex': default: return convertHslToHex(...hslValues); } }