antd
Version:
An enterprise-class UI design language and React components implementation
38 lines • 1.11 kB
JavaScript
import { TinyColor } from '@ctrl/tinycolor';
function isStableColor(color) {
return color >= 0 && color <= 255;
}
function getAlphaColor(frontColor, backgroundColor) {
var _TinyColor$toRgb = new TinyColor(frontColor).toRgb(),
fR = _TinyColor$toRgb.r,
fG = _TinyColor$toRgb.g,
fB = _TinyColor$toRgb.b,
originAlpha = _TinyColor$toRgb.a;
if (originAlpha < 1) {
return frontColor;
}
var _TinyColor$toRgb2 = new TinyColor(backgroundColor).toRgb(),
bR = _TinyColor$toRgb2.r,
bG = _TinyColor$toRgb2.g,
bB = _TinyColor$toRgb2.b;
for (var fA = 0.01; fA <= 1; fA += 0.01) {
var r = Math.round((fR - bR * (1 - fA)) / fA);
var g = Math.round((fG - bG * (1 - fA)) / fA);
var b = Math.round((fB - bB * (1 - fA)) / fA);
if (isStableColor(r) && isStableColor(g) && isStableColor(b)) return new TinyColor({
r: r,
g: g,
b: b,
a: Math.round(fA * 100) / 100
}).toRgbString();
}
// fallback
/* istanbul ignore next */
return new TinyColor({
r: fR,
g: fG,
b: fB,
a: 1
}).toRgbString();
}
export default getAlphaColor;