UNPKG

aliascss

Version:

AliasCSS is a CSS post processor.

62 lines (61 loc) 2.49 kB
// custom.color will be provided {primary:'#2d3f3e....} export default function color(color, custom) { if (color.match(/^--[a-zA-Z]/)) return `var(${color})`; color = color.replace(/^[-]/, ''); if (custom.hasOwnProperty('colors') && typeof custom.colors === 'object') { if (custom.colors.hasOwnProperty(color)) return custom.colors[color]; } // hexadecimal =+ alpha 00-ff if (/^[0-9a-fA-F]{3,8}$/.test(color)) { return `#${color}`; // Name } else if (/^[a-zA-Z]+$/.test(color)) { return color; // rgb/a in number } else if (/^[0-9]{9}/.test(color)) { if (color.length === 9) return `rgb(${color.replace(/([\d]{3})([\d]{3})([\d]{3})/, '$1,$2,$3')})`; else return `rgba(${color .replace(/([\d]{3})([\d]{3})([\d]{3})([\d]+)/, '$1,$2,$3,$4') .replace('d', '.') .replace('p', '%')})`; } else if (/^([\d]{3})([\d]{1,3}p)([\d]{1,3}p)/.test(color)) { if (/^([\d]{3})([\d]{1,3}p)([\d]{1,3}p)$/.test(color)) return 'hsl(' + color.replace(/^([\d]{1,3})([\d]{1,3}p)([\d]{1,3}p)/, '$1,$2,$3').replace(/p/g, '%') + ')'; else return ('hsla(' + color .replace(/^([\d]{1,3})([\d]{1,3}p)([\d]{1,3}p)([\d]+)/, '$1,$2,$3,$4') .replace('d', '.') .replace(/p/g, '%') + ')'); } else if (/^([\d]{1,3}p)([\d]{1,3}p)([\d]{1,3}p)/.test(color)) { if (/^([\d]{1,3}p)([\d]{1,3}p)([\d]{1,3}p$)/.test(color)) return 'rgb(' + color.replace(/^([\d]{1,3}p)([\d]{1,3}p)([\d]{1,3}p)/, '$1,$2,$3').replace(/p/g, '%') + ')'; else return ('rgba(' + color .replace(/^([\d]{1,3}p)([\d]{1,3}p)([\d]{1,3}p)([\d]+)/, '$1,$2,$3,$4') .replace('d', '.') .replace(/p/g, '%') + ')'); } else if (/^(rgb|hsl|hsla|rgba)-/.test(color)) { const match = color.match(/^(rgb|hsl|hsla|rgba)-/); const colorFunc = match ? match[1] : ''; if (color.replace(colorFunc, '').match(/^--/)) return `${colorFunc}(var(${color.replace(colorFunc, '')}))`; return `${colorFunc}(${color.replace(colorFunc, '').replace(/^-/, '').replace(/-/g, ',').replace('d', '.') .replace(/p/g, '%')})`; } else { return; } }