@eslam-elmeniawy/react-native-common-components
Version:
Common `ReactNative` components packed in library for usage in projects.
66 lines (63 loc) • 1.63 kB
JavaScript
;
// 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