UNPKG

@quidone/react-native-wheel-picker

Version:

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

39 lines 2.15 kB
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } import React, { forwardRef, memo, useCallback, useMemo } from 'react'; import debounce from '../debounce'; const withScrollEndEvent = Component => { const Wrapper = (_ref, forwardedRef) => { let { onScrollEnd: onScrollEndProp = () => {}, onScrollEndDrag: onScrollEndDragProp, onMomentumScrollBegin: onMomentumScrollBeginProp, onMomentumScrollEnd: onMomentumScrollEndProp, ...rest } = _ref; const onScrollEnd = useMemo(() => debounce(onScrollEndProp, 0), // This works well with onScrollEndDrag -> onMomentumScrollBegin transitions [onScrollEndProp]); const onScrollEndDrag = useCallback(args => { onScrollEndDragProp === null || onScrollEndDragProp === void 0 ? void 0 : onScrollEndDragProp(args); onScrollEnd(); }, [onScrollEnd, onScrollEndDragProp]); const onMomentumScrollBegin = useCallback(args => { onScrollEnd.clear(); onMomentumScrollBeginProp === null || onMomentumScrollBeginProp === void 0 ? void 0 : onMomentumScrollBeginProp(args); }, [onScrollEnd, onMomentumScrollBeginProp]); const onMomentumScrollEnd = useCallback(args => { onMomentumScrollEndProp === null || onMomentumScrollEndProp === void 0 ? 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