chroma-js
Version:
JavaScript library for color conversions
31 lines (28 loc) • 831 B
JavaScript
const {unpack, last} = require('../../utils');
const hsl2css = require('./hsl2css');
const rgb2hsl = require('../hsl/rgb2hsl');
const {round} = Math;
/*
* supported arguments:
* - rgb2css(r,g,b)
* - rgb2css(r,g,b,a)
* - rgb2css([r,g,b], mode)
* - rgb2css([r,g,b,a], mode)
* - rgb2css({r,g,b,a}, mode)
*/
const rgb2css = (...args) => {
const rgba = unpack(args, 'rgba');
let mode = last(args) || 'rgb';
if (mode.substr(0,3) == 'hsl') {
return hsl2css(rgb2hsl(rgba), mode);
}
rgba[0] = round(rgba[0]);
rgba[1] = round(rgba[1]);
rgba[2] = round(rgba[2]);
if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {
rgba[3] = rgba.length > 3 ? rgba[3] : 1;
mode = 'rgba';
}
return `${mode}(${rgba.slice(0,mode==='rgb'?3:4).join(',')})`;
}
module.exports = rgb2css;