UNPKG

@eslam-elmeniawy/react-native-common-components

Version:

Common `ReactNative` components packed in library for usage in projects.

63 lines (60 loc) 1.63 kB
"use strict"; // External imports. import * as React from 'react'; import { Image, StyleSheet } from 'react-native'; // Types imports. // Internal imports. import styles from "./Button.styles.js"; import ResponsiveDimensions from "../../utils/ResponsiveDimensions.js"; import { jsx as _jsx } from "react/jsx-runtime"; const Icon = /*#__PURE__*/React.memo(props => { const { image, vector, iconName, size, color } = props; const _iconSize = size ?? ResponsiveDimensions.ms(24); const _iconStyle = StyleSheet.flatten([styles.icon, { width: _iconSize, height: _iconSize, tintColor: color }]); if (image) { return /*#__PURE__*/_jsx(Image, { source: image, style: _iconStyle, resizeMode: "contain" }); } if (vector) { try { const VectorImage = require('react-native-vector-image').default; return /*#__PURE__*/_jsx(VectorImage, { source: vector, style: _iconStyle, resizeMode: "contain" }); } catch (error) { console.warn('Error loading `react-native-vector-image`:', error); return null; } } if (iconName) { try { const MaterialDesignIcons = require('@react-native-vector-icons/material-design-icons').MaterialDesignIcons; return /*#__PURE__*/_jsx(MaterialDesignIcons, { name: iconName, color: color, size: _iconSize }); } catch (error) { console.warn('Error loading `@react-native-vector-icons/material-design-icons`:', error); return null; } } return null; }); export default Icon; //# sourceMappingURL=Icon.js.map