const NAMED_COLORS = { transparent : '#00000000' , aliceblue : '#f0f8ff' , antiquewhite : '#faebd7' , aqua : '#00ffff' , aquamarine : '#7fffd4' , azure : '#f0ffff' , beige : '#f5f5dc' , bisque : '#ffe4c4' , black : '#000000' , blanchedalmond : '#ffebcd' , blue : '#0000ff' , blueviolet : '#8a2be2' , brown : '#a52a2a' , burlywood : '#deb887' , cadetblue : '#5f9ea0' , chartreuse : '#7fff00' , chocolate : '#d2691e' , coral : '#ff7f50' , cornflowerblue : '#6495ed' , cornsilk : '#fff8dc' , crimson : '#dc143c' , cyan : '#00ffff' , darkblue : '#00008b' , darkcyan : '#008b8b' , darkgoldenrod : '#b8860b' , darkgray : '#a9a9a9' , darkgreen : '#006400' , darkgrey : '#a9a9a9' , darkkhaki : '#bdb76b' , darkmagenta : '#8b008b' , darkolivegreen : '#556b2f' , darkorange : '#ff8c00' , darkorchid : '#9932cc' , darkred : '#8b0000' , darksalmon : '#e9967a' , darkseagreen : '#8fbc8f' , darkslateblue : '#483d8b' , darkslategray : '#2f4f4f' , darkslategrey : '#2f4f4f' , darkturquoise : '#00ced1' , darkviolet : '#9400d3' , deeppink : '#ff1493' , deepskyblue : '#00bfff' , dimgray : '#696969' , dimgrey : '#696969' , dodgerblue : '#1e90ff' , firebrick : '#b22222' , floralwhite : '#fffaf0' , forestgreen : '#228b22' , fuchsia : '#ff00ff' , gainsboro : '#dcdcdc' , ghostwhite : '#f8f8ff' , gold : '#ffd700' , goldenrod : '#daa520' , gray : '#808080' , green : '#008000' , greenyellow : '#adff2f' , grey : '#808080' , honeydew : '#f0fff0' , hotpink : '#ff69b4' , indianred : '#cd5c5c' , indigo : '#4b0082' , ivory : '#fffff0' , khaki : '#f0e68c' , lavender : '#e6e6fa' , lavenderblush : '#fff0f5' , lawngreen : '#7cfc00' , lemonchiffon : '#fffacd' , lightblue : '#add8e6' , lightcoral : '#f08080' , lightcyan : '#e0ffff' , lightgoldenrodyellow : '#fafad2' , lightgray : '#d3d3d3' , lightgreen : '#90ee90' , lightgrey : '#d3d3d3' , lightpink : '#ffb6c1' , lightsalmon : '#ffa07a' , lightseagreen : '#20b2aa' , lightskyblue : '#87cefa' , lightslategray : '#778899' , lightslategrey : '#778899' , lightsteelblue : '#b0c4de' , lightyellow : '#ffffe0' , lime : '#00ff00' , limegreen : '#32cd32' , linen : '#faf0e6' , magenta : '#ff00ff' , maroon : '#800000' , mediumaquamarine : '#66cdaa' , mediumblue : '#0000cd' , mediumorchid : '#ba55d3' , mediumpurple : '#9370db' , mediumseagreen : '#3cb371' , mediumslateblue : '#7b68ee' , mediumspringgreen : '#00fa9a' , mediumturquoise : '#48d1cc' , mediumvioletred : '#c71585' , midnightblue : '#191970' , mintcream : '#f5fffa' , mistyrose : '#ffe4e1' , moccasin : '#ffe4b5' , navajowhite : '#ffdead' , navy : '#000080' , oldlace : '#fdf5e6' , olive : '#808000' , olivedrab : '#6b8e23' , orange : '#ffa500' , orangered : '#ff4500' , orchid : '#da70d6' , palegoldenrod : '#eee8aa' , palegreen : '#98fb98' , paleturquoise : '#afeeee' , palevioletred : '#db7093' , papayawhip : '#ffefd5' , peachpuff : '#ffdab9' , peru : '#cd853f' , pink : '#ffc0cb' , plum : '#dda0dd' , powderblue : '#b0e0e6' , purple : '#800080' , rebeccapurple : '#663399' , red : '#ff0000' , rosybrown : '#bc8f8f' , royalblue : '#4169e1' , saddlebrown : '#8b4513' , salmon : '#fa8072' , sandybrown : '#f4a460' , seagreen : '#2e8b57' , seashell : '#fff5ee' , sienna : '#a0522d' , silver : '#c0c0c0' , skyblue : '#87ceeb' , slateblue : '#6a5acd' , slategray : '#708090' , slategrey : '#708090' , snow : '#fffafa' , springgreen : '#00ff7f' , steelblue : '#4682b4' , tan : '#d2b48c' , teal : '#008080' , thistle : '#d8bfd8' , tomato : '#ff6347' , turquoise : '#40e0d0' , violet : '#ee82ee' , wheat : '#f5deb3' , white : '#ffffff' , whitesmoke : '#f5f5f5' , yellow : '#ffff00' , yellowgreen : '#9acd32' , } ; const RGBtoRGB = function ( r , g , b , a ) { if ( a == null || a === '' ) a = 1 ; r = parseFloat ( r ) ; g = parseFloat ( g ) ; b = parseFloat ( b ) ; a = parseFloat ( a ) ; if ( ! ( r <= 255 && r >= 0 && g <= 255 && g >= 0 && b <= 255 && b >= 0 && a <= 1 && a >= 0 ) ) return null ; return [ Math . round ( r ) , Math . round ( g ) , Math . round ( b ) , a ] ; } ; const hexToRGB = function ( hex ) { if ( hex . length === 3 ) hex += 'f' ; if ( hex . length === 4 ) { const h0 = hex . charAt ( 0 ) ; const h1 = hex . charAt ( 1 ) ; const h2 = hex . charAt ( 2 ) ; const h3 = hex . charAt ( 3 ) ; hex = h0 + h0 + h1 + h1 + h2 + h2 + h3 + h3 ; } if ( hex . length === 6 ) hex += 'ff' ; const rgb = [ ] ; for ( let i = 0 , l = hex . length ; i < l ; i += 2 ) rgb . push ( parseInt ( hex . substr ( i , 2 ) , 16 ) / ( i === 6 ? 255 : 1 ) ) ; return rgb ; } ; const hueToRGB = function ( p , q , t ) { if ( t < 0 ) t += 1 ; if ( t > 1 ) t -= 1 ; if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t ; if ( t < 1 / 2 ) return q ; if ( t < 2 / 3 ) return p + ( q - p ) * ( 2 / 3 - t ) * 6 ; return p ; } ; const hslToRGB = function ( h , s , l , a ) { let r ; let b ; let g ; if ( a == null || a === '' ) a = 1 ; h = parseFloat ( h ) / 360 ; s = parseFloat ( s ) / 100 ; l = parseFloat ( l ) / 100 ; a = parseFloat ( a ) / 1 ; if ( h > 1 || h < 0 || s > 1 || s < 0 || l > 1 || l < 0 || a > 1 || a < 0 ) return null ; if ( s === 0 ) { r = b = g = l ; } else { const q = l < 0.5 ? l * ( 1 + s ) : l + s - l * s ; const p = 2 * l - q ; r = hueToRGB ( p , q , h + 1 / 3 ) ; g = hueToRGB ( p , q , h ) ; b = hueToRGB ( p , q , h - 1 / 3 ) ; } return [ r * 255 , g * 255 , b * 255 , a ] ; } ; const shex = '(?:#([a-f0-9]{3,8}))' ; const sval = '\\s*([.\\d%]+)\\s*' ; const sop = '(?:,\\s*([.\\d]+)\\s*)?' ; const slist = `\\(${ [ sval , sval , sval ] }${ sop }\\)` ; const srgb = '(?:rgb)a?' ; const shsl = '(?:hsl)a?' ; const xhex = RegExp ( shex , 'i' ) ; const xrgb = RegExp ( srgb + slist , 'i' ) ; const xhsl = RegExp ( shsl + slist , 'i' ) ; export default function normalizeColor ( value ) { if ( value == null ) return null ; if ( value . indexOf ( 'var(--' ) === 0 ) { return value ; } value = ( `${ value }` ) . replace ( /\s+/ , '' ) ; let match ; if ( NAMED_COLORS . hasOwnProperty ( value ) ) { return value ; } else if ( match = value . match ( xhex ) ) { value = hexToRGB ( match [ 1 ] ) ; } else if ( match = value . match ( xrgb ) ) { value = match . slice ( 1 ) ; } else if ( match = value . match ( xhsl ) ) { value = hslToRGB . apply ( null , match . slice ( 1 ) ) ; } if ( typeof value === 'string' ) value = [ value ] ; if ( ! ( value && ( value = RGBtoRGB . apply ( null , value ) ) ) ) return value ; if ( value [ 3 ] === 1 ) value . splice ( 3 , 1 ) ; return `rgb${ value . length === 4 ? 'a' : '' }(${ value })` ; }