UNPKG

dk-plus

Version:
110 lines (109 loc) 4.22 kB
const u = { white: "#FFFFFF", silver: "#C0C0C0", gray: "#808080", black: "#000000", red: "#FF0000", maroon: "#800000", yellow: "#FFFF00", olive: "#808000", lime: "#00FF00", green: "#008000", aqua: "#00FFFF", teal: "#008080", blue: "#0000FF", navy: "#000080", fuchsia: "#FF00FF", purple: "#800080" }, x = (s) => { const g = /^#([0-9a-f]{3}){1,2}$/i.test(s), l = /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/i.test(s), p = /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(0?\.\d+|1)\)$/i.test(s), a = Object.keys(u).includes(s), b = (n = "") => { let r = n === "" ? s.replace("#", "") : n.replace("#", ""); r.length === 3 && (r = r[0] + r[0] + r[1] + r[1] + r[2] + r[2]); const t = r.match(/../g); for (let e = 0; e < t.length; e++) t[e] = parseInt(t[e], 16).toString(); return t; }, i = (...n) => { const r = [...n]; for (let t = 0; t < r.length; t++) r[t].length === 1 && (r[t] = "0" + r[t]); return "#" + r.join(""); }; return { getDeepen: (n = 0) => { if (g) { const r = b(); for (let t = 0; t < r.length; t++) r[t] = Math.floor(Number(r[t]) * (1 - n)).toString(16); return i(...r); } if (l) { const r = s, t = []; t[0] = r.split("(")[1].split(",")[0], t[1] = r.split("(")[1].split(",")[1], t[2] = r.split("(")[1].split(",")[2].split(")")[0]; for (let e = 0; e < t.length; e++) t[e] = Math.floor(Number(t[e]) * (1 - n)).toString(16); return i(...t); } if (p) { const r = s, t = []; let e = ""; t[0] = r.split("(")[1].split(",")[0], t[1] = r.split("(")[1].split(",")[1], t[2] = r.split("(")[1].split(",")[2][0], e = r.split("(")[1].split(",")[3].split(")")[0], e = Math.round(Number(e) * 255).toString(16).padStart(2, "0"); for (let o = 0; o < t.length; o++) t[o] = Math.floor(Number(t[o]) * (1 - n)).toString(16); return t.push(e), i(...t); } if (a) { const r = u[s], t = b(r); for (let e = 0; e < t.length; e++) t[e] = Math.floor(Number(t[e]) * (1 - n)).toString(16); return i(...t); } if (!g && !l && !p && !a) throw new Error(`dk-plus -> getDeepen -> ${s} is not a color`); return s; }, getDodge: (n = 0) => { if (g) { const r = b(); for (let t = 0; t < r.length; t++) r[t] = Math.floor((255 - Number(r[t])) * n + Number(r[t])).toString(16); return i(...r); } if (l) { const r = s, t = []; t[0] = r.split("(")[1].split(",")[0], t[1] = r.split("(")[1].split(",")[1], t[2] = r.split("(")[1].split(",")[2].split(")")[0]; for (let e = 0; e < t.length; e++) t[e] = Math.floor((255 - Number(t[e])) * n + Number(t[e])).toString(16); return i(...t); } if (p) { const r = s, t = []; let e = ""; t[0] = r.split("(")[1].split(",")[0], t[1] = r.split("(")[1].split(",")[1], t[2] = r.split("(")[1].split(",")[2][0], e = r.split("(")[1].split(",")[3].split(")")[0], e = Math.round(Number(e) * 255).toString(16).padStart(2, "0"); for (let o = 0; o < t.length; o++) t[o] = Math.floor((255 - Number(t[o])) * n + Number(t[o])).toString(16); return t.push(e), i(...t); } if (a) { const r = u[s], t = b(r); for (let e = 0; e < t.length; e++) t[e] = Math.floor((255 - Number(t[e])) * n + Number(t[e])).toString(16); return i(...t); } if (!g && !l && !p && !a) throw new Error(`dk-plus -> getDodge -> ${s} is not a color`); return s; }, hexToRgba: (n) => { const r = s.replace("#", ""), t = parseInt(r.substring(0, 2), 16), e = parseInt(r.substring(2, 4), 16), o = parseInt(r.substring(4, 6), 16); return `rgba(${t}, ${e}, ${o}, ${n})`; }, rgbaToHex: () => { const n = s.replace(/[rgba()]/g, "").split(","), r = parseInt(n[0]), t = parseInt(n[1]), e = parseInt(n[2]), o = r.toString(16).padStart(2, "0"), h = t.toString(16).padStart(2, "0"), c = e.toString(16).padStart(2, "0"); return `#${o}${h}${c}`; } }; }; export { x as getColor };