package.react-utils.useIsElementVisibleInDom.useIsElementVisibleInDom.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of neeto-commons-frontend Show documentation
Show all versions of neeto-commons-frontend Show documentation
A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import { useEffect, useState } from "react";
import useForceUpdate from "./useForceUpdate";
var useIsElementVisibleInDom = function useIsElementVisibleInDom(target) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
isIntersecting = _useState2[0],
setIsIntersecting = _useState2[1];
var forceUpdate = useForceUpdate();
useEffect(function () {
if (!target) return forceUpdate();
var observer = new IntersectionObserver(function (_ref) {
var _ref2 = _slicedToArray(_ref, 1),
entry = _ref2[0];
return setIsIntersecting(entry.isIntersecting);
}, options);
observer.observe(target);
return function () {
return observer.unobserve(target);
};
}, [target, options]);
return isIntersecting;
};
export default useIsElementVisibleInDom;
//# sourceMappingURL=useIsElementVisibleInDom.js.map