UNPKG

@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
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