@ant-design/react-native
Version:
基于蚂蚁金服移动设计规范的 React Native 组件库
1 lines • 5.66 kB
JavaScript
"use strict";"use client";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _typeof=require("@babel/runtime/helpers/typeof");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _withDefaultProps=require("../_util/with-default-props");var _HapticsContext=_interopRequireDefault(require("../provider/HapticsContext"));var _style=require("../style");var _Wheel=_interopRequireDefault(require("./Wheel"));var _index=_interopRequireDefault(require("./style/index"));function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var defaultProps={value:[],numberOfLines:1,renderMaskTop:function renderMaskTop(theme){return _react.default.createElement(_reactNative.View,{style:{flex:1,opacity:0.8,backgroundColor:theme.fill_base}});},renderMaskBottom:function renderMaskBottom(theme){return _react.default.createElement(_reactNative.View,{style:{flex:1,opacity:0.8,backgroundColor:theme.fill_base}});}};var RMCPickerView=function RMCPickerView(props){var _a,_b,_c;var p=(0,_withDefaultProps.mergeProps)(defaultProps,props);var _useState=(0,_react.useState)(0),_useState2=(0,_slicedToArray2.default)(_useState,2),wheelHeight=_useState2[0],setWheelHeight=_useState2[1];var _useState3=(0,_react.useState)(),_useState4=(0,_slicedToArray2.default)(_useState3,2),stateItemHeight=_useState4[0],setItemHeight=_useState4[1];var itemHeight=p.itemHeight||stateItemHeight;var wrapperMeasure=function wrapperMeasure(e){var height=e.nativeEvent.layout.height;setWheelHeight(height);};var itemHeightMeasure=function itemHeightMeasure(e){var height=e.nativeEvent.layout.height;setItemHeight(height);};var ss=(0,_style.useTheme)({styles:p.styles,themeStyles:_index.default});var theme=(0,_react.useContext)(_style.ThemeContext);var _renderLabel=(0,_react.useCallback)(function(item,itemIndex,colIndex){var _a,_b;return _react.default.createElement(_reactNative.View,{key:item.key||item.value,style:[ss.itemWrap,itemHeight===undefined?{}:{height:itemHeight}]},((_a=p.renderLabel)===null||_a===void 0?void 0:_a.call(p,item,itemIndex,colIndex))||_react.default.createElement(_reactNative.Text,{style:[ss.itemStyle,p.itemStyle,item.value===((_b=p.value[colIndex])!==null&&_b!==void 0?_b:itemIndex===0&&item.value)&&ss.itemActiveStyle,{height:'auto'}],numberOfLines:p.numberOfLines},item.label));},[itemHeight,p,ss.itemActiveStyle,ss.itemStyle,ss.itemWrap]);var onHaptics=(0,_react.useContext)(_HapticsContext.default);var handleSelect=(0,_react.useCallback)(function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}p.handleSelect.apply(undefined,args);onHaptics===null||onHaptics===void 0?void 0:onHaptics('picker');},[onHaptics,p.handleSelect]);if(itemHeight===undefined){return _react.default.createElement(_reactNative.View,{onLayout:itemHeightMeasure},_renderLabel({value:'layout',label:_react.default.createElement(_react.default.Fragment,null,Array(p.numberOfLines).join('\n'),"\u3000")},0,0));}return _react.default.createElement(_reactNative.View,{style:[itemHeight===undefined?{}:{height:7*itemHeight},ss.wrappper,p.style],onLayout:wrapperMeasure},_react.default.createElement(_reactNative.View,{style:[ss.wheelWrapper,{height:wheelHeight}]},(p.loading||((_a=p.columns)===null||_a===void 0?void 0:_a.length)===0)&&p.loading!==false?p.loadingContent||_react.default.createElement(_reactNative.View,{style:{flex:1,alignSelf:'center'}},_react.default.createElement(_reactNative.ActivityIndicator,{animating:true,style:p.indicatorStyle||{}})):itemHeight>0&&wheelHeight>0&&p.columns.map(function(column,colIndex){var _a;return _react.default.createElement(_Wheel.default,{key:colIndex,index:colIndex,column:column,value:(_a=p.value)===null||_a===void 0?void 0:_a[colIndex],onSelect:handleSelect,itemHeight:itemHeight,wheelHeight:wheelHeight,renderLabel:function renderLabel(item,itemIndex){return _renderLabel(item,itemIndex,colIndex);}});})),_react.default.createElement(_reactNative.View,{style:ss.mask,pointerEvents:"none"},_react.default.createElement(_reactNative.View,{style:ss.maskTop},(_b=p.renderMaskTop)===null||_b===void 0?void 0:_b.call(p,theme)),_react.default.createElement(_reactNative.View,{style:[ss.maskMiddle,{height:itemHeight||0}]}),_react.default.createElement(_reactNative.View,{style:ss.maskBottom},(_c=p.renderMaskBottom)===null||_c===void 0?void 0:_c.call(p,theme))));};RMCPickerView.displayName='RMCPickerView';var _default=_react.default.memo(RMCPickerView);exports.default=_default;