UNPKG

@fruits-chain/react-native-xiaoshu

Version:
70 lines (65 loc) • 2.25 kB
import React, { isValidElement } from 'react'; import { View, Text, Image } from 'react-native'; import PlusOutline from '../icon/plus'; import Locale from '../locale'; import Theme from '../theme'; import { varCreator, styleCreator } from './style'; import UploaderImage from './uploader-image'; /** * Uploader 文件上传 */ const Uploader = _ref => { let { list, maxCount = Number.MAX_SAFE_INTEGER, imageComponent = Image, deletable = true, showUpload = true, uploadText, uploadIcon, onPressUpload, imageSize = 80, imageGap, onPressImage, onPressDelete, onPressError } = _ref; const locale = Locale.useLocale().Uploader; const TOKENS = Theme.useThemeTokens(); const CV = Theme.createVar(TOKENS, varCreator); const STYLES = Theme.createStyle(CV, styleCreator); const genOnPressDelete = (item, index) => () => { onPressDelete === null || onPressDelete === void 0 ? void 0 : onPressDelete(item, index, list); }; const genOnPressImage = (item, index) => () => { const onPressCallback = item.status === 'error' ? onPressError : onPressImage; onPressCallback === null || onPressCallback === void 0 ? void 0 : onPressCallback(item, index, list); }; return /*#__PURE__*/React.createElement(View, { style: STYLES.uploader }, list.map((item, index) => { return /*#__PURE__*/React.createElement(UploaderImage, { key: item.key, filepath: item.filepath, status: item.status, imageComponent: imageComponent, deletable: deletable, size: imageSize, gap: imageGap, onPress: genOnPressImage(item, index), onPressDelete: genOnPressDelete(item, index) }); }), showUpload && list.length < maxCount ? /*#__PURE__*/React.createElement(UploaderImage, { isUpload: true, size: imageSize, gap: imageGap, onPress: onPressUpload }, /*#__PURE__*/isValidElement(uploadIcon) ? uploadIcon : /*#__PURE__*/React.createElement(PlusOutline, { color: CV.uploader_upload_text_color, pointerEvents: "none" }), /*#__PURE__*/React.createElement(Text, { style: STYLES.upload_text }, uploadText || locale.uploadText)) : null); }; export default Uploader; //# sourceMappingURL=index.js.map