@roderickhsiao/react-i13n
Version:
[Experiment] React I13n provides a performant and scalable solution to application instrumentation.
27 lines (25 loc) • 726 B
JavaScript
// @TODO, probably make it plugin so we don't need to included in main bundle if not used
import { useCallback } from 'react';
import { useInViewport } from 'react-in-viewport';
var useViewportDetect = (_ref) => {
var {
executeEvent,
node,
ref,
options
} = _ref;
var onEnterViewport = useCallback(() => {
node.setIsInViewport(true);
executeEvent === null || executeEvent === void 0 ? void 0 : executeEvent('enterViewport');
}, [executeEvent, node]);
var onLeaveViewport = useCallback(() => {
node.setIsInViewport(false);
}, [node]);
useInViewport(ref, options, {
disconnectOnLeave: false
}, {
onEnterViewport,
onLeaveViewport
});
};
export default useViewportDetect;