Files
standardnotes-app-web/packages/web/src/javascripts/Hooks/useDocumentRect.ts
2022-07-21 02:20:14 +05:30

26 lines
677 B
TypeScript

import { useEffect, useState } from 'react'
const DebounceTimeInMs = 100
export const useDocumentRect = (): DOMRect => {
const [documentRect, setDocumentRect] = useState<DOMRect>(document.documentElement.getBoundingClientRect())
useEffect(() => {
let debounceTimeout: number
const handleWindowResize = () => {
window.clearTimeout(debounceTimeout)
window.setTimeout(() => {
setDocumentRect(document.documentElement.getBoundingClientRect())
}, DebounceTimeInMs)
}
window.addEventListener('resize', handleWindowResize)
return () => window.removeEventListener('resize', handleWindowResize)
}, [])
return documentRect
}