{"version":3,"file":"use-resize-observer.cjs","names":[],"sources":["../../src/hooks/use-resize-observer.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { RefObject } from \"react\";\n\nexport interface ElementSize {\n    width: number;\n    height: number;\n}\n\n/**\n * Track size changes of a DOM element via `ResizeObserver`.\n * Returns `null` until the first measurement.\n */\nexport function useResizeObserver(ref: RefObject<Element | null>): ElementSize | null {\n    const [size, setSize] = useState<ElementSize | null>(null);\n\n    useEffect(() => {\n        const target = ref.current;\n        if (!target || typeof ResizeObserver === \"undefined\") return;\n\n        const observer = new ResizeObserver((entries) => {\n            const entry = entries[0];\n            if (!entry) return;\n            const box = entry.contentRect;\n            setSize({ width: box.width, height: box.height });\n        });\n\n        observer.observe(target);\n        return () => observer.disconnect();\n    }, [ref]);\n\n    return size;\n}\n"],"mappings":"uBAYA,SAAgB,EAAkB,EAAoD,CAClF,GAAM,CAAC,EAAM,IAAA,EAAW,EAAA,SAAA,CAA6B,IAAI,EAiBzD,OAfA,EAAA,EAAA,UAAA,KAAgB,CACZ,IAAM,EAAS,EAAI,QACnB,GAAI,CAAC,GAAU,OAAO,eAAmB,IAAa,OAEtD,IAAM,EAAW,IAAI,eAAgB,GAAY,CAC7C,IAAM,EAAQ,EAAQ,GACtB,GAAI,CAAC,EAAO,OACZ,IAAM,EAAM,EAAM,YAClB,EAAQ,CAAE,MAAO,EAAI,MAAO,OAAQ,EAAI,MAAO,CAAC,CACpD,CAAC,EAGD,OADA,EAAS,QAAQ,CAAM,MACV,EAAS,WAAW,CACrC,EAAG,CAAC,CAAG,CAAC,EAED,CACX"}