index.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _color = require('color');
  4. var _color2 = _interopRequireDefault(_color);
  5. var _colourNames = require('./lib/colourNames');
  6. var _colourNames2 = _interopRequireDefault(_colourNames);
  7. var _toShorthand = require('./lib/toShorthand');
  8. var _toShorthand2 = _interopRequireDefault(_toShorthand);
  9. var _colourType = require('./lib/colourType');
  10. var ctype = _interopRequireWildcard(_colourType);
  11. var _stripWhitespace = require('./lib/stripWhitespace');
  12. var _stripWhitespace2 = _interopRequireDefault(_stripWhitespace);
  13. var _trimLeadingZero = require('./lib/trimLeadingZero');
  14. var _trimLeadingZero2 = _interopRequireDefault(_trimLeadingZero);
  15. function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
  16. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  17. var filterColor = function filterColor(callback) {
  18. return Object.keys(_colourNames2.default).filter(callback);
  19. };
  20. var shorter = function shorter(a, b) {
  21. return (a && a.length < b.length ? a : b).toLowerCase();
  22. };
  23. exports.default = function (colour) {
  24. var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
  25. if (ctype.isRGBorHSL(colour)) {
  26. var c = void 0;
  27. // Pass through invalid rgb/hsl functions
  28. try {
  29. c = (0, _color2.default)(colour);
  30. } catch (err) {
  31. return colour;
  32. }
  33. if (c.alpha() === 1) {
  34. // At full alpha, just use hex
  35. colour = c.hexString();
  36. } else {
  37. var rgb = c.rgb();
  38. if (!opts.legacy && !rgb.r && !rgb.g && !rgb.b && !rgb.a) {
  39. return 'transparent';
  40. }
  41. var hsla = c.hslaString();
  42. var rgba = c.rgbString();
  43. return (0, _trimLeadingZero2.default)((0, _stripWhitespace2.default)(hsla.length < rgba.length ? hsla : rgba));
  44. }
  45. }
  46. if (ctype.isHex(colour)) {
  47. colour = (0, _toShorthand2.default)(colour.toLowerCase());
  48. var keyword = filterColor(function (key) {
  49. return _colourNames2.default[key] === colour;
  50. })[0];
  51. return shorter(keyword, colour);
  52. } else if (ctype.isKeyword(colour)) {
  53. var hex = _colourNames2.default[filterColor(function (k) {
  54. return k === colour.toLowerCase();
  55. })[0]];
  56. return shorter(hex, colour);
  57. }
  58. // Possibly malformed, just pass through
  59. return colour;
  60. };
  61. module.exports = exports['default'];