import { useState } from 'react' import { useIsomorphicLayoutEffect } from '@toptal/picasso-shared' export interface ReferenceObject { offsetParent?: Element getBoundingClientRect: () => ClientRect } const useWidthOf = (element: T | null) => { const [menuWidth, setMenuWidth] = useState() const offsetParent = element?.offsetParent useIsomorphicLayoutEffect(() => { if (!element) { return } const { width } = element.getBoundingClientRect() setMenuWidth(`${width}px`) }, [element, offsetParent]) return menuWidth } export default useWidthOf