UNPKG

@arco-design/web-react

Version:

Arco Design React UI Library.

101 lines (100 loc) 4.46 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { formatInputToHSVA, formatInputToRGBA, hsvToRgb, rgbToHex, rgbToHsv, rgbaToHex, } from '../_util/color'; export var sortGradientColors = function (gradientColors) { return gradientColors.sort(function (a, b) { return a.percent - b.percent; }); }; export var mix = function (source, target, progress) { return Object.keys(source).reduce(function (previousObject, currentKey) { var _a; return (__assign(__assign({}, previousObject), (_a = {}, _a[currentKey] = source[currentKey] + (target[currentKey] - source[currentKey]) * progress, _a))); }, __assign({}, source)); }; export var getGradientString = function (value) { return value.map(function (_a) { var color = _a.color, percent = _a.percent; return color + " " + percent + "%"; }).join(', '); }; export var renderGradientBackground = function (value) { return "linear-gradient(to right, " + getGradientString(value) + ")"; }; export var renderBackground = function (value) { return Array.isArray(value) ? renderGradientBackground(value) : value; }; export var formatRgba = function (r, g, b, a) { return a < 1 ? "rgba(" + r + ", " + g + ", " + b + ", " + a.toFixed(2) + ")" : "rgb(" + r + ", " + g + ", " + b + ")"; }; export var formatHex = function (r, g, b, a) { return a < 1 ? "#" + rgbaToHex(r, g, b, a) : "#" + rgbToHex(r, g, b); }; export var getColorFromHsv = function (hsv) { var rgb = hsvToRgb(hsv.h, hsv.s, hsv.v); var hex = rgbToHex(rgb.r, rgb.g, rgb.b); return { hsv: hsv, rgb: rgb, hex: hex, }; }; export var getRandomId = function () { return Math.random().toFixed(10).slice(2); }; export var mapValueToGradientColor = function (value, disabledAlpha) { return value.map(function (item) { var formatInput = formatInputToHSVA(item.color); return { id: getRandomId(), color: getColorFromHsv(formatInput), alpha: disabledAlpha ? 100 : formatInput.a, percent: item.percent, }; }); }; export var getColorByGradients = function (gradientColors, percent, id) { var index = gradientColors.findIndex(function (item) { return item.percent === percent; }); if (index !== -1) { return __assign(__assign({}, gradientColors[index]), { id: id !== null && id !== void 0 ? id : getRandomId() }); } var latterColorIndex = gradientColors.findIndex(function (item) { return item.percent > percent; }); var previousColorIndex = latterColorIndex - 1; var _a = gradientColors[previousColorIndex], previousColor = _a.color, previousAlpha = _a.alpha, previousPercent = _a.percent; var _b = gradientColors[latterColorIndex], latterColor = _b.color, latterAlpha = _b.alpha, latterPercent = _b.percent; var interpolatedColor = mix(__assign(__assign({}, previousColor.rgb), { a: previousAlpha }), __assign(__assign({}, latterColor.rgb), { a: latterAlpha }), (percent - previousPercent) / (latterPercent - previousPercent)); var r = interpolatedColor.r, g = interpolatedColor.g, b = interpolatedColor.b, a = interpolatedColor.a; return { id: id !== null && id !== void 0 ? id : getRandomId(), color: getColorFromHsv(rgbToHsv(r, g, b)), alpha: a, percent: percent, }; }; export var equalsHsv = function (a, b) { return a.h === b.h && a.s === b.s && a.v === b.v; }; export var equalsRgba = function (a, b) { return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a; }; export var isEqualsColors = function (colorA, colorB) { if (typeof colorA === 'string' && typeof colorB === 'string') { return colorA === colorB; } if (Array.isArray(colorA) && Array.isArray(colorB)) { return (colorA.length === colorB.length && colorA.every(function (itemA, index) { var itemB = colorB[index]; return (equalsRgba(formatInputToRGBA(itemA.color), formatInputToRGBA(itemB.color)) && itemA.percent === itemB.percent); })); } return false; };