UNPKG

@sendbird/uikit-react-native-foundation

Version:

A foundational UI kit for building chat-enabled React Native apps.

93 lines 2.29 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } import React from 'react'; import { I18nManager, Image, StyleSheet, View } from 'react-native'; import { convertFileTypeToMessageType, getFileIconFromMessageType } from '@sendbird/uikit-utils'; import IconAssets from '../../assets/icon'; import createStyleSheet from '../../styles/createStyleSheet'; import useUIKitTheme from '../../theme/useUIKitTheme'; const mirroredIcons = { create: true, send: true, reply: true, 'reply-filled': true, thread: true, chat: true, 'chat-filled': true, message: true, broadcast: true, 'file-audio': true, 'arrow-left': true, leave: true, 'chevron-right': true }; const Icon = ({ icon, color, size = 24, containerStyle, style, direction = I18nManager.isRTL ? 'rtl' : 'ltr' }) => { const sizeStyle = sizeStyles[size] ?? { width: size, height: size }; const { colors } = useUIKitTheme(); const shouldMirror = direction === 'rtl' && mirroredIcons[icon]; return /*#__PURE__*/React.createElement(View, { style: [containerStyle, containerStyles.container] }, /*#__PURE__*/React.createElement(Image, { resizeMode: 'contain', source: IconAssets[icon], style: [{ tintColor: color ?? colors.primary }, sizeStyle, shouldMirror && { transform: [{ scaleX: -1 }] }, style] })); }; const FileIcon = ({ fileType, ...props }) => { return /*#__PURE__*/React.createElement(Icon, _extends({ icon: getFileIconFromMessageType(convertFileTypeToMessageType(fileType)) }, props)); }; const containerStyles = StyleSheet.create({ container: { alignItems: 'center', justifyContent: 'center' } }); const sizeStyles = createStyleSheet({ 16: { width: 16, height: 16 }, 20: { width: 20, height: 20 }, 24: { width: 24, height: 24 }, 28: { width: 28, height: 28 }, 32: { width: 32, height: 32 } }); export default Object.assign(Icon, { Assets: IconAssets, File: FileIcon }); //# sourceMappingURL=index.js.map