param str export function parseHex ( str ) { if ( str === '' ) return 0 ; const val = parseInt ( str , 16 ) ; if ( isNaN ( val ) ) { throw new Error ( 'Invalid hex byte: ' + str ) ; } return val ; } param str export function parseRgba ( str ) { if ( str . startsWith ( '0x' ) ) str = str . slice ( 2 ) ; else if ( str . startsWith ( '#' ) ) str = str . slice ( 1 ) ; if ( str . length !== 6 && str . length !== 8 ) { throw new Error ( 'Invalid hex color: ' + str ) ; } return { r : parseHex ( str . substr ( 0 , 2 ) ) , g : parseHex ( str . substr ( 2 , 2 ) ) , b : parseHex ( str . substr ( 4 , 2 ) ) , alpha : parseHex ( str . substr ( 6 , 2 ) ) , } ; }