UNPKG

@sendbird/uikit-react-native-foundation

Version:

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

100 lines (99 loc) 2.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _reactNative = require("react-native"); var _uikitUtils = require("@sendbird/uikit-utils"); var _icon = _interopRequireDefault(require("../../assets/icon")); var _createStyleSheet = _interopRequireDefault(require("../../styles/createStyleSheet")); var _useUIKitTheme = _interopRequireDefault(require("../../theme/useUIKitTheme")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } 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); } 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 = _reactNative.I18nManager.isRTL ? 'rtl' : 'ltr' }) => { const sizeStyle = sizeStyles[size] ?? { width: size, height: size }; const { colors } = (0, _useUIKitTheme.default)(); const shouldMirror = direction === 'rtl' && mirroredIcons[icon]; return /*#__PURE__*/_react.default.createElement(_reactNative.View, { style: [containerStyle, containerStyles.container] }, /*#__PURE__*/_react.default.createElement(_reactNative.Image, { resizeMode: 'contain', source: _icon.default[icon], style: [{ tintColor: color ?? colors.primary }, sizeStyle, shouldMirror && { transform: [{ scaleX: -1 }] }, style] })); }; const FileIcon = ({ fileType, ...props }) => { return /*#__PURE__*/_react.default.createElement(Icon, _extends({ icon: (0, _uikitUtils.getFileIconFromMessageType)((0, _uikitUtils.convertFileTypeToMessageType)(fileType)) }, props)); }; const containerStyles = _reactNative.StyleSheet.create({ container: { alignItems: 'center', justifyContent: 'center' } }); const sizeStyles = (0, _createStyleSheet.default)({ 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 } }); var _default = exports.default = Object.assign(Icon, { Assets: _icon.default, File: FileIcon }); //# sourceMappingURL=index.js.map