UNPKG

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

Version:

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

66 lines (63 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 "./IconButton.styles.js"; import { ResponsiveDimensions } from "../../utils/index.js"; import { jsx as _jsx } from "react/jsx-runtime"; let VectorImage = null; try { VectorImage = require('react-native-vector-image').default; } catch (_error) { VectorImage = null; } let MaterialDesignIcons = null; try { MaterialDesignIcons = require('@react-native-vector-icons/material-design-icons').MaterialDesignIcons; } catch (_error) { MaterialDesignIcons = null; } const Icon = /*#__PURE__*/React.memo(props => { const { image, vector, iconName, size, color, iconPercent, noIconTint } = props; const _iconPercent = iconPercent ?? 60; const _iconSize = (size ?? ResponsiveDimensions.ms(size ?? 36)) * _iconPercent / 100; const _iconStyle = StyleSheet.flatten([styles.icon, { width: _iconSize, height: _iconSize, tintColor: noIconTint ? undefined : color }]); if (image) { return /*#__PURE__*/_jsx(Image, { source: image, style: _iconStyle, resizeMode: "contain" }); } if (vector && VectorImage) { return /*#__PURE__*/_jsx(VectorImage, { source: vector, style: _iconStyle, resizeMode: "contain" }); } if (iconName && MaterialDesignIcons) { return /*#__PURE__*/_jsx(MaterialDesignIcons, { name: iconName, color: color, size: _iconSize }); } return null; }); export default Icon; //# sourceMappingURL=Icon.js.map