UNPKG

@kubit-ui-web/react-components

Version:

Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience

37 lines 1.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useScrollDetection = void 0; const react_1 = __importDefault(require("react")); const resizeObserver_1 = require("../../utils/resizeObserver/resizeObserver"); const hasScroll_1 = require("../../utils/scroll/hasScroll"); /** * Custom hook that determines if an element has scroll * * @returns An object containing the `hasScroll` boolean and the `handleScrollDetection` callback function to initialize the hook. */ const useScrollDetection = () => { const [hasScroll, setHasScroll] = react_1.default.useState(false); const resizeObserverRef = react_1.default.useRef(); const handleScrollDetection = react_1.default.useCallback((element) => { if (element) { const handleInnerContentResize = (element) => { const _hasScroll = (0, hasScroll_1.hasScroll)(element); setHasScroll(_hasScroll); }; handleInnerContentResize(element); resizeObserverRef.current = new resizeObserver_1.ResizeObserver(() => { handleInnerContentResize(element); }); resizeObserverRef.current.observe(element); } else { resizeObserverRef.current?.disconnect(); } }, []); return { hasScroll, handleScrollDetection }; }; exports.useScrollDetection = useScrollDetection; //# sourceMappingURL=useScrollDetection.js.map