@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
70 lines (65 loc) • 2.25 kB
JavaScript
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