-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.ts
47 lines (42 loc) · 1.1 KB
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
export function pickTextColor(
bgColor: string,
lightColor = "#fff",
darkColor = "#000"
) {
let color =
bgColor.charAt(0) === "#"
? bgColor.substring(1, 7)
: bgColor;
if (color.split("").every((c) => c === "f")) {
return darkColor;
}
let r = parseInt(color.substring(0, 2), 16); // hexToR
let g = parseInt(color.substring(2, 4), 16); // hexToG
let b = parseInt(color.substring(4, 6), 16); // hexToB
return r * 0.299 + g * 0.587 + b * 0.114 > 186
? darkColor
: lightColor;
}
export const getTotalOffset = (el: HTMLElement) => {
let a = el,
offsetLeft = 0,
offsetTop = 0;
while (a) {
// while "a" (element or parent element) exists
offsetLeft += a.offsetLeft;
offsetTop += a.offsetTop;
a = a.offsetParent as HTMLElement; // reassign "a" to parent element
}
return { offsetLeft, offsetTop };
};
let counter = 0;
export const gid = () => {
counter += 1;
return `ryfrea--gid-${counter}`;
};
export const spread = (obj?: any) => {
return obj ?? {};
};
export function stripHtml(html: string): string {
return html.replace(/<[^>]*>?/gm, "");
}