Files
medusa-store/packages/admin-ui/ui/src/hooks/use-observe-width.ts
2023-03-03 10:09:16 +01:00

31 lines
713 B
TypeScript

import { MutableRefObject, useEffect, useRef, useState } from "react"
export const useObserveWidth = (ref: MutableRefObject<any>): number => {
const [currentWidth, setCurrentWidth] = useState(0)
const observer = useRef(
new ResizeObserver((entries) => {
const { width } = entries[0].contentRect
setCurrentWidth(width)
})
)
useEffect(() => {
const currentRef = ref.current
const currentObserver = observer.current
if (currentRef && currentObserver) {
currentObserver.observe(currentRef)
}
return () => {
if (currentObserver && currentRef) {
currentObserver.unobserve(currentRef)
}
}
}, [ref, observer])
return currentWidth
}