UNPKG

dk-plus

Version:
62 lines (61 loc) 2.98 kB
const r = (t, o, c) => Math.min(c, Math.max(o, t)), m = (t) => Math.round(t), $ = (t) => r(m(t), 0, 255).toString(16).padStart(2, "0").toUpperCase(), C = (t) => { const o = (t.h % 360 + 360) % 360, c = r(t.s, 0, 100) / 100, n = r(t.v, 0, 100) / 100, a = r(t.a, 0, 1), s = n * c, i = s * (1 - Math.abs(o / 60 % 2 - 1)), l = n - s; let e = 0, u = 0, f = 0; return o < 60 ? (e = s, u = i, f = 0) : o < 120 ? (e = i, u = s, f = 0) : o < 180 ? (e = 0, u = s, f = i) : o < 240 ? (e = 0, u = i, f = s) : o < 300 ? (e = i, u = 0, f = s) : (e = s, u = 0, f = i), { r: m((e + l) * 255), g: m((u + l) * 255), b: m((f + l) * 255), a }; }, I = (t) => { const o = r(t.r, 0, 255) / 255, c = r(t.g, 0, 255) / 255, n = r(t.b, 0, 255) / 255, a = r(t.a, 0, 1), s = Math.max(o, c, n), i = Math.min(o, c, n), l = s - i; let e = 0; l !== 0 && (s === o ? e = 60 * ((c - n) / l % 6) : s === c ? e = 60 * ((n - o) / l + 2) : e = 60 * ((o - c) / l + 4)), e < 0 && (e += 360); const u = s === 0 ? 0 : l / s, f = s; return { h: e, s: u * 100, v: f * 100, a }; }, d = (t) => { const o = r(m(t.r), 0, 255), c = r(m(t.g), 0, 255), n = r(m(t.b), 0, 255), a = r(t.a, 0, 1); return `rgba(${o}, ${c}, ${n}, ${Number(a.toFixed(3))})`; }, T = (t) => `#${$(t.r)}${$(t.g)}${$(t.b)}`, F = (t) => { const o = t.trim(), c = /^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.exec(o); if (!c) return null; let n = c[1]; n.length === 3 && (n = n.split("").map((l) => l + l).join("")); const a = parseInt(n.slice(0, 2), 16), s = parseInt(n.slice(2, 4), 16), i = parseInt(n.slice(4, 6), 16); return { r: a, g: s, b: i, a: 1 }; }, H = (t) => { const o = t.trim(), c = /^rgba?\(([^)]+)\)$/.exec(o); if (!c) return null; const n = c[1].split(",").map((e) => e.trim()).filter(Boolean); if (n.length < 3) return null; const a = Number(n[0]), s = Number(n[1]), i = Number(n[2]), l = n.length >= 4 ? Number(n[3]) : 1; return [a, s, i, l].some((e) => Number.isNaN(e)) ? null : { r: r(a, 0, 255), g: r(s, 0, 255), b: r(i, 0, 255), a: r(l, 0, 1) }; }, R = (t) => t ? F(t) || H(t) : null, S = (t, o, c) => { if (o === "hex" && !c) return T(t); if (o === "rgb") { const g = r(m(t.r), 0, 255), M = r(m(t.g), 0, 255), N = r(m(t.b), 0, 255); return c ? d(t) : `rgb(${g}, ${M}, ${N})`; } const n = r(m(t.r), 0, 255) / 255, a = r(m(t.g), 0, 255) / 255, s = r(m(t.b), 0, 255) / 255, i = Math.max(n, a, s), l = Math.min(n, a, s), e = i - l; let u = 0; e !== 0 && (i === n ? u = 60 * ((a - s) / e % 6) : i === a ? u = 60 * ((s - n) / e + 2) : u = 60 * ((n - a) / e + 4)), u < 0 && (u += 360); const f = (i + l) / 2, h = e === 0 ? 0 : e / (1 - Math.abs(2 * f - 1)), b = m(u), p = m(h * 100), x = m(f * 100); return c ? `hsla(${b}, ${p}%, ${x}%, ${Number(r(t.a, 0, 1).toFixed(3))})` : `hsl(${b}, ${p}%, ${x}%)`; }; export { S as formatColor, C as hsvaToRgba, R as parseToRgba, d as rgbaToCss, T as rgbaToHex, I as rgbaToHsva };