antd
Version:
An enterprise-class UI design language and React components implementation
60 lines (59 loc) • 2.23 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getRoundNumber = exports.getGradientPercentColor = exports.getColorAlpha = exports.generateColor = exports.genAlphaColor = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _colorPicker = require("@rc-component/color-picker");
var _color = require("./color");
const generateColor = color => {
if (color instanceof _color.AggregationColor) {
return color;
}
return new _color.AggregationColor(color);
};
exports.generateColor = generateColor;
const getRoundNumber = value => Math.round(Number(value || 0));
exports.getRoundNumber = getRoundNumber;
const getColorAlpha = color => getRoundNumber(color.toHsb().a * 100);
/** Return the color whose `alpha` is 1 */
exports.getColorAlpha = getColorAlpha;
const genAlphaColor = (color, alpha) => {
const hsba = color.toHsb();
hsba.a = alpha || 1;
return generateColor(hsba);
};
/**
* Get percent position color. e.g. [10%-#fff, 20%-#000], 15% => #888
*/
exports.genAlphaColor = genAlphaColor;
const getGradientPercentColor = (colors, percent) => {
const filledColors = [{
percent: 0,
color: colors[0].color
}].concat((0, _toConsumableArray2.default)(colors), [{
percent: 100,
color: colors[colors.length - 1].color
}]);
for (let i = 0; i < filledColors.length - 1; i += 1) {
const startPtg = filledColors[i].percent;
const endPtg = filledColors[i + 1].percent;
const startColor = filledColors[i].color;
const endColor = filledColors[i + 1].color;
if (startPtg <= percent && percent <= endPtg) {
const dist = endPtg - startPtg;
if (dist === 0) {
return startColor;
}
const ratio = (percent - startPtg) / dist * 100;
const startRcColor = new _colorPicker.Color(startColor);
const endRcColor = new _colorPicker.Color(endColor);
return startRcColor.mix(endRcColor, ratio).toRgbString();
}
}
// This will never reach
/* istanbul ignore next */
return '';
};
exports.getGradientPercentColor = getGradientPercentColor;
;