@sendbird/uikit-react-native-foundation
Version:
A foundational UI kit for building chat-enabled React Native apps.
100 lines (99 loc) • 2.68 kB
JavaScript
;
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