UNPKG

react-slide-fade-in

Version:
29 lines (28 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useIsVisible = void 0; var react_1 = require("react"); function useIsVisible(_a) { var _b = _a.offset, offset = _b === void 0 ? 0 : _b, _c = _a.persistent, persistent = _c === void 0 ? true : _c, _d = _a.minVisibleHeight, minVisibleHeight = _d === void 0 ? 0 : _d; var _e = (0, react_1.useState)(false), isVisible = _e[0], setIsVisible = _e[1]; var currentElement = (0, react_1.useRef)(null); var checkVisibility = function () { if (!currentElement.current) { return; } var top = currentElement.current.getBoundingClientRect().top; if (top + offset >= 0 && top + minVisibleHeight - offset <= window.innerHeight) { setIsVisible(true); } else if (!persistent) { setIsVisible(false); } }; (0, react_1.useEffect)(function () { checkVisibility(); document.addEventListener('scroll', checkVisibility, true); return function () { return document.removeEventListener('scroll', checkVisibility, true); }; }); return [isVisible, currentElement]; } exports.useIsVisible = useIsVisible;