UNPKG

jobiqo-cl

Version:

[![CircleCI](https://circleci.com/gh/jobiqo/jobiqo-cl.svg?style=svg&circle-token=5a24efa5b8bbc4879276123e77d0d3f35ca7144c)](https://circleci.com/gh/jobiqo/jobiqo-cl)

47 lines (41 loc) 1.5 kB
'use strict'; 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;