UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

129 lines (128 loc) 3.85 kB
import { colorKeywords as d } from "./data.mjs"; const p = (n) => { const t = n.toString(16).toUpperCase(); return t.length == 1 ? "0" + t : t; }, g = (n) => n.length < 0 || n.length > 1 ? "0" : isNaN(Number(n)) ? ["A", "B", "C", "D", "E", "F"].includes(n.toUpperCase()) ? n.toUpperCase() : "0" : n, b = (n) => { if (!n || n.length < 3) return "#000000FF"; let t = n.toUpperCase(); if (t.startsWith("#") && (t = t.substring(1)), t.length < 3) return "#000000FF"; let e, s, r, o; if (e = s = r = "00", o = "FF", t.length === 3) { const a = t.repeat(2).split("").map((i) => g(i)); e = a[0] + a[1], s = a[2] + a[3], r = a[4] + a[5]; } else if (t.length >= 6) { const c = t.split("").map((a) => g(a)); e = c[0] + c[1], s = c[2] + c[3], r = c[4] + c[5], c.length === 8 && (o = c[6] + c[7]); } return `#${e}${s}${r}${o}`; }, f = (n) => { const t = /rgba?\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})(?:,\s*([\d.]+))?\)/, e = n.match(t); if (e) { const s = e[1], r = e[2], o = e[3], c = e[4] || 1; return { r: Number(s), g: Number(r), b: Number(o), a: Number(c) }; } else return { r: 0, g: 0, b: 0, a: 1 }; }, M = (n) => { const t = (c) => c > 255 ? 255 : c < 0 ? 0 : Math.round(c), e = n / 60 * 255, s = t(Math.abs(e - 765) - 255), r = t(510 - Math.abs(e - 510)), o = t(510 - Math.abs(e - 1020)); return { r: s, g: r, b: o }; }, m = (n) => { const { r: t, g: e, b: s } = n, r = p(Math.round(t)), o = p(Math.round(e)), c = p(Math.round(s)); return `#${r}${o}${c}`; }, C = (n) => { const t = (i, l) => { let h = ""; for (let u = 0; u < l; u++) h += i; return h; }, e = (i, l) => { let h = ""; for (const u of i) h += t(u, l); return h; }, s = n.substring(1), r = +("0x" + (s.length < 6 ? e(s, 2) : s)), o = r >> 16, c = r >> 8 & 255, a = r & 255; return { r: o, g: c, b: a }; }, F = ({ r: n, g: t, b: e }) => { n = n / 255, t = t / 255, e = e / 255; const s = Math.max(n, t, e), r = Math.min(n, t, e), o = s - r, c = s, a = s === 0 ? 0 : o / s; let i = 0; if (o !== 0) { switch (s) { case n: i = (t - e) / o + (t < e ? 6 : 0); break; case t: i = (e - n) / o + 2; break; case e: i = (n - t) / o + 4; break; } i = i / 6; } return { h: i * 360, s: a, v: c }; }, k = ({ h: n, s: t, v: e }) => { let s = 0, r = 0, o = 0; t < 0 && (t = 0), t > 1 && (t = 1), e < 0 && (e = 0), e > 1 && (e = 1), n %= 360, n < 0 && (n += 360); const c = n / 60, a = Math.floor(c), i = c - a, l = e * (1 - t), h = e * (1 - t * i), u = e * (1 - t * (1 - i)); switch (a) { case 0: s = e, r = u, o = l; break; case 1: s = h, r = e, o = l; break; case 2: s = l, r = e, o = u; break; case 3: s = l, r = h, o = e; break; case 4: s = u, r = l, o = e; break; case 5: s = e, r = l, o = h; break; } return { r: Math.round(s * 255), g: Math.round(r * 255), b: Math.round(o * 255) }; }, B = (n) => { let t = []; if (t = b(n).slice(1).split(""), n.startsWith("#")) t = b(n).slice(1).split(""); else if (n.startsWith("rgb") || n.startsWith("rgba")) { const h = f(n), u = m(h) + p(Math.round(h.a * 255)); t = b(u).slice(1).split(""); } else { const h = d?.[n] ?? "#000000FF"; t = b(h).slice(1).split(""); } const e = t[0] + t[1], s = t[2] + t[3], r = t[4] + t[5], o = t[6] + t[7], c = parseInt(e, 16), a = parseInt(s, 16), i = parseInt(r, 16), l = parseInt(o, 16) / 255; return { hex: "#" + e + s + r, hexa: "#" + e + s + r + o, r: c, g: a, b: i, a: l }; }; export { C as HEXtoRGB, k as HSVtoRGB, M as HUEtoRGB, m as RGBtoHEX, F as RGBtoHSV, p as componentToHex, B as parseColor };