ghp / packages /client /src /hooks /useContainerPortrait.ts
QSLY's picture
deploy: build Hugging Face Space from source
00a912e
Raw
History Blame Contribute Delete
700 Bytes
import { useCallback, useRef, useState } from 'react'
export function useContainerPortrait() {
const [isPortrait, setIsPortrait] = useState(false)
const observerRef = useRef<ResizeObserver | null>(null)
const ref = useCallback((node: HTMLDivElement | null) => {
observerRef.current?.disconnect()
observerRef.current = null
if (node) {
const rect = node.getBoundingClientRect()
setIsPortrait(rect.height > rect.width)
const ro = new ResizeObserver(([entry]) => {
const { width, height } = entry.contentRect
setIsPortrait(height > width)
})
ro.observe(node)
observerRef.current = ro
}
}, [])
return { ref, isPortrait }
}