UNPKG

@quidone/react-native-wheel-picker

Version:

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

61 lines 1.71 kB
import React, { memo, useMemo } from 'react'; import { Animated } from 'react-native'; import { useScrollContentOffset } from '../contexts/ScrollContentOffsetContext'; import { usePickerItemHeight } from '../contexts/PickerItemHeightContext'; const PickerItemContainer = _ref => { let { index, item, faces, renderItem, itemTextStyle } = _ref; const offset = useScrollContentOffset(); const height = usePickerItemHeight(); const { opacity, rotateX, translateY } = useMemo(() => { const inputRange = faces.map(f => height * (index + f.index)); return { opacity: offset.interpolate({ inputRange: inputRange, outputRange: faces.map(x => x.opacity), extrapolate: 'clamp' }), rotateX: offset.interpolate({ inputRange: inputRange, outputRange: faces.map(x => `${x.deg}deg`), extrapolate: 'extend' }), translateY: offset.interpolate({ inputRange: inputRange, outputRange: faces.map(x => x.offsetY), extrapolate: 'extend' }) }; }, [faces, height, index, offset]); return /*#__PURE__*/React.createElement(Animated.View, { style: [{ height, opacity, transform: [{ translateY }, // first translateY, then rotateX for correct transformation. { rotateX }, { perspective: 1000 } // without this line this Animation will not render on Android https://reactnative.dev/docs/animations#bear-in-mind ] }] }, renderItem({ item, index, itemTextStyle })); }; export default /*#__PURE__*/memo(PickerItemContainer); //# sourceMappingURL=PickerItemContainer.js.map