UNPKG

@nauverse/color-to-hsla

Version:

🧪 A tiny URL builder library for TypeScript.

252 lines (251 loc) • 7.63 kB
const x = /^#([0-9a-f]{3})$/, F = /^#([0-9a-f]{6})$/, m = /^rgb\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*\)$/, R = /^rgb\(\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*\)$/, I = /^rgba\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?[\d\.]+)\s*\)$/, M = /^rgba\(\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?[\d\.]+)\s*\)$/, $ = /^hsl\(\s*([-+]?\d+(?:\.\d+)?)\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*\)$/, H = /^hsla\(\s*([-+]?\d+(?:\.\d+)?)\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?\d+(?:\.\d+)?)%\s*,\s*([-+]?[\d\.]+)\s*\)$/, b = { aliceblue: 15792383, antiquewhite: 16444375, aqua: 65535, aquamarine: 8388564, azure: 15794175, beige: 16119260, bisque: 16770244, black: 0, blanchedalmond: 16772045, blue: 255, blueviolet: 9055202, brown: 10824234, burlywood: 14596231, cadetblue: 6266528, chartreuse: 8388352, chocolate: 13789470, coral: 16744272, cornflowerblue: 6591981, cornsilk: 16775388, crimson: 14423100, cyan: 65535, darkblue: 139, darkcyan: 35723, darkgoldenrod: 12092939, darkgray: 11119017, darkgreen: 25600, darkgrey: 11119017, darkkhaki: 12433259, darkmagenta: 9109643, darkolivegreen: 5597999, darkorange: 16747520, darkorchid: 10040012, darkred: 9109504, darksalmon: 15308410, darkseagreen: 9419919, darkslateblue: 4734347, darkslategray: 3100495, darkslategrey: 3100495, darkturquoise: 52945, darkviolet: 9699539, deeppink: 16716947, deepskyblue: 49151, dimgray: 6908265, dimgrey: 6908265, dodgerblue: 2003199, firebrick: 11674146, floralwhite: 16775920, forestgreen: 2263842, fuchsia: 16711935, gainsboro: 14474460, ghostwhite: 16316671, gold: 16766720, goldenrod: 14329120, gray: 8421504, green: 32768, greenyellow: 11403055, grey: 8421504, honeydew: 15794160, hotpink: 16738740, indianred: 13458524, indigo: 4915330, ivory: 16777200, khaki: 15787660, lavender: 15132410, lavenderblush: 16773365, lawngreen: 8190976, lemonchiffon: 16775885, lightblue: 11393254, lightcoral: 15761536, lightcyan: 14745599, lightgoldenrodyellow: 16448210, lightgray: 13882323, lightgreen: 9498256, lightgrey: 13882323, lightpink: 16758465, lightsalmon: 16752762, lightseagreen: 2142890, lightskyblue: 8900346, lightslategray: 7833753, lightslategrey: 7833753, lightsteelblue: 11584734, lightyellow: 16777184, lime: 65280, limegreen: 3329330, linen: 16445670, magenta: 16711935, maroon: 8388608, mediumaquamarine: 6737322, mediumblue: 205, mediumorchid: 12211667, mediumpurple: 9662683, mediumseagreen: 3978097, mediumslateblue: 8087790, mediumspringgreen: 64154, mediumturquoise: 4772300, mediumvioletred: 13047173, midnightblue: 1644912, mintcream: 16121850, mistyrose: 16770273, moccasin: 16770229, navajowhite: 16768685, navy: 128, oldlace: 16643558, olive: 8421376, olivedrab: 7048739, orange: 16753920, orangered: 16729344, orchid: 14315734, palegoldenrod: 15657130, palegreen: 10025880, paleturquoise: 11529966, palevioletred: 14381203, papayawhip: 16773077, peachpuff: 16767673, peru: 13468991, pink: 16761035, plum: 14524637, powderblue: 11591910, purple: 8388736, rebeccapurple: 6697881, red: 16711680, rosybrown: 12357519, royalblue: 4286945, saddlebrown: 9127187, salmon: 16416882, sandybrown: 16032864, seagreen: 3050327, seashell: 16774638, sienna: 10506797, silver: 12632256, skyblue: 8900331, slateblue: 6970061, slategray: 7372944, slategrey: 7372944, snow: 16775930, springgreen: 65407, steelblue: 4620980, tan: 13808780, teal: 32896, thistle: 14204888, tomato: 16737095, turquoise: 4251856, violet: 15631086, wheat: 16113331, white: 16777215, whitesmoke: 16119285, yellow: 16776960, yellowgreen: 10145074 }, y = { h: 0, s: 0, l: 0, a: 0 }; function q(e) { if (typeof e == "string") return f(e); if (typeof e != "object") throw new Error("Must pass string or object"); const s = e.a == null ? 1 : e.a; if (k(e, "hsl")) return p((e == null ? void 0 : e.h) ?? 0, (e == null ? void 0 : e.s) ?? 0, (e == null ? void 0 : e.l) ?? 0, s); if (k(e, "rgb")) return h((e == null ? void 0 : e.r) ?? 0, (e == null ? void 0 : e.g) ?? 0, (e == null ? void 0 : e.b) ?? 0, s); throw new Error("Could not parse argument"); } function k(e, s) { const r = s.split(""); let o = !1; for (let i = 0; i < r.length; i++) { const a = r[i]; if (typeof a < "u" && a in e) o = !0; else if (typeof a > "u" && o) throw new Error('Missing key "' + a + '" in color type ' + s); } return o; } function f(e) { try { e = `${e}`.trim().toLowerCase(); const s = $.exec(e); if (s) { const n = s.length >= 2 ? Math.round(parseInt(s[1] ?? "0", 10)) : 0, l = s.length >= 3 ? parseFloat(s[2] ?? "0") : 0, t = s.length >= 4 ? parseFloat(s[3] ?? "0") : 0; return p(n, l / 100, t / 100, 1); } const r = H.exec(e); if (r) { const n = r.length >= 2 ? Math.round(parseInt(r[1] ?? "0", 10)) : 0, l = r.length >= 3 ? parseFloat(r[2] ?? "0") : 0, t = r.length >= 4 ? parseFloat(r[3] ?? "0") : 0, c = r.length >= 5 ? parseFloat(r[4] ?? "0") : 0; return p(n, l / 100, t / 100, c); } const o = x.exec(e); if (o) { const n = parseInt(o[1] ?? "0", 16); return h( n >> 8 & 15 | n >> 4 & 240, n >> 4 & 15 | n & 240, (n & 15) << 4 | n & 15, 1 ); } const i = F.exec(e); if (i) { const n = parseInt(i[1] ?? "0", 16); return v(n); } const a = m.exec(e); if (a) { const n = parseInt(a[1] ?? "0", 10), l = parseInt(a[2] ?? "0", 10), t = parseInt(a[3] ?? "0", 10); return h(n, l, t, 1); } const d = R.exec(e); if (d) { const n = parseFloat(d[1] ?? "0") * 255 / 100, l = parseFloat(d[2] ?? "0") * 255 / 100, t = parseFloat(d[3] ?? "0") * 255 / 100; return h(n, l, t, 1); } const g = I.exec(e); if (g) { const n = parseInt(g[1] ?? "0", 10), l = parseInt(g[2] ?? "0", 10), t = parseInt(g[3] ?? "0", 10), c = parseFloat(g[4] ?? "0"); return w(n, l, t, c); } const u = M.exec(e); if (u) { const n = parseFloat(u[1] ?? "0") * 255 / 100, l = parseFloat(u[2] ?? "0") * 255 / 100, t = parseFloat(u[3] ?? "0") * 255 / 100, c = parseFloat(u[4] ?? "0"); return w(n, l, t, c); } return b[e] ? v(b[e]) : e === "transparent" ? h(0, 0, 0, 0) : y; } catch { return y; } } function v(e) { return h(e >> 16 & 255, e >> 8 & 255, e & 255, 1); } function w(e, s, r, o) { return h(e, s, r, o); } function h(e, s, r, o) { const i = +e / 255, a = +s / 255, d = +r / 255, g = +o, u = Math.min(i, a, d), n = Math.max(i, a, d); let l = 0, t = n - u; const c = (n + u) / 2; return t ? (i === n ? l = (a - d) / t + (a < d ? 1 : 0) * 6 : a === n ? l = (d - i) / t + 2 : l = (i - a) / t + 4, t /= c < 0.5 ? n + u : 2 - n - u, l *= 60) : t = c > 0 && c < 1 ? 0 : l, { h: Math.round(l), s: isNaN(t) ? 0 : t, l: isNaN(c) ? 0 : c, a: g }; } function p(e, s, r, o) { return { h: +e, s: +s, l: +r, a: +o }; } function P(e) { const s = Math.round(Math.max(0, Math.min(360, e.h))).toFixed(0), r = (Math.max(0, Math.min(1, e.s)) * 100).toFixed(0), o = (Math.max(0, Math.min(1, e.l)) * 100).toFixed(0), i = parseFloat(e.a.toFixed(1)); return `hsla(${s}, ${r}%, ${o}%, ${i})`; } export { q as colorToHSLA, P as hslaToString }; //# sourceMappingURL=color-to-hsla.js.map