stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
72 lines • 3.05 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FileAttachmentGroup = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _ComponentsContext = require("../../contexts/componentsContext/ComponentsContext");
var _MessageContext = require("../../contexts/messageContext/MessageContext");
var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
var _theme = require("../../theme");
var _jsxRuntime = require("react/jsx-runtime");
var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Attachment/FileAttachmentGroup.tsx";
var FileAttachmentGroupWithContext = props => {
var files = props.files,
_props$styles = props.styles,
stylesProp = _props$styles === void 0 ? {} : _props$styles;
var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(),
Attachment = _useComponentsContext.Attachment;
var _useTheme = (0, _ThemeContext.useTheme)(),
_useTheme$theme$messa = _useTheme.theme.messageItemView.fileAttachmentGroup,
attachmentContainer = _useTheme$theme$messa.attachmentContainer,
container = _useTheme$theme$messa.container;
return (0, _jsxRuntime.jsx)(_reactNative.View, {
style: [styles.container, {}, container, stylesProp.container],
children: files.map((file, index) => (0, _jsxRuntime.jsx)(_reactNative.View, {
style: [styles.item, stylesProp.attachmentContainer, attachmentContainer],
children: (0, _jsxRuntime.jsx)(Attachment, {
attachment: file
})
}, `file-by-attachment-group-${index}`))
});
};
var areEqual = (prevProps, nextProps) => {
var prevFiles = prevProps.files,
prevMessage = prevProps.message;
var nextFiles = nextProps.files,
nextMessage = nextProps.message;
var messageEqual = (prevMessage == null ? void 0 : prevMessage.id) === (nextMessage == null ? void 0 : nextMessage.id);
if (!messageEqual) {
return false;
}
return prevFiles.length === nextFiles.length;
};
var MemoizedFileAttachmentGroup = _react.default.memo(FileAttachmentGroupWithContext, areEqual);
var FileAttachmentGroup = props => {
var propFiles = props.files;
var _useMessageContext = (0, _MessageContext.useMessageContext)(),
contextFiles = _useMessageContext.files,
message = _useMessageContext.message;
var files = propFiles || contextFiles;
if (!files.length) {
return null;
}
return (0, _jsxRuntime.jsx)(MemoizedFileAttachmentGroup, {
files,
message
});
};
exports.FileAttachmentGroup = FileAttachmentGroup;
var styles = _reactNative.StyleSheet.create({
container: {
alignItems: 'center',
gap: _theme.primitives.spacingXs
},
item: {
borderRadius: _theme.primitives.radiusLg,
overflow: 'hidden'
}
});
FileAttachmentGroup.displayName = 'FileAttachmentGroup{messageItemView{fileAttachmentGroup}}';
//# sourceMappingURL=FileAttachmentGroup.js.map