UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

161 lines (158 loc) 3.77 kB
import { parseHexChannel } from './helper.mjs'; import { rgb2hsv, hsl2hsv } from './transform.mjs'; function commonParseRGBOrHSL(_a) { var value = _a.value, _b = _a.reg, reg = _b === void 0 ? /hsla|hsl|\(|\)/gm : _b, _c = _a.transformFunc, transformFunc = _c === void 0 ? hsl2hsv : _c; var alpha = 100; var h = 0; var s = 100; var v = 100; var parts = value.replace(reg, '').split(/\s|,/g).filter(function (val) { return val !== ''; }).map(function (val, index) { return index > 2 ? parseFloat(val) : parseInt(val, 10); }); if (parts.length === 4) { alpha = Math.floor(parseFloat("".concat(parts[3])) * 100); } else if (parts.length === 3) { alpha = 100; } if (parts.length >= 3) { var res = transformFunc(parts[0], parts[1], parts[2]); h = res.h; s = res.s; v = res.v; // fromHSV(h, s, v); } return { h: h, s: s, v: v, alpha: alpha }; } function parseHSLString(value) { return commonParseRGBOrHSL({ value: value, reg: /hsla|hsl|\(|\)/gm, transformFunc: hsl2hsv }); } function parseHSVString(value) { var h = 0; var s = 100; var v = 100; var alpha = 100; var parts = value.replace(/hsva|hsv|\(|\)/gm, '').split(/\s|,/g).filter(function (val) { return val !== ''; }).map(function (val, index) { return index > 2 ? parseFloat(val) : parseInt(val, 10); }); if (parts.length === 4) { alpha = Math.floor(parseFloat("".concat(parts[3])) * 100); } else if (parts.length === 3) { alpha = 100; } h = parts[0]; s = parts[1]; v = parts[2]; return { h: h, s: s, v: v, alpha: alpha }; } function parseRGBBracket(value) { return commonParseRGBOrHSL({ value: value, reg: /rgba|rgb|\(|\)/gm, transformFunc: rgb2hsv }); } function parseRGBHex(value) { var hex = value.replace('#', '').trim(); var r = 0; var g = 0; var b = 0; var alpha = 0; if (!/^(?:[0-9a-fA-F]{3}){1,2}|[0-9a-fA-F]{8}$/.test(hex)) { return { r: r, g: g, b: b, alpha: alpha }; } if (hex.length === 3) { r = parseHexChannel(hex[0] + hex[0]); g = parseHexChannel(hex[1] + hex[1]); b = parseHexChannel(hex[2] + hex[2]); } else if (hex.length === 6 || hex.length === 8) { r = parseHexChannel(hex.substring(0, 2)); g = parseHexChannel(hex.substring(2, 4)); b = parseHexChannel(hex.substring(4, 6)); } if (hex.length === 8) { alpha = Math.floor(parseHexChannel(hex.substring(6)) / 255 * 100); } else if (hex.length === 3 || hex.length === 6) { alpha = 100; } return { r: r, g: g, b: b, alpha: alpha }; } function parseColorToHSV(value) { var alpha = 100; var h = 0; var s = 100; var v = 100; var fromHSV = function fromHSV(_h, _s, _v) { h = Math.max(0, Math.min(360, _h)); s = Math.max(0, Math.min(100, _s)); v = Math.max(0, Math.min(100, _v)); }; if (value.indexOf('hsl') !== -1) { var res = parseHSLString(value); h = res.h; s = res.s; v = res.v; alpha = res.alpha; } else if (value.indexOf('hsv') !== -1) { var res = parseHSVString(value); h = res.h; s = res.s; v = res.v; alpha = res.alpha; } else if (value.indexOf('rgb') !== -1) { var res = parseRGBBracket(value); h = res.h; s = res.s; v = res.v; alpha = res.alpha; } else if (value.indexOf('#') !== -1) { var rgb = parseRGBHex(value); var r = rgb.r, g = rgb.g, b = rgb.b; alpha = rgb.alpha; var res = rgb2hsv(r, g, b); h = res.h; s = res.s; v = res.v; } fromHSV(h, s, v); return { h: h, s: s, v: v, alpha: alpha }; } export { parseColorToHSV, parseHSLString, parseHSVString, parseRGBBracket, parseRGBHex };