All files / internalHelpers _hexToRgb.js

100% Statements 7/7
100% Branches 4/4
100% Functions 2/2
100% Lines 6/6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16    3x   2x 2x   2x 2x   1x          
// @flow
function hexToRgb(hex: string) : string {
  if (hex.length === 4 || hex.length === 7) {
    // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
    const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i
    const newHex = hex.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b)
 
    const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(newHex)
    return `rgb(${[parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)].join(', ')})`
  } else {
    throw new Error('Invalid hex color')
  }
}
 
export default hexToRgb