jobiqo-cl
Version:
[](https://circleci.com/gh/jobiqo/jobiqo-cl)
47 lines (41 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var React = require('react');
var React__default = _interopDefault(React);
const isBrowser = typeof window !== `undefined`;
function getScrollPosition() {
return isBrowser
? { x: window.pageXOffset, y: window.pageYOffset }
: { x: 0, y: 0 };
}
function useScrollPosition() {
const [position, setScrollPosition] = React.useState(getScrollPosition());
React.useEffect(() => {
let requestRunning = null;
function handleScroll() {
if (isBrowser && requestRunning === null) {
requestRunning = window.requestAnimationFrame(() => {
setScrollPosition(getScrollPosition());
requestRunning = null;
});
}
}
if (isBrowser) {
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}
}, []);
return position;
}
function useScrollXPosition() {
const { x } = useScrollPosition();
return x;
}
function useScrollYPosition() {
const { y } = useScrollPosition();
return y;
}
exports.useScrollPosition = useScrollPosition;
exports.useScrollXPosition = useScrollXPosition;
exports.useScrollYPosition = useScrollYPosition;