UNPKG

@quidone/react-native-wheel-picker

Version:

Picker is a UI component for selecting an item from a list of options.

38 lines 2.03 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } import React, { forwardRef, memo, useCallback, useMemo } from 'react'; import debounce from '../debounce'; const withScrollEndEvent = Component => { const Wrapper = ({ onScrollEnd: onScrollEndProp = () => {}, onScrollEndDrag: onScrollEndDragProp, onMomentumScrollBegin: onMomentumScrollBeginProp, onMomentumScrollEnd: onMomentumScrollEndProp, ...rest }, forwardedRef) => { const onScrollEnd = useMemo(() => debounce(onScrollEndProp, 0), // This works well with onScrollEndDrag -> onMomentumScrollBegin transitions [onScrollEndProp]); const onScrollEndDrag = useCallback(args => { onScrollEndDragProp === null || onScrollEndDragProp === void 0 || onScrollEndDragProp(args); onScrollEnd(); }, [onScrollEnd, onScrollEndDragProp]); const onMomentumScrollBegin = useCallback(args => { onScrollEnd.clear(); onMomentumScrollBeginProp === null || onMomentumScrollBeginProp === void 0 || onMomentumScrollBeginProp(args); }, [onScrollEnd, onMomentumScrollBeginProp]); const onMomentumScrollEnd = useCallback(args => { onMomentumScrollEndProp === null || onMomentumScrollEndProp === void 0 || onMomentumScrollEndProp(args); onScrollEnd(); }, [onScrollEnd, onMomentumScrollEndProp]); return /*#__PURE__*/React.createElement(Component, _extends({}, rest, { ref: forwardedRef, onScrollEndDrag: onScrollEndDrag, onMomentumScrollBegin: onMomentumScrollBegin, onMomentumScrollEnd: onMomentumScrollEnd })); }; Wrapper.displayName = `withScrollEndEvent(${Component.displayName || 'Component'})`; return /*#__PURE__*/memo(/*#__PURE__*/forwardRef(Wrapper)); }; export default withScrollEndEvent; //# sourceMappingURL=withScrollEndEvent.js.map