UNPKG

react-use-scroll-position

Version:
38 lines (37 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var isBrowser = typeof window !== "undefined"; function getScrollPosition() { return isBrowser ? { x: window.pageXOffset, y: window.pageYOffset } : { x: 0, y: 0 }; } function useScrollPosition() { var _a = react_1.useState(getScrollPosition()), position = _a[0], setScrollPosition = _a[1]; react_1.useEffect(function () { var requestRunning = null; function handleScroll() { if (isBrowser && requestRunning === null) { requestRunning = window.requestAnimationFrame(function () { setScrollPosition(getScrollPosition()); requestRunning = null; }); } } if (isBrowser) { window.addEventListener('scroll', handleScroll); return function () { return window.removeEventListener('scroll', handleScroll); }; } }, []); return position; } exports.useScrollPosition = useScrollPosition; function useScrollXPosition() { var x = useScrollPosition().x; return x; } exports.useScrollXPosition = useScrollXPosition; function useScrollYPosition() { var y = useScrollPosition().y; return y; } exports.useScrollYPosition = useScrollYPosition;