organism-react-scroll-animate
Version:
40 lines (38 loc) • 1.16 kB
JavaScript
;
var _interopRequireDefault = require("reshow-runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _react = require("react");
var _reshowBuild = _interopRequireDefault(require("reshow-build"));
var _winDoc = require("win-doc");
//@ts-check
/**
* @param {React.ReactElement|string} component
* @param {IntersectionObserverCallback} onIntersect
* @param {object} options
* @returns {React.ReactElement}
*/
var useIntersectionObserver = function useIntersectionObserver(component, onIntersect, options) {
if (options === void 0) {
options = {};
}
var lastEl = (0, _react.useRef)();
var el = (0, _reshowBuild["default"])(component)({
ref: lastEl
});
(0, _react.useEffect)(function () {
var dom = lastEl.current;
if (!dom) {
return;
}
var observer = new ((0, _winDoc.win)().IntersectionObserver)(onIntersect, options);
observer.observe(dom);
return function () {
observer.unobserve(dom);
};
}, [lastEl.current]);
return el;
};
var _default = useIntersectionObserver;
exports["default"] = _default;
module.exports = exports.default;