You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
33 KiB

{"ast":null,"code":"import '../../../../utils/index.mjs';\nimport { hasOwn } from '@vue/shared';\nconst hsv2hsl = function (hue, sat, val) {\n return [hue, sat * val / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue) || 0, hue / 2];\n};\nconst isOnePointZero = function (n) {\n return typeof n === \"string\" && n.includes(\".\") && Number.parseFloat(n) === 1;\n};\nconst isPercentage = function (n) {\n return typeof n === \"string\" && n.includes(\"%\");\n};\nconst bound01 = function (value, max) {\n if (isOnePointZero(value)) value = \"100%\";\n const processPercent = isPercentage(value);\n value = Math.min(max, Math.max(0, Number.parseFloat(`${value}`)));\n if (processPercent) {\n value = Number.parseInt(`${value * max}`, 10) / 100;\n }\n if (Math.abs(value - max) < 1e-6) {\n return 1;\n }\n return value % max / Number.parseFloat(max);\n};\nconst INT_HEX_MAP = {\n 10: \"A\",\n 11: \"B\",\n 12: \"C\",\n 13: \"D\",\n 14: \"E\",\n 15: \"F\"\n};\nconst hexOne = value => {\n value = Math.min(Math.round(value), 255);\n const high = Math.floor(value / 16);\n const low = value % 16;\n return `${INT_HEX_MAP[high] || high}${INT_HEX_MAP[low] || low}`;\n};\nconst toHex = function ({\n r,\n g,\n b\n}) {\n if (Number.isNaN(+r) || Number.isNaN(+g) || Number.isNaN(+b)) return \"\";\n return `#${hexOne(r)}${hexOne(g)}${hexOne(b)}`;\n};\nconst HEX_INT_MAP = {\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15\n};\nconst parseHexChannel = function (hex) {\n if (hex.length === 2) {\n return (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 + (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]);\n }\n return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1];\n};\nconst hsl2hsv = function (hue, sat, light) {\n sat = sat / 100;\n light = light / 100;\n let smin = sat;\n const lmin = Math.max(light, 0.01);\n light *= 2;\n sat *= light <= 1 ? light : 2 - light;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n const v = (light + sat) / 2;\n const sv = light === 0 ? 2 * smin / (lmin + smin) : 2 * sat / (light + sat);\n return {\n h: hue,\n s: sv * 100,\n v: v * 100\n };\n};\nconst rgb2hsv = (r, g, b) => {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h;\n const v = max;\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r:\n {\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n }\n case g:\n {\n h = (b - r) / d + 2;\n break;\n }\n case b:\n {\n h = (r - g) / d + 4;\n break;\n }\n }\n h /= 6;\n }\n return {\n h: h * 360,\n s: s * 100,\n v: v * 100\n };\n};\nconst hsv2rgb = function (h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n const i = Math.floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n const mod = i % 6;\n const r = [v, q, p, p, t, v][mod];\n const g = [t, v, v, q, p, p][mod];\n const b = [p, p, t, v, v, q][mod];\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n};\nclass Color {\n constructor(options = {}) {\n this._hue = 0;\n this._saturation = 100;\n this._value = 100;\n this._alpha = 100;\n this.enableAlpha = false;\n this.format = \"hex\";\n this.value = \"\";\n for (const option in options) {\n if (hasOwn(options, option)) {\n this[option] = options[option];\n }\n }\n if (options.value) {\n this.fromString(options.value);\n } else {\n this.doOnChange();\n }\n }\n set(prop, value) {\n if (arguments.length === 1 && typeof prop === \"object\") {\n for (const p in prop) {\n if (hasOwn(prop, p)) {\n this.set(p, prop[p]);\n }\n }\n return;\n }\n ;\n this[`_${prop}`] = value;\n this.doOnChange();\n }\n get(prop) {\n if (prop === \"alpha\") {\n return Math.floor(this[`_${prop}`]);\n }\n return this[`_${prop}`];\n }\n toRgb() {\n return hsv2rgb(this._hue, this._saturation, this._value);\n }\n fromString(value) {\n if (!value) {\n this._hue = 0;\n this._saturation = 100;\n this._value = 100;\n this.doOnChange();\n return;\n }\n const fromHSV = (h, s, v) => {\n this._hue = Math.max(0, Math.min(360, h));\n this._saturation = Math.max(0, Math.min(100, s));\n this._value = Math.max(0, Math.min(100, v));\n this.doOnChange();\n };\n if (value.includes(\"hsl\")) {\n const parts = value.replace(/hsla|hsl|\\(|\\)/gm, \"\").split(/\\s|,/g).filter(val => val !== \"\").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10));\n if (parts.length === 4) {\n this._alpha = Number.parseFloat(parts[3]) * 100;\n } else if (parts.length === 3) {\n this._alpha = 100;\n }\n if (parts.length >= 3) {\n const {\n h,\n s,\n v\n } = hsl2hsv(parts[0], parts[1], parts[2]);\n fromHSV(h, s, v);\n }\n } else if (value.includes(\"hsv\")) {\n const parts = value.replace(/hsva|hsv|\\(|\\)/gm, \"\").split(/\\s|,/g).filter(val => val !== \"\").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10));\n if (parts.length === 4) {\n this._alpha = Number.parseFloat(parts[3]) * 100;\n } else if (parts.length === 3) {\n this._alpha = 100;\n }\n if (parts.length >= 3) {\n fromHSV(parts[0], parts[1], parts[2]);\n }\n } else if (value.includes(\"rgb\")) {\n const parts = value.replace(/rgba|rgb|\\(|\\)/gm, \"\").split(/\\s|,/g).filter(val => val !== \"\").map((val, index) => index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10));\n if (parts.length === 4) {\n this._alpha = Number.parseFloat(parts[3]) * 100;\n } else if (parts.length === 3) {\n this._alpha = 100;\n }\n if (parts.length >= 3) {\n const {\n h,\n s,\n v\n } = rgb2hsv(parts[0], parts[1], parts[2]);\n fromHSV(h, s, v);\n }\n } else if (value.includes(\"#\")) {\n const hex = value.replace(\"#\", \"\").trim();\n if (!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(hex)) return;\n let r, g, b;\n if (hex.length === 3) {\n r = parseHexChannel(hex[0] + hex[0]);\n g = parseHexChannel(hex[1] + hex[1]);\n b = parseHexChannel(hex[2] + hex[2]);\n } else if (hex.length === 6 || hex.length === 8) {\n r = parseHexChannel(hex.slice(0, 2));\n g = parseHexChannel(hex.slice(2, 4));\n b = parseHexChannel(hex.slice(4, 6));\n }\n if (hex.length === 8) {\n this._alpha = parseHexChannel(hex.slice(6)) / 255 * 100;\n } else if (hex.length === 3 || hex.length === 6) {\n this._alpha = 100;\n }\n const {\n h,\n s,\n v\n } = rgb2hsv(r, g, b);\n fromHSV(h, s, v);\n }\n }\n compare(color) {\n return Math.abs(color._hue - this._hue) < 2 && Math.abs(color._saturation - this._saturation) < 1 && Math.abs(color._value - this._value) < 1 && Math.abs(color._alpha - this._alpha) < 1;\n }\n doOnChange() {\n const {\n _hue,\n _saturation,\n _value,\n _alpha,\n format\n } = this;\n if (this.enableAlpha) {\n switch (format) {\n case \"hsl\":\n {\n const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);\n this.value = `hsla(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(hsl[2] * 100)}%, ${this.get(\"alpha\") / 100})`;\n break;\n }\n case \"hsv\":\n {\n this.value = `hsva(${_hue}, ${Math.round(_saturation)}%, ${Math.round(_value)}%, ${this.get(\"alpha\") / 100})`;\n break;\n }\n case \"hex\":\n {\n this.value = `${toHex(hsv2rgb(_hue, _saturation, _value))}${hexOne(_alpha * 255 / 100)}`;\n break;\n }\n default:\n {\n const {\n r,\n g,\n b\n } = hsv2rgb(_hue, _saturation, _value);\n this.value = `rgba(${r}, ${g}, ${b}, ${this.get(\"alpha\") / 100})`;\n }\n }\n } else {\n switch (format) {\n case \"hsl\":\n {\n const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100);\n this.value = `hsl(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(hsl[2] * 100)}%)`;\n break;\n }\n case \"hsv\":\n {\n this.value = `hsv(${_hue}, ${Math.round(_saturation)}%, ${Math.round(_value)}%)`;\n break;\n }\n case \"rgb\":\n {\n const {\n r,\n g,\n b\n } = hsv2rgb(_hue, _saturation, _value);\n this.value = `rgb(${r}, ${g}, ${b})`;\n break;\n }\n default:\n {\n this.value = toHex(hsv2rgb(_hue, _saturation, _value));\n }\n }\n }\n }\n}\nexport { Color as default };","map":{"version":3,"names":["hsv2hsl","hue","sat","val","isOnePointZero","n","includes","Number","parseFloat","isPercentage","bound01","value","max","processPercent","Math","min","parseInt","abs","INT_HEX_MAP","hexOne","round","high","floor","low","toHex","r","g","b","isNaN","HEX_INT_MAP","A","B","C","D","E","F","parseHexChannel","hex","length","toUpperCase","hsl2hsv","light","smin","lmin","v","sv","h","s","rgb2hsv","d","hsv2rgb","i","f","p","q","t","mod","Color","constructor","options","_hue","_saturation","_value","_alpha","enableAlpha","format","option","hasOwn","fromString","doOnChange","set","prop","arguments","get","toRgb","fromHSV","parts","replace","split","filter","map","index","trim","test","slice","compare","color","hsl"],"sources":["../../../../../../../packages/components/color-picker/src/utils/color.ts"],"sourcesContent":["import { hasOwn } from '@element-plus/utils'\n\nconst hsv2hsl = function (hue: number, sat: number, val: number) {\n return [\n hue,\n (sat * val) / ((hue = (2 - sat) * val) < 1 ? hue : 2 - hue) || 0,\n hue / 2,\n ]\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nconst isOnePointZero = function (n: unknown) {\n return typeof n === 'string' && n.includes('.') && Number.parseFloat(n) === 1\n}\n\nconst isPercentage = function (n: unknown) {\n return typeof n === 'string' && n.includes('%')\n}\n\n// Take input from [0, n] and return it as [0, 1]\nconst bound01 = function (value: number | string, max: number | string) {\n if (isOnePointZero(value)) value = '100%'\n\n const processPercent = isPercentage(value)\n value = Math.min(max as number, Math.max(0, Number.parseFloat(`${value}`)))\n\n // Automatically convert percentage into number\n if (processPercent) {\n value = Number.parseInt(`${value * (max as number)}`, 10) / 100\n }\n\n // Handle floating point rounding errors\n if (Math.abs(value - (max as number)) < 0.000001) {\n return 1\n }\n\n // Convert into [0, 1] range if it isn't already\n return (value % (max as number)) / Number.parseFloat(max as string)\n}\n\nconst INT_HEX_MAP: Record<string, string> = {\n 10: 'A',\n 11: 'B',\n 12: 'C',\n 13: 'D',\n 14: 'E',\n 15: 'F',\n}\n\nconst hexOne = (value: number) => {\n value = Math.min(Math.round(value), 255)\n const high = Math.floor(value / 16)\n const low = value % 16\n return `${INT_HEX_MAP[high] || high}${INT_HEX_MAP[low] || low}`\n}\n\nconst toHex = function ({ r, g, b }: { r: number; g: number; b: number }) {\n if (Number.isNaN(+r) || Number.isNaN(+g) || Number.isNaN(+b)) return ''\n return `#${hexOne(r)}${hexOne(g)}${hexOne(b)}`\n}\n\nconst HEX_INT_MAP: Record<string, number> = {\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n}\n\nconst parseHexChannel = function (hex: string) {\n if (hex.length === 2) {\n return (\n (HEX_INT_MAP[hex[0].toUpperCase()] || +hex[0]) * 16 +\n (HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1])\n )\n }\n\n return HEX_INT_MAP[hex[1].toUpperCase()] || +hex[1]\n}\n\nconst hsl2hsv = function (hue: number, sat: number, light: number) {\n sat = sat / 100\n light = light / 100\n let smin = sat\n const lmin = Math.max(light, 0.01)\n // let sv\n // let v\n\n light *= 2\n sat *= light <= 1 ? light : 2 - light\n smin *= lmin <= 1 ? lmin : 2 - lmin\n const v = (light + sat) / 2\n const sv =\n light === 0 ? (2 * smin) / (lmin + smin) : (2 * sat) / (light + sat)\n\n return {\n h: hue,\n s: sv * 100,\n v: v * 100,\n }\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nconst rgb2hsv = (r: number, g: number, b: number) => {\n r = bound01(r, 255)\n g = bound01(g, 255)\n b = bound01(b, 255)\n\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n let h: number\n const v = max\n\n const d = max - min\n const s = max === 0 ? 0 : d / max\n\n if (max === min) {\n h = 0 // achromatic\n } else {\n switch (max) {\n case r: {\n h = (g - b) / d + (g < b ? 6 : 0)\n break\n }\n case g: {\n h = (b - r) / d + 2\n break\n }\n case b: {\n h = (r - g) / d + 4\n break\n }\n }\n h! /= 6\n }\n\n return { h: h! * 360, s: s * 100, v: v * 100 }\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nconst hsv2rgb = function (h: number, s: number, v: number) {\n h = bound01(h, 360) * 6\n s = bound01(s, 100)\n v = bound01(v, 100)\n\n const i = Math.floor(h)\n const f = h - i\n const p = v * (1 - s)\n const q = v * (1 - f * s)\n const t = v * (1 - (1 - f) * s)\n const mod = i % 6\n const r = [v, q, p, p, t, v][mod]\n const g = [t, v, v, q, p, p][mod]\n const b = [p, p, t, v, v, q][mod]\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255),\n }\n}\n\ninterface ColorOptions {\n enableAlpha: boolean\n format: string\n value?: string\n}\n\nexport default class Color {\n private _hue = 0\n private _saturation = 100\n private _value = 100\n _alpha = 100\n public enableAlpha = false\n public format = 'hex'\n public value = ''\n public selected?: boolean\n\n constructor(options: Partial<ColorOptions> = {}) {\n for (const option in options) {\n if (hasOwn(options, option)) {\n this[option] = options[option]\n }\n }\n if (options.value) {\n this.fromString(options.value)\n } else {\n this.doOnChange()\n }\n }\n\n set(prop: { [key: string]: any } | any, value?: number) {\n if (arguments.length === 1 && typeof prop === 'object') {\n for (const p in prop) {\n if (hasOwn(prop, p)) {\n this.set(p, prop[p])\n }\n }\n\n return\n }\n\n ;(this as any)[`_${prop}`] = value\n this.doOnChange()\n }\n\n get(prop: string) {\n if (prop === 'alpha') {\n return Math.floor(this[`_${prop}`])\n }\n return (this as any)[`_${prop}`]\n }\n\n toRgb() {\n return hsv2rgb(this._hue, this._saturation, this._value)\n }\n\n fromString(value: string) {\n if (!value) {\n this._hue = 0\n this._saturation = 100\n this._value = 100\n\n this.doOnChange()\n return\n }\n\n const fromHSV = (h: number, s: number, v: number) => {\n this._hue = Math.max(0, Math.min(360, h))\n this._saturation = Math.max(0, Math.min(100, s))\n this._value = Math.max(0, Math.min(100, v))\n\n this.doOnChange()\n }\n\n if (value.includes('hsl')) {\n const parts = value\n .replace(/hsla|hsl|\\(|\\)/gm, '')\n .split(/\\s|,/g)\n .filter((val) => val !== '')\n .map((val, index) =>\n index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10)\n )\n\n if (parts.length === 4) {\n // @ts-expect-error\n this._alpha = Number.parseFloat(parts[3]) * 100\n } else if (parts.length === 3) {\n this._alpha = 100\n }\n if (parts.length >= 3) {\n const { h, s, v } = hsl2hsv(parts[0], parts[1], parts[2])\n fromHSV(h, s, v)\n }\n } else if (value.includes('hsv')) {\n const parts = value\n .replace(/hsva|hsv|\\(|\\)/gm, '')\n .split(/\\s|,/g)\n .filter((val) => val !== '')\n .map((val, index) =>\n index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10)\n )\n\n if (parts.length === 4) {\n // @ts-expect-error\n this._alpha = Number.parseFloat(parts[3]) * 100\n } else if (parts.length === 3) {\n this._alpha = 100\n }\n if (parts.length >= 3) {\n fromHSV(parts[0], parts[1], parts[2])\n }\n } else if (value.includes('rgb')) {\n const parts = value\n .replace(/rgba|rgb|\\(|\\)/gm, '')\n .split(/\\s|,/g)\n .filter((val) => val !== '')\n .map((val, index) =>\n index > 2 ? Number.parseFloat(val) : Number.parseInt(val, 10)\n )\n\n if (parts.length === 4) {\n // @ts-expect-error\n this._alpha = Number.parseFloat(parts[3]) * 100\n } else if (parts.length === 3) {\n this._alpha = 100\n }\n if (parts.length >= 3) {\n const { h, s, v } = rgb2hsv(parts[0], parts[1], parts[2])\n fromHSV(h, s, v)\n }\n } else if (value.includes('#')) {\n const hex = value.replace('#', '').trim()\n if (!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(hex))\n return\n let r: number, g: number, b: number\n\n if (hex.length === 3) {\n r = parseHexChannel(hex[0] + hex[0])\n g = parseHexChannel(hex[1] + hex[1])\n b = parseHexChannel(hex[2] + hex[2])\n } else if (hex.length === 6 || hex.length === 8) {\n r = parseHexChannel(hex.slice(0, 2))\n g = parseHexChannel(hex.slice(2, 4))\n b = parseHexChannel(hex.slice(4, 6))\n }\n\n if (hex.length === 8) {\n this._alpha = (parseHexChannel(hex.slice(6)) / 255) * 100\n } else if (hex.length === 3 || hex.length === 6) {\n this._alpha = 100\n }\n\n const { h, s, v } = rgb2hsv(r!, g!, b!)\n fromHSV(h, s, v)\n }\n }\n\n compare(color: this) {\n return (\n Math.abs(color._hue - this._hue) < 2 &&\n Math.abs(color._saturation - this._saturation) < 1 &&\n Math.abs(color._value - this._value) < 1 &&\n Math.abs(color._alpha - this._alpha) < 1\n )\n }\n\n doOnChange() {\n const { _hue, _saturation, _value, _alpha, format } = this\n\n if (this.enableAlpha) {\n switch (format) {\n case 'hsl': {\n const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100)\n this.value = `hsla(${_hue}, ${Math.round(\n hsl[1] * 100\n )}%, ${Math.round(hsl[2] * 100)}%, ${this.get('alpha') / 100})`\n break\n }\n case 'hsv': {\n this.value = `hsva(${_hue}, ${Math.round(_saturation)}%, ${Math.round(\n _value\n )}%, ${this.get('alpha') / 100})`\n break\n }\n case 'hex': {\n this.value = `${toHex(hsv2rgb(_hue, _saturation, _value))}${hexOne(\n (_alpha * 255) / 100\n )}`\n break\n }\n default: {\n const { r, g, b } = hsv2rgb(_hue, _saturation, _value)\n this.value = `rgba(${r}, ${g}, ${b}, ${this.get('alpha') / 100})`\n }\n }\n } else {\n switch (format) {\n case 'hsl': {\n const hsl = hsv2hsl(_hue, _saturation / 100, _value / 100)\n this.value = `hsl(${_hue}, ${Math.round(hsl[1] * 100)}%, ${Math.round(\n hsl[2] * 100\n )}%)`\n break\n }\n case 'hsv': {\n this.value = `hsv(${_hue}, ${Math.round(_saturation)}%, ${Math.round(\n _value\n )}%)`\n break\n }\n case 'rgb': {\n const { r, g, b } = hsv2rgb(_hue, _saturation, _value)\n this.value = `rgb(${r}, ${g}, ${b})`\n break\n }\n default: {\n this.value = toHex(hsv2rgb(_hue, _saturation, _value))\n }\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}