dev-classes
Version:
<h3 align="center">SocketApi</h3>
174 lines (173 loc) • 7.26 kB
JavaScript
var b = Object.defineProperty;
var x = (p, t, n) => t in p ? b(p, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : p[t] = n;
var c = (p, t, n) => (x(p, typeof t != "symbol" ? t + "" : t, n), n);
const a = class a {
};
/*Проверить свои методы и возможно исключить т.к. функционал возможно повторяется */
c(a, "componentToHex", (t) => {
const n = t.toString(16);
return n.length == 1 ? "0" + n : n;
}), // static getNumberRGB = (getComputedStyleRGB) => {
// const arrSTRNumber = getComputedStyleRGB.match(/\d+/gi);
// if (arrSTRNumber?.length) {
// return arrSTRNumber.map((i) => Number(i));
// }
// return arrSTRNumber ? arrSTRNumber : [255, 255, 255];
// };
c(a, "rgbToHex", (t, n, e) => "#" + a.componentToHex(t) + a.componentToHex(n) + a.componentToHex(e)), /**
* https://stackoverflow.com/a/54070620/6758968
* r, g, b in [0, 255]
* @returns h in [0,360) and s, v in [0,1]
*/
c(a, "rgbToHsv", (t, n, e) => {
t /= 255, n /= 255, e /= 255;
const s = Math.max(t, n, e), r = s - Math.min(t, n, e), i = r && (s === t ? (n - e) / r : s == n ? 2 + (e - t) / r : 4 + (t - n) / r);
return [60 * (i < 0 ? i + 6 : i), s && r / s, s];
}), /**
* https://stackoverflow.com/a/54024653/6758968
* @param h [0, 360]
* @param s [0, 1]
* @param v [0, 1]
* @returns r, g, b in [0, 255]
*/
c(a, "hsvToRgb", (t, n, e) => {
const s = (r, i = (r + t / 60) % 6) => Math.round((e - e * n * Math.max(Math.min(i, 4 - i, 1), 0)) * 255);
return [s(5), s(3), s(1)];
}), /**
* @returns h [0, 360], s [0, 100], l [0, 100], a [0, 1]
*/
c(a, "rgbaToHsla", (t, n, e, s = 1) => {
t /= 255, n /= 255, e /= 255;
const r = Math.max(t, n, e), i = Math.min(t, n, e);
let h = 0, o;
const u = (r + i) / 2;
if (r === i)
h = o = 0;
else {
const g = r - i;
switch (o = u > 0.5 ? g / (2 - r - i) : g / (r + i), r) {
case t:
h = (n - e) / g + (n < e ? 6 : 0);
break;
case n:
h = (e - t) / g + 2;
break;
case e:
h = (t - n) / g + 4;
break;
}
h /= 6;
}
return {
h: h * 360,
s: o * 100,
l: u * 100,
a: s
};
}), // * https://stackoverflow.com/a/9493060/6758968
/**
* Converts an HSL color value to RGB. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
*
* @param {number} h The hue [0, 360]
* @param {number} s The saturation [0, 1]
* @param {number} l The lightness [0, 1]
* @return {Array} The RGB representation [0, 255]
*/
c(a, "hslaToRgba", (t, n, e, s) => {
t /= 360, n /= 100, e /= 100;
let r, i, h;
if (n === 0)
r = i = h = e;
else {
const o = function(T, l, m) {
return m < 0 && (m += 1), m > 1 && (m -= 1), m < 0.16666666666666666 ? T + (l - T) * 6 * m : m < 0.5 ? l : m < 0.6666666666666666 ? T + (l - T) * (0.6666666666666666 - m) * 6 : T;
}, u = e < 0.5 ? e * (1 + n) : e + n - e * n, g = 2 * e - u;
r = o(g, u, t + 1 / 3), i = o(g, u, t), h = o(g, u, t - 1 / 3);
}
return [r, i, h, s].map((o) => Math.round(o * 255));
}), c(a, "hslaStringToRgba", (t) => {
const n = t.slice(5, -1).split(", "), e = Number(n.pop()), s = n.map((r) => r.endsWith("%") ? +r.slice(0, -1) : +r);
return a.hslaToRgba(s[0], s[1], s[2], e);
}), c(a, "hexaToRgba", (t) => {
const n = [], e = t[0] === "#" ? 1 : 0;
if (t.length === 5 + e && (t = (e ? "#" : "") + "0" + t.slice(e)), t.length === 3 + e)
for (let s = e; s < t.length; ++s)
n.push(parseInt(t[s] + t[s], 16));
else if (t.length === 4 + e) {
for (let s = e; s < t.length - 1; ++s)
n.push(parseInt(t[s] + t[s], 16));
n.push(parseInt(t[t.length - 1], 16));
} else
for (let s = e; s < t.length; s += 2)
n.push(parseInt(t.slice(s, s + 2), 16));
return n;
}), c(a, "hexaToHsla", (t) => {
const n = a.hexaToRgba(t);
return a.rgbaToHsla(n[0], n[1], n[2], n[3]);
}), c(a, "hexToRgb", (t) => a.hexaToRgba(t.slice(0, 7))), c(a, "rgbaToHexa", (t) => {
const n = [...t], e = n.pop(), s = Math.round(Math.min(Math.max(e ?? 1, 0), 1) * 255);
return "#" + n.map((r) => ("0" + r.toString(16)).slice(-2)).join("") + s.toString(16);
}), c(a, "hslaStringToHexa", (t) => a.rgbaToHexa(a.hslaStringToRgba(t))), c(a, "hslaStringToHex", (t) => a.hslaStringToHexa(t).slice(0, -2)), /**
* @param weight [0, 1]
*/
c(a, "mixColors", (t, n, e) => {
const s = new Array(3);
for (let r = 0; r < 3; ++r) {
const i = t[r], h = n[r];
s[r] = Math.floor(h + (i - h) * e);
}
return s;
}), c(a, "getRgbByTypeBrightness", (t) => ({
BT601: [0.299, 0.587, 0.114],
BT709: [0.2126, 0.7152, 0.0722],
BT2020: [0.2627, 0.678, 0.0593]
})[t]), c(a, "getAverageColor", (t, n) => t.map((e, s) => Math.round((e + n[s]) / 2))), c(a, "getAccentColor", (t, n, e) => {
const s = a.rgbToHsv(...n), r = a.rgbToHsv(...e), i = Math.min(1.5 * s[1] / t[1], 1);
return s[0] = Math.min(360, r[0] - s[0] + t[0]), s[1] = Math.min(1, r[1] * t[1] / s[1]), s[2] = Math.min(1, (r[2] / s[2] + i - 1) * t[2] / i), s[2] < 0.3 ? e : a.hsvToRgb(...s);
}), c(a, "changeColorAccent", (t, n, e, s) => {
const r = a.rgbToHsv(...e);
if (Math.min(Math.abs(r[0] - t[0]), Math.abs(r[0] - t[0] - 360)) > 30)
return e;
const h = t[1] ? Math.min(1.5 * r[1] / t[1], 1) : 0;
r[0] = Math.min(360, r[0] + n[0] - t[0]), r[1] = t[1] ? Math.min(1, r[1] * n[1] / t[1]) : 0, r[2] = t[2] ? Math.min(1, r[2] * (1 - h + h * n[2] / t[2])) : 0;
let o = a.hsvToRgb(...r);
const u = a.calculateBrightness(e), g = a.calculateBrightness(o);
if (s ? u > g : u < g) {
const l = 0.4 * u / g + 0.6;
o = a.changeBrightness(o, l);
}
return o;
}), c(a, "changeBrightness", (t, n) => t.map((e) => a.clamp(Math.round(e * n), 0, 255))), c(a, "hexBrightness", (t, n) => {
const e = a.hexToRgb(t), s = a.changeBrightness(e, n), [r, i, h] = s;
return a.rgbToHex(r, i, h);
}), c(a, "getHexColorFromTelegramColor", (t) => {
const n = (t < 0 ? 16777215 + t : t).toString(16);
return "#" + (n.length >= 6 ? n : "0".repeat(6 - n.length) + n);
}), c(a, "getRgbColorFromTelegramColor", (t) => a.hexToRgb(a.getHexColorFromTelegramColor(t))), // static getColorsFromWallPaper(wallPaper) {
// return wallPaper.settings
// ? [
// wallPaper.settings.background_color,
// wallPaper.settings.second_background_color,
// wallPaper.settings.third_background_color,
// wallPaper.settings.fourth_background_color,
// ]
// .filter(Boolean)
// .map(Color.getHexColorFromTelegramColor)
// .join(",")
// : "";
// }
c(a, "rgbaToRgb", (t, n) => {
const e = t[3];
return t.slice(0, 3).map((s, r) => a.clamp(Math.round((e * (s / 255) + e * (n[r] / 255)) * 255), 0, 255));
}), c(a, "calculateBrightness", (t, n = "BT709") => {
const [e, s, r] = t, i = a.getRgbByTypeBrightness(n);
return i[0] * e / 255 + i[1] * s / 255 + i[2] * r / 255;
}), c(a, "getTextColor", (t) => t > 0.5 ? [0, 0, 0] : [255, 255, 255]), c(a, "calculateOpacity", (t, n) => {
const e = t > 0.5 ? 0 : 1, s = (t - e + n) / n;
return +Math.max(0.5, Math.min(0.64, s)).toFixed(2);
}), c(a, "clamp", (t, n, e) => Math.min(e, Math.max(n, t)));
let f = a;
export {
f as Color
};