_rgbToHsl.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. "use strict";
  2. exports.__esModule = true;
  3. exports["default"] = void 0;
  4. function rgbToHsl(color) {
  5. // make sure rgb are contained in a set of [0, 255]
  6. var red = color.red / 255;
  7. var green = color.green / 255;
  8. var blue = color.blue / 255;
  9. var max = Math.max(red, green, blue);
  10. var min = Math.min(red, green, blue);
  11. var lightness = (max + min) / 2;
  12. if (max === min) {
  13. // achromatic
  14. if (color.alpha !== undefined) {
  15. return {
  16. hue: 0,
  17. saturation: 0,
  18. lightness: lightness,
  19. alpha: color.alpha
  20. };
  21. } else {
  22. return {
  23. hue: 0,
  24. saturation: 0,
  25. lightness: lightness
  26. };
  27. }
  28. }
  29. var hue;
  30. var delta = max - min;
  31. var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);
  32. switch (max) {
  33. case red:
  34. hue = (green - blue) / delta + (green < blue ? 6 : 0);
  35. break;
  36. case green:
  37. hue = (blue - red) / delta + 2;
  38. break;
  39. default:
  40. // blue case
  41. hue = (red - green) / delta + 4;
  42. break;
  43. }
  44. hue *= 60;
  45. if (color.alpha !== undefined) {
  46. return {
  47. hue: hue,
  48. saturation: saturation,
  49. lightness: lightness,
  50. alpha: color.alpha
  51. };
  52. }
  53. return {
  54. hue: hue,
  55. saturation: saturation,
  56. lightness: lightness
  57. };
  58. }
  59. var _default = exports["default"] = rgbToHsl;
  60. module.exports = exports.default;