chore: floating link editor [skip e2e]

This commit is contained in:
Aman Harwara
2023-10-24 19:53:06 +05:30
parent 51f0d401b6
commit ccc9d705a5
3 changed files with 306 additions and 38 deletions

View File

@@ -51,3 +51,33 @@ export const useAutoElementRect = (
return rect
}
export const useElementResize = (element: HTMLElement | null | undefined, callback: () => void) => {
useEffect(() => {
let windowResizeDebounceTimeout: number
let windowResizeHandler: () => void
if (element) {
const resizeObserver = new ResizeObserver(() => {
callback()
})
resizeObserver.observe(element)
windowResizeHandler = () => {
window.clearTimeout(windowResizeDebounceTimeout)
window.setTimeout(() => {
callback()
}, DebounceTimeInMs)
}
window.addEventListener('resize', windowResizeHandler)
return () => {
resizeObserver.unobserve(element)
window.removeEventListener('resize', windowResizeHandler)
}
} else {
return
}
}, [element, callback])
}