@samscodz/randhexcolor
Version:
A package that generates random hex color. Packed with hex to RGB and hex to CMYK converter.
88 lines (74 loc) • 2.07 kB
JavaScript
var randomNum = (max) => Math.floor(Math.random() * max)
function randomhex(length) {
var result = '';
var characters = '123456789ABCDEF';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(randomNum(charactersLength));
}
return result;
}
function hexToRgb(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
let hexToCMYK = (hex) => {
var computedC = 0;
var computedM = 0;
var computedY = 0;
var computedK = 0;
hex = (hex.charAt(0)=="#") ? hex.substring(1,7) : hex;
if (hex.length != 6) {
alert ('Invalid length of the input hex value!');
return;
}
if (/[0-9a-f]{6}/i.test(hex) != true) {
alert ('Invalid digits in the input hex value!');
return;
}
var r = parseInt(hex.substring(0,2),16);
var g = parseInt(hex.substring(2,4),16);
var b = parseInt(hex.substring(4,6),16);
// BLACK
if (r==0 && g==0 && b==0) {
computedK = 1;
return [0,0,0,1];
}
computedC = 1 - (r/255);
computedM = 1 - (g/255);
computedY = 1 - (b/255);
var minCMY = Math.min(computedC,Math.min(computedM,computedY));
computedC = (computedC - minCMY) / (1 - minCMY) ;
computedM = (computedM - minCMY) / (1 - minCMY) ;
computedY = (computedY - minCMY) / (1 - minCMY) ;
computedK = minCMY;
return [computedC,computedM,computedY,computedK];
}
let random = (thing) => {
var hex = randomhex(6)
var rgb = hexToRgb(hex)
var cmyk = hexToCMYK(hex)
var c = (cmyk[0] / 1) * 100
var m = (cmyk[1] / 1) * 100
var y = (cmyk[2] / 1) * 100
var k = (cmyk[3] / 1) * 100
if (thing === "hex") {
return `#${hex}`
} else if (thing === "rgb") {
return rgb
} else if (thing === "cmyk") {
return cmyk
} else {
var data = {
hex: `#${hex}`,
rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,
cmyk: `cmyk(${c}%, ${m}%, ${y}%, ${k}%)`
}
return data
}
}
module.exports = random