UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

19 lines (18 loc) 720 B
import * as React from 'react'; import { useMergedRefs } from './useMergedRefs.js'; import { useResizeObserver } from './useResizeObserver.js'; export const useContainerWidth = (watchResizes = true) => { let [contentWidth, setContentWidth] = React.useState(0); let ref = React.useCallback((element) => { if (!element) return; setContentWidth(element.getBoundingClientRect().width); }, []); let updateWidth = React.useCallback( ({ width }) => setContentWidth(width), [], ); let [resizeRef, resizeObserver] = useResizeObserver(updateWidth); if (!watchResizes) resizeObserver?.disconnect(); let refs = useMergedRefs(ref, watchResizes ? resizeRef : void 0); return [refs, contentWidth]; };