Files
standardnotes-app-web/packages/web/src/javascripts/Hooks/useDocumentRect.ts

31 lines
827 B
TypeScript

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