UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

72 lines 2.98 kB
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?.id === 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