forked from rDrama/rDrama
81 lines
1.9 KiB
JavaScript
81 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.toRgba = toRgba;
|
|
exports.toHsla = toHsla;
|
|
exports.withAlphaValue = withAlphaValue;
|
|
exports.default = withAlphaVariable;
|
|
|
|
var _color = _interopRequireDefault(require("color"));
|
|
|
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function hasAlpha(color) {
|
|
return color.startsWith('rgba(') || color.startsWith('hsla(') || color.startsWith('#') && color.length === 9 || color.startsWith('#') && color.length === 5;
|
|
}
|
|
|
|
function toRgba(color) {
|
|
const [r, g, b, a] = (0, _color.default)(color).rgb().array();
|
|
return [r, g, b, a === undefined && hasAlpha(color) ? 1 : a];
|
|
}
|
|
|
|
function toHsla(color) {
|
|
const [h, s, l, a] = (0, _color.default)(color).hsl().array();
|
|
return [h, `${s}%`, `${l}%`, a === undefined && hasAlpha(color) ? 1 : a];
|
|
}
|
|
|
|
function withAlphaValue(color, alphaValue, defaultValue) {
|
|
if (_lodash.default.isFunction(color)) {
|
|
return color({
|
|
opacityValue: alphaValue
|
|
});
|
|
}
|
|
|
|
try {
|
|
const isHSL = color.startsWith('hsl');
|
|
const [i, j, k] = isHSL ? toHsla(color) : toRgba(color);
|
|
return `${isHSL ? 'hsla' : 'rgba'}(${i}, ${j}, ${k}, ${alphaValue})`;
|
|
} catch {
|
|
return defaultValue;
|
|
}
|
|
}
|
|
|
|
function withAlphaVariable({
|
|
color,
|
|
property,
|
|
variable
|
|
}) {
|
|
if (_lodash.default.isFunction(color)) {
|
|
return {
|
|
[variable]: '1',
|
|
[property]: color({
|
|
opacityVariable: variable,
|
|
opacityValue: `var(${variable})`
|
|
})
|
|
};
|
|
}
|
|
|
|
try {
|
|
const isHSL = color.startsWith('hsl');
|
|
const [i, j, k, a] = isHSL ? toHsla(color) : toRgba(color);
|
|
|
|
if (a !== undefined) {
|
|
return {
|
|
[property]: color
|
|
};
|
|
}
|
|
|
|
return {
|
|
[variable]: '1',
|
|
[property]: `${isHSL ? 'hsla' : 'rgba'}(${i}, ${j}, ${k}, var(${variable}))`
|
|
};
|
|
} catch (error) {
|
|
return {
|
|
[property]: color
|
|
};
|
|
}
|
|
} |