Browse Source
* refactor: Use @ant-design/fast-color instead * fix: test failed * chore: remove isValidColor All FastColor objects are valid. So isValid is always true. FastColor("not-a-color") -> `#000000` * refactor: rename directory `colorful` to `color` * fix: ci failpull/4072/head
committed by
GitHub
13 changed files with 878 additions and 1087 deletions
@ -0,0 +1,38 @@ |
|||
import { FastColor } from '@ant-design/fast-color'; |
|||
|
|||
const Color = FastColor; |
|||
|
|||
/** |
|||
* 将颜色转换为HSL格式。 |
|||
* |
|||
* HSL是一种颜色模型,包括色相(Hue)、饱和度(Saturation)和亮度(Lightness)三个部分。 |
|||
* |
|||
* @param {string} color 输入的颜色。 |
|||
* @returns {string} HSL格式的颜色字符串。 |
|||
*/ |
|||
function convertToHsl(color: string): string { |
|||
const { a, h, l, s } = new Color(color).toHsl(); |
|||
const hsl = `hsl(${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%)`; |
|||
return a < 1 ? `${hsl} ${a}` : hsl; |
|||
} |
|||
|
|||
/** |
|||
* 将颜色转换为HSL CSS变量。 |
|||
* |
|||
* 这个函数与convertToHsl函数类似,但是返回的字符串格式稍有不同, |
|||
* 以便可以作为CSS变量使用。 |
|||
* |
|||
* @param {string} color 输入的颜色。 |
|||
* @returns {string} 可以作为CSS变量使用的HSL格式的颜色字符串。 |
|||
*/ |
|||
function convertToHslCssVar(color: string): string { |
|||
const { a, h, l, s } = new Color(color).toHsl(); |
|||
const hsl = `${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`; |
|||
return a < 1 ? `${hsl} / ${a}` : hsl; |
|||
} |
|||
|
|||
function convertToRgb(color: string): string { |
|||
return new Color(color).toRgbString(); |
|||
} |
|||
|
|||
export { Color, convertToHsl, convertToHslCssVar, convertToRgb }; |
|||
@ -1,73 +0,0 @@ |
|||
import { TinyColor } from '@ctrl/tinycolor'; |
|||
/** |
|||
* 将颜色转换为HSL格式。 |
|||
* |
|||
* HSL是一种颜色模型,包括色相(Hue)、饱和度(Saturation)和亮度(Lightness)三个部分。 |
|||
* 这个函数使用TinyColor库将输入的颜色转换为HSL格式,并返回一个字符串。 |
|||
* |
|||
* @param {string} color 输入的颜色,可以是任何TinyColor支持的颜色格式。 |
|||
* @returns {string} HSL格式的颜色字符串。 |
|||
*/ |
|||
function convertToHsl(color: string): string { |
|||
const { a, h, l, s } = new TinyColor(color).toHsl(); |
|||
const hsl = `hsl(${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%)`; |
|||
return a < 1 ? `${hsl} ${a}` : hsl; |
|||
} |
|||
|
|||
/** |
|||
* 将颜色转换为HSL CSS变量。 |
|||
* |
|||
* 这个函数与convertToHsl函数类似,但是返回的字符串格式稍有不同, |
|||
* 以便可以作为CSS变量使用。 |
|||
* |
|||
* @param {string} color 输入的颜色,可以是任何TinyColor支持的颜色格式。 |
|||
* @returns {string} 可以作为CSS变量使用的HSL格式的颜色字符串。 |
|||
*/ |
|||
function convertToHslCssVar(color: string): string { |
|||
const { a, h, l, s } = new TinyColor(color).toHsl(); |
|||
const hsl = `${Math.round(h)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`; |
|||
return a < 1 ? `${hsl} / ${a}` : hsl; |
|||
} |
|||
|
|||
/** |
|||
* 检查颜色是否有效 |
|||
* @param {string} color - 待检查的颜色 |
|||
* 如果颜色有效返回true,否则返回false |
|||
*/ |
|||
function isValidColor(color?: string) { |
|||
if (!color) { |
|||
return false; |
|||
} |
|||
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, |
|||
hlsStringToRGBString, |
|||
isValidColor, |
|||
TinyColor, |
|||
}; |
|||
@ -1,4 +1,4 @@ |
|||
export * from './cache'; |
|||
export * from './colorful'; |
|||
export * from './color'; |
|||
export * from './constants'; |
|||
export * from './utils'; |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
export * from './helpers'; |
|||
export * from '@vben-core/shared/colorful'; |
|||
export * from '@vben-core/shared/color'; |
|||
export * from '@vben-core/shared/utils'; |
|||
|
|||
File diff suppressed because it is too large
Loading…
Reference in new issue