{"version":3,"file":"useIsOverflow.cjs","sources":["../../../../src/internal/hooks/useIsOverflow.ts"],"sourcesContent":["import type {MutableRefObject} from 'react';\nimport {useCallback} from 'react';\nimport {useState, useEffect} from 'react';\nimport {useDebouncedCallback} from 'use-debounce';\n\nimport {useEventListener} from '@/internal/hooks/useEventListener.ts';\n\n/**\n * Utility hook. Tracks provided element overflow state. Subscribes to window resize events.\n */\nexport const useIsOverflow = <TElement extends HTMLElement | null>(\n    ref: MutableRefObject<TElement>\n) => {\n    const [scrollWidth, setScrollWidth] = useState(0);\n    const [scrollHeight, setScrollHeight] = useState(0);\n    const [overflowY, setOverflowY] = useState<boolean | undefined>(undefined);\n    const [overflowX, setOverflowX] = useState<boolean | undefined>(undefined);\n\n    const handleResize = useCallback(() => {\n        const {current} = ref;\n\n        if (current) {\n            const hasOverflowY = scrollHeight > current.offsetHeight;\n            const hasOverflowX = scrollWidth > current.offsetWidth;\n            setOverflowY(hasOverflowY);\n            setOverflowX(hasOverflowX);\n        }\n    }, [ref, scrollHeight, scrollWidth]);\n\n    const handleResizeDebounced = useDebouncedCallback(handleResize, 666, {trailing: true});\n\n    useEventListener('resize', handleResizeDebounced);\n\n    useEffect(() => {\n        const {current} = ref;\n\n        if (current) {\n            setScrollWidth(current.scrollWidth);\n            setScrollHeight(current.scrollHeight);\n            const hasOverflowY = current.scrollHeight > current.offsetHeight;\n            const hasOverflowX = current.scrollWidth > current.offsetWidth;\n\n            setOverflowY(hasOverflowY);\n            setOverflowX(hasOverflowX);\n        }\n    }, [ref]);\n\n    return {overflowY, overflowX};\n};\n"],"names":["useIsOverflow","ref","scrollWidth","setScrollWidth","useState","scrollHeight","setScrollHeight","overflowY","setOverflowY","overflowX","setOverflowX","handleResize","useCallback","current","hasOverflowY","hasOverflowX","handleResizeDebounced","useDebouncedCallback","useEventListener","useEffect"],"mappings":"oLAUaA,EACTC,GACC,CACD,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAS,CAAC,EAC1C,CAACC,EAAcC,CAAe,EAAIF,EAAAA,SAAS,CAAC,EAC5C,CAACG,EAAWC,CAAY,EAAIJ,EAAAA,SAA8B,MAAS,EACnE,CAACK,EAAWC,CAAY,EAAIN,EAAAA,SAA8B,MAAS,EAEnEO,EAAeC,EAAAA,YAAY,IAAM,CACnC,KAAM,CAAC,QAAAC,GAAWZ,EAElB,GAAIY,EAAS,CACT,MAAMC,EAAeT,EAAeQ,EAAQ,aACtCE,EAAeb,EAAcW,EAAQ,YAC3CL,EAAaM,CAAY,EACzBJ,EAAaK,CAAY,CAC7B,CACJ,EAAG,CAACd,EAAKI,EAAcH,CAAW,CAAC,EAE7Bc,EAAwBC,EAAAA,qBAAqBN,EAAc,IAAK,CAAC,SAAU,GAAK,EAEtFO,OAAAA,EAAAA,iBAAiB,SAAUF,CAAqB,EAEhDG,EAAAA,UAAU,IAAM,CACZ,KAAM,CAAC,QAAAN,GAAWZ,EAElB,GAAIY,EAAS,CACTV,EAAeU,EAAQ,WAAW,EAClCP,EAAgBO,EAAQ,YAAY,EACpC,MAAMC,EAAeD,EAAQ,aAAeA,EAAQ,aAC9CE,EAAeF,EAAQ,YAAcA,EAAQ,YAEnDL,EAAaM,CAAY,EACzBJ,EAAaK,CAAY,CAC7B,CACJ,EAAG,CAACd,CAAG,CAAC,EAED,CAAC,UAAAM,EAAW,UAAAE,CAAA,CACvB"}