@resourge/react-fetch
Version:
[](LICENSE)
55 lines (52 loc) • 1.49 kB
JavaScript
/**
* react-fetch v1.41.3
*
* Copyright (c) resourge.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
import { useRef, useEffect } from 'react';
const getScrollPage = () => {
let docScrollTop = 0;
let docScrollLeft = 0;
if (document.documentElement && document.documentElement !== null) {
docScrollTop = document.documentElement.scrollTop;
docScrollLeft = document.documentElement.scrollLeft;
}
return {
top: window.pageYOffset || docScrollTop,
left: window.pageXOffset || docScrollLeft
};
};
const useOnScroll = scrollMethod => {
const ref = useRef(window);
const onScrollRef = useRef(scrollMethod);
onScrollRef.current = scrollMethod;
const onScroll = event => {
onScrollRef.current({
left: event.currentTarget.scrollLeft,
top: event.currentTarget.scrollTop
});
};
useEffect(() => {
const element = ref.current;
if (element) {
const onScroll = () => {
onScrollRef.current(element instanceof Window ? getScrollPage() : {
top: element.scrollTop,
left: element.scrollLeft
});
};
element.addEventListener('scroll', onScroll, true);
return () => {
element.removeEventListener('scroll', onScroll, true);
};
}
}, [ref.current]);
return [ref, onScroll];
};
export { getScrollPage, useOnScroll };
//# sourceMappingURL=useOnScroll.js.map