UNPKG

@quidone/react-native-wheel-picker

Version:

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

60 lines (59 loc) 2.06 kB
"use strict"; import React, { forwardRef, memo } from 'react'; import { useStableCallback } from '@rozhkov/react-useful-hooks'; import { usePickerControlSubscriber } from './usePickerControlSubscriber'; import { useValueIndex } from '../base'; import { jsx as _jsx } from "react/jsx-runtime"; export const withPickerControl = PickerComponent => { const WrappedPicker = ({ pickerName, control, data, value, // extraValues TODO pass to props onValueChanging: onValueChangingProp, onValueChanged: onValueChangedProp, _onScrollStart: onScrollStartProp, _onScrollEnd: onScrollEndProp, ...restProps }, forwardedRef) => { const valueIndex = useValueIndex(data, value); const currentItem = data[valueIndex]; const subscriber = usePickerControlSubscriber({ control, pickerName, currentItem }); const onValueChangingStable = useStableCallback(event => { subscriber.emitOnValueChanging(event); onValueChangingProp?.(event); }); const onValueChangedStable = useStableCallback(event => { subscriber.emitOnValueChanged(event); onValueChangedProp?.(event); }); const onScrollStartStable = useStableCallback(() => { subscriber.onScrollStart(); onScrollStartProp?.(); }); const onScrollEndStable = useStableCallback(() => { subscriber.onScrollEnd(); onScrollEndProp?.(); }); return /*#__PURE__*/_jsx(PickerComponent, { ...restProps, ref: forwardedRef, data: data, value: value, extraValues: subscriber.extraValues, onValueChanging: onValueChangingStable, onValueChanged: onValueChangedStable, _enableSyncScrollAfterScrollEnd: subscriber.enableSyncScrollAfterScrollEnd, _onScrollStart: onScrollStartStable, _onScrollEnd: onScrollEndStable }); }; WrappedPicker.displayName = `withPickerControl(${PickerComponent.displayName})`; return /*#__PURE__*/memo(/*#__PURE__*/forwardRef(WrappedPicker)); }; //# sourceMappingURL=withPickerControl.js.map