vben-aggregate-core-shared
Version:
vben-aggregate-core-shared package
69 lines (63 loc) • 2.16 kB
JavaScript
;
const tinycolor = require('@ctrl/tinycolor');
const themeColors = require('theme-colors');
function isDarkColor(color) {
return new tinycolor.TinyColor(color).isDark();
}
function isLightColor(color) {
return new tinycolor.TinyColor(color).isLight();
}
function convertToHsl(color) {
const { a, h, l, s } = new tinycolor.TinyColor(color).toHsl();
const hsl = `hsl(${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%)`;
return a < 1 ? `${hsl} ${a}` : hsl;
}
function convertToHslCssVar(color) {
const { a, h, l, s } = new tinycolor.TinyColor(color).toHsl();
const hsl = `${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;
return a < 1 ? `${hsl} / ${a}` : hsl;
}
function convertToRgb(str) {
return new tinycolor.TinyColor(str.replaceAll(/deg|grad|rad|turn/g, "")).toRgbString();
}
function isValidColor(color) {
if (!color) {
return false;
}
return new tinycolor.TinyColor(color).isValid;
}
function generatorColorVariables(colorItems) {
const colorVariables = {};
colorItems.forEach(({ alias, color, name }) => {
if (color) {
const colorsMap = themeColors.getColors(new tinycolor.TinyColor(color).toHexString());
let mainColor = colorsMap["500"];
const colorKeys = Object.keys(colorsMap);
colorKeys.forEach((key) => {
const colorValue = colorsMap[key];
if (colorValue) {
const hslColor = convertToHslCssVar(colorValue);
colorVariables[`--${name}-${key}`] = hslColor;
if (alias) {
colorVariables[`--${alias}-${key}`] = hslColor;
}
if (key === "500") {
mainColor = hslColor;
}
}
});
if (alias && mainColor) {
colorVariables[`--${alias}`] = mainColor;
}
}
});
return colorVariables;
}
exports.TinyColor = tinycolor.TinyColor;
exports.convertToHsl = convertToHsl;
exports.convertToHslCssVar = convertToHslCssVar;
exports.convertToRgb = convertToRgb;
exports.generatorColorVariables = generatorColorVariables;
exports.isDarkColor = isDarkColor;
exports.isLightColor = isLightColor;
exports.isValidColor = isValidColor;