UNPKG

chroma-js

Version:

JavaScript library for color conversions

44 lines (38 loc) 1.24 kB
const RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; const RE_HEXA = /^#?([A-Fa-f0-9]{8})$/; const hex2rgb = (hex) => { if (hex.match(RE_HEX)) { // remove optional leading # if (hex.length === 4 || hex.length === 7) { hex = hex.substr(1); } // expand short-notation to full six-digit if (hex.length === 3) { hex = hex.split(''); hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; } const u = parseInt(hex, 16); const r = u >> 16; const g = u >> 8 & 0xFF; const b = u & 0xFF; return [r,g,b,1]; } // match rgba hex format, eg #FF000077 if (hex.match(RE_HEXA)) { if (hex.length === 9) { // remove optional leading # hex = hex.substr(1); } const u = parseInt(hex, 16); const r = u >> 24 & 0xFF; const g = u >> 16 & 0xFF; const b = u >> 8 & 0xFF; const a = Math.round((u & 0xFF) / 0xFF * 100) / 100; return [r,g,b,a]; } // we used to check for css colors here // if _input.css? and rgb = _input.css hex // return rgb throw new Error(`unknown hex color: ${hex}`); } module.exports = hex2rgb;