blob: ae8035007ff7d79b6e7524ba63bcfc74d11ba8e9 (
plain) (
blame)
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
|
export function debounce<T extends (...args: any[]) => any>(func: T, wait: number) {
let timeout: ReturnType<typeof setTimeout>
return function (this: any, ...args: Parameters<T>) {
// eslint-disable-next-line @typescript-eslint/no-this-alias
const context = this
clearTimeout(timeout)
timeout = setTimeout(() => func.apply(context, args), wait)
}
}
export function parentHasClass(element: HTMLElement, className: string) {
while (element) {
if (element.classList && element.classList.contains(className)) {
return true
}
element = element.parentElement
}
return false
}
export function parentPosition(element: HTMLElement) {
const rect = element.getBoundingClientRect()
return { x: rect.left, y: rect.top }
}
|