UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 22.3 kB
{"version":3,"file":"color.mjs","sources":["../../../../src/_common/js/color-picker/color.ts"],"sourcesContent":["import tinyColor from 'tinycolor2';\nimport { cmykInputToColor, rgb2cmyk } from './cmyk';\nimport {\n parseGradientString, GradientColors, GradientColorPoint, isGradientColor\n} from './gradient';\n\nexport interface ColorObject {\n alpha: number;\n css: string;\n hex: string;\n hex8: string;\n hsl: string;\n hsla: string;\n hsv: string;\n hsva: string;\n rgb: string;\n rgba: string;\n saturation: number;\n value: number;\n isGradient: boolean;\n linearGradient?: string;\n}\n\ninterface ColorStates {\n s: number;\n v: number;\n h: number;\n a: number;\n}\n\ninterface GradientStates {\n colors: GradientColorPoint[];\n degree: number;\n selectedId: string;\n css?: string;\n}\n\nconst mathRound = Math.round;\nconst hsv2rgba = (states: ColorStates): tinyColor.ColorFormats.RGBA => tinyColor(states).toRgb();\nconst hsv2hsva = (states: ColorStates): tinyColor.ColorFormats.HSVA => tinyColor(states).toHsv();\nconst hsv2hsla = (states: ColorStates): tinyColor.ColorFormats.HSLA => tinyColor(states).toHsl();\n\n/**\n * 将渐变对象转换成字符串\n * @param object\n * @returns\n */\nexport const gradientColors2string = (object: GradientColors): string => {\n const { points, degree } = object;\n const colorsStop = points\n .sort((pA, pB) => pA.left - pB.left)\n .map((p) => `${p.color} ${Math.round(p.left * 100) / 100}%`);\n\n return `linear-gradient(${degree}deg,${colorsStop.join(',')})`;\n};\n\n/**\n * 去除颜色的透明度\n * @param color\n * @returns\n */\nexport const getColorWithoutAlpha = (color: string) => tinyColor(color).setAlpha(1).toHexString();\n\n// 生成一个随机ID\nexport const genId = () => (1 + Math.random() * 4294967295).toString(16);\n\n/**\n * 生成一个渐变颜色\n * @param left\n * @param color\n * @returns\n */\nexport const genGradientPoint = (left: number, color: string): GradientColorPoint => ({\n id: genId(),\n left,\n color,\n});\n\nexport class Color {\n states: ColorStates = {\n s: 100,\n v: 100,\n h: 100,\n a: 1,\n };\n\n originColor: string;\n\n isGradient: boolean;\n\n gradientStates: GradientStates = {\n colors: [],\n degree: 0,\n selectedId: null,\n css: '',\n };\n\n constructor(input: string) {\n this.update(input);\n }\n\n update(input: string) {\n if (input === this.originColor) {\n return;\n }\n if (this.isGradient) {\n // 处理gradient模式下切换不同格式时的交互问题\n const colorHsv = tinyColor(input).toHsv();\n this.states = colorHsv;\n this.updateCurrentGradientColor();\n return;\n }\n this.originColor = input;\n this.isGradient = false;\n const gradientColors = parseGradientString(input);\n let colorInput = input;\n if (gradientColors) {\n this.isGradient = true;\n const object = gradientColors as GradientColors;\n const points = object.points.map((c) => genGradientPoint(c.left, c.color));\n this.gradientStates = {\n colors: points,\n degree: object.degree,\n selectedId: points[0]?.id || null,\n };\n this.gradientStates.css = this.linearGradient;\n colorInput = this.gradientSelectedPoint?.color;\n }\n\n this.updateStates(colorInput);\n }\n\n get saturation() {\n return this.states.s;\n }\n\n set saturation(value) {\n this.states.s = Math.max(0, Math.min(100, value));\n this.updateCurrentGradientColor();\n }\n\n get value() {\n return this.states.v;\n }\n\n set value(value) {\n this.states.v = Math.max(0, Math.min(100, value));\n this.updateCurrentGradientColor();\n }\n\n get hue() {\n return this.states.h;\n }\n\n set hue(value) {\n this.states.h = Math.max(0, Math.min(360, value));\n this.updateCurrentGradientColor();\n }\n\n get alpha() {\n return this.states.a;\n }\n\n set alpha(value) {\n this.states.a = Math.max(0, Math.min(1, Math.round(value * 100) / 100));\n this.updateCurrentGradientColor();\n }\n\n get rgb() {\n const { r, g, b } = hsv2rgba(this.states);\n return `rgb(${mathRound(r)}, ${mathRound(g)}, ${mathRound(b)})`;\n }\n\n get rgba() {\n const {\n r, g, b, a\n } = hsv2rgba(this.states);\n return `rgba(${mathRound(r)}, ${mathRound(g)}, ${mathRound(b)}, ${a})`;\n }\n\n get hsv() {\n const { h, s, v } = this.getHsva();\n return `hsv(${h}, ${s}%, ${v}%)`;\n }\n\n get hsva() {\n const {\n h, s, v, a\n } = this.getHsva();\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n }\n\n get hsl() {\n const { h, s, l } = this.getHsla();\n return `hsl(${h}, ${s}%, ${l}%)`;\n }\n\n get hsla() {\n const {\n h, s, l, a\n } = this.getHsla();\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n }\n\n get hex() {\n return tinyColor(this.states).toHexString();\n }\n\n get hex8() {\n return tinyColor(this.states).toHex8String();\n }\n\n get cmyk() {\n const {\n c, m, y, k\n } = this.getCmyk();\n return `cmyk(${c}, ${m}, ${y}, ${k})`;\n }\n\n get css() {\n if (this.isGradient) {\n return this.linearGradient;\n }\n return this.rgba;\n }\n\n get linearGradient() {\n const { gradientColors, gradientDegree } = this;\n return gradientColors2string({\n points: gradientColors,\n degree: gradientDegree,\n });\n }\n\n get gradientColors() {\n return this.gradientStates.colors;\n }\n\n set gradientColors(colors: GradientColorPoint[]) {\n this.gradientStates.colors = colors;\n this.gradientStates.css = this.linearGradient;\n }\n\n get gradientSelectedId() {\n return this.gradientStates.selectedId;\n }\n\n set gradientSelectedId(id: string) {\n if (id === this.gradientSelectedId) {\n return;\n }\n this.gradientStates.selectedId = id;\n this.updateStates(this.gradientSelectedPoint?.color);\n }\n\n get gradientDegree() {\n return this.gradientStates.degree;\n }\n\n set gradientDegree(degree: number) {\n this.gradientStates.degree = Math.max(0, Math.min(360, degree));\n this.gradientStates.css = this.linearGradient;\n }\n\n get gradientSelectedPoint() {\n const { gradientColors, gradientSelectedId } = this;\n return gradientColors.find((color) => color.id === gradientSelectedId);\n }\n\n getFormatsColorMap() {\n return {\n HEX: this.hex,\n CMYK: this.cmyk,\n RGB: this.rgb,\n RGBA: this.rgba,\n HSL: this.hsl,\n HSLA: this.hsla,\n HSV: this.hsv,\n HSVA: this.hsva,\n CSS: this.css,\n };\n }\n\n updateCurrentGradientColor() {\n const { isGradient, gradientColors, gradientSelectedId } = this;\n const { length } = gradientColors;\n const current = this.gradientSelectedPoint;\n if (!isGradient || length === 0 || !current) {\n return false;\n }\n const index = gradientColors.findIndex((color) => color.id === gradientSelectedId);\n const newColor = {\n ...current,\n color: this.rgba,\n };\n gradientColors.splice(index, 1, newColor);\n this.gradientColors = gradientColors;\n return this;\n }\n\n updateStates(input: string) {\n const color = tinyColor(cmykInputToColor(input));\n const hsva = color.toHsv();\n this.states = hsva;\n }\n\n getRgba() {\n const {\n r, g, b, a\n } = hsv2rgba(this.states);\n return {\n r: mathRound(r),\n g: mathRound(g),\n b: mathRound(b),\n a,\n };\n }\n\n getCmyk() {\n const { r, g, b } = this.getRgba();\n const [c, m, y, k] = rgb2cmyk(r, g, b);\n return {\n c: mathRound(c * 100),\n m: mathRound(m * 100),\n y: mathRound(y * 100),\n k: mathRound(k * 100),\n };\n }\n\n getHsva(): tinyColor.ColorFormats.HSVA {\n let {\n h, s, v, a\n } = hsv2hsva(this.states);\n h = mathRound(h);\n s = mathRound(s * 100);\n v = mathRound(v * 100);\n a *= 1;\n return {\n h,\n s,\n v,\n a,\n };\n }\n\n getHsla(): tinyColor.ColorFormats.HSLA {\n let {\n h, s, l, a\n } = hsv2hsla(this.states);\n h = mathRound(h);\n s = mathRound(s * 100);\n l = mathRound(l * 100);\n a *= 1;\n return {\n h,\n s,\n l,\n a,\n };\n }\n\n /**\n * 判断输入色是否与当前色相同\n * @param color\n * @returns\n */\n equals(color: string): boolean {\n return tinyColor.equals(this.rgba, color);\n }\n\n /**\n * 校验输入色是否是一个有效颜色\n * @param color\n * @returns\n */\n static isValid(color: string): boolean {\n if (parseGradientString(color)) {\n return true;\n }\n return tinyColor(color).isValid();\n }\n\n static hsva2color(h: number, s: number, v: number, a: number) {\n return tinyColor({\n h, s, v, a\n }).toHsvString();\n }\n\n static hsla2color(h: number, s: number, l: number, a: number) {\n return tinyColor({\n h, s, l, a\n }).toHslString();\n }\n\n static rgba2color(r: number, g: number, b: number, a: number) {\n return tinyColor({\n r, g, b, a\n }).toHsvString();\n }\n\n static hex2color(hex: string, a: number) {\n const color = tinyColor(hex);\n color.setAlpha(a);\n return color.toHexString();\n }\n\n /**\n * 对象转颜色字符串\n * @param object\n * @param format\n * @returns\n */\n static object2color(object: any, format: string) {\n if (format === 'CMYK') {\n const {\n c, m, y, k\n } = object;\n return `cmyk(${c}, ${m}, ${y}, ${k})`;\n }\n const color = tinyColor(object, {\n format,\n });\n return color.toRgbString();\n }\n\n /**\n * 是否是渐变色\n * @param input\n * @returns\n */\n static isGradientColor = (input: string) => !!isGradientColor(input);\n\n /**\n * 比较两个颜色是否相同\n * @param color1\n * @param color2\n * @returns\n */\n static compare = (color1: string, color2: string): boolean => {\n const isGradientColor1 = Color.isGradientColor(color1);\n const isGradientColor2 = Color.isGradientColor(color2);\n if (isGradientColor1 && isGradientColor2) {\n const gradientColor1 = gradientColors2string(parseGradientString(color1) as GradientColors);\n const gradientColor2 = gradientColors2string(parseGradientString(color2) as GradientColors);\n return gradientColor1 === gradientColor2;\n }\n if (!isGradientColor1 && !isGradientColor2) {\n return tinyColor.equals(color1, color2);\n }\n return false;\n };\n}\n\nconst COLOR_OBJECT_OUTPUT_KEYS = [\n 'alpha',\n 'css',\n 'hex',\n 'hex8',\n 'hsl',\n 'hsla',\n 'hsv',\n 'hsva',\n 'rgb',\n 'rgba',\n 'saturation',\n 'value',\n 'isGradient',\n];\n\n/**\n * 获取对外输出的color对象\n * @param color\n * @returns\n */\nexport const getColorObject = (color: Color): ColorObject => {\n if (!color) {\n return null;\n }\n const colorObject = Object.create(null);\n // eslint-disable-next-line no-return-assign\n COLOR_OBJECT_OUTPUT_KEYS.forEach((key) => (colorObject[key] = color[key]));\n if (color.isGradient) {\n colorObject.linearGradient = color.linearGradient;\n }\n return colorObject;\n};\n\nexport default Color;\n"],"names":["tinyColor","left","color","_classCallCheck","_defineProperty","s","v","h","a","colors","degree","selectedId","css","_createClass","value","set","points","r","g","b","c","m","y","k","l","format","_class","COLOR_OBJECT_OUTPUT_KEYS","colorObject"],"mappings":"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"}