UNPKG

@hedhog/utils

Version:

<p align="center"> <img src="https://avatars.githubusercontent.com/u/177489127?s=200&v=4" alt="Hedhog Avatar" /> </p>

40 lines (33 loc) 911 B
export const hexToHSL = (hex: string) => { hex = hex && hex.includes("#") ? hex.replace(/^#/, "") : "#000"; let r = parseInt(hex.substring(0, 2), 16) / 255; let g = parseInt(hex.substring(2, 4), 16) / 255; let b = parseInt(hex.substring(4, 6), 16) / 255; let max = Math.max(r, g, b), min = Math.min(r, g, b); let h = (max + min) / 2; let s = (max + min) / 2; let l = (max + min) / 2; if (max === min) { h = s = 0; } else { let d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } h = Math.round(h * 360); s = Math.round(s * 100); l = Math.round(l * 100); return { h, s, l }; };