UNPKG

huexjs

Version:

huexjs is a lightweight and efficient JavaScript library for seamless color conversions. Convert colors between HEX, RGB, HSL, CMYK, and more with ease. Designed for developers who need a reliable and fast solution for color transformations in web applica

97 lines (96 loc) 3.03 kB
function i(e) { let n = e.replace(/^#/, ""); return n.length === 3 && (n = n.split("").map((r) => r + r).join("")), /^([0-9A-F]{6})$/i.test(n) ? { r: parseInt(n.substring(0, 2), 16), g: parseInt(n.substring(2, 4), 16), b: parseInt(n.substring(4, 6), 16) } : null; } function h({ r: e, g: n, b: r }) { return `#${(1 << 24 | e << 16 | n << 8 | r).toString(16).slice(1).toUpperCase()}`; } function M({ r: e, g: n, b: r }) { e /= 255, n /= 255, r /= 255; let t = Math.max(e, n, r), s = Math.min(e, n, r), u = 0, a, o = (t + s) / 2; if (t === s) u = a = 0; else { let l = t - s; switch (a = o > 0.5 ? l / (2 - t - s) : l / (t + s), t) { case e: u = (n - r) / l + (n < r ? 6 : 0); break; case n: u = (r - e) / l + 2; break; case r: u = (e - n) / l + 4; break; } u *= 60; } return { h: Math.round(u), s: Math.round(a * 100), l: Math.round(o * 100) }; } function c({ h: e, s: n, l: r }) { n /= 100, r /= 100; let t = (1 - Math.abs(2 * r - 1)) * n, s = t * (1 - Math.abs(e / 60 % 2 - 1)), u = r - t / 2, a = 0, o = 0, l = 0; return e < 60 ? (a = t, o = s) : e < 120 ? (a = s, o = t) : e < 180 ? (o = t, l = s) : e < 240 ? (o = s, l = t) : e < 300 ? (a = s, l = t) : (a = t, l = s), { r: Math.round((a + u) * 255), g: Math.round((o + u) * 255), b: Math.round((l + u) * 255) }; } function f({ r: e, g: n, b: r }) { let t = 1 - e / 255, s = 1 - n / 255, u = 1 - r / 255, a = Math.min(t, s, u); return a === 1 ? { c: 0, m: 0, y: 0, k: 1 } : { c: Math.round((t - a) / (1 - a) * 100), m: Math.round((s - a) / (1 - a) * 100), y: Math.round((u - a) / (1 - a) * 100), k: Math.round(a * 100) }; } function d({ c: e, m: n, y: r, k: t }) { return { r: Math.round(255 * (1 - e / 100) * (1 - t / 100)), g: Math.round(255 * (1 - n / 100) * (1 - t / 100)), b: Math.round(255 * (1 - r / 100) * (1 - t / 100)) }; } function m({ r: e, g: n, b: r }) { e /= 255, n /= 255, r /= 255; let t = Math.max(e, n, r), s = Math.min(e, n, r), u = 0, a, o = t, l = t - s; if (a = t === 0 ? 0 : l / t, t !== s) { switch (t) { case e: u = (n - r) / l + (n < r ? 6 : 0); break; case n: u = (r - e) / l + 2; break; case r: u = (e - n) / l + 4; break; } u *= 60; } return { h: Math.round(u), s: Math.round(a * 100), v: Math.round(o * 100) }; } function b({ h: e, s: n, v: r }) { n /= 100, r /= 100; let t = r * n, s = t * (1 - Math.abs(e / 60 % 2 - 1)), u = r - t, a = 0, o = 0, l = 0; return e < 60 ? (a = t, o = s) : e < 120 ? (a = s, o = t) : e < 180 ? (o = t, l = s) : e < 240 ? (o = s, l = t) : e < 300 ? (a = s, l = t) : (a = t, l = s), { r: Math.round((a + u) * 255), g: Math.round((o + u) * 255), b: Math.round((l + u) * 255) }; } export { d as cmykToRgb, i as hexToRgb, c as hslToRgb, b as hsvToRgb, f as rgbToCmyk, h as rgbToHex, M as rgbToHsl, m as rgbToHsv };