@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
JavaScript
;
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