This commit is contained in:
dap
2024-08-07 13:34:24 +08:00
10 changed files with 83 additions and 16 deletions

View File

@@ -40,5 +40,34 @@ function isValidColor(color?: string) {
}
return new TinyColor(color).isValid;
}
/**
* 将HLS字符串转换为RGB颜色字符串
*
* 本函数接收一个表示HLS值的字符串移除其中的度量单位
* 并将其转换为TinyColor对象以便进行颜色处理。
* 如果转换后的颜色无效,则直接返回原始字符串;
* 否则返回转换后的RGB颜色字符串
*
* @param str 表示HLS颜色值的字符串可能包含度量单位如'deg'、'grad'、'rad'或'turn'
* @returns 如果颜色值有效则返回对应的RGB颜色字符串如果无效则返回原始字符串
*/
function hlsStringToRGBString(str: string): string {
// 移除HLS字符串中的度量单位以便正确解析
const color = new TinyColor(
`hsl(${str.replaceAll(/deg|grad|rad|turn/g, '')})`,
);
// 检查颜色是否有效,如果无效则直接返回原始字符串
if (!color.isValid) {
return str;
}
// 返回转换后的RGB颜色字符串
return color.toRgbString();
}
export { convertToHsl, convertToHslCssVar, isValidColor, TinyColor };
export {
convertToHsl,
convertToHslCssVar,
hlsStringToRGBString,
isValidColor,
TinyColor,
};