@heycar-uikit/core
Version:
The React UI library from HeyCar
32 lines (29 loc) • 1.2 kB
JavaScript
import { useState, useMemo, useEffect, useCallback } from 'react';
var useReviewRating = function () {
var _a = useState(false), hasIntersectionObserver = _a[0], setHasIntersectionObserver = _a[1];
var _b = useState(false), isVisible = _b[0], setIsVisible = _b[1];
var observer = useMemo(function () {
if (hasIntersectionObserver) {
return new IntersectionObserver(function (entries) {
return setIsVisible(entries[0].isIntersecting);
}, {
threshold: 1.0,
});
}
return undefined;
}, [hasIntersectionObserver]);
var setIntersectionObserver = function (targetId) {
var target = document.querySelector("#" + targetId);
if (target && (observer === null || observer === void 0 ? void 0 : observer.observe))
observer.observe(target);
};
useEffect(function () {
var hasIntObs = !!window && 'IntersectionObserver' in window;
setHasIntersectionObserver(hasIntObs);
}, []);
return {
isVisible: isVisible,
setIntersectionObserver: useCallback(setIntersectionObserver, [observer]),
};
};
export { useReviewRating };