1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- var utils = require('../utils')
- , nodes = require('../nodes');
- /**
- * Color component name map.
- */
- var componentMap = {
- red: 'r'
- , green: 'g'
- , blue: 'b'
- , alpha: 'a'
- , hue: 'h'
- , saturation: 's'
- , lightness: 'l'
- };
- /**
- * Color component unit type map.
- */
- var unitMap = {
- hue: 'deg'
- , saturation: '%'
- , lightness: '%'
- };
- /**
- * Color type map.
- */
- var typeMap = {
- red: 'rgba'
- , blue: 'rgba'
- , green: 'rgba'
- , alpha: 'rgba'
- , hue: 'hsla'
- , saturation: 'hsla'
- , lightness: 'hsla'
- };
- /**
- * Return component `name` for the given `color`.
- *
- * @param {RGBA|HSLA} color
- * @param {String} name
- * @return {Unit}
- * @api public
- */
- function component(color, name) {
- utils.assertColor(color, 'color');
- utils.assertString(name, 'name');
- var name = name.string
- , unit = unitMap[name]
- , type = typeMap[name]
- , name = componentMap[name];
- if (!name) throw new Error('invalid color component "' + name + '"');
- return new nodes.Unit(color[type][name], unit);
- };
- component.params = ['color', 'name'];
- module.exports = component;
|