UNPKG

chroma-js

Version:

JavaScript library for color conversions

43 lines (34 loc) 907 B
const {unpack} = require('../../utils'); /* * supported arguments: * - rgb2hsl(r,g,b) * - rgb2hsl(r,g,b,a) * - rgb2hsl([r,g,b]) * - rgb2hsl([r,g,b,a]) * - rgb2hsl({r,g,b,a}) */ const rgb2hsl = (...args) => { args = unpack(args, 'rgba'); let [r,g,b] = args; r /= 255; g /= 255; b /= 255; const min = Math.min(r, g, b); const max = Math.max(r, g, b); const l = (max + min) / 2; let s, h; if (max === min){ s = 0; h = Number.NaN; } else { s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min); } if (r == max) h = (g - b) / (max - min); else if (g == max) h = 2 + (b - r) / (max - min); else if (b == max) h = 4 + (r - g) / (max - min); h *= 60; if (h < 0) h += 360; if (args.length>3 && args[3]!==undefined) return [h,s,l,args[3]]; return [h,s,l]; } module.exports = rgb2hsl;