import React from 'react'; import isString from 'lodash-es/isString'; import { View, Image, Text } from 'react-native'; import { useThemeFactory } from '../Theme'; import { renderError, renderSearch, renderNetwork, renderMaterial } from './Images'; import type { EmptyProps } from './type'; import { createStyle } from './style'; const PRESET_IMAGES: Record JSX.Element> = { error: renderError, search: renderSearch, network: renderNetwork, default: renderMaterial, }; const Empty = (props: EmptyProps): JSX.Element => { const { image = 'default', imageSize, description, style, children, ...rest } = props; const { styles, theme } = useThemeFactory(createStyle); const size = imageSize ?? theme.empty_image_size; const imageStyle = { width: size, height: size }; const renderImage = () => { if (isString(image) && PRESET_IMAGES[image]) { return PRESET_IMAGES[image](); } if (React.isValidElement(image)) { return image; } if (isString(image)) { return ; } return null; }; const renderDescription = () => { if (description) { return {description}; } return null; }; const renderBottom = () => { if (children) { return {children}; } return null; }; return ( {renderImage()} {renderDescription()} {renderBottom()} ); }; export default Empty;