@sanity/ui
Version:
The Sanity UI components.
20 lines (14 loc) • 480 B
text/typescript
import {useEffect, useState} from 'react'
import {_elementSizeObserver, ElementSize} from '../observers/elementSizeObserver'
/**
* Subscribe to the size of a DOM element.
* @beta
*/
export function useElementSize(element: HTMLElement | null): ElementSize | null {
const [size, setSize] = useState<ElementSize | null>(null)
useEffect(() => {
if (!element) return undefined
return _elementSizeObserver.subscribe(element, setSize)
}, [element])
return size
}