UNPKG

stream-chat-react-native-core

Version:

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

123 lines 5.35 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.FileAttachment = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _AttachmentFileUploadProgressIndicator = require("./AttachmentFileUploadProgressIndicator"); var _openUrlSafely = require("./utils/openUrlSafely"); var _ComponentsContext = require("../../contexts/componentsContext/ComponentsContext"); var _MessageContext = require("../../contexts/messageContext/MessageContext"); var _MessagesContext = require("../../contexts/messagesContext/MessagesContext"); var _ThemeContext = require("../../contexts/themeContext/ThemeContext"); var _jsxRuntime = require("react/jsx-runtime"); var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Attachment/FileAttachment.tsx"; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var FileAttachmentWithContext = props => { var _attachment$asset_url, _attachment$originalF; var styles = useStyles(); var additionalPressableProps = props.additionalPressableProps, attachment = props.attachment, attachmentIconSize = props.attachmentIconSize, onLongPress = props.onLongPress, onPress = props.onPress, onPressIn = props.onPressIn, preventPress = props.preventPress, _props$styles = props.styles, stylesProp = _props$styles === void 0 ? styles : _props$styles; var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(), FilePreview = _useComponentsContext.FilePreview; var localId = attachment.localId; var defaultOnPress = () => (0, _openUrlSafely.openUrlSafely)(attachment.asset_url); return (0, _jsxRuntime.jsx)(_reactNative.Pressable, { disabled: preventPress, onLongPress: event => { if (onLongPress) { onLongPress({ additionalInfo: { attachment }, emitter: 'fileAttachment', event }); } }, onPress: event => { if (onPress) { onPress({ additionalInfo: { attachment }, defaultHandler: defaultOnPress, emitter: 'fileAttachment', event }); } }, onPressIn: event => { if (onPressIn) { onPressIn({ additionalInfo: { attachment }, defaultHandler: defaultOnPress, emitter: 'fileAttachment', event }); } }, testID: "file-attachment", ...additionalPressableProps, children: (0, _jsxRuntime.jsx)(_reactNative.View, { style: styles.previewWrap, children: (0, _jsxRuntime.jsx)(FilePreview, { attachment: attachment, attachmentIconSize: attachmentIconSize, indicator: (0, _jsxRuntime.jsx)(_AttachmentFileUploadProgressIndicator.AttachmentFileUploadProgressIndicator, { localId: localId, sourceUrl: (_attachment$asset_url = attachment.asset_url) != null ? _attachment$asset_url : (_attachment$originalF = attachment.originalFile) == null ? void 0 : _attachment$originalF.uri, totalBytes: attachment.file_size }), styles: stylesProp }) }) }); }; var FileAttachment = props => { var _useMessageContext = (0, _MessageContext.useMessageContext)(), onLongPress = _useMessageContext.onLongPress, onPress = _useMessageContext.onPress, onPressIn = _useMessageContext.onPressIn, preventPress = _useMessageContext.preventPress; var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(), additionalPressableProps = _useMessagesContext.additionalPressableProps; return (0, _jsxRuntime.jsx)(FileAttachmentWithContext, { additionalPressableProps, onLongPress, onPress, onPressIn, preventPress, ...props }); }; exports.FileAttachment = FileAttachment; FileAttachment.displayName = 'FileAttachment{messageItemView{file}}'; var useStyles = () => { var _useTheme = (0, _ThemeContext.useTheme)(), semantics = _useTheme.theme.semantics; var _useMessageContext2 = (0, _MessageContext.useMessageContext)(), isMyMessage = _useMessageContext2.isMyMessage, messageHasOnlySingleAttachment = _useMessageContext2.messageHasOnlySingleAttachment; var showBackgroundTransparent = messageHasOnlySingleAttachment; return (0, _react.useMemo)(() => { return _reactNative.StyleSheet.create({ container: { backgroundColor: showBackgroundTransparent ? 'transparent' : isMyMessage ? semantics.chatBgAttachmentOutgoing : semantics.chatBgAttachmentIncoming }, previewWrap: { position: 'relative' } }); }, [showBackgroundTransparent, isMyMessage, semantics]); }; //# sourceMappingURL=FileAttachment.js.map