| 'use strict'; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| |
| var _color = require('color'); |
| |
| var _color2 = _interopRequireDefault(_color); |
| |
| var _keywords = require('./keywords.json'); |
| |
| var _keywords2 = _interopRequireDefault(_keywords); |
| |
| var _toShorthand = require('./lib/toShorthand'); |
| |
| var _toShorthand2 = _interopRequireDefault(_toShorthand); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| const shorter = (a, b) => (a && a.length < b.length ? a : b).toLowerCase(); |
| |
| exports.default = (colour, isLegacy = false, cache = false) => { |
| const key = colour + "|" + isLegacy; |
| |
| if (cache && cache[key]) { |
| return cache[key]; |
| } |
| |
| try { |
| const parsed = (0, _color2.default)(colour.toLowerCase()); |
| const alpha = parsed.alpha(); |
| |
| if (alpha === 1) { |
| const toHex = (0, _toShorthand2.default)(parsed.hex().toLowerCase()); |
| const result = shorter(_keywords2.default[toHex], toHex); |
| |
| if (cache) { |
| cache[key] = result; |
| } |
| |
| return result; |
| } else { |
| const rgb = parsed.rgb(); |
| |
| if (!isLegacy && !rgb.color[0] && !rgb.color[1] && !rgb.color[2] && !alpha) { |
| const result = 'transparent'; |
| |
| if (cache) { |
| cache[key] = result; |
| } |
| |
| return result; |
| } |
| |
| let hsla = parsed.hsl().string(); |
| let rgba = rgb.string(); |
| let result = hsla.length < rgba.length ? hsla : rgba; |
| |
| if (cache) { |
| cache[key] = result; |
| } |
| |
| return result; |
| } |
| } catch (e) { |
| // Possibly malformed, so pass through |
| const result = colour; |
| |
| if (cache) { |
| cache[key] = result; |
| } |
| |
| return result; |
| } |
| }; |