@livelike/react-native
Version:
LiveLike React Native package
45 lines • 1.46 kB
JavaScript
import { useCallback, useEffect, useState } from 'react';
/**
* @description useEmojiSlider hook provides state logic and effects for LLEmojiSlider component
*/
export const useEmojiSlider = _ref => {
let {
thumbImages,
onValueChange,
onSlidingComplete,
initialValue,
value
} = _ref;
const [sliderInput, setSliderInput] = useState(value);
const [thumbImg, setThumbImg] = useState('');
const onValueChangeHandler = useCallback(_ref2 => {
let [value] = _ref2;
for (let i = 0; i < thumbImages.length; i++) {
var _thumbImages;
const min = thumbImages[i].min;
const max = ((_thumbImages = thumbImages[i + 1]) === null || _thumbImages === void 0 ? void 0 : _thumbImages.min) ?? 1;
if (value >= min && value <= max && thumbImages[i].imageUrl !== thumbImg) {
setThumbImg(thumbImages[i].imageUrl);
return setSliderInput(value);
}
}
onValueChange === null || onValueChange === void 0 || onValueChange(value);
}, [thumbImages, thumbImg]);
const onSlidingCompleteHandler = useCallback(_ref3 => {
let [value] = _ref3;
setSliderInput(value);
onSlidingComplete(value);
}, []);
useEffect(() => {
if (!thumbImg && initialValue) {
onValueChangeHandler([initialValue]);
}
}, [initialValue, thumbImg]);
return {
sliderInput,
thumbImg,
onSlidingCompleteHandler,
onValueChangeHandler
};
};
//# sourceMappingURL=useEmojiSlider.js.map