UNPKG

colorlyjs

Version:

A library for parsing colors within the sRGB color space. it includes rgb(a), hsl(a), hsv(a), hex and cmyk. It mainly focuses on web standards, which is why it has build in css support. However, it may be used in any application that follows the css color

284 lines (241 loc) 14.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _GenericsUtil = _interopRequireDefault(require("./GenericsUtil.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var ParserUtil = /*#__PURE__*/_createClass(function ParserUtil() { _classCallCheck(this, ParserUtil); }); _defineProperty(ParserUtil, "parseHexToRGBA", function (hex) { if (!_GenericsUtil["default"].isHexValue(hex)) return; var hexArray = _GenericsUtil["default"].__convertHexToArray(_GenericsUtil["default"].convertToHarmonizedHexValue(hex)); var rgba = hexArray.map(function (e) { return parseInt(e, _GenericsUtil["default"].hex); }); if (rgba.length === _GenericsUtil["default"].validArrayLength[1]) rgba[3] = rgba[3] / _GenericsUtil["default"].maxRGB; return rgba; }); _defineProperty(ParserUtil, "parseHexToCMYK", function (hex) { if (!_GenericsUtil["default"].isHexValue(hex)) return; return ParserUtil.parseRGBAToCMYK.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHexToRGBA(hex))); }); _defineProperty(ParserUtil, "parseHexToHSL", function (hex) { if (!_GenericsUtil["default"].isHexValue(hex)) return; return ParserUtil.parseRGBAToHSL.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHexToRGBA(hex))); }); _defineProperty(ParserUtil, "parseHexToHSV", function (hex) { if (!_GenericsUtil["default"].isHexValue(hex)) return; return ParserUtil.parseRGBAToHSV.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHexToRGBA(hex))); }); _defineProperty(ParserUtil, "parseRGBAToHex", function () { var r = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 255; var g = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255; var b = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 255; var a = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; var rgba = [r, g, b, a]; if (!_GenericsUtil["default"].isRGBAArray(rgba)) return; rgba[3] *= _GenericsUtil["default"].maxRGB; var hex = rgba.map(function (e) { return Math.round(e).toString(_GenericsUtil["default"].hex).padStart(2, 0); }).join(""); return _GenericsUtil["default"].convertToHarmonizedHexValue(hex); }); _defineProperty(ParserUtil, "parseRGBAToCMYK", function () { var r = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 255; var g = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255; var b = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 255; var rgb = [r, g, b]; if (!_GenericsUtil["default"].isRGBArray(rgb)) return; rgb = rgb.map(function (e) { return _GenericsUtil["default"].normalizeRGBValue(e); }); if (Math.max.apply(Math, _toConsumableArray(rgb)) === 0) return [0, 0, 0, 1]; var k = 1 - Math.max.apply(Math, _toConsumableArray(rgb)), c = (1 - rgb[0] - k) / (1 - k), m = (1 - rgb[1] - k) / (1 - k), y = (1 - rgb[2] - k) / (1 - k); return [c, m, y, k]; }); _defineProperty(ParserUtil, "parseRGBAToHSL", function () { var r = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 255; var g = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255; var b = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 255; var rgb = [r, g, b]; if (!_GenericsUtil["default"].isRGBArray(rgb)) return; var h = _GenericsUtil["default"].getHueFromRGBA.apply(_GenericsUtil["default"], rgb), s = _GenericsUtil["default"].getSaturationFromRGBA.apply(_GenericsUtil["default"], rgb), l = _GenericsUtil["default"].getLuminosityFromRGBA.apply(_GenericsUtil["default"], rgb); return [h, s, l]; }); _defineProperty(ParserUtil, "parseRGBAToHSV", function () { var r = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 255; var g = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 255; var b = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 255; var rgb = [r, g, b]; if (!_GenericsUtil["default"].isRGBArray(rgb)) return; /** * let h = GenericsUtil.getHueFromRGBA(...rgb), s = GenericsUtil.getSaturationFromRGBA(...rgb), v = GenericsUtil.getValueFromRGBA(...rgb) return [h, s, v]; */ rgb = _GenericsUtil["default"].normalizeRGBArray(rgb); var cMax = Math.max.apply(Math, _toConsumableArray(rgb)), cMin = Math.min.apply(Math, _toConsumableArray(rgb)), delta = cMax - cMin; var h = delta === 0 ? 0 : cMax === rgb[0] ? _GenericsUtil["default"].standardHue * ((rgb[1] - rgb[2]) / delta % 6) : cMax === rgb[1] ? _GenericsUtil["default"].standardHue * ((rgb[2] - rgb[0]) / delta + 2) : _GenericsUtil["default"].standardHue * ((rgb[0] - rgb[1]) / delta + 4); h = h < 0 ? 360 + h : h > 360 ? h - 360 : h; var s = cMax === 0 ? 0 : delta / cMax; return [h, s, cMax]; }); _defineProperty(ParserUtil, "parseCMYKToHex", function () { var c = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; var m = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var k = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; var cmyk = [c, m, y, k]; if (!_GenericsUtil["default"].isCMYKArray(cmyk)) return; return ParserUtil.parseRGBAToHex.apply(ParserUtil, _toConsumableArray(ParserUtil.parseCMYKToRGBA.apply(ParserUtil, cmyk))); }); _defineProperty(ParserUtil, "parseCMYKToRGBA", function () { var c = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; var m = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var k = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; var cmyk = [c, m, y, k]; if (!_GenericsUtil["default"].isCMYKArray(cmyk)) return; var r = _GenericsUtil["default"].maxRGB * (1 - cmyk[0]) * (1 - cmyk[3]), g = _GenericsUtil["default"].maxRGB * (1 - cmyk[1]) * (1 - cmyk[3]), b = _GenericsUtil["default"].maxRGB * (1 - cmyk[2]) * (1 - cmyk[3]); return [r, g, b, _GenericsUtil["default"].maxDecimalPercentage]; }); _defineProperty(ParserUtil, "parseCMYKToHSL", function () { var c = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; var m = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var k = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; var cmyk = [c, m, y, k]; if (!_GenericsUtil["default"].isCMYKArray(cmyk)) return; return ParserUtil.parseRGBAToHSL.apply(ParserUtil, _toConsumableArray(ParserUtil.parseCMYKToRGBA.apply(ParserUtil, cmyk))); }); _defineProperty(ParserUtil, "parseCMYKToHSV", function () { var c = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; var m = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var k = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; var cmyk = [c, m, y, k]; if (!_GenericsUtil["default"].isCMYKArray(cmyk)) return; return ParserUtil.parseRGBAToHSV.apply(ParserUtil, _toConsumableArray(ParserUtil.parseCMYKToRGBA.apply(ParserUtil, cmyk))); }); _defineProperty(ParserUtil, "parseHSLToHex", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var l = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsl = [h, s, l]; if (!_GenericsUtil["default"].isHSLArray(hsl)) return; return ParserUtil.parseRGBAToHex.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHSLToRGBA.apply(ParserUtil, hsl))); }); _defineProperty(ParserUtil, "parseHSLToRGBA", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var l = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsl = [h, s, l]; if (!_GenericsUtil["default"].isHSLArray(hsl)) return; var c = (1 - Math.abs(2 * l - 1)) * s, x = c * (1 - Math.abs(h / _GenericsUtil["default"].standardHue % 2 - 1)), m = l - c / 2; var rgba = ParserUtil.getRGBPerHue(c, x, m, hsl[0]).map(function (e) { return _GenericsUtil["default"].getValueFromNormalizedRGBValue(e); }); rgba[3] = _GenericsUtil["default"].maxDecimalPercentage; return rgba; }); _defineProperty(ParserUtil, "parseHSLToCMYK", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var l = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsl = [h, s, l]; if (!_GenericsUtil["default"].isHSLArray(hsl)) return; return ParserUtil.parseRGBAToCMYK.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHSLToRGBA.apply(ParserUtil, hsl))); }); _defineProperty(ParserUtil, "parseHSLToHSV", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var l = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsl = [h, s, l]; if (!_GenericsUtil["default"].isHSLArray(hsl)) return; return ParserUtil.parseRGBAToHSV.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHSLToRGBA.apply(ParserUtil, hsl))); }); _defineProperty(ParserUtil, "parseHSVToHex", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var v = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsv = [h, s, v]; if (!_GenericsUtil["default"].isHSVArray(hsv)) return; return ParserUtil.parseRGBAToHex.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHSVToRGBA.apply(ParserUtil, hsv))); }); _defineProperty(ParserUtil, "parseHSVToRGBA", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var v = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsv = [h, s, v]; if (!_GenericsUtil["default"].isHSVArray(hsv)) return; var c = hsv[1] * hsv[2], x = c * (1 - Math.abs(hsv[0] / _GenericsUtil["default"].standardHue % 2 - 1)), m = hsv[2] - c; var rgba = ParserUtil.getRGBPerHue(c, x, m, hsv[0]).map(function (e) { return _GenericsUtil["default"].getValueFromNormalizedRGBValue(e); }); rgba[3] = _GenericsUtil["default"].maxDecimalPercentage; return rgba; }); _defineProperty(ParserUtil, "parseHSVToHSL", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var v = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsv = [h, s, v]; if (!_GenericsUtil["default"].isHSVArray(hsv)) return; return ParserUtil.parseRGBAToHSL.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHSVToRGBA.apply(ParserUtil, hsv))); }); _defineProperty(ParserUtil, "parseHSVToCMYK", function () { var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 60; var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var v = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var hsv = [h, s, v]; if (!_GenericsUtil["default"].isHSVArray(hsv)) return; return ParserUtil.parseRGBAToCMYK.apply(ParserUtil, _toConsumableArray(ParserUtil.parseHSVToRGBA.apply(ParserUtil, hsv))); }); _defineProperty(ParserUtil, "getRGBPerHue", function (c, x, m, h) { var normalizedRBG; if (h >= 0 && h < 60 || h === 360) { normalizedRBG = [c + m, x + m, m]; } else if (h >= 60 && h < 120) { normalizedRBG = [x + m, c + m, m]; } else if (h >= 120 && h < 180) { normalizedRBG = [m, c + m, x + m]; } else if (h >= 180 && h < 240) { normalizedRBG = [m, x + m, c + m]; } else if (h >= 240 && h < 300) { normalizedRBG = [x + m, m, c + m]; } else if (h >= 300 && h < 360) { normalizedRBG = [c + m, m, x + m]; } else { normalizedRBG = [0, 0, 0]; } return normalizedRBG; }); var _default = ParserUtil; exports["default"] = _default;