fullpage-scroll-component
Version:
Stepped Scroll Component Library.
54 lines (49 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var react = require('react');
const useSuccessiveValue = ({
defaultNumber = 0,
maximum
}) => {
const defaultCurrentNumberRef = react.useRef(defaultNumber !== null && defaultNumber !== void 0 ? defaultNumber : 0);
const [current, setCurrent] = react.useState(defaultCurrentNumberRef.current);
const resetCurrent = react.useCallback(() => {
setCurrent(defaultCurrentNumberRef.current);
}, []);
const next = react.useCallback(() => {
if (current >= maximum) {
return current;
}
setCurrent(prev => ++prev);
return current + 1;
}, [current, maximum]);
const prev = react.useCallback(() => {
if (current <= 0) {
return current;
}
setCurrent(prev => --prev);
return current - 1;
}, [current]);
const hasNext = react.useMemo(() => {
return current < maximum;
}, [current, maximum]);
const hasPrev = react.useMemo(() => {
return current > 0;
}, [current]);
const move = react.useCallback(to => {
if (to >= 0 || to <= maximum) {
setCurrent(to);
}
}, [maximum]);
return {
current,
setCurrent,
resetCurrent,
next,
prev,
hasNext,
hasPrev,
move
};
};
exports.useSuccessiveValue = useSuccessiveValue;