dk-plus
Version:
110 lines (109 loc) • 4.22 kB
JavaScript
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
};